clickzetta-dbutils 1.0.16__py3-none-any.whl → 1.0.19__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Binary file
@@ -1,5 +1,3 @@
1
- from .db_utils import get_active_engine, get_lakehouse_connection, DatabaseConnectionManager, ConnectionConfig, \
2
- DatabaseConnectionError, get_active_lakehouse_engine, clean_connection_cache
3
-
4
- __all__ = ["get_active_engine", "get_lakehouse_connection", "get_active_lakehouse_engine", "DatabaseConnectionManager", "ConnectionConfig",
5
- "DatabaseConnectionError", "clean_connection_cache"]
1
+ # Pyarmor 9.0.8 (trial), 000000, non-profits, 2025-02-21T11:22:16.905236
2
+ from pyarmor_runtime_000000 import __pyarmor__
3
+ __pyarmor__(__name__, __file__, b'PY000000\x00\x03\n\x00o\r\r\n\x80\x00\x01\x00\x08\x00\x00\x00\x04\x00\x00\x00@\x00\x00\x00\x7f\x02\x00\x00\x12\t\x04\x00d\xf5b\x9fO\xe3qe\xfd\x87uO\xe1V\x96\xda\x00\x00\x00\x00\x00\x00\x00\x00\x984\x88\xce\xa0\xb5\xee\xb9\xe1\xcc!6\x83"5\x02\nj\x04O\xd9\x0b\x12*\xe9X\xce\xb3\xe3\x91<\xd3\x188\xdd@\xde\xf2\xf3\xc7\xd7\x85\xe1\xc8\xca\xa0FkH\xf9\x16\xc5\xa0l\x95VK\xb6\xab\x92\x8c\xd1-\xb6\xf9\x86\xedJ08\xa9,\x84\xda\x01\xf8\x05sD\xe3\x18\xd5Z\xcb\xb7\x86\x92\xaa@\xf0`\x01\xc2\xd5\xe3\xfc\x83W\xbf\xb8 \xee\x8b\x16\xe0\x89Y\xc5zc\xdb\x99\xf0\x9f\x893\xaf\xc6\xb4N\xc9j4\\hS\xec\x90\xea|\x96T\xa7\x90\x10Y\xf6E\xb5 C\xfd\xa0\xd0\xf3\x9e(V\xe0\x81d\xc8\xef!7k\xd4\xa8h\x07\x7f\xf6^\xa9\xc5(\x8b\x9c\x98\xfd\\qV\x97\t\xf0.\xd0{tSF\x00y\xbc/vn\xbe\xd9\xe9\xd9|M\x1c\xe7\x83Y\x8bqH\x8a?\x82\xbf,\x8fR\xc8b?c\xc4\xcfD\xeb\x93GLz\x94\x98\x03+U1\xe5\x13\xbc\xca^Wz\x17\xda\x8d=\xe4}\xf9\xe9P;_\xb5\x91\xfd\nS\xa0\xdbG?Z\xd7d\xce\xf1\x1f\xb4\xd5z\xb9nK\x9fF\xd75\x12\xb8\x1bP\xea\xaa\xc3o\xb5\xa7\xccX\xe1\xbed\xaa~\td\x9d\x9f\x02\x97\x12\xee\x0bd:\xdfV!\xcc\x11\x0bs\xab\xdd\xca\x1a\xf8ar\xa7\x1b\xe8\xc4)\xb2)\xc8\xed\xfa\xad\x8d\xd4\xebwSv#g\x0c\xc1\x00HB\xea\x88i\xf1S\x93,nZU\x17u;K5\xb4\x92>\x9a\x02\x1a\xe2)\t\xc5\xa5\x1ai\xec\xa3\xe2a\xe1h\x95\xa3\xde\x8d\x06\xa7l\xc5\xdf\x0c\xb7\x96\xb5\x18\x15\x16\x0b_\x9d0UR"\x00\xf7\xb8\xa7\xcd?\x96M\x86_N\xa8^\xaeI\xa4M\x05=*\xa70:L\x1d\n\xbf&\x1e_<\xcd\xcc\xc4 \xd3\xb7\'\xf7*C\xbbb\xf4\xfe\xd0cwH\x94\x93ge\xcf\x82\xc9.\x8et\xd7Aq2T\xf2\xd4\xec\xf2`\x8f\xe5\x8b\xa6\xf3\x01k\xf9\xe1S\xf0\x97q\xb0\xbbU\xc1\xba\x1f\x96H\x12\xe0S\xa0\x01c\xe5`\xedA(\xd7\x07\xb2\x9e\xba\xf5##\xf9\xde\xe6\x19a?$\xc7W\x0ei\x07\xad\xf1v\xa0p>\xeb\xa4\xa4w\xdfc\x19\x07\'wD\x14(<3\xbdw\xb1\x9a\xe3W\n(g\x14\xecV%S\xba\x93\xdd\xbf\xa5.\xf1\xab\xc3|\x1a}\x95$ov\x9a\x1f\xd3\x83\x90Y\x84\xee\xb5\x14\x8dZ\xb8\x88\x08\x0e\x99(\x90^\xed\x06\x15F\x10M\x9a\xe7\xea\xc5%\xb4 \xa0\xed-\x9a\xa4\x9c\xd36K\x91\xf2}&\x13\xf0 \x03\xd90\x19\xcb\xae\xc3\xcd\xee>\xa0\x10\xf13\x1c\xb8S\xd5\xec\x00\xeb)W\xbd\x00\xf6')
@@ -1,409 +1,3 @@
1
- import json
2
- import os
3
- import urllib.parse
4
- from dataclasses import dataclass, field
5
- from logging import getLogger
6
- from typing import Optional, Dict
7
-
8
- from sqlalchemy import create_engine as sa_create_engine
9
- from sqlalchemy.engine import URL
10
- from sqlalchemy.engine.base import Engine
11
-
12
- _log = getLogger(__name__)
13
-
14
-
15
- class DatabaseConnectionError(Exception):
16
- """Custom exception for database connection errors."""
17
- pass
18
-
19
-
20
- @dataclass
21
- class ConnectionConfig:
22
- dsName: str
23
- dsType: int
24
- schema: str = "public"
25
- workspaceName: str = "default"
26
- table: Optional[str] = None
27
- host: Optional[str] = None
28
- magicToken: Optional[str] = None
29
- username: Optional[str] = None
30
- password: Optional[str] = None
31
- instanceName: Optional[str] = None
32
- options: Dict[str, str] = field(default_factory=dict)
33
- query: Dict[str, str] = field(default_factory=dict)
34
-
35
-
36
- class DatabaseConnectionManager:
37
- """
38
- Manages database connections with flexible configuration options.
39
- """
40
-
41
- def __init__(self, ds_name: Optional[str] = None):
42
- """
43
- Initialize a database connection for a specific data source.
44
- """
45
- self._ds_name = ds_name
46
- self._vcluster: Optional[str] = None
47
- self._workspace: Optional[str] = None
48
- self._driver: Optional[str] = None
49
- self._schema: Optional[str] = None
50
- self._engine: Optional[Engine] = None
51
- self._options = {}
52
- self._query: Dict[str, str] = {}
53
- self._host: Optional[str] = None
54
-
55
- @classmethod
56
- def load_connection_configs(cls) -> Dict[str, ConnectionConfig]:
57
- """
58
- Load and cache connection configurations from environment variables.
59
-
60
- Returns:
61
- Dict of connection configurations keyed by data source name
62
- """
63
- if not hasattr(DatabaseConnectionManager, '_connection_cache'):
64
- # Retrieve and decode connection info from environment variable
65
- conn_info_str = None
66
- if pipe_path := os.environ.get('EXECUTE_LOG_ID'):
67
- _log.info(f"Loading EXECUTE_LOG_ID is : {pipe_path}")
68
- try:
69
- with open(pipe_path, 'r') as pipe:
70
- conn_info_str = pipe.read()
71
- except FileNotFoundError:
72
- raise DatabaseConnectionError(f"Path not found: {pipe_path}")
73
- # Fall back to environment variable if pipe is not found
74
- conn_info_str = conn_info_str or os.environ.get('connectionInfos', '[]')
75
- if not conn_info_str:
76
- raise DatabaseConnectionError("No connection information found in env")
77
- decoded_info = urllib.parse.unquote(conn_info_str)
78
- conn_list = json.loads(decoded_info)
79
-
80
- # Create connection configs
81
- cls._connection_cache = {
82
- info.get('dsName'): ConnectionConfig(**info)
83
- for info in conn_list
84
- }
85
-
86
- return cls._connection_cache
87
-
88
- def get_connection_info(self, ds_name: str) -> ConnectionConfig:
89
- """
90
- Find connection info by data source name
91
- """
92
- connections = self.load_connection_configs()
93
-
94
- # Validate data source exists
95
- if ds_name not in connections:
96
- raise DatabaseConnectionError(f"Data source '{ds_name}' not found")
97
-
98
- config = connections.get(ds_name)
99
- config.options.update(self._options)
100
- if self._query:
101
- config.query.update(self._query)
102
- return config
103
-
104
- @classmethod
105
- def get_connection_infos(cls) -> Dict[str, ConnectionConfig]:
106
- """
107
- Get all connection infos
108
- """
109
- return DatabaseConnectionManager.load_connection_configs()
110
-
111
- def use_workspace(self, workspace: str) -> 'DatabaseConnectionManager':
112
- """
113
- Set workspace for the connection.
114
-
115
- Args:
116
- workspace (str): Workspace name
117
-
118
- Returns:
119
- self: For method chaining
120
- """
121
- self._workspace = workspace
122
- return self
123
-
124
- def use_driver(self, driver: str) -> 'DatabaseConnectionManager':
125
- """
126
- Set driver for the connection.
127
-
128
- Args:
129
- driver (str): Driver name
130
-
131
- Returns:
132
- self: For method chaining
133
- """
134
- self._driver = driver
135
- return self
136
-
137
- def use_schema(self, schema: str) -> 'DatabaseConnectionManager':
138
- """
139
- Set schema for the connection.
140
-
141
- Args:
142
- schema (str): Schema name
143
-
144
- Returns:
145
- self: For method chaining
146
- """
147
- self._schema = schema
148
- return self
149
-
150
- def use_vcluster(self, vcluster: str) -> 'DatabaseConnectionManager':
151
- """
152
- Set virtual cluster for the connection.
153
-
154
- Args:
155
- vcluster (str): Virtual cluster name
156
-
157
- Returns:
158
- self: For method chaining
159
- """
160
- self._vcluster = vcluster
161
- return self
162
-
163
- def use_options(self, options):
164
- """
165
- Set additional connection options.
166
-
167
- Args:
168
- options (dict): Additional connection options
169
-
170
- Returns:
171
- self: For method chaining
172
- """
173
- if options:
174
- self._options.update(options)
175
- return self
176
-
177
- def use_query(self, query: dict) -> 'DatabaseConnectionManager':
178
- """
179
- Set query for the connection.
180
- Args:
181
- query (str): Query string
182
- Returns:
183
- self: For method chaining
184
- """
185
- if query:
186
- self._query.update(query)
187
- return self
188
-
189
- def use_host(self, host: str) -> 'DatabaseConnectionManager':
190
- """
191
- Set host for the connection.
192
- Args:
193
- host (str): Host name
194
- Returns:
195
- self: For method chaining
196
- """
197
- if host:
198
- self._host = host
199
- return self
200
-
201
- def build(self, *args, **kwargs) -> Engine:
202
- """
203
- Create SQLAlchemy engine based on data source name and optional schema
204
-
205
- :return: SQLAlchemy Engine
206
- """
207
- conn_info: ConnectionConfig = self.get_connection_info(self._ds_name)
208
-
209
- if not conn_info.host:
210
- raise DatabaseConnectionError("Missing connection host for MySQL data source")
211
-
212
- ds_type = conn_info.dsType
213
- options = conn_info.options or {}
214
- schema = self._schema or conn_info.schema
215
- host = self._host or conn_info.host
216
- host_parts = host.split(':')
217
- connect_args = {}
218
-
219
- # Construct connection URL based on data source type
220
- if ds_type == 5: # Mysql
221
- if not conn_info.username or not conn_info.password:
222
- raise DatabaseConnectionError("Missing username or password for MySQL data source")
223
-
224
- options.update(conn_info.query)
225
- url = URL.create(
226
- drivername=self._driver or 'mysql+mysqlconnector',
227
- username=conn_info.username,
228
- password=conn_info.password,
229
- host=host_parts[0],
230
- port=host_parts[1] if len(host_parts) > 1 else None,
231
- database=schema,
232
- query=options
233
- )
234
- return sa_create_engine(url, *args, **kwargs)
235
-
236
- elif ds_type == 7: # PostgreSQL
237
- url = URL.create(
238
- drivername=self._driver or 'postgresql+psycopg2',
239
- username=conn_info.username,
240
- password=conn_info.password,
241
- host=host_parts[0],
242
- port=host_parts[1] if len(host_parts) > 1 else None,
243
- database=schema,
244
- query=conn_info.query
245
- )
246
- connect_args = {'options': self._convert_options(options)}
247
-
248
- elif ds_type == 1: # ClickZetta
249
- if not conn_info.workspaceName or not conn_info.instanceName:
250
- raise DatabaseConnectionError("Missing required parameters 'workspace_name', "
251
- "'instance_name' for ClickZetta data source")
252
- if not self._vcluster:
253
- raise DatabaseConnectionError("Missing virtual cluster for ClickZetta data source")
254
-
255
- # Generate base parameters
256
- query_params = {
257
- "virtualcluster": self._vcluster
258
- }
259
-
260
- if schema:
261
- query_params["schema"] = schema
262
-
263
- query_params.update(options)
264
- query_params.update(conn_info.query)
265
-
266
- full_host = f"{conn_info.instanceName}.{conn_info.host}"
267
-
268
- if conn_info.username and conn_info.password:
269
- url = URL.create(
270
- drivername="clickzetta",
271
- username=conn_info.username,
272
- password=conn_info.password,
273
- host=full_host,
274
- database=conn_info.workspaceName,
275
- query=query_params
276
- )
277
- elif conn_info.magicToken:
278
- # Use magic token for authentication, do not require username and password
279
- query_params["magic_token"] = conn_info.magicToken
280
- url = URL.create(
281
- drivername="clickzetta",
282
- host=full_host,
283
- database=conn_info.workspaceName,
284
- query=query_params
285
- )
286
- else:
287
- raise ValueError("username and password or token must be specified")
288
- else:
289
- raise ValueError(f"Unsupported data source type: {ds_type}")
290
-
291
- self._engine = sa_create_engine(url, connect_args=connect_args, *args, **kwargs)
292
- return self._engine
293
-
294
- @staticmethod
295
- def _convert_options(options):
296
- if not options:
297
- return ''
298
- return ' '.join([f'-c{k}={v}' for k, v in options.items()])
299
-
300
-
301
- def get_lakehouse_connection(conn):
302
- return conn.connection.connection
303
-
304
-
305
- def get_active_engine(
306
- ds_name: str,
307
- vcluster: Optional[str] = None,
308
- workspace: Optional[str] = None,
309
- schema: Optional[str] = None,
310
- options: Optional[Dict[str, str]] = None,
311
- query: Optional[Dict[str, str]] = None,
312
- driver: Optional[str] = None,
313
- host: Optional[str] = None,
314
- *args, **kwargs
315
- ) -> Engine:
316
- """
317
- Convenience function to create a database engine.
318
-
319
- Args:
320
- ds_name (str): Data source name. Required.
321
- vcluster (str, optional): Virtual cluster name for ClickZetta data source. Required for ClickZetta.
322
- workspace (str, optional): Workspace name. Default is 'default'.
323
- schema (str, optional): Schema name for the connection. Default is 'public'.
324
- options (dict, optional): Additional connection options.
325
- query (dict, optional): Additional query parameters for SQLAlchemy url.
326
- driver (str, optional): Driver name for the connection.
327
- host (str, optional): Host name for the connection.
328
- *args: Additional arguments for SQLAlchemy engine.
329
-
330
- Returns:
331
- SQLAlchemy Engine instance
332
- """
333
- manager = DatabaseConnectionManager(ds_name)
334
-
335
- if workspace:
336
- manager.use_workspace(workspace)
337
- if schema:
338
- manager.use_schema(schema)
339
- if vcluster:
340
- manager.use_vcluster(vcluster)
341
- if options:
342
- manager.use_options(options)
343
- if query:
344
- manager.use_query(query)
345
- if driver:
346
- manager.use_driver(driver)
347
- if host:
348
- manager.use_host(host)
349
-
350
- return manager.build(*args, **kwargs)
351
-
352
-
353
- def get_active_lakehouse_engine(
354
- vcluster: Optional[str] = None,
355
- workspace: Optional[str] = None,
356
- schema: Optional[str] = None,
357
- options: Optional[Dict[str, str]] = None,
358
- query: Optional[Dict[str, str]] = None,
359
- driver: Optional[str] = None,
360
- *args, **kwargs
361
- ) -> Engine:
362
- """
363
- Convenience function to create a database engine for lakehouse (ClickZetta) data source.
364
-
365
- Args:
366
- vcluster (str, optional): Virtual cluster name for ClickZetta data source. Required.
367
- workspace (str, optional): Workspace name. Default is 'default'.
368
- schema (str, optional): Schema name for the connection. Default is 'public'.
369
- options (dict, optional): Additional connection options.
370
- query (dict, optional): Additional query parameters for SQLAlchemy url.
371
- driver (str, optional): Driver name for the connection.
372
- *args: Additional arguments for SQLAlchemy engine.
373
- **kwargs: Additional keyword arguments for SQLAlchemy engine.
374
-
375
- Returns:
376
- SQLAlchemy Engine instance
377
-
378
- Raises:
379
- DatabaseConnectionError: If no lakehouse data source is found in the configuration.
380
- """
381
- # Get all connection configurations
382
- conn_infos = DatabaseConnectionManager.get_connection_infos()
383
-
384
- # Find the lakehouse (ClickZetta) data source
385
- lakehouse_ds = None
386
- for ds_name, conn_info in conn_infos.items():
387
- if conn_info.dsType == 1: # ClickZetta type
388
- lakehouse_ds = ds_name
389
- break
390
-
391
- if not lakehouse_ds:
392
- raise DatabaseConnectionError("No lakehouse data source found in configuration")
393
-
394
- # Create engine using the found lakehouse data source
395
- return get_active_engine(
396
- ds_name=lakehouse_ds,
397
- vcluster=vcluster,
398
- workspace=workspace,
399
- schema=schema,
400
- options=options,
401
- query=query,
402
- driver=driver,
403
- *args, **kwargs
404
- )
405
-
406
- def clean_connection_cache():
407
- """Clear connection cache before each test"""
408
- if hasattr(DatabaseConnectionManager, '_connection_cache'):
409
- delattr(DatabaseConnectionManager, '_connection_cache')
1
+ # Pyarmor 9.0.8 (trial), 000000, non-profits, 2025-02-21T11:22:16.924362
2
+ from pyarmor_runtime_000000 import __pyarmor__
3
+ __pyarmor__(__name__, __file__, b'PY000000\x00\x03\n\x00o\r\r\n\x80\x00\x01\x00\x08\x00\x00\x00\x04\x00\x00\x00@\x00\x00\x00\xc1B\x00\x00\x12\t\x04\x00\xc6F\xbc\x884\xb6\xe2*\xa4\x99\xd5\xdc\xd2\x109\x16\x00\x00\x00\x00\x00\x00\x00\x00\x18\xb7\x10S\xfc\xcf\xad$L\xe0^6\xfc_\xab\x80\xaa\xb1E\x1f#\xcf\xd9\x8c\xf6E\xc4<\x8c\xfa\xde\xa1\xa5>\x1d\xaa\xf1\x8c\'\xdal\xdc\xbc\x81\x10d18\x01\xb2\x84\x8cI\xd0\x9bz\xc5\x13;\x84]\xb1\x02\xa7\xa7\xf8D\xdcm\xf2qvy\x81/\x1f\xd1\x01,\x19v"\x8bm\x10~}\x9e0\xc1e\x00\x1f@~\xde\x0bO\xf6i\xe3\x1f&\xd2\xd2\x0b|\xe8\x90\x06w\xa23\xc5\xbb\x1e\xcd\x1fT\xd6\xb2\xcf*\xf8\x91\xf5\xb8\xbd@\xf8\xcb\x9d\x03\x1bu4\x87\x04\xe4\x1a\xe6\x15\x9d(_i\xc4\xa3\xd9e\xe5?\\g4:\xb8\xd0\xbb\x96\xcc\xe4\xfb\xdc\x8f\r<\x08\x87\xe5\xe6\xa1\xcf\x01\x0f\xceU\xd4f\x05\xeb\x87FN\xde\xc8n\rI\xc2\xdaP\x11&\x83$\xfa\x96\x00\xf6v\x87\xec\xdb8\xecuN\\\xf5\x11\xa0g\x1f;_\xfa\xac\xd2\xa8n\x9f\xc45\xb9\xd9\xa4J\xaf\x91>M;\xb2<U\xcdC\x8b>\x98w\x9d\xa4\x117k\x01\x89\xbb\x12\xa9&\x17&S\xc6\xe6*\x8bpu^v^\xdaU\xca\x1d0\xdf\x91L\r\x97~\xbb~\xbc\xc4\xa6\xbf\xa4\x1er03\x08\x93\xab[\x95\xbft\xa7#l\xe2F\xc1`[\xad^\xf3\xd32\xb3e\xbe\xa2\x18E\x95i\x87\xe2\x9b<\x9c\xda\x1aS,\xf9\x06\xbeJ\xd6(\x02j\r;\xd7\x0e\xb1h&o\xa9\xc5~dV\x01%U&\xee\xa7=\x05\x04O\xb7\x9f\x9b\xb0\x0b\x15\n\x04\x1b\xa0iX\xfe\xcb\'\xbb\xa1_\xb4\xea\xac\x0c\xe5\x1czh\xa35\xae{Y0c?\xcf\xdd\xe5\x91DzU\x7f\xe4,Jr\xbf\x88\xcd>\xfe\x1dP520E\xb8\xf3\x82\xedl\xdb\x8cL\x97#5\xce\xbb\x1f\x8f\xa6\x10m\xe8\x88c)7\xa8\xc2\xd1\x07\x82\xdf\x03\xfbw/\xa1J\x8ez<\x8b_\x1dJ\xc6$\xab\x84\x9b\xfezHYC0\xa5<\xdd _ei\xb6\xbe\x8f\x1a\xd8\x8e\xb3\xd93P:\xe3);\xeeq<\xf6\xae\xf7\xbb\x02\xc9\xa5\x05\xd2m\xa6\x84\xb4\x1am9\x14_gk\xec\xf0\xf4\xc7!,>{j\t\x9c\x7f\x8c\x8b\xf5\x01\x00\x1cw\x06u!0\xefxa\xf5\xb5\xd3\xb10\xa9r2\x05\xc4=o\xfb.\x95\xac\xc0f\xbb\x11\x8fI\x87Ps\x03~if\xb6\x9bf^\x00\xa0\x11dU\xf2\xf7\xc1q\x15\xbb\xc7\x14\xde\xe4\xe3>\x0fHGo\xdc\xc8\xe7\xf2\x17\xeb\x94oC\x0c_\x00B\x15\xd6q0"\xac4T\x96\xe1:\xd8\xbbx\x98\x89\xdbk\xfb\x9a\xc3\xe6\xffkX\x06\x83\xca\xba\xa5E\xdc\xcf\xe0L\xf0\x08\x9f,y\x9e\xf9:\xcc\x8c\x91\xd5f\x8c\xdej\x08\x1d\\\xcb\xee\x82"7\xe8\xb9P\xaa\xa0\x88\xf2\x8b\x9fd\xbb\r\x93\xbf-C\naX\x19\xf8d\x13=}Ny\x0fi4\xa3\x08r\x8a\xe9z@\xd66\xab\x8bThpH\xfayUM\x93\xbb\x8c\xb9\x9b\x0c\xc3:\x1c2Dr\xbb\xe4\x8e\xda\xbe\xfd\xab\xb8\xa5a\xb7\xcaD\xff\x1c\xec\x93\x04\xbf\t\x9e\n\xf7\x80?\x1e.P\xc5;\\\x17\xd5\xcc.\x91\xfb;\x0e\x12\xf9%y\xa4\xe0\x05\xeb\xb6\xa4\xa6\x82\xfa\xcb\x87\x8f\x8fLp?.\x0c\x10\xd5\x88\x9c\xf9\x02\xb1\xef\xb7\xca`\x84\xba+{\xf5\x1a\xf5m\x81!\xb6\xe9\xa0cU\xca\xfc\x9fn6\xc3\x94E\xdagD\x16T\xf2\xb6p\x0c\x82h#;U\xaf\xa0\xa4\xc4V\xc1\xd4\xce\x19kCK\xef\x01\xca\xae\xd3*\xc9u\x8d\x1bFp\xa6vj+]\xa7\xa0\xfc\xba\xd8u\x92h\xf8\xc2u*:\x8d\xc8_\xa3 \xach\xc1\xdf\xf2.%\x1f\xedt\xd2\x8a(%\x0f\x82\x1e\xf8\xa5S\xc6\xb5\xda\xbek9\x8f\xe3\xae \x10\xaf5\x85\x1d\xb0\xaa\xd5\xef\x1a\xafL\x11R\x9ad\x9di\xbc\xd6\x01\x929}\xff\xb487\xfb\x14iyt\xe9\x1c\x18uX\x8a\x04\xa3/X\x18\xef\xf3\xe3\xf5\xbe\x80\x80\xb9XC\xa10\n8\xef\x18\x1b\x96\xbcP+\xef\x02\x89\xc0T/V\xff\x9a\xfd\x90\xd1\xeb\x1e\xee\xd7W\x1dz#\xe3\xd6\x80b\xb4h\xa6\x95i\xd8|\x97x@\xb0\xa5&6\xbb\xec\xb1\x06X:\x94\xf5\xba!=\xe3|\x8e\x9c\xc8\x0f)\x08\xd0\xf5\xac5\x19.\xef\x956\xc3\xee\x88\x08f)\x9e\x0bd\x08\xcag\x9ba\x18"\xecf%\x0bt)\xe0~\x12\xa0\xe8Z)Z\xd3EM<m\xee\xa8\xa9\xa6\x82p\xfd_a\xfa<\xca\xaa\xeaoi.\x1b\xb4\x9a]N\x95\xb0f\x02\xa6\xbc\x02\xbd\xd0\xaa\xc4>\'\xe6C\x8f\xad&\xc2"Z\x8a\xfc\x01,\xaf\xcd\x7fsd\xc9X\xb8\x8cF\xe9\xb6\x84\xe8\x84\x10F\x08\xdc\x87\xac\xeb\x0e\xd2d\xb5\xe1Q3Nt\xf8*:\x96:\x8d\x0f\xa1\x15\xdc\xaeN\x8d\xb5\xdd\x08\xcd\xf7t\xecn=\xcb\xad/\xa5\x82y{=Uv\xc2Y\x97*y7\x1f^\x15$\xc7\x8c\xf6>\x13m\x9b\x9e.<_\x88\x7fT;\x8a\x84#\x1a\t\xe7"Z}\xe2EhC#\x82\xcb\x17\xd1e\xf6Ahy\xf1\x03\xd6hT\r\x05\xd45}\x92n\xe2\x17+:\x8d\xbf\xa06\\V\x90\x86b6yt\xfc<\xf7FVv\x14O\x94\xb0\xc9\xabW\xf2K\xd8\xa7R\xcb^m\xc6\xa9h\xc3\xe4\xaa[\x0b\xda\x8ec\xe1\xd1\xf7M\x86\x7f-\xec\x91:\x8a\xc6\x8d\xc3w\xe3\x90~q\x93\x95`:\x17\xc7\xc9,=\xf8n\xf9\xc8\xfc;\xadD\xbd\x15RH\x1f\x05\x84\xf0l\xe0G\x04\x12\xf3($h\\*\xcbeP\xf9\xf9\x17\xd0(\n\xe6g\xb8{.\t\xbc(\x8d;t\x97\x97\xed\xc7s\xedph\x88\xb8\xbe}7X\x9a\xdb\xffp\x14\x803\xc8d\x83\x8a\x04)\x1b\x0e\xa3\x9d*\xad\xc3\xdbOp\xb3\xd0&wkC\x82\xa4*R\xf1\x99[X\xde9$\xd2\x81\xfb\xc7\xdf\x87\xc8\x1d\xcaji(Y\xaf\x80qu\xfck\xcb.Ef[\x94\xf2\xbas\x0f7\x8f\xe5g\xcf\xbb\xb5L\x1ek\xcc F\x13$r\xf9T\xcb\xfe\xf5\x81@u\xdfm\xeb\x8fH-\x0e\x18\x05\xb1\x95\x9bZ\x1cev\xd5"\x8b\\\xbeST^-y\xb4\xc51^\xe0l`FY\x0e\x8e\xbf\xf2w\xef\xe9\xfaA"]\xfd*8\x1d\xae:\xa9\xcfe\x18\xcc\xc0\xe2\xa7\xbcC0\x94\xf5\xdf\xa7\xc8\x81\xd9\xfb\x15\x86O\xab\x10ILh\n\x15H\x1c\xbe\xd3\n\xc9\x1ar4\xda\xb1\x04\xe1\xae\xc5\xe1\x183\xd95>\x8e-\xd8\x0e\x1b\x8c\xac^\xd7\xa7\xeb\xca\x11\xf1\xef{\x9fde\xdf\xe2\x80\x82\x93\xdd\xfc\xb0\xf0\xc9\x87bE\xa0\x1d\x8f\xd6\x83cT|\x81v\xac\xbc\x91+\xf3\xb9z\x04\xc9\x0c\x92\x9e\xa3\x8f\xb5[\xedc\xafLeT0\xbe\x8aG\xf5\x08\xa6\xd9\xaeM#w\t\x17K\xe5\x8b\x08\xa6f\x9e\xab\xce\x16\x85\x14v\xb0\x96(x\xab\xd6{\xeb\x07\xfceE^\\cS7;\x07-\x15\xee\x1e\x8c\x19\xc40u\x12\xc2rC\xca\x89\x92\xa0Z\x97\xa9\x84JUiy\xce\xb5\x8d\xde\x1a\xd4\xc3\xca\xe1\xaa\n\xbe\x96O\xb4a\x9b\xe3\xbb\x02\xe3HC\xe8I/\x04Pw\xa6\xbcU\xb8D\xb6\xa9\xfc\'\xb9\x03~C\x04\x04g\xf7t\xa6\x06\xe3\x92_w\x1a\x17l&\x03\x98\xe7\xaf\xa0l`9\x82\x16$\xd7\xcc\xcar\x8d/c\xd4&\x19\xd3i\xff\x90\xe7\xb2a\xa54\xf0\x7f\x17Z\xdcY\xe9R\xcb\xaa\x88\xb7\xe0R\xd7e\xf6\x96\xbd\xe9u\xb5;\'Q\'\xd1~e\xa1\xb3w\xf7[\xab^\xbe\xea\xf8\xe6>\xe2\xc0,\xa3\x92^0\xe81\x0b\xf8 \x9b8\x1cM\xf1\x12;\xe7\xda\x8anyld\x17\x1e\xffF\xa9\x89\x96\xc4\x17@\xe4\xfc\xce\x92\xe0*\x93V/?\xf2\xc6\x7f\x812\xc4\xaa \xd6\xae\x06/\xb7_\xf2\xa5\x01]o\x18\xd9\xca;{\xdaA\x1c`\x1b\x96z\xf5\x86\xff\xcf)\x7f]\xfe\x06\xe0\'4\xddP!\x16\xf0\xbd\xa5\xd0\x07U*\xbaH\x84\xe1\x01\x81\x7f\x87\xbe\xef1\x99*\x06\x1f\xa4\xf75\x8a\x18x\x89`\x96V?\xb51.!u\x90\xc2\xfc+U\xa4\xc6\xa7\xd2\xbeh!\x1a\x1b\x80\xdf\xc8@;\xb0\x8f\xc5 \xce\x109jt*\x9c\xebS\xc36\xa4\x0c\xb1\xc9\x9dr\xe5\x16\xcb\xf7\xed\xb3^\x01o\xdeD\xaa\x16\xb8u\x7f\xcd\x17Z[\xdd3WBo\x10`\x87\x87h\xa9S\xbd\xa2\xcdz\xeb\xbf\xfft`\xab\xce\xd7v\x02f\xf9\x86\'\x82[.\x13\x91\xc2\xf7B,\xe2d\x08\xc4F\x1a tB\xef\x98\xae\x1f\xdd\xa2\x83\xe0\xf3m}S\xec\x17\xd1\xea\x1aC\xfd\x1a\xa6\xccB\xbc\x85\xd8u\x1fx\xbe5S\xd2\x14\xa4o\xfdL\x08\xf1\xad\xcc{\xb9\xa9\xe0\xfe\x0e\x9e\x7f\x98\xca]\x16\x1a\xe5<\xa9\xf1\xb12\xef\xa2\xc5O\xe5\x98 \xb5\x0be^\xfb\xff\xb20\x0b,\x80\x8c\x15\xc9\xf1\xd2t\x00r\x86\xf0\x85$\xf1\xd47\x8dj\x1d\n\xa0\x08\xad\xd4>G\xaa\'\'\xc65\xb1\x08\xbf\xa3\xc6\xef\xe9\xfa\xa7\xc3\xf0\xd2\xa2(\x0f6\xc0\xf0\x03\x85z\xf9!`\x9d>\xa1\xa0\xe8\x12kt\x16\x18IC\xc2 \xfaqk\x970Zp\xdb\x84\x8d\x93_L\xec\xa9\x7f\xd7AT$y^\xacr\xf6\x96\xbe9\x8e\x1b\x07\r\xf00\xf7\x04\xf1j\xe3\x0f\xf7\x1b\x8b*\xd9\xdb\xff\x8f\x1c\xe3(\x82\xaa]?\x96\xdfs~\x87\xfc\x17\xdco\xf1s\x1c\xcc\xcf\xa0C}\xd5\x81/\x93 \x95\x83W\x8c\xedxQ\x18"$2:\xb8\xc1I@:\x81A\xb5\xe6\x7f\xc6@\x02\xe23\xa0!L\xe9\x85"\x16\xecS\xc3A\xc6\xc9\xb4Yp\x12\xba#Ax\xacV\xe1\xa1\x10\xab\xb2#\xb9\x8c\x8d\xc0\xf3V\x1f\xea\xd5{Y\xca\xdd\x02\x8b\xd2\x04\xb7k:\xfcV%e]\x171\'\xe4\x87\xd9\xcdI\xf9\xd5Z7\n^\x980\ru\x1e\xc6h\x90\xda\xaa\xa1A9\xeb\xe6PE\x87\xb6\x05#\xa5.\xa1"\xdex\x1bX\x17\xb6N\t\xe0\t\xc3\xc3\x9f\xd9y5xjz\xd2p+\xf8I\x9e\xec?p\xafK\x01\x91\xd1/\xedzuF\xe2\x19G\xbdU\xfd\x91\x96\x8a\x97\xcd\x1a\x88\x82\xd8R\x91\x88\x91\xb1\x80\x94\x8a7VbKvj\xf7~\x08uh\xdd\xab\x81\xa3O\xbcB\x9bJ\xe6U\xe0\xa6\xa2\n \x95v\xd5\x87G\xa9\xd5I\xfe\n\x7f~\xcc\x1c\xa7\x08.\x06e\x92\xba\x11ri1\xfd\x91\xe0K\x84\xa1x\xc5\xff\xb6\xfd\x93\xdb\xbdWT\xe9f\x81hO\xa2\x97\x99\xb1}\xe5\x95\xfdD=\x1f\xa7\xaa@\x07\x0c\xb6\xc0\x0f:\x9c\x9b\xb7v\xf8\xdbM\xbc\x03[\xed\xd7QWy\xb1\xa8\xe8\x90\xc4wa\xd4\x8f\xde\xc5d\xe2\xbdm6<|\xef\x96\xc2l\xe4\x81\xc9\x18\xb9\xad\xff\xe3\x14C\xdd\xed\x9a\xd8id\x05\x1d1\x04\xf1czld0\xcc\xb1\xe9&R\xb9\xeb#\x8d\x8ey\x0b:\xfb4\xb8v\xe8\x1a\xeb\xa0\xb8Up\'-\x84"d\x9e\t\xc0\xd6\xff`\xfb\xb4\xd4\xa9-\xe0s\xe1\xf7\x00p\xe5a\x93\x90\xf66.\xac#\x17ku\xc8C\xeb\xdc\xceg\n;\xca\x1f\\\xef\xfe\x1d\xc9\xb1\xc4\xe2>\xddz\xff[\x92\x96!-\xb4N\xb6\xd5\xa5\xe0\x82\xff\x93\xf6;\xe9\'\xe2\xde\xe5P-\xf7|\x7f\xa9|\xf4\xcf\xedx\x93\xc7\xa6\xd0\xa4\x19[\xeer=v\xe8\x96\x03\x86\xe9\x15tI\xd8\xa2\\\xbe\xfcw+\xd4A4h\x90f\x7f\x03\xd0\x18\xb3\xff\x99\x06y\xd6\x05:j\x84\x04\xf9\xb6y\x13\xde\xca\x94\x0c\xb6\x18a\x0cV\x16.\x17\xec\x06=3w\xc2\xfe]\xca\xa5~\x10\x84y}\x99\xa1\x02:\x94\xbd\xd8\xd9\xe59\x9c\xe2b\xd7\x8ap\x0f\x82\x7f{\x85^J(\'\x0c\xaf\x95\xb3\x98\xfa\x1a\xa0=\x8d\xb3y\xb1Z\x0bw\x16\xbf/\xcf\xd2"&\x80Wm\xfb\xa2{\xea\x92\xa7au5\x10\xb8\x14\xd2~\xb0\xa3\xd0\r\xcb\x85bN\xd5;%\xf6\x14[|DkMvo\xfc\xd5K\xdcU\x15\x07\xa6\xf83\xfb/i\xe7\xf8Q;\xd7\xdd\x886G\x0e\x19k]\x1e\xe3\xd9a\xadF\xf5\x99\xdf\xf0\x84~\xe55\x7f\xa61\xf6\x8b\xd3\x10\xd3\xee\x8c9/\x18\x03zq2\xa6\xba\x15m\x1e9\xeaglWGg6\x03\xc6\xae\xc4\xc8\xcd\xe7y]\xb48\x91M\x86\xe8cS\xb6\xc4\xfb$\xf1\xe0\\\xb5E\xc8\xca\xdfrR\x98v\x9c\xdd\xf6Q\x8bZ;t\xc5}$\xd5\x1b\x17-\x00\x84jo\xca>\xdf\xf0\xef|\x83|\x05\xf3@\x8a\xe2\x98\xf4\xf1\xa0B*\xc6\x1b\xe5m\xd5\xe3\xdf \xaf)7\x16M\xa1\xd3D\xa8\x10\x86\x8a\x00\xb0o\xefW`V\x91A\xa1\xebR\xbd{\xd9q\xc8\xb3\xd4\x86+?6p\xcc5\xa4\x1a\xa6,8~t\xa3\x08\xeabd"h\x00\xc5MS\xf8\r&\xfb0\x0e\xa1\xb5|\x1b\xb3\xa7\xf0t\xc2\xaf\x80\xc2*\x16\x84`\x94\xe7\x16\xe0~\xc1d(\x15G\xba]l\xa2\x00\xb9#d\x05AC.\xf8\xcd<\x1d\xd893\x90b\xef\xd6R\x82\x13\xc3\xd9\x82P\xa7?N}\r\xfb{(\x8c#\x90\x07\x17yQk&\xe3\x02~\x1c\xb3l\xeb\xeb\x9c\xd7\xb5"\xe4\xdf/=z[\x08\xb5=z\x10{\x92\x1fi\x8e\x93l\xefl\x04\x98\xc1@\xb9<\xef+\xd6\xf8\x14}\xe2G|?A\xb4\xb2!\x9ab\xc2\xd2H\x9c2\xd7\xbe\xb5\x03u<\x1e\xf2%I\xc7q\xb1k\x13\x19y\xb2w\x84\xed1\xd7r\x88P\xe1\xcb(\x1bL7\x06t\x7f\x9b\xcfp\xe5\xedK\xf1\x17\xa3W{\x81\xf9\x98/\xa3\xce\xbd\x1e\xbe\xf6\x0f\xa1G\x9a+\xa7\xea3\xedN|\xaf\xfdY-\x95j\x19\xd9(4\xec\xc9\x12\'\x10\xb8\x03\xed\x9a\xb5\xff\xf6C\xdf\xa7\n\xce\xae\xb7\x91\xc9(\xc1\xa2e\xb0\xee\xd2P\x96\xfe\xb3\x83O\xb3\x97\x07\x80\x8e\x0b]R\xc6\xc0T\x0fS\xaf\xaf]\xe9\xe9\x12Q(\xd9Y\x16\x861\x00\x0c\x12%E+\xa1\\\xffw\xf967\t\xd6\xe2\x0bgH\x8b\x14\xd2\x87\xc1\xc9u\xe6\xf4\xdb\xbb\xc1\x9e\x94\xd4/$\'m?\xaf\x91\xc0\x04\xbau\x04\xb0Oy\x9df~V\x86#\xf0\x9d\xda\x8c*2\xa3\x97\x1e\x90\xefK\xc0=\x9f\xbek\xd4H\x13\xdcs\r\x11Z\x0e6\xc1\x84aI\x99\xf6l\xce\x90*FIJ@\x05\xe3\xeb\x9e4y\xbeg\xc6\x01\xaeJ\xb1\xad\xc7<\x01\xdbB\x04enk\x13)\x1d\x00\xc4_\xefu\xcfx\xf8\xaf\xc9[\xf3\xaf\x08\x1f\xa5\xe4\xef\x07\xd9I\xf5\xf4\xa4Dx\xddV\x7f\xc8]\x93\xe0\xf9r1&\xb4\x81X\xb6\xf3\xea\x0f%\xc8\x0b\xfbN\xf7\xf0\x11\xd4\x90r\xeb\x08\x08,\xfb*"2uSC\x10\xd6n\xeew\x12A\xa2\x10\xc8nG\xa8\xb6-\xde\x07\xabJ@\x8c\xdc\x0b\x98 \x88PTP\xbd\x13w\x06\x10\xa6w\xdc,F\xecY\x12V\xee\x1cq\xf7\x04\xa4H\xe0Z{\xe7\x04\xcb\xd2\xd5O7\xf7\xef\xac\x87I!`Cx\x14\x87\xc9\'\x8eW\xb5V\xac\xd1\x80(\xc48z\xecC\xc1\xf0\xda\x1b\x9f|\xe6@\xaaS\x0f\x94/\x82G4\xc4\xab\x9a|<\xe8T\x9a\xf6\xfa\x8d\xea\xd6\xba9\xb8\xa5Al\xb8\xf7T\x19\xe8Y[\xa0\x81<<\x90X\xd5\x153\x85\x8c\xaf\r\xf7\xae\xb3y\xd50\xca:\xbab\xd3\x17\x82\x06\x9d\xdd\xf5\x87\xa4\xf60\x9dx\xe0\xce\x14\x1a\xaf\x8f\xfa\x85a\xfc\x84z\xf9\x13\x1b\xf6\xc8\x87\xffwX_\x858\xbb\xe2\x18\xfd\x17\x9e\x81tS\xca\xbb\x81\x11\t\x81\xe0jY:3\xc0ru\xfe\xb3\x16;^\x06A\xf8L\xd4\xc6\xddS3\x8bk\xe8\x8aT_G\xaa\xa5;\xf3+\x8f\xe4\x93\xffk\r=/$\xf8DP)\xff\xcf\xebO\xd5\xeb\x8a&\x8bd?\xdeU\x9ai\xc4\xbc!\xc9\xf7G \x18^ap\xff\x0bl:a\x0c\x0f\xf6\x10\xcd\xe0?uK\xc1R\x11\xb4\xdc&\xbb\xb3\x81\xefuh\xcep7\xd7=\x05\xcfv\xaa\xdf\xd3\xe6\xb2\x067P\xac\xe2#\xc2\xb5\x17\xcb`5\x04\x13BNG\xdc\xf0\xad\x81\xf8\x89\xf8\xf6\xf0\x14\x19?>\x93\xe7Dq\x8a0\xe5\xd9<\xbf\x10\xc4;\xfc@\xb4\x05\xc0\x15\xfc=\xf2\x07\xdf\x1d[\x00-\x16\x0c\xfd\'{\xe8\x9cU\x9a\xee\x0c\xe8\x18\xf0\xbc(\x04\xb9\\^\\\xf9M\xb58\xd4\xbcU.\xbdaSy\x10\xd4\xa9*c\xf6\x99\xc1\xf2\t\x1c\xdf5o\xe9<7\x93\xb3*\x8aD\x85\xe4\x93\x8b\xe8\x1b6\xa9\x066\xce!S4i\x01\x9c\x0f\xf4\x9a\xd8)\x162\xb2\xa6\xc5\xc7\xa1D>\x839\xda\x07\xcd\xbek\x02\xe8\x84\xa7\xf0\xc9d\xfa\xd1\xad\xef\x80B\xd8s\x85\xfb\xd4\xa2j\'\xad\x8f\x00\xe3\x99\xbb!\x07D\x08!\x89\xa3\xce4\xc7\xad\xb7\x1e5\xa3\xd5\xbb\xeb\x8bD\xb2\xec=\xb41\x17\xf7`\xcc\xdd\xe8\xcc+$\x1e\x92\xa9Y\xfa\x93\xec\xb8\x99\xa5\xba\xd2\xe1g\xf6,\x90\x18\x8f\x05|\xee\xaa\x89\x95\x10\x05a\xdb\x11\xe5\xe0\xf3%\xb7\x7f\xb8\xa8\xd4\xfdn\x93\x0b6B \x1b\xd0\x7fd/\xb4T\x7f\xf5\x9cH\x92\xbaY\xb7E\xea\xa4\x85\xb5b\xab.\xb7\xc6U\xedM\x06\xfa\x1f\r\x1e\x17\x8dN3m\xc8\xfc\xd5V\x0ft\x8f\xe4i~\x0e\x0bjo"\x9fj\x83\x0e\x92\x99:\x8f\x85\xb7;)R\xcc\'\xe6\x02\x17\xb80!\xb0d@F\xbaJE\xa3\x0c]R;\x06\xb1\xd4x\xb5\x824hF{\xcbr\x80\xd0q\xe2g\xbc\xa2\xcb<C\xf05W\xbf\x89C_\xe1\x81\x9aI\xd4#\xcd\xc0\xf2\xa61;\x94\xc7\xefR\xae/\xf4\xc8lx\xb5[\xf9m/^z\x04\x8e\x02\xf4\xe4\x0f\xc5\xae?*\xb6Mr"\xc6(\xaf<]\x7f\xd0,V77\xc9\xd0\xb5\xaa\x86\x18\xc1\x18c\x88\x85\xa7\x86=\xe7\xabO#\xe2\x86\xedp\xf9\x9b\xb3V\x15TOs|H]Cq\xa4"1GN\x01\x18\xd6\xd40ve\xf25\xc8\xbb\x88$t"\x04\xea\x9b\xaf\xa8\x05~v\x83**\xba\xf7\xd1\x7f\xcd\xdf\x03\xc3l^\xb1\x18\xef\xd2s\t\xca\x00>\x01\x8f\xbb\xa7\xae\x9dU\xa9\xf8\xe2\xd0\x92\xbeT>9\x1d\xb6\';\x95\xaa8\xebb\x83\x99n%\xa4\x9d\xf9\xb4\x1604\x9e>\xd6\xf7\xae\xd7#\xa9z\x14Sq\xa8\xc1\x9e\x02+^\x81\xfe.\xe4\xf9A\x047\xb2\x1f/\x02\xfd\x1d\xc8V\xe8\x1f!R\xbe\xaf\xa1\x96F{\xfd\xcb{q1:/\x06\xce;\x19\x9c\xf0\xa1\x02+B2\xf4q\xa9\xba\x9d\xdc\xc7<\xc9\xa9\xcd\xfdW%\n\xbd\xda\x8aA\xefze,\xee\xdfR\xae_Q\x08\xa3\x99\xf1\xf1\xf5\xa3\xc7\xdf\xac\xb6\x84!\x1c\xe2\x8c)\x1d\xef\x0bW\x8e\xab\xbd+$\x0f\xe4iCL\x8c\xaa=j=t\xdd\xd3SKz\xd5\xc8tq|\xcb\x13\xbb\x18\xaa\x0c\x9b\x87\x92\x8e\x80\x90+Z\xee\x1f\xbe\xda\xeby%\x85#A\xe3\xbb\xbc\xb5\xac\xb2\x8a\x131pTio\xfe4|w\xf7\xff\xe2\x9bV\x14\x1cp_\x90\xc2dQu\xe72\xb5Z\x8b}\xd3!=\xd9@\x1c\xccd\x11Y!\xef\xff\x1f\x00aj\xcc\xbdh\xb5\x8bgHl\xf0-\x86+\x1d\xd5 T\n\xd7\xdf\xa1~p\xb1\xb8\x86W[\xba\x91]\xb9\xaf\x0b\xb0=C\x9c\x8b\x92\xbd\x1c\x05b\xf0\xa0h\xe8\xcb\r\x9a2\xf6\x05\xa4N\xe5\x1a\x88dz\xf8]\x9a\x89\x9d\xdf\xcex\x7fX\xcb\xe3%\xec\xcc\xa8\x92\xa5\x96\xb5\x85\xfe\xf1J\xab$_U\xdb_\x18\x8b\xd4\xb3\x85\xec\x1c\xaa\x8dU\x83^\xbd\xba\xbc\xb3\xd2C%\xb0\x96\x10~\xb0?\xa7~\x88\x85\x16\xdd\x84\xc7\xdd\x12U\x862<\x0fg\xbf\x98L\x88\xe3Zm\xb3\x91\xed\xf9\r\xc5\xb4A\x8e_\xbfv\xd6\rlX\xbd\xc9$\x08)\r=-\xb9n"\x98\xac\x0c\x16ty\xe5\xa0\x19\xfbD\x86\xb7h0o\x9aSf\xed \x11\xc2\xe7*@\xf6\xfc\xea9K\x07\x9cO\xba\xde\xd9md\xd29\xdd\xf1(\x8fsT\xe0\xbb\xe1]E,\xdd\x97\xcc0\x1cC4T\x93\xb9\xe1j\xf6\xa5MH\xd3M%5\xaa\xc6\n\xb6;\xe1\xa7\xa8z{\xeb\xdff\x98!\xe8\x1bRs\xf0\x9cz]\x8d \xfe=\xbb.\x94>x\x938_\x1f\x8c}\x94$\xb0\xde_\xed\x8c\xde\x9b=8p\x87\xfa\xe3P\xa3\xc2=\x80\xf7\xae\xe3\'\xd3\xce\xcf\xd6^b\x065\x92?p\x87\x1c\xd8\xb2\xc1%\x83\xe4\xf2\xca\x9a\xaeV7R#5\xfcT\xff\x87\x9b\x92\x1e\xac\xack5\x93\xb8=v[_\xef\xee\x98\xd3\xc0O\xfd\x91c\xd3\x91\xf8t/\xfcHl$\xb5\x1a\xc0\xbb\x1d\xa5\xe0\x1a\xf6\xc6\xb3\xb9]\x94\x8c\x13Md\xad&\xdeZ`\x08.\xcap\xbcTH\xb4O\xef\xd0\xc3\x19\xba\xdcq\x94X\xb2a\xb95\x83\xc93\x85(\xa4VV?\x01_\xa4q\xb7\xd2g\xef\x15?\xbck\x91\xc5^\x163\xbd\x0cD\x0b\xdfc\xe4\xfb\x98G\x86\xceyQI\x80\xa1\xa5B\xda_\x191\xa3\x08\xd0\xf1\xc7\x1e\xe5s8\x17\x9d_\xe5\x02\x90\xe4QJV\x8e\x08@\xc2\xb9^\xc16R\xd6\xe0BCv\x85Y\x17\x80\xaa^\xf0\x11ko O\x08\xc3\xa0\x12ssc}\xbf\xab\xf4\xa9$\xb5#\x8e:\x0bj1\x0e\x80N\x04\x80\x92\x04:(8V\x05\x8a\xeeI\xd5\xd7\x0e\x1a\xde<G\x00\x04vb\xdd\x02X\xde\x08\xbb\xa0\x91\'S]\xdc\xab\x89\xae\xb28\x1a\xa9\xa2\x8b\xc75\xc3\x8d\xab\x91\xbb\x88L\x8e8\xc3%\x0c}\xa3\x8f\xe02\xe2\x0f\xf2,\xb9k\xeb<\xf6\x07o\xd0\xcb&\xd7\x1cT\x18I!f\x14)\xb6\xe4\xc0\xd8\xc3e^G\x96Z\x08\xec\x95\xf4\xd23U\xbe~\x04\xf78\xed\xe0\xce\xdc=\x92\x12\xb0\xc9\xfe\xa7JlFC\x86<\xc1\x01\xd7c\xc2\xbc\xc0*\x06\x07\xcd\xe3\xc6\xe5M\x85V\x87\x19S\xed\x0c8A;\xce\xf9\xd34\x05\x19\x0f<D\x08\xc5\xd8\x16\xe9\xb5Vs\xc2\x1b\x9aa~\xbe\xee\xf6m\'9\x06\xed\xc5(\x87\x18R\xe6\xe9\x1eKq\x19\xdc\xf0b\xbd3\x0c\x87\x18\x9c[N5\xf2p\xb0\x0b\xa63\xc9\xcf\x81@m\x94U%d\xf9">xA\xda\xcaWZu@\x85\x92\xe5>\x15z\x03\x02\xf7\xbd\x10R\xfd\x81\xed\x9a%\xb6\xe6\x0f\xa5t\x01\x8c\xd7\xd4\x90S\xcb\x82M\x0c\x0eO\x06\xfcq\x94\xfa\xf2\xe1\xaa\x9d\x14\x00\x86^!m:U\t\xb8\x92\xd9\xf6\xdbr\xbaBu\xf2F\xe0)-\x00\x11W\xafF\xef)\x9f.\xdfl\x8b\x8e\x8e\xf1\xdb\xad\x88\t\xa0\xed\xbd\x05\x90\'\xa3\x15p\xebC\xe5\xc3\x1a\xb2\x85\xb5\xeft\xb0P\xbd(\x125\xdb\x0e\xd3\xdb\xe84\xed\x8b\xacZ\x8b,b?W\x01\x1bjN\xd8k\xd4C\xe9\xef>\xaay\xf42\xcb.\xb5\xa5\xd0\xba\\\xa0\t9\x06P\xb7o,\x0e{\x11L\xb2T=\x83_\xa08\n%\x8d\xb0\xcf\xfa\x0e\xa0`\xe8\xf5\xf0J\x04o\x9b\xb5\x94\xb1\x8c\x1d\xf6]I\xc6\xcc\t5U\xa7\x7f\xb8Ja\x82\xd8\x80u\xf6e\xa9\xd0\xb5\x96"Z1\x85\x14\x05?yd\xf3\xf3\x18\xbb\xde"\xba{:\x9f\t\xa9\x03m.\xda\xf1\x8eO\xa2\xda\xf3\nrz\t\xbe\xa6\xda\xf8\x1c\x13\xbb\xc1\x14\x04\x06\xa06D\x0f\xdeh\x83\xbc\xa6\x7f\xaaDb1*z\xd5\xa7C\xbah\xd1\xeeE\xb8\xac\xe5\xe5\xa9\x1c\xb5\x8c\xe9\xdfk\xbb\x85\x15\x16\x17_\xd0\x7f\xb1\x01\xc1\xf4\xa3\xb6{\xe0f\xd9\x13x.\x80\xe1\'\xc5\xcf\x82N\x87?\xb7k\'\xdf\xebb\x1aG\xc9hd\xd5%\xff\xb8y#\xa6\xf8?@\x9c\xfe\xc5\xbff\xa9k\xb1\xe8\xfc4\xc6J`X\x11\x7f\xf2+\xe8tdr=\xae\x05>\xe4\xd0\x0c2\xfavbB\x94\x04|\x1cs\x91)B\xa1\xa2\xcc\xd8\x06\xa5\x9b\x0f\x8a\xfb\xb7}\xa2Y\xc9\x8a\xc9\x19\x8a\x11o@\xca\xaa\xb9l\x83\xd8\t\xc7\xf8z\xa1\xcf\x93\x99"\x97\xb6\xdb3<\xaa\xb0\xc8T\xd0G]\xee3++\xfc\x8dp@\xeb:M\xe1L\x90\x05\xda\xefak\xbf\xb5P\x97\xf6\x0e\xd1X\x1c\x8cOL\x15O\xd9\x19\xc1\rr\xba\x96\x18\x01A[\xf06"\x997\xd4R\xcf\xe0\xb8X`Z\xe2\xe5\xe9/|^*Qg:\x02\x89\xfe\xd0\x0f\xd3z\xc6\x85\xda\xd2U\xda@\xa7\x0e\\\xb1k\x97\r\xfc\x01_\x87\xa4\x883\xad\xf3c\x19N\xea\x1e\xcb\x16\xd2uP\xd7[\xeaR\x88\x16\xf5\n\x99\x1d\x89\xb4\xcd#\x98\xc0\xa4r\xdc\x7f\x83F\x0b\xa2\x0b\x11\xddZ`):\x10\x9b!\xed\x95\x81\xf0bMj\xcf\xb1\xe9\x0f\xccy6i5<\xf4\xe8zC\xb2(\x84z\xdd2\x9f\xc97\xfd%Cu\x02\x8f\xac\xa4\x16^\x18\xa1=\xa6\xfcz\xae\xb1\x07\xca\xb8YV\xa0\x87\xc0\xdb\x0c\x03\x8c\r\xf3\xf4\x10\x8d\xe8vz\xe3\r\xf5\xe7\xa7\x1d\xddw\xe7\x14,\xa1@7\x8a$\x89\xca86\xd5A\x9c\x10W\x99\xb8\xda3\xf4\xfd\x05\xd7\xb6q\xa9\xe2\xc9\xb0\x88t)5,\xfd\xc0\xac@Yyz0\xf4%\xa2>f[E\x9c\x92\x9b\x1e\xf9\xbb\xb4\x0c\x92\x0f%\xd6]\x11\x9ak5\xf6k\x0e7\xb0\xd5_i7\xb4\xfe0\xe9\xf9\x1a\xc6\xda\x15\xd9\xe4)\xb7\x91\x85\xcf\xbb\xc7\x87\xfbH\xe81ZP\xff*\x9d\x90\xe1>\xc4\x89\xa8\x19W\x1f\xbf)!\x0f\x9d\x15! \x025\xc3(\x97\xf8\\\xad\x96x\x12I\xc9"\xbe\xf1W\xf7rb,\xcc\xbe\x1b1n\x19~\xa1?\x9eYrA\xca\\x\x123:\xf0\xe2T\xcdos\xc2\xe5\x16\xad\xd0\xfe\xd8\x9f\x8d\xf7\x81P\xb3\xde\xf2E\x9a_\x0fIgq\xb3Dp3\xd0\xbe~\xe0\xee-\x99\x07\\\r*}\xceh0\x15\xb8\xfb\xfev3\xf839;rA\xf6U\xb9\t\xe5>\x1dIqo\x1f\xa8\xa8\xd2^1_\x87Q\x82\xbe\x8eba\xady\x82\x0b\x1d\xc7?\x8a\xd6\xd6=\x99\xee\x8e\x8f\xda\x80\xce\xc9\xb6\xe5.\xd4MR\xc4\n\xd7\xd2\xd5\xd8*\x9f\xb0\xba\x11\xcf\x04;n0\xdb\xdel\x89}2\xe3\x0b\xa9\xc0\xabm\x8eI\xd7AwT\xde\x0f\x14(\xef\x8a\xa26I\xd0\xfe\xbb\x05RA]5\xd5i\xbf\x13\xb2\xc7\xde\x12X\xed^\xaa}T\xcb\xa8vk\xf5\x03\xd6\xfd\xea\x98\xfd\t3\x02\x87\x07\x04\xbc\x93\x9dm\xc7\xe9\xb6\x0f\'\xe1\xb7\xecr\xcb\xaae\xd6@\xb1\xd6k\xb50/^f]@A\x91\x9cH\xdc@\xcf\xa0\xe9\x90\xe6\xd2\t\xfdkM\x8a\xa8F]\t@\xb5\xc2Y\x17\xa1\xe0\xa8C\xe4 \x15\'\xd8O\x02\xc0\xd5\x15\xfaQx\xedf\x10\xdd\xcc\xb4i\x1a\x8b\x00\x91Y\x04\xc6\x0b\'\x7f\x0f\x19I\xf0\x8a\x80\x87\xf2\xee\t\xf7\xe9[0\x97{YTu#Wtn\x9ee\xc4G\x8cjF\xd4\xd1\x0fH\xc2\xa1\x99\xdde\xdf\xb9\xc7\xdc\x16\xa2\xbc\xb0\xf5\xf4\xc9}\x9d\x81#o\xb0v\x95\xfb\xc1\x9e\xb5l\x9a\xd1\xc4\xc5\xb6\xd4\xa0I\t\t\x11o#\x82u4\x11\x0f\x80\x00\xe2\xe6\xde\xb9\x87I\xa7\xc6\xa5Zb*wux_\x83t\xdd\xe2iV\xd4\xfe\xf4G\xaa\xb3B\xd8C\x17\xde\xe7\x87\x92\xde\xc8\x12\xff\xeaU[\xf6\xb7 "\xe8Z\x11\x8fX\xec\x03\x1b\'\xb4\xccFG\x9c\xb2/\xdfe\x10"\xad\xa0\x84\xf4<\xf2$\x00@\xc5\x95\x1elU\xdek\x9b\xaah\x168\xb6\x97\xe5\xa3L\xdeJa$\x14\x1b`X\x1c\xd9\xaf\xb9p\x8d7;\xddu\xfa\xb1\xf7\x8f\xdd@\x11+8\xaa\xed\xc7W\xdd/\x03\xc3\x1c\xda\x8d\xf4\x7fE\x89X\x8e\xda\xb5\xc9)\xef\x1c\xe0\x1f5E\x8f\xb8\xc5\x82<\xcc>\xd3\xfd\xe2\x91\x14\xc4{\x1b\x89_\x97\xb6\x07\xef3\xaf\'\xf1(\x01\x08\x9b\xbd\xb2\x0f\xa4\xa9\r\xb1\x8aA\xe5\xc95\xa6N\x0c\x16\xe8\xee\xa6\x94r\xfd\x01mt\xeb\xc1u\xd0\x81j!LRV\x9a\x8b\x01\x92s\xc1N`&\x94+\xa3\xc8\xd8&6\x1f\xf3\x85\x80\x8b\xab\xc8\xc9u Mg,\xfc\xe6:\xcec\x8e\xb01\xd9\xb5F\x16\xf5\x07\rQ\x81y\xa9\xf8\xb4CK\xff\x03\xc4\xe4\xc2m\xc8h>\xbc\x86y\xcaA\xd0Vi0\xfa"\xb6\x8c\xbd\xd9\xc4\xc8\xd0\x8a\x05F]\x15\x8b\xab\xfaHA\xb3\x03\xd8\x08\x91\xe5LC\x8a:\xb2\xe3F\xebr\x90\x95\x03\x8f\x88I\xd2BM\xd0Q\x9d\xeb\xaax\xc3\x04T7\xea!\xbe\xc8\xeeg\x07\x0fv\x1bu\xfb\x8e?\xd5\xdd\xe9wkYr\n\x98[Q\xceU\x8b\xe1\xe4%w5\x0c$t\xd6\xb3B\x07\x98\x8b\xf3\xd9\x01\x07?\x13\xeb\xda\xdb\t/\xc0\xe5\x88J\x0b/\x8f\xb3x\x01\xe1\xec@\xb6f\x0b\xef\x9c\xabR\xd0U\xff\xe8\xc3\xbcj\xfb\xbb\xbcT\x99\xbe\xda\xf9\xf5I\x94\x0b8\xfd\x0e\x9fuG\xc9\x8b\x8c\xf9I\xf8\xe9\x1dT\xbdP`\x98\xe9\xd8\xbb\xdc\x91;\x05\xd9\x90{\ty\x88\xbc\x18\x13k\xd6\xdb~x\xf87y\x8c\x9buj\x9d\xc1\x92\x10\xe3AEy\xbfn\xa34\xd4V^\x9b)\x13`\xd7ZM\x08\xd65ok\xcd\x87\xc0_B\xd8\xdad\xabc\xc9F \t,\x06\x87\xe6\tP\xdc\xfeL\xc5\x17M8\x8a\x15\x8ad\xfc\x94I\x12\xacd\xe9-^\x18v\x0f\x016\x0b\xb8\x83r\x1f\x18w\xc6\xd2+ux:\xf8Q\x02\xa0\xe0;\x10\xda\x81\xb2\xc9\xb1\xa0\xa5\xc7\xbc\xfc>\xf5\xec\xe1\xe1\xdc{\x92;\x14OqU@\x0bH\xb0\xf1\xcb%\x08\xd3j\xee4\xd7\x8c1\x0c\x0c\xeak\xc3AKP\x90yz\x00emQ\xae\xe3\xc7\x88\xcc-\xe7\xb4\xe8+\xcck\x17\x83\x87u\xc2w\x8a\xb0\xe1\x8dN\xa2\x14=\xa1\x9b\xc7M\xd78\x97wt\x96]D\xaa\xd8\xd9\xa1/_\xfc\xff{lm\xbe\x86c_8\xb6w\x10\xf1o\xe4\xd3\x14\x8a\x0b+\x9e\x80\x1b\xf3\xf7,\xd0|\x9d4\tu\x9b\x81Z\xbd\tw2h\x1a\xe6\x84\x16NO\x05\xc6\x18\xd6@\xe9\xdb4\x90\xd5\x01\xb8\x8b\xac\x15x\xcbU\x16F\x0e\x93\x88c*\x01\xa4\xca\x8b"o \xf6\xc6\x82\xe2\xa4\x1c\xe4\x1b\xe3\xa9oN\x17\x8a~\xb7\xb0\xe2<\x87s\xd3\xe4\x83)4\x98\xeaI[\xf2\xbd\x1d\x00\x84#\x1c \x92\xa1O[\xefjlM6\xdb\xdf\n\x90\xa3\xfbS5\x90B?4\xcbD}\xd1\xb2\x93kw\x90R\x14\x05\x93\x18\xa8\x88[\xc9\x98\x9cW\\M9\x0eE\x8e\x9a\x10\xdd\xafE\t\'s\x1c?\x9aO\xec\xec\xbf\'\x0fx\xbb\x1b\xa9\xf2*`\xbab\xb6;\xbe5\xd3\'m\x13\xd9?\x0e\xd8\xb8T\xedw\xed\xe8\x8d\xaa(\xca\xb6i\xc8\x9e\x92&\xc5\xcfp\xc0\xfa\xa9\xc6\xc4#\x1f\x8c\\\x01\x91+\xf9M\x03\xec\t\xd3\x11|\xe8\x11\xa0\xf5@\xdc\x9a\xbb\x91z\x80+\x19<\x94t\x1ap\x0e\x93\xa9\x15? \xa1d\xb3\xf9_L\xae(\xa4\xf4N\xbd\xc1\r\x06\xcb\xdfw\x01\xa3\xfa\x9a\x9f\x81\xd1\xb8Y\xe3\t\xa5\x93&\xac\x93\x1bz\x1b\xc2\xad\x7f\xac\xfab\xe1\x857\x83G\xe6M\x93\x02{\xf0\x01\xce\xb3\xde\xeb\xe5\xc6\xe9\xeb\xf5x.~\xa7\x98\x11:\xe3\xdb\x94\x99\x9b\x1c_\x8dQ\xdd\xc9\x99\xf2\x16\x9eR\x7fs.\xd8<\xbb\x1a\xac\xf1\x10i\x8fct\xc42\x1c\x95\xa5\x99\x8a\x8bb)\xde@\x97\xb6\xb5)\x15*kq\xf3,~\x8c\xbe\xd6\xbcqb;Ad\x03\x1dj\xd1\x9a\x8a\xaeH!\xc0\xfb\x1a\xb4$\x8d\xd4-\xf7\xac\xe7\x87\x99\x9d\xcd\x06h\x88\x97yFCx\xa4|\x089p\x93\xfa}\x86j\x02\xf6G\x88\t\x04\xa7L\x90\x96":\x99\xcc\x9e\x8d\x05q\x16F\xd1R\xd4\xdc\xd9\xe9D\xa3\x82\n\x03\xbf\x1c\x01\xc5\x02ks\x05\xe8\x08@W\'8\xa8\xd0?\xdd\x96\xea\xf2\xc1\xa2\xef6\x00RO\xec\xda\xecs\xd8a\x8f\x05\x85\xd0\x88U[k\xbd\xe7\x99q\x926K\xf2\x14\x1a\x9fi\xe9\xf4\xbd0}\xaa-\xb5vp\x14i.\xa4\xc2\xb1\xe2\xf5T\xae\xa9\x1e\xd5\xb9\xdabxO\xd5\x1bgYn\xf1\x18\xa0\x8e\xb8\xd95\x99^J\xed\xff\xd8\xfd&\x9c-6-n\xbb\x08\xebR\x90\xce\t\x9a\x96\x82Q\xe6\xeeW=\xd8j\xf2\x05\xef\x11B|\xf0|\xa24QZ\xfe&\x16Ib\xd8\r\x1d\xf9\x15\x0bw\xd4]S#\xad\x16\x8f\x90\xf4r\xc39\xa0\x1a\xe6$\x03\xe1\xc3p\xffF\xc7y\xb6:\x98\x0e\xe5\xb7\xd9u\xe8J)\x7f\x96\xf4\x1d3\xab&\xf0\x03V\xd7\x9f\xe2\xe9K\xd2\xff\xb9\x04DD\x19\xc7\x901\x95;\xf4\xff&\xdb\x10\xc86\x8a\xbe?}\xe7[\xb8\xe3\x83L\x9eG\x86\x83%Z\x9c\t/\x99C\xbe\x8b\x0b\xa5\x82\x89J\x14\x85\x88$\xddj!hz\xd7#\xa9,\xfd\xb4\x91\xed\'\xda\x1a\xe3\xcf\xad\xe6\xb8p\xa3[M\x06W\xfe\xe6l\xeer\xe3\xf1\x1cm\xcc\xc9\xb9\x8dp\xda+\xc4\xbe\xa5\xe1\x1a\x04\x8a\xeeZ\xc9*\xd4R{g\x8d\xae\xa8kOMv\x1bZ:2s8F\xa0\x8f\xfc\xb4i\xbc\xbfy\xfb\xe5\xe4\xe5\xaf\x1d\x8cN\x88\xf5\xbd<>q\xd9\x9b\xb3\xce\xd5\x93\xb6\x9cDd\xc5\xcc\xce\xd5cF\x92s@}j\xfe\x91<\xbay\xd7V.\xda\xc6e@\xbe?\xbf\xf2tY\x0bSsU\x95\x90j v\x89*\xa0\xa6\xf3L\x0fMy\x05\xf2J\xdfW\x03\xb7\xce\x02\xa9\xf6N6j\xcf\xf8\xf9Lti3\x88c\xfc\xf9\xe0]\x88\xe0oh\xd6\xee\x98w\x84d^/A\x17\xe5\x9d\x98\xa7\x16\x97?\xcaF\xed\xf9\xdd\x88\xea\xc8\xe2>q\x06\x12\xc9\x13\xbf\xd0\x96JOX\x98\xd7C\x8b\xda \x04y\xbd\xfee\x19\xcc\x9c;m<\xa8}q\xd7\x02\xa8\xde\xcb\x9amr\x1f\xf5\xb0\xbb\xe7\xaa\xbfJY\xe8@\xe5Y\xa6\xd5\xed\t\x8d\xef\x14fC\x91\x8c\xf1\x16\x84\x1e.\x14\x86\xddI\x94\t\'\xe8@\xe0\xdf\xf5o\x81\xea\xa1J\xfb\xd3g\xceX\xb2Y\x07RO\x89b\xaa\x8b\xd1G\x85\x96lwh\xa6\xd6\xd8\xc7(\xc62\xfd;9\x92\xfaG\xce&C\x01\xb9n\x85\xec\xfeE\xf7\xa4\xfb\xedP\xd82\xd7\xf4\xd5\xd4d\xb5\x93\xae\xe8\xc3\xc2q\x9a\xc8\xf0Pi\r\x07\x9b\xd4.\xe9P\xce\xe0\xae\xca\x93\t|\xb1\xd15\xc4\xfe\xdd\x8e\xb4\xca\x9aEn\xfa\xcf\x00\x9b\xb2\x16;\xde\xb6/\x94\x1b\x0b\xd7\x0cU\xbc{\xf3I\x85P\x06\xf2C&\xdcEH\x1a\xd6`3\xc8Cj\x02OSGKRd\x8a_u.BH\n<\xff,o\x1f\xcf\x8b}\xf0\x15!\x8fT\xc6\xf9\xdfcK\x8fF<\x11\xb4\x18\xd0\t\xd3I\xd2\xea\xe76\x11\x00f\xe8f\xdf\xe3\x18cJ\xa0\xeb\xd9\xdc\xf7S\xabR\xa5gCQ\x0f\xb1\xfbA\x0e\x11\xa0*\xe66\xd1\xea\xd5\xfcC\x8apF\'\x07R\x160\xc5u\xdc\\ \xe4\xa6\x11<\x1b\x82\x94l\xf6\nY\xe7\x89\xabs`\xe1#\xa1\x1f\x88n\xae\xfcVR\x03w\xa5\xf8\x1f\xae2?\xbaGS.\x1f0@B\xf3]\xc7)|+\xf0\xc9\x86\xe6e\x94#\xfa\xd3}xY%\xbf\x14\x98\xbf,\xe9\xf7.\xc8\xde\xd8"\x19\xc2\xc5\xc3!\xf5\xe0$S\xdb\xae>F\t\x1at\xd44l\xc5\x88\xc1.\x10\x1e5z\xd1\x1d^\xfdZi\xfe\xdb\xafE)OJ\xa6l\x82\x1c\xf6\xca\xe9\xcd\x0c\xa6\xaf\xf18\xc3AI~\xe2\x15\xd1S~\xbeL\x92\x98\xfa\xe9(\xc8\xefX)x(\x1f\xe5].\xabwY,5\x04\x95\x8alj\xe8\xe3\x98\x0e\x11K\x11>D+,\x8f\xd7\x1ff\xf3\xba/\xdf\xdb\x8f\'-A\xdd\xf6\xf3d\x1e\x03l\xe1n\x81\xb7\xf9mT\xf2k\xd7\xe8\x08E^\xe2u*\xa1\x8f\xffm\n\x18,\xdd\x03\xfb\xb4\xde\xa4\xe1\xdaq\xf4\xa5u,<\xec\xd5K8\xc0P\x92r\x9e(8}\x85\x98\x8f\xc7\xe7:-\xce|\x9f\xa4C\xe8\x92\xa5\xe0\'D\xb4h\xa3\x1c\x9d\xa5\xde\xc4\xfb\xf0PP\xea\xdf\xa8\x1d\x07l\x1a\x15\xec\x88\x91\'\x98\x9d\xe6\xe1t\x9cdR\xd9\x8d\xfc\x07\xfd\xb5GrF\x11\x9c\xa5\xe2\xffoY\x89\x95\xab\xe1\xc5\xae\xa0d\x99?\xe0\xc7\x99\x93\xe9u\xf38\t\xd7R\xc9\xa3\xcf\xef\x0fv{\xdf\xf9\x11\x10\x88\xe6\xa4-\xaf\xcc\xd1\xe6\x9f\x9c\xcbH\xa8m\xd8?\xf7\xf5\xbe\xde\x84\x07\xbc\xb4\xad\'V1y\xb5\x9c\x90\x0f\x99\x02\xa2E\xd0\xf5\xb3\xa7I\xdbE\xf9\x02^\x8ao\xd3\x94\xfb\x9a\x13\xe5\'\xeb,\xf8\xae\xd1c\xa2>T\xac\x02\x10\xd4\xc2\xc0\xa3\x1c\x1c\x9b\x80\xa5-\x92\xfcO\xb9\x0e\xc0i\x9ba\xc3\xa0\x17\xacg\xc6\xeel+Q\xa3\xfc\xbfX\r>u\xc9NmgP"\xb5\x8eBfO\xf4\x84`\tUm\x1bAn\x84\x00p\x08~\x1c\x1f\x95%\x9f\'\x93\x90\xe9\xd5x\xcanY\xbeLqW\xcc\x1e\x02!\xc01%\x93\x02F\x89\xbax\x11\xa9\xb4\xe5\xd6\xc2\xb4\xaf>\xf0\xafPV\x83\x1e(\'\xabf\xbe\xde\xd9c\x01U\xb8Z3E\xcc*\xa6t?l$8\xf1N:v}\xb6\xd7_\xef.\xd5!\xeb|\xc9\xa5\x97\x96\xed=\x90\n1A\xcep\xe5\xd4\xf2\xc7\xae6x\x1e37\x10\xdby\x85\x8d\xd1\x83\x1cw\x9c=\xfe\x05\x98-\x11\x8d\xed\x1dt\x1f\x86\xd0\xdac(J\xa7\x94NpO!E\x8f\xfd+R\xb6\xe05%*\xcdn\xebS\xe8eJ\x96/\x98k\xe5_>\x0b\xc3?\xb1\x0bi\\\xc8\x82\x13\x83\xbdg\xfc\x82k\xf8\xd0\x81K\xaaV\xe2\xbdJ\x96\xf6!\xfan.\x9b\x02H\xca_\xe69\xf2\xc3C~?z@\xa9C|\x10\'\x8d\x14\xc0\xb3\xf7\xe7_\xb1\xd1\x15\xb3\x87\xe4h\xf0\x9b\xcd\x003gce\x8fE[5v\xb4+X\xa2\xa9\xfb)\xb5\x983\x0b\xf6\x03\xf3\xaa(\x9c\xac2\x80\xbd\x00\t\x15\x85\x95\xa0\xde\xac`@%\xbc\xda@6x\xc6\xcc\x9a\xe3\xa6\x88\x12fJ:>>d\xa2\xb2\t!\x7fT\x92\xdd\x97\x13\x15G\xd7\x8aHl\xd5\xe2\xe7\xebn1jDS\xba\xabZwh\x17\xbd\x1b\x8f\x9aU\xe5\xc7a#\x9e\xef\x9b\xa7\xdd\xbcFu\xe5DK\xd4ZD\xfeu\xf0 \x8e\xe5BY8\t\x02\xa4\xb5\xb9\x8b5\xe9z\x12\x006\x04_\x10\xff\xe5\x06$Wp\x0b\x0c\xda\x0bJR\n+I"k(\x12%fW\xef\xe0\x83\xd5\x1c\x7f\xae\xc6\xd5\xf9\xd9*\xdbrQ[\x8b^\x82{G\x11nC\x8b\x00\\\xfa\x82\xcf\x82\x81\xd1HkB\x00\t\x8b\x13\x93\x1cq\x91l\x89\xdb\xdd[\x9b\x84\x1b2\x05jV>\xe9\x99\xa3\xa5\x8fW\xd9%9E\xe3\xef\xf7z\'?\xed\x8c\x84\xed\x9b\xf7\x80!\x9a\xa45\xa0Y7\xaeU\x9f\xc5\xe1.A\rsn\x04\x9a\x90]T\xf4)\x0ft7\x05\xf2Q\x08~\xbf\x8a\xc8\xf5E\xb6\x93\xa7\xb3\xb4\xf9\xd8=\xdb\x881\xa9\xe3\xdb(`g@MD\x01\xe6B\x04\xe5$\xdfu\x0c>\xc6\xbe\xd0\xe9\xab\xeeJ&~s\x96\x8b\x17\xfbY6\x8f\x1do\xcdB\xf1\xc1U\xfc\x08^gog\xf0\xd0\xef\xd4[\x01\x9fV\x030p)Q\xe6\xf1\x10\xf0\x8bZ3\xcb\x900\xa2\\\x9dM\xa8\n\x82\x8f9xy0\x9f\xb1*Iu\x88\x1d&\xe9\xa9M\xd9k\xdah\x1b\xbb4\x80)?\x89XD\xdd\xdcdh@U?\x13\xff\x14\x15\xbc\x9c\xc1\xfd\xc2O}\x8e\x12\xbf\x07\r\x90\x1b\xbe\xc1.\xc3\x1c\xd3\x8cV\xf7\xcc\xc8q\xd3\x9b \x11\x1cL.\x9d\xd3\xe8`a\xb0\xb4\x91\xcd\xf9o\xd4S*eJl\xff\xe0C|{\x9aG\xab\x82\xb38\xc1\x98\x14!\xd4\xa2\x9dB\xd5(\xb9*\xdf\xc7\x0c\xf1\xa8\x96\xea\xf0\x93\xe6\xdfH\xe8Z-\xc1\xcb\x87\x95fZ/*|M\x10"\x94G\xbb\xeb\xe1\xa2\x96\x0fZ\xaf\x7f0\xf3\xcb\xffa\x82\x9b@\xea4\xf43)w;\x07\xce\x0e\n\x17{"\xda\xe4\xc65\r]}A\xd6\x18\xdb\xc3\x85\x177\x8es\xb3\xd2\xab\xbf\x05\x8d}\x86\xa9\xc1\x0e\x1e\x1d@x\xa7p\x85\x05\xecm(\xe4(i\x93\xe04\x93\xd6\xe4#Q\xf0f\xffO\xf7\xd6e\x9b)\xbdc\xe6qj\x96\x81\xefo\x08\xbb>\x83j\xb5\xcd\'\xbd\x97\xd9c\x03\xa9\xa9T>r\xb9D\xd7\x16\xe2\xd1V\x81\x9e%\x9c\x08^\x11x\xc6\x1e\xd1\xc6N\x82r\x9d\xca\xcfZ\x96\xe4f\x0f\xc4\x98^x\xc0*\t<-\x99\t\xb0\xe2\x0c\x92\xd3\xedd\xa2\x00\xf7M\xe88K\x0f\x03{\x1ep\xc6\xa2\t\xcb\x9fh^Z\x85\x96\xf1P\n\xe1\x8d\xb8\x97\xb77V\xe9\'\xf6.\xe4\x81\xfe&\x1f\xb9{\xe1u\r4z\x14R\x0e\xba9\x89\xe1E\xc2p\x06\x99n\xdf\x1a!\xfe\xdeQ\x14W\x93\xed\xd9K\x93-\xa097\xd2[\xf1\xa0\xb0>A\xae\xa1N|\xd6\xc5{\xf8\xbbit\xbcx\xee\xec\xc0\xa2\x9c>\x0b\xf0B\xc7\xc7\x8d\x96\x1a\xa6\x10\xf1g\xae\x06\x967\xd9Q\xde\xa1N]J\\\xaaHu\xc2\x11\x1f\x0cxGe\x18\x9f\xd2pD`\xaf\xea)}\x7fV\xbf\xf9\xa9\x89\xb8\r\x82\x0f\xf5\xd4\xbe\xeawg\x8e\xa1\x83\x04\xb2\xccx\xb5{~2\x98<\x07I\xa8\xc1p\x01\xc70\xd0\x92\xae\x8d\xf83\x1f\xac-\xdd\x8c\x95]\x80\xb3\xcc\x11\xd4\xef\x94H\xd7\x89\xbe\xa7\x96\xfc\x12\xcc\xb8&\x81+\xc6\xd2Fxy\xe0#WS\xa6W\xc2\x92\xfb4}i3\x1e\x16\x07\xbc\x16\x93\xd5\x924\xf3\x8b\xf4\xe3,/\xe2g,\x9d\x1d>L\\\x0b\xeb&\xf1\xe2\x1d$\x9c\xe5\xb9\xe7\x9f\xf3f\xa8\xfae\xb4>\x14H\xd48:\xf3\xc4\x0b!\xfb\xb3\xa2\x9dA\xac\x1bt{\x9b\x92\xa5q\xa8\xd7\x9aeJ\x8e\xad\x9eh\x10O\xb88qT\xdf&\xb3L\xca!\xca\xaf\x07\xedy\x19\xb5\xa0Y<B6VI\x87|h\xcb*%\x96k#\xf8\xc1.\xf1\x17Wr@`fW</A\r\xab\xe3Lt\x91\x03\xb0\np}oA\xe8\x90\xfaB\xd4\xe8\x02q\xe2\x14=\x8a\xe0\xb6\x0e[v\x87\x04w\xc5\xe9\'\xaf\xb7\xde\xf9\xbdjA\x9dM\xc9\xf7\xe3JuLe\xdc\x9d\xac\x9eD\xf6\xa2$l\xb8s\xe8\x00\xd0\x1f\xc3\xb49\x1fu"\xb0x\x1a>\xd7$\xf8\xadv\xbc\xcd\xd1\x85|\'\xcc\xa1\xfc\x85\x9c\xc3S\xcek$Q\xae\x94S\xe7\x14\x08\x95\x1a\xa7\xe5\xaa\x0f\xde\xe7~\x15>\xbb\x81\xfa\xee3\xd9\xcc\x85\xc1\xeb\xf7\x0c.\x7f\xbet\xc3\xacK)0}\xc7\x13\x15\x86S0S\xaa\x81\x16\xcc b\x9c\x15\x0e\x13[G\x13|\xc3-p\x06\xe6\r\xf7\x1a\xf24\\\x82-\xbaL\xb6]\x88\x1e\xfe\xb7H\x97J\xdb\xbaP@\xff\x17\x11\xaa\x9f\x84\x82\xca\x94\xad\rj\xe9\xca\xd7\xfb\xc3n\xb7\xcc!\x06\x06\x1e+\xdd}\x1fA\xbe\xbb\xf8\x00\xc7\xfb\xe2\xcc\xd0\xa5\xb2\xc8@\xcc\xd0\xce\x1d\x9f\xad\x04\xba\xfe\x84\x81\xb3G\xe9\x1c_\xa9\x8e8.\xdd\x8b\xb1Y\xe8\xbf\xa33\x80Y\x8a\xea\x1d\x15\xe8;\xedybQmu?\x85\xe4\xde\xdbj\xcb\xfc\xdb\xee\xe8I\xd8\x1c\\\xfe\x17\xf6\'\xd7\n\x18\x82\x84R@\xb7\x18*e\xfb;\x87SO\xe1\xc6\xa6B\xba\x12\xea*\xd0,%\xb8/%\xd7\xdaZ\x05\xb3\xa3,\x0e\xcc\xb8\x1e\x99\xc7\xab\x98c 6B\x90\x14W\xd8\xd9\x10\xfaL\xf3\xce]\xa6C\xb0\x91?\xe0D]3uh\xf9Y\x85K]\xdf\xbbw-\x07%%\x04\xcc~!lG\xb0l\x8c\xd7\xea\x86l\x96\xbf\x1cwz\\\xe7iY\x19\xf9\x94\xca\xbcU\x10\x1e3N\x8c\x16 ro\xf5\x9cqLr%\xf9LPT}\x11\xbe\x7f\xcb\xc8\xa0\xe4\xdaA\x1cN\x1b\x1d\x8cI\x15\xe1Z\xbaD5\xe3\x13\xfcd\xf6\xbd\x1a\xcc"\x82\x08Ns\xa9\xf9\xfcI\xaa3\xf9V\'\xedb*s\xcf\xf4\'\xc4\x94\x1b\xa0\xf7\xf8p\xc3\xae\xa2\xa5g\x9a1w\x8a\xdd\xf5\xbd\x06\x93\\\xa2\x04\xee\xbfp$\x9a(K\x1c(\n\x10I\xf4Z\xa4?\xb3\x86h(\xe9\x08\xc3\xf6\xadD\x87\x8f\xa0\xcex`\xeb\xc2B\x944E\xce\xd8\xf0\xee\xa3\xd6\x8b\xab\xb3q\xf9\xd1\x7fvI?\x04\x0fBY\x15rr\xc1\xcf\xf7\x90\x83x\xa8\xdf\xa8my\xdb\x83\x9d\x88!\xfc/\x0f\x18\xf1\xeft\xad[\xbe\xb5\xf1:\xe4\x973\xd5W%\xdb\xbe>R\xd9i\xac\xa1 Y\xb8\x1a\xad\xcc\xd0\xe1\rIW\x93\xf7\x16\xcd\x80\x01\xe6N\xe9\xf4g\x03\x0c\x8c\x95\x1dt\xdd\x11\xc6\xd5$h\xb2\xf28\xfe\xf0\x8e07\xb3^#\xbd\xab?\xc5x\x86\x0b\x02\x04y\x9d\x96\xaeZ\xb6\xa4\xcc\xe0,\xa0\x1f\x8b\xc6\xdas\xb9\x8c\xe7\x05\xb0\xd6\xf8\xf14."P\xa1\xcc\xd0\xcb.\xd5@i\xd8w\xf7\xe5\xd6C$j~2\x9a\x873D\xab\xbb\xd4\x8bI\xf1\x03\x90\xd4\x1d!\x15l\x88\x02\xf9\x8f\x89\xd2\x14n\xf6\xaa\xa0U\x14\xb8\xf8c\t\x16\xca\xb0\xf8q\xafSq\x1b\xa6\x05\xae\xc5\xba(7\xfb\x1e\xe7\x0cI+\xdc\xad>\xd6\xc7\x07\x89*\xb7)~\xf9`\x92\xa2\xe8U\xb5\x1b=\x84\xdf\xa5\x0fe@V\xb4\x9f\xeeI-\xb9\xc6^i\x8c\xcb\x03\xa4<\x92&\xec\xd9dFc9\xcf\xa1Et\xd3-\x05"\x7f\x91\x9f\x00j\xa5\x1f\x06\x905li\xb3\x12\x185}\x81\xa0\xdc(\xa6\xb5\xaaha<\x08\x18\xe2k\xe1]\x15\x9c\x8b\xd4\xf3\x87z\xfa\xb6\x88\r?\xec\x04\xe7\x0cx\xf5\x916\xa4\x1b\xab\xb9\xb3\xadw\xcf(\x16\x97;\xd9p=?\xf9\x01(4\xc7\x1a\xa8wp\x9d\xbd\x905x\x052\x8c\x92\x97\xc2\xfb\\\xad\x95\xada\xcd\x9b\x92\xd2\x11\xd7\x9d7\x11\xfe\x1f\xe3\xba[\xf4\xe8|\x9c\x16\x8a\xa1q\x81\x80}\xa4\xe9\n\x95\xe0>\x90\x05\xca\x10\xfaq#\xc7\xc7\x86\x8bH\x14\x99|#\x9d\x04=\xc0H\x17\xd2\x13\xd5B\xe9\r\x1d\x982\rj\x86\x04\xf26\x83Kc\xdd\xeaY\xc8\xa5\x05\xea\xee\x8dD\xce\xd07\x9e\xf0\xfc\x8e*V|\xa7O\x04\x89.)DP\x85\xd6\x06\xcd\x0e\x9f]S\x02\xe3/A\xb5\xd09/X\xea|^jZ]`\xde\xbev\xd7\x89#\xd1>\xf5\xf3\x8e\x88\xca%a\x9e\x96\xe7X\x17T\xb96\xc9\xa7\x1e\xfc\xce\x1fmg\xe5\xa2\xcaC\xa3\x0e5L{x\xe5\x16i\xfce\xff\xa8i\xf0\xa0G\x96\x83\xa6\xe8\xdd\xa5=\x8e\xe1\x05\xafl\xedR\x11\xbb\xf4\xbfN\x10j\\\x93+\xe6\x96\x02\xac\xe0w\xbeZY0mx\x9dj\x10\x03\x01\xb4\xe6\x00\xaf\xed\x97\xcd\x7f\xb1\xc8N\x99\xc0\n\x15\x03\xa2\x02ER\x96\x88\xe0\xd3G]Q\xf7\x0e\x18\x9a\xc5\x1cmN\xb8WK\xd5%\xe3\x13\x11\x8e=\xdd&\xf7\xf9\xb33@yH\x9c\x9c\x14\xa5\xf78&z\xd1\x8b\x0b\'\xe0;\x86\xa7%j%\xfd=\x04\xab\xc3T\x82\xbe\xd3\xc4\x9e\x12\xae\xb9\xd1\xe9\xe2\xaf\xda\xb0\xd7\x18\xb7\x7f\x99\xd4;\x9aQ\x85y\xf5\xe4\xab\x02\x9e\x95%\x90gE\t\x15\xc6YuW\xbc\xc3\x1c\x07&-5E:\xc89F\xb53\x9a\x1a\xcb\xd7\xe4\xe2\xb4\x82j\xc8\xbf\x88\x13B\x1b[\x9f\xc5\xe5\x0e\xe7\xd5\xd6\xdc^\xc2G\xb56\xcb\xa4\xa9l\x91\xdd\x9b~\x9f<\x128,\xcd\xee\x8b\xe4\x99\xd9j\x80l/\xb09\xad\x93\x851qShz\x15\xcbSEbW\x89\\\xad\xf0d\xda\x96\xa0\x8f\x86!\xe5\xec\x8b-\x87\xc6Kp\xcd\x1eo\xa3\x98\xd4\xca\xb9)N\xe1\x9e\xc6\xff\xa0\x10r\xba\x85@\x16\xbb\x89I\xd3\xa0L\x91Q\x81\x82\xf8\x90\xa3 O\x051\x1d\xf9\xb3^\xf6dHTu\xc6\xaeO\x0c\xde4r\xf9-!\x91~\xb4\xc8\x03\xa6\xd7[:\xf7\x10\xf7\x1c5\xef\xdb\x97\x81v\xf3 \xde\xf5\x05\xb9\xb2\x1b*\xf6\xb4\x06h\xec5\xfc\x1c\xb9\x97v\xbb*\x87\x03\xfc\xf6\xa2N,\xe1\x99\xc56\xab1~/c\x8e&\x100\x92\xee\x88\xf0\x05\xec\x15\xec\xe6\xb9m\xc4Q\xdd\r\xac\xae\xd8\x12\xd9S\xe9\xe2 W\xde\xbcr\x16L6\xf6b(?Y\xaa [\x9am\xabwQ\x96\x1eB%\xeb1\n*7.|F\xf8\xac\xa1}\xb7k\xdd\x03\t9P\xddlC@\xd6l\x10\xbd\x9d"\x10\x7f!h*\xb9\xf2\x85\x0e+j1\xe2\xac\x03\xd2\xde4\xff+\x14\x8a\x9cyc\xc4\xa2J\x1fl\xadis\xdf|\xc7\xff\xb6\xf5\xd7~\xc4\xc28I\xc0\xb7\xca\x99ap\x01\xc6\x17\'\xbcT.\xd3 \xac%\xb7\xe3f\x03\xc9T\xbb\xfaA\x15\x7f\x93e\xf05\\G\xa4:2\xc6\xbeM9\x19k\xdd\xa4\x0e\x8c\xc3o\xc1i\xf5\x08\xe8\xa6$N\x1d\x88\xad\x88\xba\xba8\xd1\x94\x81\xfc\xa0+\xf3\n\x1f\xfct]\x8c\x86\x92\x05%\xa2\x04\xe9[\x94\xea\xe8\xc2\xe46[+O\xcd\xffF)\xc4\x0b+\xf4\x97\x9e\xc1\x05A\xcb\x84\xc4\xd1\xb9X\xc8\xd6B~+,\xd6\xf0\nC\x99\xf4\x98n\xf0PG\x8cn\xaaZ\x14\x9b\x93/\xbbx\xf6\xb7\xd6)3M\x84\xf0\x18\xad\x12\xd0\t\x1cr_j,\x7fC9\xa5D\xd1Y\xac\xce\x00\xdd}[AQ\x97\x90\x84%\xcb4o4=\x18\xf3 \xb7\xe3\xe0\xbcUx\xb9\xa9\xb4O\x05\xa0\xdbh\x00"\x02`\x13C}f~5\x8a\x97J= \x8f5T\xe9R!\x99\xd0\x80\x89\rw\x884\x9b\xeaI+\x02\x1dk\xbf^\xf4\x0bY\xe0I\tj\xe1u\xb7\x15p\x8d\x19\xd8\xae\x14\xa3\tB\x90\xf7\xfe:;\\\rv\xd3\x87\x1bvq\x05\xcb\xcb\xc5\x8b7Z\x0bc\x9e\xad\xa6\x13\xe6RD\x81\\\x9b\x0c:\x1dl\xe7\xd3e\xc5g\xb0Sy\x02\xdb\xf0\xcf\xd9\xc8\xe5f?\xd7\xa9\xc2F\xde\x12\xd7"vd~\x01.\xd8\x1f\xea \xe2\x8b\xd8\xa8\xa6\x0e\xa4\xd4\x96B\xf4\xef\x9aD\x02\xca\x94*\xfa\xb7\xdd\x96N\xa7\x9a\x1d\x0b\xe4Gl\x18\xa2y.\xfe\xdb\x9b\xafX\x1d/\x0f{<H\x98\x7f=\xcb\xa5\xddVq\xdd\x9bF\xe8!\x0e\x0e\xd7%\xe0\xa5\xa0\xe4\xa1\x11\xebw\x85\x9eju+\x01\x06\r\xe2\x95\xcf\x8cE\xe9\x9d\xb3\xc0\x15\x1c\xb9\x02^R=\xdd!&I\x9e\'\x85\x91I\\f\x06\xd3J\x9b,\xb2}g\xf3\xa9BU\xdd@\xdc?\xf6\xca \xd2\xa9F\xb1S\x08\xe0a\xean{i\x01\xc4)\xba4\x05\xf6\xbbM\x86\t\xfa\x80\xe1\x98%?\x16\xfc\xc86^<\x12\x19\x18\xb80\xe1\xa4\x97\x80\xbd\xbc\xe8f\x81\xd3\xd5\xd1h\x03\xcc3\xbf \x8c:U\xeb\x89\x9b\x9d\x9a\x83\xd7\x03\xf2\xd99;\xb9z\x86\xbe;\xee26\xc7"d\xc3\xe2\xe9\xd6dE\x82gH\xac\x8e\xd6\xa2\x1c\x95+$\xc3T""\x07\x944\xac\x0b\x1f\xb6C\rT\xc5\x18_\x04\x05Yb\x90\xe8T\xb2~\x98\x95\xfc\x9dg\xc0\xa1\xbf\xf5\x02a\xb6\x89r\x93\xee\x8ba}\x03\xfc^\xf8x}\xa5\xf1\x1b\xaa\x0f\x12\xdd\xc8\xdd\\\xed \xffS\xf7\xf6\xa18\xc4B\x9b\xdf\x03\xa3C\x80\xb7\x8a\xe4\xedP\x83\xca\xff\xbf\x8bp!o\\\x81?\x8f\xfb`\xf3\t\xc0\x03u^n\x7f\xfa\x11\xcc\x18:\xaf\xc0\x91\xffU+\xd8\x7f\xcd\xbc\xc8\xbf\x1d2\xa3\xa4\xc6m\x17\x1c\xd4ZrQE\x1a\xa8\xca\xf0Z\xa6\xd8\xae~\xbe\xcb&\xf3\xf6\x9e\xb6(,U\x9f\xba/u;\xed\xa1\xc5J\x84=\x86\x07#^d\xc3&\x83\xd6\xa6@t\xa2\xeb\xb5 \xef7\xeb\xadZ\x00g\xa3&\x013%\x0f\x0c\xc4\xb1:\xe3\'\xd6\xff\x06\x9a\x87\xfb\xcb\xe3o\xc8\xb9\x13\n\x88\xf4\xb1\x8c\xdds\xf6\x1a\x8dB0j\xc4\rw\x02\xa6+V`*h\xfc\x96\x0b\xa9o\x83-U\xa5=1:j\xa7g C\xf8\x86?7\xdf\xdcNM,\x16\xc3\xb0\x9f^o7\xef"B"\xe8\x0e).\x92\xdd$\xa9A\\\xdc\xab\xda)$\xad460\xdev\x181\xae\x1cr\xcd\xbaa\xc5\xddpv\xb1\x8e\xba\xef,I9\'\x99\xae\xf8n\xe0vT\xf8@-p\xf8+\x86\xe7\xd8\xdb\x13\x1f\xec\xfcf\xb9W\xe6\xbe\xe3J\x1ah\x8e&\xbbd\xfb)\xf8\xcd\xf2\x868\x9f\xa0\xda\t\xe3\x80\xd5\x08\x1f$[\xde\x1bJ\xb6\xe9\xe5\x80\x1c\xcc\\\x18\x87\xc3O\xd12[1\x979,\xdag\x05d\xe5\xcf\xbc\xf8i\x9djS\xa7\xbe\x00\xd6[\xc6!\xb4\xfb\x01\xee\x1a\xbbK\x8b\x0f\x10\xd1x\x1c\x11"\xe3\xa4\xa5K\xf3\xab\xf2\xeb\x9bF\xd7\xc1\xb1\xc2D\x9d\xe1;\xd0R\xb1\xa8\xfb\x81\x0e\x7f\xb3\xe3\xb8\xeeW\x15\x1e\xc6\xfc\x95\x8d\x8c\x890F\xbd\xed9\xd2\xa7\x87\xadp\x9dR\xf0:\x08\xf7\x84\xe0c"\xb3w\x92\x82\x86~.\xf0z\xd1\x83sr\\\xca\xde\x13\xf5\x99<\xebo\x92\xec\xaa\xc1?o\xd2\x12S:\xab?\xaehV\xa2\x90A\\\xba\xda\xd2\x99e.\xc0d\x93\xfe\xc9\xe8\xe6\xb0\x8a\xddM\x9e\xd3\xd9\xee-U8\x99%R{\x9f\xc2\xed\x89\xf4GM\x94\xce\x99X\x12\x84\xe0[\xbfa\xa2\xa1\x95\xb3\x1d8\x91yp\x80e\xe4\xd2\x08\xa7\xc2\xaa\x92\xd1\x00WO\x10H:\xf6m\x04f\xa6 \xb5#1\n[A\xb6\xb1M\xf7\xa7\xd5\xc5\x9c\x8f\xf0\x8d\xcc\x9b\xeb\xc3\xa4\xfd\x9e\x1dF\x1f\xf3\xf1\xf2\x87lp\x81p\xff\x7fe\xe1\xa1\x85\xddc\xb63\xf6)\xe8iLr$%Y\xaf\x88\xc3\xdd\xae\xf0\x88\x94Wu4\x1f&3\x19\xd1LGej\x86\x80\x1e,"\x82Ug\xc1\xb7\x93\xf1\xe1`\xfd\xa25\xe4\x06J\xcd\x1e]\xf5-\\\x137\x15P/\x87d\xbf\xa7\x03\xc1\xe0Z\xe1\x078h8N5\x07\xce\xc85n\x02\xb9\xe9\x90\xd5\xc9\x0c\xbd\x16\xe7\xe4S\xc4\x19\xc3}\xc3\x0e\x1d\xe4Bq\xed\x89\x9f&\xce\x1e\xf9\xec~\xb2c}\x9a\x164\xb7\xf8I\xac\xfc\xd2\xeap\xed\xc0\x9e,)\xd9CK\n\xaaz\x90\xe9\xb3\xe4\xce\xd9\xf2\xc5-\xf3\x0f\xd3\x19\xce}\xb8\xfaX\xd4tN\xad\x03\xdb\xaf\xa6\x93\xfdw=\x01\x8b\x87\xb7\x85\xfd\xb2X\x1d,\xaceWD\xcc\xa04O\xe9\xde\xaf\xa0\x17 \xc0\x0c)\xc6F\x8b\x13\x16\x18\x99\xea\xf1D\xd9\x14\xe8\xbaT/PD\xd5\xd6_bW\xbco\xa8\xa7\xd9\xb6\xb5\xfe(\xb4#\xd0$C[\x0cv\x08\xb9\xdf\xcdcA\xa4R|\xa8\xe0.$U\\d\x94]\rB|\xf8FC3e\xb2<2\x0b\x7f!w#\xfa\xd8\x0ek\\\xb1\x17\x1f\x81E\xd7\x11\xa17e\x056\xf7a\xa1\x86(&\xcf\x8e\x19d(\xfdfA\xf4,\xdeR\xc9\x15\xa4\xe8\x08\x90t\xe6j\xedw\x85>L\x02=\xa8\xa3i\xe6\x91\xd8:\x81\x8a\xdf\x90z\xa5\x13\xe9\x0b\xa7\xe3\x87\xd4\x87\x03\xd8\xb7\x14\xa6\xfe\xb7\x83\xf9\xd0\x1c\'\xda\xdb\xd7K$\x94Mu\xdbXY\xec\x00^\xa9\x8cl9y\xf0\xf4\x91\xe2#}F\x061\xbb\x0c`\xa0`\xec\xb9\xc9\xd6\xb9\x07\n^\xec\xd7\xd3X\xf1\xb6\xe0\xa2\x95\x90\xf6\x91\x88hAd\xbf\xcf\xc0R\xd0\xa5\xa9\xbe\xbcK\x04\xda)\xf8\xae\x18}\x01-\xbc\x1b\xa5\x93\x9c]\x06\x833\xa1\xe1\x12\x1e\n:w\xff 0\x14\x9e\xf8HX\xfe\x05!\x92\xb7\xc8\xe2)A\xb4#,\x9d)#p3&R\x85\xef\xc1\xc8\x91S\xb6\xed\xdb\xbcl\xdf\xdf\x02w.\x01\xc58\xbf\xf6\xf9\x90yf\xc2\x88=\xb1\xed\xf0\x913\xa2\x04\xf6\xa5\x940\xc5\xb7Py\xbc\xdf\xec\xca\xd1\xd5\x9d\xe9NE\r \x0c@<w\x1f\xf3\xfbQ\xef\x07\xba\xb4K\xdd\x87\xcc7f\xf2#X\xbcV\x9dA\x95\x94\r\x9f\r\x8e+i9\xae\xe2\xfaQ\x89T\x05\xde\xec\x7f\xfb \xef\xad\xfaN\x8b\x06\xc5K&\xf2\xd6\xcd6k\xe6\x17\xd0\xc8\xc6O\x89\x8eH\xc8/\xd6\'\xda\x0fw\xa5\xfd\x0f\xf36\xbbC!6\xda\x9e\x97\x00d\x14\x86\xf4\xda2\xca\xce\xb7\xc2U|\x13\x15\x03a\xd9w\xda\xd4\x98&\xd9\xb8\xaa\xd9\x9e\xfb\x1f\x9d\x0c\xf0/X\xa7"\xfc\x8b\xf9\xaf\xeb\xd2\x86V;\x88\x93\x12\xd0\xcb\xe1\xf2q\xb3|\xc1\x1e \xfc<\x1c\x7f\x17\x17\xa5\xcd\xe3=\xe0N\xff\xcb\x88\xc9\xaa\x93\xb7\x16\x87\\~\xa6\x1egH4\xa6.\x1bNF\x97\x12\x13\xb9\xacI\xda3zx=KWQ\xa9\xc6\xb2\xb97\xc0\xb7a,\xf3\\&\x14\xef\x9b\x86\xb9\xa5o.\x13\xfc\xa4\xe1m8\xfa\xe7&F\x11M\x0b\xce\xeb\xc4JG3\xd2\nEMJ\x92%\x07o\xb7\x88\x97\xbf\xaebT\xf5\x03>\x04\x16\x8f~\xf8\x0c\x1e4+\xf5\xf7+\xb0ogzh\xd8\xc5\xeeT\xb40cCgm\xb5\x0f\xd3\xf6\xa7\x82\xebV~\xe8c\xff\xc35]\xe3\xeb\xf4$7\xce\xbc\xc4\xe0\x85\x85U"\xac?\x93-G\xb3\xf4\xaf\xed<\x00\xccg\x8e.$\x12\xf7\xc7\xe1\xf2sR\x9ca\x10\xad\x15\x17i\xa8\xdd\xe4\xf7\x9eZ%QY\xa1\xf5\x08\xa4\x8f>i\xd6)7\x8b/n\xfdW\xc1e\xe9@&B\xed\x12\x13\x9b\xc0]\xa5\x8em)\xc3\x8a\x0b\xdd\x04v\xa1^N\xfc\x86>v\x87j\x9aA\t=\xae\xda\x7f\xa6\xe3+WG\x14\x0b\xf7\x08R\xa9\x96cmC\xca\xa4\x02?\xc1\x00\xd4\xf2X& \x168%+\xf0\xac\xa3\xce=\xb7?U\x1f\x90\xcce\xee@\xe0!6\x06Z\x1e\r\x86^\xa8F\x8d\xbc\x07\xf2\xe5\xb0x\xe7\x01\xcdL\x0b \x85\xd3\x85\x88\xe9u\xd7\x0bx\xdb\xb4\xf95\xcb\x87^\xcb,j\xa6\xc9\x93\x88F\x93?pI\xf1\xa1X!\xb8\xdf!\xa5\xca!\xefT\x84)\xa3\x03\x97\x92\xb2/\xfa\xff)Q\x04\x86\nx\xa2)\xb1\xb3\x9c\xcc\xb2\x8b\xd1\xe82\xee\xf92%\xe4\x02\xe7\xf4@\xe1iH\xac\xa9\xe0\xb6\x0b?\xef\xd5\xf1b\x15\x1e\x07\xb5\x87#\x91\x95\xc4\xeb\xfb\xbf\x1aA\xdd*\x06\x1c\x16neD\x06\xa4\x0ch\xee4\xec\x96$\xdb\xdf\xa5\xa9\x16\x07\xc5\xc0p\xe2a\xe0\x8eb\xd7>\xb2\xf5%#,\xb5\xc1\xf52\x086(\xf9\xf3"\xab\x0e\xf9(*E\xae\xc90\x15\xc8=\xe4^B\xfd%1n\xa4\xec\x8d\xf5\xba\xd5\x8d\xba\xf9~\xf8\xdc\xd6l\xe5?\xbe\xe1\xceq\x9a\x9e\\!;9\xb9p>\xc5\x95\x05lH\xb7\xa1Be\x07\xa3\xdf/\x8dH\x92#)V&\xa2\x82\x0eR\xdb\x86?\xb5\xb4\xd2\x94\x91\n\x08\xebp`\xba\x88cX\xa6\x9f\x988[\xec\x1e\xef\x9c\x13\xff\x8cZ\x03-j\xec\xc5#\xc5\x95?;\xad\xc1bM\xb3\xc3j(\x18\xbe\xa97\xa9\xe6vG\xfcUlmI\xd9&;\\\x18\xa1\t`E\xe1\nC\xb3!\xb4\xff7&\x0e>)\x97\x01\xb8\xc6Q\xe0o\xc9^>\x81\x0cZ\xfe\x8f\xee\x84\xcd+\xcb\xbfD\xa6+\x11\x15l\xd6\xd3m\x8b\xf7K\x84\x93\xd4$\xbe\xba\xc0\xfa\xf6\xdaC\xa3\x8cy\xd1\xf7\xca~S\xe8\x10Z\xac\xbegZ4l\xf8\xd1\xcf\xcfK\xc3\xc9\x9euR\xdc\xfaG\xd0V\t`U\xde,u\x8f\x829\n(\xba\xe1v\xba!2y\x13\xa2\xdb\xc9\x97\xb3\x7f\x14\xfaU\'@\xc6\xbd\rlL\xfa\xff\xea\x9c\x15\xeb\xb2\x96\xdd\x04\x86s5\xc5\xfd[\x15r\x99\x96$ )%\xdc\xaa\x08a\x11Os\x8d_}\xb3uU\xcc&\x9f\xa6K\xa5\x1d\xfa\xca\x08x\xaa\x1e\xa0\x92_\xa6\xd1\x90\x91\xfdCuh\xd4B\xc1\\\x85\xc2-\xa2\xc1\xf9ft\xae\x9d\x83\xd4\xda\xdey\xef\x8e\x07\xbfS\xeclX\x02U\x81\xbd\xc3\x01\xa5Z6%\xf2FS\xfdN\xbc\xd0\xea\xd4-\x1e\x9c\xb6\xc2\xefrs\x81\xdeB\xa7\x17)\n\xbd8\xd9\x89\xeb\xe4\xc9\x18r\x03\t\x1a8\xbd|3Q\x94\xbc`\x87\xa0\x7fa\xb8\xdd\xf9\xec\x9a3\x9a\x19\xb9\x98\x8e\xdei\xe7\xd4\xb5\xfbN\xb9\xd4\xf5\xc2\xc0\xc7\x8d\xc6s\xf8\xd7\xb4\xb3n\xf3u\x9d@|\xa7\xb0\xf5&\xac\x06<\xad\xab\xb8\xf4\xeb4p\xa8\xa3\xf1Vdh<\xa8\r\x8a!\x03\xf1\x11\x94J9bT\xb7\x93\x9em\xf4\xb8_\xd8\x9f\x91(\x94\x91\x0c`\xb8%\x1b\xef\x10\x0c/\xc2\xd4\x96\xad[ \xe1<r\x91\xec\xa0\xa94\x92\x062\x19\xe5\xa6G\xbb\x07\xc0\xaf]\xdd~W\x14i\xcaJ`j\xc9\xf1qC+\x0c\xe1&w\xa7\xe2\x80\x9e\xc7\xf7bE]\xed\xc6\xec\xd3\xc8R\xfc\x8dG\xe2\x8c\xaf\xea-;\x14\xd1\xe2\xce\xee\x82\x8b\'\xf3\xb8M\xca\x954\xcf\x80\xa6\x9d\xeb\x1b\xe7{L\x17\xb9I\r\x8c\xc3g\x9b\x0c\xe5\xfe\xa2\x8a\xf4\xec\xe9\x1bU\xa0\xca,F\x97\x9e^\xfcXN\xae\r$\xba\\\x89 j\xef\xd4\x17\xd4\xbd\xf7~\xa3I\xf0w\xa3\xd9,\xfdO\xee\x9etmb\xa3\x9a\xd0\xd2\xa4\xcd\x15\x10mp\xc1\xfevsp6\xec\xfa\xda)\r\x83\xec\xcal\xceX\xdb\xed\xdd\x03\r7b\xfb\x9bVbW\xdb\x1c"\x13\x98\x8e\x1d\x80\xe6\x1f\xbc\x14H\xd4\xc6\xbfQ3Iv\xd0\xb8\xbc\xad{x\xfcc\xce\xdd\x1e1\xa0\x98l\xf2F\xc6\xc19\x97\xc4\xab6\x00\xf2r\xb2\x84\xbb\xc4\xbd\x96rG\xf7\xc4Q\xa8TG\x848\xda\xdc\xea\x07\'N\xbaP\xca:\x7f\xb5\xdb\xcc\x1a\xf7`I?rn,\x85Fy\x95\xf2\xaapC\xccCgt\x82\x06^Y\xb2\xd0\x98o\xc9\xff\xf90\xaf\xa9oB\xd5\xb9J\x02\xf4Z\xbd\xfa1\xe6h\xb3\xb3.\x92\x93t\x14hB\xcbT~\xba\xcb\x84\x16\n\xe4*\x03\x8c\x01\x98S\xe7\xe7?\xd8\x16^\x91\x9f}\xb0\xe4\x0c\xc0\xce\xc4\x06@\x98\xb3ju\xccZ\xa4\xc9\xeb\xc3\x85\x05(\xf9D\x7f\xf1!\xc3b\x9d\x94R\x00q\x9a=zr\x88]eB\x08\x17\x1fp\x9cl\x90\x8b\xf2\xe9\xfe\xf2;\xda\xbb=\xd8\xd2D\x07\xa7\xee\xa6\xbb?\x00\x0e\xe1E|>M \xda7\x12K\xee\xca*\xf0\x97|\xa8P\x9eA\xb0|\xc1\xd2TT\x85S\x8f\x0fA\xcb=\xb6-A\xe0H\x95\x02\t[\xc9\x1e\x8fJp\xb3 \xd0F\xb6h\xec\xc2\x12\x92\xaeB\xc2\x81\xbd\xe7\xbb\x0c\xcf\xd4}Y\x83C9\x94\x98p\xf06^s\x159\x9c\xf3;FDNLb~=\x9b8\x91]0\x07o4\xcc\xd5Ibu\xab\xb1+\xebs\xfc\xc8\x17\x11(\x97\xf5\x0bQJm\xbc\x91-\xbeCf\xf0\xad\x99\xbf\xd3\xeb\xed\x87\x98I\xb3\x8cJ\x1d\x18\xb2b\xeb\xa4\xe2\xb7\xea\xa6,B\xf3\xdb\xafD\x0c\xc5\xceq\x1f\x82\x0b\xf7E\xcd\xbd\x1c8R\xd8\xacS\x07\xeco\xd7\xb3\x03\xdf\x02{\xe0DpZ\x1e\x1d5\x11P]q7\xa7\xa1\x8d\x8e\xe4\xf5\xa6(Utg\xc91=[2\xba@Mn\xb6il\x18\x88\xbf\x8a\xe7<h\xff\xce\x86@H\xd5\xc3\xdf53\xb7\xe9\\\xf5=z\xbf\xb375\x1e(\x15\x17\x8d7\x0c\xa2\xb2P\x03\xe1\xf6\x9aR:U\xb1\xe7\x0eU\xed6\x84w\r\xc1+=z\xd8\x84\x03\x1a\x9ck\xae\x0cPW\xf2){\x89\x1aD8Ym\x06\x92\x91\x03\xd9\xb8\xed\x1c\xb8\xd5\xd0\xb9;@f*\xa6\xc8k\xc9eUv\x14\xc0\xab\xda\xe1|\xee\x9c\x8ef\x05<\x17\xbf1l\xcfe%\x9cgw\x9c\xeei\x01\x98\xa3%4\xe6u\xf7i\xe6N:\xee\xc9\xecv9Y\x96\xd3G\xd82\x9e\x96i~\x95\x9el~{$\xbc \xb0\x00\x1c\x0eo\x9cy\x05\x9a\x07S\xc6\x8f9\xda\x8b\xd6QvOe\xdf_(\xad\x13 x\xf6|\xe6\xc9\x1e\xde\xba\x96\xbd`\x0b\x19\x1bQ\xb2\xab\x8d\xa1\x8a$\x90\x04L\x01Vh\x1d\x8b\'|\xb3\x1e\\\xc1\x16L\xfaO\xab\x97v\xa5[\xaa\xff\x02\xfa\x15\xac\xdb\x9d\x9f\\\x82\xdc\x98\x1eJ\xb1*\xd5\xc3\xb8\x8d\x98\xe8-\xfdJ,s\xd0_\x8d\x16\xf8U+W\xb12\xf8\x1c\xb9\x89x\x95\x1b\x10[\xb0\xbe\x7fT\xd6V\xcf\xa4RTe+\x03\xf1/\xccVh^\xe6\xa1\xb1;\xda\xe9\xce>\x81\xde\xc3\xec,5\x9d\xee\xbeE2\xd5\xcdpEJa\xcb\x05\x9b\xd9\xaee|\xddz[\x18\rT\xbb\xe7D&P\xdb\xc55t\x03\x05\xcc\xc6\xc5]\x8d\x14\xed\x89\xf2c\xe5g\xc4\x1a\xfd\x1c\xe3\x13\x01&\x15\xa0b\x10S\x8f\x04\xaf\xd3\x90\xf3SG.\xd2\x11\xa0m\xa9R\xbb/\x80\xe0\x99\xb3\xfan$0q\xcbig1\x00\xca\x97z\x92\x8fJ&\xbb\x99G}i\x82\xa7\xf7Z\x8f\r\x18\x81T\x8e\xa8>\xbcues\xeb\xbe\xcc8q\xc3g3\x12\xc7\xf6\xcc\x15y\x00\xdc\x0f\xbe\xc9\xa3b\xfbDK\x82\xf6\xb7\xc3\r\x16Q\xb0\xc5\xe8\xeaC\xacx/\xf7\xed\xbb\x0b\x89\xab7;\x1e\x87N\xeeVW\x14\x8f\x8b\x06\xd2l\xa4\xeb\xbd7h\xb5\xd3\x01\xd8w\xa4\xf6\x92m\xd9\x8f\tA4\x1c1\xca\x9cm\x1c}\xde \x11\xec}]N\xb3\x80\xf2\xc8\x86=re\x1ft\xf4E\x02\r"g\xe7\x07oa#\x10\xfak\x1f\xf0%\x9e\xb7\x98\xc0m\x7f\xdf]\xd6\x91}\x08DE\x8c\x8f\xcam74q ~\xa5\x9frG\xbb\x06l\x8aYG\xb9\x8c\xa3%0\x01J\x0f\xa7\xf29W#_\x02\xa2\xa4\xdd\xefziS\x12\x12\x9e\x95h\x01*8\xc3\x80\xb5\xb8T\xd6\xf1?\x8c5\\dh=\xcbp\x1f\x0b\xc7\xa1\xf3\x18[\xbbYv\xda\xf8\x83\xfdwT\x0e\xc0@\xe4\x06\xe4\xa3\x0fL\x1e0F\x01J\xa0\r\xc4\xfd\x83l/\xfe\xfc\xf7o\xd1\x85\xcb\xfd\x9b{w\xab\x860a\x01T\xd7\x86\xec|\xee\xe2\n\xb5\r\xd2\xcck.\x1e\xf7]\x9c!\xdd3|\x84\xa3=8\x1e\xe1)KQ\x9b\x13\xe7MF@\xc2D\xd1\xe7\xb3\xb1\x1e\x84W\xd9\xe5\xc5\x88\xcf\xeb8\x8f\xce\x1d\x19k\xdb\xd6\x94G\x98\xd5\xbcz\x89\x92\x8a\xff\xa7\xc7\xecvN\xae\x81\xf3\xe1,\x1e\xb2\x00r*v\xfe\xd3BV\xda\x01\xb3\xa6^_0\x84\x13\xf9)v?\xfc\xa8\xe4\xbft7\xfa\x9ftS\xb2\xc7\xdcJd\xc2\xccP\x0b\xc4\xa5\xbd\x9f\xa4\xfc\x15\xc8\xd0\xc0\x18\xa2\xc8F\x8cXl\x14\x843\x00\x96\x83\x0e%j~\xb7+\xac&\xec\x87"\xd0\x8b\xfa\x89\xef\x1c[\x91\x86\xd7\xfe\xbeTo\n\xd6\xb9\xf5TDq\x84\xe9\xcfi/\xdd\xc7\xb4\xeek\xb4N\xce\xc4\xd4rL\xc7y\xd0\xdb^\x13\x83\xedVs]\x17d\xc0\xf2\xe3|\xaa\x15\x12X\xef*L\xc4Jt\xc0\xfd\xe6\x832@\xc6\x0eFL\xe8\xca\x97"\x8a?\x8c\xcbS\x13,\xb3\xc22\x8c\x89\xd7\xcc\xb5\x1b\x90=\x11\x94\x9a\xd9~V\x99\x89\xa00\x9a\x8cb#NQ2e\xb0O&i%\xb4\xf0\x99G>\xc3\xac\xd9\xe2\x94\xcdKTp&>4\xea\xa8\x96@\x0f\x83.\n\xe0\xf9bM\xd7\xca5\xa7\x173\x9c<\xfe\xf8\xe2\xd43U\xa5T\x9b\x8aXlI\xd8\xed\xb8\x06\x0e\'Ic+\xe6\xda"\x1b\x18\xc6)\xbd\xaf?|\x12\x9e<I\x16\xbc\xe9`\xffE\xcd\xe0Z\xcf\x90\x18gh ~|\x82\x92\xcb=\t\x05d\x0f\x8c\x93\xa0\xcc\x1e\x98#j\x11\xacL~\x1f\xa9\xff+C|L\xa3\x18\xe8\x1b\xa8\xc9\xf4\xccHb\xcb\xf4\xfd\x9b/\xc1\xcc\x8c\xe5Q\xaa\xbcK\xeb\xfd\xc2\x18z\xf2O\xf7I\xdb.L\xfa\xd4!\xd3\x155n\x11Lw\xbd\xf8\xf0\x19\xb4\xd0C\xa7\xa6\x8b\xfd\xbb\x0e\x98\x1e&\x8f\xe6H\x84\xec"\xff\x05t\xfb\xa7\xfb0\x1c\x82\x1d\x1a\x8e77a\x80\x9e\r\xbaEhB[\xf5\xda\t\x85\x13\xb7\xcc\xe0[v\xf6\xd8}\xe4`\xdc\xd2\x13\xd8W9-4d\xfc\nj\xc2{\xae\x87vn\xa5\xb8\xf6\xb7\xb2\x8e\x0f|g?\nF\x9dE\xff\xa1\xedA\xc8\x95\xa0\xef\x83\x7f\xb4GP7\x08{ZM|\xb8@\xf0\xf1rhc\x91\x9dW\r\x17\xda\x06\xd0\xf2?\xb2X"\xbc\xab\xad.(\\\x96\x07W\xe0\xedf7\x9c\x1f\xbd$A*w\xdc\x12P\x13\x01/\xd0\x90\xbazs\x07\xf0k&0x\xf5N\x0b\'\xee4\xe4^\x86\x06\xf5m\xc1A`V\x9d9\xdf\x85\xc9\xfd\x88\xdd\xe8\x8d\x84\xc6[\xe0\x9c\xd3Z\x14\xd9\xbe\xb0\x1b-\xa0>);y\x9fp\x8a\xcf\x9e+\xfd\x19\xa3\xad\x9de\xb75\n\xa6\xf84\x01\xae>\x1c\x1f\x13\xee==\xb1\x01\xb6F\xaf\x99{\x11\xc9\xbb\xbc\xa5\xc6\xf4\xa3s\xde\xcf0T~\xdc(\x88<F \xe8\xf7\x1f"j\xd8\x8fa\r\xa8\x9a\x87\xeeS\x9e M"\x19pL\x18I<\xcfO\xcf\x16w\xc3r?\xf4 ?\xcaZ1\xa0\x9a\xf5\x7f\xb8\xb3\xfckH\xae\xa1y0\xe7\xde\xaa\x7f\xfa\xa9\xb2\xbb\x80"0F\xa3\xe3\xab\x04\xc6\xf2\xd6\xd6n\x07\x19>7\xa3\xc6u\t\xb6{\x14\x1d\x9a]V\x7f_\xefF\x89\xad4\xc1\x01\x18\xbb?ZW\x15^,kE,e\x95Z![Wc\xb2\x99U\x1a\xe8\xddS\xfc\xf1\xcd\x904l8\r\x8b{\x86)f\x9e\xd1\x15\xd8\xe4\xff/F\x97;(\x0cw\xa0\x1a\xd7\xb4\x91;\xa5\xc1\xf4)9\xd0JOZI\xf8\xa5\x99\xee9m\xc0a\xb2\x02\xaf\xb5\xe4\xca\xfc\xe5\ra\x0fH\x96&i\xce\x90\x8cS\x90k\xe5]\x91\x0e\xfd\x1e|2\x03]4\xf4\xab\xff0\x96\xe3\xf7j\xdc\xe1\xb7 7\x16\xa8#\xe0\xbc\xdaC\xa7\xc0\x1c\xe0\xb84M\x9d\xae\xdc\x14\xd6\xbc\x8c\xc6\x90\xbc\x16\xd4\xf2\xb1Xh\xf0\x14\xd9\xfc\xe2\xeb\xef)p(\xcd\x00\npY\x03\xce\xb7\x1a{a\x7f\xa9\x86\x1f\x01\xca/\x1eE\x1f\xf7y`\x8e\xe5Z\x8d\xabT\xd7]\x01\x8e\xbd\xbe0\xfe\xaf\xd9\x91K%\xc2\xa9\xf90K:\xa6\x881\xfaz\x97\x88\x02\x1b$\xe47\xdf""\xfe\xba\x961y,T\xec\x01\x9b\xc5\xaa\x9f\xee\xb0ev\x9a\x84w\xb1\xdae\xd6\x9fC\x8b\xc8\x91d_\x94\x05)\xe0\xdeH\x9f[\x16\xa8\xe2\ra\x9b(\x8d,l\n-s\xf8^a\xc3\xdf\x845\xd8\x02?\xa38\xc9\xb4\xe6\x10k\x93\xa4 \xff\x8f0\xb2\x92\xa3\x82/\x8e\xd5\x85\xde&{\x9c\x9bN\xe4\xe4P]\x1a\xaa\x9c\xdd\x8c\x80?\xe9?\x85\xd1\x15\xa9\xce@\xf4\xed\x1e\x14')
@@ -1 +1,3 @@
1
- __version__ = "1.0.16"
1
+ # Pyarmor 9.0.8 (trial), 000000, non-profits, 2025-02-21T11:22:16.902849
2
+ from pyarmor_runtime_000000 import __pyarmor__
3
+ __pyarmor__(__name__, __file__, b'PY000000\x00\x03\n\x00o\r\r\n\x80\x00\x01\x00\x08\x00\x00\x00\x04\x00\x00\x00@\x00\x00\x00j\x01\x00\x00\x12\t\x04\x00\xec\x0c\x83\xd7\xf2]\x17N\x03:\xcdO\xf8\xa0\xad\xdc\x00\x00\x00\x00\x00\x00\x00\x00\x03\x8f\xbaj\x8aq\xde\x07`\x1d\xd82\xe6E&\xa6\x96h\xe5\xd4|\xed\xb5\x8e#;}2\x96P:\x9cY\xa0\x19;>\xc0\x10\xb1/%=\xac\x80\xd9d_\x04\xc8\xffL\xeem+r\x90`\xcb\xb1\xb1\x90\xe7\xb3\xa9mf\x1fw\x88\x80\xe7q+hJC\xd2\xd2\xf0H\x92[\xa0\xc3\xce\xe6l8\xed&.j\xc1e\xf4\x03\r\x87\xf1\xfe\xf4\x91l\xb7\xffA5{\xc9\xbf\xc4\xb7\xd4G&\x1dM\x85\xc6\xa6\x81\xb4\x96\xf3|2\xf4P\xfb\x8a\x1dt\x96\xec\x97\x7fe\xe9g\xec\x92`\xa6\xfcw\x85\xa4\x8ff\x8e%\xd3J_\xf7y{\xaa\xf1*\xa6\x94\xf6B\x02\xb1="L%\xcb"\x9a\x8a\xcd\x1f\xa0<>\xcbP\xcb\x07v\n\x94z\xb1\xdf\xd3\xa2]\x04c\xcf\xdf\xfa\x0f(l\xc3K>\xae5\x19?\xd0\x04\x95\x0e\xd4\x82Z\xde\x7fF"\x95\x1c\x86\x0b\x1d\xe9lU\nH\x01\xb2\x96\xe2\x9a \x82\xb3\xf3\xe7c\xb1{\x11\x92\xad\xa0\xeb\x03G\xe9\x10\xf1\xcb\xb3\xf28\x1c[\xf0\'LMaT\xf4\x9b\xfejm\xec9\x88"\xcfz\xcd[\xf8\xdc:\x08W\xa7mH\x8d\xc4\xb6\xbc\xaf\xb4\xbe\xe9\xd0{W\x90\xd7\xfc\x8c\xfc\x01\x87\xc8Z\x91\xb5l\x90\x12@\xc8\x87\x12\xe3\xa2\x94 \xf4\xf6\x9aE1\xbb:V\xbf\x93\xed\x11\x8f\xce?\t\x83c\x81\x1cj\x8c\x0b\x0eD\x04\x1e\xfb\x1c\xdf0\xd12\x84iVj\xc6m\xa8\x83\xf8\xa7\xe4')
@@ -1,17 +1,19 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: clickzetta-dbutils
3
- Version: 1.0.16
3
+ Version: 1.0.19
4
4
  Summary: clickzetta dbutils
