From b371e3e256dd693fa5588bc2dbe778c0b438de3c Mon Sep 17 00:00:00 2001 From: Andrea <80176994+agilot@users.noreply.github.com> Date: Thu, 18 Apr 2024 22:42:22 +0200 Subject: [PATCH] Type checking and ADTs (#219) Implements basis of a type system with type checking, ADTs. induction and more. Co-authored-by: SimonGuilloud <sim-guilloud@bluewin.ch> Co-authored-by: Simon Guilloud <simon.guilloud@bluewin.ch> Co-authored-by: Sankalp Gambhir <sankalp.gambhir42@gmail.com> --- .gitignore | 2 + CHANGES.md | 4 + build.sbt | 5 +- lisa-examples/src/main/scala/ADTExample.scala | 125 ++ lisa-sets/src/main/scala/lisa/Main.scala | 3 + .../main/scala/lisa/automation/Apply.scala | 262 +-- .../scala/lisa/automation/CommonTactics.scala | 2 +- .../scala/lisa/automation/atp/Goeland.scala | 18 +- .../maths/settheory/types/TypeSystem.scala | 535 +++++ .../maths/settheory/types/adt/Frontend.scala | 566 ++++++ .../maths/settheory/types/adt/Functions.scala | 134 ++ .../maths/settheory/types/adt/Helpers.scala | 1030 ++++++++++ .../maths/settheory/types/adt/Tactics.scala | 174 ++ .../maths/settheory/types/adt/Typed.scala | 285 +++ .../maths/settheory/types/adt/Untyped.scala | 1752 +++++++++++++++++ .../maths/settheory/types/adt/package.scala | 200 ++ .../src/main/scala/lisa/fol/Common.scala | 145 +- .../src/main/scala/lisa/fol/FOLHelpers.scala | 2 + .../src/main/scala/lisa/fol/Lambdas.scala | 2 +- .../src/main/scala/lisa/fol/Sequents.scala | 8 +- .../main/scala/lisa/prooflib/BasicMain.scala | 1 + .../scala/lisa/prooflib/BasicStepTactic.scala | 7 +- .../main/scala/lisa/prooflib/Library.scala | 5 + .../scala/lisa/prooflib/ProofsHelpers.scala | 34 +- .../lisa/prooflib/SimpleDeducedSteps.scala | 28 +- .../scala/lisa/prooflib/WithTheorems.scala | 3 +- .../main/scala/lisa/utils/KernelHelpers.scala | 2 +- .../lisa/utils/memoization/Memoized.scala | 37 + .../lisa/kernel/TheoriesHelpersTest.scala | 3 +- refman/lisa.pdf | Bin 248723 -> 251598 bytes 30 files changed, 5199 insertions(+), 175 deletions(-) create mode 100644 lisa-examples/src/main/scala/ADTExample.scala create mode 100644 lisa-sets/src/main/scala/lisa/maths/settheory/types/TypeSystem.scala create mode 100644 lisa-sets/src/main/scala/lisa/maths/settheory/types/adt/Frontend.scala create mode 100644 lisa-sets/src/main/scala/lisa/maths/settheory/types/adt/Functions.scala create mode 100644 lisa-sets/src/main/scala/lisa/maths/settheory/types/adt/Helpers.scala create mode 100644 lisa-sets/src/main/scala/lisa/maths/settheory/types/adt/Tactics.scala create mode 100644 lisa-sets/src/main/scala/lisa/maths/settheory/types/adt/Typed.scala create mode 100644 lisa-sets/src/main/scala/lisa/maths/settheory/types/adt/Untyped.scala create mode 100644 lisa-sets/src/main/scala/lisa/maths/settheory/types/adt/package.scala create mode 100644 lisa-utils/src/main/scala/lisa/utils/memoization/Memoized.scala diff --git a/.gitignore b/.gitignore index b05d0969..aaadedc9 100644 --- a/.gitignore +++ b/.gitignore @@ -3,6 +3,8 @@ .metals .vscode project/metals.sbt +project/project/metals.sbt +sbt-launch.jar # build-related .bsp diff --git a/CHANGES.md b/CHANGES.md index c8dd41a3..9e00084a 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -1,5 +1,9 @@ # Change List +## 2024-04-12 +Addition of simply typed lambda calculus with top level polymorphism and inductive poylmorphic algebraic data types. +Addition of tactics for typechecking and structural induction over ADTs. + ## 2024-03-02 Support for reconstructing proofs from file in SC-TPTP format. Support and inclusion of Goeland as a tactic. Doc in the manual. diff --git a/build.sbt b/build.sbt index 1e584110..bc9c0c1b 100644 --- a/build.sbt +++ b/build.sbt @@ -20,7 +20,7 @@ ThisBuild / scalafixDependencies += "com.github.liancheng" %% "organize-imports" val commonSettings = Seq( - crossScalaVersions := Seq("2.12.13", "2.13.4", "3.0.1", "3.2.0"), + crossScalaVersions := Seq("3.3.1"), run / fork := true ) @@ -40,10 +40,11 @@ val commonSettings3 = commonSettings ++ Seq( // "-source:future", re-enable when liancheng/scalafix-organize-imports#221 is fixed ), + javaOptions += "-Xmx10G", libraryDependencies += "org.scalatest" %% "scalatest" % "3.2.10" % "test", libraryDependencies += "com.lihaoyi" %% "sourcecode" % "0.3.0", //libraryDependencies += "org.scala-lang.modules" %% "scala-parser-combinators" % "2.1.1", - libraryDependencies += ("io.github.uuverifiers" %% "princess" % "2023-06-19").cross(CrossVersion.for3Use2_13), + // libraryDependencies += ("io.github.uuverifiers" %% "princess" % "2023-06-19").cross(CrossVersion.for3Use2_13), Test / parallelExecution := false ) diff --git a/lisa-examples/src/main/scala/ADTExample.scala b/lisa-examples/src/main/scala/ADTExample.scala new file mode 100644 index 00000000..8314d18c --- /dev/null +++ b/lisa-examples/src/main/scala/ADTExample.scala @@ -0,0 +1,125 @@ +object ADTExample extends lisa.Main { + import lisa.maths.settheory.types.adt.{*, given} + + // variable declarations + val A = variable + + val n = variable + val l = variable + val x = variable + val y = variable + + val x0 = variable + val x1 = variable + val y0 = variable + val y1 = variable + + // *********************** + // * 1 : Examples of ADT * + // *********************** + + // Boolean + val define(bool: ADT[0], constructors(tru, fals)) = () | () + + // Nat + val define(nat: ADT[0], constructors(zero, succ)) = () | nat + + // Option + val define(option: ADT[1], constructors(none, some)) = A --> () | A + + // List + val define(list: ADT[1], constructors(nil, cons)) = A --> () | (A, list) + + // Nothing + val define(nothing, constructors()) = | + + // **************** + // * 2 : Theorems * + // **************** + + // Injectivity + show(nil.injectivity) + show(cons.injectivity) + show(list.injectivity(nil, cons)) + + // Introduction rules + show(nil.intro) + show(cons.intro) + + Lemma(nil(A) :: list(A)){ + have(thesis) by TypeChecker.prove + } + Lemma((x :: A, l :: list(A)) |- cons(A) * x * l :: list(A)){ + have(thesis) by TypeChecker.prove + } + + // Induction + show(list.induction) + + // Pattern matching + show(list.elim) + + // ***************** + // * 3 : Functions * + // ***************** + + val not = fun(bool, bool) { + Case(tru) { fals } + Case(fals) { tru } + } + + val pred = fun(nat, nat): + Case(zero): + zero + Case(succ, n): + n + + + // ************************ + // * 4 : Induction Tactic * + // ************************ + + Theorem(x :: bool |- not * (not * x) === x) { + have(thesis) by Induction() { + Case(tru) subproof { + val notFals = have(not * fals === tru) by Restate.from((not.elim(fals))) + have(fals === not * tru) by Restate.from(not.elim(tru)) + have(not * (not * tru) === tru) by Substitution.ApplyRules(lastStep)(notFals) + } + Case(fals) subproof { + val notTrue = have(not * tru === fals) by Restate.from((not.elim(tru))) + have(tru === not * fals) by Restate.from(not.elim(fals)) + have(not * (not * fals) === fals) by Substitution.ApplyRules(lastStep)(notTrue) + } + } + } + + // **************************** + // * 5: All features together * + // **************************** + + val consInj = Theorem((l :: list(A), x :: A) |- !(l === cons(A) * x * l)) { + + val typeNil = have(nil(A) :: list(A)) by TypeChecker.prove + val typeCons = have((y :: A, l :: list(A)) |- cons(A) * y * l :: list(A)) by TypeChecker.prove + + have(l :: list(A) |- forall(x, x :: A ==> !(l === cons(A) * x * l))) by Induction(){ + Case(nil) subproof { + have(x :: A ==> !(nil(A) === cons(A) * x * nil(A))) by Tautology.from(list.injectivity(nil, cons) of (y0 := x, y1 := nil(A)), typeNil) + thenHave(forall(x, x :: A ==> !(nil(A) === cons(A) * x * nil(A)))) by RightForall + } + Case(cons, y, l) subproof { + have((y :: A ==> !(l === cons(A) * y * l), y :: A, l :: list(A)) |- x :: A ==> !(cons(A) * y * l === cons(A) * x * (cons(A) * y * l))) by Tautology.from( + cons.injectivity of (x0 := y, x1 := l, y0 := x, y1 := cons(A) * y * l), + typeCons + ) + thenHave((y :: A ==> !(l === cons(A) * y * l), y :: A, l :: list(A)) |- forall(x, x :: A ==> !(cons(A) * y * l === cons(A) * x * (cons(A) * y * l)))) by RightForall + thenHave((forall(x, x :: A ==> !(l === cons(A) * x * l)), y :: A, l :: list(A)) |- forall(x, x :: A ==> !(cons(A) * y * l === cons(A) * x * (cons(A) * y * l)))) by LeftForall + } + } + + thenHave(l :: list(A) |- x :: A ==> !(l === cons(A) * x * l)) by InstantiateForall(x) + thenHave(thesis) by Tautology + } + +} \ No newline at end of file diff --git a/lisa-sets/src/main/scala/lisa/Main.scala b/lisa-sets/src/main/scala/lisa/Main.scala index 2ce01a39..c96ac042 100644 --- a/lisa-sets/src/main/scala/lisa/Main.scala +++ b/lisa-sets/src/main/scala/lisa/Main.scala @@ -29,6 +29,9 @@ trait Main extends BasicMain { def definition: JUSTIFICATION = { getDefinition(symbol).get } + def shortDefinition: JUSTIFICATION = { + getShortDefinition(symbol).get + } } } diff --git a/lisa-sets/src/main/scala/lisa/automation/Apply.scala b/lisa-sets/src/main/scala/lisa/automation/Apply.scala index 22b0bc9c..a0c22d79 100644 --- a/lisa-sets/src/main/scala/lisa/automation/Apply.scala +++ b/lisa-sets/src/main/scala/lisa/automation/Apply.scala @@ -6,7 +6,10 @@ import lisa.prooflib.ProofTacticLib.* import lisa.prooflib.SimpleDeducedSteps.* import lisa.prooflib.* import lisa.utils.unification.UnificationUtils.* -import scala.util.boundary, boundary.break + +import scala.util.boundary + +import boundary.break /** @@ -48,16 +51,21 @@ class Apply(using val lib: Library, val proof: lib.Proof)(thm: proof.Fact) exten */ private def normalForm(seq: Sequent): Sequent = def removeImplies(s: Sequent): Sequent = - s.right.head match - case AppliedConnector(Implies, Seq(phi, psi)) => s.left + phi |- psi - case _ => s - + if s.right.isEmpty then + s + else + s.right.head match + case AppliedConnector(Implies, Seq(phi, psi)) => removeImplies(s.left + phi |- psi) + case _ => s + + + def removeConjunctions(s: Sequent): Sequent = - s.left.flatMap(f => - f match - case AppliedConnector(And, Seq(phi, psi)) => Set(phi, psi) - case _ => Set(f) - ) |- s.right + def rec(f: Formula): Set[Formula] = + f match + case AppliedConnector(And, Seq(phi, psi)) => rec(phi) ++ rec(psi) + case _ => Set(f) + s.left.flatMap(rec) |- s.right removeConjunctions(removeImplies(seq)) @@ -106,128 +114,140 @@ class Apply(using val lib: Library, val proof: lib.Proof)(thm: proof.Fact) exten private def substitute(using _proof: lib.Proof)(fact: _proof.Fact, fSubst: FormulaSubstitution, tSubst: TermSubstitution): _proof.Fact = fact.of(fSubst.toFSubstPair: _*).of(tSubst.toTSubstPair: _*) - /** - * Applies on method with a sequence as an argument instead of a varargs. - */ - infix def onSeq(premises: Seq[proof.Fact])(bot: Sequent): proof.ProofTacticJudgement = on(premises : _*)(bot) + * Applies on method with a varargs instead of a sequence. + */ + infix def on(premises: proof.Fact*)(bot: Sequent): proof.ProofTacticJudgement = on(premises.toSeq)(bot) + /** * Executes the tactic. See class description for use cases. * * @param premises the facts that are applied to the theorem + * @param excluding the variables that are not to be substituted * @param bot the sequent the user want to prove */ - infix def on(premises: proof.Fact*)(bot: Sequent): proof.ProofTacticJudgement = - - boundary: - TacticSubproof { sp ?=> - - // STEP 1: Convert the given theorem, facts and sequent to their normal forms - val botNormalized: Sequent = normalForm(bot) - val thmNormalized: sp.Fact = lib.have(normalForm(thm.statement)) by Restate.from(thm) - val premisesNormalized = premises.map(p => lib.have(normalForm(p.statement)) by Restate.from(p)) - - // STEP 2: Unify the conclusion of the sequent the user want to prove and the conclusion - val botCcl: Formula = botNormalized.right.head - val thmCcl: Formula = thmNormalized.statement.right.head - - matchFormula(botCcl, thmCcl) match - case Some((formulaCclAssignment, termCclAssignment)) => - - //Unification succeeded, subtitution can be performed - val thmAfterCclUnification: sp.Fact = substitute(thmNormalized, formulaCclAssignment, termCclAssignment) - - // STEP 3: Process each fact - val thmAfterPrems: sp.Fact = { - - premisesNormalized.foldLeft(lib.have(thmAfterCclUnification))((updatedThm, premNormalized) => { - - - val premCcl: Formula = premNormalized.statement.right.head - - // STEP 3.1: Unify the conclusion of the fact with a premise of the theorem - // Three possibilities: - // - the unification succeeded and the variables in the theorem are subtituted to match the conclusion of the fact; - // - if the unification did not succeeded, try the unification in the other direction, i.e. try to specify the fact - // instead of the theorem. If this works, make the susbtitution inside the fact; - // - both unifications do not succeed and the fact is dropped. - // TODO: add a warning when the fact is dropped - val conclusionsUnification: Option[(sp.Fact, sp.Fact)] = - searchPremises(updatedThm.statement, premCcl) match - case Some((fSubstAfterPrem, tSubstAfterPrem)) => Some((substitute(updatedThm, fSubstAfterPrem, tSubstAfterPrem), premNormalized)) - case None => - searchPremisesRev(updatedThm.statement, premCcl) match - case Some((fSubstAfterPrem, tSubstAfterPrem)) => Some((updatedThm, substitute(premNormalized, fSubstAfterPrem, tSubstAfterPrem))) - case None => None - - - - - conclusionsUnification match - case Some(updatedThmAfterCclUnification, premAfterCclUnification) => - - // STEP 3.2: For each premise of the fact: - // - check if it is in the sequent the user want to prove. If yes, add it to the preconditions of the theorem - // using weakening; - // - else if it matches one of the premises of the theorem specify the theorem by using the appropriate sustitution. - // When performing this operation, the conclusion of the fact must be temporarily removed from the premises of the theorem - // to avoid buggy situations in case the fact is of the form p |- p; - // - else add the premise to the premises of the theorem using weakening. - val premCclAfterCclUnification: Formula = premAfterCclUnification.statement.right.head - - val updatedThmAfterWeakening: sp.Fact = - premAfterCclUnification.statement.left.foldLeft(updatedThmAfterCclUnification)((updatedThmDuringWeakening, premPrem) => { - if botNormalized.left.contains(premPrem) then - lib.have(updatedThmDuringWeakening.statement +<< premPrem) by Weakening(updatedThmDuringWeakening) - else - searchPremises(updatedThmDuringWeakening.statement -<? premCclAfterCclUnification, premPrem) match - case Some((fSubstDuringWeakening, tSubstDuringWeakening)) => - substitute(updatedThmDuringWeakening, fSubstDuringWeakening, tSubstDuringWeakening) - case None => - lib.have(updatedThmDuringWeakening.statement +<< premPrem) by Weakening(updatedThmDuringWeakening) - }) - - - // STEP 3.3 Use cut to apply the conclusion of the fact to the theorem - // TODO: maybe throw a warning when the fact cannot be applied instead of making the proof crash - val cutStep: sp.ProofTacticJudgement = Cut(premAfterCclUnification, updatedThmAfterWeakening)(updatedThmAfterWeakening.statement -<? premCclAfterCclUnification) - - if cutStep.isValid then - lib.have(cutStep) - else - break(proof.InvalidProofTactic(s"The following argument could not be applied to the theorem\n${premAfterCclUnification.statement}")) - - - - // STEP 3.1 failed: the fact is dropped - case None => updatedThm - - }) - } - - // STEP 4: If some cases, after all these operations, the theorem can remain too general to prove the sequent. - // To avoid such situation, perform a last unification between the premises of the sequent and those - // of the theorem. - val thmAfterLastUnification: sp.Fact = botNormalized.left.foldLeft(thmAfterPrems)((updatedThm, premBot) => { - searchPremises(updatedThm.statement, premBot) match - case Some(fSubst, tSubst) => substitute(updatedThm, fSubst, tSubst) + infix def on(premises: Seq[proof.Fact], excluding: Iterable[Variable | VariableFormula] = Set())(bot: Sequent): proof.ProofTacticJudgement = + + if thm == null then + proof.InvalidProofTactic("The theorem is null. Please check that it has been defined earlier in the proof.") + else if premises.exists(_ == null) then + proof.InvalidProofTactic("One of the premises is null. Please check that they all have been defined earlier in the proof.") + else + // STEP 0: Separate the variables and the variable formula in their respective sets + val (excludingTVars, excludingFVars) = excluding.foldLeft[(Set[Variable], Set[VariableFormula])](Set(), Set())((acc, v) => v match + case v: Variable => (acc._1 + v, acc._2) + case v: VariableFormula => (acc._1, acc._2 + v) + ) + + boundary{ + TacticSubproof { sp ?=> + + // STEP 1: Convert the given theorem, facts and sequent to their normal forms + val botNormalized: Sequent = normalForm(bot) + val thmNormalized: sp.Fact = lib.have(normalForm(thm.statement)) by Restate.from(thm) + val premisesNormalized = premises.map(p => lib.have(normalForm(p.statement)) by Restate.from(p)) + + // STEP 2: Unify the conclusion of the sequent the user want to prove and the conclusion + val thmAfterCclUnification: sp.Fact = + (botNormalized.right.isEmpty, thmNormalized.statement.right.isEmpty) match + case (true, true) => thmNormalized + case (true, false) => break(proof.InvalidProofTactic(s"The given theorem could not prove the sequent.")) + case (false, true) => break(proof.InvalidProofTactic(s"The given theorem could not prove the sequent.")) + case (false, false) => + val botCcl: Formula = botNormalized.right.head + val thmCcl: Formula = thmNormalized.statement.right.head + + matchFormula(botCcl, thmCcl, excludingTVars, excludingFVars) match + //Unification succeeded, subtitution can be performed + case Some((formulaCclAssignment, termCclAssignment)) => substitute(thmNormalized, formulaCclAssignment, termCclAssignment) + // STEP 2 failed + case None => break(proof.InvalidProofTactic(s"The conclusion of the goal and the theorem could not be unified.")) + + // STEP 3: Process each fact + val thmAfterPrems: sp.Fact = { + + premisesNormalized.foldLeft(lib.have(thmAfterCclUnification))((updatedThm, premNormalized) => { + + + val premCcl: Formula = premNormalized.statement.right.head + + // STEP 3.1: Unify the conclusion of the fact with a premise of the theorem + // Three possibilities: + // - the unification succeeded and the variables in the theorem are subtituted to match the conclusion of the fact; + // - if the unification did not succeeded, try the unification in the other direction, i.e. try to specify the fact + // instead of the theorem. If this works, make the susbtitution inside the fact; + // - both unifications do not succeed and the fact is dropped. + // TODO: add a warning when the fact is dropped + val conclusionsUnification: Option[(sp.Fact, sp.Fact)] = + searchPremises(updatedThm.statement, premCcl, excludingTVars, excludingFVars) match + case Some((fSubstAfterPrem, tSubstAfterPrem)) => Some((substitute(updatedThm, fSubstAfterPrem, tSubstAfterPrem), premNormalized)) + case None => + searchPremisesRev(updatedThm.statement, premCcl, excludingTVars, excludingFVars) match + case Some((fSubstAfterPrem, tSubstAfterPrem)) => Some((updatedThm, substitute(premNormalized, fSubstAfterPrem, tSubstAfterPrem))) + case None => None + + conclusionsUnification match + case Some(updatedThmAfterCclUnification, premAfterCclUnification) => + + // STEP 3.2: For each premise of the fact: + // - check if it is in the sequent the user want to prove. If yes, add it to the preconditions of the theorem + // using weakening; + // - else if it matches one of the premises of the theorem specify the theorem by using the appropriate sustitution. + // When performing this operation, the conclusion of the fact must be temporarily removed from the premises of the theorem + // to avoid buggy situations in case the fact is of the form p |- p; + // - else add the premise to the premises of the theorem using weakening. + val premCclAfterCclUnification: Formula = premAfterCclUnification.statement.right.head + + val updatedThmAfterWeakening: sp.Fact = + premAfterCclUnification.statement.left.foldLeft(updatedThmAfterCclUnification)((updatedThmDuringWeakening, premPrem) => { + if botNormalized.left.contains(premPrem) then + lib.have(updatedThmDuringWeakening.statement +<< premPrem) by Weakening(updatedThmDuringWeakening) + else + searchPremises(updatedThmDuringWeakening.statement -<? premCclAfterCclUnification, premPrem, excludingTVars, excludingFVars) match + case Some((fSubstDuringWeakening, tSubstDuringWeakening)) => + substitute(updatedThmDuringWeakening, fSubstDuringWeakening, tSubstDuringWeakening) + case None => + lib.have(updatedThmDuringWeakening.statement +<< premPrem) by Weakening(updatedThmDuringWeakening) + }) + + + // STEP 3.3 Use cut to apply the conclusion of the fact to the theorem + // TODO: maybe throw a warning when the fact cannot be applied instead of making the proof crash + val cutStep: sp.ProofTacticJudgement = Cut(premAfterCclUnification, updatedThmAfterWeakening)(updatedThmAfterWeakening.statement -<? premCclAfterCclUnification) + + if cutStep.isValid then + lib.have(cutStep) + else + break(proof.InvalidProofTactic(s"The following argument could not be applied to the theorem\n${premAfterCclUnification.statement} \n Deduced theorem: ${updatedThmAfterWeakening.statement}")) + + + // STEP 3.1 failed: the fact is dropped case None => updatedThm + }) - - // STEP 5: Prove the sequent using the theorem obtained with the previous steps. Weakening is necessary in case - // additional preconditions that do not appear in the theorem are present in the sequent. - val finalStep: sp.ProofTacticJudgement = Weakening(thmAfterLastUnification)(bot) - if finalStep.isValid then - lib.have(finalStep) - else - break(proof.InvalidProofTactic(s"The given theorem could not prove the sequent\n. Deduced theorem: ${thmAfterLastUnification.statement}")) - - // STEP 2 failed - case None => break(proof.InvalidProofTactic(s"The conclusion of the goal and the theorem could not be unified.")) - + } + + // STEP 4: If some cases, after all these operations, the theorem can remain too general to prove the sequent. + // To avoid such situation, perform a last unification between the premises of the sequent and those + // of the theorem. + val thmAfterLastUnification: sp.Fact = botNormalized.left.foldLeft(thmAfterPrems)((updatedThm, premBot) => { + searchPremises(updatedThm.statement, premBot, excludingTVars, excludingFVars) match + case Some(fSubst, tSubst) => substitute(updatedThm, fSubst, tSubst) + case None => updatedThm + }) + + // STEP 5: Prove the sequent using the theorem obtained with the previous steps. Weakening is necessary in case + // additional preconditions that do not appear in the theorem are present in the sequent. + val finalStep: sp.ProofTacticJudgement = Weakening(thmAfterLastUnification)(bot) + if finalStep.isValid then + lib.have(finalStep) + else + break(proof.InvalidProofTactic(s"The given theorem could not prove the sequent.\n Deduced theorem: ${thmAfterLastUnification.statement}\n Expected: ${bot}")) + + + } } - } /** diff --git a/lisa-sets/src/main/scala/lisa/automation/CommonTactics.scala b/lisa-sets/src/main/scala/lisa/automation/CommonTactics.scala index 9430195a..c5b8e80a 100644 --- a/lisa-sets/src/main/scala/lisa/automation/CommonTactics.scala +++ b/lisa-sets/src/main/scala/lisa/automation/CommonTactics.scala @@ -113,7 +113,7 @@ object CommonTactics { case F.AppliedPredicate(F.`equality`, Seq(`x`, (y: F.Variable))) if x != y && F.contains(uniquenessSeq.left, phi.substitute(x := y)) => y - case F.AppliedPredicate(F.`equality`, List(F.AppliedFunction(y: F.Variable, _), F.AppliedFunction(`x`, _))) if x != y && F.contains(uniquenessSeq.left, phi.substitute(x := y)) => + case F.AppliedPredicate(F.`equality`, List(F.AppliedFunctional(y: F.Variable, _), F.AppliedFunctional(`x`, _))) if x != y && F.contains(uniquenessSeq.left, phi.substitute(x := y)) => y } match { case Some(y) => ExistenceAndUniqueness.withParameters(phi, x, y)(existence, uniqueness)(bot) diff --git a/lisa-sets/src/main/scala/lisa/automation/atp/Goeland.scala b/lisa-sets/src/main/scala/lisa/automation/atp/Goeland.scala index 568110cd..e8d50cf0 100644 --- a/lisa-sets/src/main/scala/lisa/automation/atp/Goeland.scala +++ b/lisa-sets/src/main/scala/lisa/automation/atp/Goeland.scala @@ -1,18 +1,20 @@ package lisa.automation.atp -import lisa.utils.tptp.* -import ProofParser.* -import KernelParser.* - -import lisa.prooflib.ProofTacticLib.* import lisa.fol.FOL as F import lisa.prooflib.Library +import lisa.prooflib.OutputManager +import lisa.prooflib.ProofTacticLib.* import lisa.utils.K +import lisa.utils.tptp.* import java.io.* -import sys.process._ import scala.io.Source -import scala.util.{Try, Success, Failure} -import lisa.prooflib.OutputManager +import scala.util.Failure +import scala.util.Success +import scala.util.Try + +import ProofParser.* +import KernelParser.* +import sys.process._ /** * Goéland is an automated theorem prover. This tactic calls the Goéland prover to solve the current sequent. diff --git a/lisa-sets/src/main/scala/lisa/maths/settheory/types/TypeSystem.scala b/lisa-sets/src/main/scala/lisa/maths/settheory/types/TypeSystem.scala new file mode 100644 index 00000000..850103ca --- /dev/null +++ b/lisa-sets/src/main/scala/lisa/maths/settheory/types/TypeSystem.scala @@ -0,0 +1,535 @@ +package lisa.maths.settheory.types + +import lisa.prooflib.ProofTacticLib.* +import lisa.fol.FOL +import lisa.automation.Tautology +import lisa.fol.FOL.{*, given} +import lisa.prooflib.BasicStepTactic.* +import lisa.prooflib.SimpleDeducedSteps.* +import lisa.SetTheoryLibrary.{given, *} +import lisa.SetTheoryLibrary +import lisa.kernel.proof.SequentCalculus.SCProofStep +import lisa.maths.settheory.SetTheory.functional +import lisa.prooflib.OutputManager +import lisa.maths.settheory.SetTheory.{singleton, app} + +object TypeLib extends lisa.Main { + + import TypeSystem.* + + val |=> : ConstantFunctionLabel[2] = ConstantFunctionLabel.infix("|=>", 2) + private inline def temp = |=> + extension (t:Term) { + def |=>(o:Term): Term = TypeLib.temp(t, o) + } + val app: ConstantFunctionLabel[2] = lisa.maths.settheory.SetTheory.app + addSymbol(|=>) + + val f = variable + val x = variable + val y = variable + val z = variable + val A = variable + val B = variable + val F = function[1] + val funcspaceAxiom = Axiom(f ∈ (A |=> B) ==> (x ∈ A ==> app(f, x) ∈ B)) + val any = DEF(x) --> top + + + // A |=> B is the set of functions from A to B + // C |> D is the functional class of functionals from the class C to the class D + // F is C |> D desugars into ∀(x, (x is C) => (F(x) is D)) + + val testTheorem = Theorem((x is A, f is (A |=> B), F is (A |=> B) |> (A |=> B) ) |- (F(f)*(x) is B)) { + have(thesis) by TypeChecker.prove + } + + val 𝔹 = DEF() --> unorderedPair(∅, singleton(∅)) + + val empty_in_B = Theorem( (∅ :: 𝔹) ) { + have( ∅ :: unorderedPair(∅, singleton(∅))) by Tautology.from(pairAxiom of (z := ∅, x := ∅, y := singleton(∅))) + thenHave(thesis ) by Substitution.ApplyRules(𝔹.shortDefinition) + } + + val sing_empty_in_B = Theorem( (singleton(∅) :: 𝔹) ) { + have( singleton(∅) :: unorderedPair(∅, singleton(∅))) by Tautology.from(pairAxiom of (z := singleton(∅), x := ∅, y := singleton(∅))) + thenHave(thesis ) by Substitution.ApplyRules(𝔹.shortDefinition) + } + + val Zero = DEF() --> (∅.typedWith(𝔹)(empty_in_B), 𝔹) + + val One = { + val One = DEF() --> singleton(∅) + val One_in_B = Theorem( (One :: 𝔹) ) { + have(thesis) by Substitution.ApplyRules(One.shortDefinition)(sing_empty_in_B) + } + One.typedWith(𝔹)(One_in_B) + } + + val zero_in_B = Theorem( (Zero :: 𝔹) ) { + have( Zero :: 𝔹) by TypeChecker.prove + } + + +} + +object TypeSystem { + + import TypeLib.{ + |=>, app, f, x, A, B, funcspaceAxiom, any, definition, given + } + + + + type Class = Term | (Term**1 |-> Formula) + + type SmallClass = Term + + case class FunctionalClass(in: Seq[Class], args: Seq[Variable], out: Class, arity: Int) { + def formula[N <: Arity](f: (Term**N |-> Term)): Formula = + val inner = (args.zip(in.toSeq).map((term, typ) => (term is typ).asFormula).reduceLeft((a, b) => a /\ b)) ==> (f.applySeq(args) is out) + args.foldRight(inner)((v, form) => forall(v, form)) + + override def toString(): String = in.map(_.toStringSeparated()).mkString("(", ", ", ")") + " |> " + out.toStringSeparated() + } + object FunctionalClass { + def apply(in: Seq[Class], out: Class, arity: Int): FunctionalClass = FunctionalClass(in, Seq.empty, out, arity) + } + + extension [N <: Arity](f: (Term**N |-> Term)) { + def is (typ: FunctionalClass): FunctionalTypeAssignment[N] & Formula = FunctionalTypeAssignment[N](f, typ).asInstanceOf + } + + extension[A <: Class] (c: Class) { + //(1 to arity).map(i => freshVariable(in.toSeq :+ out, "%x" + i)) + def |>(out: Class): FunctionalClass = FunctionalClass(Seq(c),Seq(freshVariable(Seq(out), "$x")), out, 1) + def |>(out: FunctionalClass): FunctionalClass = + val newVar = freshVariable(out.in.toSeq :+ out.out, "$x") + FunctionalClass(c +: out.in, newVar +: out.args, out.out, out.arity+1) + def toStringSeparated(): String = c match + case t: Term => t.toStringSeparated() + case f: (Term**1 |-> Formula) @unchecked => f.toString() + } + + extension [A <: Class](t: Term) { + def is(clas:A): Formula with TypeAssignment[A] = TypeAssignment(t, clas).asInstanceOf[Formula with TypeAssignment[A]] + def ::(clas:A): Formula with TypeAssignment[A] = TypeAssignment(t, clas).asInstanceOf[Formula with TypeAssignment[A]] + def @@(t2: Term): AppliedFunction = AppliedFunction(t, t2) + def *(t2: Term): AppliedFunction = AppliedFunction(t, t2) + } + + + object * {def unapply(t: Term): Option[(Term, Term)] = t match { + case AppliedFunction(f, a) => Some((f, a)) + case app(f, a) => Some((f, a)) + case _ => None + }} + + + /** + * A type assumption is a pair of a variable and a type. + * It is also a formula, equal to the type applied to the variable. + */ + sealed trait TypeAssignment[A <: Class]{ + this: Formula => + val t: Term + val typ: A + val asFormula: Formula = this + + override def toString() = + t.toStringSeparated() + "::" + typ.toStringSeparated() + override def toStringSeparated(): String = "(" + toString() + ")" + } + object TypeAssignment { + + /** + * A type assumption is a pair of a variable and a type. + * It is also a formula, equal to the type applied to the variable. + */ + def apply[A <: Class](t: Term, typ:A): TypeAssignment[A] = + val form = typ match + case f: Term => in(t, f) + case f : (Term**1 |-> Formula) @unchecked => + ((f: Term**1 |-> Formula)(t): Formula) + form match + case f: VariableFormula => + throw new IllegalArgumentException("Class formula cannot be a variable formula, as we require a type to have no free variable.") + case f: ConstantFormula => new TypeAssignmentConstant(t, typ, f) + case f: AppliedPredicate => new TypeAssignmentPredicate(t, typ, f) + case f: AppliedConnector => new TypeAssignmentConnector(t, typ, f) + case f: BinderFormula => new TypeAssignmentBinder(t, typ, f) + + def unapply(ta: Formula): Option[(Term, Class)] = ta match + case ta: TypeAssignment[?] => Some((ta.t, ta.typ)) + case in(x, set) => Some((x, set)) + case AppliedPredicate(label, args) if label.arity == 1 => Some((args.head, label.asInstanceOf[Term**1 |-> Formula])) + case _ => None + + } + val is = TypeAssignment + + given [A <: Class]: Conversion[TypeAssignment[A], Formula] = _.asInstanceOf[Formula] + /* + given [A <: Class]: Conversion[TypeAssignment[A], Sequent] = ta => Sequent(Set.empty, Set(ta)) + given [A <: Class]: FormulaSetConverter[TypeAssignment[A]] with { + override def apply(f: TypeAssignment[A]): Set[Formula] = Set(f.asInstanceOf[Formula]) + } +*/ + + + private class TypeAssignmentConstant[A <: Class](val t: Term, val typ:A, formula: ConstantFormula) extends ConstantFormula(formula.id) with TypeAssignment[A] + private class TypeAssignmentPredicate[A <: Class](val t: Term, val typ:A, formula: AppliedPredicate) extends AppliedPredicate(formula.label, formula.args) with TypeAssignment[A] { + + override def substituteUnsafe(map: Map[FOL.SchematicLabel[?], FOL.LisaObject[?]]): FOL.Formula = + if map.keySet.exists(_ == typ) then super.substituteUnsafe(map) + else + val newArgs = args.map(_.substituteUnsafe(map)) + if newArgs == args then this else + val newTyp = (typ: LisaObject[?]).substituteUnsafe(map).asInstanceOf[A] + + TypeAssignmentPredicate(t.substituteUnsafe(map), newTyp, formula.copy(args = newArgs)) + } + private class TypeAssignmentConnector[A <: Class](val t: Term, val typ:A, formula: AppliedConnector) extends AppliedConnector(formula.label, formula.args) with TypeAssignment[A] + private class TypeAssignmentBinder[A <: Class](val t: Term, val typ:A, formula: BinderFormula) extends BinderFormula(formula.f, formula.bound, formula.body) with TypeAssignment[A] + + + type TypingContext = Iterable[TypeAssignment[?]] + + + sealed trait FunctionalTypeAssignment[N <: Arity]{ + this: Formula => + val functional: Term**N |-> Term + val typ: FunctionalClass + val asFormula: Formula = this + + + override def toString() = functional.toString() + " : " + typ.toString() + override def toStringSeparated(): String = "(" + toString + ")" + + } + object FunctionalTypeAssignment { + def apply[N <: Arity](functional: Term**N |-> Term, typ: FunctionalClass): FunctionalTypeAssignment[N] = + val form = typ.formula(functional) + form match + case fo: VariableFormula => + throw new IllegalArgumentException("Class formula cannot be a variable formula, as we require a type to have no free variable.") + case fo: ConstantFormula => new FunctionalTypeAssignmentConstant(functional, typ, fo) + case fo: AppliedPredicate => new FunctionalTypeAssignmentPredicate(functional, typ, fo) + case fo: AppliedConnector => new FunctionalTypeAssignmentConnector(functional, typ, fo) + case fo: BinderFormula => new FunctionalTypeAssignmentBinder(functional, typ, fo) + + def unapply[N <: Arity](f: Formula): Option[((Term ** N) |-> Term, FunctionalClass)] = + f match + case ta: FunctionalTypeAssignment[N] => Some((ta.functional, ta.typ)) + case _ => None + } + private class FunctionalTypeAssignmentConstant[N <: Arity](val functional: Term**N |-> Term, val typ: FunctionalClass, formula: ConstantFormula) extends ConstantFormula(formula.id) with FunctionalTypeAssignment[N] + private class FunctionalTypeAssignmentPredicate[N <: Arity](val functional: Term**N |-> Term, val typ: FunctionalClass, formula: AppliedPredicate) extends AppliedPredicate(formula.label, formula.args) with FunctionalTypeAssignment[N] + private class FunctionalTypeAssignmentConnector[N <: Arity](val functional: Term**N |-> Term, val typ: FunctionalClass, formula: AppliedConnector) extends AppliedConnector(formula.label, formula.args) with FunctionalTypeAssignment[N] + private class FunctionalTypeAssignmentBinder[N <: Arity](val functional: Term**N |-> Term, val typ: FunctionalClass, formula: BinderFormula) extends BinderFormula(formula.f, formula.bound, formula.body) with FunctionalTypeAssignment[N] + + + + + + class TypedConstant[A <: Class] + (id: Identifier, val typ: A, val justif: JUSTIFICATION) extends Constant(id) with LisaObject[TypedConstant[A]] { + val formula = TypeAssignment(this, typ) + assert(justif.statement.left.isEmpty && (justif.statement.right.head == formula)) + + override def substituteUnsafe(map: Map[lisa.fol.FOL.SchematicLabel[?], lisa.fol.FOL.LisaObject[?]]): TypedConstant[A] = this + } + + // Function Labels + + + + + + class TypedConstantFunctional[N <: Arity]( + id : Identifier, + arity: N, + val typ: FunctionalClass, + val justif: JUSTIFICATION + ) extends ConstantFunctionLabel[N](id, arity) with LisaObject[TypedConstantFunctional[N]] { + + override def substituteUnsafe(map: Map[lisa.fol.FOL.SchematicLabel[?], lisa.fol.FOL.LisaObject[?]]): TypedConstantFunctional[N] = this + } + + + + + + class AppliedFunction(val func: Term, val arg: Term) extends AppliedFunctional(app, Seq(func, arg)) with LisaObject[AppliedFunction] { + + override def substituteUnsafe(map: Map[lisa.fol.FOL.SchematicLabel[?], lisa.fol.FOL.LisaObject[?]]): AppliedFunction = AppliedFunction(func.substituteUnsafe(map), arg.substituteUnsafe(map)) + + override def toString(): String = + func match + case AppliedFunction(af @ AppliedFunctional(label, args), t1) if label.id.name == "=:=" => + s"(${t1.toStringSeparated()} =:=_${args.head.toStringSeparated()} ${arg.toStringSeparated()})" + case _ => + func.toStringSeparated() + "*(" + arg.toStringSeparated() + ")" + override def toStringSeparated(): String = toString() + } + object AppliedFunction { + def unapply(af: AppliedFunctional): Option[(Term, Term)] = af match + case AppliedFunctional(label, Seq(func, arg)) if label == app => Some((func, arg)) + case _ => None + } + + + + /////////////////////// + ///// Definitions ///// + /////////////////////// + + + class TypedSimpleConstantDefinition[A <: Class](using om: OutputManager)(fullName: String, line: Int, file: String)( + val expression: Term, + out: Variable, + j: JUSTIFICATION, + val typ:A + ) extends SimpleFunctionDefinition[0](fullName, line, file)(lambda[Term, Term](Seq[Variable](), expression).asInstanceOf, out, j) { + val typingName = "typing_" + fullName + val typingJudgement = THM( label :: typ, typingName, line, file, InternalStatement)({ + have(expression :: typ) by TypeChecker.prove + thenHave(thesis) by lisa.automation.Substitution.ApplyRules(getShortDefinition(label).get) + }) + val typedLabel: TypedConstant[A] = TypedConstant(label.id, typ, typingJudgement) + + + } + object TypedSimpleConstantDefinition { + def apply[A <: Class](using om: OutputManager)(fullName: String, line: Int, file: String)(expression: Term, typ:A): TypedSimpleConstantDefinition[A] = { + val intName = "definition_" + fullName + val out = Variable(freshId(expression.allSchematicLabels.map(_.id), "y")) + val defThm = THM(ExistsOne(out, out === expression), intName, line, file, InternalStatement)({ + have(lisa.prooflib.SimpleDeducedSteps.simpleFunctionDefinition(lambda(Seq[Variable](), expression), out)) + }) + new TypedSimpleConstantDefinition(fullName, line, file)(expression, out, defThm, typ) + } + } + extension (d: definitionWithVars[0]) { + inline infix def -->[A<:Class]( + using om: OutputManager, name: sourcecode.FullName, line: sourcecode.Line, file: sourcecode.File)(term:Term, typ: A): TypedConstant[A] = + TypedSimpleConstantDefinition[A](name.value, line.value, file.value)(term, typ).typedLabel + } + + extension (c: Constant) { + def typedWith[A <: Class](typ:A)(justif: JUSTIFICATION) : TypedConstant[A] = + if justif.statement.right.size != 1 || justif.statement.left.size != 0 || !K.isSame((c is typ).asFormula.underlying, justif.statement.right.head.underlying) then + throw new IllegalArgumentException(s"A proof of typing of $c must be of the form ${c :: typ}, but the given justification shows ${justif.statement}.") + else TypedConstant(c.id, typ, justif) + } + + + + + + + + + ///////////////////////// + ///// Type Checking ///// + ///////////////////////// + + object TypeChecker extends ProofTactic { + private val x = variable + + class TypingException(val msg: String) extends Exception(msg) + + def prove(using proof: SetTheoryLibrary.Proof)(bot:lisa.fol.FOL.Sequent): proof.ProofTacticJudgement = + val context = bot.left + var success: proof.ProofTacticJudgement = null + var typingError: proof.ProofTacticJudgement = null + bot.right.find(goal => + goal match + case (term is typ) => + val ptj = typecheck(using SetTheoryLibrary)(context.toSeq, term, Some(typ)) + if ptj.isValid then + success = ptj + true + else + typingError = ptj + false + case _ => false + ) + if success != null then success else if typingError != null then typingError else proof.InvalidProofTactic("The right hand side of the goal must be a typing judgement") + + private def fullFlat(context: Seq[Formula]): Seq[Formula] = context.flatMap{ + case AppliedConnector(And, cunj) => fullFlat(cunj) + case f => Seq(f) + } + + def typecheck(using lib: SetTheoryLibrary.type, proof: lib.Proof)(context: Seq[Formula], term:Term, typ: Option[Class]): proof.ProofTacticJudgement = + val typingAssumptions: Map[Term, Seq[Class]] = fullFlat(context).collect{ + case TypeAssignment(term, typ) => (term, typ) + }.groupBy(_._1).map((t, l) => (t, l.map(_._2))) + + val functionalTypingAssumptions: Map[(? |-> Term), Seq[FunctionalClass]] = context.collect{ + case FunctionalTypeAssignment(func, typ) => (func, typ) + }.groupBy(_._1).map((func, l) => (func, l.map(_._2))) + + TacticSubproof { + context.foreach(assume(_)) + try { + + def innerTypecheck(context2: Map[Term, Seq[Class]], term:Term, typ:Option[Class]): Class= { + val possibleTypes = typingAssumptions.getOrElse(term, Nil) + if typ == Some(any) then + have(term is any) by Restate.from(TypeLib.any.definition of (x := term)) + any + else if typ.isEmpty && possibleTypes.size >=1 then + have(term is possibleTypes.head) by Restate + possibleTypes.head + else if (typ.nonEmpty && possibleTypes.contains(typ.get)) then + have(term is typ.get) by Restate + typ.get + else term match + case tc: TypedConstant[?] => + if typ.isEmpty then + have(tc is tc.typ) by Restate.from(tc.justif) + tc.typ + else if K.isSame((tc is typ.get).asFormula.underlying, (tc is tc.typ).asFormula.underlying) then + have(tc is typ.get) by Restate.from(tc.justif) + typ.get + else throw TypingException("Constant " + tc + " expected to be of type " + typ + " but has type " + tc.typ + ".") + + case AppliedFunction(func, arg) => + val funcType = innerTypecheck(context2, func, None) + val funcProof = lastStep + val argType = innerTypecheck(context2, arg, None) + val argProof = lastStep + funcType match + case inType |=> outType => typ match + case None => + if K.isSame((arg is inType).asFormula.underlying, (arg is argType).asFormula.underlying) then + have(term is outType) by Tautology.from( + funcspaceAxiom of (f := func, x := arg, A:= inType, B:= outType), + funcProof, + argProof + ) + outType + else throw + TypingException("Function " + func + " found to have type " + funcType + ", but argument " + arg + " has type " + argType + " instead of expected " + inType + ".") + case Some(typ) if K.isSame((term is typ).asFormula.underlying, (term is outType).asFormula.underlying) => + if K.isSame((arg is inType).asFormula.underlying, (arg is argType).asFormula.underlying) then + have(term is outType) by Tautology.from( + funcspaceAxiom of (f := func, x := arg, A:= inType, B:= outType), + funcProof, + argProof + ) + typ + else + throw TypingException("Function " + func + " found to have type " + funcType + ", but argument " + arg + " has type " + argType + " instead of expected " + inType + ".") + + case _ => + throw TypingException("Function " + func + " expected to have function type ? |=> " + typ + ", but has type " + funcType + ". ") + case _ => + throw TypingException("Function " + func + " expected to have function type ? |=> " + typ + ", but has type " + funcType + ". Note that terms having multiple different types is only partialy supported.") + + case AppliedFunctional(label, args) => + val (argTypes, argTypesProofs) = args.map(arg => + try (innerTypecheck(context2, arg, None), lastStep) + catch + case e: TypingException => (any, any.definition of (x := arg)) //if no type could be constructed the normal way, we give it "any" + ).unzip + val labelTypes = label match + case label: TypedConstantFunctional[?] => + (label.typ, () => label.justif) +: + functionalTypingAssumptions.getOrElse(label, Nil).map(fc => (fc, () => (have( fc.formula(label.asInstanceOf) ) by Restate) )) + + case _ => functionalTypingAssumptions.getOrElse(label, Nil).map(fc => (fc, () => have( fc.formula(label.asInstanceOf) ) by Restate )) + functionalTypingAssumptions.get(label) + if labelTypes.isEmpty then + throw TypingException("Function " + label + " expected to have type (" + argTypes.mkString(", ") + ") |=> ? but is untyped.") + else + typ match + case None => + labelTypes.find((labelType, step) => + labelType.arity == args.size && + (args zip argTypes).zip(labelType.in.toSeq).forall((argAndTypes, inType) => + K.isSame((argAndTypes._1 is inType).asFormula.underlying, (argAndTypes._1 is argAndTypes._2).asFormula.underlying) // + ) + ) match + case None => + throw TypingException("Function " + label + " expected to have type (" + argTypes.mkString(", ") + ") |=> ? but is assigned " + labelTypes.mkString(" & ") + ". Note that terms having multiple different types is only partialy supported.") + case Some(labelType, step) => + val out: Class = labelType.out + + val in: Seq[Class] = labelType.in.toSeq + //val labelProp = labelType.formula(label.asInstanceOf) + val labelPropStatement = step() + val labInst = labelPropStatement.of(args: _*) + val subst = (labelType.args zip args).map((v, a) => (v := a)) + val newOut: Class = out match { + case t: Term => t.substitute(subst: _*) + case f: (Term**1 |-> Formula) @unchecked => f.substitute(subst: _*) + } + have(term is newOut) by Tautology.from( + (argTypesProofs :+ labInst ) : _* + ) + newOut + case Some(typValue) => + labelTypes.find((labelType, step) => + labelType.arity == args.size && + (args zip argTypes).zip(labelType.in.toSeq).forall((argAndTypes, inType) => + K.isSame((argAndTypes._1 is inType).asFormula.underlying, (argAndTypes._1 is argAndTypes._2).asFormula.underlying) + ) && { + val subst = (labelType.args zip args).map((v, a) => (v := a)) + val newOut: Class = labelType.out match { + case t: Term => t.substitute(subst: _*) + case f: (Term**1 |-> Formula) @unchecked => f.substitute(subst: _*) + } + K.isSame((term is newOut).asFormula.underlying, (term is typValue).asFormula.underlying) + + } + ) match + case None => + throw TypingException("Function " + label + " expected to have type (" + argTypes.mkString(", ") + ") |=> " + typValue + " but is assigned " + labelTypes.mkString(" & ") + ". Note that terms having multiple different types is only partialy supported.") + case Some(labelType, step) => + val out: Class = labelType.out + val in: Seq[Class] = labelType.in.toSeq + //val labelProp = labelType.formula(label.asInstanceOf) + val labelPropStatement = step() + have(term is typValue) by Tautology.from( + (argTypesProofs :+ labelPropStatement.of(args: _*) ) : _* + ) + typValue + + case v: Variable => + if possibleTypes.isEmpty then + throw TypingException("Variable " + v + " expected to be of type " + typ + " but is untyped.") + else throw TypingException("Variable " + v + " expected to be of type " + typ + " but is assigned " + possibleTypes.mkString(" & ") + ".") + + case c: Constant => + if possibleTypes.isEmpty then + throw TypingException("Constant " + c + " expected to be of type " + typ + " but is untyped.") + else throw TypingException("Constant " + c + " expected to be of type " + typ + " but is assigned " + possibleTypes.mkString(" & ") + ".") + + case _: AppliedFunctional => + throw Exception("Why is this not handled by the previous case? Scala reports an incomplete match") + + } + innerTypecheck(typingAssumptions, term, typ) + } + catch { + case e: TypingException => + return proof.InvalidProofTactic(e.msg) + } + } + + + } + + + + + + + + + + +} diff --git a/lisa-sets/src/main/scala/lisa/maths/settheory/types/adt/Frontend.scala b/lisa-sets/src/main/scala/lisa/maths/settheory/types/adt/Frontend.scala new file mode 100644 index 00000000..df6d157e --- /dev/null +++ b/lisa-sets/src/main/scala/lisa/maths/settheory/types/adt/Frontend.scala @@ -0,0 +1,566 @@ +package lisa.maths.settheory.types.adt + +/** + * This object provides a DSL for defining algebraic data types (ADTs) and functions over ADT in Lisa. + * For usage examples, please refer to the documentation of the package or the reference manual. + */ +object ADTSyntax { + + import ADTDefinitions.* + import lisa.maths.settheory.SetTheory.{*, given} + + /** + * Builder for defining a constructor specification. + * + * @param param the parameters of the constructor + */ + case class ConstructorBuilder (private val param: Seq[ConstructorArgument]) { + + /** + * The number of arguments the constructor takes + */ + def size: Int = param.length + + /** + * Merges the parameters of two constructors. + * + * @param b the other constructor + */ + infix def ++(b: ConstructorBuilder): ConstructorBuilder = ConstructorBuilder(param ++ b.param.toSeq) + + /** + * Converts this constructor into an ADT with a single constructor. + */ + def toADTBuilder = ADTBuilder(Seq(this)) + + /** + * Combines two constructors into an ADT. + * + * @param b the other constructor + */ + infix def |(b: ConstructorBuilder): ADTBuilder = this | b.toADTBuilder + + /** + * Adds this constructor to an ADT. + * + * @param b the ADT to which the constructor is added + */ + infix def |(b: ADTBuilder): ADTBuilder = toADTBuilder | b + + /** + * Outputs the [[UntypedConstructor]] associated with this builder. + * + * @param name the name of the constructor + */ + def build(variables1: Seq[Variable], variables2: Seq[Variable]): SyntacticConstructor = SyntacticConstructor(param, variables1, variables2) + } + + /** + * Companion object for the [[ConstructorBuilder]] class. + */ + object ConstructorBuilder { + + /** + * Creates an empty [[ConstructorBuilder]]. + */ + def empty: ConstructorBuilder = ConstructorBuilder(Seq.empty) + } + + trait ConstructorConverter[T] { + + /** + * Converts a value into a [[ConstructorBuilder]]. + */ + def apply(t: T): ConstructorBuilder + } + + /** + * Converts a value into a [[ConstructorBuilder]]. + * + * @param any the value to convert + * @param c the converter that is used for the conversion + */ + private def any_to_const[T](any: T)(using c: ConstructorConverter[T]): ConstructorBuilder = c(any) + + given unit_to_const: ConstructorConverter[Unit] with { + + /** + * Converts a unit value into a constructor taking no arguments. + */ + override def apply(u: Unit): ConstructorBuilder = ConstructorBuilder.empty + } + + given empty_to_const: ConstructorConverter[EmptyTuple] with { + + /** + * Converts an empty tuple into a constructor taking no arguments. + */ + override def apply(t: EmptyTuple): ConstructorBuilder = ConstructorBuilder.empty + } + + given term_to_const[T <: Term]: ConstructorConverter[T] with { + + /** + * Converts a term into a constructor taking one non inductive argument. + */ + override def apply(t: T): ConstructorBuilder = ConstructorBuilder(Seq(GroundType(t))) + } + + given adt_to_const[N <: Arity]: ConstructorConverter[ADT[N]] with { + + /** + * Converts an ADT into a constructor taking one inductive argument. + */ + override def apply(a: ADT[N]): ConstructorBuilder = ConstructorBuilder(Seq(Self)) + } + + given adt_tuple_to_const[N <: Arity, T <: Tuple](using ConstructorConverter[T]): ConstructorConverter[ADT[N] *: T] with { + + /** + * Converts a tuple prepended with a type into a constructor taking an argument and whose other arguments are deduced from + * applying recursively the conversion to the tuple. + */ + override def apply(t: ADT[N] *: T): ConstructorBuilder = + any_to_const(t.head) ++ any_to_const(t.tail) + } + + + given term_tuple_to_const[H <: Term, T <: Tuple](using ConstructorConverter[T]): ConstructorConverter[H *: T] with { + + /** + * Converts a tuple prepended with a type into a constructor taking an argument and whose other arguments are deduced from + * applying recursively the conversion to the tuple. + */ + override def apply(t: H *: T): ConstructorBuilder = + any_to_const(t.head) ++ any_to_const(t.tail) + } + + extension [T1](left: T1)(using c1: ConstructorConverter[T1]) + /** + * Converts two values into constructors and combines them into an ADT. + * + * @param right the other value to convert + * @param c2 the implicit converter for the second value + */ + infix def |[T2](right: T2)(using c2: ConstructorConverter[T2]): ADTBuilder = any_to_const(left) | any_to_const(right) + + /** + * Builder for defining ADT specifications. + * + * @param constructors the builders for each constructor of the ADT. + */ + case class ADTBuilder (private val constructors: Seq[ConstructorBuilder]) { + + /** + * The number of constructors in the ADT. + */ + def size: Int = constructors.length + + /** + * Combines this ADT with another one. + * + * @param b the other ADT + */ + infix def |(b: ADTBuilder): ADTBuilder = ADTBuilder(constructors ++ b.constructors) + + /** + * Adds a constructor to this ADT. + * + * @param b the constructor to add + */ + infix def |(b: ConstructorBuilder): ADTBuilder = this | b.toADTBuilder + + /** + * Converts a value into a constructor and adds it to this ADT. + * + * @param t the value to convert + * @param c the implicit converter + */ + infix def |[T](t: T)(using c: ConstructorConverter[T]): ADTBuilder = this | any_to_const(t) + + /** + * Outputs the corresponding ADT and its constructors. + * + * @tparam N the number of type variables appearing in the specification of the ADT + * @param typeVariables the type variables of the ADT + * @param names the names of the constructors and of the ADT + */ + def build[N <: Arity](typeVariables: Variable ** N, names: Seq[String]): (ADT[N], constructors[N]) = + + val trimmedNames = (if size == 0 then names else names.tail).take(size + 1) + require( + trimmedNames.length == constructors.length + 1, + s"The number of new identifiers for constructors must match the given specification.\nNew identifiers: ${names.length - 1}, number of constructors: ${constructors.length}." + ) + + val typeVarsSet = typeVariables.toSeq.toSet + val syntacticCons = constructors.map(c => + c.build(Helpers.chooseVars("x", c.size, typeVarsSet), Helpers.chooseVars("y", c.size, typeVarsSet)) + ) + val syntacticADT = SyntacticADT[N](trimmedNames.head, syntacticCons, typeVariables) + val semanticCons = trimmedNames.tail.zip(syntacticCons).map(SemanticConstructor(_, _, syntacticADT)) + val semanticADT = SemanticADT[N](syntacticADT, semanticCons) + val cons = semanticCons.map(Constructor(_)) + (ADT[N](semanticADT, cons), new constructors[N](cons : _*)) + + } + + /** + * Companion object for the [[ADTBuilder]] class. + */ + object ADTBuilder { + + /** + * Creates an empty [[ADTBuilder]]. + */ + def empty: ADTBuilder = ADTBuilder(Seq.empty) + + /** + * Creates an empty [[ADTBuilder]]. + */ + def | = empty + } + + /** + * Builder for defining polymorphic ADT specifications. + * + * @tparam N the number of type variables of the ADT + * @param typeVariable the type variables of the ADT + * @param specification the builder for ADT + */ + case class PolymorphicADTBuilder[N <: Arity](typeVariables: Variable ** N, specification: ADTBuilder) { + + /** + * Outputs the corresponding ADT and its constructors. + * + * @param names the names of the constructors and of the ADT + */ + def build(names: Seq[String]) = specification.build(typeVariables, names) + + /** + * Adds a constructor to the ADT specification + * + * @param b the builder of the constructor + */ + def | (b: ConstructorBuilder): PolymorphicADTBuilder[N] = PolymorphicADTBuilder(typeVariables, specification | b) + + /** + * Adds a constructor to the ADT specification + * + * @param t the value to be converted into a constructor + */ + def |[T] (t: T)(using ConstructorConverter[T]): PolymorphicADTBuilder[N] = | (any_to_const(t)) + } + + // Syntactic sugar for polymorphic ADT Builders + + extension (u: Unit) + def --> (builder: ADTBuilder): PolymorphicADTBuilder[0] = PolymorphicADTBuilder[0](**(), builder) + def --> (builder: ConstructorBuilder): PolymorphicADTBuilder[0] = --> (builder.toADTBuilder) + def -->[T](t: T)(using ConstructorConverter[T]): PolymorphicADTBuilder[0] = --> (any_to_const(t)) + + extension (v: Variable) + def --> (builder: ADTBuilder): PolymorphicADTBuilder[1] = PolymorphicADTBuilder[1](**(v), builder) + def --> (builder: ConstructorBuilder): PolymorphicADTBuilder[1] = --> (builder.toADTBuilder) + def -->[T](t: T)(using ConstructorConverter[T]): PolymorphicADTBuilder[1] = --> (any_to_const(t)) + + extension (v: (Variable, Variable)) + def --> (builder: ADTBuilder): PolymorphicADTBuilder[2] = PolymorphicADTBuilder[2](**(v._1, v._2), builder) + def --> (builder: ConstructorBuilder): PolymorphicADTBuilder[2] = --> (builder.toADTBuilder) + def -->[T](t: T)(using ConstructorConverter[T]): PolymorphicADTBuilder[2] = --> (any_to_const(t)) + + extension (v: (Variable, Variable, Variable)) + def --> (builder: ADTBuilder): PolymorphicADTBuilder[3] = PolymorphicADTBuilder[3](**(v._1, v._2, v._3), builder) + def --> (builder: ConstructorBuilder): PolymorphicADTBuilder[3] = --> (builder.toADTBuilder) + def -->[T](t: T)(using ConstructorConverter[T]): PolymorphicADTBuilder[3] = --> (any_to_const(t)) + + extension (v: (Variable, Variable, Variable, Variable)) + def --> (builder: ADTBuilder): PolymorphicADTBuilder[4] = PolymorphicADTBuilder[4](**(v._1, v._2, v._3, v._4), builder) + def --> (builder: ConstructorBuilder): PolymorphicADTBuilder[4] = --> (builder.toADTBuilder) + def -->[T](t: T)(using ConstructorConverter[T]): PolymorphicADTBuilder[4] = --> (any_to_const(t)) + + extension (v: (Variable, Variable, Variable, Variable, Variable)) + def --> (builder: ADTBuilder): PolymorphicADTBuilder[5] = PolymorphicADTBuilder[5](**(v._1, v._2, v._3, v._4, v._5), builder) + def --> (builder: ConstructorBuilder): PolymorphicADTBuilder[5] = --> (builder.toADTBuilder) + def -->[T](t: T)(using ConstructorConverter[T]): PolymorphicADTBuilder[5] = --> (any_to_const(t)) + + + /** + * Lists all constructors of this ADT. + */ + case class constructors[N <: Arity](cons: Constructor[N]*) + + /** + * Companion object for the [[constructors]] class. + */ + object constructors { + def unapplySeq[N <: Arity](adt: ADT[N]): Seq[Constructor[N]] = adt.constructors + } + + /** + * Contains useful macros for ADT UI + */ + object Macro { + import scala.quoted._ + + /** + * Extract all the scala identifiers defined in the same line or after an expression. + * + * @param e the expression around which the names are extracted + */ + inline def extractNames[T](e: T): Seq[String] = ${extractNames('{e})} + + /** + * Macro implementing [[this.extractNames]]. + * + * @param e the quoted expression around which the names are extracted + */ + private def extractNames[T](using Quotes)(e: Expr[T]) : Expr[Seq[String]] = + + import quotes.reflect._ + + + val subscope = Symbol.spliceOwner.owner.owner.owner + val scope = subscope.owner + val tree = scope.tree + + case class traverser(s: Symbol) extends TreeTraverser { + var reachedADT: Boolean = false + var constructorNames: Seq[String] = Seq.empty[String] + + override def traverseTree(tree: Tree)(owner: Symbol): Unit = tree match + case v : ValDef => + if !reachedADT then + if v.symbol == s then + constructorNames = constructorNames :+ v.symbol.name + reachedADT = true + else + constructorNames = constructorNames :+ v.symbol.name + + super.traverseTree(tree)(owner) + case _ => super.traverseTree(tree)(owner) + } + + val trav = traverser(subscope) + trav.traverseTree(tree)(scope) + Expr(trav.constructorNames) + } + + /** + * Syntax to define Algebraic Data Types + */ + object define { + /** + * Extracts the constructors from an ADT. + * + * @param adt the ADT + * @return a tuple containing the ADT and its constructors + */ + private def extractConstructors[N <: Arity](adt: ADT[N]): (ADT[N], constructors[N]) = (adt, constructors(adt.constructors : _*)) + + /** + * Outputs a polymorphic ADT and constructors from a user specification + * Needs to be inline in order to fetch the name of the ADT and the constructor. + * + * @param builder the builder user for specifying the ADT + */ + inline def unapply[N <: Arity](builder: PolymorphicADTBuilder[N]): (ADT[N], constructors[N]) = builder.build(Macro.extractNames(builder)) + + /** + * Outputs a (non polymorphic) ADT and constructors from a user specification. + * Needs to be inline in order to fetch the name of the ADT and the constructor. + * + * @param builder the builder user for specifying the ADT + */ + inline def unapply(builder: ADTBuilder): (ADT[0], constructors[0]) = unapply[0](() --> builder) + + /** + * Returns an ADT containing only one constructor out of a user specification. + * Needs to be inline in order to fetch the name of the ADT and the constructor. + * + * @param builder the builder of the unique constructor of the ADT + */ + private inline def unapply(builder: ConstructorBuilder): (ADT[0], constructors[0]) = unapply(builder.toADTBuilder) + + /** + * Returns an ADT isomorphic to a given type. It has only one constructor taking as only argument an element of + * the provided type. + * Needs to be inline in order to fetch the name of the ADT and the constructor. + * + * @param t type given by the user + */ + inline def unapply(t: Term): (ADT[0], constructors[0]) = unapply(term_to_const(t)) + + /** + * Returns the unit type. This is an ADT containing only one value and hence having only one + * constructor (non-inductive and taking no arguments). + * Needs to be inline in order to fetch the name of the ADT and the constructor. + * + * @param u user specification indicating that they want to generate the unit type + */ + inline def unapply(u: Unit): (ADT[0], constructors[0]) = unapply(unit_to_const(u)) + + /** + * Returns a product type (also known as tuple). This is an ADT containing only one constructor. + * Generally its arguments are non inductive as the opposite would lead to the empty type. + * Needs to be inline in order to fetch the name of the ADT and the constructor. + * + * @param t user specification of the tuple + */ + inline def unapply[N <: Arity, T <: Tuple](t: (ADT[N] | Term) *: T)(using ConstructorConverter[T]): (ADT[0], constructors[0]) = + t.head match + case a: ADT[N] => unapply(adt_tuple_to_const(a *: t.tail)) + case term: Term => unapply(any_to_const(term *: t.tail)) + } + + /** + * Converts an ADT with no type variables into a term. + */ + given adt_to_term: Conversion[ADT[0], Term] = _.applyUnsafe(**()) + + /** + * Converts a function over an ADT with no type variables into a term (i.e a set function). + */ + given fun_to_term: Conversion[ADTFunction[0], Term] = _.applyUnsafe(**()) + + /** + * Converts a constructor with no type variables into a term (i.e a set function). + */ + given constructor_to_term: Conversion[Constructor[0], Term] = _.applyUnsafe(**()) + + /** + * Mutable data structure that registers the patterns that have been filled inside a pattern matching syntax. + * + * @tparam N the type variables of the ADT + * @param comp the complementary information stored in the builder + */ + class CaseBuilder[N <: Arity, T, R](val comp : R) { + + /** + * The underlying mutable map between patterns and the body of the corresponding cases. For each + * patterns stores the variables that have been used to represent its arguments. + * + */ + private val underlying = scala.collection.mutable.Map[Constructor[N], (Seq[Variable], T)]() + + /** + * Adds a case to the pattern matching + * + * @param cons the pattern / constructor + * @param value the value next to the variables that are used for the pattern's arguments + */ + def += (cons: Constructor[N], value: (Seq[Variable], T)) = underlying += (cons -> value) + + /** + * Checks if the cases of a pattern matching are valid. Specifically, it checks that: + * - All constructors are covered + * - There are no extra cases + * - The number of variables provided by the user matches the arity of the constructor + * + * @param adt the ADT over which the pattern matching is performed + * @return an error message if the pattern matching is invalid, None otherwise + */ + def isValid(adt: ADT[N]): Option[String] = + val constructors = adt.constructors.toSet + val casesConstructors = underlying.keySet.toSet + + val constructorsMinusCases = constructors -- casesConstructors + val casesMinusConstructors = casesConstructors -- constructors + + // STEP 1: Check that all constructors are covered + if !constructorsMinusCases.isEmpty then + Some(s"Case for ${constructorsMinusCases.head.name} is missing.") + // STEP 2: Check that there are no extra cases + else if !casesMinusConstructors.isEmpty then + Some(s"${casesMinusConstructors.head.name} is not a constructor of ${adt.name}.") + else + underlying.keys.foldLeft[Option[String]](None)((acc, c) => + val vars = underlying(c)._1.toSet + // STEP 3: Check that for each case the number of variables provided by the user matches the arity of the constructor + acc.orElse(Some(s"Case ${c.name}: ${vars.size} variables were provided whereas the arity of ${c.name} is ${c.arity}.").filter(_ => vars.size != c.underlying.arity)) + ) + + /** + * Outputs an immutable map out of the underlying mutable one + */ + def build: Map[Constructor[N], (Seq[Variable], T)] = underlying.toMap + } + + /** + * Case of a a pattern matching syntax + * + * @param cons the pattern / constructor + * @param vars variables that are used to represent the arguments of the constructor + */ + case class Case[N <: Arity](cons: Constructor[N], vars: Variable*) { + + /** + * Used in the context of an induction proof. Adds the subproof corresponding to this case into a builder. + * + * @see [[Induction]] + * + * @param proof the outer scope of the induction proof + * @param line the line at which this case is defined. Usually fetched automatically by the compiler. + * Used for error reporting + * @param file the file in which this case is defined. Usually fetched automatically by the compiler. + * Used for error reporting + * @param builder the builder of the induction proof + * @param subproof the proof of the case (possibly using the induction hypothesis) + */ + def subproof (using proof: Proof, line: sourcecode.Line, file: sourcecode.File, builder: CaseBuilder[N, proof.ProofStep, (Sequent, Seq[Term], Variable)])(subproof: proof.InnerProof ?=> Unit): Unit = + val (bot, args, adtVar) = builder.comp + val prop = bot.right.head + val consTerm = appSeq(cons.underlying.term(args))(vars) + val subst = adtVar -> consTerm + + val assumptions = + (wellTypedSet(cons.underlying.semanticSignature(vars).map(p => (p._1, p._2.substitute(cons.underlying.typeVariablesSeq.zip(args).map(SubstPair(_, _)) : _*)))) + ++ + cons.underlying.syntacticSignature(vars).filter(_._2 == Self).map((v, _) => prop.substitute(adtVar -> v))) + + //val botWithAssumptions = bot.substitute(subst) ++ ((assumptions ++ proof.getAssumptions) |- ()) + val botWithAssumptions = bot.substitute(subst) ++ (assumptions |- ()) + + + + val iProof: proof.InnerProof = new proof.InnerProof(Some(botWithAssumptions)) + subproof(using iProof) + val proofStep = (new SUBPROOF(using proof)(None)(iProof)).judgement.validate(line, file).asInstanceOf[proof.ProofStep] + + def subproofWithExtraStep: proof.ProofTacticJudgement = TacticSubproof{ ip ?=> + val fullSeq = Tautology(using lisa.SetTheoryLibrary, ip)(proofStep)(botWithAssumptions) + if fullSeq.isValid then + fullSeq.validate(line, file) + else + return proof.InvalidProofTactic(s"Proof of case ${cons.name} is invalid.\nExpected: ${botWithAssumptions}.") + } + + builder += (cons, (vars, subproofWithExtraStep.validate(line, file))) + + /** + * Used in the context of a function definition. Adds the body of the case to a builder. + * + * @param body the body of this case + * @param builder the builder for the function definition + */ + def apply(body : Term)(using builder: CaseBuilder[N, Term, Unit]) = builder += (cons, (vars, body)) + } + + /** + * Defines a function over an ADT + * + * @param adt the domain of this function + * @param returnType the return type of this function + * @param name the name of this functions + * @param cases the definition of the function for each constructor + */ + def fun[N <: Arity](adt: ADT[N], returnType: Term)(using name: sourcecode.Name)(cases: CaseBuilder[N, Term, Unit] ?=> Unit): ADTFunction[N] = { + val builder = CaseBuilder[N, Term, Unit](()) + cases(using builder) + builder.isValid(adt) match + case None => + ADTFunction(SemanticFunction[N](name.value, adt.underlying, builder.build.map((k, v) => (k.underlying, v)), returnType), adt) + case Some(msg) => throw IllegalArgumentException(msg) + } + +} \ No newline at end of file diff --git a/lisa-sets/src/main/scala/lisa/maths/settheory/types/adt/Functions.scala b/lisa-sets/src/main/scala/lisa/maths/settheory/types/adt/Functions.scala new file mode 100644 index 00000000..0c67f2ea --- /dev/null +++ b/lisa-sets/src/main/scala/lisa/maths/settheory/types/adt/Functions.scala @@ -0,0 +1,134 @@ +/** + * Defines set theoretic functions over Algebraic Data Types + */ + +package lisa.maths.settheory.types.adt + +import lisa.maths.settheory.SetTheory.{_, given} +import lisa.maths.settheory.types.TypeLib.|=> +import lisa.maths.settheory.types.TypeSystem.:: +import lisa.maths.settheory.types.TypeSystem._ + +import ADTDefinitions.* +import Helpers.* +import Helpers.{/\, ===, \/} + +/** + * Set theoretic interpretation of a function over an ADT. + * + * @tparam N the number of type variables of the domain of this function + * @param name the name of this function + * @param adt the domain of this function + * @param cases the body of this function for each constructor + * @param returnType the codomain of this function + * @param line the line at which this function is defined. Usually fetched automatically by the compiler. + * Used for error reporting + * @param file the file in which this function is defined. Usually fetched automatically by the compiler. + * Used for error reporting + */ +class SemanticFunction[N <: Arity](name: String, adt: SemanticADT[N], cases: Map[SemanticConstructor[N], (Seq[Variable], Term)], returnType: Term)(using line: sourcecode.Line, file: sourcecode.File) { + + /** + * Map binding each constructor to a theorem stating that the case is well typed. + */ + private val checkReturnType: Map[SemanticConstructor[N], THM] = + (for c <- cases.keys yield + val (vars, body) = cases(c) + c -> Lemma(wellTyped(c.semanticSignature(vars)) |- body :: returnType) { + have(thesis) by TypeChecker.prove + } + ).toMap + + /** + * Type variables appearing in this function's domain. + */ + val typeVariables: Variable ** N = adt.typeVariables + + /** + * Sequence of type variables appearing in this function's domain. + */ + val typeVariablesSeq: Seq[Variable] = adt.typeVariablesSeq + + /** + * Number of type variables appearing in this function. + */ + val typeArity: N = adt.typeArity + + /** + * Full name of this function. That is the name of the function prefixed by the name of the ADT. + */ + val fullName = s"$name" + // val fullName = s"${adt.name}/$name" + + val typ = adt.term |=> returnType + + /** + * Definition of this function. + * + * Formally it is the only function whose domain is the ADT and such that for each constructor c f * (c * x1 * ... * xn) = case(c, x1, ..., xn) + */ + private val untypedDefinition = (f :: typ) /\ simplify(/\(cases.map((c, caseDef) => + val (vars, body) = caseDef + forallSeq(vars, wellTypedFormula(c.semanticSignature(vars)) ==> (f * c.appliedTerm(vars) === body)) + ))) + + /** + * Lemma --- Uniqueness of this function. + */ + private val uniqueness = Axiom(existsOne(f, untypedDefinition)) + + /** + * Set theoretic definition of the constructor. + */ + private val classFunction = FunctionDefinition(fullName, line.value, file.value)(typeVariablesSeq, f, untypedDefinition, uniqueness).label + + /** + * Identifier of this function. + */ + val id: Identifier = classFunction.id + + + /** + * Function where type variables are instantiated with schematic symbols. + */ + val term = classFunction.applySeq(typeVariablesSeq) + + /** + * Lemma --- The body of this function correpsonds to the cases provided by the user. + * + * `for each constructor c, ∀x1, ..., xn. f * (c * x1 * ... * xn) = case(c, x1, ..., xn)` + */ + val shortDefinition = cases.map((c, caseDef) => + val (vars, body) = caseDef + c -> Lemma(simplify(wellTypedFormula(c.semanticSignature(vars))) ==> (term * c.appliedTerm(vars) === body)) { + have(forall(f, (term === f) <=> untypedDefinition)) by Exact(classFunction.definition) + thenHave((term === term) <=> (term :: typ) /\ (/\(cases.map((c, caseDef) => { + val (vars, body) = caseDef + forallSeq(vars, wellTypedFormula(c.semanticSignature(vars)) ==> (term * c.appliedTerm(vars) === body)) + })))) by InstantiateForall(term) + thenHave(forallSeq(vars, wellTypedFormula(c.semanticSignature(vars)) ==> (term * c.appliedTerm(vars) === body))) by Weakening + vars.foldLeft(lastStep)((l, _) => + lastStep.statement.right.head match + case Forall(v, phi) => thenHave(phi) by InstantiateForall(v) + case _ => throw UnreachableException + ) + } + ) + + /** + * Lemma --- Introduction rule + * + * `f : ADT -> T` + * + * where `T` is the return type of this function + */ + val intro = Lemma(forallSeq(typeVariablesSeq, term :: typ)) { + have(forall(f, (term === f) <=> untypedDefinition)) by Exact(classFunction.definition) + thenHave((term === term) <=> (term :: typ) /\ (/\(cases.map((c, caseDef) => { + val (vars, body) = caseDef + forallSeq(vars, /\(wellTyped(c.semanticSignature(vars))) ==> (term * c.appliedTerm(vars) === body)) + })))) by InstantiateForall(term) + thenHave(term :: typ) by Weakening + thenHave(thesis) by QuantifiersIntro(typeVariablesSeq) + } +} diff --git a/lisa-sets/src/main/scala/lisa/maths/settheory/types/adt/Helpers.scala b/lisa-sets/src/main/scala/lisa/maths/settheory/types/adt/Helpers.scala new file mode 100644 index 00000000..5830f1aa --- /dev/null +++ b/lisa-sets/src/main/scala/lisa/maths/settheory/types/adt/Helpers.scala @@ -0,0 +1,1030 @@ +package lisa.maths.settheory.types.adt + +/** + * Tactic that proves every goal of the form: + * + * ` ... |- ..., ∀x1, ..., xn. P(x), ...` + * + * ` ..., ∀x1, ..., xn . P(x), ... |- ...` + * + * ` ... |- ..., ∃x1, ..., xn. P(x), ...` + * + * ` ..., ∃x1, ..., xn . P(x), ... |- ...` + * + * given a proof of the sequents without quantification. + */ +object QuantifiersIntro extends lisa.prooflib.ProofTacticLib.ProofTactic { + + import lisa.prooflib.SimpleDeducedSteps.Restate + import lisa.prooflib.BasicStepTactic.* + import lisa.fol.FOL.* + + /** + * Executes the tactic on a specific goal. + * + * @param lib the library that is currently being used + * @param proof the ongoing proof in which the tactic is called + * @param vars the variables that needs to be quantified + * @param fact the proof of the sequent without quantification + * @param bot the statement to prove + */ + def apply(using lib: lisa.prooflib.Library, proof: lib.Proof)(vars: Seq[Variable])(fact: proof.Fact)(bot: Sequent): proof.ProofTacticJudgement = + TacticSubproof { sp ?=> + if vars.isEmpty then + lib.have(bot) by Restate.from(fact) + else + val diff: Sequent = bot -- fact.statement + + diff match + case Sequent(s, _) if s.size == 1 => + val diffRest = bot.left -- s + val f = s.head + val fWithoutQuant = (fact.statement.left -- diffRest).head + f match + case BinderFormula(Forall, _, _) => + vars.foldRight[(sp.Fact, Formula)](fact, fWithoutQuant)( (v, acc) => + val (accFact, accFormula) = acc + val newFormula = forall(v, accFormula) + (lib.have(diffRest + newFormula |- bot.right) by LeftForall(accFact), newFormula) + ) + case BinderFormula(Exists, _, _) => + vars.foldRight[(sp.Fact, Formula)](fact, fWithoutQuant)( (v, acc) => + val (accFact, accFormula) = acc + val newFormula = exists(v, accFormula) + (lib.have(diffRest + newFormula |- bot.right) by LeftExists(accFact), newFormula) + ) + case _ => return proof.InvalidProofTactic(s"The formula that changed is not quantified: $f.") + case Sequent(_, s) if s.size == 1 => + val diffRest = bot.right -- s + val f = s.head + val fWithoutQuant = (fact.statement.right -- diffRest).head + f match + case BinderFormula(Forall, _, _) => + vars.foldRight[(sp.Fact, Formula)](fact, fWithoutQuant)( (v, acc) => + val (accFact, accFormula) = acc + val newFormula = forall(v, accFormula) + (lib.have(bot.left |- diffRest + newFormula) by RightForall(accFact), newFormula) + ) + case BinderFormula(Exists, _, _) => + vars.foldRight[(sp.Fact, Formula)](fact, fWithoutQuant)( (v, acc) => + val (accFact, accFormula) = acc + val newFormula = exists(v, accFormula) + (lib.have(bot.left |- diffRest + newFormula) by RightExists(accFact), newFormula) + ) + case _ => return proof.InvalidProofTactic(s"The formula that changed is not quantified: $f.") + case Sequent(s1, s2) if s1.isEmpty && s2.isEmpty => lib.have(bot) by Restate.from(fact) + case _ => return proof.InvalidProofTactic("Two or more formulas in the sequent have changed.") + + + } +} + +/** + * General purpose helpers. + */ +private [adt] object Helpers { + + import lisa.fol.FOL.{*, given} + + /** + * Benchmarks a block of code. + * + * @param name the name of the benchmark + * @param f the block of code to benchmark + * @return the result of the block of code and prints how long it took to execute + */ + def benchmark[T](name: String)(f: => T): T = { + val before = System.nanoTime + + val res = f + + val totalTime = (System.nanoTime - before) / 1000000 + + println(s"$name time: $totalTime ms") + + res + } + + /** + * Exception thrown when code that should not be accessed is reached. + */ + object UnreachableException extends Exception("This code should not be accessed. If you see this message, please report it to the library maintainers.") + + // ********************* + // * FIRST ORDER LOGIC * + // ********************* + + val a = variable + val b = variable + val c = variable + val d = variable + + val f = variable + val g = variable + val h = variable + + val n = variable + val m = variable + + val p = formulaVariable + val p1 = formulaVariable + val p2 = formulaVariable + val p3 = formulaVariable + val p4 = formulaVariable + + val q1 = formulaVariable + val q2 = formulaVariable + + val r = variable + val s = variable + val t = variable + + val x = variable + val y = variable + val z = variable + + val Q = predicate[1] + val P = predicate[1] + val P2 = predicate[2] + val schemPred = predicate[1] + + /** + * Formula representing whether two sequences of terms are pairwise equal. + * + * @param s2 the sequence to compare with + */ + extension (s1: Seq[Term]) def ===(s2: Seq[Term]): Formula = /\(s1.zip(s2).map(_ === _)) + + /** + * Disjunction of a sequence of formulas. + * + * @param s the formulas to which the disjunction is applied + */ + def \/(s: Iterable[Formula]): Formula = + if s.isEmpty then False + else s.fold(False)(_ \/ _) + + /** + * Conjunction of a sequence of formulas. + * + * @param s the formulas to which the conjunction is applied + */ + def /\(s: Iterable[Formula]): Formula = + if s.isEmpty then True + else s.fold(True)(_ /\ _) + + /** + * Repeats existential quantification over a sequence of variables. + * + * @param vars the variables to quantify over + * @param f the formula to which the quantifiers are applied + * @return the quantified formula + */ + def existsSeq(vars: Seq[Variable], f: Formula): Formula = + vars.foldRight(f)(exists(_, _)) + + /** + * Repeats universal quantification over a sequence of variables. + * + * @param vars the variables to quantify over + * @param f the formula to which the quantifiers are applied + * @return the quantified formula + */ + def forallSeq(vars: Seq[Variable], f: Formula): Formula = + vars.foldRight(f)(forall(_, _)) + + /** + * Simplifies a formula by removing True and False constants. + * + * @param f the formula to simplify + */ + def simplify(f: Formula): Formula = + f match + case Or(False, phi) => simplify(phi) + case Or(phi, False) => simplify(phi) + case Or(phi, psi) => simplify(phi) \/ simplify(psi) + case And(True, phi) => simplify(phi) + case And(phi, True) => simplify(phi) + case And(phi, psi) => simplify(phi) /\ simplify(psi) + case Implies(True, phi) => simplify(phi) + case Implies(phi, psi) => Implies(simplify(phi), simplify(psi)) + case _ => f + + + /** + * Picks fresh variables starting with a given prefix . + * + * @param prefix the prefix of the fresh variables + * @param size the number of fresh variables to output + * @param assigned the variables that are already used + * @param counter the index to append to the prefix + * @param acc the variables that have already been generated by this method + * + */ + def chooseVars(prefix: String, size: Int, assigned: Set[Variable] = Set.empty, counter: Int = 0, acc: Seq[Variable] = Seq.empty): Seq[Variable] = + if size == 0 then + acc + else + val newVar = Variable(s"${prefix}${counter}") + if assigned.contains(newVar) then + chooseVars(prefix, size, assigned, counter + 1, acc) + else + chooseVars(prefix, size - 1, assigned, counter + 1, acc :+ newVar) + + +} + +/** + * Definitions and helper functions for ADT. + */ +private[adt] object ADTDefinitions { + + import lisa.maths.settheory.SetTheory.* + import lisa.maths.settheory.types.TypeSystem.* + import Helpers.{/\} + + /** + * The specification of a constructor can either contain terms or a self reference, i.e. a reference to the ADT itself. + */ + trait ConstructorArgument { + /** + * Returns the term associated to a constructor argument, or in case it is a self reference, returns the term associated to the ADT. + * + * @param arg the constructor argument + * @param adt the term representing the ADT + */ + def getOrElse(adt: Term): Term = + this match { + case Self => adt + case GroundType(term) => term + } + + /** + * Substitutes the type variables of a constructor argument. + */ + def substitute(p: SubstPair*): ConstructorArgument = + this match + case Self => Self + case GroundType(t) => GroundType(t.substitute(p : _*)) + } + + /** + * A symbol for self reference + */ + case object Self extends ConstructorArgument + + /** + * Syntactic represenation of a term + * + * @param t the underlying term + */ + case class GroundType(t: Term) extends ConstructorArgument + + /** + * Shorthand for the union of the range of a function. + * + * @param f the function + */ + def unionRange(f: Term) = union(relationRange(f)) + + /** + * Shorthand for the range of a restricted function. + * + * @param f the function + * @param n the domain to which the function is restricted + */ + def restrRange(f: Term, n: Term) = relationRange(restrictedFunction(f, n)) + + /** + * Applies a sequence of arguments to a function. + * + * @param f the function + * @param args the arguments to apply + */ + def appSeq(f: Term)(args: Seq[Term]): Term = args.foldLeft(f)(_ * _) + + /** + * Converts an integer to the associated ordinal. + * + * @param n the integer to convert + */ + def toTerm(n: Int): Term = + require(n >= 0, "n must be a non-negative integer") + if n == 0 then emptySet + else successor(toTerm(n - 1)) + + /** + * Returns a sequence of formulas asserting that all terms of a sequence are well-typed. + * + * @param s the terms and their respective types + */ + def wellTyped(s: Seq[(Term, Term)]): Seq[Formula] = s.map(_ :: _) + + /** + * Returns a sequence of formulas asserting that all terms of a sequence are well-typed with respect to the + * specification of a constructor. + * + * @param s the terms and their respective type + * @param orElse the term to use in case of a self reference + */ + def wellTyped(s: Seq[(Term, ConstructorArgument)])(orElse: Term): Seq[Formula] = s.map((t, arg) => t :: arg.getOrElse(orElse)) + + /** + * Returns a set of formulas asserting that all terms of a sequence are well-typed. + * + * @param s the terms and their respective types + */ + def wellTypedSet(s: Seq[(Term, Term)]): Set[Formula] = wellTyped(s).toSet + + /** + * Returns a set of formulas asserting that all terms of a sequence are well-typed with respect to the + * specification of a constructor. + * + * @param s the terms and their respective type + * @param orElse the term to use in case of a self reference + */ + def wellTypedSet(s: Seq[(Term, ConstructorArgument)])(orElse: Term): Set[Formula] = wellTyped(s)(orElse).toSet + + /** + * Returns a formula asserting that all terms of a sequence are well-typed. + * + * @param s the terms and their respective types + */ + def wellTypedFormula(s: Seq[(Term, Term)]): Formula = /\ (wellTyped(s)) + + /** + * Returns a formula asserting that all terms of a sequence are well-typed with respect to the + * specification of a constructor. + * + * @param s the terms and their respective type + * @param orElse the term to use in case of a self reference + */ + def wellTypedFormula(s: Seq[(Term, ConstructorArgument)])(orElse: Term): Formula = /\ (wellTyped(s)(orElse)) + +} + + +/** + * List of external set theoretic theorems needed for proofs about ADT. + * Some of these theorems are not yet implemented in the library and + * will be added in the future. + */ +private [adt] object ADTHelperTheorems { + + import lisa.maths.settheory.SetTheory.{*, given} + import lisa.maths.Quantifiers.{existentialEquivalenceDistribution, equalityInExistentialQuantifier, + existentialConjunctionWithClosedFormula, equalityTransitivity} + import ADTDefinitions.* + import Helpers.* + //import lisa.maths.Quantifiers.* + + // TODO: Remove + val pair = ConstantFunctionLabel("pair", 2) + addSymbol(pair) + + val pairExtensionality = Lemma((pair(a, b) === pair(c, d)) <=> ((a === c) /\ (b === d))) { + sorry + } + + // ********************* + // * FIRST ORDER LOGIC * + // ********************* + + + /** + * Lemma --- Alternative statement of transitivity of equality. + */ + val altEqualityTransitivity = Lemma((x === y, y === z) |- x === z) { + have(thesis) by Restate.from(equalityTransitivity) + } + + /** + * Lemma --- Transitivity of equivalence. + */ + val equivalenceRewriting = Lemma((p1 <=> p2, p2 <=> p3) |- p1 <=> p3) { + have(thesis) by Tautology + } + + /** + * Lemma --- Modus ponens for equivalence. + */ + val equivalenceApply = Lemma((p1 <=> p2, p1) |- p2) { + have(thesis) by Tautology + } + + /** + * Lemma --- Top level existential quantifiers can be swapped. + */ + val existentialSwap = Lemma(∃(x, ∃(y, P2(x, y))) <=> ∃(y, ∃(x, P2(x, y)))) { + have(thesis) by Tableau + } + + /** + * Lemma --- Modus ponens for reversed equivalence. + */ + val equivalenceRevApply = Lemma((p2 <=> p1, p1) |- p2) { + have(thesis) by Tautology + } + + /** + * Lemma --- If a statement is equivalent to the conjunction of two other statements, and one of them is true, then it can be removed from the equivalence. + */ + val equivalenceAnd = Lemma((p2, p1 <=> (p2 /\ p3)) |- p1 <=> p3) { + have(thesis) by Tautology + } + + /** + * Lemma --- If two formulas are equivalent then adding a disjunction on their right side preserves the equivalence. + */ + val rightAndEquivalence = Lemma(p1 <=> p2 |- (p1 /\ p) <=> (p2 /\ p)) { + have(thesis) by Tautology + } + + /** + * Lemma --- If two formulas are equivalent then adding an implication on their left side preserves the equivalence. + */ + val impliesEquivalence = Lemma((p1 <=> p2, p3 <=> p4) |- (p1 ==> p3) <=> (p2 ==> p4)) { + have(thesis) by Tautology + } + + /** + * Lemma --- If two formulas are equivalent then adding an implication on their left side preserves the equivalence. + */ + val leftImpliesEquivalenceWeak = Lemma(p1 <=> p2 |- (p ==> p1) <=> (p ==> p2)) { + have(thesis) by Tautology + } + + /** + * Lemma --- Implication distributes over equivalence. + */ + val leftImpliesEquivalenceStrong = Lemma(p ==> (p1 <=> p2) |- (p ==> p1) <=> (p ==> p2)) { + have(thesis) by Tautology + } + + /** + * Lemma --- If there exists a unique element satisfying a predicate, then all + * other elements satisfying the predicate are equal to it. + */ + val existsOneUniqueness = Lemma((∃!(x, P(x)), P(x), P(y)) |- x === y) { + sorry + } + + // ******************* + // * NATURAL NUMBERS * + // ******************* + + // Natural numbers + val N = Constant("N") + addSymbol(N) + + /** + * Lemma --- 0 is a natural number. + * + * `0 ∈ N` + */ + val zeroIsNat = Lemma(in(emptySet, N)) { + sorry + } + + /** + * Lemma --- The natural numbers are not empty. + * + * `N != ∅` + */ + val natNotEmpty = Lemma(!(N === emptySet)) { + have(thesis) by Cut(zeroIsNat, setWithElementNonEmpty of (y := emptySet, x := N)) + } + + /** + * Lemma --- There exists a natural number. + * + * `∃n ∈ N` + */ + val existsNat = Lemma(exists(n, in(n, N))) { + have(thesis) by RightExists(zeroIsNat) + } + + /** + * Lemma --- Successor is an injective function. + * + * `n = m <=> n + 1 = m + 1` + */ + val successorInjectivity = Lemma((n === m) <=> (successor(n) === successor(m))) { + sorry + } + + /** + * Lemma --- A term is a natural number if and only if its successor is a natural number. + * + * `n ∈ N <=> n + 1 ∈ N` + */ + val successorIsNat = Lemma(in(n, N) <=> in(successor(n), N)) { + sorry + } + + /** + * Lemma --- Any number is smaller than its successor + * + * `∀n ∈ N. n < n + 1` + */ + val inSuccessor = Lemma(in(n, successor(n))) { + val uniomAxiomForward = have(exists(y, in(y, unorderedPair(n, singleton(n))) /\ in(n, y)) |- in(n, union(unorderedPair(n, singleton(n))))) by Cut( + unionAxiom of (x := unorderedPair(n, singleton(n)), z := n), + equivalenceRevApply of (p1 := exists(y, in(y, unorderedPair(n, singleton(n))) /\ in(n, y)), p2 := in(n, union(unorderedPair(n, singleton(n))))) + ) + have(in(singleton(n), unorderedPair(n, singleton(n))) /\ in(n, singleton(n))) by RightAnd( + secondElemInPair of (x := n, y := singleton(n)), + singletonHasNoExtraElements of (x := n, y := n) + ) + thenHave(exists(y, in(y, unorderedPair(n, singleton(n))) /\ in(n, y))) by RightExists + have(in(n, union(unorderedPair(n, singleton(n))))) by Cut(lastStep, uniomAxiomForward) + thenHave(union(unorderedPair(n, singleton(n))) === successor(n) |- in(n, successor(n))) by RightSubstEq.withParametersSimple( + List((union(unorderedPair(n, singleton(n))), successor(n))), + lambda(s, in(n, s)) + ) + have(thesis) by Cut(successor.shortDefinition of (x := n), lastStep) + } + + /** + * Lemma --- 0 is not the successor of any natural number. + * + * `∀n ∈ N. n + 1 != 0` + */ + val zeroIsNotSucc = Lemma(!(successor(n) === emptySet)) { + have(thesis) by Cut(inSuccessor, setWithElementNonEmpty of (y := n, x := successor(n))) + } + + /** + * Lemma --- A number is smaller or equal than another number if and only if it is strictly smaller than its successor. + * + * `m <= n <=> m < n + 1` + */ + val natSubset = Lemma(in(n, N) |- subset(m, n) <=> in(m, successor(n))) { + sorry + } + + /** + * Lemma --- The intersection of a natural number with the set of natural numbers is the number itself. + * + * `n ∩ N = n` + */ + val intersectionNat = Lemma(in(n, N) |- setIntersection(n, N) === n) { + sorry + } + + /** + * Lemma --- If a number is smaller or equal than a natural number, then it is also a natural number. + * + * `m <= n, n ∈ N |- m ∈ N` + */ + val subsetIsNat = Lemma(subset(a, b) |- in(b, N) ==> in(a, N)) { + sorry + } + + /** + * Lemma --- Induction principle for natural numbers + * + * `P(0), ∀n ∈ N. P(n) => P(n + 1) |- ∀n ∈ N. P(n)` + */ + val natInduction = Lemma((P(emptySet), forall(m, in(m, N) ==> (P(m) ==> P(successor(m))))) |- forall(n, in(n, N) ==> P(n))) { + sorry + } + + /** + * Lemma --- Every number is smaller or equal than its successor. + * + * `n <= n + 1` + */ + val subsetSuccessor = Lemma(subset(n, successor(n))) { + have(setUnion(n, singleton(n)) === union(unorderedPair(n, singleton(n))) |- subset(n, union(unorderedPair(n, singleton(n))))) by RightSubstEq.withParametersSimple( + List((setUnion(n, singleton(n)), union(unorderedPair(n, singleton(n))))), + lambda(s, subset(n, s)) + )(unionSubsetFirst of (a := n, b := singleton(n))) + have(subset(n, union(unorderedPair(n, singleton(n))))) by Cut(setUnion.shortDefinition of (x := n, y := singleton(n)), lastStep) + thenHave(successor(n) === union(unorderedPair(n, singleton(n))) |- subset(n, successor(n))) by RightSubstEq.withParametersSimple( + List((successor(n), union(unorderedPair(n, singleton(n))))), + lambda(s, subset(n, s)) + ) + have(thesis) by Cut(successor.shortDefinition of (x := n), lastStep) + } + + // ************* + // * FUNCTIONS * + // ************* + + /** + * Lemma --- Range introduction and elimination rules. If en element is in the image of a function, then it has a preimage inside its domain. + * + * `functional(f) |- y ⊆ Im(f) <=> ∃x ∈ Dom(f). f(x) = y` + */ + val functionRangeMembership = Lemma(functional(f) |- in(y, relationRange(f)) <=> ∃(x, in(x, relationDomain(f)) /\ (app(f, x) === y))) { + sorry + } + + /** + * Lemma --- The restriction of a function is still a function. + * + * `functional(f) |- functional(f|x)` + */ + val functionalRestrictedFunction = Lemma(functional(f) |- functional(restrictedFunction(f, x))) { + sorry + } + + /** + * Lemma --- If an element is in the image of a restricted function, then it has a preimage inside its domain. + * + * `functional(f) |- y ⊆ Im(f) <=> ∃x ∈ d ∩ Dom(f). f|d(x) = y` + */ + val restrictedFunctionRangeMembership = Lemma(functional(f) |- in(y, relationRange(restrictedFunction(f, d))) <=> ∃(x, in(x, d ∩ relationDomain(f)) /\ (app(restrictedFunction(f, d), x) === y))) { + have(functional(f) |- in(y, relationRange(restrictedFunction(f, d))) <=> ∃(x, in(x, relationDomain(restrictedFunction(f, d))) /\ (app(restrictedFunction(f, d), x) === y))) by Cut( + functionalRestrictedFunction of (x := d), + functionRangeMembership of (f := restrictedFunction(f, d)) + ) + thenHave(functional(f) |- in(y, relationRange(restrictedFunction(f, d))) <=> ∃(x, in(x, d ∩ relationDomain(f)) /\ (app(restrictedFunction(f, d), x) === y))) by Substitution.ApplyRules( + restrictedFunctionDomain of (x := d) + ) + } + + /** + * Lemma --- Characterization of the union of the range of a function. + * + * `∪ Im(h) = {z | ∃n ∈ Dom(h). z ∈ h(n)}` + */ + val unionRangeMembership = Lemma(functional(h) |- in(z, unionRange(h)) <=> exists(n, in(n, relationDomain(h)) /\ in(z, app(h, n)))) { + val iffAfterAnd = have(functional(h) |- (y ∈ relationRange(h) /\ z ∈ y) <=> ∃(m, m ∈ relationDomain(h) /\ (app(h, m) === y)) /\ z ∈ y) by Cut( + functionRangeMembership of (f := h), + rightAndEquivalence of (p1 := y ∈ relationRange(h), p2 := ∃(m, m ∈ relationDomain(h) /\ (app(h, m) === y)), p := z ∈ y) + ) + have(functional(h) |- (y ∈ relationRange(h) /\ z ∈ y) <=> ∃(m, m ∈ relationDomain(h) /\ (app(h, m) === y) /\ z ∈ y)) by Apply(equivalenceRewriting).on( + iffAfterAnd, + existentialConjunctionWithClosedFormula of (P := lambda(m, m ∈ relationDomain(h) /\ (app(h, m) === y)), p := z ∈ y) + ) + + thenHave(functional(h) |- ∀(y, (y ∈ relationRange(h) /\ z ∈ y) <=> ∃(m, m ∈ relationDomain(h) /\ (app(h, m) === y) /\ z ∈ y))) by RightForall + + val beforeExSwap = have(functional(h) |- ∃(y, y ∈ relationRange(h) /\ z ∈ y) <=> ∃(y, ∃(m, m ∈ relationDomain(h) /\ (app(h, m) === y) /\ z ∈ y))) by Cut( + lastStep, + existentialEquivalenceDistribution of ( + P := lambda(y, y ∈ relationRange(h) /\ z ∈ y), + Q := lambda(y, ∃(m, m ∈ relationDomain(h) /\ (app(h, m) === y) /\ z ∈ y)) + ) + ) + + have(∃(y, ∃(m, m ∈ relationDomain(h) /\ (app(h, m) === y) /\ z ∈ y)) <=> ∃(m, ∃(y, m ∈ relationDomain(h) /\ z ∈ y /\ (app(h, m) === y)))) subproof { + + have(m ∈ relationDomain(h) /\ (app(h, m) === y) /\ z ∈ y <=> m ∈ relationDomain(h) /\ z ∈ y /\ (app(h, m) === y)) by Restate + thenHave(forall(y, m ∈ relationDomain(h) /\ (app(h, m) === y) /\ z ∈ y <=> m ∈ relationDomain(h) /\ z ∈ y /\ (app(h, m) === y))) by RightForall + have(∃(y, m ∈ relationDomain(h) /\ (app(h, m) === y) /\ z ∈ y) <=> ∃(y, m ∈ relationDomain(h) /\ z ∈ y /\ (app(h, m) === y))) by Cut( + lastStep, + existentialEquivalenceDistribution of ( + P := lambda(y, m ∈ relationDomain(h) /\ (app(h, m) === y) /\ z ∈ y), + Q := lambda(y, m ∈ relationDomain(h) /\ z ∈ y /\ (app(h, m) === y)) + ) + ) + thenHave(forall(m, ∃(y, m ∈ relationDomain(h) /\ (app(h, m) === y) /\ z ∈ y) <=> ∃(y, m ∈ relationDomain(h) /\ z ∈ y /\ (app(h, m) === y)))) by RightForall + have(∃(m, ∃(y, m ∈ relationDomain(h) /\ (app(h, m) === y) /\ z ∈ y)) <=> ∃(m, ∃(y, m ∈ relationDomain(h) /\ z ∈ y /\ (app(h, m) === y)))) by Cut( + lastStep, + existentialEquivalenceDistribution of ( + P := lambda(y, ∃(y, m ∈ relationDomain(h) /\ (app(h, m) === y) /\ z ∈ y)), + Q := lambda(y, ∃(y, m ∈ relationDomain(h) /\ z ∈ y /\ (app(h, m) === y))) + ) + ) + have(thesis) by Apply(equivalenceRewriting).on(lastStep, existentialSwap of (P2 := lambda((y, m), m ∈ relationDomain(h) /\ (app(h, m) === y) /\ z ∈ y))) + } + + val introM = + have(functional(h) |- ∃(y, y ∈ relationRange(h) /\ z ∈ y) <=> ∃(m, ∃(y, m ∈ relationDomain(h) /\ z ∈ y /\ (app(h, m) === y)))) by Apply(equivalenceRewriting).on(beforeExSwap, lastStep) + + have( + ∀(m, (∃(y, m ∈ relationDomain(h) /\ z ∈ y /\ (app(h, m) === y))) <=> (m ∈ relationDomain(h) /\ z ∈ app(h, m))) + ) by RightForall(equalityInExistentialQuantifier of (P := lambda(y, m ∈ relationDomain(h) /\ z ∈ y), y := app(h, m))) + + have( + ∃(m, (∃(y, m ∈ relationDomain(h) /\ z ∈ y /\ (app(h, m) === y)))) <=> ∃(m, m ∈ relationDomain(h) /\ z ∈ app(h, m)) + ) by Cut( + lastStep, + existentialEquivalenceDistribution of ( + P := lambda(m, ∃(y, m ∈ relationDomain(h) /\ z ∈ y /\ (app(h, m) === y))), + Q := lambda(m, m ∈ relationDomain(h) /\ z ∈ app(h, m)) + ) + ) + + have(functional(h) |- ∃(y, y ∈ relationRange(h) /\ z ∈ y) <=> ∃(m, m ∈ relationDomain(h) /\ z ∈ app(h, m))) by Apply(equivalenceRewriting).on( + introM, + lastStep + ) + + have(thesis) by Apply(equivalenceRewriting).on( + lastStep, + unionAxiom.asInstanceOf + ) + } + + // ************* + // * EMPTYNESS * + // ************* + + /** + * Lemma --- The union of the empty set is the empty set. + * + * `∪ ∅ = ∅` + */ + val unionEmpty = Lemma(union(emptySet) === emptySet) { + sorry + } + + /** + * Lemma --- Restricting the domain of a function to the empty set yields the empty set. + * + * `h|∅ = ∅` + */ + val restrictedFunctionEmptyDomain = Lemma(restrictedFunction(h, emptySet) === emptySet) { + sorry + } + + /** + * Lemma --- If the domain of a function is non empty, then the function is non empty as well. + * + * `Dom(h) != ∅ |- h != ∅` + */ + val nonEmptyDomain = Lemma(!(relationDomain(h) === emptySet) |- !(h === emptySet)) { + sorry + } + + /** + * Lemma --- A superset of a non empty set is non empty. + * + * `x ⊆ y, x != ∅ |- y != ∅` + */ + val subsetNotEmpty = Lemma((subset(x, y), !(x === emptySet)) |- !(y === emptySet)) { + val subst = have(y === emptySet |- y === emptySet) by Hypothesis + have((subset(x, emptySet), y === emptySet) |- (x === emptySet)) by Apply(equivalenceApply of (p1 := subset(x, emptySet))).on(emptySetIsItsOwnOnlySubset.asInstanceOf) + thenHave((subset(x, y), y === emptySet) |- (x === emptySet)) by Substitution.ApplyRules(subst) + } + + /** + * Theorem --- The range of the empty relation is empty. + * + * `range(∅) = ∅` + * + */ + val rangeEmpty = Theorem(relationRange(emptySet) === emptySet) { + import lisa.maths.settheory.SetTheory + + have(!in(SetTheory.pair(a, t), emptySet)) by Exact(emptySetAxiom) + thenHave(forall(a, !in(SetTheory.pair(a, t), emptySet))) by RightForall + val s0 = thenHave(!exists(a, in(SetTheory.pair(a, t), emptySet))) by Restate + + have(!in(t, emptySet)) by Exact(emptySetAxiom) + have(in(t, emptySet) <=> exists(a, in(SetTheory.pair(a, t), emptySet))) by Tautology.from(lastStep, s0) + val defRHS = thenHave(forall(t, in(t, emptySet) <=> exists(a, in(SetTheory.pair(a, t), emptySet)))) by RightForall + + have((relationRange(emptySet) === emptySet) <=> forall(t, in(t, emptySet) <=> exists(a, in(SetTheory.pair(a, t), emptySet)))) by InstantiateForall(emptySet)( + relationRange.definition of (r := emptySet, z := emptySet) + ) + have(relationRange(emptySet) === emptySet) by Tautology.from(defRHS, lastStep) + } + + + /** + * Lemma --- The range of the empty function is empty. + * + * `Im(∅) = ∅` + */ + val unionRangeEmpty = Lemma(unionRange(emptySet) === emptySet) { + have(unionRange(emptySet) === unionRange(emptySet)) by RightRefl + thenHave(unionRange(emptySet) === union(emptySet)) by Substitution.ApplyRules(rangeEmpty) + thenHave(thesis) by Substitution.ApplyRules(unionEmpty) + } + + /** + * Lemma --- If a function and a domain are non empty, then restricting this function to this + * domain yields a non empty set. + * + * `h != ∅, d != ∅ |- h|d != ∅` + */ + val restrictedFunctionNotEmpty = Lemma((!(h === emptySet), !(d === emptySet)) |- !(restrictedFunction(h, d) === emptySet)) { + sorry + } + + // **************** + // * MONOTONICITY * + // **************** + + /** + * Lemma --- Union is a monotonic operation with respect to set inclusion. + * + * `x ⊆ y |- ∪ x ⊆ ∪ y` + */ + val unionMonotonic = Lemma(subset(x, y) |- subset(union(x), union(y))) { + sorry + } + + /** + * Lemma --- Range is a monotonic operation with respect to set inclusion. + * + * `f ⊆ g |- Im(f) ⊆ Im(g)` + */ + val rangeMonotonic = Lemma(subset(f, g) |- subset(relationRange(f), relationRange(g))) { + sorry + } + + /** + * Lemma --- The union of the range is a monotonic operation with respect to set inclusion. + * + * `f ⊆ g |- ∪ Im(f) ⊆ ∪ Im(g)` + */ + val unionRangeMonotonic = Lemma(subset(f, g) |- subset(unionRange(f), unionRange(g))) { + have(thesis) by Apply(unionMonotonic).on(rangeMonotonic.asInstanceOf) + } + + /** + * Lemma --- If two implications are true then disjuncting on both sides is also a valid implication. + */ + val disjunctionsImplies = Lemma((p1 ==> p2, q1 ==> q2) |- (p1 \/ q1) ==> (p2 \/ q2)) { + + val right = have((p1 ==> p2, q1 ==> q2, p1) |- p2 \/ q2) by Restate + val left = have((p1 ==> p2, q1 ==> q2, q1) |- p2 \/ q2) by Restate + + have((p1 ==> p2, q1 ==> q2, p1 \/ q1) |- p2 \/ q2) by LeftOr(left, right) + } + + /** + * Lemma --- If a class function F (whose representation is P) is monotonic then with respect to set inclusion, then S -> F(S) ∪ S is also + * a monotonic function. + * + * `s ⊆ t, F(s) ⊆ F(t) |- F(s) ∪ s ⊆ F(t) ∪ t` + */ + val unionPreimageMonotonic = Lemma((subset(s, t), P(s) ==> P(t)) |- (P(s) \/ in(x, s)) ==> (P(t) \/ in(x, t))) { + have(subset(s, t) |- forall(z, in(z, s) ==> in(z, t))) by Cut( + subsetAxiom of (x := s, y := t), + equivalenceApply of (p1 := subset(s, t), p2 := forall(z, in(z, s) ==> in(z, t))) + ) + thenHave(subset(s, t) |- in(x, s) ==> in(x, t)) by InstantiateForall(x) + have(thesis) by Cut(lastStep, disjunctionsImplies of (p1 := in(x, s), p2 := in(x, t), q1 := P(s), q2 := P(t))) + } + + /** + * Lemma --- Resticting a function to a smaller domain yields a subset of the original function. + * + * `x ⊆ y |- f|x ⊆ f|y` + */ + val restrictedFunctionDomainMonotonic = Lemma(subset(x, y) |- subset(restrictedFunction(f, x), restrictedFunction(f, y))) { + sorry + } + + // ******************* + // * SPECIFIC LEMMAS * + // ******************* + + /** + * Lemma --- Characterization of the union of the range of a cumulative function restricted to the successor of a natural number. + * + * `cumulative(h) and Dom(h) = N |- ∪ Im(h|n + 1) = h(n)` + */ + val unionRangeCumulativeRestrictedFunction = + Lemma((functional(h), relationDomain(h) === N, in(n, N), ∀(m, subset(m, n) ==> subset(app(h, m), app(h, n)))) |- unionRange(restrictedFunction(h, successor(n))) === app(h, n)) { + + val domainSubset = have(in(n, N) |- setIntersection(successor(n), N) === successor(n)) by Apply(intersectionNat).on(equivalenceApply of (p1 := in(n, N)), successorIsNat.asInstanceOf) + + have(functional(h) |- (y ∈ restrRange(h, successor(n)) /\ z ∈ y) <=> ∃(m, m ∈ (successor(n) ∩ relationDomain(h)) /\ (app(restrictedFunction(h, successor(n)), m) === y)) /\ z ∈ y) by Cut( + restrictedFunctionRangeMembership of (f := h, d := successor(n)), + rightAndEquivalence of (p1 := y ∈ restrRange(h, successor(n)), p2 := ∃(m, m ∈ (successor(n) ∩ relationDomain(h)) /\ (app(restrictedFunction(h, successor(n)), m) === y)), p := z ∈ y) + ) + + thenHave( + (functional(h), relationDomain(h) === N) |- (y ∈ restrRange(h, successor(n)) /\ z ∈ y) <=> ∃(m, m ∈ (successor(n) ∩ N) /\ (app(restrictedFunction(h, successor(n)), m) === y)) /\ z ∈ y + ) by RightSubstEq.withParametersSimple( + List((relationDomain(h), N)), + lambda(s, (y ∈ restrRange(h, successor(n)) /\ z ∈ y) <=> ∃(m, m ∈ (successor(n) ∩ s) /\ (app(restrictedFunction(h, successor(n)), m) === y)) /\ z ∈ y) + ) + + thenHave( + (functional(h), in(n, N), relationDomain(h) === N, successor(n) ∩ N === successor(n)) |- (y ∈ restrRange(h, successor(n)) /\ z ∈ y) <=> ∃( + m, + m ∈ (successor(n) ∩ N) /\ (app(restrictedFunction(h, successor(n)), m) === y) + ) /\ z ∈ y + ) by Weakening + + thenHave( + (functional(h), in(n, N), relationDomain(h) === N, successor(n) ∩ N === successor(n)) |- (y ∈ restrRange(h, successor(n)) /\ z ∈ y) <=> ∃( + m, + m ∈ successor(n) /\ (app(restrictedFunction(h, successor(n)), m) === y) + ) /\ z ∈ y + ) by RightSubstEq.withParametersSimple( + List((successor(n) ∩ N, successor(n))), + lambda(s, (y ∈ restrRange(h, successor(n)) /\ z ∈ y) <=> ∃(m, m ∈ s /\ (app(restrictedFunction(h, successor(n)), m) === y)) /\ z ∈ y) + ) + + have( + (functional(h), in(n, N), relationDomain(h) === N) |- (y ∈ restrRange(h, successor(n)) /\ z ∈ y) <=> ∃(m, m ∈ successor(n) /\ (app(restrictedFunction(h, successor(n)), m) === y)) /\ z ∈ y + ) by Cut(domainSubset, lastStep) + + have( + (functional(h), in(n, N), relationDomain(h) === N) |- (y ∈ restrRange(h, successor(n)) /\ z ∈ y) <=> ∃(m, m ∈ successor(n) /\ (app(restrictedFunction(h, successor(n)), m) === y) /\ z ∈ y) + ) by Apply(equivalenceRewriting).on( + lastStep, + existentialConjunctionWithClosedFormula of (P := lambda(m, m ∈ successor(n) /\ (app(restrictedFunction(h, successor(n)), m) === y)), p := z ∈ y) + ) + + thenHave( + (functional(h), in(n, N), relationDomain(h) === N) |- ∀( + y, + (y ∈ restrRange(h, successor(n)) /\ z ∈ y) <=> ∃(m, m ∈ successor(n) /\ (app(restrictedFunction(h, successor(n)), m) === y) /\ z ∈ y) + ) + ) by RightForall + + have( + (functional(h), in(n, N), relationDomain(h) === N) |- ∃(y, y ∈ restrRange(h, successor(n)) /\ z ∈ y) <=> ∃( + y, + ∃(m, m ∈ successor(n) /\ (app(restrictedFunction(h, successor(n)), m) === y) /\ z ∈ y) + ) + ) by Cut( + lastStep, + existentialEquivalenceDistribution of ( + P := lambda(y, y ∈ restrRange(h, successor(n)) /\ z ∈ y), + Q := lambda(y, ∃(m, m ∈ successor(n) /\ (app(restrictedFunction(h, successor(n)), m) === y) /\ z ∈ y)) + ) + ) + + val introM = + thenHave( + (functional(h), in(n, N), relationDomain(h) === N) |- ∃(y, y ∈ restrRange(h, successor(n)) /\ z ∈ y) <=> ∃( + m, + ∃(y, m ∈ successor(n) /\ z ∈ y /\ (app(restrictedFunction(h, successor(n)), m) === y)) + ) + ) by Tableau + + have((∃(y, m ∈ successor(n) /\ z ∈ y /\ (app(restrictedFunction(h, successor(n)), m) === y))) <=> (m ∈ successor(n) /\ z ∈ app(restrictedFunction(h, successor(n)), m))) by Exact( + equalityInExistentialQuantifier of (P := lambda(y, m ∈ successor(n) /\ z ∈ y)) + ) + + thenHave(m ∈ successor(n) |- (∃(y, m ∈ successor(n) /\ z ∈ y /\ (app(restrictedFunction(h, successor(n)), m) === y))) <=> (m ∈ successor(n) /\ z ∈ app(h, m))) by Substitution.ApplyRules( + restrictedFunctionApplication + ) + thenHave((∃(y, m ∈ successor(n) /\ z ∈ y /\ (app(restrictedFunction(h, successor(n)), m) === y))) <=> (m ∈ successor(n) /\ z ∈ app(h, m))) by Tableau + + thenHave(subset(m, n) <=> m ∈ successor(n) |- (∃(y, m ∈ successor(n) /\ z ∈ y /\ (app(restrictedFunction(h, successor(n)), m) === y))) <=> (subset(m, n) /\ z ∈ app(h, m))) by RightSubstIff + .withParametersSimple( + List((m ∈ successor(n), subset(m, n))), + lambda(p, (∃(y, m ∈ successor(n) /\ z ∈ y /\ (app(restrictedFunction(h, successor(n)), m) === y))) <=> (p /\ z ∈ app(h, m))) + ) + + have(in(n, N) |- (∃(y, m ∈ successor(n) /\ z ∈ y /\ (app(restrictedFunction(h, successor(n)), m) === y))) <=> (subset(m, n) /\ z ∈ app(h, m))) by Cut(natSubset, lastStep) + + thenHave( + in(n, N) |- ∀(m, (∃(y, m ∈ successor(n) /\ z ∈ y /\ (app(restrictedFunction(h, successor(n)), m) === y))) <=> (subset(m, n) /\ z ∈ app(h, m))) + ) by RightForall + + have( + in(n, N) |- ∃(m, (∃(y, m ∈ successor(n) /\ z ∈ y /\ (app(restrictedFunction(h, successor(n)), m) === y)))) <=> ∃(m, subset(m, n) /\ z ∈ app(h, m)) + ) by Cut( + lastStep, + existentialEquivalenceDistribution of ( + P := lambda(m, ∃(y, m ∈ successor(n) /\ z ∈ y /\ (app(restrictedFunction(h, successor(n)), m) === y))), + Q := lambda(m, subset(m, n) /\ z ∈ app(h, m)) + ) + ) + + have((functional(h), in(n, N), relationDomain(h) === N) |- ∃(y, y ∈ restrRange(h, successor(n)) /\ z ∈ y) <=> ∃(m, subset(m, n) /\ z ∈ app(h, m))) by Apply(equivalenceRewriting).on( + introM, + lastStep + ) + + val unionIsExists = + have((functional(h), in(n, N), relationDomain(h) === N) |- z ∈ unionRange(restrictedFunction(h, successor(n))) <=> ∃(m, subset(m, n) /\ z ∈ app(h, m))) by Apply(equivalenceRewriting).on( + lastStep, + unionAxiom.asInstanceOf + ) + + val cumulativeAssumption = ∀(m, subset(m, n) ==> subset(app(h, m), app(h, n))) + + have(cumulativeAssumption |- ∃(m, subset(m, n) /\ z ∈ app(h, m)) <=> z ∈ app(h, n)) subproof { + val seq1 = have(z ∈ app(h, n) |- z ∈ app(h, n)) by Hypothesis + have(z ∈ app(h, n) |- subset(n, n) /\ z ∈ app(h, n)) by RightAnd(seq1, subsetReflexivity of (x := n)) + thenHave(z ∈ app(h, n) |- ∃(m, subset(m, n) /\ z ∈ app(h, m))) by RightExists + val backward = thenHave(cumulativeAssumption |- z ∈ app(h, n) ==> ∃(m, subset(m, n) /\ z ∈ app(h, m))) by Weakening + + have(cumulativeAssumption |- cumulativeAssumption) by Hypothesis + thenHave(cumulativeAssumption |- subset(m, n) ==> subset(app(h, m), app(h, n))) by InstantiateForall(m) + have((cumulativeAssumption, subset(m, n), z ∈ app(h, m)) |- forall(z, z ∈ app(h, m) ==> z ∈ app(h, n))) by Apply(equivalenceApply).on( + lastStep, + subsetAxiom + ) + thenHave((cumulativeAssumption, subset(m, n) /\ z ∈ app(h, m)) |- z ∈ app(h, n)) by InstantiateForall(z) + thenHave((cumulativeAssumption, ∃(m, subset(m, n) /\ z ∈ app(h, m))) |- z ∈ app(h, n)) by LeftExists + val forward = thenHave(cumulativeAssumption |- ∃(m, subset(m, n) /\ z ∈ app(h, m)) ==> z ∈ app(h, n)) by RightImplies + + have(thesis) by RightIff(forward, backward) + } + + have((functional(h), in(n, N), relationDomain(h) === N, cumulativeAssumption) |- (z ∈ unionRange(restrictedFunction(h, successor(n)))) <=> z ∈ app(h, n)) by Apply(equivalenceRewriting).on( + unionIsExists, + lastStep + ) + thenHave((functional(h), in(n, N), relationDomain(h) === N, cumulativeAssumption) |- ∀(z, z ∈ unionRange(restrictedFunction(h, successor(n))) <=> z ∈ app(h, n))) by RightForall + + have(thesis) by Apply(equivalenceApply).on(lastStep, extensionalityAxiom.asInstanceOf) + } + +} diff --git a/lisa-sets/src/main/scala/lisa/maths/settheory/types/adt/Tactics.scala b/lisa-sets/src/main/scala/lisa/maths/settheory/types/adt/Tactics.scala new file mode 100644 index 00000000..cb825079 --- /dev/null +++ b/lisa-sets/src/main/scala/lisa/maths/settheory/types/adt/Tactics.scala @@ -0,0 +1,174 @@ +/** + * Defines a set of tactics to reason on Algebraic Data Types + */ + +package lisa.maths.settheory.types.adt + +import lisa.maths.settheory.SetTheory.{*, given} +import ADTDefinitions.* +import Helpers.* + +/** + * Tactic performing a structural induction proof over an algebraic data type. + * + * ===Usage=== + * {{{ + * have(forall(x, x :: adt => P(x)) /*or*/ x :: adt |- P(x)) by Induction(x, adt) { + * Case(c1, x1, ..., xn) subproof { + * // proof of P(xi) /\ ... P(xj) => P(c1(x1, ..., xn)) + * } + * ... + * Case(cm, x1, ..., xk) subproof { + * // proof of P(xi) /\ ... P(xj) => P(c1(x1, ..., xn')) + * } + * } + * }}} + * + * x and adt are inferred from the context if not provided by the user. + * + * Supports only 1 formula on the right hand side of the sequent. + * @param expectedVar the variable on which the induction is performed + * @param expectedADT the algebraic data type on which the induction is performed + */ +class Induction[M <: Arity](expectedVar: Option[Variable], expectedADT: Option[ADT[M]]) extends lisa.prooflib.ProofTacticLib.ProofTactic { + + /** + * Given a proof of the claim for each case (possibly using the induction hypothesis), + * reassemble them to generate a proof of the claim of the form + * `∀x. x :: adt => P(x)` + * + * @param proof the proof in which the induction is performed + * @param cases the proofs of the claim for each case in addition to the variables used by the user + * @param inductionVariable the variable over which the induction is performed + * @param adt the algebraic data type to perform induction on + * @param prop the property to prove //TODO: Change to a lambda expression (Scala 3.4.2) + */ + private def proveForallPredicate[N <: Arity](using proof: lisa.SetTheoryLibrary.Proof)(cases: Map[Constructor[N], (Seq[Variable], proof.Fact)], inductionVariable: Variable, adt: ADT[N], typeVariablesSubst: Seq[Term], propFun: Term => Formula, context: Set[Formula]): proof.Fact = + + val prop = lambda[Term, Formula](x, propFun(x)) + val typeVariablesSubstPairs = adt.typeVariables.toSeq.zip(typeVariablesSubst).map(SubstPair(_, _)) + val instTerm = adt(typeVariablesSubst : _*) + + adt.constructors.foldLeft[proof.Fact](adt.induction.of((typeVariablesSubstPairs :+ (P := prop)): _*)) ( (acc, c) => + val inductiveCaseProof = cases(c)._1.zip(c.underlying.underlying.specification.map(_.substitute(typeVariablesSubstPairs : _*))).foldRight[proof.Fact](cases(c)._2) ( (el, acc2) => + val (v, ty) = el + val accRight: Formula = acc2.statement.right.head + ty match + case Self => + have((acc2.statement -<? prop(v)).left |- prop(v) ==> accRight) by Weakening(acc2) + thenHave((lastStep.statement -<? (v :: instTerm)).left |- v :: instTerm ==> (prop(v) ==> accRight)) by Weakening + thenHave(lastStep.statement.left |- forall(v, v :: instTerm ==> (prop(v) ==> accRight))) by RightForall + case GroundType(t)=> + thenHave((acc2.statement -<? (v :: t)).left |- v :: t ==> accRight) by Weakening + thenHave(lastStep.statement.left |- forall(v, v :: t ==> accRight)) by RightForall + ) + acc.statement.right.head match + case Implies(trueInd, rest) => + // println(s"Case: ${c.fullName}") + // println(isSame(trueInd, inductiveCaseProof.statement.right.head)) + // println(inductiveCaseProof.statement) + // println(" + ") + // println(acc.statement) + // println(" = ") + // println((acc.statement.left ++ inductiveCaseProof.statement.left) |- rest) + have((acc.statement.left ++ inductiveCaseProof.statement.left) |- rest) by Sorry//Cut(inductiveCaseProof, acc) + case _ => throw UnreachableException + ) + thenHave(context |- forall(inductionVariable, inductionVariable :: instTerm ==> prop(inductionVariable))) by Tautology //Change + + + + /** + * Infers the variable, the ADT and the arguments of the ADT from a formula of the form `x :: ADT(T1, ..., Tn)`. + * + * @param f the formula to infer these elements from + */ + def inferArguments(f: Formula): Option[(Variable, ADT[?], Seq[Term])] = + def checkFoundArguments(foundVar: Variable, foundADT: ADT[?], args: Seq[Term]): Option[(Variable, ADT[?], Seq[Term])] = + (expectedVar, expectedADT) match + case (Some(v), _) if v != foundVar => None + case (_, Some(a)) if a != foundADT => None + case _ => Some((foundVar, foundADT, args)) + + f match + case TypeAssignment(Variable(id), ADT(foundADT, args)) => + checkFoundArguments(Variable(id), foundADT, args) + case AppliedPredicate(in, Seq[Term](Variable(id), ADT(foundADT, args))) => + checkFoundArguments(Variable(id), foundADT, args) + case _ => + None + + /** + * Infers the variable, the ADT and the arguments of the ADT from a set of formula + * containing one is of the form `x :: ADT(T1, ..., Tn)`. + * + * @param s the set of formula to infer these elements from + */ + def inferArguments(s: Set[Formula]): Option[(Variable, ADT[?], Seq[Term])] = + s.foldLeft[Option[(Variable, ADT[?], Seq[Term])]](None)((acc, prem) => + acc.orElse(inferArguments(prem)) + ) + + /** + * Infers the variable, the ADT and the arguments of the ADT from a sequent whose one of the premises + * is of the form `x :: ADT(T1, ..., Tn)`. + * + * @param seq the sequent to infer these elements from + */ + def inferArguments(seq: Sequent): Option[(Variable, ADT[?], Seq[Term], Option[Formula])] = + inferArguments(seq.left).map(p => (p._1, p._2, p._3, None)) + .orElse( + seq.right.head match + case Forall(x, Implies(assignment, prop)) => + inferArguments(assignment).filter(p => p._1 == x).map(p => (p._1, p._2, p._3, Some(prop))) + case _ => None + ) + + /** + * Given a proof of the claim for each case (possibly using the induction hypothesis), + * reassemble the subproofs to generate a proof of the claim for every element of the ADT. + * + * @tparam N the arity of the ADT + * @param proof the scope in which the induction is performed + * @param cases the cases to prove. A [[CaseBuilder]] is a mutable data structure that register every case that + * has been added to the tactic. + * @param bot the claim + */ + def apply[N <: Arity](using proof: lisa.SetTheoryLibrary.Proof)(cases: ADTSyntax.CaseBuilder[N, proof.ProofStep, (Sequent, Seq[Term], Variable)] ?=> Unit)(bot: Sequent): proof.ProofTacticJudgement = + inferArguments(bot) match + case Some((inferedVar, inferedADT, inferedArgs, inferedProp)) => + + val prop = inferedProp.getOrElse(bot.right.head) + val propFunction = (t: Term) => inferedProp.getOrElse(bot.right.head).substitute(inferedVar -> t) + val assignment = inferedVar :: inferedADT(inferedArgs : _*) + val context = (if inferedProp.isDefined then bot else bot -<< assignment).left + val builder = ADTSyntax.CaseBuilder[N, proof.ProofStep, (Sequent, Seq[Term], Variable)]((context |- prop, inferedArgs, inferedVar)) + cases(using builder) + + builder.isValid(inferedADT.asInstanceOf[ADT[N]]) match + case None => + TacticSubproof { sp ?=> + proveForallPredicate(using sp)(builder.build, inferedVar, inferedADT.asInstanceOf[ADT[N]], inferedArgs, propFunction, context) + if !inferedProp.isDefined then + lastStep.statement.right.head match + case Forall(_, phi) => + thenHave(context |- phi) by InstantiateForall(inferedVar) + case _ => throw UnreachableException + + thenHave(bot) by Tautology + } + case Some(msg) => proof.InvalidProofTactic(msg) + + case None => proof.InvalidProofTactic("No variable typed with the ADT found in the context.") + +} + +/** + * Companion object for the [[Induction]] tactic class. + */ +object Induction { + def apply()(using proof: lisa.SetTheoryLibrary.Proof) = new Induction(None, None) + def apply[N <: Arity](adt: ADT[N])(using proof: lisa.SetTheoryLibrary.Proof) = new Induction(None, Some(adt)) + def apply(v: Variable)(using proof: lisa.SetTheoryLibrary.Proof) = new Induction(Some(v), None) + def apply[N <: Arity](v: Variable, adt: ADT[N])(using proof: lisa.SetTheoryLibrary.Proof) = new Induction(Some(v), Some(adt)) +} \ No newline at end of file diff --git a/lisa-sets/src/main/scala/lisa/maths/settheory/types/adt/Typed.scala b/lisa-sets/src/main/scala/lisa/maths/settheory/types/adt/Typed.scala new file mode 100644 index 00000000..4b1ed571 --- /dev/null +++ b/lisa-sets/src/main/scala/lisa/maths/settheory/types/adt/Typed.scala @@ -0,0 +1,285 @@ +/** + * Gives a type theoretic interpretation to algebraic data types and functions over them. + */ + +package lisa.maths.settheory.types.adt + +import lisa.maths.settheory.SetTheory.{_, given} +import lisa.maths.settheory.types.TypeLib.any +import lisa.maths.settheory.types.TypeSystem.FunctionalClass +import lisa.maths.settheory.types.TypeSystem.TypedConstantFunctional + +/** + * Type theoretic interpretation of a constructor, that is a function whose type is + * + * `c :: ∀X1, ..., Xn. T1 -> ... -> Tn -> ADT + * + * @tparam N the number of type variables appearing in the definition of this constructor's ADT + * @param line the line at which this constructor is defined. Usually fetched automatically by the compiler. + * Used for error reporting + * @param file the file in which this constructor is defined. Usually fetched automatically by the compiler. + * Used for error reporting + * @param underlying the set theoretic underlying constructor + */ +class Constructor[N <: Arity] private[adt] (using line: sourcecode.Line, file: sourcecode.File)( + private[adt] val underlying: SemanticConstructor[N] +) extends TypedConstantFunctional[N]( + underlying.fullName, + underlying.typeArity, + FunctionalClass(Seq.fill(underlying.typeArity)(any), underlying.typeVariablesSeq, underlying.typ, underlying.typeArity), + underlying.intro + ) { + + /** + * Name of the constructor + * + * e.g `list/cons` or `list/nil` + */ + val name = underlying.fullName + + /** + * Theorem --- Introduction rule + * + * `c :: ∀X1, ..., Xn. T1 -> ... -> Tn -> ADT + * + * where `c` is this constructor, `ADT` the ADT it belongs to and `T1, ..., Tn` the domains of the constructor's arguments. + * X1, ..., Xn are the type variables of the ADT. + */ + val intro = + THM(underlying.intro.statement, s"${name} introduction rule", line.value, file.value, Theorem) { + have(underlying.intro) + } + + /** + * Theorem --- Injectivity + * + * ` c(x1, ..., xn) = c(y1, ..., yn) <=> x1 = y1 /\ ... /\ xn = yn` + */ + lazy val injectivity = + THM(underlying.injectivity.statement, s"${name} injectivity", line.value, file.value, Theorem) { + have(underlying.injectivity) + } + + /** + * Type variables appearing in the signature of this constructor + */ + val typeVariables: Variable ** N = underlying.typeVariables +} + +/** + * Type theoretic polymorphic inductive datatype. Comes with a structural induction schema, injection and pattern matching. + * + * @tparam N the number of type variables appearing in the definition of this ADT + * @param line the line at which this ADT is defined. Usually fetched automatically by the compiler. + * Used for error reporting + * @param file the file in which this ADT is defined. Usually fetched automatically by the compiler. + * Used for error reporting + * @param underlying + * @param constructors + */ +class ADT[N <: Arity] private[adt] (using line: sourcecode.Line, file: sourcecode.File)( + private[adt] val underlying: SemanticADT[N], + private[adt] val constructors: Seq[Constructor[N]] +) { + + /** + * Name of this ADT + */ + val name = underlying.name + + /** + * Identifier of this ADT. + */ + val id: Identifier = underlying.id + ADT.identifiersToADT.addOne(id -> this) + + /** + * Theorem --- Structural induction principle + * + * e.g. `P(nil) => (∀x :: T, l :: list(T). P(l) => P(cons(x, l)))) => ∀l :: list(T). P(l)` + */ + lazy val induction = + THM(underlying.induction.statement, s"${name} structural induction principle", line.value, file.value, Theorem) { + have(underlying.induction) + } + + /** + * Theorem --- Elimination rules (Pattern Matching) + * + * `x :: ADT |- ∃ x1, ..., xn. x = c1 * x1 * ... * xn \/ ... \/ ∃ x1, ..., xn'. x = cm * x1 * ... * xn' + * + * Every term of this ADT is an instance of one of its constructors. + * + * e.g. `∀l :: list(T). l = nil \/ ∃x, xs. l = cons(x, xs)` + */ + lazy val elim = + THM(underlying.elim.statement, s"${name} elimination rule", line.value, file.value, Theorem) { + have(underlying.elim) + } + + /** + * Theorem --- Injectivity + * + * ` c1 * x1 * ... * xn != c2 * y1 * ... * ym` + * + * Instances of different constructors are different. + * + * e.g. `cons(x, l) != nil` + * + * @param c1 the first constructor + * @param c2 the second constructor + */ + def injectivity(c1: Constructor[N], c2: Constructor[N]) = + val injectivityLemma = underlying.injectivity(c1.underlying, c2.underlying) + THM(injectivityLemma.statement, s"${c1.name}-${c2.name} injectivity", line.value, file.value, Theorem) { + have(injectivityLemma) + } + + /** + * Type variables appearing in the signature of this ADT + */ + val typeVariables: Variable ** N = underlying.typeVariables + + /** + * Instantiate the type variables of this ADT with given types. + * Checks the arity at runtime. + * + * @param args the types to instantiate the type variables with + */ + def applyUnsafe(args: Term ** N): Term = underlying.term(args.toSeq) + + /** + * Instantiate the type variables of this ADT with given types. + * Checks the arity at runtime. + * + * @param args the types to instantiate the type variables with + */ + def applySeq(args: Seq[Term]): Term = underlying.term(args) + + /** + * Instantiate the type variables of this ADT with given types. + * Checks the arity at runtime. + * + * TODO: wait Scala 3.4.2 to remove this method and extend Term ** N |-> Term instead + * + * @param args the types to instantiate the type variables with + */ + def apply(args: Term*): Term = underlying.term(args) +} + +private object ADT { + /** + * Global map from object identifiers to ADTs + */ + private val identifiersToADT: scala.collection.mutable.Map[Identifier, ADT[?]] = scala.collection.mutable.Map.empty + + /** + * Checks if a label is an ADT, and returns it if it is the case. + * + * @param l the label to check + */ + def unapply(l: Label[?]): Option[ADT[?]] = getADT(l.id) + + /** + * Checks if a term is an instance of an ADT and if it is the case, returns + * the appropriate instances of the type variables. + * + * @param term the term to check + */ + def unapply(obj: Term): Option[(ADT[?], Seq[Term])] = + obj match + case l: Label[?] => + val lwidened: Label[?] = l + unapply(lwidened).map((_, Seq.empty)) + case AppliedFunctional(l, args) => unapply(l).map((_, args)) + case _ => None + + /** + * Checks if a class is an instance of an ADT and if it is the case, returns + * the appropriate instances of the type variables. + * + * @param c the class to check + */ + def unapply(c: Class): Option[(ADT[?], Seq[Term])] = + c match + case t: Term => unapply(t) + case _ => None + + /** + * Returns the ADT associated with an identifier. + * + * @param id the identifier of the ADT + */ + def getADT(id: Identifier): Option[ADT[?]] = identifiersToADT.get(id) +} + +/** + * Type theoretic function over algebraic data types. Its definition is the direct sum of the definitions of its constructors. + * Comes with introduction and elimination rules. + * + * @constructor gives a type theoretic interpretation to a set theoretic function over an ADT + * @tparam N the number of type variables appearing in the definition of this function's domain + * @param line the line at which this ADT is defined. Usually fetched automatically by the compiler. + * Used for error reporting + * @param file the file in which this ADT is defined. Usually fetched automatically by the compiler. + * Used for error reporting + * @param underlying the underlying set theoretic function + * @param adt the domain of this function + */ +private class ADTFunction[N <: Arity](using line: sourcecode.Line, file: sourcecode.File)( + private val underlying: SemanticFunction[N], + private val adt: ADT[N] +) extends TypedConstantFunctional[N]( + underlying.fullName, + underlying.typeArity, + FunctionalClass(Seq.fill(underlying.typeArity)(any), underlying.typeVariablesSeq, underlying.typ, underlying.typeArity), + underlying.intro + ) { + + /** + * Name of the function + * + * e.g. list/length + */ + val name = underlying.fullName + + /** + * Theorem --- Elimination rules + * + * `f * (c * x1 * ... * xn) = case(c, x1, ..., xn)` + * + * That is, when this function is applied to a constructor, it returns the corresponding case. + */ + val elim: Map[Constructor[N], THM] = adt.constructors + .map(c => + ( + c, + THM(underlying.shortDefinition(c.underlying).statement, s"${name} elimination rule: ${c.name} case", line.value, file.value, Theorem) { + have(underlying.shortDefinition(c.underlying)) + } + ) + ) + .toMap + + /** + * Alias for [[this.elim]] + */ + val shortDefinition: Map[Constructor[N], THM] = elim + + /** + * Theorem --- Introduction rule + * + * `∀X1, ..., Xn. f(X1, ..., Xn) : ADT(X1, ..., Xn) -> T` + * + * where `f` is this function, `ADT` the ADT it takes argument and `T` its return type. + */ + val intro: THM = + THM(underlying.intro.statement, s"${name} introduction rule", line.value, file.value, Theorem) { + have(underlying.intro) + } + + /** + * Type variables in the signature of the function + */ + val typeVariables: Variable ** N = underlying.typeVariables +} diff --git a/lisa-sets/src/main/scala/lisa/maths/settheory/types/adt/Untyped.scala b/lisa-sets/src/main/scala/lisa/maths/settheory/types/adt/Untyped.scala new file mode 100644 index 00000000..61dd75a7 --- /dev/null +++ b/lisa-sets/src/main/scala/lisa/maths/settheory/types/adt/Untyped.scala @@ -0,0 +1,1752 @@ +/** + * This file implements tactics to generate polymorphic set theoretic inductive algebraic data types (or ADT) and prove properties about them. + * An algebraic data type is the least set closed under introduction rules, also known as constructors. + * A constructor takes arguments as input that can either belong to other types (non inductive arguments) + * or to the ADT itself (inductive arguments). + * + * An example of algebraic data type is the type of singly linked lists: + * + * list ::= nil() | cons(head: T, tail: list) + */ + +package lisa.maths.settheory.types.adt + +import lisa.maths.settheory.SetTheory.{*, given} +import Helpers.* +import Helpers.{/\, \/, ===} +import ADTDefinitions.* +import ADTHelperTheorems as ADTThm +import ADTThm.{N, pair, pairExtensionality} +import lisa.maths.settheory.types.TypeLib.{ |=>} +import lisa.maths.settheory.types.TypeSystem.{ :: } +import lisa.maths.Quantifiers.{universalEquivalenceDistribution} +import lisa.fol.FOL.Variable + +/** + * Helpers for constructors + */ +private object Constructors { + + /** + * Global counter used to uniquely identify constructors and thereby avoid structural subtyping. + */ + var tagCounter = 0 +} + +/** + * Syntactic set theoretical interpretation of a constructor for an algebraic data type. + * In set theory, a constructor is a tuple containing the arguments it has been applied to, in addition to a tag + * uniquely identifying it. + * + * E.g. `cons(1, nil())` is represented as `(tagcons, (1, ((tagnil, ∅), ∅)))` + * + * Constructors injectivity is proved within this class. + * + * @constructor creates a new constructor out of a user specification + * @param specification types that the constructor takes as arguments + * @param variables1 variables used to represent the arguments of the constructor + * @param variables2 alternative set of variables to avoid capture issues + */ +private class SyntacticConstructor( + val specification: Seq[ConstructorArgument], + val variables1: Seq[Variable], + val variables2: Seq[Variable], + ) { + + /** + * Unique identifier of this constructor + */ + val tag: Int = Constructors.tagCounter + Constructors.tagCounter = Constructors.tagCounter + 1 + + /** + * Term representation of the tag of this constructor + */ + val tagTerm: Term = toTerm(tag) + + /** + * Sequence of variables used to represent the arguments of the constructor + */ + val variables: Seq[Variable] = variables1 + + /** + * Number of arguments that this constructor takes + */ + val arity: Int = specification.length + + /** + * Sequence of variables of the constructor with their respective domains. + */ + val signature1: Seq[(Variable, ConstructorArgument)] = variables1.zip(specification) + + /** + * Alternative sequence of variables of the constructor with their respective domains. + */ + val signature2: Seq[(Variable, ConstructorArgument)] = variables2.zip(specification) + + /** + * Sequence of variables of the constructor with their respective domains. + */ + val signature: Seq[(Variable, ConstructorArgument)] = signature1 + + /** + * Internally, an instance of this constructor is represented as a list. + * The first element of this list is the tag of this constructor. + * The following elements are its arguments. We represent lists as chained + * pairs followed by the empty set. + * + * e.g. cons(1, nil()) --> (tagcons, (1, ((tagnil, ∅), ∅))) + * + * @param args the arguments of this instance of the constructor + */ + def term(args: Seq[Term]): Term = pair(tagTerm, subterm(args)) + + /** + * Internal representation of an instance of this constructor in which arguments are schematic variables. + */ + val term1: Term = term(variables1) + + /** + * Internal representation of an instance of this constructor in which arguments are an alternative set of schematic variables. + */ + val term2: Term = term(variables2) + + /** + * Internal representation of an instance of this constructor in which arguments are schematic variables. + */ + val term: Term = term1 + + /** + * Internal representation of an instance of this constructor without the tag + * + * @param args the arguments of this instance of the constructor + * + * @see [[this.term]] + */ + def subterm(args: Seq[Term]): Term = args.foldRight[Term](emptySet)(pair(_, _)) + + /** + * Internal representation of an instance of this constructor without the tag, in which arguments are schematic variables. + */ + val subterm1: Term = subterm(variables1) + + /** + * Internal representation of an instance of this constructor without the tag, in which arguments are an alternative set + * of schematic variables. + */ + val subterm2: Term = subterm(variables2) + + /** + * Internal representation of an instance of this constructor without the tag, in which arguments are schematic variables. + */ + val subterm: Term = subterm1 + + /** + * Theorem --- Injectivity of constructors. + * + * Two instances of this constructor are equal if and only if all of their arguments are pairwise equal + * + * e.g. cons(head1, tail1) === cons(head2, tail2) <=> head1 === head2 /\ tail1 === tail2 + */ + lazy val injectivity = + if arity == 0 then + Lemma(term1 === term2) { + have(thesis) by RightRefl + } + else + Lemma((term1 === term2) <=> (variables1 === variables2)) { + + // STEP 1: Get rid of the tag using pair extensionality + have((term1 === term2) <=> (subterm1 === subterm2)) by Restate.from(pairExtensionality of (a := tagTerm, b := subterm1, c := tagTerm, d := subterm2)) + + // STEP 2: Repeat pair extensionality until all variables have been pulled out of the term + variables1 + .zip(variables2) + .foldLeft(Seq.empty[Variable], variables1, Seq.empty[Variable], variables2, lastStep)((acc, v) => + + // pulledVars1 are the variables that have been pulled out of the left term + // remainingVars1 are the variables that are still in the left term + // pulledVars2 are the variables that have been pulled out of the right term + // remainingVars2 are the variables that are still in the right term + val (pulledVars1, remainingVars1, pulledVars2, remainingVars2, previousFact) = acc + + // v1 and v2 are the variables that are being pulled out + val (v1, v2) = v + + val updatedPulledVars1 = pulledVars1 :+ v1 + val updatedPulledVars2 = pulledVars2 :+ v2 + val updatedRemainingVars1 = remainingVars1.tail + val updatedRemainingVars2 = remainingVars2.tail + + val subsubterm1 = subterm(updatedRemainingVars1) + val subsubterm2 = subterm(updatedRemainingVars2) + + have( + (pair(v1, subsubterm1) === pair(v2, subsubterm2)) <=> + ((v1 === v2) /\ (subsubterm1 === subsubterm2)) + ) by Restate.from(pairExtensionality of (a := v1, b := subsubterm1, c := v2, d := subsubterm2)) + have( + ((pulledVars1 === pulledVars2) /\ (pair(v1, subsubterm1) === pair(v2, subsubterm2))) <=> + ((pulledVars1 === pulledVars2) /\ (v1 === v2) /\ (subsubterm1 === subsubterm2)) + ) by Cut( + lastStep, + ADTThm.rightAndEquivalence of (p := pulledVars1 === pulledVars2, p1 := pair(v1, subsubterm1) === pair(v2, subsubterm2), p2 := (v1 === v2) /\ (subsubterm1 === subsubterm2)) + ) + val newFact = have( + (term1 === term2) <=> + ((updatedPulledVars1 === updatedPulledVars2) /\ (subsubterm1 === subsubterm2)) + ) by Apply(ADTThm.equivalenceRewriting).on(lastStep, previousFact) + + (updatedPulledVars1, updatedRemainingVars1, updatedPulledVars2, updatedRemainingVars2, newFact) + ) + } + +} + +/** + * Syntactic set theoretical interpretation of an algebraic data type. That is the least set closed under [[SyntacticConstructor]]. + * + * E.g. list is the smallest set containing nil and closed under the syntactic operation cons. + * + * Injectivity between different constructors, introduction rules and structural induction are proved within this class. + * + * @constructor creates a new algebraic data type out of a user specification. + * @param line the line at which the ADT is defined. Usually fetched automatically by the compiler. + * Used for error reporting + * @param file the file in which the ADT is defined. Usually fetched automatically by the compiler. + * Used for error reporting + * @param name the name of the ADT + * @param constructors constructors of the ADT + * @param typeVariables type variables used in the definition of this ADT + */ +private class SyntacticADT[N <: Arity](using line: sourcecode.Line, file: sourcecode.File)( + val name: String, + val constructors: Seq[SyntacticConstructor], + val typeVariables: Variable ** N, + ) { + + /** + * Sequence of type variables used in the definition of this ADT + */ + val typeVariablesSeq: Seq[Variable] = typeVariables.toSeq + + /** + * Number of type variables used in the definition of this ADT + */ + val typeArity: N = typeVariablesSeq.length.asInstanceOf[N] + + // *************** + // * INJECTIVITY * + // *************** + + /** + * Theorem --- Injectivity of constructors. + * + * Two instances of different construcors are always different. + * + * e.g. Nil != Cons(head, tail) + */ + def injectivity(c1: SyntacticConstructor, c2: SyntacticConstructor) = + require(c1.tag != c2.tag, "The given constructors must be different.") + + Lemma(!(c1.term1 === c2.term2)) { + + // STEP 0: Caching + val tagTerm1: Term = c1.tagTerm + val tagTerm2: Term = c2.tagTerm + + // STEP 1: Prove that the tags are different + val diffTag = have(!(tagTerm1 === tagTerm2)) subproof { + + // STEP 1.1: Order the tags + val minTag: Int = Math.min(c1.tag, c2.tag) + val maxTag: Int = Math.max(c1.tag, c2.tag) + + val start = have(tagTerm1 === tagTerm2 |- toTerm(maxTag) === toTerm(minTag)) by Restate + + // STEP 1.2: Apply successor injectivity to both tags until one becomes 0 + (1 to minTag).foldLeft(start)((fact, i) => + val midMaxTag = toTerm(maxTag - i) + val midMinTag = toTerm(minTag - i) + have(successor(midMaxTag) === successor(midMinTag) |- midMaxTag === midMinTag) by Cut( + ADTThm.successorInjectivity of (n := midMaxTag, m := midMinTag), + ADTThm.equivalenceApply of (p1 := successor(midMaxTag) === successor(midMinTag), p2 := midMaxTag === midMinTag) + ) + have(tagTerm1 === tagTerm2 |- midMaxTag === midMinTag) by Cut(fact, lastStep) + ) + + val chainInjectivity = thenHave(!(toTerm(maxTag - minTag) === emptySet) |- !(tagTerm1 === tagTerm2)) by Restate + + // STEP 1.3: Conclude using the fact that 0 is not the successor of any number + have(!(toTerm(maxTag - minTag) === emptySet)) by Exact(ADTThm.zeroIsNotSucc) + have(thesis) by Cut(lastStep, chainInjectivity) + } + + // STEP 2: Prove that the terms are different if the tags are different + have(c1.term1 === c2.term2 |- (tagTerm1 === tagTerm2) /\ (c1.subterm1 === c2.subterm2)) by Apply(ADTThm.equivalenceRevApply).on( + pairExtensionality of (a := tagTerm1, b := c1.subterm1, c := tagTerm2, d := c2.subterm2) + ) + thenHave(!(tagTerm1 === tagTerm2) |- !(c1.term1 === c2.term2)) by Weakening + + // STEP 3: Conclude + have(!(c1.term1 === c2.term2)) by Cut(diffTag, lastStep) + } + + // ************************* + // * INTRODUCTION FUNCTION * + // ************************* + + /** + * Formula describing whether the variables of a constructor belongs to their respective domain or s when they are self-referencing. + * + * @param c The considered constructor + * @param s The set of elements in which self-referencing variables of the constructor are. + */ + private def constructorVarsInDomain(c: SyntacticConstructor, s: Term): Formula = wellTypedFormula(c.signature)(s) + + /** + * Formula describing whether an element x is an instance of a specific constructor. + * + * @param c The constructor we want to check if x is an instance of + * @param x The element we want to check if it is an instance of c + * @param s The set of elements in which self-referencing arguments of the constructor are. + */ + private def isConstructor(c: SyntacticConstructor, x: Term, s: Term): Formula = + existsSeq(c.variables2, wellTypedFormula(c.signature2)(s) /\ (x === c.term2)) + + /** + * Formula describing whether an element x is an instance of one of this ADT's constructors. + * + * @param x The element we want to check if it is an instance of some constructor. + * @param s The set of elements in which self-referencing arguments of the constructor are. + */ + private def isConstructor(x: Term, s: Term): Formula = \/(constructors.map(c => isConstructor(c, x, s))) + + /** + * The introduction (class) function applies this ADT's constructors to the argument to given to it. + * It then adds to elements of the resulting set to the one given in argument. For example, if all arguments of the + * constructors were self-referencing we would have: + * + * introductionFunction(s) = {y | y = c(x1, ..., xn) for some c ∈ constructors and x1, ..., xn ∈ s} ∪ s + * + * In order to avoid introducing a new symbol in the theory, we describe this function with a predicate. + * + * @param s the argument of this function, i.e. set of elements on which the constructors are applied + * @param y the element we want to check if it is in the image of s under the introduction function. + * + * @return a formula describing whether y ∈ introductionFunction(s) + * + * @note The existence of the image of the introduction function is guaranteed by the union and replacement axioms. Moreover, it is not necessary to compute the union with s. It however simplifies further proofs. See [[this.heightSuccessorStrong]] for a proof of the equivalence of the two definitions. + */ + private def isInIntroductionFunctionImage(s: Term)(y: Term): Formula = isConstructor(y, s) \/ in(y, s) + + + /** + * Lemma --- The introduction function is monotonic with respect to set inclusion. + * + * `s ⊆ t |- introductionFunction(s) ⊆ introductionFunction(t)` + */ + private val introductionFunctionMononotic = Lemma(subset(s, t) |- isInIntroductionFunctionImage(s)(x) ==> isInIntroductionFunctionImage(t)(x)) { + // In the rest of the proof we assume that s ⊆ t + + // STEP 0: Caching predicates that are often used + val subsetST = subset(s, t) + val isConstructorXS = isConstructor(x, s) + val isConstructorXT = isConstructor(x, t) + + // STEP 1: Prove x ∈ s implies x ∈ t + have(subsetST |- forall(z, in(z, s) ==> in(z, t))) by Apply(ADTThm.equivalenceApply of (p1 := subsetST)).on(subsetAxiom.asInstanceOf) + val subsetElimination = thenHave(subsetST |- in(z, s) ==> in(z, t)) by InstantiateForall(z) + + // STEP 2: For each constructor, prove that if x is an instance of that constructor with self referencing arguments in s + // then it is also an instance of some constructor with self referencing arguments in t + val isConstructorXSImpliesT = + for c <- constructors yield + // STEP 2.0: Caching predicates that are often used + // TODO change identifier + val labelEq = x === c.term2 + val isConstructorCXS = isConstructor(c, x, s) + val isConstructorCXT = isConstructor(c, x, t) + val varsWellTypedS = wellTypedFormula(c.signature2)(s) + val varsWellTypedT = wellTypedFormula(c.signature2)(t) + + if c.arity == 0 then have((subsetST, isConstructorCXS) |- isConstructorXT) by Restate + else + // STEP 2.1: Prove that we can expand the domain of the (quantified) variables of the constructor + val andSeq = + for (v, ty) <- c.signature2 yield have((subsetST, varsWellTypedS) |- in(v, ty.getOrElse(t))) by Weakening(subsetElimination of (z := v)) + val expandingDomain = have((subsetST, varsWellTypedS) |- varsWellTypedT) by RightAnd(andSeq: _*) + val weakeningLabelEq = have(labelEq |- labelEq) by Hypothesis + have((subsetST, varsWellTypedS, labelEq) |- varsWellTypedT /\ labelEq) by RightAnd(expandingDomain, weakeningLabelEq) + + // STEP 2.2: Prove that x stays an instance of this constructor if we expand the domain of the variables + thenHave((subsetST, varsWellTypedS, labelEq) |- isConstructorCXT) by QuantifiersIntro(c.variables2) + thenHave((subsetST, varsWellTypedS /\ labelEq) |- isConstructorCXT) by LeftAnd + thenHave((subsetST, isConstructorCXS) |- isConstructorCXT) by QuantifiersIntro(c.variables2) + + // STEP 2.3: Weaken the conclusion to some constructor instead of a specific one + thenHave((subsetST, isConstructorCXS) |- isConstructorXT) by Weakening + + // STEP 3: Prove that this holds for any constructor + // ? Steps 2 and 3 can be merged and optimized through the repeated use of an external theorem like [[ADTHelperTheorems.unionPreimageMonotonic]] + if constructors.isEmpty then have((subsetST, isConstructorXS) |- isConstructorXT) by Restate + else have((subsetST, isConstructorXS) |- isConstructorXT) by LeftOr(isConstructorXSImpliesT: _*) + + // STEP 4: Prove the thesis by showing that making the union with the function argument does not change the monotonicity + thenHave(subsetST |- isConstructorXS ==> isConstructorXT) by RightImplies + have(thesis) by Cut(lastStep, ADTThm.unionPreimageMonotonic of (P := lambda(s, isConstructorXS))) + } + + + /** + * Lemma --- Every constructor is in the image of the introduction function. + * + * `For every c ∈ constructors, xi ∈ s, ..., xj ∈ s |- c(x1, ..., xn) ∈ introductionFunction(s)` + */ + private val constructorIsInIntroductionFunction = constructors + .map(c => + // Caching + val constructorVarsInDomainCS = constructorVarsInDomain(c, s) + + c -> Lemma(constructorVarsInDomainCS |- isInIntroductionFunctionImage(s)(c.term)) { + + have(constructorVarsInDomainCS |- constructorVarsInDomainCS /\ (c.term === c.term)) by Restate + + // Replace each variable on the LHS of the equality by a quantified variable and then introduce an existential quantifier + (c.variables2).foldRight((c.variables1, List[Variable]()))((v, acc) => + + // At each step remove a variable and add a quantified one + val oldVariables = acc._1.init + val newVariables = v :: acc._2 + val vars = oldVariables ++ newVariables + + thenHave(constructorVarsInDomainCS |- existsSeq(newVariables, wellTypedFormula(vars.zip(c.specification))(s) /\ (c.term(vars) === c.term))) by RightExists + + (oldVariables, newVariables) + ) + + thenHave(constructorVarsInDomainCS |- isInIntroductionFunctionImage(s)(c.term)) by Weakening + } + ) + .toMap + + // ********************************** + // * EXTENDED INTRODUCTION FUNCTION * + // ********************************** + + /** + * The extended introduction (class) function takes a function f as an argument instead of set. + * - If f is not empty, it calls the introduction function on the union of the ranges of the function. Since f will + * always be cumulative by assumption, this is equivalent as passing as argument the broadest set among the ranges of f. + * - If the function is empty, it returns the empty set. + * + * This class function is in a suited format to be used within the transfinite recursion theorem, which will be called to + * construct the height function. + * + * @see [[this.heightFunctionUniqueness]] + * + * @param f the function given as argument to the extended introduction function + * @param x the element we want to check if it is in the image of f under the extended introduction function + * @return a formula describing whether x ∈ extendedIntroductionFunction(f) + */ + private def isInExtendedIntroductionFunctionImage(f: Term)(x: Term): Formula = !(f === emptySet) /\ isInIntroductionFunctionImage(unionRange(f))(x) + + /** + * Lemma --- The extended introduction function is monotonic with respect to set inclusion. + * + * `f ⊆ g |- extendedIntroductionFunction(f) ⊆ extendedIntroductionFunction(g)` + */ + private val extendedIntroductionFunctionMonotonic = Lemma(subset(f, g) |- isInExtendedIntroductionFunctionImage(f)(x) ==> isInExtendedIntroductionFunctionImage(g)(x)) { + + // STEP 0: Caching + val introFunUnionRangeF = isInIntroductionFunctionImage(unionRange(f))(x) + val introFunUnionRangeG = isInIntroductionFunctionImage(unionRange(g))(x) + + // STEP 1: Instantiate monotonicity of the introduction function for the union of the ranges of f and g + have(subset(f, g) |- introFunUnionRangeF ==> introFunUnionRangeG) by Cut( + ADTThm.unionRangeMonotonic, + introductionFunctionMononotic of (s := unionRange(f), t := unionRange(g)) + ) + val left = thenHave((subset(f, g), introFunUnionRangeF) |- introFunUnionRangeG) by Restate + + // STEP 2: Conclude by applying the conjuction on both sides + have((subset(f, g), !(f === emptySet), introFunUnionRangeF) |- isInExtendedIntroductionFunctionImage(g)(x)) by RightAnd(left, ADTThm.subsetNotEmpty of (x := f, y := g)) + } + + // ******************* + // * HEIGHT FUNCTION * + // ******************* + + /** + * The height function assigns to each natural number the set of elements of the ADT of that height or below. + * The set of terms with height 0 is empty. Non inductive constructors have height one. + * The height of an instance of an inductive constructor is the maximum height of its arguments plus one. + * The height function is guaranteed to exists and is unique. + * + * @see [[this.heightFunctionUniqueness]] + * + * @param g the function we want to know if it is the height function + * + * @return a formula that is true if and only if g is the height function + */ + private def isTheHeightFunction(h: Term): Formula = + functional(h) /\ (relationDomain(h) === N) /\ forall(n, in(n, N) ==> forall(x, in(x, app(h, n)) <=> isInExtendedIntroductionFunctionImage(restrictedFunction(h, n))(x))) + + // Caching + private val fIsTheHeightFunction: Formula = isTheHeightFunction(f) + private val hIsTheHeightFunction: Formula = isTheHeightFunction(h) + + /** + * Lemma --- There exists a unique height function for this ADT. + * + * `∃!h. h = height` + * + * TODO: Prove this using transfinite recursion + */ + private val heightFunUniqueness = Axiom(existsOne(h, hIsTheHeightFunction)) + + /** + * Lemma --- The height function exists. + * + * `∃h. h = height` + */ + private val heightFunctionExistence = Lemma(exists(h, hIsTheHeightFunction)) { + have(thesis) by Apply(lisa.maths.Quantifiers.existsOneImpliesExists of (P := lambda(h, hIsTheHeightFunction))).on(heightFunUniqueness.asInstanceOf) + } + + /** + * Lemma --- If two functions are the height function then they are the same. + * + * `f = height /\ h = height => f = h` + */ + private val heightFunctionUniqueness2 = Lemma((fIsTheHeightFunction, hIsTheHeightFunction) |- f === h) { + have(thesis) by Cut(heightFunUniqueness, ADTThm.existsOneUniqueness of (P := lambda(h, hIsTheHeightFunction), x := f, y := h)) + } + + /** + * Lemma --- The height function is not empty. + * + * `height ≠ ∅` + */ + private val heightFunctionNonEmpty = Lemma(hIsTheHeightFunction |- !(h === emptySet)) { + // The proof goes by contradiction. If the height function is empty then its domain is empty as well. + // This would imply that the set of natural numbers is empty, which is a contradiction. + have(N === emptySet |- ()) by Restate.from(ADTThm.natNotEmpty) + thenHave((relationDomain(h) === emptySet, relationDomain(h) === N, relationDomain(h) === relationDomain(h)) |- ()) by LeftSubstEq.withParametersSimple( + List((relationDomain(h), emptySet), (relationDomain(h), N)), + lambda((x, y), y === x) + ) + thenHave((relationDomain(h) === N, relationDomain(h) === relationDomain(h)) |- !(relationDomain(h) === emptySet)) by RightNot + have(thesis) by Apply(ADTThm.nonEmptyDomain).on(lastStep) + } + + /** + * Lemma --- The set of elements of height n or below is the image of the extended introduction function under the height + * function restricted to n (consequence of transfinite recursion). + * + * `height(n) = extendedIntroductionFunction(height | n)` + */ + private val heightApplication = Lemma((hIsTheHeightFunction, in(n, N)) |- in(x, app(h, n)) <=> isInExtendedIntroductionFunctionImage(restrictedFunction(h, n))(x)) { + + // Caching + val extendedIntroFunRestrictedFunM = isInExtendedIntroductionFunctionImage(restrictedFunction(h, n))(x) + val heightFunApplicationDef = forall(n, in(n, N) ==> forall(x, in(x, app(h, n)) <=> extendedIntroFunRestrictedFunM)) + + // Nothing fancy, just instantiations and restates + have(heightFunApplicationDef |- heightFunApplicationDef) by Hypothesis + thenHave(heightFunApplicationDef |- in(n, N) ==> forall(x, in(x, app(h, n)) <=> extendedIntroFunRestrictedFunM)) by InstantiateForall(n) + thenHave((heightFunApplicationDef, in(n, N)) |- forall(x, in(x, app(h, n)) <=> extendedIntroFunRestrictedFunM)) by Restate + thenHave((heightFunApplicationDef, in(n, N)) |- in(x, app(h, n)) <=> extendedIntroFunRestrictedFunM) by InstantiateForall(x) + thenHave(thesis) by Weakening + } + + /** + * Lemma --- The height function is monotonic + * + * `n <= m => height(n) ⊆ height(m)` + * + * TODO: Try to pull out + */ + private val heightMonotonic = Lemma((hIsTheHeightFunction, in(n, N), subset(m, n)) |- subset(app(h, m), app(h, n))) { + + // STEP 0: Caching + val extendedIntroFunRestrictedFunM = isInExtendedIntroductionFunctionImage(restrictedFunction(h, m))(x) + + // STEP 1: Unfold the definition of height(m) + have((hIsTheHeightFunction, in(n, N), subset(m, n)) |- in(x, app(h, m)) <=> extendedIntroFunRestrictedFunM) by Apply(heightApplication).on(ADTThm.subsetIsNat.asInstanceOf) + val unfoldHeightApplicationM = have((hIsTheHeightFunction, in(n, N), subset(m, n), in(x, app(h, m))) |- extendedIntroFunRestrictedFunM) by Cut( + lastStep, + ADTThm.equivalenceRevApply of (p1 := in(x, app(h, m)), p2 := extendedIntroFunRestrictedFunM) + ) + + // STEP 2: Use the monotonicity of the extended introduction function + have(subset(m, n) |- extendedIntroFunRestrictedFunM ==> isInExtendedIntroductionFunctionImage(restrictedFunction(h, n))(x)) by Cut( + ADTThm.restrictedFunctionDomainMonotonic of (x := m, y := n, f := h), + extendedIntroductionFunctionMonotonic of (f := restrictedFunction(h, m), g := restrictedFunction(h, n)) + ) + have((hIsTheHeightFunction, in(n, N), subset(m, n), extendedIntroFunRestrictedFunM) |- in(x, app(h, n))) by Apply(ADTThm.equivalenceRevApply).on(lastStep, heightApplication.asInstanceOf) + + // STEP 3: Fold the definition of subset + have((hIsTheHeightFunction, in(n, N), subset(m, n), in(x, app(h, m))) |- in(x, app(h, n))) by Cut(unfoldHeightApplicationM, lastStep) + thenHave((hIsTheHeightFunction, in(n, N), subset(m, n)) |- in(x, app(h, m)) ==> in(x, app(h, n))) by RightImplies + thenHave((hIsTheHeightFunction, in(n, N), subset(m, n)) |- forall(x, in(x, app(h, m)) ==> in(x, app(h, n)))) by RightForall + have(thesis) by Apply(ADTThm.equivalenceRevApply).on(lastStep, subsetAxiom.asInstanceOf) + } + + /** + * Lemma --- There is no element of height 0 in the ADT. + * + * `!∃x ∈ adt. height(x) = 0` + */ + private val heightZero = Lemma(hIsTheHeightFunction |- !in(x, app(h, emptySet))) { + + // This is due to the fact that the extended introduction function is the empty set when the function is empty + // (which happens when the height is set to 0). + have(hIsTheHeightFunction |- in(x, app(h, emptySet)) <=> isInExtendedIntroductionFunctionImage(restrictedFunction(h, emptySet))(x)) by Cut(ADTThm.zeroIsNat, heightApplication of (n := emptySet)) + thenHave((restrictedFunction(h, emptySet) === emptySet, hIsTheHeightFunction) |- !in(x, app(h, emptySet))) by + RightSubstEq.withParametersSimple( + List((restrictedFunction(h, emptySet), emptySet)), + lambda(s, in(x, app(h, emptySet)) <=> isInExtendedIntroductionFunctionImage(s)(x)) + ) + have(thesis) by Cut(ADTThm.restrictedFunctionEmptyDomain, lastStep) + } + + /** + * Lemma --- The set of elements of height n + 1 is the set of elements of height n to which the introduction function is applied. + * + * `height(n + 1) = introductionFunction(height(n))` + */ + private val heightSuccessorWeak = Lemma((hIsTheHeightFunction, in(n, N)) |- in(x, app(h, successor(n))) <=> isInIntroductionFunctionImage(app(h, n))(x)) { + + // STEP 1: Prove that the restriction of height to n + 1 is not empty + val restrHeightNotEmpty: Formula = !(restrictedFunction(h, successor(n)) === emptySet) + have(!(h === emptySet) |- restrHeightNotEmpty) by Cut(ADTThm.zeroIsNotSucc, ADTThm.restrictedFunctionNotEmpty of (d := successor(n))) + val restrHeightNotEmptyLemma = have(hIsTheHeightFunction |- restrHeightNotEmpty) by Cut(heightFunctionNonEmpty, lastStep) + + // STEP 2: Use the fact that if the function is cumulative then ∪ range(height | n + 1) = height(n) to conclude the proof + have((hIsTheHeightFunction, in(n, N)) |- subset(m, n) ==> subset(app(h, m), app(h, n))) by RightImplies(heightMonotonic) + thenHave((hIsTheHeightFunction, in(n, N)) |- forall(m, subset(m, n) ==> subset(app(h, m), app(h, n)))) by RightForall + val unionRangeRestr = have((hIsTheHeightFunction, in(n, N)) |- unionRange(restrictedFunction(h, successor(n))) === app(h, n)) by Apply(ADTThm.unionRangeCumulativeRestrictedFunction).on(lastStep) + + have((hIsTheHeightFunction, in(n, N)) |- in(x, app(h, successor(n))) <=> isInExtendedIntroductionFunctionImage(restrictedFunction(h, successor(n)))(x)) by Apply(heightApplication).on( + ADTThm.equivalenceApply of (p1 := in(n, N)), + ADTThm.successorIsNat.asInstanceOf + ) + + thenHave( + (hIsTheHeightFunction, in(n, N), unionRange(restrictedFunction(h, successor(n))) === app(h, n)) |- + in(x, app(h, successor(n))) <=> restrHeightNotEmpty /\ isInIntroductionFunctionImage(app(h, n))(x) + ) by + RightSubstEq.withParametersSimple( + List((unionRange(restrictedFunction(h, successor(n))), app(h, n))), + lambda(s, in(x, app(h, successor(n))) <=> (restrHeightNotEmpty /\ isInIntroductionFunctionImage(s)(x))) + ) + + have((hIsTheHeightFunction, in(n, N)) |- in(x, app(h, successor(n))) <=> restrHeightNotEmpty /\ isInIntroductionFunctionImage(app(h, n))(x)) by Cut(unionRangeRestr, lastStep) + + have((hIsTheHeightFunction, in(n, N), restrHeightNotEmpty) |- in(x, app(h, successor(n))) <=> isInIntroductionFunctionImage(app(h, n))(x)) by Apply(ADTThm.equivalenceAnd of (p2 := restrHeightNotEmpty)) + .on(lastStep) + + have(thesis) by Cut(restrHeightNotEmptyLemma, lastStep) + } + + // ******** + // * TERM * + // ******** + + /** + * Formula describing this ADT's term, i.e. the set of all its instances. + * It equal to the union of all the terms that have a height. + * + * `adt = ∪ height(n) = {x | ∃n ∈ N. x ∈ height(n)}` + * + * @param adt the set chracterizing this ADT + */ + private def termDefinition(adt: Term): Formula = forall(t, in(t, adt) <=> forall(h, hIsTheHeightFunction ==> in(t, unionRange(h)))) + + /** + * Lemma --- There exists a unique set satisfying the definition of this ADT + * + * `∃!z. z = ADT + */ + private val termExistence = Lemma(existsOne(z, termDefinition(z))) { + + // STEP 0: Caching + val termDefinitionRight = forall(h, hIsTheHeightFunction ==> in(t, unionRange(h))) + val inUnionRangeF = in(t, unionRange(f)) + + // STEP 1: Prove that there exists a term satisfying the definition of this ADT. + // Specifically, this term is the union of all the terms with a height. + have(exists(z, termDefinition(z))) subproof { + + // STEP 1.1: Prove the forward implication of the definition, using the uniqueness of the height function + have(inUnionRangeF |- inUnionRangeF) by Hypothesis + thenHave((f === h, inUnionRangeF) |- in(t, unionRange(h))) by RightSubstEq.withParametersSimple( + List((f, h)), + lambda(f, inUnionRangeF) + ) + have((fIsTheHeightFunction, hIsTheHeightFunction, inUnionRangeF) |- in(t, unionRange(h))) by Cut(heightFunctionUniqueness2, lastStep) + thenHave((fIsTheHeightFunction, inUnionRangeF) |- hIsTheHeightFunction ==> in(t, unionRange(h))) by RightImplies + thenHave((fIsTheHeightFunction, inUnionRangeF) |- termDefinitionRight) by RightForall + val forward = thenHave(fIsTheHeightFunction |- inUnionRangeF ==> termDefinitionRight) by RightImplies + + // STEP 1.2: Prove the backward implication of the definition + have(termDefinitionRight |- termDefinitionRight) by Hypothesis + thenHave(termDefinitionRight |- fIsTheHeightFunction ==> inUnionRangeF) by InstantiateForall(f) + val backward = thenHave(fIsTheHeightFunction |- termDefinitionRight ==> inUnionRangeF) by Restate + + // STEP 1.3: Use the existence of the height function to prove the existence of this ADT + have(fIsTheHeightFunction |- inUnionRangeF <=> termDefinitionRight) by RightIff(forward, backward) + thenHave(fIsTheHeightFunction |- forall(t, inUnionRangeF <=> termDefinitionRight)) by RightForall + + thenHave(fIsTheHeightFunction |- exists(z, forall(t, in(t, z) <=> termDefinitionRight))) by RightExists + thenHave(exists(f, fIsTheHeightFunction) |- exists(z, forall(t, in(t, z) <=> termDefinitionRight))) by LeftExists + have(thesis) by Cut(heightFunctionExistence, lastStep) + } + + // STEP 2: Conclude using the extension by definition + + have(thesis) by Cut(lastStep, uniqueByExtension of (schemPred := lambda(t, termDefinitionRight))) + } + + /** + * Class function defining the ADT. Takes as parameters the type variables of the ADT and return the set of all its instances. + */ + val polymorphicTerm = FunctionDefinition[N](name, line.value, file.value)(typeVariablesSeq, z, termDefinition(z), termExistence).label + + /** + * The set of all instances of the ADT where the type variables are not instantiated (i.e. are kept variable). + */ + val term = polymorphicTerm.applySeq(typeVariablesSeq) + + /** + * Definition of this ADT's term. + */ + private val termDefinition: Formula = termDefinition(term) + + /** + * Lemma --- This ADT satisfies its definition. + * + * `adt = ∪ height(n)` + */ + private val termSatisfiesDefinition = Lemma(termDefinition) { + have(thesis) by InstantiateForall(term)(polymorphicTerm.definition) + } + + // ************************* + // * TYPING / INTRODUCTION * + // ************************* + + /** + * Lemma --- Every element of this ADT has a height. Conversely, if an element has a height, it is in this ADT. + * + * ` x ∈ ADT <=> ∃n ∈ N. x ∈ height(n)` + * + * TODO: Split into two lemmas + */ + private val termHasHeight = Lemma(hIsTheHeightFunction |- in(x, term) <=> ∃(n, in(n, N) /\ in(x, app(h, n)))) { + + // STEP 0 : Instantiate the definition of this ADT and recover the forward and backward implications + val termDefinition = have(in(x, term) <=> forall(h, hIsTheHeightFunction ==> in(x, unionRange(h)))) by InstantiateForall(x)(termSatisfiesDefinition) + val termDefinitionForward = have(in(x, term) |- forall(h, hIsTheHeightFunction ==> in(x, unionRange(h)))) by Cut( + termDefinition, + ADTThm.equivalenceApply of (p1 := in(x, term), p2 := forall(h, hIsTheHeightFunction ==> in(x, unionRange(h)))) + ) + val termDefinitionBackward = have(forall(h, hIsTheHeightFunction ==> in(x, unionRange(h))) |- in(x, term)) by Cut( + termDefinition, + ADTThm.equivalenceRevApply of (p2 := in(x, term), p1 := forall(h, hIsTheHeightFunction ==> in(x, unionRange(h)))) + ) + + // STEP 1 : Prove that an element is in this ADT if and only if it is in one of the images of the height function. + have(hIsTheHeightFunction |- in(x, term) <=> in(x, unionRange(h))) subproof { + + // STEP 1.1 : Forward implication + have(forall(h, hIsTheHeightFunction ==> in(x, unionRange(h))) |- forall(h, hIsTheHeightFunction ==> in(x, unionRange(h)))) by Hypothesis + thenHave(forall(h, hIsTheHeightFunction ==> in(x, unionRange(h))) |- hIsTheHeightFunction ==> in(x, unionRange(h))) by InstantiateForall(h) + thenHave((forall(h, hIsTheHeightFunction ==> in(x, unionRange(h))), hIsTheHeightFunction) |- in(x, unionRange(h))) by Restate + + val forward = have(hIsTheHeightFunction |- in(x, term) ==> in(x, unionRange(h))) by Apply(lastStep).on(termDefinitionForward) + + // STEP 1.2 : Backward implication, follows from uniqueness of the height function + have(in(x, unionRange(h)) |- in(x, unionRange(h))) by Hypothesis + thenHave((f === h, in(x, unionRange(h))) |- in(x, unionRange(f))) by RightSubstEq.withParametersSimple(List((f, h)), lambda(h, in(x, unionRange(h)))) + have((fIsTheHeightFunction, hIsTheHeightFunction, in(x, unionRange(h))) |- in(x, unionRange(f))) by Cut(heightFunctionUniqueness2, lastStep) + thenHave((hIsTheHeightFunction, in(x, unionRange(h))) |- fIsTheHeightFunction ==> in(x, unionRange(f))) by RightImplies + thenHave((hIsTheHeightFunction, in(x, unionRange(h))) |- forall(f, fIsTheHeightFunction ==> in(x, unionRange(f)))) by RightForall + have((hIsTheHeightFunction, in(x, unionRange(h))) |- in(x, term)) by Cut(lastStep, termDefinitionBackward) + val backward = thenHave(hIsTheHeightFunction |- in(x, unionRange(h)) ==> in(x, term)) by RightImplies + + have(thesis) by RightIff(forward, backward) + } + + // STEP 2: Conclude by instantiating the union range membership lemma + have(hIsTheHeightFunction |- in(x, term) <=> ∃(n, in(n, relationDomain(h)) /\ in(x, app(h, n)))) by Apply(ADTThm.equivalenceRewriting).on(ADTThm.unionRangeMembership.asInstanceOf, lastStep) + + thenHave((hIsTheHeightFunction, relationDomain(h) === N) |- in(x, term) <=> ∃(n, in(n, N) /\ in(x, app(h, n)))) by RightSubstEq.withParametersSimple( + List((relationDomain(h), N)), + lambda(z, in(x, term) <=> ∃(n, in(n, z) /\ in(x, app(h, n)))) + ) + } + + /** + * Lemma --- Every element of this ADT has a height. Conversely, if an element has a height, it is in this ADT. + * + * ` xi, ..., xj ∈ ADT <=> ∃n ∈ N. xi, ..., xj ∈ height(n)` + * + * TODO: Work this out + * TODO: Split into two lemmas + */ + private val termsHaveHeight = constructors + .map(c => + c -> Lemma(hIsTheHeightFunction |- (constructorVarsInDomain(c, term) <=> ∃(n, in(n, N) /\ constructorVarsInDomain(c, app(h, n))))) { + + if c.variables.isEmpty then have(thesis) by Weakening(ADTThm.existsNat) + else + + // STEP 1: Backward implication + + val backward = have(hIsTheHeightFunction |- ∃(n, in(n, N) /\ constructorVarsInDomain(c, app(h, n))) ==> constructorVarsInDomain(c, term)) subproof { + val andSeq = for (v, ty) <- c.signature yield ty match + case Self => + val termHasHeightBackward = have((hIsTheHeightFunction, exists(n, in(n, N) /\ in(v, app(h, n)))) |- in(v, term)) by Cut( + termHasHeight of (x := v), + ADTThm.equivalenceRevApply of (p1 := ∃(n, in(n, N) /\ in(v, app(h, n))), p2 := in(v, term)) + ) + + have((in(n, N) /\ in(v, app(h, n))) |- in(n, N) /\ in(v, app(h, n))) by Restate + thenHave((in(n, N) /\ in(v, app(h, n))) |- exists(n, in(n, N) /\ in(v, app(h, n)))) by RightExists + have((hIsTheHeightFunction, in(n, N) /\ in(v, app(h, n))) |- in(v, term)) by Cut(lastStep, termHasHeightBackward) + thenHave((hIsTheHeightFunction, in(n, N) /\ constructorVarsInDomain(c, app(h, n))) |- in(v, term)) by Weakening + case GroundType(t) => + have((hIsTheHeightFunction, in(n, N) /\ constructorVarsInDomain(c, app(h, n))) |- in(v, t)) by Restate + + have((hIsTheHeightFunction, in(n, N) /\ constructorVarsInDomain(c, app(h, n))) |- constructorVarsInDomain(c, term)) by RightAnd(andSeq: _*) + thenHave((hIsTheHeightFunction, exists(n, in(n, N) /\ constructorVarsInDomain(c, app(h, n)))) |- constructorVarsInDomain(c, term)) by LeftExists + } + + // STEP 2: Forward implication + + val forward = have(hIsTheHeightFunction |- constructorVarsInDomain(c, term) ==> ∃(n, in(n, N) /\ constructorVarsInDomain(c, app(h, n)))) subproof { + val nSeq: Seq[Variable] = (0 until c.variables.size).map(i => Variable(s"n$i")) + val max = if c.arity == 0 then emptySet else nSeq.reduce[Term](setUnion(_, _)) + + val maxInN = have(/\(nSeq.map(n => in(n, N))) |- in(max, N)) by Sorry + + val andSeq = for ((v, ty), ni) <- c.signature.zip(nSeq) yield + val niInMax = have(subset(ni, max)) by Sorry + + ty match + case Self => + have((hIsTheHeightFunction, in(max, N), subset(ni, max)) |- subset(app(h, ni), app(h, max))) by Restate.from(heightMonotonic of (m := ni, n := max)) + have((hIsTheHeightFunction, /\(nSeq.map(n => in(n, N)))) |- subset(app(h, ni), app(h, max))) by Sorry // Apply(lastStep).on(Seq(maxInN, niInMax), excluding = nSeq) + have((hIsTheHeightFunction, /\(nSeq.map(n => in(n, N)))) |- forall(z, in(z, app(h, ni)) ==> in(z, app(h, max)))) by Apply(ADTThm.equivalenceApply) + .on(Seq(lastStep, subsetAxiom), excluding = nSeq) + thenHave((hIsTheHeightFunction, /\(nSeq.map(n => in(n, N)))) |- in(v, app(h, ni)) ==> in(v, app(h, max))) by InstantiateForall(v) + thenHave((hIsTheHeightFunction, /\(nSeq.map(n => in(n, N))), in(v, app(h, ni))) |- in(v, app(h, max))) by Restate + case GroundType(t) => + have((/\(nSeq.map(n => in(n, N))), hIsTheHeightFunction, in(v, t)) |- in(v, t)) by Restate + + have((/\(nSeq.map(n => in(n, N))), hIsTheHeightFunction, in(v, ty.getOrElse(app(h, ni)))) |- in(max, N) /\ in(v, ty.getOrElse(app(h, max)))) by RightAnd(maxInN, lastStep) + thenHave(nSeq.map(n => in(n, N) /\ in(v, ty.getOrElse(app(h, n)))).toSet + hIsTheHeightFunction |- in(max, N) /\ in(v, ty.getOrElse(app(h, max)))) by Weakening + thenHave(nSeq.map(n => in(n, N) /\ in(v, ty.getOrElse(app(h, n)))).toSet + hIsTheHeightFunction |- ∃(n, in(n, N) /\ in(v, ty.getOrElse(app(h, n))))) by RightExists + + sorry + } + + // STEP 3: Conclude + have(thesis) by RightIff(forward, backward) + } + ) + .toMap + + /** + * Lemma --- If all inductive arguments of a constructor have height below n then the instance of + * this constructor has height below n + 1. + * + * ` xi, ..., xj ∈ height(n) |- c(x1, ..., xn) ∈ height(n + 1)` + */ + private val heightConstructor = constructors + .map(c => + c -> Lemma((hIsTheHeightFunction, in(n, N), constructorVarsInDomain(c, app(h, n))) |- in(c.term, app(h, successor(n)))) { + + // Caching + val constructorInIntroFunHeight = isInIntroductionFunctionImage(app(h, n))(c.term) + + // Chaining the lemma on the elements of height n + 1 and the one on constructors being in the image of the introduction function + have((hIsTheHeightFunction, in(n, N), constructorInIntroFunHeight) |- in(c.term, app(h, successor(n)))) by Cut( + heightSuccessorWeak of (x := c.term), + ADTThm.equivalenceRevApply of (p1 := constructorInIntroFunHeight, p2 := in(c.term, app(h, successor(n)))) + ) + have((hIsTheHeightFunction, in(n, N), constructorVarsInDomain(c, app(h, n))) |- in(c.term, app(h, successor(n)))) by Cut(constructorIsInIntroductionFunction(c) of (s := app(h, n)), lastStep) + } + ) + .toMap + + /** + * Lemma --- If all inductive arguments of a constructor are in this ADT, and the non inductive ones in their respective domain, + * then the instance of this constructor is in this ADT as well. Also known as introduction rules. + * + * ` xi, ..., xj ∈ ADT |- c(x1, ..., xn) ∈ ADT` + */ + val intro = constructors + .map(c => { + c -> + Lemma(simplify(constructorVarsInDomain(c, term)) |- simplify(in(c.term, term))) { + // STEP 0: Instantiate the forward direction of termsHaveHeight. + val termsHaveHeightForward = have((hIsTheHeightFunction, constructorVarsInDomain(c, term)) |- ∃(n, in(n, N) /\ constructorVarsInDomain(c, app(h, n)))) by Cut( + termsHaveHeight(c), + ADTThm.equivalenceApply of (p1 := constructorVarsInDomain(c, term), p2 := exists(n, in(n, N) /\ constructorVarsInDomain(c, app(h, n)))) + ) + + // STEP 1: Prove that if an instance of a constructor has height n + 1 then it is in this ADT. + val left = have(in(n, N) |- in(successor(n), N)) by Cut(ADTThm.successorIsNat, ADTThm.equivalenceApply of (p1 := in(n, N), p2 := in(successor(n), N))) + val right = have(in(c.term, app(h, successor(n))) |- in(c.term, app(h, successor(n)))) by Hypothesis + have((in(n, N), in(c.term, app(h, successor(n)))) |- in(successor(n), N) /\ in(c.term, app(h, successor(n)))) by RightAnd(left, right) + thenHave((in(n, N), in(c.term, app(h, successor(n)))) |- exists(m, in(m, N) /\ in(c.term, app(h, m)))) by RightExists + have((hIsTheHeightFunction, in(n, N), in(c.term, app(h, successor(n)))) |- in(c.term, term)) by Apply(ADTThm.equivalenceRevApply).on(lastStep, termHasHeight.asInstanceOf) + + // STEP 2: Prove that if the inductive arguments of the constructor have height then the instance of the constructor is in the ADT. + have((hIsTheHeightFunction, in(n, N), constructorVarsInDomain(c, app(h, n))) |- in(c.term, term)) by Cut(heightConstructor(c), lastStep) + + // STEP 3: Prove that if the inductive arguments of the constructor are in the ADT then they have a height and therefore + // the instance of the constructor is in the ADT. + thenHave((hIsTheHeightFunction, in(n, N) /\ constructorVarsInDomain(c, app(h, n))) |- in(c.term, term)) by LeftAnd + thenHave((hIsTheHeightFunction, exists(n, in(n, N) /\ constructorVarsInDomain(c, app(h, n)))) |- in(c.term, term)) by LeftExists + have((hIsTheHeightFunction, constructorVarsInDomain(c, term)) |- in(c.term, term)) by Cut(termsHaveHeightForward, lastStep) + + // STEP 4: Remove lingering assumptions + thenHave((exists(h, hIsTheHeightFunction), constructorVarsInDomain(c, term)) |- in(c.term, term)) by LeftExists + have(constructorVarsInDomain(c, term) |- in(c.term, term)) by Cut(heightFunctionExistence, lastStep) + } + }) + .toMap + + // ************************ + // * STRUCTURAL INDUCTION * + // ************************ + + /** + * Lemma --- An element has height n + 1 if and only if it is the instance of some constructor with inductive arguments of height n. + * + * ` x ∈ height(n + 1) <=> x = c(x1, ..., xn) for some c and xi, ..., xj ∈ height(n)` + */ + private lazy val heightSuccessorStrong = Lemma((hIsTheHeightFunction, in(n, N)) |- in(x, app(h, successor(n))) <=> isConstructor(x, app(h, n))) { + val forward = have((hIsTheHeightFunction, in(n, N)) |- isInIntroductionFunctionImage(app(h, n))(x) ==> isConstructor(x, app(h, n))) subproof { + + def inductionFormula(n: Term): Formula = isInIntroductionFunctionImage(app(h, n))(x) ==> isConstructor(x, app(h, n)) + val inductionFormulaN: Formula = inductionFormula(n) + val inductionFormulaSuccN: Formula = inductionFormula(successor(n)) + + // STEP 1.1 : Base case + val isContructorXHEmptySet = isConstructor(x, app(h, emptySet)) + val baseCaseLeft = have(isContructorXHEmptySet |- isContructorXHEmptySet) by Hypothesis + val baseCaseRight = have((hIsTheHeightFunction, in(x, app(h, emptySet))) |- ()) by Restate.from(heightZero) + have((hIsTheHeightFunction, isInIntroductionFunctionImage(app(h, emptySet))(x)) |- isContructorXHEmptySet) by LeftOr(baseCaseLeft, baseCaseRight) + thenHave(hIsTheHeightFunction |- isInIntroductionFunctionImage(app(h, emptySet))(x) ==> isContructorXHEmptySet) by RightImplies + val inductiveCaseRemaining = have((hIsTheHeightFunction, forall(n, in(n, N) ==> (inductionFormulaN ==> inductionFormulaSuccN))) |- forall(n, in(n, N) ==> inductionFormulaN)) by Cut( + lastStep, + ADTThm.natInduction of (P := lambda(n, inductionFormulaN)) + ) + + // STEP 1.2: Unfolding the definition of subset + have(subset(app(h, n), app(h, successor(n))) |- forall(z, in(z, app(h, n)) ==> in(z, app(h, successor(n))))) by Cut( + subsetAxiom of (x := app(h, n), y := app(h, successor(n))), + ADTThm.equivalenceApply of (p1 := subset(app(h, n), app(h, successor(n))), p2 := forall(z, in(z, app(h, n)) ==> in(z, app(h, successor(n))))) + ) + val subsetElimination = thenHave(subset(app(h, n), app(h, successor(n))) |- in(y, app(h, n)) ==> in(y, app(h, successor(n)))) by InstantiateForall(y) + + // STEP 1.3 : Use monotonicity to prove that y ∈ height(n) => y ∈ height(n + 1) + have(in(n, N) |- in(successor(n), N)) by Cut(ADTThm.successorIsNat, ADTThm.equivalenceApply of (p1 := in(n, N), p2 := in(successor(n), N))) + have((hIsTheHeightFunction, in(n, N), subset(n, successor(n))) |- subset(app(h, n), app(h, successor(n)))) by Cut(lastStep, heightMonotonic of (n := successor(n), m := n)) + have((hIsTheHeightFunction, in(n, N)) |- subset(app(h, n), app(h, successor(n)))) by Cut(ADTThm.subsetSuccessor, lastStep) + val liftHeight = have((hIsTheHeightFunction, in(n, N)) |- in(y, app(h, n)) ==> in(y, app(h, successor(n)))) by Cut(lastStep, subsetElimination) + + // STEP 1.4 : Generalize the above result to show that if for some c, x = c(x1, ..., xn) with xi, ..., xj ∈ height(n) + // then for some c', x = c'(x1, ..., xn) with xi, ..., xj ∈ height(n + 1). + + // Caching + val isConstructorXHN = isConstructor(x, app(h, n)) + val isConstructorXHSuccN = isConstructor(x, app(h, successor(n))) + val liftConstructorHeight = + if constructors.size == 0 then have((hIsTheHeightFunction, in(n, N), isConstructorXHN) |- isConstructorXHSuccN) by Restate + else + val liftConstructorHeightOrSequence = + for c <- constructors yield + + // Caching + val isConstructorCXHN = isConstructor(c, x, app(h, n)) + val isConstructorCXHSuccN = isConstructor(c, x, app(h, successor(n))) + val constructorVarsInHN = constructorVarsInDomain(c, app(h, n)) + val constructorVarsInHSuccN = constructorVarsInDomain(c, app(h, successor(n))) + + if c.arity == 0 then have((hIsTheHeightFunction, in(n, N), isConstructorCXHN) |- isConstructorCXHSuccN) by Restate + else + val liftHeightAndSequence = + for (v, ty) <- c.signature + yield have((hIsTheHeightFunction, in(n, N), constructorVarsInHN) |- in(v, ty.getOrElse(app(h, successor(n))))) by Weakening(liftHeight of (y := v)) + + val left = have((hIsTheHeightFunction, in(n, N), constructorVarsInHN) |- constructorVarsInHSuccN) by RightAnd(liftHeightAndSequence: _*) + val right = have(x === c.term |- x === c.term) by Hypothesis + + have((hIsTheHeightFunction, in(n, N), constructorVarsInHN, (x === c.term)) |- constructorVarsInHSuccN /\ (x === c.term )) by RightAnd( + left, + right + ) + thenHave((hIsTheHeightFunction, in(n, N), constructorVarsInHN /\ (x === c.term)) |- constructorVarsInHSuccN /\ (x === c.term)) by LeftAnd + thenHave((hIsTheHeightFunction, in(n, N), constructorVarsInHN /\ (x === c.term)) |- isConstructorCXHSuccN) by QuantifiersIntro(c.variables) + thenHave((hIsTheHeightFunction, in(n, N), isConstructorCXHN) |- isConstructorCXHSuccN) by QuantifiersIntro(c.variables) + + thenHave((hIsTheHeightFunction, in(n, N), isConstructorCXHN) |- isConstructorXHSuccN) by Weakening + + have((hIsTheHeightFunction, in(n, N), isConstructorXHN) |- isConstructorXHSuccN) by LeftOr(liftConstructorHeightOrSequence: _*) + + // STEP 1.5: Show that x ∈ introductionFunction(height(n + 1)) => for some c, x = c(x1, ..., xn) + // with xi, ..., xj ∈ height(n + 1). + val heightSuccessorWeakForward = have((hIsTheHeightFunction, in(n, N), in(x, app(h, successor(n)))) |- isInIntroductionFunctionImage(app(h, n))(x)) by Cut( + heightSuccessorWeak, + ADTThm.equivalenceApply of (p1 := in(x, app(h, successor(n))), p2 := isInIntroductionFunctionImage(app(h, n))(x)) + ) + have((inductionFormulaN, isInIntroductionFunctionImage(app(h, n))(x)) |- isConstructorXHN) by Restate + have((hIsTheHeightFunction, in(n, N), in(x, app(h, successor(n))), inductionFormulaN) |- isConstructorXHN) by Cut(heightSuccessorWeakForward, lastStep) + val right = have((hIsTheHeightFunction, in(n, N), in(x, app(h, successor(n))), inductionFormulaN) |- isConstructorXHSuccN) by Cut(lastStep, liftConstructorHeight) + val left = have(isConstructorXHSuccN |- isConstructorXHSuccN) by Hypothesis + have((hIsTheHeightFunction, in(n, N), inductionFormulaN, isInIntroductionFunctionImage(app(h, successor(n)))(x)) |- isConstructorXHSuccN) by LeftOr(left, right) + + // STEP 1.6: Conclude + thenHave((hIsTheHeightFunction, in(n, N), inductionFormulaN) |- inductionFormulaSuccN) by RightImplies + thenHave((hIsTheHeightFunction, in(n, N)) |- inductionFormulaN ==> inductionFormulaSuccN) by RightImplies + thenHave(hIsTheHeightFunction |- in(n, N) ==> (inductionFormulaN ==> inductionFormulaSuccN)) by RightImplies + thenHave(hIsTheHeightFunction |- forall(n, in(n, N) ==> (inductionFormulaN ==> inductionFormulaSuccN))) by RightForall + have(hIsTheHeightFunction |- forall(n, in(n, N) ==> inductionFormulaN)) by Cut(lastStep, inductiveCaseRemaining) + thenHave(hIsTheHeightFunction |- in(n, N) ==> inductionFormulaN) by InstantiateForall(n) + } + + // STEP 2: Prove the backward implication + val backward = have((hIsTheHeightFunction, in(n, N)) |- isConstructor(x, app(h, n)) ==> isInIntroductionFunctionImage(app(h, n))(x)) by Restate + + // STEP 3: Conclude + have((hIsTheHeightFunction, in(n, N)) |- isInIntroductionFunctionImage(app(h, n))(x) <=> isConstructor(x, app(h, n))) by RightIff(forward, backward) + have(thesis) by Apply(ADTThm.equivalenceRewriting).on(lastStep, heightSuccessorWeak.asInstanceOf) + } + + /** + * Generates the structural inductive case for a given constructor. + * + * @param c the constructor + */ + lazy val inductiveCase: Map[SyntacticConstructor, Formula] = constructors + .map(c => + c -> c.signature.foldRight[Formula](P(c.term))((el, fc) => + val (v, ty) = el + ty match + case Self => forall(v, in(v, term) ==> (P(v) ==> fc)) + case GroundType(t) => forall(v, in(v, t) ==> fc) + ) + ) + .toMap + + /** + * Lemma --- Structural induction principle for this ADT. + * + * `base cases => inductive cases => ∀x ∈ ADT. P(x)` + */ + lazy val induction = Lemma(constructors.foldRight[Formula](forall(x, in(x, term) ==> P(x)))((c, f) => inductiveCase(c) ==> f)) { + + // List of cases to prove for structural induction to hold + val structuralInductionPreconditions: Formula = /\(constructors.map(inductiveCase)) + + // We want to prove the claim by induction on the height of n, i.e. prove that for any + // n in N, P holds. + def inductionFormula(n: Term): Formula = forall(x, in(x, app(h, n)) ==> P(x)) + val inductionFormulaN: Formula = inductionFormula(n) + + // STEP 1: Prove the base case + have(hIsTheHeightFunction |- in(x, app(h, emptySet)) ==> P(x)) by Weakening(heightZero) + val zeroCase = thenHave(hIsTheHeightFunction |- inductionFormula(emptySet)) by RightForall + + val inductiveCaseRemaining = have((hIsTheHeightFunction, forall(n, in(n, N) ==> (inductionFormulaN ==> inductionFormula(successor(n))))) |- forall(n, in(n, N) ==> inductionFormulaN)) by Cut( + zeroCase, + ADTThm.natInduction of (P := lambda(n, inductionFormulaN)) + ) + + // STEP 2: Prove the inductive case + val succCase = have((hIsTheHeightFunction, structuralInductionPreconditions) |- forall(n, in(n, N) ==> (inductionFormulaN ==> inductionFormula(successor(n))))) subproof { + + // STEP 2.1 : Prove that if the x = c(x1, ..., xn) for some c and xi, ..., xj ∈ height(n) then P(x) holds. + val isConstructorImpliesP = have((hIsTheHeightFunction, structuralInductionPreconditions, in(n, N), inductionFormulaN, isConstructor(x, app(h, n))) |- P(x)) subproof { + + if constructors.isEmpty then have(thesis) by Restate + else + val orSeq = + (for c <- constructors yield + + // Caching + val constructorPrecondition = inductiveCase(c) + val constructorVarsInHN = constructorVarsInDomain(c, app(h, n)) + val constructorVarsInHNEx = ∃(n, in(n, N) /\ constructorVarsInDomain(c, app(h, n))) + val constructorVarsInTerm = constructorVarsInDomain(c, term) + + // STEP 2.1.1: Prove that if xi, ..., xj ∈ height(n) then xi, ..., xj ∈ ADT. + val constructorQuantVarsInHNToTerm = have((hIsTheHeightFunction, in(n, N), constructorVarsInHN) |- constructorVarsInTerm) subproof { + have((hIsTheHeightFunction, in(n, N), constructorVarsInHN) |- in(n, N) /\ constructorVarsInHN) by Restate + val consVarL = thenHave((hIsTheHeightFunction, in(n, N), constructorVarsInHN) |- constructorVarsInHNEx) by RightExists + have((constructorVarsInTerm <=> constructorVarsInHNEx, constructorVarsInHNEx) |- constructorVarsInTerm) by Restate.from( + ADTThm.equivalenceRevApply of (p1 := constructorVarsInTerm, p2 := constructorVarsInHNEx) + ) + have((hIsTheHeightFunction, constructorVarsInHNEx) |- constructorVarsInTerm) by Cut( + termsHaveHeight(c), + lastStep + ) + have(thesis) by Cut(consVarL, lastStep) + } + + + // STEP 2.1.2: Prove that if xi, ..., xj ∈ height(n) then P(c(x1, ..., xn)). + have((hIsTheHeightFunction, constructorPrecondition, in(n, N), inductionFormulaN, constructorVarsInHN) |- constructorPrecondition) by Restate + + c.signature + .foldLeft(lastStep)((fact, el) => + val (v, ty) = el + + fact.statement.right.head match + case Forall(_, factCclWithoutForall) => + thenHave((hIsTheHeightFunction, constructorPrecondition, in(n, N), inductionFormulaN, constructorVarsInHN) |- factCclWithoutForall) by InstantiateForall(v) + + factCclWithoutForall match + case Implies(membership, subformula) => + ty match + case Self => + subformula match + case Implies(hypothesis, subSubFormula) => + val proofSubSubFormula = thenHave( + (hIsTheHeightFunction, constructorPrecondition, in(n, N), inductionFormulaN, constructorVarsInTerm, constructorVarsInHN, P(v)) |- subSubFormula + ) by Weakening + + have(inductionFormulaN |- inductionFormulaN) by Hypothesis + thenHave(inductionFormulaN |- in(v, app(h, n)) ==> P(v)) by InstantiateForall(v) + thenHave((inductionFormulaN, constructorVarsInHN) |- P(v)) by Weakening + + have((hIsTheHeightFunction, constructorPrecondition, in(n, N), inductionFormulaN, constructorVarsInTerm, constructorVarsInHN) |- subSubFormula) by Cut( + lastStep, + proofSubSubFormula + ) + have((hIsTheHeightFunction, constructorPrecondition, in(n, N), inductionFormulaN, constructorVarsInHN) |- subSubFormula) by Cut( + constructorQuantVarsInHNToTerm, + lastStep + ) + + case _ => throw UnreachableException + + case GroundType(t) => + thenHave((hIsTheHeightFunction, constructorPrecondition, in(n, N), inductionFormulaN, constructorVarsInHN) |- subformula) by Restate + case _ => throw UnreachableException + case _ => throw UnreachableException + ) + + thenHave((hIsTheHeightFunction, constructorPrecondition, in(n, N), inductionFormulaN, constructorVarsInHN) |- P(c.term)) by Restate + + // STEP 2.1.3: Prove that if xi, ..., xj ∈ height(n) then P(x). + thenHave((hIsTheHeightFunction, constructorPrecondition, in(n, N), inductionFormulaN, constructorVarsInHN, x === c.term) |- P(x)) by RightSubstEq + .withParametersSimple(List((x, c.term)), lambda(x, P(x))) + + thenHave((hIsTheHeightFunction, constructorPrecondition, in(n, N), inductionFormulaN, constructorVarsInHN /\ (x === c.term)) |- P(x)) by LeftAnd + + thenHave((hIsTheHeightFunction, constructorPrecondition, in(n, N), inductionFormulaN, isConstructor(c, x, app(h, n))) |- P(x)) by QuantifiersIntro(c.variables) + thenHave((hIsTheHeightFunction, structuralInductionPreconditions, in(n, N), inductionFormulaN, isConstructor(c, x, app(h, n))) |- P(x)) by Weakening + ).toSeq + + + have((hIsTheHeightFunction, structuralInductionPreconditions, in(n, N), inductionFormulaN, isConstructor(x, app(h, n))) |- P(x)) by LeftOr(orSeq: _*) + } + + // STEP 2.2: Prove that if x ∈ height(n + 1) then P(x) holds. + have((hIsTheHeightFunction, in(n, N), in(x, app(h, successor(n)))) |- isConstructor(x, app(h, n))) by Cut( + heightSuccessorStrong, + ADTThm.equivalenceApply of (p1 := in(x, app(h, successor(n))), p2 := isConstructor(x, app(h, n))) + ) + have((hIsTheHeightFunction, structuralInductionPreconditions, in(n, N), inductionFormulaN, in(x, app(h, successor(n)))) |- P(x)) by Cut(lastStep, isConstructorImpliesP) + + // STEP 2.3: Conclude + thenHave((hIsTheHeightFunction, structuralInductionPreconditions, in(n, N), inductionFormulaN) |- in(x, app(h, successor(n))) ==> P(x)) by RightImplies + + thenHave((hIsTheHeightFunction, structuralInductionPreconditions, in(n, N), inductionFormulaN) |- inductionFormula(successor(n))) by RightForall + thenHave((hIsTheHeightFunction, structuralInductionPreconditions, in(n, N)) |- inductionFormulaN ==> inductionFormula(successor(n))) by RightImplies + thenHave((hIsTheHeightFunction, structuralInductionPreconditions) |- in(n, N) ==> (inductionFormulaN ==> inductionFormula(successor(n)))) by RightImplies + thenHave(thesis) by RightForall + } + + // STEP 3: Conclude + + have((hIsTheHeightFunction, structuralInductionPreconditions) |- forall(n, in(n, N) ==> inductionFormulaN)) by Cut(lastStep, inductiveCaseRemaining) + thenHave((hIsTheHeightFunction, structuralInductionPreconditions) |- in(n, N) ==> inductionFormulaN) by InstantiateForall(n) + thenHave((hIsTheHeightFunction, structuralInductionPreconditions, in(n, N)) |- inductionFormulaN) by Restate + thenHave((hIsTheHeightFunction, structuralInductionPreconditions, in(n, N)) |- in(x, app(h, n)) ==> P(x)) by InstantiateForall(x) + thenHave((hIsTheHeightFunction, structuralInductionPreconditions, in(n, N) /\ in(x, app(h, n))) |- P(x)) by Restate + val exImpliesP = thenHave((hIsTheHeightFunction, structuralInductionPreconditions, exists(n, in(n, N) /\ in(x, app(h, n)))) |- P(x)) by LeftExists + have((hIsTheHeightFunction, in(x, term)) |- exists(n, in(n, N) /\ in(x, app(h, n)))) by Cut(termHasHeight, ADTThm.equivalenceApply of (p1 := in(x, term), p2 := exists(n, in(n, N) /\ in(x, app(h, n))))) + + have((hIsTheHeightFunction, structuralInductionPreconditions, in(x, term)) |- P(x)) by Cut(lastStep, exImpliesP) + thenHave((exists(h, hIsTheHeightFunction), structuralInductionPreconditions, in(x, term)) |- P(x)) by LeftExists + have((structuralInductionPreconditions, in(x, term)) |- P(x)) by Cut(heightFunctionExistence, lastStep) + thenHave(structuralInductionPreconditions |- in(x, term) ==> P(x)) by RightImplies + thenHave(structuralInductionPreconditions |- forall(x, in(x, term) ==> P(x))) by RightForall + } + +} + +/** + * Semantic set theoretical interpretation of a constructor for an algebraic data type. + * That is a function from the arguments' domains to the set of instances of the algebraic data type. + * + * `c : T1 -> ... -> Tn -> ADT` + * + * Since polymorphism is supported, this function is parametrized by the type variables appearing inside + * the specification of the ADT. In this sense, a constructor is a class function whose parameters are + * type variables and whose body is the set theoretic function detailed above. With polymorphism, the signature + * thus becomes: + * + * `c(X1, ..., Xn) : T1(X1, ..., Xn) -> ... -> Tn(X1, ..., Xn) -> ADT(X1, ..., Xn)` + * + * Injectivity and introduction rule are proven within this class. + * + * @constructor generates a class function for this constructor + * @param line the line at which this constructor is defined. Usually fetched automatically by the compiler. + * Used for error reporting + * @param file the file in which this constructor is defined. Usually fetched automatically by the compiler. + * Used for error reporting + * @param name the name of this constructor + * @param underlying the syntactic constructor + * @param adt the algebraic data type to which this constructor belongs + */ +private class SemanticConstructor[N <: Arity](using line: sourcecode.Line, file: sourcecode.File)( + val name: String, + val underlying: SyntacticConstructor, + val adt: SyntacticADT[N], +) { + /** + * Full name of this constructor, i.e. concatenation of the ADT name and this constructor name. + */ + val fullName: String = s"${adt.name}/${name}" + + /** + * Type variables that may appear in the signature of this constructor. + */ + val typeVariables: Variable ** N = adt.typeVariables + + /** + * Sequence of type variables that may appear in the signature of this constructor. + */ + val typeVariablesSeq: Seq[Variable] = adt.typeVariablesSeq + + /** + * Number of type variables in the signature of this constructor. + */ + val typeArity: N = adt.typeArity + + /** + * Variables used for constructor arguments. + */ + val variables: Seq[Variable] = underlying.variables + + /** + * Variables used for constructor arguments. + */ + val variables1: Seq[Variable] = underlying.variables1 + + /** + * Alternative set of variables used for constructor arguments. + */ + val variables2: Seq[Variable] = underlying.variables2 + + /** + * Set of variables for this constructor with their respective domain or a + * special symbol in case the domain is the ADT. + * + * @param vars variables + */ + def syntacticSignature(vars: Seq[Variable]): Seq[(Variable, ConstructorArgument)] = + vars.zip(underlying.specification) + + /** + * Variables of this constructor with their respective domain or a special symbol in case the domain is the ADT. + */ + val syntacticSignature: Seq[(Variable, ConstructorArgument)] = underlying.signature + + /** + * Constructor arguments with their respective domains. + * + * @param vars this constructor arguments + */ + def semanticSignature(vars: Seq[Variable]): Seq[(Variable, Term)] = vars.zip(underlying.specification.map(_.getOrElse(adt.term))) + + /** + * Variables of this constructor with their respective domains. + */ + val semanticSignature: Seq[(Variable, Term)] = semanticSignature(variables) + + /** + * Variables of this constructor with their respective domains. + */ + val semanticSignature1: Seq[(Variable, Term)] = semanticSignature + + /** + * Alternative set of variables of this constructor with their respective domain. + */ + val semanticSignature2: Seq[(Variable, Term)] = semanticSignature(variables2) + + /** + * Type of this constructor. + */ + val typ: Term = semanticSignature.unzip._2.foldRight[Term](adt.term)((a, b) => a |=> b) + + /** + * Arity of this constructor. + */ + val arity: Int = variables.size + + /** + * Internal representation of this constructor (i.e. as a tuple). + */ + val structuralTerm: Term = underlying.term + /** + * Internal representation of this constructor (i.e. as a tuple). + */ + val structuralTerm1: Term = underlying.term1 + /** + * Internal representation of this constructor (i.e. as a tuple) with an alternative set of variables. + */ + val structuralTerm2: Term = underlying.term2 + + /** + * Definition of this constructor. + * + * Formally it is the only function whose codomain is the ADT such that for all variables x1 :: S1, ...,xn :: Sn + * c * x1 * ... * xn = (tagc, (x1, (..., (xn, ∅)...)) + */ + private val untypedDefinition = (c :: typ) /\ forallSeq(variables, wellTypedFormula(semanticSignature) ==> (appSeq(c)(variables) === structuralTerm)) + + /** + * Lemma --- Uniqueness of this constructor. + * + * ` ∃!c. c ∈ T1 -> ... -> Tn -> ADT /\ ∀x1, ..., xn. c * x1 * ...* xn = (tagc, (x1, (..., (xn, ∅)...))` + */ + private val uniqueness = Axiom(existsOne(c, untypedDefinition)) + + /** + * Class function representing this constructor + */ + private val classFunction = FunctionDefinition[N](fullName, line.value, file.value)(typeVariablesSeq, c, untypedDefinition, uniqueness).label + + /** + * Identifier of this constructor. + */ + val id: Identifier = classFunction.id + + /** + * This constructor in which type variables are instantiated. + * + * @param args the instances of this constructor's type variables + */ + def term(args: Seq[Term]): Term = classFunction.applySeq(args) + + /** + * Constructor where type variables are instantiated with schematic variables. + */ + private val term: Term = term(typeVariablesSeq) + + /** + * Constructor where type variables are instantiated with schematic variables and arguments instantiated. + * + * @param args the instances of this constructor arguments + */ + def appliedTerm(args: Seq[Term]): Term = appSeq(term)(args) + + /** + * Constructor where type variables and arguments are instantiated with schematic variables. + */ + val appliedTerm: Term = appliedTerm(variables) + + /** + * Constructor where type variables and arguments are instantiated with schematic variables. + */ + val appliedTerm1: Term = appliedTerm + + /** + * Constructor where type variables and arguments are instantiated with schematic variables. + * Arguments variables are however drawn from an alternative set of variables. + */ + val appliedTerm2: Term = appliedTerm(variables2) + + /** + * Lemma --- This constructor is equal to its internal representation. + * + * `∀x1, ..., xn. c * x1 * ... * xn = (tagc, (x1, (..., (xn, ∅)...))` + */ + val shortDefinition = Lemma(forallSeq(variables, wellTypedFormula(semanticSignature) ==> (appliedTerm === structuralTerm))) { + have(forall(c, (term === c) <=> untypedDefinition)) by Exact(classFunction.definition) + thenHave((term === term) <=> ((term :: typ) /\ forallSeq(variables, wellTypedFormula(semanticSignature) ==> (appliedTerm === structuralTerm)))) by InstantiateForall(term) + thenHave(thesis) by Weakening + } + + /** + * Lemma --- Introduction rule for this constructor. + * + * `∀A1, ..., Am. c(X1, ..., Xm) ∈ T1(X1, ..., Xm) -> ... -> Tn(X1, ..., Xm) -> ADT(X1, ..., Xm)` + * + * where Ai are the type variables of the ADT and Ti are domains of this constructor arguments. + * + * e.g. `∀T. nil(T) ∈ list(T)` and `∀T. cons(T) ∈ T -> list(T) -> list(T)` + */ + val intro = Lemma(forallSeq(typeVariablesSeq, term :: typ)) { + have(forall(c, (term === c) <=> untypedDefinition)) by Exact(classFunction.definition) + thenHave((term === term) <=> ((term :: typ) /\ forallSeq(variables, wellTypedFormula(semanticSignature) ==> (appliedTerm === structuralTerm)))) by InstantiateForall(term) + thenHave(term :: typ) by Weakening + thenHave(thesis) by QuantifiersIntro(typeVariablesSeq) + } + + /** + * Theorem --- Injectivity of constructors. + * + * Two instances of this constructor are equal if and only if all of their arguments are pairwise equal + * + * e.g. Cons(head1, tail1) === Cons(head2, tail2) <=> head1 === head2 /\ tail1 === tail2 + */ + lazy val injectivity = + val vars1WellTyped: Set[Formula] = wellTypedSet(semanticSignature1) + val vars2WellTyped: Set[Formula] = wellTypedSet(semanticSignature2) + + if arity == 0 then + Lemma(appliedTerm1 === appliedTerm2) { + have(thesis) by RightRefl + } + else + Lemma(vars1WellTyped ++ vars2WellTyped |- simplify((appliedTerm1 === appliedTerm2) <=> (variables1 === variables2))) { + + have(forallSeq(variables1, wellTypedFormula(semanticSignature1) ==> (appliedTerm1 === structuralTerm1))) by Restate.from(shortDefinition) + + variables1.foldLeft(lastStep)((fact, v) => + fact.statement.right.head match + case Forall(_, phi) => thenHave(phi) by InstantiateForall(v) + case _ => throw UnreachableException + ) + val tappTerm1Def = thenHave(vars1WellTyped |- appliedTerm1 === structuralTerm1) by Restate + + // println(forallSeq(variables1, wellTypedFormula(semanticSignature1) ==> (appliedTerm1 === structuralTerm1))) + // println(forallSeq(variables2, wellTypedFormula(semanticSignature2) ==> (appliedTerm2 === structuralTerm))) + have(forallSeq(variables2, wellTypedFormula(semanticSignature2) ==> (appliedTerm2 === structuralTerm2))) by Restate.from(shortDefinition) + + variables2.foldLeft(lastStep)((fact, v) => + fact.statement.right.head match + case Forall(_, phi) => thenHave(phi) by InstantiateForall(v) + case _ => throw UnreachableException + ) + val tappTerm2Def = thenHave(vars2WellTyped |- appliedTerm2 === structuralTerm2) by Restate + + + val s0 = have(vars2WellTyped + (appliedTerm1 === appliedTerm2) |- appliedTerm1 === structuralTerm2) by Cut(tappTerm2Def, + ADTThm.altEqualityTransitivity of (x := appliedTerm1, y := appliedTerm2, z := structuralTerm2)) + have(vars1WellTyped + (appliedTerm1 === structuralTerm2) |- structuralTerm1 === structuralTerm2) by Cut(tappTerm1Def, + ADTThm.altEqualityTransitivity of (x := structuralTerm1, y := appliedTerm1, z := structuralTerm2)) + have((vars1WellTyped ++ vars2WellTyped) + (appliedTerm1 === appliedTerm2) |- structuralTerm1 === structuralTerm2) by Cut(s0, lastStep) + val forward = thenHave(vars1WellTyped ++ vars2WellTyped |- (appliedTerm1 === appliedTerm2) ==> (structuralTerm1 === structuralTerm2)) by RightImplies + + val s1 = have(vars1WellTyped + (structuralTerm1 === structuralTerm2) |- appliedTerm1 === structuralTerm2) by Cut(tappTerm1Def, + ADTThm.altEqualityTransitivity of (x := appliedTerm1, y := structuralTerm1, z := structuralTerm2)) + have(vars2WellTyped + (appliedTerm1 === structuralTerm2) |- appliedTerm1 === appliedTerm2) by Cut(tappTerm2Def, + ADTThm.altEqualityTransitivity of (x := appliedTerm1, y := structuralTerm2, z := appliedTerm2)) + have((vars1WellTyped ++ vars2WellTyped) + (structuralTerm1 === structuralTerm2) |- appliedTerm1 === appliedTerm2) by Cut(s1, lastStep) + val backward = thenHave(vars1WellTyped ++ vars2WellTyped |- (structuralTerm1 === structuralTerm2) ==> (appliedTerm1 === appliedTerm2)) by RightImplies + + val definitionUnfolding = have(vars1WellTyped ++ vars2WellTyped |- (appliedTerm1 === appliedTerm2) <=> (structuralTerm1 === structuralTerm2)) by RightIff(forward, backward) + have((appliedTerm1 === appliedTerm2) <=> (structuralTerm1 === structuralTerm2) |- (appliedTerm1 === appliedTerm2) <=> /\(variables1.zip(variables2).map(_ === _))) by Sorry + Cut( + underlying.injectivity, + ADTThm.equivalenceRewriting of (p1 := (appliedTerm1 === appliedTerm2), p2 := (structuralTerm1 === structuralTerm2), p3 := /\(variables1.zip(variables2).map(_ === _))) + ) + have(thesis) by Cut(definitionUnfolding, lastStep) + } + + + /** + * Case generated by this constructor when performing a proof by induction + */ + lazy val inductiveCase: Formula = + syntacticSignature.foldRight[Formula](P(appliedTerm1)) + ((el, fc) => + val (v, typ) = el + typ match + case Self => forall(v, v :: adt.term ==> (P(v) ==> fc)) + case GroundType(t) => forall(v, v :: t ==> fc) + ) +} + +/** + * Semantic set theoretical interpretation of an algebraic data type. That is the least set closed under [[SemanticConstructor]]. + * + * E.g. list is the smallest set containing nil and closed under the cons function. + * + * Injectivity between different constructors, structural induction and elimination rule are proved within this class. + * + * @constructor generates a semantic interpretation for this ADT out of a syntactic one + * @param underlying the syntactic representation of this ADT + * @param constructors constructors of this ADT + */ + private class SemanticADT[N <: Arity]( + val underlying: SyntacticADT[N], + val constructors: Seq[SemanticConstructor[N]] + ) { + + /** + * Name of this ADT. + */ + val name: String = underlying.name + + /** + * Identifier of this ADT. + */ + val id: Identifier = underlying.polymorphicTerm.id + + /** + * Type variables of this ADT. + */ + val typeVariables: Variable ** N = underlying.typeVariables + + /** + * Sequence of type variables of this ADT. + */ + val typeVariablesSeq: Seq[Variable] = underlying.typeVariablesSeq + + /** + * Number of type variables in this ADT. + */ + val typeArity: N = underlying.typeArity + + /** + * Term representing this ADT where type variables are instantiated with given arguments. + * + * @param args the instances of this ADT type variables + */ + def term(args: Seq[Term]) = underlying.polymorphicTerm.applySeq(args) + + /** + * Term representing this ADT where type variables are instantiated with schematic variables. + */ + val term: Term = underlying.term + + /** + * Theorem --- Injectivity of constructors. + * + * Two instances of different construcors are always different. + * + * e.g. Nil != Cons(head, tail) + */ + def injectivity(c1: SemanticConstructor[N], c2: SemanticConstructor[N]) = + + val vars1WellTyped: Set[Formula] = wellTypedSet(c1.semanticSignature1) + val vars2WellTyped: Set[Formula] = wellTypedSet(c2.semanticSignature2) + + Lemma(vars1WellTyped ++ vars2WellTyped |- !(c1.appliedTerm1 === c2.appliedTerm2)) { + + val defUnfolding = have((vars1WellTyped ++ vars2WellTyped) + (c1.appliedTerm1 === c2.appliedTerm2) |- c1.structuralTerm1 === c2.structuralTerm2) subproof { + have(forallSeq(c1.variables1, wellTypedFormula(c1.semanticSignature1) ==> (c1.appliedTerm1 === c1.structuralTerm1))) by Restate.from(c1.shortDefinition) + + c1.variables1.foldLeft(lastStep)((fact, v) => + fact.statement.right.head match + case Forall(_, phi) => thenHave(phi.substitute(v := x)) by InstantiateForall(x) + case _ => throw UnreachableException + ) + val tappTerm1Def = thenHave(vars1WellTyped |- c1.structuralTerm1 === c1.appliedTerm1) by Restate + + have(forallSeq(c2.variables2, wellTypedFormula(c2.semanticSignature2) ==> (c2.appliedTerm2 === c2.structuralTerm2))) by Restate.from(c2.shortDefinition) + + c2.variables2.foldLeft(lastStep)((fact, v) => + fact.statement.right.head match + case Forall(_, phi) => thenHave(phi) by InstantiateForall(v) + case _ => throw UnreachableException + ) + val tappTerm2Def = thenHave(vars2WellTyped |- c2.appliedTerm2 === c2.structuralTerm2) by Restate + + val s0 = have(vars2WellTyped + (c1.appliedTerm1 === c2.appliedTerm2) |- c1.appliedTerm1 === c2.structuralTerm2) by Cut( + tappTerm2Def, + ADTThm.altEqualityTransitivity of (x := c1.appliedTerm1, y := c2.appliedTerm2, z := c2.structuralTerm2) + ) + have(vars1WellTyped + (c1.appliedTerm1 === c2.structuralTerm2) |- c1.structuralTerm1 === c2.structuralTerm2) by Cut( + tappTerm1Def, + ADTThm.altEqualityTransitivity of (x := c1.structuralTerm1, y := c1.appliedTerm1, z := c2.structuralTerm2) + ) + have(thesis) by Cut(s0, lastStep) + } + + have(!(c1.structuralTerm1 === c2.structuralTerm2)) by Restate.from(underlying.injectivity(c1.underlying, c2.underlying)) + thenHave(c1.structuralTerm1 === c2.structuralTerm2 |- ()) by Restate + + have((vars1WellTyped ++ vars2WellTyped) + (c1.appliedTerm1 === c2.appliedTerm2) |- ()) by Cut(defUnfolding, lastStep) + } + + /** + * Theorem --- Structural induction principle for this ADT. + * + * `base cases => inductive cases => ∀x ∈ ADT. P(x)` + */ + lazy val induction = Lemma(constructors.foldRight[Formula](forall(x, x :: term ==> P(x)))((c, f) => c.inductiveCase ==> f)) { sp ?=> + constructors.foldRight[(Formula, Formula, sp.Fact)] { + val prop = forall(x, x :: term ==> P(x)) + (prop, prop, have(prop <=> prop) by Restate) + }((c, acc) => + val (oldBefore, oldAfter, fact) = acc + val newBefore = underlying.inductiveCase(c.underlying) ==> oldBefore + val newAfter = c.inductiveCase ==> oldAfter + + have(underlying.inductiveCase(c.underlying) <=> c.inductiveCase) subproof { + val wellTypedVars: Seq[Formula] = wellTyped(c.semanticSignature) + val wellTypedVarsSet = wellTypedVars.toSet + + + have(forallSeq(c.variables, wellTypedFormula(c.semanticSignature) ==> (c.appliedTerm === c.structuralTerm))) by Restate.from(c.shortDefinition) + if c.arity > 0 then + c.variables1.foldLeft(lastStep)((l, _) => + lastStep.statement.right.head match + case Forall(v, phi) => thenHave(phi) by InstantiateForall(v) + case _ => throw UnreachableException + ) + + val eq = thenHave(wellTypedVarsSet |- c.appliedTerm === c.structuralTerm) by Restate + have(P(c.appliedTerm) <=> P(c.appliedTerm)) by Restate + thenHave(c.structuralTerm === c.appliedTerm |- P(c.structuralTerm) <=> P(c.appliedTerm)) by RightSubstEq.withParametersSimple( + List((c.structuralTerm, c.appliedTerm)), + lambda(s, P(c.structuralTerm) <=> P(s)) + ) + have(wellTypedVarsSet |- P(c.structuralTerm) <=> P(c.appliedTerm)) by Cut(eq, lastStep) + + c.syntacticSignature + .foldRight[(Formula, Formula, Seq[Formula])]((P(c.structuralTerm), P(c.appliedTerm), wellTypedVars))((el, fc) => + val (v, ty) = el + val (fc1, fc2, wellTypedVars) = fc + ty match + case Self => + val wellTypedV: Formula = v :: term + have(wellTypedVars |- (P(v) ==> fc1) <=> (P(v) ==> fc2)) by Cut(lastStep, ADTThm.leftImpliesEquivalenceWeak of (p := P(v), p1 := fc1, p2 := fc2)) + thenHave(wellTypedVars.init |- wellTypedV ==> ((P(v) ==> fc1) <=> (P(v) ==> fc2))) by RightImplies + have(wellTypedVars.init |- (wellTypedV ==> (P(v) ==> fc1)) <=> (wellTypedV ==> (P(v) ==> fc2))) by Cut( + lastStep, + ADTThm.leftImpliesEquivalenceStrong of (p := wellTypedV, p1 := P(v) ==> fc1, p2 := P(v) ==> fc2) + ) + thenHave(wellTypedVars.init |- forall(v, (wellTypedV ==> (P(v) ==> fc1)) <=> (wellTypedV ==> (P(v) ==> fc2)))) by RightForall + have(wellTypedVars.init |- forall(v, (wellTypedV ==> (P(v) ==> fc1))) <=> forall(v, (wellTypedV ==> (P(v) ==> fc2)))) by Cut( + lastStep, + universalEquivalenceDistribution of (P := lambda(v, wellTypedV ==> (P(v) ==> fc1)), Q := lambda(v, wellTypedV ==> (P(v) ==> fc2))) + ) + (forall(v, wellTypedV ==> (P(v) ==> fc1)), forall(v, wellTypedV ==> (P(v) ==> fc2)), wellTypedVars.init) + case GroundType(t) => + thenHave(wellTypedVars.init |- v :: t ==> (fc1 <=> fc2)) by RightImplies + have(wellTypedVars.init |- (in(v, t) ==> fc1) <=> (v :: t ==> fc2)) by Cut(lastStep, ADTThm.leftImpliesEquivalenceStrong of (p := in(v, t), p1 := fc1, p2 := fc2)) + thenHave(wellTypedVars.init |- forall(v, (in(v, t) ==> fc1) <=> (v :: t ==> fc2))) by RightForall + have(wellTypedVars.init |- forall(v, (in(v, t) ==> fc1)) <=> forall(v, (v :: t ==> fc2))) by Cut( + lastStep, + universalEquivalenceDistribution of (P := lambda(v, in(v, t) ==> fc1), Q := lambda(v, v :: t ==> fc2)) + ) + (forall(v, (in(v, t) ==> fc1)), forall(v, (v :: t ==> fc2)), wellTypedVars.init) + ) + } + (newBefore, newAfter, have(newBefore <=> newAfter) by Apply(ADTThm.impliesEquivalence).on(lastStep, fact)) + ) + have(underlying.induction.statement.right.head |- thesis.right.head) by Cut( + lastStep, + ADTThm.equivalenceApply of ( + p1 := underlying.induction.statement.right.head, p2 := thesis.right.head + ) + ) + have(thesis) by Cut(underlying.induction, lastStep) + } + + /** + * Returns a map binding each constructor to formula describing whether x is an instance of it. + */ + private lazy val isConstructorMap: Map[SemanticConstructor[N], Formula] = + constructors.map(c => c -> existsSeq(c.variables, wellTypedFormula(c.semanticSignature) /\ (x === c.appliedTerm))).toMap + + /** + * Returns a formula describing whether x is an instance of one of this ADT's constructors. + */ + private lazy val isConstructor = + \/(constructors.map(c => isConstructorMap(c))) + + /** + * Theorem --- Pattern matching principle (also known as elimination rule) for this ADT. + * + * `x ∈ ADT |- x = c * x1 * ... * xn for some constructor c and xi, ..., xj ∈ ADT` + */ + lazy val elim = Lemma(x :: term |- simplify(isConstructor)) { + + // Induction preconditions with P(z) = z != x + val inductionPreconditionIneq = constructors.map(c => c -> c.inductiveCase.substitute((P -> lambda(z, !(x === z))))).toMap + val inductionPreconditionsIneq = /\(inductionPreconditionIneq.map(_._2)) + + // Weakening of the negation of the induction preconditions + val weakNegInductionPreconditionIneq: Map[SemanticConstructor[N], Formula] = constructors + .map(c => + c -> + c.semanticSignature + .foldRight[Formula](x === c.appliedTerm)((el, fc) => + val (v, t) = el + exists(v, (v :: t) /\ fc) + ) + ) + .toMap + + // STEP 1: Prove that if the induction preconditions with P(z) = z != x do not hold then x is the instance of some constructor + val strengtheningOfInductionPreconditions = have(!inductionPreconditionsIneq |- isConstructor) subproof { + if constructors.isEmpty then have(thesis) by Restate + else + + // STEP 1.1: Prove the claim for each constructor + val negInductionPreconditionsOrSequence = + for c <- constructors yield + + // STEP 1.1.1: Prove the strengthening of the negations of the induction preconditions + val conditionStrenghtening = have(!inductionPreconditionIneq(c) |- weakNegInductionPreconditionIneq(c)) subproof { + have(x === c.appliedTerm |- x === c.appliedTerm) by Hypothesis + + c.syntacticSignature + .foldRight(lastStep)((el, fact) => + val (v, ty) = el + val left = fact.statement.left.head + val right = fact.statement.right.head + + ty match + case Self => + thenHave(!(x === v) /\ left |- right) by Weakening + case _ => () + + val weakr = thenHave(in(v, ty.getOrElse(term)) /\ left |- right) by Weakening + val weakl = have(in(v, ty.getOrElse(term)) /\ left |- in(v, ty.getOrElse(term))) by Restate + + have((v :: ty.getOrElse(term)) /\ left |- (v :: ty.getOrElse(term)) /\ right) by RightAnd(weakl, weakr) + thenHave((v :: ty.getOrElse(term)) /\ left |- exists(v, (v :: ty.getOrElse(term)) /\ right)) by RightExists + thenHave(exists(v, (v :: ty.getOrElse(term)) /\ left) |- exists(v, (v :: ty.getOrElse(term)) /\ right)) by LeftExists + ) + + } + + // STEP 1.1.2: Conclude + // TODO: Change to a more efficient way of proving this + have(weakNegInductionPreconditionIneq(c) |- isConstructorMap(c)) by Tableau + have(!inductionPreconditionIneq(c) |- isConstructorMap(c)) by Cut(conditionStrenghtening, lastStep) + thenHave(!inductionPreconditionIneq(c) |- isConstructor) by Weakening + + have(thesis) by LeftOr(negInductionPreconditionsOrSequence: _*) + } + + // STEP 2: Conclude + have(inductionPreconditionsIneq |- forall(z, z :: term ==> !(x === z))) by Restate.from(induction of (P := lambda(z, !(x === z)))) + thenHave(inductionPreconditionsIneq |- x :: term ==> !(x === x)) by InstantiateForall(x) + val ind = thenHave(x :: term |- !inductionPreconditionsIneq) by Restate + have(x :: term |- isConstructor) by Cut(lastStep, strengtheningOfInductionPreconditions) + } + } + + + + + + diff --git a/lisa-sets/src/main/scala/lisa/maths/settheory/types/adt/package.scala b/lisa-sets/src/main/scala/lisa/maths/settheory/types/adt/package.scala new file mode 100644 index 00000000..7af2af24 --- /dev/null +++ b/lisa-sets/src/main/scala/lisa/maths/settheory/types/adt/package.scala @@ -0,0 +1,200 @@ +package lisa.maths.settheory.types + +/** + * Provides definitional mechanisms for Algebraic Data Types (ADTs) and tactics for reasoning about them. + * + * ===Usage=== + * + * In order to use ADTs, you need to import + * {{{ + * lisa.maths.settheory.types.adt.{*, given} + * }}} + * + * ====Defining an ADT==== + * + * ADTs can be defined using the following syntax: + * {{{ + * val define(adtName: ADT[N], constructors(c1, ..., cn)) = (X1, .., Xk) --> (T1, ..., Tn) | ... | (S1, ..., Sm) + * }}} + * + * where: + * - `adtName` is the identifier of the ADT + * - `N` is the number of poylmorphic variables + * - `c1 ... cn` are the identifiers of the different constructors of the ADT, + * - `X1, ..., Xk` are the polymorphic variables + * - `T1, ..., Tn, S1, ..., Sm` are the types defining the signature of each constructor. + * Note that `adtName` and `c1 ... cn` are scala identifiers, respectively referring to the ADT and the constructors. + * In addition, you cannot define two ADT with the same name, even in different scopes, as they introduce a new global definition. + * Type variables must be declarated as variables before being used. + * Here are some examples of ADT definitions: + * {{{ + * + * //variables declaration + * val A = variable + * + * // Definition of booleans with two constructors tru and fals. Each of them take no argument so their signature is () + * val define(bool: ADT, constructors(tru, fals)) = () | () + * + * // Definition of options with two constructors none and some. Options are polymorphic over a type variable A. + * // Their second constructor, some, has signature A has it takes only a value of type A. + * val define(option: ADT, constructors(none, some)) = A -> () | A + * + * // Recursive definition of lists with two constructors nil and cons. Lists are polymorphic over a type variable A. + * // The constructor cons takes two arguments of respectively type A and list(A) and append an element to + * // a sublist. + * val define(list: ADT, constructors(nil, cons)) = A -> () | (A, list) + * + * //Definition of natural numbers. + * val define(nat: ADT, constructors(zero, succ)) = () | nat + * }}} + * + * ====Using an ADT and its theorem==== + * + * Each constructor of an ADT comes with an introduction rule and an injectivity theorem. + * The introduction rule gives the type of the constructor and is of the form + * + * `∀ X1, ..., Xk. c(X1, ..., Xk) :: T1 -> ... Tn -> ADT(X1, ..., Xk)` + * + * The injection theorem stipulates that two instances of the same constructor are equal if and only if all their arguments are equal. + * + * For examples for lists we have + * + * nil introduction: `∀ A. nil(A) :: list(A)` + * + * cons introduction: `∀ A. cons(A) :: A -> list(A) -> list(A)` + * + * nil injectivity: `nil(A) = nil(A)` + * + * cons injectivity: `cons(A) * x0 * x1 = cons(A) * y0 * y1 <=> x0 = x1 /\ y0 = y1` + * + * Each ADT comes with an structural induction schema, an elimination rule (or pattern matching principle) and an injectivity theorem. + * + * Structural induction states that if a statement is true for each constructor assuming that the proposition is true for the constructor's + * arguments, then it is true for every element of the ADT. + * + * e.g. list induction: ` P(nil(A)) => (∀ x0 :: A. ∀ x1 :: list(A). P(x1) => P(cons * x0 * x1)) => ∀ x :: list(A). P(x)` + * + * Elimination rule is a direct consequence of induction and states that each instance of an ADT is an instance of one of its constructors + * + * e.g. list elimination: ` x :: list(A) => x = nil(A) \/ ∃ x0, x1. x = cons(A) * x0 * x1` + * + * Finally injectivity tells us that instances of different constructors are different + * + * e.g. nil/cons injectivity: `nil(A) != cons(A) * x0 * x1` + * + * ====Type Checking==== + * + * We provide a tactic to automatically type check instances of algebraic data types. + * It can be called using `TypeChecker.prove`. For examples instances of lists can be + * typechecked as follow. + * + * {{{ + * have(nil(A) :: list(A)) by TypeChecker.prove + * have((x :: A, l :: list(A)) |- cons * x * l :: list(A)) by TypeChecker.prove + * }}} + * + * ====Induction Tactic==== + * + * We provide a tactic for performing proofs by induction. + * The tactic can prove goals of the form + * + * ` ∀ x :: adt. P(x)` + * + * To work the user needs to provide a proof of P(c * x0 * ... * xn) for each constructor. + * The syntax of the tactic is of the following form: + * {{{ + * have(∀ x :: adt. P(x)) by Induction(adt) { + * Case(c1, v1, ..., vn) { + * // proof of (v1 :: T1, ..., vn :: Tn, P(vi), ..., P(vj)) |- P(c1 * v0 * ... * vn) + * } + * ... + * Case(ck, v1, ..., vm) { + * // proof of (v1 :: S1, ..., vm :: Sm, P(vi), ..., P(vj)) |- P(ck * v0 * ... * vn) + * } + * } + * }}} + * + * For lists it would look like: + * {{{ + * have(∀ x :: list(A). P(x)) by Induction(list) { + * Case(nil) { + * // ... + * have(P(nil)) by //Tactic to conclude the subcase + * } + * Case(cons, x, l) { + * // ... + * have((x :: A, l :: list(A), P(l)) |- P(cons * x * l)) by //Tactic to conclude the subcase + * } + * } + * }}} + * + * ====Defining functions==== + * + * Functions over ADT can also be defined via the following syntax: + * + * {{{ + * val myFunction = fun(adt, returnType) { + * Case(c1, v1, ..., vn) { + * body1 + * } + * ... + * Case(ck, v1, ..., vm) { + * bodyk + * } + * } + * }}} + * + * The body of each case is automatically typechecked at runtime. + * For example let's define the predecessor function over natural numbers + * + * {{{ + * val pred = fun(nat, nat) { + * Case(zero) { + * zero + * } + * Case(succ, n) { + * n + * } + * } + * }}} + * + * Recursive functions are not yet supported. + * + * ====Using functions==== + * + * Functions come with an introduction and elimination rules. + * Their introduction rule is of the form + * + * `∀ X1, ..., Xk. f(X1, ..., Xk) :: ADT(X1, ..., Xk) -> T` + * + * where `T` is the return type of the function + * + * On the other hand, we have an elimination rule for each constructor, giving the result of the function when applied to some + * constructor + * + * ` f * (ck * v1 * ... * vn) = body(ck) ` + * + * For example, for the `pred` function defined above the introduction rule would be + * + * `pred :: nat -> nat` + * + * and its elimination rules + * + * ` pred * zero = zero` + * + * ` pred * (succ * n) = n` + * + * Functions are also fully compatible with the typechecking tactic. We can for instance write: + * + * {{{ + * have(n :: nat |- pred * succ * n :: nat) + * }}} + * + * + */ +package object adt { + export ADTSyntax.{ |, define, constructors, adt_to_term, fun_to_term, constructor_to_term, Case, fun, -->} + export ADTSyntax.ADTBuilder.| + export lisa.maths.settheory.types.TypeSystem.* +} + diff --git a/lisa-utils/src/main/scala/lisa/fol/Common.scala b/lisa-utils/src/main/scala/lisa/fol/Common.scala index cb1ca1ee..77977eb2 100644 --- a/lisa-utils/src/main/scala/lisa/fol/Common.scala +++ b/lisa-utils/src/main/scala/lisa/fol/Common.scala @@ -135,6 +135,7 @@ trait Common { * Renames the symbol with an identifier that is fresh for the given list. */ def freshRename(taken: Iterable[Identifier]): Label[A] + } /** @@ -276,7 +277,7 @@ trait Common { sealed trait FunctionLabel[N <: Arity] extends TermLabel[(Term ** N) |-> Term] with ((Term ** N) |-> Term) { val underlyingLabel: K.TermLabel def substituteUnsafe(map: Map[SchematicLabel[_], LisaObject[_]]): (Term ** N) |-> Term - def applyUnsafe(args: (Term ** N)): Term = AppliedFunction(this, args.toSeq) + def applyUnsafe(args: (Term ** N)): Term = AppliedFunctional(this, args.toSeq) override def rename(newid: Identifier): FunctionLabel[N] def freshRename(taken: Iterable[Identifier]): FunctionLabel[N] } @@ -285,7 +286,7 @@ trait Common { * A Variable, corresponding to [[K.VariableLabel]], is a schematic symbol for terms. * It counts both as the label and as the term itself. */ - case class Variable(id: Identifier) extends SchematicTermLabel[Term] with Term with Absolute { + class Variable(val id: Identifier) extends SchematicTermLabel[Term] with Term with Absolute { val arity: 0 = 0 val label: Variable = this val args: Seq[Nothing] = Seq.empty @@ -308,13 +309,35 @@ trait Common { def freshRename(taken: Iterable[Identifier]): Variable = rename(K.freshId(taken, id)) override def toString(): String = id def mkString(args: Seq[Term]): String = if (args.size == 0) toString() else toString() + "(" + "illegal_arguments: " + args.mkString(", ") + ")" + + def canEqual(that: Any): Boolean = + that.isInstanceOf[Variable] + + // Intentionally avoiding the call to super.equals because no ancestor has overridden equals (see note 7 below) + override def equals(that: Any): Boolean = + that match { + case other: Variable => + ((this eq other) // optional, but highly recommended sans very specific knowledge about this exact class implementation + || (other.canEqual(this) // optional only if this class is marked final + && (hashCode == other.hashCode) // optional, exceptionally execution efficient if hashCode is cached, at an obvious space inefficiency tradeoff + && ((id == other.id)))) + case _ => + false + } + + // Intentionally avoiding the call to super.hashCode because no ancestor has overridden hashCode (see note 7 below) + override def hashCode(): Int = + id.## + } + object Variable { + def unapply(variable: Variable): Option[Identifier] = Some(variable.id) } /** * A Constant, corresponding to [[K.ConstantLabel]], is a label for terms. * It counts both as the label and as the term itself. */ - case class Constant(id: Identifier) extends Term with Absolute with ConstantTermLabel[Constant] with LisaObject[Constant] { + class Constant(val id: Identifier) extends Term with Absolute with ConstantTermLabel[Constant] with LisaObject[Constant] { val arity: 0 = 0 val label: Constant = this val args: Seq[Nothing] = Seq.empty @@ -328,17 +351,39 @@ trait Common { def freshRename(taken: Iterable[Identifier]): Constant = rename(K.freshId(taken, id)) override def toString(): String = id def mkString(args: Seq[Term]): String = if (args.size == 0) toString() else toString() + "(" + "illegal_arguments: " + args.mkString(", ") + ")" + + def canEqual(that: Any): Boolean = + that.isInstanceOf[Constant] + + // Intentionally avoiding the call to super.equals because no ancestor has overridden equals (see note 7 below) + override def equals(that: Any): Boolean = + that match { + case other: Constant => + ((this eq other) // optional, but highly recommended sans very specific knowledge about this exact class implementation + || (other.canEqual(this) // optional only if this class is marked final + && (hashCode == other.hashCode) // optional, exceptionally execution efficient if hashCode is cached, at an obvious space inefficiency tradeoff + && ((id == other.id)))) + case _ => + false + } + + // Intentionally avoiding the call to super.hashCode because no ancestor has overridden hashCode (see note 7 below) + override def hashCode(): Int = + id.## + } + object Constant { + def unapply(constant: Constant): Option[Identifier] = Some(constant.id) } /** * A schematic functional label (corresponding to [[K.SchematicFunctionLabel]]) is a functional label and also a schematic label. * It can be substituted by any expression of type (Term ** N) |-> Term */ - case class SchematicFunctionLabel[N <: Arity](val id: Identifier, val arity: N) extends SchematicTermLabel[(Term ** N) |-> Term] with FunctionLabel[N] { + class SchematicFunctionLabel[N <: Arity](val id: Identifier, val arity: N) extends SchematicTermLabel[(Term ** N) |-> Term] with FunctionLabel[N] { val underlyingLabel: K.SchematicTermLabel = K.SchematicFunctionLabel(id, arity) - def unapplySeq(t: AppliedFunction): Seq[Term] = t match { - case AppliedFunction(label, args) if (label == this) => args + def unapplySeq(t: AppliedFunctional): Seq[Term] = t match { + case AppliedFunctional(label, args) if (label == this) => args case _ => Seq.empty } @nowarn("msg=the type test for.*cannot be checked at runtime because its type arguments") @@ -359,16 +404,41 @@ trait Common { override def toString(): String = id def mkString(args: Seq[Term]): String = toString() + "(" + args.mkString(", ") + ")" override def mkStringSeparated(args: Seq[Term]): String = mkString(args) + + def canEqual(that: Any): Boolean = + that.isInstanceOf[SchematicFunctionLabel[?]] + + // Intentionally avoiding the call to super.equals because no ancestor has overridden equals (see note 7 below) + override def equals(that: Any): Boolean = + that match { + case other: SchematicFunctionLabel[N] => + ((this eq other) // optional, but highly recommended sans very specific knowledge about this exact class implementation + || (other.canEqual(this) // optional only if this class is marked final + && (hashCode == other.hashCode) // optional, exceptionally execution efficient if hashCode is cached, at an obvious space inefficiency tradeoff + && ((id == other.id) + && (arity == other.arity)))) + case _ => + false + } + + // Intentionally avoiding the call to super.hashCode because no ancestor has overridden hashCode (see note 7 below) + override def hashCode(): Int = + 31 * ( + id.## + ) + arity.## + } + object SchematicFunctionLabel { + def unapply[N <: Arity](sfl: SchematicFunctionLabel[N]): Option[(Identifier, N)] = Some((sfl.id, sfl.arity)) } /** * A constant functional label of arity N. */ - case class ConstantFunctionLabel[N <: Arity](id: Identifier, arity: N) extends ConstantTermLabel[((Term ** N) |-> Term)] with FunctionLabel[N] { + class ConstantFunctionLabel[N <: Arity](val id: Identifier, val arity: N) extends ConstantTermLabel[((Term ** N) |-> Term)] with FunctionLabel[N] { val underlyingLabel: K.ConstantFunctionLabel = K.ConstantFunctionLabel(id, arity) private var infix: Boolean = false - def unapplySeq(t: AppliedFunction): Seq[Term] = t match { - case AppliedFunction(label, args) if (label == this) => args + def unapplySeq(t: AppliedFunctional): Seq[Term] = t match { + case AppliedFunctional(label, args) if (label == this) => args case _ => Seq.empty } def substituteUnsafe(map: Map[SchematicLabel[_], LisaObject[_]]): ConstantFunctionLabel[N] = this @@ -377,20 +447,44 @@ trait Common { def rename(newid: Identifier): ConstantFunctionLabel[N] = ConstantFunctionLabel(newid, arity) def freshRename(taken: Iterable[Identifier]): ConstantFunctionLabel[N] = rename(K.freshId(taken, id)) override def toString(): String = id - def mkString(args: Seq[Term]): String = if (infix) (args(0).toStringSeparated() + " " + toString() + " " + args(1).toStringSeparated()) else toString() + "(" + args.mkString(", ") + ")" + def mkString(args: Seq[Term]): String = + if (infix & args.size == 2) (args(0).toStringSeparated() + " " + toString() + " " + args(1).toStringSeparated()) else toString() + "(" + args.mkString(", ") + ")" override def mkStringSeparated(args: Seq[Term]): String = if (infix) "(" + mkString(args) + ")" else mkString(args) + + def canEqual(that: Any): Boolean = + that.isInstanceOf[SchematicFunctionLabel[?]] + + // Intentionally avoiding the call to super.equals because no ancestor has overridden equals (see note 7 below) + override def equals(that: Any): Boolean = + that match { + case other: ConstantFunctionLabel[N] => + ((this eq other) // optional, but highly recommended sans very specific knowledge about this exact class implementation + || (other.canEqual(this) // optional only if this class is marked final + && (hashCode == other.hashCode) // optional, exceptionally execution efficient if hashCode is cached, at an obvious space inefficiency tradeoff + && ((id == other.id) + && (arity == other.arity)))) + case _ => + false + } + + // Intentionally avoiding the call to super.hashCode because no ancestor has overridden hashCode (see note 7 below) + override def hashCode(): Int = + 31 * ( + id.## + ) + arity.## } object ConstantFunctionLabel { def infix[N <: Arity](id: Identifier, arity: N): ConstantFunctionLabel[N] = val x = ConstantFunctionLabel[N](id, arity) x.infix = true x + def unapply[N <: Arity](cfl: ConstantFunctionLabel[N]): Option[(Identifier, N)] = Some((cfl.id, cfl.arity)) } /** * A term made from a functional label of arity N and N arguments */ - case class AppliedFunction(label: FunctionLabel[?], args: Seq[Term]) extends Term with Absolute { + class AppliedFunctional(val label: FunctionLabel[?], val args: Seq[Term]) extends Term with Absolute { override val underlying = K.Term(label.underlyingLabel, args.map(_.underlying)) def substituteUnsafe(map: Map[SchematicLabel[_], LisaObject[_]]): Term = label.substituteUnsafe(map).applyUnsafe(args.map[Term]((x: Term) => x.substituteUnsafe(map))) @@ -399,6 +493,31 @@ trait Common { def allSchematicLabels: Set[SchematicLabel[?]] = label.allSchematicLabels ++ args.flatMap(_.allSchematicLabels) override def toString: String = label.mkString(args) override def toStringSeparated(): String = label.mkStringSeparated(args) + + def canEqual(that: Any): Boolean = + that.isInstanceOf[AppliedFunctional] + + // Intentionally avoiding the call to super.equals because no ancestor has overridden equals (see note 7 below) + override def equals(that: Any): Boolean = + that match { + case other: AppliedFunctional => + ((this eq other) // optional, but highly recommended sans very specific knowledge about this exact class implementation + || (other.canEqual(this) // optional only if this class is marked final + && (hashCode == other.hashCode) // optional, exceptionally execution efficient if hashCode is cached, at an obvious space inefficiency tradeoff + && ((label == other.label) + && (args == other.args)))) + case _ => + false + } + + // Intentionally avoiding the call to super.hashCode because no ancestor has overridden hashCode (see note 7 below) + override def hashCode(): Int = + 31 * ( + label.## + ) + args.## + } + object AppliedFunctional { + def unapply(af: AppliedFunctional): Option[(FunctionLabel[?], Seq[Term])] = Some((af.label, af.args)) } ////////////////////////////////////// @@ -570,8 +689,8 @@ trait Common { */ case class SchematicPredicateLabel[N <: Arity](id: Identifier, arity: N) extends SchematicAtomicLabel[(Term ** N) |-> Formula] with PredicateLabel[N] { val underlyingLabel: K.SchematicPredicateLabel = K.SchematicPredicateLabel(id, arity) - def unapplySeq(t: AppliedFunction): Seq[Term] = t match { - case AppliedFunction(label, args) if (label == this) => args + def unapplySeq(t: AppliedFunctional): Seq[Term] = t match { + case AppliedFunctional(label, args) if (label == this) => args case _ => Seq.empty } @nowarn("msg=the type test for.*cannot be checked at runtime because its type arguments") diff --git a/lisa-utils/src/main/scala/lisa/fol/FOLHelpers.scala b/lisa-utils/src/main/scala/lisa/fol/FOLHelpers.scala index 576a279c..402ad81b 100644 --- a/lisa-utils/src/main/scala/lisa/fol/FOLHelpers.scala +++ b/lisa-utils/src/main/scala/lisa/fol/FOLHelpers.scala @@ -130,4 +130,6 @@ object FOLHelpers { def asFrontLambda(l: K.LambdaTermFormula): LambdaExpression[Term, Formula, ?] = LambdaExpression(l.vars.map(asFrontLabel), asFront(l.body), l.vars.size) def asFrontLambda(l: K.LambdaFormulaFormula): LambdaExpression[Formula, Formula, ?] = LambdaExpression(l.vars.map(asFrontLabel), asFront(l.body), l.vars.size) + def freshVariable[A <: LisaObject[A]](obj: A, name: Identifier): Variable = Variable(freshId(obj.allSchematicLabels.map(_.id), name)) + def freshVariable[A <: LisaObject[A]](objs: Iterable[A], name: Identifier): Variable = Variable(freshId(objs.flatMap(_.allSchematicLabels).map(_.id), name)) } diff --git a/lisa-utils/src/main/scala/lisa/fol/Lambdas.scala b/lisa-utils/src/main/scala/lisa/fol/Lambdas.scala index 2bc2a984..bfc15237 100644 --- a/lisa-utils/src/main/scala/lisa/fol/Lambdas.scala +++ b/lisa-utils/src/main/scala/lisa/fol/Lambdas.scala @@ -36,7 +36,7 @@ trait Lambdas extends Common { */ def substituteUnsafe(map: Map[SchematicLabel[_], LisaObject[_]]): LambdaExpression[T, R, N] = { val newSubst = map -- seqBounds - val conflict = map.values.flatMap(_.freeSchematicLabels).toSet.intersect(bounds.asInstanceOf) + val conflict = map.values.flatMap(_.freeSchematicLabels).toSet.intersect(bounds.toSet.asInstanceOf) if (conflict.nonEmpty) { val taken = (map.values.flatMap(_.allSchematicLabels).map(_.id) ++ map.keys.map(_.id)).toList val newBounds = seqBounds.scanLeft[List[Identifier]](taken)((list, v: SchematicLabel[T]) => freshId(list, v.id) :: list).map(_.head).zip(seqBounds).map(v => v._2.rename(v._1)) diff --git a/lisa-utils/src/main/scala/lisa/fol/Sequents.scala b/lisa-utils/src/main/scala/lisa/fol/Sequents.scala index 1f13bf84..792c75aa 100644 --- a/lisa-utils/src/main/scala/lisa/fol/Sequents.scala +++ b/lisa-utils/src/main/scala/lisa/fol/Sequents.scala @@ -17,8 +17,8 @@ trait Sequents extends Common with lisa.fol.Lambdas with Predef { case class Sequent(left: Set[Formula], right: Set[Formula]) extends LisaObject[Sequent] with Absolute { def underlying: lisa.kernel.proof.SequentCalculus.Sequent = K.Sequent(left.map(_.underlying), right.map(_.underlying)) - def allSchematicLabels: Set[SchematicLabel[?]] = left.flatMap(_.allSchematicLabels) - def freeSchematicLabels: Set[SchematicLabel[?]] = left.flatMap(_.freeSchematicLabels) + def allSchematicLabels: Set[SchematicLabel[?]] = left.flatMap(_.allSchematicLabels) ++ right.flatMap(_.allSchematicLabels) + def freeSchematicLabels: Set[SchematicLabel[?]] = left.flatMap(_.freeSchematicLabels) ++ right.flatMap(_.freeSchematicLabels) def substituteUnsafe(map: Map[SchematicLabel[?], ? <: LisaObject[?]]): Sequent = Sequent(left.map(_.substituteUnsafe(map)), right.map(_.substituteUnsafe(map))) /*Ok for now but what when we have more*/ @@ -89,7 +89,7 @@ trait Sequents extends Common with lisa.fol.Lambdas with Predef { case (s, p) => (s, Seq(s0, s1, s2) ++ p) } - case _ => throw new IllegalArgumentException("Right side of sequent must be a single universaly quantified formula") + case _ => throw new IllegalArgumentException("Right side of sequent must be a single universally quantified formula") } } @@ -215,7 +215,7 @@ trait Sequents extends Common with lisa.fol.Lambdas with Predef { * @tparam S The type of elements in that set * @tparam T The type to convert from */ - protected trait FormulaSetConverter[T] { + trait FormulaSetConverter[T] { def apply(t: T): Set[Formula] } diff --git a/lisa-utils/src/main/scala/lisa/prooflib/BasicMain.scala b/lisa-utils/src/main/scala/lisa/prooflib/BasicMain.scala index f7bcd5f8..34f8878f 100644 --- a/lisa-utils/src/main/scala/lisa/prooflib/BasicMain.scala +++ b/lisa-utils/src/main/scala/lisa/prooflib/BasicMain.scala @@ -15,6 +15,7 @@ trait BasicMain { } val stringWriter: java.io.StringWriter = new java.io.StringWriter() } + export om.output /** * This specific implementation make sure that what is "shown" in theory files is only printed for the one we run, and not for the whole library. diff --git a/lisa-utils/src/main/scala/lisa/prooflib/BasicStepTactic.scala b/lisa-utils/src/main/scala/lisa/prooflib/BasicStepTactic.scala index 678cd18c..0501f1b4 100644 --- a/lisa-utils/src/main/scala/lisa/prooflib/BasicStepTactic.scala +++ b/lisa-utils/src/main/scala/lisa/prooflib/BasicStepTactic.scala @@ -446,6 +446,7 @@ object BasicStepTactic { proof.ValidProofTactic(bot, Seq(K.LeftExists(botK, -1, phiK, xK)), Seq(premise)) } + var debug = false def apply(using lib: Library, proof: lib.Proof)(premise: proof.Fact)(bot: F.Sequent): proof.ProofTacticJudgement = { lazy val premiseSequent = proof.getSequent(premise) lazy val pivot = bot.left.diff(premiseSequent.left) @@ -470,14 +471,14 @@ object BasicStepTactic { case Some(F.BinderFormula(F.Exists, x, phi)) => LeftExists.withParameters(phi, x)(premise)(bot) case _ => proof.InvalidProofTactic("Could not infer an existensially quantified pivot from premise and conclusion.") } - } else proof.InvalidProofTactic("Left-hand side of conclusion + φ is not the same as left-hand side of premise + ∃x. φ.") + } else proof.InvalidProofTactic("Ambigous application of LeftExists, multiple pivots corresponding to the unquantified formula found.") else if (pivot.tail.isEmpty) pivot.head match { case F.BinderFormula(F.Exists, x, phi) => LeftExists.withParameters(phi, x)(premise)(bot) case _ => proof.InvalidProofTactic("Could not infer an existentially quantified pivot from premise and conclusion.") } else - proof.InvalidProofTactic("Left-hand side of conclusion + φ is not the same as left-hand side of premise + ∃x. φ.") + proof.InvalidProofTactic("Ambigous application of LeftExists, multiple pivots corresponding to the quantified formula found.") } } @@ -1440,7 +1441,7 @@ object BasicStepTactic { } } - // TODO make specific support for subproofs written inside tactics. + // TODO make specific support for subproofs written inside tactics.kkkkkkk inline def TacticSubproof(using proof: Library#Proof)(inline computeProof: proof.InnerProof ?=> Unit): proof.ProofTacticJudgement = val iProof: proof.InnerProof = new proof.InnerProof(None) diff --git a/lisa-utils/src/main/scala/lisa/prooflib/Library.scala b/lisa-utils/src/main/scala/lisa/prooflib/Library.scala index 37460714..9d64e278 100644 --- a/lisa-utils/src/main/scala/lisa/prooflib/Library.scala +++ b/lisa-utils/src/main/scala/lisa/prooflib/Library.scala @@ -43,6 +43,7 @@ abstract class Library extends lisa.prooflib.WithTheorems with lisa.prooflib.Pro def isDraft = _draft.nonEmpty val knownDefs: scala.collection.mutable.Map[F.ConstantLabel[?], Option[JUSTIFICATION]] = scala.collection.mutable.Map.empty + val shortDefs: scala.collection.mutable.Map[F.ConstantLabel[?], Option[JUSTIFICATION]] = scala.collection.mutable.Map.empty def addSymbol(s: F.ConstantFunctionLabel[?] | F.ConstantPredicateLabel[?] | F.Constant): Unit = { s match { @@ -57,6 +58,10 @@ abstract class Library extends lisa.prooflib.WithTheorems with lisa.prooflib.Pro case None => throw new UserLisaException.UndefinedSymbolException("Unknown symbol", label, this) case Some(value) => value } + def getShortDefinition(label: F.ConstantLabel[?]): Option[JUSTIFICATION] = shortDefs.get(label) match { + case None => throw new UserLisaException.UndefinedSymbolException("Unknown symbol", label, this) + case Some(value) => value + } /** * An alias to create a Theorem diff --git a/lisa-utils/src/main/scala/lisa/prooflib/ProofsHelpers.scala b/lisa-utils/src/main/scala/lisa/prooflib/ProofsHelpers.scala index e612d0eb..adda8986 100644 --- a/lisa-utils/src/main/scala/lisa/prooflib/ProofsHelpers.scala +++ b/lisa-utils/src/main/scala/lisa/prooflib/ProofsHelpers.scala @@ -1,5 +1,6 @@ package lisa.prooflib +import lisa.kernel.proof.SCProofChecker.checkSCProof import lisa.prooflib.BasicStepTactic.Rewrite import lisa.prooflib.BasicStepTactic.* import lisa.prooflib.ProofTacticLib.* @@ -20,13 +21,13 @@ trait ProofsHelpers { given Library = library - class HaveSequent private[ProofsHelpers] (bot: Sequent) { - val x: lisa.fol.FOL.Sequent = bot + class HaveSequent /*private[ProofsHelpers]*/ (val bot: Sequent) { + // val x: lisa.fol.FOL.Sequent = bot inline infix def by(using proof: library.Proof, line: sourcecode.Line, file: sourcecode.File): By { val _proof: proof.type } = By(proof, line, file).asInstanceOf class By(val _proof: library.Proof, line: sourcecode.Line, file: sourcecode.File) { - private val bot = HaveSequent.this.bot ++ (F.iterable_to_set(_proof.getAssumptions) |- ()) + val bot = HaveSequent.this.bot ++ (F.iterable_to_set(_proof.getAssumptions) |- ()) inline infix def apply(tactic: Sequent => _proof.ProofTacticJudgement): _proof.ProofStep & _proof.Fact = { tactic(bot).validate(line, file) } @@ -44,7 +45,7 @@ trait ProofsHelpers { } - class AndThenSequent private[ProofsHelpers] (bot: Sequent) { + class AndThenSequent private[ProofsHelpers] (val bot: Sequent) { inline infix def by(using proof: library.Proof, line: sourcecode.Line, file: sourcecode.File): By { val _proof: proof.type } = By(proof, line, file).asInstanceOf[By { val _proof: proof.type }] @@ -290,7 +291,17 @@ trait ProofsHelpers { val lambda: LambdaExpression[Term, Term, N], out: F.Variable, j: JUSTIFICATION - ) extends FunctionDefinition[N](fullName, line, file)(lambda.bounds.asInstanceOf, out, out === lambda.body, j) {} + ) extends FunctionDefinition[N](fullName, line, file)(lambda.bounds.asInstanceOf, out, out === lambda.body, j) { + + private val term = label.applySeq(lambda.bounds.asInstanceOf) + private val simpleProp = lambda.body === term + val simplePropName = "simpleDef_" + fullName + val simpleDef = THM(simpleProp, simplePropName, line, file, InternalStatement)({ + have(thesis) by Restate.from(this of term) + }) + shortDefs.update(label, Some(simpleDef)) + + } object SimpleFunctionDefinition { def apply[N <: F.Arity](using om: OutputManager)(fullName: String, line: Int, file: String)(lambda: LambdaExpression[Term, Term, N]): SimpleFunctionDefinition[N] = { @@ -416,4 +427,17 @@ trait ProofsHelpers { } + /** + * Check correctness of the proof, using LISA's logical kernel, to the current point. + */ + def sanityProofCheck(using p: Proof)(message: String): Unit = { + val csc = p.toSCProof + if checkSCProof(csc).isValid then + println("Proof is valid. " + message) + Thread.sleep(100) + else + checkProof(csc) + throw Exception("Proof is not valid: " + message) + } + } diff --git a/lisa-utils/src/main/scala/lisa/prooflib/SimpleDeducedSteps.scala b/lisa-utils/src/main/scala/lisa/prooflib/SimpleDeducedSteps.scala index 8e470c14..d9a2cd98 100644 --- a/lisa-utils/src/main/scala/lisa/prooflib/SimpleDeducedSteps.scala +++ b/lisa-utils/src/main/scala/lisa/prooflib/SimpleDeducedSteps.scala @@ -50,22 +50,22 @@ object SimpleDeducedSteps { object Discharge extends ProofTactic { def apply(using lib: Library, proof: lib.Proof)(premises: proof.Fact*)(premise: proof.Fact): proof.ProofTacticJudgement = { - val ss = premises map (e => proof.getSequent(e)) - val seqs = ss map (e => e.underlying) + val ss = premises zip (premises map (e => proof.getSequent(e))) + val seqs = ss.map(_._2) if (!seqs.forall(_.right.size == 1)) return proof.InvalidProofTactic("When discharging this way, the discharged sequent must have only a single formula on the right handside.") - val s = seqs.head - val f = s.right.head - val first = K.Cut((proof.getSequent(premise).underlying removeLeft f) ++ (s removeRight f), -2, -1, f) - - proof.ValidProofTactic( - (proof.getSequent(premise) removeAllLeft (ss.flatMap(_.right).toSet)) ++<< (F.Sequent(ss.flatMap(_.left).toSet, Set())), - seqs.tail.zipWithIndex.scanLeft(first)((prev, next) => { - val f = next._1.right.head - K.Cut((prev.bot removeLeft f) ++ (next._1 removeRight f), -next._2 - 3, next._2, f) - }), - proof.mostRecentStep +: premises - ) + val seqAny = ss.find((_, s) => premise.statement.left.exists(f2 => F.isSame(s.right.head, f2))) + if (seqAny.isEmpty) + Restate.from(premise)(premise.statement) + else + TacticSubproof: ip ?=> + ss.foldLeft(premise: ip.Fact)((prem, discharge) => + val seq = discharge._2 + if prem.statement.left.exists(f => F.isSame(f, seq.right.head)) then + val goal = prem.statement -<? seq.right.head ++<? (seq.left |- ()) + lib.have(Cut(discharge._1, prem)(goal)) + else prem + ) } } diff --git a/lisa-utils/src/main/scala/lisa/prooflib/WithTheorems.scala b/lisa-utils/src/main/scala/lisa/prooflib/WithTheorems.scala index b6d542ce..fc920eb1 100644 --- a/lisa-utils/src/main/scala/lisa/prooflib/WithTheorems.scala +++ b/lisa-utils/src/main/scala/lisa/prooflib/WithTheorems.scala @@ -67,6 +67,8 @@ trait WithTheorems { private var assumptions: List[F.Formula] = assump private var eliminations: List[(F.Formula, (Int, F.Sequent) => List[K.SCProofStep])] = Nil + def cleanAssumptions: Unit = assumptions = Nil + /** * the theorem that is being proved (paritally, if subproof) by this proof. * @@ -560,7 +562,6 @@ trait WithTheorems { val innerJustification: theory.Theorem = if library._draft.nonEmpty && library._draft.get.value != file then // if the draft option is activated, and the theorem is not in the file where the draft option is given, then we replace the proof by sorry - // println("skip!") theory.theorem(name, goal.underlying, SCProof(SC.Sorry(goal.underlying)), IndexedSeq.empty) match { case K.Judgement.ValidJustification(just) => just diff --git a/lisa-utils/src/main/scala/lisa/utils/KernelHelpers.scala b/lisa-utils/src/main/scala/lisa/utils/KernelHelpers.scala index 122f418d..70d40452 100644 --- a/lisa-utils/src/main/scala/lisa/utils/KernelHelpers.scala +++ b/lisa-utils/src/main/scala/lisa/utils/KernelHelpers.scala @@ -348,7 +348,7 @@ object KernelHelpers { def theorem(name: String, statement: Sequent, proof: SCProof, justifications: Seq[theory.Justification]): RunningTheoryJudgement[theory.Theorem] = { if (statement == proof.conclusion) theory.makeTheorem(name, statement, proof, justifications) else if (isSameSequent(statement, proof.conclusion)) theory.makeTheorem(name, statement, proof.appended(Restate(statement, proof.length - 1)), justifications) - else InvalidJustification(s"The proof proves ${FOLPrinter.prettySequent(proof.conclusion)} instead of claimed ${FOLPrinter.prettySequent(statement)}", None) + else InvalidJustification(s"The proof proves \n ${FOLPrinter.prettySequent(proof.conclusion)}\ninstead of claimed \n ${FOLPrinter.prettySequent(statement)}", None) } /** diff --git a/lisa-utils/src/main/scala/lisa/utils/memoization/Memoized.scala b/lisa-utils/src/main/scala/lisa/utils/memoization/Memoized.scala new file mode 100644 index 00000000..43afb552 --- /dev/null +++ b/lisa-utils/src/main/scala/lisa/utils/memoization/Memoized.scala @@ -0,0 +1,37 @@ +package lisa.utils.memoization + +case class MemoizationStats(hits: Int, miss: Int, faulted: Int): + def withHit = MemoizationStats(hits + 1, miss, faulted) + def withMiss = MemoizationStats(hits, miss + 1, faulted) + def withFault = MemoizationStats(hits, miss, faulted + 1) + +case object InfiniteRecursionDetectedException extends Exception + +class Memoized[From, To](fun: From => To) extends Function[From, To]: + private val visited = scala.collection.mutable.HashSet.empty[From] + private val memory = scala.collection.mutable.HashMap.empty[From, To] + private var stats = MemoizationStats(0, 0, 0) + + protected def handleFault(): To = + throw InfiniteRecursionDetectedException + + def apply(v: From): To = + val stored = memory.get(v) + val seen = visited.contains(v) + if stored.isEmpty then + // compute + visited.add(v) + if seen then + stats = stats.withFault + handleFault() + else + stats = stats.withMiss + memory.update(v, fun(v)) + else stats = stats.withHit + memory(v) + +class MemoizedWithDefault[From, To](fun: From => To, default: To) extends Memoized[From, To](fun): + override def handleFault(): To = default + +def memoized[A, B](f: A => B): A => B = Memoized(f) +def memoized[A, B](f: A => B, default: B): A => B = MemoizedWithDefault(f, default) diff --git a/lisa-utils/src/test/scala/lisa/kernel/TheoriesHelpersTest.scala b/lisa-utils/src/test/scala/lisa/kernel/TheoriesHelpersTest.scala index c74f5361..988ead99 100644 --- a/lisa-utils/src/test/scala/lisa/kernel/TheoriesHelpersTest.scala +++ b/lisa-utils/src/test/scala/lisa/kernel/TheoriesHelpersTest.scala @@ -28,7 +28,8 @@ class TheoriesHelpersTest extends AnyFunSuite { judgement.get fail("Shouldn't be able to get a theorem from an invalid judgement") } catch { - case InvalidJustificationException(msg, None) => assert(msg.matches("The proof proves .* instead of .*")) + + case InvalidJustificationException(msg, None) => () } // same theorem but with correct statement diff --git a/refman/lisa.pdf b/refman/lisa.pdf index 8855ed46532f486aef780ff64bb619ca8f1a58e5..80036345874145be30b7dc8a7edc9bd947f413f0 100644 GIT binary patch delta 210471 zcmbO{o&Vfg{t4#w7It=A#U(|liMd=Aw|axlp1Weev*)u&T_f9nl``dpauXOjrGxT2 z4wtR|>nBt3pS!H?#yS?ERclQ8j33XGsAFXO<(|M3sUxU$r@rc0_wn2H>*dQU{?BYE z-gK4Y8@t4^J%<j>S(0+&{CjzU&6Ng=sxH(<yO?g;e&c7=ualPluGhak{%>od(9$R_ z_GJl&W+iIQ3V6-1lzHP5-wXdmtsCRz9~>=L>Zox$w&>XFwckQtEf8EVM<si4B*%4^ zu*5*|z$ce#zZ~17E922>cI}`PdsOu~w{ur4cmD8u6J@)(r00y~d#jTlj|jb=E5CV{ zP1UlwpH|ql$HhPGICWrl+PB?SHub0K*YuvVa;xuo=J+&3>!8w;_s5(!S-2N|ciH{t zS<-8_zem)XzGr2>U$^(buS?G5I~WpIMXa<wGebi68S~_8mI^i1ueh%KoTn2$eI8#s z+dlI)|KIo9gVr%`S+_ExQFZc?Rb~;+-o+nhyt!<?v-F-_u<atJ*_&Rr^YyH>e0@1{ zzS<e?u+ws}{WfjYKbnj;H5y*s=jW@pSiS#uP4M68?Dy~eW!wMhYTV?&WZ}v07}XdJ zCyO#^*dESYF2GuAUd-yuZ0pVJ?c6%Sgf%u;+15Fjn>AS2)?3)Sb;6VkX=dilD!Xq8 z=(AoI;9*WEQ4nXyb&yb<T+3utZ)%Pl?{A|{_q{gbx%*xF5A$NLCG!p_bThqW-IZ;) zdr^0V(aTlc-~NkFbvbFa_Qx@~=ZoI<2(lE;iCA<(`O}1u@8Qd>B;!{VU&t(R^1QwG zpXB?R&iD4S&dbN`dSA~aoAGc@@ZHl}tBn+<eEfL1qvrLe+nc8pOsl`7q51V`i&5Qn zM=zFN>rRz(FTWpO_pYu+Q|QmHr7?eEp9QW84q}n~;lg$4tkvYk%fSqjkA;}5tLmLU zX<g|&<8ycC&%2QPXFBt)*{Zv)?Phx^x%iQ6h1$c5sfwrLGgdsDt$o;GRzb`O7vGqg z9xLN}=Z?D9yL0xvWauq$Jnk64UH`uDf@4kfrPfIko?Pz|%S#OD`u61<m)0pww_U3C zvn{pawQu{p@%OiCDN0>pvu<BmY4~Xlw~U)NuFv|p`1XNCdp}$|b0FzAqs|An-Iq@a z?|8l`*tYTTi;BDayTxnn?JbmklH0^G|4+yr!7ZvOtyj;gzt>XC6$rU;;_t?d+Zd&N z>UG23A8uoPxOH~&W1ED-D<}KU59_O&TzR#J`O~tL*D1fh<fmU=fAe`9hd;-i*ZR6w zqZ_x0_G!MmylXD6L*gsvJM1Fqt?c&9Tx}OSuS~dqdAG|nCdSvCZkpd5><?+guWx86 zo*28stw;G^4r@D?(v0Y5Js%Tf?Zh%9Jp_WT2?p1fC`KKdIVmLEIyF>K{GiD9B=s8A zom?lr=xmk@p3|<=r_R2@bd7gqmuk$eJ#l~ap0S?l5NHcEJHq`|f;H2ylv~2H{9%-M zaJ{G2sg}*_XD9t_OZX)7`{CZ-jjILk$%a4PI+-(H;JECig@WqBdo+4gvppvorMgb_ z3_bMj%U{+T^(8lbDi|IveDGjbErXTGvBpA1*_ku@UwGsRP7p{^=h1n7Vfx#ZF{$A( z9nG=1M_iH*U1cm`6h7A3kj5$eTu^x428Wv6$0khaoH<Wmq2_esXO%vGHWrk<cpW@- zOXxkh#eU!HZUwCiOS<y6=4=LI*xB%c_?Q1ZC#+?6NY?+dTf(f~Lba*Ln8D}Lm&}P; z(H){ICy1`xP}M(YqG-$&pF106>=G9&V$o`<S(=>v>FbRCb4UMA@Jq2ZlL~&vD{+tG z{slib`{NB0x0M$O+`sY0>nP8mbE&^gE+*SbNZo$R>dbMddMiU4XSKmpQyq)muTLhO zt(b7S{m|l#&#bjgMdb|di`L&eBxG|g`$3@c3FRM-7Y<3APJdnR%Jt8*;7m^Cxo@|f zjRfX=h&q4J@LKiSeC?f<4PS!iO=Ld4bV`O-<N8{?jT5(;-dCJcz{&4nGU0)k&2yzU zdi4uEKNowL++n)s^@wrllKO|bjK*JNuB$Js`J~Kww}Ulr*XMUKEWzUSK}T{|)&Kc6 zwM$?RYfJp<&zIJ}*50wb@DPi2!6rfVJ8Pcb6%onpXvj?1v~t(U+YZj^8$<R4>CW*h zTGJsb#JXsH=T_IH@+?lT84tes&R|m^a_%6Lf|@4hzSMP|>}&}+^3!`ld3BQ?=sx#c z_}a>H!2<5=qYEEz+7)-u_1~SZT<f}X%x+w-=e=_2_{8=#&ti5rPF}3GB2UKj<Z<5{ z3)kNHZ{5Fq8r$#he^i9OT;BJnEjjMpTAqezsjiwv&(z?weTq-A7z72>s|&9Mnp{8V ze(9ymHTxy=l>bh$>bbSn{>;(kc9(wTZ{E3Mns89w#4WD*tzi)!4aPwZ5`{+ckEXx> z$Ed7%d?MF$WnE^$$%olB>QT$V87K2@8wj+$ujSg?5W&~3o$w-H0q=!q?)zPGZ!F%e zZ2$I`f9^x2nNdQOoVS$R1Ui<v6k2@#IDg@+cwUo9{}vRky7+>{<F?JeCG*&S{l6G* zpELXW{21mS7Rd!S<z`>gU_55-*1f=avu(|7kIsd^_x<&$?`N84*Ui;(rR&}lxnOI} z-YG%$UYWMM%?ooC_dR<2?Fiep_phDv{><CT)?46c?#2CJo<;A|%pX&KuVY;)QYyJ* zzRBjsb)oaDGqOrzyE}4bEV|8Z)V6Mx+bZR|p_v__$%mJv-B2*N;wEu_t5wULMWOej zmwsJjE!f1d?3+5<ukZEZhEBQa$}__JB|XCzcZgn)h+OzAZQAsyCI!VN_hs9qn*uAp zRT)IN#?~?RXee>=Y?+&G$T&&Ib$f2aac0eBY|;M3&mV@KSW#2MY;=Gt_l}U%ZaLnw zGv7=obyhWz5PlV$H@U93=;6LgW`$?0TAIY}9XK&hb^Tt>bz#DRJKwO?dn^zU+03f4 zLg3ZJ0?u~3)(t5xYBlj?HcO2T%L;Ku#k#RGaIAlGVw*KrvWV9Am_{c(tLWZC62@+c z*Td(^#B&R_PEUT(x-IX^x$0>@b{_~in2@k$r<XO4{FY@0e7r7bU*<f?{rLG61<i^x zi<sSI{Os3w7hKVPaiwL?<;9|ZzSnbRm~vd*be@SZ;oX-zRRYHz71ZQ48_7i6XEoL` zv~1aU_PYDFd3#UqN-|-cs@(fiaPDMJPt(mg6?a5t{a6xR^(J{1({o|Jy?iP=ovhyU zUw726m1>*+SYSe!$5rvK`zl;^ziF&#>OZ|`_2#1=?7C0!DOxx4e^jgLxb^!^`HMxH zC2weMm46&)|E2GN%{+UC57wV@(k)W=Oxv-2awC^Qy?&E;h}g6Yi=~Tu)|}|DU1s5| zeq7AraW&iXwA84{ul58OMBTMtCjI*K>B0_!nB_bROb-U{TQl*TNM-}$+fDZuZ(5xt ze*QrBDzQoXIL<0hdh+G=(&@7|PguVu%|4=5@{`KeV_%mS8mIm%IsC|2x@=<lUg;|v z@AE4kog?;I$Hg$e{@rO|ZI5yVky{^E{cD!lIq!c~>f;0PMNib`Hx>yqsJRN=in({< zveQa&-I)#&c2DhuPt>GuOXxaq(Kztlv_ehS>9&0GofZFrmKFZfiY`Ap(=Sn=LAZVo zlhteI*vO*pfNI?}o4FU-{r$wIdBl%@migI)rQdpg@&_N7#J3`}{jHessRy?{Z4YL@ z{yNTS!M?i6@9fD3`)*I(%57b5gxr8x8+m%2v^l5&lQvVwX6lOT90q$dF0j4OdwW+@ zSKxSo`B|mAU%qR9R1BQ8Q9mz=rSW~n66Hxs{GMk&m2T|T{QqWB!biQe*N!~>Jl*Ki z!ax6uzyCgb`qN+kO2*B{I1(#&>Mv(l%^Ur5>uT=0%AJ49%-HPeB_F>#cH{gpmVBQx zPbE*S-#I6SE7h&x^m~1K;aTyQr{%aBvo25A-CMY5=~hv7sb9CnW$Lvn!Vh{mEZ%W? z@7o6%z8g}HTx(={79`0s(<$JsrXkN2-pD;$A~vT@o?TJLDqy-?R9*a2q}!8~{fiYN z6mHCNs8wQgeX(FswV=?Yne*xomub4SdmjGJ;IZl2SBuAPli1cfoczYbQ*L!Og=5LT zx8}1Vr~lIKpXw`McA9N*!&d{Az3UtgZVNxt`svzc&Gy8*QZ>&GXWTe9*IMo;%jw0( zRyjJn?_9m5^GNzuv%4u3e4#wj*WUz9Ji1=5Gx>;bneK^wR`N0n0$etnZJ3uiZ%uuc zRi#Cd`7GfrYG33hzT33!cEj9TY;Uic<z@5il$f&Ds_de{g%1_|j~G8?DQ<05%*tK; zCMtSLf3mq5uP47nx%J_xdtd3T^Ll-0!SsnA_HO#S?dO(L_03N67tHZxGXL3a_q^-K zr+Erl{!5paJeFYi^vrH~pO;NYS#yWTfr}5;J*v;l^|jO$_dJ~N!pE7B@s8z2*Nk^^ zOMh#hJy2j^b841)LP_Tujm;Bnb1r-KMa&SswJ*O%*3G_4wpe1-amCO+)7!=NB{nZ? ztPHxdpPUt*q_C{##1x_a-dV;)E^q#rT3UBsdd?i}vq#91H*g9^$Fv*E&T7v}5)ysk zx$L<0tuJczo4@vbeWI=C{crZl+Xwfs&)>MID&XHei<7^M72N}DLcV;<oBi{2+x48( zyOEFD_n5gxhO4f#;`;AtDll8*1cQZn(>dm*x97c1=@d&FKe~L_r)l+5l~?&!cixO~ zwe?QOVB6SvZ|*ft<I<Z`)xN!(aeVTJoH?u7<yha_?X_39vL~;8K}Uq2nWsQU&AQ%I z36{5vkC<98)s)-bDvX|7o`0*5<Jj$o>n^S_tGX8^vi0&lyTWG`-;e)Rp0MZH+j^nB zGQImFzT~W#x5)MpOU#b?MNAiMPh<&Aog^6(6nH}8Xne*$-%9mo%Wb*MpQ)Ulm(z0f zxXpE|^BL=x3H2*#wmeNNx>r9(>a205t7PrGU9Z<@IL<Z?t!ci%+B?g8!UyrM77c;- z_Qi8QDg3UvR$c#u$g@u-(-|hs+9Tuc=f$<~vbySBO{*=vxrsLF`XRQ*mb2RK%UdV% zSXe1X)pz#Q>kY{Xo;7RVFTBqGxs&O|ap}WzSUt|PpYdDgvhO}m)dDHm30aaQ^-0oS zvl|@^!lxdRst8?~`L4FTI>47>>i4oG3XLjvHXeC-zM|(r+mk@|girULg_c+TUSpW( zQF~*Tm&`c<2Wgh;yvv;zy|}#N^qyxKlbM3QG5?t6$6?r?<^QgtuI8b2bG+RL`TEai z8_s%16&rb+=SzCY$5rgewVF}WdB;b0fztYw1_sr;LmGHg>vtY5+dZKwW%lmy)t2T3 z*5}@Tz4=1J`NG1Jb1$!4uyuM;(f0N$b9VZ2ocFc3aZt=UNAYagijaMC=ik||VB5!E zyB6m9tu8OS*TDaah0iOU<IbH^w^Q_ITlY^~Dr-F>Kl4E5)OmMfqC|I^aL?8d-FmRX z)%g<7%RlvjojN}>RJT6dYOb{Qc(wSWJF5&cYbA_Cc1rJ9xA(;|Rrl*koE8f|*B%U+ zb@^#$l89_$v&3!TME`@8NBO^)sE4lk&A&VT)x&1)=jXzA`=wsC_GCY$_ApRa_Ub!d zqx-&(*Dq$yWa7_Tv!kkBGxhGiuKEg7lPyQK`z@36UCFeMum0y|zZlv0T}z`>azbi+ zCRrvt+yB{9u-W-~m)V=za9Pe`-&#@4B@zpkzsmTiwq(<J^;)q?K5f^3=J_hRI{I0z zne8`kx>R3m_F0p>@cG|ZfBB__g6<*_ZzufS)!tnezP_emr^3;?MY7l5aLH6;-<G|9 zr|j{%y`P$$CF68AeRx&>+_A}e&)X>$W}idXT8NpgnDl86@2VRM%FpZTrG)J^xwPjC z$EHyEz@IkzX8xXYuz3Er57vp_UB#Il@{j&0Su41`=EA2^=}I+`kayQ|3S$1-m*06d z>8o4+?1gbfOq@(!F~(-;Cdtd!f8j0aRGb&{wIPQuX?8=LaQQx~byxf<s_XynF!4$- z<(o9&N##qIlPp&MGIQ^Gm(E}NXi@gH#oTNDeOwT$v(r%5<L2JocQ^xAwe9{Dv+%a) z&bvz!SkBeoN?6O_VsM6~cz^RAS8-RH-Yp{G@7Fw9!rfDKy8W+JR*guE-jA92O?kf6 zO!vyaOrE+d>Er87)5NTG{(s53Bfb0A(|T`Bg||^Vyx9Il)y3Kc6>^qwE@ku(TwM{r zzOmqL*uNX*3|o%q-kz2GWyg`DS8wb(a;xd`zRi*E_<Jv=?orfVYq#u#|DkvzMX94V zni&)u4pvy4_kXv-n)Ae4;rOs+cW;;$*4|#ssd;j%_J<$4TWgH1|5-V51aXI$JAF5d z>@B<NYtWnibYU-VLV!fy+uL>*9#r)IkIUP{`CWW_(Ceu9I<LcmCbipo-acJ?`<}|D zZJPtu-(7iVy5v;XC+9r#s+V{OO?xrp@YZ?L({@!(l#ZLcN!VQK_x~G?(>i*;-k!yu z)~aK>=(c0cpLg+7nV)t}|0uyEJXuUcgVAWRy@(3??Q?5iDE3XBoF$@PAOG~{<<lP? z>lbcFn{zg&efsT!4+c^8y!U!H&u*XowSTeU!TJAceopn!-L^$6!Nui~N=ktl+xlZS zj!N`z$yrqHeLsIW^F_f{_Fq2BoqHzUj9O;tTW}^jZ+Yj+in)s|%NKr4k2@`L@l?j6 zDqR`Fwam|+_tqE~<j1PdnR4&wnWLZT=e>-u-@nIE{(;+R<(CWQi6yH{o45U_hVqux zg(W=RNxMDMnPn}{7@hKGS?F~>l;!zHhCNC$pMOogQW-3FkF(sry=f)Kg6<hCV)snA znGV^_P&%U1{aX6ojAgP9c`LFPNKS8kre2&<_$0z)|D{z2b{$#seS;Z${8tIVlxuN* zp3mwfN|uGkx2)Nf=6{d>s8yOpgv{RXtM*~7JH#rh%M`CPe=uBYpLf5a_4GB5^P15o zMYuwvt5!#EE(lG`{CkPhPy5csqA7uaBKwoK*?TjHPqXx#9?H?J;rG;k^}}47_x`W0 zuy^X|-3&~4UB7l!_6_m%AFay{^&aNZ-uS7wbZcEe{okW;U!=QdJezhVb?w5#F-Mp! zw=tH6U0-!+l2xA7DX+&@FQ!~=YJ0JpH~NRIdCtSRcQ4P375yB-dG)5uZiiJ|zQ(S) zR>>+G47#sJm0G1OT{3l7cTzym%uJWLxn>(yt^f64Zj58-3S)mJi{g7yTV@>AJZdZ) z!g*S9!Mtr*>kgi+w+*$onYZ1Yx8`eBNXYD2%DU15^RL`4Y+j(_lEJ9DUclk_;#Dh} z_Pa>Ry#6S1ICk0;+r951RN_i&_2<vom{b-w(@3{5<z!Wi;-7Dt^*^^w|9{}2gp&+k zhTEgHGwV*SE1zsT>E|=E*B|^I{;8^Kotee)==Nvv=PS-lI>)%`=8>=U4d;6GcH}zT zon)r!aAKMt!-f=_t2*a@2%S{D;^nYW*LmTk9@Tu#B^#H0n`AjX_u3QD+f(8yZ8pcn zzAx4bJ>s)aOyy?llOMC*yjq!6z|GSk@>lbg)`3z^zUcqAeFgV@Z2obEKZvzW(mDEz zuVe3m9r{~i+%B0p#b)fB61g@mWp4d5!6UN#6RxVB3P_IryI>{v=be{5y{4$lpUeK* zt%UK`tPcriP1sg-7H3Y<5~!P(aZF;Z?e%>eS1Rso+$M4}wq}NiWLeW5Pkr_1yu3Ge zvo^5)@VOc#<FoES^qdtk_a_UtUe9jzoZ9$y!guq?d#3lfd2TEH>Ir%CcJ;cJWrxlv z&#hltEOf?nL&zo{%f0iYw6^4&J+f2PCSb~$jIZm{-m<(hO1v@cUS`Vf?W>;1`Irc6 zE%2!8-yJjmMD^+h<u6r-GkU(-INqr2cr4S)uw%Qj1s|JvuZ5;ji}{_k2da|}duuM> zIA_`?apS^E*21+3w|D*c_HT)1pDf3<IZ7IKx^22?^`ZKjOHChz^;)k85J<b2w0zB# zAH`?ax~vvytx)Sy4E?i8YFF~-{RjRpTk@jrN%Y=T`&++dGy85<-h6{mU8a|}BwW7v z;KSRcJ9y{cKe}bJ{Ex&%o?g3U`OdWkZG2(=p;c{3O_5rA)QOGj!eteg8;S=V^ja)_ z>F>=?JiDJJ&D5)}_Xxc1apC<5Z*`+<w>}BolHPelrswnO0$&+@m+G{2haT@)a`(>B z)9Y-?kACqfv6)ukCU^VS>({o8%n@O3A=BrJY`eAO^0LIjX*0Al^0x}<ujQ)n-*rNK z;Spo!hu^<z7Zfh>etP_esQ7%jkLNbtc<^~uKL42?vZW867jFC5T=KxV{?LZCd_T5` zFv!H5m-)_k`DE|G%!i-c!fJUG9Lv5$hutb~h+O|A;8Wc7O%Jc^nmK8Ekl-7Go1R%l z#n(lP^x}7lb=u6>p1Pyw%I&iFH79byH_YmKk!#m>^L<g<Z8g;wrm^aGZkZ=%F>@E` z2Wu8Nsm+jm+~S`#{r4q{(is6$VlLJ%3jMVB%J*lx)H-k9`w%^MlgZB0U;jQ9QWS_e zBQHFi!@%uVk@$4CNj_d4Zj%Hbhx#_z#(7pLX=Tq@qT!X?$$fcgh?u=oxkdlAgX}N) z{&pO^_nJ?2WBj%M6M76EShRZXwl({|u3+U>DVEz?Ustl2o#Rhj|4!Jd@RQ6rsbey+ zx9Yd7<l$QJ)GYNNgX)g#PRHDCRRPWoty3Fj`?(!D;j(@2PWBzk!*2zdtiKdHE95{| z$=^ofIFmQKjlvKAactkbTVvNZt#>k<8To#7DqZX13}(wIo}I7b=l=I@#`n4xIc-*Z z?_|8!yUQ^58;1x-wz+5e?%5j;=dv#?VJh90@Z*wNee*u)ExD~}`!2-qcTv6depmQ` z!^iemHQsVR%DGiHX!4`H{SluSP4@Gb<OZ&Jd*c6WRjWVeC;lmwC|vgXk-ce?Y$M;V z${$W2bKSWPS$+Bb!TR6?hc4M4w<Mgq>eAh$FGU^FFR<Qz{;sx8LbtaB$LATGiNDr- zO|xpQ+p%6aA-Yat!{z(tc7Lu!wCW1UExh^d=g;<f#^5Qjlc#^wViKObOIm}`aPnj6 zi25!2>Z@hz{vK{U7-@X#BJcXsA13W7T*;?7%dqe8>#y%8Z#{W9c<ou?edqO;ie!Av zzsAPCmV1A4V;r}C!+r70*$d^}S_J%JxqCW3SnH<u8$Z;@x!?Qi`B(o3>%Y8d4e~i9 zw<G;rk;<z3@we|a<o}ueF<$oHuMPP>KfTnvb)Hvfa{Xt4EQ4!L4^~djmDsn3_w<L4 zzs1_8O?c26^6Pgu$I;~r4=s@KRJ$no{I9_*iMe?)39}yTJW$+wZ6E7D+w;$-zYz+E zQF~Cl?VQ^?$@Mx?OXfY8`S3Td%L}FLx);pTGS2((E9;hAZqBtxV-dX0-9J0!PR&%& z$4_!aHZF9KJM>7Rx&ArJ=Sd4M-xodmUH@aL;M6#mgHqAPdwQ9_sz{zK6%xJYVJt1) zq*b6aXK}A*;1RJY!F#S<tCrm=o-*$O*YXzKpVQ=??vuXVzu#rcrr+6f<L|uuSM~Ds z>${P&pH<hdEm-VnxOZ{Xp2zo?_9WMqPqqK#rN3|1gwv1fI`<vfzNc|sL;bcT+}jt& ze_W84-};w-+v@m3X3K8=l-}6fn<o7Atp{JwqNVpAsXV*za?h=Yzh4*jEK~XZ|H|W# zgp?naUo2QBchyJqSFhEY_gL|$Yew<bqk&fps=W8~`aNEDA=l)?@#B{+_Gtc(=*%!U zE1>Ny)G5%$ds!^~lC1aM&WZ=BMK@fn>ldB;_h~`-FGINnRg*9M`2U3=xvA&mUm3ZC z616MGWgDg*sTBOmaogeBl!fxFhN0K;*OtuD>I!;3KXm0>-DM37_X1a!AHRRrutFxr zL^0{pz7ij&55B7R<}@q%vgv#k;5mDA9&_E}_Z%vmo5ckp=PY?!#m9G*>xi(|mBSyV zx+m_c7jD#wmXloHuFTJOMC{Z0lu7ZQ*H^8Ri!9yXcj$2G#LCQng3pi4`*>uhz}7>L z({f$c&FnW`Ql_4!A)@xVz=u<E>;4qW-N~#B(ZZLKK0QlIii-L))qPv)()n(Ob-c{E zCImVtMdf_-PM#OG*=kws#j=>yo(WT%qPvqFDr%!no~qw7xxw~p!sDvydyBuY*k0JV zWpZQlokZQ~PoByY6nE+RInQ3FC0wGnV{T3E?c`3u4)I@JOX9gV)+ziHymY8gw?)O^ z<%W{k6L=RskWg!sFc<&R*==y5ea*2=-;7*OMQzsH7d+QB`seE8+-{CJzCGXbp7wEB z8*wT(o{$l%SR{G8{?azl))^P_CwXLNEjjjDA=fkd@mIas38ssSg`?zF=}ntH>Ghh% zsGIM;XixroXu7p&Zs$H>m5GWK9n9O5j{I=*x|-H>_r7rqJD)+hz(t*|V&A=QdsiDz zn3op5rD@wD*3>KM+w}Q6FJ>)kvYL?gcGafc_hyAluPD^cjAXvsRwPv)KJU}YPO+uS zR^&`m6h4-aes|*kn>lMDdF`KQbu=xDJyMW*jqTvB2U?F>KirRAxoc&{-&eh^C$k=N zyB-wb&*AgDXtijQonhWxmL}cH50~xaH~03d|LQH>9J1+l=gKuvv$UtYWU<%Jx={A9 zp{b)oXj1hxUe=T5Vl^2KwhyJJhS$q9HT?8i7p=w>9IShZ`E*>sls^Z0HZ}ja^N01A zy8pkr_jj-Esg?7$HHhCFyJX$+wDbs0W&bV3o1`QwpDKT-42?P|FUlI*YNNa^)$z>T zZ>4YTB5(G|x(i>to9eUlbNLwtO^u4Xw>6)w_uDwJnO*a^NO|y@8;dp>u}RfF-s(EL z-c-rHA*54n+lfop)#aawZpxaGeCKmll)SCyhP*}6El+cTbge_Lxp<m7{4qW`$7n{( zk%rl(-AtuB@AmC+bw9}=v1RY(^QG@+b*_uNZuP#4D~`R;iN}7Q%)>`DCJEmfyjL!> zu&rpnGby;}@=os{v$!nv#%5731HMUr?s9e1DAhYJpS|GfrV`z+hLzKu9xSdp%&^9B z&avF$kdvaEX{F6K%Qu!PX{&Wsd#tjR@%DUl>Y48;=|6T)c^_^mRhf96&GYfKS;ZG_ zXe2J~jc(T8dgpuhTs?uOy9)izzk6QBE;;Akxv65TKRA>vf0;3hUF&`xcY))4#9^+_ z+d~-^ZCP0mQ{Q-IRmoLZyC_=&nUXEnN{nrCayK$I3kc+dm8D6}Qpnt%7Cv#E>AZ*b zRmrQ36v7w#f7mbkZbtdn>9ubX_WV}xw=Ryjx9s<|8>)(P`OeHezae{d_RI+H2N8#@ za+@lXC+I}zr3<U%de^Wmn4`Gr#ZAljd8`@6HhJH-+1KSbxir+zIk0uk0{ttmj;dZu z(KG&flx2VV>5`&_KMOQg7QB(jpP_sGoO$luLrUlOSnkg`9jMJ@I(w1m%N0lE_Z+_( zwOM3Y2KV%pQ)j=BJNh|RSFA4M^vvv~2L5NFejd@^wexe-K|TvF@0hS_2Tb+*LL0N! z?tHyeRCJGy`H`ioPYLmRdD@tZ>$xdDJ@F`U-y!7<4*P_!e45{;8Z(1$>H6@S8J<!1 zosXFdY`n*^%*m~I$8!1K-;c-tW8QMX-V{=eRw=93o0%eyI8Ti_na8|SaPM>NU+hOF z=&Wma;M|bXa7XQ<?umn&-t0`_o9ta@AL=S*zIB(bM3ZXQ6Xp1~S8x5hac0@a^Ensu z_!b#i<;>sz_=NtCUu*yVKmGgL^ZiH9W=t(LyZ!rn*~c)+`DX7!$||e(|9`#8^uX=? z_y2qL1@rb4_ip84C|GWEw(h|d{k3O(v-zXiTjulb`(L;Ffz6zUy8ABORz21+ziFXm z{>ix4v)*ra*_<)=@cTRJ>;5m;YN9;L=+y4It&?+AB<in!XOBBq$>p~6h574Hj(zv; z*DIUdyKr}6_b<8rMX|EYZQqYCQ&8XkH{V!oMaJc{Uas5k-zry3IrMG*+xfTGTR%9a zHuW&ix$7<h?*&Bux9?#VTl7iMe8aDgEIN`;O?5Ifq?+~17iZfkRjv<u7Hyd;aB9&i zmA5Gg2R79$KF#7DQE#}4rz0=KWTOM?6zjb;KWfz0x|=QLl4G+Hyp~mcAU*8d63+1E z$=8dOr2W*t38=HN@`=f8>WmhY3ZB(<Yym^A(q4Z5m%XP9_iTu^n?Ip?<0+?uW!u-p zn%O`9Dm3M6or0Ox>${(SI|V5277U8MbpFGfOMDkC>{?DlS!Szo_<yTkJAYFf2Os~{ z%+<{4dmc{p^*JP?=W}1*AbsnmyelWYA3mG1TTpDKG8_Mm*9LRXJI`>L-p<<gb;8~o z#bSadEv+v_xSy+FS=+<Qdh$Mx_Wu1p#dokQ_mNxa^5nspm9_pC?jCs0USqbR@qzP- z8B@-43$Zsue>|IXPex{5wI5TP&8GTjwsR*+{a!}!9;~-`Yxjlw$gU+kOD0CTeASfC z$P7B!A{idtbI4DA!>vNLdHjV29F}`t_B3yt!>qe9TfvY2il`zZrxeFpW#z?%2__2{ z7@ml$36hfKQLbBdTl?H4t+~fm_)Vy5>&bSSx^=!`>4Dond;aG?6*b=5XOnSQ_J`e( zdf$%OZ=1LSV_pi(xYQW!Dn94Wlkn3gBoAMF5FpmJKQ2Myv8LMc$-!Gssg|Gn(6RG$ z!4Hds9gq3u$Ujm#>~XKj+fHGZ)H};3^1oSHwi>Y2NLnUaR8IB%>Na08F2N#o>SRet zHxKr2a~=v7Pfu)MZnJ)O;HRRV8q-9Z2QAS-@1NKAJW`tM=5+di<b2E3F3K&1=Id1g z+?r37am8_PzMOMj@N=X8f}+#%A1oi7y1<$D<wfS>u59l`SqrP~tlFyDS$l5tMG5z} zN4D_HEzIRf=-9Yu&-xbQWTmjo$?R$&8|(`X3cuO+Z<+Ew>k{#UoFy!xcdH%;1zvm7 znALQ`^q|N8Q}rkOLi?9FTFSZDI8I(V<=%YPc~9<doVGf(So7-X`tGNji~IP5Pf2xg zCO-^1buVbc1iK4y5j(Ez-66O3_|~<O0$Gzh&9YuLMQr-awzMqoa?Z~6yQl7sK9IR_ z+0Pc?TUQiwrxwL;S{r><sK~Z=8c&b3kblUl%IYUhOXv7LN?Y;zKz-VURdp(7e$1b@ z&p-9{s$j#}2lMZQewux&d1lWMiRFv7Uuv>E;V<{T=~bHi`a==BI2O!%?c-;^Pm}Ln zp%qI|V)P5G-RsP^nNM7nbN=?y*Bu&O;_L5nb|$>tex_?HbF$rSPj*ks+gV4uH_Dx6 zF>(mlXS&}*<@ojTkGp<{?#<&lT;EatR%&mciAl$+yfZgr?G~z<s&#+cRyiv=*7w<! zPrr}re?42j`U<b;Max%V+@kF5jgxFb_C7tnQ`~UI67~m6C4?QS9KYGk+clq8HEgbE zZ_7dcGv9r$J6_up^hrr@mGrf<XTHdUmT}!*`ZN6ehmRT?l(N@UD_`F`c}=;`g=Jf2 z)i3y{totJ5qW(5Lja?q^^1K3@{{3V+W+QQF_I00|v&|QuH#X@CjV=x^Y1=gK_v)Z` zFE-7a`#tyC|FUzDReT$Y-ag;*{qAj%_yyC~C2^bmI?DZ4MkR{%oO#E>=*{zvCajte zH2Wu0{l?A8XI!?I&kzVP*xTxRHZ$GWe2M3mpH^DV^*2}KL|x(7@vqc6OJ%cTNJIJ3 z(@s<T?+TveV6QUP;Ct~b`qXx#=9~rZJ}qX5)H7xEh}CbE5p#Z8DRk&$&Z~uQoU<#R zGqv^GuY0+pSnA&qU*DpQb{ZX5t{*<5%RJ|)PR*Nno99>?$E?ZOqRpV)uzBmzvx`pL z&1Pt;51-q%!~S9Yf>lRZE55$?b6}<-(}dHHc7E5I8xx~Z&{R54Wa?Y?xl=m+9uW<x z5b8~QcCC41#@V7Da@nT^PVcilJtJ8!J9y{gwcB~3RQBm=Cf@W9xglD3%DV29am%rF zv(K)7dGyw-(hz&qEdH;FlePQ%Yc9?aa{gEsxk;c+doQm{?^HpFPgm=WwA=#idUG!G z3CeDoAJdo6<Cauh<rFM2nR(~ASu!FoY#;Jpb!e5%-Mi*<p5OME7saW4ELZd%PhBN7 z`J0O3!^sWHc5m5m(DSFnmh8Uz|ACqTQ`gtsI^E^9w{U^rGwU8v=Gw=x(;w|Pb?>-P ziZ3@;kT3VEJ(F^69(ie9(B}Q-UN4z!)OILg`6;FiLC2rC{s}D2oH0L<ai!_(6VYwi z=I)leH8@?itL#)_GTVQ`^W)yzC+c=JY})F1GwkQ*=F6*==d7z?E95@w^Lpm3$Nt*J zr)ODif1lI&z<YjRT9U)2jlb5Y*l8b@aDTmr*=$oZvwS~?y1|^bw-#^LmWN)yr5wAm zzVb4kaO``}%iOGay_`4Wo_@^quK%91>h2Yn#EVN_=X^*_nHS0Q^}$`XyjdweQ9D;E zZ}KiY_;i8IdZWi*9&J2w*|_y+$g8v@hSm%J<_PCa+W7I|#z`CFpYF6-Ig7uDrSYAl z-1+%;y5D|1I7RfsmCiEZb<MfomS3;pd)0gT!7F~z`dww8{=ajtVB_5NyluB_TX(xn ziou+?)>`SR*9W&hIRAX=MOp6YX@QnA<MZXe{Y|^BmZleWU;ORX?@OZ>oNTgxuQN?| zxqzBlG?(9&?)#<sTUP&iXZP>K0^8o0c{PpU_jbi?d?2OO?U`m?Q~Tg`UvqrGv6YKF zUo5w`|7rbP@CkQ)e$UrJN&YYYpT|xKk-y9|)pVb$)7{^G61rJIzTf3OcLzN_mEpb1 zIVzj^-@H06XYCfD%2^yjN^e#z-Bk4OXZu_xuY<-@PgE$VCNk7r$lY>qMMmP&mfVKb zMgKVce{b~Jy}!05D60NXLm77j*DP1Zu>Jf?!*|MTC{K^>DZQm}y8dlO^ZN@AzbxD+ zn`_pe6VU%;wwi`;MedXK)a?69bQ&FvKgM}oPEJqn@w(N+e?9w=ziq15)=esoU*8>l z7#PG8yoo3IoYj&OE0>-K^0_gqe}nlYQ??gL;+M)Ff0**R;%&k9FWUaD#~&N2C}!l| z{~eI5f92x)ZoMnjZS1C2i+Zb^KRUlOmuPwI`y#4x+0Cauep^Bfg8h#kj99*FW30@P z#@6G8%Xfc#H&e;_%&qy$g*OHB^ecuu(^0Gb)V(GC|Cf3}qrU&s1z$6XOg^KlQE!Ia zGCUe{vQK%Z;NIWbpDbzx&ej@Al^P`QKbU;{-R$EHs;QZJ>zuzI{rr>fowr_ySBSaP ztDwN1>5fKm1}8c$eJNEEZmUlTDtY9i*z~mIZ^N|t55GqL`uSY{viyIq8!iS$HzvG1 zoomI})p23+gA)bDwKM;Jm8?&8e7MwbTKezLZ<kDI3Uht1UHX_zo!8s?Puj=c{3%Q7 zsr|P0jcnXD^=*6an{1tQ=-Y<(GkA(leV_E??fv+FY*8zNG?$48O=>z9C;#tV)!(Py za)L&e{vCf?U-Ikt`P|dn?=M>~?Chg$_LtvHbHan9MKYRem-lxX_GwJt_;CMa`{niV ze2vHV#j79b5ql_k#>uFqw;_EATj!2t4<$?Mmrr&HF}{9Z-!&uR+j_fg$p<{RH(%ZV zbBDy|u=>7)*iHXdF1+%8U+3}@88gCGn>Ysr?A{?`_s4_xq2_V*I?IQwWm}m{za{S6 zUDDYtv|$Dt2h#-+&oj&N-(P<F;lrgnjL8DRI`yw5rP<EJ#@uGw9rbtZ&fWg!eoCHF z<CXGwcc*8HN1(Bwfn!2SiSf*9*D53D-kqI)Ff=gG>Bvew#k9VSjPsfDIOZRmFY!V9 zJ$L>_CN~M8o~sEBu50d3Vkl9RyI}WV?$5H<J4|*Qd4096%%yyxpkeQ;2ERAT_wWCm zyv}$9|N8Q)w&C*=Hn7A!j!l%(6Z5y!-8tiK$DCu^{#xyyt0FkxaQ^w1oc$YrvS>Sc z9DJ6*r+gzOA>8Ec#+}OL9cLL|t4=mB5U-z}p3Bt}DHtXZdLgSLQ1rpnoh55mDOa3X z!*nD2jaKHZh+6`OwGL=cei?Ob--B(Lb8{?CWNcYi%pshue_~>Qid$!mT}D&)iw`ae zmkzGtn3{C@#E%ay3C0JOF7KMWMO1NKN7IEFB8o{lH@gHkyYw(^SGjfm^u~P8BTIW9 zXNd2fS--YOJUBbOUsz%dTh9J#EM?(*)#7^(E<E@yJVMGs=guGX5A*IMET3#rcPjG* zV>{2e5}UR=htyZjU$n3F_TuiowQn9pi`FgvHsNqgeco^H`$}&NQ~TD2u~&W6fA-<A zams~|2_0|Uf^2pBT2kMp_Xj_2-I%o8_07sh9dDL<)<1n(f9OubvN*k@n~!JD7nQ5> zn!IJ<zSf@>Jik|HtZTk1eC*LPhl>>rn>Rl!?Q6GNy)%Au3C|qmvMkTXZFSQ(T|GPP zw{OAv$||)r9evu5=Dl^>d!YDrv$ENXV%~jCA;*@PT)MF<zlkM6x96k!U(J#!sqUQ% zW`EYS|NC$G{&u~P>9Gy<l3t%Lyu3a?EK#R3;z*=xW3q&>;FHVCrxqLRNu9AY+2HYN z<;fmimmgg@)gW!W^8BwECPGK<*e|(#Yyyj5tw2>m+^3FLD;19}{<ry;O7oIH<>PzS z>iw@fZIR-#Wp`H*ONWH_#6uFVYFnh5EOHcBciuI7kUxJ-_d+lB_Vifyl4<qVwg&V{ zAHTD0%?^oz(klt?B`$AsoVro>Amix=S+&_EpU+*re=6PL?I+=G-c#GR<=uaLHTu!* zTW=2CQJSjr>igDC<BqJE`8N-RJ)8ev-cu6>cb!LNY3|1kmpRY8ezi9<?y6&uw5dti zr4<TGUad+fx7@vY$BqY&+Rta+>Aka9u|uGq<8l@M=E=*J+%CRj6qvU0vDvc6WkD@6 z*^3)4?-t;Fo7HsNLXCCNQ9IG^Ci~ySJ>L=U#>``VYu~aw<$AMStlt$&L?8Z~w(+8F zOKZqStv#(f0<yOX-xrFo+Hl0^0I%<D!MsT)72mX-S>$ZW8f|2_%=fY8tWzItYVK`~ z(hQZWcwE2vm`o-2pS0Xx%kQmwbFex8K=s9w=9#l+vz<wad(X6gW7of*+tqiMvn=CE zyzqYJ?MrM=ZvMW+_U@_qva_Gr?#wjnxc~XulmmTdrmmEbKa+exHT+n9N6m5DaQ|;F zLZ=_Ez8V{TrR*UKTWopipSBa_cPdI#zDt~cv(Q!leaQPn8+C_{fLl#>?lH4Iwbe1_ zVCrLIk`T90cxk!Ed&7Z}<HEo1S&Bs({taBlVbPi$WvJ@&T4I^V4_?M!J}*znrFb2v z7Mx@vp(>y3#rjDiSgYf6>d7g_M}C`&ebajSUGMaan{V|ttdB8lHnThLKiSqqLUC`0 zspoChiN`i9JCJ|kLb|ViS-<I|!waV#@7DM%k*zi1_~bGZeVOhVleff9$mA*J`qL&* z`|L}~_Zi9FmkMl54gPMKe9%OkY43^2w@jq!e=pg`yXWGbT~ge>$?MsBown?Z{1m*k z)|x{p;^nI{1C!kQd}=dmer{LX{35{j;5478XBKnHp1${MGH%pRH7j=%Oy4-`blU3V zUkC3ite?rqJh|)Vyz{H2lfM6SQQ%ED`#5${&AnY)_%!p+Oq<D(@iceQ?d>J&AIZj? zx@oQWTQWG|<8~uP#{N%{Ns_9rL7p8~mIoY<{d9W9I?eV6?_L+~Y3+9|pUSvP#;IoC z-y^BYPUq&Gm%F;OIAzx=`-AtIGEaCcx%DbyPD0|&J+EKIuUlukgM02~^KVf+54xP) zKT5Miluy2Fn$P%Vva?w%W9Q_BW>$>+lkb?xFm_M=X(nC2^Gpoyr;@aFZPm4D>+0@x zoQdiE5&M7MK>-W@(C_vaZH^i2JCNUTC%q>8o5Ew}d)*TAx5QdB8usXakXHIGd4KZV z<UL^?OV@mCp1D)%$->!}xgN2nJbR$Rvb)H2iot5<j-UhP&+b3<4F4kG%XB9@Vp2)$ zhcpgPt{=y~?3Q`i`K~^I<qhwHGsT)arJg8uT@kQ1Q$5b%<2UyNpRrAw9&3$nvt4Y} zBKDU;58{qYUy|d!(6C1HLAKnNpO*yhKIV4Gvsl_E?{n;`LjT95O+P-Kv~c5{GjX*^ z*_@|_OEf=78-0nqJk{1?cEfk2TPnHYK2nEgGwpxqJm13hrtPx;#>+?A>s231Y&iKs zYgOl~-i<q$_8TtQceFH>KPu)x^~9s9x#DgX#~yM0IX2;!*!9VGH(M+dJi6-KN!f2# zMNcH}+tt)y(RO0BeTDmdof-Yfe*|y-P8Uj&mj3)?F~hcSmV4VD*WA(jTh-UuWvkdP zvvdF1kImoThadOf@t<j8nb34|;eXE_)K?wvZ4~QBxa#ofXQjV_g-~deUDR0#_X!WB ztG@qr@c*(v`a^;KC#Jybt??3%S&V9&-|pjo(eZ94L*vAAnLmHH*Mv;{8PTcYU;ncF z>h!BeWR-fJ&RLsRTz=re6|317v>LRS`g9*D<#eC<8?#RTd;fZk^0sTn_l`~D&e?e6 zUe&Ss%{h}##r~+(;jn1SWvw~8$nJL4BKDhN58_<5FUdK5z_3L7LAKP_m)8XEE}osz zF?mLPT28O09#6<jue3Y82EoVfZm!i?TiTN=_M`Xg*WS(A)fcRo?{%*+&fINq!|++; z1M{@&+t1H?Gp|vLbF=EJ^((Sp7q9x;pe+@D(?;^4US0j8Gsh=}9<H+S6g1xz*br~> ztSa*R<)i!eKaWab4_ukE{E*v%_ljIw*MEMxG5>wE;?j@x{(m+;c_|Sj_JjBOuO)9z z$*H6ss20?myp4NapJHm`{erdrr{=xk(iC+p5NYU(QuYk_XglrH8X;k2uP2AUPWHb1 zBw~m6mj0z%`3%nr?XTasV_oLA)c%=iN2+@>({jbHSsgL){&Vcnu4Ol;-Zk{?<6N}m zPutb2o9rxJ3fpejFg^K3vrlNG@a(oQ@xnC^Z%+N+y?JY7Y)Y!f3RC}WPiLF0?%w31 zC3kC5WXXzW3EpbDr84J}zVg@a7hRt4Y~{9Xs~Ac}>#S8f7P|j_8oKZ5Rqu6YKUTXG znZ~c#rt{i3I8nv0+slhRjr)1bbMIBtW4L#2bez@wC06|YN3K`zgu>F^Mz1Qnm+PvU z{_b`}$&9lh1v^;(otFQ{&*OEq8{D2|G@B@>Qg3W(Y>3>ZJ{xnoPkA@*-RIh`*rP7) zR#|Ydo8cturrjssH0j)0zuQwk&Ftsj0DiA2t4<Z|JndlcVar+}&8|laJ#Jq4QY<9g zUY|7U>5{8wShipO$sJYKd|m$O`}jJa`hT}=IM3O9Px@6j`(97Vp&chPo^7397xS<F z>$#m1=bZod_`dx=zPqi9{<co>(PX_76#nz%&Rs=%eh$klw)5F>SJeNmXs(+%vrs<& zv&~_3ZKwJC>i3P$zCGL;*XVcHxR&kLc?apLGfG?C)?Ggo=xQbTLvmi+DYkna(=8I~ zZPWFXdL);By)MuH!X-=1$$QR<uLdW0<32t1wW=4t5!WEwvD*K}t7Zp-j#(dry+xx; zRyZG<c0kcr=?mA}&#GIa<BoC6ulc;PfGatAX57P0E7h4HGL2pWDU-xAKI&a=t=oEj zj^&FD9DMGRwf0mmKh#|;RPjvyn9^z=iF@8t?}e)_eb{Ya<NsmOk-V#m^gWh7yL0^c z{)u|)Wai&%sZTn#VCAbXCcS}Q=HFo7eEC$`=R>6dPC3GD$M<N+Ej_b&)<g+$rLVl3 z`GOXy9co%yXK~(S_XZaa<#S8@<qpmXs-OD%lyKK+>6dZ>_tG9JN6)<$$2mFN>V;y| zLrvXfyA)&d*=OEXEjY={dbzjl`EOCpd(F3Mm=sPmw|MHZp3|tVf3<r7-}%X(K2@(e zb0zsS#{mX`w`XpDn9ukB<V*SeUv>BYn^EW2rD?wU<^BguJZDZEI3qLp!<XzJFXNTD znLp2eIsfwes|5Lk{@Qv!pUU)48d{&eoU!I!d`0YZ&-cnH)09r8-h30g#N!-S^fZyT zpACf1&G|T6<ZrRncU`Wt2To6_tiK{=)qh;fk%|BLq8D9}%FE4FXBOJ|nQed4_)Y&% z*C)>JWtLIz`~&P%{392f@wGg<W5b5aMyIcSd2MyK?EJ<R0^6LI^(ZZxHjOzXB5Y<s zzHXv-Yk$zOvyrP#Hj0EDKYO!@*K32{%NdW?x#*Ne^Ct!f*zEf`)x088gFmG5@MEU> zxFgNdjOs`24>nd5C|rM?wc|n&_dR~6Mbo4WgcXfA9glme^d+{e_Ij(RP$*zC_x!_~ zaxZ(EH!KmCyU}g%?CY#HtLEk}A9kI4%*ny0w$QpQ{lXDVgE@=m+=_WLXVIC3e|f6A zc&oei)x0a-<Xw|3%)E9z>m&Yy<`3^ZD(iSJ__W@xCOvQc!E(W^?tc`2sNIRa!}rm4 z!Jg)P-5Fx4zwF)~GQZ%o=+eg>vBr<yD9`xDv#4VlGlS0UJyYlZjD5(pqi+Yt`^DlL zdDqQ%X`7jN_^OCx<id7^=7N0Px{e;fr*<hRdFvhB1h*bPrFcT&PIR}tQnEuOyX1t` z#V1Y~8`;fws&_m5STn^$#?Ie6rN(JbU2vuLtjpI#1d2L$v%ir}Kk;(?hwq<ar<{@5 zVjVms<*8hg(4oCs|0#O8P5B)#Y3E)xRo5$W=Iskw3i8+1cT8e@Dm&#sJa?AYx0Qc_ zH8Lw~S|_zN2YOFoxV)qMNXO?%0*{{WS-vFUox>7~j8DF5Q$=g)If6L8i!nMc>CyPE zs9Idj8`QPJwv5k_>)}16gpMhUPi2>!ndjM9xWDNBR>ORUyOVB3h`kk%R=yK`Tk_V8 zj-vU!sd?)+ZdA(3FKxde@$lZQa~F=WO)1Yg!~HC!^V!+pdpjO}oMN75;ZURW#&YS| z7qy4OxfSg^CG$QVP&%%oIIVu=L|gu!wV&?oNjrU|_<BTp#b2xZi0~him(9Dk{#;zf z=`F9*_ZO|2aOvM?=9l}LEheAWb+7$t_KvmOr^vZ+{@bSl4}!nxE^0p^Kj~ew-KJ{Z zZ>u-#wYFgSGo`lsmEte=CFKwJ6_TT}w#3cdA3eqR<r;;MOHXGX-E5txp0#IM=db#= z$`ZLP>$gcnurf@))_s00+XA6|afa%`Q8{nL=P<nN*I)9x<(mJ#v$ypsW~;tmYq*cw z{N&8XzSo+$OL*>a{O5B|KERt<uB7+5TJTZV7H$DKX3InSn=eTeE8nVKAZ+}2(-Ma) zUVkHoiggX2j?aC?6fiT-ue8wU_>J_``;m8V)Z4f(v0iJuv3g?RqBY#bw#Ur0f1i7F zY?-CP-t?K5jI}><C)eJU7u&0OZpUWZ)e_ZbUy7cew<|w<Tar?Q<;{<WI#%3X%40l1 zyVqRv?<e0^6MR_~oi6D5zO~`4p@iz2=r_HFR!Vm}FP?els-S!5+YVc{B`vkw`wTtU zmuM@@WewJ<U*%)8^2sOj#QtZwtc!RT$9B$Ue&~Dtq1E;Gmg^t3CtiQA5+P8=W%)gM z&Zp~}x4%y2W7$6?cZbUdJEk(@K9BF}ePTMXx>xumb$I?dOtbj?!#37ku5PM`@Z&vf zg{u0d4^@v(i#auG&N9*bu)mShSy!?3n(Apw|1`Ag{_wu$;*I)D-pul<wP)VD#;x|) zU668ohwh>M#qP=bO&9HbzN072FZ0okvVS&9EY`JM4DMU~a6>`Nc4wJz<71cmx{DU} zWgk_veRD*vGe)jFLr!f?s{KQE*;zafK6Z!xwJ*p>*#7X(-|Ux<`wBB!>Ypz^#+U1{ z`|`rnI{l&y*ITXq*2fkK*8iJ3U&?xm;9J}FwDe_HePp6OSI@Ys8GJZz{b7xDy+xe~ z{S!{MUt;w8`8?UbF_t^6)c(}r2z|e`3%6MWPfh7<|7`a6ug&rKPmj*u*($FW^I4p6 zg2S?%x=DVsF6hesRy--$pdxdjUbptBVPE5i_aE%ac${y|?Nj_*JuzA1l3q<cLR|S) zb>Bh8C7BB**YjR+=aRW`vr3`x*S6F{VQW&Wb0#b=>`4{+H}_z#Zn4Mi%SOig#Us-u zmL;w^9-;Q|zT}-7M($g_>s)T0Wnya+P<Pg(HT|na?)KDmSF$S#{wC#hi4|QwC@MYA z^5U=kYu3G;#k*kR%w-bcS@pNp-O@1Gs*~KDc5&gwgJQms*>lb({j}c8d-~bEB^MG- zMl2N7`kb^^WPPi{Mg`CAh@vUo6OwlJSLbIRp7Jc$^FkMEqia;)zJnDXSSqT;u5FwU zvbA`^@~F0!;*QTJOQSYE^1f)bO{G$2$)O_E&e}C6mu7}dzO*GMc$wG31kIzT>ixUS zoE8SlCAyu830{_QGf`_t)Wzg??%o{9thZNA;b&_-%3P}(8(k#Mz1k(H;hbs8#2c!D zDLU`gZ0+KjAD{J9*_174YiQS*33{9z^F3UXqS>a&9iJAg#qNBz{p!J}eHYB4-^{(X znd62?)~fO~$!CtX$VCUP-r69<eJ3kXUAA6vYSSv6&u1>)n#?uHq-d#&-^pE4TYXBl z-di{0j@#cD&0SM6R`7@3<;{B4k{WkZrETS>uim<w&q#44E$s^ID$cy0y;5u1>SfoG z?yl_5F`RC4U+nCpESE!zeblxk<UW=9TeHw;20M?8`^l{vHbq5AUCarsJNB=oS*3Mq zmqfORalQ11H&z~t?){#0I-<UM)#old?mayp<+K+a&a&A2!TaX!BkEy~t+Sr4WHp<y zWzoi-9g%^{qtEZ%c3Jv#O5x@2o6qHb*GZTh%=E}tvhHp~-_q`zDvn|aT9;qTCeO>7 z`6%P1^8YJ~Kg8%h(4BDBWLK#1O@~dp6t+$B`L3Pqqxa_Bo_hBfZ{@0N^Q^<G-7V5j zJDi_h72G2zzinI7gelI`4{wW7Wc~cX%);ZD%)f1CZ{(z<y*qnh#a2@jZvM0<ca<_1 zi_M>~M`!ZF*%8ZLNV0|A3|i%z+A>$ml705|vTHsW^~-~zjx%0w+_O!>&ER$Rjp7G} z&kF9^wA_6t6ZWfMSJP^?`gO+&MfGz%u3I;_9XWd~>ywRhXP*5Q7iOE#Ggq&b%w>q& zSt8G1mlqoTcE_)>JITyT0+)tf-0{mo;_2><4EavZ3ippWReWTWHOM%$?9|Vii>{x1 zx~)Zng6s2}l&+g4%->oqEV9=;(eSm@$+d4Lb*7hlHsq>!^_||oy*jNUT%rDPmHO|n zwI`O#ozH!t_8_Ww=MB44dqwo}yB7(j6`nrYEYAPtI^VGeMGF<Bv|K-mMEO;TzdLfE z*0@jc_tw4g)`{~%)`=FXCix!B519MnvGiHi&{DpS36|lT`mf9~ZrwAla$lWp_KCl< zFIG(FJv!m&){lJe^gXvVZQ;$^+PbT8NB!SNHev4{bx1{8znLUgR1s+N_}9uWkMHp< zGJBS?;&12#CFwPjPc-jeX?bP!>vJN_QAP##6kK0VT>t!?82_HorD^7k7k>467+o~q zHRtELx5_Tb_om5f+7_7YOO7|Ui~A+;&1spX-2TgR_jE<8E6iH(Yw?m6Pu}wuyKGK% zE%x^BsORs>)@)7K9LaM1ro!Z;kLRXXtt!msx+dl%^;zg|mc-HKqng~=89JWKkFP8_ zBI|pPQ}e`Sw$DLpKV+4!@RFRaUf0zn;Nc&dmikq!m)F~K({dH|ZDA=T*1f8CO%vzH zq}^M#GePO^q_xf|f{%kfubsqp>59yIzDpG|L(b0r?c7%X)kSu@VBofn6)H2#b{(1L zeshlKs>x|Bd$WD_PGi($WZr46*&R1|wrX>2)v@etF=g+UAG=x-Zle3B)YVs~R_nRb z4y{V&T)&zpYj0nF|9{!yqdXN#9e1Z(?+HKo<Px71ue*1~YxnmpNBeHq@id2V-WHnv zciDc6ea8Ddt!wthan(15Z07mzCv54THn~V?|HiFt1y0WjoFdP}Cp!pdKB(Lkq1$$6 z;nmXLk*~IQT<dwypRb$0#Or%|PVV<BrcZCa%wqp_<yLZc*c2h*xT4Khzs=;7(=`*@ zS}D_Z<KT)lZ*KmT?4MMgJnNa?s&kkB|6Bf_u`%PrC$7}I6zEAL(`8;WaZbNDl~J|c z*w_eV-ObUMvwg}tdG|fne8sxvMZDI6i|q_2nRezHZC7aDc6aaeFNxnKUFZMm+!+)a zskeL2!2`+BszD+r`xmL~T0VdB42wU)lP6CO>*LH@e%gG?AEx#9PyGh>1ZM|KevtEQ z^NhM0Uv=e~26aZW&Q{H<i>d$r_1MmdA3n{w-T&cVUC}wm)xsa%b{F%$zqY)*_F+uz zp7~RP@>hn|9@75uWa0PS(;F|f$UU6AY38}5abbJ@|2}@-QOmtGh_B_5T#DMK6E{Au zw|}+fM$X}St3T??>;GKZ{^#HAFU3JVmCKj?Kjgz}e9I@u`1#*2wwg<4UJ;Z2XZ*Lm z_*bcT@tfbpNm<|2`WG^JAN`S&&~qta<~O7Mi{JW<BGvYG{he%Cba+$!XNxn9#`(|I z{=1uO^nC5VS&g}?{w!@gRX_ic>TKH;rW|W$m>Nk$96tR1(ggRL>whdg#QFXhlkWSw zCFLiZ+)nP9!Y;-X;hnZ~R^9(O`^x;+zu*fvJSDI`)Gx=vp*$n{(C&@@roDT&xO=19 zs*}wuVaEfKb&HGUvFuP#5Ly_UD9aQv!Lsg$ZM$}+26u>Q>PJ?=<IYQV-LP|7W5D20 zkRQz^FVLYUaH4_#|DPvHNAx~Vy!Fs}dU{2B!%^3)|3P!kn{8cc_g-E5jP&+T&1cx& zu;gbtz5M)YPQ6X~rLw4v2fpeEeP7)sDB@)~Z;`;fpOL0KU$2TEI)0#<=_t43f!S;8 zSt>Z+vrSe0!1to8(fo52XGQlM*;)Mz`Va3eC}O#HyTts!={3&kw$HalTU`p2x-jSP z(%(j(dwN$NSi0|HSVV+~PQcFH4}L}3vu-bU5_CUnY<nb-^Yby*`u2HN3U{8bnt3z3 zW~;}o%J+)ryk?l^S$w&6yXE$~Dz3<-lU{6;&(`DE(<}U<>6cY{|JCdL%bS-abLo89 zTW~)4P}<XbyKY((@M)B{ojdZ@b)&HBTiY))UPSKPKF_Rg{&vm$9V$ya*)BCcnUr;J zzTuoL2~MZ_f=`G$Nr_xq$Y1DQuceZ9tT$t)!y<wB3CwHR%1>6bo=Odq)KWaNp0#{J z@LBH^$q82-f>O^dOUNzuu{F+qIU!r1Eq30Q6j9FRqm1R+;U8vtKD2)7w5$EmUB7(^ zKa1Cy_qtwQF(sgF%Dbe?zmKb`&AAox@U!L8s*gXPcC7I|n<G}dSxRlctqOzSyWIK& zNwx)oPxmoQ*|}GZK{W99gc1)1r8~C|81XnTpOR+uh-_GToZ(40W2((#uj#@wE{btR zF}?Z`x%hipg1WrDxxw{^vs?4Sj_U?ji3MI*_|0)W`+kE-d0_#O?G?5U?^S)i@Y;RK z?>%<K)xFon1FL0Z9(`@8etp(?y?nsE4^?kx)?b#GaCTiVdrZD&ckFV$9an<b6fd-! z{=RHmT*ctYZocjDpGbdxy$x$T_UjvO;1ZfSO<m9R?yZ~|f~D)9pU+;X!Xh18%rL(p z?`p-<@OhD$-%_Rj^`A0(HZ|w*#vbRkIgP)swS8BU3G!CUeI9jenFr5K*P@LD9jdPb zgFf9pRxV%Pv*j9tkxB0s$p!5$QHS>SE;#IAz37g3rt$XcF1M7j<g58Rx3pACJGM_O zbEs6l6ve2e?>_TaC$Hb(mk)XQo(e6v&vK%mLwW<#d;W#tg#~SOm%c9ww^qxsKmY%J z-a$))1&cGz`4w=?;`}bQ)Y+t8<NHF(;%eSm-79SO@jDtntiQLYq~jUmQ(hBmR;S22 zx+|*7xEX^_drwj?=hW`rD$v$?I=1M>9;La-`{uoyx<~neF@N}W#c4Xvm#Uw<(syId z8Jjfz``kBVnT!tYWj!yDqI{}W;q;w2=1odj{JWhU+;(h#Ala1TP|2Kf&uDR>_d5Ic zmdotyYl9D^+DQM8`|+&auw1pJ_I1+Z+mi%ep8GxN%sW?cHP;*W?E7~bDZYs|myVys z;}QPnqNCCxrkeDCxe8Cs^V07`Pr2J*BDJk}n#jT_%apzI8&;;SvW<3e&6#@NMM}~0 zFYmS-(FY-1IvZ~;dNJSp^8E!G-ww~z@wt`Rqc$UN?Vi^vDkfET6s#t4ZLXhEWAAy^ z`I6>g^Bm6eM_BD&zTVBlnjkjGueNTwoSk=sY;v-~CYjw*5o%Lcx4hih?Q=9*Ybi(V zp~(hI<}#Ni$<90a-jzl7@q?ey70dPoWxo~v`C1`QfN#g)^tZvgBW-U_k($C;^}PT6 zwDzj$4<Zlkj(Z<k@^PB$KDE{dPohfO>aShk4i$cp%JoP6sBA@fK^&`JjMsOc(Ak#` z2Av9&yCJ2jdH;gWMG+fsK@kqm2ov*LK6OhuRW>P168xcS(Q|2C;`chCn`b{wwmEv@ z`7J-4-oT3V^$yY30xuq4#p79+n)PjNMcUUx2Tn#zVR_k<6}45Q{QN%2G>yOtkzJym zOLo=E+>?Ghhhx%0?dt|zyMvNHzv0W=WAk~%dsUfc$BPk+eXO(Wq^%T=ovAbv?F|WD zsoEqFx=ZHL$MWQkgvMAIhlP;=U&JO|UB2?fi}2ElZa4en84Dy9*j}vJws8GJ$1RtY zw`qhISngZs8It}Y;MuCFZ<7`au`ZW;%DZ+|_l%WGAJqG~ytLVN!S33F<<T$vW!`a4 z`?N{wQNrFCJ6A|=id8>kerVQ~Grt9j*CcGa5~}i)HS|@^w>3;Go`De|CoK0@m#n>{ ze01_w+d1vMaWl`ooxC9T<J6YD3%2b2!7xK4@UBd9DfgoXZyg^eMnzq`u`-ll=HybV zTglmTZip_QqBhrw*RB5JtMG?Ub&AX@4L3(tcFMEnXL0@&2=2QsAmu*w1n*zA<6)Z~ zt^HO1axU|)TQlm4ZBMyAGHa`veIc0nO47Wz(7E=L{j1K;G4^$uI=k<zx?=jZYvw<f zl=oB@D$j4>yJY?|CF|xn^@)p~b-xz*`#J5Gw8#vbX)~`ZOH<>YZdoY$y51>cZm`_z z8BXel_HRD5<4UH-?#(weKUW8C4W78|oj(7C6kS1uKi2Cd!fkpp@~1vL*cNmy+w}hT zIL;@B-cGyxPMeY6%vg7Fh4KSAo4?0jUw2zo?f?Jds|AY3F8{yzG&TD8`B$Gmzf5vT zoKbo<Rd&`Fi77(=WPcpfkiGQICG**LrTQsinc@d**_O7{v+pzXa^JFDOSrYeUN+;^ zZu#cS)30uJu^1XZ4mobhc-@{YhL<xTVr8`Dd)IXzea_S^+@SlS&Xza!<;)UaMZ;S^ zC0+>qlT|u?LH5$Smb_=*m0pNtif7od?P{rSKVewnzGeFYZPUw}Gr8~1Ke29U%ial# zZ>HweTbgX2#+8t9`@U<6YR<E3jc(Dtle2Sfomr>t>p6dWhM4RMF0;%FF{yUki{II8 zY!#gOWS_OAkNuXV>XIJ~I_F$@&=`5+?$15Dz3um@-hQoa<Lr1Qc#q|YW6PXtof$to z-`T0%b>1-f)|cK32S2AhZuOnLFEF#~CD>p-v&;?kejCp$H#7ZQx#L*$p*PQ;xk(<k zT6Svohxa+g>psg}dbj4wxj%6suVR<1^<~f4bZhp9_j{6J-q|kN8~Q<4(O2-_#`$-W z+^!ql4E;B&JXW{;{FarK%f6YWx9Z;CTkUj)MOx24muq9)wyCf0-7)$vw_|bL-E9Gy z5eq7!b?4W<o$<l3{zrLWqKsYJ7VE?A&%Q7E5V$1PWlHiP_J{XfTMK_kT)f96@33&G zMN;&QO}A=mlogMEm7TtPTccsii@0^W`3nyH-5afuQ7k=UwZC#szlLfs+b6+$b6zZ% z+ux}7@V;UZ&t1j0elODM^qcY~mNh<0Uf}(syhFyh+@+d(*DXW6tBLiuol=EZG9S&J z-RJwSH!UfTxjyW0*(ZL98PAt>vCrN%`M*<e@o(N)uI+B@(I!XREataH=I8K)|NnN< zGxGeLP3-Y+=QS*UG4t|l>l>EG{w_If9hklGgF@}%@9i(8*D`zTy}I*FcyTA29p_Wt zsa)NaSGdx3-mb8@<eR+1@vPCws`~4aS`k9*QLzGfFE?&25RBh;O*SIC_^A7yy+^D6 z#8fA<9I3t@E3#eu-`Bj`Rcq2U*KUe?6MpTbRH#JYzkq2fw-mlFH@Z9jnf>Y3Q1)x* zwVhmUA5lN`SbdER$5gqWGoAX@`gMI+a!oPt%Twd6rAy;9?RCrVU60e8wf@@qmQ8{> z^_?4v-o<(q2F+}l{$gc(q4-g8zKK(VRyeo%EIq{i{!7d=XR#;=*Y#)DetDv07sho} zXz7~Zb-T5ij_g{m6)F7Zn{2&(rjnb8fx?mfq6@FDO7ghNdGAJYt3$}7kiGjo=0-bR zoU0~k<2cVC-a0y@a!v5beP3L6M(&Jym~;5j?<@WFeee0o4{=AdG8~$9e#5EEpp!~d zHvBmLCd)Q(e>RV$%UZ=V`{Q@)pTPEF?!4a*onJ~tow?cK;=f8W<)TtjOx@P6DleWz z9#*$(_gY{V66juD6t`8wj#IQX;>`4@DvQ=dyS}jaYtDV-;uh6>Y5KvynTOxZQAw?E z-KNyN?rO%Ce=Vxh_Pbg>{vmO^!ESBL&TlGGH&><Z<l?Jey(}cp>gM|TU-E*BOhCs2 ziZGgkC(ev4P)>BbD!sc%WvA}<@RAB?p0nmRQ>QY8-wc2Hre^j|nH8q9d}|KIKKfn5 ztm4o#C$D#l^)B7(*VZg^WMXj;(Ep~hUoY+Ahx0lo_3o*rmc-1fXFSpW;pe4)|Gs|y z^nCyFqZwOYUDcVde_Asl)hVtie0BWv^Yzc`Z8K!oTq~^p^Zj}Kfs)5hYLeF$onzc; zb=5BOZQK?!=>?V!r$6L8`2F-F%jb@W6aCAl2-&zc7t3v~RhV-+`B-Gf^Tadu%>RTR zJ?cr(+7eKkDH3~dvxokRUxk91#&JuJe6Cf}V!N)B^!IJ?_1-Auf6qVK@BZ`oxa6nX z)1O{HTCX{Ma`ZoLE^e(K8zR;Roja}HT^tuFFZp5q)8|i@mkU1MxnJ+pTFVPke4bWI zuQOzuIE2_mM<vgRujo3J7XIvdtm=WUe-b59FKD%Y&G=`clVUgPy=cbX&-WQ7{ok&6 zZ<T3t)Wpo?NgFbH<k;#n8KR#4?b;u<V}b3P10KKcR^&gbZ#8et*vX^9Ghv%n*7iT& zHpSf2jk_#6hwEw6>l&j6e7hd+72VQ)*Z$Jo+aJ1)Z^}D)!12q`<fAJl#fmelai~wS z6|2;iJ`y4x`sHr8?ZKb*Z2y_wdF|hm(cGtO6Z(UjiTBUvsQeF>)pKswv=$v(+#Y&w z<|+ZsAH6oOH|#KcU>sC0^W#hOHM{xiV=w4_%AddUa7S$7Ww%z>4{H?j<WHV3-`Mj! z=9R8pcKx~c>E-PuET4-WZ#%HA{?9a(lP*lb{%Hx1Dog7Pge?z7#;B`(iJh{CE!F+w zpUS_xPE?CB_&reX6=ZC%IbqAxu)wzBTQuVXwtKso7%u*rz;NNm9Hm3HO!Y8{(mml! z4PBi!)!t$6-~98x*wX&%%a)76KNdbRc%Zo`{gc%#bt&grmoDsA%`thoFaJVD&L8`h zo^_k~IV5^5UOcpJ?LKzsJGWR<>+ZI$eWl;IMFi?66)FWySiRGGiNKL|i2~!0I}SDR zYZQ{?g>|Hs2mjdNy+z<id%Z=0am=2+3K@OB8^;Q!IUfuDekuMcgN39<TB*=g1Lt=) znJi|mQPA_uR{YsNi$Q(z6)%Y#715$AY%e5YUdSh&c^vdjndhGAwB&ooJ)@7$)ne~s zvN?Kk;liTTtG<+Nh-H;$X1sk{)Y@C%S?#(D327R23{k(_S3daEv*XlHkL&a6U)#uZ z?&=e3*vs&Mr`~+6tWd$M1$-ASNd|Uq-TIGr*&!wKBQoauWD*}To%1S_UJ_8QqEUC} z$eitq8#I;X#<)dZIsPez^+>+mrU@r3*EiMd3h`r)`tqt^{T!~w=(_wV7w7G4mUv>9 zwEW_&X;V$-b=FVQEpoM&Xe`#+ZJ;Fld0Tx)$!yCxov&CAFLW)xc_wb=otr&PaW`HW z=k<JTG*kPT*STX+^3lBhg?abpIcRFh?sCWwk6V95X6>10vAP>2HXm5ByY2e3+{f<} zx<hO4wq+c5(D*R#!Ms!3wy!g|R3w#qZRt9JCDz(EGX2X$OdqqHzZO$@>}N;xlE~FY z+H$AEKi02d<}`XaqxWiVujoekP|w_-2AdV0D=l3j?<{cYsq)mD!Y;>B_6N*grBuMX z-PFsq(}mGZcjd|=h6}w{YSv|!ruNxvdKxk(NnnR+)h%xEZ0@~^)3=$=P87^oZIyoT z&Clq^vS|%^9`pSt>^`=8k5=yHo^neE$@IR*vOVeghhtgmW!$Xi-EX@2?@wk#SFOSP zM^Td(I4@y|pL-_j#KgI8sy}#r_e^K~S*V?-zGZvB{h619cJiOfl-|r+!fyI)iQ5GE zw-3wWs+qq|JyYhJuqs)5&lLX(<&HVi^>;tLeo{JBL55#NPe1Cp`r7%AV>;go7#v78 zP;M0eP$Rzl>#PsXX9eqXCYPKG;e0%G=dZsDY(g0CTyVI%pqqJn+S}Z3F)SZ1HTd(+ z3Cbw)W}oN8#ut5>eP_L0ciM%W4@@l%#RVKPHk}ajxBGmBednv&ujXuvE4gB#_3Nfq z=-)3rUGH)=HcAzqod4bOgDij3--zc+*%N2)?&lW#qJF*LcKe+pwabMStLo*SxJYde zuX}12=W=2Gp2NB3Mcm)Fa!E$7KiC_4HD7b0Z^OlnZfX~5yHi%!EtXxK5_Gt5CXdCv zTMPZvE)*`jQ&6Q^(@<=hc;TR+-)-k<&$FWM$LN{QJLr_#$9`0LI`=uLb9VYudc;qh z4Y{B6sFT&T%l5RcXZ4~#SDx>EwukXxy-!x_c@e{BY!4RBa8nQ6V&iest0RAMm-iBj zP`OsOlMiNpsht!2&aR(Jex1#>ofXf28S^!*E%37uU10y`U*__%n9xsY>&5h3=X5VD zi9LSkVDQP-rH&sa$9&D586@*5cy-OK;LA%M&sufW&wbKE+oqaUjl<`pH?Zn#2;4Q_ z)5^HMvpwFg_SVzO^A<UH=`E=L@mGKMl%7DV%dQuqSG*DGEcjD#Y`XsZxbqv&>{4Of z=EL-O=kd7>Dcb60LDS1GPd9m;<;!Y1<(zxAa6mO1-^Hxca?8INx#Vj;)GXoOyHaU3 z!_xFgHl}SsTVDkIPI|rKQJ{9mv$tQvZj`;^$<nwWoK(O4)7{_am}Z5~eY7(=aQ?P9 zgWYVoKHXj4c2z5|O5JkGl{NF$xmNty_wUZt-PNLNJy)<NuD42lTk>{(|KoEL=4j4b zc6r<F;z@P0_sp4Gt-A8$#^$*T=1u;7sNj!7MNN`&#<@U?hI3Xge}8p0irDpa!HJkz z7x|dP@4va#Yxexo->~}k6AK<c{uNb}-pDgg<yIx5o!7afUyojBR7&|S+&3>`%_f$% z9~X4jw{dL|xHIWqkXwd;Z?a9my3(6n*19DHYw|Y9ykD5r@?~@2OU2fbX%E$|9=@%V z|J35byyMq?W*6(;-udF-L~Vg%5#d6*>pY$_9?p2a)alkAZM#Jr_E)>&EbBeDPS59X zoi|TvqP6kTsq4B|8JQmyn11`?*UrZ!wU2hZF-ts>E~mI=?-Esqpy^?KI~T<r`L+I9 z+xru-GIifibB2Z66}QM$Ok{Huu*q1Lr~J`+YuU|>r7}C`&h6^C`(|40>6&Aq(LVOq zb@Wf`^z$X(_0`$2XzsSlT<6clJ~*^Wy?*(X#h0c`o}tk1TPfw+{iosM;X;M&&y4o+ z#_(*ua_{dXm!SOibq-Qbr`nvG+2<>n%eV1@cBO3R6&q`*J(@+87x(F1zVxCt_C|W} zyz0L8&z~Hvs)Ubdy$yMN?dRO+6T0WQE6Xw!`+LjT3c2f^^tyXH#q8T!<Zwq<;p3A+ zw_8u^H$R-D#eP~N*mXwv!q^GCLOhvGPyK%T)yaQ4yyt_)U&H1ayUy55>#3{6&0BY} zK06$?FMZxA-=ND?pHEIV+tO>Ea`eO>QDHlojqz?4p8anxZJAYYT-Ily!>r)Mn1Ef0 zp*f2>WLzaYuN}CmY_Yr`w&&5+A4`5J<ZjvcQ15Taqj&YUmd#7!6`j0?LAxhQ&^9*J zZ{BAsZ(;E@B`dx58*Es-f7axS^9)pPPuBAOT6pt{mpXTS`GnJNf9?MDn?v$n`6N?) zqq8^vc75SDRbEuEUWF%g^Wn8uDs6%f-wnSS=sEM$zI9=0Y^qlAs%$rXrr#A6I$xZ6 zR^-KzFJDf4%YJWk+pxYj?H8+l+zWH1RG#{sm(HztdO5g$hSKKwyPjO0^7UESabBlg z&Kuh{hs=CodB5=6=IxKS#hjC0+I(&1Nja^Sx5f8Lw>`7!u9XV3jFC0XkN+TU$J2QD zT&B9SS>&Rt7k4%%-G0qe{cuUq#k|*d=dg#KD82JkaNE*_Et~gf-Q&K$Z9#p}@7>SW z{q9{Y>@!WhnKR*je8soiIDu#3uUBM$UM&5*s_6XQGMiV&WPY>SKi!(Ynn|-zw==6! z_fDn9lN9}nmW$U+v=`>i$d%x8c%vq&`gZmOe=bwU_?;G0bGLuG%lBG(^X)Swidwl* zZ_5NX=E&Yty^%TnpkLJDEvL6{^tVfUSnpFCvs0yW^@(&h$tN1qSF0{v7hub_M6T>s z*6kEQna5sdgF1M2URav`>&&hYjqWx*tu5chIwZaI^>-%sUkZ1*9~&uhv-8Yt*EL^% zpG>Ph+9a{LB*^PrhR}S0)5m9CPM>|hB-LVTODKyl<9?p_E%$ed+3K7~sythEXp8n| zi>(p$_ix<%;FoA?A|zXOz;9n<+N#utJFZSXrtY_APlZm;Nv)d|OWQTP7k{)BdT8;< z&p=<b)cd55T-L-bmz6bMPD=E+rC|}Xcki~v@l8A*FF(0^FXr_<U#*)v_kX;lu}AVS z_r{{tL5!c`&geL<<($2x!gAfzPFDVE_lK(rcNb56cEPb;vCGimxWDerW$WkUhaP=> z_{QqB8oEqRRv)onzv$@^-)VcNf4)^6v{STH*L_Lr`cog~q()V3+41(h%dM5?UaX9$ zJI(4d+w{@NC!5=BG|&A~h<mWe?Wom$=ddYvqy3Lv7jHgn^)-IZ^tqp-B6mFI(P?Lw zbb0=c|Nq~Y{{NX*8gbqRos-UJG@a3dQH|Na&}?#Fvbd<BWyDk$TgJofOt}sBg5Ipn zY?iIQJ9$^KZvDfL{<i-=nf(1TyUEj2Fg4`z<-%JLx>I;3n<~w+u$BFH$1BrR&e5ym z<(}IW??0}rJ7%r9v~rnp{QGigh6CI6-ZUNCJgeMFB&*$~N9%gl_v@G6TkOwY&fb6d zbi*ZG<K54Fe!dRY-ySa<Exqv4WSa=p#5qT_n}wt2+&KEhCHEy?z0G~gImebHA2V-z z;TRrO^GKz4W7_tUzf#IlXLOhNoj;@KJ0~LK*~GTz%h{z^_Z3Vq$*eLj@+|o^VMoeu zMmx(bS}L>RG!F>Iz1yOHy>oZ@5y?JRR~c4g>9+e9{!A^FTJ8Sx@|zTqovCq^sZX{9 zDy-2>yKXFL@cByj)GvD?+}!Ikrm;S2Rr)!-QO9)~^W|l(CuE)`t#p~cWYy-ANro#U zyH7lR{f2#IU*G*1d6g%NPBtZa?|QYuf2~X1YUkGtQPzSCCkpLretwwPF(tdR=YpH~ zr1WJk{@mccurJ`x-c!mCOqK<lk-zR@c!+i0)6>VVX0G9wl=^qqDV3Pzyn7a!{Wh+@ z^@ID=1Jx65VNYY6Z~3-&w;U+md}jGF!|VEA_E`01_k91lCiB6f%qtnQ9VL@}ST74* z>&#=mw`jIS*B!1ewJU-RqRt+i!FZ@mZ^os`JC=S}!MMb-;Z}mzoXS7hitN+oe=#_g z9K69e%=m|zR_&Ti6_fN1JL?3vC39}sWodk;t)$+bVM*%F+(t>J^;|kfmYzEL!LKOg z+}j;S+RoGMb#_^9Dq&uFx=Dn`S4YSz&Gmb!y~xF-^=f}FUzVSLO#S}!z5k?c<(JCe zmEc)r;K-mjIXdg1!I6FYeU88U?5nd|H=4PswB+0q-P@L5?su$v(bDU^YGckfji#f) zk4|5|KXY=fWxb^8lxxh(C9j(%EGn#-_$hMjG67q0QC2JG^G9V0_Qqc@jf?BJ?fp#c zX<hue_CIH29=$D+_BnG$qpT#zvpO<{{m|o6JlBd<uC6?yeE9UrE63Op|1j{JEN$G( zeCl%&-{YcmpOZne)@ZaUw|P2l2xDK*qGm2SU+?zMDqVyAEkWPwy)rVA#7a*7u6iP6 zz;MfD(TW=@?>}l*+_SlCcLJ-(5zgpm3&j_&o#7%G6V6k=t<!sT=gRwndC{)CjOLpT zGO(uH6Sr&<6L@HN;bC)u*M8QLk~#0%`lg+BUa(mBci4*;Ys<x~y3{7gOf;Rrd-2)# zk9-x5c86I0avhMkdxY!WUB-F?wqWPab_|bO0@brrIyhOAx_*c&w5^ax>Y6l{F|T!o z>E=RK=2`O#xZFH%1yyb;EcOc7YB7JqRjm&yY9#{K`X!%Ln(sQ;D&&5q*W61|(Q)nq z>93|&cHN#i<>B=|T5ptYPg?a_Rq@HGlDk_Cf-j#4GPjtk$b4ce--_$^F8-|CUoSTO z`Pb8;C){>++^l|6{JmFiXWFhV`%AMIJoMYnSunfkbI8i~2d3IAznS_bafXrj>n~nK zB9j^J+-taW>4IF_G`8N;ybPw_5~pq4X}KUZxc|bAi&jTw@3wGVmU`azTtd^^+hXgt zG0w5Q9k()n_cXtg-?EFFR%X5U-O4^Cz3SP`JM~`KZr1UybsnwicYW;>pEbLvJXBaM z_}+WR$OW5i=fs#DI&GSoSk|@mQ+uhASHHrt1slHHKKiaNF=XX3FV*W$4c7#*-8l1o z&h^UTsMlZTc$$5Bnq;{mXXa4>W$uLSUlpXMw#8kVJ^fgFnbW&Wu~~Uj_Ptp6f4@`+ z^P$~!K5Cs6^@=8YJVkG9-eo=g%?%rsnQvJ4o6dgYzW-_64hxrE58m3<*JVUK&3(V> z^`D04`HTi%=1tphW<Jw`ozdE7mz)j!D0g$oq=2x!!G>F}H<(*Yy2!uKH)wtCmNdDA zZO8Rhb0S{9KkRAE?PR)e|E-p%c`N4~-sY)4UBu%3iBnMvQ)L#k*I%DLIdIj^^*3*K zeEO$ve&x2tY-9hBqc5XaHpp)4-gVGs#iMJAT+(u^Qxt1$0`i%r$gcj~xGD9s#DX_0 z`z1AYU!2|;B-L$Xe?G+G>G$8=rj{zQvTCY+H{Y_JN?zo$BcSBQ<GG@?9{O|k%gr~G zEB^50O-09b#)wm|H{Xz%Tj032p4;U3lOK6k^qvOw=*;jIWsFXEXSypSZT^e;)R}9y z9KVqpC9{6l5#GPf;w}BZQUb$UH+WPn<v9M@m7!JXMeu&B3;lvG9;}ZHV)-}gDC^x* zVV_szKD?F25}~|?i)YzW;aa~<{niiq-#;k3Xd3GGmrvBIYeIcSVq1jvSI?)1LfPt< zvp?Ut@7lWn-`xdj9j8vrUF4J9w0z4C%}+u-Z}0MYP7u<oZ}=#2)^ze3-pv80&P`bT zwsPg{ogF#*&lje;T#-y{+N~IP=^#%$Psio#`(IY@-?WzbxYFKLK~DSPTxq?7W+#|- zU0sm-t8o67_r+IQn7!ZM(Jc7FEE5&qC48spkZ1j*qdUFBGBp~#_w4_?-7VGNd1(L1 zc%NT88TPpTx>UH!x;k^`6W_Z|c8}fWY<u`yNHitSmPaXW_VNbjzkd`Y-4ZS39tuc_ zd(ULIWO)>|#;xdce}&6&EytuHZa=G%9cNt?Ozo@Yy^!EJx9@iSWwoGh_iJZdXOIyW zeI*wwn{!e?!T;_%yX&9B8a^-9UH5hGic5!ho9k=VKm7cB{y*kv2Cr&CwK<cK@#Klw z>Ws#dcV^4iA7uQ-*jIBb#g6^5zB^yu;@>~jTm#pyn)&Y4%k0AuSNx`XE%KPCWFIuE zZuS+Ghx2DO&0E9i<Y_<mAG5Cg;m_|seP6!)<@tKv$&-?%ZJu>+-Q{zc3uETY5#2m@ z`S#ED--E1lm(Jw>U-etMBz)Q1^;^V_Ni1-S{c2sZ*JEX$!5NR2^~!s+f7IH(SrD)G z>`|h)Q-k^X4d)eK)yfsyy1Z$9tW&dDUE+UV@<#W7E3;O_ak)-Dmbv7)itRDwTsikC zJNEO=>^fvQIikMu_6D<CT&=pE2`Lv8H%h8qZJ+zKaQ^*u4*y#AZ!A5wZ%1F_{T=+h zUb?fQGDYed4Uhl%?!zRsb;ip2o5sC|?$64YIBm=9MKktp_w=k23w3pWVAeEi-GXK1 zrTc%Jic0*VP$#&lqmO4f>%_SkXPX){c8dO9$gy=kXXzH(w22GbdriXT-{h%1KU?rp z<fM<c-``*9e}13Pu~2JUBmFNExP;%%EetwRc}r7y&gs7!*KhtIQzmuPWv<FWRWp@( z<B}!pS0?m*d+hmRwdRrtwd+PU=an=<EsjlXJUM5Hpx;*IYERpYd(#@v8Mmhx+SG@+ zMm-AnRkN-^X?51y?Xj(n7gwJ$ifZ6YOZ{uB&8@TgrEqI-@w<<&x4+L$S#u$bU+R5l z#lpy^_v`-dOB3PkwcV*YTV-2TZ2#R`uD7cF3hT4iCl?>inY8xhf+K50C8G;>tkL)s zzIf4z<rmkTK5zNn+M8>`u6McuSyxp%ZnDg{w#;<Z>_;rldI`+axhp%r@a^xPc2ECg zwnO}kM?AUWlYdv%y!);uXST-l00WEqkJ*wto;~HMTsbLvB6q&#&B~JO+0)`atEn(a z`CL0IcT)DHcm0HRC%Z}|$?qw*Di`gEJic#-;+}P@j<aude0+DJ+qPXvzAeSio}Stp zE?c{eW9gg=MTvsl1`}!&k8gidb|TIxj``7~=*cU$rLFkfB+@wHs)zO*=F~Lfx7^)g zc{Z(Cp9E}dgSgFtPo-rf2Qu7dk&yqF{?Xp{@8jnipSo|IUj6G|eHhaxz6)KfpUnh& zxaPKq#m#zoJaw1f{+vZOZ>}~w+jg^3zo~5n!@+~m(Gvo<R(O77efjCVywA$JRo1In z4lHZD^gOV#wQH8*qm}czY^R@<o3)Q`PG*XJdDn5%_6My-s%Z?eD-S5GZI^gDRe3^a z)Oln3+e^#cG9tdl{kX}TSRP%Ualr5*pVfwhcRwo|m;O{xVVOBSLTZOcu5+AH{hy|# zrBf!Ehd()barf&TXFoZ7YE+S8ljfLIf5W07KL754_j`{$RC;j9f~PLkL)%SgZHJrb zj<vf^OMi?}(pl3det+lODzT2G+%D1G?}W^{zO&wl(VNY*`C6TTQZt9b1U3ep*!s!Q zjt1ou%}c%Bo>LKE-=lP+l0_@qA&kk6sUqaVNwcmNxe}h=b{WhE7A(DfhxsAnQf<*N zL*8?n&P>c?%*!{}d_SC{tb4szdvXE0w9@$t+7*h&XD(pbx+TOYrEuNE8II0(jP<_G zUs%JWxXHiH;^(JbN16VGFiy1GXK-uv16G&%Mb|A7MK9c6nSSK=yeo$p_bWT=Z7<Aw zbH;D^tA{65?H}|p&i>8%xSTzk`RD5RH40rhLQ@Z!TP6MJe*34dPoiS`yB<4%TdKCp zO{~+lUXh<`a*A`ysVJT=xe0rOjAetbYn+w6RK49zJ8x5XJL8ObLfdaP{rngfIls<% zBI|-EiO%|4Z&qe4crp3#??Y~$vgfuuSH7;0)fTLk)x{NRT72VC+3XU>r>lI+44<8H z;xT^mq|bQAtfnn1&3kiBtEKXCJ>FLJNn!K#vz?*}{_=MwgzuCI+Otk_?#E4vp@&*+ zrd-i1e7qyhRp=Sdnbk2|T88$4+1;vJt)___{5<ua)@sq<RrQ<Jxf}hQ^7-cm`IpO8 zJ(Tl9F9cZo?T$%Koww@FTZ!|Psgt&{1<qT2-BnOovrJ%juXgHJ_PFo~J!MIKyc0Mr z<v%(uJ^oWTT_f6|?~{}JjXfKhT_-FvW!uTMqT%(a){siSawE+jyA~(wJ*i~A(siiH zyl7&`oTML{PK8bWy~#JIUU9?PzAMwRX6$sTd9uD+s4=+L@bmO76QAFhdFs_G7S$x4 zP;dEPH-2AtbLVxe+h}oAbXU^X&adaq_8E#rnA$Fjy!(SQ@a~--ExVoe@7oa;$Co|z zcioEa7H08X9W_k>f65m&9o_gRcJt{JliT02&&h?Ei@rE*{%cpKyx9xhJ8KTtoA@L* zl%xgbr<+yZ7u?w}z3I%I8;QE}CK@djKKN7A-O1|rk%=uoSBkBYk+4;8$yJV6mFCDB z={^5O;M_^NYtOU&5{OuQ>)M9br%&8oJ<+elC!N7I>*j)jR%z3|*8z?Vp}KLJLM25} zd)LVPTDRh6dsmUbm*Z(tRv8b^baQn}9jbRMSUvTqXX*w%d%N?7RZ8LODt_?(boEa< zYEr~<?fq?It{bfxW`|{>gB8ztTWLxDt#9L(JKZ$p%Ap$*pI2{ISeg)iCN1ULQde); zxdCc>PV^|tZTXcxMYlSLU;T{i%za^!a_d8xO2yBdc(OMw(WXPf?Ot5AXtBV-eJ3>1 zl+%vaU%a)y{-}mk(0R?Ya+CRSXWv=gi#qqt{lESx_2;}_yMx3G8Tw-^A8dSId#ihe zDc=pNP{VWC8LSVq*0eA<%0;#Q-r4UM@l@>0^yU{EioV202Xm@@5-jDunJv$jH|O$a z&J9<2-QwoxZBM_%(emPSgut?C-=YE-FCFeIu`NHBey(24dNW^$K4V5>&ZcW3602<M zJpM4nr$2DN^3U|#xd;xMYqh*5zPiXU71?&$vz_=_Y{T`$O6w&5-uYpC3ojNgG>>Yn zs8|!|wli<aU#BVTSDq<!%d+g1{;T+DQsR^kOAGH+sJ~f#ZcXp;1>dJQzn*vH@Qd}z zmydqS(VbBmo^2TZz5XaS--bPfPwEb{vge*T@g@7Ls*B>;Zolh38=Q8hA2`%^sW>3f zyXbB~OuEIV>^A1jttlJUs(hC^$CJqt=DqvifBS^OGNoBf+dm01-8~+>{A$rWuXfAx z8VQ<vvR{e$lx*j}{MAAA{SNur`hus}QcTNJI*&av+A`^`%yz8{CdVV{8;=z;uYUe; z!^%s~y_;sT-<8>!`cJsSCw})Moz2&cXLFbDJSL~|B3WZ&eVwsr!9w1*vEkCkjWT|n z({x@aHeFon(~aHh&ZjT&5;qUgwJqYD$M0v%<nJ-9FD0e8b$(jT`}M-xpZ<8QoM|Rn zI@7QE^t=})*H<5R-de5C_Ijb(?Q81E*L9TTPw4f>|Gs@nyY)@ANrd;k?^zdS9oJh@ zH-rD*r{({doSsQ%LmF;olP5B%GMgA0PF`E8SRcD!dv39I)dt;a{oU<PF73bnu%JyT zRke>fM?hoKiibA)^DTnTpVDfs4^v%!Kt0zt<hlHgPps?n-~PKj`PWze*HcZaj3$Tr zhi~QfyFDS4!S>*idC%&<9b;(^H#_G4wC={zDFs($Kc19eK3;Y4{pZBzdyj87l;3oC zx2<eU+RF~BxC5W^tABid>Az)u)n~hfm6I>-KDz0=%Fo}IAMKx)^ppMR{NVc9$n|?_ zsy)8#Y<=6qwz}rqts5)WT)tTGwJ0$B>sRM%nupJ=?hz8yIB59liP}?#+d{_eJ6j@7 zg_T_D7oWVgOsW3+)1n)$(%;l}B|o40jWPe~!C%#v-Nj2ZUnV?ES>1i~>f*ic)f5UI zOQ@aUP)xqLxuB)Vrp`$5%J&zxXM!VpkN&>NvPH&k;mMzIeJS#N=iOR5`jZ=GSecaA z8_ZUd{nWwe;kRztgXITpUglg{e&9}2k4bUeqn96DxNoq#_A7ZZsNUCB<hbL+#>lih zM<Je7?}wh6cX&s-NyQ`E>HUY*+2<BXHCLHWE-ufiua-R7@M3%0<6kDOXB_uVFRh%{ zXwcy&+{B}Ixm4})3iYtc8nrz_a-Xhc{x$s4`!+k-W{H?x>w{k}3)mym*@HyCFct(f z8!1`IFbFG3Eas4io%8B;!#!p<$-CDcq+j7nU*A!gvMKsrVba{jl3U@Wi(EQSEZk!| zJ@n>d18tMWU-fDtr$b(LNkwW#zY4w?bmjN!D)&fL%ggU|^nR#Vzm2?hS%=e6yvz9F zw9s%<@#nIB$5Q*gh2M<5=cT0hecw{$Y^%L*)5UXYTlpqVOqtembdq84wgW;AD?3-( zWE9&k*|pLoevigxdxkf!RpNEM%~IdhZ+1~pw2b){aHhC)N>WjMX@4^Jx|9>s*K^Ld zV7a`{_}NzWwbTBn?01Panp1vmOGV7WFx!*W7axXQ{jMW=EBxeUt-A&*{)?oESUYC2 zp6H+9`1i#$pJk07cmI-}{ltyE$U~DuqvNjW4zr-73i0^!>M5nEId$DzyRGGPcU`Hz z9F{j%@&?C(!Wj|2FNyCJYpfS8d-Q2m=6%JSRh`N!xIJdG1h&m%6No-6vrgh|j!DIo z+De5P8Bz_dvocy0qfERyIRnmCZTNKMdzY?LfX}j5O4`A<y!R)r4ZaySPlJE*8l4nz zrSJ)kHYWS7{mtYpj?%Q8ILF&B%Xr1LmX3{1#o~Xjgsz#i<NDPql}h*B3-V>_ug*Oy zb0&1!%j5facDMd6ikG-9anw`B+PSe)L~aNBkKorj0r#gAO<dWwICXR4q-Cu2(Jn`` zvdwv2VyCg?<xIGJbHzdaJ88P#cgh;oT{?B3ey^Uf<4kwn`a}LJ&o1XL-fOvC?SJel z{&kKIyk@b+l_(vQp86nY(uuQyZpV*Rh)u3v@a5XRg#v;LtR-)KV-<J$CNlfvyCZA+ z9LgX4T6U7(x7}aka`N8V!Zp$|^FPMU&U8Lrbgnno$>Y^dUa=y!*Od;dlD$$+ZQo|O zUiZ$2rROB_9!Abpdh{%0L#<l=rrYH&mzF#~S}K*CaLePq?;?e~B!zoP3bs@11D$Rf z87ZB5C6H=)<od;}mTxX-9Jnl`Rbcma`j6ua9q;XPWSKW@&FzfC=e#eo%FXq>_-WZ{ zv)EYu6wY~Ww*(cAH@;Rqp*#Qn)Q4y1tZ~z|lW1W$%<%hEMVY?y`t8q_PF_2^G&l8i z+>fu*|1;jye5U{^1sRQ|C%#}*tG6^j-p-yn;WXDF0|D3Xbw~d=Jhu6yHARO-^bY6E z&hDt_aJ@hOdnYf`ZE7(%`DBi?&<_U2R|*_FVNHr(4EAg-zV`FhE5*bAL>ew^xgqp~ zQ|fqI3`@FicJzt!(d{oJF77TlFMiast}@9?X;G%=Q@KDlm#P(NtGr$BPF}bCipKVq zoik<$G`+JCRdanOmhQDN;OOS6H1@B*ABiaiygj$_@idLi$5qcK&VA(l?bX#KQ@1C2 zE-ZTfXHD|I-?O*ImB+_tx$Oaa%Xs?7BaEsnhNi{_lbdQRmFCLE#x_;R$u&g%i@uZe z^1LpmSpP{2>FNCQU!0Zx^}qc4&&dyKgr)q`5A1&W^xL-_-9O2?_tuumui?FSE8>Oq zh2@j^YGvx5*9MgCtbX!*opL<ar{zok&-PfUx?}T{bXmvT%b$Jc)#hEh{Ai8lwvyNP zEZE~W@Ll|vwa39q{#6)fK&6HG`FA>(@0-+HdYiT>Rj*pM+KbiSf2RB#z3zt*5l6O( z`s_-4yscGw?UEDg)F!Td7ngeVx#C{)edW7e@95OoVzm16)zkI2Wq#b+z17Vxn5i<j z{MoKUM;B&Um>irQ*1NHgCGfNFxg@^lZ6>EzPg;<oZ(10&&|&IAf4_;7za;hr&viNd zX2F_lk2f)0o9{S3xmsJWcAv-B1*@N&ZP3lWU>4ZBVanz!tkF+bU0kWQC`@+Bn$>R8 z9_#ey_cNv3-k7ySR9p0FN?pC{JI*?Fd5isT#Ew6A&O5MT=Z5S`yU)Iht~zF!`1Ks> zj1@WCK2unA!H&HzXQ!w?dD?hvW4hi-iH;5K8+Qpi#-7v;@O9tl9wc>Xk=C_MhFnk1 zCWo9``L4%YwqO#^$31q-Lf7j?f77TEtLl|<-4Y=Ab1Lu0#a<p-qBU}F%>w=I)tkgW zxa8sSwwx)@C!}(Z*QzVeZ<uQGRy^m^-Fs|#Qeb7#w{?{v`x(D|Dk=AH+~u`GZre%A zBfnxCU2JS#-kx)2#q{!)jx*KGB~s$P2VJJ^QM~lqss7{C#rs+__LkoMbH&_x*3Q>m zZ?5I{oV5Hddj6W<#_MiH;YpFz3R~aJI^4opzk79Q?cy7eA5WFa#@oM$H8#ol=@nzT ze)+r`J6o;@EjhIP;KCRaO&-leq4p2Fo?-4A<X7ivuj*a6PV2(cX!||2-><WscWvg+ z4Jgc;7s9ajq^dxfYC?~$$8Et|X-h8r5PSETMNInFs@379l_tVdGY%ZhTk&nBU*k#s zD(N#f7lzeyx4g($Qgpkm=(ev+dtut-i>0qGZk-b!%`QA+VfN(-0o?raXO(75n%ebb zgAD6TUyr+7%sZ|*RX=fAwRd*L;^}-Wj}sDVSF`Z)cJ{wsV-+!L<H{RrQ<fD7sii*H zCUoS(1)bH;50(6gi~hWRHSZkvlXjLKZGN|QDQ2F_uB%<zQd8gYuX&GK`l%Ii<_iNV z*nIp<uDnX0+g)H@^LBaU)YoqX*loWCYyAForup)j#bT*uhdMb@r<;hp{E{5|OzTF< z;>tPl1&&kg_1ex=&o10NPyFP~w)1hjvwmC+J-qsA*B_-oem<f52Oc|%O`bWSJmk&& zTT*Kbt>0v<o??EO-)7FHka|Dq^512__b$wh&N%<=*a_8*;oP$ui*H=d>TIhM|F}MM zx#`=tDIYS*CTTV<Z@kjR?_$A!?y1`4o#AR-l5Rh=dVaASdO0cIc%{sp4L85ukGr+^ z-+S}74~uv2UC+1Ta6*mNX-+PQ*<T-ZS8B}E`}cb7ym^A#qn+>Hs?%Q3$zI!Xl`(&^ za$`Y#UE_y<K7EPHl2h+KUX*a&ctf>z_QW+0IWi{YpMCc7=}(2&l4-HW<kkdDl?b)T z)cv((jd^$B`OQBK1Y}jGX8f+rw|_QAp<*&q-p{92vu5u1JKQvv{h+VUQH#^dCltK- zt5tDA+tdAL=F+-fFQ-3u&OK-`fA*RAzASH@G(5u;(wXWjilX^>B^O)!R{i?%^JmMq zmzNi2CNxDHn^*4d{&eB&iSt((JFbYmQYM(%%sOj(K0mWla$$Gp)=4>&F0a{B|9wr= zqf-L*+a!OyeExi9=(TG(W+F@v8;@O^@jTg5*!vGxk?WG5c9T{m@QS2*-IFVC`Fx%K zKQl+visM|64RDhql6e?SCQry#XEHUPe7s4ve(j3{1w(-+k9Opj@h!fn;V{AShWPX6 z%e&S*QnM@FZd`Ee*aF3u6W4@S*M`n{d)zly=-*1+7iVWFO!;#AcmIbc(m#Hu|NZl; z^7rHTL(7(U7_EH!bDQj3u~SFSMo!GRHE;d>`AbToypqrTulT2(6Ta;J`aR-WZVSS; zy(-`EwRy@bruySOQ|u1qv)<2tzSvNztRklKc`^rM-A#u24evtj7U#+Be;ik=wfy0d zV{`x2-aIPumHl3-?0)8b`}ObVo_O=`=TFg1S=u6YCz)8Lh;m5&V2OJ$`KjDFDb+ci zu5S+CpLa@3dAmZ;gi3b-zuRwDwDd>zw?ALLc+<lV50@`rJh8pMq&{uIs<|91;_aFb zDa!BC(l;y*b)8k=`{zjG4>g19>z2P4@>sQcqmk*P%W)6(bpLP**uZ3(Rb2Kdr0jw5 z`B@SXWnM2bX8*mff3>uS?cSU1${sUns@9l(-*l~H&Xr{$mv22hZNGNPYMVW`_~&)4 z+H`%9O9)%n+<Ns-n^(<ww9-{~P5q?LUDI9iE&dcl7$&xEJInCm=dWW@pP9D@9k9Ci zE6Z2wmRN;E!OW|VxGhtf?BB1{-t_+8hc7OTMe+)6Zi&26$}J~$9w_9vygXhy=C#6_ zO9eNampr-LUcdH8L%7S;7$MW5OvR2_?rRsj2AIVBZk@(>DzY#BqD|&?n~%Y>)VY}J z@94hyyzbWXj5UJyG!1&hul+nF=29Dyd_~^4e2Hh&HSs>anx>U2Zl9R_N$_sErbyMy z&IJmb`nxms%$aLt+jS!J)5Zxqla-s=zu!xDd1E}k?&R5N>zTvfMYx5koY`?^$-a$6 zS=aP-slNJkExY@Z$=r-np(Sy~`Qcg(N1}Ixoi(agZGYZ9cWd7Q;SI(fZ=zVYe_^vq zpZeZngH{UP4{7cBvSO*m;&xZPPpfmke>#0`g<IU&rL8)zcnvszd9N^2zO_T$VEyz% z+k0z8<rW1jeqAi`ul;rBt5==kx29AjZ8|T1#VV}%V)WgTQ;D0k^Ws}(Gl`uP54$^e z)_ec=ZE=x$*Xqw&sdB3)rp(a!GwIq~{SBv|$x3{;+QrJI;eWIK<@G1~pK5l8)-C*Q zvt)<5ihO?5JkCcK4+S(@uD<SkAnjnl=4lMvo1ztDF0viJY?&bWB=z~_y#Z$1{;t@U zw00RsP{G-Nn<_<{j?R!0ZPqB)RNuU2M&wkbQp=;i*&3!_|6X(YMEw=@iC(McPWzpu z9&hl5JJmStNGVg={;EbD{r;G@9vjxw20A)OcV+B6#=TMh;+%}t46eJ+PO{V#md_5* zX}y-U!sXN1sV7t(I=#tuUb#!LQzZ8z|8dvt`r^kXtT(r~|NE0);i9sH`#iPk0r8)* zj5S^><lC7z3mLVs<zHKM)YrFObHZD8HHpo<oOM@LosZ2}`~JmdGxiNu&sSw;r60K} zv^tsZ-ZjO$Uw!^0{dvqHXtgZj;!)Nv)nE}hsp*#v7)X3GpO&%KZH4oxGY!Q$iL#H@ zh~_K_^18vmp1wu4h3~6vkbd@@roPaf|CKM)DSQw2KG>Lia_v(`vx|RO-t?qx`BVSY ztH5E;gpfV+7QC<fe_eHVhTPK&O&{K@tQ34C`tRJ_pSA~O-tAnlV7t=2m7Q9_&M{9; z_J4hPPX6cI7hCs<E<F?X;Ed=`Q5K$E&Xs=;1zaf;y0*$aw2RTDaaUne&Ji6)v*;v- z-+NQiN;VxR?qB>l?B9;r5=)N9zGAa`AyjkAimm?A-CZSZlUC#{dTNyYC00-6#(|8L z-3;M2drqaat`XSi5|H^+ZrQ7*F1hILxhLmV8SjpCEUnGjm~r&ZuUD6D_p;`N+&CC^ zz>xXay{VU<Eb@wd_ft8>sbWoj<{iI|H8sadb#KYoT`OA~<b3nz%FQBkd0yF+E{^S7 z_{vZ@B>OGTm-^59vO>EKyDb#&pZ8_PdVw=OF)PoM^i7Rk{d&b!uarqyy00}D&Iil- z`e@(2^G0;xdePVG46-lqT8Oh4n*Nlv*~8QN{nCc8&qklT7PlYRBcJ%}YxZfS)Si{r zzx9O|7+zkn?IQmyX8HLmT(hU_jSl?rRBhqr_i~eM&8|&9H&y#EZ+-69iY3ea-`TCM zo6=WgGULG1SD*Wg_4bBLG(S<im1p}^wUe73-FYc^O=-?ezZcgmO}}uieyCU8@<nV) zRGI(1SK4z|ZTgeF{qo7xiiXF_Kd;zhXBPW-@tXbFyzi$99(#51)SVk&3KyyfU)5&Y zllAkr`Io2ayK(|nO1r2moTGPkcV7KrE8F`)JljPruI$^tj)6m}#k|My<F@4V6sLm2 zx*NA%Z#W=jalZI)#W{Aj<gdo}8Wou@RbF2FS$uuWobw7LLJL)O`{b_Kn-^Vu`PE{g z)auH9tsAu-io5dpUPqTL_pNzebl+8X?#(?6!sYK>bN1Q1&Ud{QAkqHh4)dEkc@YI^ z_1`V;=B=20c>mHnaUT1+BK^<HDwJN=xcT(QdCsGEANJkbWj*PZBSY6_r6mv3lx!SL zIjmP*Wed3feD%$p(K)kt_isu|*K(huyu%=)>h5EwpfCBK-k*Ok@5CF6UGvXAT=vcG zP09EFt1U0hU2L7v_jtiSeK{+uqSbZX^Zp&ZclMF`xB8O3?_UNUsd;;;r1o}UY5L#y zcdzDWhreeFn1AeQ=x+Jc3m+e=EqGdb`#i6~Ly>E4n`>E&yc&vbEw0bMpL<_y!6MN; zHmwgfJFXQu_4p=-AeVaDfv`S_f=y5Mo^|KRaCkUTrFBiQnzwB??==0JpSDZxfBsHy z#ya<hjwk*KEMc7KRG*#yM#Nt?>$%*jJ*)5evdXzD%I?cle8tjIYM!s5%{ptUrQmL* zq!M-J(xk1*e9NkXK2|JwxBXMn%gl>yYmIq#8M4n^>NRo8i$B`cvg)>sweH$1k%k$f zd@m24jFDQ`5ij>XV(azC5qIN1ANuFoFT8X8`PFwGM`%B9bcw4s^^dCG*QoyP&zaOY znp5}gmPy}PuDj~#sYRjeFE&;tP4@fyq9Oj&-H4x8`<b%%@7>yQFH1Y#^xFF$S^EM$ zbn1!7nD<xO2OkJq63F$pH}+p^^Ra#2%YHBXyRE=O%8pC)z}GcF6RLH7&x_s`bok^0 z7oTVEmfV^<Yfq!LYU5gwcQ>^bJ~pYZ-*;x2k<f;@`;@QpN95FhJ?|?~{a>qm;<KHG zn-`ulm{l*f>do}CRokRrJbm}(mRoE8i~UC5yzDxoB5Zd)>kh8XUS?T1Ctae{FJ@V* z`K;tZo}WrlKmDh4Zs&c!cWYjGsLGD}dR$jZzW3k#KBw+<R-oMem0H$c{kyn~)#tTO zS}S?vg56H8Xy^ZqC4$?mlZF5N`NsdBwe+FyDsWfW1lkogw=kHzvPY?YnZreA?l-!# z4_D=ib6#NKEqZZYf8}+L<X+o6vv#rWqZKAoTxwP9gD!ozuE5q;pR}PUAYtZ%w2EKC z(RIiE+n@S;_3wwj*^JE(&J^pn{l09Fb+V<bIqZzK{T=yxcM9{q&B<>6KWX0Xi&5Qc z6D-1+qWv@){hQ+%81`q#ML!i>THoaIZ&A)4uKtbdYwqmb`=52|hOI&gft>FGj$7ED zUESySY5DK4>f6C_T52m)wfei5wU~{x8JDp5t&90{JxM*&aoVzl|Cvv{@r+7ZU2({; z;<9||nyz>e$Hk8<uH<!zoMkZEuV~@7Y@dnLSK}YicB%|6n}rftjCV{5%zD<laA{6` zT;Ad(C0m!Id9Cia@+|T5hP!>2Zk_Fx-?le#X=27ImAz?ua*tbed9ofgd!^a<tZeT? z7SG!@_sn|Cvt}LPUu@vh%soG6v9+D7Y3XutAFiLOpOv+il}a}|^;*@JZ*(-gAilw@ zJ7T?LK4<pN)QH8(p0{=0?QUoJ-gN8OjmCx5>XW_udKuqMzS(D6e_e&CX2Y3ixw8jL z7RaRK@|?PFaBj-onp=Gb%#R=5z5Mw3<L~~=I5*WLU&A)su>EWS+vT$BPcJwMt<S$# zGM%+2z47<DyuO=4JM))!SbukW(3dDA+4_Vh;Jl_$(OSlR-~L^TIPw2RwE2>6b>4NC z*rhuIEgm_f#jMCQv(IxsZ7yGLUt?ic`|rof-C{>2KRvsW8fp~7xp@!Q<{3v%%B1UG z^|feDJoh!BES~w<n_26(E&epST%PZ^-LV-$JW>D6;?0)J+^TH|RAk&9VxT18S+3JJ zlUFaC|7yb0B|@8D#wa$w{uVRim{ItN&ri9Uv!57W+`QxB(MQVDKKSfjcE+dFU{3wA zDA8Xvd`x=}tyi(E?tSviRPMULls;c0j*|D!UH>LM@>=y;t-k7xf{&a7t4-D9XA2$f zXHLAtdsg%NN85@y{>E9i^qz<)D}L|ERsFm5=k(2)&YNen9#Bl#chV`o=Z)lAO<lE& z<sxRc8(7*kxa^+=sZWl+^-t!~``Q||nYC_u^+HKUG#+mjNbeGTzt1x5wnJvpx72!# z<;xyvt~gg5D!y7Wdso(?(3a1+bK-iOPMR(=zu)at+E~u`S|O!pTDdj%LC-leDgs^3 z6u+1xyXksbb;b$B*y@V6cVFkK*=)Y_Prdh=a`@hPF-t{e_~z=*J+vt@dedH^JHN8F zURuQbLwH$z*3&grb$o~B1Q|?J+CN)E@!I1~3vDfjpugoQD`$NCWfhyW?zq72M!o!% z{~JOZ?D&1J-9Ih2?BMHVA0EG|_n0X*LwN6vpyS?CIDI7kn`(Tv%vH<G{Wnc`zP4NN z^`2*9y=n9NjpAdBRv*z=BJg#`<;%O0!>#Ua-KXVc>c@XJ>`#3j*J94zZz+@gSo5{r z&YP=${uH+8(O;=A+5uUmKXkl5`hIztx6EJpP~<VwUo5gUZ>J>{-`&P%VZ80$HC@@s z8f%J+Za#mM`RaGYkJpbE?<rkw$m6qYZGQL<1&xzSqCYw6YReySim7P6F(W{4{^j37 zq7&*Rbff!ybqnVg?)=3yy`HK4Zbox|t2WoBt(}bAi6w>MC$CTETpBMowNLHwou8K$ zS<Ul^Uv&Lq^u9YM*yjZNOq{}Nnqq#?_3xt<i(~}cOf<cjWO*2F?T*npdNwrXn$rJw zZckpnI=3uNFV@vk|I)#VAG6FdPF<aS#6oH7x#<NbI|6r^CFMk>A6e6UG<WH``n-uR zWQ^9Wc=4bpJGbXYSg=pt$uqvQ-W+=)+G0FkF~%>iwzz+*|MIQBTPh7>mCWy-li4~u zidpHX?BdIsd6QkY&gh?Tk)7Xsf&I%l7yJKSUnKwApTnW`fDZGc@J;Psi!C)CKRIxQ zMSjb3(-$*CHa%xM8=D%t^7*$O-J)IYYoaFC-zkxvsTY^3@c;3W);r;00eNL?l0j}i z9$lWuc2oUI_EF!%EhZs63+@QbIej)yN4Ur{rBvl8<7C}Ow<qaN2{|b?IcDm&%61nY zCXR1Y7j81<wmyGl<I@Sfp1SMGrhcg1I-B)n&N3V0lo$RNbGT|W4s80v5+ho*hgFp& z=;FSrXiwSM3O?rEU#{<#kV+I;b?!oMTDi~9pTEujGaS~FI1Q>hm`u#Ub7U44CX=5} zR%X+^5X|*MV6wmzllq^M_Vw5P+uP*q`+qWjib$Z_)=G=KZDHK0hmSRN2$=J?-_KiG zVy#)b=l|b_;ws_GmWQ9?6lE$pz2w*4DbJdxaBYuhj%K#g{!_Q-zSLrFW9fI>?^V|@ z^~=YUcYRy2*!#Zl+MQ>27cTdkk~e?ljK%*Bge3gr`Lpl*{ezcF>uVwu>sPZayfj;9 zwcEAbHA@`Z*yb~?UvufB;Qr@d*KT~7!TlpFO{@0FRkykKtmm#!419dF=ehc#iIx4` zKV9C>Fn+cBf}y>I$kz*9zS_^~Ry*&?uwAszD}5*P+eNcqIxBU$ObVBh-<3Jh^gctE zT0|1Z%iyOCf85?a-+s*eZXWm7y2zd*^<6G2*Gyu%6e?^zMd_wb-nLU5+1AYhN7t>G zy#C1fT^!SG+gAKM`8vtt>^*mD{-cYP=J#Ls(VsMLQrefk?IAOzKD(!$`d6Xxsy}$U zqUI~#Uj2|woBH>jo~Rci;J47OsiV#Iip9MdQys$io~}^-9oiWtTh+havEhql#QJ-2 zvC}*1%WQc$c$ZDsvs13HQ^_Sk?fRJ%p{TfwGd8U*S)m<jCSIJYbI!_WZu9)u?HF!! zYG#4Aq^hmD`SRxmA+14y6|(1EJB7#QY~5F7dZptKPg0EH6km1Wv=>*}M5~R1PF!2y z)${%6y<Hk?_spwjzqx1m>Pc<skuB4j7(_44so@r~s6RT*LGh@-T&;O?Gd*^`GBNoj zGxZS561~+wGk0x&+B0YUjPOM@Ufa&pc%O6jx)+~$;`7XNf!7w9TXy+!rk~TEqqylp zT)KR-=c4z<{%fmsKPPoG*`M4Y;3cy;VA&EcuZ}IVB0gm4r+J^u68kxG)^}!cffYis z&(gQt{W~|}*O!%g^^0#>PDnc*Q>!Vw;Ah>QM<&l>p2c`aOno=!CGQSN)wyv#^J7=4 zt=Y*Mc4J#w?A`S1!prXq*E2A7grzZV)4z7R*O*o9>}8vW(~F*+HTdzn#p0Zz0#nyq z%_~k(p;E<S&)@HNvpmA-v&3|{)5_T~8yv4INXH&rAXC`7Lgz$x;k?E5>sO~<6`x}I zbMMDwZLc*;Hr(scw|CoCka$yQmfp&Ok|om)X>7ii_g*aa${Cm0pEDNiJ!)b)#oo1h z?*@701My8Jol~2?Zu<XGG9|u+as4ra0}+gd=QfF4U%SuEp(XNPdq#Nb?Vya#U7z*p zE>DlMS{$(;I=_5{wcjdVW{sJXUmmPyertSuUGIv9HvgxOW@ql4`>^ViXged9_l<Ma zOU`n=)Qf0r4{e_)=EHBi`B@{sQA^hbv#oh69xaKQ!MS=t$F}h4)>pPYS8==W%hC4i zQ@3|5`%<J&`OP(#(AaDGSYg#7mW?}BC-G-!>-e}C>Ij&+Z?XGm`C``jy9<~n-Qf%V zu3Vozdn)78jaT1&o^wWIg(~j?Q$y_=2F9-^t)H1T$@%_;U8*@LnMDWt3Ql}b`SL-9 zU32obee(@`%wr$in`PyHQf}JW6wxW$I&Q}<Tc<ZSG2y~?Rv)XqENU;G*yY?ltJZMo z*UtNwW?yY6GV;&ZP{Fg__x76pxtENZxbGY<<t=ah{JXyJjK!g>+`0nM4cVXNvU&b- zha3K1?e8q`q-7;*YEQwOf_ESN{FXlpTjs~7&0W@}+PXStwOQYa$^@fr6@7|FwO;s@ z+uYy!)!n}9+U+@Qm$D_}uG}&_dEx4bQ%U8yU)RW7I*@;&!KSj~%#siL4&L5fSov<@ z$;lU9drrMx_(=J4Wc`w$#feYCyj$(oSQ*-i2wJQ7do7oGwj+DyBlX@H%X?FEr6x{W zbUn@8GV|+a<<qlf$MM-@`F(YL@}}TwqC}>xczd^Bcf-}0OOKrX8+NxWat+V9S(hg? zS@EBhTi<=UH}vNAiKgM_+e*%^p1to?K%wiZL#!pz*0Z0g)(S|xE<C_fe@9uQuO}}5 zUE5@n18ZKX8UHBEnEqZ?=*cE0&!neMe3+cxSw4zmy0bk<Huu+phjXk&CGY=oVgA0@ zz$nfoHSBwI?iVxP<62Cbg8ahQTJk2`Qh%Vzyx=qY=dTh83g0A^T^_3ZVORFKx#0QZ z=C*rW+`?%-hdMuSYW>%_oLqm6Ev-JU*>KK;bLZ6F)g?aIm!qmJvS$9S4HE?xL<nZ8 zT<a;C?sz%kW7Vx$^$Yje{k!YrmR4H+PrUQAMpY(D%P+P@zB{jD<Mn;kZ8-gt>(hA; z-jg$DOqDBqrDiOjJ*j|gb8hIb+A}jcedGFb7p>_3DX+HTy0RbRW3@Q5yemm}DwG{o z)pt(Jo2Oau>+8~;w}g3A9)5Bx`RwEPrK48hgSGv}^SkrE6>h%yJN3=y&S#%9j%X~J z%ka#~@_*WqRbBdbIu3GJH<#%jb2Cv|*Kqq=_NIs33uoMYUp-%r@t4A%EwWWV&)RIh zA3y)Hjj_p#ts6GW?2zB|`A~Fera^_Lbmry%Q%Woi#COOSe~OB|=C<s{irE&Q{>ShC zE#4U(p9ZQm8BIYOeAMd=%#r6*&qjIYt85qC_dMK(K|U>k$9dC_E2pej3YeZuVX$K9 zNOE4hagI0NMp=b>@$Zu+9(6abUM|YLZKFWg-B=y5*FQr8+yBd4aeQQ7`r%i?0dCd1 z51-!u@$CGM&$)m9_xHEk|M5KN2-+jme*F63n^_BUEF$Wa7j?EDe{KJ6X^FUI?g9C^ z|LQHO-+$D#(Cj^AzTTtpzx5v`h95^y{RyjY4skgc-*Z0xq2>Ck=lTEF{NeU`Sgm+q zv4GKnp1c2MY3#3&S^C}h;Z{Mdy$g>%V-;8bsFb%_{+ynQ;|osL5dD|mzg$y^vRSb6 zlknv&p}&H{GU{f(5UMZ#@Mp>V&(g(bOFF%yoX;2jnOEnKzVD^<NzKi(E=lqJ-0k@E zb#~C6sFSWm?K;)>*4y{4-lT4KuVneVC*D)y>@wnCeDOByminU2pU!&d){>i#@2;G% zW8M+&w~Es5empcuPI7TLeo7=h_tS;ll{J5jpJ?cn{rQ{usFiE4$IDkOIo!^Ft*-V? zJH-C%`_0Lsb5}DaO+GkRh4VzDWul_M%lrP5-_4cck6(U>H8C`X%iQSo66=5Ylf~!B zvAJ$Lb@}7x$=35^>d%{(c;y^gzvRlXY!-P(F6QKx7T$}q&c835#lJl??yY6`bkTdi zzK31cEpIp|yKT!egTqN%-)}85e|j_gOWC=#E(JaI?q4^A{M~WBz~(PoX8p<|8+uEg z?MrFhSi1OL#NxGEt|&e7TGeh?a41yLq`5@4Bk=>L(bUSnUaJ3nj!v6Uf5KEe_e96+ z4Gaq(AMwc4`!TigI`7;xo`ceTB|Q&52lub&QkWh$;p62v$>Q@9z9&tY`ZTP0iB4jh z0&lSCPoZCm5{shiFL|De*DrB8^;AMlFzv<)hv1lX);o?$9A9t17i`wbSorAvnWcpd zUUwT(8}p4GtA_>dh+o~dF!R}gR|o6oc1S%;$y@8e_9!&;UdV(>6NNdcDfXAwGk54% z_a1BKb51KYx0wA>J7@~eref|en<m@!EAuW2o@fo-^o(oHv>xy4?@T=8ruVA5?AG=D z^~OqMuJ|?Ar@Wp%C2Q8q<k+`r_R)wEd6qeoXBs?se>}PH`GGwr1v8KD%Wk-pJK?Zv zUwvHmsf8!*M`X;Lzc%vKp(wU8vB~iz=PsN%keOI}^y0stv!CussLo@EP*7g-;F6P6 z@SF75^&Ve%xEu-?C)Y>Z*u`Hp`S0=-ldmQ&+54PL$985XS8v|pR=4~8nxAfqES>4R z=-axZ7C+n5Z?nc7IJv`M>D#UYZ+NF0t`A)BxGMc*RsE{Pd-PhfALX$|1fJAr%`s%H z{FjjXxqp_|iN{}*HkW-&Tg|DqQ{>gYiSxrYGMRq7nE#~V`Z;Y&cFVj)r`7JL1wUhw z*z|6m+*aPmwyM5{6T8+uwb?f<iia!E^~)v)=G8i3W!fiW`!_Vk*)E7T-&9*LdBWX( z^)Fv}KL7dnc*<V4`YDUwuA2U7wu48O>D(R-E8g;g%ncq#Us=6>u;{|IH|&M$mv6o* zeSp0__k@JN4<Bit65~8a@nrsz)ta{z6z;vdaNFQSVb5txdy_p?@fMZ4PChvt^Tw+3 zw&u2b`77nk53DrbpSsdM&m&j&jKbGNro~Lv$NW3${EnVXIB&zVFpsBRdFnMLgTN=I zSub40Z?Z`%mCf3%&a=1juy9NNyWGGvyHCnJZsP4_o)-J^`}eZj?t$C)DC{Xeaq#Sf z+Yk2`m|dMK8&+$2M=GvT&}R0lynDxHPWkF3{(NW6s`et^hNssIO-?s#PY|m*eVwg$ zUEDeo<;UXpFYa2$tr1g}^f+?0t3dsso9jZ%4KAO4x2nZFAjtpJ+W<R;-}#4*-Mhl9 z|8dpD%WVZ$HxzymI=htl#c4eS|8>6hU**0Am9E|GC;cU9#`(XuSJ^YY*pN{<>&B{+ z8(F`+TryoQ=i{4QzK_^jLi}PLsGhxH&6?PkDbS!A_oZ$tFXMTO-TUt`KUd#jxnDNw z^P76dx#rWSz6svY`@`e*xvy3wr51&mw%qsC0;)yrbmu1vyz+|Ao!&4@pT+luf52M* z*VopD+?*%Ah-v$C4wEGl?ri_^;bzQrhnef=|LQ*Mvpk%+=bza!=i}zfM5H+)EnEHx zytt&4x>H_4;WVFua!PZ@b78)kgIhT--g?~L|JkWWwO%iDj#vNA8%J(Df7H0&NQv!h z8*h;3HrfAkW^c4VyZu8}*~GcO`~@4VFO`-4ak!qdqViJd#hR<tr=2(7F6BRLt8)Kp z;bC8K|LK4F=AU$ZT(U>}zRf*jFa7keLW#RaufEXB>wou2{l)vImC_MyHFGUqTsMn} zn7{VR^yiCKD3-q8Q-9n>`tiT>g^@e!Y^>LNM_!AW)+--;t>zlPQ`n6EcX=3YT-$p0 zy3<xU?blU@KmDE49hAl|zEA#l;xX0sm(n}_lrvXp-F38{w@ISj{@SX2K@!5dc)U3` z&9?nmEfqiGr$<?E0;@ty!j4}y;q%Mi>9X%XqnLX)O@8`x$>|z%OuXObJk1n8#;{_? z3gKue*8P7TH-F?$u;4Fv8+Vl>|NEk?dqQPzR&BPeon`)F;cnZ>#Y>m`Uh#JSKZ(iK z&q~E#A4oiOuJ`Q4J3;$4U)f%~e&a{qn180c;+?+fF|FQ)_tkrU$En?(arWQaa(l+* zQwl;sRX39<Xg7}<lbOZj(j`juj76tdYCV#w8BT91@@kN<?0J5D`3{kj?jJq<{cb1o zNb&A%)e+17nf37Y-*k3s&-x9;J1(E%oKW`tU;LLR{$Ku||Mh$K^Sk-~Uz91hPGBrM z|NQR31q_eN-MSYXe)sdsuRyQrp8x*&^Z)xCcKrJIU=-s$;jK0z_dQqId2pH>)tFWP z?4{g`Uw=vhxVQ};&*wX5x$AP@zn6PkP1w(w#U0=H%JBTMnG)`|zE_F_AK|z0l8$R$ zcmH|zTcO?c756rTUtxMQc?)B$lGB9xty3<wE@!@Vg29FDMW@>@-kF-|^J`KR^E{M~ zsDF6!*i7_TrP;pAmGc%=R_N?cmz%gv?8Un|*SFT+*k5?!^-;l(EA{8R2tGgkVu^UX zVW)+np459~=2tOdeV6yt=q&b|xOC4{pL?I&HtMjYAMV<|_d`bqL+YkS-=DYJq$%E4 z*s`ikP}1mtO>$!U(z)NRKWVg$PJOb`Kx~tX!ENPSHIC%7?-;x!4tFPp_|BQqxj^aC zx(@f>HVQ9&Ue`OO-}IQ=QW;}>JoxH)9~Fh(0KP7dx>=n^xKd`?s->QJ5s|o7H^lDj z3W<kb#FW;|o&Wq6W4`{C$=mlYo2SF3KEFp&Mk#LbDW`7Z+>Kj({M8GeoBO_zzIx^m zf9s|*i*uf;7p;)FzjjCFG=^WTyxO`Y2iNVL;~h0yEi1|P=A2C$^&VyH7o0T1<FwkE zH1s{cr9GNk^k+$AvdLnN<!{oDs!vX~*16;`@BU1gU>h?FPod2peW#>Pt&Q-~{<-O5 zwq5>)pMS2bX%>9ZE%GftV{!56eVNzYT3*TSmgH40`4GJ#A=&LbN9Dtu9WC=z_J_Xk z6iRySx$VwF4g2zMerMArTnejaVU=8x6>-);&T^Kr4i~4+xBX{hZ?w;Lc;Lc1dH?zo zr*>F({7H6W35Y1}REwIWEp+|Ty(!9<Z**A-#;!Tac*VH)-t<qmDxQ3}xn=Ic`R*~F zSDHDc+o#;0n|0as>SlreM%P;!3)<D{W(aTGaa7GGGV}j+$*IjnQ4yQ2EIk^wcU671 zV~n=_GTU^w&u#B=pDfFebqtCwRh@sSRkU<Xi?e*hucsxPrZ2CTr#;=={hYV&X864G zH^X<|o>6OfGwq|NWs%6IYa2LjAGwomt@*Ke?HA|5iL?0U&$_Z%(<FVt^SRZlel215 zFPk?-BEicfr112C$BWNshcEY9dO78af3)tq{q?8f6Wbq@PSjgf_G#VDq;@W@X(!_5 zA4x3@{JZf%>vPL0TkmBmH>LW*_Qw}iJ^#hCSi<v45bL~CQOVthE4^0sRZ73<c_Vtd zQq#35cVV}?-WSf-4~<zj8YO+1b>_9{3f-7kH8ahMpr(EcrHi65^HQt4IC+<)@m@L; z$|$G5u-LPH<@wc}6XrfQyw|GRlB2Bh+;b{>y}G->d67r1?kiMI>p0n5do#`JS%_A< zYy(Hzn(f+C`8OV8e7^gb!<pB<C*SKHWV^|-*vHE>wE4)afVsD7k4;<7dH%`rDNKz) zZ=^Sc?6tBn`{TK9{=5ynizl*1TJR>joPI1(Eb;sJjf>BYZ`Z6Z{L;^Bv{hGf>o@W4 zb6HdNWK4fOb>nSqW@82g>y%|{CK}iLys@C_r(JTG{F0RCjmtMxJn-GRX{ArJ`*|*% zNzC7vdbEG(Z}FAx?u^Z2e;8Zl#Qn27)!hAzRaNk=iw}IR9=P>tnUBuCl@l~;<2{$} zcDYlWuV|aam1(f7-}KSK>Ux;~)8#WG{<_3n5qxvb_Cy$?n8#I5QP+*1R?cdgx5R&E z*7F^b=|4B#TzYj&VUl&mdAG3LY{?NBp?`P2*E4Be(RW?OX|2fL?Wdbrn`gh(jeNCc zB8S0i6}bkceQQ2+$a}pCC{phgu0ALCJ+H0d8uym9tBlmXhsV1d7JA2?Icuvx{oXyx zrBimWZx)gDT9x$Gwf||>W3z9$4yyz2yo!yR`#mn$qw|ew=VLpQl<j-o=%3xZQ$c3) zuK(|K&S`0V)>pC@4R&N%pPt8EH2dqh8y6iVTCd;gb-b}|(VOIexEb@WxU6%NklX00 z6(-@Q_f7tJtclC!Gj>J)Zdu!(IN!;}a8{u{{S2#C>D*nai}j8NIUg^0(VDsI%Jpwv zU$^HdrB7cSd7?6Owij1>#n~Nm0#=AE$rZixbxX{>dyzWdHEwU&J2A|xEhVbpdglLM ziMvD<-6!g62DrrsUkkr)zs6(NR&P7Ml`fl;-0q#boSyyl&Y$e)U0Ww+FO5zzz8x)^ zEO+(D3BmfM2lS7BezNnp;eu7~LKLsssCJb)^7S*%>t7lp|KpkL;fj3)%z}Gjqjv94 zdOPLy^;f0M>BaRjwp@q4ZgkwocAigySN2{Who54Hmgw{MuLI<#v<o&1sh1}QJo?oY z^`iH}rI=vu*hTx@^_Ml>I=*w(#h>S$6a`i_{hX!p^3n`Wp?cMihC(~{C6=Tae(km1 zR+^?Q)s}qtL+SUEbDBbu*&EJ2kCKzD+Wx-E`T4Y|aZh#}T`L~DK-J++R;y{c{nzZ= z?5n=nHC)M0{GQyqw{p#_zapkv9eStVYF2b<?V4@xcQU|-C(mMKq|p`Gt8ebxoH^W} ztbAm>2>TfU_Jo4kn^C&;9G_bqW~_4!Ni{c%K6Ca0yZ)y1&-L$iTJNe6)cyZx;lHHa z;?M7%Ia$vC^h)oc{{F;{EzABqdXVb5&${yFqsTd86PKOTpPLhTk+CJzjJHYDsE?^c z`s-ch!u01NdkgM;SNSM6Y5k-A=s!39oZI>|WxLF?f9c!r?GG;zyuUs0`knvv)4iDW z@5;aX^nZQ6+UcoobL$?TyKeX?lI`zNv;6%$7w+Bo6JESG-`yx*?peyCrI80d9rfIN zY|8IvZ`hU}oi*!u@~WlVD&ppyEx*rn)>tb*<e$N*I~@$kK~LT0r#1eX`XKmo_x!lC z&YDLR!kMp3Z}<7kBzc+1i2uc%Q|}H2S|;VyzxmG)B<y?Y(Zp3=Z{vI(%$MUk_2&B0 zzH9$~E!`K(abISJ-bDu9r*j@$zBvE$s?}e^y0aCt-QQjI+Iv|2&F{(}{nNMK=c}_x z&(hj%_nN8kPQje|dy*|hYj+(h&J-@pyz^kK>F=ro(La?I`5k(9pj3k+pu(iQtmyXl zO@HUHKi~ee{`dAw*4NjBR+QdvKU?;G->lF3E2dSQ{+auC&-VpaMHM~xqv!s=>~$|% zHlzFf|2;|!!LKiFU!UK0as67Z-IpxlPDWh_Jk@59qWjtS+`kF6H{(~yyC&NIGwyF@ zI8l36_I}Or&qqF%-2VLX+Y-k*PV>KVQP1B>9cuY@@aw6Mo$vR#$?s+N+P<Z>_wDW% zkIh9xt0VS@$oDDz{N8^55C4QDO9fDiZTiIyMl}{A6AR<X$?KHr865Q(f0<dgf34Va zgMo9x8@X-&Yc;&CtPUxwY+7(}gSTp+ifdiXiS~N=Cyo#1+gMm+JQdS?^YFEO;S>EI z|AT-2dHnm~_xfqC6pjkHOlbdp`(aAL#AEV3aZP;f-(NpBSA65j@%W?sqvt=L%sCvG z+Im6AJ<o#KUUy%h*F$OLOB(exha*jz?`KTEw@UtU)Q^vUp8j2bqBVPF0N+djxym)a zZ<~Dfe{cK!?ykv3+zmDjaVavM-4hF2&t#<Bb4p<;5GinZ*s=T3?Cd(}OUow~uHk6* zKlO2P@8<%$6@P56Y%Q$uTYNwIwaxZO`JWws90EmG7`vESpML!)#<fO#*Yz!ztLnoe z3ib9s+Fj9M6*w{er|+HXF+%=Fx-FzHujzRI*stKEP2JMP7M{CVo_+|{J+@(+^E0V) z4?5dFbDF$;WVF8G&#y^o7yInqihP}%X0<|{t#a9}quZ^DMKd)X2+k@`wljWu;B_S5 zJlXFiyKGpWO`PX4by`@g(9|Dm^a`hCewlUcLA~YNO)DZ7WLq6G*%_+V$@j9_L?J9s zv{pApL_s#&Xhv8>ns|9PyV9jVk?nWO*S(zM!M{TJ?TK|a`Z`u-7#3<L{l4^i+P390 zw{5(T^nOd+^U5vnr`~^&X4ffOQJ4PwXj#M!t6kw+XL8TbG(6nDMfP7ugP5$)KbilZ zjT$xfvq*E*JM8o^ekY}?`+i2P)K4EXA9u0)Ztp`PwKdEuCr_#~e9&&3@_Xy`J&%rk zI~#ZI-X#CeoO6OAxhvjHY(6%3aZaRB<u^`cuA)uuvDG44b^9APbTZA`wP)q4uRSbJ zT=n!<UpSJZc0nQViSPWSO6{L7Pf&QOvtX{lqDY3Y*V~VOSl?LB!oQg#mAP)~(?7kQ z3*YW@nI>~~zU`j1ON5SX(ky#Z{fBE^-V=FuN6kBnwn(c?6Myz#<EyptEBEQ7&0n<K z#M;D8E<99fNm8t!N@dE|gF@>w%rXlPbg|V2pD}zf>kv<z(IbwGlY74T2h8(&@?_!( zWo1v}s10#JrzVGp1xxrYepJ8qqxOlo7oVksPJMbLIcfX4$Yvgq9gnsKE`52sLML+y zqlTtZ|D?sPTQ96*6*$=(m8E@jtKK|!ixVpsIhLpH*)83&%fzkV#~Ok8ih(zFZePA& z$r+uA!s|>=xF|~B%qU3C3JB7DlyN0)kx!b<!*2JRE(_Nv)RkTg33{Tn+gs)Fiu$=0 zit|IKcIGnY)p{A<IP3E>R>kz)K2MPVTgglb!=Br%635P7aakO@#~{ySS=!6B&jKv3 zJdD1tw&~d3t0@!bb4{0JdARvR=i#l()~|NCDKa<yc~XeB$t5+84|8G`Kh1j@>vx^U zNGkc`Bq7smyBOmy-|m{-HeEcI)l)83vUJ|=`g7-l_vo!uPw$z&_4W-V#uTY_r+H<r z_~;axo?Wl<EZlE3bJW2{GArNy*ghvUk?qRam@OAA1%Dsb5u9A)Sggyq$?f5k-znU4 zFNV!H{8Hv{zr9TQk*`e&F{cCAybPDB-xb<0L+-`bN#-p5`+ZfnacdlQi8Jf`U^o9+ zPW9XW@j3PNJ~z!O7PMynnSFWU28$DOWb4lcPq9$o_FLk7P{w3|y>8geB}@H3^G=-d z;bDNfSn5|@#seX|Zw2<BaAn_nQG_A;-ZAyQi%U7axc1vLce`h^Z#etD+-<SgS;_7L zugv}~kd-^=r0=;X>Dz;HrTFZpK6dUEw<kYa(>c#8s5sLr(z>2=6>mV%`h*oqvwp2{ z_z`gSyhv!ZZ0w7tO{G@^7wnkT<zK3qTBvzm>tLzK4ClxRS7LVuYaN>x!m817UQ%{< z#Ob{Mr{{D{`6W1Y^7QTrGk!7uTKu)V;i|6Gm*nN)t_B4irs|o#iTNMg_e$t%7c6Yt z*>t1%oWR$;)eTI)b~`-yTwmhc%26O*a+t~W_j+lc#WlD5u53Iw(_N<A+M}=C?ogKH z*T>T>_i1is5$?aEcj-6deT{=Be1(0Fp4vA_$8yuTt?q9<Uk3H2WKF+ikiEB$t9i%d z`POUSb!pqK%*oocaIN&F+_~BFicijvTy-hhP;F*r#+nalJ_Z|Qbau<7dwy6^->aqF z<lwW5DO`EVN;Y#fkAwTJZp+tX%b53TT6kRBDvg4Tl96p!rQdG*k#RBKcjMY$93P!t zK2QI9JI2cXyyK~<7v(p{#LhRGx9m-HO^D>VO)sv!DRNH=iF+9wAU1p6Hm?m5)+^bT zX5QK5vuuLt!5{wLu1RsLPuUq;KFPPo^Q=I<x!RZ3nSZCV<|Z#)zF7ULcIC;fAI;8x z+PU%7w%mD!W(CEi#%q&*1*uP8oGaZtHG1+av4BTh`?aRjhJ{{_|L$9(|J7Nr(P~0S z`H5|&lQPy;oip*O^_}^a!OVMB)a!noZ?jbv&Xftia{kShiM<m7HXZNERNb#VRVKeH z>c{$W+v@s<`|n9#UH<<4?N3`TYH?Zpkvm*FdGjBI1Ao4KY-0WS@vG{jIm<Z(v@K=| zv6`!J)lQirS0LO!JK>D!)2x8J)E`&pA2?xl+5F1xy<d6r4Ia&$Ew}mAM!~E5j!)Zm z_wLdB4w2*Q*PK73CDO5~Jm==THnw0MZO<c~L36&RUNv=^Vt1|nS!!bLy1uIHIrjUP zZfjX__Tee7If?3ly1ly&-2b(1S!}uK+s#txO3bTU-O9^%t{1pm{(Hfux6NwH&VHVL z$+$-I1!q}R`Q(LyIo!PoJF}-A)Azmq@75Bo1o<hKxo#C%otJ;lmbqmM)616|PmA6< zfA6;XuVjASV@~$3y$$`!7EiCwoAU04K${PD=|<J;bJ4Ec;kw&<!vbH{yj}Tl$Dx2t zjTa&kR&2X6NxDSFC^$XvZSr%K!$LY+R1znvtnu7;jDNb_smsg1d^~N!(c&t3``!2T zy+K<0@_)O|PhWUQ_kqauoA>L@7HYoz7Ba=~QSF&6nol38ys=&wHg|n+R$ZW;O?|!D z`q!IRx_>dW72R&JJZ<@<_a^gBy<RW9Ozutq+v$H!Wd}3jN-eJk-qyA|XYTdaedGF> z9}K^1EIs^Y&oQ>1&2ziTB~C75e|`LSului5z1S;{gD)LiR+6>6<eBEn2lZ3?)~0NE z+52x&b5g}`Q?+-QIeh+g8?V)_KX$~n_igiGef|3A+>^V*c{lEIX)mbtd0jUpsLEYr z)#rZKWh;ay-mzJFdj9kMX9IT$u05G2#Qk`Er%|%y>Wg2^gRW1ydG^N9T}LDSUJ3k@ zTo=9ArsU1BnDgET=T5)y`jTUONpSel*@}i2kG=D>n7rjNZ_-tdtGC{4FPtMDre#?F z+GNJ0`n3U~liBqA|2H40N&kK2{IzF)fBl}mU@hYWvD33-Ia7ZLK3~wbtpCy<t9JYU z|91apI$e_00dBxun98WeVr*b&J~?5BQa#IwTtV4u5$Xp{-MZ;rb0hf8pI;*P`_*<= zyG2FvF*(o3<BLoY-M=cW_UhxO(_3{#{%>?Wth7U|XVufk>N!8P|NWg~|NqN|KmYWr z5~oCD-TYJ#=O@H5Ic;K7MB?=J<?`<|Li?u_RsZjA-=A21?Dan%%|ktonG3c5bi~## zn(|Pf{$$~bgVk-<pZ^wqF3{>(Tz@I*@!ShP+V5*WJHBCa(e-uu`?(hvs_dBeD*44! zl|%k3r%%Y_+w)IiUF)~ge?K3NNI#aPYVt5lSAnDWdmO*IGk1*eDdD`M6}orMG;EgI zzfFFzqttIr1%)olCDF5X@iWg0VEM<`6)d)%aew;4v;N8Tn>yFb=CIG45#wma!D4yf zap{!DcCppk=F%Lmc5f|tv;NXMv$n)(!WyS$%=EqdT%SAY(ut?{Pj_-3ni@Mpflcsp z=EEN0RhR$npSEBBe(Bwrul-g`x?z2vd(n)JyX+Z9Z8x)tc?P7hD6nK(t^Je6t2670 z#^+*%u30v<yY9}5)lRBkvPS*;51W0qt5XefJFgz)`B_)3ctA4h^cC&GeGf$Y8VYZO zmMySgPBPJ+wfuM0v9H^N7KhvnsW-oUY4YTZimfYMp1y0=O`WB&cG_ge1v3`#TAya| z5B+}hq$U4{J(l;|<PxOHRVJOh@%S+BURlqLE|Ido|0HU#8g_3q`0_wLFTXzhgXXGZ zZN9!c6{XzcS8HUq7&^NIJ=*SU%6NU*CS8pa=il$UGjGS9%I}pcOpbe|_N18am+s=3 zzVY<*+nRH_V}rc&XOv|XXe?f2#G7}Qlc7NNU-Nyx#+bK`IV+z@Ef5wFl+h|tW8BT) z+FZ1BzhO&Ssr89>jbEZt=l5P}x!7~5J}jyE62HXV`RrG6=E?2)9ic1M_2JF*Rf4_E zQ@1^uHT4qjjOo2^8th%I+<SRePn1i2qcqn$>EeR>VwX1WlKt|1LfzU;`r`fjdmbAK zto*U`<Bs_02j_~5H%_?7TYu8+oo&WD{T1eim7`PBzf3PJcrV^pH1*Q?xXN$SnEKBx zUiMG9-g4qsL$%Hst6upn4^m#zqUyA=%2#_w!6D;C0oFTYpNMTOI=<oO=L;T_JfdX^ zJ5(AYeQbW*ubEe2{6Qz>Fz@86R@>)PEmV~%zIrNUdgiT}p~5p4A5Ap(;VSl-FL=e| zOY)8W$8*AdZTZ1wc1KC`?(dUr;SU1Y=QU61^)R@i{^oxDGOL@$pXAEU8JCJK<$U*b z`Mq*88`newhrgolH0@OGEnDufi}lNrV(ve-bHrQY<)1sB_FVK}!qW#$?SD;<eK;$T z+%d__{^Os+iA?3K>G~7T^Qteqa<)E=pTqH{+nrN-v%hUFezlW3xKl56pHf@@o0c5m zl^ZQT2IR&cn`N1l^1ePJ`IJeM#H+#|EBiHz)i|7IALUpS7~gV8`>=UbCQowPzIpSP ziO;$7D`Lsfd!M(N#bn*s7H#!a&h+;B@>jAy8SKOwUOMU7v%T^;`1iuOiaVQLeOhpN z{siv}J5?6mxxc<n?di-;8)5l#Pc|J>o|%2`yI#Xtvw4!PGeX{;s}JSQpHu&2z1`An z{u8F(IC(N|+iBg|H@#Mwf3~z*8E-vfiAL-qPw5lsdp1ZX91zK}F!gzCwycps<9d=p z(#{7@v~-_4Jm6j{W1u{LZL*;2fn7HgYg|u$7i#_VU3Ge~#-bLvl@BIGR?gxwc<8_S z%H^*UbneGS)Nn4oBYS--PX&*tu3Tx6YyFHZa)SH%qx!iV1KU^3oc#PaOZLvWN7My3 z%J}wMD-`qgzkYFZA(N0-)<%N~uT(!wd8I1VmGx(imb-wsmTR`nyw|~b(=G&Uj|<<b zrG4)6=ikCJGA_sXoj!f}OWdj5EBJVo?rxoJcI92t#?uQ#Tjx97mEN&>c_WwO>s#`t ze%-i!pq}lkOOssBHSvxbix~eitk+6y1J}Rm{LuEQ(|v;JN`0oQKLj3K50&^BvGjms z)Q&@Ixq})UTbT8IR~xh@x4c*QxI?3+Yu4-np0e3)TAhXG&$h9LyKg?Xs`s~8r1(Rf z!$(b4pVGDNPMWcP=Z2fQuWy!mq<fs#d@ee5*<4jdIh(chsedQ+iK*O`GZOfEW$DV9 zRV=KXwijcwG>$B@6fsdgc8ZP5qOH4EYN^Vl9d$npe7N?p#@z|oW1;5q>skL{=h9NA z>b$-sdKPDLo_owHNHgnGxvBiAOmzLtd%FGeUYoy;Ua`6Ae#<S3rJ1>N`?entNJ>p! z5V}?LV2aTUtI0cAF4gaOqWI_YTepA{Tw#Ta!U~=|a1&B=dHf*ICspLy)O{9C;X4oZ zd<bYVJG@l8>7v=%ni)r;m^k_W^9!#RQ~R{+dt<V`&lBGN@_fQKEmof}{K~PQt-<z% zz+U?;t3vobwki8=yQuZ!j56=HE!%oc0?*i7YPcURqtMYB(7kc@#I$DPdS~sI)BDVJ z$5rdHF5`UR)Y2>=^l;6Zr>vbH&c2vvzNufm`r_g@k5;$$Z}i?_koRSs{|4nm<>*vV zPqRa93PCZA?;TGDJu1HEsnm5`=q1Z^sk6~ld!@OGxo%9{FmGeAO6JS2J>vRX;+XeV z@7nk(QZqP3#_vVa!g=o_J0mO4hfS={o#z_aebYF9(~28gydO7eyS|FJ@FhR_x66&T zFB1JBoqZPS=T2``b36Sp<)PkJ&Ba1<CkSQvv%U1-O$w7`SNn9VIAqHy%Y~^%PVbMD zCvz{!{HroE&inHBGhrFFZk9{$_3b^`<E_Scd3&R~ggZ}pZVLMbzWAo;;ai2BFH701 zsgJ(D^^VV(L;iEL4=sIBd6?J8XVnqOPifO;$$Hf!-r`SxTQYae)CYlXJ0xS)vk31w zbM5?}Ysoj&|IKhy-}RMM^03Qd)_G<*vmbXjXU|)d@gSUKqJhoy^B(zE|E%#TyQcHU zOX1DLJ=z^-t7c^_oVbkd_wC7#_qe`goVVeN-66r|RrQ%c>em-Ls+7xF?|fyjXu&nJ z!qd80wcTCwCjI`@HrMY?nz8%ub^m7w`5$}IA9(gS&pjEQJ)ffj8M)sW2Jf8r>4VP1 zsn2o_c(Gf~UbCgx{FNZ@)Qx{EzJ|=awf^qkXKJ2>9_?Fvmo4qwxvDfr<BW>+756!v zndvcsQ{$Wh7k@2vtbfb;qh~Mw(QgrIAC;>_rd^YZY?>8$u=S$Q+{G=6FK`AiuXBFT zsqL|P{VI)pDI!a+e>)lNaJ)@!!TJyj8R0#`E;iR*UGg{d%J5{ox!B~tnf44*H|MJO zR)-x7$!}{vb7Uxe^|>dr`1bv^+PuwHd>Ki1Iy-~+7(5ElJnrsRykScHVxJAO!vcMt zYAmf0p7Z42k#~I}H9uVYjQ+oz&SH~y`n8wwB#Hm`EaWnHzn1JNTz}}*r7c!9r+%!m zT+XuOzpYzV;ta*hmV31|4D}kH3Dk8;?0sbQhxa9yn?&>Jcs8l$M}DXn9XS1(CAqR< z*6HJWuUBnm4EJ3-XM%o1Cqs4Yu2c1iZP~%ei%d)xNF4AeXo+NAtdSD6ZPLHih&Snm z^;g6XWjqeFtlQ}-6dCX#%pg>_I9cLK%$e&4rku*Jl#9F15-h2pJ;T><X-r_`wHaMb zX)~1mJy)625NKVo>z$$5F|lPIr^O$*Tl>DF?Zdp~`zr0#CN@ZD>oMN=o*c)m_3PjK z`rWEM-zT3~zI3NhqT}`Q_xb)oclSu^3(0F#vbtZlV2pG-!&S~aVJ3@_+>cp*PW1Th zzQZkNCy-_QuJv_b)UnmuJ1@ohiXV9&y-Q)+GiBQ+Iw>zE&q<8gC~HviJx)>2Y`*EL z$M*}uZ!##`p6fB{-ScPOB=f`5_OC3Ke8_jnNTRPk_Qx`x&!56~yxu&wVv)V!>W;GA z_hsHJcek0}C+F$l?9cc$Hf_%?5u^Qj;xk$2O}=hae&zYb3!1KZRiS!4#qGDxZa?be zb-N(zhx*^bFH8O`{PC!K@}V;)AKmm~?mjN#^)4dH!}9lkp%2lAe;hcw%CPjFX80R+ z-@l<--9Nt5+*jtV@szbEZBBDo4$s<|)6A^b&NLSE+@O+dt-ZdKC$dC2cgkWprtEX3 zq0X#wo|{+OY&|J;Jo8(JS;?vX|J6N}k3Qec|Hob3CNX`ZF_SQpp&9g&R3lRp<h5{H zqrLlOK$oP3f4OMaqZIf)<r3(YRL2H|#{AbQhHt+;5mA_Z_kX{~B8@<;(D1Wwq}mLF zL#rl;$jf`4eR{lm*NHFwu{JS1-<&+le}0<(<=O5p|L?zjE^i-O_d9*5zE_vV;$1aW zdu<{GPPKKLD%H=b_*wG*U!+(0<V$T|<UgH%J^8!c-m89Ii!aT-Zld(J<Yo6YtJ;l1 z_YYk+S=F;Z|JdX3zfHvtpZ+@UU+)=G;n(u5lS5Ldx3*sP)Cv1qsg?cWOI@~zS$s@r zIi;=J;eTHL`tmKC&&<EH*smnZ<4fi5n3cZ5cWf_CSF5Njop5ipe*H_!e!urVzu3%Y zrOq=J-{SYL=xSx|<8@KCkFC|iV@{nGUZTFDq^h<1Np9ilEjCY7*PQfTGXE7<<Ok0- z3oXG#`IRAwYGq1m4oSA&Ipe4HW}f>jt4p3q0`*GGTaxA8fBtx{@VJd~|B0OE_jw<@ zubr0idfN8#7}wu^y(^6~TK~w^AOBbzE2#f&b$sSqBmPwqQ>C}CZu!7B_37by`)i8L zEA|##yC(Sm*N!L^uEoi+A0HR>Dk#hq?faqQs5{;BRL0cW9ev_#hccr&<|lS8DT}+Y z<<#U$hsumur>x$$Fy{2ndpA8dUOprBEOyem(^82uq9)&4aAdWdm32l$-Q#)glP{Rp zOF2IN{4?wRyj^1Ujv4c37KufFx^OljpxJFjHj86udD5II{3gZ=jW!8*ES|AY<@B00 zPqxq8BD(r1uV%^ibjy?W`Axg(YK;Q@PtS;u*fCL6F#F83)z!TL9(9s$cSQf++TkDG zw)w@HxcA$Xi+`QzT(NI;kJrBLT*osNFV1O7*Vfi+zm}RhXHCeDrE~LDR2SBMu6uR* z44-(En#6p$3p=csgXH&GWF%kozS{dR%5~Dd89!`(ugcOcPucNnzSX2Kw|qD4=gV~p zvsZ1IExGk9@5zNWj<z-bFFg%c4dvaM8)4d?blIY7a@+6F$|%d#tosz(>tB04PwuRb ze=ZR&lC$#dh5EfVvV|Alq^vQxVZWg9?(T&_PY&t3dcU9h#_C_MAxBs91E)m`dfnpv z@5VX@t}fwt;M}Uh=Ap4=_sWUJm#^))ldD_tWZU`N=l6ZY+$QUW72a3g{fIC7dm+0u ze{}!jHM*}Q=53F=<Z)8h-|Jnh^4bommC0+~Tq`usQ@UzD-SF(~`YDC^j}8Co?PgZi zzrW`UPvfb&%Bh>4=Q0K+{c#mo8gcRzU&$qnig)wkqnm2)l^8#+3Tc{K8fsWmT4&LJ zZ_3qG?@x-g#(U2Gys+<cTSMx@Ip)zyGhVnd{1)(Iofu}<VBol$lkI0=!=zP=HCBB` zUS^pFa2oGq4iP;dGbu%W;i`HKlOywr1>`givD}TZ+H3TEoz|1RvyLm4gt|?-w6(y2 zt@VzY{SwxO`Cqz}_|*KK_ptl!ozQn`)tnBg@NZl*j=geBF8#XQ_w_qdi@UpDn$Adj z>~`NP%<-W18lR4`#_R8Vx;ponMP4bLwBls2aO&Z>S;e)<R_B!V?KEAbC3oZ2<ocU( ztJmFIGs&h!mhVyl<K4%VmTqdVpG}o~slAp}U`dg@UHy+0bAEsL`Pj=`@#%+@fb&6n zUv+&k-j$cQKPsTsdEM%lNtNE4jjq4Cnqv24=3(PI^B+%M@72%H(66~+igL~oJMQ;6 z(tT%6B#Y{Y7i^b$up$36&jhm<E2ezNl6}sxqW*H+Ulw1Ty0lZP)YdGw{k}ann!i2i z&8>)glCw<LISL5Q|I(WpabT~{?a4P^=R_vYSbvDy;5GL<7Udc4Qdc$#Wv^_pUVYT= z*Sn<tDeK<cdn_RrRCMW3%gyL-KIsSIb<F4VE#eG39AqASlxv4{-aSR<+FpsJduJcA z+4*zP<6~<U)H~gr?Qx%d`)>iUaEXK#wrTIp@|Tt#&G~VA;fwZ`O)K}Mz1nreDY88; zmOXvTotnVN46&HbMTM)ku8vsd*&e~k-xKX35yX(h>z-@$c-q@NekVIV=6kSv+)L0g zPQ6n!Ib(+6K8tDY%xfK<C*{p?o%cYb>S;w+WVPhoUM4w@*YD~>E$nz+FP?wjWoxg$ zPVfa=`2}Yu<%eG1qxa!~mC6;q3!kTlp6kum<hXM4K>C&{AL+mIxFpxTX_#|FYiagk ziC)(?xz`{2nDu|lKao&=NibOQ-H#)V?bdtN953`?&wRFX^7(mu2d`a<f3VJa!uf+z z4`y2OPGVkq=3=q>#gz$+i`Ugpv*u%6d4!K`=kv#M<x6-Xt~+*3vj6jV_rKr&v&55n z+O<-Jte(Bv=kuY@W@>9HbMhQ6HCGQ?|5m;i!2v#OGdHc*{Ij>&nc3iacf%r<f7|%& zc3qEf<)3qR)BjH_22&MZKJd7i@p)a2Yo<xAw{jcTeTN^5yRLLCS!lq<!W@-YR4@C; zitXE)Cimz`xgwk1#~Q`ibv(Sya<7H+a8QecmgUj#;0+~f-UjESG(R{z?ck}_t)^DB zxmWG3{ODfwYF=IBt6f}PEa`eT%Q^2>=RLd?@GPL`xWN^xqT^zW39coH_YPPsnwwqS z+1j$hY0bS2#reM1%ku=CBVEiSpD-;9m?BUg(N`Gen(wPPU*?X0@2iLH&nrtV*1k=z zy^^<ldHZJB>(9P@NfTdS%Pq8nFLJ?ZHt+oHA?Iq3$?m$>d1m^-+__Hg!mO_J9;nXw zFkR_Wz|!S6u550arp@F%<;w)t*FS1h9%Vgr+xxkpfS=9(#o2%z8tYFS75SU8Zn5w^ zZLh-P5@z*ZwfFkHJpSvdl#<i=CJ#P=#;+4sL~<m4t3R-5N#X5<l>!f3)S6d+SHF?T z_|Ss4{pr8dMk7mg$(8?pY&uoj%waW8ufpr0&eAK}uNG-eUe;&!ev62j)GwJM6@G6s z#5nKXZ{H-o%QfAlXy4-Knvfv2hkIwW7>7@(E!n#>uW$D2?e$NsUWVs?@zYJ3v{Cqy zt%?@&+8-O1$+Q$2I|?i-4l2oh!2dgDr~9hp*7CLA+S^3_<f$EX{}841WBUPCnX`?J zrCUBt$eg;`q4>;!?fI)CpGR&Jzc<}|neaQahhG-{{gBIl*3KwEIi?|R0q<US!RE*( zIi~mHa+WX`{<*v>m+{KadW)-`g&~c<KYYIB?`gfpO(MGbd-toH6+-R4np#1>cCLF` zS-5=pw>>(RUV0G=qh`NaF1ua0_tq}iwUfDA^gUyneA(5Sa#zmTqt&ZA_v^LF=M|a3 zejd9*KhK`}?bVw2(9e6{Zw@orAu_S4lK;E(^R-j!mKa947+0v<*o3LoT+*xe6#SBR zc3Uj##=M(zmer|c#vPnhH2JWnR``>1*};dp7z=H*bLaXLI*D9*zNuKqrH7r9Z_=-6 zEbcE^A`b7VJC_hsI4$m>Uu`LWFmKx0|7M+YL~`62i*_G2W4-X{dT{-8k=Fr#x87V~ zFBjyz{p^wJ_k5O53HaqKcGi4jLHYxh?)vA3@%z%%dgQdMcekzPNj@cKkb2H&YQo&Z z#m2vVDidq@bBcfE9-e)Q-K}NGXU+2-k#$^eihb*6CtjO&lJoE<qleb!>+jySG!T#7 zaJTsJ+j~1>oxTTiU+er*db{qSC+D-kSw9PQ?>n{T$}6R^ciXwAp8FqR)=>U0q4egB zl}}Q4)$dJB_&)Den%`HIGcI$rpDaoJYqL4TOg3||)K{K8vl*|rrImeRPxF=)pXsgW zc6BjR{tef;3%l55^ps_`scSzJJ#y;ajHPbQr=$N~kk;~_C#(MT@<(r`Z`<M<o=wT$ z?U19AuU)bEt;*C5bDU<Eo?g(Sz4SoL5?5QpRg*51#_!o$Fa2!RZu2v@6(csTv3L8v zrfjpTKv>>{?zsl*uQ-2ut*YH))^_~#-{SA-d-gW#Y)`OCWAO~ych}Ir^64pUX+}1= zW!;fWIlcbYrT1R=G+Vx|)wFK=<ojPttIBfH)4p`Ps#zd4Yy08c^k=5dzn!}TUtFG} zzm#(yNBBifb^hiLC*11K^_p}a{2OzJPuq9yu~wm&aQ06p-l&TjbZd!6y6s$=cX$)O zn0f6=gIgzz0(~nKc5qht%lW&s8D!n9T4=<_XT+HLwNl}Sn8QQyiliq8m%q=N&A}^l z=->TMQImNOulW&hw&~Qtw+)@G(+WerIGlYDaMmY$^PRXCPg$*>ty4N7SO4eRPfrUG zg}Umtx;UdFTi(x+*X*77$i2;e@1~C>vn~B*s=CZB@zH<h_o+%mi<5upwS<h@B`elE zSFM}VUUIAKrexLQ^|21y*njS5$~pV+1kYKm$cd9B)AUth4v0L=_ni2seSh5@&)`q- zAHN>lEtYXcZ^`kziU;ABPhF1u)3``7_M<y<$>(@8O<|$coQE65PHknn`6xf}(7F4E zB(|^Qeo+v#zu-yDPlfG`Roip&;;*ce$Yuz3cwpXaEnC7qAuBtkJLCUTKIy(=_Kz2A z{}VQKqH)%;`St(L{%4F%?|KB9#F*T47c_@qZZ<jgqIA9Q<oAWLzRxBom<g~L$h;Pd zKB$wW=#X;2v*Cv2lkLw7bvJdbS+y;ClOoR*?(Uk?-^;#z`KzMl_y0&r!laBD52~vE zIn1wdtbc#{|NeU8+HX5&vZVJ}8}7CAS7-Inu+}^|r{wbN>HF^$ubcnE-?rxWGyg3y z347x*&bDmb5*@?UUq9!u^*L7CMHA#Ue~G*B`txB<!AohU?B?_se({s~wfOy3j`JOx zzpeipwWr_z^5h5Mub%JFde8Cxlh(>ll3#vV?wh7I;rDTK_X@VNONxaxmTmRwsW>EZ z!SMXd{8;<N6FfU&?*A#69cHpSYS~n8?SEyrZyz>%>l5`cIf`-H-NR2<_p80mQ)CHt z()|{3NpXvfkNcC>Bj5fWxe#gkH(jVjzPpI&;Fm88_qa}8a7mi~o4D8-D<Ah~sf{+z zB_`!gK6S~0v1BsyWi1tzD-RN{?D;!&(X+SiuD$za{Jxf};HsmzJMVEJ2ZL|J&Q*8+ z7)%blyqa;t<iD5YS?0g^q&HdNN~}oex%<1Og>4LRxTPBWHq$gXJmg{j<cU`lokP9; zeV$sy$)g|iO6&A@&k3(sHGby3uv(HD?yJ8psbAi?v}(n!wHcYF#wzpqwHMzs734l6 zP}(bGW*ymdh`;7m)$i$(zg{t`fA3S}UiEmEmzvG-@BbPmoZ9h2{qHr!i=CbPdoCEp zq|AEKec$JK`Mh0QZUnzJ=bzv1`{`88ocO7p23Ga2IlsMryy}zBuPg8M;<be0AAMGt zJa1dYTjM^4=h;Co&%WLlzQm<ucYL7xu77fqB6s#4xV3TLJEaZxn#;d0xD<5qaCOJw z`s$ua%L(W1e2b}mYWx1M$&(*z7R}&ZI^|AUb)eC04n@y271iJi{MVj8lRMP5y2Z5r zNXz*Rr;`2LjlGsFKD^`DhcC8gI(lC#{aaQ1vpHyUZ3FL&@2gwu@1<Os?k}`<=du}< z8tI2~47Vh2KX!S}!aI7Jnmt+5n-8zvcfE**H_tV>o-yRr?nRp;JxsN=HakD#>@2WI zFWd7_>!Rrm;UZ_%?Ypkz)$8`2@&3eNob+t+lZ#80Y|ee_c#yG6UDNrgw$iO+**DJa zeZn7w`FZmVSsH>3c>DR^A4?4Mn;!Hll~33xKmGIe&6Yp&Pa6lw&t&#HmgPN*Uw5(5 zy#qO4?y3BZ|5P8O?#y@L=#ncAcYjX|sA4JXk=|xp=`j0Gd%AYs>-}3h7YH=PUs`be z?8VFL`+mRp9kr-Tu(DfYLDFx{UweK|`Q!2}qTt;9a~pTQPjxUpYHVO9-y?FB)%4AD zyY^i_i_6uUH1!qJ%<SBkJ>Xft%}I+tXXZuwk_%ZgMLg~;jgnA%TJJAdZM5^P+C<N! z`GuLEV(hE8h!`#D^RruJW?HLrRVQVhuXl+^zJ{fLz`373bCrL3G@c86XIjI(x%%sg z1^s(VKN@`Ue{Edkv}|gG?yh|0<VA_{-anT-Ida)k?Xqn7*(*zA6OMWss7(B{bBe5* zTy%5av=2e5%LMlJPBW;M)-S5xw}OAVN@KL!3Yi_IDf$AgoP1Hi9`kc1PxI%{YVrEv z|5G}ntoaFt(Z3}<ZnFEQPOYl8v=CDb>2$pJGv?!0p;j3e@g*1Y{R)q#WTxy`cXN{I zGlTN)yzaIq_<9bgS+BSo+4<}3%er&XhtAG@dt7JE><z^c*)wOb&;G4ga)i-xM}4YO zmDA%H(d7lRJ+_Cqa`{V(?XFqpaw6xjs>0jI6uz+BrzW@dH=H{+A^%XC=b^txSMINw z824xM^fqpHISI{JX8W*bJA$`eGoRnJ`kqcVqpt8V9sY>vT*dv(d-hEE$EiAFzi+_3 z#fsrJ^JWW`7?!=}l;U=4T7LM}4u$G<F(+@;|M|Y*-7b%l6Oy78Gyf&Dt1Yx(joGT= zJ$25m>DI2^x7A*{m>pj^k5}cV-Gu#($x}|s_i!w#>Mne&`8~O0@@F~LxyqaFY*p)d z5hYyGvOgnCR;g;$jQ$;#-#?eX&p!~e@Y%ifw~HTsxoxNT@M)q`+}}CAUfJJj?Q^?$ zcg+<!GwEtQ)8>sgYd`Pb@ao8v&qez3;eMNJ7gwAN47{={YQpc$dta6v&f{v43XV$1 zNU-D$V04T8-#3}}lVDvzwqegx-dSc(-!$JB@^riQz<<w`2iIjkNXs7B5a6tx8vgWF z+=+$qmIk6LywB7Y)W!r0wtufE<t@IwY0BJfo8%*AZCyH{zodSZ+0@JnOp}*Bo}`o7 z@S$n4=!@@ycFs?`IMxTt{@u}7;KeAC(EH)YX}LqP=|<C%&HsB{at;(N@8WzodEJ7> zU7<UtY`kc2b~WD}Ws5Qy9-G-0BV^0Z?EbsETxsg!7k!2u(+w-$SlnPr34G19`0xf> z<xN3vD{sW#yUO-0Wiw9-TYdJ;J^NHSUjLh>$FrzR^v(7)AHURHcs5~MjM$6wfv5M* z{+!ocyF|azhiSt!hw|eVvVTqrMcipxz>%{fdIwiYa(LsNpidlIS9@sOE)+fSw^X?} z(m+P4bKfLixe}{iS!R}}^HY~OGm6b#lUgBor%dAh&f>Bc8ZVf8xY-`0Gd3C3x5fNg zc$Z<udliS+FR2sXPLa~6krnIQc=%oWi!Js?HvJE5Ybka!dy#Qr;<A#EZI|xPTq`QV z_hN6-+p2BGrKW0Y_%1JW{kFi&<XOF4vQ)2Xn)bPXup6FS%!gY{q=N&N6(2WO%cz$q zUEOPYZ{0eU8w|IuJ2RgDHDUR+t;_fA-pyUV-e<G*`p7VzP51ly>&zu?RW#2E&%Khi z;aZvU(<#1Z9!YaW$_amB{hqOGUd!M7?`K3)Y<O96HoM;v-Vn!Kk+7BZmbSB9!d8t# z{i4$sJWjswx7J|pltp43xzj>DJA>y+{itc%wt1Dw%^%GipO<}6K6LKyJ%!#cF7aDF znopNC60ctyy+w5D_sS&J?#{}qp|R&5@0R*}bboAIslj5OcM(SRlfKk^eRad`{@3-p z3lnynTD|2?!J<h*yRFuqx^O$MROw*Q^oLU_W>tT6+a7$`=C}u!=j96_iFpwY%d%62 zMH59H=&C-8+V&$qqgv(G8|CNcU9MX<9bPPPSH!X)nPuz$hxJo$=7!#07Al(`aneBP z%i_bS;r9JCmsqCHE5F*h`pdeKZ+9P_+qXJBcgMV~7p?4OY)P!YG;P^et1~<<PwJlS zn9DysR^hzWovdX7%gRc21kH5*Wgnevyw){YbHYr^RXoqPF5mOz$!76+>D%1h?ykJO zw}{0<Pfpz4G$QW9rmTH8nd+ZM?tG{d-s}Cti^qmPqnv$hVybQZn)I5VNw@c;?>sHw zf1z->PKL()D~F%5Jenut5MZ?M$flxLk#(PA7bQ<>cwsy(T-?U}v+f}ipT%qD$sFF4 zW20o*a%{<|3hrmO6*FyW{>VvMsx0WJnZyv%m1ugK+o}9h-M({E)IUc?o{gCm;+}fK z)Z~zyqpts3Ueli;&suwLe3CpmeaEvP?>p;vW=^s{yNEkU;OFI{$u8lB!eYO#Ip6x? z8<x0lrqB;v?a!+g{aHS9ae;Yp-znM9ny<6}GrLvCb4?CR7G|^novB)HXoxaW9_770 z#gg~lXKk)d*YAs*9_>l@+Un3W@dodmyC$Dk=;=vIW#0Jky>O02VNuZ4?a>QXU#e8y z_V~xgn>&}s`#)Rq@%$X6IdghXy(swggY$k(`~LbbujS+X_Wz%}QGIdfwVQL|;{4P3 zPyHzQ<d-_#U;n#&y<SxN>}z%(zgG1bK8nu&_`QmC*Y&UI%zZ}JH*amopL_8B@lPq- zqBWa-eBS@y@A0blAEbo(8U7?qXz%{IuSe_q)2@*J-#(>JG50FWbtx=8bd|@mdGW;h znwi%n%TKc`_o;NA?3-Bber^5r&8wBBt2SQy`2Ovy0+*eys(5$m*|W{7e|TCcxw2@w z)p7BO?|Q4MOxD-%9{8+u<$bE%S<k23GRF*k`-^T~|F$N5U+BHn-;-=E>T2)3TD?Qr zb^a-_8=;#xrj{*a-mZ52^^a4NK1pBC2+LhJt7Mj$`}}jqwBFBtCj0t%*v~2H)y|ta z6iTw1*9y&3+<JY>fo-W@H^*dU+zxqHf3R;U`--wRs}Ho9EjgPmdQswVe&y%xMU|Qh z|Gui->}Nbva>kOL-m5nE|9<;>tf@CxlZRQ%Y=`=aJ;lBE-rsXrpEcQ3vPd{QJXYL$ z6?cx+y^miUD}|-b&);U#%apw@i`V|$3s=^QWkt!$&-8LEIuZ9YWfkvNjZiTcvxTcI zqhjlMgyU{cDi-Exlbvw&#TB=m+vZ=8Y5#uRajAEf%B;HznR>U`w6EVS|9r`$f2Bxd z=Dlp`*|VNL`&Dc(XNp<(iz)gkv%iSE@AZpL<z(>Ly*|!3oJ-ub@AiVYJNKoGn$zyL zTD@`23tJ@qw)uixHAkkAdHFlJ!x!V)ZvSfg_AG4ai~7V@$D-CYwtb(t^|GnY!;cs9 z_}96r@%g^xWf!^4esc$>zVi`7)83H9Q@>XHJYD|y-~HWJf|Hz1h+P$*@_AyfjNSY# z3sSVFPn$WR@}qle-PD?U+GiGWPcNu$u5nCWa)SNmiPqaWv!;4a*`(Ltb2Pnw$|u31 znDaXXcRl3Y=9|6Cw0_&!-ne&swt^1?W^R}{@#=K34~vs8Tx_!2Z8!7G-u6<(?SVIc zN4|RzYP6x%Ys-3_|NnjFxW0YSxghjIpR0%IJdt9yAeL&^oo%~6oaW-KVq%}Ppdyn; zd0vQqN|cPGWt|xxlUaxs>-ItyQ~Am{*@6s7J9zBZ+%GFE@i@1*ZI5#OtCJQ1JBx2* z89i@y%Tv16WpRJ8^Q+?TyRRi(v=gzr>-3V>Sis!6rE7^J>+QXr6EnJf`1%%JU_83v z%Y@6b`X-xc&!3hRzLJNl)$Z0qvp2p{ZAD^v=agTa7PeWbpc1=k?v>q>7%l49?{YZK z(ufpga$e2<-fn@eiB4leDx3POi}k0szu!J3q-Z9m;(q@3+ZEImrbtiX5Agc*OKCI9 zvP&zZzUZ6_Y>%G!!cDi~yonOmSs?)h)~C#u=Pl(pYdU$)`L^Dba}|VNtk}?GaVSq| zf_qIve{}Bb7gM<9I4z$BC&iXd^<Q;r#RWFU`+xU@Rvr_PXgwwWcFyqwQSP;yZwtqW z)!!0s5XtUr2)^}>BS}0yODOf|?ndEXYr>eePOLS~YGjs)cJDlr8QE7U<h>&+P3Bg) zl7G~}0}H&XzH!O;C{*1vTD?j4ro`sjg4caVkFE`t*_L}(YzKSEj(6&Bl)DQYpE~5v zc<RreTD&^Lf6W1#?M;s!OB_0|`o-I09COO@1M2H#L(Stt4&KT=<+S`Sm+b4+9E;zj zh}@Ux6#O%lD|7F&6~B%hDi)FXb*Sp{L&l}1GdO;g3!3FAuQocAx6e^=$s65g?UvV1 z9-6URx<I(H^YOelMQ^rCCK^U4$t#%8HrSVIF>QL_(-qmStC$WZoC$Aao3-|-h3Hz_ z-oX3&j+?f$htwA?JMB2BwLRsb$G6!<otIUw<QFEbWc5DaF|#-2=lWa+*Q+fG5&!mx z=J2h$_D)Q4Lr{5su<V<V?aQP7=pX#=S=zibWbV<sU6=D}t3>RWJm&E`bsYY~mT{NC zWZ&Wio6qKR+_gR@vAp(Evi+g5?2l#<+f`1da?TQnk}ayb(9kJa-?yU6<$ma&y^<&2 z&5U(6WL+Z=aJIJ2oztc-yY{Bj7v7!zYtN}9_{K>u>X)7z?lDKu_(Yw1*&P4P)t{H0 zk<K+)@nRECGXGu8-9L7|J*`#r=*{1~soytb`2W25PSNOeW>)#mC*cy04_#W8<nU-( z(>imPm?_I1NQ4$mZjDyn8hEN+X4k6Nm>|#E&rgLqWHb-x#r(ED*LSV*qTM@Lnc6qp zp4xFUf|eDzSth5i(VnfWV6gCo-^))&WA}B;pHujL3h(v3r$61)Tp_TuGyd{I!&_m( z+X9MI<>PPs`I&V7#Ttj(rCBd8PEk|%vGVs-(L<5*s=sV<bpMvcb942IlsktLCa<VB zcD*AZ7p`~sR*Ld=Q~5Q!JyyOk2|l!>?Y>lsA&0?rx59>t1y8Fwxf)^`cOR(#Wo6a8 z^SAKz6iZu+f`n70Av@0Wvav<W7`0n^?z-Du6lH7ZzA^1p!`5y2_RNp;66T&R&6sar zTK4(i<=<<TALTkbd*@a2+si!oZNE?J6q1)(TJP&N@$ICQTN6LK+O1u+@_wZ>m;7%l z0pq!`zwX@9cxdPLsWEu*{`XCvPe$+B@K>h!=7t&98uXLeuI~ETvFMUjh>V$RR<~J! z-lyFkOUm!8`ls7^L?hF^yn0h-T~~R?8lAcAbI;ygUL+CAEPbya#5j^+*NhM?iA!uf zwN~|x_kZTpZxlHeQMS!+)srguFOJXkPNu%riJ2~z^~E*pzw_bXY}M|4j&l!2_RQm0 z{Nm3SmsU0}<$Sjr4lVO%l}LONZa#VM;@+y-o8_g?g9TqrzW4O!^L3`;8!v1#cq||- z!FoAqp6Mj()4SHSroMMhJ#glk7`JW6b+!1uoz0?scV>0H-qBvKwT?Meem9Tm^pa;r zhg5f(_V#94XmC2^TfPk`du^F4t?b`s?*73s?5{#<wM@$Fls4-g{{Bav>t1TyThh!F z?*8lR5`#;>FW0-RznSUcx7<HNG~$Bdk6itKmA_uU{QaupMVef!nD+Wd6@J>n8F7cC z>p$GII-2x%mh;QcBJsRl^|OtZ$}DyH7J9wsc(&V*ecN+9_^S?d3KhJ%UU%zw{FV>b zj_UlqqM3PRzFUXUseKFQ#=kjfeX}z0LhMeN`7JhiF7lQ4tdC0FeSVKUY1-V=+h(!d zeJy-=23w$l`Duw+$rFtJ887-?>GSq%>U`JbH?|$vZ(Ca$<`gsI|J278$>k;+x#IT! zKU>e}to$q*(kKJ1U{I^KFf>JOmYtRI?N70Mdv3i(o^gBCli$f#Uoi{q7IJc0uydnF zNoncZPUb)Vnf+v}{o?Mep4ZAOwRKtCBa6Pr`OiPC@7|~JW4Zptm^r<(!ybP6=P&V- z^IzS=|Mmahe%dYn*mbq;>NWcJ<)*JTpZ)FSqr1~$_totFU;oy1WkK+%Ti5s3|5k3u z)_z#ZG24%GgW`%x<_r8wO>{nrO;h`E?ZfYnRa>u_q}c6^OYZsbRO!#bnhT}9buFKE zAGjqR!>jGv$n&1VRpKnWqosfKf%oNq-X^Jj=f8h!bJl*VHHEYFl)tjvJ1F<+s`igu z-UOy9*+23;b?lcV3_qN$|H-S7Y*wLg&`rUh&8ezwy?f+2Wv+kk8Y~op<TKn3Gs>Kq z!QLwplgbh<9yTLdUUxtDw5GKaB0P>--dipBE}tWmzck<HY=xxVwAB}Rr+aU?Jg+Eu zqT8+0cPgGW?l}E_VPM!beT`Xu_amxuefDJSuJqqj{$5?frf_G#s}DS1MC*TxGUjTy zw52o8+xl)v$Mg!X>7|b=XKviH?A;HIlE=4B{C>I5nmZzJ%l>~?>i$$O4U=*?!xr4u zr0ltwG4N)Y;arxpRZR71nkSWi&DfrDw<FHuQh7kul$%Li``a!RRQs)Doa$Yf<TCL< zPDt>NL*;wUe%$6Bsh+8Pb0b&F@x^a8)IaR%y;d|=k=g3;wMXp6aVvBWEmS=a_&#pE znyJ8~zk$1?j|(emztBD;oyqk_RI+Gsn(4_^+1HkcCgtQ*YpZRGWxH2={rRTwJ>`}9 zS03$qSP-8n|3ReWklO!+4!2ZWzy3QVyQ1^=yIzkx=?O+Fub=W#+8~e~x+=?URg~MC zmsf@Bk4!32mAtmEynwZNwr`&7#0^vDKH&f3ecWHoMDX<dH|`dP6#F(AOU|ou^A5W0 zx;E>cN|E}T{#~zy@;GL{&`D`Xi9Azt{o9@_#jO^~y4rnf_ORS6b9Bz*DT%FHd+~E> z=nuWKExq5f>Lz6fSDXBKus7g=+>Uu)rm$)*d=ou))%*Hvw*#|Ok86kLH6`zyzje-m zl>e93wr5uhmrf1e*}Z4))VqJyY%Vp~!(sK_M963P!LHkn^AAthxt2HfVS)bNxH?1s zSr@nSN1dGZtWP~*Ux~Q)f)rot!qwSteHec$oLI~({_XJ!0kwm*Tq5V@xa_R>VAFE= z!gQWAo&I;4y2fQjhw3?^HTP_dJ*&~-P-%2_ucd5@eChYO9ib;q^&7Cq^=cU%eYVw7 zX<p<C`Ex(q%`cTatuQ*tAEYkRDV4c#SvN;ycF;t%dESffcWAi9xy7<hRegKJWr6(0 zR53?4E=DDmWP?TjK0OX+G4yO&ayI&|LfyYlrL9MEj|on)uV>Z#`)PT-s+O!7YkJ0x zeM0MMI-~o%7Ho?CW~(2yl!;TxmYcDYA!T;Gu-%~&u^rOUg&p&<u1wL7VrI)vSyXhk z^7EXPUv_jqUazg7Ul`)MSA?tc>Y8r%o7^#r7|XQzWEm%SKg;|Su;9z-45PDay_MPC zx2!%MtTb)a!>}b9>zT!^pDfBPs&`UsdHOTso86j+JG*sVW}N77{qsw5SJ*QL^R0f4 z-7B^(zO&FdZf0Li;=#6*)mFQmPZd;6T^e$~d*c_ryMgyI<Q89ldBc72Mcd9E^NZ%^ zk1ct4<D$bi#&_lNJVtMw?*v?rG+xECbC#Sa%jL(@R|VvW>aCUCK0l}WRLbpG>o8}J z`X`H@dpS9u;+?%l?Y-*bc%@@^GTNJVzIo8{m~X92!;TqBf2=04yKFCs@ez{xY`O15 zP;#5^x1;<`>)-s+$jkQYdGd6|zAJaG=g2Gf#7$JV{-4n+`Lasnxs}1!!@dZ{N?5wB z*|23(aKUlTx8<o{CKP2et24Pzy^}NPzTLzv)*s^Q>)IbWELWB9U_Z`uDn`lsnaItM zaxD*wy~aCt#9p5;tLX3(v9C4Dx3N2!?sV=xXgV`&Q}-dJ0vCtSxnX~d=L&S4&R*2A z`PUso#bZHzHf26<N)G-`mwxWiRy4;lN-+IJsJfi(8Z%SxO#j$(6(uWASQtwjvpOX9 z?AleAYuc*~-Rdt*3aGnWcvf)5)~a&JM-3|<r+>~r8CbpUF5k}&zL)%49Vd2%S5Dgg zpgrqNUtmr3gOJsB*-pMcWpZA;(OiCa-enuFP4cOdOV3zU`nijCRY@7=R|eRs=`2b( z-6w8n=fBY<EM~Qp2(P8_=Y$pWZIAIx4{9uXVJLTBGW+`F5U<Vk7nwH+pUONJQ}FN1 z!Vr#0TSePy)L28AbdGjEE~{2Q`7i38MIYbEl5<LF&(D~gS7mV8Ata_M<ZpMSq3v~+ z+I6=RA-oSxEWQ2Z>e@4`vyCTbJX+~A<Hh+)C4q?vH_8Gvyi>27m40IQJwxGAm*T3e zu`gI9V%(X|yxDtF>2%NP7WI0OXGM2H6<6KP_smq>F0&{&{E+nL#+u8%|KCLSo|+cE zpvA27#FR_l&Mnr8shfY9BYWBEXF(4g)*D3Xxy!^ao&Ie`mTXYb-q<9Y5<%5VGqOTL zm~*y#xVEPE-a2E&$jO=t+Hv6%qh)@dsg!$l{E26*@5H5t0_zVv(~-(ksrGxhw0@Sb z+N0vbzb#*%&6piHg=xRLzG{Zd(>)yz%Wbt)POl07yvkTude!8@UAqOd+b%uRnjQPY zd^ywSY%kfcyF%}luh3XEduqM&+$~?tH@tRQJ8xH8HrLng3ZL9Ip~h?5n7?v|zFmE0 ztz2GdlwjOyi#s(U6K7PO(C)D=Yrm|-x_H&Y`ijM~r`Z}dX!BZZZrfJXve$Hp<TpK| zB^_yrzogYBIzR5n@w@6&wN_l$KYsDdE!-;~$pjhx@l9z6GV8gsXU!Aow`#qb^Bz5z zw@ZNK_`!?sq#muV*m3=%-DJ0-)bmd^IOcs=^6(bZ+i9t{{@9$}!&GIy*j`6Qc8Qh$ zrKvAp??1s%ztZNvN@C`{46ppQmZvX#4}8{H8=J6GQewvBL**}zb{!AUH`cFq%zjfM z_VJwd-IG=6&o+h#SFoS6T*h^IQ^~sKyFDNMv!DNOU;25@rwFV6G1_4z|Afl^RmJ!J zs(G23lNRv$=GAHMgIBKYInLtYk$Won(*-W&I^)81>O71${MOf(9la1&WpV0=`+Kcf zdrnI=Ro2Jejr$f|#8@F`ws=+Tk3}zL)$W`i5Yu`)r0Z|3aKK--tPhM)-##u3sXF}s z{;lA3{12WTp7#ExQ}6kW%O*wLnZp)TbC2oPD*gWvT{35$pSV=5us^f7v*bbgh7~L# z?mlbS_QxhQYM+_5<oBi}Y%A)|Wvc%#WNCcz`txs&qT_21J^TM$`tOI*g`MHTSH!x1 z8mDm|So~OB_T>Z5_TXoG8k}DlU)d5gPg=Bp^KrA#b?fh~-*wFT=^QtW!1o)JWu}H} zvM%2+#mVQiYq@pL2J1J=XGaMu#q8G0?mvI;P2tz$%f%1!{hYQa!t?Kf@Y&6J%OmQm zYnPlcx43Vu!~Qq4y!}-4l%LA;wBBo!=LIwRC3f3xTsvc}eBX&P>8@Ju<EkFqmp-0) z?A<(5fj<F1!hbIpp2`^9xAC!3zT>;AyDb^AGW<3v$KTg$bqUOyJR?l?x>`v3p6WFl zD$*}`Z%C~Be(-$>Q+n}s%kaQQ5u!S?{{30LufBZM;@I6*+FFWF(re~9y<4&CU16NN ze{$2W9`(;Jml(U%>f2O_csf>|I41h`=<VhEnm+T{mt4E@YwDp31=_rPm$~d0w`v=I zTYBB<PJrf8hI5vZ^;UX1r+IuseD*Crz2t%U4kwR1-ai}mFFU*B?zBa-0}JeVE-zU5 zsO8Urx{0>$mBiPsdNJ46)Y@*v%FAZTG5Liz)0_0pyg20X_o?}R#_jvqtHG^h%jt&d zplkOmjm;-le~M>1{CD#GPlff9Ki0i;;W%kr^M0;^^zJy<hf8BW@qa1h+4g(=YhKQ5 zn<+~-Tr8b${j_C!p1_~We=qJm%QsijBPyeR-xRSYB^!h8d%t|BnZ54U8@nBcT>pG% z=>E`idP%jUNo(YUIZh?J<Qkufo&VSJ{QTxcMZvD>O<LzHtBdbxKVPsq_UhcoRXp`N zy{<nWClv?oc+t(a{qwV$lU7Sx%n}18Yh`LOZ`_vAY+}3d*7@C>hkv_E3oUQ^!ZPL4 z;^>?(_ZbrXAFtnO*g5mkJn@*m9ZBmwcq<|jdl=W8&`SJJHr1pswK<?ms46l1Sm-R{ za-OBBH(E4QWSAZ>$G$!xX}j^tteGyEuP*MKTz~1YnEFb$13wd+EpJ}8jnwowH1|oX zUCyQ@?)BGn`}z+srEKrdXKQMV(eXJTk|@IAnJ2KtVZqdbwoV@|aW1wQ`ZJxjoS!o3 zhscZt?WsN$799UJDhbV<;IrjJocPoIVb2S$Gxe+Pzq`{bTXF7FNv*@L7tV@2&at!X z_vYO4d)c?^9rif|AA9R+EZi{BU=DM*KpP9^tVXFG$&6!mPu?uaw@8i++;N9L%ZusS zjMfM8X4%X){7&2NX5Mqd@4y!W=?8o2xAZ;S{bR~|83Etcck^~zM9l1BSGmo`A5rqI z@5~nFlgAV~b~F`pXeICFhzdRsooKo|qjS;eRcvRAKE8gU^{)Q=som`l>#p^PA3W~7 z<JV#C;;)?z>s4OmOgT~=^zWKcIomn+&z1{pw;S&d|0X-Z-H5|{qRCD16Y5jM9Rym` z)_i!c$1~03eWOG5t0_B9&5)nhXjpwo=JkyyyRPqEQo%Vb*ed<a#AmBgrar&WGI80# z;!Mx;w;9;J2Ndi`Ub<?Dcw7DTlXE`L&pugb@pa}FtMjMs>zlEc^`y=HbtrSidx2-o zP5A=%`Tpk>oH?F8W8dl34;Z(wY?t<ay+U=8(=VpzPr6-SrnesypX_vNLRr+3YQcLw zGg_q?Dj9N{_)9F(T=&E&Zqt?D@nK8xO2;O~9g{fyJNmXSUb1sh*&&yESGnDOtf()a zu;Bj|X~T#B_A0gS|2|xL7uw>~TAe&C@cu8G8_AjP%meOcS?<aE|8Mrn-QNV*w`4zI zasGWEw#aeDhdx(^qqa9Tw^lC|{dHyMk&^pY9?e_0Y@5&8>5+H!-=w(-NM{{kE0^DU z=4QQl{mlH%j?_P;EfwxX0$V;T50Le~w@yLbp?;_CuDxsHJ*F*85By|V%<xq2+`rD} z`ckZFyr-YmzR2c2FLiI>cinll7vIiSJMXhd=BMzi_<mzguTV>oiE?*OS(V+d$k#h% zkYA&`;#6m|I<wo-7V|f=6hvf2x6A(BtF3j5q3Po3GY>M;IlrU`SI*b{-YFz?tv4!O zT0kLue`-wqpDl0HnrFuSe0%?B*s_qHb%q*z0s+fceN5P-aB{a+geJ?q)YX&3BzUuI zP9J<UwJ<05MP|9^in>{@I#+We4O`Og9^ai2@qF5@j}bzv?0CEr)5VvqXulh1Zuu(m z^=sGJ3QT9Vwbx{AJXCRXw)nfNPZl?>nB!<V|5SbErLrpuS?}w2XdXDVN$JMXb)qgj zLVFoi&J{*66dwI!m?~VT%f#6Co#TBP(~gX43GFPlbHS686Mg<oIkndIeca)LH50s| zu88buXISE+a(2ey*)eM}PSj-7x<9?Fb?-{DWaKrQc@q!U7-_AL+UUyq%7J0a&I7WC zSS2=iR)4TNk{+dU?rp>T`1<IgE!ih8+MMhC{5L6W9j|t??3d#^zI%Q2QPAz-S-he) z%JW&c;^nyY8}GMi23}SUzQ4?8;tGAUmFM>}d_A~3fBN}zKbI~p-plq`BQ)H&MrB=< zzU;Y&$weitrb}kYtlfNJ!R^&@H=FrC-AVtnu>B9;-6^ML6s<EXKm6M$yWpCpbp6by z(+$NxT3cq#E1Ej@cG}r1v-S2{dHCo&318e*cBOgtww#!2{(n#YIXi#8?+V?h)5n=N zi`|~Mrswc_8?Nd7LbGP9`e$JOds+J8iYFT**6QBgG3D>%<FhZQU#_&ye!cL3s=Q_S z%#*gy^QNU_zn-ieeR$gu-QExD7VY0=@GWLh$gg_OiOX(X+cW>lW@&!EP1|pZFFpF( zM(uy*mk&kvJF?~<Iw^aZCGN3yq#fTbIkPKu63+_W6j*&QSu$Iz)b*5}x%o|=hBTYq zGu(WF@AId-Yg=eN@mZpz>%B*5rCG7Z>tf!6B`?%govuvqdf;s>+3~dQ^N+uG)DnM1 zti7bsCR|*xKWtjjGM0(zNA|4^J6&VDYvv!Tp1em-@0?H8pI#R;(?(Qm-3856D?Q^r zI|j@Mh*z4l^z+8r(6>{?!`eIpvd(55+Zo*VurEVb-rMQ5!`sKdZ@>S?UaY<&3tHnX zoX4nIZ)9v}ggij>HrlseX1n0t=iyrz<-^*SMIP-}dU{rd=?G(y@TLO3NsVvTZQ1AI z(8JML`!T;<^k&NUGZSvx-kLd;mHSXu+Kn8u$k6v!AG`D0^BQFQV`qMtz^i$oZb$uj z)%wT#<zGLK&uh!yx0rEDm(`(y&jvkw^`birELJb-J$&}|_3Kf;qt|M_tK0F@I-Gs; z8vc9Q9F5VZLnp4DRUUPC?zM9t);88N*Vo_ZJ+{C^E&NcPiqgN-&i_AlwU_YQRQ%K{ zJzKhO_IsC=FW(ohy`;2Hd+QqQ^AFyC|G9hVmAm`z$@KnQ?szms=AXn|rw@lYmNYF~ z*J_~CUZ1nqsjK<&DR=F|`>Gaituu@~uD`lUG-1=(tJ{|zo40o@mzkew(sJH!vFko~ zZ{}Qn!cWv`JL`<BKYxl=ZL(js;==Bgr)IBC(+*pB^wOy;<@&sBj0<FB`qK6b%Jpip zReoM%nUM5*_R3S&-#(Y<yLYL>Y~M|vkab%=tv^>$v*cD+TfKO&OCifli8~+uA6(>A zH{q$@Wa)dxQj3h%{rUI(L;u52=41yySEilOyE)C9n4A9`pKtd}Lhba^m}iF5PpY@? z+Lpic-MXt!4U5<dByK)^v*zlJ6c!D+8(uYS3&Xm6ou4wyp8adpPlv@@W=8+|nR?w& zK*V)>#(Tr>SG=w|CmYCg)F19x!gFAvAYYP0TX<7L{z5*k#@JVfE*DmaNz5ufaAEDi z3-g#;ji=qbecw#}=w3rJyDnqlDdqE&J2X^g6n?+4^=G+!+6oIto&y@6h0g?a3Ct)I zGMW={=xgKyHy-ota+w=tGufX_@X+4!nPbuyCb!(fO6eLK+S_C&I(ry@x~N@$N&V}u z#~wn>MStd8G??CUWYR?A6>C{-|1WeCZ3#c}Tk^#9NSzM%RnuL#?xc1m$QgA;ebc+M z-Ii_1)WlDzT|8(0r+!&KyDg5dK7()ml)3HoS3gb@$X)m8HTUa>uj*yRT3>}7i{Y9$ zo%O)6Pm7ga=16+%YI^u|lFRNa<C;(ZEUwr8@@Id!?Zx)beGl5rc5eRpHM4U2Tj_*_ zT^nA_;dSP&k9gj5AdE*dvgn*@eb+46$Y1(LLz}O7KfSJN&DnWS%y{O~nQ~Twk8@6@ z>swo%FPb~4?*DB=Glz`<))mveekH%WaDv6V$nD8_jS`8bOBq?7=JQ=w?|Hg_^T4ZV zR)-9IC)Ur9zj#JwrkZ=XtX+xIc@@hZr8&t~!g8XHI<>36JSgCu7aVb0_K{&ssI%3t zzt^k|<}=A0*e<Nj)55ir|Ln1EDZcyTORDx?dloz2{MEI!m0?$U7wk=1t0T-9R=%8j zuCwlj8n@$&aXU?4&%gMiuKD9#t*1AgAAjGH7M-dWZt#n#KA`Q$%c#nH;ir*&HRj@9 zE&H$To+c_a#k$I9-n#idbq9ayKl%RW$@bd5pFAsgW`BvYU{>8_Djm->C0T_}YX*nm zoX9svHw(u{3vtgpBJ5LhJNo{IEwf7JX?^9n?HX||n$<3Q?+TBYfUaLhj=y-Y=e+35 z*`KUFyKPlBPTBQVFfOEC>O;Y|-)maRZ%2P)SmeEGm2%p_v)L!gWheY>5MTIW^NR!i zj3;<s_rBh?r-5tA(<f_<4F1>&pWD3o;Y&&NH76aW6~AFG>sYSCY^iwEK-|{stLx3R z4zfEfzY7|D2n_qOV#^s37q&~&awngkDtdm`lK(1Udl>rT#WsBC{BoMJrjoC|x5MX} z(A-V72b7+qO#HEM`h-K8o{yZ>SzZ2Lx!ZBEC{N{~jQ5$U112peCOgdV-X$#**tq8M zLgrNGe8zLWvjx7a^EKlOU2x;}qS&);%loD$-Q(GMBG1%mmqPUw1MyN%@zmK-$Fk>s zI<_`vp=@t;y^gYd?~c#idpDKtse92-%2(ga`<&-i?*_eu&uRyfqRMPPusp6kR^Rto z@CJ{h-~~nHPZnpk`hB>0kU4Ux_bQv32X!jR_f8xVnDYF~-?|NM7ys;j9=?34=Vpg_ z-7S0P25!Fbx8--{PnPn<-~Uw=S(!H9l5Bm!?<xOyV_hn*K+%=@`)XZZN+q6GrGMy* z{PARUTK)57d(7;=&c9t<-o@N+IpfTxa_LPn&o^Z8Z>~s6@S7AHX2$JjXIgjt#jM=7 znr}^8xxC*^IB~(+K$9Wkx{T({$11YlH>tZR_x`F{ux78ExQLN}<nC)W<tj&)t}hVY zHDAVagXx5*+S?-TJ%uUxi)~I^?38Igf3~pVOrg({ml^`~!eY<kmRTGZn!9tY$QO%q z&lR3$`An)@`8u#~a&qhL34Q9XY|2mUd7gG}wYyONtF7C2ZY{E_Ir!$Oq4(@XQ^O3h z^_~B1VY-$2Tq|R4=z&A;jhWtVJXLzCqnYP0!&z0KpRGqlw{!Y!c)7DabL*iKTkf7$ zwSAYk@O4i?KfhPC@xk``1o0O8mh6`DHRmr`&JC}c9jP|gWViK$xyzWQ2~XOwZu=SW zy;qy(+}|be$!&2h+q+}IJEXT4ny(Em_qftK-(<pva#@cGFNIzS$uDMU@A#tMI?R6K z@cgmuE6#PhY?3Zr3_HKa{8L2gyhyKIuUWl5By3%?RP3m#_C`Lntw-vQ{C`;gH*d?e zxOBNA?KN@6bNBSRrXH-l8qK>_?W=MAG}HT^iZ~N9HRrRHUiSKMXVd1L>U?F%N(n2K zvdusFdA$p(x}37;<(5;8Ta69x&*7-CYKf9lpTA^z^NJw3lpSB!PCq*L>5f-MtR0d& z*w4mfB{?NTS$>>uwf^_3mg&tmP8MxC7FK_2c6iIAjbBqXOT7MV_cJ)=y~hsT`)42f zd4Db6EE;R|DEj^UmTfnTyT2EyRw_QRFH7H~`S8-Rpy0ZNGuQnJnsm?l(5vTv?gi#X z+64c3@mjE;GHB<0%gX(l*S!|5T(009etAZ1pJslcRDRcl+dHo=7C5In{eZ~i2Zxq~ zE&p(#C!zlEoY>Nx^ITc(>E<kX{z7j*myXZgxJP%USzIsF5?ygiGw5br@~=rT!qfOQ zmaSx4zm&6jqg}?Uw1e?8+hrvk#lP>&d~@^cX>C=JzDkAdokBJf&g6;xSkJaGU;M+J z8(EjX{Vv&@(wX(tE2%onZ)wwP5qGQOi?u%`>d$UYOL`g^p>a1nLapT1`RB*<%@wBA zU3ePuC*|}V##{TX1Opx~-Ff(Yc>OQlr>`^PrZ+k>3NspjF33=2F|;%{nSQ^RQEd7N zW=5C#=O6yxP5yqCKf(Hf)@z=-kGH<w8~7mj`P@@_<^9v+`J>t=U$Z;;e`CL4()#T` zV)~bDF|{{)pkwjvn$(-phVwJ;=>#4$@9wWZ^lj#CzW>gXB-z{<z86fqZPI<~OMggx z{U5=fy}G;2ly+M!G?^M4^VE0d&%ckI?)A^zWcl;m{Buq9T<6NKt>`&a_o6BMT4d$_ z)xVei?%Zm8Q@82V!O}2o<y9NcN4bmK+MS#)l*zP|OOk!v4~d+|k5AP<l|STi-%KMr z_WI(99ZwGDuQ*&@`Yh%1nmw#yUmo_CXK&fWWqD1KSu*6X#<q{A7J54bX}XC>vwm`E zzHffik4xtpOX`8}oqy}69^IraG<9ynk-h?-6fYs!6EzPbt~kAacPRVC{dw1}KAgn0 zGQ;`z^=rqszpvtWxG?$^>l~wn#ad~Xyo|JFg~V^4GRdgQ=iP<BZ|3=(GF-6u@dx{> zmcr9#1iZVbwV>PE#Xx^jf4buPvpNljGUk5U;Kg~gJnfxjHrM*%eQ`^f#FFdX=3ZR; zNocCHW!?6q_7zjr&oZC;e?hXh$F=hQrj~<cr*=BWn|%xIU%K~mMBTHMDeqqw_MToS z7+v*^<$d5swaynJ2A)pR@4xI@*;!Ta;@_J(yQAi>Oh3meY30;Q&yGLvc6pSraK<rB z+hez87|jwk*jd5ue14i`V^O4mg}&zZTlI#l2edu14O3UW?yQM!bN?3*Qd?iM@36}M z#+S>ZS)axyD{p@!BfLlS`h&3d!pCMST-5Gy<Da3!tf<{QQRjwOui`bsj&*a+u^;j^ zdB^ugXv-mI;omt^o<5$vS|RU)Y)p#ZQr_zUH7nOC@;4h-$IDcE>&f3>TJ}i$@|=%H zlT*X$8!OV6WxVpq5;x>M?7hT0dy-4`!>czU4VE9j-W<TkY%sBKcS4?#>$i)lb-x}S z_$m5!YH!nlE3?d5u05N0o-0{fyQO%=-Ba$_sXVE78CD6m&pe)f#;2qAgG=&)hb#Us zIJ($&-dP!e#nYHq1j|g==qbgqC^_kh_?HRkIddjVRIjO@XBawXg?^slk*SBS+!WsW zcFM$XzBSwrdA;7R(U1CIHudHP{TdUU45#<j(RuUrbxi)+&&}tuOJ(}J`0$?V&5jFw zTG{!ldZaebXt-!}V72-@&KY~X{nO(8?Kb$$JNHKBiOQ3M&yB6mMIKAM9=VJsvEua1 z8-<RU^H-lsP`<=8ExrESGVxcB>pAKSy#%8+2wUH*wZ5so?cn8?rnxB_EmW>_+Wgcx zasEwKee7pHRdul`n;%}({Cj)rvD-{j%jaf(7duySCWvKm;M?wVU#7Fn&%f!okK;>B zUWxoSlN}Z>Vn1ZoFx%y(edzpOye93CuRzp^p8SV$0#Vlj60I2*wmB#^)}J)U>3)3Z zh1MtGTZhjHuamI8R=RHK?L*tEYD2Gc97wi17J22oL-_)}?@1RQKKg1FB`2^#&izSV zvUK#lB9@*%idH+l_jb;msMzw4?@=PlmL=iKeHX8fnv|q3lft(<>|%IYtn1m3%Dr;l z-HG~<s&bb)c5s+XTqoduVCmOaGqVrZcPN~Q<nX-K`yuiax32mkql<9{qW^bo6Dn@K zwC|*0qV3Vs8vLQUrT5;hT6#|Ce(VLk6HG7ok{<cEE?@q0?u@iaTQ_+I-QBWx)5Wm8 zn+vaXx37ufcu{4(|A<rCT_-Ek@c*G#|GZ2*xm2SxXm0Gy-paPM$M4T!d;Y5P`iq)C z)t}AvM?CgD731A?xx(*dXX%~`Z6VB)TW3GD<mW%C`s3)PO|F)VMtaiHf>WRSX&CYD zPrG+BXaD(oQ5{oqU6y-4dw;V+|IURSmh#~r`dlwxaA$rzmA8o3%kt^XqP5=qPO0Ud zF|UPKv<lp(my63dXRT{Iy<_*B@XRUe!_QWg?|e{I{ifboaFNKA=gUrQv-$l@PxOra z;)d(XEOZ}x{GDX4I3;>{sLZ>Tm#cd$Ph?(bH?uA5+9W2noUQDA%$HC1mI~eKOgM8y zBI26){3ll%zin&hi|&`R(z$grtN%p}<AkN#^s45>oqe|XxBQM>=leF~&RYI{ul@e@ zz5Da4-95Mt$vs+qhok;cv_jWZ-U)kVPuAa8pnE3#joO2w9usz`J~?oli{-IkpUvC1 zcid)4AGXqRx@_JT86v;({NkOKJTKqGr8Wm@vR`pC(hn;6@Vjf<&YEv|8QY`$=C4a- zx~7o1;>W`c8;oMN+SYX%@Fa&Vh?JkZN$tMRyyN%SgD1c5V4f+WCFh<mSMMKZbKYx8 zIrEb!6OU((=h`PVUB7t!WtlVM3K7A|$CG0GO~2^=U6gvy)K1-@Sy<e6bGuqt*zWLW zuM5S^pT%`*U+xvt&`-E2o^F04uVsa**KAF(?VQhE?)q}4JXd!!`*zRnA17=#FKW^I zR(oo5(#A`-zMR}5b<v$M=&N}Imtj@?iUVrup~08fBads%+7uMjx9+vy?1y*EayC8= zwtd3?IPIC$TGppKJbpa7dHIIM-pNr5zs&gca#x7N^o#qWZeQ6dd^b2hW5Uwe4{SbO zx#oT3d4+7@yStx)l|MR$@k&aq_A8fcD6GD4>V>Yx9>(&zU$5d@U;kUnm714QTvC*p zn9DW2$C;6X(ExN?uzJ0*1<Gg!^zN$P;b#J?C1&aD+k8rf=>}WPC#hYP!V$*0Pp3E+ zZTerkDne(|%~$h|M@{Q>5s-S7Iq7Is&DR%M@BZyIw(hM@6Hk1e6XMo>_htN#C)RuZ z-Te3eZQ}Q@+Y8gToU)pI_weVu_l}bD%kHgw^XXlE;;)x+uRnBL|M=m1`}@LO8$bV4 zV@VBi%CZqHSXF!Jmdw^~V$)Us<bL?~bHjGA4vF3+hwYAa?2kFZeY{yS`%LkI>RH+E zD^1t2%#!r8@zyvr`AkvVw*$Y0@9&Pd@%LF`Y??90+C{uytSy|A?$ln3s!zyNJgctu zbW(cc`<^o&epuAEKge(jvpTwtN91b@&qBK|Pd?adJ>jgkQEINVdei*T!dv>!;fsqO zM=rn2yM~!Xbn(pM|DW4!k5qi09?Izxu+ymG`_FZLhKY7ZH46fk|4}k-^WEH}ki~HC z?c-m0ajx@IcJrs6lWPhUyt>0ZZjW!OPkh)i{xv(6pYZbOUvy^kt9mKPPa6AJU3Pk{ zXba>lT*;!{6VKYNHIH#^&6eq*Iq`u<3qw9miU_%2@vCy`DLJ2zx-BO~8MgQ5Og^rB z`_SX}=`59ecm3G@e&x*D5O~CPi}N%G%h#)=N=0=uQ)???8P;Ds5WU(pegC>wJfiR8 zUer#W*e@TjJ+XPpMy(k!>HkXWr=})PG2bVw?2>acXffO244;Z*_RTxElls<PsW}|A z^z8f_Rq1=4eNB3`UV5X-v1o=3dXqobiDad1eVeksKg=@y=t@C$z7O_Rr87Pp`jE~z zIroBY?PK9R4@z$Ap7UO_^z@GMJ%^Ho+Fkesg3Pu(m8?&kXEx=mv90O%(%lsirc3Kt zQy&Ix=s6h2<Z>x3v0+CayVo7zLb3EeQBN-Twr{;V@n9HZu0qQKmg~z~N?QcpT(0b3 z*fo8xs1mp9nFUr^O$!)uw9N%=rkTA}(7a_8W{|S(ep1Hg#`Fz;Uve%~v|8p{Q5d7V zF6xqE*zDK;HmM!F=cdyo<fhoOdSB?qEu4mY_2*Z&9Ms4#tPoX-ym`YkSU_i8;Hv=X zrzihpUSWTq{@K%Q7yFsXdZE4!lgm}l%;Vf%{eeqXOqEsVlk<<aM@7VMhO7)y+Ar{1 zeA!32jl%9}bvHW7_PzYoW@8}4$+c#`C3F3)QwQG7TJ_f3Vpl|W@9h-PD67iiw?_-T zI1Zh(*ZWleE3^4J!@KearTmfy*FM}nZ4JZUyFGgzh`iXf@X<zz>59tI5;K&ptxewh z%PBEp=8`||k>$pZYwlEVdifdo-MYbc_$cq5dEXt+Jhs}q?uqmXxvrJv<~6D2E%ujq zoAru%^5yhHUTsMEV>{vRVX;lkZMUnLt}9ySd{w!(_t)Lk@#pJTzb#Ew-D)Vmai8t1 z@J~7I`=VBz3c4B|ndrRQ?);P5?{EGGp4U4&qr~;}&+{4g&SnVQQ<JJ;6#4#R(kg|g zigG*5vox7j2&|kvbL}QKriQy!`-{A+KObW}u&-Bm%5AnuwhVhV3Gey+^Z)kw^WTdt zE{s|5-bnCs!M-cH&-iz2jh3mec`IhEe)o~lzPq~5o*tO%D)UV4(Wd_=;-?&+_epDA zQ=sQ=*N6`9y|@3>31v@zcj8N@{>ytuuWijv;;8=>utZ~V)DLB;rK>w*tdD1D^`7wB zU240$IQD??+iH#lCQH6uojG&jHq*aq%VH#^K5w`+Y27)#;Q5*JGfnQCm)f^==549^ zX|tjapL@M=bJy!<)!j2%IOGbCuRHT^$`uFyB`5F9I#!UeLF4h!D}Qv_oV89ZKg{B= z<CBwO`MHOcJNsql?FiT!x>V~H<FqXvFE+^pujq|BeE<2^MSI_*J-YO0(S_%dL6cVU zoGE;I!@+_}^!|~!+Ne;^#Z`U(T&AzdRO>aq^D*v1{n=ZZGhdZm>eoAF?d85td(r2Z zG{3w28D_s{6-2F6+2^%<|A%L_@4rP0oHu!VUAX^cZJ5!V7glR5G}`7rId*GN&D;}0 zni?G+_Gt?;)*5Q{7jBL?%kQ@M#^kh%FP1h+7)CJa8XS4evUO42Javyn3k2RjU;Ie1 zb#J5I@q;0~x{U4hXFnDFf9UMVDOvL5`SJI!&emURVsmxsZ<V<e#P+CFBkt*Bjdy(F zn^`0@US@7Q7^RYa(N(h6Wt*$}>hjxuyG-sHO}rwkp7*qRg0$0*p!<)wTKcNaWc&~n zJFxu!U7<gvN7lGyXZLOjTU2U!$>ihn1v>>)i#G_go)vB9cwzZ>c51x``!`ExN9{9B z%WS_1-2E(m)@t!iEk)M@bpfkg4^#!L7PL%Pc>bvN`eX~O^^+MSm+xB^EW60m{^o^i z0oEVd(ghE$l6G>OanwG_J5x0!{<LWNqpP>4uWZu$=Nhn1rA^4qNUOK)cejhX-1BHb zgXz(nI;_mwHWnvJdzzTuHalcm|Ni#O=`TJWUe;1S?U?C<t^NnHX9n+>*q~-GS$}bX z)Saw~`$y&)oMNc|%*)uKvM=M+(?*rEzAIMF+gxp<l)Q4^9HExEb53NhetTN<;3=Jj z?)p1QPW4O0yR6>#A*^cQC2fDk@-;i3noJE(H21A|s;}`Y=bKjK^*!}3wF)QMoQuDe zwR6JE#|y74JTCSut5N0O<<-}mwdZyjvgZ0FnFNb<|MaSyy{d&tKyK2KfQ4HnCtJuZ zHSMvQdA!iY<81f)%1pJo2-loPJn1Z7B$V<#GQ3W_&1_))<6$pf@v`^r8P!K?Kcofz zUALU+^~BS4(<cZsir3%x^VG2*jJ5pp@}fiO>t@9np1OC~Qiy-C(l`Bk%rkg*cf2{K z!kQ+ScuZI;Gt6}RlEtY{&M+?9)3m!#@OrguBvbahtv-e}liF=BahIjWczsxXW39x4 z>zk96YkdE`vfh>1_I!d^sJ8ve7xy~i=kNQa|1r+`0vB4_gUP^R^2BVlL?bigw#Qzn zoqftXO}~eSWUw!)oXl!s6_K#FVY8`~v5d#6Yi?|NKL2mLfAIKfudK5Py9`%^O{`J5 zUwc)jUN7z9hx0lo_3o*rmc*?4-#YXDgP)84{rj}-&)?}gMHqAIzvjB@zv=#Q{IUG* zKd-k}KD+(>;J?V5sf)M@V`Iv^X77+#y{PQ;_U})({rQ)Ceew^1mbiVQi8nW-+z_tS z*Iqr9yOnW!`C4Oxhf?WkGH=SGUdpup)wt4q{TI)n%J%Q3A9q`S-nm`+@Pk{=ep<%I z`Cn`imwmf)&%_B|e+#bpCcR=(J*#27xkdfr&%Ju(k0icd`YV>GEjwS$hCTbG`l)wz z%O`u;iTd5<31LqXDtsmzr?)I%UIf>NZkdF6R{5u*Evnz1mvW!@Y-|6!uPK|RKiqcd z%JR+cri7M!^sXrXq{SY1Ib~+xl2?8A1Lsc2{87En?%)o_rpO4lbxv#k{`vi_b<Wm$ zx5({vyxG1%a_@BX6vV^}Qd?b)sub_tv?(t6xsr$D>CNwU%4ki0JnwX<R)P0{3q_ow zm#*FoWwPMkac0%M?%oMMYA#wV-(()IEcK^%S;sNa^Bi$sJU7<pZ<cqceNfxgc_*z| z^N|<-1c8U9mh~(7KL=L6-+!X>;KPfxvzGQ=`&Qp^`|M#`p`U-hUd&c9Nn!K-V$a+E z*Oqnl`Rm;qv^?zX!}VXqI^L9s)IYYuc!_hO_QrJ?92q<Xt3Mu+?3Y~psc-V}#7735 zCabwl`f|iLO#GBO-L1aj&*ur%E-@j;mI(@WJ)QkO%EdvYa1zIJ(d&AV#W`!=zsxR- zUVQ4>xl3IO>X+R<{&Sz9-%gS8Q{PyZP3h_S_xzgs@%=8PR;x1nvxBTEJC{6&vQ?SL zXXDGF+8wdyR(J>NPW=kUD`H$XT-qcO+4jaXbI&VhD=3_%wjso8$DT*3p3@#~IyZ;U zdpG0DJz5&-^&C$>FI3`LF8w}~=kmuHL60X^xW@b}{P50vC)3G#$Dl>iBz4Yl%E=X9 zeb)ALzv!phC(jxtPu^aX^vulZ+v~p7Cdra~&WaoPzTK3bSZb8P81P}f!*u7|fEn3| z?uotoL+)@ka~wRHnd8|K5T@r^rR}_=L*PbBLQKnEi6w<c_j4>YQu-&dr*ioNSuU|2 z#>)?1*#%BC+O^#At(V)@=z6z`NfT1-s-COciSg)Oa$V(a62+l;XRV<Qi$Ytq)?(!{ z$5xpo%P$>&Y+XBbZyTfY6xPkQk~4a)l@`5P^7BsMHSNv2eri0Jy{+dW=bTwZ2k!)P zY5!GS5~<S>cKzO@t^&?Y;a`m&pWb}Z$GzvvdZtIE^|k$hqJg0yZBA1UmiwpGEBrNS zQ9CO1=XLBhjoe$aW^S$SoU~SxcW#yRhZj?4R(`!vF<&gcbpHo;R$a!>FA*LG9}BLX zGCQL{=bOL54Goj9HOn~iOn9R+46HdXxY;cWNbGvq{e+WA-!1vc#Qh~Jt`*PK^$?4D zl=;LV<NO<s+xwDVerubvBzxCMIhD{aX*cROf84t%Ez?~lwKM3_<j9cF+c%7#+%w+6 zS3b$&)x8(f-~76edr{+-m_5gpQ*QA}T>WfY7tbx)xI%j65BKnOdyD1z1b46SdbF%n z(Md+8x*_ph!G`I|rE4|%eJXXt4f9^hU5wi6mYlyeBJr(k_q)9gscVbBM@CP%6s%z7 z-{v44T%XRcZ|ld{)UtlVoAc)WO=Qh`QQHva|8S$JugpV<^fLmXP2o~S2|o)2*8PyF zO)_vxUBRTC@U`~I>#&%3=MBy4H?s+?nZs{CKcK6O$*UxDJ9p=~FDlCd>^eN`m=X_U zmYrdVbg5`C%$U|1uySogO`uo)W4m<a;}123jl)|!`RhMNSuweX=H1(#!<%|sVMEMk zt^C8@)5C9xdHgsLvPrLOrRe$I_s=J$ls$TPW9#+>FS{P6XB0jXoxZF;b=BwBLVsQR zUvN+V+FIDF^3kA`z4*q;#;c;Y-p$x~Wcri$N4bP-xti~@xH&2QOo^(@*sl0;?v|&w zrbYH=w(syYQfx9wsuxz{aogzB_hMF{fYSO#(}=q68qN31WM<qAypa0lu|Ni&iR7tc zSGQ)bn0G5G$X1<Ggn9Fa9;u)li_oJIhs0YKwK#9LY2TCX|Lx?lB{e0JdES4T+qeDK z31g|2*ZRU6AKUrKUFtr=VYB+E!6u_$9<6&Hzj|eQTfER9^Z8tRn=a3KqeT;+CEkqw zuxAU8au`>TIGamB;R5^fiQV5kwCbj8^Sxz!`&NX5nfB{aw!jV7`?J#mq^EAQPhFVR z7rE+LLjR?Q&2Iyarf95M_V&l$*)E?$4p{U3cE9tiXkmwtr3KrcS1nmHY(AZdy>&s< zl=tRM#&wI6`lahT%sM%K@0Kq8cd7p6rOlTF60J6`+A~WrpuXMU_}d@yQfb`kXV3L( z|9#Uh;ZXM`U<Zr+EJH?nqsLK;cqY_ki(g)MZsV>Xl}XGI#p#7Pi;J!$Y^?b;;nLbg zc`m&<Ryk9zgzPbXW^nV9@*|t4A^ui9e7jy>oO*Mf#`?4DTJDjIZ>2BIYo1&ZzWQ;# zO?^*F(ejQZON3MF<F6XU7(b9p%jkIdII7^f`s$+^<+ryK>0R3X;z{y%!62pdcS_68 zZuFQ|dD7zcAB}}NJ6&a}<~y#vR(#?A>;M1CCWx^-E&gq9zhXhzT&?>}XJZ#9Z~1j) z!IK+vE+2D~+GSvu)AzFG*y0&^>fD*UT#4T8)9l4q>YvPR@tWdrZ*j<P;iKj@%XXbG z(Poz_2&m-~t=?EO*NQ8O{mPy%dxP&Ovqs!cdAM&?o#aX3tAfV4t5hz0-)Uv4&ZhkM z&Z39c%U$LhCbdc3ax3?f3hMUGT%Na<Yeg@E*@bn!7fRk;P+7X@?ccdi^rpUOR=C%+ z*rHg`d6JIh+54~SBd<8vlz6XEIW>EW()a1_XY-!7*tw~^py=xN85}F?rIH(}=g)q1 z^w(y~O|2FZHFGX|OUrMYT5-5oZc**ehNecFquIGzgikMCb7o?=Nx&U*W!1GZ#~wyT zKafs~-tcwysRz@R>suwS3OsalrMMHf)Xq}-ldc82S~uf-f{kClQ{Cz5{UK?N?9!UL zm)@&`B+GMGXt-Y9w{Uy8M~K+(f5CC38DHm^O_JJ_7`*cJRoku%mFb!r4O`aT-}75U z<nZT*&;8c_{l5Q?yxEEHZ{RtV=?3bI>h(sJ#;9$l(|u2Nyq&jxg}jD){z-?0{M;(s zPo^!%cjOCxy3Y3LgunltU4oWq++4TrB-6nK2HRXGirioF>(l)1y)%BDkK44HWxja! zrKca?|9X1;*Kgl{|DS&T^nCxbZqw6QVbwot;?`Z%HJj$mb6V=!>F3|h&o-=o*=|_( z_s8|;_qBF>mAbcV%Z(r{Gp168U#UHNrG;znM!nj-_Wb$&)!+Fh9Q69R<Jp|o(I>u! zU!Q!`_S?({k_mr%%dXGmQ@Gr`Kw|Olq!j`)-D>MD6rVWpF5d3G#cJ;ER{au&1b%@l z|M#wba_9I~BaW0;(Kn=wwH-cs@suvzlqz4pW!7bP#$yj=aQ45HsmuNF&adE~r^$o8 z46R2(UVXQAW_DR~XGw3^=ARuO*{*b~%D0v&I<s3#tA)XDrk~M<to*;)k8V6!y;$^y zv`nJU>bSF+QyAZ<YupQ5c-E@$>>Rcu_NPwduFxpn8MXh&jV%GHm20#1UbMTw{;4tk z!P)e><azZI<1&675`AvJP9yAn+SXHPm&4}!?vb`N-?$|??8Syn2Lzow?o8!KU-W_V ziP|)lBk$%aSRIs_J#(|!FU!r!YzJ1I(%6`N;;GrD&TFkXT#pMDq(z<x+t(?nF|m94 z=9t<qxA@H_8FCA5VCw&-cI}41VZZA!QVVMH%!=MOvEHk7(yh14wD)?la?hy=O9YIj zG1okJlp@Hpb>D&Q?RH0Q`ZU{GT73JrJ!8+kT9r4-Y@hm<#mweYNGg8x=V-vssS@QE z+$|J?o?VccJoo-YAp?#^L22XL`zn_nC@=U`nwuyb!rLgaHpJ%koT_az@4WNaCX@G# z&&8wWX5}h<zt(2C^OmbF)gR<sl_%1#93rq*ify@aMgRGmbq}m;l&fDlI|bi3w&Hzv z?w$qg<~#zrkFr9xaP;*vfAGlt;J&wuE8t=Oj=9EC=@Na<p8Wqi#Vg}QkO)^_2*aPy zt&`@=SyCtJeSzg;&7?P~!5^p3KU?GS)Mj_tOlLKfjERdr2vq+(cxz6rwfWn6<tr;C zx4&{ReD(hCjL?M&mb0f_eXg}{gT;AQk8QC>x6BunjEYcu{$Txc9g*rso?DtEk7qD# zxcsy3TFx%r3IABMPj|i1H<xgZbT<k}{Qtl<W~N7)WZAb>OQRp0G5i$9#{IhU-%6P| ze??eoMLn~fWqb76{~vwv>9^bUNuHeBHyYGCCp*20khrjLrC40$(<cu~ul^4_s8nY- zQ>Luwqeu7MsGBMWcLiqEacRFRlu)kX-Mi|9hF$oMq`1(OwCbzwUxU7{%QtZTY7_3i zz-3)YfbIF6O#0S-TQlx0)Qpe{*>RqA*{W@=yCtfbnS1Zp*X8o>m)~l%Zd>Bi>8H20 zES+*-Z~d8Y<MnIPXIgF(HjUqxKYh>YTiSJt1SemyxGM8#QnT#}ZPkz7F{#0iBpU0y zS5HzsXWTr+d|kP=$U~MxMN`}#|DE~g_1(lXHL{x`uNkiJntl4-!6iXEH9tO<4%fOT zYm%dR-mN|U+-h}~la;;qw)A>mK73bp;bxz8cdQOS|E)2_wLZE0%+&WYt2Z;+@!t-z z%}M^RDcb#f!qJUOu1oGM$*kGd*B17+`MFHtjN%!aEG|EnS(wZ6wkY^`Z`_O0i%*;u z>SVv#Jc->})@pXQc!VEgy6{20YnBF^wnV(_PR<oPBQDCZ)Xsj@fp=4<mM$(l9sW1B zvCjV8)X7Z`cE4X4mANUfKGEjR-gAKue<ylf4UgO8ed=fQ{-0+pz2kzkE?YWo@2}eS z{QCdLdrlgQJYcAb|N1bmvOeo~{T1ihonCJ*TCSOpc-y4!_+rPjUyS?YzvMn*U%{YX zV00jK;l9a#HC*JypJ&}EO<Sw@vY+!~?bP;&;&XjjGak(gp4x7ry6yXvKgUGtg<5(2 zB!eGnKHk>+z{xh~gXdR|IJ1|MY>SW2QC{<*rtO*9Z=H9%rfa)0W;k|;Oy!o?du`8= zE&DXAGPkkaQRdf`UZok?Y+?Il#tMczi9au#+~9Iq?d~qQAGskP_Nz1~v%H*cFd=&P zYzI%%fW)^pCJx)asXy0m<W6a<bysh3E~=mV>}A3#i`fzD`G0MhUe|E=etX=Po$sfA z4`ufMQ1$QOMUJoC?>5Yu8G55a%Ib2tk<s-tb544!{2X#>uF3p2`?C_-bojou%M`5g z3Xz_<W5X@~#tM0}mi64NZV9UnZKyrvdA`9b|MZ3Vg1Rvx8JY**T)A6OKPOFai~sqr zw`b2{|5(2{<m0WklS_8ru1jjT@XXb4v-z8IVFs_u&)v_LEV-f_FR>_gw)@AE$MqW2 zUYlH3{r~J_*yqc8U4AZ06mNLr_;zW{=c5^Yeb#&zQ<crL7YXUATdk8iE2#A}r``Dd z=bOI2I@iew^YiV`ys<Xc&adu}(~_=<nkT1U(u-`nFez`>mU`bej&}1kmOZ@FI@P2_ zwC47&uUxesUtL<Z{pRA-uFEH0W@Jn&D-NB%?49zA#V2gsjb@d-GqU9M+tw`6tL^Cj zrtrH-yU5amQ%cOIDORyJi`+GT{d3ik+eZBfHwv~a{KC2ET=!>#7a2BNj3rB>DtDJp zWxQJBVJf@(VD{_J+jnlXs^?z6k!R|^s+FBb+n=<t9c14>!%u2`^TWQK$K;aFEco>E zh0Xe|%>u<XH?OZx>ie}(i(Pzrh>?4eWCg!c=&BjdGi<heR4o%cEp5MZxzRbZ71uLo zX2%*G{uA_f)}e=61j4`loE{z}XuOlh|7%}b%Z!AwS&E0B&s^GLcgo<G#oml1^}F`V z#QL5n;8UJBQ;F~G&1X(E4$prcDC2lJO}{YGz$YxJZSyOO=fRsRk0*46O*j2l(6mme zeQuXRSBRVca)wvclLemNjy<{|-*0k)-kdL6jbe-Iva5~wr_a)N)7_!z!qk_j(^hmy zH_|mcH1Yb?l0zN)qL1o0mY$kxDEHRU^LYJ=<Yy;7EQ<-Kkbd_wDWP4>W@+|ci^VTZ zw6_0Sae7JH%eVPzQ4<+gCto%Dx0JP=E3379Z%gT~^(InbJAbD0FF*V5?rM?D4JQP? zyZqgGq55QQxuEoSUZuR!c@Jb{Zu0iMiL?GRQF@Noo!vKQEUkW&7f?Pw%g^?X=&RKe z1>5qAtVP}huYO;9f7RrdHeEk|&;Q50=APVraPx@K5VDWk(iCN4>ueP4Ao`F7+cPpz z+JX7EtwBf8?^Jz#yNdr^W;vfDlgbIjpWhd{1g;PIIz^B@f=BA|+DRH+j~**W-nKW} z>iH*lcKg{3{V654U*9iy;{NB)(trQ&9)J7WUSqGO=Axdg-xc@u#9B5bZgz7Kme}6E zeZIZN%XLAw8vffa|F19pzE<j};9u71AJiGe6+WEEnj82<`ug8bANx;CeLwS(+{{Ug zm3n_3@L4^Xx&Ob#baf3zb2j6;JhxN&+fy_c<rx_@r?+S_+Sl)l^x1YH;@gz7Czm>W zelCA{di}aPbJ$d;9A;ix%zACEuv|>Du;0zXg{4n8x9}gTwq2<*cXqRH=<Y{8v#Zi} zW;_s``{dRu=E}A`T{pu0T;3Y<`$_R}KUBT&PG5ZTcaLq;QtPDO>ffEavhN<xJOk;R zeCsbWc&6%|7D=C}w`NjgOTBLD6oZGikLoU6d_nJ#tViRKS*PNA)*5n2t^aka`24(s zSG+BQyps=$<oR`Ky#BcN&duIE&YPsGq7Ey!i}dV0)HGkDbC2oU<Qs?Cemzl`R{2_g znsWx<{I5-xOFnkpn~+#;w_)R(wF_Af+qUjKqP5i|>y=<<ugTT>X--F<%Wn?6Q(vWe z{L_jD2fiJOpU8Q9duVP(pH}i6Z9cDKo!h4In>NbvFAO}lJ-$uCtm5Rvsp1auJWp9_ z!^)mb{qSJ_+_{lQW=k;Xi8=0B`$^KGNr*o(>1DZwLz_zYRy~tgUop?uwkE5ul=IbY zOJ_EmZumCjm<hN4>WG~M>8DS$AD^AOX2Rb3%P-tQROggBU42pHDBhguG2_Z&NhP_1 zr;V$;F0aa}Fnuj#Tfbnr_-xtPyRO;tw{8$}IIn5AB;sO%VC|<ntG36<O4RPVr{MiX zf`8#=r|mzls)~Q#YHj4|`ZMTn+s?IXiv>j_|EIRid3$(6@0qxN$L{HLYQ1c2+`BHN zuvyOLpjG{<n>nKQ^;RXCFt_hG&9Px0vxsQ+ImxMIn~WE(np$$j`LK`iAtm9(rBy|) zyj<<acb#KdHShM0?-AlHQ#iEG&Ty37eepr{*0cL>J<+`MB;e#P(Lc=E4=t8BE6l%R z5LsZ`BPly^lR{3z|AWG7_e^lrzg%hl?cc%kaY<4)n-BFws?<yG(w!N2?!}V$*dGVw zp087mS5MfKpnK-QQkkY1o_0FZxg`p{t}@TDGFp6PYT=~sYfWC+ZT4O|_rAjg@$^5A z2h6p$+}V6#{@b2!9)}k7>^pFZRsWS@#u{#;1bd597e7tyuSxjTyir9^;;GlfCW9$A z6IZlbw2NI?6!`Dx_ZfGa-qhQMtt{Ai<K(n!XEy2fc$_ngu06gdP?@<k;pl4jJj?p} zTHE)t9IX;lw0<`nbi93Ce%FH8OIdioeE)WSMSFz2>K*m{-@INwk8)#N&3T#Y^%usp zwc-!&9FCZo_G9Xe&$}3xTsmU+H)HF{Wqy)ZulsJEB{MOp|K_xxc9I2oOp#w~Eb9fs z8YMSe=yCpYg(c{9$6KH6jg878)308;{vo5PJ*@fMDUr{L4L<9qoi+LL<COvL*=LzP zn#t>f*6mvtpmZzoX@ldXEqYU?tetj7)8S0Tn!>Z6SDEj-W)S>F^S1w;DME&=ZR^(c zUz9J7T|9ki?Vkr`CvuC*KRnG{u#N3&1+zly`ueZ4_>L?z`MRXRv)1ES?K-#5X+JOQ zS+A8RcIkU?yXNg{3)0TamXvomvvpT~t0Uun_K-LcMFozhm$<gZzS)<&@LgY|xqOvw zdi+_}Tan8a%O^_39`ZiNXKYeq*S_6zPNa3Cz}puyH-%j<nR2&a-;zCP4XeLicVu3C zr8RD5U~EH6{qC(A8@zXS@ZL^U5%BKht8$DjPMp|Zxatgl;kH_<#=6au3+razTXTL& z)XwLno?V$L(!2C7UBAB3fAQAWcN(tcPfwXDta$M3#JbfxdZm_b{cB+V@M6@l6E-@f zUc2X(%Q8!xPqh7B+H&~n!X%xH-Nm&U&mL*#y??aGL-eoR^CZ#wGxK!KYr>2S0#+Yp zQ2)8u)cMfjJ2w&xGOpbb{`q?o`@*(6Qp^+AGVYlodW<h6e5+~MtKf?t+xXO&e?JUZ z%VT(Tn`5Zri-iFuL8@nthlHEzS8ZBX$*aV)xMkY2i5+^kl(l?QKg=yp;kRu%e@Mlo zdSzunbHt|C2X{0vuCZ186;p3^a#6fkKrO#Vwv#=>_I9iJ>3m;9#LK>3Icm6T(gC5` zSA1OOltYp}{=RlLF!9tCw-nzeURD#9T)ppcHe(ml-jl5N_eovcbm!KV1(xckBlNcG z-{%XdeRk^mn%8+T+mreGw4yKab8j!Gdiyc$>9<>nQI|7%%YBxgs{OpcO-A87Lw&=o zV_F8^HZsTEjJe<>{mtw9)RUHpS1%;L{Z*r^tex)6ajRG;*!}BauNQKa{O`SvEdEx0 zKR(Cy#KIek#n0tjt^U@reDUE0*)5+Xh3$?i$#E>MQMrD3e%<dqlMEkO#;W~!E_w0L z<=y@(=BKWjHe3AS>7X3potkQMzTN%v{r|I*W%ZjaZtfP+%kg3K)9~DUwQJeI1&g+s zz5Kho{JoUpb>Snc+nz)TrtYx$zTR7Y&MIC3p#(R##Jf&Op8V_muIxTJZ{eL~lF#11 z&r1Eib*|CNi;FCx9&U`@zp5dq<;wdP?<{rl4ex%g==Lu4;4KPk_xJbqVk>Vs`6O-b zDzon$9ND3J>wT}@-7UO;_vIw%Ey>FsZ@qVG&G+--PwxZ=P5N@y{L$W^Mp2<4RuTW# z?4gqUNv%z5eSdxV(^GNQ{_lnq*M)DKRv5)y{@lYq;o7CVi%k)F_t$Q}sPyVY2%nB% z{(|Xu*I(wFE39{}>_kArBL73j7aq`$Eo7VSb^CJK(g*2R99<V&s~3^KT)Qa1JF+rw zE&pk;mIqd%oKL0H+ZDF7{{8w!XNk|xpStsZ|2H+fz58{taP!);zqo`irzAbx*tv4Y z*2wwu_Qw|q28REMeEchQX@TdmwQnYAmnJOF62ANYA-CY2QwmF0CUE>ZD)-APJ)BkQ zeDf=LmbOK5>Q|Q}+DO#3p3wSQ&pd0>MgO8wCli(YUDq#_&FGFkS@1#5tAD1k%*R*S zm#%e}W=&fD?N^VDwEJG0%r8r94Al}_K35<9JXvF{v{bpT!rGhsyVLAt7OgWpv1nS= z-vIB$29DQv$1K0a)bRMk{%f;hlpU(`1$Oo*oy)zYnXkJ(uaC9(MI7(t*iWK~p=avn zFzj$oU$3Tb%=qC+D%a+%KO*AR&b@s7-_c7;^_})Vmpi2<89LebY+3UDwYz!u@2b20 zYHeE#Q%{WFg+TpH%bYlW&2y=~IBVX%xs2<qZwSh6$bP?Rx%R1-(ku2^aBmIW6eMx| zOVM(}s*9X*QWtN{F?U|wS~aEbX_Dz1U4vcBKPNh?{nDy6-@o?wTe)??Zu9Q%mEN*= z!+!hv315RgccgFG9?4(J(2%WFk+DCG!$sxMPUVOhR)H28bzc^we^`G1kND=TJIg`s zL=o`*<$6N{Lrdgww5#H~*J+z>c&@!oS@T*&+MA8FqCpCbLZTioEkr7V8eQ0V@1N^A zelMr!dy$icc%f+I>*IUo&wRL@kxk!TLWr+%67%`PAH{e647+yz^7qwuKO8mBWO(1D zZ}3L%u*5~jGtNBgT8!TK+2`$fzIV-zznS&l=Qc2(eb{)@@to6Hhd_syZ)|1u^s8h< zo>TaJx=h7Mb(wyp^|C2XL?-D}rmwIlNW819lgkrr5UBVwBVex5JnN8-x$STIxACv+ z`u+8t{0o~!<$}8|6$t!Vxx&wB`i0*mLc4aQoIkoRuyQVo(eK{7XZ%(kJk|7ArfuVV zp7@vN^XoOfPX4s8`>xhpZ5i>+-iLIbbzOhTdq>sq=1=A=Ut6}wYFBYAQ<3XgY2++u z6|~RLO~hhh{s!^nB^Cv1lzKO0I@x7el}?s-QxIR?u=>`oclWb)?^52VVICBFL0Ug# z#r2ujIC4G)K4yG8AvTfERF28QVNKyd#qyadv(9h&=CqKbzO`9mQHM>W(!ZK*)g0gM zdaGpbk&~XY@AY?)SFsj<Wy?REOP6!&<5M<y=WgcL+S@#bx&7@4fu~pJtKa%Jr)R#? z_04Z=Z)`s#vwqX%x<)Nqg=jB5_pD8vYCi&6XXu11_1GR2|MYE5sMyoB->z(aR(@2i z+S%ky-M)bBN0{$v-)pTup_XhhRs9v?k4IkbvQ`y*jG7gdv~5TI-IRu#uFLv`e5cN< zT6c51`{}v0yhZnOdcLlir@T<(hMmlTX(2(jw{N?yHDBx(wEp$kVzbouJ4%c*grYaa zukH$)ClM9->ZjG!jVFIR;(E&G_>2GEHU0}0iucm?tW@1$Snj!W!>N;dmwv2|xgsFj z(Xe&#+J7<aXI9_8&Q`Hl$a>b-y(@pU+_|FBeMK;~p>6xGeHT^jRn*_D7uad0Sfm<O z8n)j|;Y_jBMMKrjb)0Wfx5iyL=E<U?RqXA*wUO=nrnvqYmtNhS-mM}SGcTk<&{;oo z;g_x*u1_8xvvG>rmQpgM#hE>ny^UQ+rvB*ns#LxMVRC-cJjy*kZCfg7Xvy<MZR=0d zgY(y2^f>zTf=<*)&DpbFO)lV!I;og^OHx*P^YfYB``TBQ|MRzI@#_A%_o!X?IRkd_ z;JVpjj`OsxZtr`+Rjm8q!Q=YNIzR54aV!1gpK{qfQ|zPgYtiXXwWL{}PK-Oq|E=pw z!ulQC>bqD=pWaXG3a|a$<5)3YYV+)y^S@SX*t|!t^Q7w&9p47~X+Oj>H7q_}mw0Gp zI79!XRrkL63*X;V@m`w0$1eVn>g^+`N!Qv<OV=Jvlr?iWz9KUEcfp6#4!V{a_q-n1 zeEI+XN}5&HvW-9X&t3VnEhmFpamC&9>(4t*Q%khl9hGuV;LN(ul`rjT-|x4t`6eDQ zZPWCH#f&0MMxf;hs`Un_UC6nSC;ODmdG<cn{=>Y^Lu4zXn>>>WGjx#s@w+)i9{>Ie z=&HD$41GIqLE@I!MH*eF9|ujZ*ZY=qYW`lA9Sgc=n?C&X_Wh?P-ar4S{;#jv`{ze@ zsd)CboK1W8?2BI~XZHH?(Z|ya<Ky1f-|6ApU2kY7`MBus|Ds;QYs>GSIxf}xHF)3d z_4?t@V<HdUn13yFxAbqhSLKmkTeq$GQGP4@`|;`a@%6fwTy%T7T_q-Wtx-9C{nJ6W zpPygXbXSyc9yohVJ=b`ew}k=QH}MsZb{Fl@J^pxa&8g1}Q<rf_=GdMp$%-#yU1spN z{_aC5)jL}K^}p7}ok?E)@#(4wubPXD#b*}$yE;QC+3pDA=2h<QGEJ>_=3kZFV4V8& zvSv&6yXoBvyPGe(yzLtN|Hy$Wuf2lLTSp%HbyCE2`Y9ou`O{Ww3jDJD7<bNN=e&ov zI;TFLIwNN7?LF##AN=l2vC|4a`tpFWz;=@*jn=b!d86_QOYQDFtN$%}xa94Ib2gJy zf2}WgogU8oE#Ce6n?1G{ca?8yds9}jSgW?QecAhMQi*rg2bp$NZ<Y#_v0Q#ze0z3K zc$|;vw{G(-@v%(P!sh((6P&p_beG=jK$S;Rwaa^FieF6Ix}w7S>YnU*?0-EkwjN1$ zU2uQ@h3WPEN>`^j@D}WJs+?p|e`;a&(s_qtRxj6!bIcH`Ij+Y4xBkZb$Ie~SR`&Cw z3f5*GX39C({z)~@a?|uSm1*zpar~RKO@=9~F4dc>?m&oOf&TpUPmA@tYKo6Z?e8kp zi|d^9q^o4vjiVbYwrRB#um)x?%}}z+{oTQJU=^FKmcylmRz4?hvn;u#&-0`&g{{6# zr0{52fvJz}I!ks-1Gc!imVE^xjtdWqUOHEH`otl%TJ>+0a}wt8zq+XK@0Om=w_V3J zJY`oGul@9OR(Pb1gR0Z9O|Lwkv<ZeSZg5#NHDhvo)0Xl|Cv}5O9lEz)wIu%)*|fa7 zCnCk{;rU~|`OM!f(~cxuzWIEHce#$6Q@CkLefcJ4&*N1^zYn;wALiZQJ~`4PZhG{i z%O4s)WKPuDnz$j5A?l}T=+>*k?hCG})jThn)^u?aW8|u&ZO3|5yNd2|IaiuSJht=E zEAXDvzLD*^+ey6}7G}=UjG?8)b5&-QSX<9;IkxcAeD+xf7U+I_^oXhH-WgVoAg>4c z^F5xrXg;jJwByL;2$z$YQK3Oeu2#k!K7Y%<YWaLz)}(s5{_v#ZlT*(A;wiG1-SxMV z&-Gi=!Hr#Q!G;$q`ma=oKJ`oZ(#f#kgx1thmFbVAHU<{-s0C?+Hht}UQ5e6;vHOIm zN>EJq>~lro)plO`AL>pBJeyR-yGC#KrXS4;F>RkuRUXvks$Vq2rmOw9R65Jwo|$us zCCg2D4hYo*&23O*pQ3f<S@Lp)Tl{Z@TY4rx@QA3~8n)Ov-0!x+Rj2eUw?)s*)bBl? zP?RA5MPZZrq<Aj2Yqw)QXE__Jne(e~^?S91(s!9RxLRsAG3g%t$d<6$BXhIB&V!t> z3fuKhT#TJ0l~hw5mou&2=v-3N&wd`W?J6@4CHYzvX1(F~Gbg9()V>-2`uCT~$y9nU zn)KPf%l;L4?={!Yi&|H!Z7NnNheaQrn`Lri4yU%xKHGLz`F+=4Y}~SN=bR^R#gZzL zir6D(?)fHZXm4J9fY<w3%()9`{=0;8)6eiJsu#PzI`ci%IqksF$mE+dYwD*L7g$K~ zp8e2ZmHYQdpwOKyy|Z?GI{N6@hAs73DaEYW=HibJKY95yYKNqp^}$>16>`>rep=gK zgo>Y775?GaOLbXZai6&%SDwAw_;Ybq=yz9c`(+Hra^n;~99<detS-88_s0oITmB?F z92T)+@8`O;dXItXv~#8Lue_&ZithY5r@rXf*~u#&b)UF#M{lOP;f2#N<w1HL{zc)| zE^Av7*e#u=?|7d2K0qvLakkdfyAem%PQB|cIw?f-Qu*sMm*>w}a^<2<tC@srTS#_h zu<+$Gi;C_a%3hl_RbqA4oAynNR@>Xk%VMuL7#s^(ocnf4(A=`8Jzc+d#O_%A(c5>Q z;(fQm`Y#Cqk~)49M4u~p{7jPCc&mM8WZKG~X4%IKXSv2^ZTUDsGNi{yS4ru5z2i5= zqsMFxp4~M!e?OO(SGdX7X@CEDW$#H`Id_-TrGuxg6na|5{5e+bUgzw*^Qy#(v^6<T z%<?pw7+<{F<+<Q|tC!#utAry=X9Po6hh%JD-KMZ>MTld4UTKKE&Xq$id8T;2+C6Q~ ze7T(^#VseCm#zC>sNWYnt!_(gOsdS%t*^8iUM@=w>nl#_SSIo1)N%LcljWvOSiUbN z`1@^xyDF8-ZC4zAy>_)f<D*Q2kN@}uy7+4qDsvXjoc&Jm_e<F-vHnQEWn5kAj=N{6 zZk-ue`~0w2K{xxS1daL&?OBK03oOol`59T(=josDO;Dxw{iStN{DRWl3|||Z{*&@$ zj!p2SI;*o^U)5Z?a>HfbkAj5r!rXa%XCK;0zR~%tV$0An_x-uYrN<o;Th7~@_@lt< zpBpFt-+$_Y>a^Bv?8~FvZtecfla_HzhbQq|{*+R`Ro=T(-#>q~X+^>2kM%$HrmcPJ zJ~h*IdC+ya*CL%&7gtU@dTa6a$>AoI#hj9n-yRx%n|+B<W*@`p*`@}2i!S7Uo^_b% zPTK{UyK-M05{;TmzP$c@QcjOcuPXnco$X%s8By#%zEp$;EZArL=RxkhDOY~aNowNQ zDJrhEp#5CN3*U(FS3RbWMGu%v@+i)Fr2cVE%t0HMjzG46%bP<P+Yc`}mMEpRbNSz< z-)n09;(Y#oJ6yjg=phHFJ0Z+uY&cO+rQXsQWl7`N>F4`yTksrvU(2=EVT;nr{Rb4< zS$A>2S$pG-n5|0LCGY1KF7K<ekDBz>$4GMVWhU2zh%%K=!e5nDXXm%|9Pal?daN2* zbdl$L#b@(%`k()vZ~pmseaeZOkGN(YKKh0!n(HP@ez*QJgMZ(j#MoG=Z>s-a^Mn1a z=e56@Zr+xMqu!pn_4SR++&SD$3nkCDd`sOgoM^i2|C7IZOIy_E7d-s$aam%QOKx_2 z<*LPoleVVIWUbGecz*A6{=4kAoO6Ghocvp{W9H{Ji3tgxZoZk3Q*<e9S=i)u@fbNN zj(L9~-fvuR_J_Z1|J~2#$xELk{A(}FSFLy7d^l*ziD#8{&KEbae7^c8+wSf}rwn$U z9n%gyKdQ^?y&-EsP{_pJcfTmqtWI-3D#jNuS=Y5mO7Esy-{;xapPZR^@|@a=^+hkP zsAl9mkS)vzx-;+dlB6zgb%sq(gYIV?DLHcG@fU?6my>D@KlgB@Z7b3hn|z9+;7jlu zfz1I5X7ve78;|=5T0OLSB&GOWXR9qwz>M7u*4J8cMe@r6Hz?J<VrDpTJabFbN5R5= z5fhP$YP;~?>haZb50y``$#Z&&R)0HqA|*BG^)1`b)vp}iCx88LX#cs_JqO}`$+*jY zJW$^san4M2)xW<Hao$VW8v;sJa2p9<x*o3?SYkT)Sx;pBkAst!NWPdk`L;Q?rKa7Y zWedKs?q9a7`HPyF3SZ4uNsB}0*Ej7I75}tn(R=ZaPKs+5v@l=YWpr-OfpzOdI~23d z^BM$PSv29kGqd+b#r;uwC6+&f8XsH^x;?G+`L-9CYh1&t^YnK0lyEh!Q^<(f!^yat zDJp34I_oHXiPSaRp+WVrL9sTq{`>Cr-#A-xUh3HImAg9S(&8l6XtVWiTv{Bne&e;a zv}!H>SNTr4YjWMc-g_~3>*<euS9LFJ{E=zA`ca>*W7XDKS^iO4S94om^@a9W>Fb&& ztv)Avt^D9=J4NF|)el7Zrd`(E+cfj&vBg2Zn~u+ST&M6gZo=)vy4iPP)asAip13fV z*~{6}+~i+O*3pYvnfKb?Mjxt|h*xwm`QjUPcBS-;_)hODMY~0xzRSosS9izq_<j3w zm(}0e?o>{3KIwJoXPQin_j$$6sr8muc~(^)*mKffp5w*B)%};(e&1Ki6(i5~t8ZeT z>EUO|Pj1*roGN;-r`qV4e9iwS4{L?D*?3(uiOcufzVhAAUsEpI%~;oT`d+g7lb_Wu z&lOIIxe>S2;+s~fXrkz`OKGb%3&wSYoQU4vYghY&kKe%%l8+gULEEBK>kSP|Q3eLi zMx5?@ZN_u=yY?66K-WMa)deROIYckm-JKR*B6!@>{OqH3zkb_pQ8`}e+cR^g_|XF! z6g8hHmR4x={>(aI@n@o7K2x{q^fM28Cf@(>$98}Hy_xd$s%B4e3R};-OEJ3`-F5Rw zg11JR`M;l&i!%%K>eHU@cu~DuP*B$Pf#UNfyC2W~mK{DbgEPpzbQ+uc@+J2_=NyST zb0qlp+<$S~>fhF}OGP#%GD=Ku-1_iF^3%eopQqpH&1%0Gd-Hb1rh^-A3Pdluv1V00 z=YeK*1uv#$2G`1+jvP$(Gwi$jIXrpilZ=0+lhzhAJWPsgvi!~{pY!cr{h#E22JvzX zCr{{I)a~1HcGi58u>W-xZ|ff)Et>b|_(}WSDY4%^pD<=A)@oU!a8#6uH+p^aYyV#_ z+A3vj&qT9F@K`+h-NE!EST=ORjh8R2d4wa(k4otK1hHNG+kf9k{bl7n&O{E6y0~{O z9Qu#HT}+7%;*u)we6V$f?}r;3t_0M}Zn!LY$7)0I?_;+cUw!8Yleukit<|vH<omI} zv~3xmwpJ}s|7u|Ny8Wb=N8)Zz5kq0aDx0w1&MUOPf0$U&+OJ}kmSxu$r28~&<HEJ? z3#E2{Ty5;0^7DxK>T5sFoeSc-yM47_#<DLr`M2*Y@qEI*`q~ezdtUR(PlX<_joTxC zT(sUTbXv*YsugvfQ&*o*jdniVBGXb>)3<VRdyLCfQ@{3&Ho;4_i*Q&)zxZ3a{Lzv{ zrrn3jS8ab3l7Ft8^~b7v9l{!yA74E(eWP992XV348@8R$U~pcTADudd!}3MQ{$<;~ zi&qA0_uA?lB%!ULlH=_uzi`5F_b+>^TWVj&tPEQDuKr`Nl<tX3x*7jpe_HDjl9kE- zs`kSnsrwSjYlB~&x;ocLNiuSp$f`M2M-{G^Z2LVkrM&WDe(Kb`FPn~(&T*<O=d{>T zS}wGqt#+P^^Xq~j<<hLIS<_qs|7IUsKV?_ux@iZ#<b9cc@bkaMtEOwdzR_7zc5NHi zYbRUJC0EiVzq1yU*RM&qQki*lYE<x>p8p=K6<ZRHe4faapnmQ5hlgA<o=$pt_VIP~ z3-g8lEG(V#p6ik7|H7c|r<{LlUq3muLaBVpzm!*xe|WX-_y7G}b>W-GlmG2sw77n< z@gc7dZ%!@mJhEE1ZhORr@7x;$ii7Re`Sm#I3a@Q1b8mn4=I=R62i70;YwJT~6pY`M zuCH_6cx!Fd;hDN2Y5P8gUVO0dl;7KZ6C}mOw!d2u#9a9?VB-P5^iPjuo}2Jyv2HSc z8Ta<;*;ygJA%?40haL!767eg4Vc*wxwR@c{Vi&sTmB0UOE!cPPwd?E~w;QCd`*MkN zJ=ZmHUCi<Ji=pTHIqh|AwGu1cR&M_M)6%l{biw1dFDuP{{<zka&$=MW|I3FtYqghc zFyFy+(`0VKG}|Tre=nH#`1;rGSEkRl{=fC()8YDUr5w}2t%2$PA{o`|jm!*D#ulT_ z_T4rU*!NxY3saiqAN7PE0SkC9MBmygYP&|&dit{oF~5GzRkT!5jf~p8`>v~?#<UfR zmVchrZ#lf3k*)K8!iOw_Tig@!B=$c#p}uF|mHYGOwaM3iWcCnDZF%_8N@k5v!r_G8 z4mCdi%ku7;rBg1|AHO``f4`FDi+OT$gaw$^P4m2JJSl!j%jPLz-Y=Q#nD52=v#%8m zvZxaFV}EaJC)qE)uYAI@16MEFUVN22uh&>KaF=25$F5h0LXLfstFV7o{aARnz5UvA zXZGJ`TbR7z@O@@E%LkFBayR+n*_W>22%G+Vf7|``^R^qsF10u|1_aeBmR7nY<u43a zpSU&f!6xQ)Yv$+&C|(!x*Y0(icK+ve9}Z@@gDqU*eN`&P&v}|JEqC6val(mHn$pb) z4iVzg?KU5nx*s@NG+6elxCtBOADJHfnwL|*z2YiwWx}?HTzM+Ti_0sfH}W3X8*t5J z&s33xLdy>;>~VB?&LgYlqPSJ6o}q>9+9U2&Pg6dG=dC;@<#KOp)2{ux7Rn(#pKCoc z^)tA__snyYY8NU==)ZLHWvZWq&$A_q?iO!iy3U<h9eeJ)^aZ&&1se}vdnoc<XbZdQ zoJY!T;S2WO;m^H0mHpdx*7lIJeQTZ8^1LW;yYuhS^cPmu_PeG^%DtEwxv=|+;<r`x z(QMm3xJFts^FCniQeGu4$fmxg{OKB@tr;%w1(vfbtdqVz@$X#8CpXV=KHO5=zRr@} z=Hyq#7H$2~CC^iP4K;VXG(5)~EwOm>M#VCT$<~Im)q53ee(i0Zc1SDO&+FieMe+x> z=iL&xe|PHN!!@^4EUVb^rl=iaeh}s+bw^e?yP*E0Y4VkK7j%`QKg?2C^G$Y-h-~wH zo0Z>{+}c0)7|duEsXm%v)c2%u^Vxa6n<BT|Wj9zq=S$FyWY!+>dpea1_vU}T#Cd2Q zqkhlU=k7J0PdAABKQ7Sao%3Mp>!pEiX0qFa)Jo)LzgWCYze+^9Wo2RKl8<xNxz90s zf9G^^ezuQVVEx8~jpa_(@9!_PeO2FB_H@PZ{e>lmE0Z~9R!=k9)Vi(w&<nlm%D)84 zCh>Px_8+bEdNIp0aE(@5T=KOSat`~7E}l;6@9p~2!|zmk)_s!Gx%X4wUvrquxY%O1 z{NbOB2SeJb15MkmHyz~kbJm|>v`KY_Mk`-!#8HDkn<APHKRHuW-z06YVb+=nQ=9@O z{g_~#Bv)m5S9yx0_=}3Xg2MFydi)%%H{UMZqAaAc-R_%`rgF5>!DNoLzZ@Ec_we6t zWIB6&d8g28zP;MhWEN_QSGKXcT&Z}qbldR|UdiHhW=F0RZdEmEKglmPIpV>An5^#J zKn=doEf*!t?G)~oU5b0~c1e9U<7J-cbe6c5HmiaSI(sfETQqPnF{`BehfGQ4To)`` zeaT^~|Cz0e=YO)ex_fC`%#``(62IQ~#j*0k96xp*$>V!mwwJtPUo-99%EHOa|1Nnc z-;WIL%3gME@riBUva_`IWb*4>TxoLsx!ZL2E2XxZi!7dQvi*{3y?8>D!X>%l)Ada= z7M$Jk$a%@~?3KHcV{d)_c&V-B@j``ihTfgl>=BRsHox_8)HD?n$@Q*?a#+VSS+i>D zEF<CKBg#iupK_N7>N?)MS2eZLw99{@Wy*oiI*ZEwzMAxW|AogdBE5IaKRsJ#qIBAl z3-^?kCAiK$({l7wi{)37N3E%6zVwJMlY5+ISikjMzee}>z5+M(M>^{7mud%{JErbe z756bwRQts{jm;<ba<1Xu!tiucz|8~C+@^${kc$45@+-=rEcE-bZGz_m)7kbfUv_cL zMUzJnERn{)R5Ll(Zn`!7;*6^r_LWz8+P?10ImjIry8lz$npbzjq_<7K|83j#88g-= zh&_09DJ9u|Vg20L?(PNCxt&*S@?Lw4D=5$A-pgr4>ixQw=TlkNiM1XwIVSMvoye7q zn<tvg&e-#k=RnG3k4qU@Jz8G>C4c$z?yrsNt9dWAu>3;Z>p8Y!f_zsNFte2vFehBn z`TF6nQH-IF&8Cdarmq5oJ$L>5_tZ_rEx)79;p~Klhn~|{Xsj2nKNmNhttOfCz^mhj zk~q1Z9Ge+b<-uR+=+&*c=W^|tm4#Z|UyG#|r+dvjxjJTjr7F+=UtBLGZO{IVd%9q4 z0N0A$3xiLu+>!t7xNouAwyiq#*VGbhQ-t|`ep+XCv0HKDO%>^HXL)B7r(Z5@Yc0Q^ zxwPlQ3UB!(!4Z>}dVLhNGL5c(lv|?JY2=rhb1E}Ub4KI7CY$GNpM3s%yw6gcYhrkG zcdhRokJlp0-i58!6IM<?%(pz;tgP(j%)4H%ZJtfykX&BM;@Qh<T)X<6b?=6{O=gSD zuK6U33B3F17Nm6lha6Y$^Q#{Z&sp-xsP=GWuhVz$JsT&-SRDT!z!MScUh_3Dss2E& z=!@{qh4D<;YyK~nND?vo#V_o9q=NrlXwnSbiMytT@=Q~3voCF9`W$g2=#J^$#p~p2 zzkA>Juc>yIwUD|k7<w!B-8KDwHE|t|Ud>#CH{#dcmCekbT%W%(t8{&Am-oH<vtKpr z<nZ{iYW4YFQ}1qxsyyrYChOYlt+Fi&J=aX@mk9U-Ypm;9=q2`<BjkZ|S0(ofFS&2` zXLl`ouP=1(LP!~p^J|wocK*|QnnEm66*h0H3Hsu)@Y8K+<7Y3HhXwpP@Tf>`()}He zkHzdZ|K4Yl=KS)db;H9qeg8C$%wCqTW{z&{!=7k;?=w-azm|&6_B@w%ZB_gy(aNm9 zqC2-LKmSqxI;Z{qwX*i8Cokr9>RIN99_U^5N7m$)Yva5(b4_kpHfG+Ry{n~cQbLgS zZjDLry^43gvb$06<eSX&u&I9Au0^~$-=gI9>ajz_x5BcpOV_8}4q`qOTIDw(yJ_x= z;N5;jGq<06nEhLStzqy#lS|bl?^M$K@0~hvYhu%t`pS2|edgAC>GLewqW5Ia<)vT# zoL|_nNju|xmUvk8obNf$de_c=b}{D2nIFsVTv1eCv~1?$9qT<RS1YB9w%%X4&9I^I z`mgVX8O&}L|AePVO*ZS@_2(pi+Od*I^P)W~H^0f5wz4qw??U_YI@P)B{xn%f{;T`< zP(Jkh+rvmZJyWOmIy15}nt)D#Qe!r>G@tGn$f#8Rj;Y+U!6QmLv}^Z&eIw&11v|BG zO{%eEJ?Qv6cHgtVPyFVq8)yDWU&b+cbD*T`vd8x=J_**>Z{2Ti=YRiy&YP4ir>thb z{Au#mM&t42Cv#8f`Jexs-yhZ9e9bO1*Z6Pkt)mi|Upnj;Z(S^Jcl+<<b5Y&KdeZ`D znX>2lHO{-e<~a9Oi^u+@@^Ab7>usig4`ftlyg6Myh*5@7a=J|rqf!0)TW#`kWoj+_ zmz`txC9z3NO<J+~e~rZ48KEaO&Q1Sw_}p*)nv5miKNvjNcv9>1vg3!2Zs>@7>hRz4 z7yq(&`#kr3I$X79Z=LtG?%Bj~Rc*D&MFy=5>)OhhewUZe_KVR}`l0!->p=wn+(5Ri z$F+rnm!5mS_1@x^_z9;b>z;R?a;^R}H<xzl=dXWRm)0Nn-h5f_#`0K$e;a%D9Wk<c zUia+NKZ6_g&(}t-UD2id`j%vgP~;1y=q>MJoIUS*&W}ylc`Z_EYr9pn$=2K3BUmyE zOTL;!=rn)RnRaQumvTYYyS8hSLLW-%>6)F2ns)x}x*OhC{3mFYY};?#u_IkfI<1{O zwf>4sb<B&HUmIh0O<nwR*{;3L>*WhS$lcnznJ+QKyn5@oYk~WZZ{NGFs`Br<+gnAQ zXL)YS$~Jjq+g-EP;=gFCN5ly?naK;PY%>BZfAT(gb+>HV%Baf1Z9W$RH}YPau`@9; z{ANUnp}_M9cE-c2vhz#x93~sesY*))W@v^Brx-BQr|eyN;<=&B)V0C}?_T6HByZki zmv=DX*+U&kRj!3XJCaT&778eZm9ek<lT_h#M#Ct2a$Kt2Th(uyiXU8@8vIa@^Bd3S zD^6=Twpwuuuxg*$dN{_VviXg1*w1OPf~sbGksK0p4u`LpA1>v8i}eeuS;u^_`M3Y* zF6a$S-(I%(s%Sl1VKHm)odTI>3E2<KR<dX~mpJHo@|E=*o}0bBDKc7V^ULx{$ve)z z`6zjYZJ%Mg;(Xbz#iu_yb)I;UY0wqNFT|uKlIU!>=1|mSPtK%F!y@k58&T{Bw;sq5 zzZCG=ENGI6!4v5vQ<{r@Hcc@*6}oiGt;{~<e`!lEPrAqW$V@of$1u@C&ReL&<=B$H z*=zPO)i2)sN$Q^SfvVT0A_1z75y2ixXAJKaeg3F>s-W(l)GLMyg?svUUA?x-U0M2o z%+=ej9_;57ywx&ivdlfaf4W&HqjCLjR?Bz2NoDCD4tnqM)l~QX9H13Z^yulrv^$TB z%wD+h|8nXP*kIRP%gNqy<J_XuTD5a|?%o-<pB>w@tKYbENxw0x(ey1}SFDxSnXTlp z>fFR_ecvYT?&(n9>(I=ddh6OQ8>f?>Rp&0a`ec*h5v~{~+r|>rU+*S#zm|BX@?K$H zRQ>k|$4`?tEI;Gjr?@#Hqat26*rD)Y!tbe5YtLSG*3R{E3`}-f^>OFMn4lv}-Yo5f zOT{d`=WSYcU|wLsy@&~i+`<a&L~hTEbFw*Pd3Dd5l(uhKm%nY4v36`d#ynAP{^VW8 zF^|PKGqmLr*R5sQad?|`P{$LI%Ny5SPYINWa9SNv?+~~}E~i-W{<c-jy_$)8f+N$5 z9(`KwHuurZo0o%CP85Ir;+bsoLd&#@Ti}$&S1~^Qpu-cnW#=4Z3{^V&aYyZb_ISfT zFJHVr9Dd*uN5N^=ec$#j5}g0{Rqp-rCMSLN`2X+z+ka|U;nY(;i9KR!QAPW_>&pdr z|JPWQ?WtE^zuu$1f4|~=*)ZRiemUDiET7aL<q6Xbh`emMP-|N6f?s$4yC*($_WI^` zsVH*h(gRh_QHI}gcT2cxv9Eb>d8K5BytKdmWTpNOZ8rBb9RDTXWLY1xE8KyTO?yQ- z%apZiE`2jv=+Upkp62sEz=(Z+Z0*ggeL-H=w^t}iZs9n2GCcN>UH$9W?cX$`&#`44 zlisY-V)Xu)t@4>8HF<x}&el5gAmqTElIA?$5^knB8_!*0)4I7##G|NrV`kp9x#Iao zyM(l#UD!H{Ws^;;2KP&&Eh;Cum!FzZyXVN>xrUCavgVb)cvtNX4B7W~*FxKl!gCQq zj(Xw?zJ?_P=iCzb{Vdue-}HV({o0cE&3E)ZX5@anCcJL7TZ;Ze6?0K;u}e?3#m<h* z3YR`V>)M{>qKm$MTWu;|dRcK@o^e7|l<VWAKLvkBo!A#{y<*L#*qy$!gTv2HJ#8!z z|0I@a$GV$t?eWbF;f=NCYM(>fzHcZp6|2=_vHs)KbZ>qchokUM{hZja%{rb|>+<X0 zyV<`mE>NDAKI_RzrkLE1I@2dD7VBTe<-9Q2_IHY-R;5nSR!NzCJ3mfI-K%lxM0ULC zmsDGsjIGo3Ri3?b^Zu@WTGdZd(4KvH-4?~;Nw1^)YNs#JdAnOhbWh}N??2J|JR*M- zJQe*cY3;VR&HMY=37@Us&pyp6p`4?qs8jGuqW&V2!q(uTS6d1qPuo3FQGPUY$;`vq z!KRk)PJP()Ia!Q_WA3#d#p|k8IiKgwGnslcz3AOzgOW7vzdyfz^I0Ez?UJlAzf#2J zHQC~;wtls8GoIZ1?#;5;8@KMn-@m1%cO#<Tqgr~twotxD+=NLP6P`qEWQhKm@G<Jr zoaFQGza+o@SAWg)bUEMp*UfAC-}*%Ek8$pm$dDG<Sh(Wc&A#5pi;i#H*;ya=tLSuU z*8V2tEW6z&o=yz?9iabl5`*yaIfb)BKef8u=h&*sFU0pu%+>s+xTbHyz4>2xi}&0y zUvtAGZgUcU(xDIBtc!DYD_#42__gS#uO}zAt`K6;F<=PUR#xlDZDjH2a`}G-W$uH# z;IR=#6VM2&TD`HQ0rKd`)2Oq3k1hE2y$}Aux=8e^zQT&bOq+S%tQ9YnKBMUO$nx#N z-+%d?y%wox`)R#<bxuaCH6$r=*%A4P@}B<p)n=&tJNV>k$`)~jyCwhR`)UrJpa1oD z{QJxH|KF-lP&&nN`L~fQXn-W8w?obE{q+0&LG`aRmd?Kaui`(yAN$?&?9W+R8m@c_ zDLwQuTr+XnrK}pA2c{3+KYhDktCf)A9<F@$_qK78{qlR>E7&r3FTQUQF8}%Rk0py{ zzMGS7=vw+T^4KS-AHV0+OV8i-`}S|)JzB~QZbHm_l~+AHv{mwz`y!%z_REGW*vfPF zP~*&HViPs2>sbZo8oP*go)TE?;J4Z2+#Xq(h()cBI!}D+G4cOl`M8X^FE%h`^U3cb zli~wPo_p_mRxLjH_!muk;n;-_-NN2)=3#5;uRFVG=6#`jzE10@KeX0NR(LSy>HE}q zQ(2w&e>mr8JyRoP<%SPBB84kkJtrPu*lDU*KS^M^E@RU*r=x212UX-}+NY~K-g^G? zY7nRRnOX6h>{d^D>TrIoB43D7pRyav;$_SkiMrC?Cw+e#81O8pQX|dd&eY?X`6u}Q z8h`Qk{r}gfuO|O@UD~_tS?kyxWLJ5z>#FSFoZ!52`TOgcGxxny+9`C~i<R9(IN-!y z@xaaE4$;h+n{3r~J9Ea==GV_Ydg`pIiZ5^2t@+I1Z~m|PEV*NA<`SXIZOT>4#XUrQ zT~^Q6y!NIc)9csA+TaUOi?$c+*d-!%R@d7qZj*@L=Vijt!5lkctp#@28bxYm%DC29 zsb9St-tlpwNCW%tUABu?99wzWmaDwi;j{4LJiU*sS=acEzsdIFw=yzNdwnFP{@L@p zVRv=wtk2h-*5>oo$en5PvF-O21s=ERZ}YZy-4)bba^V*5ZUueMbNzD`2A<uhet*90 z3&#Ds17^Lyq|w7@)|)Xu*?*DMb4iz(OzU@kSR>`2XS>woQBljK(x+P%E!hyer|Qgg zn|HG3O?tEXioW)7=R3;I-jca2dVPRp!mg@%y*VdjT;~X}`Kqx_>{@0K@o7?Kao1rX z!S4sWgEKxUf7XmB)baIq>fIzQc<O4y*;R{o-}_+fa&R{f^QEYk(i%p)%1*1TFV3ww zQ8iUwWr@Hho@TpmJc3d=(f-m$8WMSL7ao+&TKZl0wwpe?Rmp_~KZH!qf7$r%%sth2 z4Xzy$t@W(^T*Xc+&s}i8DO&L0g~JWU^(n`eOl9JgJhZ9AI(K_yO^cRA*v$qLd99Nr z9afyjPWqm4v2K(zlB|BYbkg6#5^eq8EzBEkHq?sTJIZG-xwyM{qv+brvMQT>-{deY z`>d@X^vKR9B<|7EWPw}%1l$fq@;iO#{>a}T823MErs17>MkAxs>bZI|d7pVTEb9`= zQTt`scIfS@iI3!1mab7Kjt|~pX*FY_?Uk$P3xjs)&6H<UZt^SMwuI%rRL&+3_P(#3 zX`ZEQZ@&t~v#fCV*&-BIbj=~qD$SmG<$(uw%+g+cKDAQE13M0t{NmHyclmvbfZOyK zw@aaK0&n?BR7j+}t`C{MAfRyh){;x9GZz2vkCIqnxp^kDP;8k+)s()jyeWORdJg$n zJiir`ks(;7^K?<i#s3F_%8pHTxVpH~owY$_aRPh#Hofv|zo!RtO%j%zc6h?f3C)}0 z8m=oV*(^7hb#SuR?8gjN#xhxLp3At7Up#QaOv1Dz;;H!j+Wt-5`u?-(SDSwjD?QzL zvMBZZPnT;vfeRAYg+z9hi)u>Lrd@w0RFYq*yEA`Yz25m8F{=+7^t|I__s2ikrpzJz z_WrV64_p~OYhL}TQq=S3e}L?<8paon|JAN8EIt_V*naUY)6VcICswbzl(l3P*Yq!? zH>Zo5x+>UT%sBTyL~qjX<g@P$kL<30blF$8|8j-|mtv*L)7Cqg3mOcr+%;DUD^aTY zADs2{1!u41%txm@J%fw+kKFB^uf?(Q?W*sMN$2yX9-Z4gv3gQKvf=dR!t^=0YG+DM zDtPJY6miYi7V>>_LAJ)+;-`%p=jt(rx87L1KdAfGG%E*zbG!R4%5ogkJ|lkjgkSu_ z!1{aQ*&CMn96GQ$vafY*uk041Lrsz2b=zv5R646?tXHbbZkaxDdsXn;UBMT;f=VUd zPJ1VmdH7YJedZIp;E>i0W_PqR>((i@>9iFbPSPrLusRu@woc0BW<mVBfN27fQ!PCV z?zm*H5n_EOw)Tc@xb&`jLM@KRm9uB2PgSqaDRZpXNZ(!(`Dy;z&pNGc+-qOIeYM9@ zWR2YQ?3~rRtjg~gSV%~8XRVqWA(FZJ;;E8T%+p_bo%C&cB)Da{_WvbY)ei8!iu-i+ zg~q;D3g1?!qz4rioaPMTS#+ePpzWbr?Ef2iwo6S_;vNU)tlA!(>;1YWbk)?vHOi-F zbzIw*H*d?9CC>G$MgNOmOIST;yVA2=2cvy{ESMsCtG`Otd6C(>8=vy**nF;UsJpyo znn<tUCfWUA?s-Q`CwIMKtNSPQ_uu3Vm#?n6Jn{YcKi?Rl!>t>0j<<CkJSKPj(wd9~ z-Tu4IJqf=0ZQk0g`xYy(f7~AD^y2|<`#aT+l4V|>7nZX8@R{V|?Yp>suTp^dwJNdc z^Pc!_Tw?a<w;y|O_O;tncAMGOJuCEP3S0Ys!>X^x-E03jRU6z5&3@t+d`@XckZw!h z>B$VQgI*u8XR<eBELtcg7}Gp&39k^Nw)xjX)5NddTRBrH{%Yb;jm3Xz7fzeg^ugdc zTg~(fhj*Fu@3OQ1p5>&y_1=^see?RK_iUH`i+QxEpX=z_E3dt_T@h_6KR$7pX~|_d z(+%r9e(qBeed9JQ`1Z<sGSLPGteP)bjy>EnbC*V9^H0?kdPz+_H<A;&_;+q^)jgLZ zl+>%6d;0deyc5x7&Y5$R*|&fE()H}Z!g>uRrjmPiCLiQ0c>ZCH>+cy4ua&J8+`m<E zb9a5R>-7jRZZl?WffegEcS&_QecZE>Z|5=L$`^|xq<)95ywYy5;8C~8dGAb71Ho%` z9K}}-pD(R!a{Y9}XkXOD{TF04HqNY7eQVp#r&;NpY-AY}!C!O2<5TmyE0Z6HIY)N+ z`WebDbL4rhYJGE6*}5H}epyD>L=Vi`+<od%msN;E{qglrY!4i?otK<4xpP{%g<Zz! zm-pPao9E3j_#@?GC0BDtXobIS;-9jghaVW{8Z&M;N>@#-I=bk0tkpBK60JGhXM5A{ zu3WS9^PeMGk@F9VirZa^6Z7M8`}o9k=JG2>T=M%Xy7qax>=5kb{qFbYdi@_(Zs(Q| z#Q4ngZf8bLMw97@FBsM9O-zuRVpGFUuX_xh>;A(Wrur&V;lv^bYlm{(P1?IUj!%v( zz4-6{qDS8R>XWUTyB{1gDy{I43q14b{UfpH|92)Oa@t9!U;gxS{;p3e>-O3G{r_~^ zpFg*^HJEBT#^m*<_9n#WoQ~SlIAhxFkJpbz?TCIYe{EO&`D@1#a&NsdzViRuu3s{% zU3bO*-}m=i#=$3(WEb7+Vpd~YZV_J*zb!mp|BvmIu9p(x_Kes2e&xBp30Qk*uI=RO z?Qd@VmU`FlYmURsln0^r9M5Qp-tf_MUE$LI<zngGCwgZT>jh2pFFrXMx%uW=*U3H2 zIs%H_;tG22CeCpFAa}ohnf8<JXP!xmDy}x!+}q9i{%D7x(HZaUZ#S;)eU$hlE`meY z>9nVAp?({u>l~$$@@4C93fe?<O8wpFV(U<~Nj+o!OjenzI(Zx&opu*|i!&s}W-i*j z@ez;jNBJLN+0SdHUR3KmKP%`3QwD?C{^!fo(gm)TSX^=1sTqIi#<7<R-qcSDo$<|N z%QN=1rgHm>^*-EuALKi`B>pyYl6aY()78gTot(iwQ>Q#St~F(ffX3A9#_o_Q3+{)9 zthMvlInTUvT7$v4#N4m*8b3r&Jn_@S@MYl4oP(hUm)FcZ|7Caax#iA=c0y~GaYTwI z^145^n46gT=~c?6+J3*ktGp6Y_;r^B*Y6V%-0JZwU6e<&f6~W=3ak5FccmX%lpcF= z@oE2bS7C0e=J)+syqY-=uL#e+c|rK-`QUTs>@;ra_?Y-lIXuI(UFPDw$10Zc`m20i zNJ?ydr<%58;S6`)y=M-V%s%pI;|0M!E|UP~2{Grwh39P&h&QjO`@M~Oqvu(zbneF| z-(C7zf9jm{6gN-*DUQF|Ocj`JZ&qDY_+0dr>*u1_xfz>7+t#R`oonO!>hXi`_YT{B zS<s&FHRzIAgGk!W?MM1&a+t`T@#PD@D<E&LxOkn|GijUDXLk2aWOUEGekQ2jt}5UE zj?2Uw>&<5_{P#yC{@-NJ%vo%6O4Y7#W`0dvy*%tW*L;=wjlW+kxVU%m>|c%VvLueC zu^Y}xIegP`x8|PR8GG_}gc?R`T`BwaW(M;#mAiWO0{SlLUT4y+HhgaUbFD(d^><&z zURLI9b7bedy8B##Wlg%3#QaN<-uEwuXI!ed86IJOEBfd=*ZirGuKRnxPunJVOu1$8 z$@s8edtc69?isq+JMDA5>1##F6S<#CHeEjWAbje<)e4&rzdm$A_Qj<M%=f>&`m@G( zg@WC$$c3Cozs+tmy})oGb2rDYReZI*Qu`$Nx0XM5DQbT0__aw*cB{^O6S?yu$$rOz zR~P+bkGi_bb%u+Xskhd{;45-|7fUQPid{V~xF3y7*eqcBD$l&%!YX6QvwDqbH-9)g zwS51?H~aQO^Xe(zm*sr@5h}nu`?}hWt??~~zuDLQlJ^Ofu7`BsOhJ2R)R~OTrmJQ! z#xdTX-k!lYtN#15X9s-^{@FkMFMRlZ-OBzye{z2qdZ?*ux7Qz@d(}tVw&p`;<ny-Q z3QLomX4X83KYYJE-u&SC=l>*TluY(p>d~+1wroyI&?iB;OaX6A<)pnjlNa*|PGtT( z(QMJ5d+{evsJ)%%cIE!#?0T_<5?dH|_0=rd(RW?S(ZJj{c*U-idbS^2z31I5-tUv~ zWX;WQVK<jwIQ?wkqW2v&EA4hR3eB4HVD9Wj?ld>cKYMuNXRkNB?<62RIcm|WXUej9 ziFv6laYhes>eiSVRm_`km}RShR>eHSGh7MF3w(;^uJKWRSgrn5lwZD1?Y@Xq@|o>> z4(wPZxXP&SLBeCsGe;U%-pQ-qy3oeq@uW;mZ4-va_vZ5`%&m0!qIxIA=H1&YrqjD) z{**^&tye!58(Z1%eBYVdx?-g}53wG2o%WLZfpUOTXoL6;;dK5CXWOa!+OoMyza7`V zexCpE*X@C^{yRJ7{tBBVxnoiF;vagy++Hlr^Q;Y?c>BxT3w;;M*JZ7R2-fF$)(TJ5 z{?(Rpv~c!~jB~TU@NSIh;ClRenn-%w#VyH;pQ$o&=oH@T2>vxC(DAyX_`l);!QdBF z%Z(gfKM;?QeA!kO$mXOk>95t?b!S;mOIeRmQE2ws5}05|Od#8m-v?S$dM@iFCUnH^ zI>4~JSi4*Ji{`$RD!!XP>SI2A+R^6DZeyZ1;oAKNe}AoWS@ZtBhR(#2^xYmT3#VUE zS9NmDo9y9a?WVMI)z*w%FhQ4f9!DIuGw+*OePp*uP{JD_&&CC*tA!YN`THj1#VvN4 z<I6u~#>vtUt^)UdS97hq5A?hoUo2(vSQ;?#_LNB%`U1VyWv!j7R}U2xn5gZwk?-E~ zCGmdmi_S>CcyE1XW5`xL8Rr+O<sN;36K`8gyU_PAVqMnRT`)nxiP|#71+q!AjK%hz z?&a=@&5KcRs5^94_1nz!?_U>p+u3*Cz5U{V%~Kt_>5-RyT`YgMxVqmvT+;gcq}K}9 z<JU>w6214Re(CY^{OjjwAHEV2|F>DO^~Ur4doEm`Z?a{PuHe<LxpzMoCQakk`Ez8t z-l5|kmM-#qI(gykCH9A97yn(lX{&6BpnaQusPC%zT(J}FJ9;cnrhi*yVy>uT6)BZA zWzKRny~~w$oRh^*P5vpPkUL?$QE}2!);axgu~w@bwQij+n6uTsK55$LJ)8?ZKff+h z9#l8)k>$3`4W-?G*YuP>RkN79=f&4EyjR@wIrd)?)U_}wTl`4qo@3YPt+_5Y+>1E& zPZC;dsa57%a;Giu<&+yI-K&J8-Ytn`dHRd@WmCZ612^|R&5>_X`qNcz;&}2#FN<#l zyP(PSZ4cpsD{q+AH=PoEbLY%u)$MO@USwD3nY?nL6Ia?}Z63!^W1aIs${99+iDx?l zziznX^Z8|K`c$hwkyoEaGI=i3Gupm0^0!85<N7b|+*7&kuDHxmKEdbtF0(^#7hhuC zcS%k+Na;(Xn{Gx#o3+}Ese1mK`WD|cn>I}}iXr#aKHm!wyWDo%OkGufdA;V&yZ2tE zIet3Xy7siia>-lkZ)g8AJbzkD!*TcejM&SSFTcH8%((3Ivv1D!VqJ9$*JsFHp1k_- zQOnZ)VCj}=d-U$cnN(PEZ7c~)?iOFW@A}3q+|5kij~)4CA=acnx1&r)t7LJq>W*d| z?eJ}78||jGKJeCFq}$CAyLnB)eareyYkIStH>HX??ABTBkfHN>b$6<0>YHskJx#i= z8%6i##IIkXvp#yJd``fkeGkId`cypKu`KjI`x>5#*T?U_U%UJ3N28YbN|D^Ols9hX z-WBXSBiH377u3Gtc^Gcy`dd<TcUs0Vr?VnPTapaVJlhw<xc#cZrmcxn6uv3UG|_nb zw0_F9zPCcVADvmTYs&Pk^L*EKn0=mlD&o3<MgF7TFNLl>X*JEOdw59Km&M_{VO;d& z+(+|bvfsp3rB3Ez{__2r_Ad$ML+iizNi$3Cz9=Dd&+*uV?AsNt^2rWArryg;UXXOX zCsAr<n3(k8mlr))G~y5Vo^=*{zI`R<`A1u#_9|t|*Qe=y5WSy~6tqyfQt~0+qNg#} z+g8*@>^u-2v)I$KWnJMVPmjwV8X9YEa~^$h$m84I#02qOi9aT}soXtrA-81q!@h^N zgKo}hiv7{{&|7X|&0?qUA8KxAbK*KAewe+DiVI+R8x<embcFNg7LNyF*Z;f@J|&d5 z@%2Mv_Wcta=1*g-XZsgn^L*~Rg^wS$TZPWO7iFO!W3q3xg7q310jCzm@71e+*!^<* zF*Pr<aq>oK(Rm;Ef-2VKD*v(*a{n>4B(pboW46+B;h5fIoqcsCy3A2xr_W34=gr%_ zzvy4Vx62G!^NxM&{(V2yC}!qV*Hd=!W%6puf4UZ!Og?#|*T=7d-LT&B`ZmRKnCQwI zrfSZ5?@A_aS{)wrtxx!~(@g`0vi!>1?MpcJKa%qeGAdK{6u#%Ea&~KO1zb?8tapi* zQEq{k>V1iPtqb4y%o7Fdm4w@;%G<FxbS-{*+BrdP*~k87cYekb|CeM>y~dZne#%N2 zV>a=h3+fg0ocXgVZ|yM@(>oxyW!1a4r#Dw!+K{;=^vl188@Ka%Iw!5{dUyBCJ-fD+ z58Cq=@^<#z&G6uSui$)YYp%_zenrJUr_wW=7bRWi@svK+>(VzRjNA0{)dTXgP2I{4 z9{V!;<({zLM*J_?uFdCuxO$6%yJTzKLE(~%>5_dLnleMb)i+=AeZ82uCH~^<YmAb+ z1KBy>E66^%Wp?QWOi*<9GG=4L?2><;U*27{P`xm3<y#@eKi@3R{N7`nrfBl{_mwL* zGU879pY6(w=1Nq2ebF@Qerc`LS+=z)oJC1)EB-G&lM-L1q_BU3*R{7lKKa<rm|wu_ zS^BG&_leTPtorSX)1I{cZ|%{lJ7m_qt)E}{&#Aafd9`HoUj>J(PqY{3N@u@&e3)bZ zrtn+sD{q*}&wJ23a{|A(caPck30ynw#;Wub-RP-_yuQ}>)79SJe|O28YimEWH?&s1 zQ~8hA&Miky-slzbuVDAIxxOtBF1YfBX{YtcIZr(v)j#{=H9h&?Sx3vspVPu0A1t0* zeD;rDX~vr0j&F5lSIBWi7KyCC8FKH^Ov4u!`>$<#a%P>oxO>ri!=vl3J#%}td9w7O z^-o;hKXp5ncjv6`L)k5Jqu1psAGMR-rTE9o@5{8jkT+fLo@C6}CiME<{>{r=xdh#w zz1NNY9U%NLyl3%B&-!C|OVSQmcg)(kjTa$$bY0+N>tkyjuhi6Mc2BwR^onbI^17tu zYjwr{bouD#<ar*=yL->*k?hv}Ph)Pkb<8c>5%WRYXzzyOs)D<ZS)H7@m2Y!i)r<}X z%jI|LZoI43UYdGA^!V)k=h}C@tKk;sOrLgdTHf``d-H31>U|Ao#(cbR`ELI78GH7= z-8|!2%Og3P?vuH;@&1?pT&-0uFBiM8dGo$kZiX|9FK)QIasHIg=iOe&O73UfG{fAZ zPulFbV-cg}vY=PdcOFE>J}+MKUvmEad0&{^YoCkSt>#>uapK34x&I$c?|HX<+P^N2 ze=_mgOh0e`7WMc?mEO}fU*TDQr)=k#ao#Lz-M#w1hwB;I^&F=cRxt}R8JSK8-Q3Ay zXklakx`ax-p0lc|U6?)ZPtBYgelb^9&Wnp+$q0G1D&$nzpC5l_JpF!DkL~}PNeLhI z)?PdE^r?BwPqy{(zu!+kfBJcR^!A9&V!>}d{n<5#X^q(v)gN1bY_f^3uP{>km*jJz z!tt-|{2;F#QgOW>uSp!({*F0r+q${_=PYYpKa#wq*S!1E&*jha>nDa^S`*_GrnXq+ z$WhTfMYn%m{Ty~|Q^bBNdB<*!x~)?$`5pPp`P4v3-iv4Y=GEu<=F8f-Hyf$>8*MZ9 za(hy9=A+201JQjSjVyL~$=2%@Z75}o-w|??wWjIRA1|lMKSH}4Dh|%u8|%#x{q5Wu zxd(0k-=2J4WOG9GLDVPqm@Ap}fz?Z+ZtV+^eZ2aULi3Yr3?DlV>d$p7)vI6Y(pi!E zWPQq}Uol@Ju0OH+@|T|@@K9Eeoxq`~iY`G_YmVmxJ;}SwpK`cF^`0Ex)0;c@NBSiM zPFwd<N3Uy(Gxx$HCPuLuZrm$b-Z*>Qj!h}Qt-5-y+xG(jviq!Bh1Y6ws$W@fQn&to zu8zaJ+Zi*e*6(-x{lWa7(HiB2%dcygOttfjvyTz~bgY!Kx~Vf%!FyrIcJ}q#uH`=d z!s(IRr_-Rd{YACx^%!e5?W=R7Cw|-5tS*?ddP~&@5!T03Hdsro>2OQeSdjd9aa->F z>vye=J!rjqGVjkxr8!J(S2+*8iYnQw{k}5!O1<>su2;%eYQG;BzyDG0M08U2sd?sq zf8==`U;kk4g_%K}+B^K7{Qd1IFz0}aiAPva_}Ta)XV0m>-)p4e>~OhA=j+;J-thK? zdyj`*{C!mEcm5Rn(i}Y>jd|%+8!oQzkSOvya`dL>#~HSldu6ipg;#EU{QdeDldb7d z+`A6de&c97SI^I>ba>S_v!s$Wv)PK%9HcMq_}h11iu0%17tWf<%^P=fi0tOF_3D1~ zGt{WD``Fo@6>F|{xD?z?v$e?1d?b=rnj<3iPMGC+fltvUk?Mw3N@>Aoa+np8^|qLb zE)Xpi_<ZBw>b6>Ax6{>J7b~7}9C`6pTELW5D0st}jyD1SZQAM&%$5*(m(+1+;VaIL z-F7T~9l9;2O>#EWoC)*$X{6kfwINmDnx5OKRFgyMzn2Itl1^=?$oaeWo|pAS4&Oub z5-n1zH74cEet7fBdJ)HM3)WAGW$64LG~*2at7{r*Gora(-uh&5W4}-557WlI*(<g@ zGf`OKrCS(wd6h~<Q^t44n)(tKhNH{-7`hHxH`pJ|-qX)%$F%<8t%pfXv%fc_JbC+f zpEa8{>uIO&nmTOtmy>p1s1khLa=^AdX5-CuJ6Epm4Q@91vRmPA<ksg7ml_?V`lCKv zDbT76nf#WUbLljh*G|O}Wxc+9-4hSYc)#SRmEQSOb!XewA1l1w7bP}LpLkED{;28s ztF9}ioY+3;t5>S}a=i_++Y2_nG4oonyIGId%J<uz%!#wxj?C%d_jWg#YyRzjxb>~8 z5ti#q^zK>cDc*Xy`cseiQfV!zZGS6@d5nKa+=~DD{J}PX%!b@OX6}n;t-EwFdtDM^ zfHTK51LM}yFFLjOjtPW@TlhWQTF<8$FW*_eewTD!(aecr=Y#jU-8*)5#<vq;{oIVP zLhoze=^xcA@SC#x+Sio=hiy*em;CEV<6(+=cD6+8MQ^t5$tNLi9|RTrstGusyvV3v zy-~o4lP?)3?PM(%3tt_wr|DkLhWD>h4)*iw-#aN1a_gb!*Q*ay?6?&D_FKK#{qWRP z_9PdE?Z)+ABse<KbAGX3eyt=?>U(tSvApiX>@zpCe2QNY8)8;F>4(YgmAu*s%j=_L zB??!o?701J>viQniPy6QSsIvFJ$>cA1>WAhO)qRuU(VK6j)w>5oMacsP<HygmVZxf ze3+D}VVU-R?dtGlQ=OMycx|^h%YU{Af3u@))M~9YGmTz`)<4S@e{wM8O_xK@l})q7 zrlo}ZY!6$~bm51^ugjSdIS)$vJS5n%CapV=%yamJU#-pYcPr;z@e@?e2`W0$mT^EX z+^3Ok@t4zw_jEQ0ggyRy;LP>y&zG%z!&k{}Y%}pn8PC7M84vGTHD6k|U73X`F(5f~ z>e_FX6J2M0Wvfoq?CXiF=PlcMcGacN)$5FBedPLUt@`ufd7C(UM@{SA3toTCdsxiZ znkej8<rZP3BjtT-w%O*(^PV4_aQ)5ay?Y|kB@Q2Z6ryu~-7>MKZ!7a+*75b$yb(!d zyPQ)MYGFNhgEh<BIc5ud-OE4DdFVO)sQJ^nvP<7*&NjKtVs}KX>h5Nf+<h<Wr&nl* z1>BNQyBf^x_8{TO?qrLW?QSh>4;BA-%PzgUlS9Sxn7#kaDW=oDOuQWO{_K(nwY@n` zvU$$3cP^JjDE}|MRpzI4=b(Sqop1h14S9z3_mkf3JDQ_idrvCp!P>?(?jbfUB792U zzWs^be{=EV&0@8RvRfwh_qwufxMgzV@@Jlp5heeB|4pxFGI_day5lq^VbE9(qX(lZ zi?NBZ$#j=$#<=>WHUB=|{`A{^w`+k|g}~|Uw?8GR2p`jT+q~fLr?<cQg`aB`<eh!J zf8Sr$W!zWKU2l?9Zj79zc|YNs_47w(b_O~;eOS(TKYzWxm*<Sc#I}#?_0L((`9E*o z?dV@u_~w0b>9&_TuJ_>$?@Q5u7v@j?y;9bne@{&F^Nv%GJvuK%IOf-vDfOypJrciP zQax3}x5oI7#%z^No0ORE^Y`7=<e!r8(Z2Wp$*1}Dy~_LlZu+xJW7(eI)Af#<+az<v zQfKhy{oJRqbmo<5Z2$KDsr^|gUOemf>q8+Q)b=|odY^Tus&JPqFmQcR{^j#xp9IAN zpQ~^FvnjCOU)_`a;LPj|X7v?!*3?(#+HtIlow}cA%P0Hg6(^g%+i|U(!74qqDO2x} z(q)Ib({)GhYwvk@_pQVEYV*6nn=UL%i94lztTnbJW!mbepxY#>D_zSQWR~@;D!O!l zao6I#xfSKR_b=Q1{KcZ|$ypy28n0g58hLsSPq&Fr#Z1|0nGbsZ38nVM*PXr>IBObf z{SD*q+tLe}`JWuT9P{RdrW%jUo8Ff%@3V-<6xX%QFaKcm{(WIj{JNLced_-n%$l_` z{Kw9ixcD^&>UmG2|C!A^{PpVj`^@uy@EqS7dg9=`OFR|7KOC8}Dds_cqsU9vUEZIk z9eY?_%ljp`<fGw+s%K648)ljR=2#PUO_pu@f?qRo>cxYESL-usd0H}j=a>_AP4?fm zgkKYKWS1@weXPN_@p=D(Ey*7lr<8rkf8OQfaz51j#OgzhmmVsgoW9TBHDns+%Qjc0 zwsT5}oQ1#Fapd0?vOYUUP}bf--;-l!^slxZJ`&fjZ}(UF;%Yd*xJPW0yTX>lyGi-n z3;R!&DVl8lCDc(bW>|ejj`3n!Dfd3z4m*|T_7~ib4d(TJ&lPuaO^|uB_2~xo1sk+C zDf7Lv<GYt<d2R3V2&v>L+J^5Z7k+P$_^zb0!|A$%M*a~+iL4prA8xo@WP4~QlbROK zyhQ0G!&>JBR}9_<Y~oyYyoLWk%c+Um=Is3LK9y;8pYSn}EsvwOysu9`cy&_*x2imE z_1>C;Npd@N#b-?U%Di^z)|D+cJA7x`-Pbd;zxr&}BJ*RHXYtpI?G_5TE2oxuoBv>5 z>b>M5;oZ_Lzc<XDQOjH6c|q`WyTf*)_li3??;daAU%<_7rFpt^=K1i{xj(DU%`tzv zOlL>ROhtFK4FQSzn!f_BXkC1^tNt<1wmLVT6&BNZ4CcM#I2X2kqwrGeCo<m`v2J$S z=HTgN$D+>rnU7(%#Z84f?UT>E$!-WzkzG*C5g_$UmdUK~(~J*{0aKFWI6vJ>V-w*J z3e#rl+BeTWyUER%^Z3s9<!+T7yk>W*AKx-Lq<gA1Y{t&oUQw|?_uV!}c%<L$t<9~! z^^ol;v$M&Z%%vv<zS>Fe-hJix`2)4ZhkcdZ<6iHVV4r<!=h`(5Tf1wQTu5NMFKz9q zoE`pqYLnjk>l(+NzrA%`Bja|4>|-~+Teoz=S)ZADG??*Mrt<BN*gNq9r{(<CjIQJ6 zs=t2;$7vSoDH>(1^<NpcbbW|$ki%PrFs_bGQuU9P9_UW`5nKI8WVO$U=xxeuN*jun z20bl&^3}CUr(~|NwSWIp-Tg1R*83^lo?tg|V&5BX<C|O(-N8nC<6^FHg}lDHS6tCR zc)5<0cFqqk=?|<Ar?3QWS1FPW)jR*#U{R&9K4<WX&p`#1Zrg1F<vW8`t&t2p5#Ziw zn;RwN>{MC5^wZ*8ag{l2-k&ui{uKN)Jp1z6o0-#8XFVu879^h=7bSD5@z=Yl7rG^u zy75lP2>r0f(wLE1rLFJDZ}l6`d|Xav#dT~A^!T=7SLO2CGbiO-D;AlS<9?6r=;Q9h zF18mB6N4L@HNyKVrB`b{b}IZl`Cs?R?`ek78$xwfe5i0XXsDmUJ8|ty_l}s`_X~Q1 zLMx7(o?-JYM>}u7zSix9n@cZ0ZnL^HvHw(Glw*FDPf(ZQ+@4qBdYgN0-@PGN<Rz7P z(ObmUc9)=t$T#In&36jfDw}s?D{;?GyK!ixyRGMx?<$49LJMC9Pn`U|ynIq#W0B&o z5ayWuX4Uu3d-!~AVQbB*XJuCoJ}~{QDYwYp#i#cfNYyn7FWlfEfA)}C?Fzs7f$t~f zSZ{dnB;j_7jtHLz$Bl(sni~(umackw=GWE})$@<~SvzkNF!jrLA)>e>;Z&+gi~RD2 z#5-L!kL&AyWY1HsegEvin-wR!{}?=NUKlPkUsL?_5~Cwej!T+I%PoIVocOd}blOd; z#cd_a4<=nMwGO=c$!A}%*w?N%S;;T7&znu~y6o}zWW%X_TkdI}Q#KKd@;2G2>Mh8o z<NESokd~Qr`6?sJ8H@)Fzs+zd?mZP~R=Rk~i4{-gs=qewGMjxOOYh&R?+Nd!rXRQ2 zmnOePKlep<!JL)P*3AoA@N#MNd8bOXJ#zJtGm7fPJP#?EJX^fU+eoGTy0!Jbue?H9 z5nk{9ZQS@e{fSz{fo+TWq~{q--T!!+U9V0|spmYY=Y_SQQ`To#7GJ-)(!$o*INdMi zfo$^04=j8yu5-3o=*cAM$QC8v4m_=sD!uRP(*visIqv&hx`&Bv<)obfw*og$wex*( ziSf3BV*Rn8`)T^B`rb_^SMe6UGKn~FFU#O#Vat2H>X1#(w6s{yD&4c;`L=G$=X@@| zEvF{7&;IRszK0|Jy;`hq;kz&GuU%!u_g=jtaQ&P}dF?#Gt7?_&r|c>}dCTc<?yeOK z?QykBvi=#TE_!5H8qYAX$i~v6?p3bVQj4QSCtf@+OJH78e}q42*Ul+(d8T|aFPoM+ zQ`Ljlevj#+v#ZYSbd$(#GZtr%oVv<9LbE1D`bOu4C2KDJo%4N1sb*+d=Y$+?`EBR+ zdTxIHNW*;Yz7i&Vi(}#@lCz>e#uYufmKd`1bjQ>T>+>xW=YO$NW+~b|$04kpX>p^u z`=TVjKU-V!tRjPtJuj|5Hr>LRNon)zF8>PxmxY;1>zGwn&+FSR_$<8UUAT|-`Pw<v z&Q&@orfX{)|JTer%NxOTFV6aO3}>H&od@HL(1%9eIuCqz>E14}UOgj3UOeu-MbM|| z&!0R9Jsc7!z4F<oo7|>0E3))&MXO3#eev?GI^A+PR`Y<j$M(CwmP+|?)Zg2-J<DWE z)!MMkQ+sbpoxR)Q$DVCc!XJO_GSAl6KPwJiHh#V<kG1N$qv`om^*3g#pPCoFrCNJ_ z=l$@jcAmGaN*dH=2l+g;k2oqUdV%+ryX%DoksRNW=WdO1@wYIzd3CG%U4C0`h4rcD z)NiHquIgQXe2T-=0|mFHJ4~L|pE+%H{Tp_R9P=}|6W`^`@_w^#MRs4x-oqCS=N3=> z%h3Av-A>+1?oR{W&ES;JDONr4#mA0i=DedD_pZBS;1hmqYu%#TqML%$-yGP;n*T0- z!M(Q4?Ngq*9nddc$NJ#-*CS4=q-(Cfo3Qq=#0v8_)g1ZGwcRD^SB!V-AF2{8Yx!>& zk$>ZRy~Mp^zt~<Xukk*YvQuo6yn~SGHvTo=%zixm_HCYbi%X7`(ARVJ+mF?)xX#c0 zv8v|u=d*S5Iv==aB~SLrpRSUgSKf8}<Ai?+OZ&h3o}T<NYTlcy)4{o0R?T^1=Xd?E z5qs*)kFl@0Bp(?5Tk_EUM`v#PCePiM7pK(4KMCyGQttPxUSj&C5ArcbxB1^(RQn_( z!SqJV9aG->><Opuwo9*icmA1IrCMyp`K2Z$FK)`b_ujbR``>%7!p=YQcpP*6qm%RM z^v_<wefP3W%7v|D*Ib;^yX@<ow}1D1OntPw`wZLvHiPebOls$(bG|zf9=>I<rAq_X z&l9_@i7t8fD`FOtSeWUOdd>2iZBY*EeroM`nbW!T(CZ~(aw~h*O@H=rk(S-YWLBed zYl~*qTuohZNc*wu0>kB6uPgquGi0xSH~CDi?8Y92<I8@gx9Oixo;druht;2(DP0`a z@4hxA$E_;V4mun7q;BapW2etGS63Z8v}eYa@-4N(R?{av+G{=iXVTYqZu3s}*XO8& zPwwrJ7M*{hI9R$j|HbW`M=E;`o!cGpDq*U^^*^8QEPwSoQ*$f-vpja)%kPB0Z;-kx zT*b=GZl8Ml7W4PTKZ{JIq{CyM=I(vv_Pd8IX~m=~+pT<}Po%6~VKiyo)|GoAte%8L z#jNu2P3_m)H`#Ql)sHQIV;z_tFV)qmv-6d%x0!XDUG<@A28Xcv52d|3v#lrf?}>^& zHDBk{j;X5x?CkmLJ>BXP+id>_E!!Bd+QWaXyQlb9i#6^+ofj7}OIS<Cyo||=5^J{l zdd%(UcFm@yHBr%-CB;kopH2{Zl6uO;`JS>__Jmcd|G%u}Id*h%RMJh&=-pcW*8Wr7 zto%i<EU9-`)FgMyc180>i#rR#yfi$Izdri;%d#yCCWyD>YZlmFkJC_;xm*$Q#`|n9 z+nkwOK3=({t(zJ2w*1+;<CAx(``ljj>dlMib0YPNmw!l`qoXS$ym6ha-%3e!tEl`m z+oI3m-(<a1_S)L2Xg&S0Wy8jkrb1ia&b%4<*-*;<-7OieD+a4h2Tz$*mTf0&wM@1v zYpa3XzRWNQaYciBKfWy2dYm!!^Qns4VJ23G=GT9(e{I)r4Lmi@WM({3P^I43$kZ5l zLCw_|>&Z`c@SgjtE%J`V_p|S+Je$VVZ&nvQ*=%lYJ)`c7>bwN=k3a8AD{$^p*}6oo zH#R(a@7+Zn0xTaH6*}%dysf~-SAXQelLb?gn{Ge+#HVY2==t<Ne~+&}{Qker6$K0F zpBioJ^ADf&Q0tNJNn0#e-@g9({P~vK*Uypmzpt<UTxQED=`9@RwpRaqetkcKYPfI^ zA4ehoXBVlgmU~uT{#?F3tvT(Er=;3ai6v=F(Mrq)JFA-eeS$rWE6k!+7k0Qzi=Fp! zm1Vu{cVpf28Z$1fn(KdCywf{mQgQl2<@hD->CC5F-SzIr`E@0C+Z5~R8Pq@O(tTW9 z<&^08#(!;8()=4)$8FTkG@bt;cl(3+8l%AN*Dbj2Tg6p4$*s{Tet0}mD)n69lRGl+ zq%^09YJ^`~dVb}1(@Q)usd*cw7p2bq!mXL$KZW(2@_NS~>WgPQOtRqoVdlBX?~<R| zOwFlFlHIGEtSrLMR!4YGQ~WmNh_gg<{iOxpU&-v`FXG9+eyzi6ZRv~5_&sN=eLu6< zUg+e0;&+)RaqE%8Gq!G-J^dTU7sWGgrSdYT?RYmmIKcF#02k9K{{>vfLRKwHeWR}* z`I=GY$Mj?SpM2OZ|9jf|{XF;Cj!r4h`eB|kHPKDF;n0gOAM8LqO*7m7**|`N2xh#* zcIis}_uB`qyzrgn$mptOdttfy(KTN?>u!th4D`8u!}`{eA2x4e_q*P+{G1l^;_g0O z?bugqC2wp$VrqLeCSQ0<%Hr>K2HefPEIuB~mhg0U>slPGbM$A83D#4}*L*LtwUhrA z+oC0Vl42UTJkxec?YrN${ciT@B<31})R3cUTWdmcw$v{-eY)wnchYSmEeolYTK1)z zrde9@sq??mo$P3`sY2_^jT8AlKHC0Vb?oZgEeT9&IUai&mA^fhrC)Y!?>3erCk~w0 z!jiDz!LO$&tP!Hx@t5@t3~rqJ8R@>hYG=dIPfwa+U9T0T1)iAr;OPA4f3~DLX})4^ zVJgfO^-T}S+}ro%W_|jlWgg7O?U<zB3%`+V+SXOoy(IL=+TJ_uyIkHD2TYHATUf#I zN$ZvFs<4aOjXv=)sUGmi?$SHY@3>*%M*%izF7pKiVjP>eI$HH7Sl75-d-Oi?9Sg^y z8+DCJlj=kTkDH6u$Lqa5)6^7s|B~|rp@^R^m^_qE|9YdSQ2CnS?D6b+Hsd`TJsy5t zyrC_)*K?x__ZR1c*ueaUySQF&o%lOp?uuHzHO8xLFYq^(y6$a#t+giH?Ox;7pfis3 zR$Je-^UukU_`Yp%%MHf@<rDEo*&3>E=w24$bWrF~{*k9=b!~R`o;zt_2YDjz`W|xU zes?*?VQc&4b?@1vr7f%Wy68=e?yFCGG)v*l?tsR=TQ50%9lt#LR=M=~SB~>}7AzuL zSv|UnJ6JW2L?^75YM9#i`-6OEE#IHci}&PYn*KTMVg0K0<30bL=Gt6Aohdo9&I(Hk z%-3do@w0jP)5(HoPXF5Dqw79zhO?BbiJa=GjF&fhn5V4ZKX+wQNr|5Fi;6uai|XU` z>uWPva&>eU-+tv6cDmCs=~`by*`~->VMa-s(#D%VAJ`gdmCo^AdgI%f&OSDWzHOBW zT;&!$+bHDLF3)K_QJV5%pL~s$)jaYzWB71Y(YcP}GAgO(lGa<zmnd#Gbe>wZ^pE7% zca_~cH%*H6-sBt{yf%m<?U<q0`_u9BC)L#6W%sL}+*I}F@#)Jlk|Dw~cg3W2W-x40 zQ1bUT_Do$e(SL$s_H)y`Sz@18mpJxmE_PE|7P2tJ(pTcr)Gq6^xqUxRP5LdD9OPI0 z+d(S)^MSbOMN8(X_Ifns3tvunKi60Di+-J-!iV5~*Nxj#>XP5hi0D3Z=~L1*(^neb zTsfIr(mpNPSpUB$Zj0EAqT(4Me#Xf@{HNYN*j&NKY|L~nu;}*U{>g3ZYo4e-G3$tH z$!#=Wm$GfK)PZl_2C=@kc6q*)GW69v|8{=cimNyCen$mFu(fZ#^7y*^yk}b(l!CU- zJXJrh;h?^~&D@q!?u6FI%N6W*u&&+DmL=wKK4|m7r)v*}J?rJG=lncjzh2PV9{=ne ztbe{l^OW25Oyk(nZFF6~X-$gM;}e2TT$i&$?tCkFJVA89w&$l#uvW|cUVpPV^#@<I zT&CK+XJ!I^Z)QaXMsM!FnHO}>`%>HMJ!TRwUX@7|K6Xt#GWGM;8+YF<jmo&2bSpUA z=<&pgeTiOemS2|tmWbTE;p&b0^w~vAFaF$i=Ax|RQH@l#7zI7q_Y&Ot8#Ii(3eR4# zHJYIJei6$%iJG&M9Vh#=ZApK7?NznI+27tv6Ruo()ul7}$3^uSmGd_|UFYLncwgTk zqGRFX#dVGi_q?Sq?cquawJqdXRmhWd(QrkU@Z;dOtR~lQ?`fDI@od)pb<zR1?>5xm zddcSSVD=q`HLk`FeU=~DeW&rkvb{McEWJ73+I`*R*V4andhNNxp3ijEK0e&Tb?cHf z|I%5nUv+-&_`a+7obsN?Qn`mrm770v?3I3gF?U&W^1Myfa}KTXvnW`+WJ3LnrH$^~ ziJQ)y6Er;Yvi6@!YvF@4uImjmHeD(1z3D0FS|MMbBy#bX#^&&-X_=;WF;$CvcTIGf zo&IFrE8&B$PjzIu1ehz%Tm7o{(~-xW`Z6xhL>9mFj1x>h`23dfldj1IPV=M1L+(wG znzSLhZj-TaWbOLQdr$Vb9j^&@a*CQ4x!W&xLrF=?vctMl&$I;bd$zl6d3$N+ISyBM z-+Ye46V+sAT&myw<i?^EFMVsLXq7|-24ri5y*yR@h|6bd>&ExL#N5tKy;piq>r+dU zsvmd!Ufr(R*T&gVl6f5O8NZ61iAtX`fps#^yf5GUYW=EqZ$76PbU*63O6}`a$!AR0 zGB27J*{PJjRU+B@5W_m>y`o=K*7<PiC;hjr=u&?6L1d*lBm4Zj^^=w=>8;J(YO%If z{^E<M#m)z;j(Il*e12XV-QoUs{nec3D;O+WdaFGqKTXiG(bcR=DL$8Xq|mr)=CPJc zPsZfubMAHQnYViJp$d04>1!tHKV?3(2W`4#mQWfN{9)<Ww5{q@w<lYlJmo60U#vB- z$gYXwRHvMO@F}B@;gU~u!_4dZv{Wa4Onwm~e(#-L%au=+Ol^@{zn6ZE2@)#l*>dVZ z#uks)yNaKjVlvOH+?R5A%jHOyEOyP<2Xd*3>c1wP_V_F;n|bnDyGDUhap-jIHuaf* zW~~0QS~k2uRy^eKt`B0(y<8ox&8uY%=6+Luzd5-4(TbJFmzjTBdn>N1_|fX9ll4KT zcWMOYdNviyoD_94OS`+Y{I$}Gs-vmDS$A*U!O-Pab$XV>qowhaE#nM+^QPCF+gKgg zZv2pQC;z4wSvlSBp9HSfwm%a5uc60xiR`0`PohJo-cjRQ_Ghb*xN+p9EB<*WCQLc% znkzJ!^GBBAhfhW68fSN}-#PbYu3PdJd*MCD>Z6kHxu3t}?|<=vmEDBHr}(_S&FJ`I zc6}QAylqdXWSHG8xOZ-E+)6v`UsdXtB`c$r>=oz;`5W!<*yYfsz@2hUi{w@omBeW* z=<9s4#_M5)>@2xpuehh&UTq;e`{OE3Uo=omseSA1+a6ch+?zJf{OH7@kb-&fdSd*t zYYM(@H8-u-y;nWm@MltW=9wkV%FRm+L-tR(9&CE`b>$AOzJ8z2+j#WOmioxXxbD9_ z`>WTEs~fGe9}4aD*J?X`XIj<{W|hcO5n8|IhOH4lvbJ|`xX^Ll&6jG|+}fl1DPV23 z_oM%@g?7#XUdQI%a0uAWayE#wI*+&3%kj71(tNI+qKh=^yz9M+c;0FMlAUwCaKBZV z`a9vh{)cLxl_hcY9jtZT-~8F?-SuPl4)6Wov#LLIhq;NIbFJ^g8(iPZ8s*m)tbe)m zwsMm39rmwBS04}Eq`hZFK6m8hWAe>UyXx34mg=nUyW9EH<^ALhb9T->@LNJB{EKzR zy5!2-H+MIc?dc0Xer4<RCG~RpIqO%{B&AlLef{s!w<?omyF0c=Z%Wy|A#2@P(fqfI zE^0U)SH9|2eEoD-aD(yQI6D=Q3w@pqmwsPaB$I5X^=ocugt`3c<nmelF7GFwaer2p z6xe4dFZ%bK)|%P<TQ`0`)84lD+5cT;ahVEwuY!xREKLFz@bF80u)DhRs0(A?^hZ+| zI~Xrb&z{QY&0hYWwP>D+JG6UXHhE&UYP|tU?;tf`H{T%xo;yFe{yQ|wKG$5x<I!-W zZ3?g9luHJNAO3UuT~bmBnLB6B`*VH|d08~%8?Pta&~{?K>^)=hgP&`E^W0v{?j&j` z^n|JTYF7?Jc8H1Kr^maTpJ+TNIh{UH`2Q<j&Frl$rAy^pEtN0HUNl<79Z{riIo-q{ zJJ2HV#ss$awO7yYeebpYn78=u?T140Cf$qptHWn}?TbiM*o(`viXT=!T)jE(amL&? zD>vWW`fRJG>dRfevvm@#n`cVy+WULL|GIlo`m_11l6=2|J;`V`J@Eyj8ndN=*>v9N zjM4ScvGtX+>;9efpJbf8WZpf$%iYs_GTOrr?)Y~3_Mhw8&x_7m&an`8KezSKor*uY zA5WF*CzzgN*#G<Y+wUFAW|W2rNV&_Lb8tLlnD_jl>7x_QM*@v%m%lFjzG%<#nN22& zyDEBDWpMd!E&k&t5E=70#Z=hEto_}k4x6Wf#XVXMZ1v9dwWqtqn=03)Zmw8px>;e; z)eY*RQ*}?7N<BLCR>k7;o#(CI2YF8LIqljk@S~8^twYM)^I41g4vxkB&!=QQQ=MXY zY4OswFB7txynFQZH23paXP(q8E=ev(e0uG{r(icDy<_r|HuL(gwn*7CLDWXa=t0yz z?QGsip@IWxKW&`qAF5b#^?qd4eK}#dRO7n|_h0DAOgnQi?|YMA&Kn)6_11PfKD%0` zO+B)K`Lfn?o65ww%V*425S|ih=+0bbHgnme%c4hI&fkB;6wN;Q@ZnOwgC8X0j$YK! zPU6&(o4!IZzT2{F;{v|LDm-s@b#<)R*>yts)YFR-4{!3c^XuNP=RUtatz%BN-I1=C zbJpqnTbs<*&a;>*bVS9C!;$~;iPz#RPVa8i%-+;*qPytk$B*G0S61$;*A*!|wl$#P z<iRetrCeRxPOQ*=8u>xFWvXzk=Iqxy<Kosib6(`ts?^)zdTrjdlNTM$j`+-6;;a_^ z{7vO7MSbh_EQZAy-jS^?OFx~td8WQ$X8lRo0u7rxfisy@e0P6{4QvVK`Mdmuz2)DJ zOXYul%>8A@$ef<|OT72Oj997O4F_13-8{~+U`9xq<gfH!#lLph2;~P%cwRSOqGI`E zxsC;0mNn;UuQ)ep=1!UyrgpQfpQGoD`_s)PTc*8KyHI6O{G(-`#^zZUemt1elQbjy zYkk$Kg;loOSzV0Y&*A1iaN<$0nD9xXrH>YU4!BfW?{JQF(V_QAmmk@yR8RKx-XJ7r zkq|S((<9Bo$Nt{(%XhhT=N-9~vS8u1GRa#9CVTJE{-dX@SNW;zri09m?81!Bz((_) z#IT@Ui?;WiY*~7`PB$;-<gX7;-EZxCv~Md@U=ycief5OP*3bDOe`kno$YQ_a#L;gZ zf6@8P#O-M+N6K5Q6!_&Pdh|MEnH9xHb`&1)HZiKR&t86|M`HbDM}F}`_qvyGKl=W- zFlXCGAEuIytg@GnCvUA<zvI^DBYQ7}aXgUN%cAnmcGq{Cm0^pSE#e=r+Hp;7EN%!g z$~($bVZoj;gQ5N^(<=svw@;(=v!;bEm~Qg+58o^|AKU(Q`~Im&n!bNuJ!8#I?!%2c z-$=dl>fFa!e)Wf}D(}v0ooe~=)IHA&t|z_iI%oE9oz(utOBBm_Q`Z+xH}{d6{rYEt zz43yoV{>0F>=5fX*m3gPBQ~*O3Ddg^0~$q`l#?otpS|PQsx5lzZv8Q(+frAvAKnX) z?908<$N9c0^VVshpRA9JJGU3+zk2RJUH_?p(eLBC7H!wO&$WN`sluOpsqb~}w|rmn zN%z`1t*Y6d)_&N%N@n_dk8fT-naY2hnzXvS{#|9Of8OD@pAJ~nSZNCeW@T(L(oLMb zX3dA)Dbndr1HPSG<5S^(>QvHOt@^<2Cr@$h_uf_*)|awAb?Fgt{n_UO4%S;eKJch} zVWyGZ%<aC%LVv_6^&01CRHq+P-J_lwv$1Sy%k7ky*88fLEFQaUx^C2`l2fPK_)3JW zg{zv0^<(H7$sPZ^t~IP;-Zyo}&ig7hOBCMEh+6%a`%2WoX4AzNncmKx<;iz%S(?_L z`gJ15OpT}P-JB+LZ*tbMh}~L?bF-EmdheAOW2}5L+jKFH@wKOCoBx@3OMlsyS-$$@ zo?N4Khu#Zi&M9=hX>F|c&{p$t*Vff4chnwh{n49vOwxSP-f4xmj9-3=*X*r&v0x2r z<%<PtS}V>uMsB~x%XdoZ$bbG*+iW#9Z>hOj5bpJ*K6l6JL+>>*&%`?4wBD)x(6)1T z*H&$-+iknG{`5^ccE@zm-ea+02G37f^VU3Cu%@-@%YrqImA4!tvtRFJPhI=vY4awJ z)a93*jy->Np*(mk|Mk^hYWfcBRFa(K{J6vU##VW`rJT<X9lU>hmgTmEom~4@|1<RE zNqxVhv*o+WERAdH>SrWN&sy<e_bd6!M?Ahs`C1$m5vx2?@%3Me@Xpfn3>N;MSJ_Wr zKGD~j?ZD;v4{kpX_;lrHALFFJ+~W>%yKWe6I5DNI!P{sx=T>gLQ%`10`?^Ny{?E0~ zEUUMbx)k;Y25vWFSJb@v*XPRTBS&9f68HGL_T*wAt`Iq{*n*;$RoxA>_4EDaNZ(re zYT4SERtGonER5K^rTVGa`U`hG+B!px!=|jZ>Yem)dernsZ<m&8ew{s6JWG0sRJr4; zt495$DMybPPu?}n>G<V2yZb-gy>``m^$nT%aW|(*E|HLEDbA1TQ=0N@_p!*0@$0ht zyLK7XW%NH<DcaqxYAt!YJ8q58%7djZ^;=Ift}DIwg8$W{Q+xBa#`oC&o{@hkp247< z=hLDOyaB(S9@uUWuln!n^8XCZ3|`Pf63jt+Y*d-eElj4LoX4nW!nB0@fu6_4O<^m8 zp8TI(pf~ASRr3LZBgxOseob5Q@;uAr)%G(s&1ZTh88hqM{?{k3|N4J*-gJfej8gTF zU&-j5d%Ef0p4!!q8W!8^u(&R~eA2(AUi+=sXBP|3^$rzYxUT<e(+kekSMF|#D>@gx zD_-2HHTP@xtI2*0v6nyR?b@OoawU4wp({(ZxfV-0m3*yKw{=$7|KiC0OPrJ5#1;rz z>^r~xzegXx@deIy9+m*!#8$uR*7g2hzV2K<&$)gLqx$~1CUy3v?Xr^n4n<%6IsMAG z$}gVD>-E%~Am@4U*5WlAAF^y*Ze8EuuF^fzCZi~1+AN-vUlsd`Ocml((_<}u=b7o8 zeX8()-#}#heYgHBo>I|yngJJP%%1vJhG(ab(aD>fO9gI5ubVhquc5dns-Z5sDym`a zHH%H$fl7*etBVe$YHah~*ZyE@&6nrX-4-xD5?CYmA$x&X^CYfJy&3*9kBU#XSjgzX zxN3UiLPk;l>j$4^uIqinzc*b_(on<b)jWYiAJi^6-41Z6-g=^I({WdMj$_OlCKpNO z|LWN|?`>%2lB?(H`@7zDKQ-x-ER_$uH<N$)dY<aK{~yGq3i!IfjUpy<^T`vLRO>Ab zP<C3bjkNApHs^WwSv%$#*K3tP{{uIa4%}tbWKy}I=UHfXd}WZz|NR{<T|!GG*FT?h zI4QB;?a^#`&!1nupPW<j(|CD?Ki?uFt2z7rgofEo{cmqR-+s@$d-Z43SBG+3n;-Xn z`R47XezeR_c>D6}x7V)Oza#6jcVy@8%XmBYn&R~IXuGecB^T*iEA0LA@0W65vDUH- zEz{T+5~3wJB{4expU!Emn)c%Ad5IZ)f15Sj|1$k@x*w|*!&_K(eOp;IW3i&=o9WXx zpWbOVQ!U&rldF1msMpGk{GC@;L~9*9HjAZSeR1fuo!sxHo;=Vbtx~0@wsQj4!TM9n zwWgKpr_a`FE}6PED<Wm<$3rX;S@|;@?sA8{C|mkhjO$>9;Id_JD=m_ztu%=G<}m$I zoaY8bALA{Po36?VSWiv#i@Ui!!HMsL?5aIS&pr&R6uf`x^v!egGeh4cy2sv`cHzj` zZni1qJAXDcFME~d%scDUadZBQU03$6z0;BWcl!Lrj0%C(^DQUD@4CXCqjIB0c=MZ^ ze^%#;JXW;r+^MfVhgbLfiLfuz{IA{Eq`7d`)GDj2qbE2cANMVp)zk3)ZtfhX<`<!p z=b4&+a=o=Iz5n`m`NTs)4ATXcFp5fsCGqUsyYQOioWKb@m8ZY6tke|KJG{ALd)Rcl zC5+<r85s^Q4y=*Lys*lN|IqRat#%pNb|wuo?oZuyali1DAKUs9boDqbbppd@Wkyb@ zTlM+Wr`QdjWDB{aKctFx?fUX>G3TXeW~r&c8PEP*IFtKKz)(x-_O?G^EB4<09DVa? zZ~f`~t>?6uGd&B~>blP@evr>O;Xz|=uF>(}=FK+Sb{(o0d>hr6{v%88h3L^|OXt0n zQWu$fX+vM>?#QqnVYg{tH_c9yd7W|bafQv^PLYfii#;xKlwH_k$arUt9`F1~SLBLU zU1+_fai==C(IX*ALvyzL4pAm{JGR^em8JRoiAqbhCn`mXD(O5-3(NRyS9bnIdtr7{ zZJT-JA?f#*E=~NBRbO!1*ZBDqzPyv0B6}A3f1BIQ&}Dlyr*rw7d8~6o^_F+4gl86= ziVC{PID<p!@ga+gu`c&Fe(aJ?aeiK!!WCl_$rQQmu&<gT>y)btdU(AZde6;Ys=H<G zv^gI%@3}on)_AD3z2}?W1ew!p-+vUy1}P@6=<wb77vuh_@D}5f{}&e2Pq1;HwL{S| zGd-+Depaev*WBZ=zm`^>zG*4;txE4*e#V!V3mmqr<(}=aV)a$8i$dX-cDi1ed;SeC zlg50}-qq2sB?8yoOFXgq5$~$KbvsV@O3ke>;<~Wzr{;&>+MnHazE2K4)g730h>10C z)8&7WnWguo?=s%EE!!MdD7i^cRAs~TfMty8^<`hCihixuzqb1Age&o`hdLK5{I<f> zXXd1adto<bO}((`RL2CF{0Q6S-`OWz*&`+)c=}<9Mf>E5x|y@?II4a-mUQAfvuA~A zQI4*v<l1}H%U=cM6<*(%GHvbDO;fH1nVmM0d~rMCG3T#>oYR`Cr!RZT$H*)Y_1Q@< zAere|b^FAC`e&Pp4Vl>AvsB#Zs6NbgU~?k#9oN~`Z@xbam@Rr)>(}3dOTyM4zvj6% zQ~#HMJMZS_7i&@?6W{;peC?5Jxo+_c?k5j~oO@*!Mpp-I@LRp&^SM$_b(O<c)y@aZ zJtVlo?_o##inHs_EK+<Qp#0kPThGm;RUSRxw{ZD>JGSCT)#5`l>u<B1T70Xu?pCDc z7wPZQuNKM2-Cp}rfBvoM^|$W6xbuGJnjURo5tUGujBmN-^F5sJtU9ND+UD)&XBubC z_i0-HIdt#AhCHpiEQb~?dUq*#)p^DRr)3_zoppB3ub;2=WIn%ZO<uR~^<R!ip7_1f z-`w8xkXd}%^6M=po?j4^;IuNm{<q#>lfa>z*K@a+uH7L!<#CzVn{_*^&$fK$P0N}0 zOdxfxwd$M*?F)O}G5UsmJ-zeYqXNg%2aS{$d0VLcirWA0#R{$4E^10%;s;V)6=vvM zmI_Z;Ep{hi$?}b*1(VMjzWc6gn;Pubv7P_0n#S_G5^KKfYh3fv;?J5lKd&fUidyP> zmM?q#fs?oYx^M4$aQ4bS^}<+}xAk{Se(vF~wkiLzZc>>YXL;I*MaQJO4_!WWX2$KH zqLS=gA9{8CX1K*J+z=RXkA0)l`Q4torgLabkF0N8JeTuY>lPN(SdC38dB&B!-(Np@ zTCgu_uG8<G?qdF7)9<ff)TrlLXZwHcnZNfG9tR%}+o!i9ulit}B;)O6Im^m2mSu#< zoe@dspCZuEZ0o%>s{bmdjFP+OX>HrTEFJ!LR)6_a@Z3CBz?Qi%{$ziBz+t~Gna`Db zShZLBGB3`ZuKrO?-+Ej5ss)q3eET1u;g)mgv~W(-ruiQhOHMc&|JXX~+-0*<k_;=R z9Dey`PuRBq7Ti~x%WVIBF8|LoopDhhq*}BvpFA;Jt=<6TD5$kj@afWXY`&lWu6X_G zK<Kwn%TGVmKF1l%npgIS`&{S$eT+>D99BlJy?OW6tSnmxp+5{Y3@hgTn{j5z!}&8O z&E4aD>V?JL|9t*+ZTsuL-`~H-ul`^3te!AeapS%BmIZG()ndcCzDxh|>#y<Y^=o6V zS)H4HKkh%@qhp>w=S(SORa5r-&2~vXYIfx72MHoQC2Z^Rr%x{4c2@M$(<wns*7G0m z-;3@x%DwY;QlJs5T(W(}w2H;?GNLAHAKbsSxjg1=k&(v#K4sY$*UN6t{;5oE3)Qw= z)AsxK>(^{czP^{AT%_9mvVL-5psT|TDbeNi_kXYDW_b8z{>$qxr(1JK=ZAi)+~jyv zLMm?uceAy|f}3k!bFEmyk^j8gb<3LFb6&X~;7t#!2s|ORVP5GPf&1^YQ+&hnmh#Oy zI*Dmn^Ginkc7H~*`lYX{qvkBy)Y5gG?dpjKJ|{mmyI0MbqFZO=raF0++|`;LNr~Yr zo^2~vNIY5}kXo+%wK@H2^YZN)skfu8xzD^Ulg>G}B&p!go(;UK*WPK9<ejs{>te^; zJva3EeUEPDzPvWA{llqMM_!00^D3O(u>E^>x1V&2K}V*zrNv*-nE%R|@`^cjb`SR1 z6#aBRW+^#!uIRDOa1%%8T7xU!73#ROrmHBZPbd>KSLFB_SHF*GsSVp+eS;`R9fJoR z3;1WV%Y5ZEi&Ki-KeO#6{{ah)>Ab=EZolq4&=H?Kag|cD%`tW>E2o&7553$RR|po> zFRkcIWiJb!@_o`tDL?B2%okNwemd=Mz2f`N@Un`w-7GAPb?v;2t;z@3JZn-L@)_?Q zTD4BMF_SS?{O+{O);sk(thXzhXm1K#w0zb3gZCpty(auHKceDLY2ffhi}P*#zI`>B znN>HIhF`N*V&dS<jnME?WY4*nQdec*{Vmn{^omI{p1z(goBm>U?C#^j`4gr&sh`Mq zX_SB0?joO(K7YptN9*Ua@}r+b{wi%gyFKuQP@r-ZV--u4qp!zR<1(8A_3om3rpsMO zs5)2M{Yd}+jmEv}H<%p}zQG<N@LfBhZuiy$%zF;sp2oVL@xQ=Sw)Uzi{~uc~+_ix7 zyn=)5G|x&;{V7RWx9(?8UNKc~6GH-zYEo*?sYOK&2U!H2RS&GUHhZbPX6=_FYRq9X zdhe|l;l3Uv6k;v$_WPR;H{=-g8s+`!S2k$P=~YU6mUd{;jE%}M-qk-ghcs2c-}zvl zr=^a>s<}GTS=qVcL|%x>?s9vydy2=-3HA>Q)?RJ=!xa7G$hjr`dXLubXumH|x!3LG zBfZLpexGY~b8m|s3VeFYs`OvBzusYq7OC<+e@Tn^_V&sbMN1v7d<+rZ(sgrk;#pmz zW2W^t)_HGGt-X2e=33W`6|*_c@Z3DnXq{f>y@}_{46_hV|6SD^=B+*8`9{E-OI17M z@2d!&m;1K=TC(n#?x{1nUWeVneP7-CXnW36r15ur$KFN1EpuPbxpB3v<F9(z7Lzoc zlRH=<xY)IX11`;pUhVq&M3oh%ztbFlo-Ks}v(B8fnOnb|dwXg6$(IqH_f-0iCcaa> zuvOIkE9b9umhUIM{g`^9cVTWyyKITd_T>jVZ`vL2a|?fImtVT-z~o8w|L*AhtM1py zVS2~zw*3}krb?lKQ_uEgbFGa<)*i6E7QEoPi|o?tIy=lb61uOx<C|1ql$!cO`QOvu z(#w+K|JqjV(JHs>sdrC1=&ADC;?%C1AA$><W0^%2!=69*=y_c9)mx7&@lv0o4+LLp zI_30<<`m0bXKs?58kjs!<;tl_O+A(0MK1~+6y<)j$6ULxy~TOf^f#BhL~csWSz~JY zvp?*ZDQCRBfqdkG^&Ns!Bg5}ow63eFTyj#an`hqS665fq_||OU*M9W^=T2|x4(>fK z(Ia<wp5=;NrR6^R3w{18EM2$t!}Hej6>&1hIXCQn#$?bFHF2fd9Ov}~d}<u=bu(r= z@AF}MC6IAZq-1@zetq@3r}tJ%oT_3gD-!?HH+lDh^EJ1wzrXczo-~(2O?Hd+q&I@$ zOA71aRAS>-U%tL4Lh!nGT%Yx$%zEA1R~57ZQzyIKKJ_v7@x~rY*2&VM*WU;lEq_|I z^{(S*?NbgL-zHpH?pa$TzGsnar);>}8_oE8w>a<Y<%w?BUv}zsRolEbSB$TgE}Co_ z<FS_WnM!PN&AM}nO_?h_*DX@strw_z@?xmh)3|l^rN1(>9&emvn{lT?X65-N?!Nib z^{<=NKfLafX*Q_3e9j@qT1C=j(x#JN`_*2Q-@87kX5ai4X{oaTo>QKh20dT*j;%9G z<zZofR`8^iZ||y|lv(+E&*uKU4EJV*uDHr_>9;^;ioa~%Qs2{`OrmyPn;`c>ds1w} zBe}+vx6TD^THejv&QRq0PW#Wn%Wni{FXbu!uH3x6K4kjFvq@8$ZQXZzoVn|L+9UGH zV?*B08*bGHE&bN<Wo^%s)IvUs%)nVE&nhk1mgs&}WxI^Ay>9z#PNBVe%bD(O&it8H zkeM-U%CYR*1!qo_AKWkQ5$%8DeYT}*#o@Wqv1@-ndG*|l``0?vQ*ZyR^7&^HzU6V+ z&eh8$9vgF9OYoMhH`=<y=3cvFz2E=SF+Mw&?7tb(88+v>h2W)HtB@+*4V!1L-RgAX z_1tUQ+~;X*toX>9KV#Pt(VxGARM@8+pUZc#;NyyzzjihoI3MyY)Qs|;)w@0HqIP7F zPu?~iqq-eiq=FVsbv>fGds=O?wzX&Dv)Ee?MES38H@#NWuAbjpt#4O9PiCr<!jHxk zx1=`7NGe6NFMj8|sQ+%dvSt3>savE^UkbB}aTUL!^KP!qk~gUZ*OPZj^Gi=FW3Vmw zp%HN1eJ^wQm(m(t<=56fC$6ykcZ+3`n*`Il)S}m^YxvnuuF1Q?;uwAHw6Nm4St+uo z{PGvupI+5_{N2$VUq8;)>{M88no|GT*Z<L~w{;<|lb?l!)IF;WHhrs_HcLP|VgIW1 zRsE#_RoVgbZPul_#mBqd@vXcldoOGK#jmO?3x(zX>uPtY9Y1<}&!?HrhU=$pys&eZ zP)J#v+|OOi>Pd=P-Nz#z7v!wE?yH!*^U9RhU+(*zC<)VB`+J|P!bgw$-?m)fGqNvs zv0WOvLO#c2o-r@Sk>ux1=QMfmZJ)*HXi>H8U=71GyA9Ekq+-IQ3vEoNbcRlwJImYp z=F;PK`|7t{cy>{J;_~Snn;9)R;{ScAFaOj29Ney&?zNLqjm6N!#AtfkW=7@uxi44F zJ-Ig1y71DIE6(}n{{3oNrV?zF8Q8ZcH(mX4zkvY9BU_t>+kfslDF2i<5tClKh9Ps- z^Zh?&%l~|yTk-eLg_>Un%@kUv%gt)P?$#(iPwLX4?E5x*{`^`y<&<aUyt4haf3DR0 zFGx#H;Z`ucCd8$1eT&<K!{=sg4HA-D>pQQW*N<V-+8uoz^Lv6`+3vsort$tl-unEq zwLvG|^BfaB_L=K)q)fGgicojnuJ#w7PjG%Yw7@Us-j3Y#n@e8zJeVM-o6lF?p2xZC zV%?q%QKj8>U&Gw|vmF!mKj+Ph-cnY)|7_LFex2Rgdwrd<zkOY})r#%C#IxxV0cY)5 zJ{sG6UR~dPf9|1po^4m18fS5Tw{W|~x!Pw}|JlcC(ptI&9BDs27DRtcy`8mn=kH0T ztUMgaZ7ZJVe2iB8eO&faSipk!Yd2iZDf+zQY}8?u=udi<e&(U?FIJm9?D)L)d;09} zmZnBuD|2`*7tA|%#OFMVx}#L|M<(7<?R}@;bF(zgygmKXW5(X;I$Ig_Sljsz&6S-V zzm+kJ(SG{2t&ECtrb?xi*>gTSU-}>T;YdaF`Ky()o(APyzkAkb)3-hT)4y(IRIUHF z<iNu}g{!-7X0vF`lDjIoYKwyJ*A-U9t5!Vxv!<>3{<bc&^5UJl6z(r?Ph7tua(a_R z_r3eq9r7)=e&OOW3XD4afcwsShMyrhfw@m_Z+&ry{lzSvJF@nxPcIE9%-9<r!PPjw zPdR`3irbrvUaxw1{%6>P;<G!ej)cAVJ(Z!l^-z7h_uO-)`dcfPM><4%efA6gcEIdf z_rAIZ*&zvzFT$?~J^CkichkqFBwjazqFsw-+uk|*sz3DH`4oBO<%<r8^?%#9;@&xr zPeC`ev+Ex(FH>_!{+R!~Tj1aFE`c?HtzU9i1sIlOpGgSQ+s|Ej*g))Xx%%FfuPT_o z%bI^#>?!Fzb-KiMM!xzr_uQ{(Zs2M8=J6`k<guf|t&4Kv&#MA;u6_tjOgX0Xv`h2) zPYLHk>?$wU`0WdMl0Ns`^4+OXvkv9wq_Ehp^ijP3a<TAEe#c{yiI$7hPrR^yt+3cS z;>MED)e@T7B2oG}8yWS*+|GqP`S&pI+lTjy4{1MfSoMLAl|%AV{PZSkm-_wFHD-L- zZ?<Lg(wTQJZQCv}?@xl3sIsBW_obCWyzEi=U7FXYJ&##+y?gfdKMS<??TtCL)?szt zg&ls0ref>DHXO;AIQiJie}_D0cBE|WSF#d2^si3uj&#rt>nHageO`Ap>htyu{o?-4 zg*^4$wT&_=JKyZL6nnOgpC`Lt^|EaB(cFbA-bKCG?P_21+F#Wy%I2P|)tOHxOt;VS z63U+OCC>PWa{YEmEx{ijudE8@b#!duW#w)7Jz1^8OUdj|VRXgPrU_l00%B%bO`0LC zw*!8M&YBXM{ULbeVVS(YVL8rGN?I-KQ$3FOI0@X%^?G@0`otZK+VyKE?>$&it5wVU zLiE-XF+-k1%nOSdmi+#4VO#Wu{n}G>xIa(-zIyAOtfM>MKW~!f`&e&vX~$QSlXqHH zJU=dZeM9eF$=g>tv=Uf5=e=H|yzqd2aHzj`XlRJ1>8Y;x!^YNIMe5|AxZ2;k@XTcH z^>=^jlh>|3Q1|nheDjsb<)CBgrnfpX@-taNu41+{LYXq3D|Nb0dFR`C>sKuPo#6WZ zc;0abHV?5AiYM}(P4jIi+r8Ief@O~0&6(@@HM^=pR_2s1PArLB=FyeEY0IBoD_jrF zk7|lr!|CL?e@|WGRQU&=z5o7y`T5gt`*v5)i77#+pT90DiP8`kPj}sv`LpKd@y+#9 z)DEf7{rB^yKEpa6e);ALYK%rrSM(Wvsx7the%Uicu3W2P-@LwKFPcsty=>URa6hMk z|Ia$pLsM$62fLhjP|;tftn<(7f8q4WE(iBb*&4p2%u1`J{^(q`d3&_1lVdxNBtG-v zyYiu?{+A7xy6!2i<h}1&7q1Pd_@gD$F3)>}v0m|#L)-%wF?(?aOXjZ+x@u&Kx}R@h zV3p=^n5q5OJ>%ZYhkAR0_g-56>y-AoH;y)DLM?XUHh=yX8O>C_c5gw>PMNLDw>h3_ zOw-Jo{#~G6^8M6`LtBqUKh*lfx1>v(Bh>%O+J}BmE@a<%czwCjs#)I{kFzd2-c~Yk z`2)}FUxxy=)xRtJ<NMu0(0g%M#U!7ZFD*j9$IKAlR(-wuoQL|B^=0-2xxz(h9PZm1 zJxq*SSUB3P9Q{63&M=;-Da-w8vC*MW@fhxVuV*@K6<qcG7<YAmZS*(ByOGkx2_;`A zR83QIzO~uP-!AjtQI<(6H%nXX>knM|eD0uHhw{$}OJ4{0-8xs_yXWD~tHl#-3VA*p z6!UuCw*6(*gjJIS@5D83c6nIp@=$J_J+r?*>n;8ZY)a}YAAGodnJ1p<>n^5`?=|`K z6^d+ooW(gdKZ=sb<T?>Q{~7yhhksv93|FYsa9y2uVzovYTjW!}-wp<Q>opQfHy$~B zzWt@<+6!Up{VbC{PKfz2#lGI&_xuIrpQ&Xni?=nfeR>e6owz5ly(^_#MspHpPW42; z&NAoKGA}o|$3%s=c>HlN(VCF+mE&O8?82ME5$B6P$Cn&*+qUDm&V?0ITt4Yudhz+> z%I912FW$=ie~Vk{BG>t#a~=LOFDsl}Xpy1%xO#iv8za>v`HzLU*GqDCFl2act?$Z} zkt<klS^mg&y8m>y$!8wgZZnuzF2XvqSlE({QMFj-+^)-|#mO4!)jE^wel4{5QywOw zsq5%cX4$6Ea5l?v`H7EQi<3JQTD`)>&b;apte>Eiwe?Vc=%lc?(qprHy^SUP7NlhO zNH7&&i~gXxL6kR_C#)#T#bZi}r$ctw)Ox8qoO?W7FD$rnXjhbFOEg#Fmi>B%mb{qu zU)QTsL@4Rwp@S#)Uzxh(;r_UPoB!1QEOd)c)cKbEOMb;_Gn>NF=`*=zYUZx(xVCL+ z-&%vIU7rqlot83DiCLHMO(Q(BVQ%Dnt4xKvCLYeaRg)YxG#gZH`u2(I>W0Y)f0i!} zU-492p#C)Lkxyx-xc-Gra(nf`as``n_xJQ0pQ0ZBc96L8EQhtGx%rql3tQBJZ{i2) zI|I`9AAHVq{-tA<{`22gZtb+0Ht*-jJ+U7-Z4R-k&b7Z@x}+}h_SfEj?V>9c-&pyH z?OghB(Y@_EJpPq9FFeM@`C?yANKN=++rMkw=I$$-wPf<{>-Bedr<UHC>|f8u!Ctka zY6{DS{8gb1mT~uA*sqwmf#D0gYMSD*)3f5PN|auC&8vA+VGjS^DP4Eod1Wrxxv^-= zLBBL#JG*GM(~N6GzHK}j^Y={HWWm5!?zvZM?t}$jU9FuGU@hPxl-;45=<aN8GIdix z|0(v04ds_2?ypOhTD<L6ebn!T1-G{gsWMK_4@kGTo@#XO@oTxi=cE<}?2K04bNE<x zmd6eK)$24L$1VA~eR;Ca9rvG3bNG($4+y`szM*=G`t8sOE7+oByA4A`uCP6<T*JZj z>C&AqRUfNX^K0pwthziUZ`a2q`Q@HxvIA4B-@o{@lVkRe4jFC-FVWraI{X;x72iyf zjd_^EdiUX47CjH!xwDfcS{k08%M+F}=X=4%{^crT=e5_`OShQs<Wpw;_o&D8sBMa$ zmg9*nHzqoyzx-XLZxwrqciO|9J(olJ(sNII>#5pgSN2)(U5diq1$i~aTs~r3X5Cdk zuwB8L_wy6S+Zt#53iqYE&0O^5?wO@Et2fuP#z|H!kPDSBmC`cN`6cFc`svpOzmE*d zg*o2#>G~CX?cR7=)utpM<&Dc(+j6(+iLYK&OKo0wyvO<0*;4bzu2%ztBdu2b;@)Nb zcF9HW&YCF!Pg1@lS0u6Wym&KrtKjQrax;1FepxhGYLTy+<Av$Z7V~bZy&U`J)JC;^ z%9{$lr|Nw&C~?VZpXewrvZYPr_OClT*W15Kj&gdbw{Y5pW1R`f&r_zkE$WK;b4=Wd ztu}eO$N@%2#yiu)4lw$2FSI%}|K)zq@5h;rPv3BWv8;Z+^zoR;BFovfKD{6Rnatjm zln`Qb#a8F?&TN5gPIn~keR}a@`}_G0QU5-acJVxs*c$0ycwBG^$E|h8&ICVO=-9LB zQPZK)^qe>M4*qdhKmX%dv8_#fp?2%HKY9u77DBVq#lFfvi!izIu*y%aY=&-rt;W$* zc^&5{pBlTCwX)|t>aA8VPmY{<LSnX0!J(B~xavNedmmlx{Pop^-wE>{zbTo+W4-9j zUaOovR{zi4Y`eYZZ1kzdy!rR9^-k>GcI9Dmjb^K_CTEzSadP_m$AQ_aA6IMMczFBE z-6)T{ubYgv%$?dk`+EM#+6Pl3&G?&-9}<6g*!$p<w3muMw{m4XjV&phUaz}Q?}i`m z^YYYu$rc`gmAy>|mevaL+*6HE)NSWvtiE?V?eneb#J_Bnp$SE+SxTRWT8i><-B;OF zy87s|w}+#)ZP_$C>Db5SkNf7onJ#<y!~%m&yrx1bFY_(!ToTly*T~IkPULvZTwPsv zDy=GW-<Imh4Sl~l`fptbx3T+@wJ<+xb!6Aa!b_H4V@<`U=PZkPCO&c7^^yga0xmI` z6FAmgOiJS0>=t{pJ%?TKa`F9Jg@I>pJYF`TBY3^m$%Ci%F$Ub3{M^7~%S4}<T{CWM z{rY9!i`Z%L249ZOzIwYTUADk`ul8}LoWH-e`HJ1%KArb4qfY%s?h+;S!miRUHucgk z7cT4-Tg0&>Gr++6$<vAAy;||tqjImRGDc*FF$)Q~<yYu%2nE#NUcBX4>e9}N*L=Q5 zR#(f-wl+^byHM$xjNSdHPbpmOCEuBjE?>TQa{K$|<_bL@Vrq}>p0Ura@d4lc+PRCl zn(hZ)m6n`cv>|r;4-@yKde@$1qU$3<uYW3DBV$^$O|$rL+|1qj>g#m&&%STc81l5I z>Q6%bo!wcFv{zPcy>r*p@=tEnlNs9Q+TTx^u&XFvh%f*1CuyFO$8VSJW1q0$QOx`M zlPY_kXXdrOI%u4Jf8K%XeD`&$|4!<8_4n@e?Y24he$2ibzTWOjK=mzQ=UX19>epw4 z^48tHoM8HXZXWxkRYm62YIC07wGlA+8FVD&x5Gr{=+lzUN6NSD-ZO()oNeWtsTM8o zubySejQ(n-zgpzS%xKFKuev%XtlRA$5hSj@^48n<nHv>%3a;)Ci#V72%wqLz&)Hgk z-*GDcC^vn-_s~U_yRpVnR?=1fTS8;!ExS=`8l=Yg^pdqk>Eo6=TYtSs*S!*Z^5fn^ z`?kD@-@jF8@wM4sw>|vZ^!&=QO@;ZV{yu*HkDopM^P}kp&M}IB)?k3Ht}>b~b(GPL z<6YVG(_441vYDQ6lu<Nf>7DuZe)IPWWC_h-l{@mKV%9Y`qr^WcCfrs&{q6GRbF|Oz zJm~$Xc6ZsigDdVHR<*cZad30ht#wm_KDgR3%CraW(ca<rL3F_t!@H%%#)sZ!F1xXG z{q!?O83XJ0r~LTQo9^?$^<b==$A(jiI!+}&_}@yOo3<+HK)F=;GzHG`nC$7T%4eTM zZU|GJ92B{%NBfYa-1DYLu?ZpylGefjN}?Usf`S@TEWBm~-!84P*lOfrHJ9yN>7wvd z&Bv`Vi(DMonB}frViH#J$zC|aaHfEPM6PLqcp9^Ct<lbU^&Nc*+yBb#TlMGbo70L9 z#JN8^G*}$6ogo>aZ*Mh4@HzXTGfR(bH<~{GLtf#rx06H;8OtwHj`E!}rM;WOO0XiJ zF<61&;GWBp2Vc&3aW8t2>5e}sPlKNc?7aAF!i#>R2QK!9j&IbkouYo?Y1%xENo%I2 zbt!p%`Npgzo}-ZQq$s@pY&4s*TeTP4g&w&{ng`A_a#kGPvGHhE<GT~WpPKi)DY>@# z{GU4q*%y?Z`<64oTwUyf(M9n>lTAv;-(2AMWqwHUwOLA8%UoS4mv5)qA8R##DKS(u zYKZAAII#GUR<n)#BL?<w^Bm&r*R*WqUmq?R^6T79-N)OU`Zi>$nJRKSPpX%ac|UKj z^yDWq1IrD*T@~<Vm^+i_<7WX*i#e(t@7rXU6$OHy$=p`$yI;F8YVn^w=afTED|9Bs z@phV>Sv~K?)}n;ksO2Z7eS6HlUn5HB_V24vtJ~8r3#s1eeqD1?GXDMa4Utcu)qItj z>f`LAb$k82z8UN`W^+z1zh0f-BrfKDrM`vj<n&~jNs)ec{#&{<3GF`-pgh;tt7FX+ z%gTeY@vJ^E8eB`Zn{lmBn0;V+b5z^mh($369~RH~n7iZ)t83q+cM}$AsWO-D_IY8r z^}-$Vlnl=$N^;uS9~Mn<eDB3FO|wxkW4ig1DIZ)?5AAEVUZ4ARiqKT%*3&JMuQ~8c zU0jk_|7eo2$JCj9lRBNdrky#W`tzGh@}-FjV^1kv+GKJoQ&D$|_RQ82-(xK^JyIe) zlT>t)12?JJTIQ<S>YZ7jvpmDxx8qrh5bJ)f2jP2dlI?V}szQQ%_f1U<4&J*YU$%6r z!lOfSi6v<kFJ($k&A!_GjsHul!4uo4s!gpOy=I44yz76N&T=!@>+OH?%xzQ0<DFIB zH-xr0_?U5S@m;3uE2tMVE7vY}(cZJ}(|b7k#dP(TusyPWF7!I=#uU46?`EcI{aL_r zA?6#`S*w#~b&Ep86qQBye2+4^)52c*QY!Y_%lsq8C+Zb`GFu1wO3fEuAS)iRJW;46 zGux}^y@$`*M7O5;44XG?_rA`2*~1pDobBxBJMX=Qj>VGVgXhC?wYmcpl|OvUsXUWl zXzkAUpp}W^-8rk{k<XUci94BbnD}w6G7`7c(h4!TDkV94(uArC%i_05YPozbXRi?J zUHnG#V{byT?2FS}6V-M8?XRCHUngDkR58`f$l}S%Q|G*Dckhl<sLvLtyim;ZqQ>gj zjz={|9X-U}vI)rEG!M<4Bbe6ea8otERH#A3H`UKi{AuYa$Ml1R+e@Eo7U^BI?u+4e zNDcO8>^~H9rM@BP?3t_aN>-dM*ET-%li9xXrkb-wiRg+ux(_w1&&C`Lcw(}2Yulcy z${QIc$rVN??tBoDudcCR&&>LNGq$9hOWL|hH04uSRj|8C%DV~ff2{r*?3KE(_+jAr zlRrOXt)CRKDs;)o0%jA<6XvE9JDqt0YyUU4q=?-4tHbnn@2)BZlgBemR*6boU{}g` zIeY2n$gHXRyiK3ZYJ3}`zn|+$UCi;qX9lN4H$<O0EmpDf&>9Q<keRH{ycSmKZ?E6K z{@B&-O}dGXX9=I0{6K4!ck1&hg)Ya=u$_CB{>quKF3j6C!danE@vfyf>-DzxfAek} zDY#h6wJm09-%ha`OQy-6`F8YC$$@RV7d*-~edW<rwk?NYN83kM+v>Xt(JR7PXEd+e z(Z{W-UG9A7m&MYa#Hdv_?-kpIdNq2T+LqciyZ%gU;_1R?j)(KlG2OhnAyx5j(7(l7 z59u9S?Y~pBOw;7!>O@V)JrSEiOWoCTIu08}?ur&a)W3J;mHgv&`ZJ1O^?kdhdt}|x zVsE}z2lM`{39f!Nx9;4JHw=e&-`FQ@omTu$K=xza_0O|3FYk;iJGOe=bIZvqAN{=l z^<U=o-&5Y)Y^~R3%VpVYrz7!Yhjw83%-ucK779LFj?F#$cU2+#(HgDj|Jsk=ZQOe7 zuOUa2nb+U-Z`ePbTT!v`W`d6K3RBLRi!OzvMDG83WkK#Og`IZm&hq@|nrpT8<$cbb z(s$*|t{We3ZEJdU>(|S*?^*BFS<Lz$y<u9Evx?q-y&KP;r7XyEu6AjP*mdDf-mE;g z%Y|Mamg-(On>TA7Z`*72cUOEj&VF`7Vc%BX_OgF_E(TOb%=(qc>YnrSnELVU$4vej z>9S|_N)+&>v)50*a)wd4-d<r#!DhBeeeLhI&%JZu&$8AT&xLvB&RTLYtmR6bS4c=@ z$k$VSi{`m)UwL-tjfBU~ZC7YBb^89Ou*<70U3Z7|@#lZjb9ziZi~72`=vz;SzTjb% z>Y>hi$^2f!|CxbK+h2)iUGvWA4|sHQ!Uc2rrqtV_8~>&~Tdh;tbou&b;r+&rr;@@q z1#H%t@UOz>3%i%`N*C*I-IJ~tfAg6Bg<rOMMedQReW80S<}R9h%w6iU@wT{AdqWtH z_05`8Qvda4Jlp9SPe?NWbbRFG@@oG2)Cqg}m=t-Am(O3MUvML6hf|V-&y^!*Th3a{ zS^oUVgWvjM5A~#+XVrc9y`8m!k@1zH0C(R}fo}$OTZ;m!b?Rm(?iE)s5ma`Zx8U=& z3H%S{cIr9pn`_=7BTzkG@8=4OkLL16BKmHvnN$|=tIs3c<@~B3)yc<#U(LvU{nYuD zi;IJ?dRA3_ZsM#wuZ0sHrT6Z=uJ<>jHn4Jy@SO`;$up-}Y5j?qvL?{qS8|%y3hBCS zhvsKKt=;|SyXR*6wfC5IdfWqhhtUGO6w%lm<#zJ55x)J#rab#TYd<?7CnaP(Kj<p6 zkV2vJE8Yne>Cbi5`TqRpE|htmY<0Vgac$V$nYYe8K0g2E)AvVptp3kXJ&<ImvH0(& zf8lkXga7^g{O<Gb*Prh8XELtc!@fNx|Mba5BfV$-Yn!-Fm;U~`#<b?5RDONb?DDm9 zuijezhv#Q-yq`qOv=8q-{r;N1EiJU;-~`jyHyPQhWb-4=yZvj~db=rlv*=Hgs@FVo zgZxiV+Lk3KB)$8X>cg2!Ip=#+u2^v>X^WSYX~+tjj`Fm%9oOpSt$i-YcY2zi*xQ}+ z_87+1UABqP7dRK1o-Ey0vb{^*jW_*PaQ)ZG1}w3;B9VKn*H^4=HQeSqFKKgc;)g{_ zN}8Mewpno<N;j|6D!h8=;Zv54LS7%<IMg@p`YI5TJaNCG(9C~Mwa;!XC|Vcv_RbrD zB^B?kaY`*INz+yhY_ZaPzOh6gy=(^8)VMVwoM)e$kp6jk-Pe^28xGB^k=-_LC67s{ zmBES0_2M_Ak1PG~W|^e5<bd8}=jNkRk4#)xaeT8wkF$(d$+eHtPU+{0SyOADAJfT{ zTIgQE(c<f@Icq9owbqi|Db9XoN#D9p?ATp0)mbA=NpWITOu$r)=tY97SPDXJ^i6g8 z9wahH`9x~)<6ebNLi1$Lg{HjO>+_0H$+AM-<zqm#-NAalTkRs=wT4@p3u=vbF0I}) zeU5gOf~v&<6;J-;1ILz63q9wpu;9Agf|R}p_0vyhm%dwXYV+h8fA~z{V_I9}mRU~p zUG-pX%2eg8e`fQa*zxtk=h~_(_g7l|xUI>0TH4EA^P6ErGV_l4oMtj+OAbmeo>Xj| zKPUL)a_jtedz|8h!|J`|Clt?pw!Pr?`4h}8UuQEUH=4}zndn$s_r%<Dddi-UJX4mX zC(3^|<DXw3(6ouo?!kfebDRH2w&glVeYi8>sI<ek7G>X#huLovqvuaAcK)AG)qK*r zReJe%wac4sRCjo)7|X2_)xR61^o_y)>elkhF<QG9%}D!Tp|#Ovw*RuM`d(qCO#RC> z&p79$SUtZdckc5CdFuk!h-lA@2{n?AwW=rHZC1>DD(Cio*LumPiN(?O;Zwv4uIIO3 z%1<_)(J$4~n%LPi$u6l@`1Misnagxartk|r-xSCwXAoOvyhB+irQt^5;^y5sOe>wO zI_s7*ynQR@_dI-2>&Z92Q=4R;>D3FrnQ(G-M8m=4X;arMFG!JiGWj7x>g;FFetWfg z$`_~`b1lsG$laf>K4oXbMpGGsoOwmI6U@S-tXKc`%P8OF`z$3ci#hd(T;To5WjmJN z$x=7U%W?In|CQrtqJM7A^VE<V994R~3NltVzj=Q4d~Wrk?Pt?+o*Qio&%b%umwskN z{go)&ssO&HW#63a&q)>TdFvZd6JocN@94*)A7}LK+g9fFORGn1uSLSAZSl^=J2O7b zy;kwRXZlR<*CF$YtD|^&Zv=73m#nY)m!dtp>)3~n_v7wIsLbZkVvSY#v}oe{qw0%o zekrl$v(Is3{h4&HrS0b730_~P>`(aXA9C3H=5+D;B@29bcF%g5ZOEl|<h<ZC@%0nz zj!w6H#{Jhe-lYHG-%7SQ2CF!3TKjlf>Z;v4To`zES3+n{-le}cgcJM^Jvo_U@MN#l zG`+9U%RcsQ+nl^wEk9SUC(UwUT=5O26)it*JWQ@n51o=3xBha?*%igRdOhlX|A-fz zq*m9p{v2!I=~?v>AM@LN10`F+e*3>q+~^;;=KuPI=`rprXFYbG*yVXMeI>Vl@by&< z221r!F3dU7-Y&g<kN<otxp_~dz5jkJ6KR-IT~pCopYz9G`%&2omZy`9|92h!f41}Z zX2!syPl~tgp3}H8)p~7GS-j5vn$P?a)90svW;KdSic%AExl;4kQ}UCtxQq=aPsmoU zH!?>)F63;KcfZPZ-hI!*OY)4{r>VZ$Ydz1oL8alL_k^7{?RG5RUTYwvVE+4lyO8VN zsI9Sgvu_+rxDcw<wMgaDV`r;B?-%e1{l9YX@WBlIDJAXS|0kTb|M-9Tuix9Z9}fTj zfnC*gN}%jLz4pbd3v(<YloxfjZ?FGct{?QO;s39%?c4Jw#Jrprr>URv<wUQ?LwA+G zDod?AGq+CBD-HcoQ)!#EcH*JP8t(P(?`x}qzuc|(<@<Lhf6b~|royvxQXaXTUwL;* zT&Bz8-*Pj9%(<3-68ZP<+s>ca+6-41djeLf`fF{rQ_hyYl+`fhp2BXA^Ur$DzZCz! zwm#|93^C{ZPP3Mj-x1ea`hVuHrFNa?OYi?--7&xF`8ShErt94k0w1^>c_mx#{Px`n zQ(h+VJYVOG^ZCEkguLu8xXe7Rd8P8t>2D>%xwDFXt*`Z~6z@CLxx)5eR-&$c$-HH? znRjaAn8MZGU0&m7!qr!HhClMkft1KSRxhtz+P~DZ{<`P9iW67wi8MyGYzYv5^zhN# zrlse?Obsg{(pGgloX}jG&>+4^c=e^pE3Kb*t=QtcQoeXoTh(&?=B_1f!cx%|&vhqk z`Em7(r{ro@#*<T1t%R9Zgw0X+{IgTjzte8stcsbw6AzxguA{M5p0^`cR{qA)X_bj# z%hp`sIvo&@DEqozqGnfalfWd8b0R0C1r9B|XBEtNKB{R^bQ?>UuNqU>J0bRZ+2r+7 z8_l~G<Or+YIcA>fknwn#X`s4Ty0i4@56s%hEz`Q(>Z_{NgnISdUG$AxUFDfpq#Vke zzVbok#szT_HR-eXer24zQS&mFKP^}9Ywm}$Cs<aPFZh!pD{8G?pSnN!=o(SGdr<~g z^=CxsMhHli=fxTJ%8A_jUa>=g>A{;h;`hYa-q+>&C;OLlDc)H3{PK2JJC4VFQ5s^O zzWlxXIjE9FVsEkLp9R*B1KcXs^7p>_{XCr|{{NS+MIoXs{0n)0yKXw{w|Bp)b<ZaK zt!_t72-SY?sSCD?opGUeTW|feBfq}BSJl_w^62OPEthn)dvZINPUfC!X_cEbO`X?$ zM_gya!ezaiIUb97JhVEqDzT4c+p0fD%zXJ~?CD=u;#@KzdeXPuN!L&QjbRO)+4aVF z@5^)XK_bpyR_gCwZg!7XJl^(Iprp3Q5zAF86;IZ^KGGrk^`vde{Mh@}q9x4f67_1c zlGT^n9&cV}RoLa`{m1xW%Ha!^BFTKa9=^TQbFk~dqu37{T`qCjMm)aFbFTJ`u}jR( zqjRL5y^j2Jwo*Md^{D563DHT*n>1fsxe)kV;oX+bkHIe%Go01Q-FS?BPV&6DLDhep zFD~4t+&<s?%0$_uyqPszrfHMgUv!^z=CM9Iv0mf*4CSbGGxrqt@g~jq))Ez#$;f%* z2=Co{>wf%LeK$%^LW0Hf{mtVZZzCF0mml!EVJGmTH8UqDcYcrc>h<0MjW7SMc*3lH zCPi1vUG>+Ghlktyr_O)<Bhf4EqN}2_a^{Ws*YiYXE_{B8NxWTlY0<jkguEjrZyxl% zWL~vObMyDy`hP1c<F|`i{@G+ytL|`n>dW&rZts5^?hN}rMNHlH=dnHUJ}z=0+mGD+ zZJ=|}La>BcOHL{@cGg;r6$$<4IW}ItEv3FB{Cby3-n3(yagy^l?>c(T)Nk1}&-TyZ z=NKmMwBnYHn#j8(>~P%<iH++X^K{P7`Pvl{tZ=?gHFUbutF5y2vZAk62QMq$W-fZ@ zZ4k%z1x`O46_@SsI=JxCo;PO`w0o*~xGnDN=RWqk&paVUx}N!1X~%T~Ig!H^b-P46 z9dAenDlR$1b?CDJ^B1-oO&@%$yP_0r4v5Nc6+aZJxAI*}!KLo_`Te)-YGafvnU?gv z>TfNoHJ@_ZXuT+dTJB24TlLpp*SIQsoSS&q`5!~sujc!g|E&MxnEro$A-lm2=Hv%_ z<rAj;nPwiKWP8@FXFqqj!`kh47z59~JJ1ldgE{N&Yd))$-*zysb@5obR_~OCnR#x) zdf5z(Mzasws$Lww!YucRZ^!qO3unpy7Fp~qmUVZ^zO6@&ip-I@+#j`ho#?GQO!c)% zO)pEH-ObuqdL{T~@r=oHJO6VfH;Gy48a@cJo*b^I*UNHP^4k6VdghFYUC#EmZt_Rp zSiOe9e#)hPDj%$^GDQO&xGQs?eR@96DfwIHa#_vI=1SLe-g0O4PnO)`@NCAai-EI4 z?2c-F3|}ADoHn(qHuZp`C4Xnlt%l&-=k9^^Yp0lBQ|&Cj7B_X;4)Jhph49dcmRsZ{ zTvHZDr`*qvn0<ey>YdVK(|+?VPrtJ1`33_%(RL30_5M9hUbW$o!E3L(uiBX9ay9dk z(A&U^?i1!ck$Kp9z5m(_jk}*ttaP}(biIdey3|^Zz}lZK%UL$fU454MQP14!71#Fe zj!0$xzxjUsjR~wakCbY5in2V^<q0zg+xt!C(big-lKA(R|28S~*r^Hp(oo*=?9}SA z7Q2}5tm5BOG~(V(VaT#OoWA_Zb~TyGJyE8%UmJb=XWuu{y~^x;)>{0)jK1(m;ale& zP!nKX=exA{zfIBG$@aT%T-84vXmGja*wNtqims<>SB0K>y}AC+M+-?eQ4ep&nb)@N zmpZJgAL8p?ADf+UK{w*v>a9m?<mar~q<!VmLw1(Wm$n=z`F#EET{ia6(*_b>YlN3B z>rOL%JLmP$D~A}b)hzRiUoRZHxAJ?F`~7De*RAJ$KebFl)vx-h{B!+a(=RWx0yAel zHjh5Pa@!&Ew4$4j4zxS(cdg&|yqxvRzl9C+e*Z03zVChi_vXFprv<q@e6;47vHE(; z{(p&&|H#~8)d{;W>!#;kj$JFJ7VGX?cKL;*#f!HWf6KVN+k1Xu@!dIZQ$y`1-xSka zSbv(WMz8Ym&gnCK7o;e<*PLZt{ZJ>*q4mc7(+jshjN>-lc;<|~WAUj1#b@1K9@Fcy zebVzJ`C0FjY&!Vbe1T%%)y1saD-{lY@BLNKUc_+jc|=!<e(LLnwLV*|&wTDayyu_B zsxxnjm5;yL5LVuuckTD4v|ZKt-(HBE$viy!^=uy%@mFs9>{1hFZ=T!tU%0}j#_|SV z=G_{pqf=jK^O&D$x-I>QJ-o!W-R9t1-tV4G3+t~LWz;Ra@%+ZGi5FRPc9*&9xv72* z6+hl{d#{bs(Y5Q!i;AWT@!nv`s@h`Bp1iX?S%CTD(hN3fw~q;Kr-dF~4wmxWm&16G z$0;W7R`vOb$24YoRlerkxn)lD$(E=a8QZJAn2U1xZf(h7&Gl=1y7t1_?4R2Ar@uYq z%zxMHNmg`)q~xS|H~(F`F6V6eN_5H^pSJq{U#I_P)>u1py5J0EVJ2h4=^u|Usxg}y zT1?Nl$EeKe*>H#F{PYR;7)|T{aQ?4b_5c6BuOF_;Pqov~T-5XGLzSJ3E=TI&gHnRN zHhcEf|JPZ%Ip|hH{e*w@mR0XBub33{c>ZC*wWU%AEq`(MJ`&12ug_R;=eCKm?aIkh zp80zHIFx<nxrx{3Utev`mGJf*eC~A6*!FRz`rn!9d;Wa*m2NZjJ^xZ$IWIOF<GJ<j z>Q(Wd&e-qC^EkS036t9jlSwNhdgq)J*S@^DYNOWw{wuZ9F1gqS%kHq!(qA;YW0~`e za+^2<&jJrGYnw3HM&aC~dxgb&_?qhrjzvzGc`(w9Q|FO~+|$yTD@!6Zbc(AQYZ^Tc zFVMIWEjX*lw%&`K@qtGcf4!rdT;{B4>`(60pSC&8*{v?<_uJ;}+B1z8CUYreM$Y~6 zrF7;}wnhzYpPftEKkP_4$$4d$(c|mORVQj3xM`$%Pvz74<BPZP`%C*&pKq^^2r^>g zF|dBE?0Hc5PLXhA-Q5Ws9EaO~Zi(qv+T6CYrY1(i{!)P4tar1gU-k2|5Kp(7Y{w#4 zvZg7T`+mLmGx2LKQyAW=&pfMSeBq{+);9AMd)lU$Yg?H-^>16?|I?>~)6GLZP=4!% zX$M!|XsYr)FIskQwyf%;XCd1<Ql#%09$C`+X_=wz=U-{<N2e*hb<hdjQT^CFwr|p# z-tU(U*0t|C$NX{5+T9VW?ZPiK&l48oaS|x(oABh+y#<xW>*{kKcYJ8Qrdpu8Vd<QX z3Qzae6Do~Qe;nI%;Oeo`No)T|)JtdX+IpfeGFi=Y%4eC*jmClv!TT*Iemeh_t2R|J z|9jlJm}#fiocXxEGwzm7Zk}XWX6>S9Qok2)Yga}kh#5IQH{!Bw_G!8C?p^+b=!+-T z><WFdV&~QOc{v*nF?Kky)fd~x^oGbtE#K?FXuoJtOU3CUOM9>T?797HrV`g{r{zg= zW97GQU-Ri?#a_*4i3uSGYO4Po`uX&y=LJsZSH9u9@(ebl&5GRpDeBXUKgT$x^z@0$ z%1=$b)O&xE^RteJi<_LEsl1(hrj%*Y8kut)4b!c)+&3F<d*(FZV|J;z1b5cA`r7+z z6m1sF=G!q{v_Ua=R>i$9HsAPKe{W%_zA|;eYOO!>MeCfOPV`(|aV<WdUCsRQB;MT< zoxE$m78&$$)hw7F_Q|H{paJ(x+onSgHg%Mqo+}|~UEZ`X{a|R-tG7vQ7EzVlzMX#S zSGcY8cGbNyYjJG*;)C45%A4}TmcKs|TyV5L_4X-CRuj8Y+qKpEUFLl9ZdWq7^jp&E zxUan<clGDxi_4z*zmQ*BVCE;b@537b3AZ)#7oIz&yJGV~b|dNaae1B2b9RcgN8CTI zI5Wvw)iL?oWRvrSdqU40ESURq)kKDmQ(bQGNzS`{w_sMX?_8sQ1`O{@o*ASEPYdn) z#<$qy^4j_nk_Fx>vz8y6(RB4kW7BCxhsOb%S?3oExu2A7&HFZ!nR(G=y}jqP>Mc2B zn{EGmUf{@`dco4AL@0sZe*44}gAT8H`<n6}Wl;-Hzd!esRq(I(lg6_@cQiLAI!f-0 zSg6`m{G#&F#Kz^WerqniZE!lNTvxf=QoAl$aFgRJ*OdGz^^q=1O-@apzV_V}nTo~7 ze$D=_`7!H~&K{N0vOR~7o)LL!^-uNf%rCi5mb^VU>lJrKk$`d2Gl7gbT;>;!J%~v! zEvZmjo#s7doy&~Se8;e074FLms+dpZ>$n_V^0;Sp%dTT7cgjPqu5{!&v%@RoJ4b6; zU!i>eJ7FioY6<<e)>B*RS3PZdB-6a3&CW0}{^Hcwj>&fRx>_N7X5R7hlFl=Dx}{I( z!taZVj-8S;o#3@@LGG2sQ=&q5_MK8*tymE7E%o@{C$Se!m51)Tux;wc&vvguUU%I6 zyJ6zihBAdzgHK&Dm3xaCy-HcNw3XNzV>`L7Eo?saVU3@ZgG_{|M)&u(Mc?aVuAC0E zz28)JFLi(S&K^z+VTql4ou_o{?l}8RFLKr2O+H1<+htP&WiMo^ygd-&qP=Z~`Tk_h zB`zn=d1rsxQE*Pa^r*qr3L~xe_R<UdU1!N#-riAif+;nI<@&C+SLN60_c}k`(*0@u zExrGFH>P<xTz+|&b;9<NMGhI;IJ@Tko?Wl;!R*?$RsFO51yZM%{N0r%za>)h%N&oY zyW$({Z5LUW^85Sy|2%2_s5Vn(&4dYOk5)&0-@diNr>EU&rT(SBxGU8@r(B$Ztz&KC zs;)1u3;THYw2jbN<sH$}*5%!MqcZ(@l6cnPlR*>BI$e+TKG?;tJ85duXV&vCUMg3; zVU;>mTVJ*3h-pvX#q6^?rs;K6yw>k>%Zn8`yQ?hlg!qjAGLwW~zgxv=_VJsV$6{+= zf%M{sH|PAa$eep#xzDj@`<lz|Hv9dUQJS^s+=kq_GbVcY6bX4OnYmSJ->P>(`yXuD zRekf?$)l31HvZ&q(aYKu^ZwW8|34~N-kV2d>{!12VZB1BNd5Pqb2}EYZJ+en<2)B@ zyIJPl$<Ei8f4~0coyj-vmEUIkzrEGMG%fUFvR{$StvAVDhDGTo_yk=#a_;P$Xy;lR zvgldB-MQN)Gg-g%c6c$v>_CL=_uVUd9)E9JxAV-T0A+TyFWc0AFaC5^#w6fkT0GaC ztCMa;b3eUo&U-%A=DewqcK!VAj}D(cvReD%8HJ>&6V5$XICuD|?$S*QrM2rq9zFUq zyDshBOWt#}+?)GeiT!eXJGWrwncR@9)87u?esJ!S$J+@Gg^AC@3Yu>n&G^$N^38<3 z(@Q*vUtPZ2(3k5cli$-6)A#2No|yV<mfq9*H`2@QRGsAEyD6(}mVcsDiT(Ss>-D#k zHoV^ulD*mf=br09%^M_~_@4Og<X;_gy>DCA@}qjrLYg^mAKdSfz58O@n>+6dMErNI zlexP2wEtYC(C$5xPFkg0ymNHnt<w*AoP0MFU)@{4w|4c^GYZXVEB~nnFN@5%@nsvU zcjWYgGyc>bxudyHepS#4zCt~rl;8Zt_t|RRys4kGLAC70A;s#gcMkDK{_9Bj$RxQ< zN<8(Q!lA$#lgE#~IP;gjc_(1rVp{m>)t0|2R!_dTC6Mp5MOlV$0>^?cLDLO512>vl z-JkC3tH0oD$j4b`R-Fs$)V@A8(&#*N^w-NvV$LrGqr~S$+b*4uvhv>UCqdqVOX4?J zUj9C3*A(lZ@cMTrt}YA96cv@<d-p=r>!Wu}XPHi3+o0Q|$eI<MEt}30Kl94p>s3W} zHFfsu*hqCUs^9qkX?v@1WO&Uq)1|#(w<Rvz{WfR0<-)ac`#4@q$qM1EStH+2yZ39U zNA|Mvl4T8+zb-u9yhqUJ@|yS4t-o11b6<G=o?*t)^>y2?&MBYNt<CZO#xDh>0<{l^ zA0Iou^!~qR_ZgWBI8lb$pd)RN6BrDPjgZIM)`olM%b4@*dmjE`!r@;VcwB8Yc6RGZ zDd<j!p0L-FG3t1szVC%ObLPhf^-I28^XSb&gPxfaPxwDMKK)va@wEkiA`hqRN!}oF zcDeqhPwjvH@3o1ae`fXln-MKNH)ma5e3P9?dJ?DHrt{Cf6qGykFi!kj|MBt5wH?vs zr=m|c%w%2Lbt%5%o$;c*?mT`WlWU?Y>uui6E#}o(@_63Nucxoop8vY?S8ThTzSYV_ zVk#k9eyw}GFY{&RJojFumtmb5-Q4+p;XnN4)~pj*9?^S6+0!9l{@iYhS62LuPD_)% zGsf;&8I;bR@*qWgm&nyRp%9_Nf~EDXza^i_L~hMulykN)iM;tW<i6)!@3Wg&oy+&I zIds-exchtM-fL+EhUU%t&9mpK@TMG75^9VwsOG*{IB}D?u?qj26KjI@-+7bUv-|e# z+n<hUTkt&)agdR?xc{7l_XOSb5ANE3?3UYod`m_3l1X7ZJp-r8?0h*Vs9VF{WZDYl zTlI47+ZMm*T9NT~N}E`yeb_czv1#91IGvO}o_6Het9Pf+|K)`*mu=)YYw~t(tez7n zsMz7<FSl0dz3J_hGd4b{d-w8IcvJl3uEJ84vMjTz-0hhwioY04&N_ObjBD5W7hXMH z$0}Fe=vfdMP-|)&zm_%A^zQYhaHl}#H(vG&56%m!m-3!$rT^-UB3oxiNa=x)bALXk z`JdTsayDJMVJT<G>$>cle@wImoILg|E7-Hj;n5z4dCORpKAy{T`ETXQztl|c!v6bw zzAxqo775fQmwzuh*EpH;Lrg=9FZ;Ql6R$a+m+AEDo&4-lt+uLFe#+j$%!|v!JYy&O z_^GZoeSYfPC8he);kvKtoHSo-TBmyZ^R?|Zn$MT%9liZ5FznB))x0ak>o!+>beX7J z`g-@iZS1y-=iL2Nva;vtnNn5Wv+naZZk4dj&3&;rd{wm6@xLdsB^k19Gdebu%}p&5 zpKQjez2#icp-mz(pE(p<jZXLQZ1n$gm)}^&`A22l&ObFx3)$5(wd(baG^?~zSN#*& zrFWY#PH4B!@uiKd*7@Fn_nPe=KVXhBm+zf<*<#NI&%j$@`=s3--<`t4{=zI|&fyI` zZRdWjj(^^w<nqSozh5BJk1Mxt9nZX>bi#C{XN>UQ*4e&KmNYNopMBzG>U#etQqwa< zJf0<dn(iKRVgCBX^Z&{Jx-9zTc>VlK^Uc5H-{>!#TUqBB9rY{BKk4tQ&1ElnO0T_6 zow{80+^1U~%a=>8cC4~H`>y&A&&u|XRR^xze!5M`{B4%;zU$d6yyn;MMZI=S-P1Vr zwg2vO^~Mj1xSpM~kj%N3&3O85SdL-*F;(sIzMOxC@6Yb;?R(7>`E16k6c5ey-sfMa z7<#-pSNiHwYv1H3kC$h*m1b_q{cZgAZuftNOOyU7U@10?rZajls@5ACnpz^48%x7a z=e;%)xcgoE3-dKqOO<vO9$l_4VlUP?l(~u**4zyh|NGzfxo2RX@DW`mN3oNY^DPhS z{MRYu{30&y<INV6yyEoj`&&L~+t%-`{{LrF&F_2Dr-bK7OrL(cNGr2<>BZe^R4-ln z+F#6}**f8+r$hbwW&6E(81)pd2sqU&e(!UCJ1^7R<GcR;{B--%>C+d5^bFV7ep$R! z;?}Kp)k|?Vg8nzLX=LXVEMMsMRX_g9@tV7Sl0t6}Xupli-Tv~hdWG)Y7Y`>dy>#-= zD#OAYsnxF^_?)P`#P>zI`LyEue>XlK-1)G4->2J8BRAhxU)#CVASbE*s{i?2s;{Tt z++O(VnbqsFC6iv>(p_etBi4P(q}yh$j<1o7M(u`acXVq5wzH*&AIc0-cXhoS;2^sH z>~f!tjm)!EH@r_sWY0=^S!33|{$FT*^kku>wl6I#Yu2~Vv40v9(LZg5^UrU#(<J3J zA8@rQnIr_fTDVe=No(P9-pc6G*Y($rhnYG}dlU2KdM*2frQ3yc_<VnaEvnhQchm1` zBle{XN2L#JjoY&H)j{*VS-Hngvt>l4yqHwCQF*}$U*oQ?iEdw?{QjZS-Y(XCp@S{q zNk9U}B=hbW+DEF6oL?~U*^RWC9p8WVUA1%n<8?&oaPHY{5oPDs{Zxo6jElH8JAb=p zSiRDEwbQ%ZOI_+3b+>-r_;Gb6`-6EamWb}&C+XYcbi4Ce^@kT~@`p0E=?f_>Gga{E zIl(qR`ABn@`xFk|{a&4lv-p<FE#rUxZBlydrmUWWhnae2t-74TQ7*D<lYF4WmT#7= zbF(zs+}@>p{FD^6xM1oF`D~{HKF@=)a%J;>&E!8_&(JD*!8PTLVz&1*(KTJd$JeCH zw9&S$JLkW4?UK|lV*R!+tnHsl{AWHrVee;?A4xSQ3bpiY3vX63xc~P$I{RAxPSu{y z2h*0E%i}GZTf@a4`=KLTh;gf%%?GY8HXl#z$cw36l=0rFY3uj8>$|6=uDoFEGq0*P zBt>1!plWXPEX{h?qjQc09oIY=v*h>27td60`e`!W6P)%sY0}N}Ki-~>&SRUy67sj? zU&E3s@%!fTL~oB}-#*PGt9sIkpsws(3*oD;C%cq}IEt*9&M)^~LtyWjc*#H7eT>Pf z%_dA1TMv0POq?-w;jxL17sT`Bci;QMoZ`RplZE5yKN+51%2tK-v(%S=`#DiAsJ-@5 zr^2E;>vPsi9mx7#Yr1$fpW-er?#mI0?<`r8A{l>WsGJPAbNnOEH>HqFmStyCF0r5L zKBi{ZUTbDOVJ?5m-lw;s^Uk?nzMJ%F+xeXeZCjGgy6a7lRx?&|-YN1oR^mneu_?ak zR`*{pJkvb8`)9k|H3ol&T@Sic>wPDrdDZb<Vi!G=Zqoi`(fmJsCiml4{9^i*a&}hq zw%Z(4dT-ywzRx?b_VD!wCo*sQ&3HZW+F6nB6aVa=$lJ3iYO|XB_o?6H<|PYkDN+gg zfBxBpN}&Vn4r~#I+hkeIzMt~_@HM0Di|JR3!)}JLiM$W%94tOhTc)b{#`mtHl7Y9i z+>@-I`zLgX1iUU?Sbv+z(&}AO)6?pY_v?R&OWa9pn;e)dJblv}Mm0v$$&Ndu>rE}p zQBKsj8hbxq#(YxU{{4&O*RncIT=QuCVI>DM%llH(dBr^6$z40qoO8NQz;p8C6qVie ze{1Edm%NiJGMQwP{8aAE%yrKugvN_@ho+RC-g%HukM|~T9NY554^}@q>JulNS?|0- zVVUBi)#sfrnfx$%(($`Yqh3-zui)HG$3GAD9C5tR?_%GvXunQ#%R$%K?01Sd%~g5z z*khg_oEpNW*<2pRzP0&#g40PZw?O{5Nzx$)e9kdfdYkceeOqbqfz@q}d=s<!3!MZH z_H)c_ACB@l9&BR%pJ15qf#I6c4=zp}hqz4vI=4i5-kuWBZF931bgmM(7*fyrX`wgo zIbP1|3zsN19&P!SAp0oQX}Rh{;n>?v=NZBZ?A13gS)N$6%tC~b`yM~*ci|S@1kGfD z5=pKn+7g!-)zev%n;FwBcd+ge`@mk}IYW_&p(JB+$C}HE&m6d<rXSHS^yqtFoxy#= zQ9B`yvAsDj*d?7WR;8wS(VGcHEUfjnyjdq$m(0>NC<xu+#FZk*@b*AS*q=iSWBCqD z{WfXxrGg6<=@}BY7*_mQG-1x)hMh|5qz(p5DGGeS5D_Ed!M}GWM@7*i-3>{)YYw_9 zJ+$d%Q;y>IE(&1OVNKpC!omN4`3bYYT}R?Y`le`wh}cF;sV^uE;15vln0bTcd_Ido zy^!suKE8svoQaJ4^n|UV&t4I7+14zS_(W`f>#qj&o~xqUx~GP5=;quB&bB-J<O1Wq zsYmi(#IA_V*M4A<@z0B;sM7rebKUd17L5i!HM&(4b%PWcu2*OEc6}>76qNOTC0GAN z+mAsr^!KT*TK<nIIU~i|FVOeFoy#RA%)<UZx70J_`bRdYF29nYu>Z+L)`L1nLYDYt zTmMmNagtA588@Si{|~DU=lvDGW8SB|no|_Abg}ym;jFvP+FuN3tTpiUpL?7k`oooy zo(CKXm&7{ce>Ca}FuyVv>v^}*dk0h9;!q18P5-rOjB4|uTJ}B`zoKQe@bRLvE~mVA zd(S-Av&)CI-s6YU-rFa3zfir*X7jZ>@nG%3T8*tyZ#j|<J+z4ODs8$NWZ>Tt7QbeK zTl5OMiI<mEJT>nL6#1s!C&ntyVD9?ba|7GLz6U%Py|<d*>ek3*yVdf0(b9?n)vJqM z__o;HV#{D)Ys!}_4$_#ftQWLO_Tp=?OH65N4_!alcVJ@Ft~>QTmW%tYIj>*5FG^%X zkbl$?^|tFRvLD5_gfg`4{xS8q$)Ws}hJhKOC%JoAk{JYRn3KHLsW5A+hId7Bn0s13 zl4#tM!LsY>qp5WU6SQ>;-Z#duW(fC*#IP=M<LA5GRkCVH;XL*tQQazzCt5{vA=X_n z=1l3KOP2FJQ5E|)?R8B3rVZB`EZ<J{FWDCpz*KiSluKmGvz)f6yIxKD*!wzIC4A<- z204juY<vIyJbzq2e7gCchKdNU{q}X8@%`}+q<=m=t>6E@Zfn)=!!OUie!Rc_^QRxj zFW=Aai;taCWAV4@&yUkTKE7J6zyHtn$o4t={eS-L|NrOfmmjN7pT2tbBftFp`a2(9 z-QIjUzVH90T~*~(UvDk)|9$yme1E)b{oh-?;_(mD?PdNye|7xoM|1sq|7t$HKKpWN zp}WM--<P+Wua7mnx@V4g>pMg7nxv~=Z?;H$GkIg`W)&SPWiB1D=;JiwtrC8E;yx|K zN0yivOx)Z5dUj#4!L&H_bm2nXYf?8J-eaFupZ4HM&r)Wtq@p!_XAT_sZnwdVxjjW9 zC?VExB4flSw$B;or#&^-<>otj!I|CEDSq9_j2qjVYL9P-F;cy<<9fldZV8K3wY|ST zp3Ql2^MT+pHvY~N2c{gcSSX=);{a3kk3_cbvzz;icN8d^Pvg7Aws;nw@h+3a%QJND zs83TCmON4~dLyZ)I=sSov0$~t>(^GfGS@$_c%QD~*jT%|&?ScLq4s0`S<;8%h1b}h zd9e1FE3dOm%PO^x!QGtfQhP#oY;Rl1tD?uVP36GEclAx?eIf@ZB>J^Q9Aa_nxOZ^k zF=r3mwfnep8XB$dNY2%~Bw`VKclVWE@%GBAECTPYD2ZxKsNZ`+G38p=GmfYgjynTS z&k^$8W_{*HZzsD?mem!erN)kKJ2sfNSM4tI++4O&(^To`f{q)aicPo6eN^6FdMcn; z@K|-`8Qv)z|7V&rc`Or2R(Umpw<mtS_NqB9nRAS$Ro&2@9GAfUe9fFSPZ`{lZI`cE zm3`gdmuqi9=qrBXs^m@eT_@T#m1Tv4lR`5-2}};H%8QhpZl8D7;;^o%sLPL4?UJ#x zFG@08jdf(1JM(0Q<B#Rl<~!0t1=jrY@NIu%8Gg|HfDd2$gk768IFjV^q^r2EbL6+O z$bQ+8Zobs_lh}g#wwV!vGabEMUSy}9KirlU!Ot%G`dU-sBHb>5=<jdk>z!ZA&s4cq zyVc>w&Vx)>zU$=XTw`*%I&*ex<rmdME21vVTiQF<h0RU1^u6nKNn;_cdIoc$-7|R> zy?V3beQQJW?^+IrnoEa!?(GQZceqyEf1dMN^*i-do^jjXEK4wa^6&4lT|ah)AKt$& zer?`|*Ozx{aZhu6$J~~*V}9=kPODPW`YD@c@lR{6b}{(M!f0uKK2GUVz`U0V3r>DN zB4X@tSm1heTt``QT)nGKg>>B%#hV|qZM!1srz#$Oe&@lgwcK|iyDoRBbTFDMv0d*m z`BJ)~z@J6yqi@YP;JRx6lT^o36Xrj%c*Ah@F5jQ~_xC^AFTVfpx7j=Es*CDA9sPOo zDf{MK^}h;i3I%*trYkR-_oBdErFioFAG<%kpX<C?qj=dfgOp0S-g3qtKc79j{<_}Y z?q5OK=g-H@pS^wc=to*<<=@lx{qgf+=hp14Dz_?rdeLQ`XKO-5$0O0z+~z+gw|X67 zQ!!RhD|vQF`IH84z;@whKkuAN`F+odh3QVoX&#QOh6gk1FC_5o*n3pfTs{As|Ji7t zJyH^9-`LNt+QYJYv)JnrCzB(o(i2x4+fu%>)UfDaPxp)pn^rL&7Y)9R89tu`4!_T? zG~-OGE4=jAZrS0#$I5TNZaTcvd|u6#_33M*jckI`ek`y2z)`=ZLtVhPFj}IsW}D3k z^F<#WSG`R7kit2?;d}k&g_bj`B6gU}dsnqY>aoc2Pt%qh%g%ehvOQjB^_n{iv>)EI znjR|m&p7I<mVe2+vpdoSz8yZk`Sa(i$IJD@!^P##`|mq^{N&G@`~5N^um3NuD*g8F zP43<g*Zl9Xb0(Dd9O~V0LQ(p3@!_7B9}lb_el<9KpYQD77e}II|GY6j>Cx@_MMlS_ zpSv%<u(Z7Q-JWZ8%g>$p`$hS<?zx;}H<q7!8N06b-1U|hhYHVC%sKe~%9Tf)=bnY7 zRv&q=GwG8-x3>W2<_YYXoUgqqe&}pHb)-X^-_u)7duH?%pJJWVNxruB^AFG4CTuk6 zje*>$))P_M!Py^Wj5Z1IZ|_`q$Nsp*9kIvtk_Mk%oSCa^@w(#0T9)aOdCPVm^j;~T z!?xdk`uvhT7qaUwom*yF9P63;<=V%(_O6@TZaly9-RDlp(%b8Q-+nor|M6WpfhB%^ z`Rlf^s?0wXb${2dKPBR)cdC}nyrZ8Ht9<j>GqGcJr=QnNoW*#NeQo#oh1*%aNtk*S znr0;L^av5FH*j~!4Ki1ndzSs=jJb2gjzx(qdF*GmTE^RGYn|{qVa+cK+n+}Yz7F4+ zc;r&fnn0b2pU&L>UYb?*`SZ(Huf8NL&QnYNshzrDhtB0GIT2G{&QS>eQs0o$^jlp{ zyEU;iGf;U=&9-CdwI^)m?VMDnVKe{Yn!dL!mY1Wxm!xk_KRmPk%5&vSc44=zx;^?z zH}IJ6cvSq_*!~iCezehY)|!Xa*@XqiWzRM2iH`m!zf+0-cbDrsz9QQg!R(Lo>n7}; zd@w)$?}w}R!+zXVb%@#<U*%TCI4^1aO~FKyaK3}*)~m~(Umrew{W|}9bLP#TU&k)1 znk{H{F6a%*^(9{e8I<pB-cWzL=jo4<$ZG!kmrV*bv~B%bz$$fI%Gz#Tqk)}kWs1TT z|Kq<IZ`tg;FC|y{UHw1DaijO=?P~VSs^r^$WB(&z*X>KC=D7;lth<@L^4PN<n<J;q z;PhRpbVzvfBYvBGdfQ$Y&)?+HG<C<d&$C5-EMex}aJTVT{<%+y{%Tecvsd=7P^jnG zxKU<9+j-SxfBtQ|(s|l`^X0ge!S!2Tyl?m#-hGp=HvRe^<NWHg(^p%|*%x<hk1$F< zm+~;>S>cJ`pLe$3H4Bv#+^l*udiPT$g{lP`mzydWh+j~&2)?#-{;Y)l9~C)4*ZE8A zytjN3nE3h0vKCXj()$|LcD4_Dt}WmGW{uR7h4s}I(VPC&ZTp?WzUp?Z+2tiCl8;8Y z9z6crC*eZ$=?#~Z{U@d`D)XB-zwq;?yDxulKD~J(TXq-I%$Xk@&7U0JW|w+8S>e3< zH38mb?z`UEzA1iRUmV31mSm@~NAG^hTfY>|hjFLP&DWg1U3oLytF@mgY_(I$$@Ivd z9G;r}X6tS)sh>Tc@2lVX?Q0fyPwA?;!#3~E_Ve?1UH#m$c$THJ@Z$M@Q>vq%MqR7o zs|x=k9Z^)8@w%}0YeL+noc>19`KQ~vKfMfC?0-nTqV>#i?ONU2#V2@w&d}Jt@z$oj z|6WzBFSocN_F;1Pop#?N&S$%t=X-uLuX!H#^mEmRYVHH~*4~TDub+14s<&m`=BU3# zHD#5>TdTeo&e>vrKW2{k!6!dBrn~#aKe)9iHRor<)IW|vIrGzZij@aGW;h?xFSS?x zdz9uDnKuWM!t6JFDY0F3B#Ei%+0hlZ`zyX%C)*{Tyl^J?t<A?@i(9ts%b6nl@nMzY zh2Z=5g67}<@a0YQ?TFj^WRH}duK)N{=;Sr0OuJx(uRBXVJpFTd>t5^Ezpi+7&waY+ zZ`35&=NacCzJENx)Wdvsoqfu~u8MY-f`o$5ACp=#eykIjH{G*>Axmek@58v}J>8e) z-&8-b=8C`Z>6?2tT<T~2GS7N)>GEr@8_S|owmF~PRH=7bPjX-LDeVhsR|T3*M;vNA zRzE-W_qEv}_g^!GpD^F?;o!G`V_ft0hDOZ$^H2YCzm4|#F9qE-6UF-HzFub{ugbyn z;=9F@>d*bt^Wuyoe@v29nfFyR^xTqP4_Y?zpLvsR-Sbsedu{lQ(j6Pw^DpXNd$H^0 zb6dNqKh<n}B43?uIL6*5swlN&0!y&|#|!6k?#*LdQ-9y*Q2Lr{vp-eW7@pjAkTuYp z-$5XC#)^e@Qd3`ld6X^lBw(8zo5|OyS!x#hZu(^h&T_sN7j)x!;j^c&zWlMT`~UUJ zt2d9ne0uig)8V%V)qc#JpIPNNttUb|v9z-$UZ~-aO_FO@{hP;DoBtkur!r%`OSh+G z^!4<w5ub1ViMje-x_)zdnFxdT#x?3sW~XKS?7E^Q6sRNdaijlNn*~nE@)<SjEOOI0 ztXJQdx994g2a7iT+i|<gTz<pnA17TW?KWFjmS^)VTb+NK`mUurN(0$07~gJ|xSDMJ z_uHFCZ=U`7+MOSkzyHU>XHQ-|%Lr8Zd--Fzy7=<$-)r6;aOiH&`l)n4wf=1LGHDab zN6H_)XElkLXE1Kr;@G_)bb|ShdEzZSg0tt(n0H@f<-dnVSI@r8U8Iw@i)Hhp<=!7G zwet3`bT7KBx?^%+mzB)!uFI;sy=3iP`$le#P!qdeB4%;#Ya`=Tzv&VIcS|@`uJ})% z;FG%R%#JHBH$5==a#K?Lex#e}^UOV(^@}_2Z~G}+czKTsr=&))R5a`E1q@Rkh>3K_ z{AprZ*{q`>V3X1QbLQG}JO8iWTz-B1&n)*pi}u~vSeGSZ@66w}Qmejho7v_CD;ZC7 zYZv$H%TJzgd;T}B-6~U7K3pf^x@fM{{owgW+i%^>Q&SKT`Ku;q)phA$#x<62)xY-3 z`!Abbzvd?AN>}53GKq_;SCoGVI34WMnK_wbjeEV7`k_;9{8s9RZX8$Y;N8~uqbJ*Y zn|qC`tM<c9Q*R3x`5Wb#P1)F$?aAJkEU{gMc}k&wnkSo%=GGL3$wl65CM&n3G)%U( zV3_x&>|}JG)zXOC&WAq7CcHWN^1ZtF{(0f&=a)J*eyO(v`S3U^tI_i<3mop)blraE zd`jYM>5eH$@8@5(J?N%yIPKz<={v8Te{=l&rNgUrtzXRfcGvORwr8{1s)QU~ExK!c zp_ucobwFw7UF!>Fo_nq3%HnsuXv)=0-G1br{9cRw`z-BuFOzRlt=SkGx8<tgzL#_A zKgg!;wPr2fCBa!;|2j#f$vU>jr7-=-i$7l;Jz@zvHU0Rt*Sv~Xz9n__hHVqH^SxxA zd-dkM0EyE(@9}b2yxW{}uc5}T%3R@|#JAjg96JQ7%pVEfKXY&A!~*5FZVLHI4@$L} z0zOI1%e&XmSIaNO@Sys{ft;(~Cp2DN^<L5W@@LzW4O>>dS7f#<;jynT_y5Vqbana% z*YjUwYt9z`l@VU}tLu5}iBoCYQ>E8US-`H%GC^+D2G*Agxq>Iit=PcwGLfs)i$5qM z_|V@^l?z1r%rqYD7V66lot1e?`ibTDya_Ka?Pgqe^;=#;Zs}ZUrsUxJyBU*%U*2ul zxbmHgLy9ot*4qLLyf5F7=8n21XHw5}W(#{SgYjF(=7LyfeksPZh1|Rb+_o7C9c(u{ z8+NfZ?%`$Ja#f%znepv~X1B)37mkY$=zLiam>^blLBpWiHbZ2_Q8^O<m&Nr@boR3* zl*lE&i@5(I&i;7I@_ldr-aC>W-7a+Pr{BkH{Vm_z3b(J#iu|JeK`C+dvINnM%O^0@ zukNsIWqD!tO+;wH?Hj=!4SB(f1vatXRlB~M@$NENuEfm|tb6}dd}M2UByJP%-v89b zwQ6sBSyy{3EN2dznDm~_z?;{EYdO!EOR^^AIfezEOBJIpZGL<4qQCj0c(c#5FX@NR zb@e`bNs^=M<gJCy`j#ax0=)ZVtu~xp>CC>xvb_F<gV}cm#tnC467F>s=y4>~#J}UJ z`FPgi%-by<?R+*~-R<lDw(!mUdxUT9-z^m$Z`I3RyjgBj5|__m_iKJB(~{RL9>-Z$ z{5#t5`{9#rJMosB7<s>KJlk3)uQ%okvnr_<$>C04@iy8bdFl3oWnTFY&rF?Hej?oL z%+cSupEjlz)W5CKnUc))>%G;gv$fu7ui1F>vy0zexVg`<`Ko~XLDP&Mg*Qs}U%8iW z!M@&YSJ3Z?_b*AZ-}=TYHP20E&+7{p`@hRt{m%TjBJA;2=XCpp&gu4r?RT<DG|LTE z>YGQi-S=^eUwe5vpKML%+Y1M$@8FaD+x`9m^NULh-7jo)_FvFm?|$yl);m|tTS}dT zuW|ZH2+#VpJ@K8p@r*rhw&rYB+QxHfQRMS2TQaU$uGO7Y>X+S}Hh1<b>yixDrOxeP z+giVF4)e|y-0o|)jpx>xV^)$TTT_azE>OJ6p7HX+MLUxWkFSgeOJC%?w=VJ6t2<@> z)>{*zddilr({<*UTbOWoq3h!MU&|&~m3+GWDDWZoQfK$y8P+8y#ADm}?6$Lh*c_Iq zx&0jfF|+8l6>|#>+>^WAzor_Ny_lk0`eKT5`HLxwOI|!szsV>2N9Fs8$UW1lzwo}U zQC;(Ss=+huuj?J|_NU#52v^OE49`A2A<AU6yYE70b}P-Y7Y^!6`R2ZO!Z-KDmW=wa z`BTb|xYjs-3EH<s^~@Sw=WlZh72KuEn)xhmZICWGak1_00_Q%nH_skxEZANVa{pG_ z-Oz>!r}=hXKIWxV+3mkZ*ST<Rp+Y=J$In|EX7{_xx0=04JIVJ#SFW@-<8a;u#dztm za7L$_g6f|h?ry!a>+GDH22r;q)f(;{I=Hl6dt2h>f|p&nH*{ilB}tokuYBCbH}|nw zL58fEZIM`iQ2#o`^}!v6%B$-?^v*B59#=hk<(cZOuj5i>Th<6q&nTBzHtQ?fKbIHo zWm^+-9+z4@zH#jJm!lhdufOa{mR@&R__$fra`)bKi<?VC%8$O<^>E(RyvS)c47N?& zrIg*5yFlyQ_Dixy%>u&Nq&M<jnYx=1PW}{+cHoz_+AxFZ>wo5LS}ZpvZ)6u?G@l;0 znptAHoFo%BvxS-EWXByc^`>Shdvc~m-#sU@op<m1;4`VQ3#9)BsIanBHj3>%5qeue z+%Ibj+Z&aRx!>Pg&ic46ZOPR`jFYZT5;|J!5;W(h*{o9T*<E>_GV`~2UiJ09*|pp^ z)QrC}_;fUnY93eOnS%xmOB~jk<^?X?B(UwpGl?s@N0-cYt-l{+c922HH*s@H^d<(; zZN8%SeNIhV>=>GITFA0tiKNc1R6moP$+k<+K4@cU<jV7yv`4Z`{9s#{qGnowd5+V6 z*`UHVPYay2rdfT{7CdeHGpy*t*~GmmKi(89o)Ti-E`3xfEc2dM>tnwOhK(G|iW`$Q zHFvz35zMUFv?@$M@KSx)#@((PBAEC1bTa>#s~on4@r*Xd);A9f8l)I?rMNm7&M$GB zvyUODvw?a4L5~|<lce6fQ3+ALbHyX;L0jU^sMZ#lM18rQnFV|yKhjUnT+?`Oj^S}f zC$StyAIr(^KPDN6T|L7X7Rvh9FOAWXS(AzJe_>EhZPD2!5|cl!|GcBPp7rI%0wd4k zT``81A0K!fVz{yPgM`Ce(G^C1Y%>frSlHJUp0N<%VPOzGxBEfLl;>L4{P@*dnnO3m zH!N~Fqp9HeQle9&+s39%LuYl75sws~OM_TT+B{LVQzvc0cdYD?FK20J@F`b4?-Fe( zX?Oj|Nt+@IzwkYWve-;55|q|T)H5tim@Or9runth!`OqBS2~h~j=3KR5?vv5Sa@Q9 zZ~(_!6*u#@DGM~_%;{uWa-Bz{En~%{LtH`+7pg|Mtx@(ikW}1fcvDMhc4SkdQ7jjm zg`{IfXeyfqd&*sl6+L1R+gPR?W4yFZ<B#E|_B$))S+Mt6`uRTyW_3Ivv?Fk4v}Ap; zmXKIwGh?u@x`Z=B#S=Am9qoor!9`QrWt~}ccLs>Drr&$!x?{d$63fz#<%bqcPKXsu zl1OxZ=I<h-B;3fU?56F<qI^K>M0Af<c!5fSllIo84$+0FE7wGxD{7k|n%TOxfVEbS zgGcb)LY~_W|3#|1F2r?PE$&(B+cJ$eQ>EUi`dN&(Heb%AfL$AO3Rx$INSU>;J2h-N z#lZK4;Y)H$t*6*Io1!C^+H-pER3zVUTV*cB)idMxOl_sd60H2n39g+7H4G;ePLSA` z_u!1dE$=7CmRh*aVR4ISk2)f_!SkVqKt|9CRjGqjJsrL;MGw!+Nn&~DveTV$n~&L| zPgxoDMy@<7%p@g(m!>`rU9`nVzx!gfh~5+P?+H)O`OQp!ruls1k4si=d#0VJU2|aC z+)b-^tlovqT>ijd*#R#W9SKI>e3qUGt4`f5&|O$$nYvN5>iLOG$!|ejTYMt39>!P} zMJ?NVCc3e3meINB4&H;FaXXxnZteT~ZT9~C|9|}Zyj;Hi-=Bw<pU40E@#FID`}y@# z3pSgpH{N+PTYmq~<G1_Ys~L+<55BQ){|VVoRwtBsHaf&SU3v1c!g=3$YM)pt=bbQq zVsv8ZP0cC)f7~svuWH(zaLqFy-{^Skti6KU&3<;=)|f81-TY_AZnMf+CmN$ax$xal z65i?XkL$Z`o8-Iwd;g!WUoLNAHbq*y@ORGN>)+QhM@O&SUbHESY0msjCueHeeT-9- zzmfA~x<S`L-_FGnSEe+2RXA%`DlM0cY(BiEhHd)%B_6X^y0+IwX^G4}v2(xwlP$)R zE(W<DcHy&@QZKr3abo|ptXc67rg?V-EGT}U`+N(J^wxspvvW0e97^L#`Z%+`DdCk* z<ALo4!3x)O&WUiCd9VL?duqd!`9ck^GK_9>KfSo@$`x~+dyAP^ZuHD#(aSyN!!+G2 zS?%DI^D`LvzW&%6S^MCAx2tA#VZcp$-S_kV&AP4<zWZBGm`~{Zi?a&0*)5)WB5lp3 z3q7H?W=`x9_$ayD;<;3u(--4IMb)z`Ir{5osr^>4dKIxL%5ja+#K$YLXP!9dezjAk zCS>-BgYI8DWooYcVk+NRB78K@U#QLa=ApRn57%ZX`aXHd8@(lPp5pY*7zO#C8`9#{ zi*9Z2ob&B3Yu@g;%2D(03e3qUJmX=;USlEmv_N}Vr%c{an~9hIdAR3(JMH54n_2d) z$fDX@rTX_9zJCgkp7HHj>i;#r(`yc@^8fl`tDuw~v#rA;u|)RFl19%|{sc|mCnl5C zi*8Nql;K%!G*SFSyouM0rRpW$mb}gp&V93OYV3~QyW2K#Z{K*kZI6@Pg^QOGa<)Z_ z_3SP4ZrXS?@8F+Rm$#i(edI4tEH|IE-S)uY8@1bOBxmQR*Y8hE{`@w_JSS&gbXD)( z^3&@!e$6|ns(;IM|AV!6s@P@-`<C2cX*lX;crI4W=E05BL(G1)IkTfhC2l{v6(Rlm z*|S|!|CDl8GvtLH=u_vko~M#iZ<nbbvj3gs((S8?Z01+kWt|F)KGhwuCP(jlQ)O<Z zaPFHM+Oq?st-qa;yK=0)Z|~IbxpSD;ym%s$;G%xK!J+c%+Rr~<p5MRs?|bViyY`kH zQqf;d?U0iGa%#sV&blL4FV1;C`(gImeM)_Oel`F3{$6aT|9Ey;?e}$O*<1Jyinq${ z{rXSVMppOhKUo&pxnKUt2K4h){pahsR?S;*Z8vYoy`8-J%g=sX#}mJ2OZV*h3peB@ z9WP(-{oGrZ-E(heEIVtxy>Rxd^1Q`IP2b<~Yj`^McEN$Tt&6Hp*#EhE`O}M=Z(rQZ zeSh<Iyw1FZ-wu173%{bU`P&M|w6_7wDQ_LpCxlpEkW{(KSHkAGm3i*YeRjp#ryovh z>5jfo@xn=8yvF}-dF|tc#n#gMzUNu*`(Agw-dxUVf9Aeo>EFM%_}<z2v3qu1p|Dhc z><iDT#~X{IjrNu2aewQbdz&d@V{tTtc3B>G!qI!V2WFX-?cOF=H?8Qa@P}ma>KkUI zdEy8B=iX-B5cIr^am|&Tu?*TEA+Nc&TfcoxH83-e_V|4<{ny3xUmx{OUk={z)cfd_ z3P$eU`sH#u9%pQ$Cd{bbqM%-$vC*bHLG;NJKAmr$GjCtnQqlD5%e&|2-`D?rs=tOI z{rn3L@zO7gPmAu_xVv_H!=-2L_Fp#qI@TZdLh(?gOzj2dHe<_K3+^e-FLUUZy!G>b z=!v=}`P}o)Y%%WVi>EIP_;K-rO-h2F9>>GfoeV9LpE3#5&z{C@_r~&V?mOW>eNU$S zvR*m+LG|g60*&vAn93iYw%0G4_>iY7KE<LrNZ)9|W#L`Y@l3mpb@O~PS*!H7C*}Oi z#oC`2Yk%IWon0SS=XJVQU-W&vAOEhuJlBgpPVhK)=1JQTJtL)$-96vVo%vwfaeJm@ z?xvff-(L35xBB%X?z2k0<=?Z(GhUae9E@bN@1OT%QNw2U;-a7}#n!u~bT=)_S++n^ zUbJ_|;zr4a9qr*fA4HS&FS4bdV|c!6`RlmK<BuzsJ>Z(D*>L={Pve6ESyA2<{8wJo z>Af>%HJ|^Ld;a}@Umo6l`+WQUw=-My-hKXm@9(eQyZduPuV3X6uFdaW$5l~ZuxE$0 zHp8bE?RrI1mM%8jr4cZvPwZv4xBC;>-k|py4`kn7x>>vapH}AjitkDrzCV83uKaeh zocPPt(`&2KEw^TV-7vGy`^O9O>=(|PeMN2Kl#f5Qy%=YEJ3pjvrTvn>Mt`5p|NqOp z{(AA@LKVTfKc9}b^V^?OPjQIz>!|n==~vHD7X31LYINm`!_Mzt9-Ge|YP0#i`jNfy zH`E`z^xD>Cyl(YZKEJ2?>h|y5^;J?N;ntys)Gwjs%vGfhJTrHh9N6x@X_i9YzZz4; z>9g;uzxjEqQebo0a*I`q?;MJq`~BNz&4xtFAD53azS~=!Klgo8?Lv2!tGn&4HSQD1 z@A$ksj;;RvD_xrtH?14|=5M$se>^yMXWf<beTUzFSo-x}VvoGY<S#P+Q~wtnojy_i z(fO~OKN~Oojp-Ng)ZTk-_PQ??`xDN8RQz>V+5U7z4deL|ZrcYpW92V9#IxG|s;OPK z^z{3aRV~ZcTr+MC`**a$IDQR#ZRyhI^UeNLR&;62+bs4vu&zF5qusPS^5=KRy}Y_~ zKHtOH+ViB||C)8}YW9}?{-pD7-5swhp8q;)*Q?o=9O{p;=3c&3enGsz-fw-sbN}s! za<a~u%s-Al?0L21^ycX;s~4_5?fme`eA(BJ-ke`4&;EPX?@Jc1esZ@>wX1$#e~mG2 zUuAgIp{oCZ_4n$p%>UN^$zo1@j?-yD=_R{nHM}|9|6=nly?u5smX;hXzT$rH?2cU# zhPw8%xOW@Pm?*o+L}1H%KO6p+yj@}C_NS|-D;)kh(dfV1exnB)v;Eb+pWn&g%cIb` z>s!hmh6{Vw%$j_}Ue5m7af6rwi^pGL=5NVoI3_f4b=kkSweK!7nSE=Y&SYN5|MqTu zbHc^1RbRzfOLUl)D<yu~`Z~~2-f~Lw+K>F=DMnxNS1TR8-?R3M<ljd9K6YM*?;M8f z+y$o|{q?OyvHPor;J%3SBImpR-b`5XlehVr;=zBj?oSC|ny3H#Z}j}t!t36DijftR z`P{DjPqF6xI;#(lTju!Py=|fRaXZhh9fy-%>R+hexR>$wt_zRb-pbdteVQ8Z|IJU) zNeACOewnnWe_?gm%m;^=kFMM+yUKg(zP<DBOnmXbWaGVw`?PCr*~|2uo;mmY^vB0` z{<O8Li8w1iZAxqD3-Kq%SJY-of7xM~vd}FhI=0l_V%MgwH8n=|Ch?crkG*-P_xG-K z*|Hr~uNN6VJ3A}9zUsYy-6Hqr^5N&dHk7RHc2|z;S-N{>+vAlPZ+CYWetV*JdbRw? z`QdyVzjn7XAHF*6$KuTBT!E#p^VFmlRKLHq{L>EUi`!+x?+ZCt*vj^Nd;IdQf4;n{ z<WcdXr^EMpez|4t{+O*}p~YQ>?QH+;Eo|=I=u%WGh|M`*{4S^<W1W(O^aXdG6CWzn zHu@V$-naW8F5CX^|B-mZUDH2mF$psn7{j}aJk!MmndIv&%#fFdPMr}wNo6%}+x@*< zVGV*F3fms4#~-q`cxe9q{`^z6!6E9N-#TZ!Jf)?$@brJ~iMP_VJl#Flep<iu-j53= zj}K3}^5c!Cj-9(uzrTN|$xN?RSu3|rdL@x5q9fv8Tagv@<J_&l$tOLcrrb}zbnR#C z<g(}A>u0W+a%Hbd^7lZU$m4lWf1A`zzjAZ)=JM?)%X56{jD3}DO1%&3>|FGE<2rS5 ze=XIWALFBo*4Ioo`FMTmhAp4>F6-<+w^>ANwTaw@M_w(d8?IDLXj-r0wnUJD&BbHd z?8#G=I#ezRe^d6i-J-^Cyd`Ur$8@e}le%wxbIqK&t-HS0dxg0a#(Oqv{OfO=>*2L} z#ca<YBgJP6Tj%!OZ?^GPpWw)F$^A|1FNL?wCZ`nM&-GA=d7<JkCr5hb(jwc|WfnW% zU-3;-iQj0v_}kn9wZM{nC+2LdSQe$kwdT50S#`Ee0NdIraUHwOd37dSIhAx!lh<TJ z2m7@vVy5eDChR&m{Z_rl+_t&L<~Oe1`t^iO^p?)21}hZu9@xB)>bMZ(F8h4-)c|uj zoh#P-2M&1nz7>jUX8)Jb8}GJ&$GTao|3*?qifP@#DrFsOjZlVo+dqtESFK$ce_u^M za#U=x3eSXi^`$aL;?t*0>Ww~l<HI@Tr92{s8X|aDU6Kr+E?JT3BO&&tUQ$18;x5N6 z2DvJq735RDRAjUyE!bu%l;F7CZ7TEe0<J?Fs)Kn;xcQZ@J!o^C%DFs}yZJ}5{+gr> zlMAYCw`}NX|JxdR#hP)~)dbBFj;?+VfwN{D7dTf|_IgCh6tT0MElfP%|A6Nw7h7{E zU)XJyc@y1r84fg?wa%($=4Dl@tY6^RWIZvmv*o<Fr;@Z|%s$Bp3o3RPrl-h1H`Q{v z^@mkfD_P2cGv`9lmWj#S9Bf+do$UptuU1`D`Vg>~eeVKcPcE+)-C>NE`5bt*WE31q z?An*1x_%u;UDIkuZT{1Yv(FuqdS<=WLDs;nJm~$8=G_jaKl%=GGRGy%G6{XZ!oU8K zo0>w30@q>#;b%c!+Jdan3{P)pH+Xl-nCm25zIlwv%+GvtgYSi7aT_>~Z29p0s)y+g z9}nGM5l5D(K6o(EJs@-98o}=914?4alBQzKirnV5avB^S3zeNSre~ZL44$x-y{Pk= zTW{a#S%QHN*0G*B>7rmUhhK+n&7#}YR~EU~XHUPubWw$?-#I~uHNnSW>Y@pU;}$)e zu)^IuZ^!NUyAu2w;VE;Eme|%Qnwkb2IJS3N0;9U)+l@00g$R7r|HYYp=l;K6-|PQO zJ~yp-|KhZQFZ2KZ`*?i+|4kFSz1HnNa^t6J?zH&KlLjBXz0TP$y=oNsf6}Ct-Flw8 zC)d5;I%$zpuk+=z|HjHT#r;i_KH0vAGd}Tusok%WRjg0$7bVR)etXZ!@}1LdzAjjA zdOE*$W$E(!{NHvzFWVHKzHRc~3)`D(H{1AqTl&1xK>n5b=Ubaz*gg?Canbhu*XWbi z_<ptMtJg|a?)$pB?mGL&#|iUZye%(n`S-=w@5kG<`x8F@FG`!0Q(v||{^tFsaq|}| zdhfmde8X9pr2Su?m;Y}|+b+BH+rRqj>xGMcwtb0z_%dSCd4r$Rs!zQ9%x%8@cJU2; z-jn;?uXpL~u6NmQTHhJx^)2@H&(_$JYxDR1o>=+ox8cs9jq%%m*>5_ZFf)7abYrRK z_qN};b0c3o<H}O?{6*5Mcig)9^H+Vq>~9n9i2k(RxovSxb4*wCE5~~_uLZ4hU*49k z<<qr4d2zjZrRL84-Nm}^t}NX#`<y{W&G%<V-$zRO{=1jA{PEq@)3(hk3(w8I`F!oJ z5WdUNyXwsrckgh1_I*mgsleY_&nL}Td++q^-!pD$IB)&wSHAzt$4u?3=D)VhSroqU z+#SFAXN;#mG}}3!srLB!;&6OI+w0|jS9Z&E-P=5;OuW+hnU&I(lPrb&n(H3k<STv5 zVs%D7CU>(O*K^zLhrby8QO>`=)&2C}4VLS4+kf9uDwhqLA9d&O&xEgz|1K<gyU_J} zyO`~~C;T6O?rc3hrCn@)$nor+R44BW@ds9S0{30=|J75kpP%whtiUy*?YZ~#uRBY2 z&$WAef5-g%9Xr+@{_HlNF>U6&*Qs?$hbByBJm!A+H>c{k8IylL>i%_X&+8(o95)WX z?rZO!nzSu_87J+&xGvdve-8Tu?%!N*s`KyF`R$u-b=|Js{EKm^+>E>DkHlC%@~gR5 zZFlC*QkxC$9P9gxwNKaY)XsHaRTB@J_AmV_<J@m=YyYSJa-QbxxaZ>k$-m65PuHj| zUmTma<m<xKv0qoO4?p*Mrf75WeY3suZ;D69S;V~Eec$Y?{7n9H@@M#?S6`Pq_Um-( zp4vM%&5DlwDx7qEU&)#N?3343LO#pfHh!yZ6B&Q}M5&lo<m<l^L#~SbzwKK8fAiZI zHlbq|ie@~XVtv*o_NB`Ecr%;WmD@g@{&0Si;r5;NyM+G9O9{PyT({c3NBDZV;a=Te z^5)0%Uwru*+c~$ha__{g72zr0KfQXoxa|6C-U}b!T6{M>Wpq~O-^=;E_6y$MF8uIa zChpcZ-}~p^u$S^($(RwDcjxcIKi9pzbYIKHo-`N#^z_lMf)(40*45_LPA<DSH*&db z+49%tHtt=Rd$2fBtu{4vU0hdk<(>TdAO6+u%)O*{L-O>BEr##kCjaiPz4hq@d+mmm z>a{!6{}#NDU*918+3a5Pm;VfHxu$Z^O5X%g=`&dvgNKQYj4Y7r{jE_4`=0FJ-TPd- z#D}lYdx?wZfusgkv6G698*aQ&^i1a4Y<u-2L-)+1CH@os)XM4Z)VaNBm(>gzuCSRx zu6A~lHmz>*KQ>Dv>Bd8$UIV?8PZEOqjs+eul@#B^$$34e@N8R$?}>8(0x>5A-nE`- z>-4GTI9I^&;~nqvj`t}xiLxbCJ;Iicg`Y55$$WV&)&F&unq^J8GM~{4F@Eb4(w$cN zGct_VB`vyMdGp8#wT-4HljLkXdMbNtS&W|hZ2NF(;z^#`3zJ!`7Feg>;H^CubcnaV zv5MpDxkGCkcAr}*n`GFKsKnRI(%sU~<=rMZSu=vCUSxTTuVj_PDWQUrH;tO<JV{L) z)s^hdjcY&8<EhU0cJchOT?vMgb~_Ku;8BR}xX@GS_kgMTj^MS>8%`_-m?YFcG%1I< zUJA8p*lYKa!SP{-WmnuG@##)SWN*w7&}N&bH~HMf1#B8U2Fl7YbJi%X{<ukynWbmp zgq%wmn-rf<QK{!-{_)QA8($Is?9PTY?pHcZau#q;Jm&lJ5XYPqPG5rr1Rr@6&o~*~ zYaUklKwU4PL8DWc=fQ#md#(oyEnaXcN;VcQ(GhW(@nv?qxXOdr15A^aJUO!J#gw@M zuIqOvhq}xV3Gnjc?6BnIT;Qd7FrTevN@6UF$&|(_7ETT36C5)2HxD&)+}hxppnT(y z*az)jZ`Sy+ZR#^EHJLvlMDR`ud$iJt&L<8tCZ%znm?jdC)5a)b^v%;#Qh3V3D)x;5 z><kh*A!p+zyNG7BG;8t9QuFG5Fm=%d8HNgmn-4qvj)^@gH4^E1*7YpKWs}Bvi>z%5 z+K${l+dPxkr(9+%;h6J;rG8W8+{MDCa&rW^`KMbP=5{nHZWCuZvgc|@tNJ~rsDtA9 zfd(ucKP_iB%qX9A%}aK<AdAvGfe7At%NJA`u@wYt$=UEs@66X(T#{l{VrR3?eB?-V zbE`ai@y(WH4z=5|WDL$Eh^*ocic|Jgs0%YosOH(SLq(S1rp7Aw)6<WpOyI2lb7IHh z7Ul=DR2I#g@^IykCB+Yx99Yk@U*%x)nte}~L^oLRO$q2piez0>vBb&kLDGfLs0`(T za~v@tzf#vaN=`i45$<Gk{;5{xvXmWD_C&2%6J++(GHnf4sl9B)-qjf|m|RVi3oIjJ zTi<L8n;xl~J8Qa)xNQiV?1ripOOI6jU01)k`Q5VAV_L<V+!t;TT)kJzLn3AU<tbYi zac@16w&I{hrlQ--BYhbPpFK`5x)!u{Rb=Rbngdct#J-CDWL<A4aCPnHt!q-hu(l_? zyrLyLu`k3kV0x3-BZKW4IqzM3ukQ5QGDWfE2IG;ECD9q@3w{+w$!$HC$hM=B-+JxO zhws+c|E{-Qb#KbETD62fA5WjR-~adO-gkSZ9^S-xVczMPYLX{U`hC-KpL*lH{3Di0 z^G<EfKXRnk;sne6J-x#3=J_XFHJCFYqv$Z_q~!*47KrcibGWn3PN1Fhr)9tc!Ip_k zi%#;3ZkYXOm4X@9BrOgxu^k85#HNcrdlA1=ZfV`3wA#A2zn;{qM_ykpevSFfM47*@ zSa;St${jEI-t=$UQQP0G-~Kf-WKS!3(y=~%GtbPuQ-7ZbmeUE>b~}C4*Crw_b&*BH zyUQw-3h6W7WX-$(n*IJV1A)W4OrqX>cG>AYFKb@@<@Xxu=B>+EPFhqPls~Y1+8_46 z7V16;cS7sy*8WSF{Z;mF;H~;!B99p7o3Ki);oo=DUjA<LPn!t7ytc+0%QTl4TdL0d z!(b~EP@NmFXByv}TWVW^+-l=@%HF+Dle?n&eXelr@lDs?Grtf&Z?2GX{8nQXSHQp7 zob&kQ4E&vUPF}|OO)bLuqDOO3!qnZ&$9AmwyL5Zp@6#ukY$|+LzMQz}wqjwlVm+VZ zfzMB#WGXzjSUPb|f!E9H?{CfbSZg!g{W`;hONz{&pB&nGLz$61sm1(vvEeCx{v#*m zSLi*{nJnGG_$Nxb?@`8b8-eyK2H!P~-P~Xqbuz9`{h;Te7dIa5SnD&FQ=v@G_rT-q z>Y`UZ9UCt8sx8>J<Ko2>;X8eEZvQ%R{EpMB3-uC<m+g>$+Nf?nse1MFV#}qSZbjm1 zl1DETMgQghlr#HC(I$8G#pXO^{TtUxv2RpZoq0jxW6s89#{$>&mT#H2aqp2v8J@zD zIz6E|x7e5Ked*n5xX@chO8C|;o+lMXpOh{8Of^BQ#RoTXh3-kcR%okdbg5rm-+IF9 z=J3V#!S%~OrkO{~k2(D2?96>9K0evy_WZ_`IdU@Ve#J`7zr`o(J^v=#aW?mjmQ%`} zoY0m!scR~`F?f26kM2(^;R&*bAH8JS%22MhpzK2d(;OKw|F1>5^L(2>1onz&NyX<| zI&dsseX#%G<l0lOjn5|<^6^~1_T{X3`Tf{=^X3PvNfX*vS-*ID-JcJCK0lp({Pg3+ zTkWE?#j_Xhd-X-ax<>BR@vGHV&jX+D-T7PW_5Y&p?f&+4yMDjB?mxZ#Isbe+zr3RT zm7kxz`&~X?Uw-~`^P;Rv^Y#DN&AWf+t9jT_Mrn_o=cFIiZP~GJ{dc{i42Nv@*Gx|e zSaNj5-#@|1E0dpmpRfOa*8O_pbz;-g?<_v5crCV=x%-`5ckAc9A-a`1#mRa`E5pvm zt-4;5r8+-)X0-NQ&UG<`mGSnX%3GCm7@r+umWz7qzt*yKW#T0sNB&he4$N3pxQ+8w za-&bA<>Be!>VKSLSNH9j`;h;C&G*xvpB6uS{NBE%u4*6KcmMbE)@``^_uXZ2i~29o z`**47ZZj#+UB72etWWiueSfwbaQ}T~#d`NwdWjpli#ld)S(EVcZ=qLS`SNq`Ol$U; zy88KKYV1`>EV;TTX7a_gTjnL7Ia`w#<aFFV^w;GZId<m1SxoLvX=UAVvuRexrYX`{ z5nm!CA}>8qVa+(av@7cAq%ARzt|nwH?0p_MtzPV0?cT?1w^{}Hr!v|!^_R`bUcJ$J z<*~m{q~ANujm?^HtH|ryH{Ji`=PvXaOBcsI{j%{<&E0^tYTNf@WrsMvnG$|=<+dpk zq|I+;|K9oL*7e7i{<`1zG%X-~cB|k2*~i~YN5q;QGMCNVueSe!a`qbS5*OW)D^Ab- z7GxVY{rDEOzyAGfZp&v4$Cp0sUGT+P!`#tEJ9lN$<$1<(*WGqmPQG%e`skO1^Hv-R zk~)4Z@c1q!sh`4goN|xu7TceDd53to*pK;P-Oo%nFI|4|Tke+IOfmPjU(X1(zqNd) zp+P{V<zdlTVlrX3?manBBzE(O<@RTvKj;MU*Gg}i_cb%hb7#xHTlFuOlsMM2eX!em zd$PdN^_TT4?oVBjE11LXyZ7Yo>17Mf@l9oUdvWGn?Rl+wzNdCy5B0lOzO>i#=*y!j zQWL&xWZSlFhUJR*g&RIkimLs5NBg$f+T(|I3jPYb8tI!+Y;At>;1z$qtjW!{o+SL6 zm1tWZF!AZ;iuI!UeFgVYZ>(InZ%h4T$7S1k`)>zD?3a<cFShQ>uk?=@)?5G9Hb+J6 z{=?=exA?~6iB~4+lmvO1*V=D;SN#9P7R{xzi!Iv^YA*ZTlcT#oyJ}x<--?|lUF3{k z6);8pO1Jn}`I}`QXL|I?$he#HXMbn8XtsRo6`6v{*Us1f?aDj$IPvJaQ=QZAoo<OO zI#ItP_PqbmD|_Nj-0rG4{d<X7pU}1Dniu;HT6TJ81Q#AYdc*&y?;Eba({3#Nf8F`5 z!vBium={mq+xUmAnVz-M(4v0w)-b!9`~N@K#`}A-*_x=};uo(BKF;!$W$USabR+6j zL^RX0x7_DHI`e%ketykr*ULZK_wAT)w!1s2E_Fru-{ShulKkTG>(^IWxj)*xe7~`M zQ~syVZ)~4T%D(jM*0U)S@=tDEwnXPWi#g|PDb=87e+w#qeR=x%@Y9o5%-ih$J)h2f z<^SWNyNC64zdttKXMcCP_@aFN*N@k}PK~UOpU2}<dBgCj;qfU&`Cj*pmrkEulxFnQ zAoJA1vr{%t*7UtNWpQJ@rs#1I10T(xWjpe?dX`N%B2qQu)9#s?^_3O7OHZ{+&(*qr z|6c9ykB`;=${yODTORp0WMlmAvcL0>%G>X$-=!b7qslXULXDx7$YN(OF*COAhRMPm za$T>V<~ym0Tz9^x<m&xX^7@o`lXAOm`_GZv?6}|8#Kke*JDwE##<4!?ztxXTzh;!Z zn!aYQ|IuF|Wu6N+dv}??o0PKs^e3UWcDwuToiTr<yT5H+RkN(Xp>oc^kXQ33rki^| zx#ZOo!?M%o^v3jek~a>%J#)8Fb{6|qwd1<?SDc?J|0vCR?pxOrH!C);i|t`5?_FJg zYmaMUp4W}uiyHN_Xa7GJyYBRNQw66y&$#f^r@H(8weDtjsFl36u{_?;J2#hsBbMRB z-BlC(vMheiHvQ1qR<W6_vQ{AGWze#Jk_rEeYj(D|-mGWL{`1ig(zmfRoG7SLZ){|O z+?$D=bU(Y<K;ZcOzuKR67<P3=<vO;6g%@nOJwrFSKeMRJsaNq<`@ip(tzRBy;;eah z+<fQmAC-|)mPyX||I#Y-;DJ}iGT3X&i@9z{>h*qfIZ(2=ZRUrNwOi)RmtRslUDx3M z@7(%7H}}5bpK7xAL3eKX)%xzsh3ZMm7A`yS_%0K7nqK#-d;AxsEqfO+tE%T`{Ne)p z9oE&iUcBQuKl$z9%!1yX8<q#hEnK=Qvbt65%z+)#Q#I6IWUjh=A$sKj&tgXXr;krX z?2-<D)_C#%AEkv`ir3aHoqgzN8P9VYA<3XV5n)!=pb5&Yia|S+qJ&*N0v#%|gBP`! zXzE8z%wNX)lS^rrVx4Q$BrlKc`pQdMl#kBQP*`+AMP-rHp_}frP6}zxynk||Z1LUT z<Yk$5Z7cK6^}ani@$rLYa^`Gu`wx|sojUZF-9vt^8aQ~TFDhnIoBmy$NxDAR>x0l- zPX&%nGX>vULB8MJ{DTxFQ%$<})PDWrEG8T9<JtUT`@Bg@XXddzted&*RHndlx9e@c zzU65NsqZqm^^rNy{Axny|Ep`?$e3GBx$9o3{BYm<?l;RT?#h1(`d(-7f7$83QL}z- zyzw*WO3AUuk1kH+&`Hny_kw*_>aROpU+ZrP9+EvftImMm@b;CropH-{`v*_X{Nj41 z&-0x5&%LkLl_=YCobOC7d#=2D)!LQsPj&gM)PJ&O@5duad!_x~Oj!5-WjE^?zvr*E zn_Mogx3>Gf=R*HXAvI1eu>}lMj957{*mYB)etZyWWXhPPV!|18K__>Cra;leX*n&b z!5Ovd>Kz2%Y*TQVFik+wW!^)fS*p^CtP7QX9urx}wv&0`w-d~*KBt6?x-W>obll9M zzj$Z!wT)?+tWM`u7HOAwM$LcGy{YU)i&HJvR_%}_W<H$NANNi<p8MR2w=U|&^L=6E z$;ZAvT>I?koU#=czr_4m_f}2&-#><Pdr$epPIj37Q;Uh4$<lc8#B9}iOO&HvVkaKV zI&8qx_P&x!*4nLe@;1$80gabjjiuVf+`D&en<Oc9+~VZI{QWLkwmu1m)nEUgxOB&w zZ&NojA6b4Ovy=JCwV4gI=4`zMN005&@H`k{YtxZ;S4;lr)4-qpSCx)@dakni^6TS) zTG!Q+e)gWN2u`f5x0Ij6!*eaBW?yy7mxEX1?)_%Ged?<0lS&o=f1}&{5Ba+1zFhai z==r{;g9)+B-QJp-%I@#;Z!D5_aB+1k<1Alp-Mlwks=0{QZRd<d4Sx(=1s59szbAZf zQ}){W&>5#MUk%Z7nI`69z36M#N|mU$9oIC&_ZhyOd9Txq^Kzqxu!~Xjw=)sjQ_p+) zZAnX-{<dvaZHei2+y38{xwdTvwe!lHlIN-?$l6_hW^KRv#UI9L=G_I5)cmG|iD&ws zBaBk@W(Fv$<YK49cHeRkX?y=yw0P%I9krSItb%t|B)r^~dRKSvS+&KyYdkxu9`4UK zI)AX0O=RB8GnVhGpFQ#Ue7EZQ6>-zQSGPa4i@CBeZ<XDg+u8AKU*-BrjXjM+uRe9v z_&0s|qS-#5pD+3yIHzgWyYKt=|GioBxBlOsOY^$aeC6T~ef$;pr9XfD?JFy_WGa4t zy~a9~^Zm8ow|@%x?S6J))zPFyS4u3x=Ij6UwOzC7n{AEc^}27NFJ3=eA$RXnZOqO1 z-S3p=I28w;OxfA<FzCtDT+wr}fo=OT`Vu#Jw56{UyZtcI&nfutcKc$PYWpem-E}p# zwNi2Z^+J>Nl%GzNnUeY@bwZl|371WlDaw@#C9C}}$V547CuMcK@#}a~#ky8GRjBx| zC3CJN`^zb|+zW4UE{r;_5R$zmBP4yt)jkcrPcDLoCQh4SacNSlOr?hm=R?PQg^vnR zN0?KDwk$Z)vDi|jucaVm#iWB1g%3?!_=(NkkHfvKN~&JQQt_k0&7;i%+mk*d6g+7u zSQ41_F=3m4+#CTpldan-B=}qoHH%M*UZ^L=KQqOl)UE8aZOV_$E51!?d=<6p>cTVJ z3(s6C<x7q8uxj~ToN=+FQCQca=+e`YM(1wvMf0MP7WsIWy~=#4>TbJt!V0zd;#Zv( zNu|bxaC@?@oaw%`ercNA)wmA54PUyCH;Yf&_e}1O*S?0|;Sb#9Z!a%A=Ar-V>vQW( zn|{VD-2TZh*^F;;<0XsyO)91Vd`GR8M)N+M(0FY^Yube7XN4zDnn)kNYq9)&@~%DK z{u-D(Ht2s`F=tMx@Vn3ZvUh(B`SX|gm`U7!ST+V9p`MaIO`C~jx?Kg6TD^${%54_0 zQ@pcZ8wj+1|0f!?EvD;!5Yxd4Hw;<w<TGy_jkVe~Nh<56#yO?``?j4^Y|Zv~aJeU~ zuSDYK&viFumWlkE{q}XU+|iY$y;rCI%gWa6`*lZ3zsKeBHRY3kug98J)cuR$)el|X zy8rL?`rG^e{QUjrUU~gg&c(}p|KGK#t(&q?q}NXI>tnMF!HMNZAC^g$ZZ}>Yw<c_! zz`x%iKaFn9u81)I8)$znd;PYH+f36xewZnL=hQ<hp8LBlr-?L9PhA(okz0EI#p!^n zx5A#S*&Aw5J2PVH<>{5TO#UCe%(_k1|7&>a^DhO)OW7TT()x<rg+yFCT<aG|7+#Xv zDAA%dsYUCf)E3t?CasB_UCu{>1b%r=a`9;rNm{~cWl+qS<f|2|prssmn#o0XK}*y$ zg)GIT9k~txYMuepo+xNcR>{(IxZ-q3S2a4IQ9^@PK-&={C3bkR$T}Zs8Pz@!&M2j8 zF6BpSEvmW9Rexy;{aRWOyl8&C(nGbR9|{*0kDm4ZvB1Nk`b_N$xy{Vy<{h%{+^j7$ zbz$=&BcZ7WeO*&k=E>%1RV;Zh|Iyo1yBBBu-u-9~*Xf^Xiz``VR2ML*IC`6h%$ZlY z=b8J%e`;64vzIHD>bFb(uMCP_{J#J61^&-^-+wcHIL052ni8h}*J5I2vNW40s9JAf ziqeLe;+Xx|K%n*gKT)e~Q<6?^a^q!jo^wPXqul$_rOnCOD;G}deI)bg{q<|on*yAf z=9?@wuX<d#=U#5vI$760?|%PEa4*b?ef)Om{$IDc7Ta#uo3t|HR#ghu|I%>Yz&&-V z+w4QrUHAOb>iYio^6T6C-fPvXPkz4Wf95=UdoRyL8`WFt?yzYGJ-hp?V0X{9+dG5x zr=9lbsIZ?~Bl*|YX3eaB8S>A!?%%g@UupWs4?FEzrXDVpsLM&et1(IA{NX~OtygQ4 z^_@eb<9BZEop$oelcY#Lf4Ru(e{NlG+46Yhzjc3P^tv@|JdI|uN3kmfta8xIXs!2P zb&@kw^k3^R+u?H30^LtW0i8AzCf&HaK&09yAY5O;Nu`lTX=a?j$x3bk?Si>%M_ySN zCx2z_xH{A18<)TrqdOYSa)ulAr3GFa9^|~$^q{4w$!|h<QvkQ&La|o63=2b5mQzfU zYF8#XIXd4hkSlLJf8?&|F3$jSpMdKx)Ew*Y8aVnNbZpY+IwyR^bdQ=v{)`9RkAeec zCfSB8yJ*<t&6cvmNJC;B>#Mf+eg7o)2(#5meerlKYx2hCu65S7|KU#0Qz~v>c4^~E z^<3a8Av146Wy`aJ`_I?beyx)_@}ZPN+0H-t^_#!UMqduk5v}{rketD}04X(0|D(mk z!DML;ZqHg8qojpNzTJlm1VGi3<-1KDvzM*p3c8Tx7;*Qg)~4e(`tCOQdaq&s|94wu zb35;r4=HK)exCU8vTX0w((`}vFN;}zeG~Qi(uKXXGn#I+u8OL*NlA_U()VV6M#%G@ zFa1iZuL^wr{Q3OPJ^z2)k-g>i^3Sr8`t!{v8&@6ooq6)*jE^&>mbjkycvFyDHvjt1 z&-a2iU%fs}S4=MXpFr6C>dz_pr#J1r@VnxBs+ZB$bvJHno_*{4@5L@@(<Rkn6`n~? zEwXfOO?o$1>x4$^#O)kylQ+1U%{ihR`)_l%K;rc5kE_qTI2YbrE#P7!smbH0n87Ku z;L4<k`X;jtuG3i9Jp*{U9F31y-j;dtD5g#GMCLgiSHEJuNee_XxV#+wQhA-`UOYC5 z$3c?gFK3B%>(YZqg<kQ*%9t$ue8yphch4!6XF`jO8uOA@czh9ecD3+76J;TKMbmKl zjnsxyS5gneEIXm_R;9ws&z$GS9lH(HCqJ${?ppgc^P{9eT7<;zvt^>k*RC|(E4D9t zx8bR}`j^{J-h#9vmbZaQZc{UqIGTJquh~Gr^?Ob0^tG$Fq&M945DfC_>iXq3i(lcG z=fo~YzQ`x<x%XYx>teZ-c&zyO!_Mxk*qvo5A9ue$d#&%yg<Z#P2iJc)wrQ{JHa#KE z>?mWQ*7Yx6DRy;Fuc}yUefrU(k1vzISA71n>E-TQoORLly<f|-^UCKh4Op|0-J(8@ z?X=LNti5~ZxZMtYcVY8Wqa>YsJ{$cP@87UG^z!?+U;n&6YkqC}yA$imj+*_sIj{ZU z?XqjVJ?@oqhd5Kxe;u3Gb}J%&_u}4ZHC091be604ugU&*Q}y`9zXxls)|H8WpKSen z<_TueMiC9q1aAk;92f2S8$kk#G!~UESi&%MLuzBtkr1IJ0<MiFIWFamL7!q8G`L=7 z3TWP8J!Ns_x&mV>YsZz&fWU1`sT%|pjZ68R(j>J`O_-^)$ZvvNs#{B48o$C9*G3hi zU{#KpOJD49Nt@I>VWwJBl~dq?<u7Hd6b+SI{W6qZc%Jca^cPlK=29*iQMI-+Al_@< z3Xdc$F40V-pyPi`Rtis)Q(LxD$;W5$b*bQsFSZ_$G5PBA*Uxv#=JG>Fm0}8Zo%|d+ zKm1F+^VyrfGZPQVwTI5xzO3|H{?+!n8UC%`+5I2?)CWf~qviCAQyEq3jm^+HmiGD0 z1_DRR?OKnAgtnf&AL8V3kfl>GGi1_2<wj*!EjCG`C%3OZUo2_WP-l0q`rFLn)S1&) z#m}g|lpK8U(5|?xQqMlFlTHZV@%5CTT=ws@$nbA>dA>f`@hQOncooC5I@#_&HC0pF zoi%^lej3x!QNQ)V#3z4dG*rIcb!PSPJqH3-<)wH&GI&-u>qzBA{%tq6J{FDJ@NHrA zg}u8ro^=h|7Ib&{OLn#Z?#F(!Zdo{{XB`uJwldG*`YSfSLzSl{E%J~Jc)LG8$$MJ% z^_uIqJdBl})~N*@w%pjiN1cy{+fPQZ{fMMdrRu9zm2Fj@o-Iu5uisPDEhC)Vx8M2M zJvmF|X>H82&oh5v6Eu9q?3rU~S(s<Bsrn;FaZ*bE^NqPRZw>yuF5f%bK_c)$FjJYV zNZaA93GZ|`w?{1a+*<LDL-(R}Zp$=@*<GHAGs+g%>?xen`#i&>eC=8L&CDsw8S7)# zKd?-`Y_agP-TsEQ4U<7d<8;y2Oae>>hSLkonat`@>c^#(<rPz|Zu`f>{FuF^A+<zl z-cKej7S<&)Pn$#xFI98zZBbdGZhUgd8I_s$u78>3Ioqd7ZLR=^uhqhiAlEN)B7p*5 zZ}iQxEiC@?_nXRruX6q0Ex+%q|L}3i+xM~Wqh80pzjZi;N9II=(aeXl!*nXD@2;v3 zUo>4m-X^u^h4tp3jX$S9i#xjDL4;d@jIo5Ng2g=1nmmQ~-zGKw*UvdHUxFv?_T+`n zH$7bV{D$C@lM?Q76O-pB@uVBwbauD-Y-3yHbERda@vCUQ<I6ryP7+SOd^!2C@THcG zk603OqH=z%`*GvVlOtau5_9<MHD}JB>oYI7NVxt{%go5h>i)A$DnDI$;j>Re+tSce zLQ>S+uIN;c<YjdizqvM*Zcp}nX<74R$Bmv7Pd6S~!cxTYQ%ScdH!Y^9DL_QhRNGVI z$@!YESNH7M<GJzW&B;cag`W4!7nnI+$EPc1@`Sk)rp^|S->G2iEU{C`%vN!e{X5UU z|6S9UeJ*a{Oo^O$+W4{XCL@m$f8JD{<i3Og3FVnKZYs$#$!f*-8h)NhJu{WroUdc4 zk;ETGp-<US%lcNPOU*c7V&v;%eEHB8qc-C<LpS5Nls!izy#M7XB?~1RC37WfB}+X% z-y_*Gv&UQ_e|m={lTrN~%Sn-z3WWz!uf5hee4voIUNXcc<Nkv9o7>dmsvk*&+DDkS zSU<VFaCO^1iEE~3#O17OK66yHyg%9MA6J)kEjZp*_Vbtf^FJ1a71>o^`+jHI^SVb` zN;d=_Jzs8j-!SOwp*7-ie=_CsD+0vt{oZm$e$I>ZcYFKz_8sTqn$Xj{tlr1UhW|fj z@yG6pD@*3>wEuAK@YPk)>D|e*F7Ilz60-=*3ZH#-3s;HNT(2#bf?ph#9z2^RrFHPh zr#tS>T7s-@r&0<|R1`7HbyJC&W>o%KE9>IyIhn=JPCROent89bvF-5Ij*DN;9n3zi z9o6_t>_hS9%p1I`eUr3oUL0LH_2B04`k61TOI?dgdH%-HUt!rrUXiM!y^GT?Zg5f# zd-`<G)ILpt0Hf8X4r;Tt-@hC9we$59)dVdw(de$(`}Q^*E3ZrWUhyYkVNB75&m{}k z=4Ksk*-==S%*%MV_ecJw^T%Z47)0ud?B-2SD{t!N<6k%FSM_oe!`<g<!@u8E71QF@ zd-kAS{c`-V^GtGXdy5o**-6!K`#Rdl-RZTSbZ733y|0*W`2VcEx^|D-2T!f;nxOeh zSXRuM^eRZ|59>3R<80-EA`GV1h0ndDu9>glU9-T(a?Y&W-q(t=qUJQ*pRpw`{5r4P zoP77y7fzTt9ZZsW{a*J=_21>SXPVV79Fux(DE7;sqPad;Zxxfg<sT-NtVceDTX=pb zOvtvW()Mh;?sdt*(j;su$F`Rh3TE9ht&5XCgzVud;CT>OetCVG`6-_Z3hP7O>Nc$v zvA3@?_h+c_&)az_%^<7sQpOgopZi*ppYz38xH`MnExn|;?!@-BpY{fZC!Af^^R^*4 zfbm7BNZ+FU_I{!DJ1tee6=}4kZIC!+>NPiJGjow6tC2P5<7Cg&_bT$ABLWUO?Oic@ zbNLrVn~fn6vmQ5DE%=i&{bB~Q@r<u(b6wwsO<z${k^Vu+{QH+*kJhquv7~sl-}5kE z{r1(Y*82~n^zsgr2Ca<Zoy4&*JnED->+;(VmGZ0NpSka!msU2%`D?v+#KB1q68s9K zw}d=z>Nxf@=MPufL&=I4TZ})yU!<tP#OpjcL!;R_^S9=l&ibc0ec8LcoEJaWUz@&5 z?`uVL!>=P7EqdG5RvJ$-Kej$fzoR`MY{^u|W0`7J9)0ecZ}8ur;Qu(SOzz0xzO|a2 zGou}RB^@3<v^<cq(UPyeqD!T%e%DdC{`J{QU&UN-JMo6KF3vdO^;y*?XR0l>3GIE# zy)UYhtM<&{_iUB#H#K!vFE2WfQZ_lvs43Vh>g0mUUEz<J^yV!)__%=Ofq259r;!>l zOMQZuYF%Cu{giXT;wNRzQ`1=|U(7L^nR7KQpIz#_>-xxx5+*_yK7R;2W9ze9!{$@{ z!J2bk#U<J`>>6*(x?CQ2ue_C>pW&a|oY~O6$L-huR87%)-t7m@a-VeJkddmmc&qu| z&huQ)zWF_q&{dO;(42m11?R)d*{&7O?2i>cw-UbfP-*4GTaPs^J=!?EvHz7{?tPO) zbGgM6b{{xW+;}lXckS<0n;S2@(P$2t6;d!wC9|Hpj*CU1jnllmc5RqYu4dQ8lb_Ni zZTR)Wgpu=1lG)9yUx%~WtqcCYujUVVS8i^V{b&9}HJg*)yEboPv9y_R<BH$X=rH95 z-3=v&dzKu@44&?!bTaXM#+<;;usLq=bJFBi@>acy%;1}M_@Wn2)r9~{(Jb+Y=kv=# zXUblCW@U1#K68Wgsg6%)Tqb*5_TMXc|Fc@}@dI8mn}zZZ@Z7&Oxj^*Q>I)6?y!q5; zc>Iq1VpjP~#^#x*oX?&g*Y0m#;m=<@#YJPPn^%^>tW1NccTK0WTrf7@|4(Lxcj@cx z4;*JSAO5IfC1ZN%{F&SKn=kB2p40Z`RZq{GH$6SC-n6y7dc`JJ|5GzAzVqInnVn+4 zBQx4378_>!*LcN+sohu4cviXK#-pNHzHW;JH5OkCa5=nZ$y7~EBgx90eL<01!@eJv zUvzNKhd5T23)>tD>^xsOePL103#_@wH}}c{h7-%Lg!MLuiyK@w-)`30yG_)&H99fm zqEqlT=BxwB#nyYwFBr$9B-YO^+Pj47X~-|O*tm%@pHk!|-P!y5Om+6T>l5~WX*jRT z&be3Sz`E>+i`E^hzc;%2v;?dUI;}b9e}W-<uG98eAJ#fP+{?!Fa*_O7PJ?Fq+LKQ8 z`%X?g{(9=>2BCJpGAGO4s+$>FnfDaymp**;>azas|6w05m;UJ5weJTL-{XhpZ`S|( zyFb!#c89~%m#4q_F?%><UwFABMAEGAoZ{lmS5xk>3w9jd7rZm;_?GKx4+^B#A1$|V zZBgDDn0H0;pd-u46y5zTvvy>d{(jw6X}x&azMl3A5BJ_KX4)&ve5U-}rmEh(-j->5 zV;$4F4k}DOJO6NK#rE2U$dqX*k7aZYv{tZ5)i=$|Q2Hx*=Y>t#gVXz`++{8PFB8=4 zwmw|Ts3l)NVsFA*qmOJ0mi1V5sa-BuCA9aStW?dnQ-770nAKSrvj>|TdCAj~x>H&w z<xJ~>iCX7WOTMxM6mxGbSJrwoV@;a1rmgahB{r-tu2y{&lG$1<IM4e-PwIcW9p3|W zzej&tK4EsftMJNct1f+&YVH&1JhrGz=%G=xuIlm$E!oPGm%O)`Yf`?><A+v&@J(Bf zw>hR!--N~7HwIQDALEhQ<hcH6^Q{F+x=RdK&#_U8F$-?xKl^yrYm*7ASD1yZ-zQex zdflnkEcQi8@R{9;r*@|{^L$#m@C~c?&CmpsTi%{C&QCPpXRE)^D5hrBnOC$gvHpR^ zi68nWo(OnlUcS|_MBvO*^#H5s8Ou69<Xp0Tsu+4HgS#l5+jTv&>C9TjoAQd!H(mU& zYKo-^hvVwUuT^VhKe3-s{V!I;KjUTF>t}7xqR%ESo+~HBZgE9TVb1H5-bD>_QcoGY z)=3GPbs$ag)O~AiroBEv_3xdV><i}PrhTtnASD~{aAISd-^_*Hp7q+cIa|DbwY&Dt zufK5U?{huQV;ff=<k+^UKS1ibkkVm~$dV-iqAfh3j-OUr8%Uq$R{iun)UoydroHl) z^@E%3g?!Ymvpa-Z{+5dLN!E*IV4LvFKEbY{-`ct&E_|talWgPvBj?`x&#Uj(Yb$C# z9<XZrONVa)PcQT5#8l3)C{;_0ND|P@v0}e_B`Ys4Q`sl7`{YBTfQ#8ZM)DzzcQZ_P zU*tZhw{BwXZ+V`{S3E*g5Am99zbe=BO4e;(Z+uO`PWx9K$Io2fpTF+@?)?1uaX;^H zowz^Oa|gre!+D0!uYCLG&inbqbjQ=r>(|`-^FWEODpw@w!AA?;&xLY&hm0>C*!V(q zO3S7|wV+ROXR1G#sb~GGSJLDCy*EQ=;#u$d->)zBH~cy+p8c^xYSGV%A`!WLsYiQ4 zFFOZ6jSN~LyY)p)!%b<|C$Cj@9dRtakzumve;ZrfjvrQaeaGbg^_%=Po7sQ3N&8t< zlKh`~wom+js*+UR{MU7ueKKoH;ESIL=F8)6tyq6^d*4U#3j*`MN7X!9_EvkUbq7mN zQu}wdf-~mwR~9_{m%yC(=$!w*2b;?y4yu~*Rej}=Y8PXO^8cG1R$+P}>E`2Wdg`po z3xg8B>6&~Ih<dec^_eKSnK@E>t$x3~8tJ)#m+SQtbB+2vw+_yf_1MQ5e_&~p$uG8~ znBNcoHD){1mgkz)&1)-^-pF!(){4xj@zvZbW}KaEc40#L<i<uT^~WMh5A8eGcW&Lf zt~a74B2qj>YaOPoJH<1R$Fk1pv!T6}*REv`A5YVdJh<>+yv32{JG9RDB?q67h<DWK zSfsc!!LeqKgTQ2~*7_Fv3B5upbKd{Wc#-;J-Y(mxOm%(j);B7<>Q`@d>H2rk?Rvb~ z_3QB~`K8}}_@l=z9%w1fn|fb2ezr@1_T?*1q05rYp9IcmJhb4)<!kTvE?Lj3Xc+o3 zH1cy<SF6L)6@RKTIBwkAXfkupGOiDY+Pj(lOql&vb#hvf?aXu210SY_)#o2soVi%> zvRl-aRNnA{0_U?rLbonk@YpxDUo`l9V_P}b|9K~K!{=zUNM4yDDSTZ2sE)nV!RD;& ztryd_2t+5mD$ka>Fj-;it*sXGPt3dJ#d5_<<oaXVny%gXUw^wU@4R2R@Vr|8f`>sx z-V4JcLNjJYO-=SL(e$ZFFJhKi{O@!9WB>iTO3T#cPBe$CeKGN+>b-M0n#wzOeF?bZ zaxmQT@<p+^&iRbVEEkt{>2;reVdNzFbYfHA_Uz?)X4#ctH!?~+Uc?0Wd~fi5cSiB> z=FV>6!g(&+EYq?Ny2Z9Exj%nGWW<^595eP?-?x0-%`^SZishomOoXpEXL_z&{)7F< zgSz^U*WYivq+~4RAkTQJrf^SKT7ZOukEe67$&^#GHXm7fqcf=b$$}-~l3&vb)BjBG zzL1i5{`d5HC+FF(q*qz5sy=hnP2IsYW1CmSOU+$d?s9grtY!IhLT1yeH*Cul7qt6m zO!Az<HE9>WJX@W8#l**7&CJZU@5%2iXg{Z+K6|F?$$H_G7e6#TSJtLKIUU2cdavVr z@8$@N3t1hx9|}J*l(@X*)hu`UnpjX7yX2NrNb0%kso#QCD}AQAK0M=e_+$JIx4DsQ zDJ{nzUN=!XY1RCWmwD>?Ke<oi*1qT7zP>2a_DS=NDcMTOr<hZ8qO_wgYOLFOD5K26 z^V>5A?+@XNQa|pkf9zy;pUdpj%0`=e%`@NR1U0?-Q(7T7ohLz5@_>q>oZQBJWs`R@ z^IBF3`l>xOp8NN~6MMEs$7q&a9IdjaDi5|UJeaa2G{%u>-9@KAU9Cz}uba=<vg(fP zk5=7_6?~d6cfR?M;QRlo%X87Nf&zm%%30@E-1e(8k?2=Aef~zLx>)`FCA9@dE)^dY zygjRkBWmHQRa;iBS^Fbr#SzgKZKGdXcPV`oy0|LV;bZAmyG@<5W#0XLr#JcZ&5LbH zJHJ&O+R&;sdDoFWIT~j!J`M2R(7sr(abLim<h$#blq_d=`AuN6z2tJ{P~(A_@4oph zxcBv3z-0%XX^zg5Y}fOv-@1F$=0<aUN_eElP3!5G!!?~MyfrUq^BOUCXe|1v+U}!e z$sf{{;`@&0k6`#N&u9kED=o>V*H8A7?mM=4`nzK>Rn6OZ%Tkvt53DS<FteXA=iTA= zWz(-PT@9PQZ%SLJ<`2$5r&Eh^J5ywR{Z{Vw6Mni%!`6So9^Y^Gr&-Ufy>2P#BB9)@ zTyMb|z~bu4+FE6}V#S-HNLT0B(&rD?zRiC;(L$-@sPWS;YxXY`xBq!FS(&@cL+ne| z(={4rSTqAp|7fqyxbgb;vZpZ*u5{L_FJQG&iL<K=z4>^7^H0q>kwQhEfDX?iS-dla z`jxLeU3=uyzdx>j?tco;-6WhE`RZ@{GL1%o!`~OzoBuh(93B{H%)Qoybq?E(JgcC} zofoUv_FVbbvX|R{d;ce+KDpwwYw`a(Cfw}upOx`Jf>||PbN2kr?7lw?r_5|Fl{~5c z$o{aNl}$uT@?X*Nrauf)pDTCHuY4m{^<Pf=1lPVJJI{XGDR*nd|AcU*ZA&jzAAQzY z5H@9Mh|ugHZqfQhvQd>nB0-0WGF@|<_dh<cZB^`^ln6Di{-Ectp4|MQnRQT^InXga zW&h6xvAsI;_An}KIkN28ba?~o+Y4G&2~~b#m9*r%{XPBt)42`jjGxN-K3{#oAo+z= zoBxMOyS;Du`@R{kk4<F_Za!>r<XzOkd-vIk9<1Kdx#-)HTNamcbLuCp_4pHX<z{I3 zOXGqM3r^>n6cjJ_Di_?o-lI>-RYm3KjF&kjyRtiHO+Tge!*b=K9kFjK<3C@RT<|r` zlYeTzS-};i#4x|QbsD}?9501dY?<8V%$wnH*SfU*dubVC=|$^c=gGYuxfg^wuFHvw z@46dY)YxkE|9Rh~rw<MJ*Jb{$Ka<mPVR_*vuZ35VzlPm;@N55upSg9}p)Dt$WtiPM zbMC;&X;$@_3z}{$seSjvMe3S*LfSX3r2)=q{9Cu0zI^bv%;eg~4GfOUHFbJCYpZ1q zQ?$ZGc}>q{E#F@fZ!X2Pd}aCLUH6{oHtS~Y-X8ey#q7E(=j+b>*^wU4&%O0K-=iP( zU0$s<`x@rI7Yz?L4Kw}p%#P!6h17v3tBQZDi8Bgvx~?QF{O@Jdle+ZBkFzJngsux) zCz5kK<e=Y9he=F3uUwn9#F^!(#Pj@su4zlx-1s4}^lWtLG=ZD^ot<@@8!MjkxQDM0 zoAlM^N$8XhHUaN8{O(aZ?-<?tpF7XqcbbuV^TqlgA&au_+6#8g-5s0}u}{)IctfzF ziHGAi{hueJXKX6_T>p6aqX=;+hUF{1mzBAFUUuNw(xipYo~%1ymc;k@@zX_3PZotP zSSrVwv*qXMbwBvFGCnQ#KEYjFYIKr~Nv^<$!S@BX!jE5}Vdi|#H70-6dX&0!3G<Y& zwax3YK|K?bdfOPqCjnbJ&lp~sADgjj?=p+Ub}wa(+BCkXNOd2(8(&<gx0iF9%CaM; z``@p*bC=ysQApK0tWEE19s9B~t9=x9FZ5d`8Z4e7Qym*yTj`m-;9wkENP6j|RqkGM zZ0fyF<t-5N&b#^I!rlIx&KuVM)PJK`dq<+@SwxAMs6Sg_;iLMVIgdXsUAbgu+k=M| zT>X;uX+KS?<ln5!%MMmq`e33}t5NXE*z5%=DGRwH=hjC}eG;%?slMOtlW9dkGu-qG z!m{jjUcc5%iwuA8>*Bh-ikx#+Dhci2OMkVcb!PVTb-Z`u@+O2X+B{!;@~j`fPS?i@ zs(Eu)9SnMxp|?M0^=6Ul^7U)JS-;`k`n$t!sz>jHbtg}<F@`=kr`{5>b?Y*-yeGPi zva>%MPrcje8~xulOn#|_=QH~<cGp;Ij}I<$oF4mcY*KD^wwT$rN9M%Bt~srB^`$rG zy_;M8Jn7v#L+c8I-&KjtzgGNN!E-H;>0yb?G3_Qx1)FONS7x?Uty*<pvbM+h`n&s{ zh1|*g@=MNS&20AEpQb_l`|S?zIz015$7W~qs{ys&_->~6t?+u}dHY}U7Y`Q(*WWY5 z&uzY-x9IYB`IlQd<{is(UcA;WsrJ{FK=zqzu0b~Qj?I<WC2(T8)d{)scG=$BTa%PL zURw+G{V&kEBI|Xb&8F8+`S#BwpE9F>ou3}nKXZSqZBy|wG2TdTM`ysFib;>}UDdkr zy<K@jM()2uH{8>I*s{y6{d(l?EbkcEX+qgkS2rKfR!^B2scN7x`Sbl-jf<BWvgO{9 zPT6`(;eFonhbe#Ew@$a|?H7GMUq30^?sdj{hEtJQ3SE<RPX~y<>pK<8H+v=L^i6%A z^_-&1XU?yGaIU^%cICmV&GUAj=Tc+UJXh$rQbT+9`$Jb(m7Ui5+{HS<<LJ5rN;VaX zH+<FL_q!I$eP`43zYFh~*6d%u>fywDsV9GGUF7re+;-4!ljU7ai-xqhPV;4+wtjzC z@#R<fTwD7Xht(Vnu`lF~zbfBqzsP}0X{na~@>^ZkSFx-r*~?MylCt}nwCSN4Urdr_ z+-rEf#DCVBYQ9Ae-?_~;FEN~ZY2VLs@yqe=IJek6Qudy<Qt15w=Owol8fX29yTrc7 z$bw_;^z7+zLFR|pH~g>3^*?=9?Td}fBEJvb|Bk*bE;?3m(9O{&Na*6pwSSHUn_Rig zESCS@UF_)m#Ww=n&F(nAznfgY@caeNzO~z4-AmozWE$dSWLg<H;qLW<f6G3dTfBPD z$vsymh$xGu#m2l>di>?6>5R#uhy1J$<QQ2-*X@gNUgqw)I?0qb^O5WB!jyxbmfVnC zz^3>_?0UrCsY^m%70I-|jBL7+>;CCmyHL%|oX>Cay5BRtIv(5+EWFBYmd>iEy;}9E zMTusCtA8{t6AP*}+h1*eP*+iJ(QCi!`KK&2`0P$@YzY&quGi}DSt;6D)obLdt+eyO z>Yuky9$KJ#$FklqKsxoeXQZ5l_4T6VCF_s=b)V1wr%WL2B<rd_I|3J(ZkRf&%I+^u zKL3^}SFd}Ud6*wR$}vgUXq({b-FJ2F1#=yJQ2%wuoOMY-`HcHq^?WpM?8*H9u6U39 z!{fWZW(3Svt~vkEU2gwl+eJ3pEspz}U)jQXpyFLb^zHEYU;M3hx+)hxhb*|9E%GwD zh<lTw^b*z9)SsbA@mvA<d9$aiHe5Z|B(iFaTJ+Jz%Wmu;POYoFZbrUPi<-HkxT>V? z;FOnlTDvFJUlVwJS9~h7kJ{|rtF~@j$GPgj(iJB)PV4F`EdBpB^GnIx(CpAlwdQNJ z9!^^NQ*#2lQuI38ojWc}@?PW1s8PbQQ!gT>a@Xgce#sopdyhptgN!;qoro<Gzqx-+ z+3K^wL81Ha=WpM!CS`T;$~9Wqew}M#BG;B@b$2&t1$j?7l4)rj<Xx=!hc#NKY0sV_ zjm3wH{~XNNzFT7H@0%9a{<7qsIPh}chJ)WWC?4Ceuu(C*{o0K~hc3KL|7X8sD}%{& z!PiV8(<OSD)TaLnWD>0R&Te)PV0f^5e^S5Z(jEM!oE-^UG%u-}F8q>F;?uh8)G?V) z?`O}PC{q<+cYWr~#PUCDPH^A$J@mi8Irfmst#f94eur;fRp2Xlvu630j9pc;_P>bz ze)YxAo7txOLTx$r*Hr4w+xKqs^-s|!+yCaRR=VhLT5<Pj4yW_?UE|{Xgum3c=CTVO zpC|C|`PN67MdBMhW<O*o-|_98RKZ-^uA_F^nM-Z@AM1ZfP*>cmvaqPDdR04{Uvg;k z>NkRWB2Kv+xt;r{G56nJ<Kj~b*Vb#9w`Z*_DcZU#>eN}GwI?la7Vt!A7A?6jYfsk& z#`WwkCde)dPno<hxbOI0ldFN*MF)<>_||{an*PF6I+^FaYWNF|YU8#uUsaFIHod(d z_?7+9+OuufH_mS;N^P)Zmy}L+^5om-C$VAU{0YUSU3DpsEnA|^z6pGkTy`V<$k*x8 zUnb36ymNl4+jOJ(c5(cCmvZ}FZ7#mfy)1L_#e>oBbndVf$+(?a^qk+vW{U)9@~*g~ zC^d2VYY%4b>7IQ|X3R!rX4B6HGbz_EJ0juComQb5sk-NqjY7jlUPGrF$2O&?{8Wsb zmg2ohF8clUp45{P($d1xN<s<}lO32EP2`L&n{B?PQX-TVlwrO4<*Qe7wEO1FRMtL{ zBKO}deBbvI&okcVzt4aFUgly*o}TOFl8b$BZ*Q~N|6Be1-VKYBDl?ziXQ#%$-}688 zRegrs?w%y?%(6<p=wpfX6SRNSWWTEyd-i9-qM~hjC+=`Rn`~YCy!wgX-x+tF&97*A z^gO`CwEt1C{i1oxPOa>{QkEsYb$-@@TN<`c7c_-5NiB<8elGBRfPCQoMe~=MU*4TP zMXPgB+|3ISi&ssS$y}Gea-vsCQm0dqhgN2=nS6j(eMnGekms_jC0n^Xc_VF&!>*ZM z^UfCW<*J<QGBGxMalnaa(XU%eZ(d~FxhgNM;6p=*mgSNvgL#pP6TPHVji&kpMK4}8 z{q&SeQmL_<*X(P(p~P_O6{ptBRr7eHXNP1Z%|3H7HK;Oo?+&*pW$PbjJ=O)7YNvRG z?hTprF(7K!q9yfPw!E>doLqIRGh<^#XGUe^&s9qoZMt-+=%R72N=RX^&le}P2%*Ab zZ5iz`G5UckUAwPeTN&b;Jxw<|H&=IMX2`S?qFY~2*Ad-%ZS^ac^&V4%T)Uqv$e0|n zOz7{TWr0ekCWTF^wNcN{$x_=XxL3hmBk%-=X@Afh)-TB>^Q-1m)lU-GG(&H3o!i=H zIZ8|RxV&AWwX)W-{l(#yy^3CryqCppdEL&i=H1d<c1iD+Z*_+L+r@uN8u)?|tz2}K zmgp_7^J;&|A-lACg;th)sBfpyoaaH_D|D}j#QMjdkDOTCv$;X}>7Kd2L*B7hu76T{ z>h6K7MfuP5&#q7Fn(?~$P4WEt8PfBr*C+TgitLGxi2U)q^5~ka8luj#RBC6t&bgwr z<l)z23UcAiZZqr-UtO_qt0~*wLrNx1TK~N2|Aq72>WtZw__V=iS;(mr=2H(JHZ~?Q z8VY%A&_9y7r6c$0hNCZ3_`?@^)!uk!;#8QPKHZT+ZMklWL+FlK{U^^RY`A$KB&VLE zjFq*n!0K>fNT=3MkDjA`yVu|5KAKpspu(cQW3Ak7;q?xuwbd?~ZRvgg@tccHT>Is> zZ1TcJY+sm^BXro9gO5bT`)}wM7I4=qyuew;d|t4%QTYO&)m-o6FFq}<kgR)?H~siC z6UV~#b&H)j-a2}3khcA5BhPKNUAkB7f>?IF@~#yJ+-2n7JMWzTX=_DpocEgB^6x%= z<=m2?TeU{z!rLuB7g$Jjy0u=o{PbdVyv)Xfw=R1a9JPP-efPrlmls{FSkyK&F5-Q@ z?&0J=J?ep;&wS&3ZO?kzo?iF#>o?mIU-srKdt4B5;-2s4%`#h3)9Q}r=KpPD{w8<p ztAO=)xg_;^(Zlv<Zlvk9oKSf<aj*4mq3^{X-S!ClXPEwQz7pfJg{4kc&d;6OUwo2> z{j6in7nVnpvS$kXUbg+izOCnvrG?vnn3{0>(alAXN9#^<SN@UXNWb}_O|Sdtw0$j$ zYkDtcF)5c+`UV<TbGrW!oGcu3poK{?i&<>_vH5+<*7LtEi{4z{5bdDt(_g$*_rLCz z$Z~t<|3|v3_S$hcTzHiGeX0H;j{S$z6?dk6Ip(wQ<=?vt^R~$|+shuma4XfkY3B`r z7hIe%Emu4G6OR{s{r{3rG~U%Ue6x<MQ~ZZtXC0M0PiAb|9$B|3_4)Zk>yUk0zpu3w zFN?2`lknN!QtTzI^nhdMqk6rC(og?9yTe`}thdkX<E@mhPhah4XS;Yk;M{b{%a2sD zYaJ$h-OZAF!2iMf$5Sg*mHf9ntQQFB`Yg~aryl++QcGvo`m-f(ul_E!TzP-Oy1S8= zOAf5Kz5V14**86QJavxx6T~`Ye}B*3?^-E-C~vxO%>(1zIemZkR@_tNjLPP{T^}oz z&{K7R`=Hp3f6ty(JTAB!&3mTAI(+U@yKe{hwcL+agx`~~dfh)~|I_`Pd}?dh7dtSQ z&30WI_32X9obXhIHO-tpa?uw)O~1bEn(XnNdV3Gw;_k8MNxXD2);xPzlzU3@`d*`z zPw)KqKO#BhsPWm-|DGX#6gFo){8E#5_Q$+~^@nXAyQ{OE?=xKa^UjU!yd~|`9}hjX z7D#lmG7#o9Y&?2HY2y1^zdkLC&&j*B_UeqcWwXzwv1@DU7Fp)#N#D;bzw!G_#=;-| zOT%3khPB&r^_Vj)nWbF4@5b+M&K^PS7wtdaTQk?D$SeBxzV9a*t=bk`++v%t()!M+ zS9i4?j!P)jKTzd*!MxqR@YxaT{Wbruu?IU(uddq5*M9kBiNmtAld0uVb8BWFewXq2 zQR_+9_;)|}o$tJR!EkI1bI|8qC#MRB@^oe{%lw_@wbNye%AK<vza#mo|5@MKH%(e? z>y-cOUsN<NTx!o+`=);7(M|2oym$WaJn*yr!s6pIl@44w^7p4peL?G**2%MGYd!zD zm}O1($C;gfULMRcD_s&lciuB;YY(=yJr|eva~yi`>DMBcwfg4jH!i6J9m`C(|8RqN zu>GS-rzfxF)G~Npv9^frJ-R{4{Nu;!J6Bh%w7w;KA=Pa1Ilsg<{(SZ#zyG}VFF$<Q z<sfoLv3$b8)ErHI+2@luZrD7kXPl%lv-0wre=6-;m(`uIPAxU%xWu~o(aEAhq0O7; z3wBS=eCPa`^-kdQ*CA^2|Icz@?^vms#I-QKHrea*g-dCBn!R7?$+buLIBZ*7+PU%H zm23Y#TKxScA~oaDhCfp}&6OubZIC*nTUA(aM&VkubQRx0?G0N$Uij6Vy=%HN=S7M7 zJwLlkSA8{(H2$&sP?KB%>)yW)Q_^EKEEh-{@-d!jE&iS)&Te0Jx2?V<o;hmsC$r|% zm-j#O-Dfh9uj8M8Xzh#k+VcDImi&bhCj4f`%1QTDPG>aUATqBt{mbmD{%<F}VG`B& zdx|A^ijcX2+^Qc>&uPE7G1XnpcJ8nC5X1L}s_G|)Oqh3kZG%zd@6~>rFTZQ8ljwA< z_B+(^S;fG7M?&E3R`!qErhnM<*Za(_@Q+P=f9ou47StVn#k!qS;_5lJUW3bye9>!O z)m&!rIkffi;^qExe{!sq+jGvQihJ*=t&_zAo80}Q_k@-IuU7Z_<x{qoVfK#Z|KEPi zz42b+$aA^&{(9SuY0GckdZ}c+;j~}bq{edhHV#w!{Cx-iy<|K4?eD~9v-?l?{=R*W zU-^BH;z7xfipOCVkNA6-icjzC%=z)^9p8&IpSS{!zC!^oDs;qnSsv<qUiaq>pCj`c z1HH&U<xfK^if_ApRa?B}qwC~<C;supPF@u3yDzOcs)os2<xcb7`n`_JKi@c@`a9yf z@7I*$OUfpt{NBv(cK&Glp5y6K3~!ps0;EiSsr8=CxmL1$cCXmxz<hSy5GU93(`MY+ z|2c#8#e&1@Hcz^fzuH6L?(Up>qE=sz>@T<wzLMAGQs$!P{2^C6*BWgwOxu3e+d#hi zmu=^Y)34ultNHgVbl;P8=a15~`t^r|Hcy+<J$K_SjuVRuHrkt1NQ&0BnJB+dDW2Kg zbz#mbSEn04WW*lEJ`>x`_#|uVy$pt8HCe$eqLKlef>nBP6>`Q)YR(_x{r0LiV~*TE z?)IxoGUTETyZ-T>?_wjCzWoA&yOn6x;+t%_2bOFv`1pN8Ku8|j=6DMRbAL;AnZ5Pr z_WejOc=LU}vQ+TNs}ed<(dy5ZY5(}OSNC>m^x0oN(vx?*k#m$$YpW8v_h6^Jdfw!e zDJJSSzd!nNRYm)>iF9?ZyV>GvVF9aIf4r{wv%Mnpu-ieq8*(?k{`$rFL!eE<WbXgB zlS=&T;=1PDYZ6=Ve(_QH#jZ^~M_GPzZam>vBv60)->mdErn`50d|Rtl%wD!^{im~5 zyL$s{iv2z`-hcVtxvH$A|I5pT4&DNH0_NCm70@+npZQ)QWq;E84|@dN-F7*}GBz&| zKBG2S?Dgg58lN7C-#s&hmoL;VwmPXXUC#3I^`CXU*M%B5cGTSKkx}wkknLGwD{R*O zR(1FBH8Ja*>!0tq`5|gc)5|$Ex?56Q+2)>Bw`z{%{C0sM+J8!f)ltXCZ%p_nHOnjA zdR{modDC>6GY1qRSe915Id8B-SDw$Q`A5NApQP+<<+pXk44jvXH+}2Z5zlt6j%8!o zH0@yZ=Y?!idS3T3{+#&0X1V33@$HxiI;A<~?`5z0Mlq{MKIW;nn!+#MvzK?VE@x!G zyZ>)){9vt^|C22=wrQ<@N}%UQ8M%)BoWol*Ur#n{QBe4yd}nS!%^`)RSG*Fw^Q5Hh z9=|D1DNNs+TNvIat+r<28uO-Cz7lI~l<jtEM)3PgSKR#f?1KH7Gc!8g6qcr56b`vs zcQ(U$QR<G*EgNG(qj~j>ot~8QIF{D4dxkhpY7SfS?X1|f>)M~ww?<n|xaH87%I*BK zY3I(>k6MdsT8m{{Sx@df+4SV%A*WB~{I&mX)H8lqvr-?@$^75Xq+V}kVrRz%?&{=n zRosf5;M?77Akg;yr)cq;O(Lsfy~SNJbXga^)w{Ln`HY^t1!{_~4%YAgIYF*Wf%E*6 zx%~H5X!tJ`QFgiSwo%GGqxA_JyQyT`g#>k#PT>blz1%-%e+`+uVn<NzVq2$@pF3q& z|N2|BHpKsFU2LMc?aD~|clFOJ*kx`j>^m=|7`emd>Su$b_)}qy(*zq%OzTWEF<!$L zWBTJ+QGDBC!A;Fq7q6&YHg8K^Qh!kk@5$o(dVIGHj}~5-vT)%h=SjIaPbSRGeZr#p z|NH#5Rm)QMU$OXFmVfn|XR-hMMmw9Oo(pbVekYJ2{X#<HWAL=Pym_BrrV7vQ5#1PF zZM;`LuT=5l)9qomLVtc{cl4~CURcE}%4A>$-mPYax|V&y{j6pKkz?;ai#*?yEV6p; zrY4TL>lD`9z3_{{&~lf9uhSLo`*nsB<K8$3)v4eAd06~OYM_^)<A-FC)rC!d9(e^J zn-e*7zd21ZVA8v>W#aCe4yK%+w6B_5DX{p)if%uDeSP*)Hm%9Et$+V4NV|VWzdn&k z##(=$zLesv9XhX4=M-q9E?4m7bVxXT#9}6ES^B!Dn#kh&pa5!*oqSy{_<WRofrI72 z#*~@a;=kU`cw~`v>O#OxWlw%HBM*Huqozs!fA`mh-rg9W754Sx-BoXe)BF79-IF;w zaruS7qHiT%zC6?{3f@-tde7D6%YAdqj)~^IJyTM*W;J)G|NgC)vZq?tn;xrO3Q0kF z6Pb7>N=w(9qbzNWopKhml)UAA9hZD`sAxj-T@S&aSuI*Y|F10BD|};#$3ca5nNQzX z&u?p2QoWRZ&H8by{>7rrw|1mWxVZcMDqY@B7k1pbymR-Dt|#;QdWAbDl?L<rJlvmk zI?m<v^iB1;(UUG-4*vLc-|p(VpD%7*I{U8P{zZl5)PMhq!&Tg_l{kEOcWZLUnb}vr zRmrWmyTe)id9h-uNnZB3=KZH;yWV~KvMj3lv+2)cvQN)GFOm-1HhrIcpm*McjVC@& z&}-biYW2%I(?x$?lJz|E_~Xf^dnD$^Oj!MY?|G4JZ~3p5zg+$y#j@@AM$b>3Q`j^w zC<Ux??5{Xp-%?w}7{w|j&MeyD!<@-_$|2wazXCHW^QMlJDhHMKvl}hct2ZiKb3SL% zHeFPs@et3ExETxb<QxP13)@6qwRL{AQ1{Eew!n0bVmjN`Eewu#4IE<^Uz5}_%;T8C zw#g?TJm5q@8S8w>JrOB}7dF3`(HPezC;1{$O(Ww<PENZ^7Bh>N-bIT>C$9)0jj$7k zTC5jZs_)4NJ3jZs1;b{o$O)<QFKm7z9H;X;<&oEd*<$B(R%QPbTi`YAcS4=@ERo<X zU6Uhs{HZy;+;GOR@A*}$yT3m+XqDtow(<>m{Nlawh4Q~!wExsGFrNK)1rqPKCo!qj zn;W6Tdg)Z(?8gQouHS!(#+6BU<(!<9#KCxbqoP5)&n@5byhSNYy~1-+F4o(3p7Rc5 zUv}Zp%6a#$?yYlrTxA&lWp}aBKU0}7?|MJ8-F3D<E<ZF{Q}gN7_T6<;R;KKYp4)op z{?&cfeaF6jfA?eY?cXUeTkpr!$DLaLHt)r&!?*1JeY<@++T6y@e(Ox%Yjw^aFaN%% z?p0wJzi<Azy8SQA+f%G$RZsrdm0NDb|Nf-&PP;w7^tb>2D|4;x#@E|V9`1~5`>&&a z{PFDjzyHlyviPRXmeUq@Uuo4@m1*0T{Jqw{?B&<=X+F1KpU-*n`>XxyV;kO<ZvJ(d zw|=3`?rF<2=bdFbtH^3Pfp5yw06t#@VGqp{PEth^Li`qRX)$GTPYvL_+W1LimUGcL zwxR&(6ARLVPB>T?X-LROitzO5*z)$R33+tlq*R~GKb}6BS8VQl^=$6KB08^FZFOI< z{?>WL8X0}X`-{#iRn5pNr=^_sPV%~<y|2r4uUfsa_dL^`H@GHko{*<&>$!c}<_Yg& zswU+*`@8Sr^|bh7s$ucR^hfcJ>=|<H`@^(8UOy%EZ{6lu0<WiT5-Bxr{4r}?gU5B& z`k8B$-_PQ_xV6<pWY>#ndQlxJC4%cZ?zFzCGk$08X|5=8chYvhrN8XWHO<d7a&<my za|vZOoxh^@Wc{R`Rf>0B3oTl{Z26B+#osY$LE8fkO8uU*VzZiY<#Mfcb86N-Nom_G z@>2cOqf<t`cTf3rE%rJprzQP5bn*`G&?8)-!tYo6u2B%qx}h$tm0kSOvQedzX;SA( zg+10c-RHSob7?f4=_#sqd&wg+pA~^d>mOb@7Ix9x=u>aYDVud`(l1r`8ttC!li_jU zgzdFAldE|mRV%{+Buh80>f04z+W$Rs*OUOgnXSJw&c1!76{?lN*E&0UZR3iPk1JzO zif_)WnVfh2+}oXhDs;oAC+@I|d+5u1{?S|3+h6}ZzG*Ahw>|dZcYV(5J2=59p3z|X z#i@*Hn6+g#c<1szQLD0^iT#%*IdbH99zOKKY+BiyS2w(#ZL~O6$oKR6XZM#2nIz>R z*Q?xHk+aH;i}_;vyoheLD#e}0Dx*xCUla&TQqe3pc&7EwX}47#A#y9L7Are_DO$sS zfBkpSf0x!TU0PIUG5=Kxf4$7_3uRHFPE`+=WnI7d;Kqr%CL48zi_7O)N$)-MtkYli z-p*UQpRH(>NhsEfj?WZd`mewxQ$fx3;c?Z6dS-=lL{nF+l$r2kV=vRETW*d4pJxA$ z4Jft!z3^7q^qZUC`UPu$D&g4j^@{}iE!JCXr({AsA8FqHtvkIkZ+`KMEP?1PV%x&2 zrT5CeD^dLTYRjxC!9V}78*9{vf`e!}&lDz}={z2cQuW4$C?!MeMBn^o&<5{6T=Lew z!kj(pJUBX=W>|c2UOKgG>A?~YWtT>|U+=}$*R;zX@SpSD_sxy-s~1iB%kwX=f6+0? zU2)r_mVaEwdPp>X@0SXOT>WRMssEEQraXVX+wJXa#)JRw$oCyzf4!#s(VMqLdOxM2 z>fg+H^e2Gh;HGt5zYNb>glv*l^t564pTajM?QcWqwZ8D0g?Ajcuc)qUzN)%DciBGe zug%P-Bxg)t_RZp*mr!!|<Sdp~Zuc&DOL!}4p1$II^WW{q@6Q#zJyO0{T$B5;f$14u zcE)I7ceDA1kG3XXVp)=ShUKvIap^}l3VrsJ?lG0|tcx%^Sn$k3Sx-j%$kOEC0wK$M zmwP8NeHOS)>-ri0*LywV%)=+{M(BBMcfWgi#=Kym^0jAw-;BI<@`Ca=q4|%)7AsBv zTgTXbW(K4kVrT@~KVr;cWMFJQy)T<dq5j)bX2FtJ@tOq>PGq^R+*PZy$gRVM*`rB7 zPUs$|z3{#F?n0bh6Io3jWQV$h&wckQ!}^xfS}QBPZCP8b9_{?-lAa%7eRpQrxB2(a zSnjW`fBt*l=ehkVHnyCTRMgwnM#~F+ygBE>2VTa1?|NG=-uSZVMx?@%6c%;$o#i$= z?sM;`Updd1qlstMn|1f@)u_6u?|l8cW?{ZJ$1IhVoWiP?y%uQtEDX{N)0%A3)$ybE z<3_F4{r{Ql>;L~;sJZgimLE4PdTY|Y=u|o+JWz`NSyTVt;V0KrBVD_wi8}n@8IPuD zwYJ5poHSqNa$MUq>gO5NLMh*@3wtUhB_->)rry$5)vYhPsS{u6wnxoxpX17~Wp9Iy zod{p5lKtehh}P1Yo{swwyuN`;mt{}M{PbapL~4`~|J`nd)+g3Se2VxC`=eY~1id>G zlqPjNie9>8p2>vN7Iwov3I7Vg$sH$KS|$hubF@`-e^6W|tfQztP2hCLb{mdKA5`oV z*DUD>ndok#B6qT0?zn9nhe^}^>T}=ssLfH{<GXgrrWKPHIb2-6sKigdjO*aJz5k>; z@9k^Pdn;V9e6F`dcy^GrY08zOr((nc*EnwP2~`igyDZV-jyaQU-20otF8eNA(0%-^ zb5~EO`i*pvDsdgbvlUjki;tXp{h@cV!DRJ0yIJm7J-1r6;$Xl;*2ww<4b5A<?s2R? zr-(E#o_cY}D<f@g_KIg-E2bTkGnjVef}Z7f+vYXv;ufxMmk<5Gy`!<3>D)=%w5py` z=bYVtLqFsv?cr<ZtL43G<F++p=E8OE$6_6s*J=NM&%Lpj{Y$a_n<c@w6dz=K(G3pf zewxtIb&0FiGHk(QJB`^+-Va08)U%#{F1c($$-?Z0AZZ6>XSY96;t#&n$ohNQ`-XG- z>X<vcb+<~CT6(nma8Mz`g&mWH7Bd_Cn%jEX(ED9ao9u+5480(u_MK-Bt-Eq<u66KM z&NqqSPv*_BZT)JnR?J7VI_kyY8}na=Y*$xbef8wYx3A8f`}WN*?99)E$xolU8UOrI zzlY)OF;|`$2WDJtQdjm=`XzB8#zC<?fa8<fWa(FxQfj+aT?sk!%-JD=Wm;XE?WYY4 zVh1l-*?iOyi#u|!{Mr?!*vPz9ll~e>r+z;Cdtzr}qU@|4oSfH{-?vWx)TpPYt2?bx zjwkn)eEL6TeTFqGGJBZUADO%%rF>pA>#iMpwoIyD+gcyLvth~diSD*S2Xdp{<oun? zDqFnZaoQwdE0#MkQ;sfZ4oQ}tadzee?ZfPW;#WCxB_$`!JpD-Tj_RqiEj>ME8B-MN zT%S5EyUCN=yNBhMxxx9uVAeZQ&(oGII=Gf8HauW)a`8fw`1$?y6|#?lH{Ir)dhM#n zm5sdtaoMYu{;Z#Wd99zkcI6MTRr^#QY+IPkb4O#RV7cw9#DvXE*PKtBdt2AJ+H2aO zq=-1V3*t2@FQSflO0?wbxXWK)UmwPEc)Lm8(d#oLIyPj=ztTHYyMy6>)9I_txfzG9 zo0`37I(=)~%&pRj64wqDaa^u-dHy3WAeZs`%RNi0-?~?J2CwJ7P|x{XWSMM_l-Zxf ztP?m&CY?BQUh2hySl>kvwQ&ryUwnHLTVV07uhJ|~WWoB^Q+FQcS@`^X{U&ceTlZ-9 zOF4TME^$8d!uU!5jqc_TDN>7=@)8Wi*3B@lf2?V+wdDHu(hTcIH=MqUPJO%A<VLmJ zi;2pPjYbiFeopdzSRw59;o{ER`Zddzp0^Zy|4`uGVbxWO*8a3~ZC$Nc%TxR7-+F=G zd$+rf{r}SHd#T^%{|^z}ee!>Nx;RT%Y}51JS^rmEfBr1%^Jg^zd+aO@&bpat9&PQP z+a`0Z?o*L7|ApH0%giYg(tlJu4+~A%W4CtA2A^DwrbC++8J$?ZRB!G&uBaP}ubjPC zzajF++t8EIskaj<z3;TX6WT4xchPp`vy{@LcVYkEhbs$py1UKW^ygtg@!Jo(r~QA` zU6=k`WX}Qhwu;6;h0pBYKgS<@=e6jU5A%il^=!W?G|M}~cFg~OSN$9RPLH^6r*gJ6 zlzS)2?R(Mn-BU<$_S}P2TrYPP9x{A%;<5XdYhBCg?@gLhC6nns^ZOG09s3t(u=#S- zG;x{<ZA(3V?Ba{yi92_!exY#T#P8D++q`OBC$8xU-|8|y@Wb^UduJ1u(A;ezvv~f< z&E;>sX;c%mr1g;7Hm;s!pHA(1cJJW(1cscztGAxX9+UVnXWG6Ni-`4ME0W9J^fU?F zC{TOdwDL?y7<);5c=y`9wx_2}kPa8w`r%d16V1u{9KKv`_jvWqV^`~L6PJ0LZFlHD z2-+FA?ATm(F{$Z65j<^em&~ksy$;-NH9K`B=JWZsU#m_fW;|$g58m}gb%u{W$AQbj z8+h(LZ_Kl-lj*y<X}N2`wUTXB8*1_&&s`jUA$en4klRV?#Y|f|h5y%Et^cs$`Fi6s zH@lWuPMF_p^L&nWLE9o}pUdYBA5?klt^DR|^p5dgOQo=YrO|c%kaOo76`oDHQ`ohx zFJ`0Hxx3qY)@`)irFv9@UsBRxl6!n<`5WWtss;1y<ZWBh6P0XoeE;0Lv-fxOS=r+v z6HebcKPUgy^OchX#FU#ma@L0Jw#qZ9m0PoT`-km;G4~lv*RJ_8m0AB!FNYiZhLayJ zU3Xmck&kiJF|}iczn8vOW}o-b%KeM|UCx^F#?1`}jTg!9{We#&H!a{%iMIHyrb(~0 z){5MV)8Ev;-|Ar0<EN!p-<VF6eZTX>8&kf!Ge60{Ht<mbH?Nos!Dr`8KUvJARKIn1 zE7$5xcc*@xp>|nngQv%3=l^?sgS#qDd^j`v=Of-vMe$yVia!jxLNgW$PLh6eH9^9u zckKj~u14;(={bFC7SCe&Iq{YGEk%}i{p)|eem1k0TNhYSZYdtfBqJSPBxmZh=gHH3 zQq|qDn$oP9UJOl_O*U>%YdPDuS}K3ew>*n{DaGg;F`u%+Ryn?we-jYJ;W_Q>W2JiG zV3}%PNhz&pl}w4W31Y5p0iWvYJKwL6{^rZ;DgS=?DT}`Hn@9NP&6ic5x4m!sy!kTn z|6Uwj<zGFmGjH+dw5@Ht$9&Asvz^P^ak%x!)#SBXUeCI(&wrv)4;lcb;AT+0xf$xl z^$ET{!j2Mc<r&%9N?IEWO<$Mk$|wlv{5x_*Be3(B#6_1ati39}yBB6>Y`+<+8LjcL zJ?z8b8%k2)r}`f>N<2*Z^5E*?&Vvo&{#9ldo7HyTUD+EPDEK+;-bwTKHU9e~T_V?t zIIY<9IHLNrW_+#p>-vx1)cjvQX*g5UZ@8`XkMrz}-9~p#tk5&g(m7`K+ONw=eA|>i zPnJ!Rzv(k4sWY-EG{n;Bsdd)(`5$8IKEHc>b%lbP=)Q2l4sRp*kh<%4lco#sl&~*a zSg#crCEdzmc}+Ip|FZqr{ptCOk8fV?+Ou-f1<|k_w-RKpKlv(`@!(rUy-nP^jF#yh z&Qr2^H4^QF0=(|V%$5+TaDAG^-zutFR`C5@h0Q&QjuX9$u3U||e&8sp>Y2HZQ{!Ge zbiTuBq*ksb@Nnl;`OKJ`QAa%9XjO7v*J`WK^peZZbhf+FsZqksyD+gtno(-un^ciS zYo_$iTI^FIW$VbAyu#@Jz8m{9!s`7OUhh8E?&^K-|KX=c+BZr^7syVG*1tSE^6~1} z=1N7L@Lx9%nOlE*85gtucjum}z3-BH^H=}Wf3)Rg+#he9d1Y#jGvXW4`@PId<<(+u z_`7J_2v=J7EdK4U#Jg*wzgQ`m>m5E@-;tYgtmed|{Q++Z(u5<wa#|Ew=H6mep5U8Z zUvYBHvdd9fK}?cCoh9~hde<(zR9W(1+hX<UXEq9dc<}GVlz&G1UDm5g&F&JP8(F&M zz2O-rv+0#f^k<uvxHaqaSS%BcY6^XL>+3;_x}V9N$Miqt2k*Sn!g5=<Go_!qO>wTL zmDbtwJ(ebCZ=4faHgm&_xjj1{oKbmyviQM_xijX}7do=NTXKwhx`eblf7ajRT7g#S zPiq^S<{R$6uyUW!2}S=^#&2YL&ZWpn{g!xb{HuOl;e5mAbIaL}ag_7DJDXy1`23Ak zFWy+(Y3xbfR_>Iz*kHvHcCOzNHS_e|q^|M5eCzB@jhyLM<BqasN}T&<sr5McwZs~~ zoAFck-}+FqWl@vhn%<n9p`zN?UeDk5kL9O)(_wJ-m@YXRG!`dSZ)|LYGNL=_U>>;h zRoNwD?JL|E^g^ZOiqlMslGSe2H+h?0PH^jBvi<V*`H?m4vI_A%pFiL3n?AL2<*%95 z>c*$I((Zj-WopoCuH0x|@K*FQ^Sy6Hab@px+oO#2t*`ysE7wpR`ET2QE8Fzr$vbOz z&f&IyRIghyrEp*NgM*v&Kfkg&YcOS%bmb(2b9?<o=A;!rUma_0_8}!%ei`fK)!Ol~ zn@+i|ntjdQpkda|gv?h@YBs4H7gLM%HrTq0$-Bj)GDt*|`Rc#lZA*73`>OBHK0N6w zUvMi2pXR4|7S4Rk$9E{K@4P<EIB9yYz~lZ&y#+noMIJKIO78oTV<Lnmr{$O?pX$u@ zt8w6Sk+VMBz4^oW=Rv_KzAn;1oBbArODmi{A#ozN!A5cMJ2A^;OcOolJjqFZ!y?Z- z#XNb#*1R)$8Qb>nZ949IVez)*cRq9LtIpGf1oYZPOgz)ACNgQ&8yTP+ezZ1>J7jYD ztbfi1f1;Lbo$K@X&6ocl&DO3hz3}p=_wwCMSNlW*uV`^_B|T9RC{pAUVA>gf?~Zd` z4AVm~CdUn@TwSxbhHdf7jt<|xeP-s`*D|;LuFt((XaD!@o4O3!<;yQ`PA@+{XHJd! zbp4<6o>$I)Utbx|H*tnXfyJDglG)dnKhLXEQa1ivuD#5@!ta#TzP*-9=N|ksDM9X` zK?sv`@yvGNmHuWb|H6w7DYG1mv`w#?TWTNIx!=ZMuU*&l-^Ow(X$2OZnx(ydJ2!Z! zO<J<_Z(3&5txr6Gp}kAC>~NX(E8^m#E2-MycDq$dE2D0mx?)-{>g1Ujn3$TCws4J0 zM4-mu{8Pc(ySltuH_f_oe4h5ildHo1{<_Z9nv|K?TC&n3=+B==sw=yKB0aOV1!zq< z(fT{+dZ$+E%Gq4nEi20<boOpe>(E-YD%Hs|YgxwpfS}HU=i-ifKF?9vWO2L0X_3Z4 zlZ8r-PA520o1_-+pFhJ_r(Qu!$X_V)h|!}=rMVH_dmPp%n+fO(N_YCYh;5vC!z)L< zs3Rsx{J6^*Uj+*nrGE$W9%c6#Ci*os{WkdSloa}Cs^mM#`o}vbKU3Ri{L|Qe&eoc1 zv%jaROg<^RS#<OL)H9kdEEM#fvpp)hIPdZw$G|188bV?srPjWaeevq$;t${J-<+1s z;Jw$pX;I9St7qDIzuufVQ*HB6CbyvHrWH)}KN!x|1Y2!e?xMI#sMYmw>{&(WsYa$u zg(i}&&4uT#+|l3hV!Ql@txnx}yc15b1zclaI5lljMTY7w`LlnT+D=Q~uej2G;zW4( zL#ayDze>Lqj^2B8b;ZYP3|o%<UeL!j`D#{u*knPmACphqG07;FY22Bi`2O?>@9O!U z-pTcDn~S~~@4J@A_MzeWyREzLI~p?HI{dr%|FN~*^F5L$znr4kZDaQ}V@~laweqZr zEY<tZw(LIWTE(MhyOe!%<nr2wm5pXUK82R4O<2<vx|#h(l$k8&vxWCByhvPgt$qDo z`S~1j?B?}1Qwp+HvTcw!+uN#h^xx&+9HR-{LFX5$XG(lne6^$dS<KJJYn|m8I^}A< zhI?nMFxOnz7{Y$gll9=cl5G<;gMTZYs}X;0!1PRPf98dE`x#TNuqW<TU9jkBK;p#c zlRWpBCRlxOnDy$N$MsLlwm0JM$cg-!yNN5#{6@~b4f<7*x%F)FH<uj#BXw}m_0?U| z#Wr-lsXFsc@gD!yLjiq>xnkdo{r<ID{z!ip(&G7iv8WEe>IVOfU)M}od-(j)j)e3@ z&nNI)UBtX%;;y;1za{@I5}kgLNh*q=*w5*6`|<Vhjw}=6W228>GRc{|Ig|V56y4YJ z?)~I>5IpbLF^P_ao;f|dH|izw7kAfeX>1o;bbP<l=6_p$<xcb8eEt2jf6G_A+n#Zq zNi&;e>B)thml9uWYR`Q#d(ZiW$KNnsl5HyR;N7}KGHby#z3tI57g+Rm-+rcaQGZ6^ zzu3nUG#bBuWPK?mb>-O8=<O>*cDHnIRPnCRJafOmai8Ux#4<neloM&kXRrVCPpV$y z^g_oZjSW(|y<xf$9;K6S`u;rlvaF^0Vw&R$#;g^$=YLR1VBA|HyxXmzb|EwK%Fhye zD(2sPnpZ1pdsW=QyP>94d~;-}$qZkv)t#bu`W|r2k``yEbYS+<UJ?B=ZpV`ste^b% zXzWSuV|tl;Y>U*wu4zqtN4_!hO%~qJo8#AB-|v&CW*XSmSLAm8xzYZVXCJn%ow|6o z!R+5R+9PMx<{XTU{O`7(bGiSvt=rdD-xg|Ee4+Bh?OS#tR@{D<azB~)?7opO;Yxn+ zyBqCWueL2V*<!}KYxmu|XP?i>eH+fYPVYa*KJ~d?>t_Wux+LqUU*Bx|XHKd06ZVEP z(|h-L9o~4aK3^%hcCxUtd*dDnzx)HKlXc8Gu2v>o6iJxEI!oi#zKiltdum&<@{4Aw z&usru-TSI2V8T?}T?<|>DK7d{emC+>P0dUVv(l4C?>~~>@`wMwV9uoqo+*s?{T4sm zxim*fPiN;|g}SM28^5jZpDS-&yy&gyfi-Jvr~a67(K<@u;Sbq*OFlo{hqvGKDctaw zzH()wk>k$Dw3}H%A<-sbD->Tl3s~^6>9VrL&J3J*`klZZ=PTUSfBF=D>f8Uf=e*Lv zdQ0B*^rAVP`~lw+^-j5a)v>I*;n!;4YkAJmxboT4M&36(-(Eg_!`*#uy#uGl+y400 zIvs!A2`{fcKYu|WTdI89r22ar^$bh@{609@LC$W8M%A2H#?}(9U+>oW{gIxNJ^j)9 zf{Q0ty3{RM=c=}DN?6GDE2ZDQlpfXi7QTJwpSL=xA(GMy%JSYVd=wln<G9js{<($o zm#sC=PFel^oi5X+g$J*CJ5OJ(d*l7<uU~&v|F#!0DP{Y$aH>sUNx}2StvRcrUe_B| z7Jj&ShcEuivy1m6CMeDibZI^owSMJ+Ki4;~20oi?JtM??;u~AN%{<Lqs}Eh`+UT(+ zC#>vf)goIF?LY4%_hkjYYx50Y*IIt`+Wj|gTGckKR?}F&X3`YScGdO4lN*Hijs|=x z{j&Ce;D+jr70bWx*_0ah%vPpugQd;cjo#}1^XeHkDF?*2J-*o^FL9hRrv2jUv*kW5 zar>*D73)d;kN<t5N7{+k`v150tZJeX2fVJey*hkFp@Mym;(d?v*Z)nt+_rtn1YS3T zD3i3UOXbWjolRy<Un%(FC4bxQw&-&YpB4EhHm`J>t6pcw@3B#_NtEvv(>lM|mv1uF z{isO1?RUPQKBd4wz~=9*A0G<ma4>ET-yF+d`Qy&3u+SyuVwOf4vZoeqJJ4r)^JerW z)!x!7qo=p)_eo0xuh!dn@9`p=Eluw;zR4DuSl7JM+kO6BSG-I&|F<K1Eh^h?ul}4l zK`Nzp_t!_a#Cbzk=`?N(i*F1(eQ1}$RkpK?{s$g@<J)CrWiMQR=kNRr*$J<Ej;r_e z?qz)v&~C%Oz0t|cbEmhm*=tA7G<o6Px}VC*p5Y=~tq#{-*3302sZ!qe?wND42Isj6 z;blCj0k0KySClV%cX;}(G6%byRkx=twBN2hi(OS=;`M1>pG|gJOnGm4=H*LHpDlY0 znNs?rgM6KP16OKqei1U;xBlzzo5u@Nd4vr9+Sc8f%ThiyQSR47Bm1)*%g=;Pf2g&( ze%8fPhid;bFAm+Hygg`z{oeEhb&+P5u<*XfCx4V94EF8TDY(#Ae<ZbMMf3ls+~Hz( zysx>wU%R(eY=L`#)*_9vhSCq-X4~&Bc<3P^c>KJ7jK$mIYoDLcJh|CK<f@KfecIde z_rhj1N1H2OEm<IJ-V`Cnw@>)C;L-2>zuaq+&2}$8|E$QQRQ}~lxfjwUTN8`7MLP4c zMjfuZaIg5$!-b!kZ(gZ7abI_R(4OsbCigc_dz*KM^Vxs?*Ub+)tJn=Uv>V)Kf26T@ z?q|Jqvu4aZ|9_G=UyVKIl8<c{YSN8&95CBnzxZ6Z_td6+s|w34XDd}SEf1-;H;#Rt zy0NO+C7S7L@n$tI|61eDXRLpsb~B#$4VxUd^v2Z9V%u3Ooi*z8?*-48JuBmL>6FgR zO~xNAe+ihIa&K<fzx?7Re&;#MWF>QCYipBF*J<&$q;9Icy1cCA`=fh@ZXP)&=qtR8 zxx%P`#j0L^zV$z?dEAE<B}s|!{@lg<>(r~KZmEC2JvwwZfywZMv-@9zrpL=StA)gd zY6?H|@9+;=p75jKwu8#|6>lu$GA*88nDb)G{};Re1@D=$x0ZWC>ZKDLyl>x~yCCVW zQ*>68Z*NsWiOlJX%(9mY#Sd<j-e35nFZo=(-2Nk}vu56`Nw4R4^FVR8=sUJk97e07 zatyP&dyCdgI*_FoF_kYR@9hN(-gI{R*EX+Tmzg+9_uYv2mt1|blGncD*F1lBem=&V zca}`NsBrz{7t`wJSKqbR6n)&^b$>zM!36j4^uJ+e?H;b%wAb~~-5s@@vRyYcmlw+% ze^9b4eEOAV&w9o7df#Q5Qvaop=j^c=TW9qN2a4=I<k)TZl%Mza-|Kq6XWz5DeY^PK zAMND_``P1axJ?tbW`sQbd3Bf6f#&Vu7xmtSZFyL>$0|K?s;E?S#{DlM@A$v<{z|&Q z8QZ4!*CScDPIbLl=e+w75kV1As&SL+6vRz#%uCa6{casI?^{Iuf5kngm-A}Zv!A*x z^{e5}Yt}Cg^^@<dTr9oZIC}A!n_*L%`PY_(R&f873P{{8?T~)(!s4FwkKbH0zh!x* z@R{+xkf`Wp<v{!G2k%Q9@ICpo(85VKc4M;O{L}B71XxV<7H?h?dpk2{TSf0eD}_+2 zt!-@0?sv3QZ~lLBHMH4BtWnI$_1?jhAAi*ALarW6=C1L)vgSzo?aAp?lhSWadM`cW z>%ZE-^dh5QPtyPMCLU_E1b15)4Z$;*)6carDb_zq$m+N)q%N=EogE(F?KF-5-|trs zpIvBPa`W!Yi$<Pz=S6GksKmQ%l+*2TDr)YI;&qlN5So-?S#a=8T<h$!A(NN9Tk&s! zvDMe=@}2SXUcalV*?E7~8&QkCi3PV!oc3LRyYs$Scd@oRYpN&1q}89J*W7&Y;n>v% z|9#&xEu<9HGcE4Cwk!D+`dWTYV3dbvDC=&WydxsVU4z@&PH}q9TqZijH&}4WpZhxf zU5P38uS_tqw@RC}>-fXqBg+@umb@unzg=%nX&}q8!xJUb{~61lQWoAO_4pd^$yS9w z=bRoX$E@8F-ujt)*OlsBV6QV78G=WSrYm$X>DDi^IC4fvwA3jnW^JpO=5o#BVsE@I z8fE-8k(Ewr&C67D2;9YM-XrBA=_qXcDCWw80zJo*e>}{N3f^yiU$^G(R{QXx|2yA3 zuhUQwQ|?;y<hFOo?Xvvn_$9Z0#u??WP&zpMG52vXPVI>k{5T~wo4i!^D4uiRunkuE z`CzKb`@OU3pWI?`IcK7>Ok>vi{M4J}TXkj!ABmLCd8Q?NK1J%9;myj*ol<J;sh?-` ziY-2ybK$y?m2JLJ)R!8iD+Z}^4(2?Oo^ggr_<Z!|&6{NS+Qaf!UM||UivL=sMEgv0 zL+jpBx7l|qCTKp(s$3S5Z)kLK@>WlgLb2D0_cD@8?l>-9D^{<lr8+sul|$FfXo*AS z3)3w;p1}gGM^-S+U2GOGKk$5z6wCV{#n~*2^-n8Z`Rpk;Pth^8n!_pU$07L)8&9JR zmwLPz(;4NCt*m&ulzXl^Gh@c$+fn<iRuwt@j5}|*smVY_lTnHNkiD9!MXl}M{i4;v zx3Vo(w5a>(Tuh8S>in(#JKKW(s@c(3E^zIeAZ?uTQ{ksXhuDdJm8nbK-@Sh0#dl}! zyFxkd0$LNl1pO}D!(?n2!xS-Z!tpm7StEO-<{h=&taPw7U+bak<&>}If6G59f6p|D z?f1RH!qC|@Ge2<V@a{AH^slvd`|INgENQ#k{x56KV@pq*q-HZSWY$89ocZ<nvl@;U zNah__uYPQC@&3{;hqf0y_GsaK+r*#9oztFEE}0u2`es#IiuIA!gFkj2G5fxSBR)Pr z<999N>Q@bk{&U%0WM$g_VF~~Bvfg^h)VS?#sjH^(u%|!x^YgcXPQ0+Wr|G>56RcM5 zY@dJbzv%K~&kX;&wCq1TU+Zve`s0V^vg?Jzk3aO6TE4HgU87@9!`YQT7Vb2z+V%R( z)1rdaY<aQo_i}t$Jh3Upbj`gGkCYTnPv!OdU*<8%-^g&(l{^qFcGY7Kpa0I?|BC$; zEgIF1PI~g#@9rU`nrA<!+P(TFWA~w-qrUUK_Hy^~HA-D)r&eF-JSccs;%{xff6avV zmMKsB>LpByt#l5amba~0)n>oVZ|&Q8eX)O8-(4!-tR80k)0#`WdT#A<<-5#U5>{6# zEegv1_<fLG@Ozm}_LUETYwtbXa^=ImOV_IQALsAg^4g+iZB$l2muu{d*BSj@9sgQP z^k#eYZaw)lIPs^@RG&H06ZMbjPy5S0d*K3k=$5MKGj*A`r*o`h(wzRQn@PUDT3}&> zm+tF#LAUukPG07{qH?6-!~5$hmk!%`B*dk)opf=n)LObh;IG8dtSuL~PV(|)neZ$; z=;tvhr;$5N{7L?`VBbZH7X9k}#t~S$H{|&1Uz>NWoOkN*vMpaUZ#*lsSJy1aVg7EH z+48pObg(V2*zcfiT$_3rT(;k=+K|?Cb)w~Jw)=P9-7YY3D%(&cvi1Iz#n=4b1V(ju z&a2+7(vsZuc!8#~b85Rv_w$pA*5@Y+Px*8Ix890b)BXlczu3d1&*I5mz6V;!7*96* zrB;u+STMjBv_NF<@9-Bl4BhOwlG%kNI2(Cx_3mo@`r?LHT13ubi}pXiujai-Was?y zW!{qIYu?Q|H;dt>xTUJWfrK?`bM88EEj)fPB5cZnUash=n`SLZkF1^WPeZ-sO_i0| zefjfW9b@jt={?_8!P<LxZeg5lz0=OCvC7vhA6&V4knuT>g7satbB$p)_GVvy9DKyi zQ(4mb(7T}SmX4#p<L6vpI}sVWwD9O(m8T}>;<QvU-BWDNYd^@1Hr(<nK0o+N^RJ0V ze%KkEu8CKB*X9<w<$J+$u|>D<eQAE8p=T~8pa1EcduW$^yGpJxG;UK9bEiwcX5wNp zGM#QPk;!CweIJtq8_%cW&JUNi&+TLKVr0o*Qtk{6ujw|Mnbet#ji)>IGD+4e`?1^3 zJTOb>#KP#zSsP_#qfhd5=ZZX^us{Ayn_St3o_Y5sf0;7%>&k6v4rPkVrFbq#ujW)Y zpX~Iaz+l?b>I-hIy551kmo~4l@&2#p-m=EFuC6|I-s#U@KU})E>JNj|Z|jHKDq8+d zyS_YaCR5+mx3U}u88*GXmCv>1z&qdFeDkA~zBx*ryunzOdsAh}%)S4Q3g$AL>r&c! z`n|N~^1@F+ik{XA!gItGR;^0N_`3hrvKLifl{-7H*Q6HhtDCrcVW8+;+cPU?X3U-K zH$mp;!()#gd)@oF!s|W1TyD-2h;L_XW)hiJ%A`0wc_Nb}TPas}566Y=O%s_M8Ci-B z6?K3WF&crZ=z3$cG-R9KY#?y=uXdhKNaze6AF&{Bm#2+&Eep;Zvs<w=A^I54pWjLB zsV^REes{OJ{JY-jA2X$86@GsU+a{54!L4%6+efNS{fo_1>>Do`y@~8966#9{Rlc)) zhQOx&+fT3k-4o(_xcmCMsOPL2GIBkyUkTLvRi8Wm){1@34oMvYH-=58uNCmswH}_m z$yQGJ+f&i1TsMo7(Ag8p3g7h!&tjM|B{gfheb}V1hi_V3^v`s(1V%Bfem!YH;Qy@M zi{ziI|Ii}(UV8GSx7~MSdsk(=f9a=pFTeOQ@1(^RG14{jPDYA{zWmGB$&w4dDI#&Y z)N3XlMrf7oIE6`qt(2dii=TIU{1m49jLaw390M<lnZE8a6VG%Tbw=rWW7OqF0SEIA zEAZ_7ENWLaOU=XdZHv;{mrAKw+cLMb%W+yrUSjH);QX(y(arWv!^HXbH~;ln{p?1B zaAO_oau&B2y;m94&DmQoJWSBh{I;OCD|*^usio>$vX=gzpv<)Q+Va;g|85j*-<IG% zy*PGH!?AyEmiqN_iTj_P4b%xfvT@^H=5w43f8(tE40SeCUtM>&y``3|_uvi2vguwa zE@$rjf7D^dq?|hQw&?b`Q!ZOnt~BtlR(RMm^}y?0D)5xW{P29f_T-IUz3=e)u6pu5 z&;P9An&Qubn--hgiP&@hr1kuepMM#Te$Op}X1nPUubKE5O(1QYJ=2*a*t<(UcYgVJ zY5VQzOsg4L+Lo?#1tl=i=?mvEs!l&LlS!~XKKqb?0K<pxbzL@jJTK+9YE5bKefy&M zc7$kRzTwVY4ZcoM@_)W%zdzE>8ujDpq|>V6pLVV3m5ccCbZt&T!dkOa&iVOqOxA~8 zXDj&4xKvcZ@qd%B9>>qP9sCy=x$C?B{(ku-EK`3+s6qCE%dLA?-TWAER5SR(rB{dV zGJ4CcJ6-?m9{+`_%eLyAW;%B0y<w&O59{iiTGegWGv8g-{%|Yi#_5UX7MJhL+3m!h zmJm4M`3${fpPp1yy>DUBKf~IjBjtW>Q<h96gWKQk<Hfhi@}92$aQV~MvKTqn%sKwI z)_4?OF;mm^WYu&P<-WvrG+0QzFvwHO(>i3U^IC(`NuC>7jFP*He4{3tsn{s`t~giO zdA;h2eQd$2Gn)-RJ^TB^=Z0O*fiGdV4s1SrZdaywUHzB-sVd+QWHg^1sKIPqZ)s_O zJjoIomK_otF1Anc<X)b%4XVqgs@$ty9X2OWZgHRA+S(s1^Ia2SEJ7=vMk+L_2q=p% zF$wu`C<-Vt?K`@i(dAfE)RnBa$yQq;A9vW#$z1Js)%4oAp3UoRd$RL5wsik~Z1e4I z`uz7b_wS|4GAarQGBqmH7v24JMW^|vIp@aHJ(a5#s7?$nx;&xfSw>Sbi;VQKy-H7( zb$rn2{LtrOGO1Hv>*V^WO3f8gjvV)9%jE3UcUqESWzY3~;u#*PSE}oUrZ_lwE_12> z{-u854e!unIbXA;-b%O_o%8vTkdT;;x!4V#s<r11o%8mXVQ+q8-!Z-J<m>e*PoGGw zeHLRoJ2hZq_M;nL3*WFUp1S?j&6{q_v)5ireVQ4uxXm|s`DWL&ttZc9`5s%u^m+ZG z8zyt_or&sQ7BlU=?<<?qX_0G_x_Pv=c5Z!fCFjxm;LA5c-I`ltm!A)mK9gl;HZApR zmg(xv5nN)&k4JZHDRi4`7I*mfjK`my{GQeSc(Ch6==&Ux?%3^BKTq+l)PAgUTX)T| zjHJ*k?`d}DWy~8-e&jq@&*kKKMCfzp^^Q~*rHL+U6t4+ux=2m*OcCDcVwWf^)U+U8 zL{Ritze~&1AC4O$9`Mf=P2-p5sMc5`c28JW@N37s?%5|LHZ|37EmxW^`cA*iGQK!^ zZBzQ{daKmDkoe19$-3WN?u2JKgdMH9l;tpUDbKY&8^P;S6y1CGJTUllv2N327OU6E zRSp_$kDt7>Op5J3Zna>C&o92ker(YW%7=fZFqBmPyK(F8lm4<vdB#O1k%yFbGJj*R z`8j!kcwEzUN6jZZ%tkl-58BvV-&uM3S?n>DT{|`{yQWvaKI_hlJD%azcTMG5Zy&8c z^K)M}yIo*RUbX(ri-A^qjyEQU#l`-5`*QZZg>}cgo>qBPz0})u`*u~^!BfjO?bx}( zZ1sWrfBh3|+~=04#KcGZ5s4G4Vb<q9ctLZwtL(~Ru}k@rT1!h?&&&>4xcQw(Y-~_) zP^?f~Y}Ca5C#i8)-0HVa_&w*Gnf~X8vW1)ZuWmoByz}28_6_<BmF2AR49uMeI4oHt zH~pR|zqf8eUCE}Wr#}~Ubjlu>ydhy1mwL{th-&@$^D;N+MXDd?tdC|jPCWO)_lIe3 z`hn@2dP`q+i&^T`*j%|$`+J-F?xws0_0#sgy|E)<-{V(n&tJT7w_2mnwEk@VDR0r= z4c=Sb4lWn?DCXiZd57%=*K48Au3o&<q?5<?a{Km-7pYIa1*K@FZ^%>$+p}5Z>a8cs z1k3|W=1#fR$JamU(v!eN|C~K1pPQ(D%Qjtd&8z7TpQ`9I{Cg(+?ps0TrpY}m&;B00 zW2WuV(6x)la7Js!OWqqtvcJu-io80_w?5k=cW3P32hXRJl~-Q3_<xCozua}3`IAY0 ztF%v*oGCl?;NCs=c%}2EWishXI}^XO>`oWG(=MS{p5$=NM|O?%o~g&a?mlv7=f~E? z8{OsFk`8}g_+asZd22Uv<vDCI=xD9BU_8C!zr?f?@}`U51%6NbwA)~&@qv`gU;Tpi z`q3`4>V5j&$nwnV$`@Up{iyuaqSq(9>c2gH<Y>d%w(Q%x6Ru`Q-+R3L$N6ySJHMc+ zoD%MH&zF?tTlcrNPg0aA_dol_qQy_!Pu{6kmdB@2e^0w!^QB^yTb7TM-G9E9X+9SF zI8>Hzfy0&K3tChcJaJw7^rWqy=lTEIi@#redHbH0#^TrYdXpAAd`*5X+{!SAm$lL9 z)$HuO@_ZG#FHP*ECjEL-@uyDYL4d-~Ujp;Z*k-8hJ^J)_Y8~&U%i25NpV<2%qOElL z;yrV=O<iHSS@z+!Lt4$>c(PKL9PgW7XfB)V7IlBYsS*$Ctd_i@a`8{>iI0~a-C)L0 z-c~6%WrC2-liC2K-3|2#%5ih|oLqDLQtbQculAls7J{FuvOfRRKCzrZwrNXu%}%Qn zOAh~oN!@E#?wn(`UAeqnW|hYKcfstxMeHpKUD)<#Tg>l%)UJ5bvTx$o;NKIDr^SRd zcIuYgeXcmENPUvYG?oo*RTaCRUuN5NII_R*gXx|dc0Awr36<Ek-M14fs@K`0w0l<l zv1@M6f0Xt{`aaCOH)ok#<@=S(=IQ@gwn(|8b-SFY#-6WddHt5{J6U~IH~;pN&E^+& z7Z=TK?aGbl`_N-AbK<>;ae7hpD!WbX@~d}-%v8L;XjM?^l5KH!opxtu#a`{=a!)Ol zeO$5MW~o!&?o78YecF3h#1?Wcl1lhizar-UQ>p#^O`Zp)G0o;*vt`<9nF(71ax?M^ zjqe6bJ$?UFXKB)&2`wu>EQ<JbXx_DV!qqhogYHf}9nSXtlwy&cfQ8%ipv6_w*R8p= zYO88&jCE=H;_T_}7h~RM78+i9vaojf`PyX@uJO%}*_gQ2>gC+6Jbp)KKI-CnazpXH zWmtB9ech>m-@JM2LJg+PKXmbn%<8{$0umo{Wo^|<b<NtEKcS8PSbgidR=uvh)Be9d zxBkNY-!BhwhL?Ph;w|{j99X;Hh}R58?L@Zw+CN1~4=PLgI42xe-68VO=*)vmj{J5Z z4c7o3p5Cc;kz7@awR-i|Y*pX0HX`f4d%CXj)ll9=?0XYGy?(Lz7<b9?)4$)wi`HjG zraV2b^J&Rq)!9!b9^8JCdybP)cYT5YcXNO5>p)lb9l388*uN^8RMMhxR^un@Bp)u9 zhN4Rk?j3Vme);NyoDxgbNyl|{|Mbk?eMj%4{(t^UjZD)8XE2L08iO0;)2}RI5)ht{ zkRVtP5VPpu28Wh|j0~bjn9hNk1R_i(hM+cq)pqyAOozFcOd!j&_6so!Om|$zq{U=n z3X-<ozG5BI6c#2E^XZC#jB3+UHZz$pnOK6PtXM1zj18yX*vz!H{?+DtGB4~p{$JlP z^KSbLeV-S0BAYiJVu>(cBYutlw?uW<UvCAWlK-z4SiW;yC)a(~mg#Wqp~c6odt|K( z^8yM=R`gFV-|_dy#$@##qy7Gy%S$%IKYH{`TtxEO^W^tJFY@*uIas%|`ES<(kAJKB z|87{|P#w;nFJABeTfzVLRypbVx2lP93lqP^Ep(jpV8cVcZ`pfm54}-tcKZ9~=YD6~ zKejQ4Z0@{OZG0!U@Y}<Ca^JYGTdv(2FCZe3xBtxXv&sf%4%dCjsQzuh&tLui!-oei zlaIA{?~!S8+Iy_xQ}&@_Kg#vEq?7;MdBLh3zD9O$&c{1HwdXvuZgFqDUCq{dYj<^h z%kCdP+AaT_-SS><4F?x*!N=o2<fWt=cn`59J8xKc!yw1Pj7hq)_mEpM-wlZz88f-r z4ZcUz5+`reyb+QkWhVQZXLe_8-`PWH$;AflIeKRNv-@=qh$VGzP`we9Be_i`x^eBH zu;gq5^&H)8e9`^6N6ZqV4bpSipEd1FdN+f;{#j>bvfT{*XYD_e86yP5dRh|}Mp&pF zRNCO7!_|E(X+wmLocDoqTp0%$4(2!AXI;-y&rzBF$zFN`Z`$^#<cUm96B1L?x1Q3v zw(3CE`hpe%-wF?owRhLlADa8|@}ks5GJ)0`8&+)R+`jWhs`vGyvBkSAOIE)uTTy-e zUEbaOuMF#V9@o8{aXY{I+ndOn*{<um_dfr!FVXxE-;G#R@d@I;c-{$LR^NYK`Qxj7 zcYk@=NqxMyweIpS+4tYm|3CP5TvPoO(_4>lJ_UA_+CMjs^Uw4ulh}QIU;EzGf6q3~ zY~I7Z@ZhF{rp^4k`;1b4PT1_cn>UvAb*}Hp103d(J98&8P4=#jPd3?TWVbr*lv2HL z-}B{~o0DEfwCdRPy5`B+yXKd4M=yW%-v7_4))ppnq1jHnp;4vlq7J`nmwzbG(YNs8 zj;M7LPp)K87dZ1n_|`G)1oPfs2V@K<bu2L5(|EgxYo*;Wj&3=*E4Q!4w&zV>FL{DR z?^ENCloi4otwPkkPJMqmq5eVGB3_efQ^T|GW_NA7a9J!TRwh6!I5apYZ0hu|{k~_- zLgX)9z1Z%zvp?Oov$yMKS1O~~=2|Cni{K?Czb;?ke)~I`Z;H{9#nDw;Pc!cN6LYX! z=hvH#86o|%UT?15oPGGAaBlg7Ek4JtZJB89xLeLl`mI7W`@FhWKbr2OCp`?R|M)la zzCxnh=Ph489bLcjcXHn1eLn3|>zBUR<@V}mS%^@a*URTVGwjVBT-px*<Cp()Vo}_O zbrmn4X?mPkurNS%)%6tFgam!T%D<V1pM1?x-K9Kld*Uqtwy$Ejp=nn)Z{S*|<nj7> zE?;*<^t%}$_3L=&U35NgwmbZ7_j`x4vY#00!<qgbognj1rZer`4Jp~v2eetFl#c%G z)V{fL_RT(ZwnZOp<l=5@dzmd&_WP}*$mZayN&Zhy9eCSQ-_rixYSx!K??P{i96L6h zIhT_)wliqKHBm$L+5Rcvmwrn*+i2a?3V$mV-c`=q)mI@au4!?yR^>_9A_+qV$;_WT zRiCQN*40lwUHWm0iDe|0LzEj6_xwMW($kkM_vX%s_3P`~+Iq}<e%sxsmI5X&f&KIR zL>exg@DLC^|HpD}2YX;@>Vho|hWb~x?UB2x)DZh~=}iyqJjst$S1yZv`8dDuNOifj z`K7M-;|u%m&iiMX)gqmk{b`DX@8aI3$@)7V%yqh)A)$Y+o;8v)NWnYEFr%RBuZhZn z@CCiQ9|%^6<lQLc<C5!foj+ycN2vuG3%VP&&1v;?F+4Hp)Kdk+)|)2m`Csl-RH*cZ zE%MA@y485+L5d0Ax`yC+j$*ey%!^btJ@D(eFWbR&)&+-?70nsTgrBQ1x^4>63pV0w z^cJ#x`BnJa0ndU{Z|k=uTZ)Io@vd3zBsRgJb&AWikg1~Y{}hFNe!k+nM9ads73V)E zUSJC<-B7*mrpN<Po+{NH-@Q1l7j1iVYs0An2R3XtaNyL2TenV~iekIF;ooi3&7EoP z2TIqo6l{#+n0xh6cjDT-dlwHXDjq%9+sZm~r<I$raz^XtFzJ~-OD6@dl&t^MvuC!s z;=$w9YzDJf+!#~d$yPB6$8q>dKVUYDY0j|VJNv7kCA#wg&xr$x1){$*<5ha1UT&Sq z*%!0<m+-I2=Nz7u2~UftSG1~+G<wgmJ3aK=l9^Lfmn=Ot*{!09KWlOQY}x$%m&z_R zuYQxQ@@#pEY|_sA9GhP3t#JG2lKh~repRW-E2|6(A>~gu4K#M`$Pb^}80#}(^THce zQW{GQd2a4eP1v2nzW46xta1tIORFrddYNXPyY?=*=jra({g-)j3vc(X(PPtCtQmdT z$L{EPsrQl(MdIEw@;^vpmdU&z)uL9tLb$zaf^)_W<ypRq|K(rW^hWVx$aC|VrUxbk zTvVxF`JW?A#;11j*(5=k*u7#KUDr5@u&7oXzgf<vU7x;Tz3W^@;Q&6_uT8V84R-$Z zy|N_Z(xj=IL{yEBRLgiQGT-?&hbx_#uj!i`*R{?sQ33yI?gn3xzS$#rXn*kj{sxvU zciCH)zDc?f-!sXjpyFBVVZC3edW-J<yb$7%<zvg+RKM-;)AogrHcYt9mfj(~^ta8e z87n^BxU*E(EZ$Vs>Xx6aTz%G?<(HpZxMXkJo|{_I>ASE^V)oU>$#dEQnd@V}SRbk1 z^_kt6|DRUe<9(@1&6}(49@_qP%6qM4=VG&VSG|4Iw$rDwJ;EmaTU+MjXY=+K?|S#> z`yS1zb4Ril@v*FVP_G-q^?SQRyVya`%NYw#GVc?Z?%G(f>~VTvjYvn24r{B<_r)tV zh)mg-vDdU-zwhObK#}W}>l>cdiHXj5AGyhq;rcAM?$^!UPEJjWYiB;|)2)~jHFuKx z^DN`8t2xF}zrU+&H06B~TXTTp`{&S_1I*jm&E;F99wac|Jo5Kou3&WipDq92*9lF` z%00|`!DqW2Q<vMd7v2-H-5UR}iLH7kX#ad)Z-b`iKINI72Ei_T?|T~GDOntP&@w|Q z?ve3<6A#@iKIUzUV_17z{=T@=<dw^JoZMXZ_s_}K>_#0k9@Y!Ts&Df?sI*VjX`)!Z zC4-3W8pEa;i?5h&`XH@gv`Ftl+mHH(4-W3V<uoDcgvzPK!cHqcEIRS()}c*a#~!6+ ze9d_xyTg;;ewXq8$N=A#IO)vtAC*U%Po7`+gYo8a@$Gzh!iV!N$0_8T?u*FRXUkLY zm|YYZS(_!xTOC(9W&X+&9;qkwBmx>tSSQQuv@8<zjY`bBz3J5UO`1`b3?e(LBZNFU z>r*c(DoHI7Ny*$Y^QF(kbuWLEe+fLi?M2SE6Ty%7b$(*gJ{%+Q-QfI$+%1o1C8sAv z6n)E?8n*h<#ji)(PMwly&fio1%50j>d-Io{IQD(K{pXjl%Gs(9d5e1Hw7eHOzK+Y% z-oiKM&y?FvQyS0QNNL?Evv{+t-41)5xfx}bWYiAD*DuMn<+}A^Te8E&U*|HucUHO? z26ZfGdfjw;)+!Y@iTo#RQMV2~VRs6a@DY~gOj&*4t{U@N@z?S0HdnlCZ!Tro<d#x& zL1@d)gO?P{uFn7a_@c#^Ov%sue;1z1zxy%KB&tzu@y8RaI}dbbFvS$V4ZAusc8$vZ zqrUFX8{RmHSqYu3e<?ZrOqSAht{u<5?CV;@#i1pn{pLYSKEwZ4%2Ot_OzD2s*4Zum z`i}D4)OC71olCyz=|yqA-H>qb`MD~7XO`Il;%{I3{(N37p*(Y{VV(7z6+6#gcZ$C8 zb-S{;)T92KHHlf**0X89xFG8=_tdYY?h>z8lmrCE9Ah!vuI2SoeY$>qe12Ch*V=?~ zQ?s-w7oNBWO<>)k<)-C7SuM!$XQ%7VrIDgMv)T;`H=NSfo8sxi$zQZsy-8g3>Z@H& z%-(TRo~4Fg*>d6g!Q~Hiw!C_w7H6J+`GdchjODia^2>3$#cn11QO%w@^Z%4vXqf0W zMis_+wV5=(v|!@?u!co7AmW2leNo#Qg{e=!c-%es|KQ``%PA+Pn5aiCzuK^-rp<W$ zwbYdKCxLS-zU&cv_iD{$_e%eFFS2=*?aY7AS*;>vy6d&i(!eDj<}ur3^xt%NefC$l z(6lXXoG&zdejHb=-)b^(+rw<RS?~U_X-M7J&VInDLPWH#fb;&TA2#p*FY9$&efq-V zdZWtT)sKJQXbad7eAG$(k(|LVbEBgl_oc3Wsd-L&Z&IY_A6FN<TKRRN`&TpX5Q~}} z_(e(c#_>a`NAkn{<Mu3w-rnZ;@%`F^xesl3eA?o`?%lFMY@Nt_H`UdZ9beX)`_>#_ zR@`&_x`fl2fIS;0gq2TTX|&qDIsATYo9kb#N6Ws|_x|E~$)k2;&28Vf?ayY5-TkpD zdtKtc+<*_K-u<>;wtX@iN5xsO)5fzR{X8ZtpRhNw)!Wi&pY!Yco#{)DN=r>y6{~YI zU-x_W4y!#{2il)cIVh@VT|V`y#1ESbo?jTE);C`hvK3F<lHGdEd*N68?<aicw4b~; zXF(F{J0r#n+lc@5ZjU5AKBQT16G}F-T$_HvaZ~GqE#lsMmb12RUS+sKr$hC*XU(Iz zkwRy7?)r3a{q=P<i<7V1blBYeC`@oI>jNhK?sE#_wHNtgX1EG(Kkoi7;*Q@x7F+X9 zOU*{NnWa1CC6_hZZnUkubZJY$1o=ZE%chHl1czQsb#%NqQBm5DZEpRqXMc{m^V~dc za^lx}t(ji`H|^1!V}5B@$Ctf~I$f>)50os_t$*K``2Nb@-WH`J{4AH_vKy|oe^rkP znfdT!NKR0Ymsazwi-9t6fB$n`*~!wcu=YVxNME|za}|{!#&-&re0E5kX*oU3xWsI! zK=FosS^t;q-8py9;ndHUs=N*u^4E(^EKpo`X-R6<$}g+ai#N~YcE4rvG)p?}%>fnx zmulVXD;`&F^bXy5iABrE?xM~&hm`K(hb%WgJggAQSa@}JMV)7iO=G<Ljb|dhu18NS zKJ(pBH!ga0(6vurnVwI!F`6X(e_8lpH|EOD-I<L^&PzYqyqW3lFFY~Xdg4>RByo)& z^_?rtyG|r>t>1WHYT5js$3mWL{m&QT?J_OlnQY3rphWANEN7#lQy%?OIdNKkTI`AE zH(x)@m&uN2=FU#IRDS6CA^s_HCcz?1As1KbaJ{nVX4(<FW8VAdhbFUr^2KR%By1?{ zsJyQib>nExWW@&#rl(C;accaYE;?_*#EEmfUvIftzpF$pV@B13SADA&mA}jTHR-tW z*?0z5;rx~Bb?c_Qx*sC*Z~J+MPZM7Lu%9B^FY&GJkIdb&TZOOto;tpH&+=1N>WBC~ zz5m-;J8Zr@6#BAXJNVhDyEDa2?`)CUms9?%T%7gQqNn`zoZHwo%WmfQ(xrXq^Q6#M z8dA0I;<dGOf>(0Y-{fkI5_K(|@=yA(sIX*aR_LxC>8l^N#3%JdO?4G-SQ9kO+9jl! zS%2oaM}OwcJ#ni(e&+p|Pe1*?q_g$EU#hW2c1_LpM@@`2ZI5|&^OoiEpO!xq$A41% zc!f+|G|$(LA4Pv|oxOOw++f}9!?9_>E57p|UifwAwQZM0d*mC1*z)V6WjFh6)}C>5 zc5HMGkM@)!Y%06;t=|2z75RL(j^Ru4aT_uJuabt153MWSm=zqH-<!wO&L4REVB;sX zX9Zv1{b8%B-+TUB(zGoHKmEBhJ=eIo&~s|$s)IbObK+-R{E=*Ur_t@xk}}Sy4!6af zC#JR=@MY-4Fibx%v4H8$IUY@c#q~m8K29-I7W~Sr(@^<gvi|!!?aj{@${5d?D79mw znB3;ieUe*#b|udDk6$Ra;yZ`RgU_LVZhPEd{r2OjWdFxyY2AAdSalk2j(sGvqx0Uw zn0@v$c<*wbGYvZXpyFv<TK(6?PhwT?<xci#ZOdYhc<UIMpm;rH&xyr{9;|P@Gi9Hf zeSOj#r|U<GmUntB;7p&UH=p58M*X5UJS(hDm3^>{nrPAY(K!70?**-SJM&*Ai_P1< zn=8)Xmgydr?_2a2UiSXPKiO1W*k1Y@^RF3>>;L)X*~cVIe(1wg)_$X0|Au1icBXmT zKkI#P<yrG$Nh7~Y0h7dzn?2kYs+47xKK~{Cn73?wz24zP)+y`Foo5T4pZL{BJl#{} zvfrLo#_-K4=W^P=?{?U9&FRnjg4vEw1U5?MzTQ`Be)?s1)tUK5$ImWaV>+W#pZ%2) zSDRqUeC4g}S^XETpYwIF(0BfCK6(1{<*gs|yhO7b)t1e0+`DkDd<?I9@P$J2k`~*< zd^LOij4dJ4VzleMrM3%9Ts@=rgq9%Z@&Mz~6~{SSj8{CrS?yi)@=QtYwQA|Z5p~ba z<R09ea7Zp&@m%r#sgw0oFB<KPS;lbcQpUHN8-g>KJ}tPQ<1ZKT&8f`CNhv@}BXXCG z@%M+*C)ga8X$-3jsF?mLrE*&1@s0d}J1;#I+_0B*n>&}qo})7RZ`J#mb-qg2`{J$x z=hekkO8<15TmJladC%svLGGI1+@49sdp@4$IQ?bWi%k<&ySzS{UwufE^P!>Gde4Hr zA0&Ho*m@mm1K%&7?=V|?ZFSaHov0u4=2rw2dA|{tRpCs2B>bmo`=vf@xerhF+@5M3 ze?M#Xj(Pn13*_EPJT$bmxh2`~pgvVTdeaq=Kg|}xFNBsTScV=wGr7{e{nG5<KAX;T z;XK#)J2CsWZTWxsl=Snw0DI+&v0pTs_f_b7oIFsTc&p;-9f@^O9j|U1oNZwVyuwx^ zb>nW_fqKEMEIYPV89WhOe@%GP+%LV4Zky^%DiA)xeQ4R@L>{3-Hi4`sE@w;n=ILtG zFP3-8wv;+0oq6E)ub->_UbVe6@9>U$kF5URlI@G@E<0j;;Z%(7P5#i+`!`3jH_3e4 z^Y-BONT~&v47fs5k~l;|<d*9jKDjzm+w}aEXVMRK9$PBUiBq<y{Mg-HaMM*$y<Pi= zzS#YFLB|%@xz$uI{QdFrm8p-P=N&lzCF9jMAGc-oY(}zk`Hj3Hcbq+RE+}->k&t86 zym8VGZduKH)?9Juz{=w?`7E2Qeoj21ZFqI1b#S&#?kVS@+S-+sv!D5K&Y4=6VY~U) zjz^1DT~rI7dg$_GmI+d47p-;S@wl40(sY*&TgK(r{f2hOy5smWZalqaoN;t^`@~nK zOYa;A+Wo8f!q<fQAC5&@ZyIWk9A_$1duF(=^xaLpn`VByTz@WK*|zFh^#!fuIs4lJ z)n8XQ<xcz|-hCj`Yr>2J8c#e=7Pb2Jwrh7Rp1Ah7lKT5a3$i$)#e<Z8Yu#(xvuyhP zzPaAHU&>}%9({e~d!Wxgr>XP4xLv9f^EAHl>Qa!~V#ZmMf~2SK{T)*O)I{Z5{l}@5 zGE2H1yo+7`*tqOovZ8qID|NRb!A+shrk}bQFj2qgD6dj(;JMa6HnY#Hkye=BmZvmN zu>bgR#arSVomZ-CsQq8JL4UfX)0_+QPS~AW5-xJ*cD3B40^j{I`zodcPuq8#ch!#1 zD~{gz_+U=EBmYUheGlJ0@V@tB{=|a%h0l-aPV`Yd=$^j*nDW$IBY9il=WN@4haY>{ zUG~gmeyN>>=vPM*p~V6rY`M>D6Hf{U{J7k|LEhR=_a2kk(F#Lt=50$`FP~;QCwA(_ z3+4x5oTZE39X-70Z^F)rnjcxD&Hv}d<Z_9;o>aW#<EJGmtj%?QE(`j5Gh`k(WWs%^ zxVU~R&!3N5mFFF-X8GWIX)^y$QNe<}ffq6wZt^E=TX>$~vP|A$i&Hi_O^Y;C9_F&D zi;7%3Jh8-6G~n5$r$q|9%YSV7!uYXS!u)f_qwo#$@BP1IG^;?Ft+6RKZA}Clm)9l9 z-gQz_E)}FK)SnfSptmfD`Hzm!GKq(qJa*sLYnM_;tyhRY{610t<H`$LkIZ4<Kkxb= z(2%*eV1pp9S#p2pLZz!)7=Ax2lIC=j+V8#<v^+5B@zq(Y#jV?&!YkzrmN1q5eY(ey zK~|3W-_`a9wT9j`)i-+&K0WjH)#dQKpzZ2&WPYApGj(&#*TAjEjB4LLT&vJ$nUZrp ze@V2z$1zo{@b-F(&5Y4CA`7*oL%n7gP4x?0x@wX}rkF<Bx2`;MU70>M9gdQFhP!|C znBSg|cIEvtspiv6hyOg9d)zLPhxNj@i;LrRAJ2X5zy2`m{{Kl^tpEJpeE*>GC)4eG zR-X>o=_*{c)I6uAT534qLdL`wSG{HWTF=~ktgoRVRnC1=spi~_kM(}-joWr8uHUM) z>y))CX9(A`prap`UH-Dz_VV(LPnMoHI~%ckj$`&jeZ8qnsS-y8l`c&@K2J!w{9eU^ z;tYeg2fZI#|G633xNGm>`7c--*?NEETnW2!mEpQU%=`Lh3AP+20=E?Ef<0_%m|Tzc zY~y*dCE$ZpApf_>gyofcYA<knuis-X5|Pw6Z`wn%7M7jtwZFpe#yI%g*>s_>>(7C} zwl{qH)lXbIx7)lS$)?*)!1!Q<#j7XxW_{jz#-eG?S?y(A2EJxoUcS*S%N)Ahyz0$E zIeJ~vmiDbW<$P$RNUM)#@`X!%98Zp97DO_7u!p?WOh~A(dcL*cI`_n9SEqY5vfr=Q zcx)B-I51MOt7cck<iH6B4;j4s-L&l0E&Z#1f2PfpKG^&4{NqQhF>K~XYT_yuXw8|I zac_a=QttjmlcpB!oFdt^X`<<x!>K=?U0yZIk+WV(NaI6-`Bt@t<$dCpQvdzbk!ezp zo4?ZY^zzS_i;F7veHPp^F*tC~^11eJOYP#<%#*Bl?(KEkJ?VPllVjI6`H3?B31uu< zet%!U)SqsFMy_3vM+IfqWhhN=Sbb^gOvx+fE-yH>=#kUru5Hh*KDiS7^niB%)${H- z$7M`9CqL3!tL6Rs;MU{&JpDhPNq%^ZPk7#%t7=a#v(8#m6L%ythHcKhi9h4@K8fD% z+}%B2>*nO!KA(@)H*cSOAR<F#%8X|mzJ7D3O=4N4vZcB5z1vhfs|k}BQ=^!S#h&s! z=2bl(oN2V;Ra(HY(}od^>?~!sR<87zIpK8Li4w-hz{vqo`vW)d_&<J~^XvB3J%PH_ za_547e7tmPq5X#+Jh@!?0lsSQ_r)hXUcZ8K`m$)fOkJ~gO#8JhbI#P~Z>SKF(B-#p zxTx13Jef;xe!pMQ)m<6Bxfb0T7U|F5-EG%e{YzRpnwx)yI>V_640Z>Yu4P~0+*7fn zcBhfG;<PSbFOSKFr_;~<Vf8=9I?HF(27~23XD9sJ(=dan|Hi6oET2!WUlFR!zv2AE ziq~EX?(ACj|CR3QDS|e6*Fz+)hSq=aPg~%9Zdyk0XKu~f+`l{5&&anwx_Rl(jYe9Q zmU<CKCv=_jbS&NMwR7^{?vQ(X)lFRYbpKC~5=@)CMa<RJE0wcIvU}OWqAe0~M}jLK z8m%aD{$<y_Tei`<_t&Rv?+*RVOBG#pzPQ*w%wYcL7$WLdv+hK0+CwX*b<Ob)p3gd0 zzvTMNcFhy6@kQb<EYlaqzKkupf8Y4<3au{ArISKVZE<-fyyQ{gG`Z=|wJu*?xk@eI z*L|bM37Q|CeJ*fmS11wP7bdhNLDM(RpPOAZaE+mDbi7Nbt7xmcmk`so?Ul0oE>yh= zQDuH!xcLKjsQVSyJr)9Q9{n@<<m<2d#P6Wd=g;-pW~x~xQGSb8Dy@_ME_MDAW2soE z3iCvt<53g0Y@YZq(t3Y$aHfUdm5ckCAFd2q;I%Nx$iedP&KdK=7@4oPFRzFZS2Pz{ zXY&4*spTQbn-^BB=8)R?uA=Xp%+#Nn3bP!q|A<xpxclF%$XhIHGc<%2?&_1PFp8gY zdBqQ%xbzD5l={4Ys$l!Q3x4vQc~<$Dufn%R`|Y&v*Uy~4y-alH1#MYpnV87^teM94 zi_@0(XU{$AbH7;klR)jC+n?rt+f+K;IPcDqWzRa(n_Dj}J+oqmDdX+T@1bq;7e~H~ z{P2UPRB+4Z4=iQcf7OmVT;J}_ubo;v_rRJ|8-pEJE&rXmz`bCbZ2brQeOqtOsOpm5 zTW-0w=-Y(lhQ5t{k_W$Nq-<tP)Dil7-QC1VSLEN(lj}Ykem>uy&!PN^E4PE4o&U}6 z2alzvL}>Sgx~Q=P8kJ_08ZGu<IN2$pG=cv}=ko2h^<-CdGM%}d$*&@R{Wa_QTMMWE z+}^)7^ZstmX%h;<dAtsWdZ~8QKmW^Ac=2<!?(=dpwbto|>%1ZZbe={}4TuU1-17O% zt!<XV*LECrHRgS&mpc2!#TBRBRDQ^te*M*6{kZdQB<DJvRTcF)ZQo{QY}{>RsWWNP zlcUp?7}_*`db+i$aQ{!AROhIGue%@esK}el`pGJD>UXnEVkOI;FzuA-J;zr~(Q>HY zyIkt#NB>in3-b0jo%z4y0()zn`lLG=8#|s{^|Pz>UtrIvFR2&4(zIyXf%BpsFC9G| znEbFek$ZRgtk~>aMWt%npJo5A^SqoF%sVOjMoMK)5Qpeo*>D}>$#;Km2xXYMA@s!C zmW_{Qd+VK@u`%UjkL2`eclK1iyyScATdB;MYuxn*UPnB99Wg`q+J8xH#UE!j#XNbE z_UK6bn+db^e-)q6-k}%tVXEA@YqR(JJy2QKwenk6kN>2T68AP~F-&2784`OfT>PAI z<=n{)TfUgQyb`(M^{G>DtEIeFt(Mra?|uD0#m_hI?-x3dI#+#n(f1?ihrhk8_}$yG zsp-xcAGfs^S1?|vKXO`g|CODmrx|xnV{H7nnsb-+{X^@XP5%Fx|K_KyFV|lCA3pVL zwa=SBR!2Ae-~46Uv-KR`9=&)szosYghRWyZ|H5v2ez|ieNn*w6E8R2JUCVCXRnB;K zx8&})cgw=F&q$|bn%pYByIVSH>&#g`Yr|$woOy5W@&C+!?%HmFEM=T7{+fx8$<%P7 zpvv^D%S>uqO^oUjm>F!Ia@~c@wVN7)XUw<1y3BM_jL~#DctPXKS4=icrsfct#Mew^ zV$&~7WmKE~myy|F`WjDWp6SsV%m&*lnV97Tn9Shw^Hxk|reHnwW`@QnD@fNya#jdG z-8D}@O=LyrffaKv&g|$~(8STDeM%|p+9r|HY2S5yXK%}#wZ(U`+F7%c^Or=<T9SQh z%DR_M=DRj>Z7M#(`{BgIqmQd>=DGI&n{2%Io^@v61^4q$=TuK#o@sS9<=_9`_ul`# z_g$LLsM6@r!}@}>HPQPm)vW{n969uJ_0rDBLr*Ro<o&YuORd731)MEvmRk~pYVD`b zvz@tPTifg}_a9E4VfpaRzYiyq3(q{*oAJ!P`9&?qA;#_PaW5rJIOd<-rySm9FJbjz z`-k=k8$3DKXSUtxyVHB8yQbA(&dE8M_ObbuUVcHZUQG$v7^0yYRlg<S;UV?#XHUdD zTV6^A9bDAPEp9JXRU5V;sWHJfX_JQgJbfW9p`)5jrra#A#W~ELoVdBz>EIoijS8Bk z%7)s$6DF&5c-~dhIN?9_3HK#cOV*t~KZ|iB8MXXms_b)7NvQV@+8iYOIXIYw_0g1& zPKQ|&wK{I?Qg!>_)fb@^p<eIfC;EIj*R%8D9G`-NStWxq-xc@U>*;#LPf+%(x9R=s z^Y3w_u>7fdo05Bf!WWqzITOFV>gg)p=rG+0VqUD7mO_qRt4soCOx^!rI^(~W?|CgJ zy*Z-OQu`n$CQX@Np<kh2>GQ<n6J1XTJ;{6``6Tj5<rCEu$xSkmjcZ)u+~OST7flGC zXnG<lMRt?i&6XUuZ3>1b%u>{a`c)J<J%lDTa!mA5;XdhBG$F>N$wN?5$$iS4_d9dA zZX8caDb$dhJW=bM^Bm>L+kC7}*Y?b|{JHO>$S%3REzjp{syj8+p!&wimFInIjdEXZ zQNC>Zu)MwbcA0BV$B*^5cjx_o$ak{G)40AZy~ZHeGW+%#?sBt_%0K1rY<;O$vHkhH zrQc=xYP2RDyY+$hNA!2Id)2u*MvrVb4#+ZAO`lV2Qz32sBTIIF5Vy$2DXVX~sIXM7 zxSz94v!FF_`L)Ssu5RoXit{o^o1t_ytyu7YhWE_&jI7P3>{ctv?!<A{$mw2)^4P0- zSL%RP{hNDTQIBjbgj-u}_&>{No!9pbnBH_KNPmN%?cZ(p-r0tTzx&W+HK|fk>W7aO ze_q4%3mjYL&wKy8rnb-f_e18I?P4#y&OT$Z-RK&*!>{9c<1{Vx6@}X-Jx>shiep_< zwr1gtb%HNj*o+M$G*$^d<e5J6n9Z>>kw%+d9h$eW?eE|ECw%_>Yoy<2W^jc}F5P=i zm?3!)*H5Llzn&+3h`sgrEjv>|*4?;IDVI+)GS;lnG!vXrs%9&B@hsbm^12)14_G$Z z7d4+hB=hfSxO-TbfWe}tf41^(_--~Y(SoJ8ZF#_E>te?E1*{^$2U0>N@z`DK=h|A8 zD`NNWJXe78q0=@N()E6g!TVG<KREtJRp0K&2aacQ_cSw{zlT^js`D-XxNgVdO(%TM zRQ^*wZ-2l?X@+%0<bh`;H|~hB|Kxk)^w8*@c;E6*CpgqfZ9)uk_1XO@g`e#^y7Y0P z{QuuC{$5<^G}FUl53_Y(_t{r$5v})@Ej39qc0F@-(bBZ7I|YJwJ6^S0UGL`{=;d%m zRyojksi)V`dH1Bh+Rfove#rg7VU}X+&sy<8vo>T&>z&NmVGwfhE?ec2V)G4Q*W15t z|62C-(cyPz7afU7+f|_}X&5EIagM*>fwFvYGkdf5&uK;7i)EP8wzn}@1uRp$rt5y+ z??%XG+4M;gg24x-7@e>Aub`5k^W;GNnc6&FgBPU^-V@JU%01Jw_51^WeLJr7`B_c= zF-?<CoIhV{_lfb}-FfcwRX+15ab4cgcsF_Tm1)9{CpPSr=lgA0aLL->qt^6uKc?kh zuiE0aIdZY;GyV7!onza*+WKYle!73Q`}AfW^WDQc(r-)&@y)y5%+jD~({*gx-GBG~ za@y8s&$O1XGoC%u`1_An_J^$X|8Jf3_n-WXRHGeVt@&IOr*kh|{KqeKvqt13MKRMX zsaM%HPs<iPIr=ucT(y1brUcWZDZbCwG;cqA`$37)Be!V+VpnAMbH2(to+o7IFn{;a zIk`z884FaltA4!p;oqvB`AhG9__O}O-K!brRx01++P<S+VDTBZ$^WVxivND7G+VT1 z`@)6a!<Bcr{mqMCUwz}I)3=Ye?r-|}ZK8Zx!)Cu6m9_bAbDlL?o>`^-P50+z7arjS z-SzgLbxx?H*!(#2z}(FI-u)TcD#{``oxN-iJQ|9%cFd6OS^D`$Z-MBooXgCTcH1V0 zuVHl6QeR=uwk4GzqqkmFrMb8CUQDE1g7WY0w|=?1txVi=h`Z*V(E<h2J)#FfBl*@m zz4|0G!(IRLxv(iu#H2;tSTirp>=ijSFX9~2iFEb812I!rSKsZc^kQ6U6zt0O=&4fc z6UiFQ_dH(~&DC4py7uhKJ@5ZUu748TI%SH9_Js>SL#KVRdTrq#^mm_kNqr*2x&O7z z^Obip`NuxIbh~Nuk7mza&(A7nVx43alhqckb`DWY7moCu_h_xe?5JIFlb1|)<=VRH zMoCO?#_F)iZ@;a&`*p_t6Kf}UJdrGH-ZU?tJ>iy|dh~goUxMqe@xF?frKdLilhp&E zEytf)?qM%Cogp$cWt-zn{o`D(OiX=!>%ZQ0adFh<+0ADDTd~kk;rRvqeaDybZs_}; z_~)p4yuX&%azW(+*{shIx(v)_50-JvU4Jp8|FCEMo|v~+qBT!tm`Qq6#>_Ee?e{Od z-r+g>UWVx-9rIP1pH!duPBS?p)sQ(yt^IOVu~nxqdw<B5hs<9kqmz$pPCfag_@gxU zr4RLAc)!-0O-`FFdgG&Be01{ORbEo7?`uRE?)W9OM>t8Ky?<lPwivd>OkWv)X<Mdu z#2s9EG_+>-y=XTE<qHy=u@hU4&N;`S!&bzxuW4F1^J?DgbK3)M{@RnIJn@9h_C=Kr zs%7p~m%1Do<Fc62L^-7wzLogH&|}WIF>cmsWuuvr^&fqHoc6iFeP(WVnB+<WSyipD z1h?g<p04<|%cf=ZqC=H3>sPbC%KNm#q<3b!ly`*R@szD>+t**Z{6eAXfy|XR1&r+X zs<v%Xb2*yx?_rd^t+k6|&Q$;C<Lxq4XMZT2KE6Iy>uOi8%WR|Vri|%o#=$dop84zT zwpdR_M&?76=grIYOK*SOB$N1L-IJ7nrq!Do)Tgg0uawT(c*-a~E^wNW>dxgaPTA}I zd$*`R;6TK-^4tii=6uuGFK@EjgQeY0n$K!$`~5*!)IZzPtMi_VRe1lkxqBR~wGy-p zg?8S$Q#rd}=FVNKPTqZU%lDeRT*Ku4MERpX%J<BgIB~A)9{%?HiEZ^Wb|%X&PMaLb zYf$RixqjiMYst!N4~ur+znJjdJ?zcKh}Tw!tX{GE?{DUhe4O(7@ywT}Qi4>MoJxtP z$^NxZf7b&W>u9I+gfD^TOkX@Wq+OtX|5d?{(;EX+g?)7V^O&@hGcQSV@y<BK`iev1 z@aLP2*N?T;@pG_PGM=0L#ZB+enfl}3vl?q`3#u3jriBX&EU&)6H+}J=+&u@+8a1;? zoP6S<rKx#vTFYxM^%YB3_vYSG+xEuu*}aX7Cc)9mYDK3{ZB*KN`3X<p=>rE8uJ&6; zb{>v<-~RDJ-S@jb70)kTRNictFul4s<LIqB?&c4pmM&eobJONc?KaHuPIq&|rt@1* zs=qbGEdIn9;})y%rAMPe{Yt`2>I-?kSMXe_*%}e<k!C;HOgwa%)YT%L)bdLU^{pQ& zKRu%3$UXO9zQ)J&ZkNbKO;VB3?(Pekdv7$e{@WaX`4q$R)A>6NdLBIbCtzL2nG!FF z?We{1r%#QWE*lrOmVL%65BsM^(-V$Ouu+_`VWUZXN#w(4p@tPfZkHRTnMAKW(E0t> z?pd>*PBqF>t}uMn`@}fDuI{0+J?HXEkr}Hmzmz(*+E&;x;iKPwQ<2slZG*=w(yf0a z{)vAv5i@ye8hRt++k<I4*BkP`KDM1p$CU3;N$~%b&J~llF7R*^-6Zqpg@pXo*_&tF z4tvm+^gvH(w{872+XR`nMTLcKcO0M2JDnfD<3aLv{*Mou;&0cl@SOYG`6<g8_wzF8 zzv~{J-}TxoG%>_xUUt@+{E}@^Z<g$3jL_OxygKSys6cNhFRyOnhR5x{-1r{Yg=;DZ zm$vcfE?cFM^KJXJuV&(<NB2&fFhfVhY<-x9QP+Pz`?B-(A%btu)nDV%E)+Pn*tX4h zlkW^Z2~E{R9X2c8ZABrMjGw&!Qpr)Df7Mf3Y@!9@v*0g<c?Cu$pZDh2YncYOS|v@? zXyi;5dvyM;3j4#oUl?x1J}mgpSl(Xr=JTq^n&WR5#rb<}QGHx>b!|sbmE`&SjaRHr zbO*G!_1G@_#{RR~GJf8JL+9#WA2fN<*!Y%Ls3f#7G3i|WvalJF$s$>1QcqNGWLIDM z_VwC!lTe|pcSF-}_#Qsg8T<d;eEovv=@G(<m_PX*2xV-@Uer>3Q>bjG-(z0U>(TPX z>gyYlUQbThCt<y{)voQAuiAuu<B9v#j=Y!othIf~v|}@swq_Lv&TKB4^fq>zL%qAX zsKj^qxVcNG+{rOD4No?Eps`*tLFH~&RE7HSeU9C09m0FVZ_Sls_w?s2x^ei--{j@> zn)X${a`x_J4&i^t^K&MLMgE~9Ea|N~%qxC|?f8Cb*{|5u+m0Vk7tYU4t}U$i(s$;1 z>yx^<8*CZ<r+aS}O-bC8#e6{R#NkKVh2LMP|M`vmLz+UEf5;W1X9ii9X7h?HE1P<y zI(x32`bGZvd;E?}{oQ!=wm{i}+z&Ty|KPY0Hfgo+>{BO9eV*<wzLdZ5`_I=qc-eLw z)Nktkp|^N%&xun@T$C2-a+_~(2nnB|eZpC7dQ98YnI&qv2YsZXPrF>+n$deNXX3*% zJ@bp6*Dz<)GcM5JJ$c9Y+M*uM;JtOPcRs!xry=!QNOxnjPw0;2bFP-Fh+I(5J}0wv zYot<coVTu|;*1mgw)5nFeOmkNSbDje_^OWo$LGkfOuMyh!`;xs;(Gs1KeO0)XTr{p z`wlOaH8}A9^0Dpn|6E*YQ&IIdwSxW0=6jzKlS1X~7d~(dG!ay;zbCex+250UPx%7L zBI|n!{@>nYzd!ta`>}i#<r^h;&uJZ6exq(>V)UA6%eA&egrqe3=C3>?bB)W}vM{)C z_m`(tdvC@BdF}b}Kx^&{F5?ZXaXlNu_U)<Kzqooz!m{4Zz=>h2BfGLIj|ztd`tkAI zW@~p_vGDcW%}t@d_MZJ<lD(|{ebU)2Gu}Oj@09v}zCHh-efz03<p-`^w|Ds3JN;(A zj^Lypp-((B93MWmu@HV#-yVGOsBTT=$vsyplvI<e6HU&Yc`~<I_qy#j(|gwJpCfjk z+9TG`@B2Vu*4K0AUf-*9ciI);Bct8>+3VkRmDi0<)18g>Y_!OoHqFb>y{&59xxD&< zNxHe)uJx@G@X|h>+Fm4GutWCTvrke*{MvHebA3JA3$A_hYcGCi^GR*-UeDsIsmX`m zDY-vX+j6?})nR3O<C|yr6YjJZ?FcBE^*-F>Nr%y9<Ik_UX76U2`*z{Fisbk;4_o-c zdiB!7KGnxGU(VWY!BHV^`$M@nd+ih}TV;30`YltRmA?NobGFQj%)Ct1r{1~_|C+20 z=EP+41#dhlvHoyhUUd3%xmC$E?N5p-9^C&hU7hQXjs)NDhYJt*?BXceWj8le+UNhA z^S?Nzp32c!+M#>&<{}-N*;y|$w!PhEI(eJh?*Qg9ljQeiVSmovD}ML*`$qows@XFg z4YuxQofj!tzrV$Q|Jv>EuRkmnyS6~!;al4!5i6IRniB2tRd4Yof!U@T{w#U%W$L&0 zF-MY1q~h~qHk4{Bp1Y^ld+7Ox8^v?p>aD&km04QGAYb<^+hG1#{({pFmdl52UNP%< zl!I!m_5TY}{?D{u-sToLl33cM|Ji;~Us?L>(_V90udX<2#PjodeL=N$z_rPeSzaj; z*L6x8SJ^2!1qg8H<vcww_j!WN>>qg%$MP@pJ}DKL<goJX#%oU1VXX(H)Yj;|lQ>}a z>%rvJ@!Q;V&l|t)VQq=*yf<ToOw-91y)SzY=7dcbER4ReJt%J5i9)e8GT+j@*8Ja^ zymLwOr`M}{e^31`qg5EV)itqRZs~Fb+2|c#9=e{M_V(wti}#W~3y875(q#S>6x<P? zJTqj9=>w70mv7zLFDI4m=IGzP^Kh)>wyn>7IHN_46{mk~F}@iQw(4(wTod;>*@TUI z9%#(@sWyEdzum$A6`8R?tP>x5l=CL-mOdAo_44A93XX|^vsWLy()Z}@*0c8xPFzyI z@9LQ=OWc#=ZC2-86?UGLcs9&u%I`nTth3*+iym>bmSCFUAF4U|naJ^6i)sJ#YL<w* z^#}+qR&X$8<cpD<bB_1gg`0oMB#yE%-&lWpqM^C}xh#I$ofA8qZk|g^Nu4Kt<J9TK zvu+V<#kzM}^4zn(b&KI=h4^|wiBhZJnV#}e(e)(@B~w#p9o>=Cq`dclpPWsOb;S$b zR|y#ff$uLi2yJRveqvKlMc>(gxT9vKVslxJym%*YC1#q(>eZ}Q9^E(7y1v<G@lB6e zR~E9aaMIXx>s3z9-}+N#-6t4&rfz<6sLSG)yDQHb*QliQz)zdbR_JA{nklhpUOW4R z)xwtyO-w51)n8|Re$OOyYDP-Vv7i}8Urg#$ZD)C`de3Xw{HsN7twOi&&8&Hm&wji* zq)~pKxW&<~!v8)yHrLumKYG9CxxL})2w(3+oBQcC|Ci=Hy8SMBe(aHT>u&C!GSe>o z+a#X(JC>&}`Q6|zt8rDDr|MMFrk9)#f~F-n1@=X(`+l|d$Ia>W_3v(mZwXqMXl8U? zDCpjrWRF7037IhqrsX{S**9~Zw$^NEX<x45xamh8-rl}_zWK!FW2fe2t#ON0zMIyi z*L6$0cIwe9XX+0Wgss@XT4X-^?hbBq&Z%#Fw7jSMjCM*DbY9F8U-JLZ&x#zM>*;mX z?RWkEO`TUfS>x-AHC9HZonD^xew&v5>3UaJ@<uO2n~7DbhjYKsSJgR3mHy~itZe<! zGw+LW;-Ndmd#~EpZTh7#-R_&d`h)ie8LzzBa3gnyd$jKPYn@xwl30y%G?<ndg{Jr| zw6K=z*Oq=|bMt5BWy?!f6V`u9WH(~w<TjeI^Ov-m$%Cw)!6#aRDu2$3N#&ZkU8_F7 zQs>(f!;jMKyKmht7mj|-_I2NUUSZ{Pvr`YM=7<D0^A|UleDJh0sJ!A*r>A=I+?LKl z+iu^j+&j*s^j2=ylMi0`)J^u_8`;VEi={7oJ1kaywIy<4$CebW&>4xRW%z3~UrX>s zoK^|@bmWFaRK`|`tb+A-gPtos4F9tGZ+>ZYeO1mxJ??6~Z;!vsW)`2f#)@ls-JzwX zB^LX4n<z~4S`suh`1u9F-Jf%mB&Tie)=XcP6Dt40=Gw=?)733|j|J9xH=c-6>c7{j zYolz(7cbHH|EiCR#Jc#;os*}!ub<bVZU2z%`u}60lU+A=Pwu$E6nN?NkFui&?s1*Y zJ1?+Pd|yMo)t`6&K7E|hS-Lall$mks3ccex!AY;yq{l_Go(tc1vBvI$;KMIB^K<9k zo>}b}r>9oJIs0?xoW8_WV((w9v$^57EcE+xx#RwCWGlAM&9T4EE-sVyc-o3@*Z;`P z`&`Ty-^hN0FSLj`nTz>j$h&V-Tw><Ew%u~u_{A%w-4AMCEL>GTO?mN-wVWE+CsKGl zSnW;cG|%4iXvP`YR;foW2l=M6)K_R1Z~x+cK3{$PR+(3?kKeAj^yJSa+0@J>C5pS; z6szr|mVa^#HN5$5RmQ4gvr_q{x+tCYxv4FC^ZL!(ao#!W?yt`~w%?LtW7RgLYi(}X zr=1Gt|D3+KLAN`yewldipY`>bOj|A1>}U9|p><8wJ^#=CgLNt!c5j-LFwZwuZolmP zm2b8(cVEp^WG>71=DoJygNWefH%m2t>272`q<p{b+u8V8CpvT&bpKO4uv28tnWg{v zVimV84WE7X=bE!KC#l68SaV=zd*znt|I}Zt+_K}%npn1@M{eBR!?by4fPY?U*y6PM z$)2_sJ@-ueq-FgvGWvh$4vu!Fdl6S}@UL)Oe|>6FYR*I9FU@Nb*-QC8$((W4&8bh| z4l=N-udAQ)Q+~%4GrPurkB%%{ZGPtL`rs3;KhiY1{2D4t-gHUmu7Ah<W%aL9mkpTm zWtXb>rqoD!u-W^%>KR;aXyJ^Wcj(T1Z;`X^*X!?Oa4)Y|Z*b7(S)z&m@+w_f_DY9P z_dhk$_GYix@cXi&1-so9uQ?6*3k$CMu2nG+lTep@WOdTO{(`^Xozj&p8q-VfU;fG4 zwwKfXUfIgEs|$8>mX^Fay?T4w%DP=|A0^MdP+~E)gX6B|{^nzcpWkU$IKjQJ`rbxk z?mu6=_|I&=X8NP@$d;3amJfp+f0X>+viR~}v#@s?&hNWb<X%yculxI6=Gsj+YD=7d z<ZgL=?t$>1|BM;eO?<%<64SY-F!M~Foh?26)hi|;QG?KZKdSwY9%0W9-)t~}Wd=i& zH@g8u;f3kUJlmr+n44LqtIc3mpMJ`a*^tQ`Je^^)y+oH;pM}wUI(Rzcq#?5rlR0!c z!`z5@zZj!AWFMleC$kNch2i9hOsdlxJehSQEsPWl6!Md@xNL0neNyw%OEL@<jLa;I zjHVmTV3w&jGB!b(*LYjQSrOv8t>9|xuFdLu)nBTVEZ;oIkLjkOz^pZs=9=Dh@R+62 z;&8+1#>BG>iaDD!xH$AQ3J=d#=zgJLWwql|$d#Fe$4X1CNZ#9VW(CV7^ZzS%ZJ(^h zHh*8``@f&>J=e9~o_BR+aQf=t<zkK!ich-h%@o9XSIn3*XOm*ycRr0uuDY$Ir=xva ztDVynTMj?iU3~7*F;;h@lKey8KXb6YkeVHScB9*tJQs}*{TxgGCFeD7j<YX%=-Bcp zj{Qf^&VU1J3g$X%+~?l6_?cct?91G%r3bf*-nwF@zpD6E+?JZA3r}R9R5unseRQDq zmO@KfJX?LmWvAy&ZK;OkUll^0w+nnf`Dj|(QQ7sfeGV%=YOkngFPzhm?`m`9Z}V+# z)#|0@pAEbYTAq0PQ@}8ORpEJ4wwaqwl;4~3C#FR1=l8Fgdt>HuXzrD$)^&2X|DpSU z>-pRz<xStyZTg*WwQZZYEyluW(cJip-&v>M`reu$zvA`pruzTN;(n(*bf2(aRX(!c z`a;x0<?HedTV!;Pd&IQ=JtFqqyu3B?T=5wj#z<eLSy}o8GkjFj0}mV#ax|>m73*Ql zRoHjSa#`QXvc}FbyN9iN0%GT;Zo8NxHo@7Ua@wD~mcY2&yhRObn^u<jEjkdPo7Qa^ zn6P%)ugPn|+KWE3_|B_exy@{Q_r+&V%Um~CGEFv5UF!K^vxD0CNd1DT+Pfv&7)_dX zDxUH2+Ra>IVSa`s(mQWETlRu;N(;QIn-@p-OWsmU7rnvaI6YncFXyj4Hj)Q2R+)1? z*JjmAt16fIc3yjhwtxt0+2#Xo)@o-rFmKp+I8R7Rd*KPT3r=DuQ!Qnd)$4IeX>>I! z{XDJGqwrOk<H=92-JDA<J~ZL9oBAzE!*HUN{G`(gJA0y%*B*Xo(6ohR{~jww-%Z>r zS{P<Oyd9zBG9kvL^K*{CDrJH6N|W0USCm_^%z037LdL@9>w$jN>k~CTgb4>6aJ6n! zPmNm|8xU2*s_(6r!7%HJ8W)#V-h}#=mHWIct*^Uiaqf2OtoaoFAe;LYOWh7ht<OHP z%lKZb&SsJ46`GZ?eyxd>y5$?O_M3@9Ig{T8q^lH7^z;;&5_Zs9f1$MDq*;3(T%MH8 zSiJFx6>Hiz8OH03icLioiyq{f3T81k=<=O46Xa=Hd(F`y>$B!oyK8yx8K#6!u)cGr zKHp;Bwb#5S{SP$>H?-I!?7bFpA+b<sX;7lFa$rY-5!1vxEyt~5>HDs<{^y;=9e9CD zl0D*cj!42%p1EJXJLfQdN!l_)_VB?D=C!dr!3tNbKMS`iXgAFAaY~3YbYzgcFhRg& zpW4B2fveNG1Xu$X&TwEWy|8(~snw>XS7xz@cGT+z21I)=yRm!6uNwC$5AG*K&eX_Q zqbmGXb@EcD#geB?x5Q+>b$YdD<u|>pR{jUh#W+rNXp@-{mKUz@Q<$ZmWet1mhKp0b z=_%PgFyGE>!gH66*F1W`OzZq9uRMh%PA)mZI7fu>uWLZn-c5N6oC<bJai7rkcd)!G zk-SQGu4t)Z{j!9v*nsFFUsflE8T0qE`tbP#a;t82I6U(~LQjZCb5U_|r^*%wjw_{^ zdxcuwavt-TFk5cMRaF%(wrp{=_Xz?vmF*F`BR=tMEh~JIyQS>o6WO%4K@-Y%Z1wiM zCwNUy|C3zW+fQomSymri%i$Qvt+ai{B$gQ8Hs3`FUsqiD9$v3EQA^lXEBTjp^b)Vh zqMVJK=1DU?RCzs`YVhjhe90fijIk3B$X7-;*njF{`gg)w>WA`si3k0Ak{j(m^)dfD zVJ-JV`TfHK@|Eh5zR4?|szoon{UA!X!aioUdnxx~!%m6!9IGeHQBXO2K!!7U(TNh~ ztx<C##U4GZ7dhmy!@ux#{Vr{XKnEXx3Clg*$9FMVSGXTaUDaNZ$1*w1bZPLZ%Z#&G zf<GL#OZ>y<$*t-B>-fu-ne&rRzVbS3bts$d1ha(1tU3wPb8B1_FV9Mmn5>cV*L^|4 z!%_x2u8@{57ni973x4EPxWy?e>pD%TK&@;B<H5g&u1sm&=*KN2$Lr^#FHz6X!@OV0 z_u#HS0qY*jo_^uN#1zAs$4VH^y?K4m$5Y78k#VtOn;GZUBRg-X-SRI|yO&~f^5}<! zeKC)UY7bOLXK;Hbu3d0K+9of%^Y-Lr>U!(9$@K`Og|B$_X^z{8>q67bck~K-G<O~d z;;`E0z~7qk>eI=^dl~jAT5a?=7s}WyQ9tEi^TChy2e>3S1uwR6i2XaISGqvopv5pR za>jxw{S#9YC7F|?ZpW+sxbVx#Tkz$S48!H|EiICsmzZWH`5W~%&YT;dFFuPSc9Ry1 zt4WRT2c9GqRld}>o3`m3d2+lmVAAujaNW)lw#{$CHuC;)7n+!~FyX}JaH+&1)80ar z(%$+5Q4-r9uU|bkWzC*-X5}Zg*<VvSuhrxCV<X?^wN7PD>=)c}cxLQU)X*^Tlwj25 z(l~v@E?MQIwPMiesS)aIS&a`Tvncx?iqClasnPTJ-6!d@N-ow<6&0S>AupZG82&U- zKds#-UC`peMb5mHcUa<Ya;A0bh|io|C+Nc<_+m+7J%1u+Pl4~G35<*P{9t>k+Q64> z>ZJC>d+i~Oim8H{VhuZdTMd|ZFAdF8Wz(JFxb4ub-T=iEEyZTfv_)H`FHiEEuuyd} zr;lLDG69K6GrbZ#(xe&{XKKCn+$7gHN499jGns3XBeZ7oS+2}sYdoxCKKa1K7}LhZ zJ0n^8o@IH=XRV*GQnhwc&*U$jMw>n7s|33z<Td%&HY(0!V{$es=HNML613}+qWSbo zu0_66^d`-Af2p+d=M=q3*~>~M-eK|*KdHN<Wa1sA2_I+FvFa_0Z{pqLz2r^BiERQ4 zFRzdJ5ye%!mglloD(4v^uIAJkPcKyD*k2R<(!DK0Gu5*@G-z5w{dzVVqXSZ!-VE2g zBAE(|4?O$wINE)`#*ZpZ?*rx@kxcspqfRl*UZTUe!}XL<gIR;@_5OV0zl$D3FVSJV zua(MKVZCJv<2KJorVEOxoCnIXx9js3vbJuVoqU5S!nRSm<cS(b950h}=*~;Fk?NB) zr#VlpEic&mCqJQdy-T46Z++<PWycfyjxY6C`9RdGj@iL5t|OCW{i=W}%~=UoPgj19 z5&q<6w`RNlWc@V5wABxeK9XXQ7nPZAWn`#$DTU`^b~Dr88Vl9sA*-AIh$wPOZ9XNl z)@b#Hu*A+DPyh2LJp8*ix@b-LVyvsIZ0frHdZwtCS#L_I$eKyqyS|B5ulZh|dM7g| zyUkQweL9afAMcl|?R|5_tj|im&WMl{7Zh}_`;%XFZ_erSyQ=gLzjSu~I=8E->kU_Y zd~0Cx7M9+8smoWSH0s<P+ErBq{z;1PJKf-Vou&H8@!~cQ`7?$Gtl8C0FWlLYxam}b ztqs@o)ekry?d|2faVDxjYuka@Yl~|))PG2<`Bz)>Z_8_reIE?h3BG?gH@yFm{!D(( zx}K^T7Vj#bX->#*Im^K+5jydc6kE{_rcF9Yp=&NpSm0^?y6Q&wj2(Y}FWmRuC}^X9 z(ewa@uC1<u5iwE?g@&gMGME;)?&x~3N-;KM1y7HW#lhK~M<pd^J}W8q@zFWfE;0G_ z;jI?+Hg>AFOq(igtyJUw2$!EMy;52tCzmUmcq3mT@#tbr#`8@)MviPzB79~OayG9r zINl@@apa@Ub&eo~Sw|yNJDz(^&k)fvcb`4^Od!|$4J>PT6Lc0_pTfcRWodw$fzFF7 zi@bbKURZMU#7-W)%Z0aRN)?LFv-x|Z@1*dwr_<i8{8@i{-t745`mee(g|~<N`|AJG zI_twWRrY1aKlv3OoyK;2)+2}iO?+&+tA&fjcl>&$x3TNg3pK6FUu)wFx_^i|<j%@f zS;3xpMdozEvMC)$PBxYloodLq))`SI6Wuq_QC#G~Qiq2YbG~0we;~5gQPTO0-@?nU zzB<G%b7X82JGx}~%KF7K!ne<x_e5s@@}!eLQ@iKIZTsSI>`S5k``04-EsOZSJq~~J zT<@gMy#IffUSFr9<C7!#dI$gWns1hJ)%+WmK2|v1so-ue($seIkj;~0oBkGc8@m_Y zTc}{l_Ddz{^6RUowy3n7(rkaIrf2uN{pX|47HL<P`|DIJDtWtaQFXuQ`}%m(M$6CE zA5Y(Q`*^O$_K|(v?;r1HEnYX*H}0q2#N(zfu5<kTC3IJi(~!el%iw&mX~*MDD|E6N z+5&Sd@1Fjwx@}F6P;}VL(zKV$kMJi2rp%ajkN+lvZn>w-#%PnA=W}<jkWH5TlGtpw zCvcDMvAgX3mVHUfYI~A6s`8)sZqVka?-$wJ`k-zaXL0Q(j@b*Cj|f`FwBM<?$a5jp z>V*;0)0;VU`*_Yv7@TfRbcphb;XUom_JT#KXobRDu7D2~ELo;)Z7i?1HvYTkCDN!o zWkHmk(8^0!uJkr^t!!()vQl%VR`Ht1r2z)s`$g}swk#{Wc<o)MZ}z+O_B(&vd2Ail z9bf<Y!|SWld3Nxbmn6^6tB(BGwDj}7>gXEpKYHTwyRUAw*xGQ(>&t83r##6*ZtNA- zS5728QW3Fn-g`vhXH!h$|BxTES0$zIT4(c1<MCIG&6l@MDc^O@ur<6tXpeZJK%LLW zrku{7pG;k<C%sP0`sG?Z_nFGxrHAjAd`teQ<o9xKPkr!_?mfl7w+7$dUaWds_2;{n zznlJY6s+#dtzfp&|Db9R)Ztk$Bdd=`%Egtd{;J2?&aP*BogJ!E65NlaT~eIn_v@!d z=DnBSypNxj+1`7%He$|c>+0uz)fva9%%0xYWm(PNUB<Y|VZud^7yZkX85FzbuT0%I zn^W$imgsZYISwiHOw$A_nli6`I+wkeKd|b!)9<BM#8qz!nb>)W3H!4&r5WBjaJYv} z#CQguYQuG<wO;F|_xL6!PM+a&?a-^Q2K5mpE2VhFW9w`h*{{~rEox7c(EGLTQ@&lr zY>SL%_p{>n=&v)MTdVqQ;q>J@CpAv(e3L9^6}C`g_RaPPOFh=Bhw2sB#2>#4YYnNI zI*;RI&%xJ%qK{S7=4wRhOKqHg-nRbef4{gplLe30+usl6`*ZUU|KCL2%dVk(`xZ&P zsWZA!t6;RNwza*}`&CC*-^LxatY?~!*b1Hw({6Uq@9B!zHf#2sPl4&r-E}YBzs&A8 z$D-iJL1Fe8$L|T8pWkHg_^o+C{kxfYA7^gg$mZVpzUx2VOXZwpCN*q({Faw3cNd%O zIq$1fBU4sMNNK|52d_fKtUfnZvzxOrTeSvP?fCZc_C70}IS01hfB2y|_*-baMSS(| zkZ*Tv&);-CW3B%$@!l?<>yI<Hd(@m4kbm%wao<-BA>Qpro5CFTd$G>Eny1k8a1%%U zlq!kK57hHDI=;GpD_J(DbAEZn(TU~Lb^iXScz#^BU*4wh(SwWZ{xT_Yznd$zY32NH zoc-*rZY58@q(HY=^bz}x>A#OMne1aKiexVO$gU-vQ)s~DX>+8x^urFpue)t-@|+D! zo9d-~wuMXe2rIMDB$gvf?Y48@|G4W$-8+_fckA1yK7VKP>rwab{*Cf7Rce<?#e*Nd zdNg-`-LkczE~}RqMzd}+6iP{PE!_4ZQ83P{kB=#!TexM)W6Pw)lNY55D;h`i*hF}S zhzfIy&3snYdPIEE$#Vh+3zVnVmwa!`UoF*rZtd(%<yBF)KYiooj*8or`h96;ahLoi z{him#j_ZD|Kd*Dle7(h8i(;?rIM-*BR^6G!Ic-N<Ew}Xhd4?NHPW~|b+MB%Wo`~_9 zs88`z71m2hInT@$Oi??Q_q&i^LN%!A{-ixz9O`%1q{!8U%sIlkYG?TRrG@M7mCb&$ zdPib|`{n-jbJ}wEJey6#a;LnRt8v^g<w~Y1|54uPn!?}f!e`aX-`t-1+D_u))!X-@ z_C2~(_HEz2RlE7*_jT6_{F30@vaa1u#3Maen0MD&nHR~7`6j$?gJ#a$@zv1qYoX!S zlj1uLhxa>i^8`yj>bv|?wr28raql@oD_R|SylaIMCBOexvwyNYY^CabmN?FT%>6EN zE`2n&w=DY7{oL=(?*DIhzpGb2*TKE#n`uQyq)f5zlXp{d6xe@dElj?g!u|d0BT2rP zK+R<=r_Y6~4PzI)n;m2*z#DS7zEr$G$gj>Trqw@QKwjj1y%4v-)tZwlVxnUd&p2I= zdsfR?Z}i|k$B(@MJ9I-B=kQoqd1hysPG!F+esJC?j;0wka{33n<<d>o)u-2o<Sbo1 z=cU@?ROuJKN0%;26z~<l`N`SfFk3Tk#1x(*{Ss_Gnm$=7Sx+s`nD0{F{4te_L;lVw z)7eRjd_F$=k>MS(M`%XZwV=(tp(nJPuY^=C74Y_rYFEq(4qTizUnZ~j{QP8zuOH?p zFF(4TFE?)9w&Y1$zdhXayk2?Q)b~F79@igvXMfx6xBhoMjX43A_P*aI{B7E-2_L=& z3a0b#w$kD%d~m9b`_hhj&L16*@3VfF>$^6EW0%)%-&7vfAj|rQM+Qq*DX@u3v!9YE zpXtnGrZ98<$5fk0KFdy<;}46JUH<(wO);CkT5xUY4JMOU345(#gxB?Th6v33zP`EP zXT(z1`l%}!Kl3TwIh@lzy=PbPuXDmvO`qR7f9C7$>p!<|iw%Dh-FE!`nRohg@BI7w z*S)%ItL}sN3$eBzUa8jXIQi^X-W?Xt=jjdh`4@sYPHkDbvO(GOhTiGMz>R<JrPfGt zI^5Zkxa9JM3zjVH6E0ZZlGQ$bVzsH}DW>y>?!<4*{j#L#dHt&QRqMBY{j01mJ7Y_3 z_HKnWe!cNC=I;M``*(lL-OW`W*IbX=|3%yL+FOC?HEO4CWd;jo^(>U(Uc66)S@P&6 zm(B$#yH;>KeaI^GbxosDkZp@gvQCy(VDl-VYTLUGr2?FPLk$hz>^N8Jc(Xh#_w_up z-<`hwXW2V<$w;@UuX%RA{%Y*mdv;6rJpTQ=@5`IG*VP|+H||Tc5l+xvWOIl0)0IY> z=7XPdw`~-dzR62LV3BqlqagQrGp&P%*gHxti%T^HR79NEa3S%+6#-${m#!XPB06`h z44J&tfNksHNqo~a{nyRgv2sJwq06Q0^}AC}?ti=EgJ$>9m#6!F7+id#SM%~r{YSx* z-EPmB)|SWLRE_(0%EGDje&vHB&HTZ4?O7k!a-F!{@G8eH<t$5~_L0UfM=qs>B(Oc< zycnuHH+qV~(~B;P7F!6Ea{N@87%-V#Vr}t_l9Z22xwv>feE<BF(b_PfdHQo9@8!nY zo*X%z{;E0~X9imr83j%6tK>Idan#*<eQbTU#lij3iF+c~*T0#&?VkFLMcd5N-!~aH z<q5vM6OyNX%Bk|jhO^=;g4BK+-k3chhh@^{6EpV+RpvU(X$mj+!}j6ajE~2B?QWd* z<}98#iO<xPH%P;6VypI7%jC!h>W|%g7e=!l*O0Oe<S{9^VY1l$W|7;|-gDjln==*} zFIKAETd#azi$n4!KUbaDz-3;|(-&9yObwfHq%zQbn&xUV<>uv&+pZNp+wzCG&p6*^ zW?TxNoLSnV%b%^%yKUo3?aY7n3BH~-f5-0HbHTUGwv?T%u6p~7J*;E%we?Y(3ojPs zJr|sNeoAnA{I`#RscuJ>Ov#&5@uIP5?&srS$HIKIHDe>|@5NZXZvFZF{H5cz7cZLZ zPY!-<euOWsY3niZKeq)e4@<eZ<}ggpYW$e=-NpLe-iHgfW-Phjq*@tsLFwy(2Q3L+ z5tE8n{d%y@@An$RvzHH9{oEd#uI_8O?fOw8Thma<sfS}{{5O?Vj&HuJDQaiX|1w~5 zO76tJW@*ZwLa$ULwkp-{?$KFt=XA*8vo5`UjBe%30`0m-&hsnV&z<k5J$u0<_kB06 zM{lzCR949G{cqK|G5zV&)TPg#+jl;${@=uXL|nw~r*beiSCIR&?pgPC&NkmX>#W0P z<3)30eKYwSC;K%`Q1fV!{`Flv=hCcMKNjS$t+*Pv{G?Ep?Wu!F8l8%DiuDKCIxUX! zcU;!8NX_AMz7~F_I`ZewNXeZ$r}uT`?-eckv3hON$5N4Z0{^yIX9d5wbG+Oz+}ykF zi>{RV9`4WE%`a-OaB-NN5)$`1)RI%~aH#OXuf1DKp1M9O$!B}Sx@X(uT#;mntJUjP z|M2~HceUXk?nSXZg@3yw+wU*0OIH0+|5E>__yPa$TQv^q8|qZ#{DeC8)k|95y1ZX9 zH%f!~QN*%~i*F=;o_x)3Rz|nXp~@XLS`Aj|kwu|SNr!%&l2tzv|4~0iI@~U9b<|>G z`CG@9=Ba%#Vc4(wpjdaswP(3zul{z*Yfnw%w%y3TL8n#R`*}iG)MV-0g(q@t1707k z2&=csVe4sYZEtGZ^6CIXd_HTxLd*2tj03Nx&YKz1EE3-A96jGC`^>`!fhRW$z2lNI zElNAI&}@FoPtoLOttuwPE3cKVuG*ipZ|&yv=U?MW_V4^~HCerX))Z$|wO;oJ?(L`i zvLgkS&z9tkWfgpzI{o5}A`wFqW~KWceR9XXU$@Aq{}-^>d6!0SYulWac}l8$Pa1z; z%B#Qqb7p&48Qb*GCpt5vj<vp@8{yji_Smy+b9y>I>ILZCV*eavap4L7xA_^;=Yn?% za?9VpZ@j|TpuvTmQL$0+!S}x#_ov*-(#%@u&40L|y*qJP{fCoxrhl*f@O<a`H~IJX zt=(H2Z9QFUU-8%adD_++zn<D_dwcudnwP!P<LW-2o&F?(=a2ou#v|;XbF}vA2_!Mg z_gF5wa(?<jVHHKz!#3PONfoPt`vneoOuuq7HORJ~J@oLArGd#JQa(v744WF49MW1E z{XFQ-(x4zgsU<7A3j~kc+55O+<KvIH{br@__#|q}!$diEd*x+54ys?eBYW$M#gF4} zm|xsCwIw#WJFbPH=Y;T|lj#S#r7AMFuu3@Zjp&;^ZSR?{JrC;KGOif(E$m77!|ZnF z>Vb~1=D-bc!s~dye|~7W<XF~BLFcqpT4AOF{t`Y~<wp*?Tzzwr<HlXfUwxUo<+SEj zeiGdH{C((ll_TpP2XTL%7I*fVVf{g2?*{dbs%>3<h3kU(stk6qJl3D(-E8s5v-1-} zM`40suY;k0pmT*xMJ%IU;f3FUDb<Y1Jo~!dWLm1;cPaZc<-zT#rvgtEEp9olbMRo( ztG0%1EdCOeh6i_lKgH%~EwfEwg9fwF3im@d0#@$XdssN=a<HO`;pxLOwk~mxQi`k( zUG?tL#$=1E8#jb^uVoE9C@b^d_p-Hg<l|%We0Tq;J#tvSi@#&1^wJ2aV;sN3FT5<+ z#P0j-;*JQ@kGqz>%jMCWAa|p=Z`*{mUM4d9)0tm3n*QRS_F`A#Rh!9ss@j)Uer&3i zd0)Q%e`sFew|SP?&zG&6cfX?GRa^M9H+7o(&7RlKyY@2mWb5KXJ+8XOX7Xp`FAB|% zGc&7v)A3=$CDYB~`SRwL)q$@poIVFiT>rO+GllVWI5S)4#EnNpibF~!EjcN+e~-%M z6((A~DmQO*OtUrVd}I`=vS_l6`SbaO8-6U@e81*$=j^RX>7~VGwN6zbG2i)?m0q46 zb#d#-t*7mbed_)H%5;9;SrBn>`rL29mvT*So^Rw<X7h9Vn^T#}U3V_lE6n@JgrsdM z?kCSr%w?E*OzEwm_mUMscLnRLSky14g~)m}7|tqAdp4JSN5S;EcV~9hgjK%v->tR$ z-u8Y$RoQh)&*dB@H@z|c@TG^<W`j@9mX2_R)-BPVV%InDJTp34-@9Mz_O6c}b569z z{}vX%w|iPHbBx%5t-=LAC)!HOs}|qA$MD=z`0$}9U;asF<YqIid~>@#`~Lr*Ki#*L z#98cmDslRI9P<^`oTB&AZ#11=D;=<x`@sK(eTVp)n*tk7b}aqNV0`8ci|SpW2G!qb zA0Kl6|M73n501Ru8g(ZkK3;!R?{!D-RqXnS(YqR|dtW@b#8|G-wK0-ug^b994mBPz zHwCVcR<A=G2_6?FX`WPxy(7B!$(3&xSYNBPq;_t%>zn+cK;WGG^KyOe8;kVftT-c9 zCcj@)yO(X(ACX^+o^#yW(DH1F=wz827w^4T$$4{9<Ay#15ni$BeTr?DA3FPN+!tP- zl2`P1=FgPx@4l|Nf6q5V;oOt?OADW6M5on%;b>HTB*}XJhP<`Z%}>%SeW&KjS$sPG ztv%Il?{l;Kw0YT+Uz}*J%x3)28X(f!m3vRExqrL(kII{8**y$7)S^!+cg|hic$vl0 zNHI&sGiI08nU0BuRyt9lEl!0R?_JfyHa%S0Qt#PmQCym~ifK>Fy#-#%!c&}<FRHG~ z`Es~?Yuv5cFN?Q#J+j(tBrdyi>1Ku7?+^M`8eFYYuKRrCX=vReH`{%_%5@cD(zE3S zev8fBwIcP8e%(E@*B5vK*H->LdVk*ZW5-e+By+ydoO2^uLQt4PNQdc>)f9)djIWfM zEcJ!_oPNxzKXzo<tHe*~9G#cqEEM}I3$D&$Nq%wo;IaGll}|1d8(W3n;XL+$XU5%~ zNs4^8ZmV^*+Y9KwK5}(I)PB`|GlTY+wdVO@8{JRte3JWMea|1R3oF?q1KV`3E(l+J zVqd~b2aidQB`5v(J<;;6|Ks%^d$u)JRL;J^P`{N;X0d1Y(FdmWS9<>b^|!B`|L5BK ztq*=5m+cW+eO&kchUxK&_q6O(>@?mT^DYpb*Cw7X`d=^Z&lj-*hjr=px3B!3A<OPj zR3-K1-1KrK`K0q+tmh{cOv$Ue#Oo7s+rFx1LVwsT=H6v#M~}NLUuALsp8v;`k3Tto zJlL0edt2ee=iyz~A2GZy5;#!5`@n9&rMKK#Seozrec3eEt<~r;bGx&|%dHz2zPq{Q zJo$ZCLSjkElav*|`)?*28%aD~R$RKXTF?GS&gHNBzP)~b`?C4gb2m-)m0n`4b3NS2 zYPwvnra0sKHg&_#PabNnjpjPN?7B7Q{N4xq^_guuHSU|)C0ZQ*7&qhT7Ac7k9m{(C zbjiNlMU&eP)&8^E&?zFGEGH%?wkDi)k;|MHlIfc3XTQ0_{nV$D|F&<@iDk>ByTkow z?6|%0)Arrb_A4VM)!v^H{eEwL>FT_sdtH~TXD!b^xqjRKws^zWAJ%9_zh&&|+WR@o zX7hzO>&*)P4=k(IoqhS4Z&sw`xoZ|XTVA~hyHGz<vVzk=b6ZM&(T=!RuMdAP;BUJ8 z&fey$MFqD5<E=*J%OP`JQxgv=OKylftoQ2OKJnf2j{h$2sQy@HYaJZ3)%DFG(bYGF zZ|*IBv^L@R_6AvXr}{(<xzq_i6;G~7S}Dt4`D|i>Z_o7aU#7mxnBrD2^GQCR^EUAc zA&niWEtiw-)JOAcO1{~iJw0#l?yqZYf5*jFJb1?1ed^kqlk4lNdRJFERhQ<zJ@)jp znc=ZWew`V+US7Mq{oct|lQ*){zdreO^lq_KYwK(O9>3fBw=CPMRd;CNSy5v**OV=1 zX6>#jeQ&>Nc79ji-MyJNui0KXp8Kx4{qc`f0e6>06SpnlsNa?IvHn}r2AQmbKGJM! zrnJ~iT(%(~U@xO|MWsWQ<fd0=J5HUD;qZ^lRBE?4apXzumxovKKI)%8X4hP}`}_>$ z;^}2)BY%GSclPw^^1jsVIl}uNP48Uaz0Ujy|NLz4`xEwk-}_tbOh(nh<ol<4la5V{ z-8%XIKcx#dwGBSzsD4)2d)w%aSpDgQs=rM+zaC4;i8$mX6v)i9u#njKMXk+gU#Fwm zY^`O>mrr|{_~`o~=W_@84@(3v^*`v(@Of$WVTA{q+R==DZS5ZwwVs*I&Y7Nn4{{bi z^U=u5ajC6ccmCJD1fC0a(^kLRIx$#q-LC!zjl1UE|6bb|?pb<W%~5dAQ8CVEUR;yv z&pmiA@;+r9Q;+@3<*K`<Rup;IC>|1Ui}Ttfll;3}>O`W(M1y4g6=5&m?_FH>$Hyiy zEH9*R(+=T$|9R7_xeb4aT)1|)>%eTrUQNaDkGWRgErYi`&*f5H<MZ^bLx0fmmn&AR z@W|RKmlROh^(3UUF0r&Uv2N?{vtiHA&YC(sJi7jMmSlXiwcY+@Y=wF)_tNe^K2Ytg zzIeq}mk#!*MSD)PF`b#+doQ9>WKYmV4!`#2KiJGCCZ=38-y_d+akI|?!9`5x9$xHF zZoe#Je=(7pkNfjyZfP+y9VHu+h}GY?zi?l1as8#?yzX(M#p{Fj^-MM|D0p_}P}9t= z@9S(|MZNoZwEo)Z7~gxF-Jhf!i(_C;`XH_F`1^utv5L*N9%U{$d{J54X#P%D&TNY( zug|i6YMkU+CH>;(#AC`viMvABx176}n!4D1>a<Vi?y-Hlu=VfLnUSKRku#qL$rMeR z_gi?raC=eC&4r33%lRi7bDzmuFuT^K^h!$NNlQn)$2&fC6!a`osz3Z#=@E~WeY`;C zjfVAn38hxtJLJm_=*PPUU7fWq(%kg?{0|8i_f(p1H5a)%Z}X;CYbRZN`gHN;hGU}N z=8A4zy==<)*)ahR?-=aOsd~3%CTr@qW3#ef+q_g;Rnxfofm!ou(_2k1*BN!rulO+S zUx!Sx4*ww+g_Sv58n0_anuQ6^tv_k}#`#}G?y8E<-=ppRmYn|n=<Lc0-R+Tc_J8&0 zuBbE96W^Vl9DRD?+S=OdRlkC6REtbbtXaFOj9sd6YK;5+k^`@=wr((R^6+Pnn)NGa zhf+i0#78POD!rN%#iaM;rN52V>kF)z<$WxBJ@bb@^B%q2@lCYTbZ4lnG6VOtjRG_3 z3mSe-=5b!PMSDlzVTN13b<e!r_k~C3n(Twt6K%2*4jQqF5_ezoag<Iu$SL(QCSS1l z$ClTL*PWNoIQ-?vhojk%Hgl)jX11QxR&|`*In_5hqI$Q})Z582&MzkXKJ0oYuccx+ zuVc@1-aqr6&Ycp{@N)N=BOB9aEDsP&vS4Iv>Ah7iXxF;U(DshtD{-aV!)$GKr;Ye- zG8(*bvHCUDKKsk=I)h)F_TmT9>m6&q_1~TTdD@;YtY(uc(l4!x+taK4w!8V&3_aJ{ zfBoCv1}&($v~S+um_51o?W+9!|IC@YYKQ1b$G(3yCj_&vri7lGaGLFvk26EJ{F=(D z?SJo`zqaP*o4ESw&$gd0&0Ky@;Qo$Xd1=zu9%s(4VM<)IFE{P2@cKIUUGo@!oICM@ zNrWXnN{HF8Z`P3$Jd(CqVKeRC&r35ucGv&9f&bmFcUSvgIhP~+U&-#vNp*q7e@k<p z?OJUi`QrELAEvuQH;TG0)QR3@-V(RL?eLTOoF{?8ocj$p_aErk&|Kfr>UTlLc;X-Z zsTy9X0j?*)+Y**0TzKIbvM@zdAn#?utFu>94osQN#~7|7&Aj=;HBRj!(Zhe|_WEvR zJS@8Nbho(uehY<j+I6p|=|(@^`{<9j?fM(H#NsT%=4{Se>$W*(vxWL{gEhLzuch{w z?N56$O>pz4kGo8xjXQWAH9iw>sDI`ml-}C(pOKw~twWH1Nz>d!HV^jqj}^+b4)j@+ zC9&*`5O&cIUg8nLG;vCXt9|dxyhVjJOV5@c7EU++C3H$G_!hHNnEw3N{+Z!9tcQ;H z7SGzQGe>zFV`Oe(tL2Xe&%(BTdsh16!Hq)&PR}3h6WHb$=$v=p)}p)Rw^y`=?=-L9 zA-V0*u56w?HHCco$L@FWKg^u3$^HGyp54*2mU}bIKik{?dj3SVySHRYbe;B{N)@jC zX!23f_3YH*-69)J?j3S{v;KzKKUS&ZPrR+)H=5KjhNL``_g!Xpcf!No!^`Ak9$xsV zGF9zP#x9dLF-K;reGBiI{+jEj;II8H=hHLmUk26Z*QLyFyqB;fc4eKxHW@Sd{)es? zj2RE#lTll^ROst#@8ox(Q<!@WE?e4rg7H|<`7o{SuASe@Tz^ir*LLQ-zgO(eiG9bn z1?_XcA#~D@aVOig6Umzb<6Qk46g|>sE?i{c^DOtr#`m$BA@g<zo!EA$W{>0?*57}F zz8D;l$P`(xZ&^Rpi$U)2RF^;-jZ@smM2{DjPO)b#kaOdkvsmQaJ6lG@IV(O*%8&Xa zb3*aT>286?PhYbdPiObMC#T|>^7n7q{>n@J-prS7rF?P-`&aw&&gVacnpvvf4(F*o zuIz5VG4ajC6z-t5FY((_-X)(|$DjASe|O36*neGON4~@!`@Hk{&HB(O@m0=K4mbPG zS*~W+A`!XiHIu#W_ubircizu9|LvXVZH}1&$zT2mSC|^zllvxG#C@Lm{eipbvQnw1 zIi9>oOJvY7>Pl2Re@T_CgIUQYB1Itc0%O+;hO3H2cN~u}mh_+Lk=4B0)_3-Zg_*Ik za`5RlbM5bMo#5$l#^lbPY4;}7@4Go+X2<jQvD<R;J!WmJmD{UuH_wOr<!k5rN}}Iw zE(EfyTUqb-Md!JH<(a7xcboVMJ7eT-gj9A4D9L*444<OF`!Y=3R-Z?C-|UC0>vlYP zB5AOwL2>=dOWna*&m``tt=r)p(|vn~P2owujiT>wbe0R(#{BZ{7tcTc@zQVE*Ua_y z-zyG!IP8=;EUWBz(sSAoXNlJZI%?JLZ#=bat~@vOu&nT6dBMfkA07Ybsl|QXOeQz^ zKt$)|o9jB)$voTnQcwTg4Y!R>I+4x)KX4qVXVacGeTH#|`t}c;O}Z)Stj3`#MoQn# z1ysM^Z>x1zIXT|yh1Kafg3A+?zwW)T>wWnhzxq1v4NDuZIvbrjc00$;<%rI+sZZ`q zn&Wz8@@u~b3bShro_C9S`CWYCTRvsalD*tZC+P_ND73Mh!tvuJuiHg7NBiyUXV1Sq z_@TI(<7cJqAD$<Czi#L#yU*~o(mkKLtp9}EOj-GCFEe#%=Pidz4*#jO<X!(!nVXY2 z!uM2ZwAA&v^@9H*WPg_y=SK>Eo4a-8f`rR!UTr&cXxpndo>P;LhlD)fZ`XLTT_kSr z;tAz9zWdGIRsZYD-{95XZiJtkXI%a7&Cj#Ov8!bQ_T(SysSRHJ?N<0z6U*72hK9S_ z19{EoMgKOgS)X*^`=gw&i`8Gl^43~Zt)FqWl{v*Q>-n>S!weGF>fbaQPPAQcaL0>x z%n!7l9XfJx`zGt}@80e`_UX!dk;Q5US_>vFl4{HU?I3f0t9PMILfoOh6J-~7$VKc< zh>+j7=Z4MPkh!;OXSOIBXuT}GGwXoi{U*Ks34f~pmwnCu@;9vJgZaa~2k%Y2w^d}) z#Q%S}idMM&*X8m1q4p<gZMo{vC-pxQKD15Mko)>2R_@XL{S{(szyGk(+rR#=fWYeu zJ&pz9?SI5gzn%EdD3_Z2+i>#oUu^%yj;DW^?fCBJrRA@7?K*Yv2fMBEN!x&*Cl$YI z{6Cz2oA*?_Q@YK*TTj2oIy=~@zVyy>owq)};j`qg@4COrm%3Lr-#Pd9&2B~CCGRdx z2&i{wzi99y($(+alXStT%k%4b|Gux^=eFMl1poi?m;0mkU#ac?r{`v0Ox9eNKKW9z zHqUYP|L?|EwZFK_9*>>>^-tWn`<?!tmeY5C<L!4-U+?^I3iHf)(q)&fyl$9x=;3$W zC;R^zR<-raseANzS!A6a&#HCun*#agHU8^*{4uFM=F@p^VeyCh|E;$k{qeVclhEn! z-v869Q~u;<$lKayY2L5;^Y{M09m#P*y<8p=BK!YuQUB$hE&uI=IR7f`e@CDG|MW-O zwu1A|O@_x0LVxYg<?*}xky-9#vZmoJ#Yw$8_uAXKUk-OxHS_Z`uUu00O|xHxZ|)8q z57|4XgB~fb_pWdKoB4FY%d&r0|6N(#@rN_>H1DPIQ-*RcJLdfRc=$=^tJ0%$_qboU zQrP@O(bLY+<fiSV%J})OgI@9mZO`8xzu|tOW$p8se=h&Jyi4)2;s5P-G#fZiyz>A0 zpFQZg{>$lKynkKyZ+tQ@<fs12{Wf=He`HNC%P0-lJ|$$~s@DJPm)_R@eYxdT<yGsT zpyF4vpOi%TO=q9<Y}xBeUY4bI3}mm(X(-{l)IKYJ%bosZ3+k2bmc*`-pK`0sr$6KV zCDoT^FXb-n{drz}Z@=B!{iaj@*L$u0s{fyVd48K;8;A48Ic2;v`7V7q@W1m*x+d#t z#mMH*wwLbApXGF`-h@-`<y^;?pX2K<>A#HEid~w1r{9n(q&rMW{)mBDnd+@hf$s?o zeKAuO{?|UiS!Lcdhtb|CfBi%ox2zwNKJgr|(S05{r7>>mXPGXQ>j4?_+!tDSoztGc z`TRts>a6bcla=~cdg_&*?+rAbtn|D#P^H-A+;7K!d**yUuJ$b1QoiAm1>4hwt{H|= z^{r6>!dWiGf!an3MNF7_T{1N$J_}OFcM4vxj`3bA!}X>)6O?sdXGW?{(Q*2$5bu7w z-~IFhTk%s-7lMBDEv|@OIDct|iC5bdjtGt;Mkdm#j;mcW7^iGIRIPa6413k2-_=Fm zh3#GLPkwNnBVyLVEv!#wuzV5f+RT{5b;^C`1nK%7^}>MF3oUlZB}vr?`pwd)RqL;- zvwCNAt4#38tQ9^Uk=kpO---pi_!+Q`<Lt)?W|>>1qD+Eogj#hKj=OG2UF{PnG-dKP z7jB_%2Mc&la4lusqObJuD8qGzzk>Tb?sIF#KMoXZ)o#D_GsO8^-P?1^%QkW7{+EB7 zz2R;}l!s74efAGd0heh)OIx?}MZ8GSdLFi=>C>eP>!+qwTt8W2&cLpA;fd2JPwuPJ zmrOmG!KBq%&iduH!%oQqF;%i`haM)pmgFp%IR9kxrq{n^H%xr`A$!rT`MmX>XSph$ zc!-5?6wUGYy!OEUmGM%Obfz)+8Lbm{z8UnQQ1j?i7t^a8Uqvs}@B3nZb=ec0s=`To zxgW>!F?#=>_3M$|k~6lw7k*4kljBvFH``ydZo=sgT_3r^KG_vrR9QCTWT1*>+s7>@ z^uK4Gt-M<K|MR`)qGkn^`vR7os+GF=OIWkIX~)$+>oo4zUDUgA>+O@>cKfyaYUY1+ z3SvA}F0nhw^P=T?-UknJ-j)Vy+!6iqZ)Ut|vGC-j9l<T1Y7TtZyd!_}fwymx0{(gK zi);M!`M>;e{!J6WJ0vCteo~(vQN^q$X<>%BtHId9#KL5<;|^&SGZRze>HDgfrF<s| zeBi#vq7=~HqQ+(V<D`n@AqOMjG_{&t*-ulS`5GA*=g*m`;xgUq^)0R|i&pz;*WHfV zel&0Cx=@kpTch`T-|X+&z4q;{u-Mnra&xy&SFL7Nu4h`me_`R-KL>wWe6skrhKFyN zWapV3GXz#j)qg2iq+fQmwfQv%<D1F9e=j=xP;>hKA5L%VJv(w8_pfSscGvc+mD7{* zg1SU|zA1NObCs85=zUB7e*BVjntjggp1*!hvupx&SA_gqWaM|^Xt_Yqx1WZo&Wk?X zTC|$uqkZcKopnd9)PLTxZhi89UMD?WPnD}j9zBYGe8u<oM0fj%Z=PQAbvafxxklQ{ z;&R2I{S!B=<x<tsWzyJqJLlVWk3Sc<pFB{ss(x!@oj7^-;dKI;if=9~T$Hsp>Q<c0 z<hXe6CC=;RoF2LC>Ug76y`gUY8-;R@?}_?7hr=J9u-(Rf@@oo%d!54D`iW+@pFO@& z`$YDWl2hHhH;uAoO1jFv7G5X%Q>1^c6;a?<?CoBf_43gpCF_mVZ}@N4evAFK{Y~{r zrRr1ruJ5}xZ_=y>*`K_A+WpxnG0*MheD&uOV=t{%ag}S{zK~OH`}W(XPp;k|UN*se zVz=ze_lmbq?0q6NWogu<6I-`s=h(?q)`#8m-j;l|pl*H1^e;+Y-)EG_-gMu`RCYV4 zX!;iZueY4<sa|(HP^KHT`lOiK&-t!V)q?fbo;N%9_%CwV9@~(tVf*Qo=zQaZeS7?` zl%Lpo!qVZL?yb;}SR3x01>JYm|2o`?FX7(VzK5fpFZ`hPrLW&2zvbVWJ}I}2H9_}g z+m`M1#d8*IFzMO#xr%prp7f^mQ_Ci7f1BN1J@MP+809BFC!B4UYBf|koU&pCQ)!e= zEdT7lAUo^kH@b0Y`3^Np0`>@QRdZ?XK4Fy;>%7ldPUUlAOOCUb)BQ!RpLTatw*NJ~ zQaQV1@!Qx<;<rxP2yOc>l<RA-#+{>b$qtWg&Av)}Vf7m?hdt+en-jTlmhJXsY5S6W zriY4bp1Y(v{iea~(iZ{WvwmBCnl<;+PV0s1QkL({yOu5NyU*<Y#y!=hw<|AP%?m1B zn|s{we^$;XIljj`R>z(xTxR{$>d*7I-IG~=-<;N^yLs03kQHZlgygEM>A!LK)7~9T z-6wDAPJa7-@}locg?`pY&7Nyw^Yzld{>fd_zwO^rfAGqwS*Lc*IyGy<Tp5ppmhAVg zxObht|J!#{hTNqU4_<rTYuEMim>Xgonl&rRc&q0oTRmUfAE#{D=ie-Ee!JRyPr-+q z>ACr`A5Q-Ma^B;5Uz~y%_c5)F`L1_@-h^C>2}%BUW4qjrGvDqV6#A$9UV3kRLi?8b z_AlMCGVCYbwto|kRjhBH)4VOdrJ{RQ*Yf#>dk>|}54C>&$MWcAvAOoo|8%Xo>D!y` zGhan_M)AKjQPqWl>@!s!x(7dg<H~K>5wj`n?y?T;FLUb7FWy~VmvnHsvbA15hn@1; zyMJGtTg80-c3pJc=iJ+0=l=@xxYTv?LV10_Jmde*-fs8YS~p+i=d7nkKU)6{w_lNe z>3z+kQ!|U-RV+095Suw!q~?*=uYb2c^a`DyyZuhh@3-dL9ey+3uS~D%jhlbrC*zd+ zy`ScH%ZhMhpWQO+*3E6*dM*n$MuwcpK5LR0`tj-MeH(s;-CoRYJ<r9=-{YWq<?m}} zqo;58+4R5u+_b1|iK~|f?}|R5v$pnK-pbRvQxA)NU!XqEVg8<^|CUj&bDYE!16Q*3 z7GG@b7Bka*aHnfo=weN=D}Rpt`}RBi#(ldFf1hv9xx4GBWrpR4C(qQ^#Z)tI>FM$4 zTN^#U`q{Cy%KrB@JPpp~txr5tlO>)XXZdu}{fVEwDklHQIp(aRpEhrQ{ZEJVpR+ve z59V>6N)$Pw-S^U%L-Tt5|4%QvKAAQJ#m)Sq`a5o;f7JB;24>0Wa~qhsQ3(#kr~e%% zw*P!DGxKfHKWmp3k-hGD=X(-=H!f=b*TVay<;R-ory7_Q>cjp{UZK0FPUv;=qIdr< zue~(W<xlRmO<EiixIOG=>inB^KX*xsz;Bb=B{iS+i&kzciTw6{YprXR$!#Icsd47F z&61}7OW4*pMQPc^ZOOZD=A2I1l)Lt(p3;@Fxi|F`r*30ETc$aa@kq|}(7Tr3C#UV6 z6SHH-^_=htmyYt!c<YrEU;oFXXv&+(0=bP3&fON8srT0KwpozU-%~lveXrAQ`z^bj zb#|N2xh=Yew_TUq5;MN7y5!n7*UhnBvvU1szTLDdZARv{)1LL8tJ8Kj`NaQ8-5l%b zCH7t|*F~Ar$Y+v@)2|DMG7p`I5mNd5;iiXJLhhk3eJ6uUT?Uzx4$W5y>~u=1Khn53 zPssg8RgR^nh_>=RowZY5to#uom@Z)N%;DMJ^!kv_b%r7-m$*Oc<Bkc=I=xWg+{VJ3 z<JYW?M0>IcD0OV;TCj|Z$2H@~1TPtTVUEk)CCVJf1>&9Gb<J4ZvL&<gVak&A_Gh25 zJ>PhYm3vmidxPxWCBZM3tU4ldMwb7YaeBSUsTvurqcvGxzI>||R#i#7a_W-`U`u|z zr9wVC^q0CrPWW|AZT5%_@txmSYA#a=73<u5#3A2AC`D0snad-M$c0^X3lq57c~kZa z9rx4LT0HUVjSE}8y0;gZ7-+X{4bD*Zjo2WVd+*5qZ%@5UXLe;2UW>TDWyORm5>Agl za&c$XxA|XAJCgdNZL7sBjb1VJL+>-cL>XrukTS~TQR=Naa`nSZ7yngFaX~-!$h}<E z;r#3JOP6A2XO2!jzAMYOG^PabW}md%YPasumq|99Muw9*FCPwPp8vRTdDo3l!zL4> zmJK#R{(gT7y<{zndkp?E88;PkE)0)4VzoUgDB;7^gY_%<`Zhj^uq}F>y&$31cM0!N zt9kF-cr<RD+J5Vy_S{K7)dOAzzLit2Kc6JOpqM3nMaI&j9Q}u8Z1`FwbNK?ZybAaA zHPIKkIkR?N6%jQ0+HHCD%4+|D&e?J0GwRIuq!t(_o#`lVpWrQgub=x*%g!WTKB*wz z*@j|<iyZ__c)Ww_C#OYu7@Ey%V(L4-(9zbp(OG(v^u{$^tocXca^t34;W}S<XF|oY zmKet)fj)m%M6f#cT$r(7l9;jN@0N|Crs0?Ftm(1jtGWK@({jVQ-WShhip?G>b8gIX zI-#hs!T3^33tOgO_FjwGVw>6ct62E>icQ%AH!(UM-EeY3M`PVa?fRv@r;i+o*ykoG zJBc+g)5BUJ=f#Q7eEG*)?0Mra?~zq$z0t?{r6A>Nj(|0X@RZ)K2^acigz0|yH*xE^ zh;tLnCicGAGC^Cs)Uvm&#Wu<PsN!a+LrLNNv!zy5$~Zro{JEe*eftrs77nf|HlJhl zHhqhqotySCAm9TZXQ%SAC1;cBOWAy0iY!^tIal#{^PjyM>5YfWn=B43KYMk8R>Rpf zQ;+PZcCeEZw$gSg()#x7P=xWC#5t;`1pln;44yD^Uw`NFDxQ1K3=TWp+i-)`;_WXc zZ&}Xiw^MG|MDx76^DI#@`9#l>6&;sT%8pE!a@%Ce^Ur@)oSw6w%R*2&>3m0*+}W&p z5ur&%^+!LixfousPHK)(^$Mj$$2;!w^l$v;S-ZebQgh`>N4-NL4;L?<zF@-ni0U5o z*@wTBhdgjqyKy%2nziS~^IA#qCoi7uS+YrRW~6?yKmXM`&qEfvwq2fZK}+RB_Hj%8 z?9EmEM;BO3x6IA{yy#4X@!aHd)8jVY+iDZZex|g3Lg!@1IlVo}hEsC{%KBz&TQ**` z*ekMe@v6w4n*Gv7>25D}XfKU_^TEd^cv;V?jwPLsR5oAl-Co{)#8W`L?)>)a6=6#& zr=9-(@Z-9xQ*M|Vr<dk!O%0o*bZ)E9yNM=-T$*YwF6)n<x4WEttn$R-uC(&2{Kd;> zMXZi1?p<>BvqAlwtyh8`3DxX5(rkO~c=uk0$kxgw{%3X;_9V(ZKRk2ljqKwW%N~j^ zpYibX)+Ez)hs>70P_=EE=6JY${+w@8G7q=ReDV2SQOkD)-M-gKt6BNQgFY`#iOVUz z6>D*;(|<bWal=~$OW1$!xvRJ-pm{#~My8~<1vYx!ikS?@i(|N#7S(h2NuJ!b;kolK z@3WEWm&&-SV(QvY^jF+YK9w19PJKnObm6HvY0_R-G^=X1u+P8C@m%~{3D;cSOk1aR zRg3%=kA#FI<{7AD9Zom@^h`ijBitdPv6ySd1ipvv>-={gcpfvITf^CC{maz(72GER zR+{H#o;dh+ztQQN`d{83Io0y7o>7LA<G#hjy0$#EGAkBVJ#*1(F9d&Cw#x2la$eo= zIPA%{H)q`D=%3flJrs8*pYLPdOOaV6DSM5>Ci85qdEX;0YjS#_^NZ&~(_V>OsN1rb z`{CW2g35Atovxc*zQ*RO{H}M#i!+<^W?z_CUB+5eI@9o}$TsaOO}{gzPOx9z`jD}H z`Ollv(l^ifZo919_!A4u^8*%Pk*e1gc{^CPuK#<}bd$@P`+C8j=H;|J{nj97Y_~V^ zB-h*7k?xW^7T>hyiITk6DwiYv@k*xGi}O*38y2`P$bJ*6XLG&jk*)gNyW6?_-~Cx* zIKB7T^SOO{_L|uX8<aidW0aO=o-S>AZ(5JB_V@aAljra5{oXdW(z;9}W$(^6hi~le zEnoC!jk(IFVr6!p)XhS^Pa31lj3tFOXWhHqRam}AbkFm`b6pm{Wh3KeZuU5Ry2#1t z)ryn4rhTUBb_-u5=C^Sc-jj}LbFt1%Q;XTpC_Jq{-u79ph2^tct>?^U>-dd!^-Q;X za@$_>&s>B1^-Glw9kQ9f#{8w)=J%<VvkSN-zUOT;j63ftzx-OwjkQiuDMu_%Iv=`r zWzXTqHY;zeH!6=={_on$l>3qM{k}VHd0^L3oATYU<j!w}Z-V#PFD~B2uXW~0bEVNz zzUuQ9yQHst%!_!TxjQ_m{jPT4>p0E#ah+mo+U@sMt40+ZnzyUEUbSl0J?)Ey@2B2y zuUYTXUl9M{;vMaa$@{{S<WKDtn)@IwbJ6AUN4HfU|GjfU#c%s<RjX%ZopTS}R;^-r zy~&1q-o5QUAx9*vdGltz$gDZ-a{P|b#^9pUF7_X$b=IbA_xU1`H}gh&*=d(n-Y})B zsZLRcZ~4vn|KeTWiye0Mq2=!NUpDMkE<5$E??p?w`y1sw){Bl8lppcCc{eaEeeMqz z%Rk53<&O9A|DKRn^Mdp4j}4Pc9y@=|tLZCwUtpA%ajE@c{>j~$3!3=fUlrcuQsdZN zAKF`gQ}_2@3p4YjtJZ|~W;uU;bu+ML<Jx(pF73j9HN`qrx1>bzZY&7uHcStaHL2gv zGVP(_J`eMRnu&Vzd6!zg)4sao5YNR;_m3_9+#jJ~`)~c9jfQiSHCJsY3F2I7sJe4r z=EIF48gIiUZ}jl0$<&*a^fxQWHLliEwQrSmKzRuF#S2L%?XDiYBo+MVu+BoY;En}f zmt9N}G-*84q+#NEqGbQ9jll*hjtX&{W4!d&qh5CHnq$Ekd!rI3-KzA^IWi^0i`z}) ziMw-Dfx@z5m%V147VdMo=vi#(+IZkkl!a}}v-NY;RXkU9E)kRBSk>gC(bVNy#ePX^ zdZU<v#f7s6UpRDl8;N*+&t}dPQ4=$iEadY%JjJ6-q4h(IEPMCLm~1U3m8<VhJbw7V zMtX~i_saSg>@9r@RxJCK98vsmLQa#kl`rpQPB-Vj5)ti+1?Da6lL}K-a2=U&ENE8q zQnsq=D-W8;Km66YRfA1BTw}#iXTf#ut7cwem=s*K)iE?9!DXU=f;3B^Zf~B4<l;Np zoiQvD#X48lyDZ)kZo0ND>48=t*Ox1gB*Z<%E>C*3BWv@Q`T{3j?Gr2R39KqGTgLM^ z%kfKqip;~tWiFQ`s%|(e^3qT-G50wxzG9NgPPRo}lZxCFO+{aJa~uBZ+1lk{<1|%4 z$g{Ag$7bcmIToH>JS_*Oy!gT5Gp9$!GD{=Q#_EhxWuo6sD^JsPM|dLcc@#Pq?N6E3 z-etI4jrG!mX*^3Ka_h@vuNB>!$r*KedhS{S$*N_SWAyiGtyA$UWvD%nYqY|3Q`1W6 zOFNQgO!9c}DX40()_j8!_fvZui~U}PUs@CIspx7Nmmn-xy7L9!#>R>hA{OdeqK71< z<W8>E)IAlxwLrRj(xF8)-w$k^#OR}O@T-@+R@-ZXb%AoLj*Eq`t|>TN?<9CNV+Qxu zD@UhQ*fKu*uE)8i=vT~{x9NB7-g}krUOo4!)!!TIOE-kRI}nub-=NrX{w3#{#Cxh| zUPd0Cw%hhC-?ON@Z;OBaz4AKw-MV*v+qsY5nYZoSyt3`fo3|>>J1(6t_nlrjLnqrF zrmHGX%YIsJ)SJFOSF>#H+IN2C3BApF^@Z#<9>T4k4b@+l{bG8zZJyuq{?hM1cI~Yb zzm(y=Np5?3C;!eJyJA+b2xWaPTmNyV^)xn_4v_<n?7Tnbyj`caJb!1iqM`n(H_1#( z<d(Wfo!L4``S)}yYwO6>)(`l9#GKRPJH7Vu!;fV<UkK&*FTX2UP;I;BYU?VCXzSRv zoE2X6(aSI2eVXw0oL)M6xccFiX31Ai&Nx~+wV!_c$<kW(%>B1n#h=-3U3^=-m6b*1 zmYnWI%_F&=tNyGLwY6v{kQC$Fm9^4)g9GcFAM1TR)UJGAuxpOrf!EwAu8~i_?Up(7 zviSE-_h~=&Xy|=kUf$W!Ah$)meBSXX(|>pL%gV`e9Nk#&%X&NZoS({z=SdG3bQ_Mo zD9Ytn)oIe7TU;m|z4(S(@7~Lbi>}>ZF=(-Vw4<Qc@ZynV&hTj#r9F3b%M(67zLA)- zH|h6*7sn=_xKZWYto5!zbKleq&s87Krf5tO(w6N%Fe7bFrOr~9iIPblLsb?OtPfe# zG3``W<c0+q&kTH2l<PZ;rt~Z+G)_Fl(5I#xKKppVC7Wd}Y&y#spHI3i!}D`;mR95P zkd%O4zU#_4ljf&7P4ci=qnf<z)uEb$CB<r?9-HkPZI&!uIql8r^eJ6EuUmqbFaA5V zeez`XKxO`<<CEDh#>gG%Gv;5^{@n4In!L!Apqa+Wb68BLZ@3_Qa%zNHefXl~?(1B5 z?Q1f23Ym(%;e6`#Mdg{7$#m_FkIziaaEvRE*(o$vBRt7{zV^jEF`D&1#g=$i%zLa> zxapE=)-vxmEtgcI6xLPb+uYO??#+JF60BAg6s(rD%;(LIU^OeV)THB+jV=}jtCi_! z3iDcom+5{k+Bny{U)y?-<yn6f>-t4A-*n9ND0BI|S-C9crl733b&~od*^ddj5gIp- zwENBYu_4)`=EX!|`7)7Ce$h_<#CIPKa{5{^-&dN%7S-SXOZey9gKUNQ+vVz|j@*s( z__IE4?~ngiS^7l(<v*NQe|STp#wNQ<0te4#IoB?-znJiD#_`X)=j_gz9mThI{oxGL z`acW#?q#>!??15n=?81sy48pOUptt8>fv?e4}P+Lvbux+P37A!)A(Pq@$cdf-GM*y zW$)#+&EI|~+UifZ@}8e<@pZ*4_Z$wG|M~FiywsEH?hn&>Kg{C$zw+?v-VgFuKU^04 z(aE<y<Y2$~q5iVN`(J-BYTCa?@Y~)iitlf8=$9VouGgQVynn@E?&k;gzxtqW^=C8R z|0Rd-3I2FEZ{{cd(i_IY|27KFyZ&(IYwf4$=USI9KOAiJ$DzIc!o%NIHY*R`fBm6_ zuYURA$5wByJ>2M3@uj%*(_*VPRVmx|c(=RD?Q^P2F}K-t^52K=ub#B8&#+|S-+p6% zI6ME#58IVLEa1C;HL-p<AODLFa|QnRTGssjXZ7>8;*NUvsWtVoZ&ozrFT8MHsx|-B zhwD~%mLE1>^&n1m-@mOzKVSEL*jn@>i{qW+gle}3d9v?z6>qAU&R6c&W}Rp6y-%5C zd;a<f`S#q~!Vlz%>|1nry8Edo`mYUw*y5d*==UC2yM4;(?dMvfPd!}k_OSlh?6TA5 zuL~}3(|$6$?6B|bH@EjisORry+P3w^{s?ySS07r}e*Gj~awCdAI^e9X-;EmQm3wwd z<!Q8@e|+G%^9Rc<SDwFm@XPCmx9qy#IZJEi^37k{a{k2z&-U!n49hPsd!?WHzur)& z{Ku7J9jDLa^(&iKmr7hqbhhO2ZFA&ewyIy^u4u}2GH^$hh>%r=)sfPUYX_=iuZ3<q z_4<#%#fA0CUlP^VG_P{@XkWm$*Gl8;hB6U5Q^|D~9-c4xv4k%>EV%Nl#+qdtvVKK= zTICk8(wV>LU1sY6lMmjaoBsQJ2tC}D8vIn$s$_aoIJ<v%>zj)US2J0aM)Vn<E{%A$ zZo+imde-kfMmJ*_y-zQ2ZdX-)Ak|nVdn@Pj(`|tncX`h}y|C!;Q>&P=%&9ezrZH6~ zMSfn=+L2N?v&QrELd^|3cxILEh-mlMSvAexkgHoP>_qpf#D}g+KON%Qu|h;|4ySMG zg&!Y-b_TZhPe0Vu7F6jdX)?v>?;p>iTGli3S^C^|JV>rD{lu#H<HjDXpUI^L>$#qt zTRHi;RidBlocM69`Sz@@yb`zZZ7x|cm&tTRy07R4fjQ<}#(}Lf6=wvpJzvCn{_4Xy zffl<(&mB4!X*EZ($@oH0`U?ZuiOc4*UM^X2EpZiJC`Z6jXVq6xH@QTm6TLW2m1@kk ziPgKDXyoKSk8i2f1v9Q0OPo2IroIS>;dNEq@OX)=a)Q(YjTZ@r_vPAoh&q%^DDzzS zI)94Zk7SJ}Tc+h5`_HJByz4S}vV_rMdVmJA^>+6u%$>}PmeUzM7*(f#o6c;&XgS?b zol$jqy(hEa^w=59GLn|Yn6oK{CMM<<(-%%>lBqX0wy?9~DlREXP0Z!0xb-%Qvt-WI z(tYp$p6)5@O}l91_RoF4%ISIWn{;kFNvD}CKDsTXTIck)9>Z@vs*%$sil^M<2<|xC zm&9?rWv!>Cx5kc^4{m9OiJiBFE?>IT`ecda9F{7JD^tFiv|OGdyg}moz5nwks_M6V zF|j?_`L8^!{@(X@yWj8qeYg64wXqZ<bAyfri_n#Ik=r-CyPzI#-!y6ZN72{T2CLTY zI8-gvaQ5K0$+y4ry{lSr@2}Xlc;*wO{Cx4d@2<Ej#dhMiro*uteT^0SmnVF;XBPRs zsO~SH$cGcp?;rk_m^1zT4O6RWA9sDx+s5ipmQvv#|3~nB@_Xix`dcgaYTIoyH$Oj< zWkvVGecP<}Wj}bf|L^DY4YeE&EALwyZ7Bb9Hh(HpOqI;<dY(->6)YkQKc^c-)*e~) zGdSS*w1Zoo$2Zi69I&%J>zKWuY{hn64t0g+XC!C;{jAQIQzmy%_5YXHEwR_8I!4WX z_V*Kiv61>7zV(+QBH2C4w71Wxuk_Ee{T#RHch3Ep-=_p`@-uqnTH|NG$)>by%dL#B zhwmrulzx{sVNYYKy8ETvpW%NRls?a8;_*H3%cDBv@~%GTcenHwuDdNF=)Gr=melQa zz3clq;son2@|C@KeR+FjtsP?^qvGCNCW)4$gINc879QOe&Ykzd?rylQit}rGwVm~M z1b8^pJ-UxJalYeX6&4Nh_z>`ZhT5i5mW37jCmc=|o>M%>?FZYlA0Ac{U#A_klyb7Q zXneE5UtFM%$3@+yXEyh#wh4a@$#z|+IwZ`sRAf)oel@?A)|j1{i@Kh+-1>d1^_JX6 z&Xr2Hid|Wz?tLui+j3ZgYr(b*g)0KRS)AU|^}4H^0#_~VjC!?R^{nv2j<$Oe{n<*! zGMx)u7Vq<M`r7g;`Cf#H)YnDZUCLJYJNUaeh-?1d@b<0H(iX4XkB)y{*l*IOy+K#% zZNEF~XZOXLY=LX#f4(@Fu{D5)S9gN;qZ22^xZGQO`MGw>9pQK|A!2KQZ~0>NE&p0_ zqXQQEEqYzQ_000}g-34vZrOC8eXe3|jP&uXLR-C9t1@y`#J(M?UL<Jysyj<*gI-f@ z+$Zl-Q?e3`UEEICGv49aEIYd@;CRW!=E8&9bH&&2^9pWby{dHh!iifkOH>b=^`;3l zMobAw%3Zc~<}nvHy_Q?e+%>_SlT*+5EXm0hd*&|e<YBvPYkmLgLatRWb3Oz)v^;ZF zz8sd6@wH<1R+n?GZQVsOtoJrwS;l|L)W_*~(I&^N<Dq+Y>F;8gY;oSB;GW*E$GKOP z?mL9~3Rf<iYQo6WGvUPYF#c_y&Q@3!EULMzDfMdsf4Ep*fRA*4=Ap*C)ncq};rS|x z-?zJ-c0Jc%7p6PM?fR{HkLy<6FTO6klX)uEjfu<YwQ^@u(}aYN3krT@o=(hS6|Vd; ztv|o1(m*W8)nbyucg6b;EZiifpN)TTxiCVidTpIlll4rMz?4g!-^v%2q;1d>I>gct z>|Wo>qBA?8XXeEs=?M(??nw)>Rt02>@0?L*X|+sd*&=RL!z~Y67b&sv)fYG!NT~Sl zxFGPxd&ir)kEZ*#^Zb40xGArGtA>eC&nu-8o2y6NoEGgm;&CFRy0^vYtBmr(pxVxf z8v<jqRNjP~Hx-f$`ORx9%dzm-g{Qm1ly6MklDn$aaP4K|tCd@?M%u33T(qkA$g3+n z0+s)|1=ZG_kBsSjQBr63Wck9_)D!*nS+YL^WBdNBSm#g|60T&w>bau*s?`(ZuYR5= zf0cWJ{8iJoYe{MEoS3KUc4b!l+8A-7NB7+^DX)7`&N^SZTXz_WKb-gCik?uI?Y#w; zIsdmx#U;g0?<-Xb&s}~+xLZs`<XK+-gO?sU;{L_wkCsf6xD|By(^8AsOE1^`o3*1} zKck-e<iXEtDwDVAUX~W}o-upJwZ--m4z#{K9xI%`LTtK}X{+wlMGvp9OlteSuu8d& z!$vf!_nK!q^RBX^KPr~r>umRA$#<}+`<RuLaOSNOzxhMOXM(LO)E@7QN?fJ7Nl{~y z)4#@#Qn8n#juoDJHZv=#*K~eBq4|<6rh<zPt8OqWs`t4ja<<xMU5M8rN2?;^k6*5x z6|8diS+TJAdu~sk?dz&Z&Kv7|y!OOyjOIJKw<Eda$y{r-zGV+x7nCRTl*TM<UbpVd zgq>XH${SrvUKfNG3MU(g_*gvM6ItkHw5X|P!Ux;ZCG%prg%_&6<>p=Lm3m6NihI|~ zO)K>#W_~MwF?UP7hHK%?DcqesPcs?!PLx{9nqRibPW8%(bs-upQH^UwFWVo9aNHBH zZTX_5!KdQw&Q1!jiZT4Pq*(81Ne6R9-IWRA)-H(}Lf;-eUA5IETWIT<*5BJo-SYd* zZ5EqX9NZXhqLk91_Fr80Mp{SOe~VjgmTgP)R&_D172ImE=<X7qpY@TMm3DpeuQZ93 zdIiXC_vd|Qll_lRd1B{uzp4}YGcL{jA0Fv5=Y>r6#g8jyP1E0(aq66(O~dRznd^0q zhi$&UeEFYANybl`L|-s%-}?4rGUvO3^xhT6WA}Yh`lL6fZ|9sxK}YVkWgN*8t=uSk zcWvnd-Z|f{Wi<;$t#R6MYzD&%hk60G0~~8i)n;hEbWHHNHqlSLDejWuhIu6%ISR5& z(!I%FYFPqV1dRi)SRB*2spc~64cDdQ7PHCoI@hV#3g;@?3g<30y)Aeo!<VTrYVrZI zsL2lUFLm56_*=2Cd9)uWyQFB4aqDVZMti3CLdDB^PS(D=Ibu_9xn|th(tSbivR=K@ zZr|M;Zyn{g`>+<QzbVAn5+1!l^dX1k-5l19TlwGLnsROht7rQDm4}0@*b6?S25*i_ z-gZVXS!{{m^{5F~_#fG5w!YT!;Hpn?4B8=AI^FkddGk%9tNW82gX~irgZ^vv`DotB za17dUvS~?y@vAsH)BCz<r$hE%ZCX+{o7MAgeVNS6pdE*smKfwY2K|_2I5D;Ei0G<v zr)NRdb=8NG4Wzzs|8AIY>TvSQ)4OJ^i;z5&E;k|hl;@wa{AR5Prf@d1P{YW?y9vRf zSC>8bp7o&YL372bRc5=bTJBdp<#Cm3;yE$J$f$kOj3YC)2x@ocvgWLr`1EM^s=ukT zw%>Ss>ip^Yb5n9RtvxVt{#vo$bM4yKA9`49Fn!hZP`%iw`28iGOXHT^I`eGOuU|(? z<@#?gy|qM@<?gbmh;#OTxnJI%oWDVRE7S8k52tePex|2$^7N-EG20UFwf)%h;y^@b zW~S)gDU;{#+v<Gt)6K;(-=<8dm=|*Uy2<*Jr-JtSt)F+_>WY!ctorGHT0)-x`g>&l zVX;4a_f)nYikZRxn`vFrv877KcJ$e8I5~-B)1AAjuMSOg(0sN-$vBn6V)`Qm&$X*V z)J_W=&(v$bde1@f*97BE{-vTDrEO(=vrld?lREJ^bL!JuHTVB;?XB6TyZFfYn0Zdo zsZVXLescKv=%{A@8RNMR(@MWi*Q-Ce?Y8RQJ$qIO?hoI-=feLNt92gl-?y>8;-h@K zzI?^z?|0{`Xh-u+d%xqkT3AJ-v!9Z(NYutZKWyFOGwy7<XZ?KVsZZha{{88_uxbDO zO%G>(Y3HaAunbpB*U#a6BD&zDUuUz*<F=_mDYhs2k59~ettDA*(*5|@-Z_dVg-RqZ zO{s4S==pWAMBhN^_<{>_=Vyl>JiW)O?Rb3SG4WYvCPXoQR9vSf&0oLoal++@<0n_o z|8ZV=->-}Fd-v?fs{hP;@bC9K-~UWnwfOAa$MbFfNi<hSG53c_y2sc4bnLonx20P0 zRxHQT4eAqCF4}8m(zLv19(UI%m4GFV(z|R@?R>WH<EghO)0Ek4zLrakcgC?pp)o85 z$D>1{V!E_N!@{QAH17I)=5eIWTwYi9J9^TG1Ac00-|W4~|K`=ct)<^jnXmtSuD<7O z{dfO+$8<cTHoo3;V|9)C@9ygSbzkrAU-Nt2$$a}Md(40Sd%3Lj&66Lt+wb{*tdN=f zSna9Ey0UZy;d0><J@v*(PaVSIrWUq(?wHPg^2!cg+k0EMK5q()d%Lwmd~#1=g7f7P z-PQ*F6wiI7yO`X{l*3|fb*+kt67FTY!xQ6oXHn%&%bSrB`<%iuj(^y=`D4-VoE@dI zzk+<uSFOx@o}7Ev+kN&gv(38GRrb&S^W`xA{ZPNDu|^LIOTXHDJoTiyKIo;kzx@y9 zuAA8>)<)#E=oB2T6<fSXQ?4;|fyS#a>)@+tJ|>$uh1Umq319Zv9lGUrQdQ$8P0=^3 zt*cKh$SL%B9Vybid9!57?#*{I7n!kciU@0Sy=;{+Vb<k`#lNR1U0qu9_|w_h)7RhF z^K<%|f=`-Z^Z!h|wL?>6*Q2h0jLXmK|J(gM;I030dA!m84eWboOs_m8{bOr^%7o5u z1=U*Gvd_Ylj8kmnW~ZqvK6;^5cFWQq4|-g5=c(DL+b?d+$+0}}aLol#FQ4}8s5Cv* z)ADaJKewNbe!Xws)0dr3;x+T<+`D=2$(h=1OFliBeCd0zS$RTC*`qkE=Js7Ka#54k zPA#bCdzW*@=HA<_v$9r6ZVj<{64Wy%YdS+zxTaA0n!+wG&LxYRwaV<Al?ymm%vmYz z>35R1!fTb*Z7(jZ#Xm%hH0B1!guE!UDk?U5+r^W*Mn_h*{oMw>qc0N*7gjnw+Fi1w z{>zl~ed~Se@7DbPz~0wt9kwOr<*J=gd3&F(JlX$4zuroJcDVV^^)I8Ym2WRIEjQEM zUh|RTmlA(%Aj9G<|5XYS*aH7_Y!No*eI&t>5x4ZjoX>9a(qcGNj?@_!tWDp2QC!0M zMn|!-V`fL*thHCT=j?cvu$zIaBz>myQSAi7z=fOT%p<z)DleZ?zNhZ`-;?pWT-)E7 zru<#zF1Nq@Q}Dm~4-xhLpP%z>vg|QCo+2BPQQ^06vqdS#GY^^Cdp;|#d2A07+uC@y z=`Hg`2eB}%6@2Y;0-vOxIbP$pT*kXj`KQ|_j@h3-s&A_MmA=VNbBV#zyRzx`CTrac zFL)moJvsfX$E81?i$34{WYi}d?z4N(P1$5=v%cQkI|kEU*j8*P|66~sdD{8=e*Y$$ ztg>tDTqAcnFhVx2g_X79RzaV+D`T4RtiK0my}ws`|FC>a{a<$e`{w_A^y`1#e6nBl zyo_ay^y-w2<@XW|!zyn-JbW_cQ*E)|wWi{K702dyTg)$CxqQKaw~u7<uQW0JGv9l@ zXZiCzzjtT<IDLMjWskgFP4uU?PwEf9-!r+!;^(*A_WlRymy}+AJ{WjS<@S=}XU@BC zZOq!G;+SOMk*+@7EJ^j_+6u*@KR22c5B6KFYC0w4w(Y|C4>}8{=gh7Nxz)7(c-@b~ zPcB5~Ga5fG5Z2vjy8h|@gK5<rAI|@KxOx8Uul>)~|F^J=oFaIxW9BTIzsgL1g&g<0 zpQwNI_{qx%w;OXZkDce)wBXK++H;lLVzxX#$bI5lti!h-m6NXTJF;u<<pTD(Ci|bJ zn|<4S{*CePGj^NLzrTC<-H+xaf6cOI_WphI+4`@{(d!Fu7RCL1lhm5K!{O)Y&)n;6 z*W3J3J@w?K(p`<eU$)0SxpUJfI_-4MOx?{-zpvZ!$8p-*`cHQ^r*8Y>H+}j`ah|K^ zLpu(ZonSe~d`aRCr-J<1(#!msKlUoizxW?KV@~4_>mQp8nu~HGXE^KqN#^pt!0>*_ z2A-#9CLiLOvSFD>*utK#%Qo<qZD7{SX-}LcH=FTrO)6Kqqh!5Z>t@0KDy_vcj@f%Z zjEPX1zNElT<izUW8;n2ei+G$iuzx$W)qu&_fWtaL#AHQtR0NCnf?F=79i}gi?qghI z9gxrRs3Rj~zb5zM6#h3ZchdXvTmMG9ceu&%=5X0m%l8`VHuKL)P@LvCr`6=!VY3wn z1FI9nz1%n6>$M7BXv@7k%xk^z|EBEqhrh>a@GnY{NVUBoccijCFrVdBVg0wL$<D@o zFI&y7WZUIGd-XZ(r;&E<0ke<NMr*GvTl;nPnf<3^_Of4`@KSqH@2uLt&m@uxMNfT8 z5S!P_)N9qD+~zxP+EnEi_idk@xH!evRAc!^5!vi-#b4PDIAreLDOOph|BClP)sdcS z_i~N0Tm6FbO~1vZy6M@8eqDX$&rN3b`hW4)t<2{yOZVeFXZAtW<izx8OJ&pUuaHds z^jRY&xkz$G*C~T*wVJ!xCp5N6Zo8dglyofHUCTMl!Tefw!Cl75XK&8joqooF=lt3E zt{LKcw`5K`8}mJ<Pv*e&36j5afB4y6Us5(@s-x_S<6G6_T>ssgVy+Ya=CEbv{`amo z?P3b+=UayNO0IN#6W{!J_y6$ZbN9`kr`b7NFZ}U(o=4Nh-HVzc|BLQ5XWaJSGsD{M z8ZMm$ZVJ^~?<iist^L;3Ox0NR)kE!{MqAzHuAZ^z&4bnFg!_ao)s6gCFxt3n4tU0~ zkE?N|(<bqkEAqUjY`%Tn&E>&2j;+6M3x!^>%VYOu$PF~fPm=50mu}y(Jo&-5efLV( zZ5!Vh#GjMCqP5i}ut;1cJv~qG(_Buz+~ZT~L~q^t$9{2-`r_#ywU~sNOwFbTu4b0x zH8;|C%PcA`Q7|;Mw3zI;L%QD7!q5zPQ0r_=cJS>Jm;Tk&weFj{BxudEy2@<r&=@B@ z?np5Yk88)}c{n~qCU4$$QtkKa^Oud4qo*xh!?W<!T@md}lgoE6|1I&~o_0Wc=EffG z>5<bb-x{wAIi`AkN7zhr9pRwIH&YH3>?xla!c?2G%;J~EWX<gQ!ml&kq^~O(pGlTE z-*ePrt#P+mUtwSKzKJu77x-^!IcWS&l9`b^sV92N0`t#TuBOZp=Ixdi>{vAagTS@M z$x~ju@MP&z=eIf)B%id(M8!2-+2xroTSVLcp9k2cbWZ<jC(NTF6S%E}`BYQmbocc9 z1sv}cmWF0rtvGr(dry-OQ+>?K`X7zQS`IV^eBsKPw4hP_j>jWCV@IJylIBO89yw;e z@~~=cacXKQRGD$MMRjYk+M$DNOuNMR_Ut+A;Xij_;lqR88S^~d<`_B{v0pvdFe#h! zVWBgRt%&MJzFM6;mjn)Gr-w{kle(5HJ}0GA(H`EGSahM^q~a4_?V3Xc8jkf*H!fID z_H_T`<n(fZ{KEogx6cNvlbU{6Bs9OMXq09>c)^`>&!h`$geK)(h%Dl1)$nTSKh82` zk)`8#ui*3y-%N?HqJ}dLpG_Phn|Qx)WD5t+(`1jX)bOhOAT%>gsO_AAs_%`Ynb&#_ z98Fm!JB5D+<D5C|)>9={mbA>9IHA$F{-Duf&T<|%6SXhG)7~*~vaOX;exd6j>0Ecn zK=IDS2oJ^^(z}djcD`UM)0u1{*0zbOe@FB7Nay5*mdABIGTfW{p@jX2mF%qr<>?%g zdA60R1vJi^+g?}jypTOeO58n<*`<>2n}fhjiCNbtS+Qjl&7Jt{L8D9SPlfedlbKzG zyy_<`o}^O9*4V0Yyh-^H--qM999atUpH14s=YK~)W989XA12vc&;G<`q4QJZBGZSL zOBW_MuMw%-%(`GvH20+AEf)@Zynphrg2ifQ$UHY8^Gt!>6XvR|YFixRj_x^mV)<0F z#^%Kl3=>a$HWZ0kzTki=uY&*e7AqgAi=B^zC6W~+>zkE&%Ow2G8#r{FHhNvik+cyI zJ}RT}YsQ21R~|7rtl)KQ(`l3zEO8HXyY$4v&c!I}!Ge_73q>66avjfEyxc#kve>zp zyKX+7y_{Jo^V_*eMw+`U<sE$TZSGAB*fH58`%uqyog3Xua*S>T(n^vyJ5@d$V3B%w zg(qscn`5H@SG~B%4F=9la?07+?ibnZ&aF|KHZRZC)vn9UVB?9pf0p)t%fg?yH@{Ar z_TKN^@!}N%{g;`_pG?)UK36Xpcdkk<;V`q5@1CSrAEj>n){p<keWkDa=99Xrz%xdh z#ChW`#0RiGd3p3*ip}xQYurD3h*ZU}P5W!5dw1%zo=Z<|KmM3fZ^x~zG*9{Eh3Ol_ z*LRt2^eTRL!0TgZSet5?Z`4$8tFo0LQQH^$*u?s7HVU21#IxS}Y7*a5tKbc1MHU_0 z9dKbyYtt(q$1sgGn!%>p#!H-zE3WRmo|2&(b!21iqmEq`x@m@Mj9a;mJ@)SL`!q{s z{l=HCW;JA5e>U33=Ckty<L&wvabe}Ex!Lbhuaq0yPf}YuIa27G@1cE9y+v;>;hO#H zMvB+<7n|3eP48WI^8G8jY_U~^S{pqc?MxA!?o!wr_Hm8z>s_I5f=WZ1HfcNFXUfjE z3ckSq!6^Eb>cZ>lpDVxGCgra7Vsh+aP<`YTsVq^$)cBoO?10q`v)KJsu?KIgs%OoS z-0;!MY|^#4p4a~<C0S0|*1M!O{n9$OsFJ9(Bmqye&w__T43EB6n)h`Ahsnv~w-Yi_ zeeLwJKCL`@rLsizpsz6ZL95LxcKY>%mp<UW7@4Lx?X$S2N8+We7vm0<FN@ti{iTS~ z>TioujI{hzXIAVo(|_l*jrD+pyY?l|drpq^<;yOpHNW;*Xn9bet9<E#i0ucqE()1B zMJsieTJ!0rmvlmsWirn0TeF%wte?62OYn*(&8sqH1!t9}1s1a%mzwK%dL2vjCFO;_ z>0G}Up9N@&EzR*=Qswl5eXX)#&a`(CPRpj4N|~=UbuwS4yo|SY-82@?;Ar<bIa?Y6 z=W?D(<F1#uJ=3YUNh@mdu~M#mvw4%*rsk{=UUqqvu20v}V_Q2evz?kz6MAIhRE}Kf z>HM#)E^jiee%TtlOQpgq&Bcq!)r+Y$JLRp_=Caaj%LKLNm8-tE$$Tbda`sJ=-BWzI z!#iv2G7l`bv&%f7{{2hu=|%a`VzIU<zi(}lDD_yQntjTlUS+bZr+3(ChdKE{n^Kk; zJKp7pKUtH`^^P&Ei?jB}8L9PJv9qsxpS&IRH)M*=(T96lo8I|2ZVf1ytGVTj(}#5; zN0>M02WzP&J4x?zJN~--v8?&o(>`6|C-uD#Pv5jH(0I?EwrOF@Ma(ZZMR?sg&)<Fe zVM6++t?o~z2-x5BG5%jK{JitiyDbuD)Gw#AH(!1f{Ox){-Q>FsH%p>oY|s0*e-8Zk zIkd3!=!{(nXDW{A97wT9UQs(^SI_rl4!ixni|c=W`}^nFlv!+9lI&8iYDBHu51R2V zDi?qGTx+Z5mz^Ddx5OA3K35g~lI(4@u=mB{gF94Kthiv%$$u<*>W>bSe>U|WbtKZC zww#N9=6?C))4#5UwcoyeI{o3@r&r&yzs*lyQ7#gE=HK(5pI7X9n6k%whWPn!|Md4g z>eFrwdC4mLKkd!^^NXj|@6|qbTl~sS@#G8t3hwc<+0Ka(``I4(@%7&t6Pd&N-m`B% zu))7I>1I!xL^czLm;l#~8?tBE7oRj`wG*y4@;{sTy5++XrzDyGFE=RZ&J#HJI9m46 zCeD+WKF#O!ylnqpII;UwSd`A&{0nt%1qI&KimOgZe)DYIbW|zdK=^fL%XyyoZ^ar_ zTNd9-YL(Ar(VXJP#oE>OTT6wbYun@vOS1oXY@KquWy5m8Z!e|I-l}Tey6qITY$A_F zh0NPVmU`bG9-1E$*8E>T&)0bI>a_cp8-4e#DqnLc=&iKbg0Q?xxlea4T0Nmv_gUYX z8FeeR`YK5;x)5~z>Ew^yH#M)GXkPcQJ$#}=jaS?Swl7YzWBpF8+S>Y}Wvbenkol@% z1(IPOmtOPw=WDM$DYRtWo5N2uUmmHvB=gv2dby}|(XF?~>g#Jym6V*yoAzHONMQBb zUA2?e$t<p2H)$DXcid-t*-dq+CyE?4>OXh0Q1idAQ1A1H8s^ilo;Yizq!c~;EOm2I z+tVrfYuBru^ozdOwf-D${wjMD=jSIrC2l*$@?N0nR_=KxLxnrxQkGpWv+rG=^>r(+ zc=Cjcv-i0w=Sp8(`)Xm+tNQ3Y=6l||ym%H;@oAa*+85Q=4?A6bu5;<ZnfC25E|(^* zb^N%x=e_sc%RU0-DnDvd9}BxBJo9?Bk1g|7^!I)1W6wK;fB3p@;zIdO^^Z@g**e#3 zD$v)MGHXrS|J4d=zbx-94)kOCGeb9OkK3Boy39{nZ(5!GG8|TG=<i~XR#9EYRc~dy zBPs4wq8!iX%e9UFR1}{%Pkyj%JqzoHeL*w2yAS<TV7lkX!sWe0Ni>AzvfH#JQc0bD zCzY()3|3Z&MJoHw|I?D8<+j9msk6fp*QAd;GZt#UJa<9ODzS5-`_b!5EKikt-`~6< zy`%G??JJ>*CPB@X22W>`@I;Qi%QyHoHn-F(a3r)U^=q{Ysvc)rI*E}}P~%c1)AQfw zST9~&`hFqz!xL;_i<oVcO1><qzP8$h!$#XFOJUOln@>F7IKL;pj$!Fta8cmxni|K0 z8$wtexttC+SS4r)e4MxB-Qqj1k8Wmtu<C+`VMpDhs>zu$6Is;~q}+>D_6yqHGE`$b zq4E3FmwFl9?k{XhR96NHb?FwBMcpy+s-Ek2_Q5T4iT6sH%nla?xp)|syfk2&JI!E= z)*{ZV=R9Bcv!5+uDS0;~?!p$0o6g1$S_PM+Ylv1Y6P6QcJkb)s{-rD2&FybeYnV#9 zro^>CC8uA!pO@xV-CB6aWO3cefP%JyR=v)QIr;%>PQI$&!_Us8q_S0#tN7r}=H`S` zBC{;`J<b1Ga0tdZrl&|Xn%-u6znw`#W!00rS6I|`C@=-o2T3M&R0qvWpOZ9|anTCZ zj2^zJF9bGd>|C^PiAm8k4+Cy>u_gUppO=_02WP4_KUyG=`Z9o1WQDN9WR)d0PK`lj zj%N<8?T~ohbfV=!edA8Hy+_l<Peh9qdX%i(zd*oiGk4YJ(;gERF}&>gFgJ-ifUVwt zpI=l{_4lnWL-)*XaDD8{W2p9M&KBliSMhhz!n<6~^B%OZ$}76IuU~)B;%~M`i-k9C z{^A>>U88x=egBcEF<f=$D(7&X&3)-5=BX+m@O(MP+{C_z83Ns_C-T<6W>h!%y29|B zamfCbxgU<Tn{Sa5nDxR$dTz!dIS18=8xnOGvQB?JT`7HT9V@3#gshO|k6GL)oZJ%J zIs&D$_H(GuTT#DkM*rmJBKocp2WEB~PcqYLICoicni#+6oAo|lq+J^xYw|VLZ?NRP zINxW6Sneh^#&+G=N$kS@)`9GY>yz6zX|DM)qlfGCs;7>NOD1r2^3?7)<R7rISL^B$ zchM_e>PL2PDcYO-bZEWem2V)KSt-F+nk9Pq-v<tH#kFjU5;Yo6{+=ZCDXeH$hlWQ( zxT4NQDUMzP!OP{#7N>{0a7d}$<cwN*SBU>~bNNJ(hbcl<M>mM9(~Hx*{=m@Y=*@br zB>8Juj<0t$cd^`b>)JP^ODTmRjpK^Wj?SryK^$C3shs=mCC`7J{QGm|ire?zT{PaC z@bg?kSj+bG_k4c#@Aq3+*hu!I&&hr3<2L=u*C)4g;_mE|jrTotyzlkH9J{~Ya()*T z#o3&%pBpE3`QeXWH*cR#vXMWx-<Ey)?%jcf-u3b_H%?D){2XVvdj{Y8fOp3iCx$q_ zn|tx$+&?<=qN4AHMafRiKd;vzWpsT`)XTc=>Z$V`*7cWMV43>j?(C$BT4C$l`ki*t zap&?E6p3cMy-?nv`)Qf3AfNTcMsvMT`}%IKvWkti`{YC=Pk(oB&i)mqyCZGEzuXXq zMT-ws7-`qlr#-FjTl?p`(b<Woo~OxPy8ZXziUrNyMzyicQQeldzuQ*o^ISdX6utD( z_Ipp(9}}PKEup-Ai)(8vpTeP*eKtqWH~xJ2<ZwmDJ=bTp|L1X>jrjTW!I!tkF9!*2 zWR1Af&vtovgZCZz)rVX=j~_U?b#d!Xttf$6+g?0YU(Vb!=e5|D`WayhUc6^m>f0E) zW{K?)*03pe7_@bH%v!r++q-Yb=&8@|^SdXf+xUA*L11=)VSi(H>DmIpHC*BcIrK_0 z=K4MQm#|}tW&x|-E;jMqj4@FXIb7oV`NV%R?3hzi^Zli0i{-pKe8>EI#KVtwr}ZD~ z{<yXxa9@|Wq?odmxX<yVo%I{+Mf7u}Vi<ekS$m$%W?0sGcv;6oUhYY^WQ^9^{V)4+ z`**9wqm!GaR~$-U)qfRulRKNW=b`p%!BsDHZ#{c5>s)7XW_`uCOKXm3rCjptQBC>6 zHX&1Gzh>N}V>h|tzC5eAX?OdkrPaCv-%oznH0|xH<Egu2wmx$0(u$LL*jlH3u)gJw z>nZuZ>1nF#9xR>q?v?MQyKbMPAG@x3eAFhv)9QCk*|r1kPI7#iUlwbWow>d;=GN`f z*rt=0c8S#eU9?Xx_vid6f^CMU<+nT4hA#}|nHeROW9Hes|8!cg&eF$u+7X*(Cue>? ztG~atBKTnGmG_euWavtp^`B}ht^T+qOiY`lerJc$uT`ufFQvM6{Oa^Pytl;a;E7G_ z4_Elk)aF=~dMs`7nH{YMm)$VrojT>Wy5SG6?=#l1mYzQq8-44-{BzHCn={Xt{hYn| zQ{0TFB6j=l-?z4{+E`ujW7_7@2|wyR5~hin`%PmoJaB}|;o6zqD;6BNbjZ8KgR!CI zzC%dj<;DAx>Nl1M%v;7Z+4eO1;@z_y>uh)Im3=b(XolU1|9T(xUwrWGPtk<)ZPzpA z^S}GNdv;=-x%8!}&&xkdJDFN%xG?bcPrrS$_n-Ryx%rR5e^dKY^{4wkPyQ49&+@;m z{FCQDUF&9w{|v30d;iJdnmPBM)<3&kGwuB6-+#RSh5s}CKkfhAdd+&h1(Tn9Gpy6t zzS{7mg!kE5o6>y44AoXke17s^`u6qb54?X;yx8z7bI(b!WhrmVLe`w@JCy8ckQhD7 z>`uwqzO1W#+Yf*It0UR=L-g_^qy2m3&$gE@&bNHlZNAw)kNxxPJwHCz{YW*?IwtOF zr@PMW==Ga_f3BJFd~uT5;nN2-_Aje1Hc$|hOFMj9QCGJ7GUtos`<h>te7ZhmnRNbn z^#wBT^v=64ew4MZqGN8CgwN-~LRr5XXWW`^`qtUY)iHV+Xzo)|n%w`m&Sa-t9FN;$ z&bGVv&h8hqce)-}=cTOnc+>HOn#g;H7(V}gSz*>*$MpO2%Lj{!#FtvghcIqS`fxUE zR(<p4@7BlFQ{NQ%&sx9c>cww?rCW02Gw*oKTJ1c`yPo5~?Y61U3QJ37GlhpukCMza z*IXPek@II}-}P|ub2pezE#g-{Uj1G?bZ@2Cfg4+$ZrQDx;AWD&y4$Bz+@aXFq43M? zQ}%KOxm;_Qj$P}@*zGBJ_fSIeffsBCY!>KM{jK_6|M+62W?y~Kfi<C*z6DO*lD<|j zjn%;Gq|u=as{n;N{VYDSnZg-@S1)?27FxpH+{>6O&2V|^4?*w3vTyu#|7(A<ewuSo zZ^fE3<wx)I>8ky;P+&A@%T_9}s{C8_zMx?HjOX@F$GLa5^rfupG2O-_`zrWn+H&m+ z5B(UdON{z1=huHJRID^E%h4{oQNH2wveT>qmtKAp@_v}_-od-!^05Wn33IX-dTz@Y z<nw)xul@D(Xxzv92ai|Znw!zk^`|hPa9aC~pnuy=IR_-4HClL2sLOO=+pmx^xm;1x zFWXDDO<8FF<RNp`5j8>g4aI3Qj@Ta;na2{Wy&^LFg^+%gtbQ7E{hl?G-)+e}A~oTW z`O03)?)_35b(UM?>o4E4#^w0;{c^IkPDQnMB7A1b$4YK~Y8IGz_>|Y-Q?n#4$FJ_Z zy#9nv*2?P(rS5TG{czF1p3}A9<5wov!aDc;9|TWz6^Nhi+AWy1KH}n^SReJDDKSqz z?^pZzCoO8hhq-tBKWmFv{ao{-KBy<qtUut;kz23M|4wpy8lVyMPvcp46YKZJvZXOA zvr3qMpPcnK<ZRuA_m>)WeacOKe)-+*{)F$Zf)}&qhI4PK*J|^=ta&@ZYN3Yv0;?I5 zSh8KumQ`IXTWB{&JpTF530)5&1?yauO?0}Cy?UGyRb6R0=WZ|C{b}!moxh%T2{o;k zo^j}kPh$463+tX*Uw(J*_1yc9mkV4^;QGF0{>+%i&pD^YbQNEF5R`XSM?1dfMfF9; zA3-Iv_%B^wnE3DhpZ-5)^3NyBEUme1zHpV2SwPKO=J_k?9|TWTSoSmMy?Z_%zn#p4 z)21u$+K2KuckX+~acPR-88eNTEBjuX9$WeKK}cYIZtA+(p<3<l@5$utj}E)#|NWxv zU$)ex0fqkp-MRLC);zNA&5xg(0v7JqJ=R*as{fttt~F6sf8#zXZT*nbY_n+Qzhmy) zKF$-hkEC_BuF&;aw9jCrm&uX8MTu5*`@g@8{gJc%-PAc7)qneBOWAK%-ufY`dGq4^ z#?Q0!BBSTMTXwkq_NvRF&o?!`%Hr-^p|5f(Jmk6deTy=?x_>SYKi@FP=(7*CasJ-c zy7$b<7waY09^ZV6scA)MV05aSbjI3kTqm~X%877KUCS8lnRdSKyxkwMX>-+%cCu^w zmB-YtHcVY;XXPxp#l2o2)wg=nHmN^>zRKFgFW1>b-VUAkHC8nGV|`fk*K2>9&$GXe zlbQEM#%#&NIVa!kx;$6d^IC)Xj|>ZMjTdiriI?_X{T6&LeC`&j*0Wh}?w9k$&!4ON z`p@J?WjicRZ=B`(;s5^l)E!r1?N59BZ<(JOwRL9<&(Wy4Z_O>QUO2Vza;L=g4Ur0` z^Dq2oo*^R5#+90v0$s$JIyp9(gUP^Ty8c0C2`2+fQ%f_8B(oID#1!MSBx4gJlcXfG zL_;%U6VoKqBnvwmLMo<r9%PnhHZ(AuzWN}uTD_$S^3b~JjmiL#+oH!m+Szt+?9hI+ z?@`;11uGhMXzzHyq_v1ci%a9(ZUwC_E+#F74sNb4?sva$y*s@+<WrpL)IA}pq5r0? zdNN-;c%RBtFD*^uzqaN7eqLF5|IWLYFL!?bGIyiS>0jT@ZnNo|+T$75y*B#FYeVsR z^M`DAx@I5U6cs%!H}c>#)la4;*6uxi@7Yz^9lkn0Pxc7L?e*R#UH(Y!Oma`J+?T^? zFZ$0KGDIgRuq7I7I}&z7>UKhOPW#)9%w<OeHogfeo;!EPIrf;Vb~+0DN6+10-JN9q zrq6bR`nN;(Zm|DOvgZ+A{j>OU-`~pP?t88?-s!Jr|0po+f#5Oz1C1)F6(aq~J0l$X zEI%up`_oco&}O_$$bSNl;Ogf6lJW<Cr0<F94SnK#^i|c-9?4@8?Nt_i2Rt_ZN}FY< zEctno@s$qI!rM<4pNJ23?-c#)J-J`4UODVg`s5zP%JY(0p2w0*jwP&#=&qXm@v+2z z$2Dg<)jE}b)@y|2ZSy=fxkf0vy313opiWTxe)+sk6)R@-!1;pN{xd2|jXaHQ+>Kb5 zKQh_KmojtWWy#AiYc{=9>s03ySiS0k3a5(h5v$whRg68Dj%M+gob;KLurcrNWtGhy zQC(l3<g3l}U9{O&@cD!*k1HqbwBUc<{q^5$OS4YHT~=F|O*-nozWzTeTztX{ugH#W z16J|wua@_Ed{R?5z6!;3W$xg)eDv4n{bzsh94i-k{hU)R(oab1TD{fG6xPml>!;4p zeDv||!_YmewDY!lOvrziI`Q?Z(_$|lq<@krifztz*;Q}yGwPGUtC$$~B2N8o9s%Q^ z---1TPu!pF^82B~tKJ=)=Jnk@oTka!4AM57Xfaj0_)k*L=%_jW_K7@#o%Pw1-l_;H zeXh}VvR<`r$6TeA=Y95d+f1r5f7Y3zXSDv==T{yR-&Ctzth4q?S^eHmY{H9Qx4M73 ze5y-~yBa5=8#E_<lG7xKiLYeUF0K>R4k|vPa%=Y^mvg_bB@1@0+p$`u-9;*^{><w3 zlch)R9#AWKTX8g^$$ewU63vS;t8EK5o%mZnW67Kpsjr4t;>u;THv~Od`Tky*q20V+ zOHQ;uR=X}YL*dij_i<MzoDuk$xYyHf;u)czbKhr1cpF7O`JC@lG)pD$iGI9KQCmvi z3I9Sh%h$erJN8~#4Nb(qWNh5u*7DWgV$IwB#Y!yMKy0fvpTpdxrB@zWh_olGWZl1} zCwuhA=Q+>KPU^kNxYPdoBZJ%#XPHvQ*PeX^bIm`BJ&*LVm0SO)^q6_T{e!=MaLj+K zU2|H}t@v4~OzFfb+e(vTi|Wd1xiX&5Z<uWHO6Y4!Uv10z3kR?N;CozP<8JyWbyBAV zXZ=^3-~uhZ!zIV!7oIyXbqAOE1GhUzmhWz;YOPA&l~n$wbFU!}dy)m;(-qlQ4jTw9 zf8Z3;<88pZ)%bPPZa*X5<;gZ`4}5%%{Os9(aO&$dCl1?2G*oXCIUN{&-}e>QnnRN# zdQB_1vIC!A(tX9Yr{$M!%we@XeO006maok29o+q-zG|NT583%gofK#Gb4%3sR|)DJ zTRP*|8P8?=4sG;Rxn*B^@7}TM9|H3iHRpe@t$VV9eNLj5-{F@t+JCP2US^tBc*Xh3 z&Dp)_0oI;8aZhe^?wI_sUvjfdxPhAF*U4&+VszB5%YGGpWp+c(KSA_b!9Teh+@;5V zPuZov&N+6ubb)ex-Z9-BQy0&BSUl-%%t;@eCwrMb7`zgFCH#=JRI=_-#NV{i)Ld20 zL(^95=azX@c7rjvkn=q_g8Ck<n0_U2#oi3#JlDO?=I)UGZ23wwE5EYA|AXZ#%liw? z^~xN3ofFx;bBCPyqqIB6On)!7lilLamcY$(Bq67jyFl^PzIU?qrChJ($hR~b%Cs-| z7c}Ew;QNovbt>26CmI)uojc|-r+Jt1)%+~EbH|zPbpI}}7kk9m_p5Ig2Y<1x<%;u1 zI4vZXFZ#yyUWwnscz@9H1$EXlD`rhhHk3*(lv$ruf8lwN%&S>e9qj@0OJp|+KmN*j zk2O2+{!^aEzY`^1<sa~sd0OAT`2%0p`%8T#^74;@YZ}jf5Z!l_-(q$-&!MmzV%8s4 z*_)|z9t@adX~91^!1|sO&jFDuQ-fN5#ZGw;sB<`ZMYZT#=|+j3wHsxpJuY06vZrs& zvwtOr-`x<dejIfs^^X+Kp@f+3ojn)d?d7>_$h=iPD?Or7yHGUi`da6^f-mp6)qj^; zyFu{lN?YdFf#s%~3;15eUiF{b!fn7B9QfVimi)4ZB{|Kx8)c6rGrjtqrC!tfJ|Mm6 zTW+lNul$}~EAR3|dzpq^udD;y9~8)RE;itDe=KojZo|5!k~0UMuJE5Tbw=mvfcFI) zWlARx<=kmz-^juLQ1DoL(DVdNxx-vGoy+StFqHnkFmspSSIc$P%cU#C<sT$p`MYr4 z)9EX0SD9`*`t63GbHHzh@GCc^yXJ1>ekJE$J@;SoV%xCt+TVfmYj<7#=dqXZYjDY7 zxjna<cZq*<e9KT=$enjwcEx$kyV38C)x7EcTPVQicsF*=;}vl$tS?#Fod3%2R_n%- z?4$Ln>s@{Gto{QNcd%}M$alqhy>`@k_j19=8NHS(l1tj<`*$gAIsR(Dr=bPY*Up{H z#uxdwcDE(g%QP?_<=gq#&avuG#yo|i6~d=Cvh*iuPJ0-+=0I|VjQ@hNZC+~*O|IZ7 zO<#JxJIbcFw}MYPp#J8|zxx}$uGn8vB3~i7{*maO#_J!Y>dii$F0p&1zPG(Rpgi^a zM@2igyDwj^d(67e>8;uOBcE3orx(xo%vUYi{_k<YbJ=+TeEy8>&!-&DyPVi&y+)^f z>eCCkGHG)U-ztpI<SV|BxX$WKO?&?Rg|jXH+$wz$&bPl`Cavl4y~7W$FFI^fcthIa zPg=>D|Bb)&?}S{b|Msk_UiRN&Yk4K3n0DS0*|?WhMLpReyI#)_y8hzmx{Z;~_;duU z^{)5^@y$qCcw^<{J1W_o*=3Wn&+U&Xw%(oBQFJ#V<(R%u_2&Jv-}o7McHO8f%?tW) zRi*prz3?Y$shMh?qPzFp^VRB#)!uLZQ)uJrf6vvf^80KGc{9s?r{`PF$xG@xYk&35 zp2KZ&(rDxBV>?f_rc7QVy!#(}@bd23x9P$8BD*u^tu#JTXL0>X^q#M=!TRFABNwjR zUj6#~vN*+W^5<q$O}|n9#rUh&#{Iw2LiTMxXI{Fjf=S6|@Ac^LnN?FOoc7Py6<{;B z_WFh>8)YfqSe<zu^}*?#=_OlNdhh)j?;AT;cis)vWp>ZjzMpO7ZsWP#CsuLZ6SI5P zk3G+sob-%Qp4VJo{&^A0<ah!9yZOF*!)$oBF5CBR?fxCg`hG^8|Eib$pY+n+@7MfG rk!ucj-{=VcFsq{O>0HbI?2p{`#!SyT%`C@lVPRp)rK;-c@5TiHe!Jyg delta 207751 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⋙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%0Ay{Dz({OpYU+@jfSV+*s>e*lbWaAIyE)W;oHxr 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�bJ7FhA5x&G&zsn1@B{ouQB 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 -- GitLab