clickzetta-dbutils 1.0.17__py3-none-any.whl → 1.0.20__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-21T12:22:09.963217
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\x82\x02\x00\x00\x12\t\x04\x00\xb9\xe8e4~\x899\x9e=\x02y\xf5b\xc2\xa2F\x00\x00\x00\x00\x00\x00\x00\x00M\x9f\xea|\xd7lu\xec\xb0\xeb\x93\xb2\xf2L\xe7\xbch\xf2.\xf92\x16z\x9f*d}\xa5\x03\x138\x01\xaa\x87\xe41\xfa8\x8d\x04C\x99\x811\x84\x97l\xe0\x83?\x97\xd2\xd3\xb3v\x9e\xc0\xe0k\xb9x/\xf8\x18b\x92\x88\x9c\xc2_\xbbc\x9a\x95\xe2\xf3k\xc80n\xbb\xaa\r\xb9\xebO\xa8H\xc1E\xed\xc3\xd7fX\xe3m\x8b\x8c\x87@\x04\x9a\xb0\xb8\'\xe6\xf2\xbe\xa8\xa8\xf0\xce\xef\xbe\x11\xd7Xh_\x15\xa6\x1a\x08\x7fd\xb6\xde\xb9\x8f\xa9\xcc\x13\xe1\xff\x96\x0b\xdd`\x1e\x08.\xa3z|]\xee\x96i,\x0e*\xb3\x8d\xda\xdd\xa0\xec\xac\x8b7\xc2\xa6\xe4\x83`\xeb!\xbc%\xf0.\x9ew\x92";q(\xa6%H\x9b\xe9\x8ez\xd4\x81 \x16\xe8\x08I\xb5\xe1grv>|[\x91\xda\xc7O\x17\xff.tA\xd8\x96\xb2\xe7\x96>j\x9aY\x9d\x97\xe1P\xec\x1f*\x89\xff\x87\x92\xe1*\'\xfa\x08\xe4\x82$\x0f\xa6\x93\x8f\xe8\x8f\x86\xad\xf48y\xfc\x8b+\xad`\xda\xf1\x84+\xac`\xfb\xcd\xe6\x8apv\xc3\xdd\xc1l\xe5g\x01\xbd\xd0\xf0\xec\xfaq\x06@Y\x1f\r\x05D\xa71\xa3\xeb\xba\xffO\x9f\x05|P\x92\xfe6j\xbe\x11\x9c\t5\xa9\xcf\xf1LJ@\xd1y\xd9\x93}yk\x16-\x86\xc8u"\xc5I\xe3\x18\xe9\x06\x97\xe6\xf3\xaaZ\x84\xc5b)E4\xb3\x16\xd0\xdd\x00\x83_\x18\xb4\xc1eMqo\xba\x1e\xa8\xb8\xf4`\xa4\xa9\x00\xc3\xdb\x18t}}\x15\x98\x0b\xc9\xad\xe2\x82\x81+\xb9\xd5(k\xde\xc7\xd1\xb4\xd3\xaa\xf5f\xd7x\xcb$K\x81\xcc\x03\xb9\x85\x8d\xd7*\x11]\xc7)\xc7\xec@\xbfa9]\xe1\t\xa3\xbf\xab\xc2\\z\xd0\x1csM\x98w\xbaP\xc6{\xd0\xd9\r\x8f\xfb\xfa\xe7\x15d\xdb\x9b\x8c\xf7Zg\r_!\x96\xc1\xba\xf8"\x8a\xa3%W\xf8wi\x82\x94W\xebe\xd0\xba\x85z\xab\'\x03\xd3\x02\xeau\x8a7\xcb\xef\xc5\x97\xbfCN\x11\xae\xc7\x88\x86\x9eQOG\xfe\xabl-\xb4\xd9h\xed\xbe\x05&\x1d\xcd\xb8\xe3<\x1c4\x05\x1bI\xa6\xe1\xddI1">\xd5,\xc6\x85~:\x1bX\x0c4\x10\xe0\xc2\xdb\x11q{\x81,\xbb\xe7\xd3\xc7\xe7r\xda\x00\x04\x16\x90\x11}\xc9\xd1G\xdf\xbdt\x9d\xbf\xd3\x00\xa3g\xbcZg\xd7\xd8\xd1\xf2\xa3\xc7\xadE\xca\x98\xf8\xd7\x8c\xceU\x84\xdf\x81\xd5\xd3\x81\xaa\x97\xbc\x0c\x12\xb2\xc5\xeaz \xb8\x97\xe9\xecoB\xa3\xc1\x1d\xe9q\x8f\x9d\xdb\xce\xe7\x97\x05\x8c\xe9\x85\xcd\x7f8\x8b\x11s\x9am\xa6|\xebw]\xd6-9w')
@@ -1,410 +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 log_id := os.environ.get('EXECUTE_LOG_ID'):
67
- pipe_path = f"/tmp/{log_id}"
68
- _log.info(f"Loading EXECUTE_LOG_ID is : {pipe_path}")
69
- try:
70
- with open(pipe_path, 'r') as pipe:
71
- conn_info_str = pipe.read()
72
- except FileNotFoundError:
73
- raise DatabaseConnectionError(f"Path not found: {pipe_path}")
74
- # Fall back to environment variable if pipe is not found
75
- conn_info_str = conn_info_str or os.environ.get('connectionInfos', '[]')
76
- if not conn_info_str:
77
- raise DatabaseConnectionError("No connection information found in env")
78
- decoded_info = urllib.parse.unquote(conn_info_str)
79
- conn_list = json.loads(decoded_info)
80
-
81
- # Create connection configs
82
- cls._connection_cache = {
83
- info.get('dsName'): ConnectionConfig(**info)
84
- for info in conn_list
85
- }
86
-
87
- return cls._connection_cache
88
-
89
- def get_connection_info(self, ds_name: str) -> ConnectionConfig:
90
- """
91
- Find connection info by data source name
92
- """
93
- connections = self.load_connection_configs()
94
-
95
- # Validate data source exists
96
- if ds_name not in connections:
97
- raise DatabaseConnectionError(f"Data source '{ds_name}' not found")
98
-
99
- config = connections.get(ds_name)
100
- config.options.update(self._options)
101
- if self._query:
102
- config.query.update(self._query)
103
- return config
104
-
105
- @classmethod
106
- def get_connection_infos(cls) -> Dict[str, ConnectionConfig]:
107
- """
108
- Get all connection infos
109
- """
110
- return DatabaseConnectionManager.load_connection_configs()
111
-
112
- def use_workspace(self, workspace: str) -> 'DatabaseConnectionManager':
113
- """
114
- Set workspace for the connection.
115
-
116
- Args:
117
- workspace (str): Workspace name
118
-
119
- Returns:
120
- self: For method chaining
121
- """
122
- self._workspace = workspace
123
- return self
124
-
125
- def use_driver(self, driver: str) -> 'DatabaseConnectionManager':
126
- """
127
- Set driver for the connection.
128
-
129
- Args:
130
- driver (str): Driver name
131
-
132
- Returns:
133
- self: For method chaining
134
- """
135
- self._driver = driver
136
- return self
137
-
138
- def use_schema(self, schema: str) -> 'DatabaseConnectionManager':
139
- """
140
- Set schema for the connection.
141
-
142
- Args:
143
- schema (str): Schema name
144
-
145
- Returns:
146
- self: For method chaining
147
- """
148
- self._schema = schema
149
- return self
150
-
151
- def use_vcluster(self, vcluster: str) -> 'DatabaseConnectionManager':
152
- """
153
- Set virtual cluster for the connection.
154
-
155
- Args:
156
- vcluster (str): Virtual cluster name
157
-
158
- Returns:
159
- self: For method chaining
160
- """
161
- self._vcluster = vcluster
162
- return self
163
-
164
- def use_options(self, options):
165
- """
166
- Set additional connection options.
167
-
168
- Args:
169
- options (dict): Additional connection options
170
-
171
- Returns:
172
- self: For method chaining
173
- """
174
- if options:
175
- self._options.update(options)
176
- return self
177
-
178
- def use_query(self, query: dict) -> 'DatabaseConnectionManager':
179
- """
180
- Set query for the connection.
181
- Args:
182
- query (str): Query string
183
- Returns:
184
- self: For method chaining
185
- """
186
- if query:
187
- self._query.update(query)
188
- return self
189
-
190
- def use_host(self, host: str) -> 'DatabaseConnectionManager':
191
- """
192
- Set host for the connection.
193
- Args:
194
- host (str): Host name
195
- Returns:
196
- self: For method chaining
197
- """
198
- if host:
199
- self._host = host
200
- return self
201
-
202
- def build(self, *args, **kwargs) -> Engine:
203
- """
204
- Create SQLAlchemy engine based on data source name and optional schema
205
-
206
- :return: SQLAlchemy Engine
207
- """
208
- conn_info: ConnectionConfig = self.get_connection_info(self._ds_name)
209
-
210
- if not conn_info.host:
211
- raise DatabaseConnectionError("Missing connection host for MySQL data source")
212
-
213
- ds_type = conn_info.dsType
214
- options = conn_info.options or {}
215
- schema = self._schema or conn_info.schema
216
- host = self._host or conn_info.host
217
- host_parts = host.split(':')
218
- connect_args = {}
219
-
220
- # Construct connection URL based on data source type
221
- if ds_type == 5: # Mysql
222
- if not conn_info.username or not conn_info.password:
223
- raise DatabaseConnectionError("Missing username or password for MySQL data source")
224
-
225
- options.update(conn_info.query)
226
- url = URL.create(
227
- drivername=self._driver or 'mysql+mysqlconnector',
228
- username=conn_info.username,
229
- password=conn_info.password,
230
- host=host_parts[0],
231
- port=host_parts[1] if len(host_parts) > 1 else None,
232
- database=schema,
233
- query=options
234
- )
235
- return sa_create_engine(url, *args, **kwargs)
236
-
237
- elif ds_type == 7: # PostgreSQL
238
- url = URL.create(
239
- drivername=self._driver or 'postgresql+psycopg2',
240
- username=conn_info.username,
241
- password=conn_info.password,
242
- host=host_parts[0],
243
- port=host_parts[1] if len(host_parts) > 1 else None,
244
- database=schema,
245
- query=conn_info.query
246
- )
247
- connect_args = {'options': self._convert_options(options)}
248
-
249
- elif ds_type == 1: # ClickZetta
250
- if not conn_info.workspaceName or not conn_info.instanceName:
251
- raise DatabaseConnectionError("Missing required parameters 'workspace_name', "
252
- "'instance_name' for ClickZetta data source")
253
- if not self._vcluster:
254
- raise DatabaseConnectionError("Missing virtual cluster for ClickZetta data source")
255
-
256
- # Generate base parameters
257
- query_params = {
258
- "virtualcluster": self._vcluster
259
- }
260
-
261
- if schema:
262
- query_params["schema"] = schema
263
-
264
- query_params.update(options)
265
- query_params.update(conn_info.query)
266
-
267
- full_host = f"{conn_info.instanceName}.{conn_info.host}"
268
-
269
- if conn_info.username and conn_info.password:
270
- url = URL.create(
271
- drivername="clickzetta",
272
- username=conn_info.username,
273
- password=conn_info.password,
274
- host=full_host,
275
- database=conn_info.workspaceName,
276
- query=query_params
277
- )
278
- elif conn_info.magicToken:
279
- # Use magic token for authentication, do not require username and password
280
- query_params["magic_token"] = conn_info.magicToken
281
- url = URL.create(
282
- drivername="clickzetta",
283
- host=full_host,
284
- database=conn_info.workspaceName,
285
- query=query_params
286
- )
287
- else:
288
- raise ValueError("username and password or token must be specified")
289
- else:
290
- raise ValueError(f"Unsupported data source type: {ds_type}")
291
-
292
- self._engine = sa_create_engine(url, connect_args=connect_args, *args, **kwargs)
293
- return self._engine
294
-
295
- @staticmethod
296
- def _convert_options(options):
297
- if not options:
298
- return ''
299
- return ' '.join([f'-c{k}={v}' for k, v in options.items()])
300
-
301
-
302
- def get_lakehouse_connection(conn):
303
- return conn.connection.connection
304
-
305
-
306
- def get_active_engine(
307
- ds_name: str,
308
- vcluster: Optional[str] = None,
309
- workspace: Optional[str] = None,
310
- schema: Optional[str] = None,
311
- options: Optional[Dict[str, str]] = None,
312
- query: Optional[Dict[str, str]] = None,
313
- driver: Optional[str] = None,
314
- host: Optional[str] = None,
315
- *args, **kwargs
316
- ) -> Engine:
317
- """
318
- Convenience function to create a database engine.
319
-
320
- Args:
321
- ds_name (str): Data source name. Required.
322
- vcluster (str, optional): Virtual cluster name for ClickZetta data source. Required for ClickZetta.
323
- workspace (str, optional): Workspace name. Default is 'default'.
324
- schema (str, optional): Schema name for the connection. Default is 'public'.
325
- options (dict, optional): Additional connection options.
326
- query (dict, optional): Additional query parameters for SQLAlchemy url.
327
- driver (str, optional): Driver name for the connection.
328
- host (str, optional): Host name for the connection.
329
- *args: Additional arguments for SQLAlchemy engine.
330
-
331
- Returns:
332
- SQLAlchemy Engine instance
333
- """
334
- manager = DatabaseConnectionManager(ds_name)
335
-
336
- if workspace:
337
- manager.use_workspace(workspace)
338
- if schema:
339
- manager.use_schema(schema)
340
- if vcluster:
341
- manager.use_vcluster(vcluster)
342
- if options:
343
- manager.use_options(options)
344
- if query:
345
- manager.use_query(query)
346
- if driver:
347
- manager.use_driver(driver)
348
- if host:
349
- manager.use_host(host)
350
-
351
- return manager.build(*args, **kwargs)
352
-
353
-
354
- def get_active_lakehouse_engine(
355
- vcluster: Optional[str] = None,
356
- workspace: Optional[str] = None,
357
- schema: Optional[str] = None,
358
- options: Optional[Dict[str, str]] = None,
359
- query: Optional[Dict[str, str]] = None,
360
- driver: Optional[str] = None,
361
- *args, **kwargs
362
- ) -> Engine:
363
- """
364
- Convenience function to create a database engine for lakehouse (ClickZetta) data source.
365
-
366
- Args:
367
- vcluster (str, optional): Virtual cluster name for ClickZetta data source. Required.
368
- workspace (str, optional): Workspace name. Default is 'default'.
369
- schema (str, optional): Schema name for the connection. Default is 'public'.
370
- options (dict, optional): Additional connection options.
371
- query (dict, optional): Additional query parameters for SQLAlchemy url.
372
- driver (str, optional): Driver name for the connection.
373
- *args: Additional arguments for SQLAlchemy engine.
374
- **kwargs: Additional keyword arguments for SQLAlchemy engine.
375
-
376
- Returns:
377
- SQLAlchemy Engine instance
378
-
379
- Raises:
380
- DatabaseConnectionError: If no lakehouse data source is found in the configuration.
381
- """
382
- # Get all connection configurations
383
- conn_infos = DatabaseConnectionManager.get_connection_infos()
384
-
385
- # Find the lakehouse (ClickZetta) data source
386
- lakehouse_ds = None
387
- for ds_name, conn_info in conn_infos.items():
388
- if conn_info.dsType == 1: # ClickZetta type
389
- lakehouse_ds = ds_name
390
- break
391
-
392
- if not lakehouse_ds:
393
- raise DatabaseConnectionError("No lakehouse data source found in configuration")
394
-
395
- # Create engine using the found lakehouse data source
396
- return get_active_engine(
397
- ds_name=lakehouse_ds,
398
- vcluster=vcluster,
399
- workspace=workspace,
400
- schema=schema,
401
- options=options,
402
- query=query,
403
- driver=driver,
404
- *args, **kwargs
405
- )
406
-
407
- def clean_connection_cache():
408
- """Clear connection cache before each test"""
409
- if hasattr(DatabaseConnectionManager, '_connection_cache'):
410
- delattr(DatabaseConnectionManager, '_connection_cache')
1
+ # Pyarmor 9.0.8 (trial), 000000, non-profits, 2025-02-21T12:22:09.982926
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\x03C\x00\x00\x12\t\x04\x00\x9c\xfc\xc9!\xc6\xd6\xb3\x94\xc1\xb4\x0f\xd4J\xdd\x8aA\x00\x00\x00\x00\x00\x00\x00\x00\xf5\xf4\xdfV//\xb7~w=\xbdj_\xc1:\\\x1893\x03\xbf\xf1\xdbC\xf8\xb5F\x08\xee\x10(\xcb/\xe2\x1de\xce"\xb9\x91\xc9\xb4e\x93\xb5\x98\x92\xe0\xf4\xd6j\x1d)\x97\x1d\xc5\x97=\xc9H\xbe\x86y/\x17vh\xfd\x92\xe3\x05\xe5\x9e\xdf\xea\x0fB\\\x16\xbaw\xbe=Mo\xb8\xcc\xe1\xefh\xcf=\x96\xe9\x9d\\\xf6\xfa\x01\x04\x0ezv\xdc0P\xe6s\'<- \xf29*\x08\xdbJ\xd0(z\xd1\xea~\x06)\x7f\xe5\xf2=\xd6\x88n\xa98\x86U\x97\xde\x0e\x97\xcd{{-bV;\xe0\x0eqO\xa0v\xc7\x12],\xefS\xf6=\xd8"\xb1k^\xa5S-\xe8\x1c\x1d\xeb\xa9\x1ay^\xff\x05\xbelp\x85/\xfcW2\r\xb9\xda4\x99\xffP\xe4\xee\xa5\x8d@\x04\xf6T\x17+\xa8\x83.\x93\xbf\x0b`6h\xedV\xd0\xc3\x85\xde\x89\'\x12\xbb\x88gm\xd2\x11?riv\xd3\xe1\x05\xe6H*=>\x884z \x1f\x05\xadi\x10\xa8-\xc6\x86\xc2\x92G\n\xb6*\xd0H\xd9\xbd\xe97.H\x92:\xd2O\xa5Lc\xb0\x0f5\x16\xa7\xbf\xe2\x07v\xdd"\xc3(\x0b\x96\x13"\xc6\x970\xe7\x7f\x872\x1cl\xe7\xe0\x99!\xe4j\xec\xa3\x8d\x08\xb2\xf5|\xea\\\x08\x8e4\xf8\xc7\t\xa4\xcc\n\xef\xfd\x11\x15\xd2*K|\xfawy\x96\xa7dh\xdaf\x0f\x92V1^\x1d\xc0B\xed\xa4Xt\xac%R\xe2\xd0\x0fP\x86F\xfa\x8f`\xa9\xe6\xf4\x88o,!\xbbR\x9b\n\x01\x07\x00\x96\xfa\xecf\xe1r\xb4\xe2\x84\x89;w\xe4\xbb\x8d9_l\xfe\xb9$\x83\x1b\xc01\x84\x88\xfe\xfa \xa8yb\xcf\xe1m\xdf\xc2\xc0\x1f\xd7\xbf\xab\xa6\xf2\x00\x11*~}\xd2\xc33\xe2p\xc2\xb4\x98!$\xd2\xaag\x81\x8a\xb4\xa2i\xf8\x98\xc75\xb8\xbd\xbeGj$Kp\x8a\xea\xa8\xe1\xda\x80\xad\xc0\xf5\x81\x83\x03:4\x88n\x1e\x1dJZ$\xc2\xfc\xb4\xb4+\xdeO\xb0\x96\xd1\xd8\x85w#\xee\xae6m@Nf\x90r\x19kB\xf6\'\xefs\xbev\x9e\x80\x9d\nW\xe2\x93\xd4\x1f\xad6}}Nv\x02\xf0\xab\x98\xb82\r\xa93\xaa\xb0\x92\r\xc0M\xec@oC\x0e\x8a\xfd\x19r/\xaa\xee}\xb7\x82I5P\xb4\xa3,Q\np\x9b\xfc\xad\x9c&\x814#=\xc0?\xde\xe6\xce\xef\xd5\xf2\xf5H\xf5\x83\xf4\xc1\x0b\xaf\x02\xa9\n\x92\xa6\xd2H\x91\xf2\xe5\x1c\xc9OG\x97x=\'\xc2\r\xe1$\x10\xcb[_5\x81\x01;\xdd\xbe\xb32L\xc8\x94\x0f\x94\xee\xed\xf1\t\xe1^\xa4\xc6\xc9n)Z\xec\xd6\xfa0\xbc\xe8\xba\x0fb\xcat\x15\x15D\x03U\xdc,H\xbd)\xbd\x13\x1b\x8c\x95\x8f\xf9\xa5\xac\xc9t\xeaZ\xa7b\x1a3<69\x18\xd5\x14~\xfd\xc4\xb9\xc6FG\xd41\x08\xd9\xcbB\x08r\x88o\x9a\xc5\xde\xa4\xc0%\xa3\x8f\xce\xa7\xf3\x8eI\xb2P\xea\x02`\xe0]\xa4\t\xc9"\x8a\xf8\x16\xd8\x91\xc9V\xc6To]\xd5%\xdc2\xf5\xacfU\xe9\xb6\x06\x92\xb7\xf0\x9a|\x8e\xbc\n\xc0\x14\xa5\xa8\x0bM\x90\xf3W\xb9\xc9\xf3(\xd8`\xb5\xb3\x97^\xb6\xf0$Zk\xa64\x1d\x89}\x93\x12\xc7\xa3\x16\r\xe2\xbd\xc8\x08*G\x9cP\x17R\x87^|"\xda\xb6\x9d\x1c\xdb\x9am\x01\xd9i_\xb1.\xd9\xc6Q\xea\xca\x9a\x06\xb4sB\xa7\x9f\xb7\x9cj\xe1{\x0f\xa4\xa6s\xbb0\x85Y\xfc\xee\x8cc\xe9\xc4\x16l\xd9\xbd_Y\x12|\x11\x8bLD\xc7\xfd\x02\xfb47\x7fE\xa5\xf1\xe0\xd4\x05\xf43\xba_XG\xf5\xc4\xc4\x1dO\xff\xe1\x9b.\xcf\xb6\x06$2\x9a\x91,\xce\x94\x11<\nmibW\x19\x10\xf3\xa8\xf0\xf9\xe2r\xed\xa1\xe5\xe7\xf5\xe4\xd2K2k/#\xdbR\x15\t\xe4m/0:R\xbb\xb34\xd8\x8d \x0e+\xe5?\x06\x1e\xe5 \xbfuKDbG\x12M\x19]\x9e\x1a\xa4\x03\xdaJ\x13\x05`t\xc76\rt\xb0\xda\xf4\r\x8d\xd1R{\xe3\x8e\x7fI\xa6\xf0\x00=I\xc0\xcc5\xed\xa7\xe1\xc6X7l\xb8yW\x1e\xfb\xb0\x93w\x96!\xa4:#Ob+\x1c\xcf\xc5\xed\xe2\x89J\xe7\xf3\xbe\x10\xea\xac\xb8\xde\' \x1f\x82q\xb8\xa3\xbe\x92p\xbe\xfdj\xd3\x87.GN;5\xa4\xd0\xa0#-^5\xb0\n\xe7a\x0fC\x87\xd2\xf3\x84(\x8c\xc1\xa3\xa0\xa4a\xa6&\xb3\xd6H\xc3\xd7\x94\x97\x0b\\\x1f\x8cT5mu\xcc\xe4H\xe0\x16\x15\x05@\xd0\x14\xff\x0f\x9a\xd9\xdd\x9e\xb5\xcd\x12\xf7\xcc\x0b\xf8\x9f\xf2-\x87\xf2\xf9\r\xeb\x89a\x9e\xfe!m)\xe0T\n\xf5V\x8f\xce0\xaa\xcd\x93\xe6\xac\x88\xa4=!\x83e\x17\x8d\xe6\xdc\x91$r\xb9\x97\r^\xf5\x01$\x02\xff\xf9&\x94\xdcLnV\xb4\xd4q\xafB\'\xdaZ\x11\x08\x08\x7f\xfb\np\x89\xfe\xf0\xaf\x92\x8f\x86\xf7\x88\xbb_5\xb4\xe2\xa7\x99Q\xf5\x88\x98zE\x12\xf7\xb42qC\xe4\x81ub\x16\x8aw\xe2?\xe4\xd1\x97)\xa78q}\x97\xb5\xf8C|\xef\x8c\x16\xca\xc2\xc9U\xcb-\xb2JOD\x98R\xcb\xcc\xe4\x85\x066\xe5\xbb\xb0\xdb\xfe9\x7f5\xb5\xc8\x81\x0eU\x89\x0c\xae\xc1\x8b<\xf5\xa6!\xa4\xbe\x013a\xe7\xd1\x98t:"\x0ew\xe7\x96S\xdds\xb41\xc2?;\xa8\xdc\x14\xaf\'\x15D\x14\xa6\xbd\xd0U\x02}\xf1g\xb0/\x06\n\xbe{k\xd3d\x8a\xd1\xc9\xd9\xaft\xd8\xb6=\xb5\x02c\x91^\xfda\x9b\xd2_n\xfb\xb0O\xef\x05\xbb\x11\xea\xc9d\xad\xb27\xd3\xf3\xcaNlX\x93\xc4\x88\xcce\xcdK\xb6|\x935\xc7\xdc\xc0\xbe\x99j\x00\xf8e\xc4y\xdehZ\xe7\xd2N~\xd1\x00\xcc\xda+\xb0\x13\x0f\x03\xe3*\xfaq\xfa>\x84\x03l\x9b9\x0f$1\xbf\xc4\x03{\x1d\x881zf\'i\xb0\x16d \xd6\xb0\xdf\x13\xbc\x86|3\xe6i\xd1S\xf5>\x0f\t\xe4\x89KO\x11K,;\x8e\xf5\xd4\xba\xe5\xcf\xa7_\x82\x9f\xfb\xf5\x8fu\xddA\x7f\'\xe3\xb1-\x17\xa7\xbe\x06\xec\xb5G\x8a\x15F\xa0\xab\x9b\xe4u\x9d\x00\xb3\x13\x80\xf8Y], \xfd \x8ap\xa0\xf2\xc8\xd4\x81+\x00\x11j\xb5d\x90E\x838\xce8O\xa98\xb8\xac\x03\xb3\xe2\xc1N\x06g\x87\xbd:\xee\xb4\xa0\xb3\x82\xdb<?r\xc24%\xc2\x07\x07\xf9d<os@F^j\x99s1\'\xcf\xdc\xc2(\xf0\x0c\x7f\xd3\x0c\xe2\xf2BW\xd1%3\xe5\xb5\x86\x13\xde\xb7%\xee\xa0\x8d3\xfc\xe2\xcb\xa9\x93[C>aw\xc9d\x152\x8d\xc5\xcf\x16\xef\x18\xec\xdd\xca\xdc\xeb\xf4%7\xddJC!\x0e\x90`*\xd0\x06\'\x04-\x11A\x8b\xc2\xdd\x17\xd7$NQ\x0c\xea\n\n+P\xe0\xad\x00l$\x89`\xe2\xa9\xf9\xe3-\x98\xcaV\xd4\xb7\xcci\x81\xe5?}3\x93\xcbS\x8d^\xb3\xbdM\x91n80\x9e\xa7\x95o\x90\xa5\xce\xd3\xa1~\xc6\xa7\xf8\xe1?3U\x19\x0b\x1aQ\x10\xce^\xe5L\xee\x01\x1dX\xe4c\xff\xacMm\xbc\xfe\x83\xe8\xb6\x94\x14\xe6\x91\xe8\x15u\xa6\xbb\xe7\xc5n\xe4\xd1\xa5\x05\xb7\xc7\xa1\x80\x03T\xb0\xa5\xb0\xf631X\x1f\x8d\xa9\xbfAtq\x01\x15\xf4v\x92\xdb\x7fYn\x9do\xda\x92\x91}\xe0\xb13*\xa3_q\x9a4\xcf}\'\xe3\x1b\xce\xe9\x8f\xc0\xecV\x84yD\x03$\x8a\x87\x1a3\x83\x97\\I_=\xe6 \xae\x92:0\xe1\x10\xddI{dl2\xa5e\xcf\xf1#/\'2U\x96\xb0\x03\x0c\xb3e\xe1\xce\x00\x19y\x14\xe0?\x8bc\xe6<\x03\xa4B7\x98\x902\nk\xeb?\xeci\x9c\xcdh%\xb5/\xbb?\xae^\xd0\x07\xae\xdcM\\E\x0b\xbd\xd9\xd5@4>\x83\x80\xbaCr\x8b&\xd4\xdb=\xdb/\xb4a6O\x16 8\xa5pmo\x04l\xdc\xc43\xb6O\x88m\xf6QVF0;o\xb1\xf0\xa37\x1f\x18\xc4\xa5I\xe6\xb4\x06\xe8\xa2\xe3\x17%hr\xac\x1ecS)\xfb\xc8\xba|\xca\xeeu\x8f>\xc6o\x80y\xac\x9e\xd1\x05L\xf7\xaf\x18=t\x1a\xf9a\x9b\x9ba\x96\xb0\xad*\xa6\xa7\x06\x17:\x1f\xf8^\xe9\x08\x89B\xe2\x91a\x9e\x99\xdb\xa5\xfa\xca\xeb9\x13\x94\xff\xaf,\x00\xa5\xb4Y\xaf\x02\xf5\xfc\x19\'\x88\x89/h\x80\xd6f\n\x106v-\x88{\x96A(\xea\xfctTO\xf5\xc4C\xf9\xfb\x1b+\x92\xf1\x1b\xd9\xc0ih\xb63i\xd03\xdfO\xa6\xf4\xf4\xf7\xac\xa3\x01\x873U\xda\xc2\xfd\xca\xb8\x16\xd7\\\x12\xeeHEi\x8aLM\x81"V)+Y\xf3\xf2U\xe6\x92\xdc?\x9b\x81\xfe\xd8\xa4\x9a\x14\xe4U\xe2N\xb7\r\x93nv\xca\xfe\xed\x92\x1cc\x1a\x82\x11\xdd\xb4\xed\x81Hu\xd0\xc8S\x1faT\xc9\x0e\xcc\xa3w\x91b\xa1O\xb3w\xdd\x89\xfbM\xfdJ\xa37\xd4\xac\\H\xac\x00i\xef\xbcQ\x872{\x10\x01\x07\x8a\xff\x00RMi\xec\x1dQ\x03\x8d<\x96\xce`\x05\x9an\xc0\x08/+\x94\x83\xef\xb5\t\x8c\x93\xb7\xc7~7\xd5\x08\xdf\xa7P/\x19\xf5\xf7\xcc\x19\xb3\x99\xc6\xf1O<\x0b\x10\xe2\xecfS\xfa\x0f\xcdn\x17\xd8 \xf3]c*\xaa7\x02\x98;\x80-s{\xcao6\xeb\r\x82\x91\n\r(\\q\xc0KG6\x1cP\x9d\x96\xdc\x1eFQ\x81\xa3\xed\xc1\x07@\x9cf\x13I_\xfb\xfe\x8c\x17\xbf.J\x9c\xa1\n@}\x98\x17q)\xf1\x00\xf4\xc20\xb4{<B\x8a\x03~!\xaet\xa0\x7f\xd1\xa3\xe7mj\xa2]#H\xeax6\x9eIu\x1b<[Psq==n\xf0\xcd\xe1\xe6s\x10\xda\xee\xe0v\xe5;4d\xc9hg\xef\xbbu\xb7RA\xdb\xa0\xfaJ\xdd\x83O\xcb\xfc!7\xd8\xbeF\xf9\xb9\x18O\x1c\xc0<\xca\x9a\xd9\xb5\x19rHx]\x86~\xfb7\xfd\xea=\xf3\xb2i\xef\x15]\xeb\xc3R\xd5\'\xa2\xdb0D\x14`\x0b\xf9\xc5\x06Em\xf7\x04\xecdB\x96\xbe\xc3o\xfc*\x1e\x02\xd4\x16a\x12\x07\x8e.\x9du\x8a\xc1&\xe4\xbe\xf0\x0f\xf8\x08L\xed\x12\xb2\xc7\xf7\xfb\xdd\x15\x1f\xd3\x0f\xdc"\xc6\x06!\xd2K\xbe!{\x95A3K\x0e\x9c lg\x16V\x91\x99\n:zB\x92\x1fF\x06\'\xae\x0cTcwr\xcd\xff\x9f\x95\xd6\x802\xabj\xeb\xde\x81\xabS\x8c9\xb2%8(!v\xce\x00\xcaT\xc4B\xfd\x10\xbc\x85\x08\xdfmh\x89\x1d=.L\xba\xdef\xee!\t\xd8\n\xf9\x96\xdf\xe4\xe8\x82\x83\xd6\xdf\xd6\xefVY\xb0\x03er\xca\x86\xa4\x0eF\xd9\xdc%\x02\x82\xd9\x88}\xf8\x98h\xa1\xdcKK\x8fE\xc2\x9c/\x19E\xc2\x80p\x1c\xbf-\xbd\xffHU\x01}2\x16\xe8S\xe6\xed3\xed\xba$F?\xbfk\xe3ak\t\xfau\'\xd0D\x89w\xd1\xc7B\'jKW\xe5\x08\xca@m\x90\teC\n\x0f\x1d\xb6\xce\xf5N\x01\xbd\xcbQ\xf5\x8f\x9d\xf2\xf1\xbem\xf3j[`>\xf6\x08\xa4\x9dS\x87\xf91\xb6\xdd\xe1!\xe9\x8bM\xd7\x0f\x9a\xd8\x8b\x7fO|\x17|\x91\xdd\xc6\x0e5\xa5\xc7\xa4\x8f4-\xdd\x87\xe9\x11)\xb2.\'\x9a\xe9\xbe\x03\xd14\xc7f\xbe\xb61>\xbf\x8e\xc3\xe6c\x10\xd1}1V\xe0\n\xb3\xb7\x82_J\x0b\x12\x81\xba\xc3i\xdd\n5\x81D\r\xf25\x83\x07\xde\x92bd\x92\xb2?t\xb3S3\xf4i\\\x03?\x87\xf3`}\xb0W-\xe8]\xaa\x1f=j\xfbU\xb5\xbb\xc3\xbdO(<<\x99\x0f\x87\x9ez\xfb7\x82I\x87d\xe7\xc83\xe3\xb3kd\x19\x03s\xed\x9dw|\xf3\r\xc0\xef\x1d\xbc\xb6N\xe5B\x1d\xe7\x044:\x80\xb5|_\xb8\xc3\xbe\x18\xe6\x87a\xb8\x0c\xba\xef]\x019\xdb\x1bH\x14\r,\x88h\x9d\xfcr\x89\xb1\x8e24\x03\x11Tz\x0c\xba\x8b\xb8n\xe8\xf8T\xe0\xb0\xb7\x80U\xe83\xfb#\xef\xee\x00\x1e\x82-={Y\xdb\xfc\x15\xc2\x95\x1e\xa1\xe0\xdb\x87\xc0\x8c\x80\xc8\xa9\xee}\xce=7^\xf7{\x87\x9fO\x90\xb2V\xf3\xf5\x02\xa5\xd4L\xd1\xd6\xeb\xdf\x13\xd5\x1d\xba\xa3\x9f<\x01\xe7^\xa4B!Je38\x80\xabG\xda|\x15K9\x0b\xe47\xfcY\xea\x93\x9e\xac\xc1\\t\xac:\xde4\tX\x8aK\x8e\xc8H\xd7\x02{\xd4\xad8\x00\xc6b\xf9\x1d\xe3\x8e\xf7\xd3\x1d"=\x1e%\xad\x91\x07\xd9t\xcdi5\x12\xe7\xce3q\x1f\xa7\xdd\xb8\xde\x91\xa4\xc6D\x9f\xfd\x81\x1am\x1e\x04\xd6\xc0xR\x8a\xe5\xaf\x87\xbb\x01\x884v\x17?)\xb8\xeb\xed\xaa\x87\x11\xad\x96\xe7\x13v)\xd5\xc6\xec\x95\x07\xd5\xc5x\xab\x1cz\xe5\x8d\xf0+N[\xb7\xa2\xff\xca*\x16m\xd0(EjG\xb9\x85\x11M?3\xc1?\x1d\x94HS\x9e\xbe\xe0v\xa3-\x17+x~(_\x83\xa9\xa5\x15S\xb7Ag\x1e\xf3\xd9h\x05\xcb,`8/\xadq0\xb1\x99\xb3o\xdbFC\xc00&\xbd"\xd4\t(z\xdf\x1a\xbf\x16\xb4\xcf\xa8\x167\xde\x174>d\xa9x\x1dA\xc5\xb6\xe1\x9a\xc4\xdc\xbe\x1fi\xf0O\xf0\x9bA]\xee\xec\x067\x97a\xb7A:Xs\xba\x04GFx\x08=\xe7\x0b\xc9\x84\xd9\xc0\r\x1c\xe1[Q\xbb\xb9\xe6\xd8\x9aI_,\\\x0fzf\xcb\x15C\x00\x97\xe5t$\xd68\xf9K\x02\xbf\xd8\xcaM\xee\xd9\x15\xbb\xda\xd8\xd0\xe9\xa2G|W\x94I\xeb\x16\xd5q\xa3\xf9\x9ed*\xe2_\xdb\x9fmy\xfd\xca\xb1H~\xf00\x88\xedY-U)[\x11\x9ek\xf5\x12\xd1\xe6-\\G\xd8\x06\x97f\xdaZy\xbfJ\xdb$\xd6\tv\n\xde\xdd\xfb\xa3f\xfe\xa0T\xf1\xdc\x12\xc8P\x9c^_\xed&\xc7UR\x8c=\xd6f\xc8@\r\xce\xbe\x88\xcb\xc6;\x0cfh^\x0cM\x9ax\xd5\xd5\xef{<4\x01%"\xf2\xd2\xc6\xc5,\xa6\xbcn\n\x12\xe1\xc0Y\xfd\x93\x80cf\xa1\xd7\xa9\xd1a\xba\xd7SgQ{\x82\x18M\x82\x04pVq&H\x1d\xd5L\xf7\x9d\x96\x84>N\xe8]\x9cP\x17\xef>\xb0\xa8a\xfd\xd7D\xa1\x12{&6Gr\xdc\x8a\xebj\xe7 \xbf\x92\xc17\xac\x01\xea\xfb^?\xf3\xfa\x9d\x94O\x99`!,V\x88Pd\t\x9b\x7f\xd3\x1f\x00C#\xefw\xfe\xa1\xe0\xd0$\x91\xccA\xe7\xec\xf6\x80\x1c\x9f\xbd\\\xbb\xd7\x01\xe5\xaf7\x01[z\xe0\x06\xb5%\x80\xb1t\xee\xf6\x9b\xeb\x92\x8e\xc1\x89\xb0\x7f\x8a\xce\xbc*O*\xcd\xed\xf4"\xa7B\xbb)\xc4\x83p\x91\xd9\x13\xe9\xe2AO}\x19X\x97X\x08D\x99\xbf}f\x03\xf3J\x85\xd4\xf3\xa3\xfd\xb9\xfa\xae\xd7\xa8\xa8\xe0\xcb\xa4\x9b\x04r\x98\xb32\xa4\xbcA\xe7\x90&\xdd\x05\xa8\xc2\x13\xa9\xe0\x04x\xe3\xbd\x8cvg\x86~uOs\xf1)\xd0\xce\xbaT\x1f\xf4\xba/?1t\xaf\xc7\x04\x89\xaf\xfc\x0f\x88\x1a\xcf|\xf1pMW\xfe\x88\xbb/Z\xd7^s;\x98S\x96\x8f7\x99\xef\xe9\x95\xa73N/T\xff\xaa\xc3\')\x8f\x84\xa4\xe1\x92\xf4\xf0\xc7K-\xf1?\x1e\xe0\xed\xce\xe9\x87\xbb\x8c\x90_\xd2\xbaR#\xf4]\xc8@\x98\xb1H\xb7\x92\xe4\x8cG\x96~r\xc8\x9e=[\xb8\x1f\xc0\xa9\x14\x9a(\x8e;j\xd03\xf6[\xbc\xa1=p\xbc\xcf1w\xf5U.%sU\xb6\x97\xf3K\xe9\x97M\x86\xa4\xc4X8j\x8f\x1fC\xd0\xb1\xaf\xef\xc0\xf2Z\xc6\xa3\x99h\xf5\xabI\xb0>\x1e\x88#\x859\xd9I\xc8\xcb\xf7&P!\xaa\xbc\xad\xf8\xfeApqC\x7f\x93x\x817\x86\x96\xf9z\t\t\x80!\xbe\x05\xee\xdd\xc22"K\xa8%\x1c\xe8\xad\xfa+#\x07\x98/\xe6T\x8a\x85B\xe5\xf5a\x03,M\x11A\xdb\x8b\x1e\xc4\xe7\xc2\x8b\x13\xe0\xa9\xf88\xde\xa7\x10\x89DU\x82P\x87\xf0\x90\x9dQ\x9e\xf6\xb0\xaac|\x89\x8a6\xed&qR\xfav\x9e\xa2\xf6Rm0\xe6/\xb5\x0b\xff\xb7m\xff\xbaX\xb5\xe5\x06l\xf2\xa9\x8d\xe0\xddFS\x00x%\x83\xcd\x0b\x13\xf6\xad\x8cJ3.\x08g\x83\xa7\x92\x81\x00\xc0\xa7\xd3\\\x03\x90\xdd\xd2IF\x85[\xea|k\x92x\x8e\xf9\x85\xd2\xc7\xfch\xb3\xc2\xe1\x81\xf9\xfb\xcd0\x98\xe6\xcbfzT\xc7W=\xe5$.\xe1\x81\'Y\xc1`\xa9\xf3\xaf\x83F\x9f \x0f\t\x1e\xef\xc12\xcctx\xe5"\xc7\xb1\rq\x88\xd3|\x90\x84\x93\xf15\x9d\x8d\xe6\x9aq\xe6\xcf0\xa1i\xacr\xc6\xe9\xbf/\xf8.\x077\xc6\x9d\\\x8d\x11\xf1tO\xc5\xf3\xe71\x1121\xd1\xcc =\xfa\xa0\x00\xd0\x13y\x1b\xb6V\x8a\x8evw\xc1\x9c\x07\xd0\xecY\x17\xc8\xbb`},\x19Il\xca\x06F\x8c\xc90%A\xc9y-\xc3d.\x12CRW?\xde\xf9Op\xb0\tH)\x83\xa4\x8b\xd1\xa6\xa1=X\x9c\x8e\xc3\x16\xcaQ\xfaA\xf7^\xa1?\xf4S\xa9\xa9\xfcu\xfb+\xfbM\x86\x7f+Uq{\xd6n6\x82\xbb\x9c\xc4\x7f\'\xb5\x9b>F\xc8R\xd6\x19\xb8=,\xe6\x82\xc8nCi\xc5\x85\x0e\xa3s\x8e\x01\x9b{*.G3\xc2\xcfs\xf3\'\x05\x8c\x8c\x9d\x1f\xa2>J?+\xfe\x9b\xbd\x83\xfd?\xb7\xfe:\xa0]\xac;r\x0f<JU\x16!;\xc6aN\xa0x\xa8hh\xb2\x82R\xd0\xe8\xf9F f\x8d\xc0j\xd3\xe1\'l&b\x13\xc5$\x01P\xc4\xd4S\x85\xb6\x02\xf4\xdf\x1d\xa5\x866\x8c\x84,B\x87\xb4\xffT\xbc\x9c\x85\xc3\xf9\xfc>\xb9\x83\xe7\xdbA\xa18\x92\xb7\xf9\x93\xadF\xdcI\xceQ\x82y\x9e1\xa2\x9e7\xff\x1a\xb3\x96\xa4\xa6\xd5s\x07\xfa\x8f\xf6\xec\xb9\x04\xb0m\xa1\x7f\x94\xc6A\xbe\x92\xcd\xbc=\x99\xc1\xce\x89\xcfz=\x0b\xd9\xa6\x08hS\x1e[\xb0\xc0\x0b\xc3t\xeb\xb0\x05\x81R\xfbjh\xe7A\xd0?\xfc[\x84K\x1b\xcd0,\x83\xf0L\xb7[\xec\xb6\x91\x986\x82oY\xe5\xd3\xe4hI>cEZ\xa8\xf8\xf4\x12\xfcA\xa3\xfb\x1a\x1aF\x8d6$2\x1eT\xddj \x98\xb6\xe0\x9f\x10\xdd\x82o8\xdd\x1e\xac\x81\xd0z5\xf1\x1b\x8e\x9b\x84z\x00\xc3\x8d\xd7\xde\x00\x9ef$\x8f\x1f\x87|\xc7\xe8\xaa\x1b\xa8\xecX\x9d\xb9\xcd1\r:`\xcf\x02\xdb\xe2\xa2\x06Q\xf9\xa3RtZ\xbeM\xa518\xfb\xc5 \x15\x88\xd0\x83 m\x8dO\xa0\x9e\x00\x8a\xc6\xd5\x16\x98}.\xa8R\xa9q$}\xb3\xfb{|t=\xe5\xb0X\x9f\xbd\xe7A\xa5>u\x10eis6\xe8\x8b\x1a\xa2^\xba\x88\xd9\xbc\x12\xad?x\xe6\x01\x852\n\xad\xfc\xb67\x07w\xa9\xcd\xf28\x08\xf5D\xc5;\xa5qG\xe8\'\x1e\x95\x95\xda\x8aj\xfbm\x1a\xae1\xb1\x7f\x93\\\xd1\x96\xac\xd1ZCn\x14\xa7\x1d\xe3\xf8\xd6\xf5O\x14i^\xa0b\x83\x19\x12\xef\xc4\xe8\x93|\x8a\xad\xedD\xbe\xb9 \xf5v_\x14\x15>No\x12\x01\xa4\xba\x97\x04J\x8e\xdbtW\t%\xe7]\x06wv\x11I\xeb\xe9\x10\x92\xa5OQ\xb1\x02O\xc4.\x16\xee\xec7\\xK\xa2PD?\xecS`\xfe\xf9O\xbb=\xc7\x9d\x95\xfaZ\xff\x985\xb9\x19\r\xd1\x1c\xf4\xa3\xf1\xcb\xe1;\xdc\x94\xd8G\x96\x99\\\x16\xa8\x93\x11E\x1d\x12\x13\xc4#[\x02\x08\xd5\xc4^\xf1>\x07\x85l\xc4\x1f`E\xcfxd\xd4\xe0%E\\\x96\xcf/9\xd4\xb2}w\x19s~\x85\x0b\xc7\x12q\x90\xe2\xca\x87\xbe\x15\xf1\xf3\x82\xa6\xee\xba\xb1\xafZ\xceRh^\x0f\xda\xe5^\xd5\x16\x83S\x0e\xf6\xe4n\xdd\xbd\x06P\x19\x98\xe5\xaa4\x86rcU\xb4\xb9\xd1\x7f\xad\x07\x00\xcb\x15P6D+\xd7\xc6\xd0\x07|\xb9?\xfa29\xaf\xc0\x13l\x04\xe1\xf0\xf3j\x90?V\xcd\xe4\x13%\xa6\xef\xc5\x91\xab\x9e\x89\xb5\x94+\xa7\x1f$\xb4\x0e\xc2\xc2s-!\xbaN\xdcH\xda\xeb\xaa@.\xb2\xeem\x84\xc6Z\xae\xf6VOA\xa7A\x9c\xe0\x18\x93\xcc?wY\xad\xdbW\x88\xbc\xb1.\xb7\x00\xf0\xcd\xaf\xc8\xb4\xbf7\xbf\x8c\xf8\xa8$\xc2\xe3\xfd\x12\xcc%\xd7\x93\xc5\xd4\xf6\x87Q#\xc2\'YL\x1f\xec-\xf8s\xb1E\xfe\xe2\x94D\x93\\\xb8\xe8\xd8\x82 \xd0%- \xcb\xd5\x03!X\xfc;\x94/\xa0c~\x86#yJ\t1:\xb5M\\\x0eGm\xd5\xbc< \xf60]I\xc4\xaf\xa4nCOW\xc4@4ufA\\\x15\xc4\xddRH6\xad$"\x8c\x03\xdd\xbb\xbf\x1cX\x04\xab^\x9eV\xe9\xfb"\xadt\x13lw\x11E\xb9\xbet\xa6R\xba\xa7@\x0b\xf1\xbc_7\xff\x07\x15\xabx\x97Y\xa4f\xa5\x03r4\x8b&u\x13\xc4\xc9aR?H\xf1\x12\xf2\xa0l\x9a\x7f\xa2\xfbA\x1fAZ\xc1\xb2\xcb\xaa6\x88\xf2\xb4\x15\x1f\x15\xd3\xf1\x04\x8bw\tX\xc2\x896\xa3p\xf0\xcb\xb9\xbb\xe9\xee*&-\\\xa2\x15\x886e\x8agMG\xb6@&\xe9G\xd0F\x14\xa2\x16J\xd9@\xe3\x93\xe4\x1dj]\x9f\x81\xe5\x8b|UQ|\xc5!\x13\x86\xc0\x98\xaauy\x95\xcfl\x80k\xefU\xbfYy\x90[\xcdn?\x1f\x8e\xfa\xb7\xd9\xf6\xdfEv_\x19YB\xfd\xb3]\xc5\xda\xba\xec\x95\x8c\x96\x94@\xfc\xa1\x01\xad\xf6\x18i\xaa\xa0~\x1c\xb4\x16\xd8\x8f\x15\xd4\x93-\xe7\xcb[S\xa8\xee.\xe9\x15\x9f\xeb+\x08\x0f\xe4X\xd8\xc0\xb7Q\x85\x1c\xbb\x99\xf4y<<\x1fna\xae\xf3v\x82\x06\x8f\x967\xfch\xd8\x90\x1e\x96\x82\xdc\xc7\xca%FM\xa0[\x04\x88 T[+Y\xec*\x17\xbb\xaf\xb8\xd5\x9c\x85n\xc1\xd5U\xcf\xcf\xea\x87\x1fz\xb6/\x81\xc3605\x94\\\xcf\\\xa9Y\x8e\x8b\x9e\xef\x04\x94\xcb\xbe\x9d\xc6\xa9\xdc*Cle\xe4g\x1e3\xc4\x89\xbbC\xc1n\xda5E9Y\x14\xd1\x9b\x92=\xa7\xc5\x92?\x03\t\x9aQL4|\x16\xdcI\n\xb6\xff\x0f6\x1d\x9fL\x07\xd0\xf0\xffx\x82\x8e|<y\x90\xae\xbe\x01\xdd\x0f\xac\xd4\xcb\x14\xee-\xd9\xa94CVU\x9f_G\xb6\xb8\xcff\x1e\xf4\x18[\x84Gx6X\x9a\xfc"_#K\x1b;\xb5H\x839W\xb1\x82\x13\x88\xc9i\xf9\xefV>[\xd2\xc1\xc8\xf01n\x1f9\x17x\n\xfa\xe4\x87\xc6\xa8\x8f\x8e\x19\xdd\x1a+W\x96\x99\xaf\xc3\x01\x12\'\'P\xfd<62`\xde\xba9?\x9f\x19_Q\x145\xdfi!P\xe0]\xa3\xc3\xb9\x90b\xae>\x02.\xed\xd2T?\xc0\xfd\xe6\xb1\xe0}\x97!\xfb\xee\xa0\x03\x90\xdckU;\xc0\x13\xff\xacN\x0e\xa9\x85>\xac~\'\xef\xc9\xa3L\t\xed\x1dL\xc5\x07\x97<\x9b_\x02\x90\xfb\xcd:\xd9\xea\x0e\xae\xd3\xb9\xeb\xcd\xf22\xf9\x9c\x9a\xe1\xcf2[L\x835\xd7\xca\x92\xa5Ga\xbe\xed)5E\x1f\x92\x9dk\x12\x89\x91>\xd3i\x8a\x14(,QN\x8c\x90F\xba\x1c\xf1\xcf\xfd\xb2\xb2\x007f\x8bP\x81\x9d\x13\x96[\xb2\xfe\xa1Z\xa66\xba%6V\xad\' \xd35\xf9\x84\xfa7\xd1*\x8aC\xd0\xc6N\x06\xff\x06\xcf\x84\xc6q\xce%\x0b\x89\xb6\r\xa9\xfe\x88RJ\x15\x12jPfT\x96H\xd1\xf2\xab0\x99\xa2^\xd45b\x18T\xe6\x15\x92X\xa1\xb0\x9d\xa3\x8fr\xc7n\xd6\t]\xd9\xf7y\x11\x90^\x1e\xe7\xa3\x0b\x1eSG\xf1\x9f\x98\xa6\x81\x1eQ\xc2\xec\xba\xb1N\xed2\xf0\x0b9\x12\xc4W\x93k\x86\x08\x83\xa5\n\x13\x0c+\x9d\xe4t+\xa0X=\xc4 >\xda\x17+Jf\xa8S\xc3\x0b\x92\x9bT\xd9\xbegE\xa0w}\x18\x12\xc5r\xd1\xd2[\x8eo\xc3gf_\x80\x18\xea\xb5\x18jm\x9bz\xeer\xa7\xc6\xfd_[\x83_Iqa\xdb\n\xfe\xf5\x92G\xb3X\xdf\x81e&\xee\x99N\xc7\xc9\xaf\x81\x0c\x16g\xe7\xad\x89\x16cu\x9a\xe5\x02\x81a\xa3\x0e\x8a\x1d\xb4\xa9$,\xcclK\xa1=g>\x1b\x10qy\xc6\xd7O\xc77b\x02h\xeb\xc1\xf2\xae\x1c\xd96\x01H]h<\tV)\x7f1:_\x10\xba\x9f#\x10\xd6N\xf2\xaa\x9b\x03\xcf\x91\xf0\r\x0bN\xc9d\xf8\xae\xab\x982\x92\x18B{\xc1_!\xbf\xf92)\x86\xc7o\x9d\x9f\x8e\xb4\xe5\xf09\x8d\xc0X\xfd\x19a\xe8\x90\xecgA{\x8b8\xb4\xe8X\x19\xe8"\x92\x1e\x8f\x8b\xf8c7/p\x1e\'\xee\xa7\xdf\xdf\xd1\xf6\x1b!?\xc3!\x8df\x05\x8f\xd0\xae\xe9\x90R}\x06\xf1#\x032\xc2\x85\xfe#\xb6\x1e\xa4I8\xa4(A\x19!%l\xbd\xdd\xe7[\xb7\x05\xf5\xd3K\xd7\x1f38r\x8d\xc6q\xfb\xab\xb0\xc5\xa6u\xdf\xa2\x10\xac]\xa2~\xe9\xf5\xf6\xa3\xa4\x13&\xaci\xfc\xb8\xbe\xda\xe2\xe9K3o\xe9mIi\x08\x02?\xd9T#o\xd06\x17\xeb\x88~\xe7i\x86Y\x10\xa0\xa7\xbe\xb0\xfd\xc56\xd5\x8a\xd1%\xdd\xf1vlg\xc6\xfc\xb2^m\xf4G|\xea\xf2/N\x88z\x96-a\x0e8\x92\xe2\x97\x81zn\x92\x1e\xcb\xc7\xbc\xa8\x83\xb3\x9f\xef\x18\xba\xe6u\x9dD\xe9\x93\xfa\xd7e\x8f\'\xf9\xa1\xebG:p\xdf\xab\xc1<\x0ep\x82@\x04\x8d\x96\xa49\xa0\xb8\x1c\xfd{\x85\xda\xdc$\xc0\xaeV\x84X\x86\x0e\xbc\xeb\x87&\xdc\xad4\x91\xe9\x98R\x10>\x10\xbd\x016J\xcc\r\xb0\x85^\xc8\xdc$>@K)4TJ\xad}\xc9\x83\'R15B\xe2\xba\xa1|5\xc6\x06Y\xaf\x08\xa7\x9akcX\xe1\xb5\xfd\xee\x0c\xd3IW\xc4\xee\x83\xd0_\xa7\xc6\x1c\xf0\xd1\x9f\xc2\xcd\x15\x1b\x90\xa3^\xe0C?=\xd0e\x05j\xf4\x0f~\xa6\x15\xd5F\xc9\xfc~\xcc\xec\x92\xb0\x97\x81\x0fD\xe1\xb9aU\x0b{\x1a\x82,,\x11R\xc7O\xc3\xaegE\xc7\xc5\xcbPh\\\x19$\x1fA\xec\xd2dg\xfa\x88\xf5\x17\x87W\xd7\xc5v{xa\x8b\xae\xa8\xa9\x06\x98\xf8\x8d\xef2\x8b\xabZ\x1cB\xed\xcds\xbc\xdd\xef\xa6\x1c\xef\x16r\x8b\xba#Fq\xfb\x89x\rN\x01\xe7\xee\xc7\xf4\\\xcb\x12\xa93\x7f\x9b\x04\xad\xe1J\xe2\x81}\x05\xd4\x987\xa8yv\xb0\xdbR\x92/9\x907\xd1\xb1\xa3\x82\x1c?\xc7\xe3\xb3\xa3\'\xee\xac\x1e-\x0b\xf4\x8c\xf0\x9b:\xa7_\xf3\x0f]l\x01\xfc\x9d\xee\x89\xe9/ q\xad\xe8\x84\xbb\xad$\x1bB\x9a\xa4\x95Ha&\x87\xea\x83\xbf.\xb9\x1d\xbd9\xa9v\xaf\x99Q\x1b\xac\x11\xce\xc9\x88!\x96v\xda\x89I\xa98\x02\x11\xa9\xbe\xee \xbd\xb8!|\xe9\xe8\xa8\xe1\x175!u\x03\xff\x94\x8c\xe5\x90N\xed\xbcg\xd0`\xaa\x83xI\xe7\x00S\xea\xfb^3\x87\x89w\xbe\x9dXa@XFMD\xd0\xe0\x9c\xd4\x138\xd3\xaf\x12\xbc\x85\'\xe47\x84\x81VDr\xb6\xbb5\x00M\xaex \'6\x03*z\xd7\xe6\x13\xb1\xacg7\x8c\xf43\xe6\xe9\x94\xb6.]\x16\x9f\x91\xbd\x80l+y\x94,\xb6\xf6W\r\x9e\xfc%"\xf4}\xd6\xfc\xb8D\xf4\x15\xc6\xd8\x83\xfd\xf5&\xd3)\x88\xdcL\xe3h0\xf7\xa9\n\xea\x98\xfc\xe0b5#q.\x83\x0b\xcc"\xfaj\x84\xa8\xd9\xf0\xcf\x8c\x0c3=X)\xcc\xec\xcd\xf1\x15\n*\xa6{g\x02Ucz\x8cY=\xe2\xcf\x01\xa1\xe6b\xa6;\xbf\x03\x1a\xcc#\xd1\x1b+J_\xc3qfi,,\xc2\xe3\x16\xa1Vj\xb0*l\xbc\x18\xb5\xd1\x8ai\'\x8eeB\x0f\xb3\xc1\xe2\t\xa6\xf0\xb6\xe9z\x9a\xc7\x1c\xe3\x1f}\x08\xd0\x903\xe8\xc9\xe4\xf8\xbe\x8b\x95?\xe69$\x0e\x9f>\xc1U\xc9\xc8\xd3\xcb\xea\x13\x93^\xa9\x1f\xf62\xa4bs\x98`-\xb1(?\x03P\x99\xe2\'\x06\xc9\x8dA\xd3\x89\xe9\xa7>\x81\xb5r\xac\x9f\xefZ|m\xb4X\x08\x9eUC\xf0,\x90\xbbU\x16:\xcc\xd05\x17\xaa.J\xb7x\xa5\xeby\xdf\xcd\x02\xc8\xf6\xd2\xda\xaa\x18\xce\xd4\xaf\xe99\xcb\xe8\xa6n\x89\xaej9\xad$\x99\xf4\xd0\xf3\x8aU|\xaax\xaf\xf4\xc8\x96]\xc3\x84\xcfI\xd1xO\x9a\xbb^U\xacZ\xce\x895\xdaPnf\x08\x1c\x9f\x1d\xa0\xcf\xa9!\xd2\xdf,\xaf\xfb\xe4\xb2|\\\xa4\x1f\x98W\xec\x16\xbe\xc0w1\xad\x8a\n=;\xfcG\xc9\x04\xf4\xf2!\xb1O\xe9^\x01ns~jg\x10\xbe\xf0\xafz\x834\x0e\xc1W\x85v`\x01\xf3C\x80\x93\x08cb\xfb\xe3\xa0\xfb\xc7\xdf\xad\xc7\xe1\\\xb9\xe4\x12\xde\x87\xe5\xc0\xd57\x8e\xd7Z\xbd\xb0d\xe5c~\x05\x8b;~w~\x00{\xe00\xedc"\xcdTP\xb7\x06E1\xb9\x12F\xea\x85\r\xdf\xeep\x05\x8c\xcf\x08`\xd3\x8fMw\x14\x87p\x9b\x15\xa5\xd13 \x13L\xdf\x13m\x04\xbe\xde]~\x9aU~>al\n\xaaq\xbd\xcc\xda $\xd6\xf2\xaf\x9e\x05\xa3\xb1\xa1\xae\xd7\x0b\x98?\xb8\n\xd6\xc9P\xaa\xa4\xce\xdc\x11\x00\xef\xedlj\x0e\xf0\x9eJ\xdde\x0e\n\'\xa1\\yi\xfa\xd7\xed\x8f\x94\xea\xfb\xa6\x93\xea#\xefr\xb4\x8e\x01\xf9N\xd0\xff\x03R2!B0\x111F\x8a\xdaI\x0b\x07\xca\xb1?\xcbl=/\xad\xef\xc9k\x89\x04\xc8OQ\xc6\xb8\x03\x91\xeb\xaaU\x1c\x85S\x8el\x1b\xe0\\\xe0\\l\xc8!\xa9(\x1f.\x1a\x98\xdb\xbe\xc7\x0e\xca\x8e$\xc26\x8d\xd5\x12^\xc1\r\xb6\x0bb\xc5}\x8a^\xafCN\x99+-H\x9c\x11\xa6\xe7\xe1th\xa2\x11\x9c4\xf9\xe8{\xb2\xce\xc2\xec\x921\x1f\xe8\x81\xce\x93\x85U\xf8\x82*\'\xeb\x8e\xf8n\x11\x8e5\xc3\xc28\xc77\xc7DD\xd6\xaa\x0e\xf3f\xdd-GD\xd3\xa2\x9c\x95\xa2\xd8\xd0\xe9\xedP`\xd9\xcfV\xa1\x86!\xd7\xba\xba\x13!b\xef\x95\xda\xb0\x16\xac\xd2\xf4\x80\xf9Fv?\xd7\xfc\x971$\xc2\xfa\xf9\xfbqD6\x13@n\xb3\x93&\xc1\xc72_(\xafs\xf5T\xb7pJ\x94\x01\xf4`\xbe>R\xc9_}\xecf/Z\xa2#4:\x00\xdea\xab\xee;*G\xef\xe7\xa3\xec\xf6\'\xdb\x89k\xc8\xb1L\xebG\xf6\xdb2\x91\xd2N\x91D\xc46P\x9dC#\xd7F\x88)\x87F\xd7J*m\x1e\xaaq\xc7o\x13^LQ\xa7\xdc{k\xe1,\x84\x17}\x14\xa6~\xd7?\x0f\xb8\xe1\x92\x9a\x14ZX\x8e\xf7d~\xefP\x0e\x9c\xca\xf2\xda\xb1\xd6\xa7DR\x06\x0eU;p\xad\xbf\xde\x04\x86\x9aV5\x17b\x86\xa4\x1f\xef/\x12\n-\xa2\xeai\xba.C\xe3\x9b\x9a\xf7\t\x89J\xa5\x92\x90\x10\x85\x9f\x1a\x9a\x150\x86\x10{\x04\xbd\xfc]\xa6>.\xee5,Z\x8d\xeb\x17N\xed\xe9\xb0b\x94x\xc4\x02G\xfe%\x04\xc8?rp;\xb5\x05\xa2\xb8\xdc\xdfr\xd0+\xa5\x80X\xed\x82\xf5\xf6\xe2\xe6\xfd\xe14\xbc\xb9\xf0\x80!\x88\xc7{\xc1\xa0\x0c1\xd9\xd56\x9f\x93g\xe4\xe3\x18\xf2\xa9\x81\x11s\x99\x99\x82q\x0fz\xd4\xa8\xf2o\xee\x1fP\xf7o\xdd\x0cbKp\x90p\x88t\xfe\xa7\x1c!.\xda#<\x1a\x8e\xa3\x16<\x0f/d\xe2""\xc9-8\xc3VF\xe2\xde\x1d8i\xac\x90n:\x8c\xc3\x1f\t\xd3\xf9\x1f\x03\xb1\xb4 b\x99\xe3\t\x8a\xef\x1e\xef`\x8ai\x02\xc9\xf3\x03\x07^4d\x7f\x8a\xa5-Z\xea\xfb\xd6L\x8bOT\xe3\xe4:\xe3I\x11\x7f\x13\xc0\xbfX\xc5\x95\xae\xbb\xf6\x8c\x9e\xee:\xe3-07\x05\xef\xde\xc1\xae\x8c8\x05\'\xdf\xa5\xdf\xcf\xc9Z]\xd1Z\x01,\xe8X\x00h\xbchO\x94?P\xa6\x1cavC\x8b\xe2\x86^\xcfk\x00%\xf9\x99\x13\xba\xf4N\x04K\xba\xed$\x92\xd6\xbf\xe8\xae\xc2\x88\xcd\xa0Q\x83W\x94b\x94{8\xab;\x1d\xc3\x05J\xcf\x0f\x88\xd8s\x03\xf7dN\x88_\xbci\xcds4!%x\xb3\x9fv\xa2_\x92\xccE\xef\xcfS"b\xd2\xb0lp\xdb\x00Q\t7\x90\xdb\xb7\x00\xc6\xaa\xf8\xbb\x9b*\xe7\xe2\x9e\xb8y\x0cbUc\xd4\xf6\xd7\x9fSp\x90\xbf\xd24\x911\x8c\xfb\xfa&\x87(%\xf6X3\xa4%\x06\x9b\xbb{p\xa9\xa5U>|\xa5\x80\x9ei\x87f\xf0\x07.i\xc5\x9b\xcf\xd5L\xcd\xc9\xc9\xe7\xab\x85W\x03B\xd8\xeex\x15\xbd\x00(g\xe8c\xd8i\x04\xe9aUqv\xd1\xcewu\x07\xcf\x919\xed\xe5\xfaz\x1b\x06g[\x9f\xe2\xc7\x9a\x91W?\xeeWg\xb44\xe7\x8a\xd1,H*\x9d\r\xeaY\xf1swB\x02\x87\xfck\xef\xe6\x87\xa4d`\x8eG\x8bd\xc1.\xa7\xa9\'m\x8b\xef\xf4\xc7\xfc\xbf\xb1\'b\x1d\xf9\xef\x87g\xa3g\xfbYw\xcanxO\xe7@\xc2\r\xd4\xf4k\xe0\x99\xcb\xfe0\xb1\xfc\xd9\x0b\xc5M\xc0\xba\xa9\x86O\x08qY\xc2\xf3\xad\xc8h\x18=\xba\xd6\xeaJN`\x96\xe2\xed\xed]\xde\xcd\xb0y\x84b\xaa\xa5Nh\x89=\x87\xed\xce\xa3]\xe9u&\xe4KZ\x1d$\xa7\xd1\xd6\xad&\xc1\xa9\xe5\xc8\xbc\x90\xcc\xdfL;\xed\xbc\xda\xea\x14*\x94\x1a;\xe6\x8cO\x98\xbb\x99`{\xac19\xd5\xb4L\xc58\x88\x8d\'\xa6\xd9._$\x8b\n\xd8\x1e>\x97\xe5\xd5S\xb8u\xe1F\x12\xe2\xaaj\xbf2\x01\xbb\xaa \x9ck\xa5M\xeb\x05\xa5/\xde\xea\xc4C\xc3\xe5\x01\x96F\x08w\xc5\xbf\\\x08\xc4\x0b\x0e\x1e\x951\x92;\x9fo\x7f\xac\xa7\x0c\xd9sB\x91\x19\xa9?RY\xbe!g:\xdf\xbf\xe2?-Tc\xb1\xc3\x88$LT\xfd\x9d\xae\x1d\xb2W\xedy\xa9\xa6\xe4\x07\xd8\xf5p\xd5{\xce\xe78>|G\xce)\x0b\x81dT\x8f\xc2\x814\xb8\x10\xe0\xffO\x0b\xbe\xb69h\x16\x0c\xecp$\xa6\xbb>\x84\xf1\xa1\x02\xa6:\xdf\x9d\xe8\x1c\xe5\xa9q\xeftP\x1c\xaf\xea\x12\xe1\x07QU\xc2\x1d\xa8\x8b\xfe\xd5\x10\x96\xf0cs\x81\x8b"\xf5\xe9\xd8w\tJ;\'\xe5\x0c\xc3\xc3\xcauIu\xd2\xd4\xc5\x98o\xd5\xa6\x1aw^\xc8r+\x1d\x169\xdfJB\xbb\xfb\x96USI\x8f\xa7B\xd5\xa1\x7f\xa9+\xa0\xc5[1?\x05jb\x9c\xd2\x01\xf0\xc7%]\xdb`\xff\xc1(\x01\x1f\xf3u5[\x03{\xf9qc\xc88\xde>\xde\x96\'\xaf\xf3#\xe5\xf3Ov\xb73\x00\xcb\xb6\x88\x17Ht\xec>y\xb1\xa9n\x0f\r\x7f\xecXV\x07C\xe2x\xa9\x7f\xc1T\xd6#\xf7mQ(\xab\x87a\xe5.\x89<\xde\xb4\xad\xc0\xedz\xa1:|\x80\xc2#\xf8\xd9\xa9_\x85C\x15\xf7f\xf4n\xe6<\x95W\xd0$\xddL\x15\x12\xa1\xb3\xf3q\xf8s\xf6\xbe5#\xe5\xecCfo\xd9zi\xda\xeb\x80\xb4\x86ji\xa4\x021?&!\xff\x8c\xa5\xcc\xe8\xe96\x89\xdcuXs\xe4\xcb\xc3\x9e\xe4\xa1\x16o\xe7\x0e_\'iP\xc3\xdf\x8ee\x1c\xad1\xe1\x94\xa5\xda\xf8\x13\x13>lB%\x14\xcc\x919\xde;[\xf6\xd5\xb5\xde\x91\xd5\x97\xab8\xf5A\xdf\x9d\xcbl\xbf3\xc94[\xd5\xa1V\x05\xe4!\xe6\xb7\x92\x86\x1a\xf5\x9b\x16f\xae\xd6_\xbf\x98mcV\xa8\x92;\xb3\x92\xcd\xed\xbe\x0c\x9c!"\xedR\xb9\x99\xce\xca\xbf\\\xb4\xe1&\xadd\x01\x96\x12\xae\xc3\xc5\x1e\xa1\xee\x0fa\xed\xc0\xf2\x12D\x90\xd79\x15j\xfc{I\xfbU\x82\xb8\xeb7\x0eQ\xab\xf1w\x1aV\x8a\xc3\xf7\'\x19\xcf\xe3\x9c\x1e=\xa0-9\xf6\xcaO\xc15@\x0f\xec\xcc\xa2\xd4\xe7\x1a\x87\xfe\xaf \xec\x92B\xed\xf0v)\xb9"\x84\xeb\x1f\x86E\x88\xa0\x01\xa6)n\x9b\xda\x91\xdc\x15\xd8\xadn\x02f\xf0\xee\x03\xa6\xc1j5\x0e4K\xeaB\x11\xeed\x83h>\x1d\xf3X\xccq\xfb%S\x1e\x89\x1f0p@\xedS\xfd\\\xf1SrI\x1ex/O\x8d\xe9[\x8bf\xadH@\xdc\xf1\xf2\xd2\xac\xa5:\xc7F\x0c\x7f 0\x0cp\x00\n\xbf?\xe1\xd2\xc2\x18b/#\x9c\x1e\xc5O\xb1\xb9\r\xc8\x13\x03\x15|\xb3\x90\n.v]\x1eh\xc3\x81\x9e9\xe1\x13\xf1\xf5rB\x9e"\x95@\xc45\xd62\xc4\xc9\xa3\xbf\xea1$\xcc\xe8\x80\xb1\x1f\xab\xec\xd4\x07\x92\xa2yLv\x00\xd3\xe5\x81\xbf\xd8\xfcJw\xf1\x9e\xa3\xecO3\x10VaUC\xd5^\xbb`j\x9f\xc2\xfa^6\xb7l`I_h\x7f\xac\xaf\x1e5\x04\xd7Q\x0e\xc70j\x87vq\xbe8?\x12\xa9\n\xc4\xafn{\n^\xd0CD\n\xfa\xaa \xa2I\xa2\'\x1c\xb0G\x9d\x94\xc8\x0bzi\xe3\x89!x\x81\xaa\xff\x15\xd4\x9d\xc9\xe5D"\xdcgO\xd2\xf5\xb10"\x8a?x\xf8\x08&A|hH\xb0\xf1\x19\xc6\x0c3a\xfe\xbe\xab\xfdh\x7fU\x84\x95Q\n\xcc\x11\xa0\xfa\x95\x8e|\xc3(\xbb %3\x9ds\n\r\xc7\\\xdb\x1e\x06mu\x7fm\xb5\x19\xe9\xe2~\xd9\xc7|\xc3\x1d=@\x0e\x84\xbf.J1\x05\x99f\x1b\xd30_@\xd8\xc1\xd9\xf9-\x90\x04\x8a\x1e\xc8\x19a\x92\xeeB@4\xc0\x07\xe8\r\xc7\xea\xdf\x08\x83\x16\xe5\xc1+\xcf)\xa1\xb0\xa6HI\x9a\xbf\x98\xc6\xf7\xf4o\xaa\x1eq^\x14\x7f\x1f\x87+1a\xcaL3\xa0\xa6\x8d\xa5\x97\xc5\x88g\xd4\x92\x9e\x9e\nP/\xff\xc6\xf3\x83I\x8d$z \xeaY\x84\x90\xc24\xda\x96xL\xd0\x17\xca\xb8<?\x04\xe5\xe2&\x0ey\xfc\xdbj\xf6\xac\xd8)\x00k\x8d\'1J\xd2\xa5\x91p~\x01\x80"\xc9t\x83\xa5\xefA\xae\xb0\xfbb\xb0k5)\xa2\x0f\xd2\xdd"&\xc7\xfa\xab\xe8PIg$L\xa9`\x9e\x99\x0c\x84b\x18\x1e[\xa4o\xffp\x82\xda\xba\x81\xc6WGn\x06\x1ei"\x1f\xd4\xe7\x89%\x86\xfb\x13\x84!mh\x84$\x8d\xb0\x00\xc0R\x96\xe7\xd0\x9e\xd4\xfc\xa4f\xae\x16\xa2A\x1aQQI\xa6\x1a\xa4\xc6\xbda\x83\rI\x08\xdc\x9b\x9dV\xefi\x19\xd2\xc1a\xa6\xa4\t\xc5\xa3\x08\x1b\x9e\xd3\x9d\x1aQv\xd8\x85\x06\x90orP\x073D\xe8\x02\xa2\xec\xb5\x87\xbca\xca\xea\xadv\xc0=B1\xa6\xda\x1b\x19\xde#\r\xb2\x9b\xbe \xa3\x82i\x85\x84r\xd7\xa1\x00\xd9\xc5hc[\n_A\xb5\xb7i\xb5\xb1\x19\xff\x03\xadC\xd9J\xbc\xf6\xfa\x11&rf\xbdv\x17\x92\x10D\xd5\xed\x1cxA\xf5S\xfe\xb4\x05&4\x03I\xd0\xdc~\xd1yC\xa2\xdd\xdbY\x0fc\xaa\xe7,R\x91\xd0\xd8\x1c&S\xeb\x8b\x8e\x92\xfc\xb8Y\xcej\x1bO\x0bJ\ti\'\x0b\x93\xfe\x8f\xc3\x02_\x1d[\xfco:\xdd\x11Ed\xfdo\xba:\xbe~\xb2\x17\x18;<\xbb\x1b[Y@\xd3\xb2\xc9\x82u\xcf\xcb\xeaD\x17\xff\x0b\x9en\x08@\x8a\xbf|\xeb\xa5\x1d\xf8b\x11\xfc\xe4;wL\x18\xf9\xee\xef\xda\x92\x97>\tX\x0c\xbb\xff\x9f\x963x\xd600\x8e\xe2\x95\x1e\xec\xd8\xd7\xbc\xc4\xec;\xa0\xfb\x86+\x18\x18\xd0\xb1\xce!q\x08h\xdd\xb5\x83:Le\x170\xbe\xf5k\xa3\xe1\xa4\x94S\x0e\x0e\x14\x9d4\x15}\xfbLY\x0bipF\xe2h\x8ffyb\xec\xcc\x91\xa6\xd3\xf2:\x1b\x1bX\x94\xe2\xb10;\x07\xff\x1fk\xb5H\xdf\xc7**\xbc\xd0G\xcfJ*\x0fmx\x82.It\xdba\x00\x89\x93:\x96\xa5p\xb0\x08\xf0\x06\x9f}W\xbe\xff\xfc\xa3Y\x88g\xf2=\xd2\x0f\x17\xe0\x02uBr\x04j=\x05x\x9bSR\xd1\xb6\xef\xda\x04\xc7EF\xe4X\r\x18\xe3\xb0D\xbcr\xf2\x90Z\'\xf4j\x1cO\xd0\x88\xcf&\xc7l\xd3\xa2A^#\xe7\xe7S\xfa\xdf$\xf9\xc9Q=06\xf9\x96\xa7\x96\x95z\xc2\x17\xc8\xfa\xae\xb9F\xfd\xbb\x02\xc98\x1e\x8b\r\x95k=T\xd2C0?i\xe0h\xb3a\xa3\x8d\xaf$\xd4\x8d$\xeec\xd4\xe7\xc1\x8aw\x88&<m\tS\x83\xa6M\x0b\x18)\xb8\xbf\xd2\xaf\xb2\x16\xf8<\xfc\xee\x17_\xec=\x9b\x87\xa9\xe8\x9a\xa8(\x94\x7f\x11\xb1\xb1\xa7\x0c\xa9\x98\x9e\xb8~\x81Q\xbd\x02\x8e\xc2g\xd0\x15\x80\xd6\xcc\xbd\xde\xa3\xcd\x9b\xa7>\xe4\x86\xd5\x82\x89\x86\x1f\xc9~\x1b\xcc\xaa\xfb\n\x8c\xa3\t\xd8Q\xa2\xb0;\xbeq\x9b\x13\xdfw{\x16\xf4\n\xba\x02\xfe,\xb77\xe4\x08\x86\x96ua\xf7dql\xe5]\x82\xfe\xe5\x8d\xd3L\x00r\xd4\x0e\xbf\xb38\xca\xa9\x06/\xd3\xf4\x88\xb9#\x00\x11\x9b\x14 \t\xf1|}|\x8e\xce\xe3\x9e\x9da+A\x9a"\x02 \xab\xddHol\x91 \x7fq\xbd\x87\xda\xbc\x93\xb5m\x90\xda\xbb\xc0\xc2\x86_\xbf`$\r\xf7\xbbX\xcbi/\x93e\xf5\xe7\x15\r\x02Kz \x15\xe93moSXO\xdc\xd9Iwp\\\x14\x8d\xdd\xef\x90\xf5\x9f_8\xca)ND\xbe\x97\xbe3\x13\xc3~(D\x85Dgq\xbdn\xc1h\xf3\x18\xfa\xdd\x8b\xe1(\xbfH.\xe8\xe7=1\xf5\xd1\x9e\x02\xce\xe9\x9bZ\x06\xa6\x842/\x88s=I\xf5\x8bf\xde\x9d\xd5dB\xc1\xd4\xd0\x0f\x8fdF\x91\x18*D\xd6\x8co\xab\xf2zgBy\xc1J\xa03\x04\x83Xr\x18\xd1KH\xa9\x0f\xdb\xf6\xb1\xb4yL\xbd\x13Z\x15\xf5O\x0b\x15\x14\x13\t\x88\x05e\x02\xc57*S<\x9b\xbe#;\x9990\xb4:s}Rsr\\\xfa\rF[6\x13\xb5\x1fw\x86\x82\xf4\xb3,\xa0>\xd3L\x01+Tr\xbc\x83v\xd3\xcbn3\x11\xc2>\xd0\xd8\xfd\xab\x8e\x84\x8b.r\xf8\x80+\xf9\x80\t@j\xb7Jy1\xdb\xc8\x14\x10\x11\xd0\xbb\x13t\xc5R\x8ct\xaeg\x16\xa3\x8b\x8b\xb7\xf9\xdb<\x9d>\xec\x07\xceB\xa0\xfdn\xc8\x9aW)\xed\xc2\xaf \x97Q\xf9 \x9dC\xba\x98|*\x1e\x02\xd3Ws\x93CdI\xb5\xd12\xaa\x04Fm\xa5\xbd]\xb9\xcc\x10\xff\x0c/k\xa1\xe8\xbc=\xf7_\x99\xd3j\xf0\x81\x01\xc9\xe9\xe5Ev\x81\xffqW\xecl\xa9*&\x93\xbc5fw\xd4\x02\xe9\'\xfb\xc7\x13x\xd2\x7f\xb1n\xc5\xf8,\x8e\x8b\x0c\x1a\xb7p \x974\x05B\x0c\xd7\xe0\xc1OW\x0b\xf5h\xe4\xb3E\x05\xd6k:IE,\xd2\x93\xbb^<N\xa6\x8dxZ/\xa0\x1d\xb1\x80X\x83\xaf\xa4\xb3\xf7\xb6\xdd\xb0l\'\xfaS\xe8\x84\x80\x9fD\xeb\xba\x0f\xe2\xa4\xbd\xc3O\xfa\x15\xd6\nH\xf2I\xf4\xb5\xbc\xfc> Y\xb2\x90\x90b\xc6F\xd8@M\xf6\x8f\x19\x96\x8a\x12\xb8\xb6\xfd\xc4\x06\xa2\xdb\x802\xa4l~\xa5\x18@K\x06r6\t\xd0\x0f\xf3\x8e\xe7\xc5\x07\xc02\xac\xd2\x06\x88o"\xafQ?\x9e\x1d\x87\xcen\x8d\x81G\xd8\x15\x0bGCQ|J\xe7\xfd\xae\xeb\x07E\x0c\xcbZ\xef`|\xd5y\xe8\xa2w\xc6K\xd6\nV\xb2\xbd\xa6\xc2\xb0-7c\x9dF\xaeWJ\xf1*\xce\xd3\xfd\x8e6\x07\x04\xc3\x94XLs\xa1\x83 \xc4\xc7\x06\xa7_9X,\n\xe9!M\xe2a\r\xdf|\x80\xc9\x02R\xa7\xe63\xd2\x8c\xc1\x9eK\xff\xceJ\x94\xe6r\x98<s3\xeb{\xaa\x7f5\xa2\'\x8a\xde|1LT\xa8\xb9\xf4\xf8.\x1d.\xf6\xd7\x07\x07\xcd\x96\xfb\xa0[\x9b\xbd\xb7;\x0e\x7f\xbc\xc98u\x19\x15\x995\xf1\x19?F\x82m\x98ek\x9b\xf0\xcf\x12hu7\xa4\xef\xd9t\xa6 \xed\xb8B\x8fV\x1b\xd5\x0c\x81\xa8\x90\xdc\x11!\xc9Z\xe9\xf3.V2\x7f\x8f\xd6\x1c\xc1\x9e\x90@\xc7\x8d\x18\xe3\xa4\xa1S\x86A~/\xf2b\xaa\xd4\xe5R\xa3\n\xecE\n\xc0O,\xddJ\x92}T\xd1\x03\xaf\x8e\xff\xebI9\xec\xda\xf7^\x90\xdelE\x8d\xdc\xaf\x8c@\xb9\x1a\x19\xf5O?\x0c\xd5\xfe\xb4\n?\x15\xad\x1a\xd0\x95\xb8\xfa\xbcf\x048A\xba2\xf2\x8e\xc7\x04\r\x86\xc7\x85J\xa3\x9d\x17\xeaB\xdb\x9a\xb9\xf9m\xdfb\x03\x15ES\x03\x8d\xb9\x14A\x98\xf7 \'\xf1l\xef\x93\xc2\xf1C\x00\xb75\xd6\xf1\t\\J\x1aw w\xf5\xd0\xd9%\x17?\xd3a\xb5\xa4\x1b&\xc4\x8a\xb8\xa3`\x0f>Z\x82\xe5\xd2\xadNR\xd4\x06\x05\x16[o\x9e\xad\x02\xc6\xab\xba:\xe1`\xc1x\x82\x01\xaa\xbd\x81\xb6\x19Q\xe9\xdbN\x87\xdds>\xfd\xb2\xc2\xfb}0X\x7f()\xfc7=\x89\x00\x9cmZ\xb4\xb6\xa4\xab\x0e\xbc\x87\xfa\xe0\xf9\xa9G\xc2wp\xd9\x82H:c>m\x1a\x9a\xea\x0b\xa2\xd8\x977Y\xdf~\x1c0\xcdT\xa9\xf5I\x89\x18\x7f\xa2\xfb\x96I\xaa\xe20\x9f\xce\xa6\x9f\xddr\xd5\xc0\xcc\x06\x9dm\xcb\xdeU\x99m\xb54d\xf6\xc8"\xc5\xbb\n\xa7<\xde!;\xdd\xf2\xe4\x9f\xc1\xf7t\xb1\x99\x95\xa2]\xb6\x90!\x822\xa7\x82\x12\x87\xca*`\x89\xc60\xd5\xceO\x97\x0e\xa7\x12\x88F\x1d&p\x8b4\xf4\x03\xdaBj\xb7N~\xaa\x81V\x92o\x14\x8d\xc5\xad\xe1\x8cC\x05\xd7\xce\x97\xd0\xda\xc6K\xcd\xc56\xcd\xdf\xf0\xc9\\\r=\xd0\xcdG\xa8o\xe7\xaf\x1b\xae\xe2B\xf1\x05\xb0Y$\x8d\x94\x9b\x87lQ\xc9\x93\xb7l%\xb1/[n\r\xa6\x91\xd6\x1b\xcb\xd1K\xb4\xb0\x94\xdeh\x88\xd3k\xf0R\xaf*\x84\xadL\x01\x08D\xa0\xc2\xcde]\x19\x0c\x1e\x14\x0cz\x8c\xb6\xc6\xf4\xa4D\xd8J\xd4\xf1\x9f\x0f\x17\xae\xe1}@\xc5[ah\x0f\x99\x84.8\xc6\xbd\x93\xfe\xfa\xb2\xebBB\x18e\x15\x88\xdf\xf6~\xe1\xad\x1c\xdaB-@b\xa1\xb8;\xc7c\x82\xb6z\xcdZ\xd5$\xd6\x90p.\xa6\x0f\xc3\x84\xbc\xb0\x10*Z\xc4\n\x9cs\xf5e\xe7x\x9eh72\xc2\xdbS\n\x95\xbb?\x8bK\x15KMZ|\x1e\x93\xda\xd8\xca\xf7\x8f\x15\xa5\x16#\xb2\x8bZ\x8a\xb7@\xd1\xe3/NP\xb8m\x1b\x8d\xdaz\xff\xe1\xf3\xeb\xb4\'\x8c\x0ep\xf0g\xde\x01+ \xbf\x0c\xc5\x99\x9a\x1f\xe3o1f\xba)\xa3uY\xa7\xcd1g\xa7\xed\xbb}\xa3\xca\xd8G\x10\x14\x19o\xb4&dqjO\x89\x87Dm,\xc3<\xbd\x8b\xdc\xe9\xdb\x08\xf2*\xfe[?\xf4\xb3%\x11\x95\xc8\x82M\x9c\xfe\xd7\xa2@\x13\xe7)\x91\xe6\xe8\xb4\xb3uY\xdcQ\t?$\x97\x82\xa14\xb9\xe7\xd0v\xae\x01\x01\xe8\xb10@}\xd9)\xcf\x1b\xbdK\xbd\xc4\x83,\xd2\x07\xde\x9a\xfd\x88\xb4p\x00.^\xdc\xfb\xcc1\x9aU"+\xc8{\xd7\xe8\xaf\xac\x94T\xa0\x8e\x9b\xf4\xc1\\9\xd9\x9e \xdd<\x91\xc1\xc1l\xd4\x19-\xd0]U\x9b\x86?v\x98\xa2\x0en\xef\xf56\xda\xf6\xef\x0e*\x8e\xe6\xf4T\xb8\x95\x1d9\xd3|w\xd7\x17\xd5\\\x1d\x98\t%~\xb0Y2XafedV\xbf\x91k\xb5\xf9\n\x97\xbf\xb2\xa9+6x\x0e=\xf3[w\x06\x98\x8b\x00\xc4u\xa0\xba\xac\xf3\xe1\x0b\xb1\x08\xeb\xd2Y\xe36\x07\xea`N\x83\x17\xb2t\x93\xf4\x02\xe0M "N\xfe\xecU\xfe\xcc^\x86\xe9K2\xa4,\x05\xc0\x8cV\xa5\xb1<i\x00\x7f\xd1]\xb3\x18fPe\xc6`\xf7"\xb0\xc0\xc1O\x0c%\xe9\xe8\x07\xa6L\xa9/\xbe\xc2,\xb6\x00\xaeG\xab\xb8\xa0\xdcR\xa0}I\x91\xca\x99\xcbe\xf4\xd3\x8aJ\xcc\t\\\x8cO)\xf0\xcb\x83>|9\x8b`DJ\x85,J\xe9\xee)\xba\x9a\xe7r\xa1UQn$\x8e\\\x8dd.\xc0\xc245h\xa0\xb3\xb0\x03\xdf\x0e<\x03\xc8w-\x89r\x8f\x06Nc(?$\x11\x9a\xfe\x14\x1a\r\xfe-=\x82\xc1?\xf8\x10E\x9e\x894l\xde\xae\xf7\xc7F\x9eX\xaa\xb5\xed\xf0\xa6\x9a\xb4i2\x8e\x17B\xcf\x9d\xaa+?\xfc\x15\x81s\xbeU\x05\x85\x95\x088n\x04\xc5YL\x8b\x07/\xd3\x8f\x10\x9a\x12\x89\xce\xe1ro\xedN<>\xda\xc3T\x8f\xc4"X\x14\xb4\xd5\xb3\xa2\xa4\xcf\xab\x88\xbd\x0bF\xa1{\xbf\x98+rD}\x8b\xbd?ETs+\x91\x9a\xb16$4\xa5\xd5\xd6C+Y\x9a\x10\xdaGi\xff\xaa\xa6o(\xcb\xaf\x95E\xbeO\xe2\x80\xa9&\x0e1\x8dnD>\xa9\x02P\xde-\xa7\xc9I\xf4\x84\xc3\xc7\x99\xd5@\x9bh\xdd\x97\x8a\xc4\xaf\x8e"\xd9\xad\xd5\xc8\xd8\x84\xa6\x15\x04\xc6\xd2t_\xc3\xf8\x9fB\x15\xc4\xb8;\x0f\x88\xf0\xcby\xf2d{\xc1\xeb\xc5/\x9eB\x11Ebuh\x15\xb4 \x97$M<,q)\x16\x198]Ru\x91\xf9\x9bU\x16\x10\xd3\xcf_\x05g\x962\xe3\x04\x96\xd2\xc4F\xe77\x97\xfb\x12o\x17\x03g\xd0\xdf\x84\xdeq0\xc9\xb7\xa9^\xeaX)u\x18S\xf0\xc13\xcetz\x88\xeec/\xb1\xd3\x97!y\xaejO\x08\x0c\xb6\x898\xff\xa7\x13\x0b4\xcc\xaa\xa9x\xc7^\xd6\x07\xf8~L\x1c\xe4K\x10\xa4\xdcc\xbb\xdb?~`Z\xa7\xda.\xe9?\xc7\x8f\xd9\xb5U\xff\x9e\x96\xe87E/i\xc1\x18\xf83\xa3\xb8N\x03\x96\x1b\xc9o\xa4(\xc5`\x18=\xb6A\t\xa6\xdf\x99\x16\xfd;\x8f\r{\xef>?>0\x82 \xd3=\x8c\xe9G\x81\x1a\xb7\xd4\xd0T\x06\x18\xfc\xcd\xb8\xa5\x03\x8b\x90\xb1\xa8\x03\xf0\xe8ye1,\xf9\xe7x\x1ec\x9f\xf27\x00I\x82r;,\x9d\x8bP\xea\x91\xa1\xd2x\xd6\x0bF\xad\x01\xb1L\xe2z\x1b\xd6\x86^OP\xf9\xeeR\xa8\x16!t_\x84ME\x9bK\xbb \x00N\x0f!\xff\xde\x01Q\xb6\xaa&\x9a\x0b<d\x1c@zw6\xa6\xac\xd2\x11\xf3\xde\xdc\r\xde\x02\xec\x13Y\'+\xcee\x8d#\x9f\xb2\x16<V\x00\x90\xba\xa9/\xc3\x97G\x97\x13\xa86e\xc0\xcc\xe9\x98\x17Y\xb00k\xd7\x1b\xeb\xd1\xd2\x89"CV<\x0e\xb3I/\xbdEuF* )\xe4\xdb\xe4\xe8\xeej\x87&\xdf\xb0\x19;(\xa4b\x16\xf6\xa4J\xc9\xf6\xcc+1f\xad\x8f\xeb\xe1F\xa8w`n[{\xd0\xd9\x18\xb5\xe8\x15\xc7:\xc2\xfb\xd9.\x0c\xf4\xe2\xfa"(\x83\x93\xd3:\xb9\x0e\xe7;V\xac\xccY\x99\x9dU"\n\x90**+\xd7\xb5\xc3\x04-{\x863!\xceu\xa5\xa9V\xe3\xf2\xde\x8eW@#\xd7\xccBT\x11!\xdeY\xc8C\x18\x0c;\xaaY\xba\xf7-\xa3\r\x83W\xcb\xac\x91\xd9\xde\xd3\xfb\x14\xc6\xe9\x11\xe9\xbf\xac\x15\x11\xf5^\xe8\x8c`\x85|\xdd\xcc\xb1o\x03\xdd\x1d\xd9\xa6u\x98!:-m8l\xe2\xa5\xbb\xaf\xb9\xf0\x14\'\xd7\x04N\xa6\xb8[\x85\xfd\xba|O\xab\xf5n{\x13l\x9c\xef]\x07d\xb9\x9f\x9d\xfe0;\xde\x7f\x17T\x19\x9a\x11\x87\xf8&\x8fF\x85\t\x05\x92*c\xb2\xc9\x15^\x07\xa9T\x80\x9d\xda\x14\x12\x81%\x9f\x1b\x96\x14\x05\xdf\xf4\xc5\x9c\xde\xdb\xc7\x87\x14a\xa4\x94\x19N\xab!\xd4\x8eZ\xeeCH}4/\xd7K\xdc\xa7\x80\xdc3\x90\xa1\x14\xe6\xb9\xb6\x96T\x7f\x01\xf3\xeb\x957\xe2\xbd\xfe\xbb:E\x94\xf6st\x08\x7f\x0e\xcb\xf7\xa6\x11\x17xm\x80\xf5\xe8\xd0P\xa6{\xce\x80K\xda\x04\x18i\xd4q\xc2\xb2\x1ev\\\x82X\xae\x91\x95\xcbG\xb0s\x05\xb2\xdf\xfa\x8c\xaa_\xa7\xa0\xd0U\xcc\xa1"D\x1b\xdd\x13\x8b]#\x81\tk\xff\xec\xb4O\xb6\x19\x9b\xf6FQ\xfbl\xd1\xcdNG\xda\xd7\x04\xf4\x0c\xf8\xfc\x1e\xa6\x99"\xeaTwp[\xab\xb3\xfcu\x08,%C\xf0\x01\xd6>\xc9i\th\x07\xaf\xe0\x0f\xee\x08C8>\xa1$\xae\xbc\x86\x97\xa0\x1d&et8\xb3U\x8bW\x9d\xac\xcaC\x00\xcf\xdf\t\x83\x19\xc9\x03\xc9\xab\xab.\x86\x84\x9d\x1d\xe7?\n\x84n\n\x99\x1d\x12&s\xd0O\xb10\x1c\x07\x07\xb7gWd>\x10\xaa\x07\xaf\xd1\x83S&\xd2\xa1\x8f\x1c\xc7M\x03X\xeb\x8c\xd0m\xaed\xa7\x01\xf4\x9e\x17\xdf\xf1r\xe9\x8d@J\x00\xbd\xc0 \x11\x11t-\xec3AI\xd8\xe0\xcf\xa4*2#{Rn\x8c\x04\x97\x03\x8e\x92\x05\xb57U\xe6 \x8f\x9e\xf2\xf1\x06\xa8U#\xce\xaa\x06,\\\xae\x96\x15\xaa~\xef\xbb}5\xe0\xe6A}O5&X\x85^\xb5\xfc=\xa213\xf4\xc9h\xa3\xc5u\x04J@u\xcbX\x97\xff\x96\xbaR\x96"J\xe4\xa2\x88\xee\xc3\xf1x\x8d\xd9\x12\xbaa>\xb1Wj\xce\xae\xd9<:10\xaaH\xbd\x9f\x0e6\x92wA\xb2\xb98\x88\xb9\xc8\x7f\x7f\xd7\xbd\xe8\x80\xdfm\xd2F_\xcf\xbejsonFI\xf7\x18\xd1\x8f\x11\xff\x95\x00\x9d\xb2\xbe\x0eCV\xd5o\x8e_\xe4\x86\x89\'\x01\x8f\xcd\xd1\xcaNH1:\xdf\xf6h`\x1c\xd8}h\x13\x86\xc1xt\x8e\x1fI\x87]\xf36]\x13\x03\x19\xac\x08Cb\xe3\rB\x91\xcd\xcaK]\x1b\xfb\x1c\x86\x10""\x86\x1ed^i?\xdb\xef\xf1\xd6\x95\xe7\xe8\xd9\xa8\x91H\x0f\xe8\xc4\x82-\x14X\x91y3\xbd\x95[i,\xf1\xa91M\x08\x02d\xd7,\xa0\xe6c;\xe9\x0f\xde\xb6\x9f\xeb\xc5~\xb9q\xd7\xe9\x9a0\xf01\xfa\x195\n\xd9=\xd4e\xb1{\xc1\xf5d\xb1\xbfE\x90\n\x01;\x884\xc2\x17\xfc?\x1f!\x10\xc2\xf7~\xbfN\xdf\xbaB\xb6\xdb\x94\x1d\x1fI\x93\xa0r\x19\xf9:\xba\xea{\x18\xe9\xc5\xdb\xd5:\x8bPr\x0e\x03\xa4\xecC\x85K\x1f\x1f9\t\xa1\xaa\xb6\xf8\x00/\x00\x10G\xfe#\xa3\x8d\xa9\x0c\xa3\x08[\xbb\x89\x7f\xe9\x10j\xd9\xb7"\xd5\xe5<\x95\xc6\x94\xed0)\x03\x07a\xff\xbcK\x95H\xb5{l0-\x89#\xee$k\x98SCz\xdb\xb4q,\xd3P2hp\x94tx\xa1\x14l9\xc1\\\xe8\xb5.Ki\x07n^u9|2\x9d\xe9\xf8.\\\xae\x01>^\x91\xdd\xe6\'x[4\xe9Y\x88Y\xaa\x02u\xe5\xa5`p\xef\t\x16|i_\xbc\xb8\x1c`\xcfFa\x8d\x7f\xce\xde\xf6$,\xbf\x12\xa7\xd8\xc2#\x878\x02\xf26V\xf9\x89\xb1\xcd\xf8/\xd1\x04eT\x08\xcc\xe6\xb96\xc2\\\x9b\x85U{\x1d\xdc\xc9\xa4\xf6\x02\x10\xd2\x8b\xee\x88\x87\x8a\x93*\x0b\xa4\xc4av\x19\xc2z\xaf>~\x9f\xfeKU\x1d\x84\r\xe9\x1a&3T\xfd\x19F\xfdc VD\x19\xe9\xeb\x90\xf29\x823/X\xba\x1b\x85\xfc\xb8\xa2\xf2b\xf7\xcf\xd8\xf7\xe8\x9f\x15\xee\x8b\x15\xb4\x99\\\x9f\xd3v\xa8bi>\xff\x07\xce\x1c\xd8\xcf\xcb\xf6>\x03\xc5q\xa8\x8f\x8c\xb3\xbd\x8e\xa9]Ps\xfc\xf2\xca\xa8M\x98o\xdf=\xd2k2\x93c\x03\x89\xd76\x133\xc3\xe4\xe50\xbb* !\xde\xc2\x18\xd3^\xdb\xeeW\xe6slL\x0cI@\r\x8f\x99\xabpm\xe9)\xbd\ry$d\x17\xe4\xee\xc9u\x9b\x9f\xea,M\xba\xe6\xfaT\xa8\xfa\x11\x91)Bwz\xecD^V\xd5"\x18\x1ad\r\xb9i\x1e\xe2\xc6@@\xe3\xb4\xfa1of\xc6\xeb\x91Q\xa1>\xc7:\x12\x01\x07\'\xa4\xd1\x9b\xf1\x05\x1f\xa9\xf2\x1d\xe7\x93\xf9a\x8b}\x95m\r\xb5\x9f\x8e\xd4\xd8\x88\x15U\xa8qc\xa0\x1aR\x96\xdfN5(\xae+u\xe3\x0cw\xe5\xaf?vC\xd9\xc2\x95\x07\x11]f\xb5Cs\xaa\t\x0f\x0f\xae\xf7C)\xaa\xc0K\xc3wS2\xd8\xef\x8b\x1e\x9dzp\xa99d=]\xf3.\xf7\xf0\xd3\x06Q-I\xce\x07\x11E\x95t\xf3\xe8\x08\x04\xbd\x12\x02\x82\xc8\x80r\xff\xbf\xc8&O\xf4\xaa\xf9\xfb\x1cx\xc3\x01\xae\x89}X\xa8\xd8\xf5,Dq\x93lV\xdfw\xb7\x1di\xa76+\xdd{\xa3Z\xd8\xbd\x7f\xece\xda[q\x83E\x0c\xb0\xed\tR\xf2*\x9d\xa7\x1d\x07d\xd8\xb1\xc4\xdc\xd7o\xf4:\xf4\xf2y\xaa\xb7\xfd\xca\xeb\xc9W\xbe[.&d\xa3\xdf&\xcc\xaf\xb0\xb6W(\xdd\xc4\xeb\x9c\xc0\x9b\x8e\x02\xc33\x07u\xd1\x1f2?\xec8?\xef;\t\x1cO\x1aW\x1f\xf7\xe2\xa6\x0e\x92f5i\xf7U\x07\x86G\xcdB\x02eL\x02\xeb\x14\xe83\x1dU\xf91\xe1\xc3G\xf9\xc2\x14\xc3\x92k\x9e\x16@\x85cAHUj\x8c\x05\xa8\xafG\xf1\xe5\xf2=\r\xa6%\xc21\x1f\xf1\xde#y\x0b\xd5\xa4J\xea\xd8v\x87L\xb4)\x06\x9e\x8d\x9f2\n\x07h\xfc\x18\xb7\xc1Sy-\x9f\xca\x8a\xb1\x85\xe4\xf6\xb1=\xe5)\xe3\xa1\xe2(\x96\xcfa\xbe`4\x84\x9ac\xb2\x197\x01\x1c\x08\x9b\xac\x9c\xd7\\\\\xae\xce*\x80Z\xbeZ\xd6z$\x82 5?\x97\xca\xaaC\xd8\x1e\x98 \x8b\xcf\x1bm\xa5\xa0\xe2C\x82\xde~tQ/\xe6\xbb\x9f!\x97\xe1\x80\xedbH|tJX}\xa1\xa4\xad\xc3\x82\xc9F7V\x02\xffOrH\x15R\x80h3\xfa\x0c\x92\xbdL%$\xc4w\rq\xe3"\xd2\x1b!\x0b:\x03cs\xb0oG\x12lt\xc7\xa2\xc9\x1aw\x98\xef\x05NV8\x03\xed\xbbi\x17\xb8\xd5c\xfc\xcfwK\x9a\x0c\x84\x87\xcb\x1f\xad\x85\x80j\x07\xcc\xf7G\xd6\xaeFY\xff\x8bk\x0f\xf3\x0e\x8d\xbb\xb9\x19\x98\xee\xf1\xa3BG\xaf\xc2!\xdb\x9ahn\xaf\xa47\xb0(\nR\xff\x04>v:I\x8b{\xe4q\nr\xa4\x90n\xd1\x05\xd0\xb8\xfa\xbdu\xa6\x9c\x80\x85\x84\x1a\xf0I \x08\x00\xce\x85\xf1\x0fu\x99\xb0\x8f\xdc\xcf"e\x19.\x1d\xfc\xfdq\xfb\xe5\x8e\xd0\xb8\x95Xq\xf4\xf6U\x9d\x81`\x83\xbf\x8es\xed\xf7\xf8\x97\xaf[2h\xa8\x11\xfb\x87kS\xa9\x90\x0f\x13\x00\xff\xca\x83\x1a[8\x81\xdf\x81\x16,\xd4\x1c\x93l\xf3v\xe4\xf8\x03.\xe8\x08\xa5\x93\xac\x1e\x84\xda\xc6\xb6\x1f\x06\x7f\xed\\j\xc7\xee^\xa1Z"\xff\xbc\xc2_\x81)J\xfa~\xd1\xb3\xfdI\x16\xda\x04\xfb\x93^\x8cq\x81!;h\x8b\xe8\xda\xadf\xaf\xfbYF\xeaw+6"\x085\xfa\xcc\xef\xb4\xbb\xfbz\x184\x1aZ|\xce$9\xb3\xf9\xfcQ\xe8|6M\xcc1;\x03\xdf\xd0\x156&\xee\xe6\x1f\\\x8e\x01\x87%(+K;\xc7\x95\xa0\xc7FA\xce\xb4DBsn\x8b\xc4??U\xb4\xfd\xc9\r\x81\x8b$\xedj\x92jH\x8e\x80\x87\x85W\x93i\x97>\x93\xc3p\x00\xc3:0\xf8\xcd\xb0S\xe2`\xf9\xdb\xb1\x0b"\x15\xf5j\x02"\x08\xff\x94{+\xb8\xc0\xfd\x9fJV2\xdf\x16sUyv\xf1\xb9\x81\x8aeN\x84o\xf4\xa8f}V\x06\x0c#=\x84\xe0\xe4\x9a\xe3\x15\xbd\xd1\xd5\xda\xfa\xfc\x9cF8\r\x12\xdb\xfd\xc6\x011;9R\xe0\xb9\xaf\x1bH\xb4\xfa\x1c\xa2\xac\xfdl\x08~\xa2\x82\xbahP\x89e\xc5L\xf4\x8f\x15m\xa1\x11\x16\xcex\xf0%4y\x0c\xe9\x18X\x9e\xc9.\x13\xa3Zq\x8fiM\x18\xbf\xd5\xf5\xd8\x03\xdb\x92\xa1\x97\xfdW4\xadgd\xfa\xfd\x04\x16\xb3k\x17\xad\x02\xf9\xfc$\xf5*\xf9mv.\xd5\xd8\x96\x92\xa9\xa6\xdaz\x01\x1f\xe2Z\x07\x88\x17\x19 S\xa6\xf7\xf1\xb5\x19\xa7d\xe09\xf7\x97\x9b\xa1\x8b:\x05\xa0\xf3$\xd5\xd2\t3\xaf\x91 \xb6\xb2\xd2<\x9f\n\xab\xc3B\x1bV\xad\xcc\xba\x182#\xa5\xa1\xc8[|\xbc\x90\xc7\x0e}\x95\x11O#\xa49\xc8\xc2\x13/\xca)Y\xbb]\xa0\x04\xcc\x0e\xecVrM\x0c\xb6\x16\x876wIt<\x07\x91l\xe2\xe3~Xu\x8f#\xf4q\xd4M\xbf\xbc\\\x824\x07\xbau.\x06\xb7\xa6\x0b\xf7\xc3\x1f\x1f\xe5^f\xe3\xbd5~\xdbk\xba\t\xd3\x94\xc1e8KR\xd9\xff\x82`\x11\xc2\xdf\xf8t\xdf\xdf\xdd\xc0\xde\xc9h\xa9\x92\xe7 y\xbaj3\x10\x8f\x0e\x8b\x01&\xa2\x89\xec\x0f\x9c\x83X\xba\x87\x81\x9e\xb9u\rNveI\xf9H\r]\x10\xacl7\x1bV\x8c\xf2\x05\xb8^\xceP*UF<\xf6\x9bg\xb8\x8d\x94\xd0s\xc8#\'\xd9\x8f\x02\xf0y!\xbe\xca\x87\xda\xc0\xea\xc6-\x0f?\r\xc3\xe2\xa3\xa5\xd8\xe9\xbb\x96\xb6%:\x9b\xef+\x06\xe1SE\xa4\x88&\xcc\xf3\xf5\x809\x9f\xbe\x13\xb8\xe9"\x86?h\xf0j-\x88j>\x9e\x1f\xb5\xde4qWt\x88:5\xc1S\x1c\x01F\x8dJP\x93\xa3\xee\x03\xd3\x16\x11\x8a\x9fd\x7f-\xff\xd2#\xc9\xd8\xb1B~U\xcd\xa6\xad<\xfc\xc8\x96P\xdff\xc8_\xab-\x05\xa4\x9d\xbf,=\xec\x1e+ \xebQ\x14n\x15\xd2\x08\x0f\x0f\xef\xea\x10j?\x99\xd6\xcf\x9c\x8e\x0b\xc4\x18\xa3G\x04\x07\x8eK\xe5D\xc1\xd1iU\xbb/\x14G\xa4\x147\x13\xfa\xc9\xd9\xfa<\xed\xd0\xe5d\xfe\xb9\xbd\xcbIa]\xf2\x0b\xa22OU:\xf1\x9aK\xad(\x13\x15\xec\xfc\xd6\x7f\xab\xb45\x9bc\xf9E\x87\xa8\xa2G\xb3\xfe\xdb\xe9\xaf\xfc\xd7Ap-B\x84\x95\x8a#\xdaz\xa0\xdb\xcc\xac\xba\x89\x08\xd46\x8b\xb6\x18!:=b\x13!\x1c\nn\xba\x17!%\xe1\x18\x82\x14\xf6>9;\x98\xa6]>T\x90$\xbf\x06\xcf\x14lt2\xb6\x9b\x02L\xc2\n.\x9a\xd8f\x18\x82\x1f\xa8\xf7H\x94G\xa0\x9a\xe5U$K\x07#\x89Ar\xbe\x01\x9eI\xba\xebA\xd3\xc3RQM\xa3\xdew\xb1\xe3L\xc50\xbc\x0c\x8b\xfa\x86\x0f\x80\xcb\xa9FO0\xb91\xcc\xbb\x0f\x16G\xca%\xbd\x8d\xf4N\xb4N\xc0\xfa\x919\xe4\x0cA\xb4VV\xc1\x8a\xb0\xb9\xc1\xaf\x04\xfc@\x0b:\xe3\xa8L\xa09\x9d\x90\xf9\xf5\x8d\xffp!wj6Tm\xf3\xa5\xb4\xda\x10\x0e|\xa3J\x84\xcf\x18\xaaH\xb7\x9b\xa2\x1a1`_x\x98\xea\xb9\x92\xcc\xe6\x9eY2\x90\x07\x95\xa6\xe1\\V&\xa8\xf3\xcf\x07\xfcXhq\x8e\x1a\xa3\xc21\x85]\xaa\x008]-\x14\xbdF\xd9eTJ\xd5Ci\x83\xf8\x1ek\xd9\x05:\xf7N\xbf\x97\xdeln\xef\xd5F\xf4\xc0G\x1b\xba\x95}\xb0\xc1\x91\xfdB\x87\xb2\x17/\xdf\x0c\x85}I\x86\xd7\xf6d\xa2\x87F\xa8\x85\x9b\xfb!r\xecK\xb7\xe2<\xddH\x1f\xfa\x17\\{\x9a\rd\xceB\xec&>8\xbd\xc0\xc2\x17\x9d\x96aQ\x14\xfe\xe36\xc1\x91\xf2|\x9a\'\'X\xa3\xaa\x90\xec2\x1a\xfftw\xff\x16\xbc1\x97\xec\xd3\x95K\xc3^\x84d>\xeb\x1d\xd7\xab\xd7K\xc8\x96JB\xcbK\'\xef\xe5P&\xf3ha\xf0\xb6j\xdc@F\xbd_\x8dZ\xf0/WKx\xd7u?\xab\xf4\x15\xe1\x94\xc4\xab\x92\xdfu\xcd\xe1\x00}f\xae\r\xaf\x932@W\xdc\x99z{W\x85!\x8e\x1b\xddbyZ\x19\xca\x05\xdfo\xe0jS\xcdw\xa7\xa4\t\xd8\xd0bJ\x1f\xef\x15\x9a8p\x89\x9d+\x05\x08\xb0\xbb\x9e\xe5\xf4t\x03\xee\xe69\x9fT\xf9\xc5\xd6Iw\x86OZ\xf5\xa6\x9dm\xa2\xe4\x88]Oa\xb8\xe6(\x9c\x11h,\x8e\xc7%\xa8W\x9c#\xea\xe6\x98]\xad~e v2\x98i\xb8\xe7\x9b\xc3\xf1\xf7#:<\xdbn\xdc\x83z\xfe\xdfqi\x03\xda/\xe4R\x1a"\x94\xb7\xde\xd3P7\xcb`W\x9db\xe2\xd3C\xde\xb9\xca$|}\xd4\xef\x07\xe6h\xb1kl\xe3N\x85BW\xe1g\x0e\x81\x14v$\x0e\xd9@!\x8f\x89\xbf/L\xcf\xd0n\xff\x1a\x11\x03\x9e\x1c\x96X0L\xbd\xe3\xa2\xee\' .z\xbe\xf1\xda\xbfGy[\xceR\x0bqw\xc8@\x7fZG\x03.7\xd4\xb1{\x8d\xaa\x05\xfe\xbfj[\xc0\xa6^\xf5\t\xc2\xf1\xbf\xce\rm\xc0\xf0]7\x9c\r_\x95\xd9\xf6]\x92\x8d\xc7{0/\xf4\xdbi\x00\xa3\xe5WLx\xd9\x9f~<\x9b\x13\xf7]x\xa0\xf4o[~\xbc|\x00\xf0\xfd\x7f\xfb\xbb\xd5/C\xe5\xb24\xad6\x152iS5\x8d\xf1-\xf3S\xb0\xbew\xa5\xd8\x16\xef\x13|.\x08\xec?I\x9e]\x1ba\xd0va3\x8aL<\xfe>\xacz\xfd\x8b\xd9\xffP\x92\x8aFr\x7f\xc0J\x05\xe3\n3r\n\x92\x12w\xacr\x95L\xe9\x15\x16h<\xf2`J1\x9ei$\xb2\xc32\x15\x8a\xa2\x1c\xce\xacR#\xed\x968\xffld\xb3\xbcl\x81\xe7\xe9\xac\xe9\xcb\xdc\x81\xc30SLY\x83)E\xe9\xb5s)\xed\x99]W9\x91\x06#\'\x1e\x9a\x0b4\xc3\xb1\xd2p;\x83\xc7\x8b\xad\x13,\xaa\x0b\xb1\xdf\xb0\x08\xd7\xff\xa4\x918jG\xac\xe3\xebx\x8b\x08\xa5\x1f?\xd5\x82!?%\xd6\xa9q\xd5\xf0\x00\xf1\xbc\xb5\xd7\xe9g\xf1\x19\x02r\xdaT\x99-)Cf\xedo\xa0\x9d$M\xc2D\x96\xd3\xaf\x84\x17\x04\xdfI\x9d\x91V\na2\x84\x89B$\xe3\x96l\xc7\x06\x88\x98\xffV\xdb"\xb2\xdeZ\x17J\xff\xe9\xc0\xf7q\xf07\xbf{\xd0\x18\xd3\n\xbd\xf8?\r\xe3k_\xd7U\xa6<\xe3\x91w[\xad\xe5\x9b\xc4P\xc7\x95\xa5UC\xbf\xa3\n\xefO\xb3P2\xfa\x0b\x0e\xc9\xbb\xefh\\"R\xebW\xc4\xdeAC\x92\xaa\xc3h\xb0\xb8\xf5L\xca-T\x8b$\xcd0\xf6\xcf \xdeT\xbe\xef\xc1\xae\x97\xf7\xaa\xe5\xf2\xb5w\xee\x9f\x1b(\xbe$\x0bG\xcd\xe6p\xf6\x16\xc2!eu\x80aG\xd3my@)n\x83\x18\xd3\xcf\x16\xb5\xb0w\xd9\x84t\x0c*R\x7f\x95\xbc\x00\xac\x0f\x9d&JW\xa6&\xd7\xa9\xf5\xb8\xb0\x98\x98\xe5\x00\xf6~F\xf6\xb0\xe7\xc1u\x16\xfa+\x8d\x9d\x80\xb1\x9a\xbc\xbc\xecB\xd2\xe7K\xfeU\xcf.g\xee\xbe\\\xf9\xfcP\xbae\xebd\xea\xb1u\xc0))\x16v\xf9+-\xd5\x83\x16\xb8\xef9\xad\xd9\x81^.\x84\xa8u\xd3\xe7\xe8\x05o\xc3&\x1f\xa5\x8b\xdeX\xaba\xa1\x89\x8eNG\x97`\x8b\x83\xfc\xe8\xc7N\x0e\xf5&\x8c\xbe)\x98\x80\x0f2 \x8fs40WqX\xb1y/\x9f~\xce\xb7D+\xa76i\x91\x1f+\x95\x84x\xac]e\xbb\xe4\x7f{M\xf8\x13\x90B\xd4Pi_T\xdc\xbaD\x1cN\x0b\x1f\xf5\xcfr\xed)\xc6\x9f\x85\xd8\xad\x83X\xc8I+.\x95\xbaJD\xa8Rcl\xf2\x98\x96o\xd2\x8c\xf6r\xcd\xea\x06\xfd\x0e\xa0Gt\xec>\xaf\x03\xffl\xa1\xd1\x1b\x04C\x19\x02eQ\xa5\xc3\x12`_\xd8\xc7\'[J\t\x1d\xa2;\xca\xc6\x98!\xfeU\xe64\\>\xa8\xe7WIL\xc9o\x81o\x18\x06\x99\x00\xb8>\xb6\x03\x13n\x06d|\x85\x7f\x89>\xc4_q\x17\xe8\xbd\x89\xf4\xa4j\x0co\x1e\x91\x19\xff\x89k\xb6\xd7cx\x05\xdceN\x81E\xa3\xd5c\x82\x89T\xb5V\xeeniV\ni@\xda\x07\xa7\xe5\x06\x14Q\xf1\xf6\xf8SQ\xef5\xea\xb1\x8a\xc0\xd2.,\x18Xj\xc2\x07\xd7ok\xc8\xb4\xef\xfd\x8e\xe9\x02\x88$\x9c\xc6\xbb\xa3\xb9:\xab\x8c$*M\xc4\xb6O&\x81\xe7q>/\x1a\x95/![->\xfa6\xd8\x90\x8e\x94[L@;\x0f\x17\xc4\x16r\xbb\xe5x\x0c\xa0\xec\xf3\xb0\xce\x98\x7f\xe8w\xf5w/\xb48\x1c0\xfa}8qp\x8d\xfe\x86[\xa6\xce\x19\x97\x92\x88u*~\xd4NE\xa8\xb2l\x9c1\xeb\xbe\xb9z,WN/TY\xa8Z\xc6?upW\x92I\x82\x8eE\xe4\xa6\x0bL\xc78\xf1[\'\xde\xc0bX\x9c\xaa#e3H\xe2\x8e\xe9\x90LO\xb1,\x1b\x10 {\xa9TJ\x9c@F\x9fFV\xef\xb0\x96\x9d\x88h\x9eH:\xc2\x19\xba\x96?\x12@\xd3b\xb5\x9dQt\xe5AK\x9b\x02\xe1U\rE\xb1\x10\x983\xe7\xe6\xc7\x87\x84\x04\x06\xa5\xd3\xe8\x17\x1c\xe7\xe1S\x838\x96Yr\xc7\xf0\xa4H\xeb\x9d_\xc3{\x7f\xb5\t\xb6X7\x01\xfe\xf3\xc2\xfa&\xab:\xa6\xa6\xae?M\xf1`\xab\xc3\xb9\xd0\x9ff\xaf"\xdc/\xadr\x17\xce0\xe7\xe5\x0e\x80\xfe?T\x1a\x9d\\\x95\x00gT\x0b\xc6\x93\xb5hm\xf2\nX\xd4}\x8c\xe4}\xdf(\xca1\x99\x130\xb6\x8d7\xc7\x86\xa1\xf26>\xf4XL\x9aZ\xfa\x84\x90\x80\xda\xfd\xd5\x173\xffX{\x92\x90\xc6\xe8\xd4\xcd}>\xd6\x85\xf6\x8dNB\xeb\xf3\x8e\xf11!\xd4\x0b\x88}R\xd94%.u~\x1c\x96l\t\xed\xb7WH\xc1\x90\x14\x0c\xcc\xcd\x0e\xc2uT\xa7g\xa3\xb0S\xd0n:\x8f\xcc\xe6Y\xbb\x02Q\xe35\x96j\x84\'{\xeau\x93=}a\xda\x1c\xedKEy\xec\x9b\xc6Z\xa9\x93\x8fs\x15\xb9n\x128\xf3/\x87\xc4\xb8\xfe\xbbz\xa4\x81\x85\xbbP6\xea\x86\xfd\x80JuX?+M\x8b\x87\xc0\x1fS\xe7\xfa\xd5\x84\x7fk\x12\x08\x0c\xd4Z\x98ik$\xed\x8cd.\xb2.t\xf4W\xcf \xe5\xb2P\x89\xfc\xfb\xfb\xa2\x1c\xb3\xaflL\xef\x95\xf5\x8ar\xaf\xb8\x89\x1f\x97\x7f\xd1i\xc7XBa7E\x1e\xd6\xe3\xc3\xcb\x01S\xfa\x82\xddc\x17\xc3y\xea\xbc\xadH\xf5p\\\xd6p\x02\xb3\xd1W\xac\xd6\xee\x8a\x1eY2-\xec\x90\xdf\x955\xb7\xc3\x9aJ\xf5\x1f\xe2\xc7\xb9\x8e\xc9\xe0\x7f\x80\x7f\x86C\x16\xf2\x8c\xd1:\xf1\t\xfd\x8br\x17*\xab\x108\x06g\x0f\xd4\xe4%\x82^~\x17o,\xfa\x86<}\x9e\xef\xca\xa4\xa7\xdc,\x8d\xd4\x16\xf0\xfd\x97\ri}\x14\xdd\xa5\xb4\xafH\xda\x92\xf4\x03\xdd\x1f5.\x12o\xf3\x18\xae\x80A\xb5\xea\xe0\x8c\xe1\x98\x84<\xa7\'wT"s\xde\x91\n\xb1\x13h\x1d?^\x9b\x08kM:]\xf2W2\xb6\xf2\xe67\xc8\xe3#\xd6\x95\x8bf:\t\xc7h\x06\xed\x8cj\xe3\xb2\xf9\xc0sI\xee|\x0c\xb5O\xcd\x13\x05j\x87\xd9\x1b\x89\x05p\xa4\x02\x0cM\xd8\xc7Z|\xe9R\xd0\x9d\x81\xf3T\xf3FA\x19}\xbc\x16\xe57F\x86\x84x\xa2\x97X8~\x1a\x7f\xd5Or}1f?\xc5\xc54\xb1\xbex1\xed!W\x8a\xc2\xbe\xb9.\x96\x02\xe7v\x13U|\x0c\xcc\x15\xfa\xd5\xdc|\xe9Y\xdb\xcci\xd9\x81\xfc\xb2\xee\xd4\xb3\x80\x9c7\x12\xcd\xbe\x03\xdf\x0f\x9ep\xa4\xfb\xbcx\x9f,H\xfd\xa9A\xe4\xc3\xca4\x910\xd3U\x93\xa3\xa22\xfd]$\'\x12Hj\xe5\xfb\xb5G\xf5\xb9\x00DE\xbd`\xf4\xf6\x9e\xf5\x84\x0b\xe2\xec\x92\xb1\xb951]\xb8\x98\x9e\x86\xf8\xa9\x9b\x1dr\xc6\x19\xd8"3\x85+\x17\xf2\xf4\xb14\x8c!\x0e\xeb\xad\xca\xad\xa3\x16\x10q ]\xaa6\xd8Js\x8d\x99\xafk\xed\x94\xbdE\x9c\xc2?\xba\xfcF[\xf6\xc8\x96\x05\x7f\xba\xeb\x141\x0b{\x82\x89\x8c\xbc4S\xcf\x10`.\xfe\xa9\xcbH\xf9\x08D\x90\x1bI}\xbf\xd9\xe9\x936\x1f\x0f\xef\x99\x9d\x85\xba\x9cF\x0c\x0c1\xf5\x16\xd6p\xda\xe5\x8e\xae\t\xd7\xbb\xedp.\x83\xe1\xa3c\x07\x8e~\xa4\x8cy\x85\xbe1\n5\xa6y\xaa\x048d[\xa0\xe9&\xeeZ\x14d\x9d\x13\x0e\xfcN\x9fB\x97fC\x1e\t\xa0\xbf\xb6\x98\xd2\xbd\x8a=\xa5\t\xd5\x94\x03\xbe\x8d\xe9\xe8\x9a\t\x93\xd8\x01O\x10\xeb\x19\xf0\x99\xbd\x0b2\xff\xc5\xe5\xd5\xc0&r\x07\xf4\x8c6')
@@ -1 +1,3 @@
1
- __version__ = "1.0.17"
1
+ # Pyarmor 9.0.8 (trial), 000000, non-profits, 2025-02-21T12:22:09.961151
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\x00m\x01\x00\x00\x12\t\x04\x00\x97h\xb7\xb4\xb8\x0e\x02\xa63\x04\xe3l\xe9Z\n\xed\x00\x00\x00\x00\x00\x00\x00\x00\xcb\xc6\xb3\xad\xb8^\xfd\xb3\xefm\xc0\x03~\x8a\xb7g\x9c\xc2F\x92\xb8\xd2\xdfRT~B\xb2@R{\x9a\xb1\xa0K\xd0E\xc9*J\xb9\'\xa2\xe6blCo\x83\xea\x98\xb0\xe4 P\xab\x18\x86\xe8\xf1\xda\x8d2\t%\xd1\xa4G\xe3}d{\xfa\xff\xa8/]\xac\xdc\xfd\x06\x16\xb6\x07\xa5\xca\n\x8e\xcf-\x8e\xd4\xb9\x92\'0 \xed\x90\x9c\xcf\x1b@\xa8Q\x15:<*\xacTg[d\x18L\x9b\x1bs\xe9s\xb7\xee*\xbb\xecg\xb4\xb9\xe65\x93\x02\x8dk\xae\xd0\xca\xd1\x8a\x9b\x04\x8b\x0b\xf6x_\xb0\x1c\x17Nu\r\xa7\xe6\xe4\x8f^\x8b\xec\x9d\x04bg\x140*\x0e\xc5\x98eP\x9b\xd0\xffI\xb4\xe2\x9eu\xc8\x17{\x1e\xda\x07\xbdn\xe0\xaf\xfa\xc5\xc9\xe1\xb9\x0f\xa1Y\x81\xe8\xfa\x01\x7f\x95c\xdc\x8c$\xfced\xb4\x1b\xd2tw\x0f\x02!\xe8\x0e`\xd5\x81\xc3\xde\xa1g\xddT\xd9\x17U<}\x92J\xc8C\xcb\xfa7O\x8a4R\xfb.^\xe2\xb9\x88;!\x1c"q\xa9W\xe6\x94\xd3\x08\xc5\xb2\xb2\xa2\x03(\xf4\xe2\ngE\xc6\xbaS\x97\xd3\xef\xe2r\x08\xe4!U\x8b\x9f\x92\xda\xe1V\x88\x99\x03V:\x1e:\x03\xf6]m6\x1b\xaf\xb5i1\x19mC\xae"\xb7UP\xd8\x89x\x9b\xc3\xdfj\xb5\xdc9\x10\x95\xb95e\x9b\xd9b\x833\xbb\xe7\xbb\xb6\xd7y\'+\x83r\x1fkS\x92t\xbc\x89\xafXYHu\xa3\xb9\xf0Q\xb6\xb6')
@@ -1,21 +1,27 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: clickzetta-dbutils
3
- Version: 1.0.17
3
+ Version: 1.0.20
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"
18
20
  Requires-Dist: pytest-xdist; extra == "dev"
