From 7a79588b2de38bdeb4838c3a2e0b9571e9cb6f01 Mon Sep 17 00:00:00 2001 From: tellnobody1 <6303577+tellnobody1@users.noreply.github.com> Date: Sat, 21 Sep 2024 00:54:45 +0300 Subject: [PATCH] add sharding, search, sorting, soft removal --- .github/workflows/test.yml | 14 +- .gitignore | 10 +- .gitmodules | 2 +- .sbtopts | 2 +- LICENSE | 2 +- README.md | 53 +-- build.sbt | 88 +++-- deps/proto | 2 +- docs/.gitignore | 1 - docs/about.tex | 6 - docs/info.tex | 18 - docs/kvs.pdf | Bin 0 -> 83536 bytes docs/kvs.tex | 60 ---- docs/kvs_jmx_api.tex | 65 ---- docs/ring_about.tex | 5 - docs/ring_config.tex | 57 ---- docs/ring_health.tex | 30 -- docs/ring_info.tex | 51 --- kvs/src/main/resources/lib/README.md | 1 - kvs/src/main/resources/lib/leveldb.dll | Bin 1064448 -> 0 bytes kvs/src/main/resources/lib/libleveldb.dylib | Bin 352028 -> 0 bytes kvs/src/main/resources/lib/libleveldb.so | Bin 657077 -> 0 bytes kvs/src/main/resources/reference.conf | 73 ---- kvs/src/main/scala/dump/DumpIO.scala | 75 ----- kvs/src/main/scala/dump/DumpKV.scala | 37 -- kvs/src/main/scala/el.scala | 23 -- kvs/src/main/scala/err.scala | 15 - kvs/src/main/scala/ext.scala | 33 -- kvs/src/main/scala/feed/feed.scala | 65 ++++ kvs/src/main/scala/feed/ops.scala | 225 +++++++++++++ kvs/src/main/scala/file.fs.scala | 56 ---- kvs/src/main/scala/file.scala | 101 ------ kvs/src/main/scala/idx.scala | 149 --------- kvs/src/main/scala/jmx.scala | 36 -- kvs/src/main/scala/kvs.scala | 96 ------ kvs/src/main/scala/leveldb/leveldb.scala | 195 ----------- kvs/src/main/scala/leveldb/native.scala | 181 ---------- kvs/src/main/scala/package.scala | 5 - kvs/src/main/scala/rks/Dump.scala | 95 ------ kvs/src/main/scala/rng/Data.scala | 59 ++-- kvs/src/main/scala/rng/Dump.scala | 202 ----------- kvs/src/main/scala/rng/GatherDel.scala | 57 ++-- kvs/src/main/scala/rng/GatherGet.scala | 56 ++-- kvs/src/main/scala/rng/GatherPut.scala | 87 +++-- kvs/src/main/scala/rng/Hash.scala | 315 +++++------------- .../{HashingExtension.scala => Hashing.scala} | 27 +- kvs/src/main/scala/rng/Msg.scala | 134 ++------ kvs/src/main/scala/rng/Replication.scala | 105 +++--- .../main/scala/rng/SelectionMemorize.scala | 4 +- kvs/src/main/scala/rng/StoreReadonly.scala | 90 ++--- kvs/src/main/scala/rng/StoreWrite.scala | 93 +++--- kvs/src/main/scala/rng/ack.scala | 6 +- kvs/src/main/scala/rng/akkacluster.scala | 9 - kvs/src/main/scala/rng/cluster.scala | 9 + kvs/src/main/scala/rng/conf.scala | 64 ++++ kvs/src/main/scala/rng/ext.scala | 9 - kvs/src/main/scala/rng/merge.scala | 138 ++++---- kvs/src/main/scala/rng/package.scala | 46 +-- kvs/src/main/scala/{ => rng}/pickle.scala | 53 ++- kvs/src/main/scala/rng/system.scala | 24 ++ kvs/src/main/scala/search/dba.scala | 21 ++ kvs/src/main/scala/search/dir.scala | 241 ++++++-------- kvs/src/main/scala/search/en.scala | 130 -------- kvs/src/main/scala/search/err.scala | 6 + kvs/src/main/scala/search/file.scala | 140 ++++++++ kvs/src/main/scala/search/files.scala | 120 +++++++ kvs/src/main/scala/search/in.scala | 68 ---- kvs/src/main/scala/search/search.scala | 59 ++++ kvs/src/main/scala/sharding/consistency.scala | 30 ++ kvs/src/main/scala/sharding/sharding.scala | 53 +++ kvs/src/main/scala/sort/sort.scala | 237 +++++++++++++ kvs/src/main/scala/store/dba.scala | 42 +-- kvs/src/main/scala/store/mem.scala | 26 -- kvs/src/main/scala/store/rks.scala | 84 ----- kvs/src/main/scala/store/rng.scala | 210 +++++------- kvs/src/test/resources/application.conf | 16 - kvs/src/test/resources/logback.xml | 11 - kvs/src/test/scala/conf.scala | 24 -- kvs/src/test/scala/el.test.scala | 35 -- kvs/src/test/scala/feed.test.scala | 38 +++ kvs/src/test/scala/file.test.scala | 60 ---- kvs/src/test/scala/in.test.scala | 54 --- kvs/src/test/scala/index.test.scala | 114 ------- kvs/src/test/scala/leveldb.test.scala | 46 --- kvs/src/test/scala/merge.test.scala | 217 ------------ kvs/src/test/scala/rks.test.scala | 35 -- kvs/src/test/scala/search.test.scala | 112 ------- project/build.properties | 2 +- project/plugins.sbt | 1 - src/main/scala/feed_app.scala | 99 ++++++ src/main/scala/search_app.scala | 140 ++++++++ src/main/scala/sort_app.scala | 98 ++++++ 92 files changed, 2224 insertions(+), 3859 deletions(-) delete mode 100644 docs/.gitignore delete mode 100644 docs/about.tex delete mode 100644 docs/info.tex create mode 100644 docs/kvs.pdf delete mode 100644 docs/kvs.tex delete mode 100644 docs/kvs_jmx_api.tex delete mode 100644 docs/ring_about.tex delete mode 100644 docs/ring_config.tex delete mode 100644 docs/ring_health.tex delete mode 100644 docs/ring_info.tex delete mode 100644 kvs/src/main/resources/lib/README.md delete mode 100644 kvs/src/main/resources/lib/leveldb.dll delete mode 100644 kvs/src/main/resources/lib/libleveldb.dylib delete mode 100644 kvs/src/main/resources/lib/libleveldb.so delete mode 100644 kvs/src/main/resources/reference.conf delete mode 100644 kvs/src/main/scala/dump/DumpIO.scala delete mode 100644 kvs/src/main/scala/dump/DumpKV.scala delete mode 100644 kvs/src/main/scala/el.scala delete mode 100644 kvs/src/main/scala/err.scala delete mode 100644 kvs/src/main/scala/ext.scala create mode 100644 kvs/src/main/scala/feed/feed.scala create mode 100644 kvs/src/main/scala/feed/ops.scala delete mode 100644 kvs/src/main/scala/file.fs.scala delete mode 100644 kvs/src/main/scala/file.scala delete mode 100644 kvs/src/main/scala/idx.scala delete mode 100644 kvs/src/main/scala/jmx.scala delete mode 100644 kvs/src/main/scala/kvs.scala delete mode 100644 kvs/src/main/scala/leveldb/leveldb.scala delete mode 100644 kvs/src/main/scala/leveldb/native.scala delete mode 100644 kvs/src/main/scala/package.scala delete mode 100644 kvs/src/main/scala/rks/Dump.scala delete mode 100644 kvs/src/main/scala/rng/Dump.scala rename kvs/src/main/scala/rng/{HashingExtension.scala => Hashing.scala} (55%) delete mode 100644 kvs/src/main/scala/rng/akkacluster.scala create mode 100644 kvs/src/main/scala/rng/cluster.scala create mode 100644 kvs/src/main/scala/rng/conf.scala delete mode 100644 kvs/src/main/scala/rng/ext.scala rename kvs/src/main/scala/{ => rng}/pickle.scala (53%) create mode 100644 kvs/src/main/scala/rng/system.scala create mode 100644 kvs/src/main/scala/search/dba.scala delete mode 100644 kvs/src/main/scala/search/en.scala create mode 100644 kvs/src/main/scala/search/err.scala create mode 100644 kvs/src/main/scala/search/file.scala create mode 100644 kvs/src/main/scala/search/files.scala delete mode 100644 kvs/src/main/scala/search/in.scala create mode 100644 kvs/src/main/scala/search/search.scala create mode 100644 kvs/src/main/scala/sharding/consistency.scala create mode 100644 kvs/src/main/scala/sharding/sharding.scala create mode 100644 kvs/src/main/scala/sort/sort.scala delete mode 100644 kvs/src/main/scala/store/mem.scala delete mode 100644 kvs/src/main/scala/store/rks.scala delete mode 100644 kvs/src/test/resources/application.conf delete mode 100644 kvs/src/test/resources/logback.xml delete mode 100644 kvs/src/test/scala/conf.scala delete mode 100644 kvs/src/test/scala/el.test.scala create mode 100644 kvs/src/test/scala/feed.test.scala delete mode 100644 kvs/src/test/scala/file.test.scala delete mode 100644 kvs/src/test/scala/in.test.scala delete mode 100644 kvs/src/test/scala/index.test.scala delete mode 100644 kvs/src/test/scala/leveldb.test.scala delete mode 100644 kvs/src/test/scala/merge.test.scala delete mode 100644 kvs/src/test/scala/rks.test.scala delete mode 100644 kvs/src/test/scala/search.test.scala delete mode 100644 project/plugins.sbt create mode 100644 src/main/scala/feed_app.scala create mode 100644 src/main/scala/search_app.scala create mode 100644 src/main/scala/sort_app.scala diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 82bc673e..4eb5f367 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -1,19 +1,17 @@ name: test -on: [ push ] +on: push jobs: test: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2.3.4 + - uses: actions/checkout@v4.1.1 with: clean: false - fetch-depth: 0 # with tags submodules: 'recursive' - - uses: actions/setup-java@v1.4.3 + - uses: actions/setup-java@v4.1.0 with: - java-version: 11 - - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - run: sbt +compile +test + java-version: 21 + distribution: 'zulu' + - run: sbt test diff --git a/.gitignore b/.gitignore index 8debe97e..eeb153cb 100644 --- a/.gitignore +++ b/.gitignore @@ -1,9 +1,5 @@ .DS_Store -target/ -/tmp /.bsp/ -.bloop -.metals -.vscode -project/project -project/metals.sbt \ No newline at end of file +/data/example-*/ +/data/test-*/ +target/ diff --git a/.gitmodules b/.gitmodules index 55c94b7a..0505b9b2 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,4 +1,4 @@ [submodule "proto"] path = deps/proto - url = https://github.com/zero-deps/proto + url = git@github.com:zero-deps/proto.git branch = main diff --git a/.sbtopts b/.sbtopts index 559ca2bf..ca8c8341 100644 --- a/.sbtopts +++ b/.sbtopts @@ -1 +1 @@ --J-XX:MaxMetaspaceSize=512m +-J-XX:MaxMetaspaceSize=1g diff --git a/LICENSE b/LICENSE index 2a026d2a..2614b4da 100644 --- a/LICENSE +++ b/LICENSE @@ -1,6 +1,6 @@ MIT License -Copyright (c) 2021 zero-deps +Copyright (c) 2015–2024 zero-deps Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/README.md b/README.md index 9aa1e8e0..dcd6efaf 100644 --- a/README.md +++ b/README.md @@ -1,49 +1,32 @@ -# Abstract scala type database +# Scala Abstract Type Database -![ci](https://github.com/zero-deps/kvs/workflows/ci/badge.svg) +![Production Ready](https://img.shields.io/badge/Project%20Stage-Production%20Ready%20(main)-brightgreen.svg) +![Development](https://img.shields.io/badge/Project%20Stage-Development%20(series/5.x)-yellowgreen.svg) -Abstract Scala storage framework with high-level API for handling linked lists of polymorphic data (feeds). +[![Documentation](https://img.shields.io/badge/documentation-pdf-yellow)](docs/kvs.pdf) +[![Paper](https://img.shields.io/badge/paper-pdf-lightgrey)](https://www.allthingsdistributed.com/files/amazon-dynamo-sosp2007.pdf) -KVS is highly available distributed (AP) strong eventual consistent (SEC) and sequentially consistent (via cluster sharding) storage. It is used for data from sport and games events. In some configurations used as distributed network file system. Also can be a generic storage for application. +This open-source project presents an abstract storage framework in Scala, offering a high-level API tailored for managing linked lists of polymorphic data, referred to as 'feeds.' The system, known as KVS (Key-Value Storage), boasts attributes such as high availability, distributed architecture (AP), strong eventual consistency (SEC), and sequential consistency achieved through cluster sharding. Its primary application involves handling data from sports and gaming events, but it can also serve as a distributed network file system or a versatile general-purpose storage solution for various applications. -Designed with various backends in mind and to work in pure JVM environment. Implementation based on top of KAI (implementation of Amazon DynamoDB in Erlang) port with modification to use akka-cluster infrastructure. +The design philosophy behind KVS encompasses versatility, with support for multiple backend implementations and compatibility within a pure JVM environment. The implementation is grounded in the KAI framework (an Erlang-based Amazon DynamoDB implementation), adapted to utilize the pekko-cluster infrastructure. -Currently main backend is RocksDB to support embedded setup alongside application. Feed API (add/entries/remove) is built on top of Key-Value API (put/get/delete). +At its core, KVS relies on RocksDB as the primary backend, enabling seamless integration in embedded setups alongside applications. The central Feed API, facilitating operations like addition, entry retrieval, and removal, is constructed upon the foundation of the Key-Value API, which includes functions for putting, getting, and deleting data. ## Usage -Add project as a git module. +Add project as a git submodule. -## Backend +## Project Structure -* Ring -* RocksDB -* Memory -* FS -* SQL -* etc. +* `feed`: Introduces the Feed over Ring concept +* `search`: Offers Search over Ring functionality +* `sort`: Implements a Sorted Set on Ring +* `rng`: Establishes a Ring structure using Pekko Cluster +* `sharding`: Addresses Sequential Consistency & Cluster Sharding aspects -## Test +## Test & Demo ```bash -sbt> test +sbt test +sbt run ``` - -## Resources - -### Chain Replication - -[Chain Replication in Theory and in Practice](http://www.snookles.com/scott/publications/erlang2010-slf.pdf) - -[Chain Replication for Supporting High Throughput and Availability](http://www.cs.cornell.edu/home/rvr/papers/OSDI04.pdf) - -[High-throughput chain replication for read-mostly workload](https://www.cs.princeton.edu/courses/archive/fall15/cos518/papers/craq.pdf) - -[Leveraging Sharding in the Design of Scalable Replication Protocols](https://ymsir.com/papers/sharding-socc.pdf) - -[Byzantine Chain Replication](http://www.cs.cornell.edu/home/rvr/newpapers/opodis2012.pdf) - -### Consensus Algorithm - -[RAFT](https://raft.github.io/raft.pdf) -[SWIM](https://www.cs.cornell.edu/projects/Quicksilver/public_pdfs/SWIM.pdf) diff --git a/build.sbt b/build.sbt index de050414..a1b36c43 100644 --- a/build.sbt +++ b/build.sbt @@ -1,53 +1,71 @@ -val scalav = "3.2.2" -val zio = "2.0.10" -val akka = "2.6.20" -val rocks = "7.10.2" -val protoj = "3.22.2" -val lucene = "8.11.2" +val scalav = "3.3.3" +val zio = "2.1.9" +val pekko = "1.1.1" +val rocks = "9.6.1" +val protoj = "4.28.2" +val lucene = "9.11.1" -lazy val root = project.in(file(".") ).aggregate(kvs) +lazy val `kvs-root` = project.in(file(".")).settings( + scalaVersion := scalav +, libraryDependencies ++= Seq( + "dev.zio" %% "zio-test-sbt" % zio % Test + , "org.apache.pekko" %% "pekko-cluster-sharding" % pekko + ) +, scalacOptions ++= Seq( + "-language:strictEquality" + , "-Wunused:imports" + , "-Xfatal-warnings" + , "-Yexplicit-nulls" + ) +, run / fork := true +, run / connectInput := true +).dependsOn(kvs).aggregate(kvs) lazy val kvs = project.in(file("kvs")).settings( scalaVersion := scalav , libraryDependencies ++= Seq( - "com.typesafe.akka" % "akka-cluster-sharding_2.13" % akka - , "com.typesafe.akka" % "akka-slf4j_2.13" % akka - , "ch.qos.logback" % "logback-classic" % "1.4.5" - , "com.github.jnr" % "jnr-ffi" % "2.2.2" - , "org.apache.lucene" % "lucene-analyzers-common" % lucene - , "dev.zio" %% "zio" % zio - , "dev.zio" %% "zio-nio" % "2.0.0" + "dev.zio" %% "zio-streams" % zio + , "dev.zio" %% "zio-test-sbt" % zio % Test + , "org.apache.lucene" % "lucene-analysis-common" % lucene + , "org.apache.pekko" %% "pekko-cluster-sharding" % pekko , "org.rocksdb" % "rocksdbjni" % rocks - , "org.scalatest" %% "scalatest" % "3.2.14" % Test - , "com.typesafe.akka" % "akka-testkit_2.13" % akka % Test ) -, scalacOptions ++= scalacOptions3 +, testFrameworks += new TestFramework("zio.test.sbt.ZTestFramework") +, Test / fork := true +, scalacOptions ++= Seq( + "-language:strictEquality" + // , "-Wunused:imports" + , "-Xfatal-warnings" + // , "-Yexplicit-nulls" + , "-explain" + ) ).dependsOn(proto) lazy val proto = project.in(file("deps/proto/proto")).settings( scalaVersion := scalav , crossScalaVersions := scalav :: Nil -, libraryDependencies += "com.google.protobuf" % "protobuf-java" % protoj -).dependsOn(protoops) - -lazy val protoops = project.in(file("deps/proto/ops")).settings( - scalaVersion := scalav -, crossScalaVersions := scalav :: Nil -).dependsOn(protosyntax) +, libraryDependencies ++= Seq( + "com.google.protobuf" % "protobuf-java" % protoj + ) +, scalacOptions ++= Seq( + "-source", "future-migration", "-deprecation" + , "release", "11" + , "-Yexplicit-nulls" + , "-Xfatal-warnings" + , "-Wunused:imports" + ) +).dependsOn(`proto-syntax`) -lazy val protosyntax = project.in(file("deps/proto/syntax")).settings( +lazy val `proto-syntax` = project.in(file("deps/proto/syntax")).settings( scalaVersion := scalav , crossScalaVersions := scalav :: Nil +, scalacOptions ++= Seq( + "-source", "future-migration", "-deprecation" + , "release", "11" + , "-Yexplicit-nulls" + , "-Xfatal-warnings" + , "-Wunused:imports" + ) ) -val scalacOptions3 = Seq( - "-source:future", "-nowarn" -, "-language:strictEquality" -, "-language:postfixOps" -, "-Yexplicit-nulls" -, "-encoding", "UTF-8" -) - -turbo := true -useCoursier := true Global / onChangedBuildSource := ReloadOnSourceChanges diff --git a/deps/proto b/deps/proto index 1ba7e91b..3f764a72 160000 --- a/deps/proto +++ b/deps/proto @@ -1 +1 @@ -Subproject commit 1ba7e91b7d925feb900cb43aed58278ee2b76c1a +Subproject commit 3f764a72ddec87f9eb8d07b94b1f1f7e1e5008b8 diff --git a/docs/.gitignore b/docs/.gitignore deleted file mode 100644 index fb1aa38d..00000000 --- a/docs/.gitignore +++ /dev/null @@ -1 +0,0 @@ -version.tex diff --git a/docs/about.tex b/docs/about.tex deleted file mode 100644 index 9ccf8dd3..00000000 --- a/docs/about.tex +++ /dev/null @@ -1,6 +0,0 @@ -\paragraph{KVS} -Abstract Scala Types database wich allow to build the storage schemes around the linked list of entities (data feeds). -Powered by several backend storage engines it can suite variety of needs. -With the RING backend its a great tool for managing the distributed data and provide sequential consistency when used with FeedServer. - -\footahref{https://github.com/zero-deps/kvs}{https://github.com/zero-deps/kvs} diff --git a/docs/info.tex b/docs/info.tex deleted file mode 100644 index db4e5703..00000000 --- a/docs/info.tex +++ /dev/null @@ -1,18 +0,0 @@ -\section*{KVS - Abstract Scala Data Types Key-Value Storage} -\paragraph{} -The Key-Value Database for storing scala value types. It has the simple put/get API plus some extended operation to manage the data feeds. - -\section*{Backend Storage Engine} -\paragraph{} -The KVS can be backed by the various storage engines. -\begin{description} -\item[RING] For distributed, scalable, fault tolerant key-value store. -\item[LevelDB] For usage in simple non-clustered environment -\item[Memory] In memory storage for chache or testing purposes -\item[FS] Filesystem storage. -\end{description} - -\section{Services Handlers} -\paragraph{} -Particular Services can operate with specific data types. Storing every specific type may require some additional logic. -You should think about the handlers as some kind of serializators/picklers/marshallers for KVS. diff --git a/docs/kvs.pdf b/docs/kvs.pdf new file mode 100644 index 0000000000000000000000000000000000000000..ffa8d9bd057024f52516634bcd1f7e538f316b52 GIT binary patch literal 83536 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 LPA(=d4)ebN2SPu& literal 0 HcmV?d00001 diff --git a/docs/kvs.tex b/docs/kvs.tex deleted file mode 100644 index 7e83d63e..00000000 --- a/docs/kvs.tex +++ /dev/null @@ -1,60 +0,0 @@ -\section{} -KVS its the Key-Value storage framework which provide high level API for handling `feeds` of the data. -Something about sequential consistency...last operation for the operation. -Features: -Managing linked list -various backend support:leveldb, ring -sequential consistency via feed server -basic schema -extendable schema? -secondary indexes? -mupltiple backends -the application is kind of framework for seq consistency via feed server or something else. -all the operation that are make without secondary indexes,i.e not linked can be used without feed server. -The data in kvs presented as plain scala case classes - -iterators, all records can be chained into double-linked list. so you can inherit from entry class and provide the data type. -kvs use scala pickling library for serialization so the picklers must be defined on compile time for you kind of data. - -the table will support add/remove linked list operation. - -kvs.entries(kvs.get(feed,users), user, undefined) - -kvs.all(user) - real flat values of all keys from table. - -containers are just boxed for storing top of lists - -database init kvs.join - - -put operation is mean put into the database, but add is adding to the list - -leveldb - for secondary indexes -consistency - put each in the box - - -statically typed. mutable, key-value,case class store -schemas -for each container loc process should be spawned - handle feed operations ordering and consistency - - -\section{} - -after handler for entries with particular payload is defined -it can be reused for specific tagged type -Scalaz tygged type is used for specify the "new type" from existing type without the needs to actually create the types. - - -For example the Message and Metrics are the same kind of entry with string payload. -Typicaly they are marked by some empty trait - -trait Msg -trait Mtr - -and the tagged types can be created as follows - -type Message = En[String] @@ Msg -type Metrics = En[String] @@ Mtr - -actually as soon as you defined the En[String] handler implicitly you are ready to define the new handlers. -type tags will help to catch the error about incompatible operations on compile time. diff --git a/docs/kvs_jmx_api.tex b/docs/kvs_jmx_api.tex deleted file mode 100644 index e6185d98..00000000 --- a/docs/kvs_jmx_api.tex +++ /dev/null @@ -1,65 +0,0 @@ -\section{Datastore JMX interface} -KVS application registers MBeans called Kvs and Ring. MBean is object that simlular to JavaBean that represent resourse -that can be management using JMX techlology. -The Java Management Extensions (JMX) technology is a part of Java Platform that gives abillity to manage aplication remotely. -In order to connect to Kvs MBean you can use standart application as jconsole that provided with JDK and located in -\$JDK_HOME/bin, or others that complies to the JMX specification. - - -\paragraph{KVS JMX interfase} -\begin{description} - -\item [Read all feed as string] -allStr(fid:String):String - -Return string representation of all entities in spesified feed. - -\item [Export all data] - -Current version of KVS using RNG application as backend layer. As far as RNG is distributed data store it's not possible -to backup or migrate data form server to server only with copy-past directory with persisted data. Even more any copy -of RNG's data will has no any sense becase data in RNG storage is partitioned and particular node can be acquired only for -defined range of keys in store (approximately equals N from quorum configuration divided by number of reachable nodes). -Use save method to merge data from all nodes. This method returns path to zip file with dump. - -\begin{lstlisting}[language=bash] -Kvs:save -\end{lstlisting} - -Be aware that RNG become readonly after save trigger in order to keep consistency. When archive will composed RNG become writable and -readable again. - -\item [Load file] -Archive from save operation can be loaded to application with load method. - -\begin{lstlisting}[language=bash] -Kvs:load(path) -\end{lstlisting} - - -After load opperation triggered, RNG state become readonly. Data from loaded file has higher priority compare to already stored. -KVS become readable and writeable when loading is finished. -Be sure that quorum write configuration should be satisfied otherwise data will be ignored on write opperation. This condition can be checked by comparing - W property from quorum configuration and currently reachable nodes in cluster. - Important note that loading of file that was created on differ version of services can lead to broken data. It's caused - because RNG persist data in bytes so all entities that serilisated before saving goes throught serialisation - deserialisation . - That's why KVS not supported compatability between differ version of schema. - -\end{description} - -\paragraph{RNG JMX interfase} -RNG JMX interface is not for production usage. As far as RNG is lowest level of application, it's not aware about data schema and works -only with arrays of Byte. Those method can be used only if caller aware about data schema and keys composition. - -\begin{description} -\item -[Ring:get(key:String): String] -Get value by key. -\item - [Ring:put(key:String, data: String):String] - This method has value only for testing. Put value associated with key. -\item -[Ring:delete(key:String):Unit] -Delete value associated with key. -\end{description} - diff --git a/docs/ring_about.tex b/docs/ring_about.tex deleted file mode 100644 index d7ee57fe..00000000 --- a/docs/ring_about.tex +++ /dev/null @@ -1,5 +0,0 @@ -\paragraph{Ring} -Scala implementation of Kai AP, key-value storage which is inspired by Amazon's Dynamo. It's service distributed datastore that -follows CAP theorem and provides consistency, partition tolerance and data availability among cluster. Currently it is a part of KVS codebase. - -\footahref{/ring.html}{Detailed documentation} diff --git a/docs/ring_config.tex b/docs/ring_config.tex deleted file mode 100644 index 8105b930..00000000 --- a/docs/ring_config.tex +++ /dev/null @@ -1,57 +0,0 @@ -\section{Ring Datastore} -\paragraph{} -Ring Application (also referred by the inner name RNG) is available as akka extension and makes your system part of the highly available, fault tolerant data distrubution cluster. - -\paragraph{} -To configure RNG application on your cluster the next config options are available: - -\begin{description} - \item[quorum] Configured by array of three integer parameters N,W,R where - \begin{description} - \item[N] Number of nodes in bucket(in other words the number of copies). - \item[R] Number of nodes that must be participated in successful read operation. - \item[W] Number of nodes for successful write. - \end{description} - To keep data consistent the quorums have to obey the following rules: - \begin{enumerate} - \item R + W > N - \item W > N/2 - \end{enumerate} - Or use the next hint: - \begin{itemize} - \item single node cluster [1,1,1] - \item two nodes cluster [2,2,1] - \item 3 and more nodes cluster [3,2,2] - \end{itemize} - if quorum fails on write operation, data will not be saved. So in case if 2 nodes and [2,2,1] after 1 node down the cluster becomes not writeable and readable. - \item[buckets] Number of buckets for key. Think about this as about size of HashMap. In current implementation this value should not be changed after first setup. - \item[virtual-nodes] Number of virtual nodes for each physical. In current implementation this value should not be changed after first setup. - \item[hash-length] Lengths of hash from key. In current implementation this value should not be changed after first setup. - \item[gather-timeout] Number of seconds that requested cluster will wait for response from another nodes. - \item[ring-node-name] Role name that mark node as part of ring. - \item[leveldb] Configuration of levelDB database used as backend for ring. - \begin{description} - \item[dir] directory location for levelDB storage. - \item[fsync] if true levelDB will synchronise data to disk immediately. - \end{description} -\end{description} - -\paragraph{} -RNG provides default configuration for single node mode: - -\begin{lstlisting}[language=json,caption=Example] -ring { - quorum = [1, 1, 1] //N,R,W - buckets = 1024 - virtual-nodes = 128 - hash-length = 32 - gather-timeout = 3 - leveldb { - dir = "rng_data_"${akka.remote.netty.tcp.hostname}"_"${akka.remote.netty.tcp.port} - fsync = false - } -} -\end{lstlisting} - -\paragraph{} -In case default values are suitable for particular deployment, rewrite is not needed. diff --git a/docs/ring_health.tex b/docs/ring_health.tex deleted file mode 100644 index 830282e5..00000000 --- a/docs/ring_health.tex +++ /dev/null @@ -1,30 +0,0 @@ -\subsection*{KVS/RING Data Metrics} - -\paragraph{} -Services uses the data storage so its helpfull to track the state of the different data distribution metrics. -The RING distributed key-value storage also provide the node extension to collect and propogate different metrics. - -\paragraph{} -These various stats give a picture of the general level of activity or load on the node at specified moment. - -\begin{description} -\item [Disk/Memory usage] -Available disk space. Used file descriptors. Swap Usage. IO wait. -\item [Read operations] -Consistent reads coordinated by this node. Number of local replicas participating in secondary index reads. -Number of siblings encountered during all GET operations by this node within the specific time. -\item [Write operations] -Consistent writes coordinated by this node. -Object size encountered by this node within the specific time. -Abnormally large objects (especially paired with high sibling counts) can indicate sibling explosion. -\item [Network] -Throughput metrics. Latency metrics. General load/health metrics. Network errors. -\item [Search] -Documents indexed by search. Search queries on the node. Number of “failed to index” errors Search encountered for specific time. -\item [General Load/Health Metrics] -Watch for abnormally high sibling counts, especially max ones. -Number of unprocessed messages in the vnode message queues of the Search subsystem on this node in the specific time. -\end{description} - -\paragraph{} -The KVS/RING Metrics Extension provide JMX control over data distribution system. diff --git a/docs/ring_info.tex b/docs/ring_info.tex deleted file mode 100644 index e33fa317..00000000 --- a/docs/ring_info.tex +++ /dev/null @@ -1,51 +0,0 @@ -\section{Ring datastore} - -Scala implementation of Kai (originally implemented in erlang). -Kai is a distributed key-value datastore, which is mainly inspired -by Amazon's Dynamo. Ring is implemented on top of akka and injected as akka extension. - -\section*{Overview} - -To reach fault tolerance and scalability ring resolve next problems: - -\begin{description} - -\item[Problems:] Technique -\item[Membership and failure detection: ] reused akka's membership events that uses gossip for communication. FD also reused from akka. -\item[Data partitioning:] consistent hashing. -\item[High availability to wright:] vector clocks increase number of write opperation to merge data on read opperation. -\item[Handling nodes failures:] gossip protocol. - -\end{description} - -\section*{Consistent hashing} - -To figure out where the data for a particular key goes in that cluster you need to apply a hash function to the key. -Just like a hashtable, a unique key maps to a value and of course the same key will always return the same hash code. -In very first and simple version of this algorithm the node for particular key is determined by hash(key) mod n, where n is a number of -nodes in cluster. This works well and trivial in implementation but when new node join or removed from cluster we got a problem, every object is hashed to a new location. -The idea of the consistent hashing algorithm is to hash both node and key using the same hash function. -As result we can map the node to an interval, which will contain a number of key hashes. If the node is removed -then its interval is taken over by a node with an adjacent interval. - -\section*{Vector clocks} - -Vector clocks is an algorithm for generating a partial ordering of events in a distributed system and detecting causality violations. (from wikipedia.org) -Vector clocks help us to determine order in which data writes was occurred. This provide ability to write data from one node and after that -merge version of data. Vector clock is a list of pairs of node name and number of changes from this node. -When data writs first time the vector clock will have one entity ( node-A : 1). Each time data amended the counter is incremented. - -\section*{Quorum} - -Quorum determines the number of nodes that should be participated in operation. Quorum-like system configured by values: R ,W and N. R is the -minimum number of nodes that must participate in a successful read operation. W is the minimum number of nodes that must participate. -N is a preference list, the max number of nodes that can be participated in operation. Also quorum can configure balance of latency -for read and write operation. - In order to keep data strongly consistent configuration should obey rules: - \begin{lstlisting}[language=bash] - 1) R + W > N - 2) W > V/2 - \end{lstlisting} - - - diff --git a/kvs/src/main/resources/lib/README.md b/kvs/src/main/resources/lib/README.md deleted file mode 100644 index d93d1571..00000000 --- a/kvs/src/main/resources/lib/README.md +++ /dev/null @@ -1 +0,0 @@ -Compiled levelDB 1.20 for 64-bit platforms from leveldb-jna project. diff --git a/kvs/src/main/resources/lib/leveldb.dll b/kvs/src/main/resources/lib/leveldb.dll deleted file mode 100644 index f9c6f53e27bec9bb62158349c597863471f745a8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1064448 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%0Aes z-RkoK1qoV4W{vlB_dQ7}ii~A1QlmXxVY!toHDG~^Vwm8fUj)H*=Fkk=){Pxbhq;`! zdOf=fg;u0PdAQ2UYUu$;fi;v5e4K8z${z<5%|Tjg+UOtX{(WULFR=dM{3zHy!rY#? z##)-j97^1sH5yQcW%?Ta7i?8BB-yDy5aI3$r+vxpoSeEmk)1twlOhDQOrRkJN`+FZ z)(}Kp@e-2L6sKLO{|z!2`*I9Gv{?LrX>l*-IRKOoGN=MKG3;+FBIM`j_5HxL2~r6m zZe|mGSs`Tn9RE9^7Otg|*`Cs8pJ=M9dWn=xq-?a7uAn0zQe7s)h#WF7IFZ_I!Eh`b z7b?_mHSMm3#D zeh)!`HJsai3ZbLv(v)CM>T{L5yaI$kPvT7dSk=PHvFirqaAT}Sk+_42M}6MqT+AR& zA3V;x0zJ;>AK~sx*}+2}+acwK{o_t?zQ@Y5eK7nnlDxVgCtTg`y-F^yDw@~7g3p){ z6AnSfb=FV2y&f17Fq%o{CHcYn&L{26nT9L;pWsgfpSagNj-u}%!X;C-#w#&v;VMy( zp`zqT{|6N@7SCqr!BEAF;;*ZW8R;9DnX|0x3a<0NbTFggVd9Z*19qKyB&+l?ZTE;H z*fYDwO)9nS`vboT1oOaIhVDu`gHEv#AuHE(e-_suI__)YT_WU9;DzBWd-n^v+|Te) z$g>JCUb5mz5}h8xB)~P=bGdy%<7^W&YAn|AF&g9w8YEPgKgfSXVxeG}!NmE=tXneU zuOtn!ae^}PpG#TjLd)-IqrrKLTL&UU|HIQR84g9NH`HzpNcYb355qqvvwqP@;o9dET(O$0@a{l(SFeRe)cu>;nw-INHVw7>9%GI+Jub#&oGq*jqjYzT z6i!)@qwRIOzo)HW8claE9pR%f%Qn$c;G#DZ2*_&PNPT_4y5lIwx`NiC23DF}{tC!u zxbRrIlSVRFBG+Qe`&3t@MIu+VKza-tmX3PvD8Oup(?^@<#Vp2Ygt=6@Y z=dfCVY^R3!V~5O@TEfedAVIUBxcvmpy3y;|XooY1EZswFB4}=8#9fWSvSi)tK-O8U9y5CdO^aQL*XW-b z)hh%fK}!ua-cZ<-nTm;rO+GUjH3!9L554ZiNEa`t#zT(JQNHFJdK3NNX76oQdqz{@ zyRGkd+c1pYU$hF$>?isP5CP@RS%3R6Y%G!%2cscxC~vdc6e#s(GcU%Zy+L4C;(NBZ zP|FBpA?`V6qhu|@KdRS#K(pQHZsm@mPuVboF6o;PqCP2xDwp5htRn`G2Kx)Ys4OSR z+emT-9-`>E)4u>EIJ<`a*zob#iPAZ>U_Y1>iWNymkgU}`xL9JA6`>dp{e_=%SihXy zPzHuI(S{Nfu#Sj$F9ML<)9aRfS5~x|aRC!)xgKU=XsvgZ&fK{+?dx~#UWnR!qIXtH zi_%7u#zKkYAfekmkxz}zT0&fzzUsO{`p9LjyWFR+|6;`97i+)d>>Bq@Gp*lh!hxyF zZRbZMVY3U`?mJVNAcUV71}ZTp5}N8>rXs*Qm1r{F>m<4l;%*3@X)|??rfzIVW=by_ zH0GdpqCW@59MmjWYb_tlZ|`HsMEqAIMn7`AO4jaxsOjs%UYHKf&4$znx&)fqvL26Re+0S>?FVC?m7Xi>iE@h&<$7mMmZ?>g4exIlzzn0~UY~#FZ&Z=te%_}P%(l1{%E-2OvP@Z=w3pBHJ+PhlXOdSE zB^ls;#Ju zS`KzvOZU?wN(F(ci@|+{EdE9p2Qd6bXH#mB_1I+?;WlxP2XRf)QI03kUG#9Tg@9Oq zSQl}2+6kYz8g3+R{h+wDKTST;)DcgNP4;G~1?HRKf1YNW&jX1^!C}9>8D3yp5fs99 zB7+KSvX4*YIV(gkR)mb;Zn}4y zz9%j%mr5!-xsXGK9PhtLSa(cqADOPI<+Bkep3ajPu$>Nb=+q33AZIeF0yW{yg8s5o zR#lSdUCGC64sC7%IkASMDZp|$;OS4+Xe;n6e~?0cr>0l%N~gRoiZK09L;TtKpTk6- zQn;lj{<9!f^uB(A*t-V8H)yb0^Qeke?)wFp&-QvI9}RuWyB{8xNsuh~5`)MTJh+xA zD8E0_46=Dk2SHK7~6bjO%8{6nD&i{V=|XdGL>?5i&N_@D1+E%^Tuq+ z=#vEZKozK)&Rt{UCkJJo8@j(&6R9AM;yS>EVeXtm10jFam` z3#i`4vLxO!XwlHN%{{OnUNMJn22IV2LlE$~rsRThtK}frH9+^f--vyH=7qR$!NWqa zk8Exlh(E1C2))AQtMRmHPo061T4A-kCxk21U3)&eR0Xj6H@IVE>(21tPRh+a!Fp^G zN1$&^UouF#Iatu(TwY3Gl>+V&4A<_r z?)w2Kcv?8O?mdN9SncTWxJV^eHp$UX>)L#T<7i!PD7or%Rd20*!@4gAY=ucEGX5C* z0N%JVylh_J-4F93C9o58xNA?!$yq&>HvBNpsoXI;%q5uvcP@Z6Y<98KB|&Y1OL)gH zOYlbyH}_0M^5A{b+%pGL48y>j8ZF5E+qftd(v8YGyEp#qusKq1wf>EKq;O38@?3*I z?I}=2xwUjDMftVQ#)x7))+hqGx)@w<#a03qGIx9x;dCzdCLf_?9kr2RYL#dgHa$Gq~d2^W4fxTY@)s(DH z;}dE{+6}E8W3|2n1!_u8AhMpmfp6VgLrdZeoc_h)E->-MV;R z*m<+|%|*wDS5(k;CE4=Zx@jLOl$JU7B7%fAHr-Q*Wz85!xLRPXm_5q5Gq5huKd5a$sGuZ;cG z2dJ+Rfz1X%cXUE>G9jJmYmOmdf+B6*Y4+3_TJx7iM~WWK0#nXLL42Gk#iclWc^WF< zIum_OZHMI_GdWcr8BqOyn&RkUL zUa<_#;4r}+V7PTK+_}IrZb9k76XWlVj9#GYbXFWOgj>B&SL$@$d8&a-!2X`BtawI; z`mwzOjN9r{X~)}3AGPJ8M%kFOT6dCU?rPC}t^QX=W23&_4N~CUrXBc}$H^?k$vBmV z95N&=b!GcSlh6m=qk!44(dx9B$|Ze67d0INGF4fhyxa$WLE5ZCZW(@x$hscf;2mq^ z*)iGgu@AgD64)4pReGCf)ew&tr3+6Bz24hYTz9Y=C$loXg@;}ee;-g3lg!KK4?MlK ziDIk~7k@k4Jt+ugJqVa{yeH{gFyFK&sw7`(M}PwMXE%An`69lv`io>oD%P&!XfX{s z`wXg`{gA5lDy7npg!cmm*pPsyC|uW=)ArAE zD!<(3Qf6lp_33!Iv;|0O*T}}?$@erSN8jb!n<9xRxT7}YKV3n(v$^_}@K&#>w#&L( zO5zk}Yg;&xhT}2kNA1#zh+l+{-pjehenU!9FWV_^oEF2 z7-bi`o!$IRI2GikuE_AqNoKpHdlKt0f0ww+u1(=IJnvmI|5YY2^@#CJs3j86RY&IU zu@AjuCnF;m`<-|QuscqLFn~#=(G}We?rLJun#j<{Od>MVdDdHZHPv>`JuA^zj#t0@ z1Io?*z!1C>j)hxe!>u5c>iiE6bSc7nXgyJkxZoY%+;8Th2`0#@2JazUOT+}Qg8Mb4(kO3ZXQE56R3&(D*a%@h9L>(e#!*?$B46S%LsDRF^Q zB4fh6hWmt@7fD~0Ku8b@l%Va1Gj63hf;Q1eo3YJYyu<6MyyN3KWlUj!XI=|Axes?AUlxY9h`i2+kwAopa@ph_hwu?xx!33Bx;oht@w;Qy|l&#x((z#{_B9 z_zGab$LwppiJ5_c*4LC;{+l)hOvC_l@oFEKyZ{#NEq}G+?cD0uolb$!AA(m0Z=!Xg zMIXsR@R}OGdnnywwd}jpOf#g3tBf=C$lN_y`6hbJ-hbXbcb`D7Nz@&|qH~=0bt>Ro zMSfzCc;+;Nt)AEiVc)M}1&oa3z6frCuQ%=_ih9rGq>D}g4%nD=cL7}uch{Q%^>wet zcnW1UFaDOr!e}siKHKE6Ci`w#r)z7J@8}Rfo9zy z^`8_|j`*%On?GSc{HOeGUXXVxyUMw?Rp05g@&O%pyqMmJz_L;!JgP}V$Y!=N&uw*2 zt3Lwg@Is`=KdFw*VQe@Hjlh%~rBOmy9UyR(b=M8l=KULgWQbtFBbN>>A+a6Ugh z#S7>U(KP>e9xz*XPvVE_^TNCsGI&Ax1ylLP zw1P2}K8FA0H7b%U+T_=1r%xX}vB>z7sil(=1*elv%T~*`Kz6FRPrvLgI3}nm^{D2H z@uxF>5K9a8EmomiHq7P5#&K5kG2mJmE~2gCU8EYQLTcNrN-Dl$r+2EBzWNP*#yZcV zWNsG9KO4MwJj}F#!uHJP?L_`YR*})$;}h=UOKwww36#Gvc8%c#G;*gJDZ7r&m^q#r z@9Z~9+19sF`E^ZIQR|t)f{Aa*Iy%QbwZrXU<)m6i#3zhatQ14w!kAn41viMu%HJ=&g35*3=eqVb=-pBV;CB9!u?Chpw zV|nAuZFIw2DaZJsYdARhbz)J#a1eI*h3K+7QWdq&FWzOh;#B-;v~1k`qB~E=!474K z-_DGs<<5NSb7>ZmMZ{+LS>n<{JPuuHMxdP7*HNNjW9dBF%-K`~#|g*fU?YlcRqo0BiTowYnKq z5lBbAUHja84)J%DH^$eLU!ENO&=tv(A8o2l&HYM7zd#k@D4%hA)DAmQFJPd3@JdYz zqrgNGV^m+G^_MM8p^utET#B<9F(#Kvc=r5l1O&wk7AL>g=ReHtpl3!B4M&JgN4@RQ zvQ&8%-*WX!NM|X)o051hbGY9z6RF0;IG2{;Vmz_^tF8}Mto*KrsI|1n

(q`22>Nv*ryb8 zb;=>|1TiBI^^9T0r%&sgx&WeYAY%1Qm!r*C-z zB+HKJE!2*veSf0#F1OkrEtGjKFJz{T`Cwr62Ap13r+0mDxGg@q-R{;H=A?e?w|=#0 zeZrr=Z~7S>8J{pr5Lm62nY+c~`IRpFa6(az_bL7I3tgf$r>MF+dJ2nT1x(72rBmftzWf}G20ispfqEk3Ajm(ZT=Zn)C`U(^Z%>2Y7Cwi8y7Ky(< za!T^#CDEHQ3#)3vpVTq`he>~LM}P0gXMKtOzB%mJ=XbbMesL4M;9?X?R0zNi=n0dwhL}`x10fL4SFY;cvF; zy zfkv}dss0E*T}<)L%UZKE;z!N-T|B2>pZ{D_?F;iJu$D42wGVq;tc@}yru8fF0{U(B z3+x%OpxSk0O7iOAw6;5+K(NE${CW*1hBHX`U4P_E7dyzZX!!kV0cknMi^`oIBRiSK z%q1_6PqW$(M%S}pO7Ej<`^-Nol&xrhd=bBfyN98%>&uN+hqrRvS>J%ybz|~|BMsJ* zSX}pwWWce)4smi9hgWJ|M4a_wws7EktBWYxcZuDxlhxLaxyOVPSM_Y&9ZuS1;jM3l z2XAf~%<(LYsB8l97Z^&u(xr^oh2!qfaN>rZ=ykf3dOdbDqGMsqbzXI3IOfXMtzKjD zvL4o>e&x^1y#}EE!GdI~NA9g}M+QG*uTszGc-lU7lRbD_>PMu+y`i!4F*~R<3mQpY z%-~0G@7TICo059M)Rp>sF#f@L0>dw~FNOO33gI!_d~NiKq>@4<5uxNe?`+^Y*s$+u z>}*uj?j`GWr5MNh(On1zz8-e`9gH9cBGwaIv8QfL87ti%sKelzyI;5_K1^RUad*%& zB&Ati+b4&K#lb-Ye9b$cg@|L9MjOJ(9}juNz{kaVs`v?&4-qryt=J4;+$aI$TvqE*3SLw1D+sUYl~3L z`iro%6ImB8gNv;9k4vyZ#5Y2#%`cO7q4UzJ+U0L^{;C_JpE>V+ zX!qt%syFK3;qrFcFdDROAc5X}{@Drtyo-(b_@{&WR0(VOVlvyw8wW>{|8ns1rB z_k`HOgV6*ca%C@x>hF#FsB4{7r559BrlQ~Vi)X4jI)gf3wCfalIH+iSzlx|%Q=$&f zp-}3?FoB99$>~o=l2c)Ohxt9JGeUT}FUl$ows0q4^r73>OHEG53|}T*)zR_#u|ROk zTyXmw;j;fVzj5YNm=EWqxrPpGY=n@I8aB&qb4G&O9*{p%V5P~4?;8tIvMGdK^~^lq zKL@eb9X9J?U2V1RX!#=6M!acBl5j_F0Z`w0_LO8%Gxr9~y*``>!{n~iVtrVu!Hic{ zAG;9a(QVw@GiBz6E0RUa7Cnz`ExMrramysxwAICQ(P?@b=8mdIviI-!oj0Z?v!b*W z+hTq6tmfLBSYhh4HlERwjEe58*GU)}*+Yo#?0qZ;d^1(nK7`VQAQ+)A;ISd8VQpOg z5Y|=e;M?5Ppvl&6y0xWGzi4bxP8-j&g69{4=aAs}$(Q}~-NAEv@Z12Ehz9%Yxmui; zjpGNrEM2z7|4lexi6i8Y73s8{f;*>>F2-#Z?ETh{i1#Wgd-p?Cw%9Km%2YPr|2^BU zEU4-%zp5&~Cf1~<@}Y0Nl0JPfzq9n2(chYMm`W>DF2fU?3&#NW%wz1C7y((FuD2)9 z$l^tCtXEn8)9#8dieU!qv=1NqLgx@6_e7JehHTJ(CXbn)y1ciycDHrKODJ*avagZ_ zE6b)suT#(zI!wbW*b8C>BK{S~^HqOUYtHljI^d9&7Ead+*08LSIF9>sURdTSgnwAZ zti>#${=KFsr#tWIKflr5U5}h(so=*8@2)rIh9E#?`W1zhr=;z~A0U%oJpGEDNa!bD zAJhW_^;Ocz>Zmv@)FdaDlPNiQj`>@cexs5kY=`Q#bpp1MlJ5@9 zaf*lYmuAP39r z37hP^4BjqMoPFUhF}pA^HeL1|`rDMq!}adx%9bpe_Z6*h|8W_V^K2hKHl(ECEA)*BW7^@?ZU67-Dp~-7V#k=8 zx)LFW`?~t*{pj>=837sl3_nmh@sXl~{NmiFLrTB--DeLl8MrWPiu3F|-@@mIyXAZ( zGcq>Y9fr~i)j#>`yF)ptqJZDn)m_oE>?Mcw5o3;RO+4)0&%BUnXPx^YUInfrQ&06i zE(Vytc})8hjJm&R?9Q(goQ-T`7wRRTGlkc6UsZnSDBAcI={ouCCKh43toNKE-=-=$b@gnt2d7gHIC_!O&_QZcbO_)@EMxnD7&tZ}O@%Hp(C{km*nSGmI!_-%SP4 zJ9)X2m({Xr%2M8IUHXQzJ^fMu!#jNTVKBklI1g;9wOY0*{~OW4?wfQJZb*=YcXWjf zkVNkRkh|T30CIHmzJ11h$S-r@Dj}IRgXW@>OjA*g&cCCsT>@A1+jD#`H_zXrWP@JlixQ_Gh91bD!6k zcf7Mrbw2;%UP;h&?b(>peY`~P^Z`8sb9lpv?}QI=Z_GQ#e@M)*wBy@-XP%e+k*ac>JW@`;07pif3Ye#E%>wOL&L* z>W(|p-{3uocFk6_W=TJKKI*(UogH(Q7{2dzz_IZ#@qXp$j*ruZ^h^8Vqc~Z88e%1P zltjRO1X4TWzd-B4fnG(1-Wn89_ahzE?qp_>pOwSt^h<2KjD~WC>6fWQA5u@uYTFmj z3#Gh%@DYwU;L&5BGEzjg@E4+&*ohMnrO_|j#4EH~ej;K@Bp&3^l>D7Unw`954za+@ zR*{ZzR5SvE;(w#Xtc#Yj4Cx1NAAf90-ck;<>9X_a9(3|OB68K%7h20ToIwjyoVPL| zYTR2{r>n-mUlZSE%D!KXLGqWT{|L70BZWCnNrt;R$Z5wf0p5Q%5Efrdl3UFINAFfc zb9JB7gkMzl08iFSyPKu{=YsN<7L9=#keF~<6(lRQKsZTbQvj|jfQykEOOk%Sg4H#n z4oH~SC<@El&`Hn+XEUZ7u=>%9k>|F!=IOx*jL--~&s;K2%7bB-Q7I6}KuHesA^Woq zNs}T9BKA5cr>y%-gtNlUMeW42Lhbd*+M!M3c4CBc-As|mc0ce29cxNXo{hIwopEmP ztMxp<&dv{ixE687!F1eC8vTZ1b9_?p3qp1kuHuP7gA+`2z1SIqYr}Yqnk8;PB;Hg! z&_B{;CjbD>F=v1b;0zS9>Q3AQo}(rfk@V$&`oa%S=Al0N_4UCzA&f(5hGb7R2s@)c z!oZ=q9HXl(gReR*qro5eVoT``@YS0x``H;sC&dc8ILO_Q98n|BpZt!;k2|m66 zu}ggszO;SYhp)_RU(@Vk!t8vZlSRK^CkW3-YzQv1VgiY$FS$r07bQBwo@QxWC zd1Siskk1G1$npVQ!3rPfb&oM!5iGGzE+}BevyD)DI`X)_5bcE@m4Fvi1mhrzxFH<( zPMpn|?kecuL!zhg#uybEvC`y8c{L>wXaHzNWfZmDbrN)hdH zeS(gm(+nM-gqMlmKyuJqj>-+k$@16NXc6>7S9`UAReV#6Mm^ad#jCKw!9oL$UU7nc6dNo$v z&v3&M%T@St17%livu}6Fn03-+4~#5Az?b$b(I9RSez?8I(?1-K?rd_C;Txhk(dX_GW zkmh~Wyzb|96>DG?lLcl~BM9U{D@w}9(>)bWDKipO+B4RZ&0`L_^1f!}?CNe5Ew|aJ z$Db*{vhT<5e7bZLA?z0TSiaKWEVD0f^rPx7zhV}U)}#adDwzK?s0O;o$|NWH z#C!^O7by5r?1C{HmJZ=E^4{F&xBV$7{JM9TWm9KhJKPeJix$%}!>7d?s-N z+u8WCrOTcM7;IB=Y%>JGow$GI#u^%_?4D@mVd{q&drac8!gSdifDA5w+|E_(sk=~v zorxtVY}&#!RM|Hk{{(-9F>ykk)+0lrQ{%Vi=SD}Z)|5A9JRo&fqHLM*?~H9-EjrDl zsDFJx4-s|+GWXCv73bOlf}X7=GTZI>Inlob9eeMjAdfS#H1#V(f2f4x62pzj=3r-j z?6mlhtS_azZaHz?c z=t$3~5He!r&dWW30S_A@)MMTN-^j=-CrK|)$hxvpmh0?vCEG8PMu%s(6&B#dvyDOeI6#r z%KU}%S$=;TVC}>OZ(oO97nAh2?Qs{!%C+*ppiA+~o_1*7Vl^(zQU zYdd4{2h@@g{$@Lq@E@7XrIzl^Ful|uLN$t+(A3Rp>Jl|&s9%h(t6xGPK_6=0VE1pP=z&TT^?=^a_C7bK5*58= zbIjv+baMQ=B_Y=8$>Q$w%x(^H*wZn~tVkBUCeh#D7Z1XR+f1TR6l_NTd`vybN%NsfN)s!fk z##iKK>ewa@D|5G?ot{$LaoZOs%Z+EVt4*PfUHMI+E%vy}3ZqrGy^1eXh#Yg@IEo)6 z$_7&tWJbQ&yIf_eS=Yz^`s67y(RQBWSO|lUp76{y&`+Y^2_8*})7R=(ZMPMFR+Nz# z@k@R;uI63;P@B3!O>&hS(aQJeD7?QG@FFS-JZxTdj}xshN^%1J8i_J#8vd~(+Map? zX3}En!s#wrk7tgY*qAMCjkPoKd#t-3ClODj61JB^vDBD$bMT-sd44`C*{0B2jn$hP z$<0L?1Xy<6T^jRljM>{7SqX4$>*z|`nb3PReTbW#AT6yk{3{(BwNjwEn^nv>m_?`4 zgQv(YzR!4f^J-2HGM>rltYC}(uDVbM7z6iPedQ`Z!96Ca;72O6MbuaOO02vww8oRG zv4YgXxU)dm$;)syeJkIqAyJ$mJD;Jb;z47W3mY*9H6?zu4G^cuYhOAU{Cle5oNkjE zPfVWf|GL=!b(8Gdk48zE)f{nb-LHJ$7~Pl8&8x=E~GO^JfvkUT}2%PjiPn4AMV6Mn)svBv!= zUHNOZn8>WqFxP@ucU>$}NahcLj`1mOr2ChTyV@#@mfwbd$J9^?Eo;OKwdsubDvwlL zyY)D&%|B1kbe#)o_=pu;xJ4bij6j79m&HfZtL}oL;MLQqN3_jG`~+ykP)M@W!VAvY z=XUL6y8p$$Z%I46KmQWAz7azN^!ff(!od#s5rT2MVHWM|L<(`yi|s_*;6)l>!IR|V zhR$yD$uyrVzEU;4BjcqRYOMzP<{QlAwN*m6&vO3^6kwaZqUc&6b-&{`#s;Eux0-|D zrXHqujkKeGsUM3~T_@OoV(>3|@fYi6{yq~O=IUIRyy}NDIxGw+PwE3x2h! zFlXfu>N6WTaE$*@ioLR)PY3>#F1!3VF~4bNhF2()**7mM%4uF$d1+2GV&pGpv;Fxi zM~ZmQEzyz9O`N9Gc@Qj4}?$kSv}xz3%haUJ@f_lfr03;)g>~c8fNYV(v{AT*X&$W|;IvbO*;b zcm6rTSg-p{ri}2UFwjuGKi%Ma@Ei9QcyxEcFbad-oYW@swQqbf`={{<`=^p6THxLQ z3KPZmo-GG}H-s0X`bUrVM;EiO+`qH>m-~=b2k{AiW8(u@*5UrmWZK$YXD)zFm;GZ{ zk#@@A?8dspVcJP^(q-5370EOkfm>sDPa3OXb59lZCPw^;wC=lC0IdFzTBRo^4V<;< zvR|s8)1BVRMq-Utbv#WvF0WO*S17NESg*il>9P^z2cC(Tu@Fn|^UJxroh%$|u7i7a z-)*+-_>d_6_tD(Tw)2Jf`jTan>e6MY;ie=bbHJE5-A`VZNx_%jur*(TpTAZtIB?Oq98_oB4ngX zd({3RLvJ2!x#KH2GJ2zZ+kN^zlFW)!-EtnC3ge(|wNBy9tK<*qM|aQLOFc)?qmN$< z0>>K``y^nk5aIe|yV_8Vt(I@{g+uePcN4|$oW-d1rlZ@_Wn)AeKCwP~u&$01Ykx7F zT4opvr+-_opd7-ZO5y@*{sm7T%O1;6$=$i9W! ztc6f~wYXu9)$&CiiQ=1SUu*p*N^m1lLI7x1z9)*WpCazcaaUm_UAEf-%&szC$us)J6XZ^`l-FbVT`tuv6 z&2vqgFBh}AJ(JhApvJX)$aYqpTm$DZo%}ic!gH940l!O@U5}73+&f)%w~C<;HX-Z( zMS0rXQOtku583?gN&5YL^~sE^B#OeKdpi9C{TqH`Zhx+_ohcGT!>gG-FLCjOooL|q z^sy?kmf!ISH`0z+Qn&QX#5Glk;*YDumaYJW>9T(lFo_uTyb4oszky}cRN?HlljiC^ z_j_hPoy$FhQqJ{I*uCYbmcEktov>@{#GK4B@%Kfl9Dw2rs=!p8Aq%VJA=LzYA7j1O zGpT8>Y~6K+iFKRdGsBW(pAIIF81Vx}FO@%LgIHLvyPA@4qF8` z#Kn4Ip%d)Ho&30>Fue&zf*~_m?4C)!hm7S-`Fy%|rVC`Nr3#e0zk))&Q+Qk544|nE zK0aRU&JjJhbpg=ZgsJ$QRXH$q)5R5rq+{^94)+%3@R%)$;slMQ%ia~?jG@8|Jv+sB zUDn?pEwi_qDEKztOSv7SG=x-bsv5v)vO`EW3T^|LziGDC-M_St=)mUPkjwUST$ci8FskPnEeU$BTrD3W#k?183m(+%ck-m9% z>_F=VGwH3!dSeM4+m*qG&kGV~zcz$wHaIU3&uYxUH0PG7$h2U@(>bOQc`G5hBvjg? z6?SMx?V&|O9}MY&?Po$dg0SzO$&O#J9uAPWz@bwCV zA={Z+&e!zI?u_93nHmDtu2ajqb!mEzCo`(n$BF#YMF-ZgvSmIpZD_OK?}6vX zGS(UvonJwSx%in6(ZAGS_>D(PWD`N!K@Dl z6kYBY4Re#-drJ=Mr~t8b_!ddd3_05njwLv}Q{T&z0MCl7nP9S9?%Fe7VyTwrKJ}u( zH6g{K^K{_X9kXRhGP*V=T)mCeL7oCR{LWe$*lisi@!%JW;mQ@<_`&~!O|svzy>5GT1>Kd?-vVm@Yqj||5!!co2YZ#h;s#T zqF^hzP-ONgW$rP~h?Dd=S^OwP-1+ZoNm<~M1+79(l?Ctct_4z~@CU=)5HE|Vs(Yc8B_7bcU9B)e&&rrR4xk-!n>3To!q<;PHvtI@LpvrkB zT~;`V`MTD1wCGAMm>uZ+e}bXc-e}LeK<&Joig*tWy#V{1(IuTF;u6+pjVSNohZZZ z`TjRT_~DaTZ#OtQaqeNAnrvFDamaH|B12-bpJ3zb9_l68El@E>u-!2|;>@(oRbYbr zQNno{dh-4SM$p%Pz+}n&pjDIEr)Ml!ANC&)Kfg3czy3NjivKhJH?#G}+c_EczvWL9TwKp2 z#VYRef9%Y~qxq7Nk4B#!3x9KmtI~|pVDy~W%~F$N>}42r$>07TRw1=EIa1R9%>ro7 z*QhzYiXs$^*{DfqN&WO3Uqy}P6&VFIqg2LDl!9|HWG5D1<>m_o@aC#iBG69JQ`2P= zD3(#FGfH>#BIzGP4FvxJ1gXEPQD27%)YoGM7Bk9OVs2rKMf9ugACXk4C$jc?&O#TQ zGSM8a9~6wHdyGVqI@TH8lc=j8pxwI%C)VXf-#j=m;-5!}zLcIMUaZsgVM~I2*61-lhzJ^%6X~)m^QF-cOiud#`B;D5D`=%{pnl}9zub4FD*7W|Vj38d zD0sEbAdzqoX2&;>x5>Fs*M7GY+Z%Tj);*XPwGz`J2Rl(;5|b;qx0Ov|U4stm@Ses3 zELh?@55#wU7GIz5Op7e5M^iDYoL6&2Ec@MmBbTfA41kuA56TjC7t4BtA3kZ?@0@q8 zI{`SK<`zq&0WnY6#+_U&<#@*QL-JzyuJDfKu5qs7xQtAfuP#SmB zRNR-p}9S{^0lD#}@?hH}c6Oye>N0eVlqSfLx46ZrRJK{WqD~ zK?T#(=NGO*914JG%Ccx+mI$^etVmx!(_>&?jcw>uiriM`pszS&3B*9*Xap{srKwEF*DeCKD>@6;3OslHA$wLTw6-0Nw; zjbd07Wj|OHyXQg6YW=_r2}@(#VM3@)ti!3!Obyu3g@9`Iovqf(1SY)6;OM{7QX&e@ zl$Fx|W)o4X9NeVK?xDPCcxL3Y_|ARt^#wi}9+@x@4HL;HG<3>tYnWaSwR*bI4f+N# z+Oo;gmrqZ&Hdu;#PDI^#*tKQ+O84{vd7&oDHUa}s`y3nxZk8|f4u#vX=d!M zM4LeR^d&`5UVElgI-lr#l4bXllN93C|LJ z&CZAZ`3sej$&o2f&i?y}e*2xQd%1CogKgRmJ)GTcWq+FA`Th1gO@1+mA}!+%MJ@9| z$MIU!8X=&Gq_gvo-v!1;K)O-L+c=(G$dgL9iROeUxeAqlZIF)^j%4H2IOHuX<06?=IH%_<9!eM=b5E{y`6fhcy6h!k%V-5N zd6VVPYWXQSC96RdZ*aJ&2BqZwSue{~WYk~yVB}*>pOu>J=`6?p9{G%RG0(89UiWgb ztfOqI8pgs*B;AbeC)?Aj?p`h(^-rV8N5*&rn`I>93O@#rr#^vm-bP2W{L&rA03@2* z0XTz0PvSQ-UPKbq@w04xfB&V<7+hO&#UC=oOC z*dAh!yqv+K%+TC!6JQM^5RUCcG%o4IEJBU1PRu*Bp0LL_mglu{z-D*?+Z_rHEq zUq5-3uM%2buD(LHV-cjOzxw>%UvIg_9|WT$1>m3V!I#O2rVo+%yAOuQ!0HDF4OVr2 za)>Jbr7G9PH4I(RsoG%M59Y@fqS~0E!Q6y(NQPYn@f`kGc*vsXlKy0bqMxB7_iZ|3 zups>_gM}Ef=T&zB!=9Nh0J3BlfRq9V=!p3p|E@lT1e*ra`x;+^^;M$a8|U}82W$N~ zRbPViK%UtC2~y*|D3jz#?%%W)5Us6Ut^P`@Sz)xAVq@g6HT}^ij4Ja%;(kLHJEDV3 z=G1EgG@6uX_m0k>zV7HuJ2B-Z;iteI!Pi8?9NW3`CSyNk+~g-MH4x_(cm~$OblF~T zsHu*z>7ny5Hd!qT=;8mz-n#%sRb6}Ic>x0^o}fX4S8CL;O%ydzS~GxkhD^vAm}nFb zR8)`}@llO1!^0{BClQXvQQFd0t^I0m?X6nd>b(~5QOyGr9<37aL3|><&Nyg6TLe_{ z{eFAzbLPw>L8RQ?@B9A$v~uR0{a$;mwbx#I?X|)*%?*gzsMz!b&69eD6=1#+mmpCX z!X?fZfN;wr_WGGV-Y`@l#S;ITTlyTY(5&olymgS^K7<6f_sjVRFZxk*knk7^10Hh$ z#@Z8^%GK!3768Hb+`M=6*hks=5_&RPJRj`jqevy3e8V|qLGpC*BZAtHgUV$Zjz9yv zY<$oBcUke_9pihlMCFMqFuaa|S&57BRQAN`{90b+5>o0M4LB~Zp^}%p1}q_}<7gol z^BVzBclSgpmsEa){M-_2ke%fXPRhEMFjU(J26Pe3a@ix<^%In# z5=i?$M{dw*vC(NQ$4>x*_p3bM2Le)q_i5Fg_6z0HKw-ruB}9L=#R%jle~+&zcuIbx ziy5#68_O&OtbrJrt^2OOS&P?)b9{Cz%D1q`dkd(%HoQD&Jb*VyYG4e|MdH5n2fi>V22M3^d?Y7!M3U*MMITEe^`VZn9j$GDHS+@XM!?1J$VR+c@; z18i%LR+-}qedF^N4>HGlKriEkK2vB-kqsi6bvpC}Mmu6VQasRtTg05&!jarxiZaNX zN&>bIB(}4ukL{-5MDg5G>)AEz-MPiqH^EQ@XBojCI4&)fWvsKG0xI6^+K=1o4`#}0 z0aU;{aKBEPl?Z$`&(!0Kz{~bnGoNR2^r#)N@%hW3b_2z z#GlYHr9T3H`<5t)HEk$!CpIGYhsv@DASxT5k1>rW41h2@t>Gw3JJ?2kaP^O?#R%C& z*Zvj#gDGVEdUP>i?dz+H$1)|tM$@`@1e)P_)43(6z*-}_2*-VA(|`~_K%sM3Xm4^I zMqHSkgo9z|2YUDS>b>aiuY32`V$^~C!1GtAy>EDSzL443E73*@p0E6cC2e@#!`%CU z=ej+8!_(Rb2<)eSh(^u+O&5stcQnE#qkbUslbkCg5y64jVe`U#HGjM$Yg~vGXwi5` z6wOMrL?9gznO@7wa7F!HyS-H?FW)2_5>}U{&lE z{kv2*&onRe;6(1k9kJ^@*|Oaik!V*=ib|Y_y2+p8i!k4NtQ8x?c-o?`i^&xOiJZWc z3FsU8xkmB_(1IYyl)MW%`+%~eu}AEl{tel2)I1WVr@@WMJJar08qZtTVd4N|D#3+_ zDqJAy<~PXHH{z_CFx8q{F+_PIy7@8wtO8iIJKMz9eAoSBT)1TdZ%yNV18p8~f4zj) zDB}Z8z=*NDflXm;wch2n$pk%tjq<$wMZVLRKwdvh9pGh$i4 z78T$O-M}RZ$VGHlfa1yFmSLyhyYf=AgSQW1M}rA}iU;uS!Q#TV*jY+=rs;2}$(Kun zydzO$@BO%U#)2v~^Hv#V4#;Nd<`|gZ>G2x`sUImOP-}h-un5Pm!nojd;BD)R^~{W; zORae$!8a9%p*7#bpEUxgo5a`r&KkjQ1inrszAhv{VRR6V&o4D<2+*!woMi&@XWV;x`7Ct6eER0Z5zSk+d*6qq9Z`Dm!8|9z=x) z^t!EE&}QOuEcQ0O2^_ZS`T1SS0N_dwVdN_Nx%~bYd^cUoWNUaX!I)N{0Yo~)k7sOJ#%+-s@!)$>*LT(6!_ zs^`P%d9QljuAVok=QZkiv3gEW&(Z36vU(n)oiMvG-m9Ls ztLIJXd5wBrtez9pbF_M%te(fH=MeSW`@U*lJzrJN_3HVgdOob4_p0aZ>UooTUZb8D ztLFsu9Ic)wtLHK5IYd48zNgw(&sWuRy?Q>Wo)4?%z3O?pdfud-*Qn>k>N!C@N2}+_ z>UoTM4pGm&@2d926X)&IVBS%U_&nTwj)arLCT}Bn1U>t}+JFobvfn4#P|z*@oz6&_ zLvhi+XQL2AGv#mHDA;o%_Wab-QeF`9_yXacQ7c0T+@MwlGq;#;pte*neR?nc;sNZ7 zX64V^3gen-HtXa}@hcxbF>(MmcVnteQY9Q0k}GiYh`EKioha-1LR4E~UA>^EJ+bX$+8 zRHco3df-X%`qTG5DL>*4GSk*0dKq?!QZw&SYBazNOo2HtK^#yR~sDRY!1UE zfYBvvB5*gUr>+nU6v#&9f&_)|KzWH>nF+$yZ)Z( zXTtUjF7=@Ks>5Rnj-3qCjQN58d|*r|Mob^S~rG(1e;ve0grLEr;pM#3}@ z>LDFbWXJX_t18u+Vkkm)b#Sh#_Ajtx!+GmCY>06ya{nZDziN$JRxP#+K6WyKQ0#mlN)~_(3>b?Sk@&$|y2sMmPhyc>KCtq7i?_{8+ zYiD?X6zlX^`OEa|)}FU(%|bX__2BANq&R4F$KGye+*25WEF8+-RNeI2!rWT(h+1Q) zgiZVMTJ2fp&q+Qn=>=#Zg3qP!g|TFCM+!G7-@)9!Bj)~9f77l7?t)=e`%Gwe8-3(MEqI|>_u+rWWau@R1 z6Ebm`MF~|f1=l}PzthuY{rq>R0`}MDwn16eo#N$X9v%GrUDm-k4BepWvw>DtDSXY? zRnWc+rQdrkT(X^KutI|m5+Y~(D^*f6@R53`>3l{;z(|JKQd^XOILuP~?y0PoUVQrL zhaX!Fhw`w+!;Kj*nNsbiLGL(i<;~u4vAqLfZs;%By)5Xhip;DvZ`@IB&U_sKy%8@A z3rfg5-=crLW%L6G{e*dkw*-_2ZUY_VX^2N_f2p0dMq1zvcYO>SpI8^+ef1#pFmVCV zOjTfAz--i-a!1%yz_lwbMIE_ca2gU>Dy>c2Ft5DB`ygu4%@wK_oz}_F8rYR`6EvMB zF3XY0+KBT5#BH9AAw%W-R#te-)86}$pv8(Xf^al$`;Vpdt^0`H4IUnP*}jd6vpNT&KF>49EHw@>IZ2 zawkF+;rIex&ujYT?>GjXt>-GJ_&VoS`FC|>N3MhaK16m0pVBeB((KiAeX1?}I~Dllz8A0R9*Tcq?tziQ}fDG(bjVZemUCaU(+YP)MeCw}KEbLP-Sqg?t$AGfp)c{ad zq7IW1d*7oqAC4m~*%tUNe`DKs0+2X`4`DTT)+yNbXHJuKTOV`hOw-j!)Q##LiTlwz z;$8CzXm_<>1SR+s#+Vi`!2I@b?&IEN=or^MoHxt(d`Jn$Cl~fa{>tmN!qNgn+4OtT zZ>Ob41nh-VM1R^we4X!^h45q9P z?ZY8e8=QWn#1VaPCztnkSwRu3dD3e@YAE(aR^-r z_^xW0u*R$X2<&H8KgwyIf%E(Z@+i1~V$?)*CUO*+pD_THS@%!EQic&e_!^eDGk-0X zD6t-CD+hS@49dc&vHlLYh*k+gj1l{pg270#BA^z4Yb%uXKBR+pwmpT0;swdwNd4(n z)EqB34r`@#FZ3#?n{?KztH%yxCeek&9b4>` zROUy`dp=~=>_h5u*4GA`e4}c2$OOsMdC=^=d(rGkPY9h{L`f^1Rl89aZhQ`FLMm<;IQrXg?r>?+ zR)w3Omq0Hz>s70O0D)?<=?guILRs_}v_zupe2#&17<<7+}lNuX8WKxC9PXYalq z>lbI@xR9I*`_jig#p%p_02huHhn4fwux~s}P(!qDwQ@1V)@iS%&xVqZDagbNx`-!t z{7J%(YmgqFSQrpzF}gYIDWpPKRv6Z*T0^lGEd-lQ^1%~yb4bXycK*=h_r?C#^x$nC zg!D1qZ>n#+W{I3@FdileAfEu87VM4{0YGDlUD>74nJLh;pm4PFnmD_ zh6hE$aDa8%9>8#Tw+kr1&vhQ;hCc^9K#RyZV9;P^M~(F1yHG{vfWz?sjWYc+WL1c3 z(?ikwY?AV!4qs!ho9CtbnU zNmuVq`Up3?XE>1DAG~q$Wy8DIc=QHmJiYLzAp?IJGVn*FtNs(eM7nxse?_|Lzmu-s zo%9jz@iaI+-QRdz_|t1Vb(PL|dd*K|#{5)f%#TP{{U`iIx_W1SMY`(0ldj&K^bzjy zK#)|B-`{xlH$QdL`XA4`I-{bzqgx_W1SMY`(0ldj&K^bzjyO#8ay5rh^m zaOk_S5gZC=r8WP%U{xg3!L_Er&w_*ThfR&9ojVGv$&8%Qi+ksSJz-|9QN44G?41jD zPbB~7xnFdo=WRz`PO$>P5_;oXN&oXxk}*Fe8S^93)qD{CB3-=`{vut?hm)?}o%9jz z`6>Cj^V4fQ%ftpNKHwdDNulR9(FB*2My87C`?2#GJu~=OOy3>OXIJj%)v^Lt&S-tF zIFV7{A0g7!`U)}TpXDb|Z}&Hz;*9YWXN*UrtNs%oMY?)t ze?_|Lzmu-so%9jz@jx{GdgBqa>yj55?+3y`WN`Bnhz;U1<0dvY3WQYBft}mtC$5}s zexmA(Dt_Y5<>DuHF2zsWxm^5&xgb&;I6s-)|NP9(n4j4h^CQyLd=UO3UA+_jB3;dg zldj&K^bzj)nSF5clj8UO1(YF_JO@S}T0j}XCC`a;CC@qOE_qI*D|yaIcgb@iUCDD! zx=Ws05bAk*fAXBJJMiu$|L7U=kDej_h;#*Cz%wM$)jQ!S(iME2boK6}k8s0VKOlJT zPyW&C`X5hS#(3&7#v{^I|Jh%WuHM;Sk*@mhq^ox)eS~{Fb^r8umQ$6BA<6X!EI55V zVk)RYYff8_e#p-t4y`$TJyN+{>ye$)y&l=QQtOeE%e5Zax!mKGolUW{e%2$Gye9;Y z_^_0GL}eXa@Hz4ko%NbOlAkf4My4xi#cWi$B|l5c>E>s4F2T>zbGi7LolEeu^jt1} zCUW&`>yMwM`EOXVeJy$$Hhtmv)!_7Zcnhgt#mU9&5_}KEYakxOo=K07gWLiQA`bxW zM+#p``SPfGDd&q^>#4jppO!U2w>LXvURp|PFkR2B!4?t9Z$I|NLAa7H+d(Br>)u>F zcT%bK&XohvlUZ2(cpZr<-uUC;`BV_W*vRPdj>iUxE zNYUMr^WtMaMqdj<2u^KY2*PTGLGs+`ch$9~l;{orKwGD|<;*ucrIzO6IcDbmtn~8S=sVDD6sg-}xol(lhug z*6sJNhxs z6b?g_S}q>Q@D_*%g)c4Febb8FcZEBv%K=+}LK$D6TS~rXV;i8W#MHEUtW{^AUR;uu z+Tm2^UHQwIKdyT$Gd*vbeP~J8oLL$+uf{#!=R+{LDG33&imhcRLN}_j_CdcD4}a;g z#5m#Wcc$GcUr z0t|Nh4>;wmvJz-v3*AjE6-|l!kSrF8tl5cd9(TZYqu zJvrK)zsHNVGCLffnTuoSpx3Ld3}oY3iWA5{&fvD7r!9!rkqc)b7uJzwpMcvkp9tQI zqnm5V?{E7XzN!rG$_%A;h6y4=GL>N~exg0LGLm5w%eeRj@y|$@cL%du!e!fh8|NR% zq{FeKd3E2UIxR-|E@)1w#JE6Av@HDgw~9TeD2(M6=d^x~R$K<>Vh!h?SnD}b0w6x% z2xR3a{Rn&#tAlk<8HmxG2%bheMPT8#coH?lI{(jHMDPul*1=Q@0AcHFk(aF+RSSfz zv30V@2K?=;64MAG!hLRDqL=gI20HznUaNyru%1{m&4CyQ*LydiL8flemTp1s#1gyB zy5=VX86mV3UT1<}CnJOAC1YW$kq=MPVdL6{fDeZlRkP=RlQ2P;vT{s3nA=(eO$k82 zy=@TKbG6ZxcngaS&l`~=XilsIk|5NC|6Cvxkf~;j*E6q!>y0rni1_M3U-#Tq$in0r zpVu?TNeEnsa`7v}Vq!HCL&loKFfJBwfp`@7 z!O$rnXvP0Q3jv+{K+yt#*crfa5~rFxCWK*)ty1Qy97rKV3Mk zH8DmKn$&LFlgjk5%w*%a*2D;HB2xx2=t1Z#YnyEGl(clUlhY- z_aK)N*KcjZ7kFeK#*pWpZuE~ace7DkH$b+^9|L1ht;8C{iK=R#cZ_UUMoyd!V@0CH zE0~C|z=f(xqZJt855@CuA3r8PTf6Nkq}lR2sD>prYO&woD|~M=moGni&ighu!PK?Hnz<`3h&GQ_EpBZz$$>j!4gsDf8ChhFCwx#?BXs!gU2aY}l<0$C*;V;=n0 zMK(+{w zuxHMQJ}})yZ)GhK-{(sNRoD(zF4(t1_O`x|{T~vKZHBHjmD_mynXHRkf4j_-LiWS# zOdq5&z0PlLWPiUmvTv53yf&)0r=xoCw*FE5N333=dhPPBM)j951O1^o9f_n+{1LwO zh2kmrN@TYLvhP;NZsYpdz;*IgF+mgk_UdH7xj<@l+Ap?8kky6lJty>y?WwXhL^kli`i0B*IQz8!#fp!`tWWE#coN45dK!>C_dc|ORh#j_C!5GDe-3!&ZL zqs1;xQ3ze&BkL$dV~A9O-iIi$U69IDBQsSxnZ9Xf8kfp+mdwO<7!68m%0?#ATP5}) zV?$+~!R)r6Z?CpAfs7&p_cKTv#T%S2;x`5hNgUe4AQo{vXA5N520Inpi$RUXTU>A6 z0(@@W%3r$yRs_k(37J#%P-l(UO%TGBq4<30KBwdE$2x2YYt8e@1LjmQF(pMITgHmN0piO6D3Ww3z&OE)2tfmJU`;y zkZ)?;+*%SoCmHbn7>042>lDmwFjIK(iy7cD0S>|W8t@`b?>HlgC?=KkEp{e5t)JX1 zIWyMu-Jw%zr;BphPU|-i=h!i9NznFG@T8gs^dT6|#x20};#WOC;~Jf@kWX6Gf}IcfNfTz`gDUByR1*4`ZjA85^)NUn2SW1 zZ?`1A18)l8({~I4pZ?}}n@`*Nr@ZF~No9Yi5OV7y#M_A=b@-?j+OUuLh4#E>LdDdG z?mODBcacJVZ`b$un%?y-?^WOblJ!aL*soCO@=SfK^2Y*O4s^~OjO%vn$q1@CJk~j) zLTboyR}b2d(~Ch=2I53gzbb3O{sj`(IH(Gb&|!;P2sMP>x;vM0Tfh(hPw=0GCwngc zln&DQ5)1gVofl*=1AeqN*eUPSe@YJPO|K031w1h8A|Hkj50zS_kA49m-!De(uA4ou z;kTkg!Vmd%Bd`TmY{%VzFR>PI(`;+yCL%+(b^RHcTFL3ZvuBpIrRodzs_&EQQ}xx$ z`s6$eN2Rhb{&n<&OSbdCMTT1gUoR2YD_?>vV68g_%gp#vDQ{q9xw_@I0b)kmNo4T| zn0s9IMr|3d!abO4jK?L%pQEC1ydG!`e*@ryzIN@d-{M;^er-=^)^qUWTd2p2o-4#B z>*=R3Qfj6q)-rbRgxQ3a2Zm1p>oROw0y5-q$ivFP)_EmdZd}Q23ti`&^5yL~q8P6y2t+ zyfC|Q@7&1n#=SR1zSp?-ByB~TwsMo6{c^HH;$O%d8j6Q-r8NiFLIx#|)_re9ZeVqU z%(5z6^rPq77h zV$qWA4`N(;{1I;>pHI!2b=pq@8St zg#KJof5RO9r{mT#g~F%5KNEQuG|beWy?*Z1H(Xy*TBkpA-IX)vURg3X8hYxA?_V7$ zsgGWV8&?m8;*H|=#go^SToJvhWX_fP6Ad@aiIkuM{mI#pNWqVc3{ejB6a_VFS8xV{RRaPs4TW8THuubyQtbV*LcydBEl#1e$dO zbFay=rjJR-2X$W7c=oopa79sT{x1N&W57#z$+jABDOCvmLMv=e^FXf;`W@Lg=46oc zNKzuMOF=@yMZ9d`7VVioU|i<6U-`{p;3b`Kgc>h6#Y^^ra5SsSQMJ4wc@BDo+h`-R zB4;rVOv;!*3 z7ag&##+T&Nio@CT-PGdH_e1~YqVGrKH7u1|_*b|{WX(=2K|b7X*%CEI#aa z&kA<`cU~2<+5K7b!0xXQygikF(*q*^VWf^&8(ifa%^u(5leg9K-^c33WpQm6S?wYWenk) zY#6KYK}LPt+lVUkF}9V@3qb>-kTMG?4I5ye@Si7pjI+NpjcYyVGuLSx#>7;VuI0RG zOld}X`q+1(7~tWMa<8RZI=Hxnm)9^4Vv@fXI0zQu3*yXaMN2%`2uU{u@4pJ~8NxF- zP@N7MjEw+VI~!qcFBeX|7}0X}&wN^#vf(iFz3M6NV~W{t+LyAWHXcucu%W^hy_z7j?y;Mss#o81DnC77Q}DU znlHyls?DqN1H0A~YRymM&AzEz0e#}^qOkF?-uix?o()+Ic+O33NzmBJ80zRvVg+i3 zT^;n>Z;11uB}#MYEA`NHRJZ0nc!iXHS+Sajj;F z+%j)ToQ|iMf3yR+d9v3ZGT1{QTh(wykK?W8Z?d$u5}yLt_;7tq{wE^U{lV2nj@Il! zuH?N!A7m#4%^8IWm?uF4QR9I_H|;0Vxpb&g@Oito#7q>mafi<|{E>S;9W=>{=G3O{ z5YW2AyAjWj@k$VeXUnATLx8~DHh=Fm-9*qU{m z9HAeB3L}wO(Ew{(jsKwK`+G;wdr21lnFQ|pw3j9bwPky8e>xSfDap}T_OzyEbcxgiL&~*U6TKQXp4QZbU-WqpihYFJ4?tP1sVt93SY2q=77>GHu(x>5R?q9yvw=@+Jwe2g zAo{hHudRDMn7)EqGv7BwSWNEo?iQ^JhlRq$!U_RE;q$Pkt`emi%qjVY zP4-?#pEIAsl6-2>W!RuL(UgDz@m>uG4FayT3%Adp8|}_VSoCxJcvPSQAZl!h zZOs9V%?=yY(C!;kfWgM4;7NU7!Yp`z)i{qb*y5x++>~ zv-gF43Jq7ZRP=C-GpY;Wf+>B^AGplcr#9~j7@wk_(t9M$XYa)jj2#tQ*w?!zlOB(M zjorO#A)3%TtI-k6f3;W;o<&~St!JR*BflUHXD6PNDnH04vA1&()fBG@nB38SDo|fc zl}#5Dj}>&$v;iDijmxOcujr9JAeR%E526uc2Z3pPTCqihUvT!@K&sh;VIuim)joQ< z=*V5|*^Cb=X#;F2C!*VEm8C5!<2Z8fkoe)dLlNzR_{!nWz!NhkrcKTn+z|xXcfoJ$ zB+RIoOdcU5&cZ)Re@S3|g8%J^eS*j?IY1ZfuG5*PP2>STnCzW_MPha}-Dyq9GHN}N zp9_Bf2aJ@~(_}ZhY6`RAF01)_08C=EC{1|o%Ux6?yo?~erE7p^IRg}At}S~PRlr_{ z-bu(wbYGJiD2)Ty$4?VeFuCZc8VSQ=6UsYzj|nW&_(3m!KvI--@14tY@Fr z9KsicWQnu!+l6?Tpe%uS2`>|Dei4LVFi+n{sD$H-CKft z(MEd!tP5x#1gn^ym;|89{@T??Zb{WDDJ%pNE*ykS-*4^ku7}!#80d7PBVe>A?m^9B ziu#(I=KGMknga|xNvI3ZC$<5CK+U_Z#BdWgA&0b_`71hn$?zfxykh zt77jD#4P(!AhqJ9t#|a5XA7XlhLG`MtKExGN&e zXeE9k>n1zvkxtg{q-RB~+0m1bHDYHicCsFpo)wvXYG*32GjYHD&UtCA+w_I}m3IE& zc7AJRdS=}`4C)Qt_dE=GPg%j;_#SH(qSgRtfY-q_lE#e5a$WcUIyBsj&I5hkmg$*M zB648+Sy?N5ScvapOHgY8c5qccL0BTEx6c``-22unpkNz=X+ELL0dg#pS5T9YCr~9@<|3+AU z_9Lcus`SoOdVBP5)y=yWl?CGCsi}u%TkK}d$x!qgMFX)oRAXOI1ZQzAP@%7lzNg29 z#0_^UwVrA^fyX`{`;kD;loBXsoNg`-odP$SWGj_45ZAFcrRM#Q*Kmrut@)R7CK0TQ zojZn|gZzcFrJYs*Ug($9Z=VLhz@}nXMNjfJ>xh$(5Bjm!pz?YDWLqnjny+Fp15*EE zj>A3)=T(K)9b>-$3T;7^a1)3edTe2N7G}Vncjm`_LgtT)%~GK?m4(0}OZ8kKz;#>I zPBrDC8a3Of5BMSjzR4Oze_R|HXg1fH6Z|14=**(^aE%Cg^a6jMy+QwR zJ_ko1;)qTjq2YWl)xG7Cf0ZB|)o#|~Hw8sq&kJ|bdvr5zqmJt^)_aelM=;?sVSyW; z7-p(WDzw%!i97%A>Yd{~g+y6S27^oCFB5)g^nhj;7K>AmP)Ue!(w?)z+3?Y3Wrt_& zFj^+WNBx5s8!GDvwZ5M#*T;DNS=MJ+P^v)?*)g!oFQm zh&~cUQg&@1%^e$_2-aQ(<0&3yeX)yI<^Y&Ym6?KF4YIe43BJvAxusP z;dkH)4q%MyJ&`9cQOQljmm`3(R$>L1FP5qc6* z4*!k|XK&I^sk6eqwmI@JF>I`}zWGg?fAu~7sRulM4B3JIL>K(k94{waK87qWfDn0C zfmdLjp`UcjoP4%Zf=o`uiBE)~< z2Yky)42cX9AWS~*APTCX=UGV)Haut}A%PY!HsMONRqIW#Tj|T{% z!$YVPDZoDkVMm@aBp)Db`KRzHZ2E~pa|eT6)PeX*VP#)X`E494T;eQ+GCx(ob>u2_ zV%DGw!u7$_1mYcvmS5V-59nFt57zBtF6Uj97wb>R*o6DNVTwiYsV0eVz$ zku8u^z&m1}XXE^RLSz^OvVRL3T~-*IIh(1rYpZhV0|ta&wGQK0rDYV(XW|8C*v42Nzzs!xZh1V6XW?+yzmKK6yz#kN3C!3{Hl82Mf>1O7xqBy zQ8+q$9?MB~om|vTDm9SG4F|yA@PX zKL}Aryjp=Sa=!hR1M^Jy_kQnPKDNNhvQMZo^Y=M_OX1k{0Ot>LH`JaltUDp!x_SAR zxXwQ?T^JuHRU6-08$Whj^2FNa*Pw1~1F=)Xe+5Qcx@l_B5e z=*Hw9aSV>7PppRlZB=o-Z#b+{1Pf@9%V2`5r+}yGiz5Wu^F_rJA^KJPP_2i){?

G^8wJnWM=}bQJj);ewF+v&A0r3U(5W%t)Joi&P|My&k)4;XgP_o z)$%y2Q*U}?|J?k=kq@!&hFLLX7Ts*HtOx2y|DWi-9hjJnn2X31-NcRX4Ut+137D8x zFb+9Ct&wAJegqxDPg*|Pg6P_|cqrxr{2KnuR~=Sg4Q@G(lLBKB{0G_OU9rBGb?~;_ zVtonp4?T+)x8VoSzHv4G(P}$Vl{MiDcQ>f171EYyD*0nEo+EJc*P>Vh6$&t{mZ${U zI*}G@-{6XY|BgYqSEFZQH9+faa&>qY_xH-ysrKQOwrBAoNuHwmdsSQdEb7tAAOx;c%+{(sk6`V_&JJK*3rO<9`V<^|=G_!V z*z)tyZ3)|5pnyPSSL8T?7B3EHrCWDLKZZLOKzR=acsQ26bv^ zoe+m13NQUFDuSUPWQZ_iNcivsi9?zMNw;7Tj~AUE_N|XpO9F2PEd!eZl^Y^QLgCDp z)L7e>YpaG}-5!pyb;Dnjm^h*kmiG4qe!;L^j4!lgw;10#{6On+_5xZhx9X)Xej~=W z!5QDZa(wen731572MMV2gtYMqu@oXXhel<42r_~*I=J1jaN`Ao1lp}f|0Cg0yl9e+ z5yGqPCU&kTD&mEK1^Gd?VBUy20B+TYs&IvI)nNQr4D9T->4O+*(?{m`R(|#Ps(q>P zEtTW@=}0lYZ>aHoaJ(}<#b1Vt2@FG5IZf<7IMi3uLl5*z<3kg_H z_s@@|JO^FJMi}}LG;pb-HU^-R(@-O2q1#xM_!IoekNah$2JYH2_=im2;e6Fs+Zzx0 z3F%H6D`b9KHk9vyG>rpn&C~K{zC*rs_OCp>09hOW=`{(}hzyxynyVTCYF zcmYS#sm<(>c0dCmNlI2GcC-d$xE8R)Ey6p5_Dsp`cShfjy!t`tfXDB$&y=wnz!3x> zo{vC{;|rTtVMnobF79{9{XB+xoG|`KSP8Vkp%&8IGVFUN`c4|OsB&SDPxt7F59#|C z?U_x91qZUf<#LC=bNbxhjz8MQ-#+o-75#wWk-`U`Ga4v@utwGpEuxx~VSG6C#QMNMv2#)nz=ubRoPIo;S<4F`K>?v=(XR4#(Qm`vM4+9 zaq>-DCP(=`;n7)h!0>S4hiO9u2PKU3V9p0K*)g{Q7{ib_Wnz7kJw*M?@_p}b$E5FXi^AFKxy6mZqye_7UDow5Gj;@M zm^25LrEP8}q30OD#?QG@h|TSvj#0zNZ~7$A=4@8v?QI(3f)d$ugtgBtz_c zjx>smuEkR`sdlyF5~}kfAN1EE*PPdJ|BGzSSTnyX6raX0LMMmfW6Q$vIoW#lo5`Vq zo`flP2l&g@`DX@4UyoyhYYB?z``q!~Bkv|slRpV#0J1Gbn%iHEYD~np;k4THHA>N! zfCn^a&}wzC@02FcsX0TaLKeh{-7hr1`MKa!Tq-}sPMKK!mR`1nXGKmni8QF6Z2Et8 zzxzSe0ng|D_#H%rd71nUa|U9!7r#8{)5-66>mq{7A<(*iXstu*08od`?q1&yyL0B_ zK>3|q4=ej!4@qwav7gPo02oUhMW6fEn&s*H*E~Ahj~C3?O?qp!bZ7Mu^q#ijWzxSJ z-rT*uWQ`t2th*fTcVL@Eg6AFt04%2QA`Yw;A_HDsF?`ED6(T0KM!?v`i{I~Wj|7yo z@p~{4)4a&i%{kb0Zqa>jqL~ghQ)m^-25{=e#i(7+sNU+cdNoS-`cQ`LB#sbu^HOdn z=Pyd%N?s7)RbsSEvQcA^^0NY?A;9?*p&$gq3buW>q_6~dsEH{fz@|^2{c=t$4!51maOOeqPHUU z7*bRE-o9Ze`&uabdN&^2weBoJUtRNu$wSv7h%Dji9dsXQ(;59nCPYtF(<=Ed`p4^0 zC&~V8w$q&W6Z`95!#@NpcjLkSouAP^7;0{N-7f10 z1Fl-lr;rQi(nlMQeRWIp_{`3i+a0vw8^(Gqhj7I?0>n_939PmCWxeo0pmcoLIMMln zNB+*v;UkdbI5n^ZNRZrItQX|x4u9DHe(GFNdyDlQrv}nL^k-jV zKV=KLlE5<8Z*1iBT-TNf=Yb1%4sx9b!hV1qHYeaX94>!#IJC;a*hWo(9>CWX)q)20 z^oWr`ivV$74aV3(oID$?jC;UCKau2&U&>3UVGiu3FqAr8Z7ahuE{w3Xl@n&(K5oXc zzu?Ce+R6)NX{%aV-!5$3Ry=s^U@2E2d>-Z}#S)eLh5F8r_37#LU3&Yt>7u^NP~YWW zT_5>%IWH;TxH?`ygEjQAl(qvW;S9Nux3y0fR|D!wt>uQz#&M`_<4ejPw>W86^*JSR zs9#rTUFa@pgGM|#zwu%7WV^TozLCcNfkM+i4J`!Gn+*T#GXI4#KWuJk+_mxC0e?aut z(&U0lKlL3N`n%BGQU?4FhW-ZjTVG%EUunG@bB(lD`=IxOqQ6FWt^L98|Dp9SYp@H7 z{fxIS_+$OM)m1VB{)cA$TZJk7?_U41Jg!mffBXkTe~%9O>iYVlzg2#3pX2Qd{-xG< zcS{-Y?}PpbOqHvz`gCj8Kv&Px>gy|irPa}IezE>>FzM|n_jsJk?ulxY&J2dpyk?ZPt2K*0({^s>t zUtjZIX^rnU|35>2jW@eS)z5s`bZrls?ZJAX5HS`Z*g{1$F6}rE`aF?dBGa+0>@$7Y za&8D%#j?A_uL&OfykGuA{mXdeNjD}GWc#}O$@c5yPqe>mn*3RgpEKl79G5MdEr0s)vqApU z@pFOvS%+>nil5`AIo(dTKZf6Ss01t4Rcxv?*3=q*wWgeg4FrvFJFO%56KZlAw9lJG z)ddu3jA#pWnpKO$5JEFltg}wQPhQDs1cYkoI&B-HA-@jCGjK;n`}uaO2QSo_|LqFs zJ(^#O=5^p!8}{i+br!f3Hfr>rg357&qU<(!J}9b}IuSL$(**GJ8JG>soIV>*fK6|Z zbEYrAlK^8M@RJj^O#JLMVX8jAoG-n<`C2PV6JIvUD$(k)E%GPlYpeXp`Lg6sHorsu zMDxpNWPzS=zOv+WaK1e9C+Caz`H(@!&tmzL^Hm~#y5`H7I7JZuKRt-){a4XL^(hWL zA^l&y36+Ik*pS|hf=969Y@Hf1W9^SfK(!)SlW#A@izZ7wF3>1+A8l-+u z@Vo!d(t~rJ5idCZZa~l2Y;}i7NuBV_Ay$a^sNK4VY7#k;sz6!=xb)#qa3!!hE@RQ> zI{hBJK@~gTxw~QNg8Pr+wX?cdJQ?JpI;*3)1bGukEmf)I>RG9tem*;@b^I5~>S$iZ zS8ML#0a>^gCd@QGw0`pn-v&Az0;jWX1QJ<~fY0&edw3E4$BaZzohJ#~i*~Dl>=N9! z7`A`*dgvPe%%3qCkB+M8`0rBucNzY>9RJP0 ze>3sl75Hx!{<|T|D*q(`bhz~TXw7+vZ|aZ?I7|qA7kFze{2n{sYE=-4f%MQQ17j>= z%y)@JfY$qqY>aWi>sNO%@n!3w@n0KWKfQ!SUGSPB=;ePHURl3!!)x4&z2S8@@Z1W4 zaS~qHMEZ1i9Zrk`yjI@Q2fUWt$;6kfg%nl}7{3}Z+gAO>Eb4++wW6;~h~<*JCV7cu z@X>Vw<)zLH1cNnf=OMzen-GuwVK>YU-`pE!uVSvPVS@FvT7Tulr^D=3!8^LGTW==J zT=+FJF5wm8F~rw{*LM&qCkv zu;4Y_)&)Nxys&VASebPSi%dfyp0RLtvG~(n-A=6+8}U0@fNmG zJWgY=1IT~1JHI&JU4RRdV3ZNBAIDgtk&1PUwqSc3!3n7~Yb#s184fuj<-E%PK^0DE z!ni_u4k;$@1|;M23^H0=rrL>vH*64u4`JTj31;E$PS1AShefd&m|L32i+r0{y!s|Z zaH2o6?fzgJmC+x;MA@Gc#VBs})@4P$%{t3<+?qyJV9@|i7-2;!t+$S5dvMpA*{Rty zGl&;lo`+6dqdHaBt5c6Iw7EcPLJkDJZ+^Y`81Bx0!1Hn9{^#S}PvKy4KlAbUK49q$ z$^Pc!PYb^8e7qw@A?Cv;rh;=)%`G3Ngk7nG)&4l^weRkKPB!FVPG0^{cC7cD9BX$> zO^FS!Chux6THsBIIEf`H+t`bJp@-xGI?Ae8$B;KA)uf>vJa{gLtBOZaQrtVe;Ux#h z1y1>U;goKf!({*aL-fPg|D#m@dn5Yv`RO=?{@Y%Un!J>fTtlei5E}3eAMt-3OS`l%hFAPIo`~ zO9Qfg)Vb)@JaJtTVeh^7@9)su~KYsK|Kl2Sb?F&CX z=`X)){ucq~(4@=YBLhErrBmP8K+iH{0<{S2`DsAA0qkN!t%*xI;|j3}0)nDTO~R!d z2-5#OQKhm@^EYbC;xlj<0pLxW2$x563MVryp{OrNYgBbt!4{H4V%-_GN{i6F1+4v8Nf37%m{Nte7FFJJi zcToIu#i8RL2i1Pjp~Js};$Mf5{tv4C{^;MuA7^d`iMVBt4E|ZsSNcKF??Lge{`mjD zs{I##dC2(3LGjPY|HJ(I#sAg!_?_EKOSW5B7eXffKg~ly6apwC9Z)W%AWC-w*u_EM zrjjMzlfE{In&IrU=P*e5j$8W~rFTO3%2e(7|Wra}xjG>cJo>jvI3chX> zO`N40mwVK%GePALeWG&6@|tGgQkWxAQ3!vJEC9E!15pEO5)c3+mg8$EUJZ9P38CRp zTYk6%W{UO60Pd$&sBG{OZsvJwA%MfkdA-*30J7lLP~?V?QRHQ|yYT_t2|=$0hvJjH z9)7$ZANj&i^QvCQn>7H&GW>(bIRvvWq;Fw1jWE+%(-DA&_1)m0tOUIyJNN$x02X7j zAwU$($Xx~N(KZHi2`SEw<@k%)*YxM`B$zK@=xsd*~N^RGoBZdMh+miq=E;qCMt<^Jkj&i zc2p5G6j+ifU9;p&kl56c0-f2~ikFPp%BS216;gx#1QHe1BW%}3d;`^Q#taFn-xR@p zhdaDGSi?}=fRoA{x^bBYG|s_@3rdank@cFSV@|+szK*7oHP_$&Y2!ck7ysJvi}RBu z+i3!#l|3%J=W-4o0j%`+#$3Y5a5WV1{TN>kJavGXID+3$(H(ZzEo8BoV7oiM5K0yW&=KOpD|?ZIxtv zI?Bzc*KUYNoyau&ghH}jd#)|7UR$#x55?F7Xyq&-1WC2(u;J*W4 zWKsUzGdYP6SI|Os*%!U@_r@KE5V5D*-pLTuh4J!(49e zau$=VY*a2L;#jTQI_h#~F=4g5sLRDe|=VA$XsZF%rlg^A4~A`Q*O+zPJ1vAX@GVZ9L$LM;O4hvvRk>CX9oCVcAe z{c48#uYr%tK6J_U`vF`sy+Xje*2IKP_cqXLx!C}X`SXaBq#}3d@kwBiuv3sTj8Z^R z$`B?*ZJf>eJyvipPR{vZ9cC4PN>jDTIj17eTLGXu*(++b4KXILx2rg2st;8Yk1}TBOCU=bDa8gdB zvpQfDmD)2>{>JYoE2{bx@L~pZM=+Z_Llr+WUI=E@TUV>o(^1f%2GEj}SE) zOTg0MPkE(-^V+IIhw?{cOgoG#zBbA~Gc9wz4=MgXyO~R&ga50(9{%6>rvtPY(&gO;e80_ zN16WEVx!UA+Q`w6a~i6!2G};2hDY8gFf>4bDV<4qVj)ITM1f6Ln#VVQB6 z$cR9?Yjmd}HjY2EH;qdmv+N2K=CI9jwu!*w0fcFw2!&+1pg?AdewS`$3lC`PtUDtN*273nBcqS32FFKuF4-^pUuAz+ zDa^v}^ER>yqtm=GKLwlz^P*#M>mu?^Ml&waW65mZ%1Br@qH_Q6L=^xyS(4a`tcEcr7z zKUl!jyo4|(0KVu=0OGJ*w8Ub-z6N4%4_vY^pWlO86#&W!48+#qDhQSjYv0$NG6z3Y ztu~s-wnZDFXT32+;7<6A6 z%KJm;3$y8uz!U_#youlZl{?^zSt2LmtAigE>SF@MbIY`qSw@woVpkITb@go=zl}qf z+O$GsSr}+(PaVA*k{OgnpVP5x!=H#im0arDpZAejQlieNZU|-O?vE&*fM>8CL97XQ zvvn+cB*hXwm{&F22;6^p&seCD7-RmQ(cxh#7;B$gz~>9 z!>H4X;9vkSGPvTk`q&~s?|eX1^h|zjsTVNKhi4WCq&D!hSQAF4t;(ur|0?SR9Nig} ze;*sxHFnlh>y7aqI0j!K_S3R82`YDK+rN(9Ign5k9Zn$N4d%m{9Wgb@hcmw&LXCdcL@mgMxOIS;hx=X+gY!il7@R>(aXt(Nf*Ccg;gnD*@s* zh!~x8V`;Ak##YixD?%%Q(+-tuKwAnw1IBL2&0`IDS+U*wBFFnW=9~-Y0g1}YM@l+!o2py+u)$m)@k^?8V z^+w%3RrQXrGwjHOfO(_CwEvyhS#!XY&ZR472ueMvoY8x)w>Y8~Q^~6*3-X)Zz_3uFO@iSO~?iU{;mxd*t zby<;GdKwq1E0F&<1gKL8b^-=K1Umr;b~T-pgM{|=!mx9IVZa;!S>jh3M(8*y05aW8 zkQ#1ePvNuEkLYbl&;XWT8$ZF^@CSeF=0%0{#*AeY`$vEP=oks%d@(F>e1vL}*6P#% z3d6l4u=kbnW_(!U(?Q&p<-m8A#J;u=JSvkj1dMU}u!?M&%u$el0W8T zthdl9WTm9(Lnx0-0?i$OymZLqk=(hmy>ia*LCYg?_S!9v05Q5>aqTx;`T+#$Hg5## zJs`Gp415eFz@q>sd4k*%m>1q`qnlNT-*nNrfc%xp)7#rzF^>E z1QU#S%h5*kAuKE)touc0&frh#d&0&EU@LxG?E~Fc{qj)k%j|g*Q0YlMxvd`#sXsN# zTfgK(e`)issFw}Zx3+i?11Mk=dC?SF^oZt?cd7MAr6sqicR?P>TS4p+pB1Jf6rgt7 z=RCiN4>NYydxkKTcUTmyqjqrPz%i6+%`YNbDAtinm0o$G18-tnqUOX&Kz8{mc=SdOV0|RY$2nN3#!(18&fewCCN!bUV&(p zt=&d}GhmL(i!aOa_Vh?fpMO#7wjs~37x5K^S>F4<@NJ$mp1YvL)m&{N^K0Wp{~3lm zO{ezA$bfl-WEYBA{3?DcD?D3}^kCm+AurB-QqZ-;W9~S@23%*#Fzb}FrA*MS)@#V= zCDy!pHmNl;YP6hzR`A_F10Y|)4+^f##CLl?o!YOdjWzewy>}tpu*v%yA>_2#TP@c zzsu3|PS4~Q$ENrNZm9O=7sZlaya%)r{30Rw#dMpV;MbVaLDz1CppJ~^jpRMn>hCFb z@pqIWyI{l$$u8>B*#*NA1-<(ev$&4TA`yMW%`8stpIHcc2*vhg&l}w*zZh=w3p7&X z6)hob$eO(5a`7Sg5#=q3op<%g9}WZdf|wH^zZ8GaR*lO!AO^7( zLUs9pckY>lFyWa_x_`<0QQsPCUHFLCC_%15|3fdq=hgnXynf z9cFr-NZ)CV9ha_gCB6FD9Q|vCz2%HRie{ji=*EeIWj&&pO}W_fDLb7-gQZ5(kF8#O zG8}N?kkvZk1au1f0j_|!JdHkJm6pjoJIxiz-PTiqv<`qa#!T=;JR)RV5Lzi;jve|* zki6h0*d$WF5g%|a2oLK1QdpWrPeM`OL{FqZFl>AO<~veut%V0r)JOeZ2`@N7S!As1 zp;-;E5ICP~5%q&D1`X_h?KqigKL#btspq3H#7Gl!fS5U*bBdB@EVst63vgP#tg1)% zy%j-a1GQ(4l&4GZ18GIxz&V(c9^FbqyjUs-0D{4m!x4I0tPRUf%eY;6fo!e1EyeTx zsrG>j2i*RLcKbPL?W_IHlI=Wl1B4|O{?*|p%kpwX0K2n!I0%3IbRQ5ORu5(nj$i4+ z+`u>K#^@EilN-M!pc`-Mu@A5xt430jI=gGGKvA*p*sYg!3}8jAR<6dNfE zYJL%JZE&CN12U!v9N1Lm;AoMZlHyf+t?_m^-Xu;2g;WPKFixrKJVi%lIRZaoek%DX zqyIEw#8khGthF#d@ZpIuz-O(cH9sJbEjI*ngaE(Gv4mjcBC|DlEAg4{6&yYs;zNm> zF`z&PawF9l6+C`-TT5YSf>8~(Q#myD)|MRGMYm)>qN5pd+`la7J*V+z?>X6#^_iJP z^l6-w5gdNeQ3l5aIBq5NofCKh-!MB>prN;=#?g2csgDW#m-;|$WuOuqAZ&Du&5j%m z-g%0cz=Ask2so!}qu<7jPLNQjY@_w;do+(Avw?~MN(zvZsMvZ2{!oRKDOgqVNyxv* zhLdWMlfH6Ad&s>37yXwD@2NnPVdG^x<-&igsF+@zxt`(F`ej)GzMul~17I#16+QX3 z=n0t))J`0bu`xwUd>8pi@O3D}zUQWw$jookAEHgbA{hD?6q^I#mQA1s@C%`>`VePq z2oIDi+_(4C6+-m^G>4ML_vU;=#7t#H`*wYTk-UtEvvWs<;(qv4yf}yZpe_sY$GDti zz9WC29>mVFUVjH5_I+MYOTRaxFnqC`4sck`pSEg!;!)(aKOAg(-}@TvRrb-|*MnE2 zUwGBW_QKZdec;3VQTUywHQkHf^QPgqM{9Z$zws+y5of$$#d}zhrL~ z%)g#vp(?)QM6SalKPMW6A}p8LyC>~S*$<<(?8r6vHzzt78UB1PGOR`hr@q+U61i(Z z9)A=ITESB0St0WH!TbvD;(Jr--Q;^jy|W8>k&7VK+WU!uNlc%d%0H9u!PI*--$$k1 zNATU7de7#2QR;mZ-}CTJ90*KJlZdfWVgW-CIJqyYHJ+b)F=Iu=AG#M@NsmADBp;t` zta$C*xHl`*wH*RwcCGQZid~9dLSmX)qOHom-1_8g$%^X(hn*FQb>@V8e~Z2i$#c|Y zT<#bj2rhxt_D|7@6Y$=~&J;Zuujui6WFH=5AJC4KJPi7HNk@@y)i;lce4?$IR03Vz zeA)CnLIic_K*(QU@HSzJMi|ueI4rP7(7#y-;r$RKbH(|@q55j${Cy!TPH$u3b(n;< zauX~mMF#QBSwC=ZuW?~9Rs*S$#0mo9g$YjdTsGm8L_7yXyaPlWj(;yVn*o9#8gzhu zhgg5FLtJT`b{L;%!A>O)5JqpgD4F0vsExL{$;{fWLv16(_yXYm`NNlC(S_pH_$2I0 zM*ghYi0xUtXscz)hS18g++?@pcTgGxjrQ2y#ft}W4AEl{VrG_|4@bUambQLjWpLJry2NG*%2rN%yPo7~f~uloQ*yv^v^@gM5r^D2zkwxpuk~+l zff2?&hXR^=v3YNCm+)H@c(M_dQW!otIRGsV$bD%L?C#4$<~O*)KKCX{J%P;${}$_~ zoa+f8YN>Cnw)85t%er=24cl1~UW_jDgnVoC_z%E1KIQ^yUIAkpt?B(XG$hr~AT;z8p`ia+_6S{KyNlRvIKCL|R;qSGYz(}t;!Gn_vt~)x>Bv5o?Fq^z(A9nQ?X;QQ&{G_a^XBRpE$*=RNOx4(|iw z;esLBeic8)yxJA0uLkZ{Tmgp5)8dO|zxnKdg3L19SBsbEKi!Ctr`!0cni&W8y7uHR z5z{4J#Pakp1K&IC_*LJceviO+n&0NuFEf9n{(2wp>!J9?q6eZXr7=lQ?Pp#bP~d!p z-AE04U?KcQAO9_!jFQ8#z=>2ogN4=aMsVS^#(wh%3JuDG8(C}~i=~ErpTC>c?<@HG z8vORTA^3IhzNM-tJO+*xy7`kjB+|AIDlWp@Bc=wLK=Ru@{k+dfSM+lSe)dT}YuEOs zpG)z9M?Y8Z$HnA;j+Gb(d=8W6%5dWR%z8yIZKM76?ks~2%!a;lexW&G+6Lo>3)lli zNk>W@$gj0Ki;5M!OtZVHHUpXkoz;TAP_%ur*)Oa58&Um}LLY1c=WwLX)NQQC_qvT$ zrMeH&25G~z{5Fcns?RxE`riFYuhP?Fc!-^!}~ z>D|z+rY?{}56EGHM-D+VFp1!Bd=<6+p#l2WJrI`i67VHiyE(DS_#qv7obTa}PBX^I zAr|ZOJfNp@2mbJ4GlicnwkmQe9f1n5)kwrd@Qkd;TSlU5=&*U1uOI6Bb+MMd@Ex3~ z*tG<8VxnJw5`F<*0QYQbG@e+VjN+*%loi;@@z#IlguNaGrWo4PATDU z_F6U9HKj~`cTK5~C*m8rrd07~=M;pmWMt>3ruD9`L6J zBOT8kiyjDym>dC~wS0C>nZ`%w6rAxl1!w$C!5M#3aK_)1I{b$-{-)rJzbQE5Z^{(~ zc2qhRn5VUvdJb9(B5&Lm9m+BJ^VM-^?{V*QFCx2KcOgT;Lxp%x;7 z{Rh^PJevH|C3|ZIoc9>|RIHiC(bu9krd8oIc%NOPJ_~R2vtJ9Zsc??*J`1bQ4%y~s zWxRhFtqtO5jqK!b8ESy6Yk)qaoaHWF*IOs;3$RZqRTD@k1TdX(T`qm+GO8}crI7#G zh#QA1UNJalCiVuC&qv$~56i~xU**B>k@sPi_b0B((07r#14Ezm9ML@sPwTBSO5Ne+ z!BwcUdeHUOlzs8L0x%^fsM62RJn*XqM*{{~o#8*F03&lXWML zZo+W;M$B6dP^j|f4_$nIbD(_o#5O;>T)0AobFcT=ed@D&xB1zJ`m@XN8Fw_G(;UI? zpjKTv9=cxg1gu*+?Z%w|UF3~B0=f|Nd>o9|Y5(r$SZCleTUF#-UE~%>xy+)>T3zS{ z6yle!4p6o3hFUXkW_|(<{_zK)wg2k>z$J7Qd+I7yT|BVB`7VS(<`y@rXNc-R*Em4* zbYwZRs9os~U)Qc~ zZszD~)%YTdY46gF7n*4=y0tgc?myP6rMJGesXuEAFo%1WZ$sXL;>QWaEAE)Bh=~n@guW|X4F0&y8HT?A-xHJ={Zcs7p1TLvLI*ZcP&*zXP-Sa z{a-ogKD4CwxTgc%1NvGdx8iZESd;z}Kj}^S&3k#U@b$I+tR;E$7<}8eSlk=E$=27N z>7nE}dcZb6J3x3%P+z-6efD0*wpv@DKlAmq^Y~eiFWmw3`R~!!p8SN}3vje++tn23 zF2>$|BpbWy^I-QRu10))?INi=fU7?S$p2gPwa%?M18-Q8f8a;+`0D^yOXcC_zadxi z^|f!a?&Q%wL5+PQ=GS5CAY%IZ+TrT6Yqt5>d-^k9U;Ed;q_s=7`PnRCCKXOVUyJiQ z=xa~F?(T%Ts5&h za+%q59d}KB%mQ$gs*+28w%Av`4P_E%jF)J8>4iv(+fe!1=!9yzZ(mwk5<3=~N7&r> z01+_QSbOgy!in*7O&V>A{X1^yBzSC(lnZ?AHw5P(j9r?$ls%xP{ts^0#dfm)Z!a2emt;2B*8@XQAJ5O^ z9fS|jUidlQPpt1-{WtF?*8U9Ifoj;%v}3|Si4GIhyr4MJl?Et)@-yI4M2ld5GqEWK zhk}jv*rl)tr;1?4hEZ*e{f|e9)7p8!+dn}L7_eJrai?ciP^{mch z&2OIjGZ$8kb=^q%z^7jP=bukx4St!d{#|4ZwAV*{z4*^P+4VK_RiEaU-hI1n{hxvV zlxH{DFRRJE@Wtmp`zqC<;#X`>U8G|rVZ;gF4cfPJzz1{iBX)m9? zrQ7SJZ~eY4x4oX1x7%J{{I0M2xZVDVJd>W}*SAW0b>_;f&bU*YSKkWU*WE{Zz4+b3 zi*g6wFK>H&)YpsOUEHg_hj=}pzp&5)5Plc9@7t$0&GEkPYg|TRt}IeXi8G588R9%i zkl_uQ439ypS!7ruWOzQwupu8Aw$NqWrN83NzUWWtb?I+WfJbOz)&zM6)}yImL*Vpl zzjeJ&kB_;Nh3Ee;fBo(wxhV7`uk7=tT>MJ|u%pYp>#x2&{(1@O&YIZI!e7gl_BFrf zv3hrYbNOrK&oG~(8vXhFAK|Y{{*XIg2Coa;_I$bYzYTq|FaCORulDX-wcYl)K8FlH6@Oij z?u-7UUYGv1$6tSQ3+OR^jZcq3{u)gdwn5P>faCqFoud6igW>OP+?syh)&IpVP+923 z{0Y3_W{G>!SHdlkq5k9S4;KJA*qsQqF?#SSz0Dbpn%$XFPdEMraE65wfe+7dYkWXW zVtKQK*1{=p6#^TfVLS)wldPBc~#woA5aheEB z3Ox<4WfuBvMw7fCeWVjd&3qe8Mh2V8=EpYsz26Zn?1qc@3dC( zvQXhlN5q)2I#bjFWTDOVr69&EK=Z`9B`(I`{^kJOR2Z3tmT@dv1h=F-5O z%urNp0)b*X0}`PMV9|TT6qa@YS)L+zX&!4mP6HXyGMIj7X9R%@2=nN_wbF2#|T zdCK><)s3mcvj7#Bei(;BAPGFMV+8K6a2LGy%AFK|so3i58o96|f<(AJopCA5ahv&0T zeujyRc5!q(jW}QpX8(TC%H`mth&4jIbP=ew z9V;OFCGpzzh!7VV?7E0oWT%FWng%8@#g{<2^X0>vEZ}+3T3)n|o6jJv)n+9KzB3BZ zk8RT!4px9Y>K)rcCXz$Qhh&e{9REH~SGdl^*;9C2_cne&v1x4MAESl=d!Ed2@f)or zuS8HA+ISTWbh3fnh^)yW_BhqRAoX2GZuNHF>NQda`9DYWEOu&ZtY^&1S7u#nj)y+B zT(dU&Lb%1bW9-snY$!3ue;gdkwKy9>B1qH`dsWb|H=6xx5U%uweLX5bub&N+zld6zV!2>^2=hGH#?h0lQ{aZkRPA0I~6%(aM)VG5;_t z-v>7U>^gvJyEp!|pkao!v;zyz+Yk@sk4a zhj@u13sHmvX+s9*n*Va?U&(vu;1tL0QE&jINTQaARGqfJ7x*0V6p~{63aw#vw6rmn z&`h0-t?d!9BIFilsS_mc_dYYZFO(WvqS5hMR)HoznA`l zie!Z|QmaF9m`WT2!BDuq@zh7)Z(>#0STv>z%)(k(V?9-0Jz&*x#t3f_IMZ@^FsGJ8aEv2Uuj2j`OxMF6(lufDqSso3f$CX!2?*R#R7 zW9yw?|8j@najL)gicO9t&m3G+xq9YNW^xa3f3e3WR^jM|QIlo#-LYbfe?$yNBXayU z#}CaiTDcl$St`vk>oQ@%H?`h#;ek+VXB;BT2pj$b*nDJQI=H?$Ht+i8TQhug?)80M zec;x+b{HN}TwdgXWR+Tvu80C03MX2i?Zq+*DMn3>y{^C_K-tv?N)Vs)@&l*ecW2sl z&4CfS__EFQu#b@bdItE|T_36(RTW#Gc_patiT{k(g7$~!whuWpc6VN~n_CHvvj<1I z+DVzw%GYMXe)$zaLpgOSSi*dQ>9p@9Z@(n~t?sy9^mk$=5b zKWPFca;MDLmipr`r44(y3$_g|#<=@!s4|Nq1lMarp=_C{qFPE1F4$JoLKk~{W`J5i zUov_rCOG1yt7|{u3ol(%EBW4f4abJU{KEBGD0{tzLv&@mc6@5o@v&XO)4meL@d?lT zBDiQ<#Dm_TbZU(evT65|DWZmbaFU29im#E<(Oi8oFFki5vUdmVTcOiI0i1F!(?-?c zbPvU+uuMxsnZ(kprgEizH|xEc@lOF6X1$GGa0ZM;dzz`M`(f!*mDxqvGx(a=1{|L? zxxVtuPa>%*1nYM+yiLBv>=ASD zP39rU7u6ky0nJ1ZmmgGnX(-GNDh){aqOHen`gkEX_iGO(^RQhwJY z)`pB*aAm+MJksHc_Sim=rVJ0KHfaT_0@nm4M6ETkg^|h^8dhW;gvtcD?$Q^|RT*7h zxktlOilwBLn0LJMKQwGTG3UeJHNaSRj%BIyx-1x4&&j{jnfMHLnx%4 zXJIz@le@kv)9X7d>tvt4pI+R7dU2XU5o%atcYDr{Vq)Ry&OtB|$n`iJZeoAyiU3E+ zrB_$pP&3xcyBF-;e@ocJO-o>5m)0_(-$s+C@c0w(^ctWSN$gC(mwFmBvlD?n=qjw3tI+RI#nZ9j>@X6l z3RpxSXWLzTf=pn4_dqMF8z%999o1*IztQn4crH2nYF>|+!k+7{9SZfqlW%w#=ze>L z^tZ$9uebj=&ZHRS>Qij7T%fe$yX+Nc%Wa&7HC$yI$H6?mJaz%Sr7`VSM=LvHr(vXO zE;fOJLKQ1xyK!VlsF6{usP#A0V0V0=m%$j{aLC2w93Od5XV!dl1lPCMJ(hO?#$&=1 z{bGEf%H{6(GD)?dc`hOgnh%aw3!1-O>R}+|A9Z>z%;4(NZru1=88=rbvdFG%2d5yL zpwSBV3k(6BoXm*~D;|N>*>XLRyOhK3fP_EXjuz-an8H0UyfqDzDfZPALiPQt=sV!A zGQP<5n+4yN-hn$oedZw9D5IDIP1bWReSX>k*qPzGE zIE;`94_CgT_=}owmtG^|(^>QV$2{;rm0o>9uP=D>eKUCJp#qFy9~~#asIgYtyMNnV zx&IX}QDi8J)If{+1kv^`Cs)ty@%wG8=PhY4ZT}`%sjP>C>v;s7q6gbw&mXG~ITw@6toK1{miRl>ud)=Tpb?d`hAS%BYg_!=BdHYs*PU zcHs{O;KV9*mvJO@TrqYwaZn8Ns_eg7*qR0Mz#@;2P3tw&`oQde4P0aT<3{q#1aCel z-&X&Gd~l;#*kM1*pM{+`nY3X5qdZ^$do6Z8f7QE|cQNVmgh;yt6b>fx1h+pC1A;Tb zi=&kr5d-paH=N_}s)V<2!nD25shlys@Fx}AUgn5Wd_oF_J$_7Yjdp+`{&IBWemhPeydry9vf9Wuc|+8zGQxdy%RbXv6e=j zdHcKAlb3DqJmCI(0GgH%fq^51*N)>K@Ex}Wj zgakxMRBG>q!ciQ}bh(O6${2|9&So;5XX4W9Tw#vC@jzx!fK>>t-cK zm;65Nw!5N`m-n8E6TDtDZaAOq=bmcy5kXsb7f0IPIT|Hg`j_*tGMyg2u*0i6(P3Es zOwJNkS2(i)m+%g-*YUkf@@#*Sah4YprRT4NqLe~~8iqxBUiak<&kzm%Bfa+26??C6mjrhD#(3j37Voqq4NG`?A-CaIH2nSj zj;!^jUJufJhDRT}D>|>f0R5M@d`9}m!K!2d*m3|D$YKG9AhayV0>l;8=K=<@wHuVj z3Q`j%tGP=Zd|c-1uotbdn|}!ONsWO`YomP)e^Nf2pGXKL+Uk_ujWY{j)~W|KIwc|A%hwoBo%< z9Tz*$IB0}XB=8Lh(7wwTz!L;~0S2JFbrl=vxSy~TnM~3j|94mx05Na?vkfkd{CBKb z*=5{#Fa4rZLyxsLc4RY#W3gs#DPL8-yxtl$J!)M(xZa9R2QasAOF{95Lr@DUnKjW& z%@*Ep8S2QXAGb`X`hO(#^J|}9@PH}d7pM2;7aQ#!ahO|U-3sgC>u!-%j`xeNp65O1`vql0B~pmP99XnplD%F9fbM?a+V`Rzo8-uz+# z--DMnE$ziGp8PKOMa$XDUt({@)U%#Cl(!Fh8h_r#ALhJ@oXoqx5guHonZ{XC>l*vV zeGRk@f74AKu8bdbc$R>EJSOGdZzue6f91;$Sq*;4vu6GER&Ra@ z{<=x=*BvcC;3bbAr)feCFk!VmMvtp`MdWj43KtMs*!X|}b{ZCNo6W-2F<4@I8g_#e zF(^gOI(=Y4pnpvtV^j2;(s8r)6DJ8Qpw~9QGYRL|Z7{9#;HSR__Aum@E~pz-pd9fJ z-bnxa4L<|=QsCpzz-oF89|!+@5YtEY-boM$h<#k<5o6(?=HrSp3y2)}mwUfN*5n`` zpwD`hGhc87C|^}?o$Q$eIo0*j1md{D9N@oG&f!zyirEsTb3dj%%WdA#c?+ zx|P2nShZ<$d+>7iH@6oLc7z2JnIG&r;5xSrZdc08s6Tzw2W2Zee(YAivNuCQC{LRO&2Cu&oEvy;-+2r zP+F`Wyf2FvfCT^S=u{V zwO5v>JxpPCdn<3q8s9Ik*^%*S{|&IKNyTR0@k9-%```9=ueyaj0>A37`IQ$>bUCXR z9+vDKPZaq!xMu0ezJG1d-`$;`9RK8A^m1`RfD;I|dgz`Yd|VRjqrP7BGOAa77v`<6 zFM3&2_37wkQPuH%(+exp0}y&)VV(BpS5wT+KE-T5e&yPD&a{^R2@0{G-l6!FS~*)L z-+W8G?tE|0zdACV^M8^*|3Uw1cfR!K*5i~y@PjP+#DMW`Mlbq2xhWSV?)+sCB}AX! z4nKHSwU%e^@qK?3y?WLMz zMI<@C2ENZ`>Si86!W*M_Ae!B1QO`vyxHAT(8?0fYG%kokBJFqab!tH4# zQR`yfUImkkT1mi~vjH_RQD$$%5g{b%>BwFwEoU3jpVLO^|+~}Fr@VG3? zJQ6Nnk84@*Dm;4Tez?^Z^~2$?y25VwZRYOsO>F6Qw$$){p+C|!KeJM9aj_g;#JWn( zRo?;naL@5HD&b7!vn;!uHmPd7T7n#B$%F9f*ojR3OykN^K7ubK?o8dm7-pUXwAZqP(-exY^%hlh%$o9+fw4cL|r$xBR07k4v&llq)&4QX_d6+RX zmI6eC*D3%P;n@SMScd|HK}EHUIMqyKw{MHXo&Z~7Ma1f=2EL7p;QE%>2>dN-v-|5y z#f|C>IJH|mxUWDhR42HUthoElYKsXXURwX z#{UD2S}(=mkpfM3!sO9L(=gOc{~W~57FS!Z!9I^8f6%cT@tz$^983Y@6+Z^AjfE8s zuknOQ2l4a~2#W}Wh0!z@d7uHgt$mr1*aby^?-*}vG$CmuPDTM-U)s+|Ou?^E)4LaQ zO48_OwN-+ZJ#Y6^66&kCa@8CnGuDcCriD42O+hs+ix_47?)7bw?i)fq1LtW+l7k>! zt4y3&HLl^5P~+wUjreqQE!-Rz00Yw94t#N3dzF~!g-F&AN2;p9vMPFNYvsmbB1cs< z>;M(c^YTfRV3R2&Lv075uTnk=3Wif0stH+X|D#MJ{8_jS(7S&6G7|YvwUn2Sjl=^` zhsxK={U!*m>=E(m+=G{%J&ho=(Qeb=A_pPmJrUl+frGTLU!c3rszcTishibS8HqDd zP@?F-jhqWuop0ayRQ-$K+iL5TKhg#n;=Uhx>l}-hfj7u^4#q2D{#*k;92tj-$$>vs_lxMPezD~+B*}Om}<(X`5(@A+Io6|Ze&!jnx)sh5p@kAYe zuTa0I^Y?1?dj@~6Q@>~PH)jx?Y?Mc1GaeMJ_#E<*`5Tx)@oVDZrOlGiGFfy;3R~J) zMT(LoRk<)^0*Z57b9P#_TuF_b68ru!Y!DB6+0DWZl%9>w!Hmu-|{w=@L1eP1c6#pf}2lFTvV6_ zVge_oc1Ogsa86y+x@5koB#$-qVdS*gyI%|ZwL0O{`N-a=%WPV=!G7~8n5&cUk4R2! zGsojrpKG8$QIR0qwb8CafNvKml!uhcmgrf{XZ7)_5t4nbM5!rhtQMt}}r>D8s+=@evmU%nhQ$9`pn zA2w5{l_rO9tG)3W5Orcx$ZC%zl}yZ(wit_7K;y4&MyD-k{l$<7Q`M=lzqCd*6??XZt&V2nuT z2^SUpTGEFwU5SX8DH~Mv?_T+)0F8jU4^{X>T*8z{It&^+qFv!`%q^UIHyKUK!4JL9 zD98NIK4d=@;>$Vn37*&(u*~vw)0~GPw9AlJU9rK4!xkyuBQLXOsG=iQ8);f!I5}DL zU`^$FA*-l#CbmXv(kG=#7hwt`7ZsJ7$)XN`W=xq8KOD6r!`+~rhNXVH_W}h}3z@o{Ch#={N6taiK2%x1vu9+dN zPXeU~ogq{`fJR3AWe%9*GvXY3`P%B_We-z%*^104-c+nM5*Oncsr;vrxC6`^xCOyj z=FF4dh1JdHwy6akhIDS5kvI;3HM_!TjG;iJg7Y_YQ@1~LzSzblOd36NHbw}fDo;BU z+MJaLrsIaASgq>Nq4*h+TecmTw9s%NWU(_5KUKZho#abWk?H}-#Yh~^8gvIhB}V*j z*pgGLQ|CE3aHIykKwT7$Mq)PlEAkNEkmnaT`?-y=K*M2fUCt#a$@_b-{p5c98tRiP zF};r)*n&nFBk?r)A~&1#8o$wW7uo{M#+9c5<2bxNAx$rPcrp;<03b}OeKW4`spx=R zNxCC5N9|27IdD-PHMdZ)#$_QS%+cK4QQSFEzR^W@7D#tHqvWL?c*A;kTpHS6L9RGl zI9mun0e0q>=!p+3EJBP#O)q$@L3!biE_)O^+4b*E1KLmur19L2JU?Z&C(j2VqK5K3 zxY(o+AII7t4qE^=BuRfv-lmcjI@zj{RXWKDMPXAXwGgk>NiD>spQtLW3fJk}Zk3#_ zlS-5~Q#oO~N}4y%*2#6MFr^}MZIzTNkQ5P~lm!QKMTjSxr3xeq_))T1sz8zg5lL1N z&}sNxvC5I!kQ}X&QX7&bDk-%gDey`*OKnIBypqjQ1(E`5Sxk7?YPqMouJaO0u4avC>ADmGx|!U<4j-aIFIPo zjY8W~I;NpameQf=bDsJd`o`_O^^IHe>l>kpr42vMBm(-zRUi?iZ}7^79o9FFK;bNX zBM&`6)!;3XtI>a&=B#<8^YN3~M>KVhLOaZEE8dwfrV$j>8i~6Rxb4&ROD&g0Awfq<@$reuPZ2PhXCUCs&GW(&+V9Um`I;HB4qAi(xbd7Taye0bb zA3vSJatm|JFgwPp8k=zf5>@>?V`;-xoR;wV5pO8MI z$a!eEVucZZ2}L56TaBh?@uM25D!USf4`fx-aA-%jYv`z+Q zEnz_BT~>vEM*Ls++qmTq)L4IMazc$;DvTRPVd&WCJNHCfRIzZmc~Q|1%)%Ae z3j}g=EN~f2lmk~d$iz7OaQ4R^!B+)8-19j?fK*uw^&&0s=X$~rHZJ1 zIg~Nfhh3fU4HTr*P~S>+fF6vdNjNM;J(G0t@5Ql6JL=ye=w1AP!#^ezF_>ZWV z=99RFjhmjwFpdJ}CWyM=`b5S%AUNK0hH<T($hh9V<%nVbSg6k7pRVyOm^iKUt{53+9@C)fj)3n#EA(yIp;z^lZLWqe3f zV}?kSE}PX52`83&sP}WIgm}$*;5H6po70RpLQe$MudZNiQ_J84ys2nXi4mW=GaF>q zS9);Q3V1s%Pn5y=oo8n$uyN6kG~FuC{6p@0aFd5-zS9e+greV&3#EO64Pi9ttOgZq zdo`4rjKj$l#tD5AdcjExV4J?Ar@W)UT-I8znGXVKj}?C)cSJp2Y;%eY-U$IQSwgwrkh;swO} zf4zq(+5$G9?cFALh6~LWjSm`{!emgnhGwhIE#PpHEkc;c)zDm^b2T){Q3yT-&BnAO z;~JXV1Oe?}|1JndJDY`F!@jMEaNwmu`o#6h?VA<(uV8Che+a@&v!bf)^~9e#NGs{L z05LgW)L960aA(G4$!dn&X~T4|`bK3sNreJ}yKXv<|hvzU9j{(7>AtG&!IBbukkZ(~Y#>zwEAorxrOy(!DDA zD2r+2hX)ms9cd4|RLTWGf%XPF+zMCv@D9PBw6P=Yp;-R*N_Bey__u@v{*8D9u+2$r zQ@)E1Dx8!I<#lvy8-!Li{*gZ`Pw@E zRz0u97S%j$!K%d$l`GS0WvQVBdZQkW7U<1LItK!1SbsHRCkaVyPhF@|M&j;`$i;Fj zjXeHqBd$ApZ-6z$Sd0+joAkO#F)4rDq~3Ggq;j0^Vmh++O9k+*(9TbPS*k8ZG#_o} zqj!27(ZcV=>^;eyA$hE8#CHt;^-~=>)KluAO(96#)cg$Be54Thvg$M z(0g8SI_8P2PnH(ImZE*yI~xO$gV)7h;EZKt1aZ4-|2?Lofzqtx^`B z)1+RMtR<+Nj3nJYoSNMS`ZoBRq;2*y=OfJ>;X?QYU4yciyr^~Af@tA!Y>l%qh!W#|J2)GDh^e2;#@5NK3e%nY%grge!$^k%dug#b;O;_U=S`c8{PyA zYOMFFlb75VO*+W4jDLR*9s0aci!V0A)Y zJ04rBk>t=$`-L+;={epidOL#M*=XgP4R53FHnkI1g1RxQ1=!?`ikBx0iy><%cY2Kk zZq9RkOV&I4OD{YapGwGO?F*^`${T6s1XzoJ9M12#f9Bfd8ouLxArx>Y^3<#};+Nu2 zuS@ys(v5?$z~lf)mOk+T=FeSVW; zf2YJ#E@$_MTLQOaC^#c@IZHkvE)kS~Cf;$4F%2GzP#@|f2@_k04lSc2$#QdmNFi>e z$Hg3Hk33Ivq!$kE)p2lTJQ7g)PV28bjCVo(_pT?){7maNqww}f|dDcoo>)%MK*P$UKX0$a)aOQy@FSAIqCfvC;HA00$!j z90&?#P4PYPBWx@@xD+;B<-r!U>@bbryC4Uq?fr~6@3ez?dQ@p7Ii+k-HukbIQKLY#6uT9F+Eiqg7>Qq_hX(!4q%WOF(Y5(9`a4(q{YVIZ((cPf)4r$` z^a9!{PfPDclg2ricgWDWz5P6DVmGRcg)geE{8Omg^^bcN`L2JQ?*{iAd$VvHcV7~l z1jCF3c4~W^2k@~Xn7_qF%NSLq$01X{Z?MsWi1jZcaTH#buSE@NW7v$nDPZf*de(M{(osMqJ$*yI3_fR*Vn&OHp- za7&Zd*w`Ul5@U1wh7)Rfob#om3!4Oh$m;(N!tvbrm45 zK>8I)?v5jZpdjtqemP)Nxzb4d2Gd3h|7v^z$F<3>ryh|f(Ser{a4cX7I2N2+jd-WR zxl2n6fpqi4tFMMg2OaA~bTQQUQ5X)tjUSz4B&Gq0`E@`4>t^-!#iiVah##P~Yu1I? zfy2-d=t)oEzZIkk5_RMWcS@pPh0Ag^l-CFFrn>p2();CEO%r-SWXQW*NltTp4`&;R zub{So7yeh_pT-@A+wfJ``XD;Q=5U}sU1${)E#Wb9HCoti=KY2g}p z--!3oA%8VtDM;g|Y2Byy6CM_Z6Hy4+%2LQ`lOl9DLlrYnH3w7X@)IV;F`<|t?JxVh zNz9w4Et+bh38&8BoPKy2#0LRjvSmeXL`vUPF`MN~q8`4+CT}!(aVh+5mKHjdvOAHD z$oqhs3!iEH1jWH>{tqt{!NFDWXe5FG3P$32)S)!sP0l(PWQ1Kj?6QkPPzO9ptBu9W z;9XN~wO30F?|zF7VA(eaV3(hz3ovZ6rxu1BqVG!<$;exVObktE59 zR9!PyD~Pcu^$kxKbmrx}>jM{x!WLToWs2>K6zCS&fIo%_|T7uGnZAi`p=s zqy=XzSv3wp4_hnBaTN9{=UJc|p7`H#XNjOFuBFvcK#<2q;%(T&Tsq?lkDve?oq19i z(Pt}N|0;51jn4zo5%K`#PJz`H(w@MX+m23n#Oy3W3ds5xDMgcH9vU^`3sFZ_xnipW zY4k^vaxomR;zSGZi?gLcEkT{Dkg9G*P(3=1^0?CgZr?xJR+M!tK$F zyYVQ9c$!ePwV@gu|D2k!c64mUOet@$$dEL(-c}Tirm$_w-pr2TO(WhQf}gxW#8Md= zi4J*_^hBW-wV<=}iK^gnE#g-s7JKbUEDn*068o}06UUUs&Nx2`N(SFCE=e2>xx@n- z#vvM50mvh=}_cB0j5}Bz}|+2Mma|lT#fL7*^au#Sr;mXSqCH4 zaQHWBF96|?!UV~_;#|7P6bJaC%qsZ&H-h{b{D&|mD-+Bx7C#d<7O#(5YHcE+5`?;_ z7?_3IFsLYIu@O%b>K)YB^M*a}RYb2480{4I=bFm%ybhS%Bgi7I}M(^-Ha3Z1~~X)uS& zvmBM1QBAT8@t~Rt7*kh`b>V1~Ar%oMAd+gkw02+t&UeB;rNNoVPz13a1ks51Mq(ZQ zRyRLUdOe<)|G9V+fRL&qexwXwC5yMQADe>q_){xhlMHu6BxwvvCg4@8lu=-sM-qrE zh~g`kE{f4U6N3C4ox=AyYZP+KjwV4JZkVaqN9bck5S~j+A3{r3tiEY@mZSfn*@33{ z;^~Or93RKY0b-m@coaA~e#o~TF}?|iUY7Zx=nP?~DF{gYu7}_B!JF$`4c;dX>eZ#D zeck!0_a;#La6xlm^`tV5)!jz?W=ye<&?|t;*Wit;>wrUCO)4Kg9%!R|_!8pbBp8yp zp}vK75YGt07`;yCUE+=V?~9C&E6Ecd_eHjcC1Aaz!d2VgFmU1E zc^TV|-=3;(pm1qdZHB@EBk_?q5;S7HNGhfEW;0OCOeLxNFfOvn-a85zrkNAv3L;;* zLbBeG#z|fE#uW&uB6(riM`tS8o5aC-#`x2eI1#bqQdF7!xI}T!Q-&Ha$woG|sGTZU zE&o)J@TS28jA%|&jsvDb){FJVvW_C85ZP02EKL^~A#-C3XfyMgr-fx+S9ZM2y)He3{;m1A`S?#aAE1!! z&Bs9!_5J01T>mb04-+zqq5yj+nm%yEfu@g#)o!DT5SO@NdvS#G5ih-upK4W1>0esT zkW_%rV8C&;hX#}c3WH{V>`1UqTf6#v;!gnow^iMD-;A7&idg;3sS0W5Et|Lc!5n`6-?g9EnP05N&pT- zlH&;Go!^s*T%XO zX?3`yrIyPxaovTGqb9ApGQWh0t(v1&8xJ#&bm_GXwSZoY1bhg4oZ0w88eHi4XX)ib z=J)!0TH`azTzdQ>`S-Xy{QJKwejG=4R3W@{w1ke+nBR!0g!+afZXptgp&@P(YJ0kl z7w-j{`L_gKE|^TH;rdUcyKk`Rzpt$zp!oB#W3;M zIMu5J)g!+=7wkADxI$;{giJ~iC{)*>Jw0mK!!Z&Ad|#E)jVR#5buO-0r+>Q(=lH|Sb?2?&46~`HUjxp+ zR*T4R>crctEhq(Q1qq_&UT{)YB2a@&2BTNFVl;Ff4mHi8w_0bVY7aGZqb2M~k^(`$ z*f%?^^iZ|NFc#t`w$2;^Nsmv{EAY-?mp$ViUla?tR2Lb5cMj4nC97x7`ku>9S*PNe z#nWGk@W2|ZUT#B9P3k@|_y|)6LfQLIW-JyCsqM1Y;wKEKjIH(srq>1q*u5HDxw`%VI6r(kP!vq_rzqm`l+o$MeLstka^65{QyVdD$u#Q)pn6YO2eZ z(yw0pXI(i*Yr&mg;V`x*rf`Vsj*6)ZAUNoqMDi6>MSrWUs?o7p3MC_cE#HGMht-SK zSz@w>_hZlV%O#>m78bW?;j}>3(Q9K%SW&}bIe5UO@R=w0vZ<=Vj@^;@h0ou5%cn$Nft8n9QBNL7dMjUrd_ned(Q_866Jv@AXqe>`QbZ4aU z)sPh~m|1yJ>flA}XXK(VP|3wMIKD@H4PKs`a=1UHxqsLF62ZsT6;qt}vNj zfw<0yyui7?=fYiN>J!l0qDlNrPJJS?3{DYJPCM@y@r%%khOx4C8Hu0Dh;@4|(Z=>e zd)=_K&qgj`Av3!lzRvtX7HhT6V1DPiX<$GFPE=~5=IHF{{md-zJE0*_h*1b6R2Lc! zMC1zWG_}}HqEXPmJx4NK0|_zdhQ!Z5C3V)Uz{DO=F9^93t$NT-+=-Nrp8u3Qr5(px zkst*Th(_XiT@f*EclV2#vs`3`7@xD6V}^5uF?TEqJ15B(t}{<#u5dK|ZTJj$>x{uG={4x}AJ~ux)OMw%z?rdJFhQ+>vqa+0fVIQ;P(9yiG^)KD-;?hJ z&Q#=iimJ7w=M-g&R7+{62pPW2&yn}D0a(iWb$I5N_r%a%^8UyPp1jZCC*^(KsE@ zB**QG`j$qW9L#63MVi;*9Z6{($JWuVCxHm?+&paz6|A~Y(K{vatM zPkNrXGV)|g0Sh5lMxJbu{vatMPqq~6Tp4+?MfFEKaD8QCCp)JJ}ixzm?_9ux4^%bq@ho!K6T=fZp%eI$q8IIlV$ zyBk00_=#z{P2Q?_Y=vC_Gu~0(ZsXHZ3rf*eRPcZsjJ-f+1!|=f(`vIHjGg)hmY!}f zc2xxvYp?>fUp&+c#!l;bI7J#dmAg+y%Oesk%tTI| zTASAU0oLcrC~gw!r~LxDLnB^M@Tm1GWMc+jLoYPqL~n`09)ur^!e&Ppg?$ufHF>*+ ziC$bIU(qQPLg-Wyg-!5gp+n0_scXIlh!2!K_l?J=4xRup0pIbuiSR5dL~(9BrO}SD z=rVQo2xY-YW06{hDe*H7I^glL#ef?8Y?TQ4vbO|&`9hm zOxl$moHI`cVmx>~=D7`Zm!}Dj#0GG8DDP|y;w14Qk`lj7t}nX=BJbVWt_;>jr*U?W z=uy6&^$M&2|3o9cCQ{+OgF|$&!8LG_vFNl3{S=5IIJ}?WVc7YfQHuZIaEHGW5p{ku zo=tXWA|lTJgr6|2@4O2m&eMoEpDPjPE&&-$8~NoTk-M?k0H50nBf-dIZ~cqiSNm5> ziwYcEgpPP7G|Nu&pY+mso$8S1PZIR-ceowncE1Q6*F!+}oihMwB`+1aus){(<+&)I zVL$S9WK*lwh`|vLG2%ZO=FhLPpGBDc-9H*J?u2MJHasSXB`UL=Zw=A#(8fyzq z8|(oI+SZJsL2TgbcM7(E9qzT*Wvx4I|i@Zh~3Yl{UYa2A`q(J zsuIMH7j_o>=)?o~;jD#d>x~|{6FN}?2#?PPK-vMPkrih5Z=&ko!McAF^7PNcTukf& z>5+@UIhZSqRHLsFCsifRQE=l^68La+dhaT)N^t%T^_H-PFgRpXgCJ( zPfNS1?RE+1RW_W16{~z-;zKhN@(t|44_LJ)=896pp0CgDXytIJJ}_8bjXj%@xLm}p z$1%7VNn$ZP6`_TZ=}`50kjZ(%FBmT0ilhR@{&2y=o*bBnM7as$sD+tgS!_R5V1QrX zAQ=caixe;tXGtwNj33@N(|u4;zHXQ6!hYY2kL)Pp)qn-}wV!@VO&)^gJ?f>!u4l3L!k@-31ZRPKD8+^mu= zDQJ1Gc(|whq*2KEgdUYa{Xzt~-<}9`zdaG?etT7v??~$QOr6y2)#~J6KK;`~M0H5E z)ahJN9sJWoN>t$)I#;^mpC%&RQKyMG{|6jX^6s-wMQ?q!%sEJ+UUP6)kTodL_5t)h zZwWEfISj0*z9pKxhFdjT?7PSN{HO#C2Kdnr03a4AXv;oYN5}Pm-ag_rH zaQ-Smb^@m_82d}bu%+T$U#NNE1uzF=dZxD3TMZBJ zG(Ekw^oRYqwS)kzFt!B)0mWaLDFMX`K%|)Y6N{)H8esX2eK}Nir z!^U1uI63Ba2};I-uIN<;B|n9rWF!72^U*7I=_|es;zV{ESaV?GA; z0OFooonK%*2V0V=N`1qFhC#-goFi2pnh*mW#%LtYK!wg8_@fO_4brCG3ump)Z}0{m z^SBg$yC>Hlo!WznM}9a@JTh1rryN>_QZKM{SKdrYfq<|H;R4y@=$d3@Ry=YmYPH`O zOY1T&*;U&Nk;?bncw~#yl^Srt&a7M8ZeXTa!PiKO*g;yUPeD+nL(`lX5 zrNTS}eJ~8FiNCYcscVa>;pB6ke1W?~-7ku~FO0>=hDSii!UaijnI8EP!E+Gl0>|MQc3BB$Y>5jWacoy}CP)Ss5NVczd>!V1 zpU+^mvl%O!I0eJ6N2o?8E~KnRkvCAJ9;ovcrwe_gf?OZA;L)q&M&T_-c|spaPHBC} z`Z$W7wMcmtQ>xcqDjJj_qG^6$-L5VDw`&~H#?9%1tlG|}P?W|z>upkr>lEZgiNY_{ z>N4UJ*lm$ZKjQoWefFT+f%2?lrV9>4-_)dL!CwzYUt~P{2hiGxw+ZnnJWmd$lqESj zcggF4@C6+BSP4fZC)&r;&DEvn!9Ne&AI=6qiw|O7_38s|^eS&8HsNatnz#u+h~26e zv3mXv8S|C_Eo1ut@T%KCK&k4AcW|C983ZNlU-frJJdIyy1ncastWFv6a^WVfdmO(| zk`iycpuM;8machdwxJ2A&kZZq{{gr+`hGlkn6kNk4aOR@eE)Q`4e zM4rdt_Et_yab^Gig>ihjHY|K@yl~Ixn$}7Wb@wqiHjG=jsC%Cgo(dhZ&A6<`Wl414B@&WBs#S1Sgsi^g$`yVkEJk6) z({{B3Br>^MSi(I-R!!Cp> zP%V8~y%)6(5Bil0s2S1gY?YKIO$SHO_(l2ciTD(APaLDeL&9K)qR2v|*y zMBp9nT!~1a>cg^WQjJY^sym4A#!770$4TLs-dYj|50LJ`56Y!F0yZw&F1#@bA#$g2 zhYlArx=Xrsqu~{k9Ie9i{4lXoYr}Ebf+b#3h}Q91rP=B}5YqcH{=qFFB1RuVA^do_ zl>Wvf`h|FMlbv7JvpH!U($g_hTCO8kq^J-8`bhl-x46R%1wld#-X_*YQMwUNiS*-u z%G}`?hkL5K0%7_kp;pt*i2CogL^AM!zgiWb7-tMe;pk|ON3s)l+47^HWE+yEw1m^}g^dJEJIxovu8c~j$ z^rz#kr!V;7sLsiF4}K{7&%5zA|K<3butV&1F?x+#vD_Fo*N`ZIY|0=(UlZB~iTh=E zN_7@`DB@LBrO{U|g48(7!AbZW?akBqVTm38v%+3t zKKXVdo}Vpj&WQgE-wO6#$!jCr(7ATJ)#%G{x?)L zFLNg0kHp`>V-d?;GW5(V3ZF8!C~o@2-WOStC*J3aj4vAfA8ro>-YXt8hdu`bb+ze` z$_RxHnN2IOKs$R8iCkwdVJD#G8B$E|yZO#u1tYPZOAU+6qGfTZ{rdySxnw~uA0!)B zpf0QwN1LfJ8_eWE5@U1lNW5#BQ-v?X7Yoth05NQq;azQkaZ7dSwWQcIzHFRRg8N#P zClQhiy=H~zu=Wv?>e2f&Ud9Zu>xx!x587>j(EU1OC_Nq3*hugns@cG&j>4{Gb9_NK zti#h@zAL{DUlL7z?Y*stg0C*+B~$1Mm@l3Mozl?+ zh zR@7G&$NK1IR@?-57UEB|FmPX|*Br)Oi#DUF*~La20c~LKj4#v*f;hRi;w{Uo*3rG` z=$_v??$9XE!+Ao@zLB^bJc#m%rbgP}u(2v%Yt6=f7E3V%RP5}R>Bpa~93KRh&dy#-;%7js_gouB*`qUE!1HoDzKfP zh$8WG{4^F`Q+loSant*Sa*CV3-c#hcscMgY4X1G8>Iwy2tXHaxTf4A!hH^2utKl1R zlI3|YiQ(>8fr^o+C)-~bFZ~0$H?b%-YGQx&t`RL281b`_4SBCnh06S#ve1)&pR)6x z3L6#lAAp-^hRMDV;Le(jtMLM+4!QqEBgEb;Q~BCeLl|I@Sit$Kd=2(+j#&PNLRrZLH15}4&2y0Nhtg)hu$EKn_FsG8Q;mgpY7&@kfAFSJo{YA9fjW-3c zqm9MjWEk-Y1-Rz-B_h!b0}({l8v6`##N^b`*zhQhSgY+p&kn#@Q4IkqDU$DELnbs# zGZH+)%ml}&Q2A4D4PZAVl?10*#^wH3m|NW z0zk#ktJ!PoWt^u))G78Bfv_PvqPJK z56sl}u~GApX@s@>g`MKY_4u~B`G`GT1m+R4IE=?e`Oa!A7Xn?49pQKFR}^Y`!gB%p z6!+Z&^Bs^EuOiEZui}aE=W=jQoT4A&6j?8eosLH*PlA@qBj~Qcd@50^09sYC*+{$s zYIX*qX0`w5f$uQ%QSeK3z{4->3z{hHT!oftZ*sxiuF89}<#b@G0{J}jxsUp8K*=^h zlI+*H2?>AvRTXo_8n<-pbWZ6B@DD-}-2RG5yE!r#QyMFsP35K#U;PBVQT*2J&l##c z!EfDp56yRnJtQzSxG$V6%^k|z!IHwlQ8+>?T6MO98L0ZfoTxf+*@gb%bhfl}w>JqF=&&FdqC&;2h&NJc)SSsFIbW@l-fB;WRAR zh;b{J1q{SNo5qbFB2lHWj%BIbDYhs`=iK18pEXKu0te~;HCCFOINo1t@q%9{3jxSMX1xu(M8(p^@KtliKt&Qi6X|$7yts zVIPE!27#3Lh!ll!I^5|7JhIT>B#{YOuh^K6uYvxzvuv>cW$womjYgtWk1rb-yUQSH zv_K)N-AGK#0RyahUk{cs67bB)Y6!cu{LHi|eco6IPUM`0YOD_DR6Jl^jY_31-)Ya4 zS~%{oo-;({g3S%-&&1S<3aE@VI-?aC;_9M8i0X{^AH?;`t+bLHqPK?NYMW8H?!Ya4 zonrF=sJZ+v(Sa#;XbW-a4V(zNb7C2W(D;Nb{jiQ&q*AmW;!5QHsNA^+uK>bp3!Gty z1@OjlG(d;3m>di1W`-UMS3_KLVl3a69JhOP6v;Cd5ol_b=D>|f^H0X9xqP{a{68qa z#8&f70!kFq8_p4!dCCTs1OQu*;VnW1IKY2z9DprNR0a6M%gA%PrTLuZdPd?UjNV<} z22k-`ymrwrY`v>YPF{EC(f}Etr!bQN=7+NjoulxMj!@3Ys46JGW}c@8N-A(JL8e!2 z6AvBnGu3cb>q%+lAjqIg*%-Ol32rBRS+=+PihQ8q=RwMq0NglMH)GJGGgoTWyvRrt z2zd2^CBWE3i#iurq7>E%f{fl*GTp(_L1L}}`%qsUL~i58=L&yZlfxgC*U@@RTmYz> zh+2W#LyZ&n2IK3-#TznwFVec!St>1%cRRNVK;`Gv5I$5Q3YI|IHzR~;6hy2 z(Tl}Nr#(LReG~yBI2(O?bOxrtZulBq2bOhJ4Mqw`HX!~!UUY?vCD|1oEl=yC&TvUV zXLu~iI>5c+&hWl0HBRM*`MXSiQK6qz`f2KCEuUTCX?%2s&%uA^;=l9o-}(5j4*y+% z|1QLT7vaAv3hY;|pqHjvx0=>F5uB5$u2Hs&f5n`GoMG#;K+J8(Al@pWorIdEfqgbc z@BC1NxYXQ&t`H{@@8TW6QVld}<8jeW>3gWkT4LXD2(1kmANRNh+l!7Mw3gUc;B{sr z4iK;tWqh;7{@O|K_QQb!Vz2<>tYg&xlrma8e-Nvo5eix9tgMHbg$mw1Q7Xu+)-2Fj z05!)o-uB)P_+0IcEnA_Jq=q?iHOf*ugiVP54twLRFg2MewdDTv_Qo^iYq2+8>--nn z8>hYu6!_BK7?4;0zP<6>EuVZo_Qp};`Xt>g2QcePd*he(#vQRYerGbc>JHf(?}GUd z>h5&~J8Ey7;q0Kj@oxp-rvZE8t!lngsjs3@?wqSqLiGL$-be*kn_fJi7y4?6fKM#Va(oEgF0$wOb?HB^!|q`=)l1hH*G9yY(8PF#;IQ^a5&QJUj;(q)^7Ks&TM~ z(|@`oHrsyFfn5P}T}RKL>E>eAiG7ov=-Bsoch784o9u4!=A`K;H{Bf4iD09K6V(oN zQwJb`Q^{uyHY?Y}2HK@?3vV&Tx%V{DeV=2`a-`$_kNxqVu-SM6Hk;yX5r}bQU;jQ5jt_f^1(-O*n7{+{_R>cAIel_Q0TPIE_#{goH6 zSu#_gsy_33N3EMq+q%cv#@f7o~B%(|78R0sAU~8wzoA=$ATMB&~t@e zEMJG~&D6P9gCU$o)FWpw@njEAE#QHopq3mz=ovacuOGCW=Sd`FGsGn}+p5!zd?rc$ zNknQiPAr4Z^K|h5C@KRP4nVZBw+Eq)JAmV+i9L4Z{TbM+J_f#~h#^rvb_i8~i%5KL zIIR-Bq;=X2{)j?68kCG5`61+otPessVjR_;2AAashD>+RL=}F}W!a?5@@a)~;3GR) z$NF0FIX#u(@55R1vaeX=~ zKhcM?GR_odr~g0pz63t1>TG|4pn%}TYL&XwXww=hwuw?rL?Mv`Co+K`YXvkd5OGIH z6csf%Gr$-Jsp8VA6|HOCtrA3pum;2h!39Js?)MUdxUq=H|9ReX&b@aglMoR6{C^+( zT65JK|Zqb+ZLpX+aQ`JulvoGM>||RNF$q7u{*}&Qnu$_TM%0x z-lzpRrJ4)N5bEeOkZc#{AHA_K0;X15FnGm>Y(@VIMk~VQyCbu#2+x5G;N^o%55!{% z>|xbXZwUX@*OJ}zbKR2f@;O)xqgC|JBzkSBORpV|$XO}e-A`~w0?c%&N3VV6)5hK1 z+yu~oUONGd(iHUCex%o8Yan*kX?pEu`o(?j?uYM9U*IJvgdvK$WmwXBBubCDAB*aZ3RgUxAj-30K9X(OVYo+dB32!+L$;yg z42PQ%zI+d~0*~raE8SE@SeeDH#a(jD(s>T=317y?{YVh-CwRfFo;uN?;sh_{jvyhK zO<$42@q?9NU(`q2KWNg|)>0bv*Ps(6R;%KVUXu5T6@|=cxw#d^$OoU)7`)X$0*JVP ztP*6ch^QqxG*Ww}llU9~D7sa0>i873<4#3y;aOZe5($wmhSs6}=XM zD5xqPjEGm(ls_N}81^-iwc9T(8x80dN95Zzq2l-XDxR-u&dvVP{Dr7`Qh%I?*WKcN zA~vUinp%<0Fzc>bSkbv)e{##dk@oerd`R+=)H^B(LC4s2_)n2vR^u(h2WxfZ5{yR2 zVS_zqEjHf4dG*29zYE1LNh6EAgK^Ufqu0+MFTxJ>Nr$6Nz#xZeD$s-YOWd^2bQTw6 zr3IXKSYnqC&KOpPNY~0=V+nWV>M%nkMGwT6&Op>Km6CXb-N@h2-Tk&8dWH0Vlg(Uz zSGgO-^}3402=u4Uc0%tw#3vtQvZB`$X>m8`K$$r&_;cP;0>V{mMT0Lykdu z{ewrKyYG|LWt7}mMoT$kKso}lMEW9WC}##vj6jVrNc02ou@;xyAG#cWHKb7dYc}Q* zHm0zR<|{h3VPdmwrS%@i8+nsYmDa1lbvB|FJSN|%#ye8#X+*%IT3i)94}~^8*6ms7 zB+*Zx+oEPd|?!=#8BcKTFB z%Eg)@KQbC%WTaC6NqorC#Fgyd@ z3}E>$a0HXrvAz2)Wz6#vUU&TFhKC{H|qDE{`TAI_wAerewEjK>hUWg3rsZ7rhmB9oV?WkoU{ zx(&Z2ANop~&iwHBVVFNhd-FBk9ge$VPxT{zjjiah=CxBrv82Zxj0E#AC5-lEySKs{ z8jr}+jbeY`0+iE+=1DKagA(T?Dv0bUaW;77$})zj#3?tILD_&JP7CL6(4*%oQDOUt zG=L4iqrVp-O~5Q+tVnkElUp2&ea8U|%6#!L_zz-G;t(*8VT_2zyP05oRlvToFNYE} zUr8hwKY1me9Ouji!C08qMHH-}_m;9NuSFHrfXh9}8@AKAmU5c^CLh7w-u^fA*Uxiq zqL#)M)Ga5CII{)a1E{BB7ylW)3*J5ux0Sd5*p|Gr+J5brWcOvVe|oq2+t$90LdV;0 zIZ653ve*3#{B1YBi6)8fs=uwbeEl=>w@r8gEo(TxYE=5a>u(FZwwwHI=Y8L3M-0iM z|GoaUcE5sQX-F?k;cq(~PAzc_rl6Om^tT;27hMk?Le4UL+u0lX+a|w7v*~ST&zZ85 z{dUjNj{T|{VFkJ;Vu zR5tLp&0Np#3h{#M=6Al~yYuXOaa;M@syC>w&&Agyf%^XaRD9I`Px!F(1z4S))iF3< zBWIH91x2wpxE`4UOH)uaTjCFs3k&XKr(&L{q$sfxOxnH*95FH)H7_=9$cbtVoA`w^ z2mS-MaytJaT0QqxPLWKlyke7BDb(4+QEW0i`?Zt4Flb=E z;DpbYQzB^g8cGChKAnGKuVSf*oLDq7=&~Tj>NamfVRys>Qeov)=tMey>&6yEU`s!Y zkNFQR{S^ON5gsxojmvjXQ)z4bM>p|!O`0X~e3bo#aAuPl76+m<*`PaUO?%zdG)ku6 z>eyb!0;g6MfibH&3_`E%b`gZ7-?a`rNj3cH&ve7r;EN!_mrPhl`GHEkplqrNkuEiC zv~pG_X=K*$?l;iLaPdKZb&33J+)I%Y+v=gVuHB-&!ip4vnk_S0S!m5z>XP^Kgqv^8 zQ8DEuNH_$N$#*NIxJd;4k|7Ix)==~F*}l`|?Pb9@Sk4JKl&k@-8T^0dL7Aa2CI?YP z{78qXmW={yz-|Z6%E!fL`SaY)8e0a=Adai?%AcirIBt)&<}CH4l~r-D-JR>D!t2i) zvOw_+9MvB8WFh^$xh znSIT_S_TwfAB(F2aP}oQ;O$62^Y&-IL|iSreJgqs@5eR>8Q-y;C%0|4<`mAXyk<7K zaN%;u6U$vgVUMfg)A1(w{pgtK!77nzd5%3@xO&B0&_%!;^7jAvG0Fu2UJgORc3zVn zLWhfw%t7DDADTZb|D61Dhb^!NBeA;0s(raXU~=sb+nu54B;Xqq$DHDL%ah#w0T)W& z(Rmmfce2jLlJ@%2K5svwhQ)Pt4fcO5VGXPBzj3XL<4?1lY13%*La|qa2(`~4k1Cmk zE&(fnqZiQl>1aX905J$_k1=A?NCl&RfPM=8haEVBb<+V!IEZ+Zk z@gGp>`OoZaK)IP)9@pWf;yxPE443xj&$mSJ2It4>^E)jnjMiIIs_;g%roal;2g6r) zgh~H9N^wR!bUZ4i##Ez|*(;Dz@$jYgLkR3-&FObcsH#`TqT!1|Jab1IB-D<1V@w}` zQvv>opvWOSk#2dMDt2*fNl~YoQ0|f-q7hDN+X@wdb;z^Nnk6NR)?C{YX&;+!i8d3R2ybgyQA zwz{a(>xh&*<9-^-cR)WZ&p3-sJ)JoXe+L})ia+pl6`1*#5E;3sszr#=IZK1N3kqUi z3G2+f4zf2Ye^ybrwnHd)3yjBK)}p7O5_v{$U()Wd+)y-02b8dwZ>~`%~qe^k4{kAL$y3Se6T@Qq%>w&OzJxcL^gr)0&uyj2TmaYfF()Bo++AdrBpt;zwW=|N@5(C2#8BQ;7 z^>{9j(eh5O+i%{>x6vn@j^xY4+rJt^v(LR;YR3mYC7ll?eI5FH?|Xc@+Fl*NXcTXM z7r%(}3*A4c>5vVT{YASRFW1fBH1?hM`HDJWskPniQzkOcUWmJx+{S-72FW0`2>uks zYV6tL@jTwXI}^`R#j$68z;9ODrN}q|?BPe!{;nku*N+vmX91mZ{*!{n0 zJbd?=-7p^Beor&U!zn|WKOUa`pA_TaD+ofqE8}4W6Wep+;cejdHy97MOoS%yiSh7Z zwApSL5C6hsc5OU-@NRs%yT`-6tI^X^kB2A8qun_kMxNcp@$k6_EYX9P?aX*M?ymol z@$j-+8Xpg%=nu^q4_~|!4ZRcN;VW;`H2cTHyMHF*;fW2#!^=t<9}gD+OC*ekbFN3T zKY6Ltu95NZZ*TGGYJ2IH?>Qdc$S5qMdRhcB(-D`q_WUI4{B`&rzT@$j!m z2C0?f568pDD)4r^{U4clx+;$S@H;Bw5@eh_9yZgzQvDP7SCGdY7>@Uxf2BIvzoL#( zWZVSLzjF0Y=wG?%0-8zqR~|wGiGKxdWbuD|W1om!&Ej9Fpnv6;uqtMnndo1^k$pb@ zN*n`dYX3?B&fV3YwZJ(X5H$f4$u@He119A(esZmW%$QJrX`eJs_p9kBXWnb_BiXLx2 zwk=2ZMfM9X5)k6lGoOQ`^M<0TVQ|Ic+*&xUAV4@qs(Xzn%Y~1ltIW}RO1C2> zK)v$d93IVcHE?F=Lf+(L2;y$nAF&Z;L3YRpD?yo|PHV-rF~8{b?G-1{=}5V6q?ofM~ilHfX_|4;c% z-Z~31*8URXKY`x_9usT?Eb6p8l>3r3=?aKec{|R)PHQ-Ic#cUNrLwAf93u~SY%Z%9 zjQ8!p#v5!LwZ-uYc$k*Yfo0066$hwXStezI;)!Y!X$ZLu(c3v@)U|>cf*lB z4RGgk*HJTNRUx$>2Ip#?mFS1DCcTX0l6*00{{_7*nD9SFNdcURKcO1_gf{>n=x0^_ z1d83o3EkOr595x{pKv*1NVNa^wHUQ7K-6S!|E2a1EP^6)N}AH2FbYPf?hnd;D({yc zUALlvKfv=BErC=FKDMHV!=I4aXXKWX1G@1UwU9Pk#}8^4g3#HT z#E5v++tb(=9Ot??VrdrjB9Y-Z zF*;0wzvTnWAJFTZXbOKz1vK9oM-LJQ9OS8w_F>GOEh1B8Rh+4;S9Omv>93pK3yCWR z4iog&bo)|z>!ww9XgTe8IMnYX?Kjr?ch+^@p#;`7i8T0@wi$Q?PoV0Kgn|K z$?^D!B`L<^1IPUY<8e#yUw3*uZiAD1?RQFdc067M=fTd5$2m)3w78~+^_w3#9@j&_ zdwe`zvKZRl_;~yX9`Et-xEzD)PL9WYA8mX*{sfxe*m!(Cn+L;uB}TiZ$K&_m=G>+6 zc*Y`*1itb3TdXSmtj6PM4aVcMx;0}we&s33j_W3RJf1NYU24)WDo~2?_>zTuka9fk z$43~Ct3H$Q_!6emo#~kI_&(7}GakS3G9S&eZ^T_Q9*@R17>`T%X=FH_$J-yv>&-(Y z8M|@`|E{((k%gHi!!3a+D8ui?xr!MF*(F5mMY2yOcSCd_a^s{BD}zc$_#?*-@4pYK zLT(J|GddV+%O7}0Ev@l)cwuk>)+1A=uacHrQY8LXyJjVhN|5gr{v7#&g2a%HwO;8l z|1L*#OS0_3b!mFOFpD)J2Wcguy>Nzp>-^Jr%et+GZ$;);ya#EdciN2NXORMB1f~Br zRv(|d)DgQWYBjalwem7;EWf7ZciREYm7hp2gjG7!x-=Af$@quzpI3rfZJ)9a(&|Jf zS{ArfGKujCCHXgXDU&LZ6^cPW=u3!o;CY+@^^rU;?li9`cV3azbDo?;g-L(Fyn-dv zHa9?xs{-MiG{h>y5u?7`rcT9khbx3tfhtKcJMpm>FEjjk4p?O%dD7=tOt!_Ftfq>L zIUV<)#htD2cwB{YKOK8TD1K2!=epx@gxe40S79N#qAlmy`%3*#ozB6u1qhXbkWBB# z1_Uk-7Uh0(c@NO*;M0JaE`ofZQ(x4h?}l*(-19Rre?%cQn=yv-Y&Gv7b^-)Re$X%y zgceK%n<@8w>-L(u6>5Gf`PD6Q6(9jGqc5>ek7d*#^`h8YXfGafI+JziG(QwuTpW9a z)q;=~PKJ#`rcVcT{zZ)Xuo+E#>D%a84AO}vpWA)$$3 zTv*kI$Qi|l$ZhL!q&U`r8~p9`HDd$!V=lRSS0q#K)8(N<2`_UlgCE5Y!3_?+I) zj~$$GIRnv^A1Un2ce0m4d*~W_x{j8=q(w0NUD_4Zkb8onc=iYW;MYU3`L;888xAy` z_ua42ptrK4v{{Z%G84K>;(9prhobCW6vGUUX@p|S&_MQnb6SY9vOVxy8hMfZ<%=x> zq1YFgRKYD+w9hqmaGy~&9I>HTUEL`r{u;#|L_whbXcGH0UZ#PX`+h~MAR_Md!&UhZ zUX?K}2!jprfV|i{^~`S6q9s`*Q$)c59##*)?^qxbtK2 z4%EHq{id&>?s4~bQM}m3^qx&-m)5ihP-W{L^V+K@-rIeir=L4lp*;K$V=un7b8w&a z-0;3PZW@JAa)fWvIc5^s2+9357%#}^4(hQe&nswa1Y?fXVkIXVt{Rw1yXy-r(3K(c zeI;1(YWu3$$gR_RlsR~8Y4xFfMx!8(eb#J=&m4+vuRFmjKSW8(^8n&)1*`VOv9R{y zmKflw_N~p^3`wBegK?)LvT#(#h5Oz<1N8&J?uyJ{d=#RiePGXcfyltI*W<5x6RuXg z$uPEuQ5Z1{tsgR@m*-O!TkQTg6FHbxTa^1lIn2$zL4;WgRt<*EqLI4}-e64{j?bz} z(1O-YgK_En1^=Nx3AqKC8*FN3QM`|BzeDANP9*ny2tQbLfV>wBJ00z3B1?)u#xyqZ@;HK=6@Y25u-_<>b)a=T+c=)MlIrSH@W3c>k5+zlY zmkw55Mf;-dANb@8PMZH8-Vbgs?cm-5=E$8t_6S$stT}Dx)$B*^S=y2!#ESmn>jhu? zdnCu(bXxJ)GB>Drx{tGr$EJTj9ob#|ds8=R$29R7d;R+Z+@+RP6`}{!g<>0v;^Pb9 zg6e4(#XI+`%T@kg=zT{NBp5%U2iw0LuXEoI#=G?N_3%HlhmSzx!+0%j;q`DvyG9S6 z<#uW5;TO6;rH7x|py}Dewf$E8d#)>AH9kJ+{`U9pnta{ApYYnx-@m8p=gxQ(%h$i} zzPTv|GZf_#Lx3|1@SN3oSrOc^F^c z4?neb!sUw0X8&w(Ke#@ltb&n7t=`%hwD7tJ+q)OGRfFZgXA*x#OoT&j=-41k=W zUKVRt;+lZbHoTfGM;FDwXarDMM;q`P)ez5Ck*n@t^PuqhaE}gUR zAJ_xtoP&Hgdl1|Ru#V2&Dvx8&+6J0o-&LbJ`n2cK>t92M7Bi9X?NZR{i>lf|7X33+ zYSp+y$^Y>knvMnb6)-?`OYIU#Ye5|>@jSZ+5@cZ>oq=Z$)ZM9j_-?lk)!II^5c_b& z&f15B@nyp2TxBV$DrpUl8T{UUC6!C+Hb1mlI314InJWx0$E zI2^%lJLre)RYN*LBf}q^8Qz*_McQGBJiHZamECcH2|*V`jYV=7VLuVjL#d2YTkQKL za+@zW3zkY4gzor-ads5&UVdz`6*;aopx}(2mlPm~=Cp#0-sNozaxTBr ziq2N|N!gFyk0}D~2Cc}yab?mf|Fsud?Mg1(V_QKmmfrz|8U_79W8!>)E%u>aQ6fWi zqS^Hb^%dgkSeFj@a}Plc%3Fno<5v)L=Sr!NLg$eh|4OLgkOvV~H7AJ8ReTjOB(YM6 z84+RtuE5&QgOhPHwq#RzMwi0K$B=B66&-;7n$5U&z3}=f6e2%a#rLrTzADu3f83WFq^QR9GcMu z>z|bJrWLs>t=s3PEr3(4&D$dLZ}5sItKYX$vMK-zeG~=eJsN_*EjaC(>6D=4qvY$6 z$O@7gj9k0ol2LS6#X$aS!YM04?rW$D5<%!{Ory5gg*VafF|cE>s&@w>$ZvZxgpL&% z207u-hC?8SP#OZ!n}n=LPb8tG(-oI_5#+THWuaGr3q-YY8U%lJlwVjx4LHYpAKfmS zFW`AVtk5ypI0kugD5DQoZK&DU-F8%j1*V=spG3ootjJtcMrlLu7SY< zZjQ9W{ZJ=6Uh-Xda|f$1I^Ju=Jz52 zE%PgwmMg00%|e}4^$|f@k@>iVMfd0|E~&W^V}%nX26Zgo-`onfh7D%0cWh@9ivX8Y zrF?>|TEUn^f`^X#Bf-D&G^`-fm)BDqsWBDOEV80!sU^1ps5~O&ee4PRZ>Xsf_#|~T z#)<&oB82|OR-|0r8ZE7JnHBAV)`16R+C1r`*fP-ibu=o>NgL<|dvBU^CNdJ0p9@WZ zzXsu4B{qi}zgP5FbodM`h>1K^aB3JOsj3QZIHp|V3D|SQQso?dB$p;j@J>KsiXnn` zP#fnmpZpOzF&#)FhkN#f}`%FYJ zo@;>Y$dckLBY?u#rxiU-T4R3iRrwgV$_25tb%$|2&CMY?e(cz{eC37NzCfq0jQS9? zqQAViNNtpKt?)5;>Xr8jkwqoy0AI%9E|SGs>3iJu~3Reaa{um&Hp1`Ivz(@87b0VVOZ^P=*9as*v; z-4EN*M`gIaSl;NF?)+9OYz~_&VG;i;`{PNzMT1+V!?0Dn_O_ybXW2|+J6<4T4GW^n zsbA)~Fe>^ur$OMJ)T-Ib++OfJ;?qub^~s7p&UelC&NrqZ*}1LgQz(-A(CZ^l;C6zM z*p3^{fBoeL{YpaW+w;O$GudzR_U*`{3kLLnvl&5JDXrVD{XvioTE*FlQp8qmS_MPh zI{<12HI1^0b#yLe0h3|Vh1VF^#AG`lSt~M+!C#RWI-`ayXyV=h1zVh6sJA=5F?rtr zITgigto`>zXLD|ckVS<=X`FiGlpkA|UGLWEOtymQq*nA}-6)=6blx^^lsFN5js_W# z(JOn6N|1r$&7EwenNGG*N;ZY``>y`ha5f-jE9@+xqtlAt`&B&P6tRqR2)3NXcvD6g zBP-`lHnWOw3jdrQ&)j`e2Rup;zuNBk>i4Mx>TE@N?$li_lJGQLsXjc-h9p5Sz`yYu zGq{122zs1>)F9yqq{f*xE~GBCtFieh5mNukKqJF2yEOu-Wweb?%a{%kDM-zEB>w?YPv>7k>Jma~zG_9k0-(cylIJ06cxhXq1lM8A z%t^r3=Ry2}txv;u@1issThC^Jp+?<(^Zh39b@v_OYs?s-RS;CC`3(^ES2W>nsP#-> z85(pB7~_Ho2>Z_-!Y)Ns#z_MXM-#yCi~{P-WorQKiF^#gE=LuKuuBZW{s`8`kFam) zsu1=N4`FxH2wM`eA{<3vg(#z3TnfUTkFrq6gn-=c>xvlQFCqt_)dm1v1I};oka$2R z5YuQIM}#S~ZIJfhM1VcV)v@0|JU)PZ*BA}3_s9K)0Q**sF`Us*;z`2RifTnBBuKo% zgVb(`3|y!h86d8vwoj#NMC)U=i+%Fn0!Dmr{hu__|z#AK|0GZot>0G`@b= z)I~a+#@EJTHi56lCFASS247z%BcBn#i$(xV+O)2)-V*UE%9)8egB5<{Sk)0%UU< z@iqEK2LojUUylY1QOUdb`l`n9wbDz4uSY`X8^zZp1geA@q*{O#1Ny5S8L#j)h3cfn z*LSjP_);3X34ATjHK6K7Na_w^etbR7c`ONEKgD<5^c%s~lDKCiG`=3S-57~f__{>l z>%YKh;(Uipk%z+9bwGZ^*C&rniLdhvzNU5d;p+qpwf`6cT$pSJh|h{Vi*)_?x*JGFl^+l3i`zPS*ZlW~KT4LAc;OkNpOc_Q$zPa+8b!FBWe)n8p|CSGt2{m=TV&-041*I%9A z(F*TzfAy`fHGVW*nDzgczq#v4?eXqY7vx)yZ{_0Otf3>$H^P~LL=S)+0`nKvsJRRZ$ zrFUS*{_5R;r`!IiQ9PZeoYg^~z@Eg8#CN9@F3~7NgUAt9n`P>oW1S?nz*RaO<)+#ZUM7sgsx>eLX+5 z#{?Oo{M2NEWNSb5WKLC$pZZeNG=T}y6;{WOtm`rqvhL^ksf!btAUvfMZdZz`3ogY^ zJqu-_=ZRjB=Q%YkLwq~@_APbMLtQpie`x&EE*r%7r}LWWpZ8S{@aIeri;?7%pla!bu9qJp47H%3e_x>yRiX z*F#Ow?E(X2*-cF&YDEC)D;~(*=${UDF#Hdg6YZZaPRajB2hd6MPnU>8v9EH^4t8Bn zQ)#uduWP6HALAim!zbDe{%OPicuHKM#+$r5_#a@LLlq4FW04U+)BfoacIW2sKPq(U zsres``=>|k*gsv$GVHv6nwE$>=1Tlk2S|6tUOM`xd&57i{MO1pjf21y{{zG5>5~yf z9JYjCHQ;}ol;EERvxbB@*FXK5@=piL;v(BCz<~-Q~Re?`i=Of<)PO{c8dS; z7Y|PdF{baf*}SsK{i3i@46u6&VQA`;ad&FCSN2kXcf#?TcvV>n>GR5 z$i7-D8bQkl;_eR^`6*INqJ#|8>!Tjteg<+-eCsMO*LwQNG zoyScCIS6Af0_=o6k|bVZr<=#T{viSV!LKanF9k2;FCN}DtB_XYLgb_=3i-^`P!tT_ zz6tdt-VPdG$TCM30Py%D8js(r@i-SH zgSDc?G}7K8qKn9z%Napm@pDFUBMOlRm_Z88h(hF+Aadbj*L!^I380KD3ViHG zQKiC2y%iauZn=EybTm$MJNejKT{I43v>C5q^caxlwABdK#};Xk01{7A5Y$`#mF>U= zgOBEZA2Ti}{&gwkmCO&hF*W|~kK7yQU+1d&`?#)#e{J|7(@p6G-zD=y7;W6l7Oe0h z6bp7p_}Al{YCLoK7O=nK12p#TpXLOBYtRw;>)!Asu-DYa$N`_Q__qr9_NkRezLrL=Ex((?ZSX9D z?|QaS#3f(nNE@OWjO_+oM=0Xshm3$(qnY98+X()?MdNR2Y-f-Wv`ZQ={A+ox@po?` zR#$S*B2TXu#FF?SOZYBIrqWNs-;dEMnulH=`8RHhaPx(5W<|fp4QGvX_)1ho)mQOD z@&^KcuSBLVV0aHW%Yc!~rcz!V`+D%Z9lI?yH3|V6kU}%C#TWyDSF(&Q(t4o-b5L;W zqdp$S`CAhF9>5kJWZ?IqP4Gi*NWkBT{2;;Kw?Gd>jYM&r7sW0<=^ZU#<|LERGI^mrH3?hY zwZ?#yb0P+GI^k8#ujZEx@G>^Ooojs9CG0>RhND6$3}-<$KFpj`s4?><)+z}z=UCTQ z`h}iK-Y#N3FG1*on?%gy>Ld-AR)p|e%l&MoW#n!}r@;C^Ttk7F7vqv1>^U?@7`yfu zV&3n{<{;)`7__O}U9vmzGK`7F%R@cywGS^JEf(KE#-aG7hQk-pgwTs!!pjt~@eld@ z)fK2;<9PXOJWah{(coo98&LCJdXtjz@;6Q3+#}oIJn_ zz@8yQQ|Jxc7S=Rgz8&%_%!bmLW=f5hJD#!gc)3fT9pdF@h@1>$-4R~KuvwmQu5(rs zczJ0OUVdp0P*EIb+mFD@w;Q}XMDX&EfHRVKm(FV35xk6hec9^9DIuLc5ijq9 zRMck0AGc-sY4u5a0u0Rsa?Hq(`uA zpBvzE&Om$*UdU&Vs{P&y1Q%rD^X#+Sq|x-n@RH+<9byWs3`ed-R-xhLmP;?2WF!_=mREoCVgT1%NS?TM?aue2V;>_pB)&5aZZc++G}clQ(lW zS=Yad3+qWF4}3*W5W+>g#n2p!^Kpb-n>WSPv<&ZfHckBT*f|J6>lh}mcCN)c0N6{T zD~}(*;2w|!`2jCWT58{`+G7z6Uui>H4AH@(jwu6R#5cGN_I)@qgH?k%2CMpXK;$3$ zx_uP5y#W#`jDBqP&sO{b(f~!7ZF0^nvLdrkqnvZ07!#PnoRtjanN`dn zajWftr)Y#b63-Ba&<)cevfscDlE1-?H7fh3@U(&KHzNTp`{k0B z*>g;(M{fZ1f+Vdd&s!8JVmCJ~JyAh6A~;V}P(&4@gSUjC!EhY#!>{G5h<>DkcF+eb zix08=>=~D_AtUOI2@7cj61EL`{`j0T5T1i;^RWd^9_kbCx4iN@1h41;uodrjPvv(A zUXjCm>+&nNwz{H2*gjeI%l{G2RXm7#rz3if!IPrY0!}H;=$|x#D-q$2RS0hI_7{+1 zprXVGdd#0(zLRTOD>68?mf$_@??w2D0`$Z+=A*H1K=#lMEKBDsup)=*oHFfB-G5+h z{)$TR{Bg8wL9AX%^Ba-0;XnKZzoexKVs#Y-CfPBaydoU!7NHkhm=wg0??icYVavCW)(`Av%_taDt+~|fG@jGKgLt~+v7@Kl}qhfObMN} z7~|dc!TV|*xE=0_f1UtAsJ`+DgZ7{~H))O}c? zVtG26?;^m$u#Hp1RD@rru`N?%z7B;b*ekUM7VNg z3c!NWeV0Fnv7DT*F%+}?B*F*M2!_8>5js>J#a5&O0z~E!7J_j)A}{c3SY?&va4*YM z2v5Kb^V~qK9?n1^SbH@4K1c?|?M;Y-GGB;%V;jWV$mRYGrlZHQoD8())F1|^hQsFN zk^^?CW7xbC#W0m|W(yvQWO&xW8P4W$Q>Z=l{i@782Brr-(6^LEWqBvPpCz1bRln-^C3Y|$x)|6C>eLTxcC!n_GVxZzd z+ddeMYg+7=F_&WE=!5uE>~zHk{)h`nc;;aU!-r=$x^TUH18xVQxjbX28Sxg*Xqyaa zeu;5iAk9z(X)@r_LyA0kmfm3C4Hwe9ldBc3yA{2|g*4Bek_c(?G^AODfz3dgN&{(l zA%aAU*lk~Ob@@6sX*5VTbdM?c8hs%HkmgPeX)-u6GOmOV)s)!3g-6DqnyGkbMSp`& zvB0XrB?zc-_wuW72^j|9oDU%i!0C?9-f;nr+D~2-*7#;61_!}63@#@4=1W`{eDeu! z65o7|3y!fF($Y{ChDKybY)ZW+^bfdn?Way9CEj7q#5;(Y&`i8jmfak@BW;n~3~U-1 zl-HnmUR%T|%|_ee3AS!>TWnh9w(j-u9wWu@; z;OFkTh=)?th-Vz-yn(N3#DgFx3h^Lh!hZI`Q3~-g?D}{ayF$Ij$cxmrtyvxp$WXB^Z%tzJJWt18v+vW&N_?}Mm`C6 zXRzR%E3Z;`hbJKT@J`}lnBbjFGT^w*D~v75KG44?c;~Mo1Q+knk4Qu_no?|lcY5+= z_o)x>u-_@XGX;_LoW&eaP5JSD29`7e&KCk8#0+KHi@PM^oo<0<;2j$D#_$Tz!5Lvxz%zv+68hjc0-;=TSG58WJ9k%(^QeyPyS|2O`d+cKMj zXW%>gU+%xzc&70aTcHqBx1kN@LK0inQ&74b`=fBx_ zTq2$+ZVsOL5&oM)UT}wjs^7aKj1SKgyDpF2<-hsYEH}%JlBM5&vk`X^@yw6&-^>7^ zUt*pAO#L_eqP|IZMsIllp7FcQ8uj1w2fvj5n|4?4l>cTo;F%jX;~=4g^{CdydDBNZ zZ<<(-Ix^F1m@3zKvk7-otw$}x6yG>+Dva}n7q0WB80S!FN96otP0||AkV}pE7T2Su zXy;9e^{5L6B;y$n^aC^X-eGav=)J>gIg0*NcRA`^)I2}l6U$NgFY*h()~tpeo6VTD z=a3aYWj(Hp%jQGQ<*VPy&wbmv@l#x5w=kBa3S#THSNK)mUSa>z)N;J&ISan<95*SJ zrVjEPH{R0J7M4IQO}#E@rC6Gpj4CECO%-6HtAA^?P)8=}GFrK!G13Qh+u zO);RnIBweG6V55ydzNip7#v!b;WE znBS}QIc_GNiC?mA^`uPumGIo%#GW_W_1rXnt*Y&yrm>EAY_3-x8=OGnu26Nsbl!Mu zPGVKm3e^E-g-Z7QPQ_eK&Zsu?dG_2=&tH=z4g|9zbP0ZmM4IidDS-;?z+a=+r+%Sx z%Cut{VtlzhA!&UIz(*YHYPIY_{F2f%?XQs{G~ut&`5&p%&a~U8{Jr(5ddzc;d=mUM zYJF-cTx-NPIJ3p?uSr~f5`RqqRg%@S5)m`T5^r~*_-j;%c-LR^0VmjatCUh~;IHXT ziMdaG{+dd>t^76r9SMB1Jjq|9)~CMr`)dxt%HN(}pE}I-*PMjSV|rM4^k_3ISWV%Z zk9_``V(92juTL#N_-37Dj%4Y_H-{Y47`_?e`D+r^r^?{4`6HV%o@#ySt#r3i#$Thh zTRukrN1`P?C)rgHE zsuN_FY5xuqXcoS?h~-VSK2?qbl8A3Qk4eNg$Kit}{5890ed?hv0C6r9%FQQdhPUNe zkv|dQY->G-%TiY43L+OY%xE4bSc=7|km1{$c9hpJkGlBgP&8L6e6tlJp}{u~8GOSF z7vEg`GmNTzQf}u& z^9tk%#>%mc(%s9M72LEDLkkYL1NR=b-UUEw+~uldKF((tDrCK?E$SodRcW{|;OARB zE#i9B_qYJjoVmeQm*wBN$yF9rtzhc-+JiBTeiX(xMr#3BS|a8 zveiF07AGxR^&Fmvem;F)p`U+3mdVRjK4Q*rB&7k&U|b6NIouV$Ubou8PEOxKR<@U1 z1yb?zb@JHw;_+pY0VSyJL5X&dr&65ED*I1`%%-CZqXy}_4V;tqFYHr_To ze51iK))zrud23ml zixnc;fc^sS4{b^Udq)sai9$rDqAG^7!!;^{h)BfJh^U=GMEm18@zBwYuV4L|V=f_* zEDgGJ^Je3rQj~QEcu21w1$0iC_LYZ=u|D0!L+<(&95KGqunDArn#My?geLHi&i@FV zcBZ}MFv;J;L+@Z5Nx(yQN?#3SsP(Jo;hZBLszeQ%UcXu|15y*~SLcfmTs-s|-v{Cu zO({0OL&bdAed@zQ>~{(ey^6hy&OLrSG)ES%Uc)G_*7Mc)xUW>1rXLj%bMCHR@uZ?0 z((8CY8O-q&;OqR?^e(! zAfh2FRrj{PauFbOIDq_&N=T-NlExm5NrO zC{h{cI)V!%;28s_586g@bmrqB>aNaMUetOe>~rSpRa|Sa{xZ@gCATc@pE>Af9KzyCW9aG z@3`RSObvbz4C5l64`RSix}A53*9v3+v%S;p!_YRVz|X4~!VLJi9OJT(jd>xTp=s>V z54vjf36{GPzz_D=EAUfkz)v#K_~srS@~MPQSW$_sHhi%hV4_iuKGn0f1`4p<2XYcf z$BSK%Q#Q4scc)Q4j*Ow?d{SC2lW-G&ct+=M_&DiyCzb!{D3IbGH{jzKJfr+O&cKv>oD}|@ z?`427cqZ|MRD7KG_&yLzDW%u|&lonIHNA&n#_-XXxDV@JzaW(t#BD zp2ahVvKWGA((QrM-H~CLWk!a^@yz=_3eTk5pWWkTH&n9o@JzaWN{7bq%+S<$Mv-Q- zoMR21X*iN@Jix7#56`47s5N!v~_)JH|8P zJUl}cQoA8YzIh0ih0dIFOB3--GTFE>JR_82@{HFqS?-$(RXrx_2cdX59WYRFbFiB^ z>8*swFF>=ePEek@9N*fnyoXT&XL-l5wILMyl0yML&atEIDR7(wVnt5DXpik?_1QAt zlrZ)2~xI%@0jBR4awWDOM=mM0J5BEn_IXy3hwTP@G z>g#z)e(d{M$4lbxV;p2cZ};Wc1!>@sY#jLl4?KIL%=fR5wKtex>k|>25!&^?#4q{_ z+|49blxNk^8hT@jvl;11Go6LRg7KbXtQi9_C4-7!^IQTNG4s*L3hb3Q2iu@(iA5-- z8~7;-n+ZUYKa&nZyH6{PMYta}cpTC~t>PtF)|?gg){+)z`SBSiC!9Wdt0ZEuU%Mu; z-zj+7U@^%?z8d?@#w8CIujJqG)pnp9r(SOlA@m#XRJ3AzE3kRJ!=O99LcCXT0DFvw zIoN{UHm7(mI|w>E`kEsBBIeb8_G|Ed@T0XzHxA3xs-zj}#{4gcq8ACJB#V@Bix%xH; zzmoLr48CCW&6-h=ak6s?ZYB391jhjaaeEYYRm!B*EBircJvNT1!1KLP0n_Im!w<@% z;P1XZSKV6mIaE#_-rj~oRBv>;oO$Kfpv#qyqoSjCIRt2htv|zl1-#2C{jDN9lUFg4 z$5aeXE5v(41=0667qniB&^H(xTqz!_-cm7woGy6e%5TFiJMIrgbi4<$Qz}y!|(gy}A&E5@xZ_ zAk1RYE<6Hi6MW%%gC4=y>OBr40o329BI_Ukh}?>N zfD2Y1hoRT!&xIy1J;?YZ;{MP|6gP4jikqzt=5nqAs_@#^ zi#9N}+%*h&Ih(D>X~+Z8ms;2l?8_#AakvYuid<)9v962K?D5D}L?~UoMmn46;al-b zXSA8lXZr`4X(gvI>kU#OM3(r+EAc*JP&RFV}$kYAaieAdhUG?Mk zH|PUU7UOog{U<;6M(k~8BDA5Xst{dqY4!?KCsdVZ+kNRJ^4obUdLLBQ>4E=H4ey08 zoho$Oqy;vRV1UUEIvHOBlPw$gz2B$QFBty3w79Bo>*A_5!PqkT5T>Jc!KxNt=UbPy z4gn4UIKe!G0K@V^z*ZOuLRh%Li*!C&ohVJ*$>g1>{1iXZk<<1P3?8e3;f19`7I;pq zJ(*vJpEy6%`zNj6;GZ}@v~=qFK|4b6Uw+v>5TKG^-E>(9qc7FLRf4L#Og?K9(h3zK z!cy9lyWFUV)oG~Gt}M|m>QY|C0rtalsKYwz?ReW)3eg{x{|8Oy-*K1o-@Le4`M=(D z{#m=6|ESlRmH)h^^H1O9{Aa%1to)yDI{%zq&cEZ@X61ix)A{G^a{hPNjpsjL(7=Ad z37>QB7evHOPBOLiEUrRFc&(^vaO)sUCFc0BoK=@}jM?F}&xMz?j`i%wx#c*|m~zb> zhH_{I`ZXgkpbM=+av|J-$rVG(kREMW8iC@^RDgp<|}X7X)h%rzHPkIdq#(fIN;j0YR@I;Mqi9yn77 z;ow+W_fSlQ84Y1}UWwmU^d;VnM=~D6Uk*>1NQ#xjJ{+tSvtz?f7G$K;0-&E`PEo5~ z#sG+JK9rNCiy$vZV-%}B*dDh))p#_g+{_e}9EVF97?hP6g*T^J6K~P5KMOeq<0{sD zFs??S#R2RikNBee+Ba|8#))a<0{s=siS=RUZ2b0(_i=F?Fd62fAa4E~yc;0pbNhDt zs#h@C3y;eS6v2BiZ2>N`Fw2>?h#^Yy0AW|b6Zdt%-(b$66w_3zP1<0$E)XT+`^psIEslyWhx3Eityg%Jx1LVJXwIX zzuqdO1ZJtYwxS5A1?Z?c0}^r@QPk%(Kt7{B`Lj@JbjsiJ15=FauY?S={~vg?05Kl= zG{^*5;kFem!Mn_=66x??zCycsl0+VIcIQispXx6ZeCEzd!cWMM0-fBV@)+ra(g$#p zt;%@iFiZ3*qzIMmuYZZEyi<=Pz5WR$fU=`QWR;(%=HG7XCHD8asNiqDe}ueW@ylRz zV|fQty2UNhoE0+HRHcp7uphnPB?7l#z&VX|#AkPST9TGs<1m!8?jz1xB;w)Q{Qi1` zn2yhjsvxhsGB)!v_6Fl91mikNb6lBI7~1Tm#R&%YuW)1hxfj6~VW zO@L{jI1x0Kr3n!4fQNWJRLd@*dMS{hUHugMyKk1~+0#9e-=WX{wE5kR$j(1y{WdNA zY4ba8#ZQ~xrgs|6FKK@BFqE*-_(h?N>zWad@rL=}M-A!7!-76KGrSe#@DL(}^K^sA z^SFRRPxim@s31&v#&afv@pFqk<}3D9U^yI^cL0`&IAbe)QHC~PU(2e#C}UJvcpDJ^ zD&Tpmdg3&cwJg_G0UFzvq*K3(;FU9oX9zwQM}4qg@%t{P)9Yq zL{<>)arEcE#Tt$hE9CGM)t}X?R`ehw>_vHeVhO(RM|m6ufaspcc{<9QABWw@USn0) zaGvOn??vJ7aUN&&Th^qNsBHK<1bif=3FpdXS@A1y6<(K>pZmUbJ^51%U>=Mu7m;jQ zp1Z)hy(VoXyufX01t@dx&DlG zh&601cpBJZ;hGMD{d6$%{mTk+FF(_Y?2n4@GFW~D-^+r|;3uY*gOD5L6%4OStN0w8 z0k4$NLm@#mpV17bBHY00QZ%2Ub&HBZNWs0LHe_oPZkotLfP|Iu30EdDagcIz>cFz+ z&MR+azj%a-B));KrJ!!Jvz#fNCAtteozcWU#uALF>=}@xR2CC$bvZ*;>LWbvmJ7v^ z-|E{O&B_nJyEFcQE37_4Owlzwi$`{xf+{-?A>z^18L?E+TWdHm@U$t62Uc~a>hd*E zzA|=6XCKZ%j$^C5zS$Q(^L;CPF9co?`@(c^EAk(_Rp{C+aAgeA+LBl*&`F$=RH z2payIvivaCVWN-VhL;}s40xQS9!3rq1*5k|cDP|X?Q--mguvw9QT)0GzYqkopZYad zeocxa#qhe5!{5PNa$g*~e7HSDN2{vn6evpcNPSB!;a-Ses+y)p&J%S?EdJlIjFnLQ z$++PazX0X+6`x0s!BDXHrCk3KljFvg<>_O-!^fhBKKWC8@?TE&4E<*WW9v#N@H~yIL zx#HCOo4e4$VHYOG^YqmQVV1dhD-cn>8a2}BIq4~Yj zKWp+^FGS2INSR%;hEXNe2}GAbP6_-A4o99C*`?W)@?UWKQUM&3zRq-mCul1YN7a&s zf)|j284A|m-Ga#@cx2+hbeIC13i>eDG{qmm-`YOhf}5}p?)srjd%e+R5k%u0FZ%4h zk}sVd>c^f=eLtIhpQ92HzzwPd71^2r?5fGzYzs4xeaWJ#9!*t=^kotlo1R&>O}H_U zuchTk7g#KNJ(+$E^@8IKmm~|bYeJZEPxz99nQB-Egh1coW=~X2Y8Lc`NOk@rcafOP z!tAv5`vjcTSo|b}0$K<-GZ9qVQ$U`c6IiuI^rAWUgVsj1`0L0a$AV+#Un$wVa9TI=x*^#6=D4poTTN=_mc2C`>7AVi>Dte z4;|1v!T60C_uz4&zf7s4CI^lS#&20JufXMH&zk`tpK$7D9)bLJ0Qr9?AYTBejkSys z^jIl^k|5^Q_Ji0XAy|GS{NRG+6*75I>;<~sFRbdv#6GIwoggX^(U+8ah`t`VQF@UT zR`f5htr%SlqUTRnR7m%?o{@SCUkUyqs24*8J8+j|s!JL0N*Q?;dZ$$ejaddG5Y zgS4*WfIr?xC5U}RROaBKmMAKrzIzVng8D?LKlT9y^{+%`8tRwngNq~~><57q0iP+S zrMMKRKO3Ntawa6sqcqm0k=A$}!Ehua2X}PP)BkuMKZYEVAV0bvn^8mlQAv>hR6%5f z{7^UaRqPyd=U)o@mmwq3J&pZ8cI$6NxeVa>=Lz~x#vN3o4BIt3cFh8baI%D>GG9!ZL3*8P!v|$2@99tgM|lBpFclU| zohjta0vL=~&jQ-2OFawt0IiN0iWT`9N{gf!v|a+957NN2e|aD6`R9d zRa@#+?GHFn$;+Jw6ub2b`Rj%G)-58Q26Z|Gw^8DRIx*g-m+GaEmak5KO{mjWR9}w= zm>&%Am6!8_Lf>!yQlQfx4~Tk3ql0NA#qCX;BMe4%oFmYdu|H48Uw4i$igSeX$nlf4k4$jUcz+EsCBRM00t&nJ@dP1P`nJH=c zN1{hrJ#HmY?MK)AW~41<>V1)?LcM~EQMXiwlh%Hsko$DXfPse+TKRkzB|46G85Qk9 zdJ4Q3dS@p%5ALv7iGAU`5I_Og6Z>jAAW;H%?9@I2eUBBaI$3%UL~t zk%I<-mpF8bNMlL+NbTfcP-Z9fg%cI&8MHpntp>6CBoP*;ZBAbwb`L`$z~mz`M#_mt zBLmK}D1o^nCm!M6bXVv==_>@Ke@u;WCh=wJj}{KEM>@Yp1~Q@adu1}9+v^vJrAIH{`6Cz!Moy5KW2?L zJ^Ok2(5|ce>$f%W)|NpfBIj+g_I@4=K9mK-}!O=^rx{-v#0#&x32IYd2{{g zm%Z-7qP_lftok^6)}Q{&Hn90Hds>&?gg<>Z;PJ!F)*E=$Xom?&re{)qI%M z_FutM)+jle|0DP?*ZREYot2Zrc+dHhz9jCdFHiUSEB*XtdOlOlsIkDPXXY=#L1oZ; zKh#7`u68pU=6?8OkuzN~GlUD15M#O&V9h1N{2OIRB*Sr%T90TV^i zJ~m7((o+kNR%8-N;nG9Q+B+8>6WB1*VX*w@y=00)@0p&99KjX+Y?ygSLbG9J;8I-V z<4`Wn>(e0!@$#2p=L>%OR_h+{K0BwOa~!MF^to#1cwUlo{5T49XZbLUMxgvN^oO5` zUz!)w9hauCZa8PJq(7Dp^TZZ)iuMLncn5TtMHtnS9pP)xs@f60TwQ8M_+qrJc$l8o zx04;=jJ|0c;RwL49N}Y?BRm8T3gXl8xO(#YjmCY0q+C~ckm)wghq026$#}fy`I|j|`(Kf%=WidO zerbREwfM&P+sEJ<1|dJU){1{6Ua16zOdD}cDaHUuU2GJgu$f-^8dWE$E>|O>}ZH z>6*H5?ZH=70qu zk}pH%i}BynA5Nx;`R%4Z6AcjX^JN~wTV+$}3qJtz*lE7ZpO7B6;D9f4Ff39eqY~*i z;LEfSC8A?dwGqUMTwOj$1aYUgJ3)Bv{N*i0N&)9SDIZ!Ee3@_cS*+sihQBY_+x-Cw z!_@SY4`21cX;z+1r$q56a#pTe$MfPk z$H3J}scL%4UzY(+2k|C8Q!I{7^dP&5yn)wK(NoIc-|m7I&>8%VMMU}gK`_Rt9l>Kw zKk@L<>5B~xVTQ`1y-GWejVD(#MHJ7%8KXVg-uU4xV$IwlR@33DC?pbfgl!@X;QSV! z8h5s;Tn9?Xb!TT&>h7;WB4%-Czo<(DzOeHmBw#2eD%mZ_-rNy)Hc+pMJ6_;NmtEnzQk>afU1MP7ajFqn9N6vuC1b z`25+#5R5w&;NSR-a_(z0&bK{p+P3WlRl~^<&kuimW`6klJS(yfKqszR&n2k@;a%}l zg%6Jp#kN?+_+D-IUZ~r=zZLzn#>AsvWH%s!6^{5g#VE;;fy>VkALwJ0JnqB9S1D_3 zFfo5ptGNj2@5h(=FtJM~8Or_1QnF_kxFw5BOhCm0$R%;lKMrpmF$9xaAPFIuJb@1sc)lN3u=qtJkdw`gkdZ^V8;*EzIQDT;Y@L<| zg-IUtQ^^s12U0Zy;O#&!0-h6b$2jkem;K;*721+%m&yV*hd+tJ!*Q6=u&1C31kWNq z!!J1)B~9R$42OC0gXe?73Or|f;CX-s&ytW8`54lMoGGQ%xD@bwIm)GE55ff&TT`|H z#V+(~|9)zRA%Jyqp+-Qp%QzYAuHPo1>kW`&BD!9OpJ1E+nPtIz#IVhUaiS^`{RXDW zjBmu($D+TWBm=-VIf7jWgQrxb7A2&l{l#_(Cwlug+j=zFCer1xC`O&s8zY5qo7~cVD&Uoa9@zf}#9HwOW=6_(Sz}MrPYTEMSlKAHA0O7wtbJD72UaM$BnN=&A&bW)E_a-P1W0_#18UnXOJGdDjEAR)pbp-HL!e!fBp}$XADPxR+1|B{WlqGZO1i=+&V+ zJ|sZCTnbkS4Tbd_eQJkuEaG&_$%Lf-b^TT)N1q&<<~WQt(GfU?vAvGzVBiVsziYo6cZD zHG`N)5?O>I`o4GTGluu4=7%?>g|{oF2%-xx=&b3LhHSnL#nj+AdC+|hk6iFPOBV;d zNDsQ*XA5}lT`(Ee41lRWk&*LvfF{>|qO12OtpWXg0`B|p^JrB)w|3aJw%r-V<_FMt z6Df;%VT57>Lq~|}rlyG8&*O-7!#I;rb+2I=C|zMgr?Wt2PQ#pMnG=*%^FuOffS!Mc zH|JtB3pgz_bXKadiJxJ=r*OM5?rU<07;T_uX%YdS&J$8Z$>0dohgE5ds+bzwEkODr zIQ$5z=5|0qJt2G zG>$ZbvmH-Ba?P$+l|+a_Etq_8K(@F==dUM4JOZJo=;9DUzpEhhh>ZTi2%-2!#^w(z zV;Ff|vT-xrl0`NoVCP{lQ{k;N4tcWPbNYfzCg&=;!O_5YGp59&;+&zI98|k zxce-J0`_qZQiv%2;9nP7)%EnZc)n%sjud!IS64yqIx9}rsX@mriCNXyWq>g@T5d{( zjXxKunbCwt<}{6s>5_E^;_sPHA~v3l^b9t>mXBR*thZTiX1Diqug`$-@nhpnS14@! zoQI8vC1T?xNCFU&LV6LGf{nKUUHPyin>i6nI!}6EwPTYc?z6=7l|(D{C>Z4u<^M>+ zzel1zKKu*nwcc%+jDKafCC53GumehB@GlBI47iu!SqO!5bRnC-zx9eBva9$P`(P=B zX5iodz~m)+nEOMf8vholOO1b@MI(!c`2>BNb@k)l9*`70%=6HHcrppMTcYQ`jn`p} zhoy;y_4}8n;EC&B=HU|x|9(xg4E&owvKBPy+i$5DyEU|CF1}qswQd6c)}w%~8ovq9 zl%U4SwT$Uq^hAsjFvVWN5oF_jcq4xJ@mnhyQxY*K%u6DEdx%4$ThK13s}F-_ii!ya zy$2!; zJ?>pnW<>nSbl18vyMDaz30Cy9buEG9G%pdY|7F*HQ=!Z@} zl$UVXzu%I0`9VoM!c@gyUCIleKUsk!dYzR&`E`h(QLtP>u#A|ih0`*oBN-PgoBfyP zGzpe1(Hz1O)k-r_Za+lEL3Z1nz8LzAz42g?@+XTgd8^Bu=Alw*9SHFe)ZWX{=n6hK zY(-v1FZxY7iW=wDk)g-j9{v@JtEQUyIhaBe zBMIV}6Q0%%?)7{d#V2f>2hlVAR4nc^o`q~6y4ioJbceuOL-bP9!a?UBa@U3E6JT?l z=YW1+z}OXV?j#&^L2rLQL_fCyM1Rgjq|W~AmF{9}A2AnaH3Hv|anlDmkt2;;HfohEPj+|Ge<|UW9sXD(yjm76ZR3QA&fYTSn zGj{~S|*@l?=Fc3P+N|jrA#tFE8mufk(Yf zmqPMRMD_7C3e_+AVXN|rC*gUHx;{KFqdf5ZTHFrCaSlT>;-#E@4ZwWDdEo;9yX4fc zdvJkfYxKPEEc>*_wF)5U-RpRpx}Rkq`ouPFsI{smNsN^ITm)V$$mm0O(Dk9)P&O+% z6EEY`DM9gdVld8Skd$|=2!E+$N)Sv@AKCimV{Sf?ZvYeuVjn^9#n|2aF~%<*A-*07 zhK84;=fx9GgvhZoSEmIkuS*vfcBSM#6iIl&PM##1#2&~X0FCT{90Fx_kI*~}2^YpM z!5QMj;BvlH^-60}KNxv|-=ua3{3b5I@R84BGcUtaIWOFcZnBusP2S4qX_<>;fKz)% z%`mzE!)OZJ?c3A-H{b-86I4$Apbx1z6Cz2>e@RAQG$XeRaB}~ zqm4CGT9aC7Qn)$;6FGwuj8!VFsPUpHy|s!mqx4pAU}iMOaWvkd^|snlZN1d%t<)++ zOEJ7bd>~c@sT$ws7}SUrP?UWC|JwUJW|Ba#>b>9hU4B0@=dsV;Ywx|*+H0@Z*40R- zGy4M$olg;M^H|CVp2#Urqcn)+sA4r{T7h3CcLW$HLHS$tA!Q&99`$>;?~tOBbbz`+ z%V738CUUjEhZCv@fRyO%WT!>vGq~|@MrI(`129-H8A@l}$xG2LJBd@!aRt%pUgkK# z7tb5%w?G{10%p>bV!sx-8?nm2R(VdCbQGB~apa(z=VVz6jMPR3K#_OCvEvyER-SwS z(Yh)>esQ~z+J*)r7KYJPW)9*AdlKtrl4zl59l%s-Bt1+;K0kb#hp7Wmo5s`(4V^Wc zouz1z^Nll3AkiVa$d^$jH&zR~JnjvrbvCDV?qgibWSp+7ODiY|E_EY1CE&^)Q`Y)< zcm#RD^-p+<-4^m-##Rg90lu$(L0;6QdEY!Bl{sO@6E_g|mk#5C>{ZR_K_k7Pxb-d$g^_s%1=PzcFgRR&FzIOw zBj{p+CXPS2f|3Z>O>G$IZjt_kWtXrAL-Xg4LWuJNR{}Ae2`FRcR5+lDy_;ksDl&(P zIrbvE-3uWC`7Xgm$al6s2a@LL;#;k6Ia!X65?Yp^A$|ErK&e3gGdiO|ml!szc1@-} z=}{I-n2PMXe&@IH%#65}qbF7s@b^Kw!QK21|96jsc%Cp~+K>%vC7J6l0xu)>Bpr1!bj+ zP}G%`3}LOVti(H3@|6=kWdF}Qy*AQ!dy>-0T2dMTN$C!@3`uDO7uy>FXU&G1wNa~G zv|jekCwyV46)%mBwp#b0cf|Fi< zJ^5)0K=;x|i2TH}s=&^WE4a#-Gn@Uyd5|N}G8A)AVjy=!4-x7Tl=7MG9as@XglZ$z znksn&jYr4?M z>W64hi%_gbM5vRCAyFu4Yy+Nw_BmRsaVa9y695Zj5F&S=em?bb@$6;j&(%m7k4NG> zq-3cD{?|=tr$Cmf=Jc{r&g&$1y~&rS&R~B%c?!AXb|X(oRZ5=P1;*gZQzt{7`W65b zdFtyNc@4QQPx(N5@)RFwd1@Lz=pv+9IJA%lGzR6VLD-ISBBVqwIpYjZp5jqMYMnb7 z=}}yHYKQJ5_6WGjm#6*WQYUQ+CYpdkf$hcx$+ch<%Gxn2-7wF8>e<+21FkD6-Q zT_k-AqsHTi&cTfEliTqL*y9G~g6 zhdA2%AoZx; zN?&(7yKZFe!fU?z7Yv0KDAr(ZfYYaF#D3J1g`6oa;HLAitl=W{91hUTobtg@qRx+z z(!k+q>KsTBb+%)9R-z7>nTR?eE$VdnqRvRvL|~o=a2l8siEV`|=wr8e^OjkT5pw6t z`6HSklMqf*1QuH4P#BTkI0FEX5^NMqZ=y9$deQ$(;irO4Td zx4_Xm4;JnE$1X7#}XQOm85`OTMZr%p^7Xae+ zNMqn6fCaJU6eZo9>`;~FOE*32yPtwSX#9@~g`2(52Yv0AdVccsK?5;sJ!PD|)(3^Y z>LKyUUwG~8y*_9d&Xf3GeNf-}pdH}fL4DAz-~V5I5Vb?(DxUm86;c26K~Z?X|F1sC zTdMyr&?fVSUg6$9f#|XE*yC^Rv|lJqUF>R@?t!`k(=o-cYna zZI`bPYR2GbvEy^l2bs`qd}{ij|3qgr=zZ&hZuyxv`Ts-pL9YVB-RXl$S15^T@hiT> zq=QHxF$Fc6d!-Nh6y&AD{<%Kwt)Ha()Cd7 zwCV8ZMbrrC@aSz&HH^T~%UByd`&kIh)#qlyeny`XTpNo5`x%CNAX?P8HiPYVz@GM@ zk<<1xW6`QQ)_VP&+@OnoK4Nt-Q2Oyepmfl%mP0{*Gr9%KwrGX^%-xpO3W?pu-AT?5 zYK4Bv;+TbiVXcJ?Ys1wjoZqf>c$KCX_ui(pTXsU;T3cdXJH&IqiHYR;d2@4hp#HAI3?y%WfN+ zn<1bwY#d=uTa8xz{dsKoj-WLSCt=i`1?0^!U;$_05wn!~WI7)BNcsVZmR>b7w;DeQFiGI&jUXpXW|z~3r_@iqC#A``Z$I2)xyM}ZvGz3c*}ItO zEmtbdVGf!Ds+jJT7JUCQhfNmR-yFK@hzYJ-V}LTjow{C$T+lvXu;~aRh~}lXJWHjY zPxG8>XMl{_QEB!f(B8|^Uf=e%7cmFaFNKH+w6{qxkY{hZ^DwXHRq#fneDxGcD)ibH zW1)qVDX0d7w1LV_5!id)uN(5V3xQaNX6Z*T$zl4&fYA2oY3?KG|<0{Q@L|pjfpFrnV>8 z?v!o48ruHteqX9;Wj8Wspa!f)r}rAvi3t}!C7wbY$_uRB2AzaB&ls5&P@E@tJ&o%6 zw!ckBZ$#d@7vG5ejS69KGgBGhZo+#w@3Jv5!MRZc46mgf&dl>=x`L%WGuwk$OLuRG zYlMK}F?)Kl2*2_TaS7B%=FIro30mahAmth2#Cls`h#S2wU*!7RI3;q;LW6~dI3%la z4RH*x)gss9xD=5Kp7VM-v^~p|#ToqRYLgC6{FlT`JjuhHQN%ZLIsd^|N`kup4e#DE zw{TnqGB9Z8pYz%Ao))>2$Vv-6oH!s_B6}Z9MAk=2Gmyus0j0=ejI||jRKA;^l0k09 zLM4%PvHjf|IMoqp!?jwu|4RVt) zA!HVV@d-Haq3-;6($#7d^rR~aX`Xa-B+9z}O$XvyLwu=ToB{?pibX;=B3o@_$CW{@ zu0Xchg8DsjbI@|YAorWR@gmHV;DZa8pTxq`>aqY8|2lk`DHb}@GtvE7fUR~W0MC?s zu@tAk|6wHS!JS`~)@Y*zT7nV8rKb`Gt z!1td06^rmRlqqsvVKZ_bQxoso08WuZPe75MUcfDfPTA-7g+%~O$l1ldG*W1vqYUZP zQXD`dQYoQ7fbHbj=Nf36+eIIH*)22}>65SkGmQ3Nv?`i`!MF%(+uRSo;C1_Ltkjg8 z7)#9&c^t!_#gM;Xnh=j15S@Mj38z&->zw5Zex@^DR)3L_1_Lw`q7fN|vd=w+S#fT~ zhf72*T1`R4x6YZ`6A94?TTO^Y9qg;}MPhnwLNwZk=*xhp$ErI*dO#6DMP|u_IY})L z1*~(I0!$?kZNN(mzJjO|?G#Ew4+W$l2AGN=&Xb0=q9XT+D-FGXXRgoD23!;JIe-jU zeV>wrIskmHrnz7KQOQDQ0{sgB2_oNcz@!AB_wdu;48c9^as~cIpMrkrq0>J@kk*`>4=2|~xmG5eV6fKl(s=Y`_N;{H9FTbPoI;g2uU> zCo2JGwJ+eXo*iTOxhOx@?*QP+_$upC1 zHyT{10~)h4Wt}AqCn^{Q%W~om^)FCf ze;l9gf0!AIk#`OSz|D6D`nT=*e-WjH6Rq2ZkS)$|}(VYbJMQucofcAxH`kdpiuYs^rP`)A?G)^ zYZd)b5BX;wj1uLaQ-~M4pgW?#OZi8Q!Vk*4QP?s=NkA)6K)rkfRgZW2c1~9wTGsf-0j2paF4s+=r4v?!juVVY4|z#cM)b?>V5^K{i|J)bL_>cwn=8Lbv?ed zXP$~38$<}qKx52u$RJR**3Mi(G(-5Fk^UG9Tg_&eN5CLLXf0nzG3_@Yj3;MRKtYzS zOrlO0W$=Zu@ER_uB3^yV$Q%oFg>A#gRD#YhStG$5Ss1+FDNuas!$HQiVZ2H$gOlwC z#=;Hu&wz0%E}L8sOe&ZFnSRRd7F0xxW((2zBKBV)O{7T_BhHcn4| z6qs6P&qMTABRbSvcb>_ntBmw-F`lhrui~M{9IjYhN8;_~x?ho;m@(v6D{x^*%nsD` zsjlKs1p;_&Qa|8K;-v^2@q=Yt*yR|`$Hm#-_WRf_K6DWZaOYs-hGXA804i?u7SUcy z?Xidf;8qPMg3HS28-C{h_u-?GKp(C~su}j-Er7=k zo{v5?*IgqKn&~kZUfeKBO2B^TYq&Bp$Ac$uP@Y;;T*S`&6L|!L5(MLYAaY5yv1Eh& z0Nxr4ud4i3AStC=kQ52C0`S)vDF#QU=Qu;ibFLLAbIF7v3@S}yckil#OC8|m$6fRNT8K}vWr z@x<+49_$Z8fIvqS?DxsduSB(pj%A)kg&}4Pq$!nS+(g=7GRXtwfjf_HqAijI#IOs2 z>DXKPb36+rJ(A%0>uM=*aW?%5zSUToW(Q<}QEm#7E|=qWkBp027TiIR<-y3j50IS$ z{c%H10HGGu$x|^wAf+8dg+-^LleiIe4JK$)V1gd}lVX=Q;h;p1T@FPAK3Gkf@^lSs zFsp!6tq>0a^rt(_G!0DeEM1fF8Hqd9E9p=C1k9LR*?&N-oEInI;^#xv7y=T}iGaen z8INmFlN#IU4K8aKu4yAwyCZR*^Nf6)#)lYCPoBPtt@`vVgwy%Bz-!9M?&`Ah4n$@?O}uv@E6sA1rGzh*6;!WFxHA zFb%RGl~cxWayUGx;*(a60B$N^4eV~j^1jhbt!O%Dxz}9lXW3r)=iDCp{kisU(&yYB zX1e$Onc0$9?%*ef6crIkU{_rigFHlZ@Q@%Is^YsrF<`|!yogaQQ`l6u-bE2(_+*OJ zKqtX2;!-GafIaCipkBA>Zj=r{A^4-(U%LDDhkfGq%U1QP{Xg!${pwHL{?y0&)&6gG z-+sj>ZhzRb{c8WF-M3%+iQC`tV!zs-z5DhzqNR{{aG-u;}6o!UCK=?YRCRY1v}yqvRgMBE1xQD zHdZVvHM4USky_=Z)n$BPU+l8xp>>>{?Q!S=`vZ4Etd8bib~Ku;j%H_|zmK7x+d{(- z9Hx%FHF12h;{Ga;bqu@jBtAAWG~F?q_tY3hi0M1H3#>wY>~y1vPETXc!3QufL~F^70znq7g$Nb5aJjj^mLLv72&Mh!(nt(gsQO!0k}NBof80P`Aup^v2o2<5l7Q1 zJ#=nvWfCtq_Jnj*5wu6?K$;AcFlUlq!5=vZJbzkLH6cp zIDY~RjVLU#TwX1f)9fJ!ZpV8Fgd$iN=~p24M(eH&A=x)K3iPyE&kM|XH40*@zN(}s zzF&0ImDNW2H+X{}?BaIkG&X`^=7{iLpuzYZ&B(mif`{EsD?`dXF-NGuK8CAU#E zL7)>~c4Z|awE=B-vgYscp*un8%|?b>#Ax>PT4T}R%OEa?jJeoYH=z(uP|Li53%spr zt}DF^W49`7?Wo6=A^l>Yc{8<&(r^4Izr~yQ8j>$%UI>FKPcTL({;%kD$oScE3_{|v zu=SCig!E4--nCPx&QKfXKuVH!HB@ZcNMDUv6}g-F^VA5R&4xI_6LF@t!eDC4&U$R=rr%I85Pm01yMqLra2bGRO zBT-99@)#i+p>&U%)Pufl)0$WYenN%;esXSja`@cvdExVM`fzcCIz0FkLU%~_vJ2R- zOHY`R`2HAGASLMu`%!N+^Qp7*TA?47Kb++g2V(}}*xM-lUR8p9qYSRPPq!1@7yEU< zFj(X;ZKeQpR^{m$DicugPQkVau=x=49U(pkPxJi;zrv=70Wqo3g}Jz<-T45oe0eu~ z)e+HHA=7My)PWb68hV39g5L-P+arFflxRsl$Jh`TOt4p3T_D8E8gVgJAgnW0WVDT%lTzsk-P8;|3vt-G zq-Mzba?%SpvfcV72S*sRLK^bjsV>IZ?;bPt`cdm$WP~Dg4u9_U4tA9uI*Z$9Qo zxlQ)B7kp0haap#P`526>ub=1MbIMLQjW`04`8R~6D}FYwf6#1gS)uT zxV>>u#eSacEo%RK+q-h@=iA;7HhjMAZGW!M_OSg*Z9zhx+tkYDipSY_<&3Dc0T~IO zY_OI#zzt{00HtLpUSnGCa#4dnQyIA3@Gffrlv1_loF{vpiSCAnt8{7$41f1jCV~3d z`cOl*Dw?}#J#M1bqh_w*iJ0|x12#Wa{r&bu!+8SK71)2Rj^#q*@nva-AH6)Y_Ue7po8u+hpNr;B8)__EUT?k2txn83x6OV9 z8P~%P4n=F`lr^#JxozR$Ya6DlZ7AME4=0?Ogg20!#RU-UWHuNr6CwD8XTM%l26vsa z&FrjlbIK;OZs%1O;p7K%^{M6f0#f>}#Np9wJ^HXQW<3IRA@y=~8`Z9%zAI*RG*}}l z!!7Yj2qPD5gzV;uZs#tCzaac^PGi-nrNyW{nsSQ6EyZYL<}c0MxFgL}N0yLNUP zOD5iL4qt(xj^*f2p`?qeu#KDYVuRIX?}MzI4c5EPKSNx~g^S^Dk&6_m&%Y|4pB;^5 z$Ca~+?6_gE;;*%#DN4^Y4AgV`mLfayxoy_c$nZ_+%?;KjBSSTEc>Ag% zZaLCStdgxaGuX+!fy>m)1);cEZ*5I2Edl%`;iYdL5Jpm@aBfVAc`F3Gf#bt1;bL@j z0=nkhPg!r_xbf()?yWc`xbiBC1zuf)(mpf8Rlo4bw4PA-1cs{c>EPptPt%7*trdbx z8j&cuMH+IE%JD!cU<(Jp!>o{T^D2#6t3t-YRYWEGwvxWkC=4TIMN#6s5RJBs3yfu_ z0At>b)xB<9|32;oYsPA<+38{pFvP=}RT^s`&>`0EgqHJrqD;Z$HvD#HH;D4A%4h=w zN6v2)zq_B{4?qdt1Or-`;nRUQ-VBeyjh^9e;ZkP!ioRwzj43XaDdttBOmZ>4Qud@M z23O(X9d`!Mc#}qB@9B1~UMDxZp5V1stZPn5a>OneLs#(AZ55a}d~yRA#iC8Q?Gz0~}_` zr^R7lzw3j)-0tz0L3acurVsw|yVupkT!@J+K*2{~=QNh|pTGPoD9A%U&0pTaqO`n**Ja9~qzxcRB1~X}|7){Ga(|oB`9fK8p=rGjX1r7hM#CSAO?fO@3~j>) zTw<#rH$|=W)-wAi-2;lU2f;_h9R2}Ts^M?OrYvj7v?qoZe`p<~M5ps98?ZU-AmHi0 z)c)G|kGiu54S%z9GaHCa*6wSqF)vP@&7db`Mv-EXHa-xw4kpcZhZrr4g0XJs|OFY|5^P zHS<+7JH4Dw3;1XGn z&6Z*{Fh=Gzkc$gmj(Gsh+^K4q?)#i)8EDy(&SHf?n2Edju*2@;ECn;PfwqHw~2bs8!RSU-=rZ@{PYxl{W<{UxSHM z4S2XJqzic0V!>k*(8P7?VM~7%Ere4alo&VM!G;%}T0FYWxN#`kUHIJ+cqAt2kywiR z(I*%;FfC!tT5= zRBWK-p}^fPmzG~cgYMYR#&wXM2dUZ$==rHUdLG(0Jr6CQ=bS7LJxQAWMgtN<6-f_u zY36$RAAzJh`b*OJA4GIVjJo6`$^A~_B?ui`R78%X z&%g+hs8@K=mPcVlg!3bqduh%%bV$LtBDVlhRBHiKJAH?$cxTN0=+wE3#a z>h8vns;*HwMR}zyG`at$%he^;hq){+(NQ zTfeU#OoDO6tW_~0xnc-~6|ASiyS0k4KKqkl(QIurI}ISN1CyB+$zC)g zylr)HVgf|Eb_mKH^~S_$Hh7wF76r0i%ie)F&!gNsH zQ1|lHr!d@db+{a3Qk3|2GdoaZs^=i#KoW$%eb~5pW#??)K8^2z1Cy#cm#F+XSs9}#hq=n7bvVoaD{kFkZ|VOoWklt95UIJx8} zA$zGu8HyE2m8`FcSjnA~S4Sf%1ZxA!k=kN-M~sE*y|TBul{SLIh3qOGmesrYM)4!^ z1h4LD)Q#`Kwn1fz(*Z>LXP#4)%gQ|XLjC#vP8y$GzUYottIH1y0nqf92f<}qdZ|J4 z>;8N{`|V!7_xX*GCI&hwgZX6GSoEYxvxIDhF#;2EgJDW{H`;5kp|P)i7t;UmE`&XJ zHiNmwUArgXEC*Z{n1I6#( zK{O&pDmHv0RM*@WJn7Kq>2DOZTq6auOK27LMqG*#aU3*EX72nL3>7p|!2D1eFjOom z9gBX3OVItZ*kOkO5UsdFd73I@6dXDWu|)9Ml`N?L72wxYcXO7lZ}jb5%0BTT_GijI zvBFLum8@%@aPe#6BsuiM$1hPP0(W4cAb%D6S9`BkissG%MGyJ5t~J9SQJWvc(F3o} z)JBR21?7ArMG-LT6B;S(y!EW-B>xV_=73_)svMtZr`X*@ud&-f8eA=c6HV(%W*iX8 zo9S=kCR;y==BN{JnVQ)iivNT&olUg$HPffcOamYs`Ym(q<>!H#N82m5UMCp70=o@S zUWnPPz+UmflM2IE0RvopBI^ud$1eid(NFzyPkY70A%*-0i_S!IPu!=6&7!dv4)g&6 z63KzM==J14>of;ChI>YuK#Z2D|06iicX00Qo;c9SaM7f`mmEmVPfyg`PwLqV{xclJ z)f@kL0Tb0tzSIo zjyJ%Ah*QcM)`JIKB!<#^XqLV-)y|N;DJbIIUB5pt< zlZuRVmCK4|?JX;M8?))l>pnmF=WF)Nk0v~(@ckjyA^Hx*@>hV^h{a?utV2_C+t+IQFr@Q(zDn{-J3-n?1yQ zvU~V*+RQNoW{yKVGY1YmX((>TB5sebfr;ag;m>ux$TnhA4iFW2ueJXNP|F;SUEMPC z$u|R)fe7-}-_OLp@d!?Z+`WCnOuNd_p7xCcs2n{G>14sW?S9xduHQnPn6hs)DV^v> z``K>=>>H5-mCAceT6S&luBDAb3>;8S`8JO3#z}=1j(0HOu2ysou4~qg&z1hglgzqO zQe%N)^bvA@V^N-=quCnR2H==GI;NKRep@<_rlU7Y$6bPppPr?|l|S?KqsrdV@pV@} zns4t=LjxIQj8Ku;Y!w?Ba&uRCoBKWqJ{K9OW}tnJP-s6a9(S!(7LUW^dssXU-d@7} zCd?xFMlNOXxb{sC32xYl@$!|HzQtoK8mD4(-8SHs)>JBk1givr3c|tS@oiK_a|9D@ zHMfdBv>tuxp%3-#9rkQh^|V0MyRmm{0?z&so8?|4yr|| z2Hl2Vs6i1t+Fd};pN+j^`v9zdyR~;Dk}gU2w08(epY?vpUfVksfJyeSckDbdVDE5g zyE(aA+U`=cooDfQJwV%;p0qtw)mT8=kLS_0GJ5n*+x@kA+}69*gNNaMT2_yIl2#^< zA;-HUtxX=2(KDz5dL?P@6+Mz}&Lio!W(i66!|3tUN@eu;3cj~beXj>LD8lY(^!U%$ zJtQcgZJz*t04PY??`&1o?!o9W302Y#fitgxMz@9281r@iAa zkI<2!*&}osGL414z2onAM?&912-i9=zPkdf)))0@@4))<58FFfhc+{GH-PuVvYSfXpd>^ zfB=`*3-#;VRW@UM;y?}$o%DeVpYrJo2Zt!WpfE%No$Tcu-R`7Msttx9awCJxt> zLGwnuL75=h8m4U1<_x&(Y6A;Cf)%1I@k7@-;lq-c7%*qhrBUt2lx?If@p8{Es8i7P zjBRKE{;+Pxy5fIwR8&7NWA_W8-vrA3|*5@Dug-VG)drvBiq z*k7uVssw7u6JYqMS!;iYumltK4B?5@!Q3Cj3E~67hurmZswmH4pKbCMJXlAW??Hbl z+r=Ra7shG=B3qLfQq#WN*FTuu9WJWLuPWcXcjfmvRh6%Z)wL%|-di51l<-zCFme)l zXHU3dGk6to{)1oU(Od8He?^yzcm2VaTKm*K%l9?^ zi}rH<7lp?6J^!pMIR7lH@AKzt5A*-Sy`8V!&wn-aZ=dG;cf7sl`qX&y%q{YJp`YFI z`|w0BqFWi@@2Ttnu_DqwYCSCx_SO^8>=zrd7nGT~+&&Hx<7#?3a)JxEtrPBlX2fGqX8!DgZF(7pS!r=*@ z3dtWRK0=6rpS^;;guE&V7T_OdX3qqdIkWt7D7>)dBI}kZhrPFVE)pl}&INho()y{4 z*RvJsB%DJJGX z{6_)}@tfTE3v+YkBKKYfNl4~O_IJZvYKODC!Gbea zcHnP&?J^*^%J;zHtVH^6?TfTTruE%m9+Bm#{YyLV@^P5_u!(W$pFzI5D#h%Yf--BN zeD_(lU)@XlZg{e`gH56neGCJ(5d$ZuS2bj7>a)=@W;>pTXVEO=XW)vpnn==tC*)1F z5fEXOnQI|p+8d8x{1cucMNtGSuPU1Quq6Hk{4H&R%C|^-$&E-C_5$bDz`w8NRb+S$ z{~3xyXgc88<*Y?5S{`U%5)>Rj!t)`)z&=1;BA$g5s$FTMyKvD^_q36E0~g?NM*3+O zVTcLolYnu^>VuTE&mwg79k}vce?lFerIF@{zq#=G(Fid313ny^EB$RGcVT$F)fG1G zT`?+M$xawI{u}-lch#jU*YGx%!e6WFp&v9iH!t0F)b=-*epoVmD;l+)iGR_|jx9Gw zjU8sBhM;clrcG;XdBl1#Dk(Gp7!w;2u*?W{(kp&49vcg5okQ?c?T@3`Q_G{HPDNF7 z@D3`4G9(Z}XEO((2=?>nZ+sX>64`f90LPP-z#jxx;nbE3IVJ6YGh$W1=ksA)72&IH z^ULrfHV4U!&BHU(!W<&WmUakrRZw>z!>Q@4#hNAp3A}~R+2hyB94S2bZAAc9^!{dg}|^9Sl%Hw#Yv2@T3AkSfuxt6$&{ z+GsabRw~CQBDRR|V|jj8gU+hM2o7i6tTtq1zK6P0q*Ki{33KtsYwzHT0=|g#++Uc0 zIxP8qaV*{`co=ws_s$4BBIeJ5+f=t>_pCtLV~r{(h0T{6;gY#Omb^@R&3ZsZ%_g||9# zHLc}pT8)!lP!AIy1s6u0>+UThO=zA`#a^~+STzx$g^X0KW>U2IX+w3X)G+l)5OMc)`+{JI1s{pn|Qfq zTQv0%asUp%Ao}%1r|cV+bbV%a@N)Y|cpqkZA4*KjT`6C@8B)xO{c}M&aQ|M;EJm+em!`UL!p#Vb8J+^U*PT+rc<9DPIIK z(hTyg+0c1#xOQcHLNv9dcx<-xu2|j6VQb*@aSgfAx3J~tl!0j6%$6?4S~CJ!(w+eN zX6rYC$t5sPZVtE%p2|?HM2IVri>HIN)ahs9(0hhSd_2d&g^cxIuKR%Jf>5`pXJ*0~x6!;gO1R?`sEJu6c+7*c#c_-k8 z0j^p1f-#5dnG?q!;D3Oh&cLi_e!8BQdHi%Er%X$?{pY7|ALQ}VJBKQMS}3JwTS=v4 zOu{y@t=0NgGtpXo+m7CYnF;EkFohP}n))pV2e*y-Rx{B_`nE&8ZPK?~|4?|UzU@-C z)AX(4rmY+epP{yLg$eLfY2IU|a@Gak4r8fot2B?>3Uw>Z<5oJFZDsSpRRwRP&)HUi z1h>-XY^y+mTj_JQwMc^?ea^O)>09Y@wzXW}N}sc>3X-Hi;IZz(>?ta261e;&Kt{q_ z0`j_Y6Sw)CV9%SO z8K}}*2e<;<;jI99`-9nAIJTMw*5DG!_c>m-%G1WOSZ=XepRrkJ#WSXF7pz4V!gd*3 zC7)_ZgGl1;UZog@cmY0Rm2E7ZyLG*MwaH#tPC|jRJ4VW$!7OHU=vi+6We^yOwUPro z4@H4C#4Y~wmf)nmnZ!b^`UcC7J_rOgPQ}sk4c2zp$(mbb{@%48fM7Km=afE=^3l3? zjMQIo5y335`ufa<_&Bb=Z2%U6B7FwgT|R2Zdu})t0eEZE>=hh2cZ?-*rQ&}RawASb zOnE&;{WW8Zh1c)zZd2|h&gM)Skaj@s$t&`ie^>yY=qf~{{rmIicrOp7X<{BS>&AWF55`gYu2QslgZA{f5_ zjNic%;FrV-uCGTfS8G$a`zZ+?bQrrK-@{kUIa7dh$FmTpT&0dHM`|_&oD-VC8kCfI z5T2qFbW+uc|A2>NAxgw{%nI9{#AwAP(UA~C@T8GtAYdtCj8Xr{Clxji>fqyftRL;P z;}^H{@q;^Jywi!T2(jfN`s?Qpsgb^Zf1oDf`ZIswu0?W?v=-7#5G3mL(7NfZs{{$H z2+QHG+h;1VO7MWg`Ys42VH8dL7Pgf}wY@7j}a2pjaM)yBg1ZKY!>jP$_$*!H{j6TgJS zK`A;5ie^XI5dy}J3{t-u(EiSPL5DGKAsJ%S3W;)X=hZz1+-uk!!J|HlhF$&;oL{wY zcqmt4UkYCx=NCW@U!E=mcaONR8~m?!c41Ot*^9Yt<5tyr)4u1gSU@m??dY`2w>cN0 z85LxTsniXhd;&aj!vu&4pbwI(uy2G%g7XW&80a-fr4fxAXXem9tCT zk}7$-L*2S`Q$$4YchhBZn{1cDX}$ODYc$l(_8%GuEViVxssK(7b9msDiytJ5szE_| z!77}C6J?J{3h*w?C_;Ng4${>Dy01z8lA~}4Fi=4TK^QS@`y9EQl7_&mA+NCCq(heG z5K3Ao;18NP*q6ak9!pi`*&W~!ij(l{m^HjriVGxJ%shx&cKXD!kGqpUt;IeSYwWsx zx!poM9=2}B@a@6Dw-2kg7jiky{Dj{ZA}~=rNNK{n+K z@KE?kEVs{>+JGy$g9qcMfeEuW*~u>wkNap37UtMUW0Sb^@d~x6a+<4wUy{6nVNp;Qx`p7!vw# z=eJlA*u|do?22QM8D(U4J2SiEg)Ti)4s_!5Q4DNx{t68uwm69zZf}l&9O758jeS6Yc*7OW9%JGRvb5dG~6vj~v43g1!>=1Xi*Tp$%;{?X~OUw-GdHmWi4bJP9P$a&@-ka8i5?{Xed$*??0$ zI)_A|x~2Notb6K;Zy>ho+1RL>>2JnzgKue=^2O7$lb;G)n4J1a!S3*p_e;?7i1zSU>n z4FjkgM+=FjC??VD=tz7R6}dFJC6FVmz8&>TIqCQT#{DTFJL{?-xN82RONJ`%%i;34Ou&!cHFWDo!2RiGW)GE^`&;g^g05s zF~jlw8b)1NW@L`w$5Rfl9yxwuqgmI0t@Ik>)Mc3I5Ke3v$d}oMdGRDo=X3mcvby_y^F=sVW+m(1WVvYWl znOY8`gnFHLNvz;uR3+_Pnqw?n>GK})A9>nNG_s8${Yc$d5w*IfTGdrq5;M7S~e;wif6Exw{a3;BA#NFqq_kCV!z3OX8O%qK51b%gE6= z;$%Thcpl5%UpZCEU$3;c_^wT=s)<-{nft6~StPc=GS_5VA0yheZYOeShF3%K1yZM9 z;J4VfOPwfW@@AfVL^&NdNqsY|^P6&x%2<5C;cZXhEW>me?qJq2GKaIGx)(A0e3IRl zda&7i27z5FCsp6M52$*v0ElltnY+$RX`@}GzBzSZRgAXlg<`7K$3kvWNf z>ED{!rtD=#riou;E;4bcX0g`myO`rjtO1?s4pf(~Q-wasZT@8$Xa%7=B(4I6XB_2? zYy#kTpUz=^4VT*0063#vc)j{B$8eCns$MycNLZLJcQkKtN0XS5VP-p^FY(u@kh;>i zjAcc~c?Q&w(K_fj5672WhMwj(*3z*pX~8AIpG-R*#&SOei2@hDgOb3vbBcj* zbH7A{Yry$mT*4~>T{!t+eSAOsJ>AIg;9Pu$BdGBi8^Bj3Q0}JXD>w$#v&BE5RF54A zHrh>*ma{5nMOvUPm_DO}o{m}fh$LmV ze}L4^iiDFhY6&>1!e7?PLy~6U1ZG7*=6UEuq~-d`c2s0!zQw04>B^o9m=xM>Wk*mmt{Nn86duuzxYhVJM<*Udwkx`U%aRA#`nU>z+FUv zGmT`An`)Pb@utH5+v`LX&3tm#D{looI$D0k9Rak@*a1}&ige%xri(GSMSywGYYpjm z=$EO+HkvyhoIqhe9?39kTpN!at><5(S4SgrATWbRYmsm9A2Z=sZ%gh1;1x#ZPx!|9 zf@pBPFD}Knf&habxy1Ms_I%DIVEtwmUUNvRD;_n_H@tuK2I#Y#gX1j5Xo0^HNbK65M*a`+YpPpsWVkwj z9O4I!Yfyp7_#rNPIoSI&c97yBXEYG8f382cmV-+kGiQbvJ%F&}V<=#Mms zkST@<5k3~pUIvju?ZX(eDo^T1`b}5m}It zMj!`RVI%m>Hed=Fh>_WWzmb;3m0aL}FLVSf0xiX&OL&D&U<6g;v7_IM9lec2ox~fu zJ~h#)8=FLAd8S8q6Y?+eAj3fr_JnUv<_TzVFsGy6BiPf(ci1X#gwIq+7d4+@hxn$# zj=#)Sb+$f8Pi)UxMj>+0Q-b)f-~pE9_<0SPSL1`i5Od-`NEsz&8=h;voG3DnMm9)0 zHVADa8}{rK9NxSI6!dbx^qc)>$I*XoYKoklSTaQ(ao4vy@DvkU-FXANYRGHgw}_)R zrq9HpNcmuHd!*JjGC##|In(h++55CqH_4t}N{S=BD zlz^lv&Lljk*@pfZX{O3%AF){SN;&dfiA#?InGSCu5BTgW&hZjcTR@)m{rfpm+P2Mc zcl|rEw`sI{Jc1lCL@oSO%fzUu<3_X}F4@br0`mrNEEVP*gDQx5q4Zn8ym@$TWV-M- z(sEDbZ}5we=Mc+6Cl~^pyA}5V2Rq=Kpjw4@+FlcJB+0MxozsYWz_fY#jq9e6k8!rq zK_nBb)Y<*9{;+L4bN#jL>)ut%SQ5|Sdh}D=?ybK8N7_ZZzwg9PkuyN% zPwfIsdu)lq7l`^pwhQhQ;LH6z@P!GaK1+XU3_C;h^8C3!%l3wS&h6Fq(jLTOEL{DM zpV9FRL|jc<9k?{};v0f;SUxdP5>pBuVXBCku@6V~L)yb)*cc`8S_RR7HdvORS_G@46$BL+ym{k`Mu2Z@4B=M!DpFygI5DqaPCZRKonMq=dqS@g{ z42A$fN^;ojaE)%qb5|xULqbJU>vc-7XO1I1oKiRC$IC!-SJUl0g)e>mDfGjcw~X{f znBtoDW=8lK>7A^5l&Zl*L+f9SYEaW?rW_!LdRF#tTw9$qKx2og+C0 zTfO`A{e0`r8_r8ib(bX0;8f4Ui~8Jz+aebBFpAIM^l&ajV76F|u&kR5#^G5O{<+rP z{$530Hac=99OPML3WE)y^N%8r*B4>qh};M`c+sR5<%F=cLOh^#|8&$Q@XjH~UKl4I zl*@1_5F=K#Ga2{3Y%KdRUp}Vjt9fjamwEorEqLPc*#7%JPhcWL6;Cn%kzxNEPXfmz zS3LNK<4Kktj42UmUax(9tQwQ`szKCh#WeO7QSv?%573D0F|3j};-ay{lW}SIV*sTJ z?0eAF-&2_cfdH{+EQn<50V@VK1!VG}( zkg=!DK2G(fM$ykSvB&i{q@>N>gs-s)MLfwem;kW(?L5}!$Fb~@#-jDmn89{a-3*QX z!79+>qxcaBC)sH%Dr&CVk=QiO8vO^pU^q!b-A9R6YG7pg7||pjVl0+`3c;N?ER3HB z#FNbW+fKxjtnlJVF5!LM3dECisAk^r<4F$l^x3J?Nu0uQ!{yC5n}Pf`R`-UH+9eF3 zq0Qb0eWJ+-Ou_!(RR{w*n#7Y~RX9m3_oY){L_EyzZ#4B5<4XPzt9z4iCEx5BS8}Sc zsB)Oq72nTTRKJn+#edoyu3M2ki8FuW%{|&5&k< zv^dmFi9JFGk~ov(0SKrVxyI)+5()ejDT?N!#RZ)!m3hGV11iV*`OT{ZhKB(|bKNQ< zL)8PHNDqdi2efO~Gs0d7FhzxZV5B0?otT%HY!@*N0mI>qCM5*Th#?8e-Ys zR<0ov!(81ekKiptN1OL*GnuhwY-SaWN=jXYI_#03WpXp4SW-;>oig~ z;vyJ?GKRB7V~ng|_xBNm63BYM;dCcKf>2t`+~~uhBNY#xcfq_zgPR?SgK9<}8;{`f z6i8>b{Q}wA>i89I1O-hp&KPjB=2if}{?TrJDIO5a3{!|Y7vqntulu5!vqqPw7HGL- z?ZKFp`0=Apj~|z^!=r1jJRi!XO|1-3X-A0490^e&2(MjSQqs;#F zV;s8{@NyA$yTt|v8R?<${BwKY`G3W%ozB+;)HJ#Q>_Lax<=2hjag_kt4owWy@7wt6 zY7VF(^^J$0B;G<)OWHSj0VYZ*{yW8BaDoSKBBU}1Ezf-;W#YR5FdIK<{5spo&z1%rtH~3WGZ|UV< z*%KTDn)zAqTZK`}!#f`?YN|Bmm_hhLW-b`yGLAV*0scHxROoc+;ugFvUGy?C&j1Ng zcY)g_bV??)uk-&Wt_maaq#l#u4!=iMn#|Bz9(m!t z!j_E==5#my+!!D)7U+|?+7=*Z!9Wt5)I^t2UfeBOzQ}l%QwXk?KcmM01mXQ;uF3s| z*Et=Cxmy4}nQwM~0Vs7I7r9(0lo;~*b%G(A@B<8SHqn8h7i#t9^OL!@_X|AdM1Usi ziwE5q3c9d{ZWN$nzL5fM;vz7fE9s;E>qCX}0*v2W-mZC;=gA!a^;5ejvSj~wMmY`m z<5{Gj(IC>12a-9sVJ(!{Sbk5y^vW~}nc6;ITR|^cVa1v$SJ-uV0Wdh&PV$7bqg|JG zxQxSI^0YYAW^RF{ADluY1^9Me%UeGLW(ICK3Q4dTYdMx}?Jo?5(b!zKJPrfDV^8s3 z9?u?7Zv*a-x zp%5Nw&J5L_{c0czhL$B2+gF0ZoUB4RYsd4#!RyhdJ;9InNz~H=YFVt{$$AFdJb=HH zQ$CM)GUw6l{(1l>c&^72=E48|N0=~A{`%y->?v?^Oh#)2cGf?xxiz9D?}7O9x4Jc0Hj2BBq0J)oh0Q^fqX< z+GDwIo)TURS%T{!GS^IpW^avX3e)Ejx!q_8EH$mCC%tx6Y0uaAj8c^1s^f1+WdjvymA`Sxdz%+8qD8q1xwG5Y7>V->u)65Ni#vD~Q{mq74C!;r)Yff7eT zUQ_#g5eKTFR$j&YO~}$z_Yp%SO5b2VBXwPgjrG=rw&%Fyo98EayD}poxjKhg^Fje+&tdneUiVpCsOcU_F=g1(D$wQHPY9CMPNRf zVF4w0n5diJL<-l$c%qrkh^G<|y1&zplYJrN3KX|PyYuXK^*b=P_%8PQGZ1=F73*(9 z%|$Tnb}7HZ_)V~LQk5ktB4n+FLd(dM0>*~im2iUJZls-k2m=e9trSTt)r@11>~Qj9 z@tgk`e)AswJ0d2JDE07VvfV{Hss{ zXPn-wRWa)}jRsf^J=BB4|2)=(&Q#c=-Xwi1&wUy**YHhdZPa=!Y&~nFCjsE*)Q8>H zdLvzfYaj@0PVq0G6LjZHpNVJT)Zoez=?XEaAvddpAp|m-tw3rc{UBLDwzLvD3L|rm zkg!H)Mvnc259kYi9WGd_at}2!4AF3wNbv!1$Qbxgg+PsY$4(3E#Ypc0g20f*D2ez{ zuKm16Q6qDR;IC?v7|AFh20#R`zl=qI{ngShNoPYQ?0V1ATR@{OFg9vL-mk@o94Y)y z)f;Z3_W`Po4+V-TH7m?=@T^VmC(RGYgWpIq=Kc2pYxQ7y+uq$iHA zkvUZ!V8DKj8VGL0+KMO~fkneBwks81y)WDipmt+O0No85t(BsFbnTUD^we^K_%i2d zfyxEsYvdBz@HUjFO$eO7qKvB#SK$bpZ2mLS`{SL%1=-baVs&VAyQvopxArcKi?_D_ z7B_AS+*mu0peD#0Zehldd4+!$DC~^GM#<$jJ*azc2>S&1`^K`hc~mWa{b$25(Iw~R zdSl7QK25vyUb9vxK&To-OQLq@%jkKS-FsekeWhsRai;78$(!G?f6$=xv*E|m#i)*SAr3ol$>&o19-@i&uVDQq&urisL5N4dLc9aFWOC)03e$QF ztdcv+281U>vvnri^hF}gUB~{>d%PNNWAqy&-xsw&z4dpyY$eg8OhrcdF7Ic!?7tOX z8yWhGb7{G_vJuP@jnBnn;r#T|=K{@g&D1qW6NF3P%PB83dM-ARM|)1+5~|Q_Tngt` ztPihCrg?hEN-1IQ>=)0qflDZ278Ha3{;NbnS0ke8HWtCZLbUPXNK3DN3KHv3IXFbv zdb-(IxvUg-(33P9E80tq;kZ&c%D5WDXPBAp_yOXlWuzZLKNtvwt^mhm0kv#=j9cRi z=N9!Ax8Ug$NKH?>!__e%?2(*mWOi=Q z>kE;tGvgv$z#o9Prfr`^Xv#Zp;4wERJOrr>0%*f9!6lg zP~WHDw%xBsQDGfd{v?~xXdwR6;)rc3B!gjv z@&U0MxvL6Nk#&#KFWW%eYFbZZlyWFk%-QEmoip0hK3$M=0PV zH~aL5f#`Le5o;Tqri`>Wo&xcbC`QagD2Y~TH)7IP;>l!ZIo`!`r@<-fF(b|T5aM)B z@mOQYJrXDzvo<1LN9C6f$uK!+mFlC(W(A$JR{;PktA}!QI$Y?#r425spt& zAd?hYP0qO})PsLdg&>ZjRaQBcG>Wg?S|y`n6M|u#bMPVg12`ZSvvoLwK*S&KNX-zJ z)(~2*?^2qk9!)-~FfL|UC+g1XClVQ^9u5h+Iip)&8Io-QI5wqsFA6!E`lhD+*Y5g9tyJ6)J!Z+$*H{N2DBt?2JIb!ZEQS9X2iL>zfF z37S6v39pxcb8IN?mmGa$PzPY>O){w0W$+b)(mYAHQvuy&C_b&e$Yf`m>7 z`JP^FEE-^>D0AX$ZZowMXm&c(Aqq7?(IsZx^YGkc$Flnxiw+VT#m)`dki;UD4&Y-W zeV_aOOe#Vk&$B>1f{x>5qruzgIFGWWi~>F)d$<6JAKe= z5PL|J4cUr@>{L+e?-jK^4sK2)$D+3YKQvC*ZKPG4y0FSVLM~TgHU&Xtu9VmxDv zZ#I@}rpPwA@*B-qIKIhon$MbY*mnrYqAo?X%(Y^DsHk=FTAq?WW z_yNYk*&V!2t*AQZJXo9m*u^_&YR*W`sx68iiNo2y*OFq9RVjW2x{{J$DG^qIe8H>9 zJN5ttZkj$MS0zA1^iH2&Gi5T{6u*Veg&_Y{dYoT zJ;SJ&D4BEo5M$w1OTf#j1RnCT7uG6xtS$ocG#0yO!0gl)(e4g=$rXk0 zoGlGj=msO!>ac~=2sXzjOLOTHDL`O-W_(HorWoUec81)Ab|9*Rcn;qY5uBPZJc48Z zEvmR%RK^QDVYRUY$HL;6KqL(4++gkK{F6P>g9GE?^_?Td`D;Vhsmoo8H!`38aH;#i z{C?W_Li(>rK1j8Tpo?KFa?u4xa?)O9DSTNQKMF<*nQnR_SQ=yaAu$Gp?Z!mmXt(Zh z{?UAuZiB-HHQoVe24jr`94o4D8l?SUJXmX>Ja)eA22N%6ziD#6S>=86kB)bNyg}U6 zp&PVOP{QSQv{fD>eTj00as6+TcuaQGD8;l2!B6r&59w#`z0ajBT}eY6KecbiCltg(nvPYi_DGbA<|36BLB&?H4W?k~-iiRxOo633jMb_M zk7wX1R8-J^@B;6z#;)a`ZvAyB(*!NxJ2WQ008k?GIZ}icfiV8YWEyYU^_wOWl{bz_ zj;<;-u05gzY0r&?rBxvI-(3jb9M?(Km9Gi>RQq-K;_+%4)x~p{+t1)$F57FD8|gKu zM3q~D=h5tU{mj(=<-IyFjJS)`#{h8vUp`=+X0xfhSiBeXndjJNP zMw$&;j5nYN*JKp=28z@o9sDDBW9>}6SL{%uMQN8~@E0r$)Jh}o!#-HUJbyW87;eRD z=!hVfp-Glc;(-)xL6v?3N8?T(y`rYgOwF*15DuE0$;G2Xd=`5X7A>3T>9zkXo zaJc;mzIrVwc+?jvhlrWGt@2(rs-a;NEK0BEBOWJ*3bEk=mCivK}55P;>!P8%~#FlX!c@kRybpmFfT6t`6w|* zP$Do}zrX{@z~-UETs#ROG0-5$z{Z^WF!3U<)(R@1uVWy1b3ok=ATuRiImhF%+n&Tt z4M6fR^j`HYWc+;P(I3k${W0_kpkEE`=|#9~fE)=Wlj^{qF({z@dlYK08}DNZT7CG( z;EOzLy8`chY#WO^a}?6xxaehMen}Wyya4VMUxCdWcnM_WhpN$<{m%Iy%S<~Ci~})( zO&RIir4f{=*oPr4ZgGr!}5G?IfMIiM&_EIX1xfYn=cnzx*mI)klq&_1TaBd6OUwAyP zIjRxCyf{M@R8az8S^xynFx`t{SdZP>Xzx+^*m?jv9VMObqiWKJ|3y-2Bx{x$g*W~g zMf3Vpj%s}-lo;lJ&LkMd!g9UFSx<4j#_(fDO#dMJy5GUChOF>0)L0j8P}Z1!63HKPj1!QywMyc+h`*tW2j|xx%+5!Xa`yV@0nz;DjkNB z3Z*dz@e_RbE(i=SUIj+j$ovkeos>Kq1krb4iq4CEV2|y{Yx%hE5hNF-2&6spiEFir8VnG1+qmNZ19*Q^(cpa{t zTzPcJxOsJGKhR_1Dz5&MFw-}z1P7zOj)Flk@}o@={^i!i11|so2|@$wB~IJ|m&m{@ z8tJXUFXzBJ7_VU{XmkrXk81jZmJgd`ItuTLP7|_YjLZOZRjA#_yp0af7QP+79Nu;e zm6@Gko6IgJh=-%E@kDGx&)E%Ig2fu`P|G(3>-ZT2pM1P?U}MY&`#us&fC2mppOG(B z)s`M+WR3y~`1A2JA?Zo|LJ^$A`_LcGpPF8^u=BZ~#9sv^B518~2eRnj2*p266p>+q zhHPo~cgSIl%oChUAXpM@@t;^koh#sG*At&M$7z6eb@U?-QW z$p`YYm-Ylc#81nu$upIMTt0b5_cx09weONi=Kha#Hk{B|!ASc;!ACa};;O`vj6K9@ zk(J}@2V>OCv<8{GjLx96Q1u!iy5wW<|W$pCj6)Co^0y2SoayG zZjdZ`uj~HT(WraBIDFs*(+-39lg2=o*%a^^);kCV${E3`7#?vwM=0`{YKNu@^D+;> zQD+&N$Dph4K`maLck#_onISFAJXc6`0~6j!fb5gf`s0JM21GuqtahvVH8(wd+@@J^l$2bws2`f_}a6L>v+dgI{#Bl`5!IOFl- z=+lp5)R59!RtWRs@>1Tb~(U~BeYsvXPrBDAGN7CFS42GPa_34_Q z^=YH;|0w!&r{8^FeR}ony5tYjr>{l(JJqL~5Bc8ubdIUJRek!mtoujNr~d(9{H#wi z9*Zc=A3}6;G~5JzdbuREqEF9!$t(Bc=+loh`536tr|;l5=+osNChOBF{Ba+ko)}Gc z-R{c0JD<&U&+t9sLNFH@>5^AYU-m)#B0C9qf$>7G6RuxRb_(BI`Y-&yYTx()#@#*6 z_7m(09D6X=?0-g9gktCSyWWbt$+^vj83ace2$p=h(nhtHt+|xef-@Wa%2dZ&Gh}PL zj8V#7QrFfK_S&NAY*|;Yw_>m#^V9)g%iSed(g43|aZjhq5j-8m`3T#V#^DG~4!R4> zn-i>_hmNYxB=|C2zG0!8WIcy(Vy5C$%)+w?nlM3MZXa0;(;a*?uT%)KPzDE{LUBgp zg%s*Gu{)HcMGLmo)KA9_t*!p&MWTV;_YFnM;Ie3+7|T3Tt-F`Hy|I8rj<+IbWzDA{ zXmhZk5QS&{BG})7-)8ta5u$NBxXOM9R-+P>5PMXWosFol>ix#FwC0zLp-B23c~1;P z>ybd@y=CJLdO{`47ZHy0#S&KRQr?>Isue-xf#=1=uq--g@M^k?4PNRx2;;aYW$Mz1 zlBrbd7O(+25yHSSxujaW<1sm5PR^yUBXTNahV+p>PLKB8$2K;m5R(x_>*`!wUPIS| z#K{O9*vzC=jhm`G=oa(qCZ@i;g{-<9zg4SiG2kY43QM@)bfx0ZSE$NZD{ zfbR3UIr^`xxmN6L^>|~S zs|-svIeC9VuzFI*xWRQs2@YPs$@JSyIw=E#@5c0e-f#o=g}L|^ta&QHA{w9Q_7a#n zT#&+bJqY6(D!LvVA$v{L4@(pJ3Lb=AQIa{7UtcJbY za2n#qev^?;-B*tw7fOJ>UOd# z<>6P&LhP#*f-~`CnAz2w%PM1MUoBI#0odhSJ)*C=IJX^J^v%*C8G05?Q}lmv&WL#v zgSm>Zelr-(nSlg-l4QoQR?WH5v!Uu_@fwgGVJQ%{1#n|UlR*>Xd25D)0Fl#NpQKB{ zPxzfP_y~>ar{;|RhqH{{f%k7zEGe$4^jq;Ss0xpExA*^h)=>O?S6# zHRsQ{6uB5DyabB$#~{gdHIvDYAh{8k%(%(E7$4{i=tr(hlnLc;4E~ziSbV5n#f?|o zC{oi&@XZ4j1Rf;WUkR$==)I~2MA*PAw5QLmHLA(@=A2{0MOPdT4inmIc3>fN@gHU8 zqKtH!p*r3Dx~c%W;|%awf{uqqIUf5V)ZqAs#nF!sn;AsZB^)zt)lYyJ9jNPN94;q= z{a~*=$m_tDfRTH`x{(0I+8|Ko2CVj{o|vB=tQLZ=T8PsM>ncB;m_MR#Veqy^#e1IL z?~Gv0iDc{1lPYlEPw=Lhz(dSbEe62_3_cc4Z)E&KFi5ZY2H*He+89r<>44pz_^0FX zI=ip;BD>pL`0k)4O^|M{vC33GZ`L7Aa4Q{z|{&Tz^qj}aI$P*SC?jC916wGMU>YGa0VKVRy0e7DESP|!}_zq8K}6{D+xUd z^+TMUpo*F@bJA=ZxaQ&q5XOT@nZI{?aU^c<3iB2PYj{<*ZK0cl=dynMIRv2Z zQxJ&n11#~=K+U&tC@AhTPius(UL6k(dTT(QL;d7>{L>BvXA-?#|4*;;ccH)T{FDgc zXms`F2hJJSptL;>sSbX-{uy)8g8e1uecov~JdSq(8_FNiFIaN|;35kVF0a8O{bi2A zugf>%=H^kM0m!)&^LsCi&*s?o$ZlPK8EsSj3iL_vKXW*`6T!$@fm!Blf$9pK{ zn-3p8*hg`)lL~AnT>bS)duYHK1J9vloj+TI^Yg^}0n?)c>brF}{` zp2twB6+JDFT)u|aEMu+b=OL&4 z5kBcIm+RUssePobz1&y(<6v=e&OaX8e2d&XROl{pI1L5a-<1!ZLz^yfQETy-WdS9S zs|i9%;lVjq;1MUJLXi*D^N7HMd#Ezcf{QHi+`l}>P>EMR7cpmfmeq+^KBh`ez*aH6T{&$l+;F; zJ#~(bk^^~D`Qse_gjd|LAJz&0bX($u6Dw%3L;R?{aM+Xuml_deZe( z=kgnD1N*IZt%fWjUO2Rz>AwVf442j)&0df*JK0_^_6OPvK7Is%-if{7T98hhz2G?% zkeP_L7mPu^AIo0wz@`5gd%>+ZLgF5HF{;(i_5v*AqM7^H+K*r_C_ZBM?FDHKKhR## zhe#Op>;*3#|2^#mQy(WbKO&OO{{?%&sn`Bk_JX00ath+@1^vyppX~+CdJRSLC$<-i zxhC0OP=Ieg+Y8eFuiFbExQXy*dqLIzN_)X4^L^~q=MVI=y`WDuL~Q`aXBha|UH~h? zPVEI}g}=AGVDHK{+6ykuNNF$FIK^rDN3<8r#CUdQFL)>Yhu8~pbnUI$3udu)-V5kQ zLdWPS=FT7AUT`D8_nf?Sf4sLhp7rKfWn;BY#gAFUguJt(HRtmQo+^vjWQ%%Z zFq>)bdM9mBf9<0io{J9f+9jG3qg_I=%>5*4mf7SJ=a(J9Zk1{37C;m?`vvaqWQp3?HkVD{$|xRn>n1%|tCr%}xMM!6 zi@P1|apWdGNGa@Bb0ZAiOjhLeV&k>M$rT*HodsplT;7~3Gf(d(Zl9@6cXG<#x6D*? zLh4v+^%txQQ_i>KDZiGH-OQ8=a+oQn2bB0i$%)Jy)%jx#4QMfowfW~A^PD*Oar5q* zZ{J+YL@VoXdP3bQ{&UXqf%sNHVpd5YsCy5fKa}G!vo6@}7y;=5FuOWV>0I_lyrBrg zgxNGhPMFP zf79sMd*U8ueq(&(vRLN++(xDSD!8EJDPitm zxZCDlw=xus&BY)>v67WmRKSKyCPC9V;UVgcb{Ji>q$}?dBrBQ&F2TEe-ogFypr7k< zLZG$S1$iJGFL;ceKSmF0ZX`QH{>PA?Ykd1>^&0Q1@|UQxd3~aP<`R^~et_?OP0Vm8 z^0F`+U@_M;3=+3#qo?C>gJy+VHc4CkV<;*&SvIO0^0n0;1-KYmQCz?@;{3e!!D{*s zL`RG_Tn@Wsd8`=(h;1`Gz=>?QvI3he1evbtjJ&~l`&iLYgSKXl&I(q4o6Z)#;I0mC z$_#hF-L6ci{M5?*f?g=q>zM&OlNjgoIxJB4-O7^As_Oi9?}e)r*sP_Feu(|5D2%*a znEMhh54!0k)KODk9JHFTL6{AOe3jWTpNoVMvCuCtEJ$r|S3Pejw{0B6QK$b7AUy9S zTnu+wUorN^I<*f)&+bY>o*-q!y_eUrPAEe1YK5%?wQKKPEU`%lF9e}Ds7^$`{0FPCEonmIsucS6q`83aFM1 z?tVNP$%7MG2Xs&SD+5`ozR9dyM(?e>z*JniDtLx_+d1@t5VqSGgh(wUjbY^ME*xHz zm5&|Vsrl@5POy3<@Hn^t(MhZ*+#$&XShy4vJEmVwX>J4D3D3FBS3zVOX&skL0tdis zdCMgC(kHkrcvrn{re`6YDXrK@1>U0W00;4w41F%RTE1b$FTr)7i%Ys9dshPT?nUuA1aPdF?!$)4$H{X@|agJhuU zufKp@CFC#7nppl1|OjxNu1H0@?rDpMc z@Oj6n9nE8?f&RlUb{N|CFmxu}J&|Y{LHQ_u#jupO?gMM;!gXjNcxE zf$x;xzVug_${&N@Zn}AQ`K_X050u^cEWE@0#W~9 ze!C0{uSQ=#zdiq+B!1gtum4s2_GCZ1{67443z5uW*gu5d_6G)e#H{&kclq|y@!O-o zOj7gPb(q;U@!P?`u0($OGOMMNSX=mQ8YCGY^iKHg3e2I$Z)aiUPr+|<+2Nh=+XyPz z6~C>KxpuTD&2O(1CbL%M{%t4xwvGB7uC=ZOul|qfcWC23tKU7{7X9w7@1fsWko$iGrRfqyQh5m-9Zn= z>v#9`mIk2TJq7))H!9zWe%Bt=rqb^o%T3nr*1;Qv`W@~lFVpIs+)`eFV4U-3UH7~w zbky%8+>oQ>Y0b{)dEsBF9^$+2DR>`r0}Fz}_U}GBRqzVZl<0ShjDEKQ*{RFEB#qFja;t^dX>yVx5M8dpw(kZWOkh+~3Mw0~A61 zrK`THJce>Qq}^|=#Un)84Mi@WjZ1=DH6V#P-5v(8)TEf|moN+YWVua46KtGjSb8JpzDX<>Dq>191X*`W791LNF>QB#^~E$U7bZ4#cNOqsCXsNPtmz719z(v0_cV#GlS@4F-F*?c+7Gepgi!?N#Hx3LweX8g$mRfX> zkz=Bm-_Uu(E6UD;Lnca$jCH?6ZQYA21qO?g#*u}y-{TBmd>E_NB>jrxeyAXY;@GI3 zkV|19q(gCpW^NS6<{S}ZCUu3{0>yE?bER!4cJxslU4dqTD3Fbg;)n=J@rvUbLV7wb z_v)RNIc*d#mFx{AJ#$Vdu(@SJboc}-b_#D^t>Yv`hdX-Ga7RxXrf{~*3YM(1d2B>9 zN$8l5)3!ll1og{%cCKHhtJNfNBd+jBS_t~(1ko=iLBFh~eu-{F6AAa5z(|S!L}_G8 zS#AS*o&$wb4Hh>zt)L?Q2u{8-h{&$>OIV8H^~>p<*%N0m)$-2y_-03-0&X2a1@K_8 zBAf~ZaJW$b_eS^aF8Hh!z`mXW_~3y^`BG$x0vEIsr*-`}hFu6*(v>kl9tNIkkW#^-L&!3;*mvm^Hq1=V29Fw9dQKfx7`>yv1 zh~TtVKm-9*YkA~AnI8wN`kS~ef3i_)&l9%X{y4rXRME zU;ln=62G34`(MSc@2B|_;^Q7k2+c86J;n%adBqZ=_^0PMc>&cLTAXe>?UuUBsk6%9o ziKR7ueLTC~7JmH_`?(8#eWlD#Jik7Z-@vb5pPQ0jPfZtoJq|zW^Zm)MZOY^B?r>e* zU^nuO{+Rd(hM52@pE)N!QPlHP>6YtE|~L0M&B+%=9lB@rXRLxK%eRSjHeTzCSC{E$&0& zJN4xpn5wZKDhFR?c7;d?=>zud(b+`94C9A_KICA7(21`TSsr;a@&}LLh;`0l?V1T4@Y>JkvtAaxNUjIRH zOCeX|-Wae15S~pTeQ{fnc!6a(zl}s*;ykZ`EF9k``#<;viD`+MEAmG9<(25^_quBnGjb*sYyb13S^*M&YHhVJk7}~UAou-F#;2{KEaFgmZ z47X!Krg!Mpv0rN90L6Pr9<#s`0!G;tIH>A;bmEVZ!C8?vsI!Oi7f#tvpYqF6-^zJd z!~n~jtlNTrQRjal^o~m3mjg)TkJGc%Qd0!(&L~zcV|RJ1Jt{s#nw*5>#XwyluYptw;lPm<)vPIyFm;MV1ie4cZa7ei=3u_b&y( zA!KZJc%T(KHM=ZO57wqi3ctaz&-UQ^!-OS=A{i5lB4dV;@iSZ<=4*KN#KAFZFeUfkmLPB{ zvT#1XS=c>Z1?PgsP<~@+aD*<>+zur>?594cBIw*a z__M-_T1xQ7ij8ZT-jU89FKnZFi_m$Q70!qp$mw4fepYl(uxf3qLD5y}*HRRZP+YsX zg+tLmp?0I&4_->eQEMA6ikPtn7Gb??211ea#zOPj{8lRb%$15WG+u%WU_sZ$D*Jj2 zHokjxx_`)0s3i?t&o!W@__VEqy-1Z2kkR&z3=ml3cGT3P%Y%zbnU$rhwpDgAc{G0* z!1ggGL={x{EoUgY4*<5`;v#gE))kEjxIRqJssAzHKqCW!5f|>jRYF4A*bU84D7?;j-wq@&(_XFAsBi3 zs}=~tfG#~i;PX+A3;DN^4VG8t2A|${Vx$|$#+mmDH8Ij1P7!2#gCNO(`_3XpfX=Xu zt=?w0qwSj!OC6pJvCJYXfAO?it=u;`3fe{3T%EtUz~bf`aX(aaGySHW1eHC!e_HGI#~Lh;T!054s^QqNYf%)@aeq(i{|x$PauezrPtrn z{G`D@Z@uF}#~y)GE#@?o=C29fFb5zC<$?t)2Mbus^KC0*5of#Nv<_sY>h|#k8&qBx2grQyk=jO*8dA~T4gL~{^oo~h{)$twT zkOy-{`9|%_n|;k4w!Vh$)aP8%Q^%~*sssaaonmJcZKi;iUG z`-l?vzhEhZ10pn_gC&0$X1}3maGN@kBZ+otevu!VpE2-)DEcA{)Y+lJb2-Pjv6KH-z<|h>0t2BDD0t`aA^`ZPFAe{!pU!B%< zRIGauIV0GjT?OMP;TY>YBU|`xv?qG`GMxC#OzIyWevd{8){ou?h}p7PJ>xRcm|4x8^AbEPz3-F>aoXgg<;yoOuJVu(}XgzRP`|#eu)hD z%1@olCq|p1x>ksI;HaXT_u3qzeuBK%8&Pi`Bg&yY)ucxPHZKX82>B9sC+f1V)0`jc zJbxeH>Akqy3>^6pJmb^TJ;;$at6=i7wM=ZmggVQ>f#WIIsQu^z|Zm}LEx|wn`!_2_+d-pVS;?VN2lentKEn%G*@}|Tjeek0_5n+c}Gv~N=R%D)A)|2l33^8p!=#X zqPo@9QRE5l2XU&h-4~E)D9_kkkA{lgry3~8Ju+8Sm+_IG_)S{qn--Vb+k`;-VypB1~ z%6&)8{Uz{zKp%Sf<^jF9C7FXtVYxC)>3ULo)uIB*bEZn}SM{ejovQtllG}H)l06=g zoKE~Ii*|6cm2&#^cybhXz0rOgzuj5;uOPoSba~oof8jotlpp;8-RS-Rk-*tI5GD{~ z(JKN6KvEOkj&VEAg9o`S2fEK^ni>s1#{Mn%F|-Wf$EY73xT^1wWXgCVXU-G0jH<~q zso!GQ7WGfx`5qjs2;msdT&7ZrM19y}+^0-L_>;*jAdq zD0ss@%$2`t%79X0!uf1*i=33%q&AZRA)g7^aniw33(qV(t8o;VHWb@w|18v8d(la; zqxywnm;NFRhM2)fJq*MaoFhGpWgbx~@_oZq!$PnFui9?qZZD1PkFyArW6L7%QrNf+ zG6jSUNU-BV0lT#7+d#Ootmgf273}Wn@xkA;XinJ&-Yb{(I{_407D2q z8wfwQ1(Bmb#<9*PbQNwkgkNuIM~)0ZhBUNEEs`d;sG$+(x>2cLrqKicoYE)JQs$hw|58vKq^vM(%xLtkWs1pd5&hbB4aSGS=e>=}_nU;XPCq zS*cpEN+jaD=7-oO=5ZzHY$1$CbBW+gIQ;mLBO?)Cj&k8ugb! z%e>F6nEeI!z+t2g){xPg!zT!T&R+;4$4bg&QhZFm6H0UI)nv`Vp9Nqk+l@w~$eEDs zsLA5&j+WoG{Q7Kjvym_L{n8*C_4o4uU{ZJUKYe2|{GGaXX>2rZ`CK+_FQ9|525=A~ zK@WNmbzNi-!!Z{1zHo1@hdTnrk^1nyG?WJ?)?u=(ss`8#H^E*AW{jIfw4v3s8Moi9 zWkJXzASUe(MlIsOeO(4D7Y#Gj{G-+bN-0F@RZgOwEnLGzXwj2Mi$ff z^lhLtT7n>KXJ-d%-b6NR_haEdExS3(id7(va0%p@t>HeQzz1c4FSQohebT5{=tAVb zLGn|}bYLq{EpPgp4E;>7gEc;_&uFM3;W;FX$kzt`)K7!IJq=UD_Lh|9+u_FeMn}dv zO)%>30f$3uLD!n+I_sTi#X<8~E-upwrA_r5>*GnW%zk1`S*z?{=)(3vlBCy5IX<-b zTu|gNe64f$Yq-O+f*0jmSpCOIsMM*y)V2sU9f~JpV_G04MuwLAhH9)1BoQ$=6zKS* z*Ecna#V<4#IAdCr`upvcg)t z5Kf34-zhhAVTn4vC(2)?Y_Ax9Z+YJ7^_2%j`nrW zCXT@*Ce}xOuxBVbn%pJi>R_QjeOW&EX7|Er`vHjx1?Cu@y3idP8UmZSs1pgb^M*Y& zx5-1?YNrKfyltu<+@hTI@8Q;u!K3~Ty8cUc<>4Q z5d*-W&vG=j!`{^lXw1S zX8t!@8?DB-RP>VB#!(ynpT^46^fDkfnO+W+{_h^WeDR(SiXMy{csleFQoEY1_z7ou zj(@l5Wy(iRfBe(0@kiFr-Jq9a-TBn?lHWn-4zQYWv#e< zbuKscKY)Xc4n#FPljx=LU1zlM;7dU-%Rrnv=U9G#Ir9hR=+H~<247pgbPxZh`Exiu z-wC}uy_@;(Z*8=YFQOeBu~VX#(BA=Kk^MfLl-YyU(ib`Dv^U-_{7akw{JfjxJ$>2O z{|`>KH{O9YfqD67UxS5BKg$0GUMsaRoOWDw5wb&K0NcmhF&+3G&=xA}P6Agc-tZV9 zmYXuc6y`OPWctJ9`VC}t_AJJ}gF0bB_qHib9}@dNFh&0@kdD)3dk6^DdBLyGK6fCq z8UGGS3f;(JWILe(^1|txU3q~Qr*aPmX^ zMihSZRp_u;QeLRwe->AhYq8M>&rZ})fJ`VDh9(Hb5LO$A6%xcp6bR-mhd25JSahzf zSzXzMQ#X4NyGZ>|_k=y@I66lizmWd-zH~M8V|;af3 znPXB8M~ZLq@VFCrj_&(Y!n12z;Q48NB0N9dBDF9f)13PBBSI@H~CI1J80i z5uV$w20YJWp|kKG;dzWnc?T(NhG*cwpAw$sZGq<>v6m2!pLg4Scpfk=6+Er80h$bx zlmyQ`fw&q!(}====L0hU&%Ifw3;rWKKjdT}O7NK@O-@Ob0w0S!jXKd84}Bq#TcwHpBBAxB&lj{F6@p zyX2qWA>2efet!F*AD%N$O$E;fK&|RLlavI{iz^&>PQVl4nKcdYoWeqv3!OKr;U?wN zsk;HsZoPj>c=m4#JRifY4)O4O;@SI-> zcpk(;2M7mfR9iV2NckgD+KitKaOVB#@H4wD@I33;M0k#W-w)4sPDusNEO0;7Xp)lP zxeS2T@T@1u0kuhC!1Gm*xLP4}-l*;~DJLSO&G5W(zn>DGgW3YmF3%*wv(rXDJa0NV z6+GvITGbSjlmySK$2jnuj3>e~dkWxL#X>WM&KuRKCgr=Ub_1RV_WUW~nbQ_{E_gZ- zp3lGQhv)I5Q^9i*=vWWOq^OD!2C7@PlL^>%6p1&z~;5iFV zglGRN0MA=k=q91_Mm5o-bU{iyJdM8|G;nIORBN%x9=$uTnK~g1&1cWLCNC}A6Su;Q z8YUiVbo!&agMBh`z@NvlL*K$9(A2RZ{e1W74rxju;dXB zG>@C)5dVrpcq)U+FOINvwep8&Pdn4GFViV^3&Qo_8ZGR6jK;Z(P1lus`}0-XT7tJV z6k@0HwuRNJ!pB%uivzVIFf!B=Jr(BpVOc1$a>_Uu>H#v=zHsV8tSmSW{gnEyeRl9_ z)^qE^z-st@%*<%o12l6@R$ApbRm(C7q{v!FWA5~%#t6?vg*y%GVL7U(oQMS%=hmN5 z)uEKrKS@P_7lT(f|IUmL8u}k8@%ZY)4ivTT=T(8J!>@h!RTs-bqK9W6&iw@_EJqXD zfJ$#)3RJR?Lk(j#r1UZ=jYz?K8GA^p_*3rU&oB>vX!@{=FfhR%RWZ;(oi2z%Q8-`l zB&xAyxra4CnEK}D)F#|&=Haj(UtUhYmp9<=hh1NdFX~(zSvAP=v0z3?nujgVx6{}% z0&(3&Ag$ZuID>g^92i5U6&Q; zxw`7TOr9*@&K#T*jfLf{$B8fSO%x)e&yl)lBvHf7RaFYpN#XtopR^QpsY^KNs4xw< z99Pba$6(teB5ciBn0}6?dIs@;r7D*_n~7@dN_>#}!%T013U($lIqx7D#Ic&UGW?>{ z)PkL==BK#(3ET_TaKBI0mzs{kx3sDZy)1$Gr?0YQrO;rp|B7-%v!_N8-PWq{7Xtwo zBZpeZY)HA&q!b~=*&j38u`ol&a}1aW*QtxJ$0idWKAf~C+~G#U9Y$j!M`uqR8JveL zSscQO;KO2&I42DI0iam~@fC8SGaU981sd@rT#73mygZ-;L%Z`>-kry0T)5_#!Jf7V zhDd3}Rvfgk%iW{yOUdK~%*v~^AOHUIswJxOQjnDvq?_ox{ zsu~GgD1xzXjCz46BCK+NKpKA525QUIY*Wb3zIv;N%WwnAk`^7q3ZS`$HK56ZCIK`z zAyGx}AAxp`N$G$Tmw^yI1u5Zk0&(XT@K6MNPDl$+O@a*$isTn&Pwh;`FCGS(J{T>H zth?EY?hRAwKr7>P6%{a4ElXGXKboF~)o-9Kp&lKs0pS}{Wk?Y}3_lmBHUG(h!U}aw za*1#cbuXzLW4w;&gV7&+Ax2+^k1A?X&NC?;k>ZZt;opO}LljRsSZv{mV-{O=Fuc?S zPqh74b05+JpdzkYJL2gIKq%k^hLK@eVHnAs6)!qEr)pVyweKSi#fYoEGq_&rk0nXq z2VS_ z>#xr(H`z4g<(_ZSLd`V|rf2{G>#?f(9r_%*eI=;`ul*k2>n-|qt?I$o=$th|L$}CJ z83TQvNkBd1=tXaS%&A}!qCBPT2R8=)HTmJ{Ki$AvL#N_VSDL88K& z(MR-p5fC3T+;Y!F63SZK+7M9R-0R>4c6_NHtZM$i1I%?N5HN|7)BWHS>RgkQAXD^F z7XfSR=>|6Ai9&!)<^;gz3YNQA*i54;GAWzRc3?vY?LvO)jMM!Z8oBINoNQ_2gWg(G z#G4T;ec&j-U>tFALjow$)#ktYK;gk)2BPF8!r*9i514>D%OoYhV1IQ1u%>wqQQ!>X z4*-yXVXDhn=ptbsjjGV3*k}0wP&n4ru=2Dt{|eU0V70hrJCp)4aWQ0v+MWqA!1dEN z(S{(v!Tm?Fo*`nrsOEbJvKZAoIHx4QWe{UJEo<;6rO%TF@ppac3n;|DS=1&mN_hC{f730G@DV}%->yGkD~2<0y=4W6{rV(|H!?nfaju*3>1!%+`W(j%v31?SY` zGum-$yY}xqudxw&dd{lwsiDXfSy=mdDv^J)nj?NqJXrH6J{DAeQhB6Sc^obZna;W= z9pakdhjIiQ%7XTMY($B07i)nYQp@#LWLg&SeogZ;jy}0CAe}rdYwB+un*u&e-N!)0 zrY7atC!9W6&F`rR^h@-)SvIvs%~*)qedm4-kuM=ea`C|l|s?6 zS-}O%5kb4u1%2s@oL2nJf|tWkXTAg(78d7k0D>Ke(Q4!*2s~gMk{y{Of267g1@B+pcI;8Sw37U$7bQ|TvY?kAfME=EPrjV>Tq-i zm#YQXpXOT~U741hU=0r~l>nbk_37>+AE&FY=Mtf2p=to0x;~Z{pC@f7e{1m8hMZ;L zeL|7zvI--wm%2!655y#)R`?sc1GgfTS?+p`ro%TuSFgNJL`%(!d1VSLbdWG<(}KiF zBZb&OZebT3lLw**Pe%1HbPmNGA###q44p>C!(Rk2%~3a`>mvm@@W7>mIgS=EEq9q! zBe%ts2G*7a)(NOi>MG#sO6b_rfUVAW9eaYk1RvFPI0>;hYTSOD|-&>0=5s3_qEuM0=6H| zviV$SkkZYhJcAU2?e6(soZ*8$@k&zwIpOgChT#@)&8gvBS<%^|9N?Tl_1iMb4LpxG zP`wR{Chv(G2vRPot`FACmDDXPzqPPu*I@Ns{1E-U=Agr{(hdXKe<&XxB*P`!z^&$G9hGh6FPSn`&nzoh608y@Z*pO`OeJpJ6Bz^wPxB$V z{NVZy3u(kOY{w4$5o?raNn7;!C4S-uIoK<8Ud*f7Sdva`%75{Pbut^Yf$aM`Y~d7?q#N-ktr3=u3X{a{T>+RUcbi zyL{`_39uEE`K-((k(UwtMQsJ!g5+}omaJybB$(Vw^r{nXq(vZOZ|45Na1ii&&boD3 zR$*|#3UJebn%;oWWwDX~RwrDK*q-gypv)rmo=O)^DS$_ zKX6KBWAh46-of~T)nrW^zL*5DzrkS)8J-=&QWdOv1&QoFPgV@?+B^&E&Olk7wyUqd z!L4ODaDG?_$NeLXm3>PC|0)f6xkv7Uu{

-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⪻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

~5IEAon@VQ_N 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 diff --git a/kvs/src/main/resources/lib/libleveldb.dylib b/kvs/src/main/resources/lib/libleveldb.dylib deleted file mode 100644 index 0424921696141a7cf2e05e2ec086ef92b98e7d1a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 352028 zcmeEvd3;nw)^>*whzfSx<4VNn1UC|eF%g$Er13U(V-&$S8Ua~E1x4r<5F&}4#$2w~ zi8G?S@2JC!qmvn(F)m=#0Xl$5#4Vts45$Qkv|^(~&=5EJd!AFbJDq^O^S$5qr_GPt zy0x4-b?VfqQ>RYVee>JT_w{$V($ZZnS3mqe6#wfHh*Tbikjr%}{?G5@a!s6grMK)# ziR$^MmL*eu&O2bbGVq^I{w7WgPMaUpVg23{Uj7j}t^5mAh9BSi>L~rUud6ckb>hUi z!O-<{lTp3#yH{G|a%E|7F21KFbGuxb4m`G*KMil0Pp-ZHnF zfW6_hjn(jeGe{TYdk^~U4{vU8&W*R+;KcWaS9yzu_p8Ho2EM1l>y7KgiJ@EO-FVB? zi8tOd{ZbK>maoF9dk<$!Ymp2k#15KdVl4Nvszt=+w_KYm#bK8Z4X?+x!)J>bop z{8RYNaNtE9V(~o{9@{&u2fW^V(vyDqztyG7oCfnfwO>;}NpRxCsgr|~yJLIzNA05; zUZ#T--+vn3^>e#N?f&#z{YWnK z`w36!chW5t)!&sM$72=k6L|@k{5Ufwm>Fb)k z)8#q@ai#drA7vB&ACB@jAVw>OgZC>vkNpCB!6K_{<6a)pZ*F6OXn-`??I27~;H>E_?ZGfQ{ZO`{7iwL zDeyA|ex|_B6!@6}|34`(-Z1~|xym!aGv0IMIHPK39f14ISN&$BFdmQl%-0NaS+RsV zeP-Nm&C2pMbFJy}HG5_KWLW8jRh(^@+vBZ1Yka0*S4910r#j^WEMz4uOVX;N?&_&n z%o)~7!ZWOXD3*iV^@cq@YS@7WmhW#^fqJ8;C3vo_`GQOhTXZDY!Bcl_{}fWX(wwcSb>_J#C(4zYYf!%Cg#_FWqd_VPhviW z+?tr7ELQRqDiK1N9(i{kM?&pVHuC`$cVsQ7ZCIfO-Mx9hr;^?3HY{(YQPdbLKp*Pv z8z-1}D~U<;1?g5dyZdHhVm1PqN}uUw&%UX9cCaAh27u7D-Bn~8_UifQDAsbZVc85D zMQ;X&vd{qad5joKY)X?+(VMD|G+7Fx)tba>Bzr{z-@u>!72Q7mwE_eo6TZ=^Wmf?=#;q%sr6A?yI8iA>Mj$ zXH-}Za-oVuv!~UI`1!yv*QsACp=T?k>lVMc&u@OH{!xViYKL0EC~7uJ*05ErKo0^Y zsC>m5 z?H*K3JY9+Qur-C!lzm2cge!Q4&$@_M{6f8h5)icz)Z|>X?azH&o!*8t@Wl&;+gs5R z%PEM)&PEQjL2|qxIa--x6LYkwn?XjOiNO$8Z-3gyRi6f|3$M{Q1DW3Vj4L(F?+j}M z>rae&b34jpUQ^!wGywbv{&|Mk;kQB<^XD1B-kOM+ZhWg@lGt8Mf`Jxb*#_db`fa`g z+ja4`Kza0q+OrQlWg%He??o-BFwa3!)6_{D!ZeWbDm-gb>6abAtY>y4tHI>saeGtqhTKlEce-dWMHZ;vJH$r;H z$K{~8taCt*Iy!C89`+cVPN9yS8!s(3BHMz80!?Q~JVF>U zI@W9aCWvg(UDAp!Y13UY2y=|znhotIgf7^t+5~HF3n&$Z^at;3_r%{R*j6149@Xhh z9l(Fp?E{Hg)!~9MTL!@cG&wdH|LsSbbj3(N0KbSn8{U~G$}H+M1HfT?gU9>|RFt{N z^tJ}3?0g{y$ofrX?A>8BH)CFk8*WdRiUK5nh)Sj_wORnH(1A9<--5URp}YB;qxpNwmMUqmRoyNaiC5mK@4a zd-!SBum?gN;NdPImx&%~_9_W;K%D2d#+Fe&$l}D?0ha0lJ9iXpb`;w{8)Ux%cei=s zn^0v=`TG6l8(D9OJj>}dpGTAO3^L*A4`n`&cF*T)+raX61*VrzxP0iSkhvVMd)1%1 zM0jn{(@Ce!7*+pd09d37p2U>xNBCa4G{ojqh=Zyx(ls_+E^N9{B#`e7*yvdd=rr)Wu7)+^eFxyL!qKon9WF zl&$4)@;%3S5ATEypv7fzp74*u7SM0Q8?pei$9$G7pWh2!p?*)1zZAaa5dZ>J1OmEP z__as6v41*dXRvgZ2ytj8{V+8v@Cb$hx|fskyiOs$(#-P82SW3#q;$0^oRp`S0*-he zPxqiojsnp?CX8E~jj;NIq(dTaR~y!+A*-H9AU7E`52<9$-{X0J{=uAbG_!psB@=VY zNP*O|Y{+kc5X0O7pr@rqGODw~NBhj)xRb!jsYk#U!rAH;C-W3Z|Rbslt#%wMDy zx(x&Q!XMxkVwe?>IT-lncu1N6z(PT`$0M#uRS?;v!u;#^fh@+OB7Uee51pi^r!DFf z-7NJ7{s62AMpj9c$W1XAsNBeujAoxw}{U zdZcIXpKh4*C>E3ToAdH|;wOOfll38gVbA=U(1~1;Po4(M5`a=SMNImDTgg!3zv(f<8 z_vV{E^KGB`HEYdhtqXOnclEAy25Oy@gPNhE%+403?_TKsU)4WhoCo?{AuBtSl~F^= zxML<+IlTlNbID*vj)K-ODifK&vl&P7VU7X~63Soq`V4LCA+Ofb(5If;+Q-!d>ql`K zY#v&pamJ6se|IB;L!O@Hg`fJfi?saG{FRpM-yZy;DcrMu>KtmAu3y*CBR#?Y|7rag zZ%KXlgMSIVIIcFG!eDxWBHjG?lk>@a0MLv7$CYY|-KAlx2A=?K8kLy_;7RFLiB=`$ z`FE8IGhLxWe{2CoHj(luj=cc?1{^~btD4`Q_cIy@b)cxVN zuFCXd_3F1!|7d7#2m7s&7#8pP%{Q=gD)+=cLS^0jVOWZs!!#K4ht=-jsqTA;_*- zg%)sf_p)-#s%?5D38*5Z6U{Ig`faNcS5E|0hU zXnxwak)E*R=%+J(ioqe{hG{=RhB@aa(YpabqW2W~RjTVbz8rd38OQtxJarlXB%0m! zP7<*F4U(c;!l!4llb0>4S^qJgTXaP zJdZ(8+K<)QPqly0kHAy!+?~??e{4p98ov`Y8A3sIyXZUye?Y)lItCstf+ zpO}3xhA=2YE3k4~OL;)N!r!C?$D3~q*=ICVf9^zZ4i{`d%j_naO{m=k$8a? z%aoGy5nHkl{ZDWu7s2S)oE2``7g`tVPq3&Q3&UE{h&--Wdfw%Jb2kSuj2PVGz!t~{ zDhKW4IPQa1Ky6w;rdVNszYA3r4`SfQDeVM2Vq;WszO zOY^Fu?qyL*<4W{OLVwnlPhazBPOaEW8!hv)uUXuDVQz6(w;-OgMWebf2wA*W{bMug zw=Z~~1=KGDnMSVBedeKt-S=Nypd0q6c<1``;Hl%#V4%HgtYxw)b&v_>baJ>I$#_KJ-LlW#QO(PZ3B5FId((66AU&k*w;tZ$tVp)b%|6eDks@fcP?zVPBQSEvuP33F7LH7f7I%h$VHiwJOU{L$O!1OO8Q{2Em7jh?OF-$OwqpCm3=+0)OW^?Oo zh|6NOLS!p;2{h&K-9hfS%`y{I^U zQy*8rx&hXXzPWyD#w6r{Fz8f+(FlYwv^v!T2>Z>IvuUleD_XERsfVo-NuPM)|Mc5a zFf}6<11Lkq;C;(tYNHO+t40I@)?!r9-*45|0vo^mH||3~j2V^yRV&v?Wwo+v@R{G- z0YjakciL1H0a+Ebgg?;N+&32xTq?}i@WOm3G1vsGbg8?JV=qGK6qRR2$`BR(w4y$C zf(|TKLmkv&2TP3X$*JQQ2`-p~XV3ALDvt}biVuAb`o{Lj=`LEXtdd+9t43$~>^`nC2zqE&hD=BT+oqtZ}uH zl5pA%*niIiKe7u(qG=zuBk&_pS^^>=~!Qh9aHFh zFJpY>lBj;P=xlAwhP`q$Ng>D|f{c}*xnv81o~9)oj6q75lM=AkWcG2n)^KKJt5#eSxcCk-T~MEDaAaz(b&7$2!Duqc%9FD zfQd;Q{zd>+MV-0`Op8Fh^4=?fRu$Aq4QlS464Rny94djR`ZJRD(+4TfVb8&4XNo?b z^gjvj%=Vc-U?d-P9Y?YkODsuFT}uV@{gwLTd$(i?bVvrE6IFn1rGWI?8h{1KUJIX>a!l!v|X)f`(1F1 zRG3_UlD_u>l&0@?(%07Xjr6SwH58;eE;D+f*^&7I#kjta@4>I zM226^0!ORM&vq!j{42`ty{gnkqP2{|#)xbV4)R$cXe0EqnT;8s70OxCa`n%RoC6*s zX9pr52LbO>^|UVy6@RMM>a=3g7-@q&6sNWk_n7|NEbN#qmfUl}-OPQT&Tag3Zm*Mj ziq2i<*CIE-hNXQJieS&_gw(A71I>^0=S3 zYmvweo6PE0f=5HoGgx+@UWIy=Mkuba_vA*(q!g&o!h5nx9l-TsmC&pntnxTsldQ6` z23Y!w_5?4+dYJri3(9N$_~3uZA7=srhx;1v1Uj)ry}VRV66W}_g<&v9#~lbb%rWdt z*0~`&MP{{kVbtmIx1`7T)AoTmh{MFB%@ge}0%*cM!1+gidTbr1ntHG z9_j|{W5wB2|0Ci*0Y{$QY_%B?uM?f!uvaos&A$<5B=3LGb%tsOdI7J$OKb8zl-2-- zbWJzhw?y5Cd29UkOKc%(D?~oodg7#-2@W@`xejmV81^zI8@8Q~2L=K>YQh&m(b`RX zt(A-gh%7wR=dU}WD&z1pmwT0Ds%fm;0pEgUU$TJPyNo4_ zO{)48c*bqfagi=Q%}5&`_G%@Mm8=lum`8IDPBeIH%VQL?OoUIYN?A! zs7uSGzcahNx&v`)sSXPnAJ|CBYTujg;mAHA<%2m|>J+1Bl=bTlqWqEf*cC`XR2q9^%XB6nxLp_%gOPz9TihOiJRr?`6T4?4Y*lFdeAW=$Wji1O7zhVJt`J zO9Wjrb`k%arL|6J<)3sZX=Oc_g*2Dla+!=DNr8Vy3j9xQ20ftEJ;yjMKQ#}a%%9aw zh>NYzu_P`jd!M?Ju}gKVv>CC>)kTcG4>L@1eo5GiWQ%f-xXN5!x%hln=u*Em&oHq0 zz;*U2(4y131#CM0U*J*fTiC)=T6J-keiGdQT%{O>bg z_gR5VdI^3Nb5F1JTQ_C-ipHb&KMU^hS^nG{Ur``uZZ=2X6lk)o0lOkIHl@2h#9x|1 ze|U}hEN>2c7v~;{0A`hYK?~8AV30+9ZLC$rnds+fVo$^ z;>PKXh#BiSe1VLi_w_RY0G+|VC@}*o5Xe*buviCiTN(Ocpk91q;T>W&sX9vCxHk$m z6Y61pX4SzXIN#89GL49Q9m~QyYsvB#oebiI_83LqxFdfB55|s_rklIkr-S?q)1RvS zYP=ZM!};=fNz`6DRIkb=K^Tg^8O#aZ6-2UI{1*D{N41cKbDSNhg_D^m8Z}yi%v?v7 zE3Y-IiseSpcGxw*DZV(A?Z@(1wLPoSTkvr=zh7n#n>xn6U=O@lAvP8viyE?$)3m$# zdX%&xjDqDN!+rM^c*m;lS72d!9ZeZ};VE;6VcmzbgE7K0 z$z6R6!tMW*c8J4`yZQ-v2~-+3c?~PDZxj7HCTA{u8Lt3^H;2BA%`&X>(K5q)C$ud# zW&gTfkafgh9j}e*0PJE;aOYc7~oN ztp%CFQf0-`wUJ`dwOM9wK*Z!%CB15{Gd6veOP8nnRv@}MYFJO#Az-*mR{4ni5rzAUY0qFK7Up`mwVKN)%@J9~M{{u&5W%o<+-vmk!PGKakb#o2jQQeP zJFp~LGv&JkubpGnvk0@wC-?+6f;W@=3On!+Sm3(SjTfHytNt18ry6}l8{Bt|qqi9L zu=Byy!Be{BN4Obl4VYW5ktPV!hdvXCkf&2667JEk>8OG!K)z}NC1{G4hRyTX;20J^ zO))n&(j7Dhu%x}3bXG2bf-!~a3k*H5f;kSqChFg|h9vA&|Hl&P)c^GL6gGQR9FbBJ zTxQJ=VxO|=t^D&l$d6~B6;kurj^{~eGQ-7qrtSxI+hZ^vh*Y=pInkNR^6>CM^kGeB zWxU{r`NaY&c%hrjqxR;rAJj~?tdRNXEH0L?O5IKQM9i9qoOC0b;kO@S_hYF5jfVx) zt=JIp*}sN5NZQOtA{qbzq>WX~tlnNtGU&8OJYaqi9H}xFvB6Nr645Y|ZIFB!M>#l- z@V2@m4?!$zt%0pd?V|)zlk!oo_%AycmH(ZntduBvx4jMjTAf3UK@HX0f_Hi<7Zkp5t$=& zSjOyzZM*PT1FNI-@z)FCSbPX#P(cpZ=;D^Z(14y(rmDJ+|@(7zmk2&H6z`pZ8^ zLP_CH?JF?v;S9#%^r2sa6$f=vON$Rv2pYTnKWrC8bV|DlS+$+d#& zu~+khWlIWN;0wuz15};Bli1z_SiK-Y04d`T0CKw)MwpI z#QfHzGQ%pHq@}VbjLovJ(0OFsV69b%9u&RN)+)Z{AW^Yp9CT~aP9r{gQF@VOdN-mA z7vkt%6o?0E#A8xAIbH^;4JgA#d;|`|T%IFc@NhOCcBFxi<_L9vVvQhUBxpwJ5%gJW zbtkOko7#JoqhLfT@rvxViR@NHC{PsHf*5x-O)~}CAPDO4ifQLh%x(|32Kyo{;uQCp z`tC`sEu4g`0rTJJRKbRuaC)kYuq^mUqRnsNtdXj3`-)0(bLI{RSW|N|VOI$4iXG~+ zj)a+JGmPM&&9QVIiPD9AMXv?L_M0>3YN}b#5MF`s2_BmY&oEm!dqExjIyS(tMrIjB znAO&WzVa76#} zGDbwQ327(>X$=C#2%Gc^q8>QDH)7h9=$IQUL;A9cX;^|AaV%6ceJz{xHHI`Ajo+jj zFQ!a(8;zn@-FGc#swD`bDGnv=qn4bCp=y`ct~m#N3$Egd0XSo_pUnbz{ajun^QF9Q zr&XFmkti`*jCcK+`bLCNiN&^$$yjWc@#%=cNjff4%BLBb!H2y}YO-x6V!F`MuKzqB zq3cj@Jr4=-HJAaMz}92#5F***Yt(wAp;L#!6h87_ zMjShm>)rQ9{bp{idlmSOo4AUpJUvh)D5hHX*d%OKI%!@Zg(>J0F| zOT?+QjIDD-k5N=wI=8Q3mXhiP0d@y zR;+Ab+9j}u_)B&Lk z)fW*|X3k*(tWUYY#2jBKmHnqkuUokv(&p8vNV}^yi0f(stzbS^pvm<*w#uRZY5dCs zRw82${I5Y$`$7QHgw=ci5%nOcRLDddAtbgRjp>e=9E)3Dq_Lf2@KojaqtmExDD@o5 zed3f`rk`XZ&YP5fuM+q+W@=0(b|EB*e`n$vCQ{&Nv|1901{43l#EW!d`zg-z6HHP@KBRsKTCB8hnO(9K2@!MB;gZwKJ0D>8ejyK z1tu5MU_H9C?o(U7h{xMEV37qx+E2w6I<$xZmr#qKlfoznK<{$yeC2xBLVF2nznL)(gB3GQmk z3G9=<%|JV_DLWqzJ$XAS3Z(pJW^-y2eT> zlfLl2L+0HCqJ20>RIfHx-W*YQXg5JUV4GzUX4Q_M{S@L?@@gGK)!xRc;T2c7Gw;XEswsiAtVcTq7l%S#qCRypzP? zxz<^r7N#{p(&?=~{x^CH7&@=x_`2M%OVTmL;4JZowA*RJkxAHE&4Ow+T9A;(BRr*s zed4Oq(_QW*0XE%|39ZSM#v`MS-PBr11^}B$y*S27D7;rnH#f>esHskK({ytscK_xc zajP_!smbQPS&?ugCiZmW4YIJBo1p+NSI4SE| z8mgFgkcLhL^vA8_mjqPn!O+mmj3pSHd zEbcG;oz0in-WK=PnL-&BNV3p9$nLR5>;1v8iS5C?>Po?HubM+}&Jc0kPx-c51kwdM zo@+jp3H{H2+)%q7lK{^DB2}ON<$RI4@`f^Ute%`Yh_`fjCUR>P#i{7Q-*#8@*53pH zsp$8QI~6TKMakXmS0o1x>eV5@x%CS?QAg}E{((1lQ)~_Y{EdGe!XHO!uyR{j$Q)b3 zSaW-9j7}Aja>l)x&ASmf+9xBV6CK8KSC3_)pNS<1#o%kz)PBCsMn)-Q%IV2sQQchF zE?Mj-CJscXr#&9$7+`LJXO!QXg2UGfb6mlL{PtOwotEyR>)u(Xo{0I!g7q8c5@EuG zZ%l)_1HDR)_G4D`yS)K&^bX-@U;(qa*X;6}U#dMvk&d9!T~Cq=uF0VScN{k)LPugU zZ7?iZXlAOv-h_1c_4YV!1wqbJdr?)w(oo=*;+eX?n7Ds}TCm^L#!b`a>K_X<@wRmA zEc96HAFrjJfXR>DYOoA{#WLY1PJ}jlX<5VK(;Ic3k}u(zi6?C=OkW{SD=bS=%P2PN z%i*YvlQ(u~IZW>m>Mv~p8$zw4Dy6P2CyJjc&vRfRUMc~V04|Rp+iTe(2wIK=AK8ya z0TzRhs#(&skMTbX1h6m7cXS=Y8V9${uq;h&s4FHtl`3ii7^0K^fr9$TdGJIv?nad3 zn*||_1gz~u@jc`TGVP}-9dOa>2AnpR`|19u?Vyksq8r|iUg?yZ3eeG!+W-N5?X3jT z!vtyRYeg`-`DxpI;;C^7>N*KV^+$~P- zQk}aD52-x44S5_aZvx6*#ylz?HUJN;Q-KvY1&ouxfv9wpwK@;UCD0u2y_8)fEM-`g zvvZw&0-SbuspJe2Pe<7LR6ElYahXPd_$YUw;ifr$s z>G5%}`W5oauA+b$mH=}G0~i>$$&+fuY_{P@=KhC(LEodt>(#N0`b&yGX?go95L&OF z68nW!JEOovZ`G5oYEOV7Z;9sd<(zO>Tg3^~ogOgwn%JZllRI=cpSeYq!|cm^(~!^5 zS55#4cjQJCfZve|5A{MFFsIAvA5bH-$bLtQ7D={)7RjDCO((RRED17Zo5f;?c-G6V zgf1y1Y@6w8GLWJ!zJa9G7bsZT=nr-0T#{jcI-J$&*xnP>FQ!X50SjH4&}FP_|8qAy zw&GD#;l+Re}U{7v{Jw%Uc=P<=d*S1t%66ip@IFjI}H^`r?J;JC3=K9f~H0Uw(;Eo#*bXnn#STSsQV;Th5zrk)Qu8!kIGEwKtpMBRm`8gKI& zSbkD6&Xm|D$6%evJ3(S!7B24wTFlt>Yp{S#0dNK)-Kzr4@y5!ECYNk4x=S`yR=n(b zfyRAz$;Rq!p4A*KCGL{;>SzOtm$-2T*+N4uL_;8FTDeS~j08ls7HlKk`l(HSf`1+s z)Usv5M&+Z8@%5gf_e1R zA6eI1={zXVf#&0Qjg&sOwRxJTae*4)dAK<8q0Ui@4yD+hyHNr0m4+bX~mM{Qt z4-Mjk*JlQ}qz#y{rffsjs(-xDKxj?jA^s_0^9Q88bvTGZ)`c{XQk=F8Tv*-dtxO9YHNDweiPgpl07j|H8eni-JK_xNF$xr?uVM=cNIWUT-L)%xX!sckzJJdZZ9mjG|5Q? zxvT*?rK7_oR66a61U;fbRnI{igq&%i?CH%C0`h~=lHx>5ZUM5h@gj|hP#Cg-eyt?1 zNqg0!e~>1*kOpm%nb|60mFTS>!4&jlE)@g-Saeut3M1b>rH`v}wR9RRx>f7D&;>s8 z{q~sD{{&y*+eSY3TaU^lN;tB}Y(W;of;`5<5qa*&^Na*DV|^G`2Vo9qzaKH;KVUn$ zvXrQNNt|Cp3ld;Y)L=t160kzoB}P=Jz!$D?xk9I-Hmwy@Qqb*oXH{+i@agWeGcNn0 zk8AG1M!11Uxq_!Og$X__sWBDLhyJ*fn3`MTt#ZE0X|=oh6i`GQX0%%#%-^9*+!;qe zGS(l(_yZBi=xXQ+2~T496bV;Us^b`_+Q0$TQ=wwNO+#rqP&cdJy~3_rA3K9D_v#mi z*<;wFY*u$9eL}*h_m2!ydxX`2|v4m@k;x^Jal*xZ^)AEY7>BH43atDaB@yh=Dha*u7y9udbIGQ1GbP- zLO7~>I#hb7uO?RScQ10%9Nc+ z&VP=X$G(Nk`fxoOgk9oVJUV6mNQ1snpB6gP6bl$c^2x;E^qyIpC6O%-nEPT!IC-^0 zuch}utz`sVc}HJdgQzPn*cQ8pi$3#J;E+j5IbO$ofC`#I!(XSkOF+5**RyFM7)Vwh z#M)uIT%9cihTn9Mw(pC{(^^J*PQdI4V0FB+FTFTm#ALm=$xzp!X8o=Y?3c9WRYyy# zm8?V(a{y13BGFsjDG|~W7b5~(!j5F?j70xeFX6UfWSc_Y z3nhRl>c4CaUb=8#w)u;<~t)8g4ygpDyr<@n7hc`yg6 zg(a9s*QMd40LIS-X10VWt^7C)T@ICbrJ#YHF3$Gb25ghf9CVjo00y`1C@}C@D}~Rs z{S78Y6@=Of%-KZnN*C%BuadLbAko^#NmU1Qs+dtGqZqYIIa8ptccPxP#rUI6*G+N| zrLC!XR3Q>T(^2`(GtYVEIL~b7nI%u0`v6AVAHn_s4v{BN1zjbfC>}gjtBFtk7p}sC z&JqtE!nybLt2AmFCmJ0k&CRqbWKA>~`3L*La@@of%2p4cn9q#JvP~abQ6H64pz*Yq znmr!}hPC3N>H`HozO~bH9l@?zkDIjm}vA zIZTu2a99Obx3Qz_mFzY(8QoB_RH9%b??6gIoawtQRR`?!STA%oQ;6(f74DK9+JZGa z*v}b3tQzL;6fk#~|5A^pfm*skHFP;C_b>@SE}UOVL9|`{lF?!5eJ0C@y8(uA zNL-n>ikTkS<~R3*N+r4+dvlJ*xo*NEph~Csp#a5Y-1UUnX;~|u_VDkqNl%mbc6E%# zC5m|U=!5K+JzN!E?1=UR4#9p+qxz=BPOMzm*A+U(Z_|z{CmJ{!Zj*9wfNze-JkPFk z_+Qo=Q;-hqI6SUCPjaM`9KoVTZP6Rwk zIJN5mq|jS1mg7h`gcIVZTMo4#o9+UfdZFkNVe|}Q6No*IFdMTIPgd{r&#&>?PURSJ zxM$7kJXh}&wd%!+5!t{|NoKTEe@MXikD#eYU+10KFcm0n`|(Cxz`ec8|I zoH$Hfwmy+)Eoq@3f=fm}7!@;Phxi=JSU6gW9`Tu%;Oyucf`fskmTd9WRUAxfDCKG;urszDiiVhu^*8BOJKenti^9cPXYXFB`0OQI3?Tn} zR7R%MjvNgj8GlUS2$GZ<1ls?E#Xt4`gb{AoG8qf*$nTK=gAs-hH1=7b7ipL@Zi>BH zw`lVOv?#nrD>_HA*P}5G)zw5nm0V30)j7MEvlk!;b>iV4(k|!rwd0W`%7xTdTntO9 z>8ur(<)IB+PTMPU5K_;>H-%H#UF@jv;(S+dA=rp>uWTKE3*e-zy7drJ8y0cPW+M9w zn+%Q%&EfYGL!Geyc4scU!+}4G`CwD0MM{p&9Hh4XmaPF$I?p@~YC$>?KO_8Yru(il z*$tMUi8~OE?t+64j^I;jmLZR6lk0KO9Ie&{gQl38!{79AhrcAdXb+sawBQY(7|%ud ztzz6OCZ@oejkJP0_g~wQ0+x4|bQqi3VGcJ}awtPQiTx8Bm05gsTuJR^O!UNC(fDD2 zAXQsZHFPnDS+sppt@#aF-hk}&cw$qx96S=AjGPBpct(S3KJ za5%e)m8ggOoX558)wIcj=r}o96&pwX>l9W_3mt1yO_*CL1ss2>V@ib?SWKAV zXkf+ebVgPCDKhpP{&?}e6#iHu)L5La{`4y7fKwI614G=^)ZCh65@8-?NGVBDy^_w7 zq>0!BP8lAC437@b6D-svkL}Lzz)Zz>H5vDKkRGZKb@LAG5uVIB94HE@JqHS}k8lPG z6MGJn_FAEhBz8fpFVQQ~|@-)gN2TFyEiM z2~4kA9^ir>a*iLD8~ef+S9Y>RBZ^H^ib=7P?GZMdJry5LJA9XBUqwNdoWq7K8V;lRa&73E_HrEhv9 zdgn35@`BBBo_5$KBmFw$UuP7pThsx;mgTc9%Z720&Gr_2j-_%i4}PpNvlnbeOsYKc zr{}R~I9hBJZJdLDO#AnJkI_Wp5N zZKEnX%Wt+po26#gZ7R_Y0J=r z4nr*!mJKyFB_Bs_%TR z;1e)vu@!+Z{vsz`RQx06<^(U{UIg~eEHyIeTFs0KS=5&42b~OQ-8+_sBe4ll+_*d*x ztDgh^z|{}MaQP$6cJtYQvxxd(l!U6FUZRG0+^lYIH-I#KK?J zu<&-(&Zi}tuCZL^!`>#DNPQs*a=m?q+Qt{B+UF6b;{OAlDgFfA=efc=4WIc>T!xAc zfCBG@LR%cg-p>l2F*V=7jk35qAz$6Sj-vv{q`mpv*TZ>5vsqn_$k?TzE!eY3-Tx1c zq>Is)t(<>`kgpF?V+FH7Ys%y!-*%ZknoX%_O}d$#ii}d#nShFB`ONo-4ld4Y38aMz zeO7t*7+tVZkI}t%qfE0`EJEUdXny35Jd6Ity%>3Vegwxd{_ciV3we5(SZ z-1#WU5P@5fDr?ZJJT!#X4|nx?X%aF+y^@V0i|)>HFtiEdt;zc|Jsb1@#BpBvB+2*{ z-0&Ux28aO`l_gd&l!b~q2&M$Gbt%X`21OWsSJxZa)g^*#T@u+v$VhnLJIC)cbQ-7# zgyv)6?sefTj6M9puVgmC&2#WE2>_7?cG2p^9atlU|AnP4CZ}YmTp|D_ze1jv6e{YN zuw5O3h}aep?%*^;y{5V%h0Q!qoXjB#)FTm&5Zi}e*OR=|Gt730Hj)V zZj?lpt78`BVs^wf_T0jRKJy3josgHo5N>_iLyRFkF4sby+{+{PX*z zr1*BV8W4~zn`+NV$-GG)q4`d>2PE5_nd%bQ<_Z2yfX95oP098JNQAz_@x}YPo4jq1 zM7T($*||+$K2gHU^8;V0yLl24cThO@36uYv{mLYVh8ZMU8ey1%^8KL5S>((kR zjxQVf6KIAW08mI;kwsOFBGq7Lfstk~)+1C$XE-BfX(h z4ck+StqGV0sIU61LcjG4hlpX}jsrekAb)$}xbhK|rIYiWtwd8>V;}p9xinryz{}9? z3Xtx+ZsnM(k*aUHL3crU!Agg%R3D&cVH@sWu&sS1N3F9lh4qxq4Ukl(Q%XG9T_Vg9 zdS}J3?GEO%^@7`48O0mcJ0wZKRBH5RL{HZ4^c!}LA3`tqB^i8x`eh}1TMi|r%s6s3 z?$V2xqz_d&XFJTaXB}tQeTyYgx?{IT!ooqC8puXT`6hdhD@oBn?_`sBSN2WHe%!e@Q(*|X* zHN_X7jyBq{k2>D^B^1?r)s8z!7QNSU;NksW$Vn;iyyVnGnFgXH_^G{^5Hda+kX-V) zBUQTbGE}NIu&q61S1d>7UVRv7zuve+*CgF$3G^guNN@du>A+~bJe$>@|BUX!$`DZ_ zov8Z}r2_H-4n42wL zNRd|z+n4Ecm%NFKSV}DKd#KPb*C}-oh#?cFxQaoX9AG_pfv!lTAP)z+|Bte9l!np>l*YOASLv^U~=_ z$onx;WMdCT8surZTUZDS#S|7=`##6^w>T36RQmu`c4EREj&WaHq&wm@+@L^ddeYAcusn@4TdCK;uwtNbTcCQ~x^*uO~1kQS&eRn-r#;^v?q9*~ajxM>Hrh^?!gO6!UXX3eEfAPL@tf=;3!Jg=- z=PpDG6DpNyph~D#rU&wNTks$%g64MUw?tqoa*7)c2{BNEKL9@@zDE>*zHPqFlNZ`I z64xa~35I8Y@PxiXWg;?_`XSWK;vBFhGJwo57>&nAG7YFcYNh0+!kpK0ph@b3Naf%- zb)j>8)BggWJrh&$`FhGv<8$gy;?v*3XW1S9BR*KOV&=uk6!Zt?54l@g-5|I?%lbsU zcOXPynsey#u;e6NQq@|@3Q}z`Qc0JAz~e{Oy9ccQQ@F#3miLLe_NVJV@h9t#0}kuA z7yL;5RXe#%;~iEB<%3%$5VjTllgfwV#05pF5_w^)n6_Mu3!SQC1l6xuHJ+t#YZX&l z4Lmu$_i4ToA4T=v`Q+n7kwB0VHs#gkR%GgS|Jupw#Q;Jj!DE%$WB=k+g6405B z1J5LxhQ0*Q0UCE8Z(t2rDgU+@Ks7W&a_>{OfgXU#*Cfn}But$v1?D+`nV{Nfu%hD= zd%@F_mh2qV6NKB%E_FUYB;5bCPp!HeOzt1?QXNnTK}N?_=dV!p6zK~iUAi-&Xq%o= zIQ@_ZVtvu&wGJolao-vyE5fjUCpgyO$0HN`Xywwf!0#R|j9C{1 z(I8CVHR}u`eK{cG68-Q61{sIpFVP=Zj#g^yYfut0>R)}53Lz9<*cJ|S8j1)=1II}r zeWLC`fQ=o)`SbOM(GgoPzQvA@8&gDbFIO+0ms;U5EQ?X-m1nbh5T#V9yioZg^Cz|r z$f}901F{$~u8CFcrw{7$hxopO$C-R^3voCK`Wo<|Px>wEvk6F{nHVW63^}gvUGA;f z>#5wE#{I0sDFt`rFIWS3tK-3AoP}#ar?Lm8;R?4*w>?hMIz!ls)|QcR9M2<0mAaQ; z?E}8i#~$2~7&^JTd_c+%aNA!Y8nT}J>SBJ29|{{^!|T{!v8kkGK4E+DTQ}pXH=N(I zW<#04C13cgg9=VYAs9dD1E+6~Z{@97Flv%Q`Re0*XRspzHh908r~CS$IUqf6FI$KJ zJM+-?4~Ze8W+2LMJwe&V6sTvr)Xdw7=Pq><%ULgps6hqJo{8VW&4cC>S^#-#oRiSn z%2a|9vY4k%q=p3vN93m8k~7kHGfBq zR0C6*J^aKrT<~${Rw^E!s-q#;+y8)U=x--Ihw0Zj>7B!nUWIgYV4X5#Y$r}Nt^lj9 zQJ4=5}ju~X@DwA)h!c@2IeX3kJ z4eP;5bfsb4O_@#Od}BM*ha)$hD%yjUyUu4_nVacebzJ9qIQ(LuwBl2)F*M;x`F5u}#`hZqn(d+msDRKv_3al0vXSsp{Je7-bvjBG)qGh`ZtN**)tNPWY z;Zxk3RP5jcf8iq@Y3q#<PlvD#ShwKnho;Q-BPe-MS+DhqV;}6c zH&^Z4f{Kz0XTLSP`g@E{>zCX^^>p^lMej}b$R{UahxsfRW}A?`87&~~Qg$o99*XYd z`sq@1ux-%5Vn&L^&hoIlg}=+3+ZVp#r$JNB=Bx}OuBGpIYM43g_GvSxUVpZ)$cqnC z7i5me;JFNZ{LqE+oCp&`AiqC&t_4t__ z2f_(F0=o1jyvEmKOlE`k`n&Hb2mPN-0|8I?MvpT~+R{Ei<`R9MpS5t3wlczJP1Zc3 zuyDS}R1eR=_)EhP`{ce&rZSy4`>18W1D#w7Vsu{-$2$hrkb1hG_udHIZ<<5H*lgNd zFs9+jFGCu$B=o!=kcW#Fz%gh7!Wl#c^<8U*$uW-4Tgh=todRD(WI*?!dfn--0mQRu z?Zf0ed$XGMTQI^&qy{D{Yc=~%9d;&P@%>xY25II&9zKik{1JUouh$`AxJ*xIj^79D zf8<6{H&-4r&%lIgRXf{oV)0X%?^8tUIIvVP$~v}R2r0b|0#nH)1!@t>dvUSLy~W^9 z-xS<3B5OC_S`^|>297v0qWw_SE8)DrL6xv~rXD~|3PgQQ)NfYQIj2L}7d#nyc2VLW z6Jfx+jte6pBf3SKz#gVX4HYvAp$}(^iWcnf0X1xzz&-=!!=9chiNFl17u6W0o10Yd%$+=(ZMBm;3 z%EoaLMV}|PG-BcPIsOr1`{*VS_ag7vBOLQ^o?yRSy*-31C5us2vkmy7s7lmq;8d)dhXA#i)kHdJ2imZxaBr zY)2BG@8X$ak4pW19_^{+?PsEZp1+g!Rp-3%7LXqNmq{X<|J2`zcfR4Z7LvlHewfa> zXe$?&(a+S251`WI&Q%s0)SL&r?8izGCS_aTcHI=Y3~y+r%_n~5u-R@-JXSGy*QAR!?7s9z5uFf_m#+>xMpn`6HpnM1$g4( zTydDtzR=hg8cK09K%Kc+bMz*9_6A9w!Q}a9u=ANBx{|VS(1hH@Wj1n zHGM(gV~*TQg`Au$m*cI;yObZln2q}JMyjz^Vuj&NtYDOpiAy`h!{o!RLBplDj{TV8 z10E~-CSW+NoQHa}Q|S*=Nd-wDfl{4H4?hJ-^jmS9;!|B$noul(ZVfR4vmU+z8(+?O z;^boKb!7a1S}cA4^nb8eI`3t)Rxg(HXFF~`4fxTs2sg1irgtprExoH}!o^0PtC@H( zJD`h-85)tQm{HV-C&`Iw>lBR8qn#1?7G5|azr&MJ4xpn2&|dYij*gwqv~J(SXVo$S zc~Zwx_LDs`)MCUY`0X0zSSlBJ%la3u?KGJ6(ywKF_xj%M0meT{A9(yLG*o*n`mO7; zdU;(qjy;7CRt<)1BXIkdYf!uk#;;#bekqS)J<#H=ZpM&CUf7fOsUt8vo$@mfR|_k_ za=@q;2O$8c1ps#hi!;#gF+HrE6CC;=1DzF$Dgd+rtexOhyOkoe#?vW4GaE3T}JdQ0?RHwO@HRiP7Q|<6aa7WJ5(1`#Xcm3A<17By4 zv6GD~?p3Hid87U1nblFlx-E-$*%K!%vbL-1COendV;DfCzWfcWv?m~rYdPLtpO?73 zK2L71&+ERuJ`bA6b{s`hzmV*5f&FYj4eKO&OUvCckk^wK`J)%ulTV;ROQW=ojM3nU z!yjS0N(W@&Sjb-^Tu}?bT~Qr63fw8B(5uI(UkpN;Tz;91%upYq038RDq?ViR(M$Av z8`8ylVSVnWny?1rJ%47G@8$;MSNvgQj_ z!8ptg6y=>}4`CIIm_RanDYEA=yLiw`Zg~}`r%5*9xnNKkC$Wx-TDTc$F7D4{e&g_y ziA*Vv#`<@EN;7yi^1`=od+!HS8dskw6I-sLA&NTGSc36cO#lXBZ;c z+1KK!g-xQ9A5n)RF7_bt`3wKp{PTeL`-tz1`XesqA_LPkro8>L>);H8ALR|dcaH`C zcTJ-T;X?pZ+=NUmIND$`#6GkLfi^Dk$D$P0NumC-Mv7t1Ie>OP5t+b59a=T_w!tu@ z9HsmKVAV)w=l&eOz|*X@-A$R8yg#?Me#7Z9V7~4#;ga{=|EHVYOfn?z1Pj%HxPG+r zxpL4MJA}}4Xl#58uO$h^+`9rIt4v0uw-#+fS-VsiRqN`>uM$v8m?(f`7en-heJX$$ zkZry(B3y~KxWkVLedQ82YgsV>nOTN)c@{35!zS}#hUJ5ppy1${Yg>eeY2+hFK7;>< zs0U_g9x~;m>JZJMH~==*PR?y82x=Rhf#O=GjIWf7?M$N(UCo&uxxJP8nfw?RoTlfO z#^5rzel`pMM3G~IMi0(pcU?=K{8Zf`Pn=7a=U#Oao|t*rVJQO#swW8>1HY}09l|$& zxYz-4o&#d21L7A1fvRTVnW_)BpNWW+`7g0w&!Gf+*|{7d9|?Kp!UVThy{l0cKeR8e zakl5X%ggvcpMb!){>qx0!_TZ>!_jXa*~-%+XPdkAt|c}_(|zfO`|VMAM*7@5pZTQ^ zhQ+E+XjL>CKS>{xKCC5nB9jYnoF#UI&$PeZ09RbFj*BNs?wY?3DX6bT(6M}#CfN^71jpn%7^`KYaD(1K5rHMc>_yD~NEw;%jvlfI?R48=JDU*KuFud&79~zw|H7 zDB3jlbR+E*qX-`*8~LhOgNMBAYy6?F-~H4VvVilMZ#IxgLWji$_e!TC-`Lg{t_PK> zP%4XGY6t(ufrrQ=^YPt>wJ?bH#rb0oc2ms@@_iO|Ney#RKKz9i6=_=#hyNqtfI7O3HQ>3$dA7>a8r_BTF639p-+}!2KT;uImy@rit4jRx8gle zgqd_tXgdcSPP;h#mppcK6S8QQOhn;}=q26XLl5snFNqHpzcLPyP-b14gUfRAVp%=q zquGIN%%U$B9bNRsqLU44b{-_`+#?|Ds@Wh6=X~5m6WW41&5GWcI|ms6tuxfZ50^u< zC>-^-Q2|1-7B1kmHU06)2XjxXsFyqxea1W%9L^(w5p>80!G6>^tpc8gS0|%7A9fU< z!J2}O^te1uKA{KDc0k4cm~0reIC==pBX*9cB6E;KD0IM_Ws(yD zWn=7614@hu|9t2%xJI0)G!c&GqWk?+C4pZQ-x{vx!sG4z$MC_99K2d1L__kqe`zhNpm8_oh;MJH$W6#c?) zofP1OL0|Htn|kD&2^5q1v~aop9-!a48lSY;7IORT%W+@$D_(3Y9gdPj!3VRt=V@FG zd^yZkZ~*BecVqa?UuDK1@Q-7wz6qFHaQUV+5)z?H$hh?CY@_H)-dHsO08k2t^NP;H z-hQ$VNKkYbu9U|b1O1ukxG`BvCuG;)zKo&{+!@nIPwWlQTmszkdIV>X&RNC z*8U`3Q`>`~$PdF6r7bPZ4tlCL>#G95ZD|+_NbAAjU^#O5Z6N0y{VX~(INC5LWX48m z{fGeQ>fQ|iDtMCb4_JP-l%HjoXq?0H__THl8WII5!A0!e;K4Ggoo^0ljy;%T)?H0| zpdKB#QVCZsRNsXN<_<1!xWOGciW)4`zxDy5%A%&kcrd!_!s0EpDt^uw!%Aq}PXtFr zN;Sb7mU^<`@HNS)Bh**UCRncaC$Z4?nJpfYp#4ITLa9LRpp4OgetIZRkbWP>>~dLC z3Ki~kQ0o>9ARGo9=mZi|=8@ycCepRR>EsoBUeRo%XhB|(RTf3-i2c&C?3$~yiLS^z z>wgvt*zza+(qiRWGQ_~Y>u`#Q%-IJ51(i2aa1rvaG-L`^koSKOUn#uq;D}{y>iFY8 zN$TH_JJ6lJ=Le;zML^Gb3wl;MKhuL5q)}ZM9Ke;;=CM@kj?4{M!Q3q0kauX2kdF|8 z7x;5yaLzpwdoQiN#(jN!MIZRxBliTT@?f{bH{_qtu+j@&ff}h*t3fd=kdSwcE*&4# zD=R*?`8E0nqUJ62CaQ+535Ns6*e75f8wP2G6PwmS*nPo?vzaQ>H{@Oaknb?d-+2OL zlep@JT4ihDTU9Qn==r+aXP%H7FlRywGtmgjYw+;9JvD&#@vKes)TC0-n_jpU2)jr4 z1|XJtmtrc89VP-eMZUcX8Jk0j;2QcvC|GyKPD_!0_;72EBZWhou~Y#Yl()u?^4Wli z5N_p+NdUgat++W4GU(%A--69C=S!_?0_Y1Kk;Kf8FN0CZ%OtT9H~sibD479s8afQJ zk!k`Aq{05!g1`|_D(9K%8-C^|ehKsh9*pnV+@AL#Y5u_ZbGVcwv~YOkf;;{NkCyX! z1=(KpoS)p$FJMgvZ{RzsJLIl|7oE=4O1H1^`wU;vd*F+Y2+0rc39ZxjlkY@)>{-n= zgpQA$;lm~K@`LW*BO@5mX#BLFTFvUrmjmV}M&n1o3+=iLo$5ake@ae-&&AXevwZfv zEHdt7=Cv1{n1@q~c{C!IBEp{*^EH0bFOc>H7RvAz8V@oL_E}>x{Y5+6)#t;iVA!`o zx!Ua?@}c=|9ygH{#s)2LSwH9#PyfZ#MhG9ZQ!qzyVK&0x@~s+7llHGG)k zY5=Sfu`A?t)CvS^b%y0S!*XP(1u$md4?(8zhamIvhhhzUn4_>mz zke3stpSR{3s7uMmS++j0vTg@N|B)q8N?80hQ$Ea?3pCR zn>}UDvs9jzXFdvQgO_Ip3eHABZAlA@`K;M9-zhNLdCt%UA@VuL{Weph!Tv?vIe?a< zgP5T%&qju9ogs^lW>1a-CEIys$3q-`K_aff>ll%PctL2ZR zO;iI`c*RPtbMFm2tN6XTK2dRM1reuIBx;&h%hVrLRj+FP1T}BW*Lp2+d-RJR9m{1!yC8*;4M9X)2h2&tkho}9Qw z)-@yNr(~w^?Is|Fva_$`xeyUnUJ(JGu(#kZQ@Ffksk31>~<3vZh>8M?1ypz4@F zZELdU#O*AaUEn|ehxIdxh*iy@#1AHyoZzI`xa<^lV!B-3z--d23*VdUIHiL5IKqB8 za~q6PG{lDb;c1NEulT*IzXQ6hn`hoBj~LJ9MCz+H*2s$K!%P%4=5z69-)y!$oJ84K z^A{v1#B`f&&)IByOtWn=(B@~``7d(D^|}0X;{#yfnG>^;07TL-*TjxP7mMWh@&PF;9uwW|(@V!F3UI_PO$z zQNxQ!$ERS~+cuDS9bB8oGFGGfkWt}>@#yr|q5M#Nu^x_8y4jCXwsk62!;H@BLCquK z3%I2i-nerkUL)HES|^SgpvP>zVZP#$p97`bdXr_-_?QZ0=Mli>cJiXri}Zz--|V2- z0^9u7K3ns9Mm)b~#PfSbJilke^LqyKdt*Gmvl_3XZ2o-?q@EeizlU16qO;vyUuR>5 zj@`CNLkw2=&?w=->sv<11OKm#*WCu&|6;suJ^BB426!aI3;-AfI zn(yNX2sXK4IVA7CPi?3^MF@XLaswbLyML=<;2W2*4gBH+u5wRi-5y{!P*>0KDWVy= z_A4mMHelM4_#4aOBM%r!pA)CI#NR;QhVVCCeCn@8avZ*@wG12Cwu-(E#WCAU{QPS` zaq{_|pViY0Qc!Q^sAH5l`c5fX+Dm&A$*tkHRf5yrVMMv`+e`W3mHC{V<#iJAs`0ar zd5Pj4zWMnjdOod1wh2+$;DGg-6UE7rK{zPT+n1b}EO5<~A<*I)6yV6w3n{boD{rH* zIw&=NDY^QV?zz5yo)p*j4+Zk|y{=yj!+dHg)cY*4IsLQXz3y6_mCWS;rp~t)+k+IH z;YQOITsL#U&fe12Q>6vt0%XTyuX8_`9dIeK>!Mn(v1{I8Ix;#L&UR47;2v$7t{8Ml zz{nm!oiZl@05d09vc+h?kG&8loWYmkPz4%G*2U9Wydn6zBnj@l#hwP$=0rv$Bjp(z zj}iS5IdCfbf8U==r@YnvRB24c>-p%L0M6N7%g$*nrEU8)NApYPn@vFWAkOIL`O&f&siasPM1!j(RFk7l!ai>QJl4&? z#%;rzG9FRP$f^@-XSSFtWHxK(%`@-EZ0nYD>wM-MYO-B{?7xagAYsGLM#b?k

IB z(LD8TIP&Lhcn<=J9k;eK@}+I#i?Erm)7PGWy2cNGVgkLfv zpmQdu17qCY`B`D0AuPacu2?SXtotUz#iO=QVD`Tza+{ zd~&xu=cJhDKpF@##&i0im!3V7dXM`P_l7f{hwF>&>|-rwKE+QO7w4gI<2;$^#2Ni` zY-ks_t?x>#J+%d63r;2P47NT6TA8G`xq|;hZgU{dLS6yA4KZ?tXT6S;V2Rdmly)%(~!7tvD1Xy-U zktu#-D{orj!cN)xuIZNM&FV#^zU1f0j^Xk}=gmwveH@SMTFO~*npZ-SXqr(Iv@PX? zV|mBWn8hatQ)bpBuDuB$WFOqQk$@Z{-XN&_MgO>of8$Q=>e4VJyksPc*!Z!GANW%( zqK(j1V}BL#pky`SZi4>JKU5d&`*kn$QFj9uvB3)%;h2Pr3h&p#{x;V}W)1YzxU|uwhY3OY*S;%ARW*`IKppGB$1W#D*HP7%U2m09Z(Q zRv=zTv0KH@_L`C_i4nL3sQN&%0OEYhj%K0h%fjf^0(mHKL2(ei-wZaCY zZ)&;!(jVHBKc0_p4?W+oUyb6|URm9CPE?{fbFdlvnENX+4dIZTQRnz&5S4xQ$D*E4?n*tfGife4sm)i0YkJynO#{{r&j zdj!Ja-zUhqX!dySc~{K03miU?xXRpp1B@%Z;I`4g`r9}$@m?{b>q|`myUTig zT9D&~=J+Z-DZNfxbX|NOl-8y}F3+MvzWYOJMsprtr*&QnVw98&IXHd*FVEmZ*G!$|}<%>=Z z(x;aqqsX8f9yoiO#;>DiC}xKP9j}*Oas)811~2{Yb#&16JNGJWyAZDiw3=PaeWOh) zyq@8?<24XtZ4jCgjhC5oD7?*r=R_mT>4FcJUc}qo8fO?^9%KA_!uYB@#zE*y?mJYc z{Ml(-KKFhTe1H8*sNYjE7o3tIPDORbl5XzC^b=iQ?8{d&P>)9p?l~?eyX;arHZSm2 z#;AWb75w$gwPfDqRjo{$f46U+duF!30XKsF!StVQ7-I?v(?@9khRay*1`a8^9Dzsc zopjIX)4;Qy-$B=a&H>jONtu@UD3 zJz(gPvcr2i2JtDpxhme2`S$fbr0vJ&`Kxv8jgG>`p|oq;_)<1Q9E@$vcJ>g$hJ<4( z^Ai$svnO8pI(muHZmD^-zW~D_dgDr=4pAHGM~(cT`#YD7^N%XkRRQrTyIRLv&v3qe zrkUS!;5xf@TcYC{N_XDj3&35I6%_cUX46Xg+)i_n@U+Uc4{v2>b_OF&t6NIxs;lgh ztBzB&z-%k**g+PQoo-wy{WagEjQH}TovwiG#%(08It94DfWAnWH z&YO`}b8dkW80`Pzn_HiE)o);M{uc4+k+(9pmTQ|EBX2DisSC(s(}2@*5C<-b5VvZN zi2IQcw;IGPrBj+fLfq0k;%Lz$Zu{5X2yv@p#DOKb$kwq`4spz$JmR1O5UD2y0-y$Q z1(k(I+)DRBC4jg#zN60XLq+CRSqc$ObK z0-it6%C7JJz+{`|}k<;hS&HN3= zG^6w1OI#uUgYPZm&*L8%WB~#*@3-a#VtD-r!G6%UQ9M&Bp7*I7{uF9>KV;oqeeRK0<&La14;Yoh;1p1YujLEi-L!`*oH* znsJcZFkX;N>RDz0D*Bd#DDQqlJc64da)Mj0n$U}v`g(QVvOyo0>en|+IentC<9|SH zVQRI0^`*M`2qwC0*`r7a>&Fo#(duW9LrNZ^%*E;(ni9(%O9*yv+}}ALfH!lTI@~gc z%gWuTG|_&*y2r6F*Hyw5k%OAqP+Fb=$sBM_>^rcEwwv7;2-_a)81f3!cm&V zv%X`fSM)7MP^p_tJg8Sh4)x}Z4b-cR9O_ppjLh7nFE94$6P5iM*@s^X^{X$ngpc7e zT4vd!NC|n=AFmEa>(r7PdbeaSxjWFT9kFw{$E%^9C5Isuv)C&r7DyZj2dN@G+b`@9 z?`Zg^{+go39=Gn}O0!X5`Rr}|kW92~1b$*wHQEaxv0Dinfm>CZjerE6?(A6k2QwYm zR|<`{qS5s?pDVP^UDBvB`17_L+`%S)?zD^@7n&VYAI+m`TT{(jL87xl&>umW%wB}H zn12{(&mI^Q%C@BR*eLLGsU62v%DunNBg0KG$0CO86O@U67#0{2qD~#aYfcr>P0=x9 zzO6MlFQ58Mg4*7%>--~_j-Rk@+gH5FD&u)J?^88qMY$HDvirVogDcxTnl8^JSkrY@ ztABS=n*Jc&RKeEad9U6yXCL93N|iM6*4~R|ORq{gULUjg68JHE;9K8hf3vAdq`*)A z?(G>5;Y`O;XMKy*Z<89N&BuXw__hagsgso2Mrt~4=XF%3Jmye>$Dx#vOyjxb=iMTCkU5<>#7y)yR9A)rt?J0sYK9{Jay+rgWV%nX~xJ z+I-Kd1>rne%a#jUzjz>rt%HL6 zpZ+C3RAGRwbOU|0Qf#t}&BHapP@0)4ej>@-obI^0-X*x>nS_3##BEg!vvAl_G>9!^ zUalHLbJx%aGq%SaWpBrmbn(Nh-?RLdFxm;vfBi-5Bd(*-m_hui=J{5L8g<3zcv}PH z6G#i&Wa}M%qjo$@>FALE{swUQXcqAo-zm6tJtUf^jJdO)WpfPBs70SWX^AGi*Vm;? zE-KWtWJFC1eN7AYTob%qsX5;MdF6z+TQ%{r+V100zOq!8etJJ}jF%D_Iouk7oux{$ zF*{WdMe9_xJI;p<(xZG>h;auQ)Nob#n;*eNC)Rl`ny?%rxM*Gl=n6M4~!t6m?mrZjo*$m81nviB8L$7@cKFC;o zhTUC0V{ZSr}~i2IkA(VVeU=|`MFI<=z%R5LrpZ)5g}X0gP5i<&aXeS&4F+l=v_ z0_=3RxhLh|E}FC~*XTilNV&c|MhS=~;THEvgY1f)_3R2tT-95ED|e=2ptVyEIv>-+ z=Ai5HY-OlY&6PcH6QB5`*SooAh&@H?EYJ>Z+ym)uocWP{j1uI=2;~tcLyqs-0ds#(>C&M1EXb16axPkct3+4hc^qLct$Ms zVFR?&hlLuq#DMlFHGY1TPh6nH_xv-ajD38d$0e0|^=8e2B9-ZU@xwX#bBg{<)SoK- ziFu^W$+!E84T3Q~Y!K``RA?)L;Gc?su?m78y%s~zOgl~sr#-1qZD>I9rr4CX)fDB1wiXszFuGR z-dA_U=Yhl(@cAk7?uyU4H^ArIuf_OeD=R#@Umu*u=lpvNpHsScUxCKO%{4M;C@Te$nFfpO#OZNGMT{M(uqZaGPjv(tiGQp(4n{Yat|L_^!19SGxzdE!s$7~eAnv!U|p*v3vKqezmUXa7T0nocEiGQ4%KXL3)OCObLWAu4qLcOTF)he zSOh%VxW>wRHItSp%1@>>hbuMFxTad)_&hFly-9nEe0$38Zm@7}b-IRM*;A=rT!-o> zE6ddj5P8-vQ&e2NP8(Exg}%A!%k@LuImlOUjO$~B-)tFP;}8ioXspEcoE+^BDJoi~ zlz7qeQO15t)Ii?J95nje0R;q3>yE+LsK~1~Yp@Dq?3wQ|ISw2n()}BGbBx&FPN{Hl z6W13tG5FiKiE|YRvE0bFNSCW%UVj@z`#*RM`$@?;1zWC>_kmHYFG+@5y-GYtm+3rL zW*D-vhz>cpL!@NPfBpH?GLh-d4HvX&ceuI2@9xhv8xw1f$3s$q&AdE2%T`1)_9KeTIlL4R%UR~PVgN(`9C*CiC+ z1z+w2#^_(g)L|;~2AFzhVl<`>Q%t&S?TWX8sVZd#Q}g+{OZhXJ-^kwJRV?G}*qU!S zqmLpCn;y+bJSG%O7C9S@rk9%8A;%t(>~glaE8Z^nCSB5wd4S5Qu{Onp+w2@v$Ld5a zCrT&BkMJGAzyBBQ^D_Dt_s{*U{Svj0MYpy8qT)ujUm3T5&ZzcHK7n4gTm^palA+2- zdhzzZ|1*2eQ`friWTgaHbD|}0c5`Nb6{lCJGjnBjT8GfF>vS@t%q_~mz z86ryUe|&WN`Sa^4bTZV z%QJl2BIx6*YCk7!Tt*|(-P|pFM3XMcr6CVRljiD|$WL;~CoE^%tk{mCzHe{YQ)Hgw zPyN+AdvxlwnQapbiP~Cc?&S~dzHJd_0+WtVZEqt+wT-pfTED;&0@K50;+Fo>5-ge< z18rv0ocDLUvRCV|{2kXe@#>R5aN$LtYhB2fM*~{R_51wKwjB-(Y}87!pQHBsuYhW9 z0(I!KTCkEjy8w#DIy-|q(r+{5bZo*Hf9|$?%XPkGETuRd$GG5wRI5&BD+ut#Fr9!A zG{?UfPOOei3t|g(8hb7$FZlO{^8VwsUYosxclzp`ztb?Iw3F%V4taHW7^A@pdU$OG z#r@m?jx4xp)tB7*+^W*%MB|lA^ZnOeF0#=Z-aFA6m_^zDq59G&sUo(ec_D9IsvMkJm1SG1@~^;*V|~H9{tz z@|{&B#v|S779Z~#XRivpvvM$$cUC?}4Hlf0e?O(STjX=M+)DEB&y(c>9Z~BM0{&!3`mhlvLz}Yr>DiPG z^oN5TS#Gqu|FVJ}qdz8`t!b7QtWD?x(WWUBW5{)q%2UrC>}#we~bIChg#1}ra!F91A6Qh*Xp`sMF=Qx_&2>=%Ki8A=xrT$gp4L)%zbMwy(kEG!9XPEYEnjEg&YgXA!7Ie-{SQ#;LH;5 zYib;`a`^7&lwgl45m%y z1+`$YoiY9qIk8h`4RGlCoqLzIy$^QdewJvItuiED4B4fYU^N`HCYI9?SWkU>vf zKK(nSC(j#qZByyc@E}hwa>>3c(fLJyhL4^&zOHKrZ!vvT-s84rvbAKWzfEBKEOwYi zT%z+(R(JIRqUcgL5_BUI2ranZz^xR=%ZW}oJL~LeD+{(ho0SC>2|B|9yiZ-sTKxda za^`u4Q}C_VYzBd*wmD?I(!Ww>k3-59n%#m zr;U%QjyAQ?MH{LhUwnd!e<+5isq|R`YW7NZ3b|#rnMi$%BHnZ}GlSp=;P+O=N9MC0 zSjc*mvgX?VP8-=?WcV`WL>sEF0M(Ds8vyx;$26)E!}Lc;Z^a#9V;A=3kpBhWH1cno z=r2`GWe=F1)Z!yEPf|rOp40pW&tFlm7VnAhCiY~0W#u3}aA7;Wr`(xiAU|6`dl_)E zf}B;}*@Kv&>BLs?j0!6B^v;};M>caO4U3%2f)kHvbjTN5JxeHyXC)P=P+Pg5k(jLS zVLng=L?kOjZDGd1x+kv|0?uFR=Rfaq;R|^e8*cYe0GETidd`Y|&;P%$UHCn}KTG&K zd~5ig!+#m?+|2J8e2eL2q`YSSlW``hN5jvn;@U+u*X{S_BtH6B_Ny$p_zY>_oAOPr^kiS*6YZsNz-1 z11Fepr=vQfL%y|`8TmHCjfwTG>rGg;h=Ag7PdcrqXOwHd*x-$p~QM-xeuqySpIYmhO=2)^6cC zcwto>Sg#RbX|#25zy^jz?f33twR^i?4DH0N%$-M+YW^nQQR}_8cb>pT&14$3G~u6} z9)Mx(7zECxODvc-Lx=e}BtbSN&Hd}OuW^TR7nS=Pwxk{nKI(W$DL8H#OX{>hjxXsx z=F`z^7c0#u51eK0?$;^Tv3Y`tKOWpT#{&rKY@1=@m6cDk+S@%G!a{YZf_^0BvCYz47niehiH*n^23TNL{Zi>)Mf zTv6<$7JDT9sIYzjZee}=7vP&{^^At^2#XyJUzx>@hVQx0s)wWDd%$AfDt!1NKzKu{ zrI({I_zkORG=!I0>}Uwjv)IuPHe2jy2tQ)6#So5=M?HPUP3)HKE^gd1LMdg9txg#X|{RMmL)xmkE zm3Q0Bt{LbU+Uu$Y-lXTPzKM2w2HR#y#D^R>QL zUbuVr%M5GHK+}1yx%S!S#MEc`*z4py9X(^~+n+4GMKd|kxRLm9BlDRb4fpeWaH4^_ zIe6xssqn7m&^gaa?I_v{U9InQldw?Wk|PU7H=J%2oX$h>%qyiO2!VJS;<4<~4Dveu zEfLFLxXQSwJ0E1NFZsd=C{E_dj^Go`s_`dOEaMdJ(Y#g1w z-Zl46U02-SHT%!uKz;i1Yw=U_H(h<`Kex1`x95Op^|q(3`7vweR+(9yaHeeSc?sSu zytu~MBdb!WRfJi@5FQ`w_&Dp<{f{#NlB8nDl=5su&HLSOgF z(RKgG*S(Uu{b0-^V?F-OqK2`1*UPP%EiI!4Aiuf(kg5gcD&<)-##6(sSaJ|yZ)5|w zoml?f?WL&ObLR_2?{+?0fw$QpdS~DD&}zpfejSP3tz5b{j4!Weqhbo=W|r?t=@A#= z{8zrB0uV|+$pdk-%9uk}_ilM{(23gvp9Uafwy|C-8TMrl=8vV`N~$V*oXVuX`=$NH zYI=ynsH5WZ(KDbwKi|ZkV}0&rfxA*wN0(K)8!1iaX-1FNe2(a%^XfwWS-JdeBl3S_ zWPaAGI(S6>ydhq1@plW2BGh*FEGgG49^R5Y9AaZ1JsmYQy1y;%V{-(@7KDee#~ZCQ z4ss{Umv|c2th_TG%|@fPm=fFF+b#R1bmP;?KDQtIF?q3dp;jT~U3W3>a_em|JOHwx z1;Tc-UQ&bXqqn=O$1ofnTY?~6c8*Rvxxx|1r;bFXX#ts~$f%3IrqJN`1p7TwPyFmo zKO~1z_h@;xx=B69(j}aI8y)Ns!N^ZI`*S(V)y#bP42qw(Lq|l<5)76j?;Ta%RJxO! z`=XL6?Fr zj~nkvU^9AI)ceNpRvr zT`0nJ7q7s~qp~x)O&+~9(fNSV!bqD` z97KM(XMSQ~PeXn9Vtvg&lf$VqWT|&tFubwtsbt4L_ggfZ{n7B2 z0${<>_Xjn12j~4cD7`a?n*L<^n!hKms$Z%~A!|q5 zJ{>i*et40a+xxa64X7H`UiZ z(sp0dlnVyh5|HhZBC>T|WGmpOus)>A=1Ax2xgd+gWHZu5D6Z3rKK>5qp0Q_~kdS?=ajJqOs~XkL zluIjHSpbHT;q(dC>%wd=*01LD!xF)g(K(arcTS&Nc*70;6Kp|*>YHB2a3YZKhC5T{ zH?tVl^hc8EGwtVm+$8Abw=%79oyr%qrkT8aJPp74d?0{ChSpR9lB&uVX0`ohP{-G^xc zd?h-+Mvv@CC`7cT^hA84bl$OKUm0=^_hb*1|HNn^D>c+Sd$pU_Qd*K`<-^Gls}BAu z;I0w|_BFAOWN%^(SOaG(0}u;^xuevc*#CC0dCJ$;*U9MgZ{Z#B>E>moIj@jFXiZe zd4c|WME@K>tV(p92HnfE__*fq_@n57F3Q(;yp9L+Bq{zSgpt(WE=&m@;s!aljT_}a z%DZj69(fr5Q5zGrV z8!!jIrR-98TJ|Rhym?o(W47$N(DdfnwWM42Yu{3KS!IyD?d&(NS!V6ZI`K`jhW#Cb zWAWD2y)Q*N21>$Ht8?nbQS#r_PtT!$wsAuWT-S{d9YpH}`M4)Cl0>H=Os9q{dRYl- z<$#NJ(f)myd?3}37FlGNDklwFunNmEZ4P-}E#$G-Fjc8UZcizzypp|~47a%p4^yS7 z$x53ttunDJ)oyj9T71j|Vy;$@yFYx~*b z5S&~HPACMc3&E;Fu(A+bLJ*28*&xQ}o^ayooa?U<`hKU;l1vmWQ-AT>p`RVrNBlIrG!JaK*DNfBJ+VN4U8#PbE5N>cj!2lYj-P_l7)*r*Yink81Z6tUY>6% zMQ?yh{iocb2mJx`gY-NdsSJm(Z66HMYgD_o&*^nlgn}vSG<2ORh-?I22+-42ru3{2rZyTKtIIA-pfI$IuuNa=J09#cr3$1?TXHx&G1wba0^)i zvp5j5u9CY>xsNX776!5(Ah%(O3pXc!mxy-~F@Y4i?!F!lo$Rf=_ff@BUd-I*xg?4m~zbK+W(`pB=a;OW?~5jPF#)>{ea=6Y{r_R8wZJG zV^Q2*kUn^u?H_l#U*D%%{g4t1R<^0M&eC?e?1nqs5-r?hBUaYLQ!0@;p2Yx zaBdpyphrxj5@H!&we_2GtSxnw1jolGtm`M}zH}$^bqO(U(i2*IQG2W#uwGL68Zk5X zi>Eo=jo;WeC)3j5wnBVQ2xb`oU2dZtK zFsN259(MqI4)zJ-Jh&@;!YV#$(N3XgrAN`xGAkBE%H%HliFSQYHiu6)rEe0}cs1P6 z6|GxkC|aXJ?jK~^nNkd=x+%Tj!OZ-*vL_mPWZ8@eGU>@PW!CgU_<*|rQH1uC-#!1h zu>os4HH?7N9KMEWn$VQ!lu3H#CFn1fpC}~6O8-!gDI-6Z8_a8b>?`groSSLTMe*Ez zRU$j)Dbgf!Bd5>(yS3&MM)-;&^&WQ<0tS?B#aM`_B(GN9&&{)Ox^xQc` z_F20ctjse^xfl=bhP!azYLt_?pXj9k-zDTDx#e!;cdHQp>LB#V9-Kg*zB-ej`NCH~ zT3=mN{H=_?74cU>2I=}M+%6Gr<##`fEEuNhsL%9^Pmv;B&@xRr2tf-Fgka6`2mnw| zFbIrMFoCsLC838&e}A3fvS|#`EDy@7533vdIrpfL;$wFmvR8g+D6=wt$h;crzg3E* z=xvfALfyVacVEG~-Sy$A6-X;rRS4n>GamBmlso1lZ9He3G88e&oED@etHV=L#%~V; z5_LBS@sQKQe#la#L-bsh2e(Oeo4+ZNtpjeO5hjflf|L9HYlPi~l_C|zFlnM{OGzEh zhe?wsm9EqCq>_%rBAW4sam)I0?N4?eYi#8@A+`Q!i{JQ$g@M?t9`r} zoNInSQQ~Hf3`25wBR(cst4UClhzI8c8_cq)4{0-*A!lN)klf!JaIq} zW$w=;Yw&){m*KJ2+1n0p)VQhoctNef(=0FQ)ZQ7dMF^gWYrbkE>DSO$cnISvBJmtu z(5S_Y!qS9LwxWa?Nbzm9%-tlcOuV;f{miXe=@SQvU$;-~&>YRF^J5!EZH{dU^-YUs z*luqCU?Vo9)?_$lH;b3wEvSkFHssxP1D1uiNFJ~SP(QKWde}swb*nAW3SUOyohgCO zW8*lyP>3bw$Q(aSn+F+@M_+2t(%6UNW`Up_%V8<}h{nb60D5)H9GW+;GimQ`27%Bb zBNZo2MZM4|FsN2#tlzjmAm~a|EXJxCv^ zRFPI`K5wFPI}wsLipIzNQrSDK4)C*%93XG0HD>sk@&~oc>a;?U5|Vy*BzcfQ&r-=~ z-I7Ay59aeKQhB2|@B7J{pA{>Hl!~FXebxw4ci#<~3X0KGSZFD!&*)P$6-sQ?=BCbc zYgxJ7A92Z$S;-dF>u0y5>LEz%X;J}SA>g{y`=IEqR2{#?{YBpJUsausM7<`@tWmOi z{XJ6p^-)?^^i>*va;6jwk)!I@lp-gO#Gg+WtMvX;UdxxMvpB}PMNNgv=IGP$O8KG- zgY?-IL*WBgKg!)?aR2g{#b?#;yuFkcZliUwk<-E4wuk6q+Lz^qJY^dvK0|s{oZhYU z-fVe28uTeE1ntFNMjlikdqL6o=K1T5G14asjA)I3a_4?mNLP%I9#~4MR-YpN`X8rC zD0$4?+h9mnZg&o?`<_p*US?jTUDNOR*cKq2Kt{Ne`JNG50QZX0;`2o}DPMuIR_C(j zh#6+Dtc4}6%+TRucU|HR`<{?x)qwATxRo+@&w~c0K;+tXZlzflW1>R&B2Rv^zb{NE zM&enOrKAqvBa%F!4%5_`JJ)nju34+$U(IFoV4LoA>?&ERr?Sp4+7(YdDPh z6&a>_^nsJuXN?Blm8dF~As?l&cF#PZz8O7Ird*JvZF>|uIyVU;TG35jpp@^h@DAlE zVuzxuRhIrBBE@P#8WdyMV9iqC9;pc^KQ>5|aX(j^CZ;H}b$*R)n;#j6|J&47A~nOd z@g;kHh7Blleuh~u(~&UXXPA=R4OKS7il>$4RDORsdOqpagOAJ4r{!uUG#@cOh4WGE zazgKvBwV)CGHhpTEo-!_OD(^!7uE^Goakyod$P@b6M1mO0fDOaV>c6lMm|!pClKw}pv~N-LBnfxw8lnkihk!t3?JwnrV?q1F`jt=4G%zgqO{%I z-`xDe*n(rJ-)S5HdD)tO#C?1}tICEb9a(H`f1>l#+STL)_NV@=JU(&Psqxw}rN$Me zR8gkN_C%?9^cMjpS+j-byT%2#{NeZhUsK{&FC^hAzdOPI8=I`X`{F98ZQTx1dZ9my+LH^FQN$2FA>GWjNh#AJB-kwH^b z-vS1N6y}?eQSBp%&i8@ekrL4eetcz55MJ8D^9QSWG#s<1Pw@Xzh1ubMVjJIn(xB!` z`Tq%QBByVIBw5j?55(Vo`=-y>LHZ8z1Jjj`{QUpKAo+I0`CR-RjPnl#(Z#FD!+nNc zT+sbJk-7*@0E&GFY#wB;lz_wvXd8=f;Hm&b8u@W#&kk_AODBkn85=*JMrp0+FDPq= zF_V(EFMtl?9Hu_2gm9LCGgFwwq^#dX?ESsgP-L;Y((vSO3k<7+mOV5Qb9dZl@zxUX z=Js=aDaEMMno?gs7}+2PSt3=TU+HDWoS1(%Xp1 zb%LY3)KkU`*7@y;eCi`EU=XWX1Dg1HX&r zLn~%pFS&jqwS+Nm-47Iwxm9c32w|y?JS~NpZ%oU6+s^t570k;_@SqEQtzr@`@L?OV zlYH2QbAm5akV`*8giNUp^O>qtcwZkbS9tgywPM;YziIdTZbVqW5oZUU-@3oUCi$FzuyjAJ~ zjy=RMTTe@F$U$o73#V7INH$gS=v7lC?^=zk)KQ0T`XZW^sN*Z5>&9^nwd0bBU)=+L zZ9)23bW4zy3vImlM+3RNJ4M;MH?|wF(Hi?1SGx*u@YIdzPG#5=o#0pJ=l>uovDhNBHB-~>b-j_P6+nBh z@iy{ZuOiVpLFT@1Vfys*tt7`p(00CcHNS4Rkkh7s)q&b*BnV&jASiY;2pwqy!3q?E zFvW_Pb$4OK_Ky$cfZ)cQq>y5=)vOHEwye-uh3!XX9xEG&7P;pT{U~7&y=;fRF|Jps z|G39;io*x6enw@loGiUsYPo*(rB?F6K^@pxX4#`i33k_s*19R_zDbWV$NrTKHXI(J z$sPW|1?K-=oz0)_ad$s=YS%h(q`si|e6P|<<#LWV-#bD{@yYMc*_VldeZ;cc@fph2 zO2A8W%J2`xK>d2DqG1IU;0TUCfluKCuUOyX6;H}Wr>ppgeq$WwZjTFp!c}JvV_=Ak zQXa1jJGerQUVFQH2X?5&V)%i)us=_=xdVw~E(x-!iM6Ls*wM8W>Yov{PI!JsqVYs- z8$Q)}2cgp^45^C8?^O1n0)eMa@TB2yY}3PKllAKjeWJyv(J9Aqoa~C1-lf{8brWAK z7lES+ID+F0oRKGXw(CjMkLgLcmqR%tAZ+qU#uEhZZr z@53e=RQa%EgX}&kg!2O_lFAjISLec35^+W)X8Wu%lNGl6a5*ixKN8Mxj-b}Fz50{z zRj!h-y+%1X@8?_tm=c}uB%|wAk%MA@{o!0jd_d*mvpwZ~o+x*{@;>PkvuBVav(f*^ z8~}mq_j`Or8TN&$A%hz@`<@!7Pw`(mDQ#IsS98>mKM8RMdjN+tSJmhpYVI)SnaigOyH#-%@G|c>{TK+sCB}=ksE>?CTI${kA1}g9&K5 zhF-L2sA`8=+13X`LCwp-OIvyEYbYq~g=Z_#o#P8lP{z2>Bko4L_4$d?X8W}4Pt}E39=wi(Kr-(4`k<{P@iYY#CYX_I6@}d8Dt@RhUVszE zq8^^B#Dn7YVug*+_BRdiR3-j}klMs)O0L@T)a_%Gcvim61%#~4bCp=GL>^XBN%ePd zBfpRLzky!Mc4iZQNY3NrHu4xw#*t4rxkH6yDB+uLA=+B_22t*(N=)SwZACZiMS+)vmwp+8>dOC#VD|3zf2$Piap7ww;-eqNlZq7P<&aJv7Ogg$nO>o+ra^DA8T) z3$+v#n)615l<4XyM8gtX)q{^F(;MmtH`Tt>`d;nVnBU3JqTEoA;LRns{WUHocwbdg zv_T3Em;4-q8eKKP4J=aRRaNe=@tV=PiB^tfa{ak;GdGbxZ+~8VUv`ea$=MuTR4Okj z$@IB;_3UB)EDS?+AVY;d$HZog=;Mdd#9j~NP%Nn7L`Ck7A92Uh0)lYkiR>yQC=G8A z@E2El(Jdg39i*4r{N|_3O|T-|am2pfmHG0UkGJwG-3H35nKIqL+E1`Gr$1MLd#fj? zYNaIK6(d@hNA&U_!Yn#`Wq6=Dees;e>yA}-h;OHbCjwF`zrvtPvff%Q~o?CXFskN)3|4cQQ^52P4X|qP0b*@-`#-1 zdS~N6DX)8MZNjnEAe~wHA$5l8;={U1-=6{Zv-JjVr6&q5A<8?{fLp3)8o!^f+MAo1 zzIK=Uo9;uzk;{l`Zsx1x9dRGk-c#a+;XsmkzwQ_Q-##4lFb3uRbYyJuwwzHV+J(Px z^Q5UZd-1+vX&cswTF859MXcH($M1t%X8V6-LG9MX#|Nc%1ho&KYq_hqPHK|%X6lY) z_=ory<$&yaN9C9ijeCZ*&rJC>11@|X7vk?@UESdnbEk5lhL@% zK{T_n*PwI!*A`ZiD=5|IzlG=D?va za6g%IxBoJ)kUla>!>PMA zxG6lZDtR8~m3yh8Y1Ja}oWoqfcXr&skNNJ7Uf-zxcNEos(jMx6?N;A`sk^B^zW;Su zb^MNaTj>0 ztPM8*g4vdPr@PNz?~FZsaYxN;A>g*v*G6-N>Pa&R#NWEiwcz7mg_Z7NYKbdwpY%1heKq@T8H0UV zNxspXMPMvo)sVu9P$l4XVG4mvSd8TO$FS>;x*z-%+?_YLk1r7hu@|(gxoX2o&yaVp z*OzR8A2Z|849KLw4@m25FDqo5X>Eg)L+(E1HV;E=+hO`RG4cb#1>UnN$kr5<$;Xt2 z#*_%CgNC_5&Rg8?e}v;8jk5;GeTLMgDPJ0B!6FL$f-c6V~F7O%H_OwmezfPgTbiSr#szTACAsFXW><$1~L ziHGPIb!{SV?13PbrkKpSy_ESmDaaqW^(N=0C4m(fCCZ$ zHX`=(T0?(H>)RFWzJ<*gwnW(mE|^w(7d2dzykLNtf%!#x0jvf~Zv2;Tw|u<(SxzcOIbe4HnOO*d(kEJ$2VSu!@2mr zXVLv|`p5lnUL`c&Jh6BaSeNePrf@RsaT%ojpkqo&+xdkFOi!+$C$jEIH*=S)+=N2S`TuL zJYux`b*=C7f#lj9KbHJZ%_ugdKXyQ)i1}pP+YL71yFlFhr)Wb8!-R1NKCr-rm=@Ea zpI%P6Vz6yrkj_G2%Yf^pK?Hyty-41F-JZIYt1skyc6cM7p-o0t&Vk9zeaQs z3Guf&{#M0b9cPGD%yZAMCnDnliwMt|LwKIT&FL!_W~(GGo4h}L3BtZ}eQW4O$0o>e zyStSzQ(#F`?W=7M`jyfE*J`*M`6@^6+|PTFo`8X+^Xt>oC$s;UhNvT=e9m12nskRW z8O`#K1mhTOR)y5;_v(5nzjO(b=>X1@f5XA#zixVMcC7X|J*|hE9lcVHp(aVk3Lj1` zwe?YQ9JO9IuoOGi=YS}lb1$jg>!wdB)Pv&Ray@*Y)l;opTa~N*%9BcHhf{t_U+2>q z(dXQ+t;Xp=a?13&MCX;{fH>{w2w(i&vHW2gf93A5lGE$buzUSp9RJ2;LFJCv1AlAf z^9ax>=Zn8V1Wm!h90nrmQiww~65H2zv0@J-Ou_G0!Z`@L<%_}Wt^ zwPTr8ZT}D{{IEGae_?a&{3YJhY2rim8*0G>!a^q>ZaQcYS3?~%3fK#$rdua-E8{u0 zh=^086Hl6%ZawMGiueqm=m%^4bMAD0Ov6>%Nl)5I%*^QYliW;H{U`BUnd`iRV8cnz znG*<(|0n>7ta3lh74pY7r{ab${XM|LUiQB#MOhC&Pc#?;M8<$O@EAmF(@A z)Z@l8t1IK*CNqk|=iFh+Kgb*sE2Jfe&K}P^Zx|m>^oH^AOm7$;Pj&o-2;0gNPxjXF z^V~2>4n@V&{p|6~_lEKFlv5AJF3cXqUQPS^hVg#F-~a2vgujz;GJW=VoAKL{5jCUm zn=Ei}Wssi5%+#un>)~!y$iF($CkR7Dev!GqM~qU5m3$HhB}BzR34(DjCYA4vr1qX)<6&8>Nq?>b;MzTDs{K=FC<(-IEc!gJjPn8 z;}gQGS#I^6^VpQH8sLyMj zs@+LUU}gU^*@LwAUY%a1KKcF(3Xnc~70~zIPH5bVzk(NufD);-@T!=4GPe@8+PNS= zLHBG7%r(?rzolV(ZD~gLisLLogu5%wvLMbfr8Hw>rv3nrvaE`;%!;#|RGQg8S4-4( zgX^wLa3`W~(8w~v3A@njM-HDIz0<69CP@1ZcaGRVPokZ6Tv z?IzK4*;&4Wf@ z;0~oIC^ToJlwE50U!(c%K1~(eVO&L&F=hXNRwJ<*`6bCIo#WeqM>ht@lIZw2U|`Zu zSTvAtEj=S9gMEVZCt*%88F=cLP@oQ2LQu6Q>PR=Mk|3GpRp#_;)dHsoCMWwEwdaAq zHkQX4(fGz%L$xomOfaN~-c0VYG0;#6qM@uummx^0@fnpx73m;FqQ~wk6W7ADZ zabn@jxPU)V#i(n%%uC0=A%A!$b*QDurJ2u4yyj4t>VjyEpHntb+#pOTGsP#D_+(+x zRl*~*=5G5Xw0VR{=T|H(X+02{cnss->{$fXE6~EJjux-@>5PmH*GRiYX(tl6UV-BX z9HGFw3A|eYoP?E4R-l4FodSCkIFLZVRW{W(qFT}}@o96ct<*d|y6R4^EO)prAjb6y zZ(N5^CN|ji@vmG)kusQY=#Kk>u%;Rznp=F>$n+M4 zu@Sy{v)1&Yy^;<9;cuxg{IOp?6`4am~-YNG{DQ@-!;t}8vP4YB=-ZVmD=WzhNWF!~IOrPzp zSy_r?_9H01F)n@_X{OUA-{SKMQv1>5xhc-Gx6f0hx=tlevD~h@mdE+Fud=$B-P_%< z%4d?ha&*Qy*7+P0ltcbVO^7zx{f7`2t{&@e)8xj%VoyPyBQsUZq6&9~m7iWWegpzXGA6y*K) zGYwGl)NiN)oSeMx@zEf7nyumK3&GdqLG^X%XL9&DQ0ea{UGn}8rM2eMcJfrIJ0MOo zJkQCeJ*c!7e=4Q&i6^lWRrtD=#v`^8Mcp??)U{l7UGD2z>V8fD%b+*iIV5W_5c;dJr%4~9RaG+4;E)Tt zVxKO|@ocsJyhnfD#UJ46$yWHls_foAu+)9Pif?!CSAYS2?#XJ|@}w+PGxx zUz!qAA2%JCuc>k39caf*^lv*XJ3e`vFEY%TL%ubs*?XTXb3dn*X4U<8Sr8pune2VE zELqxHpZ-XAVkM->zM{2K0ThT=vHo6O$)DEBavl%xo0+~-;??&QTYa0NhRQ0mZm^E> zp!W4d=M_+55S=ra3?EF^aGz?R*Od+TtQy;Tdd;i7*|OnH9gpKk?jfD0rl${vQwMSC z31v;?)M2^{(zBqz8T_Bhsl)Ukh?%|0s9O)w#e+O5J_!2S)+IY$nU}bxL~V9#=?`Ao zUd&(9(<^=b6XN=-sGqr)uitiV)L$L9Q>8E9gj0KfhK^6&W=DM5U(FccC-T^I>poxW zejs&_%4`d#uB410N1mHbuVy(4t>*WtU3$}WpO zPRRk~@0cy$ZqQvI*|aAB$(;TeVjK=Io#O%2!%4z2A6Q`Gy;VnmdEuSGdr0|DxZD zd3OwBpFDRUk-8Y<1nFB>3yt&@GnWp{l-(bH2Vq)??h>_=zIAy~p_Ok`NQrK$FVwD# zaZ6na@AjabmXzrBw?daKP>J_|z=g_w$ZqU!W-fG({zy<=){@IRXODU3xHUenERw9= zx;^HtbD_^$rM!5G##i8;V5s)m#++_CbE-<(QG70Hl>h3vnJtofc6&Y#ubJIrI!VNF z3HftjjdyYLb?n3*#{a^J_hu`K=d&`^W1tz{H!V8y#I4yNJ???T+F$|>X7H+dH%~*z zAUn~xaI(D_r|p6kcDVpXDz&{5=i05q!_jHDji^rqkJKlU_tieQ=%?Uu_}x#S$-m3u?F#gO%1Q=0Cf8<)HNzEf7}yUpP7*!=iVZ+o-|}dv)kSK7UQ2KY6e>ki6G1Wmm6!JTlBL=>G)Wr zPxv8AUfPV|GlSN}y^^)l%f0C`FPQ^Q@%S;nhjdKDsmVIYQU2@#|9vwV!qY|!;bK38 zr`5saSRH1=5m6WFP+QO4rh2ZL&4QQcd{ijQSJuQs0g1JG;^?%)Wr?cCK0w>dDwFXz zg6Zgu>uRR1zp1YJ;eoJsbtx~ogkMt!B=vcPn!kjRti303O#`rI7tonx`t1mX5NW>| z9oP0P{^aV?X5_bKu={cz5c8UwSUU$m76QnFNSW=A3zC+q&WHFc1d@$FBIT#f3TH2E z3b)8{ZsL1A*)do*jC6*(x-|QYRKdb{?+VZV_Wl7|j;ACY7U`Eq@@J-rPRhdJ4Rh$3 z`?ZxsxB5Zx&qr6$+4Hai7+05!n)<4O^dVc0LmcYZSP_J{YCNO`<%IurS~a`x$@o5; zz_T8cq5Qt;;JDJD*NqLQ)k$7Ww^Sqceo#Z9v*G7Q@`KED+|Wu^qSd2;L6T0AZ+sr- z&u%)tT3*ps8KlPqX|~)!x$J#AIFFf|39!j$6MFc;fD<+jGMQYpT8hd(e5gg~?cHs} z5H)uPxEw@M99WNLMbNn4ecI#e(O>8{>hvpih{=_?r8g)+)1Fr1BepoH&62jepYYu? ze!b1gpBcrTfR#|sgVau|ZrcZIqw?nHl8S6=F2qTM=YOX6xU?Et88mBn?BmtZG!{ai zd7N%?x?+5A%G(zojAyH4M`KAjI?w$2=-JqSJHH9-gnU=gW_o6I&ZwmJ_ls5#r+1|4 zT2JIa+E8HCKV}*)-t`lkrFsr#FYqrlCR?to#BRW zh=YB79VRMFF)0B!B;e)x^8Gijqi+Vyj9yGSsiW|IbnZN&o4BShlEN7W-cZtN_(3=8 z!%7^Rukx;7>zH|_%k!%V5@F6>Vs2G)x{Y(Amx7w@6EP4PPWBFuqwW6_*vqwx^MT(C$vbYw>&~w!H+uQKKq)GuCgHrKm_cAYX z=s5A1(zvu0daevQ8oSD~C>dlD=as}$lIl}_{xslyI6b$DNx+<8R1dG)ebD$TE9+(ir||WHGK&&;q1HNxD9t# zX`9I6fl!<1JesTkHJN&wqw`5aNMgUAddMGkf^QuhXb;fQHvzF)K3Az~+;}elobVO} zfF6iY+yJJ~120|aWM4f(0C>K!_Sr>0MdNPx@h^2YgpLm3B2C~ezEm=KQ~D&`1gRq; zUgc3uom!cU&SXK1i3YXQB@hjtGjl{Et2b*d7U>cFTJe@DXi^0%HLZNJec9Wy zo3gzHd6!*Xc`)Ua^2E2~l6xe)Bi3u)U`OpFe$Wo|O<_vfNXE6xK5JIm$6HpXwbM#g z1bIjNa;lEJqRW>duZQTwM=tr(d!aF!jMqJBmXm#=wvzh3`f{Ok6g%llolhS9L*=$| z;=MAlOiBF-#CiN8EqoGlCV|qFZtc~!uD1&7F`Y3aYwp(4FPBqcw2BBc0dVjjb#J1x zftHiK&x&Bp5ythvLC=P-~)o(m#lh zSlbedc7G1GKG*)3M7t$bW+foet`GLN#wZ`S2jjES2zHE)D4% zs>Gz&V^N)x*s5bVYA(=AGJPas-wJjzNX~D0;h0Bu5XjIO<|OmmLw$bzC{*;O3x{!$ zaLt_JiWFyS#|gVxJC2Ii4gu_jr|z;IHiU!qh+Upk64$(wY<|(;Qg7``iO$Oz2$qU6 zFC>V8_PAB^iAy)OLqVDqs3f{#gJD!0U`%r?9cl6b=BeVhBOU zM@!ncK43qZ!Vl^6E^QO7DScvZU#b#dL_fKeE8Vz~6=xN=s}`8?VP87tDk*Vl2Hm&{ zH_p=wS#oCaa*EzrFVlOR0jFP_=vlo1CtiWS!vX+ZK+_a8uXfP`s>80fh|#{=U3jWA zpU9>8xH4D$O_>JrZl&~C+#jV~y<5?V&0a~z(3nK$nRHrb)}2ogV1>3N8MRv^_K>({ zNUcE)LV=&H;Xr82iq{8>@(z#VInnYNV7^}7vde+5upUg)Ia*XUZXfL!Qa!4xFV)XS z7$au2kLiwMWY-ogvuxg_k{L87;NG#pU{uuY)9% zL#R=_&2ih6<)s-Jv~gR<>thyw41FM+fJ5BVn7VBPJjCfA;BlH% z%diN!V^}sJ;lA2mUxx7e;bi)Za(8+}-}mYpYdbX#w`3=~JNZQVZxkFyrh{?OCx*k8 zalGbp)qz3BhJKMv>wXgvYjXdC@LI*vgYa5S_tm9VWnO-eyc64M0{^S(=Hk71vo%HD z-@VSC;5|)y4dFDe^pexi=?(QY?jRB}-hYukA!23JJP5*r@Oc@p{^tuYlPh+Nxg4Et z=wsiyDw)36gQ!4fNc01+G9@p&gd97!-UvF(gsPAAn4i%BCcaS@< zOItcObLjPujs^9&S7Cpc4EvMeRt;!J&;LW-yMWhKmHXaFo6r;rE6A-V&?o^Ci<-*C z#1=?M(#}QKf*=&Kl|rR}RZ&W_QmVZWNQ#|ImeiwYw|nD`y7j9Y^<=AH5rL#YlX7hl zp-`bMBAtr`wA|Wqk(}TE9dlih!j|)W=RD7OzLV!^=Uiis>pR}@j(5DbQAfC+e;e@T zK8~X1b6)z~C#qt%aknZKd+TRsF3Rq;KaJ)mSJ5ZC9}0&I?%O^U)`a^`&#RiUS;h|A zlK!6XaBAV0vK(1T$tadkr-yie!2{^l3%acuA+TIM*xJW>V{#%7r2qZ}$o2XCv04}J zqF{E$j*aV!YU!sIS;N?z_OR$DUuQn~aDQvQym%W>j$k_VD1j59SG(&)V3HH&Qr)ZJQkgi#z%Ij3C_kbq{&! zsP1X)se9PS7P@CAo+<0OUQ7LXOZ{0tqCa>MsXvdaKiIi9RuOD%o);hZdsU(#6Z=tr z?6yrDFr%{;x}b zD~L%Wbx9k;dez(gsMq~0?#gT9J_bYBwTv<9S}>z>2-weXpyI=+8cwC-;_0jM7SC5X zi)YTHDCUjSqBanDCIG^5vD@&gyVB)_<-anrj*hi*9&>qh_5#c8N-}Tma`n?oPiRC5 z_6Vrb@<>gr2lXqHjX2=*^(<+U{aGux5$ll}7DyKxQPFwp%;3bW$ob&D`{?I%PS0m@ zdR~h-*{nOxL#|Cn(P)}9S&MYmYGq`RpE+g4S`H@q+$g2Nqr6S8k2a5$TFn|htP|Vc z7WR#mpy!b79kCUE12}|hSw!bCx6WtjCCeI@<;JyS5%A+vTPsuhCj2^Nl@%3PF3FVf zZ(q3fGf?I`HGD!3-4p@)kP%h6))onQ)RL(875NP6j%#b#=b`N@VP#k42#9!x)?Q<7 z-9G4~nuZEP(WRotIE1)=BtjT;i{MK=U0%TMiGTnmI4ALcFm~;=VogR$;Ujr9@I)^v>mm?uz!mPouqh>60GTm!I-QZhFi*gVfzi ziM2J})Wq7VSkK1{cTirWQv+yFmkgjmeW_6YT~(Sn7SWB=0dbJZ$6Pl^>OHNr(?)y;4QG`0o05rh0K?F2{**9P1z(c)cz?9}52ujc77GRHW>OQiZGWk+-Pv0n)8c zR%4ym!sA_q|G-{k6$O=hohlZxp7d+gw^;Qd@L_kEypL1IVA}B}6NgoKFFN5k*Nn$* z&}qfV`9~Xf9O4W(`g4{XtHVoN3*iOU;_mP#YC@JAMf-bx{@d`JGHP^gB%gUgsgQk{oyHd#zqO-lj)_4c%RR!OdID# z&pFYvJ$kl9PfyRJ|FuO)|IRLZy>kVRrorVadFU_B^#DBX>f^uguiaQ-5jPnGVzCX! z|EL@#B|Gm<`af$Uk#Fs}Z;)nQUAbE*cXvq6@Jikw+zEfOCZT(<%4N8oYskM@l@aut|Cz?cm>Mi*+&6delZX0jY*4}7i30^)mt9}@r)!x2f{EyT z(7g}o{SNmo1|Bj6#EJpChvoqgE*D>Sx5tguHV{yT#<4051)eR+`sA5~H+nd(SXef>QGbWOV zgv1i(koZ|8Rw+v(zozP!r0Uge{FpJ!Rt1VD4fpuSnRwz?q4T#=iAokTRiw)^&Gm54Yf|#pr6eC4#M-#Uf&Jpog$!H zP$v=pe{RhG48L}ENy)3R%1<1!f#z;kOK1l#i(OIv+#`T3RszEA5 zvNqv!@gOCA!xD4~%O6eskveW?EG4OrsVYti>kIn}_7+>bu>|#!0^_v>JJk>k6dED~ z`WWhc+uyk40QO7TeP?*R4vaK?;qF`)T4FQqccPhn)QQ;gP7T%n_EwsGwJCPsZG!1# zu^o*4>gAF6L`P~;!D4eKiNpr+ZX9ReFb06QZfmWG2j^CMfVYqA;mu!HFep_}+PNRm z|Mi9w32cbjbR$u>4v@)Mf>C&Q@;>+jj zr;B6EH0Wb^O&3YU)38W+Mohz*hBcqE4tS-sQdFAZq(49 zIn-Q)4D20deeaD3$TqatpryQ{1F}8cz$eULa4=WrqtT2A$acLeZHNLR%pr$65uW&)yp)-E#b!~X=@&G%S6LQM4K@OhzdjJL5Tz)7&#Kr$hhk@LPs5h4emE(F9{#~ z21n}I$>5i^5bh-&vNXVI3k{@Z$+?s5bTl3(+{1q6z;> zV6Er;O0ILhV#Y+f+Zm@vM;604wdA0JvJ`qdQXG)^clzzl^`YkJ$7ks0mhd8#??S`y61~&u|FEaYP@;O)hjU2FuH9RI zs}1`SSf!>lELJw`_1dscAVC}URG!+fzu=xnHoNCBdS*{pnW%kK5*}@%?9YX5bku%5 z&~!WSR)sHfFpMJ|$XRu!nU_9>j zYnXyULvijW(SE(8O8>X`LnFs$`}YvS(BRGd77P3fvXNOk zjP?AMk#Kpea}RMsO>ur~Je557Sb{hO@e?MQdqf(>EyQWjC-jrlrn|yJ`AKg~tTDB< zt7ArxT;oH&XF?4=sBa`UOQ?KR_QQq#GjORUk+7@@dmrHiTLA(j;(GvVJ`HcC*nu_iSg`NBq-X>UZx@SNF` zo*7Ko8V}BfQp78h=_VQ)sH1IME5|Sg<_a$>-f;y<%7O>QE8|}mdHXNZv)zSyjw--)=KLM$@Ol_VIb@Q8_`kOP0XLsJNa)8R_|BGfRH%%EKoLelX|NYd zwZ}{dKX1)jDi$))B@j4g`j3QH)Ctmqta~d1HOS8NFkB6lj0BT-N5@((%9my>Nv3?- zgX!2T(CC@N{=OYYs{-Llu`UgqRp=H*`I z^CD}uqmBLmTYZ5JET5-l-7Tk*4Svk_05=N%83v+mg-gCdrtYO{N@Cv|s2Ymh)-RRl z@^5pTP?;Yc!q?nYR?jOo-h+3N5}=}jJyiX$`_lw>6c&TwMe_xB_hIkbKd$_wzPd}W z&@p7k$-hbH0NRWXkG8T@tOM6|pnKPy^JxI)ayCEW!P3H(N6&Oc*zzk%OUT@F3g2^} zE>WM@f>e?}D5OA}TXmw2jr{KE*R1M8I(OaIP6B(QI=xdB=&1BrD*r<@Rq%tQc=O*7 zr+%6=YE%|SbAy}I5R|!8k66p&IkG#^ez&^os@S0UIbsA%%TCP_FuO(L=3YvETGST6 zU1OErWR;}T$`~GEu(Rc6UkkykvtKuuTk760|NHR)!)KMHc_!;~C@&)`7WYg`uq{jb- z0ynksDG_UZ<&+X8X@RRmNKGZeWG~iicivHnesL`#>da~|{)ftvE`RE; zRL?>tRSTJiaDWdlK5rj}+=mT3tWv0gQqnhBiL_k<<1AI?8su%pEDKH&JqS7wD2Pa& zq+tYUeJPy5h>D;L5X$M3_1Wsqv?>jXN!Fr{p65E+r`EZ^m&Y-#qs^|Pz3#(m9#Kd8 zmBQV<_DJiy>*yb>E$gUdQAhu*x~!u&Ty7oJm*S2}V6Kkd{Bi53K4)|Yq@$WLb@X5K zGhP0tXUW0UWTev3l{~;LefS|uiVut2hb|tZ^Wn}_O5xHnd!+Tc)4n=XYF`k}YnrI-V(TstG`x27$77YBb16QKN@oBM5R|yGs5|#e|&Y)zoZ&r=_S=jOIuu& z8xgL&Rv<;zroo=-_Y#@*R7<|6uUmPt{XpS`>bdoK9Wd0X>VP|Prz#z(w!$UoNEPzb zk*b2PJdfPzejlUfl=YHL@!> zZN`f!+JDNP@y0H4^3OlH^Au9e!g)&fJ?bRo-(Qe_-Y+l4(elp$9m(?NCtRJ8e>!+b z0Qx(FP@LPxY)x%W9Wp$VQ@wc3Z>-Z~;s5w$o$7z43{At#07@nf^=a`F3R1zL9`n6~ z|3!FpdzpjM)W{GjCy(1)creAbo$}hotI&Yg_N3oA2deLwp;>U4J3@SKKz^ewSTYdO zV|hE7*OinCNyG<<@LqA8P=0JQkzp^oM&4CTIDyV8tIK$(en~<2#yph}3%&+MxQGRZ z?a7|2|C+@BeTOmeq)2bLmLi$1D4}rYxSSEy1dOpBh0G2gAY%rf z6;;DWBXRmzuaCdhM+=f=AB{@r<45%IJNl?7|C~_r=U=CfIrgGreT>&|RpV9TWO3qO z)#xn5M&vhr=()1$YINRa=ryal7M;sR_j}C~CTU)}^)DV*4Ek%s4}Tsiwz+%hU&gv! z=|pJheJ46tdK#UOTv zi{YS?{#EnsWaZEBerqd6%b+)mX;3l}BqR$Hq}HFilq77g5pwMg-{409=eFq=sHReR z`Htqxn@fW?I==tlMxEdB&eI_t|GdbcZ{&QPr@5+9OvvC{RxI$4CN(yClRXM$#wI2= z*2gKF2)y>hWUnnw8fUEe-sHA<*dg-XCo1Dj?(5P6vwkmF(`zYfR$0mpQdWt}_a?8h zy%b*+|AOj?{*vlSA0>@{FxJF}yto;IgiFX}p{c`p3@qVu_f%wxDE@i$dD+^Pxr{UF zMjNQblt^Dym$1X7o&F^EX&sXNhz=L6T}Akfy6b8ngr=*Z<>49&|E6PO1|uPCjv4`Q zBwvv-%y%xT>BPe|Se~rJ&|>8o!GzG+T;T!rPj%P=5iI5%rbS)==HU5_dUNo+vQd6C zp1+i1K^6!XSiJ z6$jYm{mWXh_Yo-2TegC^Z+XtAmN*fyZx7Oi%ohGz2^x2KW1HBBTDx*UPWo?Ve#S?G zA6pESc)_BYbp#w+*ZK=?{c05ofXPlA7L+)n6wd5A#iu)0tD^8?h3J*#xQm2(!g~*d zQ^<1Lmt>46qeMkM{{e~wue7yGM!AIKE~^HBgxKd!d1W0r9=kh8)kkWxJqyY^#H ze8y}-1YE)_c7Qn!#Fh`TdDy_OxmWmCv`y_D-y<3Pyo)?i`e(;owlW!rOKNzXOA^?p zO|cShAP(Lg$X|`I18Uc`84DWci-zF2)>h=rOfJ zRLh9*ziMw&&p7r%8ag0$f^27uB^UT z&vbBMZ}?Uf>a#M`XC$t6zhl+5oKk^I}}^A8+-E`vVHm@7DUZ570+b|V)W zIg8W&h`*fns*~3{d(-!%-+B88i<$qfiB*dQhPSCL#5a)_3EORczc?#>{MBa!Eicy~ zoI7J`%ga^xXfbY?#aa9MRt4qR>ZKty2zNbycMI`i)2;pCeAG$WkqHM3fuQqyoXzY< zWP0UnW?AGDc6(#bcJ`_37VPvIp7LVJr%W(x-Ll5dm`p3qVC&umHz2IuCw9ZdA{%Ur zlj3sJi>Dj0=G^1$=KjL1dlIGn5S*d#xeK)gYFi#1KsaI)j%Jw-y|1U=Q20};0Iva_ zHr|o@OZSWIp8o*uPOIWRRJgUTX;(>Ury~9WBSrjebn)VxP;u8-j0&Ley_ZR6mpw?Y zBDQ8#5NY%L&eh^-EFyxPe!E+HvCZ@l9wb*1f?v-ScKC7R_{`vV;v>MK{goC8C*3P@ zCVyMRt4Ub=rH8M0fPDrYWGTcy)3cekB*Y)0i6tbNDmb=kFWRO&i`Zx4BC@d-TCGQX<^^4|zV}CRp6PeP!Z~;=N;-={1tSPysW??@XHC4|ZV@cIr zyP8^C;abz-VLSQ|E(FkajLU<0UVS866WP;|LM&EwBZ08!#S7>~_kAGU7RfH3)=y}$ zoR|Xmrg%lPb_vM<684!r!mF`s2SvKON8D49(|?Vg--#CQ`w=tQdk5bk`nMyzYMOQ@ zCLlP7T^U-uBP{zUNqE3o_us;;F?`fE0mqO2BQ%>v$N%3W>APQWjNY--GP?gYW^3BI z0qmg5%~jVo?z^IOXkF|2l3*Xil*h5bCxW|r4S9aOTA9+<*~4NKwDzrm&nd}H6(5lM z031h_FlHo^;OeJ=ZAUswC+G<~tU_K?-Cm*h-P^oDtSx|htZ7g9IqUIS#IzOk;$MCodL{US2%uEF6FI=X)<%x_SW@eFex%|&B=YK*go9j81)+K$( zNbzqCO5&5piMegE6D;oL>63nUCta~~1920-FR>=4fiX>YspHuTtYd#?IrXL5M(ShG zHP*}w%67vBNsC~flP)9!{89Muk0me6zzv<@m%VD7MbMCdEJ5&OUfQs3!ClnauWd^~#as0TQ?Cjr9#8(zx) z1PH|4@RM}_g1x=RT8U4NN{$4@FaB5n#X}fg$LBuWG)%C-b>{_K}zJ905;T&9k% zCs9FXt!edl*%pC36frJsm2D~xP9aF#+bix2+b{7aqXt{p{|1^$x!r-FJcKalzDLWL zJ6srei~nkP?U#Xz&Nai~VNgOx#%qdrDf_r1EU}MU!Wy2VjUN zNgOFwrOGJM^Te?G@9#48+r4WBdr50r*HgXIJ|eRU^}=5~l3(TC)sx)2El_?akM$&a z?^g!?lrD_XpWgf2tG#QC`crzZy}5U^OZKPqnxglrqW6hK@0CUG6-DnQMelo}`aNe| z>Rq!=y$#DNI1}maa6q?}1P8h+an$?(p!41#n&#YxTl`xUH7DV3^~!sx17WCy68{%~ z(r`18K0ba%kO*ten3@P-v)X|A8R;9chL)TXW%Qz- z=uz}jCmQ&L-2MhT6;|OSf(-&v7I*lH-Bx1yn@*IH@)XG)T+AOk9cS<%bIT8y7np|g z*zOk+d@1r}hjUm~Z~h_+&2xk^sv_LLV?;Lu2jkh}t!HfW5M=8W=UTWKHWr*@>7;f~ z_WZsuQ!_kFw5FqNCpXYIuuKLl;(aZ?(utJFVi4a`E$ml}VXcVN0p?fY5-affkSGcB zCo+c@mrLp7R*3SeTqk0eK!o9pAeE`g*K(lzDE*3fcdnudxk`?tl9s^mG$JXY1(m~G zL9={U=lsiHtuKq!n(DTf`XMy67V3&KZI^y0(|@e)<;g(d=F)a}6z}qG_|rE4L2!pU zQ}mGy5|6v%9uRo!s2RR?4zy5VonFw3%03^;A6m->e^%-)B9YFxK&^y#hRH`pE0 zy#9FIYA^PhqjRL@$Q-Xjg$(_L*Bp%_LypAps$uDm*Is+E*BpH#HAmif%~3aAbHt6; z9Btz@N7{JJQ8r%lgsoe?mY5>-SVJTEDegZ4)M7yW;Z`i}+)1i8C$V7WrJ-M`lF9Th zb2HrwqtPY)^zPS$f_H0 zt&D&a85U8F<>(^Yq;ImU>9oF!Z+YaE9GLrEi49SS0+@?Sq|FpOFsukqfLms;Dwqh& zN-bWyCoVn`c=yw4ftw?(0V9ETlxV)DizaGvv}od!BN>KCWSuG8WH;$BfgU2(ss!@Y zi7ldH;%Yqq2qdj1=}KJ04K6rB($9p?FZk5q^AP?(?-7D62keHbR;LZ%{p!@m@Eeq6QIF|vYMY=oUFbCTIvD;(DKYLJ8GL_iJdu2RBZCSj@O zVlt*6eE&Kq=0IYFaZaRg81p_Twt(q_>l+jgpg)!gih!R}7Wnk3X8enIwMGKxFW}E) z^2h#{jbB9tEnH}WIaxnjD>Q9)I9nY;);LEuJk0AjC9+#ov;hxMK@udA03eFypYz}z zY&G%^vFum>6o-FK6@ijDlv6RfneE}LKi4AK9gb12oxxSO3wE9NIRf|#_Kq9yHuusS zZqf@PR|Z|Q2Xaiv75{xv@mqM06o1rlbFPl>=>=FlWzWIz_=RSFoV`@lxaBB3!>RiN z;Mt{W12K;&XFki1%mOV0>(Exs=CNueiaq~fz2}iH)-yv{1Gi-VOUxUdNyUegyIB7r zjm^X+pL1#??o+ggtp;o7k%okBL-_DowZY9@LF*z8hIme6tYlt;NWy`z}}-xJVF;f4Eox;^uSPjG^+>NpC`$rEwR zp(4>7ftHIzbDP`&p^dHs4$R1_TKuUxTJ6PPOoqxbAyN|CB#vN2RmDj`3mlI%Mu#s~cGF zkln-^th=etD}QV7DaA@naQmRU+vla}48HhoAJzco&nd_X7yERw=WPk^B#&tvtjc(B zqYb~-)HHEIr2YquY0R!M0U>o!B#&+iCJo=?TAUZPxLCFM>ze!vtCIfLk&fwR#9iT- zT#H&-GxIH~URqS8d13W~3sxfyt|;2X^7@#O=aKFgk*|05p;2z)G}66pOkXMdN9@MQ z5OHbL*yB0Ne!f02*P=U`ypB|EUsyOZ=y_eoA1_$)3Vl5Hl`60H36F4~;8Lvn33VsE zghYQS>Q=Hu<4pv|ul0hlISqq}{qve?^Rpx*(JN)<0cs^ib* z8z1hU>AQYdoV;19Jp>K48=Zb^Xu)@~XB#_Td>+WRjdo)eb`X)4Ty49^kh8Gpu(sDY zF+{FyE|^7yaUgQoCIRW&udo9XC)ov0t}h1msPk{$f1f?IMph7#CyIXx9IDrOft`H4 z;JZTlC}O8h5#1PipdVjWXFW-Occ(rhKux4?*<)WWb?!5T@e%bi5u8rlWdk2DbRkR< zk$IkVO8NGvD_wV}sge|HE9&II*y?|-(kuP08qUUY>p%B>xS!BQA)odh#I^H`6M^N! z&N+Lam$u`+cg;Pj38}Cdbxo(Gk*he~&|0!=0$~Zrr9ep$po=BAIe(w?xa)#oLl;)c z{q4xS;adN{iCNkb9@Q*v)?K0y#hlt(J`w)pvzFTy&g{$!r%Pey=m+wPfIGK!WhsFD ztO#dC_!`I$zw5H!qpQ2^Z}j>Sty$$1bzIljFx`vwl(TB4Jlb^EM1}>sj2}^7Vg8ui zm1oRN)P-#2y@}xCh|J?>rT_i!^C)zB?6!03cCOfn_Unvvs_vCDxGS3wgUVL}>%wWmUHAo0J>ui83t`7fp zfR@s|anwI0oip#QQ9n!~)Xhq{nk{Wzn0f)3 z`tS^VYOwWc<<`ta^I4#aoGz-&8*x1*eOn2CfVIcE*tHMnbU0EsDzp6RFWZe**$Lt& zxu-e&DlXU3$6aGj;zjVxt>+?pgL$l<6*GX;-(i8s1 zxY>6m#1p~g6%71>3J_;D$HA?JJDAp6-qaY9S(X7oc+%&Rkvkz0wOKC68S9OOijYPt z>^*@#1}*%mwYa5T!=_j_+CEKRAD5S2lJGC>QZ;7=m+!2J*Zw)_zsPkt;2-y(sxPTS zz4WxF^@dg|{PC$8^IP1xq%vou6FY0pN>^`>r;pfzC+)HiGoz?1jUK;%W-vU(V1qjF zRr2>I{Q89dQQn3Wd3yPyC<40@Tw9o`K#(3bP&eP0sXBl}QtK+sN6!Ob7{@>dBoi33 z9al`8nJ$YukLo;q!9Z?*PNpwo#0a1XK*jWc!9ed>1dtoTDc~5&N$F7u`qlFr2F37K zV+M@n1gcuegIaszicgd5%k2-sDb*!R1I<1zJ>Q7+9b5@Pcy+;eqKkE$hBC6kA!O(C z!*rV)9hrrx`w~RVCsN+nitG`4?dP)J?A#FE^AZRK)01p?vGaO?g;De-)0f|eS=Obi z6`Q)tO~XT@x^$d%Dc4``e^q}@P=6Fy5!zJbPYL?VoUiD-G2C#hn7UA9Ic_Z1S!uUt;pG^D%aosBMs(5#QlkVr0k>a;Ca-^9_ zZjDL?SFjymK;U9QHw-OXjHzzCc2}HpL%b9P#ZIvEl++=tucZHHc6u4Izd#<9jMu)A zAQ&@sc@_W#3K5e&y}Oo`Lx{UE$%Z$QvD05pqFHuTPU&a0Hmwml#g-pNuFOgNm+&`a zs>=}E`>!NxHzu4!Sxnrw@t#ARfBa+dhNt1(V?Ck_iV~JSkvL8}leJr0{IyuQ4zJy{ zb}ShZ{tKxST56xi%oWwh^W0p8j$5hXN4$Wz^D&~YVPy}c?jB^r;W@mn^KbF)JrftW zBi_ecZy%2(7*_gYr#Q=PxS4Lo+^zcCJt z`jaRH;@Csj-=qSZ&PY#tNkB?qCJMbB3V+-n8b!4CVAckLX$tJ1;>`54o!l=bNt1;m z_R=%=c>WMGod?S}=O5ityA3%su|>Cy^L9T;fy-9LgM+KNdJ4V*b=$oFVxaTI%=OkN zva6@#=?Q2PwnCZSg005LN)m9-f7h#BmuT1(>;8A9hFc5nbKQIeE+y%2jPKqUFI|so zIwVckh{bviC0p)yH?{5FVynN-n9Vvg1?;BeWc zMr@Dux$dO}3jm@Z=!LC#y0{2jDhRWrmnvSW^iso1jb7?_snbh6FZB$!k>NH1w$5LH z#|i&Y97xPCcDN95q6PzS^&OrVPTw!OwE7vlV>IewF|5 zkE!n|17L-)I)2UeO6EEs7^OdNEgYcLynb7)Pjb7?_VZIX8^}H}& z_i~`^Z`9`WD{E(jL17X7&&$iapnUbc02&)59W&C4Yr>WPEO>8;PAI==LOpEuz?@HX zqAXuDD*qgpKU_i1Lb*z&tw0~tUNEE43(l(daI^O&A1Fnb$d+9mVD%5qXcX$^<0}x5 zl*|y4#tI2^2U7b*`#%9_*ZSwnWh1}ejHc%R2qU-P3XF;fT^Dp##B0|nPXCnkD8N&l zUiu<(;Ni1AJKolpvbFlVoBRi7q)$AqY2(YtN_KvrldVQ9n{zHY4j-@3l@e!`F7I!R zdAqrR>%o?WR~G!V#eW4}bd7%&lf#`ng?Mly`#(H`Aw~EQ!3%UO8y+I8sKJd`oRi({ zM9Mj0KUaRiE1(TYwNERnBgWUC%29&Dr%_>BY0@y~-20JhLKEJl-~5qfkv;w9`Chtv zl_eGH-<6_2BnKJ-9O6fxx9~jki7F;-k*Meymk?h%bxlm z*(GRn*;_wI_Mv?CLqACNP!NYwf;mkW&AtcTHIZHnS~y8{@Y_v%4}bV)4&iBc*J1Em z%~$v>mt>O~{8rN(rYvbOhscga;g{TxHh#2+pLaj%_)#Aw^&{w*DD8I>??Uez2~F@{ z$uDR1!5SJLsMr!1pfG!#tFsl3e(1OWK!`V2?5PDWV8}h-Nb#j%2ab(gFWQc>fi3n5seWNz}q5S@#jecrtMaLm=0{-3|dzwv`@-aWM_5~cl_{jYQo=x zLehQ9;+1Kc#9w#cJ3<2bzVx5%5CblP23vT`cM`RK)u}tyb8ikF@N5Gwofa>BI=+z* zr_>+RofS-bQ84lpeQTWH!{nXGoSZj8e7n$zZ_lf7AnKHLy1V{IU_`#ll|KR_Z%x|dJu~YXts`q#fbWH z^w-5>K_0B#4rvBAK=lhBa-s?ZZOAZ6YfPWcBu0vFg0o1-c{|W5G17=TMA8ilkQ7Okleryi|}c7g>K@CWf#ewh7SmYWCx#K2s1yFI>K42ahKIlMfNavfXL6E z7UH~T3P;&VqrS`Hk1O=-Jd02m{_4ESM8l`4zVmgR6mC?Au!D(x0`}|(zrImRdPjJ} zC&WUsY}A{Eq0aG$h_Z7ves@8Y!lCzQjO03E<9pxF`f=4E6S9x$1##zRiYjgKxoTz| zN@b~znuhN~#DJf|g8!84c9I57bOsNx#hc#ljb8UQ!gmhBYXAu_b#cp$Nz3gQICJ%ez+cA?|!%*FV&Bz z$5-+$bUJ(%=;RM(mavEl{%o_jvD)cJ{+#`AJiQF|QrCjL5I#jVL}I{O_@Q&8m!7`I zQMTzjc|!i*$>#4Hws2S~_Y=yAeBla`#h`K$Fb#j36O_{0BX6YO zWNsNt=FW*&jNi_VR+3%lz7+Apb7<)!`E6F7hSk0f;k zx9E2~I4v4UJbl(4y78=X(G`S$bS3VO8*Y6J0VAZKb4{}09j2w@{OpmVG9(&ai^p1+ z>@KQAn(}<1eU&8|K(=WAV$ji(wM9J~rH+z4Wq` zyksvdsxJxV(V&ir0+cR#xJBJ)*dFUS8}RUb)cwHZy^0%zl(+M1woNuH9qQbkQ4kBO zAKG}bju}p_8~z74!Q4AI;CJh={ClLTv0u;_co19e;r^qI6|&;hZpxuAa;X~*=S$`( z!{jrOdVuTGE3zn4U>*?m5apR}I2=j2>wNQ7jBMu~EIxxBH{8L$ z+dZ=7UC7XQTzK36aFPD{l6N z+|oRZ4xL}TGK;!w5S2=*xK9*@fq@*Uq;85RB7{xd_l?btXS>gq@j6C#>~)V6wCuIt z0KbQFE_zN%$x$2J3ct$)G@(%w1V0mzf*v0fL!ksx%^tFqN6%Pz01L|3%Ao3^Nj?|k z=I0oxJ$z7n9C~9kKym*WP$tTAlA%jP8EMC1YeZ<_>ohdzH@LP>Q}?}P*%%kWW%uQE zjD~mbSgwW}HN5xGpCM9wf@}0PSnx|at>vz%Vx0rRrWNZH02qo#oCJQi_UuX_&^oai z*q$M2W2I3QKUH0s{VHi+Qku&h_o*W8D+~EG`e9v<+3Kd|sme5G8|=T)x1}ym5@owGhyPk}QlS8?sKwLb0XE~A+@7Hqy53m|9PW>C1O458MVJW%v6&NnS3^xAvO_0DhJlR426b-&C~ zSe8fJe*#hQ!8Z8h6woSWmNOl)!PD+gO2q!z0A47_Z#{%r-c$Ad}u@8&V$D&n!k*yC9eny%Ful6-*7CwX)LTZJtSCO~$FUre0 zL#lK^(`+YM@?^t%st#vI$E7osNB&+1H0`_ufyS!g~MT7MlU+@J$e*l z7=%PQKvBTGlvV4Aqa0ojcK~<&5n14wg$K%zrcR~UDyHqi}vRUyN$b2 zq)unqa)C<6o`%j13+KjbACis1)kgZUdeafKys!>wMwBAg4K5|b9aLAHx!rKuHhXh02k2T^tB%-U2BCsR(WAG6c z=3Okg(CIEKnyy5{){d`o#10X!F0#D^c0+VO83D#ymI#nZg_z7a2%AFMWo7<^-7i({DnfzpcF>c01# z&Ra6O)Wf@@@o{9#k0n2cCj*j%|0d>RnYw@4&ejaTY3gx#WdnwmH8;i!V zuJffVGA=Gkd~4i-naGQx?}Jf%iNR*Wd}R9*>4RkaRnfC1de%kHdV6-?BSqz&&fnvn zI+P5K)kTnr+Gpd~it5r|X!U;d~;Zj^XxOGxiNUY}P`7H!Go|+vzL{D~&Gl!UQvU5at zqq9I6} zPlxQm*>>;Q@2YwNC42(^4ieVL&ajHQNc!k^Eon7LeWZ|tOgx=jZBZsOGsOt`=JbX3 zg>b^jA$i?(_rGrSrcZkIzo|IZSc9#-R$K;OkrQOBXQL|gEe1D!gE)&0yBG_E(ilQ! zx(e&b6@*mJ%PU0ih&~Xz>p+D&)DVV;)DZW~v=9|Bw)|x(gy)gVY~NzXtU&IRB(v_D zqojR}JF&n{W5;{c$&K2#9@_lqfzTq~s3jj+YcXep<0_%9=^`A`y)^|MPUIT!Q zy9P^9n#xYsw+nKy;gJJb%hdT5o%`oZUNaM^9Qb}@r2yn^MIJN{xepsqZbhkC>{#ff zZPpNGSRlFcLvDQ+zRQMYcILSb zr;mA$@4>kDC_kS1XJ_uBl-ih``CUkYbX zX*Mp3ZSNqv9up)=-+|v*SoA49Azem$wL{z}%v9Ll2>kiqU4Pfr2NPMrLq-CFzt8N< zii1i^3`JTTyhneZH|l#~|8o8lsC&(rNFewkNP0+MNGc`SP(+y0H&~L);f=Fno7e!R z_Ombb895QkRzB+1T>VG&#BLlhi9%tefmZm}58)Nr&08|~RBLca`8%!LDBsgV!rhDX z{m*=-P%Eonb(I}O9YOg^y`(ym9j@Q2N%&u_Yw;J?xA=3X@oePT0-w-M1!A4rqNiui zbomoDkmfmjnjd|dXHQ>ldBp}QBY$QVqM8s(<3^C07#>6K#Mqp}Gvak7MoEo43n(Uh z&)E;v6*>=*ny=X^4>upkh|-I_@DF<7XdzlOJ9FZZ1$vn)zw_VngD;f-mt6U8y7J*$ zM+n-vdafmP^!g8GG)|pSZw5$qKG-$GQ&6a1VP+-*7JS1A8k+e7!im( zeLyiQFNE~0$HFgylVWXp9;S{&L)dYUD>y-}8E8{b!8Ov~C_nb%x%?7Yjm-a`@_%GR z{s+TSmp`=tAxKm0eF#uXH#RjqWV&tw+YfaweXOK&maLYc$Fgmh)sOb4M)n-Ko`m>t zj!(nTi})`vV!bhM2z#&Rn;IVUhho?MC(L6qeU;Z__;fg)4S2*DP9d)u4%ae^nQQ1O zU>1VKBLpK~tN*1I2YjsLN(Wl}XM+jf;RRFAIb<_r(6zh99}b7BnFsKp9{YnC-iiT* z#tY7GN2!&&&tTSSY!GHJ3Urrl1RR1~=a=^{`XiX*6>&8q=ELnzc>fjcPmz6C(9ww8 ziBoYEGQm1lV0{bbV*XpGGg}%?yuPEHQ-AhjaSS%elH-R2&a1rP_5REj|6#KIrsE}V z;Q28l7RF)J=ayVVv8djvp4rlZHnemgn1J>ZZhNLEmq8=H-b5Q$0aV~|Sblx9H0)gP ze0H1>#F;I2Aj|bf z`N(37hRt{Y%*BY($f%;T6!2T+jbD@Ohz&atECzH8WbDj&M5Oa&Y}Z`hFwk+azusS) zOrIEwmm*N#lc?Qk=Y7TVS45+e{m$ojEGzYwZsj?B%=kgS^)HPT?=Ct8ncY|%e`7s3 zN0qeJ?jGB^wFyu8Yd_7;*lo?;>e9|HbK=U*Gu3jY%5QFDHm3AvIFy#Kmv_kAWuKn@ zMMxUf`K`}oKf-c+4(cu@@xjZD@>~7efU}gb-LijnWnwFq@eTt=Q8SBXG;KlWbKGFg zg5VPdUEY*O4gdEmEeU3AwG;WS@ca7Jx;0U{Ge{CiyLk??J1>~oGCa^%I(6o>Shwnp zaIBFN(!h=?Z)`{1O8@?rhO+N>%w+__0}XF3*pVe5gKD+j9+mHH>NE7TKx9Kwobr@|kx2D@M%d}DR$$7l{#X4iZSOCq9SpNgn z7FdP9b73yaZWDaLR#wvv2dK>C|&X%Dr=J~j= zYJ51rAyG+1S0r$}eI$HxNZF}Gc8`XCKOpCb6$LXlVnx9#V?=vfmztD@(`=vf&( zEA$*}eawEQJ0FvHG6~VNjjkZeMI5d}T7Z^UIz)9JMSOEjPN@4%-sJ}}rQ{X2 za=tyeMV03We*93*g(La#w|6yH7*im*l$e6%iN+K}G9ZHOv5IMP0N0`P*|fRV-OEm! zgdoJA&fhTDDxGtQH?_I0qf#f{M2~J!kNX@#G&MGvb?i;4ES{bE`QQ+oh{0GQ@DC5&)v5SXUV<-+3O<%#; zoFyEpIxfn(3Oh^4Sl+-hIzJclC&<(Bqj)EdVL&4lrK%ex8Ew*OXk$jk%j{%{Y7gsW zUUbzlw@}tgBRKWK#-*p=UxVq{L-E+@4@u~Q(};1<*u1fIPa& zQjE)o7ht>fr|hLP*HWDaT)8C6m3}McDA+m1r($B?!Q~5oQe8g2VFP87(bsU*u1iyo zHG_|ZzhGi@Wk|hdSUsZM?6@c!I<9pWNCZjW z27|*};Y9`<{X`athK7rOk*6~RB*Ul=2o7kNnS)Q}d^I*AiKDXZ|Ndv-_7_>F24}!U z(z!v$mGPVt{cew*ZPC-M*vPkme1;x8BXT&SCdyY8Jts!bh#ck)-r~+it#|MLu>R!b zLpWOOmpx=ef3>G*WDroUTWFpq#6dZB)ppy0_SS#bxWhN}^Pc$Ri>joJNyS*HXH{_T z4>3Nt;PP-0oO)eZbiEjujbY|Go{%XnaQsr0WU?64)^+SJqkCL%xEH;Kn@rMDDQyqm z`R%(f=~q-h_Sz`IzZvZ!T(t_&25o+ZfFKL^6$yNlttWeI2R2Plc>~Xud8Hd8yUwX?wDNoUQ^67~A(c?|I0@F-br z1*g$en~p6CTdONXXg3d_AyV%wk8j+OEf>9Nl+g(LP)qeZZJyjBkg7HLX0(4Eav_+h{gVvZ zP@<~?YzGzhNeKGzmD$K;_XFC(w!RXGwl<{tkvr+R)s425rm8*2u1;-^AuT@7IC@Y; zO`=QhNk`BHfL(ja7kokvo3XpjEd@5`R|V&mqKWH&8~5`C2LV5D67J=EMGF{%EO6rN zdkXaLe^33_V=Dirm%XW1P3$;EtV>H!))yrD%32x*77*1GcTx^Q4Fe1JBcXHbl>U4A zN?o72U#v`&u4{oY@jG|2=&{hmMk?l|TlvK{uy*+DDrOytWHCECil2QSeQ=rd!Ps*i z>NdnO(+6uqoaXew1MiC79P0GJI;}y~h*{wFv*B?pl34cy(ImpvMEYR7L%^u4DwMbC zz}scqt6b0vE4Fr~Oht0aRGI$x+fpazRjOY4l*1NjJ5+jpy?B0oPT$K!R&vsojuq=d z)T>LllIFRqM#{fDzcQa+LGK0|9lrQ&RlK`B$#1LUz25N2Z)@b;?PY#j8}IE=`W)Wp zMep-@Uu5syVHaz0Pv;K^Dj~Q@<(g^J!0wK~6WbdU5Cv~wds(;*`+%g6cKxrA+k29c ziX2u7%jaiPQ(OG)-P_SFZ$Zs9fpNKXk=w$0_WUW{U{i(b%K-4WA4N)MCO)vO4FBbE z3l>p!!$PtDJ<3BJh5Y`Nz@sUG2VnySn<9ANP&e2V!Q)Ec(G5xEzeF`S18{`yTo0Yx8fkvYU$1oWFn&E>?G70pLk`;?gU39)V zXe3*b`4yowM<(Tw+~{XcUjyqX+A{A8WH&Z*x2YrA`JEeop58j!_$QoVL{xeVBn+v_ z5mMc2f?)Y~K(R;~A9n^k*{Pg(kK$6`+=*9P1xfQeEve|lTXfo0hjtUw)SV2FIqyx+ zOx}di2ZkCai+@=Cc`Y|=TzUUj_g<;@mF^v}%9gN)_q#M*Qh96%XT8nO^WW|Y^kW56 zbXRrf3{=i8z}QtJ6rKO_{4g+BWXfwbo(zt!ZVFm!nu6r2TZZcJ$+QF<9j{gUw1R@eQ)N!!&gP-Gu*@ZG_DR_ z6rMYZwt{C5lD9V{Xv7xwk??v~G#Xp#u<#d@5mSVR0&D5G@XKV#R_R&}nM}pUws5Op zZKx|C&CV!7Zike|}H=a`q9JR9h4i z3&)G^JmF_51cCICCj-v7KMAg@LZFlU7^sSi0Qr~8Iw6ssUvB)u9(4dyn`Fl2ncQ{ACs8ei@TqCW4=-Z4@!r-bPD)S#@TQ zEGh!)TwW=@Cy_qopRYuUf~{9<`FAy~{>?ijF2f$8>$4?MHFQ#T2C3tl?y5Ot>Fnua zQ?;eoik2e6A`Y7WS~wdD(loFxhJ+UC9b1n3Fq9x0yQ}PQU1Z#YR8V&WFaMTMJh;w=mR`!4z@N34LsPo znpdr>J}|M@tp+!KA^sNuK<4d2!(pSVtH;%4tMxFe%Uz?EU#7AW8M#!$L#RtI20W_} z>BV~XSG}Oe`0#~Y`jlKH@UOpH9ddX(hEp%v4P*eTBy-3-qplWc2SyKu(zmyCI;{^8 z<>CDGJAnLseTQpewY&Sj-_Q^uj06>T|JI>m7LlmoKzOTiq{|OqBZRA_EdW9_zYu z?bi$zjjnNzN7S7W<|}r}ZJrP(-xF%Vyv7EgvOwftQ(~%8!Ow?8IU#OBzsvNXP z#pa-+l6(62rq+`*hP)=>zt(9RCgPyMaP5&gPYs5D;920eB7Q@H;dJ?b=RoeE2l=0E z@9EdxqrJ~X?VYiAdy)OiyEHkCCZX(R>j*kE#bu)zEM$mSE!q%2Ig&pdIo`!K-r3eZ zxc_!1LbTmQhs9>TXwdf^;Rb&v&k^^KxPSx)XUyeI2Ug({#sz>)g%!HRLiq23|R;_o_KT%b| z0I{3g+AeP4nYX`j@?Z6GP||G*=BzB!<(K%;6rP$>ZhfUsH6vfoAEC{<5u>jaBW4>P zw9(jg^kpkY;g^H=ORs3Y^Y9M$w=r=a{YM;>&*xdZe_H%SH~hOOs^L5Nr@IPvQ}Kwu zLk5lbcAhzTv$LN}mwzkQ@xm~E*(&f9^Zi?`B+TJ7Ka37r)M&gfKFGo_%UhCz* zeb^1=dY+@^vj~4*r)k6AWl@(N*lAt5B$tj+4tU+LH(noW^ZB0eO;bk^d-iGTz3@#Tb93Vrevj5?{(t=q#FJl^Bs;Qa;`b@VzjON4nj8vl|CM?TmnSn7 z=~oL!`uzHf{Cg+*9I!cG`R{bUU79*<`R2|^l$ltd-J14(l7O`L^;zy2(Z2Dvu&@J)3Isw+w7A?;hMbu%mo#0y)lQmuR!Gad?BAu=dRK51y7i zAcwEb>&S_V{W^l%4K4YO%s59(zi5|s@W=Lu*Vz$X{E{OV*Yo64Hk*BBuk~Q(L&*o> zX38Hxog4SZC4(>3$&CCI2?9B?Ur-G@vpIDvvWxO!`i(op5nGGK2if1+`GN@4voEUU z{NJUrLl7yehZx4^X*K1Iy-;&$hdK9W9p-B&l3#BPEL6!oXzKmSfsHv&;y z+MjUqdxxes2Y(4iIae*26xw_udCt97Hmzuxq)EghFPGNHiAzCF51u5=++5RH-BX2r zV9D=sbs-Y-H>YgIO%Ei>)h}UcUDuMs*{wb);(*vF zy`JGQSX68umzTedra$N}-f5*f_4L^Qqq_>uDZqCWe5wkt_=oUG&ZSy)6Uzp{=Ov5| zZD85Y6zY#afrcS2Q0y}b6#g^A8wCqN;!HvgzMPy(;HnwJ0zkTn7*pHIz3%lDh5Dpg zLphjYQimV$hKIVQ9l(wm-+ zNPVp!v2Su|La8G`sdJBn3JezE)Zmie zI-FWqz^O*g%>QTO(>&ZLn!1;I9M*J%VR9H z3YIdrl>m2xtj>F5H%#CFmD^kBQ6qldMrhbj+)L$(W{ruk^6ocKAkvtB&O~H+EJ_iT z`9gr_jHocGWJFF{bL0f|neL3#9`k{yNo##}LY^KNJ-IhePaZUS!cCuztcZC9E@T9M zRV;t3j~0W6FysXwpIaDz=A9c*m_o)-bUtwFBi#bFqqYJCeqhrTT^XK70j&?tAVn)k zzoHc+czrmR1H91+s?-Xa*mQl%k$la4OC31eR-cU(?{C9xRk^Q4wb^=fEfm!@YCXno zIL#M-PKJv2X^^||T$FQ)SX5!sg%*hmyD`)Q-+bVggj`_Mlu+D6eoZ|>%F^Iqhy zK>yg(Bl_nJKkyIfACp`hrYbsrps8eFO_c;dM58A5qENr~5A^01P(TU$3YApMLusI*UL9#;D!if{j38JyhMUh3rPfsq9BH%C#uoiPm!d8@I(BklV~H)_v6p6d2tgnO*{lR zWjias;{``fkqkNb2-3_Ak?a*s<)^M{gxNZm8-t-@D>?11`WPiiI%u{fb&<4!6q05^ zX_8%esmc!-VP*$hv*()!QzHF|EmVVd*L=_ovC$$PDv5;<{QL&b$)~wQPTvy<25+z9 ztGQ*Z9X^Ly%gc864QKzD$~#o~;BrZr^v7$vd(&%M;Z*`5{n3IG|Jvns^`YR4wa!WG)-Bf!O{ILO;>q}Fet8A2U5oZDNsV*42s~hydorL()#4n& zfSl@-wdeu3gi~&wJ_aWElfeLEip2UaZ?j>kaFJD`iS5T~Sb?k8w;D92K?jc8temS? z;$g`~?Nkx|nlHlV^sTNBJHqQ9qVaAUe2GFb?+EvhqUS>LW`3%ov{e#zs8SOpg!}v( zuY=8VNG`d30{>|X3vSZ*Q6|6U{R}b9JO<{ufoYCCKUirQyM=}c|CUwy6@0VK9a_h` z4Wyp6Co|2xqgLKsLH=;ZR<$)zx{0*I4yJF7)np^coq+%LBMq~xn&mP^;%Jsj0WHhJ z@2i@rvo~}yUR|@PRaUfU!+ZHIH;v*l7n7!Q$jbaTLsHOhQ#hTp>_%6@W}4KsVVzR% zhz?M-`tfUJVa*?*A3xT4HO~)Qw5|D`ztaqQh$#Jyc6gW@OF2WfZs6ZWaIIDSEb00N z7*<9q=yk}6|D@%O-AYb-6kIvaOE2wXnQuU;u}1z(tDhHokw&lf4S%?WSye}+4yQHTVZU<4{aw$NVx9jT^t!$ASj+3!DD|L(?Cipx9O=KGTtR2L z0F&r&;Y`b>d$If7Xx~&<{l3loOM6)ga%5i4=-{TfMo<-buF{+$ zEb@xHbw21R4elI`jEuD0h7e+RxZ{3(*d2aNBhVeK)AiDQ?|k8k>0z}V^x+fwz{Gag z^BxtdkCNu_9Jzm)JQ3Y#yF`i#40a~ks^r#4E4+c;KyX@z>}k6-#?Tl*hh5uj9!>PU zZ}{lb%%d~|>u~d3*Gf1HbT|Ce5R3?cB7F*da^U$w5g?nJykNdigk8Y&I=Jn&t_pje zv$|IbN5+Ku~@l-oitD4vv;U(>69;g=I)<>j#> z^M8Is{7^Fs|P zvUG@L&=;2Lhkvs$ku60#ZY3R6goU7SBBait=x(I+{vb!p)Ya}&4R95YM)JLxZq{_v z2=i-~Dzee{F}+<_+J!%PR&%2pUfkW&x}yGOK_j=>T(g-U?&Ijq=KKGwPp(QXvdCJv z7Y3tt=BdxQc7mHU)bQj&TlSevZ9%@B!(BW2FuI*jx^}FL+G&h-wDI9{PpJp=UfbD& zblXv{EhIB`7&_4mX(jJihl}&#j9BD+;r}Np%qfQQ?k14V^CSA_YRDB|LUC&ATDr0% zb&{$Lj9KZzk|=eI13LN=f{!H9<(Qx`gSoju02xisbE!|dd8ku|?x#jpfM)GH=;mbW z*cNQ;2nP|q1ZkGB<7nI=P%}tr)LwZ~LoPoZ;iiyuYU_s17KwDZ5tH#3ZCBL# zGg4$wNxjd8t5oUlMVj(;{Y-U%bbsO*K5swx>L!%N9uK7!%|2pf@_bN#_;sb;ZtHh@ z_$B@LrLo&1=^5+MS6~^pe*eI2sD<_WX|=WY`i1c2@?Sq9|Csm4?{<``*~42S`C7qV z2dZA@1#4C@{P2saD1Fktl2^kBnHjV+9hsqn3-Y%7erxg+M-LM2Hui*XQ*9Aw?2_~m zr-wMU4@Hf=elIIpfrfPKWf`(hyeu7>or3u}yg|C=nYJXA=2;rFVMz9DuCn$;P@8_1 zfylk1IsnB38=x_Bbd8`#MwoLio}X!^0~y&$hXjhj)^p zXLGFQQ2^pPlW(|Jq7Bh48L0%fYK?`@AiB3X2ab(3Rwtuyn`I?GHHy?J?l)^uJF-p} zNH1KPmrLs+Z3UgyrqTssi3$w6JEv{uZS&I32mpZ^_1n9x#^KZvVf{_Eh@)h}7Df2~ zxbQ#Pj*%UAVm~TSsxC(lA$$}vq6rco9`5*_N?3w8L|a9-Pz&V*er@VI-(&f(P*@sk z)ST8#zQRoSbxXsFD*sKSSrtDNelGgfmHX!A;CEp|^x;c9^Y)YSfI`-Z?*>*{Q1v|4 z-l8j8)vN|8THeNS+zq-C;3q(htpX;`P4g(JmyMH3++>~q0fMa4v<7}cMsjU~&C!$eX$XX%%W&3vCi3f1^7|*;in}{x*@R_e6JP|D z=ZUr!md1o8M|r^=eWIb%7n?%31jmVGe!5{euN%mPlerb~s5p%iEUA+n&pdaeWjt8RL3+z_y2XDR27f`tS#?P*tu_-sg)zP(_iJDO3~su24mI zF)yr^aFG>0iV2PNFcs`{cWltSoK8CLEA)P{d!MiOkLx|Sqm6g92g}{f5dnwEJ#zW- zM!T5>`WPPMDyY|c2BJm96ZQVI-h(^#L@1`pY`1;C%JeZ@=PKArq3~Z_1skFY%EO;3 zAz~|ychCGlDcYLyCY3F@coWkx;DJSre%spRWM=I8zLGpmjX@RD<(1HPmSM=++*zZR zFfw#Wo3w06A!$|!ceLrQGW}pZO#TilaY}S()=^pYbq~%Nky0|))k}T`#W8y<|5J1m zeXWtNtp46tKY%=xFega8;5R1$!5jdp!bfkU7I?k?!P}d_S6N(--w8<|An*h$8Wb@| z)I_Z%0+k48uE~XaK}`y5==k_^|cRZHJsv^y^hJr)1rG$|R7 z$Me+P_1*N#9LZ$__GjOSKCyiCOV-a!4Qyn!hh=f@z~-0=(|pnK@|I(!?d`WrdxkO@evQ+U+4xdWKDlY+~YT6tllt(zIcl%hF?X{X^S$ zXVkK~5Hrz-RsECFHIXL$ohp!zxB{+;RwTM|k5hlQMc2XY>)q^uTLXm$0>xiXJxy+? z2t{+lbE%Zf&CF_(lY>@fac#UNhCvn)*LW?!G%XhwWg$qDcA^rYE|MmDuy#k+RfBEj z^=c`%o}wFc$>h`>ehsTsP?B=A*a5wYevPb8e8xnQFpf&;Vb61v?aK~CpR1J^)-KNM zZA{0UUXaVBjBUc@xrXiPC!X`Fhm9pZQV=Ql6L1hn})1=7G?j`CdtBJg) z4OU*BUDT?sI$H*8BC!UWwq!5(Uc0YY$<`b$%FWDuIwiuZc2jqDxK4VIC32GHk}jI-Q|>JGxAK=C00_x zH0X>N_cA2VWJb}Cq#VfG$FmJTm;ICx4C$fm!PHB`MBm9wAX+^s@E{))v$ zI6518-=luc?J-~dyu~Dlh=^qiG~tPt+U`G4jd#-*%hPOQ;|%5)<=8+Cn!ABPHST4I z?~Gt{wZ{rhQtz*)aCYvRc{_;YxU?^WW{-M+t6^=5J5HVF7RTMg29-{6`f6gp$p2;F zIjkasmAV3^Cb=V|Cm~Orb|5f@c%OiEF4Eqa6GXFJ^VlH2k>B=x$Jl(r~GoUz$vl+O7|%JsfVcfXQK zysx&2E;wIhOPpP;-aksU)arNSVXV69eU=*0sL zW%(Z!dPXp|gj}#(9q+9nNdC4pbj$c z2BZJ3l@u*7%(0d^lAQ$#pJPiFV{e;t-{*sN}^)jYTHs5I&H>JqG88P)0 znm@buM@7t0v4|EXze~@!`s%Je?0%*Ry={;KH)p2VLa^>&j+A|c{eUJ3=LK0fa-t?! zls|$}mi)=Rh|^yb)a#|YaNHAkt*;blB%=T!e*~q+-Jpy*Hz)&D{=(5|6A+h*z&m$! z1re%@xf}_Zfk%}yszSD2r+dqHz~E!L2HLI^Zr}#DB}(6t2sXJvV4`$+(X*i0yKxNB z`~p!tW4Fi;M*2}(Y*o*(4y17crLs-p7d+IpB=jpE4 z8-QAyYDy;{mEtsY<~SpkMXi)_u0vyJaxAkRQ+i;zg3l@CE-9tHbcQA*3G*j}WI_^L zkOo07SGUF+O^s&Z)!ZN}gOe%*V)y)t^&0m$Q_Ju3UzDF^%2&6` zVSN1X>#MpB+w-eYGgACty6Z)a5pD9;4WSDp$U0iLO4=tF*O-z{+tex1{GaIN=jz_j zYECt!Gx#zQ!IzcNUYLp?DgolvNGIs>6nR7{JbCfzzaO3p+QB1V-lZYq%O46)W_x(z z_BP^>6vRW{57RRYZw&-AaW;?`h06a1EG_Xoho-fo7q4vt|C{1m0{jHHlH^lnzu@-O z(Ek_Zi9er2d4cFWjqB*|1=m{Ql!9L@>z#fwx`0<$LCbGo&OY9UakBlR?&4~2$y#v^d zNgj`~RO?(Zb4FSuA{|kFZM+i(#zWsf2A-5Pp<$ED0Vu8fsg9XNb@O#h;9e`_>^{dd zQMRfn>m4I)$T2pOJ!&XPBAUvXfwTy0%g|0&b=*wpw$gwXlcnB#QKJ(&iZg3&h27;% zSDJKOron-MJ2KjInM_yAO&%S|tQnVBMWlR~9)H)J}Ly0MsyHgR0w@>8?rz!>)ndvnd`m_3MD?nqKnOpQ8I&cw$B@MA3%YC@v?+B86s2wX9`feU=amzJAgmY}JFugwIP02Pu z^yfNsRl=1fj)EVf5PkOKjTe3XrplYCKb6Kzj&|Y*T0doGWb6(gN(ob!Pd8 zQN7dSX~#<1+|q(<3KV0S>3aiq#&RiM>}uMj$irJS<+w*Bsrc9WOsqv^KO$h4bpR12 zqFk`WlwS^F&24JYEo~r5ttEc`5{gXLExA*1}U2#$tedDKO+Fw722dYLPy+54>1 z>-Je!WEFKwPupkZ^pNLGRzcG~>*|gB0@j%u0w7WURRoGQNKE5R)>)iflx{$9uH}?~ zgd5YZ`#s-JV6{eKBq)GM0WGx?c9PnE6Px$nl05%v{-Smemsn?g`fpi6l<4_@rRM5^ zVzS%2uPNu5?)?x{BVV`2zkxbkBQo^Bq%}e7pJn3arKQBTvIJ;CR;j|4Ll?aIW-#5I zw12I(gcuWp?$>5t=nOu?m>(^rLZ7t?^KY_`^2wXFia5!Mcw# zg6Uh$`ayQ*b=$D27;a?f;>4mnJ$uFA6CZt1T|j%#7UM2dPFnd-?E_dfD0**!-BPqE zc;Ks=jTPIwEN4}dws{+7(*?5b$91jq)pS2D{eT#T8g_Ml&Xi3^(#wWL-iZ8xzGOgq zrsz7bAIt725WSLiAL=wU3s7TIL(y}?)~Xv$LZ0|dKi{%+OqGk*vS}`Ok4*-=hNAuc zs*lP?g`CXyTbRx4gLMs}zMsICjW{!SfH8qhA_bVMGP_jl=wdC~WIfh2wL7+i(hr7; zKbf*cu0-uGtJxc$-d&C>{00V^!av)+H-ED*@&>|81Nm%0KPc7&rnaT!SccEQ2V8(@Z)qo13FLbH~ES4wlweGW#XK?O1`7${7n>3(_ z+{fhFs7|Cp_I=}skw31fSi!nInQS{DvlnDr&ttE7Y-82TTN7(j9<^{q9!s+HV^L@Q zSipotWCbjN$6a0Zr1AFL4UQg+mEp5n$Rhmc)kX7taX8@tL+EMkn z2C#l_O8*6&Re2DG`bZMz){96N2dNR&yjCJu?Kv+<9cmq~gr!=epX|IKkf^6jya1;b znXtgC9yDQTf~qlLX_cB~!qQN6mkCST)eR;r-Jt|~)FnNnLMAMorb8n=tH=cTaOyw^~YHuC~vzQzz{;>QC&Sn~u=qnVx zHMhQWXj<#&;gKQQ6es@7i{IzKz!{Apyh{dh41yO$2X_-u)brsIs6)wetx1+!4^v~f z_+u=bM3!-`padYj?*I5%O)Sg-t;#MZHg)_n4pOo&OUizwWT))2|MRVPU(~zbep1L2 z2*`j@1Ig*SjMg|5fs}{CFJN$1@T&(iw zbA)rJiZt+Md>+oqAEgdck6u~(7qO&3$W6&u*AQVhOArxAmDy8Egkl;>kw1~ynTeL; z>?NE4qRWU!<_c9$87Ltzbqr?em`Fw_8o|;~Y~@r9UMwHkrQDpY8r*2Yc^E1|cEO6t zp1`^o^X?g!4xYdbEqTOOV9}op3sbqDT+3! zQM3`z1;#`?8EIVE;0XcS*q@4Gu+mTS!V9^UQr3TOFgky*Fif7?eaw9p6M!M-;)v!dg*UN9kDX`4A zIPSs~S8L=2nnZOn1JOE11CRX~YJ>xI&u^`jUSr$2*k@M_{*u_@rfEp*&@08F(93Wh z#J+qds%*`_6*%2+wG^PuA)7L7AA2;MhGN=M>{+sg$um!1E{2SUriIVAv%vipGdRB1 zvBRa}$cTXbvOd2ZmF=~2EbY9!!=WEQ0~$jr4C_DtQviEM;O0O=fRj$np_3;FcA{PB z;3Y;|dodOct^587b|lMn()$vaL13YfghnumiV`-6@YhIK`hxOgpX#mup~QuOXm(&& zc#&1bRVfG~m|NZ_crd>x3Uhfv`;nua8TBNJ6NfK zse$bcTD?n7$1s`@aQb2^bvNA?skmu@zxd{o$XQ;$w8wvFSV4qUD_Y&3s>WwD`njWW zNYKw!W{v(Ao1gFyB_k?afepi`Zj_Cm%i&EOVho-E^mXYwResS7%11 zQvKGqtub&V$0(Ys43;lobVp0AWVnG0-g-E}zvBLAknGfoT|kz1h>lnk!M5tIVTHF= zbFFPcAvi-{KH8aeS}yFSQB~fNmR1_AI!#hq8~bk=9i4xg(2hHJttzG__}W<Kza1(6E7m(mkkrtFM^<8PP`xK4mD^#;z4NBiQnagcw^xx#uUN zx@vv-2pMW(LR*iykbON2jqVrKUuXW=!t_wvBX0iL!t@B|h3va!oU*XHJFm6YXO9{# zcBA#OYya)i-z*JNbwQ*fPk57QF+tz)`QDSCA=7J(mX;*CZLCv%8g(2{7g4D8+G3Xu zFE5oQ%=lI5P{hW+(5%-O@X0fVe0;g1owC!e6FxnfPOboC!gB63v?*=G@*!_{voJ5ppKR{YGF?NZcc+5@y54IdTS+p-)&Oo zR@L;RJR8)>BpH2jBu^>w^kjNMpN{+X%&jsb8G72Jre7@+;5zywaLX3MY$h&dzB@@s zsa6f8Cgy;XOiFlpFj{qzkdhM=HUU93YW}cEI>G4+!f#)m=Tg=W;13C6T1-nIrlZ^P zhuBQb#r1T%9Cv%s@r=;OV!P^WVSwMsB1k9*6qcPmL30K8!I4>lUcG?|mxaIgcUpw@ zvAXY80&P|28q_~GX>8~$lOzl1@X0rz;{no=_On`FHtejDg_+C_AN^b)|FdiyWIJf< zkR+U-%aIkmr^qR#`E_Y!?bol9S*FN@SyXHGtKJ-L@ED5f+Z>>>pP;fr-7eKSW&N&$ zhk(cOelr4is;yce6NSsaoKWrzxM~f1fp0MKkOMfv|IU;9=i*Lx!E$<%0_zF`oSDxALxEC6zDw#uF0&9V&jt|)%hNCxN z{9VsFA4QfyLbc6~CZIB+_0+RSrXK%7nRm+aVLosxvr5nbStgWW`9u;~C@@tPru$k$ z`NJc_jb0{#i8x>(0qjx$>tKK2QP@s(H&Y)qGS3cl@i#28+^W`&NTT4Y$1NH$vU10dA5Zc_v4T$+1XstTQwWeCb)(6lc%_VmlH;!?$HFeAmQs^r3$Nr@AUP^bj+$(f zqrb_~$SXN&B*!%-#|(D8^4fY6NzuyXypp3rqK2Csle?K5@0%Qpd38swWIE1dnsAiK zw46+#=nD(o*MsuvJQwJ0QXkf-kJY%Z@0rx0JxuB>o%)X%?(0gETELcG!^>+R`p3!c z>!bP=4do1`)+ic1I9(Fu9^8`2z}0Vy&D$dLw$QvSFmE;HtwO(l}wy7i>A>3wUu*n8_#7oD|c zRC?X+p5*C7o{X5kO`2rv>1OOCFTJIZR%?3Kno${iks14uo0?I#yD!CH&9DJY(H2*~ z2lxd>mObOYDXEDZ(w?DGq0FiA9|BBrd`pgRVz;_ro=AKWoc?cslT3%n^lfZp+r%V5 z{okel$~Ubw{=*)i{=)!DTpHydyNF=%exEw}FJ8B&t``Gy4@-Ye$%j5%sB5~=*>Yuq z9wb>h8UmTVUG%~Bx{0*jtiMF}nCW&em-Wa01c{8cZLybH@xit)FhZAI;L@XAH+Q{6 z)N~89t`SYZy5=r{5vKe`Q+}OE1K{fyQSGpadpS)KdC|nRDn?Ao{zUWl)bs1o?8=sV zrgJHC{H_{*tl6eEuU1_V6cdg~yPWZ#)%bVCZXKZs=0sxcI>2!O4DW&{$g{h~|50~vT7T1mGAG!jsMc3`u+kO8tK5E1aPxL)Q%<-mM^Cy@cy=tA@-7f<-X88+7qZa+6grN7 zFZATK2XTlMhM~9CNiCbqe$iTXQESzvyYqoNuz81+3OJPq&!2u;u{U9lz0UH(uy;7a)s2$HA?AZpg+phTSL}y3EW!(q7O5 z3N;LK?lkQNBUs3(qp`&@of!UJR7)GDhRd9b0ORYv(@T@^XL6U>8wGzGHU1I}x0`~+ zwNo>tTS9ivfQ_Bc^e%xy7p*Dh*=_OB?!Ea>e@Z@I!BfQ3CGZ_*2=jWHy5f2nSXteC za>OS6YfO)n^9^T(FW}Wv&I;|UX1>wLXp4{b^_`hgpX@J@$r^txfhdYaS0W?-0Er(e zC2#qx-#4gN`G6gDpY>hqxUg<5Yv7ENEY<~ejB#(Hq>{ zHY}pJWy;pr@Z>C#I``{Vx~)9FbxrYxsr^VT&kV6j@Ey)%t5z%i1>~yD#OBW*c9n_R z_LsHnSULaG(0(e=ayWp?Dg5S*Om7RHfY%`4%|Xj~co&!!b-U0tP1!ziZOP$=I0QAr zQz5t$2;!7t0-FE3=kHvcJ76FBRaV~l=~xPn;H_aqZ-Qz*pRqJL0|M#st(fv(!Rjzg z&Am1)ZN%4Cy!apM!K{zZ6Z#qP2@f@i>=h$65lkyTPA{-h9qI)6E}VY&z~-Pcmes-b zZ$gZ$fuZ7qQbX21cF7DCAFtLj;cVw{>RR+xT`YT0-z8*>G-HOtJ}76cg)pWT%lh?d zAPPBIx3dEcIX!M-!wIz4vIhmK2^8s#zd?N{5qk1PGw1pSWiGJat^1Uo+%zcjcXhGc zL79&Z@?~1fnyh92@kRUo!8fSy0(*^{qwnwPRPLa@^9Egklc6J&fk*E;iv8YllEDAX zjZA&<_l!B$(v-jM(M|c|7rG4(9*{?GC)Q^E9@K}LfcT3Qwfi%oX^*i+p-O zBxl~RlXbH*;t;15>b8YI#r|;?&jdZS8~<(Qhl$O7$)B{p)aws~ePW=yZ!h65xNBn0^C+x#g;HlZMaPKDtiGq zPiwlQ@_(WCBf~fA_sQ@bIe+NC%-{FF%)je*{~bIprsTf_yDwYl8bp(YR-v{yW)*59 zC|2P^A`G$$CstU6H!iRWZ(n2;MwVEGc!aPWQSlGiuGuhWC~pDVT>Xij_*6blir#S%YzdCXE3$(C5R$O+Y-)^+ERgp{)`GDtzX7|Yh{ zOFocJ$W|ZTFG>3P5NDZO?u?GtBDL8PUpc!Gpygaogd59s))YjVE^31yx#dpTS!y01 z$d+m;&!nE;s_q~n#zAp?Y;%(S_L2GFaK1~-2O3|ZX+%d$5698v%DYq3*$F2`d_w;> z{(asN(hJ(9qpwZX$W==QiVYq4i_dp)eiJW$XuI!I;VU^pdf*7@t-mp_6MtAkvvTDeksnm}`L9GZnh z2c0?DMf;WCR9_T`_V`&}u3trqVUSaZl$q8UQrbn(*84ObqVC$NZl@4+rj+E&3Gn?+ zg4~<0k_#b}(Jx-cS@AMjJL@ub^Dt!;N*T)G{_bu8MAY7Ps=44>& zv#57|Dq&9ba!5lJB^a$1oCc$gU^y6FDI^fEzeaB}JK!ACgl=y6SuDS|YQKaT$A=wF zFTsqJLN)Y4chrUqIL)}V(Z_<@pLwR%z!C z_94@i=b8EF+o;gZ9`(;JWJ24cKGW|zRc{Io**~rs2u4#+^1)*B2xQJd>;PV^pAF4J zc!E+%I)z~K(flOaTSDrZCpyAT)^UY0z%%m$%gb)O>H5fR;`hwoWEEt6fQwD>4N&iY zH|-`2P!)1Mne}`hsz+spb=@lZBW=YA{HV`?QQgl^vuHpwWd@xW^JM_2cS5}LB4bm% z!b_N!<$NQNE%J>1Z@%=bx^u9!uT?!EUqq|&O~=j8H=Xlheg}j$Fon>n@|Q??887N* zN2GRA*fE)e)?!#a7ad`U%v*ndCw;x?(bwR1^fl&J32+U8rGlPJVy|lwJ4Tb(@xg{F z-KGkFj&=9m43Ygww>}(wQMX>mtW@MZLSG*sl1`$p`EEZ|>6}7geLA492jjgc!^_aw zLlh)~f7ItfX9tw^oaln2v`^+2)xaV%Y5kKjU!ZS}=W+I~A?Mcg{TbxE8m=cUvERf_MA!NzXr89D|N#97l%6S~7xzB4;pt|D&-G#sPkh3%hsE;BC=Hgo~r zG$mg}hg!=r^acNr<-b+$gb@eb-pEcE%@IgeodYTeESGg=kqNV8bv-F^yh(EpsKuk? zDLdrk1tHsd8EfzDHDm5>U=fD+7oJJuTlyo>exomm#Xw>Ga{oaqE8){cKt|D7gN`fe zbkUv17)4INDmzrPpRHXE&9SS?nMEpB%5R!gvy)F?y=Ds2m(tY-1B}l)?k6xHWcN0K zVOPOwo#RvdjeV^*A{BzoLiIVd($lc&3Um`hYbs>t8AShW9vzF$Ky?cRv3jmShD9jt zdHLb6uPmxTQFqW-iaLCa3t~#ER)$LT+09pW|QreI$$A~AB z4UNt`YS$`zc4+}YS(T&fGcagRq^ggaadw)fCXzKe6vjZRECTx-zDT3|76*i_*# zTTRwT5OX38>Srdrhz?i)O3|ypL8qWpZK2_`dI4>vK-nXc1DNZP~q z!J}9=q!|ZUkMOD`I$3w0q8k*n|AV3>4caMf8bdNuk}xvUM|NpGH_Zx!j!I7E9ICG3 z^Yoh0dB_W`=*)ceC-OIx=F?_)@x-*|4FceuM1EIm8@<*xsbA`DHpE+Q!Vs^qo0v?) zYNu{qvJu4r>Wfkr`zC)I0(iU{2sELouL;U%M5)RUnLUaxQLT~Ad74DEm>*ZkhBz#c|lAwd7f&X(N2B)23m7VrE_&uHrXDl?F?Om)4cjW$F~YVM3@~g9b|IuMoa;0aUCtGo?y;;HL>`%CRY`BV zENhMlgLR|}DJcK)0_lAtb2wIYcHdZ)n*sh(<#(_&>9!9@bh+EaU52~;QAcf6YfX|@ z@&e%JDd`v|Ncy(+kYp}>V&Tp6XzlPoGf z4LVonGpA(cGpTT&N@f+cj$&EsY1P6yxQ;BOGU-8KZeqic6D6^Egdk^8(tO4`qBkqN zMF?|b=|t|Ws)dpmezL;0*Qjo~Vt+Osb8@B*L~yeN6|Wqgi?l+TjnxD@TidBgloG7; zXXlEOG0H*j^%M2+>AFajMPUNityJLxb~$Fhrs>J5Rox(Uxz4gLRYQ5xY%??8n1R*DCXbLA>HDwRJJLH?7-eAEN-3&Hvx!% zjX*!#Xr{Jr&m)&B8$4E7?pvH}U%SU^5-XXwL3&UaBSBi`e!5HjkB-3V15XxsDe?;$ z-$!iUs?X9H)}v^fZseaR=g5s*tUJ{-@~PhUmv+?ujruBM%#Tatvo zkC5a`(~c&gBmBvI$GN*|(}V}KWzdt7=#=f=(t(UNm9Cp>RWVu^a$WdMQw>y-((*|j z<=!Z#O?r*JMQzrwA^(MPUp3*zfU~lIQXyVCAzW*Sw?sGBB+&ko)!1RuejVXrx2HOa zIz{J`+ZuKk8J=_3)dEXgRZOUub|0_XPlv>dYgSFOOrIR)>FwWs@OTY4zewMoE=>6s zIcf)`Yuvv?Q7Jvp;n>}%fibv$*@Qd5y-&B+$n}p^mz>)M_eWDze9B24yFby*O2WOG zY1(-#310imdd8eARDAm}k*UHjW_RC4$IL@%C;xad*ZIrMXfG?>X`;vnR0) z+O00*J8cMCcVzR2lEoRaXP-P)=F)R=S?Rfa0KJc#GJLd;BoEW#C`m9~AWws7W@gZw zClNAz&jn5bde=VFglj2U_*BX)u6Cb8#;8u3zk$%|c#)skA*cq{EJZ_ ze~G7LF#V%?N{xJXsrfE8!hGzKL!?J6hX^rVLVq7nEz?czQ{%PVB|V|(^*^Lhs;1ZF zZob132L+CED>WTNeyeIGAF9QqH~)fA2m7H3hI1sAHNNP?Y_*CnzLVfObxd$D>3{JV zTYN~)(y~*tDy(2_DUv)P8o4bKK!UNNGwxYnw+m5b(fj(*rVnrhu!R@Z=T;M^f7C_Wg0$4g+F7VNW zSwrPDl9OP1DhOpu(!WUZu>x1i|;E&A$3Rc`oxRq+~-bGPjO83m} z2(MqLpj|Zn-4H&aB4_yO@0AGd&Hi!*=L*-J2&X`dv@v9FR?qMq8RgUS_%s;3S2hHk z+D7`3Js?@`af`ly^gy&y()q$*xi%bqR67YB$b-*7c$Twl!3E0K9Gt zMt`+f($SGGUSm~%)lF!feeK+XBKNfJ)roWK#V_O&tPSJcGz~yzju**U(B-L z1FQO{U8FAY1T~vm3AZoeQs3fmbOo{^iWRe{pN9$$TKDyWt7|d8cG{}W=OPYs|Hc+v zp#=}TkHv}%aYR|z5GwpaSR8ygN6QcfL z-M1MuPwEB)fl@$_6O+PM#Lrk=OGdExrKvLnUSqo@ubd7m-fD@Psx&+>FA#XC#HvoG zT?l=x%0E*N&Ia|(*zpU?3&h$+s4ylBM0CschwZo2KPW~z+-?cm`&R?3`#M83o!m0Ifu4h`WrKM5uG@~f+ZTbtm!%`3^g=%w&hh3y1-$ex zZFiA_6%#t>S)s$xPWQuZS2X{Rp_PRK(Jsz%82P&=-2Y?x z=40a1)XXVqX=9x3lgBuj+t9%b*{|tFR81A2frj&gz4lv}{BEr;*W>B&zfH*KWvQ!@S9*WP}kb&1%ZgsvNhlge_sQ! z{}+OwhQM+U!a)BmVJCl7(8=7&x8P)tswYpP6T;Car2`NWo5gizewh0o$g9G|Us+Z4 zf)TE61&iM(KT0kT+MhHpATC_oF!k1uU2FOVgallKlx3#}p63Kf{>~5dZwxwp=Yr`jDQMxNEm?HAa<~-^P7B&UJ!E$ME z$SSL)*I$wbYoC{!RqI`8X=9zxPdf*Nn9{jj@=eHoIc)E>s-D)3I~Xe5js{?hy#cE+ z;wQdKd663y(?ADcd@sX%6X!e8a{{alIGxj?yVf<4&tjcT9?oQjPPtMaec z;yacF-)OWb#&YmD8tKQ_T%KINm22^%^LQ5UMBF`gAWx(ua+P=VQ0gh6o{~^;Yh-EI zejO63mHFUUK%#|EvFb$&X%DszM5AgA{%`3TAuyxwgQ=btnQMaf$QH!XE#YBLnqdvo zC;=TY_Dr}L0Fj321?~Ga|FQp?H2TA~;hEK~T+m+}io&%JC0bQ8Sepu8ckUG8de`L~ z&DTq`9_!%+qn*J!<3lNPchJ69%JqtA{x^7o{AyC!%2?;N^TF81EgpXf+ixhj!5y;E z3);bTCpw}0c(kg1MnakWnjTq|pMXr{Q5(30ixRrF!Jr3F zJp*WXhfoAx^u|iKf1J~W?KjnvcSx6i%9y^+g+m5t)deyP&3JA}8P6M-Jlc-uj>hrh z7M{lbvqpzfFRr1BHsYMNbaR-FM6exfN+e-W^K5dXtMaRH~41WkP0 zC?}|6;rCJ`Yn4Uv;A(EQc>R{?C}|O(*CGd}UHttEfFMWZg$=>N4;X)D0q{SRNe9ZT zW$#lX1v*BB3y{8}^#f;+;@c842-bq)GsuI$8g%Bg$R(V@cU($0b4Wju3b&@tA%Wqgnz6cYEMt{blJv-hP9`&8%2*A8?_W@=N1@DWW{C0BLyRYMYlfJxX|dw;1BVzVy&g1- zvW3Z`tn}yJDDy~DdboXC#F~J{PSJW+vgIcRqxUbSO~H)&m+-Kbahn@un!4?ofsF1= z^jIy7sWD(*L=%zYn3XwGGbjHHS>Cs*P9~mZ=>k4fv3v1wRD>;HjMC#)j4#LdP0Ami=$HXSbF~(MSHem zN{pA*smCdj{^?5pXa_w=;(ENapB%bp-qaOJ&-`t>eAWAmIG{}ws(!;y2l91KURNXN z66>?w_v5_p*WReVSA&f0bD$AZyDt+PzmJ!4UK_$R8kUT; zd^jQH5#usic}vDnKgtf;ee;7h=V_s0WmQ%Rl}7K$Qy)_7iU*se8e zaN>*{lw~jyJ+}8@t;YZ|5z{=Yn`p#&Pnj@SXnUf4ay|`-pJ)#rVBX@VK3_oD?Xd(4 z5Qw|$P7o2fR>I$;xfN{e^L*eym$qe!1Gfr$S+zayX++ z1KEKwiMS2i##^a0P^pc&dOyWADCv13IkR&w;bhTwLS`4xBAh~*(@fKn#D$y`eCzYK zaaftbs9uRWU7AvPC~eMZjApg#6yXokOVp2uMnX8}Sk;wKu=TaDJ-q}omNBkg?vEYC zk7Vz0Dof@Xq3vwBmM!`6swLYVzA)ccOAAX!{LSJwuu0DTdG zI{evp&sI+WlxBj|f`!2RI2#P*$7#fdCJLw~fj3u{VDzWScJSo9~bEzMo^hS7XHCW4xUEi1p4_6Z!(&s>7+lut4+@ z_QdY2sWPObVWruTuHH)JGG+7m_fC;p=;%?>&)d{*sIC zsX%bRCHQunKMoAYxLQ6WFq?73>!GGrNTAn7Pjepg{Vdu6u!|5D$ zW~axp!op!z{e&z+@c-70T-){#39SRz zYvY)>LWA@jb*rDrXRUgfwdZPS>{ge=Fw9@sl5O34dpcW=_X5kqzA?d({!15lIJtAJ`0H7u6G16myckTb1wNXKf6w5YwW{$dz z; z;i2V0*TnPO5zlkJ$@4f5BM-WThNuF5;_G|qS0=#h)*mrK#B=dhwc;|JT`v&Y`YV~( z{0Uzt?&r$>&}~pt z@=5b2cAmw{LZEPMpzcsc@Wp?)2{>u^4?H(i9Gk{rT&r3zUdFgMYRhpi50T@Qz>4wa zFDp>Iaq8&-JX{pNgFzRpEhoyPB#zsw*P}b86~niDN;<;f&m@V%#S--hRdJvj za0Xw66OFxG;JX;_2TknvU<|YNBLBzg={5A})qD9FzL!hmIr6c0dE8rnIAwb|BRDA- zosNp~2j$^7J&Snz?iLKTC=9#oMTW`$-MCC2*`i@+7`fMdD*be(DWpOwfH-z-SWJ*! zn=K6CgP?5%G2#@qN97=@EzkAJuUxAH-%ni%NSu=F5iJ^y*AAGiisvDs`AO1KqZ0Ou z;`?3h@W{;m9Zi%i?fdi=T$MAymjfGP`|CsoLf<;wS$mr!&oyf6C4k~gH+Oz4|8#_| z=x4mEHWLr~^LD|qyAwj&N3^tHC=e#;gQL%h7|H;|b=55#5USruzuOJs*&RyFEZP*i zZ1qs$)D~UFTA@*q|NTK;qpaf^O0!MpX6T1qN`auLvsh|o1H_?iXT7(lo7tx49EQEN zj?8%$d*-qQMf&NQ(iLV3h&SpM98eC=Bzak4eI$0=gw{mg{3EKwDqkZ8Ohn6K<7fHe zN$cly)`jU+wM?29LSW&hSWe3Lkxp?Ytn z=+q##Ow;{UqFN?u>G&^L2w1EVyWf3$tcSOLWBon)?na46X# zuF7vl1 z2EaZKM147dVn$+Jq8Gj4QO8vO`>FU~wk58AL0?p4bG^y#7XhmY0O? zTfy2cgS9uL!}Ekh(R$DXFq1w%tabn$Sd;!fTKfBA!PiwnLy>2tBQ@&&AZDQ^Hp$2@ z?Vt)gMunf&FMXS2URFQdiH`eIIyQXSw5{(+9WFCu1@B=g7N3#}w zAUvZMG8Gwawt8ip9;xoG^8)UMoAK)9pWG(@pG+Ej`$_%u^vhDPf@L1eKpaGS&2W5728(di(j(B zi2P{vzzB@u?_-7LUh=&tZ)2TVr=b7EvThL>)hGcsS}kG9UMLS|rFks9PBNTHhNx3c zaQSUr&?2kj+TdNh`C4nsqRwrExOFDK4@vgu(i`M=Lom& zq);Iu&;xHaN!Y1wM@~A{ zx-Lqu+mS7SuIY8RtoI7aEyCPi0^Y##D}VO(+qpZ-Zwc5~)@;aLwKo&YRRSbU(SIrH zA(m}Uk3rAMoPpJ=vohpb^4j({pLFIwsZ`!ZQd~;WBXe~5l!?2qUb>=@l;;&nPZtE7-$_p_ zKZ4b!Hz=^x50s|V1WQ2jQ3FKv+U)eVFv2>9<%m5%GB zyf$1!J5`Un>xs zj3qFW#(h33Cvy!gk)K|fYqZW6h7ckj3VBSqCa85KDN^#&GiCLP%w-My_R_xsm5$+; z7=DRq(J}lI!*5Pzz0}YkH3)o}ff0Wd$o^?4CWT(eJxWlPwe_EZ$II7iW9?OB7aE|C z3MguW(7@DF_4~m1`;REPQ(y%6Pn-3Il!Ny-j1W=?vWD_}*_qUB&od6(n9ExO>72BG zeIoSv0Cn*}UmO+nm}kQIb+~#t8_uG^o_BXDX%%8 zjpRC#Pvd=T9$nT*;BxX^v57w1z_XTb8YyR=b&>QOp$_{mvA&$UOEw9fU@+^nw|OxW z;&-gssj*adxxhjNn}DZ?$V+lTEg)PYFkL0UZE@jxmxLx0z6RB1K)q-)bJHK!$TnU3 zl3&#b3`?}IeOXYiuw)stXO!;m(NY`k-OqwPFR!IGxKvIC<@FHHB}Ftf=jydWznjU! zCQiQ#{hIgV+R*PMaG`3wI&>ynRs%x+#OC+loo@inE4 z;9k{xnP&Y(pW$765YZ?th{!>DMiN^{+;;&3I#wW2bjTX3auJ3t&*s-rx>KT%}@DfO1cK!gVL zima-CNVOBPZqv^*YXg(^uHZyVw=9qRtGc-_=kS6=EjagEVKUbIVR}oD^(U6f-i&{` z5poHsCQbV8b}xhPWiJ)v8H=eac_f*0irZ&#&mTT#qY#RYIFHi9(en|AZlgVimr7Sg zYFG8623bEHP(OzHC{=aEUFwNSN>SWjM(7*E>nwrHZTW_fqBX#uNC zoFQkYmH!;9U0f?w-B=F}jXaF?_yssUEU=a}R<`8L%BwthPx%Sfs=We4U+RdRkvjkD ze$xsnXacMIXe~KqkGi@{_hV?-t=Utar24De>Sf7f0eSMKNe!mtggj2*Pwk(6eC+j) zdwHqt-q-2f@W1W4jcajUxBUcobhq{Q&R@-iT6gOkl4RO=KTq{IKi|3kbyWHhu(g8xIO}-bPz_jvfLRgn;-GB|~;PZble|@yU>yot5)~fEg zHI11pDQhcRx=tSyF5WP`7zs}kfk;;6!K~>&8SP}=A99ZI;UXv((Lg>PC1|#DpE%T@^?Uts}o|71KHWK&R^3u{u zu+LE-=E8^`DB$xPnwBGGJ4*PKS6D?JuVN7cH*=Rt)C8T=6DOwb-}L@ZJ^Ogu`YWFO z|EB(U;|X~CckM677wuQM7QX^pRh$__DSo>Xd?*&2$EqV{?I`QpLUnm!uOf7ec z?8qyet~bevR(2@*i)^1WvXj4hzt1YGAL*Pq^a5wr&@6QowLmCk_8C$CD>bE=Z0@tf zvy0zGOMi#zNu7LCeu~c-l~tdaajvhjq4NdxnZxpM7&t)g{MKS$tPI`SkE9^+PbG4d zl%emn&%5vRU%~f6$@ju{2etk%_{xq9pO)7R)JA~d*r&{YO*m3MwqkDFA_6yN?mpJ4 zKxXB^&QnJOCZWdHqyIKg5*=O_8wGs{(RaX#aH0w-)s zm;|~p^x_i$dvk%X<6=Yta*8C&{BT%II-Em6XnRLRmspd_P$ELZZrpH^wyR9 zsploH5&s1w7d-ISJUtpTM!zkQWD^`XFDNHd25Q@*gA3w7%Swe|x!m@KQ($oH51pS{V&JcA206> zj%dNopm=$QM@akmX;WUno<0y9-O{eqN8+VEO`2)-98+pFs4`G4mQru#$Gwj#{8N|L zr(JpBczLFmMDO-2Q{Iqxc@w0(v>CUZ$`YNAH^ZlE|i_#U&PznQ%ZVuxQFl7 z8@~(Rx3nw&u?=2-K1Z5qc@+ya`tyN!`Oi?ax}6`v_g^U8JCBS`AE-`iSLWDwnb*e4 z9B9g1!o&3Dl~QIOe&YNbdVG`jHtmm>^`m%MAF(0=zKQX&dP-TZ4r_;RHML!N&mpWc zqkAoBro9iE@}2=f2DVicrDk_f-nH$@n-nik>N4e(neryb%ezC$`!PQr`$?Jq!~~nz z@1L<%tft|9*cov55-UrrS`KfC@27z`>k5Y1wu}m`los31b6(i2# zCC#d00muEp%=56+U)kErTum*rKd;=*9lr|F%Iy7IOKN?M8H~GT;)ieFf_>J|y~pF4 zrgeSfOEJ>FPmKRm9_~EtJhOh)>GE@By8i8?f7u`s!&Z@BWLf+okm479wI-WuQ8;r? zKOD0dFZO#JUJU&l`CYvn0>~ZP%7b0*;mqt{=B#dra!gt#cVWtVkzZo=_Cuf*q;7kcu8n^Dz+5Oc_GgWkBw)gGYXx9epPU7ywTl2Mj#_2u2pW*xh9}ca)l_)*B`vqJ{hnzD{2+Tbs z-fgCHa{9%T7;kBr^2XiVSY9~#L>kjB_wpjgtWE>5s&c5zdF#TqPVm|N*hh*Xguf6k z7kOohOPm|Xf;~lk6^DltyrG<($erY%xNE=?_T0ni0B2P;b><*Z+y%?A(hgo$vyW`` zSJ%EE&+<&4wQ|ezc@P=*g2JzC-c#IQRliHNuybY+cLkQvW0rOA6SN}e_}L};n}Rrw z@kf2!?M6-A_AlaojNe`pR0Ok$~6tf>e@t=fTjU7GW)%{SXR*KeiANoo2+>!5@)ygt$z+H9ieD-^hM*_~s9MLkLS19e_zE|O1+HL*%&sowXfmYnp=RA(*v#U63A}R2y(E?Uddux1v(_M`Ru`yQ|zbcCJj1jga5f(u3aoXSdWGRd z#9C)YdiDBy_Hbpn=5=bSY|XTsk0nss$?0Cbi(aVd7M`?Cuab7Ci_Zbo=^t`#+x&Nu za52@&FCJK}d52~1paqH9bJrgxG31oihV3(|~kL_-c<@IQLZ13RQ zb!o^o_&68qjHT1J1nYKm=A?98xbO}7=Gctp8PYenJRZf^f62OcxCLlAD_So{sAUv^+?U-NXZl;F zV=-_jJ}`S`;yS4O6Z7R^zWhMG40L@Nt@SR}eaopBaY3wDe-ENLE1#O@;e&&gP`^xT z*}&q@5m4Y$MzkK(6f)u5w(?N6&$|C5n#HXpj&wNB*`d}95$ z^ma1cs(OuB_BA1BsOq!w>&f8bF6naaxGu3O_mD`T-&mFP5@Oy%8Cq~yd9GJj<);#= z`v{?ND`#5Py!U9mc;m{LyL}tM3!M4=Kj+!}TYl&-Dkw`-@UfgUQJ_>iWw5Ehs(c?z z#0g|K-{B>ya*ZH;UF?)LYdYtcs>;P)|>Et?UdOj}KcW2D~ zWE%<2{GI|;O}Cm0a9g*gQ*5}qe&!B#_9_UaHGOY-o!u>#*QP#6*Vnky8-3~P%IuQ` zGIXa;%0&3lB-h%eUL1~I-s-z$jmHF(K3jXuStUb259SazDY#*FON-_WdwkZvyUz+c zgS+~MWp*XQ;8|9coDw#}bkSsk$iw!*aB=h0>EXgx{nejYzkZH3`W!z){aYEm+sx=a zUq&yrAkK^PQ~UFpjJg&*et(f(UCa30Z`D|I7n6zQoFaj`PEMwy$8V?bq_6b&eN8TG z{$`L2VGgMA@Qz3;)#{rw;y8rjtS0;GM~{bjtY`o%wd`z(AJKximgG(*`2k7ZD9OJ! z$?qZ0C;3C2tHuaR&&*kfLP4Z>t z>-$XdMe;QUd(zYiCiz;Ee6vZuO_I4Ol%~EZ(vX*!riy%c`E zNq)>EKW&oNOY%ZVzQ80`ndD!aWc~HSl03j9-)NHWG|3hXSn;kTXPV??xc;3GCy zoUE8vbaZg;f_S1H-qYl_Z_Cd`TV$^?W<;`|el$TXH=Yv~0*ZUcp{p)5a_d}ew~ zw5JVp(QuPiEnG-WzkR@8xTmc6V3~En!7{sR;AM55ZziG4(>KnP4;`VUQ_H$SOqa2#(dK7tXbZ_d()9%7OMCb>kC#htEt-y|Pv zk_%1pa7q4Fl2?(Oq<#ecSU-*f^qy=euXYUd+sD-Yq_ z5??NF)J)v09Xi`vdQ?CU?h?6Ijh|ft{w>M!W{v-i*zLl`@rc^bOVGJVkz75=^;V7l z&Df|8Q{Aj@O4i;|jySmFlecU9Z^e#rQ{R%*zQk^+@xQGpX62#-GO^;yD6*MRfC7<# z-r#QpOsxf7^#mxBJ!bWCa_Ych0yixP*-tMdVEV~mXlX4GAjz&?LI4-v@{XFIRdqjw zVD2YmKfXY|nfr|_5SGhN$QrdRT>Obu`HEB+T`9GoGaf-ZbEmrDOx@)H+eAl~>T;QJ zPW-WqOHBY~{URQT*nzl~IqC`*Q4Q!xF5 zaPgPZpL$;RLR2^1ZB_Z{jEj2~1D7*o>=W|n;qbQNQWj(Cqcd3Sbv5hHkiDJeO3g3O z%(Mk)R*rW1{xoQOw6Y^A{)GLJ?NpG1$aL27=(sfUHU*}KQX5i*6U;7YBE_=NXp|L3 ze7**r8ZtwXfUNE!i)@$@8%(piWVj!b7nrmKWgS5qCkc_`S()TP(1C_pSpfvBK#Mwb zy3~L+v&j{WlLb9$dW4%`2A|-_VBu4`QXuf#d)1x$1QJpEUnI3?RODbhiMltnAVWXt@1wIMR1qrt(5n8MUgvpKfRdCzU5?p-wQ976af=9e*^oD=Ve;QGn8Op`?4T@PZtp**@+1u17rx6qtPjQMX zph)CKB88*;vrwK5D*X~yK9#(moeVz=*h^;!itOm%gunhWF=*HWc&`2!?Y|(pqFaxHi_U=)G8H{yT9aBTD9I7ract zhjl+qPDNeO{>0D}&azegvcPoOD;H@4Zdj>U%;&K!$@pn$Bu~fqQG@9a7dgRGJ3!80 zBBh?A-Fj}Io{r9QCxG-C@#q{C7`)B;Uj4==mfCJOq2ra=%ZEX8-z+w3_W{PfyHM zj?}M{HNVM3k4d*T(8jtQUAi_Q1G}8W3~T-xH?fnO*i$E-OJb%q|L<;MhMU-1C!R=R zmNkEYnog(YQqiP!S)3HRcu{o9vXT z*r2G!PR)_=UmvHhrjRWvnUA>;aznW zCKPh3Jl(BwmZ>s6zqDPS4;2E3-hUvC>-8J_r6bzD_P?O*K?&M^TGKXy7P%P&-(cDs z)ypO8V?=$KYobTwFGG(=)qU~}4sH#nQnk#!N%ODt59mPsO8Oo4AK9xKwcu!74$4(V zUaqw#1{$}K;O)9~ak|+8-oRZ%5&efmbfebtcCcUWL>kq?uVgX>sfAnQZWotDRo2NA zLAsjXU&>mSxc(`rJBbuYmr&Ifb&F(yszzy4H>f{^pej#36vywSGD35-bxT=;CzcSR ztKh97%8$(}+9XS|hp3;i+dW?o7`z@gBczOm^0W0_7(H6L1f5IsxuhA4qI?{1!VC`) zF{w|bccK%w=z;`$L1~MYlP4}fw1-dIKk@E^!e=5i0mr`pHoFK4m-#StUbL6$3w5qh zTf1I8mLs{eqZIRjwtDOa<(i#aOobaIGnX5b8=Y=&vK#zC^Q_Dln!n@O+Fe`9!Zb0* zT2(mYVKe#z=ULpz07hc2eT;>XKpq%oe5_XY>m&kW=*iqQHB+$kgZj8Pt&djgTZK{M zS{2zO3#bjv^C%P5YiVyNL;KSSouO?xvtID6WEI82VSgMSV*Rf0iwmRW1uYjwGf}Z! z%W|4^r7;t3RtvaN6(LZx$3LIp%9|{sx%Sbfc5eO`u0a(v6N7s>7)4~+Ipr~NR?5Q4 zw>MDO6ga>(Z`)om0Am|l)Mk+&yFFPbV5P}ie~dn&7e^V72yOyrJR;bV>!#cyF@~*+ zTcprHOQ7&z;J`+)lBuUfNA4=BPI=NX#`LlK(NHPC{Rl|hkAQ@^RCk?v^&~!mV%uG; zj1kT9SFdK`fW~r!mk$VPJ`yX_IpQ}re;AZkONDVL1#er`3>{~>=6j(%Nkhx{m!~u0 z&yUDs$R8e-M~}bqwn8kgs40|p!5x2Fpa-pVK^wnsooSXhF8v3g@TYA^Af=c ziJ*{~n<0=0mUuz?5lwGqtV&g?_-N@ZT^}TzLlo2)nSq46`49!QUoN+^nhkfV;J+r6 zj&Nz>f`BeOQlb7I+TH^$s-tZiKP#XJ>aM-Sax5rV5U`?B1f_){c2Te( z5{)e}Xl${?Xf!d=7-Ph4)YuYxL5&Kw7`w*EcU||{T_7gU`@H}E_swr-=Dy~hUhXMp z&e=HTKC|yEKaaliFhz1r?xkO}->*sERQCe0hgm*Q9j5}?uk+P zliv&cd*BU>N^VzKNwUMJYaaAg+TTbwF$+lP)7W*$ZbSPLI(CqF!ji=XGzp$wkP&;e zh#@2JZ4&Jp>KMJ3-YaYqe&>6fOk(E75&80ts9>h@Rv}=1clv%;FmM!q#fXuBwXcW= zw7bgum_(75w||jeWaf1)ma(Lzg+1m!WU4GP6^r2c5ist}gjCp!=@U{RZ85E~8-RAk zQz}%WS3Y*h_kh>J`)`)}VR&Pb$D{#xL&q-@?}|F%&f81tDUJBXU7foH1?hOLji(|g zEdAUo=dU|aWc`FigdQKjd7fjH)SvfavuwJhVfPoI4nIHtWa zq{Q*)*y$}E>{d<)3&0ty(^b%hg#Lkeiigbw%GkbrkL ztzGd7N2$(uwZibkOCN`m;0Ql`EbiaOAMuIM|8f|PQvw=POMBHpKdmgQc`C9&l-8Pq z3}0$-dK=L85B-b)KwbdEW0Qck`}8xLz@MCyaVx{m3{=BE!WLU^aw*M)7UmSZNpS;P zks$^=EWC!tq=+k_v0p)szX#S~`m}3I%6v-gpYgXK_}q@upLqY-U+<02ar3)}?eRV% zZmV6)J5*g!iWKYU-;0HM_IJ915>Gy%pB|0kVKsMHzSvSKGm$6s8qMto4(KU-Gy9&* z=u-`+PS}&8v3!v;T%_RjNF8>NcuAHGgSU6av}0xX>CX6j3~Atq%LV!w4>5G|E3ulg zD!ZU(WGyyV`c`4QYr~15tub>vIPn`SlkK<8W7%iqD zg&Fd&e(o`RV>cjUif#T<5bqw<*I&e%YPD-Vt+F+Nc5cNG$?H{>4jry86!tQWeFJFc zN_4qAH?XzyO3Qx0^u0l}-(P{5eN}v*s~`Yx!B@l|%R2@*o#Gqu_*=@$Hp;AwsOB@PPwr=x!+{wAR93;oQObjS>py9_zG*4;CGba+<^or5g| z57RfX>*I6JPH*+ozJTX|wvPk!ogZUlB|8Or48`D>4p*ED;A6c*4fy*=v=CPYSAV3P z{C)mnrhpUc4}1_)kIYKA$&>$X9$8@OD%E6S^^Wv z!ITR4MtDaP+NYoKEBNTv=;(d%5$}Gv87Fh{Yzp?Qw~}M!B#*!>pLPa3(Wz(f%?ir( z%E`C!D#-ClyKd$G;sV|oGx*p(!kZU(P+uMt%rd+mp!yf&B;SNQ8i8+7pG+_YX5{!g z9r4SuZp(z@19aE%y)3)@^jJT=F$ec^)K7p@F8-YWpH|q5b6tJ<4ym%f zczLc2W){*x!-~)OsLP)J(6t`CzzYo zKZ7@IAK}QGL3Oq!>1P_Pkn&dTamxo+EH369sf3=vUJNP693%7ox{J&*25FL$zwR=- z9{b|o@-ikpA8Tpkkk_j5@mPL9mYa6`>%yWO{kKOjlCiq*+66y~etHv3ssHx8ZTW|Y zCacwp4``L`545v@gLqCwI&?_Y*ylC&Lb9Kb9iy>BH1>BIJCy8uWCv+%oyPt|W533+ zm?j~bgN^5H#m0Y6d6I=klK3~e%s>M_je%=#`nl&&1b!5@(+zEYm#3}pl)oDcFZ?C9 zSHU5#v;xd`8E{}wzR~Wq-#@b-zJ`Bi%&@}#5}>=`pV1G0c2`9|^Pza2ge58-_9ko3 zdIg!L52Nh}3<}mdr8+jT zMe1)#Ha~Bd|2-Fl#UD5pt$%(Gk_R#Vhq~hA0tp=I%Dp&jq(=D{VH?<_A)amF%O=)I zJ-8js$!jm4ug%Lr2(FG?%fmnK)s4h=JR0%u!EwdPKVvw=bZhy@2p)?~zcd*aDetiB z|4i@b-|)`kF}boxF`C(l>rs5wq$|eUOPu0o`4wO6`e*dOzqClAFY7q)M){=_q2 zf2`?by%=Y!E!FVUmFq<;{sJ=a|0~ych2;|0bo;UXv8f|2wn}{|lv&E}^pn`Sdp$v420S>BHz{Pi=ZK_C_X(l;*s8*qIT_Yi(gK;`mZ4Y*F0a_c|XgRz<45FO1c z=RU>_&Pj$F0`c_&|4eUqdg+z+#*i{fzNns$!B;t97^=&VFaQfsUu@pWmkQM38{`vg z;SY<=vlOTo5TjpK;^Tm}XZ6#(IQ?auwVdB@hlevn-B~{!m$SAB50Nc>nh_b0eZRz$ z#&szF^rY=&{fwz7U159TUYdSdW27JlSzO-);s|e{o>g-VpRvRUy!Jn=2k{6o@Ff4t zf!|!Z#+lX$$H{qe(&LS?BaTemSaiZ47GT?VG%({yN(Menpr7`&lm*Kle3#?~J4-Dl zn{mlh1*R^Nzf1@_m1q#dpF%NotklohuG$xmJEJ zaJFe)kMLdZDlh`77_eQaf;Z}`7;ps)AI#Xp`TNy~ged&`2hY2*0;8c0H_YFd$ID|LH+07Q-3{|M=JE2F#|@n^e|N+Djd{F0=5a%3%-?o^kM!m7N$q^h z-*=(+VE*RPIDG;poq>2L9;g)L;7=(WAX<;*<4?|UKY-m%E>Ytmb^a(cMqtJ@ zuZ(?OX*cTxI9*M)L3H;zK>F^ z_*kK)%2-*JI(t+!Om6b+!0DF|4;H9cVI#?LzwYDU9RRey~L6|NtdV7 z*YZ2z3dXyubT3ScnBc3-q*b;(kha<0XitX@H#PPP?0LbyMK(yx{~Eix#y+pHYmqIB z_!zJ)_w$SF&+(a69s}(O$Q%vPL#d*PT)dr+|KGZ(P2r7fFizm%Ub#RWwn&!pLf%f& zMF%s_|x&&r+84%cZZ^~eQG$n<>R*G7jlQ`jOEA9|ewqBw*<$Tlj zgnniLljol@ROQz}<+a7MLl{o`AY0E-w)X3p&zdTd|3IqM>q64sn1 z$NFilMXWzh8i>D4(tmpiUFDt~@0%82mC~gru2|w4`3>C6$6PrEJK9QTXP2>?6?o3S zZI=PbHRNm7JZ#8HK9|=PG4b|pDpFQv;q!keZoxkMxqMts!th}th9ne zklx4gNctD;`MUMUsLk0^U6u``sqvHn!gP>_Rkvo*bjHz zr)_1^W*nMlYF@0B@wGK{0?tq8^l5cj*ryaEX?tGc<0=rujF_yFV4;`h1ZEud$DEh`sdu8>^6{oZtknR`pIK(nOAl_R*y0wGioEq<`YWC-d}%Ajo&f`SOtShAvxxA>SeA%R|l^x|{@te21Jb z4>@n>0;yFF@R7bet~pb-KZMryXNUFaFDQ?245B+B1=h)Rp~C#m#wGB5v-J2R6c3gE z$UiLN3w`5t-U%!$19g*oqTl9srPR+VyE{Rox-6HujuNTfK^DyO=z|OK84|-0{kO0D z(hAgsGF};nz0z_a)DI=MML$5JA|uBzyUTrmzo+kq(DH{OxTn7l`^`hP`3=#am2rbPLTMhO=+^jDerY76@Z6LFD`Pz#$hmCcg8E0hwjbx!{N8? z5Z0;&e@+88OzU)~Gsws)(LkEO-UasG*T?SiO3gEh z?92&012QKJ@OLT*#Gyu7LynLvZ$E4>x4?$@^IZ>Hg}tJ%ePukq&a)~B&zaqO2IyYl zf3YyEy$ATUJ*=P3JJWtm5Q&wyCr;ixaS(}3whP3NdqCUk`kB9=zvFe69Xu=JhOO8Y zJ@4GWu%|cydFyuw-*LuR)c1Is$Cp&_g)0O)j6f$T?eGM?T2d8?3!eP>Y5!R6m*#CS z+$$^3d9v_Odo@$SgFIBLA9PQMk^o&U@-zTZI3fy{q>2FW z%5DSN>5dl3b3iytdVg;p>|c0+rN{;f+b;|$^ZpAL7GLCfLCnDi_GktiV`+ayXzhou zl8GvXmf&~NCLQMA9$}4*v#Fb0_OkwPK#2>O_-8|FJaxq@QalP#lIz`TCH{ArqR_wV zoqITZpA<*tdF_xq9<1Xp=J4l**4?sd;!g~5#-Wqb8^26^6CqGLu z>W!PWCx%hgV@%uTY82of8WXk&PzbJpP^zii#NEJ<_Uk2Y}P0LfnLYBdU<&gPK%_s=M=B{{Fa;TN1s6*!y~lP6pS4j09|Eap`) zbH%(N=5J!&7Bf%GyJFrK^P!lJ#C$B~Q!$^5`BKc+V!jdct(Xcn^aTzj#IzQ(q?op1 z+KE|4%yMEH#H=7@B{8drSxw9uV%8M1wwS7z^~7u-W}{%$8!d z7SmnKc4D>{v!j@vVs;kON6ao_`ia?1%m6Wi#Ox_%Z!v?#>?h^`F$ak`M9g7gju10c z%y2Oy#EcYkl$gh_`BDI)QE~z=B zT0-*WPa`#p6mJMbUL?h5rjboCKjep#N+mUj)Jal3N!7#@lHY|?G^zHaR+Dlg^*t#* zxQ+akRBckfld43@9{2 z)sIv#sQ^+Tq&ky|BjrwN5-Dd=b4WEHl})M!sg0xzq<$d9HGSl1Qg5)#jJ!?iF{x*y z@<>_ZG&KJzsfwh2AyuE$Po!K)@#B?|9Z7vlDv;C{qy~{%MJj<5zquKiO6mhr%Sok^ z+C^$Ssk5ZwNj)YNL8=V)O!@rwXJma+y-9hI;`cKnhmh(>Duq-_QVU5nCbfZ-N@_Q$ zDx}VmDnsfPsS>1~ka~$Va-_8#sE4GgllqO6BdLp|+LAg+%8%4RQUgfwKRF{ulKP6& z7*gv&6=W|gVfA4NKa7{k(7Vxpm2hY$=r0Mrg+@`8;{>_TxWuh-xS7IHgYu9ZzUjsY zBupECegJb}E1V4QQm>}=15^Pi-mEat7_}2RzTyPnVdii!GHP#fasW_#EzEOMnDOMi z1sDWd)Bp_3rl2J1EdY#qD82E`*aqSU#$^B(*y7C{S*JG}dgK2JTMAc@{cUQhV$~Av ziWdzk5_mkKEF%bpE(g7eAk?HuD+Sq3R*gt>ra?u5<%u8&gmxoAW%1ie!-_(Jeh1RQ z6Z&1hY#dP}=$BC{%xiJKZQ+8me1*?xlrU)A`%&%@#6gQ(B`C;Vs#w)vaFz#KJuSmN zB&hziF7#lg(nn8d#yy>22y}N6RR90Nn(DE(7MG%sV0k_1z{0a7MOo^xlG%j>+qMB6 zYC^w9f=VlIeNcErp>X<8T0j@CJG%Z?aaFb|tHN&yXlH00dN@=;b`kg1|Kk2%`QL|b zC_PXz%D73eKzy55iGh~0XV?m_k+PUPMNvA#_=T=iTA7& zAkA(giUiBm71~m+|KP7jQGX{DE2f~7V_v98u#@~khZ-=d!{$5NN(&f%uto6?K-ez7 zlamQ!g67UV&Yy}r&ebKsr4uy8gmM6y?aXKO$~9>A%GCr32+RS!g@6wL80~I?1ps(* zrzrzm>Vlj}PAeD{U>_skSsEh{&R_tFu3yP{A4W$+BB~&J7bHbP(DXbS0!B9s1Tz&0 zt@DFN2Qw!IfPzny7DGYy@~Mgy_Xdj6Ok-%oXaL@NP*y`z@Z=I4f@VFIKtlM~nl`d; zkux4qFjY5l*as*!g>&1)@gwIU0Gmow2LxoI5*zD~5e%cZPXW$~9~edZN1)k}1SS$C z3)<2@Ok>s}@<~t##X?Ifw3*f*^VSw2~ZVw48aZnK9v?#kiB^t(%Xo5a6qfMX#_ilk*R(SJpy_t zK}7^)XPQdDKWXRi5zcD>%AsZCFkfM2&Yu9}>?DWnz+6a}aRAKMB69e&kKWD^yfAqa z4j(hJb)S+m8^9H5-6#dn3TrZUf;Z$$2H;5NazNPuKu6*H37`VpVVGVpSTmkve+`?^m0XP=#5cC4z@Dq-?pPnM;D{wg8 zgu^Ot0MLY`pANucc@yx+`v7cFy-~50?#CFxA^`TXGW2#GfE6p8vZyXb;6#om0KEw( z5P-REK~6dVi!GePrZ8MgD<=Wib3|F@s6HkKg#<GA1+r1PPf69<>U0HO-A&!(cHWTtU9JCdMy=PgU+E;M_8ZvfpB5M7`} zwS@~g-N@l=$u<-P8mb`sCZd+4icN{k@L_t0fF_71NHhT^tXmI*4Uz|~Y=Ne?Txi`6 z7;HCD=5!`mB{KxY(0n%34d`;ve5|93hA(o~lJgY+rRi02DxfA9G5fjF6<|N?c!E|i z$eB%Vi6$_KU;+$FYnjvc*H#$y5keG+4bYrUm1EG1i;D&wb4Ku(fK~fWogJKtO4}zf z&jMc*iBF-M(0LdP%7sfDAh!Ux4&WwKsgEMmg?*5K!+Iy|jRY%@Yxagv4!7L^1I-){ zj8}3xl9LQz3FCtX@P}h#a*hHtf-SMxB1%?b5II2r?90L#3Q&)kq$^%BvmIbHY~f@fE9BHC=O+Mm2jNsl>catQ zld}eZ-a-k^1F)KeQy1B0kz>i>&YC&V!T>PLcycxYw1F+^HvlfP#G4NSFoJ&cHU+>R zwr~yu?3Ms9ipZe-W;YVZvLdUMQy|z)zhT|ng=VD+=T8t`(4yLdT>;brTvcJ$-ZJ;07*N9t7n2ykMQ0dAvXcl!l!E)$+(88&0iu5OPIO}jRb75cjNu9{NA1lnRG?xix@a` zYS_SFoRnd82)=`+U6}?YE{iOSU~WX3nmJzpdz!yrjb(zz%t@^^lJ&T5`Z-qOK&*<6s!{4 zMF3_f^DK?jxk^09^_|;a78J!{)KFvI(&afGwOlaIphe&M;0e1_6jl17OxaB4;j)cgDk4 zQ_*iUiRx_%q>x~KxzDn6B4+^ISvWAhr^u929R{2I6+s6WD(uGuLt(_h7Ih4OVOldb z%6AsepRwfvv==`xYQlw_hUBz00WR-#yrlR}zKg6U+|5yt;KU=%(FKHM;oWb5&)~H0?YJ009)IY;2;3ABB~y`4`VZsvjl*# z)ga(&3gk!xJP%<6eaP_x=mT3+Hb8e!;;jU_HGWEWdgCQVZXd3e0=NK!LrzpVR5}|; zymbS>Pg%_{si2r^;miY|6p10{GC)Px2?Rq>_DZl*2;u>HYHftNfO_yB(4P2P$%SwX!_U$Jjmgh*hAQ&ij3z@W;YUzpx@GADm425ANnW@pu0i~hf6%l zV^NmASS%KHzcb{23GGgT%Hp@3h82ZGF!UBWd;r~=1l7OQ4fD63S&D{cb^J__1ZqO|b;FZt7_ree@fL!nI1n9M{C5L3_(q>pjhOef%Kl2wsG&=jEv zcz;JulN@2o@%nCX*sVG2loBv7Xq0;dZD4R_URWb2%MSq2KKv zH5d&Q3Cby+5-N@`n$eZY67OgYYX=@|+)O$!5f>6v;+M^k0Nsq0avPeNcO&4KkVb+H zzvj7N79kZ0N`fGI{vMhkBM9z6mxLCMd1X3|9Ii}bV2hIUSxN?!dgu*;bubQE&NVHg z$5Jl#ZBZl`a41n7=w2kKEPlH)Nh%Wb%R@k=4-AVW7QYSP%4TvVI|zCY^m_#5VAO*x zsv!I7Y;>PrS!iX3=B5$cT={Z1G48UkJsIT)0CsL)f;9ll@>~ZPluS0Tx7C8dS30i2 z{+8epB$9>0y@Wj+cQXsFCUB6T7XUls&jh?O&i)t39J~Nv74{~uLR6Jt_a~?dz?JL} z0$+es*!%0kxB$S|dN4K{v|JU~!2~@49AJw#o)WPZ=a6#~fMJBAFQw&R5;+3^n1hcP zFdSe8Y*BXsyg+THw_%8iv7Mv02vBLTMdbsqTZp%I=)25g6m!iA zKy5RpYI$vCc8o>X0YGn((W3yU2IUyToC9!#Evf*3Nl4T~kUYz?v>}Z30G0^KBbVfe zH(wKws8a#x&7ENu0x+Ep1e;KUp0Fj1iaDMUoF&H*pbu2c>5TDRTV*R`KB;W z2C4FNg(G6KzG=p z93e>9rV`sc07^#@HD3bgbeb<^3tCqN?ZF(p0AM;#*^I3bfF*rJkO6?gYO$>}feuVG zAAn)z5;RjGKVeIvnE>Q`NzPpWj5OstmS+w+5Q{Cf^9g`kNgygMTNc@UP;=Fe(OA=& z^l%#bl$m2%tMvj7fTp;W>nYt}8wnmmvm!;F0rCV}^bOz!4^# zX6Q1M+x5WF%>cl-QhL!FpBq3~#cl02urWf|CGluvZa`K=mcTUPka3fZo0#u!4a>r*S$0ki&;K%0w6( zWRgxMKrnzP={JcW*>{(-;hsaY_?ZMHk#aV)C`%t}WO9(53KRK+4(z3qNl;n*j?}QC zkl@gqO@{<%%LpjQ9%?n%2p2|`$Nav8o&;h;D5+OZkWSD~>AC_s4EiU6x-gi}69im^*E4f?Hb;&;JK_$8 zeMiE42oMP%%F@O!%q}FDOIev)!*8ycQ;@x_gy}{IJG>|o98P;!QQWbxVRsNr1fVFo z44``kz=0+lbGPQjRE1YPn4EC<1cjNdOJgwrC6;iw&ZVO>jkf@nbllL0L*aOiu^lkA zs6D-vL5s5Ch0`5?UDt=44*-}Q;cN#e55UKM%6n);OVoo*%{zx-CKcsm0LUN!L#c>> zY)Z*!eE{x)MQL`?=kAA09NAq{C{;pPbf-Y@$)6~muQA&-!I8(j$e;9R*}3sFR+Kqz zj5}hBoF>r(`aYsjZb4JFA0y!L3-fuNfP;|fe?w3YMg;6X2xh?;4_j10_L~w`uS&E7 zV70ih3cElvQZAcC3iN{Q%Ak}xO#3o9?nr^1?k)kR5{9`-Z~=gJHAYz#0lEH>2zmq5 z2M}*Ob-~(3X+>|tP#Y~_J2D_2{IhE`BRB`Z2I@{w4;_Fx5zaV(MgSq?{07hlb_4-? z1H(Kgm;k_xN|@OI4Uj)ko6*di5-KtWCD5`A(}AErfQ7@G*yIc%hm?gA064`dGnoTl>v-4^;9eXNA83B8wqeYY00HQHRB6cAAKD?<@|S0q!Kz!$OhfGuGT z0&oz$K?J($Fxbq(NiYF#hM5c?X9b`w>sIaFkP}?yK$l?=PC~=0Ql4NhQsihA&S`)m z^D^%sKLC%%BXXugPaEMN%6$KD5D=p)g#n`50)kaP1U^kmdaWP$z>%_WF|^VjI++BO z#%~CU#p2kJ%B@C%O5@iBMLz3Y&XtPr_u=@%i|!+6P>q1*m}`uj%iS6_hN#bAGK12s zzX0*MIK!~?$0=qP67(xwb|#3SW{#Gp6hP)_KAqE``;nk3(qDO2BZ@=}s3xrT%>b-4 zZvu8v0^xAE@lXAJ13ZW#(Hov9gXD=F3(7k;@?h_rnWMsmOAt}!wsHVsio>9F9wxwC zTiQx{M*rXXb2LT4O^dF(2_zPc&vf@xg_|f9ChN?ds3|msm?-U;j4No?g)iO0pqbs3 z&^o3;u!Mjkm7ztU$WWH{t11u%3F!rNs0U3kFUnjW9e@}oJH2kO35+2y$Enqar-_wG zmf0U$+~UuC4#`0)iUd1P0OS7{nx*PRungKqiyxO8K~Olzy!019kv@dF^8|}ydmgk1 z1V*`tpg;6*5>%FZ*aSb*pd!%|npe)`)RUDVch;sOA@)V#I3QDub{D-30-)Fz&PV_X z@6+TgD#}@93d2<|wiDXkP{MQvSV>2!BI96|=As?YvIoe4|3VPb)Z|`(-VXgEawm5* zi`NAl3vWN41z;>s>3Rd&fdo~tx{#qsR}vGU`S@4v;j_fmnET;KjU7Wcp97G?i(|5Y zU|k3&9~>t5f|+~IR2RZ=1R%$UVFm&$hb^3!00RL;neSnC1!CP-1XK2VOhTTxJ_f;j z3TJ^SC++Bs8!O6iQTt6f5pS0P*t7WXPdd{Fnx`V;p|075L^)`w*5)9%-V$XQJO3NM z)6AhsBtXX^FVZ0I=HVx^UlOcfTlzf>Z5c2{`bs$5MUi0X!st5+dK0v$DsUkunj9XA zkJ8-#*8bd;iXy=&L+-pd0dP4}jWP59SPZ)s0Y@OGDe=bRhs^+@b^~x2PocMdXzEWj zca#`lBtR*0=0WVzUQC1AzWguw6?-Zz4EjCSW5Tymw;+LBDIEEi$w4o-hZOC=!&9%TRNQ3k(WBK2}y@VQ`c! zfUR3$0^10_fWak9217HTcq5q!$1BgQu z38q;E-Bq~@z%&~J=y>IWz>R=gF%Ab&TG)c@4QZ)ZNv)t5D?D0s1YoN37|aDk4QNr_ zU|Kl60W6&8qMW3n97+aD7>+tim@P#)JBo5BB`jes7UeuG%6U_i!_j34!_j3)hx2BYyPKUzP}&7E8m_-M1Spv0p%fF~h>@2n z2!z8OUO2QU^L$FcnOzhKdOyKV%rQ*Bt-Epwni5D>EYCqCLLVY03h9t@mw;tRg{@;X zz5#f`Tu_M|W1r`^p}e<@LDL%7GSib_y6me;2=qb{R0Y{jus^)3^9Id{pemF61e)H5 z5*&hV1uY!bJ2_*>=>ot}CY&_@%yTd~M*&!s!pR3CNutkPt%IXDMIKP5m;bbCYC5A$aGR;Z<7veFsS*|H!g#@c@DsyuW`g3Se zGH1GhWd10nWGBu1eNXTqv^NPV@!JLj{eD9ivgvmZv@A1<`~Ba<>xvjyuh$vX7toCN zKEYOK?gvCk9y)?#9(K{`V`%zi-;&w2NFFZ8-IJ5jBU!CetYD0XW`~jm{Y(&S+tuLc zmV&4aE#69_uDE^M%P<}QOhoP=8Ugy5z425*lBYKwE^jb%mZ1+B0pwJki*fb`Zd|1! zRfTLp_!w*1Z?H5B&aO+{~a}~&ESv3k$^Sy&YFPl(W+pShmL~QwT8ihu?BR0Fc{f-vAWTihp^S_-^JIxmu#bR8Mmu4Pl6rRl$quubPU+Ch|91o#(EcQ-%x8bBm}by&Wqlh6 zHYp!D=-MM{uFaDHlmh^g1A^-S^!5jA#Rk2lFKqF~u0wCUbgpa$m;~EM&;|x`A`-kk zzybhKjD-2&`5m*@5SrVIZa7WY58IUx%Fa?bR^k3kc@x79DlBn^3VRytg{nP_=!|y>xfzlvlR3<&^ngF04>Vg29|fG zc>E`d#2`>PY{Wi`ZC@#t9O*pRr*rYe;&4_m3c##O= z0EPmHItIWIFC5O&X(ooU55N+EHU?GjI0n7xhsjnZLDdDiG&F~_jxGL9d9eqgFySz+ zh^)ytr>B+#Y;231;;AzGZ&TR11~6&@h@w}vty%Vz1M;L3+uf2E=8ky@hL-oR{wXgZ zV6y3CUBOl=3(b_JQ?Ub!vV#lrQWdsN596J@nD%y$OaT-U?B5QI>rZG7c~OpVVZPcj zE>{@uik_F0COS!rOF#Hf`9SiqPc;qDz?kv|$XqnR4Rcx4-4bYZ4W-eJS z7GL)a#y^$I1MaMr7-(5xGIfy`gF#sG6%SAqdM>nXCX9FT^+>Ub^aX>R^Ef)3JZW%* zO}Qlt1O`b&hf}s8t1Q0URILU!eVnF|V*&?Y>-NEz14mK3gTbCE5wNK2BboBNh1Jv$ z+MjW=2DnBkZ4HB?jWuwUoRI*`!cBq{09K=@{Q#V8Bup?;W#*#kZ4eA#c@a-H1Rw)I z)GYw!N5UXHlqTD}KvjgEM<-^D^Vd6SkX!3$;}~Ofc36ic?8VcV^*51+_87@8;8)y~2Xs z`^1LCCq~94(X~)n_^o|9`^Usb7w4iO{_erGWp86x+!$j*K-|bKQPD= za98FIvG^92$IaD07A~Q*#;S9kBY zgoNbyB$UrwBnfMYzqo%l*Z%BXo!PsP@tB?oQOs?T{I`gX8`-+IF(llW;9e|7b4_V> zVf?KFjWNL?q0vTG1iO`_U)VmyGr%}Qq7sY=u5G;IV$oblXpG=EiNN4h4((qgCFWl@0HO|Mbg= z0T*T;yY$sqcgGu}JvL@6IeEf6@JxW?kBxpD`$dEH6^F$g8fJ+0X?5e{?Z!W{Tb8qm z@45e6;+ZcUW~v3P(^oItzhe2!Pgd8wAKCx+T@!+%&t?2*TWjd9%rRg3jcvHA`=5b9 zS3mecy;AnsUs%FVncT=90KO6peg}(X$x7QBue#@cd zcjdg^#+2Q=X!$GG19M(~wR!SZ|C=sf{WNQDm$v6m`R@F>{^qOWUThj#!Dis*&Q%6A zbNX#^`F1-e&F|%x5uzJB`^KmZAv0D?3bi>pck%P=rHhgu#qO##!RyCQ4PSSU@m%5e zuu1RLv#-xsQF?Y#@au~s`;XhYDA9M-(fET$+NQT!(s<^#kIzS+b}tjxtIyl)RaOr^ zt{YkB%teP@CkFKke=ec`}gTJr@gsUNB5D_y~l^z z<-PyKVXMj!HI>C>A3ik>{p-c;*80!|2SY*(n-(m(`B&=V5sMQhSr1t|d1jm7*-0b2 zX1pl#&8DMu?rruULuRXl#+jRHwE?@rIsci7a@0UCGB<*#B z)$?AhI~-bJUx{zadq(-(`nqlZ+b+G=>@DN z_j0c|MP@c1>+yWrgdNM`=XO6HHs|o#4@Z6x?Hk^_)b@Fo`+v4zc>8|a!S_q-|Zt$+H>iH#{&I}A_%zKaa8Q9i=QsraAaBSy&hx6+y0*X zDy-I2yB6i9Wej+8B%$(GKm9S;vttS8J{_j|t~`5dZt|}Yzs;<>XxqYiRjx&pY<$e! zX2ZIl{uuP)!s81|n^gayUqOwI9m+mD9#i{4P|5rI8)of0wC1*Ji+TKe)?0TuEXVta(Zv0Op6E`3Et=f<1G~=oIB5T!QEOH-+r74amw?_Us|@ee zXVNB$fE}OvUYS~dV-aWtv8{2_QWe*dJHP*`*jaSEVdh45QW;C2Sw`tfA--Thme|2p5@&4`BuP4^>YSiErXQ&kn||_({W)b91>THn zc4zHZy7o7Qez$mCYHFS7H{8G3)9G>9Jq^39oBn5_^SUKR({K1(e7LuBsL#yhgO9KI z>*mN@)#+Mp+Ygi1{I>qh%o&D$dk44Anz1dt(Y~l3Hea{5vHtAriCv$aNU3tYLeTPk z@y}b$*c9D8ZQ?K253YO=`P;s}dso(8K7M7XMkjx}SbN~X9c!PY8D~2ln(a1iT7P@{ z6|KHrc`I*R^;>`Be7&OS%XZU(Jm(!+(ChV`Mfp8f`JKFw+Bh=tz>8H!4?L_9lG>tv z-l|^No$t)qzGQWnzQyg`t#|If{DEPr&S(A9YHv#HKX4%P_PR-RSC8*>WJT|pVYlY) zzI*6FNzZ96$6iizO6q;+Y2c+>i=Vx}qWgu3zU^Xk;#ZC9pGFO#xoK&!Vm+GPc=yVLdly0-;g zZqz?`VvpBk_r93%)1Q++TkrkL_2fAHnorKH$?f{E>0XC^GiJVA+HvOf z1`GGLuT?8|*qZHY(#|g~`D#Ra?*;?E3F&gZPJ`?w>l#d3P&Q=v=jq-ZDma(S?f9&- ze#Y=pr++-_u%*<*5i!U2k4Q?6b=VMar_|A>ft{<|Y7}Z1n$_rdxV6ofmp6MRRH@=Q zdh;%uZ$E0)=$GcpLrYuvG`#)&!!VC&BfSQ;J8qr+DA{_M-!(7K_xpv_JMyMsL7!>$ zo$onDJUPA6=fhF-tu!?lY_IyokF?+SPCK&GnJz%XY74({isea!#c0&Mqf? zSHB&vOg{9aUd<^3N9M$~=z8evk`gt3H>hL#?=-GiR>HW;VZ9nsvu+8i&oaASoz>II z)#Y`U`=t}ZKiGPqZl4Jub-V358vfDi&Rw2$&a>h^SD8HDYfahSaXk|EINz=D+0{?O zTQB#h`h4rDsPIQg2Rin0|NaZZvcu6GQ@(vW<@B{r=B{07`?J;Q!@2oi3|bj5d(x`- zr@!C)b!PM9onHMg=aYFCCO&-Fy+ik9nH5*wtlrzYhxZdd*Hd3T=v;njsrG4CR`tEp z>}-?d=)?ivbY9Z1kyZOjfBIY>6=ma7eM6JYBRxjhmmB`cl=$P9E?Sj+<}zvdwne87 zRKDqajDTe)DAZje{*dv)!@s)}~Kq-2O1P(z=!le#yA{pv&P2 z>Gj<8ueXf*JR`op=ZhOvZVleCeS<^e=VkicJ%8JA>=JLUno(^!ec(7hAgJV6x656x zTu3z@T34Y#=r5=3W_|A2z1hA7-w*uZ+t+V?9`j3;Ex#@Ly5{bd1))uo2bI4+cuU;m z8kI}dxEnHd*2ewze$$pD#E%chnDc z|9JT({o|!&9^Eb%*mu#-VL#p*Qm=-0N~6pUw<4T_9Q^jXY%d)$@XV{qjl6bj37)!m zP~(c{3TF6^`TFIhHdQj;tN!L$#(;rKAFOY7V@m$44}Uxq`g^k(hmP1y|8x7t`-klx zaCh6zpEj01vw5&_Q~MfwuD)s6ctvdT+%heH*_W_(QG_ny`#DpdzILiI&u(aBiS94o z+iR>~?Ac&@|2bi!oNCuQG3aU;hXw(Gsez6^JZ-V_O)t;!r@!x*x1jd?uiSdyR})_> z&mCIpdP2<|v#Q)b_B?%4)O4S;v_H@8ZFuF6oEodcQhz+TdUM~+uD?Gz)VEIhcZY`6 z{i#&^(QS)dW2>E*S1)4dshO3R6~v6z?><~&bkMGeuk_XRZR)6yM2^^G}x*P~!g z55G=Wwrsko7-r|TkFBh)W9-TM8{u8hBV zYi#NIN9U((o!zGPuj9Q(boIDhac1Q*F_nWi&GkGJdf4-*JQ$) zaigxD{m!T5`X)9Xa{Q-!ysF|u7vDxp*57G)Ib?Rw##fF*-Flsf@;wqWe#gE_%T5gb z_Je*;dhM(``pJgyRiB=z*slGa+4C>8>$wsOr?2>=_2OH72H&55^i_d{y42dkmu9c_xr@uvmaSw=Z2)=iTler-ixTU)qASb!Ateqd7K(_ zCBXmX&%a);^Lo{|AM)>PIk{k-V?t`_)J5ASS8KD*`e4<9#9`muzx%xR`DL+>j-Fq) zZ0nbuI<0E`(fP$*`tj3u*;s`hUAFT5-mSX$I&Au_--z&xrd8iG>GVPHG5c4?VyjJW zb9&F?FXPXQF7?r!n#)@~9oTQc2hKmgUba1=)`mTAf85#O>A|7hqQisE>`xp2*^s(X z*B1p;#PVO!uPNPfY=@1FN;)h}egB7!3-T&oShqZD!nTV(Res)ddE1qiNqzFY@Bi_7 z_w8A=j!bS`uIJg~?HUEeIfc$F(Wi2q6`pgpcTM`U`K^&Ne;N4WqkuoZi2AMO$F(Q! z&K&&BnLnB~d;i8a(-)uJTdU=PPE`Zz`OW>^^;9EUo3%fFUghSPL(vN#8mE-)GOhdg ztLlJPulN1=L1;)`)t_cu9?`qO35RU|Z+ctZTYGe4nfbd~Y@X`X_FP2kmC4CpmY(l* z{zI4E%LWW}yt}8sBQdg?-ultbnq%!t?$E`^h|Kx!qp2gJM@Nw1AuI;QJFS+6}T{orvpVj@+=S;o(QDvvH zt3$VbxuwzAy+8HL9dY4^-^>TQPddEyzBr_M%g%4@Hr=h>@nXXF&6a~cr?CWkC``~4*9G7FV?d^8&kDnnGfrSFKppbcj&Ng{SLet zcp~P#m>ti)o9tV#XNlX$(AgVLOy7OEf1^!HKJ9kyVadGxDVz0=6bOKc$IE-z_x;*& z{$Ig0ZyBHKSA3D3e6D5Nh@hocd$+Zo=(WF`&DyUQuluHPN6)E4*WQ?4EpBdJ+>2&^ zJ|F(miK&MoFBe=JK4DhZzaq>3USmi^%8nlOcmLWdxM51e;~&hcu(OJru4~Qiw_Vcn zpKWMbF6ZjDFHUDq%2|K^R@nE+f$4Kg{MvBoWam$ON`LF#e_ritVRvRsieJ^kVE5~} zuc`-3>D$cX&Wnx*AAE3OYjV?{9IqUGJKQ(wL5(@qAH`H!oBni{*Os&fH&+K66O+7q zdv{Kbh>$}@%XvZz-`Fw5&VyR^F}|N{j7^FPk;5p{$%e(hYwO-PM2d^?3JWtPCd$bs zWlJI7jpt1~f3xt4@mu43ZDjGYqhfq_1`EIuQ}H8}!uVZ~VbeKs5if=OV&^07J>wFi z#%e`mG8XkO{$1NjfOo6lU;MkdivPfvka(U^78d(I`+v6z|HZ#+8;SqjD*ZSAEyVx3 zby(hbo6kudO}MGab}`v*Cfl5TTNCc6*{NP8>|?@ROxWLK2btV^nQ*WP_cLL0`G%R? zLrm`BCLCeHQJU=;r`dZFG&?uh#2=^G>O{@a?PH#TC?NVY4(7PCjOV2y>P2$&-z-kMsVxO!KCiaM%5n@03dX(6y>9JzZYW%*~ zCo3e1oqjGwZ1<%T#U8UI)x=K|yK(Y#vD44Z6x)629I?l2nJ4zi3Jb(;oV-Zv^m8AH z?Y?xW*kiV=5c_0>)nYeJUL$t;xpiV2k8cut_4Tc^Qx{y`X5w!boOF7pVB_&0#9n

bkNu$A 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

9NKY`C0TQrE$db6U|=%nP0-oAqf!&why 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 PPB)?r=qAv5=)eC9aMkQI diff --git a/kvs/src/main/resources/lib/libleveldb.so b/kvs/src/main/resources/lib/libleveldb.so deleted file mode 100644 index f3779518b0352e33b65945f8c637ca262cf3a2a1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 657077 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 H3*P?+@M+bN diff --git a/kvs/src/main/resources/reference.conf b/kvs/src/main/resources/reference.conf deleted file mode 100644 index 0aa968e8..00000000 --- a/kvs/src/main/resources/reference.conf +++ /dev/null @@ -1,73 +0,0 @@ -ring { - quorum = [1, 1, 1] // N, W, R - buckets = 32768 // 2^15 - virtual-nodes = 128 - hash-length = 32 - # ring-timeout is bigger than gather-timeout - ring-timeout = 11 seconds - gather-timeout = 10 seconds - dump-timeout = 1 hour - repl-timeout = 1 minute - iter-timeout = 10 minutes - leveldb { - dir = rng_data - fsync = false - } -} - -rks { - dump-timeout = 1 hour -} - -akka { - actor { - provider = cluster - - deployment { - /ring_readonly_store { - router = round-robin-pool - nr-of-instances = 5 - } - } - - debug { - receive = off - lifecycle = off - } - - serializers { - kvsproto = zd.kvs.Serializer - } - - serialization-identifiers { - "zd.kvs.Serializer" = 50 - } - - serialization-bindings { - "zd.rng.model.ChangeState" = kvsproto - "zd.rng.model.StoreGetAck" = kvsproto - "zd.rng.model.StoreDelete" = kvsproto - "zd.rng.model.StoreGet" = kvsproto - "zd.rng.model.StorePut" = kvsproto - "zd.rng.model.DumpBucketData" = kvsproto - "zd.rng.model.DumpEn" = kvsproto - "zd.rng.model.DumpGet" = kvsproto - "zd.rng.model.DumpGetBucketData" = kvsproto - "zd.rng.model.ReplBucketPut" = kvsproto - "zd.rng.model.ReplBucketUpToDate" = kvsproto - "zd.rng.model.ReplGetBucketIfNew" = kvsproto - "zd.rng.model.ReplNewerBucketData" = kvsproto - } - } - - coordinated-shutdown { - phases { - stop-kvs-jmx { - depends-on = [before-cluster-shutdown] - } - cluster-sharding-shutdown-region { - depends-on = [stop-kvs-jmx] - } - } - } -} diff --git a/kvs/src/main/scala/dump/DumpIO.scala b/kvs/src/main/scala/dump/DumpIO.scala deleted file mode 100644 index 583ac864..00000000 --- a/kvs/src/main/scala/dump/DumpIO.scala +++ /dev/null @@ -1,75 +0,0 @@ -package zd -package dump - -import akka.actor.{Actor, ActorLogging, Props} -import java.nio.ByteBuffer -import java.nio.channels.FileChannel -import java.nio.file.Paths -import java.nio.file.StandardOpenOption.{READ, WRITE, CREATE} -import codec.* -import scala.util.Try -import proto.* - -type Key = Array[Byte] -type Value = Array[Byte] - -object DumpIO { - def props(ioPath: String): Throwable Either Props = { - Try(FileChannel.open(Paths.get(ioPath), READ, WRITE, CREATE).nn).toEither.map(channel => Props(new DumpIO(ioPath, channel))) - } - - case object ReadNext - final case class ReadNextRes(kv: Vector[(Key, Value)]) - final case object ReadNextLast - - final case class Put(kv: Vector[(Key, Value)]) - final case object PutDone -} - -class DumpIO(ioPath: String, channel: FileChannel) extends Actor with ActorLogging { - - def receive = { - case _: DumpIO.ReadNext.type => - val key = ByteBuffer.allocateDirect(4).nn - val keyRead = channel.read(key) - if (keyRead == 4) { - val blockSize: Int = key.flip.asInstanceOf[ByteBuffer].getInt - val value: Array[Byte] = new Array[Byte](blockSize) - val valueRead: Int = channel.read(ByteBuffer.wrap(value)) - if (valueRead == blockSize) { - val kv: Vector[(Key, Value)] = decode[DumpKV](value).kv.view.map(d => d.k -> d.v).to(Vector) - sender ! DumpIO.ReadNextRes(kv) - } else { - log.error(s"failed to read dump io, blockSize=${blockSize}, valueRead=${valueRead}") - sender ! DumpIO.ReadNextLast - } - } else if (keyRead == -1) { - sender ! DumpIO.ReadNextLast - } else { - log.error(s"failed to read dump io, keyRead=${keyRead}") - sender ! DumpIO.ReadNextLast - } - case msg: DumpIO.Put => - val data = encode(DumpKV(msg.kv.map(e => KV(e._1, e._2)))) - channel.write(ByteBuffer.allocateDirect(4).nn.putInt(data.size).nn.flip.nn.asInstanceOf[ByteBuffer]) - channel.write(ByteBuffer.wrap(data)) - sender ! DumpIO.PutDone - } - - override def postStop(): Unit = { - channel.close() - super.postStop() - } -} - -object DumpIterate { - def props(f: (Key, Value) => Unit): Props = Props(new DumpIterate(f)) -} - -class DumpIterate(f: (Key, Value) => Unit) extends Actor { - def receive = { - case msg: DumpIO.Put => - msg.kv.foreach(e => f(e._1, e._2)) - sender ! DumpIO.PutDone - } -} diff --git a/kvs/src/main/scala/dump/DumpKV.scala b/kvs/src/main/scala/dump/DumpKV.scala deleted file mode 100644 index 353256a3..00000000 --- a/kvs/src/main/scala/dump/DumpKV.scala +++ /dev/null @@ -1,37 +0,0 @@ -package zd -package dump - -import proto.* -import java.util.Arrays - -final case class DumpKV - ( @N(1) kv: Vector[KV] - ) - -final class KV - ( @N(1) val k: Array[Byte] - , @N(2) val v: Array[Byte] - ) { - override def equals(other: Any): Boolean = other match { - case that: KV => - Arrays.equals(k, that.k) && - Arrays.equals(v, that.v) - case _ => false - } - override def hashCode(): Int = { - val state = Seq(k, v) - state.map(_.hashCode()).foldLeft(0)((a, b) => 31 * a + b) - } - override def toString = s"KV(k=$k, v=$v)" -} - -object KV { - def apply(k: Array[Byte], v: Array[Byte]): KV = { - new KV(k=k, v=v) - } -} - -object codec { - implicit val dumpKVCodec: MessageCodec[DumpKV] = caseCodecAuto[DumpKV] - implicit val kVCodec: MessageCodec[KV] = classCodecAuto[KV] -} diff --git a/kvs/src/main/scala/el.scala b/kvs/src/main/scala/el.scala deleted file mode 100644 index d61d1e7a..00000000 --- a/kvs/src/main/scala/el.scala +++ /dev/null @@ -1,23 +0,0 @@ -package zd.kvs - -trait ElHandler[T]: - def pickle(e: T): Array[Byte] - def unpickle(a: Array[Byte]): T - - def put(k: String, el: T)(using dba: Dba): Either[Err, T] = - dba.put(k, pickle(el)).map(_ => el) - - def get(k: String)(using dba: Dba): Either[Err, Option[T]] = - dba.get(k).map(_.map(unpickle)) - - def delete(k: String)(using dba: Dba): Either[Err, Unit] = - dba.delete(k).void - -object ElHandler: - given ElHandler[Array[Byte]] = new ElHandler: - def pickle(e: Array[Byte]): Array[Byte] = e - def unpickle(a: Array[Byte]): Array[Byte] = a - - given ElHandler[String] = new ElHandler: - def pickle(e: String): Array[Byte] = e.getBytes("utf8").nn - def unpickle(a: Array[Byte]): String = String(a, "utf8").nn diff --git a/kvs/src/main/scala/err.scala b/kvs/src/main/scala/err.scala deleted file mode 100644 index d7736fcd..00000000 --- a/kvs/src/main/scala/err.scala +++ /dev/null @@ -1,15 +0,0 @@ -package zd.kvs - -sealed trait Err derives CanEqual - -case class EntryExists(key: String) extends Err -case object KeyNotFound extends Err -case class FileNotExists(dir: String, name: String) extends Err -case class FileAlreadyExists(dir: String, name: String) extends Err -case class Fail(r: String) extends Err -case class Failed(t: Throwable) extends Err -case class InvalidArgument(d: String) extends Err - -case class RngAskQuorumFailed(why: String) extends Err -case class RngAskTimeoutFailed(op: String, key: String) extends Err -case class RngFail(m: String) extends Err diff --git a/kvs/src/main/scala/ext.scala b/kvs/src/main/scala/ext.scala deleted file mode 100644 index e615743e..00000000 --- a/kvs/src/main/scala/ext.scala +++ /dev/null @@ -1,33 +0,0 @@ -package zd.kvs - -extension [A,B,U](x: Option[A]) - inline def cata(f: A => B, b: => B): B = x.fold(b)(f) - -extension [A](x: Boolean) - inline def fold(t: => A, f: => A): A = if x then t else f - -extension [A,B](xs: Seq[Either[A, B]]) - @annotation.tailrec private def _sequence(ys: Seq[Either[A, B]], acc: Vector[B]): Either[A, Vector[B]] = - ys.headOption match - case None => Right(acc) - case Some(Left(e)) => Left(e) - case Some(Right(z)) => _sequence(ys.tail, acc :+ z) - inline def sequence: Either[A, Vector[B]] = _sequence(xs, Vector.empty) - - @annotation.tailrec private def _sequence_(ys: Seq[Either[A, B]]): Either[A, Unit] = - ys.headOption match - case None => Right(()) - case Some(Left(e)) => Left(e) - case Some(Right(z)) => _sequence_(ys.tail) - inline def sequence_ : Either[A, Unit] = _sequence_(xs) - -extension [L,R,U,L2,R2](x: Either[L,R]) - inline def leftMap(f: L => L2): Either[L2,R] = x match - case Right(a) => Right(a) - case y@Left(l) => Left(f(l)) - inline def recover(pf: PartialFunction[L,R]): Either[L,R] = x match - case Left(l) if pf isDefinedAt l => Right(pf(l)) - case _ => x - inline def void: Either[L, Unit] = x.map(_ => unit) - -inline def unit: Unit = () diff --git a/kvs/src/main/scala/feed/feed.scala b/kvs/src/main/scala/feed/feed.scala new file mode 100644 index 00000000..51a694d6 --- /dev/null +++ b/kvs/src/main/scala/feed/feed.scala @@ -0,0 +1,65 @@ +package kvs.feed + +import zd.kvs.Dba +import proto.* +import zio.*, stream.* + +/* Abstract type feed */ +trait Feed: + def all[A: Codec](fid: Fid, eid: Option[Eid]=None): Stream[Err, (Eid, A)] + def get[A: Codec](fid: Fid, eid: Eid): IO[Err, Option[A]] + def add[A: Codec](fid: Fid, a: A): IO[Err, Eid] + def remove(fid: Fid, eid: Eid): IO[Err, Boolean] + def cleanup(fid: Fid): IO[Err, Unit] +end Feed + +def all[A: Codec](fid: Fid, eid: Option[Eid]=None): ZStream[Feed, Err, (Eid, A)] = + ZStream.serviceWithStream(_.all(fid, eid)) + +def get[A: Codec](fid: Fid, eid: Eid): ZIO[Feed, Err, Option[A]] = + ZIO.serviceWithZIO(_.get(fid, eid)) + +def add[A: Codec](fid: Fid, a: A): ZIO[Feed, Err, Eid] = + ZIO.serviceWithZIO(_.add(fid, a)) + +def remove(fid: Fid, eid: Eid): ZIO[Feed, Err, Boolean] = + ZIO.serviceWithZIO(_.remove(fid, eid)) + +def cleanup(fid: Fid): ZIO[Feed, Err, Unit] = + ZIO.serviceWithZIO(_.cleanup(fid)) + +val live: URLayer[Dba, Feed] = + ZLayer( + for + dba <- ZIO.service[Dba] + yield + new Feed: + def all[A: Codec](fid: Fid, eid: Option[Eid]=None): Stream[Err, (Eid, A)] = + eid.fold(ops.all(fid))(ops.all(fid, _))(dba).mapZIO{ case (k, a) => + for + b <- unpickle(a) + yield k -> b + } + + def get[A: Codec](fid: Fid, eid: Eid): IO[Err, Option[A]] = + for + res <- ops.get(fid, eid)(dba) + a <- + (for + b <- ZIO.fromOption(res) + a <- unpickle[A](b) + yield a).unsome + yield a + + def add[A: Codec](fid: Fid, a: A): IO[Err, Eid] = + for + b <- pickle(a) + eid <- ops.add(fid, b)(dba) + yield eid + + def remove(fid: Fid, eid: Eid): IO[Err, Boolean] = + ops.remove(fid, eid)(dba) + + def cleanup(fid: Fid): IO[Err, Unit] = + ops.cleanup(fid)(dba) + ) diff --git a/kvs/src/main/scala/feed/ops.scala b/kvs/src/main/scala/feed/ops.scala new file mode 100644 index 00000000..9a2f09ac --- /dev/null +++ b/kvs/src/main/scala/feed/ops.scala @@ -0,0 +1,225 @@ +package kvs.feed + +import org.apache.pekko.actor.Actor +import zd.kvs.* +import zd.rng.* +import proto.* +import zio.*, stream.* + +type Eid = Long // entry id +type Err = AckQuorumFailed | AckTimeoutFailed + +private[feed] type Fid = String // feed id +private[feed] type Data = Array[Byte] + +private[feed] def pickle[A : Codec](e: A): UIO[Array[Byte]] = ZIO.succeed(encode[A](e)) +private[feed] def unpickle[A : Codec](a: Array[Byte]): UIO[A] = ZIO.attempt(decode[A](a)).orDie // is defect + +/* + * Feed: + * [head] -->next--> [en] -->next--> (nothing) + */ +object ops: + private[feed] case class Fd + ( @N(1) head: Option[Eid] + , @N(2) length: Long + , @N(3) removed: Long + , @N(4) maxid: Eid + ) + + private[feed] object Fd: + val empty = Fd(head=None, length=0, removed=0, maxid=0) + + private[feed] case class En + ( @N(1) next: Option[Eid] + , @N(2) data: Data + , @N(3) removed: Boolean = false + ) + + private[feed] given Codec[Fd] = caseCodecAuto + private[feed] given Codec[En] = caseCodecAuto + private[feed] given Codec[(Fid, Eid)] = caseCodecIdx + + private[feed] object meta: + def len(id: Fid)(dba: Dba): IO[Err, Long] = + get(id)(dba).map(_.fold(0L)(_.length)) + + def delete(id: Fid)(dba: Dba): IO[Err, Unit] = + dba.delete(stob(id)) + + def put(id: Fid, el: Fd)(dba: Dba): IO[Err, Unit] = + for + p <- pickle(el) + x <- dba.put(stob(id), p) + yield x + + def get(id: Fid)(dba: Dba): IO[Err, Option[Fd]] = + dba.get(stob(id)).flatMap{ + case Some(x) => unpickle[Fd](x).map(Some(_)) + case None => ZIO.succeed(None) + } + end meta + + private def _get(key: Key)(dba: Dba): IO[Err, Option[En]] = + dba.get(key).flatMap(_ match + case Some(x) => + unpickle[En](x).map{ + case en if en.removed => None + case en => Some(en) + } + case None => ZIO.succeed(None) + ) + + private[feed] def get(fid: Fid, eid: Eid)(dba: Dba): IO[Err, Option[Data]] = + for + key <- pickle((fid, eid)) + x <- _get(key)(dba).map(_.map(_.data)) + yield x + + /** + * Mark entry for removal. O(1) complexity. + * @return true if marked for removal + */ + private[feed] def remove(fid: Fid, eid: Eid)(dba: Dba): IO[Err, Boolean] = + for + key <- pickle((fid, eid)) + en1 <- _get(key)(dba) + res <- + en1.fold(ZIO.succeed(false))(en => + for + fd <- meta.get(fid)(dba).flatMap(_.fold(ZIO.dieMessage("feed is not exists"))(ZIO.succeed)) + _ <- meta.put(fid, fd.copy(length=fd.length-1, removed=fd.removed+1))(dba) + p <- pickle(en.copy(removed=true)) + _ <- dba.put(key, p) + yield true + ) + yield res + + /** + * Adds the entry to the container. Creates the container if it's absent. + * ID will be generated. + */ + private[feed] def add(fid: Fid, data: Data)(dba: Dba): IO[Err, Eid] = + for { + fd1 <- meta.get(fid)(dba) + fd <- fd1.fold(meta.put(fid, Fd.empty)(dba).map(_ => Fd.empty))(ZIO.succeed) + id = fd.maxid + 1 + en = En(next=fd.head, data=data) + _ <- meta.put(fid, fd.copy(maxid=id))(dba) // in case kvs will fail after adding the en + key <- pickle((fid, id)) + p <- pickle(en) + _ <- dba.put(key, p) + _ <- meta.put(fid, fd.copy(head=Some(id), length=fd.length+1, maxid=id))(dba) + } yield id + + /* all items with removed starting from specified key */ + private def entries(fid: Fid, start: Eid)(dba: Dba): Stream[Err, (Eid, En)] = + ZStream. + unfoldZIO(Some(start): Option[Eid]){ + case None => ZIO.succeed(None) + case Some(id) => + for + k <- pickle((fid, id)) + bs <- + dba.get(k).flatMap{ + case None => ZIO.dieMessage("feed is corrupted") + case Some(bs) => ZIO.succeed(bs) + } + en <- unpickle[En](bs) + yield Some((id -> en) -> en.next) + } + + /* all items with removed starting from beggining */ + private def entries(fid: Fid)(dba: Dba): Stream[Err, (Eid, En)] = + ZStream.fromZIO(meta.get(fid)(dba)).flatMap{ + case None => ZStream.empty + case Some(a) => a.head.fold(ZStream.empty)(entries(fid, _)(dba)) + } + + /* all items without removed starting from specified key */ + private def entries_live(fid: Fid, eid: Eid)(dba: Dba): Stream[Err, (Eid, En)] = + entries(fid, eid)(dba). + filterNot{ case (_,en) => en.removed } + + /* all items without removed starting from beggining */ + private def entries_live(fid: Fid)(dba: Dba): Stream[Err, (Eid, En)] = + entries(fid)(dba). + filterNot{ case (_,en) => en.removed } + + /* all data without removed from beggining */ + private[feed] def all(fid: Fid)(dba: Dba): Stream[Err, (Eid, Data)] = + entries_live(fid)(dba).map{ case (id, en) => id -> en.data } + + /* all data without removed from specified key */ + private[feed] def all(fid: Fid, eid: Eid)(dba: Dba): Stream[Err, (Eid, Data)] = + entries_live(fid, eid)(dba).map{ case (id, en) => id -> en.data } + + /* delete all entries marked for removal, O(n) complexity */ + private[feed] def cleanup(fid: Fid)(dba: Dba): IO[Err, Unit] = + meta.get(fid)(dba).flatMap{ + case None => ZIO.unit + case Some(fd) => + for + /* remove from head */ + x <- + entries(fid)(dba). + takeWhile{ case (_, en) => en.removed }. + mapZIO{ case (id, en) => + for + k <- pickle((fid, id)) + _ <- dba.delete(k) + yield en.next + }. + runLast + /* fix head */ + _ <- x.fold(ZIO.unit)(id => meta.put(fid, fd.copy(head=id))(dba)) + /* remove in the middle */ + _ <- + entries(fid)(dba). + /* zip with stream of last live entry before removed ones */ + /* [1(live),2(removed),3(removed),4(live),5(removed)] becomes [1,1,1,4,4] */ + zip(entries(fid)(dba).scan(None: Option[(Eid,En)]){ + case (None, (id, en)) => Some(id->en) + case ( x, ( _, en)) if en.removed => x + case ( _, (id, en)) => Some(id->en) + }.collect{ case Some(x) => x }). + filter{ case (_, en, _) => en.removed }. + mapZIO{ case (id, en, (id2, en2)) => + for + /* change link */ + p <- pickle(en2.copy(next=en.next)) + k2 <- pickle((fid, id2)) + _ <- dba.put(k2, p) + /* delete entry */ + k <- pickle((fid, id)) + _ <- dba.delete(k) + yield () + }. + runDrain + /* fix removed/maxid */ + _ <- fix(fid, fd)(dba) + yield () + } + + /* fix length, removed and maxid for feed */ + private def fix(fid: Fid, fd: Fd)(dba: Dba): IO[Err, Unit] = + for + x <- + entries(fid)(dba).runFold((0L, 0L, 0L)){ + case ((l, r, m), (id, en)) => + val l2 = en.removed.fold(l, l+1) + val r2 = en.removed.fold(r+1, r) + val m2 = Math.max(m, id) + (l2, r2, m2) + } + (l, r, m) = x + _ <- meta.put(fid, fd.copy(length=l, removed=r, maxid=m))(dba) + yield () + + private[feed] inline def stob(s: String): Array[Byte] = + s.getBytes("utf8").nn + + extension (x: Boolean) + private[feed] inline def fold[A](t: => A, f: => A): A = + if x then t else f +end ops diff --git a/kvs/src/main/scala/file.fs.scala b/kvs/src/main/scala/file.fs.scala deleted file mode 100644 index cccbc67f..00000000 --- a/kvs/src/main/scala/file.fs.scala +++ /dev/null @@ -1,56 +0,0 @@ -package zd.kvs - -import java.nio.file.attribute.BasicFileAttributes -import java.nio.file.{StandardOpenOption, SimpleFileVisitor, FileVisitResult, Files as JFiles, Path as JPath} -import java.io.IOException - -import zio.* -import zio.nio.file.* -import zio.stream.* - -class FileFs(val root: JPath): - - private val ROOT = Path.fromJava(root) - - def create(path: List[String]): ZIO[Any, Exception, Unit] = - for - _ <- Files.createDirectories(ROOT / path.init) - _ <- Files.createFile(ROOT / path) - yield unit - - def createDir(path: List[String]): ZIO[Any, Exception, Unit] = - Files.createDirectories(ROOT / path) - - def append(path: List[String], data: Chunk[Byte]): ZIO[Any, Exception, Unit] = - Files.writeBytes(ROOT / path, data, StandardOpenOption.APPEND) - - def size(path: List[String]): ZIO[Any, IOException, Long] = - Files.size(ROOT / path) - - def stream(path: List[String]): ZStream[Any, Throwable, Byte] = - val p = root.resolve(path.mkString("/")).nn - ZStream.fromFile(p.toFile.nn) - - def bytes(path: List[String]): ZIO[Any, IOException, Chunk[Byte]] = - Files.readAllBytes(ROOT / path) - - def delete(path: List[String]): ZIO[Any, Exception, Unit] = - val p = root.resolve(path.mkString("/")).nn - ZIO.attemptBlocking(JFiles.walkFileTree(p, new SimpleFileVisitor[JPath]() { - override def visitFile(file: JPath, attrs: BasicFileAttributes): FileVisitResult = { - JFiles.delete(file) - FileVisitResult.CONTINUE - } - override def postVisitDirectory(file: JPath, e: IOException): FileVisitResult = { - JFiles.delete(file) - FileVisitResult.CONTINUE - } - })).unit - .refineToOrDie[Exception] - - def move(pathFrom: List[String], pathTo: List[String]): ZIO[Any, Exception, Unit] = - Files.move(ROOT / pathFrom, ROOT / pathTo) - - extension (p: Path) - def / (xs: List[String]): Path = xs.foldLeft(p)((acc, x) => acc / x) - diff --git a/kvs/src/main/scala/file.scala b/kvs/src/main/scala/file.scala deleted file mode 100644 index 4140819e..00000000 --- a/kvs/src/main/scala/file.scala +++ /dev/null @@ -1,101 +0,0 @@ -package zd.kvs - -import scala.annotation.tailrec -import scala.util.{Try, Success, Failure} -import proto.* - -case class File - ( @N(1) name: String // name – unique value inside directory - , @N(2) count: Int // count – number of chunks - , @N(3) size: Long // size - size of file in bytes - , @N(4) dir: Boolean // true if directory - ) - -trait FileHandler: - protected val chunkLength: Int - - given MessageCodec[File] = caseCodecAuto - - private inline def pickle(e: File): Array[Byte] = encode(e) - private def unpickle(a: Array[Byte]): Either[Err, File] = Try(decode[File](a)) match - case Success(x) => Right(x) - case Failure(x) => Left(Failed(x)) - - private def get(dir: String, name: String)(using dba: Dba): Either[Err, File] = - dba.get(s"${dir}/${name}") match - case Right(Some(x)) => unpickle(x) - case Right(None) => Left(FileNotExists(dir, name)) - case Left(e) => Left(e) - - def create(dir: String, name: String)(using dba: Dba): Either[Err, File] = - dba.get(s"${dir}/${name}") match - case Right(Some(_)) => Left(FileAlreadyExists(dir, name)) - case Right(None) => - val f = File(name, count=0, size=0L, dir=false) - val x = pickle(f) - for { - _ <- dba.put(s"${dir}/${name}", x) - } yield f - case Left(e) => Left(e) - - def append(dir: String, name: String, data: Array[Byte])(using dba: Dba): Either[Err, File] = - append(dir, name, data, data.length) - - def append(dir: String, name: String, data: Array[Byte], length: Int)(using dba: Dba): Either[Err, File] = - @tailrec def writeChunks(count: Int, rem: Array[Byte]): Either[Err, Int] = - rem.splitAt(chunkLength) match - case (xs, _) if xs.length == 0 => Right(count) - case (xs, ys) => - dba.put(s"${dir}/${name}_chunk_${count+1}", xs) match - case Right(_) => writeChunks(count+1, rem=ys) - case Left(e) => Left(e) - for { - _ <- (length == 0).fold(Left(InvalidArgument("data is empty")), Right(())) - file <- get(dir, name) - count <- writeChunks(file.count, rem=data) - file1 = file.copy(count=count, size=file.size+length) - file2 = pickle(file1) - _ <- dba.put(s"${dir}/${name}", file2) - } yield file1 - - def size(dir: String, name: String)(using Dba): Either[Err, Long] = - get(dir, name).map(_.size) - - def stream(dir: String, name: String)(using dba: Dba): Either[Err, LazyList[Either[Err, Array[Byte]]]] = - get(dir, name).map(_.count).flatMap{ - case n if n < 0 => Left(Fail(s"impossible count=${n}")) - case 0 => Right(LazyList.empty) - case n if n > 0 => - def k(i: Int) = s"${dir}/${name}_chunk_${i}" - Right(LazyList.range(1, n+1).map(i => dba.get(k(i)).flatMap(_.cata(Right(_), Left(KeyNotFound))))) - } - - def delete(dir: String, name: String)(using dba: Dba): Either[Err, File] = - for { - file <- get(dir, name) - _ <- LazyList.range(1, file.count+1).map(i => dba.delete(s"${dir}/${name}_chunk_${i}")).sequence_ - _ <- dba.delete(s"${dir}/${name}") - } yield file - - def copy(dir: String, name: (String, String))(using dba: Dba): Either[Err, File] = - val (fromName, toName) = name - for { - from <- get(dir, fromName) - _ <- get(dir, toName).fold( - l => l match { - case _: FileNotExists => Right(()) - case _ => Left(l) - }, - _ => Left(FileAlreadyExists(dir, toName)) - ) - _ <- LazyList.range(1, from.count+1).map(i => for { - x <- { - val k = s"${dir}/${fromName}_chunk_${i}" - dba.get(k).flatMap(_.cata(Right(_), Left(KeyNotFound))) - } - _ <- dba.put(s"${dir}/${toName}_chunk_${i}", x) - } yield ()).sequence_ - to = File(toName, from.count, from.size, from.dir) - x = pickle(to) - _ <- dba.put(s"${dir}/${toName}", x) - } yield to diff --git a/kvs/src/main/scala/idx.scala b/kvs/src/main/scala/idx.scala deleted file mode 100644 index 903c4848..00000000 --- a/kvs/src/main/scala/idx.scala +++ /dev/null @@ -1,149 +0,0 @@ -package zd.kvs -package idx - -import proto.* - -/** - * Feed of entries: [top] ----prev-> [en] ----prev-> [empty] - */ -object IdxHandler: - opaque type Fid = String - def Fid(fid: String): Fid = fid - - case class Fd - ( @N(1) id: Fid - , @N(2) top: String = empty - ) - - case class Idx - ( @N(1) fid: Fid - , @N(2) id: String - , @N(3) prev: String - ) - - object Idx: - def apply(fid: Fid, id: String): Idx = Idx(fid, id, empty) - - given MessageCodec[Fd] = caseCodecAuto - - def update(fd: Fd, top: String)(using dba: Dba): Either[Err, Unit] = - dba.put(fd.id, encode(fd.copy(top=top))).void - - def create(fid: Fid)(using dba: Dba): Either[Err, Fd] = - val fd = Fd(fid) - dba.put(fd.id, encode(fd)).map(_ => fd) - - def get(fid: Fid)(using dba: Dba): Either[Err, Option[Fd]] = - dba.get(fid).map(_.map(decode)) - - def delete(fid: Fid)(using dba: Dba): Either[Err, Unit] = - dba.delete(fid).void - - type A = Idx - given MessageCodec[A] = caseCodecAuto - - private def key(fid: Fid, id: String): String = s"${fid}.${id}" - - private def _put(en: A)(using dba: Dba): Either[Err, A] = - dba.put(key(en.fid, en.id), encode(en)).map(_ => en) - - def get(fid: Fid, id: String)(using dba: Dba): Either[Err, Option[A]] = - dba.get(key(fid, id)).map(_.map(decode)) - - private def getOrFail(fid: Fid, id: String)(using dba: Dba): Either[Err, A] = - val k = key(fid, id) - dba.get(k).flatMap{ - case Some(x) => Right(decode(x)) - case None => Left(KeyNotFound) - } - - private def delete(fid: Fid, id: String)(using dba: Dba): Either[Err, Unit] = - dba.delete(key(fid, id)).void - - private def nextid(fid: Fid)(using dba: Dba): Either[Err, String] = - def key(fid: String): String = s"IdCounter.${fid}" - dba.get(key(fid)).flatMap{ v => - val prev = v.map(String(_, "utf8").nn).getOrElse("0") - val next = (prev.toLong+1).toString - dba.put(key(fid), next.getBytes("utf8").nn).map(_ => next) - } - - /** - * Adds the entry to the container - * Creates the container if it's absent - * @param en entry to add (prev is ignored). If id is empty it will be generated - */ - def add(en: A)(using dba: Dba): Either[Err, A] = - get(en.fid).flatMap(_.cata(Right(_), create(en.fid))).flatMap{ (fd: Fd) => - ( if (en.id == empty) - nextid(en.fid) // generate ID if it is empty - else - get(en.fid, en.id).flatMap( // id of entry must be unique - _.cata(_ => Left(EntryExists(key(en.fid, en.id))), Right(en.id)) - ) - ).map(id => en.copy(id=id, prev=fd.top)).flatMap{ en => - // add new entry with prev pointer - _put(en).flatMap{ en => - // update feed's top - update(fd, top=en.id).map(_ => en) - } - } - } - - /** - * Puts the entry to the container - * If entry don't exists in containter create container and add it to the head - * If entry exists in container, put it in the same place - * @param en entry to put (prev is ignored) - */ - def put(en: A)(using Dba): Either[Err, A] = - get(en.fid, en.id).fold( - l => Left(l), - r => r.cata(x => _put(en.copy(x.prev)), add(en)) - ) - - /** Iterates through container and return the stream of entries. - * - * Stream is FILO ordered (most recent is first). - * @param from if specified then return entries after this entry - */ - def all(fid: Fid)(using Dba): Either[Err, LazyList[Either[Err, A]]] = - all(fid, from=None) - - def all(fid: Fid, from: Option[A])(using Dba): Either[Err, LazyList[Either[Err, A]]] = - def _stream(id: String): LazyList[Either[Err, A]] = - id match - case `empty` => LazyList.empty - case _ => - val en = getOrFail(fid, id) - en match - case Right(e) => LazyList.cons(en, _stream(e.prev)) - case _ => LazyList(en) - from match - case None => get(fid).map(_.cata(x => _stream(x.top), LazyList.empty)) - case Some(en) => Right(_stream(en.prev)) - - def remove(_fid: Fid, _id: String)(using Dba): Either[Err, Unit] = - // get entry to delete - getOrFail(_fid, _id).flatMap{ en => - val id = en.id - val fid = en.fid - val prev = en.prev - get(fid).flatMap(_.cata(Right(_), Left(KeyNotFound))).flatMap{ fd => - val top = fd.top - ( if (id == top) - // change top and decrement - update(fd, top=prev) - else - // find entry which points to this one (next) - LazyList.iterate(start=getOrFail(fid,top))(_.flatMap(x=>getOrFail(fid,x.prev))) - .takeWhile(_.isRight) - .flatMap(_.toOption) - .find(_.prev==id) - .toRight(KeyNotFound) - // change link - .flatMap(next => _put(next.copy(prev=prev))) - ).flatMap(_ => delete(fid, id)) // delete entry - } - } -end IdxHandler diff --git a/kvs/src/main/scala/jmx.scala b/kvs/src/main/scala/jmx.scala deleted file mode 100644 index 817bbd3e..00000000 --- a/kvs/src/main/scala/jmx.scala +++ /dev/null @@ -1,36 +0,0 @@ -package zd.kvs - -import java.lang.management.ManagementFactory -import javax.management.{ObjectName,StandardMBean} -import scala.util.* - -/** Kvs management access */ -trait KvsMBean { - def unsafe_save(path: String): String - def unsafe_load(path: String): String - def unsafe_compact(): String -} - -class KvsJmx(kvs: Kvs) { - private val server = ManagementFactory.getPlatformMBeanServer.nn - private val name = new ObjectName("kvs:type=Kvs") - - def registerMBean(): Unit = { - val mbean = new StandardMBean(classOf[KvsMBean]) with KvsMBean { - def unsafe_save(path: String): String = kvs.dump.save(path).fold(_.toString, identity) - def unsafe_load(path: String): String = kvs.dump.load(path).fold(_.toString, identity) - - def unsafe_compact(): String = { - val t = System.nanoTime - kvs.compact() - s"done in ${(System.nanoTime - t) / 1000000} ms" - } - } - Try(server.registerMBean(mbean,name)) - () - } - - def unregisterMBean(): Unit = { - Try(server.unregisterMBean(name)) - } -} diff --git a/kvs/src/main/scala/kvs.scala b/kvs/src/main/scala/kvs.scala deleted file mode 100644 index 84ce9985..00000000 --- a/kvs/src/main/scala/kvs.scala +++ /dev/null @@ -1,96 +0,0 @@ -package zd.kvs - -import akka.actor.* -import akka.event.* -import scala.concurrent.* - -trait ReadableEl: - def get[A: ElHandler](k: String): Either[Err, Option[A]] - -trait WritableEl extends ReadableEl: - def put[A: ElHandler](k: String, el: A): Either[Err, A] - def delete[A: ElHandler](k: String): Either[Err, Unit] - -trait ReadableFile: - def stream(dir: String, name: String)(using FileHandler): Either[Err, LazyList[Either[Err, Array[Byte]]]] - def size(dir: String, name: String)(using FileHandler): Either[Err, Long] - -trait WritableFile extends ReadableFile: - def create(dir: String, name: String)(using FileHandler): Either[Err, File] - def append(dir: String, name: String, chunk: Array[Byte])(using FileHandler): Either[Err, File] - def delete(dir: String, name: String)(using FileHandler): Either[Err, File] - def copy(dir: String, name: (String, String))(using FileHandler): Either[Err, File] - -class ReadableIdx(using Dba): - type Fid = idx.IdxHandler.Fid - type Fd = idx.IdxHandler.Fd - type A = idx.IdxHandler.Idx - protected val h = idx.IdxHandler - def get(fid: Fid): Either[Err, Option[Fd]] = h.get(fid) - def all(fid: Fid, from: Option[A]=None): Either[Err, LazyList[Either[Err, A]]] = h.all(fid, from) - def get(fid: Fid, id: String): Either[Err, Option[A]] = h.get(fid, id) - def getOrFail(fid: Fid, id: String): Either[Err, A] = - get(fid, id).flatMap{ - case None => Left(KeyNotFound) - case Some(x) => Right(x) - } - def exists_b(fid: Fid, id: String): Either[Err, Boolean] = h.get(fid, id).map(_.cata(_ => true, false)) - def not_exists(fid: Fid, id: String): Either[Err, Unit] = h.get(fid, id).flatMap(_.cata(_ => Left(EntryExists(id)), Right(unit))) -end ReadableIdx - -class WritableIdx(using Dba) extends ReadableIdx: - def update(fd: Fd, top: String): Either[Err, Unit] = h.update(fd, top) - def create(fid: Fid): Either[Err, Fd] = h.create(fid) - def delete(fid: Fid): Either[Err, Unit] = h.delete(fid) - - def add(a: A): Either[Err, A] = h.add(a) - def put(a: A): Either[Err, A] = h.put(a) - def remove(fid: Fid, id: String): Either[Err, Unit] = h.remove(fid, id) - -trait ReadableKvs: - val el: ReadableEl - val file: ReadableFile - val index: ReadableIdx - -trait WritableKvs extends ReadableKvs: - val el: WritableEl - val file: WritableFile - val index: WritableIdx - -object Kvs: - def apply(system: ActorSystem): Kvs = rng(system) - def rng(system: ActorSystem): Kvs = new Kvs(using Rng(system)) - def mem(): Kvs = new Kvs(using Mem()) - def fs(): Kvs = ??? - def sql(): Kvs = ??? - def rks(system: ActorSystem, dir: String): Kvs = new Kvs(using Rks(system, dir)) -end Kvs - -class Kvs(using val dba: Dba) extends WritableKvs, AutoCloseable: - import dba.R - - val el = new WritableEl: - def put[A](k: String, el: A)(using h: ElHandler[A]): Either[Err, A] = h.put(k,el) - def get[A](k: String)(using h: ElHandler[A]): Either[Err, Option[A]] = h.get(k) - def delete[A](k: String)(using h: ElHandler[A]): Either[Err, Unit] = h.delete(k) - - val file = new WritableFile: - def create(dir: String, name: String)(using h: FileHandler): Either[Err, File] = h.create(dir, name) - def append(dir: String, name: String, chunk: Array[Byte])(using h: FileHandler): Either[Err, File] = h.append(dir, name, chunk) - def stream(dir: String, name: String)(using h: FileHandler): Either[Err, LazyList[Either[Err, Array[Byte]]]] = h.stream(dir, name) - def size(dir: String, name: String)(using h: FileHandler): Either[Err, Long] = h.size(dir, name) - def delete(dir: String, name: String)(using h: FileHandler): Either[Err, File] = h.delete(dir, name) - def copy(dir: String, name: (String, String))(using h: FileHandler): Either[Err, File] = h.copy(dir, name) - - val index = new WritableIdx - - object dump: - def save(path: String): R[String] = dba.save(path) - def load(path: String): R[String] = dba.load(path) - - def onReady(): Future[Unit] = dba.onReady() - def compact(): Unit = dba.compact() - def deleteByKeyPrefix(k: dba.K): R[Unit] = dba.deleteByKeyPrefix(k) - - def close(): Unit = dba.close() -end Kvs diff --git a/kvs/src/main/scala/leveldb/leveldb.scala b/kvs/src/main/scala/leveldb/leveldb.scala deleted file mode 100644 index 4b0c8180..00000000 --- a/kvs/src/main/scala/leveldb/leveldb.scala +++ /dev/null @@ -1,195 +0,0 @@ -package leveldbjnr - -import java.io.File -import java.nio.file.{Files, StandardCopyOption} -import jnr.ffi.byref.{NumberByReference, PointerByReference} -import jnr.ffi.{LibraryLoader, LibraryOption, Pointer, TypeAlias} -import scala.util.{Try} - -object LevelDb { - private def copyLib(name: String): Either[Throwable, Long] = { - val is = classOf[LevelDb].getResourceAsStream(s"/lib/${name}") - val dest = new File(s"./tmp/${name}") - Try { - dest.mkdirs() - Files.copy(is, dest.toPath(), StandardCopyOption.REPLACE_EXISTING) - }.toEither - } - - copyLib("libleveldb.dylib") - copyLib("libleveldb.so") - copyLib("leveldb.dll") - sys.props += "java.library.path" -> "./tmp/" - val lib = LibraryLoader.create(classOf[Api]).nn.option(LibraryOption.IgnoreError, null).nn.failImmediately().nn.load("leveldb").nn - - private[leveldbjnr] def checkError(error: PointerByReference): Either[Throwable, Unit] = { - val str = error.getValue - val x = if (str != null) Left(new Exception(str.getString(0))) - else Right(()) - lib.leveldb_free(str) - x - } - - def open(path: String): Either[Throwable, LevelDb] = { - val opts = lib.leveldb_options_create() - lib.leveldb_options_set_create_if_missing(opts, 1) - lib.leveldb_options_set_write_buffer_size(opts, 200*1024*1024) - lib.leveldb_options_set_max_open_files(opts, 2500) - lib.leveldb_options_set_block_size(opts, 64*1024) - val filterpolicy = lib.leveldb_filterpolicy_create_bloom(10) - lib.leveldb_options_set_filter_policy(opts, filterpolicy) - val cache = lib.leveldb_cache_create_lru(500*1024*1024) - lib.leveldb_options_set_cache(opts, cache) - val error = new PointerByReference - val leveldb = lib.leveldb_open(opts, path, error) - lib.leveldb_options_destroy(opts) - // lib.leveldb_cache_destroy(cache) - // lib.leveldb_filterpolicy_destroy(filterpolicy) - checkError(error).map(_ => LevelDb(leveldb)) - } - - def destroy(path: String): Either[Throwable, Unit] = { - val opts = lib.leveldb_options_create() - val error = new PointerByReference - lib.leveldb_destroy_db(opts, path, error) - lib.leveldb_options_destroy(opts) - checkError(error) - } - - def version: (Int, Int) = { - (lib.leveldb_major_version(), lib.leveldb_minor_version()) - } -} - -case class LevelDb(leveldb: Pointer) { - import LevelDb.{lib, checkError} - - def get(key: Array[Byte], readOptions: ReadOpts): Either[Throwable, Option[Array[Byte]]] = { - val resultLengthPointer = new NumberByReference(TypeAlias.size_t) - val error = new PointerByReference - val result = Option(lib.leveldb_get(leveldb, readOptions.pointer, key, key.length.toLong, resultLengthPointer, error)) - checkError(error).map{ _ => - result.map{ result => - val resultLength = resultLengthPointer.intValue - val resultAsByteArray = new Array[Byte](resultLength) - result.nn.get(0, resultAsByteArray, 0, resultLength) - lib.leveldb_free(result) - resultAsByteArray - } - } - } - - def put(key: Array[Byte], value: Array[Byte], writeOptions: WriteOpts): Either[Throwable, Unit] = { - val error = new PointerByReference - lib.leveldb_put(leveldb, writeOptions.pointer, key, key.length.toLong, value, value.length.toLong, error) - checkError(error) - } - - def write(writeBatch: WriteBatch, writeOptions: WriteOpts): Either[Throwable, Unit] = { - val error = new PointerByReference - lib.leveldb_write(leveldb, writeOptions.pointer, writeBatch.pointer, error) - checkError(error) - } - - def delete(key: Array[Byte], writeOptions: WriteOpts): Either[Throwable, Unit] = { - val error = new PointerByReference - lib.leveldb_delete(leveldb, writeOptions.pointer, key, key.length.toLong, error) - checkError(error) - } - - def iter(): Iter = { - new Iter(leveldb) - } - - def compact(): Unit = { - lib.leveldb_compact_range(leveldb, null, 0L, null, 0L) - } - - def close(): Unit = { - lib.leveldb_close(leveldb) - } -} - -class Iter(leveldb: Pointer) { - import LevelDb.lib - - val p = lib.leveldb_create_iterator(leveldb, new ReadOpts().pointer) - - def seek(key: Array[Byte]): Unit = { - lib.leveldb_iter_seek(p, key, key.length.toLong) - } - - def seek_to_first(): Unit = { - lib.leveldb_iter_seek_to_first(p) - } - - def valid(): Boolean = { - lib.leveldb_iter_valid(p) != 0.toByte - } - - def next(): Unit = { - lib.leveldb_iter_next(p) - } - - def key(): Array[Byte] = { - val resultLengthPointer = new NumberByReference(TypeAlias.size_t) - val resultPointer = lib.leveldb_iter_key(p, resultLengthPointer) - val resultLength = resultLengthPointer.intValue - val resultAsByteArray = new Array[Byte](resultLength) - resultPointer.get(0, resultAsByteArray, 0, resultLength) - resultAsByteArray - } - - def close(): Unit = { - val _ = lib.leveldb_iter_destroy(p) - } -} - -case class WriteOpts(sync: Boolean = false) { - import LevelDb.lib - - private[leveldbjnr] val pointer: Pointer = lib.leveldb_writeoptions_create() - - lib.leveldb_writeoptions_set_sync(pointer, if (sync) 1 else 0) - - def close(): Unit = { - lib.leveldb_writeoptions_destroy(pointer) - } -} - -case class ReadOpts(verifyChecksum: Boolean = false, fillCache: Boolean = true) { - import LevelDb.lib - - private[leveldbjnr] val pointer: Pointer = lib.leveldb_readoptions_create() - - lib.leveldb_readoptions_set_verify_checksums(pointer, if (verifyChecksum) 1 else 0) - lib.leveldb_readoptions_set_fill_cache(pointer, if (fillCache) 1 else 0) - - def close(): Unit = { - lib.leveldb_readoptions_destroy(pointer) - } -} - -case class WriteBatch() { - import LevelDb.lib - - private[leveldbjnr] val pointer: Pointer = lib.leveldb_writebatch_create() - - def put(key: Array[Byte], value: Array[Byte]): Unit = { - lib.leveldb_writebatch_put(pointer, key, key.length.toLong, value, value.length.toLong) - } - - def delete(key: Array[Byte]): Unit = { - lib.leveldb_writebatch_delete(pointer, key, key.length.toLong) - } - - def clear(): Unit = { - lib.leveldb_writebatch_clear(pointer) - } - - def close(): Unit = { - lib.leveldb_writebatch_destroy(pointer) - } -} - -given [A]: CanEqual[A, A | Null] = CanEqual.derived \ No newline at end of file diff --git a/kvs/src/main/scala/leveldb/native.scala b/kvs/src/main/scala/leveldb/native.scala deleted file mode 100644 index 2c6595fd..00000000 --- a/kvs/src/main/scala/leveldb/native.scala +++ /dev/null @@ -1,181 +0,0 @@ -package leveldbjnr - -import jnr.ffi.Pointer -import jnr.ffi.byref.{PointerByReference, NumberByReference} -import jnr.ffi.annotations.{In, Out} - -trait Api { - def leveldb_open(@In options: Pointer, - @In name: String, - errptr: PointerByReference): Pointer - - def leveldb_close(levelDB: Pointer): Unit - - def leveldb_get(levelDB: Pointer, - @In options: Pointer, - @In key: Array[Byte], - @In keylen: Long, - @Out vallen: NumberByReference, - errptr: PointerByReference): Pointer - - def leveldb_put(levelDB: Pointer, - @In options: Pointer, - @In key: Array[Byte], - @In keylen: Long, - @In `val`: Array[Byte], - @In vallen: Long, - errptr: PointerByReference): Unit - - def leveldb_delete(levelDB: Pointer, - @In options: Pointer, - @In key: Array[Byte], - @In keylen: Long, - errptr: PointerByReference): Unit - - def leveldb_write(levelDB: Pointer, - @In options: Pointer, - @In batch: Pointer, - errptr: PointerByReference): Unit - - def leveldb_property_value(levelDB: Pointer, @In propname: String): String - - def leveldb_compact_range(levelDB: Pointer, - @In start_key: Array[Byte] | Null, - @In start_key_len: Long, - @In limit_key: Array[Byte] | Null, - @In limit_key_len: Long): Unit - - def leveldb_destroy_db(@In options: Pointer, - @In name: String, - errptr: PointerByReference): Unit - - def leveldb_repair_db(@In options: Pointer, - @In name: String, - errptr: PointerByReference): Unit - - def leveldb_major_version(): Int - - def leveldb_minor_version(): Int - - def leveldb_options_create(): Pointer - - def leveldb_options_destroy(options: Pointer): Unit - - def leveldb_options_set_comparator(options: Pointer, - @In comparator: Pointer): Unit - - def leveldb_options_set_filter_policy(options: Pointer, - @In filterPolicy: Pointer): Unit - - def leveldb_options_set_create_if_missing(options: Pointer, - @In value: Byte): Unit - - def leveldb_options_set_error_if_exists(options: Pointer, - @In value: Byte): Unit - - def leveldb_options_set_paranoid_checks(options: Pointer, - @In value: Byte): Unit - - def leveldb_options_set_env(options: Pointer, @In env: Pointer): Unit - - def leveldb_options_set_info_log(options: Pointer, @In logger: Pointer): Unit - - def leveldb_options_set_write_buffer_size(options: Pointer, - @In writeBufferSize: Long): Unit - - def leveldb_options_set_max_open_files(options: Pointer, - @In maxOpenFiles: Int): Unit - - def leveldb_options_set_cache(options: Pointer, @In cache: Pointer): Unit - - def leveldb_options_set_block_size(options: Pointer, - @In blockSize: Long): Unit - - def leveldb_options_set_block_restart_interval( - options: Pointer, - @In blockRestartInterval: Int): Unit - - def leveldb_options_set_compression(options: Pointer, - @In compressionType: Int): Unit - - def leveldb_readoptions_create(): Pointer - - def leveldb_readoptions_destroy(readOptions: Pointer): Unit - - def leveldb_readoptions_set_verify_checksums(readOptions: Pointer, - @In value: Byte): Unit - - def leveldb_readoptions_set_fill_cache(readOptions: Pointer, - @In value: Byte): Unit - - def leveldb_readoptions_set_snapshot(readOptions: Pointer, - @In snapshot: Pointer): Unit - - def leveldb_writeoptions_create(): Pointer - - def leveldb_writeoptions_destroy(writeOptions: Pointer): Unit - - def leveldb_writeoptions_set_sync(writeOptions: Pointer, - @In value: Byte): Unit - - def leveldb_cache_create_lru(@In capacity: Long): Pointer - - def leveldb_cache_destroy(cache: Pointer): Unit - - def leveldb_create_default_env(): Pointer - - def leveldb_env_destroy(env: Pointer): Unit - - def leveldb_filterpolicy_destroy(filterPolicy: Pointer): Unit - - def leveldb_filterpolicy_create_bloom(@In bits_per_key: Int): Pointer - - def leveldb_create_iterator(levelDB: Pointer, @In options: Pointer): Pointer - - def leveldb_iter_destroy(iterator: Pointer): Pointer - - def leveldb_iter_valid(@In iterator: Pointer): Byte - - def leveldb_iter_seek_to_first(iterator: Pointer): Unit - - def leveldb_iter_seek_to_last(iterator: Pointer): Unit - - def leveldb_iter_seek(iterator: Pointer, - @In k: Array[Byte], - @In klen: Long): Unit - - def leveldb_iter_next(iterator: Pointer): Unit - - def leveldb_iter_prev(iterator: Pointer): Unit - - def leveldb_iter_key(@In iterator: Pointer, - @Out klen: NumberByReference): Pointer - - def leveldb_iter_value(@In iterator: Pointer, - @Out vlen: NumberByReference): Pointer - - def leveldb_iter_get_error(@In iterator: Pointer, - errptr: PointerByReference): Unit - - def leveldb_create_snapshot(levelDB: Pointer): Pointer - - def leveldb_release_snapshot(levelDB: Pointer, @In snapshot: Pointer): Unit - - def leveldb_writebatch_create(): Pointer - - def leveldb_writebatch_destroy(writeBatch: Pointer): Unit - - def leveldb_writebatch_clear(writeBatch: Pointer): Unit - - def leveldb_writebatch_put(writeBatch: Pointer, - @In key: Array[Byte], - @In klen: Long, - @In `val`: Array[Byte], - @In vlen: Long): Unit - - def leveldb_writebatch_delete(writeBatch: Pointer, - @In key: Array[Byte], - @In klen: Long): Unit - - def leveldb_free(pointer: Pointer | Null): Unit -} diff --git a/kvs/src/main/scala/package.scala b/kvs/src/main/scala/package.scala deleted file mode 100644 index 367acb0e..00000000 --- a/kvs/src/main/scala/package.scala +++ /dev/null @@ -1,5 +0,0 @@ -package zd.kvs - -val empty = "empty_8fc62083-b0d1-49cc-899c-fbb9ab177241" // DON'T change ever - -given [A]: CanEqual[None.type, A] = CanEqual.derived diff --git a/kvs/src/main/scala/rks/Dump.scala b/kvs/src/main/scala/rks/Dump.scala deleted file mode 100644 index 777e7ca8..00000000 --- a/kvs/src/main/scala/rks/Dump.scala +++ /dev/null @@ -1,95 +0,0 @@ -package zd.rks - -import akka.actor.{Actor, ActorLogging, ActorRef, Props, PoisonPill} -import java.time.format.{DateTimeFormatter} -import java.time.{LocalDateTime} -import org.rocksdb.* -import zd.dump.{DumpIO} - -object DumpProcessor { - def props(db: RocksDB): Props = Props(new DumpProcessor(db)) - - case class Load(path: String) - case class Save(path: String) -} - -class DumpProcessor(db: RocksDB) extends Actor with ActorLogging { - def receive = { - case DumpProcessor.Load(path) => - log.info(s"Loading dump: path=${path}".green) - DumpIO.props(path) match { - case Left(t) => - val msg = s"invalid path=$path" - log.error(cause=t, message=msg) - // TODO unlock - sender ! msg - context.stop(self) - case Right(a) => - val dumpIO = context.actorOf(a) - dumpIO ! DumpIO.ReadNext - context.become(load(dumpIO, sender)()) - } - case DumpProcessor.Save(path) => - log.info(s"Saving dump: path=${path}".green) - val timestamp = LocalDateTime.now.nn.format(DateTimeFormatter.ofPattern("yyyy.MM.dd-HH.mm.ss")) - val dumpPath = s"${path}/rks_dump_${timestamp}" - DumpIO.props(dumpPath) match { - case Left(t) => - val msg = s"invalid path=$path" - log.error(cause=t, message=msg) - // TODO unlock - sender ! msg - context.stop(self) - case Right(a) => - val dumpIO = context.actorOf(a) - self ! DumpIO.PutDone - val it = db.newIterator().nn - it.seekToFirst() - context.become(save(it, dumpIO, sender, dumpPath)()) - } - } - - def save(it: RocksIterator, dumpIO: ActorRef, client: ActorRef, dumpPath: String): () => Receive = { - () => { - case _: DumpIO.PutDone.type => - if it.isValid() then - dumpIO ! DumpIO.Put(Vector(it.key().nn -> it.value().nn)) - it.next() - else - log.info(s"Dump is saved: path=${dumpPath}".green) - // TODO unlock - client ! dumpPath - dumpIO ! PoisonPill - context.stop(self) - } - } - - def load(dumpIO: ActorRef, client: ActorRef): () => Receive = { - var keysNumber: Long = 0L - var size: Long = 0L - var ksize: Long = 0L - - () => { - case res: DumpIO.ReadNextRes => - dumpIO ! DumpIO.ReadNext - keysNumber = keysNumber + res.kv.size - res.kv.foreach{ d => - ksize = ksize + d._1.size - size = size + d._2.size - - db.put(d._1, d._2) - } - - case _: DumpIO.ReadNextLast.type => - log.info(s"load info: load is completed, total keys=${keysNumber}, size=${size}, ksize=${ksize}") - log.info("Dump is loaded".green) - client ! "done" - // TODO unlock - dumpIO ! PoisonPill - context.stop(self) - } - } -} - -extension (value: String) - def green: String = s"\u001B[32m${value}\u001B[0m" \ No newline at end of file diff --git a/kvs/src/main/scala/rng/Data.scala b/kvs/src/main/scala/rng/Data.scala index c8ccf582..b16a5dcd 100644 --- a/kvs/src/main/scala/rng/Data.scala +++ b/kvs/src/main/scala/rng/Data.scala @@ -2,46 +2,35 @@ package zd.rng package data import proto.* -import java.util.Arrays - -final class Data - ( @N(1) val key: Array[Byte] - , @N(2) val bucket: Int - , @N(3) val lastModified: Long - , @N(4) val vc: VectorClock - , @N(5) val value: Array[Byte] - ) { - def copy(vc: VectorClock): Data = { - new Data(key=key, bucket=bucket, lastModified=lastModified, vc=vc, value=value) - } - override def equals(other: Any): Boolean = other match { - case that: Data => - Arrays.equals(key, that.key) && - bucket == that.bucket && - lastModified == that.lastModified && - vc == that.vc && - Arrays.equals(value, that.value) - case _ => false - } - override def hashCode(): Int = { - val state = Seq[Any](key, bucket, lastModified, vc, value) - state.map(_.hashCode()).foldLeft(0)((a, b) => 31 * a + b) - } - override def toString = s"Data(key=$key, bucket=$bucket, lastModified=$lastModified, vc=$vc, value=$value)" -} -object Data { - def apply(key: Array[Byte], bucket: Int, lastModified: Long, vc: VectorClock, value: Array[Byte]): Data = { - new Data(key=key, bucket=bucket, lastModified=lastModified, vc=vc, value=value) - } -} + +import org.apache.pekko.cluster.given + +sealed trait StoreKey + +@N(1) final case class DataKey(@N(1) bucket: Int, @N(2) key: Array[Byte]) extends StoreKey + +final case class Data + ( @N(1) lastModified: Long + , @N(2) vc: VectorClock + , @N(3) value: Array[Byte] + ) + +@N(2) final case class BucketInfoKey(@N(1) bucket: Int) extends StoreKey final case class BucketInfo ( @N(1) vc: VectorClock , @N(2) keys: Vector[Array[Byte]] ) +object keycodec { + implicit val StoreKeyC: MessageCodec[StoreKey] = { + implicit val BucketInfoKeyC: MessageCodec[BucketInfoKey] = caseCodecAuto + implicit val DataKeyC: MessageCodec[DataKey] = caseCodecAuto + sealedTraitCodecAuto[StoreKey] + } +} + object codec { - import akka.cluster.given - implicit val bucketInfoCodec: MessageCodec[BucketInfo] = caseCodecAuto[BucketInfo] - implicit val dataCodec: MessageCodec[Data] = classCodecAuto[Data] + implicit val bucketInfoCodec: MessageCodec[BucketInfo] = caseCodecAuto + implicit val dataCodec: MessageCodec[Data] = caseCodecAuto } diff --git a/kvs/src/main/scala/rng/Dump.scala b/kvs/src/main/scala/rng/Dump.scala deleted file mode 100644 index 5ca96687..00000000 --- a/kvs/src/main/scala/rng/Dump.scala +++ /dev/null @@ -1,202 +0,0 @@ -package zd.rng - -import akka.actor.{Actor, ActorLogging, ActorRef, Props, PoisonPill} -import akka.pattern.ask -import akka.util.Timeout -import java.time.format.{DateTimeFormatter} -import java.time.{LocalDateTime} -import zd.rng.data.{Data} -import zd.rng.model.{DumpBucketData, DumpGetBucketData} -import zd.dump.{DumpIO, DumpIterate} -import scala.collection.immutable.{SortedMap} -import scala.concurrent.duration.* -import scala.concurrent.{Await} -import scala.util.{Try} - -object DumpProcessor { - def props(): Props = Props(new DumpProcessor) - - final case class Load(path: String) - final case class Save(buckets: SortedMap[Bucket, PreferenceList], path: String) - final case class Iterate(buckets: SortedMap[Bucket, PreferenceList], f: (Key, Value) => Unit) -} - -class DumpProcessor extends Actor with ActorLogging { - implicit val timeout: Timeout = Timeout(120 seconds) - val maxBucket: Bucket = context.system.settings.config.getInt("ring.buckets") - 1 - val stores = SelectionMemorize(context.system) - def receive = waitForStart - - def waitForStart: Receive = { - case DumpProcessor.Load(path) => - log.info(s"Loading dump: path=${path}".green) - DumpIO.props(path) match { - case Left(t) => - val msg = s"invalid path=$path" - log.error(cause=t, message=msg) - sender ! msg - stores.get(addr(self), "ring_hash").fold( - _ ! RestoreState, - _ ! RestoreState, - ) - context.stop(self) - case Right(a) => - val dumpIO = context.actorOf(a) - dumpIO ! DumpIO.ReadNext - context.become(load(dumpIO, sender)()) - } - - case DumpProcessor.Save(buckets, path) => - log.info(s"Saving dump: path=${path}".green) - val timestamp = LocalDateTime.now.nn.format(DateTimeFormatter.ofPattern("yyyy.MM.dd-HH.mm.ss")) - val dumpPath = s"${path}/rng_dump_${timestamp}" - DumpIO.props(dumpPath) match { - case Left(t) => - val msg = s"invalid path=$path" - log.error(cause=t, message=msg) - stores.get(addr(self), "ring_hash").fold( - _ ! RestoreState, - _ ! RestoreState, - ) - sender ! msg - context.stop(self) - case Right(a) => - val dumpIO = context.actorOf(a) - buckets(0).foreach(n => stores.get(n, "ring_readonly_store").fold( - _ ! DumpGetBucketData(0), - _ ! DumpGetBucketData(0), - )) - context.become(save(buckets, dumpIO, sender, dumpPath)()) - } - - case DumpProcessor.Iterate(buckets, f) => - log.info(s"DumpProcessor. Iterating...".green) - val dumpIterate = context.actorOf(DumpIterate.props(f)) - buckets(0).foreach(n => stores.get(n, "ring_readonly_store").fold( - _ ! DumpGetBucketData(0), - _ ! DumpGetBucketData(0), - )) - context.become(save(buckets, dumpIterate, sender, "dump_iterate")()) - } - - def load(dumpIO: ActorRef, client: ActorRef): () => Receive = { - var keysNumber: Long = 0L - var size: Long = 0L - var ksize: Long = 0L - () => { - case res: DumpIO.ReadNextRes => - dumpIO ! DumpIO.ReadNext - keysNumber = keysNumber + res.kv.size - res.kv.to(LazyList).map{ d => - ksize = ksize + d._1.size - size = size + d._2.size - val putF = stores.get(addr(self), "ring_hash").fold( - _.ask(InternalPut(d._1, d._2)), - _.ask(InternalPut(d._1, d._2)), - ) - Try(Await.result(putF, timeout.duration)).toEither - }.sequence_ match { - case Right(_) => - if (keysNumber % 1000 == 0L) { - log.info(s"load info: write done, total keys=${keysNumber}, size=${size}, ksize=${ksize}") - } - case Left(t) => - log.error(cause=t, message="can't put") - client ! "can't put" - stores.get(addr(self), "ring_hash").fold( - _ ! RestoreState, - _ ! RestoreState, - ) - context.stop(dumpIO) - context.stop(self) - } - case _: DumpIO.ReadNextLast.type => - log.info(s"load info: load is completed, total keys=${keysNumber}, size=${size}, ksize=${ksize}") - log.info("Dump is loaded".green) - client ! "done" - stores.get(addr(self), "ring_hash").fold( - _ ! RestoreState, - _ ! RestoreState, - ) - dumpIO ! PoisonPill - context.stop(self) - } - } - - def save(buckets: SortedMap[Bucket, PreferenceList], dumpIO: ActorRef, client: ActorRef, dumpPath: String): () => Receive = { - var processBucket: Int = 0 - var keysNumber: Long = 0 - var collected: Vector[Vector[Data]] = Vector.empty - - var putQueue: Vector[DumpIO.Put] = Vector.empty - var readyToPut: Boolean = true - var pullWorking: Boolean = false - - def pull(): Unit = { - if (!pullWorking && putQueue.size < 50 && processBucket < maxBucket) { - processBucket = processBucket + 1 - pullWorking = true - buckets(processBucket).foreach(n => stores.get(n, "ring_readonly_store").fold( - _ ! DumpGetBucketData(processBucket), - _ ! DumpGetBucketData(processBucket), - )) - } - } - - def showInfo(msg: String): Unit = { - if (processBucket == maxBucket && putQueue.isEmpty) { - log.info(s"dump done: msg=${msg}, bucket=${processBucket}/${maxBucket}, total=${keysNumber}, putQueue=${putQueue.size}") - } else if (keysNumber % 10000 == 0L) { - log.info(s"dump info: msg=${msg}, bucket=${processBucket}/${maxBucket}, total=${keysNumber}, putQueue=${putQueue.size}") - } - } - - () => { - case res: (DumpBucketData) if processBucket == res.b => - collected = res.items.toVector +: collected - if (collected.size == buckets(processBucket).size) { - pullWorking = false - pull() - - val merged: Vector[Data] = MergeOps.forDump(collected.flatten) - collected = Vector.empty - keysNumber = keysNumber + merged.size - if (readyToPut) { - readyToPut = false - dumpIO ! DumpIO.Put(merged.map(x => x.key -> x.value)) - } else { - putQueue = DumpIO.Put(merged.map(x => x.key -> x.value)) +: putQueue - } - showInfo("main") - } - case res: DumpBucketData => - log.error(s"wrong bucket response, expected=${processBucket}, actual=${res.b}") - stores.get(addr(self), "ring_hash").fold( - _ ! RestoreState, - _ ! RestoreState, - ) - client ! "failed" - context.stop(dumpIO) - context.stop(self) - case _: DumpIO.PutDone.type => - if (putQueue.isEmpty) { - if (processBucket == maxBucket) { - log.info(s"Dump is saved: path=${dumpPath}".green) - stores.get(addr(self), "ring_hash").fold( - _ ! RestoreState, - _ ! RestoreState - ) - client ! dumpPath - dumpIO ! PoisonPill - context.stop(self) - } - readyToPut = true - } else { - putQueue.headOption.map(dumpIO ! _) - putQueue = putQueue.tail - } - pull() - showInfo("io") - } - } -} diff --git a/kvs/src/main/scala/rng/GatherDel.scala b/kvs/src/main/scala/rng/GatherDel.scala index ce9b94ac..08f62acd 100644 --- a/kvs/src/main/scala/rng/GatherDel.scala +++ b/kvs/src/main/scala/rng/GatherDel.scala @@ -1,42 +1,61 @@ package zd.rng -import akka.actor.* -import akka.cluster.Cluster +import org.apache.pekko.actor.* +import org.apache.pekko.cluster.Cluster import scala.concurrent.duration.* -class GatherDel(client: ActorRef, t: FiniteDuration, prefList: Set[Node], k: Key) extends FSM[FsmState, Set[Node]] with ActorLogging { - import context.system +object GatherDel: + def props( + client: ActorRef, + t: FiniteDuration, + prefList: Set[Node], + k: Array[Byte], + conf: Conf, + )(using + CanEqual[String, Any], + ): Props = + Props(new GatherDel(client, t, prefList, k, conf)) +end GatherDel - val config = system.settings.config.getConfig("ring").nn - val quorum = config.getIntList("quorum").nn - val W: Int = quorum.get(1).nn +class GatherDel( + client: ActorRef, + t: FiniteDuration, + prefList: Set[Node], + k: Array[Byte], + conf: Conf, +)(using + CanEqual[String, Any], +) extends FSM[FsmState, Set[Node]] with ActorLogging { + val quorum = conf.quorum + val W: Int = quorum.W val local: Address = Cluster(context.system).selfAddress - setTimer("send_by_timeout", "timeout", t) + startSingleTimer("send_by_timeout", "timeout", t) startWith(Collecting, prefList) when(Collecting){ case Event("ok", nodesLeft) => - nodesLeft - addr1(sender) match { + nodesLeft - addr1(sender()) match { case enough if prefList.size - enough.size == W => // W nodes removed key client ! AckSuccess(None) goto(Sent) using(enough) - case less => stay using(less) + case less => stay() using(less) } case Event("timeout", nodesLeft) => - //politic of revert is not needed because on read opperation removed data will be saved again, - //only notify client about failed opperation. - //deleted on other nodes but we don't know about it ? sorry, eventually consistency - client ! AckTimeoutFailed("del", new String(k, "UTF-8")) + /* politic of revert is not needed because on read opperation removed data will be saved again, + * only notify client about failed opperation. + * deleted on other nodes but we don't know about it ? sorry, eventually consistency + */ + client ! AckTimeoutFailed("del", k) stop() } when(Sent){ case Event("ok", data) => - data - addr1(sender) match { - case none if none.isEmpty => stop() - case nodes => stay using(nodes) + data - addr1(sender()) match { + case x if x.isEmpty => stop() + case nodes => stay() using(nodes) } case Event("timeout", _) => stop() @@ -46,7 +65,3 @@ class GatherDel(client: ActorRef, t: FiniteDuration, prefList: Set[Node], k: Key initialize() } - -object GatherDel { - def props(client: ActorRef, t: FiniteDuration, prefList: Set[Node], k: Key): Props = Props(new GatherDel(client, t, prefList, k)) -} diff --git a/kvs/src/main/scala/rng/GatherGet.scala b/kvs/src/main/scala/rng/GatherGet.scala index 3e89b6a9..1764bfcc 100644 --- a/kvs/src/main/scala/rng/GatherGet.scala +++ b/kvs/src/main/scala/rng/GatherGet.scala @@ -1,29 +1,53 @@ package zd.rng import annotation.unused -import akka.actor.* -import zd.rng.data.Data -import zd.rng.model.{StoreGetAck, StorePut, StoreDelete} +import org.apache.pekko.actor.* import scala.concurrent.duration.* import scala.collection.immutable.{HashSet} +import model.{StoreGetAck, StorePut, StoreDelete}, data.Data import GatherGet.DataCollection -class GatherGet(client: ActorRef, t: FiniteDuration, M: Int, @unused R: Int, k: Key) extends FSM[FsmState, DataCollection] with ActorLogging { +object GatherGet: + def props( + client: ActorRef, + t: FiniteDuration, + M: Int, + R: Int, + k: Array[Byte], + )(using + CanEqual[String, Any], + ): Props = + Props(new GatherGet(client, t, M, R, k)) + + type AddrOfData = (Option[Data], Node) + + case class DataCollection(perNode: Vector[AddrOfData], nodes: Int) +end GatherGet + +class GatherGet( + client: ActorRef, + t: FiniteDuration, + M: Int, + @unused R: Int, + k: Array[Byte], +)(using + CanEqual[String, Any], +) extends FSM[FsmState, DataCollection] with ActorLogging: val stores = SelectionMemorize(context.system) startWith(Collecting, DataCollection(Vector.empty, 0)) - setTimer("send_by_timeout", "timeout", t) + startSingleTimer("send_by_timeout", "timeout", t) when(Collecting) { - case Event(StoreGetAck(data), DataCollection(perNode, nodes)) => - val xs = (data -> addr(sender)) +: perNode + case Event(StoreGetAck(key, bucket, data), DataCollection(perNode, nodes)) => + val xs = (data -> addr(sender())) +: perNode nodes + 1 match { - case `M` => //todo; wait for first R same answers? + case `M` => // alternative is to wait for first R same answers cancelTimer("send_by_timeout") val (correct: Option[Data], outdated: HashSet[Node]) = MergeOps.forGatherGet(xs) ;{ // update outdated nodes with correct data - val msg = correct.fold[Any](StoreDelete(k))(d => StorePut(d)) + val msg = correct.fold[Any](StoreDelete(k))(d => StorePut(key, bucket, d)) outdated foreach { node => stores.get(node, "ring_write_store").fold(_ ! msg, _ ! msg) } @@ -31,19 +55,11 @@ class GatherGet(client: ActorRef, t: FiniteDuration, M: Int, @unused R: Int, k: client ! AckSuccess(correct.map(_.value)) stop() case ns => - stay using DataCollection(xs, ns) + stay() using DataCollection(xs, ns) } case Event("timeout", _) => - client ! AckTimeoutFailed("get", new String(k, "UTF-8")) + client ! AckTimeoutFailed("get", k) stop() } -} - -object GatherGet { - def props(client: ActorRef, t: FiniteDuration, M: Int, R: Int, k: Key): Props = Props(new GatherGet(client, t, M, R, k)) - - type AddrOfData = (Option[Data], Node) - - final case class DataCollection(perNode: Vector[AddrOfData], nodes: Int) -} +end GatherGet diff --git a/kvs/src/main/scala/rng/GatherPut.scala b/kvs/src/main/scala/rng/GatherPut.scala index 1e7e44e3..84429623 100644 --- a/kvs/src/main/scala/rng/GatherPut.scala +++ b/kvs/src/main/scala/rng/GatherPut.scala @@ -1,55 +1,44 @@ package zd.rng -import akka.actor.{ActorLogging, ActorRef, FSM, Props, RootActorPath} -import zd.rng.data.Data -import zd.rng.model.{StoreGetAck, StorePut} +import org.apache.pekko.actor.{ActorLogging, ActorRef, FSM, Props, RootActorPath} import scala.concurrent.duration.* -import java.util.Arrays -final class PutInfo( - val key: Key - , val v: Value - , val N: Int - , val W: Int - , val bucket: Bucket - , val localAdr: Node - , val nodes: Set[Node] - ) { - override def equals(other: Any): Boolean = other match { - case that: PutInfo => - Arrays.equals(key, that.key) && - Arrays.equals(v, that.v) && - N == that.N && - W == that.W && - bucket == that.bucket && - localAdr == that.localAdr && - nodes == that.nodes - case _ => false - } - override def hashCode(): Int = { - val state = Seq[Any](key, v, N, W, bucket, localAdr, nodes) - state.map(_.hashCode()).foldLeft(0)((a, b) => 31 * a + b) - } - override def toString = s"PutInfo(key=$key, v=$v, N=$N, W=$W, bucket=$bucket, localAdr=$localAdr, nodes=$nodes)" -} +import data.Data, model.{StoreGetAck, StorePut} -object PutInfo { - def apply(key: Key, v: Value, N: Int, W: Int, bucket: Bucket, localAdr: Node, nodes: Set[Node]): PutInfo = { - new PutInfo(key=key, v=v, N=N, W=W, bucket=bucket, localAdr=localAdr, nodes=nodes) - } -} +case class PutInfo( + key: Array[Byte] +, v: Array[Byte] +, N: Int +, W: Int +, bucket: Bucket +, localAdr: Node +, nodes: Set[Node] +) -object GatherPut { - def props(client: ActorRef, t: FiniteDuration, putInfo: PutInfo): Props = Props(new GatherPut(client, t, putInfo)) -} +object GatherPut: + def props( + client: ActorRef, + t: FiniteDuration, + putInfo: PutInfo, + )(using + CanEqual[String, Any], + ): Props = + Props(new GatherPut(client, t, putInfo)) +end GatherPut -class GatherPut(client: ActorRef, t: FiniteDuration, putInfo: PutInfo) extends FSM[FsmState, Int] with ActorLogging { +class GatherPut( + client: ActorRef, + t: FiniteDuration, + putInfo: PutInfo, +)(using + CanEqual[String, Any], +) extends FSM[FsmState, Int] with ActorLogging: startWith(Collecting, 0) - setTimer("send_by_timeout", "timeout", t) + startSingleTimer("send_by_timeout", "timeout", t) when(Collecting){ - case Event(StoreGetAck(data), _) => + case Event(StoreGetAck(key, bucket, data), _) => val vc = if (data.size == 1) { data.head.vc } else if (data.size > 1) { @@ -57,8 +46,8 @@ class GatherPut(client: ActorRef, t: FiniteDuration, putInfo: PutInfo) extends F } else { emptyVC } - val updatedData = Data(putInfo.key, putInfo.bucket, now_ms(), vc.:+(putInfo.localAdr.toString), putInfo.v) - mapInPut(putInfo.nodes, updatedData) + val updatedData = Data(now_ms(), vc.:+(putInfo.localAdr.toString), putInfo.v) + mapInPut(putInfo.nodes, key=key, bucket=bucket, updatedData) stay() case Event("ok", n) => @@ -70,11 +59,11 @@ class GatherPut(client: ActorRef, t: FiniteDuration, putInfo: PutInfo) extends F client ! AckSuccess(None) goto (Sent) using n1 } else { - stay using n1 + stay() using n1 } case Event("timeout", _) => - client ! AckTimeoutFailed("put", new String(putInfo.key, "UTF-8")) + client ! AckTimeoutFailed("put", putInfo.key) stop() } @@ -83,15 +72,15 @@ class GatherPut(client: ActorRef, t: FiniteDuration, putInfo: PutInfo) extends F case Event("ok", n) => val n1 = n + 1 if (n1 == putInfo.N) stop() - else stay using n1 + else stay() using n1 case Event("timeout", _) => stop() } - def mapInPut(nodes: Set[Node], d: Data) = { + def mapInPut(nodes: Set[Node], key: Array[Byte], bucket: Int, d: Data) = { val storeList = nodes.map(n => RootActorPath(n) / "user" / "ring_write_store") - storeList.foreach(ref => context.system.actorSelection(ref).tell(StorePut(d), self)) + storeList.foreach(ref => context.system.actorSelection(ref).tell(StorePut(key=key, bucket=bucket, d), self)) } initialize() -} +end GatherPut diff --git a/kvs/src/main/scala/rng/Hash.scala b/kvs/src/main/scala/rng/Hash.scala index e9f154dd..a5823583 100644 --- a/kvs/src/main/scala/rng/Hash.scala +++ b/kvs/src/main/scala/rng/Hash.scala @@ -1,103 +1,19 @@ package zd.rng -import akka.actor.* -import akka.cluster.ClusterEvent.* -import akka.cluster.{Member, Cluster} -import com.typesafe.config.Config -import zd.rng.model.{StoreDelete, StoreGet, QuorumState, ChangeState} -import zd.rng.model.QuorumState.{QuorumStateUnsatisfied, QuorumStateReadonly, QuorumStateEffective} +import org.apache.pekko.actor.* +import org.apache.pekko.cluster.ClusterEvent.* +import org.apache.pekko.cluster.{Member, Cluster} import scala.collection.immutable.{SortedMap, SortedSet} -import scala.concurrent.duration.* -import java.util.Arrays -import leveldbjnr.* +import proto.* +import zd.rng.model.*, QuorumState.* -class Put(val k: Key, val v: Value) { - override def equals(other: Any): Boolean = other match { - case that: Put => - Arrays.equals(k, that.k) && - Arrays.equals(v, that.v) - case _ => false - } - override def hashCode(): Int = { - val state = Seq(k, v) - state.map(_.hashCode()).foldLeft(0)((a, b) => 31 * a + b) - } - override def toString = s"Put(k=$k, v=$v)" -} - -object Put { - def apply(k: Key, v: Value): Put = { - new Put(k=k, v=v) - } -} - -class Get(val k: Key) { - override def equals(other: Any): Boolean = other match { - case that: Get => - Arrays.equals(k, that.k) - case _ => false - } - override def hashCode(): Int = { - val state = Seq(k) - state.map(_.hashCode()).foldLeft(0)((a, b) => 31 * a + b) - } - override def toString = s"Get(k=$k)" -} - -object Get { - def apply(k: Key): Get = { - new Get(k=k) - } -} - -class Delete(val k: Key) { - override def equals(other: Any): Boolean = other match { - case that: Delete => - Arrays.equals(k, that.k) - case _ => false - } - override def hashCode(): Int = { - val state = Seq(k) - state.map(_.hashCode()).foldLeft(0)((a, b) => 31 * a + b) - } - override def toString = s"Delete(k=$k)" -} - -object Delete { - def apply(k: Key): Delete = { - new Delete(k=k) - } -} - -case class Save(path: String) -case class Iterate(f: (Key, Value) => Unit) -case class Load(path: String) -case class Iter(keyPrefix: Array[Byte]) -case class IterRes(keys: List[String]) +case class Put(k: Array[Byte], v: Array[Byte]) +case class Get(k: Array[Byte]) +case class Delete(k: Array[Byte]) case object RestoreState -case object Ready - -class InternalPut(val k: Key, val v: Value) { - override def equals(other: Any): Boolean = other match { - case that: InternalPut => - Arrays.equals(k, that.k) && - Arrays.equals(v, that.v) - case _ => false - } - override def hashCode(): Int = { - val state = Seq(k, v) - state.map(_.hashCode()).foldLeft(0)((a, b) => 31 * a + b) - } - override def toString = s"InternalPut(k=$k, v=$v)" -} - -object InternalPut { - def apply(k: Key, v: Value): InternalPut = { - new InternalPut(k=k, v=v) - } -} +case class InternalPut(k: Array[Byte], v: Array[Byte]) case class HashRngData( nodes: Set[Node], @@ -106,34 +22,48 @@ case class HashRngData( replication: Option[ActorRef], ) +case class PortVNode( + @N(1) port: String +, @N(2) vnode: Int +) + object Hash { - def props(leveldb: LevelDb): Props = Props(new Hash(leveldb)) + def props( + conf: Conf, + hashing: Hashing, + )(using + CanEqual[Node, Node], + CanEqual[QuorumStateUnsatisfied.type, QuorumState], + CanEqual[ReplBucketUpToDate.type, Any], + CanEqual[RestoreState.type, Any], + CanEqual[String, Any], + ): Props = + Props(new Hash(conf, hashing)) } -// TODO available/not avaiable nodes -class Hash(leveldb: LevelDb) extends FSM[QuorumState, HashRngData] with ActorLogging { +class Hash( + conf: Conf, + hashing: Hashing, +)(using + CanEqual[Node, Node], + CanEqual[QuorumStateUnsatisfied.type, QuorumState], + CanEqual[ReplBucketUpToDate.type, Any], + CanEqual[RestoreState.type, Any], + CanEqual[String, Any], +) extends FSM[QuorumState, HashRngData] with ActorLogging { import context.system - val config: Config = system.settings.config.getConfig("ring").nn - - val quorum = config.getIntList("quorum").nn - val N: Int = quorum.get(0).nn - val W: Int = quorum.get(1).nn - val R: Int = quorum.get(2).nn - val gatherTimeout = Duration.fromNanos(config.getDuration("gather-timeout").nn.toNanos) - val vNodesNum = config.getInt("virtual-nodes") - val bucketsNum = config.getInt("buckets") + val quorum = conf.quorum + val N = quorum.N + val W = quorum.W + val R = quorum.R + val gatherTimeout = conf.gatherTimeout + val vNodesNum = conf.virtualNodes + val bucketsNum = conf.buckets val cluster = Cluster(system) val local: Node = cluster.selfAddress - val hashing = HashingExtension(system) val actorsMem = SelectionMemorize(system) - log.info(s"Ring configuration:".blue) - log.info(s"ring.quorum.N = ${N}".blue) - log.info(s"ring.quorum.W = ${W}".blue) - log.info(s"ring.quorum.R = ${R}".blue) - log.info(s"ring.leveldb.dir = ${config.getString("leveldb.dir")}".blue) - startWith(QuorumStateUnsatisfied, HashRngData(Set.empty[Node], SortedMap.empty[Bucket, PreferenceList], SortedMap.empty[Bucket, Node], replication=None)) override def preStart() = { @@ -144,37 +74,28 @@ class Hash(leveldb: LevelDb) extends FSM[QuorumState, HashRngData] with ActorLog when(QuorumStateUnsatisfied){ case Event(_: Get, _) => - sender ! AckQuorumFailed("QuorumStateUnsatisfied") + sender() ! AckQuorumFailed("QuorumStateUnsatisfied") stay() case Event(_: Put, _) => - sender ! AckQuorumFailed("QuorumStateUnsatisfied") + sender() ! AckQuorumFailed("QuorumStateUnsatisfied") stay() case Event(_: Delete, _) => - sender ! AckQuorumFailed("QuorumStateUnsatisfied") - stay() - case Event(Save(_), _) => - sender ! AckQuorumFailed("QuorumStateUnsatisfied") - stay() - case Event(Iterate(_), _) => - sender ! AckQuorumFailed("QuorumStateUnsatisfied") - stay() - case Event(Load(_), _) => - sender ! AckQuorumFailed("QuorumStateUnsatisfied") - stay() - case Event(Iter(_), _) => - sender ! AckQuorumFailed("QuorumStateUnsatisfied") + sender() ! AckQuorumFailed("QuorumStateUnsatisfied") stay() case Event(RestoreState, _) => log.warning("Don't know how to restore state when quorum is unsatisfied") stay() - case Event(Ready, _) => - sender ! false - stay() } when(QuorumStateReadonly){ case Event(x: Get, data) => - doGet(x.k, sender, data) + doGet(x.k, sender(), data) + stay() + case Event(_: Put, _) => + sender() ! AckQuorumFailed("QuorumStateReadonly") + stay() + case Event(_: Delete, _) => + sender() ! AckQuorumFailed("QuorumStateReadonly") stay() case Event(RestoreState, data) => val s = state(data.nodes.size) @@ -183,91 +104,24 @@ class Hash(leveldb: LevelDb) extends FSM[QuorumState, HashRngData] with ActorLog _ ! ChangeState(s), )) goto(s) - case Event(Ready, _) => - sender ! false - stay() - - case Event(_: Put, _) => - sender ! AckQuorumFailed("QuorumStateReadonly") - stay() - case Event(_: Delete, _) => - sender ! AckQuorumFailed("QuorumStateReadonly") - stay() - case Event(Save(_), _) => - sender ! AckQuorumFailed("QuorumStateReadonly") - stay() - case Event(Iterate(_), _) => - sender ! AckQuorumFailed("QuorumStateReadonly") - stay() - case Event(Load(_), _) => - sender ! AckQuorumFailed("QuorumStateReadonly") - stay() - case Event(Iter(_), _) => - sender ! AckQuorumFailed("QuorumStateReadonly") - stay() } when(QuorumStateEffective){ - case Event(Ready, _) => - sender ! true - stay() - case Event(x: Get, data) => - doGet(x.k, sender, data) + doGet(x.k, sender(), data) stay() case Event(x: Put, data) => - doPut(x.k, x.v, sender, data) + doPut(x.k, x.v, sender(), data) stay() case Event(x: Delete, data) => - doDelete(x.k, sender, data) - stay() - - case Event(Save(path), data) => - data.nodes.foreach(n => actorsMem.get(n, "ring_hash").fold( - _ ! ChangeState(QuorumStateReadonly), - _ ! ChangeState(QuorumStateReadonly), - )) - val x = system.actorOf(DumpProcessor.props(), s"dump_wrkr-${now_ms()}") - x.forward(DumpProcessor.Save(data.buckets, path)) - goto(QuorumStateReadonly) - case Event(Iterate(f), data) => - data.nodes.foreach(n => actorsMem.get(n, "ring_hash").fold( - _ ! ChangeState(QuorumStateReadonly), - _ ! ChangeState(QuorumStateReadonly), - )) - val x = system.actorOf(DumpProcessor.props(), s"dump_wrkr-${now_ms()}") - x.forward(DumpProcessor.Iterate(data.buckets, f)) - goto(QuorumStateReadonly) - case Event(Load(path), data) => - data.nodes.foreach(n => actorsMem.get(n, "ring_hash").fold( - _ ! ChangeState(QuorumStateReadonly), - _ ! ChangeState(QuorumStateReadonly), - )) - val x = system.actorOf(DumpProcessor.props(), s"load_wrkr-${now_ms()}") - x.forward(DumpProcessor.Load(path)) - goto(QuorumStateReadonly) - case Event(Iter(keyPrefix), data) => - val it = leveldb.iter() - it.seek_to_first() - var keys = collection.mutable.ListBuffer.empty[String] - while (it.valid()) { - val key = it.key() - val idx = key.indexOfSlice(keyPrefix) - if (idx >= 0) { - val slice = key.slice(idx, key.length) - keys += new String(slice, "utf8") - } - it.next() - } - it.close() - sender ! IterRes(keys.toList) + doDelete(x.k, sender(), data) stay() case Event(RestoreState, _) => log.info("State is already OK") stay() } - /* COMMON FOR ALL STATES*/ + /* common for all states */ whenUnhandled { case Event(MemberUp(member), data) => val next = joinNodeToRing(member, data) @@ -275,22 +129,19 @@ class Hash(leveldb: LevelDb) extends FSM[QuorumState, HashRngData] with ActorLog case Event(MemberRemoved(member, prevState), data) => val next = removeNodeFromRing(member, data) goto(next._1) using next._2 - case Event(Ready, data) => - sender ! false - stay() case Event(ChangeState(s), data) => state(data.nodes.size) match { case QuorumStateUnsatisfied => stay() case _ => goto(s) } case Event(x: InternalPut, data) => - doPut(x.k, x.v, sender, data) + doPut(x.k, x.v, sender(), data) stay() } - def doDelete(k: Key, client: ActorRef, data: HashRngData): Unit = { + def doDelete(k: Array[Byte], client: ActorRef, data: HashRngData): Unit = { val nodes = nodesForKey(k, data) - val gather = system.actorOf(GatherDel.props(client, gatherTimeout, nodes, k)) + val gather = system.actorOf(GatherDel.props(client, gatherTimeout, nodes, k, conf)) val stores = nodes.map{actorsMem.get(_, "ring_write_store")} stores.foreach(_.fold( _.tell(StoreDelete(k), gather), @@ -298,11 +149,11 @@ class Hash(leveldb: LevelDb) extends FSM[QuorumState, HashRngData] with ActorLog )) } - def doPut(k: Key, v: Value, client: ActorRef, data: HashRngData): Unit = { + def doPut(k: Array[Byte], v: Array[Byte], client: ActorRef, data: HashRngData): Unit = { val nodes = availableNodesFrom(nodesForKey(k, data)) val M = nodes.size if (M >= W) { - val bucket = hashing `findBucket` k + val bucket = hashing.findBucket(k) val info = PutInfo(k, v, N, W, bucket, local, data.nodes) val gather = system.actorOf(GatherPut.props(client, gatherTimeout, info)) val node = if (nodes contains local) local else nodes.head @@ -315,7 +166,7 @@ class Hash(leveldb: LevelDb) extends FSM[QuorumState, HashRngData] with ActorLog } } - def doGet(k: Key, client: ActorRef, data: HashRngData): Unit = { + def doGet(k: Array[Byte], client: ActorRef, data: HashRngData): Unit = { val nodes = availableNodesFrom(nodesForKey(k, data)) val M = nodes.size if (M >= R) { @@ -336,9 +187,9 @@ class Hash(leveldb: LevelDb) extends FSM[QuorumState, HashRngData] with ActorLog } def joinNodeToRing(member: Member, data: HashRngData): (QuorumState, HashRngData) = { - val newvNodes: Map[VNode, Node] = (1 to vNodesNum).view.map(vnode => { - hashing.hash(stob(member.address.hostPort).++(itob(vnode))) -> member.address - }).to(Map) + val newvNodes: Map[VNode, Node] = (1 to vNodesNum).view.map(vnode => + hashing.hash(encode(PortVNode(port=member.address.hostPort, vnode=vnode))) -> member.address + ).to(Map) val updvNodes = data.vNodes ++ newvNodes val nodes = data.nodes + member.address val moved = bucketsToUpdate(bucketsNum - 1, Math.min(nodes.size,N), updvNodes, data.buckets) @@ -351,7 +202,9 @@ class Hash(leveldb: LevelDb) extends FSM[QuorumState, HashRngData] with ActorLog def removeNodeFromRing(member: Member, data: HashRngData): (QuorumState, HashRngData) = { log.info(s"Removing ${member} from ring") - val unusedvNodes: Set[VNode] = (1 to vNodesNum).view.map(vnode => hashing.hash(stob(member.address.hostPort).++(itob(vnode)))).to(Set) + val unusedvNodes: Set[VNode] = (1 to vNodesNum).view.map(vnode => + hashing.hash(encode(PortVNode(port=member.address.hostPort, vnode=vnode))) + ).to(Set) val updvNodes = data.vNodes.filterNot(vn => unusedvNodes.contains(vn._1)) val nodes = data.nodes - member.address val moved = bucketsToUpdate(bucketsNum - 1, Math.min(nodes.size,N), updvNodes, data.buckets) @@ -362,6 +215,8 @@ class Hash(leveldb: LevelDb) extends FSM[QuorumState, HashRngData] with ActorLog state(updData.nodes.size) -> updData } + def itob(v: Int): Array[Byte] = Array[Byte]((v >> 24).toByte, (v >> 16).toByte, (v >> 8).toByte, v.toByte) + def syncNodes(_buckets: SortedMap[Bucket,PreferenceList]): ActorRef = { val empty = SortedMap.empty[Bucket,PreferenceList] val buckets = _buckets.foldLeft(empty){ case (acc, (b, prefList)) => @@ -372,7 +227,7 @@ class Hash(leveldb: LevelDb) extends FSM[QuorumState, HashRngData] with ActorLog } } else acc } - val replication = context.actorOf(ReplicationSupervisor.props(buckets), s"repl-${now_ms()}") + val replication = context.actorOf(ReplicationSupervisor.props(buckets, conf), s"repl-${now_ms()}") replication ! "go-repl" replication } @@ -383,25 +238,19 @@ class Hash(leveldb: LevelDb) extends FSM[QuorumState, HashRngData] with ActorLog case _ => QuorumStateReadonly } - def bucketsToUpdate( - maxBucket: Bucket - , nodesNumber: Int - , vNodes: SortedMap[Bucket, Node] - , buckets: SortedMap[Bucket, PreferenceList] - ): SortedMap[Bucket, PreferenceList] = - (0 to maxBucket).foldLeft(SortedMap.empty[Bucket, PreferenceList])( - (acc, b) => { - val prefList = hashing.findNodes(b * hashing.bucketRange, vNodes, nodesNumber) - buckets.get(b) match { - case None => acc + (b -> prefList) - case Some(`prefList`) => acc - case _ => acc + (b -> prefList) - } - } - ) + def bucketsToUpdate(maxBucket: Bucket, nodesNumber: Int, vNodes: SortedMap[Bucket, Node], buckets: SortedMap[Bucket, PreferenceList]): SortedMap[Bucket, PreferenceList] = { + (0 to maxBucket).foldLeft(SortedMap.empty[Bucket, PreferenceList])((acc, b) => { + val prefList = hashing.findNodes(b * hashing.bucketRange, vNodes, nodesNumber) + buckets.get(b) match + case None => acc + (b -> prefList) + case Some(`prefList`) => acc + case _ => acc + (b -> prefList) + }) + } implicit val ord: Ordering[Node] = Ordering.by[Node, String](n => n.hostPort) - def nodesForKey(k: Key, data: HashRngData): PreferenceList = data.buckets.get(hashing.findBucket(k)) match { + + def nodesForKey(k: Array[Byte], data: HashRngData): PreferenceList = data.buckets.get(hashing.findBucket(k)) match { case None => SortedSet.empty[Node] case Some(nods) => nods } diff --git a/kvs/src/main/scala/rng/HashingExtension.scala b/kvs/src/main/scala/rng/Hashing.scala similarity index 55% rename from kvs/src/main/scala/rng/HashingExtension.scala rename to kvs/src/main/scala/rng/Hashing.scala index 0f0467c8..98342d4b 100644 --- a/kvs/src/main/scala/rng/HashingExtension.scala +++ b/kvs/src/main/scala/rng/Hashing.scala @@ -1,27 +1,26 @@ package zd.rng -import akka.actor.* -import com.typesafe.config.Config +import org.apache.pekko.actor.* import java.security.MessageDigest import scala.annotation.tailrec -import scala.collection.{SortedMap} +import scala.collection.SortedMap -class HashingImpl(config: Config) extends Extension { - val hashLen = config.getInt("hash-length") - val bucketsNum = config.getInt("buckets") +class Hashing(conf: Conf) { + val hashLen = conf.hashLength + val bucketsNum = conf.buckets val bucketRange = (math.pow(2, hashLen.toDouble) / bucketsNum).ceil.toInt def hash(word: Array[Byte]): Int = { - implicit val digester: MessageDigest = MessageDigest.getInstance("MD5").nn - digester `update` word - val digest: Array[Byte] = digester.digest.nn + val digester = MessageDigest.getInstance("MD5").nn + digester.update(word) + val digest = digester.digest.nn (0 to hashLen / 8 - 1).foldLeft(0)((acc, i) => acc | ((digest(i) & 0xff) << (8 * (hashLen / 8 - 1 - i))) ) //take first 4 byte } - def findBucket(key: Key): Bucket = (hash(key) / bucketRange).abs + def findBucket(key: Array[Byte]): Bucket = (hash(key) / bucketRange).abs def findNodes(hashKey: Int, vNodes: SortedMap[Bucket, Address], nodesNumber: Int): PreferenceList = { @tailrec @@ -39,11 +38,3 @@ class HashingImpl(config: Config) extends Extension { findBucketNodes(hashKey, Set.empty[Node]) } } - -object HashingExtension extends ExtensionId[HashingImpl] with ExtensionIdProvider { - - override def createExtension(system: ExtendedActorSystem): HashingImpl = - new HashingImpl(system.settings.config.getConfig("ring").nn) - - override def lookup(): HashingExtension.type = HashingExtension -} diff --git a/kvs/src/main/scala/rng/Msg.scala b/kvs/src/main/scala/rng/Msg.scala index 93750d3d..26129222 100644 --- a/kvs/src/main/scala/rng/Msg.scala +++ b/kvs/src/main/scala/rng/Msg.scala @@ -1,145 +1,71 @@ package zd.rng package model -import proto.* +import proto.N + import zd.rng.data.* -import java.util.Arrays sealed trait Msg -@N(1) final case class ChangeState +@N(1) case class ChangeState ( @N(1) s: QuorumState ) extends Msg -@N(2) final case class DumpBucketData +@N(2) case class DumpBucketData ( @N(1) b: Int - , @N(2) items: Vector[Data] + , @N(2) items: Vector[KeyBucketData] ) extends Msg -@N(3) final class DumpEn - ( @N(1) val k: Array[Byte] - , @N(2) val v: Array[Byte] - , @N(3) val nextKey: Array[Byte] - ) extends Msg { - override def equals(other: Any): Boolean = other match { - case that: DumpEn => - Arrays.equals(k, that.k) && - Arrays.equals(v, that.v) && - Arrays.equals(nextKey, that.nextKey) - case _ => false - } - override def hashCode(): Int = { - val state = Seq(k, v, nextKey) - state.map(_.hashCode()).foldLeft(0)((a, b) => 31 * a + b) - } - override def toString = s"DumpEn(k=$k, v=$v, nextKey=$nextKey)" -} - -object DumpEn { - def apply(k: Array[Byte], v: Array[Byte], nextKey: Array[Byte]): DumpEn = { - new DumpEn(k=k, v=v, nextKey=nextKey) - } -} - -@N(4) final class DumpGet - ( @N(1) val k: Array[Byte] - ) extends Msg { - override def equals(other: Any): Boolean = other match { - case that: DumpGet => - Arrays.equals(k, that.k) - case _ => false - } - override def hashCode(): Int = { - val state = Seq(k) - state.map(_.hashCode()).foldLeft(0)((a, b) => 31 * a + b) - } - override def toString = s"DumpGet(k=$k)" -} - -object DumpGet { - def apply(k: Array[Byte]): DumpGet = { - new DumpGet(k=k) - } -} - -@N(5) final case class DumpGetBucketData +@N(5) case class DumpGetBucketData ( @N(1) b: Int ) extends Msg -@N(7) final case class ReplBucketPut +@N(7) case class ReplBucketPut ( @N(1) b: Int , @N(2) bucketVc: VectorClock - , @N(3) items: Vector[Data] + , @N(3) items: Vector[KeyBucketData] ) extends Msg @N(8) case object ReplBucketUpToDate extends Msg -@N(9) final case class ReplGetBucketIfNew +@N(9) case class ReplGetBucketIfNew ( @N(1) b: Int , @N(2) vc: VectorClock ) extends Msg -@N(10) final case class ReplNewerBucketData +@N(10) case class ReplNewerBucketData ( @N(1) vc: VectorClock - , @N(2) items: Vector[Data] + , @N(2) items: Vector[KeyBucketData] ) extends Msg -final case class ReplBucketsVc +case class ReplBucketsVc ( @N(1) bvcs: Map[Int, VectorClock] ) -@N(11) final class StoreDelete - ( @N(1) val key: Array[Byte] - ) extends Msg { - override def equals(other: Any): Boolean = other match { - case that: StoreDelete => - Arrays.equals(key, that.key) - case _ => false - } - override def hashCode(): Int = { - val state = Seq(key) - state.map(_.hashCode()).foldLeft(0)((a, b) => 31 * a + b) - } - override def toString = s"StoreDelete(key=$key)" -} - -object StoreDelete { - def apply(key: Array[Byte]): StoreDelete = { - new StoreDelete(key=key) - } -} - -@N(12) final class StoreGet - ( @N(1) val key: Array[Byte] - ) extends Msg { - override def equals(other: Any): Boolean = other match { - case that: StoreGet => - Arrays.equals(key, that.key) - case _ => false - } - override def hashCode(): Int = { - val state = Seq(key) - state.map(_.hashCode()).foldLeft(0)((a, b) => 31 * a + b) - } - override def toString = s"StoreGet(key=$key)" -} +@N(11) case class StoreDelete + ( @N(1) key: Array[Byte] + ) extends Msg -object StoreGet { - def apply(key: Array[Byte]): StoreGet = { - new StoreGet(key=key) - } -} +@N(12) case class StoreGet + ( @N(1) key: Array[Byte] + ) extends Msg -@N(13) final case class StoreGetAck - ( @N(1) data: Option[Data] +@N(13) case class StoreGetAck + ( @N(1) key: Array[Byte] + , @N(2) bucket: Int + , @N(3) data: Option[Data] ) extends Msg -@N(14) final case class StorePut - ( @N(1) data: Data +@N(14) case class StorePut + ( @N(1) key: Array[Byte] + , @N(2) bucket: Int + , @N(3) data: Data ) extends Msg -final case class ReplGetBucketsVc - ( @N(1) bs: Vector[Int] +case class KeyBucketData + ( @N(1) key: Array[Byte] + , @N(2) bucket: Int + , @N(3) data: Data ) sealed trait QuorumState diff --git a/kvs/src/main/scala/rng/Replication.scala b/kvs/src/main/scala/rng/Replication.scala index 82aae4ba..894aac53 100644 --- a/kvs/src/main/scala/rng/Replication.scala +++ b/kvs/src/main/scala/rng/Replication.scala @@ -1,24 +1,35 @@ package zd.rng -import akka.actor.{ActorLogging, Props, FSM} -import akka.cluster.{Cluster} -import zd.rng.data.{Data} -import zd.rng.model.{ReplBucketPut, ReplGetBucketsVc, ReplBucketsVc, ReplGetBucketIfNew, ReplBucketUpToDate, ReplNewerBucketData} -import scala.collection.immutable.{SortedMap} -import scala.concurrent.duration.{Duration} -import zd.rng.ReplicationSupervisor.{State} +import org.apache.pekko.actor.{ActorLogging, Props, FSM} +import org.apache.pekko.cluster.Cluster +import scala.collection.immutable.SortedMap +import zd.rng.model.* +import zd.rng.ReplicationSupervisor.{State, ReplGetBucketsVc} +import zd.rng.ReplicationWorker.{ReplState} object ReplicationSupervisor { - final case class Progress(done: Int, total: Int, step: Int) - final case class State(buckets: SortedMap[Bucket, PreferenceList], bvcs: Map[Bucket, VectorClock], progress: Progress) - - def props(buckets: SortedMap[Bucket, PreferenceList]): Props = { + case class Progress(done: Int, total: Int, step: Int) + case class State(buckets: SortedMap[Bucket, PreferenceList], bvcs: Map[Bucket, VectorClock], progress: Progress) + case class ReplGetBucketsVc(bs: Vector[Int]) + + def props( + buckets: SortedMap[Bucket, PreferenceList] + , conf: Conf + )(using + CanEqual[ReplBucketUpToDate.type, Any] + , CanEqual[String, Any] + ): Props = val len = buckets.size - Props(new ReplicationSupervisor(State(buckets, bvcs=Map.empty, Progress(done=0, total=len, step=len/4)))) - } + Props(ReplicationSupervisor(State(buckets, bvcs=Map.empty, Progress(done=0, total=len, step=len/4)), conf)) } -class ReplicationSupervisor(initialState: State) extends FSM[FsmState, State] with ActorLogging { +class ReplicationSupervisor( + initialState: State +, conf: Conf +)(using + CanEqual[ReplBucketUpToDate.type, Any], + CanEqual[String, Any], +) extends FSM[FsmState, State] with ActorLogging: val actorMem = SelectionMemorize(context.system) val local: Node = Cluster(context.system).selfAddress @@ -57,7 +68,7 @@ class ReplicationSupervisor(initialState: State) extends FSM[FsmState, State] wi } def getBucketIfNew(b: Bucket, prefList: PreferenceList, bvc: Option[VectorClock]): Unit = { - val worker = context.actorOf(ReplicationWorker.props(b, prefList, bvc.getOrElse(emptyVC))) + val worker = context.actorOf(ReplicationWorker.props(b, prefList, bvc.getOrElse(emptyVC), conf)) worker ! "start" } @@ -73,26 +84,45 @@ class ReplicationSupervisor(initialState: State) extends FSM[FsmState, State] wi val (b, prefList) = remaining.head // safe val bvc = state.bvcs.get(b) getBucketIfNew(b, prefList, bvc) - stay using state.copy(buckets=remaining, progress=pr.copy(done=pr.done+1)) + stay() using state.copy(buckets=remaining, progress=pr.copy(done=pr.done+1)) } } -} - -import ReplicationWorker.{ReplState} - -object ReplicationWorker { - final case class ReplState(prefList: PreferenceList, info: Vector[Vector[Data]], vc: VectorClock) - - def props(b: Bucket, prefList: PreferenceList, vc: VectorClock): Props = Props(new ReplicationWorker(b, prefList, vc)) -} - -class ReplicationWorker(b: Bucket, _prefList: PreferenceList, _vc: VectorClock) extends FSM[FsmState, ReplState] with ActorLogging { +end ReplicationSupervisor + +object ReplicationWorker: + case class ReplState( + prefList: PreferenceList + , info: Vector[Vector[KeyBucketData]] + , vc: VectorClock + ) + + def props( + b: Bucket + , prefList: PreferenceList + , vc: VectorClock + , conf: Conf + )(using + CanEqual[ReplBucketUpToDate.type, Any] + , CanEqual[String, Any] + ): Props = + Props(new ReplicationWorker(b, prefList, vc, conf)) +end ReplicationWorker + +class ReplicationWorker( + b: Bucket +, _prefList: PreferenceList +, _vc: VectorClock +, conf: Conf +)(using + CanEqual[ReplBucketUpToDate.type, Any] +, CanEqual[String, Any] +) extends FSM[FsmState, ReplState] with ActorLogging: import context.system val cluster = Cluster(system) val local = cluster.selfAddress val actorMem = SelectionMemorize(system) - setTimer("send_by_timeout", "timeout", Duration.fromNanos(context.system.settings.config.getDuration("ring.repl-timeout").nn.toNanos), repeat=true) + startTimerWithFixedDelay("send_by_timeout", "timeout", conf.replTimeout) startWith(Collecting, ReplState(_prefList, info=Vector.empty, _vc)) when(Collecting){ @@ -102,12 +132,11 @@ class ReplicationWorker(b: Bucket, _prefList: PreferenceList, _vc: VectorClock) _ ! ReplGetBucketIfNew(b, _vc), _ ! ReplGetBucketIfNew(b, _vc), )) - stay using state + stay() using state - case Event(ReplNewerBucketData(vc, _items), state) => - val items = _items.toVector - if (state.prefList contains addr(sender)) { - state.prefList - addr(sender) match { + case Event(ReplNewerBucketData(vc, items), state) => + if (state.prefList contains addr(sender())) { + state.prefList - addr(sender()) match { case empty if empty.isEmpty => val all = state.info.foldLeft(items)((acc, list) => list ++ acc) val merged = MergeOps.forRepl(all) @@ -120,7 +149,7 @@ class ReplicationWorker(b: Bucket, _prefList: PreferenceList, _vc: VectorClock) context.parent ! b stop() case nodes => - stay using state.copy( + stay() using state.copy( prefList = nodes, info = items +: state.info, vc = state.vc merge vc, @@ -128,18 +157,18 @@ class ReplicationWorker(b: Bucket, _prefList: PreferenceList, _vc: VectorClock) } } else { // after restart it is possible to receive multiple answers from same node - stay using state + stay() using state } case Event(ReplBucketUpToDate, state) => self forward ReplNewerBucketData(vc=emptyVC, items=Vector.empty) - stay using state + stay() using state case Event("timeout", state) => log.info(s"no answer. repeat with=${state.prefList}") self ! "start" - stay using state + stay() using state } initialize() -} +end ReplicationWorker diff --git a/kvs/src/main/scala/rng/SelectionMemorize.scala b/kvs/src/main/scala/rng/SelectionMemorize.scala index e8792c30..11d5be8e 100644 --- a/kvs/src/main/scala/rng/SelectionMemorize.scala +++ b/kvs/src/main/scala/rng/SelectionMemorize.scala @@ -1,6 +1,6 @@ package zd.rng -import akka.actor.* +import org.apache.pekko.actor.* case class Watch(a: ActorRef) case class Select(node: Node, path: String) @@ -10,7 +10,7 @@ object SelectionMemorize extends ExtensionId[SelectionMemorize] with ExtensionId override def createExtension(system: ExtendedActorSystem): SelectionMemorize = new SelectionMemorize(system) - override def lookup(): SelectionMemorize.type = SelectionMemorize + override def lookup: SelectionMemorize.type = SelectionMemorize } trait ActorRefStorage { diff --git a/kvs/src/main/scala/rng/StoreReadonly.scala b/kvs/src/main/scala/rng/StoreReadonly.scala index 2541b6e6..a499785d 100644 --- a/kvs/src/main/scala/rng/StoreReadonly.scala +++ b/kvs/src/main/scala/rng/StoreReadonly.scala @@ -1,97 +1,61 @@ package zd.rng package store -import akka.actor.{Actor, ActorLogging, Props} -import akka.cluster.{VectorClock} -import leveldbjnr.* -import zd.rng.data.{Data, BucketInfo} -import zd.rng.data.codec.* -import zd.rng.model.{StoreGet, StoreGetAck} -import zd.rng.model.{DumpGet, DumpEn} -import zd.rng.model.{DumpGetBucketData, DumpBucketData} -import zd.rng.model.{ReplGetBucketsVc, ReplBucketsVc, ReplGetBucketIfNew, ReplBucketUpToDate, ReplNewerBucketData} -import proto.* +import org.apache.pekko.actor.{Actor, ActorLogging, Props} +import org.apache.pekko.cluster.{VectorClock} +import org.rocksdb.* +import proto.{encode, decode} + +import data.{Data, BucketInfo, StoreKey, DataKey, BucketInfoKey}, data.codec.*, data.keycodec.*, model.{DumpGetBucketData, DumpBucketData}, model.{ReplBucketsVc, ReplGetBucketIfNew, ReplBucketUpToDate, ReplNewerBucketData, KeyBucketData}, model.{StoreGet, StoreGetAck}, ReplicationSupervisor.ReplGetBucketsVc object ReadonlyStore { - def props(leveldb: LevelDb): Props = Props(new ReadonlyStore(leveldb)) + def props(db: RocksDB, hashing: Hashing): Props = Props(new ReadonlyStore(db, hashing)) } -class ReadonlyStore(leveldb: LevelDb) extends Actor with ActorLogging { - val hashing = HashingExtension(context.system) - val ro = ReadOpts() - - def get(k: Key): Option[Array[Byte]] = leveldb.get(k, ro).fold(l => throw l, r => r) - - val `:key:` = stob(":key:") - val `:keys` = stob(":keys") - val `readonly_dummy` = stob("readonly_dummy") +class ReadonlyStore(db: RocksDB, hashing: Hashing) extends Actor with ActorLogging { + def get(k: Key): Option[Array[Byte]] = Option(db.get(k)).map(_.nn) override def receive: Receive = { case x: StoreGet => - val k = itob(hashing.findBucket(x.key)) ++ `:key:` ++ x.key - val result: Option[Data] = get(k).map(decode[Data](_)) - sender ! StoreGetAck(result) + val k = DataKey(bucket=hashing.findBucket(x.key), key=x.key) + val result: Option[Data] = get(encode[StoreKey](k)).map(decode[Data](_)) + sender() ! StoreGetAck(bucket=k.bucket, key=x.key, data=result) case DumpGetBucketData(b) => - val k = itob(b) ++ `:keys` + val k = encode[StoreKey](BucketInfoKey(bucket=b)) val b_info = get(k).map(decode[BucketInfo](_)) - val keys: Vector[Key] = b_info.map(_.keys.toVector).getOrElse(Vector.empty) - val items: Vector[Data] = keys.flatMap(key => - get(itob(b)++`:key:`++key).map(decode[Data](_)) + val keys = b_info.map(_.keys).getOrElse(Vector.empty) + val items = keys.flatMap(key => + get(encode[StoreKey](DataKey(bucket=b, key=key))).map(decode[Data](_)).map(data => KeyBucketData(key=key, bucket=b, data=data)) ) - sender ! DumpBucketData(b, items) + sender() ! DumpBucketData(b, items) case ReplGetBucketIfNew(b, vc) => val vc_other: VectorClock = vc - val k = itob(b) ++ `:keys` + val k = encode[StoreKey](BucketInfoKey(bucket=b)) val b_info = get(k).map(decode[BucketInfo](_)) b_info match { case Some(b_info) => val vc_local: VectorClock = b_info.vc vc_other == vc_local || vc_other > vc_local match { - case true => sender ! ReplBucketUpToDate + case true => sender() ! ReplBucketUpToDate case false => val keys = b_info.keys - val items: Vector[Data] = keys.view.flatMap(key => - get(itob(b)++`:key:`++key).map(decode[Data](_)) - ).to(Vector) - sender ! ReplNewerBucketData(b_info.vc, items) + val items = keys.flatMap{ key => + val data = get(encode[StoreKey](DataKey(bucket=b, key=key))).map(decode[Data](_)) + data.map(data => KeyBucketData(key=key, bucket=b, data=data)) + } + sender() ! ReplNewerBucketData(b_info.vc, items) } case None => - sender ! ReplBucketUpToDate + sender() ! ReplBucketUpToDate } case ReplGetBucketsVc(bs) => val bvcs: Bucket Map VectorClock = bs.view.flatMap{ b => - val k = itob(b) ++ `:keys` + val k = encode[StoreKey](BucketInfoKey(bucket=b)) get(k).map(x => b -> decode[BucketInfo](x).vc) }.to(Map) - sender ! ReplBucketsVc(bvcs) + sender() ! ReplBucketsVc(bvcs) - case x: DumpGet => - import java.io.{ByteArrayOutputStream, ObjectOutputStream, ObjectInputStream, ByteArrayInputStream} - val key: Array[Byte] = { - val bos = new ByteArrayOutputStream - val out = new ObjectOutputStream(bos) - out.writeObject(new String(x.k, "UTF-8")) - out.close() - bos.toByteArray.nn - } - val data: Option[Array[Byte]] = leveldb.get(key, ro).fold(l => throw l, r => r) - val res: DumpEn = data match { - case None => - DumpEn(x.k, `readonly_dummy`, Array.empty[Byte]) - case Some(data) => - val in = new ObjectInputStream(new ByteArrayInputStream(data)) - val obj = in.readObject - in.close() - val decoded = obj.asInstanceOf[(akka.util.ByteString, Option[String])] - DumpEn(x.k, decoded._1.toArray, decoded._2.fold(Array.empty[Byte])(stob)) - } - sender ! res case _ => } - - override def postStop(): Unit = { - ro.close() - super.postStop() - } } diff --git a/kvs/src/main/scala/rng/StoreWrite.scala b/kvs/src/main/scala/rng/StoreWrite.scala index 1b9eb6a1..1253f0a3 100644 --- a/kvs/src/main/scala/rng/StoreWrite.scala +++ b/kvs/src/main/scala/rng/StoreWrite.scala @@ -1,50 +1,45 @@ package zd.rng package store -import akka.actor.{Actor, ActorLogging, Props} -import akka.cluster.{Cluster, VectorClock} -import java.util.Arrays -import leveldbjnr.* -import proto.* -import zd.rng.data.codec.* -import zd.rng.data.{Data, BucketInfo} -import zd.rng.model.{ReplBucketPut, StorePut, StoreDelete} +import org.apache.pekko.actor.{Actor, ActorLogging, Props} +import org.apache.pekko.cluster.{Cluster, VectorClock} +import org.rocksdb.* +import proto.{encode, decode} -class WriteStore(leveldb: LevelDb) extends Actor with ActorLogging { +import data.codec.*, data.keycodec.*, data.{Data, BucketInfo, StoreKey, DataKey, BucketInfoKey}, model.{ReplBucketPut, StorePut, StoreDelete, KeyBucketData} + +object WriteStore { + def props(db: RocksDB, hashing: Hashing): Props = Props(new WriteStore(db, hashing)) +} + +class WriteStore(db: RocksDB, hashing: Hashing) extends Actor with ActorLogging { import context.system - val config = system.settings.config.getConfig("ring.leveldb").nn - val ro = ReadOpts() - val wo = WriteOpts(config.getBoolean("fsync")) - val hashing = HashingExtension(system) + val wo = new WriteOptions val local: Node = Cluster(system).selfAddress - def get(k: Key): Option[Array[Byte]] = leveldb.get(k, ro).fold(l => throw l, r => r) - - val `:key:` = stob(":key:") - val `:keys` = stob(":keys") + def get(k: Key): Option[Array[Byte]] = Option(db.get(k)).map(_.nn) override def postStop(): Unit = { - try { leveldb.close() } catch { case _: Throwable => () } - ro.close() + db.close() wo.close() super.postStop() } def receive: Receive = { - case StorePut(data) => - doPut(data) - sender ! "ok" - case x: StoreDelete => sender ! doDelete(x.key) - case ReplBucketPut(b, bucketVc, items) => replBucketPut(b, bucketVc, items.toVector) + case StorePut(key, bucket, data) => + doPut(key, bucket, data) + sender() ! "ok" + case x: StoreDelete => sender() ! doDelete(x.key) + case ReplBucketPut(b, bucketVc, items) => replBucketPut(b, bucketVc, items) case unhandled => log.warning(s"unhandled message: ${unhandled}") } - def replBucketPut(b: Bucket, bucketVc: VectorClock, items: Vector[Data]): Unit = { + def replBucketPut(b: Bucket, bucketVc: VectorClock, items: Vector[KeyBucketData]): Unit = { withBatch{ batch => { // updating bucket info - val bucketId: Key = itob(b) ++ `:keys` + val bucketId: Key = encode[StoreKey](BucketInfoKey(bucket=b)) val bucketInfo = get(bucketId).map(decode[BucketInfo](_)) val newKeys = items.map(_.key) val v = bucketInfo match { @@ -57,70 +52,62 @@ class WriteStore(leveldb: LevelDb) extends Actor with ActorLogging { } // saving keys data items.foreach{ data => - val keyPath: Key = itob(b) ++ `:key:` ++ data.key + val keyPath: Key = encode[StoreKey](DataKey(bucket=b, key=data.key)) val keyData: Option[Data] = get(keyPath).map(decode[Data](_)) - val v: Option[Data] = MergeOps.forPut(stored=keyData, received=data) + val v: Option[Data] = MergeOps.forPut(stored=keyData, received=data.data) v.map(v => batch.put(keyPath, encode(v))) } } } - def doPut(data: Data): Unit = { + def doPut(key: Array[Byte], bucket: Int, data: Data): Unit = { val _ = withBatch{ batch => { // updating bucket info - val bucketId: Key = itob(data.bucket) ++ `:keys` + val bucketId: Key = encode[StoreKey](BucketInfoKey(bucket=bucket)) val bucketInfo = get(bucketId).map(decode[BucketInfo](_)) val v = bucketInfo match { - case Some(x) if x.keys contains data.key => + case Some(x) if x.keys contains key => val vc = x.vc :+ local.toString x.copy(vc=vc) case Some(x) => val vc = x.vc :+ local.toString - x.copy(vc=vc, keys=(data.key +: x.keys)) + x.copy(vc=vc, keys=(key +: x.keys)) case None => val vc = emptyVC :+ local.toString - BucketInfo(vc=vc, keys=Vector(data.key)) + BucketInfo(vc=vc, keys=Vector(key)) } batch.put(bucketId, encode(v)) } // saving key data - val keyPath: Key = itob(data.bucket) ++ `:key:` ++ data.key + val keyPath: Key = encode[StoreKey](DataKey(bucket=bucket, key=key)) val keyData: Option[Data] = get(keyPath).map(decode[Data](_)) val v: Option[Data] = MergeOps.forPut(stored=keyData, received=data) v.map(v => batch.put(keyPath, encode(v))) } } - def doDelete(key: Key): String = { + def doDelete(key: Array[Byte]): String = { val b = hashing.findBucket(key) - val b_info = get(itob(b) ++ `:keys`).map(decode[BucketInfo](_)) - b_info match { - case Some(b_info) => - val vc = b_info.vc :+ local.toString - val keys = b_info.keys.filterNot(xs => Arrays.equals(xs, key)) - withBatch(batch => { - batch.delete((itob(b) ++ `:key:` ++ key)) - batch.put((itob(b) ++ `:keys`), encode(BucketInfo(vc, keys))) - }) - "ok" - case None => - "ok" + val b_info = get(encode[StoreKey](BucketInfoKey(bucket=b))).map(decode[BucketInfo](_)) + b_info.foreach{ b_info => + val vc = b_info.vc :+ local.toString + val keys = b_info.keys.filterNot(java.util.Arrays.equals(_, key)) + withBatch(batch => { + batch.delete(encode[StoreKey](DataKey(bucket=b, key=key))) + batch.put(encode[StoreKey](BucketInfoKey(bucket=b)), encode(BucketInfo(vc, keys))) + }) } + "ok" } def withBatch[R](body: WriteBatch => R): R = { val batch = new WriteBatch try { val r = body(batch) - leveldb.write(batch, wo) + db.write(wo, batch) r } finally { batch.close() } } } - -object WriteStore { - def props(leveldb: LevelDb): Props = Props(new WriteStore(leveldb)) -} - diff --git a/kvs/src/main/scala/rng/ack.scala b/kvs/src/main/scala/rng/ack.scala index 64d9dcaf..b7dc9ef9 100644 --- a/kvs/src/main/scala/rng/ack.scala +++ b/kvs/src/main/scala/rng/ack.scala @@ -1,6 +1,6 @@ package zd.rng sealed trait Ack -final case class AckSuccess(v: Option[Value]) extends Ack -final case class AckQuorumFailed(why: String) extends Ack -final case class AckTimeoutFailed(op: String, k: String) extends Ack +case class AckSuccess(v: Option[Array[Byte]]) extends Ack +case class AckQuorumFailed(why: String) extends Ack +case class AckTimeoutFailed(op: String, k: Array[Byte]) extends Ack diff --git a/kvs/src/main/scala/rng/akkacluster.scala b/kvs/src/main/scala/rng/akkacluster.scala deleted file mode 100644 index 66110a8b..00000000 --- a/kvs/src/main/scala/rng/akkacluster.scala +++ /dev/null @@ -1,9 +0,0 @@ -package akka - -import proto.* - -package object cluster { - implicit val vcodec: MessageCodec[(String, Long)] = caseCodecNums[Tuple2[String,Long]]("_1"->1,"_2"->2) - implicit val vccodec: MessageCodec[akka.cluster.VectorClock] = caseCodecNums[akka.cluster.VectorClock]("versions"->1) - val emptyVC = VectorClock() -} diff --git a/kvs/src/main/scala/rng/cluster.scala b/kvs/src/main/scala/rng/cluster.scala new file mode 100644 index 00000000..c2c0baf2 --- /dev/null +++ b/kvs/src/main/scala/rng/cluster.scala @@ -0,0 +1,9 @@ +package org.apache.pekko + +import proto.* + +package object cluster { + implicit val vcodec: MessageCodec[(String,Long)] = caseCodecNums[(String,Long)]("_1"->1, "_2"->2) + implicit val vccodec: MessageCodec[org.apache.pekko.cluster.VectorClock] = caseCodecNums[org.apache.pekko.cluster.VectorClock]("versions"->1) + val emptyVC = VectorClock() +} diff --git a/kvs/src/main/scala/rng/conf.scala b/kvs/src/main/scala/rng/conf.scala new file mode 100644 index 00000000..a669dc88 --- /dev/null +++ b/kvs/src/main/scala/rng/conf.scala @@ -0,0 +1,64 @@ +package zd.rng + +import scala.concurrent.*, duration.* +import scala.language.postfixOps + +case class Quorum + ( N: Int + , W: Int + , R: Int + ) + +case class Conf( + quorum: Quorum = Quorum(N=1, W=1, R=1) +, buckets: Int = 32768 /* 2^15 */ +, virtualNodes: Int = 128 +, hashLength: Int = 32 +, ringTimeout: FiniteDuration = 11 seconds /* bigger than gatherTimeout */ +, gatherTimeout: FiniteDuration = 10 seconds +, dumpTimeout: FiniteDuration = 1 hour +, replTimeout: FiniteDuration = 1 minute +, dir: String = "data_rng" +) + +def pekkoConf(name: String, host: String, port: Int): String = s""" + pekko { + actor { + provider = cluster + deployment { + /ring_readonly_store { + router = round-robin-pool + nr-of-instances = 5 + } + } + debug { + receive = off + lifecycle = off + } + serializers { + kvsproto = zd.rng.Serializer + } + serialization-identifiers { + "zd.rng.Serializer" = 50 + } + serialization-bindings { + "zd.rng.model.ChangeState" = kvsproto + "zd.rng.model.StoreGetAck" = kvsproto + "zd.rng.model.StoreDelete" = kvsproto + "zd.rng.model.StoreGet" = kvsproto + "zd.rng.model.StorePut" = kvsproto + "zd.rng.model.DumpBucketData" = kvsproto + "zd.rng.model.DumpGetBucketData" = kvsproto + "zd.rng.model.ReplBucketPut" = kvsproto + "zd.rng.model.ReplBucketUpToDate" = kvsproto + "zd.rng.model.ReplGetBucketIfNew" = kvsproto + "zd.rng.model.ReplNewerBucketData" = kvsproto + } + } + remote.artery.canonical { + hostname = $host + port = $port + } + cluster.seed-nodes = [ "pekko://$name@$host:$port" ] + } + """ diff --git a/kvs/src/main/scala/rng/ext.scala b/kvs/src/main/scala/rng/ext.scala deleted file mode 100644 index 8e538854..00000000 --- a/kvs/src/main/scala/rng/ext.scala +++ /dev/null @@ -1,9 +0,0 @@ -package zd.rng - -extension [A,B](xs: Seq[Either[A, B]]) - @annotation.tailrec private def _sequence_(ys: Seq[Either[A, B]]): Either[A, Unit] = - ys.headOption match - case None => Right(()) - case Some(Left(e)) => Left(e) - case Some(Right(z)) => _sequence_(ys.tail) - inline def sequence_ : Either[A, Unit] = _sequence_(xs) \ No newline at end of file diff --git a/kvs/src/main/scala/rng/merge.scala b/kvs/src/main/scala/rng/merge.scala index 3c6978d9..932d713c 100644 --- a/kvs/src/main/scala/rng/merge.scala +++ b/kvs/src/main/scala/rng/merge.scala @@ -1,112 +1,110 @@ package zd.rng -import zd.rng.data.{Data} -import zd.rng.GatherGet.AddrOfData import scala.annotation.tailrec import scala.collection.immutable.{HashMap, HashSet} -object MergeOps { - case class ArrayWrap(a: Array[Byte]) { - override def equals(other: Any): Boolean = { - if (!other.isInstanceOf[ArrayWrap]) false - else java.util.Arrays.equals(a, other.asInstanceOf[ArrayWrap].a) - } - override def hashCode(): Int = java.util.Arrays.hashCode(a) +import data.Data, GatherGet.AddrOfData, model.KeyBucketData + +private final class Bytes private (a: Array[Byte]) { + lazy val length: Int = a.length + lazy val isEmpty: Boolean = a.isEmpty + lazy val nonEmpty: Boolean = a.nonEmpty + lazy val mkString: String = new String(a, "utf8") + val unsafeArray: Array[Byte] = a + override def equals(other: Any): Boolean = { + if (!other.isInstanceOf[Bytes]) false + else java.util.Arrays.equals(a, other.asInstanceOf[Bytes].unsafeArray) } + override def hashCode(): Int = java.util.Arrays.hashCode(a) +} - def forDump(xs: Vector[Data]): Vector[Data] = { - @tailrec - def loop(xs: Vector[Data], acc: HashMap[ArrayWrap, Data]): Vector[Data] = { - xs match { - case xs if xs.isEmpty => acc.values.toVector - case received +: t => - val k = ArrayWrap(received.key) - acc.get(k) match { +private object Bytes { + val empty = new Bytes(Array.emptyByteArray) + def unsafeWrap(a: Array[Byte]): Bytes = new Bytes(a) + def apply(bs: Byte*): Bytes = new Bytes(bs.toArray) +} + +object MergeOps { + def forDump(xs: Vector[KeyBucketData]): Vector[KeyBucketData] = { + @tailrec def loop(xs: Vector[KeyBucketData], acc: HashMap[Bytes, KeyBucketData]): Vector[KeyBucketData] = { + xs match + case Vector() => acc.values.toVector + case Vector(received, s*) => + val t = s.toVector + val k = Bytes.unsafeWrap(received.key) + acc.get(k) match case None => loop(t, acc + (k -> received)) case Some(stored) => - (stored < received) match { + (stored.data < received.data) match case OkLess(true) => loop(t, acc + (k -> received)) case OkLess(false) => loop(t, acc) - case ConflictLess(true, vc) => loop(t, acc + (k -> received.copy(vc=vc))) - case ConflictLess(false, vc) => loop(t, acc + (k -> stored.copy(vc=vc))) - } - } - } + case ConflictLess(true, vc) => loop(t, acc + (k -> received.copy(data=received.data.copy(vc=vc)))) + case ConflictLess(false, vc) => loop(t, acc + (k -> stored.copy(data=stored.data.copy(vc=vc)))) } loop(xs, acc=HashMap.empty) } - def forRepl(xs: Vector[Data]): Vector[Data] = { + def forRepl(xs: Vector[KeyBucketData]): Vector[KeyBucketData] = @tailrec - def loop(xs: Vector[Data], acc: HashMap[ArrayWrap, Data]): Vector[Data] = { - xs match { - case xs if xs.isEmpty => acc.values.toVector - case received +: t => - val k = ArrayWrap(received.key) - acc.get(k) match { + def loop(xs: Vector[KeyBucketData], acc: HashMap[Bytes, KeyBucketData]): Vector[KeyBucketData] = + xs match + case Vector() => acc.values.toVector + case Vector(received, s*) => + val t = s.toVector + val k = Bytes.unsafeWrap(received.key) + acc.get(k) match case None => loop(t, acc + (k -> received)) case Some(stored) => - (stored < received) match { + (stored.data < received.data) match case OkLess(true) => loop(t, acc + (k -> received)) case OkLess(false) => loop(t, acc) - case ConflictLess(true, vc) => loop(t, acc + (k -> received.copy(vc=vc))) - case ConflictLess(false, vc) => loop(t, acc + (k -> stored.copy(vc=vc))) - } - } - } - } + case ConflictLess(true, vc) => loop(t, acc + (k -> received.copy(data=received.data.copy(vc=vc)))) + case ConflictLess(false, vc) => loop(t, acc + (k -> stored.copy(data=stored.data.copy(vc=vc)))) loop(xs, acc=HashMap.empty) - } /* returns (actual data, list of outdated nodes) */ - def forGatherGet(xs: Vector[AddrOfData]): (Option[Data], HashSet[Node]) = { + def forGatherGet(xs: Vector[AddrOfData]): (Option[Data], HashSet[Node]) = @tailrec - def loop(xs: Vector[Option[Data]], newest: Option[Data]): Option[Data] = { - xs match { - case xs if xs.isEmpty => newest - case None +: t => loop(t, newest) - case (r@Some(received)) +: t => - newest match { - case None => loop(t, r) - case s@Some(saved) => - (saved < received) match { - case OkLess(true) => loop(t, r) - case OkLess(false) => loop(t, s) - case ConflictLess(true, _) => loop(t, r) - case ConflictLess(false, _) => loop(t, s) - } - } - } - } - xs match { - case Seq() => None -> HashSet.empty - case h +: t => - val correct = loop(t.map(_._1), h._1) + def loop(xs: Vector[Option[Data]], newest: Option[Data]): Option[Data] = + xs match + case Vector() => newest + case Vector(x, s*) => + x match + case None => loop(s.toVector, newest) + case r@Some(received) => + val t = s.toVector + newest match + case None => loop(t, r) + case s@Some(saved) => + saved < received match + case OkLess(true) => loop(t, r) + case OkLess(false) => loop(t, s) + case ConflictLess(true, _) => loop(t, r) + case ConflictLess(false, _) => loop(t, s) + xs match + case Vector() => None -> HashSet.empty + case Vector(h, t*) => + val correct = loop(t.view.map(_._1).toVector, h._1) def makevc1(x: Option[Data]): VectorClock = x.map(_.vc).getOrElse(emptyVC) val correct_vc = makevc1(correct) correct -> xs.view.filterNot(x => makevc1(x._1) == correct_vc).map(_._2).to(HashSet) - } - } - def forPut(stored: Option[Data], received: Data): Option[Data] = { - stored match { + def forPut(stored: Option[Data], received: Data): Option[Data] = + stored match case None => Some(received) case Some(stored) => - (stored < received) match { + (stored < received) match case OkLess(true) => Some(received) case OkLess(false) => None case ConflictLess(true, vc) => Some(received.copy(vc=vc)) case ConflictLess(false, vc) => Some(stored.copy(vc=vc)) - } - } - } sealed trait LessComp - final case class OkLess(res: Boolean) extends LessComp - final case class ConflictLess(res: Boolean, vc: VectorClock) extends LessComp + case class OkLess(res: Boolean) extends LessComp + case class ConflictLess(res: Boolean, vc: VectorClock) extends LessComp implicit class DataExt(x: Data) { def <(o: Data): LessComp = { diff --git a/kvs/src/main/scala/rng/package.scala b/kvs/src/main/scala/rng/package.scala index 77dac79c..c32943d6 100644 --- a/kvs/src/main/scala/rng/package.scala +++ b/kvs/src/main/scala/rng/package.scala @@ -1,35 +1,25 @@ -package zd +package zd.rng -import akka.actor.{Address, ActorRef} +import org.apache.pekko.actor.{Address, ActorRef} +import proto.* -package object rng { - type Bucket = Int - type VNode = Int - type Node = Address - type Key = Array[Byte] - type Value = Array[Byte] - type VectorClock = akka.cluster.VectorClock - type Age = (VectorClock, Long) - type PreferenceList = Set[Node] +type Bucket = Int +type VNode = Int +type Node = Address +type Key = Array[Byte] +type Value = Array[Byte] +type VectorClock = org.apache.pekko.cluster.VectorClock +type Age = (VectorClock, Long) +type PreferenceList = Set[Node] - val emptyVC = akka.cluster.emptyVC +val emptyVC = org.apache.pekko.cluster.emptyVC - def stob(s: String): Array[Byte] = s.getBytes("UTF-8").nn - def itob(v: Int): Array[Byte] = Array[Byte]((v >> 24).toByte, (v >> 16).toByte, (v >> 8).toByte, v.toByte) +extension (value: String) + def blue: String = s"\u001B[34m${value}\u001B[0m" + def green: String = s"\u001B[32m${value}\u001B[0m" - extension (value: String) - def blue: String = s"\u001B[34m${value}\u001B[0m" - def green: String = s"\u001B[32m${value}\u001B[0m" +def now_ms(): Long = System.currentTimeMillis - def now_ms(): Long = System.currentTimeMillis - - def addr(s: ActorRef): Node = s.path.address +def addr(s: ActorRef): Node = s.path.address - given [A]: CanEqual[None.type, Option[A]] = CanEqual.derived - given CanEqual[String, Any] = CanEqual.derived - given CanEqual[Node, Node] = CanEqual.derived - given CanEqual[RestoreState.type, Any] = CanEqual.derived - given CanEqual[Ready.type, Any] = CanEqual.derived - given CanEqual[model.QuorumState, model.QuorumState] = CanEqual.derived - given CanEqual[model.ReplBucketUpToDate.type, Any] = CanEqual.derived -} +given MessageCodec[PortVNode] = caseCodecAuto diff --git a/kvs/src/main/scala/pickle.scala b/kvs/src/main/scala/rng/pickle.scala similarity index 53% rename from kvs/src/main/scala/pickle.scala rename to kvs/src/main/scala/rng/pickle.scala index 64d204f8..f595d067 100644 --- a/kvs/src/main/scala/pickle.scala +++ b/kvs/src/main/scala/rng/pickle.scala @@ -1,39 +1,35 @@ -package zd.kvs +package zd.rng -import akka.actor.{ExtendedActorSystem} -import akka.serialization.{BaseSerializer} -import akka.cluster.given -import zd.rng.model.* +import org.apache.pekko.actor.{ExtendedActorSystem} +import org.apache.pekko.serialization.{BaseSerializer} import proto.* -class Serializer(val system: ExtendedActorSystem) extends BaseSerializer: +import zd.rng.model.*, zd.rng.data.codec.* +import org.apache.pekko.cluster.given + +class Serializer(val system: ExtendedActorSystem) extends BaseSerializer { implicit val msgCodec: MessageCodec[Msg] = { implicit def tuple2IntACodec[A:MessageCodec]: MessageCodec[Tuple2[Int, A]] = caseCodecIdx[Tuple2[Int, A]] - implicit val replBucketUpToDateCodec: MessageCodec[ReplBucketUpToDate.type] = caseCodecAuto[ReplBucketUpToDate.type] + implicit val KeyBucketDataC: MessageCodec[KeyBucketData] = caseCodecAuto + implicit val replBucketUpToDateCodec: MessageCodec[ReplBucketUpToDate.type] = caseCodecAuto implicit val quorumStateCodec: MessageCodec[QuorumState] = { import QuorumState.* - implicit val quorumStateUnsatisfiedCodec: MessageCodec[QuorumStateUnsatisfied.type] = caseCodecAuto[QuorumStateUnsatisfied.type] - implicit val quorumStateReadonlyCodec: MessageCodec[QuorumStateReadonly.type] = caseCodecAuto[QuorumStateReadonly.type] - implicit val quorumStateEffectiveCodec: MessageCodec[QuorumStateEffective.type] = caseCodecAuto[QuorumStateEffective.type] + implicit val quorumStateUnsatisfiedCodec: MessageCodec[QuorumStateUnsatisfied.type] = caseCodecAuto + implicit val quorumStateReadonlyCodec: MessageCodec[QuorumStateReadonly.type] = caseCodecAuto + implicit val quorumStateEffectiveCodec: MessageCodec[QuorumStateEffective.type] = caseCodecAuto sealedTraitCodecAuto[QuorumState] } - implicit val changeStateCodec: MessageCodec[ChangeState] = caseCodecAuto[ChangeState] - implicit val dataCodec: MessageCodec[zd.rng.data.Data] = zd.rng.data.codec.dataCodec - implicit val dumpBucketDataCodec: MessageCodec[DumpBucketData] = caseCodecAuto[DumpBucketData] - implicit val dumpEnCodec: MessageCodec[DumpEn] = classCodecAuto[DumpEn] - implicit val dumpGetCodec: MessageCodec[DumpGet] = classCodecAuto[DumpGet] - implicit val dumpGetBucketDataCodec: MessageCodec[DumpGetBucketData] = caseCodecAuto[DumpGetBucketData] - implicit val vcodec: MessageCodec[(String, Long)] = caseCodecNums[Tuple2[String,Long]]("_1"->1,"_2"->2) - implicit val vccodec: MessageCodec[akka.cluster.VectorClock] = caseCodecNums[akka.cluster.VectorClock]("versions"->1) - implicit val replBucketPutCodec: MessageCodec[ReplBucketPut] = caseCodecAuto[ReplBucketPut] - implicit val replGetBucketIfNewCodec: MessageCodec[ReplGetBucketIfNew] = caseCodecAuto[ReplGetBucketIfNew] - implicit val replNewerBucketDataCodec: MessageCodec[ReplNewerBucketData] = caseCodecAuto[ReplNewerBucketData] - implicit val replBucketsVcCodec: MessageCodec[ReplBucketsVc] = caseCodecAuto[ReplBucketsVc] - implicit val storeDeleteCodec: MessageCodec[StoreDelete] = classCodecAuto[StoreDelete] - implicit val storeGetCodec: MessageCodec[StoreGet] = classCodecAuto[StoreGet] - implicit val storeGetAckCodec: MessageCodec[StoreGetAck] = caseCodecAuto[StoreGetAck] - implicit val storePutCodec: MessageCodec[StorePut] = caseCodecAuto[StorePut] - implicit val replGetBucketsVcCodec: MessageCodec[ReplGetBucketsVc] = caseCodecAuto[ReplGetBucketsVc] + implicit val changeStateCodec: MessageCodec[ChangeState] = caseCodecAuto + implicit val dumpBucketDataCodec: MessageCodec[DumpBucketData] = caseCodecAuto + implicit val dumpGetBucketDataCodec: MessageCodec[DumpGetBucketData] = caseCodecAuto + implicit val replBucketPutCodec: MessageCodec[ReplBucketPut] = caseCodecAuto + implicit val replGetBucketIfNewCodec: MessageCodec[ReplGetBucketIfNew] = caseCodecAuto + implicit val replNewerBucketDataCodec: MessageCodec[ReplNewerBucketData] = caseCodecAuto + implicit val replBucketsVcCodec: MessageCodec[ReplBucketsVc] = caseCodecAuto + implicit val storeDeleteCodec: MessageCodec[StoreDelete] = caseCodecAuto + implicit val storeGetCodec: MessageCodec[StoreGet] = caseCodecAuto + implicit val storeGetAckCodec: MessageCodec[StoreGetAck] = caseCodecAuto + implicit val storePutCodec: MessageCodec[StorePut] = caseCodecAuto sealedTraitCodecAuto[Msg] } @@ -46,6 +42,7 @@ class Serializer(val system: ExtendedActorSystem) extends BaseSerializer: override val includeManifest: Boolean = false - override def fromBinary(data: Array[Byte], manifest: Option[Class[?]]): AnyRef = { + override def fromBinary(data: Array[Byte], manifest: Option[Class[_]]): AnyRef = { decode[Msg](data) } +} diff --git a/kvs/src/main/scala/rng/system.scala b/kvs/src/main/scala/rng/system.scala new file mode 100644 index 00000000..fee5df65 --- /dev/null +++ b/kvs/src/main/scala/rng/system.scala @@ -0,0 +1,24 @@ +package zd.rng + +import com.typesafe.config.{ConfigFactory, Config} +import zio.* + +type ActorSystem = org.apache.pekko.actor.ActorSystem + +object ActorSystem: + case class Conf(name: String, config: Config) + + def staticConf(name: String, cfg: String): ULayer[Conf] = + ZLayer(ZIO.succeed(ConfigFactory.parseString(cfg).nn).map(Conf(name, _))) + + val live: RLayer[Conf, ActorSystem] = + ZLayer.scoped( + ZIO.acquireRelease( + for + conf <- ZIO.service[Conf] + system <- ZIO.attempt(org.apache.pekko.actor.ActorSystem(conf.name, conf.config)) + yield system + )( + system => ZIO.fromFuture(_ => system.terminate()).either + ) + ) diff --git a/kvs/src/main/scala/search/dba.scala b/kvs/src/main/scala/search/dba.scala new file mode 100644 index 00000000..530ab55b --- /dev/null +++ b/kvs/src/main/scala/search/dba.scala @@ -0,0 +1,21 @@ +package kvs.search + +import zd.kvs.{Dba, DbaErr} +import scala.util.Try +import zio.* + +class DbaEff(dba: Dba): + type K = String + type V = Array[Byte] + type Err = DbaErr | Throwable + type R[A] = Either[Err, A] + + def put(key: K, value: V): R[Unit] = run(dba.put(stob(key), value)) + def get(key: K): R[Option[V]] = run(dba.get(stob(key))) + def delete(key: K): R[Unit] = run(dba.delete(stob(key))) + + private def run[A](eff: IO[Err, A]): R[A] = + Unsafe.unsafely(Runtime.default.unsafe.run(eff.either).toEither).flatten + + private inline def stob(s: String): Array[Byte] = + s.getBytes("utf8").nn diff --git a/kvs/src/main/scala/search/dir.scala b/kvs/src/main/scala/search/dir.scala index ceb2e812..02572ac1 100644 --- a/kvs/src/main/scala/search/dir.scala +++ b/kvs/src/main/scala/search/dir.scala @@ -1,164 +1,164 @@ -package zd.kvs -package search +package kvs.search import java.io.{IOException, ByteArrayOutputStream} import java.nio.file.{NoSuchFileException, FileAlreadyExistsException} -import java.util.{Collection, Collections, Arrays} import java.util.concurrent.atomic.AtomicLong +import java.util.{Collection, Collections, Arrays, Set} +import zd.kvs.Dba import org.apache.lucene.store.* import scala.annotation.tailrec import scala.collection.concurrent.TrieMap -import scala.collection.JavaConverters.* - -class KvsDirectory(dir: String)(kvs: WritableFile)(using Dba) extends BaseDirectory(KvsLockFactory(dir)) { - given FileHandler = new FileHandler { - override val chunkLength = 10_000_000 // 10 MB - } - val h = EnHandler +import scala.jdk.CollectionConverters.* +import zio.* + +object KvsDirectory: + type DirName = String + + val live: ZLayer[Dba & DirName, Nothing, KvsDirectory] = + ZLayer( + for + dba <- ZIO.service[Dba] + dirname <- ZIO.service[DirName] + yield + given dbaEff: DbaEff = DbaEff(dba) + given CanEqual[BrokenFile.type, BrokenFile.type | FileNotExists.type | dbaEff.Err] = CanEqual.derived + given CanEqual[BrokenListing.type, BrokenListing.type | FileNotExists.type | dbaEff.Err] = CanEqual.derived + given CanEqual[FileExists.type, FileExists.type | dbaEff.Err] = CanEqual.derived + given CanEqual[FileNotExists.type, FileNotExists.type | dbaEff.Err | BrokenListing.type] = CanEqual.derived + KvsDirectory(dirname) + ) +class KvsDirectory( + val dir: String +)(using + dba: DbaEff +)(using + CanEqual[BrokenFile.type, BrokenFile.type | FileNotExists.type | dba.Err] +, CanEqual[BrokenListing.type, BrokenListing.type | FileNotExists.type | dba.Err] +, CanEqual[FileExists.type, FileExists.type | dba.Err] +, CanEqual[FileNotExists.type, FileNotExists.type | BrokenListing.type | dba.Err] +) extends BaseDirectory(NoLockFactory.INSTANCE): private val outs = TrieMap.empty[String, ByteArrayOutputStream] private val nextTempFileCounter = AtomicLong() - def exists: Either[Err, Boolean] = - h.get(Fd(dir)).map(_.isDefined) - - def deleteAll(): Either[Err, Unit] = - for { - xs <- h.all(dir) - ys <- xs.sequence - _ <- ys.map{ x => - val name = x.id - for { - _ <- kvs.delete(dir, name).map(_ => ()).recover{ case _: FileNotExists => () } - _ <- h.remove(dir, name) - } yield unit - }.sequence_ - _ <- h.delete(Fd(dir)).map(_ => ()).recover{ case KeyNotFound => () } - } yield unit - /** * Returns names of all files stored in this directory. - * The output must be in sorted (UTF-16, java's {//link String#compareTo}) order. + * The output must be in sorted (UTF-16, java's {@link String#compareTo}) order. * - * //throws IOException in case of I/O error + * @throws IOException in case of I/O error */ override def listAll(): Array[String | Null] | Null = { ensureOpen() - h.all(dir).flatMap(_.sequence).fold( - l => throw new IOException(l.toString) - , r => r.map(_.id).sorted.toArray - ) + Files.all(dir).fold(l => throw IOException(l.toString), identity) } /** * Removes an existing file in the directory. * - * This method must throw {//link NoSuchFileException} + * This method must throw {@link NoSuchFileException} * if {@code name} points to a non-existing file. * * @param name the name of an existing file. - * //throws IOException in case of I/O error + * @throws IOException in case of I/O error */ override def deleteFile(name: String | Null): Unit = { sync(Collections.singletonList(name.nn).nn) - val r = for { - _ <- kvs.delete(dir, name.nn) - _ <- h.remove(dir, name.nn) + val r: Either[FileNotExists.type | dba.Err | BrokenListing.type, Unit] = for { + _ <- File.delete(dir, name.nn) + _ <- Files.remove(dir, name.nn) } yield () r.fold( - l => l match { - case _: FileNotExists => throw new NoSuchFileException(s"${dir}/${name.nn}") - case KeyNotFound => throw new NoSuchFileException(s"${dir}/${name.nn}") - case x => throw new IOException(x.toString) - }, - _ => () + _ match + case FileNotExists => throw NoSuchFileException(name) + case BrokenListing => throw NoSuchFileException(name) + case x => throw IOException(x.toString) + , identity ) } /** * Returns the byte length of a file in the directory. * - * This method must throw {//link NoSuchFileException} + * This method must throw {@link NoSuchFileException} * if {@code name} points to a non-existing file. * * @param name the name of an existing file. - * //throws IOException in case of I/O error + * @throws IOException in case of I/O error */ override def fileLength(name: String | Null): Long = { ensureOpen() sync(Collections.singletonList(name.nn).nn) - kvs.size(dir, name.nn).fold( + File.size(dir, name.nn).fold( l => l match { - case _: FileNotExists => throw new NoSuchFileException(s"${dir}/${name.nn}") - case _ => throw new IOException(l.toString) + case FileNotExists => throw NoSuchFileException(name) + case _ => throw IOException(l.toString) }, r => r ) } /** - * Creates a new, empty file in the directory and returns an {//link IndexOutput} + * Creates a new, empty file in the directory and returns an {@link IndexOutput} * instance for appending data to this file. * - * This method must throw {//link java.nio.file.FileAlreadyExistsException} if the file + * This method must throw {@link FileAlreadyExistsException} if the file * already exists. * * @param name the name of the file to create. - * //throws IOException in case of I/O error + * @throws IOException in case of I/O error */ override def createOutput(name: String | Null, context: IOContext | Null): IndexOutput | Null = { ensureOpen() - val r = for { - _ <- h.add(En(dir, name.nn)) - _ <- kvs.create(dir, name.nn) - } yield () + val r: Either[dba.Err | FileExists.type, Unit] = + for + _ <- Files.add(dir, name.nn) + _ <- File.create(dir, name.nn) + yield () r.fold( - l => l match { - case _: EntryExists => throw new FileAlreadyExistsException(s"${dir}/${name.nn}") - case _: FileAlreadyExists => throw new FileAlreadyExistsException(s"${dir}/${name.nn}") - case _ => throw new IOException(l.toString) - }, - _ => { - val out = new ByteArrayOutputStream; + l => l match + case FileExists => throw FileAlreadyExistsException(name) + case _ => throw IOException(l.toString) + , _ => { + val out = ByteArrayOutputStream() outs += ((name.nn, out)) - new OutputStreamIndexOutput(s"${dir}/${name.nn}", name.nn, out, 8192) + OutputStreamIndexOutput(name, name.nn, out, 8192) } ) } /** - * Creates a new, empty, temporary file in the directory and returns an {//link IndexOutput} + * Creates a new, empty, temporary file in the directory and returns an {@link IndexOutput} * instance for appending data to this file. * - * The temporary file name (accessible via {//link IndexOutput#getName()}) will start with + * The temporary file name (accessible via {@link IndexOutput#getName()}) will start with * {@code prefix}, end with {@code suffix} and have a reserved file extension {@code .tmp}. */ override def createTempOutput(prefix: String | Null, suffix: String | Null, context: IOContext | Null): IndexOutput | Null = { ensureOpen() - @tailrec def loop(): Either[Err, File] = { + @tailrec + def loop(): Either[?, File] = val name = Directory.getTempFileName(prefix, suffix, nextTempFileCounter.getAndIncrement).nn - val res = for { - _ <- h.add(En(dir, name)) - r <- kvs.create(dir, name) - } yield r - res match { - case Left(_: EntryExists) => loop() - case Left(_: FileAlreadyExists) => loop() + val res: Either[dba.Err | FileExists.type, File] = + for + _ <- Files.add(dir, name) + r <- File.create(dir, name) + yield r + res match + case Left(FileExists) => loop() case x => x - } - } + val res = loop() res.fold( - l => throw new IOException(l.toString), + l => throw IOException(l.toString), r => { - val out = new ByteArrayOutputStream; + val out = ByteArrayOutputStream() outs += ((r.name, out)) - new OutputStreamIndexOutput(s"${dir}/${r.name}", r.name, out, 8192) + OutputStreamIndexOutput(r.name, r.name, out, 8192) } ) } @@ -175,8 +175,8 @@ class KvsDirectory(dir: String)(kvs: WritableFile)(using Dba) extends BaseDirect ensureOpen() names.nn.asScala.foreach{ (name: String) => outs.get(name).map(_.toByteArray.nn).foreach{ xs => - kvs.append(dir, name, xs).fold( - l => throw new IOException(l.toString), + File.append(dir, name, xs).fold( + l => throw IOException(l.toString), _ => () ) outs -= name @@ -193,7 +193,7 @@ class KvsDirectory(dir: String)(kvs: WritableFile)(using Dba) extends BaseDirect * {@code dest} must not already exist in the directory. * * It is permitted for this operation to not be truly atomic, for example - * both {@code source} and {@code dest} can be visible temporarily in {//link #listAll()}. + * both {@code source} and {@code dest} can be visible temporarily in {@link #listAll()}. * However, the implementation of this method must ensure the content of * {@code dest} appears as the entire {@code source} atomically. So once * {@code dest} is visible for readers, the entire content of previous {@code source} @@ -205,14 +205,15 @@ class KvsDirectory(dir: String)(kvs: WritableFile)(using Dba) extends BaseDirect def rename(source: String | Null, dest: String | Null): Unit = { ensureOpen() sync(Arrays.asList(source, dest).nn) - val res = for { - _ <- kvs.copy(dir, source.nn -> dest.nn) - _ <- h.add(En(dir, dest.nn)) - _ <- kvs.delete(dir, source.nn) - _ <- h.remove(dir, source.nn) - } yield () + val res = + for + _ <- File.copy(dir, source.nn -> dest.nn) + _ <- Files.add(dir, dest.nn) + _ <- File.delete(dir, source.nn) + _ <- Files.remove(dir, source.nn) + yield () res.fold( - l => throw new IOException(l.toString), + l => throw IOException(l.toString), _ => () ) } @@ -220,64 +221,32 @@ class KvsDirectory(dir: String)(kvs: WritableFile)(using Dba) extends BaseDirect /** * Opens a stream for reading an existing file. * - * This method must throw {//link NoSuchFileException} + * This method must throw {@link NoSuchFileException} * if {@code name} points to a non-existing file. * * @param name the name of an existing file. - * //throws IOException in case of I/O error + * @throws IOException in case of I/O error */ override def openInput(name: String | Null, context: IOContext | Null): IndexInput | Null = { sync(Collections.singletonList(name.nn).nn) - val res = for { - bs <- kvs.stream(dir, name.nn) - bs1 <- bs.sequence - } yield new BytesIndexInput(s"${dir}/${name.nn}", bs1) + val res = + for + bs <- File.stream(dir, name.nn) + yield ByteBuffersIndexInput(ByteBuffersDataInput(bs), name) res.fold( - l => l match { - case FileNotExists(dir, name) => throw new NoSuchFileException(s"${dir}/${name}") - case _ => throw new IOException(l.toString) - }, - r => r + l => l match + case BrokenFile => throw NoSuchFileException(name) + case _ => throw IOException(l.toString) + , identity ) } - override def close(): Unit = synchronized { - isOpen = false - } + override def close(): Unit = + synchronized { + isOpen = false + } override - def getPendingDeletions(): java.util.Set[String] = { + def getPendingDeletions(): Set[String] = Collections.emptySet[String].nn - } -} - -class KvsLockFactory(dir: String) extends LockFactory { - private val locks = TrieMap.empty[String, Unit] - - override def obtainLock(d: Directory | Null, lockName: String | Null): Lock | Null = { - val key = dir + lockName - locks.putIfAbsent(key, ()) match { - case None => return new KvsLock(key) - case Some(_) => throw new LockObtainFailedException(key) - } - } - - private class KvsLock(key: String) extends Lock { - @volatile private var closed = false - - override def ensureValid(): Unit = { - if (closed) { - throw new AlreadyClosedException(key) - } - if (!locks.contains(key)) { - throw new AlreadyClosedException(key) - } - } - - override def close(): Unit = { - locks -= key - closed = true - } - } -} diff --git a/kvs/src/main/scala/search/en.scala b/kvs/src/main/scala/search/en.scala deleted file mode 100644 index 4bb75282..00000000 --- a/kvs/src/main/scala/search/en.scala +++ /dev/null @@ -1,130 +0,0 @@ -package zd.kvs -package search - -import scala.annotation.tailrec -import proto.* - -final case class Fd - ( @N(1) id: String - , @N(2) top: String = empty - ) - -case class En - ( @N(1) fid: String - , @N(2) id: String - , @N(3) prev: String = empty - ) - -given MessageCodec[En] = caseCodecAuto - -/** - * Linked list of entries - * - * [top] -->prev--> [entry] -->prev--> [empty] - */ -object EnHandler: - given MessageCodec[Fd] = caseCodecAuto[Fd] - - def put(fd: Fd)(using dba: Dba): Either[Err, Fd] = - dba.put(fd.id, encode(fd)).map(_ => fd) - - def get(fd: Fd)(using dba: Dba): Either[Err, Option[Fd]] = - dba.get(fd.id).map(_.map(decode)) - - def delete(fd: Fd)(using dba: Dba): Either[Err, Unit] = - dba.delete(fd.id).void - - private inline def key(fid: String, id: String): String = s"${fid}.${id}" - private inline def key(en: En): String = key(fid=en.fid, id=en.id) - - private def _put(en: En)(using dba: Dba): Either[Err, En] = - dba.put(key(en), encode(en)).map(_ => en) - - def get(fid: String, id: String)(using dba: Dba): Either[Err, Option[En]] = - dba.get(key(fid, id)).map(_.map(decode)) - - private def getOrFail(fid: String, id: String)(using dba: Dba): Either[Err, En] = - val k = key(fid, id) - dba.get(k).flatMap{ - case Some(x) => Right(decode(x)) - case None => Left(KeyNotFound) - } - - private def delete(fid: String, id: String)(using dba: Dba): Either[Err, Unit] = - dba.delete(key(fid, id)).void - - private def nextid(fid: String)(using dba: Dba): Either[Err, String] = - def key(fid: String): String = s"IdCounter.${fid}" - dba.get(key(fid)).flatMap{ v => - val prev = v.map(String(_, "utf8").nn).getOrElse("0") - val next = (prev.toLong+1).toString - dba.put(key(fid), next.getBytes("utf8").nn).map(_ => next) - } - - /** - * Adds the entry to the container - * Creates the container if it's absent - * @param en entry to add (prev is ignored). If id is empty it will be generated - */ - def add(en: En)(using dba: Dba): Either[Err, En] = - get(Fd(en.fid)).flatMap(_.cata(Right(_), put(Fd(en.fid)))).flatMap{ (fd: Fd) => - ( if (en.id == empty) - nextid(en.fid) // generate ID if it is empty - else - get(en.fid, en.id).flatMap( // id of entry must be unique - _.cata(_ => Left(EntryExists(key(en))), Right(en.id)) - ) - ).map(id => en.copy(id=id, prev=fd.top)).flatMap{ en => - // add new entry with prev pointer - _put(en).flatMap{ en => - // update feed's top - put(fd.copy(top=en.id)).map(_ => en) - } - } - } - - /** - * Iterates through container and return the stream of entries. - * - * Stream is FILO ordered (most recent is first). - * @param from if specified then return entries after this entry - */ - def all(fid: String)(using Dba): Either[Err, LazyList[Either[Err, En]]] = - all(fid, from=None) - - def all(fid: String, from: Option[En])(using Dba): Either[Err, LazyList[Either[Err, En]]] = - def _stream(id: String): LazyList[Either[Err, En]] = - id match - case `empty` => LazyList.empty - case _ => - val en = getOrFail(fid, id) - en match - case Right(e) => LazyList.cons(en, _stream(e.prev)) - case _ => LazyList(en) - from match - case None => get(Fd(fid)).map(_.cata(x => _stream(x.top), LazyList.empty)) - case Some(en) => Right(_stream(en.prev)) - - def remove(_fid: String, _id: String)(using Dba): Either[Err, Unit] = - // get entry to delete - getOrFail(_fid, _id).flatMap{ en => - val id = en.id - val fid = en.fid - val prev = en.prev - get(Fd(fid)).flatMap(_.cata(Right(_), Left(KeyNotFound))).flatMap{ fd => - val top = fd.top - ( if (id == top) - // change top and decrement - put(fd.copy(top=prev)) - else - // find entry which points to this one (next) - LazyList.iterate(start=getOrFail(fid,top))(_.flatMap(x=>getOrFail(fid,x.prev))) - .takeWhile(_.isRight) - .flatMap(_.toOption) - .find(_.prev==id) - .toRight(KeyNotFound) - // change link - .flatMap(next => _put(next.copy(prev=prev))) - ).flatMap(_ => delete(fid, id)) // delete entry - } - } diff --git a/kvs/src/main/scala/search/err.scala b/kvs/src/main/scala/search/err.scala new file mode 100644 index 00000000..4480f3e1 --- /dev/null +++ b/kvs/src/main/scala/search/err.scala @@ -0,0 +1,6 @@ +package kvs.search + +case object BrokenListing +case object BrokenFile +case object FileNotExists +case object FileExists diff --git a/kvs/src/main/scala/search/file.scala b/kvs/src/main/scala/search/file.scala new file mode 100644 index 00000000..072cdf74 --- /dev/null +++ b/kvs/src/main/scala/search/file.scala @@ -0,0 +1,140 @@ +package kvs.search + +import proto.* +import scala.annotation.tailrec +import scala.util.{Try, Success, Failure} +import java.nio.ByteBuffer +import java.util.ArrayList + +case class File + ( @N(1) name: String // name – unique value inside directory + , @N(2) count: Int // count – number of chunks + , @N(3) size: Long // size - size of file in bytes + ) + +object File: + case object NoData + + private val chunkLength: Int = 10_000_000 // 10 MB + + given MessageCodec[File] = caseCodecAuto + + private inline def pickle(e: File): Array[Byte] = encode(e) + + private def unpickle(a: Array[Byte]): Either[Throwable, File] = + Try(decode[File](a)) match + case Success(x) => Right(x) + case Failure(x) => Left(x) + + private def get(dir: String, name: String)(using dba: DbaEff): Either[FileNotExists.type | dba.Err, File] = + val path = s"/search/file/$dir/$name" + dba.get(path) match + case Right(Some(x)) => unpickle(x) + case Right(None) => Left(FileNotExists) + case Left(e) => Left(e) + + def create(dir: String, name: String)(using dba: DbaEff): Either[dba.Err | FileExists.type, File] = + dba.get(s"/search/file/$dir/${name}") match + case Right(Some(_)) => Left(FileExists) + case Right(None) => + val f = File(name, count=0, size=0L) + val x = pickle(f) + for + _ <- dba.put(s"/search/file/$dir/${name}", x) + yield f + case Left(e) => Left(e) + + def append(dir: String, name: String, data: Array[Byte])(using dba: DbaEff): Either[dba.Err | NoData.type | FileNotExists.type, File] = + val length = data.length + @tailrec + def writeChunks(count: Int, rem: Array[Byte]): Either[dba.Err, Int] = + rem.splitAt(chunkLength) match + case (xs, _) if xs.length == 0 => Right(count) + case (xs, ys) => + dba.put(s"/search/file/$dir/${name}_chunk_${count+1}", xs) match + case Right(_) => writeChunks(count+1, rem=ys) + case Left(e) => Left(e) + for + _ <- (if length == 0 then Left(NoData) else Right(())): Either[dba.Err | NoData.type, Unit] + file <- get(dir, name): Either[dba.Err | NoData.type | FileNotExists.type, File] + count <- writeChunks(file.count, rem=data) + file1 = file.copy(count=count, size=file.size+length) + file2 = pickle(file1) + _ <- dba.put(s"/search/file/$dir/${name}", file2) + yield file1 + + def size(dir: String, name: String)(using dba: DbaEff): Either[dba.Err | FileNotExists.type, Long] = + get(dir, name).map(_.size) + + def stream(dir: String, name: String)(using dba: DbaEff): Either[dba.Err | BrokenFile.type | FileNotExists.type, ArrayList[ByteBuffer]] = + for + file <- (get(dir, name): Either[dba.Err | FileNotExists.type, File]) + xs <- + (file.count match + case 0 => Right(ArrayList(0)) + case n => + inline def k(i: Int) = s"/search/file/$dir/${name}_chunk_${i}" + @tailrec + def loop(i: Int, acc: ArrayList[ByteBuffer]): Either[dba.Err | BrokenFile.type, ArrayList[ByteBuffer]] = + if i <= n then + (dba.get(k(i)).flatMap(_.fold(Left(BrokenFile))(x => Right(ByteBuffer.wrap(x).nn))): Either[dba.Err | BrokenFile.type, ByteBuffer]) match + case Right(x) => + acc.add(x) + loop(i + 1, acc) + case Left(e) => Left(e) + else + Right(acc) + loop(1, ArrayList[ByteBuffer](n))): Either[dba.Err | BrokenFile.type, ArrayList[ByteBuffer]] + yield xs + + def delete(dir: String, name: String)(using dba: DbaEff): Either[FileNotExists.type | dba.Err, File] = + for + file <- get(dir, name) + _ <- LazyList.range(1, file.count+1).map(i => dba.delete(s"/search/file/$dir/${name}_chunk_${i}")).sequence_ + _ <- dba.delete(s"/search/file/$dir/${name}") + yield file + + def copy( + dir: String + , name: (String, String) + )(using + dba: DbaEff + )(using + CanEqual[FileNotExists.type, FileNotExists.type | dba.Err] + ): Either[dba.Err | FileNotExists.type | BrokenFile.type | FileExists.type, File] = + val (fromName, toName) = name + for + from <- get(dir, fromName): Either[dba.Err | FileNotExists.type | BrokenFile.type, File] + _ <- + get(dir, toName).fold( + l => l match { + case FileNotExists => Right(()) + case _ => Left(l) + }, + _ => Left(FileExists) + ): Either[dba.Err | FileExists.type | BrokenFile.type | FileNotExists.type, Unit] + _ <- + (LazyList.range(1, from.count+1).map(i => + (for + x <- ({ + val k = s"/search/file/$dir/${fromName}_chunk_${i}" + dba.get(k).flatMap(_.fold(Left(BrokenFile))(Right(_))) + }: Either[dba.Err | FileNotExists.type | BrokenFile.type | FileExists.type, dba.V]) + _ <- dba.put(s"/search/file/$dir/${toName}_chunk_${i}", x) + yield ()): Either[dba.Err | FileNotExists.type | BrokenFile.type | FileExists.type, Unit] + ).sequence_ : Either[dba.Err | FileNotExists.type | BrokenFile.type | FileExists.type, Unit]) + to = File(toName, from.count, from.size) + x = pickle(to) + _ <- dba.put(s"/search/file/$dir/${toName}", x) + yield to + + extension [A, B](xs: Seq[Either[A, B]]) + @tailrec + private def _sequence_(ys: Seq[Either[A, B]]): Either[A, Unit] = + ys.headOption match + case None => Right(()) + case Some(Left(e)) => Left(e) + case Some(Right(z)) => _sequence_(ys.tail) + def sequence_ : Either[A, Unit] = _sequence_(xs) + end extension +end File diff --git a/kvs/src/main/scala/search/files.scala b/kvs/src/main/scala/search/files.scala new file mode 100644 index 00000000..ae7fdd31 --- /dev/null +++ b/kvs/src/main/scala/search/files.scala @@ -0,0 +1,120 @@ +package kvs.search + +import proto.* +import scala.annotation.tailrec +import scala.collection.immutable.TreeSet + +case class Fd + ( @N(1) dirname: String + , @N(2) head: Option[String] + ) + +case class En + ( @N(1) filename: String + , @N(2) next: Option[String] + ) + +object Files: + given MessageCodec[Fd] = caseCodecAuto + given MessageCodec[En] = caseCodecAuto + + def put(dirname: String)(using dba: DbaEff): Either[dba.Err, Fd] = + put(Fd(dirname, head=None)) + + def put(fd: Fd)(using dba: DbaEff): Either[dba.Err, Fd] = + dba.put(fd.dirname, encode(fd)).map(_ => fd) + + def get(dirname: String)(using dba: DbaEff): Either[dba.Err, Option[Fd]] = + val fd = Fd(dirname, head=None) + dba.get(fd.dirname).map(_.map(decode)) + + def delete(dirname: String)(using dba: DbaEff): Either[dba.Err, Unit] = + dba.delete(dirname) + + private inline def key(dirname: String, filename: String): String = s"/search/files/$dirname/$filename" + + private def _put(dirname: String, en: En)(using dba: DbaEff): Either[dba.Err, En] = + dba.put(key(dirname=dirname, filename=en.filename), encode(en)).map(_ => en) + + def get(dirname: String, filename: String)(using dba: DbaEff): Either[dba.Err, Option[En]] = + dba.get(key(dirname=dirname, filename=filename)).map(_.map(decode)) + + private def getOrFail[E](dirname: String, filename: String, err: => E)(using dba: DbaEff): Either[dba.Err | E, En] = + val k = key(dirname=dirname, filename=filename) + dba.get(k).flatMap{ + case Some(x) => Right(decode(x)) + case None => Left(err) + } + + private def delete(dirname: String, filename: String)(using dba: DbaEff): Either[dba.Err, Unit] = + dba.delete(key(dirname=dirname, filename=filename)) + + /** + * Adds the entry to the container + * Creates the container if it's absent + */ + def add(dirname: String, filename: String)(using dba: DbaEff): Either[dba.Err | FileExists.type, En] = + get(dirname).flatMap(_.fold(put(dirname))(Right(_))).flatMap{ (fd: Fd) => + (get(dirname=dirname, filename=filename).flatMap( // id of entry must be unique + _.fold(Right(()))(_ => Left(FileExists)) + ): Either[dba.Err | FileExists.type, Unit]) + .map(_ => En(filename, next=fd.head)).flatMap{ en => + // add new entry with next pointer + _put(dirname, en).flatMap{ en => + // update feed's head + put(fd.copy(head=Some(filename))).map(_ => en) + } + } + } + + def all(dirname: String)(using dba: DbaEff): Either[dba.Err | BrokenListing.type, Array[String | Null]] = + @tailrec + def loop(id: Option[String], acc: TreeSet[String]): Either[dba.Err | BrokenListing.type, Array[String | Null]] = + id match + case None => Right(acc.toArray) + case Some(id) => + val en = getOrFail(dirname, id, BrokenListing) + en match + case Right(e) => loop(e.next, acc + e.filename) + case Left(e) => Left(e) + get(dirname).flatMap(_.fold(Right(Array.empty[String | Null]))(x => loop(x.head, TreeSet.empty))) + + def remove(dirname: String, filename: String)(using dba: DbaEff): Either[dba.Err | FileNotExists.type | BrokenListing.type, Unit] = + for + // get entry to delete + en <- getOrFail(dirname, filename, FileNotExists) + fdOpt <- get(dirname) + _ <- + fdOpt match + case None => + // tangling en + delete(dirname, filename) + case Some(fd) => + (fd.head match + case None => Right(()) + case Some(head) => + for + _ <- + if filename == head then + put(fd.copy(head=en.next)) + else + @tailrec + def loop(id: Option[String]): Either[dba.Err | BrokenListing.type, En] = + id match + case None => Left(BrokenListing) + case Some(id) => + val en = getOrFail(dirname, id, BrokenListing) + en match + case Right(e) if e.next == Some(filename) => Right(e) + case Right(e) => loop(e.next) + case Left(e) => Left(e) + (for + // find entry which points to this one (next) + next <- loop(Some(head)) + // change link + _ <- _put(dirname, next.copy(next=en.next)) + yield ()): Either[dba.Err | FileNotExists.type | BrokenListing.type, Unit] + _ <- delete(dirname, filename) + yield ()): Either[dba.Err | FileNotExists.type | BrokenListing.type, Unit] + yield () +end Files diff --git a/kvs/src/main/scala/search/in.scala b/kvs/src/main/scala/search/in.scala deleted file mode 100644 index abb5b1f0..00000000 --- a/kvs/src/main/scala/search/in.scala +++ /dev/null @@ -1,68 +0,0 @@ -package zd.kvs -package search - -import org.apache.lucene.store.IndexInput -import scala.annotation.tailrec -import java.io.* - -class BytesIndexInput(resourceDescription: String, xs: Vector[Array[Byte]], offset: Long, len: Long) - extends IndexInput(resourceDescription) { - - def this(d: String, xs: Vector[Array[Byte]]) = this(d, xs, 0, xs.foldLeft(0L)((acc, x) => acc + x.length)) - - private var open = true - private var pos = offset - - override def close(): Unit = open = false - override def getFilePointer(): Long = { ensureOpen(); pos - offset } - override def length(): Long = { ensureOpen(); len } - override def readByte(): Byte = { - ensureOpen() - @tailrec def loop(remaining: Vector[Array[Byte]], p: Long): Byte = { - remaining.headOption match { - case Some(head) if p < head.length => head(Math.toIntExact(p)) - case Some(head) => loop(remaining.tail, p-head.length) - case None => throw new EOFException - } - } - val b = loop(xs, pos) - pos += 1 - b - } - override def readBytes(ys: Array[Byte] | Null, ys_offset: Int, ys_len: Int): Unit = { - ensureOpen() - @tailrec def loop_copy(src: Array[Byte], remaining: Vector[Array[Byte]], src_offset: Int, dst_offset: Int, len_remaining: Int): Unit = { - val len1 = Math.min(len_remaining, src.length-src_offset) - System.arraycopy(src, src_offset, ys, dst_offset, len1) - if (len1 < len_remaining) { - remaining.headOption match { - case Some(head2) => loop_copy(head2, remaining.tail, 0, dst_offset+len1, len_remaining-len1) - case None => throw new EOFException - } - } - } - @tailrec def loop_find(remaining: Vector[Array[Byte]], p: Long): Unit = { - remaining.headOption match { - case Some(head) if p < head.length => - loop_copy(src=head, remaining=remaining.tail, src_offset=Math.toIntExact(p), dst_offset=ys_offset, len_remaining=ys_len) - case Some(head) => loop_find(remaining.tail, p-head.length) - case None => throw new EOFException - } - } - loop_find(xs, pos) - pos += ys_len - } - override def seek(p: Long): Unit = { - ensureOpen() - pos = p + offset - if (p < 0 || p > len) throw new EOFException - } - override def slice(sliceDescription: String | Null, o: Long, l: Long): IndexInput | Null = { - ensureOpen() - new BytesIndexInput(sliceDescription.nn, xs, offset+o, l) - } - - private def ensureOpen(): Unit = { - if (!open) throw new IOException("closed") - } -} \ No newline at end of file diff --git a/kvs/src/main/scala/search/search.scala b/kvs/src/main/scala/search/search.scala new file mode 100644 index 00000000..49a0391f --- /dev/null +++ b/kvs/src/main/scala/search/search.scala @@ -0,0 +1,59 @@ +package kvs.search + +import org.apache.lucene.analysis.standard.StandardAnalyzer +import org.apache.lucene.document.Document +import org.apache.lucene.document.StoredField +import org.apache.lucene.index.DirectoryReader +import org.apache.lucene.index.IndexWriterConfig.OpenMode +import org.apache.lucene.index.{IndexWriterConfig, IndexWriter, Term} +import org.apache.lucene.search.{IndexSearcher, Query} +import org.apache.lucene.store.Directory +import proto.* +import scala.jdk.CollectionConverters.* +import scala.reflect.ClassTag +import zio.*, stream.* + +trait Search: + def run[A : Codec : ClassTag](q: Query, limit: Int=10): ZStream[Any, Throwable, A] + def index[R, E, A : Codec](xs: ZStream[R, E, A], `a->doc`: A => Document): ZIO[R, E | Throwable, Unit] +end Search + +case class SearchLive(dir: KvsDirectory) extends Search: + def run[A : Codec : ClassTag](q: Query, limit: Int): ZStream[Any, Throwable, A] = + for + reader <- ZStream.scoped(ZIO.fromAutoCloseable(ZIO.attempt(DirectoryReader.open(dir).nn))) + searcher <- ZStream.fromZIO(ZIO.attempt(IndexSearcher(reader))) + x <- ZStream.fromIterableZIO(ZIO.attempt(searcher.search(q, limit).nn.scoreDocs.nn)) + doc <- ZStream.fromZIO(ZIO.attempt(searcher.storedFields.nn.document(x.nn.doc, Set("obj").asJava).nn)) + a <- + ZStream.fromZIO{ + for + bs <- ZIO.attempt(doc.getBinaryValue("obj").nn) + obj <- ZIO.attempt(decode[A](bs.bytes.nn)) + yield obj + } + yield a + + def index[R, E, A : Codec](xs: ZStream[R, E, A], `a->doc`: A => Document): ZIO[R, E | Throwable, Unit] = + ZIO.scoped( + for + a <- ZIO.fromAutoCloseable(ZIO.attempt(StandardAnalyzer())) + c <- ZIO.attempt(IndexWriterConfig(a)) + _ <- ZIO.attempt(c.setOpenMode(OpenMode.CREATE)) + w <- ZIO.fromAutoCloseable(ZIO.attempt(IndexWriter(dir, c))) + _ <- + xs.mapZIO(a => ZIO.attempt(w.addDocument{ + val doc = `a->doc`(a) + doc.add(StoredField("obj", encode[A](a))) + doc + }): ZIO[R, E | Throwable, Unit]).runDrain + yield () + ) +end SearchLive + +val layer: ZLayer[KvsDirectory, Nothing, Search] = + ZLayer { + for + dir <- ZIO.service[KvsDirectory] + yield SearchLive(dir) + } diff --git a/kvs/src/main/scala/sharding/consistency.scala b/kvs/src/main/scala/sharding/consistency.scala new file mode 100644 index 00000000..400272a2 --- /dev/null +++ b/kvs/src/main/scala/sharding/consistency.scala @@ -0,0 +1,30 @@ +package kvs.sharding + +import org.apache.pekko.actor.{Actor, Props} +import zd.kvs.DbaErr +import zio.* + +trait SeqConsistency: + def send(msg: Any): IO[DbaErr, Any] + +object SeqConsistency: + case class Config(name: String, f: Any => IO[Any, Any], id: Any => String) + + val live: ZLayer[ClusterSharding & Config, Nothing, SeqConsistency] = + ZLayer( + for + sharding <- ZIO.service[ClusterSharding] + cfg <- ZIO.service[Config] + shards <- + sharding.start( + cfg.name + , Props(new Actor: + def receive: Receive = + a => sender() ! Unsafe.unsafely(Runtime.default.unsafe.run(cfg.f(a))) + ) + , cfg.id) + yield + new SeqConsistency: + def send(msg: Any): IO[DbaErr, Any] = + sharding.send(shards, msg) + ) diff --git a/kvs/src/main/scala/sharding/sharding.scala b/kvs/src/main/scala/sharding/sharding.scala new file mode 100644 index 00000000..56f0eeb5 --- /dev/null +++ b/kvs/src/main/scala/sharding/sharding.scala @@ -0,0 +1,53 @@ +package kvs.sharding + +import org.apache.pekko.actor.{Actor, ActorRef, Props} +import org.apache.pekko.cluster.sharding.{ClusterSharding as PekkoClusterSharding, ClusterShardingSettings, ShardRegion} +import zd.rng.ActorSystem +import zio.* + +trait ClusterSharding: + def start[A](name: String, props: Props, id: A => String): UIO[ActorRef] + def send[A, E](shardRegion: ActorRef, msg: Any): IO[E, A] + +val live: URLayer[ActorSystem, ClusterSharding] = + ZLayer( + for + system <- ZIO.service[ActorSystem] + sharding <- ZIO.succeed(PekkoClusterSharding(system)) + yield + new ClusterSharding: + def start[A](name: String, props: Props, id: A => String): UIO[ActorRef] = + ZIO.succeed( + sharding.start( + typeName = name, + entityProps = props, + settings = ClusterShardingSettings(system), + extractEntityId = { + case msg: A @unchecked => (id(msg), msg) + }: ShardRegion.ExtractEntityId, + extractShardId = { + case msg => (math.abs(id(msg.asInstanceOf[A]).hashCode) % 100).toString + }: ShardRegion.ExtractShardId, + ) + ) + + def send[A, E](shardRegion: ActorRef, msg: Any): IO[E, A] = + ZIO.asyncZIO{ (callback: IO[E, A] => Unit) => + for + receiver <- ZIO.succeed(system.actorOf(Props(Receiver[A, E]{ + case Exit.Success(a) => callback(ZIO.succeed(a)) + case Exit.Failure(e) => callback(ZIO.failCause(e)) + }))) + _ <- ZIO.succeed(shardRegion.tell(msg, receiver)) + yield () + } + ) + +class Receiver[A, E](handler: Exit[E, A] => Unit) extends Actor: + def receive: Receive = + case r: Exit[E @unchecked, A @unchecked] => + handler(r) + context.stop(self) + case x => + println(x.toString) + context.stop(self) diff --git a/kvs/src/main/scala/sort/sort.scala b/kvs/src/main/scala/sort/sort.scala new file mode 100644 index 00000000..7743644c --- /dev/null +++ b/kvs/src/main/scala/sort/sort.scala @@ -0,0 +1,237 @@ +package kvs.sort + +import com.google.protobuf.{CodedOutputStream, CodedInputStream} +import java.io.IOException +import proto.* +import scala.math.Ordering +import scala.math.Ordering.Implicits.infixOrderingOps +import zd.kvs.* +import zd.rng.* +import zio.*, stream.* + +trait Sort: + def insert[A: Codec: Ordering](ns: String, x: A)(using CanEqual[A, A]): IO[Err, Unit] + def remove[A: Codec: Ordering](ns: String, x: A)(using CanEqual[A, A]): IO[Err, Unit] + def flatten[A: Codec](ns: String): Stream[Err, A] +end Sort + +type Err = DbaErr | IOException + +def insert[A: Codec: Ordering](ns: String, x: A)(using CanEqual[A, A]): ZIO[Sort, Err, Unit] = + ZIO.serviceWithZIO(_.insert(ns, x)) + +def remove[A: Codec: Ordering](ns: String, x: A)(using CanEqual[A, A]): ZIO[Sort, Err, Unit] = + ZIO.serviceWithZIO(_.remove(ns, x)) + +def flatten[A: Codec](ns: String): ZStream[Sort, Err, A] = + ZStream.serviceWithStream(_.flatten(ns)) + +class SortLive(dba: Dba) extends Sort: + def insert[A: Codec: Ordering](ns: String, x: A)(using CanEqual[A, A]): IO[Err, Unit] = + for + h <- dba_head + node <- dba_get(ns, h) + _ <- + node match + case None => dba_add(ns, toNode(x)) + case Some(node) => insert(ns, x, node, h) + yield () + + private def insert[A: Codec: Ordering](ns: String, x: A, node: Node[A], nodeKey: Key)(using CanEqual[A, A]): IO[Err, Unit] = + node match + case Node(_, y, _, false) if x == y => + dba_put(ns, nodeKey, node.copy(active=true)) + + case Node(_, y, _, true) if x == y => ZIO.unit + + case Node(None, y, _, _) if x < y => + for + k <- dba_add(ns, toNode(x)) + _ <- dba_put(ns, nodeKey, node.copy(left=Some(k))) + yield () + + case Node(Some(t), y, _, _) if x < y => + for + node1 <- dba_get(ns, t) + _ <- + node1 match + case None => + for + k <- dba_add(ns, toNode(x)) + _ <- dba_put(ns, nodeKey, node.copy(left=Some(k))) + yield () + case Some(node1) => + insert(ns, x, node1, t) + yield () + + case Node(_, _, None, _) => + for + k <- dba_add(ns, toNode(x)) + _ <- dba_put(ns, nodeKey, node.copy(right=Some(k))) + yield () + + case Node(_, _, Some(s), _) => + for + node1 <- dba_get(ns, s) + _ <- + node1 match + case None => + for + k <- dba_add(ns, toNode(x)) + _ <- dba_put(ns, nodeKey, node.copy(right=Some(k))) + yield () + case Some(node1) => + insert(ns, x, node1, s) + yield () + + def remove[A: Codec: Ordering](ns: String, x: A)(using CanEqual[A, A]): IO[Err, Unit] = + for + h <- dba_head + node <- dba_get(ns, h) + _ <- + node match + case None => ZIO.unit + case Some(node) => remove(ns, x, node, h) + yield () + + private def remove[A: Codec: Ordering](ns: String, x: A, node: Node[A], nodeKey: Key)(using CanEqual[A, A]): IO[Err, Unit] = + node match + case Node(_, y, _, false) if x == y => ZIO.unit + + case Node(_, y, _, true) if x == y => + dba_put(ns, nodeKey, node.copy(active=false)) + + case Node(None, y, _, _) if x < y => ZIO.unit + + case Node(Some(t), y, _, _) if x < y => + for + node1 <- dba_get(ns, t) + _ <- + node1 match + case None => ZIO.unit + case Some(node1) => + remove(ns, x, node1, t) + yield () + + case Node(_, _, None, _) => ZIO.unit + + case Node(_, _, Some(s), _) => + for + node1 <- dba_get(ns, s) + _ <- + node1 match + case None => ZIO.unit + case Some(node1) => + remove(ns, x, node1, s) + yield () + + def flatten[A: Codec](ns: String): Stream[Err, A] = + for + h <- ZStream.fromZIO(dba_head) + xs <- flatten(ns, h) + yield xs + + private def flatten[A: Codec](ns: String, nodeKey: Key): Stream[Err, A] = + for + node <- ZStream.fromZIO(dba_get(ns, nodeKey)) + xs <- + node match + case None => ZStream.empty + case Some(Node(t, x, s, a)) => + val xs = ZStream(x).filter(_ => a) + val ts = ZStream(t).collectSome.flatMap(flatten(ns, _)) + val ss = ZStream(s).collectSome.flatMap(flatten(ns, _)) + ts ++ xs ++ ss + yield xs + + inline private def toNode[A](x: A): Node[A] = Node(None, x, None, active=true) + + type Key = Long + + case class Node[A](@N(1) left: Option[Key], @N(2) x: A, @N(3) right: Option[Key], @N(4) active: Boolean) + + def dba_add[A: Codec](ns: String, v: Node[A]): IO[Err, Key] = + for + nse <- encodeNS(ns) + ide <- dba.get(nse) + id <- + ide match + case Some(ide) => decodeKeyAsValue(ide) + case None => ZIO.succeed(0L) + id1 <- ZIO.succeed(id + 1L) + id1e <- encodeKeyAsValue(id1) + _ <- dba.put(nse, id1e) + _ <- dba_put(ns, id1, v) + yield id1 + + def dba_put[A: Codec](ns: String, k: Key, v: Node[A]): IO[Err, Unit] = + for + ke <- encodeKey(ns, k) + ve <- encodeNode(v) + _ <- dba.put(ke, ve) + yield () + + def dba_get[A: Codec](ns: String, k: Key): IO[Err, Option[Node[A]]] = + for + ke <- encodeKey(ns, k) + ve <- dba.get(ke) + v <- + ve match + case None => ZIO.none + case Some(ve) => decodeNode(ve).asSome + yield v + + def dba_head: UIO[Key] = ZIO.succeed(1L) + + def encodeNode[A: Codec](x: Node[A]): UIO[Array[Byte]] = + ZIO.succeed(encode(x)) + + def decodeNode[A: Codec](bs: Array[Byte]): UIO[Node[A]] = + ZIO.succeed(decode(bs)) + + def decodeKeyAsValue(bs: Array[Byte]): IO[IOException, Key] = + for + cis <- ZIO.succeed(CodedInputStream.newInstance(bs).nn) + k <- ZIO.attempt(cis.readUInt64).refineToOrDie[IOException] + yield k + + def encodeKeyAsValue(k: Key): IO[IOException, Array[Byte]] = + for + _ <- ZIO.when(k <= 0)(ZIO.dieMessage("key is not positive")) + size <- ZIO.succeed(CodedOutputStream.computeUInt64SizeNoTag(k)) + bs <- ZIO.succeed(new Array[Byte](size)) + cos <- ZIO.succeed(CodedOutputStream.newInstance(bs).nn) + _ <- ZIO.attempt(cos.writeUInt64NoTag(k)).refineToOrDie[IOException] + yield bs + + def encodeKey(ns: String, k: Key): IO[IOException, Array[Byte]] = + for + _ <- ZIO.when(k <= 0)(ZIO.dieMessage("key is not positive")) + size <- + ZIO.succeed( + CodedOutputStream.computeStringSizeNoTag(ns) + + 1 + + CodedOutputStream.computeUInt64SizeNoTag(k) + ) + bs <- ZIO.succeed(new Array[Byte](size)) + cos <- ZIO.succeed(CodedOutputStream.newInstance(bs).nn) + _ <- ZIO.attempt(cos.writeStringNoTag(ns)).refineToOrDie[IOException] + _ <- ZIO.attempt(cos.write(0x9: Byte)).refineToOrDie[IOException] + _ <- ZIO.attempt(cos.writeUInt64NoTag(k)).refineToOrDie[IOException] + yield bs + + def encodeNS(ns: String): IO[IOException, Array[Byte]] = + for + size <- ZIO.succeed(CodedOutputStream.computeStringSizeNoTag(ns)) + bs <- ZIO.succeed(new Array[Byte](size)) + cos <- ZIO.succeed(CodedOutputStream.newInstance(bs).nn) + _ <- ZIO.attempt(cos.writeStringNoTag(ns)).refineToOrDie[IOException] + yield bs + + given [A: Codec]: Codec[Node[A]] = caseCodecAuto + +end SortLive + +object SortLive: + val layer: URLayer[Dba, Sort] = + ZLayer.fromFunction(SortLive(_)) diff --git a/kvs/src/main/scala/store/dba.scala b/kvs/src/main/scala/store/dba.scala index 8f1cd46a..2bc33f56 100644 --- a/kvs/src/main/scala/store/dba.scala +++ b/kvs/src/main/scala/store/dba.scala @@ -1,30 +1,20 @@ package zd.kvs -import scala.concurrent.Future +import org.apache.pekko.actor.{Actor, ActorLogging, Props, Deploy} +import org.apache.pekko.event.Logging +import org.apache.pekko.routing.FromConfig +import zd.rng.* +import zd.rng.store.{ReadonlyStore, WriteStore} +import org.rocksdb.{util as _, *} +import proto.* +import scala.language.postfixOps +import zio.* -/** Database Application Interface */ -trait Dba { self: AutoCloseable => - type K = String - type V = Array[Byte] - type R[A] = Either[Err, A] +/* Database API */ +trait Dba: + def put(key: Key, value: Value): IO[DbaErr, Unit] + def get(key: Key): IO[DbaErr, Option[Value]] + def delete(key: Key): IO[DbaErr, Unit] +end Dba - def put(key: K, value: V): R[Unit] - def get(key: K): R[Option[V]] - def delete(key: K): R[Unit] - - def save(path: String): R[String] - def load(path: String): R[String] - - def onReady(): Future[Unit] - def compact(): Unit - def deleteByKeyPrefix(keyPrefix: K): R[Unit] - - def close(): Unit -} - -extension (x: Dba) - def getOrFail(key: x.K): x.R[x.V] = - x.get(key).flatMap{ - case None => Left(KeyNotFound) - case Some(x) => Right(x) - } +type DbaErr = AckQuorumFailed | AckTimeoutFailed diff --git a/kvs/src/main/scala/store/mem.scala b/kvs/src/main/scala/store/mem.scala deleted file mode 100644 index 42646626..00000000 --- a/kvs/src/main/scala/store/mem.scala +++ /dev/null @@ -1,26 +0,0 @@ -package zd.kvs - -import scala.collection.concurrent.TrieMap -import scala.concurrent.Future -import util.chaining.* - -class Mem extends Dba, AutoCloseable: - private val db = TrieMap[String, V]() - - override def get(key: String): R[Option[V]] = - db.get(key).pipe(Right.apply) - - override def put(key: String, value: V): R[Unit] = - db.put(key, value).pipe(Right.apply).map(_ => unit) - - override def delete(key: String): R[Unit] = - db.remove(key).pipe(Right.apply).map(_ => unit) - - override def onReady(): Future[Unit] = Future.successful(()) - override def compact(): Unit = () - - override def load(path: String): R[String] = ??? - override def save(path: String): R[String] = ??? - override def deleteByKeyPrefix(k: K): R[Unit] = ??? - - override def close(): Unit = unit diff --git a/kvs/src/main/scala/store/rks.scala b/kvs/src/main/scala/store/rks.scala deleted file mode 100644 index 0ba3ca37..00000000 --- a/kvs/src/main/scala/store/rks.scala +++ /dev/null @@ -1,84 +0,0 @@ -package zd.kvs - -import akka.actor.* -import akka.event.Logging -import akka.pattern.ask -import akka.util.{Timeout} -import akka.event.LoggingAdapter -import proto.* -import org.rocksdb.* -import zio.* -import scala.concurrent.* -import scala.concurrent.duration.* -import scala.util.{Try, Success, Failure} -import scala.util.chaining.* -import scala.concurrent.Future -import zd.rks.DumpProcessor - -class Rks(system: ActorSystem, dir: String) extends Dba, AutoCloseable: - RocksDB.loadLibrary() - private val logging: LoggingAdapter = Logging(system, "rks") - private val cfg = system.settings.config.getConfig("rks").nn - private val opts = Options().nn - .setCreateIfMissing(true).nn - .setCompressionType(CompressionType.LZ4_COMPRESSION).nn - .setLogger(new Logger(Options()) { - def log(infoLogLevel: InfoLogLevel, logMsg: String): Unit = - infoLogLevel match - case InfoLogLevel.DEBUG_LEVEL => logging.debug(logMsg) - case InfoLogLevel.INFO_LEVEL => logging.debug(logMsg) - case InfoLogLevel.WARN_LEVEL => logging.warning(logMsg) - case _ => logging.error(logMsg) - }).nn - private val db = RocksDB.open(opts, dir).nn - - private def withRetryOnce[A](op: Array[Byte] => A, key: K): R[A] = - val eff = for { - k <- ZIO.succeed(zd.rng.stob(key)) - x <- ZIO.attempt(op(k)).retry(Schedule.fromDuration(100 milliseconds)) - } yield x - Try( - Unsafe.unsafe { implicit unsafe => - Runtime.default.unsafe.run(eff.either).getOrThrowFiberFailure() - } - ).toEither.flatten.leftMap(Failed) - - override def get(key: K): R[Option[V]] = - for { - x <- withRetryOnce(db.get, key) - } yield if x != null then Some(x) else None - - override def put(key: K, value: V): R[Unit] = - withRetryOnce(db.put(_, value), key) - - override def delete(key: K): R[Unit] = - withRetryOnce(db.delete, key) - - def compact(): Unit = db.compactRange() - - def save(path: String): R[String] = - val d = FiniteDuration(1, HOURS) - val dump = system.actorOf(DumpProcessor.props(db), s"dump_wrkr-${java.lang.System.currentTimeMillis}") - val x = dump.ask(DumpProcessor.Save(path))(Timeout(d)) - Try(Await.result(x, d)) match - case Success(v: String) => Right(v) - case Success(v) => Left(RngFail(s"Unexpected response: ${v}")) - case Failure(t) => Left(Failed(t)) - - def load(path: String): R[String] = - val d = concurrent.duration.Duration.fromNanos(cfg.getDuration("dump-timeout").nn.toNanos) - val dump = system.actorOf(DumpProcessor.props(db), s"dump_wrkr-${java.lang.System.currentTimeMillis}") - val x = dump.ask(DumpProcessor.Load(path))(Timeout(d)) - Try(Await.result(x, d)) match - case Success(v: String) => Right(v) - case Success(v) => Left(RngFail(s"Unexpected response: ${v}")) - case Failure(t) => Left(Failed(t)) - - def onReady(): Future[Unit] = Future.successful(unit) - def deleteByKeyPrefix(keyPrefix: K): R[Unit] = ??? - - override def close(): Unit = - try { db.close() } catch { case _: Throwable => unit } - try { opts.close() } catch { case _: Throwable => unit } - - given [A]: CanEqual[A, A | Null] = CanEqual.derived diff --git a/kvs/src/main/scala/store/rng.scala b/kvs/src/main/scala/store/rng.scala index c8d324f2..0f375680 100644 --- a/kvs/src/main/scala/store/rng.scala +++ b/kvs/src/main/scala/store/rng.scala @@ -1,129 +1,89 @@ package zd.kvs -import akka.actor.* -import akka.event.Logging -import akka.pattern.ask -import akka.routing.FromConfig -import akka.util.{Timeout} -import leveldbjnr.LevelDb -import zd.rng +import org.apache.pekko.actor.{Actor, ActorLogging, Props, Deploy} +import org.apache.pekko.event.Logging +import org.apache.pekko.routing.FromConfig +import zd.rng.*, model.*, QuorumState.* import zd.rng.store.{ReadonlyStore, WriteStore} -import zd.rng.stob -import scala.concurrent.* -import scala.concurrent.duration.* -import scala.util.{Try, Success, Failure} - -class Rng(system: ActorSystem) extends Dba, AutoCloseable: - private val log = Logging(system, "hash-ring") - - private val cfg = system.settings.config.getConfig("ring").nn - - system.eventStream - - private val leveldbPath = cfg.getString("leveldb.dir").nn - private val db: LevelDb = LevelDb.open(leveldbPath).fold(l => throw l, r => r) - - private val writeStore = system.actorOf(WriteStore.props(db).withDeploy(Deploy.local), name="ring_write_store") - system.actorOf(FromConfig.props(ReadonlyStore.props(db)).withDeploy(Deploy.local), name="ring_readonly_store") - - private val hash = system.actorOf(rng.Hash.props(db).withDeploy(Deploy.local), name="ring_hash") - - override def put(key: K, value: V): R[Unit] = - val d = Duration.fromNanos(cfg.getDuration("ring-timeout").nn.toNanos) - val t = Timeout(d) - val putF = hash.ask(rng.Put(stob(key), value))(t).mapTo[rng.Ack] - Try(Await.result(putF, d)) match - case Success(rng.AckSuccess(_)) => Right(()) - case Success(rng.AckQuorumFailed(why)) => Left(RngAskQuorumFailed(why)) - case Success(rng.AckTimeoutFailed(op, k)) => Left(RngAskTimeoutFailed(op, k)) - case Failure(t) => Left(Failed(t)) - - private def isReady(): Future[Boolean] = - val d = Duration.fromNanos(cfg.getDuration("ring-timeout").nn.toNanos) - val t = Timeout(d) - hash.ask(rng.Ready)(t).mapTo[Boolean] - - override def onReady(): Future[Unit] = - val p = Promise[Unit]() - def loop(): Unit = - import system.dispatcher - system.scheduler.scheduleOnce(1 second){ - isReady() onComplete { - case Success(true) => - log.info("KVS is ready") - p.success(()) - case _ => - log.info("KVS isn't ready yet...") - loop() - } - } - loop() - p.future - - override def get(key: K): R[Option[V]] = - val d = Duration.fromNanos(cfg.getDuration("ring-timeout").nn.toNanos) - val t = Timeout(d) - val fut = hash.ask(rng.Get(stob(key)))(t).mapTo[rng.Ack] - Try(Await.result(fut, d)) match - case Success(rng.AckSuccess(v)) => Right(v) - case Success(rng.AckQuorumFailed(why)) => Left(RngAskQuorumFailed(why)) - case Success(rng.AckTimeoutFailed(op, k)) => Left(RngAskTimeoutFailed(op, k)) - case Failure(t) => Left(Failed(t)) - - override def delete(key: K): R[Unit] = - val d = Duration.fromNanos(cfg.getDuration("ring-timeout").nn.toNanos) - val t = Timeout(d) - val fut = hash.ask(rng.Delete(stob(key)))(t).mapTo[rng.Ack] - Try(Await.result(fut, d)) match - case Success(rng.AckSuccess(_)) => Right(()) - case Success(rng.AckQuorumFailed(why)) => Left(RngAskQuorumFailed(why)) - case Success(rng.AckTimeoutFailed(op, k)) => Left(RngAskTimeoutFailed(op, k)) - case Failure(t) => Left(Failed(t)) - - override def save(path: String): R[String] = - val d = 1 hour - val x = hash.ask(rng.Save(path))(Timeout(d)) - Try(Await.result(x, d)) match - case Success(rng.AckQuorumFailed(why)) => Left(RngAskQuorumFailed(why)) - case Success(v: String) => Right(v) - case Success(v) => Left(RngFail(s"Unexpected response: ${v}")) - case Failure(t) => Left(Failed(t)) - - def iterate(f: (K, V) => Unit): R[String] = - val d = 1 hour - val x = hash.ask(rng.Iterate((key, value) => f(new String(key, "UTF-8"), value)))(Timeout(d)) - Try(Await.result(x, d)) match - case Success(rng.AckQuorumFailed(why)) => Left(RngAskQuorumFailed(why)) - case Success(v: String) => Right(v) - case Success(v) => Left(RngFail(s"Unexpected response: ${v}")) - case Failure(t) => Left(Failed(t)) - - override def load(path: String): R[String] = - val d = Duration.fromNanos(cfg.getDuration("dump-timeout").nn.toNanos) - val t = Timeout(d) - val x = hash.ask(rng.Load(path))(t) - Try(Await.result(x, d)) match - case Success(rng.AckQuorumFailed(why)) => Left(RngAskQuorumFailed(why)) - case Success(v: String) => Right(v) - case Success(v) => Left(RngFail(s"Unexpected response: ${v}")) - case Failure(t) => Left(Failed(t)) - - override def compact(): Unit = - db.compact() - - override def deleteByKeyPrefix(k: K): R[Unit] = - val d = Duration.fromNanos(cfg.getDuration("iter-timeout").nn.toNanos) - val t = Timeout(d) - val x = hash.ask(rng.Iter(stob(k)))(t) - Try(Await.result(x, d)) match - case Success(rng.AckQuorumFailed(why)) => Left(RngAskQuorumFailed(why)) - case Success(res: zd.rng.IterRes) => - res.keys.foreach(log.info) - res.keys.map(delete).sequence_ - case Success(v) => Left(RngFail(s"Unexpected response: ${v}")) - case Failure(t) => Left(Failed(t)) - - override def close(): Unit = - hash ! PoisonPill - writeStore ! PoisonPill +import org.rocksdb.{util as _, *} +import proto.* +import scala.language.postfixOps +import zio.* + +object Rng: + val live: ZLayer[ActorSystem & Conf, Throwable, Dba] = + ZLayer.scoped( + for + as <- ZIO.service[ActorSystem] + conf <- ZIO.service[Conf] + _ <- ZIO.attempt(RocksDB.loadLibrary()) + opts <- + ZIO.fromAutoCloseable( + ZIO.attempt{ + Options().nn + .setCreateIfMissing(true).nn + .setCompressionType(CompressionType.LZ4_COMPRESSION).nn + } + ) + db <- + ZIO.fromAutoCloseable( + ZIO.attempt( + RocksDB.open(opts, conf.dir).nn + ) + ) + _ <- ZIO.attempt(as.eventStream) + dba <- + ZIO.attempt( + new Dba: + val hashing = Hashing(conf) + as.actorOf(WriteStore.props(db, hashing).withDeploy(Deploy.local), name="ring_write_store") + as.actorOf(FromConfig.props(ReadonlyStore.props(db, hashing)).withDeploy(Deploy.local), name="ring_readonly_store") + + given CanEqual[Node, Node] = CanEqual.derived + given CanEqual[QuorumStateUnsatisfied.type, QuorumState] = CanEqual.derived + given CanEqual[ReplBucketUpToDate.type, Any] = CanEqual.derived + given CanEqual[RestoreState.type, Any] = CanEqual.derived + given CanEqual[String, Any] = CanEqual.derived + val hash = as.actorOf(Hash.props(conf, hashing).withDeploy(Deploy.local), name="ring_hash") + + def put(key: Key, value: Value): IO[DbaErr, Unit] = + withRetryOnce(Put(key, value)).unit + + def get(key: Key): IO[DbaErr, Option[Value]] = + withRetryOnce(Get(key)) + + def delete(key: Key): IO[DbaErr, Unit] = + withRetryOnce(Delete(key)).unit + + private def withRetryOnce[A](v: => A): IO[DbaErr, Option[Array[Byte]]] = + ZIO.async{ + (callback: IO[DbaErr, Option[Array[Byte]]] => Unit) => + val receiver = as.actorOf(AckReceiver.props{ + case Right(a) => callback(ZIO.succeed(a)) + case Left(e) => callback(ZIO.fail(e)) + }) + hash.tell(v, receiver) + }.retry(Schedule.fromDuration(100 milliseconds)) + ) + yield dba + ) end Rng + +type AckReceiverCallback = Either[DbaErr, Option[Value]] => Unit + +object AckReceiver: + def props(cb: AckReceiverCallback): Props = Props(AckReceiver(cb)) + +class AckReceiver(cb: AckReceiverCallback) extends Actor with ActorLogging: + def receive: Receive = + case x: Ack => + val res = x match + case AckSuccess(v) => Right(v) + case x: AckQuorumFailed => Left(x) + case x: AckTimeoutFailed => Left(x) + cb(res) + context.stop(self) + case x => + log.error(x.toString) + context.stop(self) +end AckReceiver diff --git a/kvs/src/test/resources/application.conf b/kvs/src/test/resources/application.conf deleted file mode 100644 index bf7b5ae2..00000000 --- a/kvs/src/test/resources/application.conf +++ /dev/null @@ -1,16 +0,0 @@ -akka { - loglevel = off - - remote.artery.canonical { - hostname = 127.0.0.1 - port = 4460 - } - - cluster { - seed-nodes = [ - "akka.tcp://Test@127.0.0.1:4460", - ] - } -} - -ring.leveldb.dir = "rng_data_test" diff --git a/kvs/src/test/resources/logback.xml b/kvs/src/test/resources/logback.xml deleted file mode 100644 index 5d16a1e1..00000000 --- a/kvs/src/test/resources/logback.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - %date{HH:mm:ss.SSS} %highlight(%-5level) %cyan(%logger{36}) %X{akkaSource} - %msg%n - - - - - - - diff --git a/kvs/src/test/scala/conf.scala b/kvs/src/test/scala/conf.scala deleted file mode 100644 index 9e650992..00000000 --- a/kvs/src/test/scala/conf.scala +++ /dev/null @@ -1,24 +0,0 @@ -package zd.kvs - -object conf { - def tmpl(port: Int) = s""" - |akka { - | loglevel = off - | - | actor.provider = cluster - | - | remote.artery.canonical { - | hostname = 127.0.0.1 - | port = ${port} - | } - | - | cluster { - | seed-nodes = [ - | "akka.tcp://Test@127.0.0.1:${port}", - | ] - | } - |} - | - |ring.leveldb.dir = "rng_data_test_${port}" - """.stripMargin -} diff --git a/kvs/src/test/scala/el.test.scala b/kvs/src/test/scala/el.test.scala deleted file mode 100644 index c6eae599..00000000 --- a/kvs/src/test/scala/el.test.scala +++ /dev/null @@ -1,35 +0,0 @@ -package zd.kvs - -import akka.actor.* -import com.typesafe.config.{ConfigFactory} -import org.scalatest.freespec.AnyFreeSpecLike -import org.scalatest.matchers.should.Matchers -import org.scalatest.* -import scala.concurrent.Await -import scala.concurrent.duration.* -import scala.util.Try - -class ElHandlerTest extends AnyFreeSpecLike with Matchers with EitherValues with BeforeAndAfterAll { - val kvs = Kvs.mem() - - "el handler should" - { - "return error when element is absent" in { - kvs.el.get[String]("key").getOrElse(???) should be (None) - } - "save value" in { - kvs.el.put("key","value").getOrElse(???) should be ("value") - } - "retrieve value" in { - kvs.el.get[String]("key").getOrElse(???) should be (Some("value")) - } - "override value" in { - kvs.el.put("key","value2").getOrElse(???) should be ("value2") - } - "delete value" in { - kvs.el.delete[String]("key").getOrElse(???) should be (()) - } - "clean up" in { - kvs.el.get[String]("key").getOrElse(???) should be (None) - } - } -} diff --git a/kvs/src/test/scala/feed.test.scala b/kvs/src/test/scala/feed.test.scala new file mode 100644 index 00000000..7b03bb2f --- /dev/null +++ b/kvs/src/test/scala/feed.test.scala @@ -0,0 +1,38 @@ +package kvs.feed + +import zd.kvs.* +import zd.rng.* +import proto.* +import scala.concurrent.duration.* +import scala.language.postfixOps +import zio.* +import zio.test.*, Assertion.* +import zio.test.ZIOSpecDefault + +case class Entry(@N(1) i: Int) + +given MessageCodec[Entry] = caseCodecAuto + +object FeedSpec extends ZIOSpecDefault: + val name = "test" + val pekkoConf: ULayer[ActorSystem.Conf] = + ActorSystem.staticConf(name, zd.rng.pekkoConf(name, "127.0.0.1", 4344) ++ "pekko.loglevel=off") + val actorSystem: TaskLayer[ActorSystem] = + pekkoConf >>> ActorSystem.live + val dbaConf: ULayer[zd.rng.Conf] = + ZLayer.succeed(zd.rng.Conf(dir = s"target/data-${java.util.UUID.randomUUID}")) + val dba: TaskLayer[Dba] = + actorSystem ++ dbaConf >>> Rng.live + val feedLayer: TaskLayer[Feed] = + actorSystem ++ dba >>> kvs.feed.live + + def spec = suite("FeedSpec")( + test("FILO") { + val fid = "feed" + (for + _ <- add(fid, Entry(1)) + _ <- add(fid, Entry(2)) + xs <- all(fid).map(_._2.i).runCollect + yield assert(xs)(equalTo(Seq(2, 1)))).provideLayer(feedLayer) + } + ) \ No newline at end of file diff --git a/kvs/src/test/scala/file.test.scala b/kvs/src/test/scala/file.test.scala deleted file mode 100644 index 3883d157..00000000 --- a/kvs/src/test/scala/file.test.scala +++ /dev/null @@ -1,60 +0,0 @@ -package zd.kvs - -import akka.actor.* -import com.typesafe.config.{ConfigFactory} -import org.scalatest.freespec.AnyFreeSpecLike -import org.scalatest.matchers.should.Matchers -import org.scalatest.* -import scala.concurrent.Await -import scala.concurrent.duration.* -import scala.util.Try - -class FileHandlerTest extends AnyFreeSpecLike with Matchers with EitherValues with BeforeAndAfterAll { - val kvs = Kvs.mem() - - val dir = "dir" - val name = "name" + java.util.UUID.randomUUID.toString - - implicit val fh: FileHandler = new FileHandler { - override val chunkLength = 5 - } - - "file" - { - "create" in { - kvs.file.create(dir, name).isRight should be (true) - } - "create if exists" in { - kvs.file.create(dir, name).left.value should be (FileAlreadyExists(dir, name)) - } - "append" in { - val r = kvs.file.append(dir, name, Array[Byte](1, 2, 3, 4, 5, 6)) - r.isRight should be (true) - r.getOrElse(???).size should be (6) - r.getOrElse(???).count should be (2) - } - "size" in { - val r = kvs.file.size(dir, name) - r.isRight should be (true) - r.getOrElse(???) should be (6) - } - "size if absent" in { - kvs.file.size(dir, name + "1").left.value should be (FileNotExists(dir, name + "1")) - } - "content" in { - val r = kvs.file.stream(dir, name) - r.isRight should be (true) - val r1 = r.getOrElse(???).sequence - r1.isRight should be (true) - r1.getOrElse(???).toArray.flatten should be (Array[Byte](1, 2, 3, 4, 5, 6)) - } - "content if absent" in { - kvs.file.stream(dir, name + "1").left.value should be (FileNotExists(dir, name + "1")) - } - "delete" in { - kvs.file.delete(dir, name).isRight should be (true) - } - "delete if absent" in { - kvs.file.delete(dir, name).left.value should be (FileNotExists(dir, name)) - } - } -} diff --git a/kvs/src/test/scala/in.test.scala b/kvs/src/test/scala/in.test.scala deleted file mode 100644 index e113de85..00000000 --- a/kvs/src/test/scala/in.test.scala +++ /dev/null @@ -1,54 +0,0 @@ -package zd.kvs -package search - -import org.scalatest.freespec.AnyFreeSpecLike -import org.scalatest.matchers.should.Matchers -import java.util.Arrays - -class InTest extends AnyFreeSpecLike with Matchers { - val in = new BytesIndexInput("test", Vector( - Array[Byte](1,2,3) - , Array[Byte](4,5,6) - , Array[Byte](7,8,9) - , Array[Byte](0,1,2) - )) - "read byte" in { - in.readByte shouldBe 1 - in.readByte shouldBe 2 - in.readByte shouldBe 3 - in.readByte shouldBe 4 - in.seek(0) - in.readByte shouldBe 1 - in.seek(2) - in.readByte shouldBe 3 - in.seek(3) - in.readByte shouldBe 4 - in.seek(7) - in.readByte shouldBe 8 - in.seek(5) - in.readByte shouldBe 6 - in.readByte shouldBe 7 - } - "read bytes across arrays" in { - in.seek(4) - val res_offset = 2 - val res_len = 6 - val res = new Array[Byte](res_offset+res_len) - in.readBytes(res, res_offset, res_len) - assert(Arrays.equals(res, Array.fill[Byte](res_offset)(0)++Array[Byte](5,6,7,8,9,0)), "bad: "+res.mkString("[",",","]")) - } - "slice" in { - val slice = in.slice("slice", 4, 3).nn - slice.length shouldBe 3 - slice.getFilePointer shouldBe 0 - slice.readByte shouldBe 5 - slice.readByte shouldBe 6 - slice.readByte shouldBe 7 - slice.seek(1) - slice.readByte shouldBe 6 - slice.seek(0) - val res = new Array[Byte](3) - slice.readBytes(res, 0, 3) - assert(Arrays.equals(res, Array[Byte](5,6,7)), "bad: "+res.mkString("[",",","]")) - } -} \ No newline at end of file diff --git a/kvs/src/test/scala/index.test.scala b/kvs/src/test/scala/index.test.scala deleted file mode 100644 index 063590bb..00000000 --- a/kvs/src/test/scala/index.test.scala +++ /dev/null @@ -1,114 +0,0 @@ -package zd.kvs -package idx - -import akka.actor.ActorSystem -import com.typesafe.config.ConfigFactory -import org.scalatest.matchers.should.Matchers -import org.scalatest.freespec.AnyFreeSpecLike -import org.scalatest.* -import scala.concurrent.Await -import scala.concurrent.duration.* -import scala.util.Try - -class IdxHandlerTest extends AnyFreeSpecLike with Matchers with BeforeAndAfterAll with EitherValues { - type Fid = IdxHandler.Fid - val Fid = IdxHandler.Fid - type Fd = IdxHandler.Fd - val Fd = IdxHandler.Fd - type En = IdxHandler.Idx - val En = IdxHandler.Idx - val fid = Fid("index") - def entry(n: Int): En = En(fid, id=n.toString, prev=zd.kvs.empty) - - val e1 = entry(1) - val e2 = entry(2) - val e3 = entry(3) - val e5 = entry(5) - - val kvs = Kvs.mem() - - "Feed should" - { - "be empty at creation" in { - kvs.index.all(fid) shouldBe (Right(LazyList.empty)) - } - - "should save e1" in { - val saved = kvs.index.add(e1).getOrElse(???) - (saved.fid, saved.id) shouldBe ((e1.fid, "1")) - } - - "should save e2" in { - val saved = kvs.index.add(e2).getOrElse(???) - (saved.fid, saved.id) shouldBe ((e2.fid, "2")) - } - - "should get e1 and e2 from feed" in { - val stream = kvs.index.all(fid) - stream.map(_.toList) shouldBe Right(List(Right(e2.copy(prev="1")), Right(e1))) - } - - "should save entry(3)" in { - val saved = kvs.index.add(e3).getOrElse(???) - (saved.fid, saved.id) shouldBe ((e3.fid, "3")) - } - - "should not save entry(2) again" in { - kvs.index.add(e2).left.getOrElse(???) shouldBe EntryExists(s"${fid}.2") - } - - "should get 3 values from feed" in { - val stream = kvs.index.all(fid) - stream.map(_.toList) shouldBe Right(List(Right(e3.copy(prev="2")), Right(e2.copy(prev="1")), Right(e1))) - } - - "should not remove unexisting entry from feed" in { - kvs.index.remove(fid,"5").left.value shouldBe KeyNotFound - } - - "should remove entry(2) from feed without prev/next" in { - kvs.index.remove(e2.fid,"2").getOrElse(???) - } - - "should get 2 values from feed" in { - val stream = kvs.index.all(fid) - stream.map(_.toList) shouldBe Right(List(Right(e3.copy(prev="1")), Right(e1))) - } - - "should remove entry(1) from feed" in { - kvs.index.remove(fid,"1").getOrElse(???) - } - - "should get 1 values from feed" in { - val stream = kvs.index.all(fid) - stream.map(_.toList) shouldBe Right(List(Right(e3))) - } - - "should remove entry(3) from feed" in { - kvs.index.remove(fid,"3").getOrElse(???) - } - - "should be empty" in { - kvs.index.all(fid).getOrElse(???) shouldBe empty - } - - "should not create stack overflow" in { - val limit = 100 - LazyList.from(1,1).takeWhile( _.<=(limit)).foreach{ n => - val toadd = entry(n) - val added = kvs.index.add(toadd).getOrElse(???) - (added.fid, added.id) shouldBe ((toadd.fid, n.toString)) - } - LazyList.from(1,1).takeWhile( _.<=(limit)).foreach{ n => - val toremove = entry(n) - kvs.index.remove(toremove.fid, toremove.id).getOrElse(???) - } - } - - "feed should be empty at the end test" in { - kvs.el.delete[String](s"IdCounter.$fid") - kvs.index.all(fid).getOrElse(???) shouldBe empty - kvs.index.delete(fid) - kvs.index.all(fid) shouldBe (Right(LazyList.empty)) - } - } -} diff --git a/kvs/src/test/scala/leveldb.test.scala b/kvs/src/test/scala/leveldb.test.scala deleted file mode 100644 index 747eed42..00000000 --- a/kvs/src/test/scala/leveldb.test.scala +++ /dev/null @@ -1,46 +0,0 @@ -package leveldbjnr - -import org.scalatest.freespec.AnyFreeSpec -import org.scalatest.matchers.should.Matchers -import org.scalatest.* - -class LeveldbTest extends AnyFreeSpec with Matchers with EitherValues { - - var leveldb: LevelDb | Null = null - val path = "leveldb_test" - val ro = ReadOpts() - val wo = WriteOpts() - - "leveldb" - { - "version" in { - LevelDb.version should be ((1,20)) - } - "destroy" in { - LevelDb.destroy(path) - } - "create" in { - leveldb = LevelDb.open(path).fold(l => throw l, r => r) - } - "no value" in { - leveldb.nn.get(Array(1,2,3), ro) should be (Right(None)) - } - "put" in { - leveldb.nn.put(Array(1,2,3), Array(11,22,33), wo) should be (Right(())) - } - "read" in { - leveldb.nn.get(Array(1,2,3), ro).map(_.map(_.toList)) should be (Right(Some(List(11,22,33)))) - } - "delete" in { - leveldb.nn.delete(Array(1,2,3), wo) should be (Right(())) - } - "read2" in { - leveldb.nn.get(Array(1,2,3), ro) should be (Right(None)) - } - "close & destroy" in { - leveldb.nn.close() - wo.close() - ro.close() - LevelDb.destroy(path) should be (Right(())) - } - } -} diff --git a/kvs/src/test/scala/merge.test.scala b/kvs/src/test/scala/merge.test.scala deleted file mode 100644 index f5ef6432..00000000 --- a/kvs/src/test/scala/merge.test.scala +++ /dev/null @@ -1,217 +0,0 @@ -package zd.kvs - -import zd.rng.* -import zd.rng.data.* -import org.scalatest.freespec.AnyFreeSpec -import org.scalatest.matchers.should.Matchers -import org.scalatest.* -import scala.collection.immutable.{HashSet, TreeMap} - -class MergeTest extends AnyFreeSpec with Matchers with EitherValues with BeforeAndAfterAll { - def v1(v: Long) = "n1" -> v - def v2(v: Long) = "n2" -> v - def vc(v: Tuple2[String,Long]*) = new VectorClock(TreeMap.empty[String,Long] ++ v) - - "forRepl" - { - import zd.rng.MergeOps.forRepl - "empty" in { - val xs = Vector.empty - forRepl(xs) should be (empty) - } - "single item" in { - val xs = Vector( - Data(stob("k1"), bucket=1, lastModified=1, vc=vc(v1(1), v2(1)), stob("v1")), - ) - val ys = Set( - xs(0), - ) - forRepl(xs).toSet should be (ys) - } - "no conflict" in { - val xs = Vector( - Data(stob("k1"), bucket=1, lastModified=1, vc=vc(v1(1), v2(1)), stob("v1")), - Data(stob("k2"), bucket=1, lastModified=1, vc=vc(v1(1), v2(1)), stob("v2")), - Data(stob("k3"), bucket=1, lastModified=1, vc=vc(v1(1), v2(1)), stob("v3")), - ) - val ys = Set( - xs(0), - xs(1), - xs(2), - ) - forRepl(xs).toSet should be (ys) - } - "same vc" - { - val vcs = vc(v1(1), v2(1)) - "old then new" in { - val xs = Vector( - Data(stob("k1"), bucket=1, lastModified=1, vcs, stob("v11")), - Data(stob("k1"), bucket=1, lastModified=2, vcs, stob("v12")), - Data(stob("k2"), bucket=1, lastModified=1, vcs, stob("v2")), - ) - val ys = Set( - xs(1), - xs(2), - ) - assert(forRepl(xs).toSet.size == ys.size) - forRepl(xs).toSet.zip(ys).foreach{ case (e1, e2) => assert(e1 == e2) } - } - "new then old" in { - val xs = Vector( - Data(stob("k1"), bucket=1, lastModified=2, vcs, stob("v11")), - Data(stob("k1"), bucket=1, lastModified=1, vcs, stob("v12")), - Data(stob("k2"), bucket=1, lastModified=1, vcs, stob("v2")), - ) - val ys = Set( - xs(0), - xs(2), - ) - assert(forRepl(xs).toSet.size == ys.size) - forRepl(xs).toSet.zip(ys).foreach{ case (e1, e2) => assert(e1 == e2) } - } - } - "new vc" - { - val vc1s = vc(v1(1), v2(1)) - val vc2s = vc(v1(2), v2(2)) - "old then new" in { - val xs = Vector( - Data(stob("k1"), bucket=1, lastModified=2, vc1s, stob("v11")), - Data(stob("k1"), bucket=1, lastModified=1, vc2s, stob("v12")), - Data(stob("k2"), bucket=1, lastModified=1, vc1s, stob("v2")), - ) - val ys = Set( - xs(1), - xs(2), - ) - assert(forRepl(xs).toSet.size == ys.size) - forRepl(xs).toSet.zip(ys).foreach{ case (e1, e2) => assert(e1 == e2) } - } - "new then old" in { - val xs = Vector( - Data(stob("k1"), bucket=1, lastModified=1, vc2s, stob("v11")), - Data(stob("k1"), bucket=1, lastModified=2, vc1s, stob("v12")), - Data(stob("k2"), bucket=1, lastModified=1, vc1s, stob("v2")), - ) - val ys = Set( - xs(0), - xs(2), - ) - assert(forRepl(xs).toSet.size == ys.size) - forRepl(xs).toSet.zip(ys).foreach{ case (e1, e2) => assert(e1 == e2) } - } - } - "conflict" - { - val vc1s = vc(v1(1), v2(2)) - val vc2s = vc(v1(2), v2(1)) - "seq" in { - val xs = Vector( - Data(stob("k1"), bucket=1, lastModified=2, vc1s, stob("v11")), - Data(stob("k1"), bucket=1, lastModified=1, vc2s, stob("v12")), - Data(stob("k2"), bucket=1, lastModified=1, vc1s, stob("v2")), - ) - val ys = Set( - xs(0).copy(vc=vc(v1(2), v2(2))), - xs(2), - ) - assert(forRepl(xs).toSet.size == ys.size) - forRepl(xs).toSet.zip(ys).foreach{ case (e1, e2) => assert(e1 == e2) } - } - "reversed" in { - val xs = Vector( - Data(stob("k1"), bucket=1, lastModified=1, vc2s, stob("v11")), - Data(stob("k1"), bucket=1, lastModified=2, vc1s, stob("v12")), - Data(stob("k2"), bucket=1, lastModified=1, vc1s, stob("v2")), - ) - val ys = Set( - xs(1).copy(vc=vc(v1(2), v2(2))), - xs(2), - ) - assert(forRepl(xs).toSet.size == ys.size) - forRepl(xs).toSet.zip(ys).foreach{ case (e1, e2) => assert(e1 == e2) } - } - } - } - - "forPut" - { - import zd.rng.MergeOps.forPut - "stored is none" in { - val vc1 = vc(v1(1)) - val x = Data(stob("k1"), bucket=1, lastModified=1, vc1, stob("v1")) - forPut(None, x) should be (Some(x)) - } - "stored vc is older" in { - val vc1 = vc(v1(1)) - val vc2 = vc(v1(2)) - val x = Data(stob("k1"), bucket=1, lastModified=2, vc1, stob("v1")) - val y = Data(stob("k2"), bucket=1, lastModified=1, vc2, stob("v2")) - forPut(Some(x), y) should be (Some(y)) - } - "stored vc is newer" in { - val vc1 = vc(v1(2)) - val vc2 = vc(v1(1)) - val x = Data(stob("k1"), bucket=1, lastModified=1, vc1, stob("v1")) - val y = Data(stob("k2"), bucket=1, lastModified=2, vc2, stob("v2")) - forPut(Some(x), y) should be (None) - } - "vcs are the same" - { - val vc1 = vc(v1(1)) - "direct order" in { - val x = Data(stob("k1"), bucket=1, lastModified=1, vc1, stob("v1")) - val y = Data(stob("k2"), bucket=1, lastModified=2, vc1, stob("v2")) - forPut(Some(x), y) should be (Some(y)) - } - "reverse order" in { - val x = Data(stob("k1"), bucket=1, lastModified=2, vc1, stob("v1")) - val y = Data(stob("k2"), bucket=1, lastModified=1, vc1, stob("v2")) - forPut(Some(x), y) should be (None) - } - } - "vcs in conflict" - { - val vc1 = vc(v1(1), v2(2)) - val vc2 = vc(v1(2), v2(1)) - val mergedvc = vc1 merge vc2 - "direct order" in { - val x = Data(stob("k1"), bucket=1, lastModified=1, vc1, stob("v1")) - val y = Data(stob("k2"), bucket=1, lastModified=2, vc2, stob("v2")) - forPut(Some(x), y) should be (Some(y.copy(vc=mergedvc))) - } - "reverse order" in { - val x = Data(stob("k1"), bucket=1, lastModified=2, vc2, stob("v1")) - val y = Data(stob("k2"), bucket=1, lastModified=1, vc1, stob("v2")) - forPut(Some(x), y) should be (Some(x.copy(vc=mergedvc))) - } - } - } - - "forGatherGet" - { - import zd.rng.MergeOps.forGatherGet - import akka.actor.{Address} - def addr(n: Int): Address = Address("","","",n) - "empty" in { - forGatherGet(Vector.empty) should be (None -> HashSet.empty) - } - "newer in tail" in { - val xs = Vector( - Some(Data(stob("k1"), bucket=1, lastModified=1, vc(v1(2)), stob("v1"))) -> addr(1), - Some(Data(stob("k2"), bucket=1, lastModified=1, vc(v1(3)), stob("v2"))) -> addr(2), - Some(Data(stob("k3"), bucket=1, lastModified=1, vc(v1(1)), stob("v3"))) -> addr(3), - ) - forGatherGet(xs) should be (xs(1)._1 -> HashSet(addr(1), addr(3))) - } - "conflict" in { - val xs = Vector( - Some(Data(stob("k1"), bucket=1, lastModified=1, vc(v1(1)), stob("v1"))) -> addr(1), - Some(Data(stob("k2"), bucket=1, lastModified=2, vc(v2(1)), stob("v2"))) -> addr(2), - ) - forGatherGet(xs) should be (xs(1)._1 -> HashSet(addr(1))) - } - "none" in { - val xs = Vector( - None -> addr(1), - Some(Data(stob("k2"), bucket=1, lastModified=1, vc(v1(3)), stob("v2"))) -> addr(2), - ) - forGatherGet(xs) should be (xs(1)._1 -> HashSet(addr(1))) - } - } -} - -given [A, B]: CanEqual[A, B] = CanEqual.derived diff --git a/kvs/src/test/scala/rks.test.scala b/kvs/src/test/scala/rks.test.scala deleted file mode 100644 index e466933b..00000000 --- a/kvs/src/test/scala/rks.test.scala +++ /dev/null @@ -1,35 +0,0 @@ -package zd.kvs - -import akka.actor.ActorSystem -import akka.testkit.TestKit -import org.scalatest.freespec.AnyFreeSpecLike -import org.scalatest.matchers.should.Matchers -import org.scalatest.* - -class RksTest extends TestKit(ActorSystem("test")), AnyFreeSpecLike, Matchers, EitherValues, BeforeAndAfterAll { - val kvs = Kvs.rks(system, "target/rkstest") - - "return error when element is absent" in { - kvs.el.get[String]("key").right.value shouldBe None - } - "save value" in { - kvs.el.put("key", "value").right.value shouldBe "value" - } - "retrieve value" in { - kvs.el.get[String]("key").right.value shouldBe Some("value") - } - "override value" in { - kvs.el.put("key", "value2").right.value shouldBe "value2" - } - "delete value" in { - kvs.el.delete[String]("key").right.value shouldBe () - } - "clean up" in { - kvs.el.get[String]("key").right.value shouldBe None - kvs.close() - } - - override def afterAll() = { - TestKit.shutdownActorSystem(system) - } -} diff --git a/kvs/src/test/scala/search.test.scala b/kvs/src/test/scala/search.test.scala deleted file mode 100644 index 0a13f759..00000000 --- a/kvs/src/test/scala/search.test.scala +++ /dev/null @@ -1,112 +0,0 @@ -package zd.kvs -package search - -import akka.actor.ActorSystem -import com.typesafe.config.ConfigFactory -import org.scalatest.matchers.should.Matchers -import org.scalatest.freespec.AnyFreeSpecLike -import org.scalatest.* -import scala.concurrent.Await -import scala.concurrent.duration.* -import scala.util.Try -import proto.* - -class EnHandlerTest extends AnyFreeSpecLike with Matchers with BeforeAndAfterAll with EitherValues: - val fid = "files" - def entry(n: Int): En = En(fid=fid, id=n.toString, prev=zd.kvs.empty) - - val e1 = entry(1) - val e2 = entry(2) - val e3 = entry(3) - val e5 = entry(5) - - val kvs = Kvs.mem() - val h = EnHandler - given Dba = kvs.dba - - "Feed should" - { - "be empty at creation" in { - h.all(fid) shouldBe (Right(LazyList.empty)) - } - - "should save e1" in { - val saved = h.add(e1).getOrElse(???) - (saved.fid, saved.id) shouldBe ((e1.fid, "1")) - } - - "should save e2" in { - val saved = h.add(e2).getOrElse(???) - (saved.fid, saved.id) shouldBe ((e2.fid, "2")) - } - - "should get e1 and e2 from feed" in { - val stream = h.all(fid) - stream.map(_.toList) shouldBe Right(List(Right(e2.copy(prev="1")), Right(e1))) - } - - "should save entry(3)" in { - val saved = h.add(e3).getOrElse(???) - (saved.fid, saved.id) shouldBe ((e3.fid, "3")) - } - - "should not save entry(2) again" in { - h.add(e2).left.getOrElse(???) shouldBe EntryExists(s"${fid}.2") - } - - "should get 3 values from feed" in { - val stream = h.all(fid) - stream.map(_.toList) shouldBe Right(List(Right(e3.copy(prev="2")), Right(e2.copy(prev="1")), Right(e1))) - } - - "should not remove unexisting entry from feed" in { - h.remove(fid,"5").left.value shouldBe KeyNotFound - } - - "should remove entry(2) from feed without prev/next/data" in { - h.remove(e2.fid,"2").getOrElse(???) - } - - "should get 2 values from feed" in { - val stream = h.all(fid) - stream.map(_.toList) shouldBe Right(List(Right(e3.copy(prev="1")), Right(e1))) - } - - "should remove entry(1) from feed" in { - h.remove(fid,"1").getOrElse(???) - } - - "should get 1 values from feed" in { - val stream = h.all(fid) - stream.map(_.toList) shouldBe Right(List(Right(e3))) - } - - "should remove entry(3) from feed" in { - h.remove(fid,"3").getOrElse(???) - } - - "should be empty" in { - h.all(fid).getOrElse(???) shouldBe empty - } - - "should not create stack overflow" in { - val limit = 100 - LazyList.from(1,1).takeWhile( _.<=(limit)).foreach{ n => - val toadd = entry(n) - val added = h.add(toadd).getOrElse(???) - (added.fid, added.id) shouldBe ((toadd.fid, n.toString)) - } - LazyList.from(1,1).takeWhile( _.<=(limit)).foreach{ n => - val toremove = entry(n) - h.remove(toremove.fid, toremove.id).getOrElse(???) - } - } - - "feed should be empty at the end test" in { - kvs.el.delete[String](s"IdCounter.$fid") - h.all(fid).getOrElse(???) shouldBe empty - h.delete(Fd(fid)) - h.all(fid) shouldBe (Right(LazyList.empty)) - } - } - -given [A, B]: CanEqual[A, B] = CanEqual.derived diff --git a/project/build.properties b/project/build.properties index 875272df..0b699c30 100644 --- a/project/build.properties +++ b/project/build.properties @@ -1 +1 @@ -sbt.version=1.8.2 \ No newline at end of file +sbt.version=1.10.2 diff --git a/project/plugins.sbt b/project/plugins.sbt deleted file mode 100644 index d5462617..00000000 --- a/project/plugins.sbt +++ /dev/null @@ -1 +0,0 @@ -addSbtPlugin("io.github.zero-deps" % "sbt-git" % "2.5.3.gd2541c1") diff --git a/src/main/scala/feed_app.scala b/src/main/scala/feed_app.scala new file mode 100644 index 00000000..e222bcfe --- /dev/null +++ b/src/main/scala/feed_app.scala @@ -0,0 +1,99 @@ +package feed + +import kvs.feed.* +import kvs.sharding.* +import proto.* +import zd.kvs.* +import zd.rng.* +import zio.*, stream.* +import zio.Console.{printLine, readLine} + +object FeedApp extends ZIOAppDefault: + def run = + val io: ZIO[Feed & SeqConsistency, Any, Unit] = + for + feed <- ZIO.service[Feed] + seqc <- ZIO.service[SeqConsistency] + user <- ZIO.succeed("guest") + _ <- printLine(s"welcome, $user") + _ <- + (for + _ <- printLine("add/all/q?") + s <- readLine + _ <- + s match + case "add" => + for + bodyRef <- Ref.make("") + _ <- printLine("enter post") + _ <- + (for + s <- readLine + _ <- + s match + case "" => ZIO.unit + case s => bodyRef.update(_ + "\n" + s) + yield s).repeatUntilEquals("") + body <- bodyRef.get + _ <- + body.isEmpty match + case true => ZIO.unit + case false => + for + post <- ZIO.succeed(Post(body)) + answer <- seqc.send(Add(user, post)) + _ <- printLine(answer.toString) + yield () + yield () + case "all" => + all(user).take(5).tap(x => printLine(x._2.body + "\n" + "-" * 10)).runDrain + case _ => ZIO.unit + yield s).repeatUntilEquals("q") + yield () + + val pekkoConfig: ULayer[ActorSystem.Conf] = + val name = "app" + ActorSystem.staticConf(name, zd.rng.pekkoConf(name, "127.0.0.1", 4343) ++ "pekko.loglevel=off") + val dbaConfig: ULayer[zd.rng.Conf] = + ZLayer.succeed(zd.rng.Conf(dir = "target/data")) + val seqConsistencyConfig: URLayer[Feed, SeqConsistency.Config] = + ZLayer.fromFunction((feed: Feed) => + SeqConsistency.Config( + "Posts" + , { + case Add(user, post) => + (for + _ <- kvs.feed.add(fid(user), post) + yield "added").provideLayer(ZLayer.succeed(feed)) + } + , { + case Add(user, _) => user + } + ) + ) + + io.provide( + SeqConsistency.live + , seqConsistencyConfig + , kvs.sharding.live + , kvs.feed.live + , Rng.live + , dbaConfig + , ActorSystem.live + , pekkoConfig + ) +end FeedApp + +case class Post(@N(1) body: String) + +given Codec[Post] = caseCodecAuto + +case class Add(user: String, post: Post) + +def all(user: String): ZStream[Feed, Err, (Eid, Post)] = + for + r <- kvs.feed.all(fid(user)) + yield r + +def fid(user: String): String = s"posts.$user" + diff --git a/src/main/scala/search_app.scala b/src/main/scala/search_app.scala new file mode 100644 index 00000000..db15d9bc --- /dev/null +++ b/src/main/scala/search_app.scala @@ -0,0 +1,140 @@ +package search + +import kvs.search.* +import kvs.sharding.* +import org.apache.lucene.document.{Document, TextField, Field} +import org.apache.lucene.index.Term +import org.apache.lucene.search.BooleanClause.Occur +import org.apache.lucene.search.{BooleanQuery, WildcardQuery} +import proto.* +import zd.kvs.* +import zd.rng.* +import zio.*, stream.* +import zio.Console.{printLine, readLine} + +case class PostsSearch(s: Search) +case class NotesSearch(s: Search) + +object SearchApp extends ZIOAppDefault: + def run = + println("starting...") + val io: ZIO[PostsSearch & NotesSearch & SeqConsistency, Any, Unit] = + for + posts <- ZIO.service[PostsSearch].map(_.s) + notes <- ZIO.service[NotesSearch].map(_.s) + seqc <- ZIO.service[SeqConsistency] + _ <- printLine("indexing...") + _ <- seqc.send(IndexPosts).flatMap(x => printLine(x.toString)) + _ <- seqc.send(IndexNotes).flatMap(x => printLine(x.toString)) + _ <- printLine("welcome!") + _ <- printLine("enter 'q' to quit") + _ <- + (for + _ <- printLine("search?") + word <- readLine + _ <- + if word == "q" then ZIO.unit + else + for + xs <- + posts.run[Post]{ + val b = BooleanQuery.Builder() + b.add(WildcardQuery(Term("title", s"*${word}*")), Occur.SHOULD) + b.add(WildcardQuery(Term("content", s"*${word}*")), Occur.SHOULD) + b.build.nn + }.runCollect + _ <- printLine("posts> " + xs) + ys <- + notes.run[Note]( + WildcardQuery(Term("text", s"*${word}*")) + ).runCollect + _ <- printLine("notes> " + ys) + yield () + yield word).repeatUntilEquals("q") + yield () + + val pekkoConfig: ULayer[ActorSystem.Conf] = + val name = "app" + ActorSystem.staticConf(name, zd.rng.pekkoConf(name, "127.0.0.1", 4343) ++ "pekko.loglevel=off") + val dbaConfig: ULayer[zd.rng.Conf] = + ZLayer.succeed(zd.rng.Conf(dir = "target/data")) + val postsDir: URLayer[Dba, KvsDirectory] = + ZLayer.succeed("posts_index") >>> KvsDirectory.live.fresh + val notesDir: URLayer[Dba, KvsDirectory] = + ZLayer.succeed("notes_index") >>> KvsDirectory.live.fresh + val postsSearch: URLayer[Dba, PostsSearch] = + postsDir >>> kvs.search.layer.fresh.project(PostsSearch(_)) + val notesSearch: URLayer[Dba, NotesSearch] = + notesDir >>> kvs.search.layer.fresh.project(NotesSearch(_)) + val seqConsistencyConfig: URLayer[PostsSearch & NotesSearch, SeqConsistency.Config] = + ZLayer( + for + posts <- ZIO.service[PostsSearch] + notes <- ZIO.service[NotesSearch] + yield + SeqConsistency.Config( + "Search" + , { + case IndexPosts => + (for + _ <- + posts.s.index[Any, Nothing, Post]( + ZStream( + Post("What is Lorem Ipsum?", "Lorem Ipsum is simply dummy text of the printing and typesetting industry.") + , Post("Where does it come from?", "It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old.") + ) + , p => { + val doc = Document() + doc.add(TextField("title", p.title, Field.Store.NO)) + doc.add(TextField("content", p.content, Field.Store.NO)) + doc + }) + yield "posts are indexed") + + case IndexNotes => + (for + _ <- + notes.s.index[Any, Nothing, Note]( + ZStream( + Note("Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.") + , Note("Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.") + ) + , n => { + val doc = Document() + doc.add(TextField("text", n.text, Field.Store.NO)) + doc + }) + yield "notes are indexed") + } + , { + case IndexPosts => "posts" + case IndexNotes => "notes" + } + ) + ) + + io.provide( + SeqConsistency.live + , seqConsistencyConfig + , postsSearch + , notesSearch + , kvs.sharding.live + , Rng.live + , dbaConfig + , ActorSystem.live + , pekkoConfig + ) +end SearchApp + +case class Post(@N(1) title: String, @N(2) content: String) +case class Note(@N(1) text: String) + +case object IndexPosts +case object IndexNotes + +given Codec[Post] = caseCodecAuto +given Codec[Note] = caseCodecAuto + +given CanEqual[IndexPosts.type, Any] = CanEqual.derived +given CanEqual[IndexNotes.type, Any] = CanEqual.derived + diff --git a/src/main/scala/sort_app.scala b/src/main/scala/sort_app.scala new file mode 100644 index 00000000..7552f7d4 --- /dev/null +++ b/src/main/scala/sort_app.scala @@ -0,0 +1,98 @@ +package sort + +import kvs.sharding.* +import kvs.sort.* +import proto.* +import zd.kvs.* +import zd.rng.* +import zio.*, stream.* +import zio.Console.{printLine, readLine} + +object SortApp extends ZIOAppDefault: + def run = + val io: ZIO[Sort & SeqConsistency, Any, Unit] = + for + sort <- ZIO.service[Sort] + seqc <- ZIO.service[SeqConsistency] + _ <- printLine("welcome!") + _ <- + (for + _ <- printLine("add/all/q?") + s <- readLine + _ <- + s match + case "add" => + for + bodyRef <- Ref.make("") + _ <- printLine("enter post") + _ <- + (for + s <- readLine + _ <- + s match + case "" => ZIO.unit + case s => bodyRef.update(_ + "\n" + s) + yield s).repeatUntilEquals("") + body <- bodyRef.get + _ <- + body.isEmpty match + case true => ZIO.unit + case false => + for + post <- ZIO.succeed(Post(body)) + answer <- seqc.send(Add(post)) + _ <- printLine(answer.toString) + yield () + yield () + case "all" => + all().take(5).tap(x => printLine(x.body + "\n" + "-" * 10)).runDrain + case _ => ZIO.unit + yield s).repeatUntilEquals("q") + yield () + + val pekkoConfig: ULayer[ActorSystem.Conf] = + val name = "app" + ActorSystem.staticConf(name, zd.rng.pekkoConf(name, "127.0.0.1", 4343) ++ "pekko.loglevel=off") + val dbaConfig: ULayer[zd.rng.Conf] = + ZLayer.succeed(zd.rng.Conf(dir = "target/data")) + val seqConsistencyConfig: URLayer[Sort, SeqConsistency.Config] = + ZLayer.fromFunction((sort: Sort) => + SeqConsistency.Config( + "Posts" + , { + case Add(post) => + (for + _ <- kvs.sort.insert(ns, post) + yield "added").provideLayer(ZLayer.succeed(sort)) + } + , _ => "shard" + ) + ) + + io.provide( + SeqConsistency.live + , seqConsistencyConfig + , kvs.sharding.live + , SortLive.layer + , Rng.live + , dbaConfig + , ActorSystem.live + , pekkoConfig + ) +end SortApp + +case class Post(@N(1) body: String) + +case class Add(post: Post) + +def all(): ZStream[Sort, Err, Post] = + for + r <- kvs.sort.flatten(ns) + yield r + +val ns = "posts_sorted" + +given Codec[Post] = caseCodecAuto +given Ordering[Post] = Ordering.by(_.body) +given CanEqual[Post, Post] = CanEqual.derived +