PK AAoa,mimetypeapplication/epub+zipPKAAiTunesMetadata.plistT artistName Oracle Corporation book-info cover-image-hash 970342194 cover-image-path OEBPS/dcommon/oracle-logo.jpg package-file-hash 831282460 publisher-unique-id E21634-05 unique-id 333226228 genre Oracle Documentation itemName Oracle® In-Memory Database Cache User's Guide, 11g Release 2 (11.2.2) releaseDate 2012-08-31T18:20:27Z year 2012 PK׾YTPKAAMETA-INF/container.xml PKYuPKAAOEBPS/oraclescripts.htm SQL*Plus Scripts for Oracle In-Memory Database Cache

12 SQL*Plus Scripts for Oracle In-Memory Database Cache

This chapter lists the SQL*Plus scripts that are installed with Oracle In-Memory Database Cache used to perform various configuration, administrative and monitoring tasks, and provides links to more information including examples. All scripts are installed in the TimesTen_install_dir/oraclescripts directory.

Installed SQL*Plus scripts

PK~@PKAAOEBPS/gettingstarted.htm Getting Started

2 Getting Started

This chapter describes how to create a cache grid. To illustrate the creation and use of cache groups, the chapter describes how to create an explicitly loaded read-only local cache group, and a dynamic updatable global cache group. The chapter also describes how to populate the cache tables, and how to observe the transfer of updates between the cache tables in the TimesTen database and the cached tables in the Oracle database.

This chapter includes the following topics:

Setting up the Oracle and TimesTen systems

Before you can create a cache grid or a cache group, you must first install TimesTen and then configure the Oracle and TimesTen systems. See Oracle TimesTen In-Memory Database Installation Guide for information about installing TimesTen.

Complete the following tasks:

  1. Create users in the Oracle database.

  2. Create a DSN for the TimesTen database.

  3. Create users in the TimesTen database.

  4. Set the cache administration user name and password in the TimesTen database.

Create users in the Oracle database

Before you can use Oracle In-Memory Database Cache, you must create some Oracle users:

  • A user timesten owns Oracle tables that store information about cache grids.

  • One or more schema users own the Oracle tables to be cached in a TimesTen database. These may be existing users or new users.

  • A cache administration user creates and maintains Oracle objects that store information used to manage cache grids and enforce predefined behaviors of particular cache group types.

Start SQL*Plus on the Oracle system from an operating system shell or command prompt, and connect to the Oracle database instance as the sys user:

% cd TimesTen_install_dir/oraclescripts
% sqlplus sys as sysdba
Enter password: password

Use SQL*Plus to create a default tablespace that will be used by both the timesten user and the cache administration user. This tablespace should only be used to store objects for Oracle In-Memory Database Cache and should not be shared with other applications. Then run the SQL*Plus script TimesTen_install_dir/oraclescripts/initCacheGlobalSchema.sql to create the following elements:

  • The timesten user

  • The Oracle tables owned by the timesten user to store information about cache grids

  • The TT_CACHE_ADMIN_ROLE role that defines privileges on these Oracle tables

Pass the default tablespace as an argument to the initCacheGlobalSchema.sql script. In the following example, the name of the default tablespace is cachetblsp:

SQL> CREATE TABLESPACE cachetblsp DATAFILE 'datfttuser.dbf' SIZE 100M;
SQL> @initCacheGlobalSchema "cachetblsp"

Next use SQL*Plus to create a schema user. Grant this user the minimum set of privileges required to create tables in the Oracle database to be cached in a TimesTen database. In the following example, the schema user is oratt:

SQL> CREATE USER oratt IDENTIFIED BY oracle;
SQL> GRANT CREATE SESSION, RESOURCE TO oratt;

Then use SQL*Plus to perform the following operations:

  • Create a cache administration user.

  • Run the SQL*Plus script TimesTen_install_dir/oraclescripts/grantCacheAdminPrivileges.sql to grant the cache administration user the minimum set of privileges required to perform cache grid and cache group operations.

Pass the cache administration user name as an argument to the grantCacheAdminPrivileges.sql script. In the following example, the cache administration user name is cacheuser and the name of its default tablespace is cachetblsp:


Note:

See the comments in the grantCacheAdminPrivileges.sql script for the required privileges by the user who executes this script and the privileges that this user grants to the cache administration user.

SQL> CREATE USER cacheuser IDENTIFIED BY oracle
  2  DEFAULT TABLESPACE cachetblsp QUOTA UNLIMITED ON cachetblsp;
SQL> @grantCacheAdminPrivileges "cacheuser"
SQL> exit

The privileges that the cache administration user requires depend on the types of cache groups you create and the operations that you perform on the cache groups.

See "Create the Oracle users" for more information about the timesten user, the schema users, and the cache administration user.

Create a DSN for the TimesTen database

SQL> SELECT value FROM nls_database_parameters WHERE parameter='NLS_CHARACTERSET';

On UNIX, in the .odbc.ini file that resides in your home directory or the TimesTen_install_dir/info/sys.odbc.ini file, create a TimesTen DSN cachealone1 and set the following connection attributes:

[cachealone1]
DataStore=/users/OracleCache/alone1
PermSize=64
OracleNetServiceName=oracledb
DatabaseCharacterSet=AL32UTF8

On Windows, create a TimesTen user DSN or system DSN cachealone1 and set the following connection attributes:

  • Data Store Path + Name: c:\temp\alone1

  • Permanent Data Size: 64

  • Oracle Net Service Name: oracledb

  • Database Character Set: AL32UTF8

Use the default settings for all the other connection attributes.

See "Define a DSN for the TimesTen database" for more information about defining a DSN for a TimesTen database that is used to cache data from an Oracle database.

See "Managing TimesTen Databases" in Oracle TimesTen In-Memory Database Operations Guide for more information about TimesTen DSNs.


Note:

The term "data store" is used interchangeably with "TimesTen database".

Create users in the TimesTen database

In addition to the Oracle users, you must create some TimesTen users before you can use Oracle In-Memory Database Cache:

  • A cache manager user performs cache grid and cache group operations. The TimesTen cache manager user must have the same name as an Oracle user that can access the cached Oracle tables. For example, the Oracle user must have privileges to select from and update the cached Oracle tables. The Oracle user can be the cache administration user, a schema user, or some other existing user. The password of the cache manager user can be different than the password of the Oracle user with the same name.

    The cache manager user creates and configures the cache grid and creates the cache groups. It may perform operations such as loading or refreshing a cache group although these operations can be performed by any TimesTen user that has sufficient privileges. The cache manager user can also monitor various aspects of the caching environment, such as the grid itself or asynchronous operations that are performed on cache groups such as autorefresh.

  • One or more cache table users own the cache tables. You must create a TimesTen cache table user with the same name as an Oracle schema user for each schema user who owns or will own Oracle tables to be cached in the TimesTen database. The password of a cache table user can be different than the password of the Oracle schema user with the same name.

    The owner and name of a TimesTen cache table is the same as the owner and name of the corresponding cached Oracle table.

Start the ttIsql utility on the TimesTen system from an operating system shell or command prompt as the instance administrator, and connect to the cachealone1 DSN to create the TimesTen database that will be used to cache data from an Oracle database:

% ttIsql cachealone1

Use ttIsql to create a cache manager user. Grant this user the minimum set of privileges required to create a cache grid and cache groups, and perform operations on the cache groups. In the following example, the cache manager user name is cacheuser, which is the same name as the Oracle cache administration user that was created earlier:

Command> CREATE USER cacheuser IDENTIFIED BY timesten;
Command> GRANT CREATE SESSION, CACHE_MANAGER, CREATE ANY TABLE TO cacheuser;

Then use ttIsql to create a cache table user. In the following example, the cache table user name is oratt, which is the same name as the Oracle schema user that was created earlier:

Command> CREATE USER oratt IDENTIFIED BY timesten;
Command> exit

The privileges that the cache manager user requires depend on the types of cache groups you create and the operations that you perform on the cache groups. See "Create the TimesTen users" for more information about the cache manager user and the cache table users.

See "Managing Access Control" in Oracle TimesTen In-Memory Database Operations Guide for more information about TimesTen users and privileges.

Set the cache administration user name and password in the TimesTen database

Start the ttIsql utility and connect to the cachealone1 DSN as the cache manager user. In the connection string, specify the cache manager user name in the UID connection attribute. (In this example, the TimesTen cache manager user name is the same as the Oracle cache administration user name.) Specify the cache manager user's password in the PWD connection attribute and the cache administration user's password in the OraclePWD connection attribute within the connection string.

% ttIsql "DSN=cachealone1;UID=cacheuser;PWD=timesten;OraclePWD=oracle"

Use ttIsql to call the ttCacheUidPwdSet built-in procedure to set the Oracle cache administration user name and password:

Command> call ttCacheUidPwdSet('cacheuser','oracle');

The cache administration user name and password need to be set only once in a TimesTen database. See "Set the cache administration user name and password" for information about how this setting is used by the TimesTen database.

Creating a cache grid

After you have created the Oracle users, the TimesTen database, and the TimesTen users, and set the Oracle cache administration user name and password in the TimesTen database, you need to create a cache grid to define a framework for TimesTen databases that cache tables from an Oracle database.

As the cache manager user, use the ttIsql utility to call the ttGridCreate built-in procedure to create a cache grid myGrid:

Command> call ttGridCreate('myGrid');

Then use ttIsql to call the ttGridNameSet built-in procedure to associate the TimesTen database with the myGrid cache grid:

Command> call ttGridNameSet('myGrid');

See "Configuring a cache grid" for more information about the contents and functionality of a cache grid.

Creating cache groups

After you have created a cache grid and associated the TimesTen database with the grid, you are ready to create cache groups. You create a read-only cache group as shown in Figure 2-1. Then you create an asynchronous writethrough (AWT) cache group as shown in Figure 2-2.

Figure 2-1 Single-table read-only cache group

Description of Figure 2-1 follows
Description of "Figure 2-1 Single-table read-only cache group"

Figure 2-2 Single-table writethrough cache group

Description of Figure 2-2 follows
Description of "Figure 2-2 Single-table writethrough cache group"

Complete the following tasks to create a read-only cache group and an AWT cache group:

  1. Create the Oracle tables to be cached.

  2. Start the cache agent.

  3. Create the cache groups.

  4. Start the replication agent for the AWT cache group.

Create the Oracle tables to be cached

Start SQL*Plus and connect to the Oracle database as the schema user:

% sqlplus oratt/oracle

Use SQL*Plus to create a table readtab as shown in Figure 2-3, and a table writetab as shown in Figure 2-4:

SQL> CREATE TABLE readtab (keyval NUMBER NOT NULL PRIMARY KEY, str VARCHAR2(32));
SQL> CREATE TABLE writetab (pk NUMBER NOT NULL PRIMARY KEY, attr VARCHAR2(40));

Figure 2-3 Creating an Oracle table to be cached in a read-only cache group

Description of Figure 2-3 follows
Description of "Figure 2-3 Creating an Oracle table to be cached in a read-only cache group"

Figure 2-4 Creating an Oracle table to be cached in an AWT cache group

Description of Figure 2-4 follows
Description of "Figure 2-4 Creating an Oracle table to be cached in an AWT cache group"

Then use SQL*Plus to insert some rows into the readtab and writetab tables, and commit the changes:

SQL> INSERT INTO readtab VALUES (1, 'Hello');
SQL> INSERT INTO readtab VALUES (2, 'World');

SQL> INSERT INTO writetab VALUES (100, 'TimesTen');
SQL> INSERT INTO writetab VALUES (101, 'IMDB');
SQL> COMMIT;

Next use SQL*Plus to grant the SELECT privilege on the readtab table, and the SELECT, INSERT, UPDATE and DELETE privileges on the writetab table to the cache administration user:

SQL> GRANT SELECT ON readtab TO cacheuser;

SQL> GRANT SELECT ON writetab TO cacheuser;
SQL> GRANT INSERT ON writetab TO cacheuser;
SQL> GRANT UPDATE ON writetab TO cacheuser;
SQL> GRANT DELETE ON writetab TO cacheuser;

The SELECT privilege on the readtab table is required to create a read-only cache group that caches this table and to perform autorefresh operations from the cached Oracle table to the TimesTen cache table.

The SELECT privilege on the writetab table is required to create an AWT cache group that caches this table. The INSERT, UPDATE and DELETE privileges on the writetab table are required to perform writethrough operations from the TimesTen cache table to the cached Oracle table.

See "Grant privileges to the Oracle users" for more information about the privileges required for the cache administration user to create and perform operations on a read-only cache group and an AWT cache group.

Start the cache agent

As the cache manager user, use the ttIsql utility to call the ttCacheStart built-in procedure to start the cache agent on the TimesTen database:

Command> call ttCacheStart;

See "Managing the cache agent" for more information about starting the cache agent.

Create the cache groups

As the cache manager user, use the ttIsql utility to create a read-only cache group readcache that caches the Oracle oratt.readtab table and a dynamic AWT global cache group writecache that caches the Oracle oratt.writetab table:

Command> CREATE READONLY CACHE GROUP readcache
       > AUTOREFRESH INTERVAL 5 SECONDS
       > FROM oratt.readtab
       > (keyval NUMBER NOT NULL PRIMARY KEY, str VARCHAR2(32));

Command> CREATE DYNAMIC ASYNCHRONOUS WRITETHROUGH GLOBAL CACHE GROUP writecache
       > FROM oratt.writetab
       > (pk NUMBER NOT NULL PRIMARY KEY, attr VARCHAR2(40));

The cache groups readcache and writecache, and their respective cache tables oratt.readtab and oratt.writetab, whose owners and names are identical to the cached Oracle tables, are created in the TimesTen database. Figure 2-5 shows that the writecache cache group caches the oratt.writetab table.

Figure 2-5 Creating an asynchronous writethrough cache group

Description of Figure 2-5 follows
Description of "Figure 2-5 Creating an asynchronous writethrough cache group"

Use the ttIsql cachegroups command to view the definition of the readcache and writecache cache groups:

Command> cachegroups;

Cache Group CACHEUSER.READCACHE:

  Cache Group Type: Read Only
  Autorefresh: Yes
  Autorefresh Mode: Incremental
  Autorefresh State: Paused
  Autorefresh Interval: 5 Seconds
  Autorefresh Status: ok
  Aging: No aging defined

  Root Table: ORATT.READTAB
  Table Type: Read Only

Cache Group CACHEUSER.WRITECACHE:

  Cache Group Type: Asynchronous Writethrough global (Dynamic)
  Autorefresh: No
  Aging: LRU on

  Root Table: ORATT.WRITETAB
  Table Type: Propagate

2 cache groups found.

See "Read-only cache group" for more information about read-only cache groups.

See "Asynchronous writethrough (AWT) cache group" for more information about AWT cache groups.

See "Dynamic cache groups" for more information about dynamic cache groups.

See "Global cache groups" for more information about global cache groups.

Start the replication agent for the AWT cache group

As the cache manager user, use the ttIsql utility to call the ttRepStart built-in procedure to start the replication agent on the TimesTen database:

Command> call ttRepStart;

The replication agent propagates committed updates on TimesTen cache tables in AWT cache groups to the cached Oracle tables.

See "Managing the replication agent" for more information about starting the replication agent.

Attaching the TimesTen database to the cache grid

If you are creating a local cache group, you do not need to attach the TimesTen database to the cache grid. Before you can perform operations on a global cache group or on its cache tables, you must attach the TimesTen database to the cache grid that it is associated with.

As the cache manager user, use the ttIsql utility to call the ttGridAttach built-in procedure to attach the TimesTen database to the myGrid cache grid:

Command> call ttGridAttach(1,'alone1','mysys',5001);

In this example, alone1 is a name that is used to uniquely identify the grid member, mysys is the host name of the TimesTen system, and 5001 is the TCP/IP port for the cache agent.Calling the ttGridAttach built-in procedure automatically starts the cache agent if it is not already running.

Although the example in this chapter contains only one standalone TimesTen database as the sole grid member, it can be extended to include additional grid members such as active standby pairs and other standalone TimesTen databases. See Chapter 6, "Creating Other Cache Grid Members", for details on how to create and add other members to an existing cache grid, and how data in a global cache group is shared among the grid members.

Performing operations on the read-only cache group

This section shows how to manually load the read-only cache group. Then it shows the TimesTen cache table being automatically refreshed with committed updates on the cached Oracle table.

Complete the following tasks to perform operations on the read-only cache group:

  1. Manually load the cache group.

  2. Update the cached Oracle table.

Manually load the cache group

As the cache manager user, use the ttIsql utility to load the contents of the Oracle oratt.readtab table into the TimesTen oratt.readtab cache table in the readcache cache group:

Command> LOAD CACHE GROUP readcache COMMIT EVERY 256 ROWS;
2 cache instances affected.
Command> exit

Figure 2-6 shows that the Oracle data is loaded into the oratt.readtab cache table.

Figure 2-6 Loading a read-only cache group

Description of Figure 2-6 follows
Description of "Figure 2-6 Loading a read-only cache group"

Start the ttIsql utility and connect to the cachealone1 DSN as the instance administrator. Use ttIsql to grant the SELECT privilege on the oratt.readtab cache table to the cache manager user so that this user can issue a SELECT query on this table.

% ttIsql cachealone1
Command> GRANT SELECT ON oratt.readtab TO cacheuser;
Command> exit

Start the ttIsql utility and connect to the cachealone1 DSN as the cache manager user. Use ttIsql to query the contents of oratt.readtab cache table.

% ttIsql "DSN=cachealone1;UID=cacheuser;PWD=timesten;OraclePWD=oracle"
Command> SELECT * FROM oratt.readtab;
< 1, Hello >
< 2, World >
2 rows found.

See "Loading and refreshing a cache group" for more information about manually loading a cache group.

Update the cached Oracle table

Use SQL*Plus, as the Oracle schema user, to insert a new row, delete an existing row, and update an existing row in the Oracle readtab table, and commit the changes:

SQL> INSERT INTO readtab VALUES (3, 'Welcome');
SQL> DELETE FROM readtab WHERE keyval=2;
SQL> UPDATE readtab SET str='Hi' WHERE keyval=1;
SQL> COMMIT;

After 5 seconds, the oratt.readtab cache table in the readcache cache group is automatically refreshed with the committed updates on the cached Oracle oratt.readtab table as shown in Figure 2-7.

Figure 2-7 Automatically refresh the TimesTen cache table with Oracle updates

Description of Figure 2-7 follows
Description of "Figure 2-7 Automatically refresh the TimesTen cache table with Oracle updates"

As the cache manager user, use the ttIsql utility to query the contents of the oratt.readtab cache table after the readcache cache group has been automatically refreshed with the committed updates on the cached Oracle table:

Command> SELECT * FROM oratt.readtab;
< 1, Hi >
< 3, Welcome >
2 rows found.
Command> exit

See "AUTOREFRESH cache group attribute" for more information about automatically refreshing cache groups.

Performing operations on the dynamic updatable global cache group

This section shows how to dynamically load the AWT cache group. Then it shows committed updates on the TimesTen cache table being automatically propagated to the cached Oracle table.

Complete the following tasks to perform operations on the AWT cache group:

  1. Dynamically load the cache group.

  2. Update the TimesTen cache table.

Dynamically load the cache group

Start the ttIsql utility and connect to the cachealone1 DSN as the instance administrator. Use ttIsql to grant the <d code>SELECT privilege on the oratt.writetab cache table to the cache manager user so that this user can issue a dynamic load SELECT statement on this table.

% ttIsql cachealone1
Command> GRANT SELECT ON oratt.writetab TO cacheuser;
Command> exit

Start the ttIsql utility and connect to the cachealone1 DSN as the cache manager user. Use ttIsql to load a cache instance on demand from the Oracle oratt.writetab table to the TimesTen oratt.writetab cache table in the writecache cache group.

% ttIsql "DSN=cachealone1;UID=cacheuser;PWD=timesten;OraclePWD=oracle"
Command> SELECT * FROM oratt.writetab WHERE pk=100;
< 100, TimesTen >
1 row found.
Command> exit

In a dynamic cache group, a cache instance can be loaded into its cache tables on demand with a dynamic load statement. A SELECT, UPDATE, DELETE or INSERT statement issued on a TimesTen cache table that uniquely identifies a cache instance results in the cache instance being automatically loaded from the cached Oracle table if the data is not found in the cache table. A dynamically loaded cache instance consists of a single row in the root table of the cache group, and all the related rows in the child tables.

See "Dynamically loading a cache instance" for more information about a dynamic load operation.

Data can also be manually loaded into the cache tables of a dynamic cache group using a LOAD CACHE GROUP statement.

Update the TimesTen cache table

Start the ttIsql utility and connect to the cachealone1 DSN as the instance administrator. Use ttIsql to grant the INSERT, DELETE and UPDATE privileges on the oratt.writetab cache table to the cache manager user so that this user can perform updates on this table.

% ttIsql cachealone1
Command> GRANT INSERT ON oratt.writetab TO cacheuser;
Command> GRANT DELETE ON oratt.writetab TO cacheuser;
Command> GRANT UPDATE ON oratt.writetab TO cacheuser;
Command> exit

Start the ttIsql utility and connect to the cachealone1 DSN as the cache manager user. Use ttIsql to insert a new row, delete an existing row, and update an existing row in the oratt.writetab cache table, and commit the changes.

% ttIsql "DSN=cachealone1;UID=cacheuser;PWD=timesten;OraclePWD=oracle"
Command> INSERT INTO oratt.writetab VALUES (102, 'Cache');
Command> DELETE FROM oratt.writetab WHERE pk=101;
Command> UPDATE oratt.writetab SET attr='Oracle' WHERE pk=100;
Command> COMMIT;
Command> exit

The committed updates on the oratt.writetab cache table in the writecache cache group are automatically propagated to the Oracle oratt.writetab table as shown in Figure 2-8.

Figure 2-8 Automatically propagate TimesTen cache table updates to Oracle

Description of Figure 2-8 follows
Description of "Figure 2-8 Automatically propagate TimesTen cache table updates to Oracle"

As the Oracle schema user, use SQL*Plus to query the contents of the writetab table:

SQL> SELECT * FROM writetab;

        PK ATTR
---------- -------------------------------
       100 Oracle
       102 Cache

SQL> exit

Cleaning up the TimesTen and Oracle systems

Complete the following tasks to restore the TimesTen and Oracle systems to their original state prior to creating a cache grid and cache groups:

  1. Detach the TimesTen database from the cache grid.

  2. Stop the replication agent.

  3. Drop the cache groups.

  4. Destroy the cache grid.

  5. Stop the cache agent and destroy the TimesTen database.

  6. Drop the Oracle users and their objects.

Detach the TimesTen database from the cache grid

Start the ttIsql utility and connect to the cachealone1 DSN as the cache manager user. Use ttIsql to call the ttGridDetach built-in procedure to detach the TimesTen database from the myGrid cache grid.

% ttIsql "DSN=cachealone1;UID=cacheuser;PWD=timesten;OraclePWD=oracle"
Command> call ttGridDetach;

See "Detaching a TimesTen database from a cache grid" for information about the effects of detaching a TimesTen database from a cache grid.

Stop the replication agent

As the cache manager user, use the ttIsql utility to call the ttRepStop built-in procedure to stop the replication agent on the TimesTen database:

Command> call ttRepStop;
Command> exit

See "Managing the replication agent" for more information about stopping the replication agent.

Drop the cache groups

Start the ttIsql utility and connect to the cachealone1 DSN as the instance administrator. Use ttIsql to grant the DROP ANY TABLE privilege to the cache manager user so that this user can drop the underlying cache tables when dropping the cache groups.

% ttIsql cachealone1
Command> GRANT DROP ANY TABLE TO cacheuser;
Command> exit

Start the ttIsql utility and connect to the cachealone1 DSN as the cache manager user. Use ttIsql to drop the readcache read-only cache group and the writecache AWT cache group.

% ttIsql "DSN=cachealone1;UID=cacheuser;PWD=timesten;OraclePWD=oracle"
Command> DROP CACHE GROUP readcache;
Command> DROP CACHE GROUP writecache;

The cache groups readcache and writecache, and their respective cache tables oratt.readtab and oratt.writetab are dropped from the TimesTen database.

See "Dropping a cache group" for more information about dropping cache groups.

Destroy the cache grid

As the cache manager user, use the ttIsql utility to call the ttGridDestroy built-in procedure to destroy the myGrid cache grid:

Command> call ttGridDestroy('myGrid');

See "Destroying a cache grid" for more information about destroying a cache grid.

Stop the cache agent and destroy the TimesTen database

As the cache manager user, use the ttIsql utility to call the ttCacheStop built-in procedure to stop the cache agent on the TimesTen database:

Command> call ttCacheStop;
Command> exit

See "Managing the cache agent" for more information about stopping the cache agent.

Then use the ttDestroy utility to connect to the cachealone1 DSN and destroy the TimesTen database:

% ttDestroy cachealone1

Drop the Oracle users and their objects

Start SQL*Plus and connect to the Oracle database as the sys user. Use SQL*Plus to drop the timesten user, the schema user oratt, and the cache administration user cacheuser.

% sqlplus sys as sysdba
Enter password: password
SQL> DROP USER timesten CASCADE;
SQL> DROP USER oratt CASCADE;
SQL> DROP USER cacheuser CASCADE;

Specifying CASCADE in a DROP USER statement drops all objects such as tables and triggers owned by the user before dropping the user itself.

Next use SQL*Plus to drop the TT_CACHE_ADMIN_ROLE role:

SQL> DROP ROLE TT_CACHE_ADMIN_ROLE;

Then use SQL*Plus to drop the default tablespace cachetblsp used by the timesten user and cache administration user including the contents of the tablespace and its data file:

SQL> DROP TABLESPACE cachetblsp INCLUDING CONTENTS AND DATAFILES;
SQL> exit

Procedure for caching Oracle data in TimesTen

Table 2-1 Instructions for caching Oracle data in a TimesTen database

Task numberTask

1

Create the following users in the Oracle database:

  • timesten user

    User is created by running the SQL*Plus script TimesTen_install_dir/oraclescripts/initCacheGlobalSchema.sql as the sys user.

  • One or more schema users who own the cached Oracle tables (may be existing users)

  • Cache administration user

    A default tablespace must be created for the timesten user and the cache administration user. The same tablespace can be designated for both users.

Execute CREATE USER statements as the sys user.

See "Create the Oracle users" for more information about the Oracle users.

Grant the cache administration user the privileges required to perform the cache grid operations, create the desired types of cache groups, and perform operations on the cache groups. Privileges are granted by running either the TimesTen_install_dir/oraclescripts/grantCacheAdminPrivileges.sql or the TimesTen_install_dir/oraclescripts/initCacheAdminSchema.sql script as the sys user.

See "Automatically create Oracle objects used to manage caching of Oracle data" or "Manually create Oracle objects used to manage caching of Oracle data" to determine the appropriate script to run.

If you are manually creating the Oracle objects, you also need to run the TimesTen_install_dir/oraclescripts/initCacheGridSchema.sql script to create the Oracle tables used to store information about TimesTen databases that are associated with a particular cache grid.

Some privileges cannot be granted until the cached Oracle tables have been created. To grant these privileges, execute GRANT statements as the sys user.

See "Grant privileges to the Oracle users" for more information about the privileges that must be granted to the cache administration user to perform particular cache operations.

2

Define a DSN that references the TimesTen database that will be used to cache data from an Oracle database.

Set the OracleNetServiceName connection attribute to the Oracle net service name that references the Oracle database instance.

Set the DatabaseCharacterSet connection attribute to the Oracle database character set. The TimesTen database character set must match the Oracle database character set.

Then connect to the DSN to create the database if this is a standalone database or will be an active database of an active standby pair.

See "Define a DSN for the TimesTen database" for more information about defining a DSN for a TimesTen database that will be used to cache data from an Oracle database.

3

Create the following users in the TimesTen database:

  • Cache manager user

    This user must have the same name as an Oracle user that can access the cached Oracle tables. The Oracle user can be the cache administration user, a schema user, or some other existing user. The password of the cache manager user and the Oracle user with the same name can be different.

  • One or more cache table users who own the TimesTen cache tables

    These users must have the same name as the Oracle schema users who own the cached Oracle tables. The password of a cache table user and the Oracle user with the same name can be different.

Execute CREATE USER statements as the instance administrator.

See "Create the TimesTen users" for more information about the TimesTen users.

Grant the cache manager user the privileges required to perform the cache grid operations, create the desired types of cache groups, and perform operations on the cache groups. Execute GRANT statements as the instance administrator.

See "Grant privileges to the TimesTen users" for more information about the privileges that must be granted to the cache manager user to perform particular cache operations.

4

Set the cache administration user name and password in the TimesTen database either by calling the ttCacheUidPwdSet built-in procedure as the cache manager user or running a ttAdmin -cacheUidPwdSet utility command as a TimesTen external user with the CACHE_MANAGER privilege.

See "Set the cache administration user name and password" for more information about setting the cache administration user name and password in a TimesTen database.

5

Create a cache grid by calling the ttGridCreate built-in procedure in the TimesTen database as the cache manager user.

See "Create a cache grid" for more information about creating a cache grid.

6

Associate the TimesTen database with the cache grid by calling the ttGridNameSet built-in procedure in the TimesTen database as the cache manager user.

See "Associate a TimesTen database with a cache grid" for more information about associating a TimesTen database with a cache grid.

7

Start the cache agent on the TimesTen database either by calling the ttCacheStart built-in procedure as the cache manager user or running a ttAdmin -cacheStart utility command as a TimesTen external user with the CACHE_MANAGER privilege.

See "Managing the cache agent" for more information about starting a cache agent on a TimesTen database.

8

Design the schema for the cache groups by determining which Oracle tables to cache and within those tables, which columns and rows to cache. For multiple table cache groups, determine the relationship between the tables by defining which table is the root table, which tables are direct child tables of the root table, and which tables are the child tables of other child tables. For each cached column, determine the TimesTen data type to which the Oracle data type should be mapped.

See "Mappings between Oracle and TimesTen data types" for a list of valid data type mappings between the Oracle and TimesTen databases.

For each cache group, determine what type to create (read-only, SWT, AWT, user managed) based on the application requirements and objectives. Also, determine whether each cache group will be explicitly loaded or dynamic, and local or global.

Then create the cache groups.

See "Creating a cache group" for more information about creating a cache group.

9

If this TimesTen database is intended to be an active database of an active standby pair, create an active standby pair replication scheme in the database.

10

If the TimesTen database contains an active standby pair replication scheme or at least one AWT cache group, start the replication agent on the database either by calling the ttRepStart built-in procedure as the cache manager user or running a ttAdmin -repStart utility command as a TimesTen external user with the CACHE_MANAGER privilege.

See "Managing the replication agent" for more information about starting a replication agent on a TimesTen database.

11

If the TimesTen database contains at least one global cache group, attach the TimesTen database to the cache grid that the database associated with by calling the ttGridAttach built-in procedure as the cache manager user.

See "Attach a TimesTen database to a cache grid" for more information about attaching a TimesTen database to a cache grid.

12

Manually load the cache tables in explicitly loaded cache groups using LOAD CACHE GROUP statements, and load the cache tables in dynamic cache groups using proper SELECT, UPDATE or INSERT statements.

See "Loading and refreshing a cache group" for more information about manually loading cache tables in a cache group.

See "Dynamically loading a cache instance" for more information about dynamically loading cache tables in a dynamic cache group.

13

Subsequent standalone TimesTen databases can be added as members to an existing cache grid.

To create a standalone database, perform task 2. Then perform tasks 3 to 4, 6 to 8, and 10 to 11 to configure the database and add it as a member to the grid.

See "Creating and configuring a subsequent standalone TimesTen database" for details about creating another standalone TimesTen database and adding that database to an existing cache grid.

14

An active standby pair can be added as a member to an existing cache grid to achieve high availability by replicating the cache tables to another TimesTen database.

To create the active database perform task 2. Then perform tasks 3 to 4, and 6 to 11 to configure the database and add it as a member to the grid.

See "Create and configure the active database" for details about creating an active database and adding the database to an existing cache grid.

To create the standby database from the active database, perform task 2 to create a DSN for the standby database, and then run a ttRepAdmin -duplicate utility command on the standby database system as a TimesTen external user with the ADMIN privilege. For the command to succeed, the cache manager user in the active database must be granted the ADMIN privilege. Then perform tasks 4, 7, 10 and 11 to configure the database and add it as a member to the grid.

See "Create and configure the standby database" for details about creating a standby database and adding the database to an existing cache grid.

To create an optional read-only subscriber database from the standby database, perform task 2 to create a DSN for the subscriber database. Then run a ttRepAdmin -duplicate utility command on the subscriber database system as a TimesTen external user with the ADMIN privilege. For the command to succeed, the cache manager user in the standby database must be granted the ADMIN privilege. Then perform task 10 to start the replication agent on the database.

See "Create and configure the read-only subscriber database" for details about creating a read-only subscriber database for an active standby pair.


PKPKAAOEBPS/cover.htmO Cover

Oracle Corporation

PK[pTOPKAAOEBPS/whatsnew.htm What's New

What's New

This section summarizes the new features of Oracle In-Memory Database Cache release 11.2.2 that are documented in this guide and provides links to more information.

New features in Release 11.2.2.4.0

New features in Release 11.2.2.2.0

New features in Release 11.2.2.1.0

New features in Release 11.2.2.0.0

PK!PKAAOEBPS/title.htm Oracle In-Memory Database Cache User's Guide, 11g Release 2 (11.2.2)

Oracle® In-Memory Database Cache

User's Guide

11g Release 2 (11.2.2)

E21634-05

September 2012


Oracle In-Memory Database Cache User's Guide, 11g Release 2 (11.2.2)

E21634-05

Copyright © 2012, Oracle and/or its affiliates. All rights reserved.

This software and related documentation are provided under a license agreement containing restrictions on use and disclosure and are protected by intellectual property laws. Except as expressly permitted in your license agreement or allowed by law, you may not use, copy, reproduce, translate, broadcast, modify, license, transmit, distribute, exhibit, perform, publish, or display any part, in any form, or by any means. Reverse engineering, disassembly, or decompilation of this software, unless required by law for interoperability, is prohibited.

The information contained herein is subject to change without notice and is not warranted to be error-free. If you find any errors, please report them to us in writing.

If this is software or related documentation that is delivered to the U.S. Government or anyone licensing it on behalf of the U.S. Government, the following notice is applicable:

U.S. GOVERNMENT RIGHTS Programs, software, databases, and related documentation and technical data delivered to U.S. Government customers are "commercial computer software" or "commercial technical data" pursuant to the applicable Federal Acquisition Regulation and agency-specific supplemental regulations. As such, the use, duplication, disclosure, modification, and adaptation shall be subject to the restrictions and license terms set forth in the applicable Government contract, and, to the extent applicable by the terms of the Government contract, the additional rights set forth in FAR 52.227-19, Commercial Computer Software License (December 2007). Oracle America, Inc., 500 Oracle Parkway, Redwood City, CA 94065.

This software or hardware is developed for general use in a variety of information management applications. It is not developed or intended for use in any inherently dangerous applications, including applications that may create a risk of personal injury. If you use this software or hardware in dangerous applications, then you shall be responsible to take all appropriate fail-safe, backup, redundancy, and other measures to ensure its safe use. Oracle Corporation and its affiliates disclaim any liability for any damages caused by use of this software or hardware in dangerous applications.

Oracle and Java are registered trademarks of Oracle and/or its affiliates. Other names may be trademarks of their respective owners.

Intel and Intel Xeon are trademarks or registered trademarks of Intel Corporation. All SPARC trademarks are used under license and are trademarks or registered trademarks of SPARC International, Inc. AMD, Opteron, the AMD logo, and the AMD Opteron logo are trademarks or registered trademarks of Advanced Micro Devices. UNIX is a registered trademark of The Open Group.

This software or hardware and documentation may provide access to or information on content, products, and services from third parties. Oracle Corporation and its affiliates are not responsible for and expressly disclaim all warranties of any kind with respect to third-party content, products, and services. Oracle Corporation and its affiliates will not be responsible for any loss, costs, or damages incurred due to your access to or use of third-party content, products, or services.

PKgRPKAAOEBPS/caintro.htm Using the Cache Advisor

9 Using the Cache Advisor

The following sections describe and demonstrate how to use the Oracle In-Memory Database (IMDB) Cache Advisor:

Cache Advisor overview

The Oracle IMDB Cache Advisor enables Oracle Database customers to determine whether the performance of an existing Oracle Database application can be improved if the application is used with Oracle IMDB Cache, also referred to as a TimesTen database.

Cache Advisor generates recommendations of TimesTen cache group definitions based on the SQL usage in the Oracle Database application. It does this by evaluating either a captured SQL workload from the application or an existing SQL tuning set. Cache Advisor analyzes this information along with the schema definitions of the Oracle Database objects to determine table and column usage patterns. Cache Advisor also analyzes application performance for specified Oracle IMDB cache sizes, so the cache group recommendations may differ depending on the size of the specified cache. For information on SQL tuning sets, see "Automatic SQL Tuning" in the Oracle Database Performance Tuning Guide.

When evaluating the application workload or SQL tuning set, Cache Advisor recommends either using asynchronous writethrough (AWT) cache groups or read-only cache groups in the TimesTen application. It determines the type of cache groups to use based on the number of SQL statement executions in the Oracle Database application that change data values relative to the number of SQL SELECT statement executions.


Note:

Cache Advisor evaluates DML statements (SELECT, INSERT, UPDATE and DELETE) for execution porting issues, but evaluates only SELECT statements on both TimesTen and Oracle for the performance comparison.

Cache Advisor evaluates each SQL statement in isolation from any other statement and performs a ROLLBACK after each statement completes. If Cache Advisor were to commit all DML changes, then the data would change, which would alter the behavior of any subsequent Cache Advisor evaluations. For example, if Cache Advisor evaluates and commits a DELETE statement on Oracle, then when the Cache Advisor performs the evaluation again, there would be no rows to delete.


After analyzing the application workload or SQL tuning set, and comparing its performance between Oracle Database and Oracle IMDB Cache, Cache Advisor generates an HTML report that contains performance statistics comparing Oracle Database and Oracle IMDB Cache, definitions of the recommended cache tables in the TimesTen cache group that the application accesses, and the SQL statements that reference the cache tables. The report also shows which statements from the workload or SQL tuning set can be executed in Oracle IMDB Cache with no changes, and which statements require modification before they can be executed. See Chapter 13, "Compatibility Between TimesTen and Oracle" for information about differences that may be encountered.

Cache Advisor also generates a ttIsql script that can be used to implement the recommended cache group definitions. The user-editable script contains SQL statements such as CREATE CACHE GROUP, LOAD CACHE GROUP, CREATE INDEX, CREATE SYNONYM, and CREATE VIEW.

Cache Advisor requires the use of three databases:

Figure 9-1 Demonstration of the three databases used by the Cache Advisor

Description of Figure 9-1 follows
Description of "Figure 9-1 Demonstration of the three databases used by the Cache Advisor"

Setting up the Oracle and TimesTen host systems

Before you can use Cache Advisor, you must first install TimesTen and then configure the Oracle and TimesTen systems.


Note:

See the Oracle TimesTen In-Memory Database Installation Guide for information about installing TimesTen.

The following sections provide an example to show how to configure each database and host in order to execute the Cache Advisor. This example uses one of the Quick Start sample programs as a demonstration for the application that executes the SQL workload.

To set up the Oracle and TimesTen hosts and databases, complete the following tasks:

  1. Configure the target Oracle database and host system

  2. Configure the repository Oracle database and host system

  3. Configure the TimesTen database and host system

See "Cache Advisor configuration options and usage guidelines" for details on the configuration options and usage guidelines when installing and configuring each host and database included in the Cache Advisor environment.

Configure the target Oracle database and host system

The target Oracle database is where the application schema is defined. This is the database that the user application will be accessing. Cache Advisor requires that the version of the target database be Oracle Database Enterprise Edition 10g Release 2 (10.2.0.4) or later.

Log onto the system where the target database resides and create a directory where Cache Advisor can export workload and schema information to dump files using Data Pump. This directory can be created by any operating system user on the target system. The directory must be created on a device that is local to the target system and not network mounted.

The owner of the directory is referred to as the target Cache Advisor user. In the following example, the target Cache Advisor user is tgtusr and the directory is /local/tgtusr/targetdir.

% mkdir /local/tgtusr/targetdir

Determine the file system that the directory resides on. On Linux systems, this information can be obtained by running the df operating system command. In this example, the file system that the /local/tgtusr/targetdir directory resides on is /dev/sda1.

Cache Advisor must be able to access the contents of the dump files from the repository system to perform its analysis. However, the permissions placed on those files by Data Pump prevent them from being accessed through NFS or transferred to the repository system using ftp. To access the dump files from the repository system, set an access control list (ACL) on the directory where the files will reside on the target system.

As the operating system root user, enable the setting of ACLs on the file system.

# mount -o remount,acl /dev/sda1

Change the permissions on the directory so that only the target Cache Advisor user can read from and write to it. Then set ACLs on the directory and any files created in the directory to read, write, and execute for the target Cache Advisor user and the operating system user that is running the Oracle Database server on the target system (typically the oracle user). On Linux systems, ACLs can be set by running the operating system setfacl command.

% chmod 700 /local/tgtusr/targetdir
% setfacl -m u:tgtusr:rwx /local/tgtusr/targetdir
% setfacl -m d:u:tgtusr:rwx /local/tgtusr/targetdir
% setfacl -m u:oracle:rwx /local/tgtusr/targetdir
% setfacl -m d:u:oracle:rwx /local/tgtusr/targetdir

Next, set up the target database for use by Oracle IMDB Cache. Start SQL*Plus from an operating system shell on the TimesTen database system and connect to the target database as the Oracle sys user. In this example, the net service name of the target database is targetdb.

% cd TimesTen_install_dir/oraclescripts
% sqlplus sys@targetdb as sysdba
Enter password: password

Use SQL*Plus to create a default tablespace that will be used by both the Oracle timesten user and the cache administration user. This tablespace must only be used to store objects for Oracle IMDB Cache and should not be shared with other applications. In this example, the name of the default tablespace is cachetblsp. For more information about the timesten user, see "Create users in the Oracle database".

Run the SQL*Plus script TimesTen_install_dir/oraclescripts/initCacheGlobalSchema.sql to create the timesten user and its metadata tables, and the TT_CACHE_ADMIN_ROLE role that defines privileges to be granted to this user. Pass the default tablespace as an argument to the initCacheGlobalSchema.sql script.

SQL> CREATE TABLESPACE cachetblsp DATAFILE 'datfttuser.dbf' SIZE 100M;
SQL> @initCacheGlobalSchema "cachetblsp"

Next, use SQL*Plus to create a target Oracle user, if this user does not already exist.


Note:

Since this example is using the Quick Start sample program, the example creates oratt as the schema owner.

The target Oracle user owns the Oracle objects that will be accessed by the SQL workload application and are candidates for caching in a TimesTen database. The target Oracle user is the same as the schema user that is described in "Create users in the Oracle database".

Grant this user at least the minimum set of privileges required to create tables in the Oracle database to be cached in a TimesTen database. In this example, the target Oracle user is oratt.

SQL> CREATE USER oratt IDENTIFIED BY oracle;
SQL> GRANT CREATE SESSION, RESOURCE TO oratt;

Then use SQL*Plus to create a cache administration user. Run the SQL*Plus script TimesTen_install_dir/oraclescripts/grantCacheAdminPrivileges.sql to grant the cache administration user the minimum set of privileges required to process cache group operations. For information on cache groups, see "Cache groups and cache tables".


Note:

The target Oracle user and the cache administration user must be different users. In addition, when you create the repository Cache Advisor user, this user also must be a different user.

Pass the cache administration user name as an argument to the grantCacheAdminPrivileges.sql script. In this example, the cache administration user is cacheuser and the name of its default tablespace is cachetblsp. For more information about the cache administration user, see "Create users in the Oracle database".

SQL> CREATE USER cacheuser IDENTIFIED BY oracache
  2  DEFAULT TABLESPACE cachetblsp QUOTA UNLIMITED ON cachetblsp;
SQL> GRANT SELECT ANY TABLE, DELETE ANY TABLE
  2  INSERT ANY TABLE, UPDATE ANY TABLE TO cacheuser;
SQL> @grantCacheAdminPrivileges "cacheuser"

Run the SQL*Plus script TimesTen_install_dir/oraclescripts/ttca_sysdbaSetupTarget.sql to perform the following operations:

  • Create the TTCA_TARGET_ROLE role that defines privileges to be granted to the target Oracle user.

  • Create or specify an Oracle directory object used for file operations into and out of the target database. The ttca_sysdbaSetupTarget.sql script associates the directory object with the local directory that the target Cache Advisor user created earlier. See "CREATE DIRECTORY" in the Oracle Database SQL Language Reference for information about Oracle directory objects.

After running the ttca_sysdbaSetupTarget.sql script, exit the SQL*Plus session.

SQL> @ttca_sysdbaSetupTarget
...
Please enter a target Oracle database user name to access the target database:
 oratt
...
Press ENTER for a list of existing directory objects on the target database 
<Enter>
<existing directory objects on the target database are shown>
Please press ENTER to continue <Enter>

********************************************************************************
*** Please do one of the following:
*** 1. Enter an existing directory object on the target Oracle database
***    using a directory object name listed above that is not defined 
***    on a network-mounted path
*** 2. Enter a new directory object name to be created
********************************************************************************
? target_dir

********************************************************************************
*** Creating new directory object TARGET_DIR.
*** Enter the directory path on the target system to use in the definition
*** of TARGET_DIR
********************************************************************************
? /local/tgtusr/targetdir
...
SQL> exit

Configure the repository Oracle database and host system

The repository Oracle database is where Cache Advisor performs analysis of the SQL workload that is being run on the target Oracle database. Cache Advisor also does report and script generation in the repository database, as well as store tasks. A task is an object that contains information about the workload, performance results, and Cache Advisor options specified by the user. The repository database is a scratch database to be used only by Cache Advisor and should not be shared with other applications.

To use Cache Advisor, you must first install and configure a repository database of Oracle Database Enterprise Edition 11g Release 2 (11.2.0.2) or later. The version of the repository database must also be the same or later than the version of the target Oracle database.

Log onto the system where the repository database resides and create a directory where Cache Advisor will import workload and schema information from dump files using Data Pump. This directory can be created by any operating system user on the repository system. The owner of this directory will be referred to as the repository Cache Advisor user. In this example, the repository Cache Advisor user is reposusr.

The directory must be created on a device that is local to the repository system and not network mounted. In this example, the directory is /local/reposusr/repositorydir.

% mkdir /local/reposusr/repositorydir

Determine the file system that the directory resides on. On Linux systems, this information can be obtained by running the df operating system command. In this example, the file system that the /local/reposusr/repositorydir directory resides on is /dev/sfa1.

Cache Advisor must be able to access the contents of the dump files from the repository system. However, the permissions placed on those files by Data Pump prevent them from being accessed through NFS or transferred to the repository system using ftp. To access the dump files from the repository system, set an access control list (ACL) on the directory where the files will reside on the repository system.

As the operating system root user, enable the setting of ACLs on the file system, if is not already enabled.

# mount -o remount,acl /dev/sfa1

Change the permissions on the directory so that only the repository Cache Advisor user can read from and write to it. Then set ACLs on the directory and any files created in the directory to read, write and execute for the repository Cache Advisor user and the operating system user that is running the Oracle Database server on the repository system (typically the oracle user). On Linux systems, ACLs can be set by running the operating system setfacl command.

% chmod 700 /local/reposusr/repositorydir
% setfacl -m u:reposusr:rwx /local/reposusr/repositorydir
% setfacl -m d:u:reposusr:rwx /local/reposusr/repositorydir
% setfacl -m u:oracle:rwx /local/reposusr/repositorydir
% setfacl -m d:u:oracle:rwx /local/reposusr/repositorydir

Start SQL*Plus from an operating system shell on the TimesTen database system and connect to the repository database as the Oracle sys user. In this example, the net service name of the repository database is repositorydb.

% cd TimesTen_install_dir/oraclescripts
% sqlplus sys@repositorydb as sysdba
Enter password: password

Run the SQL*Plus script TimesTen_install_dir/oraclescripts/ttca_sysdbaSetupRepository.sql to perform the following operations:

  • Create a user that owns the objects in the repository database used to analyze the SQL workload run on the target Oracle database, and create the ttca_ts tablespace used to store these objects.

  • Create or specify an Oracle directory object used for file operations into and out of the repository database. The ttca_sysdbaSetupRepository.sql script associates the directory object with the local directory that the repository Cache Advisor user created earlier. See "CREATE DIRECTORY" in Oracle Database SQL Language Reference for information about Oracle directory objects.

After running the ttca_sysdbaSetupRepository.sql script, exit the SQL*Plus session.

SQL> @ttca_sysdbaSetupRepository
...
Press ENTER to create the repository Oracle database user with user name
 TTCACHEADVISOR, or enter an alternative user name for the repository database 
 user: <Enter>
Please enter a password for the TTCACHEADVISOR user: ttca
Please confirm the password for the TTCACHEADVISOR user: ttca
...
Press ENTER for a list of existing directory objects on the repository database 
<Enter>
<existing directory objects on the repository database are shown>
Please press ENTER to continue <Enter>

********************************************************************************
*** Please do one of the following:
*** 1. Enter an existing directory object on the repository Oracle database
***    using a directory object name listed above that is not defined on a
***    network-mounted path
*** 2. Enter a new directory object name to be created
********************************************************************************
? repository_dir

********************************************************************************
*** Creating new directory object REPOSITORY_DIR.
*** Enter the directory path on the repository system to use in the definition
*** of REPOSITORY_DIR
********************************************************************************
? /local/reposusr/repositorydir
...
SQL> exit

Configure the TimesTen database and host system

The TimesTen database is where Cache Advisor defines and evaluates the recommended cache groups whose cache tables correspond to the tables in the target Oracle database. The TimesTen database is a test database to be used only by Cache Advisor and should not be shared with other applications.

In this example, NFS is the network connection that will be used to transfer files, such as the Data Pump dump files that contain workload and schema information, between the target Oracle database system, repository Oracle database system, and TimesTen database system. On the target system, export the directory that was created by the target Cache Advisor user to NFS clients. Similarly on the repository Oracle system, export the directory that was created by the repository Cache Advisor user to NFS clients. On Linux systems, add an entry to the /etc/exports file for each directory to be exported to NFS clients. This file must be updated on both the target system and the repository system. Then run the exportfs -a operating system command as root on both systems for updates to the files to take effect.

As the TimesTen instance administrator user, log onto the system where the TimesTen database will reside and create two directories.

% mkdir /home/ttuser/targetdir
% mkdir /home/ttuser/repositorydir

As the operating system root user, network mount the first directory to the directory on the target system that was created by the target Cache Advisor user. Then, network mount the second directory to the directory on the repository system that was created by the repository Cache Advisor user.

# mount -t nfs targethost:/local/tgtusr/targetdir /home/ttuser/targetdir
# mount -t nfs reposhost:/local/reposusr/repositorydir
 /home/ttuser/repositorydir

In the following data source name (DSN) example, the Net service name of the target Oracle database is targetdb and its database character set is AL32UTF8. The TimesTen database character set must match the database character set of the target Oracle database. You can determine the database character set of an Oracle database by executing the following query in SQL*Plus as any user:

SQL> SELECT value FROM nls_database_parameters 
 WHERE parameter='NLS_CHARACTERSET';

In the .odbc.ini file that resides in your home directory or the TimesTen_install_dir/info/sys.odbc.ini file, create a TimesTen DSN cacheadv and set the following connection attributes:


Note:

In this example, Cache Advisor sets the CacheGridEnable attribute to 0, so that the user is not required to create a grid. For more details, see "CacheGridEnable" in the Oracle TimesTen In-Memory Database Reference.

[cacheadv]
DataStore=/users/OracleCache/cacheadv
PermSize=64
OracleNetServiceName=targetdb
DatabaseCharacterSet=AL32UTF8
CacheGridEnable=0

Note:

See "Define a DSN for the TimesTen database" for more information about defining a DSN for a TimesTen database that is used to cache data from an Oracle database.

See "Managing TimesTen Databases" in the Oracle TimesTen In-Memory Database Operations Guide for more information about TimesTen DSNs.


Set up the TimesTen database for use by Oracle IMDB Cache. Start the ttIsql utility on the TimesTen system from an operating system shell and connect to the cacheadv DSN as the TimesTen instance administrator user to create the TimesTen database that will be used to cache data from the target Oracle database.

% ttIsql cacheadv

Use ttIsql to create a cache manager user. Grant this user at least the minimum set of privileges required to create and perform operations on cache groups. In the following example, the cache manager user name is cacheuser, which is the same name as the Oracle cache administration user that was created in the target Oracle database.

Command> CREATE USER cacheuser IDENTIFIED BY ttcache;
Command> GRANT CREATE SESSION, CACHE_MANAGER, CREATE ANY TABLE TO cacheuser;

Note:

For more information about the cache manager user, see "Create users in the TimesTen database".

See "Managing Access Control" in Oracle TimesTen In-Memory Database Operations Guide for more information about TimesTen users and privileges.


Next, use ttIsql to call the ttCacheUidPwdSet built-in procedure to set the Oracle cache administration user name and password. Then exit the ttIsql session.

Command> call ttCacheUidPwdSet('cacheuser','oracache');
Command> exit

The cache administration user name and password need to be set only once in a TimesTen database. See "Set the cache administration user name and password" for information about how this setting is used in the TimesTen database.

Cache Advisor configuration options and usage guidelines

The following sections describe supported configuration options and guidelines for using Oracle In-Memory Database (IMDB) Cache Advisor:

Supported configuration options for hosts and databases

Cache Advisor supports the following configuration options for hosts and databases included in the Cache Advisor environment:

  • The target Oracle database, which must be Oracle0jϕ Database Enterprise Edition 10g Release 2 (10.2.0.4) or later, the repository Oracle database, which must be Oracle Database Enterprise Edition 11g Release 2 (11.2.0.2) or later, and the TimesTen database all reside on separate host systems. The target Oracle database cannot be a later version than the repository Oracle database. This configuration is preferred, because Cache Advisor operations (such as workload analysis and report generation) have minimal impact on the target database, which can be a production database. It accurately evaluates performance for both the target database and the TimesTen database.

  • The repository Oracle database, which must be Oracle Database Enterprise Edition 11g Release 2 (11.2.0.2) or later, and the TimesTen database reside on the same host system. The target Oracle database, which must be Oracle Database Enterprise Edition 10g Release 2 (10.2.0.4) or later, resides on a separate host system. The target Oracle database cannot be a later version than the repository Oracle database. This configuration accurately evaluates performance for the target database and can accurate evaluate performance for the TimesTen database.

  • A single Oracle database, which must be Oracle Database Enterprise Edition 11g Release 2 (11.2.0.2) or later, serves as both the target and repository database. The TimesTen database resides on a separate host system. This configuration is convenient, but does not accurately evaluate performance for the target database. It accurately evaluates performance for the TimesTen database. The target Oracle database should be a test database and not a production database.

  • The target Oracle database, which must be Oracle Database Enterprise Edition 10g Release 2 (10.2.0.4) or later, the repository Oracle database, which must be Oracle Database Enterprise Edition 11g Release 2 (11.2.0.2) or later, where both reside on the same host system. The target Oracle database cannot be a later version than the repository Oracle database. This configuration can be used to demonstrate Cache Advisor on a laptop computer and identify porting issues, but does not accurately evaluate performance for the target database nor the TimesTen database. The target Oracle database should be a test database and not a production database.

Restrictions and assumptions

The design of the cache schema recommended by Cache Advisor assumes that the user application will establish a connection to the TimesTen database and a separate connection to the target Oracle database.

Cache Advisor supports most TimesTen DSN attribute settings. However, Cache Advisor does not support the following attribute settings:

  • Temporary=1 (temporary or non-persistent TimesTen database)

  • TypeMode=1 (TimesTen data type mode)

  • DDLCommitBehavior=1 (do not automatically commit DDL statements)

  • DuplicateBindMode=1 (consider dynamic parameters with the same name as identical)

  • PLSQL=0 (disable the use of TimesTen PL/SQL)

  • DynamicLoadEnable=0 (disable dynamic loading of data from Oracle tables into TimesTen cache tables)

Running a SQL workload application

This example uses the OCI version of the throughput benchmark (tptbmOCI) to generate a SQL workload on the target Oracle database.

Build and run the demo program as any operating system user on the TimesTen system. The net service name of the target database is targetdb. The target Oracle user is oratt. The password of the oratt user is oracle. The application table will be populated with 252 = 625 rows and the maximum number of SQL statements per transaction is 1000.

% cd TimesTen_install_dir/quickstart/sample_code/oci
% make tptbmOCI
% tptbmOCI -service targetdb -user oratt -key 25 -max 1000
Enter password for oratt : password
...
Load the oratt.vpn_users table with 625 rows of data
Run 10000 txns with 1 process: 80% read, 20% update, 0% insert, 0% delete

Running the Cache Advisor

While the tptbmOCI workload application is running on the target Oracle database, in a separate window run the ttCacheAdvisor utility on the TimesTen system from an operating system shell as the instance administrator user. Specify the target Oracle database, repository Oracle database, and TimesTen database involved in the evaluation.

% ttCacheAdvisor -oraTarget -oraConn "oratt@targetdb" \
-oraDirObject target_dir -oraDirNfs /home/ttuser/targetdir \
-oraRepository -oraConn "ttcacheadvisor@repositorydb" \
-oraDirObject repository_dir -oraDirNfs /home/ttuser/repositorydir \
-ttConn "DSN=cacheadv;UID=cacheuser" \
-report /home/ttuser/CAreport -task sampletask -captureCursorCache 10 
-evalSqlPerf

Enter password for Oracle user oratt@targetdb: password
31.16:21:03 Info: beginning Oracle batch operation checkAuthorization on 
oratt@targetdb
31.16:21:03 Info: Oracle batch operation checkAuthorization completed
Enter password for Oracle user ttcacheadvisor@repositorydb: password
31.16:21:05 Info: beginning Oracle batch operation checkAuthorization on 
ttcacheadvisor@repositorydb
31.16:21:06 Info: Oracle batch operation checkAuthorization completed
31.16:21:06 Info: beginning Oracle batch operation checkOraUser on 
oratt@targetdb
31.16:21:06 Info: Oracle batch operation checkOraUser completed
31.16:21:06 Info: beginning TimesTen batch operation checkUserExists on 
"dsn=cacheadv;uid=cacheuser"
31.16:21:07 Info: TimesTen batch operation checkUserExists completed

Enter password for TimesTen user cacheuser (dsn=cacheadv): password
31.16:21:10 Info: beginning TimesTen batch operation checkTTuserAuthorization 
on "dsn=cacheadv;uid=cacheuser"
31.16:21:11 Info: TimesTen batch operation checkTTuserAuthorization completed
Enter password for Oracle user cacheuser@targetdb: password
31.16:21:14 Info: beginning Oracle batch operation checkTToraclepwdAttribute 
on cacheuser@targetdb
31.16:21:14 Info: Oracle batch operation checkTToraclepwdAttribute completed
31.16:21:14 Info: beginning Oracle batch operation verifyTargetConfig on 
oratt@targetdb
31.16:21:25 Info: Oracle batch operation verifyTargetConfig completed
...

The previous example used the ttCacheAdvisor utility options as follows:

If the passwords are not specified in the connection strings for each database, the ttCacheAdvisor utility will prompt for the passwords of each user connecting to the TimesTen and Oracle databases used in the Cache Advisor evaluation.

For this example, the following user passwords are requested:

The ttCacheAdvisor utility generates periodic status messages as it analyzes the application workload running on the target database.

When ttCacheAdvisor completes, it creates an HTML report showing performance statistics as well as information such as which SQL statements from the workload can and cannot be executed in TimesTen. By default, the files that constitute the report reside in the task-name directory where the utility was invoked. In this example, the directory is specified with the -report option. To view the report, open the index.htm file in the report files directory from a web browser. The task name, by default, is user-name_host-name_timestamp. In this example, the task name is overridden with the -task option.

The ttCacheAdvisor utility also generates an implementation script file named ttCacheAdvisor_task-name_timestamp.sql in the directory where the utility was invoked. This script can be run with the ttIsql utility to create objects in the TimesTen database used to implement the caching of the Oracle objects that were accessed by the application.

% ttIsql -f ttCacheAdvisor_sampletask_20120531164101.sql
 "DSN=cacheadv;UID=cacheuser;OraclePWD=oracache"

For more information about the report and implementation script, see "Viewing the Cache Advisor reports".

For information about the syntax for ttCacheAdvisor, see "ttCacheAdvisor" in the Oracle TimesTen In-Memory Database Reference.

Viewing the Cache Advisor reports

This section provides examples of the report pages generated by the Cache Advisor. The report can be viewed using the following Web browsers:

To view the report, open the index.htm file in the report files directory from a Web browser.

If the -evalSqlPerf option was specified when the ttCacheAdvisor utility was executed, the report shows the average response time for the SQL SELECT statements that were executed in the target Oracle database. It also shows the average response time for these statements when executed in the TimesTen database with the user-specified cache size. The complete IMDB cache size is the minimum TimesTen database size required to cache all of the objects that were accessed by the SQL workload and can be supported by TimesTen.

Figure 9-2 Cache Advisor report home page

Description of Figure 9-2 follows
Description of "Figure 9-2 Cache Advisor report home page"

Figure 9-3 Cache Advisor findings and recommendations

Description of Figure 9-3 follows
Description of "Figure 9-3 Cache Advisor findings and recommendations"

You can view the SQL statements that were executed in the workload by clicking the link under the SQL Statements column on the home page that indicates the number of statements in the workload. In this case, click the link of the first 2 where it says "2 of 2".

Figure 9-4 Viewing the number of SQL statements executed in the workload

Description of Figure 9-4 follows
Description of "Figure 9-4 Viewing the number of SQL statements executed in the workload"

You can click an individual SQL statement to see the response time and other statistics for that statement. In this example, when you click the link of the second statement, you will see the following information about the SELECT statement:

Figure 9-5 Information for a specific SQL statement executed during Cache Advisor evaluation

Description of Figure 9-5 follows
Description of "Figure 9-5 Information for a specific SQL statement executed during Cache Advisor evaluation"

You can click the name of the cache group to see the definition of the cache group and its cache tables, as well as the SQL statements that referenced the cache group. In this example, the following report page appears when you click the CG1_USERSPECCACHE link:

Figure 9-6 Cache group details

Description of Figure 9-6 follows
Description of "Figure 9-6 Cache group details"

Figure 9-7 SQL statements used for cache group

Description of Figure 9-7 follows
Description of "Figure 9-7 SQL statements used for cache group"

From the home page, you can access the text of the implementation script by clicking the "Configure an IMDB Cache for your application" link. Then, from the next page, click the "Implementation Script" link.


Note:

For more details on the implementation script, see "Running the Cache Advisor".

The following shows an example of an implementation script:

Figure 9-8 Implementation script example

Description of Figure 9-8 follows
Description of "Figure 9-8 Implementation script example"

Figure 9-9 Continuation of implementation script example

Description of Figure 9-9 follows
Description of "Figure 9-9 Continuation of implementation script example"

The name of the script is ttCacheAdvisor_task-name_timestamp.sql and it resides in the directory where the ttCacheAdvisor utility was invoked. This script can be run with the ttIsql utility to create objects in the TimesTen database used to implement the caching of the Oracle objects that were accessed by the application.

% ttIsql -f ttCacheAdvisor_sampletask_20120531164101.sql 
 "DSN=cacheadv;UID=cacheuser;OraclePWD=oracache"

You can obtain database and system information about the target Oracle database (Workload Collection), repository Oracle database and TimesTen database (Client) by clicking the "Click here for information about the configuration that was used to generate this report" link from the home page.

Figure 9-10 Configuration overview page

Description of Figure 9-10 follows
Description of "Figure 9-10 Configuration overview page"

Figure 9-11 Repository and client configuration information

Description of Figure 9-11 follows
Description of "Figure 9-11 Repository and client configuration information"

Cleaning up the Oracle and TimesTen databases and host systems

Complete the following tasks to restore the Oracle and TimesTen systems to their original state after you have finished evaluating the application workload that was run on the target Oracle database:

  1. Clean up the target Oracle database and host system

  2. Clean up the repository Oracle database and host system

  3. Clean up the TimesTen database and host system

Clean up the target Oracle database and host system

Start SQL*Plus from an operating system shell on the TimesTen database system and connect to the target Oracle database as the sys user. Then, use SQL*Plus as follows to clean up the target Oracle database and its host system:

  1. Drop the timesten user, the oratt target Oracle user (if you created this user because it did not exist prior to configuring the target database), and the cacheuser cache administration user.

    % sqlplus sys@targetdb as sysdba
    Enter password: password
    SQL> DROP USER timesten CASCADE;
    SQL> DROP USER oratt CASCADE;
    SQL> DROP USER cacheuser CASCADE;
    

    Note:

    Specifying CASCADE in a DROP USER statement drops all objects, such as tables owned by the user, before dropping the user itself.

  2. Drop the TT_CACHE_ADMIN_ROLE role, the TTCA_TARGET_ROLE role, and the target_dir directory object.

    SQL> DROP ROLE TT_CACHE_ADMIN_ROLE;
    SQL> DROP ROLE TTCA_TARGET_ROLE;
    SQL> DROP DIRECTORY target_dir;
    SQL> exit
    
  3. Drop the cachetblsp default tablespace used by the timesten user and cache administration user, including the contents of the tablespace and its data file. Exit the SQL*Plus session.

    SQL> DROP TABLESPACE cachetblsp INCLUDING CONTENTS AND DATAFILES;
    SQL> exit
    

Note:

The above steps do not drop the schemas that were created for the workload by the Cache Advisor. You can keep the schemas for use by another application workload, if they use the same schemas, or if you want to re-execute the same workload after re-creating the user and tablespace. If not, you can either manually drop the schemas created or, if the target database is a test database, destroy the database.

Clean up the repository Oracle database and host system

Start SQL*Plus from an operating system shell on the TimesTen database system and connect to the repository Oracle database as the sys user. Use SQL*Plus as follows to clean up the repository Oracle database and its host system:

  1. Drop the ttcacheadvisor user that owns the objects in the repository database used to analyze the SQL workload run on the target Oracle database.

    % sqlplus sys@repositorydb as sysdba
    Enter password: password
    SQL> DROP USER ttcacheadvisor CASCADE;
    
  2. Drop the sys.wri$_adv_sqla_tt_tabcols table and the repository_dir directory object.

    SQL> DROP TABLE sys.wri$_adv_sqla_tt_tabcols;
    SQL> DROP DIRECTORY repository_dir;
    
  3. Drop the ttca_ts tablespace used by the ttCacheAdvisor user, including the contents of the tablespace and its data file. Exit the SQL*Plus session.

    SQL> DROP TABLESPACE ttca_ts INCLUDING CONTENTS AND DATAFILES;
    SQL> exit
    

Clean up the TimesTen database and host system

Start the ttIsql utility and connect to the cacheadv DSN as the TimesTen instance administrator user. Perform the following to clean up the TimesTen database:

  1. Use ttIsql to grant the DROP ANY TABLE privilege to the cache manager user so that this user can drop the underlying cache tables when dropping the cache groups. Then, exit this ttIsql session.

    % ttIsql cacheadv
    Command> GRANT DROP ANY TABLE TO cacheuser;
    Command> exit
    
  2. Start the ttIsql utility and connect to the cacheadv DSN as the cache manager user. The password of the TimesTen cache manager user cacheuser is ttcache. Use ttIsql to call the ttRepStop built-in procedure to stop the replication agent on the TimesTen database. Drop the cg1_userspeccache AWT cache group. Call the ttCacheStop built-in procedure to stop the cache agent on the TimesTen database. Exit this ttIsql session.

    % ttIsql "DSN=cacheadv;UID=cacheuser;OraclePWD=oracache"
    Enter password for 'cacheuser': password
    Command> call ttRepStop;
    Command> DROP CACHE GROUP cg1_userspeccache;
    Command> call ttCacheStop;
    Command> exit
    
  3. Use the ttDestroy utility to connect to the cacheadv DSN and destroy the TimesTen database.

    % ttDestroy cacheadv
    
PKU:0PKAAOEBPS/define.htm Defining Cache Groups

4 Defining Cache Groups

The following sections describe the different types of cache groups and how to define them:

Cache groups and cache tables

A cache group defines the Oracle data to cache in the TimesTen database. When you create a cache group, cache tables are created in the TimesTen database that correspond to the Oracle tables being cached.

A separate table definition must be specified in the cache group definition for each Oracle table that is being cached. The owner, table name, and cached column names of a TimesTen cache table must match the owner, table name, and column names of the corresponding cached Oracle table. The cache table can contain all or a subset of the columns and rows of the cached Oracle table. Each TimesTen cache table must have a primary key.

Before you define the cache group table, create the Oracle tables that are to be cached. Each table should be either:

A TimesTen database can contain multiple cache groups. A cache group can contain one or more cache tables. An Oracle table cannot be cached in more than one cache group within the same TimesTen database.

Creating indexes on a cache table in TimesTen can help speed up particular queries issued on the table in the same fashion as on a TimesTen regular table. You can create non-unique indexes on a TimesTen cache table. Do not create unique indexes on a cache table that do not match any unique index on the cached Oracle table. Otherwise, it can cause unique constraint failures in the cache table that do not occur in the cached Oracle table, and result in these tables in the two databases being no longer synchronized with each other when autorefresh operations are performed.

Single-table cache group

The simplest cache group is one that caches a single Oracle table. In a single-table cache group, there is a root table but no child tables.

Figure 4-1 shows a single-table cache group target_customers that caches the customer table.

Figure 4-1 Cache group with a single table

Description of Figure 4-1 follows
Description of "Figure 4-1 Cache group with a single table"

Multiple-table cache group

A multiple-table cache group is one that defines a root table and one or more child tables. A cache group can only contain one root table. Each child table must reference the primary key or a unique index of the root table or of another child table in the cache group using a foreign key constraint. Although tables in a multiple-table cache group must be related to each other in the TimesTen database through foreign key constraints, it is not required that the tables be related to each other in the Oracle database. The root table does not reference any table in the cache group with a foreign key constraint.

Figure 4-2 shows a multiple-table cache group customer_orders that caches the customer, orders and order_item tables. Each parent table in the customer_orders cache group has a primary key that is referenced by a child table through a foreign key constraint. The customer table is the root table of the cache group because it does not reference any table in the cache group with a foreign key constraint. The primary key of the root table is considered the primary key of the cache group. The orders table is a child table of the customer root table. The order_item table is a child table of the orders child table.

Figure 4-2 Cache group with multiple tables

Description of Figure 4-2 follows
Description of "Figure 4-2 Cache group with multiple tables"

The table hierarchy in a multiple-table cache group can designate child tables to be parents of other child tables. A child table cannot reference more than one parent table. However, a parent table can be referenced by more than one child table.

Figure 4-3 shows an improper cache table hierarchy. Neither the customer nor the product table references a table in the cache group with a foreign key constraint. This results in the cache group having two root tables which is invalid.

Figure 4-3 Problem: Cache group contains two root tables

Description of Figure 4-3 follows
Description of "Figure 4-3 Problem: Cache group contains two root tables"

To resolve this problem and cache all the tables, create a cache group which contains the customer, orders, and order_item tables, and a second cache group which contains the product and the inventory tables as shown in Figure 4-4.

Figure 4-4 Solution: Create two cache groups

Description of Figure 4-4 follows
Description of "Figure 4-4 Solution: Create two cache groups"

Creating a cache group

You create cache groups by using a CREATE CACHE GROUP SQL statement or by using Oracle SQL Developer, a graphical tool. For more information about SQL Developer, see Oracle SQL Developer Oracle TimesTen In-Memory Database Support User's Guide.

Cache groups are identified as either system managed or user managed. System managed cache groups enforce specific behaviors, while the behavior of a user managed cache group can be customized. System managed cache group types include:

See "User managed cache group" for information about user managed cache groups.

The following topics also apply to creating a cache group:

Cache groups must be created by and are owned by the cache manager user.

You cannot cache Oracle data in a temporary database.

Read-only cache group

A read-only cache group enforces a caching behavior where the TimesTen cache tables cannot be updated directly, and committed updates on the cached Oracle tables are automatically refreshed to the cache tables as shown in Figure 4-5.

Figure 4-5 Read-only cache group

Description of Figure 4-5 follows
Description of "Figure 4-5 Read-only cache group"

If the TimesTen database is unavailable for whatever reason, you can still update the Oracle tables that are cached in a read-only cache group. When the TimesTen database returns to operation, updates that were committed on the cached Oracle tables while the TimesTen database was unavailable are automatically refreshed to the TimesTen cache tables.

The following are the definitions of the Oracle tables that will be cached in the read-only cache groups that are defined in Example 4-1, Example 4-10, Example 4-11, Example 4-19 and Example 4-20. The Oracle tables are owned by the schema user oratt. The oratt user must be granted the CREATE SESSION and RESOURCE privileges before it can create tables.

CREATE TABLE customer
(cust_num NUMBER(6) NOT NULL PRIMARY KEY,
 region   VARCHAR2(10),
 name     VARCHAR2(50),
 address  VARCHAR2(100));

CREATE TABLE orders
(ord_num      NUMBER(10) NOT NULL PRIMARY KEY,
 cust_num     NUMBER(6) NOT NULL,
 when_placed  DATE NOT NULL,
 when_shipped DATE NOT NULL);

The Oracle user with the same name as the TimesTen cache manager user must be granted the SELECT privilege on the oratt.customer and oratt.orders tables in order for the cache manager user to create a read-only cache group that caches these tables, and for autorefresh operations to occur from the cached Oracle tables to the TimesTen cache tables.

Use the CREATE READONLY CACHE GROUP statement to create a read-only cache group.

Example 4-1 Creating a read-only cache group

The following statement creates a read-only cache group customer_orders that caches the tables oratt.customer (root table) and oratt.orders (child table):

CREATE READONLY CACHE GROUP customer_orders
FROM oratt.customer
 (cust_num NUMBER(6) NOT NULL,
  region   VARCHAR2(10),
  name     VARCHAR2(50),
  address  VARCHAR2(100),
  PRIMARY KEY(cust_num)),
oratt.orders
 (ord_num      NUMBER(10) NOT NULL,
  cust_num     NUMBER(6) NOT NULL,
  when_placed  DATE NOT NULL,
  when_shipped DATE NOT NULL,
  PRIMARY KEY(ord_num),
  FOREIGN KEY(cust_num) REFERENCES oratt.customer(cust_num));

The cache tables in a read-only cache group cannot be updated directly. However, you can set the passthrough level to 2 to allow committed update operations issued on a TimesTen cache table to be passed through and processed on the cached Oracle table, and then have the updates be automatically refreshed into the cache table. See "Setting a passthrough level".

The effects of a passed through statement on cache tables in a read-only cache group do not occur in the transaction in which the update operation was issued. Instead, they are seen after the passed through update operation has been committed on the Oracle database and the next automatic refresh of the cache group has occurred. The Oracle user with the same name as the TimesTen cache manager user must be granted the INSERT, UPDATE and DELETE privileges on the Oracle tables that are cached in the read-only cache group in order for the passed through update operations to be processed on the cached Oracle tables.

If you manually created the Oracle objects used to enforce the predefined behaviors of an autorefresh cache group as described in "Manually create Oracle objects used to manage caching of Oracle data", you need to set the autorefresh state to OFF when creating the cache group.

Then you need to run the ttIsql utility's cachesqlget command to generate a SQL*Plus script used to create a log table and a trigger in the Oracle database for each Oracle table that is cached in the read-only cache group. See "Manually creating Oracle objects for autorefresh cache groups" for information about how to create these objects.

Restrictions with read-only cache groups

The following restrictions apply when using a read-only cache group:

  • The cache tables cannot be updated directly.

  • Only the ON DELETE CASCADE and UNIQUE HASH ON cache table attributes can be used in the cache table definitions.

    See "ON DELETE CASCADE cache table attribute" for more information about the ON DELETE CASCADE cache table attribute.

    See "UNIQUE HASH ON cache table attribute" for more information about the UNIQUE HASH ON cache table attribute.

  • A FLUSH CACHE GROUP statement cannot be issued on the cache group.

    See "Flushing a user managed cache group" for more information about the FLUSH CACHE GROUP statement.

  • A TRUNCATE TABLE statement issued on a cached Oracle table is not automatically refreshed to the TimesTen cache table.

  • A LOAD CACHE GROUP statement can only be issued on the cache group if the cache tables are empty, unless the cache group is dynamic.

    See "Loading and refreshing a cache group" for more information about the LOAD CACHE GROUP statement.

    See "Dynamic cache groups" for more information about dynamic cache groups.

  • The autorefresh state must be PAUSED before you can issue a LOAD CACHE GROUP statement on the cache group, unless the cache group is dynamic, in which case the autorefresh state must be PAUSED or ON. The LOAD CACHE GROUP statement cannot contain a WHERE clause, unless the cache group is dynamic, in which case the WHERE clause must be followed by a COMMIT EVERY n ROWS clause.

    See "AUTOREFRESH cache group attribute" for more information about autorefresh states.

    See "Using a WHERE clause" for more information about WHERE clauses in cache group definitions and operations.

  • The autorefresh state must be PAUSED before you can issue a REFRESH CACHE GROUP statement on the cache group. The REFRESH CACHE GROUP statement cannot contain a WHERE clause.

    See "Loading and refreshing a cache group" for more information about the REFRESH CACHE GROUP statement.

  • All tables and columns referenced in WHERE clauses when creating, loading or unloading the cache group must be fully qualified. For example:

    user_name.table_name and user_name.table_name.column_name

  • Least recently used (LRU) aging cannot be specified on the cache group, unless the cache group is dynamic where LRU aging is defined by default.

    See "LRU aging" for more information about LRU aging.

  • Read-only cache groups cannot cache Oracle views or materialized views.

Asynchronous writethrough (AWT) cache group

An asynchronous writethrough (AWT) cache group enforces a caching behavior where committed updates on the TimesTen cache tables are automatically and asynchronously propagated to the cached Oracle tables as shown in Figure 4-6.

Figure 4-6 Asynchronous writethrough cache group

Description of Figure 4-6 follows
Description of "Figure 4-6 Asynchronous writethrough cache group"

The transaction commit on the TimesTen database occurs asynchronously from the commit on the Oracle database. This enables an application to continue issuing transactions on the TimesTen database without waiting for the Oracle transaction to complete. However, your application cannot ensure when the transactions are completed on the Oracle database.

Execution of the UNLOAD CACHE GROUP statement for an AWT cache group waits until updates on the rows have been propagated to the Oracle database.

You can update cache tables in an AWT cache group even if the Oracle database is unavailable. When the Oracle database returns to operation, updates that were committed on the cache tables while the Oracle database was unavailable are automatically propagated to the cached Oracle tables.

The following is the definition of the Oracle table that will be cached in the AWT cache groups that are defined in Example 4-2, Example 4-12 and Example 4-14. The Oracle table is owned by the schema user oratt. The oratt user must be granted the CREATE SESSION and RESOURCE privileges before it can create tables.

CREATE TABLE customer
(cust_num NUMBER(6) NOT NULL PRIMARY KEY,
 region   VARCHAR2(10),
 name     VARCHAR2(50),
 address  VARCHAR2(100));

The Oracle user with the same name as the TimesTen cache manager user must be granted the SELECT privilege on the oratt.customer table in order for the cache manager user to create an AWT cache group that caches this table. The Oracle cache administration user must be granted the INSERT, UPDATE and DELETE privileges on the oratt.customer table for asynchronous writethrough operations to occur from the TimesTen cache table to the cached Oracle table.

Use the CREATE ASYNCHRONOUS WRITETHROUGH CACHE GROUP statement to create an AWT cache group.

Example 4-2 Creating an AWT cache group

The following statement creates an asynchronous writethrough cache group new_customers that caches the oratt.customer table:

CREATE ASYNCHRONOUS WRITETHROUGH CACHE GROUP new_customers
FROM oratt.customer
 (cust_num NUMBER(6) NOT NULL,
  region   VARCHAR2(10),
  name     VARCHAR2(50),
  address  VARCHAR2(100),
  PRIMARY KEY(cust_num));

The following sections describe configuration, behavior, and management for AWT cache groups:

Managing the replication agent

Performing asynchronous writethrough operations requires that the replication agent be running on the TimesTen database that contains AWT cache groups. Executing a CREATE ASYNCHRONOUS WRITETHROUGH CACHE GROUP statement creates a replication scheme that enables committed updates on the TimesTen cache tables to be asynchronously propagated to the cached Oracle tables.

After you have created AWT cache groups, start the replication agent on the TimesTen database.

Example 4-3 Starting the replication agent

The replication agent can be manually started programmatically by calling the ttRepStart built-in procedure as the cache manager user:

% ttIsql "DSN=cachealone1;UID=cacheuser;PWD=timesten;OraclePWD=oracle"
Command> call ttRepStart;

It can also be started from a command line by running a ttAdmin -repStart utility command as a TimesTen external user with the CACHE_MANAGER privilege:

% ttAdmin -repStart cachealone1

The replication agent does not start unless there is at least one AWT cache group or replication scheme in the TimesTen database.

If the replication agent is running, it must be stopped before you can issue another CREATE ASYNCHRONOUS WRITETHROUGH CACHE GROUP statement or a DROP CACHE GROUP statement on an AWT cache group.

Example 4-4 Stopping the replication agent

The replication agent can be manually stopped programmatically by calling the ttRepStop built-in procedure as the cache manager user:

Command> call ttRepStop;

It can also be stopped from a command line by running a ttAdmin -repStop utility command as a TimesTen external user with the CACHE_MANAGER privilege:

% ttAdmin -repStop cachealone1

You can set a replication agent start policy to determine how and when the replication agent process starts on a TimesTen database.

The default start policy is manual which means the replication agent must be started manually by calling the ttRepStart built-in procedure or running a ttAdmin -repStart utility command. To manually stop a running replication agent process, call the ttRepStop built-in procedure or run a ttAdmin -repStop utility command.

The start policy can be set to always so that the replication agent starts automatically when the TimesTen main daemon process starts. With the always start policy, the replication agent cannot be stopped when the main daemon is running unless the start policy is changed to either manual or norestart and then a manual stop is issued by calling the ttRepStop built-in procedure or running a ttAdmin -repStop utility command.

With the manual and always start policies, the replication agent automatically restarts after a failure such as a database invalidation.

The start policy can be set to norestart which means the replication agent must be started manually by calling the ttRepStart built-in procedure or running a ttAdmin -repStart utility command, and stopped manually by calling the ttRepStop built-in procedure or running a ttAdmin -repStop utility command.

With the norestart start policy, the replication agent does not automatically restart after a failure such as a database invalidation. You must restart the replication agent manually by calling the ttRepStart built-in procedure or running a ttAdmin -repStart utility command.

Example 4-5 Setting a replication agent start policy

As the instance administrator, grant the ADMIN privilege to the cache manager user:

% ttIsql cachealone1
Command> GRANT ADMIN TO cacheuser;
Command> exit

The replication agent start policy can be set programmatically by calling the ttRepPolicySet built-in procedure as the cache manager user:

% ttIsql "DSN=cachealone1;UID=cacheuser;PWD=timesten;OraclePWD=oracle"
Command> call ttRepPolicySet('manual');
Command> exit

It can also be set from a command line by running a ttAdmin -repPolicy utility command as a TimesTen external user with the ADMIN privilege:

% ttAdmin -repPolicy always cachealone1

Configuring parallel propagation to Oracle tables

To improve throughput for an AWT cache group, you can configure multiple threads that act in parallel to propagate and apply transactional changes to the Oracle database. Parallel propagation enforces transactional dependencies and applies changes in AWT cache tables to Oracle tables in commit order.

Parallel propagation is supported for the following configurations:

  • AWT cache groups in a standalone database

  • AWT cache groups with aging

  • AWT cache groups in an active standby pair replication scheme

  • AWT cache groups in a cache grid

The following data store attributes enable parallel propagation and control the number of threads that operate in parallel to propagate changes from AWT cache tables to the corresponding Oracle tables:

  • ReplicationApplyOrdering enables parallel propagation by default.

  • ReplicationParallelism defines the number of transmitter threads on the source database and the number of receiver threads on the target database for parallel replication in a replication scheme. This value can be between 2 and 32 when used solely for parallel replication. The default is 1. In addition, the value of ReplicationParellelism cannot exceed half the value of LogBufParallelism.

  • CacheAwtParallelism, when set, determines the number of threads used in parallel propagation of changes from AWT cache tables to the Oracle tables. Set this attribute to a number from 2 to 31. The default is 1.

Parallel propagation for an AWT cache group is configured with one of the following scenarios:

  • ReplicationApplyOrdering is set to 0 and ReplicationParallelism is greater than 1.

    If you do not set CacheAwtParallelism, the number of threads that apply changes to Oracle is 2 times the setting for ReplicationParallelism. For example, if ReplicationParallelism=3, the number of threads that apply changes to Oracle tables is 6. In this case, ReplicationParallelism can only be set from 2 to 16; otherwise, twice the value would exceed the maximum number of 31 threads for parallel propagation. If the value is set to 16, the maximum number of threads defaults to 31.

  • ReplicationApplyOrdering is set to 0, ReplicationParallelism is equal to or greater than 1, and CacheAwtParallelism is greater than 1. The value for CacheAwtParallelism must be greater than or equal to the value set for ReplicationParallelism and less than or equal to 31.

    If CacheAwtParallelism is not specified, then ReplicationParallelism is used to determine the number of threads that are used for parallel propagation to Oracle. However, since this value is doubled for parallel propagation threads, you can only set ReplicationParallelism to a number from 2 to 16. If the value is set to 16, the maximum number of threads defaults to 31.

    If both ReplicationParallelism and CacheAwtParallelism attributes are set, the value set in CacheAwtParallelism configures the number of threads used for parallel propagation. The setting for CacheAwtParallelism determines the number of apply threads for parallel propagation and the setting for ReplicationParallelism determines the number of threads for parallel replication. Thus, if ReplicationParallelism is set to 4 and CacheAwtParallelism is set to 6, then the number of threads that apply changes to Oracle tables is 6. This enables the number of threads used to be different for parallel replication and parallel propagation to Oracle tables.


Note:

For more information about parallel replication, see "Configuring parallel replication" in Oracle TimesTen In-Memory Database Replication Guide.

These data store attributes are interrelated. Table 4-1 shows the result with the combination of the various possible attribute values.

Table 4-1 Results of Parallel Propagation Data Store Attribute Relationships

ReplicationApply OrderingReplicationParallelismCacheAwtParallelismNumber of parallel propagation threads

Set to 0, which enables parallel propagation

Set to > 1 for multiple tracks and <= 16.

Not specified.

Set to twice the value of ReplicationParallelism.

Set to 0, which enables parallel propagation

Set to > 16 and <= 32 for multiple tracks.

Not specified.

Error is thrown. If CacheAwtParallelism is not set, then 2 times the value set in ReplicationParallelism specifies the number of threads. Thus, in this case, ReplicationParallelism cannot be greater than 16.

Set to 0, which enables parallel propagation

Set to > 1 and <= 32 for multiple tracks.

Set to >= to ReplicationParallelism.

Set to number specified by CacheAwtParallelism.

Set to 0, which enables parallel propagation

Set to > 1 and <= 32 for multiple tracks.

Set to < ReplicationParallelism.

Error is thrown at database creation. The CacheAwtParallelism must be set to a value greater than or equal to ReplicationParallelism.

Set to 0, which enables parallel propagation

Set to 1 or not specified. Single track.

Set to > 1

Set to number specified by CacheAwtParallelism.

Set to 1, which disables parallel propagation.

N/A

Set to > 1

Error is thrown at database creation, since parallelism is turned off, but CacheAwtParallelism is set to a value, expecting parallel propagation to be enabled.



Note:

For more details on these data store attributes, see "ReplicationApplyOrdering," "ReplicationParallelism," and "CacheAwtParallelism" in the Oracle TimesTen In-Memory Database Reference.

Any unique index, unique constraint, or foreign key constraint on columns in Oracle tables that are to be cached must also be created on the cached tables within TimesTen. If you cannot create the appropriate unique index, unique constraint, or foreign key constraint on the cached table, either disable parallel propagation or do not cache these columns. For example, if a table referenced by the foreign key constraint is too large to cache in TimesTen, you would not be able to create the foreign key.

Foreign keys in Oracle tables that are to be cached must have indexes created on the foreign keys. Consider these Oracle tables:

CREATE TABLE parent (c1 NUMBER PRIMARY KEY NOT NULL);
CREATE TABLE child (c1 NUMBER PRIMARY KEY NOT NULL, 
                    c2 NUMBER REFERENCES parent(c1));
CREATE TABLE grchild (c1 NUMBER PRIMARY KEY NOT NULL, 
                      c2 NUMBER REFERENCES parent(c1), 
                      c3 NUMBER REFERENCES parent(c1));

These indexes must be created:

CREATE INDEX idx_1 ON child(c2);
CREATE INDEX idx_2 ON grchild(c2);
CREATE INDEX idx_3 ON grchild(c3);

Parallel propagation cannot identify the case where two transactions have an implicit dependency if the transactions act on different cache groups. This occurs because there are no foreign keys on tables that are in different cache groups, even when there are foreign keys in the Oracle tables. Do not use parallel propagation to Oracle when your data model includes foreign keys in Oracle that cannot be created on cache tables.

What an AWT cache group does and does not guarantee

An AWT cache group can guarantee that:

  • No transactions are lost because of communication failures between the TimesTen and Oracle databases.

  • If the replication agent is not running or loses its connection to the Oracle database, automatic propagation of committed updates on the TimesTen cache tables to the cached Oracle tables resumes after the agent is restarted or is able to reconnect to the Oracle database.

  • Transactions are committed in the Oracle database in the same order they were committed in the TimesTen database.

An AWT cache group cannot guarantee that:

  • All transactions committed successfully in the TimesTen database are successfully propagated to and committed in the Oracle database. Execution errors on Oracle cause the transaction in the Oracle database to be rolled back. For example, an update on Oracle may fail because of a unique constraint violation. Transactions that contain execution errors are not retried.

    Execution errors are reported to the TimesTenDatabaseFileName.awterrs file that resides in the same directory as the TimesTen database's checkpoint files. See "Reporting Oracle execution errors for AWT cache groups" for more information.

  • The absolute order of Oracle updates is preserved because TimesTen does not resolve update conflicts. The following are some examples:

    • An update is committed on a cache table in an AWT cache group. The same update is committed on the cached Oracle table using a passthrough operation. The cache table update, which is automatically and asynchronously propagated to Oracle, may overwrite the passed through update that was processed directly on the cached Oracle table depending on when the propagated update and the passed through update is processed on Oracle.

    • In two separate TimesTen databases (DB1 and DB2), different AWT cache groups cache the same Oracle table. An update is committed on the cache table in DB1. An update is then committed on the cache table in DB2. The two cache tables reside in different TimesTen databases and cache the same Oracle table. Because the writethrough operations are asynchronous, the update from DB2 may get propagated to the Oracle database before the update from DB1, resulting in the update from DB1 overwriting the update from DB2.

      Using a dynamic AWT global cache group resolves this write inconsistency. See "Global cache groups" for more information about global cache groups.

Restrictions with AWT cache groups

The following restrictions apply when using an AWT cache group:

  • Only the ON DELETE CASCADE and UNIQUE HASH ON cache table attributes can be used in the cache table definitions.

    See "ON DELETE CASCADE cache table attribute" for more information about the ON DELETE CASCADE cache table attribute.

    See "UNIQUE HASH ON cache table attribute" for more information about the UNIQUE HASH ON cache table attribute.

  • A FLUSH CACHE GROUP statement cannot be issued on the cache group.

    See "Flushing a user managed cache group" for more information about the FLUSH CACHE GROUP statement

  • The cache table definitions cannot contain a WHERE clause.

    See "Using a WHERE clause" for more information about WHERE clauses in cache group definitions and operations.

  • A TRUNCATE TABLE statement cannot be issued on the cache tables.

  • AWT cache groups cannot cache Oracle views or materialized views.

  • The replication agent must be stopped before creating or dropping an AWT cache group.

    See "Managing the replication agent" for information about how to stop and start the replication agent.

  • Committed updates on the TimesTen cache tables are not propagated to the cached Oracle tables unless the replication agent is running.

  • To create an AWT cache group, the length of the absolute path name of the TimesTen database cannot exceed 248 characters.

  • TimesTen does not detect or resolve update conflicts that occur on Oracle. Committed updates made directly on a cached Oracle table may be overwritten by a committed update made on the TimesTen cache table when the cache table update is propagated to Oracle.

  • TimesTen performs deferred checking when determining whether a single SQL statement causes a constraint violation with a unique index.

    For example, suppose there is a unique index on a cached Oracle table's NUMBER column, and a unique index on the same NUMBER column on the TimesTen cache table. There are five rows in the cached Oracle table and the same five rows in the cache table. The values in the NUMBER column range from 1 to 5.

    An UPDATE statement is issued on the cache table to increment the value in the NUMBER column by 1 for all rows. The operation succeeds on the cache table but fails when it is propagated to the cached Oracle table.

    This occurs because TimesTen performs the unique index constraint check at the end of the statement's execution after all the rows have been updated. Oracle, however, performs the constraint check each time after a row has been updated.

    Therefore, when the row in the cache table with value 1 in the NUMBER column is changed to 2 and the update is propagated to Oracle, it causes a unique constraint violation with the row that has the value 2 in the NUMBER column of the cached Oracle table.

Reporting Oracle execution errors for AWT cache groups

If transactions are not successfully propagated to and committed in the Oracle database, then these execution errors cause the transaction in the Oracle database to be rolled back. For example, an update on Oracle may fail because of a unique constraint violation. Transactions that contain execution errors are not retried.

Execution errors are reported to the TimesTenDatabaseFileName.awterrs text file that resides in the same directory as the TimesTen database checkpoint files.


Note:

See "Oracle errors reported by TimesTen for AWT" in Oracle TimesTen In-Memory Database Troubleshooting Guide for information about the contents of this file.

Synchronous writethrough (SWT) cache group

A synchronous writethrough (SWT) cache group enforces a caching behavior where committed updates on the TimesTen cache tables are automatically and synchronously propagated to the cached Oracle tables as shown in Figure 4-7.

Figure 4-7 Synchronous writethrough cache group

Description of Figure 4-7 follows
Description of "Figure 4-7 Synchronous writethrough cache group"

The transaction commit on the TimesTen database occurs synchronously with the commit on the Oracle database. When an application commits a transaction in the TimesTen database, the transaction is processed in the Oracle database before it is processed in TimesTen. The application is blocked until the transaction has completed in both the Oracle and TimesTen databases.

If the transaction fails to commit in Oracle, the application must roll back the transaction in TimesTen. If the Oracle transaction commits successfully but the TimesTen transaction fails to commit, the cache tables in the SWT cache group are no longer synchronized with the cached Oracle tables. To manually resynchronize the cache tables with the cached Oracle tables, call the ttCachePropagateFlagSet built-in procedure to disable update propagation, and then reissue the transaction in the TimesTen database after correcting the problem that caused the transaction commit to fail in TimesTen. You can also resynchronize the cache tables with the cached Oracle tables by reloading the accompanying cache groups.

The following is the definition of the Oracle table that will be cached in the SWT cache group that is defined in Example 4-6. The Oracle table is owned by the schema user oratt. The oratt user must be granted the CREATE SESSION and RESOURCE privileges before it can create tables.

CREATE TABLE product
(prod_num    VARCHAR2(6) NOT NULL PRIMARY KEY,
 name        VARCHAR2(30),
 price       NUMBER(8,2),
 ship_weight NUMBER(4,1));

The Oracle user with the same name as the TimesTen cache manager user must be granted the SELECT privilege on the oratt.product table in order for the cache manager user to create an SWT cache group that caches this table. This Oracle user must also be granted the INSERT, UPDATE and DELETE privileges on the oratt.product table for synchronous writethrough operations to occur from the TimesTen cache table to the cached Oracle table.

Use the CREATE SYNCHRONOUS WRITETHROUGH CACHE GROUP statement to create an SWT cache group.

Example 4-6 Creating a SWT cache group

The following statement creates a synchronous writethrough cache group top_products that caches the oratt.product table:

CREATE SYNCHRONOUS WRITETHROUGH CACHE GROUP top_products
FROM oratt.product
 (prod_num    VARCHAR2(6) NOT NULL,
  name        VARCHAR2(30),
  price       NUMBER(8,2),
  ship_weight NUMBER(4,1),
  PRIMARY KEY(prod_num));

Restrictions with SWT cache groups

The following restrictions apply when using an SWT cache group:

  • Only the ON DELETE CASCADE and UNIQUE HASH ON cache table attributes can be used in the cache table definitions.

    See "ON DELETE CASCADE cache table attribute" for more information about the ON DELETE CASCADE cache table attribute.

    See "UNIQUE HASH ON cache table attribute" for more information about the UNIQUE HASH ON cache table attribute.

  • A FLUSH CACHE GROUP statement cannot be issued on the cache group.

    See "Flushing a user managed cache group" for more information about the FLUSH CACHE GROUP statement

  • The cache table definitions cannot contain a WHERE clause.

    See "Using a WHERE clause" for more information about WHERE clauses in cache group definitions and operations.

  • A TRUNCATE TABLE statement cannot be issued on the cache tables.

  • SWT cache groups cannot cache Oracle views or materialized views.

User managed cache group

If the system managed cache groups (read-only, AWT, SWT) do not satisfy your application's requirements, you can create a user managed cache group that defines customized caching behavior. For example:

  • You can define a user managed cache group to automatically refresh and propagate committed updates between the Oracle and TimesTen databases by using the AUTOREFRESH cache group attribute and the PROPAGATE cache table attribute. Using both attributes enables bidirectional transmit, so that committed updates on the TimesTen cache tables or the cached Oracle tables are propagated or refreshed to each other.

  • You can use the LOAD CACHE GROUP, REFRESH CACHE GROUP, and FLUSH CACHE GROUP statements to manually control the transmit of committed updates between the Oracle and TimesTen databases.

  • You can specify the READONLY or the PROPAGATE cache table attribute on individual cache tables in a user managed cache group to define read-only or synchronous writethrough behavior at the table level.

  • You can cache Oracle materialized views in a user managed cache group that does not use the PROPAGATE cache table attribute or the AUTOREFRESH cache group attribute. The cache group must be manually loaded and flushed. You cannot cache Oracle views.

The following are the definitions of the Oracle tables that will be cached in the user managed cache groups that are defined in Example 4-7 and Example 4-8. The Oracle tables are owned by the schema user oratt. The oratt user must be granted the CREATE SESSION and RESOURCE privileges before it can create tables.

CREATE TABLE active_customer
 (custid NUMBER(6) NOT NULL PRIMARY KEY,
  name   VARCHAR2(50),
  addr   VARCHAR2(100),
  zip    VARCHAR2(12),
  region VARCHAR2(12) DEFAULT 'Unknown');

CREATE TABLE ordertab
 (orderid NUMBER(10) NOT NULL PRIMARY KEY,
  custid  NUMBER(6) NOT NULL);

CREATE TABLE cust_interests
 (custid   NUMBER(6) NOT NULL,
  interest VARCHAR2(10) NOT NULL,
  PRIMARY KEY (custid, interest));

CREATE TABLE orderdetails
 (orderid  NUMBER(10) NOT NULL,
  itemid   NUMBER(8) NOT NULL,
  quantity NUMBER(4) NOT NULL,
  PRIMARY KEY (orderid, itemid));

Use the CREATE USERMANAGED CACHE GROUP statement to create a user managed cache group.

Example 4-7 Creating a single-table user managed cache group

The following statement creates a user managed cache group update_anywhere_customers that caches the oratt.active_customer table as shown in Figure 4-8:

CREATE USERMANAGED CACHE GROUP update_anywhere_customers
AUTOREFRESH MODE INCREMENTAL INTERVAL 30 SECONDS
FROM oratt.active_customer
 (custid NUMBER(6) NOT NULL,
  name   VARCHAR2(50),
  addr   VARCHAR2(100),
  zip    VARCHAR2(12),
  PRIMARY KEY(custid),
  PROPAGATE);

Figure 4-8 Single-table user managed cache group

Description of Figure 4-8 follows
Description of "Figure 4-8 Single-table user managed cache group"

All columns except region are cached. Only customers whose customer ID is greater than or equal to 1001 are cached. Committed updates on the oratt.active_customer cache table or the oratt.active_customer cached Oracle table are transmitted to the corresponding table.

The Oracle user with the same name as the TimesTen cache manager user must be granted the SELECT privilege on the oratt.active_customer table in order for the cache manager user to create a user managed cache group that caches this table, and for autorefresh operations to occur from the cached Oracle table to the TimesTen cache table. This Oracle user must also be granted the INSERT, UPDATE and DELETE privileges on the oratt.active_customer table for synchronous writethrough operations to occur from the TimesTen cache table to the cached Oracle table.

In this example, the AUTOREFRESH cache group attribute specifies that committed updates on the oratt.active_customer cached Oracle table are automatically refreshed to the TimesTen oratt.active_customer cache table every 30 seconds. The PROPAGATE cache table attribute specifies that committed updates on the cache table are automatically and synchronously propagated to the cached Oracle table.

See "AUTOREFRESH cache group attribute" for more information about defining an autorefresh mode, interval and state.

If you manually created the Oracle objects used to enforce the predefined behaviors of a user managed cache group that uses the AUTOREFRESH MODE INCREMENTAL cache group attribute as described in "Manually create Oracle objects used to manage caching of Oracle data", you need to set the autorefresh state to OFF when creating the cache group.

Then you need to run the ttIsql utility's cachesqlget command to generate a SQL*Plus script used to create a log table and a trigger in the Oracle database for each Oracle table that is cached in the user managed cache group.

See "Manually creating Oracle objects for autorefresh cache groups" for more information.

Example 4-8 Creating a multiple-table user managed cache group

The following statement creates a user managed cache group western_customers that caches the oratt.active_customer, oratt.ordertab, oratt.cust_interests, and oratt.orderdetails tables as shown in Figure 4-9:

CREATE USERMANAGED CACHE GROUP western_customers
FROM oratt.active_customer
 (custid NUMBER(6) NOT NULL,
  name   VARCHAR2(50),
  addr   VARCHAR2(100),
  zip    VARCHAR2(12),
  region VARCHAR2(12),
  PRIMARY KEY(custid),
  PROPAGATE)
  WHERE (oratt.active_customer.region = 'West'),
oratt.ordertab
 (orderid NUMBER(10) NOT NULL,
  custid  NUMBER(6) NOT NULL,
  PRIMARY KEY(orderid),
  FOREIGN KEY(custid) REFERENCES oratt.active_customer(custid),
  PROPAGATE),
oratt.cust_interests
 (custid   NUMBER(6) NOT NULL,
  interest VARCHAR2(10) NOT NULL,
  PRIMARY KEY(custid, interest),
  FOREIGN KEY(custid) REFERENCES oratt.active_customer(custid),
  READONLY),
oratt.orderdetails
 (orderid  NUMBER(10) NOT NULL,
  itemid   NUMBER(8) NOT NULL,
  quantity NUMBER(4) NOT NULL,
  PRIMARY KEY(orderid, itemid),
  FOREIGN KEY(orderid) REFERENCES oratt.ordertab(orderid))
  WHERE (oratt.orderdetails.quantity >= 5);

Figure 4-9 Multiple-table user managed cache group

Description of Figure 4-9 follows
Description of "Figure 4-9 Multiple-table user managed cache group"

Only customers in the West region who ordered at least 5 of the same item are cached.

The Oracle user with the same name as the TimesTen cache manager user must be granted the SELECT privilege on the oratt.active_customer, oratt.ordertab, oratt.cust_interests, and oratt.orderdetails tables in order for the cache manager user to create a user managed cache group that caches all of these tables. This Oracle user must also be granted the INSERT, UPDATE and DELETE privileges on the oratt.active_customer and oratt.ordertab tables for synchronous writethrough operations to occur from these TimesTen cache tables to the cached Oracle tables.

Each cache table in the western_customers cache group contains a primary key. Each child table references a parent table with a foreign key constraint. The oratt.active_customer root table and the oratt.orderdetails child table each contain a WHERE clause to restrict the rows to be cached. The oratt.active_customer root table and the oratt.ordertab child table both use the PROPAGATE cache table attribute so that committed updates on these cache tables are automatically propagated to the cached Oracle tables. The oratt.cust_interests child table uses the READONLY cache table attribute so that it cannot be updated directly.

PROPAGATE cache table attribute

The PROPAGATE cache table attribute can be specified only for cache tables in a user managed cache group. PROPAGATE specifies that committed updates on the TimesTen cache table are automatically and synchronously propagated to the cached Oracle table such that:

  1. The commit is first attempted in the Oracle database. If the commit fails in Oracle, the commit is not attempted in the TimesTen database and the application must roll back the TimesTen transaction. As a result, the Oracle database never misses updates committed in TimesTen.

  2. If the commit succeeds in the Oracle database, it is then attempted in the TimesTen database. If the commit fails in TimesTen, an error message is returned from TimesTen indicating the cause of the failure. You then need to manually resynchronize the cache tables with the Oracle tables.

    See "Synchronous writethrough (SWT) cache group" for information on how to resynchronize the cache tables with the Oracle tables.

By default, a cache table in a user managed cache group is created with the NOT PROPAGATE cache table attribute such that committed updates on the cache table are not propagated to the cached Oracle table.

When a cache table uses the PROPAGATE cache table attribute, you may occasionally need to commit updates on the cache table that you do not want propagated to the cached Oracle table. Use the ttCachePropagateFlagSet built-in procedure to disable automatic propagation so that committed updates on a cache table is not propagated to the cached Oracle table.

The following restrictions apply when using the PROPAGATE cache table attribute:

  • If the cache group uses the AUTOREFRESH cache group attribute, the PROPAGATE cache table attribute must be specified on all or none of its cache tables.

    See "AUTOREFRESH cache group attribute" for more information about using the AUTOREFRESH cache group attribute.

  • If the cache group uses the AUTOREFRESH cache group attribute, the NOT PROPAGATE cache table attribute cannot be explicitly specified on any of its cache tables.

  • You cannot use both the PROPAGATE and READONLY cache table attributes on the same cache table.

    See "READONLY cache table attribute" for more information about using the READONLY cache table attribute.

  • A FLUSH CACHE GROUP statement cannot be issued on the cache group unless one or more of its cache tables use neither the PROPAGATE nor the READONLY cache table attribute.

    See "Flushing a user managed cache group" for more information about the FLUSH CACHE GROUP statement.

  • After the PROPAGATE cache table attribute has been specified on a cache table, you cannot change this attribute unless you drop the cache group and re-create it.

  • The PROPAGATE cache table attribute cannot be used when caching Oracle materialized views.

  • TimesTen does not perform a conflict check to prevent a propagate operation from overwriting data that was updated directly on a cached Oracle table. Therefore, updates should only be performed directly on the TimesTen cache tables or the cached Oracle tables, but not both.

In Example 4-7, the oratt.active_customer cache table uses the PROPAGATE cache table attribute.

READONLY cache table attribute

The READONLY cache table attribute can be specified only for cache tables in a user managed cache group. READONLY specifies that the cache table cannot be updated directly. By default, a cache table in a user managed cache group is updatable.

Unlike a read-only cache group where all of its cache tables are read-only, in a user managed cache group individual cache tables can be specified as read-only using the READONLY cache table attribute.

The following restrictions apply when using the READONLY cache table attribute:

  • If the cache group uses the AUTOREFRESH cache group attribute, the READONLY cache table attribute must be specified on all or none of its cache tables.

    See "AUTOREFRESH cache group attribute" for more information about using the AUTOREFRESH cache group attribute.

  • You cannot use both the READONLY and PROPAGATE cache table attributes on the same cache table.

    See "PROPAGATE cache table attribute" for more information about using the PROPAGATE cache table attribute.

  • A FLUSH CACHE GROUP statement cannot be issued on the cache group unless one or more of its cache tables use neither the READONLY nor the PROPAGATE cache table attribute.

    See "Flushing a user managed cache group" for more information about the FLUSH CACHE GROUP statement.

  • After the READONLY cache table attribute has been specified on a cache table, you cannot change this attribute unless you drop the cache group and re-create it.

In Example 4-8, the oratt.cust_interests cache table uses the READONLY cache table attribute.

AUTOREFRESH cache group attribute

The AUTOREFRESH cache group attribute can be specified when creating a read-only cache group or a user managed cache group using a CREATE CACHE GROUP statement. AUTOREFRESH specifies that committed updates on cached Oracle tables are automatically refreshed to the TimesTen cache tables. Autorefresh is defined by default on read-only cache groups.

The following are the default settings of the autorefresh attributes:

  • The autorefresh mode is incremental.

  • The autorefresh interval is 5 minutes.

  • The autorefresh state is PAUSED.

TimesTen supports two autorefresh modes:

  • INCREMENTAL: Committed updates on cached Oracle tables are automatically refreshed to the TimesTen cache tables based on the cache group's autorefresh interval. Incremental autorefresh mode uses Oracle objects to track committed updates on cached Oracle tables. See "Managing a caching environment with Oracle objects" for information on these objects.

  • FULL: All cache tables are automatically refreshed, based on the cache group's autorefresh interval, by unloading all their rows and then reloading from the cached Oracle tables.

Incremental autorefresh mode incurs some overhead to refresh the cache group for each committed update on the cached Oracle tables. There is no overhead when using full autorefresh mode.

When using incremental autorefresh mode, committed updates on cached Oracle tables are tracked in change log tables in the Oracle database. Under certain circumstances, it is possible for some of the change log records to be deleted from the change log table before they are automatically refreshed to the TimesTen cache tables. If this occurs, TimesTen initiates a full automatic refresh on the cache group. See "Monitoring the cache administration user's tablespace" for information on how to configure an action to take when the tablespace that the change log tables reside in becomes full.

The change log table on the Oracle database does not have column-level resolution because of performance reasons. Thus the autorefresh operation updates all of the columns in a row. XLA reports that all of the columns in the row have changed even if the data did not actually change in each column.

The autorefresh interval determines how often autorefresh operations occur in minutes, seconds or milliseconds. Cache groups with the same autorefresh interval are refreshed within the same transaction. You can use the ttCacheAutorefresh built-in procedure to initiate an immediate autorefresh operation. For more information, see "ttCacheAutorefresh" in Oracle TimesTen In-Memory Database Reference.

The autorefresh state can be set to ON, PAUSED or OFF. Autorefresh operations are scheduled by TimesTen when the cache group's autorefresh state is ON.

When the cache group's autorefresh state is OFF, committed updates on the cached Oracle tables are not tracked.

When the cache group's autorefresh state is PAUSED, committed updates on the cached Oracle tables are tracked in the Oracle database, but are not automatically refreshed to the TimesTen cache tables until the state is changed to ON.

The following restrictions apply when using the AUTOREFRESH cache group attribute:

  • A FLUSH CACHE GROUP statement cannot be issued on the cache group.

    See "Flushing a user managed cache group" for more information about the FLUSH CACHE GROUP statement.

  • A TRUNCATE TABLE statement issued on a cached Oracle table is not automatically refreshed to the TimesTen cache table. Before issuing a TRUNCATE TABLE statement on a cached Oracle table, use an ALTER CACHE GROUP statement to change the autorefresh state of the cache group that contains the cache table to PAUSED.

    See "Altering a cache group to change the AUTOREFRESH mode, interval or state" for more information about the ALTER CACHE GROUP statement.

    After issuing the TRUNCATE TABLE statement on the cached Oracle table, use a REFRESH CACHE GROUP statement to manually refresh the cache group.

  • A LOAD CACHE GROUP statement can only be issued if the cache tables are empty, unless the cache group is dynamic.

    See "Loading and refreshing a cache group" for more information about the LOAD CACHE GROUP and REFRESH CACHE GROUP statements.

    See "Dynamic cache groups" for more information about dynamic cache groups.

  • The autorefresh state must be PAUSED before you can issue a LOAD CACHE GROUP statement on the cache group, unless the cache group is dynamic, in which case the autorefresh state must be PAUSED or ON. The LOAD CACHE GROUP statement cannot contain a WHERE clause, unless the cache group is dynamic, in which case the WHERE clause must be followed by a COMMIT EVERY n ROWS clause.

    See "Using a WHERE clause" for more information about WHERE clauses in cache group definitions and operations.

  • The autorefresh state must be PAUSED before you can issue a REFRESH CACHE GROUP statement on the cache group. The REFRESH CACHE GROUP statement cannot contain a WHERE clause.

  • All tables and columns referenced in WHERE clauses when creating, loading or unloading the cache group must be fully qualified. For example:

    user_name.table_name and user_name.table_name.column_name

  • To use the AUTOREFRESH cache group attribute in a user managed cache group, all of the cache tables must be specified with the PROPAGATE cache table attribute or all of the cache tables must be specified the READONLY cache table attribute.

  • You cannot specify the AUTOREFRESH cache group attribute in a user managed cache group that contains cache tables that explicitly use the NOT PROPAGATE cache table attribute.

  • The AUTOREFRESH cache table attribute cannot be used when caching Oracle materialized views in a user managed cache group.

  • LRU aging cannot be specified on the cache group, unless the cache group is dynamic where LRU aging is defined by default.

    See "LRU aging" for more information about LRU aging.

If you create a unique index on a cache group with the AUTOREFRESH cache group attribute, the index is changed to a non-unique index to avoid a constraint violation. A constraint violation could occur with a unique index because conflicting updates could occur in the same statement execution on the Oracle table, while each row update is executed separately in TimesTen. If the unique index exists on the Oracle table that is being cached, then uniqueness is enforced on the Oracle table and does not need to be verified again in TimesTen.

In Example 4-7, the update_anywhere_customers cache group uses the AUTOREFRESH cache group attribute.

Altering a cache group to change the AUTOREFRESH mode, interval or state

After creating an autorefresh cache group, you can use an ALTER CACHE GROUP statement to change the cache group's autorefresh mode, interval or state. You cannot use ALTER CACHE GROUP to instantiate automatic refresh for a cache group that was originally created without autorefresh defined.

If you change a cache group's autorefresh state to OFF or drop a cache group that has an autorefresh operation in progress:

  • The autorefresh operation stops if the setting of the LockWait connection attribute is greater than 0. The ALTER CACHE GROUP or DROP CACHE GROUP statement preempts the autorefresh operation.

  • The autorefresh operation continues if the LockWait connection attribute is set to 0. The ALTER CACHE GROUP or DROP CACHE GROUP statement is blocked until the autorefresh operation completes or the statement fails with a lock timeout error.

Example 4-9 Altering the autorefresh attributes of a cache group

The following statements change the autorefresh mode, interval and state of the customer_orders cache group:

ALTER CACHE GROUP customer_orders SET AUTOREFRESH MODE FULL;
ALTER CACHE GROUP customer_orders SET AUTOREFRESH INTERVAL 30 SECONDS;
ALTER CACHE GROUP customer_orders SET AUTOREFRESH STATE ON;

Manually creating Oracle objects for autorefresh cache groups

If you manually created the Oracle objects used to enforce the predefined behaviors of an autorefresh cache group as described in "Manually create Oracle objects used to manage caching of Oracle data", you need to set the autorefresh state to OFF when creating the cache group.

Then you need to run the ttIsql utility's cachesqlget command with the INCREMENTAL_AUTOREFRESH option and the INSTALL flag as the cache manager user. This command generates a SQL*Plus script used to create a log table and a trigger in the Oracle database for each Oracle table that is cached in the autorefresh cache group. These Oracle objects are used to track updates on the cached Oracle tables so that the updates can be automatically refreshed to the cache tables.

Next use SQL*Plus to run the script generated by the ttIsql utility's cachesqlget command as the sys user. Then use an ALTER CACHE GROUP statement to change the autorefresh state of the cache group to PAUSED.

Example 4-10 Creating a read-only cache group when Oracle objects were manually created

The first statement creates a read-only cache group customer_orders with the autorefresh state set to OFF. The SQL*Plus script generated by the ttIsql utility's cachesqlget command is saved to the /tmp/obj.sql file. The last statement changes the autorefresh state of the cache group to PAUSED.

CREATE READONLY CACHE GROUP customer_orders
AUTOREFRESH STATE OFF
FROM oratt.customer
 (cust_num NUMBER(6) NOT NULL,
  region   VARCHAR2(10),
  name     VARCHAR2(50),
  address  VARCHAR2(100),
  PRIMARY KEY(cust_num)),
oratt.orders
 (ord_num      NUMBER(10) NOT NULL,
  cust_num     NUMBER(6) NOT NULL,
  when_placed  DATE NOT NULL,
  when_shipped DATE NOT NULL,
  PRIMARY KEY(ord_num),
  FOREIGN KEY(cust_num) REFERENCES oratt.customer(cust_num));

% ttIsql "DSN=cachealone1;UID=cacheuser;PWD=timesten;OraclePWD=oracle"
Command> cachesqlget INCREMENTAL_AUTOREFRESH customer_orders INSTALL /tmp/obj.sql;
Command> exit

% sqlplus sys as sysdba
Enter password: password
SQL> @/tmp/obj
SQL> exit

ALTER CACHE GROUP customer_orders SET AUTOREFRESH STATE PAUSED;

Using a WHERE clause

A cache table definition in a CREATE CACHE GROUP statement can contain a WHERE clause to restrict the rows to cache in the TimesTen database for particular cache group types.

You can also specify a WHERE clause in a LOAD CACHE GROUP, UNLOAD CACHE GROUP, REFRESH CACHE GROUP or FLUSH CACHE GROUP statement for particular cache group types. Some statements, such as LOAD CACHE GROUP and REFRESH CACHE GROUP, may result in concatenated WHERE clauses in which the WHERE clause for the cache table definition is evaluated before the WHERE clause in the LOAD CACHE GROUP or REFRESH CACHE GROUP statement.

The following restrictions apply to WHERE clauses used in cache table definitions and cache group operations:

  • WHERE clauses can only be specified in the cache table definitions of a CREATE CACHE GROUP statement for read-only and user managed cache groups.

  • A WHERE clause can be specified in a LOAD CACHE GROUP statement except on an explicitly loaded autorefresh cache group.

    See "Loading and refreshing a cache group" for more information about the LOAD CACHE GROUP statement.

  • A WHERE clause can be specified in a REFRESH CACHE GROUP statement except on an autorefresh cache group.

    See "Loading and refreshing a cache group" for more information about the REFRESH CACHE GROUP statement.

  • A WHERE clause can be specified in a FLUSH CACHE GROUP statement on a user managed cache group that allows committed updates on the TimesTen cache tables to be flushed to the cached Oracle tables.

    See "Flushing a user managed cache group" for more information about the FLUSH CACHE GROUP statement.

  • WHERE clauses in a CREATE CACHE GROUP statement cannot contain a subquery. Therefore, each WHERE clause cannot reference any table other than the one in its cache table definition. However, a WHERE clause in a LOAD CACHE GROUP, UNLOAD CACHE GROUP, REFRESH CACHE GROUP or FLUSH CACHE GROUP statement may contain a subquery.

  • A WHERE clause in a LOAD CACHE GROUP, REFRESH CACHE GROUP or FLUSH CACHE GROUP statement can reference only the root table of the cache group, unless the WHERE clause contains a subquery.

  • WHERE clauses in the cache table definitions are only enforced when the cache group is manually loaded or refreshed, or the cache tables are dynamically loaded. If a cache table is updatable, you can insert or update a row such that the WHERE clause in the cache table definition for that row is not satisfied.

  • All tables and columns referenced in WHERE clauses when creating, loading, refreshing, unloading or flushing the cache group must be fully qualified. For example:

    user_name.table_name and user_name.table_name.column_name

In Example 4-8, both the oratt.active_customer and oratt.orderdetails tables contain a WHERE clause.

Proper placement of WHERE clause in a CREATE CACHE GROUP statement

In a multiple-table cache group, a WHERE clause in a particular table definition should not reference any table in the cache group other than the table itself. For example, the following CREATE CACHE GROUP statements are valid:

CREATE READONLY CACHE GROUP customer_orders
FROM oratt.customer
 (cust_num NUMBER(6) NOT NULL,
  region   VARCHAR2(10),
  name     VARCHAR2(50),
  address  VARCHAR2(100),
  PRIMARY KEY(cust_num))
  WHERE (oratt.customer.cust_num < 100),
oratt.orders
 (ord_num      NUMBER(10) NOT NULL,
  cust_num     NUMBER(6) NOT NULL,
  when_placed  DATE NOT NULL,
  when_shipped DATE NOT NULL,
  PRIMARY KEY(ord_num),
  FOREIGN KEY(cust_num) REFERENCES oratt.customer(cust_num));
CREATE READONLY CACHE GROUP customer_orders
FROM oratt.customer
 (cust_num NUMBER(6) NOT NULL,
  region   VARCHAR2(10),
  name     VARCHAR2(50),
  address  VARCHAR2(100),
  PRIMARY KEY(cust_num)),
oratt.orders
 (ord_num      NUMBER(10) NOT NULL,
  cust_num     NUMBER(6) NOT NULL,
  when_placed  DATE NOT NULL,
  when_shipped DATE NOT NULL,
  PRIMARY KEY(ord_num),
  FOREIGN KEY(cust_num) REFERENCES oratt.customer(cust_num));
  WHERE (oratt.orders.cust_num < 100)

The following statement is not valid because the WHERE clause in the child table's definition references its parent table:

CREATE READONLY CACHE GROUP customer_orders
FROM oratt.customer
 (cust_num NUMBER(6) NOT NULL,
  region   VARCHAR2(10),
  name     VARCHAR2(50),
  address  VARCHAR2(100),
  PRIMARY KEY(cust_num)),
oratt.orders
 (ord_num      NUMBER(10) NOT NULL,
  cust_num     NUMBER(6) NOT NULL,
  when_placed  DATE NOT NULL,
  when_shipped DATE NOT NULL,
  PRIMARY KEY(ord_num),
  FOREIGN KEY(cust_num) REFERENCES oratt.customer(cust_num))
  WHERE (oratt.customer.cust_num < 100);

Similarly, the following statement is not valid because the WHERE clause in the parent table's definition references its child table:

CREATE READONLY CACHE GROUP customer_orders
FROM oratt.customer
 (cust_num NUMBER(6) NOT NULL,
  region   VARCHAR2(10),
  name     VARCHAR2(50),
  address  VARCHAR2(100),
  PRIMARY KEY(cust_num))
  WHERE (oratt.orders.cust_num < 100),
oratt.orders
 (ord_num      NUMBER(10) NOT NULL,
  cust_num     NUMBER(6) NOT NULL,
  when_placed  DATE NOT NULL,
  when_shipped DATE NOT NULL,
  PRIMARY KEY(ord_num),
  FOREIGN KEY(cust_num) REFERENCES oratt.customer(cust_num));

Referencing Oracle PL/SQL functions in a WHERE clause

A user-defined PL/SQL function in the Oracle database can be invoked indirectly in a WHERE clause within a CREATE CACHE GROUP, LOAD CACHE GROUP, or REFRESH CACHE GROUP (for dynamic cache groups only) statement. After creating the function, create a public synonym for the function. Then grant the EXECUTE privilege on the function to PUBLIC.

For example, in the Oracle database:

CREATE OR REPLACE FUNCTION get_customer_name
(c_num oratt.customer.cust_num%TYPE) RETURN VARCHAR2 IS
c_name oratt.customer.name%TYPE;
BEGIN
  SELECT name INTO c_name FROM oratt.customer WHERE cust_num = c_num;
  RETURN c_name;
END get_customer_name;

CREATE PUBLIC SYNONYM retname FOR get_customer_name;
GRANT EXECUTE ON get_customer_name TO PUBLIC;

Then in the TimesTen database, for example, you can create a cache group with a WHERE clause that references the Oracle public synonym that was created for the function:

CREATE READONLY CACHE GROUP top_customer
FROM oratt.customer
 (cust_num NUMBER(6) NOT NULL,
  region   VARCHAR2(10),
  name     VARCHAR2(50),
  address  VARCHAR2(100),
  PRIMARY KEY(cust_num))
WHERE name = retname(100);

For cache group types that allow a WHERE clause on a LOAD CACHE GROUP or REFRESH CACHE GROUP statement, you can invoke the function indirectly by referencing the public synonym that was created for the function. For example, you can use the following LOAD CACHE GROUP statement to load the AWT cache group new_customers:

LOAD CACHE GROUP new_customers WHERE name = retname(101) COMMIT EVERY 0 ROWS;

ON DELETE CASCADE cache table attribute

The ON DELETE CASCADE cache table attribute can be specified for cache tables in any cache group type. ON DELETE CASCADE specifies that when rows containing referenced key values are deleted from a parent table, rows in child tables with dependent foreign keys are also deleted.

Example 4-11 Using the ON DELETE CASCADE cache table attribute

The following statement uses the ON DELETE CASCADE cache table attribute on the child table's foreign key definition:

CREATE READONLY CACHE GROUP customer_orders
FROM oratt.customer
 (cust_num NUMBER(6) NOT NULL,
  region   VARCHAR2(10),
  name     VARCHAR2(50),
  address  VARCHAR2(100),
  PRIMARY KEY(cust_num)),
oratt.orders
 (ord_num      NUMBER(10) NOT NULL,
  cust_num     NUMBER(6) NOT NULL,
  when_placed  DATE NOT NULL,
  when_shipped DATE NOT NULL,
  PRIMARY KEY(ord_num),
  FOREIGN KEY(cust_num) REFERENCES oratt.customer(cust_num) ON DELETE CASCADE);

All paths from a parent table to a child table must be either "delete" paths or "do not delete" paths. There cannot be some "delete" paths and some "do not delete" paths from a parent table to a child table. Specify the ON DELETE CASCADE cache table attribute for child tables on a "delete" path.

The following restrictions apply when using the ON DELETE CASCADE cache table attribute:

  • For AWT and SWT cache groups, and for TimesTen cache tables in user managed cache groups that use the PROPAGATE cache table attribute, foreign keys in cache tables that use the ON DELETE CASCADE cache table attribute must be a proper subset of the foreign keys in the cached Oracle tables that use the ON DELETE CASCADE attribute. ON DELETE CASCADE actions on the cached Oracle tables are applied to the TimesTen cache tables as individual deletes. ON DELETE CASCADE actions on the cache tables are applied to the cached Oracle tables as a cascaded operation.

  • Matching of foreign keys between the TimesTen cache tables and the cached Oracle tables is enforced only when the cache group is being created. A cascade delete operation may not work if the foreign keys on the cached Oracle tables are altered after the cache group is created.

See the CREATE CACHE GROUP statement in Oracle TimesTen In-Memory Database SQL Reference for more information about the ON DELETE CASCADE cache table attribute.

UNIQUE HASH ON cache table attribute

The UNIQUE HASH ON cache table attribute can be specified for cache tables in any cache group type. UNIQUE HASH ON specifies that a hash index rather than a range index is created on the primary key columns of the cache table. The columns specified in the hash index must be identical to the columns in the primary key. The UNIQUE HASH ON cache table attribute is also used to specify the size of the hash index.

Example 4-12 Using the UNIQUE HASH ON cache table attribute

The following statement uses the UNIQUE HASH ON cache table attribute on the cache table's definition.

CREATE ASYNCHRONOUS WRITETHROUGH CACHE GROUP new_customers
FROM oratt.customer
 (cust_num NUMBER(6) NOT NULL,
  region   VARCHAR2(10),
  name     VARCHAR2(50),
  address  VARCHAR2(100),
  PRIMARY KEY(cust_num))
  UNIQUE HASH ON (cust_num) PAGES = 100;

See the CREATE CACHE GROUP statement in Oracle TimesTen In-Memory Database SQL Reference for more information about the UNIQUE HASH ON cache table attribute.

Caching Oracle synonyms

You can cache a private synonym in an AWT, SWT or user managed cache group that does not use the AUTOREFRESH cache group attribute. The private synonym can reference a public or private synonym, but it must eventually reference a table because it is the table that is actually being cached.

The table that is directly or indirectly referenced by the cached synonym can be owned by a user other than the Oracle user with the same name as the owner of the cache group that caches the synonym. The table must reside in the same Oracle database as the synonym. The cached synonym itself must be owned by the Oracle user with the same name as the owner of the cache group that caches the synonym.

Caching Oracle LOB data

You can cache Oracle large object (LOB) data in TimesTen cache groups. TimesTen caches the data as follows:

Example 4-13 Caching Oracle LOB data

Create a table in the Oracle database that has LOB fields.

CREATE TABLE t (
  i INT NOT NULL PRIMARY KEY
  , c CLOB
  , b BLOB
  , nc NCLOB);

Insert values into the Oracle table. The values are implicitly converted to LOB data types.

INSERT INTO t VALUES (1
  , RPAD('abcdefg8', 2048, 'abcdefg8')
  , HEXTORAW(RPAD('123456789ABCDEF8', 4000, '123456789ABCDEF8'))
  , RPAD('abcdefg8', 2048, 'abcdefg8')
);

1 row inserted.

Create a dynamic AWT cache group and start the replication agent.

CREATE DYNAMIC ASYNCHRONOUS WRITETHROUGH CACHE GROUP cg1 
  FROM t
 (i INT NOT NULL PRIMARY KEY
  , c VARCHAR2(4194304 BYTE)
  , b VARBINARY(4194304)
  , nc NVARCHAR2(2097152));

CALL ttrepstart;

Load the data dynamically into the TimesTen cache group.

SELECT * FROM t WHERE i = 1;

I:    1
C:    abcdefg8abcdefg8abcdefg8...
B:    123456789ABCDEF8123456789...
NC:   abcdefg8abcdefg8abcdefg8...

1 row found.

Restrictions on caching Oracle LOB data

These restrictions apply to caching Oracle LOB data in TimesTen cache groups:

In addition, cache groups that are configured for autorefresh operations have these restrictions on caching LOB data:

Implementing aging in a cache group

You can define an aging policy for a cache group that specifies the aging type, the aging attributes, and the aging state. TimesTen supports two aging types, least recently used (LRU) aging and time-based aging.

LRU aging deletes the least recently used or referenced data based on a specified database usage range. Time-based aging deletes data based on a specified data lifetime and frequency of the aging process. You can use both LRU and time-based aging in the same TimesTen database, but you can define only one aging policy for a particular cache group.

An aging policy is specified in the cache table definition of the root table in a CREATE CACHE GROUP statement and applies to all cache tables in the cache group because aging is performed at the cache instance level. When rows are deleted from the cache tables by aging out, the rows in the cached Oracle table are not deleted.

You can add an aging policy to a cache group by using an ALTER TABLE statement on the root table. You can change the aging policy of a cache group by using ALTER TABLE statements on the root table to drop the existing aging policy and then add a new aging policy.

This section describes cache group definitions that contain an aging policy. The topics include:

LRU aging

LRU aging enables you to maintain the amount of memory used in a TimesTen database within a specified threshold by deleting the least recently used data. LRU aging can be defined for all cache group types except explicitly loaded autorefresh cache groups. LRU aging is defined by default on dynamic cache groups.

Define an LRU aging policy for a cache group by using the AGING LRU clause in the cache table definition of the CREATE CACHE GROUP statement. Aging occurs automatically if the aging state is set to its default of ON.

Example 4-14 Defining an LRU aging policy on a cache group

The following statement defines an LRU aging policy on the AWT cache group new_customers:

CREATE ASYNCHRONOUS WRITETHROUGH CACHE GROUP new_customers
FROM oratt.customer
 (cust_num NUMBER(6) NOT NULL,
  region   VARCHAR2(10),
  name     VARCHAR2(50),
  address  VARCHAR2(100),
  PRIMARY KEY(cust_num))
AGING LRU ON;

Use the ttAgingLRUConfig built-in procedure to set the LRU aging attributes as a user with the ADMIN privilege. The attribute settings apply to all tables in the TimesTen database that have an LRU aging policy defined and an aging state of ON.

The following are the LRU aging attributes:

  • LowUsageThreshold: The TimesTen database's space usage (the ratio of the permanent partition's in-use size over the partition's allocated size) at or below which LRU aging is deactivated. The default low usage threshold is .8 (80 percent).

  • HighUsageThreshold: The TimesTen database's space usage above which LRU aging is activated. The default high usage threshold is .9 (90 percent).

  • AgingCycle: The frequency in which aging occurs, in minutes. The default aging cycle is 1 minute.

Example 4-15 Setting the LRU aging attributes

The following procedure call specifies that the aging process checks every 5 minutes to see if the TimesTen database's permanent partition space usage is above 95 percent. If it is, the least recently used data is automatically aged out or deleted until the space usage is at or below 75 percent.

CALL ttAgingLRUConfig(.75, .95, 5);

If you set a new value for AgingCycle after an LRU aging policy has been defined on a cache group, the next time aging occurs is based on the current system time and the new aging cycle. For example, if the original aging cycle was 15 minutes and LRU aging occurred 10 minutes ago, aging is expected to occur again in 5 minutes. However, if you change the aging cycle to 30 minutes, aging next occurs 30 minutes from the time you call ttAgingLRUConfig with the new aging cycle setting.

If a row has been accessed or referenced since the last aging cycle, it is not eligible for LRU aging in the current aging cycle. A row is considered to be accessed or referenced if at least one of the following is true:

  • The row is used to build the result set of a SELECT or an INSERT ... SELECT statement.

  • The row has been marked to be updated or deleted in a pending transaction.

In a multiple-table cache group, if a row in a child table has been accessed or referenced since the last aging cycle, then neither the related row in the parent table nor the row in the child table is eligible for LRU aging in the current aging cycle.

The ALTER TABLE statement can be used to perform the following tasks associated with changing or defining an LRU aging policy on a cache group:

  • Change the aging state of a cache group by specifying the root table and using the SET AGING clause.

  • Add an LRU aging policy to a cache group that has no aging policy defined by specifying the root table and using the ADD AGING LRU clause.

  • Drop the LRU aging policy on a cache group by specifying the root table and using the DROP AGING clause.

To change the aging policy of a cache group from LRU to time-based, use an ALTER TABLE statement on the root table with the DROP AGING clause to drop the LRU aging policy. Then use an ALTER TABLE statement on the root table with the ADD AGING USE clause to add a time-based aging policy.

You must stop the cache agent before you add, alter or drop an aging policy on an autorefresh cache group.

Time-based aging

Time-based aging deletes data from a cache group based on the aging policy's specified data lifetime and frequency. Time-based aging can be defined for all cache group types.

Define a time-based aging policy for a cache group by using the AGING USE clause in the cache table definition of the CREATE CACHE GROUP statement. Aging occurs automatically if the aging state is set to its default of ON.

The definitions of the Oracle tables that will be cached in the AWT cache group defined in Example 4-17 are defined in Example 4-16. The Oracle tables are owned by the schema user oratt. The oratt user must be granted the CREATE SESSION and RESOURCE privileges before it can create tables.

Example 4-16 Oracle table definitions

CREATE TABLE orders
(ord_num      NUMBER(10) NOT NULL PRIMARY KEY,
 cust_num     NUMBER(6) NOT NULL,
 when_placed  DATE NOT NULL,
 when_shipped DATE NOT NULL);

CREATE TABLE order_item
(orditem_id NUMBER(12) NOT NULL PRIMARY KEY,
 ord_num    NUMBER(10),
 prod_num   VARCHAR2(6),
 quantity   NUMBER(3));

The Oracle user with the same name as the TimesTen cache manager user must be granted the SELECT privilege on the oratt.orders and oratt.order_item tables in order for the cache manager user to create an AWT cache group that caches these tables. The Oracle cache administration user must be granted the INSERT, UPDATE and DELETE privileges on the oratt.orders and oratt.order_item tables for asynchronous writethrough operations to occur from the TimesTen cache tables to the cached Oracle tables.

Example 4-17 Defining a time-based aging policy on a cache group

The following statement defines a time-based aging policy on the AWT cache group ordered_items:

CREATE ASYNCHRONOUS WRITETHROUGH CACHE GROUP ordered_items
FROM oratt.orders
 (ord_num      NUMBER(10) NOT NULL,
  cust_num     NUMBER(6) NOT NULL,
  when_placed  DATE NOT NULL,
  when_shipped DATE NOT NULL,
  PRIMARY KEY(ord_num))
AGING USE when_placed LIFETIME 45 DAYS CYCLE 60 MINUTES ON,
oratt.order_item
 (orditem_id NUMBER(12) NOT NULL,
  ord_num    NUMBER(10),
  prod_num   VARCHAR2(6),
  quantity   NUMBER(3),
  PRIMARY KEY(orditem_id),
  FOREIGN KEY(ord_num) REFERENCES oratt.orders(ord_num));

Cache instances that are greater than 45 days old based on the difference between the current system timestamp and the timestamp in the when_placed column of the oratt.orders table are candidates for aging. The aging process checks every 60 minutes to see if there are cache instances that can be automatically aged out or deleted from the cache tables.

The AGING USE clause requires the name of a non-nullable TIMESTAMP or DATE column used for time-based aging. We refer to this column as the timestamp column.

For each row, the value in the timestamp column stores the date and time when the row was most recently inserted or updated. The values in the timestamp column is maintained by your application. If the value of this column is unknown for particular rows and you do not want those rows to be aged out of the table, define the timestamp column with a large default value.

You can create an index on the timestamp column to optimize performance of the aging process.

You cannot add a column to an existing table and then use that column as the timestamp column because added columns cannot be defined as non-nullable. You cannot drop the timestamp column from a table that has a time-based aging policy defined.

Specify the lifetime in days, hours, minutes or seconds after the LIFETIME keyword in the AGING USE clause.

The value in the timestamp column is subtracted from the current system timestamp. The result is then truncated to the specified lifetime unit (day, hour, minute, second) and compared with the specified lifetime value. If the result is greater than the lifetime value, the row is a candidate for aging.

After the CYCLE keyword, specify the frequency in which aging occurs in days, hours, minutes or seconds. The default aging cycle is 5 minutes. If you specify an aging cycle of 0, aging is continuous.

The ALTER TABLE statement can be used to perform the following tasks associated with changing or defining a time-based aging policy on a cache group:

  • Change the aging state of a cache group by specifying the root table and using the SET AGING clause.

  • Change the lifetime by specifying the root table and using the SET AGING LIFETIME clause.

  • Change the aging cycle by specifying the root table and using the SET AGING CYCLE clause.

  • Add a time-based aging policy to a cache group that has no aging policy defined by specifying the root table and using the ADD AGING USE clause.

  • Drop the time-based aging policy on a cache group by specifying the root table and using the DROP AGING clause.

To change the aging policy of a cache group from time-based to LRU, use an ALTER TABLE statement on the root table with the DROP AGING clause to drop the time-based aging policy. Then use an ALTER TABLE statement on the root table with the ADD AGING LRU clause to add an LRU aging policy.

You must stop the cache agent before you add, alter or drop an aging policy on an autorefresh cache group.

Manually scheduling an aging process

Use the ttAgingScheduleNow built-in procedure to manually start a one-time aging process on a specified table or on all tables that have an aging policy defined. The aging process starts as soon as you call the procedure unless there is already an aging process in progress. Otherwise the manually started aging process begins when the aging process that is in progress has completed. After the manually started aging process has completed, the start of the table's next aging cycle is set to the time when ttAgingScheduleNow was called if the table's aging state is ON.

Example 4-18 Starting a one-time aging process

The following procedure call starts a one-time aging process on the oratt.orders table based on the time ttAgingScheduleNow is called:

CALL ttAgingScheduleNow('oratt.orders');

Rows in the oratt.orders root table that are candidates for aging are deleted as well as related rows in the oratt.order_item child table.

When you call ttAgingScheduleNow, the aging process starts regardless of whether the table's aging state is ON or OFF. If you want to start an aging process on a particular cache group, specify the name of the cache group's root table when you call the procedure. If ttAgingScheduleNow is called with no parameters, it starts an aging process and then resets the start of the next aging cycle on all tables in the TimesTen database that have an aging policy defined.

Calling ttAgingScheduleNow does not change the aging state of any table. If a table's aging state is OFF when you call the procedure, the aging process starts, but it is not scheduled to run again after the process has completed. To continue aging a table whose aging state is OFF, you must call ttAgingScheduleNow again or change the table's aging state to ON.

To manually control aging on a cache group, disable aging on the root table by using an ALTER TABLE statement with the SET AGING OFF clause. Then call ttAgingScheduleNow to start an aging process on the cache group.

Configuring a sliding window

You can use time-based aging to implement a sliding window for a cache group. In a sliding window configuration, new rows are inserted into and old rows are deleted from the cache tables on a regular schedule so that the tables contain only the data that satisfies a specific time interval.

You can configure a sliding window for a cache group by using incremental autorefresh mode and defining a time-based aging policy. The autorefresh operation checks the timestamp of the rows in the cached Oracle tables to determine whether new data should be refreshed into the TimesTen cache tables. The system time and the time zone must be identical on the Oracle and TimesTen systems.

If the cache group does not use incremental autorefresh mode, you can configure a sliding window by using a LOAD CACHE GROUP, REFRESH CACHE GROUP, or INSERT statement, or a dynamic load operation to bring new data into the cache tables.

Example 4-19 Defining a cache group with sliding window properties

The following statement configures a sliding window on the read-only cache group recent_shipped_orders:

CREATE READONLY CACHE GROUP recent_shipped_orders
AUTOREFRESH MODE INCREMENTAL INTERVAL 1440 MINUTES STATE ON
FROM oratt.orders
 (ord_num      NUMBER(10) NOT NULL,
  cust_num     NUMBER(6) NOT NULL,
  when_placed  DATE NOT NULL,
  when_shipped DATE NOT NULL,
  PRIMARY KEY(ord_num))
AGING USE when_shipped LIFETIME 30 DAYS CYCLE 24 HOURS ON;

New data in the oratt.orders cached Oracle table are automatically refreshed into the oratt.orders TimesTen cache table every 1440 minutes. Cache instances that are greater than 30 days old based on the difference between the current system timestamp and the timestamp in the when_shipped column are candidates for aging. The aging process checks every 24 hours to see if there are cache instances that can be aged out of the cache tables. Therefore, this cache group stores orders that have been shipped within the last 30 days.

The autorefresh interval and the lifetime used for aging determine the duration that particular rows remain in the cache tables. It is possible for data to be aged out of the cache tables before it has been in the cache tables for its lifetime. For example, for a read-only cache group if the autorefresh interval is 3 days and the lifetime is 30 days, data that is already 3 days old when it is refreshed into the cache tables is deleted after 27 days because aging is based on the timestamp stored in the rows of the cached Oracle tables that gets loaded into the TimesTen cache tables, not when the data is refreshed into the cache tables.

Dynamic cache groups

The data in a dynamic cache group is loaded on demand. For example, a call center application may not want to preload all of its customers' information into TimesTen as it may be very large. Instead it can use a dynamic cache group so that a specific customer's information is loaded only when needed such as when the customer calls or logs onto the system.

Any system managed cache group type (read-only, AWT, SWT) can be defined as a dynamic cache group. A user managed cache group can be defined as a dynamic cache group unless it uses both the AUTOREFRESH cache group attribute and the PROPAGATE cache table attribute.

Use the CREATE DYNAMIC CACHE GROUP statement to create a dynamic cache group.

Example 4-20 Dynamic read-only cache group

This following statement creates a dynamic read-only cache group online_customers that caches the oratt.customer table:

CREATE DYNAMIC READONLY CACHE GROUP online_customers
FROM oratt.customer
 (cust_num NUMBER(6) NOT NULL,
  region   VARCHAR2(10),
  name     VARCHAR2(50),
  address  VARCHAR2(100),
  PRIMARY KEY(cust_num));

With an explicitly loaded cache group, data is initially loaded into the cache tables from the cached Oracle tables using a LOAD CACHE GROUP statement. With a dynamic cache group, data may also be loaded into the cache tables using a LOAD CACHE GROUP statement. However, with a dynamic cache group, data is typically loaded automatically when its cache tables are referenced by a SELECT, INSERT, or UPDATE statement and the data is not found in the tables resulting in a cache miss. See "Dynamically loading a cache instance" for more information.

With both explicitly loaded and dynamic cache groups, a LOAD CACHE GROUP statement loads into their cache tables qualified data that exists in the cached Oracle tables but not in the TimesTen cache tables. However, if a row exists in a cache table but a newer version exists in the cached Oracle table, a LOAD CACHE GROUP statement does not load that row into the cache table even if it satisfies the predicate of the statement.

By contrast, a REFRESH CACHE GROUP statement reloads qualifying rows that exists in the cache tables, effectively refreshing the content of the cache. For an explicitly loaded cache group, the rows that are refreshed are all the rows that satisfy the predicate of the REFRESH CACHE GROUP statement. However, for a dynamic cache group, the rows that are refreshed are the ones that satisfy the predicate and already exist in the cache tables. In other words, rows that end up being refreshed are the ones that have been updated or deleted in the cached Oracle table, but not the ones that have been inserted. Therefore, a refresh operation processes only the rows that are already in the cache tables. No new rows are loaded into the cache tables of a dynamic cache group as a result of a refresh.

The data in the cache instance of a dynamic read-only cache group is consistent with the data in the corresponding rows of the Oracle tables. At any instant in time, the data in a cache instance of an explicitly loaded cache group is consistent with the data in the corresponding rows of the Oracle tables, taking into consideration the state and the interval settings for autorefresh.

The data in a dynamic cache group is subject to aging as LRU aging is defined by default. You can use the ttAgingLRUConfig built-in procedure to override the default or current LRU aging attribute settings for the aging cycle and TimesTen database space usage thresholds. Alternatively, you can define time-based aging on a dynamic cache group to override LRU aging. Rows in a dynamic AWT cache group must be propagated to Oracle before they become candidates for aging.

Global cache groups

An Oracle table cannot be cached in more than one cache group within the same TimesTen database. However, the table can be cached in separate cache groups in different TimesTen databases. If the table is cached in separate AWT cache groups and the same cache instance is updated simultaneously on multiple TimesTen databases, there is no guarantee as to the order in which the updates are propagated to the cached Oracle table. Also, the contents of the updated cache table are inconsistent between the TimesTen databases.

A TimesTen cache grid prevents this problem by providing users with Oracle databases a means to horizontally scale out cache groups across multiple systems with read/write data consistency across the TimesTen databases. A cache grid is a set of TimesTen databases that collectively manage the application data.

Tables that are cached in separate cache groups within different TimesTen databases must be cached in global cache groups in order for the cache grid to manage consistency of the cache instances across the grid members when updates are committed on the cache tables of the cache group. In a cache grid, only one copy of a cache instance is allowed to be present in the entire grid at any moment in time. Each cache instance in a global cache group is owned by the grid member where it is currently located. Only the cache grid member that owns the cache instance has the right to update the data. The TimesTen cache grid tracks the ownership for each cache instance, so that it can quickly locate the grid member where each cache instance is currently located and ensure that the same cache instance is not concurrently present in multiple grid members. However, another grid member can obtain ownership of the cache instance from the current owner.

Global cache groups can be defined as dynamic AWT cache groups or as explicitly loaded AWT cache groups.

This section includes the following topics:

Dynamic global cache groups

The following statement is the definition of the Oracle table that will be cached in the dynamic AWT global cache group that is created in Example 4-21. The Oracle table is owned by the schema user oratt. The oratt user must be granted the CREATE SESSION and RESOURCE privileges before it can create tables.

CREAT25E TABLE subscriber
(subscriberid       NUMBER(10) NOT NULL PRIMARY KEY,
 name               VARCHAR2(100) NOT NULL,
 minutes_balance    NUMBER(5) NOT NULL,
 last_call_duration NUMBER(4) NOT NULL);

The Oracle user with the same name as the TimesTen cache manager user must be granted the SELECT privilege on the oratt.subscriber table so that the cache manager user can create an AWT cache group that caches this table. The Oracle cache administration user must be granted the INSERT, UPDATE and DELETE privileges on the oratt.subscriber table for asynchronous writethrough operations to occur from the TimesTen cache table to the cached Oracle table.

Use the CREATE DYNAMIC ASYNCHRONOUS WRITETHROUGH GLOBAL CACHE GROUP statement to create a dynamic AWT global cache group.

Example 4-21 Dynamic global cache group

The following statement creates a dynamic AWT global cache group subscriber_accounts that caches the oratt.subscriber table:

CREATE DYNAMIC ASYNCHRONOUS WRITETHROUGH GLOBAL CACHE GROUP subscriber_accounts
FROM oratt.subscriber
 (subscriberid       NUMBER(10) NOT NULL PRIMARY KEY,
  name               VARCHAR2(100) NOT NULL,
  minutes_balance    NUMBER(5) NOT NULL,
  last_call_duration NUMBER(4) NOT NULL);

When a subscriber to a prepaid telephone account makes a call, the cache instance that contains the subscriber's account balance is loaded into the oratt.subscriber cache table of the subscriber_accounts global cache group within one of the cache grid members. The query for the account balance information first searches the grid member on which the query is issued. If the cache tables on the local grid member do not contain data that satisfies a query, then the cache instance is transferred from other grid members to the local grid member in a grid data transfer operation. If the grid does not contain the cache instance that satisfies the query, data is loaded from the Oracle tables. When data is loaded into the local grid member from the Oracle tables, this operation is called a dynamic load. The grid member that the cache instance is loaded into becomes the owner of the cache instance. Other grid members cannot access the cache instance until the owner has updated the balance of minutes and the duration of the last call, and the committed update has been propagated to the cached Oracle table.

To ensure consistency among the grid members, an Oracle table that is cached in a global cache group in a TimesTen database should not also be cached in a local cache group in another TimesTen database within the same cache grid. In addition, the Oracle table should not be cached in a global cache group in another TimesTen database within a different cache grid.

For cache tables in a dynamic global cache group, a particular cache instance can be read or updated by only one grid member at a time. This grid member is referred to as the owner of the cache instance. When the owner no longer has a pending transaction on any row of the cache instance, another grid member can take ownership by reading or updating that instance. The owner relinquishes ownership of a cache instance when the instance has been deleted from that grid member as a result of:

  • Aging

  • A DELETE statement issued on the cache table

  • An UNLOAD CACHE GROUP statement issued on the cache group

  • A request from another grid member to take ownership of that instance

The owner relinquishes ownership of all its cache instances if that grid member detaches from its cache grid.

Read data consistency between nodes of a cache grid is guaranteed only when using serializable isolation level on the node where cache instances are being read. When using the default read committed isolation level, a connection on a grid node that is reading a cache instance may see a data value that has been subsequently updated to a new value by another connection in the same or a different node.

The cache tables in a dynamic global cache group can be populated using any of these operations:

  • Dynamic load operation

  • Grid data transfer operation

  • INSERT statement on the cache tables (but not an INSERT INTO ... SELECT FROM statement)

  • LOAD CACHE GROUP ... COMMIT EVERY n ROWS statement (can only be used if all the other grid members do not own any of the cache instances to be loaded)

See "Dynamically loading a cache instance" for information about a dynamic load operation.

A grid member can take ownership of a cache instance that is currently owned by another grid member by using any of the following operations:

  • Grid data transfer operation

  • Dynamic load operation

  • LOAD CACHE GROUP ... WITH ID statement

A REFRESH CACHE GROUP statement can be issued on a dynamic global cache group only if it contains a WITH ID clause.

You can set the CacheGridMsgWait connection attribute to the maximum number of seconds that a grid member waits for the owner to relinquish the instance. The owner cannot relinquish ownership of a cache instance if it has a pending transaction on any row of the instance. The default maximum wait time is 60 seconds.

An INSERT statement issued on a cache table in a dynamic global cache group fails if the unique key value in the inserted row already exists in the cached Oracle table.

When using a LOAD CACHE GROUP ... COMMIT EVERY n ROWS statement, if any of the cache instances to be loaded within a transaction are owned by another grid member, an error is returned. The transaction is then rolled back and no cache instances are loaded within the failed transaction.

To prevent conflicts that can occur if you update the same row in a TimesTen cache table and the cached Oracle table concurrently, update only the cache table. The cached Oracle table should not be updated directly.

A TimesTen database that is a member of a cache grid can contain local and global cache groups. Only cache tables in global cache groups are guaranteed to be consistent among the grid members.

Explicitly loaded global cache groups

Cache instances in an explicitly loaded global cache group are initially loaded from the Oracle database. You can reload the cache instances by issuing another LOAD CACHE GROUP statement or reload a single cache instance with the REFRESH CACHE GROUP...WITH ID statement.

If the cache tables on the local grid member do not contain data that satisfies a query, then the cache instance is transferred from other grid members to the local grid member in a grid data transfer operation. If the grid does not contain the cache instance that satisfies the query, data is not loaded from the Oracle tables. The query returns no results.

Use the CREATE ASYNCHRONOUS WRITETHROUGH GLOBAL CACHE GROUP statement to create an explicitly loaded global cache group. Note that this SQL statement is the same as the SQL statement that creates a dynamic global cache group except that the DYNAMIC keyword is omitted.

Example 4-22 Creating an explicitly loaded global cache group

The following statement creates an explicitly loaded AWT global cache group subscriber_accounts that caches the oratt.subscriber table:

CREATE ASYNCHRONOUS WRITETHROUGH GLOBAL CACHE GROUP subscriber_accounts
FROM oratt.subscriber
 (subscriberid       NUMBER(10) NOT NULL PRIMARY KEY,
  name               VARCHAR2(100) NOT NULL,
  minutes_balance    NUMBER(5) NOT NULL,
  last_call_duration NUMBER(4) NOT NULL);

The cache tables in an explicitly loaded global cache group can be populated at any time using any of these operations:

  • Grid data transfer operation

  • INSERT statement on the cache tables (but not an INSERT INTO ... SELECT FROM statement)

  • LOAD CACHE GROUP statement. The statement can be used only if other grid members do not own any of the cache instances to be loaded into the local grid member.

  • REFRESH CACHE GROUP ... WITH ID statement

Aging is disabled by default on an explicitly loaded global cache group.

Set the CacheGridMsgWait connection attribute to the maximum number of seconds that a grid member waits for the owner to relinquish the instance. The owner cannot relinquish ownership of a cache instance if it has a pending transaction on any row of the instance. The default maximum wait time is 60 seconds.

If a query that specifies a primary key or foreign key is issued on a cache table where there is no row that satisfies the query, the cache instance is not transferred to the cache table.

If a row is inserted into a child table whose parent table exists in the cache grid, the cache instance is transferred to the member with the child table. An insert into a child table whose parent is not in the cache grid fails.

Start the replication agent

After you have created a global cache group, start the replication agent on the TimesTen database as the cache manager user, if it is not already running:

% ttIsql "DSN=cachealone1;UID=cacheuser;PWD=timesten;OraclePWD=oracle"
Command> call ttRepStart;
Command> exit

Attach a TimesTen database to a cache grid

All standalone TimesTen databases, and the active and standby databases of an active standby pair that contain global cache groups must attach to the cache grid that they are associated with in order to update the cache tables of the global cache groups. Attaching the databases to the grid allow the databases to become members of the grid so that cache instances in the cache tables of the global cache groups can maintain consistency among the databases within the grid.

Example 4-23 Attaching a TimesTen database to a cache grid

Attach the first standalone database to the ttGrid cache grid that it is associated with by calling the ttGridAttach built-in procedure as the cache manager user. The node number for a standalone TimesTen database is 1. Calling the ttGridAttach built-in procedure automatically starts the cache agent on the TimesTen database if it is not already running.

In this example, alone1 is a name that is used to uniquely identify the grid member, sys1 is the host name of the TimesTen system where the first standalone database resides, and 5001 is the TCP/IP port for the first standalone database's cache agent process:

% ttIsql "DSN=cachealone1;UID=cacheuser;PWD=timesten;OraclePWD=oracle"
Command> call ttGridAttach(1,'alone1','sys1',5001);
Command> exit

Specify a port for the cache agent on each TimesTen database that attaches to the grid. There is no default port number. A typical grid uses the same port for each member of the grid, but different ports can be specified if desired. The port assignment is a grid member property. The only way to change the properties of a grid member after it has been attached to the grid is to destroy the grid and re-create it. Use the ttGridNodeStatus built-in procedure to determine the members of a grid and their ports.

See "Configuring a cache grid" for more information about a cache grid.

PKmK525PKAAOEBPS/prereqs.htm Setting Up a Caching Infrastructure

3 Setting Up a Caching Infrastructure

This chapter describes the tasks for setting up the TimesTen and Oracle systems before you can start caching Oracle data in a TimesTen database. It includes the following topics:

Configuring your system to cache Oracle data in TimesTen

Oracle In-Memory Database Cache supports the following Oracle server releases:

Configure the environment variables for your particular operating system, as described in "Oracle In-Memory Database Cache environment variables for UNIX" or "Oracle In-Memory Database Cache environment variables for Microsoft Windows".

Then install TimesTen as described in Oracle TimesTen In-Memory Database Installation Guide.


Note:

From a product perspective, "Oracle In-Memory Database Cache" is used interchangeably with "TimesTen" because the Oracle In-Memory Database Cache product option includes the Oracle TimesTen In-Memory Database.

TimesTen does not support Oracle Name Server for Windows clients.

Oracle In-Memory Database Cache environment variables for UNIX

The shared library search path environment variable such as LD_LIBRARY_PATH or SHLIB_PATH must include the TimesTen_install_dir/lib directory.

For more information, see "Shared library path environment variable" in Oracle TimesTen In-Memory Database Installation Guide.

The PATH environment variable must include the TimesTen_install_dir/bin directory.

In the following example, TimesTen is installed in the /timesten/myinstance directory:

LD_LIBRARY_PATH=/timesten/myinstance/lib
PATH=/timesten/myinstance/bin

Oracle In-Memory Database Cache environment variables for Microsoft Windows

The PATH system environment variable must include the following directories:

  • Oracle_install_dir\bin

  • TimesTen_install_dir\lib

  • TimesTen_install_dir\bin

In the following example, Oracle is installed in the C:\oracle\ora112 directory and TimesTen is installed in the C:\timesten\myinstance directory:

PATH=C:\oracle\ora112\bin;C:\timesten\myinstance\lib;C:\timesten\myinstance\bin

Configuring the Oracle database to cache data in TimesTen

This section describes the tasks that must be performed on the Oracle database by the sys user. The topics include:

Create the Oracle users

First you must create a user timesten that will own Oracle tables that store information about cache grids. The SQL*Plus script TimesTen_install_dir/oraclescripts/initCacheGlobalSchema.sql is used to create:

  • The timesten user

  • The Oracle tables owned by the timesten user to store information about cache grids

  • The TT_CACHE_ADMIN_ROLE role that defines privileges on these Oracle tables

Create or designate a default tablespace for the timesten user and pass this tablespace as an argument to the initCacheGlobalSchema.sql script. See "Managing a caching environment with Oracle objects" for a list of Oracle tables owned by the timesten user.

Example 3-1 Creating the timesten user and its tables

In the following SQL*Plus example, the default tablespace that is created for the timesten user is cachetblsp:

% cd TimesTen_install_dir/oraclescripts
% sqlplus sys as sysdba
Enter password: password
SQL> CREATE TABLESPACE cachetblsp DATAFILE 'datfttuser.dbf' SIZE 100M;
SQL> @initCacheGlobalSchema "cachetblsp"

Then you must create or designate one or more users that will own Oracle tables that will be cached in a TimesTen database. We refer to these users as the schema users. These may be existing users or new users. The tables to be cached may or may not already exist.

Example 3-2 Creating a schema user

As the sys user, create a schema user oratt.

Use SQL*Plus to create the schema user:

SQL> CREATE USER oratt IDENTIFIED BY oracle;

Next you must create a user that will create, own and maintain Oracle objects that store information used to manage a specific cache grid and enforce predefined behaviors of particular cache group types. We refer to this user as the cache administration user.

Designate the tablespace that was created for the timesten user as the default tablespace for the cache administration user. This user will create tables in this tablespace that are used to store information about the cache grid and its cache groups. Other Oracle objects such change log tables, replication metadata tables, and triggers that are used to enforce the predefined behaviors of autorefresh cache groups and AWT cache groups are created in the same tablespace.

See "Managing a caching environment with Oracle objects" for a list of Oracle tables and triggers owned by the cache administration user.


Note:

An autorefresh cache group refers to a read-only cache group or a user managed cache group that uses the AUTOREFRESH MODE INCREMENTAL cache group attribute.

Example 3-3 Creating the cache administration user

As the sys user, create a cache administration user cacheuser. In the following example, the default tablespace for the cacheuser user is cachetblsp.

Use SQL*Plus to create the cache administration user:

SQL> CREATE USER cacheuser IDENTIFIED BY oracle
  2  DEFAULT TABLESPACE cachetblsp QUOTA UNLIMITED ON cachetblsp;

Grant privileges to the Oracle users

The privileges that the Oracle users require depends on the types of cache groups you create and the operations that you perform on the cache groups. The privileges required for the Oracle cache administration user and the TimesTen cache manager user for each cache operation are listed in Table 3-1.

Table 3-1 Oracle and TimesTen user privileges required for cache operations

Cache operationPrivileges required for Oracle cache administration userFoot 1 Privileges required for TimesTen cache manager userFoot 2 

Initialize the cache administration user. The grantCacheAdminPrivileges.sql script grants these privileges to the cache administration user.

CREATE SESSION

TT_CACHE_ADMIN_ROLE

EXECUTE ON SYS.DBMS_LOCK

RESOURCE

CREATE PROCEDURE

CREATE ANY TRIGGER

EXECUTE ON SYS.DBMS_LOB

SELECT ON SYS.ALL_OBJECTS

SELECT ON SYS.ALL_SYNONYMS

CREATE ANY TYPE

SELECT ON SYS.GV_$LOCK

SELECT ON SYS.GV_$SESSION

SELECT ON SYS.DBA_DATA_FILES

SELECT ON SYS.USER_USERS

SELECT ON SYS.USER_FREE_SPACE

SELECT ON SYS.USER_TS_QUOTAS

SELECT ON SYS.USER_SYS_PRIVS

Permissions for the default tablespace


Set the cache administration user name and password

  • Call the ttCacheUidPwdSet built-in procedure

  • Run the ttAdmin -cacheUidPwdSet utility command

  • CREATE SESSION

  • RESOURCEFoot 3 

CACHE_MANAGER

Get the cache administration user name

  • Call the ttCacheUidGet built-in procedure

  • Run the ttAdmin -cacheUidGet utility command

None

CACHE_MANAGER

Create a cache grid

  • Call the ttGridCreate built-in procedure

  • CREATE SESSION

  • TT_CACHE_ADMIN_ROLE role

  • RESOURCEFootref 3

CACHE_MANAGER

Associate a TimesTen database with a cache grid

  • Call the ttGridNameSet built-in procedure

  • CREATE SESSION

  • TT_CACHE_ADMIN_ROLE role

CACHE_MANAGER

Attach a TimesTen database to a cache grid

  • Call the ttGridAttach built-in procedure

  • CREATE SESSION

  • TT_CACHE_ADMIN_ROLE role

CACHE_MANAGER

Detach a TimesTen database from a cache grid

  • Call the ttGridDetach built-in procedure

  • CREATE SESSION

  • TT_CACHE_ADMIN_ROLE role

CACHE_MANAGER

Detach a list of nodes from a cache grid

  • Call the ttGridDetachList built-in procedure

  • CREATE SESSION

  • TT_CACHE_ADMIN_ROLE role

CACHE_MANAGER

Destroy a cache grid

  • Call the ttGridDestroy built-in procedure

  • CREATE SESSION

  • TT_CACHE_ADMIN_ROLE role

CACHE_MANAGER

Start the cache agent

  • Call the ttCacheStart built-in procedure

  • Run the ttAdmin -cacheStart utility command

CREATE SESSION

CACHE_MANAGER

Stop the cache agent

  • Call the ttCacheStop built-in procedure

  • Run the ttAdmin -cacheStop utility command

None

CACHE_MANAGER

Set a cache agent start policy

  • Call the ttCachePolicySet built-in procedure

  • Run the ttAdmin -cachePolicy utility command

CREATE SESSIONFoot 4 

CACHE_MANAGER

Return the cache agent start policy setting

  • Call the ttCachePolicyGet built-in procedure

CREATE SESSION

None

Start the replication agent

  • Call the ttRepStart built-in procedure

  • Run the ttAdmin -repStart utility command

None

CACHE_MANAGER

Stop the replication agent

  • Call the ttRepStop built-in procedure

  • Run the ttAdmin -repStop utility command

None

CACHE_MANAGER

Set a replication agent start policy

  • Call the ttRepPolicySet built-in procedure

  • Run the ttAdmin -repPolicy utility command

None

ADMIN

CREATE [DYNAMIC] READONLY CACHE GROUP with AUTOREFRESH MODE INCREMENTAL

  • CREATE SESSION

  • SELECT ON table_nameFoot 5 

  • RESOURCEFootref 3

  • CREATE ANY TRIGGERFootref 3

  • CREATE [ANY] CACHE GROUPFoot 6 

  • CREATE [ANY] TABLEFoot 7 

CREATE [DYNAMIC] READONLY CACHE GROUP with AUTOREFRESH MODE FULL

  • CREATE SESSION

  • SELECT ON table_nameFootref 5

  • CREATE [ANY] CACHE GROUPFootref 6

  • CREATE [ANY] TABLEFootref 7

CREATE [DYNAMIC] ASYNCHRONOUS WRITETHROUGH [GLOBAL] CACHE GROUP

  • CREATE SESSION

  • SELECT ON table_nameFootref 5

  • RESOURCEFootref 3

  • CREATE [ANY] CACHE GROUPFootref 6

  • CREATE [ANY] TABLEFootref 7

CREATE [DYNAMIC] SYNCHRONOUS WRITETHROUGH CACHE GROUP

  • CREATE SESSION

  • SELECT ON table_nameFootref 5

  • CREATE [ANY] CACHE GROUPFootref 6

  • CREATE [ANY] TABLEFootref 7

CREATE [DYNAMIC] USERMANAGED CACHE GROUP

(see variants in following rows)

  • CREATE SESSION

  • SELECT ON table_nameFootref 5

  • CREATE [ANY] CACHE GROUPFootref 6

  • CREATE [ANY] TABLEFootref 7

CREATE [DYNAMIC] USERMANAGED CACHE GROUP with AUTOREFRESH MODE INCREMENTAL

  • CREATE SESSION

  • SELECT ON table_nameFootref 5

  • RESOURCEFootref 3

  • CREATE ANY TRIGGERFootref 3

  • CREATE [ANY] CACHE GROUPFootref 6

  • CREATE [ANY] TABLEFootref 7

CREATE [DYNAMIC] USERMANAGED CACHE GROUP with AUTOREFRESH MODE FULL

  • CREATE SESSION

  • SELECT ON table_nameFootref 5

  • CREATE [ANY] CACHE GROUPFootref 6

  • CREATE [ANY] TABLEFootref 7

CREATE [DYNAMIC] USERMANAGED CACHE GROUP with READONLY

  • CREATE SESSION

  • SELECT ON table_nameFootref 5

  • CREATE [ANY] CACHE GROUPFootref 6

  • CREATE [ANY] TABLEFootref 7

CREATE [DYNAMIC] USERMANAGED CACHE GROUP with PROPAGATE

  • CREATE SESSION

  • SELECT ON table_nameFootref 5

  • CREATE [ANY] CACHE GROUPFootref 6

  • CREATE [ANY] TABLEFootref 7

ALTER CACHE GROUP SET AUTOREFRESH STATE PAUSED

ALTER ANY CACHE GROUPFoot 9 

ALTER CACHE GROUP SET AUTOREFRESH STATE ON

ALTER ANY CACHE GROUPFootref 9

ALTER CACHE GROUP SET AUTOREFRESH STATE OFF

CREATE SESSION

ALTER ANY CACHE GROUPFootref 9

ALTER CACHE GROUP SET AUTOREFRESH MODE FULL

CREATE SESSION

ALTER ANY CACHE GROUPFootref 9

ALTER CACHE GROUP SET AUTOREFRESH MODE INCREMENTAL

  • CREATE SESSION

  • SELECT ON table_nameFootref 5

  • RESOURCEFootref 3

  • CREATE ANY TRIGGERFootref 3

ALTER ANY CACHE GROUPFootref 9

ALTER CACHE GROUP SET AUTOREFRESH INTERVAL

  • CREATE SESSION

  • SELECT ON table_nameFootref 5,Foot 10 

ALTER ANY CACHE GROUPFootref 9

LOAD CACHE GROUP

  • CREATE SESSION

  • SELECT ON table_nameFootref 5

LOAD {ANY CACHE GROUP | ON cache_group_name)Footref 9

REFRESH CACHE GROUP

  • CREATE SESSION

  • SELECT ON table_nameFootref 5

REFRESH {ANY CACHE GROUP | ON cache_group_name)Footref 9

FLUSH CACHE GROUP

  • CREATE SESSION

  • UPDATE ON table_nameFootref 5

  • INSERT ON table_nameFootref 5

FLUSH {ANY CACHE GROUP | ON cache_group_name)Footref 9

UNLOAD CACHE GROUP

None

UNLOAD {ANY CACHE GROUP | ON cache_group_name)Footref 9

DROP CACHE GROUP

CREATE SESSION

  • DROP ANY CACHE GROUPFootref 9

  • DROP ANY TABLEFoot 11 

Synchronous writethrough or propagate

  • INSERT ON table_nameFoot 13 

  • UPDATE ON table_nameFootref 13

  • DELETE ON table_nameFootref 13

Asynchronous writethrough

  • CREATE SESSION

  • INSERT ON table_nameFootref 5

  • UPDATE ON table_nameFootref 5

  • DELETE ON table_nameFootref 5

  • INSERT ON table_nameFootref 13

  • UPDATE ON table_nameFootref 13

  • DELETE ON table_nameFootref 13

Asynchronous writethrough when the CacheAWTMethod connection attribute is set to 1

CREATE PROCEDURE

Note: This privilege is an addition to the privileges needed for any asynchronous writethrough cache group.

No additional privileges

Asynchronous writethrough cache for Oracle CLOB, BLOB and NCLOB fields when the CacheAWTMethod connection attribute is set to 1

EXECUTE privilege on the Oracle DBMS_LOB PL/SQL package

Note: This privilege is an addition to the privileges needed for any asynchronous writethrough cache group.

No additional privileges

Incremental autorefresh

SELECT ON table_nameFootref 5

None

Full autorefresh

SELECT ON table_nameFootref 5

None

Dynamic load

  • CREATE SESSION

  • SELECT ON table_nameFootref 5

  • SELECT ON table_nameFootref 13

  • UPDATE ON table_nameFootref 13

  • DELETE ON table_nameFootref 13

  • INSERT ON table_nameFootref 13

Aging

None

DELETE {ANY TABLE | ON table_name)Footref 13

Set the LRU aging attributes

  • Call the ttAgingLRUConfig built-in procedure

None

ADMIN

Generate Oracle SQL statements to manually install or uninstall Oracle objects

  • Run the ttIsql utility's cachesqlget command

  • Call the ttCacheSQLGet built-in procedure

CREATE SESSION

CACHE_MANAGER

Disable or enable propagation of committed cache table updates to Oracle

  • Call the ttCachePropagateFlagSet built-in procedure

None

CACHE_MANAGER

Configure cache agent timeout and recovery method for autorefresh cache groups

  • Call the ttCacheConfig built-in procedure

CREATE SESSION

CACHE_MANAGER

Set the AWT transaction log file threshold

  • Call the ttCacheAWTThresholdSet built-in procedure

None

CACHE_MANAGER

Enable or disable monitoring of AWT cache groups

  • Call the ttCacheAWTMonitorConfig built-in procedure

None

CACHE_MANAGER

Enable or disable tracking of DDL statements issued on cached Oracle tables

  • Call the ttCacheDDLTrackingConfig built-in procedure

CREATE SESSION

CACHE_MANAGER

Return information about cache grids

  • Call the ttGridInfo built-in procedure

  • CREATE SESSION

  • TT_CACHE_ADMIN_ROLE role

CACHE_MANAGER

Return information about cache grid nodes

  • Call the ttGridNodeStatus built-in procedure

  • CREATE SESSION

  • TT_CACHE_ADMIN_ROLE role

CACHE_MANAGER


Footnote 1 At minimum, the cache administration user must have the CREATE ANY TYPE privilege.

Footnote 2 At minimum, the cache manager user must have the CREATE SESSION privilege.

Footnote 3 Not required if the Oracle objects used to manage the caching of Oracle data are manually created.

Footnote 4 Required if the cache agent start policy is being set to always or norestart.

Footnote 5 Required on all Oracle tables cached in the TimesTen cache group except for tables owned by the cache administration user.

Footnote 6 The CACHE_MANAGER privilege includes the CREATE [ANY] CACHE GROUP privilege. ANY is required if the cache manager user creates cache groups owned by a user other than itself.

Footnote 7 ANY is required if any of the cache tables are owned by a user other than the cache manager user.

Footnote 8 Required if the cache group's autorefresh mode is incremental and initial autorefresh state is OFF, and the Oracle objects used to manage the caching of Oracle data are automatically created.

Footnote 9 Required if the TimesTen user accessing the cache group does not own the cache group.

Footnote 10 Required if the cache group's autorefresh mode is incremental.

Footnote 11 Required if the TimesTen user accessing the cache group does not own all its cache tables.

Footnote 12 The privilege must be granted to the Oracle user with the same name as the TimesTen cache manager user if the Oracle user is not the cache administration user.

Footnote 13 Required if the TimesTen user accessing the cache table does not own the table.

Automatically create Oracle objects used to manage caching of Oracle data

TimesTen can automatically create Oracle objects owned by the cache administration user, such as cache and replication metadata tables, change log tables, and triggers when particular cache grid and cache group operations are performed. Some of these objects are used to store information about TimesTen databases that are associated with a particular cache grid. Other objects are used to enforce the predefined behaviors of autorefresh cache groups and AWT cache groups.

These Oracle objects are automatically created if the cache administration user has been granted the required privileges by running the SQL*Plus script TimesTen_install_dir/oraclescripts/grantCacheAdminPrivileges.sql as the sys user. The set of required privileges include CREATE SESSION, RESOURCE, CREATE ANY TRIGGER, and the TT_CACHE_ADMIN_ROLE role. The cache administration user name is passed as an argument to the grantCacheAdminPrivileges.sql script.

In addition to the privileges granted to the cache administration user by running the grantCacheAdminPrivileges.sql script, this user may also need to be granted privileges such as SELECT or INSERT on the cached Oracle tables depending on the types of cache groups you create, and the operations that yo perform on the cache groups and their cache tables. See Table 3-1 for a complete list of privileges that need to be granted to the cache administration user in order to perform particular cache grid, cache group, and cache table operations.

Example 3-4 Granting privileges to automatically create Oracle objects

As the sys user, run the grantCacheAdminPrivileges.sql script to grant privileges to the cache administration user to automatically create Oracle objects used to manage caching of Oracle data in a TimesTen database. In the following example, the cache administration user name is cacheuser.

Use SQL*Plus to run the grantCacheAdminPrivileges.sql script:

SQL> @grantCacheAdminPrivileges "cacheuser"
SQL> exit

For example, with autorefresh cache groups, the Oracle objects used to enforce the predefined behaviors of these cache group types are automatically created if the objects do not already exist and one of the following occurs:

  • The cache group is created with its autorefresh state set to PAUSED or ON

  • The cache group is created with its autorefresh state set to OFF and then altered to either PAUSED or ON

Manually create Oracle objects used to manage caching of Oracle data

The cache administration user requires the RESOURCE privilege to automatically create the Oracle objects used to:

  • Store information about TimesTen databases that are associated with a particular cache grid

  • Enforce the predefined behaviors of autorefresh cache groups. In this case, the cache administration user also requires the CREATE ANY TRIGGER privilege to automatically create these Oracle objects.

  • Enforce the predefined behaviors of AWT cache groups

For security purposes, if you do not want to grant the RESOURCE and CREATE ANY TRIGGER privileges to the cache administration user required to automatically create the Oracle objects, you can manually create these objects.

To manually create the Oracle tables and triggers used to enforce the predefined behaviors of particular cache group types, run the SQL*Plus script TimesTen_install_dir/oraclescripts/initCacheAdminSchema.sql as the sys user. These objects must be created before you can create autorefresh cache groups and AWT cache groups. The cache administration user name is passed as an argument to the initCacheAdminSchema.sql script.

The initCacheAdminSchema.sql script also grants a minimal set of required privileges including CREATE SESSION and the TT_CACHE_ADMIN_ROLE role to the cache administration user. In addition to the privileges granted to the cache administration user by running the initCacheAdminSchema.sql script, this user may also need to be granted privileges such as SELECT or INSERT on the cached Oracle tables depending on the types of cache groups you create and the operations that you perform on the cache groups and their cache tables. See Table 3-1 for a complete list of privileges that need to be granted to the cache administration user in order to perform particular cache grid, cache group, and cache table operations.

To manually create the Oracle tables used to store information about TimesTen databases that are associated with a particular cache grid, run the SQL*Plus script TimesTen_install_dir/oraclescripts/initCacheGridSchema.sql as the sys user. These tables must be created before you can create a cache grid. The cache administration user name and the name of the cache grid that you create are passed as arguments to the initCacheGridSchema.sql script.

Example 3-5 Manually creating Oracle objects used to manage caching of Oracle data

As the sys user, run the initCacheAdminSchema.sql script to manually create Oracle objects used to enforce the predefined behaviors of autorefresh cache groups and AWT cache groups, and grant a limited set of privileges to the cache administration user. Then run the initCacheGridSchema.sql script to manually create Oracle objects used to store information about TimesTen databases associated with a particular cache grid. In the following example, the cache administration user name is cacheuser and the cache grid name is ttGrid.

Use SQL*Plus to run the initCacheAdminSchema.sql and initCacheGridSchema.sql scripts:

SQL> @initCacheAdminSchema "cacheuser"
SQL> @initCacheGridSchema "cacheuser" "ttGrid"
SQL> exit

Other Oracle objects associated with Oracle tables that are cached in an autorefresh cache group are needed to enforce the predefined behaviors of these cache group types. See "Manually creating Oracle objects for autorefresh cache groups" for details about how to create these additional objects after you create the cache group.

To view a list of the Oracle objects created and used by TimesTen to manage the caching of Oracle data, execute the following query in SQL*Plus as the sys user:

SQL> SELECT owner, object_name, object_type FROM all_objects WHERE object_name 
  2  LIKE 'TT\___%' ESCAPE '\';

The query returns a list of tables, indexes and triggers owned by either the timesten user or the cache administration user.

Configuring a TimesTen database to cache Oracle data

This section describes the operations that must be performed on the TimesTen database by the instance administrator or the cache manager user. The topics include:

Define a DSN for the TimesTen database

A TimesTen database that caches data from an Oracle database can be referenced by either a system DSN or a user DSN. See "Managing TimesTen Databases" in Oracle TimesTen In-Memory Database Operations Guide for more information about creating TimesTen DSNs.

When creating a DSN for a TimesTen database that caches data from an Oracle database, pay special attention to the settings of the following connection attributes. All of these connection attributes can be set in a Data Manager DSN or a connection string, unless otherwise stated.

  • PermSize specifies the allocated size of the database's permanent partition in MB. Set this value to at least 32 MB.

  • OracleNetServiceName must be set to the net service name of the Oracle database instance.

    On Microsoft Windows systems, the net service name of the Oracle database instance is specified in the Oracle Net Service Name field of the IMDB Cache tab within the TimesTen ODBC Setup dialog box.

  • DatabaseCharacterSet must be set to the Oracle database character set.

    You can determine the Oracle database character set by executing the following query in SQL*Plus as any user:

    SQL> SELECT value FROM nls_database_parameters
       2 WHERE parameter='NLS_CHARACTERSET';
    
  • UID specifies the name of a cache user, such as the cache manager user, that has the same name as an Oracle user who can access the cached Oracle tables. The UID connection attribute can be specified in a Data Manager DSN, a Client DSN, or a connection string.

  • PWD specifies the password of the TimesTen user specified in the UID connection attribute. The PWD connection attribute can be specified in a Data Manager DSN, a Client DSN, or a connection string.

  • OraclePWD specifies the password of the Oracle user that has the same name as the TimesTen user specified in the UID connection attribute and can access the cached Oracle tables.

  • PassThrough can be set to control whether statements are to be executed in the TimesTen database or passed through to be executed in the Oracle database. See "Setting a passthrough level".

  • LockLevel must be set to its default of 0 (row-level locking) because Oracle In-Memory Database Cache does not support database-level locking.

  • TypeMode must be set to its default of 0 (Oracle type mode).

  • ReplicationApplyOrdering and CacheAwtParallelism control parallel propagation of changes to TimesTen cache tables in an AWT cache group to the corresponding Oracle tables. See "Configuring parallel propagation to Oracle tables".

Example 3-6 DSN for a TimesTen database that caches data from an Oracle database

The following example is the definition of the cachealone1 DSN that references the first standalone TimesTen database that will become a member of the ttGrid cache grid:

[cachealone1]
DataStore=/users/OracleCache/alone1
PermSize=64
OracleNetServiceName=orcl
DatabaseCharacterSet=WE8ISO8859P1

Create the TimesTen users

First you must create a user who performs cache grid and cache group operations. We refer to this user as the cache manager user. This user must have the same name as an Oracle user that can select from and update the cached Oracle tables. The Oracle user can be the cache administration user, a schema user, or some other existing user. The password of the cache manager user can be different than the password of the Oracle user with the same name.

The cache manager user is responsible for creating and configuring the cache grid and creating the cache groups. This user can also monitor the grid itself and various operations that are performed on the cache groups.

Then, you must create a user with the same name as an Oracle schema user for each schema user who owns or will own Oracle tables to be cached in the TimesTen database. We refer to these users as cache table users, because the TimesTen cache tables will be owned by these users. Therefore, the owner and name of a TimesTen cache table is the same as the owner and name of the corresponding cached Oracle table. The password of a cache table user can be different than the password of the Oracle schema user with the same name.

Operations on a cache group or a cache table, such as loading a cache group or updating a cache table, can be performed by any TimesTen user that has sufficient privileges. In the examples throughout this guide, the cache manager user performs these types of operations although these operations can be performed by another user, such as a cache table user, that has the required privileges. If these opera_$tions are to be performed by a TimesTen user other than the cache manager user, the other user must have the same name as an Oracle user that can select from and update the cached Oracle tables. Connect to the TimesTen database specifying that user's name in the UID connection attribute, and supply the corresponding TimesTen and Oracle passwords in the PWD and OraclePWD connection attributes, respectively, to perform operations on a cache group or cache table.

Example 3-7 Creating the TimesTen users

In the following ttIsql utility example, create the TimesTen database by connecting to the cachealone1 DSN as the instance administrator. Then create the cache manager user cacheuser whose name, in this example, is the same as the Oracle cache administration user. Then, create a cache table user oratt whose name is the same as the Oracle schema user who will own the Oracle tables to be cached in the TimesTen database.

% ttIsql cachealone1
Command> CREATE USER cacheuser IDENTIFIED BY timesten;
Command> CREATE USER oratt IDENTIFIED BY timesten;

Grant privileges to the TimesTen users

The privileges that the TimesTen users require depend on the types of cache groups you create and the operations that you perform on the cache groups. The privileges required for the TimesTen cache manager user and the Oracle cache administration user for each cache operation are listed in Table 3-1.

Example 3-8 Granting privileges to the cache manager user

The cacheuser cache manager user requires privileges to perform the following operations:

  • Set the cache administration user and password (CACHE_MANAGER)

  • Create and associate the TimesTen database with a cache grid (CACHE_MANAGER)

  • Start the cache agent and replication agent processes on the TimesTen database (CACHE_MANAGER)

  • Attach the TimesTen database to the cache grid (CACHE_MANAGER)

  • Create cache groups to be owned by the cache administration user (CREATE CACHE GROUP, inherited by the CACHE_MANAGER privilege; CREATE ANY TABLE to create the underlying cache tables which will be owned by the oratt cache table user)

As the instance administrator, use the ttIsql utility to grant the cache manager user cacheuser the required privileges:

Command> GRANT CREATE SESSION, CACHE_MANAGER, CREATE ANY TABLE TO cacheuser;
Command> exit

Set the cache administration user name and password

You must set the cache administration user name and password in the TimesTen database before any cache grid or cache group operation can be issued. The cache agent connects to the Oracle database as this user to create and maintain Oracle objects that store information used to manage a cache grid and enforce predefined behaviors of particular cache group types.

The cache administration user name and password need to be set only once in each TimesTen database that will cache Oracle data unless it needs to be changed. For example, if the TimesTen database is destroyed and re-created, or the cache administration user name is dropped and re-created in the Oracle database, the cache administration user name and password must be set again.

The cache administration user name and password cannot be changed if the cache agent is running on the TimesTen database or there are cache groups in the database. The cache groups must be dropped before you can change the cache administration user name and password. You must also stop the cache agent before you change the cache administration user name and password, and then restart the cache agent after the user name and password have been changed.

Example 3-9 Setting the cache administration user name and password

The cache administration user name and password can be set programmatically by calling the ttCacheUidPwdSet built-in procedure as the cache manager user:

% ttIsql "DSN=cachealone1;UID=cacheuser;PWD=timesten;OraclePWD=oracle"
Command> call ttCacheUidPwdSet('cacheuser','oracle');

It can also be set from a command line by running a ttAdmin -cacheUidPwdSet utility command as a TimesTen external user with the CACHE_MANAGER privilege:

% ttAdmin -cacheUidPwdSet -cacheUid cacheuser -cachePwd oracle cachealone1

If you do not specify the -cachePwd option, the ttAdmin utility prompts for the cache administration user's password.

For more information about the utility, see "ttAdmin" in Oracle TimesTen In-Memory Database Reference.

Configuring a cache grid

An Oracle table cannot be cached in separate cache groups within the same TimesTen database. However, the table can be cached in separate cache groups within different TimesTen databases.

A TimesTen cache grid provides users with Oracle databases a means to horizontally scale out cache groups across multiple systems with read and write data consistency across the TimesTen databases and predictable latency for database transactions. A cache grid contains one or more grid members that collectively manage application data using the relational data model. A grid member is either a standalone TimesTen database or an active standby pair that consists of at least two replicated TimesTen databases.

Each database of a grid member is called a grid node. A node is a single TimesTen database that is either a standalone database, or the active database or standby database of an active standby pair. Therefore, a grid member is composed of one or two nodes.


Note:

See "Administering an Active Standby Pair with Cache Groups" in Oracle TimesTen In-Memory Database Replication Guide for more information about replicating cache tables.

Grid members can reside on the same system or on different systems. If the grid members reside across different systems, the systems must be connected to each other in a TCP/IP private network. Each system must have the same machine architecture, operating system version, platform, and bit version. The TimesTen major release number of all grid members must be the same.

A TimesTen database that is or is part of a grid member can contain local and global cache groups as well as explicitly loaded and dynamic cache groups.


Note:

See "Dynamic cache groups" for more information about dynamic cache groups.

See "Global cache groups" for more information about global cache groups.


A cache grid can be associated with only one Oracle database. A TimesTen database can be a member of only one cache grid. An Oracle database can be associated with more than one cache grid and each grid can be administered by a different cache administration user. A cache grid has no association with other cache grids.

The following sections describe the operations that must be performed on the TimesTen database by the cache manager user:

Modify the PROCESSES Oracle system parameter for ten or more grid nodes

If you are planning a grid with ten or more nodes, modify the PROCESSES Oracle system parameter. Use this guideline:

PROCESSES >= 10*GridMembers + DLConnections + OraBackgroundProcesses

where:

  • GridMembers = number of grid members

  • DLConnections = number of dynamic load connections

  • OraBackgroundProcesses = number of Oracle background processes

The number of dynamic load connections is determined by how many sessions will have dynamic cache group operations.

For more information about modifying an Oracle system parameter, see "Changing Parameter Values in a Parameter File" in Oracle Database Reference. For more information about Oracle background processes, see "Background Processes" in Oracle Database Reference.

Create a cache grid

In the examples used throughout the rest of this guide, you will create a cache grid ttGrid that contains three grid members: two standalone TimesTen databases and an active standby pair consisting of three TimesTen databases. This chapter shows how to associate one of the standalone databases with the cache grid. Subsequent chapters show how to create the other standalone database and the active standby pair, and how to associate those members with the grid.

See Example 3-6 for the DSN definition of the first standalone TimesTen database.

You can create a cache grid from any of the standalone databases, or from either the active or standby database of the active standby pair. A cache grid is created only once from any one of the grid members.

Example 3-10 Creating a cache grid

Create the ttGrid cache grid from the first standalone database by calling the ttGridCreate built-in procedure as the cache manager user:

Command> call ttGridCreate('ttGrid');

All the databases in these examples, except for the read-only subscriber database of the active standby pair, will be associated with the ttGrid cache grid.

If you manually created the Oracle objects used to store information about TimesTen databases that are associated with a particular cache grid as described in "Manually create Oracle objects used to manage caching of Oracle data", you do not need to call ttGridCreate because the grid, in effect, was created by running the initCacheGridSchema.sql script.

By default, you must associate a TimesTen database with a cache grid before you can create cache groups in that database. For backward compatibility, you can set the CacheGridEnable connection attribute to 0 so that you do not have to create a cache grid and associate the TimesTen database with the grid before cache groups can be created within that database. However, regardless of the setting of CacheGridEnable, you must create a cache grid and associate the TimesTen database with the grid before you can create global cache groups within that database. See "Global cache groups" for more information about global cache groups.

CacheGridEnable is set to 1 by default.

Associate a TimesTen database with a cache grid

All standalone databases, and the active and standby databases of the active standby pair must be associated with a cache grid before you can create cache groups within those databases.

Example 3-11 Associating a TimesTen database with a cache grid

Associate the first standalone database to the ttGrid cache grid by calling the ttGridNameSet built-in procedure as the cache manager user:

Command> call ttGridNameSet('ttGrid');

Testing the connectivity between the TimesTen and Oracle databases

To test the connectivity between the TimesTen and Oracle databases, set the passthrough level to 3 and execute the following query, to be processed on the Oracle database, as the cache manager user:

Command> passthrough 3;
Command> SELECT * FROM V$VERSION;
Command> passthrough 0;

If connectivity has been successfully established, the query returns the version of the Oracle database. If it does not, check the following for correctness:

Example 3-12 Determining the cache administration user name setting

The cache administration user name setting can be returned programmatically by calling the ttCacheUidGet built-in procedure as the cache manager user:

Command> call ttCacheUidGet;

It can also be returned from a command line by running a ttAdmin -cacheUidGet utility command as a TimesTen external user with the CACHE_MANAGER privilege:

% ttAdmin -cacheUidGet cachealone1

Managing the cache agent

The cache agent is a TimesTen process that performs cache operations such as loading a cache group and autorefresh, as well as manages Oracle objects used to enforce the predefined behaviors of particular cache group types.

Example 3-13 Starting the cache agent

The cache agent can be manually started programmatically by calling the ttCacheStart built-in procedure as the cache manager user:

Command> call ttCacheStart;

It can also be started from a command line by running a ttAdmin -cacheStart utility command as a TimesTen external user with the CACHE_MANAGER privilege:

% ttAdmin -cacheStart cachealone1

Example 3-14 Stopping the cache agent

The cache agent can be manually stopped programmatically by calling the ttCacheStop built-in procedure as the cache manager user:

Command> call ttCacheStop;

It can also be stopped from a command line by running a ttAdmin -cacheStop utility command as a TimesTen external user with the CACHE_MANAGER privilege:

% ttAdmin -cacheStop cachealone1

The ttCacheStop built-in procedure has an optional parameter and the ttAdmin -cacheStop utility command has an option -stopTimeout that specifies how long the TimesTen main daemon process waits for the cache agent to stop. If the cache agent does not stop within the specified timeout period, the TimesTen daemon stops the cache agent. The default cache agent stop timeout is 100 seconds. A value of 0 specifies to wait indefinitely.

Do not stop the cache agent immediately after you have dropped or altered an autorefresh cache group. Instead, wait for at least two minutes to allow the cache agent to clean up Oracle objects such as change log tables and triggers that were created and used to manage the cache group.


Note:

The TimesTen X/Open XA and Java Transaction API (JTA) implementations do not work with Oracle In-Memory Database Cache. The start of any XA or JTA transaction fails if the cache agent is running.

Set a cache agent start policy

A cache agent start policy determines how and when the cache agent process starts on a TimesTen database. The cache agent start policy can be set to:

  • manual

  • always

  • norestart

The default start policy is manual, which means the cache agent must be started manually by calling the ttCacheStart built-in procedure or running a ttAdmin -cacheStart utility command. To manually stop a running cache agent process, call the ttCacheStop built-in procedure or run a ttAdmin -cacheStop utility command.

When the start policy is set to always, the cache agent starts automatically when the TimesTen main daemon process starts. With the always start policy, the cache agent cannot be stopped when the main daemon is running unless the start policy is first changed to either manual or norestart. Then issue a manual stop by calling the ttCacheStop built-in procedure or running a ttAdmin -cacheStop utility command.

With the manual and always start policies, the cache agent automatically restarts when the database recovers after a failure such as a database invalidation. If the database was attached to a cache grid when the failure occurred, it is automatically reattached to the grid when the database recovers.

Setting the cache agent start policy to norestart means the cache agent must be started manually by calling the ttCacheStart built-in procedure or running a ttAdmin -cacheStart utility command, and stopped manually by calling the ttCacheStop built-in procedure or running a ttAdmin -cacheStop utility command.

With the norestart start policy, the cache agent does not automatically restart when the database recovers after a failure such as a database invalidation. You must restart the cache agent manually by calling the ttCacheStart built-in procedure or running a ttAdmin -cacheStart utility command. If the database was attached to a cache grid when the failure occurred, it is not automatically reattached to the grid when the database recovers. You must call the ttGridAttach built-in procedure to reattach the database to the grid.


Note:

For more details, see "ttAdmin," "ttCachePolicySet," "ttCacheStart," "ttCachestop," and "ttGridAttach" in the Oracle TimesTen In-Memory Database Reference.

Example 3-15 Setting a cache agent start policy

The cache agent start policy can be set programmatically by calling the ttCachePolicySet built-in procedure as the cache manager user:

Command> call ttCachePolicySet('always');

It can also be set from a command line by running a ttAdmin -cachePolicy utility command as a TimesTen external user with the CACHE_MANAGER privilege:

% ttAdmin -cachePolicy norestart cachealone1
PK1__PKAAOEBPS/operations.htm Cache Group Operations

5 Cache Group Operations

This chapter describes operations that can be performed on cache groups. It includes the following topics:

You can use SQL statements or SQL Developer to perform most of the operations in this chapter. For more information about SQL Developer, see Oracle SQL Developer Oracle TimesTen In-Memory Database Support User's Guide.

Transmitting updates between the TimesTen and Oracle databases

You can use the following SQL statements to manually transmit committed updates between the TimesTen cache tables and the cached Oracle tables:

SQL statementDescription
LOAD CACHE GROUPLoad cache instances that are not in the TimesTen cache tables from the cached Oracle tables
REFRESH CACHE GROUPReplace cache instances in the TimesTen cache tables with current data from the cached Oracle tables
FLUSH CACHE GROUPPropagate committed updates on the TimesTen cache tables to the cached Oracle tables. Only applicable for user managed cache groups.

For AWT, SWT, and user managed cache groups that use the PROPAGATE cache table attribute, committed updates on the TimesTen cache tables are automatically propagated to the cached Oracle tables.

See "Asynchronous writethrough (AWT) cache group" for more information about AWT cache groups.

See "Synchronous writethrough (SWT) cache group" for more information about SWT cache groups.

See "PROPAGATE cache table attribute" for more information about using the PROPAGATE cache table attribute on cache tables in a user managed cache group.

The AUTOREFRESH cache group attribute can be used in a read-only or a user managed cache group to automatically refresh committed updates on cached Oracle tables into the TimesTen cache tables. Automatic refresh can be defined on explicitly loaded or dynamic cache groups.

See "AUTOREFRESH cache group attribute" for more information about automatically refreshing a cache group.

Data is manually preloaded into the cache tables of explicitly loaded cache groups. For dynamic cache groups, data is loaded on demand into the cache tables. A cache instance is automatically loaded from the cached Oracle tables when a particular statement does not find the data in the cache tables.

See "Dynamically loading a cache instance" for more information about a dynamic load operation.

Dynamic cache groups are typically configured to automatically age out from the cache tables data that is no longer being used.

Loading and refreshing a cache group

You can manually insert or update cache instances in the TimesTen cache tables from the cached Oracle tables using either a LOAD CACHE GROUP or REFRESH CACHE GROUP statement. The differences between loading and refreshing a cache group are:

For most cache group types, you can use a WHERE clause in a LOAD CACHE GROUP or REFRESH CACHE GROUP statement to restrict the rows to be loaded or refreshed into the cache tables.

If the cache table definitions use a WHERE clause, only rows that satisfy the WHERE clause are loaded or refreshed into the cache tables even if the LOAD CACHE GROUP or REFRESH CACHE GROUP statement does not use a WHERE clause.

A REFRESH CACHE GROUP statement can be issued on a global cache group only if it contains a WITH ID clause.

If the cache group has a time-based aging policy defined, only cache instances where the timestamp in the root table's row is within the aging policy's lifetime are loaded or refreshed into the cache tables.

To prevent a load or refresh operation from processing a large number of cache instances within a single transaction, which can greatly reduce concurrency and throughput, use the COMMIT EVERY n ROWS clause to specify a commit frequency unless you are using the WITH ID clause. If you specify COMMIT EVERY 0 ROWS, the load or refresh operation is processed in a single transaction.

A LOAD CACHE GROUP or REFRESH CACHE GROUP statement that uses the COMMIT EVERY n ROWS clause must be performed in its own transaction without any other operations within the same transaction.

Example 5-1 Loading a cache group

The following statement loads new cache instances into the TimesTen cache tables in the customer_orders cache group from the cached Oracle tables:

LOAD CACHE GROUP customer_orders COMMIT EVERY 256 ROWS;

Example 5-2 Loading a cache group using a WHERE clause

The following statement loads into the TimesTen cache tables in the new_customers cache group from the cached Oracle tables, new cache instances for customers whose customer number is greater than or equal to 5000:

LOAD CACHE GROUP new_customers WHERE (oratt.customer.cust_num >= 5000)
  COMMIT EVERY 256 ROWS;

Example 5-3 Refreshing a cache group

The following statement refreshes cache instances in the TimesTen cache tables within the top_products cache group from the cached Oracle tables:

REFRESH CACHE GROUP top_products COMMIT EVERY 256 ROWS;

Example 5-4 Refreshing a cache group using a WHERE clause

The following statement refreshes in the TimesTen cache tables within the update_anywhere_customers cache group from the cached Oracle tables, cache instances of customers located in zip code 60610:

REFRESH CACHE GROUP update_anywhere_customers
  WHERE (oratt.customer.zip = '60610') COMMIT EVERY 256 ROWS;

For more information, see the LOAD CACHE GROUP and REFRESH CACHE GROUP statements in Oracle TimesTen In-Memory Database SQL Reference.

The rest of this section includes these topics:

Loading and refreshing an explicitly loaded cache group with autorefresh

If the autorefresh state of an explicitly loaded cache group is PAUSED, the autorefresh state is changed to ON after a LOAD CACHE GROUP or REFRESH CACHE GROUP statement issued on the cache group completes.

The following restrictions apply when manually loading or refreshing an explicitly loaded cache group with autorefresh:

  • A LOAD CACHE GROUP statement can only be issued if the cache tables are empty.

  • The autorefresh state must be PAUSED before you can issue a LOAD CACHE GROUP statement.

  • The autorefresh state must be PAUSED before you can issue a REFRESH CACHE GROUP statement.

  • A LOAD CACHE GROUP statement cannot contain a WHERE clause.

  • A LOAD CACHE GROUP or REFRESH CACHE GROUP statement cannot contain a WITH ID clause.

  • A REFRESH CACHE GROUP statement cannot contain a WHERE clause.

  • All tables and columns referenced in a WHERE clause when loading the cache group must be fully qualified. For example:

    user_name.table_name and user_name.table_name.column_name

When an autorefresh operation occurs on an explicitly loaded cache group, all committed inserts, updates and deletes on the cached Oracle tables since the last autorefresh cycle are refreshed into the cache tables. New cache instances may be loaded into the cache tables. Cache instances that already exist in the cache tables are updated or deleted if the corresponding rows in the cached Oracle tables have been updated or deleted.

Loading and refreshing a dynamic cache group with autorefresh

If the autorefresh state of a dynamic cache group is PAUSED, the autorefresh state is changed to ON after any of the following events occur:

  • Its cache tables are initially empty, and then a dynamic load, a LOAD CACHE GROUP or an unconditional REFRESH CACHE GROUP statement issued on the cache group completes

  • Its cache tables are not empty, and then an unconditional REFRESH CACHE GROUP statement issued on the cache group completes

If the autorefresh state of a dynamic cache group is PAUSED, the autorefresh state remains at PAUSED after any of the following events occur:

  • Its cache tables are initially empty, and then a REFRESH CACHE GROUP ... WITH ID statement issued on the cache group completes

  • Its cache tables are not empty, and then a dynamic load, a REFRESH CACHE GROUP ... WITH ID, or a LOAD CACHE GROUP statement issued on the cache group completes

For a dynamic cache group, an autorefresh operation only refreshes committed updates and deletes on the cached Oracle tables since the last autorefresh cycle into the cache tables because only existing cache instances in the cache tables are refreshed. New cache instances are not loaded into the cache tables. To load new cache instances into the cache tables of a dynamic cache group, use a LOAD CACHE GROUP statement or perform a dynamic load operation. See "Dynamically loading a cache instance" for more information about a dynamic load operation.

The following restrictions apply when manually loading or refreshing a dynamic cache group with automatic refresh:

  • The autorefresh state must be PAUSED or ON before you can issue a LOAD CACHE GROUP statement.

  • The autorefresh state must be PAUSED before you can issue a REFRESH CACHE GROUP statement.

  • A LOAD CACHE GROUP statement that contains a WHERE clause must include a COMMIT EVERY n ROWS clause after the WHERE clause

  • A REFRESH CACHE GROUP statement cannot contain a WHERE clause.

  • All tables and columns referenced in a WHERE clause when loading the cache group must be fully qualified. For example:

    user_name.table_name and user_name.table_name.column_name

Loading and refreshing a cache group using a WITH ID clause

The WITH ID clause of the LOAD CACHE GROUP or REFRESH CACHE GROUP statement enables you to load or refresh a cache group based on values of the primary key columns without having to use a WHERE clause. The WITH ID clause is more convenient than the equivalent WHERE clause if the primary key contains more than one column. Using the WITH ID clause allows you to load one cache instance at a time. It also enables you to roll back the transaction containing the load or refresh operation, if necessary, unlike the equivalent statement that uses a WHERE clause because using a WHERE clause also requires specifying a COMMIT EVERY n ROWS clause.

Example 5-5 Loading a cache group using a WITH ID clause

A cache group recent_orders contains a single cache table oratt.orderdetails with a primary key of (orderid, itemid). If a customer calls about an item within a particular order, the information can be obtained by loading the cache instance for the specified order number and item number.

Load the oratt.orderdetails cache table in the recent_orders cache group with the row whose value in the orderid column of the oratt.orderdetails cached Oracle table is 1756 and its value in the itemid column is 573:

LOAD CACHE GROUP recent_orders WITH ID (1756,573);

The following is an equivalent LOAD CACHE GROUP statement that uses a WHERE clause:

LOAD CACHE GROUP recent_orders WHERE orderid = 1756 and itemid = 573
  COMMIT EVERY 256 ROWS;

A LOAD CACHE GROUP or REFRESH CACHE GROUP statement issued on an autorefresh cache group cannot contain a WITH ID clause unless the cache group is dynamic.

You cannot use the COMMIT EVERY n ROWS clause with the WITH ID clause.

Initiating an immediate autorefresh

If the Oracle tables have been updated with data that needs to be applied to cache tables without waiting for the next autorefresh operation, you can call the ttCacheAutorefresh built-in procedure. The ttCacheAutorefresh built-in procedure initiates an immediate refresh operation and resets the autorefresh cycle to start at the moment you invoke ttCacheAutorefresh. The refresh operation is full or incremental depending on how the cache group is configured. The autorefresh state must be ON when ttCacheAutorefresh is called.

The autorefresh operation normally refreshes all cache groups sharing the same refresh interval in one transaction in order to preserve transactional consistency across these cache groups. Therefore, although you specify a specific cache group when you call ttCacheAutorefresh, the autorefresh operation occurs in one transaction for all cache groups that share the autorefresh interval with the specified cache group. If there is an existing transaction with table locks on objects that belong to the affected cache groups, ttCacheAutofresh returns an error without taking any action.

You can choose to run ttCacheAutorefresh asynchronously (the default) or synchronously. In synchronous mode, ttCacheAutorefresh returns an error if the refresh operation fails.

After calling ttCacheAutorefresh, you must commit or roll back the transaction before subsequent work can be performed.

Example 5-6 Calling ttCacheAutorefresh

This example calls ttCacheAutorefresh for the ttuser.western_customers cache group, using asynchronous mode.

Command> call ttCacheAutorefresh('ttuser', 'western_customers');

Loading and refreshing a multiple-table cache group

If you are loading or refreshing a multiple-table cache group while the cached Oracle tables are concurrently being updated, set the isolation level in the TimesTen database to serializable before issuing the LOAD CACHE GROUP or REFRESH CACHE GROUP statement. This causes TimesTen to query the cached Oracle tables in a serializable fashion during the load or refresh operation so that the loaded or refreshed cache instances in the cache tables are guaranteed to be transactionally consistent with the corresponding rows in the cached Oracle tables. After you have loaded or refreshed the cache group, set the isolation level back to read committed for better concurrency when accessing elements in the TimesTen database.

Improving the performance of loading or refreshing a large number of cache instances

You can improve the performance of loading or refreshing a large number of cache instances into a cache group by using the PARALLEL clause of the LOAD CACHE GROUP or REFRESH CACHE GROUP statement. Specify the number of threads to use when processing the load or refresh operation. You can specify 1 to 10 threads. One thread fetches rows from the cached Oracle tables, while the other threads insert the rows into the TimesTen cache tables. Do not specify more threads than the number of CPUs available on your system or you may encounter decreased performance than if you had not used the PARALLEL clause.


Note:

You cannot use the WITH ID clause or the COMMIT EVERY 0 ROWS clause with the PARALLEL clause. In addition, you cannot use the PARALLEL clause for read-only dynamic cache groups or when database level locking is enabled. For more details, see "REFRESH CACHE GROUP" in the Oracle TimesTen In-Memory Database SQL Reference.

Example 5-7 Refreshing a cache group using a PARALLEL clause

The following statement refreshes cache instances in the TimesTen cache tables within the western_customers cache group from the cached Oracle tables using one thread to fetch rows from the cached Oracle tables and three threads to insert the rows into the cache tables:

REFRESH CACHE GROUP western_customers COMMIT EVERY 256 ROWS PARALLEL 4;

Example of manually loading and refreshing an explicitly loaded cache group

The following is the definition of the Oracle table that will be cached in an explicitly loaded AWT cache group. The Oracle table is owned by the schema user oratt.

CREATE TABLE customer
(cust_num NUMBER(6) NOT NULL PRIMARY KEY,
 region   VARCHAR2(10),
 name     VARCHAR2(50),
 address  VARCHAR2(100));

The following is the data in the oratt.customer cached Oracle table.

CUST_NUM   REGION    NAME              ADDRESS
--------   -------   ---------------   ---------------------------    
       1   West      Frank Edwards     100 Pine St. Portland OR
       2   East      Angela Wilkins    356 Olive St. Boston MA
       3   Midwest   Stephen Johnson   7638 Walker Dr. Chicago IL

The following statement creates an explicitly loaded AWT cache group new_customers that caches the oratt.customer table:

CREATE ASYNCHRONOUS WRITETHROUGH CACHE GROUP new_customers
FROM oratt.customer
 (cust_num NUMBER(6) NOT NULL,
  region   VARCHAR2(10),
  name     VARCHAR2(50),
  address  VARCHAR2(100),
  PRIMARY KEY(cust_num));

The oratt.customer TimesTen cache table is initially empty.

Command> SELECT * FROM oratt.customer;
0 rows found.

The following LOAD CACHE GROUP statement loads the three cache instances from the cached Oracle table into the TimesTen cache table:

Command> LOAD CACHE GROUP new_customers COMMIT EVERY 256 ROWS;
3 cache instances affected.
Command> SELECT * FROM oratt.customer;
< 1, West, Frank Edwards, 100 Pine St. Portland OR >
< 2, East, Angela Wilkins, 356 Olive St. Boston MA >
< 3, Midwest, Stephen Johnson, 7638 Walker Dr. Chicago IL >

Update the cached Oracle table by inserting a new row, updating an existing row, and deleting an existing row:

SQL> INSERT INTO customer
  2  VALUES (4, 'East', 'Roberta Simon', '3667 Park Ave. New York NY');
SQL> UPDATE customer SET name = 'Angela Peterson' WHERE cust_num = 2;
SQL> DELETE FROM customer WHERE cust_num = 3;
SQL> COMMIT;
SQL> SELECT * FROM customer;
CUST_NUM   REGION    NAME              ADDRESS
--------   -------   ---------------   ---------------------------    
       1   West      Frank Edwards     100 Pine St. Portland OR
       2   East      Angela Peterson   356 Olive St. Boston MA
       4   East      Roberta Simon     3667 Park Ave. New York NY

A REFRESH CACHE GROUP statement issued on an explicitly loaded cache group is processed by unloading and then reloading the cache group. As a result, the cache instances in the cache table matches the rows in the cached Oracle table.

Command> REFRESH CACHE GROUP new_customers COMMIT EVERY 256 ROWS;
3 cache instance affected.
Command> SELECT * FROM oratt.customer;
< 1, West, Frank Edwards, 100 Pine St. Portland OR >
< 2, East, Angela Peterson, 356 Olive St. Boston MA >
< 4, East, Roberta Simon, 3667 Park Ave. New York NY >

Example of manually loading and refreshing a dynamic cache group

The following is the definition of the Oracle table that will be cached in a dynamic AWT cache group. The Oracle table is owned by the schema user oratt.

CREATE TABLE customer
(cust_num NUMBER(6) NOT NULL PRIMARY KEY,
 region   VARCHAR2(10),
 name     VARCHAR2(50),
 address  VARCHAR2(100));

The following is the data in the oratt.customer cached Oracle table.

CUST_NUM   REGION    NAME              ADDRESS
--------   -------   ---------------   ---------------------------    
       1   West      Frank Edwards     100 Pine St. Portland OR
       2   East      Angela Wilkins    356 Olive St. Boston MA
       3   Midwest   Stephen Johnson   7638 Walker Dr. Chicago IL

The following statement creates a dynamic AWT cache group new_customers that caches the oratt.customer table:

CREATE DYNAMIC ASYNCHRONOUS WRITETHROUGH CACHE GROUP new_customers
FROM oratt.customer
 (cust_num NUMBER(6) NOT NULL,
  region   VARCHAR2(10),
  name     VARCHAR2(50),
  address  VARCHAR2(100),
  PRIMARY KEY(cust_num));

The oratt.customer TimesTen cache table is initially empty:

Command> SELECT * FROM oratt.customer;
0 rows found.

The following LOAD CACHE GROUP statement loads the three cache instances from the cached Oracle table into the TimesTen cache table:

Command> LOAD CACHE GROUP new_customers COMMIT EVERY 256 ROWS;
3 cache instances affected.
Command> SELECT * FROM oratt.customer;
< 1, West, Frank Edwards, 100 Pine St. Portland OR >
< 2, East, Angela Wilkins, 356 Olive St. Boston MA >
< 3, Midwest, Stephen Johnson, 7638 Walker Dr. Chicago IL >

Update the cached Oracle table by inserting a new row, updating an existing row, and deleting an existing row:

SQL> INSERT INTO customer
  2  VALUES (4, 'East', 'Roberta Simon', '3667 Park Ave. New York NY');
SQL> UPDATE customer SET name = 'Angela Peterson' WHERE cust_num = 2;
SQL> DELETE FROM customer WHERE cust_num = 3;
SQL> COMMIT;
SQL> SELECT * FROM customer;
CUST_NUM   REGION    NAME              ADDRESS
--------   -------   ---------------   ---------------------------    
       1   West      Frank Edwards     100 Pine St. Portland OR
       2   East      Angela Peterson   356 Olive St. Boston MA
       4   East      Roberta Simon     3667 Park Ave. New York NY

A REFRESH CACHE GROUP statement issued on a dynamic cache group only refreshes committed updates and deletes on the cached Oracle tables into the cache tables. New cache instances are not loaded into the cache tables. Therefore, only existing cache instances are refreshed. As a result, the number of cache instances in the cache tables are either fewer than or the same as the number of rows in the cached Oracle tables.

Command> REFRESH CACHE GROUP new_customers COMMIT EVERY 256 ROWS;
2 cache instances affected.
Command> SELECT * FROM oratt.customer;
< 1, West, Frank Edwards, 100 Pine St. Portland OR >
< 2, East, Angela Peterson, 356 Olive St. Boston MA >

A subsequent LOAD CACHE GROUP statement loads one cache instance from the cached Oracle table into the TimesTen cache table because only committed inserts are loaded into the cache table. Therefore, only new cache instances are loaded. Cache instances that already exist in the cache tables are not changed as a result of a LOAD CACHE GROUP statement, even if the corresponding rows in the cached Oracle tables were updated or deleted.

Command> LOAD CACHE GROUP new_customers COMMIT EVERY 256 ROWS;
1 cache instance affected.
Command> SELECT * FROM oratt.customer;
< 1, West, Frank Edwards, 100 Pine St. Portland OR >
< 2, East, Angela Peterson, 356 Olive St. Boston MA >
< 4, East, Roberta Simon, 3667 Park Ave. New York NY >

Dynamically loading a cache instance

In a dynamic cache group, data is automatically loaded into the TimesTen cache tables from the cached Oracle tables when a qualifying SELECT, INSERT, UPDATE, or DELETE statement is issued on one of the cache tables and the data does not exist in the cache table but does exist in the cached Oracle table.

However, if the Oracle database is down, the following error is returned:

5219: Temporary Oracle connection failure error in OCISessionBegin():
 ORA-01034: ORACLE not available

Note:

Dynamic load can only be performed for dynamic cache groups if the DynamicLoadEnable connection attribute is enabled. See "Dynamic load configuration" for more details.

A dynamic load retrieves a single cache instance, which is either automatically loaded from Oracle to the TimesTen database or, for dynamic global cache groups, transferred from the grid member that owns the instance to the requesting grid member. A cache instance consists of row from the root table of any cache group (that is uniquely identified by a primary key) and all related rows in the child tables associated by foreign key relationships.

If a row in the cached Oracle table satisfies the WHERE clause, which must specify either the primary key of any table or the foreign key of a child table, the entire associated cache instance is loaded in order to maintain the defined relationships between primary keys and foreign keys of the parent and child tables. A dynamic load operation cannot load more than one row into the root table of any cache group. Only cache instances whose rows satisfy the WHERE clause of the cache table definitions are loaded.

The dynamic load is executed in a different transaction than the user transaction that triggers the dynamic load. The dynamic load transaction is committed before the SQL statement that triggers the dynamic load has finished execution. Thus, if the user transaction is rolled back, the dynamically loaded data remains in the cache group.

With global cache groups, the TimesTen database must be attached to a cache grid before dynamic load is allowed with these cache groups. See "Global cache groups" for more information about global cache groups and attaching a TimesTen database to a cache grid.

The following sections describes dynamic load for cache groups:

Dynamic load configuration

Dynamic load can be configured as follows:

  • 0 - Disables dynamic load of Oracle data to TimesTen dynamic cache groups for the current connection.

  • 1 (default) - Enables dynamic load of Oracle data to a single TimesTen dynamic cache group per statement for the current connection. The statement must reference tables of only one dynamic cache group, which must be referenced in the main query. The statement can also reference non-cache tables. Only one cache instance can be loaded.

  • 2 - Enables dynamic load of Oracle data to one or multiple TimesTen dynamic cache groups per statement for the current connection. All cache groups referenced in the main query will be dynamically loaded; any cache groups referenced solely in a subquery will be ignored for dynamic load. The statement can also reference non-cache tables. Only one cache instance can be loaded.

For any dynamic cache group to be considered for a dynamic load, there must be an equality condition with constants and/or parameters on all columns of a primary key or a foreign key of any table of the cache group. If more than one table of a cache group is referenced, each must be connected by an equality condition on the primary and foreign key relationship. For DynamicLoadEnable=1, all tables referenced in the relationship must exist only within a single cache group; for DynamicLoadEnable=2, the referenced tables can exist within multiple cache groups.

Set the appropriate value in the DynamicLoadEnable connection attribute to configure the type of dynamic loading for all cache tables in dynamic cache groups that are accessed within a particular connection.

To enable or disable dynamic loading for a particular transaction, you can set the DynamicLoadEnable optimizer hint. However, the DynamicLoadEnable connection attribute is the only method for configuring what type of dynamic load is enabled.

Set the DynamicLoadEnable optimizer hint with one of the following methods:

  • Use the ttIsql utility set dynamicloadenable command.

  • Call the ttOptSetFlag built-in procedure with the DynamicLoadEnable flag set to the desired value. The following example sets dynamic loading to 1.

    call ttOptSetFlag('DynamicLoadEnable', 1)
    

Note:

For more details, see "DynamicLoadEnable", "ttIsql" or "ttOptSetFlag" in the Oracle TimesTen In-Memory Database Reference.

You can also set connection attributes with the SQLSetConnectOption ODBC function. See the Oracle TimesTen In-Memory Database C Developer's Guide for more details.


Dynamic load guidelines

Dynamic load retrieves at most one cache instance for each cache group referenced in the main query. This section details the guidelines under which dynamic load occurs.


Note:

Examples for these guidelines are provided in "Examples of dynamically loading a cache instance".

Dynamic load is available only for the following types of statements issued on a cache table in a dynamic cache group:

  • When an INSERT statement inserts values into any of the child tables of a cache instance that does not currently exist in the TimesTen tables, the cache instance that the new row belongs to will be dynamic loaded. The insert operation for the new child row is propagated to the cached Oracle table.

  • SELECT, UPDATE, or DELETE requires an equality condition with constants and/or parameters on all columns of a primary key or a foreign key of any table of the cache group. If more than one table of a cache group is referenced, each must be connected by an equality condition on the primary and foreign key relationship.


Note:

Dynamic loading based on a primary key search of the root table performs faster than primary key searches on a child table or foreign key searches on a child table.

The SELECT, UPDATE, or DELETE statements for which dynamic load is available must satisfy the following conditions:

  • If the statement contains a subquery, only the cache group with tables referenced in the main query are considered for a dynamic load.

  • If the statement references multiple tables of the cache group, the statement must include an equality join condition between the primary keys and foreign keys for all parent and child relationships.

  • The statement cannot contain the UNION, INTERSECT, or MINUS set operators.

  • The statement can reference non-cache tables.

  • By default, the statement can reference cache tables from only one dynamic cache group. This behavior is enabled when DynamicLoadEnable is set to 1. However, if DynamicLoadEnable is set to 2, the statement can reference cache tables from multiple dynamic cache groups. See "Dynamic load configuration" for more information.

Dynamic load behavior depends on the setting of DynamicLoadEnable. The following describes the rules that are evaluated to determine if a dynamic load occurs. These rules are followed when DynamicLoadEnable is set to either 1 or 2.

  • Dynamic load will not occur for a cache group if any table of the cache group is specified more than once in any FROM clause.

  • Only the conditions explicitly specified in the query are considered for dynamic load, which excludes any derived conditions.

  • If any cache group is referenced only in a subquery, it will not be considered for a dynamic load.

  • If the cache group has a time-based aging policy defined, the timestamp in the root table's row must be within the aging policy's lifetime in order for the cache instance to be loaded. See "Implementing aging in a cache group" for information about defining an aging policy on a cache group.

  • When using an active standby pair replication scheme, dynamic load cannot occur in any subscriber.

When dynamic load is enabled with setting DynamicLoadEnable to 2, you can include multiple dynamic cache groups in the statement. The rules for this situation that determines if a dynamic load occurs are as follows:

  • If multiple cache groups exist within in a query, dynamic load is considered for the cache groups that meet the required conditions for a dynamic load. Dynamic load is not considered for any cache groups that do not meet dynamic load conditions.

  • If tables of any dynamic cache group are referenced in the main query, they are considered for dynamic load, even if other tables in any cache group are referenced in the subquery.

The following considerations can affect dynamic load:

  • If tables within multiple cache groups or non-cache group tables are specified in the main query, the join order influences if the cache instance is loaded. If during the execution of the query, a dynamic load is possible and necessary to produce the query results, the dynamic load occurs. However, if no rows will be returned, then some or all of the cache instances will not be dynamically loaded.

  • If a statement specifies more than the dynamic load condition on tables of a cache group, the cache instance may be dynamically loaded even though the additional conditions are not qualified for the statement.

Examples of dynamically loading a cache instance

The following is the definition of the Oracle tables that will be cached in a dynamic AWT cache group. The Oracle table is owned by the schema user oratt.

CREATE TABLE customer
(cust_num NUMBER(6) NOT NULL PRIMARY KEY,
 region   VARCHAR2(10),
 name     VARCHAR2(50),
 address  VARCHAR2(100))

CREATE TABLE orders
(ord_num      NUMBER(10) NOT NULL PRIMARY KEY,
 cust_num     NUMBER(6) NOT NULL,
 when_placed  DATE NOT NULL,
 when_shipped DATE NOT NULL)

CREATE TABLE orderdetails
 (orderid  NUMBER(10) NOT NULL,
  itemid   NUMBER(8) NOT NULL,
  quantity NUMBER(4) NOT NULL,
  PRIMARY KEY (orderid, itemid))

For example, the following data is in the oratt.customer cached Oracle table.

CUST_NUM   REGION    NAME              ADDRESS
--------   -------   ---------------   ---------------------------    
       1   West      Frank Edwards     100 Pine St., Portland OR
       2   East      Angela Wilkins    356 Olive St., Boston MA
       3   Midwest   Stephen Johnson   7638 Walker Dr., Chicago IL

The following statement creates a dynamic AWT cache group new_customers that caches the oratt.customer, oratt.orders, and oratt.orderdetails tables:

CREATE DYNAMIC ASYNCHRONOUS WRITETHROUGH CACHE GROUP new_customers
FROM oratt.customer
 (cust_num NUMBER(6) NOT NULL,
  region   VARCHAR2(10),
  name     VARCHAR2(50),
  address  VARCHAR2(100),
  PRIMARY KEY(cust_num)),
oratt.orders
 (ord_num      NUMBER(10) NOT NULL,
  cust_num     NUMBER(6) NOT NULL,
  when_placed  DATE NOT NULL,
  when_shipped DATE NOT NULL,
  PRIMARY KEY(ord_num),
  FOREIGN KEY(cust_num) REFERENCES oratt.customer(cust_num)),
oratt.orderdetails
 (orderid  NUMBER(10) NOT NULL,
  itemid   NUMBER(8) NOT NULL,
  quantity NUMBER(4) NOT NULL,
  PRIMARY KEY(orderid, itemid),
  FOREIGN KEY(orderid) REFERENCES oratt.orders(order_num))

The following examples can be used when DynamicLoadEnable is set to 1:

The oratt.customer TimesTen cache table is initially empty:

Command> SELECT * FROM oratt.customer;
0 rows found.

The following SELECT statement with an equality condition on the primary key for the oratt.customer table results in a dynamic load:

Command> SELECT * FROM oratt.customer WHERE cust_num = 1;
< 1, West, Frank Edwards, 100 Pine St., Portland OR >

However, if you do not use an equality condition on the primary key, no dynamic load occurs:

Command> SELECT * FROM oratt.customer WHERE cust_num IN (1,2);

The following example contains equality expressions on all of the primary key columns for a primary key composite. The orderdetails table has a composite primary key of orderid and itemid.

UPDATE oratt.orderdetails SET quantity = 5 WHERE orderid=2280 AND itemid=663

The following example shows an INSERT into the orders child table, which initiates a dynamic load. However, if you tried to insert into the customer table, which is the parent, no dynamic load occurs.

INSERT INTO orders VALUES(1,1, DATE '2012-01-25', DATE '2012-01-30')

The following UPDATE statement dynamically loads one cache instance from the cached Oracle table into the TimesTen cache table, updates the instance in the cache table, and then automatically propagates the update to the cached Oracle table:

Command> UPDATE oratt.customer SET name = 'Angela Peterson' WHERE cust_num = 2;
Command> SELECT * FROM oratt.customer;
< 1, West, Frank Edwards, 100 Pine St., Portland OR >
< 2, East, Angela Peterson, 356 Olive St., Boston MA >

The following is the updated data in the oratt.customer cached Oracle table:

CUST_NUM   REGION    NAME              ADDRESS
--------   -------   ---------------   ---------------------------    
       1   West      Frank Edwards     100 Pine St., Portland OR
       2   East      Angela Peterson   356 Olive St., Boston MA
       3   Midwest   Stephen Johnson   7638 Walker Dr., Chicago IL

The following DELETE statement dynamically loads one cache instance from the cached Oracle table into the TimesTen cache table, deletes the instance from the cache table, and then automatically propagates the delete to the cached Oracle table:

Command> DELETE FROM oratt.customer WHERE cust_num = 3;
Command> SELECT * FROM oratt.customer;
< 1, West, Frank Edwards, 100 Pine St., Portland OR >
< 2, East, Angela Peterson, 356 Olive St., Boston MA >

The following is the updated data in the oratt.customer cached Oracle table.

CUST_NUM   REGION    NAME              ADDRESS
--------   -------   ---------------   ---------------------------    
       1   West      Frank Edwards     100 Pine St., Portland OR
       2   East      Angela Peterson   356 Olive St., Boston MA

The following examples demonstrate how to use dynamic load when referencing tables across multiple cache groups, which is enabled when DynamicLoadEnable is set to 2.

The following statements create multiple dynamic AWT cache groups, each with one or more tables that are cached from the Oracle database.

CREATE DYNAMIC CACHE GROUP cachegrp 
 FROM table1(x1 INT PRIMARY KEY, y1 INT);

CREATE DYNAMIC CACHE GROUP cachegrp2 
 FROM table2(x2 INT PRIMARY KEY, y2 INT), 
 table3(x3 INT PRIMARY KEY, y3 INT, 
 FOREIGN KEY(y3) REFERENCES table2(x2) ;

CREATE DYNAMIC CACHE GROUP cachegrp3 
FROM table4(x4 INT PRIMARY KEY, y4 INT);

CREATE TABLE table5
 (x5 INT PRIMAY KEY,y5 INT);

The following example shows that no dynamic load will occur, even though the optimizer may derive that x1 should be equated to 1:

SELECT * FROM table1, table5 WHERE x5=1 AND x5=x1;

Dynamic load will be considered for the cache instance from table2 within cachegrp2 since table2 is referenced in the main query.

SELECT * FROM table5, table2 
 WHERE x5 IN (SELECT y2 FROM table2, table3 where x2=1 and x2=y3);

The cache instance in the cachegrp2 cache group is not considered for a dynamic load because all of its tables are referenced in the subquery.

SELECT * FROM table5 
 WHERE x5 IN 
 (SELECT y3 FROM table2, table3 WHERE x2=1 AND x2=y3);

In the following example, if the row that would be retrieved from table1 where x1=1 is not already in the cache, whether the cache instance from table1 is loaded depends on the join order. If the join order is 'table5 table1,' the cache instance from table1 will be loaded if and only if there is a row in table5 for which x5=1. If the join order is 'table1 table5', then the cache instance from table1 will always be loaded.

SELECT * FROM table1, table5 WHERE x1=1 AND x5=1;  

A row (1,1) may be loaded for table1, but the SELECT will not return any rows.

SELECT * FROM table1 WHERE x1=1 AND y1>1;

Return dynamic load errors

You can configure TimesTen to return an error if a SELECT, UPDATE or DELETE statement does not meet the requirements stated in "Dynamic load guidelines". The DynamicLoadErrorMode connection attribute controls what happens when an application executes a SQL operation against a dynamic cache group and the SQL operation cannot use dynamic load in a particular connection.

  • When DynamicLoadErrorMode is set to a value of 0, dynamic load will happen to any cache group referenced in the query that is qualified for dynamic load. Cache groups that do not qualify will not be dynamically loaded and no errors will be returned. When DynamicLoadEnable=1, no dynamic load will occur if the query references more than one cache group.

  • When DynamicLoadErrorMode is set to a value of 1, a query will fail with an error if any dynamic cache group referenced in the query is not qualified for dynamic load. The error indicates the reason why the dynamic load cannot occur.

To set the connection attribute solely for a particular transaction, use one of the following:

  • Use the ttIsql utility set dynamicloaderrormode 1 command.

  • Call the ttOptSetFlag built-in procedure with the DynamicLoadErrorMode flag and the optimizer value set to 1.

    call ttOptSetFlag('DynamicLoadErrorMode', 1)
    

    Call the ttOptSetFlag built-in procedure with the DynamicLoadErrorMode flag and the optimizer value set to 0 to suppress error reporting when a statement does not comply with dynamic load requirements.

Flushing a user managed cache group

The FLUSH CACHE GROUP statement manually propagates committed inserts and updates on TimesTen cache tables in a user managed cache group to the cached Oracle tables. Deletes are not flushed or manually propagated. Committed inserts and updates on cache tables that use the PROPAGATE cache table attribute cannot be flushed to the cached Oracle tables because these operations are already automatically propagated to Oracle.

With automatic propagation, committed inserts, updates and deletes are propagated to Oracle in the order they were committed in TimesTen. A flush operation can manually propagate multiple committed transactions on cache tables to the cached Oracle tables.

You cannot flush a user managed cache group that uses the AUTOREFRESH cache group attribute.

You can flush a user managed cache group if at least one of its cache tables uses neither the PROPAGATE nor the READONLY cache table attribute.

You can use a WHERE clause or WITH ID clause in a FLUSH CACHE GROUP statement to restrict the rows to be flushed to the cached Oracle tables. See the FLUSH CACHE GROUP statement in Oracle TimesTen In-Memory Database SQL Reference for more information.

Example 5-8 Flushing a cache group

The following statement manually propagates committed insert and update operations on the TimesTen cache tables in the western_customers cache group to the cached Oracle tables:

FLUSH CACHE GROUP western_customers;

Unloading a cache group

You can delete some or all cache instances from the cache tables in a cache group with the UNLOAD CACHE GROUP statement. Unlike the DROP CACHE GROUP statement, the cache tables themselves are not dropped when a cache group is unloaded.

Use caution when using the UNLOAD CACHE GROUP statement with autorefresh cache groups. An unloaded row can reappear in the cache table as the result of an autorefresh operation if the row, or its related parent or child rows, are updated in the cached Oracle table.

Execution of the UNLOAD CACHE GROUP statement for an AWT cache group waits until updates on the rows have been propagated to the Oracle database.


Note:

For more information, see "UNLOAD CACHE GROUP" in the Oracle TimesTen In-Memory Database SQL Reference.

Example 5-9 Unloading cache groups

The following statement unloads all cache instances from all cache tables in the customer_orders cache group in a single transaction. A single transaction should only be used if the data within customer_orders is small:

UNLOAD CACHE GROUP customer_orders;

The following equivalent statements delete the cache instance for customer number 227 from the cache tables in the new_customers cache group:

UNLOAD CACHE GROUP new_customers WITH ID (227);
UNLOAD CACHE GROUP new_customers WHERE (oratt.customer.cust_num = 227);

Unloading a cache group across all grid members

You can unload a cache group in all members of a cache grid by setting an optimizer flag. Before executing the UNLOAD CACHE GROUP statement, call the ttOptSetFlag built-in procedure and set the GlobalProcessing optimizer flag to 1:

CALL ttOptSetFlag('GlobalProcessing', 1);

Consider this statement:

UNLOAD CACHE GROUP customer WHERE customer_id=54321;

A local unload operation removes the customer record only if the record exists on the node where the statement is executed. A global unload operation removes the customer record regardless of which node contains the record.

Determining the number of cache instances affected by an operation

You can use the following mechanisms to determine how many cache instances were loaded by a LOAD CACHE GROUP statement, refreshed by a REFRESH CACHE GROUP statement, flushed by a FLUSH CACHE GROUP statement, or unloaded by an UNLOAD CACHE GROUP statement:

Setting a passthrough level

When an application issues statements on a TimesTen connection, the statement can be executed in the TimesTen database or passed through to the Oracle database for execution. Whether the statement is executed in the TimesTen or Oracle database depends on the composition of the statement and the setting of the PassThrough connection attribute. You can set the PassThrough connection attribute to define which statements are to be executed locally in TimesTen and which are to be redirected to Oracle for execution.


Note:

A transaction that contains operations that are replicated with RETURN TWOSAFE cannot have a PassThrough setting greater than 0. If PassThrough is greater than 0, an error is returned and the transaction must be rolled back.

When PassThrough is set to 0, 1, or 2, the following behavior occurs when a dynamic load condition exists:

  • A dynamic load can occur for a SELECT operation on cache tables in any dynamic cache group type.

  • 7y

    A dynamic load for an INSERT, UPDATE, or DELETE operation can only occur on cached tables with dynamic AWT or SWT cache groups.

See "Dynamically loading a cache instance" for more details on dynamic load.


PassThrough=0

PassThrough=0 is the default setting and specifies that all statements are to be executed in the TimesTen database. Figure 5-1 shows that Table A is updated on the TimesTen database. Table F cannot be updated because it does not exist in TimesTen.

PassThrough=1

Set PassThrough=1 to specify that a statement that references a table that does not exist in the TimesTen database is passed through to the Oracle database for execution. No DDL statements are passed through to the Oracle database.

If TimesTen cannot parse a SELECT statement because it includes keywords that do not exist in TimesTen SQL or because it includes syntax errors, it passes the statement to the Oracle database. If TimesTen cannot parse INSERT, UPDATE or DELETE statements, TimesTen returns an error and the statement is not passed through to the Oracle database.

Figure 5-2 shows that Table A is updated in the TimesTen database, while Table G is updated in the Oracle database because Table G does not exist in the TimesTen database.

PassThrough=2

PassThrough=2 specifies that INSERT, UPDATE and DELETE statements are passed through to the Oracle database for read-only cache groups and user managed cache groups that use the READONLY cache table attribute. Otherwise, Passthrough=1 behavior applies.

Figure 5-3 shows that updates to Table A and Table G in a read-only cache group are passed through to the Oracle database.

PassThrough=3

PassThrough=3 specifies that all statements are passed through to the Oracle database for execution, except that INSERT, UPDATE and DELETE statements issued on cache tables in a dynamic AWT global cache group result in a TimesTen error.

Figure 5-4 shows that Table A is updated on the Oracle database for a read-only or updatable cache group. A SELECT statement that references Table G is also passed through to the Oracle database. A SELECT statement that references Table C in a dynamic AWT global cache group is passed through to the Oracle database.

PassThrough=4

PassThrough=4 specifies that SELECT statements issued on cache tables in a dynamic AWT global cache group that do not satisfy the criteria for a dynamic load query are passed through to the Oracle database for execution. Otherwise, statements are executed in the TimesTen database. See "Dynamic load guidelines" for the criteria for a dynamic load SELECT statement.

Figure 5-5 shows that Table A in an updatable cache group is updated in the TimesTen database. The figure also shows a SELECT statement issued on a dynamic AWT global cache group that does not satisfy the criteria for a dynamic load SELECT statement and is passed through to the Oracle database for execution.

PassThrough=5

PassThrough=5 specifies that SELECT statements issued on cache tables in a dynamic AWT global cache group that do not satisfy the criteria for a dynamic load query are passed through to the Oracle database for execution when all committed updates on cache tables in dynamic AWT global cache groups by previous transactions within the connection have been propagated to the Oracle database. Otherwise statements are executed in the TimesTen database. See "Dynamic load guidelines" for the criteria for a dynamic load SELECT statement.

Figure 5-6 shows that Table A in an updatable cache group is updated in the TimesTen database. The figure also shows a SELECT statement issued on a dynamic AWT global cache group that does not satisfy the criteria for a dynamic load SELECT statement and is passed through to the Oracle database for execution after all committed updates on cache tables in dynamic AWT global cache groups by previous transactions within the connection have been propagated to the Oracle database.

Considerations for using passthrough

Passing through update operations to the Oracle database for execution is not recommended when issued on cache tables in an AWT or SWT cache group. Committed updates on cache tables in an AWT cache group are automatically propagated to the cached Oracle tables in asynchronous fashion. However, passing through an update operation to the Oracle database for execution within the same transaction as the update on the cache table in the AWT cache group renders the propagate of the cache table update synchronous, which may have undesired results. Committed updates on cache tables in an SWT cache group can result in self-deadlocks if, within the same transaction, updates on the same tables are passed through to the Oracle database for execution.

A PL/SQL block cannot be passed through to the Oracle database for execution. Also, you cannot pass through to Oracle for execution a reference to a stored procedure or function that is defined in the Oracle database but not in the TimesTen database.

For more information about how the PassThrough connection attribute setting determines which statements are executed in the TimesTen database and which are passed through to the Oracle database for execution and under what circumstances, see "PassThrough" in Oracle TimesTen In-Memory Database Reference.


Note:

The passthrough feature uses OCI to communicate with the Oracle database. The OCI diagnostic framework installs signal handlers that may impact signal handling that you use in your application. You can disable OCI signal handling by setting DIAG_SIGHANDLER_ENABLED=FALSE in the sqlnet.ora file. Refer to "Fault Diagnosability in OCI" in Oracle Call Interface Programmer's Guide for information.

Changing the passthrough level for a connection or transaction

You can override the current passthrough level using the ttIsql utility's set passthrough command which applies to the current transaction.

You can also override the setting for a specific transaction by calling the ttOptSetFlag built-in procedure with the PassThrough flag. The following procedure call sets the passthrough level to 3:

CALL ttOptSetFlag('PassThrough', 3);

The PassThrough flag setting takes effect when a statement is prepared and it is the setting that is used when the statement is executed even if the setting has changed from the time the statement was prepared to when the statement is executed. After the transaction has been committed or rolled back, the original connection setting takes effect for all subsequently prepared statements.

Cache performance

This section contains information about cache performance.

See Oracle TimesTen In-Memory Database Troubleshooting Guide for extensive information about monitoring autorefresh operations and improving autorefresh performance. See "Monitoring autorefresh cache groups" and "Poor autorefresh performance".

Oracle TimesTen In-Memory Database Troubleshooting Guide also has information about AWT cache group performance. See "Monitoring AWT performance" and "Possible causes of poor AWT performance".

Dynamic load performance

Dynamic loading based on a primary key search of the root table has faster performance than primary key searches on a child table or foreign key searches on a child table.

Improving AWT throughput

By default, an AWT cache group uses the PL/SQL execution method to apply changes within TimesTen to the Oracle database. AWT bundles all pending operations into a single PL/SQL collection that is sent to the Oracle server to be executed. This execution method is appropriate when there are mixed transactions and network latency between TimesTen and the Oracle server.

Use the cacheAWTMethod first connection attribute to specify SQL array execution to apply changes within TimesTen to the Oracle database. This method is appropriate when the same type of operation is repeated. For example, SQL array execution is very efficient when a user does an update that affects several rows of the table. Updates are grouped together and sent to the Oracle server in one batch.

The PL/SQL execution method transparently falls back to SQL array execution mode temporarily when it encounters one of the following:

  • A statement that is over 32761 bytes in length.

  • A statement that references a column of type BINARY FLOAT, BINARY DOUBLE and VARCHAR/VARBINARY of length greater than 4000 bytes.

For more information, see "cacheAWTMethod" in Oracle TimesTen In-Memory Database Reference.

PKV77PKAAOEBPS/glossary.htm 4 Glossary

Glossary

aging

Delete cache instances from the cache tables of a cache group after a specified period of time (time-based) or when a specified level of database usage is reached (LRU).

asynchronous writethrough (AWT) cache group

A cache group in which committed updates on TimesTen cache tables are automatically and asynchronously propagated to the cached Oracle tables. The commit on the TimesTen database occurs asynchronously from the commit on the Oracle database.

automatic refresh

Committed updates on cached Oracle tables are automatically refreshed to the TimesTen cache tables.

autorefresh cache group

A read-only cache group or a user managed cache group that uses the AUTOREFRESH MODE INCREMENTAL cache group attribute.

bidirectional transmit

Propagate committed updates on TimesTen cache tables to the cached Oracle tables, and refresh committed updates on cached Oracle tables to the TimesTen cache tables.

cache administration user

Oracle user that creates and maintains Oracle objects that store information used to manage cache grids and enforce predefined behaviors of particular cache group types.

cache agent

A TimesTen process that processes cache group operations, such as automatic refresh, loading a cache group, and passing through statements to the Oracle database for execution.

cache group

Defines the data from the Oracle tables to cache in a TimesTen database. A cache group can cache all or a subset of a single Oracle table or a set of related Oracle tables. If multiple Oracle tables are cached, each cache table (except for the root table) must reference another cache table in the cache group through foreign key constraints.

cache grid

A set of distributed grid members consisting of TimesTen in-memory databases that work together to cache data from a single Oracle database and guarantee cache coherence among the TimesTen databases.

cache group primary key

The primary key of the cache group's root table.

cache instance

A specific row of data identified by the primary key in the cache group's root table. If there are multiple tables in the cache group, the cache instance consists of the set of rows in the child tables associated by foreign key relationships with the row in the root table.

cache manager user

TimesTen user that performs cache grid and cache group operations such as creating and configuring a cache grid, and creating cache groups.

cache table

The root table or a child table in a cache group.

cache table users

TimesTen users who own cache tables.

child table

A cache table that has a foreign key reference to either the primary key of the root table or another child table that either directly or indirectly references the root table. The table hierarchy in your cache group can designate child tables to be parents of other child tables. No cache table can be a child to more than one parent in the cache group.

dynamic cache group

A cache group category for which data in its cache tables can be loaded on demand, manually loaded or automatically loaded.

dynamic load

The transfer of data into the local grid member from Oracle tables when a query cannot be satisfied with data in the cache grid members.

explicitly loaded cache group

A cache group category for which data in its cache tables are manually or automatically loaded.

flush

To manually propagate committed inserts or updates on TimesTen cache tables in a user managed cache group to the cached Oracle tables.

global cache group

A cache group classification where data in its cache tables are shared across multiple TimesTen databases within a cache grid.

grid data transfer

Transfer of the cache instance from remote grid members to the local grid member in response to a query that cannot be satisfied by data in the cache tables on the local grid member.

grid member

A component of a cache grid consisting of either a standalone TimesTen database or an active standby pair.

grid node

A TimesTen database of a grid member that is either a standalone database, or the active database or standby database of an active standby pair.

load

Copy new cache instances from the cached Oracle tables to the TimesTen cache tables. Cache instances that are already exist in the cache tables are not updated or deleted.

local cache group

A cache group classification where data in its cache tables are not shared across multiple TimesTen databases even if the databases are members of the same cache grid.

Oracle schema users

Oracle users who own Oracle tables to be cached in a TimesTen database.

Oracle timesten user

Oracle user who owns Oracle tables that store information about cache grids.

propagate

Transmit committed updates on TimesTen cache tables to the cached Oracle tables.

read-only cache group

A cache group in which committed updates on cached Oracle tables are automatically refreshed to the TimesTen cache tables. You cannot update cache tables directly in a read-only cache group.

refresh

For an explicitly loaded cache group, unload and then load the cache group.

For a dynamic cache group, replace existing cache instances in the cache tables with the most current data from the cached Oracle tables.

replication

The process of maintaining duplicate copies of data in multiple databases.

replication agent

Replication at each master and subscriber TimesTen database is controlled by a replication agent process. The replication agent on the master database reads the transaction log records and transmits any committed updates on replicated elements to the replication agent on the subscriber database. The replication agent on the subscriber database then applies the updates to its database.

For an AWT cache group, the replication agent transmits committed updates on its cache tables to the cached Oracle tables.

root table

The parent table in the cache group that does not reference any other table in the cache group through a foreign key constraint. The primary key of the root table is the primary key of the cache group.

synchronous writethrough (SWT) cache group

A cache group in which committed updates on TimesTen cache tables are automatically and synchronously propagated to the cached Oracle tables. When an application commits a transaction, it is committed on Oracle before it is committed on TimesTen.

system managed cache group

System managed cache groups enforce predefined behaviors. The types of system managed cache groups are read-only, synchronous writethrough and asynchronous writethrough.

TT_CACHE_ADMIN_ROLE role

Role granted to the cache administration user that defines privileges on the Oracle tables owned by the timesten user which store information about cache grids.

user managed cache group

A cache group that implements customized behavior such as bidirectional transmit.

unload

Delete cache instances from a cache table. The rows in the cached Oracle tables are not affected.

PK( 4 4PKAAOEBPS/preface.htm- Preface

Preface

Oracle In-Memory Database Cache is an Oracle Database product option that is ideal for caching performance-critical subsets of an Oracle database into cache tables within TimesTen databases for improved response time in the application tier. Cache tables can be read-only or updatable. Applications read and update the cache tables using standard Structured Query Language (SQL) while data synchronization between the TimesTen database and the Oracle database is performed automatically.

Oracle In-Memory Database Cache offers applications the full generality and functionality of a relational database, the transparent maintenance of cache consistency with the Oracle database, and the real-time performance of an in-memory database.

Audience

This guide is for application developers who use and administer TimesTen, and for system administrators who configure and manage TimesTen databases that cache data from Oracle databases. To work with this guide, you should understand how relational database systems work. You should also have knowledge of SQL, and either Open Database Connectivity (ODBC), Java Database Connectivity (JDBC), or Oracle Call Interface (OCI).

Related documents

TimesTen documentation is available on the product distribution media and on the Oracle Technology Network (OTN):

http://www.oracle.com/technetwork/products/timesten/documentation

Conventions

TimesTen supports multiple platforms. Unless otherwise indicated, the information in this guide applies to all supported platforms. The term Windows refers to all supported Windows platforms. The term UNIX applies to all supported UNIX and Linux platforms. See "Platforms" in Oracle TimesTen In-Memory Database Release Notes for specific platform versions supported by TimesTen.


Note:

In TimesTen documentation, the terms "data store" and "database" are equivalent. Both terms refer to the TimesTen database unless otherwise noted.

This document uses the following text conventions:

ConventionMeaning
boldfaceBoldface type indicates graphical user interface elements associated with an action, or terms defined in text.
italicItalic type indicates book titles, emphasis, or placeholder variables for which you supply particular values.
monospaceMonospace type indicates commands within a paragraph, URLs, code in examples, text that appears on the screen, or text that you enter.
italic monospaceItalic monospace type indicates a variable in a code example that you must replace. For example:

Driver=TimesTen_install_dir/lib/libtten.so

Replace TimesTen_install_dir with the path of your TimesTen installation directory.

[ ]Square brackets indicate that an item in a command line is optional.
{ }Curly braces indicate that you must choose one of the items separated by a vertical bar ( | ) in a command line.
|
A vertical bar separates alternative arguments.
. . .An ellipsis (. . .) after an argument indicates that you may use more than one argument on a single command line.
%
The percent sign indicates the UNIX shell prompt.
#
The number (or pound) sign indicates the prompt for the UNIX root user.

TimesTen documentation uses these variables to identify path, file and user names:

ConventionMeaning
TimesTen_install_dirThe path that represents the directory where the current release of TimesTen is installed.
TTinstanceThe instance name for your specific installation of TimesTen. Each installation of TimesTen must be identified at install time with a unique alphanumeric instance name. This name appears in the install path.
bits or bbTwo digits, 32 or 64, that represent either the 32-bit or 64-bit version of the operating system.
release or rrThe first three parts in a release number, with or without dots. The first three parts of a release number represent a major TimesTen release. For example, 1122 or 11.2.2 represents TimesTen 11g Release 2 (11.2.2).
jdk_versionOne or two digits that represent the major version number of the Java Development Kit (JDK) release. For example, 5 represents JDK 5.
DSNThe data source name.

Documentation Accessibility

For information about Oracle's commitment to accessibility, visit the Oracle Accessibility Program website at http://www.oracle.com/pls/topic/lookup?ctx=acc&id=docacc.

Access to Oracle Support

Oracle customers have access to electronic support through My Oracle Support. For information, visit http://www.oracle.com/pls/topic/lookup?ctx=acc&id=info or visit http://www.oracle.com/pls/topic/lookup?ctx=acc&id=trs if you are hearing impaired.

PKQ--PKAAOEBPS/index.htm Index

Index

A  B  C  D  E  F  G  H  I  L  M  N  O  P  Q  R  S  T  U  V  W 

A

active standby pair
active database, 6.2.1
create, 6.2.1
definition, 6.2
read-only subscriber database, 6.2.3
standby database, 6.2.2
aging policy
cache group, 4.5
LRU aging, 4.5.1
time-based aging, 4.5.2
asynchronous writethrough cache group, see AWT cache group
autocommit
global queries, 6.4, 6.4.1
autorefresh
cleanup
drop Oracle objects, 7.5
definition, 1.2.3
example, 2.5.2
initiate, 4.2.5, 5.2.4
interval, 4.2.5
mode, 4.2.5
state, 4.2.5
status, 7.4
autorefresh cache group
change log table, 7.4
definition, 3.2.1
load and refresh, 5.2.1
manually create Oracle objects, 4.2.5.2
monitoring, 7.2.2
recovery method, 7.4
status, 7.4
AUTOREFRESH cache group attribute, 4.2.5
AWT cache group
create, 2.3.3, 4.2.2
definition, 1.2.2, 4.2.2
error reporting, 4.2.2.3, 4.2.2.5
monitoring, 7.2.3
parallel propagation, 4.2.2.2
restrictions, 4.2.2.4
awterrs file, 4.2.2.3, 4.2.2.5

B

BLOB data
caching in TimesTen, 4.4
built-in procedures
ttAgingLRUConfig, 4.5.1
ttAgingScheduleNow, 4.5.3
ttCacheAWTMonitorConfig, 7.2.3
ttCacheAWTThresholdSet, 7.2.4
ttCacheConfig, 7.4
AgentTimeout parameter, 7.4
TblSpaceFullRecovery parameter, 7.6.2
TblSpaceThreshold parameter, 7.6.1
ttCacheDbCgStatus, 7.4
ttCacheDDLTrackingConfig, 7.2.7, 7.2.7
ttCachePolicySet, 3.6.1
ttCacheStart, 2.3.2, 3.6
ttCacheStop, 2.7.5, 3.6, 8.5
ttCacheUidGet, 3.5
ttCacheUidPwdSet, 2.1.4, 3.3.4
ttGridAttach, 2.4, 3.6.1, 4.7.4
ttGridCreate, 2.2, 3.4.2
ttGridDestroy, 2.7.4, 8.4
ttGridDetach, 2.7.1, 8.1
ttGridDetachList, 8.1
ttGridInfo, 7.2.5
ttGridNameSet, 2.2, 3.4.3
ttGridNodeStatus, 7.2.5
ttRepPolicySet, 4.2.2.1
ttRepStart, 2.3.4, 4.2.2.1
ttRepStateGet, 7.7
ttRepStateSet, 6.2.1
ttRepStop, 2.7.2, 4.2.2.1, 8.2, 8.2
ttRepSubscriberWait, 7.2.7, 8.3

C

cache
manage, 3.2.3, 3.2.4
manage through Oracle object, 3.2.4
performance evaluation, 9.1
cache administration user
create, 2.1.1, 3.2.1, 9.2.1
default tablespace
create, 2.1.1, 3.2.1, 9.2.1
drop, 2.7.6, 8.7, 9.6.1, 9.6.2
monitoring, 7.6
recover when full, 7.6.2
usage warning threshold, 7.6.1
definition, 2.1.1, 3.2.1
determine, 3.5
set in TimesTen database, 2.1.4, 3.3.4
Cache Advisor
configuration, 9.2
configure repository database, 9.2.2
configure target Oracle database, 9.2.1
configure TimesTen database, 9.2.3
executing, 9.4
identify target Oracle database, 9.4
overview, 9
post-processing clean up, 9.6
recommends cache group definitions, 9.1
supported configurations, 9.2.4
usage guidelines, 9.2.4
cache agent
connection failure, 7.1.1
reconnecting with Oracle Database, 10.1
start, 2.3.2, 3.6
start policy
and cache grid, 3.6.1
definition, 3.6.1
set, 3.6.1
status, 7.1, 7.1
stop, 2.7.5, 3.6, 8.5
timeout, 7.4
cache grid
associate TimesTen database, 2.2, 3.4.3
attach a TimesTen database, 2.4, 4.7.4
cache agent
start policy, 3.6.1, 3.6.1
cache agent start policy, 7.7
create, 2.2, 3.4.2
data transfer, 4.7.1, 4.7.2
definition, 1.1, 3.4
destroy, 2.7.4, 8.4
detach
set of TimesTen databases, 8.1
TimesTen database, 2.7.1, 8.1
failure, 7.7
global query with local join, 6.4.1
instance owner, 4.7.1
location of data, 6.4.2
member
attach, 7.7
definition, 1.1, 3.4
detach all, 8.1
sharing data, 6.3
member failure, 3.6.1
node
definition, 1.1, 3.4
Oracle system parameters, 3.4.1
recovery, 7.7
ten or more nodes, 3.4.1
using ttRepStateGet, 7.7, 7.7
cache group
autorefresh
definition, 1.2.3, 3.2.1
create, 2.3
dead
recovery, 7.4
definition, 1.2, 4.1
dynamic load, 5.3
flush
definition, 1.2.3
load, 1.2.3
recommendations
Cache Advisor, 9.1
refresh, 1.2.3
table hierarchy, 4.1.2
table partition, 13.4.1.1
cache instance
definition, 1.2.1, 5.3
owner, 4.7.1
ownership, 4.7, 4.7.1
propagate
definition, 1.2.3
cache manager user
create, 2.1.3, 3.3.2, 9.2.3
defined, 3.3.2
definition, 2.1.3, 3.3.2
minimum privileges, 2.1.3, 3.3.3, 9.2.3
cache table
ON DELETE CASCADE attribute, 4.2.7
PROPAGATE attribute, 4.2.4.1
READONLY attribute, 4.2.4.2
UNIQUE HASH ON attribute, 4.2.8
user
create, 2.1.3, 3.3.2
defined, 3.3.2
definition, 2.1.3, 3.3.2
cacheAWTMethod first connection attribute, 5.8.2
CacheAwtParallelism data store attribute, 3.3.1, 4.2.2.2
cacheCleanUp.sql SQL*Plus script, 7.5, 12.1
CacheGridEnable connection attribute, 3.4.2
CacheGridMsgWait connection attribute, 4.7.1, 4.7.2
cachegroups ttIsql command, 2.3.3, 7.2.1
cacheInfo.sql SQL*Plus script, 12.1
cachesqlget ttIsql command, 4.2.5.2, 7.2.7
character set
on Oracle, 9.2.3
child table
definition, 1.2, 4.1.2
CLOB data
caching in TimesTen, 4.4
CONNECT BY clause, 13.4.6
connection
between TimesTen and Oracle database, 3.5
failure
cache agent, 7.1.1
Oracle Database, 10.1
replication agent, 7.1.1
connection attributes
CacheGridEnable, 3.4.2
CacheGridMsgWait, 4.7.1, 4.7.2
DatabaseCharacterSet, 3.3.1
DynamicLoadEnable, 5.3.1
DynamicLoadErrorMode, 5.3.4
LockLevel, 3.3.1
OracleNetServiceName, 3.3.1
OraclePWD, 3.3.1
PassThrough, 3.3.1, 5.7
PermSize, 3.3.1
PWD, 3.3.1
RACCallback, 10.3
TypeMode, 3.3.1
UID, 3.3.1
CREATE ACTIVE STANDBY PAIR statement, 6.2.1

D

Data Guard, 11.1
data store attributes
CacheAwtParallelism, 3.3.1
ReplicationApplyOrdering, 3.3.1
data type
differences between Oracle and TimesTen, 13.4.4
mapping between Oracle and TimesTen, 13.5
mapping for key columns, 13.5
mapping for non-key columns, 13.5
database
character set, 9.2.3
duplicate, 6.2.2
temporary, 4.2
DatabaseCharacterSet connection attribute, 3.3.1
DDL statements
tracking, 7.2.7
DeadDbRecovery parameter, 7.4, 7.4
DROP ACTIVE STANDBY PAIR statement
example, 8.3
DROP CACHE GROUP statement
example, 2.7.3, 8.3
DSN
Cache Advisor
TimesTen database, 9.2.3
DSN for TimesTen database
example, 2.1.2, 3.3.1
duplicating a database, 6.2.2
dynamic cache group
create, 4.6
definition, 1.2.4, 4.6
dynamic global cache group
dynamic load, 4.7.1
dynamic load
configuration, 5.3.1
definition, 4.7.1, 5.3
disable, 5.3.1
display errors, 5.3.4
examples, 2.6.1, 5.3.3
guidelines, 5.3.2
rules, 5.3.2
DynamicLoadEnable connection attribute, 5.3.1, 5.3.1
DynamicLoadErrorMode connection attribute, 5.3.4

E

environment variables
Microsoft Windows, 3.1.2
UNIX, 3.1.1
explicitly loaded cache group
definition, 1.2.4

F

failure
cache grid member, 7.7
Fast Application Notification (FAN), 10.1
FLUSH CACHE GROUP statement
definition, 5.4
example, 5.4
foreign key
index, 4.2.2.2
restriction, 4.2.2.2

G

global cache group
definition, 1.2.5, 4.7
dynamic load, 5.3
example, dynamic, 4.7.1
example, explicitly loaded, 4.7.2
explicitly loaded, 4.7.2
sharing data among grid members, 6.3
global cache groups
dynamic, 4.7.1
ownership changes, 7.2.6
global query, 6.4
autocommit, 6.4, 6.4.1
local join, 6.4.1
global unload operation, 5.5.1
GlobalLocalJoin optimizer flag, 6.4.1
GlobalProcessing optimizer flag, 6.4
GlobalProcessing optimizer hint
unload operation, 5.5.1
grantCacheAdminPrivileges.sql script, 9.2.1, 9.2.1
grantCacheAdminPrivileges.sql SQL*Plus script, 2.1.1, 3.2.3, 12.1
grid
member
port, 4.7.4
grid, see cache grid

H

high availability
active standby pair, 1.3
cache grid, 1.3
Data Guard, 1.3
Oracle Real Application Clusters (Oracle RAC), 1.3

I

index
foreign key, 4.2.2.2
initCacheAdminSchema.sql SQL*Plus script, 3.2.4, 12.1
initCacheGlobalSchema.sql script, 9.2.1
initCacheGlobalSchema.sql SQL*Plus script, 2.1.1, 3.2.1, 9.2.1, 9.2.2, 12.1
initCacheGridSchema.sql SQL*Plus script, 3.2.4, 12.1
instance administrator, 2.1.3

L

LOAD CACHE GROUP
example, 5.2.8
LOAD CACHE GROUP statement
definition, 5.2
example, 2.5.1, 5.2
PARALLEL clause, 5.2.6
WITH ID clause, 5.2.3
LOB data
cache administration user privileges, 3.2.2
caching in TimesTen, 4.4
restrictions on caching, 4.4
local cache group
definition, 1.2.5
LockLevel connection attribute, 3.3.1
LRU aging policy, 4.5.1

M

materialized views
Oracle, 4.2.4, 13.4.1
Maximum Availability Architecture (MAA), 11.1
multiple-table cache group, 4.1.2

N

NCLOB data
caching in TimesTen, 4.4

O

OCIAttrGet() OCI function
OCI_ATTR_ROW_COUNT option, 5.6
ON DELETE CASCADE cache table attribute, 4.2.7
Oracle
autorefresh
cleanup, 7.5
AWT errors, 4.2.2.5
create objects to manage cache, 3.2.3
database character set
determine, 3.3.1, 9.2.3
execution errors, 4.2.2.5
manually manage cache, 3.2.4
objects to ma0YϦnage cache
determine, 3.2.4
tables and triggers, 7.3
partitioned tables, 13.4.1.1
Oracle Database
connection failures, 10.1
differences from TimesTen, 13.1
Oracle Real Application Clusters (Oracle RAC), 10.1
Oracle schema users
create, 2.1.1, 3.2.1, 9.2.1
definition, 2.1.1, 3.2.1
Oracle Server releases
supported, 3.1
Oracle SQL*Plus scripts
cacheCleanUp.sql, 7.5, 12.1
cacheInfo.sql, 12.1
grantCacheAdminPrivileges.sql, 2.1.1, 3.2.3, 12.1
initCacheAdminSchema.sql, 3.2.4, 12.1
initCacheGlobalSchema.sql, 2.1.1, 3.2.1, 9.2.1, 9.2.2, 12.1
initCacheGridSchema.sql, 3.2.4, 12.1
Oracle synonyms
cache, 4.3
Oracle timesten user
definition, 2.1.1
Oracle users
cache administration user, 2.1.1
drop, 2.7.6, 8.7
privileges, 3.2.2
schema users, 2.1.1
timesten user, 2.1.1, 3.2.1
OracleNetServiceName connection attribute, 3.3.1
OraclePWD connection attribute, 3.3.1
owner
cache instance, 4.7.1
ownership
cache instance, 4.7, 4.7.1

P

parallel propagation
AWT cache groups, 4.2.2.2
foreign key
restriction, 4.2.2.2
partition, 13.4.1.1
PassThrough connection attribute, 3.3.1, 5.7
and RETURN TWOSAFE, 5.7
passthrough level
changing, 5.7.8
setting, 5.7
performance
Cache Advisor, 9.1
comparison between Oracle and TimesTen, 9.1
PermSize connection attribute, 3.3.1
port
cache grid member, 4.7.4
privileges
Oracle users, 3.2.2
propagate
example, 2.6.2
propagate cache instances
definition, 1.2.3
PROPAGATE cache table attribute, 4.2.4.1
propagation
error reporting, 4.2.2.5
PWD connection attribute, 3.3.1

Q

query
cache grid, 6.4
global, 6.4

R

RACCallback connection attribute, 10.3
read-only cache group
create, 2.3.3, 4.2.1
definition, 1.2.2, 4.2.1
restrictions, 4.2.1.1
READONLY cache table attribute, 4.2.4.2
refresh
cache group, 1.2.3
initiate, 5.2.4
REFRESH CACHE GROUP
example, 5.2.8
REFRESH CACHE GROUP statement
definition, 5.2
example, 5.2
PARALLEL clause, 5.2.6
WITH ID clause, 5.2.3
refresh now, 4.2.5
replication agent
connection failure, 7.1.1
start, 2.3.4, 4.2.2.1
start policy
definition, 4.2.2.1
set, 4.2.2.1
status, 7.1, 7.1
stop, 2.7.2, 4.2.2.1, 8.2, 8.2
ReplicationApplyOrdering data store attribute, 3.3.1, 4.2.2.2
ReplicationParallelism data store attribute, 4.2.2.2
root table
definition, 1.2, 4.1.2

S

scripts
IMDB Cache, 12
SQL*Plus, 12
SELECT statement
cache grid, 6.4
global, 6.4
semantics
differences between Oracle and TimesTen, 13.2
single-table cache group, 4.1.1
sliding window
cache group, 4.5.4
SQL
differences between TimesTen and Oracle, 13.4
SQLRowCount() ODBC function, 5.6
Statement.getUpdateCount() JDBC method, 5.6
synchronous writethrough (SWT) cache group
create, 4.2.3
definition, 1.2.2, 4.2.3
restrictions, 4.2.3.1
sys.odbc.ini
Cache Advisor
example, 9.2.3
system managed cache groups, 4.2

T

tables
Oracle, 7.3
partition, 13.4.1.1
tablespace
create default, 2.1.1, 3.2.1, 9.2.1
drop default, 2.7.6, 8.7, 9.6.1, 9.6.2
full, 7.6.2
monitoring default, 7.6
recover when full, 7.6.2, 7.6.2
threshold, 7.6.1, 7.6.1
usage notification, 7.6.1
TblSpaceFullRecovery parameter, 7.6.2
time-based aging policy, 4.5.2
TimesTen users
cache manager user, 2.1.3, 3.3.2
cache table users, 2.1.3, 3.3.2
transaction log file threshold for AWT cache groups
set, 7.2.4
transaction semantics
differences between Oracle and TimesTen, 13.2
Transparent Application Failover (TAF), 10.1
triggers
Oracle, 7.3
tt_cache_admin_role role
definition, 3.2.1
drop, 8.7
TT_CACHE_ADMIN_ROLE role
definition, 2.1.1
drop, 2.7.6, 9.6.1, 9.6.1, 9.6.2, 9.6.2
ttAdmin utility
-cachePolicy command, 3.6.1
-cacheStart command, 3.6
-cacheStop command, 3.6
-cacheUidGet command, 3.5
-cacheUidPwdSet command, 3.3.4
-query command, 7.1
-repPolicy command, 4.2.2.1
-repStart command, 4.2.2.1
-repStop command, 4.2.2.1
ttAgingLRUConfig built-in procedure, 4.5.1
ttAgingScheduleNow built-in procedure, 4.5.3
ttCacheAdvisor utility
-oraConn option, 9.4
-oraDirObject option, 9.4
-oraTarget option, 9.4
usage, 9.4
ttCacheAutorefresh built-in procedure, 4.2.5, 5.2.4
ttCacheAWTMonitorConfig built-in procedure, 7.2.3
ttCacheAWTThresholdSet built-in procedure, 7.2.4
ttCacheConfig
usage notification, 7.6.1
ttCacheConfig built-in procedure
AgentTimeout parameter, 7.4
DeadDbRecovery parameter, 7.4
full tablespace, 7.6.2
TblSpaceFullRecovery parameter, 7.6.2
TblSpaceThreshold parameter, 7.6.1
ttCacheDbCgStatus built-in procedure, 7.4
ttCacheDDLTrackingConfig built-in procedure, 7.2.7, 7.2.7
ttCachePolicySet built-in procedure, 3.6.1
ttCacheStart built-in procedure, 2.3.2, 3.6
ttCacheStop built-in procedure, 2.7.5, 3.6, 8.5
ttCacheUidGet built-in procedure, 3.5
ttCacheUidPwdSet built-in procedure, 2.1.4, 3.3.4, 9.2.3
ttDestroy utility, 8.6
ttGridAttach built-in procedure, 2.4, 4.7.4, 7.7
calling after database failure, 3.6.1
ttGridCreate built-in procedure, 2.2, 3.4.2
ttGridDestroy built-in procedure, 2.7.4, 8.4
ttGridDetach built-in procedure, 2.7.1, 8.1
ttGridDetachAll built-in procedure, 8.1
ttGridDetachList built-in procedure, 8.1
ttGridGlobalCGResume built-in procedure, 7.2.6
ttGridGlobalCGSuspend built-in procedure, 7.2.6
ttGridInfo built-in procedure, 7.2.5
TTGRIDMEMBERID() SQL function, 6.4.2
ttGridNameSet built-in procedure, 2.2, 3.4.3
TTGRIDNODENAME() SQL function, 6.4.2
ttGridNodeStatus built-in procedure, 7.2.5
TTGRIDUSERASSIGNEDNAME() SQL function, 6.4.2
ttIsql set dynamicloadenable command, 5.3.1
ttIsql set dynamicloaderrormode command, 5.3.4
ttIsql utility, 2.1.3, 9.2.3
cachegroups command, 2.3.3, 7.2.1
cachesqlget command
INCREMENTAL AUTOREFRESH option, 4.2.5.2
ORACLE_DDL_TRACKING option, 7.2.7
set passthrough command, 5.7.8
ttOptSetFlag built-in procedure
DynamicLoadEnable flag, 5.3.1
DynamicLoadErrorMode flag, 5.3.4
PassThrough flag, 5.7.8
ttRepAdmin -duplicate utility, 6.2.2
-keepCG option, 6.2.2
-noKeepCG option, 6.2.3
ttRepPolicySet built-in procedure, 4.2.2.1
ttRepStart built-in procedure, 2.3.4, 4.2.2.1
ttRepStateGet built-in procedure, 7.7
ttRepStateSet built-in procedure, 6.2.1
ttRepStop built-in procedure, 2.7.2, 4.2.2.1, 8.2, 8.2
ttRepSubscriberWait built-in procedure, 7.2.7, 8.3
ttStatus utility, 7.1
TypeMode connection attribute, 3.3.1

U

UID connection attribute, 3.3.1
UNIQUE HASH ON cache table attribute, 4.2.8
unload cache group
global, 5.5.1
UNLOAD CACHE GROUP statement
definition, 5.5
example, 5.5
user managed cache group
bidirectional transmit, 4.2.4
create, 4.2.4, 4.2.4
definition, 1.2.2, 4.2.4

V

views
Oracle, 4.2.4, 13.4.1

W

WHERE clause, 4.2.6
referencing Oracle PL/SQL functions, 4.2.6.2
PKz:0PKAAOEBPS/img/careportconfig.jpgJFIF``LEAD Technologies Inc. V1.01    "!#(3+#&0&,=-0569:9"+?C>8C3897 7$$77777777777777777777777777777777777777777777777777  }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyzw!1AQaq"2B #3Rbr $4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyzcL ?C@ 2y)'d}i|idѶ{橻}՗ԟy-$ⅩI$g\2޴_{cМ. V.O1jahNJzV`j@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@ Z ;b`y7* <JRwOf a9&lj*VVhsP@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P\|yDŽ|QXjvUXFdFޜ+nj紫RQ:;Ƿ-[Ğ3y}Z5h:橣탥ƐF :t߁jS[,m5)Q7 GG-ʲ scU*MfU*QҞM7Rz.F~bqp7bTue"݇&}:vҾ#jZlZɌI+rW$zŰj#I c$b 7F6~9 \?i,"_%g}`"":׉.4b ,ϛ`,dJ%3i+ J<\ƒ=Z m)HP:Rɰ)f<7ծZx$`)aC v⏋$6vvpT@x9Zan%ֵ8l|ܩ'lrp,@= iauhf@I#c-$r9׾ xc2u}f yX2H=2 R(Kc#4LĜ  Z<26RH+|I𥆭yk1Cwf3:n0?>ݤN:Ieyp0N"B22@h ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (gPܷ^<<@Ecm, >g/ڀ0fss-jv }J$Ob#ޤX=~sJ|<4^ɡAu&x6vo~jچ,P_ oȈhO L>"L"-p>a}(|h&M{{IKbrʫ8"<6,bbP[닅pbџwPZ`W>==(;JF5OM[k{XD6p2~@<@x3^?^[it($+ =0 Gۧ-kXwy*"76"Ki{mck+V,@)bv0G6> ּ#ej^)ӥu]BbHKIbOPwg2Mv_[J -C&S\\Kk<'q,N|3xD#jV_,|K#wM1 [$3|Ҁ%{`8> tqs 6U@26]z؃4ay%8xU\`-P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@PFA&@ ӧGLPPr4l_JPth4P@jF^9_>|l: K) kXh @ݑYx ܟ!s0#?6G?NtLmlbfm Ƥ!@"ÚѬb<CaP^5cT,a$*3hwZzƏc5eJ\In"b21Ҁ&V#Qӭo!v\B/A -Xmm% P>$n AGNi6V-.#-XPoM+ThPmn"3<+!B;(Y+ mvd#Щ4 XͽcR$(<ʀ.@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P^]K4VP$l(yx=}(zj:Fv%N8 "@ 2ƲEH\@N=G(ic]ZC8,pN'44Ȯ!ڀ8'׀Oh٠4NM_MYɨZ!D-26<~ts4f$+F3'M1u8Oxty`GnP2'0%MeٛZe:rk)AK1";y9O|E5oQI ihcbe'v8lPzJ+n !-<@AUf^N, +ԞKnżp!VI%{2< ܓy?cȋ0ƮA[ FXFpח)"GrV)a_!cȻ[fwo~ݿ67y?^uU/tUgkط٢y66,<`zwZDmo"$lde[!9^@7-=ίi yn (ӕ$&> % hװQXXQgWC)evf.Pe\cѨqc5IỖ_% lUbWJ-b',Oq$k, 3C1|!Bhqjyά\ d{q;$hhoh}FF3aaS!X:\_-ܜm6r0A탃ʶ(3(&3%׳,< f(Sb*FS1s  z7pJ&[D)oެy@e>}#2'_@|c{/נre?}O^=9?z>'_@|c{/נre?}O^=9?z>'_@|c{/נre?}O^=9?z>'_@|c{/נre?}O^=9?z>'_@|c{/נre?}O^=9?z>'_@|c{/נre?}O^=9?z>'_@|c{/נre?}O^=9?z>'_@|c{/נre?}O^=9?z>'_@|c{/נre?}O^=9?z>'_@|c{/נre?}O^=9?z>'_@|c{/נre?}O^=( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (f8#Tݗ7P/oQv_@ڣ€Gjߦ >eM}?~(Tݗ7P/oQv_@ڣ€Gjߦ >eM}?~(Tݗ7P/oQv_@ڣ€Gjߦ >eM}?~(Tݗ7P/oQv_@ڣ€Gjߦ >eM}?~(Tݗ7P/oQv_@ڣ€Gjߦ >eM}?~(Tݗ7P/oQv_@ڣ€Gjߦ >eM}?~(Tݗ7P/oQv_@ڣ€Gjߦ >eM}?~(Tݗ7P/oQv_@ڣ€Gjߦ >eM}?~(Tݗ7P/oQv_@ڣ€Gjߦ >eM}?~(Tݗ7P/oQv_@ڣ€Gjߦ >eM}?~(Tݗ7P/oQv_@ڣ€Gjߦ >eM}?~(Tݗ7P/oQv_@ڣ€Gjߦ >eM}?~(Tݗ7P/oQv_@ڣ€.#v 7znBK@P/_M pTƳڧ&3J2WNQ%?r?_ew*(@6P le(@6P le(@6P le(@6P le(@6P le(@6P le(@6P le(@6P le(@6P le(@6P le(@6P le(@6P le(@6ޟFP@^0[QYKU/Fwe : _¿9q7;Ѧ4.a)ͻ-ʪXaz<<7Jf=aMm e:ٱjY@%C#(El<1,}(d9n[{Fjv%.;Xnw/˜Zc?ru r*8'vsz<<<(,dpyYVw Oჵ07'u. g=LsW IXG_i}]#s5 Y>ZgďxKh]mr$ۜd`GN]7~xY/B/[ϱ֋$ݵX g=OJ<<4<ְ`.єV8a(V9onvơK<@@^ irKP$s|<5k:/glld@@ƗYt-)Q8{墝1|}(xb_m[[9+KbH&v! J,&vmyyO&t$ye8#ր,ytytytytytytytytytytytytytytytytytytytytytytytytytytytytytɶ0O P(0a"^藬^h?9(] \_=+}W#] ͽ%@7kLG-Ďn2I-~A1@Èo^.^KDY) @ߗ%ր6to .|CmV6iX;$~ܠ t [⟏oo#y$ӵs-U\8T13dhֲui!ebb`b2FGd]73\ڬmr v Hr?@ a?R?~ӏ?1@u6.y *kE%t2vPGl9@MhWR"pTg< yg|'`nh3^oLWK 㛛dž"ߔ~l<@> ~h,yI\ƃ 9(;o#>0o_"I)p$CݐU0s9o_4id L,02nB |gףs(9PKm <;X|A$ KIdm&ulpFqXYvqX]Cwk&vMѰppÃ#4>#\'Pj2=.?&r0 uh쉤G?ɨk2N#J<kixjk/-3T[}Pd8'dbj6zW tBrF73!J+8;4ĖKʹN:Dd'l 6CzsJdyAo!|XP^saOIwNu①cB('=@c _Ia/f07G -x`hs> o5KDkd@n!@BA gsZ&zf`mh\yҗ䢒LS@ƅ\י#ZN10A1䌌 P}\x }m:V-&hEvA)Tsi~#G,i"n,ܟZ~4x/V֦H$X̣ˎm=L}zmuw< |@٥RMݲy`P=|6s?xM_]uˠϭXZX,+w!\{gsOo;|RK0$3:Gc[ӵ&EԣG7I$? xq4GRYV؟nsgހ4 =bu?{Wu0 xfq!ր/xC>Ie m%&eO2D*'`j?[> 4?rK=_I?JA9 x@>4gkgڒg۷8fYԾOQ24hcq6 {BO4[/Kԣid.v} <S 'u:-^jAۼHȀl8 @Db P1@(b P1@(b P1@(b P눗'(z(0a"^藬^h?9(] \_=+}W#C[G?Yy?inݛnǵl\x[FEg߫Da1!A~uKC6-4DbNw@JE/;KhַRg2 $zG(ΏmAuK2Ⱥ%v,s$]cg;𭧅5HM5)qm/C@.|/?O?'nto/OC=𞭩jWחQOϿ]> Δ.lɚM7nM\%ך݅6'zY͖<$]h -ZIȀ'tGl|?gH|۳վ_w~hw4x4&6ŏ,I<ހ2uյ;JC# 89"ᯄ.gFIvl8Hp. `{rr!@?tHNaaplwg%%4[k[3@=BZs_hpM{sY 0ܤ`pׄ|5kt}.љ&c%vI=[XZy`ۈ+`7¿6.t@,em Ja#jٸwOgW cC6;( jzW! ެc:` ǸwOgW cC6;(W^5mOGvxFGFlN-(FS0byn~e#4D5{==2KI0\$-/L9G9>$ZkϚlcq"AB:<=ɩZ%ytBP^x w:&3_[Io;])p  6f8 U$9ѴGT,R_:o18b@ۦ:t hz=ua`ɩ69O9; :u 7 x{USҴK{kq$ V^4vWgIaJs6@.AsȠN4'U?' ڠtjD9#LOw>br[Rh;Ks YӴ+{{"!8ʤ^= ݣkF--?v&9c1 r}%5kI_HĐOgtDҢh ";;#95tº( &lݹ߼|1s u}V`5, Oj/, 9 IRF*z(~xGGӴh, # @ o¶^"Q4|sŷoY|[G*+-=Qmvbc vrF'sA᛭BF]Amv!,F$(^4;[{RW @#x?ğ}v8,Ē9 U {%jgٻv1{Pkiq]du)٠jֱ[hWTm[H$7h=tf5ߊ-ѣKCeq J G ɠ + hgLJmli!]>dRK0%'%z~xGGӴh, # @ 5T:2*j~֩4$_/j hTW}kbbU]kgpc9, gJ4y0^"тC*A@9jeς<;yvgAێ} ( ( ( ( ( ( (+]B5P@&@MM Fʣ'@k: .^ ibԛRM&s 4;PZOk)f 4e glemI[SZ*RR\g~iA@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@CudL_ M@P X/P;_}}ch@/P;_}}ch@/P;_}}ch@/P;_}}ch@/P;_}}ch@/P;_}}ch@/P;_}}ch@/P;_}}ch@/P;_}}ch@/P;_}}ch@/P;_}}ch@/P;_}}ch@/P;_}}ch@/P;_}}ch@/P;_}}ch@/P;_}}ch@/P;_}}ch@/P;_}}ch@/P;_}}ch@/P;_}}ch@/P;_}}ch@/P;_}}ch@/P;_}}ch@/P;_}}ch@/P;_}}ch@bmĈzeT ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( V5S'P(~_@?/oߗ[h4yC<Pƀ(~_@?/oߗ[h4yC<Pƀ(~_@?/oߗ[h4yC<Pƀ(~_@?/oߗ[h4yC<Pƀ(~_@?/oߗ[h4yC<Pƀ(~_@?/oߗ[h4yC<Pƀ(~_@?/oߗ[h4yC<Pƀ(~_@?/oߗ[h4yC<Pƀ(~_@?/oߗ[h4yC<Pƀ(~_@?/oߗ[h4yC<Pƀ(~_@?/oߗ[h4yC<Pƀ(~_@?/oߗ[h4yC<Pƀ(~_@?/oߗ[hFWsU! ;(+]+POxwt6mif2~nQ_d<uCYo,tԚ+6Y.6b)ePWip?p9+oMsIX6l:T:њB#ǒ?y!ħe9ZudOŽge=Ϙa1p;7/^%ƹ*^i#$$%Bs&#y. g_gk$fkO3n 9elՅdﶄǧnnb3`[ܽHmD\I'/1Z $$1~\ۙÉA+n`6` |iu'H3 *I8FR>cʇߺ4>kyr%2<~pk_ǡNi$ҴQFJB3>D*2N ?u cNOdװE5wAp6_a(F&bk4?Zroyp `11±P\^\jpF}6 ɔt{p0Cx;@3ڥy}V햩% 7X)3"FƵ|kZ IV#XӅ~Hp1 /|[:YJE_+)ϺH@~d;@+05-?I^]!D{8rҍHṙ*(]Nn7LS9qohyx mo.M!7Gu< ̵յ/]+_-ʾ[MfXb>\H탱IUś 7-ϥ%Kq#*\ cÒ6g`a)Ҁ+xiqw-Vqo `G1&Ӂ38 ;OZ\x6ą7[[E< wK+me%A xXUPL}<] 'UH@.Fڭ xWL[Wx/| fyn#prmKtZlԭ4˫E\n1:n*jz濹VEĀ$*Gٸ {LR[+׊[D) q bT1)ү[k52Q$ feiY}8>joN T}8Kv 0q w*W}7F7h@$"1|L3c$ݥHSg˙5Hv|n$8 ĺ 'ut2kq"p 8Yr0͏ݥHcfy"`+>w@/Ȑ:&bP vv*7Ohϧދvp~f6T>Mk`w6q6.o-)63;nÐ -gq.F ܷ]> lw%;X.O˕7ΟcyPjFi PQ7$ xPR!vKx# d?ynJBS[ߣj*ٮ !Jw^,bGF-Z]y"\La\;|;@,i&L"<9ˬ }P@PrO P@Vo]?V{VgPhЈ|+A17`ďB#Oi$JM>v/q)Oc*V9/kȑa{x Md 6 |'i-fwPx Icf% m5 d%7#ݴ<;眃1Awmwsy}qo.pjUeU*69.ĀW°. GY-嬁d37wm4&I.Ŭ!|-9<3l" 5XgBU027*T^(8'io~wmneLrH$8[q$v P|3wm趚ζ6~tF eb,Hɠ ^K=?NUKkln$+ڣ3'~QpײҒR#%I'۱cX=84N AqU0{}9}*TBUY63mẹɯa)%i 2#}@4^ O՟2sIIr `0!ц$Osi幸[zP2V2 Č`-&okyxi%#O :(31VXM7 HBF[APuԯ5:;I'9\d g ZqݯͦEvo AުaXl [0]$w?yd $+ )ͱ`\1b~bÊ-,ioQ܋U-= Ȓ ٷA+U ƀ+ M-Սim3ida$nw;"9%rX[D[x\Ud X<°:ך̒;\M_64"۳NLXö}l_O~a̒=߁ 𾣦^ޔ ;7"fЂ,df7(n@KڒETm.*?*ZdmFז1['<*^%a1&[J`q3h]'U JNѕ$` "^svŜt3$ (0hPHy>yK&rPmQyO$7ͷ#Xo&2H/TJSK \Owj3r%vWC)B#vWj. .<Kn\Y,&ź V`wRr-h {-KeL-$dnTI^An'4銬\ocd}60T1<°:ך̒;\M_64"۳NLXj:+Q* ~Bp0 g#<נ (?!@ w@|Kiz~i\Xiw$bpFȬ|4LX0v[ɣNK4ybn20Eh܁Sn̳nijQJڅݸS*3K| ?s<2h1Qp OVrh ӮR#XE{[ Z80w f%@8$N#K[{eGœy@@6f$]-^Vm'8&MONE[~{[>c\{=WXm[Q ! f'@>*rxWl)f&aPy`L#d*V_WYKs,[6&9Ld,rxPt<6S3y'Ԍd*[!Nvi0ji i+H5 V챨'%I}xM>y;5ӣi>~ij%PpdSǥpZo5rinm~0lx;;- 1jN{i&B`6ヂC NM꺪>ۭma|V9 ~Hhon m6O&]J a)$,# gX 6R.nQ$ P܍\2V) {;//wڴ<0Ls;cZfHsg[E$n7OvEs?:nv^&m!at{M$6S-u[]BNlṽI0ƱQ[veL ybM6{g<|:T:I8FHHJLG3\ o2nu-M[h_->D.ś:xBRm*4[5̶](Dp &[I%V6fy$?.r0p Cf4}"KFVnap98wtP@P@P@P@P@P@P@P@P@P@P@P@P@P@?B/@ZﭿtZ9{°kj-uo,|Ssvڃ]5H0=R爦n2~XJnp @ _FKG_}ātVXq$!Kwc_-8[n%]lq9aW' 'i}5]Ds Xxmv'vgat֎[V Y]LpYNp &"6ҺvaT* 3`^[ ?q.~#pѳggv:3Vc/ E-ɷ϶|۷!<gj7SN ˵ p08 Lq@4i"uduo'W`Q|*@rO@tMCs+W&)?x[w9FH'Od` D sӷzѼ.%KMA*[푛9,s;q@ xN_Po-rH$m. ۗ7m&n&kÉ"g'+X"SP2e%e\;gf, qj^ii3R0X7 P?Gm??<ɼ߷}3gO\CH>ŶI/LI|G C[7٬f3[h1b@ 1f- ^4닋o'T.a!bW?7$0LxV4*PL$71ym! te9Г%ׅn([t˹j$l߽l'8мӡ$gc90`$oN@ Ko[+Hюyq6/5ky4<%̎2#WsIwZ6Z˓ptu+uFxg$.y#A (e+y%ۅ:<7!f 6 n;B@'վrPNw0D͒[ 6_EysJOk48DU & F uxF[c,YpJ!3@' al"󡶻##˅v ݉[ Y{9y/,munẄ*H*H UtfӟLo?|$38bNy}j"o"`!!s+r8]y!߾~_zm6DG4b͈JI '$N2qz1Oyu҆#E qp `緯4$t ")CЌ# 0lq@E-"+i--)tl># X$bYgܢ%[yutm[Iԣ\Τ>tHq1>PEl+4 vܪb16Ar>:Uu~[Y]ŀw,7ʏx~(yQT/@PG4h w@K񇮕]'b30??zG'޽3w~-W\M*TGր&CE˨Z2զQ+Z\jvdTN0'z***************************************************************+JҠ ([y/WtACxG_ۿqXLc˾9#xkFMJaOmq|_|H}[Y&lz|LVKH i$du&08 -3'ѵo/o|X8|f AsS@x'^w!x]y#Ҵ]Hl,DaQr~Q uw> =VIdxq@;dz_E7.Y-ΑTܓa@+ZoWvh}5-`@ &r<t?2爣 e|N֯ Dzx,Q7b /ԩ=h/}h+nJA$嬜[F8Z=xSMu$XiٹFq?ҰQxLKb ',.:cnjPnjkca4,Kk曶PԒFјۧ /x<[! thUܦ¾"~0kXoDlᝦTv€&|QKjk #M=:|DV1<>ƀ:K֞ԭ,:H/%;Ăr7+9;^4m4L09w %\€-xƒ7[{V].,+qfdPzhCLm[ [ d+_)mPA;d\Pl>,Ʃ?ğX|=4(݂#Jv) x=7ggtn5Ka A]= \4Ol>$|Q%v,vvvED%ᴃ@*`^%-i",.c ?^2hLm[ [ d+_)mPA;d\Pl>,Ʃ?ğX|=4(݂#Jv) x9jZeq{ JAY#eciJÃ)cω.Vt]fym`y Ec]?1ےt|@ leo ꚁ+xЛt_4m L21לP{xY MyHYAI۩8/S3hyۏqzx,.IzYt Hgl2I'g gXjWmI+Z*YeV6Ϭh-&ͧC-ĬTW'1~7>xO6BieI$mzZJoqyܥ+%tfY#B0AҀ75B-Kp7)nFvmROP1@(b P1@(b P1@(b P1@(b P1@(b P1@(b P1@(b P1@(;?jPP@O~0ҿ Ufgs?ۏcLcDž#yM6o{.K_w඾}% wm[f~^ڀ#/ 'T+<UP܍{h NմO^բPǦA,I۩rW#Ҁ4<_E[Nj.u]RZIgmmq|.rg~K)ۻi?k4$?4atwt5}fJ0#!F6vd  L-'çZe.MՖS/ a@|9} ˝zMF{An-gymq,Ϸ +M\(a$Rv ր9O %M+p׈ ~з!V9#Pu}VL׮uvD rS@>_\4__ $fl0wP/񑿾7־&$"/, H ݠ |=-OFkj7nP@` (KZ;" ]BVDf(g@uRfM3XNt!8/;Rz!>X_Ldalry4?jU槯]jhc $mԀ9+ˑ A@;yo}<C|!c}e/ݺFn^߅kڼ֏_xWsOf,c(*IQۭ\оz/-Kqf{to΀)h NմO^բPǦA,I۩rW#Ҁ 7w'_7?*?fg&V۹bKe,&6<ϵk|CI.$MCO6 @X'{oRnFk#(94÷^\isA{΃ay1?EżS?h_ٷxxŴ 4KIܢ 6 c VUγ=Ϳ|AdIQ\;P .#b a 2.@gsozj:ykZT:;xI€GBsg /|l/fG 3Ѷ n?_|PռiBmg~t@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@oR4 w@K񇮕]'b30??{zgP@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@(J ( }mNNb][4al%u-g1iWB\Ԥ"&?% '@&?% 17/PO€ M?2~Kbo_̟~d('@&?% 17/PO€ M?2~Kbo_̟~d('@&?% 17/PO€ M?2~Kbo_̟~d('@&?% 17/PO€ M?2~Kbo_̟~d('@&?% 17/PO€ M?2~Kbo_̟~d('@&?% 17/PO€ M?2~Kbo_̟~d('@&?% 17/PO€ M?2~Kbo_̟~d('@&?% 17/PO€ M?2~Kbo_̟~d('@&?% 17/PO€ M?2~Kbo_̟~d('@&?% 17/PO€ M?2~Kbo_̟~d('@&?% 17/PO€ M?2~Kbo_̟~d('@&?% 17/PO€ M?2~Kbo_̟~d('@&?% l*Q'(P@OP@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@G/D @PkejmSΖX̃9zTsǛU5ޯEʳ( ( ( ( ( ( ( ( ( (12X$}inf21'wbq5ak:(aRt֑M$g8P@P@P@P@P@P@P@P@P@P@P@P@P@P@PrO P@Vo]?V \j[bY 7:GqW5ݫO :Szhqt:ݳ/+LY)Ik F*9ME,Fp^kK>Nмvjk|;2ѫg* lpFD[Y"kDv # Fܒ>f^ :ĿKAiJ48 gyvt>'mFѠQM`AN14{^0A3l.akt."!ruvtP@P@P@P@P@P@P@P@BY$H`3ȶ0R/Om- )2Sv]l~f6 -2BI}.$*QȠʗ7K?6H7'894@P@P@P@P@P@P@P@P@P@P@P@P@PrO P@Vo]?V@}mAt{x5]AzV nzG[W3^[k+v-Gb9C)t&H#Mo>[cf̩qs?4\] Dq;FWf Gjtf{,Pǁ =NO4@P@P@P@P@P@P@P@P@cqBz@|xMPaȲZGJPuiz̗%Ŭi僚[7C"ou&D1UN|קwt;QMupcƒ"ԡ6@ (9z{@/ à(Hu c`+Hc_M- 4@P@P@P@P@P@P@P@P@P@P@P@P@P@?B/@ZﭿtZ"x$ǣOhEN1F[ '#{{-quhI:4 t\adooa.0q7}Mi8Y~n4c?_S@EN1F[ '#{{-quhI:4 t\adooa.0q7}Mi8Y~n4c?_S@EN1F[ '#{{-quhI:4 t\adooa.0q7}Mi8Y~n4c?_S@EN1F[ '#{{-quhI:4 t\adooa.0q7}Mi8Y~n4c?_S@EN1F[ '#{{-quhI:4 t\adooa.0q7}Mi8Y~+iLl,1c9៿S@.0q7}Mi8Y~n4c?_S@EN1F[ '#{{-quhI:4 t\adooa.0q7}Mi8Y~n4c?_S@EN1F[ '#{{-quhI:4 t\adooa.0q7}Mi8Y~n4c?_S@EN1F[ '#{{-quhI:4 t\adooa.0q7}Mi8Y~n4c?_S@EN1F[ '#{{-quhI:4 t\adooa.0q7}Mi8Y~n4c?_S@EN1F[ '#{{-quhI:4 t\adooa.0q7}Mi8Y~n4c?_S@EN1F[ '#{{-quhI:4 t\adooa.0q7}Mi8Y~n4c?_S@EN1F[ '#{{-quhI:4 t\adooa.0q7}Mi8Y~n4c?_S@ /D @Pkejmf^:uW%yY~V߷M@:q'iA&o$7*2l, ]̼u"&T+.Y0>R?;*݀httW]cx;wƯ q8#@G˦KŭX> lnPč~e=ǭGHҴM{ ]@ʥcD19cRSNKy.ϕkop1b(bH( u(-n7yompE*FzH# B IM+Tg{gS|g>g?.6\t>]|MI-{ OtqʭEr_8=l%ƿC˭z s%,~R:|A˨MK M;GzьĿz@̥G~r2>- 2R ']Q0y$Vݠ<]m(mƺt?m!F GIS4f;c!@w*IFVX}ABMWNSL5 |v2]y&rGUӵ {+k[ep̮жH~Sx>3[2[ɩ[ZIgi]*$Zd P[O ]a!Va+"5/4fhw~vpE["2bJQYUe\˂@2,| [%ş}LM-@&WyZbKV]H_\Yiy9'L$w(ATrΎ>P8#~4pXiyvX#ސ y;"~H(@,i4ѣ[XKi s]ۣRep!WŹTaeg87 *27! `|;vu^x ; =܀t!j5[@[r#fFS$!*D,<"1ߗ%2`KXԵwBPs[E/-Be }VP+P,~ ͶIcEI`[zPu]FV{[4_9dg8k4<0P 0 i{i]z[m&SH,;Bl8bxI=@02QKӰIh&mYHwaцUbP' w2YI;8PN$,@ Y]\˫XY]cLKPYM"FҴd2s4˺y{Umǣk:G-HQ..d1L>[f@nRm^H[Hmd]ۣvrXFUgcđI=H( ( ( ( ( ( ( ( ( ( ( ( (#DЅ_ ([DU''G@ V3c9z.1g:|D{i.K* #ml"u{ XbkZi:q;ۨMqx2PY(ZxhWvsMyXXɒ~Epx!;wW\ڪ.`7Dd0C-x4_Q4w* dHp^,[?{w4&-"L2hRv1/uikia|eE՛ԟ-bolr/B.l_b i>\Żt0el#)qH1"^Cl%4XBca/&@x-cͿ)rb7GdQMӃ +UMR)浸ɞm}][~ _ ( ( ( ( ( n?ZΥ#Km$dw82@=%߉n|32[D˧ںyDT]! %ώ4nIk[)q3 < 7~HRѫ 9V0it{=68.g WM9 OJ$IoRp $ދ}fa7"Y!Vb;;`s"ćN Z ZMhlgBlFXX,{Cucj3\Yidr0!QDK$-G[\ґ&-T\HB&!/ `(;/ݧk-{qȂN6#)s('WprF84R6bR/-+ *09yS>Rh4'ůxQY52 (! @,KkHgH]*6@$WIZ7[ɐ|J9M \,(1Qt$ö%Wrz-A\܉d[͈<]̋2;x'+$z0Vt(.sp]Z(:72@@^|@awbl@'ʵżqϘ!,`0/.&kY㳂4 $vnݰ3HY m532}ECȎhdr2t Y]Y`ݶ.82XdKYR[(`gFwpÅ\Xk>&6X(a O4R!`$2uh]͝Kc'Ke H8a3|SxݚZq~RcoQ03EězVSkqm/=wU%K)ʺP@@P@P@PrO P@Vo]?V RLe/FES}{wxbæbx:ȹ{)s.(Ӽ3mkLPLP,TB IP 2YƪH1)jY2@v 1ku@߷%(BҎPx]y>sCoȕ$9P&HYß*orSqR+xvPdK$Fi ercӔM X>hUj0B[bo]ԯnW q#upBo(SX$_Nk vKۛ], 1Q8U@3騅Ηhh]t)0$L䃸@KMB /.Xˇ_Hc'U PGRA$<l4 t% ܠfBl0,ĀG,#[d{b7d8A @,^$gCeu\D^qu ^_ܬ:\OET"EP]l v"G,oC_glЛ[vt nH"n_s`0,Ā[v$W[CW_.1*P[Trd`fPLq17 H @ >X:Tԣ$K hXEE(A(-LKlpo#IRKYŶ J ԯ܌ ty`T*ܤ0 4.K6GeGh%i$$IgRЫ%U :\Cx-&[-!I‡ls-]$ӡXٜMo*6f'qsbjH oinDM 3>Tֺxl ,' ] i7l2yhBk`naHemB RDI dF81 }O^0cK=6`ԯ142[ɘ@ۋ}˔ ` ;R🝢k[]5-ܙzC26@Oo;Hu+}A..mW1ʉ8*;\12_IV;4(VR4Ԕ!*@=,u[yL[B9%ۅ.k1P[0@#_IskWu:O5,'eDLe.X0PYtT&vCMz,A;JXu+sg0[]%J@ٴxuX_iaZy$jvf.;H>\fBxדNMbSfq5VF:%=+Hm]atH"K(@졐 /I-5+C;Hn|@gVIv*JHBĀ@ ;{~"y"})@l%SJLJk p#1 FNe%MVVbH<rZYsOa<Bö:I1Er2ahF9\1>5l'HX s[]\rB 6ﻐCM d3@?m$&5| 7=ݟqzm{[^E MPFܤ(T*]xL&KO6yV E wy$?t$ ܗjOV2 TMXLFsn ]u+\HcCpgG?.A0(VQqx"5G+?)lv@-cX )0 rͅI vzt6WZLxtk4n ( ( (?!@ w@;l1#\Aө^:{dq ԯ=} \Aө^:{dq ԯ=} \Aө^:{dq ԯ=} \Aө^:{dq ԯ=} \Aө^:{dL1exP+:u+OslW8GtW>q ԯ=} \Aө^:{dq ԯ=} \Aө^:{dq ԯ=} \Aө^:{dq ԯ=} \Aө^:{dq ԯ=} \Aө^:{dq ԯ=} \Aө^:{dq ԯ=} \Aө^:{dq ԯ=}O P@Vo]?V@P@P@P@P@P@P@P@P@P@V? ' TP@P@P@P@P@P@P@P@P@P@P@P@P@P@P@?B/@ZﭿtZ@/u=;U٦7X#|p+8G~ )q9Ⱥ5}6J3IarfVYR9w-^KfRN:*@a`L.Dn@R=,yxQ3aP'o6Lrd~A 60 ;TErwy [2 QK[ɕBOV>{i-t$ViIS#pɸa]xHJ2頌Kp*tcϨ;ar #Wn|eU&W`QP[(ۂ_Jsgin-dV%hVNe(S tƕcjЋDًD <|3qS&2`mIe qkphƒE}\]y@GPˬ+-eJ ,m,"r9`U0`@0txÚ:lhڅě:I Ds&$%`[񗈠{jZũy^T$N0wsjz-P@P@P@P@P@P@UB? 5kuFQ+AwuE TYXr:okŮZk" !#F ooIRN鳽Zemq[$.%݀RYMŚ ҚRmA#Lf% ێJc;JmHvrv[o7o드-p YBrX=(<ͥ%4 )1H͹N>V-#y="K# 2(eI6\iL]<*xTql#+}O-lmI8+oQ8c%y$ iZtZϨB#hTʋ>f=ϭW_hhH-K/j1n%8N@9PҴGGduL*AYXw=hP@P@P@P@P@P@UB? iK{X%RF]HPhzB CK*M "(Tp1*PG JC#M..m"̰(xcq\08.Mh֒volG B)CQ1mRI>I*]H H30pqH=r{C$}.ͮn0L)y q\0xPzFeivv>n<ϳ@oqg? P@P@P@P@P@P@P@P@P@P@P@P@P@G/D @PkejĄw<L p1c=3Ϸn3,gqcӐ-e#>_zṟgN@38{1c2zgo=9 fXL3ǧ [F} p1c=3Ϸn3,gqcӐ-e#>_zṟgN@38{1c2zgo=9 fXL3ǧ [F} p1c=3Ϸn3,gqcӐ-e#>_zṟgN@38{1c2zgo=9 fXL3ǧ [F} p1c=3Ϸn3,gqcӐ-e#>_zṟgN@38{1c2zgo=9 fXL3ǧ [F} p1c=3Ϸn3,gqcӐ-e#>_zṟgN@38{1c2zgo=9 fXL3ǧ F$Иn]LY;x?3z-e#>_zṟgN@38{1c2zgo=9 fXL3ǧ [F} p1c=3Ϸn3,gqcӐ-e#>_zṟgN@38{1c2zgo=9 fXL3ǧ [F} p1c=3Ϸn3,gqcӐ-e#>_zṟgN@38{1c2zgo=9 fXL3ǧ [F} p1c=3Ϸn3,gqcӐ-e#>_zṟgN@38{1c2zgo=9 fXL3ǧ [F} p1c=3Ϸn3,gqcӐ-e#>_zṟgN@38{1c2zgo=9 fXL3ǧ [F} p1c=3Ϸn3,gqcӐ-e#>_zṟgN@38{1c2zgo=9 fXL3ǧ [F} p1c=3Ϸn3,gqcӐ-e#>_zṟgN@38{1c2zgo=9 fXL3ǧ [F} p1c=3Ϸn3,gqcӐ-e#>_zṟgN@38{1?B/@ZﭿtZ@kYP̊цXlc@ZʗPwx;,_('@HeKZ;}@DRa/`MX..%H`K#UE$z;gnݥA3:XneR;Yr}ǭ T2FRU؃@ko%ĩ )y$v dO@z'..%H`K#UE$z;O##[R7~~߿}:'ԭi3h$8- B+Tžm.xDnU,kpN@yTc $YUi}jd<H 6>'º1Z f$6fα|# Xn9-p K|IinGCeq@'9 H"?^x?P-:}1[g+FV Llr@;oL׷cv8o&De=3C@vՍaGHxU]a oށ O֨5lH'E\!ؼ f[dUv};C{ )h$Yi"8RQgevL7͔"D4[kCU! $Y([ Upnn.R)$=m^<F6|Ē#p@ ( ( ( ( ( ( ( Rzti9 }s1 ;P/u7)uW;`nny f_v߃Pj/f u[у$#^~zn\$Vqܬ"8`Clt1( ( ( ( ( ( ( ( ( ( ( ( (9z'tOP(+]+Ph ( ( ( ( ( ( ( ( ( '17 TP@P@P@P@P@P@P@P@P@P@P@P@P@P@P@?B/@ZﭿtZ"x$ǣOhEN1F[ '#{{-quhI:4 t\adooa.0q7}Mi8Y~n4c?_S@EN1F[ '#{{-quhI:4 t\adooa.0q7}Mi8Y~n4c?_S@EN1F[ '#{{-quhI:4 t\adooa.0q7}Mi8Y~n4c?_S@EN1F[ '#{{-quhI:4 t\adooa.0q7}Mi8Y~n4c?_S@EN1F[ '#{{-quhI:4 t\adooa.0q7}Mi8Y~ 5Й2Xbs?~'I:4 t\adooa.0q7}Mi8Y~n4c?_S@EN1F[ '#{{-quhI:4 t\adooa.0q7}Mi8Y~n4c?_S@EN1F[ '#{{-quhI:4 t\adooa.0q7}Mi8Y~n4c?_S@EN1F[ '#{{-quhI:4 t\adooa.0q7}Mi8Y~n4c?_S@EN1F[ '#{{-quhI:4 t\adooa.0q7}Mi8Y~n4c?_S@EN1F[ '#{{-quhI:4 t\adooa.0q7}Mi8Y~n4c?_S@EN1F[ '#{{-quhI:4 t\adooa.0q7}Mi8Y~n4c?_S@EN1F[ '#{{-quhI:4 t\adooa.0q7}M,'(P@O{X^feZ0[~r67WOg/YGټkHsɰ%w2C@!4 RH3NdÄHU1P#% g,FY ۄӮ/ R~cW H v0&}CΛQX8|~ 8kD?auK4~>ɺuh1grQ@gt]ZG2c<[P@Y͝28 #rb_xvmMw3] cUSJy.e`n_k9UTf䏻@ -[.bUIE@& ĂQ;#ya-fC2\@ʅn zPkw$.x#H #|s0VSހ4 ( ( ( ( (+'17kۜp]x(mť3iVזw!bU]tq@7٠ ekiq.!Ռ$yA2Gb=F@#ԵcEamjW-< ;}v7MI:!Ks-q%SqP]rǁ:wX o5cv($r.rP[0@#$q[AX\qAxJd Mm%nbiP2,$܁J8꫕@ [[ohmnZ{ C4v!|U o# 4}/ug%唒D[URŗp88yM6yNgyid`[c\3U!/wAw{ /Ol,'L֒*I4C))ϕ'~36f/h[ ɭsq/oY0-Jftr@P@P@P@P@P@P@P@P@P@P@PrO P@Vo]?VCNɶ(t$;&0sH<iR0x2kZdTFbK,p*dV!I^x^JgP |<]Ew׭* ݩ%zu--f[Km6h aouȐi 5~ۃmP x7WXݞ~swqwCwoϔnA ='ڌ>*}zF 9diljbI!pX f$A&=kmy0M8m`9MrWO6bФӽY;pҮn虈}I < j٭ %;nX7(L3H[trL Q28y^ ( ( ( ( ( (Nz@iv-}J{6a"Vrh#NfhzRM` K9mn v:-kJ;"-ί%ʀ>}U9e۷#vHu<[5Ѡ2X-dˀY-iP jmjཾNy 2KeG+(^RD7j9|1?_sS燵;6$# bh|݈:ocD?./;#+$2'+H/Ҽ̡В[b-%gG(`)@:>C>dY|@Y VQ-nT5LJEHJ4@K u[]>]CNЃByJ+(j_-o5=kdžKʂHa*y[,Hs$.ojNa)'\F^8㌠o2bd@@'<` ^&m-J'Y[× +`"7msOc>Padǂ8A[;U {_j0C6gyΜ*?{OϚ)ar(i:H}JkWyo#Fh5 $ 1iUx-P _Z;4=J}GmDNiB#k7#IЯyΪ5Gh$02Iؿ@I#/[;˯[ Ȭhf1 $ Py$nXq YClRAG:Cwif'̀ mCWӵ yTٵ1[%yvWk|df9wRm=>!L+I2H)HlP ~ ᶖ;;c̩g qD4TE#` ( Kz~g+zG[¨oݎ<^Y剢)ʹҀ <+ͦ yu&b,'O-\ x? E[߭[n+1ef*x]H P@P@P@P@P@P@WO O\o@(#N3eص;џ/r09[FT2$UPĀrIX&[kB]N\嬂,8 Tcrru;[֯XE  c|I|;s76@6 ( ( ( ( ( ( ( ( ( ( ^]B~ ( }m)F͞r=O h?:㧿@+:u+OslW8GtW>q ԯ=} \Aө^:{dq ԯ=} \Aө^:{dq ԯ=} \Aө^:{dq ԯ=} \Aө^:{dq ԯ=} \Aө^:{dq ԯ=} \Aө^:{dq ԯ=} \Aө^:{dq ԯ=} \Aө^:{dq ԯ=} \Aө^:{dq ԯ=} \Aө^:{dq ԯ=} \Aө^:{dq ԯ=} \Aө^:{dBI"3"$Zԣ>s/< QB-/<6 ~uNS3^  vTfԞ6w7ZdM0!{I"%y+ >BI"0t+mco5bӌ;!l.INJ!9":[:5yy54R˽._x6vWH6YgB:9_i"bL8x5&ЬԠQ-"GDQ1q|>*-5M.m-i=prZWg}L .83 |uնSH[)J e cwOj/4n%Gf6+wH _,N4Chivq,RB F@1@$t8+XhΙyYʾ]Ml `Ѥ#.z6nϘ"Ն6A@Ú%.`ŋڨL[;N>SF9bNslَX AX>2inlϘ#O,.=`=d-ׄO6执̋cPKin>6&Qz 4="9ZTF PLZ49SP{Oguf\4v [h  $Ҵu89,-PvGrЩ |{ZϼڍwQG;ؤ[*'F@fb:iy{ma_*V1$mۜz1=Nh:V>6+ 0v8ch?@/sy[G-s;o .6@,y:և_iz]Ŕ|y`V< Fjmk eY1E۵ϫ m J'KIDγ@@CG-\ PiZu輞[gKWq`ր m+N{[ h&HUfg*\%.O}=[ (Boͨm?2Los㪜`H 𗃤[ODA9 HgȪɀѠgf *Z0kYe\æ}l?J<"@! ܍P@P@P@P@P@P@P@P@P@P@P@P@P@PrO P@Vo]?V+m"MVna`C`m #/\etRH5+.&6C3F-HS1+,s8@~}j ]J).(/n{+<o* U`m]xGM6-/4LpAh` ǃ.XӦm Z2+bU28f4<~גiO}bgIcIYJp- -'y..ㄧt$K$唔U 9MgXhuO+%8?PFq@..4}Eyay'11!&09 Kx sqi(f"66τʅ8 avƣ (kVQOw6Lu $n-coT=ndФQi3I6ssy M \@eĠM"IosUh&縒u Xh % w_=Ʒ"[KsYTt$E/!2_Mq,-;Sm%m<:3BdsoB?o|֣|NFr2RIWi n"a#/63A;W*0\nx.嬖Z~Zb Hs O7.QIF2+J7ڀrIǔB 4CYoOqoeobӃ^*tpa o,!03(k {bNnd6Ih7CoXT:\glHU{''}ƯsO4"mt20PL]7o݀@ V ޟy6o%ӱ6K%%HO;, dw+C1yhX.)*l(FI`09"Ʊy~wdL5?9rVdī?,j ºDf,E(xe!-(1  j˻OIC˥oH2OK;ߒoW]jH.;"[lF 2 ( (?IڀR{KXnf:6FA(#Э_MGm"hŗ|;ݥ݆ǝAi:`# z( ( ( ( ( ( ( ( ( ( ( ( ( (?!@ w@  ( ( ( ( ( ( ( ( ( (6  ( ( ( ( ( ( ( ( ( ( ( ( ( (#DЅ_ ([DG!V##8@ A1cHq#0cZۮ1cq# [u c1$~CҀkncA1ďzP-m1c8?JF1a?!@\b1 G=(A1cHq#0cZۮ1cq# [u c1$~CҀkncA1ďzP-m1c8?JF1a?!@\b1 G=(A1cHq#0cZۮ1cq# [u c1$~CҀkncA1ďzP-m1c8?JF1a?!@\b1 G=(A1cHq#0cZۮ1cq# [u c1$~CҀkncA1ďzP-m1c8?JF1a?!@\b1 G=(A1cHq#0cZۮ1cq# [u c1$~CҀkncA1ďzP-m1c8?JF1a?!@(GPEF1a?!@\b1 G=(A1cHq#0cZۮ1cq# [u c1$~CҀkncA1ďzP-m1c8?JF1a?!@\b1 G=(A1cHq#0cZۮ1cq# [u c1$~CҀkncA1ďzP-m1c8?JF1a?!@\b1 G=(A1cHq#0cZۮ1cq# [u c1$~CҀkncA1ďzP-m1c8?JF1a?!@\b1 G=(A1cHq#0cZۮ1cq# [u c1$~CҀkncA1ďzP-m1c8?JF1a?!@\b1 G=(A1cHq#0cZۮ1cq# [u c1$~CҀkncA1ďzP-m1c8?JF1a?!@\b1 G=(A1cHq#0cZۮ1cq# [u c1$~CҀkncA1ďzP-m1c8?JF1a?!@\b1 G=(A1cHq#0cZۮ1cq# [u c1$~CҀkncA1ďzP-m1c8?JF1a?!@\b1 G=(A1cH,'(P@OP@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@G/D @PK%&U33PKAAOEBPS/img/careporthome2.jpgJFIF``LEAD Technologies Inc. V1.01    "!#(3+#&0&,=-0569:9"+?C>8C3897 7$$77777777777777777777777777777777777777777777777777  }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyzw!1AQaq"2B #3Rbr $4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyzK; ?F+$pv@ oO@a€M?mߦ >4M}i~(l?7PoO@a€M?mߦ >4M}i~(l?7PoO@a€M?mߦ >4M}i~(l?7PoO@a€M?mߦ >4M}i~(l?7PoO@a€M?mߦ >4M}i~(l?7PoO@a€M?mߦ >4M}i~(l?7PoO@a€M?mߦ >4M}i~(l?7PoO@a€M?mߦ >4M}i~(l?7PoO@a€M?mߦ >4M}i~(l?7PoO@a€M?mߦ >4M}i~(l?7PoO@a€M?mߦ >4M}i~(l?7PoO@a€M?mߦ >4M}i~(l?7PoO@a€M?N2R<;@PP@P@P@P@P@P@C<ȠbY XA@׋,cO_]̈P"F n>?=Jy]\E "ilSc֟jW0y^qo]=3]W֚]]Cum&vMѰppGG@( ( ߍ^sȧByr6ql0;+MJ..;&@88## ^RK nɠ:6(Cdu֬ _1KV)'?1<";G,#5-:0.9U'E.iZ»izpu/i8,|OR[iwpFDP]$Gj3,hTdp :Ia{ovvA*А}W~u * O2C=X9 P).POR_v2_ZOwqi 2\mIx 9\Fz(hd8z`x-I`C$l]H ^Uӯw[v)1eqx#u -Rn.ؐ%A":8 7*vks75h둑NGƀu}]u %Ei99( ZU#6+OhnÌ\GSm;J;%ͭEYO'vH*ʫj;#RRo]MGtKdqiTHG\縭$@^]6| ^l<D\c,P@fO=Kj"I#ܢJLd=hĚ%j.eL䏕c@i!5yZ-3XY-RB M1|ONf]!8#ՠ 4\ ĉր-{M6ﮡ@8' P+cK%+JIXy O?J/?l#gonxL(nmW =I< -nm9nI"p \Lq R̲]+`\g.3s@#{5 ٕwRF 3'Ͻ[uڡo}gonxL+h0C=޹>tm8mqt vsgqż),NXz845P@>=o@gǬ?@@P@P@P@P@P@CSI*[!d))ߜgM645uoKm }^}yegm<SSrIiaG4imY6w2 IDv8`>D<3kuԂvampf4R;HȠU?֖Jܬx/*?xa@7sQ.fm3GKW(T2s o:QmR ]A&ٔ1 WLuD?K&[}ss-[Sx.'Lhd{xd:a+JI + 5CTբa՟OX(#VCol8z܌1$hs6Prj]2ym! b㜎fsk=L/."xLqWW<#@|K%y5ihė0ū@d#-"(Qn?EhjFF0L~s$dh&q|0'|*ր9o-~u%%Ξ[`YkZ ggns3@KhgﭭhcY.xm~-JXQeh$r`1שxoQ OuoVхiEl&?.H'Z9T kmy:KLU_2`+W7uƟ/]hoˋY٣PB@Մ0WٶKkxDʾIf;c8|QxOR,@%V®0-玀/=KS:qmw-o6gU?))Qxcx dv[4%oBLr/;o@~"XC}loe<ʩ!P!p7cs@=2A{L=VPI+?" @ah5'_Bl~x}7S ^^??'f68ߌ{l ^_^=ʾ<ϴ4pq&;#9RIimKcsy0`J$q ֍3PKoSdlV'GC@$7P 2~0 8+ҕUʝeX T[[b7i(l۷>=jpc}osl6p|}kV>'7~ӷo>stSg`9cbsy덧h!|g5G Mmm[sӠs`O}xi Kn3011ӵC߷ex}|+qphZ"s!uY:cC#!Գ ZRHlA\dPk6)!o6$g2C Z9T kmy:KLU_2`ԬԴ 1\Ex\ᔃ}uO^}ՙpOh0?L/7OׯTn¾8FI\uQ0#66gQڊ|9JȻssv(ރak9줖aU(.B8p5:լSwacڨ89#ƀ1k_un澰6B4W䍼p' ǠԼk{6[3F 5{[-W{9#eKs;+&$Xzp2z@a5:dnlqk[O;A`ԚSauf&3) (PcZ^R^Q4ĺ%e!DS9||{y>eqg$~LngedDRNT^h w,"oBLro1U;bA'&8@>r 8GPH.$׮̒C$1<A<ɠO$xIlpo:؉Fp Fryuiu͵ so U݃j<{g|QeXs\QH# '4kTSW=R5 ľB0~:Ҙg]fO/>\o0~v`NIh (_(2dl`qG\gg^z{2-8Beq[qy?18= ~cqo!z篿Ǿ+C+_a|WżW 3y3Я=}=\gg^z{2-8Beq[qy?18= ~cqo!z篿Ǿ+C+_a|WżW 3y3Я=}=\gg^z{2-8Beq[qy?18= ~cqo!z篿Ǿ+C+_a|WżW 3y3Я=}=ZFE_嘐27}+C+_a|TXrxot A"Km b?1G{lQr3|Ib<\~nxݜ㎞Aivd6ow˂5wgvgp|#hQ҆t fӐD^VrO ӯ=:ܥ9D*.x:sY[開ia-Y $'eX4hŐ[|߳|RAٍEÏu/MђDH,X[Ca=qA|AcI7:o.*$6#20yǾ4##Zvß~G)iZmVz$Z>CA1?^89|-5YӨYL1FP "D-xcH" 8uz7fmwl4>E۴;6w3 =r3E [YEC * 8=VKKѠkPc2<7^ߨsiw_mFo?6|6gf`c=2:sFҬm+2[K(|[ dx(U@p:{c+C+_a|Gpso-Fx$VG2A#qأٺoR"GP01- Gb,1FV9lIQZZVNI+$iz@ hܗw4ְIs=hzj>oImHJqF>WżW 3y3Я=}=\gg^z{2-8Bkyn/+ȼr}=d8= ~cӬRhнչ1Fel~kqzoF)_8"o#7g8~cΑB87A37^G=p[jN[[uz(%vwa-ry iofKh띬8R;naet&s8=i2-⾏|dO@ߓp{khKk=?ȷa"QǾ*#Kƅnqro8>g>nziO 谉G(FϝNx-3#E.^kg>\[e~Ǿڔ^['V!!s>}peq[qy?1 Vn=Yh۴䴦C!$[iZmlH c1 !4m-#ǩ-VZ{<_gl 9aюTQ KikzZ * iq[I6GiDv?Q4:+ 3K,1'_O#84n'i kg⍙$$ FҴ4f[Ab@7c8}p=mm;J$5=~YD^Dʳ6^O{Qym-Շ Jr*2 vtZcBY?*=k ct6Vv7Lq]8WOA{veXimmvC" $mƠu)~<Iٻ9ې:d|Rwpj($&U,Ib,@'#=~8mȷm(T A|Leq[qy?18= ~cqo!z篿Ǿ+C+_a|91O@Yǿ #@( oZ( ( ( ( ( (*͏v?-P@P@P]C=E-P@4sH|RǙi]3g4ZkE,m43dn%nyᵷT;TP2I'Tu#YK;+g٧Yvg8q(9'$m0=N= ặT TҀ*jZ摢_ں/3[qG(uoż,x䍃+ހ$+>;<ٿf?\sҀ,P@dqBJ@P@P@P P}zT-P@P@P@P@P@P@nj25 tjKԮR%T1/X!&G@rQg# XUӯQ^᠄lъm>Z8ː fi̎UʤtI(d ր+ y\K4lb_)BL9F@+x@Su`M"{Xʤn A^[fYq@ASR/ig `wg= |G_6`,Ysr[*F!2> wn ǩGCmm,AK1%mȢS1c]^4cq E-b8 r@}>oO^VT/kI4Dg~r@n@25unm}Z-I癮{ɤ@d$H[ir;@I#l[} g[:},ol *~Km"կ{ vw+jJ#HbI@RO?+~h䚮%j.eL䏕c@dY\-ΣxWk{SdL''lHޘvfnCk3ysN|v94^iM7r[kFFDI$VB6mr) 9tPԣkdKtNa 6$OłhQ]-ΫgYFm`VT+}޾+]hˬK$$f6ivYPCmcI9]BO (fk>77p[I2"*fr'[kr\[Y]:Xjw ]4APO;Q' ;oizEgMf,/1A~?@qЏ\&wY3>33[:JWNxVsr)*q00rs So9/4hi#xV$11vO+`Ig?.6\t>iŦc2;iV3*RM$rd^~Z@F,P@PP@P@P@P@P@P@U[|Gj7<mHIn峸b~cѫ6`6%`S:,gj-ԱO{s0*D10d`aP3k-e|nL~lj9Q sFM-ܶwOc5f l c[^א݉Dk% ULjLr2' ,Ac{g=ʹ2Tk\Y@/H'@}uwmv w77(ki4o:PYX0P$\<O ^' dv<6I NC[OiOK`Pf80A`W-H<'Ehmkn$(S6mFRv6}ܠ]ы@ _@K[B[hy6r;T*3pS> 65Gf`Yb tʍȸcKXO2[qIsndR`9 %u&oyj q, 2G$DyxYޗi̶42*w(\PY?-o\dВ-Pg e"yg, TxwZx¶񉸖?&tf;b2Wz&UeӼ VS6/xM++NŎΔ&;>[6=}Bo8HJGm e𾣥j $Ry *2yct@s GVn,FI e[9+| 22 24 k6dl[}9 fuwfSoF6~Ll p6h-4{B<ʷM&p@++xs N?ʚ)~B>7 &Əw65Y&|ovLr[r6[݅@F,P@PP@P@P@P@P@P@U[( ( ( {'vF-Z (h7wi/m1]$nRFA8`&Ŷ5c²ŽIc%V1 `snK*>/5:Ŧ=G$*@ R(;ݷ ǁ}+A9{8Kb#$*qlc?׎@;*( o?&-P@P@P@P@m?j ( ( (1O@ ĹѯIԒ/X={5T,6Q_N߽2Mauĥ8l%ʯ *<06>\H<'|%]5cV\`$w(~b@?ic<4? ͢kw|v# 2ۺpF9GJ*!k'j ( ( (ǿ #@( L-U6;}|P\ (\fCϧ kE}-p3=q>qg3!~gӐ"d>OrQ̇N@83}?3ZgFz2o}9 \ (\fCϧ kE}-p3=q>qg3!~gӐ"d>OrQ̇N@83}?3ZgFz2o}9 \ (\fCϧ kE}-p3=q>qg3!~gӐ"d>OrQ̇N@83}?3ZgFz2o}9t}1q9=k3cq!C׀518{}!H} qbt$>_z1F:goo=x\q38Qć^f(LCk3cq!C׀518{}!H}\}syb]9\ (\fCϧ kE}-p3=q>qg3!~gӐ"d>OrQ̇N@83}?3ZgFz2o}9 \ (\fCϧ kE}-p3=q>VԌٗƁ|90Ord518{}!H} qbt$>_z1F:goo=x\q38Qć^f(LCk3cq!C׀518{}!H} qbt$>_z1F:goo=x\q38Qć^*ڵǟ{Ϛ2<^:z>Z-p3=q>qg3!~gӐ"d>OrQ̇N@83}?3ZgFz2o}9 \ (\fCϧ kE}-p3=q>qg3!~gӐ"d>OrY 4S~s{zdd518{}!H} qbt$>_z1F:goo=x\q38Qć^f(LCk3cq!C׀518{}!H} qbt$>_zVFҷ>T{8?=xs@\ (\fCϧ kE}-p3=q>qg3!~gӐ"d>OrQ̇N@83}?3ZgFz2o}9 \ (\fCϧ kE}-p3=q>9 P;}1@Yǿ #@( oZ( ( ( ( ( (*͏v?-P@P@P]C=E-P@wt5 N`y,BŽI4s*O݇4R[``n I$֑cy<Ơn&8H?18mk xS%0]sǦ ٠ *hP@P@P@V>oi@ ( (*![j ( ;(ɩ^31üqce"xau๑@Bq)L~S34$uO&E@1"db TnirٳIG:ɏq=hPY?+o\dВ-P@P@P@/hm?K@P@P@P@P@P@P[EZ (񷌭˨Kg=܊( pʿ3u4S\jA-L>{mM4o_?쏵ywڶn۳ws9ozмPPho$,`pFN3@ P]C=E-P@>]W:ŕ"k짎$ F0O9}Va,-=!2B'AOL@j 5(]6Y`{5.;F6s@|˻2Df)+K-yTn\4,$YoRYz4F?( TP@ VVsXEm#Rh8x(EΗytlm2v`ϵ>/+t-,/n,M$ۓd _+ Ytۈ uWnb8 >('#ow]Kma3FNJؚ ( }]J@P$|}`*њx澚@Qv& d7xs@FM,M6=V4HeFڙ]W7MYMBL *\9Z}?F*2nyu_jiʦ#Ssa>( V=Z (+뿈խ-CYw(eK¨r#P!aQJ.h,kmJ2*@UwLς_S֬;-  n}Td9Q]*m>eF 6VGpc*G8V*!['j (gľ2{P~F;GT VIqzWH@+fxlO$b\A$d`dU p=+J LM4@f\m1` 8fHK < Hb KMbz{Dk:N-MpgPkbrLwq 'oOFVӒQҚYǐp1@I,OjtwU-/'>Ev%nW[mZ-_*1iFoo2a.g9x yr U tZ^'q#r sz\u?^MZ (]űUKwO][ŅA@^%ﮬ!=&} qeS3S{"mBXrJXlDR(N_K}dL!\d|X흶rI .;]&.nuerydwbL11 NXl`*!['j (g^#d-X?7# SwKqnonw^cnvm<=m'SVwm;AXJ.'z ^ԸLխ㶸cmX4e<3( mP@F,P@P/CS}*O*ύаۡ墔mr&ۄmsqᵂ0U-#h+;=)>}mל_Oڑa .0mCsbl6?Ǔ5R`}c 8$'w_vTnh'XlmJʺ=rnkRŖIcpnmI,PoWuHn[PNcA x_\ΟɥX [ x2Oq19>(XFҼ"m HG7\@14jbYz./%D2ŶA*Rc i M5%M_1M‘ Y Im$ b[5_V!!>afC ݀9cۅӯmqk΀2 $22p@f 1 Ņph)Y&vkbvĊAb7c@>$V,knXIph2f$KjWՋH2>Dgr8 (-2+R]PqIz  ( u?跠 TP@%K5͵J gHr7䌂2APYC$wwזPm aK/of,WNlrA.=z)oo0“\?;":nb9@ucGkB\RfP l K#iڶW׋K. 7 q:"IMf p ztCWK2~cdi^` 8@;Bm@uOZ@fYXZLk~y9U<0T//vh:_ߤ/f=P6?B' oRmFMىdTMSj}ade˃վm:`ր ( }]J@u9WK{ 8nV #tA!JTխAo <إdC-&w"`Y ^!tۍUGPIgk&_ݫY'!LJf& Hh!I1N$mTe=Ϋs5]1{TUvm:`[k*msQW𾓩*,qO"Ṕ'ZӠ*![j*jt:{\3<4d Ty NilvM"7mE0d'nN wqy.5e5v[`s$ez`@N?AzmSOC-YXW$͸nqLo`KN6ڙeG8Arn6ښ])乂ъyP&]2N };xnmkn#(dIZB HĮe<P IW67~yoۻn(;o A-ėW7PמR|T(2/ tVO ?$ TP@!a.+xmx2Br8 <^Y߽IZ, s-p͐O!-뺅ݣiu n"RJI@["2>ytT+>ee`ߝ)߸! 9viCGvOdUڊQc˿= zy_OW=6[i bc22I tP@F,P@PP@P@P@P@P@P@U[( VG'@%H 0#`@  Aj_뗐BY-g`drNUG&]'D}p@dh;h嶕Y[[[A8UX$3r?}hW[OEWbql0\&JϏM}0yp'C0|f;Fk]xcómҝVIRSKA l .ZgIլRMI'0 qVb@7 TP@RNKvtƃ#W$e9#8$gf,h}]6r$m,6ʲРHU/9:q@Zt:VɨL$XTJ>U=OooCJ8Ptv h}=-,b@ˍtU*~ ( }]J@RM:+_-988f RכY7oduxݑw#h9,q7;Pշ4* d#9(xm2r}NF} %$Lmf_-簁 Aeޣ c#uׂmm㷷!% qUE:;PPX+q\cО-P@m~h|+3ny돳cs.o\-RF#biy-X$ Rf'"n%9B,Y9aX! b+#g!D[ϸ4"|+یki9|G-p-!.sF$B8&*xj-o—_t1pz6ʼnpNm[Lgٯys"Co+&#`) w>Լ_]\47;F 8Ojנ V%Z VIyH\) F A}cHVHQu;$8;Ic|*#& #;Uoha6>mr|~hxlm-&q.:/ʼ>Q@!kh̊ȲX\a@it:mG=ap* ( ( ( ( ( ( _c]z@P@P@WPdŠ TP@Wtk Hkh$E'hWi%hNH3_s@( V^w֞VV$;O,P]KAW@ ( ( ( }]J@P@P@V? ' TP@,hIi)6FLv(sC.LrN=>TQǥX V][ɍ@pvuSx# b 'm댟P( ( (e7ЍX3!9lY\l0l"h0Fs=Z `9zG>s}h693(9mmsg9Ps?ۜs3@99A_(gրkns#9rQϭ0Fs=Z `9zG>s}h693(9mmsg9Ps?ۜs3@99A_(gրkns#9rQϭ0Fs=Z `9zG>s}h693(9mmsg9Ps?ۜs3@99A_(gրkns#9rQϭV\$'ր,[u c1$~CҀkncA1ďzP-m1c8?JF1a?!@\b1 G=(A1cHq#0cZۮ1cq# [u c1$~CҀkncA1ďzP-m1c8?J}kn-T#tޣ F0Fs=Z `9zG>s}h693(9mmsg9Ps?ۜs3@99A_(gրkns#9rQϭ0Fs=Z `9zG>s}ho lo)!Fs-m1c8?JF1a?!@\b1 G=(A1cHq#0cZۮ1cq# [u c1$~CҀkncA1ďzP-m1c8?JF1a?!@\b1 G=(A1cHq#0cZۮ1cq#Vx`yj1mmsg9Ps?ۜs3@99A_(gրkns#9rQϭ0Fs=Z `9zG>s}h693(9mmsg9Ps?ۜs3@99A_(gր+%?ڳ(G{hȵ\b1 G=(A1cHq#0cZۮ1cq# [u c1$~CҀkncA1ďzP-m1c8?JF1a?!@\b1 G=(A1cHq#0c konD{<81q F0Fs=Z `9zG>s}h693(9mmsg9Ps?ۜs3@99A_(gրkns#9rQϭ0Fs=Z `9zG>s}hqdT g?Me7ЍX3{Wh^,w w9E'=kicmsay=,6]K e7mA!nFm6!"Rs})1JNJ[hzgi0%ϐ[&rQ[pF0<ΧMz{:u Q#Jo& Bǜ3GC ixȷ@o͑ᕞh39 ` ^,4[],h\*b3.rN(ҵ[BNlᶽ9ȷ3FcQqrr@ĵյ/]+_GLw/.R|a5Knu n6oa{gieİ$q_ݨ²gO,:."2DsNQ LȀeld9MxSFtdw@!Rw"V8LP ^A,C}}mǝ3^wiª+@g@S4A.yr|0y珧(t9$6u0.L-nb`2@;Z( (|Ycހ-P@P@P@UdŠ TP@P@P@u/^MZ ( ( (*v-(P@P@PX+q\cО-P@P@P@UBO (P@P@P@F,P@P/tiQ9ReQtrWcGpu;RWY-.gxYe901?"CU渓Pw]6w;Ef !A;'lF< wh{[Rcw(`0wd8<{h%ocODUZPUEGfVEH|B Vfg夗pG7[RAW%HEa@\x7Uѭ4 -"0ljd]dr{4mY˩I:l( ;`;sTz:ܗZ?S}Xfğ8PN_'uYt4smcl@Yt!Wr6U2(;vjj:R%Ʃ4jW ؼÍkr `Hqh`]NmWS I\ ą7>C0H]??bvw9?y&[xI#ƅ (*ŗv?-P@P@P[OZ@P@P@WR]q( ( ( (|^aҀ-P@P@P@UB? P@P@PY?)o\dВ-P@P@P@/hm?b?|;ǧ|ݿ[s{1(ۥhjjStY7 M߻ɘr߼9?%:V߾.SsڼK&U2G?>va@d0ψ&ю 6eYd9:!g#yp@\H%ֶn"爛hPm\ O-Ri =hF+KUmE %9H;!`peP*gJdsk] o#8?3 ./-piӽ[ dǞ'8m`rRŭI4?m΄cgڀ3.J'I"ĉ)۸F#9VFdjj_Djy:5u0G*m`~'UP(IHJgkOR*gV$>v'W7uCR>~$wڗ|Aiq'dw#O3<hhKiu[&F73W%+nN s__ ol}gfM`4+-1CάPr[q |S$ԭc΋O)iq;ʥH[7#g9u^6͢{Y. @Fkc<9ܤ Yi|Az.i ‘6r$vc9!\|Ũ>;T{btly\a͆Hպ PCWK{mtĽͽ{؝.BCǕGcoy;˪g^da.n!I@KF) cY/[( ( ( /j ( ( ( ( ( ( (|^aҀ-P@P@P@UB( ( ( !K'J@P@P@P P}zTG\:#>zcxf(X+  xE"vrٖF(%I &M( xJi]A)X$U!!F2Hg4D[ IJ;-6"/ȫ$LK('oO>j̹heC!.6ʷ;Iq*5?ik,bTRW|Qf`K趏tݺ%)>X,m[*|/A[Nhc&(^I9}UA,u!‚@RN4^O$NnQ{23arVɷ?usRl(\$@[djʹdqX 2tRk+ ԹWUYN1WN~l63BiS5{wIFI#*%>[ M6S2e*"Fff+m`BFN5T{{rohΓL,hP|1  xN%ɦIcmx#mިNF$ eBi%ȭB2#Vm gCVw{ l PAX)x 'tX'k(뽙maTdۂJnm<-E$0Jg21T8p Rށ-xE{-VFyMQgUne U%8//a+sncH).89 'tX'k(뽙maTdۂ"n%𛷄BңMqo$0WPWc<+xBuGrvBѽu A#0|l^K}A4Y76 B8*AXAA@P@TӬ粷h5+An,av1zgn ( /j ( ig=̒W7I3nHX2~U؊Hs  .4j ( (sW1c<Ĕ/GF\[ (+ZvP( {n[W:{eXchP@UB( {o-գ r614! 9:ӐzF(S,r;@=x{ ( !H?댟(P@G#ڀ#!k9`ۜUx(P@>=o@gǬ?@%u FC}:o"KK;UX"eRF,iyoZرuy%?8n%3g\ ᙡM4A|Z/`)tx 0@Sh<Ǻۮ1K hVbw$JmAP<q 4W3,fhf0+A0/ ;r@*?{GRKe%LQvcp[v0GO_ %.-\-d62Wn`0*ۨφ m#:nw4yP=эp-e1ByVb9{iY{ V[/4Ը*Zi%f1Gt2Ӹkg}b|Ng3R4ڕ֜ڢ&w5be[Xè!B7p N~_>punҀ0u\ɨBV8yf2$qfPpK\ {u =2l@n8*.:oNx5O kQay<DvmAwY7 aiiZh]b@ + ®Ic@6( ( (*Ǻhb( ( ( #@ ( ( ( ֿ{]f ( ( (ހ-P@P@P@U A\di@ ( ( }{B4b ϶Xʀ2|M_iVɦD]N!7v3)dF΃9$`PާxXdK+K$)DrAd]T0M[Bii3n@N h;F@2-<_KatRLQ,#<|7&AрX&?5۹.-C)P_fh;RM~YXZX]MrBVd;$qHmm*Iڠ8#Kq]H6"y #r@ @:O7JǦ x^V-!C R~B<I9$n ( ( ( ( ?g]f ( ( ({vF-Y ( ( .4f ( ( ( m @h ( (+G!IP@P@PgOf ( ( (ǿ #@( o6_Zum&74aѰr2@M;<.]n+ms#;rs nbA3HneRJ{Y=ϭT'z]ʁSg:}MC Jt3$<21rt'1$Mg>+Y?cfE#UUGđUB\80rú5l'mhKj r#s@4:6ݣI$o2i 3f p@P@P@P@Pk@j@P@P@Z=EY ( ( 24f ( ( ( m @h ( (+'17 4P@P@P@Bp?P( ( (e7ЍX($sB 2;'@Oƀϴi?5?}>~k4~}hI_'@Oƀϴi?5?}>~k4~}hI_'@Oƀϴi?5?}>~k4~}hI_+!*M#%x?/Oƀϴi?5?}>~k4~}hI_'@Oƀϴi?5FYaWހ'@Oƀϴi?5?}>~k4~}hI_'@Oƀϴ#,ZH~ti?5?}>~k4~}hI_'@Oƀϴi?5?}>~k4~}hI_'@E$GN :_ϴi?5?}>~k4~}hI_'@Oƀϴi?5?}>~k4d XZ>0NW$~~'@Oƀϴi?5?}>~k4~}hI_'@Oƀϴ&7#r(}>~k4~}hI_'@Oƀϴi?5?}>~k4~}hI_  N=K@P@P@P@P@P@PQp@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@TD?>?&O<#hD?>?&O<#hD?>?&O<#hD?>?&O<#hD?>?&O<#hD?>?&O<#hD?>?&O<#hD?>?&O<#hD?>?&O<#hD?>?&O<#hD?>?&O<#hD?>?&O<#hD?>?&O<#hD?>?&O<#hD?>?&O<#hD?>?&O<#hD?>?&O<#hD?>?&O<#hD?>?&O<#hD?>?&O<#hD?>?&O<#hD?>?&O<#hD?>?&O<#hD?>?&O<#hD?>?&O<#hM3E_PJ@z.-(#Nqi8\-\]UJ^).&_.#5͆96{Y[O.Fջ]njŖsei Dw5]SgHP 叛/*d.N3b(s:i B j ( ( ( ( ( ( ( ( ( ( z.-(#Nqi8\-\]UJ^).&_.#5͆96{Y[O.Fջ.Mt+ Rcoiur" $` #0$Ǹʀ ( ( CVomhk[_)6㜎 zƇĶW:Zi\_&`[rAH ( ( ( ( ( ( ( ( (@(05iZjvqk"J>$wa3 N V ÚWK8x͜gxSE:P m+m#Ios}}Z~v2hbD\cP{rޢ aݬVT5}D(n@^B[rX /{eOlhz*ߴwS>d F7|gj_hƔ~/mHMJ=Gth(+rx@u x.T=fGpұFIJ UN5y4m-^G2$p92wxP@P@P@P@P@P@P@P@P@P@P^+_N"uVU)BĎ&a_JOAxsJivgchJ%{m[$yO9mީk]Z޻KlZeqCCdcV ok2OE-"m6 m&H|c>]O<78Lj2h I'i)xOG|KMu D/rB6lgh43:_b"n KPG@nx@oE/闎-SR\@ߺR $@FYMkB)LzZ3䬄p6n.e&Ԍxj{"\|^vcS-XҏÂe Gb#sOhƇP2:}jQ11m܌*4V$[  ! d#ERO-*shKh?Fv@P8 =_.52uˡ t\`r1#7Zӵ+7k}RAGNb sᶝ{j7Vi% 7Z '+$eHre\H ( ( ( ( ( ( ( (P( &$n1'}Ƿ}xBX\f3[q,c3~G׀81?#VK}+q%uc>O:1}xɴ͍hΨ=UP3 bX\f3[q,c3~G׀81?#VK}+q%uc>O:1}x scqϿ>n9ıg^X\f3[q,c3~G׀81?#VK}+q%uc>O:1}x scqϿ>n9ıg^X\f3[q,c3~G׀81?#VK}+q%uc>O:1}x scqϿ>n9ıg^X\f3[q,c3~G׀81?#VK}+q%uc>O:1}x scqϿ>n9ıg^X\f3[q,c3~G׀81?#VK}+q%uc>O:1}x scqϿ>n9ıg^X\f3[q,c3~G׀81?#VK}+q%uc>O:1}x scqϿ>n9ıg^X\f3[q,c3~G׀81?#VK}+q%uc>O:1}x scqϿ>n9ıg^X\f3[q,c3~G׀81?#VK}+q%uc>O:1}x scqϿ>n9ıg^X\f3[q,c3~G׀81?#VK}+q%uc>O:1}x scqϿ>n9ıg^X\f3[q,c3~G׀81?#VK}+q%uc>O:1}x scqϿ>n9ıg^X\f3[q,c3~G׀81?#VK}+q%uc>O:1}x scqϿ>n9ıg^X\f3[q,c3~G׀81?#VK}h''PJuSXM1i ibU`Krwg zGI1\_E*EY3T uo.<&>F1:̼>a@$ VRkV u3l@`.rNeǨ# \#}R.m"3\BӨxc3\rxP<-p*U0r}(#ՄVr 2Qd pA@$tu8/Pwl(מBg$|;JȴLJӭ﮵m:+G^0hNAB MsH5K6Mo Υ挂CYp @]vqmo{mm5liVPOrGPvn K5-q#ǵF̈́S6+hlV\\_\j.#evF4E'7*njdB!8,\[YkV0Z!GXW?(^zosqeX\j$a\ } xCLSZM>f\۞{J[i"Fe2I""Tg,wzd xC5]c(ZC.3zҀ$:搱M),puHYМʪI@>Gwuh\DfP%g* Ƞ /5];OI UyZijĪ {vvquXAIrClN:MsH>nfo7N<~l^=h?QtMNgM丷6vۻBq;Ƴammiv0%n<Xev?.x$Gv,lR;ؽ,p6H^F}YiT !] 'A\}hfWʕa|n>wSz@P@P@P@P@P@P@P@P@P@P@P@P@>/,P@T zlV!fKd>pċC9h2ڌڝqoBPf4>O{p~m烷CG\fI$Ӣ򙌒$l".Pgi&BoeE[m^6aKf!y V=F!U%kit.&7Rʻ~ I>f%I!5Mi=\upDd!ݑHpC!’@_Y8ZJkYakw,Xq'i_~N9|Gqekm=Ivb?$1V8BS|!-/ÑGE,vw$AcMwd`#oA%{q'."uso{65IF6WjK@iT6/ v&sKyXp$@5Km68M{i#+"QX'r-LJh-RdCKDZcs`CS|6>LW-sܲvE$7f2G>Y3QӬkbY1 -i9B>^IsmXкmVTx-}!*X7]Jx^9>v fu*,;Čoj>:)$23k.*03An@ {=PZ \iV-k,0_b嗐K?4d+o[6 c2(V* oV`cR@K!1tx_hlla0Bљd22ʸnia@:-'ڌ>*}zF 9diljbI!pX f(i4ѣ[XKi s]ۣRep!WŹTaeg87 *27! `umFl;˙ıKJc;#J3 / { Hn!TcD&Rq@0IN(ŽolZ5\̊|tEVP D^f}>8XmK(o MҀ$37vڳ٥%=!@3\FaaX"}Σ ;D䶌$ L9\E_W"7U#m Br'ƀ'r]gyMfb?&'У 3|wR^>nt<đ<1!;l '@Go9α٤EO$]̾c;$ne 0{xa;>)T[qR,y[bm 7H3Q|.tfY٨ϹقKAzpcRC[_&]>8dKxRwP@@ f34Mf4f+kiuo[̜_! K(T^iiVr-̳ͅ˹dot(2E`ŏ'nb__j7:ĚN-Gq4P˵Q]rsK `q*:Cv-lf\[]\BAq Mvɒ0&>qafI5hwQfM*BBw` AbŭYZ\j0mlD +mLv_ibbzvNnV=]T6녅\&yϛNjRš-xmD 2ȫ\.3C/@tA\*fE Mml.,WWQvϗa>XpBwdd?ic Ya6 .D@35?3=2^O%ByS?^KUX|UiVD[AIs4I`G5)c HP WK{\Եw38٥U%$C)܇m _Gug-Dd#ex[# Yk'2(.ܐ%*XOm:U4ֶ@́mg@bOόd6K&oqer-a.<(Lb@6RU%xr@$_YDf? ;2}d7NƫK^%1fK<3@yxl6Rͱ@-,uUӭ /2bэa单8$9+C2XVsZe^w3Xߥ\,$/|'lN 5}Zk"oEf9UnF*Bڋİq8M:ic$2*&AG(+IekUt-*3no/)Y[tr1Iڍ,/~6\l,hE4ȌPpO w/e~>/,6;cbp?0pp@P@P@P@P@P@` P@(ռMux4[`Hα3n?.@g!ծ&o,`[ZKPɴLmu=F;kha EXr0H-]^ ugM:y`adDw %[t2l)$1(sWUƟ(t[M+wy! F3"\NA¯ٹ#' p 0% ce&d8UNأ,;%CfXx/ t=&I`gP`K y;5_\[fc\(q 8A$I^(5)>b[eQ8Hc!eU$ ž\m- y %@@n"s[Af p4Ʒ[jRc\^aKPXw[n>PY,/(!K6l,-輆HL.U"<3P@P@P@P@P@ψnPCHm=нv253O  }H}2Lmڿ-\roDnkbH>BdIsh_]!Y.1*@g,@#}mל_Oڑa .0mCsbl6 o$pHfY'(]dڪVw(^aabgmaO$*~ɸ0YT@.Z$bӬ"};O}>Q`#mH,<#u4fkx9ʃ"F[ ( ( ( ( (P( B]OWU7m&ڲp'{ d^xGm($>TVR dCnʲ6@8 P)wg-̭4q ;x#> ỏ;F$<ٍ%.\a '7F|l4|O!8]36ђ@bqs渒wY"J+0f ?3dx3BeO6?k%7mo7vHi۝ Y\2Kgq,I$MΡ&Ϊfs;gsdV9lN@$tne%Q#`vѐAYY؆ 灀|?[hdO:YI9Mۙ,u@P%KLya+Ψьв?;NF` ;]q% ; DV`͒~fv~loG7|$ʲ"fbX-psRt_u ;.8܍7#`nFʶA />{5p_6&=(c5q1R,H/t}#Hh|-b|Ϋ6G܉Iۨݿ[Gh-cTO'|ݵBayF rBXغЊs*h$TB(ѡU\N@'Z,-h3;H?,@AvwmۜC+|]ov8c>4gvݹ?t8Ͻ ݶns>?,@AvwmۜC+|]ov8c>4gvݹ?t8Ͻ ݶns>?,@AvwmۜC+|]ov8c>4gvݹ?t8Ͻ ݶns>?,@AvwmۜC+|]ov8c>4gvݹ?t8Ͻ ݶns>?,@AvwmۜC+|]ov8c>4gvݹ?t8Ͻ ݶns>?,@AvwmۜC+|]ov8c>4gvݹ?t8Ͻ ݶns>?,@AvwmۜC+|]ov8c>4gvݹ?t8Ͻ ݶns>?,@AvwmۜC+|]ov8c>4gvݹ?t8Ͻ ݶns>?,@AvwmۜC+|]ov8c>4gvݹ?t8Ͻ ݶns>?,@AvwmۜC+|]ov8c>4gvݹ?t8Ͻ ݶns>?,@AvwmۜC+|]ov8c>4gvݹ?t8Ͻ ݶns>?,@AvwmۜC+|]ov8c>4gvݹ?t8Ͻ ݶns>?,@AvwmۜC+|]ov8c>4gvݹ?t8Ͻ ݶns>?,@AvwmۜC+|]ov8c>4gvݹ?t8Ͻ ݶns>?,@AvwmۜC+|]ov8c>4gvݹ?t8Ͻ ݶns>?,@AvwmۜC+|]ov8c>4gvݹ?t8Ͻ ݶns>?,@AvwmۜC+|]ov8c>4gvݹ?t8Ͻ ݶns>?,@AvwmۜC+|]ov8c>4gvݹ?t8Ͻ ݶns>?,@AvwmۜC+|]ov8c>4gvݹ?t8Ͻ ݶns>?,@AvwmۜC+|]ov8c>4gvݹ?t8Ͻ ݶns>?,@AvwmۜC+|]ov8c>4gvݹ?t8Ͻ ݶns>?,@AvwmۜC+|]ov8c>4gvݹ?t8Ͻ ݶns>?,@AvwmۜC+|]ov8c>4gvݹ?t8Ͻ ݶns>?,@AvwmۜC+|]ov8c>4gvݹ?t8Ͻ ݶns>?,@AvwmۜC+|et`'P( P@P@P@P@P@P@P@P@P@P@P@P@P@,Q+52&H TAB+xNKUgKU *8g\i68m"Ime{Uhp+Ag 5N/a.$IR$TxІbF 2?lXUӡ$MBeLW^y 8}(#ՄVr 2Qd pA@SHb#@ΪdsT d@ \#}R.m"3\BӨxc3\rxPjVZ%[|s C8=aᱦ^IXKgb%d;I䑀:ɠ  [Gy}Cj]' + ?8ĚՂ@9P(RıM #"֬OGr("v?+qҀ+xKntY[[ϱXW F Hghob|}?/vn7cu_uڡ}_n9LPd-6ڕ uqҨ&CŦIl˾;fD9#nqP~Cԭ ƌ[Ve]21#@0'g>zww~=:s@wt]Wϒu-n<pXRUӯ]RweޫĮ0zbH}}EF$M*jmDff0 "é(2!m{9"0ŵ#`ݾHhM";G,#5-:0.9U'E}ͨZjwPnn"Z82w08xCHR yiEb1̀; z%ZN=Np\ Ie8e֒Ek*]B&ʖ|;h[GB|ZăwnAcuO CLSZ}>%ܡ {Z/ 7bm6.a $/u#M,cQ Ӫm hI5]:N-2Kd&]4%u琙+sҀ+ï:i q1Y.M6 Wzd<;y6gkMq9Rz׽mix?]sH)K8乕^uY(, rZE6iY^ͷui#ܠ`{pC7kVچd3% ]q'W[jVm:<:yp069% %P4.mTk^h$: 84w "YZmfl(xx,:r\OirS}m-Kp.3Hʇ9 0rA# 쯭5+DL ` €-P( P@P@P@P@P@P@P@P@P@P@P@P@P@Kxm&6-Di 2 2wH9\|R\sOǐ. /X<جn3*OȠ jz%vdLZ=#ɾبv0 Xo)Rc @zƙu/V{-I㱶w藅I,2돕~lw4|:kXEqmO}Y$rAInAeNu<5UZ ;^A,P?4d+oo"fko'إ#%%|p ={j:Uސ^%}sopU$I#U7 (t]h}oͤDTX7*NN'4K=.4cm2ȐM8мY;⶿Ͻ- &m&KCGa:o.d4nV{-O xnfHȿeɠ z bԂܳnƭ{v`oU}K\.r/"%Car Fj2^^co}0+ ۯZ| N -K_Mv& Uu]NQe̹*(MJSXK9[R;R͊<,ɐo `P@ zz.e_ͧW]|[$ EC}y1v$[mL[[iWg-d܍6ӏmuacm~]*Mi{x=0FqGgyGyagGokǧj C-‘*@4|^Ytmu(bKЇJ$C" 2$m2Kmvjpkih]24+'K} =6(4RIz[Ul($r9dki/Owpt{+ԟ'D[X' 5GXZt\s>#-RhH1]`A[)(ѭ`|-{b~4[ѽm6w&Z)6 P݄Հm冥#En,ϵ GuQҮ-[{ү%N<"?0f'`F_[Eŝ F7tī{QK;$Z,2&|Y"@T$a.-/6kRvfEȋˌJ`rA$0e ODMn-E9א7!Qff0-&.-αO-~ѡ]Oc۴+b8̘Rx/$[qDc3tb(9UWz]R)']G$:͆+(bݠ .Z[irڅḌ60€ D (RL+@pZC,b{Wz~o- DRaA2 cóiWV>F6CPv&B7Nu]sq<߬q>W7 0rٶ۷w f vjW7:M^—`xNXB8r;rzZ-˧_Ye; NMëB$VIٗhmQA}4ҋ7ڄ /[lw t Bdd=2vj]/#Tb8B$.y cimĐ v]N[_l׌H+̋V3?H` 7xn"DA#]aru$bbD] 5KTҔZ=[4+3,\d| F1tzEǨ]u)<1<`9G=I /@P@P@P@P@P@P@P@P@P@P@ @ޢ%EKz<y-([P䷨oQ@ޢ%EKz<y-([P䷨oQ@ޢ%EKz<y-([P䷨oQ@ޢ%EKz<y-([P䷨oQ@ޢ%EKz<y-([P䷨oQ@ޢ%EKz<y-([P䷨oQ@ޢ%EKz<y-([P䷨oQ@ޢ%EKz<y-([P䷨oQ@ޢ%EKz<y-([P䷨oQ@ޢ%EKz<y-([P䷨oQ@ޢ%EKz<y-([P䷨oQ@ޢ%EKz<y-([P䷨oQ@ޢ%EKz<䉕$PP@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@PPK@Rs)PKAAOEBPS/img/careportimp.jpgJFIF``LEAD Technologies Inc. V1.01    "!#(3+#&0&,=-0569:9"+?C>8C3897 7$$77777777777777777777777777777777777777777777777777  }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyzw!1AQaq"2B #3Rbr $4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz. ?6CfԒ;PyZ 3b˰%@)5 /Oj%eىyD<nظDХ֥>b%ٜYY""`rڭϾiq[6QF+L(3 ./jSiZ|N".w|fbY. *wc4cJ-R;&4=F-=R^[`c %zZw:MizZ{<cv@,\xhRRAiVUجm 9`cmVwWRTIM>QOygW3{~>lnJ!ɂIųjIl<k1epޝ ?g_y;V훷c{g>@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@ssxWE}ΟŻYSdHGV ؀Vc_/Zo/ݟ",?mqyK6;AiL1iU%br{xo|Juc|:\<;%K~Ǐ0sJuj^jP:z%7K "J,Rd;zkjz_] +Ė؈E.|(+FTqe5йKIm^[B/,m%J\ҥ֛G޴uh`&VQ19R{mevS_Sd֚\]$B/-s!@_b6@.M^a:6aeM "XbY []\xPCH, p I#l @P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@qJ!ɂIųjIl<k1epMJ^xz +O{IdEԛL [@ :%X.f$'mSa쥒HgVJ<#*b `g1@qqxRJuYu&6ΧipIV  OR~Cwuigʓ+'+${eB)%0SXꚆ]'BQ Y5bβā<@jdzI7l\xhRRAiVUجm 9`cmVwtxhRRAiVUجm 9`cmVwgMJ^xz +O{IdEԛL [@ :%X.fiO Aii:yAahgS$݌ICNUfϵhP@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P77{ɄW\l[(م6L$4u` f8on@+j^jP:z%7K "J,Rd;zƓy7l5-mmeksnKć8mؠN/ PxRY.XL"Vd2$ א4!oJ[rN2[mg.$-Ē +/˰.zYGRQM{{PnϑO6\ҥ֛G޴uh`&VQ19R{mevtx^iRM#oZG0+yZUIw|嘜a,i ޯ]\Zܽl%-Lo o.ہN8h3Xkzuqkr1 R4)nC8 -muq 뻽AU#01-$F(P:P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@qJ!ɂIųjIl<k1epMJ^xz +O{IdEԛL [@ :%X.f$'mSa쥒HgVJ<#*b `g1@r5/`/1]"[E8,Cr^4ԧ燠ҴgVD]I DͰŴ\Uhƚ0V,ȋ7(u;KJ]j]:-줵[uqmS#veqZÃڔuaڦkf~,AO5m* xRJuYu&6ΧipIV Ҁ9M ]jQ#6-"]]ʾ[-2!V,m. x<}O^?jvmn $tQҠ ?H>?lݻc9 ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (9?L"RObF,a$Ql@w+1|p^/ PxRY.XL"Vd2$ א5.4ɼ[a%)kkk-[r]F$> I^hrZ8gZIƱeWF8 Kr83A JgOD[a3$XZ%@ 'o^@45_R{JZ)]!RqmbokjQD-X9F/恻1 5cy-.uMզ,6e=ܼ;LʈC (r/ PxRY.XL"Vd2$ א:N~qWϞ^4ԧ燠ҴgVD]I DͰŴ\Uh%zZw:MizZ{<cv@,\xhRRAiVUجm 9`cmVwSfmR}Tӓvy^?;qEê[ɻPu>Xjde7ՕpU 78#Rs'G^tۼ',g3gݻ~@v+ nI An-'6c0@v$g2 '%OؼyOY~gn;owɍ(b0Ğ)MI"[U( (@-Hn r(\N ySd g ̅fFYxYXX cs>E! A ?(~M|3;vy|۾Lnq@ j]g[o9,xwe?<^&7gwAxdY)U !nd2)6I "/ rl)#<8G6@?4?w_cu7vݻ6n.q.s\ Q*@1)P11M?x38987x/EtIm䲙Y6A$I67/mn1;_GyId 4QL8|&9p .Zjh56H|Ьf#6dgkq' ]z4˹Ķ-IF#bF6[6ˍ&ok { Znܗ1q@)Ս I^h>^:hR!k%ΐ% $;~P2@$qVQTSv>^?E aâY^4䝮d6]H[$b70V_`?|:kIKĽm1e޲zYGRQM{{PnϑO6Ga׎os n4FA !Nߔ댐$[PIk76r页Jk.L_dd۴;NP}_/Zo/ݟ",?miB4)5ْH݆i ăB(  5[I&knl+*yL`$q̓YYkXDc?ɿvap#Wl{?~sٍך.mbokjQD-X9F/恻1 5gq/.Ɛ]y,E}6R38~WhL4ckcӇo~~yhǛn7o@4XJK)loĐ Y$jiГccpa>Q*ewlWE_Gsڦgŧ޳Z_+a ~=?67`d;xU6x^Y${umT.2h$1$c;[Wh8lOש]%lBMn106鷒a.\i7xXKR[v6H} F ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (9?J(KtT;yKKyl#1ǻ Qj61i9a0(^26?+Ԣ/mSObxY-/尌?2we?<^&7gw~oz-&tvmCo'$i&݌ H{/ZI:EK[[l[4ȏ;m2fB4s'G^tۼ',g3gݻ~"[[/l0v%;ʡ]$30m̂Wp=_Z}յI/vq$QM$u'g(&'?߲}yθ۷f{1x \J4EWf2E*>F)p'vy.3S<k8@pBv8 i??b>we?<^&7gwv66 RA?;)/!!$s5tde(:ZL$q>삊K ,QhΛwefv{|ݝ/#jݸJo"hf+$,hOJ4yn|;ݞv/vPqGTLKo Eaca  OJ4yn|;ݞv/vPv+ nI An-'6c0@v$g2 '%OؼyOY~gn;owɍ(?W񵖟ummlhKlIyyl#aII0>q(z~i0-Ťf3n0dFAR@+xMoQ/Z e٥FVDxh6ǖR @%"3" c#8l xGZDK)5 _8!L;Odhr0vy.3S<k8@pBv8 7;{i5ۣly<&g#I6g pTF6]ͪMC%ԷOyf0 0As` p`k7FqH@B68 `~/&VT{yDC1\(}!$<)c@C[aP[Iͻ",9>fݠanPC[aP[Iͻ",9>fݠaI F/:mo}_۳cvw|{ؠ @%"3" c#8l |}yՒ=4o+ALnpGȤ3aH$~/&VT{yDC1\(}!$<)c@$fVC['qg-N%;F)M%Rc'G^tۼ',g3gݻ~Nx^d,5dk228*S) R F/:mo}_۳cvw|{?rjiv *="s>z~i0-Ťf3n0dFAR@7(,k7FqH@B68 `C[aP[Iͻ",9>fݠaxGZDK)5 _8!L;Odhr0v66 RA?;)/!!$i??b>we?<^&7gw~oz-&tvmCo'$i&݌ Hi??b>we?<^&7gw p!a${Yh'VV!VHfH/2Gfueb`)l)\I67/mn1;_G95IջqwfE9W pI X=_Z}յI/vq$QM$u'g(C'G^tۼ',g3gݻ~C[aP[Iͻ",9>fݠaX Q*@1)P11M?x3898'G^tۼ',g3gݻ~~/&VT{yDC1\(}!$<)c@.%&uggS;pܠ |I}TA{)d+յR,p(?P/ZI:EK[[l[4ȏ;m2fB4s'G^tۼ',g3gݻ~@P@P@P@P@P7N?iwsm[[G,č:ml kjz_] +Ė؈E.|(+FTˏ *]iߤz HVeo1J.,7_`}+J5]='aGY| n9]_>^wyw8e 5{>a8| u ФCxfK Kv26' I v/\d oVF7& _Ocf6^hѵ[iEYGkmb9&|0vgeľ!ԺAu狘tH]F~O2\E7No)Gn|gg?5X4mcO׵+,7@,]d\Dyp#BNNzd`?GeWTP4Pcs".,Jr| u ФCxfK Kv26' I v/\dIy=bW֬no=||7gȋ'@#0kP D7vdaC#bq oHk~^6e-Ѹb"$@#vs#zæԚ>;Kn[(#\`UB0@-uugwFtꈘI mT+ a <>^:hR!k%ΐ% $;~P2@$5VZ6"j#dmro݀|1P՞YΗ71mҳ"a$-PH(O-w.?|j?nݼ'ڇv|x>>aBF&meO۵hhہCP!RLiמ.aWe#3v>d=s@q\KK1^xK_l g hYhztǥ5ԗ&/f2HeuK]W4mcO׵+,7@,]d\Dyp#BNNzd`ѵ[iEYGkmb9&|0vgk:yti5K{FĐ+"vi ;@7E4tnQ !mb@AByl0$ܠ 5o=M .nb6ۥgTDH[jXP[ @)-ypc}OO>aQt[}nSH,gKY0ڨV$'AP mbokjQD-X9F/恻1 5H-uugwFtꈘI mT+ a _!RLiמ.aWe#3v>d=s@sfixڥ7FH5O4hILem5A"ƻ2\[!8`HSz$RC4W=)1}7C+_nG8w@?8'gyvԧ\c</xB@2qS@RkkrՌjV4v - pU{N8?5X0kP D7vdaC#bq oH.?|j?nݼ'ڇv|x>>a5VZ6"j#dmro݀|1OTtړ_C{p{ bueyь PqE4tnQ !mb@AByl0$F&meO۵hhہCPE7No)Gn|gg?5WqVQTSv>^?E !RLiמ.aWe#3v>d=s@5H~ϲ_`ng_ހ4( {&ok { Znܗ1qy=bW֬no=||7gȋ'@#0kP D7vdaC#bq oHi@P@P@P@P@P' ^}Γj}z)i|-f01||݁J-R;&4=F-=R^[`c .5= Lѐ\5kwd sC@6xh'F)p'vy.3S<k8@pBv8 axO5&5ۻ"m*Hi??b>we?<^&7gw Û贚uI T3v38* #kg[~.&!['t\t6R$W3۫jXtQV13 @%"3" c#8l |}yՒ=4o+ALnpGȤ3aH$%OؼyOY~gn;owɍ(9]z-^KLm%/w4{O K$\nycFGUY $b6?(~M|3;vy|۾Lnq@MRm5n]?٥GDNq3‡@s–4@%we?<^&7gw Ï<ڤd2]Kyg(c `8VHQhΛwefv{|ݝ/#贚uI T3v38* #kg[xh'h$1$c;[Wh8lOש]%lBMn106鷒a.\i7xXKR[v6H} F 5Us -ӟp7-F&meO۵hhہCPhƟjWYKctn$Xȸ#P$HF!RLiמ.aWe#3v>d=s@[wWVzAg{:\mJΨB < nPeľ!ԺAu狘tH]F~O2\՞YΗ71mҳ"a$-PH(O-MxAH̗:@3HdlN$ @^Cu?jč-!VE])!vw-",[vvs>_vb;p3j2_j]]i :X`lfp#?'̙h 5o=M .nb6ۥgTDH[jXP[ @)-ypc}OO^?E m5A"ƻ2\[!8`HSz$RC4W=)1}7C+_nG8w@pMxAH̗:@3HdlN$ @^ˉ|Cuu40b+큲@2dˉ|Cuu40b+큲@2d zæԚ>;Kn[(#\`UB0晣k~^6e-Ѹb"$@#vs#']EE\\F X,淇(IŶ^–۵%dbC`Ĝm?6Wѵ[iEYGkmb9&|0vgԧ\c</xB@2qS@! 6 B ].t-f؜H0A$)q'!RLiמ.aWe#3v>d=s@M-ݭ͹.c#x$i/QiB4)5ْH݆i ăB(  ^xOX(۪[)Ov/j "€9=c7oaW7G%1"Fw;\KK1^xK_l g Ga׎os n4FA !Nߔ댐 M3F4{RmR[q$EI'G4$F: OM}57|w xM,[Q G-P7` -T]^LfI i}K5Z461Mu%ɋ외̒]|vb?i;ji?e?h<c߷oL_\]q\[ ng~Sm@xOX(۪[)Ov/j " Eo=M .nb6ۥgTDH[jXP[ @2 ?ڗWZcH.s")?+&A( t[}nSH,gKY0ڨV$'AP ^o?oS3FQOygW3{~>lnw$Ml 𽔲IکG8]dyEUBl F( 8]ͪMC%ԷOyf0 0As` p'%OؼyOY~gn;owɍ(9_ދI[dI38AIc8c6q'%OؼyOY~gn;owɍ(>>Xjde7ՕpU 78#RC ̅fFYxYXX cs>E! A ?(~M|3;vy|۾Lnq@MRm5n]?٥GDNq3‡@s–4OW񵖟ummlhKlIyyl#aII0>qI67/mn1;_g6I "/ rl)#<8G6@EaZMv:$O*IM ?(~M|3;vy|۾Lnq@ZMv:$O*IM ^0[tv|iQ6ve͠1唅,h%OؼyOY~gn;owɍ(b9:tGsu2@-&tR|TvAE%[GmRm2.vS10_ BC+H$ ?(~M|3;vy|۾Lnq@xIO3t/~tlNӸsȠ~&6n.ңȢ'8C 9K&vy.3S<k8@pBv8 cQhΛwefv{|ݝ/#jݸJo"hf+$,hk->~$;8(G&’:a|iP?%OؼyOY~gn;owɍ(9]z-^KLm%/w4M j]g[o9,xF)p'QhΛwefv{|ݝ/#^kwL0j qi9w{E'۴ 7#<T ?(~M|3;vy|۾Lnq@kkeD_dH#a HO1PQ@c\J4EWf2E*>F)p'~&6n.ңȢ'8C 9KO_I%6N$<6ɰl8EhQhΛwefv{|ݝ/J4?o6ݟ6s?(~M|3;vy|۾Lnq@ j]g[o9,xF)p'QhΛwefv{|ݝ/$U/[i lEŜ)8 Ƭ6H; Q*@1)P11M?x38987x5FζK)Ьf#6dgkq' ]z4˹Ķ-IF#bF6[6ˍ&ok { Znܗ1q@k~^6e-Ѹb"$@#vs#pMxAH̗:@3HdlN$ @^ԲM>页Jk.L_dd۴;NPE7No)Gn|gg?5eu)&-Xo#G`0 \gTPԧ\c</xB@2qS@! 6 B ].t-f؜H0A$)q%_/Zo/ݟ",?m/!Mm% H>chAYxܛ`(F/pwGa׎os n4FA !Nߔ댐 /!Mm% H>chAYxܛ`(F/pwvhztǥ5ԗ&/f2HeuK]WTtړ_C{p{ bueyь PqܲM>页Jk.L_dd۴;NP}_/Zo/ݟ",?miB4)5ْH݆i ăB(  y懯6=s.z+ .WqpbSŀ: 3F4{RmR[q$EI'G4$F+-ypc}OOchAYxܛ`(F/pwvRkot/aLYn@1pZ1Wa n ? ?ڗWZcH.s")?+&A? ?ڗWZcH.s")?+&Ai?e?h<c߷oL Z461Mu%ɋ외̒]|vb?i;j.mbokjQD-X9F/恻1 5aRkot/aLYn@1pZ1Wa n ՞YΗ71mҳ"a$-PH(O-MxAH̗:@3HdlN$ @^YYkXDc?ɿvapa@ލMMb-R;[hkg137f!< ھ^euK}E7i_C>DY<0_xCTK+-vk~5|~67P>_iB4)5ْH݆i ăB(  ?/8|'wN߰c?fzmh>^:hR!k%ΐ% $;~P2@$2_j]]i :X`lfp#?'̙hb5d=s@F{tH#yύL. ĎA :[\kgReoHHS3*q>5%^u6oYDbcB @!:o=M .nb6ۥgTDH[jXP[ @1 6 B ].t-f؜H0A$)qhƟjWYKctn$Xȸ#P$HFwkxXT'mr4L4 و`!Ttړ_C{p{ bueyь Pqܻѵ[iEYGkmb9&|0vg]-",[vvs>_vb;p3jB֤+pkVrX(AC$H`UTrv& | u ФCxfK Kv26' I v/\dI} Rki,mE"GG ߻B0~c~~_~W9Slz67m5K(mxݬ]#Dϗ@ݘ 2 6 B ].t-f؜H0A$)qbtxvK) 6`zˉ|Cuu40b+큲@2d€ ( ( ( ( (9?J(KtT;yKKyl#1ǻ Qj61i9a0(^26?+Ԣ/mSObxY-/尌?2we?<^&7gw 5tde(:ZL$q>삊K ,747M2WIYFn~^L?;<?(~M|3;vy|۾Lnq@MRm5n]?٥GDNq3‡@s–4MZMv:$O*IM ?(~M|3;vy|۾Lnq@ j]g[o9,xĞ)MI"[U( (@-H\񅤚ޣ_J#/m,)c@\J4EWf2E*>F)p'vy.3S<k8@pBv8 a j]g[o9,xtsmӮlTa>lpFGΜː i??b>we?<^&7gwQiʿ]:L6Nvza9Prw>5= Lѐ\5kwd sC@5?(~M|3;vy|۾Lnq@mRm2.vS10_ BC+H$ ð^kwL0j qi9w{E'۴ 7#<T ^0[tv|iQ6ve͠1唅,h%OؼyOY~gn;owɍ(b0~&6n.ңȢ'8C 9K'G^tۼ',g3gݻ~.%&uggS;p&vy.3S<k8@pBv8 w4-~YͷNmQ:s.@,QhΛwefv{|ݝ/#<ڤd2]Kyg(c `8VHYiV$đGF96Ԟc #H9;Uc]L.e5;a`c! ~mi??b>we?<^&7gwv66 RA?;)/!!$cQhΛwefv{|ݝ/J4yn|;ݞv/vPsxC];N!ʒfp4npA$mlk`-$"%ݭ_-TedG3h ye!K( ( ( ( ( (oK6~'u.̶!&QgYTtn0>.,6Wic-r\PW嘍P TcH֑ cR]*9f'*Xom. WWjzOu{4+yA!#r@44 g}W^M>q-bkuyGM rIŶ^–۵%dbC`Ĝm?6lP|:kIKĽm1e޲^?E 5IaP7h+#o~€8C.%֘ <\åFg3|ɐz#0kP D7vdaC#bq oH}{坜pnVpCMBM Rߴ*g`$Āhk{ e,⹼9-< ('p0۹ߏ+m5A"ƻ2\[!8`HSz$K ھ^euK}E7i_C>DY<0e}CkR\ɛ!/iv#^v | u ФCxfK Kv26' I v/\dIeľ!ԺAu狘tH]F~O2\AMGjijW<[>ozw (IŶ^–۵%dbC`Ĝm?6cxOX(۪[)Ov/j " XŶZv< n.cgnCny @\KK1^xK_l g vq/.Ɛ]y,E}6R38~WhL4e}CkR\ɛ!/iv#^vLѵ?^ԯTIuqFI ;y9鑀F&meO۵hhہCP=>#EaѤ-cW[C)ڻRCG$][ ;#mVuDL$ Tr9;{SDy , 6x[zYGRQM{{PnϑO6XZy1۷ysPwħV7ΈðYL @l x;ԠY@=>#EaѤ-cW[C)ڻRCG$4mcO׵+,7@,]d\Dyp#BNNzd`"כ7я7~ݾo332:[\kgReoHHS3*qK]Y|GãI[Ư4$iYSw;OPI-uugwFtꈘI mT+ a rsiJl.Vwi"..#DB,HĖQ[à Ii?e?h<c߷oL_\]q\[ ng~Sm@esq^*XϸC߉Xێ؀Gi?e?h<c߷oL fixڥ7FH5O4hILt-uugwFtꈘI mT+ a ]_/Zo/ݟ",?miB4)5ْH݆i ăB(  p]FT^$in IҲ,jI v=S_jM} ^%7Si-H. F0T*!B !RLiמ.aWe#3v>d=s@!RLiמ.aWe#3v>d=s@^X:#ΗIe01&߱R-ypc}OO>a ( ( ( ( (9?J(KtT;yKKyl#1ǻ Qj61i9a0(^26?+Ԣ/mSObxY-/尌?2we?<^&7gwQiʿ]:L6Nvza9PqCTM[pOiQQm p+ nI An-'6c0@v$g2 @v+ nI An-'6c0@v$g2 '%OؼyOY~gn;owɍ(b9}Zou-h#%h™VmB;ӏdC'G^tۼ',g3gݻ~@sxC];N!ʒfp4npA$mlk`<ڤd2]Kyg(c `8VHQhΛwefv{|ݝ/J4yn|;ݞv/vPv+ nI An-'6c0@v$g2 '%OؼyOY~gn;owɍ(?W񵖟ummlhKlIyyl#aII0>q(8˭{=<<j"Q/w",e;Py%OؼyOY~gn;owɍ(b0vy.3S<k8@pBv8 %we?<^&7gw ð^kwL0j qi9w{E'۴ 7#<T ^0[tv|iQ6ve͠1唅,h%OؼyOY~gn;owɍ(b0vy.3S<k8@pBv8 i??b>we?<^&7gw p!a${Yh'VV!VHfHJ4yn|;ݞv/vPaMRm5n]?٥GDNq3‡@s–4'%OؼyOY~gn;owɍ(9]z-^KLm%/w4M j]g[o9,xt\XI67/mn1;_GyId 4QL8|&9p )6I "/ rl)#<8G6@Erw>5= Lѐ\5kwd sC@5?(~M|3;vy|۾Lnq@mRm2.vS10_ BC+H$ I67/mn1;_i??b>we?<^&7gw~oz-&tvmCo'$i&݌ H{/ZI:EK[[l[4ȏ;m2fB4P{O K$\nycFGUY $b7xh'we?<^&7gwvy.3S<k8@pBv8 ]^wyw8e 5{>aQt[}nSH,gKY0ڨV$'AP ][ ;#mVuDL$ T"כ7я7~ݾo33:|!Cm ͉:>[h@Xyڛ0v?726Ga׎os n4FA !Nߔ댐Ҁ9-T]^LfI i}K5fixڥ7FH5O4hILem5A"ƻ2\[!8`HSz$鯵&O/Ŗz$*v .}o]Yiss+:&BU Ā`H*a׎os n4FA !Nߔ댐 /!Mm% H>chAYxܛ`(F/pwtd!oK>}_~˷zР9?E5)uK.ukW5;&IU#scnF+m5A"ƻ2\[!8`HSz$?ˉ|Cuu40b+큲@2d 5_\]q\[ ng~Sm@4XJK)loĐ Y$jiГˇ0kP D7vdaC#bq oHi@k[wWVzAg{:\mJΨB < SZy1۷ysPQ@닷R+}A𘂂wݑ | h?C.%֘ <\åFg3|ɐz#0kP D7vdaC#bq oHi@k[wWVzAg{:\mJΨB < exOX(۪[)Ov/j " 6 B ].t-f؜H0A$)qPeľ!ԺAu狘tH]F~O2\=S_jM} ^%7Si-H. F0T*!B SMmqZ JFa! N | MxAH̗:@3HdlN$ @^(Gz輏:4j#KpbHve;W| HhRkot/aLYn@1pZ1Wa n ? ?ڗWZcH.s")?+&A? ?ڗWZcH.s")?+&AtxvK) 6`zkcӇo~~yhǛn7o@4XJK)loĐ Y$jiГϾ5VZ6"j#dmro݀|1P7E⫝]u?ȸXh1?m^o?oS3F^:hR!k%ΐ% $;~P2@+Rkot/aLYn@1pZ1Wa n Z461Mu%ɋ외̒]|vb?i;jϼqVQTSv>^?E ci7xXKR[v6H} F z67m5K(mxݬ]#Dϗ@ݘ 0:[\kgReoHHS3*q>^:hR!k%ΐ% $;~P2@$2_j]]i :X`lfp#?'̙hbIŶ^–۵%dbC`Ĝm?6am5A"ƻ2\[!8`HSz$K ھ^euK}E7i_C>DY<0P@P@P@P@P@P' ^}Γj}z)i|-f01||݁J-R;&4=F-=R^[`c .we?<^&7gw~oz-&tvmCo'$i&݌ H5YU\YrNѼjSn1T@#I67/mn1;_lP@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@ޗ8lOש]%lBMn106鷒a)}\YkMt.l[b!1IR.Q|!RLiמ.aWe#3v>d=s@m5A"ƻ2\[!8`HSz$SLѵ?^ԯTIuqFI ;y9鑀8=S_jM} ^%7Si-H. F0T*!B rC4W=)1}7C+_nG8w@iM zS]Irb&n3$W_4ݥ؏yp+-ypc}OO>aQt[}nSH,gKY0ڨV$'AP OM}57|w xM,[Q G-P7` \KK1^xK_l g v-ypc}OO^:hR!k%ΐ% $;~P2@:Oj?S%e/|οwӽhP@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P' ^}Γj}z)i|-f01||݁J-R;&4=F-=R^[`c .QOygW3{~>ln ^}Γj}z)i|-f01||݁ (ԣGlZD3|++$[~dBX1U]'RA{'Ym#f P 83(+cJ-R;&4=F-=R^[`c 6R$W3۫jXtQV13€88<}O^?jvmn $tQҠ ظDХ֥>b%ٜYY""`rڭ{O K$\nycFGUY $b#ƚ0V,ȋ7(u;KJ]tzw$?h~o[n݌}1Pszαm4x)-n"yᯝ\GDݙFrV)*+2gFAs,1aݐ+ #Qcm('G^tۼ',g3gݻ~~/&VT{yDC1\(}!$<)c@ F/:mo}_۳cvw|{?hjiu-h,qL"rXA GTLKo Eaca  OJ4yn|;ݞv/vPqGTLKo Eaca  r1(~M|3;vy|۾Lnq@ZMv:$O*IMovkGi$6yRLFm$mlH(S4_&me'mAxS0t(8]ͪMC%ԷOyf0 0As` pM j]g[o9,xF;0 F/:mo}_۳cvw|{?hjiu-h,qL"rXA nP?%OؼyOY~gn;owɍ(8_ɪMۋ'4(6bPBHxRƀ#k5Gmum'͜ӟrP~.&!['t\XI67/mn1;_ %we?<^&7gwv66 RA?;)/!!$a?P4`sn3Ohn2Fx# a?P4`sn3Ohn2Fx# ai&-nolң+"fݠanP?%OؼyOY~gn;owɍ(8_ɪMۋ'4(6bPBHxRƀ#k5Gmum'͜ӟrP@P@P@P@P@sz_>^wyw8e 5{ I^h\^֠]-İ,De H n}Qڟ,/!ϛu.ޝB9XŶZv< n.cgnCny @ǢkxW]cO.(Z> o#(c~%`[n8obP|:kIKĽm1e޲^?E qpMxAH̗:@3HdlN$ @^4mcO׵+,7@,]d\Dyp#BNNzd`4mcO׵+,7@,]d\Dyp#BNNzd`"כ7я7~ݾo33,i6ڕjR .."H <8'o'=20P/i?e?h<c߷oL Z461Mu%ɋ외̒]|vb?i;j,=SOhmuxcҚK3q$2.Ӏw|OXk)g徠ixLAA;ȅ>Q|sLѵ?^ԯTIuqFI ;y9鑀 C.%֘ <\åFg3|ɐz; ?8'gyvcLѵ?^ԯTIuqFI ;y9鑀9Mz/\iE @t!eoĬ m@#Zy1۷ysP3F4{RmR[q$EI'G4$F: OM}57|w xM,[Q G-P7` .?|j?nݼ'ڇv|x>>aIx%6Qijq;y"!$bK(@:XJK)loĐ Y$jiГˇ0kP D7vdaC#bq oH}S_jM} ^%7Si-H. F0T*!B !RLiמ.aWe#3v>d=s@??8'gyv^zYGRQM{{PnϑO6lZ&'5"8m >7I3|@7 96(HǂSauIqq"1b@v$dOE7No)Gn|gg?5GxF5Phs<& dB(n~>Z(M>页Jk.L_dd۴;NP鯵&O/Ŗz$*v rzYGRQM{{PnϑO6vRkot/aLYn@1pZ1Wa n ,|!Cm ͉:>[h@Xyڛ0v?726XZy1۷ysP3F4{RmR[q$EI'G4$F$][ ;#mVuDL$ Tr0E4tnQ !mb@AByl0$˼qVQTSv>^?E z67m5K(mxݬ]#Dϗ@ݘ 3 ?ڗWZcH.s")?+&A(2_j]]i :X`lfp#?'̙hBC4W=)1}7C+_nG8w@k~^6e-Ѹb"$@#vs#ލMMb-R;[hkg137f!< {]Y|GãI[Ư4$iYSw;OPI-uugwFtꈘI mT+ a pzæԚ>;Kn[(#\`UB0@-uugwFtꈘI mT+ a pzæԚ>;Kn[(#\`UB0 ھ^euK}E7i_C>DY<0$D~< UH%| eP@P@P@P@P' ^}Γj}z)i|-f01||݁J-R;&4=F-=R^[`c .tsmӮlTa>lpFGΜː0~&6n.ңȢ'8C 9K#v66 RA?;)/!!$i??b>we?<^&7gwvy.3S<k8@pBv8 7x/EtIm䲙Y6A, r(\N ySd WjݸJo"hf+$,h;:tGsu2@-&tR|TvAE%[axO5&5ۻ"m*H{/ZI:EK[[l[4ȏ;m2fB4s'G^tۼ',g3gݻ~@sxC];N!ʒfp4npA$mlk`OJ4yn|;ݞv/vPqCTM[pOiQQm p+ nI An-'6c0@v$g2 GmRm2.vS10_ BC+H$ ?(~M|3;vy|۾Lnq@IO"[JwVRqJ݈r@i??b>we?<^&7gw~&6n.ңȢ'8C 9KO_I%6N$<6ɰl8Eunjw["6;K<~TYE! A Jy|Ӥͬdh?/ wÞEI&4^*<9nRq)7YJm1*wv#{ywwDX r|ͻ@q3I'G^tۼ',g3gݻ~~/&VT{yDC1\(}!$<)c@QhΛwefv{|ݝ/J4yn|;ݞv/vP(S4_&me'mAxS0t(9]z-^KLm%/w4bMVhUm5yrܤS4oیbU F; w4-~YͷNmQ:s.@: (?i_?0YYI18mI#U `0:f,bTc'G^tۼ',g3gݻ~Nx^d,5dk228*S) R F/:mo}_۳cvw|{z~i0-Ťf3n0dFAR@, r(\N ySd g ̅fFYxYXX cs>E! A ?(~M|3;vy|۾Lnq@ j]g[o9,x>a>CכS]9E]R=@LB̊+P)@[hb@k[wWVzAg{:\mJΨB < exOX(۪[)Ov/j " 6 B ].t-f؜H0A$)qP?e}CkR\ɛ!/iv#^v ^o?oS3FVF7& aâY^4䝮d6]H[$b70V_`qA^QYf3u6$A0>ÐpbpMxAH̗:@3HdlN$ @^6=ߏ--Un'v/"0D bĀIe58? \KK1^xK_l g v}cp|QpGW @$MzgN@6($s%.rBI $(59+{HFA0dZvMy6(2_j]]i :X`lfp#?'̙hBF&meO۵hhہCPRkkrՌjV4v - pU{N8?5hk{ e,⹼9-< ('p0۹ߏ.]-",[vvs>_vb;p3jt[}nSH,gKY0ڨV$'APTtړ_C{p{ bueyь Pqy=bW֬no=||7gȋ'@#0kP D7vdaC#bq oHE7No)Gn|gg?5GxF5Phs<& dB(n~>Zˉ|Cuu40b+큲@2d XŶZv< n.cgnCny @']EE\\F X,淇& ?Y_+Bݟ7~];^a:6aeM "XbY?8'gyvԧ\c</xB@2qS@! 6 B ].t-f؜H0A$)q-uugwFtꈘI mT+ a wz67m5K(mxݬ]#Dϗ@ݘ 0:[\kgReoHHS3*q>^:hR!k%ΐ% $;~P2@$2_j]]i :X`lfp#?'̙h~F&meO۵hhہCP[wWVzAg{:\mJΨB < nP?wkxXT'mr4L4 و`!?ˉ|Cuu40b+큲@2d€ ( ( ( ( +Ԣ/mSObxY-/尌?2WE_Gsڦgŧ޳Z_+a ~=?67`dNJ&.(.e_-ߙ v6ox?IԴ^ᴖxuk(cY||T!x 3RTIM>QOygW3{~>lnw$Ml 𽔲IکG8]dyEUBl F( 8_ɪMۋ'4(6bPBHxRƀ$I67/mn1;_G7;{i5ۣly<&g#I6g pTF6$I67/mn1;_G7x/EtIm䲙Y6A ]z-^KLm%/w4'%OؼyOY~gn;owɍ(8]ͪMC%ԷOyf0 0As` pǍ4K_yz>tsmӮlTa>lpFGΜː0q(|me~|RJ &9RV)`Efڤ+mc8@,\xDgwIg6:uFWd|̹(?rjiv *="s>?hjiu-h,qL"rXA I F/:mo}_۳cvw|{oh^W:ye3泄 )il xGZDK)5 _8!L;Odh oUJ1lq6Ax_ɪMۋ'4(6bPBHxRƀ#񮃧K$w7S.DgI%-ˍHdRXmlP5)ay4>Y'URo;>Q3l1m,v`)õMBQͭ2=YD.j8T!= /|I}TA{)d+յR,p(?PqxRJuYu&6ΧipIV  Qj61iq-bkuyGM M|O]Zksev8%Ϙ~^YJqyK6;AiL1iU%brϾ^uq\&Z7Hk3B4A1+CK6~'u.̶!&QgYTtn0.4ɼ[a%)kkk-[r]F$> I^hq.?|j?nݼ'ڇv|x>>a8| u ФCxfK Kv26' I v/\djYhztǥ5ԗ&/f2HeuK]W.iB4)5ْH݆i ăB(  q/.Ɛ]y,E}6R38~WhL4q/.Ɛ]y,E}6R38~WhL4OTtړ_C{p{ bueyь Pq4mcO׵+,7@,]d\Dyp#BNNzd`D~< UH%| ea}o]Yiss+:&BU Ā`H*OkcӇo~~yhǛn7o@Ep]FT^$in IҲ,jI vcLѵ?^ԯTIuqFI ;y9鑀 | u ФCxfK Kv26' I v/\dIeľ!ԺAu狘tH]F~O2\eľ!ԺAu狘tH]F~O2\a@aâY^4䝮d6]H[$b70V_`poJ{ 5V3[2$$)W8xF5Phs<& dB(n~>ZwkxXT'mr4L4 و`!Eo=M .nb6ۥgTDH[jXP[ @#ѵ[iEYGkmb9&|0vgk:yti5K{FĐ+"vi ;@6.mbokjQD-X9F/恻1 5em5A"ƻ2\[!8`HSz$ 5o=M .nb6ۥgTDH[jXP[ @#ѵ[iEYGkmb9&|0vgԧ\c</xB@2qS@! 6 B ].t-f؜H0A$)q'!RLiמ.aWe#3v>d=s@sq^*XϸC߉Xێ؀Gi?e?h<c߷oL z67m5K(mxݬ]#Dϗ@ݘ  XŶZv< n.cgnCny @?8'gyv)Ս_( vW76&Xocmjoې0$D~< UH%| ep]FT^$in IҲ,jI vcLѵ?^ԯTIuqFI ;y9鑀 | u ФCxfK Kv26' I v/\dIeľ!ԺAu狘tH]F~O2\eľ!ԺAu狘tH]F~O2\ލMMb-R;[hkg137f!< ھ^euK}E7i_C>DY<0yͩiˢ&h EgK\(X -1`@N/ PxRY.XL"Vd2$ א)y-.uMզ,6e=ܼ;LʈC (\i7xXKR[v6H} F 3A JgOD[a3$XZ%@ 'o^@|O]Zksev8%Ϙ~^YJ>ɨCO}wg:ߗoN@P@P@P@P@P@P@P@? ě': NWn0 w wuH!c4wI˕=2 ՔFwuH!c4wI˕=2 ՔFqxRJuYu&6ΧipIV  Qj61iQOygW3{~>ln"[[/l0v%;ʡ]$30m̂Wp]5o_/E:_3ۏ:,n?6CfԒ;PyZ 3b˰%@#ƚ0V,ȋ7(u;KJ]XRTIM>QOygW3{~>lnY@qCTM[pOiQQm pGqMkޏ%t+O9\?2k->~$;8(G&’:a|iP?]o4n,]Redda Cue$` kSPˤh[0YAk&RY]'HLI9F--6Ou;nPa6fA+?J-R;&4=F-=R^[`c erQj61ia>Q*ewlWE_Gsڦgŧ޳Z_+a ~=?67`d;xU6x^Y${umT.2b%ٜYY""`rڭ ^}Γj}z)i|-f01||݁ D0^$<`JwBqHf`ۿ kھ^e'uK}97jgstY?(m+& +)&7_gͩ$w `g]ŗa JG5)ay4>Y'URo;>Q3l1m,v` ^}Γj}z)i|-f01||݁0~&6n.ңȢ'8C 9K'G^tۼ',g3gݻ~.%&uggS;p&vy.3S<k8@pBv8 w4-~YͷNmQ:s.@,QhΛwefv{|ݝ/#<ڤd2]Kyg(c `8VHYiV$đGF96Ԟc #H3?v>l~cͷʉ~3MWoi)neN6ݠ)ޘwy.%&uggS;p'G^tۼ',g3gݻ~@sxGZDK)5 _8!L;OdhOJ4yn|;ݞv/vP8|}yՒ=4o+ALnpGȤ3aH$%OؼyOY~gn;owɍ(b0~&6n.ңȢ'8C 9K'G^tۼ',g3gݻ~.%&uggS;p&vy.3S<k8@pBv8 w4-~YͷNmQ:s.@,QhΛwefv{|ݝ/#<ڤd2]Kyg(c `8VHYiV$đGF96Ԟc #H1(~M|3;vy|۾Lnq@ j]g[o9,xwe?<^&7gw~oz-&tvmCo'$i&݌ H5YU\YrNѼjSn1T@#I67/mn1;_XѬj:lSZyn66'_q󬫎FOS֯i43laH(̧!N χS|Cy85f4cy]sn@4(>!Mcj_t }F (-dՊK:˳y'?(wxGK'nqJO(ٔ`n%h>)Mb 24KLWFF2HE(VQN Ǧܸ5)ay4>Y'URo;>Q3l1m,v`(.$[PIk76r I^hswTcH֑ cR]*9f'*Xom. kjz_] +Ė؈E.|(+FTw oq-bkuyGM M|O]Zksev8%Ϙ~^YJqyK6;AiL1iU%brϾ^uq\&Z7Hk3B4A1+CK6~'u.̶!&QgYTtn0.4ɼ[a%)kkk-[r]F$> I^hj^jP:z%7K "J,Rd;zw.?|j?nݼ'ڇv|x>>aQt[}nSH,gKY0ڨV$'AP x| u ФCxfK Kv26' I v/\dji6ڕjR .."H <8'o'=20P'xF5Phs<& dB(n~>Zˉ|Cuu40b+큲@2d 6 B ].t-f؜H0A$)qhƟjWYKctn$Xȸ#P$HFA@Dž.={C2ťTwʎYʖk/˰'ڞ%ŗB,q%"ynK1 *5[I&knl+*yL`$q̓кċ~^AqLy{6IOGQ@ ?L"RObF,a$Ql@w+1|p^/ PxRY.XL"Vd2$ א#_Sd֚\]$B/-s!@_b6@; t=gQ/#&o{HdYN<=A'hzæԚ>;Kn[(#\`UB0C.%֘ <\åFg3|ɐzC.%֘ <\åFg3|ɐz$<7%:tG.`bgMcǘ9ޥ$Zy1۷ysP3F4{RmR[q$EI'G4$F3!Mm% H>chAYxܛ`(F/pwv}cp|QpGW @$MzgN@2_\]q\[ ng~Sm@q/.Ɛ]y,E}6R38~WhL4>^:hR!k%ΐ% $;~P2@;J ?ڗWZcH.s")?+&A|:kIKĽm1e޲d=s@!RLiמ.aWe#3v>d=s@^X:#ΗIe01&߱R-ypc}OO^:hR!k%ΐ% $;~P2@7,ln5Nx|Č;8閝iy! i>m}+0#oI[_nl6@xOX(۪[)Ov/j " XŶZv< n.cgnCny @kpϧ_٢15b !vʯpvqxgZ:Ξwx fHK! @N޼00P@smaoIxp*v 2]njw["6;K<~TYY'URo;>Q3l1m,v` ^}Γj}z)i|-f01||݁|I}TA{)d+յR,p(?Pa@NJ&.(.e_-ߙ v6oxJ(KtT;yKKyl#1ǻ hO%񅾂&mSی2C3, ewexX[)>ê[ɻPu9a0(^26?+Ԣ/mSObxY-/尌?2O ְ\yҮ11u;.D7zlw_fy.2yrGT!QX%OؼyOY~gn;owɍ(8_ɪMۋ'4(6bPBHxRƀ3|kTzu3 kk0 (1l r(\N ySd W<ڤd2]Kyg(c `8VHBVH#,ѼNC1"ͅ 1Jy|Ӥͬdh?/ wÞEG7x/EtIm䲙Y6A$I67/mn1;_GyId 4QL8|&9p 7(DХ֥>b%ٜYY""`rڭ ^}Γj}z)i|-f01||݁ D0^$<`JwBqHf`ۿ kھ^e'uK}97jgstY?(m+& +)&7_gͩ$w `g]ŗa JG5)ay4>Y'URo;>Q3l1m,v` ^}Γj}z)i|-f01||݁0~&6n.ңȢ'8C 9K'G^tۼ',g3gݻ~.%&uggS;p&vy.3S<k8@pBv8 w4-~YͷNmQ:s.@,QhΛwefv{|ݝ/#<ڤd2]Kyg(c `8VHYiV$đGF96Ԟc #H }^I'Yf78# A@Πe<1 p7nP|:'٭`7}1\ccw{r@ kSPˤh[0YAk&RY]'HLI9F ˽gXŶbyf#i*T;j \Mn=A'VT8d$Hy E󺇙&1uy5KO2lp 26xWE}ΟŻYSdHGV ؀Vc^֠]-İ,De H Fqe5йKIm^[B/,m%Jhwo {]Y|GãI[Ư4$iYSw;OPIrtxvK) 6`zYYkXDc?ɿvap ZkV;I* &,8!$yw$ 8t[+Һ~\̖|˸I `#1$F ˼qVQTSv>^?E 3Ukv .,6Wic-r\PW嘍P€9/pUׯSOKo2؄Db=af$mQo%`S_Sd֚\]$B/-s!@_b6@.\x^iRM#oZG0+yZUIw|嘜a3]\jW =֣ R>Ьf#6dgkq' ]z4˹Ķ-IF#bF6[6ˍ&ok { Znܗ1q@aâY^4䝮d6]H[$b70V_`?E7No)Gn|gg?5WqVQTSv>^?E #5Us -ӟp7-F&meO۵hhہCPhƟjWYKctn$Xȸ#P$HFRkkrՌjV4v - pU{N8?5w{ e,⹼9-< ('p0۹ߏ#2_j]]i :X`lfp#?'̙h8| u ФCxfK Kv26' I v/\dji6ڕjR .."H <8'o'=20P7qyK6;AiL1iU%brqe5йKIm^[B/,m%JGVkǨ$񵛛9 S ,o#p$24./5Ʃq"ߢiW_@`&S4^^͒nScFFoԹط~Q *lIhp06W: ԡtKŸo2EY v>.,6Wic-r\PW嘍P€8{]Y|GãI[Ư4$iYSw;OPI鯵&O/Ŗz$*v sˉ|Cuu40b+큲@2dˉ|Cuu40b+큲@2d /| NoK`$iow@ ??8'gyvcLѵ?^ԯTIuqFI ;y9鑀 j[Ieemb/ơ=o>VF7& sϮ[_J𽽴L"Vm~Wn hP@q.?|j?nݼ'ڇv|x>>aBF&meO۵hhہCPx|-x3WhLl$cXH]#%]B^֠]-İ,De H uP@P@P@P@P@P@P@P@sۚ#HM%ߕ&VO.VHʄ7VRJ6KGq≡KJ;}ŤK9YWbED*[u-?2xm%F)>9a0(^2 ONFO èYE'G"3 pfQWpIwxGK'nqJO(ٔ`n%h>Ğ)MI"[U( (@-Htzw$?h~o[n݌}1PP@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P:-]?SK}.IKsm]$AV#sevWҥ֛G޴uh`&VQ19R{mevgx/RԮU{Fؤ}5XGϚ m_x/RԮU{Fؤ}5XGϚ mwkxXT'mr4L4 و`!Ɠy7l5-mmeksnKć8mW R;K8Hn.[ B<jP@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@qqxRJuYu&6ΧipIV  %׭Iش Y.趈oE;,!!|$qգ+MJ^xz +O{IdEԛL [@ :%X.f5?5KF ޛ٥K*L\!nl6(ovkGi$6yRLFm$mlGTLKo Eaca  OJ4yn|;ݞv/vP F/:mo}_۳cvw|{z~i0-Ťf3n0dFAR@$I67/mn1;_cxX[)>ê[ɻPuN>kǙy*W\ې χS|Cy85f4cy]sn@#ք:z]RI[tveW}줂Q@b%ٜYY""`rڭ ^}Γj}z)i|-f01||݁ D0^$<`JwBqHf`ۿ kھ^e'uK}97jgstY?(m+& +)&7_gͩ$w `g]ŗa JG5)ay4>Y'URo;>Q3l1m,v` ^}Γj}z)i|-f01||݁0~&6n.ңȢ'8C 9Kƚ%<׽cK9 W06r##N~e}_Z}յI/vq$QM$u'g(bO ְ\yҮ11u;Р u?77OZqncJ8Ǖ<;hCǥ]^O$1GfUwH% ~S# δ!c.'ڒNИۣ*e$?)㑐 M ]jQ#6-"]]ʾ[-2!V,m. Qj61i@P@P@P@P@P@P@P@P@P@P@^֠]-İ,De H ׮5I(X֎l\xwTLK6$gxgZ:Ξwx fHK! @N޼00}ezWOKvo{9w !lf$UY~]hztǥ5ԗ&/f2HeuK]W4mcO׵+,7@,]d\Dyp#BNNzd`.iB4)5ْH݆i ăB(  OM}57|w xM,[Q G-P7`t[}nSH,gKY0ڨV$'AP x| u ФCxfK Kv26' I v/\dh]x^kRED Lh$#(` ?ڗWZcH.s")?+&AiB4)5ْH݆i ăB(  fixڥ7FH5O4hILt}cp|QpGW @$MzgN@6(ҥ֛G޴uh`&VQ19R{mevS_Sd֚\]$B/-s!@_b6@#fy 5cx͜`C)LBD7yc]^To4/ 0)//f7 1##h7{ɄW\l[(م6L$4u` f8on@+j^jP:z%7K "J,Rd;zkjz_] +Ė؈E.|(+FTa@F{tH#yύL. ĎA s?"uD_9^iZ!0"팘?1|@ ]Q!WVl+"Ȼc&5}O_$ TcH֑ cR]*9f'*Xom. kjz_] +Ė؈E.|(+FTw oE̾rҴCfaYE1~b%]kC/٘VEvLjvIWd ..,6Wic-r\PW嘍PxMq5X6sg!X!Pd#ndW`ׅ.$[M> fٲM*~<~M^a:6aeM "XbY xgZ:Ξwx fHK! @N޼00'ڞ%ŗB,q%"ynK1 * ߃kѿ>/*1t=gQ/#&o{HdYN<=A'h{SDy , 6x[VF7& ,t-jɭZo4$,HH(LB&F\Iܐ1ln5Nx|Č;8閝iy! -muq 뻽AU#01-$F(P:P@P@P@P@P@P@P@P@P@P@sۚ#HM%ߕ&VO.VHʄ7VRJ6KGq≡KJ;}ŤK9YWbED*[u-?2xm%F)>9a0(^2 ONFO èYE'G"3 pfQWpIwxGK'nqJO(ٔ`n%h>Ğ)MI"[U( (@-Htzw$?h~o[n݌}1PP@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P:-]?SK}.IKsm]$AV#sevWҥ֛G޴uh`&VQ19R{mevgx/RԮU{Fؤ}5XGϚ m_x/RԮU{Fؤ}5XGϚ mwkxXT'mr4L4 و`!Ɠy7l5-mmeksnKć8mW R;K8Hn.[ B<jP@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@r5/`/1]"[E8,Cr?J(KtT;yKKyl#1ǻ XDХ֥>b%ٜYY""`rڭ ^}Γj}z)i|-f01||݁9?J(KtT;yKKyl#1ǻ Qj61iwe?<^&7gw {kھ^e'uK}97jgstY?(7x/EtIm䲙Y6A$I67/mn1;_GyId 4QL8|&9p .m`}&egnٻv1s@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@rZ8gZIƱeWF8 Kr'ڞ%ŗB,q%"ynK1 *rJZlwz=ա[bҪKG,K i~z}[y$# 1#jy-oK6~'u.̶!&QgYTtn0>.,6Wic-r\PW嘍P TcH֑ cR]*9f'*Xom. WtM-'k-ͶwpFbIXu5%^u6oYDbcB @!:o=M .nb6ۥgTDH[jXP[ @1 6 B ].t-f؜H0A$)quy5KO2lp 26S2_j]]i :X`lfp#?'̙h8| u ФCxfK Kv26' I v/\dji6ڕjR .."H <8'o'=20rW R;K8Hn.[ B<jP@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@? ě': NWn0 w wuH!c4wI˕=2 ՔFwuH!c4wI˕=2 ՔFqxRJuYu&6ΧipIV  Qj61iwe?<^&7gwvy.3S<k8@pBv8 7x/EtIm䲙Y6A7(ƚ0V,ȋ7(u;KJ]Wڔuaڦkf~,AO5m* $Ml 𽔲IکG8]dyEUBl F(8iO Aii:yAahgS$݌J(KtT;yKKyl#1ǻ ua?P4`sn3Ohn2Fx# QhΛwefv{|ݝ/6(ovkGi$6yRLFm$mlI F/:mo}_۳cvw|{?rjiv *="s>z~i0-Ťf3n0dFAR@, r(\N ySd WjݸJo"hf+$,hFFf_*t3k(;mp@%OؼyOY~gn;owɍ(b Ƿo$$K MA9eMB9T# F  ۚ#HM%ߕ&VO.VHʄ7VRJ6Kta?P4`sn3Ohn2Fx# QhΛwefv{|ݝ/6('G^tۼ',g3gݻ~QQ nbMrS>͵HVzq hQhΛwefv{|ݝ/#<ڤd2]Kyg(c `8VHC[aP[Iͻ",9>fݠa\ӿ!GL'cݳvcqڀ4(>O ְ\yҮ11u;Р ( ( ( ( ( ( ( ( (fy 5cx͜`C)LBD7yc]WtM-'k-ͶwpFbIXCY^4䝮d6]H[$b70V_`|^֠]-İ,De H X' ]z4˹Ķ-IF#bF6[6ˍ&ok { Znܗ1q@鯵&O/Ŗz$*v rzYGRQM{{PnϑO6\KK1^xK_l g I{xo|Juc|:\<;%K~Ǐ0sJW0kP D7vdaC#bq oHk~^6e-Ѹb"$@#vs#aâY^4䝮d6]H[$b70V_`]_/Zo/ݟ",?m$[PIk76rh$1$c;[Wh8lOש]%lBMn106鷒a.\i7xXKR[v6H} F (' ]z4˹Ķ-IF#bF6[6fixڥ7FH5O4hILem5A"ƻ2\[!8`HSz$OC.%֘ <\åFg3|ɐzC.%֘ <\åFg3|ɐz; ε/5(u=n%̑b%hC)2@y`` WiYZjzfPI-ǫ̂>r[ Ɠy7l5-mmeksnKć8mˋ: ԡtKŸo2EY v>.,6Wic-r\PW嘍P€0E4tnQ !mb@AByl0$i?e?h<c߷oL9-T]^LfI i}K5WZy1۷ysP{ ھ^euK}E7i_C>DY<0-uugwFtꈘI mT+ a wz67m5K(mxݬ]#Dϗ@ݘ 3<'\jzՔm-ݧy~Od||hDŽo.YK8o-KO73b ?vD)6w MxAH̗:@3HdlN$ @^ܴMfOj3?Ep@|nfw/Pn$r lP@pWtM-'k-ͶwpFbIX@k[wWVzAg{:\mJΨB < SZy1۷ysPQ@鯵&O/Ŗz$*v r6^k؛Jc忛nCc|#hE7No)Gn|gg?5X4mcO׵+,7@,]d\Dyp#BNNzd`Eo=M .nb6ۥgTDH[jXP[ @.}Qڟ,/!ϛu.ޝB ( ( ( ( ( ( ( ( ( ?/<=="My&m-Nv3@/.?fcoo8'G^tۼ',g3gݻ~/EnӭHm򤙜 $۱1PI me%O:5hQ(݃Jp!a${Yh'VV!VHfH/2Gfueb`)l)\I67/mn1;_g6I "/ rl)#<8G6@\J4EWf2E*>F)p'QhΛwefv{|ݝ/#^kwL0j qi9w{E'۴ 7#<T ?(~M|3;vy|۾Lnq@wXӴfmTH3hyhS|Cy85f4cy]sn@35KF ޛ٥K*L\!nl6--6Ou;nPa6fA+MVu=jxn˘LQv'< ^j:kse zuзGek&H(~Yw ð^kwL0j qi9w{E'۴ 7#<Tz~i0-Ťf3n0dFAR@#.D7zlw_fy.2yrGT!QX%OؼyOY~gn;owɍ(9_ދI[dI38AIc8c6q^kz~[/*2#@<\I67/mn1;_cm+& +)&7_gͩ$w `g]ŗa JjXxO5&5ۻ"m*Hi??b>we?<^&7gwv66 RA?;)/!!$a?P4`sn3Ohn2Fx# !i>N>kǙy*W\ېSFCMi|ۼ؝~Wβ:=PCNUfϵhP@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P'u_лѵ[iEYGkmb9&|0vg|:kIKĽm1e޲;Kn[(#\`UB0喇iM zS]Irb&n3$W_4ݥ؏yp3<'\jzՔm-ݧy~Od||hpMxAH̗:@3HdlN$ @^Л+u.t-ߔlʛ&E:r77 E4tnQ !mb@AByl0$OM}57|w xM,[Q G-P7` 3F4{RmR[q$EI'G4$F$][ ;#mVuDL$ Tr1ln5Nx|Č;8閝iy! -muq 뻽AU#01-$F(P:P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@PK UdE EPKAAOEBPS/img/roquicks0.gif1GIF89a9vvvܺLCCCdd)<;;IIL(''vcbb~~~|||5JPzzzxxxZkkk\\\444FԒrrrˆg􊊊TTT%58lKZo>>9hMksFcj]X{Rt|,=B&)Uc?Y`)*񨦦ig"#T~~~{{{hW.2vvywwwONNyyysss~}}zzy///pooOow`H!/2!???oooNGGGtttǷ}}}2;=877\ggg䵵uuuf!,9 H*\ȰÇ#JHŋ3jȱǏ CIɓ(S\9Q^lbPD.aʄɲϟ@C&7De6ТGJU64 2կ`:0Կ!P,|Dȃ YB>|1XN9E:@Q3kެ9WEܘW ÕZ&xm?.0#t W@vB`tU. F{")ҫ_Ϟɏ ۓzds)(rT# L#P П@d)pEd (A4A}7A |)Ȟc(L W0 gHc*8\BC=4XF-tSl =^%LQ!ЀCa`\& `PjTJժs?!ŭȣ}C*#??NG*GKb;X~@KNֿFy2)X&X)fe`5UE-V}dTVW4}ZK-Lp"+`jAZkLS C!3 ]dr׸S,PԺj{҈KC9 _R#T f7>*`6ױ4;N!D} 0tjHE(ˣ]8<R @ 4+|ͱM;_4@7QHi_=ŕ{G5LֽhCSp$` jܣ fF3V?xNawF۳+1( pER: t34;2`WPʮD() 8+tkpy`I0H m"hl}8Ӄ8JwCbr/N7;!3DH)P+Ԃ:ʦpjؔw#8u!E'ˣX\F v 0l t90E` Xqgp-Z83 r[HG:SnC8";9;J P`@۩T >T":O;<[|Q5^_?Q ,tw([#4 'b#x>_#y T18ng&'(я7z(i!. D> hTEf}Y#GG3"C?\|@\'a\j* ʑͳrJ~c=mWܶ{ P  ` Pf|7(':dC.>C?@{T{'Q 4 |p֠ @ʁu3;` p(*ȂTO.h0x X 5 0 7Ķ}LJ|E }7Є' QF7U8t%2ȅ`_( ܐ@    r8AtGpIpE ! ~d$[؅(@@ : @ PE`fWp;8N|p7X v`W΀#`y؄P|T9Yy Hn^ x،%ψ h6hH0 E@ s`W<0Cp A 0.p#㐎A8h>`IWD'X`x  %(Db9dYfyhjl 89Ÿ!9%82:P7В/Y3 DF ۨ=)RXVՐK0%9@@!`X\t e9Yyy oquyɈz%ؗY 1٘D 9YJɔ~ )Uy ]ɚZPyٟZZt)iy $i9B)@)8?ٝ߹陠I멚 ( t:<ڣ>@B:< j)H ʑ yIi 99ٙ㹢陚ُ4tZvzxz|ڧ~zp#Mʠ|iy)ɥI)I(jL@,z1ڦxOrڪzJ_:ZvZ~yZv&ʩ)-칕3Rs[@ڧpYKZ zRZ^*+0٬*Z*njOb` ۰*z™꺫:ʜ)J]z%'ʯgj:ljKga@B;D[Fko;>f tګ X*󚲖 -):0Z;ۧYp\pr;t[v[KK{IU+#+'ۡ\^)j׊ڶ;[){;kL:N 4Y+K]8h YJ1K{8kk˧m{[J[:!)q;Kt~껾=[{˼ۿ |:Kۺ銽S+`000`L.kt~ڶS02<4\6l,犫Q 뮾WF|HJL;Pd{6Kjڶ Z\^`\r:|Ulx]٠ڎ]T㬧k Ǚ} L}A]LeѬѕ=M[׳ɵ}Ҡ\+{oyUڀ D"a,&M-Ǽ=ېM % = ]B}:{1  0> >@߮m!8}y(N ) ( lت7 P 2D^F@G`v5۱|%Y}N[_,[n?Nبmӝ3 % IQPIu*ٍv߸mD M4 n 0%`p2 0@@ >@"v m#-9;Q 2 ܖ>uxJݪqpIP* `!>0 r<g 4P @"u j  !N✭n|N&' ( 600F& i΍ ̚P6 P.ݰ&0 D` G`0 D > Kp 0/`5NR Y oٹٲLۇ5r0  ;> p pPP P / p/ rD03 P " f Py [ a ?p 00P Spy pS ` OK1$(0 ʖc=pG7LCX{Q##* )W?gA%Zh#F  "K*%J,@(RAnt5, A7 4I$Kmhxe ^Dr[I90g!Oc68'PX'VWiԩQ7ٚ?e<(4^ըOw .T1O (6ֺ &L$;h6R m4]GcqلvVFbkYg3s00 Pw]vExw^z^yI}_ V{:\GUbepvK"[:vx!!w]_U`k$XyD5ezh zA)nh"+ zk%dk{luV;i~nqN@.0(^`OpGB%i PI:,Wi b5F`iFy~~MZwu׋#`vܵ}w[Zȕb=)xWw>(v)F!`AbF%[>ʿR :IIȀ=auFa٨t:T:~=4*T yɎ<)``pC<p! آ@?-ORC4L2qc bL1~a gM<aGhERl``! CX^s;k6y⨞ U`e2.p<:`[-Q:%xX %xґvDiTe1Ϭ,*VyD a {BІ?@A (.P!|+4Z2rcWĢ%p>p#!_d-eS5ԍ"M[L}lKJ(K^ D !7VV'^䦜3TGv(SxB6 XŽQU,E#'yv񕓓$g0Hr/]{d{%.3X.59ɧp49"Pt/m|ꞤY[.Jj!(&+:kX,5nE8*YRr$4c;=QoX療up dPBMrL@s8v08vBȆFȆ_ (=&;;:+4$llS[vxAv@c8HA2-,+B,ğy(p1l)l . B6y3ól3 4<ۇ6dCln(Ȇb@x+Ć'$08o3@P EQ h o( ^("Ё+TREP|C%:ĵK?=,4VER, ȀJRP['pXdLLܶ8OtZo8(0+Hk$9,?;D&<cP H"P BH%NȀ湶(C<೺G;+ +ц8ps龚Xǣ {AԵ<$4lHoX@_KƾA5X EH KɀF ι4S61¬%R@b;P;2 ]TDPEӫaTUP GKuPLO}TQ~\ɀt TB"RKP,RId\:n]M] ()*>a,V-na/0.WFXfHvc[6\f nF\(._aeK)fA.d6TnfE3ienemS^OcbdRFBFefNdV^hg56zf|gNqrc&S^fD^gvwvdfWf-`'%gQ6A6ee>dUvVfdinhjezfiچNhj~jjjjj&ܚ=g@iu>hF飞ZOkkkkkk]ޜ3dkFnge]PFexOlllmm.m~ej>gifvg~䇶lFmnn.n>nNnVd¦ֆTht6j>xm]-ܝo.oc0.B>~oof fFVl^g.ifhVi6 ^j'> 2x 'hp[o?n.plR٬:`@38/؉Vh~,r' W~q'w&r) iq.q^pn.GΪU(>1c'2 ;; ,%Ho 00:  Ds+rMo~6k~ێl3Oi4OKZ6op/h~P3h`1 x(8,`t38/XB 0 ~%8@6 G8'%v%`Je"Cc~TnƦmOmSwkT BXuVvr2~h6 2h( cPkol7נ%/@xh(6 /'X@w^A.0Mns,tuǶm_F.URV%`/(?~9 ?0W? 3 /B 4~ +xxh _K`.pn/Lz o2ez? 'Gz#z@ 34V ?Hfv2hG{Ie RDM?NOw0GPϑJE w#03 h i_/ q?P~^x( % h83 @>  `(wewhD!qoŸv8R͇$h`jAN7œRj] З}H9:@i]ꋦ\&`j'&kfn}M X`p_11NFdw&`| +N>ePܯI<*lH):)j AJ JVJ*jd9ȫZi 4AB,pl*svsf"hlVbݬx ԭ`6MMoWEqg Z(f]JMB"T |P7 \}]3}J״o hR 5n['A#70M'Yj1yqkd @وRZ7:E~qzw:){> Ě}©99Zmё?8vG7}_'qf8L/O>v}ف x߸ n%T&+)1 `cW/H X1 p=iu=;E9yoYs"a2.O9z 'ҨPw B9Zܾ|=e^@ +t#\6Ų'aX̢aS\|&Rjp+i bwHQ0 e)XzĢ fj<=rBa&EU#`E(%fOUI$j5p1b{pw% 4 B{@&)@7pּTtoM'bN< &ьnBxX!˘*Qχ;GIi:JTYGI^>]j3FHfp>:{gO~J5*I8Th@=9 AWu"w {E,$1 Ri,>ۊ9rUpf)"I+bKhjgRBJ6We{[8׺ŮtK]Z.;nMJt[5ozB7䵮 :p ZN\V@R4`Qi%&`;p)+q =<ѷv0̓P<_-\*7Zb=ȆL"HN&;Pr(e(cP'w!4U>ͫxW;Ʃ ,i,m-x j4zQfL:xγuݢ8g;XA^D4LT<8ҳ'MJ[Ҙʶ._ʊ,-44)D/ݥmfPNJC.MZ֖fK&*iÓ _*b$nⰇj[F2\O ³uS+dN7Qqg"Z i"FMpN8,?we7-Z t*N.V6{ GNr OM*r$~Y7lyv>:%>*Oz!B|LDԙ sq_\;OvЍ{=]/:pN&\$EuV$_uuׅ>H/൭[[ۏx~݈|`٣?4O( js,;ylZm> yW61Vr(wz7x~M3Gj6݂71A+f3vH'pLe/?%aq+tR3SN$Op uBuXy3~G+Cz~8sҗscm w`s!nQ`dvxb+c!L$C71&|7 jF>71;'KfPnqoLu=ywJaWtshmj dB&l X{vq C:zO[ͦY7o%Dh|) !/,WW-Y7}YzѸsXm Ї@(BM׆{ 6\@~d+t}bY70'|DpYasLstXvgKt  +6u?5R2Dy{RA{Hx5jf\Hoȉ9 dg~Q@q4@0Vw2Y4x萰 ydh% i qgwsGGd &!m)lnI.@myliw!;&5Ipeu>k=Ȕ ٔ綍5p// !Yu . / .P2`/yS7# og ,I ?S٘5وk9.%@##0 9 EЗD˹Nidw PoA8KywF90;.)׹95 IprLj`qcX)4Hvlyv %;@ٙCP!P٠Y#2שBDDJV)x`pw@ xKBnN@uNf&Zid(d)o/07PD|YzC!@YR)r!x"3712)$$w1O.ʨ'%1u" sijdDG+Bʖ/  %ЗYIxbF, `sďDX!Q+G)':xr'9s.Iw$jz*JZ:b ' :mK$Yh"2N47'ح7w0d"C1| ;[{yZ " [ $%. в (;d)$в7)WxmP $DX{7Ha56)ƞ?vdW Y619t>c{tG 2Kd!iKm>0dm;d!0*c' d+ o)u ٖjo9 X,z |\7SRNaq^4č蹾#EQ0A^ ` V[ w:=YyY |[x2%0\1F !,*ƿt3 F\͘NPvu ?d9jVfThwB=/sL1E7ԹKi `i. E˭j33'Tz?_B1;ϊPYdƙ ߏ@ߒMDafyhN^.k͋=> )/\|A J|00$0t &Vh1#F 8<ءW +؈JeV5PnrY4$e|o@Fs-Du$(4<  "`'@-b^|^Xa5؊ Ar C4ViV> jipGX =wf~YIu-@h \BOj#(d2Z`ىlm0#!猉hE ',9 )m`qy##¥ ,J\htWɬ.Zb*}2YBB 0FpgcKd JdBҥd2n_@M"kjԨkAHAH d:b0 p;TJ3Z4m/*g)%,0@YWHڼdZ5/,@ | +r eL?tIB1)li TʬdS8\zp?a2rMwvߍwz퀽{/% /p ?k4:y:>pmFӔXMC$%vǠL,*pE5@NA8@=w_| ½p@@k(jGXP* CֆQCEimR:+Tϛ;2#)aBJY*/ۙ} 6< v`)u'hH[ `cd`'0F|CPH0 ;b p) 4SH+Zh`Ϛg@ n(0 @x a=Q`</A9ڠ|bū0ʏJbl:>r CeKH X'Q:xfQg>"YA$h,J|"h$`/ߌ9d1qx _]P$Ո -QI ~Aig" "ʈPXOy]AV1 `KXÞ54cŠucVm:RN!!7CFM JѶPT)Pṉ,`ŽxGNOh}8nQV`WY{6MV ehCPcRYIOFN V">Ccs)MH, :H" 4` + MƫKb2d&8Ӣ"1DzWNpTV<++uK1v[c׸ʀJse(R;8Ȓg2N?ԁ8 "T"3.D(py! ҉nr/&9bzwBЖ#! Yt­\+$U(@Л0W+AJA~O[,pUQ^Y3IydLPx_&r!zED fHWƤ:I5(*0]TzL*@7ASA7c🧬9b!Q΢u3$$2ЋMȅim7> `1@^k(C2u bM0 %ɫrr%Z' 0 2.#K_B/@EKQ =c Ah"@{CAwok ^6 K % Bc86R֫J/#zxA,@ GIPaj^|Wաg(6W0 ;dGGs{j ch&7* @BnsZa9к-ʺh/;Ԯxlh@q`Jib+(=1RM@DIr`2EZLHA!}ZMу-Cm3>M>Ii [Ctj;* Rϑ;[te@QvFq!K"qQf"RA y  g"?Z"L*J(keSvK,(+]ldzA^fLCqD}@x4sGHѢH<4S(ش4dV$KHgC>CbH 3Dow6 >8I;Eq5gF37F?'=J#+wrU!T%H…4Α0 gHvp5#r#UL\є024}? xNюcqMgV+;[6QAPG<}s(&#GQMF> Iz>Dw5'#yuD: ӰjpBam5Md!TUxg#[@+:xv?H,b$\HR+Vzz0㕌3axQqID"11B(P;#fg>0Rx$N2G{T É sn@ Aq549ٌ z/557)d-y GR H :䃅š0=@8$R4 bVg9є!JY >tg4_gj#4`BuT9ۣ,BO19H,T==t$)r8POC5 aNSNcÊh 6Ш8H-ʨy%nzjmsꩣ jVbcJj^d uJ `E FZ jZj.S)*Jj* 0ʭՐ P: ֮Ѯ:JD7*IQ:[))"xZ6 [)@PdZ D)ْ!&J%" *۪(VG1!I1^ Ҳ;[#b +,T uR%')2zk/[]+/;W#F'V=۶q+׉ ЅW˒T ǠXk[KF[q?J3+ڴ{;Kσe?[5 oK (K2;~Za~AO; $90"^dN*+ bezo; JKL*c;X` zE+Z'{ZU " +C۹۴:h$Y9*Ԡo0v%ScQ  ]ppE[{ضKA?-;60 GF!Kqd0!]q M2V&-'SH !x }!˳f۸ {zgkp0Pq;xk,xk~" d)A2Ѐ&c PiH%G 2p۱K|JdZVG̩8gzbmkezYܭ$IdI\gol0A %@9& ݰV|*L|,­1 ^;\f|" ˢ ̸q{q i}K% ϐ{i7pυl{3ñ2&p _Kj*; -w쒜JΩD^\P=r GŦ6dK ȘtЇ@V3p]KaƗ\k<7p};dXHzukL! /m?6+X)\,j5ܵ˨Ԟk{&0+Lѯ@S0rx!^7ԍm=x;ԎM:){%y@_!< W` Ԃ]צ` l_}jHLkx+NåٰҰ ) O ك-Q{|K3=ڕh} Zҝ:lɡ<ԛlڣ 1 +< ڎZՑ>m<ɣK׍+Ҭmֻ.kSoѮjљۤŲ{}^Bέ-iMU@qmkp[ |u}`>p;]\̴g, .!R -~- 6.XP +tK""+>2.*B豔^Pʊ갅衧>!Pjn껮E~[齾eS)rn$l\X~WJn!㮌TNn4d~.N஌mc o!ZNn^ R8s1'l"p/.B+&X7H6K8?#XɐY?p!/ |P$`c I䕰j2W϶tM X= m\ ?΀9O $OooуOASv) [KPу}ʿ K"Tƿ "O?$+O6`3;/͂goįܼ    ŷ ƕ Ӄق䱱 $mih)e*\x)vA1fܨQōCrH#H(GyReIML41ܙI?_l2J\ J*YTd0-"կ`ÊKӈv f2MU n5 ܿ f!/E0M"KL0\޼93 w9=9dӤE#v̺5&D4@6ڳq7XE߿o@s?N8qʕ#|qϗ}{9wZ.A;`=ͯ^={׷O_@?~4~_w_}`8U@ چ*Ѐij!@]h"jX+bdvڋ58"7xA+3⅔r}V"3.9dN.e8Jbv1Z`BRh%RU80Vin٤@N f}Efn&"'Cj!Ji!@^Z餟 b~iidzi*V *%8AF)k9iUj'TiS!F -_e 4tJZbia&cA)&g7{*'V<]ja Khho b0ևg{6X,4C d-zr:@^,֚0Il+)rmZyH@x `5]7FSBeIqWҷ@ h7"Lrq֊nؚm *$fS.2+|'bL%R콣wL\'dI^T?uWeޙ WtxۢB x P(`RrW0` HPA}쥡]z#fJ zX^.N#ƺh mNjYx3oP/bmVl QLpb4P'&o>0VA ~~ &/= /RßJr,Xhl ˢ8TLs `5A'K@ x Bm@RZ4 @ p^h hEmx͸XUA YВ3R H iE)a/ҦDX&}JDǯ}J5ݲ +@EFn!Q2)8p%a& pi.sF;;3qM1T9h)h\ R35, Hƍqރe#_I:ES(D 0c@Ѱ`yT' xxL%,!F;b8e<dH `ňιM@4s{ib2F*4b3ź:Oktac!؀X-($A8j A2I( x2AȁZB\\bJ0c8J(t8 33uBJX!O7:o&K~`8GbXhxW+"#؅tXgD]نrgX/o/shQ|d(4'#8~F$H~;qBQP8;؊~a!T~6؄ 7V(4k9'H3!H(e'с"Q~ph_p?apgX|Xಅ@r1{ՠ{yQ17GG# Q(%#h!T7p{Ɏ; YE7x~!A~pa 2AOX'rR7`#P 8@#;$Byq~R0 c]9Q-bٕ*0Gn)>‹:~T2~qRx3 d0a_BmH#`8Yp0UY:c %Йy(pɋpH1a~P~m}R~C ~ T-;ԗ|V 9%O}4(8CC|Ra#8Y,' ~ |xigy#9i% !0l IBYv큞ڸ9 PΩ&~c#s~I}<$~m،SS'#X"\ٕF#B"j؁聄p)% vq!cHsIxQ4(ڡ%Y%0!Sg!ǂyЙi8 X8 䑥[YPx":' !B JQDq"8a*JC"'ɝ%!/B!1qp0h~q>R#xMz~)Zʊg-Jᠿj*3CҚ 30P+ʬvqg2O P2Ȍ}#4 Kx,'z;,J{180:B18( !u@#xpZ秱) adIuKI«+M ֝#WJ,ǮK(ܠ ]&ɂ|eӘf]fsCzV5%3ϖH<+ !2aŇ.6)(}j4x?IN`vY O mgLĹ0-> p Ϋ*D `ܴ @4pjγܶ$1xԻIaMm2ܹ9 |NPQK"wy=*1ˌaHƟ+.쇾C2@1Ȧ sխڇ&'IʮG ~>0a]ζaӇyV2odH1.|$(dۄ"~mZЫ'>_A/`+" ikN1|OɎ(*JƼRAsx!H06cPvwx١ 0 `*H8+<,"v k!;$j|˧@)\"sxqM,6AK҄E+ס”Kbkǽ`֜12MV2 q"X ‚OKiPG=.720(ς!8(BR@pXP0IYiy 1XA1aQa@+1 p+ ˻0!!A`p @@! ``^o_`)`@IA F`h LH8IJ\)T.h1!H{pzȻɝ̙4kڔ:T!xV fp4Ԛ pPNzŊ`@hvС)VhpTԙRJ+/`AUra X`  t{H7(8Y^nھ;w&jPUA,HX %qؐᜳ2X= @`  3e#v+5x_V h>&A1aD5>׀a$0$ @Y%tIckpJ^c:z7z$HQ5- wTI }tוWui@G_{9VrEHc1@cvxT@e-[T#P`AtS"b@@R!UqU .OL;cM]2FDye\ D -pEck\Ƶ#E1A#F^쥣Uv'%A ; E =( Iԫx$ZU>=܍.0_9=yS@| ե|6 ]F@KPXy¨pl;Xar+JhwϨcRK9sB-@s)e5B  }[5!Ϸ_2́5)jnJoM7se]<  @xXӖX X^I 6 bҨ("ߎfh!<'Ki@^R *Si*{I(R#A}O/4o7HNI.`^ c" ߏ$nN񰌣y ^iVblwֿw%PB )v$^{ `0in&$L~/# ^P>4 gS4SաNSdw9S3"FavZiŊY4Vvc)p QU:O4j4ġ >ʀ zA B+!gCy5pmV"36x.#T*\/!ޥo&Gþm"jbi˕B43",E3u#yMw[5E{17 @]t i9HI&|@iZDQs>oڑ^™& tkRɪr$=+/ !;Nȓ|Mi2=s^)/Pz$3FR"@7 K@ `dJgR@ps9 A FPOhpcL(IՕ-зV@ 8n#P `IJL&؊0p`18=JwH T@pH3 G Ռ0~1sDPe+a)l!v+i| 0l( $87T:q3D^QVfp' eiSvw`w!& f$fl7_0LGm=r?d@]L,!p " V|{B)dg  0,*epp01`~c D=,oq'j'h(2'   $X[cA_@jv*" !r%uF W f FRAPsІhEf[)P$ n·v` $'e})kȆ%po(p4)4#ۂu`_;Uo!*a '&_[qbhXe˧1U" ,@0f--dK5y26G@^\10E0)k&0{&YZ>ö,G:G:T|P )R)kY],sm@"ߡ@;SL|,V "It9;R/%pKWa3^"<$mE5pwdUIb7~_3KG7L*AU(s$L$5`*D:aV2E7)bQ@' %:XO;i'JDTA.3D%.Z c҉(AU *~)`ThAT45ޟèع| &@`@XL`oC ;#u}y_S\൦[x 2I 5R3vr4d=ꝷ"S+|ɯa^I%wn_nnCxKB}AXvwv\UӞ]Ťn =7~?-PBqAk9onܴ `ϝ% .6"W+ "`ȧh.g`Hjp-N o_-$ |-#@ 6!gW(..61⓾Sܻ3 [ny}vhI+g %N`[!d[8387 ʷ ו:Qz#}!S(an &{]g\ .x]nŪ;>4= h @ܖ4#;g6߂~7"z8CK!W$ ~7 hͣݢ.@l Z"x`p` G*c=m>S? TBԗ΁< WWpȀAQ0|f| Ö4d `t/ 4%*&,xY0gpCV,~鄡ZVU^F@ׄ˂JQ&HeaulD7ze+ e88C87H;.SX@!mAWO0@oKd#2Yxt'EҠNf͇:yvs 7< 'ҭC#\/ :щh4I`shtwM+QJ,nh "%J@"}dTcRBԍ3<96vSd7ֳb|" .ʴE+> +8( %ABј h@Dk8po!]p$k ςxD Jy\!C~IrqD}/𻊱]@loφVdjNts%lig dQd8*R";' 0n=Y$A604zZ/8 ,֬G3U[X&K] aq#yp6UL3Qe#IGظL$({LQ+.^:lT\Y#G֢ E0ieiYd"9U.*'?#vtxhYRNVRJO/ҔvgYma)\ t9Xx/ gYk*LcʶWǠbaTa򶹂$ڔ@f'2?/  @*"0D8 V0G*c0`k@l*.1=rm>7ur<6:9T=/Ms)L" d׳uogzNvTc{.f)aFN xTP@T?x`/ pTG{ #?>/@>WgOϽwOO;ЏO[Ͼ{@;PK(faaPKAAOEBPS/img/careportcg.jpgJFIF``LEAD Technologies Inc. V1.01    "!#(3+#&0&,=-0569:9"+?C>8C3897 7$$77777777777777777777777777777777777777777777777777  }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyzw!1AQaq"2B #3Rbr $4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyzQ ?( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( BnaqC{Qt \7cn~J$OPV̯d&P;.u!ka7@m$.AЬƶ vwH@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@PN@⇠׺&ObKt[J8kMe3][lza {I2_wVdK˻' =k/o$YNoܨkTggoei.5fa<KVs7Uš垟[(]K~ΟE-u*-B&)[m F{ejN$aZ|B/\βK_5-{ A #iU/Iao M=¶/~ E5]OďTgֹ]dzĢV\%|e}v! ,daF3 Jl(-*\t]JMR\Kg-0Ho'<70 ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (m1>$O#)kFJ"xI4ajA(ۻ'5NqcOSSwOcwP"Ogq'\n= G<GN.$#RrMAN#gĺ狴MDZqiPzn}kjdžK}䗌|);?hӛKQ$_FހvD%ٝ5Mw^bdmͮoue'jHg[#ӶGE[^fJuR}__բo.[q'8b;g#J?-i?o3cZ<h[sGkS4Ⱦ'hM`BN0Ǚjz +{kÒ#*6܎[:q m.] ϥw]IL< 3AqJ>(Ԅ%|3ռzbo._+U\^986xXҟ/"sש%P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@C+$qz {W9ˏ _m2w(OYQ{Ƭ⬙ieI!Ln!F>Ԕ!]^V܋j^Z&fBPZ^exܒVBXUwF4J)2tʶxJh}5$vܚVORz'/AuԴD4*-IYre<{okU- GS֫nKpXM.Tvbh~ΝTrORʲ"jy!%廻 j8eƝ9^ccӁ4 _ AyΚ$ A78!)|L#ӊlcBJ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( i\KA`v YZs*1.IOOJ[[2D{TJ=h X>#et{1vm^54L+'9h$J?-k"nb8DLn Ҿ V{^;X-'(̠p9<%uď_,#x ie"d".2˒:z&xf/$$r @. #;˹5O_iw}mmmKe")9'pWE=ђ-ZGdndp ѪxI$)@F0?*,*QLP⯊Z7uE㷹#7dn$v<9%/#ڎqjLYR9x,RvK3ր3@1?Jw8<5ymӉ8vyO@=cMIO si` "ôn?*(<JZ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (åy旡P?[Iu ?Xq_N;?ÉuRm;>!UӝO ]b>`~{FO\0m+n.V<Oc@~iz0ym)200}sU~?{ P#dW!w ]3E[:Ǝt|MFtx<+€cwG-yF-hJH@>/-CZ//-%yh2͵I< sA>_k1mPnIrۓ WP6k wͺԣGGp? /:YյQqZ)QبVOz|}In$P6w.>8 ECi gKuMwoɼrT8Pc=Σyxc vבƆYYv9؄ E΋4?4o Z!4dǵH#¨Qu 1VV+r5e;_1c;]:s :7{$. vN}(j̠Ih忈tr|/To gOSs-o /sG A `= q?wMe4eDpHg `V%F֮>6e{-!fwٻZC&c AcuGԃڀ:_hv>i~mV_j(ʟv>yRN3@G<)M/ះ4/ $ZD_P쑤l62H%rXq@ Yke{E+C(mo`t4zwe. B#BCn#s ~Nsu+Zn$ Lx MGEsp kfN6c!Wހ=. Z( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (qM4} CN0N~CzP8:@ 5 Hf< PJm j:Aț8S9R=5S{EvYWlyR|8$J/>,3yXمX+F''K533'P\=E_x{ŗ~%P }ЪmT=G^~G:޵&:C$4E ؎F'' G4?ңtTNBsOs@ 4;"{h.WdnT9^$Ҁ04>4ﱮo)'ܮp9|^$.RI$H7F!M@P @jGtfHr3,H@8 xJ.qeq*K;g28 :xw7#Eơp2\QqO28 rth=% cqu8x@4P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@f L3@h4f 3@h4f 3@h4f 3@h4f 3@h4f 3@h4f 3@h4f 3@h4f 3@h4f 3@h4f 3@h4f 3@h-I"8CPN"E;JV# $U_ϿIAkOA;P仧89g0uN4Cmoj (KdD~ rGQ MsS2Gs5՜m ,tQ46>\` 3PMM#{g"BYT,NBǁ3ŵ-.J\EAYKP3\ϻLx.ghm\\N2OȹiDpF2C pVy_-Ap7 F9!@Kދkkf[_7﹐m trl;yo.[ ƳA #.N{s/^[^$𗿖o(NWk Frď\ [i0@$|# d*1TX:pP?kʄ/g':~u}IA fb"e:'L@l h\ eumt`HBgb.[=W$1H=q=ŌsG^o-L8}=@7P5tYn(乑̖Inz ֺ} `O@g*̾KgW z6:ԍ+vy.NA %@gAL>s{5ͳAl8`"~n>RpahHXRFF,e '?.(M {t3|)Ü0l*0#]Fm"Kl *2Ǖ''pw`>moU[[q8Ҫ.?ց\kPC*XJ,vf1Hv8a+@'8,_EQii4i(<.0j:ں[-ea#2JHW \=@siz+ۖ$ssq#nv$}9o y#CM !yk[1Gr0lY U;1hmGsOp{+4y$|[_˾g,nfxؾ vQԒhkKq Y\m6}33b*I$r!-CJ6rO͐M:fIn$tȡY%?wq$zqր*AMEӣעY! $4cݜ|h_~"Aq&uUP!!en㓎@V9ndXل0D˃FÕA%s襆H:tMBi-WF; e+31׌,ij{],E*U.8]H*Z]uy]F$x#زm>|w;pG\ɟ1!#p'@&CP&X`τAb0086r Ӈ= Z$&>gz;MZY3F({$6Xד1)0EbG"7 I 5ōoƒ._s+*AaAPx-N0ujkKxДkw(T}2OJEw%r+acݽ6%;'>屲C$pHvYOn>8TH)lr@}3@-wov-ˍ0@6-U20:PsivS7AXx6tF9P H gDQc(cJ*Av6_#XWΟwۥIo 6, KR5 Pice6Yiϝs㞧K g6J.q&0۳ g{*9a6}6 [[ie(4>)b9"U99:gNof}y+v1c mlmP.64 IO}h6tZUKvLacݽ6%;'>`th(dTT8aؾ?燖6u:@E 0cɆ8ڠaW8_汲Ȟ bd]$דϹ Y&F2Fs€!M7q[%%C9yɠ {@7P nu@7P nu@7P nu@7P n PwҀsqJM<M<@ ch7I<__̟5L<_ƀh6<[_7oƀdſ5Mh<~k4ysh <_˟x7@?oƀ.ߚ\5<~k4ysh <_˟x7@?oƀ.ߚ\5<~k4ysh <_˟x7@?oƀ.ߚ\5<~k4ysh <_˟x7@?oƀ.ߚ\5<~k4ysh <_˟x7@?oƀ.ߚ\5<~k4ysh <_˟x7@?oƀ.ߚ\5<~k4ysh <_˟x7@?oƀ.ߚ\5<~k4ysh <_˟x7@?oƀ.ߚ\5<~k4ysh <_˟x7@?oƀ.ߚ\5<~k4ysh <_˟x7@?oƀ.ߚ\5<~k4ysh <_˟x7@?oƀ.ߚ\5<~k4ysh P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@yVA` '-/P_}~bl@-/P_}~bl@-/P_}~bl@-/P_}~bl@-/P_}~bl@-/P_}~bl@-/P_}~bl@-/P_}~bl@-/P_}~bl@-/P_}~bl@-/P_}~bl@-/P_}~bl@-/P_}~bl@-/P_}~bl@-/P_}~bl@-/P_}~bl@-/P_}~bl@-/P_}~bl@-/P_}~bl@-/P_}~bl@-/P_}~bl@-/P_}~bl@-/P_}~bl@-/P_}~bl@-/P_}~bl@P@P@XVe؟@jV K4nnΦ2kVZ<[O25i4y<[Ookh[x@ſ<-}o?ƀ5i4y<[Ookh[x@ſ<-}o?ƀ5i4y<[Ookh[x@ſ<-}o?ƀ5i4y<[Ookh[x@ſ<-}o?ƀ5i4y<[Ookh[x@ſ<-}o?ƀ5i4y<[Ookh[x@ſ<-}o?ƀ5i4y<[Ookh[x@ſ<-}o?ƀ5i4y<[Ookh[x@ſ<-}o?ƀ5i4y<[Ookh[x@ſ<-}o?ƀ5i4y<[Ookh[x@ſ<-}o?ƀ5i4y<[Ookh[x@ſ<-}o?ƀ5i4y<[Ookh[x@ſ<-}o?ƀ5i4|R$r=x l`,P@P-?ooѝoGG;s : W¿9j>T6{Pڀ lg=@j6{Pڀ lg=@j6{Pڀ lg=@j6{Pڀ lg=@j6{Pڀ lg=@j6{Pڀ lg=@j6{Pڀ lg=@j6{Pڀ lg=@j6{Pڀ lg=@j6{Pڀ lg=@j6{Pڀ lg=@j6{Pڀ lg=@j6{PD?, P@xDDe[rgv[GQхywxB@?~{WGu||9W;M[~w*s;Py1ud\V-+ €:};Rux fm{8/o2ȠeI=OLP}>-Bc{uL=9ky5Ƴa Lr )e'#% sae=̋m$Td ^Qjj1YI"ЋZ,RK+ NJc@.mu Xbe%ãb84jks43+p:ey֡k|eUT€0O+vz$Ie-\y6OPf_ l~3Ɠ[Kgd2]k0Z(1ŨힱMkaG+F (8gk~~`[&XedF z(k[֟aZ3t1O@wt@Ͷaq{w*moGndmwrWVò0U^28gڀ=2U,Qp 4ʈA s@#[QuOlWp\#=1@w#𮥯iڔV:E-p1@隄mCܫHBHNiTi&}mfUc }'Y@A |g—iveޱ\FdIm@oZx=ƗYc6W#L#E>S, -`ϓ *ꓓP3=+^ lW˽ki}ԭV v u?B8=3Ph, [8!]xh/#;]<۝S`gj?GOJҮ6yw4%#NGA@u}ace-p4'G ZO\ʷİ:31 x 4ohdž ג+F^bV݊(A3[-u)8۳>8b|;G=zw H!3~}%:rYRF6~?P ?Ο /Eϲ\+H@>8G :|- B)3z l\j:uuhl@*`IQӵ0`RDC Nh_ ^AzƵq;+E% }i3wh^e\3 ۑ@uIs^ZD9OLP>L2̪cNO@Ϋz_%_.ѮZ"HpWo?uR[ .#By-nfTevC o.-).XmC$7EP2I)yɿ^s'v$ݸҀ=:Ο^Z5O*tUb 0;um)tS{ ɝ|=wz}ƣZiQM̒818?MkG>ne>Ǻ3y|ܽ3zG~WF4fSt +sd5B2:PlZ.hW E;bybzP{xחK+*2sro<}Iݩ!p n8R [k_ٮ2F&rzNg>#:<ͻ]`gz<>|@ƫ&;[9?HǦ>f=p^8a+J ُ"6>C@YvYO2 $3@w_uHu+JtIk;fPHX ǡq@ xLzDuN\ A$PE[U"~Z39dPW98.ΣxPƗ۝f{%GfdVō xY|Aዿ [iѬbE!3s;d`d)9qϵu,֗K)Z) C;[E$9܏΀3|&/jhwk)-n ͻ~_@ƟvqX|1dɠGFpy~zMچc{qhs@o&wB̠9\ ۘր$F,P@P-?ooѝoGF/.l߯+u|h ]gÞ*RPwx؋4hxuVMUL$Hت %v|?MKŶZNE8tECcpF$?Nr'ŵuXYΦoa~`/ =#MҬ5_{ɨYtXG4k2 -`qt'e햭{bei+/հG^݀<}Q^6VA=r}s@O,.9:[ͣ+u.6"sx zt?9Ǘ1یw [O'| =[{nNYѕ_0\mR@FIa; 컲cy8|y;ݷO\nyr謆;- w#ƀ8?XY7P$?nzC,y^cw]3@>%]G` '+!w}~o71@ mbOƗ$𮘳$c. KS@9jw3ŝy(ܾ#kMn1g X6~47 i~/ukX }0Z*Hdsf-If]ݛumel'4{V' 9H|$cW=47_=?D~`?y|6o˿s@[i:w]z5vuF >nj|.|<=3f|C>]q-7n=@kkOVMA}'feU1pqSt(ֵ ot&ǣh-H2PH?@ D4>%t٬`/%Ql7d!nztfmp\zd6)5n4B/⸵tR@2 BBx-@چ+ǀF.Z`>mq"I,+xn~V9.^kS[ݛD' r: 8U`vu/,C' B.p!=EQ$*7*r\G7V:n;vz#lD[,9;<q¤\;ٛsoWvqjmXi'l v\ f#穠#Z-Ěin|"lA#/tz'-I/fqEݐNӊ[[|=44695[  1=rh_Fǎ#.yNNwmz];Nh_Y]ZՃnvpn u =54ozfXDl@Ǡ O{ C¶ *`ڥDs۠|Iuz֛r j_k(? W>'< 3A>ɭ vUT.bt+}&oKwʷ Ǻ6 PǶ?<i6(9P-͵`~@?F8.>KM=7R3(Cǡ u}cNԮ> [s-:MqO(A}^t`Fn=}h´3vd{@i (x綃X;;WP\AU`vȠ?>'< 3A>ɭ vUT.bt+}= /uOs&Vb$ Ʈ(.QS΀4 !п=>YMᶋsW2YjPj_#x q+GJg|Q\iwrbPfv,qP&&n|yhut \[2j|$P$g~ gTo`O~N[ mz]s \,l$$u_Rmjs(kyQDbq٠ ^k5֯[[()ZARb{P ߊu  +bL>WSOچCQҾZ[G'6JJ|o-?D.yym3*2_O:-No|<񦛣P]ԐBUfh͵|9ߴNz{Z_t}&k{Z-_Lʀ/R6 ^>_oCqopyO}(ğxųYhv],6dڗ’7s=}yE^x\|=kzkDEFHvH<)9ehWQqϪhB;EŅe'Mv|!\iZ]ƭs2*[GlC@H9`zgPxoRGk-/7:+\[#lYN `zJ̰4G/ik<1s|19f<SҀ9 ]XGDާ7O(N~? 27tKVEek~<P@P@P@T/hP@r!:f/YVݖ4bB@J _¿9]ѵ;oRI>.2`xHceHWӴ7GiPjO j\zԓM[6H݌tuIHT&]],*%u*Ҁ.Pyдi*i:3@[WmYصJIY iOwvEmoEUWѴ Kk 鸁t2 ˭:{|3K ǟi:lڤ:}2|d kAKKDOj"v㒘?*Ҁ,K驧MIbm1PֶvVkiocjEE : O m)-S19 ^>V$5h>k~䯛݌y{eor`my+nq@ t1r-hә'«́h&gIZvpXʬo =AP0AE'ttM=[|vj$ny 7 w>cQt^^B\B(Qq(UPWvvmymͻWdwM Qy>2guŖkm=oUf9rXOh]VzmeG|t@hk =NK;Hndg:6FTyKO΁ft=>R0^#o@o,lfݾSFO(XiV 8ǵUOhMMlA3s@ /)h}Qn7!hl g=4-;[$Co2۠xcʮ rhMKIuu4[w0dg@^Xj6m}k ջ覌:К1l &<~~{^MOsi^]iֳ[ɚXU<u(If!%_PvGtЩ |=ϭzN\]\Yiݶ!Ql eIm]Mug[\Ϗ6XTwM ƀ/P5!f`\ dv3@tBOѷ4* d#*r#P6[_Zunz);alF#Uq鎘 /腠BӐY-%qr=rs._qi֚Ǵce0:gE R9"Y?B E1q"*@C$ԆU_r)M[n巸&U)$r(eu#x Xkf-4kI#Mn,gqmFA=-?oD<^Fv3?jw17wۣ} _/q=1@4M+JyN-,RY28[n.<5<^I$؜I\Oz? gg?}83߷ݎ3{P,5k_V6 \D.GC_h^hmݲclS®0jY6Mm:OŰ ­HP@ H`BGjQ@exOz䗗.ݰ02d(ƙh'YXy>noqg?c__ٶo۷>J(ԑG4m 2#@l3Nk+-:сaTC(h[ =.-4H--`".NNp9$l :K{2LĨes՛h>g{5kfW|td4:l:ڤZ}j..|dxa@yuxU]]aмѐGle 8'Tѿ/&7 H`BGjQ@I@P@P@P@.?>=o@P@g&mbeV eHEHAu:pcCNOw1iŦ[M"(9RGPk NTԗS e f*5(JE-~bu>l@-/P_}~bl@-/P_}~bl@-/P_}~bl@-/P_}~bl@-/P_}~bl@-/P_}~bl@-/P_}~bl@-/P_}~bl@-/P_}~bl@-/P_}~bl@-/P_}~bl@-/P_}~bl@-/P_}~bl@-/P_}~bl@-/P_}~bl@-/P_}~bl@-/P_}~bl@-/P_}~bl@-/P_}~bl@-/P_}~bl@-/P_}~bl@-/P_}~bl@-/P_}~bl@-/P_}~bl@40tU`YNFI~%{B4b (3 h ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( }{B4b (3 h ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( }{B4b (2M:Pb(;%viJMSW7k x7CEyq -fΆ!ծ,VO *)kQﶫEjt~+oFz|QҬc}#XLZ׿iޥcn:cRf`G,=k>x֢ h\}u!-OnV^'wL?Yĭz/qG-Ƴm{*7^4Rg [>e9;>COFf4lE~0Ωg<zu?-|r<9pChd\|#}@Ko3Cg5mejBSa}ot!sDuS ZڜM\srJcEH SV[}15IXث`=Fp}@ /YEskm% =coHLeJ"iY1]h\% ʜpsߌt -_KҦ^Ͳv9gܠ ( ( ( o?&8xi+& e>q\7>#"،B:.??CZFfwrGxbEUW'vR}._/͚7K2jzlvr%O!X'=Mhq~(񝦁؈uHmnV&EB7qޝ@iϴpg||s~O˻zMoIKI5K4$P29kzL6sIYlfBF 9 `{[ o)Im:ڀ2ɛXJҭ#%f1$j c19#4ljYZϪ4zdQ ssMK>ZIoqm @ndUd'P- ={ܮnnA$4XxD>*_ .L>\g3Ҁ6 ( ( }{B4b (2E7V;$@ç⤬ѥ:.jrihGmSU.v 3P*8E$mSJ$fG ˯\I,5{KHd%X('w'Zu/ImBѥGDʅ'+gQ5:ue>Cθ4QLn U7c=wz=q^}lrU NPx9@P@P@P@P@QaK8$!vAj̨NP4^`>ml 4X\*idjE͟mWef,kxVBEueʼ+CVėZ4$4{ 3+!P[0N9;?hLV2Ost:rMgyXT0?xpO~(گ{j  |%6 K;v"5ZRVsg4kyWY]ŞPi ɖgF§Dwt첳> K2z "C[ EG; [\E"W`=2EG)Y]jūR$lAd@ |GZK['u"?)cJ <@#Tо%kFRa&DbU N$u3ր=5MNAOjX ^>b2; r(/hO}M<2 99#>hZ}yGѦT .@S`}ORK_^> "Ztl$)ULuvd珻yg 4mr {(Ӎ.Le>Sbx'{.x=6 ( ( zلe hd-MtW>Ћn:&[쩟Y{ʾG'f/PýWJҭ{?ǽWv%F<=S#:m:H :G#\S3s,%1opzq8pIm]yE?7~ѿ޽>l' z-s1FiX4ܡ(;FNwAcT.lko+7q`[2+.UH@;ZԵ/4ۉ]=gV2#ȍw @w'y&`K UN=h3~ ״_ie7>_Bwg#q'|2S^M?9Ya$dq@P@P@P@u?MVÚ^MfBOYT_qhՒ+45,4J3!17T? 9%'&'v^$] cJO}%m9*BnP gq?1S$M{V~dRZt,c` h'i=z(Eof k|J@u;#^@|Ek=8JڿwO|gS٠x~!a S"ȊF f4:e˨EGn2"RDCiR:r:O5bKgއq-70\0H`PMwٿO7%ы͜9#sg͍p8?P̱w<wހ65gMn^[/ E*E: 2~4TP@P@P@>=o@P@=!dd;+Op~<8u .s^x?!8u .s^x?!8u .s^x?!8u .s^x?!8u .s^x?!8u .s^x?!8u .s^x?!8u .s^x?!8u .s^x?!8u .s^x?!8u .s^x?!8u .s^x?! q,ǜ4~GqҀ,\~C qq /}=\~C qq /}=\~C qq /}=\~C qq /}=\~C qq /}=^K$UC4Hpr2 ppy Aנ^:{{0.$z㯷@*XhZT 6$.\/==.M[K[Kd`$ Aנ^:{{0.$z㯷@ Aנ^:{{0.$z㯷@ Aנ^:{{0.$z㯷@ Aנ^:{{0.$z㯷@ Aנ^:{{l-s4c^2㞝? &9ă@uas\H: _oq|9ă@uas\H: _oq|9ă@uas\H: _oq|9ă@uas\H: _oq|9ă@uas\H: _oq|9ă@uas\H: _oq|9ă@uas\H: _oq|9ă@uas\H: _oq|9ă@uas\H: _oq|9ă@uas\H: _oq|9ă@uas\H: _oq|9ă@uas\H: _oq|Vԣa^3Bq~C L.s^x?!8u .s^x?!8u .s^x?!8u .s^x?!8u .s^x?!8u .s^x?!8u .s^x?!8u .s^x?!8u .s^x?!8u .s^x?!8u .s^x?!8u .s^x?!8ur#+dfA~5{B4b (3 k:|w>\'̔G\AL6h89fQ $In}o1ڀ3$W/ٙX;av w4mZ5Ҏ0Vwwo %f@ʏ(Pf:lRZjZUO+kl3dxY,:6;I1$BQRT8(N ( ( ( ( w6?跠K&;'soovy$yzo;P;Ս:`T1#K$#L6,hg@-bHܣe Rf n >~`杭iQ\yi+C1$̬ fZxXӭ&un.hJ`)pKiOZmC|Pq) b<3*\ H(ݙe3\)P O1@ %@ç &^/- I$x0#`F o(=ج3?.4PP*ܸWr0fx *ż2[! *4j;dS8'I}{zZMIky'7%ޮQWURvUoptYW[ VkyN,dc.@*M*-Bnb$f/eP@P@WPdŠ mÔKb }$ VmoJkٽa2x+~LHz :( ( ( ( ( ( TWşq-kX&J5O"< `GB3tP@P@P@P@P@P@F,P@P}zTGYEַ)oyc?=2C)#lч8<@fo4ӖH`'7?h n0LTAᙼخ//iPK")!fOo21 u>šun ( ( ( ( ( (_( ̄,X3c<"d>OrQ̇N@83}?3ZgFz2o}9 \ (\fCϧ kE}-p3=q>qg3!~gӐ"d>OrQ̇N@83}?3ZgFz2o}9 \ (\fCϧ kE}-p3=q>qg3!~gӐ"d>OrQ̇N@83}?3ZgFz2o}9 \ (\fCϧ kE}-p3=q>qg3!~gӐI!p%ˀ\}9"d>OrQ̇N@83}?3ZgFz2o}9 \ (\fCϧ kE}-p3=q>qg3!~gӐ"d>OrQ̇N@83}?3ZgFz2o}9 \ (\fCϧ kE}-p3=q>qg3!~gӐ"d>OrQ̇N@83}?3ZgFz2o}9 \ (\fCϧ kE}-p3=q>qg3!~gӐc=#upKv};~gӐ K\ (\fCϧ kE}-p3=q>qg3!~gӐ"d>OrQ̇N@83}?3ZgFz2o}9 \ (\fCϧ kE}-p3=q>qg3!~gӐ"d>OrQ̇N@83}?3ZgFz2o}9 \ (\fCϧ kE}-p3=q>qg3!~gӐ"d>OrQ̇N@83}?3ZgFz2o}9;I 猂=>R83}?3ZgFz2o}9 \ (\fCϧ kE}-p3=q>qg3!~gӐ"d>OrQ̇N@83}?3ZgFz2o}9 \ (\fCϧ kE}-p3=q>qg3!~gӐ"d>OrQ̇N@83}?3ZgFz2o}9 \ (\fCϧ kE}-p3=q>qg3!~gӐ"d>OrQ̇N@Bzl>ޘ  P@m?K@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P P@nqis`Ci[f;m/Ѹ!?:2WZhK\_Oo?ƨ<-}o?ƀ5i4y<[Ookh[x@ſ<-}o?ƀ5i4y<[Ookh[x@ſ<-}o?ƀ5i4y<[Ookh[x@ſ<-}o?ƀ5i4y<[Ookh[x@ſ<-}o?ƀ5i4y<[Ookh[x@ſ<-}o?ƀ5i4y<[Ookh[x@ſ<-}o?ƀ5i4y<[Ookh[x@ſ<-}o?ƀ5i4y<[Ookh[x@ſ<-}o?ƀ5i4y<[Ookh[x@ſ<-}o?ƀ5i4y<[Ookh[x@ſ<-}o?ƀ5i4y<[Ookh[x@ſ<-}o?ƀ5i4y<[Ookh[x@ſ<-}J%F,P@P-?ooѝoGG;s : W¿9j>T6{Pڀ lg=@j6{Pڀ lg=@j6{Pڀ lg=@j6{Pڀ lg=@j6{Pڀ lg=@j6{Pڀ lg=@j6{Pڀ lg=@j6{Pڀ lg=@j6{Pڀ lg=@j6{Pڀ lg=@j6{Pڀ lg=@j6{Pڀ lg=@j6{PD?, P@xDDe[rgv[GQхywxB@?~{WGu|ן"72M.5(Ah# F;G4i-5-3JMRQʨ@(X1hZ_;v;so=}By-nfTevC^Úޯɲ7O8{@=2y>za=m%Ql=GP|Whvڛjv}:Oji Ŕ %P(~+Y*E\y2]jZ6g8y ԂHhO*c'"j^jZkel%cF$$N?:QӮ.,ǝ r%ΧY[quZeU|$# _ hjvY-VirN zyjڿ4*4PGmʱ>ր,CEvϥcDQ#gi-G GE8N(ex@WqݥS$3.raiڤo&}mvYd } @>2񥇄?_m,6{TkȨ >l@Nkz%iw' 9c^:P'~ <{yᑔZ"ỳ/6H\3#t4\K ĉ@^6!׾ϙ{{=;PXGwqiԖ0y!(`㞸]>x`-m$eFs ]P /5K;k4@NMs~%i|Fk֟h!]ڀ:kK5{W]4n 8AaiZʚvixМHX=^۴$a9=G@z6v-/k+[E5#';@VҀ9_2A5qzuݝIՄDp@~ހ;@zʆqJPӵHM:A*0|eK R^X,l+r&בP |ڀ6t+i+/v63g(kho *VkXmҕElB@lZ66@YT8 r:PٯO1턪eU+P▯^An]2^8[r>fר(c\4| 5Vq I%5Ar睸h=6]-#vWq*AaaMN5 WY6.\͜`6q,[;u]W`\2R[ . 4,muK9"YSHU"<ㆻ\Z7-m;L 9c8; ]W÷s!LU!Mtjzmu) Xܼʱ`rH}cHTXs;z8@<<<<<a!5 , P@xDDe[rgv[GQыoE +7G zw(|Ѭk: xZ 3VL]ʠ- bRO$ D^wQ?y }T-(Kuwxb} # @X֭"T}Iݢ.O>U8@,|9IxfF}-حa@{it߳Il E+ngq::MNI> j}V׺DsƀI9#qv~Og|JԴZvuycs̽}Xsj.FtiEgkVgoBT "`z3t,!W D8uHLG:ۀF6n/:v̸brq!y Af<7cwtzf ;N ^=`:۴nHe<0(k =2;; Hm-c`".NNp9$4|]1]SPq+*y@R\GK1Mg'A?4ꯡxG6znXPbēˑ$sVcyaq$jl^U[v">V,zWWYٿ6͘@:jMCw\g6c@|m<%4m"A9g7SFU|qJ'@{X?5U./|{{Pwѓ.Եf8B%RPc N?q4SLm&dfH]!ےPh?!?ƭ?V3NhoI0 Gy@~ |D|yajdT$|0UH,/m=:O2%'F`8<@"x*ex]EĊj1==~ZK{6[ JK6:\u¡pTz jnGVtnI盵c:cu+/&<>-/cŨu7;|Վy4H} ؿ?>ݏ+9Lw@8m*Ѿ:sKmv&$yq܁X`zP ,|CO\Nm/$hJ",pm+$2jicqХKA~ڮƈ/HF!)czz^n-ُ+9M9ހ<Xnѿwy_蛳'ʓ{nߏlPiZ+M&+{1:y-V$megX$K ]Pgi8GO4-Hwgѝ䲸e6 fwB/u[E 4F%@Tt9 "|[ 4Y|;4:%*T$e_ OZKf]_4B9R1NJ'?56t5@b mcH @(M 6~,9"FvwOl^?Zh|SA4~).Tioyn384WM N{xf匈Fpszʚ')lM_HY6,}Ƕ{Pjw/xCCw @=Fހ.멤E?h Ӗ#fvv|ΜXnѿwy_蛳'ʓ{nߏlPW?tܛﱝ4 3fۏiw-Oٯȷ![e9Olb;[Oxdb8_ 3pJٖ)t8nqy!,Dy)}(m8msgxUbKMg1|bvnw083iofGy+Kph@o9߉Z\Nӯ,ncqϸ+cU3ێ S˦M+Ἶ xd @n삌Lsrg?hb 7FHTmƍk3K[-.ij< 1xK W984\}ŧ[ǟ+>~mǷuڶu_7R24'czýC*xf,L]:5U " "31f1vgy(m8msgxUbKMg1|bvnw083ioff??HboGb>ѷ1go=ڀ=o-wW=Un~!lLǠ|{P[)uFw 0-ԕ,cOIl?|tMzz r/6w[I7*V3x#"+:pRm:Hh[ccvK|u&wӖnY% n?e|i#*sb?;w Iۼs o*𶞱~ [:B۹7\APmJ Q,o 4Idgwؼ671@ɶ+5 2K^Va 2T2(>6oQӬk߂mVWGfs4P@PKk@F,P@P-?ooѝoGF/.l߯+u|BC/ocҬ.KшȠ o RjVvĂa% 8#_\\\c0d,xce 8<5ͥåˢikT1#sL` i:lڤ:}2|d kAKKDOj"v㒘?*Ҁ$BY?~>Ǻٱy||ڽ1zPt.4I/&I$Y>FHyUzPW$?4KfXb&hHaAnnnke Xԟ@E";{MIn&'pŢiVqCZGs^JJ(t9 xU rKi-cA$sl*`cO=y4kPtXu-2;,8_iZvf,kQC<*1#}JPm!1G# {JtFk5k gY$yhZ}ygqu]dPd^NK纂X򲈼PAOJdtٵHuItW!]4*eE3ps@l58;+{F 㑤i0em,%yĨ*q=Hg:vSa!.!Y~ X!<)<|n=1@Xiz~km:$V,kPl}/NIMK-2 9?Z[ #M҄NlĭO±oS?_=7 rm̡NT6G v!$$qơU ;P{m'MOtªd4^a4Y[[1̯Jϩ s,;9,!09SPV>c0NFFؼ*; KK6HX4m<*A# 08F}JLidHl$WNhfe4-^L.-S1ا/9>vlmajaP@P.I,vif4,eϩ s@}/O/䰶{S"@($tٵHuItW!]4*eE3ps@F<{dg8X*}^X!HĂDaFzcҀ+in%vkf%m}{zOEuHkUne r9 A V$0D#5 `ڀ33Y,Kk,2Zr0X`pg|@|et]P;s_vz}ht{XvQQ?!@g%7vc|3#*x< m'MƗ>k.PZ*\m8B㼵JKH6-0&-yZUfthsqsuS@Aֺhmhl [G c''I4 6Ju$X׀=&K]. ~#}X }擦}IWh[ S9$mvMu?Px_EҤҿ-N_ b zvˡh}Ҭ?cn<>Lm^=(B ( qPh_( +95Kk*֯g8U-('Fj*E+ӄueZsN.-5O*wi|lDʒ:\Jrc(c1QBWJ)lַ}햿+e}>k?1bZ_ؠ햿(e}>k?1bZ_ؠ햿(e}>k?1bZ_ؠ햿(e}>k?1bZ_ؠ햿(e}>k?1bZ_ؠ햿(e}>k?1bZ_ؠ햿(e}>k?1bZ_ؠ햿(e}>k?1bZ_ؠ햿(e}>k?1bZ_ؠ햿(e}>k?1bZ_ؠ햿(e}>k?1bZ_ؠ햿(e}>k?1bZ_ؠ햿(e}>k?1bZ_ؠ햿(e}>k?1bZ_ؠ햿(e}>k?1bZ_ؠ햿(e}>k?1bZ_ؠ햿(e}>k?1bZ_ؠ햿(e}>k?1bZ_ؠ햿(e}>k?1bZ_ؠ햿(e}>k?1bZ_ؠ햿(e}>k?1bZ_ؠ햿(e}>k?1bZ_ؠ햿(e}>k?1bZ_ؠ햿(e}>k?1bZ_ؠ햿(e}GYGr2H , P@m?K@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P P@m?K@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P P@n҅ԫDݎ)(JTZj5v<Ҽm?#X[2/3ˌ\m7^t1tbxeUIKZ}Z/S]xE4ԽYg ,p9U=q[ź3x?=G5(0Asp3Ӛ~MY{[~̯垛H4)?S]R;]C٥Sc'^(ֳܛkJuJcuV ng4w3I 2 H=2JkJS BDJTepsҀ+xB.uukCim,*aF v; [g+ZEqlJ.g0FP0\ nOt8La#KM[Sv )eQK6]( g|@'uRm45,Pى𻜦 ɷĀ: (Oj-4-+F#&haV':PE.m.m%P!ZYM>{xraUyqjPjV60[\<G$!dP_ۚG,@_5H^$7ggC/ۜPOd/Ň iMa_]q"Zҧ6vN%hLi:&3##3Z ,Vugi%H!z#UQ'%̚F\baHV qS@:携cgTzs篔;p[8\->RlO:owv^KZ~iO%g'hb ặT T$ȹcJע_莻~(S~g}osi]8(#DTzߊ5G r).8 qcϵP!VZjz@m-['H_sϡ!zPC&w%\ȒDӨtfPFr ހ&Pi T@:PcYjuAwną ##@P@P@P]OA7@?|4IdK2a8Or]olF!{CCx3I# 1"epֻ)>zKU/^$~_ jZ# 5Cx9w 1sSL-KOUH;14$7|mImǾVL}ߛ;:f5uhNhŨj"'LggPдNk 6J"Hb) t=(^ SOaWO1Q%VbjvWv][cΆ9U,ܠ~4j ( ( ( (ǿ #@( ($ZiCuomSD :zN*JS:R&ve:kY2l@ȰE'ҮջqG^hѴI&mejpn7*H=kiZ^Km-A&7F\ >~k:!m?ow7|NqȠ x'_=6+sp%L.| QqԀ7  Z5 Ls g|P_Dׁ,tmNգ̬U++0e !\Q@mP@P@QaK8$!vAj̨NP4^`>ml 4X\*iaB]khn4H "#w !)36 k+>hDiD* #;O#4G:熼s1ҌZη-L1ų1;Cp䌜tPu 7:=杳~秗#|u4IO(u_nY_rmfȶnq %xm;tvgne@5Xٟq6s P'5CŚf[-LZN's6d@]t|oXL{}~&a`m: U؅vTREP%kTz{-so Rr c;05:lnhգb22*d~T( *FPfFAb4wEsi~ʙU;?q[r:Ϋ j?:mھo>YYC|>VM[mCN43h}L/ʌA?.z|;NA|r*,*B#90~xzXDžnEcigG3~fN2rN?xė^ִtCi tvx2>|1hrx~_k|YlW `x-6<%V^8nwRf|lRpA?l5/k,lEOkB@um`gЎ|Ek=8JڿwO|gS٠ J%VbO1v<8Pp t> t^;He;vP"pBȠ ( ( ( o?&+IW/&`z[!'*o쯸ajlfIM_A{mq*HZVrf,CkeL1Os&V`B\~OLS$ݸvt}^Lvm%O&ҥ@#1N3d<%Z'lw2-ôI) zq@"/as\H: _oq|9ă@uas\H: _oq|9ă@uas\H: _oq|9ă@uas\H: _oq|9ă@uas\H: _oq|9ă@uas\H: _oq|9ă@uas\H: _oq|9ă@uas\H: _oq|9ă@uas\H: _oq|9ă@uas\H: _oq|Vԣa^3Bq~C L.s^x?!8u .s^x?!8u .s^x?!8u .s^x?!8u .s^x?!8u .s^x?!8u .s^x?!8u .s^x?!8u .s^x?!8u .s^x?!8u .s^x?!8u .s^x?!8ur#+dfA~5{B4b (3 h ( (nk[9 'hgDw gj䁓s@{mBm.䲷oaZep g>ueڭzڕޟ$D e0?0+N(m+0ciA}*r2U?)ə9;]:olc΂WY (>P( ( w6?跠 TP@P@P@m?(cs{}= F @r2%Ny=$]^w+i&i4q:MW(Xޣ45o.dӮTvHSC.>l,N=aI[~ ( (*/j ( ( (͟-2L6DydG.̀ HV#[E=nݽIYG#vF8 'F6v1 2Kdw}EKx{O{Qru;# h9'Os ( ( w6?跠 TP@P@P@m]J^^QۡbbMIs1d^^_&q{o|.li$bvF͂3@Oc4[%{D[D#f@'rHY/ pҋʩykI&:?#m$b ( (*/j ( ( (|71.nq6%nϡ12|/N/׿MJtFa&r[s-;G74 ͧI_M~S5PyjbmB9$(m?P3ˎ !+9< ܝnP@P@P]OAW@ ( (9r<CiRZIcc'I=R{wHfxrg%>p(sHt.3\6&,OXOҀ&5K1+s#P@P@/hP@gǬ?@@P@P@ơ⻽<]mSD` 2f 6A F6rĐ.xf"./gDc+\I;H࿙"`c `0f|)-S->fR݉m\@ Jp:B A%#@0f,pd̳:?/e 6By**3we_  ( ( c]z@P@rڞom%ӴG'M*)9hHrL!D0A|(W±%M?[iVY-bAn>rP07@]\y}H.Ķu,scX5#Z6mCv"RV  "jd->M;\)2X0!?1/ <=&7;kg>͐;ą8 M+H4I5)5+XA.S+ 2@:a ߆ 7n"LIV g.ܳ1Pr0fWzu7?n7D# ΁[3D ˑ JCivPoI'])2m #o+ hc\vp` Ũ6Uy*y|O jWKɦ͇-A$qo!LY %d;5-eIdv<3Ą>c+FC|xiP $,zlo i x ry rHK@ϙ{'fӥ[`ME4dzKQ%b5u[*F[]>-A!dwyʆVrG*_]Qyou-{Fށb+`0_LV=_R𥞡6{ɥX.tbb'dCpHw%Ե;ǥL?h#\eΣpR P|Z֗}TS[4sF3J6䙤C.`P !FcK&ⷒ[ăp|_=K`oʀk"!b]l1()Yxd2u2P-V3Kyk$(Sh ۱EoS5 "~ƱaF72{l>RPy _Z]oleh|r[~X*|o&j3|GҴm>;[i7(٤66D, EGMZ[4}=u 6vReڰaB~b>^@,xzMFoxh4FA?A@ K{鴍R[E77S Xo"( /oSy&y\ɐn%@GATS! b@d*#}NT9~VUy+faȕYr$@/^#vhm6m $ E&RumyTmxamkNҮ!j=e_8/ppWMJIy4Թ󥸻Z($8#"_,vE6[i,9xrhoo xzy_OW=6[i bc22I _( ϶Xʀ% ( ((]bT#R"ReH 7C4_7+Kq}~38zD?n4~~׶hsqgsuS@j:Vۭam{C`@ :-khRnu@C pP@P@U[( (t/Ũ#S9)"鯾e w+t]D"HPG*~O(V.%Z2|ds@i7V]6!Ql |$}MZt:VɨL$XTJ>U=?6e^W,y~^1oM1@ Jӭl#&«0mZ$Ҵu89,-PvGrЩ |{Zt:-f[$>_xqC˩al˲KDp_#^3zP?Ft[(l_2kkX(8Wr  k@P]C=E-Pe΁^\\ͺMځsm*+;)]AP21j_gg`ib|?/77c\ҴA&K kU%YW*# $Г@maa\g"GJӵ{u-`VޱB(l0<}Jӥ䰶}BBT^x7}h8="yZ]}?kg98 ,;OHR VHUj3 u PcCXe]@Hу"YApt -4;OI *+d9'hJӡⰶMBe%¢W^8/=(^H-4exmK2 t,ަ,]Zvqmq{ams5ohU9RGr#P /+#eP *@폝MMhe#O238miVAj(UV&!*I ܏ZC,- gmleaQOr{(k/hP@gǬ?@@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@/hP@b^ǧhP826 X352\CZ^iGy4 Hʖd5_8U9Ҳ[G=-άss]_kukn_CkY5h笿4|_>o/M7_&z@=ekY5h笿4|_>o/M7_&z@=ekY5h笿4|_>o/M7_&z@=ekY5h笿4|_>o/M7_&z@=ekY5h笿4|_>o/M7_&z@=ekY5h笿4|_>o/M7_&z@=ekY5h笿4|_>o/M7_&z@=ekY5h笿4|_>o/M7_&z@=ekY5h笿4|_>o/M7_&z@=ekY5h笿4|_>o/M7_&z@=ekY5h笿4|_>o/M7_&z@=ekY5h笿4|_>o/M7_&z@=ekъ,ہ9ldcZ=o@P@NKU/Fwe5 : _¿9]@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ eP1_e=kHlgxY[.ASx9Pj&m7taRNW~}~%Ck:gHMn#dF4 H7v/a/h,"v]eH#@?s%15]>c^]N>P09]MZZOw."efC*Ia $:_iR:֛I*q* cKzkhG [yd,C* t#9u~ -?=;Q̿ongb6v=F<a-#O9o0Ue/ BI sωj$"[#?Xgcsac_L#c/a\ry#/~%?@}vmg'J>0 T<3=mVE]I'v3[OWx뇎Hث#؂{ce T֮!ih8p$t>W5,<]jn[pb̥U`Fs&9~* xwʹk;H,wgTx{XgufP,(,exvҀ0<5jĞ$X$+8ê1-'^9/ Ͷ3A-غG8,Ug ' CBk]HYI ɂy N?tna9{ -4I0%"J  H'@w|_7ǝ[C{> OFo hs;uڀ,4߅uih^gbU=1'<_SMcEE՚C X@!۟J7\Fo/6b  ħnʂ͗hXRӭo[uK4m4cmh@6 mmh@6 mmh@6 mmh@6 mmh@6 mmh@6 mmh@6 mmh@6 mmh@6i.q P@xDDe[rgv[GQыoE +7G zw(xx_+ŧ_iѸ sh0O,hGaůψLmë08 ÍVk7w k:3٘lGKfmWI$!b@[Z YNJӦ FśjFTaӽgh-?Og3nѾ_{~ mGo,,b:q4qf,! :sOK W .P#j@?)ˤִ͔$)yQ@a>=^xHtwyW7HLFF@Ѽ-|yg٤],0!`mpvP>ohc-ϔmb;dnҀ#g| 4SRϜQ# xku.+K;O4W+*c{1CP8P?|-|0tc[|VYT9;:treƧr?2xbL6d9#xÿG|/I_558?{A?.hcSG>#UOc2YFtm|  e~75WiŶvυ>,{Ki ?}zZguM#U=PjiU{\ŷhT`83 /׊Kխ hB *O_%|#ׯ> K Tjd][*$ P__:ī_x 13komǜ]p\lJo~*  Ohm 'pm7S@;3~UխʙkjJؠ ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( րe7ЍX ([?'^׌%*×;?_(] \_=+}W#@ ( ( (\^GZʙ#r0 G &xsGImcoˏ{>Xē=B ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (}C5ǿ #@( (!"Җtd$29)4)ԕ)viz(+cb$RJe&i9 8EgJhǖ'faU*RM+i}[l?Mjy4}?MhxG@'4}?MhxG@'4}?MhxG@'4}?MhxG@'4}?MhxG@'4}?MhxG@'4}?MhxG@'4}?MhxG@'4}?MhxG@'4}?MhxG@'4}?MhxG@'4}?MhxG@'4}?MhxG@'4}?MhxG@'4}?MhxG@'4}?MhxG@'4}?MhxG@'4}?MhxG@'4}?MhxG@'4}?MhxG@'4}?MhxG@'4}?MhxG@'4}?MhxG@'4}?MhxG@'4$BS3(K/hP@gǬ?@@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@/hP@gǬ?@O[j6|]nI'qP%J^mw\9€ ( ( ( (#eBem +jvi[=̫ I؜p=DZNjԝ5So"YP@P@P@P@, ?W;MKلP=Xw&s46*I]*p ( ( ( (m+ u]Ack-ԫ .v8RU٥*S5N};8.ϕ€*[]i:Om45o+p\ ;2@Ts(Co'ݵK;4`0>Rsx84F}qtKD[˒m##W[$lɣoaC8wh߈" ԋ=ܶwoHGB8hĵv㴓TX&Y<[9Pcc87z|t2K5S[mqȎUaHےG4G[{tH2x}>_<6zC~ [x] //x$hF5PC d:zo&Ν 1K?oI储 c /v6{Ej Bqr(SV|D[[_MRFxKLb8iS+qr >Ad'P]:K1%Gwʜ0!Іjjx\QL ꓔr&_n~atSgtc~ "ђAq{eo@ckٵHbԛJhd,kp4pcڀ6)k_i/{m円wE(knR0A PP@P@5"VHRMx +] &Ֆi͖7a[r}MyUb*iꏾqF_G=喿gmR?kA-Zi%HH/0Kr95[)}2ic6V%.HB un(=ƆnɒjGa\9*RsxO"tM]Oqe~a##2JI4)q(uq>)8#=( ( ( :?}L)Ds sv7 ]}Mʲ|zwii6Fþj]^]YH1>zgy列`|2jb*N96l6xroX4Ww{(Vs_ӼEqB&`Ȓ Fc̨Nzr9 ^6ֵ!ߙi.3xכ& JNdw4z_VVŲCsobp&B8L|ű𧉭|UaT1H @ag}_?ƕuO(cCwg>C08@m~!IYYǦKt!zqy@3`gw=Px-[T=yխx xV;Zcj=RKeI&H!\o($0q@-s 2n{}f68j-/I,eGڲZ]RqeSQn@kOzUit%75i-~ujdrM廋Kklj6P#H@' a]x8SQ珛)qI.s%7co2nẃ!m*=?0Ė{jiqo9)-`G4k_ =^}-%)$a@ǐ7~!i7OFTG Tp$4{^0A3l.akt."!ruvq 'Wפa)r[8<}kjWo6J63B09#瞔$~3~&ӦX?S\]Y^#' @PJu@!GPY_H"* T# 94<^=M3ÚdpY}t="T_~f$p:@ 'dzEW^|cj@sPmakVKIu*K)t#>k!RcKR9L޻^w9|@w$hh4{V[8ݮsdv$.D1nҀ`:e徕%ɗL}BdX&m,2q[_Xr#d[<+:ʧ>ݠe7ЍX ( e+8ZGT,q?y\x3O}("INo˧^M-ǙQKXpw#h7Rf3̩9zj:.i%O*Q]'$@zU:RM77rΤ0@USrrhD[sugc9ˎ1$GҀ+],ϚIc|c}:ʀ,ugc9ˎ1$GҀ2]6PoY#tފNYpᔃxNZTuԚ4e+ 2$v@Rb)x#D +KԮ`}!K"]\W\x+DmJH}F9Y0$wrI8tRUOxtY^(Wi@$s[A.ܼugc9ˎ1$GҀung9q3ğPn91.8J պ31#@\x3O}(uT$M#p[[>d[sXqy>De'Q$r:nG#ͽƙgW]Gx2)x;YW@P9^hVmۧcu6CqCpPAs|/.pʥ_p8 01@lizw0>Iix%rR.0WmtXWn̎qf9'}(t}3^,wiR1v Zol8r|I*$id2wl`'~-]ʟaƫ Wt|1@ NfN'~Ox<@q\x3O}(7Vsc?Isrg?[sugc9ˎ1$GҀung9q3ğPn91.8J պ31#@)m2T-aF,ugc9ˎ1$GҀ)ꖺnd֗G8"Mp`{T 隦}kޣb9{]X!P* vP+M{Q SVPWh<^1[ i C]PPYfL" J 8$/4(uo ަگeM)C9ni[vԦm5ܓ@b*Z>Oݳh_K7"?aF'S4^'{Cy#hpq9#ڀ* ЎfN O=86ּ?WNӼ:D"Th;xjV~^h\,Vl7PʅYN3 P}tt9a$mMdhRqTB:X^IoHtչE3.I`9њӮڅō[i7aA>4 _7 M„XB݀eZ+B$7ĨP['#i@sMAw=wZη=G#]&-*ێ6l ./=ap* ( ( ( ( (|cހ-P@P@P@P@P@U??_1hP@P@P@P@P]OA7@ ( ( ( ( &(P@P@P@P@P P@m?,ko%ĩ )y$v dO@zdkjYfߞO^PCv.6l =@둊@HeKZ;}@DRa/`MP^Mo2]R- gF|cuK& vdY {Y@ebzomq{X[Ate\$r=EIkdjYiϧw3Nzw=^je];k I$s@ZE6iYYA͸uh`N{PuƘu8/³LAW;q0h֚m]Ckm74rp2O@߲C>a1v?vҀ(xth54ͳ˄]ǽS9;cF(^ ( c]zMSQI./Wtr#7EDހ8]RԮtK&T-Eb9m$i\nzU>X-@amrR[-Zɡ5, YIf1D]ldֳ[hzƙ=s$"g)@aFeMZ=徕us!42*[ZܭshZj)dVEo:Hc}6l$߻tI.ֹo1-WPXeK;rm)(d6,:ˋ> 7w)EmjŔrD`ʾYo8#7747IKa2,^I 7Nt]B{xmZwhx<+h_77OuemO|I`+@HA󪲂Ѽޠ%0 (*/j(Gi},^ϙˍnk>oVg}c4.N3֞G|7 f3.:玴WNgH^VeA*x=H4N_xvmMw3] xth54ͳ˄]ǽS9;cF(L %JgVuʤ wZ}=K}ahm#;V#=E[{H⺕H3iC~R=4$ko%ĩ )y$v dO@z?i <̐.#Lo~n=GPÿoؼ'k1q@ ‘<$ґ&]^JsʰϨ>r\,utR}UI&N''$`c_ ( T\_ZHn&m\AHr1@,G)#VI";Cr@px,x@۬fEWh ʬHRG`J i9,?hczci4?ۭ?>ؼ;`g~qzb KPFs@,y>Oڀ 4J$TIL(N@- q *E*;$U`J6`2z@q]JPvC4p?);LkV \2pr0r1 i@P@P]3A6?@ ( ( ( (e7ЍX ( o'pLLX{[+qsj]@ e]Lu2P@3&k?xt^z>f%Iy EnZ3EἽI.FmulA,[P@^S;؅pągPhu cEipso$*,%mĻ_@z$cR[g]BMἷ` FWpbA `ԵbM;_xP_#څN p;XNkiyojsA[N)$iECedV Z QIh:]AK`ux,r ^0s#<fhw^ ַ=v~{FXU J+ wqZxmcdIqUcpO-%mGs%:.'K٥Q[c2qHZ*i0_hv5,%b&@4tlꀆw…@].QMi-DVЧkbH #g8K[^\|,ZǦLYۡ!:onP@U[_Mbgmz GM@eQwzTNT/Ld2 FHG<O.n5e嵊U m.IU$p(Ğ$ՔbMݮg(圏eiVpkn %3|U ǭhiZ]3,[ghOhP@P]C=E"-n?Zi{i#m| s@O}oÒ=多}rD֍[ǁ3!2s7hKmh5{eJ<"H!ECNyٝrh&o6V*[O2,VL +Ro[Gp]CbxeOa Ylr#ȁY@(M5ޟ\KOS5~˴/e>H PzuYtˋ՛ڢ5Z B@HL*_b3I{˼Ʊ6* /i' bZk[)o887rpr=B ( (* )@P@P@P@P@/hP@gǬ?@@d^Wúhm̘4֑I<? נ ( ( ( w6?跠 ^&ХKHۘ%(rxeYDy<.w8`ۋwR1X6<׎ _5vOg`P 6i-b@iVUZ0AJKE4o}+brp94U߃Kaik7v2CjZ]p4y#9u45/^]퍍1=d"7Rp:wWE6ko\-g_0$9ch$n%Wq)@7KUv/$]mCwvܥ_1 l.Yw ~6폷̋co1ߚ MZKM@ 5䬷D[owE @`!,C>_Cl]ym]BIcDmP|l ( ( {'vF-Z ( (2?7G#<~gvy\P@P@u?^MZ Zvn ;VE 3ϽvhoX[Y@ͼm ƥps9 ^'$w̠l8f'ր$(jZ_ں]/0,3p8({+M6-,-a;!098' P@P@P]3AV?@ ( ( ( (e7ЍX ( dX,n\q=E?,gmOQ@E'{{PnszF\q=E?,gmOQ@E'{{PnszF\q=E?,gmOQ@E'{{PnszF\q=E?,gmOQ@E'{{PnszF\q=E?,gmOQ@E'{{P{OjʒcNycPpN36?"哌(7d=#oocz .~Y8HpN36?"哌(7d=#oocz .~Y8HpN36?"哌(7d=#oocz .~Y8HpN36?"哌(7d=#oocz .~Y8HpN36?"哌(7d=#oocz{ F{z)=F@,\q=E?,gmOQ@E'{{PnszF\q=E?,gmOQ@E'{{PnszF\q=E?,gmOQ@E'{{PnszF\q=E?,gmOQ@E'{{PnszF\q=E?,gmOQ@E'{{P{}H3Nym^,\q=E?,gmOQ@E'{{PnszF\q=E?,gmOQ@E'{{PnszF\q=E?,gmOQ@E'{{PnszF\q=E?,gmOQ@E'{{PnszF\q=E?,gmOQ@E'{{PnszF^Ao"H8XA?pN36?"哌(7d=#oocz .~Y8HpN36?"哌(7d=#oocz .~Y8HpN36?"哌(7d=#oocz .~Y8HpN36?"哌(7d=#oocz .~Y8HpN36?"哌("=Tw_( ϶Xʀ% ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (_( ϶8}80x@`B=i{} >}(L?P?Р0x@`B=i{} >}(L?P?Р0x@`B=i{} >}(L?P?Р0x@`B=i{} >}(L?P?Р0x@`B=i{} >}(L?P?Р0x@`B=i{} >}(L?P?Р0x@`B=i{} >}(L?P?Р0x@`B=i{} >}(L?P?Р0x@`B=i{} >}(L?P?Р0x@`B=i{} >}(L?P?Р0x@`B=i{} >}(L?P?Р0x@`B=i{} >}(L?P?Р0x@`B==d]89-{B4b (9^k/ sn&I2̧+: ^ jӚrI6`|1o O5̢<6'''l*mSZbQQ\eniAO@?ߝ~tnO@?ߝ~tnO@?ߝ~tnO@?ߝ~tnO@?ߝ~tnO@?ߝ~tnO@?ߝ~tnO@?ߝ~tnO@?ߝ~tnO@?ߝ~tnO@?ߝ~tnO@?ߝ~tnO@?ߝ~tnO@?ߝ~tnO@?ߝ~tnO@?ߝ~tnO@?ߝ~tnO@?ߝ~tnO@?ߝ~tnO@?ߝ~tnO@?ߝ~tnO@?ߝ~tnO@?ߝ~tnO@?ߝ~tnO@ '*\3"ŗ{B4b (9oȝy^3藬^h?0~.]6owcj>P5W7jͽː\.z p(vkkH&{yTmbZ<.;&\;@Cږ 4Bv.ƒfeH8{Pk.-B4ymVf;mpOʼzPڟn~ )ok"LԔBi,;0vSqxFÝ]۱,^ZJT[+4mǚy䝣&3n5f|UZţM,rF64T##ԯC յ̡ DC!qy,HSkſQJ>~ݏW$1@W^sVzgsiXiL%U%9_`r pZ.NꗂR{I6y{.U! 2ʯPmkZŶjZbvޅd $_ ƥ{40H6co{J?ǟy|Ii駣Zύdp9br2y='b P1@(b P1@(b P1@(b P1@(b P1@(b P1@(b P1@(b P1@(b P1@(b P[.q P@xDDe[rgv[GQыoE +7G zw(p~(A/jwݳdc> GcF4D 9ݞs4[Þ<5K-""GRz( ?>E߄̗\}̖Ecj*BQ'Ӿhot.|k7Yrs=6c=G]O\I#Hh`PױhÍO6=~/g鎦 =%~U7:~w/kuA@ݟ|9iI44 XV=6--P I()8c<|aGP[2A@A6?^穠 v?4{J >nt3>_랂)|&ox>[@iY,Kt _#mr]Es,>E[cKX`3 ƕRAY]ʷ6 =([Nx+qw=̓:e@AmO3 /> oo>KkX$;>ǟ4QSBo$l@ۜ{x+M6u4nYYUڠc ;PI@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@R>q P@qI?.a6Y,TD,L,.J0Ҕ4a|B@J _¿9]P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@T/hP@g[lSТ*w?/oߗ[h4yC<Pƀ(~_@?/oߗ[h4yC<Pƀ(~_@?/oߗ[h4yC<Pƀ(~_@?/oߗ[h4yC<Pƀ(~_@?/oߗ[h4yC<Pƀ(~_@?/oߗ[h4yC<Pƀ(~_@?/oߗ[h4yC<Pƀ(~_@?/oߗ[h4yC<Pƀ(~_@?/oߗ[h4yC<Pƀ(~_@?/oߗ[h4yC<Pƀ(~_@?/oߗ[h4yC<Pƀ(~_@?/oߗ[h4yC<Pƀ(~_@?/oߗ[hI? , P@m?K@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P P@m?rx/oieoDHBB#O")UT} ɧG/.K/Vn:LLVE Uڼ}]g;RhdY"C#`zhP@o"{f1 3q ,zxEnN{dVB}$r(# UaH<ހ45kO>} d傎ԎkZ֟"}WU=|63m('P@P@^G{ES$[lcc[~$swDWSEN;M:JEE鿧tzi5ԏ8id| ǰim)h2UR h+kO*e}=|-w? ``{P(9onKԭ ken'$m<t4P@P@P@Qk#b~] 2:R4JuWl?)Z(;cllmfZ˩Rw~4Eƺs^HrX@KLFr@r6N0kjHX#;X(;YZkZ}Vt/1a9# v'ހ/@WTI)V0(m4Ĭ3\)a{}zrT%QS>N.Qm.o$WRfu.!P@-lG85|xEI$WY```z@P@Wyj;4/񽦃A! O<US/&x=,ZH'xo.Y^%/ !C4A[]gK$:nz@ ( ( ( ( }{B4b (1.4Ad c D[j UUQM:í#@աԭnohY]Jֹ!N\ɳmBbG~줗1xw/Q- >p)&s]grox&km%Ӛq&-nJ IP!V77ױM n̦v c Dh3.~߇uuu[KKk%dZq!}Y 9ry I?r([ɦ#n%ޱ+|A4x#[}CҦ}fHQfi$fFUR#v{rEMJ;kk1=H P3}No|GқPk =3<|V`fǀ q٭1,XFUvIb4Yx^A Vb!jtŖdY߽o8sP@P@CS}HKF@e WV4?g5+'nccjWw4TȲ+[l|(wgo[O`9㸑H@cր;o'/gbsP=Uޙ⨊_o-jHT/HU\a u;G_o.XKA#1,%cI>[+~ W}Ye66ޙ܅s@k_BΙu{y̽HS9bQ@1ռKƒ7)$Ak-_/ьucP\KIw/ 4 7qP TP@PCucqss E ǵeVV6X*MQ_~uE9qvP NqXVi!/+/o$M]XҜԬ=fᎋa[]ߴJ%P!~\$pt%$Z1V?*X#]^Kv)#ͽ{yNH9 Waf|!5|3'ӥ"k5vDr=?3@uKmBo%8$NӦdfǜn}ƀ$ej׷.ak#u5đ]gZ000s@@dz%OKo*@Xɑ D[j UUQMí#@աԭnohY]Jֹ!N\ɳmBbG~|dWAhXkl6s 1jATYIY񆯮7ZdMKunC@)!)U׬{ɯ.lO8aރ*z8/xrQn_lyay'zZO}F`^y^xQ "1O˼~n Rկo]Fk"ϸab'7˴``=. ( ( ( (_( ̄,X3c<"d>OrQ̇N@83}?3ZgFz2o}9 \ (\fCϧ kE}-p3=q>qg3!~gӐ"d>OrQ̇N@83}?3ZgFz2o}9 \ (\fCϧ kE}-p3=q>qg3!~gӐ"d>OrQ̇N@83}?3ZgFz2o}9vfE"c<׎;z83}?3ZgFz2o}9 \ (\fCϧ kE}-p3=q>qg3!~gӐ"d>OrQ̇N@83}?3ZgFz2o}9 \ (\fCϧ kE}-p3=q>qg3!~gӐ"d>OrQ̇N@83}?3ZgFz2o}9 \ (\fCϧ kE}-p3=q>V3 푡>w9r9ظ}9ZgFz2o}9 \ (\fCϧ kE}-p3=q>qg3!~gӐ ]ok[Iin*ىUbi&~ >x7a6 ; qg3!~gӐ"d>OrQ̇N@83}?3ZgFz2o}9 \ (\fCϧ kE}-p3=q>VS0 ƅנ %qg3!~gӐ"d>OrQ̇N@83}?3ZgFz2o}9 \ (\fCϧ kE}-p3=q>qg3!~gӐ"d>OrZ?ݦDoy;v %qg3!~gӐ"d>OrQ̇N@83}?3ZgFz2o}9 \ (\fCϧ kE}o8H7y2m8383}?3ZgFz2o}9 \ (\fCϧ kE}-p3=q>qg3!~gӐ"d>OrQ̇N@83}?3ZgFz2o}9 \ (\fCϧ kE}-p3=q>qg3!~gӐ"d>OrQ̇N@83}?3ZgFz2o}9 \ (\fCϧ kE}-p3=q>9 P;}1@Yǿ #@( (>=ap*ehWRl1bI8 嘒IMfI"+(K% L 6b N[`# #&.'t" Cڸn\dzCr sY#Ra?x>_i%ÆtdvBѝ'gY\_K܉[YM, U `rhYkn\ry즁&4lN= ;{{MZJ!`Q\zZȳR>A y-^i mS #pʌy ^&Ҭi.!xm@؊IPG+Ub.$1 JiR̸pv6J*A$>,'6%"v^dW(W(;rpI%B-嘴d{ic| FPdi9PHP@U[/m YdicAǫ0TռA5]3 @I;cp{˻k86]UѼRRQ*][Th 5YdG(FR? ȓzw/[[I8BE ,@“s@P@P@P@P@U?ZP Rŵh$ r`<7Xa2t=F@)GѮxo7XZD&_-1,ݺ|u bBi@62H"Ƈ5ۑU%:eYl&?u\[T>l-29_1vrw0 dPR1}mč> vwp:&o>IMQB$viجrV ˁ [-M>pH*AH< A P@PX-q\cО}RSgH/G2zuO@pNoiP@MYbXB9IRU c#F@#f%̢C= ( ѣv63 KmNM#Y&@`q=v֟[Yy]6I#9q# i\|K-ƒ/P:u'ԴkI8}(2ŚE\+4ic*$ǖ.O@^e{oZ%լ|T yVA @(2I@j͖xKĐ[3fTR~ڀ$ӵ;]Vݦw!c4RF ) B ?`fEǢ뵱( 4'BzpdOg{oMm&Y!'a8є€,P@W{xlL\̉!P=82'h|k,0sG@(^ɨM`fgL9ɍ/X (e7ЍX ( o7]Xtۓr )'ؐ P Pwv÷ ugseOIysEp~ Cm$R6 $jڭ@ij662:^-q]@%Iq$9RVՓ` m0Z$մJ[yΝv`!GPPu@xSw:s770z-AƬTdBW8K[.{ya[=V6_<s'`3xXKunbS16;w$A9Ҽ7h1xZq VC>$Wc$-&X @i6Ym]Kiewd* J䁌 $/[RMg3-.ݗR[JY7ڶ^0¯j)ld% 4`Ǐ;r $Vպ]1ď/r-spoElh!o4=w 'kP6>CHDVuP@V>lo@kgLļMjhaepK&H-{M闚xJ}f{(w dYA#sPxZmV6zlImpj3_[[(T:Sxož-j>" {˩88P$ 4_i̷mHƇr!2n VhUXOEvҭl5u kkh%!#xJנ ( ( ( i7贠SoQu[*G,Y7FbdSqS3 #PIq&ʶsee|'bF2x?Znm?}[nMM\yq {K+kK{Yno-%f13ڲ5(pˠ |z˨- Ƒexg #049e!p+Oo4닍+g%BK@Zm8v >P ʊ{.sޙ2#g@ mbww[`[Y;LHU4|)Y}::{%- h!By`TFzCekKzDs77PTBzM1Riwķ͔>DF>^T>Z=I$>qsg͙O`S+,-7U=K>#Wzj=]4H$QXŸ3aX UTEM[jב}ŵvj1 X8RAݻ;P@P@F,P@Pd2,vp FTlP.~Y8HpN36?"哌(7d=#oocz .~Y8HpN36?"哌(7d=#oocz .~Y8HpN36?"哌(7d=#oocz .~Y8HpN36?"哌(7d=#oocz .~Y8HpN36?"哌(7d=#ooczu2I?#qsӷ &?,gmOQ@E'{{PnszF\q=E?,gmOQ@E'{{PnszF\q=E?,gmOQ@E'{{PnszF\q=E?,gmOQ@E'{{PnszF\q=E?,gmOQ@E'{{PnszF\q=E?,gmOQ@T$?3gcvdɸE'{{PnszF\q=E?,gmOQ@E'{{PnszF\q=E?,gmOQ@E'{{PnszF\q=E?,gmOQ@E'{{PnszF\q=EVYu;! pN36?"哌(7d=#oocz .~Y8HpN36?"哌(7d=#oocz .~Y8HpN36?"哌(3&$qNր,\q=E?,gmOQ@E'{{PnszF\q=E?,gmOQ@E'{{Pi&Q|,26zlsO2d"哌(7d=#oocz .~Y8HpN36?"哌(7d=#oocz .~Y8HpN36?"哌(7d=#oocz .~Y8HpN36?"哌(7d=#oocz .~Y8HpN36?"哌(7d=#oocz .~Y8HpN36?"哌("=Tw_( ϶Xʀ% ( ( ( ( (|cހ-P@P@P@P@P@P[OEZ ( ( ( n?( ( (|cހ-P@P@UBO (P@P@P@P@P@/hP@gǬ?@*k#?2Ubl63%׃I2i"֭2 vi\ 1( Vji\kא켎Eʘ!0?,Ekkevۃ^Z+?>gr3+ 1E ( c]zZo"Sn*T`܍]Ux8ea}ĺ,乳౞@d?iV`Tʢ#oi@o',lo[΁嗉cGF]iwPŨZd_bysM5ue,(u54Y_Kx)n>|%,YiY_h?ɺmfA&^~Lyyhc\O“[n76JL.Oq@5-R=,[L[][}h q'yPyF?Tcm4ST"˾AfbaQ""w|^ϧ]kW -̺++\=C >Ѹˏ3?@OqqihH6ɰF ( (1O@ai3iy<1+1areleE`h 4)B{NonL@g0J>i7nS򵨊G.7Fp6@~)Yͦ7ֺ}įNV[\rq]ɖRoL5]RSN>0ew(t7 ƫhRfgq21oڮ61;Q{itMR 26)դ;z*͏v?-dԣ.Ώ ˨2)  +@mhDI_Ann&IyT}6wg%9 +x6mȎeV31!O $rA!H[`Xy"l͝K#8W95ztz։o{K۬vl 9 w/Y]${ą#hkm#n1@UBO (֝',YZ~h.r0p{P+KC-,4`}cmk<~Z1y]KJgɐm\ _yMO۠ O>fYw^5Q\c.U@-{V׵-cL\іVlhHhq;K"cnWao^Y6m j[ȓMa$00 $d#ex'c>ykϤ~$};OXΫ(9$q3PHz1 E-g ~m%&HIVZ@?|XqHQUh\%  _'r P{;[5=JoU?dps>%1@o-CYVu-[tܯX';Bw9?X92ۥi CspM fF2.\6ve$mcUՒ\u+{KX켨\x/yQ;[ j=ZQgaE,R=gTߗ;wk$Zؤ[mf8,V^Wj^0 ./Q2h8exǹKiYPgmJ.a<: cfj72䑹I0I1ĀvP@P P@m?K@P@P@ [ "&7(H  vg4_"PuA;xt@P@P@n8f#|d;<:çc@~?Z?~?Z?It{KTlDө i#؂ m@P@P@P@U?ZP( {eoZ={|dTC9V @(XZG[Dę'j(<@h3IbI9,I嘒I$I$MX (*![j ( ( w6?跠 TP@P@dqBJ@P@P@쬭DdIKIbO,ĒI$I$hP@P@P@F,P@Pd1G-+"+M<ۜs3@99A_(gրkns#9rQϭ0Fs=Z `9zG>s}h693(9mmsg9Ps?ۜs3@99A_(gրkns#9rQϭ0Fs=Z `9zG>s}h693(9mmsg9Ps?ۜs3@99A_(gրkns#9rQϭ0Fs=Zu?hRa! y@M`9zG>s}h693(9mmsg9Ps?ۜs3@99A_(gրkns#9rQϭ0Fs=Z `9zG>s}h693(9mmsg9Ps?ۜs3@99A_(gրkns#9rQϭ0Fs=Z `9zG>s}h693(9mmsg9Ps?ۜs3@/CČ8?Gր,[ss}h693(9mmsg9Ps?ۜs3@99A_(gրkns#9rQϭ0Fs=Z `9zG>s}h693(9mmsg9Ps?ۜs3@99A_(gրkns#9rQϭ0Fs=ZBڕ4HWC&Ly?Y693(9mmsg9Ps?ۜs3@99A_(gրkns#9rQϭ0Fs=Z `9zG>s}h693(9mmsg9Ps? PCA&Rm0tdۜs3@99A_(gրkns#9rQϭ0Fs=Z `9zG>s}h693(9i P6RF M}Zmmsg9Ps?ۜs3@99A_(gրkns#9rQϭ0Fs=Z `9zG>s}h693(9mmsg9Ps?ۜs3@99A_(gրkns#9rQϭ0Fs=Z `9zG>s}h693(9mmsg9Ps?ۜs3@99A_(gրkns#9rQϭ0Fs=ZrElY#U'O@Yǿ #@( (>=ap*on m6O&]J a)$,# gX msNmoi@W~ G&cHI "Ⲫ($vM`esw>"HYy7' ǰi_6ilk5IU! p~QɜgֽqGԈS#:Z-EK)'( ֵ/p\Cz͜ҫ &?+1' F>Vԣ m4)R_v%whlm`>U<f{ 5m lEL cq"5C,Eɣiמ\3\k08"΍>VY ƤjJ"6<@' 1lv(3#4KKb)lcgŭc|$*yl:R>OmnٽCc8z/@V? '!Ӓ6^|.PQdw $SHԵ_^^ړXY#$n">te ?),H`k_T} ֮ts\i k%.3"ʖhWqk&LNK;yH=AE;+@~ֵ O\-.<ȭyKF^^GsCN@֡hr7|l6_go#t@(_·K<˛&h'@P@nخ'xn~+` (39`qϫkiP[_%Ɵm WV,p-$8E*xIkZ^&ʸY[_[TIeeL `/uA>\Pu{d.?7q7Ί6j$v*Cb3 ![` 8S~DUbiѽ-,,J#,pPsύg>"dzGAp\"#uDhw(# @8]]CXm58_]ye,FWfQ.ͼ􍧖'6 "ټۇ*G@7m~^Ͱ(YnrF<ͻHb6U4c{u{` g`Ŵ'.)m /\o3YރuXn&v<`2zE$2mk\awYr=]WPt6.?{0IXuH{ W;4WK2!moF)XʃP23@=!%Hmk}<%vGCĜrE="vھ*h%QtQF6@-]>-:;{-tؼb x9閬,l}I+3+lhX2랼'Iw(cw8E@y=(xsOM[KXb"1ȬgُA D#GVgB^̷ H?Aa)e/-XE KflGtK6I,I'4.G XZv FKGB$P{/ Z}\0h2l#%F0H z( u6?跠 N`$NdupvFae>> *h ;vx&-!r$c0>MoW,ך]->&!H9VSe͐?OYI$y|c)).d|8fr<^a8M-4铒$eug'9f"GlX4ơ&+>D0fHR]SGUЍ2p+;;0odt!EXMı_.H]Q#~€ ķ,7:T=A(2%ڎ0H̊tw@,`{Ú5o<7Wv"F(eY]Fsx L@P@P@U?ZPZeyFfY"m$E]ӀH PqcJzY$vwxc%UX?(؊\t EHҚ6W~wfdt€Vj4y''r:rcO@ (#kݴY]m;>C; / k#V׳E (p 1 G֝yH! E-F1Tc @V>lo@ iΙq_#VЌ2+ŠXEa#}Y:22)q71I+D; p~Q iږo7ܘ{k"*n4H`BGjQ@%VO ?$\Y[Oi4S4'$mr9 ҮrLSBW}̰2x V 3(AnhG*}$+}"Ml*XW`0XMn#Ȟt<0r3X1$ (^a9[G!Y5yecb#]ȇjaN`@]xgJi)_5淹 lD#z0!JT4t;?+ٶt#̡W#bOƏ˹Xs#ȉS$@PmA^v=~\,9_5/&v;nv@4m7'Mo:FYpAIGs@$ ./771],{67^1GsxMS9r(N덮уap W1՝-<9`bTA1Z8 *O"ݤeC"w;_*7%=&ӒYw;R&8v/nqqqeʢM4R.y2qӷ &9ă@uas\H: _oq|9ă@uas\H: _oq|9ă@uas\H: _oq|9ă@uas\H: _oq|9ă@uas\H: _oq|VA?)~_{ &9ă@uas\H: _oq|9ă@uas\H: _oq|9ă@uas\H: _oq|9ă@ui#o(WpLR\Was\H: _oq|9ă@uas\H: _oq|9ă@uas\H: _oq|9ă@uas\H: _oq|9ă@uas\H: _oq|9ă@uas\H: _oq|9ă@uas\H: _oq|9ă@uas\H: _oq|9ă@uas\H: _oq|9ă@uas\H: _oq|9ă@uas\H: _oq|923O? =o@P@P]WRΊ>_"CɵڡQ8 pռo6!ZtAq%t & zm,ržeԅ2ȷ1Fm|yF V`Rm[Gq-5]=y )QH׍@ 䱰Kq-MM$gl] ӓ#O3M!Ҭ9{x%F GaJh$S <K3[||ZQWo>oi>h%['|*?("źF!d&UiI8xMV%vO лmڵ9 Ng CRm}[ݍI3ӟxsڀ1/_4m/>fdo*߼c60rxTԼuqjN.'-`[,&#"6޿NӇ\9ڵtӋ,^,|o?7  =W۬˧[-1FhwlnV>Nq}%ԼߖSo受2~_l5٥.ayI ɐNX2%׉l[,n&3(_/nS8)4iYmǙjd߽\(vO2%'ApGZ@PX)q\cО3oãfqn+rgR1 "^3L21-QwN װK0..QO,*ۂ1,!BrG˸;.YҴi⿝?үxĦD`!|OL/#Gt>WΤb&EHfW#8$dc%@#|Kd~ǟݿ{cH?Q=>ͷ|-⛮O7o=44=Kgn?mݻf g@V>,o@ G{Kop"$%E p 0<%z67 0ҫhbrڥ-'H4'űvIuH(ݙe3\)P O1@ %@ç w wolF.E2QY.`N Y^ Jo;̶C'ʍ( oG; ZG ׻g-KyH,|NpG4jX,$rNzrc@-|C޽[ޣ= qn]SpHG[[ݽv+$O(y2+Ij3\+z T:=̶Zi6ηJFB"˱3Jcv@iS5{wIFI#*%>[ M[>'ky/<+~饍P% #2lč#m=Mim6*+Lc# >/ L [^R9o('Wv2_yoaώ{y広PӾ ȡԨ/A,&_EkPex543=Ήlq4c`fr>l|6x*bG^ЮyJnm/V /*ŏ#b9]Ru YR}?̵<G.A+u}ҵ8Gq`*W0qUNv_͵aÎ1neomj6ӽXS@:ŊtTP@V>,o@,أszĖ142h7# >Gb\6:~̢ 4_0Hi9f@ɹ`ob;vT&?ˈ/w3dv6I(y񬺅0x3+-w ]w`HL'ou? IbVm`?щ럟˒YJ5ϝe4w1<Ʒ(73lOii> 2e1$@8 ]N O_֣x.[?$f[.S M%*Wh wjw:Wtؼ5Cm U͙/i@ *7^13$jY2l/]zs/#*g! H7 w`b+x" {N)pH$G71r>o,ր-xkj]dsJ0J|nmAc\ i y-j8-7V9]0A8,%׆fo4/!0)//n7aW1'r26>G Uҵ;;o[Eo$w6M7eLg<`$^Ö L~` *ۼ 1qۧ<\M|Ag5^߽4My]1n@24m3_obnH;VrWj<+[  7J[Gomۿb2qt_ (1O@MWkm)`bLc'xF(2w4FM3XCH҉绵tirɆS+l}<9 GXn >KifIU%fccj$m76R<ĘO#PF-ODy&5Z}[/7yRM!C'e`xۥo@U/[j_\iex;lq D>~.0Cr[:#%!噙[.[$H'9.35Ƨ<|^A}q Ly{vɻ ?{> }+y#iմ+*c>i M+NGvv6QBp8n 2I@joۯt;g.Zn2Gy_ U{ ɦ[Xus QJU޼@ASbv6:4Y$r[LH)t]ŀ(Ch=mSCebГ!PI ,Ic(ӾiE a [K}5#Dh&F>PYSP 9|/wui0+.-Lo˴:ٶB8ρ>"gq#Ks%ْ4E%QOR@,hu >i5_[i/ "b*%DžP +$~]fn[|hz'gYYq$(NHܐHpH%Idw >jbn.35Ƨ<|^A}q Ly{vɻ ?{!m<<~o7@a!!H(9ep4V:$ {bbi2l`.n`NтkmSUH-S.E$l9!|!4k=bT5$Jo#hIy tP@P P@ Y媱8foykE}-p3=q>qg3!~gӐ"d>OrQ̇N@83}?3ZgFz2o}9 \ (\fCϧ kE}-p3=q>qg3!~gӐ"d>OrQ̇N@83}?3ZgFz2o}9 \ (\fCϧ kE}-p3=q>qg3!~gӐ"d>OrZ~2%;~sx㷯Y-p3=q>qg3!~gӐ"d>OrQ̇N@83}?3ZgFz2o}9 \ (\fCϧ kE}-p3=q>qg3!~gӐ"d>OrQ̇N@83}?3ZgFz2o}9 \ (\fCϧ kE}-p3=q>qg3!~gӐ"d>OrQ̇N@83}?3ks0dhO\v vw>Y-p3=q>qg3!~gӐ"d>OrQ̇N@83}?3ZgFz2o}9 \ (\fCϧ kE}-p3=q>qg3!~gӐ"d>OrQ̇N@83}?3ZgFz2o}9 \ (\fCϧ 5ƅzZgFz2o}9 \ (\fCϧ kE}-p3=q>qg3!~gӐ"d>OrQ̇N@83}?3ZgFz2o}9 \ (\fCϧ }"S<׎;z83}?3ZgFz2o}9 \ (\fCϧ kE}-p3=q>qg3!~gӐ"d>OrZC787yRmq?kE}-p3=q>qg3!~gӐ"d>OrQ̇N@83}?3ZgFz2o}9 \ (\fCϧ kE}-p3=q>qg3!~gӐ"d>OrQ̇N@83}?3ZgFz2o}9 \ (\fCϧ kE}-p3=q>qg3!~gӐ"d>OrQ̇N@Bzl>ޘ  P@m?2N{6D$rI $&3$fWM%eli 1ާ`-ʎ0z MLPA ldUs!}r\e.2b=RkH!I^,@X0N/4Ԓ:2ZM;!GhJN3@^,./k%D-]U0Uv94i~,5[I.@]w#(I2a$dh^ (*ŗv?-5=NGkuYq4Y" $;|,"餹"Y̰0a} QB2I.4߳ȻnT\Y*, .O&K%74XBspHڤ {)1\_4LG$PP@P@P@P@mi>PiIs+{y'՛hd1%A/RK;<тʫ,lulz5K8׹EwGHW u!lg"{j\'ko5H|r|ҁ3m7'd@&nDF[b$ lk`m4'q6Fa QbXw.2i u[wg ɐ7y_ 2 WŚD$NkL gx>nN".&ikrQ Ccoi2AMvFWkӀ ƆrZ$˕*P*`"aG8`qhaz}"[Im˲1W' w P@c?6ڝ=Gyx=M&7cԀ2z sxJ͚mom,Hv"ڬ0[24=I.elIA֍YghOXjvl)7@ݏR#ִN̖>jaIq 4kO-M]m~4z$C4=_ZI[\ijD#r08<@(*ŗv?-׷u]I$H$(bHI$ 4@xG$7/y䬷)f4os3AtxMƟ$&ܨ!s;cj4lV9\+N@#~b (ǨC`bhdLQ 9??c@ 5YdG(FR? @MBk70ē:`X)NLo}(P@/hP@gǬ?@ZKܛ!L$eA<ĄJJs,u{;(xH˚(/Yj1O,Gel-4xvD^57?k12 #1 l nT A43Z.4}9(4'Zi"Y$Umnw#M#QIIԒin'[2,BK%ʒfn 7J%֭jRntG˳A 91GꄕJžЇe;=!{יl5g*"P( \ މu[ ooɴ$1XC;X˨Cspۼ$}7v &CAS`A$f;!i7te Ƨb5 kMtBXnZ[K+g$YPXU'$ g&~hw=iww츍%e8*Vɾմb};QKf%(Yvvڄ%n}mZHJ<| P@P@P@P@Z>/i@7^ WԣxHm#*4 WKǨ߫Xm9VoĀm V\(N15A8̬͢|%Y%9d%|m. #n{hLoq#*_ܧ`\\[^xAUZ[H S@.OlF# i:iaEC}퍪G̹#JCEҟOy]іɃk,~p^:& IrmJakM{Գfcq1_ r|\|X$I5ߔKi|܎^LdZqRiլYErIbyVܻ[Rc%NGûG!ԭK}B2qO I̓j^ epk@Ph)?qax@ֵFⱸTo"ͷۑ lt;pzׇ4Imm'84, 򜝀oG*Hj7^[| 4ʹ' I-Zm6cR6H[nF4EG^^_]hS]I}46WE̹&FLYs^:c}&EGkee@[X!f:FÜtOoxJ K+yT#7<8tP@RLPEV"dns>'ʍGLLjvs䫲#&pwdC;`P M4e31\-R$򷬱nܛ\n F\Үͤk >l:I1`Ό1׿Nh6}'LdiF2@V A\di@>%џYlg3N\4.y(rZo[kko~L0J18` {^\fo%В9'cp@vh2(WC tƙ=ōX[-ԑs,vkmXnG `"zً{+f]@5/$C6t~%bK]Vq'RSm.!7EmEFTP.f̄C1O`Ym⸂HDo'lP^exf8tLdԭeok]-e"ppO υuVRI4\\tf{ f0FUARޚiupi%)I!@C3V1n VbU(xSGz6qmmk#L_BV?wnuP@P P@ %}-=pN36?"哌(7d=#oocz .~Y8HpN36?"哌(7d=#oocz .~Y8HpN36?"哌(7d=#oocz .~Y8HpN36?"哌(7d=#oocz .~Y8HpN36?"哌(7d=#oocz .~Y8H 4B#b6lq?z"哌(7d=#oocz .~Y8HpN36?"哌(7d=#oocz .~Y8HpN36?"哌(7d=#oocz .~Y8HpN36?"哌(7d=#oocz .~Y8HpN36?"哌(7d=#oocz .~Y8HpN36?"哌(dMv̒n@@==T \q=E?,gmOQ@E'{{PnszF\q=E?,gmOQ@E'{{PnszF\q=E?,gmOQ@E'{{PnszF\q=E?,gmOQ@E'{{P K)&"69 {Q@\q=E?,gmOQ@E'{{PnszF\q=E?,gmOQ@E'{{PnszF\q=E?,gmOQ@\Hkf !Yp68=ENnszF\q=E?,gmOQ@E'{{PnszF\q=E?,gmOQ@I |RlbFH{OQ .~Y8HpN36?"哌(7d=#oocz .~Y8HpN36?"哌(7d=#oocz .~Y8HpN36?"哌(7d=#oocz .~Y8HpN36?"哌(7d=#oocz .~Y8HpN36?"哌(7d=#oocz .~Y8H+0#HGMe7ЍX ( oZ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (e7ЍX ( oZ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (e7ЍX ( oZ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (e7ЍX ( oZ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (e7ЍX?PKyePKAAOEBPS/img/example2.gif/GIF89aCQpppfff@@@kjjddd...___utt'&&:::rrs+++333555YYY,,,hhh666<<&???{|Lrم_|i..WWW\]9llBVMM/nnnNMM000 𐐐ϰVVV```PPPlll ȟvvvDCC~}}a``ǖDDDڍyyy沲ҋxxxooo~~~ʪwwwնƺ̦zzz|||ɻہ˵ӽ͂{{{}}}111OOO999mmm蛚ζBBBƾ֥aaa>>>//)noc??9^^LLLLuuu!,CQ H*\ȰÇ#JHŋ3jȱǏ CIɓ(S\ɲˇ;ȜIdcҔϟ@z9YhMPJpG#bʵזZ2a"H '4i`)ڪv a6D͸n|Lü @ (\(ۀ$jZ"x(LW 2ņc6X1)4 o p ZH R̞N}jm!oI';›Y0^L cGoN>-kG|ŊԜ%%cX%OvBԄdaŅ1|hbFR_|!{ ay؉8QUO\p!)4o5%aY6T&4&au@)]Ƅ@I$X]Ictix|矀*蠄j衈&hP+4裐F*餔Vj饘f馜v駠*ꨢcꩨꪬ꫰*무j뭸뮼+k&6F+Vkfv+B'kj 2\ˮ͞[/ ,../q׫B##+ 8pj3 4p3`Ll* &   <䐃7?-r9pn(+*!瀴 '2ˠ1K q[0Bc'tl dtͬ=9< #" :ς̵|*8Vs K 29[v'RKoZq8O epq' PK?(ĠB 瞰D 1p. *ЃA y`/ 5({Z}w#B'h.} ǻW׾0U  `oW ΅y)Lq6S`bnc=h@f7 s*PuB1c;pV<pj_v;YL@k?8n^CT0 9ʋhO/ndS` q~[4ȁ@œH-WzE[u<8lj>=;b$ *U.wt@\>˵ nBmY '~g@8w2Wr 6nWo.UWZ^oEGMڗs+d#y.w}t߈O\[%Fvȷ=0ձ٥7w-IV|;w`y9V<3` Ͽ*ͮZDxBЈNF;ѐ'MJ[Ҙδ7N{ӠGMRԨNWV_֓]Mkkּhw=f]zP•ѪSܖ1"-1Af ,xϬˆO@䵸qUE`ص^.U=͖Fm"5ظv;~mUf`\ YT})KӰ<'*!FOrUKz*Bk, 8O8L*U V+x|23Fa]qDBi'Iy:"-ڢCFJj-dt- RK"mNڢ7'X,4%:ΕYƢc Ir&u * S,fU+*w"hAӂvtes_rb܃3xBIuT4N*3-+ZiWCu^:V='pZ2\;8sfڣ;c.#v=ʥ;s*z; 3??s`bҦ*3[< ,**is*tb2$FZF8?V;HKC8ssPIX4Xv/Uq39+11GNSIlTC4VqNcSe;XwR_kF=%XXG6.iUFQJ˽J,M3`5\$ր{o3Rm&ۖ$4S_4<*SoS߭emUuuy̪9PSEc?SzLNi\_}psmvT`,nc;IL },f4_ vk\W.9v5vi]_CZMoFEs3.`5@9tn^.Є1>j3B$4?Ф7eC2RCP{Nl8٥6a,\Ƃ᪤vTRSz:A/1CrquTA]#嫾.b?|*>ܪpgdo,jq>,̮f]ЮWN-:+;j>- n $@.ߠ>0^ 0`  )`N )&ڡ1}k[}1oB"yAR)@A&#D-';)0S!V!2SL\0V}BJk2cݑo!i%jb\#?%xa Wb\arR1dJ¡#1L̑`2);|aAiIq9ofqqaIGOGM:#qMXQOxaM_EP$́2N"NI`M)\Rk¥?+IvXdʿJ0!/ŀ#RG!E$YH'0#)N``$Q'%Zі/"D(4?rH)9N`A/r$KNH1(ĠSp gCT@&FMѳ/ߥũBlYGx`s+;DNi]*d1-Ώ! 0w?6e\1G(A.PH3ZٗjDU6wŏ?:N(aqëOkCʳUҕuj% ?h?Ϭho8+x( 1.$܁CC<KD7J3qE? "cIlƓ#cL"݈HcQrI&t#ĂH"aQ(rK.F\I24L48 \H$rN:L8p&_O@]ҘX +TtQF?&#tRJ+%3F;tGtTRIŔ_b%>uŀن>KVAOE7V`i8Wd=SW@p#aXjK3,.[rYK\vW c͕WYtG5&v0,zIV5شwazE|DebSN֘_'$\D#(3"и5 o _Bv @ 2\T<8%MgSxP %DкRZIDvI0sldg~c^@'ohEP0y##np9I$C*8" Wn X&g OCs%Mmd9&nF[ '8#> 8 Rg`oh~rox v/g^!dfY`?2P4ܭ (;%S1gJҟyK7zMISplv4  `&x ǤF0rVĹ KzߒFFC)-JX4k "p&0|N fh `#&Ig`)?-/pl`PF(n.{ Z yEsM~[lW0$Ic₈ 1z?4'GH;4";QƝ ,!2N2ڰHF+>?]FTb ⰓKB$]ƶQI]}*iEd1̥^:)J 9>* +N8q+w#DB`;m x3%"'=g2D8˩K `pյ gPp! ay.(<"@@ P&" ~;jӭԦ8m(^̨Mh#TqVr4X ^r`L"`UL[`Uaּub_]ꊦe 6],<>H(PYb^7شvS F؀HGj+{Y'E xkc+NVͭXm+p! f =.r\2eA/VN@ӥZ*Lbw=6捃̠ [0"F{5?iDoMjx{^(CdOnI6L#`kBN/ya[lò`-'a5  j}M܁@Єb,?Xƍqm񏟐 Z@T@@Fu,# hCPY+cjf H"'щSd!p2LAlx!Cȁ E 6ِ(E|eB78ƆRYdӼ6ҙ4bp Lt pݘ2@Ѓ C4!ljց<C'D!{hD1Zߺ0dkA;6dEXُ.]iicZӜvn;"N/  FB!*1=bp@0! (?ֶnC-Xa6`q _Nw\rgS:^mn{DoAzя7Qԫpˁ8׽n66cٹvEmۛ=ih[Zn9a89}tHW:ӝu7<)u`7)6q3F4[ d_>!}? 0p@g-~ <;__GP 4! .!ع @ @ @ @P@ <̲D@w2X|@#@|A@ A$9Q@@A BAA/Q,%\B&lB'|B(&tA!B,@"IJ4Q.1C2,C3ϼL, OJOPPUD2MPLAN B}=VTOUC CP>##_p> L"P3}BLRӽ=>>Ӻ:-}R0 "QB=C$HFmF%HTTJTJL"(.0OTP UQ U.HQ\T0AD)(H0bDPUaUWXUZxU^]PlUUԨ!%֣P5kVlVmVnl]dVoWr-؂r--V֥eEWg= h-BxE y5zfWWUi5VUV`V~-mX}}XuXpX=MUWvuX-%}VwӔXE#PXeXEٙ }UטϞњǛ=VxY٣-YVp9)ת%WM׭֓بաآϱU٤ϥW`Ym[P@([[[ ܾEdepZڱ=,=&eK<5pŋ;(8s);:6Zåմ] UI mܢ{=ʅ:}\=\ [k9YnZ%ް-e1![^޾}]ع}ں]޲ Y=]H]\^Q,^WM OfXߩ%^VU]__~-aU``]^ Z_n^~aE. &FPi@Vܨ%b0}ߥ_a&'>\(F )>U*Tᎍa0[6 aa b(>c4b`g[]a]:v_7b8b9ふcac/cH62_UAdU`w%=>6N_O& PL.dR>`^aW~Q/9eMXeet/drdH.`KVe\]b^ _f[G;,yf-擘`Mmcn6 oVa[fke5YZgkNa&fo51FfUf=fB>˾>++?C?%h?V?Ї^h5r.sbb=dñe43C=;ֻ<#x,-5.8A;p!f؂-h (j;tg3>[=C鼓9; [S=}8})Y{$`U@UkkkUص~d{l]Y3V⣕cX!VkFUWa_n4l^dgunl~lnl&WNKevW~mnflbȞYv.m> g)nl{՞nkmmNNmgnZonnLoC,To66>3o,hlpoV!ox6GolkOnߢ 7m~op_oOqB7_b ? 7^gO~Ďm !r"/r#/rnunr'r(ռ5~nTs0 `0s1sPhs;fjS=jjꕖ=5ͽn7e(SSәS/ogם ɝ]u<܆Z:<@i~&>xu q]u_^7s[.vc?vdOva>)hvx vk !T_qovWmhhGn\<Opbc wDkw|/lG]b@nww~?rO;y]oo~o^ňm&|xW}o-n'x?y4xxxwbw7Ƌ߮A(4jPwϲyx/z3 S 8qzwB(wx7OIoyĮOhz {b 0O7zwOP{mO,6{7h÷r||NQ|1Vs66O78=f:k8\)*E><=Rk0'cF+5gskni;joSs9->*=;:R+:~O &ӣj7~9j%~'GxyНx` 6|qbŋ7vrdɓ+(<ן/oSPRU+W`Œ5V-[n%]v_~&a!XtQuigYw?ldr {!8"$Vp G}h-Ȝ-&cEe]fh'$QJ T5H}~[X܁)\AtY'Yvq)j\y'0f<" H%=ARg6)FY1)R(&8 )jR oG!񌨽 Ba.zc?J`,@,zb*qpV6#T?|{/K3;08;PKP#//PKAAOEBPS/img/loadflush.gif GIF89a gggccc___YYYPPPIII[[[DDD :::SSS>>>LLLUUUNNNGGG@@@幺rh=>&rrsƫ𠠠`e````]]]utt000pppNMM lllyyyWWW{|LVVV'&&Һɵa``~}}ŭxyvvv~~~www|||_|zzz̲͑Ûhhhnnnԡxxx}}}ϩiʝiiiمeee{{{թtttkkkdddDCC..mmm׳ĸllBVqqqrrrjjjkjjaaahhXsssoooRVRMM/\]9hrh\\\||\~Ӣ退_񙘘686e)*)tbDGDuuu!,  H*\ȰÇ#JHŋ3jBǏGS\iF 73xYϟ%c@*A@ /x8 CQU9x`ׯ^!ҷI@S87p1C``y 32p0rr8 #52\\,/6%yvF6,۩V0_mK[S网_Ōߊ<$oSo@Xq4 $$IPY$&Hґ'Q,9% SyI.z4`' `ЖgRȥ|_4OO_5ۇI)ӊ󠧍jh^5q3z:GsJt~JJ*?F! $ÉІz )C'J.(Dqь6tG?j\Ңq(MJWҖ0Lg*SZt%xNwӞOJԢ:1RY~iTABy?VU6Zݪ?ղ5Z2iUZZW2r+]z%z][*eUkak&/ի()h8kϲ8MlSIT?؁KhKqmJd`1U-[qjd3(V$2qBu\iw?$ ާ,fz"^SGR޿7-opBЦ]AO֫w}T_ФЀ n@?r2YS>9QW1 !v8,CD,#!Al;'1&23K JJ^ @>nՂ {/!h#8ZЕ Sr~R.eő ^8FȂ9OE,Rqˠse9ʆto%9 B$1d3EH1>x P2 F 9LSF.Ȫ/`K׽)2l{*ivE H"ns7{ >ARH8u0D֭v{P^r#D'/ ) nP8cF0 5ne.p<\27( $CH,WMo|AQh?&$Ib/7ßVOUv@Pr Փt,] 7K@u: ­8Kd[FNY|T `_ف<&M@zbx;iK[ΐ)GSL?рvA)p؛GoL+@v0D]]:_ac\_ "FG\/dǞE7PeIO.)\^?odAڎɢ<vQ1hk.vSFV"Q'ڵqgm 6ͧ'ɧn5a#X>^1ޖi7HE9@Zu>(ldmQiYn{.ih16pvVF"Fh.Z1e>0eQ/"SxvUN;4Qqd1kGf\+Gw)d^!/qnxm4n-W'|Ɨ WhnǑ\R'ykϱ_6wqfS6AGVՀH#WuW{!p~;0jV'gU;TqX`$&a]_`!aa|U`F8(w"[6WQ{v9Zz5YWĆ{hǐ Q9YlʖYń UiX[%ɒXT])X08)U)ٓY$BE L)P)O0TTX UIR` `,)qPSIZr9tYr <@S)L L S) uvyɗOc]RZyXɗR 0uYITP"v e0# W)ٛq y) e @!e@iT -ӹܩep!ٝriٝA`䩕Rpi7yPCpiZIPe`CC`PK`60ISPA v)`0Y6YKI<u)7:# y.0\7:ѡ0\2ZZV0KI gN`SЦiXz#p\_ zAp7Kpz S[*3j:SڡJ`XC X騖 p0S0 O:J ꉣ+jKP`ʬ3JzA |jXZIpX PKs*za:z%`BC`T<0"jrSYzY)˪+::KР$ A6б[Xа ٱ:)[Z ڱͪ8i:N+EH y8 p<J f <Z:<*t`ꉲz* ;Q:z΀! @AC@X!aSފNx)JPpڻ:xyӐ+@:K ۹aڛ @۾ K *0y ;{ #0P\|` p m | @ԋ. ¶Q R(LΠE.\ 36ì  p?xXF{ 49 RL@5pmP Yo]yB0Ypbc{17QpT@0/ |uYib ސװgpA]c`E 1P d|˹˽|<̑\NƖ̙ɝɡ\pM  : @ |s`~wkώϏ 9-mm˸˼\F,2\j|m|L֌͝`(,ҙ2M6:> BMb`HLP]WZ\Iƒ|L i-$'+/:  @ Ű{p @ z@  3@M PM=C@Ր=-2f(@p~ Pd,яpuEe<=Q:  .nhl04^6~8:N&p;@B^H@ aBLNPR>M.MXZN^FH3ӱ#N_a>c!~ 3 {^!hM(@an^rn^V.~i.N,noq2>N=⥞ꪾE%ᚎKNVⵞN^G둞n牌m^U^z.~Nn'^~>Ns^-^^p=6~ Zگ۳]۷ۻۿ]ǝ=֭J"n7;?C]G}IσlSVYˏ].  F۾ J-ܠ]R_@MX_ޟA 1Np8!1aa8pxp*^rop A]]Nm?ӌOh8Ppꐎ>%_p"볯e?(.??>o݀}^/Ǿ_oO1 $XP` BX#X|bϩS@4~W$z %P) ,،dQs2 9 %Z`1e:>QN״ B BH?s1ŋ;n(ڲŎ1i֬As挣7p<#'-ugCEd$DL"fpWe̙5gFfКP%*A >8"eϦ]mܳ!o'>ɉ(]ZYwx[~3N}5W(g_P{V?~j>o{><*B#pB +B A ;3=0μSod;ĪNO:{1>w,(f,QAKO@1IlOHıA> J,ެ:LFP4+sM86L3dPE$,jI&dJLHA#4ICCtivYfEhOdd^e1_51` 6YEmOMc Y8WR` fJbdPOeX*rD &fhbz1h]ew(bZj0hO 6k{li.f0VrѤH`6jI 'TbQ\24EJ餉&`y]I62񁔟pEM2+-ޒ.+ K,)k5Sde%:+z++/_0S1 #Ƣ/D 5$,|> b0xWr~?74pR0#7 ͏J# , T>vA zB&j  PY/#aLp\ XZȬV*TXEj- 1K&ht;PwzW.!}_(*!hH2f?[Q3zQ( fPsV}ЊiF)ɤDjEixIL^$鉣$)#HJjD _XvjCovlviZ^$#XH"$%`IK^Ԅ7 Oz2$ @9yt(N @@=/|1}gT++-ns򶷾-p+=.r2}.t+P./|` W ^Z 8}x}d(ĥp/WP @z`X#&qM|bX+fj 6ɍnvÛ7 pC8IrÜ8ta1iTG㹮i 9bM ݱC} S=F&ʠrIOgf˓>f97 L$ qC{ Q Ot5rFQ&ɞ3Iuvich.zB,ޢ<~%*H=䐖zʦC W'׵_gm:lT`^YgQ'{ˮrhsyv^>t}m`le!@ @͙ל;M;{^n,{/7 Pu 3mgP[Ϥnw47LM-,BxQ@\Hb®󧍝QG>UeBOiBXw.P  gy]tU|#]dQ0PC _ٍjG Ё )" !A. `,BHHB߀;PKv PKAAOEBPS/img/readonlycg.gif(GIF89aulll܎```jii]]]MM/ʸ---ª555000YYY)))zzzwww|||fffPPPpppIIIxxx'&& qwfGKGYYMDDD``R 333hriccc$$$TTT"""RRRNNNLLLrrsGGGx~lko`uuu@@@r=>&{|LxyŭWWWИԈ⥥hhX~suttƫCCChNMMx/28VVV_eq钑م|llB鏕\]9..V_???~}}DCC`e`:::Ӣw~槱ũi~~~SXb#&*;?FGLTͱؾ򢡡kr~W_X󣣣RVRTXNbgZ݌787€PPF|Y_V_e^dYtttHHAպdk_|~]EE=!,u H*\ȰXi:Dq/OVF(Ó(S\ɲK$(͛8s1$X/ JC3\ʴ~~ԨիXuH`Ê)լhӪMK$RcʍKjk ܹ%ev {M*㧬~iBL0ŏ3knjʠji&^RӰcoduh']޽j RʻlY&+ظs|g)[OΚf[|:ç_'b7ڔ};Jzj|?nR{9bZ4LX 0z8}+SLAK?x8&X~ rF zbZ+8Ԣ+(-8`{9G~r33Ky~O]niirSpYFDb}Mnc) `}i!puHiآxaz&nz*cFihɹ0|˜ѯv&czJcNJ+ZĔ e,~ЂË?08(j)%ZJ'Y8|JgfcF>,xb'|ԂyAvd?';10óGِf ojlU0ki[)n97&mxF#>Ve2 bp D .p(rp*$=)D氄Qh@qC"n %(` -OBe)Y7 %d%2G r %rLS3ddYdFN&SB11 %[HD+)iNp,_~ @JPQhІ:D'JъZWhDn* HGJҒ(MJW*leLgJӚԥMwӞԩOJԢJԦ:PTJժB4E*Gc6_3JVBe%X vխe=kZ!@5RS(կ`_;X@ ,bj6EbT0e>Y A mhq ц,5BZђִ59*לr5;nu !0wmr+\e*ĽbNvkx{X~ҕ)fzWۅBw{^Žw~_tzmI_nW}`(ׯ])+`^l `2nU:aZw |A, {n-^ꚸ%] Y/.w<&$ml`P^e&cRr;<*7Jm4X` aG pFiB)! fC@qɌ@3˙@i!? s,D 4] hHU34IלVlƂ)JږtMOfVz̯i5^ 03b;#uyr,Ӹ5IA}uvQfxж-w]qk fHm?k+_Co!"ýź!)gmnVB`mj; q !vxh+g <&tom=nQ^re9qsq/\~Ʒa߂_}N؃"6ɅWWxHu<7_ sPzGoi{]اNvGϺ>?Qۋ~uy}}|o߿Kw]x]0{ʏMeG;W#-˷:[}K[zH|k/ۏO5vvVgߋ9(@s4!M=%~ŀ<1RHƙվL1+ߤSPv/{ZEqgqR,)vdtc7XsWS h xgXQpWhWhf@~yd_fw4EXPQPjF+ 2x@[5BV?w+ h UPiSUpPQew3XRUgMXOp v^ZH^\(w^UAjNfOHf3pM6b9x)UuREUPQi-Uj؄v6uѧVUNp}e}WRy5Qȗ|P|רgR=7W|8i=xy`3֣qVFo( U׋8ii1?8h'mٸffhpXP ؄x$ipf3hR(=YTW@1p(vPXP`ei 2Q4iQuS؄8oxT؆H~H83䧖Ӗ{<ńgqȄ"ń8ƀ遐ؓXyV gph ucQ#؁(y uP0(xٍ(S˨RpyR9=;Uf)(SY,ŋrxn{Yyșʹٜ@Tyi.0@.@YAT dKj1G虞{)SPC٠h-BIVѡW" *AF':*Z,J]'"1CD7)AA?$CjhAG)kA.< @RT$">0=]G]Ljy UԦk_ ?>d#3Gwzy:xjkQ*F1BJZBq3@!rQ~J@zVp+ѪV!G,B]PԨiQ>5(%A!$> esYKr@oT %PC:~ʟUnU$B]Y0OZJO4YrBTԪep>dAgzYC*T`A{YI"$cJ̓ Y Z=>De E-Q 5H] V@8Lg*HF+2 }DC:IL$ԴA>DΪN0 I.H|djVC@tAba->eA*ܚ]0w#o۷LCJ[tH [BK@*B iI5t\Ty+qZDtH$jnrF M_k4IгE3۪%B_TF/L"[kHD{!.Q}ۼ . EF؄H[=C˾:?[zAKbF@Dڻ5t{]`JFb 5k%CJJ] Ժ T=FE JE@2"iޛ/Hxepz MD2PIzIK1Q<BԙhMj:A3 a)!ٶWŚZsU *zƬFKU "*oH?t*C-DnFlgJlV̱תf\MTL:r0LcӵZ[GN 䃮A MKKĠ*rIV >D[AkInZL<ǟԪoJ̴tz |TNԼdyt@]Ъ@XOʼCvC<\I\dL*Jϣ*̭8 ԟd\+{ͨbl(a<"=C(%'/|2m/m,}qc<4];DQF} KCMJQBN.:}XHM\=?#Nc:aMՁ*bKIKݷ-bYY0&0m(m 4u)*bO`\ׂNd=va0؍Z&؟5zklғ-VzzLڥ&ř-.) ۱"m۫}ӹۼ qSmԭmǍ yp؝` ٝ}]} S ޙp ם . ^~ Yш`  P^ܽk>$^> ޠ .&0] p <=f.F~0 P/> ` x `7%>l^6ZaNq0^ޣ;^⒀aa$NnP5 ߋP^wޙ`/~sI0 ރonꃀ0qސ~]]޺޿=1/>S_qp`P7x7pN7ި ӾPSppَ]^.<% >>=㐾ꦎsbބ~Oon7^n^/F..=ˠ,/~ %SDޔ^L 8q@ 7P%. D#>׳PS0uNDsa8@ qPN~? Pl>Sv?= ` 0a vGޘX?ޯ_窞qo0p7x>^o[xP^^N8.``_璏~)e[ xHWp6`SʐR~6S uROMuVLeL[e tq3;ܳ?ErfvjvnT\rLEUUVtxǜ53_f[ve b9j7ygu >bh6hVz] ̒Me-zk*6liMN{nzm;ߓ[|gl|;_9gxr}w#/HV@EvZ`tSA]?$D ܩP,D eC04| wف{v xD$KdD(FS<xE,[b ~@`B(PPZUb\%2.U'puvcA &FQE`DBd%- O~ $g!M^pxH2 '3#HMB-myK\R)P]`]IXNl)QbIYJ_r0 4kzlf6Mo |9eL;hS0d\:RMɒ.{H`3D=ӴN!S|9TD`BPl>RY9w =]уR4hFx(Mimİao}Z/8 .,^6hg4X}oau7lτdJy#֫e $kAnquS2HxAss|g<mg@ZЃČa2oj]W-pu g%Z=VRq7iP# 2 5(A4`ujJK@׻@|[D vpldK@˖ K-Szխfk*[f2ʈ*[fwnx[nSRe))wq;Xְֈsp)|ܵ.wqIOɷ1pbsL~r\sHA rrl~s\tX |q'N.anѠmщҤDgǟ^ƨ ]%_yUYw~<;ٱt7]G)˽tNn*}Oɽ~;fvGj_|x⁷|167 ϣs$|>uY`eFX0!EBzfC%.QM՜eak`2,hI+ c#9Zڎo+/O]4_VG+??@@!@3D?{?h , @L:kKYA}+!@A A$˪dA2!#A+HBisB<¢- B'8 ¢›jB1̛3DâkC TU9L 0O@>TdHB*jDG|DHDIDR10Ctd8FsnHJK++!?N W٣AP%E^5` b#dcg3E0zOLD 68a!9Qfپ5z7IscaŐ1QC,Fp`fFc!d9jTS#inoLG>r UFǔ4x{F{|>F?p#> Ɔd@GF{ǎGFHL ǎ9ȓTQ HǖTd0 z>jLFFI$u JLqLJ{9`iGF~>,Ƞ kЀPDd30[ȇkK|}>mG#oIuіȇ,Xz ɪɺC)\83LȢX\ Xi pM NN,N/5J} ER1mQ,l2+x[U#pRZP} 4P\5 }%% *S+R 90XUN*V NruRq= mUlImOgPIESUM g?M`]r7PhQ(O45eӇEQP-=5 5&&5+VZggEX%Qt؛PW uTPX&рYχm =X{-j%2E.YxV-TEyP YpVI|Hu!V}VxY4Vi%ZMS]ڋٽM_MRmҗ_u.(π%U=0QE M[,P4_θSePXx}XeT]N ^jV ZA[ )2(- ^+NX9ޢu 1SP;5V,U$P=UO%Yߢ.|&5R# ߢ`_ ^Q & ͂} YTP=` ``vaQu6\|Ռ 1U-79U9.(+1M, ;PKX3 ((PKAAOEBPS/img/awtquickcreate.gif*7GIF89a___a``000??? fff===***jjjWWWooo:::'&&OOOrrrppputtNNN JJJLLLsϏ~~~xxx濿_eq/28|}3кL{{{yyy|||ňzzzwww󂂂Ӆˁ}}}vvvΌ۲>>»NMMDDDşw~SXbGLTkr魭#&*񡡡;?F~}}DCC&6:_?..YMN9R} 9QW`(+C^e0CHMlt]]&FiVzlm,ӝ򘗗ɩȚglt氯uuuf!, H*\P/=?IEiȱǏ.Z51z\ɲ˗0cʜI͛8s9 b/? Jя,ΧPJJիP#~UHѯ`Ê%jI=]˶۷pY1FػxЧ^h Lazz!+qǐZ˘3k,#MhHdÜr^ͺksy-Mmߘi CuП e-oNqYϾ}YdOv^?~H}gS' F FH/1vB$'}bR]0x.h#{|b<87]/;~U 7@Ft$Gv8)EɤXOXRɑwpt%QfBPv ҇_ѓMzY#Bٛ/Gs?p@@g?>JHZ_zJ}h訩n4?8 SB?%xه1r6c@)-ʤ*hDP *GѷB;;$c' B q8@?I9opÈ$?yG2{nC<~Dѫ"벢9<> o}׫B܏)1Gtc ŗ-2uJw$j9;eQ!)wUv+ɸm`x݃j/uk.i:(fj3Q{.Uz=ѢԾo2~wTlR(淶ŞSz.8oh#îwOzb/3+{?QϚ$Rod%|{OcۑoSɨGuDy_ҋǼ hۈ$veain'Y;uDaRZTvV}}pa̲?,(9yЀ)gZ@[GfM XZZnߥ^'z ~`lSIaIICE)akPjF0 gcW83݁X()/I*UtXE.R`9"`E UŪ#XlQJ҈@Qc1E!7I)@R%rN+IzHIj~$ь&Mkf"8Yo.0LggNSQ;hxF'q~;IФ6 : BR@>‘1JfJe7D|;ܠEY*m"}I6 @J1\}Òִ̍`a\J$A%^)դjٜ*!z*dV&A Oi88&BQa⎕,45p\E!~P,U˚"7BV 2 \G{P5ѯcl@KS !fa%4J0(8eRR طE5j=Yvq"wFK'-kcw둍Xde۴<]Bypq[^YDb͇XvhZh5r7/zk\Xt#򆓧֔jcc4.>xi0i`$inãfz+VYN̬e-m)ouIMtLkc- hXQV0Նnz] PV_< \(>!RF_F *JQIT,P5K͖uݶߌ]ڷޑAhglw?toS e(1#|0pR|I~F`\ܦe,r %(W3M12|~HT 0A1` b:,RaR8ֆn(7X;. lq!D)nH>IL8kT'L7w;\Ho2"4}Ni;d$1iTI%<./G#L \H 6g52MRWZO{󱗽zj>P7`.v8}{ \7,~|i?BԾ2O jX?o.G?d&&ÒX|j?Neq 8tC}0 A (}aL0h =4X6x~1<؃>@B8DXFxHJjfP?fSQf\X8a`80Qa`]U8P@XbȆvHntx|x[(f|P  =yyH=80fȈ[8}@ 芭8芫myH0 = (q 8xXM =0ΐ8Xxh x M8 A˸?PQV u(8h`V.02I 4QaH@H҈M)E)9PiF *` 3`by57<>Ȗ8_Evi(CIp8[8~) c٘bYِ~mm8x9=,9Y2i  "npIYi?P њyؙ.M!=雚y aٸ M y !I }9~֩zi  6 [%戞ʈH8pPڣ>zʡX(.za||p|`P.fȤ} 0`0 `@:=` iz _ o jq0MPc @p٧_#@ݸ*'`a 0ɩ3m*g 1iy*$=E該J*Zp*|ĪZ :`Zz蚮꺮ڮ`ƨ ( i J`8 o X{(xo@аhz;*& ;K pTB;D[F{HJL۴NF F-pZЦ0+@y X[k pp*D  &mlx+:z `iۧ[1? ;B FzJ@@󈫩ʯ0ۚ3K{+D@ 0*:/ K;K+غrJ7[*+뛱;{[kz[, F P ٿK<\{$\|@ K(k*!$ ܛS/u e|U Sܦ<@ȺLCMP5 [sK sLtlʯC `ˈE5@4ز`|+ٛ)m d00c:z漱z|;-Kmk hkH =mpη, 8L2 [``2SL<$J Ed89ak0 MܧJ }}}JJ}Jzg R]U 3Mz;M=1P _)Xl:0;ǖi8 в@*zٛv˦mr\0 Bpw]Qq{ۊ103ޚ Gp۸ۺ ԍ-=3#0a`= { Dθ\mݾ &(L,1Nb@6E-ah@ P?~ "GНMJ0.U^7Ya$@]+T@Pc rp '@AB*l梞:r~Q /.Tn{\N.[,FI@ P `p ʞ k0 ^p;(`NP8'pX.稾L.n>zZ^>NŽhf`6莐i@ sj``p@ հx " k & %? @ ^{pgN;G0C N顎GN9atRn~nI o s 0 mdoq p lx k n r` |;?C_>OG[ !?_!3˫ܮ.SNW.d_ ?kos_w{_ /_<>BOH/ $X_ .dC%NXџAmG!E$YIMjԠAC -1b̘cĈ/W`""yH- A˓+@qb ,,I36l,z(M(͙Ө6m0FM#C)%8p mNKm^mnm7#NF#A1ȁpqSN;HL tTRD%s(r+2.144ds73:)=5@A$tCMT4FYTRl{ԍ. USO7\PC[t=r$cr'ݓ2*-0$s3 T369%<1s?=4BIDEUtl;ޖ[o1w\Kt;sRweA:UdďO$Tㄐ P ECrd6rSny_vWՙuf{eY_[Wסh]ZacvX٩%vjZckRŶ379ms<]S9Vm7V~s:^.8X.醓:f8Z3k%T˹ü[py裗~z꫷z<ϻ'5efza_Z{נhMabf٨!fjcjucŃFu$f1#R#**Q: ZVQeHvA|eLt 7:3FL4CMXsج!M] 8KW>MuSB#|L;xJyGDbeA |Ge?mɽt#ߌA` Qs\F穮 iqFʶRǟ6RJYG c ┝r,e{Sm\CuNQQrԵ%u:KNSSTGr #%zn[%%LcC j-StgB8a7kNWfQaB$$eYcX!E 'B(IaSx,ZѝU>%xL{^G%a\ bD(2.Bd(Wj`#{x #y@w:jhH\~+Y.In.iRN <F ?>aw#^q~mHU?e-xZx$NW]4ήTYv! \b/( B捼xeV?}qVFsH.#hT"չ^63 6e2GJeGKz˗)brʏ&Zߙ7=Ϗn{TkZ@,V!;֧W0/Yv]O+t]/kv CpϷ~Ѯ{YnT3??y˳s=+˟5!yρɊ9^׼pH< 8a8Z+Abg'|Ax|ػ3hO>>Kj7 _UKs+lbcK4y+9b2H8C5ò=C3ˑ+;ۋl.kR93>@B2C 0c7 ھ}XhARyAۦdL?0#t86AK/d?,ӿ 0'lB*+,AB.-+ 6 7Y3C  @H俒`BTsBC+tۧu"@ DA5#631fù21]M0O;P84)+Eu<ķ㭸M :KD[CS@eDf4D[B>C404 zL=|\TGt=ļcT*?LdE4IsF`ɕ\GJ+ʵ:JKJSIj2TɖI+Ag:H{!I["Yʅ,Id$TK`K>sK?KK AqG,|tJJJC<^ IBg$GxtKʬàCF|-<$ɱLGtʴdVzMM-,R,zIb:ӃHތJM$@3@HdF KDRBRPUTHOϟDQbTQwPxN8-ut$Q=K(N$[A&9MȑOOF3J? H@ TKR[NeJdP\TUAST*dJCEURUUL}LǩSv,H_Bu=-SUQMSM^֎VuJ%JlTfJgOhOJ5sT 4MN]WT U׌W{])|M#5k5l-mGW;=̄tSX%mWZ[pq-rM؏}UcmPd5,H}KI帖ח-~=֑Ӏց5EX]"mLkUWeW=QS TiXY;ETgtNgu^gvngw>l=dåbF& GHMtԖ6,$mgXnVo~_hgih攁.c3M"/]hhhi.ie8~i2^kiX@Adi^H:1!F  H(7~f.e9[2xy._yA!iɝ!@ee>f^xk_lɎ[ ? V&\)n؜d؉۱:bV~d<(ߖ2ЁlU'm4㌦$؁ ک2џZ崎f[2侅[j(}b 2h2```2_[}(}(j(hxlh(;Vd&ދn6LZl6nvf^nhh m_[]^`@؅bX[n_^m<)r` [[[hr.h]kV]#KBm4$~#QmFkWkl`P1G]0n*gf[-'n]xv/mLl _Dnscf^2$ն^#Om>8*b@motH&FG_h`phPnt֎0Pa('u$_Mu#KJl5nÆQ^YF5Fn$2^vjiIl/S_Z6UjJ:P`mlXq]?q_gl`[@}bHvlmy` } Lr%߇b0xGGFzn_ RpDF`'wgDw:y`!2kw@Pyw?_w~Tv oa(j0n[z.Lzfz޶_HP[ p_ &?#Mb{6P{7\^@oSfkxqde/9֧9!0PP hR5>}͇mNzwқ=-) 4d#ƌ=Fr1)R! /Di"$.m4n5زgӮmm PF7‡/n\3 DC)ZĨG"IDK2iĩP@Pȩ8Rz\y'( gE$@[qU]y_ Va-c8"ewhn-"15x#9(\5(7PA%PCE4QEeQG4RI'RK/4SM7SOPB@,0?jTTS]r@ ~eD"D(]v_~&a!cAF"#p)x2z).Ҹ)oz*5rA:GdtGRuMjewSgxYǥO@P@X&~9l vBc P0ja2JZ)% {///{ڻ?2'sEJduKbvQzGexWy]RbtPOXEJ(pH$@ Z\Rx腊jh8i^zhVKYk5]{5a=6e`iTp ܐ9]1ݓI]aYޖy xt2'q$( PCp3RXA)Xn":a!F-5;;=oZb ~F.- ]{+E 䮁F<"%RG|6+MVzخ_ #^O(~p!\cZj C`)A,X-b[rŷ p K1gL qԟCkvN[Ez [DU"5U$;]R ɸB4P}0l hChz+G 2(^-yٛi4ϨUNB0i):* .f҄bD!ThFQ1,%oMՑ YYs1H㏳-P%=S n cHr0ԳdLMF5G)CF9WP'(yDi#5U1&C?K~$#)iX$!8F,O~bk%j|=J{ 0Qd#3hM҃[&wjPN&ԓ 5IMSJc])=2XT 2edm7ٚkZH!0 mC  nyKS5K)=RW%?IvU'ƇnrL?< Z#*Cp@3~&)i^Kewy4vcWӨ@V^ * cSNfC3;Tmҳ '}Jڨ aoA[fE3%ҳ^hXK# (CA2Ə6^I氇ì*-3.cyӁBaYBtg-*6]/ϸ`Ƒ|IsKڐWUMݓC̞NO*5 x!L7?UCIT;OTUh3ڮ`4 28ј&cq x HcI|6e3ӟvh* -SncSlP;1I -FI<8^^I GU.k z)4 4Sj[+7?Sh%'x̜>3P+kwHEi7^ݐ3@8Rp&ӦodY}P87tn/m.u&]fd \)ӽfSy,oyqu! DtϮ#kǀ`|m;e-xϜ}c+8<+7zq(4)fyjZu7uWZ"KU80@;=*n_Xkv5 H؀x~՘~@(tz{x$dMg $. 6> FN V^!CIi\D-Al `tK")J@|A`@ .!6>!p;PKs//7*7PKAAOEBPS/img/passthrough0.gif)GIF89aq555NMN000mmm ԖbbS]]]s{i..pppķxxxƜ333YYMYYY{{{+++fffPPPEGE'&'IIIkjk"""---̼...vvvzzz rrsAA7:::QQF((($$$>>>~ccchhhdddhrhTTTRRRuuu@@@{|L=>&湺rhhX`e`堠ƫُ_eqŭh```즦/28Ԉx~s|鏛ӿw~_م\]9WWWutuxyVllBMM/;?FSXbkri䃋~}~GLTRVRDCD#&*稨a`aά뾾)))٠~~~t787II?目aaaTWPTXNbgZGHB݌ttt񻻻VWN|lmP|&&89)mo^||\ylvwO]€mͳBBC!,q H*\ȰÇ#JHŋ3^ePLJ-HS(SVC *b%hj*bPI-XfRI+->滒&ֻ-,0'+z Go)toqFlrȎL+'l*W1JZv6lY2|6(isf`풎Xhnm,[^g}tsn+ x{0{7 4''w-+lƂWs y1q{` "o2ArlAR9y+2s98D|CzDv=_z  zE T9ݲ;|60^x W7ޅagPE d-qjAٜ|^0 ?[܁=k>|Fu ޥ+Pf͂qc~0^lxM fg26ku'mԥ[怍EkUZ`(g]}~]|rRvv7[*gV-Ek9ewxdU]ow_(xig'c-fX X5`pP%&6\]ЅBgV(_(\~k`$]n epn_gݗoX{VuUGM~ 6Ri^&W5kP5v5yk]lVbMXrYPZjXf*Wx+x׉AlVO!T!MUǸsҌθ*|1`Q[xڸyՍXq^M`Ew6]AioŎPL1.uuXv˨b]Wi'L6k^1puWf bDY5nrƈʗ_eV8[-Xzp0kg7\V]n\ XbWqUeu aog_0&bYvÊo~5iV\%mge_hV'b傞7`;VXbƅ+84Wi$kPZ8cU^G{Y 9I{rZٙə\p 9Yyxr9)Zٛ\w嚿Ypƙʙ\QFwQxhUĹ `IX0 bu|Uiq\qѝI0 p)Ŋ%v,va^rP PP@)Iig,(e0lXqx{hxX:z_Xi] U\x_. p ` T f{75ܖ]r1Pb]$r!憛ϙ~ɥ) qvf\i(RY80IFf0y[ z@Тʛ^J6|kPLjwgame[]*|&gʒgfڤzʪ٥V* |ZJzNma@@ Z噮` ۰  {[ Qp{f aPZivx]F/䪛m`UP6+l`:l ;@˳>k@@[A[fPz yZuUx%G_7{׹Y f{PgkK plk+iv+д& |v\e_\Wq&U^8ȸ!b[l۹Kй++O{]qf$rx{ydq_[1[3H5۳Ȼ;5ƛ? @뺯ٜ3U|[qalf(7eQY;{ȫ;[ԫ;ZEbhKE]R&/K].H}«kDkћ\N'tXeG9,!;|@ K%'LW7,9\@: ;E<ıU?|RlT,:LAkܛI.[6J$ku{rk{ 02y+2k~LU7;zf>G.>eƫKen@Nmn<ο@N@KD?NcunďƑ.״㱎ų~.ǷnK^MNîh^Ⱦ.V¾g~쒎T۱"k!k20 "v]8Eɖ<*ns)l /Q ``"$&_mO*@yڼ`ݬ~[}!@_ROG/ ҊYבֿ˦mI`*QQSn Zp)gEL'8/k/QmIq ~0r?=JҌ0/B?VZ ө\ ӧ` ׸JmXPFݬؐ@z Z{ P Z Fl?@H?m` @.Z)Os|d U A .dC rE5nG!E6f" ˖0WXM)OWl 0gT0ͧ @'/o|RQOk=;Π.&i:L0aH`08 & 98L*K(@Sh@ lXO*@Π!-t 0 D0>UtE]K/-b2(L43aMlrN:oLSPCuTRK5TTSUU ULbVZkV\suW^{W`quVb5XdUvYfuYhvZjZl..§nb\i+uW10I1pçxb ը }w࠰( ~gP"-"FW3\( ,&Wv#nW " 04vN1șb΂{kℙ/# ȍ ,柷P:{4^lu]eqb 8H-Z1x_7b 1s flɷXpmq5+J58ݢ v+f"-C@'[ggj`MܮXP^XN7cWqɯ0_N^wyy劃VlٱT Pкn!L5aړڧ_Mۘ 4dpa S ]Zh"dQ^P;a}C QC$bxD$&QKdbD(FQSbxE,fQ[bE0Qc$cxF4Qkd# 8QA]f8BP@,x*R$d! ?Qz#2X,dxbE,iHLfRb=vL NRd,p O58,PJ\R|(PGYǸ.yLc^ HYLdFS$,̎D,R)V:+Mxb#PbA*Jdf0mLT8YON޳'!OU:IOARb#Љ#0q"3hh WzT N*tT* P`T ѼDM>T(n@S*TpJ (TaY(0TIU7j!̕ t)9R#->Q7h=Oϓ rTIPO6ͭO:]lZF'=:WD%h#;^iւx&WJqRa S˷0`{U#fzR}vL3*Q +x 0XC^ 8`vr!GYLC0{@YcV%%a+#Yve9p@f<0h|5[~ ,`60_<Ƕ rLz.k*g-o8abT]A"  n'@Pp1A $^%`|#FZW#9SpA|=yЧ@)RMzԧ^7=&/!qSp)۔O =J =yFRYɗ=%|+Y(g!ۿH_U #֓T껉@A ?8B AtD S">)7 A!|ѫH`X$hxC8\9C;L<<|'>C> B\AiB;:*H8i{:(Ã[ƃ<ǓcCHEU\EVlUTHEZZBBB48 X[RTCEEƭ#F04Fd e @ALB^X\jF]FhF` fRj/x\0; (F\{(X[ ̸-?kXC9 tؕ}-F[ /\G;  Ե(^ӒM%/X\ƥEh읓t _,^Eh:]e-`ߋB_充ߌLTlN%O Q%U6tTUeV́à@2XXP^CS7v3;K۹E5mSHDhDj:5P`hf5&vka99vDC9eJaøKb%bh%;nC(^bFGIl:=a0:1F33FPpk8bsᶳ+.c/a@:bC eaF'fa:nDKHb/8nQ>fcUcIW,=KD(]_1ف9Kb#da+Kvfhku{9l^\y\fgf`~~zxxUb{{{|}3O<壣sssooogggGGGe|ϾN}}}www???ÃG('&OOOBIQ Ɂ$12888tttAfuuu!, H*\ȰC%HbE"ih CIGG7^8Q0cʜI͛8sIsbEM JѣPj9]˶ۇ+xnbdWbu:-Èxn]xJLyP:dϠCDRbFw+^ͺ(!msJB ׋ZEo+_^ncNQļwZH=Ï;>g=wN"8Bt%!u="DΤvz KhЀF,Hh" D.sA+H"Ò+>BJ |(j)#iLDJ#1?~D0k#y$Š$),N2"hw`*+:!B`;CA y;|I4`$K6P.d<<"ܢBHnlgp݃ &n`J"G.1Вgyhd:i?,@b z"z$~sH6H^2n'wh(n6X)t29+$""9&/˭ m擱]!n UJ0=li -ͪ[&GZhU{}@@G<@C@=lXI|8:7ԑ''Lf78wG pI`‡@'a`G&qE& 1"uB(< > EPG64 " >PHQilh}l [c4`E*PpL@ _8'34qmP$n;pMfG>A.xOXUX! ^0D6p !: ;qو쥊q؂"Zo xM Ńa~{tG8,^: N $#@,k8z!. 2("8)$ FJ? E[ PN;$#$i'` R.M.dE(XAGE:$!(d0 'm'Ax JaH:TB&^x:C\@y:*$I0 Lruuj0QCUd-k( P"$fF;`{q?cwh@ gQeb E@KFA`z;a )1P FVP )] h!$ЉnKҔ?fF" ?LgA+p#xg $H&YB]r 8Gp2bD{ V =#!bO< E:v0 F @VrEKH E [51-lrKDE&CbLڑy7[zŨ(bpXUԊ tzxy{pA&*z- x1y9 | 1SG MXOb=LxO7 '=D@x Kz*Zr$$Y"#%"x$ 8*؁&h؂h+'8uI ȂBN<67`1.,҃'^}`oL\؅^xYHT[8_P!qeh_imbm%q#fxkH$a'NX_,#$:vvdm8wHi(q@T@_ gp78-9*rrx =xJVHr %  _Bq=b{(VRFsuhBAXIp>&7 э> Zf"vЇFA i `/e+@߅3B hERY HV,@NV`Ǒ_>S90V"q`Cr B662e ~`u8 @^A` 7G9&W~08^'/4 pu[pF$(x8V ~)c&_֖ ޸_p,I w7 ,͢*6/\da)NPABp ,|Y: t9Bq pmE3Rhg@pgRfwR,vHv `nXl2p# {@ P^aEh  jwBDy` ` %0 i a`6@N.8pYAicnE&{`V enS  Ͳ %죣=#H㛃 .vtL` MYx66{:^V%#dTw ) _W " b u D _ 4 8R@n  {d @$M NVp0 C4 @PG+iԴ$JCsCp : g=㡿֢L_PNk*`荭[JK *0p(u wƵ~p T2X pP wR [vk,{ 7 ۫8  s& x 0y Z m\Ozٻn c 'h;b> ܋ v P=:" .Hxbhbo@7CɰآwaH) =7,0 h@#\=`=,@'2ÚVps@7J .TOq(j{m ™@D%ܞt uZ`0/4=7<Έ,hJ?ʘKLy0 ӗ,= ɛ\L},~r̾} #< t #

 Uc=8j>^pKziHpB'Hv 00 y#rt/0U+p<2t_*I`WciS75%  R/,*1`d`m-nQt kh  DUoOH }@"W'ًDP @# +/艀 8@\dPQNOEJ \[ &}DJ~`h&W x9Cd|@Ɵ莔q'! @ sȂaY7I.=%H rPG\زg:Op|υ^%'Vb>Ί{LMdȏ;_.(dJ$U_˵7$(NMj 7 :QqQ / J:uAV@Ncť<xcL6%ul]H&qD Eւ~;J l$JNSDOp$>kn{3@XA_>9J(;Jkcޯ0&! x9#@?) HBIcu|_@ 0؟lT cd#ױ_6'd$F aB'LNJtQ pCT!D\ Pt2 (, I؄4]6NI-d sT,Q:@"REL'܃0PiV<8SkS\3=)Px 1L(z&$h ᒒCV*$s D=p=GT$yųB0ŧ6S$53Xt Ak2$n'.y.U0Hv USqj R45[=PsU 5aJւ5!Q頄5!&V[DFVle-{YfVlgs8 &8"ŦVW:  Vmmm[ yZ0\Da&WenskVӥnaT(Btnw]Җm []w0,a >Wox!Қo#9`n} |`So`-gXM1`GX#&L"];p]|$`XD ,&ߒX;N ,~q̇Xyd(g nv;d#gyH6i989c&3K;*a"X1djIEe7esS:0V2 *g9^2Yғ^,!hʋ8D \њuU,b@q!MiX)^,}@z@t?-`;Bѡ&69[ld/uWV?z8}zfpZܺu}]{fwbA(po wo[7km\A?!qqg8'F+q\!MN c݅yﷺJ`6\ @2RA_myťqCSzխ~ug ߸.n/z# HC=u#fH{=L}G`Hǵ~x'^x%,8x@3_~Asg}m+ { AzA3|>(Em`^58{F_CCpq~ǿ`pJe tSHwhz`4P;Sc% ػ8rrxzX!:0kH$t"x4xSC  `:Xog1`H @d0C5xr8'5%pٳ:3fA?`ūs>4DDAHØ# o'<ȋovˋeH8H@0& ÁgQ,Ōa;L/=kf0]5`?6`C6 j|e008<0{FHVD,DMļ` [ؼDNl 6 Yv6HxG`.n<x ~UYt` Ւ0d}ZxwcW\:\I>qhTЇ HH3ET|X:W :3`6)ׅATeK'R0(jhKg|OL}`[!HځHҥ}D݋.hv Gh 8ݼ]Pݩ=QI]Ujf:x:PK 3'Ȏ\:z:TXzЇozع}|åL6ȯT3HՇXC^U}ڷ;`CCVIS-D&p2=K쭇e(ePjgpPW\_ʝ:X!#WfU/}fHIX^ aFas]HV]9Ξ}?=:)=(˳u2:Ƶe8fT}DqXSp`]dWʝA}`S81aԅ7c݀_Wd#n'ƻcbcma(eS>eTNeU^eVneW~eVKhRe\,TXp`'pfZha;c}OZ(\O|#ՇfctbSPTЇu`#`]UeNuZIHl^`Zf3]m #(Umjo:l܀+1(hhhhhx h1Ђ :8ū"HaXC Du:Z Ip;i}؀>f58K60ؙ6u^5xF |uPF\}]I}X?n6H5p]eoi6uP*5a&qfκlmPl.l>lNl^lf8Whl- P0X+[hedh`/~FPf~՞::X&V(DXX +W}~xK"m=ZA38槄:PfІ46ގϏ{meپɾoo&?oŮl.[؀_F<1Ad:8(0/E=V /빞{cl7p4QopCG F1&K q :@_| p''xqǑ'WysgtBOfB֚3mlqd%J,-Gp;SPCuTRЩ\ӝ 3#5x#9#=h/{Ey]A`Vaic 8dYfy1 lEQG!Uۅơ4ƕͭtBj( *z(6B:飕Jj)TX$|}Sg~Y%_(c&Ђ5d$an!G"r&.⟀i?8Lj-z- ^骛$_K6yjUy~VdjhBFin!qɝ\墐֎1{ypͩak*'٬mol˺ƍ;iqpg|RLx:}0<+<3ճ׹e*a֪zsZx7D;S88?Ͽ)'p8`CDf {NV/- |4{: X?St,= pe x b(P0@ s8@3!ǁ2^F K ݽ8Ӷ$n8}̊TX?`E pfP`s? bG9ňڋ&x/ /^0A:HEZl3,IR)d 2Iop)h),4 Fh\(˹-6𲗾/aF('R:9#ԸfRso|89Us(&:өNteX'<)u)H LSpD4CVQPɲuOme l·,!}ÙԁҸJbS=BN=~8z ЌͱÞFQ["@, D5T(@urMrҠ'EiJ@oⱡK|^әj5JJft-=Oe -tp׼&S3΅ ᐪ+ͫ"4ĥCeVG4)F:Zy+JeAqoyAPXRxe!9Jd$ʒ5lfZ9+Ffۊ?D(2\KgL` ЌmXx =bȗteHͽes VRVJa OŲoQ/ͬ(QoD4$mPA'\ H3 ߂&W=T TQ@]BtYMYlт, %J(7PJEQT-ȢA;h >9]3Tgn d@XB5 0<'t1O"RG=!w*` H(@*DEo9]v)ew), 5.3 P Bfr ^ėus4+*xaH>l  uC %;Paj<HA 9ґ O(G %+Fł)`-tpF9됊,sl 0?p[ !YNe Df0Ԧ  ` NG֑k cj)[Bw;]S;[A/6b@)(;)0I]7;8@;ɂ,ĞTPT(=C H;D4L@uTK|`V-T)Xt҅ @XlY$RT^<(#ʂ UC!U~ZuV•@ ?p;ТTLTp\_!z(:HC=TT!CĀ@DTx96*66CHE 2ЂT0@ N "ebQ< T1?@B1l[C8GfKYH TAiZ@ @ȂCDGz -:Ħ 0@tĵ!,A Ԙ `! -#cY!a>T*n*U+%@{eCGb0t,<,;$ CC ]T$\Uh?8U-t;?HA4a5H_j:JEHYaz(Ad2Z54Ø "cd# EՁ ڙTj [TwL=5YAeI 43h?d; X@ A3Ā]]rEYYQJAW-b=JA(nQb\@@$Up GkffXGMg&]X@`[PI(L>6x;<@: YI uޅ`D! eig z & lxaT.&? XC7TkfY$ܱ-D}*[CD= lC`"*@kY呠L(g.TCSy/? a;(5(@ke@E~[1a??R4P2@A-$p V&ܩW-VC]@T@tx>V'j.]xWDU2?((7T|eVC+ t+CtA3(Ched:H .SjfE; ?]Hb &~C]x b\q5b7d@X4Cvv!5HA3!x6@kq2C\mvk[_+//8C̃=gE`>Tut^ s4@%z7{+?C1Oh\t5kX/@9hE|}Ǖd92If]Xv~- 4}tD/8B/Axxt@ĸ8׸۸ܸ39Ђ'@:HZ D0/y/ۅ wF7ܒԶ)9' ,ǹ9y"ŀ/x/9%A%a&:g7@'570ÕE˖3iz9+qx2t-zz%Ǻ:׺zܺKH:T22';~534O;@/9A=4äEʥE{kK{TB2;'9|(!ܻD;h x@/3TCEʷ[x00szzy;7`-/:-HF`w^vwTF1m3P<;Ԁ @rS*i3cx۾`_a[asWF3̃1uQc|`K|]~>F&ȯֿ;(GvkygtCߝh~;/.%}rrWEoV_:>?>ץ{JkG\Lqb5n1Ȓ'S&=zѤK6]g%5ǝޮ||p0 ;0k1N2d%43>O4'=QZ-[< 7]?8Ò[NtLȪ%䎳 5?C뽼{T\_ܒ FoIs?yD>Oq` *Fe "Eȗ4CIHJR7{ 1Xn\$$E90)fT2H"’Kj I1s#/9-8)!Tg:Eh~2 wA246?nNp"ZP@BP:w;]$\r#̴؄)UJYR4M(j"ӌxS3hPZT5Ov2,&TZU^YVjvi+5iUZJq+\6#Wx^i4I؈wIZftd)[YR f9YIvb7Z"٘M>Z[}TG`0B^ /C-/| 8(a4ԫ.šcg"X> ~#, _8p?b*^12Z܊:!2sӂ-njdX/WqN/821#^AWh` "@ GalؗhA> u <>?S???S*t?Ғr!qR ց<ALAһ aa`@3@@ؓ#QXznGsTGwG{GHTH]a@ ,7 q. @ :T @C@lA؀ vA32pF#C2TOO4/jgnRwIS/`@JļKZ $̔ؠaLj@ +4zOgVkuU-rP}P/a8a I B4 Q:RԀ@Eѡ:@`6!@ _a @D  6E !W'}[xOl31qkxz_)rr``Ç A A.HqJa..ԁwCy` aa?*|x% "B"oWylyxuUJ r v#A+a>Ĕtab t`$Xyc fRׅyY7w餙 ;YO`JazAa-yB 4YMab ƷPc|=٤yjoy_k6p~9r4A#)nA2`â avAv_ `!:=y.@ڥ9c8vDUt MSWiH:`؁t`K:OcTzb)*bF.&C{Va) zKz3[x~ ڨ y'|' aYű *ҙ¤rlZգڶ eB@x/b |ۯ ; 4v{W{7B "@'t7m$j ;x{+&ӊE_bbl;QTXz 1DF@@@م|ٺ:::R\]9utt_llB..MM/iu(*VF/dۇ(~l7&ˆd@̶U8յ~}}sIǟ[~~~͵ëƦָDCC󯮮灀}~f>@ {{{ņ աtttC,!, H*\ȰÇ#JHŋ3jȱǏ CIɓ(S\ɲ˗0cʜI75sɳOJ *Ʉ~8=%:ϧPJ醉~2@g‡UfuٳhzwE%[pʝ@:JQ(WXSߔXbbv2tPϠݶx~,10x6 5 -$BL2cٟ 81FWh, obT"` HDt˟O9e_> iViW4hgwNGtE(!t~dLAe=8Zp6Xށg.aHA0 <ULB ^'? ;(5I$meWlÆf@7a9PTJVnf7ԑP&k*PN䛄jU T}@F*餔Vj+馜v駠*ꨤjꩨꪬ꫰*무O뮼+?k&6kF+Vlfv[-ކ+䖻*Z vnzn6Q 6|D3CoKb0CKojQmKpŰ6EMxOPpiɠ1P4O.r/1̟\PϺBA3\솬1|M,Kl !?3H>c bZ6 kkQr?_?ev^MF?EmC/d 1p 7PCl/!kl8sva@j ޠ ϐP M,ʫ.;1 ^C^z axkpzvZ?_>;_05.~54Ʊ| 4UafS1y<:V JiԠ05 dp(PS+T%cra6&.sĻ?r>5N DS*5 /Wà! kh~Ќ:5ob6K# 9筏ZG"/uCbLq#*Jb XhCc@(ʩSeA=o G96Ex؃ Ōˀꏘ"/xO~x]FERS<rX&\X1 `$?a])\'H92 kǰMS\e{Stg@nΝk O<9ESd(ux8lL 'L;f>!juXfP7}Abil Ni5l u/}= PKjT-qa`UTK4Sh~a +T9 q)` s*YKUWGT!V[af7˷>ֳΚ*{DjWNAm^+bͭn1FC&`-Wr5Fr8î)=w(uC5Z@r+Bx w8.p7tJ ?x];J?ns[_Nas»`jamD&=ڸf4N[НÑ5]<\F?uiXkAox=lkT)wA\ W QfN]{:v{gmKʾm\c'кp`migc <+aծbgȧn\)6;.ձqXm0sͻku@.k/SWԵG~܏ 8f UY%c-9n19kjś0 mtN-xg``60RUa`F'6yp>̖*>q҃?Ad)a&tk6e 1g2`T{y7Hb.hSNB=kDDS}5a#{d *3'G*z)v\Imm@7tE3Qf3H3cSb>5pW)؂s{3H`4TJD}#s?'0+F_u"j{pjoHlpfrv\4/04)BW15R5O4/C5J4Oat54)ks05_ҥfuFj@aH2B&b~h0eaaoPi)w'R9n%kfdSbEo 'b%Cm$y_Ie?p\6`^Cƒrvoh$vd(/yhSfjF_gh]6`LVjch`oepSjT)JypE]Cvf^0hirHv8)W`^g #es_Zo9ivjٗYstyox\Cfh5dS]ZȲYٙ9Yyٚ95he(kQp&^FqɘQ&OWl&rbVmW&5at9dh!yؙڹٝ9Yyp8e{dh`]eKjFpm^)_o hpCCdsj]6yp`ggFy, pʡ9":2$* ,021MRf6d&k-wL֣ieĨ)8m\evdwd7h&`ϥI:)J4> 5`z*hʢ7pڦkZihڃ҃̆uyE§A胜bxFcg@cmШ*hzvԩ)nj18>;p:;: *e*!*fJJR2:>i077:`A9.AAppi_20 8&J=p:P۪ [ K*  J1k\FHۦQڲF{_:$Z0z7K˱֚23zrOۦ=Pek~;^SU [W;* ˴p{z؊:9 ڭf;"zfz2 *j3K*_ >`Lk1{Z+B;LK2)۩zۦۦZTk5Ұ&JE :K1 tZM*߻A +Ī ZE [E(6* K(+l\qrKZ0 *@)"<$\&q`*,l==2<4\(\8:9\%/)yHJLN?l*Z_*-EMK ll`<1"*I-Y) ],_L#t|jƥb壭Ɯ\,Ʃ*:[hb(*ʴ!J[;::ʬz<`JQ)mhRq9`>p]jȠ gK{:z-k˜b22Ij<Ŀlu̡ۡ<@>A.K;*ОZK.-㚷 ӣ1qҭ *7˯,|#ݹD|78!Zxf*L-;,*V2pj_z@m7|20_/ 1lڋŠ:-1l>&]m]dAl,ץ#Z{?M+1K䋫;p\JO؊8\jZ=q`#=Ϸϛ LʚKϫ)9^TÍܝf.=*皬-Mī';{ Jz],# , ̪|[++.N 9{*~z ) 1ŌLcVZ&o+o]>LfJɑ<Ҍx3ʫ\ob܊hjǏn^ʫ\n>>ncL07so@Ѹc{|J$wyΦ [K8d6s+,/ڱͶN):rz;ڵ,ҽ]4L(Jи!ʏ-l|37sjĽ^˱H{{̪jԜ17p鋬N\^ Z<^{ˬle.;ғ]+ .e} 0h#: (* ŋΩ {+ͭ'{1͛/v.j=ԮmLo? ʲDZ؝(1t?x} RpO.(:TڟzsӍ=An yo2˽^ ^T?H/%@M}}4 oOPFwG(a-Xܟ. ;h_n#A~%NX1b~1,d2b7#;rY J9%Xƍ4 ;bt2KU#ꐱc獢GT#ƍg_eaĉر~$u1 !"C~84უi9ƨz赡X u$āw ۫'zһoS[K%'KYC㦽7'ťx)}>qam<~d9߿kpo(A==/B sP864@C\CK4qC1loB[E$;qgDM$1G{(E3,H/$r0 yܑ HABđ"R:(AT-!8wd%Mh|:H?ɂ$磅 2DEC+42ѿ̩, O iIꮝ+K)3H4{ޚTNJh6,"&'TJøJ-4:#i7pH#Tׂu7DN亡ܰ HFB4%G-u%K[kDκlr @!d芵r;MsU~n`xr`ɧ-OT(~]R5y*8wA*pB^׮ڂ3e#8NdHrUF=qn\rӥH᧩$ТVuɦ~5 vm*wfpۣT Ndf )jx,KhۇNsۣjUڹב1(2\'ϭjǰWHc\p~y-m)9Ps' @/ׁ/C4D oi:qpns5aZM~CoO2ȻH=B/`bt(M.GbP$@C*:Ȝe-/A24P"RSle$-A(-3IJ`ʨ_Ad*%bX`"3`΋Fypd f5Nwz"XA V0LT40'KѠr>J"{T;rQᣡ("B:z"3HP:$S#]2D,&CVR%JiJHP,IYǗ$ %[/ /74f5otGdIa&q7S$g9RNtSA?NxS<õAL\5Ǫnة.ki~458y5.Ds](hAsu2\ 6eE pWjGz&RLlMۆJ/ɜdT:ٗ2tr^7m%,qB b>9,5Cb]}k}ryngF&l|n|xO P(sMzԧ^g}]z^}K$>bT}}/ѫ:iI|'_G|/q~W_ۿ~ǁ}t~_~?4Ib/(;&q"_b@܃A&@k@@ar t x`NZQA;rN 4;@ 8A4Z 臜 a.8X"}iE+TBL!p@ `06 4AA8# .`BACaZ;~V! x`ްD@X𘎊DpzipqQ!x P8xh9"*!!bH!V!xb Q ߠ!3`" 9F0 E!Dq`8V ‚  6g,i Vl\6%qHҘiH !‘ ߙ#鈚R銗JH@n䙥xĆ8. . 7j aI^!ʯ`$ٙ P1И-"!*"* qtHj   80Ĝ wBt4\Q! ՙ ˚P |QJ=<ǯ Ja 4IҴQp0ƶlBG>љmq 颿NiJ #z9DCZ*I :`pK(I NH+! 9OKE9 ѕ@X܍4Jla;qVD "H!i 8h X,J19JͤN`im 7bE{ 'HdPO TQ!H \t4pj|{Xs>KӾ{>>X؇Y?ܻSPQCPDA/iќ>Xm>}XYY-YopU-Q쑦è`BOOp'tXUvzŧȈ۹UpBO H$ D] e(IQ~EE|1@=\܇-#гI^ Y4@P5oL R D̏ʽArb[^{[էM̳\X@=pu3hG|\4q MZX L^) $jZ8 ]K߹ъ |98Pa`kR @I߱)E$V5čL|`ڍ č^q4ݏȅS-¢IL\8O!QNI1˞ x |4 < >V5p9Ҝ]⊠ &N%I~Ԋ+ԕ8Q/E@MT| ZjZ,)1/"o­B.R) V,_Eq]V7"@ 9R=bVxAQLf P9 HP΀(^@݅E8>cY4af{Lp(qtYV*NFœ-"Hg%"EVt*!eUagg=VZ&n[.l]ݏC lhNXB "A曚e[ec٧%.CjYnSN_8h.B8kvHFpA8 0+24Q[Ki.@-H[O@H آTAk@#/@ VWjO~ץ1XtQC6vJѾ",:~dtx4VaA} Lb'am}摣UᵶFXZ'q&"a )T_;јv@Qv\ ~Y T^fVÆڊnǹnȞ& hp,͉e(GoΈF2n Eˉ2K3~~f2 WрE\gܬv>눨Pؙyiܐ@o.Аf\Z|ɖ-^rYT-h ?W8i>dY"XxrNQPnxF ~GHql u^tԽ1S8%I؁S h#@(־q5肈#8~~ ^խեx a];1qIg!O"Ji '6 *JtXɲDB7K)ib bfЍZLucܭv$#vcnoD 'y itu}D0m16`a+Iʝ_jE8q5z[s?ޘ7 tH: @{ժUyPRy:V颷詠Ao8NXaלK)ѼnWm9 VqR,p^ p_<hRb%eٞzhH/oyZ ݡ1OX16 +ˣBBVxXҷ >hRa:L/]>%mY@j6趍Y~4䇣7  Ĉ xXp ;#"H~ -~>xHdFeH2d~v'Pg'Ҥi TȧRя*VVysCM 6 /2}q  x+"2fE+eKh+ׇYa꥘&Y~p\PiT;b䍱Qƅ4nxF){%jPFN}is/qή?\73>r#Ǎ!}#a;rءe>$/ 7w%#ԣ˗~YSHEMA?:]{miTnAf[h ugIVW9u]: z -rUỎ@:$2^^]Q>ա֞BU'f05ZB+k a8uCd*NFjR:M1%u6K: mAUi"O;U5+{>\P4@ty5pU>d'8iuv 1|."PK8ldV +%63>(A7?C5 w?ktO~TG1v1aEX#6 hyܸ^\_)Pa{8崃8hm8P7^"lͥz'uFGʇvDw6Ax5:]p)!,FkNU׼!V*F2g mpgl{e.VUBŸ́7l$IR%a#jѢX mرZxgHQ7@BE)~>O!53"퐘DKW=QR!Os<AE јM@/dwDFk1@sOp$AI^P=Z>@/!Y)r i +IWZ--h03>WE* s?pk=,,)#PT+_..lc1_lbWC Nws,d@?G d=bj%SPM&*sYW&fՉX[5J-Ù &`(3PX] 35~>(! f @h8#ʀ覮AÕݓ0A .HdP vuobX%']:ӄPA&y j C?MiaH -n:(wo1 sbM [e7y7 w 3yl?|߰+ni;y~p5\K}B@yP <Ǯk r/0 G'*p$^C/:+禷怤uXzO~]˞vݔE?}׾uun/=X=vx^W']W8kv-82ǫxpfH2Mbƃ򗟸ɽ4aMX=4ްO&| '/Of{a>}-%xk0މ) drl0 aAK _(|kY]m^OՀ陆5NN|WLYaDC .lJǸ ?ȠY_ 1kA_xՖ & ?_a " eV _Y A AQ_- N`j O(Nke`AH]`%Y B m֠ A4ڀ &N?! !x AAd?Z鄞u۔}a\a$&N%fN`Wx!v`wY^b^!ܟ͘_!c-4m!.!n6.B!#88@ b VY!P= D2? wb-#~KiޙedOl~ud@21DX4BfꔋIq}բdGvKxn , @ KبJT jU\[X(ʞi[xhLGDI|HnUOAz|yD B ƔN܇Y`wbegZSz&qC uE+S@ll c $ f8qTi$ģ){i<vOUh%鼅~jh'jjHgk8J쉐rzHτ ` v^tYTCd'gfS@pD\pgJi|NȗȈJL\NhSA4hg>:TthjxJQ|HuZG >O*blF 7Cbo7YR/V;Xs/hG h V"T}FOؤ%.Ӧ0S/Od@U"ɳ~vsLtȞ bX3`K{|c`u^?Kˤ huwg|q;=lܓq??\:xu=hnhQ*Ձ1cy=-}dZl ý(w]ꥍo~5E!c:vȠ,Y ^vC:n/O$sU3 X뉰7ހr xg_,a?8(SSO" L|A 0 ȇ6̡p`EIʭ?Q0q|i8ǂL HBΪ̣b|A#Ѱ{l$ .{(3C4ƗNtsL0H! Hߚh+BA:&I(嶊&!ʴAr8<#1 !9ɶTgM(iYWk4O~$Ƚ܋ad8lpI j(f PTIBɎD32_{[pZզ7cVҕND;l,uB,ӈC3ȳ {AEЦB. PH"t,YH(=THJ 0`N6cuXe%w݈ЭYZmW pj dJvh^kZt0*VYq|8;)`F9mʬDԩ- heΖTƍUo"Cʖ!av,D58FeDSScн:rUY\Իa6}!J854H^']E~d}U<=fMv3TRȜF⌏P(J+r6H8xHlߟq z54pqi{qdX|$~ C HXB)T YB1$_s@AoVD)ZQ^4F9Q~8BZR&)UJYR1LiR%(9Ny)0APZԝ Fe>QMq:U^YժT*U&[XzSiUZaհq]Y S:ym~Wjӈ` [XU, խz,Z:YFֲ[_+JchI[ZӞ`{jlZʖF). kpZN*Xs\ePЏnX8'"Z~>SP0C-OWb~҂])XNNB5a uź)\BVka0i\6'N1ycXҘƆm\d#Q8]?ʥ2A ȕŲOߪ%O#ah_>\wݲfVN\ gcn>pl_΁ЏlB}n.%f"ƒ[h0ъ^m3V#kiJ-!RԱhM=Zk$Zynn=$t0LIX`&M E^4 ![µ$(P?Xv?[9ϸimr@B  @ǥ[ @; +, x4 P _PXm=-pWǿՍڈC\x#q/A^ɖ4&f@CkrW1 }4np;h#N (ڊA +X{ˍ 7UsR +($XVN 0;V;_nK ?y>ڞ սl ?{ߛ^uAA3@x[ O1xLHjN)r2_8'm\k҈zh-s줥Dsν/Mb;SMGq-6 lJo\,☮. DH| 0$ FKB/jN/( . n0!P&lO> /-."P֎(IP.O0CK߬@1O6gRGnpPMo.0"n ϴ/L p(M쒐o NE ޤ aFO1$Ҁ&P  JnD O$HKAƫ4q &ڄp.m). (DMZAC+MnM 0ovQݲ/KA`@Ѫv1 e*$, Α 먎~~%M,J~-B~@@($-hr$u~NEK"o"aZ*#ā#MO Lk !G,Ӑ Bp-ղߠJ+`, **-+_j+Y+:f 2kVL6A003nFL !2G3&s¶!.S0 33[s< 4szL,S5W55Id6 ^A7I4*2YS8iL:3>8s֞󻮁R(8ڌ s 3 f=GM=k7.@>1>> ??s tACr7AA*BJjB.  C?2AADD:OTRӨZt?_B1Fm ^Ax!HKTADHk IJII+4FF`JA$APD!`AT>T>LgJ"x"Aqr%r-scvfkfsvgthIwhOwSVw`9`5jaiawklŖlmxWyyWzzW{{ 7|wqq#wr+r3}9~?g~K"l;s7`jcwj jo7ku7{xwy]y7zz7{{WϷ7}=W~[~=HcTnY]`aWjakswww8x%x؂8X||I8}O}sgCׅIWQtX >B9KS`R@UYZc91k"x5vyCK@٘P@Q@ٙYy)Le*jEji4l@`Y癞ٞY ԛyU  ɕjUcʠ :uIyX/\MRg:z!FZ>UXڤlA]YU_DsZUv|uf Ezzz;SY)T`qأsi_x˰R:-j*+ Ǜ g@ ٻػ!`ཿjC)+Wۭmů*ՠ1b[-$Qޖ^IË!u]Y]| \Q5ы ]y h^O:횿'˿y^1` l`; 㝻97`>{jmޓğ*~M{$B&{ /}@Y罸)uG B?SD?"@WM ^?`yos_繟y}9?s{y?_9yE>X)؉/85;|9}Mx}5}q6%yy]Ÿ <0… :|1ĉ+H.HtId#Yr/ j{ 3̙4k7'lh"D蕫\%*D`ᢃ  V<(P)(%M"A(gآEѮT4Iw U# ,ŢŌCTı1#H$MTѤI@C~lj۾n"zp ~ċ?P3#ۿ/_ Lastq`i`yxyai ~ g&b*( 6``6 Mq BYxy$Lv$"W"RN⋅hZ 1?ffuVh5ޓ'a9z*)@Jx& n&g%axFN蘗)$iɨ:f6hdiVשd9!E^z[t:ftVzkJk9djIirj9zlc*ېJh맼j-j~_Qo p J.bӆKӰO\qo\p`&LrJh;q;L$G-ܫ׶\+=]:Ҍ ʈ͞@,0LjNLNMuVZs]b_y~TXB:0zl*`X% x8qtCP.bb@ BpfHWl `}LiKdI,B$5| C3 K22 /`W"!"C'څA(ASR3 ` ee7D4|?jIbPv0LnUϘG*h hj0C`%9>3[gڙw“OUN殔4e$X M+_R(X/bR1 cƉN^x5& JT*QWk6,)%ؠe0CAGjU2`UD=jQ]Nt;ӝfϨ1rfQ*Ā6 /iB-C%%K_ф2"]ϪuiuhڈKfjv/Ee)vTJ}+8\B:QLv%nw{[V(nq#:&2|HͶv"8N`݂`8tCH)w\q6pmEDK3ҒwIfk͉F/})Hڗ-0R;D(XJh`Tt. WIvѱVQ<t:pz-hf_oUq_ܘk鴓1GH4cf2rE#"KȬErlc i޺|uPw|b7d[rɤQtk/_v|c7΍ňDs r{+H m4˜KcNiΙ,ҤNlWLVf_-S8ZDL@XG$d,Ǖ.5Gʡu-r͹<:Xö5:bC!ǶьLεt}Lq$frq7yQϛ!ѽ}.Ž/Izj%Ӵ(>617P%S:yE|4o6 }D DOZ,/W}gOJT2X*YV%b YJqGkqKf\`sn }z7~g  u3ӛbFp`7p%Pb()NTbh_ Xr񐏰'JqUI6ԟ mp}7AR =oG?A n{xTApg'E85Q rn%rFJT@ `aV% .W_fcҁa&Hbq-7Xrke!qfnM+;=?XHAh.7X(iK6<_UlR T9-Å,`,OgQXȂe*g(jifd-xX@Ӂsxxw旇LPӁtat8GaF[؄]hD_hi5h;d8/P`MeM_eYe`5Th}'tpv8O-ePK5`3`IRUX$Ub4~2ը@XqXݨR++@  阅OPUP8QJ(8|hҍ؍.h 肿U_ЇKqG(8-K8PdPM6M&U&HmmƏ7XHY(G|H@2'F9Q$uPYbHy9LYxXy=)u*ȕ]I jO)ΤIxhY*3hdJ)3x9~"97R3(moqր)6~)s99`!t|>|wE҇W}އ09))  Iw9wIǙ_#yDAAAB"DB&B*B.C2DC6C:C>DzA1EqIMW{\{]{bAfvkosQw{hy;GX$ uuu{be gvimu J zx|~q`?j8#.EJGIjƙɜٜ)9mHȥ]_ a*cJejgkY*fɑY5ئ:rtZwDyrȧp9Y|zꗉ*uꚑɗWznyzHH#J:ȩُjHqڪUUڕ$_RhȪ-5a^jzF 1uNKpXEIW$~dXuXPX1fҊF:/fP5`%VREU|M:Pe0P3UM`_TbKۯޢWp![[Kkġ'ȑQ āCIR^KR8EITM,DҰ@LpE[CDkWF۴G'K˴UQS{IkZ#F{&Q Bj(P+:4P?WRZs˪*ADRP3M4P1;Pv!j|N e@˚0{F}dUPJ$2U|%KJj"eʚgz;A~{h{`Dph nڼTC ыF* 5V;Fd kH*&+QkHPc۾K3+#0rIɼ HpJJHt O 4A@k R0LYȪ/ 1,3L5l7q)ջIɝ'W瞧G?aǟuu%{|j/* j>>777ظUUU===HHHkkkwww222--- EEEMMM000ܴyyy///CCC???LLLጌuuuAAA̒:::,,,333YYY;;;...QQQ}}}eee ɂRRRBBBNNNnnn{{{```׏%%%999sss444vvv\\\!!!]]]555KKKJJJ SSS888OOO___FFFTTTccc߳GGGVVV jjjxxxWWWmmm <<<$$$pppiiifff111ZZZ###tttzzzhhh|||ddd+++&&&bbb)))~~~ooo^^^lll((([[[PPPqqq''' !, H*\ȰÇ#JHŋ3jȱǏ CIɓ(S\ɲ˗0cʜIL, ۴W_beK%ы!CT]q-)AJTԂ P2An%2A@B6_7iqRWO- 0)%F*^L| )2`lpp&4dG,he@O;<7J6> .12 6j U )DA/ 4$d̡ 퀆j)$Q%l0K s1rLABE! \rg=҇3y/&4(&yP(8$i`dZAr: @u,ycH>G+pOc?8&?X91fqcm~FjP Ha*L+`7T2;t\5@C%^9( F#\`?PS TMCIF4 _p|"%H M j1SspOO*B ?f0+ؒC hP'LQ%RH E TS`P3# 3ʡFe`, p4iGcM Թ.M<O2a0̩ J+R'/?!7!9ɥRE3m@@@i6PuC&kO9t?͙gr7<$(#b3}$ qy3B#}["?݌! -:#H?@-CïC.M E 6\D/@Sd|yT Ab9? Kԃv@8iS@Kx72hC聲!& +=X,nxG  Cs'Nq?yQ ,H @a DATj@`X VG~@`/e+/D;pjhDf0Z'Y(1I%Y0D R>F0ԁKk,sm +Rp0 ^ǐ%_)aILPIk>DpXp1zi|i1Zj m' 9P ~ Z hki܆&L* @ p40Yij0 @P.Ó Yl)P }ʐ `y6 DP#z0 `(#MKxА0(P3 p |y.1 x0b r:p}09p-@fP@` /`PP@ ,@Vps^8 3t R0 0o`; @p  p U  * ZP{7`^aѣ>@BJm BE: ƠUzpn"KE`&o30J! p mFy :@up^@ 0Pe:Q@ Ա  X)?ڑ&&à?!7P 2Sp #zxY8Y@ 9E 2Đ` + aQs Bz 9*?S 0BG0 G k@9 Ա  Pj&( ,;ǐFԁZOتB ^3|Y*S CSP 1np DArE+ =M` 9u+?FP 0\} +%'+Ѹ! B^D% J K apU ` 8b  ws WP:` AK S(| '.0 YkǍ)0Y0֔W@oM䘽1@̠rN齩Lq AU` 0 ŀKR]ۗk0 /X{pXJP Ry<>ҽN` *_.`*4}} K:.&H S+7@ 0i- 4A@۬p٠( 8p 0 p#ϒ!MP of-// !q/ PMrC !S -p0^= UDa ICQ^qP  >Bvz +Pk.UM&a.4&DP?N*0I $XxPm`#YnG`)ݨ7KӲ?%.Ir!L >8IP@=%:tE.]J@Q:8@U m/( >@/@IjH9|/ gE@;{R7opោ |!٪;M(Rױ:*[6U[kU;#p7B KqSu{ZΔ1Ww~4)yŽ^*pѽ o\ Cڰǝ<Ҡ+5R4 80@˾r'ǜ)3 "i cJ@2eG.Ѓhj89@*#ԩ-ML 3SԠ1]s6b+ǓDTg>}ņb(9iB HU(fSHSh7Sh 5Q,ZnSjlܶ[t9pwr<7]z\7v}x^{|?7P>7<~{7`9X) 6A!!&Э`Nf* Et`L'85ԀJld!MX։Bx6 /`f ьM!B". a |o#x5ocҢ 4@oZ(≡YkM[Lxe`㎃+ Ǖ2(RJ'Wέ8L&崥at<)pO,2x+z`%:6/𥻦BP5Jk:֘ـjm+$i.TZyg#Owo-X HdK~XHi.6AvF?aX"Qx X_u1 C<4q'< ˘P `R$$w=%/PZ@ V^H`4! vxXҐu1,O˜⊡&2 Rpv 8?xX"|PFC <81Gz1b,I\ {pV(VB/*&Bo q*F=*\-aJe鮃@@CC=$[ v!f`1R5X# b9 e*`ĥXM0lS< u@ ?ذ ÊN6q/0 JDaYL`Mk\aԛ8$`%&Mi= )BW4 q5tAz |e` vxPrGz. @4B@|ꐹ +w8$^5-twwс8w/jmX"t| _{M}'02=XB B4P ڜt -x(c2ްݿVR2|ڀ!9#b$ֳ& /6qgǔzZ4&k_P [Y*;speY_RzJpG:A G}u,[&U77*/mT_7#CmCP/h¿? >yЀX 0 `1<|>!!@p.*#iԀhgC8Ѷj,# /$  bIF1 ,@MS(Q20( %4!L$ CC&'( HE ̐G|HtIJ@nj҂Nh SZEAkD3yE֘Eר ei_ a7BPXcSFfVgth֋ÞD2`!ثNcY0r89^ vX fw\K4m[J}(pЃcyX 99ȄlHyȈċZ+6\;Y<21CM0n [ TH,ch*x0%0`r#qIXG0U@I(0}">2ua4((ZPh1@JIhG0Q4 uyt7zc8|dk K@Cb)K0pd&G )A0@+PRbb(M8d@}t;ȣ0P`0Mj8L(;t?|CiM TJ `=0xRp+@B|eH|yc @뙀l؀Ё ȟ iM4 x kLMI9)L@cM ]\xG.(>@f0R04B58akZw?#f @&1R ӌ dָPP5FFlHS? AuqoY.jT` 2@ _OTix+SHT "!*Ͱ;B@<U0x]'(LBkX8y&$]`ցpV@UFJEm}:c0u}LVdx e0eym-/ W]8Ћ{1e @x-A0Wȴ%/X>ӎT0$hTGH@& ځZ`?/J5XhAL\lH=Pt$r uDxDJ\Ns8Bph̨]MJ hG<6RL]E/Em=ޗI^XWSz2 _=M_]_m_)pv x__eDPl)_`݀Z90N5!xIR` Bp'm`aa.aiHdz8a~a&k$ia ނ5x oGM`$M ŊS4-\#Pb*&&&.//V= ]8C` 2M R9.4Vc ac|}26 OJ2P82phdABމ'`?~ ,& P@؁Ņ3bL`d tІV/L6MdO>PeXŠL`;& b 9Xқ8E8G<&DVXP(m -I 7]& IK%g &(4q8-]eff cKfjޑ1uH(6:oF gs tej Bv%h3PPD|vd %Qfhg;pA#dG 8~ dhuh.H}IЀ˜I=f bU.7 q*W` "6VdHaG==[H9PIL 8C:0DTD 6ؤVFkLh(p#!5 r0#(UT.,h^[7Nxd09.p 7PǮeHg >dP)0F/ah6&CȀuX܀UWd1EX3m"m6^k5/h8gЇV ‚h7%LPJMxk-#prCp8pp0uq Te.h!XpCsXҘ9_E+^pldL)qNX(%hWxf/ KV#xp;T9h^6vhȃ)ofi@# Z* 2^so#؂pHJȶE0 ??hhAO-R0tDWW)Hb)X ^@WQ/u(CXM0 x,ZD,~AZX/PT(dGO[0؁D^hȂIЕhp6ȁ0q@sv?"3`qJt-dtOȄ=w "?$/L(HWHr[HZӤ?1]Qp hwPJI~5xZ5"}w:P( Y+diiMǑ%|G.(}LЀ~ ( \`sS"lUfV`7qJ"\e/?O_o,h „ 2l!Ĉ'Rh"ƌ7r#Ȑ"G,i$ʔ*Wl%̘2gҬi&Μ:w'РB-j(ҤJ2m)ԨRRj*֬Zrh'< 0<<_CjJInܧgHрqd" !VA89G* T3 Ō_%lAYE 0PvHh1F  Ѐ3[VA#hPbtF!xw0A dbnB ꐤ@;.('RVQG7 ~p#%X@DŽS4,O k7`.?+1'aSXRPE+Dba=s.T7@*H` A 2,Ã8B,/# 0H\ы?X rO ?63Hx6pPr)O?W',NɬN8,@`p Cd@c0" B[2?QzT,  V30!-*2j*љ9@@(AAS-X#^4aa@ !@#AWPq@?e`I &? GD?)$Y76 &UI@?<9^ 3&@rړ^@ a? KA7"@xi km?B#mZQQ R=~5+!@`^l5hb@Y?  1 QADet B`w0 a w9f = ‚~Bn,Ppp ԑ A*>p,:*>0@(E4(T!h-aAJKX@@Pa 8 Hu}b"r\9dA`ExG)Q NĘ0CQm4 R#{bJ81a ;92D^Da8;¡Ȅ@@tR~-w{"@ yLJcq/|...~@u ^ E9 ́S`,@ !L B<{vX $26K( $> vxz c48  hQ E >"v \"XS+ aʁ֕(|;ԥ}BDhU[/5nfd%[ss%0C7<?z E2q c39?q@H  GxP1ed D'dC.AD0",9l D.TT$A= D@ )-5#@?A B ,t,@0_C N"ă-@<@#LA>`B B'9@3؁A&\#r+(8IA7DTU$ 8A1CYA##ʍ$ 4ll/A\*<$!w B!,@Ё4A(tw0# cOB 26D|1B/8LxR,=5~B\9 icLLA% k#@G@;PKѮ=888PKAAOEBPS/img/careporthome.jpgJFIFxxLEAD Technologies Inc. V1.01    "!#(3+#&0&,=-0569:9"+?C>8C3897 7$$77777777777777777777777777777777777777777777777777  }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyzw!1AQaq"2B #3Rbr $4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz^2 ?۸i cs1lmRjhxuL7,$+/,X|Fo/O$O)c( *huj?4Jm:c!9ϡXG-Z i'Ŀs/,om< Z#^9ea'v2Cki%̬R VVR[VD]>RáҳUTь|izuDHDX-oG(Y_b' h2ʔc)oZ5H^S02OcSٚ3N[>Q=)c(򣏟⏇I.&xb2>zʫ5vm!i7W7.CsӹiƲ}jf&dSN#Vv%  ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (\RF@y5omS):x)Lѵ]Vg4UsN<5b=W"xqmU/=G~j'we1 GoNo?kImZsMNV%CvMYRXr+Xa0G/N5Y4_:dGNRц"&_zVsEl7p{/l{z9*Mr/SQʝy] _ƺڔ}lIOg/|R@[$@~*+߉I~cXKz)Jx+Qpd 7tUf͗ӕ:|kuNXdMGz82>@W%Qi.ʏm /C@m}2xcpO#>>f  -r5[8ԞWE*FHPi:-AU$:rI=OJpNpHc׽khk-ooq 7q bePO  5u83@ @P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@s𬿹r˻=y :TK± [Dwen[h햵 OJ3j! G<' zƍ`?cXpwt:̶ڇVndwu}xv#[>xK66ɡk1'ǥA5 54feG@EÚtZ\fMa8;1W4vuIv~˹[o,M4m&K*diݘ9!@?CӾ x6s\[jq aIeaNܠ _<3k:^]9E_v-{m:d O6Iٷs 㐼@?|aM+CbIQ{umSŰ~ּK U@؊-HHfB~w$d:W(}Li!,7ˆ$K~V8NOP}j %qwo` s듓<WIm|4ڥ[ m7,|J/ x_Y/~MyL#WhLC´ w Y ` :=sLӬ6 >ؑ9/~Ք|Zm6P@d23^c3Immbߘ6%O+n7'<{P|+~? x\Ŭđ3#P6Ohxxp YZ,:yaA_AS.#kC]KrI/ <i9l/B g{X xY]F"D֥l21V}5Flp=@cᖁ"XecПx遊t}j!#ˉ2yn=q@0N<_3T+$%͹J˝gzb8yuP@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@@| h  J\JM; Z(0=({: PzP@E& ]=(=-!U=T1Ҁ ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (2.e/x}n DÂ𼓀xRFqk#-4Hq>R"ъ*#,`[N[OvO%WFiI纀XuL#’@m_F䈣s39fΊX2I 25 k9ocy%! ,32qsh޲,ndJ#0(r:,1 oM=%(d:4sFv d2‚I%Y E-ڤB۞M"2R@[i8d. B yL0ĻI1K! p x4gNFՈГ  1T73 BIR+u Vhc)|zհSwIqhpOs,P0F<G;U/cXeyr!(rArL}@kZN g!?)U<| #H`tGl҃7zmrLyN+ |v(=Epn Pz7Q@(=Epn Pz7Q@(=Epn Pz7Q@(=Epn Pz7Q@(=Epn Pz7Q@(=Epn Pz7Q@(=Epn Pz7Q@(=Epn Pz7Q@(=Epn Pz7Q@(=Epn Pz7Q@(=ECuei}YP8Ici-KX^`0Xr}?Zji6%J 9 xhl.ђewH`}N#4gr8Gƀ"IU $aI?`h9z=7nQv,^x9? |̭6B$ Oh}>-Ů#( F w  UxnEoϽ3"gV۞~qt?<TyXߣPO=cGΟz~@?*:?Ut?<TyXߣPO=cGΟz~@?*:?Ut?<TyXߣPO=cGΟz~@?*:?Ut?<TyXߣPO=cGΟz~@?*:?Ut?<TyXߣPO=cGΟz~@?*:?Ut?<TyXߣPO=cGΟz~@?*:?Ut?<TyXߣPO=cGΟz~@?*:?Ut?<TyXߣPO=cGΟz~@?*:?Ut?<TyXߣPO=cGΟz~@?*:?Ut?<TyXߣPO=cGΟz~@?*:?Ut?<TyXߣPO=cGΟz~@?*:?Ut?<TyXߣPO=cGΟz~@?*:?Uy>t?H* K:PP@9n##_$3c?[1Yُoν4|Hli:6ߝ?o΀ 7@gM~tli:6ߝ?o΀ 7@gM~tli:6ߝ?o΀ 7@gM~tli:6ߝ?o΀ 7@gM~tli:6ߝ?o΀ 7@gM~tli:6ߝ?o΀ 7@gM~tli:6ߝ?o΀ 7@gM~tli:6ߝ?o΀ 7@gM~tli:6ߝ?o΀ 7@gM~tli:6ߝ?o΀ 7@gM~tli:6ߝ?o΀ 7@gM~tli:6ߝ?o΀ 7@gM~tyYM([3_j (-C\I+N_{ Il|I?]7Fh#ml-aW !;+cw|m|7:gmkyÌ3/=hMFѿo"QՍ2gn~pr}1@|G3Wv2F EɓcN0Ҁ3/>.xz']Y\] ]""im/@~4uFD:&t@swdF` NI֣6%|X@r[# 귟t+M<ͦTGxfMUb74y|zHpi,ѓTnC#J7!FNM: ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (j (-C\I+N_{LuZ j=ބt2*H" xVӣԼ9{c@^7k|I+`rAux[]>aM[H{(݁Fn7GɷNA@:Ut Ns8#' MFX^MΡ52p63b;Tdd;@`ր<6>=N}6h g+ƚ=Un;08Ü ^0<70h.)cF [#@<xYA@fK#4cc<6>V_nus¯aDhFB:0~%xĺo]3ACi[]XZKՏW',줌P= "MFĞ9u6hi#TTS.Edx⇉tJ%24,T9zZlG ү-4[[M;νVYi(یu >\GΗ-S^&LJ,nv0t _SxwR՞ç dYgD1aYsGjo3xD%?٬<#Wy 5wĭCt[@hg26F? oǚiK0,$Ϫ_>>ut+6%lϰV pp <}Fho?iZ]0%˃ j~PFffqIO8sf/ȶt@ȧ 4x7T[wvzǝR)&;>/^Ԭ.~ZiwC^ i02wD3@_j> ?4{ho1*2æ&\10*z~l4+Mg )Q:~S:H@GVV)6s4k҅Oqs(<鉨v?aXn#ʐV.yS&;Fcms ,pp>65ORl^j3;VY@6ZNb:}> x<7mCIl潊w,l (ۻڀ/|?6­OBqOqs"Ø9VPvހ2ž&ýbιkE,xʪSgz@|Fux{]NYI6 AWc!΋*YOAӑl>4OTsᴺӥK%WV* `:7@ o<- |#e#I ȶzOf-x⿍wž?N@$ڳs$nO-Uq@Y]i 4[KI.˺))"O=hx.s{eK&'eHs(Fs}(+? ¶m>KuD$&Y_m `ki5ݦdFR9w]yh^=KRŌX1JFH>UdA+wD`o.|=F$I@?TUèJm#@9PeDd}XcϩR5j!>{f$(|ះ_~[KFV5ʊ89@P@>>b.@P@P@P@P@P@P@P@P@P@P@P@P@P@P@m4|(]Pz 0(2GO q@ь`vJs@ь`cҀoj/鏦yֻ# 8b?>Vfj|.Xh<;Euơx+>A@ =hڼp8JR3ր 8@Q[VTȠ: Pq`{Pڀ 9jF>ؠqsS G,Y^hW9gɥa #ſ?/&UoY>ioUAϿ_(X<_M[߂ }3kzOu^f[6pz0%Rrz(1*Yr߫sC ( ( ( ( ( ( B P'~'( ( ( ( ( ( ( ( ( ( ( ( ( ( ({ET%FC>O@8/5wΨO$lR6 maנt)o.cح\Cp hVDO21PAӧ"蠞Y`GWc/;Fq -7^9_R]űNOgt?RL ( ?_ 7"xq ^ $~s_ ҙ bHe~&}g?7@M}s?t}g?7@M}s?t}g?7@M}s?t}g?7@M}s?t}g?7@M}s?t}g?7@M}s?t166Wfl?O[ ( ( ( ( ( ( ( ( ( ( ( ( ( ()Ǵ_@P@( r90(h~%@JC.m?Rp( (hI"}~7`?:LE] @P@P@P@P@P@P@2>/n (ɷLgbF!Mۃ쫏@7|PM?r+yܟD'@7|PM?r+yܟD'@7|PM?r+yܟD'@7|PM?r+yܟD'@7|PM?r+yܟD'@7|PM?r+yܟD'@7|PM?r+yܟD'@7|PM?r+yܟD'@7|PM?r+yܟD'@7|PM?r+yܟD'@7|PM?r+yܟD'@7|PM?r+yܟD'@ $N(mOO@N=p* ( (߉_P5?e<_K[O3c ( (~ȡw_%z?῟~u? ҙIz ( ( ( ( ( (#s@ OOd tP@Azʀ&_>P@P@P@P@P@P@P@P@P@P@P@P@W@>?sOb ({ET%P@PϿjE%xx?ȶJg)\ǸP@P#B@Jp?늿#3z @P@P@P@P@P@P@1??-@x6T2)j7v7Wryv4ɂvO xqm/IQ-{[ݢ|؊ nBV?07GV"-T2e#өЏZ\W׆颊=Mo$Rƀi^0ѵ̹ͷeLgroQ@Wd}˲`,YIQʀZ+#DdGFI#$dFZ\ez}c\]4wX]q AҀ ( ()=|Dt#pF-b[oݍxsJ3@4I.9Tc<ZxH{#O"Ľdd84ZFӧclk8@d .r9 ۖn}%~vSvy3@iS`/Z7K :`tU=A%B\lky#eVIA%#md$h4mGPN}EdIa˹S ~W%0rp1J;Fx=(TiE3qǿTJsG@%A#ޔP@M,p,$^?:I*  ( ( ?ڀ,P@Shʀ$ ( W O褯gt?RL+ ( (] ^oqW¿z@ah ( ( ( ( ( ('~'P( ʀ&_>xúl\r0[nõv㣟$\p8@7$k^խԼW,o8$2 N{/ Joϣ5FAbMz:5m2;<(fq\ ~ .55ķd[MLQ#f-pzsšҬ'폴m,#U9=7xŶM$2wo-6r[‚C'1ĠHGL=͌et6*$?x$P6zZ54I[y_(p ($s ?3eu%z5d\jSGNVKƄ'Tu9a9<{xuBAQb$d`PW^MV{TinϷ{FU6dڀ2m{hnj5 ٮEŵvtIWW*d*p\xLxj c|tD w'`@*l>o6;zw׃R횓b4-bFל~kA^_i A TtPOůl9PO:Y-Y̖$hPVIqb|h??z[j\VwYeWO| ʸ@%+GKٵm(\Zys6>ffg@2~b@p06tZ[X,51I=n#~-9 >2׵ω7Z'Km0* .s&55sĶJ繸NKI,$fX&޾;b2uoYa˻-su2[}kMBˠE"oж2(=Q>&i/=;%ͺy72t<6v/fҾ0Pg˅#d ޱc\JCjV[yQCn.TeFր*hַ/nbԮ6m$ʶA~r Q@5?@FJ9-[W?jԒ?Ms$WYX0v Z( ͨP;J( (~%@JC.m?Rp( (iG"?G+JgJ ( ( ( ( ( ( b%[ ( me@ @E!H>h?@^^].kAz#T't; g4`Pz 6s@ @ MD&ۻnFq8@1Ҁ1oO7a.rv#,~Mx]d N ^glc>_fv4HZI;Tz zVcϰ ~rs *crqMk6 QQdLۃ7 ao\Jʼ=fIW7 dyLsj猞=M@*8@T{j屒zJс@ @EejՆ-.<]%([t8<8ԼAi?d"/\<3jy84+F3rqր3]oM &ZA`>v8<zO=h49 pcm >Ą]v#}? }&ހ J`{s@֟{ZU87rF@N;]Ö:f忔HAcp\:7p WmG@VZՍ{gep%+/Wnᑑڀ5+ (P@WOm@()Ǵ_@P@P@|+JlRW3pir{@P@{O/o?W'C+JgJ ( ( ( ( ( ( b%[ ( me@ @s>;{Vv-a(Df`6O8FA8*ӵ;K$./u-۲2~VS?k:05f?hrz>sӐrh]Zrv@[KdkUXgp~x8=^mN_5WҤdh7# d+@d"դ2"k\ۋpd7u^VH/o,[@Kgxz[)#9#kszͷۋQ+^II3rNvb`d63[6o=\Hb%Ӏ2cɠyizƻ-NLGw=FdPےIP[@D𞈣"xNtsocǂx;r:f:_vkt vM,sIG R 2h:޲2ZI2 ]s%<2V_'GDf`m~F94oxO~Ju6d[uyF܊SR3ơ3X.$ؠ7ʳ[H m?@ Ė//lxapJ JU'in63axW/aԂ'kI|!8?T:Ipmg[D=RK_-h$7/,IB":;}gIJ|F#5 Zu)2X୺P7Hœ^Nkv gXRURvTM3^406(e " ć#QEjf1y{mh32MAa,'YU_-KuQhׇ/R-$d@2FO@̶LyJY|fcs˺,%d ypNXZ( ( ( ( ( ( (n (/? -KS,g`w@ ~x?JkSF/l9x30^@ $cJ[3 1/~6;3 R ) WW84w# wz[5=;K˼kVo0n@?<9q{~#k%H+R#¶~+%H4*y=.(.bhM6V A gb6d.ݤDFUN;Yyzu M<-E F* ;08<}׆lu.ԖG<5KP`cI@EvdO;@ f~ӬfYϯ,ֳ;@o$1FḱNON<ֳ;@!P Y;@fF γO;@!W?:?Tú Rjr'mv#b`TzphKM9 r+q=m8<,0 (׽.(=@j;G@ XiRp@P鍊x>^Ã4C{u֬[Bk;Qrѷi $(bN3@kwyx<~nr7cmG2;tP`t-&(h ('j@N=p*bWLqcܑι_(#oec~#9<_K[O3c ( (~;ololG\U͝}] \ϯDy?uA@s>P\ϯDy?uA@s>P\ϯDy?uA@s>P\ϯDy?uA@s>P\ϯDy?uA@s>P\ϯDy?uA@s>P\ϯD!=wt9d tP@Ay7ͿLt}(hCdSO[/M)|s>lM_A9᳐c4xVqxZ%-p#XZL}]~v /k=57IpS +W zju.h#V7[w:F0PCrCx8#6m! u~1Wz[~٤G%gtR;0։[AHk$jBQ1o( oW׍ij <$x ; Cր65y5Zs_[ٵܳmpd Rcq mOQM?JQԮ<==זVI +F@ \%Kn<-/[IuK{id>N54rl4T[rY/߇]RK$E%%PJFJ@ց_]Bi7Cm}Kd|(y90J ?Va/bg=̗9@e?d-V(ݬƣI,0sݯLbY"J 7:SH.u˸ndԞm"I**:xoH[.Spc;heQ&!EΚM4o4^TԤZiWd`qF= ]R[=b"kI [c]ᘻ"Q\Xx*m"但{u?eho$Dbd Peyp<$X5յ>}tLMԨKymDp@ w:agmvS!2;蠈\ ڣm'5_ijkq=Jo-V"-Ye0@"5.^T{#7gmIw4GEƼh}x~V6P"B!qq | V[js]Ic%#w}ˍc9,1r@%ԺVv-!0piPH!!mRnѽBq{t,DYٲew ! jږى>}s8Qi|Uک݀n>x|XYjKU̚$".R+,ۥsAK/p| &{=BI O)e8UU^Ϡt _T 6Z Y;FylRs&恸bF-^Nե NAe>|d?@iok=G}P[QU4gW`'Od`QP@ T1@( zP@=%ꅹ rCրL 6 "F9ҧP˴(8b3cl%W69d9W FFC)#r3f+9n.QѶHcZm\*@$t9ϭ`€ӥ j<R_b# @vz@[M7K$Ԇ  4@;@(>w“ m`}(xx9Z-Fy㍈[07Lҭ4S n{4;` , xtPÌPVC"J !ܬC GPVYKeu.];{nMӭl-"[Dę'j(ŒNh9ϭ9'hyRp@*U[@j01 Pm7Tw @ m47VA"M $BpG"& ('j@N=p* ( (߉_P5?e<_K[O3c ( (~ȣy_%z??θ_S= ~W|P@P@P@P@P@P@P?(P@^Ǎso@/JZ(SKmzx'h&OUb `ϥr_}_X fq-B# %o)I u װ]:W-4}|[s#:t++I}ؒv4y/ g@;h"e@\Kn]|7W` 6Qi:ֱzGFOK\,Z^%ҵέ&Pb[P, 'qPڔj:iT-2eAl#66am\Ήoas$Ln$K2PƜc]>km"k-ƲX?:J oEe(6?D)gy}3$ZϘ"Tv,6Imv mJ56֬BKEj'`b\Ewy`3w-E(irӱrC˓?͸`fi\sԴe>ͦέ w|4ZBp0LHh|16uDMJ .+\mTAٽIJXi^A @ 3UR0A% Ʃ![^%bho1En_7EhEzZZ];HO N7yY< MNRjݶJmdj<$QlNXikj|ڡ[$x IɌ(bךj773kJYb.eUUrqvg/YI۽J7p V=?S),M0ڗxl<ݍqՕjH{*/i#6%$C(c 7ú+jI&df-s;o7`m\T{[%q][]ԥV1 ̠ª#n$dP$֩elG[aītwgx@ ݃O56Z{oC=yDĒe ۉRV *BVyl3n<ۂM* ]Q@ݜMqzjZl.4 Ů-[L!B`y,(VK#q^jW0薺s-Blt巨3ų>Ryg;Qxns>B ć4i1е4ϸ ,\8# Xd]$ВUT&ν)2N& hÕA,nޛɨ ƅmsi4o`Crꉈ@9kQkzS$s|jX+}O%mu>k르R6Sx$6ˉU a$DRE2[ˍ_8mA@ʱ<`"0xjQYzl?owYme2 #k *գmgHŃ2˰3K\0p_SӬ%ȹhbEC[tgdX01\-楬hzmZcwPbyq'.%0*Rd-8f&&( `}zh׽-PtOb ({ET%P@PϿjE%xx?ȶJg)\ǸP|v@P!F[@Jp?qW?¿z@ah ( ( ( ( ( ('~'P( ʀ&_>Py)u(ԻP99=L(h: u=ᘵ_i nGa@O`@i༵Heeu# :(]3Ҁ(MHA l߳ch[{g"0*FA z<3 %b&a(jk{HdTY0ܧiB(FAeaody)VVf,'@WTt]STgL;w#?Z];UxZNW[JldylPJtZ־LrLUu*zQ@^AB$f` e#SC*Cw biI-庩ɍqq@ s(.W >gh:w5 i,e%VJ 4XDdvݱasv#C$KɣvMszjT1f r]0 ^Y`x4,2}GxF ~j.юq2嵠oMVXYjjXy#2E`R߻ >o]S77_rˈ 5 nFhM3PMZkmf4X6=#oo45& E% yC\X;*dI`K;I>א3rH%8u(-JzH`O3_lMyqF1G {-ZƱ.z\9H Ѳ$n!NJloFRnadžnh'Nƺg/GUp!lNzuݾ-:x#Zn[j?o2_[(~bq2K `&5&F%g:ZZԋϛtn#|Gz,U7JqS1DO)(cW?8 jZt>k#<7W3em&Tιhf2>Y24f[+G:y[4rH$p (y\ I,E]Iu{RI׬aDDBWrQm+h7|/"Y.-4e2R dn0@:Ayeh尺hT;kW͸K `d1+*x0Ѷ ~J|7H 9 F4 -DAqŬl> l!Ig,@:,;;x% ܬײHʋ PcVF wsGp7S]if/}bRu]0u7:Y[yRf_338g$L+'NPA~#w7&Ȧ3J M.cV- |SOƨ4َVɎKgV%fDL|A,iY{ue\)D|XPHA@_ӂ:DmEaXmHf6[]9噥<.!NF5.4wqYӷh p m56ibdmX}` #',K zZntN=˩I;6EhR6Wu֞(Py"F1iA7#%O 6WӴm=VE{Qiu)av%O4݆;؂A4뻝jm UԵ k? rФM* @$@u/taB^?b.OkS^(jЈmxf2-J珗g.! ( @ ?ڀ,P@S$[EP{}B/WTM7l"kyEMȑ*e@]x^? ՞!UQ)*I6P@|+JlRW3pir{@P@{_. %J~PueD]`*mq8`qךTZuPtOb ({ETxQu 2[ MZG2:d,L{f .7@: xv6v0[YDC˂Aw#"5 (߉_P5?e<_K[O3c ( (ȡs_G^ O?9L*>\( ( ( ( ( ( (~E5 TP@Ay7ͿLt}(h{Ʒ3x/<3CN>R#$F9z~RiRWnKpKs"\>d<;6x,zׄ.-Qm/#c;NӇʌJ oͭ;ۤ g%d{w-Mtq)aJҿn#?oRd ݩygΡ @]7@-Y\֯[Ң[v<3bRIp$28 `|;r}i|A&b3?*~QݕGս]ŵJ_5c *81FFE ːBH<jZ4}uf+\JGvw m0=zty5Ɔ Ɛn,DĒ ۉR0@5 U~kc,VZ6 $C %RI9Ƹ fҚLXkɕerDcŭEkkxDϼ/;NZr&Ѝ֥eח(,rF*H7ƬP6g5R9W^cY DL0䫑nۀWi 5R2DЖIYٲ27 rL`xv°\z놕akdR {:?MZ3}-1fЋC:ȫv>,Kw׼#=@Vfh8` ,@=rW#+moojV~(Gn6N;My7t:D$r޲KF6(9nsy |ڍ}+u=ޥ,\eiy0%S;H.oukgRws*̋qyYeģ`͸+=FS3s?7\"cbaQ @\j*n_L+tcK*򲄕W9FkIx=<$I#1%{]#Ȍ: ZS?Cro[-tc(;S92cYؿ&0 .X- mIIso"Gn-@p8pV%uֲU汬MTu70qxHpBE}8ζu[WUi&]^[YnaPJF+໵.uI-vEm VpIX%[ Z_S8[tk*1/!Xޥ&04zzˁMX~,+QX:~}u^{f$lnpLNQSє@sfwׅRdkHʆI6뼒 Ö̪f, ɀdB*]y&6h+6 P@/\~%ҭ-n,qw!1 AkK{;*$D)RNn}ŧ8i^W ր (~%@JC.m?Rp( (jC"~z/?_!3l|S ( ( ( ( ( (~E5 TP@Ay7ͿLt}(h+&ɎxҀ+EiF-WH"ᄇldsrSDq5(y#A $x`8cpdP࿁!̍&`2G̎NG*|`  t 4ހzPk-̑#2@ @Iڀ,3WnRդM"Xٹ* q7=h<4i:?\!C6ӎ`}phK{.2C2J #+ XqA4:xU3F䪶pH3_ZpH V \4GXcQI<? p24Ҁ"A88(+Mpn`7rјM;"Į) c%W=l€x":t(J{PtJ+ {{cqp;X 2(,ǩ9@ `rqǭWf=1|;;}YhcP@9@80( ?ڀ,P@Shʀ8ψBAG&-.c>.ı6mry`d72n7E7d¬&10QOLM0PI-܏}ˆJ9ޮ>] ~.(8#Ԗύ†\{'@o=Ϸ}dty?<}O>{'@o=Ϸ}dty?<}O>{'@o=Ϸ};b9@f (/? -( tkņcis:%eċp@Z YBo1tȯ.eoe"XEJ$ )vOeuysWZts;_D$BfiU@/;Nl%VڬpD_]|*fIb{/ j73m[F|TM nnTmqY8.D׬`HR!"Y#gnP$7NLikvFUX`/6%g6mm XfZjr7=\īn;p@֣jOnA4wi$b2lT)*fk}ӸD` BX]ZuF}B)c+UTn*3tDq%/r$cylNsjԠ J@Ҁ ( ( ( ( ( ('j@N=p*du-.f5Q h-iAfR4[]0bH7l2H3#OPx"OPx"OP4T Pր-P@x6T2 (( ?Q@`z 0=zP;Pl_PzPfH[9 -of뎾[.zq{x-a hU 8M@85 GͶ| #9*qr FNhh ( ( ( ( ( (+6 P@/c2:֘u[ymZEyR+lxz+x4hE13I+5/;;3FU*Y6 P?'(0į(I^/~-ҙW1P@_Q#W78_S= z~50-P@P@P@P@P@P@ȿj (/? -P@P@P@P@@=E-9 ( ( ( ( ( ( ('j@ZFq@5)5k%krcC2eoI$ oF`͢KH$BiJ*D"W*7; (~%@JC.m?Rp( (jA"~?z/῟~q ҙu0P@P@P@P@P@P@PW?"q( ʀ&_>vDRxCM58GrUbrA.;ym*$HFK8d~"8n!5;:Y;%xR0 d m"2ܮo>C<6?|ݜ|Cw.7k{)SuLxD`%\5#t/b2܁:~G $H,w*n s:=L('bM#t,$HXtm1\i\K%dub(郌/]ZA%>dj1l|1J0 PS& w .gr_LDL~P7 mާ?.)|q,t#O-$j:uƨl͸GӗPYfk>oȤ0!x#ӎq_E-嬿eICȎU>-^*Eo;jKsP[_]DYvk,2~R t_s,KG|23-pnPImNq@!׉uzOvhwU r32rI0we@XU景ixcR &_0 `yh#g--~y鰤!r%,N:Aa^DWmo.ờF٬Yѭ#,fR1_Pܚ}Z<1>0pd}'$\)Qp~)fO=βZًhg#9_1@!@@s6@+jZ>0Y}{ȉdO)?XTxݽ6F|g{Vo?4+b56Hϛ9F>o5=NMfM"X-g G%ʘ_ݟ9:-O3ax$(n6,>@*V|-@ u}Yg6kdUy`v$S.@MW&U*I4$:$A؝KvXz@UjsZrL"[ݭX,wp _V=sT؛JQ$#$r2IUZLģn2@+Z5XM֗%7m71;@#  ぶiWǛRɧ\[+,FG;gݸW 0zaՖ4̰7џ3y7[W\嶴HOX٥B0\aFyZe7ޛl7rl C:뒠+J,'ٮb1u=䌕Tcm]|HQ:W:^ SK 4= ;a !p76~\ ='Zum%)m:DJFH*['s2[in+ki~{hnц=?&"嘐Md {MCWF.bVΊ5#X n7@ ]KnZ_!h'H~:qGgK˯ ?j' Ug9ߋ|c"\c 3g: (+6 P@4\Tx4=JDڔ"Ml&8*0Z<2X=,'=X (~%@JC.m?Rp( (jA"~?z/῟~q ҙu0P@P@P@P@P@P@PW?"q( ʀ&_>Pl2ǒ;PYЬ?gViylBʐ#80(E~T<0Rwݴm~ӊ6tnĐ22ۛyXg~;%j𕸛 rʻ.UIڛ`n (A&RXo-,z0d jilT t_x77R08L4b4 $(:87qt`kq$Iq Đ|r(pqOP(vڅs,SH0w?4WUiH` O'^9g'tI'UFO;qoe DZLC*g*(Ƕh:ɢ 2,;;2aI$xcLRhEAq,2/s͓6 cKl4E!_Qnԃ齹sA@|1y͏1‰PI6xګU%a]tSͺ{wwI#ټ+~f7?4;é<hGdBd(yo8c3@WӯV^ك\N.wA F]Hd;/yRs@!<%ыk6ټ٣ P2JX]L]YE$q9ʉ&wmb:r Pd𖈶P iJ=Č8lDǴ|`Z;8SDc**1]z gLkG0q/}_ݿgnw|yΙ~30\4+cF`0UX)urR*mυ4B~,ojW0#0U@vgj?PGD_kDn -6278i8;W<@Imi mc ,qh*^Ppx?DX1G'v[+g;Kd@ _ hٜ[F287|aW`c}ۉ?-Ëo~_矦?udCp]L'uh0f694K^ K˟W2on͓0(x'C-Z!M<`7~1GtmRmP6]e8$pG"+4odnG!!cYdHePi4Д1 g%#V$F ȼp0~ӮK Er*FFAƀ+'4H2И.-kNn%sE[M}Inc@* fY  ( ͨP;Lڀ Z( (߉_P5?e<_K[O3c ( (ھȧw_^ oq_?¿zzP@P@P@P@P@P@'|5 P@Ay7ͿLt}(h w2Z[}"g Tx3@>'ԒY%uM:s 0IY | WmRM6,č9$[ b˝ 8r-sQky[q<;5@œwÀWj2 o 6,:N+J,+]U>^>`Ey58nm5DvGMl6B2ެWQ|H-R.-O||pvX IS-Zյ_7w :<ױov{bI P97noq'crɥǫyNYtVɄ9ImaWhKijh tjuԮؒ%0y&b' (TS-Rk!` e佑 <x jj:7Sڧnd 3Zsa [FX;nICĩS) r T ]TE7 &Ug*K";WG vQkz]QY:k-GIgBp2rT^iVP[fTiOGaL`ø*6(%Ե ,."3-\*wS5^;xlok(iT,8 [xYx^Y7| bJmbC:`,ۅ"@&ќgր-Tb b zt (+6 P@(,<?Kz 6A@(=Ghm>x=SE%xx?ȶJg%\ǸP@P| N_@lx_S=!8|Pz 6A@(=Ghm Pz 6A@(=Ghm Pz 6A@(=Ghm PXր1hj( ʀ&_>P{x.(U(2`#9tmhnY;NW;],#ce 4FTkn7ei& #1u* c鷗t$H,`89]%+(0pcn9ol[p˯ ׾JaXnB0# F0  ۱[b:3J60e R}L4{MԎ .i\u,K ?1x_Kud"hQZW(ة*UȘ p8yu7&IViHduU smRi 1$Oicq\I'-_ X#Ly9 @EZ6\p?2rY'4㰗OK0-gN<3 s{iMq3rl@ X)<;RMwyۼ~\zq@?lMN[`ma&U ޲ KoPĒw穠6mMo3We8q v3.#b ZIw,J y͓wѴǞ/2y<͹&C$}?Oy D ڃ@R:n`;q@i"Yv .d\2ےUp( /:F%ZErcMqw4ܢ.h楡6Hyr\I]!IP7o?&<"bQ1BANѐx'4Lv{E1,xÂq&o`m:%+nGnoY<ϯ'*ZgK[obh̟C9o{Gʿ\ov ( ( ( ( ?ڀ,P@Ek?K@P@(zI^/~-ҙW1P@_S#_'_?¿zJ}]ˎ ( ( ( ( ( (h35P@^Ǎso@/JZ(F4C@g q8Ҁ J03s@@ @@@t@ P`zPfv1 PThpA@@=@4}hz ( ( ( ( (+6 P@ZǤ?@lb@k(^M%g7H @K3 PIp%Hyk m%pĆ#l%w!X)#uֱ`,_2&JH*U# h꜌E%xx?ȶJg%\ǸP@P|!N_@|~s ҙ)w.: ( ( ( ( ( (~'P@Ay7ͿLt}(htiQjz7R,CfC߿M]o11U$ Hh|V6Z[=ޘ.< n]yd`+;{7pyXi$2ȂfO^X`.:Rb!{y3m8Ve9WFXx C7zrmߵMkalZKY os6@uk8^({QX|'qW嶂@*gkk?ٮo{Pyl"c&;{Z%-S;` m`fn~Pb/R6k{$is`ƓSlmG"1mpqq@' ^mIJ—Wy#$: 72wLjG$7[us(1Y0'$`㑐dmzΜ׀[k5Ȉy3;ۼ_ ZO[N!ˎbH$, ӼS6!4h"NfRZjŷ'>k9;0M Rl10A,-GK8lcnJa1\@:0OikY0b( #˓ParBǐj0g5# +\ \X A.T1#a|K?ؾx`[/ݥn  m/~r^$B2ƫ$g Q{>ҸŠOG %C^}*#ȓyFeRU`FḨ T֒AjAy4yCi!XG36!pJR zt>mUqo60jn`NW o&ޙslȚ+ynC*6@ !gyX˨;"xbG >8m[ [H|3 Wfb \>ҧ5ń2 A k(A+2N򍑌u9/DzXL|efȁlm_qC!2'rqeEgG}t6~eWl@GPy%dNerx~wi4O&ue$Al# x͒+-o`EMۗEi v"QxB0[Śxgh.*YٱQQH1a){v766fYfT*Iecy3[Im6>q][# ·u^L Ԯf ّs ( 1w~hGϔPAmKhmd MTsIˌ>d|HWƐ\41i"{hdDY~sHcv, hSV<'vgg2WEl@]?X =!p*!wͅ?q7^(I7xZ|=Ÿ |iX-P9v9@ |Au_xr+{hO&1 @9_J<3e=VRssqL^t(VF@p hLEr (|tĐvߺ?W3pir{@P@{7D'u]9 $~uV?¿6zr1]!C˺@u??.~]:<tyw_!C˺@u??.~]:<tyw_!C˺@u??.~]:<tyw_!e|>l?nk@( .v,6c+a}hS}H *o5;]@ǟ!>O>G^19Z:GjGN 1ydP ;6g34Z='RALJ ,Uqs:֞ [-UP݅8M |I<0jxƠ\9mcĹR9f[$gdW 2/XG/5|lgh1<9%rTz0ƲT *!>O>G^19(55Bl/de jۀӱgLy$IX/.<%M6o c`ʍ19|\`q1u-#Slĸ&miv np'E_[Oc^ I)`ZH,P.&| 6@4:j]oA*/ti*6E?w$I]KK]u60lǙ'~=z|fw9bNN|߻1Yk[UtG t2hé.^2 CNM4G+^;kxYApHʼn @Z;7AԣK.#?.9C@v8n9@1O _~%5biYౙ( ! pDLI@(@j0k?𒾧a:X6nٗwڹl9FI˦O zTUH >c8l7<l_u{Q_.El:\K^3 GV6:\~w%!r1/'va׀ ǣGAm&&1aȑ`Gi_j>qaYy{ |7>>ܭ-N_3i*>8Q[>O}*1p}̡?㑴M;ֺ}=.mfE>v7ay~ԵkԿH P;o9&і/dx&Opb _ǜ|gRȸР=<|n>oLm{?ľ{cB`2[*N$'ib3}PKտ:f6*%Fݤ䜐zg"ťi=1iiMosle i7+ )8 HݠZF7#i1g͉:nk?Y٧x$i]'r6e$Mvnw-NPWwxﳶx2}zvqr-cۉRuQN778P[gmFDgcx @ 9@]GOխIBM'8 w| M/XTI[Oi=UżKCJ)][?{id[>Mj8C%q3,<{I! x[M&%ypp@>YH @ռ_ymm-ǩ} _c:n1ib2i_]mz2Vf9`61m#qÌg{O6:"KC7Qn8*TrW[Hm6j'x7|R_a֮]>=: $X x4PvS(P{Cou,piʎw 3 I#T2FZlX]N$p[ dPtݟqkZXnsGȱ$q "V|ӕK]ļj_a1˚ܒ㩠 [SAy!17p{Wsʀn\SխLOP&ݑ-2>UHH`+_ hf2'&pȼxv6`Z| zq@ڧ9Q^(h03s@Ҁ p( TFt(h.TP{r(p1q@@#ۚ\JMgZ0Q@s6s-!U#A8P@WOm@("Hʀ% ( o=S褯gt?RL䫘 ( τ(]ׯ8?_=>P@P@P@P@P@P@P@5 P@Ay7ͿLt}(h Z {auf'ύ@dMFlpèh<]ȓ[̶RVZzĆs ǖ1U4.Vo3"1(Y@̟M-K"HVT<ȧ?IΗ[Eq _\YUu PB'<(^kqkE&kR4uڡ@n,w:w+돴\ȑ#DPYIf'̓·qa5Q%QC "(dY9PT$cY15CRۈw@|VUNj&X;K,wzKpUDr_.ARFXEɯě,j"8;w) 9ћ ;K<ZAu4 q\2_,$Muᛆ+E ,㍅*C\qeρ/&Cm[ܸ![ ͌8hRj]: Zܙ }*~P@P@P@P@P@P@P@5 P@Ay7ͿLt}(hҀ @U=@8ҀҀv@m\>m\h랔(03 P hW1hh ( ( ( ( ( ( ('j@zCT-P@PE%xx?ȶJg%\ǸP@P| B_@|~q_ w0: ( ( ( ( ( ( ?X ( me@ @P@P@P@P@P@P@P@P@P@P@P@PtOb (+_Z( (&C?JC.m?Jp( (lA"~z/?_㊿# >`uP@P@P@P@P@P@\?Z@Pq\PGҀ ( ( ( ( ( ( ( ( ( ( ( ( ͨPVPP@P@;M/\?"?)sP@P@E :_~G+g/J>`Z( ( ( ( ( ( (b (/? -P@P@P@P@P@P@P@P@P@P@P@P@?q?P( h (>w%T_)+]ԸES9*= (=_u࿄C*|WH_>|Pfs^m#{'nxr)6ͨa**Tl`_%k1ꬃ1?fS//G֨7e>?^_&Qoca 7Ÿy>G_, c%h?Ͽ?|)ATe>?^_&Qocc۸Gyaj!nb@Mbi6cW%уoXlD$ty6Ms:|=2-xn@#.Y=OOcq4ZP_r, _%j>G }11?fS//G֨7e>?^_&Qoca 7Ÿy>G_, c%h?Ͽ?|)ATe>^O&Qo`f?Nc[=֝v@Ҹ`#mNjFgVMBm_ٱ&1ʶ@?q( ʀ&_>P@P@P@P@P@P@P@P@P@P@P@P@WOm@("Hʀ%1<[sxG[ʹhuҀ)豶WI[8nn.dV!݋`ӌc tE<} oϿXIM#>_%ol9u?SA\Gz ,8Yq(QdǠjV]l8`*ic"͞CRk3ﴏ/iߴeǮ@ĉjk1#ϊ_g;f4߯Wkn~AǠaǠAE =@z ,NJtv/ VWfVXJY~GNQ%/h}9@ 3@>Io3ڛ>_%gc LJg)+C=@z ,8Yq(Qdǵ+.{?G[A z;ld2-*N0r (~ Pz 6A@(=ZHEp @ P8 @(=Ghm cPE?Q@y Q0=hWA@ (=Ghm P@ $\PshP@ :(b(Pdnpg({<Py}u?@€ ׿ 7^8?npg({<Py}u?@€ ׿ 7^8?npg({<Py}u?@€ ׿ 7^8?npg({<Py}u?@€ ׿ 7^8?npg({<Py}u?@€ ׿ 7^8?npg({<Py}u?@€ ׿ p7x!P+c{`hj( h ( (:Vi d(YV %A2:?ڇc[%AUTl 9blƗ67Za(fXI)e* #ٴtrv``NwjqY-oopm;J|W/.7,خJO-P@+|%_YcX]Ppx$c8h53]'FӮ6}tS ` A83.k;$i2(N1LU$G7\Z5 # HF쯈$ʢHŚcK= S<6=i$@"VL&+y|2 MC:k,ᅄ̒y'cm+F+nB:;XH7ɤ_6f.UbRA>s)1H,SEյ{jV:,,1̲Y}̎BD`0UTuP2B鎜*,{8$iv7\=ݬ/8CmC$9p-@5o^~O}:(|CFe&f iPS`Ao( x?wlOyR7i4uϱp| so]^[8`&E.+@  ˹W"xK3J\ʆK96THc!C)5Gk%spT1!̀ 4GpṔ.""ɍ RHk`gjAuP}@vi., `b>TT V~PUץct1EцG<[Bۿ@'inR❕,rԼtp4|$$c":WTn)Hi6v} +1,01 x8ՕhV PH΃jFv&ϕI m`+3ӭ5I<0M "BLWaab6)Fhh4FPh.dRtܤ#p uf6"b@$A AP(5  ( ( ( ( ( ( ( ( ( ( ( ( ( ( h ( uzPBo#pMWv;#żާͬjyy68V=vޮcP .\ g.k]Q-nRQgh @،@f5,5 ; 4S*Yii:6Ha8ݒ[l0M[dRjb GcM63qӬ"v@,r$1`NE-P@׌<2|Sc~ʪ&̂=o,#qnÎڧ5/T0"H'B{M/ͷ\^<+yԭ/,1*M ~af,a@Nŀ4&Ro"([@aR2~Vw%#d$oӿZFHL%[."BTyĐB!CeS,b:5)5>4RG#Lj=_;;ׅoS%Ʃ-yDdRsf4m;Rꈶ輅';AsqP(69}8@,kֺ/̥vOrܑg~ -)zņ1M| 6T$PK૨u="PеXkGhU%q3+rztn PVH?63ެԂ9Q x٢"'[b\Ru~2 }[6ik #^}9cH  ǯjrjVʂ\A2l Sh{DE xRf,Bp98X J(&o-P@P@P@P@P@P@P@P@P@P@P@P@P@P@zCT-P@P@ͭi\ -@TԜ +ȼGOOGɧD$[1-{P;Acq|;R1vw@.oŪKX%Ͳ+ g3C@e""fm%]j(g$.rG8)i~&](w q-WS({xMe/''OJ|Ag'swpȲCd(]á,YAm',l@(h25X iBi"8 m;:(cr'dR>havnp~byH8 <^ 1z 6K@\ϴn:f2>m0loWھfFHE`T]'š>3Yd%P) dqր5h,3#P'-:J l0*GI@9cZżQ]r#fBI#uV"nx˒qƣV_a]3,`v#p%0 h7:tw1S\QJB~lql(^9$PxsVԤ}9S( w#d ?,S+ RQ}8,GF+Ԯt=;NڠӖ#*;lcta(13^Vwh'ڥ؋bD2ߺT'0>PF`mxZĺ+5Vw#DW!qV w=RX[SFuPa@KIQ# z6>hj[}Im9^##` =2Hmh\PmqhZ( ( ( ( ( ( ( ( ( ( ( ( ( ( (+_Z( (Ҁ A@U=(*9Ps'=( `z Z( J0=( 9 ~T`zP`g8m}hڹP0@NP@ @ @&(6A=p3@.7Z ( ( ( ( ( ( ( ( ( ( ( ( ( (?PK/wVPKAAOEBPS/img/careportimp2.jpgJFIF``LEAD Technologies Inc. V1.01    "!#(3+#&0&,=-0569:9"+?C>8C3897 7$$77777777777777777777777777777777777777777777777777  }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyzw!1AQaq"2B #3Rbr $4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyzA ?I_~? t vy|)A;C }x-rM&m0Ms(GrjJd%Լ``w/fs;xǗOŬ¾*ݟn0- yPN€6!׵yޕ. [<70;K*1f)$n!@:Jdc?ھݳoyϗߚ4?,c':C^OVjuw '@?7σn|3.|v Z5t}N{SuExA'2lt/4`ٻJBĠeA @Iqaژ%vlI]K*|#Iqaژ%vlI]K*|?dc?ھݳoyϗߚ _7=l&)!{` C".+ú%03r/%i41ΨRm;X>`A>` !h%$ζhTbGdXlKG^ԴӠ^ ѷ7fXL@H߼gx x#89  '@?7σn|3.|vP]4^ uL,31R.C@$CyflbHFr7sP\71ҥkgieX1Cѵ$(u)|ykxFw&t;`iAr_W ౼[{q Ēv q(^4+JVڼ7on!\.% t$uKM:0]sve$w3KG^ԴӠ^ ѷ7fXL@H߼gx x#89  v/u&wbM[abo44V,B` '@?7σn|3.|vq|emuc.B-/{evk$X"e/bn8'ڼ?{~˝;hH|9%[-m pH4E˸F_ ʼnq|4-LjڄVFv6ѬĚw0\#~Jo@χ$,1,PF(]9Ƥ{jom6̲E{ ].iAc81Wٽ֧22t!|x0N9_5!䖗[-oP3Y"g.-|3'q}/HYm~/b o\e l/Œ. >İkC["xƖȰyAt2cwds(`Y"]gSP$3iq%,7 0@4%:sʳZ"f;wU`.9m-/LZޡkhgkE,]Z2f,O @wlK-YW'd Į]N6jP?#蚏- kVϒUI3w[V9y;{R}QA5&RlD"V3W'<;px-enn_^77_k<3A+xQF8lH']FLsi#1Tc $uO//mU'UiUC1ۼp !pAn%:sʳZ"f;wU`.9mp 9Qkۡx|֒"c mA3nIize [C;\5, fr2ї1b~n7`` ? j3Xni^Ago2HѤj&b|+؂5N}&^6I& ]0p Xoė*qk48DU WNgF?_lߓn<>7^?;~jd:>=" m |QB ^ƶ:lz0KrUݥUV]P2i  qF$L^~;Dvܤ%K>TF$L^~;Dvܤ%K>TtHϟ_c|?ٷ^?;~j(.R/iz]nk© Q Cux!{}1Z$Sl#|҇]Fp9(:Ů5MZʐ̾rcr6uR0SRŗd;1ZǦ -ܰȱ7xA+!0DMsh]xRP"hkNiX7P7 nttoṁYV9s0upmlI#q ]xk_Z!3)PF܃;@o^cwKçx ʱc}kg IPRijtSZխlo+%l<+>qſ,%tQ=68YnE| X "oBZv!EZucq*̒r FYwC]iͭ;o%a|6G v/u&wbM[abo44V,B`(^7zT|:|7l,9:~W6py[Q WFk2*yr7F$ڻ[;A$n!@5UԣL֩g5s,һFЮ [l~^r8{{ĐlZ`&ka)sy9-FX}z`, M=r=xZscpyC1;p*J` $ ׏/? ΟY}:Un?ݾ`[򠝡jPLQg{}F+Xe&AO%b&~P x\^*$^`Nu>\4X%ڔ>,%tQ=68YnE| X "o'nyntZϼ+Ҩ{p-}` (b{WR5ss`!_h’F^7zT|:|7l,9:~W6p.E5-tBO·vm(#nAقC71ҥkgieX1Cѵ$(?x\5M:)DֶVtE76zΟ8bĞ!k>Jg qT0 "af:p3Q@jSK SKTaa2?|RSp'T?`_G|4@P@sk)#.c]^%`Tv].D[m܀rNN@#Z]^{SkRdo61AS"JHKGFWy5` cE#w  j?h/mZ_>K(]V$޹lXp;pa-/LZޡkhgkE,]Z2f,O "plkhh}w۷޻l$ÒZ^lB dDYeXBEdgk`]pO3b76\rK oPS["bӘajIݑ WfkZ$W[솔F18~Z?^ڽMjs,^!o KPq7chRIize [C;\5, fr2ї1b~n7`` w duNB+x0P;\(s._è^<=ŬN*cxV B>evk$X"e/bn8{/4Rݐuery@J}Ei~s-b}F.nᵛVP*v(lnO^ s冴 @ Un!p^{GOr&*[msJs{}QE{mjYB&w?.`V ;3_9׵8l|E`\~Q'c[p)#.c]^%`Tv].D[m܀rNN@:JÛމv~z=<ğwzX`$͸5}Nwod^#,5p A ۀ$J>t|dӐbrŁ]1X+s.𽴷AwuO`2q'ާxV!X)`In.|9%lj`ֆD)-`1Be5$PiP$jSʚhl\|+;Ad?Eͬjwmi4O10JUF V -5WV.kt0*;."-6ƊF@9'' /s{$׷Ba%4D pہf(umcS7_kkIWyWz0L*\ 9m4iwؿ:G6  AA?tw$ WV.kt0*;."-6ƊF@9'' ?D~o^Z|P2Iŏ˽r%Uw>MGKe $X-UX+s˼>ƠΓCtneUs++sSMGKe $X-UX+sϺZh^uWAI݁sG\ݎym/Tziux[Qvoٶ4R7r99(.M/j&nxU 0-/C; 4> gEr۠8A9ljP@P@71ҥkgieX1Cѵ$({jQj ZMi[gī2J6*wevszYe1MR !F$f_4ndkUռo/_hjNq 1#2s#\گnHelt/4`ٻJBĠeA @מ5^]6BWdRFrU,BAj?zW?9 ( ( ( ( ( ( ( ( ( ( ( ( ( ( }QE{mjYB&w?.`V ;#J>t|dӐbrŁ]1X+suൺν`-#..?ۀ uN?_~$m1yqurÒ\x hkzO(#.[ cRNpEXEZ}=[W 9]! 4> gEr۠8A9ljP@P@P@P@P@P@P@P@P@P@P@P@P@P@P7 nttoṁYV9s0upmlI#q ^Zv!EZucq*̒r FYwޭYxGLhTwsdx#v@5o=:cFC H̾h6hYyyG[6 =t%*nҪЫ.(o4vP}cחMЕ`Y,`j%Kp:O_>{ig{NhB ( ( ( ( ( ( ( ( ( ( ( ( ( (1D~o^Z|P2Iŏ˽r%Uw>&;.4)y؜`Wp yeV ;)x-nsjq+ $nˋO<ku{S_$[vG\]rv9\%Zޡ4E 1ԓ#@'D%־tkl?),NWvrxak/Y;Aj\6p[$( P@P@P@P@P@P@P@P@P@P@P@P@P@P@j*]>>ƶxn`vUc\?+HBc]C2]GIccXdX< "&@ xǗOŬ¾*ݟn0- yPN€6.E5-tBO·vm(#nAقCמ5^]6BWdRFrU,BAjoOxxWӥP[O* Py@׈守BIPq޳8݂-m;0Hc>o7X<D8ˆTT4i}񽜍a#Fs!A.@<ߐ.fLRMQm7dbqbctڼJOOc3WF7 rT4覵ëZ[.!VK$yW;:|hK(|Y}K3zlp ybDw?(׈(5B-F-U%u}Tj;;0Oi4ȵ$ ~!{swF! W +:@׈(5B-F-U%u}Tj;;)k$gȺ5[wH߻lJ2 gmo7X<D8ˆTTv]GSL[H-Q%l;1YM^x@ ?.ԡe.Vw,2,MJňL}~5`O[f*M Io5g^x=yt[ ^ uf IƮQ T iX7u-J; CQ:l񱸕`fI]_v9FڅN, w!.MfR7r[B>Y@,^xTjUѴ!/̮ \%"MQI6IP K妩iMj'Vc\iX7P7 nttoṁYV9s0upmlI#q NķT ~eu U))o IvvHBj6GX4mSOkYYv\޷Bp!.MfR7r[B>Y@$zzu.Q".bwuU$*I_~? t vy|)A;C ?.ԡe.Vw,2,MJňL}&-]mmc{Ń˹TH~|iI%JK(|Y}K3zlp ybDw?(oOxxWӥP[O* P71ҥkgieX1Cѵ$( nttoṁYV9s0upmlI#q ]xk_Z!3)PF܃;@o^cwKçx ʱc}kg IPRijtSZխlo+%l<+>qſ&*[msJs{؟EZ}=[W 9]! )#.c]^%`Tv].D[m܀rNN@:J<o{O>&*[msJs{5N}&^6I& ]0p \EZ}=[W 9]! #ke ;'QIĮeZ6*@:\j>Pi|,uXd;zJc}^ [ڜn>I"۰.b?(-N>;7M{t/ϖPDB |W  mO{i%kM>v2\iS9bʬwgl3zgE&c1hتcirp?}4q!Oc*V9\x^T{wtK'-{X$[eLAbrC=N@3RG]^=Z4Kɭ\)䜜hOKg} -D~S+XS uN?_~$m1yqua|'S& i(@!>@C6 '&;.4)y؜`Wp yeV ; \jvn g{5)M4{6HI].> M{ioD;?=n epONBR fNku{S_$[vG\]rv9u&}Bե䲅aL,~]*wexTT}cPMAIT2*Q99&}Bե䲅aL,~]*wgx-nsjq+ $nˋO< RG]^=Z4Kɭ\)䜜t7 {( yÉ>;± KH%pk85мG>XkIB 1\6@ I?}4q!Oc*V9\x^T{wtKPi|,uXd;zJc}{ioD;?=n epONBR f\rK oPS["bӘajIݑ2Y% .Pi|,uXd;zJc}#蚏- kVϒUI3w[V9y;{R}QA5&RlD"V3W'<;p#蚏- kVϒUI3w[V9uൺν`-#..?ۀ$_ Iu{h/&Cr"߳lhnrrP@7^<7:~-gT=vn0Sʂv]C2]GIccXdX< "&@4.EGaxj4]5Ym67 +ڧ(Pey7e/{htƍ5Kkh'{w8A|ѹmW7o$PNZv!EZucq*̒r FYwjPLQg{}F+Xe&AO%b&~P Mk]63fq3ݻ6[Jېv`h]H|0}Y}ģ,>н0x &-]mmc{Ń˹TH~|iI%J{xǗOŬ¾*ݟn0- yPN€K(|Y}K3zlp ybDw?(y@??3wg>'~q#{1#Rŗd;1ZǦ -ܰȱ7xA+!0DMsS>$m>"ԓT[x%$)2\n`@=H|0}Y}ģ,>н0x &-]mmc{Ń˹TH~|iI%J{xǗOŬ¾*ݟn0- yPN€K(|Y}K3zlp ybDw?(GG W[[X`ln/0f'w_.ERIRP@P@P@P@P@P@P@P@P@P@P@z^4V_\Fqp# ڠj䟺;H5}Nwod^#,5p A ۀ$J>t|dӐbrŁ]1X+suൺν`-#..?ۀ:ßJ>t|dӐbrŁ]1X+s|'S& i(@!>@C6 w'XPyhn-̶ʹNb%c9rssh\x^T{wtKXkIB 1\6@ #]oX-Miib`ު 2[pA@P@P@P@P@P@P@P@P@P@P@P]4^ uL,31R.C@5( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (2t٥[n[̮O0\(m/Ԡ ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ('w>զnlgؤo<߽~c&7PjPLQg{}F+Xe&AO%b&~P pč4dZjod=#Pw_ (ף񭎛枺}ܕ{7iUbhUx H;x~!-uQm2TNTe.Ӫ ( ( ( ( ( (7>$m>"ԓT[x%$)2\n`!.MfR7r[B>Y@1o=:cFC H̾h6h%,[{}F+Et ,L .bW_7*'nyntZϼ+Ҩ{p-}` (Rŗd;1ZǦ -ܰȱ7xA+!0DMsuxK3p\LH\XmÓ_Փ6CcaQBf.gF2qrD]#a@$:Ǘ3S;C]v}_O?@ZTXn!dd 6O6jP6s ijI-CBAޮ70 @Wu| ˯jQj ZMi[gī2J6*wevWz鶷w6%b5]ģbPi@o|H}3IE&KI Sۛ1ez1^14/C]iͭ;o%a|6nhW/ex,oC#m1$r]J>= RռA춯ۈ`dm$.KcB'P@P@P@c7g G7l>yǝv~~s@iz([upu0ll&j~I #ke ;'QIĮeZ6*@:\\K]gj$%Zޡ4E 1ԓ#@N۴o/YB ڨ$P@P@P@P@P@P@rk#ke ;'QIĮeZ6*@:\h\x^T{wtKI"۰.b?(-E|ڗWsj]^%o䈌cQn`rr/Tziux[Qvoٶ4R7r99|'S& i(@!>@C6 lK-YW'd Į]N6WBI>Kd'[`D\HqO3`7`.6%~(uK֯vvѻDs;KE("p}?7jg7wn~Ze5MR7 * a嗡Н J6F=BwN1]lU19\u ʸПJ>t|dӐbrŁ]1X+s>'-{X$[eLAbrC=N@5(_[(g Q:L%vc/ѱTq/?*BݛY㺞JySM͒Wx#ˏ``9lSk.sra[\A崑 [*1d@ <77/jf[Iϕ(6H^NI$ ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ({ğdV b8~l|@]C2]GIccXdX< "&@)6s ijI-CBAޮ70 @Wu|H7>$m>"ԓT[x%$)2\n`?,`e41Z,kMdb`MstPP@P@P@P@P@P@y>1#i0&/$1Onn!sxWо׼Iϑuk6ﲑw7ؔe0xŖ^(4-bFeFF^ݼ8;@5?,`e41Z,kMdb`MstP,%tQ=68YnE| X "oԦ^nfpx0Bch~/6p:4q%b@$@; !asBԯ5oA{-cxi%˒PIhW/ex,oC#m1$r]J>=7( ( ( Ǵoyy7pnwu'ivv# pEQMy[>ϸyf1mݟߜzP^4V_\Fqp# ڠj䟺;H:C>NzRf1+|֍6+yW?2Y% k#ke ;'QIĮeZ6*@:\X_uw6O^fHʛI"۰.b?(-E|ڗWsj]^%o䈌cQn`rr/Tziux[Qvoٶ4R7r99|'S& i(@!>@C6 lK-YW'd Į]N6WBI>Kd'[`D\HqO3`7`.6%~(uK֯vvѻDs;KE("p}?7jg7wn~Ze5MR7 * a嗡Н J6F=BwN1]lU19\u ʸПJ>t|dӐbrŁ]1X+s>'-{X$[eLAbrC=N@5(_[(g Q:L%vc/ѱTq/?*BݛY㺞JySM͒Wx#ˏ``9lSk.sra[\A崑 [*1d@ <77/jf[Iϕ(6H^NI$ ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (>?ƨe6kC*C2 `iH r^ƶ:lz0KrUݥUV]P2i  K(|Y}K3zlp ybDw?(oOxxWӥP[O* P71ҥkgieX1Cѵ$(}cחMЕ`Y,`j%Kp,]xRP"hkNiX7bVT> FM?ϸ7$hd2(%ШxǛvč4dZjod=#Pw_ %,[{}F+Et ,L .bW_7* ( ( ( ( ׵yޕ. [<70;K*1f)$n!@9K妩iMj'Vc\1#i0&/$1Onn!sxWо׼Iϑuk6ﲑw7ؔe0_W ౼[{q Ēv q(^4+JVڼ7on!\.% tP@P@P=~(uK֯vvѻDs;KE(XQKxmf*0 b@*`%χ$,1,PF(]9Ƥ|'S& i(@!>@C6RG]^=Z4Kɭ\)䜜\}QE{mjYB&w?.`V ;$EZ}=[W 9]! &;.4)y؜`Wp yeV ;#_ '}FIn9ZJ hA*͸(Ķz`mG2Q >9 > /?S_[(g Q:L%vc/ѱTq/?*>?K}Bx.[7DFT|7sg99( ( ( ( (1D~o^Z|P2Iŏ˽r%Uw> uN?_~$m1yquuIG5tKs-uXy\}p 9Qkۡx|֒"c mA3n{/4Rݐuery@J}Ei~{IqX5< cKdXNzRf1+|֍6+yW^{GOr$m>"ԓT[x%$)2\n`!.MfR7r[B>Y@74+JVڼ7on!\.% t^j [Wm026K%1ġxr ( ( Ǵoyy7pnwu'ivv# pEgൗQ}{S0- He|GBrI xTT}cPMAIT2*Q99sDkkũ[ZM2m LQaUAn>'-{X$[eLAbrC=N@)eϮK5@?D~o^Z|P2Iŏ˽r%Uw> ꏬj <47J[e\'199$k.sra[\A崑 [*1d@ <77/jf[Iϕ(6H^NI$χ$,1,PF(]9Ƥ_[(g Q:L%vc/ѱTq/?*Bo Kz$wQtP@+}wbK62Y% ^4V_\Fqp# ڠj䟺;H=uIG5tKs-uXy\}p 9Qkۡx|֒"c mA3n>'-{X$[eLAbrC=N@ Q?l#%(er ݜ}r@P@P@P@j?h/mZ_>K(]V$޹lXp;p}ׂG:ۯmH XkIB 1\6@ \f^n o2< V%p>q|`χ$,1,PF(]9Ƥ8>՟}?~Oyl?ߌ-tͯԺW'/e$DeM_+pʏw;s Q?l#%(er ݜ}rOKg} -D~S+XS WV.kt0*;."-6ƊF@9'' ZlxT.3p¨OlYzm 9ԠM|dmlS'{=D)3ٌkFPHP /m=ģwIK9 }v',XYUw> _oGKuQ'+9D<0R95 }OPbWf2@ m WB4.?ƨe6kC*C2 `iH NĞ!k>Jg qT0 x\^*$^`Nu>\4XB{WR5ss`!_h’FJ_i:Lok,r"h>iX7P@P@P@P@P@P@P@71ҥkgieX1Cѵ$(?x\5M:)DֶVtE76zΟ8]xk_Z!3)PF܃;@1.ԡe.Vw,2,MJňL}E4^ uL,31R.C@+GX4mSOkYYv\޷B_$:Ǘ3S;C]v}_O?@$:Ǘ3S;C]v}_O?@pk0xOKYm5Ӧ2H0&义]|ߺF\ 4i}񽜍a#Fs!A.@<ߐz鶷w6%b5]ģbP{xǗOŬ¾*ݟn0- yPN€:-Ji|Aiw ۬72P'^Jw5(Oi4ȵ$ ~!{swF! W +:@׈(5B-F-U%u}Tj;;+^x=yt[ ^ uf IƮQ T 7>$m>"ԓT[x%$)2\n`!.MfR7r[B>Y@74+JVڼ7on!\.% t^j [Wm026K%1ġxr ( (14F^^nx* I]*/<@'Z\ k7䬡UQTTPPRG]^=Z4Kɭ\)䜜I5N}&^6I& ]0p X}QE{mjYB&w?.`V ;+s{$׷Ba%4D pہfP@P@P@P@P@P@P@j?h/mZ_>K(]V$޹lXp;p}ׂG:ۯmH XkIB 1\6@ \f^n o2< V%p>q|`χ$,1,PF(]9Ƥ8>՟}?~Oyl?ߌ-hg|3ݻggmhm|ھ<W{-"#*lXÀTx3hOKg} -D~S+XS}O[=kHIn#\wg(pzgTziux[Qvoٶ4R7r99вfpɛBx0 d}hNrk#ke ;'QIĮeZ6*@:\hO{i%kM>v2\iS9bʬwXEZ}=[W 9]! ɯl3zgE&c1hتcirpq{kQA,Of,%tQ=68YnE| X "oRŗd;1ZǦ -ܰȱ7xA+!0DMsl^^kMO]> nJ4*˼J[$`p7e/{htƍ5Kkh'{w8A|ѹmW7o$SZD! (8YLwnM҂6$1 v/u&wbM[abo44V,B`xIA&O4km2T @;JωuNoxTOh˴wLL 9q̧  xǗOŬ¾*ݟn0- yPN€,_*hIr5ăB% c/8~@Ҁ ( ( ( ( ( ( ( ( ( ( ( ( ( {M6|Qꗗ^(w wRvgb2 $P^4V_\Fqp# ڠj䟺;H5}Nwod^#,5p A ۀ$%Zޡ4E 1ԓ#@_9׵8l|E`\~Q'c[pw'XPyhn-̶ʹNb%c9rss\_ '}FIn9ZJ hA*͸(Ķz`mG2Q >9ԠnO#Rk =^䇵T (2vW =R?ѥ^MnGeEfH$B}O[=kHIn#\wg(pzjP@P@P@P@P@P@P@P@P@P@P@P@P@P@wxK3p\LH\XmԠ ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ˽f^n o2< V%p>q|`R ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ({ğdV b8~l|@]C2]GIccXdX< "&@)6s ijI-CBAޮ70 @Wu|Hn^ƶ:lz0KrUݥUV]P2i  qX5F{)]R9R9XLnXNFX6€ ( ( ( ( ( ( ( ( ( ( ( ( ( ( n2o;}1;n?gҀ$Qb3a(L&U$ܒ@16F=BwN1]lU19\u ʸ > /?Is.զnlgؤo<߽~c&7PjPLQg{}F+Xe&AO%b&~P pč4dZjod=#Pw_ (Oi4ȵ$ ~!{swF! W +:@K5eq'|R ( ( ( ( ( ( ( ( ( ( ( ( ( ( (3zW?9 ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ]&h|A}ϩN'T Ra@pr%8!F9Ԡ ( ( ( ( ( ( ( ( ( ( ( ( ( ( (n{WR5ss`!_h’F׈(5B-F-U%u}Tj;;9[,EmѦmmn#3/725ͪFj7e/{htƍ5Kkh'{w8A|ѹmW7o$^ƶ:lz0KrUݥUV]P2i  ǯ.ky+wsnYV)#XJ9a*!x 5tڿPd}=~+mێP@P@P@P@P@P@P@P@P@P@P@P@P@P@c>Pi|,uXd;zJc}{i%kM>v2\iS9bʬwSZh^uWAI݁sG\ݎymׂG:ۯmH >ƶxn`vUc\?+HBs5MSTӢOkenHxSyY/(`q\-I_~? t vy|)A;C (-izB_]HyJJD£|m]7.ԡe.Vw,2,MJňL}^"ԣa?K(|Y}K3zlp ybDw?(y@71ҥkgieX1Cѵ$(;*Pj6%YԁW˔I*7& #q ڮ`eM>k9#ef6pWh?z g k$gȺ5[wH߻lJ2 gmo7X<D8ˆTTW'nyntZϼ+Ҩ{p-}` (Rŗd;1ZǦ -ܰȱ7xA+!0DMsXzzu.Q".bwuU$*.ԡe.Vw,2,MJňL}>ƶxn`vUc\?+HBWEt֝exJ3$jmBpQ]`7xŖ^(4-bFeFF^ݼ8;@ [,EmѦmmn#3/725ͪF^^kMO]> nJ4*˼J[$`p}yXmo4%{.mK9*$kG,%R/Ҁ8;xǗOŬ¾*ݟn0- yPN€$'w>զnlgؤo<߽~c&7Pv$ ׏/? ΟY}:Un?ݾ`[򠝡jPLQg{}F+Xe&AO%b&~P 4i}񽜍a#Fs!A.@<ߐ}u b?Ge!]Fe@6^R;Bا,,#b@3d}̈́GuPYѣ\+f@$%NJdŏΖPZOqa43YTq:Iflm]epjPLQg{}F+Xe&AO%b&~P jQj ZMi[gī2J6*weve>+uN;1n G pJe7zgi.M=r=xZscpyC1;p*J`W*쏰^ǯ~^qӚР ( Z˨ܾno⿖ym$f2>Vʌp!y9$ ^{GOr&*[msJs{}QE{mjYB&w?.`V ;3_9׵8l|E`\~Q'c[p)#.c]^%`Tv].D[m܀rNN@:JÛމv~z=<ğwzX`$͸5}Nwod^#,5p A ۀ$J>t|dӐbrŁ]1X+s.𽴷AwuO`2q'ާxV!X)`In.|9%lj`ֆD)-`1Be5$PiP$jSʚhl\|+;Ad?Eͬjwmi4O10JUF V -5WV.kt0*;."-6ƊF@9'' /s{$׷Ba%4D pہf(umcS7_kkIWyWz0L*\ 9m4iwؿ:G6  AA?tw$ WV.kt0*;."-6ƊF@9'' ?D~o^Z|P2Iŏ˽r%Uw>MGKe $X-UX+s˼>ƠΓCtneUs++sSMGKe $X-UX+sϺZh^uWAI݁sG\ݎym/Tziux[Qvoٶ4R7r99(MGKe $X-UX+s Oq(]iNBgwǖU`sϸׂG:ۯmH ^M|%$z~#գKļ ˰ȋ~ͱI85мG>XkIB 1\6@ \EZ}=[W 9]! xXk ~ԗOj!\1eP@PpI7}[PN6:Nfo\mhƨf xRTGdX)2[ ϯs{$׷Ba%4D pہf$Qc%Ɯ>;, ,Xp;pw^i<1&h圞3ɂGQ|Ƨqjn֓LH$T`U`Arۀ.Z3C V}Nq:PZ+ 33.y 0P@P7 nttoṁYV9s0upmlI#q ^Zv!EZucq*̒r FYwޭYxGLhTwsdx#v@5o=:cFC H̾h6hYyyG[6 =t%*nҪЫ.(o4vP}cחMЕ`Y,`j%Kp:O_>{ig{NhB ( ( ( ( ( ( ( ( ( ( ( ( ( (1D~o^Z|P2Iŏ˽r%Uw>&;.4)y؜`Wp yeV ;)x-nsjq+ $nˋO<ku{S_$[vG\]rv9\%Zޡ4E 1ԓ#@'D%־tkl?),NWvrxak/Y;Aj\6p[$( P@P@P@P@P@P@P@P@P@P@P@P@P@P@j*]>>ƶxn`vUc\?+HB^"ǖ!m'AgzgCv l ! yx m^ ŷLI.\`O|Bԯ5oA{-cxi%˒PI@KG^ԴӠ^ ѷ7fXL@H߼gx x#89 i$uKM:0]sve$w3EGaxj4]5Ym67 +ڧ(Peya|emuc.B-/{jxQ׵-4etmٖ70BS|^%Y]MtgX0@@-wٍ2u)۪ff!*?|u2$7W7cE67(u$g0EGaxj4]5Ym67 +ڧ(Pey v/u&wbM[abo44V,B`غ־<Ci< #;g:۰Sef vek$gȺ5[wH߻lJ2 gmo7X<D8ˆTTW'nyntZϼ+Ҩ{p-}` (Rŗd;1ZǦ -ܰȱ7xA+!0DMswox;j?~Ry~^7o?}?K(|Y}K3zlp ybDw?(8|cFaM2-I5E_HbC(; 񎯐k$gȺ5[wH߻lJ2 gmo7X<D8ˆTTW'nyntZϼ+Ҩ{p-}` (Rŗd;1ZǦ -ܰȱ7xA+!0DMsXzzu.Q".bwuU$*$7W7cE67(u$g4( ]J?mj|s\G2+m ~@,YjSK SKTaa2?|RSp'T?`_G|4@P@P@P@P@c>Pi|,uXd;zJc}w'XPyhn-̶ʹNb%c9rssI']FLsi#1Tc $x-enn_^77_k<3A+xQF8lHQ@ؒB9Y-buXUT3R>_è^<=ŬN*cxV BQc%Ɯ>;, ,Xp;p]G^j[4ۋ Y$h5F1V >Aoė*qk48DU Gq{kQA,Ofp 9Qkۡx|֒"c mA3ny;{R}QA5&RlD"V3W'<;pDž5G7wIu==$$G NrDkkũ[ZM2m LQaUAn|%$z~#գKļ ˰ȋ~ͱI85мG>XkIB 1\6@ heC7ُvzq@{̛}p{ig{NhB ( ( ( ( ( ( ( ( ( ( ( ( ( (1D~o^Z|P2Iŏ˽r%Uw>&;.4)y؜`Wp yeV ;)x-nsjq+ $nˋO<ku{S_$[vG\]rv9\%Zޡ4E 1ԓ#@'D%־tkl?),NWvrxak/Y;Aj\6p[$( P@P@P@P@P@P@P@P@P@P@P@P@P@P@j*]>>ƶxn`vUc\?+HBWEt֝exJ3$jmBpQ]`7xŖ^(4-bFeFF^ݼ8;@ [,EmѦmmn#3/725ͪF^^kMO]> nJ4*˼J[$`p}yXmo4%{.mK9*$kG,%R/W*쏰^ǯ~^qӚР ( ( ( ( ( ( ( ( ( ( ( ( ( ( G5[֭/%. gqc\ U`sϸ9/m=ģwIK9 }v',XYUw> w^ [ڜn>I"۰.b?(-Zh^uWAI݁sG\ݎym.|9%lj`ֆD)-`1Be5$PQ?l#%(er ݜ}rZ3C V}Nq:PZ+ 33.y 0P@P@P@P@P@P@P@P@P@P@P@P@P@P@spڼJOOc3WF7EGaxj4]5Ym67 +ڧ(Pey7e/{htƍ5Kkh'{w8A|ѹmW7o$V,Q}C4i[[A;۹2Č̍sjy pvu~5`O[f*M Io5g^x=yt[ ^ uf IƮQ T #y_{o?t4( ( ( ( ( ( ( ( ( ( ( ( ( ( (MGKe $X-UX+s Oq(]iNBgwǖU`sϸׂG:ۯmH m;YP%ldg^h}?wۻX\n3dc?ھݳoyϗߚ4?+Fjnȷp¯H$ 6T`fPCr#ף񭎛枺}ܕ{7iUbhUx H;x"I.,5;Sd흷)+> `pwRϕ"I.,5;Sd흷)+> `pwRϕ,3W>m;YP':me:6/w,3dEebw]w.@6?e=&6t Mkܻ|37-ģD\4XSL%֣jZi/aۛ,&?I $o3`<7-ģDPi|,uXd;zJc}$2kz9whᘱ?700{;+n߲gzIize [C;\5, fr2ї1b~n7`` k$ 4kvs#<%߃s.>ƶxn`vUc\?+HBWEt֝exJ3$jmBpQ]`7xŖ^(4-bFeFF^ݼ8;@ [,EmѦmmn#3/725ͪF^^kMO]> nJ4*˼J[$`p}yXmo4%{.mK9*$kG,%R/W*쏰^ǯ~^qӚР ( ( ( ( ( ( ( ( ( ( ( ( ( ( G5[֭/%. gqc\ U`sϸ9/m=ģwIK9 }v',XYUw> w^ [ڜn>I"۰.b?(-Zh^uWAI݁sG\ݎym.|9%lj`ֆD)-`1Be5$PQ?l#%(er ݜ}rZ3C V}Nq:PZ+ 33.y 0P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@PKlWPKAAOEBPS/img/writetabquick.gif/'GIF89a***000OOO:::444a``@@@---...kjj(((pppgggPPP[[[ $$$"""hhhJJJFFFBBB777_eq/28Džyyy???w~ŀ߳~~~̆|||}}}www͉zzzvvv{{{ӇxxxՌ䲲krGLT'&&#&*SXb;?FNMMutt¤麺~}}WWWoooDCC ___򢡡&&&XXX''']]] ӕUUUttt^^^mmmnnnɊ_bhssszyyMMMuuu!, H*\ Hb[2jȱcW+!Z S\ɲ˗0 ><%ѢǛ8sܹQHQJѕD#ϧPJVj5!MKXʶmJW42KݨFY/W:Z9Ka qJZt >L匪q̙+^^M#Bn%וOoNMԕdظsW~e_+sz÷x1~P8УM8-]k^7Sb?liyNfw;UJ @xAF OƐt`` 0h$aTG~ERGF`C!~ FO logso. nJԧԑFAa i#SquM x=#U{b0]IILrņ Br5jĄҪt(=]pO7b!aG$س<ru~ 2$D$EH BrC'p i$=G?ϣIHHrhNkLʈ%`Qa=,AMPPFu1P>Q@R#1+En]FVCsꗻ~W3#!\yYn#&1Y`-8EO׊\^'Š[F!yG[:iUQ43-'ĠMa+=RzR"*`јT%'> ,AԌ*(WrȞZRrfoRie!@-UNT esф2ԭ%@TB "ERˆ#*'as~l*yL], 'vAD '8kAHN jaYSR_ o8c!LcgDmĔR$;0EwLP{/HGN}*9z*otM^:MWPY\>,"8QZ '좲+l#pɰ+ r(ngcs|Jq\苹Ֆm/섻h*M$\׺Tfn0ueLԉp,"- ]K6TP %eI>˭FՑ(LJ}0u*Q>H ܰT27Xo41TɉAR^!8J_2Vџ!3\tVU/m-nqr%Z>zb'HxPPB[3˹Ӗc(SujxMPyrM-QlpA%U+kB֡KVD&*D4w%I#O #cCV[|tn*}*M.8 nRH/hy sHڌ\BM b$P3W5! _B~MԈ66АherP$jHT.:'G6J2\M!]储Cn^bSP;І{'Ww M΍Ba'!/ZJ`S..u 𼑧q~$p $e=Bf᠈- _'ﭫ sz : ab!+^qS j#vF_HF }U&tpJ( [v2_J9 FbD^#*%)B! (> #4!{q#1d"Aq_T b %#" 4q8Q k4~D1-RQl:7a6t s@؂~ @oGa iBOH=QWhQ cx IASWA8H*J!aAS81aQh!AъxH&ь41،Xx ׸x؍-Xxx鸎h2yxH @{ `X0  y| @ $ v@Y*!#0'y6 `7[1 x<9 DIp PPRX aGD B0 pKyUjlٖm Ky@A~A{q OIB:!|`AKZ T) m`٫+3ۗ 5, jʣ *Ħ31 Y' )O9 :;-DPpni ql) qPP kn AƭZjy?f P9 ]+]0D  @|Ɇȉɋ,d 0'p#f0ʹ9 _ ;ɰŮƌȠ,'W)P P<̑Y ʱ̲<ɏɸ˼N$@CQK\|08\,ȟ ͣ,)@LB#0O0!`pz `ŝ\<|R(?P6i ^ ܙp  JG`&`A=Ӭ!̷ L<}m%PST!>@0 hM]GKUa`i@d P ` @ s  pĠ @ ` P w_x0FPp" dmhl0-pmr ];ADmHL=؅}؉؍ؐ kf@٢0 ~pg P h@ s @ j0۶}{ۿ]c]gkma9Mmy {=~݁ ކ؊؎] ߄0}>~ -mo  v׭B M1>4n-m.n ~PnSέ%wc݂=mmp>NA~DGJ.~ːNג),^N5~nqsv>yn|NN~T趎卞,,^^x]N.8;.?^BEHKM>ڎ~.8_gNn.NV7M o柎>^.^(*Ιs=ݽ2-n6~.^~.N^~. UW?\N~okM'Nbn7}//omq_>Z<_!n?an?Y_^>cC_F%~oį./06JJ=|To %NXE3 "ȱD@v09b„ IͤYM3OAE+hA 3Nr%E N !ˈOHAŏ" D?Df",8z)I*Y)3a:.f<(RLBJ*V\K,Z&\0ncUcȑ%O\eĹqqҥMFZj֭][lځۖ:uoƭ;[º^^)\AGgKiگj# n2,;.38k3-Ӭ A+6h6 ̍Clʌ,͘ðe'3\0\'I\cIC<ML EUTA݋PF*ξ w% )\x"w:mHc\\h2";L#/k/@N@<d 1> k:SJJ5:7鴸X@t5 NYi-Xd1fE-xRSk/ݻp#𾄷9Njh3H@"/.rǣY{D '.{ZfUM`ۉ'?7 UZօ} 2dZhƲuɎv\OyJ?e i]HH6 1y~]*Gz0\"Qh<N}*\[-n!JF1p}_EoBycGp1;p@iЇ"mvdM;!7QrJR, XCfw^e40o(IK5Q.9J29̤Q(,#?J2Z̢03)jlHHnnxL$1k*S6שOo h!JXQh&?TcL-\(<HPv9#FzJ2tA@!RE/!M:? *UH+w2C&Q{Ҩ$L}*ΓӞtTNK%<;lTlXzK5Mi:yжVpfVQm2^W&A#҉ +bX Qj&֫UN*` YX/ Ġ\ gZX[V\U ֫y-kéѷef`Q;XEu-ȔKڿ69N?VӯcZ4ej9I޴(:OsZZn|q:nձ }d_buY{Ӣz/u^2֦DpU+݋+U0KavfoY[ӡU0>zKagVuyO17K[8IA|c65)Z񎖿]pxWoM+0غ kbNI39j128ѷq%5h^w->tg'Ykr_3RѢ4]2Ѫ4{š:4A][[ԏukZa4-Љnt+Nԩnuk^nvnnwZ֖9e"G!;σ>=Koӣ>_=[>=ko>=-0ljHrwcx3׽{_yC/~~ɍ鷾G왮@ 9#;?<=pۻMbc={Ó=˃?BȂS @̼4>KУ69ӻ7?mЃ5YX8@ qb5CJ볿k<ļI0 EF5;F@sL>$?|ICvD+IF=? >DtѴ3jx L lM>͔$@یKT?,&hMxD>sܽS,?(rL>QMľ, OI$bPKd@$LIdl@ϝ`j0ͻ|lPO ȹԒP f5L NK5NDML-Q-6̛3N}̷ ܠcPҟjpLc|(QKN5,H$RtNݨӠmhg;S=)}OuS= lNaDx0Sg ΣTeS\PDTUTϜF%O;͉HTJ `Dͼ)QC U,MN!5UDGVmջj8'ESAUBmSDR^$%4Ne+V-]<AB}tMTi/WyEfppL|QgEeWLJ =ثa(]Vr}uUQ:uT?X!`|XO=W+]YFV@Yj\XeV}؞MٟSjmWQLHc !ZԩS]]T^M/P@H$gZ݉c\ 'H[-QQ]EF@" m[m n-&H8>J]H(@X`\m]}]؍]ٝ]ڭ]۽]]]]] ^^- ;PK~i4'/'PKAAOEBPS/img/cachegroup1table.gif0OGIF89aP)))WWW```III???"""'&&jjjutt000ppp@@@FFFrrs:::fffhhhPPPbbb222YYY555^^^lll...TTTnnnRRRddd+++NNN$$$[[[ZZZKKK BBB<<&{|LE_bbڀlXz;QT׊1DFNMMم|_ \]9illB|||www..˲VАάș (*MM/yyyğ~~~ǘ~}}DCC̻xxxvvvü{{{}}}ϣzzzųҢ󻺺 箭Ӵړךuuu!,P H*\ȰÇ#JHŋ3jȱǏ CIɓ \ɲ˗0/JG&M.ig̟@ -~rAGŸFsR:իX!ÒK?YÊku+`rL%?r@ ٹCHB@?\}J*i 0tF!"3@! (x ` o `ZD% l_ X-V yN3 yA^c|] W'AWkWDDpd`y W!vx?WJ\|F|S8z"X)XW f"96$E;8P Bw}/ $@dφc2h*SȦu-ARLW]K)%FK '_\:P`Qr\DZ@"Z~ǥ*ꨤjꩨꪬ꫰*kKAj뭸뮼+k&ϳF+Vkfv+k覫+k,l' 7G,Wlgw ,$l(60EhTƶH<e8< 7ase$B6mU?b ^O+ \{Q^Sm?amb a1G\,e?;lwM za5Ўxw|w=8C^X^6fQ{aZQi zd:#foln:Ў.>DPDsϳʫ~W;Csi1G?cs}F^2}N`6H<~mz]a* ;4m~A<ՙg.=Wـ DlgDá֜64L (-! zC30|?s"50dp@i E\kChHH뢅-0w1LD G2/w4G!c"D(/J<U9> a5# i y-,tnTƐ@uюoL ";,FX<.Rx?KtfM 1$"h5ӈu#ˌmx#!(YȽ)1i;s|56ztXwɽS5#{+ݴ-0JK2CMj &$WWntԗ\ʖɰ H+gtqfh03 d@ 8ȶ~Azh]Lm;Íj3C鈩 fϚC"AC"pЂRTkg@4`~绦 үm23?ebHD">/vcc6B (Z%PW,hES0xj`\jAe uhN 7M FBh1֑5p\=jE5M S3dyXlair˴%Bb8=qMz|Kͯ~p}++ cܙB*fH>5jlmf Z'wRuH905bs$ųiҀul)@bƖlRZM:.fA 7~K7 ՙP1{ķ,ro,~Y7/@Fܐ6MofqNC k GMRԨNWVհg-k ʵw^MbNvyx0\ЎMjS ζm%̀]oN=mD0`懼MzA o|KA?N; 8iqk O8~$ #O%˛ G ~ЀLs˜2g~Ώ؞A}'IX:?0k"ܼ9qL:3 29onE.$HJ7ؽS,РR!o|G )p GPMp|8OJA X?u)\fǻ.+ p*؞YK<Խ倗~?&}_ }Spc>4ק0o W>?07TGv G}r̗076~Io߶ogr4@gygrgxޖRpm&}~ yE7 շ7r{8FpN'6Hv q 0u"x4yvxR t wqqYp4Ps y}6'tKwxwxׄlWr']t%7PGErGl,u:mWqdž؈؇vG(o_xk(؉l8Xɦo؊8wlxȋp 85pŘʸ@88(0.x LjFx}؍VsFrHpG@u8o}/{GpuJVy<'hoVVopp7~G3@m18oo4wo5xooGzQg3s"I vSu+GcxawoWwo~}mGHrHo5v7R0oat:o$t%Xt臀ǃGo&(h)O7o/.5G7oGz6'Hoku炔Y|twG8o9gpGaxRpqOp[ ׄD YiFzVzYxam&goxsٓSLoiI5mxיS|:7vtp} SmY|PpYoH|xٚ ty8~Z/m>hsX  Ƞ91فyƇyX Ǡ9~'T%7uYy#鏮ȃ58qF/HmPG` 8Wzs悵rs :~IwLGp6ɘjD` x7~QjnZnGxHsxJG qvz( wJPgxx:x/;/=jo&7J0:ؐgWXvs5sǏ'v5W=:s*aʉ6wuga7tG0su?uG]s8rh^׫v';' c˗HEߪ/ڪrح:ʮ/窀ڈ().2#G:sb|jr7|'(F 3gxpKG\vo ˏJ{ vm~Ȗa2? }%*RwfJ7u {)s]'svWz[zA[D1ɃǔxsI'wuʪ@awvIw׫uI0w84kw)ѧSv9ǔV./K pQ}&'&s^賵inՉH)s[:|5V9|ol8/'tcsz]ĉtTPwmg;GowGsùG}MYjs:j;F|1GuɤP0xTہJ;ɉ縌W[ٕCIl3( `IsJsr zDxɜ({rwoꢀyN;V+9||Y:rj|z3)9u3׃kZw@nkty&x踃wrPv:;ow37sφ;Gpgz9l/Zz85P6{gV8ҊrG{Fk%vs:v$uĹv-9vj7ax:n957gz&i6' ėVJpxy 8z:Іrstǔ˯6wƳoL/yk*|vDrˇ\ÌŌ:G|,\˧Wyq˧ipLoj h!ddžY:rCXp){gɿVX/t770c<$p̣ūbhzY_,| aJs(tgP9ykiw! wixaxs-ɧ,o7ȃW|ܘc'yq5zyxl:uys؛f(Gĕ,8kۯ pomiMvv z$'(Vۡf 歲ל]iy9uϧpw ukzLk]YՆ6z9t ,(ꀕ;,{،6|gsĀp zX0:wn=o`Y}wx\ ׋7:xG!{m"l ڮ77m} :|y%~Fu%לj;yƍwoyu8s%gMhwuօg$iAX,"ɽڐ=o'h-Ԭv--u9t)=w&k:yE)Ժ&D6/XksMѨ퓍,/tc%עwчslihyqgY2陧xǹ⟜]qz%v`ʆ7skzl (gnm7W6Ɣ-p~yq g ZjVҎW owJ Znr>8Zy >/ƌ+N^ink8^~iׂk?"b~h ?_oX "i$_v(f*.02?4_6u:_<@_B?UF?_HLNPR?#VXZ\^`b?Z6@hjlnp"T2v z?u~*}*??*?_B?__? g ϰƯ ѐooʿO ؟ڿ `RO pO" 9 Ѡ $XA .TLS%MXE5nG!E$YrYQbK1c>+49uO(UYQ.5uSQN%y GgHU1HW*ݤZY!SfXqR:#]y8C-[vfS/o`%OF0c̙EtpdʡESSi& Zk$];cM]=lQ`  |QA?.;R]Asjj ;O ('# (J  8G( AC`,3S- j3ȷOS(! N`3TA_ 6Vc@] YBRlI*hA5GQ,hŵVG;rٜO u5%HK$5J߭U;eW ̓L#P+GwVbVj́FNdpL@] "Kv{8J"sC>a`Zw3yO=1ΠyR@䇙R=KGp6"k}Z"x4-S\S Zp5e=uz%9b ςptb8]Tt+:ྸϽq6qGVHv+4l le&(XCV@}>(9<`Qh>SM7H-d.~t]UO1om.0hQyXty#G%5rjlڤ!o2$9`.t!ChG(ܙi\d=V2f2O38!JЃ9d q ei! Qէ2YΌ (31?"B> n4)F9 I0p,Za5MljSiPbb{@0-P*BAu0$t7BRUЬjU3\MSBEZ: B(#1 TE:qMhD7ܰjdx$PS `Z"Va>؍է=kZn,rq3pah 9!ب8 {"7LE!aoD75!Bֶխ_+X7LpS\b4]Y+\ju]zF)pE|;! Jx/jц6؄0Z lh)7x l`BnN/ V*ue;_7wÛ83s8r%7Qr-wy>pkK¿5Ya6'͎ir{:Z".M.ilc-e aNe hC{#Awm \@6[ Tpp`wS:yYq3|[@ 8 0 ~@ g ~@x-~qg\x?=o[AM~r\+gy\yZD~C;y}s}/q?b̹НtZ0d>a',KhӣuKVG1&x=k]s{~w=Wn>epx'^g|xCߣxgcZy?'ۏ>/fϼɎԫ:3=fcvk/{ܳ}71H@ $(3AP EQER,ESDܹ@DH$CN4C/@A`D$>Fs;ULFe\Ff,EV,#W|$b®XCAE04\E2Es9409MDcCh +?E3HK$0EMlD;l:$0C3Hvâ;=G>F01PC1E/35LNffӽS1(D./0S,3}P}ҲuT&L5ER%*5T֣TT0;MS-=D=R]UkG%ԜѰTd9uS8MN9T[SNuPOUSA?M@}V3V[ "VmVnVoVpVT UeTV=֊@;|HI˸FW+㯺-4M۴30L+1PUsUtk[X hm{ 06o7-r;7]tUX/U%%M~OMYNUTTQU #p"MJ]QRt5f TP ZAOAHSVZZEѣZf\lZEԚM}ٝYZG [ۜU)Fd0+-ZP Ys=XdUjDzۼ`[.uK=ۙQ-\Tّc5YjuV-hiܸC[;5Yb=]`Uԝ`am]#B[8#\0ܼٽܸ\\}\ĥۉh%ށ}[ۃU޻]%WɕYʽ)ܝ^[^}3[M P}P>-M -ނ=^^^ _ިߺ^\݉-Y_M\^ &]^-_3E̺9U]e]~5E ]A\\ƻ5еf fල`5b`&ü^։ `%+r[[> _ b VPZ"Z7VEOcb6`<Z86>N:6;c=263.4ΉCD.E``.v/0~1 8QkΕMe,v5Fd4ve2wWKWzݯH|}%~E0`؜جMMdN[1@A5CkDCKFSGkKwLKKLK/l.m7}8F8.h;Jʢlh~&mhhk.ʍ'vbKbL.,ZJVKN[i.i8LinFW]jnjiu>jmNfiviim5f">bC޿2b Eb2jjbbk1 k]akNϤgN}.xUkOkPk,(!Oaվ쫾iW҅뻖kphlL'a@mܶBvcvmcC6$ni&̶6_ӦۙbNm6jӮ]VSlblnaa#>SF^#luPnXlOپva?]Eultn\nvgf0vdnSTjlw%]x_nu1uԞuik}tAZuNw|ZAXwq|xW}v!vRx?cuwR#kixw\iGxxxYw&I`ył?Syiw?WroEPѢozg8M7Gz^U=$?zpkO&9HGv{=y}XzNt?|O|gN|Xn3Y p./5AB1v6sLsy6L{L9WrL(oPp _v0;,?1׵s1_2wL5կg8gL&3 ͫ' }Xrp,.'\30O/v>sx5K{L̾ Wpg „k!Ĉ'Rh"ƌ7r豂KthbKe)c6hП];gaUJV̑YΜ2:Pɑ X;w3Ƈϖ*Z؉%=( /^ڴ&5j&*d F.ErE֬J8q0Z R:[ $>Irz,m4ԪWg\`ɔ+[9͜;{ :ѤK>:լ[~ ;ٴk۾;ݼ{ <ċ?<̛;m)ӯouNPdL4لN<PDRL9TTYV\yXdZl\tم^|`b9dYf ^BB}=#l&`no `q"Gr:atRu#jgbw)x/'cz5<&q9HN,S[ہ)\Ax܄Y\q8݇։]ܡ݊X^Ѹލ朡:4Ef`o p'ar2sJau!bGv'zbx-y3Y!@*Jk4$K|$FIhU"k%IiebeA{/ V* 場Ry(X.+ Ēy)`)Sz땊~)cZX$3@O(KYV&eŠiX!(=5a)3;p42)3-n.G}3!WT7}[=d) eѲ8S8^0*tJ@X~ߙk9睇;PKF00PKAAOEBPS/img/roquicks3.gif:&GIF89aWWW AAAQQQEEE...ZZZ,,,rrrpppddd)))666???hhh*** $$$lllKKK999333/28}}}_eq؉چ~~~|||yyÿwwwǃxxxˁvvv{{{zzz᧱000'&&;?F#&*SXbuttgggfffGLTw~񏏏NMM鯯kró ~}}a`` :::DCCkjjoooOOO''']]]___𻺺&&&```ӆtttaaakkkccc笫UUUjjjnnnѿٷﮭuuu!, H*\Ȱ`wHŋwATǏ CIduYٯ˗0cʜJ:*ɳϟ!#rͣH*i@JzP^t^-ʵkWJX嵭۷[hnTnق˷_ѵK^k*^%]b03kV dS#b8;./ck iͻ7Wq'ڷ^m+<.ȣKWYkߎf#N|L^ॊ7Ͼ}KRgw7Yo3XEtt`FFSF+ftT?nOyG]ȋV$Qc[pZ%G!D,boL&350J!,a/kb`@H摃_S%7 o^,0=T3*er(4ELL30U)!RKj I5PlZAE S81V-)$#Rr,K֤x:;Gi@֨#y"^\$?%j|7q) O!R e)ON?yC$&euokVrU-o*b:ussǽd}bէI+$c2HYĢuۂ4 d7LsƳL$åpL5Cl(&p*'pۭ| 1)Io_[M6&Ui;[g4hm?WB%}SJQOIJ3^9!jkt;Q򤉧[- mExҡG$2[\Z-Ey(۔$C{ Ζ(HVRR.~A?"cJnmr;nC0Uȥ ׀"qP3pC.3U_V֚?L96b?H5eb@W6FkRb]iffi,(@CLg@ P3ƼK˞+GMT-=YǕ{g:jS{"iÚ,y!P-ݹ4Y̙Y%,jx0!Bt(\G `r6M%&2U`2 N=R+O[BA :,ɬ%TS(9K59_ {V>QG<Фt~Bd{TKѹx)*몠*90 *ȐPKZJ'pW0 hpy 0rۦYmۢ#ɻ> kiˊp +U+Xٽۼ;dQ{׋8 `q@ π A;k֋ V)2` X,RK˾׵׸ ػ=<RM}ҭm N}w-:~-mK|O,M%'[Mm- ^^nmík$rtS>.3[8]@~fEǑ>MWm-խyݠ]M?D”mo>}坽x^}M.^̮iH^Jpn )w~~ nN愎.䉎Nl."]~vnZ.._>觞dC nuZ0 P67:;_>B/PÐ HLLO g'$^^(^秩b?d_foi0X?Z/\s̅#!di?_ K_?x//|j nt^TN.MnOO}?NVo/qO/0$O'+! o1 a2@0?%_n_Ï2 c/  0?a2-dСࡃ!AF7@AG~)UdeJeΤ -Z8qe ,8@"E(3FxQʼn K@1 )$H0D%@(QB<|1cySNcrՙvfĉ/fcȑ%OdXeLi̹ϠCMӨS^ͺװc˞M{a۷q.a1R(!`1jH&Q:fo )PF*eTVjXft6þj6(Ŀb=B׵;?'_PJT]zTUVܱK !İ&`я^K'bXOf<5ZiU'겴VOKcMmzgb@`Ƙ p &YCeMSŗiA6JaOMk&K 7&Yy5Qg9}:W3SZt&ahf7: ֎e埻^Rh_'u[>1@;i]IXh=xMLYIvpl=/[@9շO'_hY_M_{s]:'^m_7IMo۞2 w+ 4@eo}AJ71 xމ0I$d& y= _(3=nk!vrCdwю;_(]m"'~ᩊ%%s(F!Qx5,c~< k4FϐT5q\"A$jQ"392GѣDhH-:RJ2g#7 ҃մcLGiRn1_S_TJQRL*,g$84X^Ҫ@*JէTRk(_L`gդD9GBҭ(=T0mF)U ׫m+W w%]\}Ʀ5Q^ϚTUe,*ҝN5og\jk8ʾv5]N~^2%b/: =aYWזuȕo®h*mgq>҂7ZĄaUWDJ/u;[ն (zk_T7-m˽E-[=k`ײmp,?FM MV0qs+*8%;\JX)x\[O2F1Ula59XOl\X]rdS#VE<CuaWHPm|f49jHsf8O J,T['{sg@ZЃ:5xizQ;ܡ.0A`S|"rPh8@xru`@P:(p#7r^W!sF@pIH 4!:0"6 B "(G()P\"~!х.o7k*:ћ]aV6 miS6 nqV7 oyַiOZ+^viWv7apNkw{w}8D8!܃ oqSG5NI9ItK\6zdYÖ9kpK|ya V;ۗ>r nx@?؀9 7 /5܃@ah(Ԫ̚l?>BCh9 @@8LЃ(Ȁp0/x@"E@p-ߣ;<ԗB6¿9+:s9'FRC 6V:p6k7ut;'ĿQr o:}<88\79PCw4AFUFT\AUGoȰNjs ȏSu,HQFRLHSIzFy| $ȗȘFv4HDh`m,džIGHsD;HHH.p!U^mhP+@RK}\L|C scUi0a 'Ȋ1TP7YRS6.iMפ_h% a;XHKH@i6@#"uX-X=XMX]XmX}XXXXXXXXX Y;PKɧ?&:&PKAAOEBPS/img/globalquery.gifGIF89av+++BBB666uuu###&&& ???+))}}WSSӀﯯ½~~~OOOБyyyƊ|||昘ֈ{{{vvvxxxʝȐލۡ㄄ooo___///lhhA>>wrr͍ 644LIIa]] 000```!!!PPPNNN@@@...zzzppp---sssjjj888555QQQ>>>rrrFFFUUU<<<;;;www^^^)))HHH:::(((]]]KKKWWW햕lll痖ŦZZZeee111AAA럞ddd\\\VVVEEEJJJfff444,,,LLLޛնtttنgggMMMkkk}||RRRqqq̬䤣999iii!,v98H*\ȰÇ#JHŋ3jx CIɓ(S\ɲ˗0cʜI͛3=.ɳϟ@ JѣH*]ʴӧPJʔ?jʵׯ`ÊKٳhӪ]˶۷p5p՟ܻx˷߿È+^ x]Ɛ#KLr\ǖ3k̹s㺞CM?̦S~4װc˞M۸s͛6U לȓ+_μУKNzs A^ËO^:vg콼??6Ͽbه߀%x%\ ,#ؙv,At `\Fa߉u4B\_`U``1khE\`@!y4@ Gea\x@G?yGl whHh!̱hAsr~a?Fs@z%Zk,F)mDɇF_fuhLfիVbb6Ǜ݁ψ~1q}Ǎb#m.rınrqāk[rfG\6O,~ h?vpB+ 9%l:' ]r нbZlΎ xKD9еxo4#e p8,`Re>> ,)LIrRTah^JPT24MMKnfiih3D U!T,u,[ T"Uτ,V*LqTt! Y#3ֳ3sKZCUu2o5WEW,wL^ŲW:=L`QW2-Kb7Y45ej6VdjTњ峜kL[Z6LfɲYt+݌lJ[VjZ,p!Lvr.cv;f^nf+b+T js0E/WkŽVkq_#ƿ`[Wp_,F6n0`) S0_86圯oI<`6i V_1R}OQ^X oE~W%Y2H~d99oDBeʑɲs.Ya^̕236k}3fTp5!xC.`gγcqgۖDŽ=58%L#By1x/˵+[+%.Z,ЛK5GZ7n9 tX'gp"{RD`Z9bR򇿚6Z}hGQdpk B,%:h!VK#}hQڮYfW*+:,H 7VJ{r,#ු: Njqku?aΎ-qtY逓, 0Nf'pj {s9q8V d<ZTr y$(wSv֖5 Iݲuzܐ=O7׊=6x+Y !4;v|p~Rsk(Kg|4"Wy-5B,]Mo}ѓuɽ 54{ܙ#1 V?YY,0# #p.sBh֧zf0P]7r_rnBFR{d}hfI{rT|cdFlge%lpG%$K^ hR7v1,y3y“&,mbbxUaew8j!>Xw`\ oEv~ <8h~Cwjb`[rqs1cn0joeQt/} RhhsWcakwdF"D3N(R`adY`RB^ZGeֵhNJf1W'{Tyk'%6h\c 728qߦ劘׈%x׶$,<#՗{b(oNW~w928"o(inIwJM6 (u+GrkxhChYegVoGoh~x3:'lSԸ{lmh~{'tZf'%2i,׎ϸSՑ2+R!3U2&f() f)hBcilyblv kw8k*a!vXfwz,# pT2~w $.8v7`Nhh6iVZmjt|j`$+$)py+B%W11'C!l7Zl[<2\|S2I'9kY!v{mRdɉ*,/m4= y@JL{ Em"MZ&0՝!&\}hԕ0 a-֔!r=Jtn@|;y׋!~]؆}Ҍ Ղ}7p؎ׁ؇Q]rm D ه!`ٞզن!-p٪ӶP 0ڤ-C `' 1@۰1CD`;pە @m6GP'`9 =ס}]I40 `0Ӧ H`=}}=0?p`5 {_@ HM$=@,^׭M.<E`(0,W 0Z0O _P ʠ f@ 弐p ݀ `N1&!`)-x= n>5<@.^phb HSpe@O_V%`AaU@X eNgkosNvz^9=A>``舮茮N閎njl+*^x{>8.^臞^闞꣎ўn~~>>~Nr.2߲.N^¾>yO.O~.NN~68|/$'_)I/_6U4Z#&O +KNNThqqOA_CF./OQm9;޾@?(H0o3o O^/S?>u/_/_?s?]oڿar/z?di>z X-dC%NXE5nG"Z„ G*H8~`F@@1  rM1Rh0L*O|bEI 3AqQ  DA$E (Ka` $"{P!Hy_"IDK2iĩOBESRZŪWbɚE[re}kرeϦWpɓ)W|sf͛9wthѣI6}ujիYvvlٳi׶}w.뺮k'_ >[1!29L=uҴ;; =Tp01+N/Ijl{쿚71}=2KRĬ;jh$! ׶jĭ7PXFzo#wUZp?OΚLO%7}oSZ2w=?S:'Su g%n'軭,wKm#[Um!sn<6nI^ @`@I N{b[Be%>.|[0W8z"B#h&Ra8GD"R B3 xÑ-rB0I @TP?R0@cdP?@ i`GiY&>f4P.,uxD*4tx D!-oQyp %t0"ј'F 8&# ]HX&ʑ tA@ЌKHE`cP.H%C c,s"cM|BAȀ" \p JP 8  %:AN`&8 HF'Wg+_1׶qn{+ A ̓fA }з˵((:Pn^T+M8*#n&[PHduvGK-jmTKKC:k4Ri;f6NeTiIŪVΫjXV㉮g+^*=QU+}֪Nԯ^`X6C,V1algo/9 z|W-Xj֢g+T,kC"ke wζ-nuEmm+RWHPe\ JnKԨj[]~x2x{ӹjb=Ri^ױ*@ЏPxJƗuU#ʙʍhQ^ uLJ G51b+m@+l>q{O᫪uFBPvu%6mclKf)>d$f[{$rnq''X2/̽+..r d@mk|<˕.hE ]~'G<2VUtAGsxLjzIvA96?"#T7XjX{!"āb:BӮ0x @A3xP l`j[$ ;PK2 PKAAOEBPS/img/roquicks6.gif})GIF89a pppYYYPPPNNNVVV,,,RRR///mmm(((***sss $$$lll:::dddTTTIII"""iiiDDD===L߇|}3@@@Ͽfff>>???Mltǃyyywww~~~|||{{{}}}Ćxxx݂́zzzvvv000&6:NMMgggutt'&&¾𲲲sﳳY```?~}}F___a``..9چ_RDCCkjj]]& 9QW&&&}Vz0CH`lm,C^e'''(+^^^iMN󗖖\\\bbbLLLttt󬫫333AAABBB؞uuuf!, H*\ȰÇ#JHŋ3jȱǏ CIɓ(S\ɲ˗0EA&9æM41 JG45zХ i4NXjݚ5i3HǵٳhKz]8ㅤ/hᶠa 5xWo ,ÇgZ̸e#Fځkk+6h^u.EU@r C/Y;u*R̘߶Nȓ/Ôq#,0R$A.g\^_X6Wށ^|qxIKQ#fK1hȜ-r,6aHF?A0 bXAﭗ@Vp"D(&Gp h8&׌-@LYfV\Tݐ@YMJ hk`hSy8QOk/vYa̘d9f3 aQA"y Eb?J6UURy?%egRriɥŸ-v袌&h3 SGi$HrB3@k}'mI(n,cKrKbj)ʨ$R'3j 22kt)f:/pp+TbN-:r4+%T9m*U{gGaGR?a/AN+rЫƭڱ̟+xJiRa#*oČqq1,i=/O+qrG'FgLP̌pg 썅)-I#4q`FJ=pr`mwVZt! exvq(!G.WngW0Tp*0-Aъ?R\n>e2;c8qFz5͊<\o]w!c觯/zC:+q>q-ޠ0 HZp7[gx)DqXZ΁8VTb`@(0pZ+p&~@ HD ~ aGnB#q*p8}8G+ 9AjQ 3 χТT:xnN4[F\Ah)] 0f b8ZЊ_]+p8>,Ap8Cf񕰌eG c %rjbds1i$c&H}XVN\1]LDSփ1BL':iYK 0G8PJ:dd2K,l[fߺEms`3XN  )a?PF7ZGv d&Ud(qPz9)qR`0.[ǖ52pGN0)E7}pPG?Z.m‡:h\\g4{afh[) PJF@C7q25`6;pGe?>– ,D(d[HC03a>FpJfA\_9z沗 hA'8A%"ȄE(&D(|Єtaȶg/iQ9J8uW/W`$i#Fx@t(p =` !.-e;}s]cj65Ujo[6  dnG(b #΀itw'apjF#qF0C(1 =\ e 8a}H[8 pb /l>{Ү/Njlkv]n'O[5pb`\f_8ڛL1Ͻw>!d➖{\wozyn@\,`x+3|'_g~BuSX:׽WL?"8Xx 1 ;P|wgVmWjٶqq{r~Grw}}wxx'~GyyyG~7zgz7gcz wvd0DXFxHJL؄N9qw36w̗q|yq|'r xGxgߗz~G`Wv2O؄Qggͷxǁg}}}'~ׂ'Wb|aB888(omgXhmxw}_(Xއᧉ,h~/~8rH7xw׃׊X8xRvH}b8h̘l2(5H8ǃ獮(?H LhXt8}a(cHemp~hhzȊT~ 04Y6y8:9I (cɧH؅ !8dhg،(%IsXuH{0 8NdYfyheyCihqYI(Ixh8nxՈ[),1t9Yy): CvtɎ׈OiT)$&Z8-٘N: #'qgi\yNɑPy U9֘\ &)&Al>5؎yva ɟJ pİ  :ظȍLhYmim89Xn2:4Jmx١ل" $&ʞyUFs)XJ3}Bz*^钌I#%?ͦG霦2#P8ڕ١o>C^ `6}ZbڙdifڜKɦpzr<ʥ:pꩠ wz>y5Zꢉ+aVɡc $I!YzWMz}A٣x:!  $Щ'! {HbJȪPz^zzi*>z:60z!J/Y1,Zy :j : 亄?˱@zʭ qHX+[.0;6z7`6.*[EZ;70۳@nk!u ʬ[ ];I%@alPhH9Zqzjj^ڷ !_i[_ZkZG˲ 1o)o(ڢ3e{g; {0  jv;x{z?I:X)-5@p0(_kK j L A;滛+뻒 1 a4йۼH w;1  ]7Z\>)¥Pl@d)o"g:!Wj8Y3^,O* kúƽpn!*TKQIJǴI*z_a {`9~[a,X: Z^J$z<>3,L ú:[>+ϛJϏJÓp{/nZ麯 ‘ b4]ٺl8- @!+fY 3'\ M!M%dur']q]C2b-̋AͤuQަ"~]\\ --h0ڥ]rdpq\|˻<.Ѷ>mω|߱:_NQ NC)5.aPlQ݂|%lUn)L~` !.L̨q#n>\Q0 2(3!A(~)'_p^Է>$ ]!N}Io?` A4 @?Z?\/oD񇾞! h)jB=[G~Þ+ Lo-O aFHv:{_b* 1` d _呟?| P@ Pد -?_/'~'yWy-yye @J`"I)V`bH->E5nG!I)K1_!M8COA%ZQI.e)P &d0r1bW.wH B BH[EHRݓ,¤͝ jZdtc9`E\X1 0RPqD̈)d%4l8Q/&RUk㮑-[`… FX1{W߾6)`KXy]N|9ΟC.}:֯cϮ};ʱ2b-"<.@,Gg|E< A2CS20ӌ3@4PS5`6pm}#+a"NSk*B [®"ФTzJ$Ģ,D߃Qѿy ,HKK9{:1GʼK3Sgrs(4Rtdpo|#rOKOJ12ý6dP'L1-tX4uѾӑU<3K>TBmװtVܔXv#3VNu3Tg,UZ;Tl_mIA}+\^%,stBuK]zd8I Sss%PFJXŅk‡#٦eSfZ:OsH~[EMeT^٤z9Řoz=7e9Mv}5zmc j-VEsetWD.oyMڽUxmmad/rsŪ[1x-yl{7Zߏ񤻍<(ūr.0s6_s޹nXgZ^ߒ]]rr>w)uwAg8QŗGyY+zivqOW{æ7c-_;\>n}[lB?%K)nx1K"G)pÌ79kD4_qg+I(">KRl I K(*+aܧDeHK/!ͷFbT(=SPB4&-EHHO~P)BQvE#Ӟk4(PuYM^m3(Yǥ)TUSNNӥl( QիbXFeǬYB4[Ό>\А25o^WSUdQ9*W}:C)ӧ:LR Kj41ݪQ YBR7mmm{mo}[U6jRtB%Q[{עL*y? fw$(qtCe]M7%1`o{^W|Eؒz7=UnPwi^>T/1 |`3wIVsY]6j;ظ)?-;=SaGj31^\\ixۛA r$'YIv@(G9Ġ21xqe^D@[3 1>l|QB1?fXb;FZ B/!A2%5 H< g%R̀54C(FD\ e 8yC"017e>ًN̔y{ {=B:ыn#=J_:ӛC=R:իnc=Z:ڬi\E۩-\⪢֥-hBъf!-iJ[Ӛ洧A-jRժfa-kZ%lyQ"m)h"m6.ra ba E,R^"՜\6os;\w6£pj;6Ż}qpk|77=r7r s]7O, ~ @GT-Lx~05brX驐^sy+V ~:7Vnmg{ܶ3.niT?-ExdWS:G+5BE?o`ĀvG`[%}MӪ[W.mWؖ+m{Cn] B>X](;@\Kƒ\ȅ5k9X)+ SI=ss=;ك5?p37?۽ w>y+ Ql4 ȅ/>'̾>~Ѕ6S># d֋?=KA#5^x={;*:^<l]8 4CDQ@K`BgFkX3g/0 92"|Qc= ;أKsC< :?Եy"I3 Sxz/aƖ94)9ZEdclt9j\7R4?S,-A+ZE3lC4x5XFh4 M9؇:(7(9@J`QgSvn(I8%0zfZb5\<PȳPh(M $ef: H iދ@p؈  Ag ;PKg0)})PKAAOEBPS/img/writethruquick.gifqGIF89a a``WWW)))'&& lllhhhuttPPP///333YYY,,,bbcLLL$$$|}3s怀>>???&6:yyywwwȆÈ}}}~~~ǁzzzxxx{{{vvv@@@L000gggNMMMlt²ooo~}}___OOO}:::<<<999pppDCC`C^errs0CHkjj9QW666(+rrrVzfffnnnsssIII\\\qqqjjjkkki..ӝ|||FFFĞOOP3;=_Ruuuf!, H*\ȰÇ#JHŋ3jȱǏ C~Alc$ 0cʜIbIH㏅F"`qYѣHA{9gǡIJJUҦXb ,R L )W,D *cƨqiջ Y;*pXL8+Ɣ/^W'1]E%A[-P| vlEM-u)~<V߿,ǻ {D¢m0ɕ_d8?j >d>S_LgO7~w"l?aaP$Z(ԁY { Ռܧnx%$'U 蚀WmŠN'LH`h+Z5H!F[@)$}b2Q$V /EBZ8ޓH;N$@3 `2%iW@%+!'(@2fbYVna*藳`HX8 %*ievh tmQXj) b|` d50 bh?$7 D{g9-4} @@ɲ׀?T+w-0,l',LRl@MϮ\Ϯрži< o1pv 51oXL1oNr7g-DmH'L7ARh>\bp@?Xpu 5̮oXOŠmAЬ;7v[|fvmW MWngNHE}ھ̅ 8wlvU_Ͻc-v_wg:}kgQhzo1*\룉 _lL&o[|~ϷxQB08Z8[৉lb Y@Am$eG3^] yC}lp`P8>`oAqeȑ C@>OvS 6yωE9QHaMz&>[҅6Uk(^ϰ GvDݪu9v oj-e@U8ʠ AFfT#M!ߘ$P t*[3Y t[fvB M"tl2+GZ¬[1QwL>AMr g(BJPa NP9AQ-9Y {v 9so4=sWgY=Հjal@w^ Z͊Q(gRs:!'@q.뤂E7`@ъ6*@( @P53.M7a*Ӧ^1GCS69\UCjQ@xSh$S֥A&RiUpլ FP5ȡր6V0n>x!d['k$T)]Uꕯ&P(3?g3ZڏvMimcʛ&:.꤫uFwwxO]it7rYŖmi^;t{dtygGOқ x|_}Y'փ}x4qp|>xm=ԚW:.oDЏOOGQO|~y]s/:#v/:ŝ|p*v>U}>io-u'~'v ws wv;qls'tg|tvWnASGugu{#Fr7Z0084X68:PA>x@B(Www|R8TXVxX8 7@$k&{yF{*8phjl؆niXM[ps|#wz%kZ7~fS0wLN؁%҇!zUo`{WZRuHɇzn|[F؉'Xxd6؈tyvȘʸ،Gb}h{Z INJ8X(&7G1x^`YaPyrnԸu8{y3rǐq9onYYiQax| ~8Ȓ8a)3I5 #9n%|PTYV)n+Y4(pdYR( LiIX4n'yYn[9-F2ّJ6i"8onq$?]C_/i1ɑ4i 萄pٓ\yEz)}N)$<)* v9f荲HɖQy94]_ aiY 9My iIϹ\鉤xGR)u4љӹeiٝk);) d#A &sF钅HɗȝjxR9@ p fyP@ @ZЙIcy@` *SУV j99$!d0&`RJ'a@Wz'ХQ@8Id^ V_9%r@ P `@*@$P z#wJ&i艛-;$ڥ_] sJz*yʤO9jiQꥊbZ"^z@rnZ*1Bzpz0`ꚫ^ZJOȌǨ`[l.`1 ޸ u08ݪgt{ٍθ Š1 pȸ A -yi}ʓ؎)F` ` @.0Y@(̩xu, yЎY뎝f+ɳ:?A&xWʨ@Zhz_% 5 z$ J PQ*@z@+:O }0g+ʻۼ -a P zP [ Sb ztb[j  ,5<+K֋˽ K狾X} o𾔹n|W Yh fY-byDLJ"k aK]PØQ; %` *@ [,4Y* #Z^ q"˭yW9:& Qq= -̓ ѪN̺ pʿǚȱ׈0)p\:PKʺ -6K _ *D[h`̈ M0ƼkP߸Ǝ.nG] prЬ$)ǣl`Yi m  $P$ hطȺȂ*`説ZˬtTnjǛШpǕ0A0|^P_Pj*| ݵԜz%+ԑںJa,P,i|4klm\+i;Zj]zC* n0\Ğmgm ]9ʡ%Gҹ\ _{Q<]0ڡ鵤AHN˼'@ס׎ݗ:}`(J=mݤȤ(Šӡ⽙HΦ΍/~RoXX> -ݽf:.U\SW<):YЍ}^1n>!BNC*VJOL/"Opd߯ @_nFW=?UA7U/-g --m+nz_/zn'H?}Nmo~:_o.a;rk]@q 6aXn ث{"4vE$n£EBMXʼn%6#G#$YI)Udr19nWM9u" ,qćI0!RƏ#M(!+VT$(Cf1C>wy3h!0$Rѣ0SF(͢?hJHsP>bqc "T!DEc(cȖUf}4yΦ]OBESRZŪWbɚE[rū_ FcȒ)[< >8}ҰAl]}~ϴ߿M܂ZڪZ⚫ګ["2;3>k5rQ%? g P7{;8k89 P:;+;[<7K3Bq4aqG6Q!DN*t6BNOZ4OL4m6;Ms:w+7[8P9 : :;KQ< Je4Ӌ4SO] TDUR3$lI@cZD4,KH DV4ecbYz]i~jD=YeOXV*EyQ`]2/}7ٍ^MV&}4Gۀn[Y܅\v-=ݳ~{{]'X6m#SV(E2qX)8?}?@/l[0լ\ 5%vlRX!lR- nuϋ ꡭFI BRؤW J+,؊bqK- jb1H]eIMz NiPp@(PF<݉Or"8(:Cda`hX5b*' +Hӈd+"oz& 3x$OIKscy|@@Y`џmM$N6Mmquֺv6lǖrLk!iJL%t@P׸dr[HdKYD~65&e$ WN%oY{^"HϳRD?ݪȅ! C_ ;Ԁ-@P#<l| Yb {P N@ c3qm|cX;q}calEJdjk=1vAܢPD!d,gY[Mz 8)?:A VVlVpYss|g8C3897 7$$77777777777777777777777777777777777777777777777777  }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyzw!1AQaq"2B #3Rbr $4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyzD ?@=&KM2FcChjWΚz_o5jHUPq:[t6FK5(tȕ9'%+gL' QݳEPdv*Z EfV{39P7i&\] iH;rҔ> %'h"PF:O}Vjw*ͩX۹InFC8u"FY/r M[Oeb^XQ)-RM2dA*ӹ%#Ա'$)FRv*mio}u!Ւ+'iDq9]U8SSٙ8MnUD@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@FF>e1@{i +C<i ;q؎?ԧi)^fyKVK >HH-q+{M<{>zYh"L{moPofFV0Km}tD;8F)]#V[7VsP@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@M9ox: rh/"Pa."wTzxl\2aY*yKA^.%6\w_нԣ$sڟv'MhcN¶k} %QG+=x5lsmU_vfmuM?Gҭ[iFHw<>TѵLl%5Vk,xDEn-Va!! )**2*]Jᾜ:K.Rd9uH'A7 ֫Vb(iã `ҥPvK2WタrY_:fYo)F0nJc6JS*PJ17BG W֒5>98"byH_tW?q&+ߘy9(Erc^(P&3aFmԾ.M#gG,}x%iYP@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@ #c>Nb@ݏf榝Ø;ONbt5}"+IwMwEU\{=˹n!) 2D-̭ʹߓhO쫲05zdEQd̘W91*`ɹ?/zAs/"&ϣt9qR*m6+nQXxcwt$!]b;5 Ic@[]8Ƞ4d3-I]jGM,fRܡ<` 0~dzҀwfP4K1tIVH`*Gb=h+BL{-mg".NX2H;Uխѧ_[@oo(sdP4'4Hu1KXGn VA.H H#ig#P ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (Ey_]?(ܐں,7"2@d񵝖yV:MY>urGz|M2hjw]xekF *OSҀ:}V=GTkEە \٬\7gĚqw{uڼi֝}0Z@m@"xcԵEkKƬPp' ٭ ω![{[)mB ۃ$'Iwހ!յWBy/_H6%yif{8$O@ @th~2xS]WM^4WYX;jG8$3Ǹ 5ozmƙ}r22n1_'K}‘ϔR(7du'9|\ؼ/iZpY"rgeR͒Ҁ4=}ukebLcxl.F r2zdh~ 7unIM˗`(q2x9xgk~7M(_Lcw\=GK`[^_ `OrӴJ=>mʽ9=}@%Zi]Z>]=f >m8@N rx@/[bH̑ 8Rܐz9,xⶵe3m I P$M+n@A/ɤZɭE :颇FI8^8g|Kf8 ÏA@jگ9cv-'I2H$c/Kh:m!Hm݇b9Ϧ(?L40~# Bh6o)))Q;Y_/O~!t9$o-ǽt%/t ڗpyR$prxj_*ß /<5{OW1f)9}܀2p09fx3)[{+ n x, `2@GEsR|"|[X]z¶"ض;Lx%T#n(sßk~(|C 鵊8;AW,>yt>wu+6$VW d9ɠ _ | ;ڷ|S`-nV1"8gvI:s;P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@(1@ @( (9(8hzPmn(;p}h@@ g=h㎔mm E.@ޜMPm4n==BҀ ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (8 5yfE6&]nZp 2p=Idv9u# HZU A!'=ѺoC@؋ #VQ V8:N'n=Z[jMA#0H<CӮ 2sN07g8_2$93K[p@˲n7amq|ݪEh"tݸVt\\$ inL$s/@5:Iag"YFѲF܂dpy4SR x$ yyn0kgn-vF͉ &[0#Q) =E6b܅y |1*2A h,cC)+/St9ShVڣ" ]P8Xxʰpm3ieNT>aMY+*>HyFy7ԊD״$h]b(/g c޸=ea{wA@۸mۇ>l9c/IaF)\n2@ 9 ԭ$"3J6pϡ 󟡠 Kϵhdr KS$bbG0lv-ಌ" %I'ڈ`lqsk ]pV$FB=A b@ OT{m(Y$+O/F0bX灎@oN@ /n-nIX0H6pq݌dKOmdI$lF>a OEg.%و$nk$9EMj."ʶ҈ap cs<} -9)ȅĤ8`gv1硠Kk=⸍ƱyFwcN0 ~%g@$q%<u44[e݈$2|ps@[Y&&wRA,m$asZHWtIS@%:iLo 9;$ ':( Fu#(  @CzNo)|MJ?\&9pF}A4y-՝ X\;enj,qOIm].TpJ>l2APG\*b^7_0S#W=F3@R.,-|ՅwxUAR FA g .dH#**2T# 9,P_oL7,4l﵀8>+[΋vmM1Ժ!1 )]zZPA #h$s1n[ % ɶ1 J$ :Ꮤ.Ϙ88 qjTv2n*ñuUX`x>Ec(]dᑀG'3@mXO6ȨݍA9r"߳e)KWr6ߜe+ -we0 L#leC,$$(i(2AWG]H$(^nav~ n72nI8I!3yA#cBW$ `톟ќ?(luwl$,:m$t[\Y'19,ޤ4 xUXx͍x\`tGKeE)A* )b[}"女S"6رb$w=8Pnna o{.Mہ灼NH@.Ic7,ЛdBV܈w.ĐE#t>l#YU-|0g@mm嵭 EDwmPxopķ9 : nvh|0Eg@Qߟ2ٷsOj&$Cpgn9O/VL.a>^?H\qgGc젒;v@bcdPμdJsp2Fޭ#M1,I I*H_Ip8@|1kZ Zt`d js^oY qm+k9} 1/+ĘI'QYܵ[Cp+P+~99W=[9q r2Oz-혷w…@O O4M]QوPf_84< 8ے@9zpd\m7{lYȍb5ȎHNTeDaDB=3..7./az7wTӛ⺎;KhK8;[pQ@ DTm-Ҭ7qr +8l'l%`m"9K[Q gI$zK)#^H1d=x碕; PTZ5O!#;a,bD{f8?{' >6ַQK[͘Tm8l'G[8,MUi퓹x3u."Uu`gʒg `7qOl_nv&xlnsF"l-Rp'Ee+M'CCyKGgVl[U 8qb,`&iq y9wdS9F2' )<;2ed dz3@:]m Rv)c< o}@7 o}@7 o}@7 o}@7 o}h1Gn((>:'#@ @ =hc@ \Pgi8Ntx&qcnP N('nqҀ@7P n8w(q@7P n8w(q@7P n8w(q@7P n8w(q@7P n8 -??*O*?濕L@ E<}Ƞ4?Ph?Ƞ@`1"}(-}xG| >o<#e@m?P[(-}xG| >o<#e@m?P[(-}xG| >o<#e@m?P[(-}xG| >o<#e@m?P[(-}xG| >o<#e@m?P[(-}xG| >o<#e@m?P[(-}xG| >o<#e@m?P[(-}xG| >o<#e@m?P[(-}xG| >o<#e@m?P[(-}xG| >o<#e@m?P[(-}xG| >o<#e@m?P[(-}xG| >o<#K@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@PҀ4P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@ (h=(;LbG(C117/PO€ M?2~Kbo_̟~d('@&?% 17/PO€ M?2~Kbo_̟~d('@&?% 17/PO€ M?2~Kbo_̟~d('@&?% 17/PO€ M?2~Kbo_̟~d('@&?% 17/PO€ M?2~Kbo_̟~d('@&?% 17/PO€ M?2~Kbo_̟~d('@&?% 17/PO€ M?2~Kbo_̟~d('@&?% 17/PO€ M?2~Kbo_̟~d('@&?% 17/PO€ M?2~Kbo_̟~d('@&?% 17/PO€ M?2~Kbo_̟~d('@&?% 17/PO€ M?2~Kbo_̟~d('@&?% 17/PO€ M?2~Kbo_̟~d('@&?% 17/PO€ M?2~KԘx_,'}Rr@F3@)8MͨP@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@$Ϳ( RH1"<=[m/R}(T?P?ؠPx@ڠbA=j{}>}(T?P?ؠPx@ڠbA=j{}>}(T?P?ؠPx@ڠbA=j{}>}(T?P?ؠPx@ڠbA=j{}>}(T?P?ؠPx@ڠbA=j{}>}(T?P?ؠPx@ڠbA=j{}>}(T?P?ؠPx@ڠbA=j{}>}(T?P?ؠPx@ڠbA=j{}>}(T?P?ؠPx@ڠbA=j{}>}(T?P?ؠPx@ڠbA=j{}>}(T?P?ؠPx@ڠbA=j{}>}(T?P?ؠPx@ڠbA=j{}>}(Rxd`*30v~\ 'H@owۧECr8'q'&i'QrYEswCw>>FCs}@s}@F }7?4nhѠs}@F }7?4nhѠs}@F }7?4nhѠs}@F }7?4nhѠs}@F }7?4nhѠs}@F }7?4nhѠs}@F }7?4nhѠs}@F }7?4nhѠs}@F }7?4nhѠs}@F }7?4nhѠs}@F }7?4nhѠs}@F }7?4nhߝ6Fo"\8F70Q‚zڀ9x%'(}@ }3Ҁ`;v= <@5}_J,~۫_CeopghSsǵ^q@@G cĺ>}WF NCf'o1U8׮:kWӼ;jfIܰQH@,nm->̖1,>܌P,dP#JuiSW/`Ǚ}PÕBŏ]Aw4"L~0څN~gQǯ4X[Z}1,IT X?@XϠe|3þ#W}]9L,6L8a@G<bڀ9q !5CzNv{g4#)ހ+^[i}ܛ-iepU'$( WӼECWhw&\ኞOjh1<PM}KRK2K`hcdrOBhOk: "m:9uٵCǃnh^7֡im^RkEc*=I'7yj&g(ks*($鞴asmi֒y1,I 8#Awt]R[A|񹂎Ԏ^z>%ߗ4q'1Cy;w 7VڕmK4Oap@A,ycg3@NqӨ>ݞe-v $Tz@z+[ֲ.nTr#`~ _Tyc~~macϲ2,'q%##? /> &X%ffo*6}yb0}MZSxGA4*'O[*Lp@ l{3|MI߷jO5(\w4]{ڷ+HP \rIhҾ'O}m^N8A9 HF;ݏz |;6w[X[B<נHe,<}30Gt{UYnmZD `w'jV-'|I,?u7mI5/tM@'wQux3ŖxV:4̱_x˓- ؀yuN_){ۋ-2V 2I(y$w*n~&uqi62iC$n@ W^|!%cuQiPh|g|VeZc6^C=H >#)M4Y r"e ڊ=R7"5{;9:" 3tpTzPix[ןe۷m@+_[:1F0%r~Qwi>k@Qbd$5ْls d}x?S֠l>_YOǤaoO, q'R> &xzZrB$V'HZ=cp5unmJ3[!=N=?MS^ť=mZ຺HHnYezMY<=hdj6Hsq]>wt:iZDJH\p9Qz isje(խFq$Epv1T s@A\]k"0_Zo}c[qP qsK-ƪ}r_ 13-gjaH$.7q<>$x+vD.qûEd3*&W'w=P=g|6u+.-kL[ۛv1ڍ(xkggScoiMn0m6mp9ހ6m5 |p<7&} < 9@*?^MKZӗOExR}qU%UiVWS[o, ba،j1@(b P1@(b P7c ʀ"?SZ@JOjO.5J?3}ӟ=W|9xbWO6W=@8 b?x%M"<ـO3n?@zj:RYISqw9 7 tW~oq4" ϿO 焼GkX_jr[oڳC ǽvփxIK-Ť z%Ꮓ𦰺]\]ŢkC ҷuZT!{2^ ٧Ɍʃ߇-~aibԵ$-C)K` MmiҴ_x{%ڬ߸~rnIԟZͷMmJ ^䵤Rdc@~ ,|wx)N}Hٗ  {E} #OO$"C?v;G4}"Ŧm".5 xWo u BE q3 %y㹠 /hy7d<ͻ1|^[9-|EjڍV7K!(41y=Z#ޑ_%X9{+K2 V'%q<=t~'՟<9uyD}35p\mhaFm zҀ#o-p7K;\*pL\Px{WIuE5O)n5 9㏲) C\Q|8O[-dFJ;ѵoce%ɉn9#B3m [2%S]}I$&Р w MGfַWڛ^iEEn#rO~9 z>y2\IrffvOaC{@D#h{Q-ue`e8Apy4v~-އ$Z06aATv {o=q.oMΉ`Λ5G@\ml9@\t :e=ԓSfe*‚d=I@y;ŲOt/smj"*C9t# _T>M#Z`ԠӵgG9ˉճ!Ix0~Əsz&Ony/?צ:d)$n2`(x&Tah-d=;z|KG5Xj6c*TC8#ӹy/h7irҫ.q뻁ϰ4ujp0MѦfY5+0b cO[дi3izi0!8 P#ៃ𮮺wW7qhP"}שɠ3d|[մ;Gt2FFd:zU5GkfQ.QdVV(? Jɼ)n/p.ncqP ~j^K~f䵵;O\'Ц=]-5> eU í'þ*ޡ5͸\$|l($OރxJLmVoH AxW'|#c]cɿ;qTKWQo$kF0Aq'JS. 3qCᶏh=]OƱY#@ c@j f\˞h[z^YS0[M|=:XdYT&Oх lS^굼FŎnL v2zFeI [YVŶ760}ŕ̪w\pKs3@4Yj_ddξo4+~^xMkvz3^3积@FGVR9.V ]ޙ@P@P@P@P@P@P@P@P@P@P@P@q@K?hr^H\XzBYU*;8 7.I6GYg(GbNTR2sY:rgnwF-UzOB+k2D R$8Rs5x#y f }3n{;Vu['݀|,H'<r/CiO]kW% sՇ~>\ޙ~ӣi!Rt}a|Sg ;SfNoo4qv1 IyBwG_ٱG>|ڧiv~h~_o\0Pͻc1-ݎ8:j( ( (9e_k[k< nvAz5c*Ph*tdYsP4_]i MwyL˺{#b*:]#VuR×sEk&E=͹J. T)c85F%_+P.&}j5ݫ4L!&] p~Ӏ@4| t55 ?Rkϝtb[zPg$6s" 1b *;yrOL=W᷉tƎWX$Ѥ(*dʕ n9a/=NT]#A&Ѵy,9e0P H _ Ѵmw[[5qm ~+3Izhz yMdVV7z^kHr9ANEvNO:bRnSa%,2 8'wT6k@()Nͨ5[e?>"9Y,:sz*˙Pg_.0Ș#dzg~~z2kiefRQY*zaᘬo"{Mu*r9GwPqPL,tkTH{OCV̑O=@[2G3==9n8cU;s$|?#CV̑O=@[2G3==9n8cU;s$|?#CV̑O=@[2G3==9n8cU&HdO=@*qk~p d.>`$>qdg2G}F IFzIR~Ͼ;?_QIxO=Kq"q' c['>O ?6%L,Ͼ;?#0đ3,;?#RgF1(>[Ig H>VgG}F8>3,Ͼ;?#0đf}Q$3Onq$|gY|w~G`+p3#?>[Ig H>VgG}F8>3,Ͼ;?#0đf}Q$3Onq$|gY|w~G`+p3#?>[Ig H>VgG}F8>3,Ͼ;?#0đf}Q$3Onq$|gY|w~G`+p3#?>[Ig H>VgG}F8>3,Ͼ;?#0đf}Q$3Onq$|gY|w~G`+p3#?>[Ig H>VgG}F8>3,Ͼ;?#0đf}Q$3Onq$|gY|w~G`+p3#?>[Ig H>VgG}F8>3,Ͼ;?#0đf}Q$u}F+X,PaoҀ,\9|==9.Ș=vG__DfH\~;cT!CI3==@K DdzgDDzg1rL'9=@R&H{dc{@ۗ##=ǧ [#=3N@Ktsgz [ۺHzg %˙#t@=@K2&_ݷzPrvT ,O1pvH\=/ېV ǡqH\=9$}9_zI6r ('s_ҀZ=hր+^]]>ȓ!KIUbHFI$h x .NS\6yk K1wT-WTdN0LT1T5I`'ĞCyY Q"쑹g |u Z]ɬO3(Q8N0ʳppAKi6 ghU.*ƲSsk:-/j۾5xK~GHt&Q,\Kд?:pm$ |a\2j춊/Qܐ4IYjBm{n7ÿ>y@$kV6֭[IJH܌2 XրZ:h 2"6[3PxqmoC[ңSK{I| ) Q~VG|KȐڽְEq*FI&3|ÌsWn?![-|n#Uiwcrʐx &9dDydj(=N`OA64b}R$i*A2d y;uam&PN,缃>mSIӹA>nKa(8f)]'u'jJ.%Sjvqq+C m:Em3 r&;G35&u ` WQ.%SjI%ԍ yp2sǵIvj j[pN8hzat-/5;K{ɖeG$slҀ)N݆,Z@K+JVl0>n=sI-Rss򏕺}8t;^Mmn%Y0Ύ~l`oӽmi".Nі'qހ \!B]N?웦Q鞣Pea$ ,"kc܀md ('9I`$me#9$[$X㌺`[$;{PvQR-FҾ!,]p183B[7։|RˁF 6w9BĺN; RI$J; Ck#i>|d2nMWNRL;|v*]y&rFGҀ+M^OXGjYPJ(Y:$(CAВhxDGF@.IƒXvSmsI',FBn!f@g7\IV[ou =N>mSӹAߧ8 e`D Ψλlawe@C|wnx8;@$ޘ4Hu/aL4.'o)68I-g#D#=%T{dkenX#4KvjΒ81>` Rr ~+obŭݥ1J̨偒ᄊ$m ˤZ˦Ia5^8D˻sH%c9]AրZ=hhmր.@SjZ( ;J㏆/ׇk:-e!fW% #`t>?sVxJwX柢8?H*9!1 ^xLF4s[I#PCqobF6 MB@`t-0R9PvBf|)4=4h47vfݻ(\'@P@UM'L"B0![IZ];©3<1Cn w0SnKoy&ueeIsaqS)"*\Bn;@9ZHm-xtJ8]G$7d3;(z/ 7hۿIqO[qul* 2-8fыAT-?YѼ8VR vvB#;Wi\.~P@h=6YBL4 dvω7[qnP,-Tkhoe^4f8TbI$#Pn{)ozC=v}f2 *Hg-Pַ?uLTeh?K"U*Ym@2=qO^[ pDmg 2@ v?_&U.- hכ#HsZz6ʚVS"$ZEڷbxUq ?!p@K cI/m滂 tk?iFL9ڪB^y&am9&Zjjq!Ub '0XeNomgj k-Hϥ5CkX3l bq'i^w@7f4𥞝coE{Eqު$ (%3 @1}OcF31PuvRH*rk{#J~ū8=rh}/,MekfH%!d,HiAGJ]X!յCOk{hV=ḥ.He(,a߆ /-"GAC GDZ PwŗV[V;s'hG[bU!NpZ^zu}o%+X!&H7Ƿvw*Uv0-@ [J[XȿX8f7K& `c״rl",P~wm Wd&C 2V[ͲODLW$a6`r<.{ GҠ@hנ~o< #*3n;:PikVzq$%FF$((\3(2 Cw_J/x/#PS󮈚Dw(NֈlkNdhةm!rwX?-[ö^%mr(rI)Sᢠ?:ډ?[=rNN@4O-ŝWWͳȹov\BS1$ P ?0z8fAb73TE`@輀@P@P@jdzia TP@Pzq׵eϧI'u%h0Z\@t 16~hմio6$ꏹq\|˃3pCOg]sij/M.BLCn~hb-Q^e+XR5Ņ ##PꠁˌM2/Ú&c`Gs 89Os?ʀ ( ("mր.P@S?dkڀ#q ԯ} d8Gg>3lY?u@, { BGc6d9?d8gge}O@L[ _o@d}~ _o ]tPJq ?/~\YigN3㯩L.yN:rC# [ItϿǾ+qo'6_` -8}_Q?!}}OL2>!8}~cѤ8ϿǾ-hap# [@;g23y8 =u~VAC篿=d?{ q~ Ҹ$CןϿ| -+|![G| 6TqϿ|~ZY'wy}Q8FѤ t{g#3ԩ>߯ 3!y~pGFTz~ du݋i? ~cE-<=QqB9?pdżg{id={=}OQw;g{2`t_o{ Cu #~P.>￿| o/~AQ?1[Izm2ȹżߨd}B{;w ݋y~>C#[Ig28!y?12-=~cdu$y8 Qp4G+}_#}\ZY?g~cidG{L3i8W?8Y'g\Y8uG,?g~Ay3}Q <ߨegC_o{23!{=dG= q|Y8uG, [ߜ=ZG:>Q}zq "Y?u@, { Cyq}CK!<8%Aw_odq ;} \}Aw>l|{L S#2YϺǿ}F@LyA>}dG#bA=WG '>'n}Cq ;} d8Gg>3lY?u@, { Ci>/}$|^sor (P(v1ڀj:c8:PtG*$m0zOڀ2Lv(z%ݥjvmsu ʄW9#8 1`q +k( lWc]}}3@&+XyH`Y܅I=EciGwcuͳdH 88 €,8^?J:cv1ڀAڀ*ii|q'(srOMK"+L# @20Rpڬq{Pn(q 5ȆtUwL ; }H>BKۘmXUb}ڀ,g9s}3=#- ̻F\ @g<1+{?@ s@VmT2pH?Q@p8x^vgUWdbB:Jshs@ 2GN&@\@ xm cT2H\AG9z~r:~'@ y# \q&xs#n3~@ =ϭHlǹր GS@s ݺOo,sE*+Ԏ#(L8sߏlW'sހ sdqsu>\-mu١ !}(|;)^XDwJQ`qs@s@4s@4s@oz[:ym-t;P@Lc1t;P@p;=h2_hڒk6_Tp.Ѱ`wPt~n4l~ό?.6h];Uӵ{fﭯ`FddPq8# pOu_:e[snA^>ծtbhqF\qץk=(v1ڀj:cv01HۧhP7?6 (=(uAv2ꩬy|Y\@X|hn|4giڼ)u%1K,TEPZQd#"+ê_Zu=/yN0!p@7[C:_}@,2$_)ѡ^̚3E` ]I$l|'Lxeoiv4bX5;TH54FyUepf d14'Ev?aKHc%w:9YWq`X0}2YYkuhMם0,JNut%`i!K+ZtΓMf5Gue$ I c ( {O*kkGKU}@qGXp6Sl2?x/%w{S=B)tG|h[ d vQZkbF71˴e_.l${ مǮe].L{)VYI)y$&@9s^=i8gs/VՓm1w8+@z2OI]z=)/8B׆S1 ]X9 6k3TPY_xe'Ue|dcx]KhVge[qF+ LDO>XB7 k=HjڮԼ"A42,; mr ex*[F]RE-lL311/gkxԢ[DK!tQNMe|%ANY\dU2+m`+6=4q"oHon]9@%vP]]_53 Y ц<@*#@ơfVڄJ:M{[bT+n4Zڱ]ii+UD?z}W sk m. uQ3SwLvosX݀F LSĺ<3ɪ5=9,#lf>Fy7 >0TeqGKxu o&?$n{w ן6y!l| ;@px1z}9~r!_\ʓ  ծuKt֭9'I|Q`nyFwO+*kZ&kniF"h#8ܬC&R$"}|$>eNmiKg//Xi)ʓKB'F8%AS;d1 DskۋX$m3p'v2tIyڛbX_mȒ'#52rsfŷӼExGCӦԒY+%( Ӏ푶O@4Ը5YtQ)ĮwF멨o%G-ijyWFVy GċZ"DO I\H$O2h-<-5j_^M)cQyaMrFpV|s94xsCF)}\\D|RgXO-1$9$$˭Qr$nw1}ҞO-rm΅u$Y6ys]6<_-tgL+=.2"Y vRIޙꈯ|x’_&s"Ei[XY2BvL#b{<4E0h<#I;u+@P@6k@()I5m@ [sOѳ?1@8zsCu# sO9 קP.m18̋Es,׊q"i,@ds@z>lm{+8$m+1398c3Lt #ʱ|ϲƑvހ/v3D?(;v˷h#Fb nf;%gl Ϳ<\۷I9pb#fH & BWnWvC@r1(E=P.m1qL1@U3obߕgx_K=ƅI;3$$:}A7|7=3#@O# #<8>-r_?@Gj) l3?G`0G9:g> \;ggsG|`1?-rtcgF3#4x-rl#@ |%Cző#@PScg>>7|3c\c9:z?Zm"}(>Z=? F3ϱx)w;;8?GK#+1#ׯNCg=#@' #<?CJScg>47|g gl~8#> úx6qq9}h>Z1 \c?#x)TGt1.1}hO|ϱ POh`?#@wSo1?#@?N`l|#S#<8dF?JS ]ϱ |# ?_}}>XhclOh<'ú#6qvR>=lgF(?Nc^~_c> ^/> Pz4,1.:CV|=6q\!' POh>X h`.1}h>R8:}h>Z\ PG# x6q{} > wN;8lCg/ Bt FxX,kOrAWgBHfm N.i_hP@P@PFg>h_;﹝w(8s<ǵG\q $(tXe<szP8=(r7Sހ=1րcր ( (* )@P@@{ctd{@ uב.qC.sx\mkR;sZL|A BS_()Ju O"4gHd|sۿIin.Y3(I8N29G2{MT%ŽܯgYH  A0hiN29HBb4<*"),Xz( &(P@P@ P+dnU$$ulM,q $(u*FrqA+d<T0U8$=I@dN9$/}4t8@P@P@Uy\_A4k?r:nyiFC 殺U2Id'#$ FYXf](`K; "¢F'<)+R_B^^[\C nKjоˆ\XP/OhP7?6 ( ( <Er1ci$ay6B>2Ə%Cnbp @|nOY -l7b*m7y GV׋AdGOy`vq@qFsMэ  ( C<8t=GP'mm|jd(m2ɻnFцARYkc"RQ%oEȶ)KwIe7m[IlMc*8 #%IA 7^#v|!GIgҝ̸D4ٜ "ѩY;#id %Im, ]^PJ|ub|U;sѬ[?e%:d8[ 6-CNZİ)]s1La"-*rCdZ)xbMBQ$;K9 "['o_%$zjm}ǺD46+d/.@UP:d嘒6#땟%utP@Sq-9jXykSbg :4j:Uγcj#p&q'c H"9Y] 95 C INbC`CS W'oZcפ[C6 ˗P2@.!⹊xGy5Qԗ1 f,#l|0^0Kx=SI .Q"wGXni$cxm1S_ﴶ#Lvq#G EDF|^@&;Ey0o!-䅂ar13{w2y8B ( ( Gyak~lN[FL }n稠 \Z-ڭ̖,/abP2E86B1PjWZo%P%2nBbD @p?1@()~\-P@P@t&ܧ(9mSzj1kesV$\X?sJdf&m.[<5tpbd%49v!JVCZw e2" #!2DX-ż$2!y>@ ( (c_z;@ @ ym"I`JI]HsFCouo;%^H##c_@P@P@U?g\SAj ( ?LPGId++&BP?O=#Gh'ߣ4վXI}) 4tN9%f79V|T;xc)IV ]\ZM"Ӎ8?{Ӱ_gޙip&(\TB4h ( ? TP@P@P@FF4:q@!7 pbC:+*TnP*=(L`czf(iyze0@oqg? (h ( ( _@Cg.o[(n|[awEkKZy6a\, vi6yQҮoYi^8Y?z{{?C@dO6.c |~1~s񍇧4 ,l==\!6㧷4ZULGPSpB??XDk%Ϩ=(3 ad􌞙^qHqMǧ^EGWΐ.pzw 9Ps񍇧4 ,l==\@dca 2'Ooh1>Y?z{{?C@dO6.c |~1~s񍇧4 ,l==\@dca 2'Ooh1>Y?z{{?C@dO6.c |~1~s񍇧4 ,l==\@dca 2'Ooh1>Y?z{{?C@dO6.c |~1~s񍇧4 ,l==\ 'ooohpZ Hq 9Ps'_oo(71~^s'_oo(71~^s'_oo(71~^s'_oo(71~^s'_oo(71~^s'_oo(71~^F26~{/Q@g#=#'zSq~E1$#'z j~zFǦ}Fd6=E1O6>Pncd#cE1N=#c>P?,zDOL{P~Y?{/Q@g~Y?{/Q@gxHϷ=EUn#MĜB#c?Oczncd#cE1O6>Pncd#cE1O6>Pncd#cE1O6>Pncd#cE1O6>Pncd#cE1O6>Pncd#cE1O6>Pncd#cE1O6>Pncd#cE1O6>Pncd#cE1O6>Pncd#cE1O6>Pncd#cE1O6>Pncd#cE1O6>Pncd#cE1O6>P{D}HhTl<G l>m Y;u^=,x~q1ML?;1`?5 P@?kڀ  {8 =ǽq@{8 :03vZ;>g@{8 =ǽq@{8 =ǽq@{8 =ǽq@{8 =ǽq@{8 =ǽq@{8 =ǽq@{8 ~yUym;~;(b9րsZ;>v#}hG8؎q (T? uwrA@{2x#nh-8=(7eO#Z^pG#ڀ 烜w秷րwv#}hG8؎q@b9րsZ;>v#}hG8؎q@b9րsZ;>v#}hG8؎q@b9րsZ3zfpApA={z:s~6k@()~\-P@P@P@P@P@P@P@P@P@P@tEZ ( j_:D!4!dcL˲rxvJEཁmiڥy -iێ  (W?/mm K;V-{Տu97THk?hᷙ%#` >`g?>Gk]-.noAwF/;!\6m)lſٚ.5HU&Og.PFBK0|@9 Kkm~JeH@[(نrQ |7#fc_+P9X./AQGm=SqfV]LmVXw}e$h1yc"^f $j_K3^ "[$HP#ՂAV_ơc`|GTZndxYc@լsQ;@"nscWvD4cWvD4u|zlOCc:ǿNnȴڵm^tӑcwh>Hڵ]4Zwu,[77R\0:4:gn ( :P]0cJD)ǧ(P@P@P@P@P@P@P@PE\\ 4.e"b3˺qyw_/€.yP8 <?@u<(_]˺qyw_/€.yP8 <?@u<(_]˺qyw_/€.yP8 <?@u<(_]˺qyw_/€.yP8 <?@u<(_]˺qyw_/€.yP8 <?@u<(_;r#&X<?@u<(_]˺qyw_/€.yP8 <?@u<(_]˺qyw_/€.yP8 <?@u<(_]˺qyw_/€.yP8 <?@u<(_4@G8 <?@u<(_]˺qyw_/€.yP8 <?@u<(_]˺qyw_/€.yP8 <?@u<(_]˺qyw_/€.yP8 <?@u<(_]˺qywCY@$ =q@h ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( P`g=hPKF|PKAAOEBPS/img/passthrough4.gifGHGIF89aPPP!!!;QT***WWW&&&WXLeeejujNMN\\\lllâYYY۲---555DEDxxx|||pppƒkjk҂000ꮮ:::w|gvvvaaS zzz333III~hhhrrsbbbIKCFGDBBCTTTuuuǀ=>&@@@{|Lr٠v'68hhX```߿ްᏘԈ/28Omq???\]9_eqمx싌hVxy|鏚_iutullB~sƫkrGLTMM/`e`SXbŭw~~}~a`a;?F..#&*CCC(*򾾾Xz<<<ԟW_Xaaa񚙚777bgZtttRVR|݌Y_Vet^HH2勋l΃pq\--&\]Odk_ɉŏ!, H*\ȰÇ#JHŋ3jȱǏ dk$ZRBDz˗TBe'T!sɳϟ@ZդZ+a*]t)H&$իXjpVIHK&+HlʶFrDا*ּ鶯VNGOLT*V\($#L9)3sDϠʅSi Z)VOnVָsdE?M\)V0?]vy^N=!IIk7֨nG|hXod_Bʥ|}Yޗ)~Sgf߁ƥ7O%X\2zIe]_+-(8% 8V+yI&LX#%6eI),x U}R`z&iz>vĉ)A,YRI%zQ&x`R P&C 1^R &ebُ%^J8%z`RnؤP@J)vUcUR&ʟBKnHhXIzB%F<"fQsΩDCHE-=B='1 %TRfFbHseąXɰanC~*KS2&j*.2 o"gW[Tb%x*)#J|%ʼ^DëPGJ"kF!3b*cj\aˮ`[sf? )ӵѤ걄 t9,s`mٵ՟aҴ8+Zd*!`r#H >1k](ٛGCC|tIy?fĝbvhZ,XZj%瘋nn˵u^%۝20AN\9nn+%F\b%8r-U:brO}g^ܣ]ym"t_Q中RxzGc75*w %b*΄?ҕoYiܸ\}瓟Df9Ev0O*̝5p-^H+ qP|HO7$~HDL ) yfP,K-NDKև.$~TLE0d$c È1f$& +ci<c ձaX9&`ïO&#)ΓxK2R `OK` Rą& 9R&2* (c/lchvP2%Xʔ .m=bi"a#Yab32νܤf%9i#@(JJ=?t-c,IW(T irh܌O ellBh.wV#'q cjeML\kLG|7٘π tOC/zlteKjKzYCV|F/=,rjP艥BTʲ՗d֒L5֤O ĄG/L |&7,j}-[U*:6KfajXBHVsZR<* )øډ +^/q ڶD'UMTjd/֌B*nXDld^R:*Sȫ=(U4RgՈQo%ůLs-i5zܒ4*<+uSG,a8*mqO$^qdX1β1aN⊠:ޱ/{ K=(rc#(JAfA :ɴ)Ҝ+ 2BcCِbHmTH(9 ! ]MaHSgp&iOQ|'< 䙆) YY2iJGl~k& {*D) ]]2|95₝$*ֲMciN4$-N:+p) ef6)[/LO[8õZmf$=q>wuҭn ݿy7Y'y |[W[.o>87iU".u+3]Y87P#Dѭ` sp d~/l ^ԧ-yv$[6<.oN=)˭U], :> s[ (εxҟ#ib"?/|t6{폎}'~۹1@X?;|E/9UϾq2_2; u'~  wAs5|~r8wt0weWmgPv.utgx0wgms@xfWmq 2Xue0eprX|^t#tYe ! 6s0zꗃ6lbhdцn(p1tvx z|؇8Qsa؈ሒ8XA(fnqX{.`iXV!X0xx؊8QX h؋ 񋻘ǸX˘ͨh茄vsaT8XgZ`yhXXp娎x蘎6rw؏(P؊g(?G ِِ*sWys48|-sf x(*)bv.I0$ZX; 13IW [Ɠ=F9.B|MDIK)eH8%t } q'^ٍ9p刕I&Sl=1/0Z Voao0"7qrlru)gs!ɍ@·7y(HL۴Nz X` ]pXZ\۵^`b;dUEul۶nkaxz|۷~;[{h 5g]˸] ga۹ K۷[}[,˹p[|:[k˹o{[k?ۻ}6u{[P9kCQ0F`X+t[}[U@  hk}PT;(/ Њɛ3L<ˆx Í˼>Ἢ̸ JL*FC|\\57]YF[\j_apA:iPxz,;moL0Ȅ\Ȇ|ȈȊȌȇ s8u ]{pɘɜX ʢɢ,<{0ɃȃBO˾Q<̿ 0< B|T]\lX<iݜk0<\4=ąϚ ]mM]j ͛{ƙ1Qͫkm"-X #}(-ұ*m(]( .,j|~~_~J@ )=0+/m'-Ӯzk| Q` 0SΞSPRp :.L|_0N`|>6 9!; ^ _ꌄ~{}` @qP}l_B0{K +_}2=,[;.߷FHo)A+`U@Ƅ &[j\nm- G_bd/f]` 𾆫}.WF`Ē߷SÑ;Ʀ{H9 %a]`K/p o/O_t@߫?:=_>'8yO\ Ux]`$XCLgQ"D%NX.ZmG!E$Oƒ)Eb s`>.eVL8M_ rgO ` a@8]&t(R83ZuI*YDd*QTadYn&Pv`n@ph.T4" ,04֘53 %\ @λ#ȍHpEO4yE5 F1 73E5dGě$pI  t p QBD$o2;Sq g|Q qoM#ôII&IbPB 5PD AutiLLiN9mN9M&PK5S yǂ45MS5#%O?B6^i .HcXb4zaYf4bY47aZh֊(R0%4w(̅duwUV "(ʕWrj"\s D}*#Pxa2A)p|A0ܺ@M4_\s6$2OFI%w׏8g-p8% /rÍ%661#feDFY^4vQiqV[r8b 2i,1~삦Ƭʮ7v]O,lsK{mWj;c ~P*XK;r pWSU^9rronB\QE6wB.MfFÉD|FWdq'=+:㦸b4's>k6;!g7womVE,eA YxVZ LrGyt_G=EW}ow(ƐPk e0-L S'xГ#?O~RP`xfjp/4ٌM+FQ~DpxEm(rGjnsQ,*dPх|^dc3B3 }Xh!%}%I*tdDd&lF#? чӔ@c3d@8 6%8D"Qӓ3:C|!"@ Cџ& O :Q ^2L@随F5a #c *J0bYi&qVSܡinJt>  C$)eW/GTuS/ 1YkR s$kbL3-9舰]yip/4;1l] ;*5fGOF5 ԓf`fUE۶i'Dɗm=kJrvf"o,US iӺ%(ܴ<.}N^ [z6[,جBdFk%bBL\r' ad G'%-yFk rڈg˃!'Sr\ q lzˍ)" B<%US|:Dy>5sfe1&Ir4}reeCreQ&2_y$>؟Aͳ]B(ya3WU,V3i#4AYO׸F9-'{:(3ި'_K)quH:ظHulaЈvxE JT5Amm(ъɜඨѤ/u] G%!6MiQ]D໛]#HzH.>+фq waNn_.QoKÒwDz Dl.#KdW1Nvx뙧آݸG%uA1"O2B/p̶$t9qH&DE~W>usT #-&{>{S:#F, ( -!2*"3Xb&+?65&"͊_s ~&B#k.&仼<iIˉxcy df7t?:7>F;3d&5n6o+"9$[C=30;67܈.20=|%4CB>.\D:DD\ 2KDLDMDNDO>AKCTLEU\EV|Q쓡hEYEZADSE]4\)E` FaFb,FcY_ }]` ^\`F ]U1`NaUc]`(8aabpa-aa`b aa$[0&QP_Q eFHb"5(Nb+HUߪ YNX 8eP c}@M&]U8 >c@bP fZU=) +G]?KVdM0+`#MG^%IN 7^3>3^1FiޑN `dHNWbF0<&PF`?ƁE^>~ xRe_?>Pf+k+xjje d=mi+lfcd?h+fj>vmf+(^iFk?>S᭮^`~ŁdgTfh+]F cRVng.6nZfe Άul]j%#eQ.k݆clϾiF?o oxPk,jٮeg^円d`Ne,FNk> W 'h y Hd 恥=c:)f#hRe>m>N,Xkdr&jƁ$/򇶂.l`BmA&_pNm#'مoFm)g,^5r7cPPh5k3^^k٥ WNot)ghDvJyV>h,_A`mU+xTt;mGHdmNk_vN)pj>c:W =' ^UvvR'2kwmv2 (q_Mrvv2E`w|ޠmGZ0 s:n|_wwxw;4(wgHP`?x:1|x-hg~/n1(yb~'ڎy9aag_y~/ux}aHmh Ѐ] zPzgyy'z @Pw{~{{{/O `(^xwg—]f{{xwS{Gɧ|n u|څt gu|{ɯ|^@H] |Їlxy4~8|RPh8ݿ{_g( Ѕyplwxp@v{Ђ#'\)h Bm1l!Ĉ'Rh"ƌ!c;c#L]*0`PTY½}.G<}pK!Bk ⩷!Z:/gyWt3h"#-@h!D¸qjыݼurdɓTd5oyAև6#4b3h#F37 kl(l$(vAzw{"G E4p˗1g.y>|!y9" -B%a` "mʆbɚE+[ܸu֋^| Wq!gb(f$O0]u >pwx، Sޠz{ȗkG@5xcCE\`ǭ\41NEu`vV 0MMpY]*N(A&lG#Eqr 2?MH]fwx( ƈh"?*")ZQ&\p9*8`r*j"++UY$ӌ:,JZk-j + {.9"K`I].;/vQk/van0Cv&+!_0x0[~[<k@/L&|F!ε;{b.a r<ċT+ļע }ٲN}׭=|#O#|ƯL` bV2p#( R`mо ~b_8=m}˟ڶE,xh`f"XA!sh>!(!чcb]CǺfO#`ak5a򤸼0Ί3,f^86f C V:zcB0҉t$dh="r7~دAѐ0ۍj$JKr" !HRf\D/@T UXJI$e%i3]^1p87 q30gҩu`l <=YLi e2L}l\'yJX &J){u'Q!yУ> )1LijHoY:v6TpHQ шJJY Sl>54]F=*RzToT*թF5шfO5bO~!BS"pnf='ZR`Zn}JЬVjĠ׽~Z_vA)]%֪`x,d#+F6l,f#+̮L 2+phIX>dLU~ce=g&T m]K ̶%orv.V"esݛTUD(x߾b.ƻ]ѻi]l+8Iwg]uriŀ3 #` ; s"0-;IK{wߺP5o"𽟋b⟡/sLƼu/+䵕7n{,29fNf.Y)Swzz5opؕeoY@6'b2S935cf(Bhі0ƜUʱ KZ/id"ә<5M-,:XvЄ @]:kaAXռa<׽!~6-iS;P.ElTd;>qH[$9B~Gu;D)팀;wt8 ob͛"7D~{?%woā0ƺ ^MtjD$T7Dx- N9_m6a腝5uTot_za=uN-6 KC} ΞY@ Kg~:IϽFEj;irġ,%b|w;|gnh T%9A ?$EռT^ΆyyBz;!P=Vֻ~{/k;81}Oezq9@7!_wsp7CvHBn"6_;05X(4UI)EI$2`.iD8SDx_^ _ތC8.X ( ]5D6  6E}}aۓ D8?!! HR["օUDHNRSݤJۑ]] a ]eiW%% %]!2]]"Q'iݮ%Hj_XQ-֢-N(@(^"NDԭ1/#2Z+V, y<zx|{ ` h9:$;&dD^$Q,?ڨZ䩥 $H#N;ƣ"fuYcCa]VYքARgB_f.`2!eeڥEe.R'}}&y.y~V&(F \ R B}}>^~BHPfc&%Vg䅨K_bh`ݱ]Zߥ$ (q^v3~('苮hBfJ")Z⧐&fᨊm))@%;<ѨN)tA]*Z44A5J6r6R7^T89H AP`ɧdqA&$H@i׵HcXcx6778j[ (ꕸmI@Hm5b+)&ܻu)6VXu*Lk%WD&%v\J+|(Sb+y޶kt+y cB"|A!|UkrV&Al-ADl 0 h~ @zbh"z N,lq'N @2,CA@@*pkPkNBQ"+s3UMr(J\K@RRm-q Pn?@z"DmHΆ ޭ2fM"|"@g{mA0-M '!-B8nB&1mzk"DfnDn|nA &쪮Dn V\ XJ@0o"(\@΋n@ѱ&$OֶE@ F.ZG~dH>d9;;%AA$4h0,N0ԁrȄDH\GvlGCCJT6j7^}}@(ln @aIs8cDȠTH7T,J @#7⮥8r9`#,Ԏ-ޘ2t|/y=J K  9 !|1dc1/i `FDɪc.Ԣ("7-=(~:MU{.v8K H(8B.LC.C]m#;рkƠZ (55eWc}#WZ);29uIQvPh8%ucy}%~wB,[}8WK=[KW4-ScCxمz.CZ別Y8e/,xٲ 5[ZwX&{)^o\h˹G.N9ŵ:癖z4Vx+m Pޚ<mMch1vJ+-B쮸KԆئ9 [m"nDai5$ށ3KR?͈Ա5+E3ju"7gpK1^Km ֤)6tz9'˪:H域ߟQ& Ӊq`nÆFx GPIXt-Ibo6 L02Ad3&@@@r'68Omq{|LР000PPPٰppp```v_eq/28???NMNمutuӊV\]9|_w~krillBSXbGLT..MM/WWWVVV;QT(*a`aά#&*럟CCCښ|||yyywww瘘}}}ԸϹ{{{‚Ջxxx~}~žشʦ֙aaa<<<111rrs~~~QQQXzن皙񧯼Ǖ!,v H*\ȰaCBn"JH #3jȱǏ ABcǎR\ɲJD'#Tf1͛8sIHErJhEr٩ӧP3(ѫXMPԯ`zdUhӪ'ǎAb ;HEkEdI^q>(#K68Yl"1Z?/nx"~V(.*MJ٣]"R遼=,;)4?6b;JDq-JEgX)Q:Nn#A(q)wh?)=^gmEwbPG!maއŗ[lHkQ̑qf@wSr*qfQGQf8b $a eJe} di~d*=G!@o3ǥZ#F"ygۡWB"5"5J֪kK: ҭ kJ*Ƕ$Ɔ5{lf$eϙ݂ňbHa]ʮSk$j䮿/&o8y,zFF7t,9擄qK#?J%_RAw²,`}1ǖEqGw?7Gԭs>QƁ)F,M6k3u1#?ehg!sVG"5zidIK!"m\G U!}^^g=HuНpƖѸߍMs~WQg8/^{,ŝJnؒѓNZe(7{5;*}~;^bR;#INUrX!o/>K0M<-Q\y,Ym埯S^=TrI/ERӮ?0 RWN@Si=q2M4~NdЯVkNFU<!d5CcNn'ٴ P!TBQ}sMksMJȤ))a6qXd*{u@:ͤn%cYn03F%aCp( lP$9*Qv"L8zrt?ҐsA䈤7>qrVd7̓ed*,[4 azK8ƌ&$"bexL2}8%-BPJ.957DjDW"dmS"AvSO5E'%) PN*J ($$2~:t#:C'R:(F7r(HG 1)JWJ.})Jc*SҴ )NAR!dExNY @Qj&:FVT;-Hz@#NHXmU8! \jVVR IjVc<`S`B#5Ձ_ZbdPJ!; AL`e L+^'GBժ-(O`ZحZ LHcmk$O ^ @ձJ FEPzᚗ MHBkZT ,^a{ZU kŪXw UUm"$ -D!| ;E(mqqϪ' C@QEkU7FMOe˃wN@BQax'0vo\, (K9N@y*+G:keZ<3a5nV"9|OGxO#{37g@ z. D+zьV HoҔeLkzӓGMR NWV;RgMZ fw^vk2{ 6-Of٪VRg?;>_U6dſEp탈zvS]qku 2SK"-Gg 6 Rnw^#WȾub`' wK,zk| LHB%Nmx T'RmB u㛄JBHySZTJFWpG/W7!<"x◍@&HNnձF[V$ +lx: d/?Ύrm=m&,U#`uz|Ů> k1?zM/׹,0r? lv[^/~~o鍀} ޙOֽLT aO|T}wE{qw%v$wI`TAN`TIZ2c TGxg85ieOk8HBDX،،8؍8ȍh`ȌRX.Ȏoxj͈yЎ(Q-hij`oiBPhchXqMx Ȑ"9$ Y-(fɌo`1)&7gA8 Q:qL9S9ɨBRj \ٕ^`b9dYf;)VI5,Y;`?0t@x?w~x|闄sOٖ˜Ay? PyiPiqvxyٛ9I蔲 R?9y`ٝ p`ݹ9YΉIYIyɚ؞DɌə􉟞 :yʙ)#ɜz!99'ʟH7󩢩i$),٣yơiB j: i(HfhLN:Q*h)f: 8Jo;7JMiXj$Yy I9؉ghxhȊz*y phT hji@HygpLַh:=)Jh2j;Ȍ hjԨѨГ *pig1Ejxfjz̸g0ٍc`x h{Zڌ > pjP؊ h;0zyW6۳/i@D[F˳hFL .˴P˴5[)j yЉ j&p鵅ְ[^ZbʙA9`mA@T zikmp uKy>kBI[iY rI:˨q;~zrYk{>j부붃+kyk=۟~k󙺷83pj 鼽+۳<<ػ 3Y拻뻉ط{Kɾ6 #cZ;[ bv;˪ L7C>Я$|MJR{>|0̦3Jh`ZfЏ Ŭ,GK)E̞l/֎i ;P0@ 8\g˼o;^ /uٗ ҃! ,7K)--$=>L-ͽ-1gГ>f0ciyf>f˿\\{5ZI8ܑPt|c`ʐ[J]+I\%Zyp  z(Ϯ,]3ݘ(q+x=y`=Ǯ,ʢ̐[Ȓm˗mә\ӸH ,`̖͐μE-j୒CY=ۘӫӫڑ- X=Z h5,b%۸,|-'|:\յM-  6^~y᠖L"J$^gt(~g-1n=MY5~`5 q^(p9^R|b(p(pby.]2G]]]%pO0serE_I@e\Ug!Gtub(pQ=wS5x]N`:a9`L@ub^_c~Z 9}Sc}*΅xܵUEUF`W[%w^uօX2a>bH\1rVVp&jC_'XxbE`T~ՕaLrUSwwa`R5^T@_p@߲5L0bص~ZΕcLUX^v.9qw_EX]sO~T=%rWg(UNU^ f<46MʘBߡD_YzHJuP>;o<,X?U2W`]?G*f/eLW@ p@Pz_ذ~~?{_@0 tD0 y_~?_zO wo$5 ` {po{` 0 OQo # 5@_ Ԑd"؀?j}@aC pH O @a7$XAMC%NOE5nq=' '@(H9PAM֨ybOAnP8G>zA( J$t%̧J*P24ɄU@AlZm3ۗ'|j2I}IY08~D=prA6ƤIdt]NܻR$hx@]a0``IW08˹alu{㬝~C4Z= {ǧWxB,>qk$`RnNA & $nPr ꛯ>b`}eB3F=6>a >܎C q URN5(DINac0>CL9 6gӅ,И$hNHJDܝ/ok'3n LG `UCXpTR@J&Q/DUST@7g:i_ :xa~)(W!S(|1$f՚[u+E5gMZ־6L5XFVl] AYBv bX?ֱ%d-[ZnVkbSsur]1)"y1])2-] +hSn9C,n^z׈h }[P݆L . ^jS%% W~몍.%n0Q?̈́,|a gXk#6Ȱ4,s})>PRBݣGJ>yTs8&׶ղxA`d(GYSrl O]D΋%7uNd PoFӦLVxIa<X0g=wX6qdft2Z"x-_G,[3gY"SH3Fܑ8˞76!FN͑TktFk̚"hFn\t~H5RۺDžs2挺o}!hp{X3{ZT2e涹mrz.`$\ ApG\ǶAhE6El0pzY"yI\+gyY^{^#e-j["G tl};h>Kw#Zn1#JAzPt,Ru]c'{٩]c+4NvX{luK!WsaݣTu\#Y{~t[]et5@^( (4˛|='҃$4C $7Ig^ |op_@&0A4 $?`> APUPT 5K@S'A'=0":X7BC&xCy+?S?!x'< ?$=={3>S> ` p>>>?dAnH,,Ap*˴c!$(!pHH&|B h'?#p†c D'`x&@)|#`$8?h .Ls!&p@C>C?C@ DADA4X<0;,$$;L$\5;"hlH9Dh?OD93C.#8ļC56EN?N<2E3N.\ &.CD:D CK0TcB\E^.c{StAA A5($SПi$ A-r;T>о>GHT,) ы he2MP"ws/fOUgU9k&hUDE ÔkD$4|HAFYlCPUUQ%ӁSLNs!Hk&BnlB\ڛyVCd}QVUlC3F_u8FFKI,WH!ؤMW:*4L,G3&hBnV2WgWl$EU k Yro#3HIZVx#̻̿x-#t@ȋ?B˻EeL㿾:s->r]tYӾ d3EXecP:˜ZZUS=X LmTk?Ir=UZ|Ɇj|Ήh' QI@۽Zc@;$GH!P=3"xH$G/'HTW07 XDž\[V+M$D뿋XetEL? 6deFrԿ&]LWGxHNՁDWEK׈]cD Le_llLlU9L3VI#HGMQ͆OPd'j^0?,G C<^f$E4B!X@lb-0^anaƒwKݢ'@ܧ,]SEr|x?x5KTulak&GеVE&I9Qqȑʱα!)1I)1a d8Q9Q,n./)1j7mc#9fp=>^-v.0BΞ2FdQYc7HIfjh+(=Fd@~/0)Rޞ:4f䗂S7GV塠ݡ`шfsۨcrj\-eP&d`&ca>cENFMh[pܼˌ%t Iת%+nfoA1>aFECb㐜;d#njK=@e]?eTLh޺  cYhAeQg6gTfSiI2DX Ϳt0tVB}`T| |N9?7DCC.IgjJ` c]F0^S0+,h]9DL{\XEPx;EelXV?Z=|]?yň=NU|g$GԻ^+-MBNDνLv킔N |Z@Nenn.n>nNq?$/쿎`nynNxVn^Fs e=^5PgQt mVɫYPUkP&N/TE\D$CJåytj*DU֍j.t'P5PFh8ETўh^@l8[q]p~!BGl=ďK2lHbN ;<4|P/K2dB& GT,?SOVTMW#]oCv9C յzn5,[IqaD+tFJf$-tGoFާTBIEnOtO;PKP+z+PKAAOEBPS/img/passthrough3.gifWRGIF89a pppҢkjk|||000DDDxxxvvvPPPfff:::lll+++---555hhh'&'^^^ddd bbbYYYIII[[[zzzZZZ"""(((nnn$$$rrs333NNNRRSUUULLLuuu@@@=>&{|LOmq湺r'68```v͐_eq/28م\]9_???utu|즦w~ŊVNMNllBWWWVVVMM/kri郋;?FSXbGLT..;QT#&*~}~a`a~~~끁(*턄̌򱱱ĮDCDٻί;ԯXzaaa񚙚<<Nc d]b`~$kHxF эWPSt0Dȏi"U9ab~PF`+1 >Brs$|𡆐S@£?]S"сegYYjh7E~mtZeꠣ&Fk:vb4chPQv(zhOuІg0+6;,[eVϵd;1d\[X"!^`nvK.Fȸ;~nLA*hji)w r'󏚶찲|%a{bw[a5?wj4h{$l_fzm*T[=7_#.[6 k#mfƴ`GsB~l~@Ǣ@28灚x6hxCfzFF>9^y1G4Y"NPzֺ&94wS_{cOq=CsF޻$4si&]y84d@CqD'hDom? $ abX?p/@^t&~3 gDiR?gRBb('M[sBFڠDЇ;"?3(f Cd@ucQFHqR"%fE`PsCjćkTra st&1H86TaӸC2*)Jv(İr9J~X$85 )B'#HGXY~t7v@Sd2>H\WH%?Deަ!,]( q5jܟ[m_Ѣv7M6?$8ZP t?lWI5\d<$SfRh@ć&bBNB9ZRdt m#t+;rR[-jdك 7);)lg#PyHVGdR?68O [uy#6-jt2[UF 2 FX-e`XsnįHA"Ja#uDqDJr-iB+pgFdA*4#a򚊔#3Yz[<,E 3b0[SǑݠ+dV($2Lbg--R:M>3_ˌTL$,3(sj6e͜<=Q4]iK0^>!)d˖Ġ6lǀ:Ӎ$Bk AA& qxs'\Ia w#%:Pco;^j6K\%'#(;|!yq L_'E|.0 =eAD5~@Ă/O19؃"daN~P(tlúKR0|Є&@ ?PbC_vW~>%(A E?? _ F(wE}w>@|'z`MMW}PNwWaG} F!8 zz>p7FP׀W|tWV@|a`AA0n{!R<r''>{w|H=Hgu{W}# ,x 7zȂZHwh~ZJid~aR xHzxR (P؅b(((apHwać(Np䗉 x)(ryC芯@ ~vw|J`Fpb8wЋ Q|ѸӘyAN@hyR|nոяYxa ) ِu ɏXI.9+$)#y(a*)ْ 0/9 !65<; BIBPG NKMF+1N VXI[]U`fdaiZ'b l9rtwYyY{9g~Зgٖ)9 4}89YyIV ٙ9qR@VyqJi}9>PwA4)@yrP(x xɈgykÝ٩syԹkY雂pHȌxJzM8Bal։ 1'q?A u֙Nv"xE rg8z뇃WQꇠd5z8)} ax% Z秝IJPG|[jhMzMxvAPO "} )ڟؠ0Zc>!E`Ej 9zJ"E'ǎ맍E9hz~A~^a 鷃M}Zaz`R },V{> jNW^ |ǦhC hy( ULy8mW^ʁH~88~l H뷠NX)VzxЛH:}Z} cXZʧjwa Gڊ7|EmԷ}ڲsaNE V{Xx *zǴ~x J|\{aاʠxEkB'z׶v׶ד{sȇJ<贇u맷{y}ɱcXAʸ)RPOkw}ز{IZX8"hw}fk's8؋Nه{B;B跠y+L h,ڧ^*7zY(KZNVFPE{i}g ׽ +0H|M':,1踀+z ̺Z{9Vhw vrG9G{9<, &!|~z-~Gh~'Njd\O|lolk7q\vPlzz:6ǀL}M\ȆoLȊ<\Eȓ 0{I*7J\ʦ|ʑ-T1ʨʰ˖.fQ˺˯+S˼<\gʿ}<\|؜>鬉|Ź<\Cŧ|<|ͷלBae\<<| A!dA̓@ Ǐa}p0! \|nP,M=1]c7'ۗ bP_ <, ͌dx(ќ@]6MD0,Mc$->i<[Mg:L zĆ=+pplԄ}| g-x,Տm͆]?(=י,٠-ڨ Vة5 ۰٫A=Dۼ۾=]ܾ,L}l ϶c- K]߽m}0MU1 }>ܝMmMݫmQ?">?pKKp#$~]]7N:~n"~*> >֏`P~T0UZn]W_QG]X^ۭ\ . - -f}Mj>͇ݟ~ޒm ,襝}N:>@..^Kn$컾^Ѯ#nN Mm趾BÞGN1^߮>^^^>^?p /&a> ӎ_'/>?>6?-O!^ԬM8F(^Lg v.?>X_KJ.Ro=N69.`b_d/8N&Cn)+N//M|Z];oO_f_On,m{rN[P>V~^ZJ=b;>mvHg^g.J蠉glxd;Hnл#[wp {{#7^;HUJ ,r3|~>/v}}RHorؿn5}lϽm+#*:AN:l9{] Zjl9FE-}SUn}L{[G@S+_x#I9>i;H5(XgAeOdd8>/RJ5^ldzS=n|=|a@=0@pD0l,AP"LL{/ Om!Pl7/}Z/>qZ"#xgKta'G'w#5>.͏dg L)7H$I$e+1M`L%,oTH:!挹QKXޖf>s >ݿKɲ-T"ELe+8LjZ$b SDh)C,zZAT$Bq'HftI]G'!R*$%MIaWDӤPisZE!LEc(5:w?DTԫ Nub#)94*PJQc xX+ ;Q?TWoNg3wL^͚&:Վ`TٴYbRZNΠU X_ZjLp"h ې eUJbC"$u > ⦄)+Wq! Bֵyn,XNY*갨#S9jR1SRP\~ݫN@;74d01 `!vD$x(6Wʄa"8p@%8PU `Ip)"R% xBPbֳ)C'̕:n :/7,:W;}e: %'Q#yC15Z\)z>(\\A.sk_D6A>t@= | }Lt2i(s1؁ +Zp:ZP4P·#|cMѱpi!Yt-=#Ѳ~`mkvɶe,na â(AFnr,0l+Xư=s%u />b#%w Jj2:2(xUY {os,gWwJ@D!>LQ!!U%c=Ƿn MzmC}x}֯Q)6?%l>'X;؋WT ??s. +><@?>H+#8&Zc#0A@ ;#5@:"xE{<2 ?i   NY \<GZ ?+MԔXY1#D @4@`038R4J~1`0Qð+#xKHBAy\-5t6$I#9nNd?vM?䴵6bUd)FdFVB~d DތdKMJd8aN^=d;dQN{RcRNeHLf&yeX1W^YF*Ye\V[e_e^T&fU`F*h0g.BBAfkgkfi"0hPA]pfgKjfmfjfigVafvBXgIfgh~x.z6,gjgAghhI8脖ehiicgd B[ icpe ii~i(؅Tjn.n{]pvjKMj>릾ip~M~ͫvg~chkkvkjI8q&䪦k3HK@gJNæĮn>kIpɦF* (688~78[BXj8^`v튆m٦BƬm> @~Hn6kAi(VEH8X|nhkI*J*^EH0HlLxKxLLXVEx莃8`l p0mffK8?_pg'np q ?f"f3x.iі_iKnmmf3L0 Hl^@pm>, 758@7` m<_@^07tNM/s1's34s$o7:7;u@7=sP83HKilg-5@Xvr0lL,w]'7(o0H vi/oWq>*on%mq`?avm6vdeg lu,/pjvmw3 8`peeeug4uu&r3wmws3sKG70E w/ar^/{x&nwm.zVgvmy li^w]G p׾{M'xgmj_NxW~oD\XvnֶE`lznw{6z_Wu_|.a`Pu`ol^ v7g^mKtufL8, sl{_@1?`i}ԮǾrq&,{Dv:w?}WLo7}}:vu,&(kj ,,h „P!Dha"ƌ7r#Ȑ"{"0"JB \C&2i&Μ7Qb&P 8ɀ9:2mj3't*U2xrlӰbVSjVCӲwpҭZ?Fí]tq7O\fРT J&v "/,#W>ei1w)EKcx=rCoGNHw˙_77X&z^OK?z8lwU!me 9t6\Qxk *=;OUue2ҋ3$唒&o&kGL NT`!tG؀v$*(a 34 r+b:c+XvA ʇc2@d=tӍU'OFVbX">y 0s0%R 6 (>9ؔ h #oz2J>BHA'Adb u^yny%y)"&iJS@6*sS (d`!zʪJk^긠3),2LP 8Z -̢.s $i 8*$&JN*Vd` *!궭k:Ю k(^o3{oHᅳ髿> >ghdkK|"#J_7?(B!0Kt/,  / nXI =p ݣ?.ЈD̡ p@s`VEqCbgHC4ы]"M"_-c `A0RQctK?4N$A5=V QQ#w:XSc= Ȃ(ff&@qZ [?&Zf7 $ѓج(MvbgHDQTT+$4~n$y62h,_c#rJEN=WNW2^*X*ֱ5ʒ$A# )Ǡʤ֔cj@M|~c\AXW#U| 2},d#+Y^Cw7䒮*%QJt'= 4T:V$P AQՆ$=M ?<`vm %)l@P*b&-]0& >&)WI3lv%la {䆱msy;,_b/xf 0Ҳ;snK_8/@;'x1m Ϡ5AP>1׈3ˌi~<>,tg4{~3ga6'̈3OWJ#3 >@f4ʁ i*@Z|0:- _\Bϵ j?Pg#l5Pr WfԥtvV=[ASJIAZZ~qmP[2&jp@AMN{ٔ&win8$ C "mvz.B̈*P8+6 o5kXpZ]Zfzy9rjp`۸o>J~+n0|'K|3ї>Y} h@Q^X^ =Ё^ fn "@ V#0B: B {ߤ^rƠ r! ^oP.^ACtz`xJ!AP:DD&GVnA|D`!i٭޸F:BDFJ@ y^Jސ!F*#:bBbD "[,a["p$*A"JH✥Yzdס"Ax"DbZ"[Rn/ |`#`0 ]epaS/)\3*# &06 .f. Q~d:_%|  #B<__'r[*>Aa^%%]JF,R->DEEREFa#ud]D(U+!v*AEKE@F=JFFN7O6 \X@%ZZ%[%Z6LLeѥC,%K$Q%QԤ&]edB54c>L&eVe^&ffe:QQF^K:__ qY5PCkf#|&m\tn^5?tPtk&&m2tViEj`V)dVB)`pgoe,a^6%LTZbjddl'VZxgigu&P&==]aF|ҧdاt'LgBK\VhP*(ʥ`^!aT܀}`裍Rh"( h&"葒٢Ũhhe6ڎV)J iJB&)iX}jf))"F__5@]_18AYI P Xw))P q@)j `ߊI*^*YzeVꨒ* ,j},4+<+@T \+>>lCby*`jߩ_F *+:+J+Z+^> 9=f%,&.,62 t|>fnlƎ'RL ,rY3c4FiŦӝ8%2) ?N˾^zߞBDFD%-?IlrR,h֝ "a(fm m-y(- AUaۺ=!mM"ߎmN$6.~*~n6m=CD-DLYncjD|ެCn`DAfEzi>A:%V^m.Vo*oZ&JceF# zo/./d0d/F/ײON,D/>o0$(g陾}0c* 0 \A-p&j.0|D/F z*p 7Z #  1p 4FqSq* "11q#ig-11A±.)HM ьܘXL vB܍ ܀|r pXĮH7 "#K $B9Hʶp &Ê&_ '{2(+_(M)7)? % M35W#2Hs5w75gsN1` p9G9s;[;:k1;sݢ33Aȳ>GP=?km> t@lKBC3zD^AHb0.͕]u$VAAH!F- D4t+4KA t yFK4?/JDx_6d" PQStA \5!t&u^S:XZA@WoUrtV{4YoUWXuJ344u ̴Q ;o?ִ_ߴ?GUl;G6dAHb;QA4hH# 3b5l'gBk k߶9G&6BmtDq^6rJ7qw tt'_;sW 8f7=gu&Bu;D6%twG϶:GOWx^hBhBH@ TzgBo}7A73#x8&C| ҁ'8S7'|Ɏp͡ċ̌ WMUNč$S2܍F&wD ˈ8̔8 D~Q_.g1s&8x'!@o ˀ 9H8A9tl)twwN$N?~I,9928td;Ďk 9/ :ШtO8)xÄ8@BʐIS̥;9g2ϸ18CwoA0py˺8 (2ܴ9g@+B < #NxzOؠzkؓW3z!C2t MCI;)3 *PyK!B߻ y{纡3M)h'|ZHl;;9 9B@|GO>W_>go>w>臾>闾>ꧾ>뷾>ǾMXA;g6z~yHAd?q%D A09?~k?XA (@A w@?AW@(C?A|Oɿ" )xGE|txa A0vdH#I4o" $t(H&]Thd iIS iTg N4bNHJUI[vY$md [ M- rs/"@ Ϧ5"_RUn^I6MXlARDΉ mwn dô3p1AU^ XA\bh꧹w@!EX;a 47O~B0!T3S0npB`4<$#< ܃oCPt#\K CPŁbtt<0C ;&Pd:bBD+c2+Ji#) *!+aJ&tH(+SK.7Z4?s<;1|АrSD bL#S̴ VMH+IĨQu0+RɃ(@-HI}0 )C#׳\CX$S5uWeat–on尡%W$Jh/MP1Q *)\M,|M0 =HH (ӹxN%TNEߖWϸ&xԓkSBg-ì3M5+<>iXO' !+j-}]('"J th)^J R?4{ɡ6'wܣ=[o{ﶣzjl6\&(s‰M7 U_tVYv&N>$Eԯw+EBNNr#vOzd (&y}=$ -#<_i8# 12x 4 wX~R LŽp&<'a !N M% !UudCXaB҅!⟮ %CMۜ.V5.% 7&'lBBD#.r뇶 &<TCH%[RbSֈF9D^6YF a)GKYs2:! vB f"&qN"b=ӹO2AeG QB4叶"jPY$ė2~$SM @dLUt@UC$"-q ӊTX,*]3iao%h%p}=BAe=EIyQ)#j6tNKVS,zm"4cO_t:Td?)YICJ4hܚdO::4p_T L])ޔ²L 瞕4Lxj\+˄.uW6b|Wt^]u1swbUE?5Օ #\XjIpSeZ 6$lƎ`U6rpP!bAAxdָ&$" R"BIjX G@>QD4e*2gN WB6Dw_E'{b-̳d}-DPYtD֮|3P^ s8΂YjXo[EH:!OF^Y>E|Jkx2++6ݸ$}d2%uBZJBJCjLjUoe?e?2jz )0$RD|h$Ϯe O}TpvNdgɤ)z Ke )A06E~4$iK.#%@0f41Do e]/3=^AL$,8XƃW Q_H&|8dyFBo[#&"MFQcЧlM4F!T:*&@Vbj'n'–81|ae&" QS@b:pTdZe9Ж NaEhl&eǮ$_J!b"qFfzO)Q\q4&afă0 r> z'zd.z(,Nnt%m0)N.f#^'*n'IHk2tB)|k''B*ZlP*oN"FGxBn|"(mz"*m)e2,),)w (ٺ"en /$y/Ms01S1112]s4ꠧ #S37ڍ+X3@$F096[&@]cpkv%M((@N 26Y6DjcF~0i":96E"L"$ cb/Df.MbbBH@˘ph( !,:?C9""D%J(B a8l-:*H0G䖮-6&"$A8c3B¦ni8Zt㙶espcH*"pf9B> 7eMJ+:3C |ʫNJJ̣L;=fl?]Ͱ.LeBP2Cjv`޶\@Jo!,EtuKrvj#*L>CM1l:K Pf~r]0)cL0Gt*t[ 4I$bl'z bT8~ chLУObb>#}Iv\VӖBJTPݰֶb7g6x/h5Viv$JijVjjvpeMYEhkgߺXMlm/˖^v]l\"\2&"l+n#-N<Bo8tc4dWZoK΢n/8H@x3VpK$%Lb?XFUIDH)+Ou=tw+RЪRQS$PQ((Ml ܇жtW{oQ5Rw.ŊVHltWCqL/j~=B#Sw7:H-&PnW&$yfc:HQ,RHE$~/%(&zn{ G!- !4\R躲mW0M@Ėp@-$zVe`D/W<4{1" ;PKc\RWRPKAAOEBPS/img/careportcg2.jpgJFIFxxLEAD Technologies Inc. V1.01    "!#(3+#&0&,=-0569:9"+?C>8C3897 7$$77777777777777777777777777777777777777777777777777  }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyzw!1AQaq"2B #3Rbr $4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz+ ?[e<P6z&[) pZu!))kJ5(Ŧ5i4okh[x@ſ<-}o?ƀ5i4y<[Ookh[x@ſ<-}o?ƀ5i4y<[Ookh[x@ſ<-}o?ƀ5i4y<[Ookh[x@ſ<-}o?ƀ5i4y<[Ookh[x@ſ<-}o?ƀ5i4y<[Ookh[x@ſ<-}o?ƀ5i4y<[Ookh[x@ſ<-}o?ƀ5i4y<[Ookh[x@ſ<-}o?ƀ5i4y<[Ookh[x@ſ<-}o?ƀ5i4y<[Ookh[x@ſ<-}o?ƀ5i4y<[Ookh[x@ſ<-}o?ƀ5i4y<[Ookh[x@ſ<-}o?ƀ5i4y<[Oo=<2nb3l-{B4xDDe[rgv[GQ%#q_lߩW¿9j>T6{Pڀ lg=@j6{Pڀ lg=@j6{Pڀ lg=@j6{Pڀ lg=@j6{Pڀ lg=@j6{Pڀ lg=@j6{Pڀ lg=@j6{Pڀ lg=@j6{Pڀ lg=@j6{Pڀ lg=@j6{Pڀ lg=@j6{Pڀ lg=@jsҀ ?l{?'^ה%*×;??wn\ú=*|W#(滏fDgqSҀ:/-kq Uh(>/- G\Om*'1P n8EVxfy5 XZ5i\.-ܨbsp?ր+)';0ʑTc31U;N2N9'[|Kk\m%y~[Pa jzlsj0_Ib\$c :x[TqiHO4ɵ}.QMmb7X)9#o2OM-m?,'y4-垛l7P/Y&"źPI o,sBrd:=$h:'m<1y2,љ&dXV 9';G}=/FEv-D\YwPy);:dixIJhڦgoiks?˨n@Uew kgHT8dQۧE''@PRT7k`|H@mAWo=}{x-WpR=WzXCsnvHdwho8?qZ:=KCEosrkp7 c'Ҁ;AZiquS$RܢT)e'#% :eq wqrȪ_rzz[^Zt ifmPN[F֏գKsipw:\0rz-uV{Z%+NJ @ 1Ie7Ѝs!:-YVݖ4bF[E\S~r=Wqz~Zlj jO#>ul^)W$[?t>0_ xڥ}\jKc x/7Д g(YQxG=x--d).RO>~>=;si-$a=PJ6:Y}cAS °BYx\c3Çzr\u țwN I@tgM (3s2* [@/46|Wsqm~nP`@=v>\׊|e r_ M-( 䏂J(<c4x$\[K:-݌I6j]%r95>awWٿɏ3oͳf3={>i[ {H7rڀ)2j?~H^M9oKϐ V/7v #񯈦AXcmUȊQI_/N}9 ,E$~~'5ɔ;8G8oI׵g~mq&Xqr}:tvߴω 9I@ZaKŧSn۶O/_nڍP5gc-<ؙ7kC@\Z%XGqm'g,lXaupGsٿ<?Lvv>mހ>_juP@P@P@P@P@P@P@P@P@P@PKk@F9ȝy^S薬^h?1~ ȣw_lߩqW¿9zWquև_^ywYuܚX~@(T#>[b$>hb@!sހ{?Wr^_M,Fz(晤i4 ame 9s+3t;WAX[C8Jv;x|@1@"iNM,7l=v9 #ȧMIT$i c@{ -}.O6m-g=~P1@ im62)WX9dއ>.`|,^+VC7<s@ɤjpriͨBc01@|dO}h&Ѵm%;ZD@}'MUSO}BBXן94mK{-H$;p*<?3uS@ @ѣLIObI[tzYm [tD_ P4S7}х$áh8-"yzUo[Fs37_S@д?ƞ-~ΞRL`ĞyǣOqqj\IaP( %cZm6("'-'NӮ.,-mCJ<9'h'ѴB+6[ȿ< dO@F6-j%2Ƨ?(~7@ {i<$SJPkkX`oчCm.]+.M6~Щ PrZDbeҬu?f0cKqi^\[XU?X?:QkkX۬sF(ֶ6Z[ooH@Ain>laЌ4Zۼ*? d>ќ@%K(E `Z[q)wr;:&{y ޗiqu1$* €)_inb:mwVMd.mEȡЃPxt].;4HbIVVTv@ZtFk}5kgHd704ZیZUhg{-}9ϙ\ZJӭ,-!QcIހi:Mٴ+{;pr"%EZp BCtdO,$GB܁:-'NUS5dK]xfHG>Q@ u=݅İ褖%rҀ궍k[[ xD$t$7P.K#[M;N5 mϔ4{T3 =(/)YjPYMجq ҳXqEv#-P@P@P@P@P@P@P@P@P@P@PKk@F1u[)5 i[<`* =MEDc V4q-MObcRuzjvl]'l@-/Po}~bl@-/Po}~bl@-/Po}~bl@-/Po}~bl@-/Po}~bl@-/Po}~bl@-/Po}~bl@-/Po}~bl@-/Po}~bl@-/Po}~bl@-/Po}~bl@-/Po}~bl@-/Po}~bl@-/Po}~bl@-/Po}~bl@-/Po}~bl@-/Po}~bl@-/Po}~bl@-/Po}~bl@-/Po}~bl@-/Po}~bl@-/Po}~bl@-/Po}~bl@-/Po}~beGT2q-{B4^=!p* ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (ǿ #@ h ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( }{B4DAc-ԫDݺIE]R:T髷zg.[|_ApS:[gb`2z﷼_֧Os⻆yu-אYRI* ע>, -4 U7"4RuX3ny s_k ɴYՉ8;W9@~lP?ĩ M:1EUp38k]jR!4ڬ2 /v'h֑E%O268P} :P@P@P@P@P@P@P@P@P@P@P@TsT{E<^>$mG{r<u1Z@|#Vo7v "hךf,vl8E,wIx`OJ Mhwimt kʲy;]?<R˧kKXo%F _>ӵO+ms{lޡ =x;P.F/t*. c| W]mp,B܀v &Aoiq6gd}FPqjQB5彪*f@Ovg,a>d>M?.r1F(վ!iVZj@o-[)O_ʖz&,n2"Uy{@>u%\DʏC#8%A\2GҀWtM"Rr֨9'w Wk挶ȅXM0= 1djY.fR!Ap9#:摌jZǯ?ׯҀ >k]jR!4ڬ2 /v'h֑E%O268P} :>=oKk>xD :zM'W4Vt4O؊A,Yt(%OFxJ_#jMhNkm! ˮJhI!"VHp$R;3ҬEWӼA/Nt#n$PdKut[JgymvXA`^^O{n\i:{"h ҀP$>E}=^Uf npNF8]+^Bכcsio=?,aQ@u7:Z5M 4yQK)&$&{W+h7ds084 O>M(ee`ys8'' q@H_K۷m)G@z\s@['^.}!O%Pvx{= V6Ѭo h.mlXف*=o 3FCr\ 0?!ל9ă<;{u qq #xyas\H3^:㷸^r\ 0?!ל9ă<;{u qq #xyas\H3^:㷸^r\ 0?!ל9ă<;{u qq #xyas\H3^:㷸^r\ 0?!ל9ă<;{u qq #xyas\H3^:㷸^r\ 0?!ל9ă<;{u qq #xykcoS~I1=לY1;g _oq|9ă<;{u qq #xyas\H3^:㷸^r\ 0?!ל9ă<;{u qq #xyas\H3^:㷸^r\ 0?!ל9ă<;{u qq #xyas\H3^:㷸^r\ 0?!ל9ă<;{u qq #xyas\H3^:㷸^r\ 0?!ל9ă<;{u qq #xyas\H3^:㷸^r\ 0?!ל9ă<;{u qq #xyas\H3^:㷸^r\ 0?!ל9ă<;{u qq #xyas\H3^:㷸^r\ 0?!ל9ă<;{u qq #xyas\H3^:㷸^r\ 0?!ל9ă<;{u qq #xyas\H3^:㷸^r\ 0?!ל9ă<;{u qq #xyas\H3^:㷸^r\ 0?!ל9ă<;{u qq #xyas\H3^:㷸^r\ 0?!ל9ă<;{u qq #xyas\H3^:㷸^r\ 0?!ל9ă<;{u qq #xyas\H3^:㷸^r\ 0?!ל9ă<;{u qq #xyas\H3^:㷸^r\ 0?!ל9ă<;{u qq #xykmX0e;v?y䅸h_|vas\H3^:㷸^r\ 0?!ל9ă<;{u qq #xyas\H3^:㷸^r\ 0?!ל9ă<;{u qq #xyas\H3^:㷸^r\ 0?!ל9ă<;{u qq #xyas\H3^:㷸^r\ 0?!ל9ă<;{u qq #xyas\H3^:㷸^r\ 0?!ל9dft qz/^hk/hzCTZV5Ӹ #F;UcIt "Oxj+UQΑƪIe\YTo 2]֝:-L F-")DӠiZ7x#LD*w/Yr8W!€k~!UsjBm.Ee2HES;[E{eK@P"vɅbP2kx/uawi9"/43Y~[ w^&S(׬rRgn]-n`^ :YE{mr#|P3#~,-麝nfw!crF ) @( ( (|Xcހ$dd)NĒp(bI(@PY^ I|ۗwfOp@$Aw:ܹ/i-&I)pXC R#RvA Itwtw2ҪTw+7;r,dԼ{ZЋ$Ċ~^EC$L7%L_^j"-FQSy`T]+67+`D.WwKw{;_7Ǔu8NAH};Oʶ؊2N<x>u}*٬ %*D4[$ ZhjVn" ~I2wd*@  ź$3X|gDː3G, tw W7~ in Vg3 FS6w͌ \k:n&wb$q4Hcp= %Vr7H$q*L/@*6[1x;㽆;K{fI+H͕G BeH9PYX|>tޫ~a 5lZL\`2l.u2Wݵw#F̰I0Ϸj3\+:z pK<ڈ64мqTs]r2p;_6eM/m*lIX_[,e @P@P@P@P@P]C=E-vP@P@VEpƎ3o=a),#SDGT$!U9BT1-@Ϗ|:9o.2yw[c2Ut) niPnK ؋bo,KlPd0"qȰL,\[h>4Q25WbU@ 4_W/t2"B<>bL0PӨa ( (ǿ #@ o=֝m4W>t"4GU&7B]^H]FEqW z}7h-قy#k< F V'}<\LgeAVWK* `6 >d&'T^"a[ ][Giu O#9 xJk=+yy},2Ɔ< ]ŀkpюX 5FZԒ+oBꈘWYcPABylT&?L!ӠTFJHa nUQ Hwa܋x x[QѯY5$X̪:0E$ca#hlaԯaW6ȹ#L䤻I^{¾O Buu[,LhQLX@P@P@n_1O6wq+ G`'YdeVR2n phn4N'SwVvsZF+Frƻrh,ڨˏ \dã~=BxU 0Fqܠ 0v _N]nJi+E$V>c2F"2>ﴯ˴Xv^kʹQhZV}| 8+3˪wjܽvj2Ѷ}hNJ4Pug[[.UUTG+\a׍`H*ϱx484ҵ%6}C,nwV\ >SF#tmcQC#fvHIU?p>! O烐 mh]j3n1 󣁻}N ޹yԴE~m%ޥsvN?'WֵCZŝIEg &5\AO `H@׆g'/ \]ֻqtA琨O9$m+;ɮ×VјXp -3-, =.^o룠.,⸅HV?.C Q11..HT*yj"k_ 3 }yz@6(uxk6``’\`V\' z>l1K:.$e 3@i!q$7F{D̪VO;b*H~CzGﴽr-U3sL>f/\V{Rx/$w AgyEeE$r2òlӴ j\Al@$hH>bK@x-O_ 4˫ fy_}1zzƫq|`ohWFh|yG++֓Y[϶C$>cۥkxO:ªJwhrJH\șp koO3͠j]^e000xK*I&.i1jzg|5t56Kzr>q^֞,`Krr~Bʃq&cLuʶh#Nu6mе"4hłnc]1 ǔn($vxbM(`In)-cDhh&Fo)Fe?(WCZ,xwRSh$Egs1U$BԣN<̍ʏ#r0Wz_mlYLB+%Hf9<0@P@P@P@P@P]C=E-vP@P@(FӼ=eXjjʢIޗMY6O9?/dѦWEY5KdwC,#Cn,~!6V)mo=&,ʲ+G3~ :|pZjDIcĀ ~|c#hfCro:[nB-U=s6 `q@P@P@F*dphv>883~g9 \s>_oz83~g9 \s>_oz83~g9 \s>_oz83~g9 \s>_oz83~g9 \s>_oz83~g9 \s>_oz83~g9 \s>_oz83~g9 \s>_oz83~g9 \s>_oz83~g9tf7";~s&3'9ZE2zq=qZĒz}?39QLG=qZĒz}?39QLG=qZĒz}?39QLG=qZĒz}?39QLG=qZĒz}?39QLG=qZĒz}?39QLG=qZĒz}?39QLG=qZĒz}?39QLG=qZĒz}?39QLG=qZĒz}?39QLG=qZĒz}?39QLG=qZĒz}?39QLG=qZĒz}?39QLG=qZĒz}?39QLG=qZĒz}?39QLG=qZĒz}?39QLG=qZĒz}?39QLG=qZĒz}?39QLG=qZĒz}?39QLG=qZĒz}?39QLG=qZĒz}?39QLG=qZĒz}?39QLG=qZĒz}?39QLG=qZĒz}?39QLG=qZĒz}?39QLG=qZĒz}?39QLG=qZĒz}?39QLG=qZĒz}?39QLG=qZĒz}?39QLG=qk7Qc\|cY&?W#=}6}9 \s>_oz83~g9 \s>_oz83~g9 \s>_oz83~g9 \s>_oz83~g9 \s>_oz83~g9 \s>_oz83~g9 \s>_oz83~g9 \s>_oz83~g9 \s>_oz83~g9r v秽Me7ЍWHʀ 5K-LԵBJ~ $:4*aъ/"„FPDK3|NuRr@&6A ( ( c]z@WF8'wV`?// ebc8'.G@;z( ( {HfdRa?3g#*1{o&5L1$H9uScnc(Je{ 5Y$Fs(WfˍI ՙF{wNVUњ&@ :t9@@^ kK@"=Yh|w@GqT,M6RnRw+O Ԓ\d,.cKeI 1NtP@P@U[_GǸhaiV%"9r v2FH@_6]x Qt;j[Pd,"gdsQKRMQz>s_,1yly,&6 F-֏w򤻅 f\ ~xWg ikY5+Z4ydѱXeqjccA  zφ2xGʹ;۴tY7'%|؅^ٰG8"Ai$-On`͸qvܴ>t{hA[XP}#0jaAHHN9IBW緽qm. n.>4'7Z7ʱC&pc7Aʱ`'їOi4]V5dQrbT6Wӛ¿iF,=֣aR|l&2F3_65R%H_6K }« (11؀l]>*hndCbxfjⴋÚ,uZ&Pq=6ƒrh$.o[XPƑy1ء$$`dqhumOzE240j ߔbw(2.쪜}WD:|ev1\H$Kݝ(.p@WMwp\O-m4gݭw4iG.$̙9\%NhK k3WsFn? KyP2 3j7 U/,d'$-q\Ffw(r0B՜ ( }{B4V;8K#`Ip9Y088=Er`pq_ocz d6>Ɂl}}(73{Png+&? VL#cOQ@AFp9Y088=Er`pq_ocz d6>Ɂl}}(73{Png+&? VL#cOQ@AFp9Y088=Er`pq_ocz d6>^MڰB"b68zzOQ@1I9l}}73{Png+&? VL#cOQ@AFp9Y088=Er`pq_ocz d6>Ɂl}}(73{Png+&? VL#cOQ@AFp9Y088=Er`pq_ocz d6>Ɂl}}(73{Png+&? VL#cOQ@AFp9Y088=Er`pq_ocz d6>Ɂl}}(73{Png+&? VL#cOQ@AFp9Y088=Er`pq_ocz d6>Ɂl}}(73{Png+&? VL#cOQ@AFp9Y088=Er`pq_ocz d6>Ɂl}}(73{Png+&? VL#cOQ@AFp9Y088=Er`pq_ocz d6>Ɂl}}(73{Png+&? VL#cOQ@AFp9Y088=Er`pq_ocz d6>Ɂl}}(73{Png+&? o*_'Pq'+'|6=3A AFp9Y088=Er`pq_ocz d6>Ɂl}}(73{Png+&? VL#cOQ@AFp9Y088=Er`pq_ocz d6>Ɂl}}(73{Png+&? VL#cOQ@AFp9Y088=E9$:k/hzCT-P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@F+Ǥ?@@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@/hzCT-P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@F+[q7@F1_@?/oܗ7PK~(G%Myߦ <h€4r_@?/oܗ7PK~(G%Myߦ <h€4r_@?/oܗ7PK~(G%Myߦ <h€4r_@?/oܗ7PK~(G%Myߦ <h€4r_@?/oܗ7PK~(G%Myߦ <h€4r_@?/oܗ7PK~(G%Myߦ <h€4r_@?/oܗ7PK~(G%Myߦ <h€4r_@?/oܗ7PK~(G%Myߦ <h€4r_@?/oܗ7PK~(G%Myߦ <h€4r_@?/oܗ7PK~(G%Myߦ <h€4r_@?/oܗ7PK~(G%Myߦ <h€4r_@?/oܗ7PK~(G%Myߦ <h€4r_@?/o%M`Ìvab%F05 ,ee8*D-=: t%4s_ >p7o8]6P le(@6P le(@6P le(@6P le(@6P le(@6P le(@6P le(@6P le(@6P le(@6P le(@6P le(@6P le(@Zı e7Ѝs!:-YVݖ4a|]q6o8?_@]ʜ-OڟmrUpHOu.a *S.w#PGcF hyt< <7 ;YAs4DUP۝~\1ytytko4u=Z-"IP|h.\#KG! g:P>]]]]SկѴ{NುPUI8| KO XTCɖXxV]..o-4gK5GT/9f8@xO⯅c~}[8,Qg 8xkxs:wwK9i2Vmο) IC:O.............................................................................. m-Ke7Ѝs!:f-YVݖ4bF[E\S~r=^+Sľk',Bs=(˧h&n5idpвN0ceŏ9]Eq!E@JD]sH~ |Gl@kCԣ4&;Kέ02ۈ+rA>w-kkV:%|'UrBOm.iNsg~Ϙwhx7xb? .94x)m!.,[ '9$=xSChz|v9%2I=OS@WvڅGqo(H9ׄ|?7Bvrwhx_G=߉!٫]?z I>o xQUѭ9 Þ",KǦlW%6Tzb05_- ?$Z5*0p[hW:PwÏW4[sC? Av`s+2'iGJBRӮl.̶38&8O[|9 2Y%_؃@"G<\c\ӾԶGG_J_xvE൘\f2/xSۛi\LI|u=дM;úD:^`ǽnXĞP@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@T/hX[Ef<HgV}(4?Ph?Ƞ@٠"A<#EfxG|>}(4?Ph?Ƞ@٠"A<#EfxG|>}(4?Ph?Ƞ@٠"A<#EfxG|>}(4?Ph?Ƞ@٠"A<#EfxG|>}(4?Ph?Ƞ@٠"A<#EfxG|>}(4?Ph?Ƞ@٠"A<#EfxG|>}(4?Ph?Ƞ@٠"A<#EfxG|>}(4?Ph?Ƞ@٠"A<#EfxG|>}(4?Ph?Ƞ@٠"A<#EfxG|>}(4?Ph?Ƞ@٠"A<#EfxG|>}(4?Ph?Ƞ@٠"A<#EfxG|>}(4?Ph?Ƞ@٠$DXj*€Ie7ЍWHʀ% ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (_{oZ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (e7ЍWHʀ2|S}T3E3]v*ǐ8| _Ěw(u,'"HcT'eKmVSM+$ ,R$2$a7 dS6wP^B } SҚ;)gyTDEoAg|p=x9]ﵽV^E-i+y= Fd߂K8(0 ~9,]3ndмE~Lf 6J뚇t-*kɯOm4Ztű$[RIa7uui =RIRyy&29pp>q F3]&Sf5ۘRʹ+:fx\mu {+N+RW1HҴX:`>` ^,6si5q=sHΌ$!0a!HۑP0s؃:qo΀8-sR#ιsu˶1r8cv`'5wRe[K)~$)mgI"*,rH.XF񮿩\%Oс M"2ek Wd5&>-ũ]'Rxd >Nf'AxUK=N[ɭ&9(@YY!#`x\`Ax_}YKن-ݔ47 FW]$F,7_EIaw\D)HvW% 2\/$M)n-h_ &Kl Fr2@3,sYfɡyڙ#͇ dl 5ZTד_is(4hbI|7F'q4FoM7[$z+6p%LeÖr3|hEj߃yus̑Y nrY pC`2> ( ( ( ( ( ( ( ( ( ( ( ( ( Qh( ( ( (_{okvik|4I*ʢ!;NQpG8 ~4t!ZE(DW@KfV ͻ$K|'\kKW3BcHK V 1PB'55;=B()6ΑGo&8^¼|d8qր2[Zaa7y.eT͗@?1x<0T$vHڬl;ۓ_ v^xT"h2&6|߹#>U/KѴ4t]+QeiL13˸l6zZe܈WpYL*ROs@s ':d@RCJyi r2/!@%ŷzKN7c"*}eV-#0@(^k@=4mess8[ @# n6vWƙ>-K35ݴ6dc>a1xS') .H4oɯY$'$W >~SF@5t<Td]W/wۈʑo͗,0 T #w]aMϕ1;~ĤH;BxUXI[m6͕vg 4mi"吮ӅMcHMŬCO`@m6mޣ8l*f1PG-l4kNeSH$ 819E0f(׃8[3cFe NoLh5 qTaRɳFI0mN}|}y7[,<%jK{q!ufv0X΍Cxu!fDch٠]\ PA''ހ3btggTKӥVJFW0xF"/סCw{ .[tv2EnWp$EIoTд}{F. 闬>=j(1]x'xNn3A$a$/i?tvLy3.]$]}]tۗ'l簻{9y|Ix@+~T%ӵ_;"H_dB~k|*FpyxZ?S#m(KU(27`X𕈷<0j[Gy}0S#pvk4a{.+,pyR`Hc8[v=3F-,ڔ>}M_1GHw` i!kk×7|Q[O`X(zb9yQ[`k:LrjzF|D|?4Ly 9dAŻ˵ѝ 72,L}0e3 c%nnyw e4W'8*i[ mΈ.fq$P3:ic١ЛR>gO>|Ao>j;`xwD˖mJ>_&ܯAXܣ$X c`0E4޵޵>(쭧s,SoJ1<(Car05&95=zEѣm>Mzi">I&UIFnx2K ΐZWJ&Y>2ʅ1 <2zO@P@P@P@P@P@P@P@P@P@P@P P{P^gm $=g˺t~n3o|maf,K; 5Ds: 95x|G氄Ԯp%º6@Oh[ntۛ{i|Hsd u3*D!a r(6[XϦZ]^t"A  峆BN yY]3THNx$N߱ʪ;X }cWIzš%`Ip G6M(ILHͱ.b~@Úֱmٷω$MG#&,P@P@P@P@P@P@SQӠDW ԰6GQ8N-/H҃[ n1׶3@P@P@P@P@P@P@P@P@P@P@P@P@P@P@>=om?K@ WJ-u>+kx QUI9ļܶnibo6EeQ`~>Fہˏk7:r`leXC$$pҵPH}JJ$ݾM+01_Eq=X,-N:J6VC>خ7:gijVHoN.IY|ϙW+:}ZBy?s b\v$ɽC1e72|QH]}2)cI9U;BT"|.uX_\!`, ʖ "dr6f\SV(І1/ZLx 7mj [0@_HE2{B—VG:{lk0b%aG(?6G#h cֵuahA[= ״~)q6N2-/ր/vNo*]R-.N@^f[o iqr"Y1N2V9 =>a@Ե];Hmc6ŒQ /j*okkwbh>y ( >h"_xv?״(mqVVKuI$m@`z˟M€_xb̥-{2T#*G@#6.c&.Pčpp̿O״e>xO/v݀(?> ?xc;tێs@-sIѼv^n/3E:Zϯ_ qtdwBKlLyq@ *H2V*˟P;;P}GUӴuag$cRǜe?@|E^k6*L蛔Ż$`b hv6].y%DYW$Q@+x-IaC"8`GPx< |U<;^Ӣ<) nwa['[xzsn >/Ko2AQu7 ii|څiqeo6x <9 W]XCsm&vK Dl0'K=桧(E-6$L".AᅵEG&]7rmr5K*,/ YU~PPUa@4oYj\Αf>eD?:%դtn~ E(HIc,]Qhimu5AdHǗnؑ0`~S JԓR^ VQ7D1J}j 09P>V5;I<o Ҋ" #;@" FŮnuH!l%QYrFG'Fֻ4gNAYëz죴ĢvW.2 ̄Ajzw_N}/ö0ZWmw-[c ` #`BH'FHO,RvDZh70,r(uߑ5Λ$M;XvaGcX (JuAjjuݵFKUYFrXw ?wpx\YT xoZԡ}.<[ʸ%L#$:dž j eP- ,^b#B HU[_{Uxe0ZQ 8r:[` !F6YZ5Gq 9o>oX"X]Mco/Lys&r~2viiZgx$vtd94lv:@|a]kjz_}JQ{01{ _ws=}gc*^|{7/x ?Hźze힉 Mire13 HF. ;*tt2ϧKul-nZh A#=.uAjjuݵFKUYFrXw ?wpOj~ffSO`/ل~O'hj:su%7Q<BM";G#&Kc'=x<;KwO&Kvg$@+9i@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@/hzCT-P@r[jx+~'08Pp98 /5,ss.dYHgNKcgɠ AkZˁg}]όq -eeoj[]V(s;c 'ha)A1;L.pFWp@{?.?c&E4k+$y<|rKm}Mcgo[XZG[DD'j(<:@( (ohWZO_ǨM!Ȋ,O9$Z._$k$<r0mPsHY.lW[=&/o2K˱AX20r-kYO1mSa9`BzXˡ.y8'R$̇r&8#$yP ܭۖ{FGt &r_qҀ#/f?ր ( `.d FmT ́&{{o=Ԟ\IN $ % 2I82!4,QՄ gA&+Ԓm!d`hv#$R6_g},M$Fl8fiURW%۸E_{XfkHbIwώ:|ߗ2:ƥwDG6Pl!\@4cHtӠ;ēld]͒X|6Z\ߴ ʱ pLxIgIr%ئ޲vx/dTZk&Eu 3ȩ @ ܘnm>\H2 31rEmG}o&5n!&tQ˅9J7@O*o$5.B#;9W>{P|=Gi% \;[Jyq$fvPw !,./KݣW[9`]"eC7ApcDYޗ<@J+Uu9A@K{]*YV'I=om?K@{$qinb>HTN2Jz0{@1aSmjA+`n|-I.Ł8af&oRn㹝*Ll> N{.>- . ]H]XZEݟ<+i"Դ>U¤Z3'1lscP|3uekGAw?ܟ1aˎC@3&S'XmN_٭ ڭ2M42@rb 8en66Z~2u!n1tm#d|xqpJ}v(nDaB$nP@PfKiFA2O a  R@$SsҀ1u#]No!;{渝m煣O) SZ0!"n e|y!y n6Acp@4Oxq{ E]:β4r0|цrY޾f7G1XD$4 7q,5cy5+|*m3+m1Ww˃@;GNi{i[J,|/s]-/!Wn^ !C1<`eEn-Ps%{dU2$e($V* ( *iφ,t{Y Nc1&eeF9h3^u_N#)a4M=]UrIR\Mo6[X(i] u]N@43-4pƎUr |7>#Mɴ9)yDh̪UF!$uZjwofEoW,, `H?!\Dž. iZm\GngC zurmWuCN[DD2\3F`Y%p?<COpirPα,2Feʕgcm\q 24W*fu!&UvUA'N ( 9(/˝bL専[[H3y ȳ4*]Jbo0/kVtZtG/Iy lohƁ%o-oٽCc$ =xrxgQcM>h$nKǛN ]pjPTis˦m3]Ȗ["#Ir06L/|Yy}jS_yA0#'j7]>/A7 b5*4BB 1hǙ`uVYjP+7GqWP8'w~ մ6fmrw@R8ۉM N@$m<:566hu{H$v@x;cZNKN$2| })U;@:Yf[O)uVA#=J_xñ*T71WW0G$j+Ӝ(E!Lj]iG}lov9;~` -sTlh-nK΁x *xc| 'x*J # ; ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( }{B4^=!p* (q@rsM(9uoȬmo$xq(<. A <5Rvl2@'$ o}+[kkik%!s F = gK4੒IeRT1#1u+ H$SxSHK|zܳ ٖWqM،.7jkg Hfu~8$XP@Pg]Vf,̙HYW_pA7k2.PI~ ?F1F|[ O)oZ VV9~wd>w7:^c6L)dKe`dY;C;K3@ \,7Nyd#1*fxOI#[r7nAHМ>O Z[-yrAs,2.Lq' @'$f4᷊8 B$QT@8dM"=Nk*妚H<c}Wo.00n-nXE,RBJ;F2{72A}NHEɩ\R_(@0@ !uݞזm|ջI"E F]fhnmb hUQ€1ckKn ҹ{BDS: c4|M[v:FBc&8ʃ(OKmtWXQYػKYɠ P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P PP@gͬv3NqL"3]"Z1}k&:-lvch(r (%~`Cz|s^M'JZ4_2?: *1\!6B<WW,0;+/ܾ8;Cm8R")moM tkYFy㷙?tfAlQbt{ROi>k>ݘnFlD.-7vL@u>H(tۻN4ui8H62.*ۃ"z<[[ooCJ8Bzy[nl.n{DDIi#)d d(B*0 Ι{cyJ$Fk*b $Um*VWx5̚xlXM"3EUh ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (_{oZ("X"K.H'u@fU$'s`vɠ {P85u;Z,fG!3)#t=P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@>=om?K@P@# :k-gV25E8JFݱdqlPP@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@>=om?K@P@fx=JOj+LjbkV@28+@=ytqxYҼGxV:dmhC&an1g I=OU-sgy,#U(k$Ic $UsjX+ QțLjF?5;-r+ۓm"@i7PQlES$ⱆHBEYܖ#9N ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (_{oZ( (g%6fp8'qr( LK]h+LR7eebx`z@qKJi%& { >^z hǃ5] *pygsRU 3=AxW_V!'41[)erǖޠ ɭ<5քhtϦh ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (_{oZ( =Oi{{a%UE)'NÕW )Qg 0wUk /o/hIqk>/ҋ[-Φ5$K)VyfR[cylT;(uRW\%~d>7/(񮃮jZַ{K,BHeR\b%$ZNJu67Yj\ddacm&`و!77}:zP@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@/hzCT-P@΀(izGȞvc 8(7A wxsD[KFP"qnG!A`H+M2-,-a;"0p&,P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P PP@:o>{Ms* gcH#&/@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P PP@ S=om?K@bP"otIޞd1F>b*PGA$hdg?ր ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (ǿ #@ h ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( }{B45Ly\OM?c>44}i[h?8opO@ƀM?c>44}i[h?8opO@ƀM?c>44}i[h?8opO@ƀM?c>44}i[h?8opO@ƀM?c>44}i[h?8opO@ƀM?c>44}i[h?8opO@ƀM?c>44}i[h?8opO@ƀM?c>44}i[h?8opO@ƀM?c>44}i[h?8opO@ƀM?c>44}i[h?8opO@ƀM?c>44}i[h?8opO@ƀM?c>44}i[h?8opO@ƀM?c>44ƀ,P` PKCDPKAAOEBPS/img/cachegrid.gif!=GIF89a???*** &&&uuulhh@@@OOOooo///___yyy~~~644|||vvvwww{{{Ɋޘ΋Ȇለ咒압 PPP```000ppp扉NNN... """^^^VVVQNNÞ>>>jjjTTTsssCCC!!!$$$UUUWWWmmm)))777yuu===KKK󨨨EEE111JJJDDDRRR888,,,%%%][[hhh瑑;;;CAA]]]999񞝝eee(''###򫫫kkklllQQQSSSLLLFFF(((555ۥGGGiii³cccttt333}}}ԫ㔔ʁȸxxxzzzqqqHHH:::MMMYYYrrrBBB!, H*\ȰÇ#JHŋ3jȱǏADA $G2#P㲦͛8spĂ1eDx qF~aR<ڴիX6}A#6,!?].hϟ@1bv#!wb;CZ=xPcg2c~o޳WZS^&Wn0F md"۬[1d>L'`mTG.C3 ^Dxpf s>k}ni|C( ?%[PeQ`ZTuQ#EPRhl xeP aVx^}ś"PDp=kmO H&dV֕elI[#f(W#Y4"l& jqY'!9qGRb䠄Q& fwз@#wSZ%Q\٘NI$Fjw"}yބA ~9(yAy7jW jPX^Ċ&Wz0ֳuӵ5-*ҵG\˖WH-&^O kp+Q' 7pG#Wlgw ,$l(/A0,4l8<@-Dm6s P7X'9uVgתmmp`mNbLl80vNmwAAADP TtwG^A Է~MThP4ሃ@-PnUCHЁLpAn]:4O@dApP hkwqxP A t:N#_k, Lx[&f]:g)-G<8^37 j͖9h@z`$` @y2P үL+^\(X+3[r o?8i t. uI`]u!a L"V/01k@*0:6-N[@h66q˳)Nqh )3S^@zl8aS/G>:\A4D ^˗LK$Ii _ԥ26c f֬ 1ijW& r2L"9wvXNCs9#~ @JЂMB y'>oͨF7юz HGJҒ~ ($:њTԤ0LgJӚn QXRԦ@ PJR&DKiO=S:PQ FzswȪVծz` VUǶFhMFЪJ׺xͫ^ևij͜Y/ʀMb֢jZj* HP_J"Z Dh@MjjlgXn E_S6!f6@eHpJvWkajjkmKق-ҔYb oU[VW+ʍ DN6n-{2j/qWfTMI/s`WB@o`所MlT_z5\ᅘ7@&iU"-eo[+p{ay'5S+X!#Py|x W y)b%9KF1`x w d!]n͗A4ONH[34WY5Yn seGZg.!ȞYgʼn/gn/u#MIORcJʢҭJmBдɧ=jܙ1)p菳~A.mLZt$btÏkh'XW@3k$gv!P[rsȱ8jC46͐۱ "W4؁ۑt0 T-m$ U-DP n~%$9 ӟ;YulhNE\#w4:ؑ]w4̞ 3"93BP Y}к!Ny`@P?.v53o2msқL%ɵ 4PW;xL[{n;t~%:MC7mKs@2soi'X:?GU7LE>>xLxgw'Ifbx3pF9YT7fd;@tXvgFXVxa?EZug/DMDWzT3pY?sg|kDkgz^9WfBH{|S<wQmu97cz:>W;:$KzRwi5}7xtBH;XBQ ypuUЧ~ؓ3l4?٨vlŔQyp0 qБZ+閒.7XQ^d w Q-V gC:'9e cЕay{ 1B.IOCr'p2y7e)fXp`1ppЙ&#@1.u8~77#=#DPgd HYي˦KY 6 7\`zc1b sraj}7yF@{cC"DYdqX <8w:F{eϩb|g 9 xuנY1Y >bRj1Ct&AF:PHtRACK Ą9IHCKa.֤I9>=ޣx>8j71giyC=Jvm1Dn y XkHlNt{bZ}h2ݚq~8;sZ' ~NÃtoT:sIn%D[}tGr+G?ry_z^BC{|sNTÙ⫣ !P!sb9>`<4CA?F/jG4ËCL,JyKsHn䶐ڙ$ ØZ80鹞K8mycь^l aʸgaPkED=\<&:E2;W_;K<˂xB<]CD?|<{Ⱥf -a,LX(7oA:3 iHА*f;H--X1~/v &GF*ZF25gLxlh}M]3-uW=:3q͸#mqL֟ЩQ*}S gnjʀ-klgɺaz8́,g=ϲ֟C]Π !uH|c}pig=ۖm۔۽rœֈmڊmѹt-]RMmݍݾݢ}lkb]z2f{5]t<<ܦZxj֌ W}s4]sU .V|p&W+iŪ]E]^MP(P\2NÒ$1Qyh4& Y$Ū+>ҽj㩡3@>hmcZD 2%TNeIZ\^S`.nTdN7f߬MAZ=oR%qW>cQ ۷>M W.LYm~W WcqNe~~ WR>? >HS\?UQ*,.0$t!'8:<>@B?D_FHJL@0$R?T_VX,Z^ +h?Cd 1n701cto7j@1Sz5J1d5Y10J1Lqo0[Pf?0"R/f r?2!b?H"bV?:!5aȿ_֟?ڟo?_#XA .dC%NXE5n#CE$YI)UdI0dK1eΤYM @oA%ZhxfNZՠm VaŎ%;L׭#ʮemh[]g_ GtakJ&cȑ*Ue̙Wjgɨ ] ĠfkرeϦ]mܹumsk6!NqgNgt!XA@AnAg4ZB EXbI%%Uhbr@AdpX@VAb=6YZVfi[n/0p(b &+b/^(@ƒ Mxԅ6WuՉ+l5cE&dUfeefu` 6E-hh}c;8K>9[~9晵w.粁F;mcv Yb/zckk.|lDWȗrszo:6u1Wu㎝nZ p?gɝ|w?]7}q~Q__kܧat^w5rkn=z#]ǽa T.W>Bs^콯Ay| }` ]X%ޏy !'ARP|$qC})!E Iqy Hh*10{VP{cK1Fb=0m_@؅ JaHM7= `F;J!!=i@Pˆ6 Y8 H1`ư,@HhqL"sKQ)UJK^ Ёjl` ` h:P&# 1 5Q=fvy_ct?JVc(t2 '"~Z音0>1WHD$`?bmC'-̨6*5 1!#!f F$PNδ5i6IrfѠHʌ) 2;.~Q6v1P!jѸt9ixE4⑓5ƺ2 ̫ {I&2_&쳠h6d@OYEz8r``!ZF2!6! NcPCȐ T4(0#mAP3U##[JQV160U*Q& T p$`4d` pGD cȗ%QaPk UN@71 b1FIªn'VPP1LĬ'H2 c@q##X~ ODa1ǘ/fN!h'ArOYiNkJ"AfWd0"46%< ivĔOoh#w62cA"0f"gf%-Xdvw7G\2Ϟjlf[6viO.cm{F(noBݸ.}y{7v [v[Ow~׭コ[lp[7#R8n.qk߁Uxosr[8]^23Gxcu{s7B$u.@M΅٤Z-?tָ̚R'cufk,e g wʣ뀛5sH{mk}._#W>:o6n=N{O xCV-Ī1/xv|!ui IܛDßQ@o9l͂|a/vٟ50nta |=' TFՇ$ 19 `GO/` l>ҽoS`{{[w>(0W UysRk8}dH@;PK.i!!PKAAOEBPS/img/careportsqlstats.jpgJFIF``LEAD Technologies Inc. V1.01    "!#(3+#&0&,=-0569:9"+?C>8C3897 7$$77777777777777777777777777777777777777777777777777  }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyzw!1AQaq"2B #3Rbr $4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz= ?@ nў1Fݶ.}ig݇mu4lM7M8 R#V? =P sN:{zQa(4ZN0 ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (S@ekۅw$Gl 9?ʓiWVyޏoo[\덦[JC( '#'ޖk{.-h[o4 ǓY5eM+SVח4Ar`˷?c*,Ǚ+[sNGխS<$U#<;JPq\4kFMGokW{࡫jmCo5:+d V~ כ{9C#Ooۨk{N8yADt~(׵=;BnV;2Pp+r+<&uCD>wR{_vB+/ZvolwIdCҩ^-&QumFŠN)⛟\'mQ]'5s}S}^1QskuT/b Pxpz ?qc"֒GoYYyww"8zWTaȭ{5IFO5*€ ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (>pqj3PzҒ*3t䤷G^.{ :SO L#db ssNEsםl>'ߩ'{ynɠټ'ӫ`8Z]xO M}4JaۥK7$ټ%R5yV WåktX;-՗px OU(ݦ<&lIі}Sat!@{;q= TsE.T10VNKx 9-cX0ۘATR4T=rKOHfHޔmfvn!$d>SéYm-|lxZSQjWk?WhlR'-$"`[q8؊nGMUJTƊk5Qx^M~nUmgFNOlKbVޞp#c%{)b!Qk6aԣ-:ID_L beNKIwq䑌RwGd%1P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@h)w>Z>ϵ0u.Vc VnЄ]taOR} u?n+yFl?)-.aOj[z2fмK"jڕLJfQ)ˣ(@#T^@(c\@nj K~8,?'vz>$~9{=FQ7,0v%8דho<%Kۈ\hn2Oh玴/h37F;[lua s@o߭wpn"1/$3 [JڄMH ᑑCΧ}W*hNjZJ |YAjnɺ)m`a9GN(/|Iмo,KkAo )nmg|"AM4N7 ku \'$>4~2<{NA[iIeݙA1y?t ~SQ-q$gWIc:Q*zSU8n.dpՁ(Q;/ĺ}RFbmf`]ߩ14|S5zEk]OO}1H''hPτgk]BI/Tdۮ^IZ-ctoIcݖ=r24em,mws? n2[!G'<zz·/Y=5鰽0yֱ@+92(8: ;nOjKϱ#vwvFHtwtONYRWHJ|>XnG|jf}/P!kˋĘ}O@p <ſYEa`cPvuQwGv'ʠ80\c@n+j>"Mn;\&4k2F],G>rqָu9of")(e(A<`pA8*m:^*[H'?~ghWK:s%p "my6 6}@ך>|l{='qx_%䓙2$ ki"y|)S4>]IL! / P*ne{v&ݍͺ+c|̙'v9^kO pe|c{ĜjeOq$MX̽8_~8PϧZ#Կm'Zm2w\䝤V'Qr9 SH,t#6@3?C/͞B^>b `:ë́ twPmb{uӥC%ɿh᱖8Jk*eI ʣ,~mÚÛCD h` f,s'2a4 asW,mHlA0<^2]BmʗiM Pd)vz-l[A y0j(u.AC`1i\q9HIHIxcL3 KXsk ; uGA)pԭ@i n:gOkf;+uƫCwsc$VdW]TTTc999 7Z$R, %v䈣3|%q@3͕Υ\4*9EbrUoݐ|c$)  -+{]h10:P7 o}@7 o}@7 o}@7 o}@7 o}@7 o}@7 o}@7( !4Bh &M!lP-@Z@7P nu@7P nu@7P nu@7P nu@7P nu@7P nu@7P nu@7P nu@7P nu@7P nu@7P nu^aniʀcF?€FPyM=_ C ~@ '}i?OO(>M?€i?O ~@ O'}笟P%~@ؗzb_'}笟P%~@ؗzb_'}笟P%~@ؗzb_'}笟P%~@ؗzb_'}笟P%~@ؗzb_'}笟P%~@ؗzb_'}笟P%~@ؗzb_'}笟P%~@ؗzb_'}笟P%~@ؗzb_'}笟P%~@ؗzb_'}笟P%~@ؗzb_'}笟P%~@ؗzb_'}笟P%~@ؗzb_'}笟P%~@ؗzb_'}笟P%~@ؗzb_'}笟P%~@ؗzb_'}笟P%~@ؗzb_'}笟P%~@ؗzb_'}笟P%~@ؗzb_'}笟P%~@ؗzb_'}笟P%~@ؗzb_'}笟P%~@ؗzb_'}笟P( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( CP]H4q!Cʖ|}0hD?>?&O<#hD?>?&O<#hD?>?&O<#hD?>?&O<#hD?>?&O<#hD?>?&O<#hD?>?&O<#hD?>?&O<#hD?>?&O<#hD?>?&O<#hD?>?&O<#hD?>?&O<#hD?>?&O<#hD?>?&O<#hD?>?&O<#hD?>?&O<#hD?>?&O<#hD?>?&O<#hD?>?&O<#hD?>?&O<#hD?>?&O<#hD?>?&O<#hD?>?&O<#hD?>?&O<#hD?>?&u"D2JHL (hҀ0oSN>" dX3iJJ)kFT8&f_D&d;CV9cڱ[ǘ2ʗ75kuko|_kY5h笿4|_>o/M7_&z@=ekY5h笿4|_>o/M7_&z@=ekY5h笿4|_>o/M7_&z@=ekY5h笿4|_>o/M7_&z@=ekY5h笿4|_>o/M7_&z@=ekY5h笿4|_>o/M7_&z@=ekY5h笿4|_>o/M7_&z@=ekY5h笿4|_>o/M7_&z@=ekY5h笿4|_>o/M7_&z@=ekY5h笿4|_>o/M7_&z@=ekY5h笿4|_>o/M7_&z@=ekY5h笿4|_>o/M7_&z@H@ 3_!P@?NKu/Fwe^rD{UG{WqPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPph^c Ԡ =(/zηF|#u_%rD{UG0+Skڒͤ,lѲ[t{h|Gg:]/5ŷ yJN=8L6|[};Z|]>^,{$YcjOt OG(lRhB~Ҁ<|P3ͺVɮEc!I|#@"h6{i]bp I ЀN(X_>8@j0Xi΍k-I` |H m uwmCsKQ%L$ 7Q4c?&|exwK[VPUGtn 9>%j?^𤷚\F)m;잃Pr|h[ '|/{. -BAq[v$ {(sPWN d^[ !-HPH9z~48tg >_5۔Np2wp6t K.bTԴ۫d=UdLy/$$ 9 1ϋ6}wwqi?dD%T8f\_k9^,{$YcjOt OG(lRhԕzP/% ->wDb#b#x5֯-G `&is\[t/p0-7>ۿxÚVu+[wiFP%u#έmhZ)mkL {>_WKwሮ)5~!ۼk)œ>Jc _WصrMЧԡmk۔Qcmpy 18|Q64}5-YdCY~Nh7C@׏ C닝Y'C4 nq87wŽoZkiqvSO͹VEx >潡x-P^40$p"VO͎Iii'%1Dq#%$@] 7֗,y ;m?}zhm>;xēYnRgާ/q8]xzρKI4mJ\;L si{5{< Gn5u_H|[D&v?w4(Qϲ}h+B,>Yf ;t=C6lᥞ--vn'f$d9{(UᏉ:ךMņi,PkE#`@n{65?Z9agx@uAJg x+wHmA&ӭ.7#+(f;Wxϊ.kM:Gg [c0~ʩONvt=cz3D1qs Hpf<(Ƶ&P Z :$h{)Ux@iz%Ķ%oNYo%[, !dd;P ':ֳX [Zn73`~D氿6fe5$G1TNxz~=O7@nXA,@?1}(|iXBc hpcz쿄:IOHUv!v! g|uջ's$Iڹ\`n#OoZO ^wGӬJ\z"S3mN6^ nxOkSw*ӈZoUQTj֍K[42Ut@p9[ hN6 a xᬚ h݉%g'tvpWnq*h/ॾnf(G+" }[ր9}{ᇎ5]+TOԵ1 VO:26Hn-Tq8<, )F OI@P@P@P@P@P@P@P@P@P@P@P@P@?vi@xDDg[rgv]Gq_( \_C+u|P@P@P@P@P@P@P@{O_wy?=}(7E] w'e|eJOjW#@ @-崻'JI @^ΣxIa)frv$'SPu>׵AjZ$^ds.c ;hmX`BG.@/x_w1k:Lw3I%H$rx 3L#ӭb% Oz@!{쵫5Q*;.dGހ.]VV6Bc5ڪ>j ( sH=vZ՚G(Q2#@t M.++x]UJ@P@P@P@P@P@P@P@P@P@P@P@P@soPP@ZG{%˾'c&H ##ؚM&.IRgfk3Gm:K+ $Rf'$ Ε%J<ꪵRM+i'֧}?MhxG@'4}?MhxG@'4}?MhxG@'4}?MhxG@'4}?MhxG@'4}?MhxG@'4}?MhxG@'4}?MhxG@'4}?MhxG@'4}?MhxG@'4}?MhxG@'4}?MhxG@'4}?MhxG@'4}?MhxG@'4}?MhxG@'4}?MhxG@'4}?MhxG@'4}?MhxG@'4}?MhxG@'4}?MhxG@'4}?MhxG@'4}?MhxG@'4}?MhxG@'4}?MhxG@'x<7u$ *(Ҁ3PP@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P7_7F ( _zƣ k`1ԐH8uj/vo=IRh#oغF_Z)P@P@P@P@P@qߥEK(# G|AEuDvig0 ν j!8czz9UUfEʳ ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( =&qh@u= ,yq 38:0Х:V,zVgxoþ*,(zZ]\[WٓwI#mF F:PK ˦dZԡ;d m+'xm- mNm,43mGOT<_./-Si1Ji#$r:Pbn#mNF.^IFVuPyOɒ$碷4n=CWO]CXt}ж$d噘|8&y@DjZLUulc'{=g:$m,a?>9 pzt v:>0BK(աmЎs|Չ l-Po|LiswV&T9fŐ>m@cn b:=7O~ӫyxqƙ| pZcV: k0$ԮgHTemdqd9 .)kqI{{i,\XbpO+SY1rBJn n$|r #qH\yPXunrH*x8c4?"K1fЍ]p.=H q@q7|w/g}{P3Iݟsw[j?dBWR X2= @[k>Tԣɐ F0X& M摪}JҰUN@m 1@:> Ps]ɽ7$~\ 0'ԾxoDCS98%hTg.X'?J}IQ%HT'J>aYVg> wwtq\Zջ;|8G>pst#րunvx89:~c@ wwtq\Zջ;|8G>pst#րunvx89:~c@ wwtq\Zջ;|8G>pst#րunvx89:~c@a\ZM&-+H-kpD"eUURN0O+2GbiЬ<#cȯ%{[9DLҩ$<`1`%,;#=Wabq+㡠A: jKMNqs%3 UAOv2s@-<i:u[:y&% ܪYH*||G=(F]JJ};O{7̻Xlr9瑌q@𾏦xW֚%ٖ:-/ tmo\V&-rH lP8IGJe\[;ӿ{6Jr2ONOhRZAnҲiHRT- /?AP:[FҵJY&ңb "hUp9sGirCr^~љI#qg "3Nn}>We H)< RƛiIa08XFwݒwa347?nyg4> 4G,u;_J䳻Y#3Fd'pJD{4-64^y̲7NI$ï.9O}r=hVg> wwtq\Zջ;|8G>pst#րunvx89:~c@ wwtq\Zջ;|8G>pst#րunvx89:~c@ wwtq\Zջ;|8G>pst#րunvx89:~c@nDy89?O,rc\9*ss :(Ҁ3PP@P@P@P@P@P@é-ƎYe`'AW=j=l+do] YrI>Dzj '(9>VB%d7u>P@P@P@P@P@ST)|p>bM+J,r *To[dXj!{?C3oKf$We;+c,]TfY}(O x]>vDߝ/ZFLo evh`.o.lﭦ_rF%jt{堕]z<@-u-B 'J[t뿲\O=Kvg@b޽0ެ*z@\Pjz}WwaUW OXZ\Amu{qrJA<?VE{wV}2/(ʸ\fYrbQJ񞢀7to}U4-&L&>vn6u3@Y=߭ɔ: !h'%5viڔ76m gwOր9]W5Zd_EXE!U$>vqc *|A<3è ;HF}0s^wU);Et쬵ew>[`q@~ٚVllT n\n|: ۚZ(rٻDYYP#|{ bJGoxI4d 83_nQF;\\>H>Wm?>X^!@P-[T4N[ZBN@oin;mt,ȓgp@ pya5m6K{m^LY2C` }( ibbPYnSh Nq|@tkv Uv{y!ci0߷3/f~;q}JVkKEıJ"aӴ$q@4;+OSUPi%T+؂ Oj_ԵA+i.ѳ1Ym9 a>**XV5I6rQP@6GXлO`9`{@ P;ˆ,8qL\s?v1yJ$|->_:_xfK[K(c ̠1 :FocX.-d-|O0i*x IcQl o a6\>:s~Rs|uM˴'@@P@P@5O^ح'4I5ufBMe쩷jfq1Q"h6[[DrNON폠<u[\վ/ 3I ll`Ҁ/ 5MK5\"0d@@9`|*>`uit>gC*E|[{.r i AJAӵHC2C#>ISGu/ti'O'Y_- pv;Avp7jԴkxf_;`)}Z2R1* @|r#45_E5E%,s!dUI9mؠ .%,ů5218]Cڀ9&N"267H<Ͻu>t^zY\^-ĥq xrr;gP~𖅪RY.yerV@rqWfOHaA.{yen"wn:+|ր=}1?JZ( WYE4i$m1ʸ?~ԚOF"$2h1ȇr"#j*iߔ78ʬ>=kC( 񗇇#hA\DŽv<+ nQ@ y^46 "k.F[#99m`p{q GQ20:[:#9 = KeGujx ؋U n"9 ,X8CYX7"R:{ hzwQ\tkko,dxjoFyEJ's4]u~"OupfYGف\}AL`oq4 [m'<+$KAl Zki\˩5W5R̙ 9'(pHLk>o4:-نKy#p›@I J{mQ4XZG&g$ v*Xrr34Mbxm?OK:}ߒ4d 6 I֯$֍7ڬM2,\y|$}g'qX]^[wF"\h[C}]=ډ/ck:qĸ+[h8@?N@WRUq€ ("EK#"p'fL[H.N^%)#c-`G+4ӏJkZ]RV|63c,ptPPQPJ%ڗ`+" 2]i4xnKjƀhwm =@NP@ (IV5,}Oj:ޜt.m$ 3dc@lOjX[ީ 2m8}@W xm?H]yV!d,;NdhCzF.q%ߘȂi]Vόt[+l&Il.\H8ʪJ =hZTue rf w6?跠 TP@Vӭ&Bbz*'MuTshX,2I RA@޵vq>C4{ػ00r:oJ>GxiF,cr6 iizΟ}wخ^S29~ oJ|IrGuHeڱPmA8#@5 ;-5 Dfo.>? Yf0ܫ)"w6##taw#JkZt<1Jй_0tc\Un+} p< ߍ F{uM"@PW';4)$N$2C:v4(T@zP}zC* ( ( ( ( ( ( {?vF5Z ( ( ( ( ( *ha@P/M5oՖIȪ2\ ( ZM͍n^xso=ʞ6V#'þ"|Qu;ȷ~:vrܼY @8 _[_fRk;6H̛#r dcHI~$iMihaG6} 03˻X]vS(7"(~Fx2WP/v^#5]KuѦӮa-Ng;@,6s'ēqqa`7WV`s)S(0xn]KzdžI9Kj w%DW Ub?|=]P57zKLWr f\yv~Xv'x u{(~-\M_cԷۏ?䏾a@Ev ,wj,<ۨ#opy,0q,8Y :dtcր3Uq 3vuoaw^HXmrO'9 V=XS0 P =imt/MkUB)G\KM@ӣ%F-3ccI$ 3Y=qZbg^>L-q1G3ׯOO\r׏'9 \ Q~?(xFz@~߼#=zd k?ox}2z^}>=qZbg^>L-q1G3ׯOO\r׏'9 \ Q~?(xFz@~߼#=zd k?ox}2z^}>=qZbg^>L-q(̄g=@+YB=qZbg^>L-q1G3ׯOO\r׏'9 \ Q~?(xFz@~߼#=zd k?ox}2z^}>=qZbg^>L-q1G3ׯOO\r׏'9 \ Q~?(xFz@~߼#=zd k?ox}2z^}>=qZbg^>L-q1G3ׯOO\r׏'9 \ Q~?(xFz@+j&c]~CHvѡLFz_N@^}>=qZbg^>L-q1G3ׯOO\r׏'9 \ Q~?(xFz@~߼#=zd k?ox}2z^}>=qZbg^>L-q1G3ׯOO\r׏'9 \ Q~?(xFz@~߼#=zd k?ox}2z^}>=qZbg^>L-q1G3ׯOO\r׏'9 \ Q~?(xFz@~߼#=zd c=4'crdqg~^;z'9 \ Q~?(xFz@~߼#=zd k?ox}2z^}>=qZbg^>L-q1G3ׯOO\r׏'9 \ Q~?(xFz@~߼#=zd k?ox}2z^}>=qZbg^>L-q1G3ׯOO\r׏'9 \ Q~?(xFz@~߼#=zd k?ox}2z^}>=qZbg^>L-q:fC^}>=qn7I =!qK@P@P@!9|@/"Eibf{K@D?|1?.;2(m|y]#IE<Ȩ9_dLv0@H궺$lD()W?NpG^P@P@WOgƠ TP@P@c3@Zߋ v7A 1_21UcW!'zP?iپ\ }`1 mu(<, y".`8 #l&(Gq&`:x$|P@P@UԿw\_A4kP@P@P@P@P@P@nj ( ( ( ( ( (noPP@Z( ( (P乒5d:f6qվUg4^6muXo#Ҽoʍʌ9 lů~2u-6Y M{2w. ˁ.@:JZ( (T@zP}zC* (hu|#4ɬaA^{Wv#,$P'Wx,MkKY%RA(!qHp\/(b̀5bA{"[W+ tD߅%m ظ Üc /IXʀQ:޸}ȹXㅁ,mR&q̣s 3%]7Qh3DN"̊W!Hj4[[Hgo%,&dnNjfkhZnqtqb1&mu@p X$BH4O$c)#<]DJ`@Gh9]&×季VFI(m)bvMkpI9]:?t?' } (TuONpZdў0q*2p}+7_ي0bp6yh0fxGMz*V. S˲bxH*y`l;/izM棨s}sp#.W,9sc9Ůmw{l]:I孈DDH$Mdf*R:J:]֝gE',H|~m a-pnY\][\,fy&ԅU>Ly;FF nl5XnaDr35ʃcf7/ͪ\}2FTqWG_,ep@s68g@2ɴ31}I@P@U[( (9*޶Z\M<ΓG`ȲE(s3f56 ʼn|/-ƕY^_# ""ÅC_`hz\\'Y~bYa ї,NfsW`Š^K[2+x䑤LdP`Wvvn1n<K!&M+C,0MJKEc+ xܾkwZ[`Ǚu`rU o.4鴃ۇX)H)FA$]1@P@ zM*Ѡ =(>=!qK@P@)?z|=[ &w/!DK.:rӂ@a w3LA<c@mj5ə'ifRܶ0\/@+N_t!T̲I$IZi03>X#Z}ĩ4bhw$7 ;r7Fl"ۙu]2Wm}}^yqWm#v) |rO~n :LKlpnH"J@c30.[ip R} ;8.dBy- eflH#ugq.iI\n.2@%W?o*`bGs^ f~K5Fsv][rF7,0*QEuW[It*TGpEpscF֓a7,$Q**PF8K`cN[% K2VC$yzHoahl|:ranv]ۭAŽ1gSq@N*ZdaĈEk,R"*v`ž\iḢ|r4 4ʍB2&rp\NF6*\xZi4F]6ۋ"IT rGXF@zn' } ( ( ( ( ( w6?跠 TP@P@P@P@P@P@Cuʀ4hJ̈I($+q2=?vN:,cd^~\+q2=?vN:,cd^~\+q2=?vN:,cd^~\+q2=?vN:,cd^~\+q2=?vN:,cd^~\+q2=?vN:,cd^~\+q2=?vN:,cd^~\+q2=?vN:,cd^~\+q2=?vN:,cd^~\+q2=?vN:,cd^~\+q2=?vN:,cd^~\+q2=?vN:#XLȪˑ$\vmF=38x  Oݓy}pzg8ןx  Oݓy}pzg8ןx  Oݓy}pzg8ןx  Oݓy}pzg8ןx  Oݓy}pzg8ןx  Oݓy}pzg8ןx  Oݓy}pzg8ןx  Oݓy}pzg8ןx  Oݓy}pzg8ןx  Oݓy}pzg8ןx  Oݓy}pzg8ןx  Oݓy}pzg巚F"]~CylH=3Vez~u<n?Xǧ^>=3Vez~u<n?Xǧ^>=3Vez~u<n?Xǧ^>=3Vez~u<n?Xǧ^>=3Vez~u<n?Xǧ^>=3Vez~u<n?Xǧ^>=3Vez~u<n?Xǧ^>=3Vez~u<n?Xǧ^>=3Vez~u<n?Xǧ^>=3Vez~u<n?Xǧ^>=3Vhcw:0Ί{]N^4CW.d)#e#О.!ko)\ɻO$.8Ŧq@χo7(8O;lG 8eFV's@+P[^ &cqv:BRs _zC[]{pG?98ǡ@uO*-+Oy./4q-88 _u8 G4ܛ { Y '²iVr¬r)iF,9Trp hkd˫*%wYU=1F@*I ɣ^i3iIgvUw$W2`=0Q_KÚ۴dyWޘ8A)p6I)TKTvW;H8?( fKg20.#pzCgP̤D lWBeX~^ىළ"7HP`p>nz/_ݱ8?^1Pnz/_ݱ8?^1Pnz/_ݱ8?^1Pnz/_ݱ8?^1Pnz/_ݱ8?^1Pnz/_ݱ8?^1Pnz/_ݱ8?^1Pnz/_ݱ8?^1Pnz/_ݱ8?^1Pnz/_ݱ8?^1Pnz/_ݱ8?^1Pnz/_ݱ8?^1Pnz/_ݱ8?^1Pnz/_ݱ8?^1Pnz/_ݱ8?^1Pnz/_ݱ8?^1Pnz/_ݱ8?^1Pnz/_ݱ8?^1Pnz/_ݱ8?^1Pnz/_ݱ8?^1Pnz/_ݱ8?^1Pnz/_ݱ8?^1Pnz/_ݱ8?^1Pnz/_ݱ8?^1Pnz/_ݱ8?^1Pnz/_ݱ8?^1Pnz/_ݱ8?^1Pnz/_ݱ8?^1Pnz/_ݱ8?^1Pnz/_ݱ8?^1Pnz/_ݱ8?^1Pnz/_ݱ8?^1Pnz/_ݱ8?^1Pnz/_ݱ8?^1Pnz/_ݱ8?^1Pnz/_ݱ8?^1Pnz/_ݱ8?^1Pnz/_ݱ8?^1Pnz/_ݱ8?^1Pnz/_ݱ8?^1Pnz/_ݱ8?^1Pnz/_ݱ8?^1Pnz/_ݱ8?^1Pnz/_ݱ8?^1Pnz/_ݱ8?^1Pnz/_ݱ8?^1Pnz/_ݱ8?^1Pnz/_ݱ8?^1Pnz/_ݱ8?^1Pnz/_ݱ8?^1Pnz/_ݱ8?^1Pnz/_ݱ8?^1Pnz/_ݱ8?^1Pnz/_ݱ8?^1Pnz/_ݱ8?^1Pnz/_ݱ8?^1Pnz/_ݱ8?^1Pnz/_ݱ8?^1Pnz/_ݱ8?^1Pnz/_ݱ8?^1Pnz/_ݱ8?^1Pnz/_ݱ8?^1Pnz/_ݱ8?^1Pnz/_ݱ8?^1Pnz/_ݱ8?^1Pnz/_ݱ8?^1Pnz/_ݱ8?^1Pnz/_ݱ8?^1Pnz/_ݱ8?^1Pnz/_ݱ8?^1Pnz/_ݱ8?^1Pnz/_ݱ8?^1Pnz/_ݱ8?^1Pnz/_ݱ8?^1Pnz/_ݱ8?^1Pnz/_ݱ8?^1Pnz/_ݱ8?^1Pdz6>?:mn09 *(Ҁ3PP@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P7_7F ( _TO>,#gnvuqzi]?+ #82@ GN?|8 ۙcZ 6^u=b P Gq|?wfۆ+@4e4CD}~OY]iṢٵx 6o%I-60{-u$Fs21 ;AV q&,塂Y[}  C94GۥޚA=-ĞP>g`6og@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@Ǥ7 (Ҁ3PP@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P7_7F ( gFӈ$`&0o$c4l۲Wg g5i|(47c~qܓ| q.uTcU˧^Nگǹ_xNԯ,-F$spd,Akn`~@sr}h6~>Fwus?\Z #;9OUԮ4*kI#Y@ 2HǾ@ ԜZ[aѥiDķA?1GGi-4+,'Ghn H͜<xbr69Џq UoLG`y>pԜ@~o&sg<ݎs(}hM#;9O~@s'րknz 9zg@gw_=3ۿނ3smmA9_r}h6~>Fwus?\Z #;9O~@s'րknz 9zg@gw_=3ۿނ3smmA9_r}h6~>Fwus?\Z #;9O~@s'րknz 9zg@gw_=3ۿނ3smmA9_r}h6~>Fwus?\Z #;9O~@s'րknz 9zg@gw_=3ۿނ3smmA9_r}h6~>Fwus?\Z #;9O~@s'րknz 9zg@gw_=3ۿނ3smmA9_r}h6~>Fwus?\Z #;9O~@s'րknz 9zg@gw_=3ۿނ3smmA9_r}h6~>Fwus?\Z #;9O~@s'րknz 9zg@gw_=3ۿނ3smmA9_r}h6~>Fwus?\Z #;9O~@s'րknz 9zg@gw_=3ۿނ3smmA9_r}h6~>Fwus?\Z #;9O~@s'րknz 9zg@gw_=3ۿނ3smmA9_r}h6~>Fwus?\Z #;9O~@s'րknz 9zg@gw_=3ۿނ3smmA9_r}h6~>kv"9G9_fpsP'4JğMt/#2@W<{S(+4oTTU)5g 톟G;c# c50ۈnY?%G/m(ɬ\jZ4zՇ k(ZH.7TN+ V;W\gF6W1Z#J"Ȳd*I Oސf~}g֫K-;v#[p 8 ^jR|/eܐl֖POjCǿˈ.H!y FA.֫kGh< =d`?s`4P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@ zM*Ѡ =(2!eSd(n;K=vN=y}pzg8ןx  Oݓy}pzg8ןx  Oݓy}pzg8ןx  Oݓy}pzg8ןx  Oݓy}pzg8ןx  Oݓy}pzg8ןx  Oݓy}pzg8ןx  Oݓy}pzg8ןx  Oݓy}pzg8ןx  Oݓy}pzg8ןx  Oݓy}pzg8ןx  Oݓy}pzg8ןx  Oݓy}pzg8ןx  Oݓy}pzg8ןx  Oݓy}pzg8ןx  Oݓy}pzg8ןx  Oݓy}pzg8ןx  Oݓy}pzg8ןx  Oݓy}pzg8ןx  Oݓy}pzg8ןx  Oݓy}pzg8ןx  Oݓy}pzg8ןx  Oݓy}pzg8ןx  Oݓy}pzg8ןx  Oݓy}pzg8ןx  Oݓy}pzg8ןx  Oݓy}pzg8ןx  Oݓy}pzg8ןx  Oݓy}pzg8ןx  Oݓy}pzg8ןx  Oݓy}pzg8ןx  Oݓy}pzg8ןx  Oݓy}pzg8ןx  Oݓy}pzg8ןx  Oݓy}pzg8ןx  Oݓy}pzg8ןx  Oݓy}pzg8ןx  Oݓy}pzg8ןx  Oݓy}pzg8ןx  Oݓy}pzg8ןx  Oݓy}pzg8ןx  Oݓy}pzg8ןx  Oݓy}pzg8ןx  Oݓy}pzg8ןx  Oݓy}pzg8ןx  Oݓy}pzg8ןx  Oݓy}pzg8ןx  Oݓy}pzg8ןx  Oݓy}pzglLxןxmag8b#q@TP@gǤ?/^iw}u ctH',qH@4~qc p<~:z>%]a󯢴kX"Q9LLg㑞z5%Χlf7[$&F ,g,z6iS+ʢ=9;pr1k. %@+5Ĩ)$H p2:0P tdZ-U2|s>e(1g?L Z&F_0!lgw7Pu"y."TXXF1HͱQ9 [IOn'H~bL)AXHIy}gw}u `H$H@xCY+,x&OI#;uPB+;>Dv{a϶\ᣐOЎsQt"\jwPlWFrH]WNRLu v*d\+vA@omB2K+a]JG 9oKz$ewk&ikt[]ʷ Ri #j0?3Gj][=,2H]H0  M7êZIk4DQ 8PW,4D[mfZ2< 3(x,ExHմDխa[fOJݒ'n BhMk^ӴI/d gH̱=y |\z-U2ƼrW9^:PCLRX{_dIr(ێ g} -WO+gkGV@LJABT>%җhI*Ty[Qs=FqwNޓ-ݭz\&gBE+ހ;m o%P4w9 ӧ=[yP-(8of$iD!L떐 NK#zk}iq{|"HTtP&5̦5(f<}A<$Tu?VO[:n(A!p}8HAd%4i5ưbFLHt+0 Ou  ֚m]Eko74Q2@c\P7$kP+!E ,oMw,R1]?(+cx$[7ֈ$wHIF۵O<0:PC- [9l6'Slk 2?(lg vW֚]Cwl,2G s?;P$ږYO=|iW7E;dXVD'i I%HK@UP2I$3j̼!O)8^jVI*. lQT͂F <@P@P@P@P@P@P@P@P@P@Cuʀ4hJϵH_@"ӧt9DO%t#),pK# wZ12*M1P6ӧ l3ԃwj=KR6uwMi\0F)V0# q^?K 8tۏrOȱ*|ŗvw2 ^U^ᥙ;pO$Z|;Pc?4j,VVK}G#$I(<+ a&~U~vrImsmojom-ācQg㌀bk:~[}n] kiF{vT* 獸+@jԧ3gmaw‰\<ʮ01|e@<;jvv]3&q|cuB$0`Fݤ'iWxLvkc0eFa+.rKk ]YⱹAp1<*6&9 O? .በմZm廆df1Tx!L. 8pb>, DL, Acpʐ ǁlO k->bֲo5;? XџͿq D𭦝byEXH 9,6V,Qd5wu=6Ɖaya끼ˏi4K}:y jZG (U/z'-- ݡO9{6%w`fSw@ǵiNo-[YO*гh̼] 8^|`;?W^YGGحb?zg(CXtķRc{01ru(1dR[i-J k)d?6r p5T"b%90զ熅6v_cUhL[.#qշ,vtO5 Vnd]JOl*1;TM&}VQm}DI VFPp*szO.DXCoaEk8A+;#3$P$1}۰]? h`fgiI6X>Tjs 爭g`dtI/L".Nvy ( ( ( ( ( ( ( ( ( (T@zPd,e Xϖ8R==ȠO &,ː 8~8WIٚF⮣Leu[z^z~c8c;ץ9^zg2+\caW^tys?1sC=q}3p]z[qӕ1ϰq+Ky:r99euo!NW>8 -8~c8ץ9^zg2+\caW^tys?1sC=q}3p]z[qӕ1ϰq+Ky:r99euo!NW>8 -8~c8ץ9^zg2+\caW^tys?1sC=q}3p]z[qӕ1ϰq+Ky:r99euo!NW>8 -8~c8ץ9^zg2+\caW^tys?1sC=q}3p]z[qӕ1ϰq+Ky:r99euo!NW>8 -8~c8ץ9^zg2+\caW^tys?1sC=q}3p]z[qӕ1ϰq+Ky:r99euo!NW>8 -8~c8ץ9^zg2+\caW^tys?1sC=q}3p]z[qӕ1ϰq+Ky:r99euo!NW>8 -8~c8ץ9^zg2+\caW^tys?1sC=q}3p]z[qӕ1ϰq+Ky:r99euo!NW>8 -8~c8ץ9^zg2+\caW^tys?1sC=q}3p]z[qӕ1ϰq+Ky:r99euo!NW>8 -8~c8ץ9^zg2+\caW^tys?1sC=q}3p]z[qӕ1ϰq+Ky:r99euo!NW>8 -8~c8ץ9^zg2+\caW^tys?1sC=q}3p]z[qӕ1ϰq+Ky:r99euo!NW>8 -8~c8ץ9^zg2+\caW^tys?1sC=q}3p]z[qӕ1ϰq+Ky:r99euo!NW>8 -8~c8ץ9^zg2+\caW^tys?1sC=q}3p]z[qӕ1ϰq+Ky:r99euo!NW>8 S+\ca6Ü{P@WwNmgtm,qӎZ˒7GFUSrQO8xTkk}:G OZ{IRgc/nTvU<]hWX& ,F$i FqwEzgy o 1ͪE5AHq>(\xNYXnurCig| 0csiҼ[saf3nX\`tz/U9%Lvkm$?p M|%kf?0 *$*3W"M:ŶWH"yapc' @>5/ ;[ȭ.eX-EO2i 5U;9#<I/lt떆7S]+  qQhF#-ۭ gSϵI'1Cs5̶h5͏bc1-Ra=$EB2>@t[98uOT[]0<t=-]/PK˩Lvα) Wy5>d,xye <+ {dp X]A :Ķb@rzq@4+M\E`- v#݀ۏ'p]&35wFLk*HXYXq@\DaXMllbBI Rq@0.7ic,{y{, v ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( =&qh@kʀ%v +5}"+K:*HkvFyNJ| 6!Zᴹx$ T+F,~i7^SܛQ'ʡ8V$mj4mf/+k, f p/#۱g[$.ńw [*t ].\./mw88>~LjcSM̚:ʶHK?(Q@߇xIyiWBCJ<|y`K`[͗YkCnʃy3s ]rO%c%xVq` qz ѝ[3sk4\eidAA R=)|=⶗WClR0spۺ0H*|1]JQ\%6EppXw@u_Vz.#Y4irDy)l1⯇)El2жU#@:ohM3{@Oռ?~ڔӾn?k"Fï@? A2T_7d~F3GQbۏ  t(`QN!oRѓ8 V?kĿ~=P¹eۛ[gԌwv 4CleC+/=APMh~⽸c[2w233-|'p!_RK:9"3&R8?tPu]#хھD nd ]^Ś滥k6qkd7 .)6*Fwus?\Z #;9O~@s'րknz 9zg@gw_=3ۿނ3smmA9_r}h6~>Fwus?\Z #;9O~@s'րknz 9zg@gw_=3ۿނ3smmA9_r}h6~>Fwus?\Z #;9O~@s'րknz 9zg@gw_=3ۿނ3smmA9_r}h6~>Fwus?\Z #;9O~@s'րknz 9zg@gw_=3ۿނ3smmA9_r}h6~>Fwus?\Z #;9O~@s'րknz 9zg@gw_=3ۿނ3smmA9_r}h6~>Fwus?\Z #;9O~@s'րknz 9zg@gw_=3ۿނ3smmA9_r}h6~>Fwus?\Z #;9O~@s'րknz 9zg@gw_=3ۿނ3smmA9_r}h6~>Fwus?\Z #;9O~@s'րknz 9zg@gw_=3ۿނ3smmA9_r}h6~>Fwus?\Z #;9O~@s'րknz 9zg@gw_=3ۿނ3smmA9_r}h6~>Fwus?\Z #;9O~@s'րknz 9zg@gw_=3ۿނ3smmA9_r}h6~>Fwus?\Z #;9O~@s'րknz 9zg@gw_=3ۿނ3smmA9_r}h6~>Fwus?\Z #;9O݁&y9Qs?*T'9 *(Ҁ3Pw/n,4ySKuml$%Ex2dP^5K A0g};3<`qʑx/iv.2j,qq2 yr>2~ݠt ջ y,:bUA $9$O-+D2eZ%aPA [uPK)HaEk}>A\}M`ͥ:5*kɣ49<<y6][!gJh/uS: ymly Jml9kj?hIˈΐ Ն !ѤRK[ƼEKTJ5bU`\.PSoIoo>+hy}QژP#;Hƛ4q%Ϋb' O p#hOfg8%dݼݿXm^X*] U}J^W#k pn Dyfo;Yp(j$"eksmc,Km!e$Lcl|jjVWW6WI376AqA"xGA1ހ(ZxSZ]SJ[7v-"`bWs8N-WKCuku;aY@FpV }rxn{yeda{q@R&} odK`pʫuPh>. մgGxܔ*6$ cNxXbAv"swfi~ tvkȖ(+"Uо[;n<>Π'k ;gsfbeA;šfܲ2>Fmv[ yF%o 믤m͟ 4d1Ǹs@$g~C9 3nz|sq?!=>d98yd۞2q{g<2Fz_O8q=3r#=/̜g89 sN3cq 眀HK'1Ǹs@$g~C9 3nz|sq?!=>d98yd۞2q{g<2Fz_O8q=3r#=/̜g89 sN3cq 眀HK'1Ǹs@$g~C9 3nz|sq?!=>d98yd۞2q{g<2Fz_O8q=3r#=/̜g89 sN3cq 眀HK'1Ǹs@$g~C9 3nz|sq?!=>d98yd۞2q{g<2Fz_O8q=3r#=/̜g89 sN3cq 眀HK'1Ǹs@$g~C9 3nz|sq?!=>d98yd۞2q{g<2Fz_O8q=3r#=/̜g89 sN3cq 眀HK'1Ǹs@$g~C9 3nz|sq?!=>d98yd۞2q{g<2Fz_O8q=3r#=/̜g89 sN3cq 眀HK'1Ǹs@$g~C9 3nz|sq?!=>d98yd۞2q{g<2Fz_O8q=3r#=/̜g89 sN3cq 眀HK'1Ǹs@$g~C9 3nz|sq?!=>d98yd۞2q{g<2Fz_O8q=3r#=/̜g89 sN3cq 眀HK'1Ǹs@$g~C9 3nz|sq?!=>d98yd۞2q{g<2Fz_O8q=3r#=/̜g89 sN3cq 眀HK'1Ǹs@$g~C9 3nz|sq?!=>d98yd۞2q{g<2Fz_O8q=3r#=/̜g89 sN3cq 眀HK'1Ǹs@$g~C9 3nz|sq?!=>d98yd۞2q{g<2Fz_O8q=3r#=/̜g89 sN3cq 眀HK'1Ǹs@$g~C9 3nz|sq?!=>d98yd۞2q{g<2Fz_O8q=3r#=/̜g89 sN3cq 眀HK'1Ǹs@$d_# u8yG$2E+!@ jP@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@PKfPKAAOEBPS/img/passthrough2.gif9rGIF89a---jjjܢfff|||III555lll^^^rrsvvv+++bbbdddFFFYYYhhh[[[zzzZZZ'&'"""nnn333::: TTT(((NNNLLLRRR$$$@@@uuu{|Lr=>&000``` vPPPpppOmq'68/28ަ_eq鏧!!!WWW|Ӛ_مSXbllButuNMNw~\]9;?FiVVVV???kr..~}~MM/DCD#&*;QT(*yyyό~~~GLT̳Xza`a􉉉ġxxxٻ򾾾󱱱aaa111棣tttqqqԳ맦񍌍QQQѓ!, H*\Ȑa={!BdBiQB& ɓ(S\ɲ˗ i͛8sR#@ J='\ʴiIFJՖ`YR괫ׯ&YTٳhj ۮb5KnDy˷/?L&C{*^#L(+`RƏΌ)VVӏ C(e4R_?:͛pjj6iuq䶯h,#6!=ioLS۶n M,~)96tB 7_&0~m%G|{"U8-FkCqE{ Giw|"!_2l8ј8?>Nv.2=_ˌpƏ6eUjYea8ـz@l})Dg!X-F!/ j6@I>&!bAmQ,8'j;_$iz.1eljD :E<,x+ 06c N4,|H0SC)aK)RSY8" +EFoi,=r0l Xhk|zY1(GiE<1Bd]("4KY~H-{ː졗LADX"$,b Dd&L nz"Ԧ8Ѳv)':יuVq'}''@1(BЅ:0J|V@ |P:!ȁ ц GHBre:@vP"Ԝm?#jP` ! 'Ns MGv;S#u?v08Ja4.%kJuLM?t"ĔQ"Rxu mBFQ DZ ՜FH@@Ζt >]l4u)`S%d&ujA[׿:!BMIñ)XSP7io[v֮ nuGK\:?R$?Y$jrtk/J%  F%\݊FD`lZ i/J50bv*gkƘ61:sq1)!F>%l%39N~2,4S,SsL0Ydό4[rln98yΫyawMBЈNА'MJ[{.‰7N{ӠGi:MWVհ_-OƳa|?׹+a6_AJ* B}\R >˟D'Mksx(ȸ] U۶>3 R'N6M|9i6|]{ 6'fإ> }@֘ذ5?R8Zp}m4-ƒˍja/7isMWG,\`γ} .E\ UNhB$R7aFJr>\B;\]`M\r7X*{ʶl0'|a>[TQQQZU xsGn2UvRTQSUs5UhAH.UMr'\iGU0]k~79Vn}~uAl XHNgiWfxhhjWцpXrWuql8z8|hD1VaH/шFX~8xqh؉H+؊FSx؋8(h8Xxؘڸ8ǸwXhRx蘎긍hWь8xw@(89  hpnYӘ؏ʨXn`n$ȑX88,i')#9@.! >il@Hlp 0AhFVP5I7ɍ`8Y9*gِ]ؖn9idTUQJzx~J9 ROp)OP<qtIv J x Y 𙎐9` X-!Ș qR@hSIIok} ɘJz 阐)((qV9iɗy)9I~{뙜H+hiXzɟ)iYɍ\~ɞ|i9YOYy韃 ɡDѠf9X:)y.꡵&!Ey<`Y9ɢIڣ C!iFJ i)^ɚ隠 ^*T:\ I8i0vZimZ`q)'H}Ps sPWθ)aI :NɨuE(X,ũDu}HwJi؈ACZsȔZ~zhhxHAX  ? AF)A9Ԉ}0}J*Aت۸}0spJج 'aF1Ȱ?ۑ "Mٲkߦ/EX8/ᳫJCL۴PR۴T[TKҸJE+n<Hfpj۶R mA0]uKڵ-Ba%PʜsH< zK~}{ut[jg+lfq[۶dO|G[;+0 K07?;Kyh żIKѻI|iψ\˼1K3; ۟K컷 ;:[⻘H  b{)[+k܋,|; ۺ;<@k…:{kK'L+{9.‹jK R\U(Z\',O,9; f:L< @o :ʍ;yǃ10Qx%{~lan PX|dw0ָt^v~S _h>&Fj>^/Q 9ϐ~^=r9R,gYnP>.b%·:ocuܒ*VVn lpIoIE(NuRtEq`Vst7X a|} ZHnwI7%ET:ZlN^BxW;`_^hNEp'^?]T+uTut OpkE^5T VVp;A] eZUQ$^߳O"R*[յVb5;Z Fx8i yfpqRV!C/gESGIp%oOnR/U1ŪY\Iq[pJAOimEUESSV}qIh4vh`~6Xޥw<0]??S?o_\q)xџOTo^ݟbߏpX>z0akJ+H0kzF $XA .dC%N,OEwG!Eb8F)Ud_I QƤYM7 O9ZсBE*rE"M *U XӔJ}2۰XTX`[qzhӯe%IV@g>Claĉ Qi`@.s\T-r&9Eʼkر=Y/囪o :oM1y9fl=^39E8?pp~s[T.z=eCTHK*n:$ɽD0Ac#x7A )|>!' /7hĶh'Ȧb>E(NDCRdC\rA!AāCRI %IR2%=\m20&Cr3W49IOPpKph*.S$a .!*B s\jǚq/ԏAP,EI%%e VYWIZ?n}rRW><"k2T! !kuKO(Etq+**Ip5$}P";Kt X '3qJ6Dڱ BoQ<QCi~/E]gQ^ql< XY;]z.w0ɤY] ,';L lr⦵Ђ,qn il;M)o} v!pKq_< !C٦s'HDotN}E`QƗrv'irz6 O^d0Jm*fsGw*DŽHn {p&S\'>|F'^A _ #ꁍ8y`hJQL%ao۝h@e} |`'XBa'ta,mT޸F/A[`,pp bHqB "c@ YBʐ#"<~u"@BPL(N@B`_؅21kl+9q-|a 0&8\z)`@/_~ &19 $sG8BDP@3f7ouS( g9p$Sdgwt -Ub˖pu_COT%(@~$T ehCP* =\hGjPzT#eDGϖ3%d>/T LmQwGaJ\ޔ5jQXVT'=UOjԎEEj zĩ1*Dj:` d*Ew0/jWՙACYOzUd$[uWZT vթבoPAI=aӺC e(\e*~aV,P+rv%\ڛVUw(eJMrڐlUmg{5Bhێ !f`LUlHY[WqUIrE\eGAuP펮?B{_Wo;^쀣Ԭ-t`GXp%d8yCq4 ? gw51?|`|=Q7}`/GA YC&r| Ǘl5g6 mkGԠȁGmx5^242 LgsЀPnZz㈒ H ڊ$:6A8D5,md\`t&'vw<f DA&wMne[nNmq=ll&wFj T?ݖFMogDQV#?q`w%\3ygl/X \*_9EZX Kgzӝ+LYB6ы.>c';E.񁗜1~!?e/ Dhƹ@%me$Qr{xg^|O <|KNy8U 1} "8~!$'M?yԧz}{+{%}BG_=̣ tm0Q=C1z O{C.iB!WOc0ՓKksK ?k-hl2܃p*Xr8| upSAt{AdPg@ T0h0X;E[D5G9B,D̢\C>MD5OlI(}@CCERVCŕPʼn`ŅpWԪX4?[T\EUĆFa-?CxFhFhj`l,mFFoF ;(<(Gs`0=Ha fa߂7 ށ`#'bNC#b ?"8$6a!HP9N0.V&8ba$P!cpc''xv4c*F&bH<4dh&Px4Tqa b2F>D!0tF" 6`"XG6Un_W W1aLN$؁,_ n>9a>~$(1&7n#)ˊk΁@c&dMf?N^Tށds⁠xkn?*,l,LdSvcyhV9+`$fY>F^#d!x)bA<$'3#6/Fd6&w65ށ'3c#XFc7N^Nk&'c{ VbEgdD&d899bCcr"b䔎jf,iiNVge8k6"'؛ ~Ub&#(`.bNMDj80g#ЁjEhN_wvEdjl$ʾ5vFc mf`f`c#bmn`"Br__P%Fbeoe6n=6o`u-`=a!HH~1m 8p=>_n^ p p py lOh adD^=DN"^7g!8m&I^ 0^ l0_ln" Vpgp,L_^~.H́~# N)_.%"~?*nV(h$hhu"n>F-#.mx^$(tNb}Bg"D '`mn1~Vq)X8_#Ht9Nt{I'aar[-b.'c,lph4>#fm<6u)R"@^B6=VMnFr1.;}gb(>onfaW8"H6#n4duF fjDFVfa8$@c'g.g&`cE_m,$ގ#&}cxGc_o]hii~w9.'@FceW7c8nldI`IDl~e<~fO F('!_n"d*`c7g] |t?$8}dPFy p}^>s0F}}_'q߁!r@o/6އ2߃p8oO n[~p~'~q phoo`dQ,&o/"o'8g#x&f+7G^ &Gv+XȎN ɱ#;t8!Rpw IF#Mv4/G ܑN 2EḠF$(_'MHI#wA$%3i*֬Zr$VWN㪐 6Wyi``^;WH]MKР${gHBYż$Hl-0FN p[EN:?Bz<%'4-IquD'$'wlM}Ms0_4!"Wu#G+>IWۗveh$q3}9pYpZ| XF rxWP9a{1BY?QWfwUx@4#,Ae ғYeZ1Ye%7?SՅa^HDHeF暯D^o sH:4xW!=gTGאD䍄VDйSbAF$-z~Ze~F`9 DUVj%1gsq*:< f6&@ކ ñ"Kĩ"[y0ßIAvk-+U AB`AqXBkB6-v5ykeD5k{,D[٩o[|1;WQF`%|2#QTʺ:eo@25|393=3A =4Ep$t5Vo: L:?U3@%aWڎtW"Av[DqvR5Sa0sKU6HdNYf= \D8Lk'tN ;6v7:zW&z'v;'nBzYЈ+֙gNJh6:\zitݙ:LAq4~NtHb?k ʠԾ * |Dp)/ ^"8A %}SQN&] +wH8ɀ/>iBP6A0+HXkv@H燽C@,L4?" jASIYi?1&O,C~B6M!bؑP& 5B^rĬn B8A3Ҟ4Q"8*F>R dA=) V Б-KdӢ0擯ӏ%`d<UcvzP2I_n2Q̍ڃFlgfsϔ$ k\d r47*tjBvn]4mʧP%!$Cj1k>E ʬ%$ JZWdN\Kc*әjH4)NgjƜ>)P*ԡJWG QXKـuԢҔbYN/4 b#E`)7'U6+e4V8i*;H GC.󱖄d$%鑦,*cCdʼnH*I'," &,4"**Yz EOv)m4)M!Q30rm],3pKT_ꢛ_  ([*K!( #+b qqz^Qj$UsXGIB.t1 xRI]_I8FGh 1 P8q/4Dp5hFICayH.L4dw֔k||aѾn?Rz)?.HnQUHv(sQua#=Ytv*)WOh$w9Kxь]H2LVd/D|%!O|#HEF4Ɏ ]ΘDp81GF$p$TER+ jҲYVJ YIpR]ulW>߈Mlt~~~w~vvvwww􁁁zzz}}}yyy{{{xxxȂ쿿;?FőGLTSXbNMM#&*krs鯯񊊊|}3~}}&6:R?Y`F]]&挌9 _MN..9QWDCCVzilm,C^e(+}󻺺0CHӗ盚_bhÚHHHuuuf!, H*\ȰÇ#JHŋi GD ɓ(S\rHXژƛ8sɳϟ@21HH*]ʔ%20en%իXjݚScGD"o5K٦"Iɵ۷pg7->RKÄ5"+ǐF-˘3kn+b>CY`6^zkgDM6ӿSͻwDb`ɶMqͼnN:D˝kv.Xҫ?W3ӫI2zˌa)zB$ߘ4)coSR$cz 6P{DB!T0_$enB=P3 z Qr5!?)#JxI)brxRcqcax(( ؀$6w4bƁIx$SaR\SƠX~&ƄkߡvRXIo0Y=ezyқ29C`gqc*?5_!AFi_ y1yf&-ɄҚ$0g~ k(|`~Hښ)r ~JB!P '"z0crmUF&UOX$ -x%eT!c1! '-KvƼ-,-|~ah"w{f(@!z8c%YFqj'1$vuW$+ OG{&OaJv^|,ߗq|G zusn$|5?lJFz8`x5ic᥮>ꢿQ`KoMݎJzz YSKb_d3:NS Ok=ZcFB!g*^@G;Inj]nLU&E;AB`QB# ZrPDB,$\b2q?UjHQN.<3R!;x!R1iQ>QAYJׅeRYi7dr`lV|x$kx#u 2x>,ẉ o?1p0)}S|C~j)̱1d%[xIOЂ/?"Q49.IZUr!HBdx$`]Fe6(c'z/bØ-(ikr(PJIjO=g*bрSj.O3 :~S=Ce.&S^7KIFh*V.*"f6Ha!!DP4M]gKDRPBjRP0CryuHWI;Iy(vCZCJf{PDƕK ϻN6xrRe@4K dVxFIW{4U[WW8Ѯ*V1O[{jrC 呈3$<}tQ݈L(oV`W$8 !2@ A&:kI#ZD"C|X/DJ|pz6c ͷ3MmW8% yi e@6 "v|]x)¦oO݄p%|m'DDRۡE a.:$6ڱ7/Y^@&"4i6w?酀GH?qD?E)2K( @9<ݏK|)S#Avƕ$ R4˽aՈus0Ht딬W`S4.IV$\<'#$XV5]I}"+>6NrpNSrh>;)~v ŘqM8D97֜Z"VO+CխjZ b8sbO}|+k՚zz85ENw) y-!sҥL^m~^߮J<ܷEY<%OjkC`u)IzVz8~0]%uJz}mw,!L&yVВ@/VN$Of&充 L?9 S]ԍ"=AK D{LnqR])r+lĥ4c*U7&2 B **_dTrW. ' 00 1w   WA ʱy !cxH| ͐W" l0 8.t01!: 4HP;Xy  @~#тF8ہ1L8HO11QHbxZ@y`j~3n0o8ntxShx/|臀8'!7@Hdm  mp]@`x4%(3U8xIȇ#]sr(30H7@@؋Sx"p(# P@ÈHm0H\x̡8X3 rx@PᏎH0p!@s`708`xӐ  $ Ҡ (* vp)%9! H@q9X ! 03`LHّ #i)y lٖnn tYl`$y c;9=I9sppp# a1 8騘d I'I vYyky () $i L) 0< y xIP Hjn 2ɗ4银>@َ>=ɝAG9ىѐ &IyyѰAYLjYq81hI ɓ9ӰМڡvɚp)3:*`Py9I8 <ڣ>ʖ`",%*ꎀɑqUYFJsx~?j`Y vYJ RۉHJ9 @m wpsPpڦ 3pИoh;Z0` `]bJ1I)T9h؉I#@ ,Z  j`ʨɨ`vpjm @;~Iʖ̚ʖ`j٪mI 3ZXnyk  v 떩P {oY`Y9 {z庖 ˖ ۰˖, 4[L~Xni 00Љ 0`ڮ<mJ˴Z8Lȥ*ʨ M˖ʖ0qjǐ;{L=oYZʖsڸ Yз[ۨ;&;Kk;} |;k }n[+%ۻ;[{[CW\pE˥Epɱ k˹X)Bpkl ᛴ0Z 2ۿ<\<%Wj nɰf;pZ˖z *;m v0[{ϫ@& |G{<>@ LSp J[<ʨZ p\/ēܖxѺiPܺpkWk lXA\v|xCj؈؊юڌ ٖ$ٔ 00ڮt }aMڍdX].گ]ƽt`=ۉ]=ͺH}9S] :]ѝޭ<݃T0.-/,@pMm]xނ-m,\+Pp ( `m$G ~,^S*@ } n0 0LBN#^FN'G)+^-3_`[0# " ;ޡ`3N A0p.}tq .2NU~YNW)PZQ`&@`} @cp ` `?@3<(Mplqud}2֧*>z0TnXN膎IKh" @6p p P PP . ` f0p`:p'?PF NoC:IFxR^臞&@Ǝjgp` 6qp}  p  nuP lPP ` `N5.n>~!.9QbF o oǞˮ!?%)-1?59=A?EIMQ>~^/`8_eAg{S/_sv"O&*.2O6:>BOFJsP/___? .ML-ZÂ.+Vx2E/Vʕ)hń'I,AƏ1ԨDhGgΐ2uɑ8q)&8p%Qn|jSgJذ)tL,M2cfAjJdHlj>~1"Ȍ<@'B_Waĉ+cvWe̙5ogЗ=\qũUfkȐ#0pq#@*dD1jH&QdL6qPF*eTVjXfѪe\v_b4& @T4 5#pB rۭ*蠄j衈&袌6裐F*餔Vj饘f馜v駠*ꨤjꩨꪬ꫰*무j뭸뮼oKP5#3pA24Ä /tM. 7x ѸCsQѻ!3R$c'Ҿ*Ò?.C Ntl3SU4MmMRc693C< 8;q9k1::˱;q*r?-EY]m UU׳V]uVxMV:7C]8K9{q:1;; <";r=%k2>(>+RPɕ\(CSVye[veaMH~W^WC;; D}_@Pc FTYuaHRk-T[9cPAOXIF46lV{mnIs[YO^X%`CEXQfvZ%bKXSn9\TM> >}tK7tSWtݚͥn+^u>7a.؃]vF}8i'ڋ3vN8s6 Bj㶹vݼ\޳~ 6A-d^ن6IUbV6խ}*\ =y|^יvjvkև+|o#wP@!XBP0\ PP;!zR@0`ǵ2/t?=o|僝6A,z]m$n#cxz[S6914"fA.{ m3mwB:& b)b΍]HT`GPf滢o &GNOk$/Y3|+s*/ÌmwC_KgexZrTҥg:1 @apP|NŒ2"*MLLҎgͮiSP7;<4($@ob'g2+“ 2 T kZ/$( ʙ? 13('-I jOYBg"2IbYXg?O&і-K70ũNڦnaʨPkG.<1iaׇV˪@TIsmz+CZӇhZQ!3 )U20z+p=FWM) MxyU3`Y ٰJ;3͊p *Jښ~yi`QJX׾mfhԚYۜףDj]C"MV+ֶQubŔ4^ie =G+h]Ne-tkFnb /f.%`/7)X#Q{u>ܸ0P1y g+׸=aM21A@ p XDs$ Q=azƿrY\r'XM/i{q7?0uÕg\Gab0p}@*P9\^E|=ױu0Y*0D':`8:Q:75L-tդpAzO5b{YlޚKTi`î6>׀U/l o$9m{&ծI'|(ïp=?{vg>.Li,\6L绶d]lGFWFJ~4pWr@ >?MfqhC27J댯to/)Wֲyݺ-8KH!ǁw4@&S1<#.)#Ę(90 , $ 6(6(p;(;@-8 *l/l!&Cx;*0ij8htB tѓ@]E_` V HE; @$CG/CL1ZJiDF 7Ip`h+ X,YD. H= p#gJ| C{ɿD|#$B,KlLȟ'@+˒䧎D7nKo,0  T(YHX@PGC`M9(3Kt;EZ\R;`6(H, W$HDLEPMZ@ |?#мYsj ?YYمنećUZl&UwؤE;e{%YrXHl>ڞ#Z ы*VRp۰׳#۩5[B۴N5ZьyېuڑuؒqZkXEZ%\5ܦUӨܲ &ȍ\ ܬ^:0eZąŕ]ؗ=MX\l]}][еXZ\^dY'cݰUܱ0uܔE^QQ*5R0luu]:^ۢu[E]UEߺ|e-޳ ]mZ[M]6vbWZ]%VnޏT͕΍`0`}[\e`__%_WAN^m5VͿaamϝaPab>Íaα`>%Ǫ`&ɄWe%b6b&vpr+_!noa6M]9^ :.V;1<Y?nuc=A&df[5d,DLĞ!e"b -.dX$H^dcY^xd%eq'i6g1tNX#.hefakvf4aa2f>af] bEvhPSe/efirゥ\mOΜP^Qii6{.fe~Ngֈy䀛Fgu燦e}䯖ghgJ&c5ݳVglݑk.kkNkY^ke&))z~^6lcjw9JЀ6=^bking~Рٞmڮm۾mmm^ljVe FNiOnuin.G.hfi)nm~m5~nNZU1 NoNR{wn>rk4]2ŮiRoh On9`X ny`#,ɒ(9W"@jjFpUǵqco9aȉ 7fflguV8pqTA?aAi ɑl'WWXpxW^TUiTxҼksUITWp?qW[HI=ׅW ߦV^6?1Y ȁYYLG[^Ѕasu_v^߇V݇auaԴ^Յ\LmW^Xq1aQz籚RlVj>.@EjY M>L߇^}xr`TQxpPj`.YwI䁚qnr_nk Txg'KVp[m/zMxtPL6/'Iy3'rVgs%uu o WV^-'˃ [X]xjw}x^G'rzvۮ Ouwg4?Wwsh^ |az@zh¯ԏxdzTLUaXA|Awax~^' y/rToGs#wyy7n8'pauQ?w􁟅wEfYv?Vã}^٢pĈ#z"ƌ/#Ȑ"G,i$ʔ*A!#F ,0`tqF-^a +dB+[FAJU@bē$@AGEjD"4ѣ3gHF8wJ8lԈ(7n>S%Ll:UJRQ&13@5%2 ?BdJPhr!AѮm6ܴ_ r#p;hL,n8ʗ3o^18􎾧Sn=e˗1gּsgϟA=tiӧQVukׯaǖ=vm۷qֽwo_a6Xa%X!A&eag&ik&nzXoסp5w")xs$n$18cI$M6O>%QF!SNA%UVaW^%Yf[n%]v_~Qfb1ց NVemgVik!HH.jd⊅zr- :(u t#w:~ףx@7$zF{L$}RW~X%~5<@gٚay' Bۢ(h;-"E3v9zcx?'yEd{K|QڧV`' H]@(@`,b v(aDk9ڙaK&0x1!<2%|2)E#m1Okciɞ5)My P@>P@@0`, Bq/@PHX4Ya1. >8~8+x.,3Ҍ͗viBPA8l\v%<%nI+&,dr3`ܽF\w筷|?8K?=91&-r)AnѦen@CI3 p2;4-hޮ6_MnbއQ p RgNL}gBu.j]gLc?`=j?1DD:Ln݄e12-F^Q@X)b[;㔸~*s T: E *Ld=ф}0>0 Ȅ6 btF f\,jP~Rz"*O")JifeĜNΝo%`Z@`@ Q4c1:xt7i6Ȭ[NsB|H}gRϥυXǥ&0m6xl'N}ad8b(JBW^.|&L#̷B7Jh3P/tL2Sc+ϒ &Z:X!~Ȣ/v g"(*N_hQjUQ gd3~pu;kGҹDRc$)J͕OmcĔU]KM TALȃrkR/}em׼yxi@\=9)rX-@te#Oy;-sӡ?찶9~ +0vlT3p%e#1Ҿbh~W8|h;0N'NwI{Bh"Zy  4+P',嶷~Q)eK"A6?!p>/??o~vhp/P o]|Al  & Jp@$4 d$b~)Pd`A( `5 NK@;PKF<66PKAAOEBPS/img/example1.gif7IȶGIF89az555a``lll'&&@@@cccHHHFFFOOO000rrr:::---iiippp***eee"""\\\YYYXXXPPP(((333$$$777,,,TTTLLL RRR<<&{|Lr ???̀م|_\]9..ޥllBMM/ V恵i___uttNMMooo񃃃fffVVVwwwշWWWҠ~~~kjjyyyװФ}}}~}}|||̙Êxxx{{{ɸȦzzz浴vvvوDCCjjjkkkgggnnn^^^ӗܙ>>>tttyyxɂף!,z H*\ȰÇ#JHŋ3jȱǏ CIɓ(S\ɲ˗0cL͛6W#Nyf JQ7v(W@H L}~T!x q߅ pHSAc^A, d%S~%sH`@ҋz\IWٕ~BVieW F`Y ׏-(![S^F_d7P"|矀*蠄j衈&.ɣãF*餔Vj饘f馜v駠*ꨤjꩧϪ꫰*무j뭸뮼+êJ&6klVkf-n+vK覫՚+LK۬|oc*!xMmۙ7 Tqs#,F佹˰~ y{3A'߹c۠&hz3I7lSftMI;a9WK.rsMV oە_XcFyk_FfkkΎi[ª6m\i-rwNѭnlcUNf6&H^urQm9w6}Bopjm j_[ɽq'X4fYR:l\ *0cJ~;fAHyķºQN$;`bt1y?q(.wU $^6(*w|\H@": |G |/g?δp,@AAwo'``=qs=;k#%>&*AgcGHU'#WUh"Иlvj#8ygMuo. l›2O |.9 :utéWN4Iݜvv]Tv4vgZȏI<ƒy[s3hMGI5E\78?G=~5~eo2IHaEgt^\X7auZ+CJs7c@z=6Y˅>_>hT4W%^,|>PPY;HKv6EUSpo8/H/.ye-n|.V-Vqjvxxz|؇~8XxBX( Јx83 8`8XN֢/3C!d3/lT@VBQ88V@T0/QHW9TTp1q00q QOhި-8/8T3O3`O3VOpW x9ГA_` E)IIO VPIV9FETi0px  P0 p" ȨQ9(  99'BI>3)YidX0)0`ȈO X ؑMى TWP#9}ИQpјf99P 9]9p{y yθX YFXO_@*XОMHy\Yh`AhO)M hIh[i I-l /Y*/iJHҢ21AF ? ,*RVzXZ\ڥ^`b:dZUʍIlڦn po:tZvw|ڧt ~ ZozR1zJ:@ -B.H J/:ڐiJmz:$hzl:Z,.Ū:,ɪ.ϪͺZպ2j۪z Z. FʩJኝ:,ך.zZZ1J;j [͘ 3+ z K,..RIqY2;4K68 :K=KˋA+[,!˳;';1&)QMKEZ\[^`ckeI ?a u+mKGgKi{kX+-o};k ,-{.{]1B'Ѹq묔+w˪lƹS+y {˨˭++˯ˬ ٺ01$b1¼Lʠ W*@k*N*2x_X !%z Ypو:|:ILv lkf:\|vyURHrzkhn;. b+  WesqRpSï~$Z0,Dzkc3N+<+/7@l8Bo/F-B9,Jt+2^0'cpSL+D\0W-G6+73ekUkVwo*w+#+p#u,+g,0iL-DU+d\6KLqlw|/,2,cTsͲ@$-鄃dL/,\@;e|b5.\Sl3ď-<,/,s\BCQ.9'-@fҢ ++Yt\/-Juw"ϷrS/,/V|- +yϜCF7c 4?e?2gJG`|/42'/)mǂpj38@,R78u*L# ,0+U@U̷2rԬ|,׀tׅ45/CuV|1L|3R56A-ƀ5~}5Fv5a5,96\cdz˂ },ft5gH_;T2x^tSsPbx1@tM(/SZU\Zh'E4W}%G%sU`Z}21y< pP6r\2't oz4UPF$c?+s?0 Çsq-~HhIVN8xBr뭁͸ 3Lŗ3HcU~xG{n(|4@NqI4/K0wY(Sx4Gu~|ZeQߡ/mqmFT=ͯz278h?wA,E}lħ5|sey#cYf4%i|SYYdftg-=݂ؖ<+P㆖mn.ֆn>?s?Z+.>^~阞r:[)v 2^ÐN%a >2ix N1..Ǿԛj{. 1A1Z9 ~y1є 28>98iQ`U0IX9RIjîyTY a!ȕ30p̾ Wo.TW0]HW/-TEϝHh.1/)*v)Aώ0yGSYdM*Pq*Q٨4i0ɌOJ'yW@aAO@/hé05V9߻W_ʸ E0LZ0ʉU9),W`ߙ𡟠)x ?2iP OP#9XyNXEmG!?'I)UGebpM,^ӧ?6ouQ$Ӕ.{D:fU9n2(֙FbUdSiJe*qūojU[WZ.̒GIraĉ/fBcȑ5\'Ǒ5G^ogЇ;[或lwkرe?] ʨudQoX'^pԦwWV*_q]^#^Ef鷲rv|][cϾEO;~eyǦ=t+0+T//@+@'O0!|*AP0 B#pĭ8D÷@JD*QQ kų3O(rʱȗ4 ƱdDF(Jr%l'TIJʣ-/ s͓ L$JM:j,!Qhs%;A*=PMLkNH?Jt@$r?#3uJR(mP QUM{QB]'R2@UuVZhQ` $\0XdUvYf5VZu]嬖 O[pw\r5\h5q[5 S^}-*՝QVE^%ݮ]Uލ=JX}t@E` & a6]b"/F~Ε9S_f=-c=8bMUYӊ/O:萆䬎NJi5ՖhR~7黊Tkj#"&ov]v*M6{Xy[˿mk+nfVpi7o2uT|mS(`]ޚ(#|K}jZ0A1Up| B\< B D( } F0h8d QqI7,t(1ȇ&i&y9"%ީNh.86asviB8C!4aex+B((x>II:㐢$} ;ҩY$ըDT$,`VxTd$k4iR `kQN)k!o}/XYWoo; {b&4 fp0-˜ >H?"HX&!k3D"qr7!PHbD18Xa Bd(`"4 r#WƊ:nk*9W@*<cAg"O Vx py<(y>R? 0HB,3`#yxYF͎h*82*Pr?+:yC* B g"8_xHz}mkdʜ49-k~\A3{'ZkL}[[]R8|?8x_>}#;?{?þ۽\Ttԛ 4Կ \ Ŀt@K?[h kAIA\A A?@7y??? L@B@A)8Aq³#BHA0BABTBdB $?Ã34@54A6@,,"89$:;D<4-ԙ TSDT55T`UԉJ7TLK>TO}"TZQ>eQI.fLW~UYUZU[U[=WEKfJ9-UQ7Z8\mVg}VhVFp7.VaGKlU7pXVs=Wt5,~N_֤XY١TXXEYXc:X]SMň"fEٜY=מZZXX`ʤ]ڝmڧZgZ7Z@]7ڧZZ["8[-Z=ZZr[UYF=۴0\ܸ-ܝ=7H\]܉xe[ܧ\=:ZKl-ݝ%ݧuE,AVؽb([ݧ=x\Z}Z.VKp^%%\v]M}7pZA1ȂX %_Y^Zh]W;]@^1_[uVMU_-T-Y]_K_ZYg]WUK_>[M`[U^}`L8p];X%K(~ 1p8Xb,@^`Y ~~ 1-W UM~!pY)_/N]( -0m4E]U<.pp~)_@Ȃ] ^.P%nbZG΂. >`AB6dD6,1X_E]T^e+]mpZB>~8 U1 a>>`p'^VXad6b<~X(]gvb}[&ֱ-g>b&(&v.Ugi@`~b|am>_qbG^uaY`v4Z5cF>.Hr-~u=f54gZgHd^Ah>fkՂ&bT~c>ފ[\eai6fVNqbM 6dVgmXl뇖U.]h~]H1 &}`ui~bC`B^kd`Xh~g m~lm`v]V:jFYA2eXoy\(eEc g~fc-a@bB&n+Ba bDfj4þN۶`Іo!j1{UU1ckޅ.EUKfX-f bY5p)"i.nq(j] .^EarqL$h.g&rm\FO$q&@|pku,'w`w$_$s&(r3GW Wj0+o"89s(Bo[>suE? tB9q9:_thBQ(xHWqw\s~+0L`w/tw?tIPw_v|w~8`X6gxegsPM`ovsymxBx(BHE^c/JUqFP{X4H\pyw,tDuQk(_:WOSHzVs1?L`YzwyRxx{|{/{_wW4@\0C/mPT{Y ILGhMU0~؄h/?O#]xjxG{g{a@O960S(5F CpQq(֧Gp7}6`MRlѢG*6LfZ& 7rF"F,i$ʔ*Wl/gҜy_͜$m#ILx(##FCG><E:u\M. ƍ<ݚ3!XqST6 Y˞I-٦h>D̙J: U$G0qrѠ+aI A2tQ"EAQ‡I˛]PF*eTVjXfѪe\v`†+VQ*YKrfuYhvZj@B =D]o~rzXL(5\PCuTRK5TTSUuUV[uUXcuVZkV\suW^{W`vXb؇~fyhj80 .vmV"qdȑX?'t,V"v2nWw8#y>zDw$|JFQ)j` @A? ЏUn!.GYЩ8]R{,(, 8+ J;X{-"h-& ;.{.NHH8 Fz/괫"uK|0  ;p a[\ ;¼ګ/-Zrr8ot'%13OL39 2+2&\J~3Cm\P<5YHmtc4L^S}5Uv;5زmvGM%Og-DKCSMAtun7~c[xY SPsϏCnW>+Hk7ztxknqKlc=^ZY ^-aٖ0u,d9y[$8+Px ^ 0(`"nt ʮk=ͩ O#\96H\Jۄ!`S=F;:uBRեYk6WeO Ox BoαAj PK"*R+txߩvq]^}Wk312P}=T]آr{q? ^׀Pmߕ,p"%sYJv 2bIN+}s9S"oȷ FܯK$)Y 9clZ-Y%l(E3v4"-IҖ2Mo.B-jQԦ>54zNpFϊc))i 3U yAyPQ B f[W/iuӤgJ|)e@\RЗ$U${ٮZӳmdi gx*tJתmbL` 8x0x8Oi(? Q?FػN6Om Wxc.Ӽ69P|Ds3N:ԣ\ :ֱ/3BMbt"Ay!9)^gO{ϹnOqNRNnBvpHS ZP{.rƻ%|og[O0fC RճPu߃yQ{kr?>3 /}!=_}<,h^m%NWϟϏhH~9w}5__~}_)]e.mn9P ‰Z  j` r_J` O _˙ v :he[ V..?4r z JJBJjA$a9!DD  >?^Cd$t0+(#1: RRSEpD|AKBAxTz! 0deNBSVV `IxJ PXYa]`D[e\cCU@Ja ;x&=-xiigk&%̃gk¦nfn&/%!nf։MFb]ScS^C`? DAT&ZvFAunt^!8Z݈QT lE^M.T6Ujqnbyـ.0nf(Ml)R\fYcT$HEj$^G2,N.AJҤdK^JLj,^jf$B.o`r~n"_.&%qHkqr_e$zV; g g!$jwyA0ᆵIVpo0.U®ɮML0mذn pA.po> i 0 % [+S^qe/!noos./!&/^d ?pUƮ*  b!2";0O`_&nb'~b(J(2C)b*+,b-. $Aڤ2i3p00G2Hvwwx5b#zz{ I|, }8E LY p2E2Q`c GV4XJ4KK4LǴL[@l.G3\499w/ ?u#Cq:*W1M3NϱQ#q% Z`^(:T[U551GӅ//RO![YYpWW^^uMuNq``^qsubb'uckc\Cr]]Weul(oqd_seu0u^1OW)cC {!lMf;ftg#g`lL GeTA t:QSKЮ`gMGX#M-Q"5Q.-MwΘ77w7?8G3xDWDODS3JtK0Ry- :QLP"=M?uzG5$B与8;y98,!OACT1B=\۸5\V`¼s 8%S4= ѝwaa9 Awh#k5'4d:P9gsaD P]QZwz|zN!vvGi_:4:Π:WZrc:M5 fzC6ntzPCC*{zlh=~;c>?w @ 4A4B%tD,tE4 ]=->(=闾Hc?A C ~32> װxy?L[GO?W_?g_)AbLb`3#G~B&a ?s͓c ' -U?D? 4xaB 6t (V袅 U1e s!dő-1 '-aI1ȏSThOV5ziQ"6ujTSVzkV[vjIz`ƒG9Y2h\ABGRJI*UG#BT ť)4E*D"Xnh#&5mtWիYvvaǖ=vm۷NȂ\(t6لg,`kB,7/H$.Oϡɧ}}zBM,Zl o͢ r3@$zBаK. ;ФK<<U=˭> )ф` )d0 FT ;͎h"aПX(IE)?@*Ăt‰»LL "S`Rȼ ;t(5@c[FÍ\TuHEۓL5 -MDKIET=5MU]S<=KZ3t+XݕW@A0KbU^ytc~&pfuN&d|h 2*8ڀN: iꪩk30c88l.Hx[춻I.`Op_;}egl0^C> d8c ZЃTclb0 V"HCpA /F3qsL:ձul;w<1yГ=q{̇>}?  @2Ё +9q 0:ЍtKZͮvz xKMz|Kͯ~LN*ÔXʘ-# faMr|ae~a }H Rd7EOn1F&YP! <7OF±sgG1 XH!"D#I'R2&I-(5LСe8%JrZ(/Q`SĬIO2.1jfSpFt-љ]gHIϒ)]&?[@c^I_8)jsbT/ RaΓƼ'JO^E4٬" =E+;ZTF{ΏS#-=OL}PE"rY hF{6B=b]{TBvL'$9v*PA JH(FAVĮim,lV^]޷*4hF3r9]vkVVk,ܨ$$A ;PK ~G&hhXԈ奥ŭ`e`xyhƫ'&&NMM_iمVVV|llBV/28WWWMM/_eq񈇇~}}~~~DCCSXb#&*푑ڧŢx;?F뱱RVRw~GLT碡~skrW_X݌II@Ӂ|PPFmwiGKGY_Vkvl񱰰矞--&lmUylÔl||\''!u˄99445"uuu!,p H*\Ȑ!#Jd԰ŋ3jCO&Պ(S\dQ!}1ձ͛83b$˟@ E֤eN\ʴSmmL_;o33n6!zꬿ= A2+ CTwbYU՝_|?4(fWw~$0^x@RL"IVxs*$xĒ3'%(IX xCL.">Y-Iic{J""{F"$R^ KwU_0P15#XLأ2I {S_y?eh-I!晢菎ף\ H"RM@.xʫR}jO.5**$Isrֹ#lZ(}}c&?R&{,gf&(2 |,*'KҨY&Ҫ*DE I}\_l㭼/(lr?vS gmGC [? tX5u> TB5BG6B6JA6֙L }wyBr >xE4vxlF=drOn)gL7EKXTZY[זg$I]"0P$p$2 <-R.EB{JT"W+8 WgNZ9D;2E^?7haYVHf./#M-mIp-xLs}#YVz`gz*@oG_="+v5~O Џ/xG'<@kU$?@>^oz/1γ@`5 s`W`tX@uWhXuq[T:pW[p:U|TFw\jYuy69VޗUywWo)g;c~0<W>5s(5@IxZ!!wy&e߇@j%zW4B8\)Wuxy|kxW̗?Zj,X^.y^x]fWVssx`Yu}8UXzH뇅5ez_XU0Ex؆s3thx(S?pWɧNJh-yrwGxwp\rVpXEzXguY5Bŏ(VWsEZ&w吸m'\qXA(yŇ#\YY WiYtve)`XWo6X(>4 7^|P{Ar=We.X|x U Eu[XMOUb` 7}Xxg b@s0It5;`x`|VWr[pXeX<p`H`\Zwux4'؄?HWЄh5PW9Shp?Wla$zz{ $@s|`onX7h:I4<(țU&@}7}7~& t֏ٕy HSy׋|ۉ(^Y9řlSz)s֠] V?{؛يVg3WHɓt)S[?51ʘY6Upg/Z a:&j(z_tn2iw5HLJgT9QzS*$ZεY Di5egixjy=y%7ICzrK|_|~J|FX|pUu{qu )U_ g 9V2wpW0S5ЏKHُ5*Vh:i^5ZhIS+j sڃ9L5EIɻB'QyHI[hJ}k1P >*B|ČDMZƃdJ$COT>0pI4>GtI |wAapM]ǥ4Rd) |>ɌTyL#mTKPT>kPsG})t˔,JӬ9w0Lw ATJGJAAl|ZPťtsѹ[uR QH̼$8 <7L&]\,mC? 13MC4BtJ-i$Nte|No,)NPD9;=%LOSXʣLحELtC'aNQ QXAHk|M?+yaGyTҋ= 63 QD)H\$`=6g01es\aBEX Lw ȥ#?NLA>D7,DC4ÄEg-E͓c㥤-ϐET՟LfA~=Cg}̌DA ؎MNlCI0]n ަ]xDI APo(EDk)H)G,pLDB罿|©>׮nQ_OU=T~^۾c˾Cgbd-EN*KЋ-JdmwoQoLtkKbثA﵋쵗yPNf_QFB,HZ<츟Q / ʿ  _@O GT?_?~J/ okoPTu$XA" IR$NXE5n?3a$&)S0˖0IM9uj 9̃T<Q\IJqSO!t)B*k4+BalF%[hZq9ݛhKM'%%c`a NxƑ:6T{%#!b -$˗rpRZxYt` .Q+Q55qQ#Q-2>S.17 {wOp:AM,HIG :$|At qT裆򦨡٢ BD$!;@j{zh }kDD  ?$.ϟJP(hIaƴ9A?񣏁2ls>ʕ(=*_|ASQGs[?PMQHtNY+SSQ7? 7IЎ4 CJ1NT7[8_ ,07YuRYJ4q~:=oaR`}#3c(qa} ?q@ =s= G/`c/p('-J]sH# 0FvR`o%}? /tYNiXatg{ 2%^ s$|I?cz/o}Ѕ4 I3F(b_q׼wCRA@ z`b@lmxA $s p%,`(ȑxG8&ڡ:4xzB$ D%. (@aL@@;b8m$Ә8&0R`q"8VDh \"8rg`DGD8:Q& ho" 0*J6t@OA b=Hq,&$+yLn_'A):o+טJ"qX[r /`c1LgFĦ69o,'%[aILj ;O>T#*FVRt'-mK]ԗfBNK.#b@@)؁ d3Spd[",Bc@)ÑlVUsk]kXA{k_WV}mYQV `lcXFV݂3fVc ;FB ^PlgM{-(emk%b-km^e-lm([svmnWK\Nַ'pZ>W5ls鿵wv W.g[7n]RVMousH^Jz'Bᗿk_ O_xZW}` sp` gX^{'^!rLfq#KbwNqklcVs3Xu ozsOʺfamo|IArC趦z+C]--0X=?;K`3Y?wBդ'MG0Q6XG^|#/m[^󕏻˩*A'pzԟkgYЃ׳@R]?<2 xycm4>w]s\?NÝw}y>?/ips4~gM˱3B>>>˾輲:<t;d='@@:۽+Ax>݋ @@?Td@K;()cA/4$ļc#cBsB B =L,4 \@!\B"3#|B, @-C\$ÜP"?H7#DI8K7Fî>u?B(?P Ew+rD-C,DD%\=\Ez;VE\E]E^>^6aFbEP-{r)U''Y(^ک)K$LM3*b**5R{!AAOGr*Q **+B #(HlHH\e&xH&H'H'!JBG=TGcGҲ+I,IS3# .RC5" FmTH!T TIdT0;TTҡQ(85S TKUňqӄ۲TzZň'2N,Vc=Vd+ 2Ȁ_'0NS;O+"OӨ$ĤlL+*p4}а"+zig}Vx:S Z%8z%F Ƃ)R(=3?BVDϐOr'HT}^`|)~*Y(%5r؆2>;4(sXL+Z ٨0'ؙƄ%(m؅هY(먞*sZұU5d48YƦEXZوڊڝW2 |-08 X[FթF3ډڋoM4[v%[0IXښbYj[ǝZȭڈAܼZEWpIE'r8fKXmYƍZښ}ɽ[ٵXբX[0-[#9xZkYօXحX,ڇb#߹^,@T'>>^^^...:::UUUooolllcccppp\\\,,,uttrrsOOO888SSSKKK<<&ӊb;QTE_bXzڀ1DFlم|.._MM/llBNMM\]9Vi(* yyy˼ Ȭը~~~͘ð~}}DCC¤̾潽ʍƞқخ֕xxxŢӣϙ獌׮욙s俾uuu!,X H*\ȰÇ#JHŋ3jȱǏ CIɓ(S\ɲ˗*3Ȝ9_ iɳϟ)]o(6q~^7}z @gU?^[V` d_~V{}_ )`!!|vY"wo Oz'ADj$#yOvj-],UaHTЏL&ę]rqa9!xI^,<vZ{ԉPdLJPN ħ!]^f馜v駠*ꨤ9:ꪬ꫰*무j뭸뮼J@:c&6F+Vkfv;z+k覫S+k{7ol_;p 7. Wl_Oq ,2l([r,2+,-L8wlsvqCv M9!;F7#rY ,`TM!Rό4Ysafcdunѳa({Cf}gaixMFCQEU;OfkfF07c Wq]>4m?7zatxcM|=sl, kwrA}QqT7k ;97T!8QƂݏl`H ~ynh8jZU`palyplfaʦ0P~5xbΓ圕GݑY4V 4cX;JW~N~z3ep c@A9-N5\BDE{g,sؐeMkj&pTAx<A8E/mc';i. l`CEǍm;F4meny.i$w0ea0X_?7@H>3SFPVqD46eۭs &ayxl/cmAb5 JޑD5dqMC#h!94qYs&(ɯoObA38ħ@˫AlX[Te :n]~,P2CBfOI@ F:qir? mttKV5CdW')cg>U4ŔY*vKIlPںBbbǤƽ*T!vzvC2SUxj첸=6YR,hnq!,7,B hPX-F/[dX}شj+ՙp.rWx[]y^{Kηʂ2_Bwr 3'~d Ǽgx&R &/W@Mbm8^0eǴ,~S%60ޞ:dnksn(`~P?=s/_? ~Om>>>)ۧܗz7{ICxOOЀ55E58~g|ٷ{Շ}}g~%E},؁$824zg,W.z 8A{RE0?P#zx?gSS|PǂPC ?`(w{g|,8b8FhA  8O GX|'H ^X{L8r(S0B85X79H.;ȄHH}hzbH5A`bXS{V(cX X@zgX|\xC`{C@6xw|w`w'VxI '҈·zO`7H[wܘkI@ȍW}Cz]~hL5z'﷌G08I`\@(鸏}wSexWx~H|ɐ)ȏhT8S`y ӈǏ~-)|*~!XJٔNzIczWVYǑMO}Lٕ`QlSzwhjzynr9ww{=)CVw''xxYxYiE@yngYci1@iZ\D ){I}5x~4g{ezzV~~OWG){cך%}WY|Y1z|؂S`t{'z@zEɎw5iA WIמWXz6`'}z|WXV8Jzz7n~zXYɔEX\ȅ8؏{9㩇x%H}ׂ66}vOP6`IxL89_ IWȉ|ǍshE*>j\j,(~IЂ99 Hؚ9|I1zznPEפ90Go} {5*飡h8{'HޗmF*@zGo:8zȐz8H؀Ǧ,Hhj zzAPywEhGEhwy|3کAHȏojD WP}i?:Z~x ZgZ(Wۚz醚ƪ|>0yZuАAٮםX?x؅KZ|ȣjOPj8E-  8*ZO :|uGOP{bcʅX8 ** }\*I x1|NJ*HBٱLzX}ǃ'K|3:Ҫu)|0Ky뷭Ww꧸xۉ{e锒{[ r {Ǜ99PzI[zꞿWȔ9Phhu:/~GڜȞ-#؀!k{+i HgۼL R𛜸c[1ꏿ}M}ڧ਽ƫGI+ʪ)8d'I zʉZ~ٞW +.bg73I:3 Yy+ꅨljlZl${6{Wx{zIȃhK ڐW8zM_X~&pƦ 3\ ) MX^~ۊ<ܼW+{Ś:ʯ5P~oXn{X+mbw7x؇ڏzXʮC̞|_k xۨܺ ѻ(IYַljRrXMlWe%(\J|{4ںP\B}VXJ^hg ʦӛz٩էZΪ7?lW w_ KM;';,x ǥe}>{zAw|{Ǎ&R2lw w%̼z<~>7 zHAhlvGǔ').$Lz+ṱhmyB->n}򈡫ӵ8&:wE)^RM6ે.?+D+Ԋ>h(,x"k =>-Tl`}M|M0}z'!ȃǚ#H7;{{{}ؑ֞*)O)8|78/A:/<{?ϭ4K?Xr׈PNBwmk]R/MgpYvg|"aovUU 35?f$_"S_e7<njKN7d6s_/otU_1fu&_s//#ufr/c@ l`Uuf\u84iEr70rZIg62?.6/r_32-m3CN#dS;1&ManR̘%NXE5nG!Evϟ)UO$4Un *lnT#lJ5UjdSQG<)*Ӗ"i4_j ! ?o!«q-f(ݕTQ1kHq*0A; ƑeDrefl#ā;F<0@5 O\#Sϯe<o]64cNwsLkGH9A/CA m)K4DSTqE[tEcGBdѩ~lG rH"B"Tr$lHbI(,J mPƏG5vl1L4Ts4mM8T3~rN<٬<=i~LLȔ;4MGQ4" 򜂟=ٔO,3'r/uT/.EHT~tR5kQ FN!~H"Y3Q5-U_xg/ԉ6 ^CtX]vr`W Jy"o xr$}S$~ څ3!$HbaF a{{kӬa$!xYuP6A)ڥf~f p9rUK 1;WXAR槈6-dSqVlMMmkm6Ia_ lFM)LqzI 4N9-|}^?=Ro-gM ا0V|X?M_ LeW_7C!dn~{Ym{YH"~v)6}O.")Zȋ_AnxBmG!&bRMEMjak:na+X,Z SݲIa Cx/oSr/oInsc'pAF$rJV`ӭ0*OOHEVqB%*!iIJZD r(Uɓd)yDFXU!P*f3yR4Ebȼ &G2#pS$g9a͎Yf$%7\R*B?&7O|IK琴N 3KkJӚrBT,\'pygId֤P)lRVEI5<)Ph2m̋ 65RUP4 u 028!i)LW}J[ũjbTص5lK;asi7YМb LMT7:H3YTQNBl*/B[5uN.ӛ~lLgJԢkY`P7 ,t3!5MU*L^6eguEϪSGfe X'Rju7EbP.ȞRg7l*uŴʼn?$J8UU%[]ƴeJr[*|C+vM;SŻ)tn!p58Zy1MES "2Tguگe[WSa-=RN˟h]LÞWV$GN]o5=5S}PO]L3a)U[3Ѱily $z|rf*ɬR4QwtJk5 fBzu5:xؐd̋;m7Y[8O`zbl1~s@臾t!ɞjRnXJX<[mɝs&KI7bDҝ"sݭ0YNSLz:ݽWǯ;e-<$z'x9G=%')i]/kϿx.-VrБt!VGy}24?ù/_%C*C닊ˈ㥎>ң]aK٪ vAl*@8@`1Q)lB<=NҺ)f㢝;g a)(h60;va,Ԗ5Bҕe瑙7IBFJ.Sy)3,&| 6ۜ+ɔ'k+ԓCĖj㠹-iΒC@9y-؝rY!%;t<6{y-3S7 bQ+!#P1c(Cڞ"E4${Dɫ R|KY'ɔoT2] lN\A9۹ի)Ŧ8Ŋ`G)c$\8S5 KG:Gkh?k?Nj4$Hh3iDJNHBH4CH s(\I$@L4<0a1s=32{ɐ5#sJJJJJGI` QLK\KlK|KK˶tƉJj ʾ 1 Ĉ@4.G`Kl䌺1p dZ 0L=,M䋺X0PȂp 8͏הξ5M$ 4L 689N,`)3 x MH 숖@0N d 1M ,KxύahOXhOlOвp˸  uZNN| E4LNP0͆K= E !XIQ+R8R$ʊ (R,M&˩Č+ER#M3CdO0P-uP1uZ hJ-ӧāXXOǨ`SlS@m * 4M,܁ô= I-&J} ,HXr.0X. 4G5IUX 55pα8X;*CyT' ՏTO uӾ +M;݁4.0A5k DC*Ȃ{% UP0 B |͂ XW5 0h UPy-ջ@2$ X0.`Љ jTBI6h 10ݸ\X% >Ży $ۊ VNh6pĬZB *+ U%}0Ht9X)Ip5˂j UǧmpըԮۨ@M5 0P%(\p%E[80eu\\@2ܚ\e @\ ֻV՝L[ӻ y^@ A MiH^S^L} ES%]_HpY}$_=J9Փ^Xhߍ}_q~#I(DE&, RPSΤJt>\`8qU[8lUʝv/Z<1@O4dR ћ~5dR5_T"0 ! n뷒yvyO E)!)n1$,&y&fdQ٢.S#k)ga[I!Z"~;s)_ND/fKd9N۸zg\$,.r9Cbl,CEMY͛?sU(sq㫬/7z !x>3n&lUX'/a /ao 1n\0oqz%t a41+)аbz9*)EBqdkaC_Jaa2 .&_(!Nr `'7t7>s};qxx7&d/bxk*x#r?ֻ?(d=wSP EPҐg0nZe>BG生߼z(_y(z=NzºD;Q*5?&;tJ ĭ%p{${60;$hn7԰ Ӹۮ.P8ooq;]A˺{tfv:OtAoXjWնmǺ~`;wa3]sSqy^@јN.yB'|}nxhz~0[s+~x9PS7iUN,h~51dF"h9TCG:{}ڂA@`we;>Vuq-!N!KF($b=BXޔmhdN4v&^:f9U 8iXd}' zz"h(|P3)x:V)z):*zjfQ;)⦩b7:+z+ޚF?+Je֏[,KIYjk,uٮ v[PB+,ꮼoRm*N;B& ;0K<1[|1k1{:|<2%8W2-21<35|39뼳Bx3A =4E}4I+4M;4QKsqL}5Ykqd5D6e}6Qb6q1]7y}4{|}댉+3+ 8CQx~[>+nx4>~:ꩫ48#cr94gw? 0*><|%3Œ+^c?53^={02o+/>.M7rH'qPH;W0{D ( v`A1Ё C:dt sV ! cBi0") j9 .!J7ÙaB|" X (H3!x0^"шZqfIԛ[0`|Qa2yK\E tHA(&(t`#HǗoY#}H؏3lO(!MNBXˢ@,O36y}< Iy~| <%q9< u PyDLЕ{1K'BR~$^4~DpxT7e0?PԅG(pO³G i: xmZg?,JJ&5wbOP}B>INF4] *#8QҞ\/Y:] )XA Zөt@ Gd/ԀR tmTmQQ,I&*})i\M jSD(HQ({RM7}XM逺ֈ^TH.IJkE(GA+] YiI*uie,ԹfW h`݌&PIUzk݇(,K_rtHPfiCFt)HmGf_vJM][Pt)(D `Ne} 'M'WT6n;DmwvҿlA5IƄ,49yB3Eha-SBN lv86Ӵ/7OLvr(6K^j5.-:yMu(`\ƒæuEIOeX3̲n%zmryiC6igp# \8Ɖ?<書 Ras-c$8?: sz3@#\LЂas}(ʙr1Y,U&\]B0፮}{װtߐoԩJP;Խ񨻆6=~g^uc_0Qz5 ɳ^b!vw G(!|BL=^(%WG[o>"1 Jdb84Xvҗ~z~v5?xڻa"87,\A+D^QB"(DB"$B&Ђ;DË% $@1(F5ɍR )A0H.p@?LB)_6@;\A@DXB($B ! aUb_~` fFVa.@?'B#(BL7|C,4$&6TC5lB*B" B<@,^!Сe!)aBR!$!"x+'B ,#A8$;B))4.D9FC-P:R cB:8\&/`+ &A'^'()!!+,]mբa" !c#c2.c3>c4N#A'6*TB,) B- *|B=#1@B>c?c@dA")"*.*+>bDf ԥD-r`.F" c.H223B4R#K$L$MNMNOPQ"R2!8%T#?-@$(b%Bn*6%,bhW"^$.&[b #]H"]^d_dLdMdNdOdPeQeR.eSSFdRe^AjBv&+~&hXMQdZ!'y'yFzzgT{'|z|'}'~槨uJ`mt'Z-BA$J?'<(FN(V^(Z2ufh!xId?(ƨ(:r}(X(Y߈Z$ ihi*Pǝe攞hihiޘZ(Nb󠩎ްi)ĩ"Cr^ I:&.*6>*F~" Q)ibٔ)Jqzꟊ&챌)hnVji>r͏jjj~[~'(v~(ii+J膎k*꯺*H\ܹi뭦ͬ++.,,k**Nl2k>.MZlh,˶˾,Ƭ,$ll }֬-lĖّv,SAb k&%,jAtA@AC>Av؆A@mPtIB@k,RkZӢ+HEK܀{TA4<mf )ն*ட^j@@D?ny d휎.D5kjH?Am@ S܀8@nbljkܫktAv>nf/GIx?koyiA@dATTB 6{dAcC|ﶂ0 ,(^ 0 ǰ 0 װ .  l`V1#/1 Cq L1\1?l{1 @1gȀq?&`&aabgc&rJTVfUbAfeB"CVW'q Sn`a gb'c"c*gdJ%e$0r*+/+2 21.SCr$'ƒ~$@C'2/2W3nf kH6o1G7o3ojq[x0h /R֮.k;G ux1xJOkO88x7Xswgg5d4Ըxmx -?5K5s=EW,yUb8y~yLWm;Í球s8y@g3: zv y' ]qqC:P$$PԀ*L΀7L/LK_ :GAd9\Aԍ\ŢLz иgC$({8{8={GS; @\;_ys{s:ʀ ?P$?XA?XAρ¯ $ |,+wE%P8%XȃUA@+dX}{=>8* w{_T@CtT/#z$,;s@ D(ꏦ<{C \؁??L36*1c/w髌лT%8@_E$~|C@ VW/CtP!ċKFK2 E YB_L3i֔eN;yh@5ʲ_X1bI-Lh"%H,-% !]0gc¡|[FZgСf$K &ZxPɉ3tH6fh86}PԫW']TVjX|I"hs~Ct@ʂ_VE9+k B}Otp%a. rIq]$A|<4. & 4\'|'bʩئꪬ꫰k *.#ȎK$;H/+0@249b1Hc#A : +tȔB 0$ L2t4RjBآ6 oP |<ܓ>5B -t+Ft@1 $SJKC23 ߜ-C8mL=TU]VGTZYeZu=UH% L 6§>Ű qؖlQG Ch\f-cLp[nk 6z]peY]h}0^yWW6faՠ]Kf`cW=Ήa8CutbP2֘e7}I|蠅UX^Z[{f'Ug4^Sesܰ쨏V^[h^ziyk0%  ܇R+_6nO[qoZds!\Uf^N\vߒ<\^;/Cͯ%WSum5ucW|Ӯ%}+r?un]bit#]Ue|Uo|V{W3{'ߟa X@ VrT že:Ԇ`,bàP _(B|D" S$\(/|p Z"#j" ,d(XE(p+ 0%(Qi\2@E *x n Kx/ kx? HNa$p]ЃJA7tQ A& a^  ;k|Q:cT2I?``C\0vc1Ű|8YNsT'hQf7a&#T>OĘ4[W͠|'xf߈ |:'\F9OTzmB_PiJY*рsg07BfKyS p H}RӺxڃJ}T~,J/%5S`uk{\R,>-jh83 Wֈe%\Pun+D_r`yҜU{U>_j}%`պԼ.7fSNve1;N܀*Q:&RӉF1"؊ĺ 77f pQ*tig*6zßƅJ #mXl0C03c8onk)uW'Ԫ^7!X}h+HڰaYH?M}a8-p3 ;~UKV9^&v Ч>'8XaEmCg_+Ƒء5x]npGW]mA|8 5?.1A ƀw Нn-wo_ri U:{F+0l>󙿾 ZC?@MMGCЉ^MkJ_ҘFt;XTE6ПcEZE~ lUAVZF 'ڮJqV]̿3I!xbئh /mo}v6St/"]oz o[9OPp ?/8(^q`gиcq! +(@+x$qN",v64/Q EHBP,t! eHCP~?:6,y5}򯝏SPOn}z/Lɏ7Jupx$XJ??EpEIM(B>XY /* i˲f"?0QM0!cPil v}B` + PKԸ0zo Ҡ ` Ҡa ©   j l J  Ȉ` @! .,nb+ kl @\Q1xЭ˛U`kkVb10 @¼ @k̄QƔk +yq_ #1J2lqཚ˾p L̼q)QdQұqp -QAǩ"!rk#с40 Q!,%L6LQ&BR$g($sR4T%_f&On,vu. !$r Y2Z.A_~r)p&L*'lG)*[ +gB++QòR,a}\ oՒ.'&.WȠ(. JR t12#OL) ^L`rO4+ J*55O53ZBOJ/6S6U6a7_OD<3nΏ.N$, 4< DL T\ dl VT\nh  78Nnΐ. :.;;;N<Ѯ<=n==N[z%ӠL.NnΑs3켓Sγsbh.SR>Qf=,E?c49F@s4:G:N;;EtJqNPZ1 LuVL#WuW-M'HBN7IC4>`s^ӱ& !LVL%5WW/`5X95aXCaE b2. ALVL'UW+Hv\uS]T@҂bg6?] `LcV5M4hW5`ϕX?a_N ij/`` 5kєR6\}5S \SYT8A .m(.fPdhS \5I5 ` q?wAL0aʂdhhH`BIa AY@vo';PKQ|QPKAAOEBPS/img/cachegroupover3.gifXGIF89aFFF444'&&***!!!000```222fff,,,WWW???pppmmm\\\cccPPP...^^^(((TTT$$$""":::HHHZZZRRRJJJNNNLLLdddXXXiii888<<<666BBBuuurvOmqsss {|L=>&'68ӊŀXzE_bb@@@l;QT|م_llB຺ڊV\]9MM/1DFֈ(*i..ͭuttՠNMMkkk 𐐐~}}kjj~~~DCCˍÝɦ|||wwwȾ{{{ηzzzyyy}}}vvvxxxͻjjj񚙙ӟAAAȱ!, H*\ȰÇ#JHŋ3jȱǏ CIɓ(S\ɲ˗0cʜI͛81g7 l盜H*]ʴ@'6l7 6BJ5*`ÊKV~$ϖ]˶[jbGog` 4> l6 Y˘3oTIz8S>oG?'ub 8g=Qȓ+_3C>!A $PGV_.٩ T WN޹`Z-VV1 sb6mx6s}'s=񲓷I-mt&.,m(3]޽UE2yռnMGcfk-w涏W=/\kt]d3W?|ՅdlIk1Z_]^~GR6.^7*CnA;[L\p;_ =~[d 61|iP<%Y\p$LY+^60c(UFF8[vL7>>XKCSl8 kys{2z{r}>˪\& D)jt$ 6U.$ΝcgT&.RWA='}cTgu:hvw>oJpExfgj3`8xSO- uU_tGJIS{Y6mwFWh`S3.Wuph2{w,Ӆ>nj.Ըӌ*#NqTx蘎긎؎8tBtв؏?*s/0Py @ ɐِyiiS#B2$Y&y5В./<4Y/5:788B9.ٓDy4W?H0PO95;@XQ\ٕ^52w/G@@F60@ Wْ3Y/s-:9-y79J95 Y/4BySYP)j9I9y_3ꃓ5wpeP/Pe5p:P_@/@0?:;>f00;ٓ8P0//Yљ8{8p8<0-9050F;p:7>09橘Py /pٙpiZ<;>N)IT?9ڛB 38yyO0:P8К5e?ʖ9 )W˩9=$Z)NIFyY/ɗivdZ,~W ,zg֩ - 7N_ W t7 _p>PZ:8>`y@.Gc@;@ZXjIIvJ9n)jDZU p<`_7wЭ 6ʖy{IDٓgyNZ02@I%g9%Jə7@n)%z<%z{xyȔ⠧pPzYꬷiV馼Zg ?RY9;C9( :P陜i{)Z_I:i+ٞy?-꒜9I[ny_:p>z, ٞ6zgڮS/ v-Y KzW)k[5@=v~z3y; ڒ"--Z{鞈Rj_ɥ 08+}cn:=KZ^);0fi< zP;Xb)Ò)wʣH雗ٓlywl;:)ByB9s^K鵌 w 6ꡍY:٣*:䙣=yil KZs/(9$\›]c⠞F 4Zߛ:<>B|:CE|J,IN|--4zXZpp[`ƪb\fld|jl[| !|ɘ8ʓ۞s J3 h T)LBɑYIɘ|ɜɠʢlp53::i4ii5i˱ꉼْ{٥ 4IJy.I6$:[{˷l˒ IHϾ̾ۨGZ}M(L͐/ ɯN̼Ryιܯjk<{<-3,1Y|ɳ<-ɪ_ S ̗ jӨN{HidJ~Z拢))~HHWɭͩ; WRm)5;)I<:ȉz M⩾)92 jKˌ霯yIg  Ӧ<>7'W靉\mn39%? ikkܿ X Ѻ#Bl^ iv<˕KY ֛WzܙՒϴֹV{fvvjk-lv4c/8^nɢ\j"ztM> ƌL˩Q/V~oɹ9ힱk.8~j -t~{Εz j޿-9 CS9ܞ>-쩍yꎔ̾q~ۻY)1.{ݞT=-猸ԩOjqmD..<ֶ=$雙9yy)VEʍ9ےJ;)Y.uN+ͫ~|{/Mnrx;p AȡD<€#5f̍/8vPȋ uȩr%~. %ZPl;S4|10bN?3¨r3aƋ@0pЇ_#.ź~`_ G{y,/|q#9^ $7IGe WeFd5fUwHř䋰n'- J I75prr ծ iҥpb+0*I̺[4,( <;4/ IT:+6d.4!. `i,Vҍ7|8"=߳K.˖424? M82-3Oi2r!, M"Ͳ :t,p+|vh&&祘`Pm&p!'Ih5f)ӻ#'tRP3-a-,vXcC068-D)?T#B\!3'ru[ b?w4 p腅%]v[Ra\6RC!Ɣ+|1ɡxWeYY.=2C>e05YikgN57SYQv8\iK6;ňY2sR@R yiׂ"5$61A^-`|H!*6Se1<ԹE_LHVH.2v#4)$ElTIXt[D)%:[R8N4L |HH,' Ҟd.d9Dʄ-( 8!Gxj:BA Z<+ fGpqʯ~U4-%]U`B@}!@&㎰g: 0 K)G nkxN0\Дu'Ȭ2gGVN)ew|q#fXŬ(7=* PL!SE!'af%Y?-&9mJr#EN퇢X$ȈgO3lYlj8?UDDS[̘<VHrUIsnO+Yѿz<+KYsH\B DZ @iv4 &wqns[Fnxe@e9ccn5dR9P.<"2w-eB"i")TvFX#u_qF}2`y]r\3ym~s\;y}z+Z MRX˩DH"FI9D4X][:uX ﲢc}YS/J^$ܞo{͜?E©Awנ 'Џ'^?xG|v)NiyЇfI衔^(ag}]?/}m{^}y(7?_gT9`vǻN.~|8ޟ~}''_U-gn~ӣik :ӿ@i)>?@'/`.H&~H\Q@輗?sA+3(=("A"l;<į,B&TBۼ"BA&A$l"@A/B2t# =*,C&6/"X0B5$4CdC*T)<@%>?@ܼ=>LDH;AGDEW|E[lVlZEE3EEiY=^\< a, /@ĚTRDK8!bE@g_{EӣF0%pX(`((XuT%(Fq$pD7Fa.4X3:B"`~$p.A d.p}Gr=s$.HC%(0/"3xǛ$0}HǮ;FI`GH"ɛ":G&]I!:ŐDn%ʃ$ճ՛(BJ%\>, dc &X&p Fp K.X K`:G8 ˡ0.J X.`G(K~$̎1$ LL4fd>ҋƮD@;lD@DG% yX\N{NLHIkLO,ŌFğKP]PmPӳqP П+::P̐7o6 uざ"wP%7}Qo+mQMF0 c /ih,ьH#Ҍ3R,ѢQ _ 11,70A 9M@Fuzڑ@8,TbvA(ӖRL9/ !SPRr aTQ q j2H8 䨈 S%/@$:8gŶ'%ce>ِCBp/h=/42 ؐX.2pqQ+8VJ]AK 8;;Hב8q&"!( ׊@NDÈrC ]!a(Cue(WY `CYRϺVE#$;)? odҌ ׸WY(`"m,20,K E (j8 r]X 8Y [`ٚb,QYJ+H:&jȎt ZZP ^ +㰉nT`M C¢zؐPc uM҈ P{tMW敏/ȁ>ف/X^y=ZZɺZ,S-8 " &= DԈ 㪉s)@ٽ0 S ݕUHׅяXh"/ՏADaTZ%䍟޲mAu /] H*a6e5R)AQR6ݕ ݶ=Q4Xu4nKlxaἹᡒdy3P1c[P X!b2ecR;CTϢRdb1cX c?c@ :;>^a2I3=-961KPQ%d%6 esS+^b+-Uyȉ~ɒXUX2Q٪f.ΈmT>?.5R76;8rIR'L/:ֈSU j-UqY!Z$_H (=f]fCnf@ۮ8ci. !ءY؁X{k6`,JfY&FОNًb j (%Q ʺS<8 88,>U}dj)/Ɂ 1۠JB2i+[T.d>ZB /-o  韠-H- T(`Xǀo5f=JkQ00 GBkx׸([Rqj'Ue# 9x- kQkdH!ǰk;g[?j[ 2;cjХ\⟽Yegmv U݄nM k(i&@+jF-׀$bKfsnn{.nh*<,S8bo cQj};ӦgN_N7UQЫ7 ۚ!glQq殪M-5LjVءkYW R﬐h1GCAezrAIѐ)F!NAr%x q&y) fpwfj h*pkȁ]$~YIB~Q:Wޔ0۬!&oȾFMaY7 :8yt^ h #/p\2 ;h/7(p޻([@2Ho^ V_ #]/>`(و 5<)X=Q>kqTwxdKw;fb4gpm&I,74 鈼)〢ehar:&㉷f*E;B/ x.c{y9 ʩpdž~癞_N v szbØlfư`yey \{q@0:tǗNh$Ƕ^_ Cl ~b{ O6Gr>6g/|Hr[ c[p7+( 0qW:>4O?̿}|"/ Jδ1r@*   E jfgI?~i,h „ &hc~/QF~7xc^XȊ*oɣ$ɔ*gYE!M11NB_ZƗ:dciU~gȍ:+hm|1H=onc=kwL!aX[J=/N{QKpUvvh4CpC p\CQ9~*є~,D}m$AQőHygUUSN9b74eXnU BiGe`}RGY[JV`Q UPdYnu`DGT?:sw wD%E4\cH0ԕ҃m~-;WHii~5$wX%RZilb**ĥBրeVC IUC RiStys(R>\luMEdEn5VvgХ>QZ 'Il~Fm Hfȭf˲XDzgT8@ֱx[Z0JcݷYzPkĈpWb|V+Z^;H`F@ չ! ^/Gs"a) FlttOOF0[URI U^C/!Ts+8~8/X8UMP(ڦFv+F[eʳq;~;;;C>|WJ0֘۸[:8gZ]2NDzi_1S䁟[2_1Ļ>q5K7\4LD+32P3#fҰ`QG W8s>+^(ZT;^RPẘ^n% K` sHB큘q(!F<"$2N$t5mf}  e <ܘ7t4k'2.jlF"<#Cp9Dюr9~\ ٱovd&H{XB×Q"Z#v_S8"eb+)9n,5nHR_F>2%3NvUy,/&l dp,19f/*3 f樹`A8e)V9;ruU.SLT1YK+ΡSwa<1hQrP)PDN𺳧hysB(鈽F*Q , Gr٫SP^H炔yL |TIv&8-)2rܤNabHD-PZ\ېmLmeP+0~LqUːfCl:SM*אcX2*FCŪD7[*9,m6RFk/zuO)*S00O E$ ml&ܸY!WgFٲ.|Fv5_F`R $ɩQ|e8] ? 6J&y %VR2^K]`&&.'_ \V)%bez)|8|n!UHH[`Uhv ?瀚)N~~$^[8ƽO!ڥ@&&㧮f y`̣Յn$zdtLqgUᑎYgi飄jE&Z?j㋮NR$"i0*kj)mX>iGx yu][uE0JTrQ)^* j6)݈k nh*`kh-e9_J Zi0l5bv(ޟ,eZ*,ِlƟF#:r rSbGіcg6Ӧf^j6SٶzfkbEb2Zۦ^]m-ݭ h-%66!mbV-&4Q.nOA()mfH& Jjܖ)ۆn8dZ.h])lJ.چ.Mv dl-Ҡi:/Ư/֯o:Z/2C0'/040GOp?l_0go0Ct00 0 0 0A ϰ 0 00 ;7A1'˰/8  KC\1goq<071 11 [{415G 11q41BC{[0"/ ;A0r1$p t4(XCo2'w'o2S45q"O2**+$5Lq'2.'[(4t1ۀ211p++,krײ.G4O3 1g37s213S2 53:5r76A?@Zraor- T: @5(5]1^_6fs^0Dt `۲4v(Ȁ9o!&CQGe;Ng6ofpgC!Ȁc,L3jq?6prssmvnXv7AI?@Q! A C Avdc̷ DO7tw7 @v%w86{wqw?,s`/!(uvk0( txwh AAj@34ׁ (h~;qG!8vj9xwD6 5@hw{ ukw85DwOw?wC @ty7819cx|Ƿy?7w2>Og?t?x9!zCq+v1r87߹vu z{/8/{2(`p]s3gg H/wrp3۲tk{Ö8\sWhys_{d;w@3j{l_p;;G7;s7[Hq籁2Ww14WB1ׁ;cyG7/:K y4 e;_oBh;;w@8B~Kx?888;w~cyQw9K9u|'wt@r:mwr5Bʳ|S] oCDAD8 x㱆[Ϸ{zy%\8QǶ#xxWq-x`G=&W8@#٣s3ۗ *lL/w['C+cI[4tvgXuHӾ/?k,;5A->wׁ#@>vW:cXA9x?4!˟>k+D˧aB 6tbD)VtX-L9r|dH#I4yeJ#m[fL3aygN1ň`3EK6ubz$iN[mnKcɎ3P"EBs}N۸{7~٤GY(|qȮ7yЁk !܁cG]ѣV#_-vl4φϰYղuY*S'EФk.jC}77Mrɾ/g"| 6{,e7OQ3bfIo/ ;В~3=[FcE=l't9n#sahfyɍ L2N*0C=|Und@]!nyǒx&pęV~aEcoFo8D0w !$r=#-P%tRc%RĆZ`5Î]X&tNQGK/?9b#1<dsNj\Aj F %T<)5SS]U2DSYWkSהn06,/8>'<PA-Ygvjvn=1$J]^axH_`VXUVt4%x.κ>Vd? YBmVѕZl[^hg ^߀.`SQW!Vt⍯rμ|0%AMmhvYؙo.h.|Oxqv6ρ}HG6m EUo9n鞹m&\ÝV|a]}%'IyjsA)tE*L {,&3/o[vܽ/ic' +96Mo~s4 YNs夁2Ch$ՂOqlD)i+AA4&U>/*#,n0hJJ)tDDso?mF7SԨ& qSpԩQ ';TT"k6< 9S?gX TZȪj֤d&TSNVL =jʶ k8:ؕkhbלhaѩ>!*c9[1$e`N.s&*~#pmk]f7 MS+Ңs XBP(d3IXBK", uAq$!J0C>j|WEUZ@]kYМck#m8IdIP x!LBW:Ծ"^yfl&yF>v}]dVv7f D˻>.Ebi-y_rڥ|xRlMg'vÝr|/mB1:Pt]IWғ;QzOPuW Yֳ\q͟D_%/,Yg~ 4ɏ}#c֏8G/bS1F Џ2O&b*zXH0LPp'֮ș: k/jP0;v@%zPd @  P P `P;ꄆ= S SϐQ OB U*uSj IP0qNN)N g7PDrP., S` 0c-mQok:!z~@H".`*.Js*MitdƇ\|2 J j@` q oD Cёo" j 2K";$Cr9 M ,ѴI $ ͒Ҡ-JE2$?3@H:rQR($P ՘ , l LŎ-Ւ&(iq'y'1!7 ȴLĄ*g߂+@Dq$l0 9 $.I1BF1{1AFBb;(1' 2!3pҦв1r ,+6;  ((A$(F= <`@) 99B: 3'L:{ES$S:9M4 1o!r5r K @0. =aӢp&Pk<TPs=]+&.2;*B/C3TC7BY3lA͏CGTC; !, (D[E-CE[DECE_($ӱFc#GC1=ؓ1biO4HbH,EbG"@F,$t RSIIIJҪt 4`FCEN7FÒMMAETPNOBHOӭzTsI1t&T52Q=HɔGI71.!5B1 5D TcbJJ'5KV-RVgUk6+(]RXc,WǢV#qRZ;X&uuY+U6S R=4T1@[XQKUUZReSBSnL)ZTMT_+_U^6V `o`5Ibo^U++zag \OS\pUdb+dP[KcaUa1aya_V%%!qgho/)Uh) 5&up6,<נȌphT`(Iɐiɑ&viG{tY$uǂ`'h<}oFh~jA9nu62\Sd$s3Wss>tCt-tI7NuOV7莎bW̏ owp0ѕner#bC %dNfRiQ'x x y^wQ)x)wxzwWfw޾WtW|W|IU WHrzw|||}7w e#x&~kM*~e)Vu08)ju[=%,T6 ;b;A l\pO\xfl 4JKy 1fZbfª@HVXweewskLz8SbiҾ &NŘH5ϸEاb69 h T̶+T VVl­@{V)y,9\*O`x8ŠR#ؔsj%%MҒ~9%!ٖMs$|x C5;تv|9QKaU8ky)vsY7ٜfٔcٝ W)+ƞٛB9׸h'+5W75XxT=.!1QQK Kll˖i imgxnxN._CZzhPo݆[g|.oh wwGqȄ.gSur;::sEW tM7uQuzuNvnꮎ vCLڙ`ϸu!;$s1;4{!qeM:KVSV{ӺN{2e{hAm>۷W 3U#zS۰_[}?) VS3E22oC"/3A1Es12E"3Ӆ\2EB!-S :Rtc `^|.׈:%\|n `{k˺\`X Զɗh 6 Ȇkpqꡈ$!`` 1z:pp^픈^[2-w`Ta ~a:a@ C4a HA@y @ @!vpo E ¿a #=LJqʕ8C3897 7$$77777777777777777777777777777777777777777777777777  }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyzw!1AQaq"2B #3Rbr $4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz@ ?w@ ©o@ G%Myߦ <h€4r_@?/oܗ7PK~(G%Myߦ <h€4r_@?/oܗ7PK~(G%Myߦ <h€4r_@?/oܗ7PK~(G%Myߦ <h€4r_@?/oܗ7PK~(G%Myߦ <h€4r_@?/oܗ7PK~(G%Myߦ <h€4r_@?/oܗ7PK~(G%Myߦ <h€4r_@?/oܗ7PK~(G%Myߦ <h€4r_@?/oܗ7PK~(G%Myߦ <h€4r_@?/oܗ7PK~(G%Myߦ <h€4r_@?/oܗ7PK~(G%Myߦ <h€4r_@?/oܗ7PK~(G%Myߦ <h€4r_@?/oܗ7PK~(G%Myߦ < A@ }m%c!0H?3ݢOʴ=FE}Mzgč@6P le(@6P le(@6P le(@6P le(@6P le(@6P le(@6P le(@6P le(@6P le(@6P le(@6P le(@6P le(@\ 'ԠFZﭿtZ<]+O^fa~<#/Xφ9M&As,-mYfc {)|tvCcu Xf@?G4?5=O|?'M\w@H}ׅTϙ<x')7<<<<aXa4M8@/YIq WlG$phŞ(Ҽ6;h$*\ԎCIce֌}݇8č'g/u~]]]]V4bi|N'ڀ9̈́꺵qZargzW?@TPkej_=t?y^Ǐ|<)9SJ=O O$/\J.-M~Uċ{©ScGE\ԚCAZYmWS 3CA@5g)5㸞ZG_i-߆$E;)%=ɠGW]-)J=hGR^XC'ɕ:=55'K<. y@7:S۫ojrL>ΛXPvG6x&[~wHrRvdܤg Ƞ /'شȜn!>!TvbJ(7箮4/.wp[\iAl&Gǀr$PCc/ \]֭4;;Iy<+7^Ɲ{uqCV0r Oݕ'n8^@4z ?hiLB` qӊ[S ^3Mqel䔅S7*1ހ=6mN'J=\\{LybOR{wxij.u%dk$iztqa>Cq΀9۷Y4.S*GB>%w2|5ԓV7Z\0O(0'bmRaFt,LBt.AےA9=Pfi[[ԵA7Iol {tj 满[h\oZx٢T`Gf?Oqm%~imiwPP@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@(J w@gOFԵ4䰱C,(]rӁ>Fij.*p.UcZj7Z ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (7YN iP@O7$HgϳA<#EfxG|>}(4?Ph?Ƞ@٠"A<#EfxG|>}(4?Ph?Ƞ@٠"A<#EfxG|>}(4?Ph?Ƞ@٠"A<#EfxG|>}(4?Ph?Ƞ@٠"A<#EfxG|>}(4?Ph?Ƞ@٠"A<#EfxG|>}(4?Ph?Ƞ@٠"A<#EfxG|>}(4?Ph?Ƞ@٠"A<#EfxG|>}(4?Ph?Ƞ@٠"A<#EfxG|>}(4?Ph?Ƞ@٠"A<#EfxG|>}(4?Ph?Ƞ@٠"A<#EfxG|>}(4?Ph?Ƞ@٠"A<#EfxG|>}(4?Ph?Ƞ@٠"A<#EfxG|>!3=Bz w@  ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (9z'tOP([69?Ŗzn4{K Q}@^3q/+7vhkutJn,/6䁃5yP@P@P@P@P@P@P@P@P@B1ԍ%Eb^,ҵ?HLM}w2!@x~+P[uq*b^oեM-e;Xt Qg+dk[XhႺ8A(nT?mz@P@P@P@P@P@P@P@P@P@P@P@P@P@'(ZﭿtZ2P- B8crO\(]oGOIm%j&N@B\zCSWUw?&Y3n"E*W4P@P@P@P@P@P@P@P@P Ri/oQ 0ykCJnsW]N.ᄶ ךXvoːs\157+đySMoX,,儶,`^=;ϑ1xW]ž.r<g3n˶6x(ϋ^֣/M{vK9籠 ='ƺܺŚ<lOCT{u#'  c sҀ4]MSt]i_#$l[O>Ӿ$o?n6osP%QZ,D*i.հQ@ :eiAQrqqZ.1ҝ>> 1'I9l][bxq8?1@8qO(~cրunq90㞟Pǭsa=?Zչ'ÎzC sO1=hV3c9z.1QSdGu$_ht]7RY[Hhhd`#XeU81 .GYBȱ7e02\ݞ9]_.,j+54s4Q< %][#!p{shz[|M-ԙ!U|_8‚pEҭ+f3"FW HPoFy~ Es,z|XKyLfUʟ6APbz-A\܉d[͈<]̋2;x'+ ( ( ( ( ?jz:U]L2Fw`$ e$H4-%gG(`)@:>C>W .owgg2뱉S@@}v/<[sBz\"c[$ۥ 1S#$.q([^e5}FɌH$0Km^hZ ]5=$Ǻ7u} *0K+%\6y:vi<`UVT?+rxa@4 ( ( ( ( ( ( ( ( ( ( ( ( ^]B~ w@ "\Mgw|}bNC2UHeK-B i.TY1w>P b NS 7-`=WmH. [qn\mvbR\-Ď… dNbĐ rh q"o)%uuv g $ X. _gow7$k"* :+UCn Ӿ<_gKU"f( BGPpr < m5k:n.LȬ5PU Tn/uaqgRU3;x;呰T*A\-[_]\K Y$eHTtQ CMeZ}NPL2ڣ8cUQ2H iv4fhvRۭAznc`9kHHRbJ(]b@#|jbX澿KfkKxQM:H6X͖-RT_|3mjmk,SBPL~h J"FC*E+!%]Hb2I+f7``*л/Sm5h9J X'`KL}6OR)aqI$or98 3NyBO C.B$#s@m2oQ Hn;dAnנ ( ( ( ( n?jzt:ZL΃rHt` U8 AxfOS7W77eYf2q ԯ=} \Aө^:{dq ԯ=} \Aө^:{dq ԯ=} \Aө^:{dq ԯ=} \Aө^:{dq ԯ=} \Aө^:{dnS70ŕ#,, \Aө^:{dq ԯ=} \Aө^:{dq ԯ=} \Aө^:{dq ԯ=} \Aө^:{dq ԯ=} \Aө^:{dq ԯ=} \Aө^:{dq ԯ=} \Aө^:{dq ԯ=} \Aө^:{dSZżwl$Ƭ€%vbA)02pKuxoo%.5ɭy^-Dr0fE)dcW/ B7vl#t eIt 6lldT3F>a47W7Z[{ʭba@(7'͹J15{ZSJc4(TL2eܠ:ltsO=C$whR)bq |CڼQ 57/1i|[Q ɺ>^<*Ī,|[O_xG&\Y#7KHIO)p ;L7P6sE@,N  b^xZ[8P#yG&TcWprˍ2LJ7۾-U緌#>n: PmJ:}ȷy`ƒ(!f+ \n?wUH=~Q@Mi{ in .\:g`;Z-HXt8乕fY+ 'y -4;OI *+d9'h;]H&-4;{y@$9; zOhs$.`p[!3f-$BIU}I6\Ofr!h w6@9<(C'Y9$&)3Ź$rO4$zV.j..V|dxa@!kh̊ȲX\a@LJu}!eS,K;Du9cg#9@Ciɢ&/m]IVA3q%l= O'ٺ]7c,xݷw@:L#>ͼE.4?&0a9 =1yin]Y&ktTek*P큌 (:VnశrY!PL A R 巖m.I-igIFmqnIIC˩al˲KDp_#^3zPy9jcSEP .^ N30(DiSKYS30A2V.N>hQOa@hk`+ 7UF['ʬ]A\`' JӖ@-F!]21ʀͅ \4HfEdY ʬA``JG zD6g$Ҵ3#6u8X$I t="ymKKiZhRbs:|[G$@ +N[[ axӈWfU(2HVeБx9æKE&3omD%1~U_mm㷷!% qUE:;PiciV%)>Ϋ)QJؑ@/9ꏿPl.q}$q :gG %].(hZ(cBJ&1I t'maa\g"%qZĖv:`pF?)+bE3NҴݭ k(XԶp>n*iV۵ame6+ڀ#mHoټ'0/{xnێ:Zu鼂+dCg.pbXրlm ֆm62/$듚eޕj3Zy&]l$| r=JӖ^;+J)-A$t4\xsC[]Y4_zṟgN@38{1c2zgo=9 fXL3ǧ [F} p1c=3Ϸn3,gqcӐ-e#>_zṟgN@38{1c2zgo=9 fXL3ǧ [F} p1c=3Ϸn3,gqcӐ-e#>_zṟgN@38{1c2zgo=9 fXL3ǧ [F} p1c=3Ϸn3,gqcӐ-e#>_zṟgN@38{1c2zgo=9 fXL3ǧ [F} p1c=3Ϸn3,gqcӐ-e#>_zṟgN@38{1c2zgo=9 fXL3ǧ [F} p1c=3ϷWI0ܻv~g>`-e#>_zṟgN@38{1c2zgo=9 fXL3ǧ [F} p1c=3Ϸn3,gqcӐ-e#>_zṟgN@38{1c2zgo=9 fXL3ǧ [F} p1c=3Ϸn3,gqcӐ-e#>_zṟgN@38{1c2zgo=9 fXL3ǧ [F} p1c=3Ϸn3,gqcӐ-e#>_zṟgN@38{1c2zgo=9 fXL3ǧ [F} p1c=3Ϸn3,gqcӐ-e#>_zṟgN@38{1c2zgo=9 fXL3ǧ [F} p1c=3Ϸn3,gqcӐ-e#>_zṟgN@38{1c2zgo=9 fXL3ǧ [F} p1c=3Ϸn3,gqcӐ-e#>_zṟgN@38{1c2zgo=9 fXL3ǧ [F} p1c=3Ϸn3,gqcӐ-e#>_zṟgN@38{1?B/@OKvάaH @eC<7^ RT YIVwGb  0D*I=;M6ﮡ@8'RK nɠ:6(G[qo*K9#`FAuw ( ( ( ( ( ( ( ( n?9HGx[d FlCSB=hJ(8';yRX%PWR2##I@⾴U+^F6 ;+)',P@P@P@P@P@P@P@P@P@P@P@P@P@'(ZﭿtZ@η^H{kⱻqmmd"2OF;Mjΰk6@;]rN}B"O/`d6@9 hxSo)]Z"=#FIbWkG0%P@P@P@P@P@P@P@P@P@P@P@P@P@'(ZﭿtZ@P@2O$H oA(+p3OI@P@P@P@P@P@P@P@P@UB? P@P@P@P@P@P@P@P@P@P@P@P@P@P@PrO PkejW Gp{}?hi8Y~n4c?_S@EN1F[ '#{{-quhI:4 t\adooa.0q7}Mi8Y~n4c?_S@EN1F[ '#{{-quhI:4 t\adooa.0q7}Mi8Y~n4c?_S@EN1F[ '#{{-quhI:4 t\adooa.0q7}Mi8Y~n4c?_S@EN1F[ '#{{-quhI:4 t\adooa.0q7}Mi8Y~n4c?_S@EN1F[ '#{{-quhI:4 t\adooa8ɖ>c48EN1F[ '#{{-quhI:4 t\adooa.0q7}Mi8Y~n4c?_S@EN1F[ '#{{-quhI:4 t\adooa.0q7}Mi8Y~n4c?_S@EN1F[ '#{{-quhI:4 t\adooa.0q7}Mi8Y~n4c?_S@EN1F[ '#{{-quhI:4 t\adooa.0q7}Mi8Y~n4c?_S@EN1F[ '#{{-quhI:4 t\adooa.0q7}Mi8Y~n4c?_S@EN1F[ '#{{-quhI:4 t\adooa.0q7}Mi8Y~n4c?_S@EN1F[ '#{{-quhI:4 t\adooa.0q7}Mi8Y~n4c?_S@EN1F[ '#{{-quhe?!@ }m& ZŶuά6XzUNi,>u6\\kW2kK?κ/&|yq=nO) YgZ]CsMeS!̪XɕK@Âru)o՟L˹w)hٔHp8m&fcUܴ*\؟3U?/Hד`i_i-XŤiy ̭6[L8 Zd d`YIlőێ]pwux4 syb~VAXҀ: izO42B.lsPUO qs z( ( ( ( ( ( ( ( ( ( ( (#DЅ_+]+PO,qERzq@d~tunq90㞟Pǭsa=?Zչ'ÎzC sO1=hV3c9z.1(qunq90㞟Pǭsa=?Zչ'ÎzC sO1=hV3c9z.1^jy*v+ک#f:H֡47Gks48.tQ@Ѽemͪcb|o/FoVٮK2x ʓ'=@SM^ޱZFx"&H(w?r-=Q}Է{_ֱ<1ڃ'x>_x*Kd[g/z,3@͟&ZG0ʟnb2?݆GZմ-bO_#үZòo2۹I0#c `s M~7%KMJ i.-!Fp+f4/ >mf;-='Z\]B cx&v_:\Z&:jT]c |ǭvn6{>٭766 |#g'x>_x*Kd[g/z,3@͟&ZG0ʟnb2?݆GZ]cO<+v֟Gh @RF&8]{:ntJ]`]knfLNƒ'Z;wHe<1ŧܾ%$mh^סOˢj Mj֮%uoLd]Zo*M"-;Ḭv60r(ѴmC?tKb"N帕g~R(վGuXiIƀ32U~BrgJi㿈7uʹ7Z{y&f_2c$|r=Eynjt/FԿ=Z[w! mEݡ!l);G'9B[HLlRnaDbϚY=h_G ԴQ;[hZu" G$Z};WW/M_h~_.Do4p@PNTo$Eq:g?r蚂j3j(ڵ]w[#nqPx. | {ӭHR#PAA@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@oR4 }mz_*3}nDZצ|0P@P@P@P-i>)ԦTRXO̊s݃'Zo i~Df{ M!,8ր7h ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (3?iP@OS1[u$@q  ׊ado(J~2ouk?/]'k?/@K>k4}ϴk?/@K>k4}ϴk?/@K>k4}ϴk?/@K>k4}ϴk?/@K>k4}ϴk?/@K>k4}ϴk?/@K>k4}ϴk?/@K>k4}ϴk?/@K>k4}ϴk?/@K>k4}ϴk?/@K>k4}ϴk?/@K>k4}ϴk?/@K>k4}ϴk?/@K>k4}ϴk?/@K>k4}ϴk?/@K>k4}ϴk?/@K>k4}ϴk?/@K>k4}ϴk?/@K>k4}ϴk?/@K>k4}ϴk?/@K>k4}ϴk?/@K>k4}ϴk?/@K>k4}ϴk?/@K>k4}ϴk?/@Kv]IX\@4PkejmP@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@?B/@OP@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@G/D @Vo]?V g_J#1MDqӅT+]/WyK6bф ',=iVge,/c}6彶ˏn|?w ρphxmrrF8;˝_LQP2ꓓPd䴓TKHu*A#;WJx1$pJ2H!AJ,u -Rn.ؐ t$uq@h ( ( ( ( ( ( ( (uRw`FY M qI-O9Լz׌t/KrrDA~O*1a5U]{˶ïnuց5Ke3)b8@~^=ƚnǩZ2ChgQ窹Ua}g?S@Ű[OEou7yUQ&#c(b WNY\s+3Nʓ](l; HJl/.cȕ_cpx>j ( ( ( ( ( ( ( ( ( ( ( ( (#DЅ_+]+P[ ; yi/E0~u2e+RV)8;~DVz>Jiֶ0ZU i:XEuVmg O'Zyzղym#FpNp2Q[9߈~Vm+K_>-Z`!IcrK Fzpﰟ61[|Χ;=@o뚕K{p--xńbsxq)|w=ɠw%P.Dl@mP@P@P@P@P@P@P@P@Qhb.460?3I29B\vdqx{Ed-9Q+S:*TӺcsɧә|F|C75_ [y)5Pr(k їBҠF J"tGdbFSq9Nſx(iLl' uހ?Yi퍌I>%F)pt8NP z-s1FiX4ܡ(;FNwAh ( ( ( ( ( ( ( ( ( ( ( ( (9z'tOP([D@FR;屎G@1F:goo=x\q38Qć^f(LCk3cq!C׀518{}!H} qbt$>_z1F:goo=x\q38Qć^f(LCk3cq!C׀518{}!H} qbt$>_z1F:goo=x\q38Qć^f(LCk3cq!C׀518{}!H} qbt$>_z1F:goo=x\q38Qć^f(LCk3cq!C׀518{}!H} qbt$>_z1F:goo=x\q38Qć^f(LCk3cq!C׀518{}!H}fO)ő>y 8Qć^f(LCk3cq!C׀518{}!H} qbt$>_z1F:goo=x\q38Qć^f(LCk3cq!C׀518{}!H} qbt$>_z1F:goo=x\q38Qć^f(LCk3cq!C׀518{}!H} qbt$>_z1F:goo=x\q38Qć^f(LCk3cq!C׀518{}!H} qbt$>_z1F:goo=x\q38Qć^f(LCk3cq!C׀518{}!H} qbt$>_z1F:goo=x\q38Qć^f(LCk3cq!C׀518{}!H} qbt$>_z1F:goo=x\q38Qć^f(LCk3cq!C׀518{}!H} qbt$>_z1F:goo=x\q38Qć^f(LCk3cq!C׀DЅ_+]+Ph ( ( ( ( ( ( ( ( ( ?( ( ( ( ( ( ( ( ( ( ( ( ( ( (?!@ }m|yiڎfOfBU^p28 8#@jUKtk kH-"F021~_c TƱ v],kPZjwjD6"3^=ϓ I__ψ/5bxc ; v@\ bEq:b9 d][A᛭r}MҙlvkLy7TS QʐK`@xWQ}ktu;dG鄗8.+,1`9%04G0&o6h~_[cݍb^cV> JP-Fx<Ӥ$[NױR0p*‘xh ( ( ( ( ( ( ( ( ( ( ( (?!@ }m( ( ( ( ( ( ( ( ( (*![j ( ( ( ( ( ( ( ( ( ( ( ( ( ( (9z'tOP([DA2cZ;*#?22Rz4M*Rb恐cȞ9P9rR2cM-_7^'i9O1WwN(P@P@P@P@P@P@P@P@cqBzu 5̞\m,p~wp8f P>m^]*;Ż|{cj1.p~+^@\8'wV`?MBk70ē:`X)NLo}(WfˍpO~4b 4'BzpdOe[BWr?0''t8 iސ-M& ' F@&-@m7Ii(a6Ep9=hPvS:v7AQ&!UͤN2OPR2n+^}ܞ]M4vv P@P@P@P@P@P@P@P@P@?B/@OK+.m"YF@%nER |GMZ7:|)ۦ;tyKg L)#VI 4]Vt5{ӷbheao1c"#| >״;/ Y%vfuF[d9>bCs^;6:>Ŷ&!,+>l6Qz ]b B{"荙owE8F jWK5~ێ3o@P@P@P@P@P@P@P@V? ' ^$=-d "\yU'* eQg h|CfA4,߼ܑιi>~>'|/6Ak῱X d)b!G "BZ/"^qZM?1 f*)Ow<2쌠nMIxsZQF$ZB'o3,c[̀ w [k3۳p V `Ky^2kY\;韹km(fČ~Kwlrp~c@5 O;lOdN1ʩn1*y̅(gW"Ԛ@{kk5/XPcmp>63`=co{,Q6 ̆-Fm1*K 3.|']Kuk-n2~8.@-J̓q}gu%QΊ$m!y>ÓCia }M_-?.c q0 >[uUTCҒ[^[TAl*#23yjpHA@^+hL #toʎ0d"k$c’8$qX ( ( ( ( ( ( ( (#DЅ_+]+Ph ( ( ( ( ( ( ( ( ( n?( ( ( ( ( ( ( ( ( ( ( ( ( ( (?!@ }mX4Zۮ1cq# [u c1$~CҀkncA1ďzP-m1c8?JF1a?!@\b1 G=(A1cHq#0cZۮ1cq# [u c1$~CҀkncA1ďzP-m1c8?JF1a?!@\b1 G=(A1cHq#0cZۮ1cq# [u c1$~CҀkncA1ďzP-m1c8?JF1a?!@\b1 G=(A1cHq#0cZۮ1cq# [u c1$~CҀkncA1ďzP-m1c8?JF1a?!@\b1 G=(A1cHq#0cZۮ1cq# [u c1$~CҀkncA1ďzP-m1c8?JF1a?!@\b1 G=(A1cHAQhذŅ ŭF1a?!@\b1 G=(A1cHq#0cZۮ1cq# [u c1$~CҀkncA1ďzP-m1c8?JF1a?!@\b1 G=(A1cHq#0cZۮ1cq# [u c1$~CҀkncA1ďzP-m1c8?JF1a?!@\b1 G=(A1cHq#0cZۮ1cq# [u c1$~CҀkncA1ďzP-m1c8?JF1a?!@\b1 G=(A1cHq#0cZۮ1cq# [u c1$~CҀkncA1ďzP-m1c8?JF1a?!@\b1 G=(A1cHq#0cZۮ1cq# [u c1$~CҀkncA1ďzP-m1c8?JF1a?!@\b1 G=(A1cHq#0cZۮ1cq# [u c1$~CҀkncA1ďzP-m1c8?JF1a?!@\b1 G=(A1cHq#0cZۮ1cq# [u c1$~CҀkncA1ďzP-m1c8?JF1a?!@\b1 G=(A1cH,'(ZﭿtZ@$OI']4%ZI4#F_KZS\CisA"I1;D7a[>,J$wfd:YL TwBP!P0;]o4Q QLV`ˀXp>eePMgNqkq-ܳJcIBb69'4mg$ci1H.e` ݍ`ޥ=[N^n*M+gՅf'ոKE ʑגBTH_L.;gXm䑼X4j T ~R (K'""WU)ݸy/a*zJnf9L춓 2V Ѹ; o@P@P@P@P@P@P@V? '^}MpˀB؜;HR@ ?<0F2mĒ3vyB ooݑ8eCkW>Riz|7R6K5ϓ2رn0H 5= sDUv]b8 ƱxeX%fdYrH@|NxJv3[Gg-yH|'=hƕzvg QE3~bwf'یcP@P@P@P@P@P@P@P@P@P@P@P@P@?B/@OCXl󼭗6ϕ2Igs`j^н|Kk}N|:x3coCj=;HjV޿6mԆf=h~V8" Eǔ$M"=J J!6Gx.T<[Jj wvxC uk`3W\r~H^;a]GL X*)ng8^^Y&77[Hf%;^Fݵ[ s:խX!%ݴQF[o~FÜ# 0Iy5-ݘ<2FB!ʐ ciwo&QI2& K vܰmjg9ۦ붧Q̚H丑 wu (Z ( ( ( ( ( ( n?4 Yϛǝ韗k>D-2 Q4{@Wvq F7oVӵ3ŵ%[G$>fJ @ܣv$?MދmjMl QIj#Dc!18k|3{-i-Ѹy˛ʌvܿ1$1#,M_Ҵ]BQo!8 0Ʊ].ve|8$k@P@P@P@P@P@P@P@P@P@P@P@P@'(ZﭿtZ"y7>Op;}(0s} 0s} 0s} 0s} 0s} 0s} 0s} 0s} 0s} 0s} 0s} 0s} 0s} 0s} 0s} 0s} 0s} 0s} 0s} 0s} 0s} 0s} 0s} 0s} 0s} 0s} 0s} 0s} 0s} 0s} 0s} 0s} 0s} 0s} 0s} 0s} 0s} 0s} 0s} A3ai,\!Nq6\!Nq6\!Nq6\!Nq6\!Nq6\!Nq6\!Nq6\!Nq6\!Nq6\!Nq6\!Nq6\!Nq6\!Nq6\!Nq6\!Nq6\!Nq6\!Nq6\!Nq6\!Nq6\!Nq6\!Nq6\!Nq6\!Nq6\!Nq6\!Nq6\!Nq6\!Nq6\!Nq6\!Nq6\!Nq6\!Nq6\!Nq6\!Nq6\!Nq6\!Nq6\!Nq6\!Nq6\!Nq6\!Nq6\!Nq6\!Nq6\!Nq6\!Nq6\!Nq6\!Nq6\!Nq6\!Nq6\!Nq6\!Nq6\!Nq6\!Nq6\!Nq6\!Nq6\!Nq6\!Nq6\!Nq6\!Nq6\!Nq6\!Nq6DЅ_+]+Ph ( ( ( ( ( ( ( ( ( .?( ( ( ( ( ( ( ( ( ( ( ( ( ( (?!@ }m|`oӭn,5ke !H:ID%'%A-αZd0\ܴqoC/<0cŒeH--su}2[W5 ;Y"i& !GiޯmM3\iDvcLf>[O(޻f;HRNj7Sk:-&{ZEX5ڡPIrAHHe<[s$H.`}P[@n.8-4pj1#v75jkڍEkkAv' *KK4LvbrP m5\n֗:+H Yw0d"oA%@4u=[_m0ʛ$P C̊&YK۹LFQ;icvHѩwmxRDaj-efI U1:IS\1]Em" l泑dde*IӌUI@~ ( ( ( ( (ހ{8EC6v.O,@d1@;}xD d\+ \pOa€(\j~%#Z.Zk#ӕ\ NN@$ֵQ7c,^lg<샸 tϸ$z`x4]L3a)}z֩/U'0_aۻ3q۠ ( ( ( ( ( ( ( ( ( ( ( ( (?!@ }myeosX$aáє€(\cGi}1#G286Εy<ӼSEq4kos,2؈F`B<8%##4 hw v~Wl1H(F1B RFW\M>dq8y"Hcܮ2## 9|1娳.ɖ<99beXI eyFfY"m$E]ӀH PqG ;j]IVy]Ȳr W-|1Yn#!DIEf !A;'lҬti.!I.e@IPI' d#KEBmx$"# )GH8Aks1:y<$Ɇf`͒@k۬7H#oGVHe]e8$dHH ~ZNs9I'2ax3db$n駴wK^# %a`? J+%"!YyO} ]\gPPK|I z؉(tI?CJHzBʇP@!4vr bH'0 gnLNJxq9`AHR(J⥲dLm8] ]H@q~btOP2 ]HɌiOٖP|ُ)|) G&,P ,Z'm*Q-&g,ꔮDaBKyt2*oʒC&Hj'( AIarJ BBb2<\pHHO}yLnD,Py ,8e3]b/W4pi#ʠ]Xr84sy\`=#}J1DkA% [snOs,pǙH9(/vKKRnKk"B0 uepeT,+MdiΙiOLPLGc<-BZ Vnp$(w1gaEH[hX (0S0RJk,[IN<, [ZK%u6^kBZA0X#ZE! NTiť5>Rkq[bL)9(Baj"o_K^F,az㛧fOu+RK D aF z["_}9V(p 7"(!m1#w?C0b^!@1Š_'qdt㌼mZQJf-\&)t+G%6^kƖؠy3?10#R^NE*+O4q ݖ^ؙx ȥv^?_Tپ@@5D] f԰t QOCʳM68!JIчp, "0І#^HZ@O-6FPiͽ@<DІ5| ('y !Y;/#M~Es6 4Ap3} 5~o / @ HϗxA/Sz \  g; lhw7>:=/^ y rT~_@|~|iw0k}2W|&y7~077yl}l@-i-p|Rׂ~jq,"q&~ 1yBXj{E8W{yLT1s<TH}XՆy-Pmfi{)wQ#pr^tfymd@mdy=4{IWs۷{#_ vy)- fxmyY*ihy|ٓ 9!uHml@rGrpx(ɛiziZtw9x)J ʛw{ 3"0OJ:fّ-@ aȢk,{璅xjmd{W N'MJ#xIsjmʤ}F@h'fdg9?6Qi|wԙOsNH i^:{8lp|huxwhmJv%({j%:I[8I(AZqJʮC(Jah !G,jɰl)ACw*,۱C"$kzӗ|a,v.0-7kQ( ٳ>@B;D[?{aٴNbR;T[V(^`b;d[f{hjbJ Xt[v{xw H~;۸;[{qs]+e[ Kt{ ѹۻKaś뻻[[ Ƽ֋{P нʋaٺ[ KËk [ p: c  ԋ ˿! , 훹 Ž 0+|滠/ 07l9[=|Ă G-ı 8+ #,SI<< ÒpgƤ;Ve P(,b\ŅxǖÄű;F eLj̹Ȕܸ4ɜT W\Pʦ|ʨʪʬʮʨ,{E9ɒ \Ƭ˺ , @, l̺ʙK˞;ʤ[<Ώ LΏp pl0zȶn< Mn n`y,nϐ"=|0&}`p%,``Ҋ(-=.[ĥB=}|̵QpR R]V7@W\ӰUpYb|Ӽ˽|̿.=>C~ύ-#2 *,~R2N>:N?.AnNf ^"N$n=S}ߝVT峻~޽e~,Gm#A-A'|U/N~Ѐ~˒lݸc.m>߈-k.܍>& k\9bLԾ8ºەꌋKR N؞.@ n>;. C,  pa~pq Q ?_O!>H>2 Ō[PKj+p wlL+$o*X %1_3_@쐻cP ?>_;L8*_PKNL:߸|[\|Wo U_]_D@H•ktl ^|=Ť=oMCO8  I_/`\/;0/߸bOLI[+!O@oO 0P #ph_yo? bPׯv"?POo :ycxcb_u t3Y/{G }G.tcu@ *4KB<& <pD D<{vq%^} i$i/ t D"4I% 7R"aF4-B{0> >T3LE\3Ee2)$tPc at9tQAet+˜E }tPa"S">/RB/TL5Ѵ6s9լT<7OV\ 1@W`vXbXd5@-5ʙ+8gգ!Q$LSOeM5WuHN:#֨iyzU D: ~2ʦ:텧>C]sk1:7SƺU3_m%f{rnh .Rᆘi*|N)UQS[vlG/r-sNsI\ogӯ}pYu3Ůq1UWȏ}m݇i̓t၄;#C]n]~1_l{h-|JV0k>ռoL3W?}za6oGbK5JQ? %(A 1T[daC$"3xD"Cfqx QbCXъX_*K$‰.D"CH#2F8^h]t42P}$F PxlAuJߨ'bRO܋+/ ]FP1D0K3b@ODp! 9z%K10p" Vn: (+'DZ 9".$ I% sB4g1P~%6mφ(S! G,@ȅf1|E{D`t ֤ FN,DcA2p\ * f8+;K" ,d՜ QȤ٧k"!J)LfWEpA*E쁝rIS+MSial{@?R ׀ ΂o _ɨm0hKU(&DO eVgQ ,­=k%Pa@Ep=4=L Ӛ=gNS I?AtVex g)YD50ݟ$*]ۉ]%eH$"!!g.{âo\^F0)#׸exHjRMgVE,=zGSY/dcHnz}nW kof C;W?5+bQZr*NARSXGŠnvR5<MŻ湐*D6KxFvO F+NʔLgLJ'I5K]~c gVH`-ƌh6ZHCpdi5w\VC$3ah?2NS=̳̔ 'QP&$ds8 e׸kO0V7` = YUWbU#tŭ|ZJA,&@ s8Ldy8C5 Q_t S Cz.*t,6˼`Զ6^}w1JU0\_?%[i:;6_́qqaA Sww#3qr{Lw&9eݾDnI'5N}w.[ =Ʊ 7E=ELqtj<okt؝t7Gh?Q'ǷKUp1 +8'M|)Uf;c/sy2ƒۂu۾#>*q=e/Ap- =// &;;bꉿ P@s ?{>W):t*\>AR?@(ט;>!B">!>@""ܔEe6/"Hv8 )DJ@3NPF 5+*C4UO8EZE[E\E]B _E` FaFb,Fc/|/`IȌɍ`ʖ%3 [4[/ }LJ@Е06`P虬LI $&L  \JJbK6@`/x K$TL4@ }D M]YPlXLȾ! /h\͵d}IK<L Ό@`}H}!N6H/H LM\ 6PΙ6`ǿ8@¼ε4 HJl0JdJCK?[|Q uX/ PUo\ ň43܈H ň ۴uώO.0d'}A'e8 ʸ,022xO ~KKP˳L$`Ĉ<ӊyR(ňK$3KD*M<]J&'(P3ԿKDL\K3MԸўIUW}ϒ'STS'UՌ`#I2 Dň`R 58Mf$\͈f-TTO 5}Rp.-L5 MI@\PWMl|xuLVMUMQ5P6 2P6'MX/X5L26eUF=O ֍P/\QVILIHI/K3ӜY5ИMOƬFK˘͊RW5`XZ5eI ]UQl،ؼ˗UUKZHiX/ڎ}ٹUۧU[E=[ ܼ%X-\í=\]\$\}\Mȝ\ݞĭ\s\\݌ ]E]Ӎ=]U]] }]؝]eڽ]u]E]^=^]^e}^]^9ν^ ^ pW__^U~^Kjm_ @_]%Wh _ -___f'M݀-_ e^W a. HW U&6aamWp v^ea".bր5S_^WH6b)b->!_*b/ Pa,؊rb(b4b %>] dHc9ci8}aPg9c*Ngh}8dDNdPc?NdI6mC_OTR(V\v'bb/L(RdSN \.&OƄR_OS`dqĠ(_U^a.afxfւd %.enbv`con<%i Ѐ-&efpyg-@eå TR`f_聶_FmV`Qkn_nO($@i-h_V-8pi-&hŅi5UdEh-&kւ @jLiL@h?wւNf-`e_ƅ`h hW6@kMV)M ~eH$ k-f&f_$_\@kjWV˖j-X.hi-UhdO@k h\-処liOM.Ux`.9(r~ffe xR~mpe&(zfee[glgTVln_$Pn.Fk OHN 6b R8>W>uieG_R^lp gf7kFhW Xp/oYmgnf$WFj- oWx~h3Rh?p֖(\ xxlG$H`f^N X.qL%G^t-&qŞ`Tp.Cȝ}.bGk.tjQmƅXNf-qff:F6tFak&hU`q)V(\4p>`BY߮Udpvm?YkHgwwnOwTd?E~s#HuF ZnO߯n1HQ6%k.QxiOv)v mGn"vp.0'_uh4pnya\4xz;sHz`8Wu!z47{UUܧG;:8Ox@zOmz{hܵo{:2|Iv灻(W|Ɨ|@|gg{90p8bOoܮo׏4}_}'~'b8 W W~w}{~9(~ xmf'?t|;tꐑ3 Ŏap™`i|ʰ-_uZ6r#Ȑ"EӦ U5jpi%LѬi&Μ:w҅'РB5BƎ@ ES!` i`1ȬZn:1$4,ڴjײih҂.l0b^\A/mub=: .'= E*?x$̶km(܁r:5޾>dxK7 wBE5Jy3ϟ͚nڷHU/D|nB,/ol FI ba S̃k h Đ%p X2 ]vgb)7VhХUi6R5UTxi'[w ˔7/ml`UA 9`dl iCr\QJtqUZ`ߡHyep6,n$A".j( " )YgNT@aX(PZ!_](aG&.šm3;Xs`G6'M :+OUR7G" 0)Z0G{4l([8l&8qTP1# +VkrK@>arzӡޤ& ݷcC pEJ.!!k kl>-/Ͳ!3=3@;$}4IOOp!Yk5]{$x=6e @I7=7u}c]}wc홾54r%" K>܂6йmܔ{7$|{>zU8͇לA>9Njg~h.zN8:w˓>Yݿc?:Ȼ͓/yeQ>Z}ڿ{ȞLc.m|g'Aq_!??/* JBx (BCo{ 8:I[D>x`1H9KB8B"0*\,PInˆau8$";"*!9I ѱeA=~#>aZ Q#$c &;qc&3Mr$(C|a%\Ica#ISz *!Hxp(ㆿrJ!JyRy;HZ$@Ϥ4EsKf6pN-t8ns:9w 4'Ou~-|?JgF5#tByRuGOQMp ș4~M4W9kjbx@g4B'NũQD<l3IH~A%n+\*׹eu]%W|5mgJ\o`[ =,b+,V},d˄R]A@ml@j[*+ʵ`׻%/hj$:1HBn)i 9Dƫ_0ʖi1mio.x+7FD ȫ^= ^ILc/~{IaL/;_]wϠ3fλSxpo_ yC 78ó:[Bi!mM̓ /K,B~D{b;RSiHHLã&|"{GnN 81R8~l,?o72f8x=zGA9sRmy}%GcDK8pӞ4;MZ Ԧ-D{=5A=jK:ֲܻ2R jͱ:*~l ҹei^ȩnZ=7֖u=;^^.Ec=d):IQ3rqFw٢;Y">v' H8Pq9AYҊ, Ą[ g6Kt>9;0ȼD̋nzyԣu'V:q 6@h|*\݉0t @;NXlq`<Ordv3xo76%'s~:l/ڻmW57Ϯ;B%aW~|y`_@^-x=w&`Cu2xG;^٩7DA a,yҽO;V6˿|_':_Ls ވї%N,_ u%]YEN [ EA6 M1i i ^!٠UP J ʛ X` `N`^*_!M(!Pl M D2>Bdu_dMW]$F:dM$:XDf;ddBdGGZ *=N$CVd NH]Q]aWnu<@l%Y廴@R*NY%\e ]%^]TU6Ǩ,\8@8qe|e!kxǤHyǥIpe dK e9f_ߺn&obM,\e? B'r&r.'s6s>s"ԦA%Fj[MMC HnߘegOIKK`Lvv"Nv"3bxt'Lbgߴ'u#||lgEur~ #x}pRx$gw'~zU$UHhRw-D6BӇhaPmRV譴h8Bo )*cc:ώꨂ i(*h(%!'2 Q6DaF((iHBWhr'zg?雂$zi4i8Ne))zu"*C)xnjRƩꂊx6_>*[FލݦhM'fN*Tz*jkF襵eׯ򧁦zW{-)B.Ubh%WvW@׵k`Vbūb1c@Tuf&qB,tnlmY]d&YJKK4L$Y[[1lfkv!̉a:0L%&HLcZk@ddlVflʔVVe錾]-fTjTo؎m2kv.O-nNV)-ʩZizjĦBm.i(̺mʭ)UC54P&!V.⢮?HSz*RmmK/*(q*Z:PP6j*m!:?m/4Y/hP ܈zިo,z2 <**ML/=eXL@M rA<pM('$yF< Cyނ0Ƅ*Pw/ Yp ǰݒ M pE>)A 1%04.LX3PnU D?qNp-1omK!q*iqrK8C=12( a2Lbb:fm$-T&ӆBKXcTpܮx KEƖ%+}Xq jʮ$,VKEˁghFwxi jIp III=LHL@HĄd*4 0o0T1cJjnJ83Jc0 ɃD2Zq4dɣHx2I3G443J=s94jjJ{B  < D53L\>2HGCJ1 B{338t@5ʒt%3d4 4@f9if tBJkKK L+q%L7s(A#́3t@V#O/3J55Rh6uM C#ȁ du:{PJ3YY 6 6b u1ߵA53WB5`5d Ah `@4dsIwuk}3hC P9g؞9yM DvA AMAv'9[? ;:'S:'zO#!Mp??zx[:oyNh8;@{Nzh#;M<ڢC  xAxA |A;߻:?{:MA?d{MЀ{:{zK|gDN'9#@h9_9g?˫A; L9}A|)yAX{)7kCD{|;Mcc/=ۻ9=:As;}}_{}_o9A3«}@_y??̽9}۷=o; ~}w:~҇$:9=A~)$~O|w_~髁;{ AXoܫhGϽĚ5^!A/_FB G/ aCbBi}iaF AK>^z&)"4fhly-)nI';lnJ.¾/m|jIZ7z&dr梠md.Ui>ߖ(/&NH/]k-,L+esބpѶl/oيh+Sc߳88DWKg2j*ԛ-[#ޚT[-mu&]c,yVk+F5h`czK 9"JHf}~4pJ{,")X-z"5_LPX!,d !AaV+\:UŜ~ #G}*[wJ2N;VR&?'Fh Ӑn"1=Yb+椋[XF3i|lb4|'psBGytR,s%)YNbď7IGG>rA$OR/na\t=$XOoMO·X$ZBR &75ZOѮ’JzNN*jogHf$C`.P V9d0dȐb U̱g#A@ӆ5LQ9-d@ :Hb`1RZ(k2[Kf{3.EdVnJ!C'2.'RvCPB2|iCʉlNY"`7*45.!ʌeVÝv61̴eeR* V zS:MKC"5 AJyGQT_\TJ,67K$V \ Q䢯+y4ӋF<1bYjfZӞG;P>Z׾li[[V'CZ&yspq[='Sc,Mm.vFk\hh|$=}jW':k aџxQ@} !gAtLj@z~F^=kī4-@Ӧt*%ftYɅX*/[ k8!9ۙ20}Fs7, +9CKFWL)`fW Ү.d#OϚNկ3ڎjbbɱפKL{.*orǵ1ohkn*i]#0J[ԥ֔m`Jǭ1FI+@5»k7ф2zjft\5s樨rN'CYra>j%FkCGJAF6zrQ?##J7.JvTeP ڄbdwt<PK('N:~CA%K伴+VEJ\…EV2W/:(Q`b=e$˼&(lDPO0_Jb!$ (9xp0"%7C#XCpNb,zGh`h@GEh0NJ)VH"G/F#f.h>'we0 B%gff :O01to֢(fmϫF@-m(Di2CunDɰ $7)&@'^$R""8,8:-\O1īR`v67;3jp619h0@AoZ&b(pGHTHUĎH.⎔Iwb!J`.#s%I. MTLu"Kl&FjmZjrL&ʦ%M&$G삱6±V#TPP P4 ;PKk3SOOPKAA!OEBPS/img/asyncwritethroughcg.gifn'GIF89a ]]]+++YYYlll\]9ҲfffIIIEFE`aT|||tzh@@@www&&&PPP:::yyyxy[ppp777jjj BBBxxx>>>II@---WWWutthhh000dddbbbYYMTTTRRRLLLrrsNNN~<<<332444hrir=>&{|LͿhԈhhXxy╧Р````e`ŭ|llBمxNMMi..~sMM//28浵ٚ__eqV~}}ř혘a``ڢCCC۬ƫ~~~w~ѝ;ܬGLTW_Xkr;?F曤aaa#&*686RVRSXbmwiY_VGKG|kvlPPE݌jo`ӚTWPЅt Ѕ_`Jdk_lmUbŰnuuu!, H*\ȰÇ#JHŋ)"uG Iɒ!!M0cʜ93#a.ɳO ;DJQ&H*аY?JC^.u(ErRK,IcCu]v(hȠK,d횋Ⱥ}Ds!3&c #P)3k9+Vʠfi@XӰcTZoas]!e_"[i&~8\:K7})s?Ti=F2H+B,;6uw~lLwiuz=֌04Rxe9R~&=_DєIx?z?WɆ\،??071cÂT246WZ:c¼7/#a/4B#.X"?4 ?n2`5ɂ g0A:dZ3&x3&x'$ш?[xލY%?h%PtfP. #*%#t#(BJRjnFK3$dzVgI󩘬רx)zli.c;U2$iK娉6c6K˕ h#7ꩦn6K ٠&xd .`4xg3fN!&nZ*]\[dY^$'d/lʏ!B/ӬYo;MU4>7cB',ݐ(@+%; hR V;u ^]Kd`eS(Ӧ146RЀ܂m[d]2d0qnZ8h@VR!А=u_qȐ uHK[Xy`AYՑF~!TR 9wTT@nETH/?7/LG?Uiy O~OkPAwŦB b(V 0a"F&nЃ@ ,ʐ4!= @^PbPqHb <1[FV1HbC: )>R/@HI-dN B.x,WGad! IOQ#%myKz`.Ig dz!iHi0'Or${v~ @JЂL]І:D'JъZhB?Ќz H+Q|c(MJWВ&LgJӚ8ͩNwzm|I1ZU<0Rԥ.UEpjQ:դ>5K-6ZT1.L-ZVLSVm5zַuqk[`N ^iX6֊ gH:ֱ}c &6md+lòW۶RTR0j gm-la{ `Vŭkik[hTeu+^U~ks ݽe)ifډ&ҍsWJ7g.[t]D{W֗my; vKլ~V&y+^j(}k_F%Ka5pE70[h_/g_(D0/XBBv;$ aV(,QC[9.Z#Z+8$ MIWҨh}iVHEMjS֫YBLuA>LBַ3 _Jmz>h#H6aH# c u-00xTe=떍U m+::෼h7ւUhml0Ni4 8 };TG~G\ֱ=04a<=|>_щg1WCܡzuSϺu zيvG n#mW{ݹ>t=v<}x;;~p/kOxe;c׺C/m|koDyC69>8qԫ9̎w>}ל|?qڴO}B?H?ue6gs66?şǿD{G\P7wgy8kfXeY.Q'Rk׀m[U[UQ`R|w^cP }&kP{iwpjwj=VVvVFRHq7x0gWU` 5 VV iyFhb&i|@P&kiwHyV|TX u XQ`h@h|h`r~X^rh)X_8zz2ȅ i6(k8C+Ph`P'esǵiVVO7Z_wWze`P_|RmHhHK̸،_Qvظڈz8PVk8 w(hx ŊxH~XwkP' 3PDxEX~H,iAxPx695p=yI@uw~J~RPwgg~WRT|V燈iQèRQ-rwЏ1it[}]jpPuYpeiu@|i~8 f cIȗyV` i0׉@慞V+`Y6X{ُ_ٙvhl|0i9nxRYɘO(ho}ُO8TxHsשmy h O)6T؟ ivYpٓX*ٗ6=Рw ʗű^QR$&z%֔I0-Z/vp)9;uyy?AURQvR@)ECx=9Jmowh_z P)*jf yViƝil:w}CjP }P6H %`*Ph؉קPr:xgpZ)Cuhvj~yH&ʟv`H95QziYO y` (= g)tʪchWV~P:wj-Ix0Ci[ڭ]z%hQ*JgQXʢZʯVq{iK ְNT{4ב? ";$$*,۲.LN)N35k]ݤ\I@ I4 Ek9ᴴm!K$tKXTr@\4fh;c@e۶I1NlK1a04|+~kjN{;Q1$k;pOK+3 OA}2$G+ x;OTaF;k@Ar`D ]02D`=$F Kk`CCrAͻrDpAF, ˽;{\{=kM; ]D<,[D1<J[,y *ܾ4a?H?p@@'L`3 DKTM)`($)T ED,!+"l<rpABģ$DEF<`JTDkk D]zK$(hdi<ś4 ,$QA)`DjL]AI[C3EyF~LJǁB4`A<) Gpp#tx+ɼƱLST Gy@qFqåG*\Mt¥(: z @A(RDiApA() T0YPNQ 3KLhDABD;l=15QKS]S$`a<Lx3Hy6]>ā`L+ `1|;+`,r G|,W-4O+D5a),פ*L@@=FzpAlkdrz>C`TC M@m(5tB3<`,`E{<\zqD=oMDK/K4 I$}B<td=L(M<A!6[ JԕKp$cL[^:kmRdDaK\Mkң-Eiw1{DAlA@TMN۔l&T>+  L!/~Ъ|*F,/#N-r9 +K 1P>NOC0r,P.YQNXSAW9zFi@UiծUҳ] u[fHRb_R)i)]=cjPՅnb?kgЂ _<RΡU])izmܠÍ-$ Ms'ҩþ? ٓA3" Z6tA0yxQk\^=6؎݋CI|Q{ۧثNB0?o?(I,T DfAO缨 ioV\@Pl'@H}|X>*{' J, 1<ȍl0g qN |zlϐ aA*3Y"#ĤT(}G)q9a/-& sHaK:AB-5*;= tlQ:6HX2*LM%Կ4 qB+s s@r\AZ~KkA:Al S>] w\ ]!ӯ5hSze=@A$X-k}ු Np\ZNpGW~ Z'ނ MZ@ԆRz6AIvF}_i@e6pYZ՟w =4衫sTڐ bQ~APaӘT&3IQTxaderp` KAUcbu3!ɐ pֳ"@A[V Rd`U{k_!VBa {X&Velc U')dfVlg=& %miM{V!pljYVlm{[ΪVʛxYwnqc[NuqK\F׳bkKZJ׶nwA|*׷ ̮wO]Fqɛ^Ԣ]״/n V, ,;k`6[pbaBäpLyKYtW[ę%7a~xuq?Z\c)ocuE]ks<~[[sqb$XF̅KoFvh\Z1WٽdƲPp8yr |g$#HQlp6#]gƻGFCȫn諆6~v]k?  =zneXY{w w0;: C> py_f{y>P8wo)n]W*ֱfEkZ ֵ :/s. # ;+:@K>+{AA(X7Aӹ $$4ܧ4? @ C7k$|@"\AS> %&'̷(-{+C3$`3\Cy6o[Cq3"#,8zKvzkCz{CתCT#A BB"DF@G@H/I4D:DA,Aˢ?Q\T?SB:@Y?E#T0@[ĂtE E$ %<+LO\DMBN,FOFiFjFkFlԁ `7 yJN OO!FXOxxO:v x)***((Jo´ڴ4 'b{:5J"OPPͫBOьIҤ UNeN0UAd͸ĻQDQ=RUkL#/$Q &mzR٤R̔R-..c SS#S4.5EN3}SS܉ь;SS}>5(R@}y؁B5T.DEEpG5,TRӑԄ@TPQ]#IXUYUZUNpUuV*ګL+HXd[]۵쀓TT@OdOOrm҇\ՈU##%z P24K)M4P~t)! >UW.X[)x%(yj(4X괒xR)z* 5N :e،0tPw؁)yG~UЏʴ=Y 'SӞNUّ0,IxכyGG|%H(א%Z%YQKY PZHf` XOYٯEЏWX5YQC P 4[05xXXڝW|ן١mP-قM[U>eܺZ5 ܌\W ZeЀ}PE[*0K@p\W(Zܿ[]]?Ђ5^uf`.`VAͽ <#@^};PK\s'n'PKAA OEBPS/rac.htmE Using Oracle In-Memory Database Cache in an Oracle RAC Environment

10 Using Oracle In-Memory Database Cache in an Oracle RAC Environment

This chapter describes how to use Oracle In-Memory Database Cache (IMDB Cache) in an Oracle Real Application Clusters (Oracle RAC) environment. It includes the following topics:

How IMDB Cache works in an Oracle RAC environment

Oracle RAC enables multiple Oracle instances to access one Oracle database with shared resources, including all data files, control files, PFILEs and redo log files that reside on cluster-aware shared disks. Oracle RAC handles read/write consistency and load balancing while providing high availability.

Fast Application Notification (FAN) is an Oracle RAC feature that was integrated with Oracle Call Interface (OCI) in Oracle Database 10g Release 2. FAN publishes information about changes in the cluster to applications that subscribe to FAN events. FAN prevents unnecessary operations such as the following:

  • Attempts to connect when services are down

  • Attempts to finish processing a transaction when the server is down

  • Waiting for TCP/IP timeouts

See Oracle Real Application Clusters Administration and Deployment Guide for more information about Oracle RAC and FAN.

IMDB Cache uses OCI integrated with FAN to receive notification of Oracle events. With FAN, IMDB Cache detects connection failures within a minute. Without FAN, it can take several minutes for IMDB Cache to receive notification of an Oracle failure. Without FAN, IMDB Cache detects a connection failure the next time the connection is used or when a TCP/IP timeout occurs. IMDB Cache can recover quickly from Oracle failures without user intervention.

IMDB Cache also uses Transparent Application Failover (TAF), which is a feature of Oracle Net Services that enables you to specify how you want applications to reconnect after a failure. See Oracle Database Net Services Administrator's Guide for more information about TAF. TAF attempts to reconnect to the Oracle database for four minutes. If this is not successful, the cache agent restarts and attempts to reconnect with the Oracle database every minute.

OCI applications can use one of the following types of Oracle Net failover functionality:

  • None: No failover functionality is used. This can also be explicitly specified to prevent failover from happening. This is the default failover functionality.

  • Session: If an application's connection is lost, a new connection is automatically created for the application. This type of failover does not attempt to recover selects.

  • Select: This type of failover enables applications that began fetching rows from a cursor before failover to continue fetching rows after failover.

The behavior of IMDB Cache depends on the actions of TAF and how TAF is configured. By default, TAF and FAN callbacks are installed if you are using IMDB Cache in an Oracle RAC environment. If you do not want TAF and FAN capabilities, set the RACCallback connection attribute to 0.

Table 10-1 shows the behaviors of IMDB Cache operations in an Oracle RAC environment with different TAF failover types.

Table 10-1 Behavior of IMDB Cache operations in an Oracle RAC environment

OperationTAF Failover TypeBehavior After a Failed Connection on the Oracle Database

Autorefresh

None

The cache agent automatically stops, restarts and waits until a connection can be established on the Oracle database. This behavior is the same as in a non-Oracle RAC environment.

No user intervention is needed.

Autorefresh

Session

One of the following occurs:

  • All failed connections are recovered. Autorefresh operations that were in progress are rolled back and retried.

  • If TAF times out or cannot recover the connection, the cache agent automatically stops, restarts and waits until a connection can be established on the Oracle database.

  • In all cases, no user intervention is needed.

Autorefresh

Select

One of the following occurs:

  • Autorefresh operations resume from the point of connection failure.

  • Autorefresh operations that were in progress are rolled back and retried.

  • If TAF times out or cannot recover the connection, the cache agent automatically stops, restarts and waits until a connection can be established on the Oracle database.

  • In all cases, no user intervention is needed.

AWT

None

The receiver thread of the replication agent for the AWT cache group exits. A new thread is spawned and tries to connect to the Oracle database.

No user intervention is needed.

AWT

Session, Select

One of the following occurs:

  • If the connection is recovered and there are uncommitted DML operations in the transaction, the transaction is rolled back and then reissued.

  • If the connection is recovered and there are no uncommitted DML operations, new operations can be issued without rolling back.

In all cases, no user intervention is needed.

SWT, propagate, flush, and passthrough

None

The application is notified of the connection loss. The cache agent disconnects from the Oracle database and the current transaction is rolled back. All modified session attributes are lost.

During the next passthrough operation, the cache agent tries to reconnect to the Oracle database. This behavior is the same as in a non-Oracle RAC environment.

No user intervention is needed.

SWT, propagate, flush and passthrough

SWT, propagate and flush

Session


Select

One of the following occurs:

  • The connection to the Oracle database is recovered. If there were open cursors, DML or lock operations on the lost connection, an error is returned and the user must roll back the transaction before continuing. Otherwise, the user can continue without rolling back.

  • If TAF times out or cannot recover the connection, the application is notified of the connection loss. The cache agent disconnects from the Oracle database and the current transaction is rolled back. All modified session attributes are lost.

    During the next passthrough operation, the cache agent tries to reconnect to the Oracle database.

    In this case, no user intervention is needed.

Passthrough

Select

The connection to the Oracle database is recovered. If there were DML or lock operations on the lost connection, an error is returned and the user must roll back the transaction before continuing. Otherwise, the user can continue without rolling back.

Load and refresh

None

The application receives a loss of connection error.

Load and refresh

Session

One of the following occurs:

  • The load or refresh operation succeeds.

  • An error is returned stating that a fetch operation on Oracle cannot be executed.

Load and refresh

Select

One of the following occurs:

  • If the Oracle cursor is open and the cursor is recovered, or if the Oracle cursor is not open, then the load or refresh operation succeeds.

  • An error is returned if TAF was unable to recover either the session or open Oracle cursors.

Note: An error is less likely to be returned than if the TAF failover type is Session.


Restrictions on using IMDB Cache in an Oracle RAC environment

IMDB Cache support of Oracle RAC has the following restrictions:

  • IMDB Cache behavior is limited to Oracle RAC, FAN and TAF capabilities. For example, if all nodes for a service fail, the service is not restarted. IMDB Cache waits for the user to restart the service.

  • TAF does not recover ALTER SESSION operations. The user is responsible for restoring changed session attributes after a failover.

  • IMDB Cache uses OCI integrated with FAN. This interface automatically spawns a thread to wait for an Oracle event. This is the only IMDB Cache feature that spawns a thread in a TimesTen direct link application. Adapt your application to account for this thread creation. If you do not want the extra thread, set the RACCallback connection attribute to 0 so that TAF and FAN are not used.

Setting up IMDB Cache in an Oracle RAC environment

Install Oracle RAC and IMDB Cache. Ensure that the cache administration user has the SELECT ANY DICTIONARY privilege.

There are two TimesTen environment variables that control TAF timeouts:

  • TT_ORA_FAILOVER_TIMEOUT: TAF timeout, in minutes, for the application. Applies to SWT cache groups, user managed cache groups that use the PROPAGATE cache table attribute, and the use of the passthrough feature. The default is 5 minutes.

  • TT_AGENT_ORA_FAILOVER_TIMEOUT: TAF timeout, in minutes, for the replication agent. Applies to AWT cache groups. The default is 5 minutes.

Make sure that the TimesTen daemon and cache agent are started. The following Oracle components should also be started:

  • Oracle instances

  • Oracle listeners

  • Oracle service that will be used for Oracle In-Memory Database Cache

Then perform the following tasks:

  1. Verify that the RACCallback connection attribute is set to 1 (default).

  2. Use the DBMS_SERVICE.MODIFY_SERVICE function or Oracle Enterprise Manager to enable publishing of FAN events. This changes the value in the AQ_HA_NOTIFICATIONS column of the Oracle ALL_SERVICES view to YES.

    See Oracle Database PL/SQL Packages and Types Reference for more information about the DBMS_SERVICE Oracle PL/SQL package.

  3. Enable TAF on the Oracle service used for IMDB Cache with one of the following methods:

    • Create a service for TimesTen in the Oracle tnsnames.ora file with the following settings:

      • LOAD_BALANCE=ON (optional)

      • FAILOVER_MODE=(TYPE=SELECT) or FAILOVER_MODE=(TYPE=SESSION)

    • Use the DBMS_SERVICE.MODIFY_SERVICE function to set the TAF failover type.

      See Oracle Database Net Services Administrator's Guide for more information about enabling TAF.

  4. If you have a TimesTen direct link application, link it with a thread library so that it will receive FAN notifications. FAN spawns a thread to monitor for failures.

PKEEPKAAOEBPS/img_text/writequicks7.htm  Description of the illustration writequicks7.eps

The image shows the following SQL statements:

INSERT INTO oratt.writetab VALUES (102, 'Cache');
DELETE FROM oratt.writetab WHERE pk=101;
UPDATE oratt.writetab SET attr='Oracle' WHERE pk=100;

The following row is inserted into the oratt.writetab TimesTen cache table:

pk  attr
102 Cache

The row where pk=101 is deleted from the oratt.writetab TimesTen cache table. The row where pk=100 in the oratt.writetab TimesTen cache table is updated such that the value in the attr column is changed to Oracle.

After the INSERT, DELETE and UPDATE statements have been committed on the cache table in the writecache AWT cache group within the TimesTen database, they are automatically propagated to the oratt.writetab cached Oracle table. As a result, the TimesTen cache table and the cached Oracle table contain the following rows:

pk  attr
100 Oracle
102 Cache

End of description.

PK y PKAA"OEBPS/img_text/cachegroupover2.htm# Description of the illustration cachegroupover2.eps

The customer_orders cache group is shown with two root tables: customer and product. The child tables for customer are orders and order_item. The child table for product is inventory. You cannot define two root tables for a cache group.

End of description.

PKK=(#PKAAOEBPS/img_text/example1.htm* Description of the illustration example1.eps

The western_customers cache group contains the following cache tables: active_customer (root table), ordertab, cust_interests, orderdetails.

The active_customer cache table contains the following columns: custid, name, addr, zip, region.

The ordertab cache table contains the following columns: orderid, custid.

The cust_interests cache table contains the following columns: custid, interest.

The orderdetails cache table contains the following columns: orderid, itemid, quantity.

End of description.

PK}mPKAA OEBPS/img_text/writetabquick.htmu Description of the illustration writetabquick.eps

The image shows the following partial SQL statements:

CREATE TABLE writetab...
INSERT INTO writetab VALUE(100,'TimesTen')
INSERT INTO writetab VALUES((101,'IMDB')

The Oracle database contains the resulting writetab table with columns pk and attr. The writetab table has the following rows:

pk  attr
100 TimesTen
101 IMDB

End of description.

PK›PKAA!OEBPS/img_text/writethruquick.htm Description of the illustration writethruquick.eps

The image shows that committed updates on the TimesTen cache table in the writethrough cache group within the TimesTen database is automatically propagated to the cached Oracle table in the Oracle database. Automatic propagation is a predefined property of a writethrough cache group.

End of description.

PKƔPKAAOEBPS/img_text/passthrough0.htmu Description of the illustration passthrough0.eps

The application updates Table A and Table F. PassThrough=0. Table A is updated on the TimesTen database. Table F cannot be updated because it does not exist in TimesTen.

End of description.

PKb2zuPKAAOEBPS/img_text/passthrough4.htmR Description of the illustration passthrough4.eps

PassThrough=4.

An application updates Table A. Table A in an updatable cache group is updated in the TimesTen database.

An application issues a SELECT statement from Table B on a dynamic AWT global cache group. The statement does not satisfy the criteria for a dynamic load SELECT statement and is passed through to the Oracle database for execution.

End of description.

PKYWRPKAAOEBPS/img_text/cachegrid.htmp Description of the illustration cachegrid.eps

The image shows a cache grid containing three members: two standalone TimesTen databases and an active standby pair. The grid has four nodes: the two standalone TimesTen databases, the active database and the standby database of the active standby pair. The read-only subscriber database is not part of the cache grid because it has no connectivity with the Oracle database. The read-only subscriber receives replicated updates from the standby database.

End of description.

PK|wPKAA"OEBPS/img_text/cachegroupover3.htmX Description of the illustration cachegroupover3.eps

Two cache groups are shown: customer_orders and product_inventory. The customer_orders cache group contains the following tables: customer (root table), orders and order_item. The product_inventory cache group contains the following tables: product (root table) and inventory.

End of description.

PK]XPKAAOEBPS/img_text/careportsql.htmM Description of the illustration careportsql.jpg

This report page shows the SQL statements executed in the workload. It provides the SQL identifier, the statement, and the execution count for the statement.

PK+RRMPKAA!OEBPS/img_text/cachegroupover.htmr Description of the illustration cachegroupover.eps

The image shows the customer (root table), orders and order_item cache tables in the customer_orders cache group with the following rows:

customer (root table):

cust_num  region   name            address
     122  West     Jim Johnston    231 Main, Needles CA 92363    
     342  West     Jane Stone      4223 Cowper,Palo Alto CA 94302   
     663  Midwest  Mary J. Warren  673 State, Madison WI 53787       

orders:

ord_num  cust_num  when_placed  when_shipped
  44325       122      10/7/07       10/7/07
  65432       122      8/24/08       8/27/08
  76543       663       4/2/09        4/8/09

order_item:

ord_num  prod_num  quantity
  44325  SD07             1
  44325  TR3A             5
  65432  FT094            1
  76543  SD07             2

End of description.

PKPKAAOEBPS/img_text/passthrough5.htm Description of the illustration passthrough5.eps

PassThrough=5.

An application updates Table A. Table A in an updatable cache group is updated in the TimesTen database.

An application issues a SELECT statement from Table B on a dynamic AWT global cache group. The statement does not satisfy the criteria for a dynamic load SELECT statement and is passed through to the Oracle database for execution after all committed updates on cache tables in dynamic AWT global cache groups by previous transactions within the connection have been propagated to the Oracle database.

End of description.

PKLPKAA"OEBPS/img_text/careportconfig2.htmI Description of the illustration careportconfig2.jpg

The repository configuration section provides the host instance name, version number, and host information for the repository used in the Cache Advisor evaluation. The client configuration section provides the DSN, TNSNAME, and TimesTen database information.

PK%PKAAOEBPS/img_text/example2.htm Description of the illustration example2.eps

The update_anywhere_customers cache group contains the active_customer cache table.

The active_customer cache table contains the following columns: custid, name, addr, zip.

In this user managed cache group, committed updates on the TimesTen cache table are automatically propagated to the cached Oracle table in synchronous fashion. Committed updates on the cached Oracle table are automatically refreshed to the TimesTen cache table.

End of description.

PKbPKAA!OEBPS/img_text/writethroughcg.htm3 Description of the illustration writethroughcg.eps

Committed updates on TimesTen cache tables in the synchronous writethrough (SWT) cache group are automatically propagated to the cached Oracle tables. Data can be manually loaded from the cached Oracle tables into the cache tables in the SWT cache group.

End of description.

PKR"oPKAAOEBPS/img_text/roquicks0.htm# Description of the illustration roquicks0.eps

The image shows that committed updates on the cached Oracle table in the Oracle database is automatically refreshed into the TimesTen cache table in the read-only cache group within the TimesTen database. Automatic refresh is a predefined property of a read-only cache group.

End of description.

PKgPKAAOEBPS/img_text/globalquery.htm  Description of the illustration globalquery.eps

The image shows members called alone1 and alone2 and an active standby pair member with nodes called cacheact and cachestand. The cache grid is associated with an Oracle database.

alone1 has the following data:

<100>
<103>

alone2 has the following data:

<101>

cacheact and cachestand have the following data:

<102>
<104>

End of description.

PK PKAAOEBPS/img_text/careportimp2.htm Description of the illustration careportimp2.jpg

This page shows an example of what the implementation script would look like.

PK PKAAOEBPS/img_text/roquicks7.htm# Description of the illustration roquicks7.eps

The image shows the following SQL statements:

INSERT INTO readtab VALUES (3,'Welcome');
DELETE FROM readtab WHERE keyval=2;
UPDATE readtab SET str='Hi' WHERE keyval=1;

The following row is inserted into the oratt.readtab cached Oracle table:

keyval str
     3 Welcome

The row where keyval=2 is deleted from the oratt.readtab cached Oracle table. The row where keyval=1 in the oratt.readtab cached Oracle table is updated such that the value in the str column is changed to Hi.

After the INSERT, DELETE and UPDATE statements have been committed on the cached Oracle table, they are automatically refreshed into the oratt.readtab cache table in the readcache read-only cache group within the TimesTen database. As a result, the TimesTen cache table and the cached Oracle table contain the following rows:

keyval str
     1 Hi
     3 Welcome

End of description.

PKէU(#PKAAOEBPS/img_text/roquicks6.htmX Description of the illustration roquicks6.eps

The image shows that the readcache read-only cache group contains the oratt.readtab cache table in the TimesTen database. The data in the oratt.readtab cached Oracle table is manually loaded into the oratt.readtab TimesTen cache table using a LOAD CACHE GROUP statement.

The readcache and readtab tables contain the following data:

1 Hello
2 World

End of description.

PKPKAAOEBPS/img_text/careportcg.htm Description of the illustration careportcg.jpg

This report page provides detailed information about a cache group used during the Cache Advisor evaluation. It includes the size of the cache group, the cache group type, the number of tables, the column names within those tables with their data types, and the summary of SQL statement execution statistics.

PKӁbPKAAOEBPS/img_text/loadflush.htm? Description of the illustration loadflush.eps

The image shows that flush and propagate is the process of transmitting committed updates on cache tables in the TimesTen database to the cached tables in the Oracle database. Flush is a manual operation and propagate is an automatic operation.

Load, refresh and autorefresh are operations that transmit committed updates on cached tables in the Oracle database to the cache tables in the TimesTen database. Load and refresh are manual operations, and automatic refresh is an automatic operation.

End of description.

PKPKAAOEBPS/img_text/passthrough2.htm" Description of the illustration passthrough2.eps

The application updates Table A and Table G. PassThrough=2.Updates to Table A and Table G in a read-only cache group are passed through to the Oracle database.

The image includes the following text: INSERT, UPDATE and DELETE statements are passed through to the Oracle database for read-only cache groups and read-only cache tables. SELECT statements are executed in TimesTen unless they contain invalid TimesTen syntax or reference tables that do not exist in TimesTen.

End of description.

PK:PKAA#OEBPS/img_text/cachegroup1table.htm\ Description of the illustration cachegroup1table.eps

The image shows the customer cache table in the target_customers cache group with the following rows:

cust_num  region   name            address
     122  West     Jim Johnston    231 Main, Needles CA 92363
     342  West     Jane Stone      4223 Cowper, Palo Alto CA 94302
     663  Midwest  Mary J. Warren  673 State, Madison WI 53787 

End of description.

PK.a\PKAA OEBPS/img_text/careporthome2.htm@ Description of the illustration careporthome2.jpg

This graphic shows the Cache Advisor findings and recommendations. Specifically, this particular report shows that there would be a significant increase in response time and performance if a cache grid with cache groups are implemented for this particular SQL workload.

PKY7PKAA#OEBPS/img_text/careportsqlstats.htm8 Description of the illustration careportsqlstats.jpg

This report page provides more detailed information about a single SQL statement executed during the Cache Advisor evaluation. It includes the execution count, and the projecte total reponse time for the Oracle database, the user-specified IMDB cache, and for a complete IMDB cache. It also provides the schema name, the SQL statement, and the cache groups associated with the statement.

PK7)ӄ=8PKAA!OEBPS/img_text/awtquickcreate.htms Description of the illustration awtquickcreate.eps

The image shows that the writecache asynchronous writethrough cache group contains the oratt.writetab cache table in the TimesTen database.

End of description.

PKXxsPKAAOEBPS/img_text/careporthome.htm Description of the illustration careporthome.jpg

This Cache Advisor report shows the average response time for the SQL SELECT statements that were executed in the target Oracle database. It also shows the average response time for these statements when executed in the TimesTen database with the user-specified cache size and with the complete IMDB cache.

PKe$ zPKAAOEBPS/img_text/careportimp.htm Description of the illustration careportimp.jpg

This page shows an example of what the implementation script would look like.

PK$!PKAA&OEBPS/img_text/cachegrouploadshare.htmO Description of the illustration cachegrouploadshare.eps

The image has a table that summarizes the valid combination of cache group types, categories and classifications.

The cache group types are read-only, AWT, SWT and user managed. The cache group types comprise the rows of the table.

Above the columns of the table, the title is "Loading data into a cache group". There are 4 columns. Two of the columns are labelled at the top as "explicitly loaded". Two of the columns are labelled at the top as "dynamic".

Below the columns of the table, the title is "Sharing data across a cache grid". Two of the columns are labelled at the bottom as "local". Two of the columns are labelled at the bottom as "global".

There is an X in the column if the cache group specified on the left has both qualities denoted by the column. All the cache group types can be explicitly loaded and local. Only AWT can be explicitly loaded and global. All the cache group types can be dynamic and local. Only AWT can be dynamic and global.

End of description.

PK؟͵PKAAOEBPS/img_text/passthrough1.htmb Description of the illustration passthrough1.eps

The application updates Table A and Table G. PassThrough=1. Table A is updated in the TimesTen database, while Table G is updated in the Oracle database because Table G does not exist in the TimesTen database.

End of description.

PK5PKAAOEBPS/img_text/readonlycg.htm Description of the illustration readonlycg.eps

Committed updates on cached Oracle tables are automatically refreshed to the TimesTen cache tables in the read-only cache group. The application can pass SQL statements through the read-only cache group to be processed in the Oracle database, depending on the PassThrough connection attribute setting.

End of description.

PK,Cz PKAA&OEBPS/img_text/asyncwritethroughcg.htm- Description of the illustration asyncwritethroughcg.eps

Committed updates on TimesTen cache tables in the asynchronous writethrough (AWT) cache group are automatically propagated to the cached Oracle tables. Data can be manually loaded from the cached Oracle tables into the cache tables in the AWT cache group.

End of description.

PKTPKAA"OEBPS/img_text/cacheadvisordbs.htm^ Description of the illustration cacheadvisordbs.gif

This graphic shows the three databases that are used for the Cache Advisor evaluation. The client host contains the TimesTen database to which the application connects. The target Oracle database is the database on which the SQL workload is executed and the Cache Advisor collects information. The repository host contains the Oracle database on which the Cache Advisor performs its analysis, script generation, and reporting.

PK;w4$c^PKAAOEBPS/img_text/passthrough3.htm Description of the illustration passthrough3.eps

PassThrough=3.

An application updates Table A and selects from Table G in a read-only cache group. PassThrough=3. Table A is updated on the Oracle database for a read-only or updatable cache group. A SELECT statement that references Table G is also passed through to the Oracle database.

The image includes the following text: Statements are passed through to the Oracle database for read-only and updatable cache groups.

An application selects from Table C in a dynamic AWT global cache group. A SELECT statement that references Table C in a dynamic AWT global cache group is passed through to the Oracle database.

The image includes the following text: Statements are passed through to the Oracle database. Inserts, updates and deletes are not allowed for dynamic AWT global cache groups.

End of description.

PK-uPKAAOEBPS/img_text/roquicks3.htmz Description of the illustration roquicks3.eps

The image shows the following partial SQL statements:

CREATE TABLE readtab...
INSERT INTO readtab VALUES(1,'Hello')
INSERT INTO readtab VALUESO(2,'WORLD')

The Oracle database contains the resulting readtab table with columns keyval and str. The readtab table has the following rows:

keyval str
     1 Hello
     2 World

End of description.

PK$*&PKAAOEBPS/img_text/careportcg2.htm Description of the illustration careportcg2.jpg

Shows the SQL statements that referenced the cache group and the DDL for creating and dropping cache groups.

PK\!PKAA!OEBPS/img_text/careportconfig.htm  Description of the illustration careportconfig.jpg

The configuration page for the Cache Advisor report overview shows the host and version numbers for each database used for the evaluation. It also shows start and stop times for the workload. In addition, the number of SQL statements in the workload is provided. The number is a link that, when clicked, will provide a listing of all of the SQL workload statements.

PK%% PKAAOEBPS/oracle_tt.htm Compatibility Between TimesTen and Oracle

13 Compatibility Between TimesTen and Oracle

This chapter lists compatibility issues between TimesTen and Oracle. The list is not complete, but it indicates areas that require special attention. It includes the following topics:

Summary of compatibility issues

Consider the following differences between TimesTen and Oracle:

  • TimesTen and Oracle database metadata are stored differently. See "API compatibility" for more information.

  • TimesTen and Oracle have different transaction isolation models. See "Transaction semantics" for more information.

  • TimesTen and Oracle have different connection and statement properties. For example, TimesTen does not support catalog names, scrollable cursors or updateable cursors.

  • Sequences are not cached and synchronized between the TimesTen database and the corresponding Oracle database. See "SQL expressions" for more information.

  • Side effects of Oracle triggers and stored procedures are not reflected in the TimesTen database until after an automatic or manual refresh operation.

Transaction semantics

TimesTen and Oracle transaction semantics differ as follows:

  • Oracle serializable transactions can fail at commit time because the transaction cannot be serialized. TimesTen uses locking to enforce serializability.

  • Oracle can provide both statement-level and transaction-level consistency by using a multiversion consistency model. TimesTen does not provide statement-level consistency. TimesTen provides transaction-level consistency by using serializable isolation.

  • Oracle users can lock tables explicitly through SQL. This locking feature is not supported in TimesTen.

  • Oracle supports savepoints while TimesTen does not.

  • In Oracle, a transaction can be set to be read-only or read/write. This is not supported in TimesTen.

For more information about TimesTen isolation levels and transaction semantics, see "Transaction Management and Recovery" in Oracle TimesTen In-Memory Database Operations Guide.

API compatibility

For a complete list of the JDBC API classes and interfaces that TimesTen supports with notes on which methods have a compatibility issue, see "Key JDBC classes and interfaces" in Oracle TimesTen In-Memory Database Java Developer's Guide.

For a complete list of the ODBC API functions that TimesTen supports with notes on which functions have a compatibility issue, see "TimesTen ODBC Functions and Options" in Oracle TimesTen In-Memory Database C Developer's Guide.

For a complete list of the OCI functions for Oracle database, release 11.2.0.2, that TimesTen supports with notes on which functions have a compatibility issue, see "TimesTen Support for Oracle Call Interface" in Oracle TimesTen In-Memory Database C Developer's Guide.

For information about TimesTen support for Pro*C/C++, see "TimesTen Support for Oracle Pro*C/C++ Precompiler" in Oracle TimesTen In-Memory Database C Developer's Guide.

For information about TimesTen support for ODP.NET, see Oracle Data Provider for .NET Oracle TimesTen In-Memory Database Support User's Guide.

For information about TimesTen support for PL/SQL, see Oracle TimesTen In-Memory Database PL/SQL Developer's Guide.

The TimesTen C++ Interface Classes (TTClasses) library provides a high-performance interface to TimesTen that is easy to use. This C++ class library provides wrappers around the most common ODBC functionality. This API is not available for the Oracle Database. See Oracle TimesTen In-Memory Database TTClasses Guide.

SQL compatibility

This section compares TimesTen's SQL implementation with Oracle's SQL. The purpose is to provide users with a list of Oracle SQL features not supported in TimesTen or supported with different semantics.

Schema objects

TimesTen does not recognize some of the schema objects that are supported in Oracle. TimesTen returns a syntax error when a statement manipulates or uses these objects. TimesTen passes the statement to Oracle. The unsupported objects are:


Clusters
Objects created by the CREATE DATABASE statement
Objects created by the CREATE JAVA statement
Database links
Database triggers
Dimensions
Extended features
External procedure libraries
Index-organized tables
Mining models
Partitions
Object tables, types and views
Operators

TimesTen supports views and materialized views, but it cannot cache an Oracle view. TimesTen can cache an Oracle materialized view in a user managed cache group without the AUTOREFRESH cache group attribute and PROPAGATE cache table attribute. The cache group must be manually loaded and flushed.

Caching and Oracle partitioned tables

TimesTen can cache Oracle partitioned tables at the table level, but individual partitions cannot be cached. The following describes how operations on partitioned tables affect cache groups:

  • DDL operations on a table that has partitions do not affect the cache group unless there is data loss. For example, if a partition with data is truncated, an AUTOREFRESH operation does not delete the data from the corresponding cached table.

  • WHERE clauses in any cache group operations cannot reference individual partitions or subpartitions. Any attempt to define a single partition of a table returns an error.

Nonschema objects

TimesTen does not recognize some of the schema objects that are supported in Oracle. TimesTen returns a syntax error when a statement manipulates or uses these objects. TimesTen passes the statement to Oracle. The unsupported objects are:


Contexts
Directories
Editions
Restore points
Roles
Rollback segments
Tablespaces

Differences between Oracle and TimesTen tables

The Oracle table features that TimesTen does not support are:

  • ON DELETE SET NULL

  • Check constraints

  • Foreign keys that reference the table on which they are defined

Data type support

The following Oracle data types are not supported by TimesTen:


TIMESTAMP WITH TIME ZONE
TIMESTAMP WITH LOCAL TIME ZONE
INTERVAL YEAR TO MONTH
INTERVAL DAY TO SECOND
UROWID
BFILE
Oracle-supplied types
User-defined types

The following TimesTen data types are not supported by Oracle:


TT_CHAR
TT_VARCHAR
TT_NCHAR
TT_NVARCHAR
TT_BINARY
TT_VARBINARY
TINYINT and TT_TINYINT
TT_SMALLINT
TT_INTEGER
TT_BIGINT
TT_DECIMAL
TT_DATE
TIME and TT_TIME
TT_TIMESTAMP

Note:

TimesTen NCHAR and NVARCHAR2 data types are encoded as UTF-16. Oracle NCHAR and NVARCHAR2 data types are encoded as either UTF-16 or UTF-8.

To cache an Oracle NCHAR or NVARCHAR2 column, the Oracle NLS_NCHAR_CHARACTERSET encoding must be AL16UTF16, not AL32UTF8.


SQL operators

TimesTen supports these operators and predicates that are supported by Oracle:


unary -
+, -, *, /
=, <, >, <=, >=, <>, !=
||
IS NULL, IS NOT NULL
LIKE (Oracle LIKE operator ignores trailing spaces, but TimesTen does not)
BETWEEN
IN
NOT IN (list)
AND
OR
+ (outer join)
ANY, SOME
ALL (list)
EXISTS
UNION
MINUS
INTERSECT

To perform a bitwise AND operation of two bit vector expressions, TimesTen uses the ampersand character (&) between the expressions while Oracle uses the BITAND function with the expressions as arguments.

SELECT statements

TimesTen supports these clauses of a SELECT statement that are supported by Oracle:

  • FOR UPDATE

  • ORDER BY, including NULLS FIRST and NULLS LAST

  • GROUP BY, including ROLLUP, GROUPING_SETS and grouping expression lists

  • Table alias

  • Column alias

  • Subquery factoring clause with constructor

Oracle supports flashback queries, which are queries against a database that is in some previous state (for example, a query on a table as of yesterday). TimesTen does not support flashback queries.

TimesTen does not support the CONNECT BY clause.

SQL subqueries

TimesTen supports these subqueries that are supported by Oracle:


IN (subquery)
>,<,= ANY (subquery)
>,=,< SOME (subquery)
EXISTS (subquery)
>,=,< (scalar subquery)
Subqueries in WHERE clause of DELETE/UPDATE
Subqueries in FROM clause
Subquery factoring clause (WITH constructor)

Note:

A nonverifiable scalar subquery is a scalar subquery whose 'single-row-result-set' property cannot be determined until execution time. TimesTen allows at most one nonverifiable scalar subquery in the entire query and the subquery cannot be specified in an OR expression.

SQL functions

TimesTen supports these functions that are supported by Oracle:


ABS
ADD_MONTHS
ASCIISTR
AVG
CAST
CEIL
COALESCE
CONCAT
COUNT
CHR
DECODE
DENSE_RANK
EMPTY_BLOB
EMPTY_CLOB
EXTRACT
FIRST_VALUE
FLOOR
GREATEST
GROUP_ID
GROUPING
GROUPING_ID
INSTR
LAST_VALUE
LEAST
LENGTH
LOWER
LPAD
LTRIM
MAX
MIN
MOD
MONTHS_BETWEEN
NCHR
NLS_CHARSET
NLS_CHARSET_NAME
NLSSORT
NULLIF
NUMTOYMINTERVAL
NUMTODSINTERVAL
NVL
POWER
RANK
REPLACE
ROUND
ROW_NUMBER
RPAD
RTRIM
SIGN
SQRT
SUBSTR
SUM
SYS_CONTEXT
SYSDATE
TO_BLOB
TO_CLOB
TO_CHAR
TO_DATE
TO_LOB
TO_NCLOB
TO_NUMBER
TRIM
TRUNC
UID
UNISTR
UPPER
USER

These TimesTen functions are not supported by Oracle:


CURRENT_USER
GETDATE
ORA_SYSDATE
SESSION_USER
SYSTEM_USER
TIMESTAMPADD
TIMESTAMPDIFF
TT_HASH
TT_SYSDATE
TTGRIDNODENAME
TTGRIDMEMBERID
TTGRIDUSERASSIGNEDNAME

TimesTen and the Oracle Database interpret the literal N'\UNNNN' differently. In TimesTen, N'\unnnn' (where nnnn is a number) is interpreted as the national character set character with the code nnnn. In the Oracle Database, N'\unnnn' is interpreted as 6 literal characters. The \u is not treated as an escape. This difference causes unexpected behavior. For example, loading a cache group with a WHERE clause that contains a literal can fail. This can also affects dynamic loading and cache grid operation. Applications should use the UNISTR SQL function instead of literals.

SQL expressions

TimesTen supports these expressions that are supported by Oracle:


Column Reference
Sequence
NULL
()
Binding parameters
CASE expression
ROWID pseudocolumn
ROWNUM pseudocolumn

TimesTen and Oracle treat literals differently. See the description of HexadecimalLiteral in "Constants" in Oracle TimesTen In-Memory Database SQL Reference.

INSERT/DELETE/UPDATE/MERGE statements

TimesTen supports these DML statements that are supported by Oracle:

  • INSERT INTO ... VALUES

  • INSERT INTO ... SELECT

  • UPDATE WHERE expression (expression may contain a subquery)

  • DELETE WHERE expression (expression may contain a subquery)

TimesTen does not support updating of primary key values except when the new value is the same as the old value.

TimesTen-only SQL and built-in procedures

This section lists TimesTen SQL statements and functions and built-in procedures that are not supported by Oracle. With PassThrough=3, these statements are passed to Oracle for execution and an error is generated.

  • All TimesTen cache group DDL and DML statements, including CREATE CACHE GROUP, DROP CACHE GROUP, ALTER CACHE GROUP, LOAD CACHE GROUP, UNLOAD CACHE GROUP, REFRESH CACHE GROUP and FLUSH CACHE GROUP.

  • All TimesTen replication management DDL statements, including CREATE REPLICATION, DROP REPLICATION, ALTER REPLICATION, CREATE ACTIVE STANDBY PAIR, ALTER ACTIVE STANDBY PAIR and DROP ACTIVE STANDBY PAIR.

  • FIRST n clause

  • ROWS m TO n clause

  • All TimesTen built-in procedures. See "Built-In Procedures" in Oracle TimesTen In-Memory Database Reference.

PL/SQL constructs

TimesTen supports a subset of stored procedure constructs, functions, data types, packages and package bodies that are supported by Oracle. See Oracle TimesTen In-Memory Database PL/SQL Developer's Guide for details.

Mappings between Oracle and TimesTen data types

When you choose data types for columns in the TimesTen cache tables, consider the data types of the columns in the Oracle tables and choose an equivalent or compatible data type for the columns in the cache tables.


Note:

TimeTen cache, including passthrough, does not support the Oracle ROWID data type. However, you can cast any ROWID data type to the CHAR data type when provided on the SELECT list in a SQL query.

Primary and foreign key columns are distinguished from non-key columns. The data type mappings allowed for key columns in a cache table are shown in Table 13-1.

Table 13-1 Data type mappings allowed for key columns

Oracle data typeTimesTen data type

NUMBER(p,s)

NUMBER(p,s)

Note: DECIMAL(p,s) or NUMERIC(p,s) can also be used. They are aliases for NUMBER(p,s).

NUMBER(p,0)

INTEGER

TT_TINYINT

TT_SMALLINT

TT_INTEGER

TT_BIGINT

NUMBER(p,0)

NUMBER

TT_TINYINT

TT_SMALLINT

TT_INTEGER

TT_BIGINT

NUMBER

CHAR(m)

CHAR(m)

VARCHAR2(m)

VARCHAR2(m)

RAW(m)

VARBINARY(m)

DATE

DATE

TIMESTAMP(m)

TIMESTAMP(m)

NCHAR(m)

NCHAR(m)

NVARCHAR2(m)

NVARCHAR2(m)


Table 13-2 shows the data type mappings allowed for non-key columns in a cache table.

Table 13-2 Data type mappings allowed for non-key columns

Oracle data typeTimesTen data type

NUMBER(p,s)

NUMBER(p,s)

REAL

FLOAT

BINARY_FLOAT

DOUBLE

BINARY_DOUBLE

NUMBER(p,0)

INTEGER

TT_TINYINT

TT_SMALLINT

TT_INTEGER

TT_BIGINT

NUMBER(p,0)

FLOAT

BINARY_FLOAT

DOUBLE

BINARY_DOUBLE

NUMBER

TT_TINYINT

TT_SMALLINT

TT_INTEGER

TT_BIGINT

NUMBER

REAL

FLOAT

BINARY_FLOAT

DOUBLE

BINARY_DOUBLE

CHAR(m)

CHAR(m)

VARCHAR2(m)

VARCHAR2(m)

RAW(m)

VARBINARY(m)

LONG

VARCHAR2(m)

Note: m can be any valid value within the range defined for the VARCHAR2 data type.

LONG RAW

VARBINARY(m)

Note: m can be any valid value within the range defined for the VARBINARY data type.

DATE

DATE

TIMESTAMP(0)

TIMESTAMP(m)

TIMESTAMP(m)

FLOAT(n)

Note: Includes DOUBLE and FLOAT, which are equivalent to FLOAT(126). Also includes REAL, which is equivalent to FLOAT(63).

FLOAT(n)

BINARY_DOUBLE

Note: FLOAT(126) can be declared as DOUBLE. FLOAT(63) can be declared as REAL.

BINARY_FLOAT

BINARY_FLOAT

BINARY_DOUBLE

BINARY_DOUBLE

NCHAR(m)

NCHAR(m)

NVARCHAR2(m)

NVARCHAR2(m)

CLOB

VARCHAR2(m)

Note: 1<=m<=4 megabytes

BLOB

VARBINARY(m)

Note: 1<=m<=16 megabytes

NCLOB

NVARCHAR2(m)

Note: 1<=m<=4 megabytes


PKV>WMPKAAOEBPS/concepts.htm~U Oracle In-Memory Database Cache Concepts

1 Oracle In-Memory Database Cache Concepts

Oracle In-Memory Database Cache is an Oracle Database product option that includes the Oracle TimesTen In-Memory Database. It is used as a database cache at the application tier to cache Oracle data and reduce the workload on the Oracle database. It also provides the connection and transfer of data between an Oracle database and a TimesTen database, as well as facilitating the capture and processing of high-volume event flows into a TimesTen database and subsequent transfer of data into an Oracle database.

You can cache Oracle data in a TimesTen database by defining a cache grid and then creating cache groups. A cache group in a TimesTen database can cache a single Oracle table or a group of related Oracle tables.

This chapter includes the following topics:

Overview of a cache grid

A cache grid is a set of distributed TimesTen in-memory databases that work together to cache data from an Oracle database and guarantee cache coherence among the TimesTen databases. A grid consists of one or more in-memory database grid members that collectively manage the application data using the relational data model. The members of a grid cache data from a single Oracle database. A grid member can be either a standalone TimesTen database or an active standby pair.

A grid node is the database for a grid member. A node is one of the following:

  • A standalone TimesTen database

  • The active database in an active standby pair

  • The standby database in an active standby pair

Thus a grid member that is a standalone database consists of one node. A grid member that is an active standby pair consists of two nodes.

Figure 1-1 shows a cache grid containing three members: two standalone TimesTen databases and an active standby pair. The grid has four nodes: the two standalone TimesTen databases, the active database and the standby database of the active standby pair. The read-only subscriber database is not part of the cache grid because it has no connectivity with the Oracle database. The read-only subscriber receives replicated updates from the standby database.

Figure 1-1 Cache grid with three grid members caching data from an Oracle database

Description of Figure 1-1 follows
Description of "Figure 1-1 Cache grid with three grid members caching data from an Oracle database"

In a cache grid, cached data is dynamically distributed across multiple grid members without shared storage. This architecture enables the capacity of the cache grid to scale based on the processing needs of the application. When the workload increases or decreases, new grid members attach to the grid or existing grid members detach from the grid. Attaching to or detaching from the grid are online operations that do not interrupt operations on other grid members.

When requests are submitted to the grid members, the cache grid automatically redistributes data based on application access patterns. The location of the data is transparent to the application, but the cache grid redistributes data dynamically to minimize access time. The cache grid automatically maintains cache coherence and transactional consistency across the grid members. You can also configure the cache grid to perform global queries without redistributing the data. See "Performing global queries on a cache grid".

TimesTen databases within a cache grid can contain explicitly loaded and dynamic cache groups, as well as local and global cache groups of any cache group type that is supported for the various cache group classifications and categories.

See "Cache group types" for details about the different types of cache groups.

See "Loading data into a cache group: Explicitly loaded and dynamic cache groups" for details about the differences between an explicitly loaded and a dynamic cache group.

See "Sharing data across a cache grid: Local and global cache groups" for details about the differences between a local and a global cache group.

See "Configuring a cache grid" for information about creating a cache grid and associating a TimesTen database with a cache grid.

Overview of cache groups

Cache groups define the Oracle data to be cached in a TimesTen database. A cache group can be defined to cache all or part of a single Oracle table, or a set of related Oracle tables.

Figure 1-2 shows the target_customers cache group that caches a subset of a single Oracle table customer.

Figure 1-2 Single-table cache group

Description of Figure 1-2 follows
Description of "Figure 1-2 Single-table cache group"

You can cache multiple Oracle tables in the same cache group by defining a root table and one or more child tables. A cache group can contain only one root table.

In a cache group with multiple tables, each child table must reference the root table or another child table in the same cache group using a foreign key constraint. Although tables in a multiple-table cache group must be related to each other in the TimesTen database through foreign key constraints, the corresponding tables do not necessarily need to be related to each other in the Oracle database. The root table does not reference any table with a foreign key constraint. See "Multiple-table cache group" for more details about the characteristics of a multiple-table cache group.

Cache instance

Data is loaded from an Oracle database into a cache group within a TimesTen database in units called cache instances. A cache instance is defined as a single row in the cache group's root table together with the set of related rows in the child tables.

Figure 1-3 shows three tables in the customer_orders cache group. The root table is customer. orders and order_item are child tables. The cache instance identified by the row with the value 122 in the cust_num primary key column of the customer table includes:

  • The two rows with the value 122 in the cust_num column of the orders table (whose value in the ord_num primary key column is 44325 or 65432), and

  • The three rows with the value 44325 or 65432 in the ord_num column of the order_item table

Figure 1-3 Multiple-table cache group

Description of Figure 1-3 follows
Description of "Figure 1-3 Multiple-table cache group"

Cache group types

The most commonly used types of cache groups are:

  • Read-only cache group

    A read-only cache group enforces a caching behavior in which committed updates on cached tables in the Oracle database are automatically refreshed to the cache tables in the TimesTen database. Using a read-only cache group is suitable for reference data that is heavily accessed by applications.

    See "Read-only cache group" for details about read-only cache groups.

  • Asynchronous writethrough (AWT) cache group

    An AWT cache group enforces a caching behavior in which committed updates on cache tables in the TimesTen database are automatically propagated to the cached tables in the Oracle database in asynchronous fashion. Using an AWT cache group is suitable for high speed data capture and online transaction processing.

    See "Asynchronous writethrough (AWT) cache group" for details about AWT cache groups.

Other types of cache groups include:

  • Synchronous writethrough (SWT) cache group

    An SWT cache group enforces a caching behavior in which committed updates on cache tables in the TimesTen database are automatically propagated to the cached tables in the Oracle database in synchronous fashion.

    See "Synchronous writethrough (SWT) cache group" for details about SWT cache groups.

  • User managed cache group

    A user managed cache group defines customized caching behavior.

    For example, you can define a cache group that does not use automatic refresh nor automatic propagation where committed updates on the cache tables are manually propagated or flushed to the cached Oracle tables.

    You can also define a cache group that uses both automatic propagation in synchronous fashion on every table and automatic refresh.

    See "User managed cache group" for details about user managed cache groups.

Transmitting updates between the TimesTen and Oracle databases

Transmitting committed updates between the TimesTen cache tables and the cached Oracle tables keeps these tables in the two databases synchronized.

As shown in Figure 1-4, propagate and flush are operations that transmit committed updates on cache tables in the TimesTen database to the cached tables in the Oracle database. Flush is a manual operation and propagate is an automatic operation.

Load, refresh and autorefresh are operations that transmit committed updates on cached tables in the Oracle database to the cache tables in the TimesTen database. Load and refresh are manual operations; autorefresh is an automatic operation.

See "Flushing a user managed cache group" for information about the FLUSH CACHE GROUP statement which can only be issued on a user managed cache group.

See "Asynchronous writethrough (AWT) cache group" and "Synchronous writethrough (SWT) cache group" for details about how a propagate operation is processed on AWT and SWT cache groups, respectively.

See "Loading and refreshing a cache group" for information about the LOAD CACHE GROUP and REFRESH CACHE GROUP statements.

See "AUTOREFRESH cache group attribute" for details about an autorefresh operation.

Figure 1-4 Transmitting committed updates between the TimesTen and Oracle databases

Description of Figure 1-4 follows
Description of "Figure 1-4 Transmitting committed updates between the TimesTen and Oracle databases"

Loading data into a cache group: Explicitly loaded and dynamic cache groups

Cache groups are categorized as either explicitly loaded or dynamic.

In an explicitly loaded cache group, cache instances are loaded manually into the TimesTen cache tables from Oracle by using a load or refresh operation or automatically by using an autorefresh operation. The cache tables are loaded before operations such as queries are performed on the tables. An explicitly loaded cache group is appropriate when the set of data to cache is static and can be predetermined before applications begin performing operations on the cache tables. By default, cache groups are explicitly loaded unless they are defined as dynamic.

In a dynamic cache group, cache instances are loaded into the TimesTen cache tables on demand from Oracle using a dynamic load operation or manually using a load operation. A manual refresh or an autorefresh operation on a dynamic cache group can result in existing cache instances being updated or deleted, but committed updates on Oracle data that are not being cached do not result in new cache instances being loaded into its cache tables. A dynamic cache group is appropriate when the set of data to cache is small and should not be preloaded from Oracle before applications begin performing operations on the cache tables.

See "Transmitting updates between the TimesTen and Oracle databases" for details about cache group load and refresh operations.

See "Loading and refreshing a cache group" for more details about the differences between performing a load and a refresh operation on an explicitly loaded cache group and performing the same operations on a dynamic cache group.

See "Dynamically loading a cache instance" for details about a dynamic load operation.

Any cache group type (read-only, AWT, SWT, user managed) can be defined as an explicitly loaded cache group. All cache group types except a user managed cache group that uses both the AUTOREFRESH cache group attribute and the PROPAGATE cache table attribute can be defined as a dynamic cache group.

See "Dynamic cache groups" for more information about dynamic cache groups.

Sharing data across a cache grid: Local and global cache groups

In addition to being explicitly loaded or dynamic, cache groups are also classified as either local or global.

In a local cache group, data in the cache tables is not shared across TimesTen databases even if the databases are members of the same cache grid. Therefore, the databases can have overlapping data because the cache instances are local to a specific grid member. Committed updates on the TimesTen cache tables are propagated to the cached Oracle tables without coordination with other grid members. Any cache group type can be defined as a local cache group. A local cache group can be defined either as explicitly loaded or dynamic. Using a local cache group is suitable for reference data that is read frequently and can be present in all grid members and for disjoint data that is logically partitioned for optimal concurrency and throughput. By default, cache groups are local unless they are defined as global.

In a global cache group, data in its cache tables are shared across TimesTen databases that are members of the same cache grid. Committed updates to the same data on different grid members are propagated to Oracle in the order in which they were issued within the grid to ensure read/write data consistency across the members of the grid.

A dynamic AWT cache group and an explicitly loaded AWT cache group can be defined as global cache groups. New cache instances are loaded into the cache tables of a global cache group on demand. Queries on a dynamic AWT global cache group can be satisfied by data from the local grid member on which the query is made, from remote grid members or from the Oracle database. Queries on an explicitly loaded AWT cache group can be satisfied by data from the local grid member or from remote grid members.Using a global cache group is suitable for updatable data that can only be accessed by or present in one grid member at a time in order to ensure that the data is consistent among both the members of the grid and the Oracle database.

See "Global cache groups" for information about creating and using a global cache group.

Summary of cache group types

The table in Figure 1-5 summarizes the valid combinations of cache group types, categories and classifications available to the user at cache group creation time. The cache group categories determine how the data is loaded into the cache group. The cache group classifications determine whether data in the cache group can be shared across a cache grid.

You can create an explicitly loaded local cache group or a dynamic local cache group of any cache group type. You can create a global cache group for a cache group whose category and type is dynamic AWT or explicitly loaded AWT.

Figure 1-5 Summary of cache group types and categories

Description of Figure 1-5 follows
Description of "Figure 1-5 Summary of cache group types and categories"

High availability caching solution

You can configure Oracle In-Memory Database Cache to achieve high availability of cache tables, and facilitate failover and recovery while maintaining connectivity to the Oracle database. A TimesTen database that is a participant in an active standby pair replication scheme can provide high availability for cache tables in a read-only or an AWT cache group.

An active standby pair provides for high availability of a TimesTen database. Multiple grid members provide for high availability of a TimesTen cache grid. Oracle Real Application Clusters (Oracle RAC) and Data Guard provides for high availability of an Oracle database.

See "Replicating cache tables" for information on configuring replication of cache tables.

See "Using Oracle In-Memory Database Cache in an Oracle RAC Environment" for more information on Oracle In-Memory Database Cache and Oracle RAC.

See "Using Oracle In-Memory Database Cache with Data Guard" for more information on Oracle In-Memory Database Cache and Data Guard.

PKݽU~UPKAA OEBPS/toc.ncxV Oracle® In-Memory Database Cache User's Guide, 11g Release 2 (11.2.2) Cover Table of Contents Oracle In-Memory Database Cache User's Guide, 11g Release 2 (11.2.2) Preface What's New Oracle In-Memory Database Cache Concepts Getting Started Setting Up a Caching Infrastructure Defining Cache Groups Cache Group Operations Creating Other Cache Grid Members Managing a Caching Environment Cleaning up the Caching Environment Using the Cache Advisor Using Oracle In-Memory Database Cache in an Oracle RAC Environment Using Oracle In-Memory Database Cache with Data Guard SQL*Plus Scripts for Oracle In-Memory Database Cache Compatibility Between TimesTen and Oracle Glossary Index Copyright PKe5[VPKAAOEBPS/dataguard.htm 2 Using Oracle In-Memory Database Cache with Data Guard

11 Using Oracle In-Memory Database Cache with Data Guard

This chapter describes how to configure Oracle In-Memory Database Cache (IMDB Cache) to work with either synchronous local Data Guard or Data Guard used during planned maintenance. It includes the following topics:

Components of MAA for Oracle In-Memory Database Cache

Oracle Maximum Availability Architecture (MAA) is Oracle's best practices blueprint based on proven Oracle high availability (HA) technologies and recommendations. The goal of MAA is to achieve the optimal high availability architecture at the lowest cost and complexity.

To be compliant with MAA, IMDB Cache must support Oracle Real Application Clusters (Oracle RAC) and Oracle Data Guard, as well as have its own HA capability. IMDB Cache provides its own HA capability through active standby pair replication of cache tables in read-only and AWT cache groups. See "Using Oracle In-Memory Database Cache in an Oracle RAC Environment" for more information on IMDB Cache and Oracle RAC.

Oracle Data Guard provides the management, monitoring, and automation software infrastructure to create and maintain one or more synchronized standby databases to protect data from failures, disasters, errors and corruptions. If the primary database becomes unavailable because of a planned or an unplanned outage, Data Guard can switch any standby database to the primary role, thus minimizing downtime and preventing any data loss. For more information about Data Guard, see Oracle Data Guard Concepts and Administration.

The MAA framework for IMDB Cache supports cache tables in explicitly loaded read-only and AWT cache groups. For cache tables in dynamic cache groups of any cache group type, SWT cache groups, and user managed cache groups that use the AUTOREFRESH cache group attribute, IMDB Cache cannot access the Oracle database during a failover and switchover because cache applications will have to wait until the failover and switchover completes.

In general, however, all cache groups types are supported with synchronous local Data Guard or Data Guard during planned maintenance.

How IMDB Cache works with Data Guard

IMDB Cache works with synchronous physical standby failover and switchover and logical standby switchover as long as the object IDs for cached Oracle tables remain the same on the primary and standby databases. Object IDs can change if the table is dropped and re-created, altered, or a truncated flashback operation or online segment shrink is executed.

During a transient upgrade, a physical standby database is transformed into a logical standby database. For the time that the standby database is logical, the user must ensure that the object IDs of the cached Oracle tables do not change. Specifically, tables that are cached should not drop and re-created, truncated, altered, flashed back or online segment shrunk.

Configuring the Oracle databases

In order for IMDB Cache to fail over and switch over properly, configure the Oracle primary and standby databases using the following steps:

  1. The Data Guard configuration must be managed by the Data Guard Broker so that IMDB Cache daemon processes and application clients respond faster to failover and switchover events.

  2. If you are configuring an Oracle RAC database, use the Oracle Enterprise Manager Cluster Managed Database Services Page to create database services that IMDB Cache and its client applications use to connect to the Oracle primary database. See "Introduction to Automatic Workload Management" in Oracle Real Application Clusters Administration and Deployment Guide for information about creating database services.

  3. If you created the database service in step 2, use the MODIFY_SERVICE function of the DBMS_SERVICE PL/SQL package to modify the service to enable high availability notification to be sent through Advanced Queuing (AQ) by setting the aq_ha_notifications attribute to TRUE. To configure server side TAF settings, set the failover attributes, as shown in the following example:

    BEGIN
    DBMS_SERVICE.MODIFY_SERVICE 
    (service_name => 'DBSERV',
     goal => DBMS_SERVICE.GOAL_NONE,
     dtp => false,
     aq_ha_notifications => true,
     failover_method => 'BASIC', 
     failover_type => 'SELECT', 
     failover_retries => 180, 
     failover_delay => 1);
    END;
    
  4. If you did not create the database service in step 2, use the CREATE_SERVICE function of the DBMS_SERVICE PL/SQL package to create the database service, enable high availability notification, and configure server side TAF settings:

    BEGIN
    DBMS_SERVICE.CREATE_SERVICE
    (service_name => 'DBSERV', 
     network_name => 'DBSERV', 
     goal => DBMS_SERVICE.GOAL_NONE,
     dtp => false,
     aq_ha_notifications => true, 
     failover_method => 'BASIC', 
     failover_type => 'SELECT', 
     failover_retries => 180, 
     failover_delay => 1);
    END;
    
  5. Create two triggers to relocate the database service to a Data Guard standby database (Oracle RAC or non-Oracle RAC) after it has switched to the primary role. The first trigger fires on the system start event and starts up the DBSERV service:

    CREATE OR REPLACE TRIGGER manage_service 
    AFTER STARTUP ON DATABASE 
    DECLARE 
      role VARCHAR(30); 
    BEGIN 
      SELECT database_role INTO role FROM v$database; 
      IF role = 'PRIMARY' THEN 
        dbms_service.start_service('DBSERV'); 
      END IF; 
    END;
    

    The second trigger fires when the standby database remains open during a failover and switchover upon a database role change. It relocates the DBSERV service from the old primary to the new primary database and disconnects any connections to that service on the old primary database so that IMDB Cache and its client applications can reconnect to the new primary database:

    CREATE OR REPLACE TRIGGER relocate_service 
    AFTER DB_ROLE_CHANGE ON DATABASE 
    DECLARE 
      role VARCHAR(30);
    BEGIN
      SELECT database_role INTO role FROM v$database;
      IF role = 'PRIMARY' THEN
        dbms_service.start_service('DBSERV');
      ELSE
        dbms_service.stop_service('DBSERV');
      dbms_lock.sleep(2);
      FOR x IN (SELECT s.sid, s.serial# 
                FROM v$session s, v$process p
                WHERE s.service_name='DBSERV' AND s.paddr=p.addr)
        LOOP 
          BEGIN 
            EXECUTE IMMEDIATE 
               'ALTER SYSTEM DISCONNECT SESSION 
               ''' || x.sid || ','|| x.serial# || ''' IMMEDIATE';
            EXCEPTION WHEN OTHERS THEN 
            BEGIN 
              DBMS_OUTPUT.PUT_LINE(DBMS_UTILITY.FORMAT_ERROR_STACK);
            END; 
          END; 
        END LOOP; 
      END IF; 
    END;
    
  6. As an option, to reduce the performance impact to IMDB Cache applications and minimize the downtime during a physical or logical standby database switchover, run the following procedure right before initiating the Data Guard switchover to a physical or logical standby database:

    DECLARE
      role varchar(30);
    BEGIN
      SELECT database_role INTO role FROM v$database;
      IF role = 'PRIMARY' THEN
        dbms_service.stop_service('DBSERV');
      dbms_lock.sleep(2);
      FOR x IN (SELECT s.sid, s.serial# 
                FROM v$session s, v$process p 
                WHERE s.service_name='DBSERV' AND s.paddr=p.addr)
        LOOP 
          BEGIN
            EXECUTE IMMEDIATE
                'ALTER SYSTEM DISCONNECT SESSION 
                ''' || x.sid || ',' || x.serial# || ''' IMMEDIATE'; 
            EXCEPTION WHEN OTHERS THEN
            BEGIN
              DBMS_OUTPUT.PUT_LINE(DBMS_UTILITY.FORMAT_ERROR_STACK);
            END;
          END;
        END LOOP;
      ELSE
        dbms_service.start_service('DBSERV');
      END IF; 
    END;
    

    This procedure should be executed first on the physical or logical standby database, and then on the primary database, right before the switchover process. Before executing the procedure for a physical standby database switchover, Active Data Guard must be enabled on the physical standby database.

Before performing a switchover to a logical standby database, stop the Oracle service for TimesTen on the primary database and disconnect all sessions connected to that service. Then start the service on the standby database.

At this point, the cache applications try to reconnect to the standby database. If a switchover occurs, there is no wait required to migrate the connections from the primary database to the standby database. This eliminates the performance impact on IMDB Cache and its applications.

See the Maximum Availability Architecture, Oracle Best Practices for High Availability white paper for more information.

Configuring the TimesTen database

Configure TimesTen to receive notification of FAN HA events and to avoid reconnecting to a failed Oracle instance. Use the Oracle Client shipped with IMDB Cache.

  1. Create an Oracle Net service name that includes all primary and standby hosts in ADDRESS_LIST. For example:

    DBSERV = 
    (DESCRIPTION = 
      (ADDRESS_LIST = 
      (ADDRESS = (PROTOCOL = TCP)(HOST = PRIMARYDB)(PORT = 1521)) 
      (ADDRESS = (PROTOCOL = TCP)(HOST = STANDBYDB)(PORT = 1521)) 
      (LOAD_BALANCE = yes) 
      ) 
      (CONNECT_DATA= (SERVICE_NAME=DBSERV))
    )
    
  2. In the client's sqlnet.ora file, set the SQLNET.OUTBOUND_CONNECT_TIMEOUT parameter to enable clients to quickly traverse an address list in the event of a failure. For example, if a client attempts to connect to a host that is unavailable, the connection attempt is bounded to the time specified by the SQLNET.OUTBOUND_CONNECT_TIMEOUT parameter, after which the client attempts to connect to the next host in the address list. Connection attempts continue for each host in the address list until a connection is made.

    Setting the SQLNET.OUTBOUND_CONNECT_TIMEOUT parameter to a value of 3 seconds suffices in most environments. For example, add the following entry to the sqlnet.ora file:

    SQLNET.OUTBOUND_CONNECT_TIMEOUT=3
    
PK N%2 2PKAAOEBPS/content.opfQE Oracle® In-Memory Database Cache User's Guide, 11g Release 2 (11.2.2) en-US E21634-05 Oracle Corporation Oracle Corporation Oracle® In-Memory Database Cache User's Guide, 11g Release 2 (11.2.2) 2012-08-31T18:20:27Z Provides information about designing and configuring the Oracle In-Memory Database Cache. It includes information about setting up a cache grid. PKgVEQEPKAAOEBPS/manage.htm Managing a Caching Environment

7 Managing a Caching Environment

This chapter describes how to manage and monitor various aspects of a caching system such as cache grids, cache groups and the cache agent process. It includes the following topics:

Checking the status of the cache and replication agents

You can use either the ttAdmin or ttStatus utility to check whether the TimesTen cache agent and replication agent processes are running as well as determine each agent's start policy.

Example 7-1 Using ttAdmin to determine the cache and replication agents status

You can use a ttAdmin -query utility command to determine whether the cache and replication agents are running, and the cache and replication agent start policies for a TimesTen database:

% ttAdmin -query cachealone1
RAM Residence Policy            : inUse
Replication Agent Policy        : manual
Replication Manually Started    : True
Cache Agent Policy              : always
Cache Agent Manually Started    : True

For more information about the ttAdmin utility, see "ttAdmin" in Oracle TimesTen In-Memory Database Reference.

Example 7-2 Using ttStatus to determine the cache and replication agents status

You can use the ttStatus utility to determine whether the cache and replication agents are running, and the cache and replication agent start policies for all TimesTen databases in the installed instance:

% ttStatus
TimesTen status report as of Thu May  7 13:42:01 2009

Daemon pid 9818 port 4173 instance myinst
TimesTen server pid 9826 started on port 4175
------------------------------------------------------------------------
Data store /users/OracleCache/alone1
There are 38 connections to the data store
Shared Memory KEY 0x02011c82 ID 895844354
PL/SQL Memory KEY 0x03011c82 ID 895877123 Address 0x10000000
Type            PID     Context     Connection Name              ConnID
Cache Agent     1019    0x0828f840  Handler                           2
Cache Agent     1019    0x083a3d40  Timer                             3
Cache Agent     1019    0x0842d820  Aging                             4
Cache Agent     1019    0x08664fd8  Garbage Collector(-1580741728)    5
Cache Agent     1019    0x084d6ef8  Marker(-1580213344)               6
Cache Agent     1019    0xa5bb8058  DeadDsMonitor(-1579684960)        7
Cache Agent     1019    0x088b49a0  CacheGridEnv                     14
Cache Agent     1019    0x0896b9d0  CacheGridSend                    15
Cache Agent     1019    0x089fb020  CacheGridSend                    16
Cache Agent     1019    0x08a619f8  CacheGridSend                    17
Cache Agent     1019    0x08ace538  CacheGridRec                     18
Cache Agent     1019    0x08b42e88  CacheGridRec                     19
Cache Agent     1019    0x08bb77d8  CacheGridRec                     20
Cache Agent     1019    0x08c2c128  CacheGridRec                     21
Cache Agent     1019    0x08ca0a78  CacheGridRec                     22
Cache Agent     1019    0x08d153c8  CacheGridRec                     23
Cache Agent     1019    0x08d89d18  CacheGridRec                     24
Cache Agent     1019    0x08dfe668  CacheGridRec                     25
Cache Agent     1019    0x08e72fb8  CacheGridRec                     26
Cache Agent     1019    0x08ee8020  CacheGridRec                     27
Cache Agent     1019    0x08f5d088  CacheGridRec                     28
Cache Agent     1019    0x08fd23f8  CacheGridRec                     29
Cache Agent     1019    0x09047768  CacheGridRec                     30
Replication     18051   0x08c3d900  RECEIVER                          8
Replication     18051   0x08b53298  REPHOLD                           9
Replication     18051   0x08af8138  REPLISTENER                      10
Replication     18051   0x08a82f20  LOGFORCE                         11
Replication     18051   0x08bce660  TRANSMITTER                      12
Subdaemon       9822    0x080a2180  Manager                        2032
Subdaemon       9822    0x080ff260  Rollback                       2033
Subdaemon       9822    0x08548c38  Flusher                        2034
Subdaemon       9822    0x085e3b00  Monitor                        2035
Subdaemon       9822    0x0828fc10  Deadlock Detector              2036
Subdaemon       9822    0x082ead70  Checkpoint                     2037
Subdaemon       9822    0x08345ed0  Aging                          2038
Subdaemon       9822    0x083a1030  Log Marker                     2039
Subdaemon       9822    0x083fc190  AsyncMV                        2040
Subdaemon       9822    0x084572f0  HistGC                         2041
Replication policy  : Manual
Replication agent is running.
Cache Agent policy  : Always
TimesTen's Cache agent is running for this data store
PL/SQL enabled.
------------------------------------------------------------------------

The information displayed by the ttStatus utility include the following that pertains to IMDB Cache for each TimesTen database in the installed instance:

  • The names of the cache agent process threads that are connected to the TimesTen database

  • The names of the replication agent process threads that are connected to the TimesTen database

  • Status on whether the cache agent is running

  • Status on whether the replication agent is running

  • The cache agent start policy

  • The replication agent start policy

For more information about the ttStatus utility, see "ttStatus" in Oracle TimesTen In-Memory Database Reference.

Cache agent and replication connections

When a connection from the cache agent to the Oracle database fails, the cache agent attempts to connect every 10 seconds. If the cache agent cannot connect to the Oracle database, the cache agent restarts after 10 minutes. This behavior repeats forever.

When a connection from the replication agent to the Oracle database fails, the replication agent attempts to reconnect to the Oracle database after 120 seconds. If it cannot reconnect after 120 seconds, the replication agent stops and does not restart.

If Fast Application Notification (FAN) is enabled on the Oracle database, the cache agent and the replication agent receive immediate notification of connection failures. If FAN is not enabled, the agents may wait until a TCP timeout occurs before becoming aware that the connection has failed.

If the Oracle Real Application Clusters (Oracle RAC) is enable on the Oracle database, along with FAN and Transparent Application Failover (TAF), then TAF manages the connection to a new Oracle instance. See Chapter 10, "Using Oracle In-Memory Database Cache in an Oracle RAC Environment".

Monitoring cache groups and cache grids

The following sections describe how to obtain information about cache grids and cache groups, and how to monitor the status of cache group operations:

Using the ttIsql utility's cachegroups command

You can obtain information about cache groups in a TimesTen database using the ttIsql utility's cachegroups command.

Example 7-3 ttIsql utility's cachegroups command

% ttIsql "DSN=cachealone1;UID=cacheuser;PWD=timesten;OraclePWD=oracle"
Command> cachegroups;

Cache Group CACHEUSER.RECENT_SHIPPED_ORDERS:

  Cache Group Type: Read Only
  Autorefresh: Yes
  Autorefresh Mode: Incremental
  Autorefresh State: On
  Autorefresh Interval: 1440 Minutes
  Autorefresh Status: ok
  Aging: Timestamp based uses column WHEN_SHIPPED lifetime 30 days cycle 24 hours on

  Root Table: ORATT.ORDERS
  Table Type: Read Only


Cache Group CACHEUSER.SUBSCRIBER_ACCOUNTS:

  Cache Group Type: Asynchronous Writethrough global (Dynamic)
  Autorefresh: No
  Aging: LRU on

  Root Table: ORATT.SUBSCRIBER
  Table Type: Propagate

Cache Group CACHEUSER.WESTERN_CUSTOMERS:

  Cache Group Type: User Managed
  Autorefresh: No
  Aging: No aging defined

  Root Table: ORATT.ACTIVE_CUSTOMER
  Where Clause: (oratt.active_customer.region = 'West')
  Table Type: Propagate

  Child Table: ORATT.ORDERTAB
  Table Type: Propagate

  Child Table: ORATT.ORDERDETAILS
  Where Clause: (oratt.orderdetails.quantity >= 5)
  Table Type: Not Propagate

  Child Table: ORATT.CUST_INTERESTS
  Table Type: Read Only

3 cache groups found.

The information displayed by the ttIsql utility's cachegroups command include:

  • Cache group type, including whether the cache group is dynamic or global

  • Autorefresh attributes (mode, state, interval) and status, if applicable

  • Aging policy, if applicable

  • Name of root table and, if applicable, name of child tables

  • Cache table WHERE clause, if applicable

  • Cache table attributes (read-only, propagate, not propagate)

For more information about the ttIsql utility's cachegroups command, see "ttIsql" in Oracle TimesTen In-Memory Database Reference.

Monitoring autorefresh operations on cache groups

TimesTen offers several mechanisms to obtain information and statistics about autorefresh operations on cache groups. See "Monitoring autorefresh cache groups" in Oracle TimesTen In-Memory Database Troubleshooting Guide.

Monitoring AWT cache groups

TimesTen offers several mechanisms to obtain information and statistics about operations in AWT cache groups. See "AWT performance monitoring" in Oracle TimesTen In-Memory Database Troubleshooting Guide.

Configuring a transaction log file threshold for AWT cache groups

The replication agent uses the transaction log to determine which updates on cache tables in AWT cache groups have been propagated to the cached Oracle tables and which updates have not. If updates are not being automatically propagated to Oracle because of a failure, transaction log files accumulate on disk. Examples of a failure that prevents propagation are that the replication agent is not running or the Oracle server is unavailable. For more information about accumulation of transaction log files, see "Monitoring accumulation of transaction log files" in Oracle TimesTen In-Memory Database Operations Guide.

You can call the ttCacheAWTThresholdSet built-in procedure as the cache administration user to set a threshold for the number of transaction log files that can accumulate before TimesTen stops tracking updates on cache tables in AWT cache groups. The default threshold is 0. This built-in procedure can only be called if the TimesTen database contains AWT cache groups.

After the threshold has been exceeded, you need to manually synchronize the cache tables with the cached Oracle tables using an UNLOAD CACHE GROUP statement followed by a LOAD CACHE GROUP statement. TimesTen may purge transaction log files even if they contain updates that have not been propagated to the cached Oracle tables.

Example 7-4 Setting a transaction log file threshold for AWT cache groups

In this example, if the number of transaction log files that contain updates on cache tables in AWT cache groups exceeds 5, TimesTen stops tracking updates and can then purge transaction log files that may contain unpropagated updates:

% ttIsql "DSN=cachealone1;UID=cacheuser;PWD=timesten;OraclePWD=oracle"
Command> CALL ttCacheAWTThresholdSet(5);

You can call the ttCacheAWTThresholdGet built-in procedure to determine the current transaction log file threshold setting:

Command> CALL ttCacheAWTThresholdGet;
< 5 >
Command> exit

Obtaining information for a cache grid

You can use the following mechanisms to display information on any cache grid and their grid members:

  • Call the ttGridInfo built-in procedure as the cache manager user to return the grid name, cache administration user name, operating system platform, and TimesTen major release number for a specified cache grid or all existing cache grids:

    % ttIsql "DSN=cachealone1;UID=cacheuser;PWD=timesten;OraclePWD=oracle"
    Command> CALL ttGridInfo('ttGrid');
    < TTGRID, CACHEUSER, Linux Intel x86, 32-bit, 11, 2, 1 >
    

    For more information about the ttGridInfo built-in procedure, see "ttGridInfo" in Oracle TimesTen In-Memory Database Reference.

  • Call the ttGridNodeStatus built-in procedure as the cache manager user to return the grid name, member ID, node number, indication of whether the node is attached to the grid, host name, node name, IP address, and cache agent TCP/IP port number for all members of a specified cache grid or all existing cache grids:

    % ttIsql "DSN=cachealone1;UID=cacheuser;PWD=timesten;OraclePWD=oracle"
    Command> CALL ttGridNodeStatus;
    < TTGRID, 1, 1, T, sys1, TTGRID_alone1_1, 140.87.0.201, 5001, <NULL>, <NULL>,
    <NULL>, <NULL>, <NULL> >
    < TTGRID, 2, 1, T, sys2, TTGRID_alone2_2, 140.87.0.202, 5002, <NULL>, <NULL>,
    <NULL>, <NULL>, <NULL> >
    < TTGRID, 3, 1, T, sys3, TTGRID_cacheact_3A, 140.87.0.203, 5003, T, sys4,
    TTGRID_cachestand_3B, 140.87.0.204, 5004 >
    

    For more information about the ttGridNodeStatus built-in procedure, see "ttGridNodeStatus" in Oracle TimesTen In-Memory Database Reference.

Suspending global AWT cache group operations

You can use the ttGridGlobalCGSuspend built-in procedure to temporarily block these operations for global AWT cache groups:

  • Dynamic loading

  • Deleting cache instances

Use the ttGridGlobalCGResume built-in procedure to re-enable these operations.

Tracking DDL statements issued on cached Oracle tables

When a DDL statement is issued on a cached Oracle table, this statement can be tracked in the Oracle TT_version_DDL_L table when the Oracle TT_version_schema-ID_DDL_T trigger is fired to insert a row into the table, where version is an internal TimesTen version number and schema-ID is the ID of user that owns the cached Oracle table. A trigger is created for each Oracle user that owns cached Oracle tables. One DDL tracking table is created to store DDL statements issued on any cached Oracle table. The cache administration user owns the TT_version_DDL_L table and the TT_version_schema-ID_DDL_T trigger.

To enable tracking of DDL statements issued on cached Oracle tables, call the ttCacheDDLTrackingConfig built-in procedure as the cache manager user. By default, DDL statements are not tracked.

For more information about the ttCacheDDLTrackingConfig built-in procedure, see "ttCacheDDLTrackingConfig" in Oracle TimesTen In-Memory Database Reference.

Example 7-5 Enabling tracking of DDL statements issued on cached Oracle tables

% ttIsql "DSN=cachealone1;UID=cacheuser;PWD=timesten;OraclePWD=oracle"
Command> CALL ttCacheDDLTrackingConfig('enable');

The TT_version_DDL_L table and TT_version_schema-ID_DDL_T trigger are automatically created if the cache administration user has been granted the set of required privileges including RESOURCE and CREATE ANY TRIGGER. These Oracle objects are created when you create a cache group after tracking of DDL statements has been enabled.

If you manually created the Oracle objects used to manage the caching of Oracle data, you need to run the ttIsql utility's cachesqlget command with the ORACLE_DDL_TRACKING option and the INSTALL flag as the cache manager user. This command should be run for each Oracle user that owns cached Oracle tables that you want to track DDL statements on. Running this command generates a SQL*Plus script used to create the TT_version_DDL_L table and TT_version_schema-ID_DDL_T trigger in the Oracle database.

After generating the script, use SQL*Plus to run the script as the sys user.

Example 7-6 Creating DDL tracking table and trigger when Oracle objects were manually created

In this example, the SQL*Plus script generated by the ttIsql utility's cachesqlget command is saved to the /tmp/trackddl.sql file. The owner of the cached Oracle table oratt is passed as an argument to the command.

% ttIsql "DSN=cachealone1;UID=cacheuser;PWD=timesten;OraclePWD=oracle"
Command> cachesqlget ORACLE_DDL_TRACKING oratt INSTALL /tmp/trackddl.sql;
Command> exit

% sqlplus sys as sysdba
Enter password: password
SQL> @/tmp/trackddl
SQL> exit

When you need to issue DDL statements such as CREATE, DROP or ALTER on cached Oracle tables in order to make changes to the Oracle schema, drop the affected cache groups before you modify the Oracle schema. Otherwise operations such as autorefresh may fail. You do not need to drop cache groups if you are altering the Oracle table to add a column. To issue other DDL statements for Oracle tables, first perform the following tasks:

  1. Use DROP CACHE GROUP statements to drop all cache groups that cache the affected Oracle tables. If you are dropping an AWT cache group, use the ttRepSubscriberWait built-in procedure to make sure that all committed updates on the cache tables have been propagated to the cached Oracle tables before the cache group is dropped.

    % ttIsql "DSN=cachealone1;UID=cacheuser;PWD=timesten;OraclePWD=oracle"
    Command> CALL ttRepSubscriberWait('_AWTREPSCHEME','TTREP','_ORACLE','sys1',-1);
    
  2. Stop the cache agent.

  3. Make the desired changes to the Oracle schema.

  4. Use CREATE CACHE GROUP statements to re-create the cache groups, if feasible.

If you want to truncate an Oracle table that is cached in an autorefresh cache group, perform the following tasks:

  1. Use an ALTER CACHE GROUP statement to set the cache group's autorefresh state to PAUSED.

  2. Truncate the Oracle table.

  3. Manually refresh the cache group using a REFRESH CACHE GROUP statement without a WHERE or WITH ID clause.

Autorefresh operations resume after you refresh the cache group.

You can run the TimesTen_install_dir/oraclescripts/cacheInfo.sql SQL*Plus script as the cache administration user to display information about the Oracle objects used to track DDL statements issued on cached Oracle tables:

% cd TimesTen_install_dir/oraclescripts
% sqlplus cacheuser/oracle
SQL> @cacheInfo
*************DDL Tracking Object Information  ***************
Common DDL Log Table Name: TT_05_DDL_L
DDL Trigger Name: TT_05_315_DDL_T
Schema for which DDL Trigger is tracking: ORATT
Number of cache groups using the DDL Trigger: 10
****************************

The information returned for each Oracle user that owns cached Oracle tables includes the name of the DDL tracking table, the name of its corresponding DDL trigger, the name of the user that the DDL trigger is associated with, and the number of cache groups that cache a table owned by the user associated with the DDL trigger.

If a particular table is cached in more than one grid member, each grid member contributes to the cache group count. An active standby pair counts as one grid member. If a cache group contains more than one cache table, each cache table owned by the user associated with the DDL trigger contributes to the cache group count.

Managing a caching environment with Oracle objects

For an autorefresh cache group, TimesTen creates a change log table and trigger in the Oracle database for each cache table in the cache group. The trigger is fired for each committed insert, update or delete operation on the cached Oracle table. The trigger records the primary key of the updated rows in the change log table. The cache agent periodically scans the change log table for updated keys and then joins this table with the cached Oracle table to get a snapshot of the latest updates.

The Oracle objects used to process autorefresh operations can be automatically created by TimesTen as described in "Automatically create Oracle objects used to manage caching of Oracle data" when you create a cache group with the AUTOREFRESH MODE INCREMENTAL cache group attribute. Alternatively, you can manually create these objects as described in "Manually create Oracle objects used to manage caching of Oracle data" before performing any cache grid or cache group operation if, for security purposes, you do not want to grant the RESOURCE and CREATE ANY TRIGGER privileges to the cache administration user required to automatically create these objects.

Before the Oracle objects can be automatically or manually created, you must:

For each cache administration user, TimesTen creates the following Oracle tables, where version is an internal TimesTen version number and object-ID is the ID of the cached Oracle table:

Table NameDescription
TT_version_AGENT_STATUSCreated when the first cache group is created. Stores information about each Oracle table cached in an autorefresh cache group.
TT_version_AR_PARAMSCreated when the cache administration user name and password is set. Stores the action to take when the cache administration user's tablespace is full.
TT_version_CACHE_STATSCreated when the cache administration user name and password is set.
TT_version_DATABASESCreated when the cache administration user name and password is set. Stores the autorefresh status for all TimesTen databases that cache data from the Oracle database.
TT_version_DB_PARAMSCreated when the cache administration user name and password is set. Stores the cache agent timeout, recovery method for dead cache groups, and the cache administration user's tablespace usage threshold.
TT_version_DBSPECIFIC_PARAMSInternal use.
TT_version_DDL_LCreated when the cache administration user name and password is set. Tracks DDL statements issued on cached Oracle tables.
TT_version_DDL_TRACKINGCreated when the cache administration user name and password is set. Stores a flag indicating whether tracking of DDL statements on cached Oracle tables is enabled or disabled.
TT_version_REPACTIVESTANDBYCreated when the first AWT cache group is created. Tracks the state and roles of TimesTen databases containing cache tables in an AWT cache group that are replicated in an active standby pair replication scheme.
TT_version_REPPEERSCreated when the first AWT cache group is created. Tracks the time and commit sequence number of the last update on the cache tables that was asynchronously propagated to the cached Oracle tables.
TT_version_SYNC_OBJSCreated when the first cache group is created.
TT_version_USER_COUNTCreated when the first cache group is created. Stores information about each cached Oracle table.
TT_version_object-ID_LOne change log table is created per Oracle table cached in an autorefresh cache group when the cache group is created. Tracks updates on the cached Oracle table.

For each cache administration user, TimesTen creates the following Oracle triggers, where version is an internal TimesTen version number, object-ID is the ID of the cached Oracle table, and schema-ID is the ID of user who owns the cached Oracle table:

Trigger NameDescription
TT_version_REPACTIVESTANDBY_TCreated when the first AWT cache group is created. When fired, inserts rows into the TT_version_REPACTIVESTANDBY table.
TT_version_object-ID_TOne trigger is created per Oracle table cached in an autorefresh cache group when the cache group is created. Fired for each insert, delete or update operation issued on the cached Oracle table to track operations in the TT_version_object-ID_L change log table.
TT_version_schema-ID_DDL_TOne trigger for each user who owns cached Oracle tables. Created when a cache group is created after tracking of DDL statements has been enabled. Fired for each DDL statement issued on a cached Oracle table to track operations in the TT_version_DDL_L table.

The Oracle objects used to process asynchronous writethrough operations can be automatically created by TimesTen as described in "Automatically create Oracle objects used to manage caching of Oracle data" when you create an AWT cache group. Alternatively, you can manually create these objects as described in "Manually create Oracle objects used to manage caching of Oracle data" before performing any cache grid or cache group operation if, for security purposes, you do not want to grant the RESOURCE privilege to the cache administration user required to automatically create these objects.

For the timesten user, TimesTen creates the following Oracle tables:

Table NameDescription
TT_GRIDIDCreated by running the SQL*Plus script initCacheGlobalSchema.sql. Stores the ID number assigned to the most recently created cache grid.
TT_GRIDINFOCreated by running the SQL*Plus script initCacheGlobalSchema.sql. Stores the grid name, grid ID, and name of the cache administration user for all existing cache grids.

For each cache administration user, TimesTen creates the following Oracle tables, where version is an internal TimesTen version number and grid-ID is the ID number of the cache grid:

Table NameDescription
TT_version_grid-name_grid-IDCGNODEIDOne table is created per cache grid when a grid is created. Stores the operating system name and version, and TimesTen release number.
TT_version_grid-name_grid-IDCGNODEINFOOne table is created per cache grid when a grid is created. Stores the host name, member name, IP address, and cache agent TCP/IP port of all attached grid members.
TT_version_grid-name_grid-IDCGGROUPDEFSOne table is created per cache grid when a grid is created. Stores the cache group name, owner, reference count and SQL text of all global cache groups in standalone TimesTen databases or active standby pairs that are associated with the cache grid.

Impact of failed autorefresh operations on TimesTen databases

A change log table is created in the cache administration user's tablespace for each Oracle table that is cached in an autorefresh cache group. For each update operation issued on these cached Oracle tables, a row is inserted into their change log table to keep track of updates that need to be applied to the TimesTen cache tables upon the next incremental autorefresh cycle. TimesTen periodically deletes rows in the change log tables that have been applied to the cache tables.

An Oracle table cannot be cached in more than one cache group within a TimesTen database. However, an Oracle table can be cached in more than one TimesTen database. This results in an Oracle table corresponding to multiple TimesTen cache tables. If updates on cached Oracle tables are not being automatically refreshed into all of their corresponding cache tables because the cache agent is not running on one or more of the TimesTen databases that the Oracle tables are cached in, rows in their change log tables are not deleted by default. The cache agent may not be running on a particular TimesTen database because the agent was explicitly stopped or never started, the database was destroyed, or the installed instance that the database resides in is down. As a result, rows accumulate in the change log tables and degrade the performance of autorefresh operations on cache tables in TimesTen databases where the cache agent is running. This can also cause the cache administration user's tablespace to fill up.

You can set a cache agent timeout to prevent rows from accumulating in the change log tables and not being deleted. The following criteria must be met in order for TimesTen to delete rows in the change log tables when the cache agent is not running on a TimesTen database and a cache agent timeout is set:

  • Oracle tables are cached in autorefresh cache groups within more than one TimesTen database

  • The cache agent is running on at least one of the TimesTen databases but is not running on at least another database

  • Rows in the change log tables have been applied to the cache tables on all TimesTen databases where the cache agent is running

  • For those databases where the cache agent is not running, the agent process has been down for a period of time that exceeds the cache agent timeout

Call the ttCacheConfig built-in procedure as the cache manager user from any of the TimesTen databases that cache data from the Oracle database. Pass the AgentTimeout string to the Param parameter and the timeout setting as a numeric string to the Value parameter. Do not pass in any values to the tblOwner and tblName parameters as they are not applicable to setting a cache agent timeout.

Example 7-7 Setting a cache agent timeout

In the following example, the cache agent timeout is set to 900 seconds (15 minutes):

% ttIsql "DSN=cachealone1;UID=cacheuser;PWD=timesten;OraclePWD=oracle"
Command> CALL ttCacheConfig('AgentTimeout',,,'900');

To determine the current cache agent timeout setting, call ttCacheConfig passing only the AgentTimeout string to the Param parameter:

Command> CALL ttCacheConfig('AgentTimeout');
< AgentTimeout, <NULL>, <NULL>, 900 >

The default cache agent timeout is 0 seconds which means rows in the change log tables are not deleted until they have been applied to all its cache tables. If you set the cache agent timeout to a value between 1 and 600 seconds, the timeout is set to 600 seconds. The cache agent timeout applies to all TimesTen databases that cache data from the same Oracle database and have the same cache administration user name setting.

When determining a proper cache agent timeout setting, consider the time it takes to load the TimesTen database into memory, the time to start the cache agent process, potential duration of network outages, and anticipated duration of planned maintenance activities.

Each TimesTen database, and all of its autorefresh cache groups have an autorefresh status to determine whether any deleted rows from the change log tables were not applied to the cache tables in the cache groups. If rows were deleted from the change log tables and not applied to some cache tables because the cache agent on the database was down for a period of time that exceeded the cache agent timeout, those cache tables are no longer synchronized with the cached Oracle tables. Subsequent updates on the cached Oracle tables are not automatically refreshed into the cache tables until the accompanying cache group is recovered.

The following are the possible statuses for an autorefresh cache group:

  • ok: All of the deleted rows from the change log tables were applied to its cache tables. Incremental autorefresh operations continue to occur on the cache group.

  • dead: Some of the deleted rows from the change log tables were not applied to its cache tables so the cache tables are not synchronized with the cached Oracle tables. Autorefresh operations have ceased on the cache group and will not resume until the cache group has been recovered.

  • recovering: The cache group is being recovered. Once recovery completes, the cache tables are synchronized with the cached Oracle tables, the cache group's autorefresh status is set to ok, and incremental autorefresh operations resume on the cache group.

The following are the possible autorefresh statuses for a TimesTen database:

  • alive: All of its autorefresh cache groups have an autorefresh status of OK.

  • dead: All of its autorefresh cache groups have an autorefresh status of dead.

  • recovering: At least one of its autorefresh cache groups have an autorefresh status of recovering.

If the cache agent on a TimesTen database is down for a period of time that exceeds the cache agent timeout, the autorefresh status of the database is set to dead. Also, the autorefresh status of all autorefresh cache groups within that database are set to dead.

If you have enabled SNMP traps, a trap is thrown when the autorefresh status of a database is set to dead.

Call the ttCacheDbCgStatus built-in procedure as the cache manager user to determine the autorefresh status of a cache group and its accompanying TimesTen database. Pass the owner of the cache group to the cgOwner parameter and the name of the cache group to the cgName parameter.

Example 7-8 Determining the autorefresh status of a cache group and TimesTen database

In the following example, the autorefresh status of the database is alive and the autorefresh status of the cacheuser.customer_orders read-only cache group is ok:

% ttIsql "DSN=cachealone1;UID=cacheuser;PWD=timesten;OraclePWD=oracle"
Command> CALL ttCacheDbCgStatus('cacheuser','customer_orders');
< alive, ok >

To view only the autorefresh status of the database and not of a particular cache group, call ttCacheDbCgStatus without any parameters:

Command> CALL ttCacheDbCgStatus;
< dead, <NULL> >

If the autorefresh status of a cache group is ok, its cache tables are being automatically refreshed based on its autorefresh interval. If the autorefresh status of a database is alive, the autorefresh status of all its autorefresh cache groups are ok.

If the autorefresh status of a cache group is dead, its cache tables are no longer being automatically refreshed when updates are committed on the cached Oracle tables. The cache group must be recovered in order to resynchronize the cache tables with the cached Oracle tables.

You can configure a recovery method for cache groups whose autorefresh status is dead.

Call the ttCacheConfig built-in procedure as the cache manager user from any of the TimesTen databases that cache data from the Oracle database. Pass the DeadDbRecovery string to the Param parameter and the recovery method as a string to the Value parameter. Do not pass in any values to the tblOwner and tblName parameters as they are not applicable to setting a recovery method for dead cache groups.

The following are the valid recovery methods:

  • Normal: When the cache agent starts, a full autorefresh operation is performed on cache groups whose autorefresh status is dead in order to recover those cache groups. This is the default recovery method.

  • Manual: For each explicitly loaded cache group whose autorefresh status is dead, a REFRESH CACHE GROUP statement must be issued in order to recover these cache groups after the cache agent starts.

    For each dynamic cache group whose autorefresh status is dead, a REFRESH CACHE GROUP or UNLOAD CACHE GROUP statement must be issued in order to recover these cache groups after the cache agent starts.

  • None: Cache groups whose autorefresh status is dead must be dropped and then re-created after the cache agent starts in order to recover them.

Example 7-9 Configuring the recovery method for dead cache groups

In the following example, the recovery method is set to Manual for cache groups whose autorefresh status is dead:

% ttIsql "DSN=cachealone1;UID=cacheuser;PWD=timesten;OraclePWD=oracle"
Command> CALL ttCacheConfig('DeadDbRecovery',,,'Manual');

To determine the current recovery method for dead cache groups, call ttCacheConfig passing only the DeadDbRecovery string to the Param parameter:

Command> CALL ttCacheConfig('DeadDbRecovery');
< DeadDbRecovery, <NULL>, <NULL>, manual >

The recovery method applies to all autorefresh cache groups in all TimesTen databases that cache data from the same Oracle database and have the same cache administration user name setting.

If you have enabled SNMP traps, a trap is thrown when the cache agent starts and the recovery method is set to Manual or None to alert you to manually issue a statement such as REFRESH CACHE GROUP or DROP CACHE GROUP in order to recover cache groups in the database whose autorefresh status is dead.

When a cache group begins the recovery process, its autorefresh status is changed from dead to recovering, and the status of the accompanying TimesTen database is changed to recovering, if it is currently dead.

After the cache group has been recovered, its autorefresh status is changed from recovering to ok. Once all cache groups have been recovered and their autorefresh statuses are ok, the status of the accompanying TimesTen database is changed from recovering to alive.

A full autorefresh operation requires more system resources to process than an incremental autorefresh operation when there is a small volume of updates to refresh and a large number of rows in the cache tables. If you need to bring a TimesTen database down for maintenance activities and the volume of updates anticipated during the downtime on the Oracle tables that are cached in autorefresh cache groups is small, you can consider temporarily setting the cache agent timeout to 0. When the database is brought back up and the cache agent restarted, incremental autorefresh operations resumes on cache tables in autorefresh cache groups. Full autorefresh operations are avoided because the autorefresh status on the accompanying cache groups were not changed from ok to dead so those cache groups do not need to go through the recovery process. Make sure to set the cache agent timeout back to its original value once the database is back up and the cache agent has been started.

Dropping Oracle objects used by autorefresh cache groups

If a TimesTen database that contains autorefresh cache groups becomes unavailable, Oracle objects such as change log tables and triggers used to implement autorefresh operations continue to exist in the Oracle database. A TimesTen database is unavailable, for example, when the TimesTen system is taken offline or the database has been destroyed without dropping its autorefresh cache groups.

Oracle objects used to implement autorefresh operations also continue to exist in the Oracle database when a TimesTen database is no longer being used but still contains autorefresh cache groups. Rows continue to accumulate in the change log tables. This impacts autorefresh performance on other TimesTen databases. Therefore, it is desirable to drop these Oracle objects associated with the unavailable or abandoned TimesTen database.

Run the TimesTen_install_dir/oraclescripts/cacheCleanUp.sql SQL*Plus script as the cache administration user to drop the Oracle objects used to implement autorefresh operations. The host name of the TimesTen system and the TimesTen database path name are passed as arguments to the cacheCleanUp.sql script. You can run the cacheInfo.sql script as the cache administration user to determine the host name of the TimesTen system and the database path name. The cacheInfo.sql script can also be used to determine whether any objects used to implement autorefresh operations exist in the Oracle database.

Example 7-10 Dropping Oracle objects for autorefresh cache groups

In the following example, the TimesTen database still contained one read-only cache group customer_orders with cache tables oratt.customer and oratt.orders when the database was dropped. The cacheCleanUp.sql script drops the change log tables and triggers associated with the two cache tables.

% cd TimesTen_install_dir/oraclescripts
% sqlplus cacheuser/oracle
SQL> @cacheCleanUp "sys1" "/users/OracleCache/alone1"

*****************************OUTPUT**************************************
Performing cleanup for object_id: 69959 which belongs to table : CUSTOMER
Executing: delete from tt_05_agent_status where host = sys1 and datastore =
/users/OracleCache/alone1 and object_id = 69959
Executing: drop table tt_05_69959_L
Executing: drop trigger tt_05_69959_T
Executing: delete from tt_05_user_count where object_id = object_id1
Performing cleanup for object_id: 69966 which belongs to table : ORDERS
Executing: delete from tt_05_agent_status where host = sys1 and datastore =
/users/OracleCache/alone1 and object_id = 69966
Executing: drop table tt_05_69966_L
Executing: drop trigger tt_05_69966_T
Executing: delete from tt_05_user_count where object_id = object_id1
**************************************************************************

Monitoring the cache administration user's tablespace

The following sections describe how to manage the cache administration user's tablespace:

Receiving notification on tablespace usage

In order to avoid a full tablespace, you can configure TimesTen to return a warning to the application when an update operation such as an UPDATE, INSERT or DELETE statement is issued on cached Oracle tables and causes the usage of the cache administration user's tablespace to exceed a specified threshold.

Call the ttCacheConfig built-in procedure as the cache manager user from any of the TimesTen databases that cache tables from the Oracle database. Pass the TblSpaceThreshold string to the Param parameter and the threshold as a numeric string to the Value parameter. The threshold value represents the percentage of space used in the cache administration user's tablespace upon which a warning is returned to the application when an update operation is issued on a cached Oracle table. Do not pass in any values to the tblOwner and tblName parameters as they are not applicable to setting a warning threshold for the usage of the cache administration user's tablespace.

The cache administration user must be granted the SELECT privilege on the Oracle SYS.DBA_DATA_FILES table in order for the cache manager user to set a warning threshold on the cache administration user's tablespace usage, and for the cache administration user to monitor its tablespace to determine if the configured threshold has been exceeded.

Example 7-11 Setting a cache administration user's tablespace usage warning threshold

The following example configures a warning to be returned to the application that issues an update operation on a cached Oracle table if it results in the usage of the cache administration user's tablespace to exceed 80 percent:

% ttIsql "DSN=cachealone1;UID=cacheuser;PWD=timesten;OraclePWD=oracle"
Command> CALL ttCacheConfig('TblSpaceThreshold',,,'80');

To determine the current cache administration user's tablespace usage warning threshold, call ttCacheConfig passing only the TblSpaceThreshold string to the Param parameter:

Command> CALL ttCacheConfig('TblSpaceThreshold');
< TblspaceThreshold, <NULL>, <NULL>, 80 >

The default cache administration user's tablespace usage warning threshold is 0 percent which means that no warning is returned to the application regardless of the tablespace usage. The cache administration user's tablespace usage warning threshold applies to all TimesTen databases that cache tables from the same Oracle database and have the same cache administration user name setting.

If you have enabled SNMP traps, a trap is thrown when the cache administration user's tablespace usage has exceeded the configured threshold.

Recovering from a full tablespace

By default, when the cache administration user's tablespace is full, an error is returned to the Oracle application when it attempts a DML operation, such as an UPDATE, INSERT or DELETE statement, on a particular cached Oracle table.

Rather than TimesTen returning an error to the Oracle application when the<&9a id="sthref653"> cache administration user's tablespace is full, you can configure TimesTen to delete existing rows from the change log tables to make space for new rows when an update operation is issued on a particular cached Oracle table. If some of the deleted change log table rows have not been applied to the TimesTen cache tables, a full autorefresh operation is performed on those cache tables in each TimesTen database that contains the tables upon the next autorefresh cycle.

Call the ttCacheConfig built-in procedure as the cache manager user from any of the TimesTen databases that cache tables from the Oracle database. Pass the TblSpaceFullRecovery string to the Param parameter, the owner and name of the cached Oracle table to the tblOwner and tblName parameters, respectively, on which you want to configure an action to take if the cache administration user's tablespace becomes full, and the action itself as a string to the Value parameter.

The following are the valid actions:

  • None: Return an Oracle error to the application when an update operation is issued on the cached Oracle table. This is the default action.

  • Reload: Delete rows from the change log table and perform a full autorefresh operation on the cache table upon the next autorefresh cycle when an update operation is issued on the cached Oracle table.

Example 7-12 Configuring an action when the cache administration user's tablespace becomes full

In the following example, rows are deleted from the change log table and a full autorefresh operation is performed on the cache table upon the next autorefresh cycle when an update operation is issued on the oratt.customer cached Oracle table while the cache administration user's tablespace is full:

% ttIsql "DSN=cachealone1;UID=cacheuser;PWD=timesten;OraclePWD=oracle"
Command> CALL ttCacheConfig('TblSpaceFullRecovery','oratt','customer','Reload');

To determine the current action to take when an update operation is issued on a particular cached Oracle table if the cache administration user's tablespace is full, call ttCacheConfig passing only the TblSpaceFullRecovery string to the Param parameter, and the owner and name of the cached Oracle table to the tblOwner and tblName parameters, respectively:

Command> CALL ttCacheConfig('TblSpaceFullRecovery','oratt','customer');
< TblSpaceFullRecovery, ORATT, CUSTOMER, reload >

The action to take when update operations are issued on a cached Oracle table while the cache administration user's tablespace is full applies to all TimesTen databases that cache tables from the same Oracle database and have the same cache administration user name setting,

If you have enabled SNMP traps, a trap is thrown when an update operation is issued on a cached Oracle table and the cache administration user's tablespace is full.

Recovering after failure of a grid node

When a standalone database grid member fails, the cache agent automatically restarts if the cache agent start policy is manual or always. The grid member is automatically reattached to the grid when the database recovers. If the cache agent start policy is norestart, you must restart the cache agent and then call the ttGridAttach built-in procedure to reattach the member to the grid. See "Set a cache agent start policy".

You can verify that a standalone database grid member is attached to the grid by calling the ttRepStateGet built-in procedure. If it is attached, you should see this output:

Command> CALL ttRepStateGet;
< IDLE, AVAILABLE >
1 row found.

If the active or the standby database node in an active standby pair grid member fails when Oracle Clusterware is managing the nodes in the grid, the grid node is automatically reattached to the grid when the cache agent restarts. For more information about how Oracle Clusterware handles failures, see "Recovering from failures" in Oracle TimesTen In-Memory Database Replication Guide.

If the active standby pair grid member is not managed by Oracle Clusterware, then perform the steps in "Recovering from a failure of the active database" or "Recovering from a failure of the standby database" in Oracle TimesTen In-Memory Database Replication Guide. If the cache agent start policy is manual or always, the grid node is automatically reattached to the grid after the database recovers.). If the cache agent start policy is norestart, call the ttGridAttach built-in procedure to reattach the member to the grid.

Call the ttRepStateGet built-in procedure from the active database to verify that the active database is available and that the active standby pair is attached to the grid:

Command> CALL ttRepStateGet;
< ACTIVE, AVAILABLE >
1 row found.

For more information, see "ttRepStateGet" in Oracle TimesTen In-Memory Database Reference.

A multinode failure can occur because of a hardware failure or network failure, for example. After a multinode failure occurs, call the ttGridAttach built-in procedure for each member that needs to be reattached. The operation will fail for each grid member until you call the built-in procedure on the last grid member to be reattached. Call ttGridAttach again for the grid members that have not yet been attached and the operation will succeed. This sequence is necessary to prevent a "split-brain" situation with grid members being unaware of each other's states.

Backing up and restoring a database with cache groups

Databases containing cache groups can be backed up with the ttBackup utility. However, restoring this backup requires additional action as the restored data within the cache groups will be out of date and out of sync with the data in the backend Oracle database.

  • If the restored database will connect to the same backend Oracle database, then drop and recreate all cache groups in the restored TimesTen database. If they are static cache groups, you may be required to reload them. For dynamic cache groups, the reload is optional as data will be pulled in from Oracle as it is referenced.

  • If the restored database will connect to a different backend Oracle database than what it had originally connected with, then perform the following:

    1. Specify the cache administrator user name and password with the ttCacheUidPwdSet built-in procedure.

    2. Start the cache agent.

    3. Drop all cache groups. You may see errors reported, which can be ignored.

    4. Stop the cache agent.

    5. Execute the cacheCleanUp.sql SQL*Plus script against the new Oracle database to remove all leftover objects. Specify the host and path for the restored TimesTen database.

    6. Start the cache agent.

    7. Recreate and, if required, reload the cache groups.


    Note:

    If the restored TimesTen database is not able to connect to any backend Oracle database, then you will not be able to drop the cache groups or remove the cached data.

If another TimesTen database used to connect to the original backend Oracle database and will no longer connect and if all cache groups in the TimesTen database were not cleanly dropped, then execute the cacheCleanUp.sql SQL*Plus script against the original Oracle database to remove all leftover objects. Specify the host and path for the original TimesTen database.

PKwiR&&PKAAOEBPS/dcommon/prodbig.gif GIF87a!!!)))111BBBZZZsss{{ZRRcZZ!!1!91)JB9B9)kkcJJB991ssc絽Zcc!!{祽BZc!9B!c{!)c{9{Z{{cZB1)sJk{{Z{kBsZJ91)Z{!{BcsRsBc{9ZZk甽kBkR!BZ9c)JJc{!))BZks{BcR{JsBk9k)Zck!!BZ1k!ZcRBZcZJkBk1Z9c!R!c9kZRZRBZ9{99!R1{99R{1!1)c1J)1B!BJRkk{ƽ絵ތkk絵RRs{{{{JJsssBBkkk!!9ss{{ZZssccJJZZRRccRRZZ))cBBJJ99JJ!!c11991199Z11!c!!))Z!!!1BRck{)!cJBkZRZ,HP)XRÇEZ֬4jJ0 @ "8pYҴESY3CƊ@*U:lY0_0#  5tX1E: C_xޘeKTV%ȣOΏ9??:a"\fSrğjAsKJ:nOzO=}E1-I)3(QEQEQEQEQEQEQE֝Hza<["2"pO#f8M[RL(,?g93QSZ uy"lx4h`O!LŏʨXZvq& c՚]+: ǵ@+J]tQ]~[[eϸ (]6A&>ܫ~+כzmZ^(<57KsHf妬Ϧmnẁ&F!:-`b\/(tF*Bֳ ~V{WxxfCnMvF=;5_,6%S>}cQQjsOO5=)Ot [W9 /{^tyNg#ЄGsֿ1-4ooTZ?K Gc+oyڙoNuh^iSo5{\ܹ3Yos}$.nQ-~n,-zr~-|K4R"8a{]^;I<ȤL5"EԤP7_j>OoK;*U.at*K[fym3ii^#wcC'IIkIp$󿉵|CtĈpW¹l{9>⪦׺*ͯj.LfGߍԁw] |WW18>w.ӯ! VӃ :#1~ +މ=;5c__b@W@ +^]ևՃ7 n&g2I8Lw7uҭ$"&"b eZ":8)D'%{}5{; w]iu;_dLʳ4R-,2H6>½HLKܹR ~foZKZ࿷1[oZ7׫Z7R¢?«'y?A}C_iG5s_~^ J5?œ tp]X/c'r%eܺA|4ծ-Ե+ْe1M38Ǯ `|Kյ OVڅu;"d56, X5kYR<̭CiطXԮ];Oy)OcWj֩}=܅s۸QZ*<~%뺃ȶp f~Bðzb\ݳzW*y{=[ C/Ak oXCkt_s}{'y?AmCjޓ{ WRV7r. g~Q"7&͹+c<=,dJ1V߁=T)TR՜*N4 ^Bڥ%B+=@fE5ka}ędܤFH^i1k\Sgdk> ֤aOM\_\T)8靠㡮3ģR: jj,pk/K!t,=ϯZ6(((((((49 xn_kLk&f9sK`zx{{y8H 8b4>ÇНE|7v(z/]k7IxM}8!ycZRQ pKVr(RPEr?^}'ðh{x+ՀLW154cK@Ng C)rr9+c:׹b Жf*s^ fKS7^} *{zq_@8# pF~ [VPe(nw0MW=3#kȵz晨cy PpG#W:%drMh]3HH<\]ԁ|_W HHҡb}P>k {ZErxMX@8C&qskLۙOnO^sCk7ql2XCw5VG.S~H8=(s1~cV5z %v|U2QF=NoW]ո?<`~׮}=ӬfԵ,=;"~Iy7K#g{ñJ?5$y` zz@-~m7mG宝Gٱ>G&K#]؃y1$$t>wqjstX.b̐{Wej)Dxfc:8)=$y|L`xV8ߙ~E)HkwW$J0uʟk>6Sgp~;4֌W+חc"=|ř9bc5> *rg {~cj1rnI#G|8v4wĿhFb><^ pJLm[Dl1;Vx5IZ:1*p)إ1ZbAK(1ׅ|S&5{^ KG^5r>;X׻K^? s fk^8O/"J)3K]N)iL?5!ƾq:G_=X- i,vi2N3 |03Qas ! 7}kZU781M,->e;@Qz T(GK(ah(((((((Y[×j2F}o־oYYq $+]%$ v^rϭ`nax,ZEuWSܽ,g%~"MrsrY~Ҿ"Fت;8{ѰxYEfP^;WPwqbB:c?zp<7;SBfZ)dϛ; 7s^>}⍱x?Bix^#hf,*P9S{w[]GF?1Z_nG~]kk)9Sc5Ո<<6J-ϛ}xUi>ux#ţc'{ᛲq?Oo?x&mѱ'#^t)ϲbb0 F«kIVmVsv@}kҡ!ˍUTtxO̧]ORb|2yԵk܊{sPIc_?ħ:Ig)=Z~' "\M2VSSMyLsl⺿U~"C7\hz_ Rs$~? TAi<lO*>U}+'f>7_K N s8g1^CeКÿE ;{+Y\ O5|Y{/o+ LVcO;7Zx-Ek&dpzbӱ+TaB0gNy׭ 3^c T\$⫫?F33?t._Q~Nln:U/Ceb1-im WʸQM+VpafR3d׫é|Aү-q*I P7:y&]hX^Fbtpܩ?|Wu󭏤ʫxJ3ߴm"(uqA}j.+?S wV ~ [B&<^U?rϜ_OH\'.;|.%pw/ZZG'1j(#0UT` Wzw}>_*9m>󑓀F?EL3"zpubzΕ$+0܉&3zڶ+jyr1QE ( ( ( ( ( ( ( (UIdC0EZm+]Y6^![ ԯsmܶ捆?+me+ZE29)B[;я*wGxsK7;5w)}gH~.Ɣx?X\ߚ}A@tQ(:ͧ|Iq(CT?v[sKG+*רqҍck <#Ljα5݈`8cXP6T5i.K!xX*p&ќZǓϘ7 *oƽ:wlຈ:Q5yIEA/2*2jAҐe}k%K$N9R2?7ýKMV!{W9\PA+c4w` Wx=Ze\X{}yXI Ү!aOÎ{]Qx)#D@9E:*NJ}b|Z>_k7:d$z >&Vv󃏽WlR:RqJfGإd9Tm(ҝEtO}1O[xxEYt8,3v bFF )ǙrPNE8=O#V*Cc𹾾&l&cmCh<.P{ʦ&ۣY+Gxs~k5$> ӥPquŽўZt~Tl>Q.g> %k#ú:Kn'&{[yWQGqF}AЅ׮/}<;VYZa$wQg!$;_ $NKS}“_{MY|w7G!"\JtRy+贾d|o/;5jz_6fHwk<ѰJ#]kAȎ J =YNu%dxRwwbEQEQEQEQEQEQEQEQEQE'fLQZ(1F)hQ@X1KEQE-Q@ 1KE3h=iPb(((1GjZ(-ʹRPbR@ 1KE7`bڒyS0(-&)P+ ڎԴP11F)h&:LRmQ@Q@Š(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((PTz=2K--cFI V]t>[mMMt.p G7zwp]ɝA G@((/~٣C7(+9%vSADZ ặXTeu# 8 s@Q_"|Lok~ b!u8<1)$rt{=wG,ާy43/c'PV~'ypo3g=EhQUo;8,.໵;&A"6  88 £մ>P[G4ʍ3d ',r`zZEe]T\ޛ]PZ=,Fsr*ƛiͻ\iz KYU pJ3=\nn^i}FeC`q@(|<6Ow YEpjXGn;0緥}Ex3ax\u4SwyyEFKuxEks[ V M9;,HQEaO \Eoo]ipLdxnQEy:)~2u߉xݦb2헫n=8*iͻ\iz KYU pJ3=WԼK okzm;䌀dc@ORմn5MBp%8'Ƥ㼰L $0? ;IaXTV^]F[}S[lgd]$LW$d Ђxn⸷9$l]H #U{=2K--cFIzotfoMPGkt\3(R+/R.\-3X&+2qF}jQT[MmK-/W(Z̲lTq*ko-ıH^I$`I$$|YN;;iWwRgd0^#' N'(((((((((((((PTz>6!J#???6޺Huw҈^ӵG>i}܁!ovWڌwXO| ?j~I7m߾=h_;ޡ> MpQ qqGͤ~ڽԒAi.RG-َY#r /`A%wGoQ_nļApş [@9O]|'=zѣ.u8.ĈY *IUBoM{]̹3kh'cRq*hmdT7 x{PxSlj<}7Tֵ$󦷓THVJ c!W;B?E?(|S@aԴ=A.\BI$1LcIm?a=6='bPVpA$;02w;6O+KFifuLYP72F($O*ZѾV=9$ 6%_RJwn -&h'cRװPe_V^\_]?\xkF3rORJ[. 'Rp+5zW1-QȨ00u1ƿi:ff,"iSF@sg?^<-b21.N˹3x5gWIծ|sIAw9,Y` +='CGװW~>*5 KLK%- g{B\,QSVh z 1]ir]M)LdAr9BX8Ҽ{&5^QMΥw\ 0Fq+8EzG?i$kZԚNKw*̱ UFf@܃ʁ(?kybI Hp## Pkʷ S6Hخe`R8ЛQ1h_mዘ!VWc|9,F 'uRPJʩ$"8iW-HpO4 #?cooa³‘˴6Wiwq vw?±h/qij(MkZwmu2 rI'1 g777r^izͿ,Iw񐠕*9ŏ Cm^K?,֗Iܼï/z?:O,>8?v B8bC/BNA  O4fo>7Fk\AK/qkE{a3.xhe0m$-r3+|v<6 ?E]@>fābk|/W[O:\N+iiU#$t+e}T6C4hu_iگA8|=NJ>Z{<rc2)#$H9S?V:1Hл<*K` =umx|&IEK_$|@d@eQ@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Džm{Q;?>Kγ5|yE랕c[4:,gEv 9R ([XYЛڊQgx[FEg߫Daq`FvGlQ@Q@?mQ/?"Tμ5|9v鎵EO h.ӣ,keO5À@9BF?lQEr!u^ cD{dg߀>fB `(vq& x]]Cur;,J;drX qq5Q@$:; rv&T^<8 cP=kO] =B<;m'hvօ\^GZD̛܌a'X3MN \[bǖ$I<ï^k$#hho/ڦMT(\]y>LO,!#v*zu]CkoQH8Ppb)Uiw6w X8 A\CD29Gbq^Q@?mQ/?"Tμ5|9v鎵_Ğ׋i]͖@pІ83] hӤk$fO5ː9rOEa jܾ]'0F'8IҊïOAL{?%=|;m#{~2_q;yx[FvgX*yz1b t]HwI,6PI9cFiaXAej;!Ln Vl9'Т0KAi$^"]R,NvZ G]e]Fs+3MN \[bǖ$I o?{cmhEv<ݑy#q(<'_I>O[Ɖ,֗,XO;]Y+@|I&’ɪkNQTG#*݀;J+>ӭĸuЛ[5p O???6޽?$>] {ǭ\{uyn5o7ԈC^UBQ18#Q^W_^֮~׮侼Я|m1[ENn9d W;JJOR7TzCFcKPM>m1[ENn9d W;JJOR7TWoY6VZN]8#r S]3l8[ᖳp_nT.6Ұ\ HWn_9uV}fm6'vp{g>Z#%2s+Zx|QvcC=d-nRەAQ@$vE{z};>rN[[ݍ`#sW`ʀ,)8;w?±h+[RƗv|c3rɜ$vKxOY֧@,rFon1 Vg/<(ѮQiY`\lBQ@WoY6VZN]8#r S]3l8[ᖳp_nT.6Ұ\ HV?{Öe>u|va[!k6>#g- M#lb`owp)O⎥oy+RX (T ik6yk_. 1 '>YG×zskkz@:@~fzy3/,8VF#x,FYgnsRI]gYeg6v Ą'?;IaXTQ^?:*?ր; GoGϴko2%oMWN Aϋ(|?ghrHp,o0b0̩H߸=t>,T W,5QS FŸ$ql@Q@?t_x\ˍm4G"4X ?xOd\]x4$1fv1)$$6!J#O<5`_c6߇.Zlt<ɮo|9F[dWT]8!^nl`?~^On$+upcX2تIt$NA PTz I7΅^w--PۑRHcMt?Nѷ^x7/{ĺgu+,=s$C#ğlԭebrd!KFTq۞I'#~8\WVXPI$azNrzVcvfml$NI'I'$⏂N]]󽌪f8啕<%9&9=Koý[H^JD0ٕ@UܺsZw?±kx^m'_6w008rnS'Oeq?@klwdd$`ᔃFpp=yaWgDpp;cB(SOxͫ;YȊ&| HzVcvfml$NI'I'$V/?u+@}^$ 0Wp($I-UNI=N; .dɠHA#·N{ ^ V2gi z`0י:6keKfw,GqTѺ2p:rI&)Y$G!IxInWrW#siڼQHʤ_.Ez ̣'ucoMoӮȒopp~PktsK5;hld?FpA"#4GC[M13 P n0scbz͞GxQ2մ$[[YH$% "?|7U|3h_/ns;7{v;<;Eƻ$Mhe J wn>X$9%: *O7[E$~XTg$r;^+M g5u 㱪V:qjv&b~? 90EGcizkcfEAʼn`88x~71k9±; nP RFppF@%JU#GBk| R޳:#h+~8=8 @ )?EMb}N^dwQWiͪMŨZ> ofS*/g |ǭW<9x[K]7E9}KcԳ1%AOWόYivκupmV Q#2=2(?$](<Rן8?ZU'tmfT5;I*Y0Q@^?J o^ ×zku{8:^o k5@^/{}o&Wd>i 壏)HgМH<A6SO-[HK+dmE9'[_jiO 679ʣyv PA~yxU^^W=v8?$ o81c>q%4m*X z'm<~9ٟ%q^GZ +kƝ}~ʰ^Z> el+wQEQ^Wjڔߴou ičߕLT(((((+U7ŝSw۸E4ĤĎwoc$z\n{H"  ! GJ Ye>[Tz`3PW;RKe|( #n;aEs~-u;J#rP0 \ߊkj>#5lRk<"B|>_PH৊ux6\]z¯$xAd ν" +Sg|9wk+C@nuP"A \j~ $.y}nvKI=(b(;%7]7x $uLO,!#v*zu]PEPEPEPEPEPEPEPEPEPn\;*T. \>o[\֗VF=Y,>VRQK? "]Ywu6-NMx$ATT?8㞃ᇋOQ\08A+:7O|5~5o[&Md"'B.f21#%FGce{Nş AW>կ}?ixz¿}u E#4r8z ]SY|zǻR1}x{c9>s9/k?=OƑB]2Aۛ9`(g'dQWW?O5 `?$](<R?InQtyZ襠(_xzm"|D/"!/ƀ0g{g3| ݿ廻!_,XI'P(㖾A]jbU_, Pl`g9pz-g?o bĝv,x;wq^K_eah#>UrXдOiO}+o7n.d82k ď㗀lݦwfX>s^x :C.%mBG1W#'v-ߌc=((((((((((((((((?>տ~w+8=}lrvfe<I%ŢYCh&0\rpw(l0r:5m>.^ynRD^XG^OQ@_~̗Z=n @>'I?'aŬ^Okm)}l3Y P02I (-_$־# SO0mF@X0 1o\ϪXXu~]I )<:Պ(#9O{M:y^'c,4hq"3 WQ@? Vuo?^mA妙O]C}.]g,ǀ@zVWg“xq ZҟC.J d]S+9:YCei̼8I?0k)=kOÏk#>!M6Y@$TzPݭ: ;[wK` 3+49KK3fU'$=zExjvrYNndgIAS> '4MGLN57vHhG#(>/Wlw#9ێCB?<=i>wHݻw@8ɭ (RѮK݌K[6q+S?럔~tjzO[o7nЮdg2+?>;:>_3Wtw'ݎ<_Pyqx}:k0YyĨq(= Vuo?^EgEhG -m߱q$3e3PAѣO^ rFc(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((PK nnPKAAOEBPS/dcommon/contbig.gif`GIF87a!!!111999BBBJJJRRRccckkksss{{{skk{{ZRRRJJƽ{sZRJRJB91)kcZB9)sskZRJ1޽ƽ{{ssskkkcƵZZRccZRRJJJB{BB9991ssckkZccR))!RRB!!JJ1))99!11ƌ)1R)k֔)s1RZJR{BJs9R1J!11J1J9k{csZk!1J!)cBR9J1B)91B!cRs{!)s!){1B!k!s!{ksksckckZc9B)1!)!)BJ9B1919έƌ!!)JJcZZ{!!!1RR{JJsBBkJJ{!!9BB{1!!J9)!!Z!!c1!!kR!!s9Z!BckJs)19!!c!!ZRZ,H rrxB(Kh" DժuICiи@S z$G3TTʖ&7!f b`D 0!A  k,>SO[!\ *_t  Exr%*_}!#U #4 & ֩3|b]L ]t b+Da&R_2lEٱZ`aC)/яmvUkS r(-iPE Vv_{z GLt\2s!F A#葡JY r|AA,hB}q|B`du }00(䡆<pb,G+oB C0p/x$…– ]7 @2HFc ) @AD \0 LHG',(A` `@SC)_" PH`}Y+_|1.K8pAKMA @?3҄$[JPA)+NH I ,@8G0/@R T,`pF8Ѓ)$^$ DDTDlA@ s;PKPKAAOEBPS/dcommon/darbbook.cssPKPKAA!OEBPS/dcommon/O_signature_clr.JPG"(JFIF``C    $.' ",#(7),01444'9=82<.342C  2!!22222222222222222222222222222222222222222222222222" }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbr $4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz ?( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (?O '~MQ$Vz;OlJi8L%\]UFjޙ%ԯS;rA]5ފ<׈]j7Ouyq$z'TQuw7Ŀ KX߁M2=S'TQt?.5w'97;~pq=" ~k?`'9q6 E|yayM^Om'fkC&<5x' ?A?Zx'jß={=SßM gVC.5+Hd֪xc^)Җufz{Cީ|D Vkznq|+Xa+{50rx{|OG.OϞ~f/ xxX[2H )c+#jpUOZYX\=SG ߨC|K@;_߆'e?LT?]:?>w ڔ`D^So~xo[Ӡ3i7B:Q8 Vc-ďoi:FM292~y_*_闱YN\Fr=xZ3鳎OwW_QEzW~c]REeaSM}}Hӏ4&.E]u=gMѠ+mF`rNn$w9gMa꺢nTuhf2Xv>އ a(Û6߭?<=>z'TQuw7Ŀ KX߁M2=S'TQt?.5Kko\.8S$TOX߀Gw?Zx汴X)C7~.i6(Щ=+4{mGӭ¸-]&'t_kV*I<1)4thtIsqpQJ+> \m^[aJ5)ny:4o&QEnyAEPEEss 72,PDۢ׃K W{Wjr+wگ iM/;pd?~&?@;7E4gv8 $l'z'TQuw7Ŀ Gֱ=ɿ&G?. iR(5W*$|?w᫼gkmIbHe/_t>tg%y.l}N5[]+Mk0ĠeHdPrsst'UiC,y8`V%9ZIia|ܪvi מYG,o}+kk{YbyIeb*sAtի82zWoEK5z*o-eo;n(P u-I)4Š(HQEQEQEQEhz(X/Đ?}Bk˩ ݏrk0]4>8XzV? }6$}d^F>nU K ?Bտk_9׾x~w'ߞ  uDŽtL ؈5c-E/"|_Oo.IH쐍=i*Iw5(ںw?t5s.)+tQ2dUt5Vĺ.jZ"@IRrZƅY4ߡ_;}ų(KyQf1Aǵt?sZg+?F5_oQR&Dg߿]6FuRD u>ڿxl7?IT8'shj^=.=J1rj1Wl$얲cPx;E,p$֟ˏkw qg"45(ǛkV/=+ũ)bYl~K#˝J_כ5&\F'I#8/|wʾ_Xj Q:os^T1.M_|TO.;?_  jF?g N 8nA2F%i =qW,G=5OU u8]Rq?wr'˻S+۾.ܼ 87Q^elo/T*?L|ۚ<%<,/v_OKs B5f/29n0=zqQq(ª=VX@*J(э(f5qJN_EVǞQEOuoѕOuoa5}gO?:߂8Wא|cڽ~]N&O( (<]>͠@VQ=^~U ̴m&\խ5i:}|}r~9՝f}_>'vVֲ$~^f30^in{\_.O F8to}?${φ|#x^#^n~w=~k~?'KRtO.㌡h![3Zu*ٷճ(ԟ]z_/W1(ԟ]v~g|Yq<ז0 ; b8֮s,w9\?uEyStKaª@\,)) (!EPEPEPEPEPzѧts{v>C/"N6`d*J2gGӧWqBq_1ZuΓ\X]r?=Ey88Mp&pKtO-"wR2 K^-Z< \c>V0^@O7x2WFjs<׻kZ(<Т(OFw/6$1[:ޯԯ#q~4|,LVPem=@=YLUxӃV}AUbcUB.Ds5*kٸAeG>PJxt͝ b88?*$~@ׯD VkraiJs}Q.20x&mXξ,Z]“A-J#`+-E/"<]\a'tZGy.(|lދ~gMK OZdxDŽU9T6ϯ^<Ϡt5CZ]].t۫S=s`ڳ%8iVK:nqe+#<.T6U>zWoy3^I {F?J~=G}k)K$$;$de8*G Uӟ4Ocºw}|]4=ݣ\x$ʠms?q^ipw\"ȿPs^Z Q_0GڼU.t}ROM[G#]8wٞ ӫ87}Cgw vHȩBM55vof =A_٭`Ygx[6 P,5}>蚊(0(+?>+?> k|TuXq6_ +szk :u_ Z߶Ak_U}Jc2u/1[_»ݸG41-bሬ۴}}Eȹפ_c?5gi @cL\L<68hF_Ih>X4K7UТ sMj =J7CKo>Օ5s:߀t ~ηaٿ?|gdL8+gG%o?x`دOqȱwc¨&TW_V_aI=dpG!wu۞սZ1yL50$(l3(:~'ַo A}a3N*[0ǭ HKQV}G@֜$ 9of$ArNqUOgË05#m?D)^_h//5_/<?4}Jį+GkpG4"$ r| >S4Ђ"S 1%R:ȝ 8;PKPz PKAAOEBPS/dcommon/feedback.gif7GIF89a'%(hp|fdx?AN5:dfeDGHɾTdQc`g*6DC\?ؘ||{;=E6JUՄfeA= >@,4`H.|`a (Q 9:&[|ځ,4p Y&BDb,!2@, $wPA'ܠǃ@CO~/d.`I @8ArHx9H75j L 3B/` P#qD*s 3A:3,H70P,R@ p!(F oԥ D;"0 ,6QBRɄHhI@@VDLCk8@NBBL2&pClA?DAk%$`I2 #Q+l7 "=&dL&PRSLIP)PɼirqМ'N8[_}w;PK-PKAAOEBPS/dcommon/booklist.gifGIF89a1޵֥΄kZ{Jk1Rs!BZ)B),@I9Z͓Ca % Dz8Ȁ0FZЌ0P !x8!eL8aWȠFD(~@p+rMS|ӛR$ v "Z:]ZJJEc{*=AP  BiA ']j4$*   & 9q sMiO?jQ = , YFg4.778c&$c%9;PKː5PKAAOEBPS/dcommon/cpyr.htm1 Oracle Legal Notices

Oracle Legal Notices

Copyright Notice

Copyright © 1994-2012, Oracle and/or its affiliates. All rights reserved.

Trademark Notice

Oracle and Java are registered trademarks of Oracle and/or its affiliates. Other names may be trademarks of their respective owners.

Intel and Intel Xeon are trademarks or registered trademarks of Intel Corporation. All SPARC trademarks are used under license and are trademarks or registered trademarks of SPARC International, Inc. AMD, Opteron, the AMD logo, and the AMD Opteron logo are trademarks or registered trademarks of Advanced Micro Devices. UNIX is a registered trademark of The Open Group.

License Restrictions Warranty/Consequential Damages Disclaimer

This software and related documentation are provided under a license agreement containing restrictions on use and disclosure and are protected by intellectual property laws. Except as expressly permitted in your license agreement or allowed by law, you may not use, copy, reproduce, translate, broadcast, modify, license, transmit, distribute, exhibit, perform, publish, or display any part, in any form, or by any means. Reverse engineering, disassembly, or decompilation of this software, unless required by law for interoperability, is prohibited.

Warranty Disclaimer

The information contained herein is subject to change without notice and is not warranted to be error-free. If you find any errors, please report them to us in writing.

Restricted Rights Notice

If this is software or related documentation that is delivered to the U.S. Government or anyone licensing it on behalf of the U.S. Government, the following notice is applicable:

U.S. GOVERNMENT RIGHTS Programs, software, databases, and related documentation and technical data delivered to U.S. Government customers are "commercial computer software" or "commercial technical data" pursuant to the applicable Federal Acquisition Regulation and agency-specific supplemental regulations. As such, the use, duplication, disclosure, modification, and adaptation shall be subject to the restrictions and license terms set forth in the applicable Government contract, and, to the extent applicable by the terms of the Government contract, the additional rights set forth in FAR 52.227-19, Commercial Computer Software License (December 2007). Oracle America, Inc., 500 Oracle Parkway, Redwood City, CA 94065.

Hazardous Applications Notice

This software or hardware is developed for general use in a variety of information management applications. It is not developed or intended for use in any inherently dangerous applications, including applications that may create a risk of personal injury. If you use this software or hardware in dangerous applications, then you shall be responsible to take all appropriate fail-safe, backup, redundancy, and other measures to ensure its safe use. Oracle Corporation and its affiliates disclaim any liability for any damages caused by use of this software or hardware in dangerous applications.

Third-Party Content, Products, and Services Disclaimer

This software or hardware and documentation may provide access to or information on content, products, and services from third parties. Oracle Corporation and its affiliates are not responsible for and expressly disclaim all warranties of any kind with respect to third-party content, products, and services. Oracle Corporation and its affiliates will not be responsible for any loss, costs, or damages incurred due to your access to or use of third-party content, products, or services.

Alpha and Beta Draft Documentation Notice

If this document is in prerelease status:

This documentation is in prerelease status and is intended for demonstration and preliminary use only. It may not be specific to the hardware on which you are using the software. Oracle Corporation and its affiliates are not responsible for and expressly disclaim all warranties of any kind with respect to this documentation and will not be responsible for any loss, costs, or damages incurred due to the use of this documentation.

Oracle Logo

PKN61PKAAOEBPS/dcommon/masterix.gif.GIF89a1ޜΌscJk1Rs!Bc1J),@IS@0"1 Ѿb$b08PbL,acr B@(fDn Jx11+\%1 p { display: none; } /* Class Selectors */ .ProductTitle { font-family: sans-serif; } .BookTitle { font-family: sans-serif; } .VersionNumber { font-family: sans-serif; } .PrintDate { font-family: sans-serif; font-size: small; } .PartNumber { font-family: sans-serif; font-size: small; } PKeӺ1,PKAAOEBPS/dcommon/larrow.gif#GIF87a絵ƌֵƽ{{ss֜ƔZZ{{{{ZZssZZccJJJJRRBBJJJJ991111))!!{,@pH,Ȥrl:ШtpHc`  өb[.64ꑈ53=Z]'yuLG*)g^!8C?-6(29K"Ĩ0Яl;U+K9^u2,@@ (\Ȱ Ë $P`lj 8x I$4H *(@͉0dа8tA  DсSP v"TUH PhP"Y1bxDǕ̧_=$I /& .)+ 60D)bB~=0#'& *D+l1MG CL1&+D`.1qVG ( "D2QL,p.;u. |r$p+5qBNl<TzB"\9e0u )@D,¹ 2@C~KU 'L6a9 /;<`P!D#Tal6XTYhn[p]݅ 7}B a&AƮe{EɲƮiEp#G}D#xTIzGFǂEc^q}) Y# (tۮNeGL*@/%UB:&k0{ &SdDnBQ^("@q #` @1B4i@ aNȅ@[\B >e007V[N(vpyFe Gb/&|aHZj@""~ӎ)t ? $ EQ.սJ$C,l]A `8A o B C?8cyA @Nz|`:`~7-G|yQ AqA6OzPbZ`>~#8=./edGA2nrBYR@ W h'j4p'!k 00 MT RNF6̙ m` (7%ꑀ;PKl-OJPKAAOEBPS/dcommon/index.gifGIF89a1޵ΥΥ{sc{BZs,@IM" AD B0 3.R~[D"0, ]ШpRNC  /& H&[%7TM/`vS+-+ q D go@" 4o'Uxcxcc&k/ qp zUm(UHDDJBGMԃ;PK(PKAAOEBPS/dcommon/bookbig.gif +GIF89a$!!!)))111999BBBJJJRRRZZZccckkksss{{{skkB991)))!!B11))1!JB9B9!!cZ9ƭƽssk{ZZRccZRRJJJBBB9c!!ν)1)k{s絽ƌkssֽZccJRRBJJ{9BB)11)99!!))11!!k!JZ!)RcJccBcs)1c)JZ!BR!)BZ)99J!Rk9!c11B)Z{)9Bkc1kB9BZ!Z{9Rs)Jkksk9kB1s1Jk9Rƥc{k9s)Z{1k91)s1Rk)Jc1J!))BZ!1k{csc{)19B!)Bcsc{ksc{kZs!RkJkJkքc{9Zks{ck9R)Bks9R9R1J!)Z1B!)c)9)99BR19kksBBJcc{ccBBZ))9kk!!199c11ZBB{9!!R!!Z!!c))!!kR!!s!!BcksRZ1c9B)R91c1)Z!R9B9k1)RcZ{)!1B9JB9B)!)J9B!& Imported from GIF image: bookbig.gif,$!!!)))111999BBBJJJRRRZZZccckkksss{{{skkB991)))!!B11))1!JB9B9!!cZ9ƭƽssk{ZZRccZRRJJJBBB9c!!ν)1)k{s絽ƌkssֽZccJRRBJJ{9BB)11)99!!))11!!k!JZ!)RcJccBcs)1c)JZ!BR!)BZ)99J!Rk9!c11B)Z{)9Bkc1kB9BZ!Z{9Rs)Jkksk9kB1s1Jk9Rƥc{k9s)Z{1k91)s1Rk)Jc1J!))BZ!1k{csc{)19B!)Bcsc{ksc{kZs!RkJkJkքc{9Zks{ck9R)Bks9R9R1J!)Z1B!)c)9)99BR19kksBBJcc{ccBBZ))9kk!!199c11ZBB{9!!R!!Z!!c))!!kR!!s!!BcksRZ1c9B)R91c1)Z!R9B9k1)RcZ{)!1B9JB9B)!)J9BH`\Ȑ:pظа"A6DBH,V@Dڹ'G"v Æ ܥ;n;!;>xAܽ[G.\rQC wr}BŊQ A9ᾑ#5Y0VȒj0l-GqF>ZpM rb ;=.ސW-WѻWo ha!}~ْ ; t 53 :\ 4PcD,0 4*_l0K3-`l.j!c Aa|2L4/1C`@@md;(H*80L0L(h*҇҆o#N84pC (xO@ A)J6rVlF r  fry†$r_pl5xhA+@A=F rGU a 1х4s&H Bdzt x#H%Rr (Ѐ7P`#Rщ'x" #0`@~i `HA'Tk?3!$`-A@1l"P LhʖRG&8A`0DcBH sq@AXB4@&yQhPAppxCQ(rBW00@DP1E?@lP1%T` 0 WB~nQ@;PKGC PKAAOEBPS/dcommon/rarrow.gif/GIF87a絵ƌֵƽ{{ss֜ƔZZ{{{{ZZssZZccJJJJRRBBJJJJ991111))!!{,@pH,Ȥrl:ШLlԸ NCqWEd)#34vwwpN|0yhX!'+-[F 'n5 H $/14w3% C .90" qF 7&E "D mnB|,c96) I @0BW{ᢦdN p!5"D`0 T 0-]ʜ$;PKJV^PKAAOEBPS/dcommon/mix.gifkGIF89aZZZBBBJJJkkk999sss!!!111cccֽ{{{RRR)))猌ƭ{s{sks!,@@pH,B$ 8 t:<8 *'ntPP DQ@rIBJLNPTVEMOQUWfj^!  hhG H  kCúk_a Ǥ^ h`B BeH mm  #F` I lpǎ,p B J\Y!T\(dǏ!Gdˆ R53ټ R;iʲ)G=@-xn.4Y BuU(*BL0PX v`[D! | >!/;xP` (Jj"M6 ;PK枰pkPKAAOEBPS/dcommon/doccd_epub.jsM /* Copyright 2006, 2012, Oracle and/or its affiliates. All rights reserved. Author: Robert Crews Version: 2012.3.17 */ function addLoadEvent(func) { var oldOnload = window.onload; if (typeof(window.onload) != "function") window.onload = func; else window.onload = function() { oldOnload(); func(); } } function compactLists() { var lists = []; var ul = document.getElementsByTagName("ul"); for (var i = 0; i < ul.length; i++) lists.push(ul[i]); var ol = document.getElementsByTagName("ol"); for (var i = 0; i < ol.length; i++) lists.push(ol[i]); for (var i = 0; i < lists.length; i++) { var collapsible = true, c = []; var li = lists[i].getElementsByTagName("li"); for (var j = 0; j < li.length; j++) { var p = li[j].getElementsByTagName("p"); if (p.length > 1) collapsible = false; for (var k = 0; k < p.length; k++) { if ( getTextContent(p[k]).split(" ").length > 12 ) collapsible = false; c.push(p[k]); } } if (collapsible) { for (var j = 0; j < c.length; j++) { c[j].style.margin = "0"; } } } function getTextContent(e) { if (e.textContent) return e.textContent; if (e.innerText) return e.innerText; } } addLoadEvent(compactLists); function processIndex() { try { if (!/\/index.htm(?:|#.*)$/.test(window.location.href)) return false; } catch(e) {} var shortcut = []; lastPrefix = ""; var dd = document.getElementsByTagName("dd"); for (var i = 0; i < dd.length; i++) { if (dd[i].className != 'l1ix') continue; var prefix = getTextContent(dd[i]).substring(0, 2).toUpperCase(); if (!prefix.match(/^([A-Z0-9]{2})/)) continue; if (prefix == lastPrefix) continue; dd[i].id = prefix; var s = document.createElement("a"); s.href = "#" + prefix; s.appendChild(document.createTextNode(prefix)); shortcut.push(s); lastPrefix = prefix; } var h2 = document.getElementsByTagName("h2"); for (var i = 0; i < h2.length; i++) { var nav = document.createElement("div"); nav.style.position = "relative"; nav.style.top = "-1.5ex"; nav.style.left = "1.5em"; nav.style.width = "90%"; while (shortcut[0] && shortcut[0].toString().charAt(shortcut[0].toString().length - 2) == getTextContent(h2[i])) { nav.appendChild(shortcut.shift()); nav.appendChild(document.createTextNode("\u00A0 ")); } h2[i].parentNode.insertBefore(nav, h2[i].nextSibling); } function getTextContent(e) { if (e.textContent) return e.textContent; if (e.innerText) return e.innerText; } } addLoadEvent(processIndex); PKo"nR M PKAAOEBPS/dcommon/toc.gifGIF89a1ΥΥ{c{Z{JkJk1Rk,@IK% 0| eJB,K-1i']Bt9dz0&pZ1o'q(؟dQ=3S SZC8db f&3v2@VPsuk2Gsiw`"IzE%< C !.hC IQ 3o?39T ҍ;PKv I PKAAOEBPS/dcommon/topnav.gifGIF89a1ֽ筽ޭƔkZZk{Bc{,@ ) l)-'KR$&84 SI) XF P8te NRtHPp;Q%Q@'#rR4P fSQ o0MX[) v + `i9gda/&L9i*1$#"%+ ( E' n7Ȇ(,҅(L@(Q$\x 8=6 'נ9tJ&"[Epljt p#ѣHb :f F`A =l|;&9lDP2ncH R `qtp!dȐYH›+?$4mBA9 i@@ ]@ꃤFxAD*^Ŵ#,(ε  $H}F.xf,BD Z;PK1FAPKAAOEBPS/dcommon/bp_layout.css# @charset "utf-8"; /* bp_layout.css Copyright 2007, Oracle and/or its affiliates. All rights reserved. */ body { margin: 0ex; padding: 0ex; } h1 { display: none; } #FOOTER { border-top: #0d4988 solid 10px; background-color: inherit; color: #e4edf3; clear: both; } #FOOTER p { font-size: 80%; margin-top: 0em; margin-left: 1em; } #FOOTER a { background-color: inherit; color: gray; } #LEFTCOLUMN { float: left; width: 50%; } #RIGHTCOLUMN { float: right; width: 50%; clear: right; /* IE hack */ } #LEFTCOLUMN div.portlet { margin-left: 2ex; margin-right: 1ex; } #RIGHTCOLUMN div.portlet { margin-left: 1ex; margin-right: 2ex; } div.portlet { margin: 2ex 1ex; padding-left: 0.5em; padding-right: 0.5em; border: 1px #bcc solid; background-color: #f6f6ff; color: black; } div.portlet h2 { margin-top: 0.5ex; margin-bottom: 0ex; font-size: 110%; } div.portlet p { margin-top: 0ex; } div.portlet ul { list-style-type: none; padding-left: 0em; margin-left: 0em; /* IE Hack */ } div.portlet li { text-align: right; } div.portlet li cite { font-style: normal; float: left; } div.portlet li a { margin: 0px 0.2ex; padding: 0px 0.2ex; font-size: 95%; } #NAME { margin: 0em; padding: 0em; position: relative; top: 0.6ex; left: 10px; width: 80%; } #PRODUCT { font-size: 180%; } #LIBRARY { color: #0b3d73; background: inherit; font-size: 180%; font-family: serif; } #RELEASE { position: absolute; top: 28px; font-size: 80%; font-weight: bold; } #TOOLS { list-style-type: none; position: absolute; top: 1ex; right: 2em; margin: 0em; padding: 0em; background: inherit; color: black; } #TOOLS a { background: inherit; color: black; } #NAV { float: left; width: 96%; margin: 3ex 0em 0ex 0em; padding: 2ex 0em 0ex 4%; /* Avoiding horizontal scroll bars. */ list-style-type: none; background: transparent url(../gifs/nav_bg.gif) repeat-x bottom; } #NAV li { float: left; margin: 0ex 0.1em 0ex 0em; padding: 0ex 0em 0ex 0em; } #NAV li a { display: block; margin: 0em; padding: 3px 0.7em; border-top: 1px solid gray; border-right: 1px solid gray; border-bottom: none; border-left: 1px solid gray; background-color: #a6b3c8; color: #333; } #SUBNAV { float: right; width: 96%; margin: 0ex 0em 0ex 0em; padding: 0.1ex 4% 0.2ex 0em; /* Avoiding horizontal scroll bars. */ list-style-type: none; background-color: #0d4988; color: #e4edf3; } #SUBNAV li { float: right; } #SUBNAV li a { display: block; margin: 0em; padding: 0ex 0.5em; background-color: inherit; color: #e4edf3; } #SIMPLESEARCH { position: absolute; top: 5ex; right: 1em; } #CONTENT { clear: both; } #NAV a:hover, #PORTAL_1 #OVERVIEW a, #PORTAL_2 #OVERVIEW a, #PORTAL_3 #OVERVIEW a, #PORTAL_4 #ADMINISTRATION a, #PORTAL_5 #DEVELOPMENT a, #PORTAL_6 #DEVELOPMENT a, #PORTAL_7 #DEVELOPMENT a, #PORTAL_11 #INSTALLATION a, #PORTAL_15 #ADMINISTRATION a, #PORTAL_16 #ADMINISTRATION a { background-color: #0d4988; color: #e4edf3; padding-bottom: 4px; border-color: gray; } #SUBNAV a:hover, #PORTAL_2 #SEARCH a, #PORTAL_3 #BOOKS a, #PORTAL_6 #WAREHOUSING a, #PORTAL_7 #UNSTRUCTURED a, #PORTAL_15 #INTEGRATION a, #PORTAL_16 #GRID a { position: relative; top: 2px; background-color: white; color: #0a4e89; } PK3( # PKAAOEBPS/dcommon/bookicon.gif:GIF87a!!!)))111999BBBJJJRRRZZZccckkksss{{{ޭ{{ZRRcZZRJJJBB)!!skRB9{sν{skskcZRJ1)!֭ƽ{ZZRccZJJBBB999111)JJ9BB1ZZB!!ﭵBJJ9BB!!))Jk{)1!)BRZJ{BsR!RRJsJ!J{s!JsBkks{RsB{J{c1RBs1ZB{9BJ9JZ!1BJRRs!9R!!9Z9!1)J19JJRk19R1Z)!1B9R1RB!)J!J1R)J119!9J91!9BkksBBJ119BBR!))9!!!JB1JJ!)19BJRZckތ1)1J9B,H*\hp >"p`ƒFF "a"E|ժOC&xCRz OBtX>XE*O>tdqAJ +,WxP!CYpQ HQzDHP)T njJM2ꔀJ2T0d#+I:<жk 'ꤱF AB @@nh Wz' H|-7f\A#yNR5 /PM09u UjćT|q~Yq@&0YZAPa`EzI /$AD Al!AAal 2H@$ PVAB&c*ؠ p @% p-`@b`uBa l&`3Ap8槖X~ vX$Eh`.JhAepA\"Bl, :Hk;PKx[?:PKAAOEBPS/dcommon/conticon.gif^GIF87a!!!)))111999BBBJJJRRRZZZccckkksss{{{ZRR޽{{ssskkkcccZ991ccRZZBBJJZck)19ZcsBJZ19J!k{k)Z1RZs1!B)!J91{k{)J!B!B911)k{cs!1s!9)s!9!B!k)k1c!)Z!R{9BJcckZZcBBJ99B119{{!!)BBRBBZ!))999R99Z!!999c1!9!)19B1)!B9R,  oua\h2SYPa aowwxYi 9SwyyxxyYSd $'^qYȵYvh ч,/?g{н.J5fe{ڶyY#%/}‚e,Z|pAܠ `KYx,ĉ&@iX9|`p ]lR1khٜ'E 6ÅB0J;t X b RP(*MÄ!2cLhPC <0Ⴁ  $4!B 6lHC%<1e H 4p" L`P!/,m*1F`#D0D^!AO@..(``_؅QWK>_*OY0J@pw'tVh;PKp*c^PKAAOEBPS/dcommon/blafdoc.cssL@charset "utf-8"; /* Copyright 2002, 2011, Oracle and/or its affiliates. All rights reserved. Author: Robert Crews Version: 2011.10.7 */ body { font-family: Tahoma, sans-serif; /* line-height: 125%; */ color: black; background-color: white; font-size: small; } * html body { /* http://www.info.com.ph/~etan/w3pantheon/style/modifiedsbmh.html */ font-size: x-small; /* for IE5.x/win */ f\ont-size: small; /* for other IE versions */ } h1 { font-size: 165%; font-weight: bold; border-bottom: 1px solid #ddd; width: 100%; } h2 { font-size: 152%; font-weight: bold; } h3 { font-size: 139%; font-weight: bold; } h4 { font-size: 126%; font-weight: bold; } h5 { font-size: 113%; font-weight: bold; display: inline; } h6 { font-size: 100%; font-weight: bold; font-style: italic; display: inline; } a:link { color: #039; background: inherit; } a:visited { color: #72007C; background: inherit; } a:hover { text-decoration: underline; } a img, img[usemap] { border-style: none; } code, pre, samp, tt { font-family: monospace; font-size: 110%; } caption { text-align: center; font-weight: bold; width: auto; } dt { font-weight: bold; } table { font-size: small; /* for ICEBrowser */ } td { vertical-align: top; } th { font-weight: bold; text-align: left; vertical-align: bottom; } ol ol { list-style-type: lower-alpha; } ol ol ol { list-style-type: lower-roman; } td p:first-child, td pre:first-child { margin-top: 0px; margin-bottom: 0px; } table.table-border { border-collapse: collapse; border-top: 1px solid #ccc; border-left: 1px solid #ccc; } table.table-border th { padding: 0.5ex 0.25em; color: black; background-color: #f7f7ea; border-right: 1px solid #ccc; border-bottom: 1px solid #ccc; } table.table-border td { padding: 0.5ex 0.25em; border-right: 1px solid #ccc; border-bottom: 1px solid #ccc; } span.gui-object, span.gui-object-action { font-weight: bold; } span.gui-object-title { } p.horizontal-rule { width: 100%; border: solid #cc9; border-width: 0px 0px 1px 0px; margin-bottom: 4ex; } div.zz-skip-header { display: none; } td.zz-nav-header-cell { text-align: left; font-size: 95%; width: 99%; color: black; background: inherit; font-weight: normal; vertical-align: top; margin-top: 0ex; padding-top: 0ex; } a.zz-nav-header-link { font-size: 95%; } td.zz-nav-button-cell { white-space: nowrap; text-align: center; width: 1%; vertical-align: top; padding-left: 4px; padding-right: 4px; margin-top: 0ex; padding-top: 0ex; } a.zz-nav-button-link { font-size: 90%; } div.zz-nav-footer-menu { width: 100%; text-align: center; margin-top: 2ex; margin-bottom: 4ex; } p.zz-legal-notice, a.zz-legal-notice-link { font-size: 85%; /* display: none; */ /* Uncomment to hide legal notice */ } /*************************************/ /* Begin DARB Formats */ /*************************************/ .bold, .codeinlinebold, .syntaxinlinebold, .term, .glossterm, .seghead, .glossaryterm, .keyword, .msg, .msgexplankw, .msgactionkw, .notep1, .xreftitlebold { font-weight: bold; } .italic, .codeinlineitalic, .syntaxinlineitalic, .variable, .xreftitleitalic { font-style: italic; } .bolditalic, .codeinlineboldital, .syntaxinlineboldital, .titleinfigure, .titleinexample, .titleintable, .titleinequation, .xreftitleboldital { font-weight: bold; font-style: italic; } .itemizedlisttitle, .orderedlisttitle, .segmentedlisttitle, .variablelisttitle { font-weight: bold; } .bridgehead, .titleinrefsubsect3 { font-weight: bold; } .titleinrefsubsect { font-size: 126%; font-weight: bold; } .titleinrefsubsect2 { font-size: 113%; font-weight: bold; } .subhead1 { display: block; font-size: 139%; font-weight: bold; } .subhead2 { display: block; font-weight: bold; } .subhead3 { font-weight: bold; } .underline { text-decoration: underline; } .superscript { vertical-align: super; } .subscript { vertical-align: sub; } .listofeft { border: none; } .betadraft, .alphabetanotice, .revenuerecognitionnotice { color: #e00; background: inherit; } .betadraftsubtitle { text-align: center; font-weight: bold; color: #e00; background: inherit; } .comment { color: #080; background: inherit; font-weight: bold; } .copyrightlogo { text-align: center; font-size: 85%; } .tocsubheader { list-style-type: none; } table.icons td { padding-left: 6px; padding-right: 6px; } .l1ix dd, dd dl.l2ix, dd dl.l3ix { margin-top: 0ex; margin-bottom: 0ex; } div.infoboxnote, div.infoboxnotewarn, div.infoboxnotealso { margin-top: 4ex; margin-right: 10%; margin-left: 10%; margin-bottom: 4ex; padding: 0.25em; border-top: 1pt solid gray; border-bottom: 1pt solid gray; } p.notep1 { margin-top: 0px; margin-bottom: 0px; } .tahiti-highlight-example { background: #ff9; text-decoration: inherit; } .tahiti-highlight-search { background: #9cf; text-decoration: inherit; } .tahiti-sidebar-heading { font-size: 110%; margin-bottom: 0px; padding-bottom: 0px; } /*************************************/ /* End DARB Formats */ /*************************************/ @media all { /* * * { line-height: 120%; } */ dd { margin-bottom: 2ex; } dl:first-child { margin-top: 2ex; } } @media print { body { font-size: 11pt; padding: 0px !important; } a:link, a:visited { color: black; background: inherit; } code, pre, samp, tt { font-size: 10pt; } #nav, #search_this_book, #comment_form, #comment_announcement, #flipNav, .noprint { display: none !important; } body#left-nav-present { overflow: visible !important; } } PKʍPKAAOEBPS/dcommon/rightnav.gif&GIF89a1ֽ筽ޭƔkZZk{Bc{,@ ) l)- $CҠҀ ! D1 #:aS( c4B0 AC8 ְ9!%MLj Z * ctypJBa H t>#Sb(clhUԂ̗4DztSԙ9ZQҀEPEPEPEPEPEPEPM=iԍP Gii c*yF 1׆@\&o!QY00_rlgV;)DGhCq7~..p&1c:u֫{fI>fJL$}BBP?JRWc<^j+χ5b[hֿ- 5_j?POkeQ^hֿ1L^ H ?Qi?z?+_xɔŪ\썽O]χ>)xxV/s)e6MI7*ߊޛv֗2J,;~E4yi3[nI`Ѱe9@zXF*W +]7QJ$$=&`a۾?]N T䏟'X)Ɣkf:j |>NBWzYx0t!* _KkoTZ?K Gc+UyڹgNuh^iSo5{\ܹ3Yos}.>if FqR5\/TӮ#]HS0DKu{($"2xִ{SBJ8=}Y=.|Tsц2UЫ%.InaegKo z ݎ3ֹxxwM&2S%';+I',kW&-"_¿_ Vq^ܫ6pfT2RV A^6RKetto^[{w\jPZ@ޢN4/XN#\42j\(z'j =~-I#:q[Eh|X:sp* bifp$TspZ-}NM*B-bb&*xUr#*$M|QWY ~p~- fTED6O.#$m+t$˙H"Gk=t9r娮Y? CzE[/*-{c*[w~o_?%ƔxZ:/5𨴟q}/]22p qD\H"K]ZMKR&\C3zĽ[PJm]AS)Ia^km M@dК)fT[ijW*hnu Ͳiw/bkExG£@f?Zu.s0(<`0ֹoxOaDx\zT-^ѧʧ_1+CP/p[w 9~U^[U<[tĽwPv[yzD1W='u$Oeak[^ |Gk2xv#2?¹TkSݕ| rݞ[Vi _Kz*{\c(Ck_܏|?u jVڔ6f t?3nmZ6f%QAjJf9Rq _j7Z-y.pG$Xb]0')[_k;$̭?&"0FOew7 z-cIX岛;$u=\an$ zmrILu uٞ% _1xcUW%dtÀx885Y^gn;}ӭ)場QEQ@Q@Q@Q@Q@Q@!4xPm3w*]b`F_931˜[ן+(> E ly;<;MF-qst+}DH @YKlLmؤciN<|]IU)Lw(8t9FS(=>og<\Z~u_+X1ylsj'eՃ*U3`C!N9Q_WܱhKc93^ua>H ƕGk=8~e#_?{ǀe-[2ٔ7;=&K挑5zsLdx(e8#{1wS+ΝVkXq9>&yஏh$zq^0~/j@:/«Vnce$$uoPp}MC{$-akH@ɫ1O !8R9s5ԦYmϧ'OUṡ5T,!Ԛ+s#1Veo=[)g>#< s)ƽُA^䠮ωFUj(ǩ|N3Jڷ睁ϱuږZYGOTsI<&drav?A^_f׻B$,O__ԿC`it{6>G׈C~&$y؎v1q9Sc1fH[ѽ>,gG'0'@Vw,BO [#>ﱺg5ΒFVD%Yr:O5 Tu+O멃]ی38Ze}R&ѝ_xzc1DXgس;<,_,{ƽY'AS#oF.M#~cBuEx7G+Y)(5q+GCV;qF+CLQ)qEC&6z𿊘z}?&w=+)??&\g{;V??׻xGœdٿ׼-Nc')3K]N)iLTӿCdb7Q^a N sd>Fz[0S^s'Zi 77D}kWus ab~~H(>.fif9,~|Jk;YN3H8Y(t6Q݉k͇_÷Z+2߄&[ +Tr^藺97~c܎=[f1RrBǓ^kEMhxYVm<[џ6| kqbѱ| YA{G8p?\UM7Z66 g1U1igU69 u5Pƪ:VVZC=[@ҹ¨$kSmɳО\vFz~i3^a Osŧυ9Q}_3 όO{/wgoet39 vO2ea;Ύ7$U#?k+Ek&dpzbӱ+TaB0gN{[N7Gי}U7&@?>Fz~E!a@s ?'67XxO*!?qi]֏TQN@tI+\^s8l0)2k!!iW8F$(yOּT.k,/#1:}8uT˾+5=O/`IW G֯b.-<= HOm;~so~hW5+kS8s.zwE| ?4ӿw/K N 9?j(#0UT` Wzw}:_*9m>󑓀F?ELzv=8q:=WgJ`nDr Zе<ֹ](Q@Q@Q@Q@Q@Q@Q@Q@ 'IdC0EYJVcMty_~u+Sw-aO n<[YJgL#6i g5ЖDZ14cʝ!!\/M}/_AYR__>oC? _?7_G#RERW쏞KB}JxGSkǕA pƱơP m]hwB7U$Zq M95"3q1ioATߚ{g.t uu2k=;h#YB= fgS :TdLԃ!44mFK{Hrd^7oz|BVr<{)6AXգV»|>*/hS܏z͆OM=Εq (s|s׊LKQI :9NJ)P+!ʣoAF>+=@I}"x/}۠1aנc¹4emC:>p_xWKX` >R3_S½èųp3޺u3N e یbmͺ<_ mnݮ1Op?Gm)Qb%N585'%Ahs\6yw!"&Ɨ._wk)}GP;Z!#\"< *oƾ\)}N>"լ/~]Lg}pBG X?<zZ#x69S=6) jzx=y9O&>+e!!? ?s~k5Gʏ)?*ce7Ox~k5􇔾Q/e7/Ԑ#3OgNC0] ;_FiRl>Q.g>!%k#ú:Kn'&}?U@\pџPtp)v<{_i}Oվֲ3XIYIx~b<D?(=_JXH=bbi=Oh?_ C_O)}oW쏜? %Ƶ;-RYFi`wۭ{ϖZMtQ$"c_+ԃx1*0b;ԕ݋ESQEQEQEQEQEQEQEQEQEQZ(1F)h1K@XLRE&9P (bf{RӨ&)PEPEPbԴPGKZ(iإbn(:A%S0(-&)P+ ڎԴP11F)h&:LRmQ@Q@Š(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((PKje88PKAAOEBPS/dcommon/help.gif!GIF89a1εֵ֜֜{kZsBc{,@ )sƠTQ$8(4ʔ%ŌCK$A HP`$h8ŒSd+ɡ\ H@%' 6M HO3SJM /:Zi[7 \( R9r ERI%  N=aq   qƦs *q-n/Sqj D XZ;PKއ{&!PKAAOEBPS/cleanup.htmw? Cleaning up the Caching Environment

8 Cleaning up the Caching Environment

This chapter describes the various tasks that need to be performed in the TimesTen and Oracle databases to destroy a cache grid and drop cache groups. It includes the following topics:


Note:

If you are planning to use Oracle Clusterware to manage active standby pairs in a cache grid, see "Using Oracle Clusterware with a TimesTen cache grid" in Oracle TimesTen In-Memory Database Replication Guide.

Also see "Restricted commands and SQL statements" in Oracle TimesTen In-Memory Database Replication Guide. Use the ttCWAdmin utility to manage the active standby pair grid members instead of the built-in procedures discussed in this chapter.


Detaching a TimesTen database from a cache grid

Call the ttGridDetach built-in procedure to detach a grid member from the cache grid that it is attached to. If the grid member is an active standby pair, the active and standby databases must both be detached, and they must be detached separately. When a grid member has been detached, you can no longer perform operations on its global cache groups or on their cache tables. The grid member also relinquishes ownership of all cache instances that it had owned. The cache agent and replication agent processes cannot be stopped until the database detaches from its cache grid.

From the cachealone1 database, call the ttGridDetach built-in procedure as the cache manager user to detach the member from the ttGrid cache grid. For example:

% ttIsql "DSN=cachealone1;UID=cacheuser;PWD=timesten;OraclePWD=oracle"
Command> CALL ttGridDetach;

To make sure that all committed updates on cache tables in the global cache groups in cachealone1 have been propagated to the cached Oracle tables before the TimesTen database is detached from its cache grid, specify the number of seconds to wait before executing the detach. In this example, the wait is 60 seconds:

Command> CALL ttGridDetach(,,60);

Then after the database has been detached from its grid, the replication agent running on the database can be stopped.

You can force detach a grid member that becomes unavailable but is still attached to the grid. A grid member's underlying TimesTen database is unavailable, for example, when the TimesTen system is taken offline or the database has been destroyed. Call the ttGridDetach built-in procedure as the cache manager user passing the value 1 to the force parameter from any one of the TimesTen databases that are available except from the read-only subscriber databases.

Command> CALL ttGridDetach('TTGRID_alone2_2',1);

To determine the names of all attached grid members, call the ttGridNodeStatus built-in procedure.

You can force detach a set of grid members that become unavailable but are still attached to the grid by calling the ttGridDetachList built-in procedure as the cache manager user from any one of the TimesTen databases that are available except from the read-only subscriber databases. Pass the value 1 to the force parameter.

Command> CALL ttGridDetachList('TTGRID_cacheact_3A TTGRID_cachestand_3B',1);

You can detach all of the grid members by calling the ttGridDetachAll built-in procedure. In this example, the detach operation waits 60 seconds:

Command> CALL ttGridDetachAll(60);

Stopping the replication agent

Call the ttRepStop built-in procedure to stop the replication agent. This must be done on each TimesTen database of the active standby pair including any read-only subscriber databases, and any standalone TimesTen databases that contain AWT cache groups.

From the cachealone1, cachealone2, cacheactive, cachestandby and rosubscriber databases, call the ttRepStop built-in procedure as the cache manager user to stop the replication agent on the database:

Command> CALL ttRepStop;

Dropping a cache group

Use the DROP CACHE GROUP statement to drop a cache group and its cache tables. Oracle objects used to manage the caching of Oracle data are automatically dropped when you use the DROP CACHE GROUP statement to drop a cache group, or an ALTER CACHE GROUP statement to set the autorefresh state to OFF for autorefresh cache groups.

If you issue a DROP CACHE GROUP statement on a cache group that has an autorefresh operation in progress:

  • The autorefresh operation stops if the LockWait connection attribute setting is greater than 0. The DROP CACHE GROUP statement preempts the autorefresh operation.

  • The autorefresh operation continues if the LockWait connection attribute setting is 0. The DROP CACHE GROUP statement is blocked until the autorefresh operation completes or the statement fails with a lock timeout error.

If cache tables are being replicated in an active standby pair and the cache tables are the only elements that are being replicated, you must drop the active standby pair using a DROP ACTIVE STANDBY PAIR statement before dropping the cache groups. If the active standby pair is a grid member, the grid member must be detached from the grid before dropping the active standby pair.

Execute the following statement as the cache manager user on the cacheactive, cachestandby and rosubscriber databases to drop the active standby pair replication scheme:

Command> DROP ACTIVE STANDBY PAIR;
Command> exit

You must unload the data in a global cache group in all grid members before dropping the cache group. Set the GlobalProcessing optimizer flag to 1 and unload the cache group:

CALL ttOptSetFlag('GlobalProcessing', 1);
UNLOAD CACHE GROUP subscriber_accounts;

Before you can drop a cache group, you must grant the DROP ANY TABLE privilege to the cache manager user. Execute the following statement as the instance administrator on the cachealone1, cachealone2, cacheactive and cachestandby databases to grant the DROP ANY TABLE privilege to the cache manager user. The following example shows the SQL statement issued from the cachealone1 database:

% ttIsql cachealone1
Command> GRANT DROP ANY TABLE TO cacheuser;
Command> exit

If you are dropping an AWT cache group, use the ttRepSubscriberWait built-in procedure to make sure that all committed updates on its cache tables have been propagated to the cached Oracle tables before dropping the cache group.

% ttIsql "DSN=cachealone1;UID=cacheuser;PWD=timesten;OraclePWD=oracle"
Command> CALL ttRepSubscriberWait('_AWTREPSCHEME','TTREP','_ORACLE','sys1',-1);

The replication scheme that was created for the AWT cache group to enable committed updates on its cache tables to be asynchronously propagated to the cached Oracle tables is automatically dropped when you drop the cache group.

Use a DROP CACHE GROUP statement to drop the cache groups from the standalone TimesTen databases and the active and standby databases.

Execute the following statement as the cache manager user on the cachealone1, cachealone2, cacheactive and cachestandby databases to drop the subscriber_accounts global cache group. The following example shows the SQL statement issued from the cachealone1 database:

% ttIsql "DSN=cachealone1;UID=cacheuser;PWD=timesten;OraclePWD=oracle"
Command> DROP CACHE GROUP subscriber_accounts;

Note:

If the cache agent is stopped immediately after dropping a cache group, or altering the cache group's autorefresh state to OFF, the Oracle objects used to manage the caching of Oracle data may not have been dropped. When the cache agent is restarted, it drops the Oracle objects that were created for the dropped or altered cache group.

Destroying a cache grid

Call the ttGridDestroy built-in procedure to destroy a cache grid. By default, a cache grid cannot be destroyed if there are existing cache groups or attached grid members.

From any one of the TimesTen databases, except from the read-only subscriber databases, call the ttGridDestroy built-in procedure as the cache manager user to destroy the ttGrid cache grid:

Command> CALL ttGridDestroy('ttGrid');

You can force destroy a cache grid even if a grid member whose TimesTen database becomes unavailable while it contains cache groups or is attached to the grid. A TimesTen database is unavailable, for example, when the TimesTen system is taken offline or the database has been destroyed. Call the ttGridDestroy built-in procedure as the cache manager user passing the value 1 to the force parameter from any one of the TimesTen databases except from the read-only subscriber databases.

Command> CALL ttGridDestroy('ttGrid',1);

A cache grid should be destroyed only if it is no longer needed and there is no intent to attach to it again.

Stopping the cache agent

Call the ttCacheStop built-in procedure to stop the cache agent. This must be done on the active and standby databases of the active standby pair, and all standalone TimesTen databases.

From the cachealone1, cachealone2, cacheactive and cachestandby databases, issue the following built-in procedure call to stop the cache agent on the database:

Command> CALL ttCacheStop;
Command> exit

The cache agent cannot be stopped if the TimesTen database is still attached to a cache grid.

Destroying the TimesTen databases

If the TimesTen databases are no longer needed, you can use the ttDestroy utility to destroy the databases.

The following example shows the ttDestroy utility connecting to and then destroying the cachealone1 database:

% ttDestroy cachealone1

Dropping the Oracle users and objects

Use SQL*Plus as the sys user to drop the timesten user, the schema user oratt, and the cache administration user cacheuser, and all objects such as tables and triggers owned by these users. Then drop the TT_CACHE_ADMIN_ROLE role, and the default tablespace cachetblsp used by the timesten user and the cache administration user including the contents of the tablespace and its data file.

% sqlplus sys as sysdba
Enter password: password
SQL> DROP USER timesten CASCADE;
SQL> DROP USER oratt CASCADE;
SQL> DROP USER cacheuser CASCADE;
SQL> DROP ROLE tt_cache_admin_role;
SQL> DROP TABLESPACE cachetblsp INCLUDING CONTENTS AND DATAFILES;
SQL> exit
PK|?w?PKAA OEBPS/toc.htmX> Table of Contents

Contents

Title and Copyright Information

Preface

What's New

1 Oracle In-Memory Database Cache Concepts

2 Getting Started

3 Setting Up a Caching Infrastructure

4 Defining Cache Groups

5 Cache Group Operations

6 Creating Other Cache Grid Members

7 Managing a Caching Environment

8 Cleaning up the Caching Environment

9 Using the Cache Advisor

10 Using Oracle In-Memory Database Cache in an Oracle RAC Environment

11 Using Oracle In-Memory Database Cache with Data Guard

12 SQL*Plus Scripts for Oracle In-Memory Database Cache

13 Compatibility Between TimesTen and Oracle

Glossary

Index

PKXXPKAAOEBPS/gridmembers.htm Creating Other Cache Grid Members

6 Creating Other Cache Grid Members

This chapter describes the tasks for creating a second standalone TimesTen database and an active standby pair, and attaching these members to the cache grid that was created in Chapter 3, "Setting Up a Caching Infrastructure". It includes the following topics:


Note:

If you are planning to use Oracle Clusterware to manage active standby pairs in a cache grid, see "Using Oracle Clusterware with a TimesTen cache grid" in Oracle TimesTen In-Memory Database Replication Guide.

Also see "Restricted commands and SQL statements" in Oracle TimesTen In-Memory Database Replication Guide. Use the ttCWAdmin utility to manage the active standby pair grid members instead of the built-in procedures discussed in this chapter.


Creating and configuring a subsequent standalone TimesTen database

The following is the definition of the cachealone2 DSN for the second standalone TimesTen database that will become a member of the ttGrid cache grid:

[cachealone2]
DataStore=/users/OracleCache/alone2
PermSize=64
OracleNetServiceName=orcl
DatabaseCharacterSet=WE8ISO8859P1

Start the ttIsql utility and connect to the cachealone2 DSN as the instance administrator to create the database. Then create the cache manager user cacheuser whose name, in this example, is the same as the Oracle cache administration user. Then create a cache table user oratt whose name is the same as the Oracle schema user who will own the Oracle tables to be cached in the TimesTen database.

% ttIsql cachealone2
Command> CREATE USER cacheuser IDENTIFIED BY timesten;
Command> CREATE USER oratt IDENTIFIED BY timesten;

As the instance administrator, use the ttIsql utility to grant the cache manager user cacheuser the privileges required to perform the operations listed in Example 3-8:

Command> GRANT CREATE SESSION, CACHE_MANAGER, CREATE ANY TABLE TO cacheuser;
Command> exit

Start the ttIsql utility and connect to the cachealone2 DSN as the cache manager user. Set the cache administration user name and password by calling the ttCacheUidPwdSet built-in procedure.

% ttIsql "DSN=cachealone2;UID=cacheuser;PWD=timesten;OraclePWD=oracle"
Command> CALL ttCacheUidPwdSet('cacheuser','oracle');

Associate the second standalone database to the ttGrid cache grid by calling the ttGridNameSet built-in procedure as the cache manager user:

Command> CALL ttGridNameSet('ttGrid');

The ttGrid cache grid was created from the first standalone TimesTen database. Since the grid already exists, it does not need to be created again.

If desired, you can test the connectivity between the second standalone TimesTen database and the Oracle database using the instructions stated in "Testing the connectivity between the TimesTen and Oracle databases".

Start the cache agent on the second standalone database by calling the ttCacheStart built-in procedure as the cache manager user:

Command> CALL ttCacheStart;

Then create cache groups in the database as the cache manager user. For example, the following statement creates a dynamic AWT global cache group subscriber_accounts that caches the oratt.subscriber table:

CREATE DYNAMIC ASYNCHRONOUS WRITETHROUGH GLOBAL CACHE GROUP subscriber_accounts
FROM oratt.subscriber
 (subscriberid       NUMBER(10) NOT NULL PRIMARY KEY,
  name               VARCHAR2(100) NOT NULL,
  minutes_balance    NUMBER(5) NOT NULL,
  last_call_duration NUMBER(4) NOT NULL);

The definition of the oratt.subscriber cached Oracle table is shown in "Global cache groups".

If any AWT cache groups were created, start the replication agent on the TimesTen database by calling the ttRepStart built-in procedure as the cache manager user:

Command> CALL ttRepStart;

If any global cache groups were created, the database must attach to the cache grid that it is associated with in order to update the cache tables of the global cache groups. Attaching the database to the grid allows the database to become a member of the grid so that cache instances in the cache tables of the global cache groups can maintain consistency among the databases within the grid.

As the cache manager user, attach the second standalone database to the ttGrid cache grid that it is associated with by calling the ttGridAttach built-in procedure. The node number for a standalone TimesTen database is 1.

In the following example, alone2 is a name that is used to uniquely identify the grid member, sys2 is the host name of the TimesTen system where the second standalone database resides, and 5002 is the TCP/IP port for the second standalone database's cache agent process:

Command> CALL ttGridAttach(1,'alone2','sys2',5002);
Command> exit

Replicating cache tables

To achieve high availability, configure an active standby pair replication scheme for cache tables in a read-only cache group or an AWT cache group.

An active standby pair that replicates cache tables from one of these cache group types can automatically change the role of a TimesTen database as part of failover and recovery with minimal chance of data loss. Cache groups themselves provide resilience from Oracle database outages, further strengthening system availability. See "Administering an Active Standby Pair with Cache Groups" in Oracle TimesTen In-Memory Database Replication Guide for more information.

An active standby pair replication scheme provides for high availability of a TimesTen database. Multiple grid members provide for high availability of a TimesTen cache grid. Oracle Real Application Clusters (Oracle RAC) provides for high availability of an Oracle database. For more information about using Oracle In-Memory Database Cache in an Oracle RAC environment, see "Using Oracle In-Memory Database Cache in an Oracle RAC Environment".

Perform the following tasks to configure an active standby pair for TimesTen databases that cache Oracle tables:

Create and configure the active database

The following is the definition of the cacheactive DSN for the active database of the active standby pair that will become a member of the ttGrid cache grid:

[cacheactive]
DataStore=/users/OracleCache/cacheact
PermSize=64
OracleNetServiceName=orcl
DatabaseCharacterSet=WE8ISO8859P1

Start the ttIsql utility and connect to the cacheactive DSN as the instance administrator to create the database. Then create the cache manager user cacheuser whose name, in this example, is the same as the Oracle cache administration user. Then create a cache table user oratt whose name is the same as the Oracle schema user who will own the Oracle tables to be cached in the TimesTen database.

% ttIsql cacheactive
Command> CREATE USER cacheuser IDENTIFIED BY timesten;
Command> CREATE USER oratt IDENTIFIED BY timesten;

As the instance administrator, use the ttIsql utility to grant the cache manager user cacheuser the privileges required to perform the operations listed in Example 3-8 as well as create an active standby pair replication scheme which requires the ADMIN privilege:

Command> GRANT CREATE SESSION, CACHE_MANAGER,
       > CREATE ANY TABLE, ADMIN TO cacheuser;
Command> exit

Start the ttIsql utility and connect to the cacheactive DSN as the cache manager user. Set the cache administration user name and password by calling the ttCacheUidPwdSet built-in procedure.

% ttIsql "DSN=cacheactive;UID=cacheuser;PWD=timesten;OraclePWD=oracle"
Command> CALL ttCacheUidPwdSet('cacheuser','oracle');

Associate the active database to the ttGrid cache grid by calling the ttGridNameSet built-in procedure as the cache manager user:

Command> CALL ttGridNameSet('ttGrid');

The ttGrid cache grid was created from the first standalone TimesTen database. Since the grid already exists, it does not need to be created again.

If desired, you can test the connectivity between the active database and the Oracle database using the instructions stated in "Testing the connectivity between the TimesTen and Oracle databases".

Start the cache agent on the active database by calling the ttCacheStart built-in procedure as the cache manager user:

Command> CALL ttCacheStart;

Then create cache groups in the database as the cache manager user. For example, the following statement creates a dynamic AWT global cache group subscriber_accounts that caches the oratt.subscriber table:

CREATE DYNAMIC ASYNCHRONOUS WRITETHROUGH GLOBAL CACHE GROUP subscriber_accounts
FROM oratt.subscriber
 (subscriberid       NUMBER(10) NOT NULL PRIMARY KEY,
  name               VARCHAR2(100) NOT NULL,
  minutes_balance    NUMBER(5) NOT NULL,
  last_call_duration NUMBER(4) NOT NULL);

The definition of the oratt.subscriber cached Oracle table is shown in "Global cache groups".

As the cache manager user, create an active standby pair replication scheme in the active database using a CREATE ACTIVE STANDBY PAIR statement.

In the following example, cacheact, cachestand and subscr are the file name prefixes of the checkpoint and transaction log files of the active database, standby database and read-only subscriber database. sys3, sys4 and sys5 are the host names of the TimesTen systems where the active database, standby database and read-only subscriber database reside, respectively.

Command> CREATE ACTIVE STANDBY PAIR cacheact ON "sys3", cachestand ON "sys4"
       > SUBSCRIBER subscr ON "sys5";

As the cache manager user, start the replication agent on the active database by calling the ttRepStart built-in procedure. Then declare the database as the active by calling the ttRepStateSet built-in procedure.

Command> CALL ttRepStart;
Command> CALL ttRepStateSet('active');

If any global cache groups were created, the database must attach to the cache grid that it is associated with in order to update the cache tables of the global cache groups. Attaching the database to the grid allows the database to become a member of the grid so that cache instances in the cache tables of the global cache groups can maintain consistency among the databases within the grid.

As the cache manager user, attach the active database to the ttGrid cache grid that it is associated with by calling the ttGridAttach built-in procedure. The node number for an active database is 1.

In the following example:

  • cacheact is a name that is used to uniquely identify the active database grid node

  • cachestand is a name that is used to uniquely identify the standby database grid node

  • sys3 is the host name of the TimesTen system where the active database resides

  • sys4 is the host name of the TimesTen system where the standby database resides

  • 5003 is the TCP/IP port for the active database's cache agent process

  • 5004 is the TCP/IP port for the standby database's cache agent process

Command> CALL ttGridAttach(1,'cacheact','sys3',5003,'cachestand','sys4',5004);
Command> exit

Create and configure the standby database

The following is the definition of the cachestandby DSN for the standby database of the active standby pair that will become a member of the ttGrid cache grid:

[cachestandby]
DataStore=/users/OracleCache/cachestand
PermSize=64
OracleNetServiceName=orcl
DatabaseCharacterSet=WE8ISO8859P1

As the instance administrator, create the standby database as a duplicate of the active database by running a ttRepAdmin -duplicate utility command from the standby database system. The instance administrator user name of the active database's and standby database's instances must be identical.

Use the -keepCG option so that cache tables in the active database are duplicated as cache tables in the standby database because the standby database will have connectivity with the Oracle database.

In the following example:

  • The -from option specifies the file name prefix of the active database's checkpoint and transaction log files

  • The -host option specifies the host name of the TimesTen system where the active database resides

  • The -uid and -pwd options specify a user name and password of a TimesTen internal user defined in the active database that has been granted the ADMIN privilege

  • The -cacheuid and -cachepwd options specify the Oracle cache administration user name and password

  • cachestandby is the DSN of the standby database

% ttRepAdmin -duplicate -from cacheact -host "sys3" -uid cacheuser -pwd timesten
    -cacheuid cacheuser -cachepwd oracle -keepCG cachestandby

Start the ttIsql utility and connect to the cachestandby DSN as the cache manager user. Set the cache administration user name and password by calling the ttCacheUidPwdSet built-in procedure.

% ttIsql "DSN=cachestandby;UID=cacheuser;PWD=timesten;OraclePWD=oracle"
Command> CALL ttCacheUidPwdSet('cacheuser','oracle');

The ttGrid cache grid was created from the first standalone TimesTen database. Since the grid already exists, it does not need to be created again.

The ttRepAdmin -duplicate -keepCG utility command associated the standby database to the ttGrid cache grid so this association does not need to be done explicitly.

If desired, you can test the connectivity between the standby database and the Oracle database using the instructions stated in "Testing the connectivity between the TimesTen and Oracle databases".

Start the cache agent on the standby database by calling the ttCacheStart built-in procedure as the cache manager user:

Command> CALL ttCacheStart;

As the cache manager user, start the replication agent on the standby database by calling the ttRepStart built-in procedure.

Command> CALL ttRepStart;

If any global cache groups were created, the database must attach to the cache grid that it is associated with in order to update the cache tables of the global cache groups. Attaching the database to the grid allows the database to become a member of the grid so that cache instances in the cache tables of the global cache groups can maintain consistency among the databases within the grid.

As the cache manager user, attach the standby database to the ttGrid cache grid that it is associated with by calling the ttGridAttach built-in procedure. The node number for a standby database is 2. Use the same TCP/IP ports specified for the cache agent of the active and standby databases that were specified when configuring the active database.

In the following example:

  • cacheact is a name that is used to uniquely identify the active database grid node

  • cachestand is a name that is used to uniquely identify the standby database grid node

  • sys3 is the host name of the TimesTen system where the active database resides

  • sys4 is the host name of the TimesTen system where the standby database resides

  • 5003 is the TCP/IP port for the active database's cache agent process

  • 5004 is the TCP/IP port for the standby database's cache agent process

Command> CALL ttGridAttach(2,'cacheact','sys3',5003,'cachestand','sys4',5004);
Command> exit

Create and configure the read-only subscriber database

The following is the definition of the rosubscriber DSN for the read-only subscriber database of the active standby pair:

[rosubscriber]
DataStore=/users/OracleCache/subscr
PermSize=64
DatabaseCharacterSet=WE8ISO8859P1

As the instance administrator, create the read-only subscriber database as a duplicate of the standby database by running a ttRepAdmin -duplicate utility command from the read-only subscriber database system. The instance administrator user name of the standby database instance and read-only subscriber database instance must be identical.

Use the -noKeepCG option so that cache tables in the standby database are duplicated as regular tables in the read-only subscriber database because the read-only subscriber database will have no connectivity with the Oracle database. As a result, the read-only subscriber database will not be associated with a cache grid.

In the following example:

  • The -from option specifies the file name prefix of the standby database's checkpoint and transaction log files

  • The -host option specifies the host name of the TimesTen system where the standby database resides

  • The -uid and -pwd options specify a user name and password of a TimesTen internal user defined in the standby database that has been granted the ADMIN privilege

  • rosubscriber is the DSN of the read-only subscriber database

% ttRepAdmin -duplicate -from cachestand -host "sys4" -uid cacheuser -pwd timesten
    -noKeepCG rosubscriber

As the cache manager user, start the replication agent on the read-only subscriber database by calling the ttRepStart built-in procedure.

% ttIsql "DSN=rosubscriber;UID=cacheuser;PWD=timesten"
Command> CALL ttRepStart;
Command> exit

Example of data sharing among the grid members

The definition of the oratt.subscriber cached Oracle table is shown in "Global cache groups".

The following is the data in the oratt.subscriber cached Oracle table.

SUBSCRIBERID  NAME              MINUTES_BALANCE   LAST_CALL_DURATION
------------  ----------------  ---------------   ------------------    
        1001  Jane Anderson                  75                   15
        1004  Robert Phillips                60                   20
        1005  William Ackerman               40                   10
        1009  Sandy Little                   90                   30

The oratt.subscriber TimesTen cache table in the subscriber_accounts global cache group is initially empty in all five TimesTen databases (cachealone1, cachealone2, cacheactive, cachestandby, rosubscriber):

Command> SELECT * FROM oratt.subscriber;
0 rows found.

Issue the following SELECT statement on the cachealone1 TimesTen database to dynamically load one cache instance from the cached Oracle table into the TimesTen cache table:

Command> SELECT * FROM oratt.subscriber WHERE subscriberid = 1004;
< 1004, Robert Phillips, 60, 20 >

As a result, the cachealone1 standalone database grid member has ownership of the cache instance with subscriber ID 1004. This cache instance does not exist in any of the other grid members.

Next issue the following SELECT statement on the cachealone2 TimesTen database to dynamically load one cache instance from the cached Oracle table into the TimesTen cache table:

Command> SELECT * FROM oratt.subscriber WHERE subscriberid = 1004;
< 1004, Robert Phillips, 60, 20 >

As a result, the cachealone2 standalone database grid member has taken ownership of the cache instance with subscriber ID 1004 from the cachealone1 grid member. This cache instance no longer exists in cachealone1 and does not exist in any of the other grid members.

Next issue the following INSERT statement on the cacheactive TimesTen database to insert a new cache instance into the TimesTen cache table:

Command> INSERT INTO oratt.subscriber VALUES (1012, 'Charles Hill', 80, 16);

As a result, the cacheactive active database grid node has ownership of the cache instance with subscriber ID 1012. The cache instance is replicated to the cachestandby standby database and the rosubscriber read-only subscriber database. The cache instance does not exist in any of the other grid members. The insert operation is also automatically propagated to the oratt.subscriber cached Oracle table.

A standby database or a read-only subscriber database cannot directly take ownership of a cache instance. A dynamic or manual load operation is prohibited including SELECT statements that result in a dynamic load because these databases are read-only.

No data sharing occurs with cache tables in local cache groups among the grid members. Each grid member can have a different number of local cache groups. If two grid members have a local cache group with the same definition, the data in the cache table within one grid member can overlap with the data in the cache table within the other grid member. There is no concept of cache instance ownership for cache tables in local cache groups.

Performing global queries on a cache grid

If you want to access data on all the nodes of a cache grid, perform a global query. For example, consider this statement:

SELECT MAX(salary) FROM employees;

When global query processing is not enabled, the statement returns the maximum salary for the rows that exist on the local node. When global query processing is enabled, it returns the maximum salary across all employee records in the cache grid.

A global query can reference a cache table or a noncache table in all attached grid members. The referenced tables can be any combination of local tables, cache tables, views, materialized views and table synonyms. The tables must have the same definition for columns affected by the global query.

Enable global query processing by setting an optimizer flag. Before executing a global query, turn autocommit off and call the ttOptSetFlag built-in procedure to set the GlobalProcessing optimizer flag to 1:

autocommit 0;
CALL ttOptSetFlag('GlobalProcessing', 1);

You can perform global queries with local joins by using the GlobalLocalJoin optimizer flag instead of the GlobalProcessing optimizer flag. See "Performing global queries with local joins".

Global queries that are enabled by the GlobalProcessing optimizer flag have these restrictions:

  • The query must reference exactly one table.

  • The query cannot include a self join, a derived table or subqueries.

  • The query cannot reference a global temporary table.

  • The query cannot be performed on the standby database of an active standby grid member.

  • ROWNUM and GROUP BY clauses cannot be used in the same query.

  • The query cannot be used with GROUPING SETS, CUBE, ROLLUP, GROUPING, GROUPING_ID, or GROUP_ID.

  • The query cannot include the WITH clause.

  • The query cannot include analytic SQL functions.

  • The PassThrough connection attribute must be set to 0.

Performing global queries with local joins

You can execute a global query with a local join. This means that the SELECT statement is global (selects across grid members), but the join result is local (the join resides on the local node). You may find it useful to join fact and dimension tables, to join tables that are a similar size and whose data are distributed based on the join key or to join tables of a global cache group based on a primary key or foreign key relationship. Use the GlobalLocalJoin optimizer flag to enable a global query with local join.

Global queries with local joins can join cache tables, global cache tables, noncache tables with the same definition, views and materialized views. Global queries with local joins can include sequences.

A global query executed in serializable isolation belongs to the global transaction of the SELECT statement. A global query executed in read committed isolation is executed in its own transaction on the remote nodes.

These operations in a global query are executed locally in each grid member:

  • Joins

  • Derived tables

  • Views

  • GROUP BY, HAVING, ORDER BY and DISTINCT clauses in a subquery

These operations in the main query of a global query are executed globally:

  • GROUP BY clause and aggregation

  • ORDER BY clause

  • DISTINCT clause

  • HAVING clause. This clause cannot contain a join.

Synonyms are resolved on the node where the query originates.

Before executing a global query with local join, turn autocommit off and call the ttOptSetFlag built-in procedure to set the GlobalLocalJoin optimizer flag to 1:

autocommit off;
CALL ttOptSetFlag('GlobalLocalJoin', 1)

Global queries with local joins have these restrictions:

  • The query cannot include the ROWNUM expression.

  • The query cannot include a set operator.

  • The query cannot include the WITH clause.

  • The query cannot be used with GROUxPING SETS, CUBE, ROLLUP, GROUPING, GROUPING_ID, or GROUP_ID.

  • The query cannot include analytic SQL functions.

  • The PassThrough connection attribute must be set to 0.

  • The query cannot be performed on the standby database of an active standby grid member.

Obtaining information about the location of data in the cache grid

You may wish to execute a global query without changing the location of the data.You can use SQL functions to determine which grid node contains the information and then execute a query for the information from that node.

Use these SQL functions in a global query to obtain information about the location of data in the cache grid:

  • TTGRIDMEMBERID() - Returns the node ID of the node on which the query is executed.

  • TTGRIDNODENAME() - Returns the name of the node on which the query is executed.

  • TTGRIDUSERASSIGNEDNAME() - Returns the user-assigned name of the node on which the query is executed. The user assigns the name when the ttGridAttach built-in procedure is called. If you are using Oracle Clusterware, you do not call ttGridAttach directly and the user-assigned name is generated by TimesTen.

These functions can be used in a SELECT statement and in these clauses of a SELECT statement:

  • WHERE clause

  • GROUP BY clause

  • ORDER BY clause

Figure 6-1 shows a cache grid whose members have user-assigned names alone1, alone2, and an active standby pair on nodes cacheact and cachestand. Queries do not retrieve data from the standby database. The standby database has the same data as the active database.

Figure 6-1 Location of data in a cache grid

Description of Figure 6-1 follows
Description of "Figure 6-1 Location of data in a cache grid"

The following example shows a global query that retrieves employee_id, the user-assigned node name, and the member ID from the employee table from the grid members.

autocommit off;
CALL ttOptSetFlag('GlobalProcessing', 1);
SELECT employee_id, TTGRIDUSERASSIGNEDNAME(), TTGRIDMEMBERID() FROM employees;
COMMIT;
< 100, alone1, 1>
< 101, alone2, 2>
< 102, cacheact, 3>
< 103, alone1, 1>
< 104, cacheact, 3>
...

The rows that are returned show which grid node and member owns each row of the cache instance. Subsequent queries can access the appropriate node without changing the ownership of the data. For example, execute this query on grid member cacheact, including TTGRIDUSERASSIGNEDNAME() in the query to verify that cacheact is the grid where the query is executed:

SELECT employee_id, last_name, hire_date , TTGRIDUSERASSIGNEDNAME() 
 FROM employees
 WHERE employee_id=104;
< 104, Ernst, 1991-05-21 00:00:00, cacheact >

For more information about TTGRIDMEMBERID(), TTGRIDNODENAME() and TTGRIDUSERASSIGNEDNAME(), see "Cache grid functions" in Oracle TimesTen In-Memory Database SQL Reference.

Adding other elements to a cache grid or grid member

If a database that contains a global cache group is attached to a cache grid, a subsequent database can attach to the same grid and become a grid member only if it contains a global cache group with the same definition as the global cache group in the database that is attached to the grid. The subsequent database cannot attach to the same grid if it contains more or fewer global cache groups than the database that is attached to the grid. Each database can contain a different number of local cache groups with non-matching definitions between the databases.

Before you can create a new dynamic AWT global cache group in a TimesTen database that is attached to a cache grid, stop the replication agent on the database. Then restart the replication agent after creating the global cache group. The new global cache group cannot be manually or dynamically loaded, and its cache tables cannot be updated until the cache group has been created with the same definition in all the grid members. In the standalone databases and the active database, create the new global cache group manually. For the standby database and the read-only subscriber databases, use the ttDestroy utility to drop the databases and a ttRepAdmin -duplicate utility command to re-create the databases so that they contain the new global cache group.

PKC#xPK AAoa,mimetypePKAA׾YT:iTunesMetadata.plistPKAAYuMETA-INF/container.xmlPKAA~@OEBPS/oraclescripts.htmPKAA5OEBPS/gettingstarted.htmPKAA[pTOwOEBPS/cover.htmPKAA!OEBPS/whatsnew.htmPKAAgRiOEBPS/title.htmPKAAU:0'OEBPS/caintro.htmPKAAmK525OEBPS/define.htmPKAA1__GOEBPS/prereqs.htmPKAAV77OEBPS/operations.htmPKAA( 4 4OEBPS/glossary.htmPKAAQ--OEBPS/preface.htmPKAAz:0BOEBPS/index.htmPKAA%&U33OEBPS/img/careportconfig.jpgPKAA@Rs)mO OEBPS/img/careporthome2.jpgPKAA UdE EO! OEBPS/img/careportimp.jpgPKAA&I' 11f OEBPS/img/roquicks0.gifPKAA(faa OEBPS/img/cacheadvisordbs.gifPKAAyeK OEBPS/img/careportcg.jpgPKAAP#// OEBPS/img/example2.gifPKAAv C OEBPS/img/loadflush.gifPKAAX3 ((-OEBPS/img/readonlycg.gifPKAAs//7*7UOEBPS/img/awtquickcreate.gifPKAAա))dOEBPS/img/passthrough0.gifPKAA&ΝKUFUOEBPS/img/writequicks7.gifPKAA jjD OEBPS/img/cachegroupover2.gifPKAAѮ=888!vOEBPS/img/cachegrouploadshare.gifPKAA/wV'OEBPS/img/careporthome.jpgPKAAlWOEBPS/img/careportimp2.jpgPKAA~i4'/'g_OEBPS/img/writetabquick.gifPKAAF00OEBPS/img/cachegroup1table.gifPKAAɧ?&:&OEBPS/img/roquicks3.gifPKAA2 iOEBPS/img/globalquery.gifPKAAg0)})OEBPS/img/roquicks6.gifPKAAGE͓z(OEBPS/img/writethruquick.gifPKAAF|WHOEBPS/img/careportsql.jpgPKAAW[LHGHaOEBPS/img/passthrough4.gifPKAAP+z+YOEBPS/img/passthrough1.gifPKAAc\RWROEBPS/img/passthrough3.gifPKAACD`OEBPS/img/careportcg2.jpgPKAA.i!!HOEBPS/img/cachegrid.gifPKAAfTOEBPS/img/careportsqlstats.jpgPKAAF'99AOEBPS/img/passthrough2.gifPKAAF<66OEBPS/img/roquicks7.gifPKAA ~GWMOEBPS/oracle_tt.htmPKAAݽU~U7OEBPS/concepts.htmPKAAe5[V mOEBPS/toc.ncxPKAA N%2 2}OEBPS/dataguard.htmPKAAgVEQEOEBPS/content.opfPKAAwiR&&OEBPS/manage.htmPKAA_ OEBPS/dcommon/prodbig.gifPKAAY@ "OEBPS/dcommon/doclib.gifPKAA nnH$OEBPS/dcommon/oracle-logo.jpgPKAACOEBPS/dcommon/contbig.gifPKAA.OEBPS/dcommon/darbbook.cssPKAAMά""!{OEBPS/dcommon/O_signature_clr.JPGPKAAPz OEBPS/dcommon/feedbck2.gifPKAA-OEBPS/dcommon/feedback.gifPKAAː5OEBPS/dcommon/booklist.gifPKAAN61vOEBPS/dcommon/cpyr.htmPKAA!:3.OEBPS/dcommon/masterix.gifPKAAeӺ1,kOEBPS/dcommon/doccd.cssPKAA7 OEBPS/dcommon/larrow.gifPKAA#OEBPS/dcommon/indxicon.gifPKAAS'"sOEBPS/dcommon/leftnav.gifPKAAhu,OEBPS/dcommon/uarrow.gifPKAAl-OJOEBPS/dcommon/oracle.gifPKAA(OEBPS/dcommon/index.gifPKAAGC OEBPS/dcommon/bookbig.gifPKAAJV^OEBPS/dcommon/rarrow.gifPKAA枰pkOEBPS/dcommon/mix.gifPKAAo"nR M OEBPS/dcommon/doccd_epub.jsPKAAv I ` OEBPS/dcommon/toc.gifPKAA r~$ OEBPS/dcommon/topnav.gifPKAA1FA OEBPS/dcommon/prodicon.gifPKAA3( # OEBPS/dcommon/bp_layout.cssPKAAx[?:OEBPS/dcommon/bookicon.gifPKAAp*c^"OEBPS/dcommon/conticon.gifPKAAʍH&OEBPS/dcommon/blafdoc.cssPKAA+&G=OEBPS/dcommon/rightnav.gifPKAAje88>OEBPS/dcommon/oracle-small.JPGPKAAއ{&!wOEBPS/dcommon/help.gifPKAA|?w?eyOEBPS/cleanup.htmPKAAXX OEBPS/toc.htmPKAAC#x!OEBPS/gridmembers.htmPKJ%