From 4549c5283e1f50c12f3a9db9bda75d8b1fad25a1 Mon Sep 17 00:00:00 2001 From: "Documenter.jl" Date: Fri, 12 Jan 2024 21:26:44 +0000 Subject: [PATCH] build based on f9b0046 --- dev/.documenter-siteinfo.json | 2 +- dev/about/index.html | 2 +- dev/generated_examples/Brusselator/index.html | 2 +- dev/generated_examples/Building/index.html | 2 +- .../DuffingOscillator/index.html | 2 +- dev/generated_examples/EMBrake/index.html | 2 +- dev/generated_examples/ISS/index.html | 2 +- dev/generated_examples/LaubLoomis/index.html | 2 +- dev/generated_examples/Lorenz/index.html | 2 +- .../LotkaVolterra/index.html | 2 +- dev/generated_examples/OpAmp.ipynb | 8 - dev/generated_examples/OpAmp/index.html | 2 +- dev/generated_examples/Platoon/index.html | 2 +- .../ProductionDestruction/index.html | 2 +- dev/generated_examples/Quadrotor/index.html | 2 +- dev/generated_examples/SEIR/index.html | 2 +- dev/generated_examples/Spacecraft/index.html | 2 +- .../SquareWaveOscillator/index.html | 2 +- dev/generated_examples/TransmissionLine.ipynb | 460 ++++++++-------- .../{7712e0e3.svg => b8ea2e8e.svg} | 230 ++++---- .../TransmissionLine/index.html | 4 +- dev/generated_examples/VanDerPol/index.html | 2 +- dev/index.html | 2 +- dev/lib/algorithms/A20/index.html | 2 +- dev/lib/algorithms/ASB07/index.html | 2 +- dev/lib/algorithms/BFFPSV18/index.html | 2 +- dev/lib/algorithms/BOX/index.html | 2 +- dev/lib/algorithms/CARLIN/index.html | 6 +- dev/lib/algorithms/GLGM06/index.html | 2 +- dev/lib/algorithms/INT/index.html | 2 +- dev/lib/algorithms/LGG09/index.html | 4 +- dev/lib/algorithms/ORBIT/index.html | 2 +- dev/lib/algorithms/QINT/index.html | 2 +- dev/lib/algorithms/TMJets/index.html | 2 +- dev/lib/algorithms/VREP/index.html | 2 +- dev/lib/clustering/index.html | 2 +- dev/lib/discretize/index.html | 8 +- dev/lib/distributed/index.html | 4 +- dev/lib/flowpipes/index.html | 2 +- dev/lib/internals/index.html | 2 +- dev/lib/operations/index.html | 2 +- dev/lib/projections/index.html | 2 +- dev/lib/reachsets/index.html | 4 +- dev/lib/solutions/index.html | 2 +- dev/lib/systems/index.html | 8 +- dev/man/algorithms/A20/index.html | 2 +- dev/man/algorithms/ASB07/index.html | 2 +- dev/man/algorithms/BFFPSV18/index.html | 2 +- dev/man/algorithms/BOX/index.html | 2 +- dev/man/algorithms/GLGM06/index.html | 2 +- dev/man/algorithms/INT/index.html | 2 +- dev/man/algorithms/LGG09/index.html | 2 +- dev/man/algorithms/ORBIT/index.html | 2 +- dev/man/algorithms/VREP/index.html | 2 +- dev/man/benchmarks/benchmarks/index.html | 2 +- .../benchmarks/filtered_oscillator/index.html | 2 +- dev/man/benchmarks/model_library/index.html | 2 +- dev/man/benchmarks/repeatability/index.html | 2 +- dev/man/examples_overview/index.html | 2 +- dev/man/faq/807473fd.png | Bin 269965 -> 0 bytes dev/man/faq/ca6f9925.png | Bin 0 -> 277763 bytes dev/man/faq/index.html | 4 +- dev/man/systems/index.html | 2 +- dev/references/index.html | 2 +- .../dense_time/{483b091b.svg => ecc66c19.svg} | 492 +++++++++--------- .../linear_methods/dense_time/index.html | 4 +- .../{4434c712.svg => 5d2983ee.svg} | 202 +++---- .../linear_methods/discrete_time/index.html | 4 +- .../{1483cb33.svg => 1261b965.svg} | 458 ++++++++-------- .../{50fd9efb.svg => 474e8f67.svg} | 462 ++++++++-------- .../{9f6fe39b.svg => 72af323b.svg} | 484 ++++++++--------- .../{990d3251.svg => 7be5f6af.svg} | 476 ++++++++--------- .../linear_methods/introduction/index.html | 8 +- .../set_representations/distances/index.html | 2 +- .../polyhedral_computations/index.html | 2 +- .../zonotopes/{54b72cc4.svg => 612d57dc.svg} | 90 ++-- .../set_representations/zonotopes/index.html | 2 +- .../domain_splitting/index.html | 2 +- .../taylor_methods/gotchas/index.html | 2 +- .../taylor_methods/introduction/index.html | 2 +- .../taylor_model_reachsets/index.html | 2 +- 81 files changed, 1764 insertions(+), 1772 deletions(-) rename dev/generated_examples/TransmissionLine/{7712e0e3.svg => b8ea2e8e.svg} (77%) delete mode 100644 dev/man/faq/807473fd.png create mode 100644 dev/man/faq/ca6f9925.png rename dev/tutorials/linear_methods/dense_time/{483b091b.svg => ecc66c19.svg} (95%) rename dev/tutorials/linear_methods/discrete_time/{4434c712.svg => 5d2983ee.svg} (76%) rename dev/tutorials/linear_methods/introduction/{1483cb33.svg => 1261b965.svg} (73%) rename dev/tutorials/linear_methods/introduction/{50fd9efb.svg => 474e8f67.svg} (74%) rename dev/tutorials/linear_methods/introduction/{9f6fe39b.svg => 72af323b.svg} (75%) rename dev/tutorials/linear_methods/introduction/{990d3251.svg => 7be5f6af.svg} (75%) rename dev/tutorials/set_representations/zonotopes/{54b72cc4.svg => 612d57dc.svg} (79%) diff --git a/dev/.documenter-siteinfo.json b/dev/.documenter-siteinfo.json index f8d119811..a745594fb 100644 --- a/dev/.documenter-siteinfo.json +++ b/dev/.documenter-siteinfo.json @@ -1 +1 @@ -{"documenter":{"julia_version":"1.10.0","generation_timestamp":"2024-01-12T15:46:17","documenter_version":"1.2.1"}} \ No newline at end of file +{"documenter":{"julia_version":"1.10.0","generation_timestamp":"2024-01-12T21:26:36","documenter_version":"1.2.1"}} \ No newline at end of file diff --git a/dev/about/index.html b/dev/about/index.html index 5a7ca6615..14fc0f4ec 100644 --- a/dev/about/index.html +++ b/dev/about/index.html @@ -1,4 +1,4 @@ How to contribute · ReachabilityAnalysis.jl

About

This page contains some general information about this project, and recommendations about contributing.

Contributing

If you like this package, consider contributing! We welcome bug reports, examples that can be added to the documentation, or new feature proposals.

Below we list some conventions that we follow when contributing to this package. For specific guidelines on documentation see the JuliaReach Developer's Documentation.

Branches

Each pull request (PR) should be pushed in a new branch with the name of the author followed by a descriptive name, e.g. mforets/my_feature. If the branch is associated to a previous discussion in an issue, we use the name of the issue for easier lookup, e.g. mforets/7.

Unit testing and continuous integration (CI)

This project is synchronized with GitHub Actions such that each PR gets tested before merging (and the build is automatically triggered after each new commit). For the maintainability of this project, it is important to make all unit tests pass.

To run the unit tests locally, you can do:

julia> using Pkg
 
-julia> Pkg.test("ReachabilityAnalysis")

We also advise adding new unit tests when adding new features to ensure long-term support of your contributions.

Contributing to the documentation

This documentation is written in Markdown, and it relies on Documenter.jl to produce the HTML layout. To build the documentation, run make.jl:

$ julia --color=yes docs/make.jl
+julia> Pkg.test("ReachabilityAnalysis")

We also advise adding new unit tests when adding new features to ensure long-term support of your contributions.

Contributing to the documentation

This documentation is written in Markdown, and it relies on Documenter.jl to produce the HTML layout. To build the documentation, run make.jl:

$ julia --color=yes docs/make.jl
diff --git a/dev/generated_examples/Brusselator/index.html b/dev/generated_examples/Brusselator/index.html index c904aa060..c68939c12 100644 --- a/dev/generated_examples/Brusselator/index.html +++ b/dev/generated_examples/Brusselator/index.html @@ -32,4 +32,4 @@ plot!(sol_1; vars=(1, 2), lw=0.2, color=:red, lab="r = 0.1", alpha=0.4) -plot!(sol_01; vars=(1, 2), lw=0.2, color=:blue, lab="r = 0.01")Example block output

The volume at time $T = 9.0$ can be obtained by evaluating the flowpipe and computing the volume of the hyperrectangular overapproximation:

vol_01 = volume(set(overapproximate(sol_01(9.0), Hyperrectangle)))
1.7054828078460202e-5
vol_1 = volume(set(overapproximate(sol_1(9.0), Hyperrectangle)))
0.0009159502603777963

References

+plot!(sol_01; vars=(1, 2), lw=0.2, color=:blue, lab="r = 0.01")Example block output

The volume at time $T = 9.0$ can be obtained by evaluating the flowpipe and computing the volume of the hyperrectangular overapproximation:

vol_01 = volume(set(overapproximate(sol_01(9.0), Hyperrectangle)))
1.7054828078460202e-5
vol_1 = volume(set(overapproximate(sol_1(9.0), Hyperrectangle)))
0.0009159502603777963

References

diff --git a/dev/generated_examples/Building/index.html b/dev/generated_examples/Building/index.html index 5383b6689..2768c9c66 100644 --- a/dev/generated_examples/Building/index.html +++ b/dev/generated_examples/Building/index.html @@ -55,4 +55,4 @@ alg=LGG09(; δ=0.01, vars=(25), n=49, approx_model=NoBloating())) fig = plot(sol_BLDC01_discrete; vars=(0, 25), linecolor=:blue, color=:blue, alpha=0.8, lw=1.0, - xlab="t", ylab="x25")Example block output

Safety properties

ρ(x25e, sol_BLDC01_discrete)
0.004412266117562392
ρ(x25e, sol_BLDC01_discrete) <= 5.1e-3 # BLDC01 - BDS01
true
ρ(x25e, sol_BLDC01_discrete)
0.004412266117562392
ρ(x25e, sol_BLDC01_discrete) <= 4e-3 # BLDC01 - BDU01
false
ρ(x25e, sol_BLDC01_discrete(20.0))
5.582597411711546e-7
ρ(x25e, sol_BLDC01_discrete(20.0)) <= -0.78e-3 # BLDC01 - BDU02
false

References

+ xlab="t", ylab="x25")Example block output

Safety properties

ρ(x25e, sol_BLDC01_discrete)
0.004412266117562392
ρ(x25e, sol_BLDC01_discrete) <= 5.1e-3 # BLDC01 - BDS01
true
ρ(x25e, sol_BLDC01_discrete)
0.004412266117562392
ρ(x25e, sol_BLDC01_discrete) <= 4e-3 # BLDC01 - BDU01
false
ρ(x25e, sol_BLDC01_discrete(20.0))
5.582597411711546e-7
ρ(x25e, sol_BLDC01_discrete(20.0)) <= -0.78e-3 # BLDC01 - BDU02
false

References

diff --git a/dev/generated_examples/DuffingOscillator/index.html b/dev/generated_examples/DuffingOscillator/index.html index 092cf8bdd..54dbde264 100644 --- a/dev/generated_examples/DuffingOscillator/index.html +++ b/dev/generated_examples/DuffingOscillator/index.html @@ -17,4 +17,4 @@ ω = 1.2 T = 2 * pi / ω X0 = Singleton([1.0, 0.0]) ⊕ BallInf(zeros(2), 0.1) -prob = @ivp(x' = duffing!(x), x(0) ∈ X0, dim = 2);

Results

sol = solve(prob; tspan=(0.0, 20 * T), alg=TMJets21a());
fig = plot(sol; vars=(0, 1), xlab="t", ylab="x", lw=0.2, color=:blue)
Example block output
fig = plot(sol; vars=(0, 2), xlab="t", ylab="v", lw=0.2, color=:blue)
Example block output
fig = plot(sol; vars=(1, 2), xlab="x", ylab="v", lw=0.5, color=:red)
Example block output +prob = @ivp(x' = duffing!(x), x(0) ∈ X0, dim = 2);

Results

sol = solve(prob; tspan=(0.0, 20 * T), alg=TMJets21a());
fig = plot(sol; vars=(0, 1), xlab="t", ylab="x", lw=0.2, color=:blue)
Example block output
fig = plot(sol; vars=(0, 2), xlab="t", ylab="v", lw=0.2, color=:blue)
Example block output
fig = plot(sol; vars=(1, 2), xlab="x", ylab="v", lw=0.5, color=:red)
Example block output diff --git a/dev/generated_examples/EMBrake/index.html b/dev/generated_examples/EMBrake/index.html index 526095070..8a5ea2e0b 100644 --- a/dev/generated_examples/EMBrake/index.html +++ b/dev/generated_examples/EMBrake/index.html @@ -110,4 +110,4 @@ # hybrid system with clocked linear dynamics ha = HACLD1(EMbrake, reset_map, Tsample, ζ) return IVP(ha, X₀) -end
embrake_pv_2 (generic function with 1 method)

References

[]:

+end
embrake_pv_2 (generic function with 1 method)

References

[]:

diff --git a/dev/generated_examples/ISS/index.html b/dev/generated_examples/ISS/index.html index c78e92455..3ffb2b15e 100644 --- a/dev/generated_examples/ISS/index.html +++ b/dev/generated_examples/ISS/index.html @@ -53,4 +53,4 @@ xtick=[0, 5, 10, 15, 20.0], ytick=[-0.0002, -0.0001, 0.0, 0.0001, 0.0002], xlims=(0.0, 20.0), ylims=(-0.0002, 0.0002), bottom_margin=6mm, left_margin=2mm, right_margin=4mm, top_margin=3mm) -figExample block output

References

+figExample block output

References

diff --git a/dev/generated_examples/LaubLoomis/index.html b/dev/generated_examples/LaubLoomis/index.html index 54aa1d1a4..3ded81459 100644 --- a/dev/generated_examples/LaubLoomis/index.html +++ b/dev/generated_examples/LaubLoomis/index.html @@ -56,4 +56,4 @@ size=(600, 600)) plot!(fig, x -> x, x -> 4.5, 0.0, 20.0; line=2, color="red", linestyle=:dash, legend=nothing) -plot!(fig, x -> x, x -> 5.0, 0.0, 20.0; line=2, color="red", linestyle=:dash, legend=nothing)Example block output

References

+plot!(fig, x -> x, x -> 5.0, 0.0, 20.0; line=2, color="red", linestyle=:dash, legend=nothing)Example block output

References

diff --git a/dev/generated_examples/Lorenz/index.html b/dev/generated_examples/Lorenz/index.html index e18a5cbe5..2b7559c2f 100644 --- a/dev/generated_examples/Lorenz/index.html +++ b/dev/generated_examples/Lorenz/index.html @@ -21,4 +21,4 @@ solz = overapproximate(sol, Zonotope);
fig = plot(solz; vars=(0, 1), xlab="t", ylab="x")
Example block output

It is apparent by inspection that variable $x(t)$ does not exceed 20.0 in the computed time span:

fig = plot(solz(0.0 .. 1.5); vars=(0, 1), xlab="t", ylab="x", lw=0.0)
 plot!(x -> 20.0; c=:red, xlims=(0.0, 1.5), lab="")
Example block output

We can prove that it is the case by computing the support function of the flowpipe along direction [1.0, 0.0, 0.0]:

ρ([1.0, 0.0, 0.0], solz(0.0 .. 1.5))
19.991791450503634

In a similar fashion, we can compute extremal values of variable $y(t)$:

fig = plot(solz; vars=(0, 2), xlab="t", ylab="y")
Example block output

Since we have computed overapproximations of the exact flowipe, the following quantities are a lower bound on the exact minimum (resp. an upper bound on the exact maximum):

-ρ([0.0, -1.0, 0.0], solz)
 
-ρ([0.0, 1.0, 0.0], solz)
28.05101124282887
fig = plot(solz; vars=(0, 3), xlab="t", ylab="z")
Example block output

Below we plot the flowpipe projected on the (1, 3) plane.

fig = plot(solz; vars=(1, 3))
Example block output +ρ([0.0, 1.0, 0.0], solz)
28.05101124282887
fig = plot(solz; vars=(0, 3), xlab="t", ylab="z")
Example block output

Below we plot the flowpipe projected on the (1, 3) plane.

fig = plot(solz; vars=(1, 3))
Example block output diff --git a/dev/generated_examples/LotkaVolterra/index.html b/dev/generated_examples/LotkaVolterra/index.html index 7c40e411a..6640706a1 100644 --- a/dev/generated_examples/LotkaVolterra/index.html +++ b/dev/generated_examples/LotkaVolterra/index.html @@ -48,4 +48,4 @@ solz = overapproximate(sol, Zonotope) plot!(solz; vars=(1, 2), color=:blue, lw=0.3, lab="eps = 0.01", title="Uncertain u0 and uncertain params", - xlab="u1", ylab="u2")Example block output + xlab="u1", ylab="u2")Example block output diff --git a/dev/generated_examples/OpAmp.ipynb b/dev/generated_examples/OpAmp.ipynb index 7707e318e..fb3d7a44d 100644 --- a/dev/generated_examples/OpAmp.ipynb +++ b/dev/generated_examples/OpAmp.ipynb @@ -304,14 +304,6 @@ }, { "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "WARNING: using Symbolics.infimum in module ReachabilityAnalysis conflicts with an existing identifier.\n", - "WARNING: using Symbolics.supremum in module ReachabilityAnalysis conflicts with an existing identifier.\n" - ] - }, { "output_type": "execute_result", "data": { diff --git a/dev/generated_examples/OpAmp/index.html b/dev/generated_examples/OpAmp/index.html index 3d5ab109f..86a9d46d2 100644 --- a/dev/generated_examples/OpAmp/index.html +++ b/dev/generated_examples/OpAmp/index.html @@ -73,4 +73,4 @@ sol_exp = solve(prob_exp; T=0.1, alg=BOX(; δ=1e-4));
fig = plot(sol_lin; vars=(0, 2), xlab=L"t", ylab=L"e_{in}(t)", title="Linear input w/saturation",
            lw=0.2)
Example block output
fig = plot(sol_exp; vars=(0, 2), xlab=L"t", ylab=L"e_{in}(t)", title="Exponential input", lw=0.2)
Example block output
fig = plot(sol_lin; vars=(0, 1), xlab=L"t", ylab=L"e_{out}(t)", title="Solution for linear input",
            lw=0.2)
Example block output
fig = plot(sol_exp; vars=(0, 1), xlab=L"t", ylab=L"e_{out}(t)",
-           title="Solution for exponential input", lw=0.2)
Example block output

References

+ title="Solution for exponential input", lw=0.2)Example block output

References

diff --git a/dev/generated_examples/Platoon/index.html b/dev/generated_examples/Platoon/index.html index 572f998e1..7987b0411 100644 --- a/dev/generated_examples/Platoon/index.html +++ b/dev/generated_examples/Platoon/index.html @@ -129,4 +129,4 @@ intersection_method=TemplateHullIntersection(octdirs), intersect_source_invariant=false, tspan=(0.0 .. 20.0));

Verifying that the specification holds:

dmin_specification(sol_PLAD01_BND30, 30)
true

Let's check in more detail how close is the flowpipe to the safety conditions:

Minimum of $x_1(t)$:

-ρ(sparsevec([1], [-1.0], 10), sol_PLAD01_BND30)
-29.862721575258067

Minimum of $x_4(t)$:

-ρ(sparsevec([4], [-1.0], 10), sol_PLAD01_BND30)
-26.167902001889445

Minimum of $x_7(t)$:

-ρ(sparsevec([7], [-1.0], 10), sol_PLAD01_BND30)
-12.696657569596857
fig = plot(sol_PLAD01_BND30; vars=(0, 1), xlab=L"t", ylab=L"x_1", title="PLAD01 - BND30", lw=0.1)
-plot!(x -> x, x -> -30.0, 0.0, 20.0; linewidth=2, color="red", linestyle=:dash, leg=nothing)
Example block output

References

[^]:

+plot!(x -> x, x -> -30.0, 0.0, 20.0; linewidth=2, color="red", linestyle=:dash, leg=nothing)Example block output

References

[^]:

diff --git a/dev/generated_examples/ProductionDestruction/index.html b/dev/generated_examples/ProductionDestruction/index.html index 0c577d00a..e0424005e 100644 --- a/dev/generated_examples/ProductionDestruction/index.html +++ b/dev/generated_examples/ProductionDestruction/index.html @@ -79,4 +79,4 @@ du[3] = aux2 du[4] = zero(x) return du -end

With respect to parameter tuning, we have observed that for all three cases a good parameter choice is $n_T = 7$, $n_Q = 1$, and an adaptive absolute tolerance with initial value $10^{-11}$ (resp $10^{-12}$) for $I$ and $I$ and $P$ (resp. $P$). This choice offers a good balance between runtime and precision.

References

+end

With respect to parameter tuning, we have observed that for all three cases a good parameter choice is $n_T = 7$, $n_Q = 1$, and an adaptive absolute tolerance with initial value $10^{-11}$ (resp $10^{-12}$) for $I$ and $I$ and $P$ (resp. $P$). This choice offers a good balance between runtime and precision.

References

diff --git a/dev/generated_examples/Quadrotor/index.html b/dev/generated_examples/Quadrotor/index.html index 2f2f5d033..5e945143a 100644 --- a/dev/generated_examples/Quadrotor/index.html +++ b/dev/generated_examples/Quadrotor/index.html @@ -201,4 +201,4 @@ plot!(solz1; vars=(0, 3), linecolor="yellow", color=:yellow, alpha=0.8, xlab="t", ylab="x3", xtick=[0.0, 1.0, 2.0, 3.0, 4.0, 5.0], ytick=[-1.0, -0.5, 0.0, 0.5, 1.0, 1.5], - xlims=(0.0, 5.0), ylims=(-1.0, 1.5))Example block output

References

+ xlims=(0.0, 5.0), ylims=(-1.0, 1.5))Example block output

References

diff --git a/dev/generated_examples/SEIR/index.html b/dev/generated_examples/SEIR/index.html index e5f0c989e..aef03bd0d 100644 --- a/dev/generated_examples/SEIR/index.html +++ b/dev/generated_examples/SEIR/index.html @@ -42,4 +42,4 @@ plot!(fig, solz; vars=(0, 2), color=:green, lw=0.0, lab="E") plot!(fig, solz; vars=(0, 3), color=:red, lw=0.0, lab="I") plot!(solz; vars=(0, 4), color=:grey, lw=0.0, lab="R") -figExample block output +figExample block output diff --git a/dev/generated_examples/Spacecraft/index.html b/dev/generated_examples/Spacecraft/index.html index 95b48c132..24c3de15c 100644 --- a/dev/generated_examples/Spacecraft/index.html +++ b/dev/generated_examples/Spacecraft/index.html @@ -269,4 +269,4 @@ plot!(fig, solz[idx_aborting[k]]; vars=(1, 2), lw=0.0, color=:cyan, alpha=1.0) end -figExample block output

References

[1] N. Chan and S. Mitra. Verifying safety of an autonomous spacecraft rendezvous mission. In ARCH17. 4th International Workshop on Applied Verification of Continuous and Hybrid Systems, collocated with Cyber-Physical Systems Week (CPSWeek) on April 17, 2017 in Pittsburgh, PA, USA, pages 20–32, 2017.

+figExample block output

References

[1] N. Chan and S. Mitra. Verifying safety of an autonomous spacecraft rendezvous mission. In ARCH17. 4th International Workshop on Applied Verification of Continuous and Hybrid Systems, collocated with Cyber-Physical Systems Week (CPSWeek) on April 17, 2017 in Pittsburgh, PA, USA, pages 20–32, 2017.

diff --git a/dev/generated_examples/SquareWaveOscillator/index.html b/dev/generated_examples/SquareWaveOscillator/index.html index 26472d7bf..13a0e71ec 100644 --- a/dev/generated_examples/SquareWaveOscillator/index.html +++ b/dev/generated_examples/SquareWaveOscillator/index.html @@ -83,4 +83,4 @@ ReachSet{Float64, Hyperrectangle{Float64, Vector{Float64}, Vector{Float64}}}(Hyperrectangle{Float64, Vector{Float64}, Vector{Float64}}([6.7258286982437765], [0.024171301756223507]), [0.000316999, 0.000320001])

Plotting Xc matches with the flowpipe after the jump:

fig = plot(sol[1][(end - 10):end]; vars=(0, 1))
 plot!(sol[2][1:10]; vars=(0, 1))
 plot!(x -> 6.75; xlims=(3.1e-4, 3.3e-4), lab="Guard", lw=2.0, color=:red)
-plot!(Xc[1]; vars=(0, 1), c=:grey)
Example block output

Finally, we note that the algorithm finds an invariant of the system after the first period. To activate such check pass the fixpoint_check=true flag to the hybrid solve API.

sol = solve(prob; T=100e-4, alg=INT(; δ=1.E-6), fixpoint_check=true);
fig = plot(sol; vars=(0, 1), xlab="t", ylab="v-")
Example block output

When the fixpoint check is activated, the computation terminates as soon as the last reach-set is contained in a previously explored initial state.

tspan(sol)
[0, 0.00145601]

References

+plot!(Xc[1]; vars=(0, 1), c=:grey)Example block output

Finally, we note that the algorithm finds an invariant of the system after the first period. To activate such check pass the fixpoint_check=true flag to the hybrid solve API.

sol = solve(prob; T=100e-4, alg=INT(; δ=1.E-6), fixpoint_check=true);
fig = plot(sol; vars=(0, 1), xlab="t", ylab="v-")
Example block output

When the fixpoint check is activated, the computation terminates as soon as the last reach-set is contained in a previously explored initial state.

tspan(sol)
[0, 0.00145601]

References

diff --git a/dev/generated_examples/TransmissionLine.ipynb b/dev/generated_examples/TransmissionLine.ipynb index 3383dc1f3..3f163a6be 100644 --- a/dev/generated_examples/TransmissionLine.ipynb +++ b/dev/generated_examples/TransmissionLine.ipynb @@ -208,264 +208,264 @@ "\n", "\n", "\n", - " \n", + " \n", " \n", " \n", "\n", - "\n", + "\n", "\n", - " \n", + " \n", " \n", " \n", "\n", - "\n", + "\n", "\n", - " \n", + " \n", " \n", " \n", "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", "\n" ], "image/svg+xml": [ "\n", "\n", "\n", - " \n", + " \n", " \n", " \n", "\n", - "\n", + "\n", "\n", - " \n", + " \n", " \n", " \n", "\n", - "\n", + "\n", "\n", - " \n", + " \n", " \n", " \n", "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", "\n" ] }, diff --git a/dev/generated_examples/TransmissionLine/7712e0e3.svg b/dev/generated_examples/TransmissionLine/b8ea2e8e.svg similarity index 77% rename from dev/generated_examples/TransmissionLine/7712e0e3.svg rename to dev/generated_examples/TransmissionLine/b8ea2e8e.svg index 4507cbda7..d8a0dc936 100644 --- a/dev/generated_examples/TransmissionLine/7712e0e3.svg +++ b/dev/generated_examples/TransmissionLine/b8ea2e8e.svg @@ -1,130 +1,130 @@ - + - + - + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/dev/generated_examples/TransmissionLine/index.html b/dev/generated_examples/TransmissionLine/index.html index ea6f853fa..6a814ec14 100644 --- a/dev/generated_examples/TransmissionLine/index.html +++ b/dev/generated_examples/TransmissionLine/index.html @@ -14,7 +14,7 @@ end
tline (generic function with 1 method)

We can visualize the structure of the coefficients matrix $A$ for the case $\eta = 20$ with spy plot:

using Plots
 
 A, _ = tline(; η=20)
-spy(A; legend=nothing, markersize=2.0, title="Sparsity pattern of A", xlab="columns", ylab="rows")
Example block output

Notice that the matrix coefficients are rather big, hence it is convenient to rescale the system for numerical stability. Let $α > 0$ be a scaling factor, and let $\tilde{x}(t) = x(\alpha t)$. By the chain rule,

\[\tilde{x}'(t) = \alpha x'(\alpha t) = \alpha A x(\alpha t) + \alpha B U_{in}(\alpha t) = \tilde{A} \tilde{x}(t) + \tilde{B} \tilde{U}_{in}(t),\]

where $\tilde{A} := \alpha A$ and $\tilde{B} := \alpha B$.

function scale!(s, α=1.0)
+spy(A; legend=nothing, markersize=2.0, title="Sparsity pattern of A", xlab="columns", ylab="rows")
Example block output

Notice that the matrix coefficients are rather big, hence it is convenient to rescale the system for numerical stability. Let $α > 0$ be a scaling factor, and let $\tilde{x}(t) = x(\alpha t)$. By the chain rule,

\[\tilde{x}'(t) = \alpha x'(\alpha t) = \alpha A x(\alpha t) + \alpha B U_{in}(\alpha t) = \tilde{A} \tilde{x}(t) + \tilde{B} \tilde{U}_{in}(t),\]

where $\tilde{A} := \alpha A$ and $\tilde{B} := \alpha B$.

function scale!(s, α=1.0)
     s.A .*= α
     s.B .*= α
     return s
@@ -32,4 +32,4 @@
 scale!(s, α);
 
 T = 0.7 * 1e-11 # time horizon
-P = InitialValueProblem(s, X0);

Results

We solve system using a step size of δ=1e-3 and the box algorithm.

sol = solve(P; T=0.7, alg=BOX(; δ=1e-3));

To get the variable $U_{out}$ we have to project onto the $η$-th coordinate and invert the sign of the flowpipe.

Uout_vs_t = @. (-1.0) * project(sol, η);
fig = plot(Uout_vs_t; vars=(0, η), color=:blue, xlab="t", ylab="Uout", alpha=0.5, lw=0.5)
Example block output
Technical note

Since we are only interested in the behavior of $U_{out}$, we could use a support function based algorithm (see e.g. [GLG08] which can be used as LGG09 in this library), or the decomposition-based algorithm BFFPSV18 with the options alg=BFFPSV18(δ=1e-3, dim=statedim(P), vars=[η])). Those options will use an interval (1D) decomposition of the state space and only compute the flowpipe associated with variable $\eta$.

References

+P = InitialValueProblem(s, X0);

Results

We solve system using a step size of δ=1e-3 and the box algorithm.

sol = solve(P; T=0.7, alg=BOX(; δ=1e-3));

To get the variable $U_{out}$ we have to project onto the $η$-th coordinate and invert the sign of the flowpipe.

Uout_vs_t = @. (-1.0) * project(sol, η);
fig = plot(Uout_vs_t; vars=(0, η), color=:blue, xlab="t", ylab="Uout", alpha=0.5, lw=0.5)
Example block output
Technical note

Since we are only interested in the behavior of $U_{out}$, we could use a support function based algorithm (see e.g. [GLG08] which can be used as LGG09 in this library), or the decomposition-based algorithm BFFPSV18 with the options alg=BFFPSV18(δ=1e-3, dim=statedim(P), vars=[η])). Those options will use an interval (1D) decomposition of the state space and only compute the flowpipe associated with variable $\eta$.

References

diff --git a/dev/generated_examples/VanDerPol/index.html b/dev/generated_examples/VanDerPol/index.html index 5e6737b47..5c31b1067 100644 --- a/dev/generated_examples/VanDerPol/index.html +++ b/dev/generated_examples/VanDerPol/index.html @@ -33,4 +33,4 @@ return LineSegment(vl[1], vl[2]) end
cross_section (generic function with 1 method)

Then we can get the cross section of the first five sets and the last set, calling them i1 and i2 respectively.

ifirst = cross_section(line, solz, 1:13)
 ilast = cross_section(line, solz, [388])
LineSegment{Float64, Vector{Float64}}([1.3848606487034292, 2.1924303243517147], [1.4836620847695106, 2.2418310423847556])

We can also calculate the length of each cross section, remember that the system is 2D, so the cross section will be a line segment.

lfirst = norm(ifirst.q - ifirst.p)
0.28930757953811087
llast = norm(ilast.q - ilast.p);
fig = plot(ifirst; lw=3.0, alpha=1.0, label="First subsets", legend=:bottomright)
-plot!(ilast; lw=5.0, alpha=1.0, label="Last subset")
Example block output

The inclusion check succeeds:

ilast ⊆ ifirst
true

We can see, the cross section of the last subset is a subset of the first few sets, thus, the cycle will continue, presumably getting smaller each revolution.

References

+plot!(ilast; lw=5.0, alpha=1.0, label="Last subset")Example block output

The inclusion check succeeds:

ilast ⊆ ifirst
true

We can see, the cross section of the last subset is a subset of the first few sets, thus, the cycle will continue, presumably getting smaller each revolution.

References

diff --git a/dev/index.html b/dev/index.html index b65df2107..d326a0f01 100644 --- a/dev/index.html +++ b/dev/index.html @@ -1,2 +1,2 @@ -Overview · ReachabilityAnalysis.jl

ReachabilityAnalysis.jl

What is reachability analysis?

Reachability analysis is a numerical method that aims to compute sets of states reachable by dynamical systems from all initial states and for all admissible inputs and parameters.

Where is reachability being applied?

Reachability analysis is of interest in diverse domains including automotive, aerospace, power systems, system biology, analog/mixed-signal circuits, robotics, and safe machine learning.

Below we briefly comment on a few remarkable problems where reachability is being applied. We refer to the technical literature for further applications; see Bibliography for a selection of papers to get you started! An up-to-date review with relevant references can be found in [AFG20].

Formal verification. Determining whether a system is safe, i.e. to verify if it does not enter into a region of unsafe sets. Typical applications are assessing the critical distance between autonomous vehicles or robots, or critical concentration of chemicals in a reactor.

Validation of control strategies. Checking if the system trajectories stay in a region around a reference trajectory, or reach a goal region around a setpoint, for any admissible value of the non-deterministic inputs, initial conditions or noise.

Controller synthesis. The controller synthesis problem consists in finding parameter sets of controllers that satisfy safety or performance constraints.

Deep neural network verification. Providing formal guarantees for the network behavior subject to perturbations in the inputs, e.g. detecting that small changes in an input image do not cause the network o misclassify it.

How to read this manual

Please note that the manual contains a Frequently Asked Questions (FAQ) section with a selection of different questions and answers, many of them with working code so that you can also experiment with the answers.

Note

If you have questions, want to chat about how to apply this package, or if you found a bug or have trouble running an example, feel free to open an issue or make a pull request on the project's GitHub page. You can also find us at the #reachability-analysis stream on JuliaLang's Zulip channel, and at the JuliaReach Gitter channel.

Features

This library implements reachability analysis methods for systems of ordinary differential equations (ODEs), for both continuous and hybrid dynamical systems.

The following types of systems are currently supported:

  • Continuous ODEs with linear dynamics.
  • Continuous ODEs with non-linear dynamics.
  • Hybrid systems with piecewise-affine dynamics.
  • Hybrid systems with non-linear dynamics.
  • Hybrid systems with space-triggered or time-triggered transitions.

The library can handle uncertainties in the sets of initial states, inputs, or parameter variation.

How to install the package?

You can easily install ReachabilityAnalysis.jl from your Julia console (press ] in the Julia REPL to enter the pkg> mode):

pkg> add ReachabilityAnalysis
+Overview · ReachabilityAnalysis.jl

ReachabilityAnalysis.jl

What is reachability analysis?

Reachability analysis is a numerical method that aims to compute sets of states reachable by dynamical systems from all initial states and for all admissible inputs and parameters.

Where is reachability being applied?

Reachability analysis is of interest in diverse domains including automotive, aerospace, power systems, system biology, analog/mixed-signal circuits, robotics, and safe machine learning.

Below we briefly comment on a few remarkable problems where reachability is being applied. We refer to the technical literature for further applications; see Bibliography for a selection of papers to get you started! An up-to-date review with relevant references can be found in [AFG20].

Formal verification. Determining whether a system is safe, i.e. to verify if it does not enter into a region of unsafe sets. Typical applications are assessing the critical distance between autonomous vehicles or robots, or critical concentration of chemicals in a reactor.

Validation of control strategies. Checking if the system trajectories stay in a region around a reference trajectory, or reach a goal region around a setpoint, for any admissible value of the non-deterministic inputs, initial conditions or noise.

Controller synthesis. The controller synthesis problem consists in finding parameter sets of controllers that satisfy safety or performance constraints.

Deep neural network verification. Providing formal guarantees for the network behavior subject to perturbations in the inputs, e.g. detecting that small changes in an input image do not cause the network o misclassify it.

How to read this manual

Please note that the manual contains a Frequently Asked Questions (FAQ) section with a selection of different questions and answers, many of them with working code so that you can also experiment with the answers.

Note

If you have questions, want to chat about how to apply this package, or if you found a bug or have trouble running an example, feel free to open an issue or make a pull request on the project's GitHub page. You can also find us at the #reachability-analysis stream on JuliaLang's Zulip channel, and at the JuliaReach Gitter channel.

Features

This library implements reachability analysis methods for systems of ordinary differential equations (ODEs), for both continuous and hybrid dynamical systems.

The following types of systems are currently supported:

  • Continuous ODEs with linear dynamics.
  • Continuous ODEs with non-linear dynamics.
  • Hybrid systems with piecewise-affine dynamics.
  • Hybrid systems with non-linear dynamics.
  • Hybrid systems with space-triggered or time-triggered transitions.

The library can handle uncertainties in the sets of initial states, inputs, or parameter variation.

How to install the package?

You can easily install ReachabilityAnalysis.jl from your Julia console (press ] in the Julia REPL to enter the pkg> mode):

pkg> add ReachabilityAnalysis
diff --git a/dev/lib/algorithms/A20/index.html b/dev/lib/algorithms/A20/index.html index 3dd4f9d24..cf0f4ef88 100644 --- a/dev/lib/algorithms/A20/index.html +++ b/dev/lib/algorithms/A20/index.html @@ -1,2 +1,2 @@ -A20 · ReachabilityAnalysis.jl
ReachabilityAnalysis.A20Type
A20{N} <: AbstractContinuousPost

Implementation of the reachability method for large linear systems with uncertain inputs in the Krylov subspace from [A20].

Fields

  • δ – step-size of the discretization
  • max_order – (optional, default: 5) maximum zonotope order

References

See [A20] and references therein.

source
+A20 · ReachabilityAnalysis.jl
ReachabilityAnalysis.A20Type
A20{N} <: AbstractContinuousPost

Implementation of the reachability method for large linear systems with uncertain inputs in the Krylov subspace from [A20].

Fields

  • δ – step-size of the discretization
  • max_order – (optional, default: 5) maximum zonotope order

References

See [A20] and references therein.

source
diff --git a/dev/lib/algorithms/ASB07/index.html b/dev/lib/algorithms/ASB07/index.html index 95acca858..6a85d23d6 100644 --- a/dev/lib/algorithms/ASB07/index.html +++ b/dev/lib/algorithms/ASB07/index.html @@ -1,2 +1,2 @@ -ASB07 · ReachabilityAnalysis.jl
ReachabilityAnalysis.ASB07Type
ASB07{N, AM, RM, S, R} <: AbstractContinuousPost

Implementation of Althoff - Stursberg - Buss algorithm for reachability of linear systems with uncertain parameters and inputs using zonotopes.

Fields

  • δ – step-size of the discretization
  • approx_model – (optional, default: CorrectionHull(; order=10, exp=:interval)) approximation model; see Notes below for possible options
  • max_order – (optional, default: 5) maximum zonotope order
  • reduction_method – (optional, default: GIR05()) zonotope order reduction method used
  • static – (optional, default: false) if true, convert the problem data to statically sized arrays
  • recursive – (optional default: true) if true, use the implementation that recursively computes each reach-set; otherwise, use the implementation that unwraps the sequence until the initial set

Notes

The type fields are:

  • N – number type of the step-size
  • AM – type of the approximation model
  • RM – type associated to the reduction method
  • S – value type associated to the static option
  • R – value type associated to the recursive option

The sole parameter which doesn't have a default value is the step-size, associated to the type parameter N.

The default approximation model is

approx_model=CorrectionHull(order=10, exp=:base)

Here, CorrectionHull refers to an implementation of the interval matrix approximation method described in [ASB07]. For technicalities on interval matrix operations, we refer to the package IntervalMatrices.jl.

References

The main ideas behind this algorithm can be found in [ASB07]. These methods are discussed at length in the dissertation [ALT10].

Regarding the zonotope order reduction methods, we refer to [COMB03], [GIR05] and the review article [YS18].

source
+ASB07 · ReachabilityAnalysis.jl
ReachabilityAnalysis.ASB07Type
ASB07{N, AM, RM, S, R} <: AbstractContinuousPost

Implementation of Althoff - Stursberg - Buss algorithm for reachability of linear systems with uncertain parameters and inputs using zonotopes.

Fields

  • δ – step-size of the discretization
  • approx_model – (optional, default: CorrectionHull(; order=10, exp=:interval)) approximation model; see Notes below for possible options
  • max_order – (optional, default: 5) maximum zonotope order
  • reduction_method – (optional, default: GIR05()) zonotope order reduction method used
  • static – (optional, default: false) if true, convert the problem data to statically sized arrays
  • recursive – (optional default: true) if true, use the implementation that recursively computes each reach-set; otherwise, use the implementation that unwraps the sequence until the initial set

Notes

The type fields are:

  • N – number type of the step-size
  • AM – type of the approximation model
  • RM – type associated to the reduction method
  • S – value type associated to the static option
  • R – value type associated to the recursive option

The sole parameter which doesn't have a default value is the step-size, associated to the type parameter N.

The default approximation model is

approx_model=CorrectionHull(order=10, exp=:base)

Here, CorrectionHull refers to an implementation of the interval matrix approximation method described in [ASB07]. For technicalities on interval matrix operations, we refer to the package IntervalMatrices.jl.

References

The main ideas behind this algorithm can be found in [ASB07]. These methods are discussed at length in the dissertation [ALT10].

Regarding the zonotope order reduction methods, we refer to [COMB03], [GIR05] and the review article [YS18].

source
diff --git a/dev/lib/algorithms/BFFPSV18/index.html b/dev/lib/algorithms/BFFPSV18/index.html index bcec54b9d..0285554f9 100644 --- a/dev/lib/algorithms/BFFPSV18/index.html +++ b/dev/lib/algorithms/BFFPSV18/index.html @@ -1,2 +1,2 @@ -BFFPSV18 · ReachabilityAnalysis.jl

BFFPSV18

ReachabilityAnalysis.BFFPSV18Type
BFFPSV18{N, ST, AM, IDX, BLK, RBLK, CBLK} <: AbstractContinuousPost

Implementation of the reachability method for linear systems using block decompositions.

Fields

  • δ – step-size of the discretization
  • approx_model – (optional, default: Forward) approximation model; see Notes below for possible options
  • vars – vector with the variables of interest
  • block_indices – vector of integers to index each block that contains a variable of interest
  • row_blocks – vector of integer vectors to index variables associated to blocks of interest
  • column_blocks – vector of integer vectors to index variables in the partition
  • lazy_initial_set – (optional, default: false) if true, use a lazy decomposition of the initial states after discretization
  • lazy_input – (optional, default: false) if true, use a lazy decomposition of the input set after discretization
  • sparse – (optional, default: false) if true, assume that the state transition matrix is sparse
  • view – (optional, default: false) if true, use implementation that uses arrays views

matrix is sparse

See the Examples section below for some concrete examples of these options.

Notes

This algorithm solves the set-based recurrence equation $X_{k+1} = ΦX_k ⊕ V_k$ by using block decompositions. The algorithm was introduced in [BFFPSV18].

Comments about some fields:

  • N – number type of the step-size, e.g. Float64
  • ST – set representation used; this is either a concrete LazySet subtype, eg. Interval{Float64}, or a tuple of concrete LazySet subtypes that is commensurate with the partition

The default approximation model is:

Forward(sih=:concrete, exp=:base, setops=:lazy)

TODO:

  • clarify assumption about contiguous blocks

Examples

References

This algorithm is essentially an extension of the method in [BFFPSV18]. Blocks can have different dimensions and the set representation can be different for each block.

For a general introduction we refer to the dissertation [SCHI18].

Regarding the approximation model, by default we use an adaptation of the method presented in [FRE11].

source
+BFFPSV18 · ReachabilityAnalysis.jl

BFFPSV18

ReachabilityAnalysis.BFFPSV18Type
BFFPSV18{N, ST, AM, IDX, BLK, RBLK, CBLK} <: AbstractContinuousPost

Implementation of the reachability method for linear systems using block decompositions.

Fields

  • δ – step-size of the discretization
  • approx_model – (optional, default: Forward) approximation model; see Notes below for possible options
  • vars – vector with the variables of interest
  • block_indices – vector of integers to index each block that contains a variable of interest
  • row_blocks – vector of integer vectors to index variables associated to blocks of interest
  • column_blocks – vector of integer vectors to index variables in the partition
  • lazy_initial_set – (optional, default: false) if true, use a lazy decomposition of the initial states after discretization
  • lazy_input – (optional, default: false) if true, use a lazy decomposition of the input set after discretization
  • sparse – (optional, default: false) if true, assume that the state transition matrix is sparse
  • view – (optional, default: false) if true, use implementation that uses arrays views

matrix is sparse

See the Examples section below for some concrete examples of these options.

Notes

This algorithm solves the set-based recurrence equation $X_{k+1} = ΦX_k ⊕ V_k$ by using block decompositions. The algorithm was introduced in [BFFPSV18].

Comments about some fields:

  • N – number type of the step-size, e.g. Float64
  • ST – set representation used; this is either a concrete LazySet subtype, eg. Interval{Float64}, or a tuple of concrete LazySet subtypes that is commensurate with the partition

The default approximation model is:

Forward(sih=:concrete, exp=:base, setops=:lazy)

TODO:

  • clarify assumption about contiguous blocks

Examples

References

This algorithm is essentially an extension of the method in [BFFPSV18]. Blocks can have different dimensions and the set representation can be different for each block.

For a general introduction we refer to the dissertation [SCHI18].

Regarding the approximation model, by default we use an adaptation of the method presented in [FRE11].

source
diff --git a/dev/lib/algorithms/BOX/index.html b/dev/lib/algorithms/BOX/index.html index 97bee3a31..ee1f0024e 100644 --- a/dev/lib/algorithms/BOX/index.html +++ b/dev/lib/algorithms/BOX/index.html @@ -1,2 +1,2 @@ -BOX · ReachabilityAnalysis.jl
ReachabilityAnalysis.BOXType
BOX{N, AM, S, D, R} <: AbstractContinuousPost

Implementation of a reachability method for linear systems using box approximations.

Fields

  • δ – step-size of the discretization
  • approx_model – (optional, default: Forward) approximation model; see Notes below for possible options
  • static
  • dim – (optional default: missing) ambient dimension
  • recursive – (optional default: false) if true, use the implementation that recursively computes each reach-set; otherwise, use the implementation that unwraps the sequence until the initial set

Notes

The type fields are:

  • N – number type of the step-size
  • AM – approximation model
  • S – value type for the static option
  • D – value type for the dimension
  • R – value type for the recursive option

The default approximation model is:

Forward(sih=:concrete, exp=:base, setops=:lazy)

This algorithm solves the set-based recurrence equation $X_{k+1} = ΦX_k ⊕ V_k$ by computing a tight hyperrectangular over-approximation of $X_{k+1}$ at each step $k ∈ \mathbb{N}$. The recursive implementation uses the previously computed set $X_k$ to compute $X_{k+1}$. However, it is known that this method incurs wrapping effects. The non-recursive implementation instead computes $X_{k+1}$ by unwrapping the discrete recurrence until $X_0 = Ω₀$, at the expense of computing powers of the matrix $Φ$. These ideas are discussed in [BFFPSV18].

References

This algorithm is essentially a non-decomposed version of the method in [BFFPSV18], using hyperrectangles as set representation. For a general introduction we refer to the dissertation [LG09].

Regarding the approximation model, by default we use an adaptation of the method presented in [FRE11].

source
+BOX · ReachabilityAnalysis.jl
ReachabilityAnalysis.BOXType
BOX{N, AM, S, D, R} <: AbstractContinuousPost

Implementation of a reachability method for linear systems using box approximations.

Fields

  • δ – step-size of the discretization
  • approx_model – (optional, default: Forward) approximation model; see Notes below for possible options
  • static
  • dim – (optional default: missing) ambient dimension
  • recursive – (optional default: false) if true, use the implementation that recursively computes each reach-set; otherwise, use the implementation that unwraps the sequence until the initial set

Notes

The type fields are:

  • N – number type of the step-size
  • AM – approximation model
  • S – value type for the static option
  • D – value type for the dimension
  • R – value type for the recursive option

The default approximation model is:

Forward(sih=:concrete, exp=:base, setops=:lazy)

This algorithm solves the set-based recurrence equation $X_{k+1} = ΦX_k ⊕ V_k$ by computing a tight hyperrectangular over-approximation of $X_{k+1}$ at each step $k ∈ \mathbb{N}$. The recursive implementation uses the previously computed set $X_k$ to compute $X_{k+1}$. However, it is known that this method incurs wrapping effects. The non-recursive implementation instead computes $X_{k+1}$ by unwrapping the discrete recurrence until $X_0 = Ω₀$, at the expense of computing powers of the matrix $Φ$. These ideas are discussed in [BFFPSV18].

References

This algorithm is essentially a non-decomposed version of the method in [BFFPSV18], using hyperrectangles as set representation. For a general introduction we refer to the dissertation [LG09].

Regarding the approximation model, by default we use an adaptation of the method presented in [FRE11].

source
diff --git a/dev/lib/algorithms/CARLIN/index.html b/dev/lib/algorithms/CARLIN/index.html index 40d3e611e..148aedfde 100644 --- a/dev/lib/algorithms/CARLIN/index.html +++ b/dev/lib/algorithms/CARLIN/index.html @@ -1,9 +1,9 @@ -CARLIN · ReachabilityAnalysis.jl

CARLIN

ReachabilityAnalysis.CARLINType
CARLIN <: AbstractContinuousPost

Implementation of the reachability method using Carleman linearization from [1].

[1] Forets, Marcelo, and Christian Schilling. "Reachability of weakly nonlinear systems using Carleman linearization." International Conference on Reachability Problems. Springer, Cham, 2021.

source
ReachabilityAnalysis.kron_powFunction
kron_pow(x::IA.Interval, pow::Int)

Given an interval x and an integer pow, compute x^pow.

Input

  • x – interval
  • pow – integer

Output

An interval enclosure of x^pow.

Examples

julia> [kron_pow(2 .. 3, i) for i in 1:3]
+CARLIN · ReachabilityAnalysis.jl

CARLIN

ReachabilityAnalysis.CARLINType
CARLIN <: AbstractContinuousPost

Implementation of the reachability method using Carleman linearization from [1].

[1] Forets, Marcelo, and Christian Schilling. "Reachability of weakly nonlinear systems using Carleman linearization." International Conference on Reachability Problems. Springer, Cham, 2021.

source
ReachabilityAnalysis.kron_powFunction
kron_pow(x::IA.Interval, pow::Int)

Given an interval x and an integer pow, compute x^pow.

Input

  • x – interval
  • pow – integer

Output

An interval enclosure of x^pow.

Examples

julia> [kron_pow(2 .. 3, i) for i in 1:3]
 3-element Array{IntervalArithmetic.Interval{Float64},1}:
   [2, 3]
   [4, 9]
- [8, 27]
source
kron_pow(x::Interval, pow::Int)

Given an interval x and an integer pow, compute x^pow.

Input

  • x – interval
  • pow – integer

Output

An interval enclosure of x^pow as a LazySets Interval.

source
kron_pow(H::AbstractHyperrectangle, pow::Int)

Given hyperrectangular set H and an integer pow, compute the Kronecker power H^{⊗ pow}.

Input

  • H – hyperrectangular set
  • pow – integer power

Output

A hyperrectangle.

Algorithm

We compute H^{⊗ pow} where H is a hyperrectangular set by working with H as a product of intervals.

See also kron_pow which requires DynamicPolynomials.jl.

source
kron_pow(x::Vector{<:AbstractVariable}, pow::Int)

Compute the higher order concrete Kronecker power: x ⊗ x ⊗ ... ⊗ x, pow times for a vector of symbolic monomials.

Input

  • x – polynomial variable
  • pow – integer

Output

Vector of multivariate monomial corresponding to x^{⊗ pow}.

Examples

julia> using DynamicPolynomials
+ [8, 27]
source
kron_pow(x::Interval, pow::Int)

Given an interval x and an integer pow, compute x^pow.

Input

  • x – interval
  • pow – integer

Output

An interval enclosure of x^pow as a LazySets Interval.

source
kron_pow(H::AbstractHyperrectangle, pow::Int)

Given hyperrectangular set H and an integer pow, compute the Kronecker power H^{⊗ pow}.

Input

  • H – hyperrectangular set
  • pow – integer power

Output

A hyperrectangle.

Algorithm

We compute H^{⊗ pow} where H is a hyperrectangular set by working with H as a product of intervals.

See also kron_pow which requires DynamicPolynomials.jl.

source
kron_pow(x::Vector{<:AbstractVariable}, pow::Int)

Compute the higher order concrete Kronecker power: x ⊗ x ⊗ ... ⊗ x, pow times for a vector of symbolic monomials.

Input

  • x – polynomial variable
  • pow – integer

Output

Vector of multivariate monomial corresponding to x^{⊗ pow}.

Examples

julia> using DynamicPolynomials
 
 julia> @polyvar x[1:2]
 (PolyVar{true}[x₁, x₂],)
@@ -18,4 +18,4 @@
  x₁²
  x₁x₂
  x₁x₂
- x₂²
source
ReachabilityAnalysis.kron_pow_stackFunction
kron_pow_stack(x::IA.Interval, pow::Int)

Return a hyperrectangle with the interval powers [x, x^2, …, x^pow].

Input

  • x – interval
  • pow – integer power

Output

A hyperrectangle such that the i-th dimension is the interval x^i.

source
kron_pow_stack(x::Interval, pow::Int)

Return a hyperrectangle with the interval powers [x, x^2, …, x^pow].

Input

  • x – interval
  • pow – integer power

Output

A hyperrectangle such that the i-th dimension is the interval x^i.

source
kron_pow_stack(H::AbstractHyperrectangle, pow::Int)

Return the Cartesian product array $H × H^{⊗2} × ⋯ × H^{⊗pow}$ where $H$ is a hyperrectangular set and $H^{⊗ i}$ is the i-th Kronecker power of $H$.

Input

  • H – hyperrectangular set
  • pow – integer power

Output

A Cartesian product array of hyperrectangles.

source
+ x₂²
source
ReachabilityAnalysis.kron_pow_stackFunction
kron_pow_stack(x::IA.Interval, pow::Int)

Return a hyperrectangle with the interval powers [x, x^2, …, x^pow].

Input

  • x – interval
  • pow – integer power

Output

A hyperrectangle such that the i-th dimension is the interval x^i.

source
kron_pow_stack(x::Interval, pow::Int)

Return a hyperrectangle with the interval powers [x, x^2, …, x^pow].

Input

  • x – interval
  • pow – integer power

Output

A hyperrectangle such that the i-th dimension is the interval x^i.

source
kron_pow_stack(H::AbstractHyperrectangle, pow::Int)

Return the Cartesian product array $H × H^{⊗2} × ⋯ × H^{⊗pow}$ where $H$ is a hyperrectangular set and $H^{⊗ i}$ is the i-th Kronecker power of $H$.

Input

  • H – hyperrectangular set
  • pow – integer power

Output

A Cartesian product array of hyperrectangles.

source
diff --git a/dev/lib/algorithms/GLGM06/index.html b/dev/lib/algorithms/GLGM06/index.html index cd47b725c..1e8ab5c69 100644 --- a/dev/lib/algorithms/GLGM06/index.html +++ b/dev/lib/algorithms/GLGM06/index.html @@ -1,2 +1,2 @@ -GLGM06 · ReachabilityAnalysis.jl
ReachabilityAnalysis.GLGM06Type
GLGM06{N, AM, S, D, NG, P, RM} <: AbstractContinuousPost

Implementation of Girard - Le Guernic - Maler algorithm for reachability of linear systems using zonotopes.

Fields

  • δ – step-size of the discretization
  • approx_model – (optional, default: FirstOrderZonotope) approximation model; see Notes below for possible options
  • max_order – (optional, default: 5) maximum zonotope order
  • static – (optional, default: false) if true, convert the problem data to statically sized arrays
  • dim – (optional default: missing) ambient dimension
  • ngens – (optional, default: missing) number of generators
  • preallocate – (optional, default: true) if true, use the implementation which preallocates the zonotopes prior to applying the update rule
  • reduction_method – (optional, default: GIR05()) zonotope order reduction method used
  • disjointness_method – (optional, default: NoEnclosure()) method to check disjointness between the reach-set and the invariant

Notes

The type fields are:

  • N – number type of the step-size
  • AM – approximation model
  • S – value type associated to the static option
  • D – value type associated to the dimension of the system
  • NG – value type associated to the number of generators
  • P – value type associated to the preallocate option
  • RM – type associated to the reduction method

The sole parameter which doesn't have a default value is the step-size, associated to the type parameter N. Parameters D and NG are optionally specified (default to Missing). These parameters are needed for implementations that require the size of the zonotopes to be known (fixed) at compile time, namely the static=true version of this algorithm. Otherwise, the number of generators is not necessarily fixed.

The default approximation model is

approx_model=FirstOrderZonotope()

Here, FirstOrderZonotope refers to the forward-time adaptation of the approximation model from Lemma 3 in [FRE11]. Some of the options to compute this approximation can be specified, see the documentation of FirstOrderZonotope for details.

References

The main ideas behind this algorithm can be found in [GIR05] and [GLGM06]. These methods are discussed at length in the dissertation [LG09].

Regarding the zonotope order reduction methods, we refer to [COMB03], [GIR05] and the review article [YS18].

Regarding the approximation model, we use an adaptation of a result in [FRE11].

source
+GLGM06 · ReachabilityAnalysis.jl
ReachabilityAnalysis.GLGM06Type
GLGM06{N, AM, S, D, NG, P, RM} <: AbstractContinuousPost

Implementation of Girard - Le Guernic - Maler algorithm for reachability of linear systems using zonotopes.

Fields

  • δ – step-size of the discretization
  • approx_model – (optional, default: FirstOrderZonotope) approximation model; see Notes below for possible options
  • max_order – (optional, default: 5) maximum zonotope order
  • static – (optional, default: false) if true, convert the problem data to statically sized arrays
  • dim – (optional default: missing) ambient dimension
  • ngens – (optional, default: missing) number of generators
  • preallocate – (optional, default: true) if true, use the implementation which preallocates the zonotopes prior to applying the update rule
  • reduction_method – (optional, default: GIR05()) zonotope order reduction method used
  • disjointness_method – (optional, default: NoEnclosure()) method to check disjointness between the reach-set and the invariant

Notes

The type fields are:

  • N – number type of the step-size
  • AM – approximation model
  • S – value type associated to the static option
  • D – value type associated to the dimension of the system
  • NG – value type associated to the number of generators
  • P – value type associated to the preallocate option
  • RM – type associated to the reduction method

The sole parameter which doesn't have a default value is the step-size, associated to the type parameter N. Parameters D and NG are optionally specified (default to Missing). These parameters are needed for implementations that require the size of the zonotopes to be known (fixed) at compile time, namely the static=true version of this algorithm. Otherwise, the number of generators is not necessarily fixed.

The default approximation model is

approx_model=FirstOrderZonotope()

Here, FirstOrderZonotope refers to the forward-time adaptation of the approximation model from Lemma 3 in [FRE11]. Some of the options to compute this approximation can be specified, see the documentation of FirstOrderZonotope for details.

References

The main ideas behind this algorithm can be found in [GIR05] and [GLGM06]. These methods are discussed at length in the dissertation [LG09].

Regarding the zonotope order reduction methods, we refer to [COMB03], [GIR05] and the review article [YS18].

Regarding the approximation model, we use an adaptation of a result in [FRE11].

source
diff --git a/dev/lib/algorithms/INT/index.html b/dev/lib/algorithms/INT/index.html index 0bc0fd75b..502c66242 100644 --- a/dev/lib/algorithms/INT/index.html +++ b/dev/lib/algorithms/INT/index.html @@ -1,2 +1,2 @@ -INT · ReachabilityAnalysis.jl
ReachabilityAnalysis.INTType
INT{N, AM} <: AbstractContinuousPost

Implementation of a reachability method for linear one-dimensional systems interval arithmetic.

Fields

  • δ – step-size of the discretization
  • approx_model – (optional, default: Forward) approximation model; see Notes below for possible options

Notes

The type fields are:

  • N – number type of the step-size
  • AM – approximation model

The default approximation model used in this algorithm is:

Forward(sih=:concrete, exp=:base, setops=:Interval)

In particular, the setops=:Interval flag specifies that intermediate computations in the discretization are done using interval arithmetic. This allows for some optimizations.

References

This algorithm is essentially a non-decomposed version of the method in [BFFPSV18], using intervals as set representation. For a general introduction we refer to the dissertation [LG09].

Regarding the approximation model, by default we use an adaptation of the method presented in [FRE11].

Interval arithmetic operations are performed using the IntervalArithmetic.jl package. Hence, the results are guaranteed to comply to the IEE754 standard with respect to the floating-point operations using intervals.

source
+INT · ReachabilityAnalysis.jl
ReachabilityAnalysis.INTType
INT{N, AM} <: AbstractContinuousPost

Implementation of a reachability method for linear one-dimensional systems interval arithmetic.

Fields

  • δ – step-size of the discretization
  • approx_model – (optional, default: Forward) approximation model; see Notes below for possible options

Notes

The type fields are:

  • N – number type of the step-size
  • AM – approximation model

The default approximation model used in this algorithm is:

Forward(sih=:concrete, exp=:base, setops=:Interval)

In particular, the setops=:Interval flag specifies that intermediate computations in the discretization are done using interval arithmetic. This allows for some optimizations.

References

This algorithm is essentially a non-decomposed version of the method in [BFFPSV18], using intervals as set representation. For a general introduction we refer to the dissertation [LG09].

Regarding the approximation model, by default we use an adaptation of the method presented in [FRE11].

Interval arithmetic operations are performed using the IntervalArithmetic.jl package. Hence, the results are guaranteed to comply to the IEE754 standard with respect to the floating-point operations using intervals.

source
diff --git a/dev/lib/algorithms/LGG09/index.html b/dev/lib/algorithms/LGG09/index.html index 47e6b993f..75fb031d0 100644 --- a/dev/lib/algorithms/LGG09/index.html +++ b/dev/lib/algorithms/LGG09/index.html @@ -1,5 +1,5 @@ -LGG09 · ReachabilityAnalysis.jl
ReachabilityAnalysis.LGG09Type
LGG09{N, AM, TN<:AbstractDirections} <: AbstractContinuousPost

Implementation of Girard - Le Guernic algorithm for reachability analysis using support functions.

Fields

  • δ – step-size of the discretization
  • approx_model – (optional, default: Forward) approximation model; see Notes below for possible options
  • template – (alias: dirs) struct that holds the directions (either lazily or concretely) for each support function evaluation defining the template
  • vars – (optional, default: all variables are computed) an integer or a vector of integers specifying the variables of interest to automatically construct a template using canonical directions; requires that n (or dim) is specified as well
  • static – (optional, default: false) if true, use statically sized arrays
  • threaded – (optional, default: false) if true, use multi-threading to compute different template directions in parallel
  • sparse – (optional, default: false) if true, convert the matrix exponential obtained after discretization to a sparse matrix
  • cache – (optional, default: true) if true, use a cache for intermediate computations in the set recurrence loop
  • vars – (optional, default: missing) used to specify the variables instead of passing the template

Notes

The type fields are:

  • N – number type of the step-size
  • AM – type of the approximation model
  • TN – type of the abstract directions that define the template

The flag threaded=true specifies that the support functions along different directions should be computed in parallel. See the section on Multi-threading for details on how to setup the number of threads.

References

This is an implementation of the algorithm from [LGG09].

These methods are described at length in the dissertation [LG09].

source
ReachabilityAnalysis.reach_homog_krylov_LGG09!Function
reach_homog_krylov_LGG09!(out, Ω₀::LazySet, Aᵀδ::AbstractMatrix,
+LGG09 · ReachabilityAnalysis.jl
ReachabilityAnalysis.LGG09Type
LGG09{N, AM, TN<:AbstractDirections} <: AbstractContinuousPost

Implementation of Girard - Le Guernic algorithm for reachability analysis using support functions.

Fields

  • δ – step-size of the discretization
  • approx_model – (optional, default: Forward) approximation model; see Notes below for possible options
  • template – (alias: dirs) struct that holds the directions (either lazily or concretely) for each support function evaluation defining the template
  • vars – (optional, default: all variables are computed) an integer or a vector of integers specifying the variables of interest to automatically construct a template using canonical directions; requires that n (or dim) is specified as well
  • static – (optional, default: false) if true, use statically sized arrays
  • threaded – (optional, default: false) if true, use multi-threading to compute different template directions in parallel
  • sparse – (optional, default: false) if true, convert the matrix exponential obtained after discretization to a sparse matrix
  • cache – (optional, default: true) if true, use a cache for intermediate computations in the set recurrence loop
  • vars – (optional, default: missing) used to specify the variables instead of passing the template

Notes

The type fields are:

  • N – number type of the step-size
  • AM – type of the approximation model
  • TN – type of the abstract directions that define the template

The flag threaded=true specifies that the support functions along different directions should be computed in parallel. See the section on Multi-threading for details on how to setup the number of threads.

References

This is an implementation of the algorithm from [LGG09].

These methods are described at length in the dissertation [LG09].

source
ReachabilityAnalysis.reach_homog_krylov_LGG09!Function
reach_homog_krylov_LGG09!(out, Ω₀::LazySet, Aᵀδ::AbstractMatrix,
                           ℓ::AbstractVector, NSTEPS;
                           hermitian=false, m=min(30, size(Aᵀδ, 1)), tol=1e-7)

Algorithm

We compute the sequence:

\[ ρ(ℓ, Ω₀), ρ(ℓ, Φ Ω₀), ρ(ℓ, Φ^2 Ω₀), ρ(ℓ, Φ^3 Ω₀), ...\]

Using Krylov subspace approximations to compute the action of Φ := exp(Aδ) over the direction ℓ.

The method is (see [1]):

out[1] <- ρ(ℓ, Ω₀)
 
@@ -7,4 +7,4 @@
 
 out[3] <- ρ(ℓ, Φ^2 Ω₀) = ρ((Φᵀ)^2 ℓ, Ω₀)
 
-out[4] <- ρ(ℓ, Φ^3 Ω₀) = ρ((Φᵀ)^3 ℓ, Ω₀)

and so on.

References

[1] Reach Set Approximation through Decomposition with Low-dimensional Sets and High-dimensional Matrices. Sergiy Bogomolov, Marcelo Forets, Goran Frehse, Frédéric Viry, Andreas Podelski and Christian Schilling (2018) HSCC'18 Proceedings of the 21st International Conference on Hybrid Systems: Computation and Control: 41–50.

source
+out[4] <- ρ(ℓ, Φ^3 Ω₀) = ρ((Φᵀ)^3 ℓ, Ω₀)

and so on.

References

[1] Reach Set Approximation through Decomposition with Low-dimensional Sets and High-dimensional Matrices. Sergiy Bogomolov, Marcelo Forets, Goran Frehse, Frédéric Viry, Andreas Podelski and Christian Schilling (2018) HSCC'18 Proceedings of the 21st International Conference on Hybrid Systems: Computation and Control: 41–50.

source
diff --git a/dev/lib/algorithms/ORBIT/index.html b/dev/lib/algorithms/ORBIT/index.html index 8b04cffe7..ca799de9f 100644 --- a/dev/lib/algorithms/ORBIT/index.html +++ b/dev/lib/algorithms/ORBIT/index.html @@ -1,2 +1,2 @@ -ORBIT · ReachabilityAnalysis.jl
ReachabilityAnalysis.ORBITType
ORBIT{N, VT, AM} <: AbstractContinuousPost

Implementation of discrete-time integration for deterministic linear ODEs for singleton initial conditions and proper input sets.

Fields

  • δ – step-size of the discretization
  • approx_model – (optional, default: NoBloating) approximation model

The type fields are:

  • N – number type of the step-size
  • AM – type of the approximation model

Notes

If the input set is a singleton, the result is the discrete-time sequence of states that correspond to the analytic solution. If the input set is a dense set, we sample a new input signal in every step.

Reachability solutions computed with the ORBIT algorithm have its own plot recipe, producing a scatter plot. Use the markershape option to change the shape of the markers used for the scatter plot. To "connect" the points, use the option seriestype=:path. For additional options see the Plots.jl documentation.

source
+ORBIT · ReachabilityAnalysis.jl
ReachabilityAnalysis.ORBITType
ORBIT{N, VT, AM} <: AbstractContinuousPost

Implementation of discrete-time integration for deterministic linear ODEs for singleton initial conditions and proper input sets.

Fields

  • δ – step-size of the discretization
  • approx_model – (optional, default: NoBloating) approximation model

The type fields are:

  • N – number type of the step-size
  • AM – type of the approximation model

Notes

If the input set is a singleton, the result is the discrete-time sequence of states that correspond to the analytic solution. If the input set is a dense set, we sample a new input signal in every step.

Reachability solutions computed with the ORBIT algorithm have its own plot recipe, producing a scatter plot. Use the markershape option to change the shape of the markers used for the scatter plot. To "connect" the points, use the option seriestype=:path. For additional options see the Plots.jl documentation.

source
diff --git a/dev/lib/algorithms/QINT/index.html b/dev/lib/algorithms/QINT/index.html index f76d30e31..e7ae1db61 100644 --- a/dev/lib/algorithms/QINT/index.html +++ b/dev/lib/algorithms/QINT/index.html @@ -1,2 +1,2 @@ -QINT · ReachabilityAnalysis.jl
ReachabilityAnalysis.QINTType
QINT{N, AM} <: AbstractContinuousPost

Reachability method for one-dimensional quadratic ODEs with non-deterministic inputs.

Fields

The type fields are:

  • N – number type of the step-size
  • AM – type of the approximation model

Notes

source
+QINT · ReachabilityAnalysis.jl
ReachabilityAnalysis.QINTType
QINT{N, AM} <: AbstractContinuousPost

Reachability method for one-dimensional quadratic ODEs with non-deterministic inputs.

Fields

The type fields are:

  • N – number type of the step-size
  • AM – type of the approximation model

Notes

source
diff --git a/dev/lib/algorithms/TMJets/index.html b/dev/lib/algorithms/TMJets/index.html index ab144d18c..9a21cec9e 100644 --- a/dev/lib/algorithms/TMJets/index.html +++ b/dev/lib/algorithms/TMJets/index.html @@ -1,2 +1,2 @@ -TMJets · ReachabilityAnalysis.jl
ReachabilityAnalysis.TMJets20Type
TMJets20{N, DM<:AbstractDisjointnessMethod} <: AbstractContinuousPost

Validated integration using Taylor models.

Fields

  • orderQ – (optional, default: 2) order of the Taylor models for jet transport variables
  • orderT – (optional, default: 8) order of the Taylor model in time
  • abstol – (optional, default: 1e-10) absolute tolerance
  • maxsteps – (optional, default: 2000) maximum number of steps in the validated integration $x' = f(x)$
  • adaptive – (optional, default: true) if true, try decreasing the absolute tolerance each time step validation fails, until min_abs_tol is reached
  • minabstol – (optional, default: 1e-29) minimum absolute tolerance for the adaptive algorithm
  • disjointness – (optional, default: ZonotopeEnclosure()) defines the method to perform the disjointness check between the taylor model flowpipe and the invariant

Notes

The argument disjointness allows to control how are disjointness checks computed, in the case where the invariant is not universal. In particular, ZonotopeEnclosure() pre-processes the taylor model with a zonotopic overapproximation, then performs the disjointness check with that zonotope and the invariant. For other options, see the documentation of AbstractDisjointnessMethod.

This algorithm is an adaptation of the implementation in TaylorModels.jl (see copyright license in the file reach.jl of the current folder). The package TaylorIntegration.jl is used for jet-transport of ODEs using the Taylor method, and TaylorSeries.jl is used to work with truncated Taylor series.

source
ReachabilityAnalysis.TMJets21aType
TMJets21a{N, DM<:AbstractDisjointnessMethod} <: AbstractContinuousPost

Set propagation using Taylor models with the function validated_integ in TaylorModels.jl.

source
ReachabilityAnalysis.TMJets21bType
TMJets21b{N, DM<:AbstractDisjointnessMethod} <: AbstractContinuousPost

Set propagation using Taylor models with the function validated_integ in TaylorModels.jl.

source
ReachabilityAnalysis.iscontractiveFunction
iscontractive(Δ, Δx)

Checks if Δ .⊂ Δx is satisfied. If `Δ ⊆ Δx is satisfied, it returns true if all cases where == holds corresponds to the zero IA.Interval.

source
ReachabilityAnalysis.absorb_remainderFunction
absorb_remainder(a::TaylorModelN)

Returns a TaylorModelN, equivalent to a, such that the remainder is mostly absorbed in the constant and linear coefficients. The linear shift assumes that a is normalized to the IntervalBox(-1..1, Val(N)).

Ref: Xin Chen, Erika Abraham, and Sriram Sankaranarayanan, "Taylor Model Flowpipe Construction for Non-linear Hybrid Systems", in Real Time Systems Symposium (RTSS), pp. 183-192 (2012), IEEE Press.

source
ReachabilityAnalysis.remainder_taylorstep!Function
remainder_taylorstep!(f!, t, x, dx, xI, dxI, δI, δt, params, adaptive)

Returns a remainder for the integration step for the dependent variables (x) checking that the solution satisfies the criteria for existence and uniqueness.

source
+TMJets · ReachabilityAnalysis.jl
ReachabilityAnalysis.TMJets20Type
TMJets20{N, DM<:AbstractDisjointnessMethod} <: AbstractContinuousPost

Validated integration using Taylor models.

Fields

  • orderQ – (optional, default: 2) order of the Taylor models for jet transport variables
  • orderT – (optional, default: 8) order of the Taylor model in time
  • abstol – (optional, default: 1e-10) absolute tolerance
  • maxsteps – (optional, default: 2000) maximum number of steps in the validated integration $x' = f(x)$
  • adaptive – (optional, default: true) if true, try decreasing the absolute tolerance each time step validation fails, until min_abs_tol is reached
  • minabstol – (optional, default: 1e-29) minimum absolute tolerance for the adaptive algorithm
  • disjointness – (optional, default: ZonotopeEnclosure()) defines the method to perform the disjointness check between the taylor model flowpipe and the invariant

Notes

The argument disjointness allows to control how are disjointness checks computed, in the case where the invariant is not universal. In particular, ZonotopeEnclosure() pre-processes the taylor model with a zonotopic overapproximation, then performs the disjointness check with that zonotope and the invariant. For other options, see the documentation of AbstractDisjointnessMethod.

This algorithm is an adaptation of the implementation in TaylorModels.jl (see copyright license in the file reach.jl of the current folder). The package TaylorIntegration.jl is used for jet-transport of ODEs using the Taylor method, and TaylorSeries.jl is used to work with truncated Taylor series.

source
ReachabilityAnalysis.TMJets21aType
TMJets21a{N, DM<:AbstractDisjointnessMethod} <: AbstractContinuousPost

Set propagation using Taylor models with the function validated_integ in TaylorModels.jl.

source
ReachabilityAnalysis.TMJets21bType
TMJets21b{N, DM<:AbstractDisjointnessMethod} <: AbstractContinuousPost

Set propagation using Taylor models with the function validated_integ in TaylorModels.jl.

source
ReachabilityAnalysis.iscontractiveFunction
iscontractive(Δ, Δx)

Checks if Δ .⊂ Δx is satisfied. If `Δ ⊆ Δx is satisfied, it returns true if all cases where == holds corresponds to the zero IA.Interval.

source
ReachabilityAnalysis.absorb_remainderFunction
absorb_remainder(a::TaylorModelN)

Returns a TaylorModelN, equivalent to a, such that the remainder is mostly absorbed in the constant and linear coefficients. The linear shift assumes that a is normalized to the IntervalBox(-1..1, Val(N)).

Ref: Xin Chen, Erika Abraham, and Sriram Sankaranarayanan, "Taylor Model Flowpipe Construction for Non-linear Hybrid Systems", in Real Time Systems Symposium (RTSS), pp. 183-192 (2012), IEEE Press.

source
ReachabilityAnalysis.remainder_taylorstep!Function
remainder_taylorstep!(f!, t, x, dx, xI, dxI, δI, δt, params, adaptive)

Returns a remainder for the integration step for the dependent variables (x) checking that the solution satisfies the criteria for existence and uniqueness.

source
diff --git a/dev/lib/algorithms/VREP/index.html b/dev/lib/algorithms/VREP/index.html index 949dfa6fd..a3bf5bc9d 100644 --- a/dev/lib/algorithms/VREP/index.html +++ b/dev/lib/algorithms/VREP/index.html @@ -1,2 +1,2 @@ -VREP · ReachabilityAnalysis.jl
ReachabilityAnalysis.VREPType
VREP{N, AM, S, D} <: AbstractContinuousPost

Implementation of a linear reachability solver using the vertex representation.

source
+VREP · ReachabilityAnalysis.jl
ReachabilityAnalysis.VREPType
VREP{N, AM, S, D} <: AbstractContinuousPost

Implementation of a linear reachability solver using the vertex representation.

source
diff --git a/dev/lib/clustering/index.html b/dev/lib/clustering/index.html index ff85ed794..24af54683 100644 --- a/dev/lib/clustering/index.html +++ b/dev/lib/clustering/index.html @@ -1,2 +1,2 @@ -Clustering · ReachabilityAnalysis.jl

Clustering

Abstract interface

ReachabilityAnalysis.AbstractClusteringMethodType
AbstractClusteringMethod{P}

Abstract supertype for all clustering types, with partition of type P.

Notes

A clustering method defines a function which maps reach-sets to one or several reach-sets. The mapping can possibly be over-approximative, i.e. such that the set union of the input reach-sets is included in the set union of the output reach-sets.

By taking the convex hull of the input reach-sets one can reduce the number of outputs sets to a single one, overapproximately. This is the method that corresponds to the LazyClustering type. However, in some cases it is convenient to do other types of transformations, such as:

  • Return several reach-sets that are obtained by grouping the input in a way defined by a partition. For example, a vector of ten input sets can be clustered in two groups of five sets each, or five groups of two sets each, etc.
  • Use different set representations such as boxes or zonotopes.
  • Further post-process the output of the convexification by splitting into smaller sets, eg. box splitting.

Each concrete subtype of AbstractClusteringMethod has a parameter P that defines what type of clustering strategy is applied. The method should be accessed with the partition getter function.

The following strategies are implemented at the interface level:

  • If P is of type Missing: no partition is applied
  • If P is of type integer: the partition corresponds to grouping the into the given integer number of sets (or as close as possible)
  • If P is of type vector of vectors: the given partition is applied

Examples

LazyClustering([1:2, 3:10]) groups the first two reach-sets in one cluster and the third to tenth reach-sets in another cluster.

source

No clustering

The following methods are available.

Lazy convexification

Box clustering

ReachabilityAnalysis.BoxClusteringType
BoxClustering{PI, PO} <: AbstractClusteringMethod{P}

Notes

This method first takes a lazy convex hull for the given partition, then computes a tight hyperrectangular approximation for each element in the partition.

source

Zonotope clustering

ReachabilityAnalysis.ZonotopeClusteringType
ZonotopeClustering{P} <: AbstractClusteringMethod{P}

Notes

This method first takes a lazy convex hull for the given partition, then computes a zonotope overapproximation of the convex hull.

source

Lazy union

+Clustering · ReachabilityAnalysis.jl

Clustering

Abstract interface

ReachabilityAnalysis.AbstractClusteringMethodType
AbstractClusteringMethod{P}

Abstract supertype for all clustering types, with partition of type P.

Notes

A clustering method defines a function which maps reach-sets to one or several reach-sets. The mapping can possibly be over-approximative, i.e. such that the set union of the input reach-sets is included in the set union of the output reach-sets.

By taking the convex hull of the input reach-sets one can reduce the number of outputs sets to a single one, overapproximately. This is the method that corresponds to the LazyClustering type. However, in some cases it is convenient to do other types of transformations, such as:

  • Return several reach-sets that are obtained by grouping the input in a way defined by a partition. For example, a vector of ten input sets can be clustered in two groups of five sets each, or five groups of two sets each, etc.
  • Use different set representations such as boxes or zonotopes.
  • Further post-process the output of the convexification by splitting into smaller sets, eg. box splitting.

Each concrete subtype of AbstractClusteringMethod has a parameter P that defines what type of clustering strategy is applied. The method should be accessed with the partition getter function.

The following strategies are implemented at the interface level:

  • If P is of type Missing: no partition is applied
  • If P is of type integer: the partition corresponds to grouping the into the given integer number of sets (or as close as possible)
  • If P is of type vector of vectors: the given partition is applied

Examples

LazyClustering([1:2, 3:10]) groups the first two reach-sets in one cluster and the third to tenth reach-sets in another cluster.

source

No clustering

The following methods are available.

Lazy convexification

Box clustering

ReachabilityAnalysis.BoxClusteringType
BoxClustering{PI, PO} <: AbstractClusteringMethod{P}

Notes

This method first takes a lazy convex hull for the given partition, then computes a tight hyperrectangular approximation for each element in the partition.

source

Zonotope clustering

ReachabilityAnalysis.ZonotopeClusteringType
ZonotopeClustering{P} <: AbstractClusteringMethod{P}

Notes

This method first takes a lazy convex hull for the given partition, then computes a zonotope overapproximation of the convex hull.

source

Lazy union

diff --git a/dev/lib/discretize/index.html b/dev/lib/discretize/index.html index 87eb2f5fc..9a08403a8 100644 --- a/dev/lib/discretize/index.html +++ b/dev/lib/discretize/index.html @@ -1,17 +1,17 @@ -Discretization · ReachabilityAnalysis.jl

Discretization

Discretize API

LinearAlgebra.normalizeFunction
normalize(system::AbstractSystem)

Transform a mathematical system to a normalized (or canonical) form.

Input

  • system – system; it can be discrete or continuous

Output

Either the same system if it already conforms to a canonical form, or a new system otherwise.

Notes

The normalization procedure consists of transforming a given system type into a "canonical" format that is used internally. More details are given below.

Algorithm

The implementation of normalize exploits MathematicalSystems's' types, which carry information about the problem as a type parameter.

Homogeneous ODEs of the form $x' = Ax, x ∈ \mathcal{X}$ are canonical if the associated problem is a ConstrainedLinearContinuousSystem and A is a matrix. This type does not handle non-deterministic inputs.

Note that a LinearContinuousSystem does not consider constraints on the state-space (such as an invariant); to specify state constraints, use a ConstrainedLinearContinuousSystem. If the passed system is a LinearContinuousSystem (i.e. no constraints) then the normalization fixes a universal set (Universe) as the constraint set.

The generalization to canonical systems with constraints and possibly time-varying non-deterministic inputs is considered next. These systems are of the form $x' = Ax + u, u ∈ \mathcal{U}, x ∈ \mathcal{X}$. The system type is ConstrainedLinearControlContinuousSystem, where A is a matrix, X is a set and U is an input, that is, any concrete subtype of AbstractInput.

If U is not given as an input, normalization accepts either a LazySet, or a vector of LazySets. In these cases, the sets are wrapped around an appropriate concrete input type.

If the system does not conform to a canonical form, the implementation tries to make the transformation; otherwise an error is thrown. In particular, ODEs of the form $x' = Ax + Bu$ are mapped into $x' = Ax + u, u ∈ B\mathcal{U}$, where now $u$ has the same dimensions as $x$.

The transformations described above are analogous in the discrete case, i.e. $x_{k+1} = A x_k$ and $x_{k+1} = Ax_{k} + u_k, u_k ∈ \mathcal{U}, x_k ∈ \mathcal{X}$ for the linear and affine cases respectively.

source
normalize(ivp::InitialValueProblem)

Transform an initial-value problem into a normalized (or canonical) form.

Input

  • ivp – initial-value problem

Output

Either the same initial-value problem if it already conforms to a canonical form, or a new one otherwise.

Notes

This function extends normalize for initial-value problems.

source
MathematicalSystems.discretizeFunction
discretize(ivp::IVP, δ, alg::AbstractApproximationModel)

Set-based conservative discretization of a continuous-time initial value problem into a discrete-time problem.

Input

  • ivp – initial value problem for a linear ODE in canonical form (see Notes below)
  • δ – step size
  • alg – algorithm used to compute the approximation model

Output

The initial value problem of a discrete system.

Notes

Different approximation algorithms and their respective options are described in the docstring of each method, e.g. Forward. Here is a list of all the available approximation models:

julia> subtypes(ReachabilityAnalysis.AbstractApproximationModel)
+Discretization · ReachabilityAnalysis.jl

Discretization

Discretize API

LinearAlgebra.normalizeFunction
normalize(system::AbstractSystem)

Transform a mathematical system to a normalized (or canonical) form.

Input

  • system – system; it can be discrete or continuous

Output

Either the same system if it already conforms to a canonical form, or a new system otherwise.

Notes

The normalization procedure consists of transforming a given system type into a "canonical" format that is used internally. More details are given below.

Algorithm

The implementation of normalize exploits MathematicalSystems's' types, which carry information about the problem as a type parameter.

Homogeneous ODEs of the form $x' = Ax, x ∈ \mathcal{X}$ are canonical if the associated problem is a ConstrainedLinearContinuousSystem and A is a matrix. This type does not handle non-deterministic inputs.

Note that a LinearContinuousSystem does not consider constraints on the state-space (such as an invariant); to specify state constraints, use a ConstrainedLinearContinuousSystem. If the passed system is a LinearContinuousSystem (i.e. no constraints) then the normalization fixes a universal set (Universe) as the constraint set.

The generalization to canonical systems with constraints and possibly time-varying non-deterministic inputs is considered next. These systems are of the form $x' = Ax + u, u ∈ \mathcal{U}, x ∈ \mathcal{X}$. The system type is ConstrainedLinearControlContinuousSystem, where A is a matrix, X is a set and U is an input, that is, any concrete subtype of AbstractInput.

If U is not given as an input, normalization accepts either a LazySet, or a vector of LazySets. In these cases, the sets are wrapped around an appropriate concrete input type.

If the system does not conform to a canonical form, the implementation tries to make the transformation; otherwise an error is thrown. In particular, ODEs of the form $x' = Ax + Bu$ are mapped into $x' = Ax + u, u ∈ B\mathcal{U}$, where now $u$ has the same dimensions as $x$.

The transformations described above are analogous in the discrete case, i.e. $x_{k+1} = A x_k$ and $x_{k+1} = Ax_{k} + u_k, u_k ∈ \mathcal{U}, x_k ∈ \mathcal{X}$ for the linear and affine cases respectively.

source
normalize(ivp::InitialValueProblem)

Transform an initial-value problem into a normalized (or canonical) form.

Input

  • ivp – initial-value problem

Output

Either the same initial-value problem if it already conforms to a canonical form, or a new one otherwise.

Notes

This function extends normalize for initial-value problems.

source
MathematicalSystems.discretizeFunction
discretize(ivp::IVP, δ, alg::AbstractApproximationModel)

Set-based conservative discretization of a continuous-time initial value problem into a discrete-time problem.

Input

  • ivp – initial value problem for a linear ODE in canonical form (see Notes below)
  • δ – step size
  • alg – algorithm used to compute the approximation model

Output

The initial value problem of a discrete system.

Notes

Different approximation algorithms and their respective options are described in the docstring of each method, e.g. Forward. Here is a list of all the available approximation models:

julia> subtypes(ReachabilityAnalysis.AbstractApproximationModel)
 5-element Vector{Any}:
  Backward
  CorrectionHull
  Forward
  NoBloating
- StepIntersect

Initial-value problems considered in this function are of the form

\[x' = Ax(t) + u(t),\qquad x(0) ∈ \mathcal{X}_0,\qquad (1)\]

and where $u(t) ∈ U(k)$ add where $\{U(k)\}_k$ is a sequence of sets of non-deterministic inputs and $\mathcal{X}_0$ is the set of initial states. Other problems, e.g. $x' = Ax(t) + Bu(t)$ can be brought to the canonical form with the function normalize.

For references to the original papers introducing each algorithm, see the docstrings, e.g. ?Forward.

source

Approximation models

ReachabilityAnalysis.NoBloatingType
NoBloating{EM, SO, IT} <: AbstractApproximationModel

No bloating, or discrete-time, approximation model.

Fields

  • exp – exponentiation method
  • setops – set operations method
  • inv – (optional, default: false) if true, assume that the state matrix is invertible and use its inverse in the Φ functions

Algorithm

The transformations are:

  • $Φ ← \exp(Aδ)$
  • $Ω_0 ← \mathcal{X}_0$
  • $V(k) ← Φ₁(A, δ)U(k)$, $k ≥ 0$.

The function $Φ₁(A, δ)$ is defined in Φ₁. We allow $U$ to be a sequence of time varying non-deterministic input sets.

See also Eqs.(14) in [BFFPSV18].

source
ReachabilityAnalysis.ForwardType
Forward{EM, SO, SI, IT, BT} <: AbstractApproximationModel

Forward approximation model.

Fields

  • exp – exponentiation method
  • setops – set operations method
  • sih – symmetric interval hull
  • inv – (optional, default: false) if true, assume that the state matrix is invertible and use its inverse in the Φ functions
  • backend – (optional, default: nothing) used if the algorithm needs to apply concrete polyhedral computations

Algorithm

The transformations are:

  • $Φ ← \exp(Aδ)$,
  • $Ω_0 ← CH(\mathcal{X}_0, Φ\mathcal{X}_0 ⊕ δU(0) ⊕ E_ψ(U(0), δ) ⊕ E^+(\mathcal{X}_0, δ))$,
  • $V(k) ← δU(k) ⊕ E_ψ(U(k), δ)$.

Here we allow $U$ to be a sequence of time varying non-deterministic input sets.

For the definition of the sets $E_ψ$ and $E^+$ see [FRE11]. The Backward method uses $E^-$.

source
ReachabilityAnalysis.BackwardType
Backward{EM, SO, SI, IT, BT} <: AbstractApproximationModel

Backward approximation model.

Fields

  • exp – exponentiation method
  • setops – set operations method
  • sih – symmetric interval hull
  • inv – (optional, default: false) if true, assume that the state matrix is invertible and use its inverse in the Φ functions
  • backend – (optional, default: nothing) used if the algorithm needs to apply concrete polyhedral computations

Algorithm

The transformations are:

  • $Φ ← \exp(Aδ)$,
  • $Ω_0 ← CH(\mathcal{X}_0, Φ\mathcal{X}_0 ⊕ δU(0) ⊕ E_ψ(U(0), δ) ⊕ E^-(\mathcal{X}_0, δ))$,
  • $V(k) ← δU(k) ⊕ E_ψ(U(k), δ)$.

Here we allow $U$ to be a sequence of time varying non-deterministic input sets.

For the definition of the sets $E_ψ$ and $E^-$ see [FRE11]. The Forward method uses $E^+$.

source
ReachabilityAnalysis.FirstOrderType
FirstOrder{EM} <: AbstractApproximationModel

First-order approximation model.

Fields

  • exp – (optional, default: BaseExp) exponentiation method

Algorithm

The transformations are:

  • $Φ ← \exp(Aδ)$,
  • $Ω_0 ← CH(\mathcal{X}_0, Φ\mathcal{X}_0 ⊕ δU ⊕ B_ε)$

where $B_ε$ is the input ball of radius $ε$ centered in the origin.

Reference

C. Le Guernic and A. Girard: Reachability analysis of linear systems using support functions. NAHS 2010.

source
ReachabilityAnalysis.FirstOrderZonotopeType
FirstOrderZonotope{EM} <: AbstractApproximationModel

First order approximation model that works with zonotopes.

Fields

  • exp – (optional, default: BaseExp) exponentiation method

Algorithm

The transformations are:

  • $Φ ← \exp(Aδ)$,
  • $Ω_0 ← bloat(zono(CH(\mathcal{X}_0, Φ\mathcal{X}_0)), α + β)$

where $bloat(\mathcal{X}, ε)$ bloats the set $\mathcal{X}$ with the value $ε$, $zono(·)$ overapproximates its argument with a zonotope, and $α$ and $β$ are factors computed for the homogeneous system and the inputs, respectively.

Reference

A. Girard: Reachability of uncertain linear systems using zonotopes. HSCC 2005.

source
ReachabilityAnalysis.SecondOrderddtType
SecondOrderddt{EM, SO, SI, IT, BT} <: AbstractApproximationModel

Second-order approximation model used in the tool d/dt. It can be used for overapproximation and underapproximation.

Fields

  • oa – (optional, default: true) flag to choose between overapproximation and underapproximation
  • exp – (optional, default: BaseExp) exponentiation method
  • setops – (optional, default: :lazy) set operations method
  • sih – (optional, default: :concrete) way to compute the symmetric interval hull
  • inv – (optional, default: false) if true, assume that the state matrix is invertible and use its inverse in the Φ functions
  • backend – (optional, default: nothing) used if the algorithm needs to apply concrete polyhedral computations

Algorithm

The transformations are:

  • $Φ ← \exp(Aδ)$,
  • $Ω_0 ← bloat(CH(\mathcal{X}_0, Φ\mathcal{X}_0), ε)$

where $bloat(\mathcal{X}, ε)$ bloats the set $\mathcal{X}$ with the value $ε$. If oa == false, the bloating acts in an inverted way and shrinks the set.

Reference

E. Asarin, T. Dang, O. Maler, O. Bournez: Approximate reachability analysis of piecewise-linear dynamical systems. HSCC 2000.

source
ReachabilityAnalysis.CorrectionHullType
CorrectionHull{EM} <: AbstractApproximationModel

Discretization using the correction hull of the matrix exponential.

Fields

  • exp – exponentiation method
  • order – order of the Taylor series expansion of the matrix exponential

Algorithm

For the homogeneous case, this method implements the transformation:

\[Ω_0 = CH(X_0, e^{Aδ} X_0) ⊕ FX_0\]

where $F$ is the correction (interval) matrix.

For the inhomogeneous case, $x' = Ax + u$, $x ∈ X, u ∈ U$, implements $Ω_0 = CH(X_0, exp(Aδ) X0) ⊕ FX0$ where $F$ is the correction (interval) matrix.

In both cases, if $A$ is an interval matrix, the exponential is overapproximated using methods from IntervalMatrices.jl.

source
ReachabilityAnalysis.StepIntersectType
StepIntersect{DM<:AbstractApproximationModel} <: AbstractApproximationModel

Approximation model that composes (intersecting) one step Forward of a given model with one step backward of the same model.

Fields

  • model – approximation model
  • setops – set operations method

Notes

Let $x' = Ax$ with $x(0) ∈ X₀$. This methods consists of:

  • Compute the discretized system with step-size $δ$ obtaining $Ω0$ and the given approximation model method.

  • Compute the (lazy) linear map $ΦX₀$. This set consists of the (exact) reachable states at the time point $δ$.

  • Apply the approximation model method with initial condition $ΦX₀$ one step backward in time, with the state transition matrix $-A$, call this reach-set $Ω₀₊$

  • Intersect $Ω₀₋$ and $Ω₀₊$ and return such set. The intersection is done either lazily or concretely depending on the specified setops field.

source

Exponentiation

The state transition matrix of the linear ODE $x'(t) = Ax(t) + u(t)$ at time $\delta > 0$ is $\Phi = e^{A\delta}$, hence the algorithms usually require to compute exponential matrices. There are distinct ways to compute the matrix exponential $e^{A\delta}$ depending on the type of $A$ (see e.g. [HIH08]). The available methods can be used through the (unexported) function _exp.

For high dimensional systems (typically n > 2000), computing the matrix exponential is expensive hence it is preferable to compute the action of the matrix exponential over vectors when needed, that is, $e^{δA} v$ for each $v$. This method is particularly well-suited if A is vert sparse. Use the option exp=:krylov (or exp=:lazy) for this purpose.

ReachabilityAnalysis.ExponentiationModule

Interface to matrix exponential backends of different kinds.

Includes common integral computations arising in the discretization of linear differential equations using matrix methods. For applications see e.g. [1] and references therein.

[1] Conservative Time Discretization: A Comparative Study. Marcelo Forets and Christian Schilling (2022). Proceedings of the 17th International Conference on integrated Formal Methods (iFM), LNCS, vol. 13274, pp. 149-167. doi: 10.1007/978-3-031-07727-2_9, arXiv: 2111.01454.

source
ReachabilityAnalysis.Exponentiation._expFunction
_exp(A::AbstractMatrix, δ, [alg]::AbstractExpAlg=BaseExp)

Compute the matrix exponential $e^{Aδ}$.

Input

  • A – matrix
  • δ – step size
  • alg – (optional, default: BaseExp) the algorithm used to take the matrix exponential of , possible options are BaseExp, LazyExp, PadeExp and IntervalExp see details in the Algorithm section below

Output

A matrix or a lazy wrapper of the matrix exponential, depending on alg.

Algorithm

  • BaseExp – (alias: :base) use Higham's scaling and squaring method implemented in Julia standard library; see ?exp for details; if A is a static array, uses the implementation in StaticArrays.jl

  • LazyExp – (alias: :lazy) return a lazy wrapper type around the matrix exponential using the implementation LazySets.SparseMatrixExp

  • PadeExp – (alias: pade) apply Pade approximant method to compute the matrix exponential of a sparse matrix (requires Expokit.jl)

  • IntervalExp – (alias: interval, taylor) apply the Taylor series expansion of the matrix exponential with an interval remainder; works if A is an interval matrix

Notes

If the algorithm LazyExp is used, actions of the matrix exponential are evaluated with an external library such as ExponentialUtilities.jl or Expokit.jl.

source
ReachabilityAnalysis.Exponentiation.Φ₁Function
Φ₁(A::AbstractMatrix, δ, [alg]::AbstractExpAlg=BaseExp, [isinv]::Bool=false, [Φ]=nothing)

Evaluate the series

\[Φ₁(A, δ) = ∑_{i=0}^∞ \dfrac{δ^{i+1}}{(i+1)!}A^i,\]

where $A$ is a square matrix of order $n$ and $δ > 0$.

Input

  • A – coefficients matrix
  • δ – step size
  • alg – (optional, default: BaseExp) the method used to take the matrix exponential of the coefficient matrix; see the documentation of _exp for available options
  • isinv – (optional, default: false) if true, assume that the coefficients matrix is invertible and compute $A^{-1}$
  • Φ – (optional, default: nothing) optionally pass the matrix exponential $e^{Aδ}$

Output

A matrix.

Algorithm

If $A$ is invertible, $Φ₁$ can be computed as

\[Φ₁(A, δ) = A^{-1}(e^{Aδ} - I_n),\]

where $I_n$ is the identity matrix of order $n$.

In the general case, implemented in this function, it can be computed as submatrices of the block matrix

\[P_{2n} = \exp \begin{pmatrix} + StepIntersect

Initial-value problems considered in this function are of the form

\[x' = Ax(t) + u(t),\qquad x(0) ∈ \mathcal{X}_0,\qquad (1)\]

and where $u(t) ∈ U(k)$ add where $\{U(k)\}_k$ is a sequence of sets of non-deterministic inputs and $\mathcal{X}_0$ is the set of initial states. Other problems, e.g. $x' = Ax(t) + Bu(t)$ can be brought to the canonical form with the function normalize.

For references to the original papers introducing each algorithm, see the docstrings, e.g. ?Forward.

source

Approximation models

ReachabilityAnalysis.NoBloatingType
NoBloating{EM, SO, IT} <: AbstractApproximationModel

No bloating, or discrete-time, approximation model.

Fields

  • exp – exponentiation method
  • setops – set operations method
  • inv – (optional, default: false) if true, assume that the state matrix is invertible and use its inverse in the Φ functions

Algorithm

The transformations are:

  • $Φ ← \exp(Aδ)$
  • $Ω_0 ← \mathcal{X}_0$
  • $V(k) ← Φ₁(A, δ)U(k)$, $k ≥ 0$.

The function $Φ₁(A, δ)$ is defined in Φ₁. We allow $U$ to be a sequence of time varying non-deterministic input sets.

See also Eqs.(14) in [BFFPSV18].

source
ReachabilityAnalysis.ForwardType
Forward{EM, SO, SI, IT, BT} <: AbstractApproximationModel

Forward approximation model.

Fields

  • exp – exponentiation method
  • setops – set operations method
  • sih – symmetric interval hull
  • inv – (optional, default: false) if true, assume that the state matrix is invertible and use its inverse in the Φ functions
  • backend – (optional, default: nothing) used if the algorithm needs to apply concrete polyhedral computations

Algorithm

The transformations are:

  • $Φ ← \exp(Aδ)$,
  • $Ω_0 ← CH(\mathcal{X}_0, Φ\mathcal{X}_0 ⊕ δU(0) ⊕ E_ψ(U(0), δ) ⊕ E^+(\mathcal{X}_0, δ))$,
  • $V(k) ← δU(k) ⊕ E_ψ(U(k), δ)$.

Here we allow $U$ to be a sequence of time varying non-deterministic input sets.

For the definition of the sets $E_ψ$ and $E^+$ see [FRE11]. The Backward method uses $E^-$.

source
ReachabilityAnalysis.BackwardType
Backward{EM, SO, SI, IT, BT} <: AbstractApproximationModel

Backward approximation model.

Fields

  • exp – exponentiation method
  • setops – set operations method
  • sih – symmetric interval hull
  • inv – (optional, default: false) if true, assume that the state matrix is invertible and use its inverse in the Φ functions
  • backend – (optional, default: nothing) used if the algorithm needs to apply concrete polyhedral computations

Algorithm

The transformations are:

  • $Φ ← \exp(Aδ)$,
  • $Ω_0 ← CH(\mathcal{X}_0, Φ\mathcal{X}_0 ⊕ δU(0) ⊕ E_ψ(U(0), δ) ⊕ E^-(\mathcal{X}_0, δ))$,
  • $V(k) ← δU(k) ⊕ E_ψ(U(k), δ)$.

Here we allow $U$ to be a sequence of time varying non-deterministic input sets.

For the definition of the sets $E_ψ$ and $E^-$ see [FRE11]. The Forward method uses $E^+$.

source
ReachabilityAnalysis.FirstOrderType
FirstOrder{EM} <: AbstractApproximationModel

First-order approximation model.

Fields

  • exp – (optional, default: BaseExp) exponentiation method

Algorithm

The transformations are:

  • $Φ ← \exp(Aδ)$,
  • $Ω_0 ← CH(\mathcal{X}_0, Φ\mathcal{X}_0 ⊕ δU ⊕ B_ε)$

where $B_ε$ is the input ball of radius $ε$ centered in the origin.

Reference

C. Le Guernic and A. Girard: Reachability analysis of linear systems using support functions. NAHS 2010.

source
ReachabilityAnalysis.FirstOrderZonotopeType
FirstOrderZonotope{EM} <: AbstractApproximationModel

First order approximation model that works with zonotopes.

Fields

  • exp – (optional, default: BaseExp) exponentiation method

Algorithm

The transformations are:

  • $Φ ← \exp(Aδ)$,
  • $Ω_0 ← bloat(zono(CH(\mathcal{X}_0, Φ\mathcal{X}_0)), α + β)$

where $bloat(\mathcal{X}, ε)$ bloats the set $\mathcal{X}$ with the value $ε$, $zono(·)$ overapproximates its argument with a zonotope, and $α$ and $β$ are factors computed for the homogeneous system and the inputs, respectively.

Reference

A. Girard: Reachability of uncertain linear systems using zonotopes. HSCC 2005.

source
ReachabilityAnalysis.SecondOrderddtType
SecondOrderddt{EM, SO, SI, IT, BT} <: AbstractApproximationModel

Second-order approximation model used in the tool d/dt. It can be used for overapproximation and underapproximation.

Fields

  • oa – (optional, default: true) flag to choose between overapproximation and underapproximation
  • exp – (optional, default: BaseExp) exponentiation method
  • setops – (optional, default: :lazy) set operations method
  • sih – (optional, default: :concrete) way to compute the symmetric interval hull
  • inv – (optional, default: false) if true, assume that the state matrix is invertible and use its inverse in the Φ functions
  • backend – (optional, default: nothing) used if the algorithm needs to apply concrete polyhedral computations

Algorithm

The transformations are:

  • $Φ ← \exp(Aδ)$,
  • $Ω_0 ← bloat(CH(\mathcal{X}_0, Φ\mathcal{X}_0), ε)$

where $bloat(\mathcal{X}, ε)$ bloats the set $\mathcal{X}$ with the value $ε$. If oa == false, the bloating acts in an inverted way and shrinks the set.

Reference

E. Asarin, T. Dang, O. Maler, O. Bournez: Approximate reachability analysis of piecewise-linear dynamical systems. HSCC 2000.

source
ReachabilityAnalysis.CorrectionHullType
CorrectionHull{EM} <: AbstractApproximationModel

Discretization using the correction hull of the matrix exponential.

Fields

  • exp – exponentiation method
  • order – order of the Taylor series expansion of the matrix exponential

Algorithm

For the homogeneous case, this method implements the transformation:

\[Ω_0 = CH(X_0, e^{Aδ} X_0) ⊕ FX_0\]

where $F$ is the correction (interval) matrix.

For the inhomogeneous case, $x' = Ax + u$, $x ∈ X, u ∈ U$, implements $Ω_0 = CH(X_0, exp(Aδ) X0) ⊕ FX0$ where $F$ is the correction (interval) matrix.

In both cases, if $A$ is an interval matrix, the exponential is overapproximated using methods from IntervalMatrices.jl.

source
ReachabilityAnalysis.StepIntersectType
StepIntersect{DM<:AbstractApproximationModel} <: AbstractApproximationModel

Approximation model that composes (intersecting) one step Forward of a given model with one step backward of the same model.

Fields

  • model – approximation model
  • setops – set operations method

Notes

Let $x' = Ax$ with $x(0) ∈ X₀$. This methods consists of:

  • Compute the discretized system with step-size $δ$ obtaining $Ω0$ and the given approximation model method.

  • Compute the (lazy) linear map $ΦX₀$. This set consists of the (exact) reachable states at the time point $δ$.

  • Apply the approximation model method with initial condition $ΦX₀$ one step backward in time, with the state transition matrix $-A$, call this reach-set $Ω₀₊$

  • Intersect $Ω₀₋$ and $Ω₀₊$ and return such set. The intersection is done either lazily or concretely depending on the specified setops field.

source

Exponentiation

The state transition matrix of the linear ODE $x'(t) = Ax(t) + u(t)$ at time $\delta > 0$ is $\Phi = e^{A\delta}$, hence the algorithms usually require to compute exponential matrices. There are distinct ways to compute the matrix exponential $e^{A\delta}$ depending on the type of $A$ (see e.g. [HIH08]). The available methods can be used through the (unexported) function _exp.

For high dimensional systems (typically n > 2000), computing the matrix exponential is expensive hence it is preferable to compute the action of the matrix exponential over vectors when needed, that is, $e^{δA} v$ for each $v$. This method is particularly well-suited if A is vert sparse. Use the option exp=:krylov (or exp=:lazy) for this purpose.

ReachabilityAnalysis.ExponentiationModule

Interface to matrix exponential backends of different kinds.

Includes common integral computations arising in the discretization of linear differential equations using matrix methods. For applications see e.g. [1] and references therein.

[1] Conservative Time Discretization: A Comparative Study. Marcelo Forets and Christian Schilling (2022). Proceedings of the 17th International Conference on integrated Formal Methods (iFM), LNCS, vol. 13274, pp. 149-167. doi: 10.1007/978-3-031-07727-2_9, arXiv: 2111.01454.

source
ReachabilityAnalysis.Exponentiation._expFunction
_exp(A::AbstractMatrix, δ, [alg]::AbstractExpAlg=BaseExp)

Compute the matrix exponential $e^{Aδ}$.

Input

  • A – matrix
  • δ – step size
  • alg – (optional, default: BaseExp) the algorithm used to take the matrix exponential of , possible options are BaseExp, LazyExp, PadeExp and IntervalExp see details in the Algorithm section below

Output

A matrix or a lazy wrapper of the matrix exponential, depending on alg.

Algorithm

  • BaseExp – (alias: :base) use Higham's scaling and squaring method implemented in Julia standard library; see ?exp for details; if A is a static array, uses the implementation in StaticArrays.jl

  • LazyExp – (alias: :lazy) return a lazy wrapper type around the matrix exponential using the implementation LazySets.SparseMatrixExp

  • PadeExp – (alias: pade) apply Pade approximant method to compute the matrix exponential of a sparse matrix (requires Expokit.jl)

  • IntervalExp – (alias: interval, taylor) apply the Taylor series expansion of the matrix exponential with an interval remainder; works if A is an interval matrix

Notes

If the algorithm LazyExp is used, actions of the matrix exponential are evaluated with an external library such as ExponentialUtilities.jl or Expokit.jl.

source
ReachabilityAnalysis.Exponentiation.Φ₁Function
Φ₁(A::AbstractMatrix, δ, [alg]::AbstractExpAlg=BaseExp, [isinv]::Bool=false, [Φ]=nothing)

Evaluate the series

\[Φ₁(A, δ) = ∑_{i=0}^∞ \dfrac{δ^{i+1}}{(i+1)!}A^i,\]

where $A$ is a square matrix of order $n$ and $δ > 0$.

Input

  • A – coefficients matrix
  • δ – step size
  • alg – (optional, default: BaseExp) the method used to take the matrix exponential of the coefficient matrix; see the documentation of _exp for available options
  • isinv – (optional, default: false) if true, assume that the coefficients matrix is invertible and compute $A^{-1}$
  • Φ – (optional, default: nothing) optionally pass the matrix exponential $e^{Aδ}$

Output

A matrix.

Algorithm

If $A$ is invertible, $Φ₁$ can be computed as

\[Φ₁(A, δ) = A^{-1}(e^{Aδ} - I_n),\]

where $I_n$ is the identity matrix of order $n$.

In the general case, implemented in this function, it can be computed as submatrices of the block matrix

\[P_{2n} = \exp \begin{pmatrix} Aδ && δI_n \\ 0 && 0 \end{pmatrix}.\]

It can be shown that

\[\exp(P_{2n}) = \begin{pmatrix} Φ(A, δ) && Φ₁(A, δ) \\ 0 && δI_n -\end{pmatrix}.\]

where $Φ(A, δ) = e^{Aδ}$. In particular, Φ₁(A, δ) = P[1:n, (n+1):2*n]. This method can be found in [FRE11].

source
ReachabilityAnalysis.Exponentiation.Φ₂Function
Φ₂(A::AbstractMatrix, δ, [alg]::AbstractExpAlg=BaseExp, [isinv]::Bool=false, [Φ]=nothing)

Evaluate the series

\[Φ₂(A, δ) = ∑_{i=0}^∞ \dfrac{δ^{i+2}}{(i+2)!}A^i,\]

where $A$ is a square matrix of order $n$ and $δ > 0$.

Input

  • A – coefficients matrix
  • δ – step size
  • alg – (optional, default: BaseExp) the method used to take the matrix exponential of the coefficient matrix; see the documentation of _exp for available options
  • isinv – (optional, default: false) if true, assume that the coefficients matrix is invertible and compute $A^{-1}$
  • Φ – (optional, default: nothing) optionally pass the matrix exponential $e^{Aδ}$

Output

A matrix.

Algorithm

If $A$ is invertible, $Φ₂$ can be computed as

\[Φ₂(A, δ) = A^{-2}(e^{δA} - I_n - δA).\]

In the general case, implemented in this function, it can be computed as submatrices of the block matrix

\[P_{3n} = \exp \begin{pmatrix} +\end{pmatrix}.\]

where $Φ(A, δ) = e^{Aδ}$. In particular, Φ₁(A, δ) = P[1:n, (n+1):2*n]. This method can be found in [FRE11].

source
ReachabilityAnalysis.Exponentiation.Φ₂Function
Φ₂(A::AbstractMatrix, δ, [alg]::AbstractExpAlg=BaseExp, [isinv]::Bool=false, [Φ]=nothing)

Evaluate the series

\[Φ₂(A, δ) = ∑_{i=0}^∞ \dfrac{δ^{i+2}}{(i+2)!}A^i,\]

where $A$ is a square matrix of order $n$ and $δ > 0$.

Input

  • A – coefficients matrix
  • δ – step size
  • alg – (optional, default: BaseExp) the method used to take the matrix exponential of the coefficient matrix; see the documentation of _exp for available options
  • isinv – (optional, default: false) if true, assume that the coefficients matrix is invertible and compute $A^{-1}$
  • Φ – (optional, default: nothing) optionally pass the matrix exponential $e^{Aδ}$

Output

A matrix.

Algorithm

If $A$ is invertible, $Φ₂$ can be computed as

\[Φ₂(A, δ) = A^{-2}(e^{δA} - I_n - δA).\]

In the general case, implemented in this function, it can be computed as submatrices of the block matrix

\[P_{3n} = \exp \begin{pmatrix} Aδ && δI_n && 0 \\ 0 && 0 && δI_n \\ 0 && 0 && 0 @@ -19,4 +19,4 @@ Φ(A, δ) && Φ₁(A, δ) && Φ₂(A, δ) \\ 0 && I_n && δI_n \\ 0 && 0 && I_n -\end{pmatrix}.\]

where $Φ(A, δ) = e^{Aδ}$. In particular, Φ₂ = P_{3n}[1:n, (2*n+1):3*n]. This method can be found in [FRE11].

source
ReachabilityAnalysis.Exponentiation.BaseExpAlgType
BaseExpAlg <: AbstractExpAlg

Matrix exponential using the scaling and squaring algorithm implemented in Julia Base.

Notes

If the array is static, the method implemented in StaticArrays.jl is applied. This algorithm admits the alias :base.

source
ReachabilityAnalysis.Exponentiation.LazyExpAlgType
LazyExpAlg <: AbstractExpAlg

Lazy wrapper for the matrix exponential, operations defined in LazySets.jl.

Fields

  • m – (optional, default: 30) size of the Krylov subspace
  • tol – (optional, default: 1e-10) tolerance

Notes

This algorithm admits the alias :lazy and also :krylov(using default options).

source
ReachabilityAnalysis.Exponentiation.IntervalExpAlgType
IntervalExpAlg <: AbstractExpAlg

Matrix exponential using an interval enclosure of the Taylor series remainder.

Fields

  • order – order of the Taylor series expansion of the matrix exponential

Notes

This method allows to overapproximate $exp(Aδ)$ with an interval matrix. It also accepts an interval matrix $A$ given as input. This method admits the alias :interval and :taylor.

source

References

  • HIH08Higham, Nicholas J. Functions of matrices: theory and computation. Society for Industrial and Applied Mathematics, 2008.
+\end{pmatrix}.\]

where $Φ(A, δ) = e^{Aδ}$. In particular, Φ₂ = P_{3n}[1:n, (2*n+1):3*n]. This method can be found in [FRE11].

source
ReachabilityAnalysis.Exponentiation.AbstractExpAlgType
AbstractExpAlg

Abstract supertype for all exponentiation algorithms.

source
ReachabilityAnalysis.Exponentiation.BaseExpAlgType
BaseExpAlg <: AbstractExpAlg

Matrix exponential using the scaling and squaring algorithm implemented in Julia Base.

Notes

If the array is static, the method implemented in StaticArrays.jl is applied. This algorithm admits the alias :base.

source
ReachabilityAnalysis.Exponentiation.LazyExpAlgType
LazyExpAlg <: AbstractExpAlg

Lazy wrapper for the matrix exponential, operations defined in LazySets.jl.

Fields

  • m – (optional, default: 30) size of the Krylov subspace
  • tol – (optional, default: 1e-10) tolerance

Notes

This algorithm admits the alias :lazy and also :krylov(using default options).

source
ReachabilityAnalysis.Exponentiation.IntervalExpAlgType
IntervalExpAlg <: AbstractExpAlg

Matrix exponential using an interval enclosure of the Taylor series remainder.

Fields

  • order – order of the Taylor series expansion of the matrix exponential

Notes

This method allows to overapproximate $exp(Aδ)$ with an interval matrix. It also accepts an interval matrix $A$ given as input. This method admits the alias :interval and :taylor.

source
ReachabilityAnalysis.Exponentiation.PadeExpAlgType
PadeExpAlg <: AbstractExpAlg

Matrix exponential for sparse matrices using Pade approximants.

Notes

Requires Expokit.jl. This algorithm admits the alias :pade.

source

References

diff --git a/dev/lib/distributed/index.html b/dev/lib/distributed/index.html index a93da4a44..4a5ffe843 100644 --- a/dev/lib/distributed/index.html +++ b/dev/lib/distributed/index.html @@ -3,7 +3,7 @@ intersection_method::AbstractIntersectionMethod=nothing, check_invariant=false, intersect_invariant=false, - ) where {HS<:HybridSystem, ST<:AdmissibleSet}

Distribute the set of initial states to each mode of a hybrid system.

Input

(and possibly overapproximate to keep WaitingList concretely typed)

Output

A new initial value problem with the same hybrid system but where the set of initial states is the list of tuples (state, X0), for each state in the hybrid system.

source

Julia's documentation on multi-threading describes how to check the number of threads available in the current session, Threads.nthreads(), and how to control the number of threads e.g. by starting Julia with $ julia --threads 4 to use four threads. Please note that to make the number of threads persistent across different Julia sessions you should export an environment variable, export JULIA_NUM_THREADS=4 to be added in your .bashrc or .bash_profile files, or setting ENV["JULIA_NUM_THREADS"]=4 in your .julia/config/startup.jl file.

GPGPU computing

The recommended entry point for using general-purpose graphical processing units (GPGPU) in Julia is the library CUDA.jl. The package exports an array type CuArray used as an abstraction to perform array operations on the GPU device; common linear algebra operations are readily available through dispatch on CuArray. Apart from convenient high-level syntax to do basic linear algebra on GPUs; more advanced kernel functions can be implemented as well as it is explained in the CUDA.jl documentation.

Parallel solve

Reachability computations can be computed in parallel using Julia's built-in multithreaded parallelism. This feature is available formulating and solving an initial-value problem with an array of initial conditions.

About BLAS threads

To control the number of threads used by your BLAS library, use the function BLAS.set_num_threads(n), where n is an integer. Furthermore, the function BLAS.get_num_threads() defined below will return the current value.

Note. If you are using Julia v"0.7-" (run the command VERSION to find this), instead of Base.LinAlg below use LinearAlgebra, and this module should have been loaded in the current scope with using LinearAlgebra.

#
+            ) where {HS<:HybridSystem, ST<:AdmissibleSet}

Distribute the set of initial states to each mode of a hybrid system.

Input

(and possibly overapproximate to keep WaitingList concretely typed)

Output

A new initial value problem with the same hybrid system but where the set of initial states is the list of tuples (state, X0), for each state in the hybrid system.

source

Julia's documentation on multi-threading describes how to check the number of threads available in the current session, Threads.nthreads(), and how to control the number of threads e.g. by starting Julia with $ julia --threads 4 to use four threads. Please note that to make the number of threads persistent across different Julia sessions you should export an environment variable, export JULIA_NUM_THREADS=4 to be added in your .bashrc or .bash_profile files, or setting ENV["JULIA_NUM_THREADS"]=4 in your .julia/config/startup.jl file.

GPGPU computing

The recommended entry point for using general-purpose graphical processing units (GPGPU) in Julia is the library CUDA.jl. The package exports an array type CuArray used as an abstraction to perform array operations on the GPU device; common linear algebra operations are readily available through dispatch on CuArray. Apart from convenient high-level syntax to do basic linear algebra on GPUs; more advanced kernel functions can be implemented as well as it is explained in the CUDA.jl documentation.

Parallel solve

Reachability computations can be computed in parallel using Julia's built-in multithreaded parallelism. This feature is available formulating and solving an initial-value problem with an array of initial conditions.

About BLAS threads

To control the number of threads used by your BLAS library, use the function BLAS.set_num_threads(n), where n is an integer. Furthermore, the function BLAS.get_num_threads() defined below will return the current value.

Note. If you are using Julia v"0.7-" (run the command VERSION to find this), instead of Base.LinAlg below use LinearAlgebra, and this module should have been loaded in the current scope with using LinearAlgebra.

#
 # This function is a part of Julia. License is MIT: https://julialang.org/license
 #
 function get_num_threads() # anonymous so it will be serialized when called
@@ -25,4 +25,4 @@
     end
 
     return nothing
-end
+end diff --git a/dev/lib/flowpipes/index.html b/dev/lib/flowpipes/index.html index 22950395c..c203aa767 100644 --- a/dev/lib/flowpipes/index.html +++ b/dev/lib/flowpipes/index.html @@ -1,2 +1,2 @@ -Flowpipes · ReachabilityAnalysis.jl

Flowpipes

Abstract interface

The following functions are available at the interface level.

ReachabilityAnalysis.basetypeMethod
basetype(T::Type{<:AbstractFlowpipe})

Return the base type of the given flowpipe type (i.e., without type parameters).

Input

  • T – flowpipe type, used for dispatch

Output

The base type of T.

source
LazySets.ρMethod
LazySets.ρ(d::AbstractVector, fp::AbstractFlowpipe)

Input

  • d – direction
  • fp – flowpipe

Output

The support function of the flowpipe along the given direction d.

Notes

In this fallback implementation, the flowpipe behaves like the union of the reach-sets, i.e. the implementation is analogue to that of a LazySet.UnionSetArray.

source
LazySets.σMethod
LazySets.σ(d::AbstractVector, fp::AbstractFlowpipe)

Input

  • d – direction
  • fp – flowpipe

Output

The support vector of the flowpipe along the given direction d.

Notes

In this fallback implementation, the flowpipe behaves like the union of the reach-sets, i.e. the implementation is analogue to that of a LazySet.UnionSetArray.

source
LazySets.dimMethod
LazySets.dim(fp::AbstractFlowpipe)

Input

  • fp – flowpipe

Output

An integer representing the ambient dimension of the flowpipe.

source
LazySets.setMethod
set(fp::AbstractFlowpipe, ind::Integer)

Return the geometric set represented by this flowpipe at the given index.

Input

  • fp – flowpipe
  • ind – index (from 1 to length(flowpipe))

Output

The set wrapped by the flowpipe at the given index.

source
LazySets.setMethod
set(fp::AbstractFlowpipe, ind::AbstractVector)

Return the union of set represented by this flowpipe at the given indices.

Input

  • fp – flowpipe
  • ind – vector of indices

Output

The set union stored in the flowpipe at the given indices.

source
LazySets.setMethod
set(fp::AbstractFlowpipe)

Return the geometric set represented by this flowpipe as the union of reach-sets.

Input

  • fp – flowpipe

Output

The set union of the array of reach-sets of the flowpipe.

Notes

To retrieve the array of sets stored in the flowpipe use array(fp). To get a set at a particular index, use set(F[ind]) or set(F, ind).

source
ReachabilityAnalysis.tstartMethod
tstart(fp::AbstractFlowpipe)

Return the initial time of this flowpipe.

Input

  • fp – flowpipe

Output

A float representing the initial time of the given flowpipe. The fallback is computed by taking the initial time of the first reach-set.

source
ReachabilityAnalysis.tendMethod
tend(fp::AbstractFlowpipe)

Return the final time of this flowpipe.

Input

  • fp – flowpipe

Output

A float representing the initial time of the given flowpipe. The fallback is computed by taking the final time of the last reach-set.

source
ReachabilityAnalysis.tspanMethod
tspan(fp::AbstractFlowpipe)

Return time span of this flowpipe.

Input

  • fp – flowpipe

Output

The interval representing the time span of the given flowpipe. The fallback is computed as (tstart(fp), tend(fp)), see tstart(::AbstractFlowpipe) and tend(::AbstractFlowpipe) for details.

source
ReachabilityAnalysis.varsMethod
vars(fp::AbstractFlowpipe)

Return the tuple of variable indices of the flowpipe.

Input

  • fp – flowpipe

Output

Tuple of integers with the variable indices of the flowpipe, typically $1, 2, …, n$ where $n$ is the dimension of the flowpipe.

Notes

The fallback implementation assumes first reach-set is representative.

source

Flowpipe

ReachabilityAnalysis.FlowpipeType
Flowpipe{N, RT<:AbstractReachSet{N}, VRT<:AbstractVector{RT}} <: AbstractFlowpipe

Type that wraps a flowpipe, which is an iterable collection of reach-sets that behaves like their set union.

Fields

  • Xk – array of reach-sets
  • ext – extension dictionary; field used by extensions

Notes

The dimension of the flowpipe corresponds to the dimension of the underlying reach-sets; in this type, it is is assumed that the dimension is the same for the different reach-sets.

source
ReachabilityAnalysis.locationMethod
location(F::Flowpipe)

Return the location of a flowpipe within a hybrid system, or missing if it is not defined.

Input

  • F – flowpipe

Output

The :loc_id value of stored in the flowpipe's extension field.

source

The following methods are available.

ReachabilityAnalysis.shiftFunction
shift(R::AbstractReachSet, t0::Number)

Perform a time-shift of the given reach-set.

Input

  • R – reach-set
  • t0 – number that corresponds to the time-shift

Output

A new reach-set of the same type of R such that its time-span has been shifted by t0.

source
shift(fp::Flowpipe{N, <:AbstractReachSet}, t0::Number) where {N}

Return the time-shifted flowpipe by the given number.

Input

  • fp – flowpipe
  • t0 – time shift

Output

A new flowpipe such that the time-span of each constituent reach-set has been shifted by t0.

Notes

See also Shift for the lazy counterpart.

source

Hybrid flowpipe

ReachabilityAnalysis.HybridFlowpipeType
HybridFlowpipe{N, D, FT<:AbstractFlowpipe, VOA<:VectorOfArray{N, D, Vector{FT}}} <: AbstractFlowpipe

Type that wraps a vector of flowpipes of the same type, such that they are contiguous in time.

Fields

  • Fk – vector of flowpipes
  • ext – (optional, default: empty) dictionary for extensions

Notes

The evaluation functions (in time) for this type do not assume that the flowpipes are contiguous in time. That is, the final time of the i-th flowpipe does not match the start time of the i+1-th flowpipe.

source

Mixed flowpipe

ReachabilityAnalysis.MixedFlowpipeType
MixedFlowpipe{N, D, FT<:AbstractFlowpipe, VOA<:VectorOfArray{N, D, Vector{FT}}} <: AbstractFlowpipe

Type that wraps a vector of flowpipes of the same time, such that they are not necessarily contiguous in time.

Fields

  • Fk – vector of flowpipes
  • ext – (optional, default: empty) dictionary for extensions

Notes

This type does not assume that the flowpipes are contiguous in time.

source

Shifted flowpipe

ReachabilityAnalysis.ShiftedFlowpipeType
ShiftedFlowpipe{FT<:AbstractFlowpipe, NT<:Number} <: AbstractFlowpipe

Type that lazily represents a flowpipe that has been shifted in time.

Fields

  • F – original flowpipe
  • t0 – time shift

Notes

This type can wrap any concrete subtype of AbstractFlowpipe, and the extra field t0 is such that the time spans of each reach-set in F are shifted by the amount t0 (which should be a subtype of Number).

A convenience constructor alias Shift is given.

source

Partitioned flowpipe

ReachabilityAnalysis.PartitionedFlowpipeType
PartitionedFlowpipe{N, D, FT<:AbstractFlowpipe, VOA<:VectorOfArray{N, D, Vector{FT}}} <: AbstractFlowpipe

Type that wraps a vector of flowpipes of possibly different types.

Fields

  • Fk – vector of flowpipes
  • ext – (optional, default: empty) dictionary for extensions

Notes

source

Mapped flowpipe

+Flowpipes · ReachabilityAnalysis.jl

Flowpipes

Abstract interface

The following functions are available at the interface level.

ReachabilityAnalysis.basetypeMethod
basetype(T::Type{<:AbstractFlowpipe})

Return the base type of the given flowpipe type (i.e., without type parameters).

Input

  • T – flowpipe type, used for dispatch

Output

The base type of T.

source
LazySets.ρMethod
LazySets.ρ(d::AbstractVector, fp::AbstractFlowpipe)

Input

  • d – direction
  • fp – flowpipe

Output

The support function of the flowpipe along the given direction d.

Notes

In this fallback implementation, the flowpipe behaves like the union of the reach-sets, i.e. the implementation is analogue to that of a LazySet.UnionSetArray.

source
LazySets.σMethod
LazySets.σ(d::AbstractVector, fp::AbstractFlowpipe)

Input

  • d – direction
  • fp – flowpipe

Output

The support vector of the flowpipe along the given direction d.

Notes

In this fallback implementation, the flowpipe behaves like the union of the reach-sets, i.e. the implementation is analogue to that of a LazySet.UnionSetArray.

source
LazySets.dimMethod
LazySets.dim(fp::AbstractFlowpipe)

Input

  • fp – flowpipe

Output

An integer representing the ambient dimension of the flowpipe.

source
LazySets.setMethod
set(fp::AbstractFlowpipe, ind::Integer)

Return the geometric set represented by this flowpipe at the given index.

Input

  • fp – flowpipe
  • ind – index (from 1 to length(flowpipe))

Output

The set wrapped by the flowpipe at the given index.

source
LazySets.setMethod
set(fp::AbstractFlowpipe, ind::AbstractVector)

Return the union of set represented by this flowpipe at the given indices.

Input

  • fp – flowpipe
  • ind – vector of indices

Output

The set union stored in the flowpipe at the given indices.

source
LazySets.setMethod
set(fp::AbstractFlowpipe)

Return the geometric set represented by this flowpipe as the union of reach-sets.

Input

  • fp – flowpipe

Output

The set union of the array of reach-sets of the flowpipe.

Notes

To retrieve the array of sets stored in the flowpipe use array(fp). To get a set at a particular index, use set(F[ind]) or set(F, ind).

source
ReachabilityAnalysis.tstartMethod
tstart(fp::AbstractFlowpipe)

Return the initial time of this flowpipe.

Input

  • fp – flowpipe

Output

A float representing the initial time of the given flowpipe. The fallback is computed by taking the initial time of the first reach-set.

source
ReachabilityAnalysis.tendMethod
tend(fp::AbstractFlowpipe)

Return the final time of this flowpipe.

Input

  • fp – flowpipe

Output

A float representing the initial time of the given flowpipe. The fallback is computed by taking the final time of the last reach-set.

source
ReachabilityAnalysis.tspanMethod
tspan(fp::AbstractFlowpipe)

Return time span of this flowpipe.

Input

  • fp – flowpipe

Output

The interval representing the time span of the given flowpipe. The fallback is computed as (tstart(fp), tend(fp)), see tstart(::AbstractFlowpipe) and tend(::AbstractFlowpipe) for details.

source
ReachabilityAnalysis.varsMethod
vars(fp::AbstractFlowpipe)

Return the tuple of variable indices of the flowpipe.

Input

  • fp – flowpipe

Output

Tuple of integers with the variable indices of the flowpipe, typically $1, 2, …, n$ where $n$ is the dimension of the flowpipe.

Notes

The fallback implementation assumes first reach-set is representative.

source

Flowpipe

ReachabilityAnalysis.FlowpipeType
Flowpipe{N, RT<:AbstractReachSet{N}, VRT<:AbstractVector{RT}} <: AbstractFlowpipe

Type that wraps a flowpipe, which is an iterable collection of reach-sets that behaves like their set union.

Fields

  • Xk – array of reach-sets
  • ext – extension dictionary; field used by extensions

Notes

The dimension of the flowpipe corresponds to the dimension of the underlying reach-sets; in this type, it is is assumed that the dimension is the same for the different reach-sets.

source
ReachabilityAnalysis.locationMethod
location(F::Flowpipe)

Return the location of a flowpipe within a hybrid system, or missing if it is not defined.

Input

  • F – flowpipe

Output

The :loc_id value of stored in the flowpipe's extension field.

source

The following methods are available.

ReachabilityAnalysis.shiftFunction
shift(R::AbstractReachSet, t0::Number)

Perform a time-shift of the given reach-set.

Input

  • R – reach-set
  • t0 – number that corresponds to the time-shift

Output

A new reach-set of the same type of R such that its time-span has been shifted by t0.

source
shift(fp::Flowpipe{N, <:AbstractReachSet}, t0::Number) where {N}

Return the time-shifted flowpipe by the given number.

Input

  • fp – flowpipe
  • t0 – time shift

Output

A new flowpipe such that the time-span of each constituent reach-set has been shifted by t0.

Notes

See also Shift for the lazy counterpart.

source

Hybrid flowpipe

ReachabilityAnalysis.HybridFlowpipeType
HybridFlowpipe{N, D, FT<:AbstractFlowpipe, VOA<:VectorOfArray{N, D, Vector{FT}}} <: AbstractFlowpipe

Type that wraps a vector of flowpipes of the same type, such that they are contiguous in time.

Fields

  • Fk – vector of flowpipes
  • ext – (optional, default: empty) dictionary for extensions

Notes

The evaluation functions (in time) for this type do not assume that the flowpipes are contiguous in time. That is, the final time of the i-th flowpipe does not match the start time of the i+1-th flowpipe.

source

Mixed flowpipe

ReachabilityAnalysis.MixedFlowpipeType
MixedFlowpipe{N, D, FT<:AbstractFlowpipe, VOA<:VectorOfArray{N, D, Vector{FT}}} <: AbstractFlowpipe

Type that wraps a vector of flowpipes of the same time, such that they are not necessarily contiguous in time.

Fields

  • Fk – vector of flowpipes
  • ext – (optional, default: empty) dictionary for extensions

Notes

This type does not assume that the flowpipes are contiguous in time.

source

Shifted flowpipe

ReachabilityAnalysis.ShiftedFlowpipeType
ShiftedFlowpipe{FT<:AbstractFlowpipe, NT<:Number} <: AbstractFlowpipe

Type that lazily represents a flowpipe that has been shifted in time.

Fields

  • F – original flowpipe
  • t0 – time shift

Notes

This type can wrap any concrete subtype of AbstractFlowpipe, and the extra field t0 is such that the time spans of each reach-set in F are shifted by the amount t0 (which should be a subtype of Number).

A convenience constructor alias Shift is given.

source

Partitioned flowpipe

ReachabilityAnalysis.PartitionedFlowpipeType
PartitionedFlowpipe{N, D, FT<:AbstractFlowpipe, VOA<:VectorOfArray{N, D, Vector{FT}}} <: AbstractFlowpipe

Type that wraps a vector of flowpipes of possibly different types.

Fields

  • Fk – vector of flowpipes
  • ext – (optional, default: empty) dictionary for extensions

Notes

source

Mapped flowpipe

diff --git a/dev/lib/internals/index.html b/dev/lib/internals/index.html index 4a829efe5..b7807088c 100644 --- a/dev/lib/internals/index.html +++ b/dev/lib/internals/index.html @@ -2,4 +2,4 @@ Internal functions and macros · ReachabilityAnalysis.jl

Internal functions and macros

This section of the manual includes some internal (i.e. unexported) functions and macros used within the library.

Function annotations

ReachabilityAnalysis.@requiresMacro
@requires(module_name)

Convenience macro to annotate that a package is required to use a certain function.

Input

  • module_name – name of the required package

Output

The macro expands to an assertion that checks whether the module module_name is known in the calling scope.

Notes

Usage:

function foo(...)
     @require MyPackage
     ... # functionality that requires MyPackage to be loaded
-end
source

Algorithm defaults

ReachabilityAnalysis._default_cpostFunction
_default_cpost(ivp::IVP{<:AbstractContinuousSystem}, tspan; kwargs...)

Input

  • ivp – initial-value problem
  • tspan – time-span

Output

A continuous post-operator that can handle the given initial-value problem.

Notes

If the system is affine, then:

  • If it is one-dimensional, algorithm INT is used, otherwise,
  • Algorithm GLGM06 is used.

If the system is not affine, then the algorithm TMJets is used.

source

Documentation fixes

The following duplicated documentation is necessary due to a problem in the Documenter package.

ReachabilityAnalysis.basetypeFunction
basetype(T::Type{<:AbstractReachSet})

Return the base type of the given reach-set type (i.e., without type parameters).

Input

  • T – reach-set type, used for dispatch

Output

The base type of T.

source
basetype(T::Type{<:AbstractFlowpipe})

Return the base type of the given flowpipe type (i.e., without type parameters).

Input

  • T – flowpipe type, used for dispatch

Output

The base type of T.

source
+endsource

Algorithm defaults

ReachabilityAnalysis._default_cpostFunction
_default_cpost(ivp::IVP{<:AbstractContinuousSystem}, tspan; kwargs...)

Input

  • ivp – initial-value problem
  • tspan – time-span

Output

A continuous post-operator that can handle the given initial-value problem.

Notes

If the system is affine, then:

  • If it is one-dimensional, algorithm INT is used, otherwise,
  • Algorithm GLGM06 is used.

If the system is not affine, then the algorithm TMJets is used.

source

Documentation fixes

The following duplicated documentation is necessary due to a problem in the Documenter package.

ReachabilityAnalysis.basetypeFunction
basetype(T::Type{<:AbstractReachSet})

Return the base type of the given reach-set type (i.e., without type parameters).

Input

  • T – reach-set type, used for dispatch

Output

The base type of T.

source
basetype(T::Type{<:AbstractFlowpipe})

Return the base type of the given flowpipe type (i.e., without type parameters).

Input

  • T – flowpipe type, used for dispatch

Output

The base type of T.

source
diff --git a/dev/lib/operations/index.html b/dev/lib/operations/index.html index fc0b08017..b9fb82b26 100644 --- a/dev/lib/operations/index.html +++ b/dev/lib/operations/index.html @@ -1,2 +1,2 @@ -Further set operations · ReachabilityAnalysis.jl

Further set operations

Convexification

ReachabilityAnalysis.convexifyFunction
convexify(fp::Flowpipe{N, <:AbstractLazyReachSet}) where {N}

Return a reach-set representing the convex hull array of the flowpipe.

Input

  • fp – flowpipe

Output

A reach-set that contains the convex hull array, ConvexHullArray, of the given flowpipe.

Notes

The time span of this reach-set is the same as the time-span of the flowpipe.

This function allocates an array to store the sets of the flowpipe.

source
convexify(fp::AbstractVector{<:AbstractLazyReachSet{N}}) where {N}

Return a reach-set representing the convex hull array of the array of the array of reach-sets.

Input

  • fp – array of reach-sets

Output

A reach-set that contains the convex hull array, ConvexHullArray, of the given flowpipe.

Notes

The time span of this reach-set corresponds to the minimum (resp. maximum) of the time span of each reach-set in fp.

This function allocates an array to store the sets of the flowpipe.

The function doesn't assume that the reach-sets are time ordered.

source

Quality measures

ReachabilityAnalysis.relative_errorFunction
relative_error(x, x_ref)

Compute the relative error between interval x and a reference interval xref.

Input

  • x – interval
  • xref – reference interval

Output

An interval representing the relative error (in percentage) of x with respect to the reference interval xref.

Algorithm

If $x = [x_L, x_H]$andxref = [xref_L, xref_H], the output is the intervaly = 100 * [y_L, y_H]computed asy_L = -(x_L - xref_L) / denandy_H = (x_H - xref_H) / den, whereden = xref_H - xref_L`.

This function measures the relative error between an interval x and a reference interval x_ref accounting for it the lower and the upper range bounds separately (see Eq. (20) in [1]).

References

  • [1] Althoff, Matthias, Dmitry Grebenyuk, and Niklas Kochdumper. "Implementation of Taylor models in CORA 2018." Proc. of the 5th International Workshop on Applied Verification for Continuous and Hybrid Systems. 2018. pdf
source
+Further set operations · ReachabilityAnalysis.jl

Further set operations

Convexification

ReachabilityAnalysis.convexifyFunction
convexify(fp::Flowpipe{N, <:AbstractLazyReachSet}) where {N}

Return a reach-set representing the convex hull array of the flowpipe.

Input

  • fp – flowpipe

Output

A reach-set that contains the convex hull array, ConvexHullArray, of the given flowpipe.

Notes

The time span of this reach-set is the same as the time-span of the flowpipe.

This function allocates an array to store the sets of the flowpipe.

source
convexify(fp::AbstractVector{<:AbstractLazyReachSet{N}}) where {N}

Return a reach-set representing the convex hull array of the array of the array of reach-sets.

Input

  • fp – array of reach-sets

Output

A reach-set that contains the convex hull array, ConvexHullArray, of the given flowpipe.

Notes

The time span of this reach-set corresponds to the minimum (resp. maximum) of the time span of each reach-set in fp.

This function allocates an array to store the sets of the flowpipe.

The function doesn't assume that the reach-sets are time ordered.

source

Quality measures

ReachabilityAnalysis.relative_errorFunction
relative_error(x, x_ref)

Compute the relative error between interval x and a reference interval xref.

Input

  • x – interval
  • xref – reference interval

Output

An interval representing the relative error (in percentage) of x with respect to the reference interval xref.

Algorithm

If $x = [x_L, x_H]$andxref = [xref_L, xref_H], the output is the intervaly = 100 * [y_L, y_H]computed asy_L = -(x_L - xref_L) / denandy_H = (x_H - xref_H) / den, whereden = xref_H - xref_L`.

This function measures the relative error between an interval x and a reference interval x_ref accounting for it the lower and the upper range bounds separately (see Eq. (20) in [1]).

References

  • [1] Althoff, Matthias, Dmitry Grebenyuk, and Niklas Kochdumper. "Implementation of Taylor models in CORA 2018." Proc. of the 5th International Workshop on Applied Verification for Continuous and Hybrid Systems. 2018. pdf
source
diff --git a/dev/lib/projections/index.html b/dev/lib/projections/index.html index 167c2dc37..8abbcb53c 100644 --- a/dev/lib/projections/index.html +++ b/dev/lib/projections/index.html @@ -1,2 +1,2 @@ -Projections · ReachabilityAnalysis.jl

Projections

Concrete projection

TODO: document project

Lazy projection

TODO: document Projection

LazySets.ProjectionFunction
Projection(fp::AbstractFlowpipe, vars::NTuple{D, T}) where {D, T<:Integer}

Return the lazy projection of a flowpipe.

Input

Output

Notes

The projection is lazy, and consists of mapping each set X in the flowpipe to MX, where M is the projection matrix associated with the given variables vars.

source
+Projections · ReachabilityAnalysis.jl

Projections

Concrete projection

TODO: document project

Lazy projection

TODO: document Projection

LazySets.ProjectionFunction
Projection(fp::AbstractFlowpipe, vars::NTuple{D, T}) where {D, T<:Integer}

Return the lazy projection of a flowpipe.

Input

Output

Notes

The projection is lazy, and consists of mapping each set X in the flowpipe to MX, where M is the projection matrix associated with the given variables vars.

source
diff --git a/dev/lib/reachsets/index.html b/dev/lib/reachsets/index.html index b5377038a..e21eb3e9b 100644 --- a/dev/lib/reachsets/index.html +++ b/dev/lib/reachsets/index.html @@ -1,3 +1,3 @@ -Reach-sets · ReachabilityAnalysis.jl

Reach-sets

Abstract interface

ReachabilityAnalysis.AbstractReachSetType
AbstractReachSet{N}

Abstract type for all reach-sets types.

Notes

A reach-set is a set representation X associated to a given time span Δt.

In its simplest form, we represent reach-sets with a struct that wraps the tuple (X, Δt), where X corresponds to a geometric set, eg. a polytope, and Δt is the interval with the time span associated to this reach-set.

This type is parametric in N. The parameter N represents for the type of numerical coefficient used in the representation (typically, N = Float64).

Although concrete subtypes of AbstractReachSet may represent the set X in different ways, or carry additional information as an extra type field, they should all implement the AbstractReachSet interface to enable shared functionality for reach-set types. In particular, each concrete subtype should implement the following methods:

  • set – return the geometric set
  • setrep – return the type of the set representation
  • tspan – return the time interval span
  • tstart – return the initial time
  • tend – return the final time
  • dim – return ambient dimension of the reach-set
source

The functions are available at the interface level.

ReachabilityAnalysis.basetypeMethod
basetype(T::Type{<:AbstractReachSet})

Return the base type of the given reach-set type (i.e., without type parameters).

Input

  • T – reach-set type, used for dispatch

Output

The base type of T.

source
LazySets.setMethod
set(R::AbstractReachSet)

Return the geometric set represented by this reach-set.

Input

  • R – reach-set

Output

The set wrapped by the given reach-set.

source
ReachabilityAnalysis.setrepMethod
setrep(R::AbstractReachSet)

Return the type of the set representation of this reach-set.

Input

  • R – reach-set

Output

Type of the set representation of the given reach-set.

source
ReachabilityAnalysis.tspanMethod
tspan(R::AbstractReachSet)

Return time span of this reach-set.

Input

  • R – reach-set

Output

The interval representing the time span of the given reach-set.

source
ReachabilityAnalysis.tstartMethod
tstart(R::AbstractReachSet)

Return the initial time of this reach-set.

Input

  • R – reach-set

Output

A float representing the initial time of the given reach-set.

source
ReachabilityAnalysis.tendMethod
tend(R::AbstractReachSet)

Return the final time of this reach-set.

Input

  • R – reach-set

Output

A float representing the final time of the given reach-set.

source
LazySets.dimMethod
dim(R::AbstractReachSet)

Return the ambient dimension of the reach-set.

Input

  • R – reach-set

Output

An integer corresponding to the ambient dimension of the given reach-set.

source
Base.copyMethod
copy(R::AbstractReachSet)

Return a copy of the given reach-set.

Input

  • R – reach-set

Output

A new reach-set of the sam type and the same field values as R.

source
ReachabilityAnalysis.shiftMethod
shift(fp::Flowpipe{N, <:AbstractReachSet}, t0::Number) where {N}

Return the time-shifted flowpipe by the given number.

Input

  • fp – flowpipe
  • t0 – time shift

Output

A new flowpipe such that the time-span of each constituent reach-set has been shifted by t0.

Notes

See also Shift for the lazy counterpart.

source
ReachabilityAnalysis.AbstractLazyReachSetType
AbstractLazyReachSet{N} <: AbstractReachSet{N}

Abstract type for all reach-set types that use a LazySet for the underlying set representation.

Notes

An AbstractLazyReachSet is the interface for reach-sets such that the geometric set is represented by any subtype of LazySet.

This types implements the LazySets interface, namely support function (ρ), support vector (σ) and ambient dimension (dim) functions. Hence, these functions directly apply to concrete subtypes of an AbstractLazyReachSet. The set wrapped by this type is obtained through set(R).

The following functions should be implemented by any concrete subtype:

  • reconstruct – create a new instance of the given reach-set with a different set representation but sharing the other fields, i.e. the same time span (and the same for other fields, if applicable)

In addition to the functions inherited from AbstractReachSet, the following are available:

  • linear_map – concrete linear map of a reach-set
  • project – projection of a reach-set
  • shift – time-shift of a reach-set
  • vars – tuple of integers associated to the variables of the given reach-set
source
LazySets.projectMethod
project(R::AbstractLazyReachSet, variables::NTuple{D, M};
-        check_vars::Bool=true) where {D, M<:Integer}

Projects a reach-set onto the subspace spanned by the given variables.

Input

  • R – reach-set
  • vars – tuple of variables for the projection
  • check_vars – (optional, default: true) if true, check that the given variable indices vars are a subset of the variables of R

Output

A SparseReachSet whose variable indices are given by vars.

The type of the new reach-set depends on the type of the reach-set R:

  • If R contains a hyperrectangular set, the output is a hyperrectangle.
  • If R contains a zonotopic set, the output is a zonotope.
  • Otherwise, the return type is a polytope either in constraint representation or in vertex representation, depending on the dimension and the properties of M. For details, see LazySets.project.

Notes

This function can be used to project a reach-set onto a lower-dimensional sub-space. The projection is concrete, and it consists of mapping the reach-set X = set(R) to a new reach-set through to MX, where M is the projection matrix associated with the given variables vars.

To project onto the time variable, use the index 0. For instance, (0, 1) projects onto the time variable and the first variable in R.

source

Reachable set

ReachabilityAnalysis.ReachSetType
ReachSet{N, ST<:LazySet{N}} <: AbstractLazyReachSet{N}

Type that wraps a reach-set using a LazySet as underlying representation.

Fields

  • X – set
  • Δt – time interval

Notes

A ReachSet is a struct representing (an approximation of) the reachable states for a given time interval. The type of the representation is ST, which may be any subtype LazySet. For efficiency reasons, ST should be concretely typed.

By assumption the coordinates in this reach-set are associated to the integers 1, …, n. The function vars returns such tuple.

source

Sparse reachable set

ReachabilityAnalysis.SparseReachSetType
SparseReachSet{N, ST<:LazySet{N}, D} <: AbstractReachSet{N}

Type that wraps a reach-set using a LazySet as underlying representation, together with a tuple of variables associated to this reach-set.

Fields

  • X – set
  • Δt – time interval
  • vars – tuple of variable indices represented by the set X

Notes

A SparseReachSet is a struct representing (an approximation of) the reachable states for a given time interval. The type of the representation is ST, which may be any subtype of LazySet (ideally, concrete). Moreover, this type also stores information about the variables (also named coordinates, or by abuse of notation, dimensions) corresponding to the set X.

For instance in the ambient space n=5, one may have a SparseReachSet whose variables tuple is vars = (4, 5, 6), i.e. representing a three-dimensional projection of the full-dimensional reach-set. In consequence, the dimension of X doesn't match the length of vars, in general

In this type, the parameter N represents the numerical type of the LazySet (typically, Float64), the type ST represents the set representation used, and D denotes the dimension of this sparse reach set. Note that, in contrast to ReachSet, for SparseReachSet the number of dimensions is part of the type information.

source

Taylor model reach-sets

ReachabilityAnalysis.TaylorModelReachSetType
TaylorModelReachSet{N, S} <: AbstractTaylorModelReachSet{N}

Reach-set representation consisting of a vector of taylor models in one variable (the "time" variable) whose coefficients are multivariate polynomials (the "space" variables).

Notes

The parameters N and S refer to the numerical type of the representation (used for the Taylor model in time and Taylor series polynomials respectively). The space variables are assumed to be normalized to the interval [-1, 1]. It is assumed that the time domain is the same for all components.

source

Template reach-sets

ReachabilityAnalysis.TemplateReachSetType
TemplateReachSet{N, VN, TN<:AbstractDirections{N, VN}, SN<:AbstractVector{N}} <: AbstractLazyReachSet{N}

Reach set that stores the support function of a set at a give set of directions.

Notes

The struct has the following parameters:

  • N – refers to the numerical type of the representation.
  • VN – refers to the vector type of the template
  • TN – refers to the template type
  • SN – vector type that holds the support function evaluations

Concrete subtypes of AbstractDirections are defined in the LazySets library.

This reach-set implicitly represents a set by a set of directions and support functions. set(R::TemplateReachSet) returns a polyhedron in half-space representation.

Apart from the getter functions inherited from the AbstractReachSet interface, the following methods are available:

  • directions(R) – return the set of directions normal to the faces of this reach-set
  • support_functions(R) – return the vector of support function evaluations
  • support_functions(R, i) – return the i-th coordinate of the vector of support function evaluatons
source
+Reach-sets · ReachabilityAnalysis.jl

Reach-sets

Abstract interface

ReachabilityAnalysis.AbstractReachSetType
AbstractReachSet{N}

Abstract type for all reach-sets types.

Notes

A reach-set is a set representation X associated to a given time span Δt.

In its simplest form, we represent reach-sets with a struct that wraps the tuple (X, Δt), where X corresponds to a geometric set, eg. a polytope, and Δt is the interval with the time span associated to this reach-set.

This type is parametric in N. The parameter N represents for the type of numerical coefficient used in the representation (typically, N = Float64).

Although concrete subtypes of AbstractReachSet may represent the set X in different ways, or carry additional information as an extra type field, they should all implement the AbstractReachSet interface to enable shared functionality for reach-set types. In particular, each concrete subtype should implement the following methods:

  • set – return the geometric set
  • setrep – return the type of the set representation
  • tspan – return the time interval span
  • tstart – return the initial time
  • tend – return the final time
  • dim – return ambient dimension of the reach-set
source

The functions are available at the interface level.

ReachabilityAnalysis.basetypeMethod
basetype(T::Type{<:AbstractReachSet})

Return the base type of the given reach-set type (i.e., without type parameters).

Input

  • T – reach-set type, used for dispatch

Output

The base type of T.

source
LazySets.setMethod
set(R::AbstractReachSet)

Return the geometric set represented by this reach-set.

Input

  • R – reach-set

Output

The set wrapped by the given reach-set.

source
ReachabilityAnalysis.setrepMethod
setrep(R::AbstractReachSet)

Return the type of the set representation of this reach-set.

Input

  • R – reach-set

Output

Type of the set representation of the given reach-set.

source
ReachabilityAnalysis.tspanMethod
tspan(R::AbstractReachSet)

Return time span of this reach-set.

Input

  • R – reach-set

Output

The interval representing the time span of the given reach-set.

source
ReachabilityAnalysis.tstartMethod
tstart(R::AbstractReachSet)

Return the initial time of this reach-set.

Input

  • R – reach-set

Output

A float representing the initial time of the given reach-set.

source
ReachabilityAnalysis.tendMethod
tend(R::AbstractReachSet)

Return the final time of this reach-set.

Input

  • R – reach-set

Output

A float representing the final time of the given reach-set.

source
LazySets.dimMethod
dim(R::AbstractReachSet)

Return the ambient dimension of the reach-set.

Input

  • R – reach-set

Output

An integer corresponding to the ambient dimension of the given reach-set.

source
Base.copyMethod
copy(R::AbstractReachSet)

Return a copy of the given reach-set.

Input

  • R – reach-set

Output

A new reach-set of the sam type and the same field values as R.

source
ReachabilityAnalysis.shiftMethod
shift(fp::Flowpipe{N, <:AbstractReachSet}, t0::Number) where {N}

Return the time-shifted flowpipe by the given number.

Input

  • fp – flowpipe
  • t0 – time shift

Output

A new flowpipe such that the time-span of each constituent reach-set has been shifted by t0.

Notes

See also Shift for the lazy counterpart.

source
ReachabilityAnalysis.AbstractLazyReachSetType
AbstractLazyReachSet{N} <: AbstractReachSet{N}

Abstract type for all reach-set types that use a LazySet for the underlying set representation.

Notes

An AbstractLazyReachSet is the interface for reach-sets such that the geometric set is represented by any subtype of LazySet.

This types implements the LazySets interface, namely support function (ρ), support vector (σ) and ambient dimension (dim) functions. Hence, these functions directly apply to concrete subtypes of an AbstractLazyReachSet. The set wrapped by this type is obtained through set(R).

The following functions should be implemented by any concrete subtype:

  • reconstruct – create a new instance of the given reach-set with a different set representation but sharing the other fields, i.e. the same time span (and the same for other fields, if applicable)

In addition to the functions inherited from AbstractReachSet, the following are available:

  • linear_map – concrete linear map of a reach-set
  • project – projection of a reach-set
  • shift – time-shift of a reach-set
  • vars – tuple of integers associated to the variables of the given reach-set
source
LazySets.projectMethod
project(R::AbstractLazyReachSet, variables::NTuple{D, M};
+        check_vars::Bool=true) where {D, M<:Integer}

Projects a reach-set onto the subspace spanned by the given variables.

Input

  • R – reach-set
  • vars – tuple of variables for the projection
  • check_vars – (optional, default: true) if true, check that the given variable indices vars are a subset of the variables of R

Output

A SparseReachSet whose variable indices are given by vars.

The type of the new reach-set depends on the type of the reach-set R:

  • If R contains a hyperrectangular set, the output is a hyperrectangle.
  • If R contains a zonotopic set, the output is a zonotope.
  • Otherwise, the return type is a polytope either in constraint representation or in vertex representation, depending on the dimension and the properties of M. For details, see LazySets.project.

Notes

This function can be used to project a reach-set onto a lower-dimensional sub-space. The projection is concrete, and it consists of mapping the reach-set X = set(R) to a new reach-set through to MX, where M is the projection matrix associated with the given variables vars.

To project onto the time variable, use the index 0. For instance, (0, 1) projects onto the time variable and the first variable in R.

source

Reachable set

ReachabilityAnalysis.ReachSetType
ReachSet{N, ST<:LazySet{N}} <: AbstractLazyReachSet{N}

Type that wraps a reach-set using a LazySet as underlying representation.

Fields

  • X – set
  • Δt – time interval

Notes

A ReachSet is a struct representing (an approximation of) the reachable states for a given time interval. The type of the representation is ST, which may be any subtype LazySet. For efficiency reasons, ST should be concretely typed.

By assumption the coordinates in this reach-set are associated to the integers 1, …, n. The function vars returns such tuple.

source

Sparse reachable set

ReachabilityAnalysis.SparseReachSetType
SparseReachSet{N, ST<:LazySet{N}, D} <: AbstractReachSet{N}

Type that wraps a reach-set using a LazySet as underlying representation, together with a tuple of variables associated to this reach-set.

Fields

  • X – set
  • Δt – time interval
  • vars – tuple of variable indices represented by the set X

Notes

A SparseReachSet is a struct representing (an approximation of) the reachable states for a given time interval. The type of the representation is ST, which may be any subtype of LazySet (ideally, concrete). Moreover, this type also stores information about the variables (also named coordinates, or by abuse of notation, dimensions) corresponding to the set X.

For instance in the ambient space n=5, one may have a SparseReachSet whose variables tuple is vars = (4, 5, 6), i.e. representing a three-dimensional projection of the full-dimensional reach-set. In consequence, the dimension of X doesn't match the length of vars, in general

In this type, the parameter N represents the numerical type of the LazySet (typically, Float64), the type ST represents the set representation used, and D denotes the dimension of this sparse reach set. Note that, in contrast to ReachSet, for SparseReachSet the number of dimensions is part of the type information.

source

Taylor model reach-sets

ReachabilityAnalysis.TaylorModelReachSetType
TaylorModelReachSet{N, S} <: AbstractTaylorModelReachSet{N}

Reach-set representation consisting of a vector of taylor models in one variable (the "time" variable) whose coefficients are multivariate polynomials (the "space" variables).

Notes

The parameters N and S refer to the numerical type of the representation (used for the Taylor model in time and Taylor series polynomials respectively). The space variables are assumed to be normalized to the interval [-1, 1]. It is assumed that the time domain is the same for all components.

source

Template reach-sets

ReachabilityAnalysis.TemplateReachSetType
TemplateReachSet{N, VN, TN<:AbstractDirections{N, VN}, SN<:AbstractVector{N}} <: AbstractLazyReachSet{N}

Reach set that stores the support function of a set at a give set of directions.

Notes

The struct has the following parameters:

  • N – refers to the numerical type of the representation.
  • VN – refers to the vector type of the template
  • TN – refers to the template type
  • SN – vector type that holds the support function evaluations

Concrete subtypes of AbstractDirections are defined in the LazySets library.

This reach-set implicitly represents a set by a set of directions and support functions. set(R::TemplateReachSet) returns a polyhedron in half-space representation.

Apart from the getter functions inherited from the AbstractReachSet interface, the following methods are available:

  • directions(R) – return the set of directions normal to the faces of this reach-set
  • support_functions(R) – return the vector of support function evaluations
  • support_functions(R, i) – return the i-th coordinate of the vector of support function evaluatons
source
diff --git a/dev/lib/solutions/index.html b/dev/lib/solutions/index.html index e64514ae0..612d46524 100644 --- a/dev/lib/solutions/index.html +++ b/dev/lib/solutions/index.html @@ -1,2 +1,2 @@ -Solutions · ReachabilityAnalysis.jl

Solutions

Abstract interface

Solution of a reachability problem

ReachabilityAnalysis.ReachSolutionType
ReachSolution{FT<:AbstractFlowpipe, ST<:AbstractPost} <: AbstractSolution

Type that wraps the solution of a reachability problem as a sequence of lazy sets, and a dictionary of options.

Fields

  • Xk – the list of AbstractReachSets
  • alg – algorithm used
  • options – the dictionary of options
source

Solution of a verification problem

ReachabilityAnalysis.CheckSolutionType
CheckSolution{T} <: AbstractSolution

Type that wraps the solution of a verification problem.

Fields

TODO

Notes

This type contains the answer if the property is satisfied, and if not, it contains the index at which the property might be violated for the first time.

source

Solving a reachability problem

CommonSolve.solveFunction
solve(ivp::IVP{<:AbstractContinuousSystem}, tspan, alg; kwargs...)

Solves the initial-value problem defined by ivp over the time span tspan, using the algorithm alg. If no algorithm is given, a default algorithm is chosen.

Input

  • ivp – initial-value problem
  • tspan – time span for this initial-value problem
  • alg – reachability algorithm

Additional options are passed as arguments or keyword arguments; see the notes below for details. See the online documentation for examples.

Output

The solution of a reachability problem, as an instance of a ReachSolution.

Notes

  • Use the alg, algorithm or opC keyword arguments to specify the algorithm to solve the initial-value problem. Algorithm-specific options should be passed to the algorithm constructor as well.

  • Use the tspan keyword argument to specify the time span; it can be:

    • a tuple,
    • an interval, or
    • a vector with two components.
  • Use the T keyword argument to specify the time horizon; the initial time is then assumed to be zero.

  • Use the static keyword argument to force conversion to static arrays in the algorithm (should be supported by the algorithm).

  • Use the NSTEPS keyword argument to specify the number of discrete steps solved in the set-based recurrence.

  • Use the threading option to use multi-threading parallelism. This option applies for initial-value problems whose initial condition is a vector of sets.

source

Solving a hybrid reachability problem

ReachabilityAnalysis.WaitingListType
WaitingList{TN, ST, M, QT<:StateInLocation{ST, M}} <: AbstractWaitingList

Iterable container representing a list of pairs (set, mode) of a hybrid automaton.

Fields

  • times – vector with a time interval associated to each state
  • array – vector of StateInLocation

Notes

A WaitingList is a list of pairs `(set_i, loc_i) for i in 1..k where times is a vector with a time interval associated to each state.

This waiting list allows for a unique set representation (ST) for all elements of the list.

source

TODO: document other methods in solutions.jl.

+Solutions · ReachabilityAnalysis.jl

Solutions

Abstract interface

Solution of a reachability problem

ReachabilityAnalysis.ReachSolutionType
ReachSolution{FT<:AbstractFlowpipe, ST<:AbstractPost} <: AbstractSolution

Type that wraps the solution of a reachability problem as a sequence of lazy sets, and a dictionary of options.

Fields

  • Xk – the list of AbstractReachSets
  • alg – algorithm used
  • options – the dictionary of options
source

Solution of a verification problem

ReachabilityAnalysis.CheckSolutionType
CheckSolution{T} <: AbstractSolution

Type that wraps the solution of a verification problem.

Fields

TODO

Notes

This type contains the answer if the property is satisfied, and if not, it contains the index at which the property might be violated for the first time.

source

Solving a reachability problem

CommonSolve.solveFunction
solve(ivp::IVP{<:AbstractContinuousSystem}, tspan, alg; kwargs...)

Solves the initial-value problem defined by ivp over the time span tspan, using the algorithm alg. If no algorithm is given, a default algorithm is chosen.

Input

  • ivp – initial-value problem
  • tspan – time span for this initial-value problem
  • alg – reachability algorithm

Additional options are passed as arguments or keyword arguments; see the notes below for details. See the online documentation for examples.

Output

The solution of a reachability problem, as an instance of a ReachSolution.

Notes

  • Use the alg, algorithm or opC keyword arguments to specify the algorithm to solve the initial-value problem. Algorithm-specific options should be passed to the algorithm constructor as well.

  • Use the tspan keyword argument to specify the time span; it can be:

    • a tuple,
    • an interval, or
    • a vector with two components.
  • Use the T keyword argument to specify the time horizon; the initial time is then assumed to be zero.

  • Use the static keyword argument to force conversion to static arrays in the algorithm (should be supported by the algorithm).

  • Use the NSTEPS keyword argument to specify the number of discrete steps solved in the set-based recurrence.

  • Use the threading option to use multi-threading parallelism. This option applies for initial-value problems whose initial condition is a vector of sets.

source

Solving a hybrid reachability problem

ReachabilityAnalysis.WaitingListType
WaitingList{TN, ST, M, QT<:StateInLocation{ST, M}} <: AbstractWaitingList

Iterable container representing a list of pairs (set, mode) of a hybrid automaton.

Fields

  • times – vector with a time interval associated to each state
  • array – vector of StateInLocation

Notes

A WaitingList is a list of pairs `(set_i, loc_i) for i in 1..k where times is a vector with a time interval associated to each state.

This waiting list allows for a unique set representation (ST) for all elements of the list.

source

TODO: document other methods in solutions.jl.

diff --git a/dev/lib/systems/index.html b/dev/lib/systems/index.html index c834a9c12..482653263 100644 --- a/dev/lib/systems/index.html +++ b/dev/lib/systems/index.html @@ -1,5 +1,5 @@ -Systems · ReachabilityAnalysis.jl

Systems

Systems types are defined in the library MathematicalSystems.jl. Apart from purely discrete or continuous, hybrid automata (i.e. those mixing discrete-continuous dynamics) are defined in HybridSystems.jl.

Types and macros

The API reference for systems types and macros can be found in the MathematicalSystems.jl documentation. Two commonly used macros are @system and @ivp, used to define a system and an initial-value problem respectively.

Normalization

LinearAlgebra.normalizeMethod
normalize(system::AbstractSystem)

Transform a mathematical system to a normalized (or canonical) form.

Input

  • system – system; it can be discrete or continuous

Output

Either the same system if it already conforms to a canonical form, or a new system otherwise.

Notes

The normalization procedure consists of transforming a given system type into a "canonical" format that is used internally. More details are given below.

Algorithm

The implementation of normalize exploits MathematicalSystems's' types, which carry information about the problem as a type parameter.

Homogeneous ODEs of the form $x' = Ax, x ∈ \mathcal{X}$ are canonical if the associated problem is a ConstrainedLinearContinuousSystem and A is a matrix. This type does not handle non-deterministic inputs.

Note that a LinearContinuousSystem does not consider constraints on the state-space (such as an invariant); to specify state constraints, use a ConstrainedLinearContinuousSystem. If the passed system is a LinearContinuousSystem (i.e. no constraints) then the normalization fixes a universal set (Universe) as the constraint set.

The generalization to canonical systems with constraints and possibly time-varying non-deterministic inputs is considered next. These systems are of the form $x' = Ax + u, u ∈ \mathcal{U}, x ∈ \mathcal{X}$. The system type is ConstrainedLinearControlContinuousSystem, where A is a matrix, X is a set and U is an input, that is, any concrete subtype of AbstractInput.

If U is not given as an input, normalization accepts either a LazySet, or a vector of LazySets. In these cases, the sets are wrapped around an appropriate concrete input type.

If the system does not conform to a canonical form, the implementation tries to make the transformation; otherwise an error is thrown. In particular, ODEs of the form $x' = Ax + Bu$ are mapped into $x' = Ax + u, u ∈ B\mathcal{U}$, where now $u$ has the same dimensions as $x$.

The transformations described above are analogous in the discrete case, i.e. $x_{k+1} = A x_k$ and $x_{k+1} = Ax_{k} + u_k, u_k ∈ \mathcal{U}, x_k ∈ \mathcal{X}$ for the linear and affine cases respectively.

source
LinearAlgebra.normalizeMethod
normalize(ivp::InitialValueProblem)

Transform an initial-value problem into a normalized (or canonical) form.

Input

  • ivp – initial-value problem

Output

Either the same initial-value problem if it already conforms to a canonical form, or a new one otherwise.

Notes

This function extends normalize for initial-value problems.

source
ReachabilityAnalysis.add_dimensionFunction
add_dimension(A::AbstractMatrix, m=1)

Append one or more zero rows and columns to a matrix.

Input

  • A – matrix
  • m – (optional, default: 1) the number of extra dimensions

Examples

julia> A = [0.4 0.25; 0.46 -0.67]
+Systems · ReachabilityAnalysis.jl

Systems

Systems types are defined in the library MathematicalSystems.jl. Apart from purely discrete or continuous, hybrid automata (i.e. those mixing discrete-continuous dynamics) are defined in HybridSystems.jl.

Types and macros

The API reference for systems types and macros can be found in the MathematicalSystems.jl documentation. Two commonly used macros are @system and @ivp, used to define a system and an initial-value problem respectively.

Normalization

LinearAlgebra.normalizeMethod
normalize(system::AbstractSystem)

Transform a mathematical system to a normalized (or canonical) form.

Input

  • system – system; it can be discrete or continuous

Output

Either the same system if it already conforms to a canonical form, or a new system otherwise.

Notes

The normalization procedure consists of transforming a given system type into a "canonical" format that is used internally. More details are given below.

Algorithm

The implementation of normalize exploits MathematicalSystems's' types, which carry information about the problem as a type parameter.

Homogeneous ODEs of the form $x' = Ax, x ∈ \mathcal{X}$ are canonical if the associated problem is a ConstrainedLinearContinuousSystem and A is a matrix. This type does not handle non-deterministic inputs.

Note that a LinearContinuousSystem does not consider constraints on the state-space (such as an invariant); to specify state constraints, use a ConstrainedLinearContinuousSystem. If the passed system is a LinearContinuousSystem (i.e. no constraints) then the normalization fixes a universal set (Universe) as the constraint set.

The generalization to canonical systems with constraints and possibly time-varying non-deterministic inputs is considered next. These systems are of the form $x' = Ax + u, u ∈ \mathcal{U}, x ∈ \mathcal{X}$. The system type is ConstrainedLinearControlContinuousSystem, where A is a matrix, X is a set and U is an input, that is, any concrete subtype of AbstractInput.

If U is not given as an input, normalization accepts either a LazySet, or a vector of LazySets. In these cases, the sets are wrapped around an appropriate concrete input type.

If the system does not conform to a canonical form, the implementation tries to make the transformation; otherwise an error is thrown. In particular, ODEs of the form $x' = Ax + Bu$ are mapped into $x' = Ax + u, u ∈ B\mathcal{U}$, where now $u$ has the same dimensions as $x$.

The transformations described above are analogous in the discrete case, i.e. $x_{k+1} = A x_k$ and $x_{k+1} = Ax_{k} + u_k, u_k ∈ \mathcal{U}, x_k ∈ \mathcal{X}$ for the linear and affine cases respectively.

source
LinearAlgebra.normalizeMethod
normalize(ivp::InitialValueProblem)

Transform an initial-value problem into a normalized (or canonical) form.

Input

  • ivp – initial-value problem

Output

Either the same initial-value problem if it already conforms to a canonical form, or a new one otherwise.

Notes

This function extends normalize for initial-value problems.

source
ReachabilityAnalysis.add_dimensionFunction
add_dimension(A::AbstractMatrix, m=1)

Append one or more zero rows and columns to a matrix.

Input

  • A – matrix
  • m – (optional, default: 1) the number of extra dimensions

Examples

julia> A = [0.4 0.25; 0.46 -0.67]
 2×2 Array{Float64,2}:
  0.4    0.25
  0.46  -0.67
@@ -13,7 +13,7 @@
  0.4    0.25  0.0  0.0
  0.46  -0.67  0.0  0.0
  0.0    0.0   0.0  0.0
- 0.0    0.0   0.0  0.0
source
add_dimension(X::LazySet, m=1)

Adds an extra dimension to a LazySet through a Cartesian product.

Input

  • X – a lazy set
  • m – (optional, default: 1) the number of extra dimensions

Examples

julia> X = BallInf(ones(9), 0.5);
+ 0.0    0.0   0.0  0.0
source
add_dimension(X::LazySet, m=1)

Adds an extra dimension to a LazySet through a Cartesian product.

Input

  • X – a lazy set
  • m – (optional, default: 1) the number of extra dimensions

Examples

julia> X = BallInf(ones(9), 0.5);
 
 julia> dim(X)
 9
@@ -32,7 +32,7 @@
 ZeroSet{Float64}

More than one dimension can be added passing the second argument:

julia> Xext = add_dimension(BallInf(zeros(10), 0.1), 4);
 
 julia> dim(Xext)
-14

Notes

In the special case that the given set is a zero set, instead of cartesian product a new zero set with extended dimensions is returned.

source
add_dimension(cs, m=1)

Adds an extra dimension to a continuous system.

Input

  • cs – continuous system
  • m – (optional, default: 1) the number of extra dimensions

Examples

julia> using MathematicalSystems, SparseArrays
+14

Notes

In the special case that the given set is a zero set, instead of cartesian product a new zero set with extended dimensions is returned.

source
add_dimension(cs, m=1)

Adds an extra dimension to a continuous system.

Input

  • cs – continuous system
  • m – (optional, default: 1) the number of extra dimensions

Examples

julia> using MathematicalSystems, SparseArrays
 
 julia> A = sprandn(3, 3, 0.5);
 
@@ -69,4 +69,4 @@
 10
 
 julia> dim(next_set(inputset(sext), 1))
-10
source

Homogeneization

ReachabilityAnalysis.homogenizeFunction
homogenize(ivp::IVP{CLCCS{N,MT,IdentityMultiple{N},XT,ConstantInput{SI}},ST}) where {N, MT<:AbstractMatrix{N}, XT<:LazySet{N}, SI<:Singleton{N}, ST<:LazySet{N}}

Transform an inhomogeneous linear initial-value problem into an homogeneous one by introducing auxiliary state variables.

Input

  • ivp – initial-value problem

Output

Homogeneous initial-value problem.

Notes

This function transforms the canonical initial-value problem $x' = Ax + u$, $x ∈ X$ with $u(0) ∈ U = {u}$ (a singleton) into an homogeneous problem without inputs $y' = Â * y$, $y ∈ Y$.

source
homogenize(sys::SOACS)

Transform an inhomogeneous second order system into an homogeneous one by introducing auxiliary state variables.

Input

  • sys – second order system

Output

First-order homogeneous system.

Notes

This function transforms the second-order system $Mx'' + Cx' + Kx = b$ into a first-order, homogeneous one, $y' = Â * y$. It is assumed that the matrix $M$ is invertible.

source

Hybrid systems

ReachabilityAnalysis.HACLD1Type
HACLD1{T<:AbstractSystem, MT, N, J} <: AHACLD

Single-mode hybrid automaton with clocked linear dynamics.

Fields

  • sys – system
  • rmap – reset map
  • Tsample – sampling time
  • ζ – jitter
  • switching – (optional) value that

Notes

This type is parametric in:

  • T – system type
  • MT – type of the reset map
  • N – numeric type, applies to the sampling time and jitter
  • J – type associated to the jitter

The type associated to the jitter, J, can be one of the following:

  • Missing – no jitter, i.e. switchings are deterministic
  • Number – symmetric jitter, i.e. non-deterministic switchings occur in the intervals [Tsample - ζ, Tsample + ζ]
  • IA.Interval – non-symmetric jitter, i.e. non-deterministic switchings occur in the intervals [Tsample + inf(ζ), Tsample + sup(ζ)]; note that the infimum is expected to be negative for most use cases, i.e. when the jitter interval is centered at zero

The following getter functions are available:

  • initial_state – initial state of the continuous mode
  • jitter – return the jitter
  • reset_map – return the reset map
  • sampling_time – return the sampling time
  • statedim – dimension of the state-space
  • system – return the continuous mode
  • switching – return the type of switching

Non-deterministic switching:

tstart Ts-ζ⁻ tend [––––––-|––––––-]

In the following, suppose that the continuous post-operator has fixed step-size δ > 0. If F denotes the flowpipe, then

F[1] F[2] F[3] F[4] F[5] F[k] [–––][–––][–––][–––][–––] ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ [–––]

R = array(F) denote the array of reach-sets time-span for reach reach-set is of the form:

Similarly we compute tstart and tend for the supremum part Ts-ζ⁺

source
ReachabilityAnalysis.DiscreteTransitionType
DiscreteTransition{RT, GT, IT⁻, IT⁺, WT} <: AbstractTransition

Type that encodes a discrete transition with an affine assignment of the form:

\[ post_d(X) = (R(X ∩ G ∩ I⁻) ⊕ W) ∩ I⁺\]

where $I⁻$ and $I⁺$ are invariants at the source and the target locations respectively, $G ⊆ \mathbb{R}^n$ is the guard set of the transition, the assignment is of the form $x^+ := Rx + w$, $w ∈ W$, $x^+ ∈ \mathbb{R}^m$ are the values after the transition, $R ∈ \mathbb{R}^{m\times n}$ is the assignment map (or reset map) and $W ⊆ \mathbb{R}^m$ is a closed and bounded convex set of non-deterministic inputs.

Fields

  • R – assignment map
  • W – non-deterministic inputs
  • G – guard set of the transition from the source location to the target location
  • I⁻ – invariant at the source location
  • I⁺ – invariant at the target location
source
LazySets.constrained_dimensionsMethod
constrained_dimensions(HS::HybridSystem)::Dict{Int,Vector{Int}}

For each location, compute all dimensions that are constrained in the invariant or the guard of any outgoing transition.

Input

  • HS – hybrid system

Output

A dictionary mapping (::Dict{Int,Vector{Int}}) the index of each location $ℓ$ to the dimension indices that are constrained in $ℓ$.

source
+10
source

Homogeneization

ReachabilityAnalysis.homogenizeFunction
homogenize(ivp::IVP{CLCCS{N,MT,IdentityMultiple{N},XT,ConstantInput{SI}},ST}) where {N, MT<:AbstractMatrix{N}, XT<:LazySet{N}, SI<:Singleton{N}, ST<:LazySet{N}}

Transform an inhomogeneous linear initial-value problem into an homogeneous one by introducing auxiliary state variables.

Input

  • ivp – initial-value problem

Output

Homogeneous initial-value problem.

Notes

This function transforms the canonical initial-value problem $x' = Ax + u$, $x ∈ X$ with $u(0) ∈ U = {u}$ (a singleton) into an homogeneous problem without inputs $y' = Â * y$, $y ∈ Y$.

source
homogenize(sys::SOACS)

Transform an inhomogeneous second order system into an homogeneous one by introducing auxiliary state variables.

Input

  • sys – second order system

Output

First-order homogeneous system.

Notes

This function transforms the second-order system $Mx'' + Cx' + Kx = b$ into a first-order, homogeneous one, $y' = Â * y$. It is assumed that the matrix $M$ is invertible.

source

Hybrid systems

ReachabilityAnalysis.HACLD1Type
HACLD1{T<:AbstractSystem, MT, N, J} <: AHACLD

Single-mode hybrid automaton with clocked linear dynamics.

Fields

  • sys – system
  • rmap – reset map
  • Tsample – sampling time
  • ζ – jitter
  • switching – (optional) value that

Notes

This type is parametric in:

  • T – system type
  • MT – type of the reset map
  • N – numeric type, applies to the sampling time and jitter
  • J – type associated to the jitter

The type associated to the jitter, J, can be one of the following:

  • Missing – no jitter, i.e. switchings are deterministic
  • Number – symmetric jitter, i.e. non-deterministic switchings occur in the intervals [Tsample - ζ, Tsample + ζ]
  • IA.Interval – non-symmetric jitter, i.e. non-deterministic switchings occur in the intervals [Tsample + inf(ζ), Tsample + sup(ζ)]; note that the infimum is expected to be negative for most use cases, i.e. when the jitter interval is centered at zero

The following getter functions are available:

  • initial_state – initial state of the continuous mode
  • jitter – return the jitter
  • reset_map – return the reset map
  • sampling_time – return the sampling time
  • statedim – dimension of the state-space
  • system – return the continuous mode
  • switching – return the type of switching

Non-deterministic switching:

tstart Ts-ζ⁻ tend [––––––-|––––––-]

In the following, suppose that the continuous post-operator has fixed step-size δ > 0. If F denotes the flowpipe, then

F[1] F[2] F[3] F[4] F[5] F[k] [–––][–––][–––][–––][–––] ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ [–––]

R = array(F) denote the array of reach-sets time-span for reach reach-set is of the form:

Similarly we compute tstart and tend for the supremum part Ts-ζ⁺

source
ReachabilityAnalysis.DiscreteTransitionType
DiscreteTransition{RT, GT, IT⁻, IT⁺, WT} <: AbstractTransition

Type that encodes a discrete transition with an affine assignment of the form:

\[ post_d(X) = (R(X ∩ G ∩ I⁻) ⊕ W) ∩ I⁺\]

where $I⁻$ and $I⁺$ are invariants at the source and the target locations respectively, $G ⊆ \mathbb{R}^n$ is the guard set of the transition, the assignment is of the form $x^+ := Rx + w$, $w ∈ W$, $x^+ ∈ \mathbb{R}^m$ are the values after the transition, $R ∈ \mathbb{R}^{m\times n}$ is the assignment map (or reset map) and $W ⊆ \mathbb{R}^m$ is a closed and bounded convex set of non-deterministic inputs.

Fields

  • R – assignment map
  • W – non-deterministic inputs
  • G – guard set of the transition from the source location to the target location
  • I⁻ – invariant at the source location
  • I⁺ – invariant at the target location
source
LazySets.constrained_dimensionsMethod
constrained_dimensions(HS::HybridSystem)::Dict{Int,Vector{Int}}

For each location, compute all dimensions that are constrained in the invariant or the guard of any outgoing transition.

Input

  • HS – hybrid system

Output

A dictionary mapping (::Dict{Int,Vector{Int}}) the index of each location $ℓ$ to the dimension indices that are constrained in $ℓ$.

source
diff --git a/dev/man/algorithms/A20/index.html b/dev/man/algorithms/A20/index.html index e4488bc08..b232b49b3 100644 --- a/dev/man/algorithms/A20/index.html +++ b/dev/man/algorithms/A20/index.html @@ -1,2 +1,2 @@ -A20 · ReachabilityAnalysis.jl
+A20 · ReachabilityAnalysis.jl
diff --git a/dev/man/algorithms/ASB07/index.html b/dev/man/algorithms/ASB07/index.html index 717e3b2ca..2957a29c2 100644 --- a/dev/man/algorithms/ASB07/index.html +++ b/dev/man/algorithms/ASB07/index.html @@ -1,2 +1,2 @@ -ASB07 · ReachabilityAnalysis.jl
+ASB07 · ReachabilityAnalysis.jl
diff --git a/dev/man/algorithms/BFFPSV18/index.html b/dev/man/algorithms/BFFPSV18/index.html index b22ba4b0a..112722159 100644 --- a/dev/man/algorithms/BFFPSV18/index.html +++ b/dev/man/algorithms/BFFPSV18/index.html @@ -1,2 +1,2 @@ -BFFPSV18 · ReachabilityAnalysis.jl

Decomposition-based method (BFFPSV18)

Method

We overapproximate the reachable states of an affine system by solving a set-based recurrence. The key idea is that we first decompose the system into (low-dimensional) subsystems and later compose the results as a Cartesian product. Thus we have to solve many cheap problems instead of one hard problem. Since solving the recurrence scales superlinearly with the dimension, this approach is very scalable. To represent sets of states, we use the LazySets package which provides exact but lazy (i.e. symbolic) representations of common sets.

Decomposition error

Decomposition typically involves a loss in precision, and so does this approach. The good thing is that we can decompose the recurrence as well, which allows us to analyze each of the subsystems independently by only referring to the initial states of the other subsystems. Consequently, there are two main sources for precision loss:

  1. Decomposition of the initial states: If two subsystems are interdependent initially.
  2. Representation of the reachable states as a Cartesian product: If two subsystems are interdependent in the dynamics.
  3. Representation of the reachable states in general: The reachable states of affine systems cannot be represented precisely in all cases. This is a problem that all approaches suffer from. We overapproximate the reachable states by (unions of) convex polytopes.

Safety verification

The problem of checking a safety property can be reduced to a reachability problem. We provide special support for this reduction by inlining the property check into the reachable states computation. This has two benefits:

  1. We fail fast when the property is violated in our abstraction.
  2. The check is usually cheaper than computing the full reachable states. This is because we are often only interested in an upper or lower bound of a variable.
+BFFPSV18 · ReachabilityAnalysis.jl

Decomposition-based method (BFFPSV18)

Method

We overapproximate the reachable states of an affine system by solving a set-based recurrence. The key idea is that we first decompose the system into (low-dimensional) subsystems and later compose the results as a Cartesian product. Thus we have to solve many cheap problems instead of one hard problem. Since solving the recurrence scales superlinearly with the dimension, this approach is very scalable. To represent sets of states, we use the LazySets package which provides exact but lazy (i.e. symbolic) representations of common sets.

Decomposition error

Decomposition typically involves a loss in precision, and so does this approach. The good thing is that we can decompose the recurrence as well, which allows us to analyze each of the subsystems independently by only referring to the initial states of the other subsystems. Consequently, there are two main sources for precision loss:

  1. Decomposition of the initial states: If two subsystems are interdependent initially.
  2. Representation of the reachable states as a Cartesian product: If two subsystems are interdependent in the dynamics.
  3. Representation of the reachable states in general: The reachable states of affine systems cannot be represented precisely in all cases. This is a problem that all approaches suffer from. We overapproximate the reachable states by (unions of) convex polytopes.

Safety verification

The problem of checking a safety property can be reduced to a reachability problem. We provide special support for this reduction by inlining the property check into the reachable states computation. This has two benefits:

  1. We fail fast when the property is violated in our abstraction.
  2. The check is usually cheaper than computing the full reachable states. This is because we are often only interested in an upper or lower bound of a variable.
diff --git a/dev/man/algorithms/BOX/index.html b/dev/man/algorithms/BOX/index.html index cfdd10156..87a97a83f 100644 --- a/dev/man/algorithms/BOX/index.html +++ b/dev/man/algorithms/BOX/index.html @@ -1,2 +1,2 @@ -BOX · ReachabilityAnalysis.jl
+BOX · ReachabilityAnalysis.jl
diff --git a/dev/man/algorithms/GLGM06/index.html b/dev/man/algorithms/GLGM06/index.html index 33eed4f32..19cf413a9 100644 --- a/dev/man/algorithms/GLGM06/index.html +++ b/dev/man/algorithms/GLGM06/index.html @@ -1,2 +1,2 @@ -GLGM06 · ReachabilityAnalysis.jl
+GLGM06 · ReachabilityAnalysis.jl
diff --git a/dev/man/algorithms/INT/index.html b/dev/man/algorithms/INT/index.html index 13869584c..7cd329188 100644 --- a/dev/man/algorithms/INT/index.html +++ b/dev/man/algorithms/INT/index.html @@ -1,2 +1,2 @@ -INT · ReachabilityAnalysis.jl
+INT · ReachabilityAnalysis.jl
diff --git a/dev/man/algorithms/LGG09/index.html b/dev/man/algorithms/LGG09/index.html index 35fc4c07e..6b8348204 100644 --- a/dev/man/algorithms/LGG09/index.html +++ b/dev/man/algorithms/LGG09/index.html @@ -11,4 +11,4 @@ \quad \rho(d, X_3) &= \rho((\Phi^T)^3 d, X_0) + \rho((\Phi^T)^2 d, V_0) + \rho(\Phi^T d, V_1) + \rho(d, V_2) \\[1mm] \quad &\vdots \\[1mm] \quad \rho(d, X_k) &= \rho((\Phi^T)^k d, X_0) + \sum_{i=0}^{k-1} \rho( (\Phi^T)^{k-i-1} d, V_i). -\end{aligned}\]

In a similar fashion to the homogeneous case, the method allows to efficiently reason about the the sequence $\{X_0, X_1, X_2, \ldots, X_N\}$ by evaluating the support function of the initial set $X_0$ and the input sets $\{V_k\}_k$ along the directions $\{d, \Phi^T d, (\Phi^T)^2 d, \ldots, (\Phi^T)^N d\}$. Implementation-wise, we update two sequences, one that accounts for the homogeneous term, and another sequence that accounts for the effect of the accumulated inputs.

Implementation details

The reach-set representation used is a TemplateReachSet, which stores the directions used (vector of vectors) and the support function evaluated at each direction (matrix, see below). The set representation, set(R::TemplateReachSet), is either a polyhedron in constraint form (HPolyhedron), or a polytope (HPolytope) if the directions are bounding, i.e. the template directions define a bounded set.

The computed support function values can accessed directly through the field sf::SN of each template reach-set. Here sf is an array view of type ::Matrix{N}(undef, length(dirs), NSTEPS): each row corresponds to one of the template directions and each column corresponds to a fixed iteration index $k \geq 0$.

If you use directions from the canonical basis of $\mathbb{R}^n$, it is recommended to define LazySets.Arrays.SingleEntryVector or "one-hot" arrays as they are commonly called, because there are methods that dispatch on such type of arrays efficiently.

Parallel formulation

The support functions of the sequence $\{X_k\}_k$ along different directions can be computed in parallel. Indeed, if $d_1$ and $d_2$ are two given template directions, two different processes can independently compute $\rho(d_1, X_k)$ and $\rho(d_2, X_k)$ for all $k = 0, 1, \ldots, N$ using the methods described above. Once both computations have finished, we can store the resulting support functions in the same array. Use the flag threaded=true to use this method.

Implementation-wise the function _reach_homog_dir_LGG09! spawns different threads which populate the matrix ρℓ::Matrix{N}(undef, length(dirs), NSTEPS) with the computed values. Hence each thread computes a subset of distinct rows of ρℓ.

Real eigenvalues

If the spectrum of the state matrix only has real eigenvalues, the sequence of support functions can be computed efficiently if we work with a template consisting of eigenvectors of $\Phi^T$. This idea is described in [LGG09] and we recall it here for convenience.

The method stems from the fact that if $(\lambda, d)$ is an eigenvalue-eigenvector pair of the matrix $\Phi^T$, with $\lambda \in \mathbb{R}$, then $\Phi^T d = \lambda d$, and if we apply $\Phi^T$ on both sides of this identity, we get $(\Phi^T)^2 d = \Phi^T (\Phi^T d) = \Phi^T(\lambda d) = \lambda^2 d$. In more generality, it holds that $(\Phi^T)^k d = \lambda^k d$ for all $k \ge 1$. Applying this relation to the support function recurrence described above, we get for the general inhomogeneous and possibly time-varying inputs case:

\[\rho(d, X_k) = \rho(\lambda^k d, X_0) + \sum_{i=0}^{k-1} \rho(\lambda^{k-i-1} d, V_i).\]

To further simplify this formula, we analyze different cases of $\lambda$. If $\lambda = 0$, then $\rho(d, X_k) = \rho(d, V_k)$ for all $k \geq 1$, so we focus on either $\lambda$ being positive or negative. To further simplify the computation of $\rho(d, X_k)$, we can use the property $\rho(\lambda d, X) = \lambda \rho(d, X)$ if $\lambda \geq 0$. We now consider the cases $\lambda > 0$ and $\lambda < 0$.

Case $\lambda > 0$. Then $\lambda^k > 0$ for all $k \geq 1$, and

\[\rho(d, X_k) = \lambda^k \rho(d, X_0) + \sum_{i=0}^{k-1} \lambda^{k-i-1} \rho(d, V_i).\]

We are left with evaluating the support function only at $\rho(d, X_0)$ and $\rho(d, V_i)$ to construct the full sequence $\{\rho(d, X_k)\}_{k}$. Moreover, if the $V_i$'s are constant we can extract them from the right-hand side sum and use that

\[\sum_{i=0}^{k-1} \lambda^{k-i-1} = 1 + \lambda + \ldots + \lambda^{k-1} = \dfrac{1 - \lambda^k}{1 - \lambda}.\]

Case $\lambda < 0$. Since $\lambda^k = (-1)^k (-\lambda)^k$ and $\lambda < 0$, then $\lambda^k$ is positive if $k$ is even, otherwise it is negative. So we can write:

\[\rho(d, X_k) = (-\lambda)^k \rho((-1)^k d, X_0) + \sum_{i=0}^{k-1} (-\lambda)^{k-i-1} \rho((-1)^{k-i-1} d, V_i).\]

The main difference between this case and the previous one is that now we have to evaluate support functions $\rho(\pm d, X_0)$ and $\rho(\pm d, V_i)$. Again, simplification takes place if the $V_i$'s are constant and such special case is considered in the implementation.

+\end{aligned}\]

In a similar fashion to the homogeneous case, the method allows to efficiently reason about the the sequence $\{X_0, X_1, X_2, \ldots, X_N\}$ by evaluating the support function of the initial set $X_0$ and the input sets $\{V_k\}_k$ along the directions $\{d, \Phi^T d, (\Phi^T)^2 d, \ldots, (\Phi^T)^N d\}$. Implementation-wise, we update two sequences, one that accounts for the homogeneous term, and another sequence that accounts for the effect of the accumulated inputs.

Implementation details

The reach-set representation used is a TemplateReachSet, which stores the directions used (vector of vectors) and the support function evaluated at each direction (matrix, see below). The set representation, set(R::TemplateReachSet), is either a polyhedron in constraint form (HPolyhedron), or a polytope (HPolytope) if the directions are bounding, i.e. the template directions define a bounded set.

The computed support function values can accessed directly through the field sf::SN of each template reach-set. Here sf is an array view of type ::Matrix{N}(undef, length(dirs), NSTEPS): each row corresponds to one of the template directions and each column corresponds to a fixed iteration index $k \geq 0$.

If you use directions from the canonical basis of $\mathbb{R}^n$, it is recommended to define LazySets.Arrays.SingleEntryVector or "one-hot" arrays as they are commonly called, because there are methods that dispatch on such type of arrays efficiently.

Parallel formulation

The support functions of the sequence $\{X_k\}_k$ along different directions can be computed in parallel. Indeed, if $d_1$ and $d_2$ are two given template directions, two different processes can independently compute $\rho(d_1, X_k)$ and $\rho(d_2, X_k)$ for all $k = 0, 1, \ldots, N$ using the methods described above. Once both computations have finished, we can store the resulting support functions in the same array. Use the flag threaded=true to use this method.

Implementation-wise the function _reach_homog_dir_LGG09! spawns different threads which populate the matrix ρℓ::Matrix{N}(undef, length(dirs), NSTEPS) with the computed values. Hence each thread computes a subset of distinct rows of ρℓ.

Real eigenvalues

If the spectrum of the state matrix only has real eigenvalues, the sequence of support functions can be computed efficiently if we work with a template consisting of eigenvectors of $\Phi^T$. This idea is described in [LGG09] and we recall it here for convenience.

The method stems from the fact that if $(\lambda, d)$ is an eigenvalue-eigenvector pair of the matrix $\Phi^T$, with $\lambda \in \mathbb{R}$, then $\Phi^T d = \lambda d$, and if we apply $\Phi^T$ on both sides of this identity, we get $(\Phi^T)^2 d = \Phi^T (\Phi^T d) = \Phi^T(\lambda d) = \lambda^2 d$. In more generality, it holds that $(\Phi^T)^k d = \lambda^k d$ for all $k \ge 1$. Applying this relation to the support function recurrence described above, we get for the general inhomogeneous and possibly time-varying inputs case:

\[\rho(d, X_k) = \rho(\lambda^k d, X_0) + \sum_{i=0}^{k-1} \rho(\lambda^{k-i-1} d, V_i).\]

To further simplify this formula, we analyze different cases of $\lambda$. If $\lambda = 0$, then $\rho(d, X_k) = \rho(d, V_k)$ for all $k \geq 1$, so we focus on either $\lambda$ being positive or negative. To further simplify the computation of $\rho(d, X_k)$, we can use the property $\rho(\lambda d, X) = \lambda \rho(d, X)$ if $\lambda \geq 0$. We now consider the cases $\lambda > 0$ and $\lambda < 0$.

Case $\lambda > 0$. Then $\lambda^k > 0$ for all $k \geq 1$, and

\[\rho(d, X_k) = \lambda^k \rho(d, X_0) + \sum_{i=0}^{k-1} \lambda^{k-i-1} \rho(d, V_i).\]

We are left with evaluating the support function only at $\rho(d, X_0)$ and $\rho(d, V_i)$ to construct the full sequence $\{\rho(d, X_k)\}_{k}$. Moreover, if the $V_i$'s are constant we can extract them from the right-hand side sum and use that

\[\sum_{i=0}^{k-1} \lambda^{k-i-1} = 1 + \lambda + \ldots + \lambda^{k-1} = \dfrac{1 - \lambda^k}{1 - \lambda}.\]

Case $\lambda < 0$. Since $\lambda^k = (-1)^k (-\lambda)^k$ and $\lambda < 0$, then $\lambda^k$ is positive if $k$ is even, otherwise it is negative. So we can write:

\[\rho(d, X_k) = (-\lambda)^k \rho((-1)^k d, X_0) + \sum_{i=0}^{k-1} (-\lambda)^{k-i-1} \rho((-1)^{k-i-1} d, V_i).\]

The main difference between this case and the previous one is that now we have to evaluate support functions $\rho(\pm d, X_0)$ and $\rho(\pm d, V_i)$. Again, simplification takes place if the $V_i$'s are constant and such special case is considered in the implementation.

diff --git a/dev/man/algorithms/ORBIT/index.html b/dev/man/algorithms/ORBIT/index.html index 8638ae69d..ef69d8c45 100644 --- a/dev/man/algorithms/ORBIT/index.html +++ b/dev/man/algorithms/ORBIT/index.html @@ -1,2 +1,2 @@ -ORBIT · ReachabilityAnalysis.jl

Singleton propagation (ORBIT)

Method

Consider the ODE

\[x'(t) = Ax(t) + u, \qquad x_0 \in \mathbb{R}^n,\qquad (1)\]

with $A \in \mathbb{R}^{n\times n}$ and $u \in \mathbb{R}^n$. The analytic solution at $\delta > 0$ is known to be

\[x(\delta) = e^{A\delta}x_0 + \int_0^\delta e^{A(\delta - s)} uds.\]

Let us introduce the matrices $\Phi(A, \delta) := e^{A\delta}$ and $\Phi_1(A, \delta) := \int_0^{\delta} e^{A(\delta - s)} ds$. The computation of these matrices will be discussed later.

Since $u$ is assumed constant,

\[x(\delta) = \Phi x_0 + v,\]

where we have defined $v := \Phi_1(A, \delta) u$. To get the exact solution at $t = 2\delta$, note that by time invariance of Eq. (1),

\[x(2\delta) = e^{A\delta} x(\delta) + \int_0^\delta e^{A(\delta - s)}u ds,\]

hence

\[x(2\delta) = \Phi (\Phi x_0 + v) + v = \Phi^2 x_0 + \Phi v + v.\]

The solution at subsequent multiples of the step-size $\delta$ is achieved by applying the preceding rule iteratlvely. For any $k \geq 1$, we obtain

\[x(k\delta) = \Phi^k x_0 + \sum_{i=0}^{k-1} \Phi^i v,\qquad k \geq 1.\]

Before considering the computation of $\Phi$ and $\Phi_1$, note that the method admits a straightforward generalization for non-constant inputs. Indeed, if $u : [0, T]\to \mathbb{R}^n$ is a piecewise-constant function, there always exists a sufficiently small step-size $\delta$ such that the following premise holds. Assume that $\{u_1, u_2, \ldots, u_N\} \subseteq \mathbb{R}^n$ is the range of values of the input, where $u(t) = u_k$ for $t \in [(k-1)\delta, k\delta)$, $k = 1, \ldots, N$, and let $v_k := \Phi_1(u_k, \delta)$ for all $k = 1,\ldots, N$. Then it holds that $x(\delta) = \Phi x_0 + v_{1}$, $x(2\delta) = \Phi^2 x_0 + \Phi v_1+ v_{2}$, and

\[x(k\delta) = \Phi^k x_0 + \sum_{i=0}^{k-1} \Phi^i v_{k-i},\qquad k = 1,\ldots, N\]

The matrix $\Phi = e^{A\delta}$ can be evaluated in different ways, using the function _exp:

(1) method=:base uses Julia's built-in implementation (if method = :base),

(2) method = :lazy uses a lazy wrapper of the matrix exponential which is then evaluated using Krylov subspace methods.

Method (1) is the default method. Method (2) is particularly useful to work with very large and sparse matrices (e.g. typically of order n > 2000). Evaluation of $\Phi_1(u, \delta)$ is available through the function Φ₁. Two implementations are available:

(1) If the coefficients matrix $A$ is invertible, then the integral is equivalent to computing $A^{-1}(e^{A\delta} - I)$.

(2) In general, $\Phi_1(u, \delta)$ can be obtained as a sub-block of a larger matrix. See [FRE11] for details.

Method (2) is the default method, although there are cases in which method (1) is more convenient. For example, if we are only interested in singleton inputs and $A$ is invertible, it is possible to compute $\Phi_1(A, \delta) u $ efficiently without actually inverting the matrix $A$ in full.

+ORBIT · ReachabilityAnalysis.jl

Singleton propagation (ORBIT)

Method

Consider the ODE

\[x'(t) = Ax(t) + u, \qquad x_0 \in \mathbb{R}^n,\qquad (1)\]

with $A \in \mathbb{R}^{n\times n}$ and $u \in \mathbb{R}^n$. The analytic solution at $\delta > 0$ is known to be

\[x(\delta) = e^{A\delta}x_0 + \int_0^\delta e^{A(\delta - s)} uds.\]

Let us introduce the matrices $\Phi(A, \delta) := e^{A\delta}$ and $\Phi_1(A, \delta) := \int_0^{\delta} e^{A(\delta - s)} ds$. The computation of these matrices will be discussed later.

Since $u$ is assumed constant,

\[x(\delta) = \Phi x_0 + v,\]

where we have defined $v := \Phi_1(A, \delta) u$. To get the exact solution at $t = 2\delta$, note that by time invariance of Eq. (1),

\[x(2\delta) = e^{A\delta} x(\delta) + \int_0^\delta e^{A(\delta - s)}u ds,\]

hence

\[x(2\delta) = \Phi (\Phi x_0 + v) + v = \Phi^2 x_0 + \Phi v + v.\]

The solution at subsequent multiples of the step-size $\delta$ is achieved by applying the preceding rule iteratlvely. For any $k \geq 1$, we obtain

\[x(k\delta) = \Phi^k x_0 + \sum_{i=0}^{k-1} \Phi^i v,\qquad k \geq 1.\]

Before considering the computation of $\Phi$ and $\Phi_1$, note that the method admits a straightforward generalization for non-constant inputs. Indeed, if $u : [0, T]\to \mathbb{R}^n$ is a piecewise-constant function, there always exists a sufficiently small step-size $\delta$ such that the following premise holds. Assume that $\{u_1, u_2, \ldots, u_N\} \subseteq \mathbb{R}^n$ is the range of values of the input, where $u(t) = u_k$ for $t \in [(k-1)\delta, k\delta)$, $k = 1, \ldots, N$, and let $v_k := \Phi_1(u_k, \delta)$ for all $k = 1,\ldots, N$. Then it holds that $x(\delta) = \Phi x_0 + v_{1}$, $x(2\delta) = \Phi^2 x_0 + \Phi v_1+ v_{2}$, and

\[x(k\delta) = \Phi^k x_0 + \sum_{i=0}^{k-1} \Phi^i v_{k-i},\qquad k = 1,\ldots, N\]

The matrix $\Phi = e^{A\delta}$ can be evaluated in different ways, using the function _exp:

(1) method=:base uses Julia's built-in implementation (if method = :base),

(2) method = :lazy uses a lazy wrapper of the matrix exponential which is then evaluated using Krylov subspace methods.

Method (1) is the default method. Method (2) is particularly useful to work with very large and sparse matrices (e.g. typically of order n > 2000). Evaluation of $\Phi_1(u, \delta)$ is available through the function Φ₁. Two implementations are available:

(1) If the coefficients matrix $A$ is invertible, then the integral is equivalent to computing $A^{-1}(e^{A\delta} - I)$.

(2) In general, $\Phi_1(u, \delta)$ can be obtained as a sub-block of a larger matrix. See [FRE11] for details.

Method (2) is the default method, although there are cases in which method (1) is more convenient. For example, if we are only interested in singleton inputs and $A$ is invertible, it is possible to compute $\Phi_1(A, \delta) u $ efficiently without actually inverting the matrix $A$ in full.

diff --git a/dev/man/algorithms/VREP/index.html b/dev/man/algorithms/VREP/index.html index 730e424da..e1a1f7cb8 100644 --- a/dev/man/algorithms/VREP/index.html +++ b/dev/man/algorithms/VREP/index.html @@ -4,4 +4,4 @@ # ... define model ... # prob = @ivp(...) alg = VREP(δ=1e-3, static=true, dim=4, backend=CDDLib.Library()) -solve(prob, tspan=(0.0, 1.0), alg=alg)

Other backends are available e.g. QHull.jl.

+solve(prob, tspan=(0.0, 1.0), alg=alg)

Other backends are available e.g. QHull.jl.

diff --git a/dev/man/benchmarks/benchmarks/index.html b/dev/man/benchmarks/benchmarks/index.html index 78592c905..6734ecd86 100644 --- a/dev/man/benchmarks/benchmarks/index.html +++ b/dev/man/benchmarks/benchmarks/index.html @@ -1,2 +1,2 @@ -Benchmark repository · ReachabilityAnalysis.jl

Benchmark repository

The benchmark suite of JuliaReach is available at the ReachabilityBenchmarks repository.

The repository includes:

  • Benchmarks for all models in the ReachabilityAnalysis.jl test suite.
  • Benchmarks for models which are not part of the ReachabilityAnalysis.jl test suite, and are used to detect regressions (i.e. examples that accidentally run slower, due to changes in core downstream libraries such as LazySets.jl).
  • The SLICOT models, from the SLICOT Model and Controller Reduction Toolbox, which reflect real world applications with dimensions ranging from several dozens to over 10.000.
+Benchmark repository · ReachabilityAnalysis.jl

Benchmark repository

The benchmark suite of JuliaReach is available at the ReachabilityBenchmarks repository.

The repository includes:

  • Benchmarks for all models in the ReachabilityAnalysis.jl test suite.
  • Benchmarks for models which are not part of the ReachabilityAnalysis.jl test suite, and are used to detect regressions (i.e. examples that accidentally run slower, due to changes in core downstream libraries such as LazySets.jl).
  • The SLICOT models, from the SLICOT Model and Controller Reduction Toolbox, which reflect real world applications with dimensions ranging from several dozens to over 10.000.
diff --git a/dev/man/benchmarks/filtered_oscillator/index.html b/dev/man/benchmarks/filtered_oscillator/index.html index b05d14d76..de4d810ff 100644 --- a/dev/man/benchmarks/filtered_oscillator/index.html +++ b/dev/man/benchmarks/filtered_oscillator/index.html @@ -111,4 +111,4 @@ function fosc(X0; n0::Int=4, one_loop_iteration::Bool=false) H = filtered_oscillator_hybrid(n0, one_loop_iteration) return IVP(H, [(1, X0)]) -end
fosc (generic function with 1 method)

Results

+end
fosc (generic function with 1 method)

Results

diff --git a/dev/man/benchmarks/model_library/index.html b/dev/man/benchmarks/model_library/index.html index 274736994..aa4ed25c1 100644 --- a/dev/man/benchmarks/model_library/index.html +++ b/dev/man/benchmarks/model_library/index.html @@ -5,4 +5,4 @@ sol = solve(prob, T=5.0); # solve it using default options -plot(sol, vars=(0, 25)) # plot the solution +plot(sol, vars=(0, 25)) # plot the solution diff --git a/dev/man/benchmarks/repeatability/index.html b/dev/man/benchmarks/repeatability/index.html index f8ada4d85..0d2af5b09 100644 --- a/dev/man/benchmarks/repeatability/index.html +++ b/dev/man/benchmarks/repeatability/index.html @@ -1,2 +1,2 @@ -Repeatability evaluations · ReachabilityAnalysis.jl

Repeatability evaluations

Traditionally, re-creation of computational results in research work is a challenging task because details of the implementation are unavoidably absent in the paper. Some authors post their code and data to their websites, but there is little formal incentive to do so and no easy way to determine whether others can actually use the result. As a consequence, computational results often become non reproducible – even by the research group which originally produced them – after just a few years.

More recently, scientific conferences encourage and sometimes require that authors improve the reproducibility of their computational results by providing suitable reproducibility evaluation (RE) packages. Such RE are self-contained codes that can be used to run and reproduce the results from the paper in a host machine. Fortunately, the tools available for the Julia language are very convenenient to prepare and distribute RE packages. The following RE packages are available:

  • ARCH2020 NLN RE – Repeatability Evaluation package for the ARCH2020 Nonlinear Continuous and Hybrid Systems Competition.

  • ARCH2020 AFF RE – Repeatability Evaluation package for the ARCH2020 Linear and Hybrid Systems Competition.

  • HSCC2019 RE – Repeatability Evaluation (RE) package for the paper JuliaReach: a Toolbox for Set-Based Reachability published at the HSCC'2019 conference.

  • ARCH2019 RE – Repeatability Evaluation package for the ARCH2019 Competition.

  • ARCH2018 RE – Repeatability Evaluation package for the ARCH2018 Competition.

For installation instructions, see the README file in each package. We have examples using virtual machines, and also using Docker containers for RE packages. The advantage of using a Docker container is that downloading the necessary requirements (including Julia itself) is an automated process.

+Repeatability evaluations · ReachabilityAnalysis.jl

Repeatability evaluations

Traditionally, re-creation of computational results in research work is a challenging task because details of the implementation are unavoidably absent in the paper. Some authors post their code and data to their websites, but there is little formal incentive to do so and no easy way to determine whether others can actually use the result. As a consequence, computational results often become non reproducible – even by the research group which originally produced them – after just a few years.

More recently, scientific conferences encourage and sometimes require that authors improve the reproducibility of their computational results by providing suitable reproducibility evaluation (RE) packages. Such RE are self-contained codes that can be used to run and reproduce the results from the paper in a host machine. Fortunately, the tools available for the Julia language are very convenenient to prepare and distribute RE packages. The following RE packages are available:

  • ARCH2020 NLN RE – Repeatability Evaluation package for the ARCH2020 Nonlinear Continuous and Hybrid Systems Competition.

  • ARCH2020 AFF RE – Repeatability Evaluation package for the ARCH2020 Linear and Hybrid Systems Competition.

  • HSCC2019 RE – Repeatability Evaluation (RE) package for the paper JuliaReach: a Toolbox for Set-Based Reachability published at the HSCC'2019 conference.

  • ARCH2019 RE – Repeatability Evaluation package for the ARCH2019 Competition.

  • ARCH2018 RE – Repeatability Evaluation package for the ARCH2018 Competition.

For installation instructions, see the README file in each package. We have examples using virtual machines, and also using Docker containers for RE packages. The advantage of using a Docker container is that downloading the necessary requirements (including Julia itself) is an automated process.

diff --git a/dev/man/examples_overview/index.html b/dev/man/examples_overview/index.html index 79842e4cc..0e5cc3f31 100644 --- a/dev/man/examples_overview/index.html +++ b/dev/man/examples_overview/index.html @@ -1,2 +1,2 @@ -Overview · ReachabilityAnalysis.jl

Overview

We organize the models by the type of nonlinearities (if there are some), and whether they are purely continuous or present discrete transitions, i.e. hybrid systems. We have added a column with the associated scientific domain, and another column with the number of state variables. Roughly speaking, a higher number of state variables usually corresponds to problems which are harder to solve, although strictly speaking, this usually depends on the property to be verified.

Column P.V. refers to the cases where the example is presented with at lest one instance with parameter variation.

Further examples

In addition to those present in this manual, a larger collection of examples can be found in the models library ReachabilityModels.jl. For further instructions see the section Model library.

Linear continuous

NameAreaState dim.
Damped oscillatorPhysics2
BuildingMechanical Engineering48
Transmission line circuitPower Systems Stability4 to 40
International Space StationAerospace Engineering270
Modified Nodal Analysis 1Electronics1002
Modified Nodal Analysis 2Electronics10913
Heat PDEPhysics125 to 125000

Linear hybrid

NameAreaState dim.
Amplifier circuitElectronic Engineering2
Electromechanic breakElectronic Engineering
GearboxMechanical Engineering
PlatoonAutonomous Driving
PowertrainMechanical Engineering

Nonlinear continuous

NameAreaState dim.
Brusselator
Laub-LoomisMolecular Biology7
Lorenz system
Lotka-Volterra
Production-DestructionElectrical engineering
Quadrotor
SEIR Model
Van der Pol

Nonlinear hybrid

NameAreaState dim.
Spacecraft
Lotka-Volterra w/crossingBiology, Nonlinear physics
+Overview · ReachabilityAnalysis.jl

Overview

We organize the models by the type of nonlinearities (if there are some), and whether they are purely continuous or present discrete transitions, i.e. hybrid systems. We have added a column with the associated scientific domain, and another column with the number of state variables. Roughly speaking, a higher number of state variables usually corresponds to problems which are harder to solve, although strictly speaking, this usually depends on the property to be verified.

Column P.V. refers to the cases where the example is presented with at lest one instance with parameter variation.

Further examples

In addition to those present in this manual, a larger collection of examples can be found in the models library ReachabilityModels.jl. For further instructions see the section Model library.

Linear continuous

NameAreaState dim.
Damped oscillatorPhysics2
BuildingMechanical Engineering48
Transmission line circuitPower Systems Stability4 to 40
International Space StationAerospace Engineering270
Modified Nodal Analysis 1Electronics1002
Modified Nodal Analysis 2Electronics10913
Heat PDEPhysics125 to 125000

Linear hybrid

NameAreaState dim.
Amplifier circuitElectronic Engineering2
Electromechanic breakElectronic Engineering
GearboxMechanical Engineering
PlatoonAutonomous Driving
PowertrainMechanical Engineering

Nonlinear continuous

NameAreaState dim.
Brusselator
Laub-LoomisMolecular Biology7
Lorenz system
Lotka-Volterra
Production-DestructionElectrical engineering
Quadrotor
SEIR Model
Van der Pol

Nonlinear hybrid

NameAreaState dim.
Spacecraft
Lotka-Volterra w/crossingBiology, Nonlinear physics
diff --git a/dev/man/faq/807473fd.png b/dev/man/faq/807473fd.png deleted file mode 100644 index 42adf004228325f78920c59cb8650c7cc3384f6d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 269965 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: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ℜ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 JOXZ9M{s+Fw&)Wb1 diff --git a/dev/man/faq/ca6f9925.png b/dev/man/faq/ca6f9925.png new file mode 100644 index 0000000000000000000000000000000000000000..b0cd142f21d7102742df4f1ced39728f864ed3f2 GIT binary patch literal 277763 zcmbq*^Lu2?^Y(6R+qUg&Y}EoA#aH%_ zU3b-l$;*ntLSaFD`}Pf1LR?t!+czNfZ{NPhLI8bTc~=XY`WnCtrNo54eg1vtbQULk z`$q6hLRdiAE%SWCEE9X7ll{u#bhhNNZnfx7r~A@b(@%`K49Z+rByn&-sMha-4#<*N zu~4}nd*Rd<8)uE3?VGv{t9d&2e5b?~rT}yo7(#ZJ3vVE{k>{@2@wB9mqs*xxek&(a zFjEY$zq9!DsXSar_x0i1H#$;;z^~!AFU$Y$c&>49!TMLsZ|wpWZ6)oFDK>xP z5|Gh(pP;Xz5dJRi!<{OdpQmQ8yvPk$_ubs!LnH=V0OIQlFNHstH8CRme2BQ|wWy+^ zTicOOH$hgB&6FBUXyXYyN5dp;aFFDgk?io2^9`2a{qV?y`iQCpg zKD4s6%G3*B<&TsYWK13dgNydknx&-CedPX=Kl-3OeI^Qk8$Ddi=)9_vp8;{zYY+GZ z)hiJl>Mq*`E4tk!Bv|q}{Z+XvqKh0t@M{L!&|n6sZy%eqBT7RzX-UBg&;Btf!APz9 zlfU&zQnZPg!-1+}CMnTVKCgN&!TkS9=7~rF%>ViWcZ)%^T$!}lbRoXGhya-J-L7KI zy#aNq9WG0Js&iP;tCZ39T4W31-$L!uu+m&Q*q^V-L=}R&E?f&_L(+T$e4>)erI$md z*xZ?BY(DrvWVh&*hyX|RsVMYb$Ob3+cF%tWc?AkaOjG)DE*0SIvflJ6q12|c*daUv zBXsohINhW~Xy^K4c^yi^kMMChdm1t>ur1~DN>t*bzI;lC%3j&r#CvK)QT8A5k zpZZF$gAi-YsYvSzDM!ZNR-!1Yfix9;cHlw(>5(>F2c;?20>HZxBKSCN$M%3+3OXEr zn(mMwv;Gw`_#}D)2Ttouq{w8RVY4aYaWN#Pdc(Xgx}<<2dJ#v(uoWSVhJ^kOXL3Zy z35G9mb+})0^>ni%3%1yy*u^rfeH%;Vd>!*j^ZHk4-_U1`98Hg7*m-wa7&&;kIzLH? zIrUcEoCEWpte{Mf*K@Dj_?eppm6b8J0QMJ07Txj0(iGe=m!qL#NQo4RSnlQ4U>C|P zm05ZUd9+k%lA!)1>NLP#57zE_;65pkcYSDNz&pxXe#`^>zEyd|s75f#liy#@G8{w# z==9`z0p4V(e%p6`57R76Ze$22{$M;9p@<(1D~-bKWcHDrc}yPzWmQ?QZ@SSJ$AYyW z=|eDXv4j23e57D%`Tax+vpid{D4p%o5loS>v}anK46#-+%_I zgDpf^;!sxiBaMxF?%?c2@2V_zt_|&FeCnMz=o~<(12%LAG+h@^8_{2#{S(puAWbZ2CN}|2SX@V0sM5Xnl0Q|wHgY_S( zT&X!Nlu9=-u*~}my7%jOH@zKoqg|AJAHN7K(R;dLl(_x zmM6x^u(vK+C1mQPFJ>Kthxek*xgll4B?p7=KCSxAQb*QL{pihPyTGGfa$IXgr-k~@ z{k1BB2#$Qj09XPeZlQk`$!J;}th~eY-!aZ0M+-R%_66|ppS)oLPo=2)!1ds`kdWg> z3fZY9c+^+2a}iT`Iw%BH6?9m-sdm$sM7OiF#sr5GIZUa+_y7XoiX6@Z#;h9mYR5}q zl}O;)F01`YCT)5LA;q^WUUV!RY&j3r(EFF=Y=cJ#y<5~|W76^8yH|;pJc3~z3m@<| z`Bw@idxH;_5lr1)Or&WLs3M|u9q?dM=~0uHOq`lo4ss>xdorxg?>#MnoYTWw7smMp zCAgb{EJ^hJm!bq9{=Wm<|3>zyEFKiHsdEoe{Q0wjM|5p+VbHJLK$t^r#D|GdfpCI{ z?$vl4gPA3w{P-pcat=X?8_rB3CDS!$ddu}hx@A%R1H_KjTJap7au3hjW2rIkSOF_fuqBh)11aiI~9F^s9N`W7ySR> zl#iI+8Mo|&r+t7mOB{R6r(6Z27~Z4g`#qB0z84hN$gt}2Sk%xZ(jLyI9Hnv~dI#FQ zaV-u!zSLC*Cfk|$&^{%W;`?gd{DP|1x3FtuI*m~+#M8R7CRr+c#@4D|+p$bCcdV!f z;!TBPwhIg)fu;9&=Jreqd7CH+=rrtf{uo7G9nCGaf12{bC_D153_HL5w_W(|f-`+1 z-F(Dhe&c(6E>m$ScXvQ19dIJNFg^AZKmzjqM2{h&Hk7{Hut^H9j)0$lL&zp$&hZ~N zIXcX;@1x z#)dOWUV}v{Jc^d&7(jar7OVhySSfK_7+3BEAs{5OD=7RYg2ti%L=5hv1o)nE@C@me zbyJXOV4+;28ia^Atx@bHbm<8}37?(tqgMA=PYR|FdTe*n$QT}YTBouixc z&&{=YZO73zw!cI#N!y|w@|IMlTu+*^J~(d(`M_g1XX>SUaAgpu+zl)B3=1t@lp`=E zU!Cp9{V&2K1{^?$2q1{9`+)6GYUGn&=8mS!s2M2c zU4y;of#fgtT9Pbj!9h)EOKc|L?NW0cu0ByB)-?E1+m5;MSLQf+{MueYoA)ezV`Y0k ztps}P-2L1cFcu*ml!-C~1$7e552|7sS?JL=vKnHJH<)RMw)hKh6rCMrTxDlq8= z)?%C~y+3fF4@abGBKisboA2k3%hZglTz}?Q(lZ0U#>QbdY z8B@Q9v~$Yv6Hj1`dsl^}WB^3KbFHgoQT$%sO}2}2IET57BJCyIsgVm~gVFjAtGumw zFmuimXh;$6augFnW$ehz3Uqu25F3MmxA~71D3R71IJ{oefv^KJIQNzfUpheP4SRE+ zoHLq21f=UwTqkd%3cq!A$c`+`~ik;VJm;$fYG4irKHYb_%4N-1kGF)jlj)EG1nvjt!%?atUdE02>7EHoDx?iD z-{F1({3~(L){WK#WLGcL{++tdqUFzUQLp6?^!cH$!KV>> z)_%{@%SrT`#t=4;7H7Ni#2?>R+RW4REtdIoc{sIK>Rr?}-6{xpeIGo0Cty{fo9=%5 z$OgZ8XPM*+po@d3jozbupJW*4pZnj;1M8MCLckegEezix&xXs3oHANI_)MU|vLj+p zvN$oY@FiNf?4n5BL#1){kGsa>bb$pz^^@l{4-ojYFyC@Q_1laaeW{jIlbYvciUyE- zyn4eO*x(M+ZUyCT!z!pwvQ)|+Eayq$rO95;slMXWw~wjBt{+ZrOU$d{K3&(UgEdLGf;G^Yxi?7-l_Jw> zZz4BZTSAvZ6{X@Pf{&spp-<0j`IK*NY&f@C(re|upf7N2X08#)``B{1s)y>0!e-xe zoZ^M)OO-B)i;L^#-+t`=e0S}-%{n|Z4bPL!=Ii{q(PlE1>@7O*7ZZI(&R7h!C*a%O zC>0n#?c*o;r7GAp?uhcLVK>8P*`!N9yMl+b*ggEj>3f@Ers*u$c7-6PH>e-++&d=- z6M99HfsGCQShxw+m$DH+Qv(oy5UO(4+G@6&p?UUi53E!K5(wN)QH$)V8@QU+N&5h0 ztRXSb$cadjbgJLqpoQp#LzRJZI~$!fq082~`xi39OE*_N#Lk>GTSq~I@axLAi_i$p z^;f2Q;fCN7_4>}?gXJ-ye_B3ifEs9Ntt~Gvmns!^y>487#DF_FIW7Nj@%!;jU^;@n z>nZEf3;Zv_{!I$jM^g&sPY{_01H7@O#2X?rZg}78AhGbw18KVFDcI*HZHO8z6}F_{ zE1mPoCAAEu6giweFC!^$;9G9gOwzYin$_H{tdg{(%!!501#GgzC)n__;z~2?Od>Qx zft<%ENi-x~k1z2GTZDV`L`I>EfZ9T2iBwAy4f@jGKphQ3d%5{O$6#OBzF@-MWZYrT zqU*6tX^7Oo(8_ZRAGCxQQG-rZ1**^&-&Na}jdjLZ7}KVdNw;M#TLrkzw&)FI z`r|xi5<+ctBiiSI#idETycY)E_tY`&6B0I;=}Qi7Fh=yTxQ8EI3)gLBzu2~RTf0^v zH4e+`9U&$v*TB-Tsp`puW@$*BT*MeA|5Ex=3lbD1`%t?XLHX{AUfF8yOaE?|X3h3G zN?pC~yrlDa{7asKg^lfD5Zg9$W8b0GYO%tge&zGnZM$An0YyY1r44EuhXFSwiGJP5 znv-`1TX530ZfMAja~FIymQT;K*(VL7kNANx*uXsWBx({bOdXnVpU~&mLl@84n;5^^`dF&K^fAx8%rpex85Tkmx+U%WBTGVv(E|q*5t)A8S0W>z zK<|)WhVDMFjP720^oX*2nFTU*rEb9pjIZcZF!7-eYNS#_wZ}Ki~t(qNUrk>(VH-Izr3EFxtE zaCC>(19(SyiWR*#nrtBXK8w{{tPA3m$-Fz)bB?Y)H1V>=4hSIpF~m7C1OxJ4jp@f4 zZ_$jF(u?&7IZa&_^3ibvr7#0w`gk6ejppX&xLq%dYt=uG8R}QGb#&gxnWww}jo;CK zD4=9db^kBF`I}+fw7&a?!0?V;3yI-5e`64jqc$)*qlg-6HP@%776I~_-%}pqRuWMz z(;HmY6;a39mH%2S4sp6PwAm~SOWU-wwltK>u_j#8LL$U{W%0%=V;;>q`T)D;ZM7bKADbp|W|24HbL;uWNwIXB4%I~M4c4AG z$PTH?(Ll_8%XN(%UgMCOL4~RpB_nqw%&R6hI}D_3rxK6W<*GIvIG9?w z^1)(9n9%_rGhz}?A!4MLTLmNi> zF5rCTs_QKbjD;BPy#qRyHax*aWNlE-4*D?I=Z~qr7B-~g=PuD)J!l0RUsB40IJDP4~*f{KG?d3<% z*2ziYe*5-lLy!9=SL+P_MZXx-lB4l!Xv^pJ<5!9z-Yu=7Huq?_QsIU(hIx*fp5u_b zIqX{iMcT1>skS+6gfD)9<$VnSmO0}W@kzVA?^m6VNELA$KB}atp%^GH3q$#T8 zw(L~%V+gUgW_&&*RVzTd%YkY9c0!mHMvJh;i}E|e#1(md^!6g+h%RWe3uxDuH;L#QLH?)yQXzM%$cG+iv`ez^oKmuxX+rjoq=WL2nx`Y$0^hG>JOwW)?+lVpY>yp>0L=QsAw&yIpn5QGm74ZlWzIj=EXdD(pj9bx$6wtgJqH zw(7Is>Gls{+k@V?vO^z$IHrXGzJI(ngzM0Dcg{cKEw!&i`%>yWKwz#U)%fs3I&PeI zcx@Po^qOYv_2q?uletCVr{SA-EmQdYP2N1Qn`JgcjpO;O#FnKbt*6hGB_;iXLWo=( z`%dHNrK&aHjsP8&bwXNqRDTXHc1k=M!t)%`jwY{k9ORVFS%p$siqbPj^M{bTT1>)@ zzMn{Ao$wYyUr6Y7Z+8#cvO%>smYAE`{gnq&O?Xxs55W2(=$ZXi0l>1G?P^#K%Xz2U zqn%{C33M)@<*6|7`!}#qUon2Pt%90tDe((tVc+63LLnl1?>CscNCzxdHt`k!57emj}1;xhrlnso1=3IFCFe)$r! zeC1O#A^iJiC{}&9o1bthQS?k&6o%fPno@`%mp-OTGD%ys#Pcq;h{Rh1!&0{EttIi(ZjUB=bgdUNi1g2%HQB&Qkxc1z z8Y+>Ej+#zw(!VO<3Qz=dO9TpadYZg8-iVCFQb#KBOF@>uHgxMBEfjTB7l(TDffO&_ z(jHcaQkIzSlS5tR;%0(hE$?P@5-PeMKLt6C=vdtJ$;Jk&W1Q8#cfk5CpzY8FYcgrQZ5=+iL>HA-jt+XOXWCCN*>SQc! zE@>+Dt4?trppn0s>;Qh93uRopG`^N&@DoS823w6wr0TJt*`f7iKq+GHnk)HRpjF49 zqS3Hy1u;lJtIK_CgSX4Om0iw&b+_xF=XcE=~RTZT=}$ z{M00Sx>1e;5_S37_ZBR(a;VJ}Ky+0pxhWzB^Y0voz8vEUL&kA*!4;+0;Ii#RKh&rP zN}JfUPF@W!2M4f$GTq~!=m`E_Ex@Z#K3%-}a6x!o`|%Ts+&hL;9Stk5zg9w?1=3zL z8~5Yz?0Mhmi;WE{T3D$)3#AiSIPo6l&f&-#Db`~%2urDSo6RAQRqYH5mH|sEd{mqc zW?K4wQ*BcLRyo#nyHS19n}(IlBe>WC@y0-|=}^4%N2Sv3Ra2Fcq_2LZ$fu9Njxkk} zdP!B^0R%`0;S_m0aj4^Qf>?CeA~BUh<@uuEnJvh*(B@k)#Pg_=o7C*f21Xy81Fd`6 zYXqqC%Zf87ayQ;UN=HbC>z*>wfy+;-oi17{Sz`(m(^LBuqEgew{>Kx-SMGn*O4o07 zB1);8Ak0B?+&>REuStH^XsSFFHfDWC0O{DA;V*)CCeSlizKP0{DS>NPacgSq6%wQt zJ(?4K~G8-QzT!Wlrao z+6SwNB;J`H&>8P7b&*j7*{2X0ITUBp1h4ObJPH*pWwYH{91jIqzWL=ZluV0hHJkB< z4nL&{MXO5aTZI0s=&d_8!n1Zvylgnb^#j4*s}S>}E`rsQNHU{!xwQ&LR$s+U44L;u1PYI#CackYaW0p3@?l6<%bxIB<4%Zri60cC3 zF?W7plO;m`>}wQf9yw7SQGL6DU+P-Cs2OOW)Egc;lQwHnk3PV{AmQ#^rSn+L&xwuEiy4pGy=eNGqyoa zu9_J!AY_jOO7JF3c;w?LR9(vC?ZLcVXn%&+}kjMT3S*wR+UnX ziCH#*9J7<$yblSJLEtv{v(MlsmH$)FATZjB`yiM>Sh@273)7cS+GNz&KTGDP3xMBxd$P{aZ9pB1{dv zedEuYsYuS41?8${{beh9gGp+uSPwL_*93sRO!{OXcg#d{nQi6`cg%_3-2ErsWf0GO<9vV8o-py&D3E z1OyNk$CFkVvC)17i;meg_9VWYi$Y1{K)X_`FmLxz4U*4?6-Dze)UmKv!wLjF3GZbt z?l{55Zb}`)u@vR)#!=)z1}rKvS+0HX!z*y*TvfXG?YNVkbf8gWW|+YW()dc6&!!R& z3o;$zjYt(|nqACV?ItIWYRm0r&znCy(jCL^Ii04ht{zvXf7T!%Ki*CYGfFv<32hZK zVAtj7p@Jxb`BBrLf8wKFDukia2&tx@cS}N#ip}!}++ZbiZ50x~zEQ~59VMmWr_9>z z98aNc3V900Trq96(TN-HgJ)Y=bEj7YVFpJKjP18+Y9ES|F7-vu@3b-v9|$_p-k5ru zx3jdL?h3tBXMJVQzHRFbqep{(q_`7k=1>xK9mHA5VH z1VTsdRgWn;e`XGnaaQEwPWWkl`ofQq)?XJwRc>A)IPiB;B(i5*wYz2`*dm`%VaMC3 zT->8jrBc7E2+AX6cu|_YUqVpHh8`Z2Uxb)-vMODk9WLUdZ`r4NxE`>?9b9@>R=R6d zg-M#ogIM^*1s#UlvEBNaap6wTK-xbi)}(ei`+dsTD@{2wkzP2~R5XadwZF|TZWOrOR1$!$(8p^Pn-D`aN6-z4%zF3GO zhYZ8sOFK2kqra1sX1d8L^XY@oeFJj0$vP(y>gnVy)uZJkMK+ehuuh^%6JJW~xX1kl zC&$vo5E&}oindbA^wLI?8+uy+f}J+f8M{4NPR};{&kfPJQixy%d%z2~H)lB94miV? z9oB9;etL-Iocq|uWWmrOLrkpjwmRX9y+Vk2unH0jYH6|;8aRev@!*#xh^OQ^csn){ zfj2(w=gs8;8D{R-)LKb3?vOiyluEi4v7Y*rj_w9iYM8o0Hn0vt7`~yIqARGV({%-*z#|sNTem^e;P0VBFS5K^ePeJ);HO_VtF@O5a*;ify(1 zOs4DefL{vt9jJ^raG(JBO7BV?Xre{pKt2zOTiR31Ak0xc52=#jCyTXO0D`wk*3)b~ zmSsW))(-}h&~bJDkwGbO07$Xm=O>@J3;q6mNEc6Tz1et~@VX2oq^!1UYo$y{d^oL; zlUC4FFZTzhN!P%_4q$^tJ5uMj6&AiY!`e*Lo(a&I^_qgagTf?DM~OXUux3)}Yec>_ zqsbf<5d3Lj!?MI7;w0x}+^s6*tRUhR^-g z_!TT$E$pMx6;nqYU*EN-r`o|6+ocp2@=&nIdsHP2kI9Ep6k{<855r>^PaSQnnVALJ z2GnLBa(y?arn{vyH*{1lu0+FiiYmoT6>1GSY>)Dr<;L&o_k1s>RN$|s<_t?OH^ty!uAp@FxApB>Y9^CpDksH~e z_8*O94K`(^U9yJjzKaTn&K0GH>&p)#t;^#@%0NbRb9V#LQ`!@RnLC99l;JA?ce(ukMe;Jx832{{AHG=jANs z^kdh9)w*SB)r};piL3~ZsNRRXH;M9Rd7Mr@R5s;B2X7h~dtF!eZ}QHsj5D-Xj6_5y zg8!j|Cfy@ctH96>eir7+PkftDVs=p$po@OR8_yzn3_%l#WZwAJmC3Fmt#Ko08@Ux< z3wq5qqZNAen*7f`ici}A1c+NXcapjMsbe!=g1!;wTc7ECvB}68%88f8At0S}TL6D! zn)~~!I)k9G1KtR#ik=!Tf`GDx;X$=>>hcivqs0C@p^2IU^#OR^O`x6_Ub>2B$+B}g zgjgnAp?d{$6sdn{&QBgTeMB5M5LwZvv0(#IZX#CN+M0u2kQs-&0DZ3|(S!{YN)4Qs zO=V~1dDpihnT){*s4lPf8*fO#l(CI!`s7-U>@s|rxeCbQB<;&s0OP2dUe<0I86b+H z`j2X7k4h<0y`0Ig1o}Aouq`906|{!B{bRm)Z+*gj)TsF;?27)h-OJb@n3ia;U}WMz zt6(nuZUmU&4m|HeJcbi+?si=k^odz`$DX(``_t>GW=)MomyyK8y3?W(goSC&NISl_n~UU8>aTSSgpa0lrwqbDFW zyWJZyTL{oSl^TTzNqI0jzmu2YV~4O1GkVv2Awk{3SE3~rqeczjOf#^bLG5tLyMAJ$ zsxfIFsWLuEaqH&OX(!mTU#~gn!-TvXu}c0UJ(Sowj@t&5yzx?sBJ9XuJI{=}#uMgx znl#4!7IZk0Jy-~Bw*J4UZ0;0wVI2Ukc5@9c~uwnc{lBxI6qz8PV74?;kqZA5zZA^wI? zA-;6?_*-LL_;R#uvvRTFLQ{)ut|poWOk*O`g$^=V;(Qz{pX9|VSRtxGZa5TL(A^sN zn}c#^N}1Aulo)0{hX~?g`zIkf^jAi1Q+c)qeb?#ljGEgEikCS1=o_kU!-|b=_XDQi z|D!>J#qy80cldA3h&5$tHFb1qj?aC-{H>+y=Ilcw4B2lC{jV-daHJAHaR#eR2Piwp zC!q^TOTBHXu4(c-hSvFJHLdJKGdvCWc4~z^fa^NvZq8V0#g^3-Q{f_&GbrPY(jn!v zYII)uLo6ozm7C)3zpu6x$V^X8npjQZAg(Q5jAaW&X1Z@`b(oa*jXo`iMVs2ap-ZhT z^^gdWqZ8UCRXr))6QlHHk!ky7^m|Ql^1G%Kl=_JVAg+YZ;qaw{5TlAsxvqbOC7&Xh}Hfd69bst>liw#T=0u@{ePXmjGVndGii zO-NZ={xpzULUrPs5m`;lU?I4iSllKTX0gCak0$$hRbVGW|Gs&X#zD+=H)eS&t4o|^ zAP@2rx!f|(4+dWEGK&zhj@JK%xsGV^A!vtxTSCRZj})Ob%4c(kH8Zhi3E5T`)4}DC z_68aq)%AsNF)>_|o90KCwufVE^>6*-kyM+7;UY*C+IdCy9f|LM>)fuM3F|^5D*XsT zQ)H#UxE`5^-zA;=tbIZ{u>2-%4(I>wzx!Y-@8ef5>c!H3wnjuz8d0jbp_ROeRWneTv{xJ#q3AL z?1za5D4U`-Mc8Mj!mdULiCf*3`*+;nQB89}C!&vaziI~bYyhq|B=j;}TZ)fO-)@Tx zaa$@hNrDKU5^()6Lyx3Mz2-uUyAQ3TC-N51hO*;+Z%T}GHXI}?Z@=$9J?4ipj8m~< z<5BOR9LRjGnEPI`Sgk<3Z&G>2AL4s9uiWsh#}-ne_-m4cyM%Fx96bnkD7-p(f}qAZ z5W7CcA6FY&h{O|z*9gze!@r&P8gV#@n7-G4^Z-`dWfe_CcxBN%MI~%f_r4%$wS(OO zL%265tLw&<2YauNl;fX{2%1Dcf`5@bo7sgdALn>A9hWQj*Qv#vkVv@#2JhNF5wWK^ z_)dmaPsshrgwt$PjoMDoW3GlcOZ@IsoVKMK;FSb$fTOr*ZCgs4d`NrjB1Hxy5*HV# zUoO-wf8wnyw!beiRiMDHk~0?x8bD;JC19!)oP@qNZe#<0L|Hzr*Gn*Oh)sj1?W@eo zrHx`^M_(A({B#C-5B@-1T*N+E{+STSE=GoSWkSuY(JKDHj;l`q$RII=caGo-G=9Tc zIAuEWRM*d5dW#CRb~iqSH9b$~=!LhV5nbq9B~U%&&0@b#LhRXvPvh4+A+zEvW@E+N z6h0HD3K5hh^`~P`Rz&C|KXyP43qnK#sGhdGrjYtj-tI`C;ThPUw-yIf+~g~|SecH& z^S-`fUGN5P>Q3YTrf5%G#SjgBm8?qbjlxXtB4==TUC-r6@Rn;;9KfG2>g?U23CYQz z<01Zch~X2W|AQx8Lt>_9)S6k){R%VW`9q|6rxCtfGp}ih+&7Qn_Nd(jlkA@Kf%BOqwm-D80l)}L%{ovZ#n3ewJyA2o@RDr8o< zQM^gGD2%H(I)F=kVi9+NhRm zcy<}q(dmc=V?B4+O1EZ*wXkYtk;9`YuvIX-VA?U*0TbkuiQ#9s00J1Ql!**_7V&>d zOc+dF2&zewG6(aB7kPiqu&*hy0B@x^#m~VW8-)v{^`~?j>ANRt2Y&`v-{Sfd>pMu1 z29cJemD0_!cO$?%on(%f*1Kv_UU_xhS_U#$@bDNU+{Tp>dZGV4-CQ*7YBF7A=%B3Q zn^Y|EBkFz=i9Vf4$rw&#B4+pjy8~jh`=X}H%R649vrbp_hyEaft?QbWXB(eo zg?E0bAq$@6fnBw7`o~94>sJX6=K|~Rtsf(Ch8AK;uG~`(y)chpW(!NR{Z)bYMJ$mX zj7b=sd7EDOJ=X?4kM%CH2VncI<+$Q}Y%VS7pVR{GG$}$BZPElMu~sb*9yGhyq!rSUU_1^p&4nl)8RbonJyuHAwY+AODo%eZQOI zh~~c?Xa3uLmZ?rdh7?Bkzp|5DyMEO0TnZ1LDKsm|6DXVrC)-71EfCZJ%+g-3i)g(a zYs0DY5l)(R`QOws7bB!?&!gOPVV0%2iW~`OGDV!r#z}j`M*di_>YFwdio! z>3K@p)*)JH)mP2E^3qx295RwAnuSdRNEq&`zii~L%)v^Baa}F9oASz^D5j26D^6GD z$vKTs+snNF2%ccc0jip+r&xG9n_G8av%DBEZIGxX1$A{4CdfTeYGbTGKub$62sg>% z6W9bzVDDlX9GLXoSaRBl&EJ_}Y~+|@!BMT0T`jLk>-_jtgW20_d#lEcr~@d#(|9!e zJ0p(}TWO&Bz`)vO)ro%8PKNq&;8?~OjHXJCa(6PlIm-Bt=)b`vUhU&O)~rQGw1`%m z$qr>0sjzbwO5KL^`I`%d;`lif1DN&PwG{w)rCK@5xB=J&7F!+*NPu5G8ooK^XyLVU zFV&{TYWMDc#5&&G1<%BqX}Yc|zL?FArQh8hDX4!-pFXZnWEhEI`Vc^JSt_yr@FQ}x z3S`*qrYu^lJyX#C#78<*5v>~`Mm%$yT}zc7OYoH?#>bC%o@I#rc-e-gOTZ7 zPnR~ECMr{zA}_XC0J4{vIusCiEE(50usRSNduL^J1`aqpNfUBTs+O!Z04X0jxGj{# z^9Ln=IT*kPCnQgligt;DY$kV~5!4WKz6vFa-@}ar#CQg!aXDpR`Chc@8 z-E1t@--V^8<%ab3wD>h4bZ!=2njH><2qtLI-;YX@a+b<@R-(*{067_Ba9SccdZvNp zBauC9%4h&a)X_S`TLGFyR29DA*?lW#WTF;h3{^%1#gn;R8(r^6?rW{xCa0M!8jGFV zud}z7*nh{hK%_jZkYhV-jgvPkuy|iFI|S}M*{90}4@av!*ri)wOU0_^w)neL;VS6i)8TR&xw>B zs-IXr`ibsH!y2vC)tnPg`lDVXp5{fqH6f9b?4-q|_DKiCdnp-cbLssShr@)gZruhesy^wOq z?IaC(cP0E_Jp{iWsaNaT`gwGMVim@T$LM2KrSU?SNH+uQkft}{SJ_fF=MC~i-9}k8 znT4rJ?`zIk37xf0wYKn4N@<)LMU{V%yrQ$MsJr8*`DG~~eS}1ne4Av$1We%XnzOuH z(0?5FXO-_DH|_{vD>EaVnJf%XZ)t4RDXaC$XG3uGgeSwlR{NB~06P!2GIHNQ75;#` zKYlB5kB45q0qRiP%YU0-QgLgs*W5wS{MpA7^d}{CM($NyARlM&+^aSfq2PKB(Js~O zrP@yC04bEG;;A^UQX#ycwH}h~=obm7&XJ{NX+Hgg)41W=fO&9pK9)kx{@31u?2cJxqY!w+?OfoaPX zFZ)1p}*`H+uk#qE)UIi1-y)M~vk zfb5fGM-LsUslNu>NHmkVh2^$^Qg|Q19%&5B!Ih)dq?iN;(RM$>(N=w-5ghHkmjkJ~ z&V%Fp=l6~y(m&xgqt(UchmvH@*)}1R9Bs0Vp`-LFM%@L=93n)R3n}6UmBc<%I|A_1 zds2xH4m!+E4~#0G>y&bKmMBkpz(>1u)L%t3m6h+&o0(tLQ-KC|d&Im|`Ip#rteI~f z??gDr0tjE;HUFh!FVKeI(0m7)y7#N!1xC#WSk9gsC?X9ngRN})$E4y^Q=Yk@qWNhuHytR4vx zgmJ!8W7@9@fU74X_^D1lr4DP&dQH#4%FsURNle7nOZ1`vY-1IY@Jj!=#}z&%aM4BT zwK<-!T^yEr<|QA*R%6o`l62 zGx%(NJqSBG+G|)Ha%g4Av%m8{Y%)tm@A0f%aBL(v0cRQh~THlJM&6f zeN-myR+OACj^;acZk2h}lnETXhnE;`Mw!-Mi$>J&Y}RGH29>l3F*&;LuXcLU!`rJj zm}5!H2(REUsAtuEY@z%~#^|P``)oy3@Iqc@aU~>M-zrm206|T+3To^%59ZM_U_WXF z+qZDa{x<0U_rCyX_Q|vMW}km7(6~pvEv&TdNxN%}x1K7hh=j`xf)~F}^X1QlLei7< zfxn+sN<6(J3iwZ4jJ`+EqM33+QVxsVus`QYg`jd!X+CA14FP7QCapgKCVX1$C_i!{ zptj%O@44Yl`LYlEHco!$_dq{f-C?)cbUvKHUcuiWObY$b^|X@peD$JnAnUn;ER(`5 zVQlo1x3G5qY7PuO3QpMRO0A~6_z6$<9h8_xKIexYKj9Q0iyU#p6no#@%Zo`G|Gg`& zq8{~<{m(cp{RkrFw{I57r!q8hMIEp>?+|Q#qOy6TXT~PgW}QBz_$joc4AXjeUhO1l zy67ohCQ^kpbw%@iV{&G9X(jR8HMv0whS|~jsA+cE#W?izDy@`B)NAD(uHZNiKHR_uRgt2$l>qbx?sAl%x?v0iyP+ z_PHJj6g)ttAG|0jU%TNWTFe&0=l=t`Kt;c|xasc2wsT~5Dzo}nj*bQqnOu8Mt?C+6 zsNcTwuOuYt=Dye-S6|6(%;_&aX=@46Dwtu6nCKF{iE%R{lGZ}r> zt7K366|8`~QctkTbTq1#3~5z{lw9Q^hb+Kxg7qMd4zgcZ1n5j%6{tcV@>P$$?G}$8 zFnP+O4LgWOmNdfBM6T_v!vnRIcU`+@ARVjutp)zxL<9+zS)E!155}Z^yJGkDB&k^W zcRzmVZ!PdMc{UM%L>PW;we4PWc);0zN0t@5$A7sas@=zKEZb+F(pLm&CCsp!7HGnS zgNevUKHut2+&~y5*zC^yS8UM$4=X8zj^uCh!>{>!{Tb_5av zVXuNe{zHA&0o~t`EPEMGJ+S(&Ju>sAw)1@PH5Tlr5`mOsIa+s1PJ8G0((J{VFwf+{&G|!DB!@WShd9}ZLYQC6CKkYPG@XQYV%13HiFv0=_3KaOG?cUsl;p_an-ruKB78RAC5t>xW-m7W5sqyDK8i+f$GEt14vkbGP@8U#PFS z4b5Gs|M#>_2wIRQq`UqHXqb`ic;(gc({30Q-y%BPJY7h7bE)tr_I{ zghh(Y?#h4F77KEKj6&EjbMppt$%q_B#S2fke(Y85>FN3}(;`{h6GE|Z8UOB&^t%q| zK2P$%RiazMAW-*LST`k@d)d6>&e7u=jL>1 zjvG#f`{TamxclAdxne5)wB1}J%v?tPYC~}aT7KC_s$58xDe$o=WM_P$D9G_=Wx?fp zHDcIoLmX#Xm>CK5y=JECFD!lJnAGetK!m^YN~{lRhD&5ww5)dJPP1+P%V%Wo9Qr#pcwL(l&HNV2ZBRJ z?pT@+!isjPKjMI@&0XC3dW}?7KYDl(9e6(-hPgCa-&Qq0SGu^|Ut9HkjbIExYov;8 z3Y`oQM3*PjzjHud5ND{l!6ngqabdu&*jb+(RfdknEcZvu50KfhOz>$cp9~^0h32Lr zO=Pqi*ccF{$bD0+$Fmwx$?@4NfAn8*oZWD`g_(LZ>ef27`c+q z-n-Imi_X8H*_xAT4e$>+TnaF$IC?cw`FGQi(D?ua@?@7PXyz2k-)8sZIj-M5Gs4kr zvGs4vE)-Fjr)`E}k*_j)X2X2dy5nAP^u1a%y5ov3eYnbnH^Kr13KaMVV3sw`PhX4< ze$SArHR|qjT(OxE3IG7XGiM_cv+0cvk?>*oBAYuSkl!jQKLCL;u{$SQN(k6cb>tO0 zK`u#4zS2<*O40JXLwY)GOuOaaDW6Orpsvsoj4~CD>SSXjrHW-j>8JWl+`AblO3Iq^ z{jw6oVA@fE$juwBit%?=RC8~bJeA?*?dd1{)g`Kn1KWJc zgMWV`6pJzW)v*cmP*NFmsQ2uQ6Ux>9h?wpjH9Ze2Qt8!)@?16mi81t=+S2`&z&S_X zZ3$lfF8k%JQQ75yf7TxUH(g1TRzm<_!9{yjCY=DkkPMIWV7n`M17Viple_a@vc}>J zAk4yin7K26?z*TDh~UxBg?{BO-E+R{yO#NEdnke9XT;#y?-_O;(LF_Sz`k_gL4S`W zzIZ^ptJVCtJw(F%R( zR;fEDU7>Jrt=j*tHBBwbN`GBfBPlJnt}xiJk=11SD+A4aA%RJEt=hw^)3uwPS~7#KSX6Z*`SfAKxeoL#d~h5B0D$Q7gjrclt`5%%4rhdMhhlq`=RI|PJZio#YTTdA45WNN zp&>p9OI4cNE%Hm1<1f^vj>RDDApOL)m{bgUhfUG%nrjja1B0L$7kB0qw&pLMO*ZcM(6brjiUS$wAp5^LP;Hx+umJ*yMfw=NI%1LFZjX3mI7~jiVPa>fC?X zFL_s2M{@l2Typ>7F@19FpstG+%M9pG8B_w$$-L!rIn6EOL4R)u6Y%lv+C-(P6#&uq z6>%*rN~IU$8(q=0Z_F*KbL2BlL%CqRgzE8GZkPlbiX_YSm1iV5AfarUDEmU44!x$f z^20?h7-4~rO=0EzL{X6APs`gAz7fU%006=;hS{<6@u9;et`#qBFm2mB7oTt~FeXz^ ze0iA+Z4)A;u|qJwgsX4H)wjaDm>*g(rqn`ksn&nooMq-@r7xD-bX853Wm@c^iqh*s z;N7s=q==XDL`Z@80P}bl=^PLXblBK_|4SHWE0ef$>8Lv8KB(Q!;;;^Xkw-CrXLH8SM6(r(sH86} z7J||3nv^z!sY>6!nw8|33-RD^+`l`r_Ozgh$fH@^+#Q>T0*J}9?C2$hj1x$Go_?3OtmhdH5Sjg+qEFnY8xJYXQ1NqO08 zjWxQWQuTO9nGjmjt2q2_NNHC@n=q7B5plm&6I7|y%gL-#d_kT*Ld#*6uVgNSOkj)i zatS1IxaP|y4vxwvRuz%DP`gBaOT=QT>_6*BlHJXnlZmAhV=d1_Hq%0J_XlB7))mcz8LH>_~uG(x}1)_a?q?$S@2DlQ6u& zel~)(3`j6DeBn<2uNP~s3rcrc=aS-dM#P;0k(qB6?djE2Qyh0oeEA-KuQVGvq}>jR zc{TbAhKFDjr%aEN%Bx2=Tzz4w0t$5LawUcq0Dxl46RMK>3`_UNH^!3TeZi%#&Myi$ z_IanS9$6@&hF2APf;Eq*0xw(Fe=W{~8^YSz#;=^Bqa(yrh1j`G-g1vB(^78zaM24! zSm0w*Sb0BD6y*5-$@h=Xq!8I=8_Uy@>ESb2=#-Z25Y^Ng+q0_+o5?2rT%sqj=%o_d zm}mujk)xJz%^kSvdTMReK-(oQN(xNW`_HQ>U`$#1MpK=^Wi7@T*Sa%jG3YxlEf}vqi4OAvob$*xafG007_tU}}jb*Js3Ua~M)8Ybswq zAO-xaP0O7!fd#835EFpt1F0P}F4iy`&>GJz8~cT4!tT;;WH z(pec2;bca}pUxrkU$g8UR##Cx`v4WZdGQEBCEwQW6o@kl>=h0~0Z14_uZNruT=cIF z#MBzt)h^g5FWU!z?-zk`uZ+)16;r9`wSk3ynOkBZ?j?u58JafcCtbEXeda3_^WSyG zPKjtZWY{xS`uNen|$1!&DuqH(+OXWq+toBRLFA!b%VKL>#H=l|i+@=`Tf( z&s5*oSM=TD*?4_6p#r-J%>8#odnXlpXoh|)yMF!rJ9(Bms@W;j_;unJc#!82P0sj4 zM!x6#{MgtuVSngt?usb7K_Dy@J|)q2tR2QUO_%l z6y*3=5b4Z}Kk>Vt^vxx3ujeqdG@$@HxHCD+;O`~m+tg79#3$7xwN`3M z3gx=>v{%Ypl;sbC)>1O4fk$F`Nk{2EAqQ8@4I38^^qN*;f^<`G7iYdHFA+42jR_O+ zS3BEYQsBW{u2ZSCh5h>fT`w@XwqO8F;lRmRSvQX9?X;wU>Vue6#QH=`xih-_6Occf z2E}pAY|`9q#wraHKXei&XN8w~Q@8I*&@49fTBYSxOiuG01V9xWx3{>8;@O^fkVsG+ z1R|y6Cc%k4v7f24I4PhhzGxkIA_hAz$dR`E;hnK_^Nn|N~pP7>i>&vjh;Pw)@rpr@x&9CTyn`DG{SFv>sviN zJ>A{iJkRgiwd;l(Zg}dcr~crdDj4A>jl#I}tY|9A(nCUryuC2`5%LJhLq`Z-M#&kQZt070CCX86F!CDAEEAbFRrZ3G>p^ zdi$xirV`wupChn%z9c!F6Q3Z&do^(rg5>0>)U;8=sjS-dl)FeWz=saP_PVS`Di~#} zYU<>5*@cN6R93Zm;GD%pB6MSLcT%!VXwWu|jv@^Ed~5y7a4wAswkdS=QWXq>zk4na zVtCx0^aqa4D^E!=d!^7=?*9!-)6tSI#$_#J^kph`I01^%!cvR&E)!B@Tm7ZU_tpq{ zbuxQ%7m=sMQ@^ONAB1oo03Z-*maDfZbnB}#lM)$|q_-py5iPc%?{1GiqatM#md$ci ztKes%uw_UAZqK~FH9s?1eOtmOs|w)|OlWd%tx1`Gw(NC@v^WGknOwMH@f{B$KBwx^ z;A5C@5Ma}sxH`;U$~tfAbFWOKOr?U^ZDu8!gp|MC+TF;JXMEE^mVbDC`g5zROJd=B zMdB`QKnNyROCE|Ts?BTvZ3y&Y9PTc@<3iC*XEJkZY1bBIQ=7a&pN`Z|A1HG7E|y(6 zU3D#qD*>KE@TWx;jZyRGUlMy`YOEeC-&48=0w4eYIDnty(?i~~0tmPS_A7|PECY#(op--NvTA_Qv9He%q2%m0mp45Nc|zk=`lF=Nm@OVy*+{tzO=W)JHDK+OJ`4WY>iYjL-YC z*7^e&$MAd$1GQKyK;VDnQ%CK^5n_QE)2ulw{M4G_>Vnbpg@5FA8>lwJ)M9)=<-vO za4z{%MTpZ1+w^-&WaUZs0t7$|&yJ@&eTiiSm%A1TiipFoph#r?$K(bgrK_cbDN!P2 z&b-$US|wrq8`k#m_J#^dvtu%er#VNukC0u6YOYZw?vXN45fEQ?6mdCJ>CVpEfHw{4 zHWzZ0K;0#fzCG^|9-dCHp`uwr${iOfLIoQ^k8KnE>Rs zD-C60dB!#UyDo?@FgE9Rr`}nX^=M5^JHf_c&oA>#wXf{I2uzy^J)g_;#3(5(-DTC@ zVWt7|6G0dGwRah|FK z-`GmLDW+6e0T+T=)}Z_Rh+bT_iJPYM+I-*e*r^e9pkU-lJ69UwmC0lN)*F z+rbMvS591%Szol=Y(n0&h@S@YVG?bkO8#ks)Ae`)t5m)kjy+bIl!>>!F9!gu^Xx&- zB$G*gVR`0mkL$cf@l1_!YyRYRM7dJ&R50SJ@jX)>Ujae!s`CrybX!k_E@WdpTjfo+ z>aR3M7OH1n(37F5%IkXCKS!g&{L)2b=$C?xXE~u$sQkyqg}9MS0c{@MU>C#jLiYhp^W668ttf5pS4$lLm%PT0Bavp(S$Hs;C%L;Cs)Ua2d2;+_mL6 zkdrd>Ub)_eiva+j^LaW?=ks|008o-c*1f6R$!Y0`PT#hdtt$4tn3lFqD!#&7Y`MrU zXmTnHix{-aYQEo0MoXvuTSCnBf)7Ws|I`{y#WjO}S6w~L*Fpe~LGX6DwnijdAXBf= zjD0<{Cn3k7L>=?<=Hzjl(d1CT5AAdTx37z&tHQ{=v2X7r@G7v8XPU%;N1fuV zSBayBd_KXK_(>({M?*;k>%Tj(yz77`OLu! zBUM|F7KiPlg5)n|gnGR`8jWtYqtU3*X#8VOR#a59wY3#~BmCsR^SneN`Ad(Y!21;B z_&sJ_8#$W$pqt9l_R#vgukV}sbdg!p$=6quZr}VW!{!E)Ys0X&ik94i&cMlTfpi-$ z`l8HssnDO3jb(+ousw3LDiH}|#Xqjz8)>XB2@ChlCzUz3F*g{K`Qp;6q?r;qPvvoT z*;a(dI8!`3uH#M%m{H!aGr!iZoP~9^w&J@rv0(lASA+DalSOV*s-z?K*+@yd(C@ls zVsfs;@tJ))&d?bP2H&i-ivu2oO!>k1^8!?ygZb6PCFaP6cvd5*yb5y|d_PZVE?sLl zm}bIh&yRR-C6w>+Wp2x^8B zpm0pfzxk@F;pys!(-69aryf{5(h{FKrfPWBetQx0bdhKfpf+gboq7HJ3n{jDJsYR3 zZSuuiOSPzACjbBp8iP@EJQeGUxy(fPM+smnQ%KNYL4Vx_JBe!kf-r>@^oE!ZU+?`fO+$r?OxNauCNYC8g-i&b^X*OuDe zJ$9k8yV;EM3LicE$S^*9K!0)EC3gV2&mzarvBZ_;9bz84XY1N?@6UN(?o4eE0 ze8%%-nvDlRT%x|aTy<4Zc+fuh7)dd`z~}3drfpng#WHiZ#u|nyAdc4v@I7jy6&Lro z7M@vKXiA}1Cyf%pd`IqE714D7kdYAL2W|}jmyXMDR6@cyj_XkR zN;$FI{{DX+d7d2w_{p`=+Jyh*g@yV={AHWw4INXLdov{8J5>L?i0G|d`ntl!r6tax z#_yaE2>T;LhV1fH+TBi6U%GO#ZuZ{^5F2gT?>4mnAPD7LiqubqQx|B>^+wV6TZSj0 zjBBj@viY)xTn-}ExNL~?SD+smGk-24Ja+8Z)YR1K>gws!r}O#z)mL9#RaJHB)Tu`w zeROGQ2>^g6pM3I~Ypy9NDPb7qnP;9kb?VfgX(R;-6!=>M&C}Ys(Vo=Uf9vUbgJ!?| z%FSYd002Y*`h0kFDHGZz1RjEVfcOv(?@*Mzj_^v!Iwe_4h-qI<n+CM{9F-@j1$raY^|z5tWimbg46(G93*X6f+K|e4P-5*&Ypblon@m zSOYyMu`U}-TdNSc!?jQ{_58GW^etncGSbqOc|7KHXovgS-|IeJSN%`d?3|=BWi0at ziUslj9?GXZ{nKc7Mj3M|J9oze()AxjP5UqCp2n2%?D}Iljt)Umh3-KsVXvc>i+gX6 zfTpwgf9i-!cR;>j+v;~U)+8%|0KkHa_o$631RF?%PxyUpN%*>~K`t2Gp8Jw58s$Ji z1{MXm2g6|Juv{PnhaZl<;#Kb+-SREd0$J{gVSK+3y!ajCj(4?BkpOU0a^)`nfSzz4 z(rg`YT&o9vV#I|!Pt*GQvZ|X$L;n7xNJu2NsbbaU77((fT{8dxWLSDI5g1K`x}xjd z^NYq@=4G2YU`}tzom$0r3^xBt7Cu}va+4$vMunwk+Wz%4Kn)R-cE0E;pr%IMSh?6; zGk-X$w4d*MYK}yd=5jbYi)}m&rv@lwZ?WKe&F6=6*yP3LT|*o#G1Mm)I4aKK#w6u9 z8pK!tc<{pm=Feq>nM@`gk6(A)bpQaw_$JVG1x)_y1$HsdE{&O0xU0wOGv6J(xNKhF70B$PQmss+F zkv$x{n?K3LSB09}amznvR=vt4TXm8(TbZB0>I#nOaj?%=Ry@vWjr zU7%xY{>v$c$~raGGI#vdGV|jdjVrlqD<*tGS46JP{4W>e0eKvyg2zTh-GCe|l~h-H z4~vPPMa>U;o!`tRyYs}?Qz2mlQfm!&G>F^mo;NKkPr8L$PUXI{J&x`WtRAxkpVQh& zo`X5IOe}9qC)K*5zC>svmhDI(6_b`44a?ndE_qbD1JV?!1+Q@+K(jb&{#;sq zyi^~wtzGhd{!fV^2>kq zzeCw&UVCqO;+lrxzLa{~RE3p%WE2&ySS#?c zDI8q;MDaH+#|QNS#Xd9xNmeMaH>KeQ8aBo;PS~%pA1bq!TAGY=X+bRSAm$mtiL|U!87~%~IeCg$ zbDAP~)*MHDMsYtBJ_y^&vH=Y;mM?eIsv9IMXg%|0adxoZ=t`ngLufm1ydjkiZ}o?S zWbPNOwXewWFq!U9o10~76oLQ%h%Qa2OX~pufEZrjAwt39bJBN(xTylSRD}+KY|bmX zCR=iAHu?q?JD7&VQBY?#KVU^2w)K~do`W;^z7TQKwiHK;=3gl>zAlt990!3=y;QkP zsmn0z8Q&sH3%4W@ab9LdPwa_5t<0h{N~eG_7w~8Twhc;wX6D$XnG4gEHLEFHHPv(Viu_6{K@dW>&9U>W)Fk8FiNkU6P2;f;`3Iww&RS^`LSF!6s6sVq{^f z5jU&rlCH(gE8jM9WM9nXN+CZEV;Tux@$T8HtSw=Y?vcF9M1uHY#^<=kRWF);uc4CQB3rgmp*dkjz>Q{iV8+p;A8VQzVd$3 z_*;|17mkOL*$=vIf6$XL5liQPBi=}eur2CVeOjO{t^xpn<+;hUw>L5)Lb2V5TbXuEgi-GZO4`!P0^xK{r)#zEl~QEgR4=meR*%sQf_QCoH)XvVW3x@; zlNpeGrlaK`2CzKesnFSDe%bGqNm`oFS!)qj*q1oEC_SeXRys3OZT1u+(1b0YiAzd| zwI8wUNCJ{lqH2@ocGx=A^EDe>#--11!gejx3z&PM?(u1O!5 zQj5N7-W?EYR2=E%N#nd97;Z^p@zDAv8T#e&uZWResN!%2^?ZyeSAg&m$_Kfjx3=-^$T^&H4JOwtD7=LjkaB&fs6wc@ z2N5;U;|pfeAWFxJ6YteTJt@R^&|;h4(o~*OsOM8+GF6-zOUb5ac%L#Q6!IB9Pq`}W zAc;sK)Ra|lo=Tp<9Xp9hRTL^#xIM{G#A9a-y|@%*NI8-*#4v^8f^bCKml$Nzd#Uh+0!{ zWm1fRsp|YIThb?lc?E^W672OZe4!{;40A}f4x1O|kDefr=Dz2)1c zt|TTa!3Ia(P3J-FV61_tDAd#ac^GJD4MC_8FTrr&FOFe zKbubU1eb)l>=%}1Z}xdl>t$=2TswW1loqc!?x!KLXy#iQD#63D<&wuws2cl-aVnqb z(sb5}%WQ%1y6FRwq<6aZmc^1wX#@w^1T*(tC3Aum*DKMR8|Q-NjkQ5b>HPMqGl(ed z=Tbf%L=s%l^agbp1OOXWYz`blQ7~tCh*n<=cOx@Ftc8kJX4kk2Qk}koTcH$x}pWb5EUu2VMBf}AqxZKUO5j-a|9_CxQmR4 zKPBXaLuTLmUr&ws#hrBft-Cp+WsKIX`oHpj_sJ&G?b+I`RA9vb+ zQeJ$H$rR&~I*P2Y{hz|Hn?@)|u=M)WGIun9&s*i4b)?4_I+E1viwD4c`FS!JA}74%`8e&$&tpc>B`oi%MJ0i zOpwPkR91eYnJ#Uw+kur9%B6!A;mC6?M)5FAb8ahtTY+IL3BOvem&L`-+3 zGeep1i+Ls+L8KD(%~tsy+s5gl#b=YSd6Id!Ij+XRz_2dzeOq~);UEyyWB6{R2@Ct? zB(lX=qBSkhr!`V|WPA2GN7@fSq6`EEn1^FX=dcLFu=)D}&jlRY7P(qSLL-l-F?3W! zpZ~6@`mMi|_jCPc?JQYY2Iaw`!w=6e}QTi*B(BW{QhwZS1p9vo9RUN0#&l{8xxNGw7Zr&dtp zR8(YFr5glrPLWFbigf{w(-Xp|67R=jhd`5x&N#T?Y?-Q3+olBZip4SQ>}w+iS3n%E z4Rr{WH^tdhYcQ#a#9nQ#{iRN}noYGT^=%5R7=Aw|f71v-mdAaW$i}I8@q3^^SRyH_ zjh@0uw_C7}ta>;bKSoAh$%0r6QHi0w<>q~M&l_gfZ`K7{*0OhYCIvjYdaOkJoK#D3 zEDV4pV%ZL*0Rq7OL?|3jx2G@#rPK;~b|!vi%;Xsa$bbe9|7a4f8Wh9DVBbx#Bg^Gi z#IdcG`4pN>DBzwfy!`c|ox`dMn#n&#y02S#k7u&)skU-hMk{=igIOMt=M4`hWtaCX zPEXPfE#%&+qf7KnY4`l*)^3ER24dcMB7SXf`HPFoFwY#cODdsxZEn`*xHDkbrSZLB z@^*`8IAqv0Xn*h&9huE6Ia$>%>s~9(RL>nLT{-DBH}@%;>FQkoz@y3Yg22zg^b)9h zurg?Cm>LRejA!(gc-y797*BXvCJP`YuRr%nnx8jF8cOm3S^NZvZe>fpz~MH8VXEd9 z>MmZSrSg%ch83rs2SJ|a|B}@w{)7~a@RP=;e&zk^;!`F^B9$KVCV%&n>B(RwwDuP6 z^+=F*MMF_mxLGENNhYm2d8KrP6o)f<>P&rb76ha{ z8r$*K1_x%M~vhGM>;$ z+Dk8&<(b;40o?ayztKxUOnqc0XSyDOxrWIJE|+_*z4>(slHu5Pxz@DdGL<*|?xlCB z)kQ6<@W>e?^GWx$r~!H)FBg}S?#T$Ob(4nj#a_0EbY^HuvLYZ8lu%Rd>PxpetG4<_qVZk6FP zLadi(61=o7Z+IvqXz2BNXESCyG`Y>9FsW)cr;~O~M|8ISxGR`RKj5B!VrAJYLeE+R z&D;i}OeEQtB^o+$fvh3J1U3G0* zq>Z~~^rBfo@HqfPF!4Q=v*|jYcg0aP(zrdM&NN1`z6_Jm02>bocpe`YzTxv5JW+6n^NB> zRgbOD%%GT=K&p}=3?wVr16z`BN%N|#Af8~ZbtAWVQTeKrye9fwk%(Pz+{muN&L|8B zgSzZnXLY*&FzpB2>v~B#U~wjp@mYb!+zfb0}B5{NKu?7lNcK&WDd{ zw)7Iy*&NZSX|I=5I06$jvj?To_4%3`=gTh7qhgRv2tu!*8^7QsHA>{hhQ(x&cV*0C zpYFPrz@#Z3m)_t3Ai)(+2dE=FPup;NapF8k#Td(DwB~vq!j2$vX%F*oxgTD7>1!~`h)JWCvYfX zHZ0DLhX;S7CmpcX0b48V?vaIl#ffr-;RP$PFdfeM@=PfoTIsryY*FjY(k4E;HsQF=H`0F3_dGSTEt$JvbI|M>lM>;BjwJYmRWlkvREi?Ak$^G z+7HIRX@ppU&8<(a0LMbYB^_Aa1|5AzTcnE0^%0wa*L%3$20%{BwP!^qLNV}G8psNQ;~mI zT-+TA95Kssiew#iHi%dFYd?c#XNp&UCL_rlW*k!8(qnDBkerku;tqL}HI!;(Lp8H+ zu`n`SdBZR(SClqE)H)V?5se;URF|mywOcn*k_<6gziqmzCFXX~yfYi*aSfT0pY$aT zOGOqtBsRsmd4VZ!cp#LtD2pqLyuQY<34Jg;V%5!e?aT^=004jh3r#<5V~)dgG-`e@ zuD^wagoUlq0)H0%+E?CB8Gr3^93Ec2n7}vN!dxDo=pU9OyLC)6T3ln^rb3ko*Sw;* z!k0@7B$wC7NIM;@L8bw60#jWlRNq1@2dtn|yq;CCGu6Rf9hF;>INqqJKuRket1RxP zO=*`DJfDy$#OXE+q!mOgWK@ULYWW786(ar8)H}R_29UbkFlp!QrmZ5MuYu*Q3x}s9 zGs}vN%21~xiCp4f6hI-z%e_b?k_Ga6=zd#SY-y0%SMfCSg!F|u0j`| zEhWx~X)vj57%qAIB+rf{C!7*nhrGFj$14_(R?Z!XXe*|xuJ;@20RYI%zotdb!s!uS zaa(D;rg3^Q1wrHOm##RfNdioHIVw&IOo@c>olxq$MpS8udyLE=E8CVgJiv(SV2(2l z^lWp75SATlsGF-SC%p6G;%bP^CoM27vi z@+veVkgQS?FQH=wYeVBWD;QSUjx^RO@>p41iN+aQY6(J5CGbjhx(Y!kc{=5`8^Sr- zm=gN*qCO~c2rYJy5d%0%RT!((ElL)uog0*_yfJ9>CGd1zXd9}%kw^tQLWD4z{Y7)l zD@t*Q$<^_|wxSCBw~I1TH}GH*whc?6a_ZQX)WA~NRT;j;vY3GBn2J9e5(d9ow0lNj zhx6o<>E$a{Pb5L`tYRx7ib#=z5W;epIj4UpCfxA4^RN*3YYwPH2kq>T1>O70D-oAmByOrahD4F^qEoGZTTT+X+gb=6C& zDpS%rrK)EBh~3q*X5DsCUY)Pp4e$&a?-m4}=gBCpxxd<{shJ(~njIsJT{BcpATCLH zIGzDO<5G}%B?Y)G;(AARRh$|~Aze_}KX8~Cr*btjv-J~GAt5%^*|Bc5ZdPezR?b?W zKIO)18RfQ!K_Mig&mi5vguC{XI zXM@8#TxUlmMU(P2C3+SU&w@;xMCv)mQ*O@M=Z~zBhDvy3tIevGm2OTavNRDg6%WK* zbSCxq+WdX4^+`ECVd7foJ`R_zJNCzjP#JMhopgbK&}F;l0N|JqXOm2Ni@d%`Qtb%M zR*b%EAOo{ySI(DRLE`f4+C?QkE(pEEVMTKE=E{jcc{Ds*(KJ@y85gP28yw-zBT|Ub zTny50(`?E_tID}WBp=G@_tUytqpQnKO>zCiRQde!s-t+kp?)zNQ5Kg203b^Lf9$G&}*407=k$5+r9x&T^#Tj5LbXZd}}#3*E)--RU-V6>_5y zXE+=V?F>1f0||oguF+^T+Pi8~uFLzX%&N-FN^>7TQlq_FDtIfcpjH1qbyjtB$k^MA_ZmV|xPmGvh za<7YgJPRpgbcf&botEOVH~czily68s@X#IBCcSBi{~x|UM3P|$Qo!f|gRM=eo~27O zxlC_e;iL5w65GbTHOO4W1Z^E{6vXFJ$UUnBRa9n=X8s1XxWkSIHA%`CFQR0`z<%+M!(HGn=Mvtn}BYG6YSSccw<35)lk$BY5U@EO$&a-05Zy4Fn^aYI)4z-?;6; znn2JAsg{*-W4#E!UqZ$y)Z~LzuF@${QV8B33Hrk_K-}>}&y~w=y0OsHGds{zS114g z<>-=E88OCR!T4;!`9ho@B>i7@@q=VpeRa~2sPz?N8G^d#+Qf8kZz}Kn>9hawn`?5* z2)Fpw{EJ(8|HtMQm!sBb%xxrp_miD#=LXo z!#VA8Sd;F|4;!e58fI_%+KOW{_VLibt4`ArU++`tJ1Y4=>)(6kuo79d;;vHS!YcU% zPjGI@HY|qJ)!CB$XwLdrCiEK^KF-gmes}!!&NN|CC7cz zpPOw}QAPkT%krI$7A=NdE9W;$%yt?x*G*dN`X2gcfm&LI2nJTC0NNex3ZLq3pje;j&as2=G?LTemX90M=9(#E03lo<=ZrWK>YOTntBFrHu&e@)) z^^adqr6$UHrJNfzmiwLCAXotaV4@36N87bha=uzTkdOSkwGA&zf8bV_si=>ePP!gi zfxF$v4cF!|MH8y%2QF#uyJU9G&`SY@XQyVHX=7uL5b0byku$U|c0HW150s-plfFb` zeu31cf%Zvn#Ij>ET~jKj`uDB3_GXqsK=$!8K&_by^=X#AtO2f095R+Z7d3l1+l$pa zqIGq(2iFE?=MYK0Y}aq@zg<94001IX_33x@u~#IeJMVm{YPw4XNG-ak^!8v)(K#K` zt!)fclGhEoIb^+4bY|h!tsA3a+p5^MU9oN3c2cpeitXf!lZtJdUyO>K?5wrhIp_b| zxt*7@y>pB)`#bv6k11j@*i)~%>4C?-lmCc%|4pfNn1$;2+SuQuJ{jP(w&C~UMKB%0 zJuFQS9b}Ur@Kv6jH`-I7Bt_CGZeNvXJ9nX4M_uF%7ee=dj>(VTlh^W!s4^Rq6xETc ze~JW{qoiW2#9X0;i2iC>!7;73UeG`Q+efXzUryiR8n47QpAv!PDPtIuxLCwce1>>( zW1BbkOuKe;!-@E_+utLR8byTHI%4y4C4GZx*9U{rW@aCZ6h?4k`Hq2FUCB3MnXQ;P ziAh;ApWWXq6o#>&!I#FvSj|H?l6xK2MB$M&(*ga15zCeLEX>6AMFls3?X)E$?~#ll z;9k#We?k0Es^w-B1{`t*kCsRaQ214qXvGFVt`hcEMwOu#;OeYJB%;B(RbK7YZ2 zR!Y~O4QXZA*nRSZbJVq@^y}{{wT`41#`#~2fR2Tzv$K@xHz4f}DZ-JAH8WYT1*gUr z6MC)TEjQI>>}2Jk^W>MU@Qzjd`(RQwIXNA$?YjCnGTN3;IUdmp%H8q}d`WlaHsWek zvkmwdRtrsQO+|jAxkpC+sRAJ?y)?HiZ>QnNVcI--)x&7#zS5}7P7*~2?X!Hh%bKO* zrqmrYTv_PcZRMBMDnMoAF5bQE^|I+mm(QME+WIiEd9^=WUEl`d5Gp@raK_SGf&e`* zYSesr4d5x*{mxq5Kt(Yqa$T>L(%MN4D&%eT`FUJnt&aK#xiA{y^ThZ0|2s)l4Trp1 z(ezzCiCvF2e$qkIyhaKJ=a)=@pdfCEc+qc7f{hrXVhAaR(v~>YDMF!Dj4?V zG>{HJQxEDsL%>Y#c7+}Ir|CkT1}$!LC&vs8*4eE;T2-kKL0U=q45f1$jYj?hGFIp- z$2Z)la=Jhm#T4zhjbtbQ#`LADG$=1`0`rWx61j`FAd28(%Tdx}Yc2p=zv4tUg zyeHRTed&?U*%H6!3emNq9jT1R@g!z>q(pk|BdR+Xuiy16Gtv@deeHT+s>B`;qfYTS zw0#pfQ%Zo;hi}&AJ~l;(oVM>&0lQG}qR2vK^(%&WvnMOoOJmB@dJ?==?63>D^KZNp zBN*~-;AS%WWKQ=DT%~d4)=%jA4;95~Goqej=13Z*T*erJf@XjZs*!EJf=iT>^uqMV zV@gIFZS_S_^LH0)B+@|pGsK%^EOo7eR8JCm-q(sSr3jTedr*+?I?__+mq#6o)i0L& z84|lxhBgNaj??J8k)?qxmVWXs5aGBT+dI3Ug)>KYa@{-YJ%imnDLbWfY3QSb8*0N( zOH`F{p*+&9VU*rzL$x@GvesIEu~FD4skh0lO-@j8@=e<~{nV?F(+=IRriN9!$#J3+ z?v2q$VIXhOT&K+>uycG_x?5xH#R@h3Ubx`DU$^h zLB4rph1Q@WYP!rGWqu-ivuVNdM$7tgj3(%81MA>Iuy>dSn7a^ z3D6yl)+ZkmJob!J$38kV}bd4L4%V#x8j*{Ua2AA zEf^}Fx?ezf3T)l|e2Tl3U43(V;j$c8 z8q5-GrSn&iDjXDh)9V6WZp}F$g2DNP+uICX^Q(K?`S8(iN4Hr=qHU=4Nd0>*Pj#sp zyK%!8fr-lv?N`yZDl4p-=uwHS{Hx*g8#1Tr-=r|#v3*YR8o8NY)}mnOO6nO?)n>JJ zHX8p6jyPK8(u=^^b&08&qcovn+%@3B*)gzV8td-CE@ zg>k=ocfj3Ccl!Na@n@ec+-Bpaq`@BPv;|z;@jw?5WjZbp2@hFIWJ=~caq3(+;620d zP7}M6UeCujl+u&*J<{Mqwx*VP3>lgh15iJd#1MOrbyh3#7sMKwAm2@}pfe4H&K7!Qxp+30nx) z0~^DQY$Xv(VrI4RD=6o4wK6eNvTP;YQ%at-C!h;YbFjapTz&PV#x>7~P(BYpUneI2 zbiq0r(U8;SBIL?qci7nu!33jKRj}{hzv|VlJ~65)6ul;QJi-MQ zDwIv>th~c$bJn$jsQN79zNwr`1~JV+*Wt4cmhX(eEcq&Ur8=MU2{5msAc93!8P)P6 z5HUYMsgU*UCW4oLly(}gPcBBayv@}&LAWlb%{(40xU$Jv$Q@sa{bYM+ z2m-OU(PYC3f0v1`lKrXj-j%NW&fT9MU!Y9{_Qd@1uKqPE^5TbTli!6|+z)gDMocM{ zntzB23MnY;WhbrKgbqN6SV6QctZXXlO_o|Mh+Yv{HE|VtZ zgqID@c`2;&zE0mrXVtY0w>WrBYKf1@XtI_nmZ}rKc!GZ~L>jN+uINJ9|f=%?T+a+k&e@TbkWn8Sth2K{%J z1~Xr=VC8sfF;=Z!@<)ahAd00st%uBJB94(QraTKMRg`XJCBm6-f+_6Zw(y5*nWVv0 zYXFEY2o|5&E6jLIcG;M_^Z`24*W=lK`jPpHOa3}oYo+M72_?G9m}p78ogmmSfAzph zk)WhdGm)30zbn0o`By=_m>XOwuRZh(=HM5{$*=S~bmRW2Z|!CIA+~;olXtas{^$1Q znW{Qv%$UJXIIQtFs_4gK?s4dzDAA00ih-6?AqI)@DOQdGBQNxq`C>^{~3us)MrJJUy z=gq>u0hkQlnaWxBUDuC?(2_j!88pMVxZEyxJn|S$H;6JRi*!?#L-_*Jx(41o$Ch&zOYZA&P_tws;!@)FcBFMf`(x{my2 zF31`wg9{bZwC~|E8blFnh%r{yD41$%mt9KM0Z}`n%0yazF!Nqh^+j+V_al&Kzfoa? z!7W8yfb}~rvK#TjPH2g^VLUspS}U&;Giv4shkj@{dm@TOM8foTj3|@wodh?lmYh3t zn4q=+Z^F013N^TNb}SB~=8ba;31t$&<4}Vp%_8+`Z8=?#ihku3vL^7V;p%dzM(@0= zBRJo=?X1H~()$?}RwD70H17jLor~o3`eC8-EyO72xNfy8@#Be=PnfD$LU>pX2%Eti3m zvciZ+jp?v2id?!?pNymM-n~R=DyC|OwXXRW--H$FrkB6JFQuG*(FmAlWi^ah^$nEFxdz*QyUL%<>umXoFd9qm zBN-Fp3;tFew)@_^R}C^^Gq<5MuYCwE~P+F$bLZ5|IHcC*H+0BXDU%3j(DNSQNSYD8N<2$DYl&goIuFiGDsqkgO%A_bBI<0l*EQDJM%@`(pG2F^T8AjBpd2OuzHjyRy8rUW4_#j{}wwHb|fotjR5c-L1SjudZv4 z)cF%Q$WkGkj05A+uI-9CeS;-ca<}Pn^_t+wY%rCFqsH=x;#{*E%VL9rOshqVR`klj z49pc4$1Q!s0}}rQW6mN}g;&Cn&(s_2tks66M%9pgz^UYp?$Uq9GV=)-2kKAWi3VKR zuG|(dm|)X2Tv+j>gKHZ&kh1WH0lQLvbdk(aunYVA!lLA*a!5?T!U3ft0m)|ZDXgwr zHYr)sgt%VOmD#i_MiIiG@AQ5b3(MkMGp+_slG)Z|u+X&gpgw&KB@l{%T>}AKPFqdf zemY1W-NvHg@0E2zvHD?cp1nLLw}%^Nu4yF|)dg&0#Z@`JCGr3!g%tD zN1x2|H&hc9nWr3YMM*iuC@o@i$jeV%7ms20krr2qVeQU}FamWlr7#DmcX2I!!>AP& z8zE$WLG<@4b62fsI_)-4E0N-RrRzB;#CB1^IgJCD;vZi50!Hn2)jbkTsRZGBMs6BD z&H&!$NCu)G?t=C6?jE@;LR0vOK3MW!GU|ZLK5)N+QeMI=7jI0DopgKeJKr8E;FeOjS*$vAk<_FGf>D{C9K%42G?H+LtP5;&GDesK*b? zHi}5R1ecuORv=5W^4te;gElFtIcL^~I!@hw6XE}QdbV=;Zlg!k(^ZmX_#bGgkf{(~ z!b%^1-@9PW>RzlJwC#q??~r3VH}V$CXu}ul#s^c;&aO}B?E*gj^8fF1R{=EC0?b+Z z`eDnM{!-ID+g)V$-ZO#QLD1>`U3E}(g)CjmmzJ|0*nWwPj$3PEALfQ>Z{F-xq>{uz{WrHDCxqYw5WT}iar1i06^O8X+DlE8$lE1_~i z2iaMa2d|d1_;zjdIPj>~s!Z=kMcZ!qyG17}xG799n^4czMN9IcYD=3^Is9ySlexO_ z#J~mK$2~qBtySpg?-{H_emHdMgt-xwI;pFxwogJo{5ec)bU7Q~M8GAX{|?XK=t+_7 z{@Cmq2pYE${&Z!R`@K90Jt^{xP8>^V5vTM00~qzhZ9OH&;l*nQFT~-!g1Ry*P&a`4 zBLWZ4C%Szmx2<}*#RU!an@D}YokMsxxUJ-*thd))9dMY`bSL397L4a%39X&oFD^hWEUQ{*KGW)D?2Q<^a}b{}vxYpsr(& zB7l#SWIWpmMl1!t$w-fhO);*nauIEsxb#&{t34oKJYLlJSAc!d09y05M}bym9o=P+ zo!}<=BgC--c9x(Ar@|=#bY<#Rl>WG9nbj3pi!Wa>vcNo_dUyy8x!dT??w9lKo&&?} ze>-lIS!gTz*P^p8A6j-fp8coo_^~YQ@w9c-1g<63($Xom8p*h`tN5jrK{W*>&0e_X z&J4ZJA1kR!lyFI@5Aefl_H)Th>)4mEqYZs8kjiRp>^BcXzSkMM8lb}Aj3>@^~SH%?hHpLaVblqjsXGL^=k zk%MVF)zcKyK3)`Ocz=|K77pMZ)DM@7)bGTK66XxgFsK99)RwrxSX+|Ax8J!lXw&(> zDC>5_)8kx#GuDCC`|d?A6(IW$BipTmf{1%h7-vZKMGZVC0!J%7HR{nI!Nju#vlnw( zvZt|LA|x0?e+6K+>rtiNZhE9#gRuvqFcD=4%yk(R6{h^ z{_b6YcCo=ix8BB%7X3X$ypOR);dZwy!P7AUeZru#tRS<{aiFTkPr~zGnjPv`q&#=~ zCwm!1VPj)*BBYF(4jU%6jS&XWYkX z$-Cc?f8A#$)OrKEDeL$L<8qAxL%1(+v#$GLg&>Qqw5@mZ#C@w|cPs6m4%q!1~qUubHx!KvRsSfIUZfJG|Q= zNJ-%WLn{rxAeCyi5`JxcacOptkhY0_4DK4CU#ow;D!gL9!CzR+G%!zbt`$7GYo>4e z6?{JK^Lg`4%ggJabKX=Kdf30x)h~|nU0ZU(A^9cl+1ia9IN#Oczg1kR6bJ?YGR7}^ znxhL-gH~0$F~T~l@VmHUv>~p*X->Qn9!R33We&pUe}B1y(}Z1myh?!xXD8dI~zrQLy_LV-x%<-U7z;b z@0-4QoQdYnNiFf(+eWQ;Z1kM1?%dKjMbRtKN@}_O+|8e=Ebd!@_E|Q5Q&sTxvdw-P zDYCVrw6EIju;mZS*8%3(*cQPoARFu-^pIAn46cxZC9C7kZ;90XVSu=PUHF-vFpM~- zzt=;A*BgJP+7FeVM&+)jElXhr1Ssi^*1bhNn5TS0cV!r@@6{Q|Kxl-aZ>EXHe$Qu0 zJ$1ER&GfxysSw2Si3jBn&1kBuTG5dw{B@dHbHp~ zE~3HR7CZBiTp$311OD`)-oTMuhfqb`qo#R)oFTC;CIW}}l;7H0Kl7I6luNvz;*2zH`~MZ;UY?>>G~<65Ys#RSjEpeyD|b{H`kN@!BXIl~S#6ME|tV66yW9 zQcaGj6ubWXTce?f!fhDEpEmwc0(a(qP9o5pQOjD;t%J4^LNp=v&*OPDaXLIrN~W>j z@4hL7BHVUB)n}DEC5@;j2B75dxa!~EX0WnZAl0oyS~st;ZhV=wDhvCM4#bI-FUF^7 z)+10tDaP5oh$5`}hYQ$)xTtReY+8MFC`nUdV6lIk~%#MZ7QW=JG8SALBTMgj|&Dycrn zc6UoCZ}DoI2eFN_$l!LD_PZYWk>Bv9Mjr?@zM!=;WLc8ya9jL$F4fwC8@)a)CHWP^ zuF9qpq-Rp+R$lI8E-V z-ugNAdP6?fMEP2F(uj#eqQlv~*?DT{uPn4o#Z1I>THgC2^p*w8S8QMatLUo284^bU z&JUpNdgqi{bh}+jau)0TktutW(CpVm{kx~n&X+|+z*HKF{Y}jpOTSK3fGhXsg>#q4 zdQF2ApTK7#jRwi?WrrO>ni1HyJ%6mFB14N;S~4|o1G)y!#=;CmV?B?;HDV0EIIjN8 zc3Z7?QBNC-cq?Pd4|D zmMX!1Av|@QuXuh}Rcoe5`fJpCL8@VrCv3 zGJ-VI1e;y>#gi&oC}0Na6%3-r;;M*F%h#boPpjsXq_6A$N-iHU_H!&d{Z&BOpu>kCP(dMyw$k6z{ z=gzIcy{6~t$)*KKZ9Oh!8_-}39|=Z@nSQ64^<1zQrg+iMyVbhx?}zlbgow=-tnfBYBTfB>9pvGWaotc3 zO$<^~YhbXnCo5MeZbUfuj8|>XtM-1dwd_#)@;`>jSZC88C3kbLD-qZmF*_OgNvK3x zxCDRa?TFaXtvRn7O4`OBtUV*+;*ouO9l>j253)9-4oqUn&l0vO9S26CbYwNQ^*u08HaBq~#8^pN z;r!TKMn&KW84+E*Z)85LZRP=Xk{{HwcH_WA^f+efpI_!6dkL1{&SkMhA{<=1Mg*D? z(^W@LtwQ+%#3=bxH9U-_hvYS4B!4VZjT^`O>Y?n51uOpB9I^E(df9HZv3_1yt&6FD z%SxE4s>fpfxp^E7jsuo}I}{Gtv#`Z1o4x{9(t`^ue)wT(_U9#g?+k*D8as4!bOvK@ zBTcGMn39OTi)ME`_)AMZYW~;~U1#prBH--ewZ$$aygp*>Fu7sE4!Fb!9|D`Y6W#?) zee2vrqnT$cHzS9!I!3ybB18meZYnVlUU!K5iIHibZet;n`HSbND0Y_MWl;-neKwWn z#RhUAulW3T2H%#pK*c^pn)9zWgI7(Vm*6<@n z-Km)ez?Q2U(poJ$At1ai;hq;SYS?M2NSwS_WZ!#?ZcY|zvUYXvj8WH*m$&v?FN!a->!N-}Mtf%)hk#UZuDP&9kX$9H9j2Wa{wRyut5iPA}-C zwLR=5Vrvi~ZWbbD>pBfG`2qk@?8Z2ik{l^QJnHM)Sd<8ck=j^N2*EW2Lm?`2m5U$# zKb>6gs}?AkXnSvP(P8UxM7yPE(wq)`S0gs7;g1X@b0lkIk*c%TYp38+*P5t6zeC1 z#oxFn{6{NYMM}|)@WP6nB279L6|(&;rVv1MaJE|e%IcFf{`;!$3DDRWcAXGa>4Z65hDeuD%iHyNR0OgyPfR#&<@QM?~3laCj>xpL~}NlD~mZntuJ9!29dJfj?fSaY)r?7o8N z&jnH~mDr^Y{_Q^gwWb_158r9%{wU#aHch{%%%pk>ru;P*E@^o3WK}2E>j0(f7!mh3yd6(y;e9 z)y=|tvw_t)2~DLjpC=Qo4(vx;`$XCFWL+iC0O#sKmqeDY2P4W3Eyh1CC8s8(Sp@U< z+5o(&gzXJTkWtQ4yrorJicRs~1N-=6x`Qbjp6;{gp30e)G)2`xaj)Z8I#s8rSI_;Y znddvpdP-HI?DEL~j-zZ-vEV0KoIgq2pb^RLtcJ|hlyO!Wa1iVvyiZJbp)`}3^c!8! zU1OGpKvNm~?1sT9x7KuikjXds5?c#Lx6R5o@qiUbspj3o-@}KK4%WT_PZy$2cFU#L z)`MlF^QUYWt_l2hONu&|*7B`YhP>LLT0Ae6bjLsHQOn)A;h%Uz(s|aHi}f{=^jTQ= zAI-^%<3CGwT4RKe17TnY6M+IAZ!$Gq8I0~s#qrC^Qk5#tmzEFcOR6m8Iq7-hq#j{T z;@Vn0t^YbuOp<$w#QH3MsT#2um*;!VoW5ncd4Q_mA2#kpemnE>`O7YURCUU)9y4JC zWxtf3_I12uw$rd{CCCPM7@%z0du-YwfPzSgtBdelsxsSGsQC+a-B{ANPX(Gzx^fEk zS$3vHl7yk$O6Y5>*pQa$-1j=dYaY#!LKTo@^%#v~WxPKKIYFUh^*wfKfJY={<6)M8 zO>{?M#DN3LqxolBGME}3!tw}Q_<3c7babaU&Y{F4SKKU`E~txPq0!A1fGpn;q7&a- zix1$Grl8{E4E?IgsiEXs8|;C%I|ztjgKNTRl08 z47F}poV3{PYg*`T*T^j)-|-hvaWp54lJ6&3Z#{Q`8HHFnxTEp1X9ImDFhe~@=JA;q z{BB1e`vA>r=3z{=u-2sUDFwEf;f87`ZDs1mj=^7L0ln~tOWx*Kkv_#J zE$$4oK;3-rRBs=d*_c|i;x0{5b5#Z+*d9AP+CrgQlVqk%Y0Iiv*DdwcB3vwoQR!*8 zUY?$Pq%F>y*htI_ZlRWVJFB3aln=)8<8rK;e97%Z-<3f&J4%m0c}t9CEL04L0YBsq zkicwILfT?yDo)jOk{DYOJ3pWkWVW1AgyokBn_m#E-)7(qsiMu4Li4U3{TLcx3d!Ww zGA^L8uJovWP#WnoOL!-N0$Yesra{9Y#LSYfo1{J}2)ESCjq?8X*HKHFws5F0?3v8? z471|~0;F+hDN%)Q!owv!nGc-}hB9W#ye2r(=k-;$20MKl-G@JgC%HSy?+cudN1n*l zlxt~ZGBVulSKZ(C1|V77>-NE%5eV!)1njK=OX+P&o%(U%8S9C*_rTfk+@hIIa&XK> znQYjn0k4BUBzJlAeu?Py!A^%c*SyDO0-8uKW()Rj+d>SV(Qz99#tF1+E>Gh8I)t4|J--NDZSwgq*gA0do zr{%e$hZrbX&F7))jveVv8Spm~AC@ajr`ebtoarG6+xzW@*X~)}?(X(P3|&4lG&~oC zA*H9fU5oHMAHsR*=AO(>2bh7QUgFTfztCV#IW`HHE+h?E2({p?=I~tQqLs<4i89SX zG^2BluI>NjNw8K$#puk;^eyq(+A4VhY{COf!vXtfI`0SnSML0SFFS|6lF}oP6PeZ) zQ=gK}V_sf~Y*uB9XDb-mj}7vNe6h5$;naCG0*<$s!tIhz1TePmo_k%+LjAKSrw8>( zm7!S!mCc;j!7Trf_h(p6u9cj|R9U z&q!Ool(oioD0nhOsgw2#qa7|85Sqr?%JN3CaQUiT;$md9cKW=*@MWbs|L3`W_=Lth z#(+Hu5`-xcG6aykkrU0XU`O+ft}M$>(P^T>J?ja+v_v7J88aAF?t-9(048ib|KViY zSZ=E<4^RIa{lk29fa4&1D&O;xlj+;Hi~biJnQi|&NK)fC+DlL#z(ND2s$CNQ$V60y zhaMX#{*uV%8vv#!_JiJkRs*UVOFU|`I+bEnV%ML@ z&K0N%C#;bhmpj7FbH-b0H(|3?uSOYLS_)&zkJvo&th%qY?L-rXjO4F>7fx}0%sD#A zC^6PFZ?&v@b7jk0*T~R4G3awqDs_iX{&f_$o1#qT4L|bsFojhyDj{Zb{heiX!U%k3 z6iR+j{zc@6kPI>X?pnHD;IMJFjMD2PzwAL^XtaR0&-V~Xg36fNTUXx7h36BrJ_sgo<+}~NC|w!irIt+iXk;)3y-S}F`HP&@sIP~pi{bzAsR8-xWPs+jeCdw z-3SqhHWi8?6s=2+;8iOHD-zaq9?ZxeG{?z?8izlX z0YzB|cu+ot(CJ0Zj~*ZG6L|+JmKUiDoFk{2PEypCoA&AT z!4$?kT~beV(A?r29ow>@((XS_mRWiId*F2Z8$ztw^~ahoWO7p5Yhs+O&Wv^aZ=(q^ z4+!uNR~&O?)EN+c_BAFsbUZZk#-SBD9hqZ@Ezs@Tm_OUX4LQgA?Q?SCp#@<*SEdpLq}gYtBh}IaiY=rJBw0zZ6bdq5-f;x{a9E*i+A5 zEa|MedH`)K9m382 zh#;|Mgoyk)1Ws_YV^C-v)+z(JU!ijMH@|b>9T_ z1e>TL)w{J441b$2za{_lqLmQr<51ipL#+W_A(%S4Sllkj3N}S?EkEkhTK$u9`(>0n z@n{=c!)!A84jS!XySB3l7QpJDL@IniVAgNCVLfwU;tJz~aPV$oPR7KZ+{sE*outkV zo(KLOU4YrCY9z0qne@->j^#6fMNg@XayN!)hgCYkOKa}Pi67{fwrmpMA6)POexJaT zD7A%gyXlc|xF8F4^k*{cq{>>_gkv0zFt zp_IuP0!3%%`#ESMw%aBgb{)MksMxUP*L$$qheaGe?0j1+Z5MK9S1S{5#Vtb>H2Nx= zbPNd-ndKup-3)_M?YS1mm`>;D5K7gu{YenWpcodD#|pk)28~3b#DP!4Y*Y5$ZyD{D zMV^uhN;55$D+zjU$wPKMdT8RI#?QFqAm}>w{_0UAD{t+_eSzk=c6X71VhtU{?-GnL zlMc^;I`e@$^QBIzBR8}cRM?jpRpSaj{cxo_jmg{PFeWYbQ$OZaCRbDc7}Pt&MI@t5#4DV&Y0Ti^T#BwkgA*SE;^7_%d6ILO2=+ zM)HYeM|Ixrb?umg?^I_MQUQ)=u-ECzKppK!h*7W2JL3uW9&EB4EXv#>zzC zOG)-i?2`H3%Rth$Nsny)logA^5k_==Wxn z30U6tx^Hyv@I?Y*9HSk+rP*!ecP!`Xk)%4iN)i|_kdtvUW)?T;C|#B@(fXo+o`q7! z@BSTDXVH?DSy&{^(VL9qQ6P)lDts1)91bnL9ZO#vgVDd?2|;Wy@uXx8bvS-gBNYeq60fQ^oW6b zFh2`H4dyRMbiD=!>H&d?n%%~sr@Az*{dO^tnepd8fei%Dxs^y_aWUK|BjO9)&KF!fA6^;L}r}XdfB=(twEknCXh$ZRB>Xh~`@3hobpbXnCn^)lGG@O#+TXpC4>ex9^Ou zA+VTebFQ^jZn!!>8w5-P?FeR)j;#7oPo~?afUydTw)X_9=5m@-yfvbehq>5E9rqNk zhyM!`6oTH>gWjW+%2?QB17w&2{@WN;;gMa;8n-id;d^=xb#r@`!-$YwI48j4Ct9ah z{|n_Xr^NNma+z^=D96Zl%v}EmpL66?#Ol<@S?M)IGWgo06V+EZc&<7QV(P@k!$!+< z0{1&Cov)+(n!h?Txrqw|sb)(Ak6i2B4Yp&;6jQd!w?ssyM~7Q~sr!>uH>x+;4zTpx zMZ<2@&K5b`R6iuY`s!tq@6a2p#Zu~DG3EbLW;CYq(&eK-E%2e7Cp@L6j2#I6vC->= zYKOCjxs&x@$q8JF3ec+Gand3&(f(AY|!U7gH6K(S>09Y0k**i4}>v9;Ez@=-i6vMX9{XlpZK z|FZMgg~KOBDQ+E$f9`NPnc#YtCnJvn!^@9nS8$-Qh)Jr#i&%G|@-p+8dsOXG#@w|r zHmQK1&59C;BHAqAXy**5qGPNJyxwae@c$)eZBpl1V*&vM3IgsWW^tu)UW8!Yqw1L2 zz#$eLRzm5n#VV zP$nm8``LNZ(EYMTo$4daDrD^PV;>c4DJ!cx=QPu6+K*qpj6#8`oy%B>H>MjoaD0v! zX#a7Bn&3wQxY6aqSBa`h^NwH}>aV>28rb$39!<>i%5!*zPu}j7QAssx>>|-3@65Iv zlRcZ$GBcyP zzB3Zt6$5&@!XcLG_4?GeM19!!LIf!8S&Cd^FV5}!*6<2YjccD_z)^SSDKq`8ZpMSB zZ#bA9D4gI$V6Dp3X~+3X*3%NlmWo2Hwg`Vhtq;dt>DoiB4DM2ktbU{me&5E;oQOe! ziz>YeFTsP@$qihFMWw(s*kFFz=uAz`3h^Tq!Fwk|t4dm);uOi7u(in&eJ%|u+(?YU zCh;aov#xQU`sJ z%O0PQ6+xS1wEo>M;0>G7+y=(0-}wX|^AEzb(}EBY^3v*R=g?)3BFhf*MG?{{^ryL~xTul%Y0D1*mr zii6VXIH6K}$!(O2R4!~1{?zO+MB_o9)HUXce|~`~3f@p0uByh^Y69i~kwh5=ik}o~ zTXfj4WW}nc7A^5kGshL@qbPrlb^N`u6@T$?VM^s0_p7(na{Cu6@ancc*Yih#=w7b8 zPQ^Q;Xt!W1@&-1h1>FHFos=oH_>rmYOaCT2S9|bw&H;KmUqD&*rfm z%*tL=_VVz|pXYZ<1448jeN7+su(_i!j3Zjv!5EA$57!%XbYOkRhrYWbute*!ngh4tqv0JWOZkX;%umg&uh$x97r-gIa2Qu(4=o^{Sinl9 zXW_`+6tmUsWY77PS7+lx7nmf;F{{B$%|0pa zHz^H*RXUf?x!B}VaURkzR=9$2Kkr!Af04v<20vPXpLE$8s`WJPjzg0zf>!5^z(WX~ zurgK&>cVq-m#guc5ElE0O)?b98CA|84rU%!~Of6 zx%NqKvqzxc%1*Xp&m;JBE-Pea*Famwlf)Zh`w3WT-p%7cj?P;z>Wm`EEJvr);Cy?v zutn0vq}92+r|tTnt!nQxz6uGvbs^%A)InOtJ2-Np6*yY;CtBX_m3h?Xh&vyJN33E@EO(LW2T}|)id|BG$w&ZJ!JBDFo5z)6nsg<|5k5a8NnnUOdM5VIEa-GZY$~*2*&`XIrA}&o zeS~yRJ<-|a3>7p!ihz3YM6*a|?QD4ZB-oa2Dv(V5aVdk{O%d&OoHzRv?0RbqHRJ5O zi=E%h+y4gLdk%346?jMw$YWcNA4PZ_ryqIETn4MoZ~7gMGqkSR#bTwG>2;gf>E+s` zSyWPsSO&1R-vB2c)0Ea+owv>iKwS=b4HAV0@?YCC>&^o;;rvd?jt}Mib>>=_Rk}LC z2xlw#BhkoNG==DO&${+#gx zQD|S-et8azA*giUAn9!*krGJD6Pi|=P`(8$q2r;jyZINCGTJ7j6Qf5X*LvPGLaN$a zX~+OR8!?j}pGah^VdTXq;i#}e51tM=RTsHOxFDmvQWrS4FuGk>?LEeA& zk7Rkzp+Yp5BD6EKnpYEKJ3~2rbZ{WU&;JQw`bLJCct{UI%mnl}HJ|RJADi@bz@~F) z_mUV^eaRZ$meydY3_7f6MlIoVE#J0e_zM zT=7R|1qX2jF;_3;lz+yg!l%3RwXkVYDc8G|p=3Ew2Q&p)OaR)f&Jl=O4HfGv-Ja#1 zmsD)&BiW2qO(z!x`);};llN+5A+P^gUns6~)}9w;Jxdn3Lnh9n-}rh|6j_+H@BNz^ z@u(Ar%2vymvLa;^%>zRD*DmL|p(Gl*Opwjcrb$wa&_+46b~*a=f(&74h=cd65*b`Z zVmRxhDI)dN>D)PJM@w>Z&HnbSG7C7n4w1^e2%e&3WDaP#|5c_7i+HC zCFAiqv|5H80nN0}_ej(bV4An>*&iD#r(_79Vg^o{AKC%ffHB_Rk{ndJUHbrrDTDQJ zV8u07rOkCd(dAE@okUjlS-Gdb6aDm>x-Y`}{Lb7L;lC~a>y@+s+l*_obItkp?7UOO zhunKQ?E@%;0svMvZf}~f1uhpyS|i###a#n%l<~bv68or(LZ?JWV=dgg8ENGkxc8jL ze?1T!hPzDZHZ8Wi!lH(!RBfD5aY_*s49UCgN<+ak!wrXY7Dna>|2}q+BsW3dU>_6f zN^b=cC$iejIakiX`@_NmnB^f;c0Hb}-VFJE*wt|f(JZRG+ZF0#%qaB9C15?dV(sX~ zOCp=Ol?3PVhE*Tl-KSPN%V#RYdtXUEF(SIpfT#y$qQVxX5` ztu9#)arQ6XWleWVP(!!$ldBURhtu49FGbl>Y&CD=Tdya#UdkmGEppc0>Q<&3 zM6eirL02-qowrQ_C&TnY^tF#IgSYrC3_`lw)`$Ij29sBN)=#2}wA%H=Z6b=rCJ=5O zFTIUbkE@_33ZCxUW-X2Ca?jXh#wbPhvpJ0~>9D!Nn=cgjlLp)rfXQ%c3W10gascl7 zLkKoTwp0C!OP+Kl(c81wA1}Hb003C!vDF{>rL(x0uDM^TyI-jkStc|906*Ho2tNxcAK2Z! zZT0~01gwXQ8#k=d$t|jI-1uT1FB!oyNlo@S4_c|1s%v*PZ>~`wCp8Bdf1C_uSY|6N z>=wWzE2@;dYQ239yO6`Z2ux3y$A*n@edAVyT(oC@3@dCFF@5ZK>MG=LQND3wyh|%c z)ej~14q-jyf*&8;V8ZLU9D{6k_lW{(C@ZdZ-YaLY{g%P!_J4X!eTE{`bv={G*zI%NJ)oNAOb-UgEDeK%9;qM#wMfg9GY_an0Dt|8p3Upw}7gy8s=a~9B1MMO@yS#fq za@!Ug6*YOD&CIk?qF6eBX8qy~ND~aU&k^R&=?T^)y3E;%U%1g-UB)zQ$rAXur;oP9 zLYorIszEMEz_&z0kmf=dEYTdB^E)}5p(<*^hFpPbC+MzlyAseBv>?u?=5beV&&oBZ z_|c3r+a!dZ(wNEkv;j7EZmsK*{QYk4hdxhPSBH(ZQKL=YUjB6o6aawos<<>))uuO? zs|Li{g&X6A^9Dq(d0sA=hMUcEV&k-cFiq5Hw!IL8-O=>N&g{t)@@zwRD$bG(D*J&4 zeami>Asqrxgks_xOL#(e>m{rX53o2R(@yx@B>ykbRzpPfIy9LEFL7}2E)99rn@{s+ zcIZCU`lM%DKs45m(O#BEYylKu`wpTt5yilyxrN_NcnfI#t!9N1CZ8G6aQpV&qG?< z3_sgjaK{oWIe&B^zH1}U(=5UDBnP9I; zHLE^*`W*p2dzO0i4&x=@DGYITSf6llHdAP{B)6uUsd+YSQ{i2%IIek@%D_~V9v38M zTP(W^XPINGh+KosoxnEfeI#UXGu4ZZ%s*50Yi)$OY#cvh++Bh2VdFqoqvfF1#o93h z_tC~@qpQ}zB1W|3wJv{-au7+L)}_w+I`2}>2a^ftSlAf;4~PHvPp`7iN`$MctA`IC zmSwqCtNrcY{_P+C@gM(J6SlXvUwrY!N~Hn-u-olNj~)$&!@qT@`y%{(#3=8`%^x<9ZtZ0>;}SO;KX{l>b9NbtFFv=&!padrwfJz%gsXMjiO zv~1krU5)uj^Nydd6^XzZe_+WQ98!XYyliV%?Bbk)ml18RLDh^B$1z07Y6A^L#thd? z{3(Ph26D5U9lj;$50CXq{3EZsrI;^I!QdZlT5A`ONF2gz67QIu8%CNy{? z>U}<5S@fokDiXP_{6T~KF&rVi9YG* zuI6PzB^sE$sC}^p?_VSECYE`!@wUTZ&6*CKI&k@&H3&x(WuD)En z8*6TywGO1|s0}%R(%X>AN%rUK_Lr|EYs+eftbrkBd(0ECFyVVC%Cg*^sb>}%)vi|M z_3iDaOPSkFv1P7Dq?x*7ci#I5%Fp}K?=zyxW47t&H%^#BGu(z1HN_>%gU*5ejq}|b zXGNTzG56aPSd>i;ghY_Iw(CT znZJ{f_ph&AwMlPu=x43&U9HAGB4TQGhO`}m|K&W1pEf<-M7Ag>ZDJ1exgIwXK~Yog zByTMfN>gr+7=uwVxVYKmMCSusdxVn(lQ3(!av8f_Kz%0EJYk*~V0zH43x4>HE%ycl z^i|AxoO$Ff=?ak@V@xb4uZz_W6=9vU9rh~^_b1?Bs+6>1$!MS6fUt%d;8G?zJ>Lsm zGM<3tRT@Yb^T6k#haVq#;M1$@vl8K%e!{%T3lQVg+jkM;kDOZ z(=_d8Kl|CeF#zD+`2Ws*5&ph$Uxc42S69-DwNJ*dsws1`>q_movDzZ=ai*u!J)vdN z=1^}_6=qvIcUwC~vAmB+Ik>AZ!We9a`C5nHFwCT7TQMKtuEy${Dr~xA^PcY;apOVH zHjfHQkXuL5STpTS2<`1$yT~<9 z&A9SFLwXu}4W@%873xYP^0eVUN8G0!HU)x4P1a$f4eYEkztI$1m|vnGEiIhiW~QuY zpbG}Q#nZ6CRdv5or2K6Cn9Sa4A+$h5Y_{k6M8v!DhFe@qfG?}ULtQ*lG-lrLGAArF zfB+1jIBn_UTb$i9UoG34L@#R~RSTAf##)&re%~zYjjJPWyY>rPqtI2XZ$z2>Y~oR3{2n>Xfe6BqX8+UtiP)r%UZ^ z(Hn*q#yy5E=O6^*002o>Z*4EHLTz4@zm(qkT53~9xp}t`gqKki$poJ()N)e;oPEbAL`IXLvU%L7HX86Eb*TJ$a+E_i~W)`u^5rA4<%2RzA zsw1_&6&+aUo7lET*dl19+YqHl*6S5;PEyKFndyOYbUP(GUXUGMPz_OLW@=AO=t^v6 z{hp@t7Rg_K;! z4T^K1)E{m7YR0>HZ#EH~yhwFTahnE7dOZVP&Q|1h{f&_Lw%Z2l+946|u^zBCA#35S z3UT`c^V~9l8sXb0-rZ??jBc8(q4-X_I^9aH^7){KkGlp%(Xmp}!)56J%P}yNaVAbv zC$>3a>^xYLJo0woM8fZf%wW>M8GhUOjEq+c4%e+P{cf4gr{a)|mab=`~s`7QJ3? zHk)<3-2i~YhY#=HzyII;yMOnabDn?x`8|8~{MBFm6#(G7-~H~jYuDa;@4er;+IRkwULh&5toR(BVOG4zbti*q%OM?OmHDw~s8_vT0+ft2W?3p3r$?tS#6|F;sN#8sFd)pxpNkcM~V&(i6eo4ZmFzy@VmmRI;y6gEZHKv$q?dk_2 z09BYq(aCPdBfW)d?(};#eIV0*DaJWfq;}P({FBR8g)|rdJ8sx-anmq5&z74Nd5|OQ zg2jwZ54YbMX)Nh5R)u4E{fjIdpCfS?TK#9|Ht6OIY+;) zNMCQRKa;+06Dwz|qh-qJLXSd*k`5r*`Nh2P+3P!{Wx0!js>8;@h_8oF=j>g>IsiKY zH{IA?XZgu$?ps^i6RpAxcN?aQercuXJ5;uhFtu~;`~^~mTITNap+7i_(M!Tshr!z; zSRXU`dNK#5PYc3-O7Ygi$la*}Nuk zy6#-A>K`_tWg8w0DJ^gFssQyu;n!vJ0ZNd1SJwKMR&+^P86I5j?dE720HAD~@*{Vx z`FCZ)Q}evC)ry+C_uczw=$7ERy=LFp8DI;uX4AZT(O{Ty)enr9A}UrdTW@T1hc2n% zJ67|yu=6r!{ezuWJhk<{PkJ+e&(PLKTg_e6fT`*639~@?=sF#{%#5n=tO1c7#z%Xd zj}n-@r3g26W>(NP0-!NdhZ6}b?66Rid9*Ed@p9AFyi9&{mnxKCr`O=xWuEAvq9E}> zNWW+fvq~j#FyZpaUJAutom}AtDe^jnxa5{5u^M*W=Ir-KQ7bXClH|w{9Igc(7Lc zAqzjhP#KL2C5FT(%6yn8djL!UfH$3(eyclItQerV%u5H)BSva*;fJP0F5UTVxV zcNVyGr<9+-w;1jkO7;@AXWKb@0FTqDwyUujY+R4BxhCqq;_}|^AB(o_=AAYrvOZx= z$JZ5Tj1di_)Y5S@@3yNl0rUD*rg4d6X2`%~bA>Ui>%B2=6Wa|i|N6gkWMx~i^~5!Y>1PAI7ckv|5u+wsKV#ujiC?EcAsuLoYl>V<=@)X;vKQ-&G*kV; zZNW5BalTN&V77WxX>ZqIN})$RmZ$n#B~RiPw9Kt(uNnDakEE=dGyfd&+#z5H0w{z` znCw2bUNYGdm0FY~BP}BVS30#1_cq@*i$oJ6%KD3C`0+GGXGwOl^~*l8v5icS$dDt$ zLU`KRKKGu-`XkR|jxayQX1<)iHC~>-VT!IZaRW9>(zhV3&Z84j=v#L=$4nKiD3)G$ zcHHms+u{I%0RYL3yD6(M%1O zeCb`?zeI}=1dkZ|c4NVj)XmQ2k0_w5bw0ipeT-$?()usW*j==G3^ELbxCgt|s_wS1 z5*t~J@5#<`*OL>Xml~& zyCgR(p&nS}&83g5g|{(wt?7NK=J{fq>IMK*)@NOjLGRLzX?e4^o@vAI6%Qv_-=~Dp zu|mu#8ms2(I~~$;$Ajlk*9^DT$*O-^qYoz56QuO>p!k8q6>0Mi1AEx~xUIOs)Q)UY zg%ifZS*&J)mk7gduN;lWp3!uDh0EV%Q<-+XOQ(ihLuKBa%&DVIX_DoEL0h%YoHJa= zqAp#>Cae=9#(tY7Sc*p-nIA)PEr(i8+74aCeOBDrFPa8ym|8y}b9Zpl0lM6?n;Ys} zFI4QzdLSr>1XdDVQrRbFHbT-F`&B`mGHW7C_0#q*5vB*L8w*}PW6i&7DISptU(Nl> z-pKA<{k@-FgP(~A&z?Q|)vtavo6X)k{P+L<-zO4@H{X2oH|N~Fd-vPl{&p-D0|2b8 zt^MOa{^RKA=x<%^nP;B4e*L=HY`%9$5X7-#$6T)ehc^!2=d*)lS%zW$t;(y3fw`mCX}N$cZSB<$LC@1;oD&AE)jI4@*@R^P90d&TRJ%n|m_W2UF*y4{qK zE%|bgzZq++VH&<<@*N9yknX`qT19w0$Zp}#OdIu>#0UzBOk2phElm{|+w_VJx`GL( z$Z$lg1k^><54(Khy`0*+c1^3Em~|IfyxmhCGm;0frrcX=NV@ief!K#us;r1ZjAO`X zv7^Mj^KYb9%^f`$r$L!yp1-g~Un3D)6eR~6HwaZu!uz=Jqb>Hl%3kAPvWYnneR9~? z)0scxE?!JQ&$fhvJv>z-^B?-jx2^QO6ikPKnqX{gU0rU~h&tNO5sXYZ;q$xsUvxFA zA_gkZ{v3FTgT1o`$PK2RD+$|?47klU3~RhwS_0LQ*{Kp zZXV?b)n)ilN6IShYujI5gZEDtn;UA(hpZ2ogl<=#m`>86eii6zd~>dmEQ;E5`Q+D< zTTZz)SeV`R zP28rs8-q_lYL%#cV5lAiGG|Agi{)KCsm-)Ibk$g;L2Lh%1YhtSm=$dL?beWK|t3MzY4=s*4hcyxU1}XIootm zq2YTUjU(5z++K(@t0AF&#X%)qS16e4EbZ>A1z2XY=v-Wm4qi}PGZYY{#sGVC-9lb4v?r^&$v z&J0k!!>EDcuSm6H2pOixgYnW}?^+Gz_(XT4V6c)!g_MOzW3x_`uf}p4=oz!tKwt&} z`;4J)LZ}T^Teiw^^UhCcs8V%2UvYjxQ=-O<+-+`s?uFo|*WhO&!uk36J$v@>Jb&-- zPyh5!VHp12_rCX=bH>NVzxAze{ox<}Apqb9Kls59e(;0o>FM9P+WlLjzi-^XBK&Wm zSgjvVv_46J0zlPU>njVl;lgRV(hnRx?r~d9G=&E>ps#bqyKHKk%k9C+z49#9Uc^lg z8m!MMX~v@ljH#AKn2XkDTtX{P`cL~hQr%;{1r#eOj&{i=FDL|y$fKmL(R{0ArK=Vz z(t?{Pe3_`8raU#6nc(MeOP)77_W37!*5{4s57x=`O>;ifh`IGgD00M8PW#ijw>sVL zc131%rIR#{m~7U}rlV^Z{Fn2GWnEcV;ndY_{0fIxI`#Z;`m6;dy~6kW7Qe;3ZPM{=Ws|AGt;( z9r|)B@oZ+QgH4~c4&~?$D|QkkH+7j;T(6YOpTARuXInN{6Z^2$UEv-x{Yi*neQSP| z#+Mt-p=SB($?eA~>1l`1HrGP(V%hmX$+;WkPlsDmlmvLncO~@I<0`(4)ZMsa#Mn2f z8X{9~4L6rr+L7pdVk7*JgyK@-4J&jVVW$Yg!Oq%X&sqxLpl8yjNnBTXqAEKhmT;jxZ(3kT?^WjN{{r4SMTu)RIK zW;D#R=`d6u*O!g0%P84tuzt=!Jxb>gIxRZO>mA&!Xfw^Dj_Y>M#b7u_c3aaTA&NeJ z4MvtVY?u~kLTe*H%X#bquM@K2mQy(oLsN#}ZZ=`U6MD?wWgG6xX5Di~8|cEED@RM_ z2)mCqK1>w~{l)UE+y0~O@L2<7P?RyJZ;-K)FbeLaK)Z$kfQYilX78kxOBrg;g+^k4 z?<=2^sO~H}+4OXAwfEHadL5>CIOOxZ+|M-wJ0DPuFRRM4&EkADgNf}|ceY>6Y*k2Z!_J2EIhFQi{ZGoE;mQ2c%-3|C zSP8y(%(-_;%*vY5r`h&9caLYLV;g4}zC3G+r+0n1Vd+5lCA@qDtA40zfe3i2X9u{8 zxwWpL+g3}d>tQypaYY@Xs&(ummYjif*@s%gt-GYwZlMR@&Tj$C8%plPmsbPHWHK6A z>g(MJ`gI7ZC#J&Yj5Ys`fn8|0o~^lG&Q-~KDNsb!T&ro*e4@9R2fBXMt#FQyNFg>{ z>hbc{n)!A*&{zpi9_PtLv>q0rKP=%-ZEU7c?v0@GE0@C~wI5Z?Ua>QXpiJ#(%8)w6 z98M8D1JB~bXw3eo*EFK)U@m!U)c_^il^)s?r#jNfc13gd*Q9-dh@i@bbN&o|CWG4* zh#WBvj+zGO^s*mcv}b;T%B37)I>|hEl?#&<5C8xm07*naRE{yYb(rbv19i|iB{r`S zrUz{3qk~CbXQEIyfQ?v;l}Vzc*rbZDwV4fr)1GS$Wy-8^u%Qcphi#p&LJ&>}+m_-{ zbLL-k!cp_QTywsF)fi&AXyi#9g^g0$51;loZ;E4&^?m7o`t+*&tWu+Y@+W_?va<5` zfB*OA&YkE*@5EFhyIlL^y||FB%X14GV&g1PST}+RB;4iSjpwW8P%p1a^K5#S z-BHBi18CMS-hegUV0lJp#=Oj4V@5XTD*^6$SA7lF&=r&KbhH<9_I9L1h}8pJl7wa@ z+(io^L}QJzQt((=oFQx4iVe98HBK{~0kIy^77?#T;`UvZSZw8rQa&-~%r!Btr!sD) zo?u{mIJu!n@;}6U$9aSd(fl_n7 zSTqeZTUVsU1pzTMQ72=2wimek%kKvG*&XQVR{Kzlqw8exm>Yh_X>LOR0w8E$h9v=Z z_!k=$tcJw7dm8~SObBmvw@NYsRiMcn_yPy}=Saj3?mWq!tkK<~`H&;kMm5f;Ud!V< z|1mr{ZSHi7&2LubAJ5+8Vfd_&;&|W-=Y@I> zZuL^pQKolawGf^EWw^1C_KhVvAIo^hO3N3#woSb9OGx4D$mhBX?#}h~f;Y6-H<1X& z>t(pLBWMV$I&L?R3oS8WQ!QOc%fZdc)`PPB3yN_9pP$~-ka}0v8fMc{U(XCFW1YhQ z=v3pjweXIq_@Q9gU30(Gv>()A0sv4?u6E*X^URvRkckSlYj%3mb%TZ*(dtBBCCE{m zCC5@C7Qbp9xz;Z7?b;vYkXMVWxmtKLB){Wfa+u*MRvI!*IAxC|_bV2;be4W(mUiLr zZ49>iERQ&OuRT1H6C1Pa&ODp3Y0#LX4_7^F6~tPQ4)DB30R?B~0&{8w6>6|4q}wOG z4@Pm1seay(`3c#$!K2J2dhEPuq6`r+#WCrQQ0x`4_A!EcXy(btnrFC(8QSt%G+3mp zSf)*?a-^{#+S```n@jLk!VVIJ(w(AZJ#FEXacgzWV7!`dNuk5QM+}>%YEu@uJu3{hPn}o1vj0 z0Kme+!hiZt|LLbc{V4#T)oOkByWhQd@ge}=z<~pQ`ImqBul=^(7vb+4_eJYJ2PUl(cciF2{kr$2}f0b;A&>>e_5_IzehXd|?k-h{>}UKTnt+G1xvwDnoQy zrjs>)dm&n%b+%i1(tp+$NVuazf&;7QcA;oh7F48#sbe_Mi~`%VP?9JugiO1gZJLZ5A)WL*1 z^y`g)_fnv+q@&qNxpFCqUg7Xs5D&)NTmI&B)Ba>q?-eboP<>C<+Jz1J?aUn`MSMp7yyuN^E36-TB|kGD806mdaRtD zb#lC^+954gTo09;<7D%uJAa;%b)NEH>iF^*+BeT{xp7BKv^;JO4QyTP+&s@R&INNk zGxkLZ!_mfBynGaH+%%9+cGU-Zw+b4JF7=Gwq%CdxFjvsTrmor7>iUOGc*%shJ9N?4 zyr$>@(D9mVJw%F7_gbQFdDYNrtqcq-_jTXf2q+Y8}g>cae=3(CawTv*bz4@_6 ze%p^+GuijE&0Tn>iw$|D6TSdfW!z|;b@qVTo**F=}uUbmKQek8c>o{qAUemZYmU2bXEy)hxmjiseoP(5bjED$wdj$3(yCp-uv zXjZJxw$ck+rc=(2qnk$I25N{AmS^;`&x!OhJA$*e+0nWgX=Pc|b=~2<-8T`GZ03wa zikz>VfYA*V8lohEkXQ))Bn1k!!Bx6(iDIS=fj#V+iCEWSK@Vrxs}r7$lLh_Oyd!IB z+avrwhJMJ*3tbx<*X+hO`nxX>kO{+w7~3FY71IgxuT!8J&=yx^wXmaI%2CU1Botw@ z1H!b(^jF=7ODM)x-&e)$8ceFxkjrvtpjGv3yhBUP4fQoj7;#J5x+(WY(0PM`AqYYM zG-9*`*k;vi+o;sTtRc)X22hV^$M&%AIoe1aqbvIJW%#i?Mx{u8wDsXIR@}kH33SMj zr+1a-ZyQ6a%m89oF_YJHttz0SV&I!Iymz*am1S!; zGB@hAg&h3=LI42U>$54Fb)lB01mP>`?Js7NC91V;Z-(^+k?zR*9^>mP9qd&T-_j9! zA@J-GxO0J0G+iGy_U^{~6RF#gmE*J~u6I7V9(}ZK3P|fm&DbnjJ%$kR4*tRDTEoi= ztKGv(J!2^{z~(ispupxTZ@ySjF2RuQ6`_cdFaTY4JSW>J;7>57=mGxP7c)+umG_59kYFPyaSKT6SJ8l&E zhD%*e!CW&>WrF--aQ9i(-d@fUUeu*WXK! z<!k{gR` z6zdiy;SUH3ft4hORPnacsX+Uz`)W(QZPrA{(9Jl%h?^d+Z7h4eq_ud|QambS?z-m- zDPh1t4bv&nP?2;LGPO7T$a!DucHZ5;-Z4;U+`yWWryQFsAxlovYCQhnxP2lX{`8u? zFT(r$&fFK_r}Mol=_c;7Z?A6_rcYCqoB`Tp=!|-I+X)*0Ahj`*v{LhY)}U4=p$)fi z6DTs}dd^^anl4+ZjA+kg1N>B1V*}F3MT_^8KWudM2X>hZchvEYWQt z@3A*z)hID@cIXN!oFOCKLcy;ufdJ+X?jEeSBZ*5w?bMvBAR=mab=*ilPSvIETBC}< zKkD!N$V@h5an#}(GT9v1C$HUUBv;I#Uc8}7>6I*hAxYn45N8y{`fE2Z0A-MUYAzg57fDf5Uxh)&{!j^s5W(ssVQ4E9VH*exX*K-Y(?Qry$uPA8f0fTXKS zY;CTxU6Irma@$`?CGA>e-o;w+ZBlLJL(g#p?I?U`ZEj*Jvg6u+%y;;j-p-4qPR%yy znS7v}?AkczDJ`b_d+svb&7o%?DT`Hpg_qyc71;wF?k?CPJKJerC=&2nABo!b zAuzSDKDBKombskIU>T$XK=!O=_+S$|(3Y&Kl67pKF?_sXKpGI!OGm~`qvlj5Y{}TO zKOxzLIznGCPM$aP@tA4I7$3qQL+f(8dIF_lChA~3-`BlX1ER1I>n!0Gq99WW7p`yB zOy#RxsZIF2S!*Jw6@~VhqOZfK9hEDV()&#E=LU$ayI-ieUeu*1y(3a-0icLMs(Rsz zLG~ht5gWaam6=vMH*d-Z_Y_PlfzEWts)J)PP3yY;Z?>WSzc2Si`1{6v5&kCma`pWL z2Z2vgl*U47Wqa{DQN3Z+MuDfxGj6GH#_*t|Da%}Lmfficx&25!BF~_53O7G)Fh8Ru z4Q|t!QJ(EK4cMcP0?7hDW+HI#ky^?VM3v&~TU#doW0)xmL|-Y0yTj3DOjD z8LgjTI#6AYw-*UpRiy3vT*H0qchLN?6;mq9RHD_m6Md9HyZnV6rc(QH%=dmMkN`># zWga%#nCzxAI{51pDALyC#f7>yzfE3KP&te_`>Hc8CDU*oF4^|f+RH-an2exxm@$~2 zjNq}}!fj{zgF3Xk(EfascS>mevQzx2&t8Uf7=o-QJ|u~DZ)mw$Yge^?p0Eif6MSb# zJTl5I>N-+E2J_$xJk&jJz)^JLVB=lg;N%_8nscy0;0@re3eA5vIDE+wClu+m+VYdR zDU;Z^U>hz{P8)gxF>Gt9u6n+lA`acD>x-<<2$y=$z$8nckELjMPC20S-%Fi*UjkD(Mq&CvCW%oOMT-jk>LtU);60uL~4$?7JjKF z&Db!nmn(Eg^E$Ija=fURA3;{<##^9wC80yma&PQ9p`t^(0RRSW*-|)SDZVE_b~gCs zhU@bRY6SqW$pxP&Y`dLs=Q44&Fk?0@xmGA*$z7iuE`?>HS}{*;b_b?xo}T|9}>j~D>dx(E9P@Ec%}^7-8!|)^Hh0xfarBo0p0<9oGq7qiVWa<7L$&)Nyw7LFeG&d9+nK_TvsN?9sq43<#f=ko zF(i|5*Lc`IfWw#$^u?`PYc#sS+s|jPE^s-e(t@n5h@!W!|PU4kwfuqqjKd(zR(f(NE0?ZUs-;kJlosYylCl3QC%c{ zlcMH<+Ei>$m(9;#&#J3hM_a@C$@LMJ-DT}Q3tO#qET- zRkbubKyqvl)TFP$*=+!azrgzlBh4_kXilGnR7&npNvXX(pM ze3>IHXyX!Ic@J$~g4LmJ`JtX<%OJLwd&cfCOx3%OD{AekrdhYD`iCsOK%*uznwP2kTJfQJ(sGPTse*dC9K4 z?FVOVj$yX7AMv@^NI*;D!trT}xI{nHz;-AoMN#{D9FN%P9zm1tByX=0YF!ov8GjJ> zZzbE3Xy3z&!>rt9+OyVcSBN`#)J4L~n0aK#*hg)i_aoER{5!g?E@PgP%mcHO$4>-C z=#Hq8lhNOy zOh)unw*u@`q?v9b_S<&%)$S1=aM{u_CbfP1CW@?SNH^U!VhWE!P{Cu9wEvU6_X?8a zIuA8ZdRtjp-gLRHHr2kT$9s5yz&HRTL6M@7uB7|8p-}9LVqf^MPYT`DYL^>#_fjiq z#Y<5HNPxg#U}gqmdTh^3d+*D8UzOhN11ONXA#s_-_Ida&c9w7icCS^mnPqR0R+)I`n2mngA)E32y#=rH`ytn~ zgCkI6l68);4k-IewLmSPENwubn$z#(=oJqd>bIn!%1x8)uX`?)aHiY(z>v0DFr$)# zZvN%5Zr8W>Q-@OBv%ZOmhl47#&sF}$&)nun3kC>)Mp=8W&~EXbomw;0rQ%(h0Aj@Y z_=ND5PXsNTu9@d5@QYQHO_FLtx_T7eE#e0d^pGnr!dRJ?r>}XC{}McwrafmmnXeb; zkJXlznVvOf)Fkr`>L#!%GCC~x{LX?JU2333)f}E9-nqY^H5TRq)#omo8 zyw=%`J+%{muIh|;H-6%#REi+UbEJX9CL=}bBr-bf6t!W}9$ju>5A^&>~=r(}D+?Y+?S zedV)SpxyoTM4RHak^{{=Vwv~7ddGR4Q6gj20l(mEa&!5f##(gh78!jarJ@q}-L!f> zUryr6k3!1NJRY|$Kcg`T=9IfxWt%_Sqw-gomve;3!b=!F5qF+tT6Qjy*b+-ioorIB z#VumQGu9E^xw1LjR8Mq83@0V?d-4xuusdgV?%uzS;^xzsZTr|5jYCGK1F(|yEIrL^oNEd?QC;mq@bH;AT zFcD+iUm@);0+^O}uSb!2zWla{Fir253+jlCIl*KUvZ7ij#LB4!($CR zr|s|i8iU76_^y*)8yYIG1kpF~S$NiW7Ck)-R{I%N``FAeD50-PYlE<0c+%GR)C#!iHI)p~!p<^Dx3jk>8;-k#MHl~nz^*FTWlOIF6 zLV7Mywl6Vt51muogy)iztuZrqV9N$g(WK}CMmFLKyFG4W3Woga>?gt z>44Gb1qXB=RX(9({ZhHdT1SGw6*)H5lw&*7QserPuPnpbU~`Hio+TT`P^(>oq5pfV z{{uVKw!naC91RV4@t;ote!2=2Z|X{REiX-{nMVxb>_xEA<|EPqP4BBog;I$fn>wQbi!hvLY0F$nKI1eX~(#n|MMXXoK{@ zHx7$G9_Z916s*#z%+}Hbh(7kb98u5>GQb||;q+%Lt-P&?J zRa2}BrPQ}Fsen;gc6aP}k}^8w=!GsxJ4+ur+xw^i=R7Aa2QNMZT0yA{GyMY{{AJi0 z*uUv7ucdpAtkAvnsn>v-#cS`PwRbH=2_hE;O77lFIv0qoC#IfQlu7gnCCh>Y#rdGF zUz6dAAN5C+j7!|?z=x5(-!a&ufnsTRW2=8>x5Q98lao9BafKitOGh_<;0JTI`X_?@ zc+>lOvf+0O9tHqFmgP;B*`?h`Egw?a_gqxg^N_W)zWVq;E7YNPDxR&a{*jMV=OTkZ za{E8l*w>SJOKkpiM0wk9@4(0lqA|`Kag`;Pa<_&rT&17iplKSOMUY_7{#2j)6bi9v zrT(O_x(kT`!amA`fbQSRilHukMp7NRo_D7{p+4FrK?|}CQjsb9R2+8_n|~Qnu2RBE z1Lkhq4&S6k1l%^xj!vS0>fV#U*<@AqKLhiMgi`CWVI9YoHx{aX!s2ZK z#`cDuuCQIXxXzV(juq`93e61-*2kw*mID9?sZ}OA3IKq$GFHC~<$i?0lIFfpwY@qk zCKg)h<6Qg03kUw;fCk_T5q`lxf`4x!{J(B(v|tth09h7aET^(d_nFQtZ%qMTpYIS| zlN^zR3anKjzbs_iO8Ka|*#~VPdV#RNK-yo1_i>jNaOSE3X)fMeXEiOw^xOguN52CQf2twU$Z_^yshLSdD8f|~V#3)l6R#yo}10OgvkgQI1OHk$G z4L)0B>V5T5H}W)x^o2?pyw(0MeSs^{o_$~pG4=`886(+tdgHTIpr~M|>+^N6k|ZAj z)QTd`L}S)#RNCH)W&S{2UQ?Ub6$@&j9Lc}bkMs_eAA2$%)SxpJ?OcD?-NjnBJ?anr zjv4}B0Gv2+!tPe;#SBgwb!bGudDYIrk0#}xOm#Lj0N2r}lJ&X-^{r4ChU`4wdI$Fo zmBfUv>%di+vgTxD^N+$4_nZlvE`F!J{zBmit#_yS$qMCk;8#&%&w|M|_H^F+8}kil zT?pEtaso{r?49^@3ed2u`Q62R0wiVaOug`}OzKFhuDvO5r&aUHm=>lL~1^*sEoni4D*e;U@`43L{7`%Jrih#v0&eSGO7 z1>C;L99Upt0A9fn$jLnA6TQKKr^{+*sheHt=12q`&eKd5 zmhf^7;=LAq)OU86jyjw79EBgUjoTt1XPD8O{P7e-4l#p6-FAqosO_r&Ahhkpp6%eF zrkihwyS>3Y>q4p)s>rc!8m2ps!uxa7C$v$MD{s@C`L^@L zmiM)C#qT%6Oh$%Gfa#K3zY{g@;AUq#cBbILnzX@-)&LH<=2SNztc55eI1E@t>at|RZU=3%PEq%0;S<7H zL)b&&3Pb0>(C9cC8rfSS^B?RJJA00DxYg%3PubA}j_htvOL%jn?Qc4XK%EYp&ybZr|utT)5P@Vwg$;CSmThs~bED zwf(vGWi^!3z7iCoFf7h`q`&fUdpLjqpb_kt-R(rl9jVc(X^9T*SDX~GIi$XQta}&J z@ER7cn6GuYVh zGh5DPn`?&jjWRRZ3VGv!mH+@C07*naRGlQmMQ>@ERxJT_O~=3S2@_qG({9WWm)Mv2 z-iiIYy{T!5a_sazGmi%Gz6q>(6|236bRHAN;Q{%?V5$KDurYYx0l|oY<3ib#Tc+jQ z=+JlS(tR7@37dMj^9Um29dH!s{~cOE2e)?;o7;4=xjj0vnHVg4+yDSV+9S69%&*=B z0BZVPYkFU+mpY$zglF5LYi`Gt&5pH;do(lWEn@V2SLe`yS`2~ohJ7X#XCHf~u1R_l zYF_Fx-^_}W+0;iq^Q{1U&+a-Zw2q9=K4->f>yW4-Ms7td^5cs``kab#1~U$DJ8`t&Dnj)OLWI8e4Zr<<{%^?Aq6 zqrhXx+@~!au^mHiyL*{)Gs?;MeBgwg}Vt()Smd5DWtVY=Q&| zy9-ACBaa#Y?1+7&*L%Q7?=Z2^eW|+K&2EZ?5j8b|?6LA3N{DwHqQ9qe*uk832~sqjyc!GrmB%*2vu>OmXC0#~FYK>5 zW1}#F001D}!VB$c;bsn-tx|hII5c3^2dZ~u{%FnpLK)V@<_CsSY@)P9PkPy>$2)~U z=0mijroeCV;)vZa*PM+XdTnzo0s#nxp(&fw(Wo{Z?n1pA?^0pWjzgum{@!unLx%!2 zP=D3B*nrPuF``6v4|Fb%Q0=@m&cLINvJ7EqyLRud1MVMrCTqCud}r_V!rVl2>jBrl z#|*;6rk%P6%w`ukD1`pQoZww)(`|!IklO>WFf{P&r@H{ls{ACgv}0OsS^P#e_2ojU z%+?EhyT@9WxWTgbIHaXL`HyUxuA{ccp^G0m4$cZm0;MNxLnk1|q4bm3=Enqr?8Kkm zjXl-m0%-f5mHq*vKf$p>vG$R{tjf0P+d~I82B!A$kWe ze7Xw|0HAL#_0|Z-etNi-Z(-PsM=610QYJ+!h;%J}i4A(%BaALh%Sn6gg zTBldX6W+<1;Aj<$sg80`)D*P4?pvHDW(ueiL8uYScev-7pjP2aZ#hbD0!`c`{5SY# zp5R_L?wzD#J(YP9UDl;_f;;2aPYb$7`X z86j(GyEL2E@8;-br{NjE&Efi8i;UDfuVlMj6 zAj~eQ#^oEwk*zlWv?<4(1<8W)4*lULUhMn+gDKi`rk#4DFn^-Cx=IIDZ6gL=<;jl# zTsP=L9oHN4a(t-JUUM+E08OJ@>?DNQN@T4vtlo=S`t6dCS%*?MKhdVj*Sf9NJyL zYVTr=D+m(xS0_hW9)G2{+dHy8Fu5$j1`-#mmO+(d`@NcS9YW0@Vh@WOoZix07wgJ| zE%rk1ek!rG9ZqMHF5Aw*!~3zQfgp(9wwC|TC^An8OKsOnEzhf6$EikYhmR&O&G4?J zxUE!wvp|@}Jr8I*Z?dX)w3hITu9j^f@2{@L$8M3mGwo!*j{IH;{?dMW4_AK_QZIX4 zyskc@5yRw3zPRJi?rhPO8}xHILT2G*81(mgpNsHEO$gl*iu09?ETs0+o_?}NkiCVp zI4U70Bn3hA9oO;=YC40`8cdI|iAioE3YpaAe-295QMJ5}xo&Z%@8J;=cTU&_Myw{% zxvh0)0GtRg=f-l;_;y`n$aOm-(*d+@@>-)uNat*YyL}sF=#kx&AR^2-UsF2$eC!}8 zZ1R^GI$@%a;7r-eYBK--fM@ zjJAg-G>QTMe6|V{5jU{(;HMrKL)xf?=4~>pgn(=$SKT{<}2a z`9g%BH~x)@@V)u{`%N1F0M|5Uc5kb(eA}VaDEJ^2?F}69klt2mLksk*2>Io1jyFnE z@^S!LMIeIUUm}^8piRxKI0B_~K$wkpk^oTaod0%gn6$+Mc@0vm9w9}7H4F8ViVufW zLYB%tr;IXa2h2LGY0S7oM-x&pXl@`qkSlz6baiDwNOpz0%kF{>f&Rv%op{=5IHH-o zG)4TyQ16E%tl;=K>ln8=yf|6ko_7vR0RVsnh`QF?nXV#BX=aXtU2zB+ZOtG$-0t~u zi4L~f(}uJtScE|IaE@1o6{NRt+gX{*LT{+j>8MQQnA(*9{xhD`U;qIqN-+m)&U!VQ z2AH!=^$R3rqJHqnVd>5Oc1y&FD)f8_dRc&+>lE-AkIyQ1WzWfOtH;-(Ah=~$?=AD< zp9T-CbCJnz_Uo0kr^<7AoSWlD1=4VlR{@+c$-V}3X4C$qNLcH=(m~7N{zDDwV4>$?Tgon+g!Nc zR=>fQ-(i~fYRHHb|E-Seg-;8C!iLGtEci=ev|jM4-TNM*;CyJa;Qrc3Z#&RoH;eYI z?V+(-?BGMCW|M^9t5WB8_Pdb!HzDc9*~W)CZ1WoPOp?YZcpgQf z0sd^C>qIA$t9cwNLT*bag-AzCf-vr2t^`Hu>S%ZD#s7+nJ7t)=Wj}tG9#s%(%r@Lx-tsUxwS5yM`+5AC;nHybS`EhVt!Su$uvpck z)OJ+Jblt*qV15t1Yd5+u=AxYEDaS<^^Wk!q*#0xWdKb|uDzXi`usBt*ah(8>_zunWE;r zSY$8WEjYJ8i$Lylkyb>pUarKSYDT(|K&jVJV71x38%a>^TEc}&?Ls|GlfBN<&mTQ= z_E#r?|5k(_e)!?{zW2S4KKjTsO#p!1Zr62P5Ci}KMNwb-+Sh*n_kVwKa`K-w5&eJg zg$O@y{A(BCe!eWL`e(!WRI5=klaMn;6o={0_F(I_jcPuu@UHR&%eGs@Aph7`Sqf3Cq+NP0N#tTqrxJmcU$g@MXs+> znTCvI3C7!qlXZM4Qjy2Cl)H4N2+non=Xyn3m8yT@$KG^O9RxrCxB+y`6EpzWZdJ)9 zIoQQ)8skLnO-VlNkoD&)1h_06nyiH!0dlUI)+?AbhgxtLyN|#U{EfhrDoVlxvUs`f18n+g@P% z#y7h4m3p$MS}#_zzmd%h3x#!W11Af1tDa*I$=;Zwc9U;y;|7|d2Cnse?LLBMl+pkl zo22`WZq7}0cY=k*f`4MS_vtl*r9&>P`W{w)AJ#j3>%@pW7*FRbp1{W7f%TrTT(Vksv$zWJ1`=n)^d#0|8(}{2UOSQqR?ZNHc4$CZf`OL8s0>eO-&Nl8c z$-i_ek0oZJ>ATc+y^`PF_6{9{0q~~Ew&lH^YN1zZJaRI7t`!!kL>rTXjj%+gYtFUJ zzUW>1$gOV0GL_$LFkeoUuukL05&dl+Q^d*VyW#{j6;^q+{C*Q(y3U;1q<9=&fPu~H zcxKRjnm}A>xxOOgR@+%O$qmyzxEaXSFn38lqv{^jD7tdDY}eP(P7~o{r2imyXpnF_ z>o@Gl@7vVPI&8aZo4mswtXSwMH#&(zc4<~=Ubjq^=U*ABObqQPgskmELpcMYB^K9} zXnSAhy3_8*Tl^E&Y@sko@Gq&I5!c|CP_=5WUgpd1;?jPFJSp}5wr(Dva~hpfEYqOO zjvu-omTnp-vSN=lW4ut_<4T@G6$b?1hap$v&?&|J^A@v0YK4i8L0Sc?U%~6|0b$?p zT&&wJ%xVW08d(6}6_K(>Ghe8MU#!H99$%7dH%H=|ovpR%e9>yYRB2tRC4;bcXY7?? z_@rryFVe}AJjqdO7|L*Vp?)3EZ3opFz`s=TsJb5yaNFWFT0FY&QVPWCky?a0Y z@sDR`XTSaJZ-4K5-(wi&pF2VQ{d^(9&l~^RMfj(8vkfW$o2Dz1%oXSF!G(F=ngaf~ zZ!&D_Zzk8VQ16CVS`l)BT08+~db%?>)FAB7lD3x^VF=%@dYei}oa=3G(wd&3gVQ~c zT5vL60+0at!~$!sLnwkPeK@2tidf&8~yiB|8#4QY6vk*#ke`UEd zx(WAeh&>!!9$~5jmhSI=3IL#6=9bW!&#&Ym@>IR}jcod8E4%4xSaiv4CTABz3gL4SW=S?GEnP7Sp|SWSs7MrrjA%-HqfP73pAV=#^yTga!n>@c~?T6SJyr z@N&E!?n{>HIKDf6aw9fg>e|GLsVTC++>vbyEp^$A`+L-8u=B*?PH3(RI{%!zCWar~ zo2+zn4BZ^;+Zq^X^7dwGy@&7EEAQGX@2ga-gdC9*|MAmafB*pa;Y_p+1uBK1Ze^ag zt$Vf^Y%kE79IMAvqEfRjZ2Isgku$eUP#25eX|iA5&iF*(Cn5bEAGJlZPj%X3dT5Xw zx7V%-;Qmc!YLV)J(G?s~eF#b8#^<|VALG(7f`d>ou9MxIq zxSnr%URB_e@J7YiW+4+`de;X%4v8P(kg^*;QQ$$dwae!0<5jOy1CM%piX#(ZF#PG_ zmrs8^NN<_Df6jtgL|oPF&$aC5?-qMEF+w%(YFL&r%xCMqmy7*`*H?;piau;p*jvrt z&mi5W>fKAVf8xFGTox<6oBu1xb3mo%^g2F0ib%#cH9GpMi1@ z9LAXG3PG;Hf#*;Nl}&9!D9ly1+EDu#oQrEqn7WVK&gjaB-+qzK>yB(SC@e(V>kdUM zQo-p!FdID>$*P3HxaG24+e9!KRR&Q@WmTnZXWOg|5|AWrJhW-oNxueRlj15#q|lKA z2O)1_XBIAhykkpe*h;LG@K`6E(5SyrrYhwhjwXKQcWgptoU+A)_GEMzN3qYok+i*S z19+)5ohD`!RP52HQK%H^Y_#1kmFx%ejYY_u(}2~4D3m+Xiw*Vf-w(HEy2fNlJ0BK< zDlE)+wI6z!G!7sD7yynr{S1Qd2@R!YB}CGta163CqWtt|dmc8CDmqpMmn3L-okTSx zf2#eCpZC^@leQ{JiZTw?ENJn64G-OP4daITjmG**g;|f%n0Aa7=pc(d#L!t7g*Df! z`{avrZDynE$3c6TDNOpjZf*bo&`PcpJ>k{H{+^^wwJP7pW}dF6cO5m!R`==qHP7iH zWOG7EXYC24!!0`ek>lxm-qCeA7r;H^Oybb)<_RU=o4(iNLi@2Zd$BX+!nTXq#Tu6p zah-==jAY%zHBG_D&B4jF_<@~_06$8K6=zMKAy4)^t3D^@JM+he@#N9S1nRJU~) zjrYSt_R4M5oStSAb5y^MZj!J>f$@>ZIi8AFw9ZN=x7gf6FmjCT;X$y_WU!)kLKOQ| zv&pp{IBw74$qK}~3C98Mz!=@{Z9idl{QUC!)^*F0 zP;+t+dU0%*a#z~Pux}Sa3DbefMyQ*iu=+wcHA7!Rp(+Io#CD2xeO0NVT&SO`U$vJn zGpz@8bX4m7jzl~|6(A<7!kUTbq6b~p^)J1o>JVqVPq;E ze62jUYZQ+(rAxKs0SQUIh`)rQnOL7SL9gjs-AWsxDuIEq>J z0*X9fg--}~6JZZZYb==sLx~9_(EIo*r!MSM$s}J2x8pwjm`&;p>Xx%u{PA%7?Vx)R zXiunD8XF3pomc4mKQ8tB^^>@WI!wcW*@0Aa7ZXRo{m0NnCi z%;*z%|BIjgyX^Ij?ct)Y)*kB=_ZViuUB>7q?#|d~J%&PB)BZRWq3%%rd(PfHG530l z`bJ(D$!D$vkazsx0p~a(v?gWyID69Gn6b1Qcj@qBW>i7;NVv+-CkI?-T+C1|wYX=e zSGzgc)JK^fs%DDhh*i{%i)untyIl7HdvliEFCz{+Vw>P5dRtaMZ#WBo!__`gA#4^8 zO*_u6!uALinj}3Dbw{aQfuS~Odp0T_8r|dlxmq^tPdofp2f(5g?4~)Su^P(Vx8DL* zin4SA8FqxegR{pV%djkB`Dtsu#a z+4yj+;QpmXxb4kVC+e&E0LZrnW>Y!&eo6p_9YsEAV5IKsActdLRqQPtf~D184&F_k{Zbky!Hyvz4MUY*}c>HJK(0i^i8AiU`+&W)c9O$I( z*#}Zg93?h6^1f-bbmy1y%=tONv(|N}20TRXjk~z8YXm@uWr4NST9UN3+Co(9d@Y|o zUrLtQO5NTHSX*uTWEOJU=%%~!fYA&Yb54gYe24@$P>DmCQD*RrMog@HFxXtz5ppkf zcCYvBektp7ma+O3wEciVPxZFOdiR<%fHwOlH~J>_kzi-PscDSq*zD5x8tM#TqG5~( zcjj>1r@7ASj#sq(>R}NKZtrld_HKWCkwfYSPg)Q}NW1p(d$#;rC}OtU7hB$o5<3O} zXr?y9j<92X*O|?ZwTgL?n)ft;?V&?Rj8}UJ6KZi!G7`4u78R)kS5 z;zfcr!J!wm!))9uuDm@9JS_qfJ&i5V*+hxN#Rz$-M9QBctYhT^t1Le_PsxRVJTO!=Ip)+$}6 zW7Wu53z`qwH+&xL@KXkge)@l|?<_j|MzGd2T7MsF-8ATlnss#F^Uc{7Qc)fv*oF%9 zV{PVqaVUm)t8xE^o~neM8Wigr7G)=OX-YIX9#F9kpsV zHNU9tUvtPIlNsiQqy7U7LhF{Xl$zhCp`@6f1i6H{NsDtBGez*vv({5|31O4fu&^EK zE(e856ZbuKd1w8DaVSXE0IRk=$}R%(sFlD?gwhoqM~fs1BaRk;@7tuCxNRTz91%7- zJO%Xy5^UdOa+^xMo1;@(j-p!#gq0(-G|&UcKrZ)QU-%~x?;{j)Sk|N~IKuJ_f`VT( z!Zne6t=71g1rHl!Hi!iJjLJasv1~h>g@(E=PHbK^jAj!iRnQl9KR4DY1aemqkQpOIzsv+hj)3!h#`{ORR~@od#iCW~d>cNV z#jq0A9v43zrQ2=#EZXtdsxpkFSnbhYh5SGDjI|;B_4fAp(&9*a?;+Q>Pxk|2-%j1J zKtt!AEph&qjoAPIAOJ~3K~xuKD$JG<7ELliZjZZYTSIdV94_3f)cVw0<0Mzwm&b3QE(VCmQ zPUGzWxZ!jUN$nGsyI+X-%@QJAduZck=&3eZVBj=C9O-qP3fc~IOm#N1u!rk)O&q2J zek@qd8$fhS3F?HTDy00xc6-LQQN(xxrp9ffkxk#TTB5>F8$z_L<*$>z6xb8?`i?tL3it)j3 z685Jd2xFS}?Ul>6@)gaNXnHPoZ7*Y0p4w{?3Jzf1rEd0E*WKNfZ0KOx@2whHB&$X1 zkpp$G=;wA4Bi+QPfnwd%DjOXI06>cTbb0gGQ3JK*l?tS8NFGdaq3thXSk-AaG`wS= zcbV2S?bsrHhdWyid>`ud`bGS#YSOt6^T_6=qu`W$A?dIaJMQjk!Cd-s(DinI^dSyA zadMR9M;PAB?S57Q4c1I!WwmQ1bMV6|nG8UIsF)j-mK588s{3pOGR4+4L#?zB%A`j< z^vTIi#gn{3X=KKDgA<2Y6Rg-9KMim*3J;{!=X~#ymGwz zp;IwyXt)N>HK7xEj3^P^gm`@tuhqaf2?p&|6~fXsb>^@A&NuxNEtEdr+`d>@8gFht z;^MnZzlCRb@(utM5j)uMeREC>u667klkG=VCcIp)XB38U3xKulg$ze-w_8qG`f4t7 zshE01WDARw!WKU!lqTAOo1lfz8 z*^iyAI(m$)AF${O*1ko-Q?breY+rC_`gY&=X5YjP85PPvtf>aSFR>5m#(e_DeX3#;8+MeW8d zD(V<+i*C7~PYCLiAZw()=zMgKo-3es*hDAz@p0Q&Of5P}KjF)7n})PPgr@DM=P<8} z@Fo;=l+&U1v@UHBwo`mDdbB$gPPJ-o`<^GL$_UgkJxbN1mC}LYwEJ$yTDJieq6TT_ zYoz_T#_m?cE!eB?bJY)3D%x^i%!|WL;t-ut@U{+M)1hpJ;TxXrN-i*#^853hHKIvH z>yfD%wBogGClVQ&Wcz+`OQV}y;+<`*eg$h>GsxbCaWL)w?b$AummXu-iU?^3JH#vH z#IWV9$AYD>ZKXVuLON^GPC!;K)N;=?S{>h1dh}w852L~&R{H>{z6)@N?mVYD&zWTW zvs$B{@~H?lOW$ZbUTLS22Kh8>ef*WL{OTO?cSM*@r?KL)z+uLBk%gY2%Osm^_te)y!g5F`buiDI)APtX7{Yp(Iz*|W zU*1Kb9Ad_BgQ5(@M4+mZ*JP^;(+@f67Qw6&{=>qK6WIm5u71bR!BmRLe^>x(o9>cb z@ADwAI5?|iTLjku+22boxU-fll$8(@U7H_BalFf^+xSs4m>OqI{`G< zXS5Q{hZ-}U0f~;sBXn+BYPkgyIz7UviNh!q%zZ)%W=4O5m51#*wCZTR<74jIU=sio zf`=JCN--5hELWwdNQ6W?2G?Tdl@r|$Jd$3;LpAGM3p!aq@f;=$sW&FDl0ct^rGUMn zT5!s4JpOUe@ng?e9b?YbH!juICYsxiZM}Q+fJS7U)HDDUojX~!U7C}lYb~Z_@dNnw zm=o{wj)>_UCN`E=#MM@MtJ$lcOONF#f<_dh%1MP@du+ei8(sIt~9afPIh!);!xCaBFrBaP4mhAlOzL`mChjJ3u3{p=$5j|gltZUs)nm8t|xcMCk32?Aacw$ zJkE|e_wL5v?i>Owo`uN*l0Q&OEyb1nu+!+ zG6r`omt66x`8|93VPvieuXCmZhyfHFv&X*$BQ(>Tu~#m$rOP@UZFw(rxpPRv!(Uvt2<%n6K{7ZZ4c+;gB4JOvQnrPJye5MJ?!>iqCGUO6C?njncC!|2?!WSdj@M< zL916xDy}$R*}`6a(s5*kM>w%60PTQ)zfww!8s5Ae=}h+TAhnIk;<~)!k<|;;!t>3V zh*G$shc|AN)fvKYHkhtT5_uv@sl<=o@n9ENF*rqgX&aGKnrzqh(boVss>|uoBHsrpyNmGkvh)4(%QLLTAFHY zJ+Z}h=mDK5IjEZeR77N~>Hp@O99!#fEyF%QZ1zFz@xe0?Oj!Wr6>%ZEm^2|)QNEJT zyjo0~M7C&eyP+M0j?}z|EiLCP-)1$DLbQB`;L|Q8(N>E;PF^zDqeu?_1f;>yuS?!iITed+5A@F(E&JdBT+VRSD}3dBOwLq@<8tq}1jh*r zAOHZcz7(osj!br_RghtL#;s}GBfIJ!uEu$lZF2KjS8b_(>;@5Dkn(3b@NcHOXUo<5 zJa{``Ty;4kvT#~wN6naB&RYk;A@8VtZNglUB5IJah4hEm<(<*%Vr+oPxQ}3=4p}Y1IPq2Uk zcaPJdaCM16H*{$gXO9Q8qeB~9Uj?c;ZAouXRxzk$xwV>CEu?+rd+xhUc+F6=r0usH_%hbGYT_Zqac-$Iv5b#p#V0tv+=a9QUF_vb zVnXvZqk&?C+d*r~sk^&S$)&0ns`=*|O@WEz4u7NJ>_>z}tnndI`Wb|?n)96IJZDma z;BRYoU{`tKF#c0#(_avUfIUOLb>c4T}6{7U|g2ur0>Hk$6CoNP8*BoZM>@}DD>{d#;M!p|H3!XoU7Qb&+J8|KTk+gY2ESzP+` z`VWu;rn_(8Sst?+mboic7K>|XSQr7>VQZTc7c3}9y3cXg3v7wD<(k39W~j3ilFD7w zJ@0VOM-Mm!f)iOvmAvvE4rNg@f*BNLs3roc4u@`H9Tk4yRBqwS2H`&}?mD0ysMis9 zBo1fNOzz`6Sl@CNdC46X54q4I?k@0WQXj{A-iie76EKeveVQ^AO7Pgvum9@1%dX%M zR%zF34{~6pLhgDEXFnn*8V_}LwCX&Y7s@KMYHFn>L>kl(BljIe(VpThx@)A3HyC-8 z)4`gf{jQI`!@?E}A(l04b3_QHs!5fq6zLKn$&N#{nDxOi;RBzj)$nlDdbtIiDxz49 zko&|N2eE=^I|T`TdsPQ;nlm21<#+tZH`>6MbIqOerTMA$?yN1k{r|G}UO|%F_nl{Y zpIMdVeN|U=ceS0K9&ca<7=sxY0wgGkq-bsx`^1YlMJP^s(8DQ0dXeHn5ei9nvAf*6 z(=8=Y6a|qW0S+)T7>u_))82PiS9N(`m09WCJ%9u$vsmdw?cxF7x6Jre)c@u8{Y2*f zo4-FbY7h+`zY2mKgFD$^-k8^tt36t9_+esul1GMp<1j+?3L8=|vD)9?>i1Y(`(mZ| zxmpp#idA>t2kyvls24j0nk7&BKBX!)#N2Y9x)FPR-snLfG|7z2*4t-wAziqQ80uc) z^a2#r4xUH*x6tlSkp4{)nvT{+#`-KLin~J-o0$Vk1H^(7O2;y}9fiK%F>a#>76!1G zyvhQw>3O-Mj{CxAGP&IF_HMAz+VydJ2M_0yaT7r>bsyRI&tdxsrj-QW#lHVl$$hF@ z*mft!$bsrx*yW4mF`=eF&?CQLus`LWOJ{oAd^IdB#M2)TiTOeCc?th|!#q_i-E})Z z2wPXZo`fbpV=xoQEMH$DfroPxexEwj#o7$C0|MjezzcEr5!rUuKrwv*oR4{@@ z28vH9sWXZ*tLO%ZW^Pl|MZO2kp(8wLv$;U|0O9ZCK z$cSBm#k;1m27(g_^z2kAmCX0r9&VeWY}5x10I${xXw@9M^C-F0f!8@(0f-Fkd0i9I zd}@a7-gmX$<=U53fFHzuMdV&ax*@8lVSNLD0bbvZ0oMc4Vl_CvMWKC{36->1Cvmt9 zu6gk7u?Zpj(-COx?M3g%4B(iE_yFx*M!Hu_z-I=(u!&rJEO{!*V-#5)K-R$lcCj%! zV+Jb>AkJpDkk&?PaZ}#)>e{QV`q^Gb_e|_hzSi{)8@qqUVq0kUvIAnK=jGO5n8|+b z7Y*TK5bBP()ty`JZ0A8XVBm*E{Z;wKsB){%AFf4TY6Q<2sOy)X8vP%o&p`NT(|>0W zzPnJkFM9z1;M*Ogvb?PAec&^E05wGo$3nAi)YUGmwfvqnsgje+Q%-3_U2@r*C^3q; z&N1K%@YWz8AQ53JI#`a$4H5OtyS$4-2Lq;$>HwrJ2b3HJm0>4^nmA?Y24Ho39?Qb} z4swrCZV=2C9y}uL@JJ3y@oCrS#{o*3wAwFh_xdhF z|CMs_)y6)6mFis22kxj$y6u|*j56Q2!4W{D7jnsGo1Qo#+_Lxoinf<%@IX?S&C~!^9IOSR`2){xkwa1ol)9ElEU5fa&whXc zP#8ob!h#E-bkEBse~ED7nccnA%1T6(^U1`{NG6|*_evX{Anj_s>uSA=YSkusRLy)t za-aI>`HvA~=H61E)1MG(B7)3$HItj;)X;b*?K0>-`?SD!mPaQ)z++2l?S(${wYqV< zP`u@Xei*ht;Q1jUc~DydrY1SUWZ^dp;V0?a{Zx=H-yKQ4LNOLjDF&hstKW z9Y5RwSN-(Xa8?+b>NRrA&qknujwx?^$3twQy=xYp(D+N6$fbKtv<0oA$ofa`KQGot zrmavv8LlO{Ex5U|cWW1E`&Iq5cJ+l`NB2ywcn??;FT&CS+PRE&FWWX`20m|kUbe_A z@Q=bT001-!Yc;07Dirb#5!A86g8Hg@b40n{<7exU3!74y$^Jau@~;Bnr%IoJ@YAM$ zYY;x#E=xb3fCiM7^M#(UsPBE?(ZUX$w!K3`&w5C&;aEFzV{K5$OND8;HfC-z+7d!e zg2tG~`xUxQa>Z`6zaEuVB1%g@{PSMlQv6`h4Fd+a&^rr5z8FGd$o_^w{kFE?#}F0`F|`Rj(3?sfWGL;lRN0m-m01j=z-% zJwib*PE0VaSg##Rj(@y=tiyD6xmI6%2fZ!r!KK`qS_pQK$1QD)Zw&Z>MGX@>lRP#O7zZJ;wY?z4GHd<)Z9(*E z>YJ6)tF^pClp3zS7u=QU;RY7M37Ky{q&3|@*biJMZ^xcrG&(qhP0+)q4D9gQjq%<( z=s0`HQ+vs0_WM1~-9S5+5#cri9F9~|V3D{E4< zr3zzgGysPs*=N?Q8Bsl;nJT6&cpu&;7ppLX!qfzlon|I8dXaCu#ns=o0DBRS-Q`Zs zqXCb@9CW8LRtXgETIx3FjHmE(Q-yeH6j`B3GK>%#$-XB-tE zvo!y@+zI&7N15JjSMw)q`+c1ns>8>u#5dqhfGMenXn~I5wszvqHNU)84NY!fhUf<2 zvYl+l4tBxi0J9SE>qnk5iJ#`t289(iJ_-wW(C%fl`+*LIjL@4K$i>G4uC6{n&`kw2 zXGP*-V`Red_Y;v_xK@h0Hk1>}gcH#f1g4@S#UfSj-qV5(^yUP_~|5t@F&L+APY&gJ5aI+@#cH zj5&yMXF2Oxs)4%-_1Iu5CangQP7e({;k~Pg*|6ru`w*iGesvE4Yp9h*0faJD9YLBT z3PP?L4BunaTe!Q3dXC6jZZr=j{aGe`u&@Oe-zhWuyY6~GibS--9%VRWQr<@8?=p!W zME!G!9U!O)hM%C_EP?_6@X-h~ShaylrQN$bz10IgLpPBC0!j%xh}VDCN&2iA$BI*L{J6U)Il3?^2%VXm){ZP zh$?-dQhKG4SBXl;)%7{M19qb89fQ@Jr}LQ7O&xQ87{2tOYjVkG<0g23pL)iCPL`I2 z_U~FCvf&=99(cXY`O*FdNasDIf0u(!ri96K#UwOs#TzUfd|?Mm4qAZPGYx)40B;PC zWfG=B0FW3g;Wl9fKX39E86%L{$qlWncvWLBo!S{r7vnJ#hK-${#L#uF`7UgVg8${3 zIcAUkDgZ(N0Jz#Bb$>D36DP!41IM3wC6HR+wdhzUO<8b{ds>cIcUjjR@8qUhd%1^x zwXRH+%GZL>4@2N>w|iU>kJ+AKDH^k@j&}1l1GwL??;u~@!S3kM2(z*J#S1_Elst(SAr>O;?M3Chuq zZbL~f{1u#g0R|DKdlS$7rQdj}(Ib8DD-v@NX?uyBh#Lq98XjXk=6v9l)=SZYr6AWd zn@GtS>cpmcz*3Oi866vpPMSFJQTPS;>G$t9!P0jLbI~HRitFMU{L;OKEx=1Kx~&4% z;Q@8AK00i&!f?7Cqt?OdR()~9+)pX`EA8_0y}=+bv%-x6Q!gUoL$vcA(tY2-`~q|o z8Tz_SWIk&Dk7kX2>;{#cxvE=Q6RRbgi0H&|QMfd?I%F(#y~k_e3$5S_z4HD)NR2ka zp?j^JmN5Wr>$uVwrpW*F<*$CS=lmRmJ3Bky{N^{GJbCiUE3bUv3tu>K;zTC%)0LT~ zxw^V~_wL=l{_DTKd-v{_zVxMUfBW12-AT58>Qdq@46QDNnH(5m#f< zx?kya@z7(Be=9K?mKn4Ux%93_-$TF-Zl+)WqBKP%iJpsdbYvff?~&pyI@m zUR1ou5$}Nm`7P6pmh#urd0g45%SE7Yz<5@R2Q zUjP6=WJ}#x6r9ZxGB?2LQP4Le=SS5o*>$q%KGbpqxqsaT^gcv@)NB}^p6-H>H5(02z2=I_ODx$3Ymg9A`DZw1?TdvN0qHU#OHWwek{G?yx<- zlM`JtT|NzT7J|wqX*d$$y&it~8XVd{H8;XeP?_gd`@qW8tgx+P%wF=DeEd|G<&2&0 zaL@uWc*;AcQ~hkJAfOPsou1lCP3<7@UO})d%ychH`;%7I(e% z+N4k`5!8aOkCIEgnw)5-5WwlPbEO#kFqFQI`*U*b^@j7+mO0$0T@Hai3WE1s{6Seb zY6m8OtXEhtjC;43=mIsWAq5g_;P|ny6B`3E zAOJ~3K~w=SxNYe*ihd?gOC0V_geqbs%R47tG=H|G4FG_!H}7?o(9U~^aNDA1y3Xtt|MkZMP|)vzXkG`b;{x+i zeIx@1y6JEwO3u|Dm7V66RUVbpm)oUh1hpSNT$+4Ur2U9+*V_Lp#+tYBxZ$~I@Rw{n z@sGkUD|B*dU=G$g57wl1)yCr*aa`=YEPoK!ms|d4_RvXr{3{kh{jC0{snNwj@lh+^ zF(u5lPso)q;Az}?Xai9X@#eq(#;<>}3;n%UqmJYJ@P|MA(?9*w8#it^j)S78$Kx?g zv(xD~j)P&?=Rg1X-~7$rJa+8ZFUbS{S^5lwpEmt+LAYP3|33xRQ!7<#OLIWwK5va` zRMvYS7MP}Ba$u>8`%iNO*j0*0pyH6Rj%nK{bAsf~bNUIQ4*K?M5oswt*y6Q8iwMp6 zf}7saq~V1JFt2so`Yr|tsFj96o6$9iB6=+6NX`z8-=~yYL`a748D)dR%iwV05a1un zFWQYOdt9}|He*6MU>ykn)81O0RMhW|4!slN*I*#(*wemvmf=VU0RW)0x9U!0aTzqK zJ1y~k34Nj_5OgD^6K_zBD z+GC&o13$G!Iv@a$Fmix#a|l))2znPBQ3$Wb5zzLS@zyc%F=|3Bbf)E8RKSTG1`VLb z0rlE2jZ5eeyhjrQ9fh`SaP9w$C$ICPl%>AeTs_}i4J)mCuCX!|fst*Ny5|6j&R^Qb z&OhnUIV*zz$|zZy^l@>|Sbu+qijQt9{f$m;PqoIy?wghJ*>=81mqoVgu?v0g5s`~x zgLS^YMCd>l4}1`R?G`h%p*4IMKde$0asKfBlSJu(MElq1bYu2Sfk2Sn6}0;vBCWaP zqZws7Q;{qf-N{VN6HGODN^aVkq!{jnK5$(^wm8Hcw$zxkh!PpWnME_-@Cx|wc5XPA zLuF}qbaZz(U5SJp&^FipI)-n%T9<8@6nroDeJ@wrh&wq3IDog@;Z}A7jq1dpxlPk+ zo)$)I_@vZWHw8dypPS#0;}3%A_YJJ+h+pauzgq1_TJ0Z&ogW90r>yIU)IS2nhB|B* z%*oc=4JN%pCQW!3hx#OWBI7v~WT&c{uvl5zK};L4vs9RMLd}xxQrM%KKCBoWrhlKm zH;?VKP~HvGQ{2=PnGWo|9k%YV-P;08Jtoq3sM#INlOz)dP$FjLY~hxrcNq4CqM7Fw&Jyy6XsP$uWosUnsIMSZc$Zov=bT{I8UN{Av-Ro$1D^8r9fK0 z{b~3G03frAbg!Yk_u>9S({)T_FD?UT=LWiD-UiT$W7{VM_l0^UY}3McrWD23js30q z{I1iO5tU1w($Rs{jvg(Kzuah-+*||cypIYuEix-u)9A>*v$3B~wEjg9_O#Ao>B=?; zwHz#^ktc=PrNQN(oo@xt)I;an{?isj{9?WBIQI(oR~)lvNwi~~koL3I<0vq1IT=Aa z=P0KpyXv^FH2c4P>62aPpWY+f-`~G+j1WFD1ks#?)$L=&>(U4b6rH1dvg`(%{Tp6w)v~4nqK~ zN&?4-H0Q|B8V%kj^_yfA0h|eCoh2LKXl7==J*Bpd-i>XpT&KFp-iY5h8n7qA?T#i( ze>s+V*Nx|KJWaCWjBAAAjQ#bG!Y_aWpnXHwy5EO3OT-fk))EjmqV7e--9g}dgBfWV zMPu+lcK`vVQT9XBnSc^gCGYO9uk^um<0OR zh>W^*j)In^w6_k6tAK;GklB`VNd?oJIBda{L(-KfzqM>kF0AbKP8nt!qr1w<{grNs0C#?fX8ph#OFYO^)oP3kPm-y# zf-ti`7cV~Od4}?dQ~CI536YJRKX<`Pu(BVpUPyHl=~7Qbu-w?;&Dd1I^2;qpmwK9S zLBb!2#)=#91f+Vx+(D>m!*kJcpAWXI*!+`;M$ZAk-AsCCIK8Vhm}Hje-R0Vs+13>e zV5R7reeWfW9t8jZavbvUe5hdr+qJPlbCqQ_JXMO=3k#W%Zqh`1U3NY{#NG2{u0xC{ z)xXvy-`K0Niu`uec_)CcQOrrPdk7gBHv_Kz-8Q)LAvLi@1weQU1x zISm{HA?6t4c>`mPp+*PU`cBY!N{I`S`*h!Xsn;6ffl;!oL$-sNqSt(sv~S{8Hy1lt z^*HTb$JO8_+P;7eJc)UWqZ3WUBvaELw`YIzdca*qdhf&1vdKNuV=vt699V}z!?|z5 zb=-DN_q^wu!$HQ^OofUec&>1}3^wy%=R{Y&*x8>^(S1JKIr$$}6 z-R{mxx7q__pJ5+WcgCEj0eiu8ruxcxR5>=)?Ixk3#_}~_oDM=S|NGP@o6=`tna}hu z*1r^lxpG}ItdB33a-CXD%XQZ8;jL{Jm{QqPa5m|mL_wsXiyKm9wO7D^>S3T5F_uwF z0Ko%X@QdtVim2$3N+B#SB?dX%0*X{{E)Z?`4}_Z*Xp%vtN?SV^2%|rwrZTK=Qg{`cIB;4(;)Q$a;NFJ2+9w7>y>TyaEMN==D}^=!|7CXQ zs)wn9zzEGHWbr_9908$^)-Ua?df3dMzT8kBmWX*6a1t<;mA8UMr{_J_prZBuB4}-C z5Gp_{&Yn(mtQn)}Ydq=NXGQHyRQ0q7>9!yIp$Dtr4hVuA0337&ArPqa`$V6}$S7wp z95i=8|C`xviWDR%)EPOM5?{f zTz#>#1_0IrZlX!JDe@@}KXOo3_IzOlIJPqI=Xcm}p?|5kX7@aK7OuyH%up|`64kD2eJ91=_M|>gE!7>fNZ|`!}hX9KoWh*Ug}A6#2>>?#?>a?!jCH^-Oa!Q^r0>L{bq9iV1~ZM=VBev-5Ba-W-enZ% zAs~vfr!9HPoBblL?6d9nT&?$Td8dsZQ4_yvIH&O{L{)Xbwn)1l03IilYXI!5yTY9) z)9(s=gP&=+F$bIrxti05<-||VfB5M13|QSmdRNfy`+&4-d(JnQm!6oXR>YzMJW}Ac z+X9~LhR(K9E_Yy`Qfrg(^}*(Ld$|IN&v(R2-C|a!OPOcu!)J9!HFp1kgBIbzg2|mU z`IovvgdRHnar^%w2+PvmYHwjfF?0tXQ}E{oTj%AUV7A0RLjWY8xMR zHnzKU5z=FtaYWzBI*)m4&9skp^b5>jYP#1B+k2`nSu=;r5S6DH1%gI1{oi^e^vNFe zPlHfV6p|$W@%?hS9F0c*`40F?(Ptq1wCP_8!auoN>JVXClA!#`wy=4N>NQDt77WLO z2cm4cSJ)7J-fgYDAy++Ce#R;IKgo*HSQA7eJU}ew&K88z^c`naNUwI;=ww>g@ z5e-3mW2`u2S)t+Q008J1+PYZVY7}}PalTo8qgEc*cB)(p!mA``wEZUy)TaASIkAE| z$hvp-y};SWC|*}PqfGiB5;)&1jqX1Tw72rEOeK3^KXSw}Hqq`?sPzsB&{5@?WQUJe z+eOx0m_D)Yn`lU^)Upk@A`v$fYDKlm0hkYK)u6oV@GqGBO8|8$S!%`RpJv-)*W=nv z5A9~sJ-18RdlVz{T>Cw`|3G06Ho$}0=>PQ5`G1&hQg`Qq9X;8rg|xwAo~pXHSV&5B z)A2z>BKJC;+>#Hy7d>>xwgP?On{Di+{C*8}eh{@T`xps=pOclWmYjr0O1!yAwr`V% zN*G8YD-aa+Fvmx{C&Xg26Y{UiwOzRp#JLn6Qd_8_hofEnsAjlKbIY}U-}Q6{S44

@fI%VEj&Bsf$U!^^n`zc$`*}j;qXlY$Z8yu7(q|U_BL^2rw z8Oq0)JrHX0>%Huab$+VD4n+41d6=$<#S#Q{7q^~?OJ6Cq64|JVZ!@IT*0!C@`C?r7 zVdAlZ)-u`@&_t4^M9mlrwe|rrngAihQgrs^n#pzl!tl>^{{m-jVD5$HW+az$3>fp_ z{77dHLOxE_%|ttxg*smQbc#37v`|Kaa_?q2cDMX~2GNb7Js7m7PVbCqM|D-0S97;S zks+_D>MqwGN0Kw_pOw_im=08rsgYGqR;;*%xa3RjK*J}7_Cp0d)sUc&8j_Kw{#_+@5g zwM?D_wPr_(L3C$-Vtw~o-}MVp=fl+}^!-FzNhK?=p}y2PEowpt5pJB0!sZ0y zOQ6o%{DlIK5bDs{r~39&rDy)pt@8D}e7xO318`uNa^ zXRLXmge%!qa_D#7W%AvU9Ingc>SCjn@hUGpZ_!DX-Q-$TV%KKq!K~hx^&2z)Tvuyi z9}(|4bxt0a$a?l?!t8;c-Jdtn&I#fRRKG#>8#VutfuAs$C@q%uaY-U`{BH>RL|O;x zS9^87@OIua=+ZCFyz*4L|N9@DBKm@mm1G|MfrnrzfhL_fBq1^FpWBPD;$vR=aEA+5tF_O~A9B z?CrFN{dPAgqaYQ%f=R3`J4qT@Yq!qCD;X{|^3rO~xZbJY2Jil^&+zVXC7?1fc?BrEj(}U}krPj7Q#Lp!w1b8mmWx&Dz>(d86eMdwyfhX2vSlnGe7~ z)cbP1$EGfwwTjlfYirgFrb1Q5i7LaFH-02F! zyA$@wzIYwOON8$wo+2^S`54P#jW;gv;9rKjXLd9&t-fyeP0LN6_If?EdgAM{twGy( ztr#OzoBB+*h*WE5ysIaBKr^5cPIZkh{<>!qzc}@ZQ>&Sl#-L8#tLz@tHK`hzzVhLd zL9UoNChjxpo}{&p$A2hu!< zDrI^0N$2p};H#gtXfJMG)JZ&}#j-7FB|EJc)$pCHd0wmWx+a#Lc9LZ$xdDWnyr0IAz!>~|#;Mxr z?Ch@%r-IF?O;2NfUV(&&@7VG?q1fxPUfk&Zx}}~`hGrR>4?g<5zP}&#o;aDcq~NS$ zm{Hq4cf)TNzAZ8^fXBp-Oe>H_+h8fr#d~is@G=q#%QjYvqPK{;y$C! z$#R9XgFgZA%PPvZ&N4_8n4F>J4X#h+>JwAm0RY~<(skqOn}00qBZWQit4z07*Kc~` zkz1a7>oc!7a~7Y3>;WiQ`p2bzIImsQ|3|IZgQcw(TrY%BLPRDDH14A|&{o+SXYWh! z=#1gdetcke;xuj6`5mXHuJ(nmox9+{WW!e9;&zYYK{$+qjui&d_;uc)M>Uyb<)@@M z^+oAidp8L!|7Wnn1+i&A72q9bI<`gw=Fge4^Pda28&>)cA zh!{c97yx9!PVVj%c)V(Y)_6zNj?z)d-$O@%_h0-kl4wIhy)}>DpNll-Zzdwi}Wfc5MI% zxT&zsJ&9Uk-la}9vzw*SDqcCvt$}xIm@j?&%Exz>u}R4;rM}QOKvZjMO;SWPG{=BQ zxB>8{&_{&9((OF7TqqR)-zP>wg3a35Y$by03wwEEJv~`js<$>!eZY6dCFvc{CCZ)RtTg5sg%B)2RlfFUCnT>=YY*HNfhK!)}c%h7^XcTYQ?^7c2X^H0A(>ED9l>AWE+o(O3Vq}WKQ}==T2}7rI!)ZWbQm<3no3-Ad z>dMCtp}9=rsp+WQ6D?>_bNVIu^3QcO&$Zo&esqI6sW3}qW*Bh@c8PsZM!v#QR|K;q zDj)Rf&Qu$1`>a|YHgqgn4>ZWvsY|7tLUJi!q`Y^e^GrA=(mE3ML4Gp{cb;)2X7%M$ zb^DObQee)T()=eQtg)#eFA%@iL5rt{^z#Gtq64lpe8=%U z7O}=RH8r4M4T^c4NyP7~y-<8#v{H7wfiCEpaK^fB>2LgKm|&izF+Z zgYQ8rfJ)lU9XR{v1DE>cxmTV$`#lL9-Dzn>OnbtxRot={cYK_D?N2b+xW#^>w>%Sbf7br`Nq-GnR--c6RYG?GNUx znA3t((qs0Bh8>VN)Y2H%9EeqFbuy%1LpV|VvMpXhSRiAY8`~w`SfKt5(Q4&yX61Kk z_^nbNX4P)V077ZEvrIZSq9pHpuakDc2IJPWZm(q$awO#OIy8Y9_D^9Z%NA9NHe0AKJ$|IYjRRl+gZ`cvgB!oAzpNo zG>I482iG=8(9@Z@)sQeLP*L@EZg0%Ig>Y<{l;!RKG#woX>w^ zqbDfV!akDDiLj2=h2!k~iPXAZAO8!|;$Z*SDKGru)Ga4|aq6sIo2n|^gCaPoorBfN zfzcmGlIUx$7Xon3LxcHmbxzEEynH-+3m#2~I9oYyKHG#2U1w89&rSG6pr3j0+F~)o z+sqzfFJh|S-|^#E*v79spXBIUl-{hW7gha*q?ef7cq*%)U26kjY%0->djDG2eb3cG z@M}Q+3n28zn~0p@<`mbbApNLI<^jb4?}f|>Yi?7L2jkq?EsU)SZWdK6)EENL2AF$z zMIMd)9Y@ljsG_Wl)6#!h21J#ioh4o#J7xJ~C0&P9on@M&DJZjl=v$xm%oib;*!%{T z|4wK7|M;Un1HUnT3qbhifBBC?Pe0PXmDIhYG~=9^4at&ZnfQg*miBT@KgQ0~s^37x zh;ve?q43|w^|6+Q_Nw;EY)GnYN=j@MIs#Z23Od|VKoIj`WiMxTwbYperOAv&MvsR1 z(nqg7?b0y@ZM#RCP-qHZirQKe1Tln`I$BFG0BBR_8$yehjL)${CG&wFv~E&3#v>Y%wcs|h!T932a>56B*< zcceHlRqe=oUwsVl%ei4zATp>QH}+O#42ZgM(PLoDI^nvvy;9WN-$3LHHD{Gd(a8cOIH0}`D)F^li~>&)NF1pPd}yDL{YsVz10!Szr)j@e=;9y{`$E1$_D zA&zW1u-l;~Hkk4&%~=?6flUZRiNvF>Dm*`EKigGb^ud*e?xc1Hq-TgR7DEAsPsZq{ z_SWCniSPJ5-R_%a->|)hv##gzBIlK88<(*9-6zg5bxw$Tl;?)-e^;Ncqvg{en{DQg zBf7e`+&f>p_nJp{dEw48i^j6)u-e0+#bdw!eP-{M*kB?vu0D=i&8`if4C7|(uwjd; z%xbQE>kH5M*hUwYie2X|_Iie;JzQ+=zYo6QjhSD+emftrReau-HxI9hAe_@RX{1HW zVe9um$7^k^)vyIjS4sY>JHQO2Mzdk366_) zJ1Y!;(oT{lon<$^Z}a-y@7DI0PMAL{t`Vy`Kc(fF$Ue2feZ)?I5{3GX-oEF9cRFmC z5H~8NP`vJVWoXWPeC?`JOI#H5m2NCs>S=mkw?^gayPEfG-R$N?H_f8ilO;i##LG^y zOp-L>v+^@9rbc~kSFeovoI|_ypA+{Pb&sg~&ix~akACl)E7JPvv$&6ObBdZX+?;~q zC04n#_Jw^c?W5%a`^SH(%&o7F{{=8KS04>x%Pr6S;@qvyo%9P^7L~VGd55KY*x>y< z^$hzxy%1U^vm%K&+005NNFZ5xQRiD?*D^4yoa^NHGGLka>p@LMlzgxl1mH(YspYkjlA<63OeDuhsH zKIXpG`nalYg5fA!*U_qovdW(>qDIx8wd%O5&}%K&WOs=hBx#nUDJrthV))6>{USu? zHoL|ZQ({BwZi--+_y=qI`O@CnHopHK9sg#^{1$-lfBTRB;yt;|wl~&ZTiR)(U$@Oi zuDpekQ0JJq$5rVY+V{0IuvWyc@;<3{2&u4H>PR7O0Az6&DnP9J++Hl~W}!6#RvOod zjHjCUGSJ?5XyTZC*6t7*N)0GTF(a5!%ppn*xDsFp@P^PvT#GX%XUHas`@jpC8xd!t zvNxHuWpiUMZ>+_mxkz=2fb2uDCGs8ekcbS3YKgrYz5A%e1i`Ud4*`im?eI(!xvRzr z-H6L!SPV6>E#WqSHpLji*Ak!S)_HE-uB}Io8i{=XT+iqQzzhWq>szxrlUk4ABOwkH z-GgLTiakTLj+*-NBZXfsG_6LlLH)3?w<}{v)SZJK18o+EtHBoOkIVeE-w}wMqvi}Z zXRw(R`shkKzCpdEatdgyuvTNR)tGxt6md-<*6ON&^@CpDnj+-pt=4l&R|u^U?r^$8^Fw-lLNA9B z1V)#JM^$_@&w)DrlZ=xW>xa7{&uL|_e=)j^IIv+9M z*P635qBXW45ET+nnyU1tJ^Er-z3hN11Kmn|50s^gOHsgdmtJbHaobcr*9()M+DFSUJKg9e4hwgOMZbH4dlnTMzWTcL}ki&_4W(*st0Zq~1@ z>P%>E1;@Pe;oHT8I>-6l&CgYtp8dExc2RwX$r*0WP;&;`skHZnbtLU0X&)6CwDDkxLD{42?4vT-w}vi#_D_bl;<-yY~+CoVWXe zzg%Uyxcngx%er~Z$)(0_9X4yBUg9n@H?g^^s&I4X--?WluP@=(wP$>Je@_4J?#RZ? z8{AB^=1sV|3@hTRVL-i*O0Q{hBPzm^(j1j&vy!8xj1aWmZeemCaSylC$=K_Jt1`~Y zFsp*BY&<(lygc%#4axjE4x@OLcNR-jW}he8M*xjLa=#IH)w9oSc7q!VMNing#Yb-`S0!|FHK#&eN%;gNbe(? zZQCp2)%l>QwkWN!S?U-drYUR-8!AYw``lVC?PjSHAq%LCMn+TJe&xeAKEANcK5KUg z@uUfWYEetEpol@VG*B*NU*WMZMqG;uWIa+wA@qP3FefJNu(U=@IkLKSvKxE;Xr!su zXh`)G-%8qPvjn3chDZ=BNi>ek}0o zrEb*9x7r{g_GW1esk(E}L!iy$aMd4^{#H@Ea{R^+*Qh>6=JfZ0gEs6y`23<_*Rz$+x@njrXTn}5D5 zUUtB>hTmp;wk|d`KHzY$)Hgn|c7EvgG_3c%=xut`mo2*f%+wv;sFpY_8%SyC_|df2 zx-GT9(}I4TF8tkh?CQ>|CT=;=AO9gy3%9ypMqGLOr86u@je`J)l|e4d`b;W~2G6N| zMBL-nJjyQX7)4RK=&xp5>!%S(A5Htt*QYMI^U@n<@nn-oH3_c*6u9OVppiEGy;`>z z&;9welQ&kSdvutPvC|G2s#BxB^NlZj?-LteIKYH*!;kx>)zj^sX$IK%I>UP#Z^1(( zo3nD>u5ag;mFaHCfjr?i~F=2WlW zMDh|TR>==_@qyiJchF9!@uEs81k2D!QJs&vw>EfViEBWgs#ONym)HaN=80 z{d5(lnMvD)Yi6Ty7Kd5LDtpl^e-fCbS--LBbD_B<*bv?CQs;;`$J99%dic#^A1Eq% z@z1lRyrA=7o*&NK-o9B_1~6Q3=Pj z9FexKTJToOu4Vb z;C0`gSnOJBS||o69#;B+>K~TwQEG0jw8oTq$DO+P)|M+y+A`ay%j1$9lxm~VGPC)3 zi~f`U;y?J!l=&?H;a~jce;L@{9U?QR*FDl~6H@3_ts#YlA(6=)03|UWR(86y>y_RJ zSwU$OGI}tr*B*Z3;Tzi+wseQKuC##SRAUrzid&498Yl(mD>PEZh-y&@jR%34U_SJN z){Tk1Q9A?1EY;lD>8-VxnrWsH1E@Y|w`IP?<{nF-Xy(|z*ODhK6j+UTHbiZtYFlJj zHZB_^?I^A`f^wj#JtfCAa$3wFe8crgVP3x7+vBK_T8OpKV0w()7_>osXEj$`8&a_a z;4{$fDzYp2t|_RiZawe`#gnCGG36Pp->L0!rT1HPea7udr*RIzh zat@nwOm7x&d}SQp<4&fWH8NIMqY!Knd%q4n38k*6B85gD_4>|`J;slk;-IcKISFyA zTcWjD%kDMxr1V%=2hu)nDofw|BVivZ>;nL1*Dsn-&YSt1R7);0pbCWhjBK~rA-z4K zS6!iEvroh0IzFttgZo8Obo;OC#k4BxwzlPc2yS}fX^SuV{4rLK90XJzD1Kzqp}~e4 z+h}1(kTW-<3R?j38j6`F7{1%*pKXaZ5xCOugVY|N40JKVe86FUu8lsjH~-G-o34B>{54>?s+)wBX3w-f3eZA+;ZZU6R(^&=@(u* zrDnJG_DZ|IZq`~DK$+|Hh1pCb_Dehx$%oWAqWU4PLUeiC=e(EAwu`3$&F@V6KF}WB z=E2Esyv4$516gz=^-<`WTb6TD7EliMB+I?ot-U5@Z3T1`lMTD=Q(R>>xwi1DF#NI;$@PgNjzO#{(@6Xvehq(3s#-M`rK?MAwLBG*Zg-3@xCVx!aD59BrKKCP!*bU zwO)_=Hx4*8#Wke!mZU8SbhD>hhZ26PYIYv(j+NP2tvbsLb3S*>e7u>)eiqWkmN5FIu6{@ZL%Xu&U9lr}^ z#TIC5{5IPI5G>C=9qv3&R;$i34b!YH^9NdAS@?BmoIBv!<~~PTtvQ5V&+rmEl*J-? z{(*wO;(UM-6}_0<{gp7+vc1yVdq*q@G%MU;`X)Aa9p_o(ya%6(_?sU_zh3HuY>u0A z`tWz2U6|Ebu)2yUaA_3EFsy~s(!w1qV3$PCDlo3)khFcEFwtAt^|^h8|NLM5FTa<02uf3FCigh1sd=B-d1}>bOr)xWv{oRwGmSSsdhP2^hPF+b z5tEkG08kXS6my1%hGrOW35P;;rM1=Ka1FHw0h9!R@&e{1jWuknA*T@5S5|gs&F98y zrL~Td13WA4O$1CZnJlBe0{?W(`fI z6#%_q+WFeL&duA(TnfY_4m2%vq3=|6S4VzzW3~@W-==I6fFs!Ms&-$oZBv%6ymHY` zOZ>RT4pV_e++JgC)>_EawTtdOyo{q_W2f!*l)ZxFjL&{->ltb$kWC+qlWQ=VYTcD` z*2u^-3>4gHobARp0RUJvxLw2Q(V&lp8q@ZuS?@Q^m^Z%GVoNZ)ZQFZI&6F{e)}gQu zrFD=lfq(d?3cCP+nwQr%|1!7q86g?x83YYNLq>M!@{nF1wD*09Z5Xot`%QRI`3I%D z`Qqy1Tf>@@x@CnYZv${Qb`r@NetOfP8TTR^Z!Ye0Mbw`|0>F?KO*lGqXr@Eue z`qF4FxX~}+P{bcl|F}g5GWX212&UJY^?IwEb=vaEb?+Vd7|=&2y>!#UYD2#6NbYKh zYit?rGj0qPtA%G{cll%&+-lr_3?ni&Sxod|X|DkB0(a%=u#pE-zxu1!8#)<_ibJDbh2t_cEQOrE2wGcy^i%h4`%}c0Vx5cN1 zlZp0P@eG>VOdF@vE4-aY8G!0|Cp=(dJQI5CLPA7|_WfIqp^K%&$ z5bMcbD^Ia-*aP1v_Cf6wkx6s=H-Xn6a*pbA2wG|FH@v5Hzbl+$X&*>qv%LD^m#13* z08BFT$_uBuFdqLQflIf%z@jO={Ty^z=fei>wQ@(b136pU!hs4fA8}t}9$Gb1V}DzG z<<%ljKiP5zahCb3EHBpgf?PQI8(+V$)t$vUOxvXTPz$<-7dvqfM#XaC{;Klz!V)QFliInz?zb}I>rcDJ=UwB}hiABYG?@mqA&ke&+gicnwtJG={R&rsF-7&V zA5L|#<_#*>8)bGu8)Sr6yzyECK zH&f=f0EGY3fAgO_r(tH(231_OT)GPsURuT*ADwx6iP0Wu`Ykd55|C5ODB=>A26_U@ zRB$M@4Jv}x?yP|RB%}chkC_nLcT356L6<2opXf5aZy3$yn)R5;ps_3(&&evSY zsUAIONv>J8YBtq6kyWS~Q>L1-Lq3X{L6rAgHb!!v!vR4?iyjd=Ym7-@-Q?z7ZDa}p zsYNCVT<8Q6dc`!BGmWj7zR%SjZ#J%-9cq;S5QK5 z!xAiWa9kv%c?Xm-H9Yn1A4(U9ryuIA)eNj#)Pq%9XAx}Md8>!n3 zo^J4`uAI6mYrqy0hnQ_!?Z99|AU0d*6q>&<0s)Z#JjWu_@<^TT@-KSe(nWUw-AkMy zG1B<}sy+dOJKXzwZ}*F!ADK>9w}LX=>}_}I)T~loQCdJQx~&*$DA)C+VG|__dt(#F z8_0}|HpSVt}i|Cq|rxaZxj2lV1XL`0b|>$ zu)H)2o^Cgre7Broz^@(W!Ix7jzw=kOPEJf3^CA=~FnYGNtJ}|r9xT$wSOfklw@Y9( zK}g0S9cscY&GpO@7oPRPGC%Y1+SMY{>KT^3T5NCZ^)2VECpGv+F$(}dD0y-IQ#RUM zvU1**Rnzhc^hD5;QOI12S_mMB8YjuIaf9(SR9CEe3E)gAsf_Jb8!d>HdwWaanK{@k z*atN{%A12mjf$pp>^w=PSeCnoX_91dL@e{0?GsQoO?k1p|FNN^8ohMd^FZD-Vq1#u zS^QZjwj$OE*U;mbxOx>CD_48);A^(H?uHM7E*NbDPk`EVg7+K#tR#nJ)w{nLFqmYk z+Oe}ZO5@}KEZJBm#uH+@5-E!hq7uw@T2~6GcQX;eR z4=QJO)kGlrPAj%m)72`jt+_NY_b~G?_wj5w@t!}E76t%7rGlc+U%%Ma94%iho9YgT zGZ&wE_|lOJU5r{|M76#icC8?E0xyo0ZT?D737)O0FN*qgz4}Z?sVSZ;QLb@FaK8mz zD|pv+P7>$2uP49GYxL__UB8L9_7J&11t9z%{_;QlY1}{c(Ya&TQtnb3wi<*$VAkTcg#zMChYP7<1&3T8Qt3BZu*6y} zlnZR1xgjwJ#O<{zQq58;uIDLP;`LUVClA81$?E+s)70gil2nVl^U5jog|X0eM(gM@_lS zs*bEJg9A%4qXg^@0M6hDgzrmxUs{L4Iw+>OyZddX*u1)&H4hKzJV#otWQsLkuyI@L zwU5X2V#sM1JJ{J>Nk{JfLFpadL+xe$aGNd~C@k^ltGkYT7_((h%zN@40YTI*6USyd zGTR~ML#Z|>baUO$G#3KZBA#MS^v4nVVkF-r@Y+C+65j#9HL~{>St6N>e^kz3B+eB5tE6IpSS%<5Rfu@GB(k&+B+8*xcogJhZc75lS7x?~1iC%fd z#H}tAfQ8;C@jfveh9pp>Twl229!pB>{nkCA_CZ#-y7K{E13yjstJx@@?$*o9Fz#IA z(QWUY)q|7Wdo{#O!ixY{mJIyxU1aaoy2Cj$@89@Tvl`u@NleBb9ZIOyX7OmlQ`h<2 zHD6g$23De5UES&#mc6*$-g#I1sxK{_d>-vSe=Bu1vR$z1_VKI=yp&e7mYCpP>vuuy zGuNOx)Br*&J6>qUJ%U$2T?=+4=oQprX^b1ZvBJGaVzgl3=j>S}->bmks@@|qu4x*D zd6J|_e8-#i_<0&fT+_feGAh;1>-Bm5@Dt0(4Lb4o#1+d*d?=FUj<_A5S@1wiH3wGtA9(`CV+Clw_x@H?lmOKZS(lVUQ+q7KgX(1=x04 z^rW>HW<4?MGayLo9#i+2ItSD~Of#S#{IU9KF!J*J)9&5@CKr&L2cdJXcytK1d9-9$sPBbXcVOje zmC$P0>RiS)_b~G@^YAKtazJKKFcrgSw`sU$|RqbF0GRya^fJ7p>1-#68SB zZQV?hZr7zvxGuw0?a$_Mt+<9)v0H>rUeD}qS7(h^S4o=jGCOtIi=Oi;#^<)UF-WdR z7e^a1*lPW~(%D*#IHDS!V?_n%DKy~PMvKEt$OU$Uf}V5&=EjZLqgIbIOEtIF>dsos z^wmlyHUK?EHf1&-Ge^__`f?PLK~xRAdVs|i1bYO! z1m^&qa{a0>uhzz0WiA9J3i<$8o*w#2k2ndM2b0_iZN%Z86nlVfD!QxWo*|SiCl>mo z!qWm7QuuD`CXF?&wWL)yE}Ht-X zBbA+P}{kJpREOvYxD$X;Za4^W}X2?g#v7gD-pHDOS@KL{#l7c3`rh(GDQroC)S$9*=&$6w#uh2E$(dR!GljubMLNh>~!f; z7nHG}J_W_{>4KrZhaeXWAXz z>={;9H{ru&^h?Do5~vlc7p%N_JZl1P-B8{@kJ)_@M#OTZuW^hlWjQO+erm^S2ycMA z=Iym?XTaQI#%7IrDeNw#FIU<|t=?_mJC!^v*j8Qwtffhm$4M52S8XnyeYlPS`Bjx* ze*HS!K4A4#U0m?$0v0bFbsvfgC2h`s7q`d0I*52bre07fuA{Zd>uxl4(TyV~hJ4d5 zGR@3+8)*7KGY%KC53zSpH9PCFyUOEi1vy`JI%yJTv6(yTta+)$+#nZ5b79pJ3PTn= zYn>x%AH01i^T+HPmT8h){9k@ogX98}3q&Tce1iay_P#Lpm3<(rgFJ)o-VYQqzIi{t zy1RPal}IZkl!|Dr>Udu!d>-O1 z&TdbmofEID;%pVIR{HHlf%GTEFHCjn>zB5=wRp(!W@`?h)75>uWrM9lE%YRU;Fm#l z`XjV~iu!d+CbGRX_|)NPgX{`-xIRMWHljgyLy@@Cla68VI!@!&5fw^k1AtS!cilJgmeXVxrbU`6D}&#>)v4K*JZe_qpS*6 zwNuo!@2q0C@=bw-$RB*m3(CUJvW%}jjqt0Ued@!B&F*mn0qk;n3w5^}Z@;pSQfqsq zlfXRzI|`Q-EeAI&5DR~UcxKmNt6Qz>K2wH`rk z3ekc?3s|0XV(N4oD`6_(w8r(dolebksjnL>6DfwO*ksE{L+$6QF95&1T~knQa8rQ9Ud)#zlL^>j8sDr!`qG5VU`9ZgOq9_N95LI1gV3j*(b$5 zEqkhVaEnbrV2W@K#9CT=(%NsRrwxB!S_jhFQ^=lQzia}q67yMAE*Z38lFk-ZA!cAoYgLCi2W!-w!`Lo53IG>Ni+mTpe)jIBQP zwalz0m}jlMUxJ?Oeup{-)IOs2-u&Y9Ym;s$N<=Qn-QW3MjmRY;6GW~g^p$%gtpi~n zNNayNrQz`pzPVz2Ep=+5a?2}p^}~+M-0IS;E}im^Z#)7 zCO@(yd3u=}_;WafKSue!RcXX6Yx;BY8X`UeO?mpMrn0fGP>B~T=F&_RGe z36L%Vbka$G1|f3TF%1^UcDtVBA3XBjKx=TcUyJH>YAQvs%Ne}4!=5JW-#~9 zKl^^a@3SGPtqG8hkgz$Njh~Uv1Zem6r$-mx?`L`MkoB^CmlvD1e4yw}NZy6$hS`Fc z)6P3K!3c*VFM;J@_TeWW;y*W@Z;M%M(=FF`|I+eGw+p211N}r@TfkmNC&oLW{zb@N zp#wX+`0Z~W|0PGANFQK(-QEA&C~T;B*UPTc>cCYJ+g{Rs<5Dj^!)LE{>YLZ$;c!=ac&|i={Sgg^G!Co!?C8aahB0B_ zm*x?Izezy&d;jzQ@#*Yh2zvcC7jN{Dv$BN2 zBkkvyJEV?HG5n^OC4)|ecGeTaetR6%6YS2Ry^tUh-T}h5iriHGqV(@;Z)O>ivmu(QhuuQ=MJ zVL6(LQ6I#@nWf(RN#Nz6c?acs&`; z8_VuW)GyldR97i(JZhXLrG3I~W9iTamxf*0;6;^_;Qa4f|JXT@tIh50ALm}MlWk^n z24RKpL^WqJyOeiV@_uYxY6IMV)%31JaN zX5{E=I{SCgag~e{*-hfX)DH$tk%$b4wkwUb!%iOo06nrMXzRt8hCYsmI6W4NA5Rk) zcei1+;Nm*0Z+NwAgGm#f)IlnV*VP-!An6{w=Dnf43QSG!V-4~*S$w~4wn&zJ1*#H9y|zL61%Bmc z!EbH@@H$RES$bXL44-TOdZC+0mgi8jB9_4guunW|ALyq@$l zMI!O?h~C-#<7DtYuy3*4D4D4?A>NF5pS0$CqPeQOqsP^$a=k1=#%BHA#slTaIFIv& z?hRVm?T=%;_nY^M4kdfh@vE$f(COcm>{14&0Q_uyoW|WPYHymme-lR%b?a!${dn&)>SD$=4o^SgIjXC7?mu2&{$Uh_SK=q32Lj!{v^|f~l{dvHy;@~5&YNsFk z*3Wu zxO1aehZs@IOqX=RzrCASFUbY3+B#x;-^kI>5(Ay`RqH+8^{m^e?DK*5#ejYt!*`^4 z473Aqg3=QeALsCe8otbei_DXezrpQ(m~64CRR_ClRA(=Qo(nka$j%olzFV{A5Roj7 z>;4E2kJY9)dinRhot<^|X8E}qk9V@#sd}fYrzX=74!v+lqY;gQ{ce8tgCPwm{6-`H z>jd*6W0OLpnTWIc!&&<`!F2l{{V)I5vKOp>rs|EHK2rM`C}Uk<)3lI0kz|j<7UO{} zrmjv+9RWdY?twwt9rc@|xE^`>6xq3PGl7*Q?;Uzqd&|ndul&c3AoVpEGHwV;PlB-8J-h;3}VTQb%z>y@UZIo&cA*-QkV3(2Z!8ZW7tEPU@ z6ql;(+nRX_dq&gBnKdw-;V*4)>4Ga0T;&<2)8Cm3`XKOKtVSPo!&g-_|H^r9irqTjcTh$4F1Gi5x0>nwk=gXkngAofxi*)c zJg0Jk&CJ=;1|}8e8I2%t3h4s22)&!Q*JJZOMoWqxEnWeru|6SY4BbS)(JdbTDL?-@ znMI6`Xb=_K)41Pj3%{;(W4p#zW};o+LmNsDG?30#e0qY@De)Pvm-yxnhoRxs4X>}m zdf|)_@r7Wc)?)@+XB%5BxO+sV>DZ-YFA5oh;onj9n3gEX^1*I((q!{yn-h8;(nl^I zS@95N_qKgGeRB%#=>2F~MU=Qlp@hG{pAx~YY>@TxU)?|JZ95WEhN zh`c25hcpQC?fKDs%s4~eki2h;SsVa`7Wa3bi@|uO>Z}p6b)>;#+Z&oBQp}egAOPVt zPxpu{A-;v~RyS{)T_c<*dfd>XUF#RY8ECklqmLT057G)go`@O6mt<1HVVM#Vn-FwYj zuX=-_?f7NKUUckgmt*hhKknG2#ov&mZ1L6Lc!1jL=i41VrSJ)N_m)l!yKLH+PJhP+ zS2nn`-V6Zvi^VL%*-=>E@Or`P8@lZ=fa=oO$y^5N`3CyA*me}#&E16 zq(h=3w99Vzs}D_p0069Mds*(k{bEdbRTXQ~-68unBJV@AU`9fB+R-CLCw@Bg;)JJB znz-;6^Y%Uq&p#~1>!SIpZLekdIsk{jY$31}>a}F7-6%-E$Ag!B{&C`s{z_+-Z1Lq_ znxO6)wb!`4rcXZ|%0p6@+zw+EMZ%_1cOEbJY2}{_bX0VGg)XET=#Z!g3$v$_u@6)z zMN*64_I_-=Bol_9yvM7U)$Kk=V`3y1A}+F0>~13W`N;n&!SA_QqPie<2$QLePh~W( z*?fmT%0o_g9^p-hS0-;fPsutIyLr=H3U?w%hs`59Jn~}4!Oq9^cr1t0Fh1q}Of27g z>or=K=H}*8H96YJdaJ6Pstesj4vqO>NTZP#4oSo|cSrNT$nE+o(<;Qx=i|{;k~c|K zCxu}5k0XV7-PRE+dOT10+4tbz1k>&R@_+h+hcOO-(!k~@+>*G)Gyu)9Erza*T|>>D zfFM@WemhC)anQ|>yMXpo5YnMLh~IW}S^9UC_t4PHK?h(!Xv%>fIna}JR4;u~YI0@V zxl?CQomzPb?6GHC4nDW&s|q#}a;(F+VUyN7703Z_7ol}T551@uObVBK#}t_*>aJmX z1L`*|bhq^7J)Z4Bk^x>|Z-+6r_^b(sDj>jGWIEK9NUlAdQFqa_S55Ik785Nv5|kPj zvd^OdNowqRfr+lLg~Pt|^6o`!ZEx}pKI&R$}5?x`u(6KKw) z8`p$qB+?K$Xlo=5zU|wuM)qwFE}xG#9m*u zRTx+xq2A&8+P8b@pGbbyvKNwEm5-Fs(=cxa`EFWn&g&;)&28vEa`PC970d3zI%jQY z@)UrG^r%i)?;}I|+Bufj!7gWt`!Y$|Y1~bz2`ew(1#-dsFQf2thIXFwl4$7pL+TG{ zz&1C>7eDy60eOG@dGGuc!bF&Er^QZ|58GwKcqfc);K0Pgjwdc<(uV*L)*|paNHc`* zAiQ;YVdSl|()s5dIV$jY5Bps~SsR^J_WKQbDa=JCW{oO2D|)@W-_LsKt*X?kACz(Y ztm-|tPq^-}u5M&~qxPRMw29RF#IB_N0O((%>N0WjR1SKr&s!io+YI7;gdQ1O1nx_< zy-UNL>KbE)p7+wA54PJMK<~0@kIQP9=ly-waDM2eSuf6#cHO>4Q)1nUw%2}hP35M+ z6P?oDe>jaD7YknB@cM?A?;QyQzYzSQA?HQTar_%f9pf6)%32B=(t=^4 zL!?8jBb+^b6<&UyO4ZNvG|TC`FOkQ$vbl%mJtyx%v}9)IxuXuBXnzdDM7h!EB#u*> z#umZvYI4pz-u!FVYZ~!R%NwXxf!g?1R45i?WavzFNpJF-DgXW;m_Ms}zr2_w`}z-u z#~ioUsJ-#TyEI=U#t7zVNx_n zUdMTz9O{nwMas(_FH-(cKX?}r1Z&nTc)bX#o8iePfBPT(lV6T9zXCw`pZ>4^`F5x$ zs7-9++YC9t)o37(Q!x&k33792&RQI|WDVgvNfxz#S9$ls-x;I;3=s}}4N}Zf-Nfw^ zmuuz52EPR6+{sfX&zwD@mNNUL!(TSA?4XAf3uQQJy%T{W?Uo#F61q#mvfmf|xR&o} zT>0h!wb!n_*1EXG^ObkDb!mpe9Iyky0HBkOjXUN8rk%K*wc;Q)_T#EGK^{#u{8?CCMP{Pxj*xpC({>bd6W;ZmO#65Lx*n&CGb6*}~ zJpp=Vz==RnL81mz=yZ#$LJz6?Y5?B$+%iB906#kX1Z|({88SlyCm9-l?M?rbo$SMS z81@I$9|JRJDsOx51J886Qi;?P01ZWteo&LZkkBV_uPw6i?1_p>I@55h*;$Pz2h?l3l$QRabRW0y!`jYkbyBtpf_ykE`h!C+$@;xT`J_Mo z4fit#Y5+iS{r}*EbmH1IH&osP-MgN>b^64ZU!(d%E~h;^OFNzjC<7uAx&h)aPVWNu z&Npv}TDMgVVM6GoL*H-p#b)&p3{Fci&Wm1NSP1vbD~_gzo+^0Jdb_6nf_tSWuD$L~ zd6UYG+~5<*uR8uh2A488JuKfoGd5^y)Gg%gAM)7XZUNhOxLr8YIR3)=mnOJy!IcRv z4jYwR{;i*1&*!5~tOXZK`}SWQC6J3nSlw{3K&C6bsZ3ur93F21E1(f%meqtsUkP9--o(hd!XLKCE5!#nAgawATY~;pqn~C?H3$ zHxXoR2lFa;k@@qIbsor5zGg57s?`l@cH^$T6y{9eRN<$fe&qWNYY&{1QCtm%jn$+1 z-}cG)d5*g`KaE~|yi@gF*Lzv*biFCJIkFD80S$*ViiMbsE{8N4(9lQZubW2*fZwUO zXwcVR&Vo^zi8!y5qHzEm0wj(GdCIFK=z^?1{8<{=P%K$}6N-h`Y+8O=M;C(6MRakX zFMns6{{C;h0>AY76#&A2@z4HA5Q9|Cuseh1Ou<3zZ6LhXcu{+|mH!~Tt;Q_`43Wr( zK9f3iwlDW#w=#I5-MNu7Z01JIojoTeVD1gTU$x-S0*VZ0k`3EnCh$<&yAVBwc*}4( zITHQEhK-{uv-uOxD`9)1)&7Cb@8NWd`WcK16dW*B5FU5Iq~!rX0BVI)1LcmYm1jpv zT{ZQ~?l3b|&$T|4fJ#dWARjCpSvI%9rS;~bfb{%7a{gQcv}=~P>(6rpb8QNvGK6Y` zN2)zhhq-*XkPjp4QcI%bvQ4g5LmnJ#heec#YBC=axnRjuRA*Lnpw^kH(Q@^^%K4 zST9(8CxcPNk6J&GgtX#7JWKS}Yp)GSCA%z59}a$_RdZ0qL2Z+#)wHcn>&;MBs~}i0 z@ECS$UOe#piAhI_)U*+aI2rr&82RHW&tsghqV;R&cRZ4lq?-n+-w|=}+7$zDIQyKl z2M*dONPR!9^V#@pK!Ty?`3Qf@@Se9{XVr4~MK>PpRh@N0G+GNAX+E-Ps-sW_SR>?1 zk3V|;3gIP0cdB`V@Yd>`BS)G}a}}1sX(wY+vwjI*)#jrHUDoQP>Hq{;n(jPYpPXm? zH0$-UG}*1*{6)-=+Hch($eYA2h#F}9>(qS6%z3Iuapm`vuPJU~nnh%3 zvhAq9VD@VwS61a(a_6q7|NTaPD7q`rPB)Lo3ih%bTYKoG8*1z0s0_=--z&61>XziM zxp~mEFN4dDUzQCAC%-G%r3@}C@}Bz$p=(gPMBNQ)ul4q)0nJc*15IIr3uy*u@IxD1 zSpUKVm)o2B?Kb6zjGSa7lM);~>P5sC$og$U1b+qb<>I(RC9(W&puOmN8iTanlz8Tbr4KIGBwdO zM=#Xys_-u}9|Y_Wp%rLq?g`!EE=!x@veBmv9(H)|i#0o}S+nP;h{HM^n9&iBj@wl+ z_?e|#XZ79kr|oFASJhtEJ5_I+Tw^dK(SU|SFB*{0-|y$AA94I`5bMp8PViZ2c|McY!B{eKc^u zTfue#+G|(6GcH?^`8_$_!F~q99I*qY62ap(78rMU(Pqb{ zN?jcgg*>Hk3H75vkqxdKyE;AfwEzGh07*naRJ6gx^VcDN>Vor+cg=Du9-l<9Z>kc& zXUrSw_C#iLxthy|u{9~?kvA(qW;$UVgFVWgjq>|tb{diGI) zv~_3J%&9z~dVhlgK1>ph*2wDlW!S|_qow&CtybIt8qO~QDz(&N(uo*fqs^MsX zM?dDL%l=8^hXd+I*=9y)Pqn1!bc>Zrq#6T&J+h%*L456O5lrVK9dg%(;uhTf`#u#> zbI-+si@VMnR5+2zL=vKbhPDLaHZW_0BgHQ|c9o0R`M*ZGfnVCRI82J|N&PgE)jIH3 z9Ikoy7~~IO`NX8AMPl2~`H?sAf@4HS8u+Z1WLt(h@LC?rNz@&2HEfBPtxX_D)%5yrHTDQ~2ro=ZX*U_+qS z5%exd4w&9UaOd2eZr%e>06J0RsKVn64ZG6wWZJ9nM-BWy*o&e$Z47c?-%F}qf91M% z{xTo*^E7Q(0Dh(^I=O4AMJsO9?lT|lnZ8NPji&}m|B#wjOrIxuoX9X~u!gQpSr*|Z zjvttN-90S^$-R@gmLVo*P4h$Ny=vuE-JVqSQBkFbJ+UzBC0Q>y^vq7ZH501P8tOa0 zx$(q%L;I3lbnHs9xn!5S1Mpt_L;Ev|Q(ynT$x(>91!`|ldtjf9Lyk4;4oo{Qw&jg#d-dR;gAo_t;r?wdq;eawa zCWd1jVijS{@$T?GdifzXrkCZtEDvs81Hulicm!tYgZCj`GH@5@(BKnEj~q)38Ykl< zOrkioVep;t?B4!3JR9cqS55a`$|dL?JhkRFYoTA`fu>_^QkH(7vzNW_ql66qigpD6 z#LXYYV~*Md>TbN|nr*%u$TI3cWP6chapwZ5>Y!Hz$CY<3(2;0U3C~(MR1wi3Dcfy4 z8ZaZ{P9&9x3lZ(IsIwvrs+e^Qwaw0tV^6iL5mp>_D*LMMebuM$Vz~76J?X5q6O>L( zbliq>!7ldrst&0a9zwifVBZ#+Vki%3Q_LHE)}UcW4qmh7ho_*~bF}wSGd_}oqcA>U z{`Bzn%V*89vudxzURC$oMH8~Us&}fER`&oN@!^0*LmCcf2=5l>FMsowtj~9VP<-{{ z^Wih>)p6d$c^w}r>Oh|IGT~(!Zq<`JjVyj5=7CiUy8SE#8EaOpKNjJ+;Pahia{703 zd?C~*C@p-oSRz=xjyiD>B=GUJj!i1qVVkfX7`h>UaR416m;^kUUVm@!Y7BS6%g@-Oo(b z1Fc6o0Bh$7V4f@)+TgrX2_F5%Gv?Xge7#yWOlJD9YwApPg*6$1HNqp^p2}=4ALiX^ z=v)tR&SomP*mdM?@al8qZA4uu;pS-Xwig_yz*SuY`@}3vFKpL-z zZ4;p=q$8*TnqE2Q1*P(9?N`88Nz{#FdBjw|A$9f*=JC&2@W5eBZ7=B!sQ-M!)%DTo z2hWN2&)2i}=0S;_t`16U503^!wgsVLBb&t14^4zMhJNkwmFGWL`I_>~**mB2o!)EM z*TI><;|%pp6MF^i3GY>lJ`iSJo0GC}0OY;27!2|>&3oxXvy~tH<}>C20QT?xJUJe; z;#P_!Xcj~+{PsF^_e39A{RuW7@NO2{X-`H`iwwafRplVwgyj6)vc^c2x3BC zYVdKZFPRSsx6hcz>m^Zzh~^DDZ^?OwPL(@t@|d6tTmxX84p9p#Fd66&YmRk@Hn*S7E2863@YEBtdHYX!8!`azCh`rJCe0~8qf4*H|i`qqd|Hok@{rWm77iswv zb|A8YPz6!vm{bLcM08%!d4nd69d~Ndpq`2X&57ZNLXEbIL71eKhzk)v^Sp?ai7x}} zkVR0t!={ID+h$Lu{JKxSiro7?z4grlZUKNp9h|_yNypEt;G$rcxd$;V(qJ2a0_sk; zsNJQio(pp-(4ZsxK&*r8iM9I><(yUhUJl{#?ALiPeePJO7N4Qh5BI7*=z6c})&8z# z-d+jq%z*F#jksu!N9O|?4hWA4`)d^Yd;^3*BjZB&@7|2OL6VEOsH40=T9^H(Ov5te zWrSsLDDyv0Quob<5lg>$Y}u^gXCj=7@cb@gdh&an8Tz^P3mH~2Y-DOwtQFIy4roP9 zH%fGbDC#^byxXtOEK0L1s%ol?AwZu1yFf(0N3;L_Kl|k<^D6*^|KgwhH{+xsc5e0D z*;CKJ0Dje>YYBvLJ~ljRgHh|9G%&E>j-xe$yCkUky*6bg6pq~M{ihUXu)C{l^FZg1 zaJ+|u9EJrB_LyLYW*r--fI8=(QBVpjcf{TJJj!bXr*Ndb)= zNPUE$q~wXfy%%H32#yjOCg%Rr5!Z=&Wc4ihrqVQdRi6Aet9=#VKN8wgnL2P@BCL2|3b*TmmjeeXPY)HDNiu<~PoiEBB|LWJhJWxE?F!F8Wo=tEZ_4IP+ug|W4S|_& zwt=k#bSg3>TM{4(4=9D z6A6g56&qImacM_gFz?K`QR9}5YSh6|0s=sRX1a?y!5&uwOOvAUTUo^{C(89=hYWJc zmmS(awn%Sa{Z-%pIz`tJT;OKy=>X8Ni>D@<73fm-=DB|^81mT~wPngnC#7jfd+5vR zymqH8juqYn)rK9Of-d8vjKeZb)nKakgP*O>FLkbY^V8AGABI&M6-`ozsA$;ZdZ2JzG!~;GVHsB9cveS7 z`3HkGYW?FOQ@mbsvGnA=VJA5ns^P~qpJ(*L0-n|z6~h59J6odV{scw`nB;)x z#NT6_YBK3qswsxfLL;H9kbLrtz+m1sA2hqUDn_;mT}?d&No(N&*jnK+h+es1Zv1oS z&$9zS;~%!TeG+#&k?mzu$fkt&KrpuMNY`ibX)Yh8x)?az!w~|B8otW=7e8_AZR;{A zoZN=?F?OrOttaL%(YwBT3S2F~w6k+$&O9~6>d4xea%UBeE6gl}7Fy$;BK$gb??ZRT z(F4Y7hc*@!*vyC-BRf)Ha6qGXWb{Qe-}R1S%0>jIPj@4qv$n>q(_J7{PuU598Kpbw z2^v^qYJPmhd>ZN<6HEN?r+u$u^(_;(L|3IhYQvHAxJJ;r4%rNfC3U6p&m@~m|Drsk z$p0RxXjIE#c{r-pXH8~+d*F1<&4!6J%U3~DFbVKJb})240xs`nU7iMp>Isco{tu_GY2gWQao3qyS7@k_0ouiEx+b)6Y52(Yb(F! z^hbfa;%XYJULph5fi|RNNcSOHGkE8_uT6fFcxxlIvr|Mq&hqa8|Eg)v>h`#-`@3D* z%7(E#O%8pON7X^yfIiUhk;q%GU1GUYY%bYF7hEWIzR7@p{`;EG9ijjL;8gwoU-w27 zwM*D7akp^Q8)DZ0$JRfy{zWN#Hv4VkU)bQ>kpcM2UZ%(@_vT*>2LTtiOx$vD>t|m_ z>PeHR;b*OX+ToL`jsg2vs~Hq2ZmdSyCcX}_=16nA+r0}v`W_%IuBs$2dU@X6EjsEw zY573x4M$6c?gE<;Gm~_xy@5ibXqb9Y9HlIYtxvxLRN3{9%n*t8UEAF{d55}(z~-K7 zOO&)^V9Aj&DewOv3SRWs2b{#egy8`Iplz$`f7Kge)GblFjEn0yyG^<}GznKxq;T9Q z2T93BwSOw`Ndv}04kVZfHhi9-sn=nz&sCdrA}(sS+4dzw))gshIn~t3`oK5~R0EqT zQ`tS~z8VH^6LiDuov*i`=|Mhn$*~Ggn&7+&E)I06BhCChLpipEDuGkJEJm$3Z``aQ z2)Ip9KCx^U*h5G%4|kIjGnj;Y7I>3-`DHZ!fpPYr>Vp=yt2eUOJE(fEMWzJ9G|_Mz zj|MdClW;&o?{P7j|HXp*@)#y;EdJ`#qwpjyL|im+DfsS?w5|)hB4Jg+izGO-*LX%9 z*m&}RH@E)bb)>h*swO-W{Cp<^HT^p|c~OCx6H!oTFRK#?!%n6~$4WV1>(CdWCu4$r z)otI8)1;s8dWS<&RJ>`Ovj976T1}kbs3KjLVoO?V%AnhGu@!t!MzbQGmGLx>roT4t z|Hg0qr5XL=^(z2`|Kh*ufr3Oj)xu_TQlgIxD#HUArLAVNj)?m^57%& z3hK8cK$!DZM_VST-ILeqeBb>hI$?yn-22$*sq{pJFkIW%R)7Z zy9twHjb%Zrr@$>3ea)ly0TvO~$c*FRfO>uE52%Ol-=seulzQ_eoSs%dKmXDevJ+Vi zT;NGMG)ZbgE~%#j=+%VX``)9GZ@lmT!J{*GMsFPIbuR6K(-ICq7n6!bHMwZLmyNp+ z`lM>PGP@)$duf&S^EAnO$!)a-AN`v7CfLYT@BR(w1+re)_Lj(7zk8p$M=rV6pJ4Mr zpwGGN_jEsQDTJ_%=nl2nFn;jCZD8L~{YF1l4sQB@6!%5U3@ zd&OvYNMse3!p}?b#tR#-yY<>z2XPn7Yu5+EAIjjYV;3rzua}Sg4}KE>0QDYscjfX& zY3guyi{uh@w@^J9I0DfN>(8x!X8n1!>w?RF_#7SrelD2TQyCL?yuO92KkIw#GxGV} zwjqNyx@zgELMNR&5k-i|N2u|Ua+)E{kuU|G4!=Fylc>G_4^Lluacn6DKi@v#RNdYb&D(tYQ{?4Pu87$(b1(qa zD3xSn=@fgXuJR|Rf3MH3=+8XWev#pQlRlv~sJj)*A0;X9#3Cscas3oElItY4QP{z- zlZ_XZq}Q-3fo828w|3O%ahoJM#5RBg8XqXKxu1A`T#Be@qOxfzXnJw$LrWb5#_U%~ zz?wGSoAP}G-}J~^rf(zkKx6~W7{tStp1Q$F6U^r)n^ zjYO6_+>DeBOW{fF5OAO)PIW#K+_em}OiH=sSo3B}lqjR=fka~RVG&QucveQ!oAsvm z!Cz>We{-B={@Z{42V}Yl{W1gY5ua`FBm+r~!W;&BLOhEmlJ%5Nz&8h*4VHUiGvZD< z`Lf+!s(hl$5OzM6h_)6M&K{h1Z2dDEoLm3As(sY|K1yF@s@{tGU6bv~tVXZ^E<;EI zbfm;g?a$T2iQEsJi!6=(BRhC`h>kx+>~-gD>k5N{+sDYQV)r=Ghq2uc%$B>n1*6WL zI&Q}%OK|dj36a*xM6<+*NKZH!&J>Pz} z6>QS7enUfzp#`07o;*}yxzXN426G`3!+%S6GtvaSR%y1Iwb_Z-2UguPZ_Uh8&}_nb zNN69C7#&n(!k{IzCBBT~?kJQK&xC?jd%t}Q;M>6al1KXhwuvA3 z0TcOA|7aA1edliZsrXG*9E( z&CNGeqqc6UrL1qo?lT|fRNivE7^vLo7eIeZ%>~!Tk?Kc{7i-!vT8HGo@rHpLQ#|y- zcT_E*6h=?9{lwu{jl62*S>2AePcvnEMI}92B*~!%H(;g4u%ic!Hc&s1>YZl~+M7vs zCWCoaduaCCnqNvbHzWZ71Xo0#r0Fm|28kLa251c=@!MP32 zEuH1dw?E(hA+CQip7fZw2LK3u+S1cXCN6xX?1@q{*Nsu-0QrXA z=@94ToqsvkA$A^&>nhDleEl`2tZJ&QmMiR*0bFu;$J~~fk-}3+#*p_(n0QgblQ4>l z{W87yOF-qHOpE4C-MsJQQdRFfnEU47ySj$F#r+QSFrRz$l(DOreLz0gUg)0 ztiZ8tdvIMP*5g8jtxT+nl_CyQ0c}FsMMO6D@i1kwPRo7&aEQu^*9`)|A&YG1kP)6~ zW70CCybhX@h;^b0>4il!E#qk!%^o|a|3C8Hq(`zW&+fbP@Ftth+ejNz2iw@j;r86^{qFe>=Uo1ordagZ1pHxV8E#zs>5oqb=i^;7 z+||{w%Q}nB>8tKH9-L08c+kU-Os&%Rk?ubZ@@gTSpTc5f0 zb9X=WdYI^dRV=^QTJ(PT@lU+Gv%t8c2=_%?72t6cH*>!q$L%n#1K@wI+Q5453;|>)Ggh9TBd{SZ#>OJEJF(c-tlRSVUXagZekDlDQyP~8!bg;i2OY@4CHL``tRhJZQ)r9mlG&JdZhb6tX=L_b7hN^8>{90NjIc z6Z|HE+_STuOnNZFeMLK#_u{!`FLip}`IA=XA??bd9uB%{SP#lOQ~OsRAFJ{yU7>sT zBQ_tZ?%JuFq~GKAO$HxJ|4`b(`HykaZg3(Y9sN^~#M4NYIB<5f=A z!Q~Kt&xP+Bf3e?xnCMxj7Hv1K8?N7;YJOpP_33?sy;xE-jr0HbGhD!(?(=$chh&#OTj2$fu~9{>^&z zyFm8A-U9bP{W=Q=4{?u%29G0M1Xq-kUn}IxA^$*-9Q#TiS zG&g0tDYVbxFn6M`D6_W5qR&oxdeNg3ou=B36gpAGIAkbsKu}2g`?1U`)t7Bw)+%p$ zBUztw%VDI+)$1(Fsa3T*>_hW)i9RpD)qq}$bVsxXaT>$|4Npvd*7IkLcvjO9thA&D z23qJ%P|zN7r%tpv)o7+@L+wT$)}r5wbj;|ULbrULMvE+4NIC@o?XNz=XV3SpKlpy{ z`}N_j<#g}+KG-42au?>+VnnhL%||pJ5vi`f{^jWtPas4oWvwn6joyAeXTv9jmp6)Q z+g4dq%65?TxjWRKvQr7t1Go30zs~v_+21%m>gAcrp7rwisw?&Q&wD>b9ha>WhraNj zaIOq4_g*vH5@1F-5P=fQq81Nd&l0GPb>1mzeS{IhfRi>HY6(>qdvHK964y$-C0^Bh z)Q+Dw#Ys~v>T-FrKcesdRZsYLpJ;#e`Sko%-m0?J)v>MKT}=bcTg`h9Q%b!1smGZ!Aue6K=+L;q5&@8) z#qeqXzRc4VM|TW9Ahb?oonVK;0*5Jz6CXzno?Ma18+ma(I>W&)Wi_^DV6?OrwkD>^ z`LT~a*(G2U!=)-TOZ zrIpVeKM$ljUVSz?TR?Mz%r!DMVf$mwI%IB;xrt=p(im2+lXw>SMPwI|UmRA)>f608 z0Ko3c-#fW{A^TgQZnFLcto~p`yG-55{?^e-i?cQiLjKBuQx{LYJ@IWxg9r=;iF}4@ zv*D*FPuu7O`l@coo1e~jrJB07>Jj*R9N$ZFBh#&jElDRDFFcz){+gH8)R;feUBf0JW5U3J{G#od?}5n0?)Mzn09>Ju|*pej-M+(v2ogDa|0b5 z6$nKJT;>gVxS11PG^%VgNU1AD3lu6ch&&FCIbC<_1NQgKeKDk8SLhwFs|@U+9RM*) z<-+BQ20b_B^P11RBrM-T-E*#!2Cfml8ESo|z*5r$(^}LUS#O!&XQVH(wi?;-GSIh|uI zl94_T71d(_v@nNWj+=bm6w61C{l&*m?X8TFC8x5}O75Mni8vYG9|Me-2{+++`w`BF63J*||QXSdy>Cq6y zd1TKbKi@qb^~uGyf843|XmsOLgV6zz0KnY$OSivp4@df3pbw}1eEm57RTWa^coVAeod=xN@$%5Ddv!dbX`NHvYLthy8 zfjNo{OtLPF`exCsmuk;KyqDxL3mc&yME5AWo$#905}O=mByyIWFqG$gCKMrE;=W+E zEbJ_|QyTJ)HV1AVICv-dry|=jUVGkF3AkA724{-kX!I zpEcd^SR29XD%%g@vFP{ieHz7xHXy8sxgl<2(byL+9lx;h!is0dy(2IFs$&ZP0Q7b9 z=I;-u6uEnBZ;-ix<{Ihu0JF%>BR`M)LbaGJ|9s%*iC-inem;+o`bPA3@#-H>3n0~< z>~EyL5$!d=Op8-Z&kR|%T><6m;FrNJQBM+vhS)UBg2X;YUgCQHCcpfkYTK%Ail%Pv zuQUo@<`Xr3c`&D2d%zpL8E zygTF}&qAJCT9^o9>cy~Qi=LcoH1Ey8rDZ4Py2ztI2**@E4)Z)Ss_Of)>GNaDeQGOd z1q>AGek-$_In#w^@0%4dUzX_IfL&$jj`>GqvPfpIocm&FI)YSubHgKfgGALMWTJ8h-uegpcx0mvx^vx;S>8)3y{% zm9+)g_g~NxmhcwEwNSTG-SYN|MWwQ{UY_;xVq*qs{O46X1-c?F;)k{fC^xnYp$L{l z&`@Mb;c@_pyD7v~b12$gY6C+|IHG7H@~+?gywPRdmv7(9q9|%5l%qBP5E1m)yTE{wtS#jO zcHIY;PmPQ&%e(jgW~5L2r~k#@UZ0%3{*Aw>$zq%AuHQcFRvpHjGYtd>j15F{*Du}i z%&t!Tb{OIi(u$5~aq&K%f0ptuHK;Ks{vivGMS9G^!_4m{@i>Z`EFKLQYH%LIlK3;~ z<|!;}Iy2y`CAotbCr!|O89&e9dk*gydc}=PRdkV{xls%7P!*uz=7|yus+evP3x~l5-Zw=JV-D$o@{MTd8h%b0z$-mt)Nb zhDwj1vo)d#`z>*6PbM0UUH(JkKZtHl6=R2f>fEf~F4Z9qZYAiW2y1CJqFc#sFM^^C z!CiqR!xh1Uq`?@>GR=u1%y8z)+|F`4V4Uky{>03dN8i`hXccVhP+*16hA}U_l%C_Lfw-sap0YJ2_tCt? z>=^xhifte#eJnMfLqBF+!FxVZ{GvxMEWGI4NoN!zd(QgltgnXkpscI%x>@@Ve*lF9 z03`F+_czVzN0e%0Z>YP={ms~F=$|F`5ev_FILS>_hN3XUFx(Y%pP^OgHlyN(`LCIO zgIyim2LZkI{#Eav8*{SVUPLr&`(e|1jO!{}vtvKQovaN#c(e)KTaNa`K6pBH;-d9s z8voGCXI5S~e(w14@cyge*(tKO$lf4x@7&qfhjCrCUFtidE)1hU+f=M zb@{XQe*5l|;n_2(p8g+h;r)+>RA>55sCyW_mZx1BhwP<=CoV3%U)pwn!x$joCGr_= z?T#$wF~>f~kc3io74VJ1`$(DhwZ2mNZFl&T&=$K5k9!_F1w@YqflebmA?#G}XZV0lUi@{Az8Sv% zBNg80bcXB=GPlUwfc1~Ype@^nqCaMiODl^ga+7F?Eg$rJ)}@(Y&rO_aKUQ?!GL{Az z!ifPdq9u>lGb)R=FB;8_>vP^C1IjGH0F!54*J^Xb{t@Xn1Nyc^@0h#K;R;)s$Ta1% zkk4Cu;i`*hT67rYN5kYk;3D(Y&X2#3bU7}%UD+wYB*NjPM-fc zh9?k0744fZ{sp>tcJ%7#)!ugp*B@+$5FQdaq}h<1`1Ljj@-sm#mMq7)p+`v~ATNs`{86kC_WNricQHE%p!W3pZMkUjd0U(uZhmIE4O22d{k`+a2W8!lxAkD( z7OfJEVgV$WQ1Ud`fTPY>Tgt;#x_3!@k z*~O7i3(?$lOLshT4@!6oKyWm*?tlc$GiI84KS7`Iuf z4IJsX4DpQkQ|jhV3Qwo=mJ|*k3KRqHOYlXOZWz2L_z|HEz?<+h;EiJ%8aR4DqxbCO zYVhn>PDcrky)BNr3NdN|bjpbSJF@+>g0)ol)b11? z_K3NBPZr-gIs?MUl7i=xVhMTo)A4R|C zUhxj$uD~1z&axSgMX5`!DC+_B1$Sj`r_ndqF=J`C1@da9@au@*!bj zcXx93dPo_C2mr9Z`aEAevlJejI{N+))cSD+SQRvY7L{IBUY4 z0=Po5wCLbvFO!MbDp0(ygImO7aEZeH=2ct*ZxfdTE%d#F+ zo{;X{kHyKf?{8gq8_i8>-$=O4-D+YDbk9?GP272wmYExsF3SzpIQ0XulXxq@JqK5z zzAo7t;_K*NhV+pM&kyxWNX~n8((75<4~|FA*s+rP$~L*$$JAU7rK-Duk0@=Sh_S zLQ8CXQg|5(8QML5Illa`&~4Q;vN;~_uN4#9=pJ#r;pirVcRX%s7<)2vWFGmzgF!i~ zM4o3QFN^ifr%zL(000neYu>GIe-{+i*;`;AkY97ZpYK~9QkM%Wfv3Rsdzok0+B(&T(66w1Q=qFMzs}Mv^$*0# zfTpmV`TWGn(~h6l_)HfCE)~NaiYnRYYa05>s<{a#n&cjBM7QDfPS}HhM+Wt1qz02X zoXdPJ=;V0y6*+%?^!niXqwm*;n_kF+?+;!f2nz?N<#5Q^YvOdW-)kU>O3Ek%~?u0{}*ZC$jzR0hQuQAEil>?})4 zq#pMvPYJfv9W%8vh;`LzQ_Q~C8pcpj|1WUtKUCce!pl`-m0Qe zd85wH(+~gsU;Xuo|MI{2k9cV(pm=9Mj{x@%MSLvMW1iO2a2$vIFl|NZ z6qp%s65=UyOY9dZ%zZrT;8{mX0005Cj9(Y(xqk;nH^e8J@|qdKDs zxlu6~i)={vkkBDz{q+~svyT7(F~vIQ)y+@L^yKLJRy(JnQyzOZh}ppBd6dF21hiSyrkh=_(iUZG8EEbC2*J1oq(&< zuZP(+3s=;?LCyvDI>6V~e_-76-Y#~#Q=g{2uG-cJajfu$?D`o}yfJhi;4Z3n4DPYp zdA79TtaSyP{J_cQR-8X6yyN>XhNmNB?vS~G<|b@^!nnfr4w~zPqyuAAe2~ONWM`3| zM|OUA=*pinmG0jCcycnA>RzZ@sqVnTCqt^FUdjG8BCh$ei^G_GVBylo6YuA)8zDDN z6ncq*M6KQ7lX=W=keC5os20Ede8}^@>-J7>Vt63&R-#)0?nFG2I5T7(=rpn+%1Tj` zB8Tm9^zwU&(Wl?1efLTB?6Of`xB8tn@AdI3LRu2G+#eXw9n3W>1DhqX!0c4;3w%I} z%ik8?hA2HP)Pp}{D*eg$q(b)osjtZ%emqQF(d}|oXCaqX6oKU?LI68nb!^_nsin_M znwT)@`K%!fl{vzJ0WZ9z+uJGTW!vYCCL#6(Q^3HS0~m1hDe9fs9*BRy_Ui$CTf+C$ ztpwa+TL3-_*)$gO7M+{&yrm116*%vJSB#pZW9Woy2UagknrlK5+=^z)n=N+-iMot; zMPY{H&g#+SZ%R6e05)E|zxpICmItqnP91%J^m^|)f$4zAA;|_r%I2_`eK??UNHUJd zFEQPIy83sYEG94W?-btM-2}?KHF>Knqg~1O$orWv^61Dh;$1j?nsY1Foly7KtCmh( z^`hm^kL<%5U)r$nTacll?3~m-v#t!T@BxC<391A&@sO8{Vw3B-RL8QZv$~Nk0gw_3 zD4Kx06+nyRxbsALx0cXKz1L#U7r42qq9~S!P-)Eg=|aN7UKIKxEvPK%0a&2?QMH zD2!1Y`!wj_XoW{Na&a@bG;%m`ap;|_4+Uh@g6O3USWF;kt)zg zyOL@}c3+g>DAav~p%Eov8L7iU?N4;u z61)~@E!2!8Id_QeOx+EbKIMlL%8wyB)JD0j~sm z!)48osbnhTfU+TBY;&_b|6WBHhTrt?$m~p!bnt!cRqb@MJ0z4v1F0p$SQM5QDPtZ$ z@__gQ1lL^bFj+(J5aTNOhX8nFiyn`GA2B^3EiH7m(EP&Sa}}4JDQ!3uvM!2lFzBnn z+BWX;byF5?S$K@QH@^#~mFe$;zJcZzsVkY*BiC1!`S1$)=gckhxX4^pT1FynSnMjf z6L8JpJ&SKsd!3WF*p)H9w*Iva&kpq^K+E3DdNpZUsdQiF`^q0m(@AvvOmZeV<* z_7+B`(JYiN9Y3?;%<;41-jU0{;@BJ}gUoGv{X6A=5Wj-v7TH^5@1T7EbR5`|!aGw< zV#`1Gjlx6OcP8C9sHdk@y7|3vo`kv+>Q3rAt{xp5X?AAliGwGd$^iQ?ghkW~;6!9d zBMnD|m)J`fByP7~&F9Oa?~11J?Qy?dx0Gy9ToG`cp?jWIJX#n}ES-Bg0X%bQG@6$@ z&+?L$#pBgazRe?y);-qh%l+f;L#cy%fbNm{t%yemQU^l3wH%=hj<9dp_#vT;o#>7Rn7R zoOg1j^AeJTQGo4czBYhIPxZ|0@xJ5i;8hn)j(P6mteg!45X3hz4* zQs?tV7mY&iucmBJv?_0P-e{qW%0*Z3w%|JN4&7I5h9TU+xaMXh^u6e=6BbIIYI$1o z57&BNs$Wlb4ot=s#|-`>l2I+MijND z(THSt(5Ou^!qjlHXRd45pdXwz#iA`1Z9cu^}Xy^ZBcy zQF*7HRHoSM2M%!U`iyslI3lA@mR%v*Qg#Kue)w|m`e&v1e|<`$|JDEWKZg9L&@Y)= zfH?PYX~0>F<`z*Aj~RHIgSP_QQuu)JBSc$(b`h^Z9FRCgVFcsQfa-`RcX)D}o!<{n zk#RGY4UEZ*<1Rr9Vi@``0RRxPrKConVFe`|Nak~-#QGPF}l(+`^EhK&s4 z4wDF6Fb9GSv5$ccEnD_x>FJ+JZb~(mDh-?a}ZaJ}%x;(d&%uTo-7}D3Y-|%q9@Ea-bh3F;LrAXe4%h5z+6`@1I z3PPLrpH^>iY0=vV(V@up47vHTEvu$1o3gmBAK~R|LXlM~ zrS6@&ar-YBK2pCb-Q&bK;uq0>K*Dn#PBK5rjVv5<1a}!dO0*T=F7=OK~xJ z?Ct9aUmEvJyEA2`hyBvVQP+b6juqVv+#Wr;G1TiB76IGFq} zAHFGqFO|hl!s>exBG_WXt`k9(?=F zgekhO{?T+=3cV6~CDk3;eqO;==zHvy5ht21dtW8-!hxmtvtSodjS}SHJI<*`vOI|e zrNHE_FPkRZd>yf@o!TY0M(LJ=yA0j)_(($;@Z92AWFsg_nwPxDWghDF=+(y&eLH6P z#qZFwsDr;A}4*ATe37^tnsAD=Pp@NWE2D* zZ00rJtfqkEt(Mv- zb5$&RR)L&g-bP~xOtB}v&8-<*cVbZG=z*y%ueV(9d2BP*7nv#sW;}LnH+lYB7-vn; zN2hLXK8v&Y(W|5Hk4_zf^1+W-F(C5k#rNBj<@W|eltd!%$4qI$l+qVJo)4ZEjmn+` z%Iaa9Sl$^FV_S%>lzXs?6X@9?-~$93P=A%9PO3X*cb3oURNCUYeA*U^HlJ@S2N(@+A=?ki`{r|v%g0l|IA7k{Bfq+e+!WxHt;2B5+U1fv}#iKv)81TjXfW zOkvkTuY|s5^}Eb(69`HUHO*{rQDiA;m|E<1ASlbvEd9X5SKgmsQ;^z^d>X5IrVb~% z?J-^pu;G3y%|>)@G#9wT?iwo6~txS4Rbrm+&BTy(QeP|gMinZ zel6rtu#WmPniQN?gboN}5AT+jA2ayPEW`cvr*1e_I30aoTWkAZS`8D&jtoLRh*DZ6 zQUZ8|*aKmYFkBOUKxm!fV+yN;qy?3u3us5&R7_=3(S;VLhMwuL>|JU6QSzoL+Nx6J zpe>8rb_2inYfYJ3N~2xx-~D4)u&D2#y(R9RoBOd-11Ez20ESBzmeNh~Fw8Bd0d*O! zu|HPwQNRZlZ&-X6)z>0b-oLitr3){#T^x=V5lwqNZQD$nmczps9ShrKt!7PcZ-CS& zt%<#dQCo4LV-<(59Y1yA-0{=Hreh!cc8UtQ6*RZ%{-5VrB=G^7TVz(qtpY4T_AIi~ zNSBG9c89>v|3YHRNGIUipj{SwsUL*8mHHk${A9qqR5x5b2=m}jVdRCy3yT&GoM=@7 z{4AJxvcte(6iB5GPKQw-FA-!hU4JqkF0!VvUDK+5Yq}l9k0f1Z@LqsN7Bor=LuY|Z z5+7hGogYq4v%HXb5e55ZY81uZ-n9Bk>G$37OH4Wx*2L{ZtPuz;DlHxaJWg~Tj3`rr zv9|yKAOJ~3K~%>-%*AEJpJ#Lc{;*{l_*UT|zkz0j>|KBN&&IjWoBOg`W$KU{EnJ?5 zOgfa?;4tlQZp1>NrG`uE$0m(CG3&DtWB{YUqQ}R_5oKlHmz^pa6+yHGbqqzEAaJ4E z_Yxmcw*&n>k6#by6%VT%uc$vFH;Q6x=^P9eS}YYitJ&CzoRkq`mApwk_Py}^z`2=; zGtC_KJJ#-ayA$CcP?xb9fw(*m!-dGFoJ@6$x7VMh*~!uON3ZIjckQMns0}*9e29h6 zb~aiLh#2C$qH;ilx&HbWO|gP+r!2P_P;HM4D(jT@Br)5|uWciFVdXV<$u z`RLzr^qa~yO38ll>2i2lG-|Z32m3DD?DBw^4LBqK0}Kv>;26@9^m*0{#__O|H)0azqy}32STZg|LhM=htKj><*ms&owX`EwwX(P#`~PNl|1;?o}G7vYzxsB zV)gzff5ILiOeyc1^y&Y5I+|DQp{x&OdnlU&dv$vGxBr7*PMKc;5dJU!!+(sb{|AQ& z3Zs;U7FGu^d|=bt{A`_{GAxSbFv3jQz#Kr1I$!!Y!>}XxKuANGO|i);E{Q2%U!^^H z_@rb`sFlzw>~|e046g#04#Ef>j0)OEoH|dYmR)M_O4TEZmdwyXhe6-W`u&M*SqLjh zwjyk~-STdo={=8{^q%$~0(n)7$I`o_#i>xb(BMk2J zc~h2cQPfp&ySdILRR{;8?!CSPW(E7V0_=va8=D0DMG7xiI2C>-!?3WKu-Guz*GXQ&FHZT$I>*pX~KOPIFAk~Zjrwu zcI(-~iBrqY96vpF2rYg+&TOQxPc>=>zF*CjUC&Ph|`i|=dp;xqiSNL6m*sz6RrxwnYDFA!n!aTTH z)YAx2$Z3!`NaO{on>%^B%#z7npLdOKn!|q6VY-Lzo}?9r_X4bVI?yn3c<$)Lp&`ji zo|ml1WhSz+-(8naPAe%I`>?+G2dM(a-bK4geuM2=fQCh-P^MAk$jHZn(mQ7fy>HrI)!SnT-g*o|TG@HJ)p5 zs{F{qS-H9gN9f5gs11=YRU>)zPUssE5aQwyJ8cYp)N!rx526jUCz6Ls;qDQdo+R(?LpcS|Hztm zSvU~iX?dc>$%7f2$!~V>S?~*BOQI=lP2qrazKA||9)YMhH4GtY5%HkCpD>iGCevNk zDQ+ADDWQa-jyPBvH8Ea-Ky^e7@io_b$ICXKb=kDdXKg-v>@9fy>uo+)augwY0+m!I zYfav2{?!*JxTtC+d(CwqK1L8R2sqk^ff2MJp`T6bVX>VI+M;;>_)dKMn}7KJ{D~~t zzPt2SpDsrid8_hHXRYB6s{!D7XR=m1Mvf$!$@od$^@V5)ad*7suYM4}tx5c`Jwp5C z@1GCnWqT~!ec2qv2Wk&XW}kn*8*LM^u5#ZfBoBkWL9#PLxPLRlbRkXYcBVq-!1@pPI6X_;A6yFpxS$N>&9jEs~_LAy?o1`bB*?_PL zvx-oB`^Dh$PXPc-^mR~o_g~q(R513+I}@XUz=Ax8D&~ckB0vf@fUOZ(5w;kFejC*@}j17T*znjOxCuH&zFubTO;A@hmJ2D zUpjt%yt^(>M$kPVyF&KP?mp#AVSA6<3PhLKsf`t`UPg8r*)p<|cGJrje9?9XW0@Ol3;$XB`s#tmX%)zCL^BAV4AAoosK^7zq5_*Aqvn3~s z#DNGZ3q5)F8IfhDRb%ZMxHXOs4Bbhv;%Uo5IY=BO=04Sp9I%qa-f1qK5&2@p_73faD6>*QuQ-H@oPD4Ib z_{0^MC;fwpo6QwlDYrpkmL@Q&l))B2ESI57cG7k z+=)K|fu~F*VM1nH9()!(4^c5A*y&3i)v z1Ry~eNU#w`CupCsw#@2bwjT}d`dxbUgFern*z^Bi;eAp({~lmq$%!nB=1{eVysOLR zU@>W{;WjTenOsSFmD=0U@C^@NQL~Mmk8Vh_5~2dcDw#YT|Hg3spZ&F8{q%|d2zRtTYKk!Xg1M^}yFS>^!U-f1%Sy z#+_j|AZ;un8}{|oG*jJ{&aFA#intMO&-<-VTOK;*9PJYG6btH51!sk=a$N``h|QQU zr5|T@%tEQLs%f|9@qxj&l09(IQe-OWi>#n*Ko~l#XT!y`sGhbFRJ8ZkpN82<<8|YV z*1^TuXC-;EuJrApa>PJ3ew*cXigmdb~ zd6;BA%PlnoHZ(Ok+huse(jAL8B)o&V2mU;S53PS@!}54|7Rg-cNw0=&pHkQl!Es;2q& z*SpR+_uWr+iy|dPk{^Nwv;`S*hy)2dhysBK3<>Zc2I5#|qyRw_2nYcs1HrOk1T=(1 z15Z3K3=KUn3_~ztnT#lsA}`t9xBI@%IaPJ)vES>xGB_=Yp_(nlfDkxqR8?!?L!q#1 z|Mve|-}-;<8o6t?`7wgCVnro^GweZztgpVu6`J)hl!nKJOu#MPaiMt z-n*6f-0slTS1Sp)*@*E{m@NvU6&H@2IlOl8EasIRO8_4xyNI9)5U2ipjIcuP@M``;8h;#n=juWGq#r(gK#!fQ4bRfvhaLaCv3pVnCBoudS#s$`l0D-jqxf zW~hdt=tpU+6~uE8C_$eKI3|!ML{(S_V^`CQ3X776DOKp@`-?}P{_gMdkqYnZ{592E-5J#xa`}8l zE7h4>k(YDoOWha9h{4D%(%Ot4@FJnOV|FX-hT4PWt5IGw;`JK8au`a=-v++KmU9cZ z4a#_(lZu|jWEe3xKmjp!JR2Qadc2xKB*%f-KvIe*pz{dbYVjL?;r28F%sIXD_2ukQ(T%f1Th^V}?Iw|O8?a9RW|#v>KBH_o zv68l>+Jj+u^h#Y-U8y^*x9@-BPj#aCK_C>PQ-jM--d*d3?A@)%<8@P+oDdue(P?oE zeY|_8*J3Edpm|@&-Q~M~rai)(_1G0%1K$7Uh0;aW6kT0)Cw1CYX7rSGy4>sX64=9H z@j~Ed0)9Z_JKSwzn_#Z6EFdajQ07$8SfqmvJLRAA6fAkmfmd9*7~{Ehv%gs3U;VkC z_;||v2LQq^{&$~0pA2`)#LNbVgJIQ(SQJG-x0y@>+zkeOpbH1z=)voupW(C+o@?u- zW4{{fwd+_)JB|)K?YZCc;ULVB#hyD)#y~A2Qs$!YmG-){6*Gc{f`>}_x%5*S^+39o znLSNgjy@1{%lIgT(IgaFQ_AZ7+4^Bg$%HTpQTxHyz`Zw{Xu4?XFdX)~1a3wiVWD|jNj-6net>?Isu6uF+-aq1!T_dvRf!(EwHB22VX z!c#+1r&%lTUVt6TFY|Dz=p~6`8XviMe;8g3@SgMM#;r#)>&>+9JVnQ;ZHv&Uv5!}w z$^jlSIHIt@ejn(8hE&QAn>5g>-~U|;-OHD$ocf-vtJpFgG0!e=q=8~JOFdH$vgb*2i;mF#d zm9<4;4`WWO1^-lo+K(?)UfA`|cs0c1>a@aw?!|}vp&9bpjj;Qiv z8j{570ikD{-z~%=f7PBp`poS)!rO7H@F0l5-C%!ZUVK?iiR@pf;i~AiV%V3?h`>dZ z+EeK>j%i@U$fgD_Exa&c=D~U-^HDCGm;`fFLW=CAvxOb2zSnKXVs-)r1`>wR)ll#n zjyp8e+3v7?T9TI38 zp63|AeFi6-_PG5(=a%@^@bxI~p4c0EH;?L*$*-U_i@Dx0`~f%pi>6*2A1K$}rmugJ;Pgn?w%G0oX!NbJtkJhH~AjRWBEVTI`LB4}PSV z^Ioq#5&L)kVEyW+~ltxg|8X#ij5cJSXy{@h-ICN1JpY#XThwJU1dLm zz9Qgf@0*|d+*{yd$A17I{9pcu|Kx1;R51(V80h^TeZmaq5Z@(E3k$Wei{Z3%!`coG z!5aqmA|AQj^Kma+OHxwCRHY>A{McQ z_!`h1p?gej2tEL?P2n1VJ%G%S8H`KXYo6x9N;UAAW9K71bMV~6(uPjZQ=uCI-SXU) zWnbvFD7U8<@r^fnyK`m}%(XqeM^Ve;wzTckxze)~?!)+ir86EDDpb;Oo^a1mD{(FG zHk)0+wk*G(aRV%i=7F)VMtIMKJJy{KcHTBi7qzji4s{uh^k7P0Mej)+;R(bYaMuJn z$1eg~dwzE?7_2_!`JKSlp0AEC-z{gH<~{IR?5?5Pr1pJ^YUH*FPcmEiP@u`1nXMzc z$n5;I>*d|QfW-^|fRg2A8=ro8F=5>8#CXl@mYtp`&~dX3q;zyWhAQ%V0j)z?$FN9l z8Qd!HA_^EejtY(AmY$sx=tMBucf;j-0Lv!&I{7_H8=AHPUGaQF(@4O|;kiT0EGCGR zL@80^{L}a9TB=a#> zjy!UC>C$B2t5MEO1VVC}1CL%iBaZud%DNv>j!s~cM#wAsv|RD)5y6~+$)j+0{0e9&UleA8~x>u>goj|C4H|LO7H`GY$T z-Yok@cTF)gWqTx>7YhiAzA3s!*r8|QRLzb`Y$d;v^n=)5&C4e=KA~=(2Z4x+dBRAM zgU+T*wJ=u&JZisz_}su(d$UgD!5G#iRBf6zK<$BSuvi9j9>;n1lQ_&JQvxeVdBvOk zlk)A)eD~}9|EFs7fBNNL|1n3;;<&WKB)B6*I{{A2AEeo{@x)`pyv5c^M+lHvbE76< zQiQ57B?*dzQuwKI3myxL$Bv9A=64*vWcZTvPRNcXTNS)0N6@`RRHS{7r{(&y6|ZkBu^X;u|u;eD}qsE*(u+L>-P|s zgB_14oIu#3wBz7fz%9!+H0p@v0j~m`W;Q`wbB*k{ID5#HrdlQh+xNc$&UEiyTJzF{ zjqjdf)ZJtqSC~ z$Y06+CEI;xl8v+{J#-=;e^d5*Da2F>|PY;rNS>++zPlOK0~mKavtQ|l6BClk=+@1 zk%bIILJ_h}d8E{uH}m&wWZ&zSTi?1j0e?r2dlsz(ify{4~N@F2uhYzW6w zY7uuy*`Q+3G0>D8#h#>;dMXi1qYAzDy|g_aIuSC8Il}~@2f%ugJq>|{KwO9?#0>LC z0AZ(>gIpXl4XalNIqURlP>b#U2EXx_5=1yAHCXe_uRWOFo1NNQ7c? zi?SFfF^Z0gx0Sx~wSWB+ZCMUl4pM?Y1K9o~2-X(Nv#eC6<+cj0(fl*7XiIu z<7$j^8>?f~Eh@KI(VWiwxb(xEfEkIJz)~WvxEZ$9o1aJ@_6Pmrs!`+;8B_kwSI=}& zbUW1_lsPD~N9Paz(%=3sKb|swjv)M<-}#+?_z(Y~wf6I$|NJlh;xB&R>^twg^QA9+ z>C0dKGRF94e&%QX&fobvob!*2^WXmZehs>;@yk0yKh#6QG|wQuP)!Ug?0qB&U%xqjdAcW zaT-XOR1t-Yp63(92S_)F?qRwjtif=f^A@B-M$+ekr3>aNZc1*2v}|d`($aGSmM#`H zHi9;V?zJAv(iYX;Hu1shz2--1+qmzqzK#_Dc8lCKi-&4#XCA6RL3{|pT^83YOm(cJ z7bKyM!B)BkU)*I=^S`PIz_tFk>u(TWF z1~3D`5ydS?!Sf4~iadGEvvpt>fvxM~K<|DsA_V;n^gFlx1{a>h8|Zh)Un9Q{uz=!D zW@m|>C$=7&$SyvU*+rtOOyoh&Z3`tHj4t8G@yAEIfOK`XyNX?ax#tMsT)ln>@M09K|7kS1>EtxW68t3 za%2|pGVuyB9ipDDHP=EZQ55@^-zo1tbZIx(7o&UW-NtrLF&Adh#CMg4y zE_qBx#7DmHXkp-mk1Ly}qnH~$bF?Bb(i};5C=n^_Fd0YP4gmNdNT492lwsV*y5{+S z>=D|H$j=M>lI4wpHzc$;Oruy>ItRtliPcCi23AF0Bq=i^DaLGYGCaD%`Dp-4gB*${ z-W_;f(^QKzaMlnIXDe4u(qtKBWr5gSJpqgLZ5p!;rXG(yhC_4`v5E+8?6Nv52(O4L zFt3PASI^GBXA|iA_c*`v)w}oKzD;Aw!RpSS?PiLk>Wv(nuzn!WOo$PK(L*5hV4kxg zLvSKtNBy3Un*`9PAJpvChQ2zYho&tMy@$P^mN1uv^(w|9MHzy}DBv8Rp$t%HL>!dw zcz4t(aqCD(0Og!L1TK;2N%AZN;yq{(wKyG#AB>#VSlij%UabZ>8`Sdpc*3v$_@Gyg zNR+Z1ZG7)L=f!$*Y^!F_-M~++N|?Ba5&$rv>`{(^LdVId*r3HWTl?@~Jt_M_bz0Xi zzV+`>oC0%}qmzRR?|$p7x+6!cJ1YmHddu5EhGZn~3T`An^MOUYHzjiU1>!B;!lODRFJE^u7(RH#sX}wqC8u*)Obt%x_g1o>003ZNK zL_t&sEI()IG3t&aN=OTY3J40|xj9a#lVM+k9S;YP*Oq+3$8(b|T$r`KFmQGRqTeApFW#zVg#Q{nNkw+rK@XPJjOAfBx_P z{lEV={>I<<-UYw)Tfg<>$&;V{>7R}<{?ae~(q}*W+28!l-~7l>zxhA@(vrL_!bJF~ z3{#Y7Puq^T1CLt@UkG|4q*2;SYAVGTC*5gU%$9mm5UernqusoG9GB;Pw4Jrq<>Ay| zq_YRu(;|r?2$iEqHNuBXHkck^zNEZ|V4L$Erd<7Kox4lvsD9Pc`RzwOTfJ|E4(xcM;Zv1_z%D%UGNihksS z3D;S8koG9;Vd@>4M)e@DmFIUnTb-JWmu~?%jfmvfA-}b|Zzv6+yGDKs{RX;i#zm&9 z#LhEajRV8eSCM{@=_=9lM3*;DzIo@t17>#IZn?dIS6{0X=4Q+6R@f~cw-GB(R}QZ{ zS~#%wR%d)K`e|}2N0%O^T*=5$lo*oaZ=Ov`Et3tV>FqFhe-lkj;FjhshZ~;vH1{OU zJz04?Np$LA!HZI8DYO(?Xw`0?mJeSY?90Kv7~R!yd<>Zf@dkzyO*M}#0bzvFpfccT z!qXTeuO4!CSF&@>9)hcF_2^UIz1|M*|KaSxn<$---y?Sg!wtCp>I{3`Z=|WEsgeBNmzJLOeC}xhq)Jpon6g7*q}dfdR6Z^& zh9DhzU$f!JeM@sA$UuRw=C-WDWZ_iVY_|FQl`hyOj(xB<&Bk%wMAJvh5iKxNK2M8T zMO1-VMI_$5JiGtNg76O;y?%tn+T)A$D`N1fH*&D_@>#`asx!AYYcUur_^6W6qveC+ ztuZf25h18?ydh!FhbsudAnvy8m72ZU^fRd5N`8X8BAze{xC<&Im7=oUQlVe-eJ>TuBOt}rjB^*ZA2anHmq5H1rYu&f%xG6%AV?PL0YrTc(G@EZYx)k^& z%O9}x1P;%5;D~61O9+H(D*{yNbUMhelYWQbnS&2qzH8&TP4nKC2F_|w9HFYQn0s>; z%^ZXo2qgu=9IN$8N{S}}6(VB%y;Y+qWc%dX^Xj~;Z}hNN?U6Sxiabht6yeC@N#tXI zv?tS=P7bWNX8JiL?@D>4(2{>zwisc zP*v4${Kjtp0RGWG`bYotpZ?Q-^{@Wb4_f@s{@FkK!WX{q-h1zTsZw<0A znmR3!lBC|RSN97-N=y~O+xNc)?!3}Q(*-kF*VawS0!EZQA|4k>>cCWXGPaQ10J;NU zLwG~r0iqj__c`q{Kmaaim~%I0UW-8r$7WV6JzW~S8pG7bPOwIbPOAoGH(Q74v@dk0 z`H2jdyKmtMkLDV<8|XLO?5Yr^E)^c-a398V7SCy(DnAi{^FVtVTZvmv4jk=Sz5?S7 zCv7$)+GX^2jJY53xr=LS7skzpL7BEKT&sOo*ny3GzR5ZSROfU=X%Au-=qiW{&sKq5 z1h#70OfNniu!s<)Ji4pjmlZ|+2KsC0cVK*p(8(?1kMhvx``Hy0mx|;KI2gk$W-ClV3)^FlZX3iV`P| zqQDr1aC||VGr=lA~tr}Dd3RQ>ev zfI+a=VS8~`YQ_HcIKFB1cXCe^cQwC^c+Tz0Cxq~YgR}L%paLSCOF_Y#*a&!Vmk~0D}w2gu{*w)Yvfi5pXoRGWgQxg@pj5BkvnJp15lmsA)DzS*?9hnaOn59Qnm3 z9Hd>eO&I&=4(-lz+IZ6^%Mn#EPt{aoUSU}f4tAS6ci$|DD6qf~fsZm2D%KFBUfgflqnf_fnFV04 zQ;(@hB0w2}PC>?)K@KEm93T!nSq28yA4?F08<=x6q?{8(31pjah$J~=BTosN zjCz<)G`0rIu~>I%G0NGXmd9ZT_dh+#`5@<`oF3o##@&lIVM-VO$k!~y*De@>&SEQqi zH{2aDT6yr$^hox_A?kNoOx)g`AjHEOMyyJUw-?0t45p0 zUtipLTQ^7D9d*BxeJz_yod)3!!q*}nc{)W%J347dwP)p)@E5%JfYTRR9dzZ?Dx0|0 zt1|Ivpi|F^eYYZOW&t({*^EMp0w)fGKv5t9>mPkE{?upR{CHsfd4cf9fBeV)-rxIs zKlgJ#2mVMMo=&G9wD{M4?bm+ycYpU^{EL6_k+XmM@BZB{Klp1u^bj6!9q(!f%U$Ufr@CI?JT80`T#g1iOkn2|zx#{H7HiVuLEs2`4qFauNe>L}fW4NeM$v?U<*-Qp?l{~{_}ti~^~+(L3?t2Tt3y-zUYH)9 zoN|#25gkCTVcdZfg18gd(zCO`&iX!~vrl_EPmlzdyWLZ%A_Wa}*C^aTzlG)srW%l0 zqKiz=oyBCStDowfBaC^h;j`f#3ww_Kso_TyW zdX>nX3>G0SW0)tu81XbIodgaXWd>sXvY5_9G{HB)G<8>x7#&gGqkN!w!@&&$I~Ehj zi$G?9%mSPuSzw{45<=##uI@aL)zqY$!CnsTWq0@%;68@~2nQTbBsMbl0OSE`kF*0t zVhco9m@YUyXZ#Mh@fVN&GKSyNHt5k0!!#hb0bxJ9_)1x#!ff?$EyukaPjc*JNHQuO zsdQL`=rOfK8B!TEvuWnxU7uznpE)*lbQ-)>jI!XBH_F(et*2&$IC}~b0X_^)kQ?f1 zWNwhFq1o{KqM+9TY&bZO(4jC%Y#G!v@VRG;k)DrYl7vo72O=Xt$)W6ca5}}Q%To(H z3MV!+Y&>ya)6@xS1hYlqRoPEwhrXd_ubGV7X!>Ax$Cp7DZ7^N5LvkX+iWMah1?DA@ z1!DNPU!T8L5uq{15Pe_j^44OF#H4y7MlS~oUp$+MnHr27o$QThM-h@yWKhn^q4QU8 z3L|bZYEj;!bj0Je2z5fV6|Xe()jBMrcsqqviWB5H9<#_)x+FqSDaaTj$`L1kJwkyc zL(NH}Bz@1V<=$Z*Gx|`~MI0iD9=k|mA{M|F_wDn=139|t*p=O&F0U%c#Neq7BqWqFKpCe1a)<iG*QlY>L!SRAj-I9d zMa7;`{{eLZQiYK6rX*13QRYs^gYa9HJp|`5-#7W(*r|i(CQf=#)VVl8HDJ2(W*y7~ z#yRvd46{mcL8PLz5Qoh>)3^S34;UuUJ$Yv_zgIMeqP-ErNgSV-*$I0T?j+)grvpo^ z!^MD$6Pp~VzNF$MmmhF`tz@mI9pp-%O@SyQokq@g^@Y4M9SO4;*-T8zDMdvRhmoVq z6KtOp6HHSh(vimo?cSMEq{f3957N|@mGM(Q_14e-*B=k8KQ9nIc<|s$U;5I|{_M{J z0N#K9{a0UobsR?_#GhRG`@jGDpZ)A-|K-2@mp}GnKlUeQ0RTVs%l}(>_dnLatK3o4 zCU}j=0kZ?aHH3Qr_b?tH=mD70xMFU~jAo%IEEkTi99vkj9MjUJ1kq9PPVxq2zgXL% z9F*!LyX>C!B{tkey9Z&5{DGV6DyE5xWk@6}LAZm`nuP_Al?sLM)Z^SS*a~#y^hEL% zGDnVw?0qs-b~86V2ypGfnRQEJC;c$Gyk883jo5BXUpXOS)wT{hcB zKllme8}5$6Zt~^Vt4avFB9VaIk_Y~aFyyI}k@{z_Opjp6kk0zOwh?R&lCMDOY+fVPm z37GHw_2{p<-8Z04F&;oTpmajM7P;qnu#j6M9V|W2kgWijW3r^|93Jfa-cKqzN8q+C z)Z_BbtArpF4#@9NxUt)BEJRe}Mwz`Dk78^J?^wVxN)ZSTfX8eI8;Le(V)5LiMF1BD z&K#W>KDCihE@|{4I2D|3PL&H2+j@dL%^3q5$6A6tu_x?m=x(svX#7&*jQ}?+-C&0R znnykjd>-W7@zp?*R8HYmPpxA4(x zqoAW?9})k(KUlo>VSJK;9D4BnH_obMF|>MUwdv*VWd+gg+ko(q(?(Z&$@ZLFb9}|& zQ#iiV|&zh$og$ zIJ*H)S~6*<-VwRs>N(?2CBKp7p72y&C?w0or;$~Gs>8TutJ#Q&%h+aYQ=%v`7&wXy zr2c(9)-09ERccb=P&A^N*~BdHneC=RWtjfBcXC@eiUP0O0NF_gMMALnvuj zQeO!-6-IHVwOv;J&eGAv2o@e_9~;4HB^rWUIkD4e&_yT3wQ!fGCuXT_IA(VP{WCmV zO=2i~C~u&O?A34&zFgC^;PDO*Z%8k3f&JZW`@+?R)8ZxDPr9Ra@9R2lWfT10V-}=GiLJh36Ojutw`oCM*La5s_j0 zj+hoG?4jR6f0NyF(*7HKIzl`pbdlK_MTYb1N!*Y0Gnt+Bn}c}tlOzLfcHAHE%deLJ z=%Hcu8_eDayQ9OFzuR~+@p$I($_1UeivX4}ywQY3@>9zePEI37i6cOBs;`Tx!f_0) zv%YWp_XqOgkmJ#(n+$GL-ZQYHDT6!(&yb^FHbjr z2!&7a;Nvm)gEb9-O@1~2kVd2}(jlwlR*=k)`UEDc*aEWpbfq71{Gk_2{q*tV;U`eo zL%)Z9=ko7Yr{5{sm)zc{;mEtae$PplSP~*K5s>gHU}~_mL>u(F%M%ChwsEoLQ>P{- zF(9T4WFDP#R(U(=nwjY#bemmF%aJZE`^zVxBhwLU4|qx_I~KhPVH!YXVML~8`v+2jLC(hIxlW$}mF| zK{g4efPJ7T5f`~JqIaN0sWH491?D;@KO+Z6;GpU%q&G{@_z$^r{;tOv)1(ZV|(4rJ{7&Wg~x~Wt%DX+R6eEo+;DI><^D4ptb?jUN^32=EhdyG7T}%IAE@58g16 zj!JlnKPojkPS0il0Fjd#x|!+LS5MT~tG>}=hd0j`kN+<@_PTFLaD$M0M(U#2bM{=~ z4TsO~<4aB6r{!}Z0i_~_ic*!G0<}t=3@7RL7dhV#tLX0eydK@TLuWRYO{y+|J|blh zU3j~WW}3qUg|+X?N|zEc!I)0A`4)fUM*#Rx0UsZKeRcme*|n$+B#dv>}m-u<`I z9++=rJn~et+*zmwS~jHGW3l1txmM5Tla08$D~kaLR9#FGuM#UGEe`#HtR( zifM7~igJ{^7Vh%mLV+UyRtVJZKRli)5gwR~g?+3WDVd33!Fr{flYMR3IB8Ci@#^h>b$~P>*d8yLq!hNdnL6Zez<7ysld;Nloygodj;F6>y2$h_lX-n` zZ21W-3TjWxAGz7a>&KNQ!fly7aI>SsHIGd~(vd|#Gn=Y}*AXmYT*NR(F<>twYsk-c4Wy$iXsLs4JUwc zS?uiq&mURH#+16~PW6=)s*AQywvUcyP*ANgD~Z&Y7ntGGae4Nr#6n}H5$~V=;rBVq z%pU%b@7$Gbub@LYM|SSRHuX* z@p?-icK*Wi*Hc{NG{Hfj5r|B=Pdvoi)FsLxk(gk@(9-OPYZMH^k0KcAJ@FC13{V8w zW#j`%5!%3GLJq(Vz>cJoW!msbSFA=cIgUQwearCasAhwhIaW5$FV~BQx11}QUTild z6k>GLMH~`}0Kf!u#5qI+JVzELTa|+reJSdyydJmU)gS5$?I;5u>m7PKz6(N>vlyNE z&Nt4NkK|~@=w$DNapZ8QG7*Cp#u>o|ob0q3B{z}{n%&eJ^2+Oj;zlwf8Ti4e%iC&{ z;Sc}agY_L{20e7DZev8)c9?gY8!=rRp2OZI|>4~XkIRS=2b zDgtD-GWR;3s6Ub%5Lm!;9`f1fW)7}xn)In`LD3*tW3ljN5!?dU2}n8&6U`;ZN)W1O zcX&Gep&$8fdv_Fa|Kz>1$wIXU+0}a3^V5|APP!v^jff|fPCPde(4I~@TpU@s!+a~` zQ_8neZe`I@k%~JC$||ucP=097#QDUM>4=F1$R-$bVkiofIKsHk;|IE644imsc&yR> zNyU*IPii~}TSvrNs=O>liY!VFITz|gQv+Ow;*p>c;2Mc*UfvLWAjJ{O2C*Jd4WNd! zAewtJnLa47)>sx;$IIt;9(_jP54ryT@j1eO@=yNB7r*$$-}}AalT!Zmzy8;M@+W`t zSAX?a0RaEtAN+%#`I(=2>#et*K7IOE{>oqZNQx0tvfet`>3c>}5Ym%2dOnJ~e3Kq#gVkcnDaLw_a!aW!*1~yolYz4y94R-=u zdcU@QHrm3TSU$Bn4AS>JF4=nVcoM0Cd@I57YBEnQyt>GIs#i-z+p`ZqMvq z*c};mBGwTrhZh0OJX(6M6JE!(h;f$u)T5b|>&SQ%2%;GJ8!b2n&c@F8!9;TkV@*+w z@(s;<3JxsqS+X!s1D<;_jj+mW0+}L`3#qt{-J!a7Vc~8FyU}mQ<9CpVDI8HaqSTPk z3DBb)4Uz^H0T(_=EY1;~5waxg44mxZ{$DJ}+3haf@#(j#^E(uE@c-uSO@3|7(lf7j z_08Ap?woU*xDhwn%#7^pDjSIzLP!Xz230~9Q1Sp-zaSP2a#V}`O?B(loQ8}#Z{K8q_#<| zlG+A&HS-lJTVxY?jiio6JQ-me#cOS6Zd$4!f&&Yo==^EmPfRfA;l+`nzlV{4cJq-Z68~ zOE4~w7thvet$omQFteBAY-4f8JF|H0gPI)P5}OO{p!BSC#Jy5wj6@IOy50I|@NctRRb$OQZ9;^Swxzl zkW5RaC1nOl(uL&E)N`$8tB1CFI^Xd3zrR@f^<}cP;JD{! z3G#5PK$s;c7oCfj7b#nF;yp?$1-S^H9xWe){ocv#O@v zE|Z-{eSB3FsOC}mWi+;9aBf#eE%uVVQuLK9Pl2%qt&CRGD5fl@jTw(m>$_x`0yO0K`9~Mc zg&EJ)crdOP=a)4E9nLCtDs`%KGWUt9iMJE0&!W2J=0=)lQr=p-*VTbZ+B}lfHd(Ba zY$G?lyCl1nqaqOIGRfsjF-aB11{|I?EmJVa+^ck}7_{*K03ZNKL_t(msb}4bmPE6h zjO(J%6H`G~PB70)0Pj+tWga1%S?(yE2tRVW=ha@;M_!$o>4})Br~oV#4YR_t_2%t{ zR~5AtGc~W$^~;BE{eb)|r2A)5GtFW7>Hm6v%hd8z`WMo@;^Fm!i*Nla|JHx~&6N2U z1;UilZ~fM9{m~!&k(Bbo4?q0FKm5a{X#n8ux8MGQKlp>+_>JHA-QWG)-~avJ|N8%p zF<(omf9d+2-}~==klxgJty85@7l4_iL9;>9lN1M823#U3E;|iri?I#!JuLTq+=jRc zOA`(m#-WOnjZOzI76*IODMMf2MDsZp8s%kD_fYJTyiD?P>L;;#gj68pOwb)ZR~4se zPvV}YBlsJVM-bc0w?$lLu?q{~yKfhMk;SfvOZW2G`oa4$3?dv=*yr0%Di(F=mD|g3 zl>R7UAH^oobznOryAVuaS2^!eT4!84whelhjV=NxK~7TcUxAS+jT8Dgy8-=~lOr!D z4o3;MvYZ7HfNkI#WUI`Z1S?)?A+@TFGG(~d4=x?uFY(5woB8~N3P*BJbH{L$c~E)D zggRn8tuw7-F;rbqz7gV*%PTzN_VW9y`pvJqQBFVoM;DLok#r(yFWfbI^%rYijJwsY z*M8Q1)<{&k(=Ca_>?w~zJ6d_Vim;A(8_2`J*Fn^guVP}7E0vRqq4rBVPt7tCnotnr z<;3HWOr0ht7EjEdX}VSL(u%z*2LXE#5`k3`8`PVmR#9$)xLibCR1-y&S)E85G6z&C zS+bSusfo{Yzb!>8C&1UB0K6sGT>H&)3g4dSzWyOVCR+OJH$! zRb0&C)q-;N@io*4WQ08Md>~;jaGJ%#LA*1uw;XvK{hF|QfE7zhB+5h42zTdm24jW@ z1c4!gAd3^|r5{X5I(e2N$5LnpNB{vDW`>b^5Qx+jGO^MTvdmn&YWI~^x#^ZAKlsjK zH;Y;qFx}@*?_a&sc4IR-JI>YQct7bvMa(P}QUCyHK|(My5(QmIimP_2%v9^Xsrq&E z`gG0T|DMzToa7z&#blYg>kfpr{N{M^KEB@*D{lT?tHS zd$Q(0%DJ|C#b0UiN|dK$d7;ZShgow?sE%_ZsVR%W(d2<7M>FTJE%`p?%TP9RXg%G| zxf)1yqE!a6OW^|D8e&88ilT~hvu=#$(g<29cluPn^Fsh2SeVc5r+@mO-BjaQFP&M= z#+~GRFnQMLtgsh(kT81M%&hKtbrQ{<$s4Vo34O5kXsXd{mLw{(TV>TCZ=!6@%a(1| zj&oO-F9mWoJWE1E5VVtI%;U4BrZSyX?se+L`FRCN`(F9pt9BwZ*vfO_2__l>@pG9+ zR(c9Y&PFOu+}!Zy!0nmaj+u@MB&-6csjOIK<(AK7w|#V1&sEHlmtR~w{u^I&?&p1k zJRQvVS$h6|ZYz}TnFzNm9GJVN)Dc_?qym`$05AXwgk&hBpxOS~-}?9d=Whnqzu07% z{eGWPx_|%v|CgKm=I{Lvy80e3!2)iR-(lQM?lQyHFLmrhI?c*W6)whk;k{gZJ`~{! z9ZT*=nKIvaQfK=p$%`a+$l7`6`SxK3k_hAyL-#~*&q`0zfrJB1#|#wYRTf*|yDWBY zE@Jl`5Zf&7QBuvXpEvcUCQgQv2uJ1jizp*NJViu$XJr zR7?w9DWm=Hgs+(wLr6C%>=T~S{E9Qju;+P{c@_{H=s<0xb)pRxP309=mz-Z{d8Oq8 z+)wx3`n9{~j^t_i{2$f#E+HLw*qiYMJAB@NtHPkdpuICO$|O|QI#Hbf034H^SAo`% zw1Mm*?gG0PcoRjNXjO<|ZZ?$J=<9iGmrDuu?uSJ#X8Cch0VNiOKu*b5vL8F&ds z&${aB`fTlFbU*fVeSgk4VVJY;=kvnZjGh6lxmGE)W>qs&aaA!{Q3?B-tB3DbOj#!3 z7dLJm(SQ8od)qgSN9BT9yj~(b+_u!{#cLO}TLPb4m4cpwoTHdSyrDW0I+5Hl>_ps$ zVtV=R#2tW#lQdh-3!lflM^_QIMJ2P+g4GZZR9DSNmb4Z+>sln?g*6ilUUC{q$0__2kU# z^c=)At3p{UcZP9N63w}=k~mF@IVFY?;^nSy?9eu2WB12r@U34>{L7N}uLIlH%kjyN zH*b7L&q2GOT})3ty=<@46159=rUE%FHsm0=GtwC`Wfw0l7bCqAOQl{Po~idgbVhph z*JhLM9=umAqgf`iO!5Ce9n?xIhJ-HoQuNMBLwLsEHBeRV2QIK9j592dy znZZtAuR|xgS9S5mcbQP9>P5;WM^wVI6d^d`2M7a)o{=MyJyW;b9z}KF^_iK0%8_zi zN==!irs7Q{w|w%O?c{!GrFlUILSn=IWmi+i39 z;E$99fB*#n3MsS@0zeBTrDRf4232H>Y!mgvU>Z4=6>N9g>SRiE;Av`TfzXnKtjJhq_k$hC1SY#$$C}GaFqTa!;zk!T9%~W z%Wx!+18F1QA>AfeBdjp*Ff_Sr5!OLmc(V;DirP|w9Ae1xH10DizQmsRk>oQiC!P&?Hqm4@`5hV1o z>}BjkI@55b{wVOw@@vEPn!XlzlI6@3FLZ;diF}P}9o2=Cn<%O*t3(@QO{A+>G-id# zU~UpI2}V9oV(LZcWg119B%PJ$7)Q1P%RMMO0mv4U8QppK}uLko{#zjne33`e6^s{YqWn9opR4(w-p$4Uwpq$He zoaGd%7}b)*glx`q#Q0i>Ky$~_DJ9o47mYa;98wT&Lri`%afZ;~+{;AuX(#Xf=rTEX;xHS37zlge@C@`92_ z8fKCv5_^I@XJ^KbOdYw|i|WkGNmL!xBjvn6RdUUZWtA1HN?yU~czN%=irI?UiW$pH z|HV)L()5YdqsM0YOf6q1_Z)A2+~~;Tp2s6i9h9kL50D8IC=`GKfjb)slmvt)qKmpn z{34n+y?zwMuJ40<_^ZgbD7TUCrl)_=zVQZ+2Odu>9{lqk*>;tEgb*+SM*8TY`OSal zKm2CO{1SlhzxaoLk6hAwZ+$yciIgK@OSk83U9tx}lXNWeOHL+|P5`CwZ7Nk!S43R_ z-(|5ad^erv=JH)$sK`X1!BHb(lBj3*I}e0*i{AYw;KiF_UDCgi$^E6i=m>x`Qm z+r&0eY`xl{Fz5%NIO93s9C2|t4{`9E^aRhe97Q<^IEiu+r5CwLWF6TGS)2I^ctxaP zilor&E-4!lA0j!A-N(exl#Y;kif58KQ5I2_pFs``iZ-(q(3Xl#S&H3$SMf`ut}6Lp ze(}^^JXG9~bfoD_(kZ|CXB%0}ve)jU!l1^Z%~^#YGgl~8WEu%A;296xcvksRCAyCJ zBGSvic9F;|*GMW_q{5))p-rJ#W*cWwVj6&xg-1a=%n zA?u`8DB2`fUR*@A4zfmWGp`eEBUwjcF-uGqa}%k;Jn?0eO%U-@c!NbTt zh;T2LP01BYh6bv#5Ljf&CS#Sn%svw&BoTrXXGN08UL~*4$rw2%C;$`zB9MqQA;(M; zG7rp^JW`mDqt|B9t66XROw#W0Vpd+YUbg4!SIrwgEXNlA(a#hsRmRfja-qc{7uooc&iwHR}H_VHhxX#e%{>tq>HigHoA5Wo0j z*FH4PYZufK`Qf&vM!BF|GAVhg*_RrYmrsx zwLcrzk&I4Ni%@}6&x%WPQDh`(qBs)lINfu3X7a%8f!h-W5VoWw4P-FO=KqkjqcCW##oGJO2MUp#ui(vgQf3+Liz ze>`$gVaym=$}%PG$$d{RB5XrmdmzAX2tNYvfDVNYzp}af?Z5kXzL_$=1R(sK|MKtd z?*9mw&Elf)b>Z9K8DGDf#kTM*p>=xwthsn!!B;r}bBN7|= z7U?>YbxJm~OU#>+T1;(Vs~|5>?=n?{A|p7DuZy7p-BQ9_{E%HQpkw9C;UvmYl(Q(2 zmNwEAvK6vbBn?%TN-LyNy3DWmRwEfBJ^6C-<1@k>%_GS@!%5^x=9!Y>L3?Tvtzyw2 zw}h`5TQj-C0jl+TZT+Yc4+NDYPvaN=q`g{`bmC!eme=g&q-AP;`qQsBZXPjz^5gC99p!@dLAhA2U$&|?9={}?UxYh*#gA^N}_Xt{sk|i!vmPl02CWR__1~C&PG_sOt2{L<;W}TBv zUSgt%KuRHrLdYZ|PZbc?h?QjOR9ZS$6O zshV6hIqd=;CRM12g<>X!0Nl|H3j<`t5lpr9S}jJ*l^NRV<#MF&etXf%8S_`0LGBFo zKOdRaeeu!7!}s+P?hFI){Ij;c(k|&GC>QwoRDn=FDHpvKPRki$T(7*5PDyXXdAuQy z-d(J8T6isQKKs#Ml}7K~e{7e@EVK3#efIIXUYlh$%V^vrPPa9HSwv*fv%TaO;B~TTBzK{ zWu4PH#}=@qsKZp(l@Ua1E)5Ue^XmQY7QtyKa`EZYA6+#oJ$J_S+I89wVmatC>)0tA zMHyrn6OjvTCT<5_ovAt~^NOp3GG|?N%ATkw)jdY)Hi&?YbvDJGg`5=RIVCj*6!(xVW2VfMT_ zadYOjXL`8nJt@T!YMHduia^)f_Y5_6S|xe?^5W6=Ei-pb0AEMGQJnPhg`S_}>wmhk znfn_N_blCjJ22uQdw}@WnH&W|ppXI-00By&s?ZAgD#?2@R=E3Kk~`$PBrguvxAlAf zauPd=Gmm=~Ps@uRuQrB+CA$TD3e!ZWiAiEs5i3tF1Gx;a@nAA>neTxfDDN{JfQ|*m zluwz@0R~TIM?KGE71%n^CdnG5Mft<(+yCZ&^xNM|nO_1B{%8Nm-w&5>{P0_EiExs! z6X8Vr7Z#k1XCBW4av)9SyGT|Dn^abqstlWw){(4}*haDPSuoo$l46-c_VaRxk}V}p zBn%{-X+8@$b2!U#=A{?8iFAduO|&h%DcnYEbgQ^#DpJ0<=~=NE^+g5m_!ZI23d_+Q+dJVh2UEyFO;~K_tVu|zs~YPup{Z@pZ}A3+p77sS@z1E zM1NfsucFhzsTd^+mAKAaCPE7Y#yu5*Re?3B)S+x6Y!kbPe1)_stSVVC@7jX3n~j@o zasXl0coO9(VkhuSTqkqS@W{)JVtY-FBA-R>IPyYPNv;xal3pjV31SsRokWAY%Crt- zmB==NM6_6{L=={VEt41r9!7zK%#$EzNzTR$)(%RITF+Vz^91d7$$7>wWk36QA%y@K zCMzaoNR4SLVJsDvsfww5`|9eA_YD=6DGFb1+#;g%LAw;6e6ndSY%J18?V?(OIG-!v z(ghihnJ!LDp~57V#K**@lnzWrQYKn@#1M-a>6?zf7vVvKi&C}_B!iYB6G$YII~RdX zPGAHY0Wv9`L*gaK>?L{;7nKvw2pNDNkWdH~mXIc7sZgI`Awr_v$7Yy}3*Sy0c;wL}eUc94SP%bJT@#XWaSu3CP;_v>V zmyj8CS~@M9mJ?2Rapm=wTIK8g7y7*qosnLPuaZ!HCXLGA$|rwvv3sQ5WZbNm8LmIu zn#L@nUS{Ja?MAcAQHWltUdgi(2ZAT7Z)JJS^DB{Gay&}9Xg&+DfTjeQdPNG&iKI-x z5Ns)2LfXc>c4f5`JCkMt+c9e}ZqaX&Zy~oNTUIItDx9m$R%#)PV3j<-{K@w5uL$Su zG^n|=b4T}2TSk=cRp?|KRq8d4BKM+<6wuLn=Jm*I$L)!mTP_bm9+f@Yy4SU1jYn3= zU6Vu`MH9Im!Vc=z2_8xo6htC;kOl>ef(!yiGQG44B#tT#Ds*x_7<4ozFO3t@GvZ4? zNgatZ%_G5{mR|4^V+W>grM>Gq>6sa*`dX{3n6ykAR$IBFquX4(W2v#sSf>3KpFMp4 z*U8WAsQr_FcJES~`3vD+D0fXxKUETW*fTsq8VSxo(pP010YVGFm*0~L7Q!=8MXVFw zBy}(7N9U2q``<^gO=5#$oA~bh{L_p3Tb52No_IR>SDy>JE4Z9VB`R%Vd)D4L6R^uPLVe;>Z_`XvD2fBO%A`%T+(b(PBsvCY^bG?DM3Tq9o> zD$yO$$dqSSoG*S%^UTUfvFG_r%UQx%d`UQ)$U3n$(N$)3;T7SQNP$6GLUqh^M%p3i zr|B7&32*@H8BQ#ZvUpXTCn69VKqIRPZwhS)-%z&B4yyGBT3#A?Y57(B;!o;__bHws zou$7muYb}~U!_61PKQDHMfpWxQphC=gCExW^NnH$MUJwZdG1)`K-(l*lr74Y=j$Zb zQC5jnnKy~nNLG<<1DI4S7K@-0nfWraX%fr8aT0lyO0zu7%7R9dDgCd-S@FW&xv_^JnW{^ZXu)(@*pq>Fb_ zTe*3)Qmyh)EkXOhr(WkN)7cvrg!AN_4Q94vIszF<86kE^X+SxP$Bw@3(?#L;OI`!k z6cvqB6fQDR32llMI+;Tu2?$b1tOS;vBvGaybCAh%L;wJi?}W-s5Lw6!3yqmNAPXsD zW+_OyXzTR)oJrcf>GjI17KzEUUT#jS_L1=1&e1GhoKA)a;j>6cQ=$1zAIdDpLLf5| zX--;3DHbE0mB%=wH{b4?dN#@#{qp6f?O#fY`Ngi(<4^x&`@!E(KHjO3{>jG|s|Pxw z`s)2;=W_)@`KVmXlz0Zdwq8rGrPJaxAK8OP-pEDEprzOR_08w?&kuTi^5gpP_l%#7 zo3)$cXFtB$+|zzGZZXTK-Nes_x@7HVyUdBPp7Y+Cvlb`8kAmEQ+gtvM=WAY$iq3-0 zyl?@g1YH)E6H9>yOe5ydIU32s|v2sZ&O$SR>?JrR}>5fEh&yS zt4D7!Bbk7~_KYQU*o?g-CHOZV_~(d8E)&dKCQ3O`)~Vy3}t)eLtu-qr6CB*BwXm=vNYJfl!7+c=mrcyA2H;ggJ*0 zPPa@nIRPe?&?MA>Yy!EAu<@WB6v7X{j=*}LJ&-Zs3Ajf(MluGN?g&>Uz6!JrtU_5Q zeisnEin5NPS=i32?Mx|eoHVnpJ0N3o(edicZO`n0u*h}+;en^Zb14K!Aq5Hm0Yc!t zd+tB~d+Tqe%r5~5|EvG>znRwGXO)^soFEPidzw2AX8~tX&H@)&R*AJp+r*m8DkL=( z6;)bf!aaz^FE4mSBkN;67wn7MGa6aGQz;ilk_Y9fMXHh1$ZA9(%zet&jBf_u`4qsWON5-5crKqwS5 zOPMC5sSpR;m*NOa$cbabSFO|SY&VNucHzs=001BWNkl-A#QWc5_rm%}xA_dB7goYr?X=f4_q z{j;vrg!51S^z!N*8}Y6JmP;VFH;t;5i`qr$qnsBNOOo7c;glG&%j>N-GHC9U^jaLc zSK{&eUUR1`I9%U-qc|+%cR|`{Y-D3ucXm#(r#96((_P-Fe)`F)k|?8 zxv%t5kiEz^yu1?m6)(M_vt)||Mp33olfrUjITr+)EiGG8HYKkUZhWbhTrIR7!S>9q z)3QRp$*BcwAX{2Q7}`~1I1yS%!%2%D zWf?^oGcZT(%&Uo3y)Y-H4qP3j?v&|e)vM}UD6Q^OuvHRu;%(&BgzHo_p6N)k$h4e< zN`g%sCQe2euPaL>_7W!*dznVLoOGHCp-!m4nTM1l^CT}6Cz?lsBV`?DC(id$zm)dO zOvg;m^+@GJxGC8JwUimE4YSmh)$Rk!tYz9VW2uQRpWlD{{jc3h^OHZ`-dn5rsq)vt zUFX}6YLj``vvekTAbBp?5x@eO00AHXP=J2_Jn?v(UwmR#n;b&%hzL2+6bKfRiVbiX$j+B0Q08f%^ibFd$_d0w$cSXj zWJEH@(g*4m>KKqZv6ZJavL?z3WsTB$-e%KA-g>@Wc;f{H>rFkYdeHSrRL4xmYBy3f z60=Y-C7QU3g_Qz?KmquYa1QBeoyk95*M1b`SxYiD9s~{C+%+Za!Za+8kUtGR2Wro$}b90B9&Q6 zqy!}H<4@;F{zkHY=(vUh0T+g zCmu##Iz^6#9VPFTI#UeIYLa5+(sMShgSL@;R;6c0))T6SrS_a4k`J=B#m%4z-j_2=Kv zY;yecPcPp5mWf6BbXTR}%V+Cq_a*0i;N97Rls;(}3J}L3TH}ofcjBa$-FzbVA9^Fb z5<&4-*FP~I{>}2$A>aPfAKiQ71Dm{Z&bUeYxxDynQ?fs~Kg>i9G*kZELlR+V{#2e7w~VWg1l) zB@QZ2yo|KOz^a8-GqVFz9k(Ygk3ye?I&nSNc9MD#ZJ~|IR!?z5n>w;Ou*UJ)QBDdM zjAkgj2%7-AKwC$+FHq=_@Q%=Pp##t{ zlM!=Ym`h}eWOj53BsGaQk+zXmNmP+nMb}AGQLdtBgKQkVSh#{3g>|wzQZdw*9j|&} z25LG4FB?bXQg|dBfxy><0{{XPkVsA$WDdxPb7#8Q1XesDGmx2-!#E~YF9>X&Rre^{2)-6#hkb0D`y1QJ97sBIe<-hhyw+5?lk&X^gP6}Yql`hOB#}xK zGIN;-&m}MxsEABNY9mw;+5~N)>qIXySs}HgC>p^aHF2@QnYc_Mb|MTCJC2>ep5d8> zPQsa$lcFa{P9k?AcN|H9I*T@mI`LJ!tKmeAyh3J?wTU!|t^;f%Z6nbLCQ-+n=kvsu zf%}D*y@rFNCqa8-MkQvcCMgCC-d2e*Utq~$!MLEyKn#_J2}6bOuBmrlEoDCL*P92e zsSOo|N=do{yG`3fZS}@ z#IjOW*|*8BN^T)nBv&+B2GkGDW-T=rf(t3~&1akKeZBO08MGV7=|#i@c7!NxYtNgSuI`A&K#Y z;6W+mWaebzWfCyb`PPUmag=FPaggrJGX^0&7l9F9Vw7wlc_wAzWh5{#dglDZ<+U)^ z>dP+5k*SdgLcnIUglWnR)rQqtv@nzH#aosd&6K4kUq88c>sL7806?*y|LlLce}ARo zwe+uf*z>rD@wudq;6U>NIY0>o3Xt+O+kntg3P1)zGN?jSkuCCdl2=~6F*-)CzKeW= zd|iO|FMirS`WD5JrZc!1Lh$E3mvxCbC6E<}3Z0ayYC0AII=lCKIlU?rr5RuyuH3?c*1NH?BSy&i##SQdoYM^{8BU>F!i zM4Fn)8cy!mW;o>2_2s>XnuF!VGLoMELWudD0Uz@caZGs(arj#s{5O91>)%Y7Ujh*R z2fyQzmA$|I(Y997AJlS^;mrHjmJ}Hl6}^g4rX*2_A|!q(PDaWC zm657MbR>0zCX!X6YowbDtDGe-LS(KJ=(y0Zs?4gynnYHKt^?gh(ng{a@KQW=GoNSSNAAxe?-e;} z-YMQmIV(OCaMpOKW=;bTU-IlG&&ZM^Csb3R5G&OfCJmLE2{QC;b5Sd6s5DF(%G1jy z_ulw_sC$!M>DDa2Yjsbv_l}6uyxr}xPiHl*!ZMN(!XOZ4F zc9rhWD}L1I!w$FR*VZ!Ao=v!iU=Y>ERtH-LZEOv&BPe+%s6o4U4Y~#E@6AaB2LzA6{6rEr{I!-wCiIg}Jime*hY>GXr& zzx@5sO5WD?*^gg5dzIHU)g^BWzWMx+cDXF6%yC=7`8a7GYFR@#$8d__f&D3`2Z8(G zcfsGVz72Q`v_x7XE>uAvn6fLGg8}-0eucINyEeOS{ZMeX!ZhP>#$jjWp!MMO%5)Dt zp{2g=#+(DDKp~1fz21ND$xgT2*Swzmn_pbzl*&2$ify5tlP$^4!I$7?2P`zLG%h@z zB_BCGNP3ifjQJFXr!X8Tl<~%Khq&K09v9uixT|4b@K7<^9AjZxgjRuBV8-q3kUZEN zbdLQTw)^aBs*5312^)A%QV}-tm2@GP(N97rqDP7ELi#EWuhVp-bmBZym?>oU0enCl zF=S3$VSo5IhZlp417&#g)$PZ>KTsMt3(CV!|BsJ8d6t$hLVX>#*V5kl!!L%oaettG zB%R$>gbo*T(%}+JIb3dIY~T(kM#*tB*_m9gn(gLCHGR^X!4_zwBW{RwFSIvbr8mu_d}(s0?hp!=@z zzSFMD)Me5z_Bb`#Yu-26)o{JZu5$Jr^Zpd}55wUdgn7I@$*@qGF|QOhqsplQ889GR zh=B+|fCTOhW4x$073d77?dZF!72yo97(Q)t<#AQmIsia|J|)Ql1HWe*oZsEtJ|6@I z!GQr@|K!=Xe<%Ga6aV#Q8S~n8Zgzh7@}CVaZkwLF&aId2;Wed$Hj@o=k-Xukao?t? z4P#GZm-=D(*u^*|P5**o{Sf2!rVh<4?13U$P5dRM?xNmhypQ}CnV-{hfHzcs9%5n;#U ztUYcm*6w$2cbs$gShrA~Vm(QJGFoe@J#0OcW>20KXmOY;Kvh#1)bWZm&HC}0{xk5Z$Q z97>K4^{gL$yzGYaG;U+Md;N3y3w{0jPyhJv$zPK2zEl}nFF*g2=g+?z>wAgj-+aCw zpQq9;@9^<70>`4UHU}&@Y-D{mUZ_@cIIs8q>f;(i&7s8b=Iv+cyFY4EzL=A#ZuMt> z^y2x)msV7+D}MFqVY*Ir&Fd1&!cXr;@LadClumSx@yK`@(o>)ZfrsFCq<4|t2EPxq z23**;L|ZVj&gSHX2H=@|555Q8n;r~qitjg{797qrM(YPHdv90P_vV9^eUw2UGo(PU z+)d9u8ptPKN2~hHpWTeRRL*HThjt3}9LrPkE$R~W9DEU<8Ty9P#^c8MO!>s)lf*}f zC&{NcJaL@!ehp*c5%9p9?`gMdGBw$6eAw&&Tcj#{7FrorD(_M<@g>?EY?k#dVT=8k z>dbB%QcbZDRDzXYBb(6{!5Q%=@(ws~)2L>P9M!<{`)u()&Q`}l9m;FF`?D!Kx3}CMNRLoYgbkp9>-+NL zpWBj%=n)R zYC$b^9U2@8T@?x|QU?Qm1bhHG1DzZfr`i0dv?;C)*FsxIoqE`H+BcYbm^6-!Cri67 zQw#elSB0*MB%j20C0yT8Ivt)Ld3OvKw#C`0%1}TWa0hk-M|@u{A#hiYVhm283@W&8 zv+bu!xFW2G$N9A6-D%JKul)$K$IP&E~G>uJiKlOB%1Wb!{Firn8S0hnl9A#y(6v4qZm&vB97=YR%fR zX)-myPSgk$QGxvZJcoVy!S&z%FMj(K;s5v_|D%uOHij!!5|yYJtD(qyvlVc##W7q;=JJSpuI_l>R_-Bi47vTqp73zx#% z!sQss+oX3H?jt<~d19P%TvOac)*vhM(o2u2m~PfrYwVsSXOw|M=0IE7<^2@LfkNhx zDcIYupMChl3FOdWYNnt4;!Tkz@a2$;(@)NQC` z6FCXbDIFs{27DB_Cw+|cF5p{%C&4Ac7I2Hc5I8CupeX{Ojo=g7&UNo_rFLEIu)?_D zFyk;<-CNmPJ9yvqzGoWA2Zkho%l+==RSGnDnXJIO&u;d+T<2JpSWcmx!uAxcMxCS1 z(U#zI@WlZtjVp~Smw(z{Bj~~uHeDEVj z24FyPu;tC`yu0yMpmpok<^^doL)F+Vs*e>8D-DIDA~Z0h2cRdUlj9j^Ry#Ydic6=h z;aac&_^7gLv~M&jk6m^e2MxO(c1?B#uUgt~oP1>7FTOjC&!5unNp@$+Gv(Q_$h4s} zkc!-q?efv!(kpRd1VR&c!p>0I>f_iL3gJp{UQS!y&knQUs=hV@qD(LdX7-s zZPYPW9-EAP7<-pW;vHR3DYs=Q6YI0M=hSUia=>6^)2XYVQ$<+Xtz%$V~rE`jF zj3x28uXOvYc+`jt$1#AZe`0S@w&%X0s zv9)G*?e!sBV+B|NTW4y4 zYm5t7-@Pbd*W%tWwWl?PYk?$9SS3`3SraDd%Ic(!cKM==+yKnbT~L{N;1;ANS#;~S z&(&GAe6{$DOJUDhr?eD>r0N8gwDeg!kDZ9o6<^B3QZwTIecY5vtO5BnFf z^iX@O4IUpyjH%m2&k=ZGXv0tw*BELFb3NL#S1n0Rp+vcR_)0$dj!wD8P;y}H?Pq`V z{KdzqlvvkPH~8vjhuuvsTPj;D7qCI9TdrlO#Q|pFIi+);r$A2^uqD1{zYB0DI7iw7 zECDz6MF3qd$5DWYHla^$d-sFdq5D;_{fc?P5drqP?Y!-+?Rq;9jpzeG7Le^YUfpEE z3Cd&}J$&(OH^sijy2Nr0?Ii0{f)d*jZ3(tSodp(wQgJ9Wt&|teXC6)*j~tI7pE;f5 zxP-jOu*g_UFg%Z%#?DjY-J-Wm58g*C1FnQCw#S$(`YgVR&%EAe*3h3qpJSWFdSj_9 zRd6FO1S{w!d}de(&%{UJCl0S;dK1Riae60drnGQyhXHH=PYOdw8Do+$^B$Lec=0;} z=S(S6-hTPBkG}i+`~H~AH?h14^{u}B$!^5Z-coy@{)F{`u%TD5=AhvEtE)ab0^r5G zGXMk(j>#Z+yjD5%aMR{C{zp;s5>i>|GH0tPK=KDEAt<=zWFdT#)iHTp0`uYhZ*c_ zxEQXjSLZB{>Ah&A&UAHKMH`K^m#klB|{|LLnAy)|xF3U;NVx*t*SK z&*yia^K`3Ct#_^#PJOT;S00)SEsZ*iO-2ht$J}x1HdxErl4&$WfcIcSGJwm6A~$i5 zW(>9xFDy$8=P2itwkWf0aDCHK&=fR7iTdXFrM|d*pgwC~w4aZUE$xd!Q7kT7!;V9< z)O_eL8iarK>Yx7a|ITl}BK%MO!T%yMPM!9h4h^4GzHM?_}2v{PtjE|21i)ym{zj3yRKocJU9;Zw54z*mZS@HkuJDefF#{n9SzVfL5HCmfH}G{YG7k*QECjQ zzWD94ZAj~wmodLPeFNYB-5OI#QJEip@ss_B-@Skh-DBd1;@f8HcX+4zt7AaP8WG62m~4 z#WMqydB5LfhD?wd;OWb&mmg=w%rLOezxd;i{?hvh`~tIwFMm9~e9>%Cn|oiEcVF;y z+nai~v_U-g(T3P~XfpOVXdb!@8V1F&`P6$>P1d9J=;i<&sT0}-Yybd2?(Ck-(7g!H z%uA3Z#B&a746|-f7@-{_Oe*^$30IdOja}+Lex*Q8g}|ItNu>zRcK>gw6zc}U@O)VP?nrY5=o-K+cue7u6f=q4ef{e8JG%ylPJ0FZ z{O5<8PcE0;P!;a)28vm?*iWIIxu3Zm*_M`Sld4j>&z`zcF9;Q>Su~&228A2N=MD$e z31|Al8K$oe?67;2Q3WZsVc>{W|WqtqPk?!S@`zh%>) zf`H0e`=@_$`|N{Mw|D{D>tF7st6aCRo~5ijKMoF;d+>_t8s*45r*IN{5;z8YAbSdQ zFL*C72b|x7%@@X*QPIH&ozX^w0ew>4yYIX2yB!J~R>+0I&bGalo!7~9(!OUN5C-zZ z#M}9L2z#g#)InD{zP%nK_7d7j>Kywb^%Si}TY_!T7x6jR(lA#V3gwmZ%K6Ok$Z_U; zmUQN{gkcH8%4y}P8ll{oB|xd8JU02e-j314OeS42e?YA@dHG zc6jl7iF2kjkmzUs_qSg?oBGpG-i7*3+M_=Hd`$g9HPQw8jM%}uLq~82e;>0sI$p4L zx#lpC7-cnqbfdCYdDg@AX}0j<2aXXC%z~P%kB?#Z+!|O@SLN$Sol3_|ajUcyF3}`+-gO!~PfBCs!DQFN*k#vcDzs~1&;W2{bkls- zRX8}0?y~p{`kYc^al>E7l~%e<5xe)FP^I{ zs#~jNdw4_n${Xb3v0&PK(3qMGjRzeDjk)unG<6@lWz(cRnnvpa-rz6DHGoSbN^Zd+ znHJ`Scx75*SVCA*+9J=o!Szkc+%D_pMDLb2dUJI`J$c{MmU(GmDuz|LnpBhSxqI$D zbeIHJ!7Wma*apx6Y-sC2;=$m`;mUkCo^I20)%w-eZ(2KSC9GvI9IA==9Plh~j&u?~ zvOkGGvK|GtNNeB{smAaxe0%!)f8($HX3G2)fbj49{r~bGfBUcf=zBj*6cWkKh+cpF z;^yOh$9;$E3ij1!yThw+34vONr?(^YXiMlP(wX~=zVz6;6y>74bvRc^jj(y@kX4hx zV1BE3V{m0Yf@gq{EkuQ=n!9H0QET#+wK*t4M>p~=UfCLZ7w>HSy$J~p=#C250h>_; z?2gT;05rg=luvccCuSNF3iI%>ltLKBN&iK}S;& zjogFOAT@_`JKOVDTaNRTmvMOa@C*6=AJ!NzcgDGZZHE$?hNiLh_T{Hn*B{2Mh2BF| zxcg>G*P-=TTBx0uH5taHq}HO;6jpDx+qEc{=e$0`iw`bxtwp)J`$|6eI0Qme@*Znx zU;Om?`eiC>u3M}H@4g(;C}oLtO=Sz~Ijaq=lKUED4sv8arEp?D3O+JCu|Ejj1zG~G z0xQ89aS@uyHzITb7lh%GvAKY47QE7%IV!0DD*Y-CG<7+Q|L>y5^NRUg0JFBqp@Nxlo!e?#aYsso=I>^(AFADUj(epBnDW$$f-IzSO91RM9qARg>2K8JpkdJJBpmY}V%6vAHx zY*-K$h8b}dUYJfKC!u@EcOiWfhPQEe6Nec?2O2=L+klXq#cWLbNJHW&hdrFi;pOin zN;@kDJ;E3NjNiRChG$Wn>&PcPv z*=R9b9o9}&ajRG=*Q{aaJSvU)9&AJ9$>K#H?>di_gYN(iPFDuI3cGW>Im>XCVWYTF z+<+>j3fz$mFX9H_LIHFG1rZ}qf{vh!Ti-0_La+gD=;u;O%(KDSVN-~pIY?qp44EM@ z;_`TPb)5tfL1OT`UtWLsoy?Hf2g38G|K$1yKQvvtE!{Tt_34{GjknjmS8H9H*VE&O zQ>-2fr6#e`pfWTWGz}WF%G7;O7<$jD(KVWi8M}3&j-&{FISd0LIJ*V+V74)@Osj;2 za7}5AvZPp}oZAAohdJU|Y!yGVJ}qyz!|sSy6pF%DO6Q@dRF`hCdF(!P&k94pMX&_e zGU)(1fRA8fU9KhX4GwCD4#W9)EBR3RP3_ONl3P!u4;=tt2{;R!*iR9k*iUSaVkd?g zc?-NI>LHZGwcW=ca>fAEL=au+-6LVfO`HQp?AV)+hD%ycnfeam;eU!geqAv zs->>cdbF0cM(gB?pa4pKfmwS`wfEI?0|0-osxFCI1FVJ>r~_2MV(2Q^5qgSUVw2c8 zwq_Ks5fYlPift}1iUsPzJ)jG!kzIOdzv_%27=j5ZV}ouf^%!alB}&clu{^;CAFo4R zrePh@!<(OlAN-Zh3;^i9e)^}^`wr{p;aHz1`AWgnbRwr+x>F7EF?9pRwLmm#c?6Hhq^K!pWVX`&bmUN~0 zF_T7JL!YB=!PcN#fK7Z6TNFd1Trd|J7D|hxGloUd!f}?oNLqMYP-+|t4wbUwFl>IK zaH#Fj+6Z;jbtD_GkQc#Ke5LvjsfwM0&Oz7E*PvaA8)G4==o?cZ*aR1Zm1t%@6Q3kJ zio6T?ZOC^azYY0~3>(Q{J%c5Hj2MvqyblQi7@ecx=)7x6Fn!QvZ?fxr zI6t1^;Y0O74Xp=rsq;cInu4mh1vM!^4RNDfA$EjD+OZ;@08fC6!wGnE*c4aCtz)UQ zRjLA%x{RGh<*Dij&o}>hqD3`B!Xad$nk=-M34yJ ze0R8gmVd=Lef#s9kG`MSBSN70o1gyU>+k+ReN$W1*4~%%yRXA^t=*t|+$@|*h8(M; zPN`AuGHOa129>G9pgwfHBx=Ddnu=Q|QbYy(b*_d8WG>**v=VJZ8_OoV200UK!?@#^KiE$nl!6?K(*x18EA6@zL}jkXG%a`VtFbx$2q_Z?#qD3MBpo~-N$N4L>! z=Qft@iqnM-b#f3@8)J}htT+do{!+(M`! zK792j`|tcgto<_ay?y!VetI?{huT6_>D}JF-4BNg$)t5YpYvt)NmVkdf-QxfLJLxZ z^eE?c#+&CYa0}9+oSwdt55Ehj2pyr%-+VUQ+>QXLY_V;jR=@jtN?FPp>Lz^)%Xu&# zYDujl_#!k1IYpWYPl9KLNAX9Yr+`PoHQ>sA4ze<=ge$|$G)n*%w1hsoPws=+WIi^( zs<10?9PyPS!Lh*p_IMpWMzPsp~W^w z=>nU;#&%*ohxQb`h*#+?Sg*{Ls4*0xg1#_pL@VQlbY?!YJc&F?x|jGM=}pLQ;_yy# zC(LexTQtqY0VPq$6eAC?+3xz26b?K08(rk}Pi_voNl#-tj{2YvpANy;PuS1s1#JZ_ zhzg+Y_A8`;171e7{gTw612AB4hz9Jka~@4brCljThmR`Xb|1}oJ{FmtgR(kVCo^ir zfU+xZKn<{BsK|}DAv7?j8E^qS0xf{6`)aT#Z-zy&G-{P<(vVfgj#+t7+IJq6hR%b^ z&}mmg>?8Xga0f7T*mb_{bXgpeW{ex>%F;j@aR=^5hVbqq=a6B}-YW>jqVcuStO`9fl z2UrEq;^zP}!&%_O`ow+~Tq9MX8hC{j#$d4^Hxy;AeSLd1rs!Mr620L0t04>9O17Y$ ze7hs=s3&j(+PNIMGUsQ;6Y$RE(9T=lf5INvlUQtTAFr=JPK{IN&}pcQcVF+~5L*eg z#9re0n9V{fWL8sJk^8i-A=Q{#Ok2#)fAsu!|JJ|xn zK>O8Dc5`Y7n_~m4j@=m)p);wlvM7p5tZEYW-~l|L2CSWNLKV_P&d>t6T#m%xcFEEJ z!4OT*7`u1Pxd&-MYLru7^l)gq-8Q6c%xg~X9=-_Q{k;|gHw|6OXFtAr`GZ)ybd}co zn{Re;O3tD6%YZhVj)Np=8sD!wsp$CLX$-tsvvFuSwJ0q}7e3GT`0Aq;nOuST`u4N* z>Jzrc+R1x+^Z6l-gBjPA+ZxM8r@KTPTTQJErKDaFa1%NOSp<*di_j_1gTRU5D0pO? zg%-h$VPjkvXTe!`!B9xhGJ19&+$ZzVY}ainbSSVxlk9b`Wq>w#AKgZP+}aKM&UM0i zrORYBmeUky&~x&Vw8V1E*rP6@RkTD~f^WfB^71R5#Y(wiTqrM;77i=NmC_v2#%V>_ z!cZx#G=LKU$Bv`oq4p8_Xgc+CX3O3p6!DGPy-*2u4z`MJ!76JDrj?}MSR z;!3y@orPzX6NN{Kk1@Ut@t*Tt815vUgp=FgmcSE001j$H+C|EdhbX%pNqD$>cDG9pzZyG0L3vlMWYOunla`ZrO{+p z`SyGS-hXID>OnP@wX*EYK{c9jHSFLOq#-rphSZTNHm4O}2Aly-&KvmVR1DXSn_}tI zDz&5`84sP3@zi)!o;nO22Mtr>XjAH$eFEPh?hSSw$42`Cc?;7*dE-zpHo!*V(hyM~ z#|zKkG8O8G>Rp2ACL1YYCQjP;dB#Z=hes^{IJTpXw zh>#fCyU(A0^lidbU<+8cum7*~>SMK4t+ZOt@4ig?XWBIvr(&@pZ+*0!8cL_EJhYH3 zj!HwPv0GNpX2CSL1?}RF;2lW`{e4(*`H~#n#a-Mt;!3m$RhC6~CfLTI1b&QsjQphM zGEK9<%DzZ{T93LL7x2}g8dj6qK{0g?&4vz9JsZS;Yrq=3C9j!$a?S3O+vqlK<%(tM zx>uXJUoY#m;dRqPZO^tgbW_Al;2iKIu#%t2&%y7-HpWeGV`wR~xM@(3Uh6~L1qhv} z3Dm(?I=>mmB(?=Vi*B&K=!x{~ZXi3SgY)P-0`F=8*?mYC32n(9=V||8un<&4 z1>W3U?LJHmbF);o*b1H=N1|A3tZQhMOl!(D4kg4E<5H{Lyeu)bkXlGJq`UK7xOt&O z70uns@riafV2-NT(Uw(sL`Bem8o|QV%dh|T-}{@tnKHixApD>IqyOL!9K-IQn7{*i z@M_F^>V(E@!8@~OvzCh^uF^Et*1rD5{`$j8M`g)USt&LJPj#eV%V$AsAq1Ywg`HhMQNhmRL8cOMkkX5R-PPTj*`5CDt-@ zjjHD;E7L;01bGU07MKan4EI7$f*aE+a28w%H|F)iGY&IJqYReN2lvrzFc`Y+8|*4f z4W^y8Y%O~qpzpn=t|Rk}ZZ}>h>#3fuL`P_YwX93DEtJzpo^6eN4OUpU-o;JV`uCc;xsttttn{PH?s?x&&Oi=JV-6EgG_tf4pX>ged^-~j$! zoB_aJKp6l!GJ-e-a{(Ehl2J6CI^C=VefYT0wRtk*x;Bj0s^msyv32hV9iT#JK#i~= zRg_N6pb*ZEGvMsF0c?hw;i6a#Yo}Vch;dTM%7gNSYGa4J^3W-32z?y-#5SOhMtg_R zeNq@oI5ZqLiiP4rv7t1Sj@*eZ5!&T`_KxTX3hs=Gm$eJfwDlM}LP4zLb8B6~;mzf?Ff5 zh?Qw&+9VX=HOMK+V~{(nbsXp5N5+kH>E|-!GeLvC0-kG8nYvSVX%@RD_1HZrjEp5f z3D7gN1TDJ_07Kn&Or!fweNx+Z9k+4?bZB;6+jY~MwO%(BgC)QsxR7mvNAaWhnP6sH z0@NTaXqT>`Hb24;ksI*_(%bTOH|69dcnQ7*TYSAsf!J5R92li4=k%XsBZ3WTb_9 zK+R!>K+a$RT)dQ%T-};Pi=rWRiT~Qi@-P3@-}~pW~od_7)2 zV{KA5YQ-PF9wkYu(rRj3*w$p8dmCGC{||R>@+(bxrT0DOoOg(b%sYHTO&p5sf!&Q( zOKm}h0WY*QU;_pWdFQqF-rKPM5$^@By$~#00t|2Dg*?z^cZ+N`i^Zy9@vCpTH>ZgA zeb3-UepT#l2;#y6K6oxy$Jv=5ldO_1oHxFHai;Leu`^#hb{$Kjo8&whcG0HLDXhl0554noXX`C&>Fcf7 z6n%<5+m`!rBA?J_J6G?;deU>j)pXc$oCTeso#sJxQ0ZJQJZ+RWNvq5omzC2db(3k6 z(kVp*Q6h*0CX1png)Pw*9}{VbQOB{SRs53dl42FTWO%Zk!Z^G$cjm$9%ojliH^D_@ zBfbcqBppQ_Q+bejNcm;1Z`1TPmyKjiytoyLSOhjT;8T+@W$RE2BH&rgnw;8eh0I^_8I)T%S1USAt=%uTm#v;u46)dZhX7Z zz0s}G+%HPyHk>Vz`80GmaU;E?c@UI!z(Hri3O<20pc$QmwxDj*2XD%1q?48G zGMQX?HYv?U`@xgd8a3%|(uHCo?5-qpUIr~ni}JF`v>`RF??xPnmDx!gxONE*5!Xs1 zg)xk1glfu4F^C#rwXUhQh%;~jwSc4`=FBJ(lYqAKyx&iP!YB-Xd~x^ugThFxLSy^Y zpWlDO93D58^e;f;BST(WFQPB}l2zS-}NMJ__8gp0&UFJrD}MknvA z=bn*t%E;LyTlL4&&HN;*RLj$#{PyjV@AK%j zuSr!drwLwK3#O4vE6Wz{%YNkA>NHYWx6^p?VNX0H2IzP?l)EPu;UN(mVY&{<3mHh6 zEQNxoz-M@kD2N@=g{TEJ@OAfLLkX~kM2HMM@_z3*xfHK*eEU`X_7A*FR%gwVmAki} z{`kqqKL|gCuMyk&`H!X#J`CT&x3J^+FSxbnRm98U;5qiy5k|w!21lD$JgUd+u|zMS zx89z3yZ3boyNz+vE{mX`@AXpAWo&!u)wUA7+E#VT(Q~xyn?x6E$=4uJDxH@>siRzE zYMdJ9i%c7r&S{mh%HkA8;z3M;;2h4*#ptRI=dc892N z*o7_;`TXX#U}xvz=c+tI?wKqB;4JZK^s2?SPqMam>oQz@)V6JdMa*rd6_1Qj$UJ^iGz6 zB0vt0Yv+mJjP7bVDQFOsq7$vALsBEUM66Cm;R!i0Gct#?)3UqCf=Q4GnGuJVchBDw z>WMT{>#zQ5_udC`y>#1HU;b6Sd(SM&=4_f8=Tj?OlFHmk3|Z5pX;vzp_KL~4c+BQG zBDv?d&NM~}cek>J*TR$>_^*y_rq>S-0HaL zdav=U>wQ<1XhIk9Q>K-1W)WY> zco*N;Pv{3`BRd5zAv1WVp19sIO`tua#Q9QoA4y~}$)5G$bh|uDE>-i?DJjYEa*sKg zWgWFOX_pdF`ZjV=$t#iVZbr^3rPaBoa@+y|z@O`h!0VloA3r--B11SGA||k7}mmD_%Un+l;nnZ z2G>wd(^KLJJhSZE;WRz@j`A+38kLUu-+TV-AN_;hkTshAUnJQ7LysHG?>FquCr|{t z7j4ri?#dbi1hJtHFZk|h8Y{e$j&yvRfgCY!TN)#qE^RBHMKM3+)C3#j_@%5wtKc#7 ziDMOdlesfBreos%1RL`)r^eX09@Bp1vhs4~8Br|eh&f{F*lWy6%VHxtCYN3GJHPC# zJ@a)x`V;uyS=Z9H%6#iy6MXVss7-OM<1w)<{+N6dHL)#)r?70M zOiHvd4?=xq?f?KF07*naRHngnW*STz(?w)se!+4|=_2wd^&#b>)VKNeLGoiN!7+%N za79RXVVQ{cVH09%mz$Jkiam5f%(^a@x6iT`dp-L(>ni7C7NZ#CXk6dETqt0F^7LI$yhZg%l4NS^= zLp7>{r-9r!cPRs`Bu;!LoWQR+qL6bK!ddLvoo4E;ma;J#Vh}aeCaD3PaCSHo$a0cM zlsF~=-`=?K`_>LP#7aHU3C%dQj;!1jvXyfhcrQYNL?opa!8`EK` zBa%rODLYLg&GwVUC_672#gXH)$vwF-BK!LsAps)^N(KtlZ_XJ<5IjXwBBRlSJ7{Ei zTk<)lQ|31%A7RI7dRt^oer8_1_aYmi6E?QZ-8gSV!;44KD2f`96>~yM&=S3nmGBv( zMpW=lF`M6c>S^4y*0ZT&Z3RcIF6YbU~Un zCsDG!mxKLqe^Z_(r{XfNM2FL^?01`sYE~_MO`~PARwk9KxoqS<-;7kYI&VU!c8+*9 z2%Y6zU_}~jyvz|PoC9H7NU9M`mT|Rx#6poGrmz`C#AiCRASGFYISXk?ZmJYI^Tut2@g@Q+jyu)7`hei{S8Zm&50u-+cIf_!`l|PVl}xepz-oyhm(d zC#w&1p*X$6Uij(tpAqqncmY@986DfJC*Xx-Axs*Vz*FblkjZF1t#4%i@!)wxX_Pwc z9v%<4dCwv?Hx1t|$5AGYP>*$}7Sl5(mPDM1t8l*XKl)9S`7Hq9k{|w~*Z=%<;KtOL z4w*K_hPR~@J8~OO6O(cdXQ8g}kgu?*}2d3Mi^ z>hXb{7uQ?AJkhQAc;C10b+4g&Z&}AoefD$lhbh)-t$3@^i|gc<oX_rfhzV|lyxY=HRD4M-xUu$a|opmJy$Pg9?g5w>*=wEaGuF+7GKoa0U zHI$C0%GG4Av>R5GpBmq2>;~O<$YyX!9dH#T3<`^6?44K%%0npv9dsfzrL~%gMPq&sLI7J1vV%*{7wj)6r>T|}3M2{#?>Nwh+^?bhMHqbWF zX6Svl8?~MK^RBa*O9-?J4hfBX6&%uN(p%{(DN5@SCM|0B4AsXz@e4MgmB?HlauFuY zewI+Q$0A12#4d=9d}Q7gnS&?dJt0|-T%Xd_=59sT(=Of%4hX$i6{Y#?4|MzOPIZgaX?lD(;`X_DY;Fo4?kjChxx00B zkC-y@mJ@gq79x^$@3-PynKL946>PVqCh(PZx}BfA_i-XhOcTrTXMgto*P-43BH};1 z`Q>k<%x?h*|H-$0_dox8e_$~=W{=viaO4`k*tk`D=9fkFsjs^jJ8ygMPuD(U%n^%k zC1SR<_@TmPJLm9fYl)sit6w-Q#U^MRI%qaZgQiZ|SS~zulEGz_q9g;^gc{R@#8VMW z3QE^ezlb@^!4>BcmT8;xlwsMo9NS$yB<+Ow+T|LJSs9(VGbzzY*no@hCeoPSN@~JK z&c~FGoDQj+WI0GaNCLwcjfG(@w1nNn$l*7-RmMWLgcj3X^xV&L^2NuUx9`T9#wEL@ zb#M%ZBHk%5yj!S(Z(3r6_@#jGWv3S&=$x)r^pvjO2)xmYJ3`#~E#11&F>2vYGVTq#BAQ+K_4`C;C zkWzHFCdoi6q6az<2QT-=t_9R{JK$ zSNnV;HtGo8z?;sAYE3k@@!{->;bOz6%RdF-yeTzD97j4m4-0y}js(0%5-4Z;*lr$p_85_r%wu6k3 zwk?@S*Q7mZ#KjV$Zo%d}njUN_7g|9kXhc2wsV0*cVk^f+x-l*hgtSjI?F^EifD>aP zREC6k!Cg|h&fnAVw$}Tik*yYWI<5P(uicBv(mbon*y>OKz1ES6x{uw>Cb{Lbmeks+ zH+KqA!JyoTyKKj_j|49{ht7eJQHQ&8*p;v%Zn#ODP#{SO;;TsStR4d`Q|7k*NQ)!qx zKTZl5P_w#Kc znnV&fGjCu1{MomEuaIPBAv%Bhqrbgh@Pps^>qK~aJUqF5@0-K(E8f*vL)EqU<&5>q z_Lahh>xiMQf0*<)B#r)7fbidceflqd_1{j>bMzFN{X*o~FF`V>DiuTCxH|ELr$I6} z4-zM7oB$|sXAI(l%m7l%2F{@b&(Sj)!zRB7Q2oNt>|6Hn)RAp);JV$T3k{}0v@#oE zWoj&)=`1psUnXfJN681toAB$jY%CACD8YyahZ7PUY=wOZ&12k(=g?h@;#&2xFp9Sc zy~J3?_H0BZR#0F6^MONyHq%sVoP-A7R!5c?6J`>z&4eEh|@hgXQ**G|R&MwJQ zwS5Yi$38_}MlN0@@}!f5BwrXi$HXx?YS0u&ofbk~X>!Vgijo+KkpvLLSE;!XE`T$c zK(pJ`U(6VQ5;Zrwmf!*#qXiiS35XEP+y!_ag_hUIz0q$wK~WpT`g>@u0>Kz1(yiO6n1WItT}VNMiS91fCr z7n_+lf&dA1vO%b3t+4l3rw8 zxu5bdZd-Pj)=8~&V(-#f%y_t;q@K; zM_pDrO@Elm^NRBdILR$Y;EBJw0T<$3fYtnTcp5Z2PX;mCUE+!G`$|PAjk28e zK>LqYB#pFUx|}Yyd)C7&VsrP1Ep-E{djT_1DVB9AOvyPDLyj}=E4Mi{cQeF zK!rIo_jZ2r{9_?1LWTJ8XMg_D5B~J8*Mc5C{qg;`|KOX$)2Dy7fBx$Q@o!#z`Sj+A z!@G5bjp%2b&-U;px<_ojt?>efuy-WW6Mf0A-WYtd=J4))^HY5BzjhxUzD9G?{ap9pcGoGA;*->vt*kutvpAiPNVmE2s_OvV81sx_wDoBuB=0f#pkOGA171i6(_UNQ z*!jqz3r5mD!KPR%MsY3Ci?$oK_hV#NhRPT~@OF*s``fDP>j`_{ofkhxu+s!eh9!bE z_TaSP7L*6wI+e3$PdA;?@S9HPv2(%zJNbY(X@@xbVDkv&P8h)_30FQ7%xMD+M>pOA zr@=kwr^N~fPkNV-ite(P$|XjqCnzc01_hzD}^#&5<2*l(naVi$!n1_r-#gq=%Gjpe_hL#@F01x zZ$T>5>6*F68p*(eii105024Njs4+6Egct7>G>0XRoohC~G5>JrPO-QxhMo4E(XHBE zql7Uu*b~N<)=cZ8H06Ft>ZuPlm9C_kI}%Q0`&PAW{y3V}IO3AP^LhrXKDR_4o zPTXtVC~Z^SQr3($&tt58xexYE)d|~Bo)!x}QwoqHM;VZP)PU94Bdicf_zW;&iYSOm zw1Ea;4RYi&fx;WeLp)?9sm>ZAk$hZ++~**(l!7)(>3sUMJo(V1xo{U--+apNe~1|2 zE4*Lcd_LXXAV&BlLc>nFp12so;pYgAdI~5;gUv)a=Ja@;Ah!XA?1FM1V;r72lFQ=3 zTg<=IBFf>z7}a@ocx_XE`2Bd}@@=H|wr!YsuKY9oJft9%QJ zAPs=I2argEkZFJ-N3UUXXo1xj)m!mVpd~cND52uxIT^cs9|PfH1`CG0(^bH)LG^2B zu_F<&NA)158I%-DfQ{aB=N5O0)M-&jkDXHKQaiF?YMeDh$&FZH#-wnkQ0|TZtw0A| zGXYk>jaI-_R>Tw!HYYq))gbyMmbWjI6kjPayF^rHB*;w-; zfRQMX#`-wTxey6@4oI}+aHxyy8VRHE<9b<%noh0%%kbXfzX|ViS*wks=C4@hCB-h~hE3mx!Hda{kuV+3`fz z>~TMIa@-9g3V{Yc5=HPa2$~KSww4t{TiycE^A>JVx)Mk>&k=rzToNu$5S)WS<8aB` ze0>EIzmN^a1|;wdD(;+QAu1eYq9mTZ>y&OlT(rO`oitCo+7|*(9nt!ZYBH(avq>GJ zcBw&VcjMYIrR+h&%yqg@4yPdT1d{5K2q`8B&p-wWB1cq2 z0j)%Og%_DpPKgw-~7_!q4|pq(Y$+j^L~k!{P4!Zo3{W?{z6{-V)F*X>P_XMzxdyR zV)Gv1%{zn2=kK5;ED~DYe4Z&KP6;XKxb#x!ilstC6W#8nk1Cfdx5kTK+&=$7<|HJQ z%Ht=0_R;VEjZ)>?Pk;R6+rQoyc>eT9yXSxM&EcEZKYV)kryO2dBY5fCVU_nE2ceg~ zQAB+C**v1OjS#hO+pAyRfAvd>sAD7ZGTPnmzlT5k_}@&K-vSVRfBeSi8d+@RvsRr zJe)*nb%^tsq0ScybJ`fD+$dDJ0j{iwmcp}Fab)-8Lo8p1GsQU@Eip+Xi7cKe3PTW+ zBL!w7F-#6|nvB?~cu-IdqJRJhINn|KLkR&KiGpY_La0SJQwKSrQ5evIuFDBQ2qtnx zVY((Sa*T1vxk!!#%TNhV>%*;-6ndjt!shc?B<)9Vcpi~_><8!IrF#OZzI$_vQ#LO_ z98oVoOEMenFsT0k-_{pi4wofd62)& zNf~b>Dbp(vV|tr2;2UK`Y?J|PQ~)%Z0#wi?yvC4-8Y3Yl*Nm9VOT=uW1TC)BX;Hhi z_`UOaa@^=)wwS$*wC!wL%eHtw=gVSx%$F(ba%EN8z|qqH)WjmzNI>o(L9qn~*^v?p zwxAHdsE-Y81K5uMoE9b~>_Eg=mK-Aj?t-M}U1zjhyALa~aaLi4n6N4$7mw_W@I2hcc|H@xRTXC;%8^Qx1Y|^s z$cTxc;0xfuO5~6h2=EB+C;$jzLE*`)Z?t5PTM9s1d*s~`nH_CNS|5Lro`2{#45=QE znsa;ntnBanU5jhA?SV^*=!gz)HqOKz-VhCxiD#d{X&)q@#UVZez7Nc195ioOc?|^{ zs$m**zwuMhlOa4%6nXXG^>&RkkT;j6*iwx^a|1Amgxew&z$6Ty#3p$^i2#^bT7P{% ze*j<>1~9W=eD&eow}?<#7-TO#*}eb!SFu$|Uj5{U-~OY&PxR|z;lrmtzW>f20=U)# zkDouJr?&t$>p*<<=JBRJ>)svSeXMRr{PMV6EUbrG_{Cqy>lata)x32&*%yBf#AY49 z=FP+UC;v1eDpw*Z0r};RDrX|DT#V1V(}}^A3lmo^o%$^aQ@&5P1b|}Re_Xi|XyW?# z*-t+F*59R|E7dC3hfjZe|Gi&>>h$T4_TTz7s9qm_`0V+g0!TWNYO--&fAYlM&ugdf zGTQojeWJetQ2PcC`_(7A!>RPnZb?USwTIWsU;Ilk&7-rcT#or){13Sg4$Gslj`H9A z<7+J;K)uYSW9)ALYGn$diw!FRm{5C{+~B8U_bL`rCYG8AO#IyM3& z(m*HIph1)vog%?Zl8`G$B2#ZQfu(Ucu`N1sJMN?`HW;zj7QNju!>Ovx8hPk!R2GKk(v z8i|fm+L$g(=af3rgRl}m2%GSmlmhWGO+Yk~0C#4CC}dD(c#TfL?2UqEbP1Y#WMDGO z?o-5d#&-&xm1p(Y;``nwUvI1#w<$JdOMG+!^T83pXTU=`(0W4frVPkxaPSC;z@VZ| zN`48Egi8=5KYOT9XBhd`p$&hNnW#> z#IAOg@gxUPWFDF#tB~4`t(QpkN+B|e)_{_AN*-;D+RJPcDtN@ z`gHj=Axhr>_^;ZcYt{p+CfEL}&vp;J_6DH#jS%tn<@6W-Qf%Zg$UR*i<$wO?wKV{x zuQ09u{eQ#ZnzE*3oH`I?8l?oNm&vyCxPK2oD;3O-+g7)=m*QMhZdKADmHOewCaLFg zCOW?U%s>2{R#FG8B5%L^8GrZp0c<`1bhqQ{FYD9i!_5)RZ5&?N?hX{q)Df3c;-zZX zh%ExmAOB;!`>%f!Wqu1lnDqDG#77jI$4sC(=82f10@;Is8lb=&#DU}xK!P%Wc=zi3 z8rN%xAQ(|xJ6M3y)hHc}8H5c4V593)C4u4{E8LJ-5Flf=u(43DL4vlk$mprB3yFm9 z&B|h|fGbp=X^%Dae&ewU(2mnrW4LiC1VoVfJ zP*6B=BR0Zya;Fn-ERFfdS35tSg*)?^c@=3yha?8P%_(qgU-6OiMI=BQCjc9j0F}@L zldu{J(B2w|cBYJ|?vpzQZp{GP4<({IT}zyv4Et_BW_RXuKnsTPrNER|iP2?bYRW;p z0_HM;RVj$ufC;O!5o_>33XT&oQ>?hIzKM+phzo$Ac?1#F6`8?KlSG*2Bw3;`I5|a+ zOgW>HdtHl-wnHUw*2=mAJddX#R2vN`j_M>X^HsMSXLVS~5m`Ao!B8v=JUKXs0yW%% zmL3G8KnkY=76bwd0OS&B0-X2+5NJg>@c=7e!Rl_52Z+Euh=aOXA#2f$;Zl$<6|b|f=U zo|JX~2F*$v%JFJB@0`i`RKCkPbxamKxNI_<_ZuaHY$!vt@xF&O>?#Wpl6g*ri3$^d z(l?p*g_(&mvHF|k=6N9jFbNZ2@oIPf;SEy)3zNS1#q!?oT(L9>Km7bJKKSmRFeozv zK72fW_LucL-wi-rHSF@`PwB~103(Kl9!_87$^d!{54W&0UJQNPyaVVyTD+mhpN|*- zR&U0u{qlz%erQ+l~2pzC?rBsI3qyR;jMCJ%C~8+ z)RyTxh4Zx%`1bIV58wL}23?z2h4SgMpFR8DA0>KsvHb>Ad2}&*_}TyY!F#_4p!Ck} zqPD&Mt9|;Qwv{514*lvfosP9{*S~46zubL!F4_RpZ3Tei+v$J*7aW#H2T;xjmVc5) zmryn@qXGZ8)j0?%#UyoCU-nl@0XSQihqs!trKFsWqnFXQX$Ek(y?5|eb+%8B?f?KF z07*naR8H@GG(?VBg81c|U*`8dzGNBUn#)(e`egq0?`{zm?(puqzJ0~_PdviHN9Z`d z)nyN$yE>w+d#@G1W(rsj)g6L9@2=>WB;&@)_7mASF(+bA>+a#F04gT}B?^nv)HqQP zD8t#0H=HB9Bt*0kZ|58op2$5~M*O?ezs}b6w|8_Zw}EM$a)YETV-RsHjs_K=xt^}{~r{HIE# zlEFwc-2Zzzd!My)=gysbeYu9rR4Anq88E6=0l;Ylh@?s8nE3iYP2y&xW_c%VR>zNk z5F)r_R-%#NNL-O=W~{HX@k~QDHSx%pim6~zFxQN}u@UH*#Ip{K8?uQ+Yc>P4WG7&T zWa0tj>YG(LQVj%ZNo^HQBo}3+j?}4EEvZtGOnbSA)3{d#A!@<{Q-xqcT8{#&rI8}2 z2?m8HbyP==OadBt7A6t)AOc2$XjEWp27nPrAvKc+01N>DmMDcPQ5ygvTTV%lA_tI1 ziy&Q-If^vl%#05y9wHgIfO$m_b2-X5oZB!_@ z_C9dhkA{I5O%=+LTM#CN_w0Q!L|d9gVhVB!vIRD0QBgz;~{`b>N055IMfYS zoUF7~m8eo`pEthK*iTWV;*w5(t%{XG4H?HyHRfkq1X#9~j7ZtuItQT13G~>Ws||oA zOl8QV>T;7U*?9m7J3n%*?vaGY_S5#MhxhJ(jv>RGxkJyeA=pp@Nb9Ot8?+ZW@go4vd)YjnbYtpE0M`4kxtbkYNvi^YjkSqU zszauqi^Yr@mjMxe^6q%d&3;RgwYl&aLHX zzuPJ7Qb}5;S*5z!TTk{L7?K8do^-2!Az3;wB#OiVy1u#6T0T%o6sV}y>Z|@1wYyP8 zp_PPK4kXC}L{%$^(c5S#q7czqdjMREj9FoDDi(n2coWaq$d0Z0$hJ%drwpkff=WVE zW4q-80~RqO@w%B&38*oV)Yr0++cs33@lh)a)Pq&m$}D_{1px0ih*DLFzB%k8l4^`n z05F_GVYU-Pd2^_twu25+3c#999k+6S6_X<}hH^ktbf1)EegcT_S9+T-KlT3-U^Ehl zRE;VCQswamNX<%v2+ROf5r_c;dWEN1f>YxB4V?EJ;Y{l$}hpF*IHJgH|Vjfr% zl$y0JJ=3O5pxQTXXsv)&ZLWkwqtgITF22b&Y>5YuNpuiWT8i5QX~oz=pCEIgFjOX@ z9VrR5MaZdaH|{ttS-px7jVMHra2zUu$ZK6IvBfa5ur_KMgrF#inNTW4G604k03K+_ zDI+C-894wV!-2^dt0^h58tXx9EK(bll#MtFHBru@tiqBbMkYtnh6XE(wMmr>X=7K?10#RXBhY82|;Tv?37TfTRFaTTlytxCa7k0M#%c8Z}o4 zMqoo!D+{1ehh!`$h!H@d3}6#*8I35SQtf@k3B*K!MjH9Lq|`)PC@7#;)g=-NW=laL zHKbA%LJ5rkDR&^ECRI)VL~6$n*kyro076-WiM|rIBv2vekw{*}WYMcCY|Sli^XR%k zIl_3PwZ=Me5w0TgoH^!b9Bkr{1j;NE)ul=D%oVai1ju zkg*-Eo|#)Z*fJKtK4ZN2a`p85Rfj9}DU&L;&OEeu;F(c{C;(VL`$)cL4>Q-|qec+6 z*3M>~y`oYzR#9=DcmY5qbrGb-_EvQa(5Pbzslre{3-ubTi{3P6FJQveIL+g#;`uH8A5QbLXE^4w#sJ=Z7fERfe> zc=C}who99FWsnWQhR|O*v9$LPO8}6TRdwM+w&$9LX&4e#wp+_=L$F~0An}#&ZKU0z zv6fh(>8+dWQ5(FG0Kg5ljr~d!e*(}90iAAB&6^ujoO4ny_!M+i#l>mP@}bQZ4^{{HJ*c#)@nR~lqw(qP%4Q9fSPi= zKb&R+2EfQ6LSzh5QV?tt2XvH?GN~GI2x^$DCaOdcR2d>77^6l-N#~&)O#)2;5>7=E z5G!>6qXdcF@wzSARge;iB-*UGrdhN1s%l%u`}=evRMmKG0|0rV0s!DaH9$nA+CW6g zWiz}`8h{xDaH$|r@G>&i36H0nM_p6rNF~}@G{(@^)B+(=>6sv9C0j^Rl|gMhl!B~A z3q_!@g=Cd80tq>#1VB&&lLLs939N)#+=4)rY(N%#r7n+@iE2RVVPdRiESs|3E15rD#9 zK-wkdam)!2^m?Ir@aQ!NN*UPDs6`E)YT7il)}jI+xJ&Cgu?UI~rKF z0Ft^OC}PZf4Pb?RRaBf!uW=((H)z!OqRrhpPWus#hwoUnFLBcP>+L;;3S2Ef|R2}IWA}a;@R;Eai z1%2VmTAbZ@v7uhl!bonuPyZ zvJhX?ee9=xO;jrx^H^#e)1t{QHKEEh-hJyTpC1*t`*7Lj6hcsHWe-B^unc0-*3xaV zbc8fkbTC0>%@<%hhqW9bMp6qI8OhX=|8I5b7yy!s#%;9nH~6QkO#dpji}3S-yo6j4 zyH%ylpBZU!Yu^a~#YI(a-n)%f%BiEMQqQ+UCl(Rc2(M`>xKFuCHQsfNf#GF7TSlv{ ziLZzE54i0d{e$b1xokq8oi{TlEy{OfBJ%)>4l&^u(+Ar1vn~ioss7;1Hw|&IB2}## z91PqddirFDd3MYOd0Sl+j70WIsBX1P5{X{v>WYR2H8_}4$>3okp*4{x5cy1Y*S)+|MnsRDI6zLYUI* zxstO1c$DTsJAQroCe?xB%6TMgQKqIc6MuU&2-b=bZP@NQ7xTi@k!`O%Z?p8!oTUJ5 z>|_qfe-t=o;}X;6A}o4gQ9b-j zSOL5aW8)FrhfMtJ2Viu<73uuSHqS^AM9La2vZAOEQRnC&CZ53)-)#BP6D6&3d z*#0O_R!j%H(!%jq0w(m=RI+JnIv=b^7}JBBX8u$V$Nt8&LlPgLA>@!RP%*RD1%#9< zQ&;a_hkt;x!;?;qyOWh?rw+?BF)+nBp<~DREnOq0CypeM2+=d05iJK%C%?~x$Bja7149^w|6W+LA&0Pzs@Iaq#WLR>| z&d;pG=zA<*AgDf`j{rrS$C##J;y}^ykB^7rF+o3U(60_&&#I;mpD`wMj55#b$Jv=9 z%=#T|jkqy$cam0K-NWgcSR1rPzp?^;O$r zI*b1%Sfw-<-P)^|^RIM(V#no~tNdS2o*|RXzR39_jamc3yLdaafzSOM;jKMmqTb-> zM);Fz-&4%z)7T%lqDGspreRR7;QEc#9M2l6AccU?Ao#$veGS8KvFo* zRM}&?!><*Er}l~!(8Z*S?;sFbqf=uN?IfzAkmaLa2hlxED`H7j{lT>TKEKv$Mog;i zT%;Wf#{Xz&ES)6hHw6SlRBHszL3De#?R>&SFY>Rb+oA+PdWsu=#>8fRYa&qC3nQ4`N}+2ocon zYnyQIB^{)P{=MDI8v;KtWlz4(w!_TkS{hWGM^0JrG^I*7&P~o zUNfUq0mUg^l4OmF{x@h*4jg*h<7h#y33w<1E2Ed16CMIjz~HRu^a>OKr6rN~ZP;P8 z1`1Fpcf@h6cjykcC+w(tx!)CoY^eBVE~Agf@2XH;7H4Z0hTp6`*J>f!*ap4*Lgbyw z#VJAP?Ym}~D@vnmpIXJkfv|4QHWv)2F{YO$D+mkh;eM1gEUQ{yha?_S>7;84<_n3Z1$hxO6OOXE$tw9DQL=~ebT7a z78t3>Ww|Min0`O;$g}Jz0Tn$I0K6uZ7`&)t4RvqiXedS&ensf0EfXPvZBeW`L|qwj zOC&x9Rb6ukJi4yqfGU2nN>s$ifR2D$)W|oYpah}}0ZD7?k(9!M1-+mou9yikZTC&x zKZHR$vBS7W%D-!UXf$SjE(*BY@BE8{HlwX+?K$T7LY8~8^>*YhW8{2%8zq4^c9}(9 zap%OsVk9Z(xaW(M^U3?Lg2Rj)#pOcAf;{esu!2XO8^RFCqB}Vezge?`CxmMQr$%S6 zSoe+a$@S&O_~*|*w|b4pR7`?2oT)1?_sU#+JKK1qqCAw73-|4?eS)qLfkUC{slJvw zzzbkod|y7w8skW&m*Ib#im#Ho30NshZ<2v1%4VfIVLf-?-V(-w3Nh+jeN`Y6-3x`O z2?86ZSEF`NcBwhbu$NshdifUm*L|_V_!KIgL>g^riva@Bd>!7Xp9;t(ls^&q!sKIT z+?q0EQTGNgz+9nDUMc!h$EB1&$%`xCRnB?eAW^KpF2*gtoMi3u<1jZ)!+2|%ykWXu z;tF?3_PnWKiK3)6q{xCZ9S3=m~oB?FapxTwBIY!*!FpuP!fA{!EJ z`{!8CFc=m^t#IDoL$`<~G(QM;;m6q@{V#ek2&zysvtIzw?WAOcMBav~#4%`5Q{oUQ zB#i^5AX>EEu6#9_SQmzvUgVnS>h)OMzDJFvp8MRZjqTypII-Da3#%3L&Bn6Z#K|Uh zW1?=dhqtyY3+2Xe8*97j6!&zLAWmq?T^awS6K-8sz?5&e)s`EHN{i<#*&Ui9r9TbO zG@Xz(!=jM->cB#zFH4#BAUB*1;c}joOAQFa7Oe@50m1b>X^i@e^4L{S)2?D}WRs9| z85OuMza2Q3gI3)j`jf`AX_YxQnvM54p%O7sxF92csi&p#mte8Dn-M`oG6XbSWl-D3 z>P1q8XT35~G}Y6b0{B0E;dioeyFgn5!2ICSzUdq(^7dSp9IQ4aL_w3emMsb}vnq<; zYfzcSEC?(tr;vY{a9}Ki0lakBJv!ziX&}wAV5t|TwxKFFQ%|qfGG^sVy;FIUNp-lO#M0ouB2Qsk-`5gD`4F_b9^nx z%o9qM?yIGB(NNc>-z8vjVt@YlhkjU(T};N~)L?MsF@Du6qVpJP16~h>nfAVYxr#=MT1i4F!2pQrk-se?AGhE zzJ>{wzN7Rgub5ZIiVDqiP?s;p2Fm*LrTQ&3c#&ua^XtW6_=+VL40Zsjv-IHwi*|Md zS|#j?y#Y-v^@JfeBr&zv@iHW`7;6M^wr#3L?qkU&HK2cn%xmOC6#vKQ!<}>6cQL?Ga6EtSoPY9uD(%&_OY-i{PNQf3y!20)jQRm@uN$P@9f13KOR%wYsDcrqvk z(Q&5+A)#f(5k-ToPOIXhG(y}Lp)lxxI+kJ7%m(Dp-|=!2gSwJrWs)NyX4L(3TtPn> z5wVM*-7;*|DRi{0%3($8XnI$|xvR_~d`yyvkrm8HrORY=+nh>=mYVFC;__nFEb3F6 z)1or(OyNaa`Od}-1vX9#KNq!o8Q!cpSGIgJb$rq@HJey==jQeNwlnQIh$7z1>)+uz z(Fnmxt2nY+_|bOM_7O^eWcji$aRW99GF?r6f32(zS}G!N@27?ny5=%;3C#V^^~aE= z`jDHsN%X8Y;PZ9qT1ygLBc_p8^QjLc0K&25zt2X-zI`WtTx`6E8@~(9T-Yc7n%zlW zez(~XlQ5n<&<}Ch8%LL$|I79BcW!kxRGH~QY<1`D@p|7^aU3vpClIh z^YAxtV^eK5e9HB=f8WNy8&u-ddkV1oXyT5~?Att+!CQOLdHv0QcfXP<7X$%llXAzG z@*mm|g&#b(u3ti#6q%O;ns3!^bte8G7xGXw7Tqz$&w~!UCl*JZxeMXsemz520I@JZ#o~xdG&^wX5a@b*A$#l6yq*! z5Io*#br$!e+o^C+O#;G-4i3!(#JF$MwhoHYD(nxWVv2g^WtwrCFQeiB`Y6RjJFx1G zB3hxAg!)jA}AV3eKCt& zB}nvip6gF$20=zi(j=Z$CJyE5ZC3y*;TI%4OaM9E*WPv%v4M(V+_swbxE)nLRXceo z@_n7yfc+d-$i)^#300;@?J(<#R~Cr^$7Vj2^NjO5#F>|s6GS}>m+l`12>W$j5m9O% z)8y&L@Cu9>T1)%gNLV7MwX3}{A1pg|GbT~JhG=;z?w|%#2r@O+dLM`JL}+9#ig1HI zJH7?j@ut~B<+b)V z^$~})U7M{>$Bcj26YT|`yL)%68dsifn^lB4Ma+6`l?8t&BGUj_Z-HZYxxXxrz<~hO zMr(6P7GI}_KSd?et#UgoapIw43|UEUHx8U=cFm%Y2nwcyaBc<Xx@&V))OY_kXwqOA1G5I?q$-7xLj$r;KOjO=8R6D5IP zgf8_|_Ht&8eR{ewL~TXlgg;|h7(-kE-bGW)qn8nD=pfE`Gj*43TNn&3HCqG|BCknV z1hQ{>2MR@rW(eJ-3hr$3v+JQ>8`T4Q&f~9y^7@){ zeX>!HpYDhhkp?D*t|cE4$a?+BH&}B5e&gI^^fTlSMtudeCb=31f5xhn1tFHuF;T#B ztySBIRk4eZRAC^1LzraYLLI8EqIT?xN4Do|=>qC&3abLq?zxZKY zrcXP=YD#@pz^cT%6IH@wLdz<^PNc$*PVR+5A2)YK{J}OUA0~&Ap@<2kv_PlEgVWgWjR<4LkEEV7<6 z6PyB^QC6Kdv`484oG5=4OL;vhwmcmuomw~a`DRvKr`w?O2k8j1`4;)yK7A!_B*=bt zJj%3Ex%tJT?8mbbIIMi80CZ|3n13-A;QC9ntCnI}pRhT4wYXVX?QU%kzp(Q(q^GcF z;x*4&5%21G#)r`D>}C6txpBpNAnbTH6b3@`Ov8p}2OXdW2Z%*?;SeJdjXO7Y#>66` z_}jdJpHRYBZi{@jIzo?xt1d-v6)A>Dpd1Ausw5?Nm$Fh#bgDB_?^_aqEUz4B;Zue^ z=lY;>Ck(_18^3JcvZ^OK8L%dk?ArXe=SfCzz{kN_Y8x~9$ZPhzTDe6?IS+P$sPbtx z01qiuv>&;~=k$2J0Rc+-zr|rqJ9KxbaQR|LbrHuQ4pBH2`OiW&wjX+1X%+i!^2mwN zD0`NXlD78}mK?eP7&NG|o*ib0(H`7`C2A>HmW7iLEA9+6g>Sk; z{6HKcmx&w+BL-44&6w;%vf$A9Fa-ejHfYt_q|X^p==SZpm<^Gq>zR0ap;$nZuEOE{ z&#FXrAdD}M#i)2ZH(M0IUOQds-L!U9L(qFU*Wv-G(9nF#()5V{0HV)wl46=pZ}o0A zpnvfJ`1U!CF#>C>3!NyrTST;|A>VGqoByc%cARb2y2DFDdlSrsE~-$WxiK3IeD5DgZ~ zY^}_uxDA`X)0amv0&3rFZw$KJ{zL@=bj{ihc9X?9BbG>Xi(jq}pu*KDki;*0>+LVO zfOL+ah|{Cl3km@|PJBmtRz0D)RbTKPkTm<-&Cs>KOlCo3!_J93H|TS`#V9nEH(*gU zdN+4`J=sh%a0uf#b&UKa4UCswBcOO5@oufsF`#tI-YKue+e$tZIO)M{;@4PG#dlo0 z7bKiYfi;d-OuC{P)ruj#ZMnXfO#7@wABDu;WgxCJh>^I&+RQ;^x?B0#%9MOh23B3! z%FuzKe!#|RH#?SOcK@I*U|nxGhf$yCo&He` zwNin=laj}srf~H0-*_f|O ztj16IGU<^{|C7>jB8598gM-^nW(|`}RD7nz8!zq(V%1201UGd$)W)G=+hH9FW`35NW{YiZ<+#t5c`N{>y5X89$;0LoI=H4Pr_RXG z`Eci9l}x7_40J0A!!3}h545q5Oiq)}L#11?F=ceUMWQ#^dW@?jT4sO3*i{s<-{#D? zt-1OepF(_Irja7sUrwX+!|9p3ny?TVIL-415Re-II5ZN! zj`1VmhgKE8T`bAl&4;ds1D3!iEFAYf{Vliq6p+{cYT+Em*ZG#}3(gq&pHKp8E|tAR zke77Y>!=fuO!A*@**dxn?897w5dI&)!9g|rqT5XsEB*<&dk;^i~tV8+F zKY_>t(MCVhd=0GyW~WO7W%X2v$)g||7NUB>jNdS1Nj}zP(%cRhKQ;3aceguv3zHv6 z{0Err4Cuf|LT$Ya#gx#J@R#weZ~q}?daagDU=^xm*r;eZ@GFYO{!tWwl1)@>PM;|k z43cD`A1oJDEvrDpptbe7hSds9mkYyD_V&nzBYRwBJ6iS*nY+fapoBz8_XbsEGC+~# zNa|~f{TwZVUyu|0q->&9I$2@)U{{#*SMeb{DY!|V^udBat8{N=N<(KsQmSX#UK%rs zPLxdRccwtwm5)9m1q=c|kasr5Tp)OUKj5&3Yvd}H~z zW(mBCG4^}E$qQU5*jyKWi8=jjm+wf9|?dIQNaZ_)hO2Tq{X@Y zlKK)m4?J>=gDa9TLNbQ$=~-R*{YB{uv0PDQ=#9ap(a66!J|h+d+|PXq91(E9_?64D zNG6bJwy|&MCi)&T&lx1yjklq1zSUqc zcXqiGTBSfJVR4kG7&H$wAQmCQSPB-an*4Dfv&lw=h8SNyhyJ7XyK&XEHduPh*sD_ZZuY`ogqu`Z|p=a_x} z<9#&h;=A1tSADr>b#)_cJ6ysUw%7g3@eWb21HC>#Gz4mNbEB2~q}1$k(w}np$;c!4 zHBk1wXOfx`WDs~2`mFFJ`bpWhQPt-Bge2(QPT2$9=gX#Qtrr0w=L zZ%_)Pt%H+)Au}0Dl3e)w-J&*E#iV|WeQ>}sW*(bC;#+@{vMFS+_K2Y^Z0t>An6wO~ z#}^>Q?Aa5(yDCgH?O>!36T{u5n*1rVcO6vHEmuG6!FgjL4NROvo2W9R#bR0cfBOE* z1oBm~YUGmkhd5%lXj~(tuCP}#9jBT6BS|=F)D_XsRl@O{PA{moy7@ilp*->3TPRx2&nsWE= z*!rZhU_(9l9LW!w87kHOw&CQ-`2+Om#EEazYo9|=Rdo|5)}SNFJ0;bUs^N&_?35K1 zM#QvGwEE6%G?7JxmX-N$z^B=Ye=i#;;69je54LvZGM!Q5z{n)~A2)tHu)H1_A1-?F ziWmsY=?MeMG}5$pEj~}16216Sl!Afm?Y31sFqU=Ss{H>A4lAR?kOLu&wES?jIhyGa zRwR>XLITU5bzo-(>)}%4g*~5xDV%raDP1F+kdwRDEE*K^yj>Rmrj$y&=3j4p++W`% zWC>r*j~YkezYo2A9Aqqko?)hZdq5iR?2^5BV>h1saF+XUzdJrmpQ<-M(pEMsTK46HW(Q9r z*-ylb3n5HPhBOYZTYB+`qlf4HdJzQ|PE;GzkOg1SPpXkddW9{Jv_!|w-LpLHGlxb- zQ4bcw>|M6fQQ-^EU5{tQ0HyK5Wj&?Un?-(V%sE(AJ>!uFMZbZHgH?J@6B#y?rAbRy z1#USaSBB+_f3M|>S^`4tyq=%=I+C@PLC)OzIvzHtFk+pjw^Jmi#BGl1!qTOnG!p+w z&49hzsL9PYW;-lwhRumPl9$c(9bKt^qDQMAoI>k@Po4K#5y|%BD5c6d&u4)jl>z|| z;J>m}MU-9ab6<@fx|=*KBR2$|rq{6;GbgaN&Ph5Pwckf|)3Rv0)`V_jSN1b$M`i`z zx7Qb@Ucc|-p^BW&R!x%rdM!lzZ1D1@YKAs35OwM?lR5EY-uTVfH=(Ozf$(9F>uIT& zQpC0Vb)oU*#NO&d`N>XVqwz94rbNXahrd#Xr`f`h_BWe$6~}ecacIn}ibs7+9;+a= zq}RoIYjJULIZBJwRBlR2%GjuZm`QZt;~*5N2q^tUb#}AYActSMpVP$T`3fJg zy~}2fmU%+u$H4WQlH-ISxb(#2R4T|u&$V%Kja0Vl^H}vz{M&inTdfM+))wb^%oymm zf39Lz%kiN{Lk6?A(biVoIZURDwsEVFzteea3^>gYC0;u{$l^(mz)akyu5us@U0wKAGi*gSh4@3kozz)26}v{ZqZH-V;mXU%*-gC8hs#L12}nYq{mF6+4>eXu?C zq@KS1yAJT(IHzJVW)LApJ(|q!P2Qm=@71o<(h{htYxpdXqW~A{ovUKO%*Z;B_cjvv zbjSm0wVHZdNq;KIax@KqJlbW>H4R1A)^_YT%(TljaKlqUiYEm<|D7pRVQz^jg*lqq znm%@0J-<(mx!5h2(bB43B+Au11GiFH+vQ_sR=9QP*=`8Xs^t3p=SD=0b1fOTUhj_> zKZY3t&b$3lm9+uAd@Kz=edYklphjjD(zQxJW5psEbz2oT+oWFN)*|Fua^I?xyuL8UA5CEVZX=WL>E{+EiHY0{k>NeQOOI?M}Xz~O5WSb zM*7x&vKyZ54h820Q7``Q=l^Or`S%ec)p7~?cz5zY)t?HuZ_HZH7}{HJbRtC{_BQ9^SjB~>evYfippX zynXE6G-8HGe9yLfLRvOF)`+$q2TyC-FM7j}(%}8Jp-6eZ?GM+!pVW5kpg8Fm7`&c* z0j*{Sj_Ge+pIM2#9D-E?9($+GyT#JZU6CC8IB6E2nHaDRzjWQ?TpAb|b$z_Quwc-Q zVRrxLE0-LIyzZd!98Kj4`9A*J;Q>8O{O6>gkqUP-G+h5)dMm{ueful(aJdx-woL|s zZ+DlzTQ4Lm&i`RtP^@L`?R@LqL2F}k6ZT)`Qb!5j$CtpnFDkwRf&4Ca3ty(DrUZ^I zT90za5MSp+-sX09ciXq#F4DSgi&=bE#!lKCCqa9kF1;pQb8k*T@29>G7jN^W!gppg zy*(zZA|fAgPJR+v37-T~kDi`xj#v^~4^s7oAA8U$Y~gpLSbWs_yb}bkW!pC#L;nN1 zLtN6o*tj*gJk=H(v4$1B1dNcCS!w09gMW@d9yIQ9J&;gUv z(_a~p=iduAftY?^7tD7D$#|Lb@$%#Sa_id|QyM&{BriTPGvCKM7!K7={&qJn4o<#n zFIyk)rN5d*?&!w8U2b+7gMp=aH=e=aotr1Y&NUr-bICiwif zkm4Iy#k3T?OPv?)fv-b>RTb`rA`h)oZ|$HL0j;;Cz_+ERr>DC+cdfS<(8tSv!#Je5lu)_qQ^mF%W=!OS-&rHD$*tGXnhz(gt%@Cs%Z zVUII>k1NXF9M8?C5}wX-n}2IyVgk1_I|g$Hj#=>m=Dye6#l=Y1yZf?odySOTuVU|gZaeBY-Pc>=T4C76UWbDzMD%`14;l#>q_zREgp zxGx$0{^%JfJAK~ty>t+UK3cDR9j)ag{omHXz;4rBJ^Rl)8XX-?$bg^9=Hn1Zd7u6z zVKteZfup0ZUs++xz=4zA`6C03nAdqEto?Dv`TlH0B4RM>lkmIyxT&k_4d{L8;~Bj3 z(ZZ*gwErLEjb8_hJGR08*Oc$3tFC`%3@P@1_4$7SGk$foAw^^0$2*$;UkT8IFUa%u z?~F>|^ITe|^TX+5V!q8n`Js^8-|3Y`t3269Gt!sk+PBqOB{Vb=!N=0T=Tgv1JIELO zOgnfS=xa}zgHlp(Fk0FDd5`YT*B;E2Q=`}>uUnhAL!F}l){PYS!F1_ux&KHpVkJDM z`F>9gd!V{y^H~9OtMDJWW^s^yJPr}{Sy)&cfZ6B0ROIbg-?8=Jxco+i%`|o{LrUq! z=vsP~Q^^0>?PiHq_$ta1^s?dP)kl;>_2k(#WcVujNAld@*H_S0oRi?|zrH!@`nHXW za*fi=FHdQKPidDvOYM_60#=rbaGL`f-x;TeIKlUMn(l|}F-Ulwx52D4*9X3cWY`b} zM!9bsTV-YC#142S5`9--&d%K$2tw>du4mn{T(VT<@G-z zSaSmTfBo9Q&55A|$LSRKvId?|%6YR-_PUD$_I z?NVUpS}1zn)X-}>VwiYbT%4Mk+8N`vNJnR9t3gd@XsC$RwMxm-=_gb;*N&E!FFHEI z>o=vPrBi0N1moA(<9KQzJ>9vFPkg<#!y_Z!etsPt9aN#vklzanDMNZh-;EeT&vB7q zmzI`90`cC?&dwA+;|As+K!L`_#$vWEX+tHYrNPGe-Olgq@{(hZC_W*9l7iw-p76}v zTyjp15C=zcUY-*tVaDLfif)tM1hD`yYO8@TKff(|#_rypzcA^Xk)EEOfq{L!&g|SA z2o+4ZF0BUa8TQuJWwo^|G&G0L&zUx8XlNpWf<-o~|K$<3Fyl$VvUW+=9_v~Vh^ zC@b4G>6L_RIF{1cnwl1Lb_((Ffkn=+VPRlkU}Vh7%~h6@%gD^!4X_}{EOFpodwTM= zv@Dsi#*UH<{Q*{VWhJ8ri*f0kP0L!bx{ba*QM>rs>FMd{X!O$Q1o-Fb>Vq@L0OFQ4 zhsKrOzP>nV%68CHZ?CwPR*HJLATRHqwl-6NG4qC!k`l1k?Hd>0S~s`0=4NLJiHJmM zeF4z!`}?MC6D;KS%uGVCLdeZsT{$QzDLFW9-roa!eb-L!0b3{Z$%B37!Tun_)DNmIndshYq2ArIntp4{84^k8}M^-MLo-Li7 z{;sZ+$s=z3InsqYCC{W*uCB>%*K+XXwY3Rxaqg`KVApD4VL@?kWMpJ=GTwmM$;rv8 zc$e;mW8$GoR768N~&>?}Kd~$dQKy(^C6dWwt8eSX#&^e*W z0RWyb7##qhQN-Z8|8p2_Zf?LJHo$}Ib^@2_^6~QedvPHwBy`Y*4g~z)dc2NzcY{}4 ziW?h~3+SQ??74}Sq#*ubE)v3QQ-iiZO-&24v+TUQ!}iRD>g9EE4 z$w^6c(YtMQz_;+r7`!19&kfBU!j|LHdX1c(2p bEwL9QV$E6UJ4EG50Q{1ZQkJX{Hwpe9#Sk)t literal 0 HcmV?d00001 diff --git a/dev/man/faq/index.html b/dev/man/faq/index.html index fcdc47650..ef66dadc6 100644 --- a/dev/man/faq/index.html +++ b/dev/man/faq/index.html @@ -29,7 +29,7 @@ using Plots fig = plot(sol, vars=(0, 1), linewidth=0.2, xlab="t", ylab="x(t)") -plot!(ensemble(sol), vars=(0, 1), linealpha=1.0)Example block output

Please note that the latency (compilation time) of the first using line is long, typically one minute with Julia v1.5.3.

Can I solve a for a single initial condition?

To solve for a single initial condition, i.e. a "point", use Singleton as the initial set (singleton means a set with one element). For example, here we plot the free vibration solution of a standard single degree of freedom system without physical damping,

\[ x''(t) + 4x(t) = 0, \qquad x(0) = 1,\qquad x'(0) = 0.\]

In this initial-value problem, the initial condition is given as a point that we can model as X0 = Singleton([1.0, 0.0]), where we associate the first coordinate to position, x(t), and the second coordinate to velocity, x'(t).

Note

Usual Julia vectors such as X0 = [1.0, 0.0] are also valid input, and are treated as a singleton. It is also valid to use tuples in second order systems, e.g. prob = @ivp(X' = AX, X(0) ∈ ([1.0], [0.0])).

Below we plot the flowpipe for the same initial condition and different step sizes.

using ReachabilityAnalysis, Plots
+plot!(ensemble(sol), vars=(0, 1), linealpha=1.0)
Example block output

Please note that the latency (compilation time) of the first using line is long, typically one minute with Julia v1.5.3.

Can I solve a for a single initial condition?

To solve for a single initial condition, i.e. a "point", use Singleton as the initial set (singleton means a set with one element). For example, here we plot the free vibration solution of a standard single degree of freedom system without physical damping,

\[ x''(t) + 4x(t) = 0, \qquad x(0) = 1,\qquad x'(0) = 0.\]

In this initial-value problem, the initial condition is given as a point that we can model as X0 = Singleton([1.0, 0.0]), where we associate the first coordinate to position, x(t), and the second coordinate to velocity, x'(t).

Note

Usual Julia vectors such as X0 = [1.0, 0.0] are also valid input, and are treated as a singleton. It is also valid to use tuples in second order systems, e.g. prob = @ivp(X' = AX, X(0) ∈ ([1.0], [0.0])).

Below we plot the flowpipe for the same initial condition and different step sizes.

using ReachabilityAnalysis, Plots
 
 # x' = v
 # v' = -4x
@@ -69,4 +69,4 @@
 sol = solve(prob, T=12.0, alg=GLGM06(δ=0.02));
 fig = plot(sol, vars=(0, 2), c=:red, alpha=.5, lw=0.2, xlab="t", ylab="y")
Example block output

On the other hand, please note that in the example of above, you can compute with a single integration the flowpipe corresponding to the convex hull of the elements in the array B.

prob = @ivp(x' = Ax, x(0) ∈ ConvexHullArray(B))
 sol = solve(prob, T=12.0, alg=GLGM06(δ=0.02, approx_model=Forward()));
-plot!(sol, vars=(0, 2), c=:lightgreen, alpha=.5, lw=0.2, xlab="t", ylab="y")
Example block output

Modeling questions

Can I use ODE solvers with interval initial conditions?

Although it is in principle possible to ODE solvers for

How do I use the @taylorize macro?

The section Some common gotchas of the user manual details do's and dont's for the @taylorize macro to speedup reachability computations using Taylor models.

A note on interval types

When using intervals as set representation, ReachabilityAnalysis.jl relies on rigorous floating-point arithmetic implemented in pure Julia in the library IntervalArithmetic.jl (we often use const IA = IntervalArithmetic as an abbreviation). The main struct defined in the library is IA.Interval (and the corresponding multi-dimensional interval is IA.IntervalBox). Internally, the set LazySets.Interval is wrapper-type of IA.Interval and these two types should not be confused, although our user APIs extensively use duck typing, in the sense that x(0) ∈ 0 .. 1 (IA.Interval type) and x(0) ∈ Interval(0, 1) are valid.

On a technical level, the reason to have LazySets.Interval as a wrapper type of IA.Interval is that Julia doesn't allow multiple inheritance, but it was a design choice that intervals should belong to the LazySets type hierarchy.

References

  • v1Version 1.0 of the language was released in August 2018; see this blog post.
  • BEKS17Bezanson, J., Edelman, A., Karpinski, S., & Shah, V. B. (2017). Julia: A fresh approach to numerical computing. SIAM review, 59(1), 65-98.
+plot!(sol, vars=(0, 2), c=:lightgreen, alpha=.5, lw=0.2, xlab="t", ylab="y")Example block output

Modeling questions

Can I use ODE solvers with interval initial conditions?

Although it is in principle possible to ODE solvers for

How do I use the @taylorize macro?

The section Some common gotchas of the user manual details do's and dont's for the @taylorize macro to speedup reachability computations using Taylor models.

A note on interval types

When using intervals as set representation, ReachabilityAnalysis.jl relies on rigorous floating-point arithmetic implemented in pure Julia in the library IntervalArithmetic.jl (we often use const IA = IntervalArithmetic as an abbreviation). The main struct defined in the library is IA.Interval (and the corresponding multi-dimensional interval is IA.IntervalBox). Internally, the set LazySets.Interval is wrapper-type of IA.Interval and these two types should not be confused, although our user APIs extensively use duck typing, in the sense that x(0) ∈ 0 .. 1 (IA.Interval type) and x(0) ∈ Interval(0, 1) are valid.

On a technical level, the reason to have LazySets.Interval as a wrapper type of IA.Interval is that Julia doesn't allow multiple inheritance, but it was a design choice that intervals should belong to the LazySets type hierarchy.

References

  • v1Version 1.0 of the language was released in August 2018; see this blog post.
  • BEKS17Bezanson, J., Edelman, A., Karpinski, S., & Shah, V. B. (2017). Julia: A fresh approach to numerical computing. SIAM review, 59(1), 65-98.
diff --git a/dev/man/systems/index.html b/dev/man/systems/index.html index 31738def3..31105223a 100644 --- a/dev/man/systems/index.html +++ b/dev/man/systems/index.html @@ -3,4 +3,4 @@ 0 && I \\ -M^{-1}K && -M^{-1}C \end{pmatrix},\qquad B = \begin{pmatrix} 0 \\ M^{-1} -\end{pmatrix}\]

See the SecondOrder documentation in MathematicalSystems.jl for additional details in second order ODEs types.

Note

A similar relation can be obtained using the alternative convention $[v(t),~x(t)]^T$. Use derivatives_first=true in the normalize function to swap between these conventions (it is set to false by default).

Normalization

Homogeneization

Nonlinear systems

Parametric systems

+\end{pmatrix}\]

See the SecondOrder documentation in MathematicalSystems.jl for additional details in second order ODEs types.

Note

A similar relation can be obtained using the alternative convention $[v(t),~x(t)]^T$. Use derivatives_first=true in the normalize function to swap between these conventions (it is set to false by default).

Normalization

Homogeneization

Nonlinear systems

Parametric systems

diff --git a/dev/references/index.html b/dev/references/index.html index 79131e327..a0516c486 100644 --- a/dev/references/index.html +++ b/dev/references/index.html @@ -214,4 +214,4 @@ pages={378--384}, year={2018}, publisher={Elsevier} -}
+}
diff --git a/dev/tutorials/linear_methods/dense_time/483b091b.svg b/dev/tutorials/linear_methods/dense_time/ecc66c19.svg similarity index 95% rename from dev/tutorials/linear_methods/dense_time/483b091b.svg rename to dev/tutorials/linear_methods/dense_time/ecc66c19.svg index 0321555b5..d05961a04 100644 --- a/dev/tutorials/linear_methods/dense_time/483b091b.svg +++ b/dev/tutorials/linear_methods/dense_time/ecc66c19.svg @@ -1,260 +1,260 @@ - + - + - + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/dev/tutorials/linear_methods/dense_time/index.html b/dev/tutorials/linear_methods/dense_time/index.html index 2a625ddc5..60bd50cfe 100644 --- a/dev/tutorials/linear_methods/dense_time/index.html +++ b/dev/tutorials/linear_methods/dense_time/index.html @@ -34,7 +34,7 @@ [plot!(fig, xcoords, ycoords, seriestype=:path, lab="", c=:magenta, ratio=1.) for (xcoords, ycoords) in analytic_sol.(samples, Ref(tt))] figExample block output
xlims!(1.0, 1.5)
-ylims!(0.8, 1.2)
Example block output
discretize(ivp::IVP, δ, alg::AbstractApproximationModel) function. Set-based conservative discretization of a continuous-time initial value problem into a discrete-time problem. This function receives three inputs: the initial value problem (`ivp) for a linear ODE in canonical form, (e.g. the system returned by normalize); the step-size (δ), and the algorithm (alg) used to compute the approximation model. Do subtypes(ReachabilityAnalysis.AbstractApproximationModel) to see the available approximation models.

The output of a discretization is a new initial value problem of a discrete system. Different approximation algorithms and their respective options are described in the docstring of each method, e.g. Forward.

Initial-value problems considered in this function are of the form

\[x' = Ax(t) + u(t),\\qquad x(0) ∈ \\mathcal{X}_0,\\qquad (1)\]

and where $u(t) ∈ U(k)$ add where $\\{U(k)\\}_k$ is a sequence of sets of non-deterministic inputs and $\\mathcal{X}_0$ is the set of initial states. Recall that this initial-value problem is called homogeneous whenever U is the empty set. Other problems, e.g. $x' = Ax(t) + Bu(t)$ can be brought to the canonical form with the function normalize.

The initial value problem returned by this function consists of a set discretized (also called bloated) initial states $Ω₀$, together with the coefficient matrix $Φ = e^{Aδ}$ and a transformed sequence of inputs if $U$ is non-empty.

Two main variations of this algorithm are considered: dense time case and discrete time case.

  • In the dense time case, the transformation is such that the trajectories

of the given continuous system are included in the computed flowpipe of the discretized system. More precisely, given a step size $δ$ and the system (1) conservative set-based discretization function computes a set, $Ω₀$, that guarantees to contain all the trajectories of (1) starting at any $x(0) ∈ \\mathcal{X}_0$ and for any input function that satisfies $u(t) ∈ U(1)$, for any $t ∈ [0, δ]$. If $U$ is time-varying, this function also discretizes the inputs for $k ≥ 0$.

  • In the discrete time case, there is no bloating of the initial states and the

input is assumed to remain constant between sampled times. Use the algorithm NoBloating() for this setting. If $U$ is time-varying, this function also discretizes the inputs for $k ≥ 0$.

There are algorithms to obatin such transformations, called approximation models in the technical literature. For references to the original papers, see the docstring of each concrete subtype of AbstractApproximationModel.

+

Algorithms implementing conservative time discretization can be used from the discretize(ivp::IVP, δ, alg::AbstractApproximationModel) function. Set-based conservative discretization of a continuous-time initial value problem into a discrete-time problem. This function receives three inputs: the initial value problem (`ivp) for a linear ODE in canonical form, (e.g. the system returned by normalize); the step-size (δ), and the algorithm (alg) used to compute the approximation model. Do subtypes(ReachabilityAnalysis.AbstractApproximationModel) to see the available approximation models.

The output of a discretization is a new initial value problem of a discrete system. Different approximation algorithms and their respective options are described in the docstring of each method, e.g. Forward.

Initial-value problems considered in this function are of the form

\[x' = Ax(t) + u(t),\\qquad x(0) ∈ \\mathcal{X}_0,\\qquad (1)\]

and where $u(t) ∈ U(k)$ add where $\\{U(k)\\}_k$ is a sequence of sets of non-deterministic inputs and $\\mathcal{X}_0$ is the set of initial states. Recall that this initial-value problem is called homogeneous whenever U is the empty set. Other problems, e.g. $x' = Ax(t) + Bu(t)$ can be brought to the canonical form with the function normalize.

The initial value problem returned by this function consists of a set discretized (also called bloated) initial states $Ω₀$, together with the coefficient matrix $Φ = e^{Aδ}$ and a transformed sequence of inputs if $U$ is non-empty.

Two main variations of this algorithm are considered: dense time case and discrete time case.

  • In the dense time case, the transformation is such that the trajectories

of the given continuous system are included in the computed flowpipe of the discretized system. More precisely, given a step size $δ$ and the system (1) conservative set-based discretization function computes a set, $Ω₀$, that guarantees to contain all the trajectories of (1) starting at any $x(0) ∈ \\mathcal{X}_0$ and for any input function that satisfies $u(t) ∈ U(1)$, for any $t ∈ [0, δ]$. If $U$ is time-varying, this function also discretizes the inputs for $k ≥ 0$.

  • In the discrete time case, there is no bloating of the initial states and the

input is assumed to remain constant between sampled times. Use the algorithm NoBloating() for this setting. If $U$ is time-varying, this function also discretizes the inputs for $k ≥ 0$.

There are algorithms to obatin such transformations, called approximation models in the technical literature. For references to the original papers, see the docstring of each concrete subtype of AbstractApproximationModel.

diff --git a/dev/tutorials/linear_methods/discrete_time/4434c712.svg b/dev/tutorials/linear_methods/discrete_time/5d2983ee.svg similarity index 76% rename from dev/tutorials/linear_methods/discrete_time/4434c712.svg rename to dev/tutorials/linear_methods/discrete_time/5d2983ee.svg index 5e8577e35..de115d57d 100644 --- a/dev/tutorials/linear_methods/discrete_time/4434c712.svg +++ b/dev/tutorials/linear_methods/discrete_time/5d2983ee.svg @@ -1,116 +1,116 @@ - + - + - + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/dev/tutorials/linear_methods/discrete_time/index.html b/dev/tutorials/linear_methods/discrete_time/index.html index 833263bf2..6b7e98a8e 100644 --- a/dev/tutorials/linear_methods/discrete_time/index.html +++ b/dev/tutorials/linear_methods/discrete_time/index.html @@ -28,7 +28,7 @@ plot!(X0, c=:white) plot!(M(pi/4) * X0, c=:white) plot!(M(pi/2) * X0, c=:white) -plot!(M(4pi/3) * X0, c=:white)Example block output

Does propagating point clouds solve the problem? Practically speaking, while we can compute the successors of any $x_0 \in X_0$ we still lack a global description of the set according the the given discrete recurrence.. which brings us back to the original question: how to represent the solution of the recurrence for all points in simultaneous?

Propagating zonotopes

The set representation that is most effective to this problem are zonotopes since they are closed under linear maps. Moreover, since the initial states is a hyperrectangle (thus a zonotope), we can propagate the whole set exactly (and efficiently).

We now implement the solution by propagating zonotopes.

# map X0 according to the rotation matrix
+plot!(M(4pi/3) * X0, c=:white)
Example block output

Does propagating point clouds solve the problem? Practically speaking, while we can compute the successors of any $x_0 \in X_0$ we still lack a global description of the set according the the given discrete recurrence.. which brings us back to the original question: how to represent the solution of the recurrence for all points in simultaneous?

Propagating zonotopes

The set representation that is most effective to this problem are zonotopes since they are closed under linear maps. Moreover, since the initial states is a hyperrectangle (thus a zonotope), we can propagate the whole set exactly (and efficiently).

We now implement the solution by propagating zonotopes.

# map X0 according to the rotation matrix
 X0z = convert(Zonotope, X0)
 
 arr = [linear_map(M(θi), X0z) for θi in range(0, 2pi, length=50)]
@@ -79,4 +79,4 @@
 # plot the result
 fig = plot(H, alpha=.3, lab="H", c=:grey)
 plot!(F ∩ H, vars=(1, 2), ratio=1., lab="F ∩ H")
-xlims!(-2.0, 2.0); ylims!(-2, 2.)
Example block output

Using the solve interface for discrete problems

By default, the solve interface propagates sets in dense time (as explained in the next section). However, it is possible to propagate sets in discrete time by specifying that the approximation model should not add any bloating to the initial states, approx_model=NoBloating() to the solver used.

Exercise. Solve the linear set based recurrence in the current section using the solve interface. Hint: use the algorithm alg=GLGM06(δ=0.05, approx_model=NoBloating()) and the state matrix as specified in the following section.

+xlims!(-2.0, 2.0); ylims!(-2, 2.)Example block output

Using the solve interface for discrete problems

By default, the solve interface propagates sets in dense time (as explained in the next section). However, it is possible to propagate sets in discrete time by specifying that the approximation model should not add any bloating to the initial states, approx_model=NoBloating() to the solver used.

Exercise. Solve the linear set based recurrence in the current section using the solve interface. Hint: use the algorithm alg=GLGM06(δ=0.05, approx_model=NoBloating()) and the state matrix as specified in the following section.

diff --git a/dev/tutorials/linear_methods/introduction/1483cb33.svg b/dev/tutorials/linear_methods/introduction/1261b965.svg similarity index 73% rename from dev/tutorials/linear_methods/introduction/1483cb33.svg rename to dev/tutorials/linear_methods/introduction/1261b965.svg index 9c347aaa2..c193cbbae 100644 --- a/dev/tutorials/linear_methods/introduction/1483cb33.svg +++ b/dev/tutorials/linear_methods/introduction/1261b965.svg @@ -1,244 +1,244 @@ - + - + - + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/dev/tutorials/linear_methods/introduction/50fd9efb.svg b/dev/tutorials/linear_methods/introduction/474e8f67.svg similarity index 74% rename from dev/tutorials/linear_methods/introduction/50fd9efb.svg rename to dev/tutorials/linear_methods/introduction/474e8f67.svg index b1a3888b4..4c23cfb10 100644 --- a/dev/tutorials/linear_methods/introduction/50fd9efb.svg +++ b/dev/tutorials/linear_methods/introduction/474e8f67.svg @@ -1,246 +1,246 @@ - + - + - + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/dev/tutorials/linear_methods/introduction/9f6fe39b.svg b/dev/tutorials/linear_methods/introduction/72af323b.svg similarity index 75% rename from dev/tutorials/linear_methods/introduction/9f6fe39b.svg rename to dev/tutorials/linear_methods/introduction/72af323b.svg index fdaceaaad..563c9ca64 100644 --- a/dev/tutorials/linear_methods/introduction/9f6fe39b.svg +++ b/dev/tutorials/linear_methods/introduction/72af323b.svg @@ -1,256 +1,256 @@ - + - + - + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/dev/tutorials/linear_methods/introduction/990d3251.svg b/dev/tutorials/linear_methods/introduction/7be5f6af.svg similarity index 75% rename from dev/tutorials/linear_methods/introduction/990d3251.svg rename to dev/tutorials/linear_methods/introduction/7be5f6af.svg index 4b6b6d3d5..24610aeea 100644 --- a/dev/tutorials/linear_methods/introduction/990d3251.svg +++ b/dev/tutorials/linear_methods/introduction/7be5f6af.svg @@ -1,252 +1,252 @@ - + - + - + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/dev/tutorials/linear_methods/introduction/index.html b/dev/tutorials/linear_methods/introduction/index.html index 83ce64985..e8c53b3e9 100644 --- a/dev/tutorials/linear_methods/introduction/index.html +++ b/dev/tutorials/linear_methods/introduction/index.html @@ -8,19 +8,19 @@ sol = solve(p, T=5)

Here we have solved the differential equation

\[x'(t) = -x(t),\qquad x(0) \in X_0 = [1, 2] \subset \mathbb{R},\]

for $t \in [0, 5]$, whose solution is known to be the decaying exponential $x(t) = x_0e^{-t}$. Let's plot the result, which requires loading the Plots.jl package

variable index 0 denotes time).

using Plots
 
 # post-processing or plotting
-plot(sol, vars=(0, 1), xlab="t", ylab="x(t)")
Example block output

For comparison we can plot the trajectories at the endpoints of the initial interval. The example also shows that the black line segments can be hidden by setting the lw=0 argument (for linewidth).

trange = range(0, 5, length=100)
+plot(sol, vars=(0, 1), xlab="t", ylab="x(t)")
Example block output

For comparison we can plot the trajectories at the endpoints of the initial interval. The example also shows that the black line segments can be hidden by setting the lw=0 argument (for linewidth).

trange = range(0, 5, length=100)
 
 plot(sol, vars=(0, 1), xlab="t", ylab="x(t)", lw=0)
 plot!(trange, 1.0 * exp.(-trange), vars=(0, 1), c=:magenta, lab="")
-plot!(trange, 2.0 * exp.(-trange), vars=(0, 1), c=:magenta, lab="")
Example block output

The user-facing interface is designed to be intuitive and interactive, and it is inspired by of other Julia packages such as DifferentialEquations.jl. Moreover, the library internals are written in a modular and composable way, such that advanced users are able to modify and changed easily, or to compose with other algorithms, different steps of the solution process.

In the rest of this notebook we explore different problem specifications, different algorithm choices as well as some processing capabilities. As a preliminary, we introduce the concept of reach-set in the context of the toy model presented above.

Introducing reach-sets

Basically, a reach-set is a structure that holds a set and a time span associated to it. Here we pick the first reach-set and show that it is of an interval type.

# solutions implement the array interface
+plot!(trange, 2.0 * exp.(-trange), vars=(0, 1), c=:magenta, lab="")
Example block output

The user-facing interface is designed to be intuitive and interactive, and it is inspired by of other Julia packages such as DifferentialEquations.jl. Moreover, the library internals are written in a modular and composable way, such that advanced users are able to modify and changed easily, or to compose with other algorithms, different steps of the solution process.

In the rest of this notebook we explore different problem specifications, different algorithm choices as well as some processing capabilities. As a preliminary, we introduce the concept of reach-set in the context of the toy model presented above.

Introducing reach-sets

Basically, a reach-set is a structure that holds a set and a time span associated to it. Here we pick the first reach-set and show that it is of an interval type.

# solutions implement the array interface
 R = sol[1]
ReachSet{Float64, Interval{Float64}}(Interval{Float64}([0.94877, 2]), [0, 0.0500001])

Note that sol[1] works since solution structures implement Julia's array interface – meaning that slicing also works, and e.g. sol[end-3:end] returns the last three reach-sets computed.

The solution obtained by set propagation consists of a flowpipe, which is just an array of reach-sets, and behaves like their set union. Flowpipes are at the right level of abstraction concerning solutions obtained with set propagation methods.

We can plot the first reach-set as well.

trange = range(0, 5, length=100)
 
 plot(sol, vars=(0, 1), xlab="t", ylab="x(t)", lw=0)
 plot!(R, vars=(0, 1), xlab="t", ylab="x(t)", lw=0, alpha=1., c=:orange, lab="R = sol[1]")
 plot!(trange, 1.0 * exp.(-trange), vars=(0, 1), c=:magenta, lab="")
-plot!(trange, 2.0 * exp.(-trange), vars=(0, 1), c=:magenta, lab="")
Example block output

We can also plot the tenth reach-set in red:

plot!(sol[10], vars=(0, 1), xlab="t", ylab="x(t)", lw=0, alpha=1., c=:red, lab="sol[10]")
Example block output

The type of reach-sets specifies its numeric type as well as the set representation used; in this case, an interval.

typeof(R)
ReachSet{Float64, Interval{Float64}}

Observing the horizontal axis of the plots reveals that reach-sets have a non-zero along on the time axis. By construction, it is guaranteed that the flowpipe is an enclosure of the true solutions, i.e. no trajectory escapes each reach-set for a given time-span. The time span associated to a reach-set is obtained with the function tspan.

tspan(R)
[0, 0.0500001]

Actually, the algorithm that has been used to solve the problem has a fixed step size of $δ = 0.05$.

tspan(sol[end]) # time-span of the final reach-set
[4.94999, 5.00001]

We can check by extracting the algorithm information from the solution struct:

# methods' step-size
+plot!(trange, 2.0 * exp.(-trange), vars=(0, 1), c=:magenta, lab="")
Example block output

We can also plot the tenth reach-set in red:

plot!(sol[10], vars=(0, 1), xlab="t", ylab="x(t)", lw=0, alpha=1., c=:red, lab="sol[10]")
Example block output

The type of reach-sets specifies its numeric type as well as the set representation used; in this case, an interval.

typeof(R)
ReachSet{Float64, Interval{Float64}}

Observing the horizontal axis of the plots reveals that reach-sets have a non-zero along on the time axis. By construction, it is guaranteed that the flowpipe is an enclosure of the true solutions, i.e. no trajectory escapes each reach-set for a given time-span. The time span associated to a reach-set is obtained with the function tspan.

tspan(R)
[0, 0.0500001]

Actually, the algorithm that has been used to solve the problem has a fixed step size of $δ = 0.05$.

tspan(sol[end]) # time-span of the final reach-set
[4.94999, 5.00001]

We can check by extracting the algorithm information from the solution struct:

# methods' step-size
 sol.alg.δ
0.05

The functions tstart and tend return the starting and final time of the reach-set.

tstart(R)
-0.0
tend(R)
0.05

The set wrapped by $R$ is obtained with set:

set(R)
Interval{Float64}([0.94877, 2])

We see it is an interval (LazySets.Interval is just a thin wrapper around IntervalArithmetic.Interval; more on this in a note below).

It is interesting to observe that the infimum of sol[1] 0.9487, while we have specified that the initial interval is $X_0 = [1, 2]$. The explanation is that the computed reach-set contains the true solution for all intermediate times between 0 and 0.05 and for all initial states in $X_0$. Since the values of $x(t)$ decrease in the time interval $[0, 0.05]$ the width of sol[1] should be sufficiently big as to enclose those variations. We can make a quick check:

1.0 * exp(-0.05)
0.951229424500714

which shows that R indeed is a correct enclosure of the solution for all points in the initial set. It is easy to check that by decreasing the step-size, the enclosure of the solution at $[0, 0.05]$ converges to the true value (from outside), and similarly for other time intervals.

More about time intervals

The time span associated to a reach-sets is an interval satisfying the rules of interval arithmetic. We use IntervalArithmetic.jl to represent time intervals.

ReachabilityAnalysis.TimeInterval # alias
IntervalArithmetic.Interval{Float64}
# retrieve the time span associated to this reach-set
 tspan(R)
[0, 0.0500001]
# it is an interval (from IntervalArithmetic.jl)
 typeof(tspan(R))
IntervalArithmetic.Interval{Float64}

Time intervals are represented using intervals from IntervalArithmetic.jl. This choice guarantees that all calculations involving time are carried out using rigorous floating-point calculations with interval arithmetic: all quantities are treated as intervals, which are propagated throughout a calculation. The final result is an interval that is guaranteed to contain the correct result, starting from the given initial data.

If desired, it is also work with set using interval elements:

Bint = BallInf(interval.(ones(2)), interval(0.2))
BallInf{IntervalArithmetic.Interval{Float64}, Vector{IntervalArithmetic.Interval{Float64}}}(IntervalArithmetic.Interval{Float64}[[1, 1], [1, 1]], [0.2, 0.200001])

Finally, note that if you create a reach-set by passing a time point, it is automatically converted to an interval:

R = ReachSet(rand(BallInf, dim=5), 1.0)
 
-tspan(R)
[1, 1]
+tspan(R)
[1, 1]
diff --git a/dev/tutorials/set_representations/distances/index.html b/dev/tutorials/set_representations/distances/index.html index 4be9214fc..83cdb2e0d 100644 --- a/dev/tutorials/set_representations/distances/index.html +++ b/dev/tutorials/set_representations/distances/index.html @@ -1,2 +1,2 @@ -Metric notions · ReachabilityAnalysis.jl

Hausdorff distance

The notion of Hausdorff distance can be used to measure the distance between sets. It constitutes a practical theoretical tool to quantify the quality of an approximation.

\[ d_H(\mathcal{X}, \mathcal{Y}) = \max \left( \sup_{x \in \mathcal{X}}\inf_{y \in \mathcal{Y}} \Vert x - y \Vert, \sup_{y \in \mathcal{Y}}\inf_{x \in \mathcal{X}} \Vert x - y \Vert \right)\]

+Metric notions · ReachabilityAnalysis.jl

Hausdorff distance

The notion of Hausdorff distance can be used to measure the distance between sets. It constitutes a practical theoretical tool to quantify the quality of an approximation.

\[ d_H(\mathcal{X}, \mathcal{Y}) = \max \left( \sup_{x \in \mathcal{X}}\inf_{y \in \mathcal{Y}} \Vert x - y \Vert, \sup_{y \in \mathcal{Y}}\inf_{x \in \mathcal{X}} \Vert x - y \Vert \right)\]

diff --git a/dev/tutorials/set_representations/polyhedral_computations/index.html b/dev/tutorials/set_representations/polyhedral_computations/index.html index 204f4680e..2cec6dc7f 100644 --- a/dev/tutorials/set_representations/polyhedral_computations/index.html +++ b/dev/tutorials/set_representations/polyhedral_computations/index.html @@ -1,2 +1,2 @@ -Polyhedral computations · ReachabilityAnalysis.jl

Concrete polyhedra

Polyhedra backends

Limitations

Computing with concrete polyhedra in high dimensions is generally expensive. In particular, converting between vertex and constraint representations (so-called dual representations) should be used only if it is strictly necessary. However, there are some operations that are cheap:

  • Intersecting two (or more) sets in constraint representation, or whose constraints_list can be computed efficiently. Such computation only requires concatenating the constraints and removing redundant inequalities (operation that requires the solution of linear programs).

  • Taking linear maps of sets in vertex representation, $MX$. This operation requires to map each vertex of $X$ under the transformation $M$. Linear transformations can also be done efficiently in constraint representation provided that the matrix $M$ is invertible. LazySets handles other cases ($M$ not invertible, and the sets either in constraint or in vertex representation), but they are generally expensive in high dimensions. However, using specific classes of sets (e.g. zonotopes).

+Polyhedral computations · ReachabilityAnalysis.jl

Concrete polyhedra

Polyhedra backends

Limitations

Computing with concrete polyhedra in high dimensions is generally expensive. In particular, converting between vertex and constraint representations (so-called dual representations) should be used only if it is strictly necessary. However, there are some operations that are cheap:

  • Intersecting two (or more) sets in constraint representation, or whose constraints_list can be computed efficiently. Such computation only requires concatenating the constraints and removing redundant inequalities (operation that requires the solution of linear programs).

  • Taking linear maps of sets in vertex representation, $MX$. This operation requires to map each vertex of $X$ under the transformation $M$. Linear transformations can also be done efficiently in constraint representation provided that the matrix $M$ is invertible. LazySets handles other cases ($M$ not invertible, and the sets either in constraint or in vertex representation), but they are generally expensive in high dimensions. However, using specific classes of sets (e.g. zonotopes).

diff --git a/dev/tutorials/set_representations/zonotopes/54b72cc4.svg b/dev/tutorials/set_representations/zonotopes/612d57dc.svg similarity index 79% rename from dev/tutorials/set_representations/zonotopes/54b72cc4.svg rename to dev/tutorials/set_representations/zonotopes/612d57dc.svg index 53b287d14..361cc0501 100644 --- a/dev/tutorials/set_representations/zonotopes/54b72cc4.svg +++ b/dev/tutorials/set_representations/zonotopes/612d57dc.svg @@ -1,60 +1,60 @@ - + - + - + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/dev/tutorials/set_representations/zonotopes/index.html b/dev/tutorials/set_representations/zonotopes/index.html index cc68888e6..3c35015a9 100644 --- a/dev/tutorials/set_representations/zonotopes/index.html +++ b/dev/tutorials/set_representations/zonotopes/index.html @@ -8,4 +8,4 @@ 0.0 1.0 -1.0 0.0

The generators can be

Z3 = Zonotope([1.0, 0.0], [0.1 0.0; 0.0 0.1])
Zonotope{Float64, Vector{Float64}, Matrix{Float64}}([1.0, 0.0], [0.1 0.0; 0.0 0.1])

The order of a zonotope is the ratio between the number of dimensions and the number of generators; i.e. $o = \frac{k}{n}$. Use the function order(Z) to get the order of a given zonotope.

Z = Zonotope([1, 1.], [-1 0.3 1.5 0.3; 0 0.1 -0.3 0.3])
 plot(Z)
-quiver!(fill(1., 4), fill(1., 4), quiver=(genmat(Z)[1, :], genmat(Z)[2, :]), color=:black)
Example block output

Other characterizations

There are other useful characterization of zonotopes. A zonotope can be seen as the Minkowski addition of line segments resulting in centrally symmetric convex polytopes as shown in the following figure, which illustrates how each generator spans the zonotope.

Operations with zonotopes

The cost is measured in terms of the number of binary operations, $\mathrm{Op}(\cdot)$.

\[Z_1 = (c, \langle v_1, \dotsb, v_k \rangle), Z_2 = (d, \langle w_1, \dotsb, w_m \rangle) \subset \mathbb{R}^n, M \in \mathbb{R}^{m \times n}\]

\[Z_1 \oplus Z_2 = (c+d, \langle v_1, \dotsb, v_k, w_1, \dotsb, w_m \rangle)\]

\[MZ_1 = (Mc, \langle Mv_1, \dotsb, Mv_k \rangle)\]

\[CH(Z_1, e^{A\delta}Z_1) \subseteq \frac{1}{2}(c + e^{A\delta}c,\langle v_1 + e^{A\delta}v_1, \dotsb, v_k+e^{A\delta}v_k, v_1 - e^{A\delta}v_1, v_k - e^{A\delta}v_k, c - e^{A\delta}c \rangle )\]

OperationSimplification RuleCost
$Z_1 \oplus Z_2$$n$
$MZ_1$$2mn(k+1)$
$CH(Z_1, e^{A\delta}Z_1)$$2n^2(k+1)+2n(k+2)$
+quiver!(fill(1., 4), fill(1., 4), quiver=(genmat(Z)[1, :], genmat(Z)[2, :]), color=:black)Example block output

Other characterizations

There are other useful characterization of zonotopes. A zonotope can be seen as the Minkowski addition of line segments resulting in centrally symmetric convex polytopes as shown in the following figure, which illustrates how each generator spans the zonotope.

Operations with zonotopes

The cost is measured in terms of the number of binary operations, $\mathrm{Op}(\cdot)$.

\[Z_1 = (c, \langle v_1, \dotsb, v_k \rangle), Z_2 = (d, \langle w_1, \dotsb, w_m \rangle) \subset \mathbb{R}^n, M \in \mathbb{R}^{m \times n}\]

\[Z_1 \oplus Z_2 = (c+d, \langle v_1, \dotsb, v_k, w_1, \dotsb, w_m \rangle)\]

\[MZ_1 = (Mc, \langle Mv_1, \dotsb, Mv_k \rangle)\]

\[CH(Z_1, e^{A\delta}Z_1) \subseteq \frac{1}{2}(c + e^{A\delta}c,\langle v_1 + e^{A\delta}v_1, \dotsb, v_k+e^{A\delta}v_k, v_1 - e^{A\delta}v_1, v_k - e^{A\delta}v_k, c - e^{A\delta}c \rangle )\]

OperationSimplification RuleCost
$Z_1 \oplus Z_2$$n$
$MZ_1$$2mn(k+1)$
$CH(Z_1, e^{A\delta}Z_1)$$2n^2(k+1)+2n(k+2)$
diff --git a/dev/tutorials/taylor_methods/domain_splitting/index.html b/dev/tutorials/taylor_methods/domain_splitting/index.html index c8a3be9e2..c6acd6bed 100644 --- a/dev/tutorials/taylor_methods/domain_splitting/index.html +++ b/dev/tutorials/taylor_methods/domain_splitting/index.html @@ -1,2 +1,2 @@ -Domain splitting · ReachabilityAnalysis.jl

Domain splitting

A common technique to reduce wrapping effects is to split the set of initial states. If an initial-value problem has been setup with an array of sets, then the flowpipe starting from each initial set scomputed in parallel, using Julia's built-in multithreaded support.

Note

To turn off multithreading, pass the multithreaded=false option flag to solve method. It is true by default.

Note

To change the number of threads being used, change the THREADS flag in . . .

+Domain splitting · ReachabilityAnalysis.jl

Domain splitting

A common technique to reduce wrapping effects is to split the set of initial states. If an initial-value problem has been setup with an array of sets, then the flowpipe starting from each initial set scomputed in parallel, using Julia's built-in multithreaded support.

Note

To turn off multithreading, pass the multithreaded=false option flag to solve method. It is true by default.

Note

To change the number of threads being used, change the THREADS flag in . . .

diff --git a/dev/tutorials/taylor_methods/gotchas/index.html b/dev/tutorials/taylor_methods/gotchas/index.html index 7f52d4b26..ae2f0b97c 100644 --- a/dev/tutorials/taylor_methods/gotchas/index.html +++ b/dev/tutorials/taylor_methods/gotchas/index.html @@ -31,4 +31,4 @@ du[3] = two du[4] = u[4] return du -end +end diff --git a/dev/tutorials/taylor_methods/introduction/index.html b/dev/tutorials/taylor_methods/introduction/index.html index cb54a5ade..e28981e77 100644 --- a/dev/tutorials/taylor_methods/introduction/index.html +++ b/dev/tutorials/taylor_methods/introduction/index.html @@ -62,4 +62,4 @@ disjointness: ZonotopeEnclosure ZonotopeEnclosure()

The type of reach-set representation as well as the set representation can be obtained using rsetrep and setrep respectively.

# type of the reach-set representation
 rsetrep(sol)
TaylorModelReachSet{Float64}
# type of the set representation
-setrep(sol)
Vector{TaylorModel1{TaylorN{Float64}, Float64}} (alias for Array{TaylorModels.TaylorModel1{TaylorN{Float64}, Float64}, 1})

The following section discusses more details about those representations.

+setrep(sol)
Vector{TaylorModel1{TaylorN{Float64}, Float64}} (alias for Array{TaylorModels.TaylorModel1{TaylorN{Float64}, Float64}, 1})

The following section discusses more details about those representations.

diff --git a/dev/tutorials/taylor_methods/taylor_model_reachsets/index.html b/dev/tutorials/taylor_methods/taylor_model_reachsets/index.html index a748b38f2..362dd002d 100644 --- a/dev/tutorials/taylor_methods/taylor_model_reachsets/index.html +++ b/dev/tutorials/taylor_methods/taylor_model_reachsets/index.html @@ -1,2 +1,2 @@ -Taylor model reach-sets · ReachabilityAnalysis.jl
+Taylor model reach-sets · ReachabilityAnalysis.jl

Ri8jQzz=yX(7=k#)qAO1PB@-5 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�n>{1PO3# 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