From c904ce76a5f75a7398686fa5c66acbaa9160e3f7 Mon Sep 17 00:00:00 2001 From: Pawel Piech Date: Mon, 8 Feb 2010 18:05:51 +0000 Subject: [PATCH] [302175] - [doc] Add DSF Tutorial to CDT ISV documentation. --- .../guide/dsf/intro/data_model_1.dia | Bin 0 -> 1382 bytes .../guide/dsf/intro/data_model_1.png | Bin 0 -> 4299 bytes .../guide/dsf/intro/data_model_2.dia | Bin 0 -> 1740 bytes .../guide/dsf/intro/data_model_2.png | Bin 0 -> 6953 bytes .../dsf/intro/dsf_programming_intro.html | 2299 +++++++++++++++++ .../guide/dsf/intro/introduction.dia | Bin 0 -> 1667 bytes .../guide/dsf/intro/introduction.png | Bin 0 -> 11369 bytes .../guide/dsf/intro/proxy_problem.dia | Bin 0 -> 2558 bytes .../guide/dsf/intro/proxy_problem.png | Bin 0 -> 16399 bytes .../guide/dsf/intro/query_1.dia | Bin 0 -> 2247 bytes .../guide/dsf/intro/query_1.png | Bin 0 -> 14759 bytes .../guide/dsf/intro/request_monitor_1.dia | Bin 0 -> 2088 bytes .../guide/dsf/intro/request_monitor_1.png | Bin 0 -> 13914 bytes .../guide/dsf/intro/synchronization_1.dia | Bin 0 -> 1487 bytes .../guide/dsf/intro/synchronization_1.png | Bin 0 -> 4228 bytes .../guide/dsf/intro/synchronization_2.dia | Bin 0 -> 1501 bytes .../guide/dsf/intro/synchronization_2.png | Bin 0 -> 6076 bytes .../guide/dsf/intro/timers_1.png | Bin 0 -> 9451 bytes .../guide/dsf/intro/timers_dm.dia | Bin 0 -> 1908 bytes .../guide/dsf/intro/timers_dm.png | Bin 0 -> 16088 bytes .../guide/dsf/intro/timers_view_model_1.png | Bin 0 -> 14352 bytes .../guide/dsf/intro/timers_view_model_2.png | Bin 0 -> 15754 bytes .../guide/dsf/intro/timers_vm.dia | Bin 0 -> 2148 bytes .../guide/dsf/intro/timers_vm.png | Bin 0 -> 75839 bytes .../guide/dsf/intro/timers_vm_1.dia | Bin 0 -> 1296 bytes .../guide/dsf/intro/timers_vm_2.dia | Bin 0 -> 1295 bytes .../guide/dsf/intro/vm_cache.dia | Bin 0 -> 2528 bytes .../guide/dsf/intro/vm_cache.png | Bin 0 -> 19003 bytes .../guide/dsf/intro/vm_design.dia | Bin 0 -> 4062 bytes .../guide/dsf/intro/vm_design.png | Bin 0 -> 27506 bytes .../guide/dsf/intro/vm_proxy.dia | Bin 0 -> 2745 bytes .../guide/dsf/intro/vm_proxy.png | Bin 0 -> 18449 bytes .../guide/dsf/intro/vm_sychronized_events.dia | Bin 0 -> 2005 bytes .../guide/dsf/intro/vm_sychronized_events.png | Bin 0 -> 17727 bytes doc/org.eclipse.cdt.doc.isv/topics_Guide.xml | 2 + 35 files changed, 2301 insertions(+) create mode 100644 doc/org.eclipse.cdt.doc.isv/guide/dsf/intro/data_model_1.dia create mode 100644 doc/org.eclipse.cdt.doc.isv/guide/dsf/intro/data_model_1.png create mode 100644 doc/org.eclipse.cdt.doc.isv/guide/dsf/intro/data_model_2.dia create mode 100644 doc/org.eclipse.cdt.doc.isv/guide/dsf/intro/data_model_2.png create mode 100644 doc/org.eclipse.cdt.doc.isv/guide/dsf/intro/dsf_programming_intro.html create mode 100644 doc/org.eclipse.cdt.doc.isv/guide/dsf/intro/introduction.dia create mode 100644 doc/org.eclipse.cdt.doc.isv/guide/dsf/intro/introduction.png create mode 100644 doc/org.eclipse.cdt.doc.isv/guide/dsf/intro/proxy_problem.dia create mode 100644 doc/org.eclipse.cdt.doc.isv/guide/dsf/intro/proxy_problem.png create mode 100644 doc/org.eclipse.cdt.doc.isv/guide/dsf/intro/query_1.dia create mode 100644 doc/org.eclipse.cdt.doc.isv/guide/dsf/intro/query_1.png create mode 100644 doc/org.eclipse.cdt.doc.isv/guide/dsf/intro/request_monitor_1.dia create mode 100644 doc/org.eclipse.cdt.doc.isv/guide/dsf/intro/request_monitor_1.png create mode 100644 doc/org.eclipse.cdt.doc.isv/guide/dsf/intro/synchronization_1.dia create mode 100644 doc/org.eclipse.cdt.doc.isv/guide/dsf/intro/synchronization_1.png create mode 100644 doc/org.eclipse.cdt.doc.isv/guide/dsf/intro/synchronization_2.dia create mode 100644 doc/org.eclipse.cdt.doc.isv/guide/dsf/intro/synchronization_2.png create mode 100644 doc/org.eclipse.cdt.doc.isv/guide/dsf/intro/timers_1.png create mode 100644 doc/org.eclipse.cdt.doc.isv/guide/dsf/intro/timers_dm.dia create mode 100644 doc/org.eclipse.cdt.doc.isv/guide/dsf/intro/timers_dm.png create mode 100644 doc/org.eclipse.cdt.doc.isv/guide/dsf/intro/timers_view_model_1.png create mode 100644 doc/org.eclipse.cdt.doc.isv/guide/dsf/intro/timers_view_model_2.png create mode 100644 doc/org.eclipse.cdt.doc.isv/guide/dsf/intro/timers_vm.dia create mode 100644 doc/org.eclipse.cdt.doc.isv/guide/dsf/intro/timers_vm.png create mode 100644 doc/org.eclipse.cdt.doc.isv/guide/dsf/intro/timers_vm_1.dia create mode 100644 doc/org.eclipse.cdt.doc.isv/guide/dsf/intro/timers_vm_2.dia create mode 100644 doc/org.eclipse.cdt.doc.isv/guide/dsf/intro/vm_cache.dia create mode 100644 doc/org.eclipse.cdt.doc.isv/guide/dsf/intro/vm_cache.png create mode 100644 doc/org.eclipse.cdt.doc.isv/guide/dsf/intro/vm_design.dia create mode 100644 doc/org.eclipse.cdt.doc.isv/guide/dsf/intro/vm_design.png create mode 100644 doc/org.eclipse.cdt.doc.isv/guide/dsf/intro/vm_proxy.dia create mode 100644 doc/org.eclipse.cdt.doc.isv/guide/dsf/intro/vm_proxy.png create mode 100644 doc/org.eclipse.cdt.doc.isv/guide/dsf/intro/vm_sychronized_events.dia create mode 100644 doc/org.eclipse.cdt.doc.isv/guide/dsf/intro/vm_sychronized_events.png diff --git a/doc/org.eclipse.cdt.doc.isv/guide/dsf/intro/data_model_1.dia b/doc/org.eclipse.cdt.doc.isv/guide/dsf/intro/data_model_1.dia new file mode 100644 index 0000000000000000000000000000000000000000..8dbabe73f156d5a14eef900e42ec956a3567e8df GIT binary patch literal 1382 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 H$1nZ`msD$l literal 0 HcmV?d00001 diff --git a/doc/org.eclipse.cdt.doc.isv/guide/dsf/intro/dsf_programming_intro.html b/doc/org.eclipse.cdt.doc.isv/guide/dsf/intro/dsf_programming_intro.html new file mode 100644 index 00000000000..a2580481ce3 --- /dev/null +++ b/doc/org.eclipse.cdt.doc.isv/guide/dsf/intro/dsf_programming_intro.html @@ -0,0 +1,2299 @@ + + + + Introduction to Programming with DSF + + +

Introduction to Programming with DSF

+

Summary

+This tutorial intorduces the reader to common techniques and patterns +used in the Debugger Services Framework (DSF), which is developed by +the C/C++ Development Tools +(CDT) +project.  It also gives a good overview of the framework's +more advanced features.
+

Table of Contents

+ +


+

+

Copyright

+Copyright (c) 2008, 2010 Wind River Systems and others. All rights +reserved. This program and the accompanying materials are made +available under the terms of the Eclipse Public License v1.0 which +accompanies this distribution, and is available at +http://www.eclipse.org/legal/epl-v10.html
+
+Contributors:
+
    +
  • Wind River Systems - initial content
    +
  • +
+
+

Introduction

+The Debugger +Services Framework +is a new API for integrating debuggers into Eclipse.  It is an +alternative to the Standard Debug Model API in Platform and it +leverages the new Flexible Hierarchy API that allows +extensive control over the debugger views' contents.  It is also +designed to help achieve better performance when debugging applications +on slow or remote targets. The diagram below shows the elements used in +typical debugger integration and where DSF fits in.
+ + + + + + + + + +

+
HIgh +level view of elements used in a typical DSF-based debugger integration +in Eclipse.
+
+

1 Examples
+

+Running example code and performing included exercises is very +helpful in following this tutorial.  In order to run the examples +in this tutorial the following is needed:
+
    +
  1. Download and install the Eclipse SDK 3.6 (http://download.eclipse.org/eclipse/downloads)
  2. +
  3. Install the Eclipse IDE for C/C++ 6.1 and DSF:
    +
  4. +
      +
    1. Using Update Manager, install the Programming Languages -> Eclipse C/C++ +Development Tools feature found in +the Helios +Discovery Site (http://download.eclipse.org/releases/helios).
    2. +
    +
  5. Check out the org.eclipse.cdt.examples.dsf +plugin, found in the /cvsroot/tools +CVS repository under the org.eclipse.cdt/dsf +directory.
  6. +
  7. Build the examples plugin:
  8. +
      +
    1. Execute the build the first time to build and run the +exercises preprocessor.
    2. +
    3. Refresh the resources in the plugin (right-click on project in Navigator and select Refresh), in order to recognize the +sources generated by the preprocessor.
    4. +
    5. Build the plugin again to compile the generated sources.
    6. +
    +
  9. Launch the examples
  10. +
      +
    1. Examples in data org.eclipse.cdt.examples.dsf.requestmonitor +and org.eclipse.cdt.examples.dsf.dataviewer +packages each contain a public +main() function.  They can be launched using the Java Application +launch type.
    2. +
    3. The timers example in org.eclipse.cdt.examples.dsf.timers +requires an Eclipse Application to be launched (see the Timers Example section for more details).
      +
    4. +
    +
+

2 Asynchronous Methods

+One of the central features of DSF is that it relies very heavily on +the use of asynchronous methods.  Asynchronous methods here mean +simply methods that use a callback +object to indicate their completion. The use of asynchronous +methods can be very contagious in a system, where if a lower level API +is composed of asynchronous methods, a higher level system which uses +those methods also has to have asynchronous methods in its interface +(or risk blocking its calling thread).
+

2.1 Request Monitor

+There is a standard callback object used in DSF, the request +monitor.  A request monitor has the following features:
+
    +
  • Executor - A +argument to the request monitor constructor allows the user to specify +what executor should be used to invoke the callback method. 
    +
  • +
  • Status - +Asynchronous methods that take a callback can always set the status +indicating the success or failure of the call.
  • +
  • Callback Methods +- The request monitor declares several protected methods which are +invoked when the callback is invoked: handleCompleted(), handleOK(), +handleError(), etc.  The users may override these methods as +needed to perform additional processing upon asynchronous method +completion.
  • +
  • Parent Request +Monitor +- If the method calling an asynchronous method is itself asynchronous, +it may set its argument request monitor as the parent of the request +monitor it is creating.  The parent request monitor will be +automatically invoked when the lower level request monitor is completed.
  • +
+Following is the snippet from a the +"hello world" example of using a +request monitor:
+
+
+ + + + + + + + + + +
org.eclipse.cdt.examples.dsf.requestmonitor.AsyncHelloWorld
+

+
+
 26: public class AsyncHelloWorld {

28: public static void main(String[] args) {
29: Executor executor = ImmediateExecutor.getInstance();
30: RequestMonitor rm = new RequestMonitor(executor, null);
31: asyncHelloWorld(rm);
32: }

34: static void asyncHelloWorld(RequestMonitor rm) {
35: System.out.println("Hello world");
36: rm.done();
37: }
+
+
+

+

+ + + + + + + + + + +

+
Sequence diagram of the +AsyncHelloWorld example.
+
+ + + + + + +
Exercise 1: A common +problem in DSF is implementing nested asynchronous methods, this +exercise adds a second-level asynchronous method to +AsyncHelloWorld. 
+

Look +for comments preceded with "// TODO Exercise 1" in the +org.eclipse.cdt.examples.dsf.requestmonitor.AsyncHelloWorld +module.

+
+
+

2.2 Data Request +Monitor

+The base request monitor is useful for returning +status of the +asynchronous method, but they do not have an option of returning a +value to the caller.  DataRequestMonitor can be used for that +purpose. A simple example of using the data request monitor:
+
+
+ + + + + + + + + + +
org.eclipse.cdt.examples.dsf.requestmonitor.Async2Plus2
+

+
+
 22: public class Async2Plus2 {
23:
24: public static void main(String[] args) {
25: Executor executor = ImmediateExecutor.getInstance();
26: DataRequestMonitor<Integer> rm =
27: new DataRequestMonitor<Integer>(executor, null) {
28: @Override
29: protected void handleCompleted() {
30: System.out.println("2 + 2 = " + getData());
31: }
32: };
33: asyncAdd(2, 2, rm);
34: }

36: static void asyncAdd(int value1, int value2, DataRequestMonitor<Integer> rm) {
37: rm.setData(value1 + value2);
38: rm.done();
39: }
40: }
+
+
+
    +
  • Lines 26-27 create the data request monitor using a local class +declaraion.  Note the type parameter to DataRequestMonitor allows +for compiler checking of the type when calling getData() and setData() +methods.
  • +
  • Lines 29-31 override the standard callback to print the result of +the calculation to the console.
    +
  • +
+

2.3 Multi-Request +Monitor

+A common problem when using asynchronous is that several asynchronous +methods need to be called in parallel, so the calling method needs to +somehow manage the completion of several request monitors.  +CountingRequestMonitor can be used for this purpose.  It is +configured such that it's done() method needs to be called a count number of times before the +callback method is invoked. 
+The following snipped from the AsyncQuicksort example shows a simple +example of using the CountingRequestMonitor:
+
+
+ + + + + + + + + + +
org.eclipse.cdt.examples.dsf.requestmonitor.AsyncQuicksort.asyncQuickSort()
+

+
+
 42:     static void asyncQuicksort(final int[] array, final int left, 
43: final int right, final RequestMonitor rm)
44: {
45: if (right > left) {
46: int pivot = left;
48: int newPivot = partition(array, left, right, pivot);
49: printArray(array, left, right, newPivot);

51: CountingRequestMonitor countingRm = new CountingRequestMonitor(fgExecutor, rm);
52: asyncQuicksort(array, left, newPivot - 1, countingRm);
53: asyncQuicksort(array, newPivot + 1, right, countingRm);
54: countingRm.setDoneCount(2);
55: } else {
56: rm.done();
57: }
58: }
+
+
+
    +
  • Line 51 creates the CountingRequestMonitor.  Its parent +request monitor is set to the request monitor from the +asyncQuicksort() argument.  This parent request monitor is +automatically called when the counting request monitor is completed. +(see note)
    +
  • +
  • Lines 52 and 53, use the same instance of counting request +monitor when calling the sub-routine.  Each sub-routine will call +done() on the counting request monitor.
  • +
  • Line 54 sets the count to the number of sub-routines called with +the counting request monitor.  Note that the done count can be set +after calling the sub-routines, because the counting request monitor +will not be completed until the count is set.
    +
  • +
  • Line 55: Don't forget to complete the request monitor in all +execution paths!
  • +
+ + + + + + +
Note: The use of a parent request +monitor can simplify the code when implementing nested asynchronous +methods, since the parent requrest monitor is automatically completed +when the child requrest monitor is completed.  Unfortunately, +failing to specify a parent request monitor when it is expected can +sometimes lead to bugs.
+
+
+ + + + + + +
Exercise 2: Converting a +synchronous method into an asynchronous one is another common task in +DSF.  This exercise converts the AsyncQuicksort.partition() +method into asynchronous AsyncQuicksort.asyncPartition(). 
+

Look +for comments preceeded with "// TODO Exercise 2" in the +org.eclipse.cdt.examples.dsf.requestmonitor.AsyncQuicksort +module.

+
+

3 Concurrency

+The simple examples in previous section used asynchronous method +signatures, however no real asynchronous work was performed since all +execution was performed in the main thread.  This section examines +a more typical example of a problem that DSF is intended to solve: a +viewer and an asynchronous data generator.
+

The IDataGenerator interface contains the following two asynchronous +data access methods:
+

+
+ + + + + + + + + + +
org.eclipse.cdt.examples.dsf.dataviewer.IDataGenerator
+

+
+
 49:  void getCount(DataRequestMonitor<Integer> rm);
50: void getValue(int index, DataRequestMonitor<String> rm);
+
+
+

The example is intended to simulate a realistic problem therefore, +it +can be assumed that these methods do not complete the request monitor +immediately, but rather that the requests are completed on a separate +thread and with some delay.  There are two implementations of this +service provided:

+
    +
  1. DataGeneratorWithThread - Uses a java thread directly and various +synchronization mechanisms for data integrity.
    +
  2. +
  3. DataGeneratorWithExecutor - Uses a DSF executor for both +asynchronous execution and synchronization.
  4. +
+There are also two viewers provided which display data from the data +generator:
+
    +
  1. SyncDataViewer - Table-based viewer which implements a +synchronous IStructuredContentProvider interface.
    +
  2. +
  3. AsyncDataViewer - Table-based viewer which implements an +asynchronous ILazyContentProvider interface.
  4. +
+

3.1 Query

+DSF is designed to facilitate use of asynchronous APIs.  However, +sometimes there are situations where a synchronous method has to be +implemented to call an asynchronous method.  One utility used to +accomplish this is a DSF Query object.  The Query object is meant +to be extended by clients in order to override the asynchronous +execute() method. The client code using a query can use the execute() +implementation in order to call other asynchronous methods.  The +following snippet +from SyncDataViewer.getElements()  shows the use of Query:
+
+
+ + + + + + + + + + +
org.eclipse.cdt.examples.dsf.dataviewer.SyncDataViewer.getElements() +

+
+
 59:         // Create the query object for reading data count. 
60: Query<Integer> countQuery = new Query<Integer>() {
61: @Override
62: protected void execute(DataRequestMonitor<Integer> rm) {
63: fDataGenerator.getCount(rm);
64: }
65: };
66:
67: // Submit the query to be executed. A query implements a runnable
68: // interface and it has to be executed in order to do its work.
69: ImmediateExecutor.getInstance().execute(countQuery);
70: int count = 0;
71:
72: // Block until the query completes, which will happen when the request
73: // monitor of the execute() method is marked done.
74: try {
75: count = countQuery.get();
76: } catch (Exception e) {
77: // InterruptedException and ExecutionException can be thrown here.
78: // ExecutionException containing a CoreException will be thrown
79: // if an error status is set to the Query's request monitor.
80: return new Object[0];
81: }
+
+
+
    +
  • Line 60 creates the query object. 
    +
  • +
  • On line 63, inside the execute() method, the asynchronous +getCount() method is called
  • +
  • Line 69 submits the query to an executor.  This is very +important, because a Query object simply implements Runnable, it will +not perform the work in its exectute() method unless it is submitted to +an executor. 
    +
  • +
  • Line 75 blocks while calling the +java.util.concurrent.Future.get() method, implemented by Query, until +the request monitor from the execute() method is completed.
  • +
+ + + + + + + + + +

+
Detailed sequence of calling +IDataGenerator.getCount() in SyncDataViewer.getElements().
+
+
+ + + + + + +
Note: Using the query object +requires a great deal of care because calling +a blocking method can create performance problems and raises +possibility of deadlock. One common deadlock scenario occurs when +the get() method is being called by a thread which is itself required +for completion of the asynchronous methods called by execute().
+

+

3.2 Synchronization

+Managing race conditions and deadlocks is one of the most challanging +problems of large multi-threaded systems.  DSF uses a +single-threaded executor as the primary mechanism for safe-guarding +access to data.  Methods, which need to access data protected by +the DSF executor, have to access this data inside a runnable submitted +to the executor thread.  The following is an example of this from +the DataGeneratorWithExecutor:
+
+
+ + + + + + + + + + +
org.eclipse.cdt.examples.dsf.dataviewer.DataGeneratorWithExecutor.addListener()
+

+
+
174:     public void addListener(final Listener listener) {
175: try {
176: fExecutor.execute( new DsfRunnable() {
177: public void run() {
178: fListeners.add(listener);
179: }
180: });
181: } catch (RejectedExecutionException e) {}
182: }
+
+
+
    +
  • Line 174 declares the addListener() method which can be called on +any thread.
  • +
  • Line 176 submits a local runnable to the DSF executor.
  • +
  • Line 178 accesses the protected data: fListeners.
  • +
+ + + + + + +
Note: +It is immediately apparent that this synchronization mechanism +adds a lot of overhead and for such a simple example, it is much less +efficient than using a synchronized section or an atomic +variable.  It +is less obvious how this mechanism adds value, however this document is +just a tutorial so the discussion of the merits of the design will be +left out.
+
+ + + + + + + + + + + +

+
Synchronization using multiple +locks on data.
+
Synchronization using a single +DSF executor thread.
+
+Comparing other parts of the two data generator implementations shows +that using the synchronization mechanism above is the principal +difference between the two implementations.  One notable exception +is the principal processing loop in each data generator.  In the +thread-based implementation this loop is implemented in the run method +of the generator's thread:
+
+
+ + + + + + + + + + +
org.eclipse.cdt.examples.dsf.dataviewer.DataGeneratorWithThread.run()
+

+
+
139:     public void run() {
140: try {
141: while(true) {
142: // Get the next request from the queue. The time-out
143: // ensures that that the random changes get processed.
144: final Request request = fQueue.poll(100, TimeUnit.MILLISECONDS);
145:
146: // If a request was dequeued, process it.
147: if (request != null) {
148: // Simulate a processing delay.
149: Thread.sleep(PROCESSING_DELAY);
150:
151: if (request instanceof CountRequest) {
152: processCountRequest((CountRequest)request);
153: } else if (request instanceof ItemRequest) {
154: processItemRequest((ItemRequest)request);
155: } else if (request instanceof ShutdownRequest) {
156: // If shutting down, just break out of the while(true)
157: // loop and thread will exit.
158: request.fRequestMonitor.done();
159: break;
160: }
161: }
162:
163: // Simulate data changes.
164: randomChanges();
165: }
166: }
167: catch (InterruptedException x) {}
168: }
+
+
+
    +
  • Line 141 creates the loop that runs continuously until the break +statement on line 159.
  • +
  • Line 149 implements the artificial processing delay that is +executed for each request.
  • +
+

In contrast the executor-based generator uses a dedicated method for +servicing the queue, which is called by every method that adds a new +request to the queue:
+

+
+ + + + + + + + + + +
org.eclipse.cdt.examples.dsf.dataviewer.DataGeneratorWithExecutor.serviceQueue() +

+
+
197:     private void serviceQueue() {
...
201: // If a queue servicing is already scheduled, do nothing.
202: if (fServiceQueueInProgress) {
203: return;
204: }
205:
206: if (fQueue.size() != 0) {
207: // If there are requests to service, remove one from the queue and
208: // schedule a runnable to process the request after a processing
209: // delay.
210: fServiceQueueInProgress = true;
211: final Request request = fQueue.remove(0);
212: fExecutor.schedule(
213: new DsfRunnable() {
214: public void run() {
215: if (request instanceof CountRequest) {
216: processCountRequest((CountRequest)request);
217: } else if (request instanceof ItemRequest) {
218: processItemRequest((ItemRequest)request);
219: }
220:
221: // Reset the processing flag and process next
222: // request.
223: fServiceQueueInProgress = false;
224: serviceQueue();
225: }
226: },
227: PROCESSING_DELAY, TimeUnit.MILLISECONDS);
228: }
229: }
+
+
+
    +
  • On line 202, the fServiceQueueInProgress flag is used to ensure +that the queue servicing runnable is not scheduled too often.
  • +
  • Line 211 removes the top request from the queue.
    +
  • +
  • Line 212 calls the ExecutorService.schedule() method to run the +queue servicing runnable, with a delay that simulates the request +processing time.
  • +
  • Line 224, after servicing runnable is finished, calls +serviceQueue() again to process the next item in the queue.
  • +
+ + + + + + +
Note: When using a single-threaded +executor as the synchronization +method very few other synchronization mechanisms need to be used.  +For example the DataGeneratorWithExecutor.fQueue member is just a plain +un-synchronized list.  This is true even when using background +threads to perform long-running tasks, as long as these background +threads can call a request monitor when finished.
+
+
+ + + + + + +
Exercise 3: One benefit of +the single-threaded executor concurrency model is that as long as a +method is guaranteed to run in the executor thread, this method may +access and modify any of the variables protected by this +executor.  This exercise demonstrates performing a somewhat more +complicated operation on protected state data.
+

Look +for comments preceeded with "// TODO Exercise 3" in the +org.eclipse.cdt.examples.dsf.dataviewer.DataGeneratorWithExcecutor +module.

+
+

3.3 Annotations

+In any multi-threaded system it can become very difficult to determine +what are the rules governing access to the various data objects.  +In a DSF system, it is even more important to identify which data +objects can only be accessed using a designated DSF executor.  +Since there is no Java language mechanisms for this purpose, DSF +defines a number annotations that can be used for this purpose.  +The annotations are hierarchical, so that if a class has a given +annotation in its declaration, its members and fields are assumed to +have the same access restriction unless otherwise specified.
+

DSF synchronization annotations defined in +org.eclipse.cdt.dsf.concurrent
+

+
    +
  • ThreadSafe - +Indicates that the given element can be accessed on any thread.  +Typically, if this annotation is used, the given member or class uses +synchronized or atomic objects to protect its data.
  • +
  • Immutable - +Immutable objects cannot be modified after they are created, thus they +are also thread-safe.  The easiest way to make an object +immutable, is to declare all its fields final and make sure that its +fields are also immutable.  Examples of immutable objects are Java +Strings, primitive object types, etc.
  • +
  • ConfinedToDsfExecutor(executor) +- Indicates that the given object can only be accessed using the given +executor.  The executor parameter is a string (since that's the +only allowable parameter type to annotations), but it should indicate +the executor, using classe's member and method names.
  • +
  • ThreadSafeAndProhibitedFromDsfExecutor(executor) +- Rarely used, it indicates that the given element can be accessed on +any thread except using the given executor.  An example of such a +method would be the SyncDataViewer.getElements() method, which should +never be called using the executor belonging to the data provider.
    +
  • +
+
+ + + + + + +
Note: The DSF synchronization +annotations are no more than a comment intended to help make the code +more understandable and maintainable.  Unfortunately, since there +is no compiler enforcment of their presence, it is easy to forget to +add them.
+
+
+
+ + + + + + +
+

Exercise 4: +This exercise adds the appropriate synchronization annotations to the +methods and fields of DataProviderWithExecutor.
+

+

Look +for comments preceeded with "// TODO Exercise 4" in the +org.eclipse.cdt.examples.dsf.dataviewer.DataGeneratorWithExcecutor +module.

+
+
+
+ + + + + + +
Exercise 5: It is all too +easy to get into a deadlock situation.  This exercise +purposefully puts the data viewer system into a deadlock.  The +deadlock first renders the data viewer unusable, but the main thread +also gets deadlocked when attempting to exit the program.
+

Look +for comments preceeded with "// TODO Exercise 5" in the +org.eclipse.cdt.examples.dsf.dataviewer.SyncDataViewer +module.

+
+

4 Timers Example

+The Timers example, found in the org.eclipse.cdt.examples.dsf.timers +package, is used as a reference throughout the following +sections.  It is useful to get familiar with this example at this +time.
+

Timer example defines the following two services:
+

+
    +
  • TimerService - +This service manages a set of timers where each timer's value is +incremented every second.  The timer service contains the +following features:
    +
  • +
      +
    • startTimer() method - +Allows user to create a new timer.  It returns the Data Model +context for the new timer.
      +
    • +
    • killTimer() method - +Allows the user to delete the given timer.  It requires a timer +context.
      +
    • +
    • getTimers() method - +Returns the array of contexts for existing timers.
      +
    • +
    • getTimerValue() method +- Returns the current value for the given timer context.
      +
    • +
    • TimerTickDMEvent event +class - An event that is generated for every timer, every time its +value changes (once per second).  The event contains the timer's +context.
      +
    • +
    +
  • AlarmService - +This service manages a set of triggers and alarms.  Triggers can +be created and destroyed independently.  Alarms represent a timer +and a trigger combined.  The Alarm service has the following +features:
  • +
      +
    • createTrigger() method +- Creates a new trigger with a given value.  It returns a context +to the new trigger.
      +
    • +
    • deleteTrigger() method +- Deletes the trigger for the given context.
      +
    • +
    • setTriggerValue() +method - Sets the value of a trigger to the given value.
      +
    • +
    • getAlarm() method - +Gets the alarm for the specified timer and trigger contexts.  It +returns an alarm context object.
      +
    • +
    • AlarmTriggeredDMEvent +event class - An event that is generated for every timer that trips the +given trigger by surpassing its value.  The event contains an +alarm context.
      +
    • +
    +
+The Timers example also features a user interface for displaying and +manipulating the data in the example's services.  The principal +component of this UI is a view that can be opened by following the +menus: Window->Show View->Other, +then selecting DSF +Examples->Timers View in the selection dialog.  This +view contains a tree viewer which displays the timers, triggers, and +alarms in a hierarchy.  The alarms are only shown when triggered +and are automatically selected upon a triggered event.
+ + + + + + + + + +

+
Screen shot of the Timers example's view.
+
+Other features of the Timers example UI include:
+
    +
  • New Timer action +- Adds a new timer, which immediately shows up in the view.
  • +
  • New Trigger action +- Opens a dialog where the user enters the value of the new +trigger.  Upon OK, the dialog creates a new trigger that is added +to the view.
  • +
  • Remove action - +Removes a timer or a trigger, whichever is currently selected in the +viewer.
    +
  • +
  • Toggle Layout action +- Switches the hierarchy in the tree to either Timers->Triggers->Alarm or Triggers->Timers->Alarm
  • +
  • Edit Trigger Value cell +editor - changes the value of the selected trigger.
    +
  • +
+

5 Services

+

5.1 OSGi

+DSF builds on top of OSGi services APIs.   OSGi offers a rich +API for managing services and it is important to understand some of the +OSGi service API basics in order to use DSF
+
    +
  • Registration - +Services need to register and unregister themselves with OSGi framework
  • +
      +
    • BundleContext.registerService() +- registers a service, it returns a ServiceRegistration object which +should be retained by the caller.
    • +
    • ServiceRegistration.unregister() +- unregisters a service.
    • +
    +
  • References - +Clients wishing to use a service, need to obtain a reference to the +service.  OSGi features reference counting for services.
  • +
      +
    • BundleContext.getServiceReference(), +BundleContext.getServiceReferences(), +BundleContext.getAllServiceReferences() - methods for retrieving a +reference to a service using a class name and/or a property filter.
    • +
    • BundleContext.ungetService() - Releases a service reference and +decrements its use count.
    • +
    +
  • Events - Clients +using services should listen to service events.  Events are issued +when services are added/removed/modified.
  • +
      +
    • org.osgi.framework.ServiceListener - interface for a service +listener.  Objects implementing this interface can be registered +with the BundleContext
    • +
    +
+
+ + + + + + +
Note: The service APIs all use the +BundleContext and they require the BundleContext to be active.  +This means DSF-based debugger integrations initialize after the plugin +is started, but  that they also shut down before the plugin is +stopped.  The first part is not difficult, but the second part +usually requires that the plugin's BundleActivator.stop() method shuts +down the debugger.
+
+
+

5.2 Session

+DSF-based debugger integrations can register many services and there +can be multiple instances of debuggers registering services with the +same interfaces.  To help coordinate services in a given debugger +instance and distinguish the services between the instances of +debuggers, DSF services are organized into sessions.
+

DSF Session features include:
+

+
    +
  • Unique Session ID +- This ID is used to distinguish services from different +sessions.  Clients may also obtain a session instance using an ID +through a static method.
    +
  • +
  • Session Life cycle Events - Clients may register to listen when +sessions are started and ended.
    +
  • +
  • DSF Executor - +Each session has a (single-threaded) DSF Executor  associated with +it, though multiple sessions could share a single executor.  More +about session executor in the next section.
  • +
  • Service Events - +The session is used to dispatch service events.  More on events in +following sections.
  • +
  • Model Adapters - +A session allows an adapter to be registered, which will be returned by +all Data Model contexts in a given session for a given adapter +type.  More information about Data Model is described in the Data +Model section.
    +
  • +
+

5.3 Executor

+All the services registered with the same session share a single DSF +Executor.  By convention, all public service interfaces should be +restricted to being called in this executor thread.  This point +goes back to the primary synchronization mechanism of DSF.  +Following this rule greatly simplifies the task of protecting the +integrity of service state information.
+
+ + + + + + +
Note: All service public methods +should be called using the session's DSF executor.
+
+

5.4 Tracker

+Using the OSGi APIs for accessing services directly can be very +cumbersome.  A client retrieving a service reference is +responsible for retaining the ServiceReference object and for calling +BundleContext.ungetService() to avoid leaking the reference.  +Also, +since a service may be un-registered at any time, the clients need to +listen for events indicating when a service is unregistered.  +Fortunately there are two utilities which help with this task
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+
org.osgi.util.tracker.ServiceTracker
+
org.eclipse.cdt.dsf.service.DsfServicesTracker
+
Services +tracked
+
Tracks all services with a given +class name or filter. 
+
Tracks all services within a +given DSF session. 
+
Thread +safetyThread safeRestricted to the session +executor thread.
Accessors +methods
+
+
    +
  • getService() - +return the first service instance matching the class/filter
  • +
  • getServices() - +returns all references matching the specified class/filter.
  • +
+
    +
+
+
    +
  • getService(Class) +- Returns the first service instance matching given class
  • +
  • getService(Class, String) +- Returns the first service instance matching given class and filter.
    +
  • +
+
Activation/Disposal +methods
+
+
    +
  • open() - Starts +tracking matching services.
  • +
  • close() - Shuts +down and un-gets all service references.
  • +
+
+
    +
  • <constructor> +- DSF services tracker can be used immediately after being constructed.
  • +
  • dispose() - +Disposes and un-gets all service references held by the tracker.
    +
  • +
+
+ + + + + + +
Note: All service trackers must be +disposed (or closed).  Failing to dispose a tracker results in a +service reference leak.
+
+

5.5 Initialization / +Shutdown

+Every DSF service must +implement the IDsfService.initialize() and IDsfService.shutdown() +methods.  These methods can only be called in the session executor +thread  and are asynchronous.  As the last step in +initialization, a service should register itself.  Likewise as the +first step of shut-down a service should unregister itself.  Also +during initialization, each service should call +DsfSession.getAndIncrementServiceStartupCounter(), in order to obtain +the startup number of the service.  This number is used in +prioritizing the service events.
+

Starting up a large number of DSF services requires calling a number +of asynchronous method in a pre-defined sequence.  Implementing +this startup code can be cumbersome and DSF provides a utility for +implementing it: org.eclipse.cdt.dsf.concurrent.Sequence. 
+

+

Here's +an example of how the Sequence is extended to perform the task of +shutting down the services in the +Timers example:
+

+
+ + + + + + + + + + +
org.eclipse.cdt.examples.dsf.timers.ServicesShutdownSequence
+

+
+
 25: public class ServicesShutdownSequence extends Sequence {

27: // Session to that the services are running in.
28: final private DsfSession fSession;
29:
30: // DSF Services is created as the first step of the sequence. It
31: // cannot be created by the constructor because it can only be called
32: // in the session thread.
33: DsfServicesTracker fTracker;

35: public ServicesShutdownSequence(DsfSession session) {
36: super(session.getExecutor());
37: fSession = session;
38: }
39:
40: Step[] fSteps = new Step[] {
41: new Step() {
42: @Override
43: public void execute(RequestMonitor requestMonitor) {
44: fTracker = new DsfServicesTracker(DsfExamplesPlugin.getBundleContext(), fSession.getId());
45: requestMonitor.done();
46: }
47:
48: @Override
49: public void rollBack(RequestMonitor requestMonitor) {
50: // Dispose the tracker in case shutdown sequence is aborted
51: // and is rolled back.
52: fTracker.dispose();
53: fTracker = null;
54: requestMonitor.done();
55: }
56: },
57: new Step() {
58: @Override
59: public void execute(RequestMonitor requestMonitor) {
60: shutdownService(AlarmService.class, requestMonitor);
61: }
62: },
63: new Step() {
64: @Override
65: public void execute(RequestMonitor requestMonitor) {
66: shutdownService(TimerService.class, requestMonitor);
67: }
68: },
69: new Step() {
70: @Override
71: public void execute(RequestMonitor requestMonitor) {
72: // Dispose the tracker after the services are shut down.
73: fTracker.dispose();
74: fTracker = null;
75: requestMonitor.done();
76: }
77: }
78: };
79:
80: @Override
81: public Step[] getSteps() { return fSteps; }

83: // A convenience method that shuts down given service. Only service class
84: // is used to identify the service.
85: private <V extends IDsfService> void shutdownService(Class<V> clazz, RequestMonitor requestMonitor) {
86: IDsfService service = fTracker.getService(clazz);
87: if (service != null) {
88: service.shutdown(requestMonitor);
89: }
90: else {
91: requestMonitor.setStatus(new Status(
92: IStatus.ERROR, DsfExamplesPlugin.PLUGIN_ID,
93: IDsfService.INTERNAL_ERROR,
94: "Service '" + clazz.getName() + "' not found.", null));
95: requestMonitor.done();
96: }
97: }
99: }
+
+
+
    +
  • Line 40 initializes an array of Step objects which are invoked by +the Sequence logic.  Each Step class is an inner class with access +to
    +shared data in the ServicesShutdownSequence class.
  • +
  • Line 81 implements the protected method used by the Sequence +class to access the steps.
  • +
  • Line 85 encapsulates the repetitive logic of finding and shutting +down a given service.
  • +
  • Line 73 disposes the DsfServicesTracker used by the sequence.
  • +
+

+Below is the code snipped that invokes the ServicesShutdownSequence in +the Timers example:
+

+
+ + + + + + + + + + +
org.eclipse.cdt.examples.dsf.timers.TimersView
+

+
+
181:             ServicesShutdownSequence shutdownSeq = 
182: new ServicesShutdownSequence(fSession);
183: fSession.getExecutor().execute(shutdownSeq);
184: try {
185: shutdownSeq.get();
186: } catch (InterruptedException e) { assert false;
187: } catch (ExecutionException e) { assert false;
188: }
+
+
+
    +
  • Line 183 submits the sequence to the session executor. 
    +
  • +
  • Line 185 calls the Future.get() method of the sequence to block +the calling thread until the sequence completes.
  • +
+ + + + + + +
Note: Sequence implements the +java.util.concurrent.Future interface just like the DSF Query +object.  However, if the sequence needs to be invoked from the +executor thread, the Future.get() method cannot be used (or a deadlock +would occur).  Instead the sequence should be constructed with a +custom request monitor to be invoked at the completion of the sequence.
+
+
+

5.6 Events

+DSF provides a somewhat unusual event mechanism, where event listeners +do not implement any particular listener interface.  Instead, +event listeners use the DsfServiceEventHandler +annotation to identify listener methods.  DSF finds the annotated +listener methods using reflection. 
+

To generate an event a service must:
+

+
    +
  1. Call DsfSession.dispatchEvent(Object +event, Dictionary<String, String> serviceProperties) +method.  The second parameter allows service listeners to filter +events using specific service properties.
  2. +
+In order to receive DSF events a client must:
+
    +
  1. Declare a public event +listener method (method name is not important), which takes an event parameter. The type of the +event parameter depends on the event, where the listener will receive +all service events which can be cast to the declared type.  A +second optional parameter of type Dictionary<String, +String> allows the event listener to examine the properties +of the service that is sending the event.
  2. +
  3. Add itself as a service event listener by calling DsfSession.addServiceEventListener().
  4. +
+ + + + + + +
Note: DsfSession.dispatchEvent() +calls event listeners in a separate Runnable submitted to the session +executor.  This is significant because the event listeners may +call other service methods changing the overall state of the +system.  It also implies that the event listeners are always +called in the session executor thread.
+
+
+ + + + + + +
Note: Service events are +prioritized.  Listeners which themselves are services are called +first, in the order that they were initialized.  All other +listeners are called after the services.
+
+

6 Data Model

+The term Data Model refers to +the natural structure of data that is being retrieved by the DSF +services.  One of the great challenges of creating an user +interface for a debugger is that the amount of data that is +available on the target is much greater than what can be practically +presented to the user.  Therefore the debugger services need to +break up the data into chunks with appropriate granularity to achieve +maximum performance and usability.
+

6.1 IDMContext

+The IDMContext represents a handle to a chunk of data in the Data +Model.  This interface is a minimal, yet central feature of the +Data Model API.
+

What a Data Model context is:
+

+
    +
  • It is hierarchical.  +Contexts can have other contexts as parents.  The hierarchy of +contexts in a given system roughly defines that system's overall Data +Model. 
    +
  • +
  • It extends the org.eclipse.core.runtime.IAdaptable interface.  This +allows decorators, retargetable actions, etc. to be associated with a +context.
  • +
  • It is associated with a +single DSF session.  The IDMContext.getSessionID() returns +the session ID of the given context.  This allows all clients to +get a handle on the session and the executor needed to access the DSF +services that the context originated from.
    +
  • +
  • It is thread safe. +This allows context objects to be stored and compared in viewers, +caches, and other clients which may implement their own threading model.
    +
  • +
  • It is light-weight and +preferably immutable. This allows contexts to be stored by +clients that may persist beyond the life of the services that +originated them.  If a context holds references to a lot of data +or it may prevent that data from being garbage collected.
  • +
+What a Data Model context is NOT:
+
    +
  • It is NOT a reference +to a service.  Context should not return a reference to a +service directly because clients should use the appropriate OSGi APIs +to obtain references to DSF services. 
    +
  • +
  • It is NOT persistable.  +Since a context returns a context ID, it is valid only for the life of +a single DSF session. 
  • +
+
+ + + + + + +
Note: An IDMContext object can be +used to retrieve any +type of data object from the service.  Although there is an +IDMData marker interface defined, its presence it historical and its +use is optional.
+
+

6.2 Context Hierarchy

+One of the most powerful features of the IDMContext interface is that +is is hierarchical.  The IDMContext.getParents() +method returns the immediate ancestors of a given context and following +the parents' parents allows clients to traverse the full hierarchy of a +context. 
+

The use of the context hierarchy may be best explained with use of +the Timers example.  In the timers example there are three +contexts that are used:
+

+
    +
+
    +
  1. Timer - no +parent contexts
    +
  2. +
  3. Trigger - no +parent contexts
    +
  4. +
  5. Alarm - requires +both a timer and a trigger as parent contexts
  6. +
+
    +
+From these, only the third one has any parents (and any hierarchy), the +code snippet below shows how these parents are used in the AlarmService:
+
+
+ + + + + + + + + + +
org.eclipse.cdt.examples.dsf.timers.AlarmService.isAlarmTriggered()
+

+
+
209:     public boolean isAlarmTriggered(AlarmDMContext alarmCtx) {
210: // Extract the timer and trigger contexts. They should always be part
211: // of the alarm.
212: TimerService.TimerDMContext timerCtx = DMContexts.getAncestorOfType(
213: alarmCtx, TimerService.TimerDMContext.class);
214: TriggerDMContext triggerCtx = DMContexts.getAncestorOfType(
215: alarmCtx, TriggerDMContext.class);

217: assert triggerCtx != null && timerCtx != null;

219: // Find the trigger and check whether the timers value has surpassed it.
220: if (fTriggers.containsKey(triggerCtx)) {
221: int timerValue = getServicesTracker().getService(TimerService.class).
222: getTimerValue(timerCtx);
223:
224: return timerValue >= fTriggers.get(triggerCtx);
225: }
226:
227: return false;
228: }
+
+
+
    +
  • Lines 212 and 214 search the context hierarchy of the alarm +context for the timer and trigger contexts. 
    +
  • +
+ + + + + + +
Note: Methods that take a context +as an argument can specify the generic IDMContext as the argument type, +then search this context for a specific context type.  The benefit +of this technique is increased flexibility, at the cost of compile-time +type checking, and it is used throughout DSF to avoid dependencies +between service interfaces.
+
+

6.3 DMContexts

+Searching the context hierarchy can be tedious to implement, the +DMContexts utility class contains a few static methods to simplify this +task:
+
    +
  • getAncestorOfType() +- Searches for a context of a specific type in the hierarchy of the +given context.
  • +
  • isAncestorOf() - +Checks whether the one of the argument contexts is in the hierarchy of +the other.
  • +
  • toList() - +Converts all the contexts in a hierarchy of the give context into a +list.
  • +
+

7 View Model

+View Model refers to the ideal user-presentable +structure of the data.  This is in contrast to the Data Model, +which refers to the natural +data structure, although the two often end up being the same.  +Never the less, the needs of the user presentation often change so the +central feature of the View Model is the ability to customize it.
+

7.1 Flexible Hierarchy

+View Model builds on the flexible +hierarchy API introduced by Debug +Platform team in release 3.2.  The flexible hierarchy API has a +few distinguishing features:
+
    +
  1. There are provider interfaces for every aspect of data +presentation in the viewer (content, label, columns, etc.). 
    +
  2. +
  3. The provider interfaces are retrieved by the viewer for each element in the +viewer.  This allows the +view content to be populated from multiple sources.
  4. +
  5. Provider interfaces are asynchronous. 
    +
  6. +
+ + + + + + +
Note: Flexible Hierarchy is still +a provisional API in Eclipse Platform 3.4.  This virtually +guarantees that DSF will break backward API compatibility in future +releases.  However, these APIs have now been widely used by open +source projects such as DD and CDT and also by many commercial Eclipse +integrations, so the API changes are likely to be small and mostly +related to packaging.
+
+

+

For more information about the flexible hierarchy API, see the Debug Platform: +Custom Integration tutorial at EclipseCon 2008.  The flexible +hierarchy is described in the presentation starting with slide 29.
+

+

7.2 The Adapter +Problem
+

+The number two feature of flexible hierarchy API is implemented using +the adapter pattern.  One down-side of the adapter pattern is that +there can only be one instance of an adapter of a particular type +registered for a given element.  For flexible hierarchy providers, +it means that each provider must implement the element presentation +logic for every view that the element appears in, and as a result +adding a new view can force changing a large number of modules. + + + + + + + + + +

+
Diagram illustrating problem of +multiple views sharing a single element, when using the adapter +mechanism.
+
+ + + + + + +
Note: The limitation of posed by +the adapter problem can best be obseved with the Standard Debug Model +implementation of the Flexible Hierarchy API.  If a developer +would like to extend the Java Debugger to provide a custom Label +Provider for a Java Stack Frame, than that developer would have to +extend the Java Stack Frame object in order to register that new Label +Provider for it.
+
+

7.3 Model Proxy +Problem

+There is a second major challange in implementing the flexible +hierarchy API, which stems from the different life-cycles of the +Content Provider and Model Proxy objects. 
+
    +
  • Content Providers life cycle is managed by the model.  The +viewer requests a reference to the Content Provider for each element +separately, and this instance of the Content Provider can be a static +object, or a newly created object for each request, or it could be the +element itself. 
    +
  • +
  • Model Proxy is created through the IModelProxyFactory adapter, +and it is instantiated and disposed by the viewer as needed.
    +
  • +
+ + + + + + + + + +

+
Diagram illustrating problem of separate +Content Provider and Model Proxy lifecycles.
+
+In practice this arrangement means that the content provider and the +model proxy are implemented using separate object.  However, both +objects need to have knowledge of the layout of elements in the view in +order to function correctly.
+

7.4 View Model Design

+The DSF View Model is a collection of objects which retrieves +information from a data model and uses that information to pupulate the +content of one or more Flexible Hierarchy viewers. 
+
+ + + + + + +
Note: DSF View Model can be used +to represent any data model.  There are features in the DSF Data +Model which make it easier to represent it using the View Model, +however these features are not strictly necessary.
+
+
+
+The View Model uses four principal types of elements when processing +adapter requests from flexible hierarchy viewers.  These are:
+
    +
+
    +
  • VM Adapter - The +adapter is the top-level object in the view model hierarchy. All the +content updates from the viewers are handled by a single instance of +the VM Adapter.  The VM Adapter then delegates the handling of +these updates to the appropriate VM Providern based on the presentation +context contained in the update object.
    +
  • +
  • VM Provider - +The provider manages the content for +a single view.  It delegates content requests to the appropriate +VM Node, based on the tree path of element in the update object.
    +
  • +
  • VM Node - The +VM Nodes allows for grouping of like-elements in the view.  +Examples +of such nodes are: threads node, stack frames node, variables node, +etc.  The VM Node creates VM Context objects to represents +elements of data in the Data Model.
    +
  • +
  • VM Context - The +VM Context objects are used to populate the content of the +viewer.  A give VM Context may contain a reference to an element +in the Data Model (e.g. a stack frame or a variable), or it may be used +purely for presentation purposes (e.g. the "Add new expression" entry +in Expressions view).  The
    +
  • +
+
+ + + + + + + + + +

+
View +Model Design Diagram and Content update handling.
+
+
+ + + + + + +
Note: The most important feature +of the DSF View Model design is how it overcomes the Adapter +Problem.  The VM Contexts are used to redirect getAdapter() +requrests from the viewer to the appropriate object.  In this way +a particular can have many different View Model representations, rather +than just one.
+
+

7.5 Layout +Customization

+The primary design goal of the View Model is to make it easy to +customize the layout and other presentation aspects of a given data +model in a viewer.  The easiest way to explain how this +customization looks like is to use an example.
+

Timers Data Model

+In the Timers example described previously, there are three types of +elements in its data model:
+
    +
  • Timers - Timers have a value that is incremented each +second.  The are independent of any other elements.
    +
  • +
  • Triggers - Triggers have a constant value assigned by the +user. 
    +
  • +
  • Alarms - Alarms represent a timer combined with a trigger and +there is a separate alarm object for each combination of a timer and a +trigger.  An alarm has a state, which is either triggered or not +triggered.
    +
  • +
+
+ + + + + + + + + +

+
Timers +Example's Data Model
+
+

Timers View Model
+

+When presentated in a view in a tree hierarchy, either the timers or +the triggers can be shown as top-level elements.  In the View +Model, the layout configuration is controlled by the configuration of +the VM Nodes within a given VM Provider.  This configuration can +be easily changes as it is done in the Timers example (see figure +below).
+ + + + + + + + + +

+
Timers +Example's View Model
+
+
+

7.6 Event Handling
+

+Another important job of the View Model is to translate the events that +originate from the Data Model into generic events (model deltas) which the viewer can +use to update itself.  These model deltas are low-level +descriptions of exactly which elements in the viewer have changed and +what has changed about them.  Some of the updates to the viewer +even require a full path to the element that was changed, including +indexes +and number of children for each element in the path. 
+

Event handling in VM +Provider

+The VM Provider is the object in the View Model that listens for Data +Model events.  The events hare handled in the following steps:
+
    +
  1. The VM Provider receives the vent from the Data Model.
  2. +
  3. The VM Provider calls the IVMNode.getDeltaFlags() for each node +to determine whether a model delta needs to be generated for a given +event.
  4. +
  5. If a delta is needed, VM Provider calls IVMNode.buildDelta() for +each VM Node, building up the delta as it works down the node hierarchy.
  6. +
  7. After all the nodes were called, the completed delta is sent to +the viewer so that the viewer may refresh itself.
  8. +
+ + + + + + + + + +

+
Model +Proxy implementation in the View Model
+
+
+

The following is an example of a debug trace output from a model +delta generated by the Timers example.  This delta causes the +"alarm" element to be added and selected in the view.
+

+ + + + + + + + + + +
Timers Delta Trace +Output
+

+
+
RECEIVED DELTA: Model Delta Start
Element: Timers View Root
Flags: NO_CHANGE
Index: 0 Child Count: 1
Element: .timer[1]
Flags: NO_CHANGE
Index: 0 Child Count: 1
Element: .trigger[1]
Flags: EXPAND |
Index: 0 Child Count: 1
Element: (.timer[1],.trigger[1]):alarm
Flags: ADDED | SELECT |
Index: 0 Child Count: -1
+
+
+

Processing events in TimersVMNode

+The following listing shows how the nodes translate the events into +model delta components:
+
+
+ + + + + + + + + + +
org.eclipse.cdt.examples.dsf.timers.TimersVMNode +

+
+
141:     public int getDeltaFlags(Object e) {
142: // This node generates delta if the timers have changed, or if the
143: // label has changed.
144: if (e instanceof TimerService.TimerTickDMEvent) {
145: return IModelDelta.STATE;
146: } else if (e instanceof TimerService.TimersChangedEvent) {
147: return IModelDelta.CONTENT;
148: }
149: return IModelDelta.NO_CHANGE;
150: }

152: public void buildDelta(Object e, VMDelta parentDelta, int nodeOffset, RequestMonitor requestMonitor) {
153: if (e instanceof TimerService.TimerTickDMEvent) {
154: // Add delta indicating that the given timer has changed.
155: parentDelta.addNode( createVMContext(((TimerService.TimerTickDMEvent)e).getDMContext()), IModelDelta.STATE );
156: } else if (e instanceof TimerService.TimersChangedEvent) {
157: // The list of timers has changed, which means that the parent
158: // node needs to refresh its contents, which in turn will re-fetch the
159: // elements from this node.
160: parentDelta.setFlags(parentDelta.getFlags() | IModelDelta.CONTENT);
161: }
162: requestMonitor.done();
163: }
+
+
+
    +
  • Lines 141 declares the getDeltaFlags() +method, which tells the event processing logic what flags if any can be +generated by the given node for the given event.  Depending on its +return value, the event processing logic may or may not call the buildDelta() method.
  • +
  • Lines 144-148 return appropriate flags for the events that this +node can process.
  • +
  • Lines 153-155 process the TimerTickEvent. +They add a delta element corresponding to the changed timer instructing +the viewer to repaint this timer.
  • +
  • Lines 156-160 process the TimersChangedEvent.  +They add a flag to the parent delta element, instructing it to refresh +all the elements managed by this node.
  • +
+

Event Coalescing

+It is possible for the Data Model to generate events at a faster rate +than the ability of the View Model and the viewer to process the +events.  In these cases it is more optimal for the View Model to +skip processing some events to keep up with the Data Model, but still +keep the viewer updated.  The VM Provider has an API +(IVMProvider.canSkipHandlingEvent()), which can be used to implement +event coalescing for specific use cases.
+

7.7 Property Provider +/ Label Provider
+

+The IElementPropertyProvider +interface is not actually part of the Flexible Hierarchy API, but an +extension interface added by DSF.  View Model implementers can use +the property provider to configure an IElementLabelProvider +object +that the Flexible Hierarchy viewers call in order to get element +presentation details.
+

Below is the listing from the Timers VM Node that configures the +label provider:
+

+
+ + + + + + + + + + +
org.eclipse.cdt.examples.dsf.timers.TimersVMNode +

+
+
 53:     private static final PropertyBasedLabelProvider fgLabelProvider;
54: static {
55: fgLabelProvider = new PropertyBasedLabelProvider();

57: LabelColumnInfo idCol = new LabelColumnInfo(
58: new LabelAttribute[] {
59: new LabelText(new MessageFormat("Timer #{0}"),
60: new String[] { PROP_TIMER_NUMBER }),
61: new LabelImage(DsfExamplesPlugin.getDefault().getImageRegistry().
62: getDescriptor(DsfExamplesPlugin.IMG_TIMER))
63: });
64: fgLabelProvider.setColumnInfo(TimersViewColumnPresentation.COL_ID, idCol);
65:
66: LabelColumnInfo valueCol = ...
...
74: }
+
+
+
    +
  • Line 55 creates the label provider.
  • +
  • Lines 58-62 create the display attributes to use in the Name +column.  These attributes use named properties as parameters in +calculating the data, such as the label string.
  • +
  • Line 64 registers the column info object with the label provider.
  • +
+All that is left is to implement the property provider:
+
+
+ + + + + + + + + + +
org.eclipse.cdt.examples.dsf.timers.TimersVMNode +

+
+
114:     @ConfinedToDsfExecutor("getSession#getExecutor")
115: private void updatePropertiesInSessionThread(final IPropertiesUpdate update) {
116: // Find the timer context in the element being updated
117: final TimerDMContext dmc = findDmcInPath(
118: update.getViewerInput(), update.getElementPath(), TimerDMContext.class);
119:
120: // If either update or service are not valid, fail the update and exit.
121: if (!checkDmc(dmc, update) ||
122: !checkService(TimerService.class, null, update))
123: {
124: return;
125: }
126:
127: TimerService timerService =
128: getServicesTracker().getService(TimerService.class, null);
129: int value = timerService.getTimerValue(dmc);
130:
131: if (value == -1) {
132: handleFailedUpdate(update);
133: return;
134: }

136: update.setProperty(PROP_TIMER_NUMBER, dmc.getTimerNumber());
137: update.setProperty(PROP_TIMER_VALUE, value);
138: update.done();
139: }
+
+
+
+
    +
  • Lines 117-118 call a convenience method to extract the Data Model +timer context from the viewer update.  Normally this requires +casting the object returned by IViewerUpdate.getElement() to the +expected VM Context class.  Then extracting the model object from +the VM Context wrapper.
  • +
  • Line 127 retrieves element data from the service.
  • +
  • Lines 136-137 write the element properties into the property +update.
  • +
+

7.8 Update Policies
+

+In some use cases, it is desirable to freeze a given view from updating +and to preserve its content even if the underlying data has +changed.  This is a particular challange for Flexible Hierarchy +views because they are lazy-loading and cannot be relied on to hold the +data that they have retrieved. 
+

Cache
+

+To support this feature, the View +Model offers an implementation of a VM Provider with an internal +cache.  The cache works in the following steps:
+
    +
  1. The viewer or another client requests an update (current the +cache supports daving element content and element properties data).
  2. +
  3. The cache checks whether there is already cached data for the +element in the update.
  4. +
  5. If update data is in cache, skip to Step 8.
    +
  6. +
  7. If data not in cache, the cache creates a new update object, +which is a proxy for the original viewer update.
  8. +
  9. The VM Provider forwards the proxy update to the VM Node to +complete.
  10. +
  11. The VM Node completes the update, fetching data from the Data +Model as needed.
  12. +
  13. The cache receives the completed proxy update and saves the data +from proxy.
  14. +
  15. The cache completes the viewer update using data from cache.
    +
  16. +
+
+ + + + + + + + + +

+
Diagram +of the Caching VM Provider
+
+
+
+ + + + + + +
Note: Theoretically the cache is +completely transparent to the VM Nodes.  I.e. no additional new +logic in fetching data from the data model is required when switching +to the Caching VM Provider.
+
+

Last Value
+

+A common use case in debugger views is to indicate to the user whether +a particular value in the viewer has changed since the last viewer +update. To support this feature, the cache is able to save the last +known value of an element upon cache reset.  The label provider +can retrieve this last known value and compare it to the current value +to determine if the element should be hi-lighted in the view.
+

Update Policy
+

+The update behavior in the view is controlled by the Update Policy +object (IVMUpdatePolicy).  The Update Policy examines all events +received from the Data Model and it determines how the cache should be +updated in response to the event.  Following are some examples of +update policies:
+
    +
  • Automatic - Clears the cache upon any and every event from the +Data Model.
  • +
  • Manual - Clears the cache only in response to user request for +refesh.
    +
  • +
  • Breakpoint Hit - Clears the cache upon a Breakpoint Hit event and +user request for refresh.
  • +
+

7.9 Synchronized +Event Handling

+In some situations, there are events in the debugger which need to be +handled by multiple views in a coordinated way.  For example, the +user may request that the debugger slow down stepping to allow all the +visible views to refresh their content.  This feature is +implemented in the following manner:
+
    +
  1. The VM Adapter listens for the events from the Data Model +(normally the VM Providers are the event listeners).
  2. +
  3. When the VM Adapter receives an event it forwards that event to +all the known VM Providers. 
    +
  4. +
  5. The VM Providers process the event and when the event is fully +processed, the VM Provider notifiy the VM Adapter that the event +handling is complete.
  6. +
  7. When all VM Provider complete handling the event, the VM Adapter +notifies the event observer.
    +
  8. +
+ + + + + + + + + +

+
Synchronization +of events in View Model
+
+

8 Future Development

+

8.1 Compare View

+Comparing data from different elements (stack frames, threads, cores, +etc.) is a common task in debuggers.  It would be ideal if the +debugger offered a "compare" view mode where data from different +contexts is displayed side by side and differences hi-lighted.  +The DSF View Model already uses wrappers and has other features in +place that should allow this feature to be implemented.
+

8.2 Debug History

+The View Model cache is currently able to save the last known value of +each element that is shown in the view.  This feature could be +extended to save not just the last value, but to save its entire +contents as the views are being updated in response to Data Model +events.  This data history could then be presented to the user in +very much the same way as local file revision history is shown in the +History view.
+

8.3 Contribution to +Platform SDK

+The DSF framework itself does not have any special dependencies on the +CDT project.  Also, the technology in DSF is applicable beyond the +CDT project in cases where asynchronous access to large data sets is +required.  Therefore the long term goal for DSF is to contribute +it to the Eclipse Platform project.  However there are several +obstacles to that plan:
+
    +
  1. DSF uses Java 5 features including: generics, annotations, and +the concurrency package.  The Platform project is very +conservative and is resistant to switching to Java 5.  One option +may be to keep the generics and use the Java 5 compiler to produce Java +1.3 compatible byte code.
  2. +
  3. DSF relies on the Flexible Hierarchy viewer, which itself is a +provisional API.  The Flexible Hierarchy viewer is a general +viewer feature and it should be part of the Platform's UI component +rather than the Debugger.  Contributing Flexible Hierarchy to UI +would require significant refactoring before it would be accpted.
  4. +
  5. Ideally the JDT debugger should take advantage of DSF to provide +a compelling use case for this technology in the SDK.
  6. +
+ + diff --git a/doc/org.eclipse.cdt.doc.isv/guide/dsf/intro/introduction.dia b/doc/org.eclipse.cdt.doc.isv/guide/dsf/intro/introduction.dia new file mode 100644 index 0000000000000000000000000000000000000000..dd151995452fdc04723a5eba24e42fbabfe4c6f3 GIT binary patch literal 1667 zcmV-}27LJ+iwFP!000021MOU0bE7sCeb298*q3%DmL>5eHtX!{PP@~GcJ?9LzItS% zV7eGQLU!Vp{`Lw%VjF`$z>swdGrJQL`5x}&-gB;m$cK;5^H5tco&<3;(h-2V#-eHL z1(83}|NQo4K=hCIHy^x!zL)=ePUo8ZMwFzVM*2*M#rxs#>FEiC>x7D!gD_Zvgbn|p zVMvE^&``g>(X?#?9u+h_m!G9V@L;kOOpEB8jr0kfe)oC2j66LXm5-aoVa&A^4M+OB zM|J4K+{|#t&H>vC>az)F^n0~wC=b`IV|u}O(d>K?CxILy){DI%6?W49x5nh75;-XH z@85kg-({DSpV-(cyU=ur9 z3l}8gMa%`Kf!K$f#Bs=Il%Wc~Wc6{9DGgw15H#!KJqAL=M?89@ zVRDK~+3DB%JGYj79(adKd1pk0m8ZZHv+?uc0Aj0t#4><&djP8-2__*c^C5^thJc!z zUth+2@g6Bw-+aAcPGr_9Wy2%PV%GVx;V%P^B}bBNcT9z)Sw3udEb7H^rv@fFRShcq9EQ z+znRIJ!wqx<6g8D@oP#AkO8b)WC6!224SB_svstlA_A8_(8v$j7D@(lM*z7sqz2T3 zV9Dqoxl3@bu zVrZx7WI{ylBp_0_u4B|>Dv`$INS{;~Q+03EgmY(HVQ%^hn=E~w@teN__LNl2Qx7z8 zRr7*45@oRIdF_$TgK$04Kk3s+18Q@Y(1oqq{?B~vOc1nwSY zGtk|nJd~I=*rkLzXhkinTpNL~8IYV*`q7+~-%}PX=Oumrq0Yaoc|EU2R_c<9RkFF1 z6H9LzN0F>&$vw$l!M*%On@P6HGgQP%QMJu)M>^T>$_qv>qT@#67FzY1HfUAJ2U!Cx zQSOkWKqcg6BbhzkL^t%S7xR|I+-#h=5IDq9s%o^`hz?}z-87jj%OH0U*hpnCbkH?v z`KOG0dNprd&9^cW8HUr#`4!5!@g{O^U1CKHcOd8z#>fPHU;+zwqUeoXJ4Mq8upMig zEu3D{Pu6t1arzSA<}>uRH63B#npr+6S(kZC2);sL*S@NolxR0UsR!aJoXM@0#7jP9 zS{TRQmy4f!*>7L=H_6+}{*}tU^(M0KG+&L!2(-QyFEPxQrFd)rXtlc*U*Dx4Zt`B+ zlOIy%$%WS88$5$NDQRVoYB(xwi6my3xG#ZNQe{)L&HhM8=`a;E>F1ls@Bzijr<^D zy@Ge6;4(iP(yy9d=iaxrH^2QZ3$aYYn{R(}(+7U7GNKDi7duF8UPq>VH;{PH!LFK! z8 znLFf_zJ@Bv%j$}~O1!KZ)pJgBUv_8oRdBItRNsB|{MGYUcl_mC=2<=g zZNEF`s^zbAuSrT^@&r`NUj_s=X@3G);$+ndbnWEm39Kiu|1p7OpVgm^y1&`^+fw&8 N{{kO?QGl0H003&rKh^*M literal 0 HcmV?d00001 diff --git a/doc/org.eclipse.cdt.doc.isv/guide/dsf/intro/introduction.png b/doc/org.eclipse.cdt.doc.isv/guide/dsf/intro/introduction.png new file mode 100644 index 0000000000000000000000000000000000000000..55d7b5a48aa58c0013dd3ecd519c9cbb59129ded GIT binary patch literal 11369 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 literal 0 HcmV?d00001 diff --git a/doc/org.eclipse.cdt.doc.isv/guide/dsf/intro/proxy_problem.dia b/doc/org.eclipse.cdt.doc.isv/guide/dsf/intro/proxy_problem.dia new file mode 100644 index 0000000000000000000000000000000000000000..183d14c4926cfb07b4aa532273e95c4065baf424 GIT binary patch literal 2558 zcmVf*^&c#8Mx4oSmy<=FKmKrj{`~w5qSwsNlN3bZ z5@h`RcRz~!bJ6I0a&=-^A3F&A+?U6yqkf*J;dGgEEA}7wM37 zLqGEW4{fSenP?QxufANnU&>3W4!rkOccG0S`GcR%!+0A<%uQ5I1OgNxBqqaSl-a~3 za5X3U!%c^Ui-v_uhlLBXyT>HWQ$NhNA*V?aaX&6m^K{Ak<76{G5+c?%EQL|rhk2gt zxc+-T%DN1oJp86@`)cky4TE;YU2D9PUx`p;Mi@Tw2sDa^uY#OuZo z#<}txUv>X_nC>_4QDMX1Pgj(QvbV-XBB0#k-u{ckd>IBj+aYZ0Z5n!7RL#zJ&H84$ zt`k!p+E}s+h{%8CY1RGB`(kZXH@LDpmOsnGr`5L)bCOK|$7gvp*nj7K9QbKqomn@@ z%jBJj2p$p!my>_k>yx!PJkgo3hFi1sn7oM;7CLcy1`+T!=V058G$BlJ!v9?lneTkoW2_tPW| zc)IKAZ2;}^16^iAh#~3+mo1X#yBbcqd%@iYrM%;JsUL*Pta(&$NAKmqQp0+y98_01 zN~Cx~0Fhp;qZN#I!2p)O+raVkDxUJty67J2tsR||&(^MdwpVE%aXs6kHvSaKx2Jmi z%3tyi`T;BbK&tvdOY7bLE_BikBGdw-Qdn(BsZbHebx4Wq(!TaEmy@!Ci*2-Ny19i5 zyVh>Q+x1mM0wo0_aDOO^>T8ZhJG}$viw!D8DSR7bN|Al zC!U8h|0C(z{}Q&8vsQsT#)xnkkw+kLZ3dYd=(<3*3Z+LKss^@Bo?GH9wyg#v9MpL% zC8Q3F$IFKrucFPbsH4XFX~$D>Nt^odekmQ5ZkEKc&}LzFvMp6x{l!`cLsbcAo)qi0 z_5N3JL$^8qMyCg13y!KaBtXa=1A0xNOG*$V2)gi+j!JVI`$#Y92A1QWy7x8%BZaI*>{(-8HJ8e}@#6v_x-F<>4aN}fW zpr{E{PMw4V3{hwC21C$A^}7ui8N;sccjuPS4W)CnyCtN4{V=Y{fUb#>>C~M!-emsV zv6w#>P*_ntmpVlHLy)dG7{((gq`4JVN+!SjGfkdC;b?r16*b4QjAE&@9b&Rz##m8v zoRS*o9VSM^1_=?d_XrUkBtXPWeCXSb4>f27K8#k7L9~LrYXu%eD~QpGZ(A#xXf!zt zjb;O|=pt1R+89gKK#;H^;mKi+J3)-z<_M zmOwsOM#poDM@Ws-GTs`?IFMz;#xjoAGU8*_*g&S999JbuYBrFztg>Nmo9rIOu%rYI z(z(rEKfK!ga~C4#uq~wz={jnYYj)esZu>AL3j6K0AGNd)spkY2+fDjQuH{qPs?u&* zZ!HZUWaWyl+3?j5uqkt>bF(fs&xUG@+t@r~^MQg^k*6)2-sVu zF)hldbw|tV~zG(d2u6i~;6hDI71Lhz_Ql5$=$)BeH*T5<*i81gQVSP;w73ka}7 zwR%TeLsMu%+bc7wS3GoSr9jaJa+%uBGw#&)=T6y;Ppa7MPHmdUp&oOA)H9Z`P*z88 zMR|pRi-%kgKwOH71Cqy&U^7t&WX>~FPOg0eaa$Bk(Z&d$a)CVc*Y%JA3d$=K1RU49 zppv&0m>we|C?orC$e(#?ipg{vrCL!mX6e(JrN8t1IZ3|?t8^PB%b?CIsb^~ohtAdN zL{DdS3K8&Ic5bN*A{){g@Eas|M;PweU zbblLS z@c%-j{76?suYeI0MGB-gkZd`XuT1B9-`@IXo(Q6mhBLvveomfa>$-?k)(|lDx}cJc zW8L8@fDv;fj&lL!>rmuFSzUlh?bWeAtC@|web>h(>u ze2|={xgNTL!2lLdP9bgyYLnh?avG9W|4S~m{E25Ll3<%{3GLewwNhz9fS)b|*qw+f zR~jJ~ApJyCpuiOoMK*ylEJ!OdO2$h>l_$>-QA0$(Ln7LLaNT)me~iyULmlOMDulID zPzizMTVEh6Dh!}U3I^&yOvk`LXFQYy^p_{WF-&HRb_%*Jk%oRAm424rBmb4BS108c U@iR~ThpUr60OIuNdBK(d0RJi2a{vGU literal 0 HcmV?d00001 diff --git a/doc/org.eclipse.cdt.doc.isv/guide/dsf/intro/proxy_problem.png b/doc/org.eclipse.cdt.doc.isv/guide/dsf/intro/proxy_problem.png new file mode 100644 index 0000000000000000000000000000000000000000..5b5fb65cf7716a983f26060d907a2fc0bf8cd645 GIT binary patch literal 16399 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 QJU`y!N2+qg56pu97Z7SA?EnA( literal 0 HcmV?d00001 diff --git a/doc/org.eclipse.cdt.doc.isv/guide/dsf/intro/query_1.dia b/doc/org.eclipse.cdt.doc.isv/guide/dsf/intro/query_1.dia new file mode 100644 index 0000000000000000000000000000000000000000..68078a3d47b921de5a29d5f1f6bcc7afe7d74e90 GIT binary patch literal 2247 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 S!GEiLy!#)WTQCRLegFW0xB&wI literal 0 HcmV?d00001 diff --git a/doc/org.eclipse.cdt.doc.isv/guide/dsf/intro/request_monitor_1.png b/doc/org.eclipse.cdt.doc.isv/guide/dsf/intro/request_monitor_1.png new file mode 100644 index 0000000000000000000000000000000000000000..f9fec21cd3e277bd802b455aafc290ec5bc51133 GIT binary patch literal 13914 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 T!)(4 zRXmV`*g}lQ8zM{1Uod))t}2Zf$t<{*e-exQ@)RL)urB-I_*f?^F-W$aB_IjU<1;c= zx417o3oMd4^OmYi{1tuWMiB)N^CmGu4~5i^PRlVIeznVk*!*{~E;n`4?6%xs?ioI+ z!*qF{_g#7^t$t`2qKDMlpe$R2a^(X)Ex_rO7&kWV4H+yvwH(*q3A|Qm2o*Ku&jMyO z=k(l%Rs`tqXF-zntRXh=8>f%GPji;)d|x1Fy0yK1oKxeLwl;ddx9Im$B$S~;D&q;= zvn(P;4mQPH21*g9D~oqkUcTY$SD^1TI?_wwP!*?9R#Xm_}{xT?Th z#_DLcrrh?|-CD$?A8;JVqitnns9X)s;F>krc`vx_;W%O6U z^!E0G%2r!lZ7Fa99>3OTKo#vAh#09Rq^Ahs`x~`NiOOHs80d+7WtblboB)xsMr^l5jF5;Z3N(BmWpj^6 zQOsmD3kzwIOZ#q_GuNXYw8h^zOG`&biH~#pV|KRP;!uTDY;)@E5+{L;!!0qsO|JeM zP>82PzWey`Blr-ls@idpN_G_!D_L25%eEj@Qx6UG&&z(#9@ZoE&86_pI%%wRE%&eoX$SaxeT-xqE$>edVRZv1AKz_(=TB=>%jPm|0-DeERg9pI-==qL-?lewRsD$8Kx2avx%Lw=_cg!F; z=Xbok79SD9qaK%hyzp+*?O-_IljGf?*ui(e*CnFC$M77FLHx^Dp&k6*oPq)O&jJHMoAt?#mE)Y>Jhy7EK><_hCie1Ab(RR$&QVU0=`8gI=e1Axumi z??5aZ2$p0zA6{>rlbYISHF!9o8lOgqxm^+!?G1c_wZJpNy1>f8VFt1IVhhQ`Kq z4S~a5{)j&L#|Vn1!yAx>&uRgZy|6hRUG?RQ$ks$`SXfxpF~HG#2NoFkwnvfBmkyX^ zwz(#w`UjQCK?H*8$Uzq1=m0|w10@;Dj1LDVr#XQ5j~|u)oi3zv(l}vn`i~uGlZ13a z&l0%xL4Z9_ba(%hhLJ~Yu}b)7xOVSz&@p~zM0-m#5zAq`Vsx%ma!#&7_n6)Ma@O4) z)Q1})W2fG>rKUM}UIA63ClC|V(5(cCfn5uWO0}a1Y_cCa?O^Ui-q2{k!gHC3#>ZM# zEj6$H;vL9)ATVQk%HZIs{i7y>JYt~pnrf3cmql#Qoege;+tEMmTRJNxC5Z(VqMv`zW9K%Z=E)oTaxIASTa5G9ndUc;c%j))~V;u z$y|?P5902&SduU`kHO|rx)#a_7TA&p&N0wX%S-rm>Tbsu7Z(>46ny;n_-WB{gD@`9 z32JKUfmEXsj(f!Vz-PTVUT{r;-e|{Fv@vAiw%rY+;ovipQj73y1Dq`uXTZ! zLh$3fN!v$o<9FbFuLZ5fKB{HNM_;PvGll8AxVQ+W)WLP_Zm&z5VL54f%r04G1zXMj z8uD9*Lw+^K4#$fJ*4@D>wm3e1Y^E~c~Hep_9AVgYVBJTx+c(M?d^G{+_kYDK4yV7BhsOy`U>u^Dx` znn0~(O5_1AWN%pRGUZEDp2`y{;gaxu?6)|I86h)r+hO6G0RPAFgv}@KBc8g#4ofZG z%L5~Lya251LCc(TU`WpO7jsbs97URb6bOB%WJq^{2sasePfB9qRnE{r!$!X@rc1aza!_zR^x2b z&N~;vz=g0DiZpq+v$F%0H{G7vZJGt@qhY2xN=8AUxh?rNNRnphx6FHT(sj#^sNafh zrl6om%QWJp<vk zAMocn2!?$Dn^dmJBn`F!F#jg>$5p8N)#?Mr3lk$labg?$BXHj#a0 z9jP5Lv$Sv?&c7t?>FS_UrREeR9fQscl~qkC|k4O-)T9vU>SZ`zvJlhYkd{)}dP4r=Q_)R!K?83aT6&{!I1A@bGJA_;`8W zE3;+ENl8h$xD>i|;}4*VG|9?Nzq?PnzuI!+6q$csUfzVD@O?ql#CsX$soB{`K`R#I zJwwB@EG(7AnPjM66eZ3ZcHX^v?<(#b-H-)bX(a)6=Rtl8B)4X1hWfg?6%G5{t<`97v!LOk z@g`?xL;y=d8Z=GW83%GvQs3@FiH{ee*1#%-fSe%6t6K z*Z#G6fBEV5QM_`J8@Den;Eu4$S(|1t-O`N!eC_s7$NPSn>J+B&cZ-lbr;XTrwHvOc zqYhqnB*oafqS_+S3}EoiDgcqap+ zn<^?Q4xBphVgR}?++3Dq9EfH@YdI%zIT3T9i2S;7y z6FOgC-%0DgAw6Dt_be#C5Y&UM(Q2IO>FMe9Y`7{gRV|~^LE;C@Pdj%;2QF~1GySe_ z&AkiM1fiUoACi;f$p0R?4KGs@69u7rm6W)vCxi5Q+Uv#3ms&ZN5~=Mlj%$L?9H*ot zMbXmILM&_9;|CwW%F!?LnNC26G5Jj=SdG;I#Hhm}77@pT?WUHdgHg^6GTSA15_aQJ zWPN=-`qJhI7$io*kVyhN^eP?%lpgu}r>iHkva+6$kGNG}e;)b8kT*Uq&c@E}THLpo z7$h)s&T8{)X(=gn_LuI-uir#-d5^DR?D#P*DKiE2KopgoiX3&Ag43hc|MCS`J}?iB zzAWn(4XEyUO94rypz^^RKZl_QM^ATmzWw5z*kpralhHY2EBr(mC3C3S+i}|N?QE{BSnsJa%0W-{lKxNJNa4q{B8TXZ zFYVIu^77JBigvMiMrVpf?%P)5qsSj+*H8hW81lYGSqqaA%2lh1U5$=l!)MYwh%w3w^Nn0r`45Ah$+hb2k z2mBJ0R1B?%>q|;zyjR(kFqe1u-eyN%&25|0cm3$kc;WFZn1-{{>JUT93B`{*REfu zH`x6M{{7O@(x*=sP}Rco1y%zk524RT8<&LQ=qdwk!VXqR5`8d&N8dKR3U2IiF0FU5 zzQhdiZh18UmwkznHS_t9$cH~`yn^$%I~R;RPY_%))kR&lR#=tdKWgNDN=Wb}Spr9p zUF{PyaD&sQ^#F`N$Suf*dzr1C3~=q<1yYpcUo(p1#&1y*QDdwb+ik!~l=v0EY%1o(gz0z0aLv?JfH~?5fhv6z77=I>(I|2MS&O-4)HpG%%o5)-Bk>3a{G%NHk@5E zpFVvW8M)^_BHgc$`(KgXcI$`IUj7u6_o*r4Xub<2@4-FRS)FPXicCp3I1HNKUV*@z z*E8+?t#*+3^6cjO+O^$WAeQ$;%4%UiLcJ&}Yt2AxI}FU3SP0J>K0h25OPWQIUAfpEel@SGw3J{W#unwrhn`B&@v!&A?&iniyR5J zC~^Sn+9>Kkw}TRujeBmzsSeISBw%W_x~@MPpk4z1;n=q2Jrwu*YU_^;aER?4zldEv zFz`l$(}0>qP%szhTx_hTJS1$c$;v`Lg`m7(XQ`IKWrZ|S9&d7XR&P8+h8eW~FrI|m zTnEYelTR7`%-tr4DH`DZNg8N;93bKv z_<3l;ZEY$-Jv}{j@}V-!*1fFZ^(-N>h5a8I0uWmE(PEggY`UMxM7IA8z&egJYvX=z zZB5oH6yoIMglG$Rtaqu$It`)^f&jhd+G#ouL2X=qDxf&|kJIWXC!7!hI^JObhe=)x zO|2luPStJ7CuEwbZe$xS7e6s!Sg5tXP)-afP6+=%78FGKa5)xYtNVQ2ncTvfoS}42 zq_PTX?kS$7h{~RNpF})N`qJUi@~-7V9Z#ca*XK#tq(r{M;Gq$elb}vIPQ-w77$z4F zU}7I6Or%%AT9*m%ZUF%0cLPQF^uAIMQv#v>oSEs+@9yP={i_F;a})V`X54aic6M?S zrZ+b^AR=eHzEo6j06hU|6`%^U*FAlGDk`c=YaMq%ayvP;)I>I3HnZ}lVzf<(z2H;4 zq`ac)`hg)LtbPoN0%nG1Y1;i^DIsX!8jx?glP++A2rLo2n(AuE96+~r9P~aeqMGBn zy9K^yf1ZsA}!Aepg- z$lF?4^88MK*+9hrUHbXyYehRt*VI4d<*6qs3!Nac)he?YGEKi_E!6v%h6g-Qh)oDy z6G8)6fd3)^(Pp-g_=E%oQO6g9LjC-Ij+L2wFS%*t~UX=z_MmVB%6r)WBwjZv3NcxSIVI}!NiSJ~Q6 z_--kSZQOQn*o3JMU4eea2U`Me4ZvtUy|`c5O#<5h7T)=2GLARnSGOYqi^#sHykZ3Q zzg>MQ@cZ}g%q%QN@;SJhz4fBDb{$;qPUPVa6<1=X+eP~S>%3y@d{NrB{$5Ru=I47? zMmmatNwC`zMD0U!QPHIrAH~IG9rJRYeEA+G_M_-!mo@u}be6fL#6cH_oKqvqc~r+*JBs%fq&7jopsI zcf5&#*!d$-N_aHq879e*Ut;*b3OV@9PlUM-Q2L=Xj*l2n{YQm_q$^+yZwhyA_rI>? z-%}piJdC*ho~yl#$@vcPzpU*6N{wM60tvUq1fJ`tBuK+3 zncTWx?ti}K?)$r|cVQ&on!iaVXO6ie$?dmWcdGUL?QpnUElwY1mPSEbfjG+t=sByy&1-LVWFCt12kLbn{X9v7r>nmJE0zIER` z6d!lEHZ!c)*<*VyCu*E2`PgjQGan(&F+Eq=w%OS{%_B2JujV^L8tmBrFUG7#%v9(Xr5*|labzq9H(ilWKyE)Y@yD_$paaiCAQD47G69=TBir*{~+W17zfJBU$gDh z%$;OWxIb|#BO0tMqfk#r&mD!Uw7%-d`csrg<5<WQTlWvI8li2Uj6FksJ0Y5v z05Ze|&`>Vsbldw~?r4G;kGD}WLL%q7FbgiO{RJu7=?@w!YL92LdMRFp{ZKxkYgTz zUiAZ8fLVfA>^!h-Rq1)>K|Dlpd;~;Q6Q2f=Pt)b7MtC1q6(`3k*Q;1<1E^#%TR)f` zUaPHer@(6Utla}OWNS=Qml6_! zD73uwR~0`g9R>1bC{LfkPP*2n5#LH9(hjsr?zP;90V2pBKnhreX3v4E7W*S}_Z%Q2 zr6W4?7)RyuSStX9N|%YrE*rev{6eks3j<6GA?-20 z%k087k8lCxQEU~w?_*@sjUvc8Rq*XyJVw7m06C*C%CqQHzvBuPVv+K=^`ne4^Ca#p4=M4g4lrj!E zq7<-s@t5<`K1!wY>0whq+(&?V?M0VSyMafq0=WiVg~yW{q^) ztX;sxzFF(#Mc=Ib=*=3xz}A-`8dfk|w;Nv^S{P)Blmd?kZs`q+&R?W%>0aNa^*q|Q zX?>ga{k=skkPvo@ii-X%>b^}ou}u?~c*j#0sZZ_1dEE(Y_ZJEx#8(k-fXB{D$`K>R;;RhjeE{003$Z(`o!-U;0o=e_sO{oh|^_MClYuQO|}v(}#P`__)PFf(Fj5o7@X0PIj>h!u7I z1_022nP{nR7PIAn)ajg`9@LtNiD_cmd

I(t<*Ctpi`J<(Ru&oEMEHKe=|##U*~E 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 literal 0 HcmV?d00001 diff --git a/doc/org.eclipse.cdt.doc.isv/guide/dsf/intro/synchronization_2.dia b/doc/org.eclipse.cdt.doc.isv/guide/dsf/intro/synchronization_2.dia new file mode 100644 index 0000000000000000000000000000000000000000..8a725e36e02f3d70927cd23d55ecac769299f4ac GIT binary patch literal 1501 zcmV<31tR(%iwFP!000001MOSeZrer>efL)o@~gAr-pJiJc915$JQQt#B+tT%TuWP1 zq(D-Z)rWq2XGx{jjk=JcP^T1N113guc7`)&4`=Cj@1G};^Q6)}`C__dQsKw`Ua?tPWndJK z?yovBoU3opKQEwmCOpQvoXsJ%gO0*!^^@&mxW6& z3um&yG)ePRnS2{^m?V)_afzCzGhH7i3seLpwlAy(Q9PJDPY$gAK}Fdy0hE{j?Y2`p zca)lNf8(xMRCt-2Fdq+|TS`~yebJKlCzF|Bq<5{}#QE9WFV5qB^X?Sv{qpsO)lhn? z+#W)qx#p*D52Kk0b#|c4)@>?0jhANqLs{RnJ2o-prH#$HfQZyWr%U%gylm6X@&+#% zXC({C@J}7&%kVy$EJ&O;&aX-E*n80&pg2r;*ZbXFPtImI;0kzeD?8KVrGz;02_`o_ zl7v#Z8TdABRKW~~n`>f?<;2Ok%JM~|Hvx1!n=Eh47NPCj z+D^(}WTu00lA6DgI9Ji$;5M|z$uK}?xe3kyQeG^Hvx-SS0~v)X4S`HQq`?j@#f`a? zA(!7^im(v8O(vzlnLuYQ;Xb=11aV@Slp~-VS`Rl!;&`Cru!yEcj8%pb`Lu2>f?4{c z2cgLz_CQy&lRymO$F8856GnMmJP3cF(lnV@_ZuM%T@NB1kM>h-)72j)bAE|#B8|Jr zL)7E=29yG29%)yZ2=4|9x^r&F%HWjtOGwBn; zT}CMONY_-YH`UKNnP~V{0A2NU`sPzIkD~ zN?Btnm6m5bBwA+DB@FR}1l?~1wnyPPfcP%1$)mZ=$bnJehD}v-6lW`Ib{oeqKR)YV zmP03g8AG*(6=yPg2ANeQ1qHhc*IsuX)Wk#!Se}Zro>R0{v4@sl{Y6Jl+Lq#KKb^jU zEzaJ_rDB6iSu@b}l03dF>tLfrZqS4wq!8kCB1W>-gz%{IsJcJAQhF{Ny#} zC#b(0j1g;@p9&ZkNy|@|At{+fm9K)H{z#J?!qLtrl`E&?r`GvtXH9ne^q=FW-*i4t z(np}D&+vSqMtaA*%s<0CS`^1FKBcWv6yUfP#}l-eM!SraWhfgBmJUzLng@8yw2UB3 zr62;6a*Ty>tJ5-$eFh2SL^6zhzdI%Gre$ZCmR)k&?>73@H+uVO5R+CIdVG~+zlXgZ zUv97eZfD5H2n=zCSMiv4g9)Of-De=c!4`)U$K4<_m=wkFoZzzM7x9_~*a?hIU~~eb z6Bw^eV0Z}lLE3lp2;-f==mbU$fg#Uu21Gq>RW9>s%cnpTmq3Ja`>sFdc80+ap)Joa z&Jbd!F*=RWX^c)|yfTeJfb*ywVo*e7H^lgVYmD;m;$IK%uh#xI@&4)`P;Ajozd!&0 DR-NLU literal 0 HcmV?d00001 diff --git a/doc/org.eclipse.cdt.doc.isv/guide/dsf/intro/synchronization_2.png b/doc/org.eclipse.cdt.doc.isv/guide/dsf/intro/synchronization_2.png new file mode 100644 index 0000000000000000000000000000000000000000..63124ecdf1bbaf7cb07030244c378ef5487d7c9b GIT binary patch literal 6076 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 literal 0 HcmV?d00001 diff --git a/doc/org.eclipse.cdt.doc.isv/guide/dsf/intro/timers_dm.png b/doc/org.eclipse.cdt.doc.isv/guide/dsf/intro/timers_dm.png new file mode 100644 index 0000000000000000000000000000000000000000..e436d3a3b0ec246f16258ca969afc40f6ff8fee7 GIT binary patch literal 16088 zcmbVz2RN1g`~PVf*_4scDWS4uuN*>%hO#3>*?W(SLYdh+`AD*py(20s$=+n|J>!2r zPTxL#Kfmv9T>q=OT$j#y&U4<+`@Zkjdi&i_lp#8P>NpC8BDy9kbqj?$Gz0%|@o?Zb zfwpF<@B>FzUPcPFkNkOAo*D|j!L_+|{VHzHAsVVf6f=$YnNX-RsB2OZ$_{aJ{qD-Q z4HLu{?J2#(mU)h_={(hacg~-UE$97pHufCmF8a4T(FsolxJ~V;RYu~pa7*KlB&cb1 z3Z0ZzOwz*r8W?8B#C|4ozLlHBvX+mnG46elYIIlIjkm4O3b7rQFY0t+Zf-94 zv%ajHoM*L86~q3fjK049P_yuYl%(X5?VX*ZTWJ=)`;vpR`FE4+tx{;9)RZY#)dj7f9)e<<5$0jCt>Zp0B2?_`HzEiD@eT!s{E6C{W>9N>cysvL) zsMlX&i>#f3g4E5MWbh&LMWe)w%*>-p^$aq0c6{SavA8L>{OakQ32A6(ibey4Ee2gT zlHR<*TbXE)F)?AKcUhG9F)?u)u0G(pp;flGJ>xLq$GixOHIQ}snC<@0jdP-+bVm87 zNJLjj&z?OS924{G#S3!%2M+|b4J|FX_VyO`>Foy`ndu#d4oxhuva=Ik3_l(uw#@?T z6C4&Mg}w79xbzMvZTFwNb_)XmU0te$Y$l%vrCqXFDG34@!~^^KG+Dysv|Wi`ke+|N z-BVrX?T)r~P(lJdt7^`bNfz(mGojJZ_?dTS zEJ@C#Ry*nIAC*ofYjE=5J-ksdfJJJmgJ<{3J^Q^2)#Kz99 zBp*I}%}F%l?xinZzGx;y$}$#~UC$>NYmDakYLqW4EBjda;z#klQSp%~k0WAgRIWqK zO_|e|NT+Os;7i7dI9f@I7g`KsST&2j%A^_i44m^m8eu)rJnTgxR`rB{s;@_YsAFkq z=?2RQ-+%yH#{{nNvi|AZ8+S8Q52f6~fBw-kH)T(L?>RGy(70Pr5hU?n-3`5z14Yn zZEcMejrN%9$)Aa6aF{mQwnlXkaFkVzjE<^VS#j?S?*G(YA9>Ef9j#FJA~aM@Nh!#> zd!{oxZ+hA&A}p*H*>A7grn)vai{!OA%2&xl8^#pQhB!3xm=B1ox2tIPb1x`#9D01= z#BsaPIwHfJ09yViOp?z2hWq}+vJf*fb9agDjH<5g+2=t)hPJl0ah)`8i@vM8q-J0+ zv@4C*s&tEAY00=(9%I^H5?;PJ@;u|!s}CurPIIc6cMDv$tSI3rojrH1do)PASz1O$ zE26x3-f+31gr-~ukBp=;!EAMRYbB@Kr0d-Sg1cFoeyy!Hywlm|Yi;&=x=!VbE=-QKPvB`s|O z`@OQs0uy*|soh*m{pmst!#5+hv^`$Ee;)>0EAr6CSZGR-`~wT_`_2;=aA>SE<2MGJ zgPYUwS9V#eeJyTM030zvhW`E)0Fh|&CRgt)bN?` z4D$*K_{J>+x?rPsb#+B`ZUm=J7znHKAdk{}eQP3-C$GD)IZ=F}qi!l{?R#-Bta{|f z35D!Vy|wA~9QDj1x1T~tPds_)ZsVJv2MrO!ldZ{7QBhS?+AbdOkF2}9+ge@5(NXZ8 z>)M@Nxce0m4U($77P05sSNUHpuI(MXjja=!|^)w z;K2j-!52FI!_kHb)${$O{SlQ;YZw2zbpig0{an2b)z(ABQSFC3R!Z~1y!9C_WAg?j z_uVG`!5p}OkbbBflYuhF*@~TcJyTQDd!4p(7m(axsEs7pQ~4&V?Ch= zSfUu|=yxujeEaroaA;_avj7Gz0}GX(pHHuZD~pG=Ztd?6c=qi0X;G)|nE~t}*FF(` zJQw1 zHa0er3koQY9618G0}~uIot}|Fc<0WY%Qq-64il#Q4g!(HmroIe$(^^dwss_u@r{~( zZs0|Mad}|msRrZx`0?YKJ(E$qXr3$eF#jq>=8QAovW5BiNkv7}I~xld*RGKFz|BKj zpPZVi_B=-59f-lh=Z=n!hS5ad!e9L;hn|MUqxGRpaTp!ih3vK~%mRtbyXS<2)DPz3 z=$uV*9FB4MJ(BeHXYbx|57dyIeZBo{%I3z!Z~KIZ0kQH}s-#+3e9-n^l9Fbou=wF}Pu{-0_~XZq zMfyO}gS~Xc)HJgmAMiFe)j*cvb$IyEhlC8S<1K{`4BWG^x0g(Ay^?aP7=cCQwpTuB z`lVG6;v6yIqy5s*5E2%~h(IIXq4%_9m6Z&ztEs7}7j5auJz=LnGkEj%?JJKM(htJs zrPYE>IGqnK!?XU>)HEh~8V$<@jqHPN?#ryKK&EIii~}!kHLI{N?XhFW*iGTF2h+UN z14ysEw9b21(aRQam)%^?lYHY&T^MU(1VUOcJ+wO{EApY#5bzajOK?*=?*U)zu!X?O zTWO?pbaN|fuB)vws)c6pEuE4Tww+q`ek1P-8CNZOh{U+L4=1vW9smrfq+ zxO!%Cis#9j>~8pKD>K`tiE+!Rc72IWNzwTQ1-h`vZ?dxLZYzn7!T!tXm|0_CW4o%W z`%3AslU~01&x+<7@AN;D$B8=M{Yr@G=v2VBZD$LYyQ<+LMmcHNa<00i_lXD=e)$Fk zO^9~Q{gsj;k#u9zwLD2G=?0#dD#0D?Jj?Z2H9`^+Ju9nk*)w-oPORQL!}#gW-Mg^! z58u3b6CPqkN&DBYsAz?!5fPNw5&|^q*>6_=>gsds&bXC!0v{jW*Wcg9coa*aY732w zjLw9}e*OOaM+e+|Rz`+5Y;ouz3&VI&so`N^SC~Q_MOwws-i=pXTtrSBKL(q>zej*B z&raZUPVXG>fYmO1v^Dzmw%qmWPcTVWq@=tLDpoqXQ!=~L*<|$ngZ{og!jxMyC-QEd zC;!Z5etT}uAg}vOWJCN$Tlbt@;e=-ZlxcZ6-QD!|Y@X_gX*=G9M~>(x+dCfK?B;pZ zfBiyu+Dv67A%g1Gn@R@RNh4F!tM~5F0|x4+ReOB6>f5((E)~S)Er)a}f6ke!K~>8u zDCnD4Y%$Hu&l>4HI1Qxm=Q^7(%;HZctu&ZUionST4h2dJ(u;g=kz7Vh$jmy4xxtN;eg`S1a= z9>3t?!+ZI%g&D=@PBlZKptnPw{ldN1?MB_zUbwK%rfM3jl(XG=%#2DmtPqSxLXw=8 zh9Apk>e+2lSI^+?54~m5MrgvSy}iAwz?7CyR;vKkA8|+o1A0; zh-loI#f36)ap@a<_xbbZ*`9o3psrckmCZk_iW{tmeQNZc0*a)hps1;L@W^?tgs}(!HW2@jttk*K|xrVb5(&A)#rJQcY;76MRnMq}LVr|U> ztWgdG2cw*d@Y-4_fz!k=g>-Ce!mMe_8StV7&1u==0@XIw*I$*C^o(+`EoTC}1f(zw z9JDLnn2M6)UgOjRTrtOCNq54Ph5WYb)SA=x@88b|3aU-AxGmK%?2*FMLtq;~O~Jy} z9gpDXOK`8(uLm>~o{1}(l_43^>llbg+}i|#qL6tv4;CgjBZGClRffS)tK|etBgI6q zxw46vP!5|$p`5LmsI^Rb_oa_i882Tx{#ak1hagi{A)%PtvDAYkdz+2u+F0?ur63c4 zkr{=BotXh`W)=a`M}YtL_4O71>?YNT@)^}>ODrw!?;ZW?FUHl?Rf~HqVemXl`&w2f zygZ_&jRCFYsItCEPp25m4>DI-;TPX)wy*GlDWh3xN0eQ;Cxj>lil(b>XY|Jd>4cxg z3)`Rl*Eop7nQ3fP&^IvHW;~c2=VSt_^tp>&PhL6>&^zH}m#?2n z<->exbnLYlzN`ue=6+|EmTIXTTLg!8v-58hV&@K}kZYpu(4zIn%S?+b zVs!WpMgv}KQyq4isz5*aZp8a4Ir+%}hGObTuZDxy`n+_A7N$`dNpv*vdQ`6Je{rG`}I(AG+v%`Q;E50LVvkr2HdUp`<=q4PoEx0B%m_^cK-DF^Dy?=dR0H}=}`}&0D)4Uy`;1hCb37d zOi)Swv01Je_@AV6pqMUOF`hqy{1~E$wqqmGJ1iyx;r>JT-L5 zMjE|OZuKFIbd6U7cmZE*lev3elmZj0+Pm6`8T25qj2e*hm~03!eXun<1_y)S^ZI}$ zx$ScT(eTmkq%s0%=pA_Gp=(oEunJD{hNtNO%C6tX2mw zm!^D{pTCp&kokEwHllQu?DZKT$tHx{R=1F_E4wz;0js*7t9nC4Wuo(%0lfLI4bLEu zUcLDa;F+_Xm#u*T6E_c!D>(uoJ44RN=x|5p+^@m;_4J6S6!WSHl+QW90y8 zs<^s}IypJz=u{s*c$orRVQ@Ky)0b5j@o)aM0EXqSuj>mj@!7M;JU76(qD2C1PXwNAC=sOHWFcTyTrt%m&qxl_yliVcws|MbO&s_&t9Hd{`#wut zx25OWLtVLgVq31HBj&ukyuq@JAn8G$xvc8kdzplLKQ^25V zQsg6ZjM^_2W|ujt4}NE80pW`iCRyA@!d~#+as$WJm3(oGS^W%JqOSUH5l549;utC- zB4T{S*1?$=wX@aY-dtB--<=@pta|q@WiQBUr8ZOK&NG>Xz|mIX8nQsMBO)dS)N!q& zwY7S0O?$sRC9(6KbAVQf&1bzp9|pH5ps9ijqR=K!G<^9IGbdl3vb*bo^BCT?JixDV z(EB1HxSwFESt*}ucWl6R;6@=@Oxe0~dXK%pY5K@$ad)x2-Z{WDFf5yj*#rfnwMy** zxazvrW;&xa*(=AkUjw4i;o{;lF){J~SX-L|a3`qY=XPhMfqD5_hp9FP6*4>Z3!r0b z6q-Fisp{z^XRinx`=TQ%B=iNqBw!{&6fFb8Mo~tTSlDXB(;)ts z^%Yf9?-W!N7d(0LgbUTIp{g3yNqDxNq1V8Xn1%qVU~@FsczH?B(W-3N1y|w^z?xsj`gL8va>hO z8N!YLodyAxMMVOdB{ulC(!QI%=tUe3*oGrA;@e~l92bT_#%?s=@s~cwu3f=ubD~mC zLBWQ;hlY-BtS=%s_%S?{iL5ygatH0S{JF|jzsZ9HX*0kxE<`rJI@RVd7Ot`gvTyTR z3K==)_^#*-s8KIdQ*j$2IY5VeIVvO^Cl+R)1d@tbzt9OPs!@@%V+4TJR^VFwKeSoI{P?VkZURhKdY&I-z`e}m{c}Iqt7t~VsXoec5)~MN# zGf$PZE6=;dWp|d`ty?+X{4jBN2z#BB1hsHBAv$BX0 z0TEF2B5dJN5T3{0S5#Dpi7bCQ*Ss?YLjB@;ulXprN~_zVmY7=U-PJVy>UJVL4$f+Ap^QD z7u!as0w&O})3YnSJbU)c;5!oz7KC|t94gSOC$^o1@g%-ML>+|u#U*2-N<>M-uLgLj}s8Mh6Iq_`~%`*jB?yY1NaTvrSXQFd!G_O z&nzsY0u=rA;bnHiuCv}Gx^Fqk?;$!P`T)CvH!^Bk^Q7%)-rk{wjEjkKX$?Nvtg*Upm?2R+Ez=V8;>xU0(h=1 z_oVgV>W+|~JHDDWPk3Y`b63e!`4w3UV^habXwz9V(@YH_@7Oq)vKsZ*!Ugns_|?b}G`W5)Nu zgGx$DbP9X>o7ts6eLNp77ZMyiw4_c7;t&RJ*wgMi8MpJl4-A#NcR!dFCYP1PVLdEp z{BT9i%a<8#!XDR9*KoLR$tUTNo>l+bSTY{9Y3v!cs4^=&$HmpE$L!tsBx<^0kfO2n zFEB*aGbtC!H|QtiYsoQ1!~c>E@V%;sW<(f|!YzU|a6e!D(aQ>aJwkXf3K=RMZKP)v z2MoNdw-YcBY>S)c22*0B&KrdchUw<|(H0FKuFc7E!>Cxg4OQfCQJm%%&vr>zr zLaC~&#|(B*y?q5)XONc(0&HqjgJcf1bW$;n{xnIPHKG!a-0Lnfl4b6W<>Y92eOKaltOY> zHe2?0TQmyTpm*aKVGOE}+Uy?!%?EMTtEy0m#dwF#WNlx(bV(AJzv&&&viT?ahd}z2 zOCc{VF2?eQe9KX3RaVOH?d@nbw(AHFIb${3#WmYkOaX=l3k!?IBj8u@2evHjqIUW) z=4?pcGGF_=IW$A7;yy?5F<8P+4Gog|`i%6BKghsH{kG7(D*;gQ$0stNZMXpCuvj!e z+AA=SxNt%B$Z6ae@MB;=>Fw|R1dPaE7qw!SUcUzreIZU%_-E9dlG`$cG8E6S#ZbNY z9@pMh;(j;wvj4P<589%R=x^TXTy%xUwL$%C$jjVZGHB(HVECY6Uj78!h_k%BCjp{$ zmD*=pcY~cZ0)D&?xWXV@;rP@He`^7M1aabvGv&{QTuE;q0c*u(KaIt!+*oVV;)us z2(0w&+Z24JJx8He1&QxbL&oCkluh&4+w}BY(_TIVH>BUq{P2{BR&zT93m6^EjGpg- z5+$vzod}aIa|c+(5P#(s5xw&)*I@aLLs0WJLUdtr55CgBIOC01k0_<_)e3lvH8hPP z<-1d$-hqLN$V*zKb*P-BCCi`&7?6301XV{}3bq!Q!|V-$r-_4TpaUXe6D=*R9s(A}A-aSG+Ld4C2LWtim>CrEoa$8MixDSR?-4a3FvxhvmYB>aSl(L6{2!{Awv?eOp_b0aT{hvP8u+ZN5Rl_wtA&H3# z&nG>9L;m{@9|FOFVxnMRAbEoEK(ZBx4+R$B;vy#?bVm{@R`@E5yDKf{E?zv&QMt>F z_=bw&ot>RNGW3qMj^h2a=4BpTi~*KBpmS67uB$ge zK)Y{cMJ^LWPt?O>@Oy+nMh9(k0wWu|^oJWW#}`HV0T;{-~4_c3Up&8vjb0Bs&Jg^MEC%~m=EBq9eprV7AgFb)$~e(|L)+} zQ43Csk+HF8B5^Pv7oFzLJgg>(9xOJS`JQ$g>FqmCl764{$%Q<1)_7?_nC6UDfG2L5 z&>u*O*&IUPmQMd~D=|`DU|Z7GHeb6_W>@LccFcwU1kZH({}35=up$H4EWGY}F4fo} zOPxh1jYpRHKkEykYUNJ(V5)eZhq>JGTU3wQNy2%MJ^qfwVD$`8*g(Vv=jcG7BO)TgX1<0+oy~xR#a{)TiqEhap%8i{SG>@(OGthqEEF-ho%}Pz#}^@E+Jm;M8$a z6PEcnxUkTvJd~9D&5p;FCZ}-R77#uD`#3PU%8L@7CtxaE$_cWFDw89o^ki%RDV2 zD}>Me{O-d{i;LJtga{zSJK6i&91|<>J60y9r=mNvdF+BP|7yu8C}>$M9=OB8PbN@)2QT{BXDJX>Gs-hcoT<3at zDJdz(U3PyixF^zyxkR}xR^vjVp?}Pf__RP3@(=800k%r_eYbU(pYISgd4+(A-DaIf zR7P3(gfm2cy7>oPc=D)}e1pKEHQZ(*JbziWg|1!2V#vBdh?UhJQ4aj1J^Nx>j>M;>Hyxe zKrp>}$}OO2#{~ri^9HDtK4pRw@T)~BqR@GW*`)*HYO|WeZOFxJ_`{Pf$VtG+9_QO1 zg{4L!P2M0&C^k69%z-mLKWkVLeo18n+%-v#C>a$6% zIg9B2!pM6t-~H0g@o0_``uMrh5bSZ2Pmc(+~d+OO+1vryFN_+Jn$+NZ$f8YesnYPf2{pBGO*R)Ycd8I@L|w_e zOAsd=2MEP-yphIbqjZpHv%g_n(Z?GEj-VmKO_MP&v^eMJoC%kkk`(ra4m1oHp$Ih9seMsAK=D2}#^js; zp%C@{%^MadR_%VHhYuesFiC>0gcTP+Rj4*A)N6fp6^r-(U9$zOMLMGKf2PL>^6(1^ z@&UKp#3TdunjX@OA*ABx=SMFL7y)JhG1TZmkf17Uv_I)t zcC7jWDXz)+`KKTa$)${lp20W$Z?q<}#s5ZYdWJ|%Ww9%N8=0Ee`}sQ}{O|=0+FRu| zMdQ1?yqh;}3?Z?P=Eg=T1B2H}ACT;l5CpgZ9P*iT{emI|!)NdN=l0ru?dW(4VEaCV zUsWqyihp@ikXQf)4sizGz(7hN#VgUn{Xg@3+cX5;0P68Ee(Do?oB1;xczhj zO-1~l1tyCJelS!EJ{?-;`cLs^tq{VrfYMFUYy6~T-+$ib=!d+Hj=M;r9dZH=(`l)i zh+pVbPM?yJf@C;;rMQIRi6M#vIK+l4NW)=oYa-X6=~R;5Q8wrwU^m^Jq^`w1a4>b~ z7#MeT->p(sd3_^HYW}aaSScaRjfP%n`B0YI>3^Iu6 z8h^l`1Kajb=LB}=xdZj-F$DXN-G<zUF>94aRrh@_tC0j+UAl zerbOoxNO+R^as+}y#Q7=NYPkns2#KeAOul}qwd`oedQabtSpflxy z{E{?EN)L4h22)sg_(5pz@9I17q_DA-a05?V-!!f2{T1>3(d9C!vt%q}=)4J2K7rI~ zA#9l4s`!^o_NPXE_$A0*(BtFd;{lG~fqDrl@tAb}MS3jVUQulU_Jb9|nTJ}~uhw4s zhyE@1snlxhxRbMUuIrB7?v#@I2NiACG0S3cKq5DX=g#Z19_>cI5?p@-O3wd)-Z>m1LthQ412|dnwY?qgFL7@* z6-iY<1SID{1Et7DpEdiORq<)ic$(`G840K)7}Ys&WCN^Zm))iMhhP^grdqS7woM^| zyPmG@;r%6seKJxCMr&(p1~VDgBrYiMdVLQfO6 znIuKlTb$#Wm;In?dDOXo`n7+e;sHMJ@6Eg`Vigw3e{|A!+Q*b&Cd&z}s29OQ@rXUYnLt4HrN ziRP?}D+HYfIOr$SZsr7s!{mNPp^H>la?l7W%cgsO^mvsA@kkrdvnWuZ||gwG{2%dbqcyQ zJ}3m-?_mdY$y;Y7O0ql_Tl9F zv2k%yAXXq+N3qEMk5DB9Dq5F*`eK}2{uEy4vfw;e^Wh1BW5ZJE;7?)*OJP9410@Lr zWXG9UZzd#msAVhvFV{N~%c}Xz`tYFVmXruV0uP^#nenQW)KI9Bn5FZ*i{V0*H>;?v z#oSkBCt*Aa?u)t>M~k^ZdVKPIp0^6ftu;VhLgM2CJUtIbLe~N_{B^w_jrZa&wGg~} zldc>IY~mH6-)4(gnb0~WPU4dSNE6dDGp%iHUdIS1u`q4ir%!P{>2tq-{~ntGRe?||Y%WSRb;bie9U_+k2TiW%>;Hu?O|VRgwt)x{ z`$=K=8T!F-IJ@f3wGoOl17h) zVf%9A1TsCqBZagYbRfJiRslqm!^oTwiFG3Rh{Q~=T^sHOxRt0K=94B63}|afH&`AH zEnPVX8kUL_Ldp_W8Db}`4E)}GPg6I(o&b^M?}q&!;gUgfUUgerThiThbYufI01eT6 zaCjiy+G?L^SoQF-u8ocIB(+4t!^<$s7GDBW1s78W$T;|jqsZ{Tm#cdWX(L#;4e2YH z`V7P2;)w(bp~L7yExk02Fl&FOQnKn5frA6j{=*A6aWiV$^?IRU3q3eA!+y*Oq%3z9 zkFRc!EGfb!O>T8C3C)S+xHKwp{dyA{e-nQ6rMKB%fttf3LmYX1%d(`=;^~TdOUh? zoRM_!?H|(491gQS&O?3y2!qGO#v*z;#8bOXiAg~7`InzYmYbU^Mj(d?J&>!aP56=_ z`3`6B5CHFu_h%)z#QS)kfeq;FEDV-6(RXjs0moRP=0`b-N=iQJnNKy@C$RaZKLnS9 z?3!y!%pc+V|LT7|5h;t$4ht>@Fp3pDk6Bt;{>vaiT&-Lrf#ABcp7j3x2_Is*5ngKa zQ{ZtBs%g`gbxj5?fE26;(kWv78O{9cruot>K+8qdK&|8-&m zLe)>fa>j=B3m~j-@;lP_zcT^pzjN{@&9(K$fa!yy{PE*Qn5UJ$cJx1m%Fm6B-gnd2 z94hetU9LoE8%*N=?x@7H-Dh^pCTM&Ah&>2c&w? zTtlD{g8VQVZ$D7IxhVh#2O&1L7+JY{3|tIg@?Jn$!I^|(wggB(7mjtoVa+3Mq?cox zkQ2B77U1w@07UUX1Uv&u+txNr8yGQ`^L>I4p%!*mNpxAp7u#Kwgd0E$37rC(1cxVz zX0l32$;c#-Bd0398~MOeAdC&C4p1awn=fa4NMb#}Rpvy^!nsVasUYA%jau(EOw6sE zQ#5?^=n?!5j*`-#)_iCq1dObJOQd1X4|gFam*Bu1E(yIp|ELW*=mNN*$Pv+N*AAh;q&@+fIs{7( zqkznV#&Q@1V$REUqj)Mqkagj8&DR9s(66nvw(boqqc=2wsx^sqa)mdd9>0HoIkGb{ zJp34(V=Y5{Qr3p@hSwu!g^_SagQ84cHTDelVBWtSzD_=Io$FMA9)G>R} SMIR2Pqpn?5l*+>Bc>X`;+f4`n literal 0 HcmV?d00001 diff --git a/doc/org.eclipse.cdt.doc.isv/guide/dsf/intro/timers_view_model_1.png b/doc/org.eclipse.cdt.doc.isv/guide/dsf/intro/timers_view_model_1.png new file mode 100644 index 0000000000000000000000000000000000000000..e7b5b1bda47fbbf143fb0b2a8711d8bdc209a62a GIT binary patch literal 14352 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 R$mM!aG7^g7)uKkh{|yanR$c%A literal 0 HcmV?d00001 diff --git a/doc/org.eclipse.cdt.doc.isv/guide/dsf/intro/timers_view_model_2.png b/doc/org.eclipse.cdt.doc.isv/guide/dsf/intro/timers_view_model_2.png new file mode 100644 index 0000000000000000000000000000000000000000..52efeaf354cce424871746d8c24566fc9fd372c6 GIT binary patch literal 15754 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 MRFtR?GyL{H08_ZN6aWAK literal 0 HcmV?d00001 diff --git a/doc/org.eclipse.cdt.doc.isv/guide/dsf/intro/timers_vm.dia b/doc/org.eclipse.cdt.doc.isv/guide/dsf/intro/timers_vm.dia new file mode 100644 index 0000000000000000000000000000000000000000..3234da4bd68294f86c27660c247e3287dfdf37bc GIT binary patch literal 2148 zcmV-q2%GmGiwFP!000021MOW~kE1vie(zrq(XT1T7Yt@HRimDj_9FG{O1nM#FfWl4 zT!d``5jb_3hyCqqL(-`vkP9xSt7eTdZ`Jw85y?78ByC_$F4 zKqW^11tRUu+>vQX~T*@+?uA~^`d?9YVDW82!%3_trUQ=paZdPPP zIe6gNt@rW1KD^Pon$b=@N9tbkL`+M;zjjv*)e%K~s$Pn6zuLvJs8Ur#J}(c7bkw8& zzbLaVRjERGa`*9*|FOBH^@(j=Z8zEpA{V?&()YN5Nr@vX-rIwqNX?)ypcS>~B@|ebQK6yIUT@YZ}zsDMYXL|q-X_Zbh(bk4Em&Q+g zQ~mSnRKNd>Y7XCCZa5~I+B!udW`YWOxkx0dG#1r~!M0nbqo(<~*yvQR@0UBbW13TY zl3hb&{8^Oi>VMvf^3;R4Y5>oZOnigT2msQt zj{qAY40^(eOe`j|qRbEdgjZ`)jZu@yVY4p7klLUQkfu*B(1+O%eq?mEYoDPXFT;P$X-+lv1B z)vjDkQ5)LosHHV6=m&A1X4x4KCdMqqlRPz^_R4h8LLJ}jl-mmhzm#c`DC7P2FMls$ z(GeCN@uIqVsmNs;tUf=u=ZiFZzV$wpDbKt?C7-q4E9Pjf{j10xgiL4rrCW0OEgTH8 zR*q+I_wda?cR8)iP$@u^)N})x8P>j_bd1B@q232bMQ};J5baM?4 zWRYB!&lBw%7WuxVY({qLSiS@#E^H%+r&PWghPh^AQ_c3ZOG(u~i?XdSG{hLGFcm4d z5Crd6wGBJ$JmL1yj&S= zl#im6^GV%|%Ny5Sjsc2~7Tl1+*#-MMM7n`RneH0%F+<+_4j%cg=d?Rt$)YS)a#yH& ztqpb3MLgkUSv+>P8Dqn$Cz;5T<7;+(*95m1Czl1!g_sq2E^6Yb4*ZPGH-ot%i?uY% zqMm~rY`?wrf`g&ZaxGe4OLnhChs*VQH}slxMosB#J2B2IvYA4G4N6GIAqXN$^$Z*f z?9y3lJB!9@ zj1Vv~jsR)g8bbS8_%%b}Kh4uDzHSU$@x1!ZAutX6`UpefLxK^p9RjzE!9POy3$GXc zKGe6=&Hm&SQm9UoQE2W}X(xeN^{6xgWa9t?jqegb$3%{ax(1-*p*P1v$JdvbaVlpt zM0S%xFar_QAY1`#2M5dyx z##WlhBFYv2vUAm`mq$>6}ig?MZb2LZYH<1OXu~ozrRc zn@s0K$XvA>mox-6Uo)am2qocA?_d}!(~816pOaWlfNE`AcQFR=@w}!DDV$xN~q2bqVT@(5_Bs%z)6M?~~DqjCaTqI<%RTPU?LwOuJ)<)XAL4rBJyPs`k<6@~7Tm z9w##1?MLc2y!n==b!!l!^U4Wn63cy;Snjy!_%L*g^p+XvZwsEZE;AYL*h9@5WNp5r z6V)%p#rmbVNCid;4g$vXoR!VhAhU*@vmB&fgJN|x2mu&C?2`ZnGzbYJ@8VUtamgPi z4W^|i@T(BZ39puFm{~%&PczXqH7)D>%*jJ49w&<;7TE-WWu91@vF@~e<4tauDFab< z62ib{UU#UMnKcl@FwpPChIFU`T*w%<`f_aJ=AA_X#4ZCwIPwvUi1H5@_OWAtH^~6_ z^%>wVqF4xZ)l5;qXK^oY{;9{x;8Q*O)e@W-?=nNmT!__NQ55RoOf*b@VTi_9xdR~# zwL^e#gjw`{lTVC#?;N5DfK6Y6^o~jE)RSv5%iGCwF@bpH7yTdWt2(gtE?5L;{YjsT z`Y%hDlX+35zpF5tXGa^i_p?41!zdQiLAo`NYBklreI&fzo%BjGPv+bAkPi88h}|uG zC;|b~IEvRvNXHlhrr+;;(|`5wstMeKB2jJmKbwHk{x~E0h$ut^*-r**9gHp&?7L1t aHJ|Grbh`Vn^NUY+AN~j8ns#OzasU7)-zIJV literal 0 HcmV?d00001 diff --git a/doc/org.eclipse.cdt.doc.isv/guide/dsf/intro/timers_vm.png b/doc/org.eclipse.cdt.doc.isv/guide/dsf/intro/timers_vm.png new file mode 100644 index 0000000000000000000000000000000000000000..dbcf9a677f6035ab6079c1d8e14f3f57743f62f4 GIT binary patch literal 75839 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

Z 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

;cv$<@ZCC(fe|(2_THmv;B$O z5>d^5BqicKu~5Z%AsSR=sbS`j%H(Z@*=yJPLZ>~NF3MO+3Zj9rGQ_3!r7@*679E6+ zP34MP^bOrL!7!K#q;68?sl)-{^BRx8gkU7`#6jMj&i$U>Yen)@dt`?gy5aSs zp&UB$>|As~xMAt?*W_JggJB=`a!4F%gis8MHBZmn^7o+O_$(%bl)T|aq{AE#Nt74s zvFchTiAPCNS!201fRLsi4>ewmX@I>+U_< zeBm68|75OEU~D9em$-o=_mizx)Q#=8U`;;A{DtPoXT-Dt9SiiJIwPIjV8(S6I2%wv zC|heR^70f#-k_AcDHGx+QFc?oIdo_McFegJN^l|m_$3-xkLa2z;{Bu>jg%h4v-dSH zvvN#14n?XIz9Z!GkcG)FPsuI@XbG38(an+~6>)u@EWc5iu~I$nQIV}3=#6AFE_T~U zb4qeoxMzMX(XF_5u-J-QG@Wm#@73wR^}{2p?iUqA+N6RV-Tm0=Pg-3)}y!P#;Wl=wW{tn(qr0On3O<6azIUGWPpudhqD!iE~e`RbNaiQkgfD-(*Sc^egdy&9WtFI+IBo;SE*epku zxv9!%v&dttSVJ%d#k|^VIk=G(si?g0Pm>+@d^MhEfTZler&`Xv~Wcq%`FqQ)yA zZFPoU=l(94T!&=vE!c9)vrfnfP$w|{Pg*V&nxj)k6gX=Rl336BCIxw5S}XO2be9s- z_GGfjAkx(gl<@cq@=rEeA=@OmZ@8r!1V$eUA#qoAB-DOq#U96M0nX9;KgXCuY3K^C zsl`d5gr8qXb$Q11a_-F*%TzbK?k6>-9{60-m_ah;Yh<(is>;lxpKdgOw^F|-Z3gKww>%ZLtJxJS-4$h+Xvsas4{8 z4<6HHRjV-C&2(M;n#I7mYxC6sM@}G(+bbmv`#8>dsbB0>RX`+{*K)tYe403wZF6Mj z$a(yI`+r&hSsY=V8>EbF?=au%O4IExh&$;R&&(5|UgCTXm!I1hd8{mPb>%jN)*t4{ z9d8)dw!mPp^cm>I3sTO;sY(QxX@v=|O9}m@8ay%EU#6bV_Nn$}aEICY{EPQk8KFQ; zJ{$M--@l|gL>n3d3Vpr9xym_|l#?UpAvEe+Z)*v&jUp#UQzV5bHylzC#02X+1>T)- zj?MdmphxQLwQM7qxj~mK)Q!83pIBfm;ew}oOqi8aoW`_v{_Uj}(bF<^^K*RZ%*7Wg_?Hh zy0UpFj$(CvC^<0Jrl(N@LszpVYpjZtO4RC&=P{ld30-;XQZ{^~H2OkTYbB#2SEXKbf|H?8mIjO{wq0SVGqy}_ zr^LO+Rv%hUN~B|>-=vr5^kpiqNJ?#=?5XcDmp@+bmCz0!5IZKY^RjyFpu_$jp58IM zvL;&FjXUYswr$(CZJQn2R>!t&8y(xWZGG$A`|R^~T{A1mtWhQrADxLdV#-U;wDUi{ z6Zp&cX8Ni)h^&42yqRyeyvSZ1qeoOrm221%CIf{#2bIbVMj>{O6xG~l%zvhZ*lMcD zu7V#C1>F+TIQ<#hqtZTnNr@-o==#oS_m}lQ@mqze!ie3!bMWSL`^vuM0GjogYpPMl zhe1sVe4fY#P}r{Cb6P#?S`zlPSd1#;6+`~%Nu#X9h_);wh?pva7jF9psYe1)Ouec( zHLK@kqnU{-x`1k=>nhW)eQ>bYSZO4LVi5>=3?U=&-#S)15FpY*TWY z*BOnOXpU!dVFAssawIgIk}Ne^Bja=Tv3~)jX{%Oi5KCe9R`^$sY$Z67^jH2YTnxmO za56$OIk`QySQQHC`Bmm0nf`c-t8Ljc%Re#LaMTOV00MHxB5%m?V|h$#s$pd&8v;zn zXJhieiK(9rN<8B^2O}UGV|bjQ-?*?GDp1b8z>;^AtD?Z1HEGnPnGRk%#(R;bliG+Q zhf-wbx2Q6i9I-S>{wC8!Kd8*@D;;U=QEK%DG5G!Ggw+-#%-6X>J)$KG=`w-=NwoIe zlPSiqLpHRe9-9b>o?LiyqGzxxid^IZ$ug0@%o{wWJ|=aYKLyR0i78`>kl@>g&s6N! z#|A252sR>SC=5;?&ywNk$tD)OkX^nXa(_$!b6Ed%S8Uext1HHti|ODj@aahgD+>o3 z%nZ$BS4aGiFI;kJ#4_BQxcoSJPGJIJ)Ahq5?ok0N*eh7zNHg5FrJDH=W1q_c46g2nYQ&}r)CT(=-?0Bd?t1(hu= ztQb`);32>o&;0y)5clxBVUNwrhHf>Ofw+nR1Na`&#QFCEA2@y z4jhw}5mXo)=H}6(0vhBSw!Qjr2@ny~zi#@$v2~%5B1(ant(rX7TU86&h$Xandbcm7 zj#B?+R0!dlwx910kCW^_4xL-wTgiH^YtO3^fq@8ihkf~MX4736!NDNs7Z-2aFFA+( zzx*Ve8pM^bZ{);mV&p~PW?%;*9%PX_T4rmP?e`mSUh+q&FoQi_V?()&2nl_R|=6eQhdEUFf zWp9$R)DaUigoOFKherhxKi|lhOeXA3A5<Ix*2Bp#S1$Hz{Q86vS@WeR~c<;dfMj|&OL1{uV}Y4!K}4^gOwfxZr6 zbr2XNxqRB{;*|Yf$cNkc5 z)9&-Y=hZB0s*K*sAX)0;`ny5D14j*jUJ%>={M?G`(=ar7r|kWP!J>tGGmU*i1sR%OWq9IZ7j;h3sH!m`bnvd}J1-LuFx3A3l` z1_HE>ki!a_!Ym_F@1*K|tN|x5NrsKf=nQXbKv3bDsAO=VenyI^1jSB6>Q-QOM7f@Z zw{4-#vnIq>AVvUYTp`$B`5t?^;G_lC|I!#>Nriz%qj?=bhx3Oe)h{IKh*j9r$v3e6NhgH(#`0yoC z2tKYr!>LZ?HO{jli< zs%cXR)n$!pmexB`|M@`afK$?;8?4O;p{4`BV!=iS1FlppXl{;*j$ZY#YYiI3_Y21V zI&BRv=mThnkux%VNJ!ddJ2$+~K_kKWGD`mZ01wm?LDhe#U}+Jnw2GY0x~}^W!d+1P z$|QENV7lT9snZ=Hfiy^wbUSZawobbun=B9@$;%^Mb2uoKTu>xNbi2MPp!7aB3(;Or z+gTT!?lW;(Ute3NQ%M+NDKyYSqqP>GIL7Gr~_t}85P0q zSAFtQkTl*8w^Dg`$`XM!{^TY)b`iKy@@1O|iK7OV2c13&m zzzQu!uzg|;?0ixs^sk+!%xLDhrE7G1y3RbTg0bHng7TY>_XszIJ-og%^BW(Z3hm3k zCB*f-4^Fn z3Qsr=Vj-yYT(e)z&j(;3z#~5$Grk{(xnJfu7HJPdzdyGb;1^4%@Y>!waf#FE1P~xnCdlZPe z1X!vO=R}I4!VCRZ4e^?30=b2pLRkF<@!A^N7(%igI&gfluANz>J;eEB!vT@Z3zYcH@_e(6#xxizA#;|QyfZ&zH8n!O`0AK#}& zyz>wIea}Nt7QL@bQa>uhb!XtFrlwW;y?C`NALHQ9dpzI&bnxJ-4o={ELmR`0`f~HE zo9sL@TT}6gt~+vX2Zltf(7MLBC$>!my??jDxgFH%jDJY0&8ghGe!nh!Q(zz8k0hpg z5K=~s{zF#8a%;5vzNl*29Ju-RLA_&@_PCpwxl_^N&uQbsT>$s?)7e#Nn(<9Jh?F)P zkktn@0zIE`$@Crmw`~CIcrRY1#hTmDAnDFiFY(-Qacz3Jnogs6|2uMiczHR|SRbd9 zFK?9t`>U;~nV8dZYjiz3dHL&y*wX5K?qpwL!Bv+SN0DQ3ceJ%JVG5T@5tl@A$OcJ4 z1-Ja8f4#JLOwtSjR)T28npAK3RvVe3eoR8~FGp*TjWaX8>K{iAutZ5B#0&OrCRdS@I zIdI@c&7oj9g(bePZWla^8&bfoznvl7golni-(k1WzUl%LN1Zo>D6e!S}^Bbs_XD`n}Nj6ZB*sm7rBsrXCxpg?be50lCA5sLLJwd5&NAxu+`g!P=BB zJSzf!eoGDM_hQGg7S`s8mr|ND(sd6+@;86;1tb4gX})GgLP}TYQ}2!tzLB8sAM(e} zh`z2JB;KCz<%Gv~3$O})krr9PEEKW#EwM+-9pTjARi{x4p_yntJ5lmEdOysk!4*U< zZiFTk7vtF@QFTSd00+K#pk}vcn+oA+yuLIj;W0_(BtA=;zxFmIZXbMH5Qoa@n&Q7O zquckSA{VMC3P%`9inB?rTNb$7P!c+{D&Vv*ANpJ%iq{l%joZH8aX-($SXuO(i80aZ z!tN8{ZGgZOxjLpA_Z-$S6=rkcw|D+cXZx8?rU?P5s2Z;|WM5VTs+;b60mL z*NebjcL#&2CghB*bkOnDMI~q=N0(-&r#lF$#p!mSk)SLcqi0%)n_U}<8D&;UknQIq zL{vcbGz?5neRQ*{yPh`v?)u{Nc{~hRgk-}c99x3i2t}+_NGJzGw4vru6&1mdN!Q#a zBZZ8^ghW^p5{`%h5V(C1LH_5s1u>Y;kUP@{L7))P{w@geqzu3V)JM=Sz75dM%m+SP@6wU>IDl@|Vb&8+d$2EynBo=0Sp7529D z7C!h5z4L?p+w0iSb?&T-_V0nW%>q`=#(A{0Sj| z`$4>ZJI4=Z_+!=L6Z458U^QGz_uohgH+=!tA`a@`5p^aBfU>M7 z(k~beU}lB?bAg9N?41Le3Elj}ynq+)?q^T7yh*}jqy2jDfDc3I>GnA4_@IRF`A`GufglZ zjwXef!o`uRLx_TkAe`y=nnEysDoq4ofUv+bIlQ9KXuy-CREC9cf+-P+prA55LrR0$ zxD`i}jxfDC4fRLTxOb)%8e`RA`Y30nRbX*aZO4IW1eV`(Cj)|`(t1)V9@RQ1w~HRj zXmELUF0-0D4*v*0-$)-Cb(F2IKZ6Z!8E2)YhCsUo$7mu2@A>5AZrQ7c*&Uk4;OJh_0 z7s>=Z%fZSd;8205gtX=D`n+^P`v5i`m0}Q6?3|6EQpP9Ji#l~B&>C5P{wt zrPX}i__7K~Mw1v@Bc>ROlBz^Z!F8Glj)|E>L2&-tQ1n+OkXCXTmMH5Q17RSAAsR6l zF&78etcnV0v{8fccbA$dcW$`_#2|XeU{as%&d0>bedEKMbv@t=^?2ErFP7u?oc%3sF{5#&>D*HNf;a+YlqgS9*1x$v;s62YNtquBLHb>kVG&WIlB}| zaO7_x_@}sV^O<2TtXGIdkgG#}%LF(I{!D_wxk9T`3&HS*n}f^;T{4cyC1f`esVW1X zkO%+IonPL!8>#L}QJ^N+03>uy-`xdmnf^E7p7p<3o?IjrOu9DJO0_+=PX3Qj6L?Fy zmkd`_mv$qaY#5!O{!zg(LxCApyz7Tysv13w+15`H54!9kYuVa z%i*0xvtVhF`gRmVOIwpk9?b3cOWO_7<3}MTvHeDJ@BWnd^(>2hzaMaWcH^Erng;_8 z;(JVUYe(i6IbSSIPx0W6J(}-%Flg~R+R>H=z`@7eX?niM9tV10s0_u3v@JxJIw5C4 zw&7E(W6(RIdJTAjz(rt-fhsQ5NDJH-h(t&o+YxP6z{e}wf-u=N!2SlJH_o`<@aTI# z{g8{AKY0&>sZdW7#GmWpE;U*)epXU6F>()t-M6w?y_>?1bNI*|(~wql-~fHW&9PiQJyO{pNT2z>}>k|La~`BP*yj?L!GdvRsC1*#pjvl>|5Xg_;+5t^;G36Zj}sVWY309XOxyuy*3fS`*!CRj%$?o8?7kzQGrE=1%g0awl&?LIP04Fm+GXpA=JFcrB!+&eu-m@MjOrVH157s^a@7UkwZg8Xsj z#Nz)ZX*Kj`#JRB*`44#5025Bu+?x02^~?s(!%EVg{irIUpbz;4MrehVc#IJPrquN? z%kcZ%Q|ytIQ16s-oSuv}T;W7mUJ{HkT45(72Lrz3+L1~NGQS*p>mUN4H$=U4C2#>p zQ~~bx!Cc<47tZ8K8jB&GEv9(&fz0*|ra0}9P1AqFm}3sTEnF!~X9)*G^v*_5L5QEN zc5_LErU3~Cf$X91G} zGa^<+veABZ3}V_wn*^cYZ$?@w);POScoxYL+M#eW}Is$(!fJhy$IT~Eu}=K2BxO}nx@ z@TLXyi0Cw^w)49tB*b-$7}Jp@mapD?JUMu^0Xp|2lJ7FQWB*+g95l#@a%*?|&YlXF zwS^=^-8vSOmlOG;5&PHvxs{Nmncx+*j$;lPd5-s4S)Gg7JO6UCJ!xP-s3?k&?h>TK zM0xJN;i#;xHa%Y~x7q3G{{OCjqeSETk^+wf7HC_ z2(KXR21hxtfFG8Yl|AZy*}k|k0~EOd^}AP`Hvn-la>}hEKqZyGaP*iZnN}Mi_lH`@ zmi9avQ(~cnh>YaXtq~@*d}Kt-uIo;0xk__kLl!V`LZe2`oG>v}AqLHFC-lD)0WxFU z(uK7R*)vr@SrKa=n!bSgx2GH0KKBj5;R`6>#pn=7N=kOU?niZR!2o`DTbYR_+sF|X zOm07bk{7#hHe|x|;I zB+cmMW}_)fU9bGOBbQfdEuuTjGudI(?fdiZ4U>9TLg~*vK?ob8n<#Z%O78ZHv|6hR z60pF?#via10PS-H{z^KqF7w3io@OJll+kNh6=tf=^#tcU7_MuS|EE1`nh!b6^@F5g zYU@M!T!Zz-_51O%x195gAjKz_^H$xaHc70jDaOXs; za~W?SCt+9v6uZL#t1)KU{PYKXS6@^uP2o4PZDi@?KTMui{G^B~-^|jV6Vzu=0)h>s zFPos zWP)|N%tcPKu(LnR3d7&^|H9WP;>G&kQ0Ve{KP$!Law$VxeRKn*bIm9Tsvs0$bx{>w znWsm*xT-masoBM}NdH zc_P+!zLC!0Q1yLKH`r>68vL*vuVt!WrQbG~?UgA{lzeYk?vo}duENSz>*GLC$4!Ph z&n%)6)!5QCTV?ZS5(Ho{OW6}xGz~NPqfu6JfAzTHiyNp2bEX zZw`%)K6LJUT@zi7|9ATbF?h5Om}5+66GzG|Z#tL(Q?fnwp#M0QafP_S;?1 zz0ChDM$t=4stwL3b{UzVKqRDVl$4Z&tgN-E+GY${e)K)BL9^D)Ml zyv9TW4Xvwlh@w}9KUPIa!rU#2wOn;+v|}IyZ4@}!@ ztXH|cE%~Z&?Rv=Wljqy_ORt}!8{j@2CY3O^HYJYVH}@~~3KHC(#4MWlEE)tDw+5qO zE4A8hpxoM;)=W!=EOquRmj!gbGGIUwX_DFbK-<&*f%EwilX=+*(qOxVSy_x=QB_ji zkfCsdA&&e&w3s3?odBrawh5#AmWm}hW4NJO5!8Vf=fV4Y^i{l^7SVt2& zbl7<583^u@JMT2n@7^mNP{t?ILz-f5qo-t!BM zY3%lJ0JzzBQmyID_7))fCkPM>3`JOy*W!fyd%9iO8SKYv!OaC}WsF)qc@ritHHHIk)Xtw%^%*uOiK^Fb6$Wj0($2Ve!=y9PKnQL za3lVD77vf(Z$y1!i219!*jz@U<}V7G|(x*v^9)h^g)bjC}o#B zBxR$6RN^u+)Ae^?dFu1&&xNJcOCf=Af(y!j8XW-rcA|8DO7b9kg?(0MLqtIyXk2nf z@Bo9WJ8QDgcz<%J*d&2OxY2^Nenud4%Llss)uL>5?A$d*1P70X=oJhqs+9iVy5lDp zpOC(t4T^F8Vb4kmQj~!(a$fXe-KAY;)9>f&e|t0?JjyF8^Llz>tEzaUq#%sgxK}${ z;WDShq@>W`!jf8A7XzoRq2LZ}umL;vgqP~!&?QLpO8Uxx@5 z66Cj%yQ>?Xgw?ge-iHZ4$Z^mNL|67#4D@%`y$Xku4c_X^ZW!+Tx|PA^`JN@6^&RwJ zb=(&*X+K%;EVhKL<>8O>8A{UP3FaXb84a+-p^+mW&lFgg=j`fk!XhP%YtUg1=$NYd zT#Yp8Of*bynNjsj1#HR!#uAT2UakjIlEc#+%mQN2s!V6DalPBz!LvK9)}AV&(QNYf z9I%yoQ7=0@&|>kH7n&KqL!Y{yd{IB1dHRX5X&_I7;qi;!Z!@cGu?AhCxW@D%#dZ7t zzDa5j4^m1lzkX@sHx#o36$M_$K#?K+iY+#{WA5tU?yI}=NPc#GxNDC^MI@=pfeDpq z%cyUm$Zt`4_Z;N;8kn%bd?Wyk^{e6x5-H>Tr`GEa;SA5R#_gHmU%FJ)xog6R>hP>Imkj0iQ=2z{Y!2Xe?<3@?;c+ks2Aq0~EoVAtUW2d3h=F!#B3W{!7Y;raE2{~r zZyhLdjGrA`%Qz0R)izK^P)ah~@U+03F;haezY{yxy#CbA51<16xppZ+j9fw`feuHoZ!GIJ1YRTTt@EYaia z`ZM7y>9M@f0A;b(^Hq7FpXaqXevbpIRBo;`?|Dxyt1_e77}t}c$BjNn=}iX zTb2*8D`eBaK0DzLKS4L>F)zFl7}*o(2i&XQ54i9zAwfEcjlEjGV8PzNc@hh6{O?;b zjfH%DK9=jy-d?z8ZbJi{Ds3QY5Ct~0dnp3qgzJYeW1{BUYj5`(ENPC;|oz-gd5;-?|U}bTt9%X)aBbl{$jnSD65hu4ma9QlI#P^WqJ@r zt~WSnH(r$#tZX*YcAyKB^5$w4Q3~H0#~}W^(&lX8qoyb0Nyf#$39f`MsRrz zupIiTg|F4~WhvvK;p(Jzo1=+QRhZBUrr17V}&_1bvrQyT=(j{*j#LV1GRiyfH z(YD*G>AWszYI@9q5QoQ7>C588_PAMwZ~ zpBFR;Yguei4q=TGjR(DEndQPL2RrZ`Q|FEflLe(Yg7GjRXKG5Cu`FC%XaW6kzRn>- zUQW7J!U#q#{eK08 zXYpR4*YXocRW+lI1GB^V0%nZ~5urJbk|K*C)REypEFi(544tuX>uZ9ZVNp9Z!WX|$ z;f=W`Fp>V~72c4cy|dApGDr{uvagETJA6krq;9?Ix9QX|Dc%~ZGy^i*%d5?+rLpPz zco%t|SibgAa1il~lz(N`HN*s?3Emaz`uFkNuTo~DVy9k*6Y@<-S=^DG_;h(Y|G!v- zA@0c2foseA$Xq{vmXMH$VC1jE5-pli%hjGhQd~Hdfg^d+Uwt7%F&s2O0hcG!)gtU$ zvm3*ke6&wP*fl(HsU48tPRtJ4LNK|W$Ss#v9ei^V*yBD-4r6#u5PJR9+qdKUvS%c7dt|2yq86_u7g>;}Q#Z#vK10iaw8Iy#d8=8>$VP zNA=pAXPmtDBKL{>7GtG15=}|-rD@50qdVsPNm(;(@`p1}kcpV$%NQl*!`JQa$5jXF z0~yIPbrEkc+)vXCUX2u(>7wIfIVsv>xGX7~g2wV&+kC?$_&aJ~B8^eOn{zVbF>xG%i*1x_0)05)vKp-{cDs$0P0VLyAM1goC zV?CD+`>5S}A#WZI69Qm6FCei)Wa$^gK0Anoa;9q(jSoDU4+J)w;0}b#nt+tASu+qX zkYxD)>Q3d^fvdVJA9q(oNK%In8j8D|)Il~KBQ0%huN-T|=fw21P)h|oOenZ2vw*63 zr9@2uhEwvuki~rEHa$6$g;-D)a8a8KA=^v|Aswda8O;PJ;yO;yWovmnSYrkq$Of9E z%*>6AssBo|dVdoV`U~UuB55Wd2hv~C$w^EUb+Tq^bhR}AjCN5`a1!#)dX2oMrnITd z*7;?%iFm@oh&X;x*Lmn+7~?QOZ8Dh-)X*nj?>cMd)vHmZX|TP+$Hs$kGK9`N*;WKOj;%=YJn&CZhmLt^hz=wh4^vwDV&Uw51P}cwz%C+05 zzQ;^J0x_})bk>r4s}mA+-NX)L!kum$T7T9^>&@qdJz>JWR7}d@DVL|Lgu+&y&>^h7 z*3gQ9&Q&og**z+F9Pj&hjuBWNBRW7-hZrm!PBXE3Wpu&{d`y6ARFXB<*}2vsZ5=KNL{>&M0Z-nNbG-Tfj!&VWQYl8O0tk!S=*G z_CnBKhv|JC-zhC^hvKfpKTU|)=u)M>0T z2e8use37k$oE#iqZf$es+_{JWF=Q%2;hcn+n3y#?0NVE-m(Zlo9~cA1NVaZbA6G$@ zerbtRMeRKmEP*7VtV}>i7k(N|c1SwMz4}EX; zdmzrVUIT;2-Qj=!lDz^aHdex@F)@VcjWkAMz|vT~6|J^X1B#tmnZDK8s-U+mp`--C z>jhEga;7u_Fm9{S{R?0ZhE`NKyuaYb6*S$dy^=Wfs!>$@z0FZ7OPUuA5`$8X7xONV z>nqM^EDq|_D>#jp5iFM}{59#8y=wBehy(ZI?J9um6D%V$^FI$wKv|H#SwYi#@0*_!|m}`rK|peF%AcB96RC9k?i9XaQ`Vd|jeDvXpFqxqdda(7im_-&^8XZbCsA(a;WBf`@I-_vIH2JfJ5MVM?ee& zc>8ayDybsHV*yH$Aqx>Mfn}0sd&UNr^nk2EBsqKy8!kp&pJ==bQ;m{XO%rWhBmh=( zMaNloBBY1dM!P+n-uYQk<3KbqMgtU=asZo|}0`M-nh^tH! zkiz^5k%97a7u*6Q!-8RtF|DKlar$(~^gY9Pv%{EXEMsyH%&XZ1)rd&X@Ui<_zt+kk zF`)xH;@VzggC(b!=`+545kSwpg^kT2;2O;sfaohld$;1yImjCg=5FU?PKR`67PZzt zsQ;lQC+5uw2a2GDMyr>;8D4tPnaTsB(E0#=_ygdcxU(ea4l+anLKpCk*0TW!VrGLr zpy-haFDyB3IGZjM)TM=9zg5Y&iw-$kTTD1{79e7Ax1+n!pNVipsuP@3PZU0{1rg(n zxN>HdblC|Qqtry)BS~>irvkZl&nd7HQc(&M0MIEOc2kcHYacuQBs!YIH3nh*>sfutvmxB zofkEo44G5^Gn4H=GgBxcWxTyPZhC*10IntM{rw5(&)_T;b(YcDXGTiV16}HqUA+)B zoweyFHwl`oqeBh!Fv%ufkeoIKPdvzP<#gZAX;Lal1N%Q3?gy@a34d;lmINQ9aGE?k z&SdE=;eI5hUhLaC;WOM1NI|*TsB!A8a6DG}5{RIzgGG+uFblV)Scz3>8hU+9!I_4K znL@Z@E-L~K@u>Dv|2X(bme8(0%mi)H%I zvmo==b?EXlwQLcZT%A^l_-|{7)hmRCcrn@i)I%Ru-vz~9B z>yrYAqg*bd!e!;UR{sn$`18A8)k8%jNPCdCGl#R?EUJH%)$~NWrAIB`iK(~(6}&bk zW^7vnVhYC6rhc=s$_@>`;Wuu8dYtBaxxen2E25-t*!u-nR6qy`U!j|+vINP+ZBq@t zTMkji#~&BwRx#V;iB(}DDXCumGCk)(>S0RX{Nln?KWD*B;oJ?%Q$h7;2?(;I&n9Jn zD3|#TNsW$Q=rs|bN3ZQ7t>1@dQ+srCREAIg^Ibmc+!0nU%n~SnIp%4)4B#MNgMfy} zh2tL@%7n%?$LKa)r4ItsFu(9W_kwtSy*>U-T~*Q)wGB$oVJAmEt21I4o-g%6xH+sk zkuH>Tjg~oT`D-&nT`Fyl`n8`02rHq?RKK@<827;u4V z(QUpcz4#AI)&j2br!dq&=mMv!aVUHo_~~(5BeaYmmcx zgQjGJA6&H=-^m%C042@f2J+}*dHw!{#=&A&xYT_9uQPcKfXf%OPN)0BjC_10RhsQ_ zVSv=HnvW-Xj4f)^Fu_snKk=|pe1>!9*(fWOX@yLfYEd#nwvm_n)+3ps^_DgnlzdjNM$ zv+vKhQvR{^pdYU@RTXtqj|siQySQEx`4=!ErouDtt0|qSFz=32Sv3|-Nr`6Suu=px zgz$D+A11(VC9C-O*bKm>w6w9Yspp}gi3U_HoTaMZnlvRO!~5M^x=AE~M;WrDQ{Vk+ z^<{SZRvdrq*|sroIcssY6r#F1A;--HrRDmZS7J`*6u;k&GO)`FP|7Rt#>opeK>MIQ z-7!2R5OxDHqz)soNaAAc8Uu>*HZD)+3<=6-Rl-#CVmD8LgHU;Se$(^c`Gy{PHg@3zkFxDvhhmwp|j7vUP`z`0o(Xk<~%U6R1q0``VFbw zq=x@zItQ=~HfY_Dr)?^6IIzDql$kk9vUdkP#rwBRZ}4W9Ew}J92Fgo&Nbj8~&t5Z# zh&dXZV@u87x&^_eW{p5e`8777-S_?!bvkDZBPjSS@tk38#%Qz3l0xr?pIRBv)I><} zPxNw48Udkb;ZIwteQ!MMJgYnf1`4G7l0@_(rA4wO0DX}fJv*zA<8hpx0^Mv@ zQL&W<3R;%|BN0ll-}ypx9%OIf)OlxV*VP00F7pN}Y^N~G`-D=HKET4aa;_~nrW4imJ|>){Ol*9*|<0B|oyLPmC8cEySj z!x0Q%;nappnT~KKUQUlIgg^IB*7x5`4!wv_O#AMDxxx2~`eVT5Ijk0K-xFf_glCcp zMN5linfvPoxAh<=Ax5ti{UGedNUIIFT}@0rJQxepb{9hjemnY@R`~6lS;iU7h(iMw zxW0_IX4rXw#9J|jLVu?JeU_&Q*m10rYBs61?`hv&(U!bP`9W~YFu6c$^#@#x7S;aE zE&9Qk;DPMWCv1)hc`hb0&CLzU^ElnSZq0@k-HMJ18oqw#xZjS&5Y`0&%V^Y!iJ)@n z@?SYo+k(UU&Rnzqp`A^<5>PK-T90TjiKsi9hg z$Tv;Oy|d@{dI|uU>H9XJ-|)Dq+l$R=Qz&jlI?E*;Sbz_$)|qa-B_+4=c?S+!vUoE_5me7K&To+fj6 zGgntN096P{mq*RR@vJ@z27}f$IvE4dUAp1j4!o1zoZ-|EJ#yVZVmbYIl zyeqIiKS-0#y+ef2&PtZ~S_nM ztIu>iJXwIPL933%)mWNd zrpHBh@7;Pn1dkI!1h1I$U^en;I!2&o%RIFu=#SS6=k~u^!PxVWI%{)>t8hCKhzR}$ z0>~?MfbILswii8p*DXjK?=!~#W9l5k>-wUtAKSK_G;C}%M&mSg(y*~@+in`$c4OPN zZQb4fd++nS`IHaI$vJ!PtToq|V~!tyE4w>gjKQ~Uzs?N60|_A8g{j?E)k>R(H#_ZM#Hn3&W6c=pogn*UY$;({?mywK zx}JW88WYUl6IAMxL3S{RcTy1h6}*DdbBdfr>w{O$|sv zC}H@AT+^eD(&N^t9LsRuHCO|_5Ud-%GJXz_lczBp4PH2F`cGN+91*>dbI3_BGkoC8 zw)P(l+Js8y755ds7@-b_+Q5my^T~bBx7>0dOHv`3x9Ur^m8etuU9J~R;7zH5K~8&p z#IcXyuotvo4zZH8l!x9&E$Bu@f68*8>(3NFy4ra-F-sj? zQ1P`!TGe}U)-H)_WBEmq)MEmSDbJ7R!;1C)7zec6+-X4ViuEHIa87nbI8;~rV{iNj z9JkmT-dwi_)mj3h#9<$b(pHU_JNky4oV!C}Z~Y}5iU!mi6wlu1i+vRSxUugE+8=Tg zNzf7!t!WXoD;*!+PQ8r?&K@}P57lrLSlKA*v9H{6_>P=P+e%iupMiNTSi|_CA9dHM zWfrmi4ltQdUpuLjXB|~BtmzWoSZ{y`1r!_{R|~&`g5l$D9O=xsm=x;~WhJ=8aJ6LQ z_@a_Xkzw&_Ks4EGO5M=%jrSPJF*1r2J|_xK>;m2W zU8VS7J@~XN5?R(n{tP0DqiM>A=Z5q7iW}S!5_{{wGUh`(+m=JtHu)Q|7L)&3Grdzs zrZ2xw(bg^IMeg?3{ZX*x2iA%6S?*6m1RRqozVE6*Dyq-|oJ!X0H*t7ZPbjZ&_1R^W zt>MAJ!9b<@`m~pY{G*;Kd1)bThc)a6rcp=!N1+e_=m zb-yXy9ts-k4y=_?oIg$tAmT|{Suvb0R@t7L0tY$mg;o=a>ko&=93RMdRDPPRqdB(E z&(rX?_0TY5A>?{LVW@I*HlptJD`WE!f1YMuG0HrAlkP~41FW?uTYa}%P_Ue- z=~lDfgHGS-Xna9C231`t*a|sydpPc6B$c>Ue5IOgJK)C2@^EBP%=ty5Batqk5~Jjv zO#kGmGxgAz?aH#|@V$>cBR1M~4QMFB`x-1XXdKDkzD{nRXY5SEqcOGu0}ffHC5I}t z9#;G3p8^B)ZS>~xqEhFaei=T_nD4y7`iT@GukuEk^KE0^kC$&JZpa2dc2l406cOYa znp#j%0G25{mL73N#7qAH>k9?0qGq}b9Zc^}AT5-|{mvX{_|LA$aWesIPxJHv$TtmC zh`cPG1v8EMmPl_Y@x9TO$=tH7Sz!UZHw@3f`(uLo>Ba4|C48M}p?Q#DVuqxO-nRp~ zy>8NGA9gIcvu`fTr*kFfz-1l;kfqMb-igGkF(~95{y}r#a`zD_v48ZEx9U zhf%=@sy$w;12}I=F0ST=jG5B^^wC&=OS1t0kpB}*;2eR^QTXdaSPHYW6_~^>{p@!x_nci(XH)^awfjwE7e22vJ5i5GFzpw(1za`CioZ z2=oX8-uh=g?K)zMjKM@mwGHuC+`QXgsqE-be**SzI+s@c|5bALWqLJ$sHqH}h3~po z*j3lk6P6--@&1^Dn}+6h9`aFcLHMfXHMWMFQhgkovBj95%4dY8ekV;L1X@oO?x1#k z>_J@nwF%Ei1S`L2Z0m)d6;=&oTuw)kQD)OEtHm<>3W9RlWrpFRwG(;U`eOD!33#Ol zKx|hV^aYQ4tJZTYvB#NPSQS=welQ?63H5$=-N&5b|Neow)`)Vz2ki&q{428>roDje z?O0wCq3vsm+SOhUKU1$4vhZyivmmAoF=&n7)<{4QHwqujMHeiC{F6IT`@MiUXJ6=? z%xz}iu863p8?Y#AF@AN~IglVSQR<`0_S}-eTkpKY8u}S0ectHi*=)?2EuYYQ%R}G4 z={dYYDZ>n@Gr1HAk_o*~V}C8}oCa+_Ym0WhZ>__x-%yLCk zHx1g7W7*QI&a_=T`@>O&yfFjjyuT37db}7(j2fYY9aUg}Jn7XLH*$6@_D`*c00q&R zy{gm-0a_cvi;9=6@O`m8lHxT1g;%p}2kDkTFhavn%`+|i7&NPL{}*^~>g-uVp)ETCkU=Loc*#54@7_;q{IftlF46 zf-*im{m|GCR^${dhblYl4!6Kz9T5bpfAP{tg(n>BYv_q>gAjN|+cTe1S!%-*c!F75 z-%3fyHRLV#!5(Az<%Od{9H?4GvWL{{!526POlqCav1`0)J!vt{5&Cy@%jpSUBQdA+ z_6l5835qm9NOH4is(0%^Cks_WhE1n)kZ^IO0+_k2UX_C~vM#Z{I4l|aOz^TF1Bvm% zi7lz6BV;FhNYXJ}*Er==BL;t8(89pp<94NzPhl+caLPUaR+1W=HEp6X2%afWt_H^TrV761gGZ^@ZI|Nh4> zs&88#u#C`z_x}DC5gHwB3Rt=RMVS6$ea_9PL>@jN>&BTR!l&VwAcUNnbuT%>Fbnmu z`cxwNzA`gR1avm_>`kK-iaJ8>mESqV=70tm_RP(+NKM({t#P7czkOM|XZ~~8QA=XPcd@7t&W|Qt9EtTme3HN8Cl4P< zk%xYMoWVB)XUPa2WVvwY6WD{hY-YmA(Qx0Qf1L!e|YCH1Jw8LmxTPz0rGo)g`a|ESYwcfIBw_qT}gz9INW zW-FA>3a>oLkL0k`vx`-YjTfb14c}e){Tn1 zE{{F8WvlM!^LbZGji&#mNgKh11PK*8M!KLGNb)CaQtfn{i2Uz@`b=4FGWw}6J3 zIX1(#^BHWODu0N_Mh8#;RF$Vej3IHCyV^@De_Ke5I*oVjR#^#&i^LmaNcESUJTZ}c zreqc3e9L42sLTANrKBZzXlUuBqz*QIQAJPqofBobU#l{09})8;VlY~RXmVSM8JY5> zWBO)Ak~-5pA1+oW8rww-$vLY_teDZ!WpiJDakRvqrH#G3R~X~1e@(nFm<3Em16=`9 zucPM1>WI&)jf#&ShiAmB5eW3Tr{))Z44zIzTFz98m$M22=rT}jpKsVy?q25O+;6uE z@WZK2Y@$4aMky6y63N#$R$1kiwkE$m-1@!7;^({dbkyI3Ti1k#FWDdN? zZunybwi&5hU__kNewkkyz%^O_=DMfjafMrIJOkhOC=YEu(|S5Dmn`qZ3r8l%-8KmRj<*^j93o~+ww6qOXaCxrGz$Os$~5-vg4D-yH^uC>mepMGQe{7`^w|B~$( zbxBML7NP6j8_M)Aifg-;DJ2~XQCoe;2waqn`sP?{o(_!tqEdQO+I&ve#AyL~nt%zy zdS6t<%)0w^KX%Qsm6v^uG#3MG% zLi;etDbGQONTb<|V3IGW(0|J7zW5C+2HjJ4>N=*82CrD)itx*0Yxk~zW~DC+$c#t# z94(6HnO-O?S;Cw01jX_vPZ7L@BVsy7kM*Q~5uE))uigd7BN7)5(qp+V?+4N{A?bI} z_Sia*4Goya>|f_%M>pWY3BRQ5c(Od-t_LFtJ+SCMvVd6lBO&4zxhNIRl0O=VuBRi# zkABARZnT6IX+`dydEiR6f0TMk9S=@1qp=XgDpAwPdjo}j?%K7J~u`DZr_ z^kTw#Cvz={lMoP^jwNFi2z#Bh=dOBeSgN6%vxi0}OioJ~q6xN@1se+?tZh8u$) zIb?UXQAvl=Lslv-uS-@^kdn!Z9%3BP*5SVrZjU#Ag}za58qQH+rk*A;vUHlp!H|ZMfjWHnTc!z$FCDe5 zM|A!|XU~d}M1QVgjZYu}rVaPo?Not`0$wJauxW9!aikhFt&Ydk?yK8f>p@pd5k&k_ z3qJ5943&n|UnvQ+dGS+5*|b7{)J82u18;|aSWwfMjG9C%^ek4|w29%j33BBGE(O%Y zfe*e*wTTw?j0BZ|br9nsFbb&!fX!T%W0th*n*@Mn11vgKY-XnChA^U#w=ir@<&x0E zhClpL>nt;+kQtNbGvc1AkToj93)lk@6ehE{NI2?EQ%|91@s|*%G6OFpSI~YSAT!n+ z+z2cZ585b1R0(BH?dg<@95%9s*^cb5y66H!Dj&kh_^(~ZR94&>ksb=a3;(K5cqT^Q z?hWR1o}+9KEIZqdifYY@L*lvS+vmM~7mXy3P##R?!08ql=6h)8TJ}Q_O!oe>CwI1x zjL5(O3REkE-=a!f9C|Dnog;b02QZMljd5*7;afI3u$-DOQK4j%g>kk5pXqPu?xje! zhh-*hFgVPSdroW zJp{hwWa&f2%;oOn`zHGsi@Zmif7oh}=&8PmvuMH~L{U%)1pD3|Okk}+7R>r~{>4i#`NDJd`C$#|^M0x~$!*)g-&(AL9K%83HDCrpj^jH;to4)w zjEY*{$)bMHq#zG^A_#aDS6j7Gd^ZL%8&&T@ivCU1FDFz_E|5aGkjiO&E_bH>q)WXO zw-3f4F0i1C9vaX%=683TxcwYPYVBHWMr;5NWN@=L`~~A;XZ-U~?_rMEP;1$HB*!h0 zy$4se#f8c%fvmbjVyV-H&5l;*I6e&`JP0YE(pYF%WWoE2KuZuL2}B7>uRr%fG1Y_| zHS2Y{sXB8~t*ggKk5&=~R*rb6*&s~A1pHtr+SmlybWq~*b}rzS`8R10g6YBE$lDh* zz=UDmga9R5^^U&??jttCKKA(r4UuURHhVey>!8XcgDsheFkbT9xKLrqeF2-0>{F7H zOumghEV{^$__=`Hl{|Qcnk{Q(M!WIQ`Y=NjT~ZEw4hqTUIWoj{Ia+7os>SOl8Dn6B zJsN_14z!jwHgqiRF6WW#(i*Sd`bAry6nBL9HTY(4xl-iS>!NSWS_11P2rvk(Jm@a*e?>*oKD-WI^DR(~#;|Cc7_HN(R-uymm3J zRK@Pr!hZYPoHmjHInPfN7e3Yil5x55yoR@Pvsu^UCw?8sgaZ7>jyIAYM_X(C4o#aw zR{0R65ifZ30XA)E^4p*|?A=L|t3I76G3UwXh1%3C`yZ>gvn>VaNzB}2HTZc8^S-Cr z&?k(s)Y-27faHBCfk;#jZGDk#X)p417i@a=<2Sj$Kb_=YUSF? zs`p)a++E%`=UZ;^yl48{>Tb}|usF)lE)rqjR0E-PWB z*MHk^N&cgsD7@(9>cyksFExxefuIF*s%BfbrH>kw9!W+|6OWvt06r}3s$^TZVPJTf z{l&A!Rj`2$LJA73mnYuqRL7B5z?GDgo|GaTqza-?W8m$~*?pCAO~Scm@4UacLO9hJ zR|+~Z4x#fx)4fP6s~XgqM2a>}V?X)v`&!~3LdBUAtY=K6+_sn2YOBQ z^kOaK_oVXKMvwbmmK`PkvqjD>i}XVFJQ)ODo8|rp{Fu2WXg8AO*Z3S3Twr7G>3yx) zWOg!q)U~lfhW86KK02<)ECv`G8dqZ|EKp*mY+K|F4zemMMOnam8_AOhCp`o)}W^wIA`-VCS_j$3c&+et!bZFh!Kp}K*VQI1h; zw-0X}R-4JGr)J^e2dgU! z9_b}JnWV4!HlUA4?ldF@)%7UR`Q!|?9$aeH6`fVN?X>W{)s|e(vpU&c#`eWgj>mwq zA;J<+BT{7zRf$oTbcQsv{?7}L8O8$lV&*pqGEamvg&TYyvXn1#f-90Iqh9PHY`}jf z>;C~x@_w`NtjZ;rUZ|+^{$BDQYL8N3*3PRl()R-#aGVBHmciV)#!X->K9vsrNC>H! zb*-h=70%&Woi2FtQVB}DSt}~Q*n^zit2ADxu1ctL+MXtmAWuG!Zm(HC;(g|!x`Vx+ zlwV{|XAMvkcusWMJfq;h-AhR@rjI^Sc`;6Vdi))w?bTOw&NA0Hmj0I zBK-a$dJe@oezcrZ6k@(-6ncWjUD`2}$tPY@)^hSKT7zStUH!hpEGvmKrsi+t!N%i( z;ic>^KZ4SnD)8}SBpyxRwhYY~UwL}i>@kO|;{3Je?0@aZGn(j#kar=uYe(&az9miRC0lW+-yAsuHOp**dB zMIBfDCS^d{9|ihXTrv@xBVnxx-vA1PaQ*a8p(|$#rLg1h*E$~=ZrZ+ARHq#VDjkW( z&U5}!VuAk{kf zkSAA@)VI1jTG9|I?ZT=!dQMnKBcGf32y-`#)75hO#vX|&DWQegX?&+3oL`r8vJ>!l zz_$A{9bwFDgd9Un`z7knFY?NjKC3s@kn{vRnmin`W0!f7-}lKA5`$VTQS5Ewj>kk| zJp<>7>>RtiCDHmk_mgClXh>EQ`}#lGZLSWfmit2Gq$z0`Gf5(5EVQ5|vUpRZ5~zUO zUab;H>;b^g4ajvUjHFIZPXC0Gx0l5(n}4?ebqPTFHLhssgXf;|RJPm-Exrqnn`B>- zX!E&jxKV#T4GO|=ohCgo$_X|SUnj_Yb7;{%-w~BYVJrlURdjT8zgo2a>s>%>6G+7e zI=uj$41{gguln7-@U<1vT8{}G;QyaNJTyG~cT3Cj7&JVv-TRY(0A_L7433I_4)DKf z7(jpN`q`6!>x%pV5s=Vi+US3lz>e%D?b~{@1?BtjP!>O z#RUZS2fL#^(+FGOUXi4~>Wt+3l!|?D1no<#c39_#?Yf=M(7(-P%2P*ReX(enatX|w z*Q>REwohi-6jKa<-wfkip4WV^UhY2GAN|qk$?sOc-rVVFg1J0+JB@dew(~yi`LDqyn%Q4SZKq zTQJNXTP9kJUs=)ger($$^zk+~r%9kzFrCci$G*!1SkR0nhI8vx>(T#iLU_2+&23p4 zpBu*ZHf~~4lHKRK!VU13vWFz2LSeENbu%OeqkjYj4`ih~?k6oZ5B*&MXO&kavu%q6 zm^wU4gAD&XxIt*J9?&r1>M<7(Ytmo2+C_yU6vLQD2Y%%fnShXlfO^zeV&75HVo zqk-EvUXOaT|DiRjRBLVq0|S#6L>$)|X`RHXF6&GrTpfG6IWKCaTkpN*U-pz(`k1%x z1O|VzJSZz)#ye!&N|~kyt7Hgm&xIQ+-~0XsZi!d*|v))dSrrdUPty!n|@qmF%>h zPyS&^tC(<2sjk-1ezx!wDj;y)amQIx@5il{A}qcp$L^U zx(0yzQu(_z?)pGsRIN1DG-p~w3o1_ zayLrt_GPgX3^5Km3=iJtnV&mNb=xIO_qEYSv2ke#w|f+Gt6z-J-Dquyfa2XTp%>d$ z)AimdNqEw=<|NmR5=o=I{Vq8n8Yz}iK8Dx$KNF?@G%u_Mwzl$Qdp-OB3P6W#dUgB~t9WM3fY9pK&trVBz8WnCn*IH`GGGhj z$|skI20_8Xa-P{8^sXu|hj?pY+CpB4;lBQi;a=U7&Iy?N^2-n+E zT3%@+Do^wvgx~k-EO3kNh^P&Tv#I5lUcwybT16OyWq9io=OM$)upW^-kN$<{kM(%Y zwAc4q?7oNfA(MN_bXa~WOub7Ra|6)a(BtnFq=JIPs@9}_D_Ro+`}o}2i-9pHt;nYe z()Hk@$T|+`8R@_I9?m9;iU%UN%fXMc*d)VX2PnW>Q-VkO_RiPFdu~jPJusxwbcST% zZWqhSnomZ#tI0$7gYM0fQ4D9>66R^~P8B>WnpSNh|MT28G|2Dlyu~b^`@KC+K3-k* zP3Fhe3HOAl4DH&j*3P(c_rGk4197aJ9n`j{98(>dyIkWfhJ7L*K}a37hji z@%d5^(_Qz{;Ou*pew@T?Ar}D>k^50zPO&p)6_p=_5tlO%S%)DdGUHj4bwC3{4Tp?e zR9+ql_zlR&$zud{RaKqZ3Emd%RaG$o(c_@;z#`*i|Ge(3QiLno$^HuR zrPujHM`N3Mu|NhJqaa8=XF=@P@BNH^*yx=Hd;D5TOyc9ae*SLdTK~)b=##rTrS1>$ zS^Hro+pTc=kQvI}(5gmXLQ5d)W}P&%7F0@o$*CCa@lP3$&miugW^X=fD4^RM;NBl8 zytveQ%RGT^qiYbpfQDmE%FP|0MBlXQxB#kOv($Xi%IkJkvw3ytGnrpg z6a0M3$!yT8KXw2g>q_Rg3}Xr|$vOm8jq@%T|A%~(HW+C|VNhDK4r$vw>OaEn zE%%wXujIaoAgE|csgI{gDH~%g4hK}6DbLwyY`gc}Jy~=)@BKXi$ULrBkIuR;G2sLc zw@lyENKXv08QHlS^-L!@l1w}(%Nf(kztDxWf43K*It&yGx*X9<{&kOmiFrMztS~RP zACDU{EVS6JlHHy+aMf~Uj@LS@=!6NBu?9o2q#$ECf}iD=IqrPG>a=xuY;3t$$?r8* z^3%+$^w@6x-=+$Z_*n;;)z?=i=2%72uhm%ly_WtFYCP$4{^t`EoBimct~*m^i&kl@GmAD&pIP@NSiKM1N&An~BA>A1SCirh^*pQPm_MMc$Tvv888SkSZzoyCbpmVI;D^n8FGNOG zqIhgcM@}wT#^1nZ{qH5QPl$2w2=pTMa~u@41@L7RZx#8JBvEk5Bjk4F7E+8vev6l%TdmgS&EnySe68)z3k9UVov8dpPN&o}7! zHMmPY1EXuAAo3&>`=x=yepZ2uiR=o~cXHN?4*+ZAU z2W4?nbHyu*hpz|oUeZuY>kJuOLqtsT=Rsxre7JSKKWJsU?!W?m|Kr&rkhZw4us&x6FJbhHH|t&3uH@^rSb>QN=#m~y1V+#*H+E<%6E4ZO8VSm?zhnhHY#|q z>)}q<$qap_6YTaPGB*bIT^0umd*lGl6PYhC8zm^N0dzLgEw%A5z^a$oBMw<5_mMD+ zw}4Xo*n6&jQ~$+|sa677s>gf-akE+KNy&3)70b}elw-iD1c#B3Jdb+io}YQ*?8Tgj zs}=6{MSDmyP}Aa@)*IzW%4(eE+25~=AwFV)jvn-$E{#09VT$HDJh?u#xWi19g$pVF zO4QPZsfxvL?pVce?pnkw-X;oG4az^3X6ct&5*s~ziFb_&S*nsj7;-5a=V6E(y9&ob zZ2=NL>OD9iJ8|mK2Z#ACD9#(drbBB@eX*80&H7u*oiY6ALa~*yG5Z1k_1LmrSQx3Y zjWOwqmi^Py?&Ck760b9Z!D?fF`{TwcgI;IO>m_kaOQE{4MT8;ByllQq?O%VFFAU4& z)wWf=t(W7TPlajg7kCT1Q?3`I_NE;>M%`6(&zC9tZzho`uX>gG56A^$PwT_q^F@zg z!^&mTek+B=8>XG*qYXx&&>OHbQ_E*=WqVwdbbfbHjLjOaIYU=@(ZSe1jCEkhVVxZQ zY1|sJv+HJTMqD(fDkU{-XCJe#sO@dvh0pE#M}FK+g~(ubXWwe&1D!tE#@Ht==r3ah z3`UQ5vESdnVjNaW-GFE@1k4-;1NIi6&GL`z`45c=Y@N9$#LK`Vr>vwT0vzyN*8i2O zH!vUvY-$!Iz#;^Tgk(CN&fb1EBQuuCoxoweqF=Xsv|L9G1Q{RpW9yaY=lD;}m4y4R zTU2zwHQ4`|I=vEj_fhG*#`plvmdgCh9WW*rRw{bE`Z3^tZrOI$!9LVj_iZF9*JU7L^(y2+}x5 zRx1Dc+|6muZXtYMODS@Tt5q{f|71^oOd+eMO=rTOMok)B8tr$2F!)m~w>DNfCj%`dSPzMW zrcXEhFpY7#DQBlYSqju zT8OZItYQO06+q_^{>7Y1`D?%u;VB9K@>NaOXGuDFm4u;xGO%s^&r)}li1{DyV^Yzr zDd#Y?bw?4^Akk9sL5+Z4tGLjvCY^6S90DJjl*AzDx2Ea1&M6tM#5ZwPCC@R!#ah4^ zJ9f6(?nt*V8t}+6Nvd+k6Ckjp{1d+XT%h`Pf=bmm1CfjuoOAbj{4BGRp3J$k%7*xAuiusbhlY3X=~yFDLm z6^Xq9My8Nqnyb(jGh*_%=N&Gxrt_{qPW;nSIeD+&TZ!GZW1G7Qvw_1HTtW$lDKV}& zk7RtH{mTYS!O5b9`B89mB|gqT+CFPMMZmTwCjy121gCN0?4=W|lv*r8#l$78TYExB~>S1LHee>zQj5_sPReL)hFs85f z&JPu>+kQ9S4llU85C{G7%!sUg1|bdd<#l5K-OF}2jNZDO z&S49Eyd!7!7`G)35P2?91F=H!DhLUPea?R0jm*Et1=QN(+aC+a;_|%o5VKTh zgfcve{P^H^>>&EGqS+uukGFRrp2bNxD$Vqvw;odEz!$uv^?L(|Nek%odeyc6^BQkV z4~iAQmlI+igQNzzt`n>^+jI8!cX~|*rg5KKjSP55__ovbb@LR%_L2(bx^YisGY!om zi4f#?NY!tg7bgoCVx?X&r~jyB_$^ZuUZ_fH5qjU z46-#E416C?yD3g<`y)d`#YyggmJ+7&ptAz0gC2Sem9GhDBGcsUk`i^X3M#%uV6;Zm z_8Zrw_}B9!_1|OR9KJ_m1`GxP*wN=9MGC=Ot|{`J>vd*?$($m^>uqWk&pSQ3BK`;u zCA~W~rX4*1D}N<=tvhDh6=br4U+j%Og8e!0aCwe1LN#{T6~UeVyOcken6=3;{R1o6 zgvhhY4aK$!3mZwUSJe&xD;m~l55VNB4NQBz4v#PmINZD^qg3oLPHgL&q9$ca!y#Q# zSBdnY;VQ%~OBtsUmU;Vk;65jMtR)^0?Q6(`DruwTnbHgU_56jvsIiv7Dj;G?>Te-f z_5ks@eGpr?{&K$fH#CamD;765Hv+LhCSdVia8VAVGT!+cW^8J@;M!2L!U{O_sT8uu zfS4U%UR1zWyN)G!AJ7I5Wv5aPqjAuy}Ngob?6kazz(c8f<0+uxD)n8i(Kf$9O*=u zTho%?3dD}GjqdogJkOe`t3B>!Egfj{(q1xV%(lDA$jW}2Zbgq92b63X&V^V4S%+Iw9AXbeq+IRAP1?1brI#ldmN=L^^$By`O{4P@D|fO58$$v{^0ot3up@AI!G>`Ha@FQ#(;q zt^Pn@?;Ek<569A6?u|pD!Nq>Nuv-|QV9cpR*<1))wf*$RG$tNPxctd*+qkJ z8;P6@al6~$SEr;YF&-oWQG;oO1BK0StW=?sDc;mI^7@I(!=%X37Kb~Lq%6-}pC*=+ zi!dsTxFyJKY(QEx1kPDNK2BL@hW(G;zP@Rv_gWiCY>Um3@8DA{4u|e((F-Vdmzz15 z^lBig@R*^$W|=cj*gV@K^bwG zc}ISjH1OU+&JTk*IC>4N>72wS`m4gv1*a8`0z2otr`k|)lU0mCU0U=%GH@eVo~ zl4HQF5wEDidEaSjV@Pj^ETRyg9|Adx4OhoezA7sZ<0lsNY2TbJO?IF+##uji(yeM zDkEVy@0plsB+LKM!KnX>2s8kcMF>d9c^Bmq)dVCC0X<4+BrC(`o2y8R1h7` zrM5>1e9q3{aZVR<#!CEJ2In!%6FpZ~F58ZKHQ?==i-{GN5R$C{PW03Y?UwlN?(P>G z@eZI|C~R)dR4r?qsxyNdPj~7+XEf;z3}eu3Pdyl4FW2D>`Ft~@niN=tjVMUhSB9;6 z!@@cXzOgvTd4k?zhM?}Nu9-S}(}~7|0*7PM-zG?H!$86omXyKafgL~!K8Sv?$^9h_ z3@H68>*28(%M0hav!2OwI$m)jym`b+6sWjbIP<-octv>!(2UP^vdlL1uOCDcv%KZm z#06ZLj6$5LM^xmJMDnRbuK4^jX*AO<>=aZ#e>k&_@iSf7PqCxQq_wZjZbfN%I%-oi(s6$dm z8iW&QR5~$EXl?ykIf z$R_9uV&opf?oweOvuV2^MYptbDrFcTbkfOyL$Mw7tcEouIk?UMBO z8tL+^@dfFwYoY%J(Fl_@r}FNS1D+Zu(ZGyC(M9&Ja=UW^KJgI1j1?}PNJ72kA|nBk zT|sMS+pbe#d3ij)NAy&Yf;vO;?c!ZBMObdGqmEf%NvmxHL>6hc{?7|w+_JsQl&eQmJTEKyaM*{8 zJLSTR0pQ+=BVP;tz;4`00-ZS_P3qXR%f!{NvTyC8PwD6{k&(T2u+?P0a?_KdrKJH_%KQT^#| zCEjirpK<|_#X;8M>|SHaT}?nqgr_g+I}Fi3(m^>0jvC#rBJMtY4A_Ls=nOIOyPDEL z!G^KUI;@)1se%2tq9YJM;C<{X1=pwbGwLq9+{za0Ir2kUKRY{ob`pY|2aUG$0F8p8 z1ibCQp{4mnggxH*nyB%DU)*372h19C?`&D_=P$kC)OuOM z?koJ)>6UL?9M>K;Xkx`JJYvm1+u`6IYFw}3qKRD+($oL?f~sP3#t?nkZo5=NN3VaNXwwt9ESx@94UD0`PUG*WbR7tCk2iN8v-GMA{Lj+G>!w9 zY$rODgwP@EuSFdceDGbH014uN&U2Ej%xRoUJB_c{(Ku6H-@#MGsWX8L`T@YdrS6qS zn~m?ohI85Ob2S#=;;_h%eD##^`qNERZ{=^0eof=S!eGwMb&1bblZ%`|Z>)-cZRg?b zBzCpCEo$fJ(1l1JnaKD&1~1}3^* zO|r%Cd3kvl*x2gIJEUgoMQ`^T+kYBlsA^28UlcskAJvKfbbH7T3h_>aFA^DRFM{$t zAGi=)>n0U0mQt-2G%N$Qc`E=Kn!{q`4zl%&>v{b$TYsfK#qDXk=tryL7r~F_3<0l| z+|mYSY?%@`%&;2Od=kIBDF!gK-5vw~ZvE<~?sMpH{dH*?njmXiFdh{wVKt(?*IeA( zrCfEqKn*5OX=MoQO=Kib5HG0iSl6Xi*cYV0?T#LAc}FLcp7!JFHylTN*u|!T6X~ug z5+LoEN-kZ+D^GEtlYNy27TM}|3!V1lT934Nn<6V7gNF48_PJ)jQ&Snp+I~On|)$X)X}{h(hhuTfL{zgsV*#5=B{c8zp-O2jI+gh^=yA zJisXd)9g)m$v+!rnk>@jdF}Id8g>@FT!p2{$tIrM^{$sdObRQxqZVgGOYRw)YXkBGZMYkjzH~Xj#k+@G9umie1LD$dR%x5&mZ#a{R1^C zr#XnFBLRl%YK>zP+BCQ};Ugi%!X`8Eq+Ntmm;%@lfq0QYa0lVWrtA!@e{+ zyK>MsT_pS~l`DvNH>;A4#7>b8WhA4%z?@>SId(Qh8woOsUWT|DyFN*K3ScFduf2ojwV92j92 zqX|jS##$W#4;37b>T~}>{Y;H@Fe01-2+OT?fJ`6YIDBtY>p*!>&nMsYGE85 zDVk=d8Q}WCpNz+hkt_3RQiu_`g*|>r^r8RBnOk3y#wiMpnz(QtnHOBoykcQFm_*>1Ktz~b*(2o?xA(Fw9K04pK=}9`$F=&p$+}eZqwF7D} zkM0m+j^Tc7taW@iS#)l6BW_Ja75#m&s(mkJ$DlKYL|M6X zGPts8=+e0XMV4L^w1V(k)M$p*(}B1E+ykM}FTBq}`YfHyOXOxRtcU9h;o zNW}InPViv2Fhia61S11%3-nIv!TlBUmCi!KaxrgT)aTVUU9>85CB8Yx+@Z4f#g2-c z96s;|%W$;EYU$Pv)ybkIHyoZs}?*(D2qzbhdwvbW(2s3?Z->)?cW6Uo5lNfY{=2CVxDr zBjgc7!XF1R^2~12{1ajcCjiUBp0%p=j7#P9DJ>OMZvCtk5(|~nO80m@+>R;b?HI?Y z$j&16H0SubVZw*^^$g=#j^Ac|ozy8JJj51%Rj*zrd_mj#7(f)J6qJb|{;q%E3;A}| z>W4FpT1k^ryHi>gqdrpA))Bb9QaU=& z;^GrhvIrkn#n>P}SSE^;NNZ~BZ4AD^$vorRRZ!hbZ+|C(SAsR;36ue>uC)iQ#jwzCCHQsw<6-~Q&~Z6m&z3~&TB3mi)@{g+ zkK1Wg48*w7;0~UO{L=yF?>Mp#8>-1ExLtRb;Smx2`ESz%Ak7{W{WS46o`?0b;5MfT zm4q+m%o$^Mm*A%SG1Lrio%(xG_R#2etj}}R->rAPiPI&B3>-VBygyD1eJ*+B;5stXU9tQ3LkpxfwOennnQ5~a*JTJ zjGF#PL3qc+gQGr?k&?=+ZQzu})8GcqvLyF!pHI z9_tLIx|)v?;>WFg5(qWBG6ZQrjZ zXhB!An!aD@F=ZCjg5BjYS1{I9L=J=-GfXvhxJvfkTFpK9i6UT-w~Cd9FbaGjmrUAK zvu}#x{>i#qV=rIzQ_qS;s>FIus!{api>c&!4_GS;jUpU=pEw zJP^?piO&&TkHE@GbPRm?80E938cb63O!089-_HP31@G7jBSLUPtJ92r zST@86SPpxiXKY>x3O3E(o3s5k`;qkdPZS<=-1+UcA#mKK%CtBk2Y+2+KrD`pXAb08 zTTHn0w@8%AIlK{HKa#mRK=Hf7pRL{tVsgQH(@uXw=SF>IbyWz(NDEvho%~gO1fgAl zm(wcMROhr1TZ2LkjQuRc%9rD=Yn zzopSlhj?JkUE}?C8uebLG0jC3P0ZERHVhDPX-v7xw5$FtIHp03w|c?yFHPqZ6pW^&|4^4TlY3-+ zeFEk4g!^!e!~vaq&(SD~Xvg~npG{I#fb?3-iKFKV;zcu;Z!G3vVF(He2yjC~U&# zX^JLuG5Wkb6Tx4fGlryfj3|r7RfB@F(ux1J@(ggW{cJyCFF)ASOg-lN$JO}OYz8xp z5|LL6i0dynwvPbTo56}w6H8Pcp!C+?)Hsh|<`$i1a2N+6@~5q7Wr0Vy$`t0(d6Qny*nTx3kSaYShx>`#alxzp9PBA?Yqn?ou%-JinwI-v#VmZVi;CJVJ?ZeiNK zn)Gxv7KcB=I(8#nXMRbQ+Q3XCq!cwJZ4kJJpae8sHvMJ*@r4Kh z$Z3kME0z*bd%?Eq7hO?}ODqfdH*3GBs2_|BB^k>!@|aj_l(e)@*kiaMWkZKAQt?bc zzCj&yYcB$kcNU(L^)RiJfn64VY8Gzo#}bg9xq0*(92(kx0Vw1VNV>;M%30{Rxzljy zufAg0(IO+0hJ?3REx(3NX51mLhtPo=GmBbI&l7-jg{jJdi2rAVle&vYjtV$o8lkx@ zhQDc783>R9m<<47lYrk|X*QM}Yi602kUp0&`V|H!@DoXfp_*@x`uwSS4h#yinw)fy zQu}_ZcJs=;QoElm@gzsvYW%fyxHAVFVGkXl0P$Xr2+V79?7y<+T<5QteqmdLE4#XU z4IzXno+~Nqe5sRER@G**GoHImKulcOWlAcTF>?Bj-%qj=pH#XQA4v*chhqRctUc=? zKYU=Av0#zj6eG6K>s+S`rh*}FOtlKU1z)5S4Pw^}sC2=gNH>vd`=e84%7;`myE_mD z4!A%OCnvZdWb@igOk-rpQqV|IHY?~{a2x|+7mBfQjoc)F@aSvqn7NrT`Zad25#0OJ z^WE~OQHPU8PlSCESU2qc(Nijytr+D?{$qoqQJ`65aSY&IgL&$Wh>$Klq%?D*qPWr z`*_HPinW-p2P7#JTQBoRt2ssB-S{}}U;RL#tgDR|UECA*6x;hLAmBv~Yx#$vpkK!g1LJTF<2t>CWF860uV&=v}f|bk*&hh8pW422Xj-kN`~7o&hW{2>=pz+Hn*Sc{%c z&vIPgcuW+AY#2%CV!)gGr;=SHng%G+C=bQ?wTLhG?}lXkywtI z-IhGZuN7WU$XqLRRg9t?XG)x;|9Y|{%rH2dn`h6^IjHGP1q}h$aroeN3-k`a#2V+g`&8rRV@`^vJ@syesQj z=jH%`@EU=@@ij~BfeUx^cA1&s_N$wSE)2trznMF0sc8>V+6+GTm8twIe|9cCD70XB zs-(jH_GMCNO)?eO6#QF6Im&*tFt{&{{F-ToTmk?0xCD1oZmtWLi=V;Dg5MP0T53@9 zaA+)PU?g#1(bz;AidL@}hYi{HL_oWr( zF!7tP!=>{Z>tdYK2-=Y=*CnD{FxKA6br#YDjcD=#e;rUcD7#`IFLVxYYSVJLD4$#= zU513ha_$z1r1=HqiuWqBjQP3-`toFKJZ@Bt=RucMDtlj<`Z==BCyPS!sI{^=?G;EL+m&yz{mDHo=DA;|RlDe0!ur#fB48 zfI(-?p{-7n1xdK_%}2gt#p5>XI!E%T!o){|OuK3|T%u^{+=7Cn#>Vf*aIgZm=Q;j; zInNImxYGYBTb`uU)ZjWh~np(W|7z4fh6Rv2kmTxjF?JQ3S_O^kXewtKnd1=Ovu0f+d@%Lt0e%5QXf^=N^@R74#M3V-6Y(@0Egj7^iF9J*iqWvv7 z?9aEvBxfj$rA`S~nPz#Cb|wD=nmwFO)>LfYJ0vnjCJ!t$hS+~Pw_4GZL>-=qS67b* z5YbPibPjPvNn5GGL4CV9_keLs%aI^7YzFj;&CT!O*>7~7nuwo$lP7{$#c;#kKi=*Y z*h$7mcUALtlqlv6RiPewij$MDBNw!DpR7@i6kcN2ptnkzAA( zVgfV+P!G%XSBC%YqnDk|4=l&DO4{B~<76laM0Xu!Hl_mgk4~?m@hi4VX62y!ubTnGvE>5ynz*#GGKy<0b#Ck^{H%>l$O%cuoR38mZi7#z61~vX=Tx8ZA*j;P~#qd%nTGZzyB&n(x#uRw{FZS|)sMb#+1?`KOrM^KHW$$`1tOzWeP~M>q%iH|z%4wJA$v>xhmd zO82K8&gbQ0U%2nx+RCaY$~6(+d7?-hD%Xffy}@1swnRc{!?ad6A{MoqW7H6*UN;H# zC#}!*E6q1-`T@I#iayE5T?EY$S!h-b_V<#@RF){8y;(ZPFr4f|C z#`xsj+Hq=7ZVHXLU3Z-of=qeP4`B?NR+_dJnY<6*y;#F2&i)uZF~N-CvY+LtaO8Nx zS3$uC2tuu-26AI5O8vG612%VBIhq8B%;dOf4qWog!~GU-2daE6Q8%Q zL_?ThN9RAX?bFN_{Pi9XuTq`3P(>rpMGY_2w~gWM>={cHSbyteZP5)S6oYccb}keR{VwXSG%+9urP zhy2*yPq=Z-lsf^jDsRnNwSvE94zsjQ^-jx+cuR?S!R=t{*neZf{HvQUUDvh7^@R%! z%Z?cMBTmbn8?k#RZv4Hk42Io>@soqhkg02IF-+R@q?`I;4X^WdCkj-2f}YgPP#p#P zwEQ~m_rFR>^d12p-i!Gm^?L}exTrt!svnIH+ck?(3DnydeEXK8ZzzsH& zUhLC9nZ*l%kc~Ljt^pkL~r^7tGISop)a^kFmMX$0m# zal}%P$`xwAux#8B;10QY6pF^Tr(r*a#SryDu{hU!;$(oI7;$}<{7S^DPvYWGL>EqB z^H_cECRu7l_6_Z90eSdul-eOLr?#(se0MjGX0b4iIs?t4-8&>aNm=yq=lv`>RY@D% zRyp6XDiuiITbj5ON$EX*PyG`Twg!;xMX&9zEFXRzJV;y{ShTf&*{Q3nv&RowAGGMp zJMISp{$?OzTfu6(w;*}v>Y__8@R34)tl^yd;{~B~pL?QCkEqn8a!96aG$Lx^PZN(39%>y}Z}aQ1RLJ;ahSuymK* zpKAT9-R=`K!$;ltC$2B&tmV{IxL!T)q+5m^vyR$FwV%@X_LS#`*MXAI979y<&5gsN z-zQ{nCH`;8g8=&5cjS$}>pcAy1Y3hIu%nbPExk8hmAPg{7#x5nBWL7BEHDE9UBj() z#sL%a{*-rUX~A65##2V}=XcB#0dp34mf%f$d? z+NiY*cyN_&3y2%BnN!BOvfH$S%=xy(5^qV{puU27XxqnsSBGQ;^S;Gfhi7BL^C7+Y zMc}>82{@hv)Ry<0Cdm`?zfAG9QJ!(cvqXY(K_Y+-v8kI1ap@xSu%uPFQN)!6tw< zLOOPdyfq|ydU0QzaVhEcJ2wE`J(FT)Y1$i^*3t# zTSlL81_AQ>aCJAMx?*c(Dus7S+_oc2a9A9ioGil#<7U>!J-40}Gk3uUkfBe6> z08B}oqpYH3BD*p4ghqsN8SoASNi0zKF`JcE73vds39sNJ>y7lRBAL4pr0+TW>oA+B zai-d+FC3SoUPBh9(`arTPOS?_fyUabIk{ z9?yKtui*2c7?Ml7JrLLNB(;+<6`aSMhk`srWqV1Enwc6k)UWr?@9eM~JY zyn5r1GOTbxi)2Rc-8X9W{NL*zKc?XZt}pa!-xrD=p`zTd+v8Ee86mW9}V{CH(pMThxY9*R^_XtSH;e(o$R0 zB)_G9sWz~C|4lzWcUVKphU^c-BY_kxB&<1HVb-ZBYY~q(q9ZxtS`muY?jnCS{puXa zUIFAsywT_M^ptv9&lK<&h=H50yKdUmbo?hb%`mWus7+pS;wv3T?*<7!A#2aoc|;^5 z{Ie3wxJeMF8TUmST)YQVQT?X`7bU{Tft~PpQymt{FC0Q>zqjj+9vYEeRT0uqlmAL3 z>$ZTA4-8?uas1JBX3p^GM?xVarl4|X=^ZBvlT5AqO?Z!yUfrx^fL+ks{%H|EOevx7 zO~p-~QWo!YzBVc zv%c43F+2$3%RgECyN?|x-H8ACvz>2OxZGTbTX3sJgmZYY!{8=%{@DScavD0Ws}Z z^w}rPP;?n9dPEI?%63VvTc0|j0E!8CxHDRfyMJr9d0W<(fkv}VqthDR43&h^5*MoE zfAC)L@5NXXF2nN$)@k`_uk$V0^dn4u4y3Mnnc2%b2Z?0bqQV(=K(5GU1LuZb;<1ST z*OuoCiw*LcwZZNDKl0VL-hVEdOSHfcWxVQAdV!_(I8ddku|k-g&dL0xcs~%|u1uuz zw`m2B{Ej8DtrdDv!9k^7)YAuh@{ML^k=k`XY_7qG_x7u!Pe<)K_M>+WgLqa(G<<-N zST?fvA}!$(;pE~Lq3YtMsU&SH(E0oLTFpQ=sJsLg9&UC=Fo_li_uIQiDWBjU$fD#U zCCzlK0|JL!8M56Q{8o0!o_Ly_7N2WMu(`h7x-q>WHdqpK6lni#JIH$79x-4iDSCY@ zmxSb0qGOi8QBrcT@rUj7QxdI)=5Gfzj-hY1LJn173;ugv*ilTTwG29V9Ii0&+WC{k zIc#ZoNM+KUMGA6ZfwN_5M>Fi+%kw&fYAobHHDkOVV5kj%T84mjK%SYm(NwO(g;C3$ zk}0E9KH)+;qo|w4k@xL8w{_a7#@#8A(W?1j7&N*j@eP`omUYfS!HE;2tippQ@whEQ z0xeRezKn;pr&*|2vU1ac7&kMsW14 z&+Wg2DCz&>%is)yx#fRHMtq z(j_6_icAXWd@JXq<8F8mD!@T&lAnj9mI#Y2CxOj1t#^Fgmn#va0Wa58`u%l#J+FBVLGfP(vC#le}0l|JsF0DhCNG2Qm~Cl5PdD0Wp#dQnfB@ z2r@@zIY)X$wZs$r(%Z5i8R&AYrZdwT9b=C7##m?ko7uW}ucyJkbhUWi$$0p3<0YCW zX9-62(7N@o#`Sqxj)}?TB=XqPx+;tOJdm`wwAI;f%AT}&@LyK`oAULT@HnKmFt-2WHtaL4qp-=e$Y)5=-x0XahBUY%M|j1%=Zi*C5{H8PQu+RRH| ztYf9)9mJC0$&$#Ytk4SXfQagqRsG;K4nA18*o^Dj~?R%}KSho=pD^wAk_1#d^SVuF%-k|LPecf1#8Tr<;1 z6D37|Vol>nQ!jBE@#rAc-`T4ejxK{>G$nCWI@$unXJGh%RLQ~}B z707UblfJClVvtuYn>jhx=K#r0LX=C>48!Dm zsxKG)Evu1gSOzDzBN0(D2AS#;5fMTHbo}*1l=+AvGNSlS8yjeA=m z9`Y0Zd9*1e$cA~?hTXO0CvFy|SlW^J&c3b8(Y3U|Crt?}4f;h229ISbwU|i65(!*?!1IQ^>okKa2c}sisPbKS4m*+441=m$4gB_l#ttyGW5wA_ALQd&u-8(6s2Ct;q(n{!RQ?|j{xHq2Cwkq!8CG+U1EPp&RKT083v zvo-ZH2j{GyX~ka+EPP=-bMIm@s)3eZg<7A#v|38fs9AFB zYe@;OxFgR{WNdW@HS91QN(>#|Yg!Z=REz1I5e^+FdBR-o_eQ)QjChbri~~E(WKu_A zgW(d&Wp+?42&c6Om9%c;nWSW3jl|MLS=_{RR5kRFq7S`TEHwUP7&&CW-EwEDAc6&;`b(wdJ;1t_Lj?qL!EF;>Ip_Iy( z2?!5)O9vI3hQDlsBw-meY9gLGfE-;QZt1w%ilu5jb8^z)p??2glw57z5P;RYL~j3ur=?vb(f zI8erXYuj9b6Tm=J@OSG#g*ZKTI$WqZCEg z2h79_rP4{cp7nJsx0T!$;%`aBCSX#8c%o!IHxXZEGLw?WRe$?u1Ltn3K_$RMsvb0S zvh2@7_;8QtX`a))jdzLfkuZ%Ii!Ryq72EH%X3W75-A;Lc0-R2Tm3J?z4gc7$TYpvC zIyBL$q}Ivof+R}uY>T4Gx886egDBm{XhBUkOl{8<@TvIRQEy`+cDF)>yMC$pO~kAs zf==kFs#*n%ngkYhg=8oj>=12*=jB|gdYp=nDKlw25o(rZo^Qti-=f6P0lRhEd3}l`qNX)NlxImayHB=KFL~WfTqrVg@k#9 zu#B2^Y10*2Q}z10Cv!8~=Jn1whS!^ns_*nr%9atoO8aG>1u@^m7jcJONA@JwU^5N5 zmQ>8-cd>}dy6tLa;X_|v?8cOC(5xbG53*^lOC90qaiWAwzx|#eL|(5DI?jO>b$-e5 z34T@CjThap-e5nl`Dfy9lD(0`Kj_>Tw>~grn+JL;~Ra zpXpnDpbrsvmI+0LNFRghPGAEnpFr75(%U>lL4u2twzXQS5HTfrL1i!Zu4+HybZ(u{ z`5$Ehx00{gn7O;DA^Ki;eoP6gE26O66cZiJ_3*|1OuaSKUW@PYyPI6L5XtB8w)&W$!6Pnd*E0RIY`Lro7AI$k<-ina95DmPd5`$QheJ+S0uzgQcC{;ro8tHtaF2 z?1=x?nSA^!e;?IqG#KLK6#j`@ut!-u1li z{3m@56RU}HA<{=&Jg_T~LALN6SZmHl>2r&?wOG>sAg?_g`7e-FJ2l?NCW~rNJx9H7 zQ)uapc~?u}=b_E;+hamvdV2kS@tx172}E^Szm<~F2eh1y?y2q1Ok_$b7%r??Q8H4~ zP(JsE4UK@Nn}RNh1w>(cfu2{XE1_%fo%%%E)2VZxvK=MAhwZd;enT~KI&0Tah(p<7GI6U#F@@tg($eG44tQqDFY<|(#p3_t}IPMomb>GT>uXzlYo+4y4)2P zxfW3;<8Dt6QAg+@Q!4h$`JjQ-FCYE8p7NLOd|yg>g;MAj**jqkDCvP zTO@!=>?g3bBl^t&hQv$;jnzb?_40r4$=1hH2zZQ|+S%)6_y6}1=YI`SQ>XR)*ZqhH zJ#w6vw*FuCP_dfO%d6*I6-@0q?Tk~InVGFlm#Q#ZDSG@m6R>gF3K1Jv}b~ zhMc0JR6O~c6!hrDEZPuE1q5+0FVlZwWM}|iHwMr^^Xlp}cAbQH>UCqmJtXQ-8oOnX z_XlZFF>FE)YXsOuP&_Sic?$yp>-Q?uE7pzHKSC?3W2@eQ$zX4(%>buqbBOL!tYJ)Kc;S030xw&ZsO11a*_lr3> zRZkjE@B%X7@Acm3wZp?$_O=^nz+_SrqIITGPMfRl9J>Xl1q}-eDhxcTn4TW#ONO{V zEm%E__KS^JDEKUZl*j|b?XU<5OI+n#gDtbY;6XAZ{!#n0pU>@9S^};7ZbHA3fRaf! zyy)!O{(f{y3hu*Ym49e^d;8=XcqOQWcGB3WC<$w8M&&Gl&Rt98K|4NEpf-H7Tbz@S zni>i)IVLjfCZyuVxLA9(gCIB*AnzDjqfz$GTs_YCFHTfRL&8pxab4qVMNGFi%Ch?U_!vzXF?nc&))vP1u^Q2BSV&z zJd!$%LL+(5Q}Oc?0g@=8Rc&|3etv!e&YOta{n%KE>lVZ5ffpC91%-vicNe<~;gU)v z6&2E8?kMH472duDLs;P|w+WA1F-M3B4}Rm@w{M_UeOynCXBr-8gznp#o-j1OBXHb6pZ^;P9x&^=KW?vb6#yGSYFeD}^Bj;7fQA5R zqg3R;c{!jm6R_W|4z`#jy?pHR-0xJU9ZXDOWJ1)qzE~MbF6_Bl1VS!YIVHE&rK6>@ z##maYxHkXRnT^dt%YGuz8d!L~sN}B+nNpF9mA?kf*k}rog8gcN^zpH{=3XIPKuuY1 z`P0~`r!FxjAtLQ7sA6R(5`JhrysL$jG?=P(w)oiwzc(GW*~!A{EH%c#IrrmMJUjFC zfa=W6X4qE#U&q<(|8g01hlLFQg(v49u8iNB-Qfuc=(R2P7JiXL#5>-!s)!(!>&}R9 z;t0a@Vw3RQG^K&G0f?Bqd}LQ5Si1EFkEL2kuy)I+AtC*u2wP2i^^s5tUeiumZ{>*o{6`*e|8*lOJ^ zn^+}hu4?{n+I@X`y2vp^FrMCn{-0C-#>bMQxgMd~tvIwB zs`n|n3Ntn@a)ZMrk@;o~VKvP#pkW36GdseM+Q8P=M#l#Cv?gm3MoU89nu+BUVL!9f z_-C>q!qoEes5F6e$H5V6D3c=vOTeU==gG*kIVX1~_TUx#mw;REE z1M7n)VC|eq*xONW?qQISIy_dO#zatVZlRLtpy;M94}bg!XgPxBA@&l|(fa&&u9yJ} z3pdap8=Is;fKCBVrwAF%{?(>05u|rp{R->vU$Kuh8w!eGjNHn6T54=!NBketUKbv& zJUa+no%VIqSv$iqvW>QxT!8=N#}DEak>I5Li~F+U{xPCNZb{CP7;R`_UP1)O0^%2V1`9=a(G`id2yoL#n-Gb#KM${6D=_TVlK zQHH-VuN+Mk?-Cw2!g%gbt$y`5pg5jJs@7+&Es|+-#35$Vj)4d!HqDsQ*{B>P&MnTx zYCk`Vn45PT`(wE7QmdHR?-I5=&ppaYNx3G!3}sfL%29(OLKvE@&%)DVpzr-Alj`>9 z)w3SV*)A{vXS<*xT3i_~A6ONg!6V>(@!3D$hwhQ^D_7p6E1uytoo-ac_x24Bx?dQ=dm%#56S0@k+;r5=wJGuOB2`@BpKc6ZNQ>-1YT<>~p#w4nOp zpniRVX}{O+e$@3ImO7NjmiQ8eyQ}NAS!8ICM67(6MBCJCl-a23pV=?B+DEa~UKkoG zc74Q3f`S5rjJ#Q;rl7D1{}cq>S9N{Tedf-{*a3sl?_X;ll29hF&;V0YK~7$6@oAp(|~{qE;6Ryizg%TXy{oZqRd1BGJL!fq=5 zRS~?*yCu&{{bpK!Rw$kWcUzm7CIA0+3~<5LL?V?;n_ZihnVomv4fV}E_8p1-=ZO&= z<;?Z;!3eweKeCr;H~9RY-+7808B9GJ@I7AcI9a=rmsU4Dcrv}F04osp*>2I4kg~(3s_B$f5SV_QEr%uBrAwhxkx1Bn} zZ@Svp*f{+gCc3%1%L5EnU@slI9&s{9GPh84;Sq-3vbJAp4gG%cJPUjJ`d}behYQ6{ zw9{FV;ppPUQ)_GC6k!bw4U=mLnL9e_6D3PdFTgjWQt=eX`9KC&)&hPH0!P2D4GJZx z5x~g~k4hM@xTt4lZf*>OZ4|<#93*O9?D^u`f%?LHNxRv8V85D2T7Uhj0m`z7R2*O) zH0IcL#gu_YCmc}uCgigtd~(`&#TB6|UeiN&FyBiR?TICqX33ZN@%GHziig=zD%^tKM!xNjAu7S)+KqK>)$k2_WVF8Cj*WL5X_BXLsU4 zvEp-%R<6YiuF0S^)n|7=Uu-PN$;n?lF;GVJ^maRE1FW5H;47q{mvu9)&&vgwO*b3kLGKq$?Ni3a+Br=VuTtfoU4 z8c7&XfCDyu{l!&!@ouS_-{en30ByI8=cnW6YLFQuB`a$RWU&zu5ygOd2%zqlzBrt? zA6^H5rUAL`MFb#lz)S*oMIb9M*HsQIYRG2tKI?~{t02{-Vju36dC80o5aUJxI)!3V zQXwx>_Ku|nDga2IP=T=pRjviR&S-;zf>Mw}9Req;dO*>#j~6>?ug{0MZ|+x~EB|X0 zZRgUPRLB+a%a<>p2CuldI8+(m;c$0147drCR8&L-bk!G~#5|xwtq?Blpghs@+lt5J z=47pZbo6&HhDby(0tU5!fKI8?4jpj7hO^(0038%@Gc(#3@kQ68#rM0_V6`oxvzLlZ zb49s(*LIHa0>*~%bcxzrttH08!vpXSdkbDdw+P(A8*D8wZ+=2w(Qj{W!88GjA`GLoUccSQ zj*gm>Q*BpuUP@IJlZlxb)I0Aq3wY@ty*zfty+KQjz3vb8#CN#I|GD{jKg~G^PcEiZ zXc!m}!G-W#owa)HyG(Ii^D)7>m`Dq@PGI(Mh-(t~O)%<4S1IaLwVqy@WsJ@gr`zX9Nv49#|R8*8j&i-PP3(%iO9b@d@tufhvom&N#Ov>IG=qJm`%Zq>f z$O)wVPu8Q^=VMofy`;br{&;g@{NiETlhLVVn*1MM>5amRh>4L}Y4d%N+j@!pG{;g? zQbK-xy8dY#B4t0e%Qn92pzBPQ+21cmD(Ku}+@zC43lc^#gxwE1K%LNPP*%9P&%V9+ zuHpJ{AsiH-k57N?#pQlD-wO*SqrdkQ`l}RccT_BnQ7|}e!94CeokHk4;Qu?b^Zpq3 z{zj_qj0cZKl(^~Ce0)*#6jM+@zPma^0l{XPfp_Wu^oUWts1Ec9gavi=wzJLV@k-#S z*KgjWq6aTR2r#THS>L~Ynf?;apS>`Pcw>nr71iMC3IGK?U|fRN*G&q$tz1AJv!)QN zGk5u19rynP{KV^m*!8?@Haw>3Hp~ol`A2CESm32E1L=cfe5#I`}W6wJva=+BeAj7 z`>%WdKcIt>C9u^%RK_dB7Sa(f`s4}hg~$KkBoXsp4XR|p?9}+)ySKo~A_jt;{G#h5 z;PNjf2rH?~^uHgFI&>KSCQkU;lj8}Ld;nTcFf#dA5KL0i7*Iu`)27}8=w2er%2&qx z7kOhX;e+h;vX+XeUE&z|B-a*6YW}YO!8HJHBN*OzvOpe<{P;zSm3P`k(GC%EvR~EC zck^#kChJ-Oyk14U&+Qp}>K72<|In4J_}vo*fq(;hXSRxh&tY+nvQyCKhC?QXFc8!w zV8(sHWSU;u{i|u|(5m8EMoSf~pRJ5!2Bj1PgobHyG7~oE!|Wy$icu zY$pH5y9?_@pnC)fz!15C04X~)0cvLiMZ1zwur)D>h<2S0K;1qPpdQ+^K>9LCO=aL5 zTnDoJH&+Xef@rbxus9??)Z1-LaR><`z#7o91xp0?{|~(3X0^P$jEI8L9RLM`Nk9-j zkW5blPECL!u+Z_DZFhyDfU3A*231v`4qmDaXM6o4g3AZp+-v;*hCE7;+S=N{UhFh{ zzSF+Bzh@>>4hJ(zTw+*n>0NCOSbtqeGmeSCdW(Q729 zc3nYHjIQey|M=&}mFHe?b{O#xPt;nffSA$*%(p`LTrNjVF8tp0yxn{q5*W_%u9q=z zdks?bUraVKGBPF(PB5t53q;qzAXY4TIFnX~d0|TA?i8Me&vvV1Z0AM92HyiOZZ{CoBPXyfdaGPCs^IUbv zpm8$YyWrawRLW+kd3bOE;W`~C(}TEoB3~Axup10gvo#67Lk~bHUSf6NF8z0|V=uu1 zn+ud^2xa3)J0EV(Nmzgr8yu-bVj7%t4lZ*&4{G|VeQurUKt#RCV(>PF$v zD?8nNiEegUd&%E5;`##C&6rE#f>@y|JT?_%oISknN5CIWn|n<2xept?Gq7Y78WA*2hs6ivQ-gV!1)nN4V06SN%P{|SL z9~zQ$a9{&(nSvg!+iAzwJvD^`;(z#HC?-7mw}8agV!sNIbs1%4bfEp1_~pw$!S4Y; zenteYOt^A!HyG7Uz3hmHtoLeaSP)7U7R5EWl6oFuv}X51S(aM8{5j5q|y`H2Jj<&4J2jruVud1p@DTRes~_>y1+bbSxB;{OsY zGdD9T+UYU^{1CzcRK#BzzPY*i1{`VtKJ@}!!T)VIr15EEr!D_5mG5I-R%7dR_Qq)) z4i>P67ZMy~6`+8~vS31{16e=7 z+s%!0OkhhWD}QE#vty3v?H!o;a_4>wzrH~ta-6IJU8Ys9GQ4^5zYRnmUYp(j0;ABx zD-XTw3A3~EeCM0_gKPD=9iiD3iqGEWR>w<_!+~^l3oeGt)=;VG^pcAUf`K7c26xni zAmFXx_nJ+4`S~}T@Bb4Nax81j$YFuHy36?dUduw1&zonwiM!gj<=PY2-oWJ^52Gz(+sy#8z;s_U9hVMfA<$&(e|fee85ipiiS%dT-ifQ5A&g6uz{rP z&)mbT|A6}Z)8lcNDTO}^MVc0~cI=*ZjK~wA=Y?8Rm#gXeGlm1V-X)*;lbP!-_5Y z@4jooh8C#&Ge`SsV5RzVO20o}>Kx<@slO{Upx5Nt^F5J~Eyc-cO-_{7J7~R@f5S=? z+=6g)e6Rs;e8BjVDW|c`wwJcLmTsALcAmMSFErFzxNKBmVMCJ<hLZuEad8VO(vf z7lHCh&c`DdqWv?tvfh`_cUN%#MpGTHcc(6DmOdh!j7xS1AJ2&{m*N=h*H)A!9xsH1 z4dT&=DVsT5rpt3G+GWZ8FAB%<{7ea86(`8eg*xSHy~+d&Grg71Z+s5cfQ@aoK0WP- zBXfQp+M8je$m9?|YT?Y>^8Xf&X8XW-)VC$0?%P>X}o0a?}d*&!E`f z*^t5Ti(d?WJa0+MAG4PEz;3&g(rxfwdv{@zHz%*vdsXoa^QBfly~J6$mvra6^Go@S zzq^!0{8{^#j@rBHD*GEXV)km-)7K6g{=Dcmv?TF`X>n#VN7lt`-jmtWFY2)iR?TTg zAe-2;@H0(o#2Xrfs@?0Seaqg&o6_7%p6Lfh zN?v2<5tL9fW54;EjrHvfi#K{a^E|xK=^k&Vcjx4n%VRfrFVLljGn;>3Ev)#|$S-D# z?riqs$+`qVjVQmDbr)2JK22U2eCj>jApN7ay75S0mi4tYvia%;hr}zNpVRpMNjxFC zsWbDjwPQ8b-h~uEp8jRSnt9s%tAM(@{4FLdu>x#;mYl-GIbsVTQr zRD&VLC5(nm_EYn!#tXn$mP|_+y7$%IyySXI-p-vfw*!Iqt?%`^-7Vg#Tl9w{IoTuD zm0zH-m=?>0Uz;Ozz9!1i3-bnIVmF~iD=2^Qty`DE(t6s94e3M2fI*$SNmANg^UDL( zL3%FMO=*CBs0UYEfl})mQNtvu;+$Pv(8o&q89SlS=~LFXf4AhB8;Xu5$@{;?x!m1v z&T_gk@Kz|FvaAese_GOO;p~8L=IBv$_;xaX1y#u?{?Ta5F%T=xhxgjkD3>Og6N)Po zr1`Z8w*}diJdNTF-$!kfSY1_F&6Q@sqx$oO>P@@GM_=A$I-lsE9{=Hdap}|E6UT?& z`*-ZU%R%$ru5j6-F*7z=YPH6g;a0RaLhvsc8&#~*yGudtl+Aa0+(N$Bu;EE16d*F!@WQivugvM8rTvD0&YYIBgd zroY1De6C4u0enO`5)u!k6osRgg!!4+{WrnUznm$B;R8^HB&4Jkz|IYF;b8;gt^8W3 zV`y%Dzu6XKUiey|(bCFCH(R^X8F#*H)@|pi3U}+vOQ%%1;9g16>yhZZKa!@e2sRIb*f&iAUcK08R;jO&ILg zY}jC^B4sP?TXw}b`y>PW1`^InK!h|`9Z^<+SOY8HgfA(NAD3al?t%^mjfY7L9D1Ot zsu~d)=>x5=2MwNT2ynu7WLe-?5CA+6v_s1QiM#sx0)X4*I1Cj|8ESeZ1hsPzFQMtE zqQ2J1__zTRwxDgab~h54j8q!R;&7s`l+M0=RR^}u`2FJ_LP?qfBS4p5zkLI)_1P_U zdCAPwL=7mXx2c93JZHwtTQAXL@u`5&5g=5U#PnCmX(!(Dtbp$uRXWqe8R(d!d9x0NMovHhXMqbEb&9h zH|)eySaFY9wlbEAl)XO?p`c;%Pg4Z3CK}-{Yc=@sh_U&(xlSLq>0l1&bX~5Bt zQVpNp7j0waH1+8#LbXwykUT!I%isCjhG^Guj0Fo8tdf`KLXp7^#T}R4#6$mV=AnXv1h_7wWFlAT(IqErOLP6juU3Gyx?j{ zp7TGsqLEEJqVwmt9Oo5yqMAq|yrxHY$EjUfCb-`8w40cLl?v+|%Ie*O)gJ1eI12pr-JsxLq)jAzwkCjs2nLMtW0?xMoZDd`#30xMQrhq|jIC%7ld z54FB6p&}ch^#oeC7)(4Lv^M@Zj_GTpX8SB3IuBN7m=(rQNDwKQ-@DN+wC=wSsg*Zh zkmsIT)f`t;AZnC#|6l*ev8v*D`0(Mqvz^6nZFAiFlWv=gnW8LC%qAN>VQoUk>X{U} zrSBPU#m+t}&_H?tJI6pj;VhRCK3~GQGS~e|sz;X(n-fUaq>6hUbJmf>j`g@X9!2K; z3Xbh4Bj5uy{BXa*OP0Au-dVi$0w=1MwC^#v}!(L6T|aEmX+o{a@=Fz zA=naX>t)f#tot%aj~=ZR)rfV+(dK6A{EZ|uEv!UT9*N50dfdsHj9& zc89A>E>KGpH-en+e{i5A%1k38-xp?RXxM{PFHcs;mUAvj6J>~h<9@(OQV79v!X18q zmJG9CEXBfLCpdQPrv9R&QWn*ze&eLtw_d@elp?*P95gaw_xARtlp^z~&v!W`ttmA} zrfD@v;dRxqrXv)JZyAN6bYaMpKIu}YmaJvuI)Co&XuX;IV)2tB^bzC4Y6H7CHUVMh zZT2I;nu)m|hlj%r%`YaES*Nuq@!;y+=7MXGfl_o?skJosglOqS;(iS~d2^DWwbRbk zh$4;mO-^3T$vWR-e85;y&~3E4$|&DC>FG|)6_I;PvaA-Gd;PGX?0{23KzMa|5Ldn^ zb5tC%&!qLcm?ql?;2y=#a|3Fs+2+ou&C z?Y(mq_w88!llCRJoMXt6%cG?Cd>)#bn(9Fn?+@DG-ht8t66=C=Z5pnl!XldyVB0;^sJYhy!PJC)eTI@CZ;}jDRXVPK(#u)`1#M@P6y|@IX8zSww4;@hmIefgZp40qmuHxi%=F9*oH8aT@wAw7 z@7e`U7x_-#YX=A{^g)*L==TW3917gQ#kRG7pj^H z%@Nw28`qC0DaOo1=h-Lp^p(knhr>6MtHJXKGA$y{|J#1F2Lfv{_ReohkW*+8!Bh7C1jK%uEln_98gjEDK;3oh96D4^qZWxOX* zsBeLi@B8nnT+4g!v6zU9>rJ2EbJaPIo+hH;dVv`_ z9P%zrI6|~kbbr4(!IK|@%(kR-+j5e-b9rUFY-WzK&mFlA!tgt>fTf0$OaOn{xpwr_ zgiBJX%K+*T7d2$6P?XW-N7)80bXX`Eng#gg=P0aQgC_m zrcGT81`G5K5ZP?I!&fd`wR)Yox%njO_zZSW_TD&fJjWz5I$D3i2xceW);xy}fB4l{ zYew-_H#lZNubDB!fEr`KGl=M93b(Ef*=cNihu#XnO=fWW&SJV_2^y@T!WB1udigdt zdtZ*ILaR9eA?T@*92h$`(uj>xiY4g@1P3FzWdR*%rq)9iZ%AyT?RJ@r{J!{XVIFSo z>f07x#ut8qyDi1ycoi)Kgux^di23#F*C!W-%?te`m6cb-QXQ_EXV&c5P~@lV@{tm8 zlP($m7K4fMVil1q9$a7+7kSl?y3mRu`$5}@CHKRO7QP{^KV`2iO_uNwQ^vaVA^y8&e zzVQ-KpB~X<+2J|K2;fdQun36}it%S?WWL)bqPUzBqfZ0lDj0KgFv4IPZ3q!72r@pS zkY@+sbh&a1n|thoCr*uhZk~4qTO}=16M_Ll)9HWY?=mpBwS1$MAKh9~JA@a%>{izo zSbzGN@cdOIUWY6STy@#S{a&5mr&Knl8j7k9$85B&M1_bd=+0~50~j!`vCSdd#k~mzQguJC}v;prmZ!40J@9y)xt{@PLA$;{^=ULrrIBSCH0NQU?E(cX9Mb8oR!nSOSF|6nyq#>Cf~?Tg)N~xv z84P5p^m%GgQkK{XPo4s$rdcTV;X^6tFl?ZQAt8rXoH;#~Zc(xlZ5Zqi-bXN{1~=E# z)Htp+0bZk@qqj<$9X>oS-C(h9)LSCIncH4~*Vb_nbIhg4lXVa4p!|0aH9y|-+d)*r z|E2*Y-1qXzi@k+yB3CICw)47LJN5aRT3W1H(u|cr31?^4HzY-9YG^q1zU0$4FtEb% zG+7}wdt6c7=JzGNA3t_ubRa0i6dc;O1k^Pm*ZV%$AqdF4E7QCP{SFdjEGELX4V7y0 zs5PyM{DO(dOw4uPJ}#B>pY;`&2?+&3QldCZ9IK+2 z+Pj0Z@@&1|qN{=hC1qt7p;@@IQF@l{{{7X6)Y$ZvR`khOj!8O~ZjI}zAo|dzJH)n& zYTCt)awt-WUKQ7nmZFpOz<4b5nA$ky`50f=+i%_a#8N(}?1QWlS6Cdoqt(i^Hv44= zenGfBG}y&KRqVq2jW6e3QjaYhD%j&WQpTo{+;|<|4eshXUO0&4O_mfB9IA^|JYZVn zade=w#DY^q>EMg;cDuyie$&H5x8rn9d%@)#lXRe>Y=zi2R$wb6R8$Ha2S9aomw~|x zz66VbguHzE&X5V3OSsaxZa>5+W>dlgY*k|I7)0J04DDA*wYDw$R4}X+><{YKG&D3+ zl1iD15c-pDhwKOkmpsfRZlVx9nuL zG469`Mqg4fx=`0=T5PwZ#tz2YA<7eh91_t^*{Z^yD|9@AHZX(qOOJN`otZ|`;YH}> z#x0`sc9l$Ul?3Y2pLlny=Tm-d!uAbPy8LiLaMy?yDWdbo(@WD0NqektVdagDM?yrm z8AL}%H-#S6*AGOCqwAnh0s%h?XMpYGw9zc#nMpdyNhfEghJ|0;lFaaO#GWrdUi%Si zf{PAy6x?xH?95GGetg=sv9+saE+0AtLD7*zczO;&_lCr@zTF2$XUJT}PN?bNv4&#etmy0{4NuCkxPGoSNH@6#tVB!; zAj-Vn9WNnWJk{0JVYm>;b)>f^E+?Slj)O<819iUg_9Anh9kb=_OLaA9PFXykBkUVX zCeJyE+O?#W5qANmc{J29VM34roX9Wtl|$nO>f@O|?rsxAh*xbJe&I`IN4)@-#$Wjx zRgmens;xCp;)KR6VV}Hr&rVs`x$MM9W>&Qpmz8ydiAS@)m5Fl_S@Vr*j zN16R`futn1jSZvs)eXG>%{L^=q>vJM2Gj@x;Q7Cy8CopVyIXR`^TZbrLo|XbNi$J< zfR-;XH8H$fM~59cwQ^ELz6~_>(y?IeuiX(DJ;<;qS5V@K=}>YWfVo@S-d+ww6l~Dp zSg-LD!lV~jx_hBz1uKEhBK7Hz{r`U4gn$6HO`A5oMWt-d*<+hl{7223j{lccoya z#H?R~lLvAi#bfI!`8ic`lRNe3bJ}K>2;nJ!Y;q(lcWXttnamoYE74jAbV4%I54?}4 zto;1^5qIx$=|&M@95NotYP(TINwII}1??N&P0oN$|9RfGGllDRQRspuqfC&W2#<{P(x-jI(it;NzA+ddDGaEcU=%R6|TnxnB=H)?e%A?@!V^1Z`Ec>=6YfLv4Em9)mF0u|^mbB#~hg^W;TcX)Wf?fJ17~ zGIjLyuHt>Ty@$WLSQ4L8I|s-L6~IvQp}8U1bPI$9E3%^(bJ>wr)2*1+2u-3J54A8Y zJLHAG=TFQ}5I&7B@^w!)3kgB3-mi0H0bcrL_JB!c&d0%*ulg(F{{Q>X)K3BZHW`kE SzHJoz)7`aSD?{V>)qestHpycE literal 0 HcmV?d00001 diff --git a/doc/org.eclipse.cdt.doc.isv/guide/dsf/intro/timers_vm_1.dia b/doc/org.eclipse.cdt.doc.isv/guide/dsf/intro/timers_vm_1.dia new file mode 100644 index 0000000000000000000000000000000000000000..70e7ddf2737d39a7757fe4298412244d237c26f6 GIT binary patch literal 1296 zcmV+r1@HPFiwFP!000021MON%bK5o$zWY~j=&J(}Ai+l*Ig@s#(?il8>hzF{1`=Tk z4M}J~NVYEh?FApQ#iu0FQX7|?v1bS__9K>y@7pEy;p0;jY8xsN#^b3DfuUZxV)N zqKqc`-Ib>8JMf7l=~yvJq!etvmQ;&LM5p?kEWQVVuVY`&tqQvZ54q4bB%JEk580tl z3OAFIpAO$E641Gz`+6p2gA_5lIaa3%=JP-)D2q6^=?75!dSPtC9agqfIRf=^jYrrZVn3Vj${XdW}Ic5R*@bhjvb>{|x`Q010 zWYOZ~k@<2td+G|80TAvVu^eD~K7b8N*gT|7YhbY){KR+ex3A;A`iwFTf0;foCvtDC zBH_CfQ+&Ee1Z(EgjHFR0t@!Ui>M^}flT+=LiY1cLmJH% zT*UP<9>>X$T){?SdDcivyaQk^z0!U}+#$Sv2Qz_SshS3k= zfra4_5ao*ZGzdwbfT74=vpGTDFrD8$*2BG!wr>eLH3#Q^gF0!Sfl#7M)|OYftI~dw zMEFX?zp>yO2|g>f+*5K`D7iUY$+IF=^~LbKQtmn#jFGnD2EYb%l?+11?x`MJ$mJ|s z$LXtUwR3^tb(s~EaHQFg@+e&$7p%OMyS8!Vn$dBsXFE^Uk_*0;Wsy4cUHUY#@MlB_ z{@A`|ga*2vg)|Pjil_2d)_xcV>a*h^7Ceq=MmtHZ#@JoamWnD0U6wq1Ij6l`o$7Wi z6&mKkVlFDrh4n9sl^c3ZGP8z~S@FW$1m;=$5)7c5!(^WXp>3Hr7+C1MT-Lm}Ryzxr z))AC=Wc)-^YAV7zsBYI-%WN)?HXVn*ln*vN%ru< z3TL%~apt-TX9bRJ;aeLx5T%gN87XO`q^>+1Dd}IOr2IVl+34L>>35}fSN{M=Y06Q7 GG5`RSYJq$J literal 0 HcmV?d00001 diff --git a/doc/org.eclipse.cdt.doc.isv/guide/dsf/intro/timers_vm_2.dia b/doc/org.eclipse.cdt.doc.isv/guide/dsf/intro/timers_vm_2.dia new file mode 100644 index 0000000000000000000000000000000000000000..b0460e43c290e7a0a4682628da73d898b65bfe95 GIT binary patch literal 1295 zcmV+q1@QVGiwFP!000021MON%bK5o$zWY~j=&J(}B*8}hzF{1`=Tk z4M=D}NVYEh?FApQ#iu0FQX7|?v1bS__9K>y@7pEy;p0=pv<(pnDg3YO1XMJnLIu|0=7-C!<3ihDHr1~mvO}K~ zZYCu^9llpMBy&OV_jcEYI()y6>lG1Ix6z6xRGG-_s%FySC;h)?Q&=U+C=TzgKiSv$ zEfoVVzM5{d6+}i@gfy<>sMxSP5GL?U(^SDgzULdR?ZRD5PKTRc7LHvOPFxm_CbJb6 zQeZ0UkaNx%!Euf%#hUcTNfwx?6zf{nfK@zDDfxl>f50p`W&!!|^KLtJ=Z1m?-5a-L z(cI#POIl%UO02`XnIU`MLps^hM#CPtuuj9V@j4}>?nLaQla&N67 z5qJaT0AWav&o^TSM81sOg>bR>e`eiMTNCct@v|3nZPp9 z4Ft$R)d`+WMLxJel1IW9vfDL;BMnq!$K&l6HA^UkJj6|~q z7jeA~dCjP0Fd1LfBe&x!2bcyj_6|4zYe{IhlTO91tha{=dVTmsg#RG!{`U` zKp8s%qFnNx1|i9lJd{)wo3^4LD?3Yel?wG<&@faR`Oh!E@qn~cs~zOt79}3bCfIab zd%zK8TXlChPIN7i+mwYAiR4p%C2T_^UEqDPJpB%8Io2q^o>4yRVW4GtYuc;`*eUy% zz;T8_l_l@UMDGKn%E~Z~Nb~a~@j7a#1-hz%CP6!qLt-hmvsAEnT-_(Tyl%|oQ$PZK zZUpi~<*Q-jgSlAuQ*Ss_y=~Psp&JA&cuw`Uf$OFyrh{&w0o)rGK<5Wm@4-|A(~O9ID-J)#o|3~t$*ti^o)xL8D~9Kla>vVHjJyv=2K1B+Lf7f39$d)fEL+Fv zt82CMfZ=zU6_jwK*^u%mT^$#+yp_AQapjuPajoa8c)XTe@U<+9)S>Uvr;$Z4!$R=K z_BEU4K-V)y;;^fDDt~3|hjE}jJ04=e&s=v04{@P=Cb>=t*f&b8p>i`_Kv^>-dQWM9g5|nTOZg?cH*0T z6XueA@Xt%ig8y9uj2t^VT-UM<%Y@ds8{oz~d<*@rak>6?ligCg23QAn+v`x0GrX`u zS*>84xvoN4f#cZd)&VXwQ%LBJlr&OOS00X(^siDe*j~nLWqGf F005%nhd}@U literal 0 HcmV?d00001 diff --git a/doc/org.eclipse.cdt.doc.isv/guide/dsf/intro/vm_cache.dia b/doc/org.eclipse.cdt.doc.isv/guide/dsf/intro/vm_cache.dia new file mode 100644 index 0000000000000000000000000000000000000000..c4cba6d5c9061cfe18684be83a52955205117bcd GIT binary patch literal 2528 zcmV<62_NP@$`1^`)_}}p@SdpuD%aK_MP~drfhDBZ^W7WbUT>k`Qp3b@bU2xM9&$^lN3bZ z5@dY%Ulv7dC<+Y+cUPA6x`Ke^OdczbvOG`2@iOOD%;x-dFlLi)(==Je!JsHrmYXC| zl3FVk-3~rIsMlavRx{kHXHVS=Hs#}#vv18++v4T>ZK_`Ibhq01BFREgB!6C1iZs+C zf4?eImdZq-czXBgv-7DqrSib0uDTO#G?LF*It}Bh9nm*Y(GdtxgplYA*QdTs90J#U za=N+kWz9vGHJ4u2T$tT2k~B|Qm{(1XlO*CSF0AJ1lDD^$O;{vcY+tiFwBjMm^W?z! zKd>k}rUAv_m(h0W$epHPuz%ogm1wBtF%0tA{nNhgvH^12_gG=zS)YMbn1$nr*R>&x z^Uha%UH$WUs^7gv3d1*F@8}anZH<#eK)K7^(o8;kY{pnSoB;$YaNnSSgpE-*ImIl_1^<(lh z*f0^nL&D&8@Tl?gPg^wuJIaVc_r11WHKJD>_8P1TRbyS1m{{8>DWcwxZ< zzFQb^N6-WK`i6)j?F{mW&+jKm8dr(Jx!R;mC@`tEYYim+7Lc4=`;3RvS>9YdwA-G1 zHcKAwYZ&6;>92l}4mTdznQxg^FZs4; zvh8*z9>OR(!o;@ZdsEcd*H>Bo9PwQPJYLSr3sae}YuWTEW*007wt2cPXUO?eerVwD zlxeykO1*BC+Y!1y3C3Z4O#&V@2;M#Xu*uPqIIlA)k6RCH9!AgN%vhWaEOiwX2`Rq% zHy*8c9!}Wn%Xj)2R4}3TYSEpm<#aQ;J@wRrsRNJ=uWuaSP>Q=*+a}IO!bKZHLYz+H zIj_H@n*j%pv{FlpPXw|kT-?u+H2jZnC>HHSnH_0+vKhfaq&sRek}bzl|MNj>v^s`b z9c2HgE3=}C=s;I1vl2!M8-iK6lK(>l9IXPNYqO4_Kb~It)2{Auk_J3Ip8i0`w;}W( z>W$oZH70(Ob7@s>;LdUb3Ey#aN(~5X;wdWtyOfN?fbbEf;s6Go)Anjyl7D<*lNrA( z_4u5I0?RBf2^56r_w$1M9t9F z=D%WMssx(a8*?8D)izkaH1c(7j>Da09G4G}1QuXz0P(FNT}~nqC<;&}5)#pEDY0de6}GXE^v9u=il~x>J`zrIaw22+V z$P6QE@Iph!dZ-j(=PY=c;^oT3bgdzMd3WE&MB4GlNZ6#lr_$k}gL(i-e_09F`*67A zdX9P#f*l(ph%b?DSn)*@$?vU9gz#K<_Vz8fL@GSW|uybOst?mcw40_wZQ6_-xj)cUL?;#*Mb9Xwm z>Fv{YoDZ6|)5uQb<-Si@5H7Qe<_tXU z$RBxX5`y&KZd$ve=bD6|UM2)V-KoR-MT>K$rA0_@2C=|fs#J?i_zuPo)IBPMdTYnnmVw8)1Ce=B=y42@7wTlCwgGnJ@95nI(c0E)q3&4o>VEOky_`jDt z%QNfh_eH>RZlbcf302iA4VUU~NVap@vz&_c@*2OuBNdA+vUZg0(;bc7X;>XsagdAA znToAfY8y&pD9yX2G^9JFDd@e{yUPwhUMV9yA~+2x7K=gPl0HzHg2-4`Uqt;8&v{@t zjebs3bxXr)`j`OIJrx;(QV(gxC?EI)7DQU5z+m7aTJ8?h3zYgI25inVi&={_d3wHj z5dLi>*o6{fYJJoIR)1w!_e|namb;o0_eA~5id;0IGGhuk=BiZ{T31ihHn2JMzdkoE%fn8>Ae1@GKq>T3g);oL4 z^kAY45iCr}v4K!w*@j*p78$PR?<5K*&n8h=|0?LUXF?a7nY*8R48LinFmlcWj(Qmb z0ucevd_*v-I0b_3*SMxq`@>S?^de@H zW)rk}4?!#EZT4A4oztTcEN<@Tef9EkN^PIo!syM literal 0 HcmV?d00001 diff --git a/doc/org.eclipse.cdt.doc.isv/guide/dsf/intro/vm_cache.png b/doc/org.eclipse.cdt.doc.isv/guide/dsf/intro/vm_cache.png new file mode 100644 index 0000000000000000000000000000000000000000..090f52a97cc22480de4a985f7494070142c4d124 GIT binary patch literal 19003 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 EFLz!yX8-^I literal 0 HcmV?d00001 diff --git a/doc/org.eclipse.cdt.doc.isv/guide/dsf/intro/vm_design.dia b/doc/org.eclipse.cdt.doc.isv/guide/dsf/intro/vm_design.dia new file mode 100644 index 0000000000000000000000000000000000000000..af4159fe02c378500d505de81bc66750af146309 GIT binary patch literal 4062 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 literal 0 HcmV?d00001 diff --git a/doc/org.eclipse.cdt.doc.isv/guide/dsf/intro/vm_design.png b/doc/org.eclipse.cdt.doc.isv/guide/dsf/intro/vm_design.png new file mode 100644 index 0000000000000000000000000000000000000000..6154b25712c4e93625313211839de4d49eabf172 GIT binary patch literal 27506 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 literal 0 HcmV?d00001 diff --git a/doc/org.eclipse.cdt.doc.isv/guide/dsf/intro/vm_proxy.dia b/doc/org.eclipse.cdt.doc.isv/guide/dsf/intro/vm_proxy.dia new file mode 100644 index 0000000000000000000000000000000000000000..31f79264deae374ad06f83fe231aba4c3dfa710d GIT binary patch literal 2745 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 literal 0 HcmV?d00001 diff --git a/doc/org.eclipse.cdt.doc.isv/guide/dsf/intro/vm_proxy.png b/doc/org.eclipse.cdt.doc.isv/guide/dsf/intro/vm_proxy.png new file mode 100644 index 0000000000000000000000000000000000000000..b731898a21c94328df128ed9851c1aed53784e1a GIT binary patch literal 18449 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 Fe*vvZAH)Cv literal 0 HcmV?d00001 diff --git a/doc/org.eclipse.cdt.doc.isv/guide/dsf/intro/vm_sychronized_events.dia b/doc/org.eclipse.cdt.doc.isv/guide/dsf/intro/vm_sychronized_events.dia new file mode 100644 index 0000000000000000000000000000000000000000..984a90a7b4c5556cdad973ec6d4d5fd715e5c34f GIT binary patch literal 2005 zcmV;`2P*gy@4F%bAm5Yxeb zBnZerG#d18dYZN?z$2Wy{C{pe!qPzKCL9G~w&TL6ZVG@^`1rrd2E& zh0~i?x5lgVkv12$vhp6Z5QNVOoBH7)ju@LD9S8&*gpe2v({)_kHf;DfCYQsFn}rLS zg=5Xa`SEBGG0uq34Ht=L?2iMQ*9Sl3 zDFUo6eqE3F>^n-l`u6sUI+02%oHjg%n$)~}+L$hVkH#mIZNE){q}is~;MAyR+nqZw z>7~pho!k6KQ0^{ng{y&X`2wf9Qm7I{THA&?C&#UTg28hyIqE z2xj7Y!~Pe2f3ULM6T*alJQ%G-v{fktZ1W14;x{`8hmNEOVm!_wFwqARP6N6{NkFcl z4V)|F09+1@26R4}L@Yey4s~`afk`~dVaFc5NfpsE>Q869ST+JBrH>=#QFiLlbpZAB zfQG9>XhBpCE}ljAqa2QUdIHXO3WKc$oM95*=mX!e3AnKdSlK2_F;QG0Tctr@VA>YC zLKd(Lh_0apT!e*<*Z`YONn|d^ZUf1r(+z-~n{w?!K(AQ$VmabH|!SvpbG+0sYPspyvzx)vn>@wGQ9DV;Vs)6n+ z<1vK<2<=*G8L<7C`$*WQ>(zh+U!I0@n*T~^xSZ!unq#CUZ(hF4JXXmgWesHeC};Y> zNfd^{n1#!U4{Yu6FWO8vsf~j2D4D0V?O%s|=a6t@gkIIsE=l8R>lh*Z)8 z2_sQ-+q}lQBnT!jkg1X)RPWh29Kir8Spo#8qY0&H0#-*?F~ktL4=1K|5p#>tQ17ZIn> z8xh8$`yxY{H(a-KD+pzs%AqVytlv_c_C~^;;l#ON zd@YmRSSGeWHYQ>G#Br=?8OdSW*w8V8Sa}?qr;=S5 zTWc7L>rJ%fC!yV%lF)7=->cp2_iFLe%=c=y`(FKG%i8pMve2&b57yX`bG7^PgS7?4 zOpf&yey|1rbb088^3ZPg$-1q1X!j`-H4wHaQ)4@uM0BF>ZA#R*r}NOL+U)W&6E!g> zjH^o3>QbOczgmQ_=nU-Wgzi#EO(-y{nGBL*2o*z zv(i>AxiW!{9VFMBLsZP%L-JJ-y3d~$eid35_qu9_MyefhHL~M` z?W=Zxm6sLCT|};+YTtx`k)p`Wdvu|CNb&AH6?=6~8VQ4L`<|vUFzE{)G2;2lxUtBk zh!I#d?G6Ohnw%g2B4!aJ&439ZFq3LXnOSLG7%e z5Ntqg5k-+hth~?#>2iIBQVQY#WXqZ|!9Sd9=>-u^b`gYj8^WW+8)_fr3m50T4+18j zoOYp-^1`yLW_JGYIfqHdlg&;|#LZNm%1QIhXg}X9a2@sO=1lJjn;9pT-CfoUbvfrQ z=ltBumEa}iN?A76Si;(^p_o;gBv!lEj7(UksUSy$rw(x4#P{f??zDxE{YfX(Us10& n=ye3`sdCwQ%G!~%Cnag=d9sWBO>b|T`qSeM@e literal 0 HcmV?d00001 diff --git a/doc/org.eclipse.cdt.doc.isv/guide/dsf/intro/vm_sychronized_events.png b/doc/org.eclipse.cdt.doc.isv/guide/dsf/intro/vm_sychronized_events.png new file mode 100644 index 0000000000000000000000000000000000000000..d8c79c3ec4a92b1b7c97a667c3f3ae4caf516fab GIT binary patch literal 17727 zcmb8X2|Sf++c&&QA!AfRp-h!BQ<5n&Ns>xJvC5dKkcpYL+KOKb_=xZ@Ea5IodBxW6Lbwd(q zjV=DArKiPb(!N}%!XLDjN3_&QtHeJ~%G09o89G;;qZ)LbYqqgTh;{iqE+dh4kaW}! z8+kmM{CdsQ=;SKhOryj^SDxJ4q1!u3ZZLjlw-vr=sr$gz#PQ+T*r#Vqlnm3(K5E>*pY+I9TQnLRBbb(S4nT{R62 zEKi?44Hp$oH4Le)R^7aLvr4MrhCyLrVUMwlw3)H2T+4}$dByHTh*&lDHFyC@wW`15HZok70_7Elx0k*z{$*vOb-%`XiFD`mK zQu5&@eJXM|yYI~Nb)VCY1%-r!R9Rl2$SP_kq==iAT*s9SOniAEap1t46rHHN^HpmX zmzKEY3*^npJ-67m=hWqxy)rO2zw@o!i#*&AKhpLrE>Vq4k!912Pq{kLapTJi>*VZg zrdxEZRBG6^rk7W&)q+~jpUyR}!>hVXbVy>M27Wdwzqz;P1QQPjIeUXdXJvVh->Q#Z zy!;lC`waGN*@snCRipGik$T6+Lu+f*)ipE{lakivRxF8}dS-HQB#)DP^!o8TDalDm zc^BTXcXV|0b~#nneM(eg=863FXK^5$Q`(B@c4%n6U8~4G^RkXlJ0+=$^ z;$<^yv$L}|^6`bQ{9WEAFIax)+N_|en%Z#_liS2Mu(7cPvV=%lrBFn4R{#F$p{J+6 zZYuUBQ7uT~@^@{upcWez9(n(!WUZR2sx`xn30hr64$M64I%X1H%(%dYZT9ESAJlD5obubLF%eR+5w4b&{DDkdH^t0Kd;k3YDcav3e)~4V z+(;7*R!YOrko~dmlC4@$EvK}UrgY@WObzQAQd3jYQQ^bU(b39=UeeOi-V0x>N!MAG z7FGCgd$C-}oH}VKDX)8a_^PU^HeCX=bI#Sun(zxe%RIr`G+~oWFdp$?37bd=tuA9AbA5B%J8vnG| ztm8TTtvv7f^Xl~D$=p8YzJ2?qedGuYDJ36UNKd8m<;$1PTUpUYXseH~L zzvK3g<0RV@I2CkyUS6Ri^$ra!7%x~mI^KEmWC!-R#p~;9BqSwoBqs~J|L`H;LXMFL z-;sSMU%q-pqY`#*BPIVqeXmYwdOAJnyuJN$#{w5G@0~4sPtl*2W#LoW9xZ+@&@iL6 z$f0Yj+&tKLpQfW@j=AOY7cXc?n>jef{`CZB7N?|BZ>c7do~#N!o6KgMzxQUQug2oy zMWO7RV)scC3ZF9Xn{d9M++6VrVlzw%C@5@y{P^+iy?edBd$dlUnPa;{N%6|3+08e3vzWkp+8w>iE2O{ObF(rO>mt}Z#~%Sg*~Pi<}Qsu14Da)xr=$%(bsFFL4Q z7~ggL_;F5o*WLR>MI|qFNbEaX#Dvdqcf~9F@nU1w^;X@Ah>8-p=lARDRg}D-hYz{d zu3bAbo?E$AC4OATZ>EZlsBmqC>D!ts_OD;Rp0slHnjD$3M)Ph;{G&%C(y!^B+$&vC zyN>b8$QUJGYDqu7I2e6S=6%ItKcnETT?3QFJ=FfX(16)|@|*t8$CNeBoZ(uTUR_~5 zk*2@?x_o=o!rWXfpWmNEw}+nt3v#hbitSo68yas&w%xpY!=WSZ2Fbw4$SA%mHa0fW zFr#I6R(kplY}YdTii$$I4z882VHq|*ERn)+Jex2mK`;aszI>sH(; z4Y6KF1ldWQ?MaT>%bn@Nt*@?5n-3RZ-{SO@I`vfK6%=GkUQDcieS^kjZsd5_a{;Y8 zy%}kbn|Ghs)${zhR7pt*{h(pSW?~DX;07{pld!C%C#C=LZ0>Bsi+Y&_)4#dHa|^fZ z9K=E8q@nE4IeX@e#oN0(-+uhKIWkLZx?)-Eo7c3WprGKBva;%bS$u_edyyu>5{9{yeMN9 z78XrUa0^xqPohLu3sGp+s=Tmn%(>F#@4s&BTlt}fv9X5Xyo$Sb?mV2#OEN3-i17CD z*@L}6R$46X@fA>3R+f^K+=(Z)w9w@g61@A+p*R$NRVyp2mU6GFr5-<$H2qFqw6co4 ze}4;pZMev6n_HiK<^?^;=V$!^H^&d0_Gi@9JxjjM3y6q|YoTVMwBC(~xY73P>^Aw7 zH$x5aheld5Hf`U&-TCLx(U`b6v@~iAo8+P^-OTx%t5rAG1EADJ3LRnMX&}#|1}7C1 zY<4Q2=h$UKHD=b7jHJEZ-*372`*&Z0-^yXM9$IGZ3nO>A&CsIIhd(_%y3O?E<@IfC zZU5?u7bup3%%uJM_jlx3&;-*Hr_kNKC{fMM=**cj9=`{p534WEeLi;Zur#$mDi+_G ztQAg0>2*PIr))oHIH2TTuXFr3n`RhyfY-07zQT6%&vG;YlGIG8*in|k$Vhf3UIorH z{rGBZlOHv#%Jk!2GIW<;ZpUV+4cWA7rgqaY`e7|;YRrC3*+^QFy}kW*C2!6(Yu3p5 z{*im^IkxA*g$tbW`^w+Gef#>vF~xvQyYzSL*g?wA&wuoUi(DvGD#)x*A~n;IPxe?E zP5aS)&My%?x8sF%cw&vGAoi?gu6g<0$jF;%3BKIeZksrwEh&;_6e%5=>$h&v^!N7@ z&Hc%fC!|fndatD$6>gyeY?Cjb{XGz_JcC;wKmpJ^e0a^bYr{O~VCcqGpAu0wNy%|h zZ9{XTpJSx0SsET4q#@C>uuvC&46t!?-v*@Mlq-#G{`{G3>(-#JudWV!e-}l%j?Un{ z@_U$`iAl!Um6HE7MMu!Kw~AjKcVk@cDXafTZs)yXwAYG?3Y)GX(MR#|7S`5uCr*5R z!x3$mp^j!bJ3H$<-X>~V;mx)B=O^oRI>r?`I=X+=CDi`kZRV7GT6-y-(#(PanTc=Z z+gw~+*|*TW{IXJAk@Hs&<<92N4oc8v>L%Xm|pV3g}ghJdvh85!Egj%ndx z0&8vS)^c%?d)l7mB2K3QvVadAf1og!I&&HLxtuv!#)+@W7e z-E5Ed&!cZIND&Zrygj#_jH16_6Z=Pd>G;)V27Pi1&YieQ25XIg!IeL0VrC!aJ0+56_(&jq1OV37l)<|_+@?D?DJoHOkC zfWy_WY0ul)Wi}-gO}5ULe*18PhOS_Wyt?u?uekUP_7dON3o=EK-?9Lhc&$p-sb?TG zByLvzq|wi5pKov38ysx&dv;KUOl9Kd2U<-A?$*`Ue+u@%=(F}oO%Us6Ap3V!Rfm&J zx6ZG~yH9B2T{pdVo5cC%EwHGe71_J@^N3d0!pUD*ljS3wLE+)7JO?lP-@%!;pP=MZ zt9s;{AE#u!^7z63vZTbo*H;ODe8OS}2W#)+h%(+M9HEW%)9&CUoji4_Z6r5G@R?!8 zNd1AHlya|M41=W$7It>JXkfBSO+`Mff9<@)@hL|~eTIOW@87?d(~-6!DSSPC3~gNl z6SSEs+VzU14qX_NP2Ur_Mv z+c))uv)uRySnxpf>=T3CGE3>A!e-MNr{k~+0+Nz!IyyS@i}yImp4KBh?9?YppLx{P zgIM{5Nv_}DvL#MnmA_9;nvu_%H4cA#sCMeqDHE;KlOI6S^sWqj%y8p-_wHRwvKA|Q zh&uORXHjlN<=C`FyVAnc*CRzmMKZR{g1p2{h`LYS$xQl(+hm&*GK6jw-|s3%kreJF z5Y>N&PgI@Gw*;1nmv@tL<)lc`^a(nA_g(pI?H>@pCC@~Sx#1kS|FZJmxlL$h%sjN@ zk1BFH+wzl=`2YMKPT*AV$V*hSpm5RevK4r6@1Fnb*D5%=obsFh`9VtszIx69L5Eu6 z6(5INWe3>jA4qawaO^Iz7}>~4rlkt}H$dmOCNsyr{y@sbY}-D;X8}8>In2Apso(g> z9~WnCsPS;yKXi!Dz94gTYX1W{?#hQn3%BZKAu`M+_{9!%lf6Wvw3fBS@l&b3;B#nwLdogL5ZtZ z!fxb$6)h`L_x;hYarw%XtSic;Q?q7WR~-I&czK<;bZK85m3leSO8(?3i{#(C+JcW# zLMY>oeWm8&XNxEklam`%$`_Ky#d-=AowSuHC+l=dU9<(+`wxzKW==ZxWu4BY=2_J2 z;0TrNY;iAkMm?jQ^qU`RU2ODQxdlZ4geSM*Z~FA?*NvS^w(U7)x0Wp^qpS&E6K@s0 zI5bor7la0O{#)5K)i2nU1Rsxyjcpsh6v8EK_4>nytSakMda*JaXlR*UpFZbvGIvry zK;TDzsJJC45Oe1-x4oxxYD2{=~sfIzCD%+`%6f)EUesprTIC%DVME zEfeSUmX;Rot}#zu9-c6C;b+#TjKs5+JU>4@3jCm9rGAniV33^HMflRw{S-u^S% z+;c-fKmg|<_kCq$Wp=e6IqgjqWGvmV!Sf0W>u~YRJPc$}mhhA_@xk=?PLI*lXeJ&8 z>5UG4zgypcy7i8ZZn&>|GPx4{Z^yxdT)_XqAt6oa;UOV6Dl047l(O_SV&meH(V^wM z7ADl{(y~^AGVFsDy%tnZ5P{QkuAJ3xKDzmw=v&@2g4a5g{h*bSmfqIV(AdaoZf+hN z9^StDn6B&mgwI-nrE1SKBau>E3OX6iK6 z9a~LZUA-4T1UO8`(M{8Qw_a=9tcEKzJZ?pb=bB8pK{C&G4aS39De5s z010>zr1=GPL(;x&U!NPnNBe6xkX{49e1eMPIqzU)6^IY|n^TXdKGYVhrsMOz?)bHI z4GDXYjh%fhBO{}~zyA(#aaL0A~s&bAdg3HV6p`6;^2JH+w!uf9|gE*>*a|v}%65 zeVanR4Ul{C@P;aVq;NJb(UtW;nsGE&c2ZD`o~pMoEWGnSExZM%GLxaRigj zRr=1%%&1@`*|u#vyBz0jy6fULX`e^I(|vu14>)#zGP#N>eA&fiCkTnW=Ulo0%XK_0 z4V2-z(X@nSRA=Y~w^3MSiXO_j@T0^uRroB+yl*Wqi)9f#EjCu_A1_&m_nc~=8YRw)YY*OQ?3j*jFx$1j#Y^6 z+n0{ZbnUBNALjW`Pq@q-SM$}xy`K$6v6&pR;#6N0BgT6l!?;Rz+KzKA4`1i;LT>udi=oh`K?BQT5M9kG6+7 zv^Y3@E6Z@}!IcnX9!SGJEWe^l@&OL>)Yn(`_k@InEx`gwBxo%J)58-9c=k*b&)RM> z7fhSLKnHrfX$~DaP-Vui+59$%X`y+zf zL$o6BuaVJa)W;`o3D3?J2bzin-MXa~Hk}HYW~%!ojkNR&&o{FWGzE6=)*cY~R&|RG z+gpF!mGSkJW>0C0>UAFzl=(oHZ|MowK&BLJaU1!x2K`K1TU!NePPVhv`tSz`!lFAQtGIssd}W#1H4%AEJ(t>uzrWO@)A1cH?ZZqs6;OA=KArSC`QP&O@Z* zren%t0GD{I=ryLuXLb&(Rqpb4dJz$kJWz0^ZTt1o8ChB10Oh#~zlHc_fi`2Xd$X)B z8}oltjy_fTt;&-RI`@*E9!tnMzTcsSRuSlzSjP0vlsLpD|`U}I^x}X_dg3{ zPm5`SSXfx@ei&RDYuNE%-s>Q-T1MWgPwAaoY3F`MPU?sLp>C%Az@^@Y?ui zYP+Clgtq_LloxN_5bSfO1eJS3b(^OY%S5&42tt2YIeZi?6D?dpm!`+fRvk z!Z-14g*c)em421f@t{#Phrdhngci)!nq}5XXa5j4d@2aqGzm0r{#%8o>a*CpSFT)X zLK*Y?rJ-J}mLNBJfCoZg7UY<9N?@kkgWwSw<89BHO5N;hsnoTL=Vr6yms%Hcp+@4w zuOaECvMVVmY3u1_%idZ3HC^-N3)jJe2T9jaBIFJo8i1G&=};BUNALIV{_r0d9Mt*Q z%>Dkl8J{_`Q%cIvn)1;jMEh7}QtRIQAF!Vpm>X zo)11ldL8Ff5rSftc(gV5WNZ7_@QJ5-RXFJ3Yyz6+q4_VO7rHFXjdCyN+zyriaVmNB ziVO~AoNu`vRVnCb-2OzckHtSf8~b{DucNi`qPnT_;h+Qt1<}#6@>2f%@qQ+m8OABO zmbiIcT?Xt^^XbM>SOT*B)}E@Kc*xrP5hGcL+DL!C9N?WlEhsM^`wgTybLl=?XdSjO z2n|K==u!KErUjF~f1q5+Kr=Jky}1P*4irLH=`8lYU- zf_V9qCasGXQyb(mQ6YAb?nOo>4Qy(1Y|T8m?mA!C%%|m~Rf?>ZwADuy6_x9nXP}VZ zjfn|<|6aGismFZx0cq(PF!{crp{Fk@m3)>6xI$=fmo8mGBRQTcSL!}_8`AE1=%O>f zerdrOBa!eB3GD*%9&NsHc9Uk;Jxw1=Z{z8*pLf13U&V`NLq-s$Pw7d`(4ak{N8$pstw6kKEiR-5;AS2=Qg{)*R+x~;P2 z%F7ck-ZnI7y1Va(G`jO1`cZO9iaIWF+x(ULx&hd?$uQAkBrI+=_(VN;aflF5`BgnU zN(}a&e@%j4(bjRQ{pXmZ)WAg}ozDLogeA0Le^`JiDJdfpzkpMNgM;y3I&N9t-YRi! za>V`n0ma`u86i3F^3@%X0zibAu!EhQ9VUgQz&=`i3Ek|22j%2L~cn5XXT$+Mx50vXjO^0tMm``^>q-yXhPI)0y5eb9C91m zi~~Uf>`I&k&;-@^rM19^bc8R7bwPtziAzWbN0kO5ASCmF2}V>ZqEdXtxqtiSgg7B1 zP8PQJj*Z=B-nRdIUv+?I51p3`xck43=-8Ouh(Sz*bSX^`d;^7VzRM2ZhlgvRxIiN$ zE)WWj$R)_36bL9xXm23x(AnBbM6xqGI*bW_iIrOfaWUOdGw*w`svD5rRtiReCtNuea3ktDEu5_1O5GkM>Wy?a?_Cq`>NozsHk(N z?HB#Wn!15PML2_mek3n%GE(#T^CrJPKZ4Aa4g{#)xcK40&Ye5g_^tfjg}#i1)z>$E zVHIY+P!(GVl+8uD8y#)ks~w|~u&H}V-lNc_iGK++4zkPuHB82D#XFIOgp(Trdm=bE z-MaBHfXu=8w9R2WhaR9&gQrMJO3FBP%Oy6{*M~7MFa!sWfPTm??-m!&bpe#Ak5g9{ zjC%LBwe@7Oetm1}eOv~lmkguGw6rv;yVS$%obV(7qmZg&oBFkWdV0^k+r_-Z^_?at zOpQN+b9j#jbj~;a8#YOJEnI>dP4miqvN`?N&!1{mR>C>wD(}P{a7scMGg;oVcW({s z(R`@oA0HjuL^^M69RzwnJn>z-=l}yr1_MSZDBHEQwL74+VV`6*6)!cL1D?ev-ytC1 zZ|Yc@rjB4_r&1s-?(0T*xlb6Q3F_RnhN#xFwzhjnuRA+SHNUogEUf4JcNQS)bl=EG zFm&I|K#S`K|sfrZy_GC8E#E5x52x(nD!$J3U)!ZS8qby+u$+ySX#-i??C@ zl)8-v0^=otZO-4x+FvR*mywmT^KaI}xVRels%S0EJe5k)6-viwwn<%}pX{kjKo!qE zp2Knt1y1JT`^}&&pLgeu!HSmcgzEBn4qasvTLj8Iiti@2CKOBAC8)V6Z{KQzqwFSX zaWV@DpAHWWhU#|=kSl|YkL@@Fy7aO#)A8lc16sL1zJStv#?|?=MF7^`zjtrM;T-kJ z((3xpeE7;*6*}T7;0$Z!RP~h_NH5_YU1MJ zBK!6U@)MxTuB+%-!)jM1y7b`YO`FtEfyq49erK7XK2P7BAE6wd}@}c#) zng7O{m1h6On+Q5&zX+$HV>wTB!i!kZO%1c0vUZ!@Cp*_;+oL#zO^ThXp!C%QB?EGE z|9oo)yGs(h0l+ocW#`R*S(Rd>^NTZmL{0&;2j?mf-MoFeUU@C#ed73m%o@LP7e!w= z@8IBYx3wj6IxGKIy>*_9*sfi>^y2n213BCRz~T@y4Tiff-!-~?;dmgxw)A{vbD8EYGO+#IMU@CO8QKM$4%jqzWeZD zhF7xIN}++!!1xtGv*X7PV}&*kxwf|KOptfGP5OkgA^W}+Hv`?OwWK7apx_=MjY5)y z-3Gw})*Pe5x3V+I;eVHZoxn!VIGJ^7?%l407S3|)v^&tpZLxI(qdx?cf(%Cj*|M?y z2i*EYX)dv-v7)3T=K87`ceYbudH9&yl4oPhq7)8;K(P7dUI|DNUk*$%le z@z*!6W5e1ei3WGk+`d-&B?R+sf8%oX>eiKN8Wn8iqyWaP>}*Z&t@p^wmzoQVHa8nC zeUCb}8$2f27mc*~t@rHrcXQAX46j`~=+Ipf@l@}js=E5mq55R#9oS3*C&B15n^v=O zD|Eq2Qt=A02d_NU{0fs}kC0FRY;0R7&@v#?@scCAD*;sqUvvoxjlzo4A?m7{aVcRB z^MwLSm6peT3=IxK1K)(Z-_&&LobZ2C{=$^38Xq4;8!NaxsGFEQmYf3}*umCTC&6do z%(La4p3a2{@$o!IV`X%#BXd?v&niPT+IjZuS(SipFg`LB_krE zqB4Az7r1@kSH(0uRy+b&&pkN*HMht?+`LTN(b3Uu>dl)sK~T(9fm|}KMz*zuV~0Zg zFuZgryXmho_bvEAYgIrjlEo|kJg1WDV`XJmjQHzL(C=?#W^)M!Xg^FA1IiG2e zwsPc{$bCaQJCTF(@&Hbm?b@YE|Bb%$Qf9t>{hER2QdVA$`)##x!gv4Kl4&F&J63C% zPaQUJQ=b3Jcp}l@6Ds<d#{|wQM{1MsNA0>ZggrkkB*L32N#qs zQBwHkFI*q%8aFIg+PgOtuB$o+2ghb^Ze6e%RWmeIAR&YmBH9)T<4tGscF`LB6*Gb4 z{p9eik)`=@lj6bAJ61Q9mjjn!>ZU{T2xO@lnK4YI*4gCBUC5RUQRnaI?6kyj4P*(( zmq*@0l;sEa`|J&UG(jJC&$Qm8*uK$;wM{kHEdh;EPEJlmH}N{Wcn~~{FTyFMqWlF2nW9~aw(ux=ZYDAfBmx@1E~1;+ z5z-JV%ZO-^Is_C*P(j%I7T`zKJShkU3F||-t5{}1-Kc{;ZA|U~P>YeVWhZi57e8<) zfD_72d8(sHhDLLM&<0ZqzloESoG1{Z99^%aVQ3y_>9C3~=cl;vqF z0i=NHE`52v9_4ItBstuFPdK51!)HRk!KSC8T=P}tPipDVT{u*0o@kzxg^QJKUd~+; z$o#n^E@+9}b$&A?XR>3Uy~4*Uel=mD2`0^>cwMr8C``E0*()ggE6?+^{h;kj(>vkHE5-?C&pn||c$WY4Aom}aAu}icq6q@y zY`Ypwk!-UZ71eR-$Xf$|u{1W7FCr$Ui3^02LA!0+HnpIi1|RF|nR(Wdv)M*Ob&fq& zICIWS(cP)yw=fDY%9_GW3ufJI+mZavpAi!B-Rz~w;w)8JFCO%RTfp!$u)ab z)YcANMq5-~XLxY1wdCam?6~l!Tx88;ja{RV`(@J~Nm6->IpR`?7xDV#sIIALiLFSw zKKLP8KuU@on|Y{7hWv4NLC62UB|KOqpM$qKFY3Of40LHM8w~pB5Q7r3ac!1bP=?wz zJO5wOPL{{2$du7W$RK%E_1tPfP5X!#l%mu_y}-FSSK{Lzu5@HQC*&O0^Y;fm=7k9L zFG)uF-&)PKU~NGuS9(gm@bxHH9^a+WT|{aSO65rROKCtV^2l9IvMBwoQTZ~6^&aET ziVX}5uEV752fZQuing21kvX>rlNlNXtnljA)-AYwjxosjMA$>_;K4q`qEuhPlmIwp z*}HcyR*PW})HR5J;fJzvO<%GbX533ti8(HiMC;&(@_?YLD%!_L+JC0cg~uYa1r_k9 zo3c)eKT`B6vT#b_DD-z^{X18-ISGdVkN>hhB>@?$IN3$?KD=Ot3h}#{4^P+mrcYgaH zG3e7io+bz}K>WOe;DF+vxaQ{K{60Z5I-ERkm0rLaIVhUIn7dn2pFXu5`II>FIgNE? zW!Wjr9T05f%ZptXq#hc$BZvd@<~$^6?k-21a5x9*Fz6SH%s$%8PxtU4-f|On`q*dT zi>J^y2#F=|7Wc)jVy8E7ME%=QDeGVkkx0Ar9}$kn_?B?c6QX27P}*>jKZ2gmdu9y? z0WIlmeZ2;h^L_jFZDeQX_pU@Ek9hEamIO8K7NoOJ=Ar<-jS4@R1lczLSU=65M$?5m zT!pwpVqzk955xuq5&dR2BD>@Acgbz{W(LzTkK^Qm@&6-5uSG%Po-Ful+k#3XC@jps zXOB*@_n*Zdgo#Or>d0HkG;FibV?C8)x&awxqM^b^H!g9uc=m1y4%8b2YXkAdBv!|> zzdndpp6@PksooE5vid4sYyZ|3xVOvyjN6I{PBj*59D0b#9xw3eFDRd zND?J!gu-)D2Os!%GW0F?U%)3$B8YVA6vqnGHg3279uys;^hK~G19-EMOd$P)l>)@y zMLYo|J`#WM$T_Q|6B%GA)tg9}OUK7ND89aLQiU zlV8&S?qRrvi>W3+rhy*_><5&K4X826r6@? zntb!-T7G`S{fac>|6j4bcu55Y;OIvw84H5-#z$t66gR|HviGq$(meJ(XY!CMo+!is ze*UC?qe8mtP*ZjO8!nX9X@BZjZoH4); zLT%&syc?X=MmRga&bcWsZC}=f*^OXA%y}>{Y`V|C7eONY9n4Hk^Blj*Bab*h(48;V z*z-tchNHIAy1TohTD{OL*A`R-KOkb-3O{N$Nk}%GGr>Bmf_RdMfE6eJiG&4Mw|@Oj zWI5q+e=2PRzXt}OA>kWk#=g}EC_g{)J*!oYn)+Roj_WJ+h zm>?w5oW4!TTMmqt3HuzX7vUp$hMm3jjXHRg^Vn61Q^i1<@j#kKh^Wfg*b)n3m%BLiJmEQb8WVrtjxW8=Li%kIiF! z+8n?D0x~u_ObW4Y@cr{ct8d;uw_I2uS~pd;VKwI%rSu!w!9h-^{RCOaDnh$fCqeS* zrbZoQ|9>R-GjcI^5nQsiw(f=(a5(yQme$DF2U9L`HlD@2ky||p{Jd^=iw2P8aZ&VP(MzzW%?x-5Fh@WLb*w(dtbrtQ@4-^lvMM1kYd6>LceOF^934%K3Rml2zH9iH62{+-fKU zMY@L%AC_DhX2FRddi~9tH@SZupdpfx#B9m8Z@hTaL^=?#uqjcE4ra-=UNZ@*$#daK z_aLMM5i1ZgFAK&*%K)OvIKzaZ2RDAM^iLX66YwsZQjcsUPN+wJ$S$N2o)xd)Ig|UPNL@F>)_vZb-C#i2MS zl0r$yILeTuE0pY5?rEbXNHKX3nhELz*n&Bq8cfH`tSnF0poo0xLwJ-kS+5xaH!)U& z>+TyI3;?ON{Pg5-AWPO^=q&j@%kD&sZ4ow8@5BTJ!!is&B!Mhpl5PH+7b9W9$W$y( z9b)2?AQ1*sa&mH_nx_q+tChO$*?*~n1eQUJ&d_hz&~&5+MmU}feplNDAnAz@s}Fzb z4E|?Ysk4(COx4-d)gMxef`Y<%GC4UK_ZdzdiJbe@;|D2|9@(h@m{G_}1+wUfyJIjY z<3w5#Lg0jmFFS_7-rcyk(CqAe7p$!Xpb8_=LPV~y33f!i!!F+O=vtEgN8QxtP5p)W z`Gh}XYHA8*5`gieYG|==3vR{5olTyMmVEkdB+?b9&ShcZ42(ld1d{_3tnX(;t7bN~PV2HVZ!#W`L5RP;X9qbmE5G3C3z{Y>bu2`tnhucpZ+#UO>JOXfD_r+2<;GAw$Tz z8dGE$J&!cQuthG1$VT0L{P+&|4F-jFVrGuWAp?_)wKgJv<_xFK$G?{M1%w7N_zUXC z;;+ipunn7pIgvJwEeq0Z##9&*3pKdpJqis8%HkhSoU$g9iKc_Q!*5hH0^VW1U>(VV znHl2_b7QTHzP`TU3pp`We~`)Ml(bw2@%Zk82UPoq5(~j&@hR9bp(tIvh~&aIM)vb_ zI(i=AQUXB9@**VQ?CflFulJ!#?0yGsLX!?xTB3*VBZ)AktS!_wcp4L3#jH>`h+sMt zf(^Y@OI+}hA@Hl?<(txu@fFy&Pvx(#r*wg6Ha$Cg03Wl!1rB5h$`?LrANkjPgN?sDUOe z32indEsYEcr5XPOx(qyXsOG(WeK&}S6%=&lDK$P9$P}rXzd`rYqgUcY?(1Ge{L{YK zUoak_QQR2}q8^zhVch#@|%&uWC{^XkqANS4Vt(pWV7s{&GkeH7{Dya>b>_@N zgIuUx@M(~8eGT3Vp3r2IYnVZd5%$^DL7&Weo`aXRdbgGz{(Go|2U_hMqSQ6%B7*&wPZV^QsIvYeh3RwM^Jk%1nC;Rqdd zb!-h+kmazItzxFy=oo3Je{lSH5oT#V>r^h(B5qO;4AU`S2?lA{0-pG0O!WZAJp}`Z zRk$Vvy*I1v*Q}gbrEfgC`3BNt_sh>u@+I1~)Ax*^AhDC=uMAOk4%kXK=nxkQO~QnhLMRqpIc$mmN#!B1V&*I&mp*DfTJ9?0{FK_R`#R^G1oRbGqcg$%fsUnc#7;; zR*_SC4iDx&@x|$HigrZJ{dR}9=Y~+6&)YFK=o2l6Ni@17$){? z##%Da^)WW&E`v!E5sVOyA&O<&UmJpim4>K| ze_JgME6kW+VaAGJ0WpJx26G3fQ7i3O!v3)YW@;?Wv*>^igO|(xE_8L2y6pwu?He8r z0&XIsM*@b1{q?$~sEMvZq;8-qhh6yq!zBbzE*TFDQ2Ckj5ix4Vz=`p-M{rbMYw`K` z!{SuQFj5s{uLAl|3uLN7vg{LdGg?uN48siP-?JBqoGj)cs}MAen~Q%P7l%XZy*yd` zuXct9nfUxUJMK9K={Ulr#8%;ySErgh@)SMkiCQwzS;z>pstQ<8rY#V?M+J=eQ^tv1 zK)nn&J4pNmV21&fU_2uNAqwmpNNJ}AhMqzzJM8M}I#4FPpiMaO;3wYmt*7DSU4QxV z;Qt<%h0fOsDA{HyJ;ruQx<6Q za`N)k2xkzP3kZ~$z(K5rNDvSTEGBK2JovIB?mu{7iHIX196T`+k-R!(dI^#-rr+HT zKpZXLK5}1)iItTVVs?wyG7cx{liXk!*8wP#-hY0)@xUN7CLeE%XeBe^?+{q`j`({4 zMrF}HSgauz;seEH-DU{W|@6PT03%K zc6KcZ(p1gHSJvU_L{LZGO$4{|1Lv8T-Hw&LB{(|#*oy_%211)m{lY7%1F}R6Rm1Y( zlD|hQz;F7>otd<#$4cdXXwI@-iGmWjes$$n<&TLMjh4hf4zk?poV1AsyOD7b>2~>w zzcv7EM(h0f9iVQ+AV2UK*C3A>U_H^E35x)^c)6=nkB(E{8DFu;6O0FT_WirmhjUHL zkO3B){b;5TOi%QBZ1Xh=CCjCzV(lGNtUNw<80RJ+Xs5XFPX6r*9vg}53eHR~KrGZ% z^Ol5sO{+Y_fI#$WfXMDXdc=gKC2V(s#dLRfGi_-mN5#i8qXz80uS-Zect^P_Lresa z1f4>1|0UH3I>07k=E}U>vkI~+M$+)auOyonUc)5z#Mf6_SC`r=oiSxWQb7$O{_+Ck zR%AMTxyY=XGCDM@4RecFp*+OUVP#igK8Mizh$(C|Lm*_e!1mp!R>aXEpdzRbP^h= z<6aYSAdW7moJ5U>!|Q??f2pg88GMFdz=S@(Zr!?;ELOLErK?lhi6jIzFtJ72bI%2- zCVu*&&mZx+t?iUYOiT=Y$W{-D%*KX>w$30#Mu@5n82kibA7;M+1V$}obWD!IHwDyE z{xd^Es5KX?tn6A|y?RAp6<|Lo(lnr**YSLkA;oJJ>YjxqOOOcV)jyk1APLKkm^AA> z-26zAOiRotLhx6dt-vx8IyP}-r~w+9n#2@^3)()OAsx~UZr`$tfU$|20_8&{E*yg5 zI$GK!Xw~7{`N$J}TxO97LOSCaY*+T(j=F*!yB&{);l6IFn-|DAL3uFV`^=>9CNl4k zV%Gz~_f2(UT%^SGD~19wV=5sl8xS8K-yjE?!obLQ9C`+ZQSRNlw?kQ(4+v|wh=?j= zUUa7b6kj4eu6^{VhOcjhCLg*oF%%&Ise~9dKq}btZ}ym)a8zPRi7}^S7a(7Ex9MWE zq?I>CUdR4~q2Wz<{=Hb`l50POrKF??sSqJ1enh(4l$ZIoLO=nHCGvVi3Oqr{XCo)) z+mO4GZRd}Q>9lKL41MojMwqo2+B=LH*gVrrgu_k6AZFZ<5IGedIa*nKyO}tGxG%)Y z13@?ue?Ncm;(7!Uu%k;}zN~`#1=o>KXTaBLhFK6CPWmE*sVaN@6}~00_T_7L?q4S1 OmyU+MdXDP(oBs + +