21
+ Requires-Dist: pyarmor; extra == "dev"
22
+ Requires-Dist: pyarmor.cli.core.darwin; extra == "dev"
23
+ Requires-Dist: pyarmor.cli.core.linux; extra == "dev"
24
+ Requires-Dist: pyarmor.cli.core.alpine; extra == "dev"
19
25
  Provides-Extra: cliclzetta-legecy-sdk
20
26
  Requires-Dist: clickzetta-connector; extra == "cliclzetta-legecy-sdk"
21
27
  Requires-Dist: clickzetta-sqlalchemy; extra == "cliclzetta-legecy-sdk"
@@ -0,0 +1,17 @@
1
+ clickzetta_dbutils/.DS_Store,sha256=BAZfmI8Al-lW7frqAAU9awnYpuHOen2sk2DhHY8OWRE,6148
2
+ clickzetta_dbutils/__init__.py,sha256=FmBGOdyFui06xJnZJrdWV4ZvRu_mbwFUl64ekXBWYnw,2273
3
+ clickzetta_dbutils/db_utils.py,sha256=c1S97S6ARsz4uXd2H1fywIOTXmewVbnRlp39R5XbThw,49739
4
+ clickzetta_dbutils/version.py,sha256=xfLJhzOLK8ztRsQ6HmJMH0WiPaqkc24VJ5zXxZoTrCI,1412
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=155EEQrFKvkXw9qONoiGIQd4wzJ_b0MpgkL9AZCxMWE,705
9
+ pyarmor_runtime_000000/__init__.py,sha256=ghRSLSUdruJwx2399kNRJJjgTuGzkZRafo8ZrvpETwc,1953
10
+ pyarmor_runtime_000000/__pycache__/__init__.cpython-310.pyc,sha256=ahdytsYN22enrgy7_I7L9Za1oqgQUc2u1k3Mc8J4aDk,1649
11
+ pyarmor_runtime_000000/alpine_x86_64/pyarmor_runtime.so,sha256=2vFE1xBih2prVKSwKSkKrrSs8o2i1cgfFsuH2KGXJ1A,676912
12
+ pyarmor_runtime_000000/darwin_universal/pyarmor_runtime.so,sha256=gdYTa86lEKcScxguVwoe0kmCIXYPA8m6s-uxzCkIIG4,1601792
13
+ pyarmor_runtime_000000/linux_x86_64/pyarmor_runtime.so,sha256=fllP00rsjei9E9dcQoEQvU87ZOsq212LC4cJkb-raek,792360
14
+ clickzetta_dbutils-1.0.20.dist-info/METADATA,sha256=VyauST37-GBqACAYtHSQVvkC_9lZzQA36PCyJBTc27k,1107
15
+ clickzetta_dbutils-1.0.20.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
16
+ clickzetta_dbutils-1.0.20.dist-info/top_level.txt,sha256=iN29E2uT8disQHsSRGtRU0Gv71R5q51J3mA4W1_MEoU,42
17
+ clickzetta_dbutils-1.0.20.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-21T12:22:09.958008
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=GuINeCq5FJlvD3Dma-3-GwZffhE6aM3UWIAEGME0lzs,13662
3
- clickzetta_dbutils/version.py,sha256=7yiPGp334fwhzFzJY1eZEZGBwKTzqWutAVnsTPuCvFE,22
4
- clickzetta_dbutils-1.0.17.dist-info/METADATA,sha256=WPxIY-kyi6Ex5SZnpZfh7UOJBqXotoGdpjpPJFWH-u4,853
5
- clickzetta_dbutils-1.0.17.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
6
- clickzetta_dbutils-1.0.17.dist-info/top_level.txt,sha256=8o5KqMSg9pxnPNejHjMaqZV2vEDvwvsz2GdChZI0N6I,19
7
- clickzetta_dbutils-1.0.17.dist-info/RECORD,,
@@ -1 +0,0 @@
1
- clickzetta_dbutils