5
5
  Author-email: "lin.zhang" <lin.zhang@clickzetta.com>
6
6
  Project-URL: documentation, https://www.yunqi.tech/
7
7
  Platform: Posix
8
8
  Platform: MacOS X
9
9
  Classifier: Development Status :: 3 - Alpha
10
- Requires-Python: >=3.7
10
+ Requires-Python: >=3.10
11
11
  Requires-Dist: sqlalchemy<2.0.0,>=1.4.0
12
12
  Requires-Dist: numpy==1.24.4
13
13
  Requires-Dist: psycopg2-binary
14
14
  Requires-Dist: mysql-connector-python
15
+ Requires-Dist: crypto
16
+ Requires-Dist: pycryptodome
15
17
  Provides-Extra: dev
16
18
  Requires-Dist: pytest==8.2.1; extra == "dev"
17
19
  Requires-Dist: build; extra == "dev"
@@ -0,0 +1,17 @@
1
+ clickzetta_dbutils/.DS_Store,sha256=BAZfmI8Al-lW7frqAAU9awnYpuHOen2sk2DhHY8OWRE,6148
2
+ clickzetta_dbutils/__init__.py,sha256=UjItecSXrKUz5DnJhMEUGlddlkMMUo40Hle-cofx5fY,2178
3
+ clickzetta_dbutils/db_utils.py,sha256=rOnl9t7f-Jf-y3lkyRtFr-10ATAVHMYLUIQ60KopDpw,49362
4
+ clickzetta_dbutils/version.py,sha256=hAH0vP64hTVaohY-jfqgk9U1iS1PRL1iT6r3gL5UmME,1406
5
+ clickzetta_dbutils/__pycache__/AESCryptor.cpython-310-pytest-8.2.1.pyc,sha256=FtkRhza1Nu31OpBZIrpabpYCjojcoTvk0t1qW_jSmag,1593
6
+ clickzetta_dbutils/__pycache__/__init__.cpython-310.pyc,sha256=wtQzjrZAuzzIl3AVNe5J-UXhXohs99JQ-2Uww0O0ATk,483
7
+ clickzetta_dbutils/__pycache__/db_utils.cpython-310.pyc,sha256=PrZqy-ASUR6mUWGMZC6asJ7yaW_2N5tyzTWxGLzC-aE,12042
8
+ clickzetta_dbutils/__pycache__/version.cpython-310.pyc,sha256=NpsIkM-s928EsXLSIxn2EYNKLDqLT2nK0GnsrdCLqcs,702
9
+ pyarmor_runtime_000000/__init__.py,sha256=f-dxNug8iblEqdYoiYVY5cKJMVmJ-ZHF_ZmlN-iP36M,1953
10
+ pyarmor_runtime_000000/__pycache__/__init__.cpython-310.pyc,sha256=G_KcUsDn-nR9eyY3pKFNN4G479lQegwckicMHSmU1CE,1649
11
+ pyarmor_runtime_000000/alpine_x86_64/pyarmor_runtime.so,sha256=0Ys5_kMxDfoDEr68SuTorQi4onYAhbljTu1AQIYtSCo,676912
12
+ pyarmor_runtime_000000/darwin_universal/pyarmor_runtime.so,sha256=rPZepf_2AnE9MnmplbTAo3Ym3EHdK4gpa_71lQG42hU,1601792
13
+ pyarmor_runtime_000000/linux_x86_64/pyarmor_runtime.so,sha256=40HRmd1NI2WNP6e1F4C83CzhcUZFCOXW4mlXh860mxc,792360
14
+ clickzetta_dbutils-1.0.19.dist-info/METADATA,sha256=2PsUlWljLrS9QiwyCStgdfXZ1YHBc5WtbySQEPSZ2XA,904
15
+ clickzetta_dbutils-1.0.19.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
16
+ clickzetta_dbutils-1.0.19.dist-info/top_level.txt,sha256=iN29E2uT8disQHsSRGtRU0Gv71R5q51J3mA4W1_MEoU,42
17
+ clickzetta_dbutils-1.0.19.dist-info/RECORD,,
@@ -0,0 +1,2 @@
1
+ clickzetta_dbutils
2
+ pyarmor_runtime_000000
@@ -0,0 +1,53 @@
1
+ # Pyarmor 9.0.8 (trial), 000000, 2025-02-21T11:22:16.899397
2
+ def __pyarmor__():
3
+ import platform
4
+ import sys
5
+ from struct import calcsize
6
+
7
+ def format_system():
8
+ plat = platform.system().lower()
9
+ plat = ('cygwin' if plat.startswith('cygwin') else
10
+ 'linux' if plat.startswith('linux') else
11
+ 'freebsd' if plat.startswith(
12
+ ('freebsd', 'openbsd', 'isilon onefs')) else plat)
13
+ if plat == 'linux':
14
+ if hasattr(sys, 'getandroidapilevel'):
15
+ plat = 'android'
16
+ else:
17
+ cname, cver = platform.libc_ver()
18
+ if cname == 'musl':
19
+ plat = 'alpine'
20
+ elif cname == 'libc':
21
+ plat = 'android'
22
+ return plat
23
+
24
+ def format_machine():
25
+ mach = platform.machine().lower()
26
+ arch_table = (
27
+ ('x86', ('i386', 'i486', 'i586', 'i686', 'x86')),
28
+ ('x86_64', ('x64', 'x86_64', 'amd64', 'intel')),
29
+ ('arm', ('armv5',)),
30
+ ('armv6', ('armv6l',)),
31
+ ('armv7', ('armv7l',)),
32
+ ('aarch32', ('aarch32',)),
33
+ ('aarch64', ('aarch64', 'arm64')),
34
+ ('ppc64le', ('ppc64le',)),
35
+ ('mips32el', ('mipsel', 'mips32el')),
36
+ ('mips64el', ('mips64el',)),
37
+ ('riscv64', ('riscv64',)),
38
+ )
39
+ for alias, archlist in arch_table:
40
+ if mach in archlist:
41
+ mach = alias
42
+ break
43
+ return mach
44
+
45
+ plat, mach = format_system(), format_machine()
46
+ if plat == 'windows' and mach == 'x86_64':
47
+ bitness = calcsize('P'.encode()) * 8
48
+ if bitness == 32:
49
+ mach = 'x86'
50
+ mach = 'universal' if plat == 'darwin' else mach
51
+ name = '.'.join(['_'.join([plat, mach]), 'pyarmor_runtime'])
52
+ return __import__(name, globals(), locals(), ['__pyarmor__'], level=1)
53
+ __pyarmor__ = __pyarmor__().__pyarmor__
@@ -1,7 +0,0 @@
1
- clickzetta_dbutils/__init__.py,sha256=8c39hS6EZAc5gp-U0Jw2p6Fvc2VSZ0Jnw_MCQtCt9og,400
2
- clickzetta_dbutils/db_utils.py,sha256=jP0Oc3SpDZQty33OwUlxWN-JrUTV-rAryzebSFAtPSg,13620
3
- clickzetta_dbutils/version.py,sha256=VOO4AWXpqRI8GxhjDyXHxxa4MOulpztSgLOrvpA6KOc,22
4
- clickzetta_dbutils-1.0.16.dist-info/METADATA,sha256=C2w3d7ZN3MBNZHRN-zZMb9yXJJFn2pSRSW47sGU6kYw,853
5
- clickzetta_dbutils-1.0.16.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
6
- clickzetta_dbutils-1.0.16.dist-info/top_level.txt,sha256=8o5KqMSg9pxnPNejHjMaqZV2vEDvwvsz2GdChZI0N6I,19
7
- clickzetta_dbutils-1.0.16.dist-info/RECORD,,
@@ -1 +0,0 @@
1
- clickzetta_dbutils