From e66f356928bebbbc080482dc679c0a317706caa2 Mon Sep 17 00:00:00 2001 From: YoLoveLife Date: Tue, 7 Nov 2017 16:44:10 +0800 Subject: [PATCH 1/3] new-api AdHoc --- apps/execute/api.py | 16 +- apps/execute/service/catch/new-api.py | 22 + apps/manager/forms.py | 5 +- apps/manager/templates/manager/upload.html | 15 + apps/manager/urls/views_urls.py | 1 + apps/manager/views/host.py | 15 +- jstack/__init__.py | 15 - utils/__init__.py | 13 +- utils/output.txt | 84681 ------------------- yosible/inventory.py | 45 + yosible/run/playbook.py | 1 + yosible/runner.py | 150 + 12 files changed, 276 insertions(+), 84703 deletions(-) create mode 100644 apps/execute/service/catch/new-api.py create mode 100644 apps/manager/templates/manager/upload.html delete mode 100644 jstack/__init__.py delete mode 100644 utils/output.txt create mode 100644 yosible/inventory.py create mode 100644 yosible/runner.py diff --git a/apps/execute/api.py b/apps/execute/api.py index fe9ef5c8..b151b697 100644 --- a/apps/execute/api.py +++ b/apps/execute/api.py @@ -7,6 +7,9 @@ from operation.models import PlayBook from manager.models import Host from application.models import DBDetail,DB + +from yosible.runner import AdHocRunner +from execute.callback import ResultCallback from service.catch.basic import BasicAnsibleService class UpdateHostAPI(generics.ListAPIView): serializer_class = serializers.UpdateHostSerializer @@ -16,10 +19,15 @@ def get_queryset(self): return Host.objects.filter(id=self.kwargs['pk']) def get(self, request, *args, **kwargs): - host = Host.objects.get(id=self.kwargs['pk']) - playbook = PlayBook.objects.get(id = 1) - bas = BasicAnsibleService(hostlist=[host]) - bas.run(tasklist=playbook.tasks.all().order_by('-sort')) + # host = Host.objects.get(id=self.kwargs['pk']) + # playbook = PlayBook.objects.get(id = 1) + # bas = BasicAnsibleService(hostlist=[host]) + # bas.run(tasklist=playbook.tasks.all().order_by('-sort')) + hosts = Host.objects.all() + runner = AdHocRunner(hosts=hosts) + runner.set_callback(ResultCallback()) + playbook = PlayBook.objects.all()[0] + ret = runner.run(playbook.tasks.all()) return super(UpdateHostAPI,self).get(request,*args,**kwargs) class CatchDBStatusAPI(generics.ListAPIView): diff --git a/apps/execute/service/catch/new-api.py b/apps/execute/service/catch/new-api.py new file mode 100644 index 00000000..79be537e --- /dev/null +++ b/apps/execute/service/catch/new-api.py @@ -0,0 +1,22 @@ +# -*- coding:utf-8 -*- +# !/usr/bin/env python +# Time 17-11-7 +# Author Yo +# Email YoLoveLife@outlook.com + +from yosible.runner import AdHocRunner +from manager.models import Host +from execute.callback import ResultCallback +from operation.models import PlayBook +__metaclass__ = type + +def test_task(): + hosts = Host.objects.all() + runner = AdHocRunner(hosts = hosts) + runner.set_callback(ResultCallback()) + playbook = PlayBook.objects.all()[0] + ret = runner.run(playbook.tasks.all()) + +if __name__ == '__main__': + + test_task() \ No newline at end of file diff --git a/apps/manager/forms.py b/apps/manager/forms.py index cf3fe761..351a4acd 100644 --- a/apps/manager/forms.py +++ b/apps/manager/forms.py @@ -51,4 +51,7 @@ class Meta: } labels = { 'disk_size':'存储大小','disk_path':'存储路径','info':'信息' - } \ No newline at end of file + } + +# class FileUploadForm(forms.BaseForm): +# file = \ No newline at end of file diff --git a/apps/manager/templates/manager/upload.html b/apps/manager/templates/manager/upload.html new file mode 100644 index 00000000..32ba9257 --- /dev/null +++ b/apps/manager/templates/manager/upload.html @@ -0,0 +1,15 @@ + + + upload + + + + + +
+ {% csrf_token %} + + +
+ + \ No newline at end of file diff --git a/apps/manager/urls/views_urls.py b/apps/manager/urls/views_urls.py index 8cc25a38..ac64e41a 100644 --- a/apps/manager/urls/views_urls.py +++ b/apps/manager/urls/views_urls.py @@ -14,6 +14,7 @@ url(r'^host/create/$',host.ManagerHostCreateView.as_view(),name='hostcreate'), url(r'^host/(?P[0-9]+)/update/',host.ManagerHostUpdateView.as_view(),name='hostupdate'), url(r'^host/(?P[0-9]+)/detail/',host.ManagerHostDetailView.as_view(),name='hostdetail'), + # url(r'^host/upload/',host.ManagerHostUploadView.as_view(),name='hostupload'), #Resource group url url(r'^group/$', group.ManagerGroupListView.as_view(), name='group'), diff --git a/apps/manager/views/host.py b/apps/manager/views/host.py index c00dd760..bc10c482 100644 --- a/apps/manager/views/host.py +++ b/apps/manager/views/host.py @@ -122,4 +122,17 @@ def get_context_data(self, **kwargs): 'storages':storages, 'softlibs':softlibs, }) - return context \ No newline at end of file + return context + +# class ManagerHostUploadView(LoginRequiredMixin,FormView): +# +# template_name = 'manager/upload.html' +# form_class = +# success_url = reverse_lazy('manager:host') +# +# def dispatch(self, request, *args, **kwargs): +# return super(ManagerHostUploadView,self).dispatch(request,*args,**kwargs) +# +# def form_valid(self, form): +# form.instance.creator = self.request.user +# return super(ManagerHostUploadView, self).form_valid(form) \ No newline at end of file diff --git a/jstack/__init__.py b/jstack/__init__.py deleted file mode 100644 index 9da428c1..00000000 --- a/jstack/__init__.py +++ /dev/null @@ -1,15 +0,0 @@ -# -*- coding:utf-8 -*- -# !/usr/bin/env python -# Time 26 15:08 -# Author Yo -# Email YoLoveLife@outlook.com -class JstackThread(): - thread_name="" - prio=0 #线程优先度 - osprio=0 #系统线程优先度 - tid=0 #系统线程对应 - nid=0 #系统线程对应 - stack_top="" #栈顶方法 - thread_status="NULL" - position="" - diff --git a/utils/__init__.py b/utils/__init__.py index 44baf0b6..48ee3223 100644 --- a/utils/__init__.py +++ b/utils/__init__.py @@ -21,4 +21,15 @@ def toJSON(self): return json.dumps(d) def str2dict(data): - return json.loads(data) \ No newline at end of file + return json.loads(data) + + +class JstackThread(): + thread_name="" + prio=0 #线程优先度 + osprio=0 #系统线程优先度 + tid=0 #系统线程对应 + nid=0 #系统线程对应 + stack_top="" #栈顶方法 + thread_status="NULL" + position="" diff --git a/utils/output.txt b/utils/output.txt deleted file mode 100644 index c3a64b90..00000000 --- a/utils/output.txt +++ /dev/null @@ -1,84681 +0,0 @@ -W -& -8 -8 -8 -8 -% -% -8 -% -% -8 -& -& -& -8 -h -q -q -o -a -a -o -o -a -a -# -# -q -# -& -W -W -& -W -W -M -W -M -M -M -M -M -M -# -# -* -o -o -a -h -p -q -h -b -a -a -a -a -a -a -k -d -p -q -w -w -Z -O -U -U -J -w -q -d -d -b -k -k -h -h -a -a -o -o -o -a -a -& -& -& -b -k -k -k -h -o -M -M -* -% -& -W -# -& -% -% -8 -8 -& -* -a -a -a -a -z -B -B -B -# -* -* -Z -o -Q -o -Z -# -8 -h -o -a -o -o -o -o -* -* -* -* -# -# -* -# -# -# -M -W -M -W -8 -Z -W -W -W -# -# -# -o -B -o -o -W -B -h -h -b -h -k -h -M -h -k -k -k -b -k -b -b -o -b -* -w -a -M -w -d -q -m -O -o -o -o -o -a -a -o -m -k -p -q -p -p -q -q -d -b -h -k -b -b -b -b -O -m -m -w -q -m -b -b -b -p -m -m -m -w -m -q -b -h -k -a -o -o -M -W -W -& -* -* -* -* -* -* -# -# -# -# -M -M -W -M -W -W -& -& -& -& -& -8 -% -8 -& -& -W -& -& -8 -B -@ -X -z -h -h -O -M -M -W -M -o -* -8 -8 -& -8 -M -M -M -M -* -& -& -8 -8 -% -% -8 -% -% -% -% -8 -& -& -8 -8 -& -k -m -q -Z -h -k -a -h -a -M -# -m -& -& -& -& -& -W -W -W -W -M -M -M -M -M -M -# -# -* -o -o -a -h -p -k -h -a -a -a -a -a -a -k -p -p -q -w -w -Z -C -Z -X -Y -U -Z -p -d -d -b -b -k -h -h -a -a -o -o -o -o -& -& -& -k -k -k -h -h -h -a -M -M -8 -& -& -W -# -W -% -% -% -8 -8 -o -a -a -J -@ -% -W -B -Q -o -L -o -m -o -o -o -d -d -h -h -o -h -k -o -o -o -* -* -* -# -M -M -M -M -M -# -M -# -# -M -m -M -a -* -W -# -b -Q -M -B -o -m -a -# -B -k -h -k -h -h -* -h -k -k -h -k -k -k -b -a -a -* -a -o -M -o -k -b -q -k -o -o -o -o -a -a -a -U -k -p -q -p -p -q -q -d -k -k -k -b -b -b -b -Z -m -m -q -m -w -b -b -p -w -m -m -m -w -w -d -b -a -a -h -a -a -M -W -& -& -* -o -o -* -* -* -# -# -# -# -M -M -M -M -M -W -W -W -& -& -8 -8 -8 -& -# -* -# -M -W -& -% -o -Y -n -q -p -0 -# -o -W -W -# -o -% -8 -& -O -M -M -M -M -# -& -8 -8 -8 -% -% -8 -8 -% -% -% -8 -W -8 -8 -8 -8 -% -o -w -w -b -q -k -q -p -W -* -Z -W -& -& -& -& -W -W -W -M -M -M -M -M -M -# -# -# -* -o -o -a -p -b -h -h -a -a -k -k -b -b -p -p -w -w -w -m -J -m -0 -z -n -L -w -d -p -d -d -k -k -k -h -a -a -o -o -o -o -& -& -b -b -k -h -h -a -a -# -M -M -8 -& -& -& -# -& -8 -8 -8 -8 -8 -h -a -a -& -J -B -$ -# -a -U -o -0 -o -L -o -0 -d -p -p -a -o -* -b -p -* -o -* -* -# -W -M -W -@ -m -Z -M -8 -% -M -# -# -# -h -b -q -Z -L -# -n -B -o -m -h -a -k -8 -a -k -h -h -h -8 -k -k -a -* -h -a -a -W -W -M -# -a -M -k -k -b -b -* -M -o -o -o -a -a -a -a -k -q -p -q -q -q -w -p -k -b -k -k -b -b -q -w -m -q -d -m -d -b -d -p -w -m -m -m -w -p -b -b -k -o -o -a -o -W -W -W -# -* -* -* -* -* -* -* -# -# -# -# -M -M -M -M -M -W -W -& -& -& -& -& -M -a -h -h -o -# -& -8 -d -X -m -q -p -# -* -# -W -M -M -M -8 -% -& -M -M -M -M -M -W -& -8 -8 -8 -% -% -8 -% -8 -% -8 -% -W -& -8 -8 -8 -8 -% -8 -d -d -o -p -p -a -W -b -p -# -& -& -& -& -W -W -W -W -M -M -M -M -# -# -# -* -* -* -o -p -b -b -a -a -a -h -k -d -b -b -p -w -w -m -Z -Y -w -O -n -c -z -C -w -p -p -p -b -k -b -k -h -h -a -* -h -o -& -W -# -o -k -h -a -a -a -o -* -# -8 -# -W -W -W -# -& -% -B -8 -8 -8 -a -a -p -c -B -C -o -# -* -a -h -# -# -# -d -p -d -q -q -a -o -o -p -d -# -o -# -W -M -W -Z -& -M -# -M -M -M -M -% -C -@ -# -* -a -p -m -O -Q -x -B -o -w -o -o -a -a -8 -h -h -h -k -% -b -a -a -o -a -o -m -W -a -M -W -o -% -& -k -b -b -* -W -M -# -a -C -a -a -a -a -b -q -q -p -q -w -p -b -b -b -b -b -b -p -w -m -q -m -m -b -b -p -q -w -w -m -m -p -d -b -k -k -h -o -o -o -W -W -& -* -* -* -* -* -* -* -* -# -# -# -# -# -M -M -M -M -M -M -& -& -& -& -W -o -k -d -d -k -* -& -% -& -c -q -M -# -# -* -# -W -# -M -# -# -M -M -& -M -# -M -M -M -8 -8 -8 -8 -% -% -8 -% -% -% -% -% -& -& -8 -8 -8 -8 -8 -8 -% -W -* -p -k -o -h -d -w -& -& -& -& -& -W -W -W -W -M -M -M -M -# -# -# -# -* -* -k -b -b -k -a -a -a -k -b -k -b -p -w -w -m -m -C -0 -Q -f -0 -c -c -L -q -p -d -p -b -q -b -k -h -a -a -w -o -# -W -& -# -# -a -h -a -a -o -o -* -# -8 -# -M -M -W -# -8 -8 -8 -% -8 -W -a -a -d -Y -$ -o -J -a -0 -a -k -o -0 -o -O -d -O -% -k -o -o -o -h -d -b -k -W -W -& -W -M -M -& -k -p -w -h -& -# -# -M -X -* -o -h -m -O -U -8 -B -* -m -o -o -a -a -k -B -h -h -k -b -o -a -* -& -k -# -O -W -a -M -# -k -& -& -k -b -b -o -W -M -# -* -J -J -a -a -a -k -q -q -q -q -q -p -b -b -k -k -k -b -q -m -w -d -m -w -b -d -p -w -m -m -m -m -d -q -d -k -h -h -a -o -o -& -& -W -* -* -* -* -* -* -* -# -# -# -# -# -# -M -M -M -M -M -M -& -& -& -& -M -a -k -? -k -h -o -& -% -M -M -d -k -* -# -* -M -M -W -8 -k -Z -C -p -w -M -M -W -M -M -8 -W -& -8 -% -% -8 -8 -% -% -% -% -8 -& -& -8 -8 -8 -8 -8 -8 -& -# -h -k -a -q -p -p -& -& -& -& -W -W -W -W -W -M -M -M -# -M -# -# -# -# -h -b -k -k -h -h -h -k -b -p -q -p -q -m -m -Z -U -Q -n -x -X -Q -c -c -J -w -p -p -d -b -q -k -k -h -o -q -w -a -W -W -h -M -W -a -a -a -a -o -o -* -8 -W -M -M -M -M -# -% -% -8 -% -8 -* -a -o -$ -% -Z -o -o -0 -a -Q -o -L -a -O -p -Z -% -p -o -* -a -o -o -o -# -W -& -% -W -M -W -p -C -J -u -c -n -\ -) -1 -% -M -M -_ -# -h -w -m -# -B -* -Z -o -a -o -h -h -k -% -k -h -k -* -w -M -k -k -a -b -o -W -W -# -W -h -& -Q -b -b -b -W -M -M -M -O -J -J -a -a -a -w -q -q -q -q -w -d -b -k -k -k -d -w -m -d -p -m -b -b -d -q -w -m -m -m -p -p -m -q -h -a -h -a -o -M -W -W -W -* -o -* -* -* -* -* -* -* -# -# -# -# -# -M -M -M -M -M -W -8 -& -& -M -a -b -[ -" -k -* -& -% -B -8 -Q -m -M -# -M -M -8 -8 -8 -& -B -B -8 -@ -# -M -W -# -W -W -a -# -8 -% -% -8 -8 -% -% -% -8 -8 -& -& -8 -8 -8 -8 -8 -8 -& -* -q -q -a -d -d -M -& -& -& -& -W -W -W -W -M -M -M -M -# -# -# -# -* -* -w -k -k -a -a -a -h -b -q -b -w -w -m -m -Z -C -X -Y -n -0 -0 -z -c -v -C -m -p -d -d -q -q -k -k -o -b -q -a -# -W -M -# -# -q -o -a -a -o -o -o -# -8 -M -M -M -M -W -# -8 -8 -8 -% -8 -o -a -B -B -Y -a -C -h -o -# -a -O -o -o -p -d -Z -B -# -o -Q -o -* -d -o -a -M -& -W -& -Z -C -0 -J -L -x -Q -Q -Q -Y -] -] -f -o -W -& -k -d -m -Y -B -# -m -o -o -o -a -o -a -M -B -h -a -a -b -O -M -m -h -b -0 -& -W -M -M -L -W -X -b -b -d -W -W -M -M -p -Z -C -q -a -h -q -q -q -p -q -m -d -b -b -b -b -b -w -q -d -m -m -b -b -q -q -m -m -m -m -p -p -m -w -h -a -h -o -o -W -W -& -* -* -o -* -* -* -* -* -* -* -# -# -# -# -# -M -M -M -M -M -W -8 -& -& -W -o -a -] -_ -h -# -& -% -B -B -8 -u -Z -Z -W -M -@ -8 -& -& -@ -B -% -% -M -Z -W -& -& -o -b -* -& -% -% -8 -% -8 -% -8 -% -8 -& -& -& -8 -8 -% -8 -8 -# -p -q -p -b -# -W -W -& -& -W -W -W -W -W -M -M -M -M -# -# -# -# -# -* -p -k -h -a -a -a -h -b -p -p -m -w -Z -m -Z -C -v -n -m -m -L -Q -~ -r -u -J -m -b -b -m -q -d -k -h -b -o -h -h -& -& -M -W -& -d -# -# -o -* -* -o -& -& -# -M -M -M -& -# -B -8 -% -% -8 -h -8 -B -B -# -C -a -C -a -o -* -a -h -* -p -O -p -L -o -Z -# -a -d -# -# -M -% -M -B -Y -w -Z -Z -Q -* -X -q -p -m -C -Q -L -< -- -a -a -B -b -q -L -@ -# -q -a -a -o -o -o -a -* -& -W -o -o -h -b -O -k -L -o -a -& -& -* -& -Y -w -Y -* -b -d -W -M -M -M -k -q -O -C -* -h -h -q -q -p -q -m -d -b -b -k -b -p -w -q -d -m -q -b -p -p -w -m -m -m -p -p -w -m -p -d -h -h -o -* -& -& -o -* -* -* -o -# -* -* -* -* -# -* -# -# -# -# -# -M -M -M -M -M -& -8 -& -W -# -o -h -a -o -M -8 -B -B -B -B -% -B -b -M -M -& -8 -& -B -@ -B -@ -M -8 -& -% -& -& -h -q -] -W -% -% -8 -8 -8 -% -8 -8 -& -& -& -W -8 -& -8 -8 -8 -b -w -q -p -o -W -W -& -& -W -W -W -W -W -W -M -M -M -# -# -# -# -# -# -k -k -k -a -a -h -h -k -d -m -q -Z -m -Z -Z -L -u -t -Q -0 -m -C -L -> -f -j -J -w -b -q -m -/ -w -k -d -L -O -Z -* -W -h -h -M -M -b -w -* -# -# -* -* -8 -* -# -M -M -W -W -% -8 -8 -% -% -% -a -B -B -o -q -* -* -h -Q -o -Z -a -o -* -0 -o -a -p -q -a -h -Q -p -o -M -8 -M -8 -Y -O -b -k -0 -b -# -U -* -* -# -o -b -C -L -> -< -b -* -h -q -w -Q -* -q -a -a -a -o -o -a -# -# -8 -& -0 -C -p -w -m -w -# -* -W -W -# -0 -J -q -U -Z -d -p -W -W -M -M -h -m -Z -L -J -a -h -q -p -p -q -m -d -b -b -b -b -p -m -q -d -m -p -b -d -q -w -m -m -m -p -p -m -q -p -b -b -k -a -* -& -& -b -o -o -* -* -* -* -* -* -* -* -o -* -# -# -# -# -# -M -M -M -M -M -& -& -& -M -# -* -* -# -& -% -% -B -B -B -B -B -$ -M -M -M -& -W -W -@ -B -k -M -8 -8 -o -& -& -b -Z -} -M -% -% -% -8 -8 -8 -8 -% -8 -& -& -# -M -& -& -* -8 -d -d -q -a -W -M -W -& -W -W -W -W -W -M -M -M -M -M -# -# -# -* -* -h -d -k -k -a -h -h -k -d -m -q -Z -O -0 -0 -C -u -{ -v -q -U -m -( -] -~ -| -t -U -d -p -m -m -p -C -Z -C -C -w -Z -M -M -k -Q -M -* -o -& -o -o -# -M -o -8 -* -* -# -M -& -M -B -8 -% -8 -% -8 -B -B -B -a -q -0 -o -* -a -Q -a -O -o -d -d -8 -k -a -w -o -O -a -a -a -M -o -& -J -Z -d -a -o -X -* -* -v -# -# -# -# -a -m -w -C -c -[ -q -a -k -O -Q -o -p -0 -a -o -o -* -o -* -W -o -% -# -L -L -b -p -m -* -W -M -M -M -Y -U -o -X -Y -W -b -& -M -M -M -o -w -Z -Q -J -q -h -h -q -p -q -q -d -b -b -b -d -w -w -b -q -m -b -b -p -w -w -m -m -p -d -q -m -d -d -b -q -b -k -o -M -& -M -* -* -* -* -* -# -* -* -* -* -* -* -* -# -# -# -# -M -M -M -M -M -& -8 -& -W -W -M -M -& -8 -% -B -B -B -B -B -B -# -M -M -M -@ -8 -W -8 -8 -M -@ -8 -8 -~ -8 -8 -k -Z -b -M -% -8 -% -8 -8 -8 -8 -% -8 -& -W -p -o -p -q -d -W -b -a -# -M -W -& -& -W -W -W -M -M -M -M -M -M -M -# -* -* -o -a -h -q -k -k -a -h -h -k -k -Z -p -m -Z -Q -Q -J -v -} -{ -d -q -X -L -] -- -< -1 -t -O -b -w -m -c -d -/ -x -u -? -0 -M -M -p -k -h -M -h -k -& -a -h -# -o -% -# -* -* -# -M -& -% -M -8 -8 -8 -8 -& -B -B -a -a -L -* -C -a -h -a -O -a -Z -p -w -$ -o -O -w -Z -h -Q -a -M -% -M -C -Z -h -k -# -* -M -h -* -Z -* -* -# -M -O -v -x -p -Q -c -[ -& -b -m -q -W -h -m -o -o -* -o -k -h -h -h -p -B -* -m -0 -o -& -W -M -W -W -M -Y -Y -Y -U -Y -Y -& -# -M -M -M -M -O -0 -Q -J -Q -h -h -h -p -q -q -p -b -b -b -d -q -q -b -m -w -b -p -p -q -m -m -m -p -d -m -q -p -d -p -q -w -b -a -W -h -# -o -* -o -* -o -* -* -* -# -* -* -* -* -# -# -# -# -M -# -# -M -M -8 -8 -& -W -& -& -& -& -% -% -B -B -B -B -B -M -M -M -M -M -8 -8 -8 -8 -b -M -# -B -8 -b -M -& -a -q -# -W -% -8 -% -% -8 -% -8 -& -& -W -* -w -a -p -m -% -M -d -# -# -W -& -& -& -W -W -M -M -M -M -# -M -M -M -# -* -* -a -h -b -k -h -a -k -h -b -b -p -w -w -w -0 -C -U -v -< -) -{ -q -m -U -\ -] -_ -< -[ -j -O -k -w -m -| -d -f -{ -) -< -J -M -o -p -b -# -# -h -M -& -a -k -* -k -8 -# -# -# -M -W -8 -8 -M -8 -8 -8 -8 -% -% -o -a -a -a -0 -* -m -o -* -a -O -o -Q -p -0 -w -Z -Q -o -d -o -M -W -W -M -J -q -m -m -# -# -o -* -M -o -M -# -* -# -d -f -w -M -p -U -~ -a -# -a -j -B -o -q -Q -o -a -a -k -k -h -h -b -M -& -W -& -# -W -M -M -# -W -W -Q -W -U -p -Y -z -z -q -M -M -M -# -m -L -C -C -J -k -h -h -q -p -q -p -d -b -b -d -q -q -k -m -q -k -b -p -w -m -m -p -d -p -m -q -d -d -p -w -m -w -* -W -o -# -o -o -* -o -o -o -* -* -* -* -* -* -* -* -# -# -# -# -# -M -M -M -W -8 -8 -& -& -& -8 -8 -% -% -% -B -B -B -B -L -# -M -M -M -M -B -B -B -M -M -# -# -o -Z -# -& -# -k -# -8 -B -8 -8 -8 -8 -% -% -a -M -# -w -q -a -a -a -8 -# -# -# -M -& -& -& -& -W -W -M -M -# -* -# -# -M -# -* -* -o -h -b -b -k -h -h -h -b -b -p -Z -w -w -0 -L -Y -n -I -] -U -} -q -n -Y -[ -] -_ -> -? -x -O -a -w -w -w -h -[ -[ -b -r -# -# -Z -m -q -# -a -d -M -a -8 -o -* -* -8 -# -M -M -M -M -8 -W -M -8 -8 -8 -% -% -B -h -a -a -a -a -C -o -L -* -* -a -O -d -Z -h -O -* -* -O -o -q -M -8 -W -C -d -* -O -q -o -M -* -8 -& -B -W -W -M -W -# -Q -m -o -W -? -~ -Z -a -q -p -B -o -d -Z -w -* -h -h -k -a -h -m -M -o -% -& -o -o -k -o -W -# -# -L -J -U -8 -Q -X -X -c -M -M -M -# -w -Z -L -J -Y -k -k -h -k -d -q -p -d -b -b -d -w -p -b -w -k -b -p -q -m -w -m -d -d -w -w -p -d -d -q -m -w -p -o -M -h -M -# -o -o -o -o -o -o -* -* -* -* -* -* -* -# -# -M -M -M -M -M -M -M -8 -8 -& -& -& -& -8 -8 -% -B -% -B -B -B -Y -M -M -M -M -# -W -& -p -M -W -M -# -M -8 -M -8 -W -* -M -8 -% -8 -% -% -8 -8 -% -a -b -q -q -h -a -a -a -& -* -# -M -W -W -& -W -W -M -M -M -M -# -# -# -M -M -* -* -o -k -d -d -k -k -h -k -k -d -b -Z -q -w -0 -L -J -v -u -_ -C -x -] -m -{ -{ -[ -? -+ -i -_ -x -0 -h -q -? -q -Q -1 -_ -? -L -# -w -m -m -Z -o -a -# -# -a -& -o -* -& -# -h -b -* -M -8 -W -W -M -8 -8 -8 -% -% -o -a -h -a -a -a -o -d -* -p -a -o -$ -m -p -Z -a -h -Z -* -w -k -# -& -8 -Y -k -* -Q -b -% -k -# -0 -* -& -W -M -p -M -m -M -w -a -b -> -Z -C -Q -W -# -W -o -* -p -Z -# -a -h -o -o -w -p -a -o -& -& -o -W -W -M -M -M -W -U -X -c -X -0 -X -X -c -W -M -M -* -p -Q -J -J -Y -k -k -h -h -b -q -p -d -b -b -p -w -b -d -w -b -b -d -w -m -w -w -d -p -m -q -p -d -d -q -m -w -b -b -C -o -k -# -# -o -o -o -a -o -* -* -* -* -* -* -o -# -# -# -M -# -# -M -M -M -8 -8 -& -& -& -& -& -8 -% -% -B -B -B -B -& -Z -a -m -M -M -M -& -W -M -% -& -M -& -B -M -8 -% -& -& -% -% -8 -8 -8 -& -8 -% -d -d -p -k -o -o -o -a -8 -o -M -M -M -W -W -W -M -M -M -M -# -* -# -M -M -# -* -o -h -b -p -d -h -h -k -k -p -d -Z -w -w -O -Q -J -z -z -} -Q -Z -{ -| -{ -} -[ -? -_ -~ -! -~ -j -Q -h -p -L -b -X -X -} -} -h -o -o -o -Z -Z -o -o -a -& -& -w -* -o -8 -o -a -k -k -W -% -W -M -W -8 -8 -8 -% -B -h -h -h -a -a -a -a -a -Q -a -Z -# -$ -h -O -b -Z -q -* -Z -h -M -W -W -n -k -m -h -w -# -b -* -* -# -p -# -# -p -Z -& -8 -M -p -# -{ -] -0 -C -0 -a -& -\ -a -o -a -m -Z -* -# -a -d -& -o -h -M -8 -& -k -h -a -M -# -M -M -U -U -* -Y -Z -z -z -c -n -# -# -# -w -U -C -L -Y -O -k -b -h -d -q -p -d -b -d -p -q -k -q -w -b -d -q -m -m -w -p -d -w -m -p -d -d -p -m -w -d -b -U -Y -J -d -# -# -o -a -a -a -a -a -o -o -* -* -* -o -* -# -# -M -# -# -M -M -M -M -8 -8 -W -& -W -& -8 -8 -% -B -% -B -B -B -B -& -W -M -M -M -M -# -8 -W -& -@ -B -B -k -8 -% -% -% -% -% -& -8 -8 -W -& -% -h -b -a -* -* -* -o -o -8 -* -M -M -W -W -W -# -) -o -M -# -* -# -# -M -# -* -o -a -k -p -p -a -k -h -k -p -p -w -Z -w -Z -0 -C -z -u -- -x -O -m -- -) -[ -[ -] -- -_ -< -! -~ -t -L -k -n -X -d -j -X -} -k -a -X -# -a -h -o -m -a -M -* -W -b -a -8 -8 -o -o -* -W -8 -a -b -o -& -& -8 -8 -8 -a -h -h -h -a -h -a -a -h -O -C -a -0 -@ -Q -b -a -p -m -b -k -k -M -W -% -k -p -a -# -M -8 -h -0 -8 -# -q -M -# -q -a -Z -W -8 -8 -0 -[ -C -w -C -L -d -J -& -$ -k -b -d -m -Z -m -w -8 -8 -* -h -& -W -& -d -k -W -# -* -# -# -J -L -# -Y -W -X -c -v -u -# -# -# -p -C -J -p -C -C -k -b -h -h -p -p -d -d -d -q -p -k -q -q -b -b -q -m -q -m -d -p -m -q -p -d -d -q -m -q -b -Q -v -c -0 -Q -o -# -# -h -h -h -h -h -o -o -o -o -o -* -* -* -# -M -M -# -# -M -M -M -8 -8 -& -& -& -& -& -8 -8 -% -B -% -B -B -B -& -Z -M -M -M -M -M -W -& -@ -@ -B -B -[ -8 -% -% -% -% -% -8 -% -8 -M -& -% -M -o -o -M -* -* -* -* -W -# -# -M -W -W -M -8 -_ -h -# -* -# -# -M -# -o -o -o -k -b -p -k -h -k -k -b -p -p -0 -w -m -0 -C -X -n -i -p -] -0 -Z -] -[ -[ -] -? -- -+ -< -! -+ -r -C -k -/ -r -p -c -J -u -o -X -J -m -m -# -p -a -a -M -o -# -a -k -8 -M -o -o -M -8 -# -a -b -b -& -& -8 -8 -8 -k -h -h -h -h -h -h -a -h -L -w -d -B -b -$ -m -Z -# -* -Z -# -# -p -W -W -W -q -0 -# -8 -W -w -M -a -% -* -% -d -& -M -m -# -M -p -1 -] -q -h -L -Q -C -* -# -f -# -* -b -q -w -O -w -* -# -o -# -b -k -& -* -& -W -# -* -# -# -o -# -o -z -z -X -c -v -v -W -# -o -q -C -J -w -J -C -b -b -h -h -b -q -d -d -p -q -d -h -p -p -b -d -w -m -q -d -d -w -w -p -p -p -b -q -w -d -p -| -v -v -u -L -k -o -o -o -h -k -k -k -h -o -o -o -o -o -o -* -# -# -M -M -# -M -M -M -8 -8 -8 -W -& -& -& -& -8 -% -B -% -B -B -B -& -W -M -M -M -M -* -# -@ -B -@ -B -@ -0 -W -% -% -% -% -% -8 -% -o -# -& -B -M -# -W -W -# -# -* -# -W -M -W -W -W -M -M -h -[ -f -* -* -# -# -# -* -o -o -h -k -p -k -h -h -k -k -p -p -0 -m -w -O -L -U -x -z -- -p -~ -Y -U -] -[ -[ -] -? -_ -+ -> -! -_ -n -J -b -n -k -b -Q -J -} -a -u -k -a -d -x -m -O -o -* -# -k -* -* -& -* -o -# -8 -W -a -k -p -k -W -& -8 -8 -# -h -k -h -h -h -k -h -h -a -a -L -$ -Z -B -w -Z -b -a -h -w -Z -M -# -W -& -8 -8 -w -* -* -M -m -# -# -M -Z -8 -8 -8 -% -* -M -o -b -1 -j -Q -o -n -L -d -a -& -f -8 -* -h -d -p -d -0 -O -# -* -# -# -& -M -M -b -M -o -q -w -Z -w -h -# -q -n -M -v -n -u -n -# -# -a -Q -J -L -m -J -k -b -q -h -k -q -d -b -d -q -p -a -q -d -b -q -m -p -m -d -p -w -q -p -p -d -p -w -d -p -1 -x -n -u -u -u -J -o -o -a -a -k -k -k -k -a -o -o -o -* -o -o -* -# -M -M -M -# -M -M -M -8 -8 -M -& -W -& -& -8 -8 -% -B -B -B -B -8 -M -M -M -0 -M -M -W -M -M -M -& -W -# -* -% -% -% -% -% -& -& -o -# -& -% -W -M -W -W -# -M -M -o -& -M -W -W -W -W -M -p -) -# -a -* -M -M -# -o -o -a -d -p -q -h -h -k -k -d -p -w -Q -q -O -Q -C -r -v -? -q -w -_ -j -] -] -] -] -] -? -_ -~ -> -l -- -x -J -b -Y -d -p -0 -h -o -Z -Y -* -d -d -Z -k -Z -* -o -# -k -& -W -& -o -o -& -& -h -k -b -d -a -W -& -8 -8 -a -k -h -a -h -h -h -h -h -h -a -o -C -% -O -h -b -d -Z -d -M -# -# -# -8 -W -& -& -w -Q -u -d -w -& -8 -# -/ -# -d -& -% -% -W -# -? -_ -k -& -f -q -L -C -a -o -% -& -* -a -b -k -p -d -m -Z -k -a -# -& -W -& -h -o -# -* -# -# -* -* -# -* -w -X -x -v -n -n -M -# -o -m -L -C -q -Z -k -k -q -h -h -p -d -b -d -q -k -k -q -d -d -q -m -p -q -p -w -w -q -p -q -d -q -q -p -O -c -r -n -n -n -x -t -d -a -a -a -b -b -b -b -k -a -o -o -o -o -o -o -# -* -# -M -# -M -M -M -8 -8 -& -W -& -& -& -8 -8 -% -B -B -B -B -M -J -M -b -d -# -# -# -M -# -# -M -M -M -# -% -% -% -% -% -8 -o -o -* -& -% -W -W -W -W -M -M -M -# -# -M -W -W -W -M -# -# -o -o -* -# -M -# -o -o -a -k -d -p -k -h -h -k -b -p -p -Q -q -Z -0 -L -x -n -? -] -m -C -) -? -] -] -] -] -] -- -_ -~ -i -l -~ -r -Y -h -b -d -b -0 -/ -* -X -Q -a -b -k -b -o -m -h -* -k -k -b -& -o -* -& -& -a -* -k -* -M -M -& -8 -8 -8 -h -k -h -h -h -h -h -h -h -h -a -8 -# -Z -k -Z -h -m -Z -d -p -a -# -M -& -& -B -o -O -w -b -o -Z -q -& -8 -h -h -m -q -q -& -p -m -\ -? -, -Q -M -* -L -L -b -m -M -@ -* -a -b -h -h -b -w -q -m -q -b -o -M -* -o -o -o -# -# -# -# -# -o -* -# -q -d -u -n -x -j -o -* -p -0 -Q -d -w -C -b -d -q -h -p -p -d -p -p -h -b -q -d -p -p -w -d -p -p -w -q -q -q -p -d -q -p -Z -] -f -x -x -x -x -r -x -x -k -h -a -h -b -b -b -b -k -a -a -o -o -o -o -* -# -# -M -M -M -M -M -8 -8 -8 -W -W -W -& -& -8 -8 -% -8 -B -B -M -# -o -o -& -W -# -# -* -# -M -M -# -M -M -% -% -% -% -% -8 -a -a -* -& -% -W -W -W -W -M -M -M -M -# -M -W -W -M -# -# -# -o -o -* -# -# -* -o -a -a -h -q -b -h -h -k -k -p -p -0 -m -w -Z -0 -x -r -0 -/ -{ -m -u -{ -] -] -] -] -] -? -- -+ -~ -i -l -> -j -[ -O -d -L -p -a -o -m -Q -L -k -k -Z -Q -# -m -d -o -a -a -o -& -o -M -& -M -a -o -# -M -# -W -W -8 -8 -W -k -k -a -h -h -h -h -h -h -h -* -@ -# -0 -O -Y -Z -a -p -O -d -a -* -W -W -8 -b -* -b -k -M -& -L -x -$ -q -w -q -8 -8 -b -k -d -J -) -) -Q -h -# -M -m -L -m -o -# -$ -8 -M -k -k -a -h -k -p -q -p -b -k -a -a -a -M -M -m -k -M -# -# -# -* -* -d -b -u -n -j -f -# -o -p -Z -0 -b -b -q -k -d -p -h -q -p -p -d -d -h -b -p -p -q -p -d -w -p -q -w -q -q -q -d -q -q -w -x -j -r -x -x -x -r -r -j -r -U -k -k -h -b -d -d -d -b -h -a -a -o -o -o -* -# -* -# -M -# -M -M -M -8 -8 -W -W -& -& -& -8 -& -% -% -% -% -W -h -h -* -8 -M -M -# -Q -M -M -M -M -# -* -% -% -% -% -% -# -a -o -o -8 -% -& -& -& -& -M -W -W -# -M -M -M -W -M -# -# -* -o -o -# -# -# -o -a -h -b -q -p -a -a -h -k -d -p -m -0 -q -Z -Z -n -f -0 -p -z -j -m -] -? -? -] -] -] -] -? -_ -+ -< -> -l -! -f -) -r -b -k -w -n -# -Q -Z -k -p -k -v -a -Z -Z -j -h -a -* -W -W -M -& -M -* -* -# -# -M -M -M -& -8 -& -& -h -k -h -h -k -h -h -h -h -o -8 -% -Q -0 -< -! -O -w -p -p -Z -o -M -M -8 -# -* -# -o -d -M -o -h -& -| -k -z -# -W -M -o -M -k -C -> -X -z -* -h -# -0 -0 -q -o -M -U -a -8 -a -k -p -Z -w -p -d -b -k -a -o -k -o -W -# -# -0 -O -# -* -o -* -k -b -d -q -t -f -f -) -o -d -O -Z -Q -b -b -k -b -p -h -a -p -d -d -b -h -p -p -d -k -m -b -q -p -q -q -q -q -p -b -p -w -O -? -j -r -r -r -r -j -j -j -f -t -C -b -k -k -p -p -d -p -b -a -a -o -o -o -o -o -# -# -M -M -# -M -M -& -8 -& -W -& -W -& -& -8 -8 -% -B -% -# -h -k -o -$ -M -W -M -@ -& -W -M -m -Q -M -8 -% -% -% -% -o -a -a -o -8 -% -& -& -& -W -W -& -& -M -# -M -M -M -# -# -* -a -a -# -# -# -a -a -h -d -q -p -h -a -a -k -b -p -p -Q -w -m -O -Y -f -U -q -d -L -z -m -? -? -? -? -? -? -? -- -_ -+ -< -> -l -I -f -C -f -d -u -b -a -u -L -b -q -b -b -k -k -o -w -m -h -a -a -W -# -W -W -* -* -* -# -# -# -# -# -8 -8 -W -M -k -h -k -h -k -h -k -h -h -% -% -% -& -h -i -\ -U -Z -o -o -p -o -W -M -B -# -8 -8 -o -p -8 -O -* -W -p -Q -u -( -& -o -* -& -| -I -m -Q -a -o -h -o -m -0 -q -o -W -x -B -a -h -Z -q -p -o -o -o -a -o -* -d -k -* -k -* -k -# -# -X -k -o -* -* -d -b -b -b -/ -j -\ -o -o -m -O -Q -b -b -b -k -p -d -h -p -d -p -b -h -p -p -p -k -q -b -p -p -q -q -q -q -p -p -q -m -< -/ -j -j -j -j -j -j -f -f -t -t -r -0 -h -k -b -p -p -p -p -d -h -h -a -a -o -o -* -* -# -M -M -M -M -M -8 -8 -& -W -& -& -& -8 -8 -8 -% -% -W -d -a -B -@ -O -M -M -B -# -M -# -B -B -8 -8 -% -% -% -B -o -a -a -a -8 -8 -& -& -& -W -& -& -& -a -* -M -M -M -# -# -* -a -o -# -# -# -a -a -k -p -q -p -h -a -h -k -d -d -Q -Z -w -Z -Q -j -c -x -p -p -L -J -Z -? -? -? -? -? -? -? -- -_ -+ -< -> -l -; -j -Z -b -p -h -p -* -c -b -w -w -p -w -z -o -o -d -b -a -h -M -W -W -W -o -o -* -* -* -* -# -# -# -& -& -W -M -b -b -a -h -h -k -k -h -o -8 -% -% -Y -Z -L -n -c -Z -o -L -a -a -& -W -B -# -8 -M -b -m -q -m -# -k -h -r -w -0 -* -8 -M -W -l -x -h -h -j -q -a -b -q -0 -q -o -v -Y -a -0 -d -p -p -a -o -# -& -# -o -p -p -h -# -a -o -o -b -* -o -O -Y -m -* -o -p -p -w -k -/ -/ -p -o -m -Z -Z -b -b -b -k -d -d -h -p -p -p -k -h -q -p -d -q -b -p -p -q -p -q -q -q -w -q -w -Q -r -f -j -j -j -f -f -f -f -t -t -/ -/ -n -a -b -b -p -p -p -p -d -k -h -a -a -o -o -o -# -* -M -M -M -M -M -8 -8 -& -W -W -& -& -& -8 -8 -% -% -8 -a -k -& -a -$ -* -W -% -b -M -M -B -@ -O -8 -8 -% -% -* -o -o -o -a -8 -8 -& -& -& -& -& -& -* -k -o -# -M -# -* -* -o -o -* -M -# -a -a -h -d -q -p -a -a -a -h -b -d -Z -O -q -Z -Z -j -u -? -Z -p -u -U -{ -- -? -? -? -? -? -? -? -- -_ -~ -> -i -l -: -r -m -L -q -q -h -C -w -Z -Z -L -q -Z -a -o -o -p -k -k -h -* -o -o -k -b -o -o -* -* -# -* -# -# -& -& -M -* -h -h -a -k -k -a -h -a -% -8 -8 -8 -& -a -m -O -\ -b -m -o -# -a -8 -W -M -8 -% -8 -p -k -o -b -# -o -M -& -Z -h -8 -* -& -U -c -p -k -a -a -J -a -k -0 -O -w -a -# -Q -m -b -b -b -M -\ -x -n -& -v -w -k -m -q -M -a -# -# -b -* -o -o -q -L -M -M -a -a -w -w -p -| -L -* -b -p -p -m -k -b -k -b -d -h -b -p -p -k -h -p -d -h -m -b -p -p -p -q -q -w -q -q -m -0 -< -/ -f -f -f -f -f -t -t -/ -/ -/ -\ -\ -\ -n -h -d -d -q -q -q -q -d -k -a -o -a -a -o -# -* -M -M -M -# -M -8 -8 -8 -M -& -& -& -& -8 -8 -8 -% -% -% -% -W -p -8 -h -a -M -m -w -k -B -B -$ -8 -8 -% -% -* -a -o -o -o -& -8 -& -& -& -& -& -W -M -q -h -W -M -# -# -* -a -o -M -M -* -a -h -b -q -q -b -a -a -k -k -b -b -Q -q -m -Z -c -x -J -d -O -d -| -- -? -? -? -? -? -? -? -? -? -_ -+ -~ -< -i -l -; -n -p -h -X -U -* -U -q -w -O -X -b -U -h -h -o -q -b -k -* -M -M -a -o -p -a -o -a -* -C -* -* -W -& -& -M -a -k -h -k -k -k -k -k -* -8 -8 -8 -8 -& -h -a -Z -h -L -o -o -p -a -8 -M -o -% -% -% -h -d -w -h -Q -o -M -* -m -a -p -q -o -X -x -Q -k -k -Q -p -X -Y -t -J -J -a -a -0 -a -k -k -Z -( -u -@ -& -& -r -b -k -0 -q -* -M -* -* -# -* -o -b -a -Q -J -O -Q -* -k -h -m -O -r -k -k -q -d -d -k -k -b -k -d -k -h -p -p -h -h -p -d -h -q -k -p -p -p -q -w -q -0 -m -Z -r -\ -t -f -f -f -t -t -/ -/ -/ -\ -\ -\ -\ -\ -C -c -O -d -p -q -q -q -q -b -k -h -h -a -a -o -# -# -M -M -# -M -M -8 -8 -& -W -W -& -& -& -8 -8 -8 -% -B -% -B -B -B -w -p -M -& -o -a -B -B -B -8 -8 -% -W -# -o -a -o -o -M -8 -8 -& -8 -8 -W -M -M -q -k -M -# -# -* -a -a -# -# -# -a -a -b -q -q -d -a -a -h -k -b -d -Z -m -q -O -C -x -Y -Y -q -0 -m -1 -] -[ -[ -- -? -? -? -? -? -- -_ -+ -~ -> -i -l -; -u -Z -q -O -L -p -Q -Z -x -O -p -Q -* -o -h -a -w -m -h -M -M -U -Z -q -0 -a -b -k -k -* -* -* -& -& -& -M -a -h -k -k -k -h -h -o -8 -8 -8 -8 -& -& -k -h -a -# -Q -o -O -# -a -B -W -W -% -8 -8 -h -8 -W -& -q -a -% -B -q -m -n -w -Q -U -& -L -d -J -C -Q -J -u -f -] -C -k -Z -Z -o -a -L -f -a -Y -W -& -8 -Z -p -k -0 -w -a -# -M -# -M -# -* -h -q -# -o -a -U -k -w -h -h -h -k -o -o -d -d -b -w -b -b -k -d -a -h -p -d -a -a -d -b -k -k -q -p -p -p -w -w -Z -Z -0 -L -[ -/ -f -t -t -/ -/ -/ -/ -\ -\ -\ -| -\ -| -| -( -x -p -p -p -q -w -q -w -p -b -k -h -h -a -o -# -* -M -M -# -# -M -& -8 -& -W -& -& -& -& -8 -8 -8 -8 -8 -% -% -8 -8 -@ -a -a -W -h -h -M -B -% -8 -8 -8 -8 -8 -o -o -a -o -M -8 -8 -8 -8 -& -# -M -k -w -a -M -# -* -o -a -a -M -# -o -a -h -k -q -d -a -a -a -h -b -b -q -Z -q -m -Z -x -x -z -Q -d -Q -Y -{ -[ -} -} -} -- -? -- -- -? -- -_ -+ -~ -> -i -l -; -c -O -J -m -k -O -m -p -L -Z -w -Z -o -p -a -o -m -* -o -M -M -Z -Q -Q -m -q -k -p -p -w -a -k -* -* -# -a -a -h -k -h -a -h -a -8 -8 -8 -8 -8 -W -& -a -a -o -a -k -m -k -m -a -% -& -W -@ -h -o -k -W -& -W -o -a -B -q -p -Z -r -Z -L -c -& -L -m -v -* -C -J -x -f -j -Q -k -Q -q -o -] -o -f -a -r -o -M -% -p -d -Z -m -Q -k -# -W -# -# -M -o -o -# -a -d -b -p -a -| -X -k -b -h -d -p -k -k -b -p -b -d -k -d -a -a -p -b -a -a -d -h -m -b -q -p -p -q -w -w -C -Q -J -| -( -t -t -/ -/ -/ -/ -/ -\ -\ -\ -| -| -( -| -( -( -j -r -a -q -q -w -q -q -w -b -b -h -k -a -a -* -# -* -M -M -# -M -W -8 -8 -M -W -W -& -& -& -& -8 -8 -8 -% -% -8 -M -% -% -M -# -o -k -M -% -8 -W -8 -8 -8 -8 -8 -o -a -o -& -% -8 -8 -& -# -* -b -h -* -a -* -# -o -h -a -* -M -# -a -a -k -q -q -k -a -a -h -k -b -k -O -q -w -Z -u -r -j -z -O -p -Q -{ -} -} -[ -[ -[ -- -- -? -? -? -- -_ -+ -< -> -i -l -; -c -m -Q -c -Q -Z -d -L -h -a -w -q -a -a -h -o -d -# -# -M -J -h -d -a -b -k -k -b -d -o -o -* -& -& -W -# -a -h -a -k -o -h -8 -8 -8 -8 -8 -8 -W -& -o -o -a -a -q -o -O -k -a -% -W -& -B -k -% -b -& -& -& -k -a -8 -p -L -p -J -m -Q -k -q -0 -q -m -L -Y -c -( -f -j -Q -k -q -p -p -f -& -\ -a -x -W -W -% -h -d -p -q -m -w -h -* -M -M -M -M -* -# -* -b -k -O -Q -d -b -r -f -) -h -p -a -b -b -w -d -k -k -d -h -a -a -b -h -a -b -h -q -b -d -p -q -Z -m -Z -J -X -Q -1 -/ -/ -/ -\ -\ -\ -\ -\ -\ -| -| -( -( -( -( -( -) -1 -m -x -Y -q -q -w -w -w -p -k -b -k -k -a -o -# -* -M -M -M -# -M -& -8 -& -W -W -& -& -& -8 -& -8 -8 -8 -% -8 -M -% -B -h -* -* -* -W -8 -% -8 -8 -% -% -% -% -& -W -a -% -% -8 -W -# -M -k -d -M -& -* -* -o -a -a -o -# -# -a -a -b -p -w -q -a -a -o -k -k -b -m -w -q -Z -z -r -Y -_ -O -{ -J -} -[ -[ -[ -[ -[ -- -- -- -- -- -- -- -_ -+ -~ -> -! -l -I -z -O -L -k -Z -p -Z -k -h -d -Q -a -Q -o -a -a -b -m -# -a -q -h -h -p -h -h -h -a -p -o -o -o -W -W -M -# -a -a -h -k -h -8 -& -8 -& -8 -8 -& -& -& -* -a -M -a -O -Z -h -0 -a -& -W -M -% -W -8 -a -8 -W -p -d -o -& -w -0 -a -w -t -L -M -b -o -k -C -C -b -q -m -t -v -z -a -& -b -* -( -& -( -o -j -M -h -% -k -b -q -q -0 -q -h -k -W -M -M -M -# -# -* -o -* -o -0 -Q -k -h -r -j -f -h -a -a -k -p -p -b -b -b -h -b -a -k -a -a -k -h -k -m -p -q -m -O -Z -c -v -u -f -) -/ -\ -\ -\ -\ -\ -| -| -| -( -( -( -( -( -) -) -1 -} -{ -J -v -Z -q -w -m -m -m -p -d -k -k -a -a -# -# -o -# -M -M -# -8 -8 -& -M -W -W -& -& -& -8 -8 -8 -8 -8 -8 -M -8 -% -a -o -o -# -W -B -B -8 -% -% -% -% -8 -8 -a -* -8 -8 -# -M -M -a -o -M -M -# -* -* -a -k -a -# -M -* -a -a -k -w -d -o -a -o -h -k -k -p -Z -p -w -J -j -r -/ -_ -O -( -\ -[ -] -[ -} -} -- -- -- -- -- -- -- -- -_ -+ -< -> -i -l -I -c -J -Y -0 -h -L -d -q -m -a -w -a -* -k -a -a -h -* -# -L -* -a -a -a -h -a -o -h -o -a -o -o -W -& -M -# -o -a -a -k -& -& -& -& -& -& -8 -& -& -& -* -M -M -a -Z -b -Z -h -o -M -M -M -% -W -& -p -b -w -d -8 -W -w -B -q -o -m -t -# -# -* -# -C -0 -Q -d -q -0 -x -r -x -a -% -b -W -{ -& -( -h -f -M -b -8 -a -h -w -w -0 -m -h -q -a -M -M -M -# -* -o -k -M -p -o -w -h -k -w -j -a -k -b -o -b -q -m -k -h -p -h -b -a -k -a -a -h -h -k -p -q -q -Q -0 -Q -c -x -\ -] -\ -\ -\ -\ -| -| -| -| -| -( -( -( -( -( -) -) -1 -1 -{ -{ -n -/ -n -Z -q -m -m -m -q -b -b -b -a -h -* -# -# -M -M -M -# -M -8 -8 -W -W -& -& -& -8 -8 -& -8 -8 -8 -8 -M -% -B -o -h -o -M -B -B -B -8 -% -% -% -% -8 -M -o -M -8 -8 -* -b -* -W -& -M -& -M -* -o -k -a -o -M -# -a -a -k -q -w -p -a -o -h -h -k -k -Z -q -q -Z -x -x -] -0 -p -L -{ -) -[ -[ -[ -- -- -- -_ -- -- -- -- -- -- -_ -+ -< -> -! -l -I -u -( -Q -U -Z -m -C -k -k -a -m -q -a -- -k -h -o -o -* -o -d -o -o -k -a -a -b -h -a -a -o -o -W -W -# -# -a -a -o -o -& -& -& -& -& -& -8 -& -& -& -# -* -W -M -M -p -a -Z -* -* -& -* -% -o -& -M -d -p -k -W -8 -w -h -@ -% -0 -t -1 -% -o -* -Z -Q -C -Q -q -O -c -u -n -# -& -h -M -[ -& -1 -b -\ -W -o -& -b -k -q -w -Q -O -0 -0 -h -* -W -k -# -# -* -k -* -o -o -b -a -b -k -x -a -a -d -a -a -J -b -p -q -| -k -b -a -k -a -h -h -k -p -q -q -Z -Q -J -u -t -| -_ -( -\ -\ -| -( -( -| -| -| -( -( -( -) -) -) -) -1 -{ -{ -} -[ -} -0 -r -Q -w -w -m -m -m -p -d -b -b -k -o -# -# -* -* -M -# -# -& -8 -& -M -M -& -& -& -8 -& -& -8 -8 -8 -M -8 -% -d -a -M -& -% -% -B -% -% -% -% -% -8 -a -% -8 -& -# -b -* -8 -8 -& -M -W -# -* -a -b -a -* -# -o -a -k -d -w -d -a -a -o -h -k -k -q -w -p -m -c -r -J -O -m -d -C -J -] -[ -[ -] -_ -- -- -- -- -- -- -- -- -- -_ -+ -< -> -i -l -; -u -n -Q -w -q -w -p -a -a -h -q -a -h -C -Z -k -h -# -a -a -a -h -d -Z -d -O -* -h -o -a -o -o -W -W -* -# -a -a -a -W -& -& -& -& -& -& -& -W -& -& -M -# -W -& -W -W -O -k -o -* -M -M -8 -h -W -W -b -B -& -M -W -q -o -k -Z -0 -t -t -# -o -& -Z -O -O -w -m -q -X -z -v -M -M -k -M -] -& -1 -M -( -o -# -W -b -k -p -w -J -C -Z -Q -b -o -o -# -# -* -# -* -* -o -* -a -a -h -Q -O -p -0 -q -w -o -p -b -b -/ -J -h -d -a -a -a -d -a -p -w -q -w -Z -J -U -f -t -O -Q -r -j -| -( -| -( -( -( -) -( -) -) -) -1 -1 -1 -{ -{ -} -} -[ -[ -_ -v -u -Q -w -m -m -Z -p -d -d -d -a -a -# -# -o -* -# -M -# -M -8 -8 -M -W -W -W -& -8 -8 -& -8 -8 -& -# -8 -8 -a -# -M -W -% -% -% -% -% -% -% -8 -a -8 -& -& -& -h -# -M -M -& -W -& -M -# -o -k -h -o -# -# -a -h -b -w -p -h -a -a -h -k -h -k -Z -q -p -J -j -X -\ -q -q -c -C -v -_ -] -[ -- -- -_ -_ -_ -_ -_ -_ -- -_ -~ -{ -u -Q -0 -C -U -X -X -c -Y -q -w -b -k -a -b -m -p -b -w -d -{ -h -a -k -J -o -* -k -a -a -m -m -o -o -o -o -a -o -W -W -* -* -a -a -o -W -& -& -& -& -& -& -& -W -& -w -W -W -W -& -W -& -q -d -a -* -o -# -M -8 -& -# -& -B -% -h -b -M -o -b -0 -% -| -\ -a -Q -p -q -O -Q -U -Q -z -z -z -b -# -# -h -& -] -W -{ -M -( -o -# -# -h -m -q -q -C -L -Q -b -a -# -# -M -M -M -o -o -q -o -o -o -a -a -a -h -C -h -0 -L -o -a -Q -b -} -h -h -b -b -a -a -a -a -k -q -w -q -U -X -f -t -n -J -0 -O -O -0 -X -n -j -r -x -t -) -1 -1 -1 -{ -{ -{ -} -} -} -[ -[ -] -? -Y -( -Y -Z -m -Z -Z -Z -p -d -d -h -b -* -# -# -o -* -# -# -# -8 -8 -& -W -& -W -& -8 -8 -& -8 -& -W -p -h -M -a -# -M -W -% -% -% -% -% -% -% -# -8 -8 -& -M -b -M -& -& -& -W -& -& -M -# -h -k -a -* -# -a -h -h -w -w -p -a -a -o -h -h -k -O -m -b -Q -x -r -Z -X -p -w -) -- -_ -_ -? -_ -_ -_ -_ -_ -< -j -Q -Z -m -w -m -Z -O -0 -Q -C -L -J -Y -X -w -Q -b -k -k -0 -b -q -Z -Q -k -_ -x -b -k -u -o -o -o -o -* -# -* -Z -# -h -o -a -a -a -W -W -* -o -a -h -W -& -& -& -& -& -& -& -& -& -k -p -o -* -* -& -& -o -M -b -d -* -% -M -M -L -W -& -M -B -@ -M -p -k -& -m -* -* -a -a -* -Z -Y -C -0 -Q -U -J -X -X -Q -* -b -* -a -W -] -k -} -W -( -k -o -o -h -p -Z -w -L -Q -Q -Z -p -# -W -* -o -# -* -* -* -b -a -a -o -# -a -h -z -Z -0 -L -b -o -a -p -1 -w -k -b -b -a -a -a -k -b -w -w -0 -v -j -f -( -J -Q -0 -0 -0 -0 -m -0 -Z -Z -0 -O -L -C -u -t -\ -[ -} -} -[ -[ -] -] -? -? -_ -C -/ -O -Z -Z -O -Z -q -p -p -k -h -* -# -# -o -a -# -M -# -M -8 -8 -M -W -& -& -& -& -& -& -8 -W -o -q -& -o -# -# -M -% -% -% -% -% -% -% -8 -8 -W -* -M -k -8 -8 -8 -& -& -& -M -# -o -k -a -a -# -# -a -h -p -w -p -o -a -o -h -h -k -b -Z -q -b -X -r -O -p -z -d -0 -+ -+ -+ -_ -_ -_ -~ -[ -O -O -q -p -w -p -q -p -w -Z -O -0 -O -Q -C -C -X -c -q -p -q -d -q -q -J -d -a -C -Q -Z -d -b -k -z -a -o -h -# -* -# -b -q -o -* -h -a -o -a -W -W -M -o -a -o -W -W -W -& -& -& -& -& -& -& -& -b -a -a -M -& -8 -* -p -* -* -o -8 -& -8 -* -p -M -M -B -B -h -q -k -q -W -Z -* -W -# -b -Z -X -r -w -Q -C -L -Y -c -C -# -M -* -a -M -] -h -} -W -) -b -* -o -# -d -q -w -0 -L -m -L -w -M -b -# -M -* -M -# -* -o -a -a -a -Q -a -h -Q -L -Q -O -0 -o -o -q -) -f -k -b -b -a -o -a -h -b -m -m -J -j -/ -{ -J -Z -Z -0 -0 -Z -Z -0 -O -O -0 -O -0 -0 -q -p -p -Q -O -C -r -[ -] -] -? -- -_ -_ -< -q -c -Z -Z -O -O -Z -q -p -d -a -o -# -# -M -a -o -# -# -# -& -8 -& -W -W -& -& -& -& -& -& -8 -k -b -M -a -# -# -W -% -% -% -8 -% -% -% -& -M -M -W -a -b -8 -8 -& -& -& -& -M -# -a -k -a -# -M -o -a -b -w -w -p -o -o -a -h -h -k -O -q -b -O -r -C -? -d -X -p -t -_ -+ -> -f -0 -m -w -d -q -Z -m -q -q -w -d -p -q -Z -O -0 -0 -L -J -X -O -r -q -p -C -z -m -q -J -w -p -h -( -p -k -k -b -0 -0 -# -m -* -p -b -p -# -o -w -q -o -a -a -# -M -M -a -a -# -& -& -W -& -& -& -& -& -& -& -W -a -h -a -o -8 -* -# -p -W -* -# -# -M -Z -% -a -a -0 -Z -0 -b -* -8 -w -b -p -0 -w -b -p -Z -c -c -( -X -m -L -0 -J -k -# -M -# -a -# -} -W -} -W -( -W -k -o -k -o -p -q -Z -Q -0 -0 -w -# -h -h -a -* -# -# -* -o -a -o -a -h -k -h -J -O -0 -Z -O -X -o -o -1 -\ -b -b -b -a -o -a -a -q -Z -0 -x -| -( -C -0 -O -m -w -m -O -0 -0 -0 -0 -0 -w -m -0 -0 -m -Z -0 -0 -0 -m -w -Z -O -m -| -> -+ -+ -\ -f -J -Z -Z -O -O -m -p -p -k -o -o -# -# -* -a -# -M -# -M -8 -8 -W -M -# -* -M -W -& -& -M -h -h -* -a -* -* -h -8 -8 -% -% -8 -% -B -o -W -8 -* -b -h -8 -8 -8 -8 -& -W -M -* -h -a -a -M -# -a -h -p -w -p -a -a -o -h -h -k -m -m -d -b -c -j -! -[ -d -x -O -> -x -Q -w -w -w -m -m -q -Z -m -m -Z -m -q -q -p -q -Z -O -C -f -{ -[ -[ -C -j -q -p -Y -C -m -m -w -Z -0 -b -/ -p -a -Z -Y -k -Y -O -q -k -q -* -o -o -w -m -m -a -a -o -o -W -M -a -h -W -& -W -& -& -W -& -& -& -W -& -W -M -a -a -a -M -* -# -q -# -o -# -# -* -a -k -& -M -a -* -* -p -% -% -p -q -b -q -m -k -p -O -Y -U -( -a -h -k -k -m -a -W -M -h -a -* -[ -a -{ -W -( -W -W -o -k -k -k -q -d -Z -Q -Q -Z -o -* -a -o -o -a -# -* -* -o -o -o -a -k -k -U -O -C -Q -0 -O -o -o -a -f -d -b -d -a -a -o -a -Q -L -z -| -) -( -] -( -x -U -O -m -Z -O -0 -0 -Z -w -q -w -m -m -Z -m -0 -0 -0 -0 -0 -0 -Q -p -0 -O -0 -w -| -L -v -Q -Z -O -O -m -q -q -b -o -o -# -# -# -a -* -# -# -# -& -8 -M -* -b -d -a -M -& -& -& -# -W -M -o -k -o -a -8 -8 -8 -& -8 -8 -# -# -h -d -8 -& -8 -8 -8 -8 -8 -& -M -# -h -k -a -# -M -o -a -b -w -w -h -a -o -o -h -k -h -Z -p -b -m -j -0 -L -C -d -q -b -q -q -q -q -p -p -p -w -m -m -m -m -m -m -w -v -? -< -~ -~ -+ -+ -+ -+ -< -Y -t -q -q -v -C -w -p -q -q -b -Q -d -p -* -Z -k -m -q -Z -* -a -* -* -* -* -a -b -h -a -k -o -# -M -M -# -W -W -& -W -& -& -& -W -& -W -W -& -W -* -a -h -W -o -* -M -q -# -# -W -# -8 -W -p -% -& -% -p -p -k -& -q -d -q -O -p -w -k -d -U -u -t -n -L -d -q -q -* -# -& -# -a -a -b -} -0 -} -# -t -W -W -a -* -o -k -b -m -w -Z -L -O -w -a -o -o -a -o -a -# -o -a -o -o -h -k -L -X -J -Z -b -b -b -k -o -o -a -Y -d -b -k -o -d -q -C -Y -v -) -+ -! -< -+ -- -? -? -? -? -? -? -+ -_ -| -X -0 -O -O -0 -O -w -q -O -Q -0 -O -m -Z -0 -0 -O -Z -Q -L -d -Y -O -O -O -Z -m -q -d -* -o -o -* -# -* -a -# -# -# -& -& -W -b -0 -L -w -* -W -& -& -& -& -M -o -o -k -a -8 -W -8 -& -8 -8 -a -h -h -* -8 -& -8 -8 -8 -8 -8 -& -M -# -h -k -a -# -# -a -h -q -w -p -o -a -o -a -k -h -Z -w -b -b -U -X -p -b -b -b -q -p -m -Z -m -m -m -q -p -q -d -X -/ -[ -> -> -> -> -> -< -~ -~ -+ -+ -_ -- -Q -c -j -w -w -q -L -m -p -q -w -d -} -k -w -d -p -a -0 -o -o -o -p -p -p -# -# -( -# -k -q -k -a -& -M -W -M -W -& -W -W -W -W -W -W -W -& -W -a -a -a -a -h -& -o -o -W -* -o -M -W -W -& -# -d -p -W -d -q -p -8 -8 -0 -b -w -w -m -q -w -m -c -\ -j -v -L -b -q -m -* -# -M -Z -J -Q -p -{ -f -) -M -r -M -W -h -b -o -a -m -Z -k -O -C -m -O -m -o -p -o -o -a -W -M -a -d -a -k -J -u -v -Y -Z -h -h -a -b -o -o -o -0 -b -k -b -o -a -b -m -J -r -u -c -Y -Y -u -| -~ -; -I -i -> -> -i -> -> -> -> -_ -_ -[ -r -J -Q -O -0 -Q -m -m -0 -Q -m -0 -0 -0 -m -q -v -J -O -O -O -Z -q -p -a -o -o -o -# -# -a -o -# -# -# -& -# -m -: -O -Q -h -M -& -& -& -& -M -# -o -o -# -& -M -8 -& -& -& -# -* -8 -M -# -8 -& -8 -% -8 -& -W -M -o -k -a -# -# -o -h -k -w -w -o -o -o -a -k -h -b -m -b -b -0 -z -Z -k -k -b -p -m -Z -Z -Z -w -p -m -\ -) -< -> -> -> -> -> -i -< -- -[ -\ -X -Q -U -c -v -x -w -C -j -w -d -p -p -Z -q -q -p -c -f -a -p -d -d -d -h -w -U -w -* -k -a -h -p -- -h -o -a -d -a -o -M -W -W -W -W -W -W -W -W -M -# -W -W -W -a -o -o -a -# -& -o -M -M -m -Z -M -o -* -M -% -& -a -h -p -p -q -8 -% -Z -& -d -q -p -b -p -q -- -Y -Q -O -M -a -k -o -M -Y -# -v -L -C -p -t -u -| -Z -c -M -M -h -h -a -b -q -m -# -q -Q -Z -Q -d -Z -o -a -a -o -o -h -U -Q -m -p -k -f -k -U -U -w -b -d -k -d -o -o -a -O -k -h -o -o -* -Q -U -J -c -X -c -X -Y -U -U -U -U -U -U -U -Q -C -t -< -" -I -l -i -> -> -i -> -+ -- -j -Y -C -O -0 -0 -w -O -Q -Q -0 -z -C -O -O -Z -m -p -b -a -a -a -* -# -o -a -# -# -# -W -o -Z -; -; -l -Z -M -& -& -& -& -& -W -& -o -o -o -* -& -& -& -8 -o -& -8 -W -# -M -8 -8 -8 -8 -& -M -# -a -a -o -# -# -a -h -q -q -d -o -o -o -a -k -h -Z -p -b -d -Y -q -p -k -p -b -Z -Z -m -q -u -? -i -> -> -< -> -< -< -] -j -J -0 -J -J -C -J -J -J -X -f -] -i -J -J -f -q -d -q -q -Y -w -p -q -b -Y -h -p -q -v -h -v -o -v -* -# -# -# -# -0 -[ -b -h -q -p -b -# -M -W -W -W -W -W -W -W -W -h -# -W -W -M -o -o -o -a -& -& -o -W -# -M -O -& -m -8 -W -M -M -b -d -p -p -$ -& -% -m -h -k -b -k -b -b -h -Y -q -Z -m -0 -# -@ -# -M -M -U -J -O -k -f -z -x -x -z -J -# -M -a -M -* -h -w -# -o -q -0 -0 -0 -* -* -m -Q -h -h -d -j -a -m -d -k -) -k -p -J -J -d -p -b -b -q -* -o -o -a -| -h -o -o -* -* -c -x -v -u -n -v -c -X -X -U -J -J -U -U -U -U -U -U -U -U -U -U -Q -c -? -, -I -i -> -> -> -+ -_ -r -z -z -Q -Q -Z -j -Y -O -O -O -Z -w -p -* -h -h -o -# -# -a -o -# -M -# -h -Q -I -" -. -q -# -W -& -& -& -& -W -& -& -W -a -o -& -& -& -& -a -k -h -& -# -# -& -8 -8 -& -& -M -* -k -a -# -# -o -a -b -w -m -* -o -o -a -k -h -p -m -b -b -0 -w -m -p -k -q -p -w -X -) -< -> -> -> -> -> -< -j -0 -U -U -J -C -U -v -f -_ -> -~ -~ -< -< -i -: -/ -c -f -k -w -q -q -m -q -q -\ -k -b -J -* -h -L -Z -M -o -b -* -* -# -# -q -r -Z -h -# -h -b -k -a -M -W -W -W -W -W -W -W -M -d -# -W -W -W -& -a -o -a -8 -W -W -W -# -# -O -O -a -* -* -# -W -W -d -d -w -$ -& -% -Z -@ -h -k -m -Q -k -p -Q -Z -q -p -d -a -# -o -# -U -Y -| -b -b -L -z -( -0 -v -0 -# -M -o -M -M -m -# -* -# -a -m -Z -w -* -# -* -p -0 -k -a -h -o -C -h -t -h -k -d -L -b -b -w -k -b -Z -Z -o -o -a -a -d -o -o -o -* -X -n -] -j -t -j -x -x -x -x -x -x -x -x -r -n -Y -J -U -U -U -U -U -U -U -Y -Y -L -Y -] -; -> -> -> -i -< -~ -{ -n -0 -Y -J -0 -0 -Z -q -q -o -k -k -h -* -# -a -o -# -# -* -b -Q -I -. -` -w -# -W -& -& -& -& -W -& -& -W -a -a -& -& -& -& -8 -% -W -k -& -M -M -8 -8 -& -M -# -a -k -o -M -# -a -h -q -q -d -o -o -a -h -k -k -Z -p -k -Z -J -q -b -p -w -f -\ -+ -~ -< -> -i -] -Y -L -J -J -L -Y -j -_ -< -~ -} -j -{ -< -< -> -< -> -i -l -) -" -) -u -q -m -q -p -w -p -m -b -? -k -J -a -q -b -b -0 -O -d -q -* -o -q -k -d -w -* -* -h -p -h -# -M -W -W -W -W -W -M -M -o -a -# -W -W -W -W -W -o -o -8 -W -W -# -# -# -M -0 -0 -w -d -# -& -8 -# -p -w -Q -w -8 -Z -k -d -b -q -a -# -p -p -Z -Z -d -b -& -m -q -# -x -x -f -b -O -L -J -X -_ -( -w -m -# -* -M -M -M -b -0 -b -w -h -b -d -o -* -* -o -o -L -k -a -p -b -\ -k -k -h -k -k -L -q -Y -* -h -p -C -w -o -a -a -a -k -o -h -a -O -r -/ -{ -< -v -n -/ -x -c -v -u -n -n -x -r -r -r -r -j -j -r -x -n -c -U -U -Y -Y -Y -Y -Y -Y -C -U -] -l -> -i -! -{ -U -J -Q -O -w -w -k -k -k -h -o -* -M -h -o -# -# -d -Q -I -. -Y -q -# -W -& -& -& -& -W -& -& -# -a -a -# -& -& -& -& -8 -8 -k -b -# -& -& -& -W -M -# -h -a -# -M -o -h -k -w -m -* -o -a -h -k -k -m -m -b -k -J -b -p -0 -O -0 -- -_ -+ -< -1 -X -C -C -L -X -t -+ -< -< -~ -< -+ -x -t -n -v -c -u -| -> -i -! -l -r -, -} -/ -w -m -p -b -w -X -b -k -d -b -k -k -* -b -o -0 -Q -q -M -X -O -b -b -k -k -# -* -a -W -W -M -W -W -W -M -M -M -M -M -o -* -# -M -W -W -W -W -o -o -& -W -M -* -# -M -W -d -k -O -w -p -M -W -M -d -Z -0 -0 -a -p -W -h -k -a -a -a -k -h -d -w -p -* -W -q -o -w -r -n -a -b -Z -C -Q -x -- -/ -| -m -* -# -M -M -M -p -b -k -O -O -k -w -* -a -* -* -* -* -L -a -b -n -a -h -h -k -d -U -X -k -k -z -Q -k -m -b -o -o -a -a -a -o -a -h -m -n -/ -O -> -/ -n -( -t -U -J -u -U -Y -X -Y -U -c -- -| -n -u -j -j -j -j -j -j -j -v -Y -Y -Y -Y -Y -Y -Y -U -U -i -- -Q -Y -Q -0 -m -w -d -o -b -k -a -* -# -a -* -* -o -b -0 -! -" -L -d -M -M -& -& -& -& -& -& -& -M -h -* -# -& -& -& -& -8 -& -% -* -b -& -& -& -W -M -o -k -o -# -# -a -h -q -q -d -a -o -o -k -k -q -Z -d -k -Z -b -b -m -L -L -Q -+ -c -J -C -J -Q -f -< -~ -< -< -< -< -< -< -< -x -c -\ -j -f -r -r -} -< -> -! -l -; -) -, -t -m -m -d -d -w -O -b -b -b -k -b -[ -k -k -m -o -# -c -m -b -* -* -* -o -o -* -* -M -M -M -M -M -W -W -W -M -M -M -M -* -* -M -M -W -M -# -* -o -o -& -& -M -* -o -% -* -# -* -q -q -a -* -& -% -W -w -p -p -p -B -M -h -h -a -h -a -h -o -a -k -o -W -M -M -M -O -v -v -r -m -Q -Z -C -c -} -Y -Z -( -o -# -M -M -M -# -* -o -o -J -a -k -w -Z -o -o -o -o -a -b -h -O -a -k -k -b -C -Z -b -h -a -c -0 -U -h -b -X -a -o -a -a -o -a -a -k -Z -f -z -i -< -\ -\ -/ -u -U -z -Y -Y -Y -X -c -c -~ -_ -_ -+ -~ -~ -< -i -- -r -n -j -j -j -f -j -r -X -Y -Y -Y -Y -Y -Y -j -Y -Q -Z -w -q -a -b -k -h -o -* -# -h -o -# -k -m -l -C -0 -k -M -M -W -& -& -& -& -& -& -# -h -o -# -& -& -& -& -& -8 -8 -& -# -W -W -W -M -M -a -h -# -# -o -a -k -w -Z -o -a -o -h -k -b -O -w -k -d -p -p -q -q -J -0 -z -J -J -J -_ -> -< -< -< -< -< -< -< -< -< -i -X -c -} -] -] -] -? -> -+ -I -I -( -_ -~ -I -: -f -Z -Z -d -p -q -0 -p -b -b -k -p -\ -k -h -k -Z -p -k -* -a -* -* -* -* -b -# -M -M -M -M -M -M -M -M -M -M -M -W -M -# -# -M -M -M -M -* -* -o -o -a -a -* -* -o -8 -@ -* -* -# -* -# -# -# -M -% -W -8 -q -m -% -o -o -h -a -b -o -d -* -o -a -k -& -M -M -M -v -c -c -k -p -0 -C -J -z -J -b -p -C -* -* -M -M -M -M -# -z -U -Y -a -o -o -d -Z -p -o -o -o -a -a -k -a -h -d -J -q -q -h -h -z -X -p -k -w -b -q -J -o -o -a -a -a -h -k -C -t -~ -m -I -) -( -/ -c -Y -U -X -Y -X -Y -z -c -~ -+ -+ -< -< -< -< -> -> -> -> -< -> -! -1 -v -j -f -f -j -f -j -X -Y -Y -Y -Y -Q -m -w -h -h -k -h -o -o -# -k -o -# -o -p -Z -Z -q -o -W -M -W -& -W -W -W -& -W -h -b -o -# -& -& -& -& -& -W -M -# -# -M -o -W -M -# -h -h -# -# -o -h -b -w -p -o -o -a -h -b -m -0 -d -k -p -k -J -q -q -m -O -U -u -! -< -> -> -> -< -< -< -< -< -< -< -< -U -v -Y -} -[ -] -f -+ -< -/ -I -, -/ -_ -> -l -; -r -0 -Z -p -p -q -0 -d -a -p -O -f -b -k -O -b -) -o -a -p -b -o -o -o -o -h -M -M -M -M -M -M -M -M -M -M -M -M -M -M -M -M -M -M -M -M -o -* -o -o -a -# -% -% -8 -& -W -# -* -* -# -M -# -M -& -M -% -M -W -B -B -* -a -a -a -o -h -a -* -M -o -8 -M -M -M -q -U -U -v -# -h -w -C -z -Q -* -a -O -h -# -a -M -M -M -M -# -J -o -O -o -k -a -p -a -p -q -a -o -o -a -k -a -k -C -m -b -h -a -h -m -Q -k -f -Q -b -k -L -L -a -a -o -a -h -h -p -/ -> -q -< -/ -| -X -X -x -C -z -u -f -f -c -z -} -~ -< -< -< -< -< -> -> -> -> -> -< -< -> -> -> -l -] -v -r -r -j -j -u -n -z -L -Z -m -k -o -b -k -a -a -# -k -a -o -* -k -p -p -k -# -W -M -M -& -W -& -W -M -a -h -a -o -# -& -& -& -& -W -8 -& -& -o -o -W -W -M -o -a -# -M -* -a -k -q -m -o -o -o -h -k -m -Q -w -b -q -k -k -C -q -) -Y -! -< -> -> -> -> -> -> -> -< -< -< -< -> -> -> -Y -v -X -n -t -/ -] -< -- -_ -~ -I -! -- -! -> -; -u -J -Z -w -p -w -O -Z -q -b -Z -( -b -w -w -k -X -a -q -p -b -b -o -* -a -# -M -M -M -M -M -M -M -M -M -M -M -M -M -W -M -M -M -M -M -M -# -* -* -* -% -W -* -M -W -& -B -% -* -# -M -M -W -W -8 -M -W -% -M -k -B -# -* -a -8 -o -h -a -M -M -h -b -W -M -M -0 -X -z -Y -M -o -q -O -v -o -o -Q -a -* -M -a -M -M -M -M -M -C -* -z -o -a -o -a -* -C -a -p -a -o -h -k -a -Q -q -q -X -b -d -k -Q -J -a -J -w -J -b -k -0 -k -a -o -a -k -b -b -| -+ -- -| -) -c -t -\ -\ -L -C -J -Y -Y -X -z -c -> -> -< -> -> -> -> -> -> -> -> -> -> -> -> -> -i -! -! -l -I -l -v -j -C -c -X -0 -Z -b -a -b -k -k -a -# -# -k -o -# -o -h -a -* -M -W -W -M -& -W -W -W -M -h -a -a -a -M -& -& -& -& -8 -8 -# -* -o -a -W -M -M -a -a -# -# -o -h -b -w -b -o -* -o -a -b -0 -Q -d -p -w -b -k -Q -m -~ -+ -< -> -> -> -> -> -> -> -> -> -< -> -> -> -> -> -j -z -X -n -\ -( -] -{ -t -? -[ -- -? -_ -! -I -; -u -X -Z -m -p -w -p -m -w -b -z -0 -b -q -1 -h -a -m -m -a -a -d -q -0 -M -M -M -M -M -M -M -M -M -M -M -M -M -M -M -M -M -M -M -M -M -M -M -W -* -o -B -W -o -W -W -& -# -B -# -* -# -M -# -# -# -o -W -W -& -M -w -o -W -a -& -o -# -# -o -k -o -d -W -M -d -J -Y -U -a -# -b -h -p -b -* -M -# -* -# -# -M -M -M -M -# -M -# -W -m -# -o -o -k -a -a -m -d -q -a -a -* -w -p -d -h -a -a -h -h -p -J -O -w -Z -* -b -b -k -0 -o -o -a -k -b -h -\ -_ -+ -m -v -z -t -\ -\ -Q -C -J -X -X -X -v -z -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -i -! -! -l -l -l -I -f -Y -r -X -L -O -p -o -b -b -k -k -o -# -k -a -* -* -* -* -M -M -W -W -# -& -& -W -W -o -h -h -h -h -# -& -& -& -& -M -h -W -# -a -M -W -M -# -h -o -M -# -o -k -q -m -* -* -o -a -k -Z -Q -p -d -0 -k -h -k -O -O -: -< -> -i -> -i -i -i -> -> -> -> -> -> -> -> -> -! -z -c -J -{ -] -- -? -? -~ -l -l -! -? -> -: -: -: -u -c -m -Z -p -q -w -w -q -k -[ -q -L -X -) -b -h -h -k -b -p -m -w -Z -M -M -M -M -M -M -M -M -M -M -M -M -M -M -M -M -M -M -W -M -M -M -M -M -* -* -* -W -M -W -W -W -* -B -# -& -M -M -* -# -M -W -* -b -W -W -& -& -M -* -a -h -M -# -b -o -w -Z -m -M -m -C -U -M -M -k -M -h -# -o -# -q -* -# -M -M -M -M -M -M -M -M -# -M -# -* -* -* -a -a -C -a -k -w -b -q -h -p -h -a -Q -O -h -h -h -k -X -c -C -a -U -C -b -b -k -w -o -o -h -b -d -Q -+ -_ -q -) -c -\ -| -\ -Q -C -U -X -X -X -z -z -> -> -> -> -> -> -> -> -i -> -i -i -i -! -i -i -i -! -I -I -I -I -I -f -u -Q -X -J -O -p -k -k -b -b -k -a -* -# -k -# -# -# -# -W -W -M -W -# -W -W -& -W -# -h -p -k -q -o -& -& -& -& -# -& -M -M -o -W -W -M -* -a -# -# -* -h -k -q -d -# -* -o -a -b -Q -Z -p -m -0 -d -h -p -0 -r -< -> -i -> -i -i -i -> -i -i -i -> -> -> -> -i -> -! -c -Y -L -{ -] -? -v -- -> -j -l -l -| -~ -; -: -: -v -v -m -O -p -w -w -m -q -m -x -v -k -Y -m -} -b -k -k -b -k -0 -# -w -M -M -M -M -M -M -M -M -M -M -M -M -M -M -M -M -M -M -M -M -M -M -M -* -* -* -o -W -W -W -W -# -B -o -# -8 -M -W -# -* -M -M -o -& -M -& -W -W -M -* -# -& -& -M -L -k -Z -Z -p -m -O -C -q -M -* -k -M -* -# -o -* -# -* -M -M -M -M -M -M -M -M -# -# -M -o -# -* -a -Z -h -a -/ -k -a -a -p -d -k -a -Q -z -J -o -h -k -p -X -h -a -a -* -m -b -k -k -b -* -* -o -d -d -d -+ -_ -j -0 -X -? -t -/ -Q -C -U -X -X -z -z -v -i -> -> -i -> -i -i -i -i -i -i -! -! -! -! -l -! -l -l -l -I -; -I -x -t -z -f -z -0 -q -d -* -b -d -b -k -a -# -a -a -# -M -# -W -W -M -M -# -# -W -W -M -M -a -k -p -m -d -& -8 -# -h -% -& -* -* -o -& -M -# -a -a -# -# -# -k -q -w -a -* -o -a -k -Z -Q -d -w -Y -d -q -k -p -w -< -> -> -i -! -i -i -i -i -i -i -i -i -i -i -> -i -i -t -z -Y -Q -{ -_ -- -] -- -> -~ -i -I -i -~ -, -: -, -X -u -Z -Z -p -w -Z -Z -q -Z -c -c -Y -p -q -< -Z -h -a -q -X -h -q -# -M -# -# -# -M -M -M -M -M -M -M -M -M -M -M -M -M -M -M -M -M -M -M -# -# -* -o -# -W -W -W -# -B -# -# -W -8 -M -# -o -k -k -a -* -8 -* -* -o -M -# -# -& -M -M -Z -O -0 -Q -p -Z -Q -Q -M -M -* -b -o -k -# -o -h -o -# -M -M -M -M -M -M -# -M -M -# -# -# -# -* -Z -Y -n -o -h -h -a -a -k -k -h -J -n -v -U -J -Y -h -q -0 -m -a -a -a -x -h -C -Y -h -* -a -o -d -d -b -b -i -| -w -v -_ -z -\ -L -L -U -U -z -z -z -v -> -> -> -i -i -i -i -! -! -! -! -l -l -l -l -l -l -l -l -I -I -I -I -! -f -X -+ -X -C -m -p -k -k -d -b -b -h -* -M -a -# -# -M -M -W -M -M -# -# -M -M -M -M -o -o -m -Q -0 -p -M -a -8 -8 -& -# -M -W -W -M -* -h -* -# -# -h -k -w -d -* -* -o -h -p -Q -m -Z -X -Z -b -q -b -v -Z -! -i -i -! -! -! -! -! -i -! -i -i -i -i -i -i -i -! -r -z -C -v -v -u -n -j -f -n -n -x -/ -/ -\ -, -: -: -J -x -O -O -p -w -Z -m -w -q -Y -z -Y -p -p -k -< -b -a -* -q -k -a -# -# -M -M -M -M -M -M -M -M -M -M -M -M -M -M -M -M -M -M -M -M -M -M -# -# -* -* -a -W -W -# -% -* -# -# -M -W -# -# -a -o -# -a -o -* -8 -h -b -h -k -p -* -W -* -b -0 -u -J -O -J -Q -& -W -M -M -a -d -a -a -* -# -M -M -M -M -# -M -* -M -# -M -# -# -# -# -# -o -C -Q -J -v -n -d -a -b -k -k -X -f -r -X -U -L -Z -U -Y -q -v -h -o -a -o -z -b -0 -u -h -p -# -b -b -b -b -b -( -m -/ -- -X -| -L -Q -J -U -X -z -c -c -i -i -i -i -! -! -! -! -! -l -l -I -I -I -l -I -I -I -I -I -I -; -; -; -f -X -; -[ -Q -Q -q -b -h -p -p -b -k -a -o -* -a -# -M -M -W -M -M -# -* -M -# -# -* -h -a -w -w -q -h -k -# -8 -& -& -# -# -W -W -M -a -a -# -# -* -h -k -w -a -* -o -o -b -Z -L -p -J -z -k -k -m -d -v -X -< -i -i -! -! -! -! -! -! -i -i -i -+ -) -i -! -! -I -t -X -v -x -j -t -( -) -j -j -f -/ -\ -| -{ -I -: -: -L -j -0 -0 -p -w -Z -m -q -p -X -X -X -q -m -w -} -b -Z -X -h -* -# -# -# -# -# -M -M -M -M -M -M -M -M -M -M -M -M -M -M -M -M -M -M -M -M -# -* -o -* -* -M -M -# -% -# -# -# -a -M -* -# -* -* -* -k -a -W -# -* -p -Q -O -Z -O -Q -Q -L -C -L -U -C -0 -o -& -M -M -M -W -p -h -b -* -# -M -M -M -M -M -M -# -# -M -# -k -# -# -# -# -# -L -Q -X -Y -c -Y -r -h -h -q -c -j -v -Y -v -u -L -p -J -b -Z -k -a -a -a -w -c -f -n -p -Y -X -Y -p -b -k -b -d -J -Z -+ -X -\ -0 -C -Y -X -z -X -z -v -! -i -! -! -! -! -l -l -l -I -; -I -I -I -I -I -I -I -I -I -I -I -; -; -f -X -- -< -Q -L -m -p -p -d -p -d -b -k -o -o -a -* -# -M -M -M -M -# -o -M -# -# -h -b -a -a -b -q -8 -b -M -M -W -# -# -# -& -W -* -h -* -# -# -* -h -q -d -o -* -o -h -q -L -q -L -z -O -k -k -m -X -| -_ -[ -i -! -! -! -! -! -! -! -! -! -i -] -\ -! -! -! -+ -x -Y -n -] -- -- -_ -? -+ -? -_ -? -_ -+ -> -1 -; -: -x -f -Q -0 -p -w -m -Z -m -q -c -n -U -x -m -p -X -t -b -x -# -* -* -# -# -# -# -# -M -M -M -M -M -M -M -M -M -M -M -M -M -M -M -M -M -M -M -M -W -W -# -* -* -# -o -M -o -# -# -* -M -M -# -# -a -0 -k -* -W -o -a -o -k -O -Z -m -0 -L -0 -O -0 -Q -Z -a -p -# -M -M -M -M -a -h -d -* -M -M -M -M -M -M -o -M -# -# -# -h -k -# -# -# -# -M -J -Y -c -c -L -U -a -U -p -v -t -n -r -L -r -C -Y -X -w -0 -a -a -a -h -k -d -b -d -h -d -p -w -O -U -J -d -k -b -Z -_ -n -\ -X -C -U -Y -Y -Y -U -X -+ -! -! -! -l -l -l -l -; -; -; -; -; -; -; -; -I -I -I -I -I -I -I -I -f -X -C -< -Y -Y -Q -Z -h -q -q -p -b -k -h -* -o -o -* -# -M -M -# -# -o -* -* -a -k -p -k -a -a -a -8 -% -a -& -W -# -# -M -& -W -* -o -# -# -# -h -h -w -b -* -o -o -b -Z -Q -p -X -O -Y -k -k -m -\ -X -! -< -i -! -! -! -! -! -! -! -! -! -! -1 -t -> -! -! -( -x -u -j -[ -- -} -_ -_ -- -_ -_ -| -- -+ -i -- -; -: -{ -j -J -Q -q -w -m -Z -0 -0 -c -u -q -Z -Z -p -j -u -Y -* -* -# -# -# -# -# -# -# -# -M -M -M -# -# -M -M -M -M -M -M -M -M -M -M -M -M -M -M -M -M -* -* -* -# -B -* -o -# -# -* -M -B -# -# -b -Q -k -h -h -& -& -a -h -h -m -O -0 -Q -0 -C -0 -w -m -a -* -p -a -M -M -M -* -q -d -M -M -M -M -# -M -a -a -# -# -# -# -o -k -o -# -# -# -# -O -J -v -f -Y -Z -0 -b -Q -b -f -n -O -L -Y -Z -v -Y -p -Z -k -a -a -h -h -b -b -k -h -d -Z -L -O -z -L -C -b -b -b -+ -) -\ -n -C -X -X -z -c -X -X -z -; -! -l -l -l -l -I -; -: -: -: -: -; -; -; -; -; -I -I -I -I -I -I -x -r -z -> -+ -O -J -O -d -b -q -q -p -d -k -o -* -o -o -# -# -M -# -# -o -a -o -a -k -p -b -a -a -a -8 -& -a -o -M -# -# -& -& -W -h -# -# -# -* -h -q -p -* -* -o -h -p -Q -p -U -c -C -m -k -k -L -{ -C -! -: -! -! -! -! -! -! -! -! -! -! -! -) -/ -- -! -! -u -v -X -n -j -x -| -x -[ -/ -? -_ -u -_ -1 -l -~ -; -: -_ -n -Y -Q -w -w -m -O -c -^ -C -m -Z -X -O -b -u -k -* -* -# -# -# -# -# -# -# -# -# -# -M -M -# -# -M -M -M -M -M -M -M -M -M -M -M -M -M -M -M -# -* -* -* -# -o -o -o -* -o -# -M -B -8 -& -# -k -* -k -h -# -# -* -* -# -b -Z -O -h -b -Y -0 -Z -d -# -d -k -M -M -# -h -M -p -m -M -M -M -M -M -o -a -h -M -# -# -# -a -h -* -k -# -# -# -o -X -J -| -u -k -J -d -C -C -m -n -m -0 -O -d -U -c -L -m -h -h -a -a -a -k -k -b -Y -Z -h -n -\ -v -f -< -n -k -b -b -/ -( -X -Q -Y -X -z -c -z -X -z -l -l -l -I -l -I -; -; -: -: -: -: -: -: -: -; -; -I -I -l -I -I -I -, -j -z -> -+ -Z -J -C -O -k -d -w -q -q -b -h -# -o -o -# -# -# -* -* -a -h -o -a -k -q -d -a -a -a -8 -o -M -o -# -# -# -& -& -* -h -* -# -# -o -h -m -b -o -o -o -b -m -Q -w -X -C -m -Z -b -d -c -] -c -i -l -! -l -! -! -! -! -! -! -! -! -! -/ -\ -} -! -! -( -v -z -u -j -j -1 -} -] -? -[ -] -? -+ -? -I -+ -l -: -- -v -Y -0 -q -w -L -n -l -` -v -J -m -0 -m -b -b -o -* -* -# -* -# -# -# -# -# -# -# -M -M -M -* -M -M -M -M -M -M -M -M -M -M -M -M -M -M -M -M -# -# -# -# -* -* -o -o -# -* -# -* -# -# -M -M -& -Q -0 -k -a -* -* -# -k -o -a -k -h -k -O -Z -& -L -* -b -# -M -# -k -M -M -h -b -# -M -M -M -# -M -k -o -# -o -# -M -b -h -* -h -a -# -# -k -O -u -n -X -0 -X -L -X -C -p -x -q -Q -Q -q -U -z -Y -m -k -a -a -h -h -b -h -b -c -0 -k -p -i -+ -{ -/ -U -j -k -b -b -| -t -0 -U -U -X -Y -Y -X -z -> -l -l -l -I -I -; -: -: -, -, -: -: -: -: -: -; -; -I -l -I -I -I -I -t -z -i -> -Z -q -U -L -0 -h -m -w -q -d -k -# -* -o -* -# -# -o -* -a -b -a -a -h -q -p -h -a -a -o -b -* -* -* -# -M -& -& -o -a -# -# -# -h -b -q -o -o -o -b -p -L -d -X -c -Q -w -m -p -Q -t -< -j -\ -l -! -l -! -l -l -l -l -l -l -! -! -( -\ -} -l -l -j -n -Y -x -? -] -{ -? -- -? -] -[ -] -+ -? -! -+ -I -: -? -v -Y -O -w -m -j -t -` -z -n -z -O -p -Z -0 -o -* -* -* -* -# -# -# -# -# -# -# -# -M -# -M -# -M -M -M -M -M -M -M -M -M -M -M -M -M -M -M -M -# -o -% -M -# -# -o -o -a -o -o -o -o -* -M -M -* -Q -# -Z -Q -0 -b -o -q -* -a -k -a -m -Z -& -M -L -k -* -W -W -* -W -M -M -W -m -* -M -M -M -* -o -h -* -M -d -* -* -o -a -* -a -a -k -* -b -L -I -l -U -O -O -u -0 -0 -L -Q -0 -Q -Z -Q -X -C -Y -0 -a -a -h -h -h -b -d -p -b -# -k -k -b -; -> -| -L -U -p -o -b -k -| -Y -X -X -c -c -c -X -X -v -< -l -I -I -I -; -; -, -, -, -, -, -: -: -; -; -; -I -I -I -l -I -I -f -z -! -> -J -m -C -J -0 -q -b -m -w -p -b -o -# -o -* -* -* -* -a -a -b -a -a -a -p -q -b -a -a -k -b -o -# -# -* -& -& -& -h -o -# -# -* -h -m -b -o -o -a -b -Z -0 -C -c -w -p -b -d -p -Y -[ -_ -- -n -l -l -l -l -l -l -l -l -l -l -l -l -( -\ -} -l -l -x -c -v -z -v -x -x -x -j -/ -r -j -j -} -] -! -< -; -: -] -v -X -O -m -m -U -C -j -n -u -X -w -q -0 -o -* -o -o -o -* -* -# -# -# -# -# -# -# -# -M -* -# -M -M -M -M -M -M -M -M -M -M -M -M -M -M -M -M -M -% -M -o -# -* -* -o -o -a -a -a -o -o -M -M -& -a -M -Q -# -b -p -k -a -k -d -k -Z -C -Q -k -J -U -o -# -M -M -& -W -W -W -W -q -* -M -M -M -o -# -a -o -# -# -# -o -# -a -o -h -k -b -h -p -O -I -I -c -Q -O -z -k -0 -0 -U -C -J -Q -J -X -C -C -w -a -h -a -k -k -b -m -p -Q -h -v -p -b -* -I -Y -U -X -Y -w -C -h -k -Y -z -z -z -z -c -c -c -x -r -l -I -I -I -; -; -, -, -, -, -" -, -, -: -; -; -; -I -l -l -l -> -f -X -r -> -J -Z -w -Y -J -Q -b -m -Z -m -p -a -# -* -o -o -o -o -a -a -d -d -a -a -b -w -p -h -h -b -* -* -M -* -# -& -& -* -a -o -# -# -o -h -w -b -o -o -b -p -L -k -z -X -p -d -k -d -Z -X -< -z -l -j -l -l -l -l -I -I -I -l -I -I -l -l -( -/ -\ -! -! -j -v -z -u -/ -j -n -j -/ -\ -j -j -r -t -} -! -i -; -: -] -c -c -0 -Z -m -Y -Q -r -j -u -X -p -p -o -o -o -a -d -o -o -* -* -# -# -# -# -# -# -# -* -h -# -# -M -M -M -M -M -M -M -M -M -M -M -M -M -M -M -M -M -M -* -* -* -& -* -a -a -a -o -* -o -* -* -b -# -# -M -o -* -o -k -h -p -q -b -0 -C -q -0 -J -& -W -M -M -M -W -W -W -W -W -o -* -M -M -# -# -# -h -* -# -M -o -o -# -o -* -h -a -d -p -p -I -n -X -O -Z -L -c -b -O -Q -L -J -C -C -0 -C -L -X -w -h -a -h -w -d -d -Q -p -d -h -k -b -C -a -" -^ -L -c -J -m -w -X -w -O -Y -X -z -c -z -c -u -n -f -} -I -I -; -; -: -, -, -" -" -" -, -, -, -: -; -I -I -I -l -l -: -/ -x -U -> -< -0 -m -C -U -Q -m -b -m -m -w -k -* -* -* -o -o -a -o -a -d -p -a -h -k -w -p -h -h -o -* -M -* -# -& -& -& -a -o -# -# -* -h -q -k -o -o -a -b -m -0 -U -c -b -d -d -O -q -C -r -! -L -l -( -l -I -I -; -; -I -I -; -I -I -l -; -( -/ -[ -l -l -x -Y -z -z -? -} -j -] -? -+ -{ -_ -? -] -} -! -! -: -: -? -c -u -L -O -Q -" -[ -c -r -r -u -w -o -a -o -h -k -k -o -* -* -# -# -# -# -# -# -# -# -h -U -8 -& -# -M -M -M -M -M -M -M -M -M -M -M -M -M -# -m -* -W -# -# -# -a -* -* -a -% -W -o -o -* -* -o -o -# -* -o -o -k -k -h -Z -Z -Z -Q -p -J -Y -n -W -W -W -W -o -W -W -& -W -W -a -* -# -a -M -# -# -* -* -# -# -# -* -h -# -* -h -b -q -q -0 -C -X -Y -Z -o -Q -z -a -Q -0 -L -Y -J -U -L -Q -Y -C -d -h -h -h -a -b -m -q -d -k -b -b -n -p -C -h -I -^ -C -Q -q -m -w -z -( -d -Y -c -X -Y -Y -c -u -j -j -I -; -; -; -: -, -" -" -" -" -" -" -, -: -: -; -I -I -l -! -I -z -f -z -> -> -0 -0 -p -Y -Y -L -w -p -O -Z -d -a -* -# -o -* -a -a -a -b -p -h -h -k -q -q -k -h -* -# -& -# -# -W -& -W -h -o -# -# -# -h -Z -k -o -o -b -d -L -k -z -X -X -b -d -O -O -J -[ -l -z -l -( -I -I -I -; -; -; -; -; -; -I -I -; -/ -/ -] -l -l -x -Y -z -c -< -? -f -} -? -_ -) -? -- -] -{ -l -! -; -, -_ -c -n -J -O -U -J -x -_ -^ -v -v -h -k -a -Z -b -b -a -o -* -* -* -# -# -# -* -# -# -* -] -\ -m -q -q -k -d -k -M -M -M -M -M -M -M -M -M -M -& -h -& -8 -a -M -% -a -# -* -* -& -* -o -o -o -# -o -* -* -o -o -o -k -k -W -q -Z -m -m -o -k -J -W -W -& -M -* -W -W -M -W -W -W -a -o -M -o -# -# -# -# -o -# -Z -* -o -a -# -* -a -b -q -b -O -c -Y -J -w -* -L -v -o -L -Z -Q -z -L -J -J -L -J -m -O -h -k -k -k -h -o -w -O -b -b -h -b -p -Z -O -h -! -C -C -p -Z -q -x -| -O -b -d -n -c -v -u -x -x -f -I -; -; -: -: -" -" -" -" -" -" -" -, -: -: -; -I -l -, -Y -U -Y -f -z -> -i -X -0 -q -X -X -C -Q -b -O -Z -b -k -* -o -o -o -h -a -a -k -p -h -h -k -q -q -k -h -# -W -M -# -# -W -W -o -k -* -# -# -h -k -p -o -o -o -b -m -0 -U -v -c -q -b -p -q -O -X -+ -I -f -\ -} -l -; -; -; -; -; -; -; -; -I -I -> -( -| -] -l -; -j -Y -u -c -f -] -\ -{ -\ -( -- -? -( -? -/ -! -> -; -; -~ -v -n -Y -0 -I - -Q -x -n -n -U -m -k -q -d -Z -h -o -o -* -* -* -* -* -* -* -k -b -\ -m -p -b -a -a -h -o -# -d -* -M -M -M -M -M -M -M -M -M -# -p -o -o -o -o -o -* -* -# -a -* -& -8 -a -o -a -% -% -o -o -b -k -k -q -w -q -w -k -w -O -k -M -W -W -& -o -M -& -& -& -W -W -M -# -o -o -# -# -# -# -# -* -O -* -# -* -a -o -o -a -w -p -w -J -c -0 -k -* -* -Q -a -p -L -C -L -Y -X -Z -0 -b -q -d -h -d -k -a -a -0 -p -h -h -k -b -k -r -m -J -b -_ -" -0 -m -w -Z -Z -f -J -q -d -p -L -X -c -u -j -j -I -; -; -: -: -, -" -" -" -^ -^ -" -" -, -: -; -" -u -n -U -U -X -f -z -> -> -J -U -m -b -u -X -C -q -q -0 -q -b -* -* -* -* -o -h -h -k -p -k -h -h -p -p -p -k -# -& -M -# -W -W -W -a -a -* -# -# -h -m -k -o -o -b -b -L -b -X -Z -p -p -b -Z -0 -0 -z -< -; -1 -- -> -I -; -; -; -: -: -; -; -; -; -I -- -( -( -] -l -, -n -z -J -] -? -} -u -1 -[ -{ -] -? -_ -\ -+ -! -> -: -> -> -r -x -c -L -J -Q -Y -r -] -C -o -b -q -b -d -Z -a -a -o -* -* -* -* -* -# -$ -+ -O -m -d -h -o -o -a -o -M -& -# -o -b -M -M -M -# -M -M -M -W -W -* -n -W -o -o -a -a -o -M -o -* -* -o -* -o -a -% -& -o -o -k -b -o -Q -Z -m -Z -# -X -$ -Q -M -W -W -W -M -W -M -& -W -W -W -# -o -o -o -M -# -# -# -o -* -k -M -W -w -d -a -o -a -o -w -d -m -C -Q -o -* -* -* -h -o -O -L -0 -J -b -b -k -p -k -b -a -0 -a -h -a -q -w -k -b -h -b -k -k -q -k -Q -a -! -! -m -w -q -Z -f -J -X -k -p -p -} -z -u -x -t -I -; -: -: -, -" -^ -" -^ -^ -^ -^ -" -, -^ -t -j -/ -/ -U -U -X -t -X -< -> -f -X -Z -Z -Y -c -J -0 -w -Z -Z -p -a -* -* -o -o -a -h -k -p -p -h -h -d -p -q -k -W -W -M -M -W -W -M -h -a -# -# -* -h -Z -b -o -o -b -m -Z -L -c -d -d -d -p -Z -0 -0 -c -~ -l -{ -~ -, -I -; -; -: -: -: -: -: -; -; -I -{ -/ -f -? -I -! -n -z -X -( -? -1 -v -{ -} -{ -[ -+ -_ -x -~ -i -< -: -- -l -f -n -r -Y -/ -) -c -z -Z -a -\ -p -p -k -b -k -a -o -o -* -* -* -* -* -& -/ -X -m -d -b -a -# -# -# -# -o -# -8 -8 -a -o -M -M -# -M -M -# -M -* -M -* -w -c -* -a -o -o -* -o -* -* -o -o -o -o -% -a -o -b -b -k -M -M -C -a -# -* -c -h -Q -M -& -& -W -& -W -W -M -M -W -M -M -o -o -a -# -o -M -M -o -a -a -* -k -w -k -a -a -o -a -o -d -b -Z -m -0 -* -* -* -k -h -Z -O -Z -q -b -a -b -q -Q -O -h -L -b -a -h -w -q -h -a -h -a -h -h -k -X -X -X -k -I -m -m -w -w -n -Q -Y -m -b -p -q -] -v -n -f -I -; -: -: -" -" -^ -^ -^ -^ -^ -^ -^ -} -( -1 -1 -r -u -U -U -X -f -X -x -> -> -X -0 -L -d -x -c -Q -O -w -O -q -h -* -* -* -* -o -h -k -q -p -k -h -b -d -p -k -M -& -M -# -W -W -o -d -a -# -# -k -k -h -o -o -k -d -Q -b -v -Z -d -b -m -J -U -0 -Q -v -l -\ -< -} -: -; -; -: -: -: -: -: -: -: -; -; -| -\ -{ -] -l -{ -u -X -J -X -j -Y -v -X -r -j -x -f -\ -Y -- -> -~ -; -[ -, -{ -n -j -v -( -x -u -! -j -w -m -O -b -L -k -h -a -a -o -* -* -* -* -M -} -Q -w -p -h -a -o -# -* -* -* -* -# -W -8 -8 -k -W -# -# -M -M -r -o -z -0 -& -M -o -B -o -o -o -o -* -* -o -* -o -* -* -% -a -k -b -b -# -# -# -b -b -k -* -$ -M -0 -M -M -W -W -W -W -W -M -# -M -o -o -o -a -a -W -p -Z -X -# -h -z -p -d -p -d -a -m -o -* -o -o -o -k -q -w -# -o -* -o -k -a -p -b -a -k -k -p -C -Z -Z -0 -0 -o -b -h -Z -h -a -a -a -o -a -a -h -J -k -Q -q -r -Z -w -Z -m -Y -0 -Y -Y -c -b -d -? -} -x -f -I -; -: -, -" -^ -^ -^ -^ -^ -^ -` -[ -+ -- -) -f -j -t -U -J -X -f -n -Y -> -> -U -L -Z -d -c -c -C -L -m -O -w -d -h -* -# -o -o -k -k -p -q -k -k -b -q -q -k -& -& -# -M -W -W -h -a -a -# -# -h -Z -k -o -o -b -p -O -C -u -X -b -b -Q -J -z -0 -L -n -, -z -l -{ -" -; -: -: -: -: -: -: -: -: -; -; -| -( -1 -] -} -/ -u -c -Y -r -r -X -c -u -r -u -j -j -t -U -< -i -+ -; -{ -" -! -u -f -r -) -u -n -x -a -c -z -q -p -Z -q -h -a -o -* -* -* -* -* -[ -C -J -q -b -* -o -o -* -M -* -o -o -* -a -8 -8 -M -b -# -M -# -B -W -o -b -* -M -# -o -a -a -a -a -o -* -o -* -o -* -o -a -% -% -b -b -* -* -# -# -p -d -p -a -% -M -O -M -W -W -W -W -W -M -# -a -# -o -o -a -a -a -h -L -Z -Y -* -m -Y -p -b -d -* -o -q -m -o -* -o -o -o -o -* -Z -* -* -* -o -a -k -a -a -k -w -U -C -0 -b -Q -Q -L -k -b -d -h -o -o -o -o -o -o -o -h -X -h -C -o -J -Z -J -0 -m -0 -J -Y -f -d -d -m -q -n -t -; -; -: -, -" -^ -^ -` -` -^ -^ -^ -l -_ -) -( -( -( -/ -U -U -z -z -t -X -> -i -Y -L -m -q -p -r -v -C -Z -O -O -p -o -* -* -* -o -o -k -p -q -k -h -b -q -p -k -& -W -# -W -W -W -h -a -o -# -o -h -q -k -o -o -b -0 -b -u -m -L -k -w -X -L -Y -0 -C -x -: -Q -! -1 -1 -l -: -: -: -: -: -: -: -; -i -> -) -( -] -] -| -n -c -c -U -{ -[ -v -t -1 -{ -f -{ -- -[ -n -l -i -+ -: -{ -^ -' -n -j -| -x -u -r -n -X -L -L -d -d -Z -k -k -a -o -* -* -* -* -Y -u -d -b -k -a -* -M -* -* -o -# -o -* -a -# -k -& -& -& -p -M -# -r -k -w -C -8 -W -q -o -a -a -a -a -* -* -o -a -a -a -o -M -a -# -* -o -o -# -# -# -Z -q -b -o -B -B -Z -M -* -M -W -W -M -# -a -a -o -# -h -a -W -# -p -Z -m -L -# -Z -C -b -M -h -a -a -o -q -m -k -* -o -o -a -a -a -* -* -* -o -* -p -k -Z -0 -0 -O -b -O -h -Q -Q -Q -b -b -Q -h -a -o -o -o -o -o -o -o -h -h -p -r -Y -J -Y -U -v -C -J -U -j -Y -d -p -] -f -t -l -; -: -, -^ -^ -` -` -` -` -^ -` -^ -[ -] -[ -1 -j -/ -J -Y -X -c -f -X -> -> -Y -C -0 -p -h -r -x -J -L -0 -0 -q -k -a -* -* -o -o -k -b -q -k -k -b -w -q -b -& -# -# -W -W -# -b -a -# -* -h -d -k -o -o -b -b -Z -q -n -q -m -k -v -Y -C -U -O -J -x -: -n -i -Y -( -( -: -: -: -: -~ -] -_ -- -- -? -) -( -[ -] -[ -n -z -Y -X -f -t -v -( -( -( -/ -{ -} -} -v -: -i -_ -: -{ -) -` -u -j -? -/ -x -n -q -Y -X -c -U -p -O -a -h -a -o -* -* -* -0 -# -0 -m -h -o -o -* -# -o -* -o -o -* -* -a -M -b -M -M -M -h -M -M -* -M -L -b -# -# -& -a -# -& -h -o -o -* -k -b -d -b -a -8 -a -# -o -o -* -# -# -o -d -a -k -h -B -B -Z -M -W -W -W -M -# -M -a -a -a -* -* -h -Y -L -w -M -h -w -m -Z -h -M -k -q -k -a -a -a -h -w -a -# -h -k -w -a -k -* -o -o -o -k -Z -Z -0 -b -d -k -0 -a -Q -Q -Q -d -b -Q -b -h -a -o -o -* -* -* -* -o -w -k -b -h -c -O -O -X -C -J -J -\ -/ -d -p -p -u -t -> -; -: -" -^ -^ -' -' -` -` -` -` -` -? -? -\ -} -x -/ -J -Y -C -v -f -X -> -> -J -L -Q -m -k -p -f -v -C -0 -Q -m -d -h -o -* -o -o -o -b -q -d -k -k -q -p -d -& -M -M -W -W -b -b -a -# -* -k -Z -k -o -a -b -Z -b -n -p -b -q -q -X -Y -C -U -0 -C -] -; -} -) -u -Y -] -: -: -: -[ -? -? -_ -_ -? -1 -\ -/ -{ -) -} -u -Y -c -X -x -/ -n -) -1 -/ -j -\ -[ -] -v -" -> -- -: -} -` -` -v -j -u -v -X -j -Z -J -J -J -v -d -b -b -a -a -o -* -* -m -* -( -# -O -o -o -* -o -* -o -# -o -a -* -o -M -* -M -a -8 -M -M -d -b -* -8 -d -Y -8 -W -k -# -d -& -d -* -o -w -w -Z -] -0 -Z -B -b -M -o -o -o -# -# -# -# -# -# -p -M -B -W -M -W -W -M -M -# -# -o -k -# -m -m -h -Y -Q -c -h -a -O -a -d -h -O -# -q -m -L -a -a -a -o -h -# -* -# -# -k -d -* -o -o -o -o -w -d -d -w -b -b -0 -Q -Q -Q -Q -d -b -b -d -k -a -a -a -o -* -* -# -* -* -k -d -p -J -c -u -n -Z -O -J -f -1 -w -d -m -\ -/ -~ -; -: -" -^ -^ -. -' -' -` -` -` -^ -+ -] -/ -{ -n -f -Y -Y -Q -X -f -X -_ -> -Y -0 -Q -L -d -b -f -t -J -C -Q -O -d -k -a -* -o -o -o -k -w -q -k -k -p -q -q -& -# -M -W -M -k -h -a -# -* -k -b -o -o -a -b -Z -w -u -b -d -w -Q -c -U -Y -L -0 -L -~ -; -( -j -\ -/ -; -: -: -, -} -? -] -[ -[ -} -) -\ -/ -[ -] -} -u -n -c -C -u -1 -x -t -j -X -X -u -f -\ -n -: -> -? -: -{ -" -^ -u -r -/ -? -( -O -v -Z -Q -Q -q -d -h -h -a -o -o -* -* -* -o -Q -* -w -* -* -o -o -o -a -a -# -a -h -* -W -# -& -p -o -8 -W -q -a -a -# -& -h -W -& -h -& -# -o -W -z -o -/ -1 -- -_ -| -? -$ -@ -M -* -o -o -# -* -M -o -M -# -# -M -B -M -M -M -M -# -# -# -# -* -b -* -a -h -b -M -Y -v -w -b -m -z -h -d -O -b -Q -Z -a -w -o -a -o -a -* -* -# -d -Q -a -h -o -a -o -o -a -d -b -Z -L -p -O -L -Q -C -Q -p -b -b -b -b -k -h -o -a -o -* -* -* -o -k -p -0 -X -X -C -C -C -m -0 -r -( -1 -p -p -r -Q -+ -; -: -" -^ -` -' -' -' -' -' -` -' -> -+ -\ -{ -n -j -c -J -Q -z -f -X -c -> -< -O -0 -O -m -p -p -/ -v -J -Q -0 -p -k -k -o -o -o -* -o -w -w -k -k -d -q -q -W -# -W -M -# -b -h -# -* -k -q -k -o -o -k -m -k -n -p -b -p -Z -Q -n -C -U -Q -0 -0 -- -I -( -x -j -1 -; -: -: -, -, -] -] -_ -" -, -) -/ -/ -] -_ -- -f -X -U -U -v -n -Y -z -c -X -X -x -j -r -x -; -< -- -: -w -" -^ -v -r -X -C -C -q -Z -* -b -k -d -k -h -a -a -o -o -* -* -* -X -C -* -k -# -* -o -a -a -a -h -a -M -h -# -M -W -o -W -# -% -# -& -o -q -p -& -M -M -& -& -W -a -a -8 -C -a -v -( -] -_ -_ -- -B -% -B -o -o -o -# -o -f -* -# -M -M -8 -% -O -M -M -M -* -# -# -* -# -# -# -o -Z -C -Q -U -/ -* -| -M -# -M -B -w -w -O -O -Z -o -m -q -a -h -o -* -8 -Z -q -j -a -o -h -o -o -o -b -Z -Q -h -L -O -Q -Q -L -L -p -d -b -d -b -b -k -h -a -* -* -* -* -# -b -h -O -J -J -C -L -L -L -0 -L -/ -( -d -p -Z -f -- -; -: -" -^ -` -' -. -' -' -' -' -` -! -~ -| -} -u -x -n -U -U -Z -\ -c -U -> -~ -C -L -0 -m -p -d -n -f -Y -U -Q -m -k -k -a -o -o -o -* -q -w -b -k -d -q -p -M -# -W -M -o -q -a -# -* -k -q -h -o -a -b -O -p -x -0 -k -q -O -u -c -Q -z -L -0 -O -_ -! -? -{ -x -1 -, -: -, -: -, -" -, -, -, -, -( -t -/ -] -[ -? -/ -v -U -U -v -x -z -u -n -c -Y -j -r -r -/ -I -~ -+ -: -< -" -^ -v -x -X -L -Q -q -m -b -b -k -k -k -a -a -a -o -* -* -* -o -c -& -o -o -* -o -o -a -a -h -h -k -k -# -# -o -W -* -W -b -W -& -b -O -* -# -* -8 -M -B -W -& -M -a -M -X -a -h -/ -} -? -_ -_ -L -% -* -o -o -* -* -f -j -# -# -# -M -& -8 -Z -M -o -h -k -* -* -# -w -o -h -m -Z -p -o -n -J -* -# -# -# -o -M -} -w -O -m -d -a -8 -p -p -a -a -W -a -p -k -8 -k -k -o -h -o -a -a -d -k -h -m -h -Q -Q -Q -L -p -b -b -d -b -k -k -p -b -o -o -o -o -o -b -o -b -0 -C -O -Z -Z -L -0 -Q -v -{ -m -p -m -x -{ -; -: -, -^ -` -' -' -' -' -' -' -' -l -+ -| -| -u -x -x -C -O -U -C -f -X -> -~ -0 -L -Z -O -w -p -b -\ -v -Y -Q -O -d -b -k -a -a -a -# -h -w -b -k -d -d -p -# -M -M -M -a -b -a -# -* -h -k -o -o -h -q -d -n -d -w -b -w -0 -n -v -0 -X -Q -0 -0 -i -{ -> -[ -/ -1 -" -, -, -, -, -, -, -, -, -" -( -f -/ -] -] -[ -f -Y -Y -C -} -] -c -[ -{ -/ -x -} -? -? -{ -i -- -< -+ -! -" -^ -j -n -U -J -0 -0 -m -k -k -k -b -k -h -k -a -o -* -* -* -o -L -# -a -* -* -o -a -a -h -h -k -k -k -h -* -W -M -W -# -& -8 -8 -W -Z -o -o -M -b -8 -M -& -W -& -a -* -Z -a -b -x -{ -? -? -{ -p -% -o -o -o -( -* -u -* -o -# -M -M -& -M -Z -o -p -q -* -# -* -o -o -* -# -L -a -Z -| -X -0 -k -o -a -{ -Z -M -8 -* -* -q -j -Z -% -# -a -M -a -o -# -a -d -p -c -a -o -h -a -a -a -a -k -b -L -b -Q -L -C -L -p -b -d -d -b -k -k -k -p -k -a -o -o -a -k -h -q -w -z -x -| -[ -X -Q -Q -Y -X -v -p -p -n -p -I -: -, -" -^ -' -' -' -' -' -' -' -I -+ -( -( -v -x -j -C -Z -0 -q -f -X -> -+ -Q -m -O -Z -w -q -p -f -r -z -X -Q -Z -b -b -k -a -a -# -a -w -p -k -b -b -q -# -M -M -* -k -h -* -# -o -q -k -a -a -b -m -w -j -f -w -d -C -v -/ -f -C -Y -Q -0 -Q -! -z -l -j -) -) -! -" -, -" -" -: -" -, -" -, -) -f -/ -? -+ -! -f -X -L -Q -( -} -v -f -j -j -x -\ -1 -_ -t -+ -- -l -Q -l -! -! -| -n -X -C -O -Q -q -k -h -k -k -k -h -h -a -* -* -* -* -b -a -# -o -* -M -# -a -o -k -k -k -k -k -k -o -M -8 -W -k -m -M -& -M -0 -d -M -& -w -8 -B -& -% -8 -o -* -b -q -b -f -) -{ -Z -Z -8 -% -% -r -t -f -# -* -W -# -# -# -M -M -M -m -h -b -8 -& -O -M -# -# -W -# -Y -Y -C -b -f -Q -C -q -O -j -p -# -W -M -0 -h -d -w -o -0 -m -8 -# -& -M -o -m -Z -t -a -o -o -a -o -a -a -Y -d -Q -Z -C -C -L -J -p -d -d -d -b -k -k -h -k -b -b -b -o -k -# -o -p -w -w -z -/ -[ -! -0 -C -Y -X -c -p -q -x -O -I -; -, -" -^ -` -' -' -' -' -' -' -l -< -( -\ -v -x -f -c -O -0 -J -j -X -i -~ -J -J -m -0 -d -w -w -d -1 -x -v -C -0 -q -d -d -h -h -# -o -p -q -k -b -d -q -# -M -M -* -d -h -# -* -k -k -o -a -a -d -p -v -m -O -p -m -~ -_ -f -t -C -X -0 -0 -C -! -0 -l -/ -\ -) -! -" -" -" -" -I -" -" -, -, -) -f -/ -] -] -- -f -X -X -C -/ -{ -\ -1 -) -j -j -t -) -} -} -? -- -< -X -+ -< -i -_ -u -u -c -d -Q -O -d -b -b -b -k -a -h -o -o -* -* -* -/ -c -* -o -o -a -a -h -a -b -k -Z -k -b -k -a -# -] -W -# -# -& -% -M -m -m -o -8 -0 -* -k -o -a -a -o -k -W -h -# -b -C -# -Q -I -8 -@ -W -/ -) -a -# -# -W -M -# -# -M -M -M -q -o -8 -W -W -# -U -b -M -M -a -L -Z -d -p -q -C -C -O -M -* -w -p -& -p -M -0 -a -p -c -0 -v -a -8 -# -M -b -w -O -Y -a -a -o -h -a -a -a -h -h -L -O -U -J -C -J -q -d -d -p -b -k -h -a -k -k -b -J -b -m -* -# -* -Z -U -| -q -m -1 -O -J -z -v -v -q -p -n -Z -l -; -: -" -^ -` -' -' -' -' -' -' -: -> -| -} -u -r -x -v -Z -O -U -j -X -] -~ -0 -C -L -J -d -w -m -q -f -f -u -v -L -0 -q -p -b -k -* -o -b -w -k -b -q -w -# -M -M -o -q -h -# -* -k -k -o -a -b -m -q -j -k -O -p -U -] -_ -+ -( -r -c -0 -O -L -i -L -l -U -{ -? -l -_ -l -" -" -; -" -" -, -, -) -t -( -] -] -? -u -Y -X -X -} -[ -v -} -] -t -f -[ -] -[ -] -] -- -m -- -+ -~ -> -l -u -v -u -d -L -0 -0 -b -p -b -b -h -h -o -* -* -* -* -h -f -o -o -* -a -h -k -k -d -b -q -h -b -0 -o -* -W -W -b -& -& -& -8 -b -# -B -# -m -& -@ -M -@ -W -m -a -h -o -* -j -v -j -w -M -8 -f -# -x -a -o -# -* -W -# -# -# -* -* -B -p -a -k -& -M -M -J -a -d -M -q -k -p -v -d -0 -f -J -p -d -J -Q -q -b -/ -h -w -Z -q -z -r -J -Y -% -W -& -Z -0 -O -v -a -h -a -h -h -a -a -h -0 -L -0 -J -J -U -C -m -p -p -p -b -k -a -a -h -h -a -J -J -m -X -* -# -q -a -b -O -Y -u -Q -U -Y -v -c -U -p -Q -Z -I -; -: -, -^ -^ -' -' -' -' -' -' -: -< -\ -{ -x -r -r -c -O -0 -U -f -X -Y -< -\ -C -L -J -q -m -m -Z -L -1 -\ -n -U -Q -Z -q -q -b -* -* -d -w -b -k -w -w -M -M -M -k -d -o -* -o -d -k -o -o -k -m -Q -c -h -m -0 -\ -] -+ -? -? -u -c -0 -O -Q -i -z -i -| -x -< -! -+ -l -" -" -; -" -" -, -" -) -/ -{ -- -+ -) -u -X -c -v -n -n -v -v -n -X -c -v -x -f -] -? -? -h -1 -+ -~ -> -l -c -c -w -k -Q -m -p -d -p -b -d -a -h -o -* -* -* -* -Q -0 -b -a -# -b -p -p -[ -h -p -b -o -d -h -a -* -# -M -a -# -W -* -8 -h -a -o -* -8 -@ -B -* -B -% -8 -C -8 -h -| -k -w -p -n -* -W -Y -a -o -o -o -# -# -W -M -M -M -# -* -p -d -d -q -a -W -M -L -# -d -Z -b -p -Z -Z -w -m -h -0 -k -d -J -X -# -0 -u -c -m -n -Q -m -p -Z -p -% -a -Y -O -q -M -a -b -k -a -b -k -a -h -h -h -Q -O -U -Y -U -J -O -p -p -p -b -b -h -a -h -h -a -q -< -r -C -M -M -M -w -k -U -m -b -C -J -U -c -v -c -p -d -Z -l -I -; -, -" -^ -' -' -' -` -` -` -: -_ -\ -{ -f -n -j -v -O -Z -C -f -Y -Y -< -> -Q -Q -C -w -m -m -m -q -1 -z -x -c -L -Q -q -q -b -o -o -b -d -d -k -q -w -M -M -a -k -a -* -* -o -h -o -a -a -q -p -j -d -a -Z -Z -n -} -} -? -+ -v -z -0 -O -Y -i -x -_ -z -( -! -l -i -l -" -" -I -" -" -" -" -) -/ -} -] -] -\ -u -Y -c -c -n -/ -u -x -t -j -j -r -) -- -] -? -_ -h -[ -_ -~ -> -! -X -c -v -C -Z -m -q -q -p -b -b -h -h -* -* -* -* -* -Q -k -b -* -W -q -a -q -p -b -p -p -h -O -d -d -a -# -M -a -# -M -8 -W -k -d -q -h -J -Z -@ -W -% -* -W -& -& -b -d -M -0 -M -b -c -o -8 -a -o -o -o -* -# -M -# -M -# -o -o -w -p -p -Y -C -w -W -C -o -M -* -q -Z -* -o -a -M -C -o -p -d -L -d -Q -k -v -c -\ -] -1 -Z -Z -a -a -M -a -j -q -Y -W -k -l -b -a -a -b -h -h -h -h -Q -0 -U -U -X -J -O -p -p -p -d -b -k -a -a -h -a -a -! -} -q -M -M -# -w -a -Y -L -t -x -C -J -c -X -z -p -p -Z -l -I -; -: -" -^ -' -' -` -^ -` -` -" -- -/ -1 -\ -u -f -c -O -O -O -/ -u -X -< -< -C -0 -O -m -m -m -d -q -Y -] -\ -x -Y -C -Q -Z -q -h -o -d -p -p -k -q -q -M -# -* -q -h -* -* -k -k -o -o -k -w -q -f -k -h -Z -/ -1 -/ -u -( -( -v -u -O -Z -f -i -\ -f -| -c -; -! -l -l -" -" -I -" -" -, -" -( -/ -} -] -] -) -u -Y -Y -v -1 -{ -z -{ -? -| -) -- -_ -- -} -? -Z -o -] -_ -+ -< -< -Y -v -Y -] -q -p -d -w -d -b -b -h -o -* -* -* -* -M -m -* -* -* -a -w -k -q -q -b -Z -w -z -u -b -b -h -o -# -* -* -W -& -W -a -q -W -M -a -& -8 -W -& -& -% -& -a -a -p -W -M -Z -o -c -a -% -& -a -o -* -a -k -& -# -M -* -a -p -a -w -x -t -X -C -W -J -O -W -* -# -C -z -X -Q -a -w -h -p -Z -d -a -U -p -0 -u -r -v -r -\ -r -Z -m -# -o -0 -* -0 -8 -~ -b -C -h -h -h -h -h -h -k -k -0 -U -J -Y -U -L -p -p -p -d -b -k -a -a -h -a -o -i -h -w -# -# -# -M -# -Z -O -{ -I -L -U -z -Y -z -p -p -m -_ -l -I -: -, -" -` -` -^ -" -" -^ -^ -] -f -( -/ -c -j -v -m -J -J -c -j -X -< -< -J -J -C -w -w -m -d -p -Z -} -n -u -z -Q -Q -Z -m -b -o -k -b -b -k -p -p -M -# -a -q -h -* -* -h -h -a -o -p -q -v -Q -h -h -Z -\ -/ -| -< -{ -L -v -Y -O -Z -[ -! -| -\ -X -} -l -l -I -I -" -" -; -" -" -, -" -( -/ -} -- -_ -x -v -c -J -j -} -) -( -} -? -| -? -{ -? -_ -] -x -# -b -{ -_ -+ -~ -? -Y -c -Y -X -p -d -q -d -p -b -b -k -o -* -* -* -* -# -0 -o -* -o -z -w -p -Z -m -m -Z -m -j -U -w -n -p -k -o -M -a -8 -M -W -o -q -b -h -8 -% -% -& -% -M -% -W -# -M -B -M -8 -8 -# -U -a -% -o -o -a -a -h -# -M -* -# -a -a -q -@ -a -x -t -L -C -W -c -Q -& -* -q -Y -& -M -[ -a -B -* -a -0 -# -b -J -C -* -? -O -Y -X -j -{ -1 -d -o -8 -# -C -X -p -a -\ -z -* -h -m -h -k -h -k -k -p -Y -X -U -U -J -p -p -p -d -b -h -a -a -h -a -a -! -p -p -W -M -# -M -q -Z -d -/ -` -L -J -X -U -X -Q -p -w -j -l -I -; -, -" -^ -^ -^ -" -" -^ -^ -] -j -t -/ -c -j -J -C -C -J -q -f -X -< -< -J -J -U -q -m -m -d -d -0 -n -] -j -x -X -L -C -0 -d -o -h -d -d -k -d -p -# -o -o -k -# -* -o -k -o -o -a -q -b -f -m -h -h -0 -) -\ -| -+ -- -- -} -Y -O -0 -i -! -( -1 -\ -{ -: -l -; -I -" -, -; -" -" -" -" -( -/ -} -- -~ -r -n -z -Y -r -) -1 -( -[ -] -( -] -[ -< -x -u -f -o -c -| -? -l -] -{ -J -z -Q -Y -b -b -b -b -d -k -k -a -o -* -* -* -* -# -w -k -o -o -f -m -0 -b -O -m -Z -0 -x -O -w -c -m -p -k -# -k -M -M -W -o -q -k -b -o -& -& -B -8 -W -8 -% -h -b -B -B -M -B -O -U -* -% -o -h -b -k -h -# -M -* -a -a -h -q -d -q -j -| -O -C -W -c -q -* -w -& -h -# -h -q -& -# -& -# -b -k -h -J -d -O -X -p -Z -L -/ -\ -\ -: -b -b -q -U -# -Q -Y -. -. -. -k -q -k -k -d -q -k -k -X -U -U -J -J -p -d -p -d -b -k -a -a -h -a -a -; -t -q -W -W -W -M -o -o -O -p -m -J -J -Y -X -Y -j -q -p -x -l -l -I -: -, -^ -^ -^ -" -, -^ -` -1 -x -t -/ -X -j -L -m -U -J -C -j -X -i -< -U -U -J -p -m -Z -d -d -O -Q -+ -f -x -n -L -Q -0 -q -a -k -d -d -h -b -p -# -o -k -k -* -o -o -h -o -a -k -p -O -z -w -k -k -Z -/ -t -| -? -- -] -? -0 -O -0 -i -i -| -r -( -) -? -: -l -I -" -: -; -" -" -" -; -| -/ -} -[ -} -( -c -u -z -x -| -] -u -] -- -) -_ -u -x -r -j -z -o -u -) -_ -! -[ -) -U -Z -m -n -C -X -C -k -h -h -h -o -o -* -* -* -o -* -d -k -h -h -t -O -L -Y -L -Q -w -Q -x -v -v -c -j -q -b -a -p -& -# -W -a -b -M -B -o -% -0 -a -& -8 -% -M -h -a -@ -B -M -% -o -C -h -% -% -b -b -b -* -# -W -a -a -a -a -m -k -Q -O -\ -& -Q -h -O -p -w -q -& -h -L -q -h -& -o -8 -& -& -q -k -Q -o -C -8 -k -h -0 -0 -U -X -] -` -# -w -& -- -o -w -Z -Q -l -I -d -o -b -w -Y -k -k -U -Y -Y -X -X -p -p -p -p -b -b -o -a -h -a -a -< -{ -m -Z -W -W -M -# -h -w -O -r -+ -Y -z -X -Y -f -q -f -! -_ -~ -> -; -: -" -^ -^ -, -, -^ -^ -) -j -u -j -c -j -X -J -U -U -U -j -X -? -> -J -L -J -0 -w -m -w -m -Z -L -) -( -z -| -c -J -J -m -a -h -d -d -h -k -q -# -o -w -h -* -o -h -o -o -a -p -h -u -q -m -k -m -m -t -/ -{ -- -1 -} -{ -O -Z -L -i -- -( -v -c -| -{ -; -l -I -" -: -; -" -l -: -I -( -\ -} -_ -_ -n -v -u -X -t -) -\ -t -( -{ -\ -r -v -v -j -f -w -o -Y -J -z -f -n -n -Y -Z -0 -f -c -J -z -0 -Q -X -o -o -o -* -* -* -o -o -q -b -b -b -r -O -p -m -h -L -d -O -n -) -u -v -x -Z -q -k -a -M -* -M -b -o -p -B -h -M -M -8 -@ -8 -8 -b -a -o -B -B -& -@ -M -* -k -B -a -k -b -h -b -o -# -k -a -o -a -a -k -d -X -Y -Q -B -a -0 -M -p -W -M -w -n -m -@ -a -* -# -8 -& -p -0 -M -0 -Q -$ -h -W -w -O -Q -Q -J -< -J -q -w -Z -0 -a -x -: -' -b -| -b -k -Q -C -d -b -k -U -J -X -U -p -p -p -d -b -b -o -h -a -a -a -t -z -U -m -* -W -M -M -C -m -m -x -! -Q -z -X -X -f -q -x -i -+ -~ -< -I -: -" -^ -^ -, -, -^ -" -\ -x -u -f -c -x -z -J -Y -U -U -j -Y -u -> -C -0 -J -J -m -m -m -m -Z -Q -C -< -j -) -v -J -Y -Q -h -h -p -d -k -k -q -# -o -w -o -* -o -k -o -a -h -w -p -f -Z -b -k -/ -0 -x -n -\ -} -{ -( -- -Z -Z -L -! -( -] -X -z -1 -} -l -I -I -^ -; -; -" -l -, -: -( -\ -} -_ -~ -r -u -U -Q -Z -Z -m -Z -m -m -w -m -m -m -m -m -# -* -q -w -w -O -O -L -w -Z -Y -k -J -h -b -U -J -U -o -o -o -* -* -* -o -o -Z -d -b -h -z -U -n -C -x -U -J -0 -# -X -n -c -n -x -Z -d -a -# -a -M -m -8 -d -% -a -M -& -& -& -% -B -B -W -M -B -@ -W -% -d -% -k -b -W -o -b -k -d -k -b -h -a -q -a -a -h -Z -\ -k -Y -& -q -Z -w -8 -m -a -w -O -o -# -W -a -& -& -& -* -w -p -o -b -W -o -o -a -q -Z -q -0 -; -: -Q -C -b -Z -Q -M -b -> -k -} -+ -q -O -Q -C -b -b -Y -X -c -X -# -L -p -p -d -b -o -a -a -k -a -U -r -1 -U -m -W -M -M -o -0 -Y -Q -] -0 -Y -Y -z -w -q -n -i -- -_ -+ -l -I -: -" -" -, -, -, -: -/ -n -v -u -c -r -v -U -Y -Y -U -f -U -J -> -\ -0 -J -U -Z -m -w -Z -m -0 -J -< -\ -u -f -z -U -J -a -h -p -p -b -k -q -o -o -b -* -o -o -o -o -a -b -p -U -Y -p -d -w -u -O -U -\ -/ -{ -{ -\ -{ -Z -Z -Q -i -j -> -) -x -{ -\ -i -I -l -^ -; -; -^ -I -" -, -t -X -Q -O -Z -0 -O -Z -m -m -m -m -m -m -m -w -w -m -m -m -m -* -* -m -Z -q -w -0 -Q -q -m -n -b -Q -b -Z -d -b -o -o -o -* -* -* -o -a -* -m -b -d -C -m -a -O -0 -n -p -U -z -v -c -( -j -n -x -O -p -a -# -h -M -Z -M -# -B -W -a -M -8 -B -O -w -@ -# -8 -B -B -8 -& -8 -M -a -% -% -8 -b -d -p -p -d -a -p -p -b -* -% -k -* -Z -% -W -C -m -& -W -M -# -h -M -h -k -o -B -o -o -* -8 -a -# -h -8 -# -o -o -# -k -0 -d -q -p -z -c -J -m -* -L -# -r -& -l -o -q -I -L -Z -Q -k -k -u -v -X -J -n -a -q -p -d -b -a -o -a -d -h -0 -c -Y -> -m -w -W -M -d -w -b -k -w -L -Y -X -z -q -k -u -> -_ -- -_ -l -I -; -, -" -: -; -, -; -j -v -c -u -z -x -n -U -Y -n -J -j -z -Y -> -< -0 -U -J -m -Z -d -d -m -O -L -X -+ -r -/ -n -Y -X -w -b -w -q -d -h -k -# -# -k -o -o -o -a -o -a -p -k -c -m -h -b -m -L -O -0 -Q -O -j -1 -U -u -Z -Z -Z -> -X -l -j -{ -} -} -< -I -; -` -j -q -w -O -O -O -O -O -O -0 -0 -0 -Z -O -O -0 -O -0 -O -Z -Z -m -w -q -q -m -Z -* -* -m -Z -m -m -w -d -p -O -Y -m -p -q -O -d -a -o -o -o -* -* -* -o -o -p -O -k -p -x -U -v -J -v -X -f -U -z -X -f -Y -q -J -x -O -O -o -X -b -* -m -a -M -W -& -W -B -Z -h -M -& -& -h -# -8 -h -k -& -8 -8 -# -8 -8 -% -* -d -p -q -a -# -h -k -q -Z -0 -b -k -Y -8 -p -O -Q -W -Y -8 -x -t -8 -d -W -h -@ -a -a -a -% -W -8 -O -* -Q -a -W -M -k -Z -b -m -q -C -; -r -J -d -a -p -x -c -# -~ -p -X -w -. -t -O -b -C -. -. -[ -q -o -d -p -p -d -d -a -a -d -h -p -u -O -O -1 -O -* -k -d -O -q -m -r -U -m -Q -d -b -C -C -U -z -c -X -x -} -i -" -^ -; -l -; -l -t -r -c -n -z -r -n -J -Y -t -J -f -j -Y -< -i -C -Y -C -m -m -d -d -q -Z -0 -J -> -| -c -x -Y -J -p -k -m -p -q -k -b -* -h -h -o -o -h -o -a -h -q -b -z -m -h -b -m -m -0 -0 -0 -0 -Q -C -x -C -Z -Z -L -i -C -I -f -z -} -\ -U -p -m -Z -m -m -m -m -Q -0 -0 -Q -0 -Q -Q -Q -Q -0 -0 -0 -0 -0 -0 -O -O -O -m -Z -Z -Z -m -* -* -m -m -m -q -q -k -d -0 -L -Z -b -m -Z -q -o -o -o -* -* -* -M -x -Q -0 -q -k -p -n -p -| -/ -x -U -j -f -m -v -# -M -W -M -Z -w -0 -U -j -d -h -O -d -# -B -B -# -# -k -# -8 -& -k -% -o -% -W -B -B -& -8 -8 -8 -% -% -% -a -d -M -@ -W -W -o -Y -O -C -# -q -% -W -C -k -# -q -% -Y -h -W -# -q -% -% -h -& -M -W -k -M -& -b -d -b -* -M -# -h -m -8 -Z -p -X -] -n -* -X -q -b -O -> -X -# -b -r -w -X -' -j -o -r -Z -. -' -w -. -p -d -p -k -b -h -h -d -h -b -? -Y -X -Q -) -C -p -o -p -Y -m -v -U -m -0 -b -O -0 -0 -0 -C -J -J -U -Y -Y -X -x -f -x -v -Y -Y -Y -L -X -z -j -n -J -c -c -J -t -t -Y -> -> -J -J -L -m -m -d -d -q -Z -0 -C -> -1 -v -v -n -X -p -b -q -m -p -k -d -* -m -o -o -o -a -o -h -k -d -J -Y -w -h -d -m -m -Q -C -L -m -0 -0 -L -L -Z -Z -c -+ -J -J -w -Z -w -m -q -q -w -m -m -m -0 -Q -Q -L -0 -C -C -C -C -L -L -Q -0 -Q -L -L -C -C -C -Q -Q -0 -O -Z -Z -* -o -p -q -m -w -a -b -w -0 -m -Z -d -w -w -o -o -o -p -* -@ -} -L -Z -# -o -m -* -w -c -a -a -h -J -t -/ -\ -f -X -| -L -X -v -r -Q -m -x -t -p -d -# -# -h -M -o -# -& -h -# -8 -8 -a -B -& -h -a -W -& -# -& -B -& -% -% -M -8 -a -& -& -8 -q -m -X -Z -% -h -M -M -d -O -W -$ -% -& -u -M -o -w -w -o -# -$ -& -W -W -# -k -& -a -q -# -* -W -o -M -k -Y -0 -d -/ -v -J -z -k -C -w -k -q -z -! -b -b -m -' -. -! -~ -W -J -O -; -C -p -1 -r -c -Y -J -m -p -p -h -b -I -n -x -u -m -f -b -* -p -k -a -m -[ -X -d -C -U -X -X -X -X -U -C -J -z -X -X -c -c -X -U -C -L -C -L -Q -0 -0 -Z -0 -0 -O -J -r -t -Y -> -> -J -0 -C -Z -m -b -d -q -0 -O -L -c -! -/ -Y -j -Y -m -k -p -Z -p -k -q -* -q -o -o -a -a -a -a -d -k -U -Z -d -h -q -L -j -f -v -O -L -Q -Q -Y -X -m -Z -c -u -m -m -m -m -m -m -Z -q -m -Z -O -Z -0 -L -C -J -U -U -J -X -X -X -z -X -X -z -z -z -z -z -X -Y -X -z -X -U -L -o -o -Z -m -m -k -a -k -c -0 -Z -b -d -p -o -o -o -* -o -) -m -h -Q -C -& -o -M -a -w -w -Z -L -k -\ -r -| -| -\ -t -( -( -( -) -/ -X -O -f -t -b -p -Z -W -M -M -M -8 -& -B -8 -B -# -w -q -& -M -W -# -M -b -8 -& -M -W -a -W -8 -& -p -% -0 -Q -J -O -8 -% -m -a -o -0 -& -$ -% -% -W -X -J -W -r -a -B -B -M -o -8 -& -% -h -M -h -a -o -# -W -# -& -a -Y -b -b -a -v -< -Z -X -o -X -Q -Z -q -m -> -! -m -O -c -O -n -d -m -M -m -b -/ -u -m -C -0 -X -v -0 -w -h -b -i -? -+ -1 -r -m -M -* -* -a -h -b -u -+ -C -Y -v -n -n -c -c -u -n -Y -U -Y -U -J -J -J -J -Q -L -Q -Q -O -L -Z -O -L -0 -Q -0 -O -Z -0 -> -> -Y -J -Q -m -m -m -m -m -Z -O -0 -U -i -t -c -t -f -C -Q -q -Q -q -k -d -o -p -o -a -a -a -a -k -d -p -J -q -k -h -p -m -q -X -( -/ -} -u -J -m -Z -m -m -Z -m -m -m -m -m -Z -Z -m -w -m -0 -L -C -J -U -Y -X -z -c -v -v -v -v -v -v -v -j -) -? -_ -_ -- -] -{ -| -f -Y -Z -o -a -C -L -O -o -k -j -n -O -O -d -w -b -o -o -o -o -0 -Z -w -o -U -w -# -h -h -Z -q -Y -( -d -Y -/ -( -| -( -( -( -( -) -) -| -f -r -Q -| -1 -p -p -M -# -# -# -M -M -M -h -& -& -M -& -b -% -o -# -8 -M -k -W -U -& -% -B -% -& -# -M -% -m -O -q -& -O -8 -& -k -p -M -@ -B -8 -% -M -X -8 -w -B -8 -d -b -* -O -8 -& -8 -& -W -a -O -o -# -W -# -Z -o -c -Z -p -h -J -! -b -0 -z -d -m -z -v -Q -J -J -> -~ -| -x -X -L -p -k -h -q -w -# -n -w -b -k -q -\ -Z -b -b -> -l -l -l -> -L -# -* -* -* -a -a -L -+ -) -j -x -n -v -u -x -r -r -x -n -n -c -z -X -X -Y -Y -J -J -J -J -J -J -J -C -Q -0 -Z -m -m -0 -0 -0 -Q -Q -Z -d -w -m -m -m -Z -O -O -C -x -i -x -j -| -L -q -w -C -m -k -k -a -k -a -a -h -a -h -b -k -m -z -b -h -h -q -m -m -/ -Y -w -p -m -w -q -m -m -m -m -m -m -m -m -m -q -m -O -0 -Q -C -U -X -X -z -n -) -_ -< -l -; -; -; -i -_ -< -! -< -+ -? -] -[ -{ -( -| -t -J -M -o -a -0 -0 -o -o -k -C -0 -L -x -J -0 -o -o -o -k -Q -h -% -# -C -C -& -* -d -8 -# -q -z -( -( -( -( -) -| -( -) -) -1 -1 -1 -| -t -f -O -x -r -p -Q -# -o -* -* -# -# -& -# -M -% -& -o -8 -a -# -h -8 -a -& -B -B -h -% -% -a -M -M -* -W -M -& -% -h -m -% -h -h -W -q -B -% -& -& -W -d -n -# -* -8 -W -& -$ -M -b -C -8 -# -a -d -m -M -M -& -a -q -# -u -X -b -k -w -< -p -b -Z -C -z -o -Z -Z -J -k -p -m -p -m -q -m -m -w -h -p -b -Y -L -b -d -d -a -b -b -m -b -i -> -i -! -i -( -# -o -* -* -# -a -w -o -Y -i -; -: -` -. - - - - - - -^ -? -n -J -U -Y -Y -U -U -U -J -0 -Q -J -L -X -Y -L -L -0 -L -Q -0 -Q -O -Q -L -Q -q -q -q -m -O -Q -Y -! -t -j -( -z -O -Z -C -0 -k -k -b -a -a -a -a -a -h -k -h -q -X -k -h -k -w -O -w -q -w -Z -m -m -m -w -m -m -m -m -m -Z -m -m -m -m -Z -O -Q -X -\ -_ -< -! -; -; -; -; -I -l -+ -! -l -i -> -? -) -/ -r -n -v -J -J -J -C -C -O -* -o -o -Z -o -o -a -Z -J -b -0 -w -d -o -o -o -Z -# -t -d -a -# -0 -C -& -% -o -& -& -Z -b -) -1 -1 -1 -1 -\ -( -) -) -1 -{ -1 -( -/ -j -x -f -p -b -* -a -o -o -o -# -# -# -# -& -b -% -* -# -& -W -M -q -& -# -8 -B -k -M -B -% -W -& -W -M -& -* -# -k -& -8 -a -b -n -B -B -8 -& -& -& -W -q -& -h -h -J -% -w -@ -# -& -% -a -* -d -q -* -M -8 -# -p -M -j -r -* -a -h -u -Z -m -b -Z -O -U -d -* -o -* -Z -k -h -a -a -a -a -h -k -b -U -J -u -0 -a -d -k -q -k -O -d -+ -z -C -U -J -C -M -h -* -# -# -a -* -& -L -Z -- -< -I -, -` -. - - - - - - -. -. -' -^ -: -: -- -c -Q -U -U -Y -X -Y -U -U -Y -Y -J -Q -L -O -Q -Q -O -m -m -Q -L -Z -q -Z -L -[ -x -x -r -X -O -k -J -O -k -h -p -a -k -h -a -a -b -h -p -m -O -k -h -b -Z -w -Z -Z -m -m -w -w -m -m -m -m -m -m -m -m -m -Z -c -{ -[ -? -~ -i -I -I -I -l -l -< -1 -v -Y -C -J -U -J -J -J -C -J -J -J -J -J -C -C -C -C -C -L -* -* -a -k -a -a -Z -m -m -L -w -m -a -o -U -1 -f -M -W -% -W -* -Q -8 -& -p -k -8 -% -b -a -) -1 -) -1 -1 -\ -( -) -1 -{ -1 -1 -( -/ -v -r -? -0 -p -b -h -h -a -a -a -o -# -M -# -* -b -a -M -b -# -# -k -* -Q -8 -o -k -k -8 -h -o -& -W -W -M -* -J -M -k -8 -# -| -% -8 -8 -M -& -W -W -w -b -Y -* -@ -& -k -0 -o -m -B -8 -a -a -b -q -# -M -8 -* -d -o -f -f -X -W -k -w -J -o -m -p -k -m -m -w -L -Q -a -a -a -h -a -a -h -a -o -h -Q -u -1 -m -t -v -h -o -m -k -b -x -0 -0 -L -L -Q -a -o -* -# -o -* -* -Z -d -b -q -z -z -c -c -c -c -c -v -r -} -i -; -" -' - -' -" -l -I -; -I -I -" -_ -f -X -v -v -c -X -C -U -Q -L -Q -Q -Q -Q -m -O -O -m -L -Y -v -! -f -Y -J -O -J -L -U -k -p -p -a -k -h -h -a -b -a -p -p -d -k -h -q -m -Z -Z -w -m -m -q -p -w -w -m -m -m -O -w -t -] -? -_ -< -i -! -? -j -C -J -C -C -C -C -L -C -J -Y -U -J -U -U -U -Y -c -n -x -c -z -J -u -( -n -u -0 -* -a -w -a -k -Q -L -q -m -J -k -a -< -@ -a -d -p -8 -* -8 -M -a -0 -& -M -d -% -8 -* -* -h -1 -1 -1 -1 -] -\ -( -) -1 -{ -1 -{ -) -/ -X -/ -b -0 -b -b -k -h -h -h -o -o -* -# -M -b -o -d -% -o -b -q -d -& -C -W -d -k -a -M -* -8 -8 -& -M -d -W -M -o -a -a -c -B -8 -8 -M -W -W -M -B -m -o -v -k -8 -& -8 -p -M -k -8 -M -h -k -m -J -M -M -8 -z -h -Q -f -t -z -q -O -d -+ -M -1 -m -m -k -d -w -q -p -d -d -b -b -h -a -o -o -m -k -Z -z -{ -L -X -J -k -o -X -w -p -C -J -L -C -U -U -O -o -# -# -h -# -o -d -b -f -d -r -f -f -f -r -n -v -v -v -v -v -v -v -v -v -z -z -x -t -{ -> -; -; -l -I -I -I -l -l -! -/ -z -L -O -0 -Z -O -O -Q -0 -Q -Q -L -J -J -> -r -X -L -J -h -C -U -b -q -d -a -h -h -h -k -h -h -d -Q -d -k -k -w -w -q -m -Z -w -m -q -q -d -n -Z -m -Z -) -- -| -> -> -] -U -C -C -L -L -L -L -C -C -X -c -n -f -? -+ -~ -} -z -} -\ -( -( -} -1 -f -n -z -x -| -v -u -L -* -a -o -a -0 -L -C -O -0 -L -b -: -W -W -& -M -k -d -% -& -o -O -0 -& -p -h -% -W -# -o -Q -c -1 -1 -1 -x -\ -| -1 -{ -{ -{ -{ -) -/ -c -\ -p -w -Y -b -b -k -h -h -o -* -* -# -# -p -d -d -a -a -w -b -M -b -C -& -d -h -% -& -& -a -8 -W -0 -& -M -o -# -# -{ -8 -8 -8 -W -* -W -M -M -B -8 -0 -Q -b -8 -8 -& -W -o -M -8 -M -k -p -p -k -# -a -W -U -o -x -t -t -c -0 -0 -h -! -M -M -{ -m -m -m -h -p -p -p -p -p -w -O -L -Q -O -a -k -k -Z -j -Q -| -u -x -k -Y -Q -w -Z -n -w -q -q -w -m -# -* -# -a -M -* -Q -b -O -Z -u -f -t -/ -t -t -f -f -f -t -/ -/ -j -n -v -c -z -X -Y -X -X -X -X -u -1 -! -l -l -l -l -i -} -L -C -Y -Y -Q -L -0 -m -m -m -Q -0 -Y -X -c -Y -O -O -0 -p -L -p -k -k -a -h -h -h -b -a -h -b -C -k -b -q -w -O -w -w -q -p -[ -! -< -< -+ -Z -m -Z -< -> -U -U -C -Q -L -L -C -J -Y -) -< -l -; -I -; -? -) -- -+ -i -) -Y -) -| -| -{ -{ -1 -j -v -U -n -j -c -z -O -* -o -o -O -0 -C -L -O -J -Z -> -a -W -M -# -M -W -a -M -W -k -Q -Y -& -B -W -& -& -o -o -p -a -) -1 -1 -X -/ -\ -) -{ -} -{ -{ -) -\ -/ -q -o -p -w -b -b -k -k -k -a -* -* -# -p -d -p -k -d -# -h -* -o -h -k -8 -m -k -B -a -k -M -M -J -a -8 -W -# -M -Z -% -8 -& -W -o -& -W -a -W -B -* -n -a -d -& -% -& -M -# -# -8 -* -Q -b -0 -W -o -W -k -X -# -t -/ -Q -\ -& -d -h -? -o -# -# -B -Q -m -w -q -p -d -d -d -b -k -k -h -o -w -Q -Q -J -X -J -v -v -u -# -# -Q -C -d -0 -d -d -p -w -k -M -o -# -o -# -o -o -0 -* -Z -0 -0 -L -Q -L -L -Q -) -{ -} -] -_ -[ -t -j -t -j -x -x -x -r -u -X -Y -Y -X -X -X -Y -J -? -_ -J -U -Y -> -< -~ -> -+ -v -Q -J -L -Q -U -[ -J -Z -L -q -z -J -h -o -a -h -h -k -h -b -h -h -b -J -h -k -m -m -m -p -? -+ -~ -+ -< -> -- -v -Z -m -Z -> -+ -x -X -X -J -J -] -; -I -: -: -i -! -; -l -; -] -( -] -? -+ -\ -J -| -U -0 -0 -Q -0 -O -Q -O -n -t -c -X -# -o -h -* -k -d -k -O -w -Y -a -v -M -h -M -& -# -& -8 -d -o -b -O -Z -W -8 -M -8 -& -* -k -d -# -) -) -1 -) -\ -\ -( -{ -{ -{ -1 -( -| -t -J -k -m -d -d -b -b -b -k -a -* -* -M -d -d -p -d -b -o -b -w -* -o -* -% -a -o -h -a -* -q -M -a -b -W -M -B -8 -8 -% -W -% -* -h -M -h -h -M -B -M -# -W -k -o -M -M -M -& -W -& -o -L -k -C -k -# -* -v -z -a -/ -d -/ -t -v -& -k -[ -# -h -b -* -8 -/ -Q -p -w -w -q -p -d -d -O -Q -0 -Z -k -b -Q -d -U -C -[ -f -W -B -L -J -M -W -M -M -M -# -w -M -* -# -* -a -* -o -& -m -) -O -Q -L -Q -L -L -Q -\ -} -[ -} -? -_ -> -i -\ -j -u -x -x -x -x -x -x -x -r -x -c -c -z -+ -_ -J -0 -U -f -? -! -< -< -< -> -! -+ -z -Y -j -Q -Z -a -h -p -Z -Z -o -h -k -h -k -a -k -h -k -b -Y -a -b -Z -{ -? -- -- -- -u -Z -L -L -C -J -m -m -Z -> -{ -? -c -_ -v -v -: -; -; -: -: -i -> -l -< -l -} -( -] -_ -< -/ -C -} -v -c -u -u -x -r -Q -Z -u -} -X -v -a -o -a -k -h -b -k -p -Z -a -a -Z -M -# -W -b -b -k -& -w -8 -b -Z -Q -& -8 -* -& -* -# -o -k -& -t -( -) -) -( -\ -( -1 -{ -{ -) -( -| -/ -J -b -Z -d -d -d -d -b -b -h -a -* -M -d -d -d -p -k -k -# -X -X -L -8 -h -W -q -m -* -k -8 -& -k -k -W -| -& -& -& -% -8 -o -k -# -# -0 -M -h -% -# -M -m -d -a -p -z -% -8 -# -M -p -Z -k -m -k -h -W -z -v -x -| -\ -r -j -n -c -p -} -* -* -a -h -b -h -B -$ -Z -_ -f -L -0 -Y -c -f -# -& -M -M -8 -o -b -0 -C -L -Y -$ -x -W -# -M -k -M -W -M -a -* -* -o -W -# -* -k -C -O -{ -Q -Q -L -L -Q -Q -Q -f -[ -? -[ -- -- -> -i -/ -f -v -t -c -r -u -v -n -u -x -x -x -r -Y -+ -+ -L -U -C -J -J -J -C -U -x -_ -i -> -> -! -w -J -a -a -o -k -Q -C -o -h -k -h -k -k -k -h -b -k -J -a -Z -} -} -} -J -Q -C -C -C -C -C -L -c -m -m -Z -> -1 -! -n -? -v -v -; -; -; -; -: -> -i -I -l -l -} -( -] -_ -< -t -Q -) -x -z -X -n -n -x -J -O -x -) -c -U -* -a -h -k -d -h -k -C -o -a -W -# -W -W -h -d -k -p -& -q -B -m -O -O -8 -8 -b -& -W -a -a -& -p -J -) -) -) -) -| -( -{ -{ -{ -) -( -( -L -Q -d -m -w -q -p -q -d -b -h -o -o -q -p -d -d -d -b -b -M -W -h -# -W -% -d -& -M -% -o -q -a -p -* -d -M -W -W -W -% -* -h -b -# -m -d -o -M -& -M -& -0 -m -M -h -a -& -# -* -c -d -h -k -q -k -h -p -c -t -x -\ -| -\ -X -Q -X -q -( -M -# -a -h -a -a -d -p -a -W -8 -& -M -M -# -o -o -o -* -o -M -& -O -h -m -t -\ -$ -x -o -w -M -p -q -M -b -k -# -o -a -p -# -* -h -o -a -Q -} -Q -C -Q -L -Q -L -x -] -? -[ -_ -[ -i -i -\ -t -v -/ -z -f -u -v -c -X -z -Y -v -u -X -~ -+ -J -J -L -u -u -X -J -J -J -U -J -Y -1 -i -j -w -b -a -o -a -d -0 -o -k -b -h -h -k -k -h -d -a -J -d -Z -C -C -J -J -J -J -X -c -u -U -J -f -m -m -m -> -( -l -n -[ -j -n -: -; -; -: -; -i -> -l -< -> -{ -( -] -] -~ -j -0 -| -n -C -c -n -n -v -C -C -X -n -c -* -b -k -k -h -h -k -p -& -J -M -M -W -8 -& -k -# -a -O -M -a -8 -w -Q -m -& -8 -8 -& -d -# -q -q -O -Q -0 -( -( -j -| -1 -) -{ -1 -) -1 -b -O -X -C -m -m -w -q -q -p -p -k -a -a -m -w -p -p -p -q -b -o -M -# -a -d -% -o -w -q -o -% -C -Y -p -o -# -M -M -W -& -& -a -p -# -a -m -# -Q -& -B -8 -W -8 -b -M -M -# -W -h -q -O -# -k -h -p -p -w -v -r -z -t -\ -| -8 -0 -| -q -Q -v -% -* -M -h -o -o -a -k -h -d -d -b -b -k -k -a -a -h -k -k -h -M -c -* -0 -c -p -& -n -J -m -k -d -b -M -d -b -d -o -k -w -M -Z -d -o -k -Z -d -w -m -q -m -m -Z -_ -[ -] -} -_ -[ -i -i -/ -f -v -f -c -x -v -v -u -z -v -z -x -n -x -< -~ -J -L -0 -m -d -Q -u -v -v -u -z -J -X -z -> -q -d -a -a -a -Y -0 -o -b -b -k -k -b -h -k -d -k -Y -k -p -C -U -U -c -| -{ -C -U -X -U -u -x -m -m -0 -> -t -l -x -) -x -j -; -; -I -; -; -> -> -l -> -i -) -| -[ -_ -< -r -0 -j -r -L -c -n -v -v -C -U -X -x -o -h -k -b -b -p -k -m -~ -W -x -U -d -d -# -& -W -O -0 -M -d -p -M -p -w -p -* -# -& -a -# -d -m -Z -Z -O -O -[ -( -1 -1 -U -{ -1 -1 -{ -* -0 -m -v -d -m -m -m -w -w -q -q -d -k -* -Z -m -w -q -q -p -d -b -k -k -k -b -b -b -p -Z -p -% -M -b -d -# -M -M -M -M -# -8 -# -# -o -m -* -d -k -b -% -& -M -# -Z -h -k -b -b -w -q -* -* -p -k -k -Z -X -z -t -t -/ -\ -1 -* -$ -) -v -Q -Y -8 -* -M -M -b -h -o -o -o -* -# -* -o -k -k -o -o -# -* -o -d -* -8 -Q -h -z -X -) -n -1 -p -* -h -k -W -k -b -o -o -a -m -q -Z -O -o -k -C -| -w -m -m -m -m -q -_ -} -} -} -+ -] -i -i -/ -x -c -/ -v -j -v -v -1 -z -x -c -| -c -j -+ -~ -J -Q -Q -m -m -d -d -m -m -Z -u -u -n -f -! -( -q -k -a -a -# -0 -* -k -b -b -a -b -k -k -p -b -0 -k -m -O -b -d -x -( -) -C -z -c -U -f -- -m -m -C -! -r -l -\ -/ -f -j -I -l -l -; -l -> -> -l -! -! -| -( -[ -- -+ -c -m -x -x -r -( -| -/ -| -j -1 -v -h -h -a -k -k -p -b -b -n -& -! -z -c -q -p -b -W -# -a -0 -W -p -p -W -w -p -a -b -a -L -* -p -w -Z -Z -Z -Z -0 -Q -) -{ -} -1 -{ -1 -{ -] -Q -Z -Z -t -Q -Z -m -Z -w -w -w -q -d -b -o -O -Z -m -w -q -q -d -k -h -h -a -k -# -M -% -Z -w -8 -& -8 -p -% -# -# -# -* -o -% -# -* -a -a -a -Z -W -8 -% -& -M -q -U -L -m -k -h -# -o -* -B -Z -o -d -m -u -r -/ -/ -\ -| -( -c -v -| -u -m -z -& -o -h -M -M -b -o -h -o -* -* -* -o -* -M -M -M -* -* -o -h -k -8 -Q -b -f -t -n -r -/ -* -# -k -p -W -M -a -W -h -o -p -# -d -w -* -* -Q -( -w -m -m -m -m -w -? -] -[ -[ -_ -? -i -> -\ -r -v -t -z -f -v -u -t -z -x -c -u -u -j -- -~ -C -J -Q -m -m -d -d -m -m -p -w -Z -0 -u -i -: -m -k -a -h -k -O -* -d -k -b -k -b -k -b -p -b -w -k -p -q -d -p -J -{ -t -c -v -X -C -+ -( -m -m -Y -I -v -l -n -/ -) -r -> -l -l -~ -+ -< -< -! -! -l -\ -( -[ -[ -? -v -Z -( -) -\ -{ -) -( -t -u -| -h -h -h -a -k -b -d -p -o -W -f -f -# -W -# -a -b -b -& -* -0 -& -M -8 -* -k -w -o -\ -, -k -Z -m -m -Z -Z -Z -Q -Q -Q -O -{ -[ -1 -1 -1 -} -0 -O -Z -L -f -0 -m -m -m -m -m -w -p -d -b -Y -Q -Q -Z -Z -q -q -p -k -k -h -h -h -k -k -8 -Z -8 -W -& -M -q -% -# -* -* -M -M -M -# -* -a -a -b -q -W -q -% -M -M -# -k -b -b -h -# -a -o -8 -& -C -O -q -b -# -p -f -\ -\ -| -| -X -r -\ -n -X -n -# -* -b -h -* -* -b -b -o -a -a -o -o -o -a -d -p -o -o -* -a -p -a -m -Q -0 -c -Z -n -Z -o -W -M -W -W -M -a -M -a -k -p -* -o -0 -* -# -0 -c -w -q -m -m -Z -Z -- -[ -] -[ -- -? -i -i -( -r -v -\ -X -r -j -x -v -X -u -c -n -c -j -( -~ -Q -J -Q -0 -m -m -w -Z -m -p -q -O -Q -U -L -; -Z -b -k -a -p -o -a -m -h -b -b -b -k -d -q -p -k -d -q -w -q -q -q -( -\ -c -v -U -Q -? -r -m -Z -z -I -Y -l -/ -c -) -j -< -l -! -~ -+ -; -< -! -~ -i -\ -( -] -_ -} -v -O -j -\ -z -( -f -t -| -n -{ -h -a -a -h -k -b -d -d -, -* -c -L -M -o -a -p -# -p -M -* -0 -* -M -8 -W -b -p -k -( -l -c -m -O -O -0 -0 -Q -Q -L -Q -C -c -[ -) -{ -} -Q -0 -Z -Q -L -f -Z -Z -Z -Z -m -m -m -q -d -b -J -J -L -0 -Z -w -q -p -k -k -k -h -h -k -o -8 -O -& -8 -# -o -w -B -# -# -& -& -M -* -# -a -# -a -m -# -M -o -% -W -C -& -h -k -b -k -o -# -M -M -M -Q -b -@ -# -J -\ -/ -| -\ -( -( -( -( -| -x -} -r -Q -o -k -p -h -o -* -k -d -o -a -b -p -q -q -a -h -m -# -o -a -b -p -d -0 -L -U -v -w -c -d -o -k -k -b -k -h -o -k -d -a -* -o -C -* -M -Q -X -w -w -m -m -m -w -_ -- -[ -[ -- -- -i -i -| -r -n -| -X -x -t -n -u -Y -v -z -) -n -f -x -~ -J -C -Q -Q -m -m -m -m -m -m -m -Z -Q -U -C -; -0 -d -k -a -o -o -a -* -m -o -b -b -b -p -m -p -d -w -q -O -0 -w -m -/ -f -u -z -C -O -_ -X -m -0 -r -I -J -l -t -Y -? -x -1 -; -+ -+ -+ -> -~ -! -! -+ -| -( -? -_ -( -v -L -\ -c -Q -c -J -Y -X -z -a -a -a -a -a -h -p -m -d -& -c -L -k -a -o -* -k -d -M -d -W -Y -m -8 -# -p -p -k -M -x -i -\ -L -Q -Q -0 -L -C -J -C -J -C -C -} -( -f -Z -O -Z -0 -C -C -z -p -q -m -m -m -m -m -q -p -k -U -U -J -Q -Z -Z -w -w -q -q -w -k -h -h -k -a -# -& -Z -& -o -w -B -& -W -W -# -* -8 -d -# -o -q -m -W -d -h -8 -W -& -# -& -q -o -# -% -W -B -8 -h -0 -O -k -w -/ -} -) -( -( -) -( -( -( -) -j -M -f -o -a -o -p -q -k -o -o -h -d -q -h -h -k -h -a -J -* -* -b -p -b -Z -k -O -L -v -U -& -j -Z -w -k -k -k -b -p -d -d -m -w -w -Z -w -* -k -q -C -Z -m -m -m -Z -m -_ -? -] -] -- -[ -i -i -( -j -n -/ -z -x -/ -x -~ -c -t -X -+ -n -f -U -~ -j -L -Q -L -m -m -m -m -m -Z -Z -Z -O -Y -Y -; -v -p -k -h -a -a -a -* -p -Z -a -d -b -q -0 -w -d -m -O -0 -0 -Z -Q -r -x -z -X -C -0 -[ -O -m -C -{ -l -C -l -n -X -+ -n -| -) -- -+ -+ -_ -; -l -i -{ -\ -( -[ -[ -j -v -C -\ -v -U -u -X -v -Y -a -a -h -a -k -w -z -0 -h -m -# -O -C -a -h -a -o -# -k -d -L -& -p -Z -8 -a -h -O -b -Z -m -{ -/ -U -Q -0 -L -C -L -J -C -J -J -C -U -b -Z -m -O -w -J -J -J -c -o -b -O -w -m -m -Z -q -p -k -U -J -U -C -O -Z -m -q -d -p -q -q -k -a -b -a -o -w -U -W -a -d -B -M -# -o -* -* -o -a -* -b -q -* -M -# -M -8 -& -M -W -M -p -# -W -8 -0 -O -& -b -p -q -0 -| -x -1 -) -) -) -) -) -) -) -) -q -M -/ -h -k -o -h -w -p -b -o -* -a -d -w -w -O -J -O -* -* -X -U -o -b -m -h -0 -Z -n -U -# -n -q -b -q -k -b -p -q -q -p -d -w -w -Q -M -# -m -q -0 -Z -m -m -m -m -Z -- -? -] -] -- -[ -i -i -( -c -n -| -c -r -n -r -? -X -n -z -n -n -j -J -< -- -J -0 -L -Z -d -m -Z -m -Z -Z -Z -O -J -Y -; -I -p -k -a -a -a -a -* -o -a -Z -k -d -w -Z -k -d -w -0 -O -0 -Q -m -x -c -v -z -L -O -{ -Z -m -C -_ -l -J -l -u -X -> -c -) -[ -> -! -> -l -< -! -+ -| -\ -( -_ -+ -t -z -U -f -t -X -r -v -x -Y -a -h -k -k -X -z -z -Q -w -m -& -L -0 -o -h -o -o -o -o -* -q -# -Z -M -# -* -* -J -o -J -L -f -r -Y -C -L -C -L -C -J -J -C -h -o -C -0 -0 -C -0 -X -U -C -J -z -* -# -o -q -w -m -m -q -p -Y -U -J -Y -J -Q -0 -Z -w -p -p -q -q -w -k -b -# -a -a -& -M -o -p -B -# -o -* -# -o -M -a -h -d -d -M -o -# -k -8 -M -W -M -& -Z -# -W -& -W -L -& -d -q -r -\ -) -1 -1 -) -) -) -( -) -) -) -) -c -# -\ -L -* -o -o -k -w -p -d -a -a -k -p -w -w -p -a -o -z -z -) -a -d -0 -p -0 -m -U -L -C -Q -m -p -m -k -d -p -q -p -p -q -w -w -Z -* -p -X -q -C -m -Z -m -m -Z -J -[ -? -? -? -- -] -i -> -) -v -n -( -n -r -x -r -n -X -v -z -u -u -r -Y -< -> -C -0 -C -m -d -d -Z -m -Z -q -Z -O -Y -U -; -, -q -k -h -a -a -a -o -o -o -o -Z -d -O -m -a -p -O -O -Q -Q -m -q -n -c -c -U -L -O -( -Q -m -C -i -! -U -l -n -X -> -n -} -] -> -? -- -l -> -i -i -| -\ -( -- -+ -f -n -Y -f -f -U -U -Y -z -a -h -k -k -/ -z -z -z -L -b -< -o -0 -v -h -h -a -o -a -# -h -k -& -W -h -a -h -k -w -Q -Q -L -X -U -J -Q -L -C -C -J -J -m -\ -* -q -C -U -U -U -v -X -J -C -Q -p -M -M -M -k -p -q -m -q -q -c -Y -Y -J -J -C -0 -Z -Z -w -q -w -p -w -b -b -k -a -k -Z -o -p -b -% -# -* -# -M -M -M -d -k -k -M -# -8 -* -o -8 -W -W -W -W -Z -# -* -& -u -J -W -p -b -n -\ -) -{ -{ -1 -1 -) -( -) -) -) -1 -) -o -\ -O -b -k -o -a -a -q -p -p -d -k -h -k -b -b -q -Z -U -t -o -d -d -X -Q -w -Y -t -Y -C -Z -m -w -p -w -w -Z -Z -O -O -Q -Q -L -Z -k -b -? -Q -Y -J -J -L -L -C -J -U -( -? -] -+ -} -? -{ -| -f -| -t -f -f -f -x -u -U -v -c -t -u -n -X -< -< -0 -Q -C -Z -d -d -Z -m -Z -p -Z -Z -J -J -I -x -w -k -h -a -a -a -a -a -o -o -b -m -p -w -h -b -O -0 -Q -C -m -q -n -X -J -J -C -Z -\ -L -m -C -l -! -J -! -u -z -< -r -( -{ -I -l -I -_ -i -i -i -| -\ -( -] -] -\ -c -U -u -U -L -z -J -v -a -h -h -c -\ -z -z -X -0 -? -u -h -X -U -* -q -h -d -o -# -b -* -* -& -& -o -a -b -d -n -0 -z -C -C -J -L -Q -C -L -J -j -c -d -* -z -Q -X -J -t -x -X -J -C -q -m -* -W -W -# -Z -q -w -w -q -v -z -Y -U -J -C -L -Q -Z -m -w -w -q -q -q -k -k -h -w -w -W -o -b -% -M -W -W -W -M -a -Z -a -# -W -8 -& -o -a -8 -& -& -M -W -m -M -# -B -M -J -W -p -b -x -| -1 -{ -{ -1 -1 -) -) -) -) -1 -1 -{ -q -( -Q -0 -q -a -o -a -q -p -p -q -q -w -m -m -m -m -Z -v -h -* -r -Z -u -Q -h -j -_ -C -Z -O -q -w -p -q -q -Z -O -O -Z -Q -Q -L -O -Z -Q -) -0 -J -J -C -L -L -L -J -J -( -] -] -_ -} -? -\ -x -n -v -u -u -r -f -u -v -Y -x -c -- -x -n -Y -~ -~ -0 -C -C -m -d -d -Z -m -Z -q -Z -Z -C -J -; -Z -m -k -p -a -a -a -a -h -o -o -a -Z -0 -w -d -b -Q -0 -Q -Q -Q -p -c -U -J -Y -C -Z -c -C -m -C -; -i -J -l -c -z -_ -u -| -} -? -? -? -l -- -> -_ -| -\ -( -] -] -\ -v -C -u -1 -/ -/ -u -h -a -a -) -n -r -X -z -z -Q -Y -u -b -a -Z -Q -M -b -o -k -a -q -* -# -# -& -M -o -O -J -X -x -\ -J -L -C -Q -Q -C -C -! -L -w -# -# -c -L -v -r -t -f -X -J -Q -Q -Z -h -& -M -W -k -q -q -w -w -u -c -X -Y -U -J -J -Q -0 -O -m -m -w -w -p -b -b -h -m -Z -8 -a -b -% -W -W -W -W -o -8 -J -M -W -* -% -W -* -* -& -W -W -W -# -w -M -W -& -o -c -M -q -b -u -) -1 -{ -{ -{ -1 -) -) -1 -1 -1 -1 -o -m -} -C -U -b -O -o -a -a -q -p -p -q -q -w -m -w -Z -Y -b -* -n -W -m -b -Q -a -/ -+ -M -b -w -p -w -Y -w -w -Z -O -O -Z -0 -L -C -O -n -Q -L -0 -0 -J -C -L -L -L -J -J -| -[ -] -- -] -[ -\ -) -\ -f -f -c -v -c -u -1 -Y -1 -z -/ -v -x -Y -< -+ -Q -C -C -m -Z -w -m -m -m -Z -O -Z -C -C -_ -U -> -h -k -b -b -q -k -h -o -a -o -o -Q -v -p -b -q -q -w -p -q -q -U -U -L -C -Q -O -X -J -m -C -; -i -U -l -u -Y -_ -x -\ -1 -[ -] -] -_ -+ -> -i -( -\ -( -+ -+ -\ -X -C -/ -\ -/ -f -X -a -h -0 -1 -r -) -z -X -z -0 -z -f -@ -k -Z -Q -L -h -h -a -o -* -o -W -o -o -a -b -p -v -h -| -) -r -J -L -Q -L -J -> -X -m -# -o -L -n -O -) -r -f -r -v -L -Q -Q -Z -# -M -# -M -# -q -p -q -q -u -v -z -X -U -U -J -J -Q -0 -O -Z -Z -w -p -b -b -# -m -& -& -a -k -8 -M -M -# -o -# -W -Y -W -W -& -# -o -o -o -W -& -& -W -M -Z -# -W -W -W -L -# -m -b -d -) -1 -{ -{ -{ -{ -) -) -1 -1 -1 -{ -* -0 -{ -Q -J -U -Z -b -a -o -o -p -d -b -b -d -p -q -0 -p -h -Q -M -k -q -O -b -* -r -v -a -b -d -d -w -/ -w -w -Z -O -O -Z -0 -Q -Q -C -U -Z -0 -0 -0 -J -C -Q -L -C -J -J -( -[ -] -] -] -( -\ -{ -f -j -| -t -| -j -v -( -J -n -X -n -v -c -U -> -+ -L -C -L -m -m -m -m -m -m -Z -Z -m -L -C -) -: -O -d -d -p -d -p -b -h -a -h -o -o -o -k -O -b -Z -q -m -q -p -q -J -Y -q -q -q -w -w -0 -Z -U -; -i -J -I -c -Y -( -x -( -) -! -! -! -> -- -< -i -| -\ -( -[ -] -( -z -Y -L -L -C -n -k -a -h -Y -\ -f -f -z -X -C -O -c -x -M -& -k -q -o -q -a -a -o -k -k -& -& -b -o -p -O -0 -( -( -{ -( -C -L -L -O -( -Y -Y -a -# -* -v -B -X -) -j -t -k -Q -Q -Q -Q -m -& -Z -h -# -W -M -q -p -q -u -u -v -z -Y -Y -J -J -L -Q -0 -O -Z -w -p -b -d -o -0 -& -& -a -k -B -M -* -# -# -# -& -& -& -8 -o -& -# -# -o -W -& -& -& -M -0 -# -* -W -W -8 -* -m -d -b -Y -{ -{ -{ -{ -{ -1 -) -] -{ -{ -] -# -J -} -C -J -L -d -b -o -* -* -o -b -b -b -d -p -w -q -k -O -* -o -q -h -b -d -0 -/ -U -q -z -h -d -d -_ -q -w -Z -Z -O -O -0 -L -Q -C -z -U -J -0 -Q -U -C -Q -Q -C -J -J -( -[ -] -[ -[ -\ -f -1 -t -\ -/ -f -} -j -v -c -J -c -X -n -v -u -U -> -~ -J -C -C -m -Z -m -w -m -m -m -Z -Z -L -L -J -/ -Y -w -d -d -d -b -k -k -o -h -p -o -o -a -* -b -q -w -m -q -p -w -J -U -q -q -q -q -w -0 -Z -U -; -> -U -> -v -z -f -r -t -) -} -[ -[ -[ -] -> -> -| -\ -) -] -] -1 -Y -X -L -L -L -c -h -k -J -Y -( -z -r -X -X -Q -Z -z -k -k -J -o -h -o -h -a -o -* -o -p -& -& -W -h -m -Q -8 -] -) -| -/ -J -z -U -/ -Y -n -p -* -a -o -Z -) -L -( -r -j -L -8 -L -Q -Q -k -a -m -d -a -W -o -b -p -b -n -n -v -c -c -v -Y -J -J -L -Q -0 -O -m -q -d -d -k -k -& -k -b -k -B -W -M -# -M -& -8 -d -& -% -& -# -o -* -o -8 -& -8 -& -# -C -* -* -& -W -% -* -w -b -? -? -] -{ -{ -{ -{ -1 -( -{ -{ -{ -# -M -C -] -0 -O -C -a -p -a -# -* -o -* -* -h -d -p -q -k -w -a -# -d -q -h -h -h -c -} -* -Z -Y -o -d -k -_ -q -w -Z -Z -O -O -0 -C -Q -C -J -X -J -0 -C -C -C -C -Q -J -J -J -1 -- -[ -} -[ -\ -/ -t -t -( -/ -t -[ -f -v -v -C -z -Y -u -v -x -Y -> -~ -J -C -C -Z -b -b -m -m -m -q -Z -Z -Q -Q -c -f -Y -m -J -d -b -b -b -k -k -k -b -a -o -a -o -b -q -q -Z -q -p -q -Q -Y -q -p -q -p -w -0 -Z -J -; -< -U -l -c -Z -c -n -f -1 -{ -{ -} -_ -[ -< -_ -\ -\ -{ -_ -+ -\ -Y -z -C -J -Q -0 -h -U -Y -z -| -/ -r -U -z -L -O -O -k -M -Q -x -u -Q -0 -* -o -o -o -k -W -& -* -k -O -O -j -} -) -? -{ -! -} -b -v -n -c -o -* -o -b -& -p -b -t -j -O -t -% -Q -L -Q -o -Z -b -d -h -M -M -b -# -b -v -n -v -v -v -v -X -Y -C -L -Q -0 -O -m -q -p -b -d -8 -h -a -q -o -% -& -W -& -& -8 -& -v -8 -& -W -# -# -# -a -& -8 -& -W -M -L -# -# -M -M -% -* -m -# -} -- -v -1 -{ -{ -1 -1 -1 -{ -{ -_ -# -# -0 -[ -C -d -X -h -U -p -o -# -# -o -* -o -o -a -h -k -h -# -o -q -m -Q -m -h -O -X -X -0 -h -o -d -k -/ -w -w -Z -Z -O -O -0 -L -U -L -U -J -J -0 -L -C -L -C -L -J -J -J -( -] -] -[ -{ -/ -f -) -t -( -/ -f -\ -j -u -z -C -X -U -v -z -n -z -> -+ -J -C -C -m -d -d -m -m -w -q -m -Z -Q -Q -X -u -Y -Z -/ -b -b -b -b -b -b -b -k -a -a -a -# -k -m -p -Z -p -p -w -J -Y -q -d -p -q -w -0 -Z -C -; -+ -X -> -u -m -n -v -x -1 -( -] -~ -? -} -< -{ -\ -\ -} -+ -+ -f -U -c -U -J -m -a -a -c -v -z -1 -u -X -J -U -0 -Z -k -h -c -} -X -Z -w -q -C -m -o -b -w -W -M -d -w -a -q -~ -} -\ -~ -> -f -j -x -L -a -* -o -o -o -| -? -Q -k -t -b -h -p -v -Q -L -o -J -Q -p -q -p -# -M -o -h -Z -n -u -u -u -v -c -z -X -U -J -L -Q -O -Z -q -d -d -d -8 -8 -& -o -p -B -B -% -8 -8 -& -& -n -& -& -M -M -o -# -* -& -& -W -& -8 -Q -# -M -# -M -8 -* -m -/ -[ -] -] -1 -{ -{ -{ -1 -1 -{ -{ -* -# -# -m -? -f -C -L -b -Q -O -m -# -o -M -W -* -o -h -b -b -W -a -O -Z -O -* -o -c -\ -c -M -d -k -o -b -k -Q -b -d -p -p -q -q -q -m -m -m -Z -m -Z -q -m -Z -w -w -m -Z -C -| -| -} -} -] -{ -j -f -) -t -( -t -f -f -r -v -u -J -Y -J -/ -n -u -v -> -~ -J -C -C -Z -b -b -w -m -m -p -Z -Z -Q -0 -! -n -Y -c -z -k -b -p -b -k -b -b -h -a -a -q -h -d -q -q -m -p -Z -w -Q -L -q -d -p -p -w -O -Z -C -; -? -u -} -x -Z -\ -u -n -( -} -} -} -} -[ -< -) -\ -\ -[ -] -1 -f -J -z -c -C -C -a -J -z -z -Y -f -u -n -J -J -Z -0 -h -C -8 -[ -q -d -d -d -q -* -a -k -Z -W -h -k -q -m -8 -+ -+ -u -/ -/ -t -1 -C -a -W -M -W -a -a -o -\ -Q -k -t -L -8 -Q -z -Q -L -c -r -c -p -q -d -* -M -* -k -b -Z -0 -v -v -v -v -c -X -U -Y -L -L -0 -Z -q -p -d -d -M -* -q -Z -k -B -B -% -% -8 -& -& -x -& -M -M -# -# -o -o -& -& -& -W -8 -0 -M -M -o -# -M -* -0 -) -] -] -] -| -1 -{ -} -{ -1 -{ -- -M -# -# -w -j -O -C -C -q -J -* -b -a -# -b -M -M -* -h -p -d -w -m -O -O -a -Q -o -0 -f -* -U -q -h -a -k -k -d -b -p -p -m -q -q -q -Z -w -m -Z -m -m -w -Z -m -m -m -m -Z -Q -| -) -[ -{ -} -1 -r -f -} -/ -) -f -f -j -x -c -f -C -/ -J -j -c -n -n -i -+ -C -L -L -m -b -b -m -Z -m -p -Z -Z -Q -0 -" -n -u -f -C -Z -d -q -b -o -b -b -a -a -a -p -0 -b -q -w -m -0 -m -q -Q -Q -p -d -p -p -Y -O -m -Q -I -[ -j -\ -m -Z -( -z -v -} -{ -) -} -} -} -< -) -\ -\ -[ -] -| -j -U -v -Y -J -a -o -z -n -Y -X -j -C -c -J -J -Q -h -a -J -} -f -m -d -d -q -b -d -# -a -m -M -p -k -q -O -L -_ -_ -/ -\ -/ -c -o -& -o -M -M -W -W -h -Y -w -m -h -| -8 -J -L -u -Q -o -C -0 -q -x -x -q -k -M -# -a -a -* -b -* -c -v -c -c -z -z -Y -J -L -0 -0 -w -p -b -p -a -h -q -o -a -% -% -% -M -B -8 -& -z -* -W -# -M -# -M -o -8 -& -& -& -J -O -W -M -W -# -b -a -f -} -] -] -} -] -J -{ -{ -1 -1 -{ -M -M -# -# -m -h -Q -L -Q -w -0 -m -# -o -* -* -M -* -h -w -b -- -0 -m -0 -L -q -k -C -X -z -& -X -o -k -a -k -k -q -b -p -q -Z -q -q -q -w -q -m -O -w -0 -Z -Z -m -m -m -m -Z -J -| -( -} -{ -) -) -f -\ -} -/ -) -f -j -r -x -c -r -C -r -U -X -c -n -x -i -+ -C -Q -C -O -b -b -m -m -m -m -Z -Z -O -0 -: -u -v -/ -u -d -d -w -k -o -b -b -a -a -a -d -L -k -p -w -p -0 -w -q -L -0 -Z -Z -m -w -Z -O -m -0 -! -{ -\ -X -Z -m -/ -r -| -{ -- -i -i -_ -{ -) -\ -\ -| -[ -] -r -/ -C -c -n -\ -h -| -n -| -x -n -c -n -C -L -z -w -a -o -n -] -Q -p -b -k -L -b -C -o -h -Z -8 -k -h -O -0 -< -- -Y -\ -\ -/ -Y -q -* -M -M -q -# -O -a -w -C -h -h -a -W -J -Q -c -J -J -h -M -* -p -j -L -d -M -W -# -o -o -d -k -c -v -c -c -X -Y -X -J -C -L -Q -q -p -d -p -b -a -h -8 -a -& -& -o -W -8 -8 -8 -Q -* -W -& -M -* -* -o -& -& -& -& -X -Z -# -# -& -# -O -8 -f -} -[ -] -} -] -{ -X -O -( -{ -{ -# -& -# -M -O -& -C -0 -Q -q -L -p -* -b -q -o -a -h -Z -C -i -_ -m -C -C -0 -a -o -X -r -O -a -J -# -h -a -k -k -m -d -d -p -Z -m -w -w -q -q -m -O -w -0 -Z -Z -m -m -w -m -Z -z -| -( -) -{ -) -) -j -\ -{ -t -1 -f -r -f -x -X -X -L -Y -J -X -X -X -j -> -+ -L -Q -C -0 -q -w -w -m -m -m -m -Z -Z -O -l -v -X -f -v -d -d -m -h -o -b -b -h -a -o -o -h -d -m -Z -L -Z -p -q -L -C -Z -m -Z -w -J -O -m -Z -> -{ -) -c -Z -m -j -c -j -\ -{ -} -{ -l -] -) -/ -| -| -[ -? -t -t -U -c -U -X -h -f -n -u -v -Y -f -c -Y -C -Y -a -a -C -q -_ -q -p -p -q -q -Q -# -d -o -L -M -M -k -p -k -~ -c -0 -x -\ -0 -Z -w -w -0 -O -X -x -o -X -t -n -o -k -a -u -C -Q -n -0 -M -M -W -W -a -d -j -p -# -W -o -o -Y -U -Z -p -c -z -X -X -X -X -Y -C -L -0 -p -q -d -d -k -Z -k -& -a -% -% -o -$ -@ -8 -8 -o -* -& -8 -* -# -M -* -& -W -W -W -o -Z -p -# -* -# -C -j -{ -[ -] -[ -] -] -? -b -U -J -J -w -# -# -# -* -Z -8 -Z -Q -0 -w -O -b -o -w -Q -Q -# -a -O -z -> -. -U -C -C -Q -m -W -Z -x -( -k -m -a -h -o -k -k -m -w -d -d -m -Z -Z -w -q -q -m -O -w -Q -Z -O -m -m -w -O -m -c -( -| -| -/ -\ -1 -j -\ -{ -t -1 -f -r -f -x -X -X -J -U -C -X -Y -Y -r -< -+ -0 -C -C -0 -q -q -w -m -q -m -m -Z -Q -Z -_ -v -c -( -v -d -p -Z -h -o -b -b -a -o -* -o -L -Z -w -0 -m -w -q -q -Q -L -Z -O -Z -w -C -O -m -m -> -| -{ -z -Z -Z -r -X -| -_ -] -? -- -| -\ -( -\ -( -| -} -? -x -| -U -u -Q -b -q -X -U -Y -L -Y -j -v -U -C -q -o -a -x -o -> -z -w -0 -C -Y -w -o -q -a -Q -8 -# -h -Z -W -i -l -c -Y -x -J -Q -0 -Q -M -U -x -Z -m -C -( -1 -d -h -& -n -C -Q -u -k -M -# -W -& -W -# -p -X -0 -M -# -k -m -b -O -Q -m -z -z -Y -X -X -Y -J -C -Q -m -p -d -d -k -Q -8 -& -W -& -# -8 -o -W -8 -8 -8 -# -W -* -* -# -M -* -W -* -* -W -W -Z -O -# -# -# -Q -f -} -[ -] -[ -[ -? -[ -Q -U -J -C -u -h -Z -k -p -h -% -t -Y -Z -w -a -a -a -O -0 -Z -# -h -m -Y -> -? -L -C -Q -m -W -O -v -X -L -Z -L -0 -# -o -k -h -Z -Z -p -p -Z -Z -Z -m -q -q -m -0 -m -Q -w -Z -m -m -w -Z -Z -z -( -| -( -/ -t -) -j -| -} -/ -{ -t -x -\ -j -X -z -L -Y -C -X -U -Y -r -- -+ -0 -C -L -Q -w -q -q -m -q -p -Z -Z -C -O -0 -c -z -u -C -d -d -Z -a -o -k -b -a -a -* -o -q -Z -w -q -w -m -q -q -Q -C -Q -L -Z -w -C -O -m -m -> -j -} -Y -Z -0 -x -c -) -~ -? -? -- -[ -_ -~ -> -1 -/ -} -| -u -1 -J -X -O -h -0 -X -U -Y -J -J -x -z -C -C -p -o -Z -d -Z -+ -} -p -0 -0 -C -k -b -q -a -p -8 -# -w -m -d -i -t -X -X -n -C -L -0 -Z -X -C -r -L -w -X -) -] -b -q -a -| -L -Q -# -Y -a -# -W -& -& -W -M -q -U -x -# -a -0 -h -p -Q -w -b -Y -Y -X -X -Y -U -C -Q -O -p -b -p -b -q -& -& -8 -M -& -o -M -& -W -W -% -o -W -k -& -* -# -a -o -h -a -# -# -q -O -* -# -# -( -j -} -[ -[ -[ -[ -? -) -m -U -U -U -j -b -p -b -w -* -W -- -Q -Z -w -b -q -b -q -w -O -# -h -m -O -J -X -0 -Q -0 -# -# -O -v -O -? -Y -v -* -u -* -k -k -Z -m -p -p -m -O -O -Z -m -w -w -m -m -J -m -w -m -Z -Z -m -O -C -{ -( -( -/ -f -) -j -\ -{ -t -[ -/ -r -( -r -Y -x -J -u -z -r -X -X -j -[ -+ -0 -L -C -L -b -b -q -w -w -q -Z -m -m -d -/ -j -Y -v -O -p -m -Z -a -o -a -k -o -a -* -* -a -0 -q -m -Z -Z -O -q -L -U -L -Q -Z -m -J -O -m -Z -> -c -[ -X -Z -0 -x -Y -( -v -u -Y -} -? -~ -< -> -) -j -( -[ -v -t -U -c -0 -b -Q -X -X -z -X -Y -x -Q -Q -Z -o -a -m -Z -C -a -) -z -L -w -C -b -* -d -# -# -8 -o -w -8 -; -n -c -C -U -Y -J -Q -Q -L -U -r -C -J -h -{ -{ -} -o -p -% -r -C -L -J -c -U -W -W -& -& -& -& -M -o -* -* -L -# -o -k -p -C -p -p -X -X -X -Y -J -C -Q -0 -p -d -p -d -M -& -M -% -8 -& -# -W -8 -8 -B -B -# -% -h -a -o -o -k -p -p -b -* -& -q -k -a -# -# -c -L -v -? -} -} -} -{ -t -u -u -n -r -| -q -/ -w -L -a -o -J -O -0 -Z -o -b -o -d -0 -Q -* -m -b -b -q -b -Z -O -w -a -Z -m -z -v -C -Z -O -J -w -z -k -b -m -q -Z -Z -0 -0 -Z -0 -0 -O -C -C -L -C -L -Q -C -C -J -U -U -J -Y -( -( -/ -t -) -j -| -{ -\ -[ -t -r -{ -r -X -u -Y -I -f -t -U -v -f -) -+ -L -L -C -C -b -b -w -w -w -p -Z -Z -m -w -> -| -U -u -0 -q -w -Z -h -o -a -h -o -a -* -o -a -U -q -w -0 -Q -O -q -Q -C -0 -O -m -w -C -O -m -0 -> -U -} -c -0 -Z -f -X -x -c -X -Y -X -z -( -f -t -/ -| -t -r -n -| -J -z -Q -p -C -Y -J -J -c -Y -X -U -L -d -o -o -L -C -C -k -C -U -Z -O -L -Z -h -p -8 -M -& -M -d -% -; -_ -L -t -L -Q -C -O -j -J -L -j -C -U -b -1 -{ -} -b -& -| -f -/ -d -0 -x -X -M -M -W -& -& -& -p -M -W -b -M -o -m -o -o -Z -b -p -p -X -Y -Y -J -C -L -0 -p -d -d -p -M -& -& -B -8 -W -W -M -B -& -8 -% -o -& -a -a -& -o -U -I -i -, -o -M -L -o -k -# -Q -L -x -] -{ -{ -) -{ -] -c -m -j -v -1 -c -w -C -Q -n -* -h -0 -O -p -h -p -k -k -w -O -Z -# -w -# -b -k -k -b -p -p -# -m -Q -q -J -w -q -d -0 -0 -Q -k -b -Z -Z -w -Z -O -0 -Z -0 -0 -Z -Q -C -L -J -L -Q -L -C -U -Y -Y -U -X -) -\ -f -t -1 -j -\ -{ -/ -] -t -f -} -j -X -v -v -^ -' -v -C -v -j -\ -+ -U -L -C -L -d -b -q -w -q -m -m -Z -m -w -u -t -Y -Y -Q -m -m -Z -a -o -a -a -o -a -* -* -h -J -d -Z -O -L -Z -q -L -Z -Z -m -Z -m -L -O -m -Q -< -C -[ -c -0 -Z -/ -Y -f -c -X -X -X -c -\ -| -| -\ -| -x -f -v -f -Y -x -p -L -C -Y -Q -Y -L -Y -t -z -Q -b -o -m -b -X -m -x -d -m -b -O -Q -0 -q -k -M -# -* -M -q -% -_ -m -C -C -O -0 -Q -O -Q -U -r -L -C -Q -q -1 -1 -h -a -8 -\ -\ -/ -u -v -r -Y -O -M -h -h -o -W -J -k -} -a -W -0 -m -h -* -p -M -p -p -q -z -X -Y -J -L -0 -d -d -d -d -M -W -& -8 -W -8 -M -W -B -& -# -& -o -o -k -b -h -o -1 -< -> -_ -| -* -Q -* -& -* -W -Q -O -@ -] -v -) -[ -b -k -b -b -q -0 -Z -U -n -c -0 -o -W -L -J -v -Z -p -b -k -k -d -Z -# -w -Z -h -k -k -k -d -d -W -m -Y -* -Z -q -% -& -Q -C -q -k -d -Z -X -w -Z -0 -0 -Z -Q -O -O -Q -J -Q -J -L -Q -L -C -J -Y -U -Y -v -| -t -/ -j -\ -t -{ -_ -~ -? -) -f -} -x -z -Y -n -I -| -X -C -Y -x -n -+ -x -L -O -Q -q -p -q -w -q -m -m -Z -k -k -t -r -J -U -0 -m -w -m -o -a -o -o -o -a -* -o -h -L -p -Z -L -0 -L -w -Q -0 -b -b -p -q -C -0 -m -L -> -L -[ -c -Z -0 -j -Y -n -Y -X -X -Y -n -| -| -| -| -( -f -f -x -x -J -v -a -J -L -U -C -L -J -Y -x -0 -b -o -o -p -d -Q -0 -q -n -p -b -O -( -w -Y -* -b -M -W -# -m -8 -/ -Z -Y -J -m -C -Z -o -J -f -O -C -C -* -J -) -W -O -a -# -) -\ -b -X -v -f -x -U -k -a -k -b -h -b -\ -) -M -W -m -w -h -# -h -p -p -p -p -q -Y -Y -J -L -0 -p -d -b -d -* -h -& -& -M -8 -W -B -W -& -Z -& -# -a -k -k -p -* -* -< -i -i -~ -U -Z -* -h -h -d -k -z -Z -b -Q -} -w -* -o -b -Z -z -p -X -C -X -p -o -o -W -p -p -0 -X -u -a -a -b -b -m -* -m -m -a -k -b -p -p -d -m -M -J -z -0 -8 -* -a -Y -U -b -h -d -Z -j -m -m -0 -0 -Z -0 -0 -0 -Q -C -L -C -L -Q -L -J -J -U -X -Y -u -f -/ -t -f -t -t -/ -{ -/ -[ -t -f -1 -f -Y -U -( -, -v -Y -C -J -u -J -+ -| -0 -L -O -p -q -q -w -w -w -Z -m -b -* -( -j -Y -Q -O -w -w -Z -o -a -o -o -o -a -* -h -d -O -q -Z -0 -0 -Z -w -Q -Z -b -b -p -p -J -0 -Z -C -> -L -} -X -Z -Q -n -J -x -t -j -n -r -n -( -| -| -| -/ -x -( -j -j -J -Y -o -C -Y -X -U -C -r -c -X -Q -p -o -q -b -k -Z -m -w -Z -p -q -Q -Q -a -c -# -q -o -W -b -Z -] -! -w -a -Y -m -Q -J -0 -J -Q -j -Q -L -a -[ -1 -a -p -a -W -| -t -v -c -X -c -) -J -0 -a -b -d -d -Y -{ -# -& -W -Z -w -d -M -M -p -d -d -p -q -X -Y -Y -C -Q -p -b -b -d -W -b -& -& -# -& -W -@ -& -M -Y -M -o -a -h -b -b -a -# -- -> -> -! -C -w -* -o -d -8 -v -Q -u -M -J -Z -a -o -o -o -0 -q -C -J -b -z -p -p -\ -m -w -d -X -C -] -0 -k -b -d -w -m -O -m -b -b -b -b -k -a -q -Q -p -0 -0 -# -# -w -0 -Z -h -a -b -Z -/ -m -O -m -m -m -Z -Z -O -0 -Q -L -C -Q -0 -L -C -U -J -Y -Y -j -/ -\ -t -f -t -f -f -t -j -j -j -r -j -x -U -z -( -! -U -Y -C -L -c -0 -+ -{ -0 -L -O -k -d -q -q -q -m -Z -b -b -h -) -f -J -C -Z -q -w -m -* -h -o -o -* -p -Z -b -C -m -q -p -Z -O -w -q -Q -p -k -b -d -p -J -Q -Z -J -> -C -{ -c -O -U -n -C -r -) -/ -f -n -n -( -( -v -/ -| -f -f -/ -j -U -C -X -u -j -x -z -U -z -U -u -U -a -o -d -b -Z -O -b -k -q -Q -0 -m -b -U -w -a -m -b -# -q -h -l -Z -p -o -Y -C -Q -8 -Z -L -C -n -Q -L -m -1 -{ -_ -a -h -( -\ -q -X -v -Y -Y -j -1 -0 -m -p -k -b -f -# -k -& -z -Q -Z -p -# -W -b -d -d -p -p -z -Y -U -C -0 -q -b -b -d -& -Z -& -# -a -8 -% -W -8 -8 -u -* -o -a -h -k -b -h -W -* -h -) -o -r -d -& -c -% -z -c -x -Q -o -Y -k -o -o -o -a -w -d -Z -Z -L -m -a -Q -! -O -8 -U -c -z -r -\ -h -h -b -w -O -w -d -q -M -h -o -a -& -w -C -M -Y -C -k -p -0 -b -x -p -o -d -m -{ -m -Z -0 -0 -O -0 -Z -O -L -0 -C -C -Q -0 -C -J -Y -U -U -J -f -/ -f -f -x -r -r -r -j -j -j -j -r -x -x -Y -u -J -| -Q -u -L -X -U -0 -+ -] -0 -L -O -k -b -q -q -q -m -d -k -b -J -] -j -0 -L -Z -q -q -w -* -a -o -o -o -a -h -d -q -w -q -p -q -w -q -w -Q -d -k -k -b -d -J -Q -O -J -> -J -{ -u -O -U -X -C -n -c -z -j -u -x -c -x -n -f -( -t -x -\ -j -Y -h -c -J -c -c -Y -Q -Z -X -L -d -a -o -d -d -Z -L -k -h -p -Q -Q -p -b -u -0 -o -q -b -W -p -8 -{ -0 -h -# -J -J -L -Q -W -f -Q -x -O -0 -k -1 -{ -? -M -a -x -\ -Z -c -z -U -J -J -( -L -q -q -d -k -X -o -k -W -U -L -Z -Z -# -W -a -k -b -p -q -Z -X -U -C -L -p -b -b -b -8 -Z -& -d -# -& -B -W -M -W -8 -* -* -h -b -k -h -b -& -M -* -M -& -O -b -0 -k -w -X -r -r -x -z -o -h -* -a -o -o -o -h -b -h -k -a -p -h -C -r -r -Y -n -j -X -q -p -h -b -w -Z -q -w -b -p -# -* -M -h -m -Q -J -k -# -m -b -) -h -m -q -a -d -w -+ -O -O -0 -0 -O -0 -0 -0 -C -0 -C -C -Q -0 -C -U -U -J -U -U -t -t -t -j -n -x -r -r -f -r -r -r -x -n -u -Y -v -L -v -0 -n -Q -z -C -Q -+ -? -Q -L -O -k -k -p -q -q -w -d -b -b -v -i -j -0 -Q -m -q -q -q -# -a -o -o -a -o -a -q -q -w -q -q -m -q -q -p -L -w -k -k -b -p -J -Q -Z -J -< -J -) -r -Q -z -U -Q -r -z -X -X -u -n -} -j -c -j -| -v -Y -Y -\ -J -m -C -Q -J -U -Q -Q -O -J -v -w -o -h -b -m -m -a -h -b -J -q -Q -q -k -u -L -o -m -h -M -m -W -Y -q -a -m -Y -J -C -L -L -o -8 -n -q -* -Q -1 -{ -* -f -a -u -v -X -c -J -U -J -C -Q -r -p -d -k -p -? -J -k -& -C -Q -O -O -* -W -a -q -k -p -q -w -X -U -C -Q -q -b -b -b -& -W -& -8 -# -% -& -M -M -& -M -M -# -h -b -b -b -k -M -& -B -& -% -# -Q -b -% -& -Y -j -j -r -k -O -w -d -C -k -k -a -k -d -k -a -a -a -+ -] -( -f -& -f -j -0 -O -r -a -k -d -Z -w -m -d -h -# -M -W -p -b -Z -m -B -& -# -0 -) -k -m -m -a -d -q -~ -O -O -O -0 -O -0 -O -O -Q -0 -C -C -Q -0 -C -U -U -U -U -Y -/ -j -j -r -r -j -j -/ -/ -\ -\ -) -\ -| -/ -Y -c -Q -J -O -J -Q -J -O -Q -_ -- -0 -Q -Z -k -k -d -q -w -q -p -b -b -0 -l -j -0 -Z -Z -q -q -q -# -a -o -* -h -o -h -w -m -m -q -d -w -q -q -w -C -q -p -q -q -p -C -Q -Z -J -< -J -) -j -Q -v -Q -O -r -v -X -X -c -n -[ -f -| -( -\ -n -j -C -\ -C -Q -U -O -U -C -C -w -m -Y -x -d -a -p -C -w -o -k -p -p -h -d -0 -k -p -X -Q -o -d -q -& -p -B -Q -k -o -U -Y -J -C -J -0 -Q -M -v -q -* -j -- -0 -\ -( -k -x -w -Y -z -C -L -L -J -O -x -h -a -b -d -/ -z -h -& -L -L -O -Z -# -& -* -m -b -p -p -w -X -U -J -L -q -b -k -b -& -B -W -& -k -% -M -# -8 -8 -C -# -M -h -h -d -k -k -M -& -& -U -B -* -C -q -W -b -v -f -j -v -U -& -b -p -v -Q -m -w -b -a -h -O -a -: -z -{ -( -/ -f -m -j -j -0 -w -a -b -q -O -q -b -b -b -k -& -8 -q -h -k -p -M -& -* -z -1 -k -Z -Z -a -d -q -] -O -0 -0 -Q -0 -L -L -0 -L -Q -C -C -Q -O -L -Q -Q -0 -O -Y -f -j -t -/ -f -( -f -t -\ -| -) -Y -j -t -f -Y -J -Q -L -0 -U -Q -L -m -L -_ -- -Q -O -Z -p -b -b -w -w -k -d -b -b -Z -l -f -C -Z -Z -w -q -q -# -o -* -* -a -o -k -0 -J -w -q -q -p -p -q -Z -C -p -w -q -p -p -Q -0 -O -U -~ -J -( -j -Q -x -0 -Z -\ -Y -Y -Y -/ -r -j -v -j -( -j -u -X -c -\ -h -J -C -C -z -U -0 -w -w -J -q -a -a -Q -Q -a -b -d -w -k -d -d -m -k -h -a -0 -w -Z -0 -M -0 -_ -Z -b -a -J -X -C -0 -C -O -Z -# -n -p -O -o -1 -\ -| -L -Y -x -Q -Y -J -J -J -Q -Z -r -0 -b -d -q -p -j -\ -W -o -L -C -Z -m -# -W -* -0 -d -p -p -q -X -Y -J -Q -q -b -k -b -8 -8 -b -W -h -W -M -* -8 -8 -c -o -# -* -k -d -a -k -M -& -8 -r -@ -a -U -k -b -p -c -f -x -z -a -8 -q -L -u -[ -n -) -j -c -L -w -? -J -; -: -| -/ -t -W -j -u -u -J -j -b -Z -w -q -m -k -k -k -# -8 -q -0 -p -0 -b -p -* -Y -[ -h -Z -Q -a -d -p -t -w -q -q -w -q -m -w -Z -m -m -Z -Z -Z -m -m -w -O -Z -O -n -{ -\ -\ -t -t -| -j -t -/ -/ -Y -Y -Y -j -f -z -J -L -Q -0 -J -0 -L -q -L -_ -_ -Q -m -0 -p -p -p -d -w -d -k -b -p -b -l -/ -U -O -Q -q -q -q -# -* -* -* -o -o -k -0 -z -Y -w -w -q -w -q -0 -J -p -m -w -d -p -Q -0 -O -Y -+ -J -| -j -0 -f -O -Z -/ -n -X -x -u -Y -Y -X -v -j -r -x -v -u -) -h -v -U -Y -Y -C -O -w -w -O -a -a -a -O -a -b -b -Q -b -b -d -b -b -h -h -M -m -k -b -k -h -Z -J -w -h -a -q -z -J -w -Q -m -m -& -r -h -Q -) -| -1 -\ -| -) -f -U -C -J -C -C -0 -x -Q -q -O -q -k -# -Q -a -% -Q -0 -Q -Q -m -o -W -* -0 -d -p -q -q -w -X -J -L -q -d -b -d -W -& -W -W -M -w -M -# -8 -M -m -o -# -o -a -k -d -k -W -W -8 -Y -8 -* -c -m -% -m -Y -f -v -Q -q -Z -h -r -x -x -x -) -n -x -x -r -Q -{ -~ -r -| -* -& -j -% -c -z -0 -( -p -b -m -Z -p -q -p -a -M -M -q -c -J -o -W -h -b -c -+ -# -m -Q -a -d -p -c -w -q -w -m -q -q -m -Z -m -m -Z -Z -m -m -m -m -O -O -O -} -\ -x -/ -/ -f -| -f -f -/ -t -X -X -X -Y -f -X -X -L -J -O -J -0 -0 -d -Q -_ -+ -0 -0 -0 -b -d -d -d -w -b -d -p -d -Q -[ -f -C -O -Q -q -q -q -# -# -# -* -# -a -k -m -z -j -q -p -Z -w -q -Z -J -w -m -w -d -d -Q -0 -Z -X -+ -J -\ -n -Q -f -Z -m -| -/ -n -U -v -X -J -J -Y -X -c -v -t -u -( -X -z -J -C -C -C -0 -q -q -k -a -a -p -a -k -b -q -w -Z -b -d -k -b -h -k -o -0 -h -p -a -O -& -0 -q -o -o -q -X -Z -q -Q -m -a -# -b -o -m -) -{ -) -\ -| -j -C -C -C -Q -J -L -\ -j -Q -Z -d -* -& -# -W -a -M -J -0 -0 -O -0 -d -M -* -O -d -p -q -q -m -X -U -C -p -b -b -d -& -M -d -Y -& -a -M -* -8 -# -# -a -* -k -k -q -q -# -& -W -& -p -h -O -Z -$ -& -0 -X -t -z -p -Z -C -* -t -c -t -t -\ -j -+ -1 -^ -{ -, -[ -( -\ -u -8 -m -W -j -h -O -b -a -p -w -Z -q -m -d -a -W -& -w -J -C -W -W -W -m -u -_ -# -m -Q -a -d -d -J -w -q -m -Z -w -w -0 -m -m -m -m -C -Z -Z -m -U -Z -Z -Z -) -\ -j -( -/ -f -| -j -j -f -v -X -Y -X -Y -x -Y -U -Q -X -Z -z -0 -U -p -Q -_ -< -O -0 -Q -h -k -p -b -w -p -b -d -b -Y -c -| -0 -Z -0 -q -w -q -# -# -# -* -o -h -k -q -X -x -p -d -p -w -q -O -J -w -m -q -w -d -Q -0 -Z -v -- -U -\ -c -0 -x -Z -O -| -x -n -u -X -J -v -Y -U -J -Y -z -X -J -k -J -v -Y -c -\ -u -X -L -p -m -m -o -a -h -b -Q -b -L -Z -m -b -k -b -p -p -b -m -b -Z -h -w -[ -m -p -o -* -w -X -p -q -p -0 -* -r -q -o -) -( -) -0 -X -k -O -Z -L -0 -0 -0 -X -f -Z -a -h -M -* -M -* -a -0 -& -w -O -Z -0 -w -w -# -* -O -d -p -p -q -w -X -J -L -q -k -k -b -B -8 -Z -W -& -* -p -M -8 -o -M -a -a -h -h -h -b -& -W -W -8 -# -r -J -J -b -o -L -v -f -J -@ -0 -z -# -} -( -( -) -{ -) -x -) -} -1 -( -( -Y -/ -t -f -z -v -M -c -n -d -O -w -O -m -q -q -b -o -& -& -q -w -j -M -# -o -O -n -+ -# -q -O -a -d -p -0 -q -q -0 -0 -Z -m -0 -Z -m -m -w -Y -0 -m -Z -U -O -Z -Z -t -j -c -( -) -| -t -j -r -t -c -r -X -X -X -n -z -z -Q -Y -Z -c -0 -U -d -L -- -~ -Z -Q -Q -b -d -p -k -q -m -d -d -k -U -v -t -Z -Z -O -w -w -q -# -# -# -* -h -h -h -w -X -v -q -Q -L -C -q -0 -U -Z -w -w -q -p -Q -0 -Z -u -] -Y -/ -c -0 -j -Z -0 -| -n -u -Y -Y -v -U -c -Y -Y -v -Y -J -X -h -Y -v -r -v -c -Y -v -h -k -k -o -o -k -a -p -k -q -o -o -# -b -b -p -q -d -{ -L -p -Z -a -Z -J -q -b -a -* -p -Y -q -p -q -q -j -q -w -p -1 -} -) -{ -) -\ -| -1 -L -O -Q -0 -t -w -# -M -W -# -# -# -M -o -q -q -p -w -m -Z -w -p -* -a -Z -d -p -q -q -w -z -U -L -q -d -b -d -B -B -Z -W -& -* -w -# -& -8 -a -k -h -b -d -k -p -& -W -M -B -B -X -X -B -a -a -U -v -\ -L -U -L -c -/ -W -( -) -) -{ -1 -v -1 -\ -) -\ -| -| -t -% -f -z -j -| -v -0 -0 -f -p -m -m -d -d -d -o -M -M -m -d -c -W -b -* -O -v -[ -M -* -q -a -d -d -Z -q -p -0 -Z -0 -Z -0 -O -Z -Z -Z -J -Z -Z -Z -U -Z -Z -Z -/ -c -v -f -t -f -f -) -\ -x -X -X -X -z -X -j -U -Y -0 -0 -Z -Q -0 -0 -b -L -_ -+ -m -O -Q -b -b -d -k -b -w -p -b -h -m -1 -t -m -0 -O -q -w -q -# -# -# -# -k -h -h -m -z -/ -q -m -m -m -Z -Q -J -w -Z -m -m -p -C -O -Z -r -} -U -/ -c -0 -x -0 -0 -\ -U -Q -0 -X -c -X -0 -U -J -v -z -X -c -b -C -v -r -C -L -O -d -h -q -a -a -o -w -d -k -8 -h -@ -h -u -+ -* -Z -a -# -q -0 -b -O -p -r -c -p -b -a -# -p -U -q -q -w -q -b -Z -p -| -( -| -{ -) -| -\ -| -1 -L -0 -O -m -t -d -* -M -# -* -* -o -o -o -} -& -0 -d -Z -q -p -w -o -h -O -p -q -q -q -q -Y -U -C -p -d -b -d -B -B -p -b -& -# -o -M -o -W -* -* -p -k -b -b -b -M -W -W -a -% -o -w -B -p -k -z -n -c -O -Q -J -v -x -* -| -( -) -) -1 -M -X -( -( -| -\ -Y -t -x -f -p -f -f -* -X -j -v -p -w -q -b -p -a -o -& -W -m -k -C -W -M -# -q -v -{ -a -b -p -h -d -d -L -d -p -Q -0 -O -Z -0 -0 -m -m -O -J -J -Y -C -C -U -J -C -Y -c -c -v -f -t -t -f -f -c -/ -z -z -z -X -Y -C -Q -0 -0 -m -0 -Z -O -b -L -_ -+ -m -m -Q -b -b -b -k -k -w -d -b -h -o -L -\ -m -0 -O -q -q -q -# -M -# -# -k -h -a -0 -c -r -q -w -q -p -q -m -0 -w -h -q -h -b -Q -O -Z -f -1 -U -/ -X -m -c -q -w -j -J -q -m -J -U -J -Q -0 -X -X -X -J -a -J -w -X -Y -J -0 -q -h -q -a -b -o -b -U -Y -k -& -d -p -Y -Z -k -C -# -# -b -O -Z -p -m -* -X -c -q -h -o -* -p -J -p -m -m -w -a -m -? -( -) -) -( -1 -d -Q -n -n -O -O -m -0 -O -h -M -# -o -* -k -o -o -a -f -@ -o -d -O -m -w -Z -a -k -Q -C -p -q -m -O -w -U -Q -d -b -k -d -@ -W -@ -& -W -# -* -) -* -o -a -k -d -b -k -d -b -& -W -& -U -W -M -n -Q -d -q -n -j -u -m -Q -X -v -n -j -* -( -( -) -( -) -z -# -| -| -# -* -h -m -) -8 -j -f -C -p -8 -C -b -Z -p -q -p -a -8 -M -M -p -b -J -& -M -o -k -n -{ -p -p -a -h -d -d -L -0 -L -L -C -J -U -U -U -Y -X -z -v -n -x -n -n -x -r -r -f -/ -/ -t -( -( -( -( -/ -t -f -f -f -j -j -x -c -X -J -J -J -J -J -J -Q -L -- -+ -Z -Q -O -0 -Q -Q -0 -Q -L -Y -C -0 -O -Y -/ -Z -O -O -q -q -q -# -# -M -# -h -h -a -L -z -C -U -Y -Y -Y -Y -X -X -X -X -X -X -Y -0 -O -Z -u -( -U -/ -v -v -c -c -c -c -c -c -c -c -c -v -v -v -c -X -Y -z -k -X -j -< -> -~ -? -h -U -W -c -b -a -h -J -z -; -* -w -0 -Y -Q -O -d -* -M -O -m -o -O -m -& -X -Q -w -a -a -M -d -b -w -w -w -m -# -C -\ -| -| -) -) -{ -k -n -v -r -0 -Z -n -/ -a -h -M -o -o -o -o -a -* -# -- -& -W -L -0 -p -Z -w -a -k -L -X -q -w -m -0 -L -J -Q -d -b -b -d -B -k -B -& -m -M -o -8 -8 -o -M -a -b -h -p -w -d -W -W -W -n -8 -b -W -* -q -Z -j -f -c -$ -Q -U -v -x -t -a -| -( -) -( -( -( -| -| -\ -# -d -# -| -( -8 -$ -f -z -c -@ -C -Q -m -q -d -h -k -b -a -o -b -m -u -b -d -a -k -u -{ -0 -d -h -a -d -d -C -Q -Q -L -C -U -X -z -c -v -u -x -j -t -/ -\ -| -| -( -) -{ -} -} -} -{ -{ -{ -{ -1 -1 -) -) -| -| -\ -t -x -u -X -X -X -X -X -Y -Y -Q -_ -~ -Z -Q -0 -X -X -X -X -X -z -u -u -Y -U -Y -r -Z -O -O -p -p -q -M -M -# -# -a -h -a -J -Q -z -X -Y -z -x -t -| -1 -} -[ -- -_ -] -Q -O -Z -j -\ -U -| -( -} -{ -{ -{ -1 -{ -) -( -( -t -n -c -z -J -O -Z -Z -b -d -a -k -k -p -h -h -a -h -x -r -h -a -- -# -k -d -Q -Z -k -o -b -z -q -k -o -O -o -p -0 -f -X -q -p -a -o -b -d -p -w -m -Z -m -M -) -( -| -{ -| -( -( -/ -t -d -O -Z -f -f -u -k -M -o -a -q -a -* -# -M -* -f -0 -W -a -L -b -w -p -h -d -L -f -p -w -Z -L -C -j -X -d -b -b -d -B -W -X -8 -M -& -# -8 -% -z -o -h -o -b -d -w -M -W -W -8 -t -% -0 -W -p -m -L -t -t -X -M -Q -J -c -v -t -M -M -( -( -( -\ -* -] -\ -# -? -Z -O -& -f -( -@ -x -f -x -J -@ -n -m -p -p -h -& -b -a -k -k -0 -C -M -W -p -o -v -} -U -X -a -h -d -d -L -O -Z -O -0 -Q -L -C -J -J -U -X -z -c -v -v -n -n -x -x -r -j -j -j -j -j -j -j -j -r -x -x -x -n -n -u -c -X -U -Y -Y -U -U -J -C -J -_ -~ -O -Q -0 -Q -L -L -C -C -U -Y -z -J -C -C -n -O -O -O -p -d -q -M -M -M -# -o -k -k -J -0 -f -} -? -? -] -- -- -? -[ -[ -[ -} -\ -Z -m -m -j -( -w -- -~ -< -< -< -~ -> -i -! -I -; -, -: -: -, -, -: -! -q -p -- -1 -! -! -k -a -b -u -w -o -r -a -o -o -k -& -q -0 -q -U -Q -C -k -L -a -w -# -h -Z -q -v -O -p -# -o -o -m -d -p -m -w -m -m -w -( -( -| -( -1 -| -\ -v -x -x -w -j -/ -k -h -k -M -o -k -k -a -# -# -# -# -+ -r -M -W -J -b -q -p -b -d -Q -r -p -m -O -L -J -/ -f -Q -b -b -d -8 -& -b -d -& -& -a -8 -c -c -* -o -o -b -b -w -M -M -W -8 -j -@ -0 -# -m -0 -J -/ -/ -z -d -Q -C -X -Y -t -) -a -| -| -| -| -8 -M -| -W -M -% -Z -& -f -f -o -$ -v -m -& -B -v -w -p -k -h -d -k -k -b -h -Q -J -M -M -Z -a -c -} -m -1 -a -h -d -d -0 -J -X -c -v -u -x -x -x -r -r -j -f -t -\ -\ -\ -( -) -) -1 -1 -{ -{ -{ -{ -{ -{ -{ -1 -1 -1 -1 -) -) -( -\ -\ -/ -/ -/ -f -r -x -n -n -+ -~ -O -Q -0 -Y -f -z -c -v -u -r -f -v -J -Q -x -Z -O -Z -q -b -p -M -M -W -M -# -h -h -d -q -q -q -q -p -m -m -w -m -Z -O -O -0 -Z -m -m -Z -U -m -m -Z -Z -Z -m -m -m -m -Z -O -0 -0 -L -C -J -J -J -C -L -d -b -O -b -Z -a -b -h -o -n -h -k -j -a -a -h -k -b -O -Z -m -m -# -h -o -# -q -M -o -a -Z -X -z -w -M -W -o -o -d -b -q -m -d -b -) -) -( -( -| -| -( -u -Y -a -J -c -j -C -b -k -a -# -# -o -b -k -o -* -# -# -M -& -w -M -W -a -0 -p -w -p -b -O -\ -d -p -O -L -J -| -/ -v -z -k -p -% -8 -b -m -M -& -O -& -k -c -a -h -k -p -a -q -M -& -W -8 -c -& -C -q -Z -L -Y -\ -\ -k -o -0 -L -Y -U -j -/ -& -w -| -\ -# -a -( -/ -w -? -W -Q -) -$ -C -B -o -C -v -* -# -B -$ -b -b -8 -p -d -b -b -b -Q -U -M -M -m -k -c -} -O -] -a -h -b -d -m -Z -c -u -x -f -/ -/ -t -\ -\ -( -) -1 -{ -{ -} -} -} -} -[ -] -] -] -] -} -} -1 -) -( -| -( -( -) -{ -_ -> -l -l -l -i -I -, -` -, -> -] -{ -0 -0 -0 -) -: -^ -^ -" -, -, -; -? -\ -U -x -O -O -Z -w -b -p -M -W -W -M -o -k -h -d -w -w -p -q -w -m -m -m -m -Z -Z -q -w -m -m -m -m -Z -Z -Z -Z -Z -Z -m -m -w -w -w -w -m -Z -O -0 -Q -L -Q -Q -Q -b -b -m -b -a -d -a -a -o -x -k -k -\ -a -h -h -h -o -Z -b -* -* -M -M -W -p -o -a -b -# -0 -J -C -q -* -M -a -o -h -k -w -z -c -X -x -| -) -( -| -| -j -C -% -v -z -J -r -b -k -h -h -W -* -d -b -h -o -* -# -# -& -Z -# -# -h -W -X -b -m -w -d -Q -| -d -p -m -L -J -\ -/ -c -v -X -b -B -o -W -m -# -& -q -8 -a -U -o -o -a -k -p -q -M -W -& -8 -C -O -* -q -L -J -c -| -\ -# -M -k -C -C -J -r -t -} -o -] -L -m -& -& -n -z -0 -M -W -$ -$ -@ -L -# -Y -q -h -m -o -J -k -h -h -b -p -p -w -p -C -c -* -b -Z -p -X -} -O -} -a -h -k -d -w -m -0 -Q -C -J -J -U -U -z -v -v -u -n -n -n -x -r -r -r -r -x -n -v -c -z -X -X -Y -Y -Y -Y -Y -X -X -c -v -u -x -r -j -j -r -r -n -v -J -Y -0 -0 -Z -w -L -U -U -U -U -J -C -m -m -0 -j -0 -O -Z -m -b -p -M -W -W -M -h -b -h -p -m -m -q -q -w -m -w -m -m -m -w -q -m -Z -m -m -m -m -Z -m -m -Z -m -m -m -Z -q -q -m -O -0 -Q -C -C -L -L -L -b -b -b -k -h -Y -v -u -v -c -w -b -h -b -a -h -h -Z -: -Z -U -# -* -M -& -8 -W -h -o -W -W -U -U -w -a -o -o -h -a -d -x -x -z -v -L -h -( -) -| -| -/ -U -o -M -v -j -x -m -h -o -W -W -o -b -q -p -k -o -* -# -& -& -M -W -j -L -& -# -U -w -q -k -O -| -p -q -w -Z -J -v -r -z -c -v -u -8 -a -& -q -* -W -p -& -W -Y -* -o -o -o -d -Z -# -M -W -8 -p -m -k -p -J -Y -j -| -) -& -a -* -p -Q -Q -z -f -/ -* -d -k -* -x -J -w -% -w -h -B -8 -B -Y -$ -b -B -O -Z -q -b -% -k -# -h -k -d -d -q -q -w -U -* -W -O -d -J -} -O -( -a -h -h -d -p -L -Z -O -0 -Q -Q -Q -L -Q -C -U -J -X -X -z -c -c -c -c -c -z -z -X -Y -Y -U -C -L -L -Q -Q -L -C -J -J -U -X -c -c -u -u -c -c -Y -J -Q -J -0 -0 -Z -d -m -Z -Z -0 -Z -J -U -O -Z -L -f -0 -Z -Z -w -k -p -M -W -W -M -k -k -h -p -Z -w -d -p -q -w -m -q -p -w -w -w -Z -Z -m -m -m -m -m -m -Z -m -m -m -m -q -m -m -m -m -Z -O -0 -Q -Q -Q -0 -k -b -h -a -b -h -j -k -J -v -n -m -p -w -o -h -m -w -w -o -q -# -M -W -# -W -W -* -W -# -W -Y -v -X -a -a -a -b -X -c -c -z -X -z -/ -w -( -( -/ -f -c -Q -8 -n -u -r -q -a -W -W -W -# -b -p -p -b -k -* -M -& -W -W -M -& -M -J -a -W -Z -m -m -a -Z -) -m -Z -Z -L -0 -L -x -c -X -c -x -C -a -% -# -k -M -o -z -@ -J -o -o -o -k -a -M -M -W -# -W -8 -W -w -O -n -X -x -( -Z -% -k -k -k -m -m -Y -j -/ -k -* -C -0 -d -/ -a -o -d -& -$ -8 -W -j -Q -o -n -f -Z -# -W -o -# -o -k -b -p -k -p -q -q -m -# -M -Q -p -L -} -O -t -a -h -a -d -p -u -w -m -m -Z -Z -Z -0 -0 -L -C -L -Q -C -U -Y -U -U -U -U -Y -U -J -J -C -L -L -Q -Q -0 -O -0 -C -C -J -J -Y -Y -Y -C -C -C -L -Q -0 -0 -J -0 -0 -Z -d -m -m -Z -O -m -J -Y -O -Z -v -j -Q -Z -Z -q -k -p -M -W -W -M -a -k -k -w -m -q -q -p -w -m -q -q -q -Z -Z -Z -Z -Z -m -m -m -m -Z -Z -Z -m -w -w -w -q -w -m -m -Z -m -w -w -m -w -w -p -k -h -h -U -a -f -Z -b -b -n -Q -b -k -k -o -Z -Z -m -Z -( -p -b -a -# -o -M -8 -& -M -a -W -] -x -X -a -# -m -J -X -Y -Y -Z -Y -k -? -C -| -\ -v -U -Q -a -W -f -n -p -m -W -W -M -# -h -p -q -q -p -o -# -& -W -& -W -M -C -M -c -w -# -h -U -p -a -0 -{ -Z -Z -0 -0 -O -0 -c -X -X -X -x -Q -| -U -# -8 -8 -& -[ -Y -z -a -# -o -# -a -& -& -& -B -& -U -a -m -J -x -c -n -) -J -@ -d -d -d -q -m -J -x -| -d -o -o -w -a -z -a -Q -O -* -L -\ -$ -j -b -x -f -* -/ -M -* -h -k -h -h -q -d -q -q -w -w -p -M -# -Q -p -0 -1 -0 -f -a -h -a -d -p -t -w -m -m -m -m -m -Z -O -0 -Q -L -Q -L -C -C -C -C -C -C -C -C -C -L -L -Q -Q -Q -O -Q -Q -Q -Q -L -C -Q -C -C -C -L -L -O -0 -0 -O -O -J -0 -0 -Z -d -m -m -O -0 -L -J -Y -O -Z -r -x -0 -Z -Z -q -k -d -M -W -W -M -* -a -h -d -Z -k -b -d -p -p -p -q -q -m -Z -O -O -Z -Z -m -Z -Z -Z -m -Z -m -m -m -m -w -q -w -q -w -w -w -m -w -w -m -b -a -o -p -b -b -r -d -b -b -p -b -O -h -Z -o -Z -Z -Z -O -d -o -W -# -a -o -a -W -W -W -M -B -v -J -* -O -L -C -J -J -J -w -Q -U -* -O -C -u -L -Q -L -a -& -M -r -k -m -M -M -M -* -a -d -p -p -d -a -# -W -W -W -W -M -M -0 -( -w -J -o -# -0 -h -h -J -? -0 -Q -O -L -0 -Q -Y -U -U -Y -c -Z -| -c -x -8 -b -% -\ -C -n -# -* -o -o -o -& -& -& -& -W -M -d -C -u -t -u -n -( -& -M -p -p -q -w -p -Z -c -8 -o -o -k -Y -J -o -M -v -w -p -M -n -n -# -X -* -x -m -h -M -b -o -J -a -b -b -d -p -w -* -p -p -a -* -p -Y -Z -/ -Q -t -a -h -a -d -p -( -w -m -d -m -m -m -Z -Z -O -0 -0 -0 -0 -Q -Z -m -0 -L -Z -Q -Q -Q -O -O -Z -Z -Z -m -Z -Z -O -0 -Q -Q -Q -Q -Q -0 -Z -Z -O -O -O -O -O -C -O -0 -Z -p -m -q -w -0 -C -U -X -0 -Z -j -z -O -Z -m -p -k -d -M -M -M -M -M -h -h -p -m -b -Z -Z -Z -O -O -0 -O -O -O -O -O -0 -0 -Z -Z -Z -Z -Z -Z -Z -Z -Z -Z -m -m -m -m -m -m -m -m -Z -m -O -k -h -C -n -n -h -n -b -d -Z -b -k -k -k -m -a -m -m -m -Z -p -Q -& -M -& -& -h -# -# -a -a -) -U -a -0 -L -L -C -C -J -0 -a -C -m -q -w -U -L -L -0 -8 -& -M -M -x -o -a -W -# -# -a -b -d -p -d -p -o -M -& -* -M -W -M -M -& -W -M -m -# -* -L -O -d -J -? -0 -0 -Q -L -0 -0 -Y -U -L -U -Y -m -u -X -u -b -% -8 -8 -U -z -# -o -# -* -M -% -8 -& -& -& -q -L -Y -f -( -r -x -| -@ -% -q -q -m -m -b -m -Y -h -a -b -o -m -r -* -h -Q -X -# -# -z -C -* -* -a -w -W -h -k -w -B -J -a -k -d -q -p -q -W -k -Z -w -b -o -v -m -x -Q -x -a -h -a -d -p -) -m -m -b -q -m -O -O -Z -Z -m -O -0 -0 -0 -Q -0 -Q -L -m -Z -w -m -w -w -w -w -w -m -O -O -O -0 -0 -O -0 -0 -0 -O -O -O -O -O -O -0 -O -C -Z -0 -Z -p -w -q -O -Q -L -C -Y -Q -Z -j -J -O -Z -m -p -k -d -M -M -M -M -M -h -h -p -Q -L -b -b -b -0 -Q -Q -z -Z -q -O -q -k -0 -Z -Z -O -_ -Y -\ -Q -w -m -w -0 -w -m -0 -m -m -J -f -{ -] -b -* -u -o -Y -n -n -n -n -a -b -b -b -L -k -L -J -Q -Q -Q -C -p -1 -u -M -W -8 -W -k -M -p -8 -J -Q -Z -Z -Z -Q -X -J -L -a -w -a -* -Z -m -k -C -h -z -M -W -M -W -j -M -M -o -o -h -a -k -d -b -d -a -* -M -o -o -W -M -W -M -* -w -[ -8 -U -a -Q -Y -m -L -[ -0 -0 -C -L -0 -m -X -Y -L -C -w -h -Y -q -0 -k -& -& -q -J -X -b -o -M -* -* -& -8 -& -& -| -m -X -J -1 -? -\ -t -) -8 -W -w -m -Z -m -p -w -8 -o -Z -b -b -o -o -k -t -k -W -q -b -Q -k -# -* -o -a -M -o -d -q -8 -0 -h -a -p -b -b -p -h -k -a -Z -# -* -L -Z -c -L -n -h -h -h -p -p -{ -b -b -d -p -p -p -J -0 -w -q -q -w -q -w -O -O -O -O -w -0 -w -m -m -Z -O -O -0 -r -u -L -J -U -J -L -Q -Q -0 -O -Z -O -Z -Z -Q -O -m -C -O -0 -Z -p -w -Z -w -Z -O -Q -Z -Z -m -t -Q -Z -Z -w -k -k -d -M -M -M -M -# -k -k -q -L -Z -w -d -b -d -p -Q -Q -Q -k -h -h -h -Q -Z -O -Z -> -Y -{ -q -0 -m -w -q -p -0 -Q -0 -0 -z -) -Y -0 -h -b -n -b -b -k -x -h -p -b -k -b -O -O -k -U -Y -M -c -/ -0 -, -& -W -M -W -# -8 -o -# -W -/ -L -q -q -m -L -n -v -Y -h -k -a -# -o -Z -m -a -M -X -O -M -W -M -k -f -W -# -h -p -b -h -d -d -d -a -* -M -# -a -# -o -W -# -M -o -o -& -( -r -d -0 -0 -w -Q -) -Q -Q -Z -L -O -m -X -Y -C -J -h -p -c -q -Z -k -$ -8 -o -L -Y -O -* -# -* -8 -& -8 -& -& -* -d -n -j -+ -_ -1 -( -Y -& -Q -m -m -0 -O -m -m -M -& -C -d -a -U -d -q -b -d -& -m -a -L -M -o -p -k -d -c -Q -Z -p -W -h -c -k -b -p -k -d -p -p -d -q -W -M -Q -c -X -L -x -k -k -h -p -q -[ -d -p -q -w -w -w -x -J -m -p -p -p -p -p -q -O -Z -Z -L -z -r -Q -O -Z -O -O -Z -O -w -u -\ -O -J -L -O -O -0 -Z -w -m -m -Z -J -Q -O -z -0 -0 -Z -h -d -h -a -k -h -k -h -a -a -f -0 -Z -Z -w -a -k -b -M -M -M -M -# -d -k -O -C -O -O -m -d -d -w -0 -O -Q -k -h -k -k -Q -O -O -{ -i -Y -+ -U -m -w -q -q -p -p -Z -Q -L -0 -J -| -o -d -b -n -d -d -b -u -d -d -p -p -L -Z -Z -p -z -z -x -u -\ -X -0 -W -* -O -h -h -8 -8 -M -M -f -0 -q -O -O -J -z -v -w -b -a -# -# -o -k -Z -& -J -z -M -M -M -h -x -r -W -k -d -0 -b -a -b -d -b -a -* -* -a -# -W -M -M -M -# -a -w -q -# -q -v -Q -Z -Y -Z -. -O -L -p -L -O -m -Y -J -Q -U -k -# -0 -d -q -h -] -8 -# -c -} -n -* -* -# -& -% -8 -8 -# -w -Y -c -) -+ -< -[ -} -z -# -8 -8 -Z -L -L -Q -$ -8 -# -# -O -h -k -a -a -o -Z -Q -p -o -q -& -d -w -p -q -k -Z -b -W -J -U -j -a -k -q -q -q -w -k -p -p -w -# -0 -{ -z -Q -j -k -k -k -q -w -[ -q -q -w -m -w -w -q -m -w -q -q -p -d -p -Z -0 -q -m -Q -m -0 -Q -O -Z -C -O -Z -Z -Z -m -m -p -X -r -Y -O -Q -Z -m -m -Z -m -U -J -: -r -L -0 -Z -b -h -b -d -a -a -h -a -a -a -f -Q -0 -m -q -a -h -b -M -W -M -# -# -d -b -0 -C -Q -d -m -m -m -m -0 -U -0 -d -k -k -k -L -Z -O -1 -l -Y -~ -Z -C -Q -O -q -p -q -Z -Q -O -C -L -h -q -k -b -x -d -d -d -d -p -p -Z -Y -z -0 -v -v -u -x -n -r -/ -j -$ -{ -u -J -Q -h -8 -# -p -k -Q -m -k -O -0 -O -k -a -a -a -# -# -* -o -# -# -M -L -z -M -M -h -h -| -O -h -b -O -O -p -a -k -b -a -o -# -M -h -# -M -M -M -M -a -J -Z -# -p -m -j -o -k -L -p -/ -( -L -m -L -O -w -C -C -L -U -* -k -p -w -b -o -q -M -& -} -_ -l -k -a -o -M -8 -% -& -f -w -z -j -{ -+ -~ -- -] -# -* -$ -k -Z -L -L -Q -$ -% -a -* -W -O -m -b -b -b -w -m -q -a -a -q -d -m -q -q -b -d -a -* -M -Q -( -a -k -b -d -b -w -M -8 -b -q -M -p -0 -z -C -n -b -k -k -q -m -{ -q -q -w -w -w -q -Y -m -q -m -q -p -p -p -0 -m -Z -q -q -q -0 -Q -w -L -Z -C -Q -Q -m -m -m -w -q -q -d -c -v -q -m -Z -m -m -U -v -^ -? -C -Q -0 -k -a -a -a -a -a -h -a -a -* -/ -C -O -m -q -a -h -k -M -M -M -# -# -p -p -0 -J -Y -Z -m -w -q -w -w -q -Z -d -q -Z -0 -L -O -O -~ -i -X -~ -t -Y -m -Y -q -q -p -p -Q -L -J -q -q -h -h -n -x -b -d -p -q -q -c -v -v -n -0 -x -n -Y -x -u -v -* -& -M -n -J -Y -m -0 -o -8 -# -8 -Q -w -p -0 -k -a -a -o -o -* -# -M -* -a -k -# -B -C -c -M -# -m -a -/ -a -p -q -0 -Q -p -a -a -a -o -# -M -o -# -M -M -M -M -* -o -p -m -M -* -* -( -- -z -| -q -r -L -C -Q -0 -Z -w -Z -0 -L -Y -o -M -k -h -h -# -O -8 -& -} -[ -! -L -J -k -* -& -8 -8 -# -Q -n -C -] -< -+ -- -} -a -k -b -u -k -L -L -@ -W -8 -L -a -# -Z -Q -w -d -d -q -O -k -O -C -d -a -q -m -q -O -o -k -Q -L -U -k -o -a -h -p -k -q -h -q -d -p -d -# -C -z -Z -| -b -k -b -w -m -\ -w -O -c -v -z -c -z -U -Z -Z -m -p -p -p -0 -p -q -w -q -q -q -0 -m -q -q -C -Q -Q -Q -0 -m -q -q -q -q -q -d -Q -c -m -m -m -Y -n -` -" -C -L -0 -o -o -h -a -a -a -h -a -a -# -\ -C -Z -w -p -o -h -k -M -M -M -M -# -p -p -L -U -X -J -b -q -m -J -z -C -Q -O -m -w -O -L -O -O -! -i -X -< -c -{ -U -O -w -q -w -p -Q -C -C -L -q -o -L -j -u -u -p -d -p -z -u -u -u -X -0 -v -u -w -v -n -v -X -& -* -X -q -b -q -b -a -W -W -$ -L -h -m -o -a -a -o -a -o -# -M -# -# -h -k -# -U -U -v -h -q -J -# -\ -d -w -Q -0 -m -p -h -o -a -o -# -# -a -# -a -M -# -# -a -z -w -Z -# -M -* -C -x -c -p -d -j -f -Q -Q -0 -m -q -p -0 -Q -J -a -# -a -h -b -h -& -& -8 -\ -+ -> -z -f -r -a -W -8 -% -Q -X -c -f -? -+ -< -] -\ -q -q -b -$ -& -L -C -k -h -8 -@ -b -o -* -W -0 -p -m -O -0 -Q -b -o -d -& -a -p -Z -w -# -b -k -x -z -Q -n -k -b -p -d -q -Z -# -o -C -w -# -C -c -f -( -Z -b -b -w -Z -x -Y -Y -v -r -n -z -X -Y -Z -O -p -d -d -p -p -p -q -q -q -q -q -w -m -p -Z -0 -L -0 -0 -Q -O -Z -Z -q -q -q -p -d -b -h -0 -w -Y -n -^ -> -C -Q -0 -a -a -h -a -a -a -h -a -a -h -\ -L -Z -w -p -o -h -a -M -M -M -M -# -k -q -L -Y -q -q -w -d -w -q -m -q -Z -m -w -q -q -0 -0 -O -> -> -Y -< -z -c -? -t -Z -m -Q -q -O -J -U -O -w -x -X -d -c -p -0 -p -t -U -Y -Y -/ -L -X -u -v -z -h -v -J -O -W -* -Q -b -a -o -a -q -p -* -% -0 -h -a -a -a -a -o -* -# -# -M -# -h -# -o -# -J -c -r -d -c -z -o -1 -m -Z -Q -L -m -d -h -a -o -# -M -# -* -M -M -W -M -a -a -p -m -Z -# -# -* -k -U -o -l -k -n -n -L -0 -0 -m -p -p -Z -0 -U -o -W -* -k -# -Q -x -8 -Y -/ -+ -_ -Y -j -f -k -M -8 -x -0 -z -u -| -- -+ -~ -] -X -q -0 -b -@ -\ -q -# -a -b -8 -@ -0 -h -k -a -q -c -U -w -q -v -d -# -d -k -M -a -k -h -M -Q -* -U -z -J -x -a -k -b -d -b -q -M -o -O -X -q -O -J -a -Q -L -d -b -m -Z -u -Y -z -x -I -t -c -z -Q -Z -m -d -d -p -p -p -p -p -q -q -p -q -q -w -p -0 -q -p -Q -Z -0 -Z -p -O -Z -Z -m -q -p -d -b -k -k -Y -n -^ -} -C -Q -Q -k -a -b -h -a -a -h -a -a -p -f -C -Z -q -p -o -h -a -M -M -M -M -# -k -m -Q -U -m -w -w -d -d -d -p -w -q -q -q -p -q -Q -O -O -~ -< -X -~ -U -X -X -U -[ -u -C -Q -J -J -C -O -U -w -C -h -b -p -L -Q -C -( -) -z -n -Y -m -m -w -O -L -J -0 -0 -B -W -q -o -k -a -O -a -Z -h -p -k -h -a -a -a -a -o -# -# -# -o -a -# -a -a -0 -v -x -h -z -c -X -M -\ -O -O -Q -Q -m -d -a -o -o -* -# -* -M -# -M -# -o -o -c -m -w -Z -# -* -* -o -O -h -o -k -( -Y -C -Q -Z -m -p -p -O -O -C -* -W -# -m -h -* -8 -8 -$ -t -_ -f -L -z -j -a -& -& -Z -Q -X -n -} -_ -< -+ -t -w -d -U -d -d -/ -8 -\ -* -p -& -% -% -k -o -k -k -k -0 -0 -d -o -@ -Q -Z -b -M -k -a -# -8 -M -a -X -L -Q -n -h -h -b -k -m -b -d -k -8 -c -x -o -t -k -r -\ -d -d -Z -Z -z -X -c -f -. -) -n -Y -O -Z -p -d -p -p -p -p -p -q -w -0 -0 -q -p -m -O -Z -q -Z -q -m -w -O -p -O -Z -Z -m -m -m -d -b -k -k -Y -c -" -t -C -Q -Q -b -a -d -a -a -a -a -a -a -m -f -L -w -q -d -a -h -o -M -M -M -M -# -h -O -O -U -q -d -d -d -b -p -p -q -q -p -p -q -q -0 -0 -0 -_ -~ -X -_ -J -J -Y -U -C -| -U -m -Q -Q -C -Q -0 -w -U -m -q -p -Q -C -C -L -0 -r -x -/ -x -x -v -z -c -z -U -Q -r -# -* -# -h -h -b -q -w -W -X -b -h -a -a -a -a -o -a -a -a -* -a -a -( -w -J -/ -r -J -c -z -X -W -v -O -O -L -Q -w -q -h -a -a -# -* -# -M -M -# -a -a -w -O -m -m -O -a -# -o -o -C -b -o -h -Z -j -w -0 -m -w -p -d -O -O -C -# -M -M -k -b -# -& -& -a -f -? -w -m -U -x -o -& -& -m -L -Y -z -- -_ -< -+ -- -d -p -z -d -b -% -r -M -w -b -W -8 -8 -8 -% -# -& -@ -@ -p -M -o -W -J -C -0 -* -o -* -M -& -M -o -v -n -0 -m -x -k -k -a -p -p -Z -# -k -C -c -v -x -b -J -j -p -p -Z -q -Y -Y -X -L -, -f -X -C -q -Z -m -w -Z -p -p -p -q -q -q -p -p -p -q -p -m -Z -m -m -p -q -w -w -q -q -Z -Z -Z -O -m -p -q -q -k -Y -z -: -c -C -C -Q -h -b -h -a -a -a -a -a -o -m -f -C -q -q -k -a -h -o -M -M -M -M -# -a -O -O -U -q -d -q -d -p -d -q -q -w -m -Z -Z -0 -Y -0 -0 -? -~ -X -- -J -J -J -U -C -U -U -Y -C -C -L -Q -0 -C -q -w -p -0 -C -L -C -J -L -X -f -x -z -C -Q -L -Q -X -J -Q -X -W -& -W -M -# -b -a -Q -Z -( -b -h -a -a -a -o -a -a -# -o -o -q -d -Q -a -J -? -t -/ -n -z -X -& -z -O -/ -q -b -O -q -k -o -a -# -o -M -# -# -o -k -o -j -Q -w -m -0 -p -# -# -o -Z -u -* -h -q -f -h -0 -Z -p -p -p -Q -O -J -# -& -q -* -k -W -& -k -w -/ -? -p -0 -L -O -o -& -% -p -L -X -( -_ -+ -~ -< -[ -d -p -0 -d -p -@ -u -a -L -M -W -W -& -8 -W -& -8 -B -W -o -M -p -k -J -U -b -o -o -o -% -& -# -& -u -r -Z -w -r -h -b -d -d -d -m -q -k -o -v -X -u -b -Y -\ -p -p -Z -q -Y -X -Y -U -u -n -X -w -d -p -p -q -q -p -p -m -p -q -q -q -q -Z -p -m -p -p -p -m -m -d -w -w -q -q -q -q -O -w -m -d -m -w -p -Y -Y -; -U -C -L -0 -k -k -a -a -a -a -a -a -o -m -j -C -q -d -k -a -h -o -M -M -M -M -# -a -O -Z -U -q -k -w -p -p -q -m -0 -L -Q -C -C -J -Y -O -0 -} -- -Y -] -Y -C -J -J -U -U -Y -J -j -Q -J -L -0 -Q -q -0 -Q -L -0 -0 -L -L -Q -Q -L -0 -Z -Z -w -q -m -m -w -m -Q -& -& -W -& -a -* -* -m -Y -v -b -h -a -a -a -a -a -a -h -b -d -w -/ -d -k -Q -\ -t -_ -; -f -U -a -r -O -\ -o -O -m -q -p -h -# -# -* -M -* -k -p -h -m -0 -0 -m -Z -Q -k -* -# -* -J -j -h -h -p -x -0 -Z -m -p -d -p -Q -O -L -* -# -W -& -d -8 -C -C -O -r -1 -q -d -w -b -* -8 -d -q -Q -O -) -~ -~ -< -< -? -d -b -w -p -d -k -\ -o -X -@ -& -W -W -& -o -& -M -h -a -a -# -w -h -J -b -Q -k -# -b -B -& -% -% -w -x -z -a -b -a -h -o -a -b -b -p -w -W -o -O -Y -a -x -1 -L -p -Z -w -Y -X -U -C -c -X -d -d -d -d -d -p -p -p -p -q -w -q -q -q -q -q -Q -q -m -p -p -Z -d -q -0 -Z -q -q -q -q -q -p -q -w -w -q -d -Y -Y -! -Q -C -L -Z -d -a -a -a -a -o -a -a -o -w -n -L -q -p -h -a -h -o -M -M -M -M -# -o -Z -Z -Y -q -b -m -Z -m -q -O -Y -c -Q -C -U -J -Z -0 -0 -| -? -Y -[ -J -t -U -Y -Y -X -Y -Y -C -r -v -L -Q -Z -q -0 -L -0 -Z -O -O -Q -0 -Q -O -Q -O -m -w -m -m -m -q -C -c -Z -& -W -# -M -a -M -* -Z -f -b -h -h -a -a -a -& -f -b -k -q -p -f -Z -J -x -+ -/ -- -> -, -r -m -c -Z -| -h -Z -m -w -p -a -* -o -# -p -a -b -k -k -t -\ -n -m -O -Q -k -# -# -o -X -t -x -h -d -n -O -Z -w -q -d -d -Q -0 -C -M -& -M -b -& -8 -z -k -Q -Y -[ -m -b -q -p -# -& -J -d -0 -L -) -< -< -~ -f -0 -b -h -q -p -p -X -B -O -c -% -& -& -& -* -a -M -# -a -a -o -Z -d -J -k -b -L -p -# -d -8 -% -@ -k -q -Y -/ -Y -z -a -k -h -o -k -b -m -m -p -W -k -# -p -Y -) -\ -q -O -O -X -X -J -C -Z -J -d -d -d -d -d -p -p -p -p -p -p -q -q -m -q -p -m -q -q -p -p -Z -d -O -0 -O -Z -O -q -q -p -p -d -d -b -q -b -X -z -> -Z -C -L -m -d -a -a -a -o -a -a -a -o -q -c -Q -q -p -h -a -h -a -M -M -M -M -# -o -O -m -Y -w -k -q -w -m -m -0 -U -z -L -Q -J -X -J -0 -0 -j -] -Y -} -U -} -X -c -Y -X -Y -Y -J -J -Q -r -0 -Q -0 -0 -L -J -m -w -Z -O -Z -0 -m -Z -m -m -w -m -Z -Z -p -O -O -0 -M -q -o -o -# -* -h -L -1 -b -h -h -a -o -] -c -{ -b -d -q -q -t -m -Q -1 -f -Z -? -_ -_ -- -J -m -0 -d -k -q -q -p -p -* -* -# -M -* -k -o -k -O -J -j -| -m -0 -Q -J -* -* -# -C -r -/ -* -p -z -v -m -q -p -p -d -0 -Q -C -M -8 -8 -# -o -8 -8 -& -q -U -} -O -m -w -b -& -B -q -k -O -Y -_ -< -~ -+ -? -w -b -a -q -q -q -8 -M -} -t -% -8 -W -h -a -M -# -# -h -o -o -0 -W -0 -C -Y -C -w -b -d -& -@ -& -p -w -X -t -t -Q -M -d -k -k -d -d -p -k -a -q -M -o -* -X -} -f -\ -0 -O -X -z -C -L -C -C -d -d -d -d -d -p -p -p -p -q -q -q -q -O -Z -q -w -m -q -p -p -p -m -w -O -Z -p -O -Z -m -m -d -d -b -b -b -a -Y -u -< -O -L -Q -m -h -a -o -o -o -o -o -a -o -d -J -0 -p -w -h -h -h -a -M -M -M -M -M -o -Z -m -J -m -k -q -q -m -Z -p -X -U -0 -L -J -X -u -O -O -u -} -X -{ -J -1 -c -\ -v -X -X -Y -Y -J -C -L -) -L -L -0 -L -Q -Z -q -m -Z -w -d -w -w -w -w -m -0 -Z -Z -d -m -m -0 -q -L -M -m -# -a -k -Z -> -/ -Z -M -B -) -( -Y -k -d -b -p -d -z -k -Q -t -) -j -] -] -? -} -J -k -0 -p -q -b -w -q -k -M -# -W -# -a -a -o -m -x -u -n -/ -m -O -Q -C -# -# -o -* -u -| -v -p -L -u -m -w -p -p -p -Q -Q -C -# -W -% -B -o -# -& -& -& -U -| -p -w -p -b -# -B -p -o -m -v -- -~ -- -? -[ -q -p -w -q -q -q -b -M -) -/ -8 -B -a -k -a -o -* -* -a -b -p -m -q -L -J -Y -C -m -m -a -& -@ -8 -k -w -J -/ -f -W -f -k -a -a -h -p -d -a -d -q -# -# -# -k -j -b -j -} -O -X -z -C -J -U -J -d -d -d -p -p -p -p -p -p -q -q -w -q -q -q -q -q -Z -Z -p -p -d -Z -m -O -O -p -O -m -m -w -w -w -b -b -k -o -J -r -~ -0 -Q -Q -w -k -k -o -o -o -a -o -o -o -w -Q -0 -p -w -h -h -h -a -M -M -M -M -M -a -q -q -Q -O -h -q -q -p -d -X -d -q -J -L -J -Y -c -0 -0 -z -} -z -) -v -) -X -/ -t -f -x -c -Y -J -C -C -U -L -j -m -Q -0 -w -w -Z -Z -q -b -q -m -b -k -p -p -k -b -p -q -Z -O -J -c -w -q -o -# -M -m -> -[ -} -j -& -u -v -X -d -d -p -d -/ -b -Z -Q -- -t -[ -} -[ -} -( -/ -k -( -u -O -m -p -p -p -h -M -M -# -o -a -k -U -z -c -c -x -Z -O -0 -0 -# -o -o -a -* -u -/ -q -m -z -m -p -p -d -p -0 -C -J -M -& -8 -8 -8 -W -8 -& -& -8 -p -b -b -p -a -W -B -W -# -q -v -[ -[ -} -{ -} -k -p -p -q -q -q -q -W -k -} -U -h -p -p -b -o -o -* -a -b -Z -p -& -C -U -z -p -Z -q -& -M -@ -& -B -q -m -t -Z -8 -Q -m -O -J -m -) -| -m -* -W -M -p -b -Z -m -M -M -1 -c -c -X -O -C -C -O -p -d -d -d -p -p -p -p -q -w -w -w -w -q -q -q -q -q -p -p -p -Z -w -d -d -Z -Z -m -m -w -m -m -q -q -p -d -o -L -/ -+ -Q -0 -0 -w -b -k -o -o -o -a -o -o -o -X -C -O -b -q -h -h -h -h -o -M -M -M -M -o -p -p -O -O -k -p -q -d -b -C -v -X -Z -L -U -Z -n -O -O -X -{ -c -1 -Y -( -U -\ -u -r -n -f -U -J -L -Q -Q -Z -w -L -Q -d -p -d -q -m -q -C -u -| -- -_ -< -i -> -> -! -> -< -i -! -> -~ -1 -| -r -w -u -< -[ -[ -[ -Z -c -n -C -b -q -q -d -\ -Z -J -/ -_ -l -L -1 -} -{ -x -f -w -> -< -f -C -C -q -p -b -M -M -# -o -k -Z -u -X -Y -z -c -Z -Z -0 -0 -# -M -o -k -a -o -| -p -p -c -p -p -d -p -d -Z -J -J -o -& -8 -W -8 -8 -8 -& -& -W -q -p -k -b -a -M -M -& -a -d -Y -1 -1 -( -| -w -q -q -q -q -q -q -q -M -h -_ -f -b -w -m -b -h -k -a -k -b -m -a -q -b -m -p -L -p -q -# -W -$ -& -$ -q -p -v -q -u -Y -z -z -X -z -Y -Y -Q -{ -| -] -j -u -} -} -} -[ -{ -~ -- -- -? -] -? -+ -l -_ -? -f -v -Q -b -h -b -q -w -w -w -q -q -q -Z -q -q -p -p -p -b -m -m -b -p -p -m -q -d -m -q -k -p -a -a -0 -( -_ -0 -0 -0 -m -h -o -o -o -o -a -o -o -* -r -C -Z -k -w -h -h -h -h -X -M -M -M -M -a -d -q -m -Q -k -p -k -h -U -0 -v -c -w -Q -U -Q -Z -O -O -X -1 -X -/ -Y -/ -n -\ -Y -Y -C -Y -r -\ -] -> -; -, -" -I -; -l -! -i -> -i -i -< -< -< -< -> -< -< -~ -< -- -_ -+ -+ -+ -< -< -~ -_ -1 -\ -> -< -{ -? -} -/ -Q -p -h -p -p -b -d -\ -0 -Q -) -< -" -p -) -1 -1 - -t -Z -? -_ -+ -z -U -O -d -k -M -M -# -k -b -z -J -Y -X -X -z -C -Z -0 -Q -W -M -b -O -a -* -o -w -p -Y -w -p -p -p -p -Z -U -J -W -W -8 -W -8 -W -8 -8 -W -% -& -& -b -a -a -M -# -W -k -a -Q -| -\ -t -j -a -d -q -q -q -q -q -q -% -a -k -( -J -J -O -p -d -k -h -b -p -m -o -0 -C -q -q -k -o -p -# -W -B -& -# -p -d -v -o -L -w -Q -Y -X -Y -U -X -z -0 -Q -L -} -: -i -{ -% -z -j -f -( -\ -] -+ -- -? -< -+ -< -> -< -l -> -, -, -l -; -I -; -_ -f -0 -w -q -h -b -d -d -p -q -q -k -p -d -d -b -q -q -p -k -p -d -h -O -1 -_ -0 -0 -O -m -a -o -o -o -o -a -o -o -* -f -C -m -k -q -h -h -h -h -U -M -M -M -M -o -k -q -q -Q -d -w -d -q -C -Z -m -v -0 -Q -C -X -O -O -O -X -( -( -{ -_ -~ -< -! -^ -^ -^ -^ -^ -" -: -, -I -l -! -! -i -> -i -> -q -8 -O -u -- -- -- -- -- -? -? -? -? -] -[ -} -{ -{ -[ -] -- -_ -? -> -> -{ -? -{ -/ -L -C -p -p -d -d -u -q -p -0 -r -I - -( -( -( -z - -/ -0 -( -[ -} -} -c -L -q -b -# -# -a -p -Q -v -J -J -C -J -U -Y -Z -Q -0 -M -W -k -x -\ -) -) -d -p -m -q -p -p -p -k -m -J -J -h -W -W -W -8 -* -C -x -@ -& -% -8 -Z -w -p -W -W -# -w -o -q -r -x -v -J -b -w -q -q -q -q -q -q -M -a -q -? -n -X -0 -m -d -k -k -p -p -m -q -0 -k -z -X -o -h -p -* -M -b -W -# -@ -k -O -n -p -u -J -U -C -C -X -c -C -L -O -b -b -Y -U -o -x -{ -1 -) -` -? -. -j -z -n -U -x -j -X -/ -x -( -1 -? -_ -? -+ -< -l -! -! -I -! -> -i -< -! -l -! -i -i -| -J -Z -k -k -k -d -p -b -a -o -O -] -- -0 -O -O -Z -o -o -o -o -o -o -o -o -h -f -J -q -b -q -h -a -h -h -m -M -M -M -M -o -h -m -q -L -Z -k -m -L -C -J -m -L -x -w -Z -Q -m -O -Z -v -l -! -l -l -I -I -: -, -" -" -, -; -l -l -! -> -i -! -i -< -) -( -L -O -q -k -d -z -0 -f -t -f -f -j -f -j -f -f -f -t -\ -( -1 -{ -} -/ -_ -< -} -] -} -f -C -L -p -d -b -q -) -w -b -Y -| -` - -/ -\ -\ - - -/ -0 -| -{ -{ -| -t -C -w -d -k -* -a -w -z -C -C -J -J -C -C -J -Z -0 -O -o -W -w -t -p -* -# -w -k -Z -q -p -q -p -h -O -J -J -M -M -& -W -8 -& -& -i -? -a -h -u -W -O -q -O -b -* -W -* -k -J -J -J -o -Z -q -q -q -w -q -q -q -X -o -k -0 -\ -n -C -L -q -b -h -b -k -q -w -p -k -c -Y -m -q -o -o -h -w -M -q -B -a -p -u -b -0 -0 -m -0 -U -z -C -J -C -b -z -w -C -J -\ -1 -1 -1 -1 -1 -| -{ -n -J -z -C -J -X -U -Y -C -v -U -u -\ -) -) -1 -1 -} -? -+ -_ -] -} -] -} -[ -} -_ -+ -> -+ -? -l -L -a -h -h -a -h -o -Z -+ -- -O -O -O -m -o -o -o -o -o -o -o -o -p -/ -Y -p -d -q -h -h -h -h -O -M -M -M -M -o -h -Q -q -C -p -k -k -q -w -m -Z -v -m -Q -w -Z -/ -L -i -< -< -> -i -> -i -l -l -l -i -_ -? -} -1 -( -( -( -) -/ -/ -f -f -m -X -p -O -Z -q -w -p -c -p -n -v -u -u -n -n -n -x -r -f -j -f -f -j -q -] -[ -[ -[ -{ -J -L -p -d -d -q -m -{ -L -Q -\ -- - - -] -c -X - - -\ -O -\ -1 -) -] -| -X -q -d -k -o -a -p -J -O -0 -Q -C -C -C -C -Z -Z -Z -W -a -J -m -Z -z -u -v -# -p -p -q -p -p -k -O -U -Q -a -M -W -W -8 -M -8 -z -8 -c -v -W -W -& -b -) -_ -i -t -& -p -Z -b -U -k -p -d -q -q -w -q -w -q -{ -o -b -a -1 -v -O -p -h -# -h -k -k -w -m -o -C -c -J -C -q -# -o -# -X -# -O -a -b -a -a -h -o -a -b -C -J -0 -L -0 -h -k -w -q -L -x -f -1 -1 -\ -\ -1 -} -} -~ -\ -0 -m -d -w -m -O -C -C -Z -0 -C -0 -Q -L -Q -X -Q -n -z -z -v -X -c -U -n -c -r -f -u -\ -\ -x -u -z -a -b -h -h -Z -+ -? -O -O -O -w -o -o -o -o -o -o -o -o -Z -| -J -d -q -q -h -h -h -k -M -& -M -M -M -o -h -L -q -Y -q -k -b -k -m -b -m -p -Z -m -Q -x -_ -> -~ -- -} -\ -/ -j -t -j -j -r -r -x -r -r -n -n -n -v -c -c -c -z -c -] -w -q -Q -L -O -Z -0 -Q -J -J -* -C -J -J -U -Y -X -Y -X -U -X -c -v -1 -[ -[ -[ -{ -x -J -C -q -d -p -m -w -f -Z -L -r -; - - -' -j - - - -\ -0 -t -| -| -1 -| -X -Z -p -b -k -k -O -w -o -w -Z -m -O -0 -0 -q -w -m -Z -p -w -0 -Q -k -o -Z -p -p -m -q -p -d -b -h -m -k -p -W -W -8 -8 -8 -8 -Q -@ -| -Y -& -n -| -B -( -1 -} -_ -+ -_ -+ -8 -p -a -q -d -q -w -w -q -q -w -X -* -k -k -] -c -m -h -# -[ -j -k -q -m -Z -h -U -q -L -0 -q -a -a -o -Y -* -m -h -$ -M -a -M -* -k -O -J -m -O -0 -h -Y -Y -Q -b -Z -n -/ -1 -1 -/ -v -1 -1 -) -1 -; -B -w -w -1 -O -w -* -d -a -k -q -p -Z -0 -q -0 -Q -w -q -J -0 -Z -J -0 -0 -Z -p -U -Y -Q -u -c -Y -v -v -b -b -Z -Z -- -- -Z -O -m -w -o -o -o -o -o -o -o -o -w -v -Q -d -w -p -h -h -a -k -8 -Y -M -M -M -* -h -Q -q -X -b -k -k -k -k -m -Z -m -z -0 -Z -Z -i -- -t -/ -j -x -x -n -r -n -n -u -v -v -c -c -z -z -z -X -X -Y -U -O -f -) -w -b -Q -Q -C -Q -L -L -L -L -z -Q -h -J -L -C -L -C -0 -O -O -0 -0 -[ -} -] -[ -\ -U -C -Z -p -p -w -m -\ -Q -h -L -} -: - - - - - - - -\ -Z -/ -\ -\ -1 -1 -U -m -q -b -h -d -U -Z -m -a -* -p -Z -0 -0 -w -k -h -p -C -~ -U -0 -p -p -X -x -C -p -q -q -d -k -a -p -M -% -W -W -8 -& -& -& -o -8 -% -Y -& -% -c -8 -u -j -\ -\ -} -_ -+ -i -- -h -q -q -q -q -q -w -w -b -W -# -h -h -> -X -w -k -h -o -p -c -L -m -m -q -U -b -m -L -q -h -p -b -m -* -q -k -$ -# -W -# -h -d -m -d -q -m -k -O -0 -0 -b -k -b -m -t -1 -{ -) -r -f -{ -1 -( -] -l -B -M -k -J -Y -k -q -p -h -h -p -b -m -w -p -p -m -q -q -p -m -p -O -0 -Z -q -L -Z -Z -O -L -X -Y -j -w -a -J -Z -? -? -m -Z -w -Z -o -o -o -o -o -o -o -o -w -C -O -b -q -d -k -h -a -k -& -U -M -M -M -# -h -0 -w -Y -b -k -k -k -b -d -p -w -v -w -m -< -{ -/ -x -j -x -u -v -c -v -v -c -v -z -z -U -J -L -Q -0 -O -O -O -O -C -] -U -m -q -Q -Q -U -L -C -L -U -Y -Y -C -J -U -0 -q -O -0 -Z -Z -Z -0 -O -[ -[ -[ -{ -j -X -C -w -p -q -Z -Z -? -C -Y -f -] -" - - -. -. - - - -/ -Q -\ -t -/ -( -| -Y -p -p -d -k -w -C -U -Q -Z -Z -Z -O -Z -Z -q -p -p -m -~ -[ -- -w -0 -O -r -] -n -q -q -p -d -b -d -p -M -8 -B -W -8 -& -q -W -w -& -& -Q -& -& -J -C -Z -n -/ -| -| -) -) -1 -> -? -| -h -q -k -q -q -q -p -# -& -# -# -< -o -M -& -M -* -o -n -n -J -Z -m -Z -n -q -0 -b -h -b -q -h -# -w -h -d -$ -@ -M -h -q -d -# -Q -[ -1 -) -\ -| -x -> -) -c -f -/ -} -a -8 -$ -t -} -| -\ -: -< -f -a -a -h -p -h -a -b -a -a -a -d -o -k -o -o -k -k -h -d -m -q -0 -w -Z -m -Z -m -m -O -w -Q -O -u -a -v -Z -- -- -m -Z -Z -w -o -o -o -o -o -o -o -o -q -0 -0 -b -q -b -h -h -a -k -8 -& -M -M -M -* -a -0 -w -Y -b -k -b -k -k -d -w -d -X -Y -n -? -( -x -n -n -n -n -u -X -v -z -X -U -J -C -L -Q -O -O -Z -Z -Z -d -0 -1 -( -w -w -0 -L -C -z -z -L -L -J -U -J -Q -C -L -Y -z -0 -q -w -w -q -Z -q -[ -} -} -| -z -U -J -w -m -m -m -m -_ -L -U -( -~ -^ -. - - - - - -. -/ -J -/ -j -t -\ -/ -c -q -q -k -o -Q -0 -J -L -0 -Z -Z -m -Z -Z -p -d -C -h -h -C -h -Z -| -) -Y -{ -f -p -q -p -d -b -p -d -# -% -& -W -8 -8 -& -W -# -a -& -C -& -O -J -X -Z -c -v -n -f -\ -( -f -1 -_ -+ -? -c -k -q -q -w -# -k -M -8 -M -~ -J -M -o -d -Z -Y -X -f -x -0 -Z -m -X -m -k -# -a -w -q -h -# -q -b -k -* -q -m -0 -0 -k -% -% -@ -M -# -# -M -* -o -& -M -8 -\ -| -? -8 -8 -$ -( -$ -) -U -c -- -) -o -# -o -o -o -a -# -h -o -h -o -# -o -h -# -o -o -d -O -m -q -O -Q -O -w -0 -O -m -m -m -Q -Z -h -z -Z -- -- -q -Z -Z -p -o -o -o -o -o -o -o -* -p -0 -0 -b -q -k -h -a -a -k -8 -& -8 -M -M -# -o -Z -m -Y -d -h -k -h -k -d -w -O -O -L -< -/ -j -u -c -c -u -u -n -v -u -c -X -J -Q -0 -O -O -Z -Z -Z -Z -Z -p -u -1 -u -w -w -O -J -U -J -Y -U -L -C -Y -Y -U -C -Y -J -C -z -z -c -k -w -Z -[ -[ -[ -[ -x -Y -X -m -q -m -Z -m -{ -r -p -J -( -! -` -. - - - - - -. -( -X -\ -j -f -L -f -X -Z -Z -k -* -L -U -U -J -Q -Q -Q -0 -Q -0 -p -b -h -h -p -a -b -x -~ -\ -] -) -t -p -q -q -p -d -p -d -* -% -& -W -8 -8 -& -& -& -k -* -q -W -W -0 -Q -b -J -J -j -c -\ -n -( -} -\ -) -} -] -f -q -q -q -& -p -M -# -M -[ -C -& -# -k -Z -C -v -n -u -v -x -U -j -c -X -v -j -u -q -U -# -p -p -k -k -q -q -O -b -# -# -8 -& -o -# -M -# -M -W -o -h -& -$ -\ -\ -] -W -& -\ -a -~ -) -~ -o -o -o -& -h -o -a -# -* -a -# -# -a -M -M -a -a -o -o -b -p -q -d -Q -L -q -b -m -p -k -m -O -m -Q -z -Y -O -- -_ -p -m -m -a -o -o -o -o -o -o -o -o -Q -Q -O -b -p -k -h -a -a -k -# -& -w -M -M -M -o -Z -O -Y -q -h -a -k -b -b -m -O -Z -) -[ -j -u -J -v -Z -u -u -n -v -c -c -c -X -C -Q -O -m -Z -m -Z -Z -p -m -/ -t -p -d -0 -Q -C -J -X -Y -Y -0 -J -Y -J -U -C -C -C -Q -U -X -c -z -z -b -] -] -[ -) -v -X -U -q -w -O -0 -Q -+ -C -0 -v -j -I -^ -. - - - - - -. -{ -u -/ -f -\ -\ -f -U -O -m -b -a -Q -Y -Y -C -C -J -L -C -C -0 -q -b -1 -[ -} -a -Y -h -I -( -{ -{ -Y -q -q -q -d -d -d -d -a -8 -& -& -8 -& -8 -C -& -# -& -% -8 -W -Z -0 -% -U -X -n -c -r -n -/ -/ -\ -| -| -{ -_ -} -q -m -W -q -M -* -# -) -% -& -& -o -m -Q -c -Y -Y -n -c -C -m -U -v -U -v -r -u -h -M -b -Z -k -b -O -q -0 -p -h -* -& -& -M -* -# -M -# -p -# -M -# -& -& -? -) -& -M -) -[ -$ -{ -] -B -* -* -# -* -h -8 -* -* -o -# -* -W -* -# -# -W -a -# -p -h -Z -q -q -C -O -w -b -m -b -k -O -Q -d -J -Y -O -- -_ -b -m -m -* -o -o -o -o -o -o -o -o -Y -J -w -b -b -h -h -a -a -h -8 -% -Y -M -M -# -o -m -0 -U -Z -a -h -h -k -p -d -p -O -+ -t -u -Y -0 -J -p -U -z -u -u -c -c -X -X -Y -J -0 -m -q -q -w -q -h -o -/ -\ -w -m -0 -L -C -Q -v -Y -X -C -C -C -C -J -U -J -C -J -X -Y -X -c -c -X -z -# -_ -| -X -U -d -d -m -0 -Q -Y -> -J -[ -/ -c -: -" -` - - - - -. -. -/ -x -t -t -/ -/ -f -X -q -q -k -a -v -X -X -Y -X -X -X -U -c -J -O -+ -L -j -; -{ -a -~ -. -] -1 -\ -C -p -q -p -d -p -p -b -k -8 -8 -8 -W -W -& -c -# -a -# -o -M -w -p -m -% -J -C -X -v -r -j -\ -j -) -| -\ -{ -{ -] -1 -h -W -q -& -o -# -| -& -& -& -# -d -O -J -J -Y -v -n -t -k -C -x -j -/ -x -x -m -o -p -w -b -Q -p -m -w -Z -d -o -& -8 -M -# -# -k -o -M -# -# -# -# -# -& -W -M -M -? -? -M -_ -! -W -o -# -M -% -W -M -# -o -* -o -# -W -M -* -o -* -* -h -Z -b -Q -Z -0 -p -0 -h -k -m -o -d -d -Z -p -Q -Y -Z -_ -_ -d -q -q -* -o -o -o -o -o -o -o -o -x -J -q -k -k -a -a -a -h -J -C -& -k -M -M -M -o -q -O -C -0 -a -h -k -p -p -d -w -c -) -f -u -J -w -Q -b -w -X -X -z -X -z -z -Y -X -J -Q -m -w -q -q -w -h -n -/ -L -Z -O -0 -Q -C -0 -Q -C -C -z -Q -C -L -C -C -J -U -Y -X -X -X -X -X -z -z -X -X -h -X -Y -p -d -m -O -Q -j -) -n -_ -( -} -: -, -. - - -. - - -` -J -x -f -t -r -/ -n -J -Z -w -h -k -z -Y -X -X -X -X -X -v -z -w -: -; -; -x -u -? -a -- -- -{ -| -f -0 -q -p -p -q -b -h -U -Y -v -\ -8 -W -W -o -Y -m -M -M -& -C -b -k -p -8 -w -J -z -X -u -v -t -t -r -\ -) -f -} -[ -} -B -& -q -& -o -# -( -& -& -& -# -w -m -m -J -Y -v -x -( -d -Y -( -v -\ -\ -x -c -# -a -p -b -b -d -q -q -w -d -& -& -M -# -k -h -M -# -# -# -# -# -# -# -# -# -# -# -$ -+ -M -{ -@ -m -* -# -8 -# -o -M -* -M -a -# -# -o -* -* -& -M -# -h -h -q -p -Z -m -Z -d -a -p -h -a -h -o -q -p -m -q -O -_ -} -w -m -p -o -o -o -o -o -o -o -o -* -r -Q -h -k -k -o -a -o -a -Y -a -& -B -M -M -M -o -q -O -0 -L -a -k -k -b -p -d -m -] -f -j -v -U -p -0 -k -d -C -J -X -J -X -X -Y -Y -U -O -w -q -q -q -k -w -t -j -0 -Z -0 -Q -Q -J -Q -0 -O -J -Q -0 -J -z -J -C -J -Y -X -Y -X -X -Y -Y -X -X -X -X -X -C -k -q -k -w -O -0 -? -U -x -- -[ -? -; -; -` -. -' -. - - -^ -m -j - -- -U -j -z -L -m -d -o -d -z -U -X -z -X -v -X -n -Y -" -^ -` -" -I -u -. -W -_ -/ -f -x -r -q -q -Z -k -q -c -u -t -\ -( -1 -& -8 -& -c -Y -d -a -& -& -v -k -k -q -& -p -0 -C -U -n -/ -u -j -| -t -\ -\ -( -1 -? -| -M -h -& -o -q -1 -& -8 -W -# -k -d -0 -J -X -u -c -t -O -Z -o -t -/ -( -t -x -o -o -m -b -d -d -w -m -q -k -8 -M -o -q -# -# -# -# -# -# -# -# -# -# -* -* -# -# -* -< -o -* -w -a -o -* -h -M -a -a -a -# -# -o -* -# -o -# -* -# -o -a -p -0 -m -Z -m -d -k -o -p -o -o -# -M -k -w -k -Q -0 -_ -f -Z -m -b -o -o -o -o -o -o -o -o -o -j -0 -a -h -b -o -h -o -h -* -m -& -@ -M -M -M -* -p -Z -m -U -q -k -k -b -d -p -q -_ -/ -r -v -0 -b -p -k -k -Q -q -w -0 -C -X -X -Y -C -Q -Z -q -d -b -p -n -f -j -m -O -Q -L -C -C -L -O -q -O -m -w -z -X -U -J -U -Y -X -X -Y -X -Y -Y -Y -Y -Y -Y -X -z -X -Z -q -q -m -Q -[ -c -< -< -] -< -' -' -. - -' -. -. -. -, -p -j - -t -Q -C -U -Q -m -b -# -d -Y -U -X -c -v -X -X -u -0 -" -. -' -` -, -u - -z -} -j -} -L -d -m -Z -c -x -/ -( -{ -[ -? -- -] -$ -8 -8 -W -W -W -W -& -& -Y -a -d -p -& -Z -L -O -Y -n -f -f -( -) -j -\ -| -| -( -} -? -M -b -W -o -& -z -W -& -W -* -p -Z -C -U -c -v -Y -] -u -U -d -n -n -| -/ -n -U -o -k -p -d -d -m -m -p -p -b -k -* -# -# -# -# -# -# -# -# -# -# -# -* -* -* -* -o -> -0 -f -U -a -% -# -W -W -* -* -# -o -o -a -# -* -# -* -# -# -* -h -b -w -p -w -O -Z -* -M -a -W -# -M -M -# -o -p -Z -L -_ -C -O -Z -k -o -o -o -o -o -o -o -o -b -j -O -a -a -d -o -a -* -C -k -z -& -Q -M -M -M -* -k -Z -Z -Y -b -h -k -b -p -p -c -) -r -v -0 -w -k -b -k -h -m -b -p -w -0 -Y -z -v -C -Q -Z -w -p -b -k -j -r -X -Z -0 -Q -C -U -L -L -O -p -w -m -p -0 -U -z -Q -L -J -Y -Y -Y -X -X -Y -U -U -U -U -Y -X -c -v -Q -q -O -Z -Q -Q -< -? -] -> -^ -' -` -. -' -" -' -. -; -d -u -Y -u -0 -O -Z -Q -q -k -M -w -X -C -X -z -c -Y -Y -c -' -" -. -' -` -` -} - -? -1 -x -i -Q -p -n -x -/ -( -} -? -_ -+ -_ -> -] -B -& -W -b -W -& -& -& -& -0 -o -a -b -W -w -m -0 -Y -v -X -n -f -f -n -( -t -j -) -1 -? -/ -p -M -* -& -W -& -& -8 -q -p -Q -C -Y -u -n -u -b -v -Z -Y -f -n -\ -f -c -z -M -z -d -p -p -v -v -W -b -# -# -* -# -# -# -# -# -# -# -# -# -# -# -* -* -o -* -w -0 -x -( -n -* -* -* -M -h -h -o -# -* -o -# -a -M -# -o -# -# -a -d -w -m -d -q -m -d -# -M -M -M -M -# -W -M -# -d -w -z -~ -w -Z -Z -d -o -o -o -o -o -o -o -o -w -X -m -o -a -k -a -a -* -) -k -# -8 -J -Y -M -# -* -a -O -L -Y -p -h -d -b -p -p -{ -/ -v -Q -q -0 -k -b -k -k -d -b -b -p -w -m -U -v -U -J -0 -m -p -b -O -f -f -0 -O -Q -Q -L -X -C -q -q -p -a -Z -p -p -Q -U -Y -C -J -X -X -X -U -Y -Y -Y -U -U -U -J -Y -z -v -u -L -Q -x -q -c -} -? -] -l -: -` -' -. -. -. -. - -" -p -x -U -j -X -b -p -q -d -h -* -m -U -J -Y -z -z -J -U -J -, -^ -' -' -` -^ -_ -' -f -O -| -J -X -r -1 -1 -? -_ -_ -+ -_ -_ -_ -_ -@ -8 -8 -W -m -& -c -W -W -& -h -a -o -b -& -Z -Q -m -L -u -v -L -r -j -Y -| -j -[ -( -\ -} -- -d -# -M -@ -B -@ -@ -Z -{ -t -m -Q -c -u -v -n -d -U -Q -C -b -c -x -n -u -h -k -w -q -p -q -B -$ -o -# -* -# -* -* -* -* -* -* -# -# -# -* -# -* -o -o -o -b -0 -Y -r -( -/ -h -* -* -M -& -o -o -o -M -a -# -a -* -M -# -& -M -# -p -m -q -m -q -k -a -* -# -# -a -o -* -M -W -M -b -d -| -~ -m -Z -Z -m -o -o -o -o -o -o -o -o -m -m -p -o -a -k -a -o -# -J -b -M -& -& -Z -# -M -* -a -Z -0 -Y -b -a -p -b -d -d -_ -/ -u -Z -C -m -p -b -d -d -p -w -b -b -q -q -J -z -X -Y -Q -m -b -k -u -/ -/ -Q -0 -Q -Q -C -U -L -p -w -O -a -w -d -b -q -Z -0 -Q -C -Y -X -X -Y -J -U -Y -U -J -J -J -J -X -z -v -O -Y -X -a -r -[ -_ -> -> -: -' - - - - - - -; -q -n -J -f -v -b -a -h -k -a -* -w -Y -J -X -X -c -J -Y -+ -" -` -` -' -^ -^ -- -( -a -0 -/ -v -u -- -_ -- -- -_ -- -_ -_ -_ -~ -- -& -Q -8 -8 -d -C -z -M -* -& -# -a -o -d -& -O -O -O -Q -X -z -0 -v -\ -L -\ -n -) -{ -) -{ -+ -c -# -W -] -* -8 -M -a -o -# -Z -J -Y -v -v -n -k -L -Y -L -d -n -n -L -m -O -d -d -q -a -% -$ -# -# -* -* -* -* -* -* -* -* -* -# -* -# -* -* -o -o -a -a -w -Q -Y -r -) -| -* -* -M -* -W -# -o -# -o -o -* -M -* -W -M -W -a -k -b -m -0 -Z -b -M -M -& -# -b -p -o -o -M -M -o -k -d -? -< -O -Z -Z -Z -o -o -o -o -o -o -o -o -p -Z -p -o -* -k -a -* -b -# -k -# -8 -& -B -o -W -# -a -Z -q -Y -b -a -k -d -d -p -< -f -Y -m -Z -p -q -m -O -Z -m -m -m -d -b -q -0 -z -z -J -Q -Z -b -b -t -t -0 -Q -0 -L -C -C -0 -L -Z -p -p -* -p -w -a -0 -m -d -Z -O -J -X -U -U -J -C -J -J -J -J -J -J -J -X -z -v -U -X -c -w -0 -1 -[ -+ -: -` -' -. - - - -. -> -m -x -n -u -v -Y -a -o -* -* -# -k -C -Y -X -z -z -C -J -, -" -I -' -` -^ -, -] -0 -J -Q -f -] -_ -_ -_ -_ -_ -_ -_ -- -- -? -< -> -8 -] -8 -& -M -Z -z -& -B -& -& -* -* -h -q -m -C -X -Z -J -c -q -J -u -0 -t -Y -t -\ -) -1 -[ -> -# -# -# -& -% -8 -1 -d -Z -x -q -U -X -J -X -L -O -c -Q -X -k -x -* -m -Y -d -B -Z -n -* -B -* -* -* -o -o -o -o -o -o -* -* -* -* -* -# -* -o -o -a -b -Z -L -z -/ -| -X -a -a -M -# -M -M -a -M -o -a -a -o -* -o -# -o -a -d -d -0 -Z -b -o -W -* -* -k -a -B -8 -d -o -W -# -a -w -! -< -0 -Z -Z -Z -o -o -o -o -o -o -o -o -m -0 -b -* -o -k -o -* -n -& -* -# -C -& -& -Y -M -M -o -Z -m -X -b -a -q -b -d -d -_ -f -Q -q -q -q -O -0 -Q -0 -m -0 -w -m -q -b -q -0 -z -J -L -Q -m -j -t -\ -L -Q -0 -Q -C -C -Q -q -m -p -a -o -k -p -* -d -0 -q -Z -m -L -J -U -U -C -C -L -C -J -C -C -J -U -Y -X -X -z -Y -z -c -n -L -: -i -! -l -: -: -: -; -I -: -( -Z -u -u -Q -v -U -J -a -o -# -* -d -0 -J -X -X -X -C -I -" -, -^ -^ -` -^ -I -v -C -C -L -? -] -] -] -? -- -? -- -- -- -? -] -? -! -@ -] -8 -M -8 -W -n -M -& -& -8 -W -a -k -w -Q -m -L -O -J -w -o -L -J -m -n -O -C -u -\ -) -- -+ -u -a -z -8 -B -@ -B -b -J -[ -w -j -L -v -q -O -Z -Y -0 -Q -b -M -d -W -m -$ -$ -8 -8 -0 -k -o -* -o -o -o -a -o -o -o -o -o -* -* -# -# -# -# -a -o -d -Z -C -u -/ -f -Z -# -a -# -M -* -h -h -* -W -a -k -# -# -& -* -8 -o -d -Z -L -p -o -* -* -k -& -z -Y -n -@ -w -& -h -& -o -d -l -> -Q -0 -Z -Z -o -o -o -o -o -o -o -* -U -O -b -* -* -h -* -o -Q -M -W -# -J -& -8 -C -M -M -o -Z -O -J -b -h -p -m -d -p -/ -t -0 -d -d -w -Q -Q -0 -w -p -w -m -m -m -d -p -q -U -c -U -J -C -x -f -Z -C -0 -0 -Q -L -C -Q -m -d -b -o -# -o -b -* -k -0 -Z -p -p -m -Q -O -J -J -C -C -C -L -C -C -J -U -U -Y -X -X -J -z -z -c -n -C -t -> -_ -> -l -i -! -> -< -f -0 -r -x -L -u -X -U -O -h -# -# -b -O -U -Y -X -X -0 -! -I -. -, -" -^ -" -; -q -L -C -t -; -; -I -[ -[ -- -? -] -? -- -[ -_ -} -{ -O -+ -8 -& -% -8 -Y -# -& -8 -& -k -* -b -d -Q -m -Z -0 -J -d -a -w -q -m -X -m -0 -c -t -) -( -< -] -k -u -M -% -@ -8 -& -w -p -0 -r -k -O -b -O -w -L -0 -Z -d -Q -M -J -& -& -Q -b -p -@ -a -o -a -a -a -a -a -a -a -a -o -o -* -# -M -M -M -# -a -a -d -Z -J -n -\ -j -W -& -# -a -# -a -o -& -M -# -* -o -o -M -# -M -W -* -q -b -Q -k -o -# -a -k -m -O -Z -0 -& -w -Z -# -& -* -k -l -< -Z -m -O -w -o -o -o -o -o -o -o -o -v -Z -k -* -o -a -o -o -w -W -W -# -W -0 -M -w -M -M -o -Z -m -J -q -a -p -m -w -v -t -r -0 -d -p -O -Q -d -a -b -b -q -p -k -m -q -b -q -L -X -Y -J -J -t -f -C -0 -O -0 -Q -0 -C -Q -Z -w -h -a -* -M -k -o -# -a -Z -m -m -q -Z -m -m -O -Q -C -C -L -L -C -C -J -U -Y -X -z -z -z -X -z -c -n -0 -p -i -+ -_ -- -_ -< -> -) -J -f -f -J -n -c -X -Z -Z -# -W -h -Z -U -X -X -Y -< -! -> -" -, -' -, -, -[ -O -L -v -+ -> -! -i -i -+ -[ -- -? -? -? -~ -+ -_ -$ -8 -h -8 -W -8 -8 -X -o -M -8 -M -C -o -h -b -L -U -Z -0 -d -q -* -b -h -w -m -p -w -U -\ -{ -{ -] -< -k -& -r -a -M -k -M -B -b -Z -Q -O -+ -m -J -k -m -k -q -m -@ -h -p -% -W -C -& -u -a -a -a -a -h -h -h -h -k -k -h -a -o -# -# -M -M -M -# -a -h -p -O -Y -j -\ -n -M -8 -* -W -* -a -a -M -# -* -o -W -h -M -* -M -# -a -p -p -q -a -o -* -h -Z -m -U -Y -p -% -v -b -# -# -M -o -; -> -m -O -Z -k -o -o -o -o -o -o -a -* -r -q -o -o -o -a -o -o -* -h -B -# -# -w -M -B -8 -M -o -m -m -Y -Z -a -k -w -p -| -/ -n -0 -b -w -O -Z -# -* -q -w -b -U -Z -d -w -b -p -0 -X -v -0 -u -f -x -0 -O -0 -0 -Q -0 -0 -0 -0 -Z -o -h -# -# -o -o -o -o -w -m -k -b -m -O -m -w -Q -Q -Q -L -L -L -L -C -J -Y -X -z -z -c -z -z -z -u -c -O -O -{ -l -; -l -: -" -< -r -t -f -X -r -v -z -O -m -a -M -q -Z -X -X -X -Y -< -! -! -> -: -` -; -I -c -C -Q -c -+ -~ -< -! -> -i -+ -- -_ -_ -? -? -_ -} -( -] -% -8 -& -& -% -c -& -M -& -a -X -a -M -p -Z -Q -m -w -a -o -* -# -h -b -b -b -p -Q -| -\ -( -) -i -d -B -O -n -m -b -m -J -@ -Z -M -B -@ -a -k -% -& -d -* -B -p -k -m -& -a -* -C -o -a -h -k -k -k -k -k -k -k -k -k -a -o -# -M -M -W -M -# -h -h -q -0 -c -f -\ -v -h -& -o -& -% -% -a -M -* -a -o -M -# -# -# -o -o -h -w -w -b -* -M -q -O -0 -Q -Z -O -w -Q -q -M -O -d -# -k -! -> -m -Q -m -o -a -a -o -o -o -a -a -# -j -b -o -o -o -o -o -o -0 -b -b -# -# -o -8 -& -U -M -* -m -m -Y -0 -a -h -k -Z -{ -\ -n -C -p -Q -Q -a -# -J -c -L -0 -v -Y -p -w -p -b -w -U -v -L -f -j -0 -O -0 -0 -L -O -Q -O -Z -O -m -h -o -* -o -# -* -M -k -o -q -p -b -p -O -p -q -p -Z -0 -Q -Q -L -L -C -J -J -Y -X -z -c -c -z -z -v -X -v -z -0 -p -; -: -: -: -< -r -j -f -f -x -u -u -O -Z -o -M -0 -m -X -z -X -Q -+ -< -I -: -, -; -! -: -Q -Q -C -< -? -- -+ -+ -+ -+ -< -~ -+ -_ -_ -- -] -[ -? -/ -( -8 -8 -& -# -X -* -W -W -& -v -8 -% -O -L -X -d -a -a -* -a -* -k -o -k -h -d -w -U -v -f -\ -l -+ -$ -# -n -k -o -M -# -C -$ -m -\ -r -w -v -Y -Q -w -O -z -0 -d -h -8 -8 -B -8 -* -a -b -d -b -k -b -b -d -b -k -a -o -* -# -M -M -& -W -# -a -k -q -Q -c -j -\ -c -* -8 -# -# -o -* -& -M -o -M -M -* -M -# -M -M -o -q -k -q -h -* -M -k -Z -L -Z -L -Z -m -0 -c -t -d -b -M -% -! -> -m -O -p -a -a -h -a -a -a -a -a -k -v -a -a -o -o -o -# -& -0 -d -m -* -a -/ -M -8 -& -M -* -p -m -L -Q -w -k -h -b -? -/ -u -Q -p -C -m -p -c -m -w -C -n -C -n -Y -q -0 -q -p -C -X -c -f -x -0 -Q -0 -Q -0 -O -Q -0 -m -m -b -b -o -o -# -# -# -M -k -o -p -q -k -k -q -O -p -p -w -m -O -0 -0 -Q -Q -C -U -U -X -z -z -c -v -v -v -x -u -U -J -m -Q -^ -: -: -_ -j -/ -f -j -v -u -n -Q -q -k -# -Z -O -z -X -U -n -~ -] -! -! -: -; -1 -l -m -0 -O -- -{ -} -} -] -] -_ -_ -~ -+ -_ -] -+ -_ -} -_ -} -] -8 -8 -& -k -L -* -* -& -& -c -& -p -q -Z -L -p -* -* -a -* -* -o -o -k -k -b -b -m -Y -) -( -+ -: -M -8 -Z -X -% -m -* -q -d -u -Y -n -n -x -\ -) -| -0 -Q -d -o -# -k -d -p -d -d -d -d -d -b -h -o -M -% -B -W -* -# -# -# -M -M -W -W -* -h -b -w -Q -v -x -( -z -k -& -M -# -# -W -W -o -8 -M -a -M -# -* -# -# -a -d -Z -k -k -a -* -Z -L -0 -O -w -k -q -0 -U -* -* -Q -o -M -i -i -Q -0 -w -p -k -b -h -a -a -a -o -O -Z -a -L -p -o -* -0 -& -M -m -w -* -q -} -? -& -d -W -* -k -Z -O -Q -q -m -h -k -< -/ -u -Q -p -O -b -k -x -w -O -0 -C -Y -X -t -Z -q -p -q -Q -z -t -j -v -0 -0 -Q -Q -0 -O -m -O -O -O -b -a -o -# -o -a -# -M -a -k -o -p -o -h -a -Z -p -d -p -w -Z -0 -0 -0 -0 -Q -J -U -Y -X -X -c -c -v -u -x -X -v -X -0 -C -Z -; -; -- -j -j -/ -j -n -n -n -L -m -h -# -Z -m -Y -X -w -< -< -| -i -i -; -; -c -l -0 -O -? -[ -| -) -1 -1 -1 -- -+ -] -_ -( -+ -? -? -} -{ -1 -o -% -8 -& -& -& -8 -% -a -& -o -8 -m -m -U -Z -h -o -# -o -a -k -o -k -o -* -o -p -m -0 -j -} -- -> -J -h -k -c -t -q -M -m -m -m -w -U -v -Y -x -) -O -q -v -h -a -m -m -m -m -Z -m -Z -Z -Z -w -p -b -k -k -a -a -# -# -8 -& -# -* -# -M -a -h -d -m -C -u -r -( -X -* -& -& -* -# -& -& -8 -8 -8 -o -# -M -W -M -# -h -k -q -w -a -& -o -m -\ -p -h -h -0 -J -Q -C -B -C -C -W -8 -> -l -0 -L -C -w -d -k -h -a -h -o -o -m -w -k -. -C -o -* -0 -& -W -o -q -* -b -( -) -o -M -& -# -h -Z -d -L -w -X -c -v -~ -/ -n -O -m -Z -h -J -L -8 -M -W -v -z -Y -z -/ -0 -Z -w -0 -C -f -r -J -Q -0 -Q -Q -O -Z -m -Z -m -b -a -a -# -* -* -# -p -o -M -a -* -p -b -h -a -p -p -b -k -b -q -w -Z -0 -0 -0 -Q -C -Y -X -z -c -v -v -v -x -r -c -X -C -J -L -m -J -] -j -r -t -f -x -j -x -Y -w -k -# -L -p -Y -Y -! -> -> -j -i -+ -l -< -n -l -Q -Z -{ -\ -f -t -/ -\ -) -( -} -{ -+ -l -) -[ -[ -1 -- -c -8 -& -8 -& -8 -# -W -W -8 -8 -W -& -p -m -Q -p -o -k -h -p -b -q -d -m -q -* -* -b -q -w -Y -{ -_ -! -? -M -% -r -C -v -a -h -C -C -Z -0 -L -Y -v -Q -Q -v -b -h -z -Y -U -U -U -Y -Y -Y -J -C -L -0 -Z -w -Z -m -Q -o -# -# -# -# -* -W -M -a -k -p -Z -C -v -j -t -X -a -a -a -k -h -8 -& -W -o -8 -% -o -# -* -# -# -* -p -k -q -a -# -b -Q -J -a -b -L -C -p -m -0 -& -O -J -8 -x -> -! -J -Y -J -q -Z -k -k -k -k -d -} -Z -m -d -^ -J -a -o -& -h -h -q -q -* -k -( -( -o -& -Z -# -a -Z -k -C -w -v -v -n -~ -t -v -m -q -q -p -b -B -d -0 -| -Z -C -c -x -j -0 -0 -q -Z -u -f -n -C -O -0 -0 -0 -Z -Z -m -w -w -p -a -h -O -Z -a -# -* -b -a -* -o -a -b -o -a -b -p -b -b -k -p -p -p -Z -O -0 -0 -Q -C -Y -z -c -v -u -n -n -x -Y -X -L -0 -Q -m -# -c -j -f -r -f -\ -f -r -z -C -b -# -L -q -U -Q -< -_ -> -n -i -X -! -) -c -! -L -/ -f -\ -f -t -r -f -t -( -{ -} -+ -> -! -[ -1 -) -\ -8 -B -% -8 -& -8 -U -m -W -& -& -u -W -b -p -C -d -* -h -b -d -Z -u -c -X -d -w -k -k -b -w -0 -t -- -> -[ -Z -B -p -J -X -C -o -m -b -h -d -X -J -t -0 -0 -# -b -0 -x -n -n -n -n -x -x -n -v -c -X -U -C -L -C -J -a -M -M -# -M -# -Q -W -M -a -k -p -O -J -c -f -n -U -8 -& -o -o -k -o -& -# -o -& -& -h -M -* -W -# -k -w -d -d -k -M -p -0 -c -h -L -b -a -* -w -Y -W -v -X -b -n -< -- -J -J -C -Z -Z -Z -h -* -+ -_ -+ -U -m -k -< -Q -o -a -b -k -W -q -q -* -a -h -t -# -& -U -# -o -Z -h -L -m -u -n -x -] -/ -x -0 -p -p -# -o -Q -% -& -k -z -v -J -X -n -n -b -w -w -f -r -J -Q -O -O -0 -O -O -m -q -p -b -w -\ -O -o -d -h -o -# -* -h -M -o -* -k -k -o -h -b -b -k -k -b -p -q -p -q -m -O -0 -Q -L -X -c -v -u -n -n -x -x -Y -J -c -m -Q -o -* -j -r -/ -f -/ -j -j -v -u -b -* -w -q -C -< -r -~ -w -| -i -n -! -Q -j -? -Q -t -v -j -j -U -u -r -j -/ -| -| -< -l -? -] -[ -+ -W -& -* -8 -8 -8 -8 -W -Y -U -& -8 -z -% -k -p -w -b -k -b -q -U -Z -U -\ -t -f -q -O -k -d -q -Q -r -_ -< -` -m -& -m -Q -Q -0 -{ -c -) -c -C -0 -o -p -Q -u -# -Z -) -| -/ -/ -/ -t -t -f -j -r -n -u -c -z -c -z -t -M -M -# -# -M -# -a -W -M -a -d -q -0 -U -c -j -v -C -8 -& -W -* -8 -a -M -h -h -& -8 -* -* -# -# -* -o -d -h -h -o -W -O -d -p -d -* -k -a -h -b -X -0 -j -c -X -c -< -u -C -C -C -b -t -! -+ -~ -_ -+ -< -n -w -a -a -a -a -r -k -k -% -q -w -# -o -o -v -M -& -h -M -o -Z -h -C -Z -x -x -r -{ -| -Y -O -d -q -o -a -8 -% -U -W -Q -J -u -x -x -| -w -w -u -f -x -Q -O -O -O -O -Z -Z -m -m -w -q -c -h -o -o -h -d -h -# -# -# -k -M -o -h -h -* -o -k -k -k -k -k -d -p -w -p -p -m -O -0 -Q -C -z -v -u -u -x -n -n -J -J -Y -C -a -w -o -n -x -f -r -f -t -j -j -Y -d -o -d -q -C -L -Z -i -m -: -> -n -! -Q -[ -} -J -x -Y -u -x -C -c -x -n -r -| -1 -> -v -- -j -h -8 -M -0 -& -8 -& -8 -% -8 -B -p -& -X -z -* -b -Z -L -o -k -q -j -z -q -u -X -Q -Z -n -0 -w -k -p -m -r -+ -< -` -b -# -8 -a -U -Y -/ -/ -f -Y -v -r -u -m -> -@ -M -X -) -( -| -| -| -\ -/ -t -f -r -x -u -v -c -c -v -q -# -# -# -# -M -# -# -W -# -a -p -m -Q -U -z -j -z -Q -* -# -8 -a -a -# -& -a -# -8 -8 -# -o -o -M -o -a -k -b -* -a -M -p -p -# -Q -O -k -a -k -q -q -Q -f -c -U -n -< -0 -L -C -U -> -> -~ -~ -~ -+ -{ -w -n -b -a -a -a -o -k -k -k -b -q -w -# -* -# -M -& -M -& -M -* -m -h -L -0 -Y -w -n -) -\ -z -Z -d -p -h -# -8 -q -& -q -# -b -Q -\ -c -u -p -m -t -x -v -O -0 -O -Z -0 -O -m -Q -q -k -v -u -k -h -k -k -o -h -b -M -M -& -k -M -o -h -o -# -k -k -k -h -a -b -d -m -Z -q -p -q -Z -0 -L -J -c -u -u -n -n -n -c -C -C -c -0 -o -o -n -u -n -f -r -/ -/ -f -z -m -h -b -q -L -Q -Q -+ -0 -I -\ -Q -> -Q -J -} -t -v -J -U -X -J -C -x -v -n -f -) -[ -p -8 -8 -M -C -Z -8 -& -& -* -# -8 -8 -m -W -& -& -c -h -a -m -Q -k -O -t -X -O -J -X -v -1 -X -v -1 -m -Z -b -w -C -] -+ -; -* -Z -b -o -O -Z -L -z -Q -v -U -x -f -Z -n -M -# -v -\ -) -[ -? -] -} -) -( -| -\ -\ -/ -u -u -v -c -* -# -# -# -M -# -# -W -M -o -k -m -O -L -U -X -/ -X -Z -& -h -o -o -& -a -M -a -o -* -& -a -a -* -M -o -h -o -k -b -* -* -m -q -# -k -a -b -h -p -J -q -Z -n -c -v -< -_ -L -C -C -v -< -< -> -( -q -Z -Z -0 -r -h -a -a -a -# -o -b -b -h -w -w -# -* -# -# -# -M -& -m -* -m -h -L -Q -p -C -Q -n -) -n -0 -p -p -p -M -b -& -8 -k -& -& -M -v -/ -t -Q -O -f -x -C -Q -0 -Z -Z -w -k -0 -q -h -b -/ -c -q -m -p -h -h -a -k -o -# -# -& -k -M -o -a -* -* -a -a -h -a -h -b -d -w -Z -Z -d -p -q -O -C -Y -c -n -v -x -x -u -C -O -X -Y -W -b -u -u -j -x -j -f -/ -t -Y -0 -k -b -p -L -Z -? -< -1 -> -U -L -) -L -q -] -C -c -C -Q -L -C -L -Y -z -u -x -/ -] -( -b -% -B -% -w -8 -a -8 -# -* -8 -& -% -& -& -W -M -o -h -m -Z -a -c -0 -Y -L -Y -( -( -( -{ -< -1 -j -Q -d -m -Y -[ -? -I -i -* -W -a -Z -r -z -J -Y -O -x -L -0 -U -m -# -M -( -f -f -j -j -j -j -j -r -r -x -n -u -u -u -u -* -* -# -# -# -# -# -b -W -M -o -d -O -0 -C -Y -Y -f -Y -w -p -o -o -a -b -8 -W -8 -o -a -& -% -# -* -# -M -a -o -h -a -M -k -Q -O -p -U -h -d -a -a -0 -h -C -z -< -< -~ -] -L -C -C -0 -m -Z -m -m -Z -Q -Q -Q -Y -k -h -a -h -x -& -d -# -h -q -w -* -* -M -M -Q -M -& -z -o -q -k -Q -Q -b -p -p -O -\ -x -C -w -w -p -* -% -% -% -h -a -& -{ -t -_ -f -n -n -r -n -Q -Z -m -Z -Z -Z -q -q -k -k -d -\ -X -Z -Q -O -k -k -a -b -h -M -o -M -8 -b -# -* -o -# -* -o -a -h -o -h -b -d -q -w -Z -p -d -d -O -L -Y -u -x -x -x -n -U -0 -z -Y -W -W -n -c -j -j -x -j -r -f -c -Q -q -k -m -Q -m -] -[ -[ -_ -J -J -{ -m -q -/ -0 -x -Q -Z -Z -Z -O -O -X -n -u -t -] -l -Z -8 -8 -8 -Y -8 -a -8 -# -# -M -h -% -o -& -& -# -a -h -q -p -& -| -0 -J -o -O -z -| -x -\ -? -_ -? -w -q -m -J -/ -{ -! -i -M -M -h -C -J -U -C -J -Y -Y -C -q -Q -Z -* -W -x -r -x -x -r -x -x -x -x -n -n -u -v -u -v -u -o -# -# -# -# -# -# -> -M -# -a -p -0 -0 -J -U -Y -r -Y -m -Q -O -8 -h -W -M -M -k -o -# -o -o -* -h -* -* -* -k -k -o -# -a -J -q -J -X -_ -& -_ -~ -- -+ -< -~ -+ -~ -+ -< -J -O -m -w -m -m -O -0 -0 -L -L -Q -Z -h -a -a -h -J -W -# -W -h -q -w -# -* -M -M -M -h -& -* -* -h -d -m -Q -h -d -d -p -/ -x -u -m -q -w -a -k -b -h -M -& -Z -d -w -t -c -q -t -n -Y -Q -m -Z -m -Z -m -b -a -b -h -u -( -k -O -0 -Q -0 -k -h -d -k -# -# -# -M -8 -b -* -o -M -# -* -a -a -a -o -h -k -b -d -p -w -w -b -d -p -Q -Y -n -x -x -x -X -0 -Q -Q -q -* -c -v -f -j -j -r -j -j -r -J -w -a -d -0 -p -_ -r -] -- -J -Y -j -q -J -Z -Z -J -Q -U -Z -O -O -0 -Y -~ -[ -1 -1 -( -q -8 -W -# -Y -8 -8 -8 -# -M -8 -8 -8 -& -& -& -8 -% -h -b -Z -% -X -O -L -q -w -j -c -X -q -1 -X -) -i -L -m -C -x -} -- -- -# -b -o -O -r -U -J -J -J -L -Q -b -Z -q -# -X -x -x -x -n -u -n -n -u -v -v -c -c -c -v -v -0 -o -* -# -# -# -# -# -M -M -# -h -m -Q -Q -C -U -X -u -U -q -X -r -a -k -h -k -& -M -h -& -W -# -o -# -a -M -* -h -a -k -* -h -f -h -J -! -+ -M -_ -? -~ -+ -~ -< -j -d -m -w -q -w -w -O -0 -Q -Q -L -0 -m -m -L -Z -k -h -a -h -h -W -# -h -h -q -w -# -# -M -W -M -a -& -8 -* -a -q -b -w -h -d -b -d -t -f -x -Z -w -m -a -h -h -h -h -o -* -Z -k -v -X -c -j -u -U -Q -m -m -C -q -h -h -b -b -h -/ -( -k -Z -Q -L -L -k -k -k -b -a -W -a -M -# -& -b -# -* -o -* -a -o -a -* -o -h -k -k -k -d -d -q -b -b -p -m -z -n -x -r -u -O -w -Y -p -# -U -u -j -x -r -j -r -t -f -L -m -k -b -Z -d -_ -c -| -? -Q -u -C -U -O -O -0 -0 -Q -U -0 -L -Z -Z -Q -z -X -c -{ -] -q -M -8 -8 -B -W -& -B -M -* -q -M -8 -a -* -o -& -8 -d -h -m -a -0 -m -X -p -q -c -U -U -r -t -( -Y -x -X -O -Z -z -) -] -i -M -* -d -Z -j -r -C -X -Y -C -Q -L -a -o -# -C -n -n -u -v -u -v -v -c -c -z -X -z -z -v -v -a -o -* -# -# -# -# -M -$ -M -* -k -Z -L -Q -C -U -Y -c -C -a -L -( -X -b -h -p -& -M -h -W -8 -a -* -M -# -* -h -k -h -a -a -o -f -k -Y -< -+ -* -+ -] -j -w -O -m -w -q -q -w -Z -0 -Q -Q -Q -Q -m -q -q -w -m -Y -Z -h -h -a -h -h -# -k -k -h -q -q -# -# -M -M -M -a -& -& -* -a -m -k -p -a -d -b -b -t -\ -j -c -p -q -k -b -k -k -k -h -* -J -* -C -c -/ -x -c -U -Z -O -0 -d -p -d -b -k -k -* -/ -) -b -Z -C -C -U -L -p -b -b -d -W -# -b -# -M -& -d -# -M -a -# -* -o -o -* -o -k -k -k -k -k -b -d -b -b -d -q -c -Y -x -n -Y -Z -U -# -* -J -v -r -j -j -r -f -j -n -C -0 -b -h -b -b -] -] -c -~ -O -) -C -0 -0 -Q -C -L -Z -O -L -C -Q -0 -O -C -X -Y -i -_ -w -8 -8 -k -J -b -M -8 -q -# -8 -& -w -a -& -& -Q -o -8 -M -w -o -k -w -Q -p -w -d -O -U -Y -\ -C -t -x -J -L -0 -Y -{ -( -+ -r -# -d -0 -Q -x -u -U -U -Y -X -Q -Q -M -# -U -n -u -c -c -c -z -X -X -Y -Y -Y -X -X -c -c -o -o -# -# -# -# -# -M -M -M -o -d -O -C -L -C -U -X -c -L -8 -z -| -/ -a -M -b -h -W -k -M -& -o -* -a -* -o -# -a -h -* -* -* -U -w -Q -X -J -k -O -m -Z -q -w -m -m -0 -0 -0 -0 -Q -Z -q -q -m -w -q -q -q -w -Z -m -a -a -a -a -@ -k -k -h -h -q -q -# -# -M -M -M -X -8 -8 -o -* -m -b -d -h -d -d -b -n -t -t -x -p -b -k -k -b -b -k -h -o -a -k -0 -j -r -n -X -O -Z -Z -w -m -b -b -b -o -* -* -) -| -q -0 -Q -C -z -Y -O -b -h -h -a -# -a -* -# -M -W -k -M -a -a -o -o -o -o -* -* -k -k -k -k -h -h -k -b -b -p -q -p -U -J -c -m -Q -o -a -L -v -x -r -j -j -j -r -x -X -U -d -a -k -b -] -{ -{ -z -x -X -O -0 -J -Q -Q -m -m -m -Z -C -C -Q -0 -0 -J -Y -z -j -% -Y -n -v -Y -L -# -U -% -% -8 -o -w -L -& -# -h -a -b -h -k -h -p -C -J -q -L -b -O -L -p -Z -z -| -) -. -0 -w -z -[ -( -_ -, -Z -o -0 -C -0 -v -J -U -X -X -U -0 -M -# -Y -u -v -c -z -X -Y -Y -U -U -U -Y -Y -z -c -p -o -* -# -* -# -# -# -& -M -# -a -p -0 -J -C -J -Y -X -z -Q -% -v -\ -1 -k -d -h -d -k -k -& -# -b -& -b -o -o -o -# -k -# -o -o -L -d -q -J -O -b -m -w -O -0 -Q -Q -Q -O -q -q -q -q -q -w -m -m -w -w -q -p -Z -m -b -a -a -a -& -W -k -k -h -k -q -q -# -# -M -M -M -W -8 -8 -Y -* -m -h -d -k -d -d -d -0 -t -/ -j -m -a -h -k -b -b -b -a -h -M -p -b -r -n -v -c -C -C -L -p -b -k -k -k -k -a -U -( -f -Z -0 -L -U -Y -z -C -w -p -b -o -# -o -* -# -# -* -M -k -* -* -o -o -a -a -a -* -o -h -k -h -h -a -a -k -b -b -b -q -w -J -J -O -o -* -a -0 -u -x -t -r -j -j -r -r -x -0 -b -# -k -L -1 -) -t -f -c -L -0 -J -L -Q -m -w -* -# -m -m -C -J -Q -Z -0 -J -U -& -f -u -n -v -w -L -a -Y -q -B -& -o -* -* -& -Y -J -h -a -d -h -o -Z -Y -Z -h -0 -* -z -k -p -U -J -u -^ -/ -U -O -Q -( -] -] -; -m -d -Z -X -0 -n -\ -J -X -u -Y -. -# -M -U -z -c -z -X -U -U -J -J -J -J -U -Y -z -X -a -o -* -* -# -# -# -# -t -# -# -a -q -0 -J -C -J -Y -X -z -Q -M -v -/ -1 -b -k -p -d -# -h -M -J -^ -# -h -a -# -M -o -a -a -a -* -L -L -b -J -Y -p -L -0 -Q -Q -q -p -q -q -q -w -q -q -q -w -q -w -q -q -p -d -O -w -a -a -a -# -W -W -M -k -h -b -q -q -# -# -M -M -M -W -& -& -B -o -m -h -b -k -p -b -b -b -t -/ -f -J -k -a -k -p -q -w -b -h -# -d -J -f -n -v -z -J -q -d -b -b -k -k -k -k -* -r -) -q -m -O -C -C -X -z -X -m -p -k -b -o -o -p -* -* -o -# -M -* -* -a -o -o -a -a -a -o -o -h -h -a -h -a -* -o -p -b -p -b -p -w -O -o -* -h -d -v -x -j -j -j -j -u -X -Y -Q -d -o -b -Y -1 -| -f -x -J -L -U -C -L -p -# -b -o -o -Q -q -Z -0 -Q -Z -Z -0 -C -J -1 -( -| -j -a -u -* -j -w -# -& -* -# -a -& -a -b -k -Y -Y -p -a -m -L -q -o -a -M -\ -| -0 -J -U -j -- -j -L -O -C -/ -) -} -> -z -z -X -n -r -u -z -u -J -Y -J -Y -o -U -U -U -X -Y -Y -U -J -C -C -C -C -J -J -Y -C -* -# -# -# -# -# -# -# -/ -M -# -a -q -0 -C -C -U -Y -z -Y -0 -b -v -/ -1 -O -d -p -q -M -# -& -l -[ -k -k -o -M -o -a -a -a -o -h -M -C -L -U -C -w -q -m -0 -w -q -q -q -p -m -q -q -q -q -q -q -d -p -d -p -d -Z -q -a -a -a -{ -# -# -B -h -h -b -q -q -M -# -M -M -M -M -B -& -& -b -b -h -h -b -d -b -b -b -/ -/ -\ -n -b -k -q -d -k -a -a -h -L -* -r -j -u -v -X -Q -O -b -b -h -d -b -a -h -# -j -| -w -Z -O -C -J -Y -X -c -O -p -d -k -k -o -p -a -# -o -a -# -a -h -# -h -o -a -o -a -a -o -o -h -h -o -a -o -* -o -b -p -w -b -b -k -# -# -M -w -n -x -j -j -x -n -c -q -0 -O -w -0 -d -\ -) -| -j -v -X -U -U -0 -q -* -d -k -d -o -C -C -Z -L -C -0 -m -0 -C -Q -X -c -{ -r -p -| -o -u -Z -q -@ -h -o -# -& -* -o -M -* -* -h -o -0 -0 -h -* -d -M -\ -\ -h -k -z -U -f -f -z -O -0 -c -1 -] -> -[ -n -) -v -{ -t -j -r -} -J -v -I -o -Y -J -J -Y -Y -U -J -C -C -C -C -L -L -L -C -q -# -# -# -# -# -# -# -# -d -M -* -h -q -Q -C -C -U -Y -c -Y -m -p -v -\ -) -Y -w -q -b -o -a -w -u -z -0 -h -k -h -o -h -# -h -# -# -# -Q -# -z -J -m -q -0 -Z -w -q -q -w -q -w -w -w -q -p -b -d -b -p -d -p -b -Z -q -a -a -a -d -a -p -d -h -a -d -q -q -# -# -M -M -M -M -L -& -& -c -o -k -k -b -h -d -d -d -Q -/ -| -/ -w -b -w -k -k -a -a -h -U -{ -f -n -c -c -C -O -O -d -b -k -b -k -a -# -* -n -\ -p -m -0 -Q -U -U -Y -X -Q -q -w -b -h -a -a -h -o -o -o -o -# -b -* -o -h -a -a -a -a -a -a -o -a -a -o -o -o -# -* -b -b -q -b -p -p -# -W -d -c -x -x -x -u -X -J -w -w -J -k -b -w -) -| -f -x -u -J -U -O -b -o -o -w -U -m -b -b -X -p -Z -0 -L -w -Q -Q -Z -Q -Q -\ -Y -# -J -0 -L -O -M -@ -m -o -0 -& -& -b -o -a -* -* -# -# -d -d -M -M -M -/ -( -q -X -X -X -x -) -` -Z -m -u -[ -_ -_ -< -f -x -x -( -z -] -t -f -n -j -) -o -U -C -Q -U -U -J -C -C -C -Q -Q -Q -0 -0 -m -k -# -# -# -# -# -# -# -# -8 -W -* -h -w -0 -Q -L -J -Y -c -X -w -w -v -\ -) -x -# -q -M -M -b -M -d -C -b -d -# -* -k -a -h -a -h -h -n -L -J -z -] -C -J -L -p -w -q -q -w -w -w -p -m -q -b -b -d -b -b -p -d -d -m -p -a -a -# -* -a -p -k -h -a -p -q -q -# -# -M -W -M -M -m -k -& -v -a -k -k -b -a -d -d -b -d -f -{ -\ -O -p -b -k -h -h -a -k -X -X -f -n -z -X -Q -Z -w -p -b -d -b -h -a -# -a -c -| -d -O -Q -L -Q -J -Y -U -Q -h -w -k -k -M -h -h -a -a -o -o -* -# -m -b -* -o -a -a -a -a -a -a -a -a -o -o -o -* -# -# -d -q -w -p -p -* -# -o -c -n -n -x -c -C -q -q -O -q -b -d -0 -) -/ -j -x -v -X -X -q -* -* -a -* -n -0 -X -d -n -Q -Z -Q -L -m -Z -O -O -0 -J -J -C -M -Q -0 -Z -O -8 -$ -o -Q -Q -& -W -* -# -o -M -* -* -o -o -k -& -W -W -t -\ -p -L -X -v -r -) -. -O -0 -J -} -? -- -! -j -n -t -/ -r -) -\ -/ -v -( -m -o -0 -Q -0 -J -C -C -L -L -Q -Q -0 -0 -O -m -p -o -# -M -# -# -# -# -# -M -# -M -* -h -w -0 -0 -L -J -U -c -Y -q -m -u -/ -1 -j -0 -d -m -q -h -W -Z -C -Z -d -a -* -o -h -h -# -o -h -x -o -C -Y -Y -Y -L -X -O -w -w -q -q -d -p -q -w -q -b -b -d -d -b -b -b -d -q -p -a -a -x -a -a -W -k -h -a -d -q -q -# -# -M -W -M -M -W -x -# -o -* -h -k -b -a -d -d -d -d -b -t -) -\ -L -k -k -a -h -a -k -p -f -r -n -Y -J -0 -q -q -b -k -b -b -k -h -M -X -t -n -m -0 -0 -Q -C -U -C -Z -Q -k -a -k -M -o -b -a -o -o -a -h -a -* -# -m -M -a -h -a -a -a -a -a -a -a -o -o -o -o -# -* -# -L -w -q -m -o -M -M -v -Y -0 -O -q -a -k -m -p -k -k -k -f -| -/ -x -x -z -X -b -p -Q -m -a -m -q -\ -v -U -Z -z -b -Z -0 -m -w -Z -Z -Z -C -X -U -W -# -q -w -0 -$ -& -B -Z -C -o -o -a -# -W -Z -# -o -o -h -a -o -W -* -\ -( -b -k -X -v -j -) -. -O -O -X -? -? -_ -} -{ -o -/ -v -j -f -| -f -c -t -w -p -Z -Z -m -L -L -L -Q -0 -0 -O -Z -m -w -p -k -* -# -M -# -M -# -# -M -M -* -M -o -h -w -0 -O -Q -U -Y -X -U -w -Z -u -t -) -v -o -p -b -Z -d -M -o -m -Z -d -o -o -h -k -k -k -# -h -a -h -w -L -Y -J -Y -C -d -q -q -p -p -p -p -q -q -p -b -d -d -d -d -b -b -Z -p -h -a -a -J -a -b -a -k -h -a -d -p -q -M -# -M -M -M -M -W -% -8 -& -C -a -k -b -a -p -d -d -p -d -d -c -) -| -m -k -k -d -h -k -p -x -n -v -U -w -q -q -b -b -k -b -b -o -# -W -x -u -f -m -L -0 -Q -L -C -C -q -O -k -h -k -k -k -b -a -k -h -a -o -a -a -# -M -Z -# -a -o -a -a -a -a -a -a -a -a -o -o -o -o -o -* -d -m -M -# -M -# -* -* -o -* -o -o -p -d -k -k -h -k -) -| -f -n -v -z -L -q -Z -C -j -p -# -U -| -( -b -p -v -a -w -O -Z -m -O -0 -w -m -Z -m -m -& -M -d -8 -% -@ -% -& -C -a -* -# -M -# -b -Z -k -m -Z -d -* -# -* -( -1 -d -k -Y -u -\ -` -. -m -C -v -t -} -> -{ -O -n -B -q -/ -t -u -t -v -Y -q -0 -m -q -q -Z -0 -O -Z -Z -m -m -w -q -d -k -a -# -# -# -M -M -M -M -# -M -# -M -o -k -w -O -Z -Q -J -Y -X -J -b -Z -c -f -| -v -q -b -0 -m -Z -a -q -k -w -b -b -a -k -o -k -a -a -a -0 -m -& -m -X -U -O -C -o -w -p -q -q -q -b -q -q -k -b -d -d -b -b -b -b -m -p -a -a -* -M -& -d -a -k -h -a -d -p -q -M -# -M -M -M -M -M -k -& -8 -W -a -h -k -a -p -d -p -d -p -d -d -b -x -J -p -h -h -a -k -f -f -x -v -q -Z -w -k -b -k -k -k -b -o -M -# -x -j -j -q -O -0 -O -C -L -0 -Q -q -d -o -b -m -o -* -k -a -a -o -a -a -a -a -M -& -z -* -a -a -a -a -a -h -h -h -h -a -a -o -a -* -a -o -k -* -M -M -& -M -M -a -o -o -o -d -b -b -b -a -b -) -\ -f -t -c -v -m -a -k -q -k -( -b -c -_ -1 -j -q -? -k -m -O -w -w -O -L -q -w -w -m -m -# -J -d -@ -@ -8 -% -& -C -h -a -M -& -a -p -d -b -# -p -k -0 -* -# -) -{ -a -k -Y -v -r -, -! -Q -O -v -/ -1 -+ -{ -k -b -W -O -X -X -v -f -j -c -d -p -q -d -k -p -m -m -w -w -q -p -p -b -k -a -* -# -M -M -M -M -M -M -# -M -# -M -a -k -w -Z -Z -Q -J -U -Y -Q -W -Z -X -j -/ -u -b -0 -o -b -q -W -b -q -h -p -d -k -k -h -k -b -a -o -C -p -v -a -# -u -C -k -m -m -Z -w -q -p -k -p -p -h -d -p -d -d -d -b -b -m -d -a -a -U -& -M -M -h -k -a -a -d -p -q -M -# -M -M -M -M -W -b -& -8 -m -o -h -k -a -p -p -d -p -p -p -p -d -d -w -o -h -a -h -k -f -r -x -Y -Z -q -k -b -k -k -k -k -h -* -M -W -x -x -u -m -O -0 -0 -Q -L -Z -O -d -p -o -b -b -a -o -a -a -h -k -a -a -h -a -a -M -o -z -# -a -a -a -a -a -a -h -h -h -h -a -o -o -a -# -o -M -& -* -M -o -a -o -o -o -k -b -b -b -k -h -0 -( -/ -u -n -c -U -k -& -M -0 -J -x -J -h -] -_ -> -m -; -h -m -Z -Z -w -0 -L -q -q -q -q -8 -B -v -b -$ -@ -8 -8 -& -C -b -# -* -o -b -M -# -a -o -b -k -o -M -M -{ -} -a -k -Y -u -x -} -( -O -O -z -\ -{ -? -) -p -a -J -& -L -W -Q -w -Z -C -b -d -d -h -h -h -q -q -p -p -d -k -h -a -a -* -# -M -M -M -W -W -M -M -M -M -M -# -a -b -w -Z -m -Q -J -Y -Y -Z -* -q -J -u -r -Y -k -Z -* -M -a -h -* -b -q -q -k -k -a -a -k -# -o -a -L -J -/ -h -m -h -b -* -Z -m -w -q -q -d -h -d -d -k -d -d -b -d -p -p -d -w -b -o -a -a -J -M -W -a -k -a -a -d -p -p -M -# -M -W -W -M -M -W -& -% -* -* -h -h -a -p -d -d -d -p -p -p -p -p -p -d -p -p -d -U -j -n -v -U -w -p -k -b -k -k -k -a -o -* -8 -# -x -j -X -O -0 -0 -O -L -J -O -w -p -p -# -o -b -k -o -h -h -h -a -o -a -a -h -a -a -W -b -Q -d -a -a -a -a -a -h -k -h -h -h -o -a -o -o -o -o -# -o -* -k -0 -b -a -o -k -b -b -k -h -k -Q -( -t -v -n -v -0 -k -a -* -* -\ -* -n -d -x -_ -i -p -. -a -w -Z -O -m -0 -Q -w -q -q -q -* -c -Y -d -M -@ -8 -8 -& -C -b -o -o -o -b -h -o -a -a -d -b -w -a -# -{ -} -# -d -U -v -x -1 -x -Z -Q -U -\ -- -- -? -o -m -# -* -J -8 -% -8 -h -d -b -d -k -h -o -a -p -d -b -k -h -h -a -o -* -* -# -# -M -& -# -a -a -q -w -o -M -M -a -b -w -m -m -Q -J -U -Y -m -b -p -Q -z -x -0 -o -k -o -o -p -p -* -b -p -q -O -m -b -h -k -a -k -* -O -Q -\ -M -k -C -C -a -O -Z -w -p -p -b -h -d -d -b -d -b -d -d -d -d -p -w -b -a -o -a -d -a -o -a -k -a -a -d -p -p -M -# -M -M -M -M -M -M -M -& -& -c -o -a -h -b -d -d -p -p -p -p -p -p -p -p -p -d -q -j -j -n -c -Q -q -k -k -b -k -k -h -o -o -& -8 -W -x -x -c -Q -O -0 -0 -0 -Q -0 -b -p -a -a -a -h -a -h -k -h -k -h -a -h -a -a -h -a -a -M -b -0 -b -h -a -a -a -a -h -k -k -h -h -h -a -a -h -a -* -b -b -d -k -h -o -a -p -b -b -k -h -h -f -| -r -j -u -r -o -v -d -q -o -h -# -f -b -Y -j -\ -x -1 -b -b -m -O -Z -Z -Q -q -p -q -Z -0 -Q -O -d -# -B -8 -W -W -b -& -* -k -a -* -w -a -# -p -m -k -q -k -a -} -} -# -0 -X -r -r -) -q -w -U -J -1 -( -} -} -M -b -M -k -0 -* -C -M -# -o -a -a -* -* -* -* -o -k -h -h -o -o -M -o -# -o -m -W -M -q -b -a -b -b -k -B -M -# -h -d -m -w -Z -Q -J -U -U -w -k -p -0 -Y -n -Z -q -O -w -O -0 -Z -Q -W -Q -m -q -b -a -h -h -# -k -a -U -d -r -X -b -q -0 -b -a -w -q -p -d -d -b -p -k -b -b -d -b -b -b -b -w -k -k -o -* -a -8 -o -a -a -k -o -a -p -p -p -M -# -M -M -M -M -M -M -& -& -& -j -o -a -h -h -p -p -p -p -p -p -p -p -p -q -q -p -X -j -r -x -Y -Z -p -k -k -b -k -a -* -a -# -8 -8 -W -x -x -J -Z -0 -0 -O -O -Q -0 -Z -d -o -a -# -k -a -k -b -h -a -h -a -a -h -h -a -h -k -o -& -C -d -h -a -a -a -a -h -h -h -h -h -h -a -h -a -k -a -a -a -h -h -a -o -a -d -b -k -h -k -b -( -\ -j -j -v -z -a -L -t -q -b -o -# -n -b -C -w -Q -k -[ -p -b -m -m -m -Z -Z -q -q -k -d -b -k -b -C -# -8 -% -& -W -b -& -p -b -b -a -k -a -h -q -k -b -k -p -a -[ -{ -d -Q -z -j -f -/ -p -m -Q -X -1 -) -1 -( -b -M -# -a -q -8 -U -W -8 -a -a -a -# -# -* -* -* -a -o -h -b -o -a -o -o -k -k -o -M -M -h -o -& -W -k -W -M -# -k -d -m -w -Z -Q -C -J -U -p -h -p -0 -U -v -Z -k -q -m -0 -q -Q -O -d -m -q -m -w -d -k -a -h -a -a -o -O -d -t -q -z -w -Z -Z -w -q -p -d -b -p -d -h -b -b -d -b -b -b -b -w -k -a -a -J -h -* -o -o -h -k -o -a -d -p -d -M -# -M -W -W -M -M -M -a -& -& -v -o -a -a -a -p -p -p -p -p -q -p -p -p -q -Z -8 -r -r -u -z -Q -O -k -b -b -b -k -a -h -o -& -& -W -M -r -r -C -Z -O -0 -O -Q -C -w -a -k -# -* -M -b -d -k -h -a -h -a -h -a -a -a -h -a -a -a -* -W -J -a -o -h -a -a -a -h -h -h -h -h -h -h -h -a -a -a -a -o -o -o -a -h -p -p -d -d -b -k -) -/ -v -x -u -% -M -C -a -Q -h -m -# -a -b -c -k -L -m -v -M -p -m -m -q -w -Z -m -w -q -q -Z -o -& -L -p -8 -B -W -W -k -& -M -b -b -b -h -h -m -m -p -a -d -b -k -} -1 -m -J -X -v -] -n -m -Z -C -u -) -) -\ -[ -p -# -@ -B -% -d -& -& -Y -p -o -o -M -W -W -W -a -* -0 -b -p -h -a -* -M -# -a -k -W -W -W -* -8 -* -W -B -M -# -h -p -Z -w -Z -L -J -J -J -d -a -q -0 -J -v -Z -& -Z -p -q -Y -Z -O -Z -Q -d -d -b -b -b -* -o -h -* -o -d -a -/ -k -J -t -| -n -q -p -d -p -k -d -d -h -b -d -b -b -b -d -b -q -k -o -o -& -& -# -o -o -h -k -o -o -d -d -p -M -# -M -W -M -M -M -W -W -& -o -% -L -o -a -a -p -p -q -q -q -q -q -p -p -q -a -n -j -r -u -J -Z -O -k -k -b -b -b -a -* -# -M -8 -8 -k -r -r -L -O -O -0 -w -O -w -w -b -k -* -h -o -b -k -k -k -b -a -a -h -a -a -h -a -h -a -h -h -# -M -O -a -o -h -a -a -h -h -h -h -h -h -h -h -h -a -a -a -a -a -h -h -q -a -h -b -h -a -p -) -t -u -x -r -M -0 -b -M -o -J -# -C -L -& -h -M -X -p -C -# -w -O -w -q -m -Z -w -w -q -q -w -& -& -Z -0 -& -8 -& -W -h -k -% -a -h -k -h -h -k -b -Z -w -0 -d -b -{ -h -m -C -c -( -) -z -m -Z -Y -n -t -( -| -) -W -B -@ -8 -W -a -h -% -8 -# -d -p -m -* -C -h -h -p -p -k -L -Z -q -# -# -* -# -# -h -h -W -& -8 -* -M -% -W -# -h -p -m -m -O -L -C -C -O -p -h -p -0 -Y -u -L -& -d -q -C -O -L -0 -Z -L -O -m -q -q -d -a -b -# -h -a -# -# -k -h -p -) -| -f -# -b -p -p -a -p -b -b -d -b -b -b -d -d -b -q -a -o -Q -a -M -o -o -o -h -h -o -o -d -d -p -M -M -M -W -W -M -M -M -M -B -# -& -/ -o -a -h -q -q -q -q -q -q -q -q -q -w -a -r -r -x -X -L -O -h -b -b -p -b -k -h -* -# -W -8 -L -q -x -r -L -O -0 -0 -q -Z -0 -k -m -b -# -M -o -a -a -a -a -h -h -k -a -a -h -a -h -a -a -a -a -h -M -8 -w -a -h -h -a -h -h -h -h -h -h -h -h -a -a -a -a -a -h -h -a -h -a -o -o -a -o -Z -) -j -\ -n -v -o -M -p -b -v -d -# -M -p -k -h -h -o -d -p -k -L -0 -O -q -Z -Z -w -w -w -w -q -O -8 -Z -m -W -& -8 -W -k -h -8 -o -h -a -o -b -k -Z -m -k -b -k -a -b -p -Z -Y -c -( -u -m -p -0 -c -r -\ -\ -\ -( -8 -h -8 -& -h -m -w -* -& -o -C -# -h -n -q -] -] -z -n -X -0 -h -a -# -o -p -* -* -b -a -h -M -& -& -% -8 -W -# -h -p -m -w -O -L -C -J -Z -o -a -p -Q -Y -u -U -k -b -W -b -0 -0 -C -C -O -Z -w -Q -w -b -b -a -o -M -# -# -# -o -Y -a -u -( -1 -Z -Z -p -d -h -d -d -b -b -d -b -p -b -b -p -p -o -o -u -a -o -W -o -o -h -h -o -o -d -d -d -M -M -M -W -W -M -M -M -M -* -# -% -\ -a -a -a -q -q -q -q -q -q -q -q -q -M -v -j -x -c -J -Z -w -k -d -b -p -k -h -o -# -W -8 -8 -L -Q -x -r -C -Z -O -m -m -q -0 -J -q -o -* -o -m -Z -O -m -q -p -b -p -q -k -h -h -h -h -a -h -h -a -# -# -# -w -* -b -h -h -h -h -h -h -h -h -h -h -h -a -h -h -h -k -k -* -* -* -o -a -o -0 -| -x -f -v -& -# -J -& -M -z -p -& -0 -L -b -m -a -k -0 -k -& -C -Q -w -w -m -O -w -q -m -m -w -m -& -q -p -W -W -% -& -b -& -& -o -k -a -a -* -h -d -p -k -C -k -a -p -k -Q -z -r -f -J -c -w -L -u -\ -\ -t -f -1 -b -@ -% -# -Z -o -q -p -1 -? -? -1 -c -_ -x -X -z -c -r -! -t -w -q -* -h -k -o -b -o -k -# -a -o -# -& -8 -W -* -k -q -w -w -O -C -C -J -m -W -a -d -0 -Y -c -x -d -q -b -a -o -h -L -C -Q -U -Y -U -z -0 -w -b -d -b -a -# -M -# -c -O -J -/ -Y -Z -Z -d -b -d -p -b -b -b -d -d -p -d -b -q -a -o -o -8 -o -w -h -o -o -h -h -o -d -b -M -d -M -M -M -M -W -M -M -M -M -k -p -8 -@ -# -a -a -q -q -q -q -q -q -q -w -w -O -n -c -x -Y -C -m -m -b -p -q -b -k -k -o -# -& -o -J -L -J -x -r -C -Z -O -Z -q -0 -Q -m -O -# -h -w -O -O -Z -Z -Z -Z -O -O -0 -m -q -d -d -d -w -a -h -h -* -a -M -0 -m -M -b -h -a -h -h -a -h -h -h -h -h -a -h -a -a -h -m -o -* -o -* -o -a -c -\ -r -j -n -& -# -v -o -M -z -& -# -M -C -* -M -j -k -Z -* -Q -Q -O -w -w -Z -m -w -w -w -Z -q -k -W -C -q -M -W -8 -& -d -k -& -m -k -h -o -o -o -o -O -Z -d -d -a -o -q -Z -c -n -O -\ -n -q -J -c -f -\ -t -j -t -b -b -k -8 -k -C -u -\ -) -( -/ -[ -1 -j -{ -X -- -? -x -f -| -u -Y -w -h -b -* -d -# -h -o -M -a -& -# -* -M -* -h -q -w -w -O -C -C -J -w -b -a -d -0 -Y -v -/ -Z -O -k -q -p -b -k -b -Q -X -c -n -c -J -Q -p -p -d -b -# -M -a -x -p -O -/ -% -0 -m -p -b -p -p -k -d -d -d -d -p -d -b -q -h -o -J -a -o -* -o -o -o -h -a -* -d -d -M -o -M -M -M -W -W -M -M -M -M -# -8 -8 -& -o -o -o -q -q -q -q -q -q -w -w -w -W -u -x -x -U -w -p -d -d -p -p -p -k -a -* -M -% -d -| -J -Y -x -x -C -O -O -w -q -Z -O -0 -k -h -o -w -Z -0 -O -O -O -O -0 -Q -0 -0 -0 -0 -0 -0 -Q -Z -C -b -b -o -* -M -L -w -M -* -h -h -h -a -h -h -h -h -h -h -h -h -h -w -0 -Z -h -* -* -a -L -| -( -z -r -n -o -# -b -b -Z -c -M -W -Z -Q -o -@ -8 -8 -b -C -C -Q -0 -w -w -m -w -w -q -m -d -b -M -* -d -q -# -M -8 -8 -Q -w -h -a -o -a -o -o -k -h -d -k -k -a -a -# -* -b -p -L -c -+ -| -Z -U -f -f -/ -/ -( -t -d -p -W -a -w -Z -| -t -C -X -Y -i -Z -( -r -r -j -{ -{ -i -\ -r -c -0 -u -d -p -k -o -* -* -* -# -a -o -# -M -* -a -q -w -w -0 -C -C -C -q -o -a -d -Q -U -z -j -L -O -w -d -d -q -d -w -d -d -u -u -u -c -J -L -Q -w -w -k -a -a -J -c -m -\ -z -U -W -p -p -k -d -q -d -p -p -p -p -d -p -q -a -o -( -o -a -o -o -o -o -a -o -# -p -d -M -& -M -M -M -W -W -W -M -M -M -# -@ -& -& -o -o -o -k -q -p -q -q -q -w -w -w -n -r -n -z -Z -O -w -d -p -w -p -d -k -o -M -& -o -a -o -b -X -x -r -C -O -0 -q -w -O -0 -w -q -b -h -m -Z -O -O -O -O -O -0 -0 -0 -0 -0 -0 -0 -0 -Q -0 -Q -0 -0 -Z -h -o -a -b -p -d -a -a -h -h -h -h -k -h -k -h -p -h -m -Q -Q -0 -Q -O -d -k -O -1 -/ -j -x -j -b -M -o -d -Q -m -& -a -d -q -w -h -* -* -L -w -C -0 -Q -m -m -q -m -w -w -w -m -d -& -p -Z -Z -* -M -& -8 -k -n -d -b -# -a -a -k -o -k -q -b -k -b -o -a -o -O -X -v -\ -) -> -L -z -f -j -t -\ -/ -j -p -w -# -C -Z -O -Q -J -/ -c -u -u -t -) -j -\ -| -{ -1 -1 -) -j -u -Y -O -m -d -d -b -p -b -a -# -M -& -* -W -# -h -p -w -w -0 -C -C -Q -p -* -h -p -0 -U -z -x -J -d -q -w -J -c -Y -J -L -O -d -O -u -v -U -J -Q -C -0 -k -a -h -p -n -w -| -) -L -W -q -d -d -d -p -p -d -p -p -p -d -p -p -o -o -M -& -q -a -* -a -j -k -p -a -J -b -d -# -M -M -M -W -W -W -# -M -M -M -v -8 -8 -a -o -a -a -q -p -q -q -q -w -w -w -u -c -n -L -0 -m -b -d -p -b -p -b -h -# -W -# -L -d -p -q -z -x -r -Q -O -m -q -m -O -Z -Z -b -p -k -m -Z -O -O -O -O -O -O -0 -Q -0 -0 -0 -0 -0 -0 -0 -0 -Q -Q -0 -0 -Q -q -* -p -d -h -o -h -a -h -k -k -k -b -k -o -b -m -0 -0 -0 -Q -0 -0 -c -d -{ -/ -( -n -u -b -X -M -# -* -# -8 -b -p -k -d -k -q -C -C -m -U -Q -Q -O -m -w -m -w -m -m -m -d -b -w -w -L -* -W -8 -% -q -v -d -a -o -h -* -h -k -k -m -p -b -h -o -a -q -r -\ -f -! -X -! -L -u -f -u -f -x -j -x -d -0 -C -u -n -r -\ -? -z -c -t -[ -u -1 -( -} -{ -\ -] -r -t -\ -Y -+ -t -v -d -d -b -b -b -b -k -* -# -& -W -# -h -p -q -w -0 -C -C -0 -p -# -h -p -O -U -z -x -J -C -O -L -c -X -{ -t -f -v -X -J -X -v -z -J -J -Q -C -d -k -p -d -0 -x -\ -b -C -m -p -q -p -p -p -d -p -q -p -d -p -p -p -o -0 -* -# -# -o -h -w -p -0 -d -b -W -d -w -L -M -M -M -W -W -W -# -M -M -M -# -W -8 -& -* -o -a -q -q -q -q -w -w -q -( -v -v -u -0 -Z -0 -d -p -w -d -b -k -h -# -8 -U -u -v -u -n -u -r -r -0 -Z -Z -w -m -m -Z -w -q -k -o -Z -Y -0 -Y -O -Y -J -O -U -Q -0 -0 -0 -Q -Q -0 -0 -0 -C -C -L -Q -0 -0 -Q -0 -0 -m -0 -b -h -a -h -a -a -k -d -d -0 -0 -0 -0 -0 -Q -0 -Q -L -q -[ -t -\ -n -J -0 -Q -) -m -k -Z -L -p -m -k -k -a -O -Q -m -d -O -0 -Z -q -q -w -m -w -m -m -w -q -Z -q -k -Q -M -M -& -% -o -& -a -o -o -o -a -o -a -o -q -w -o -a -* -* -c -t -v -{ -' -{ -; -0 -c -x -j -j -\ -t -v -L -Q -u -v -r -n -x -Y -x -( -) -[ -_ -~ -- -? -[ -/ -/ -j -t -u -X -Q -z -b -b -p -O -O -m -d -q -M -% -& -# -# -h -p -p -w -0 -C -C -O -h -# -h -p -O -U -z -n -U -* -Y -L -Q -n -) -) -n -J -L -Y -n -Y -c -z -J -Y -U -p -k -Z -d -q -x -) -n -L -m -p -p -p -d -p -p -p -p -p -p -p -q -a -o -o -M -# -h -k -b -w -b -J -o -q -h -m -O -p -W -M -M -& -W -W -* -M -M -W -# -8 -& -8 -} -o -a -q -q -q -q -w -w -w -f -Y -v -c -Z -Q -q -p -q -m -p -k -h -o -W -# -| -n -v -u -x -x -r -j -0 -O -Z -w -w -Z -Z -w -q -p -* -M -# -a -d -Z -0 -Q -0 -X -0 -0 -Q -L -L -C -L -L -U -Q -J -L -L -0 -Q -Q -L -Q -0 -L -Q -L -m -w -m -0 -Q -0 -O -0 -0 -0 -Q -0 -Q -Q -Q -j -o -} -| -t -x -k -U -b -M -q -# -M -q -] -W -k -k -a -Q -O -m -w -Z -Z -m -q -q -m -m -m -m -m -w -w -m -o -& -J -a -M -& -8 -* -w -* -O -# -h -o -a -k -h -p -h -0 -# -* -Y -n -t -) -[ -l -< -^ -Q -n -t -f -v -x -t -U -J -C -c -u -Y -X -v -x -r -X -_ -[ -_ -< -+ -- -) -\ -c -f -t -f -r -v -j -O -w -w -k -a -a -* -* -# -o -& -k -* -k -p -p -w -0 -C -C -Z -& -# -h -q -0 -U -z -n -X -h -0 -U -J -r -r -f -X -Q -z -x -n -Y -X -Y -J -J -Y -w -k -w -k -k -J -1 -n -Q -O -q -q -p -p -p -d -q -p -q -p -p -q -k -a -a -n -p -h -b -p -1 -w -c -k -q -k -Z -q -w -W -M -W -W -W -W -* -M -W -M -# -L -& -& -j -o -o -q -q -q -w -w -w -q -x -u -v -X -0 -L -d -q -q -d -b -b -a -M -M -j -) -u -u -v -u -r -j -x -0 -0 -0 -w -q -m -w -k -p -b -* -k -b -* -b -* -h -# -# -M -o -q -z -Q -\ -~ -/ -/ -_ -~ -t -\ -j -n -t -n -x -x -x -z -L -L -Q -Q -Q -0 -0 -0 -Q -0 -0 -Q -0 -0 -0 -Q -x -X -k -_ -( -r -r -x -* -k -h -0 -# -a -Z -p -k -b -h -b -# -0 -Z -Z -m -w -w -w -w -m -w -m -q -m -w -w -m -& -& -o -q -M -& -% -* -a -h -o -q -p -h -h -o -o -k -o -Z -# -L -C -u -C -1 -. -r -x -" -Q -v -r -f -f -t -f -C -c -J -n -c -C -Y -u -u -v -v -v -u -x -x -X -j -x -f -L -1 -| -\ -O -q -q -b -h -k -p -q -w -p -m -d -p -a -d -# -k -p -q -m -0 -C -J -m -k -# -k -q -Q -J -Y -v -n -p -m -J -0 -/ -v -0 -m -U -f -u -u -z -c -Y -Y -C -U -Z -d -O -d -q -x -) -q -m -Z -q -q -p -q -w -w -q -q -p -p -q -Z -b -h -b -$ -w -p -q -J -W -m -0 -O -d -p -b -p -q -M -M -M -W -W -W -* -M -M -M -# -U -% -o -$ -o -a -w -w -q -w -w -m -\ -u -n -c -U -C -w -p -q -q -b -b -k -* -W -& -/ -1 -z -c -v -v -x -r -Y -0 -O -O -w -w -p -q -q -q -p -# -m -k -o -* -# -* -k -a -* -# -b -O -m -O -h -a -# -w -\ -] -+ -+ -- -l -> -[ -{ -i -[ -{ -t -f -j -X -Q -L -0 -Q -0 -Q -L -Q -0 -r -) -) -U -J -_ -/ -r -j -x -d -h -M -Q -& -M -m -h -k -k -h -h -o -0 -Z -Z -Z -w -m -Z -w -q -q -w -m -w -m -q -k -# -& -b -Z -W -8 -8 -# -& -8 -a -d -p -p -o -k -a -a -q -O -L -p -Z -f -\ -[ - -/ -Z -" -Q -u -j -n -u -j -f -C -x -c -z -X -r -X -u -r -n -t -j -c -v -n -c -t -c -| -J -b -h -q -b -q -O -p -p -b -w -h -q -w -o -a -* -a -m -# -k -d -p -m -Q -C -C -w -a -# -k -q -Q -U -X -c -n -p -0 -w -m -c -L -p -C -j -/ -t -u -J -U -Y -U -Y -J -C -p -q -b -q -C -) -z -w -Z -q -q -p -w -w -w -q -q -d -p -m -C -b -x -# -q -m -w -0 -Q -q -q -b -h -M -d -q -Q -q -M -M -M -W -W -W -* -M -M -M -M -* -Z -o -& -Y -a -m -q -w -m -m -m -j -c -n -z -w -Z -q -m -q -q -b -k -a -W -M -x -( -v -c -c -c -c -x -x -J -0 -O -0 -m -m -m -w -q -w -p -* -m -Z -0 -O -0 -Q -w -b -d -0 -Q -r -n -c -X -c -J -| -) -v -x -x -t -n -Q -c -f -l -- -< -l -_ -? -< -n -X -Y -z -v -U -x -/ -t -) -[ -? -u -{ -+ -f -x -j -/ -0 -X -O -k -# -b -o -p -h -k -h -k -a -# -m -Z -Z -Z -m -w -m -w -w -w -m -m -o -# -* -a -# -o -0 -M -W -8 -# -h -o -o -a -* -p -h -* -k -k -Q -b -Q -Q -f -c -n -+ - -? -w -" -Q -v -v -n -x -j -j -n -n -n -c -v -u -u -v -Y -u -z -n -n -v -X -q -o -o -h -w -c -O -C -z -n -X -Y -p -k -a -O -w -w -q -W -M -& -0 -# -k -d -q -m -Q -C -L -q -* -# -k -w -Q -J -X -c -n -Z -m -p -p -L -O -J -r -/ -/ -r -r -k -U -X -Y -Y -? -C -q -p -U -p -x -) -p -U -q -q -w -m -q -w -m -m -q -m -Q -0 -O -p -M -* -0 -O -Q -n -Z -a -$ -Z -Z -M -q -w -Z -p -W -M -M -W -W -W -* -M -M -M -M -* -Q -o -& -) -o -p -q -w -m -m -z -c -n -v -Y -J -C -p -m -b -d -b -a -# -W -X -t -| -z -v -X -c -z -x -x -J -0 -0 -0 -m -w -w -w -w -Z -p -* -O -0 -0 -0 -Q -O -k -b -b -p -) -1 -- -_ -+ -_ -[ -) -< -t -j -| -} -} -z -( -) -1 -1 -t -t -n -c -t -] -" -' -+ -_ -, -, -- -? -I -< -/ -u -- -+ -t -n -x -/ -Z -c -h -q -o -p -L -b -h -h -k -d -k -o -h -m -m -m -w -m -w -w -w -q -# -* -o -a -a -% -& -& -C -W -W -% -8 -# -k -0 -# -# -# -q -o -h -k -O -Z -q -u -f -/ -n -. -f -1 -Z -" -L -c -x -u -j -n -n -v -x -f -X -u -n -j -n -v -v -v -d -a -a -# -k -Q -Q -z -t -J -u -u -c -z -L -Z -k -p -a -b -k -W -k -# -M -# -O -# -h -d -q -m -0 -C -Q -p -# -# -k -q -Q -Y -X -c -x -L -q -p -k -J -n -u -r -{ -/ -x -j -Z -Y -J -X -J -1 -[ -Z -q -| -k -0 -) -C -w -p -m -m -w -w -m -m -m -Q -0 -0 -0 -q -Z -q -* -W -Y -O -Z -O -a -Z -* -& -W -W -J -m -w -W -M -M -W -W -W -* -# -M -M -M -# -U -q -& -q -a -a -q -m -m -m -j -v -v -X -J -C -0 -q -m -d -d -k -* -W -# -n -t -\ -z -X -z -z -z -x -x -J -Z -0 -0 -m -m -m -w -q -m -p -* -Z -k -O -b -0 -q -O -d -b -U -n -} -- -> -_ -? -~ -> -l -+ -! -< -? -} -x -1 -? -[ -[ -) -\ -/ -\ -| -( -( -n -J -U -t -l -i -< -l -> -\ -x -? -~ -f -x -c -C -m -Q -C -0 -# -J -Z -k -k -h -k -k -b -h -o -m -Z -m -w -m -q -a -# -o -o -a -a -k -b -h -p -d -o -M -W -8 -% -* -# -k -h -a -d -q -k -a -k -Q -* -p -c -U -j -{ - -X -0 -p -" -L -X -x -v -j -x -r -v -X -z -t -n -n -C -h -h -k -o -b -C -0 -r -\ -{ -| -Y -w -a -p -w -w -w -o -M -h -h -a -o -b -k -# -# -M -p -w -# -h -d -p -m -0 -C -0 -q -* -o -k -w -Q -U -z -c -x -J -q -b -m -n -\ -/ -\ -x -r -c -u -v -Q -U -J -C -) -> -q -q -( -d -v -) -U -q -d -m -w -q -Z -q -m -O -O -Z -0 -O -w -f -d -q -M -m -q -C -m -O -p -M -8 -# -x -& -k -q -W -M -M -W -W -M -# -M -# -M -M -* -# -8 -& -M -o -o -w -m -m -Z -j -v -v -Y -U -L -q -q -q -b -k -a -M -# -& -n -j -j -U -X -z -Y -U -n -x -J -w -Q -L -w -w -w -w -q -m -b -o -h -w -k -0 -O -Z -k -b -b -0 -+ -? -! -+ -~ -~ -} -< -l -_ -i -- -_ -? -/ -_ -- -_ -; -} -< -+ -_ -- -? -] -{ -( -\ -/ -t -t -/ -r -C -O -Y -) -_ -j -r -Z -p -v -Q -Q -O -a -d -w -h -h -k -k -k -k -b -p -w -p -h -o -a -h -h -h -a -a -h -b -b -d -p -b -p -W -M -M -8 -& -M -a -a -# -* -d -q -0 -h -a -d -m -O -Q -d -x -{ - -r -0 -m -" -L -Y -v -n -n -x -L -k -a -o -a -h -p -U -n -u -c -n -{ -1 -( -v -U -C -Q -Y -X -q -c -U -v -X -Q -q -d -q -w -a -d -k -k -# -# -k -d -M -a -d -p -m -0 -L -O -h -o -* -k -w -Q -U -z -c -n -Y -Z -q -Z -| -/ -/ -t -z -U -x -Y -J -C -J -J -J -z -x -Q -0 -{ -w -1 -q -Z -p -d -p -w -Z -0 -0 -O -m -Z -0 -m -Z -k -W -d -X -Q -0 -m -p -# -h -M -M -m -% -f -v -Z -p -W -M -M -W -W -W -# -# -# -M -# -* -* -o -& -u -o -o -m -m -m -/ -v -n -c -J -0 -Z -b -p -p -b -b -# -M -M -M -n -x -f -J -C -J -U -J -n -x -C -w -0 -Q -m -m -w -w -p -m -k -* -h -a -h -h -m -k -h -k -h -J -/ -+ -? -> -{ -~ -- -< -~ -] -[ -~ -} -[ -+ -? -] -! -_ -> -> -~ -> -< -! -! -! -> -- -- -? -{ -| -j -u -X -p -x -- -r -j -Z -m -X -O -0 -U -a -0 -k -b -h -h -b -k -k -b -q -O -O -d -a -a -h -k -a -a -k -b -d -d -p -p -% -w -# -W -W -8 -& -8 -Z -O -# -h -a -p -v -b -h -a -d -O -L -C -1 -[ -> -f -w -q -, -L -U -c -n -n -v -O -0 -d -J -v -c -z -X -j -\ -f -x -1 -\ -\ -f -f -f -f -r -x -v -n -f -t -t -> -m -o -b -a -* -* -d -b -& -M -a -b -# -a -d -p -m -0 -L -O -& -o -o -k -q -Q -U -z -v -n -X -p -w -Z -j -1 -( -n -J -0 -C -c -z -U -X -z -L -] -f -Q -O -f -O -( -m -c -d -b -Z -m -0 -m -Z -m -O -Z -Q -w -m -b -d -d -c -m -J -m -h -L -8 -W -L -C -h -j -( -8 -d -W -M -M -W -W -M -# -M -# -M -# -# -# -u -8 -Q -( -o -m -m -m -\ -u -v -U -O -w -d -k -b -b -b -a -M -# -o -# -x -x -n -J -C -C -J -0 -n -x -Q -m -L -Q -m -w -w -p -d -m -k -o -a -a -a -h -w -m -b -a -h -z -? -] -{ -{ -) -? -- -/ -( -] -} -] -> -] -] -] -l -} -[ -_ -~ -~ -~ -+ -~ -~ -~ -+ -_ -- -? -] -| -n -J -L -b -j -_ -x -j -n -w -r -m -J -m -p -w -k -b -b -k -k -h -k -d -q -, -Q -q -a -o -o -a -h -h -d -d -p -p -p -p -& -q -* -W -W -8 -0 -8 -u -q -h -a -h -p -L -b -k -k -b -Z -0 -t -) -. -1 -b -p -d -, -m -U -X -v -u -n -U -0 -L -f -c -c -c -1 -| -( -( -f -( -( -| -\ -/ -/ -} -1 -1 -) -[ -f -{ -( -{ -C -a -b -b -d -d -% -b -d -W -k -o -M -a -b -p -w -0 -Q -Z -* -* -o -k -w -Q -Y -z -v -n -c -d -Z -Z -C -c -Y -J -J -p -m -J -q -Z -Y -v -X -n -X -L -} -L -\ -| -n -q -d -k -Q -0 -Z -Z -m -O -Z -O -O -w -d -| -b -d -* -Z -m -Z -w -J -M -M -m -& -c -j -/ -B -a -W -M -M -& -W -M -* -# -# -M -M -# -# -* -8 -& -B -* -m -m -w -j -n -v -q -k -d -k -k -k -b -b -W -o -W -a -* -n -u -x -L -L -C -C -L -n -x -0 -O -0 -L -m -m -m -w -d -w -b -a -a -a -h -a -a -w -d -b -d -/ -) -n -( -j -j -) -{ -} -? -{ -f -} -~ -) -? -+ -! -} -{ -{ -_ -_ -+ -_ -_ -+ -+ -+ -] -? -[ -] -[ -v -L -0 -o -x -} -x -r -w -o -\ -w -b -f -k -d -o -b -k -d -h -h -h -p -O -> -Q -q -h -a -a -h -h -d -p -p -p -p -p -p -& -8 -8 -W -W -8 -0 -& -o -h -b -p -b -p -d -k -b -m -d -w -Q -/ -) - -x -U -q -p -: -O -J -X -v -x -c -0 -w -C -n -f -f -| -( -/ -/ -\ -( -\ -\ -( -t -\ -) -{ -\ -c -> -[ -x -\ -? -I -Y -p -p -k -d -k -d -b -p -* -* -M -# -a -b -d -m -0 -Q -m -p -o -a -k -q -Q -U -z -c -n -u -O -k -b -* -C -Y -Q -q -0 -C -Z -a -Z -X -u -X -1 -( -) -< -L -} -0 -X -w -b -p -Q -O -Z -m -m -m -m -m -b -p -d -k -k -f -O -m -a -j -a -C -W -M -q -W -Y -r -j -B -# -W -M -M -W -W -W -# -M -# -M -M -# -# -# -o -& -& -z -m -m -+ -c -x -Y -O -q -m -k -k -b -b -a -o -# -M -M -* -r -v -u -Q -Q -L -C -Y -n -r -0 -O -L -Q -w -m -Z -m -p -w -k -k -a -h -a -a -o -q -w -k -L -/ -{ -r -\ -x -? -t -| -) -1 -\ -r -] -? -? -~ -+ -) -| -1 -} -- -? -- -_ -_ -_ -- -_ -] -] -[ -? -- -X -0 -O -* -x -n -n -f -p -Z -{ -q -p -p -* -d -d -b -k -k -k -k -b -q -0 -[ -Q -m -h -h -h -b -p -q -p -p -p -p -p -p -& -o -Q -W -W -8 -8 -8 -a -a -* -q -b -m -m -d -b -O -o -m -0 -| -( -I -z -L -p -d -, -Q -J -Y -Y -x -z -b -k -C -j -z -c -x -t -/ -t -t -/ -| -/ -( -j -u -c -u -v -r -X -j -c -r -1 -> -L -w -b -b -d -p -b -h -W -W -M -# -# -a -b -p -m -0 -Q -w -p -o -a -b -q -Q -J -z -v -n -n -0 -p -b -* -Q -L -Z -L -q -Q -Z -k -L -U -U -z -1 -( -r -1 -z -r -Q -p -q -k -0 -0 -Z -m -m -m -m -Z -Z -d -p -m -k -k -n -Z -m -h -q -p -W -W -W -q -M -U -x -W -* -8 -W -M -M -W -W -M -# -M -# -M -M -# -# -* -X -& -& -f -w -m -( -z -v -0 -Z -m -q -b -k -b -b -* -a -d -h -& -* -p -u -Y -Q -0 -0 -Q -X -n -n -Q -0 -Q -C -m -w -m -m -w -q -k -h -o -w -a -a -o -q -d -a -q -/ -{ -r -j -n -] -j -/ -\ -} -? -f -| -- -_ -- -_ -( -) -) -] -- -] -? -? -- -- -+ -_ -? -? -] -] -] -} -O -m -# -x -n -u -f -k -z -\ -q -q -O -h -M -d -h -d -k -k -d -b -q -O -] -f -w -h -k -p -p -p -q -p -p -p -p -p -p -q -m -a -W -W -% -O -& -Z -k -o -h -q -b -w -q -h -0 -o -d -L -| -( -? -u -J -k -m -: -m -Q -z -z -n -X -# -p -m -x -c -C -X -v -r -v -v -f -n -x -v -z -X -C -v -Y -C -n -> -J -u -C -f -X -k -k -b -a -o -# -a -& -o -& -M -* -o -b -p -w -0 -0 -w -X -h -a -b -w -Q -J -X -c -u -u -Q -q -k -b -L -C -Q -m -0 -b -* -k -O -U -Y -( -{ -u -- -/ -j -C -X -q -q -p -C -Z -Z -m -m -m -m -Z -Z -b -b -p -p -k -# -Z -Z -p -a -x -W -& -M -w -M -C -j -W -M -& -W -M -M -W -W -M -# -M -# -M -M -# -# -* -X -k -M -v -p -? -j -n -c -J -Q -C -k -b -k -b -k -o -a -k -0 -& -# -k -a -O -w -m -m -Z -Y -n -X -Q -O -C -L -m -w -m -Z -m -w -k -a -o -q -o -a -o -q -o -o -q -Y -1 -u -x -n -] -x -t -f -[ -{ -t -j -] -? -? -( -( -1 -x -? -] -? -- -- -- -? -- -? -? -] -? -[ -[ -} -Q -m -M -n -x -u -j -0 -J -a -m -k -k -o -o -b -b -h -k -k -k -d -w -Z -} -} -q -b -p -p -p -q -q -p -q -p -p -p -q -m -0 -8 -W -W -% -c -w -k -h -k -o -h -b -m -Z -b -Z -* -Z -c -/ -) -/ -t -Q -a -b -: -w -0 -C -X -u -z -M -h -d -Q -Q -m -L -0 -Q -U -z -n -c -z -U -m -0 -Z -Z -L -O -Q -Q -J -Y -J -v -v -k -& -m -& -o -o -& -# -M -% -W -* -a -b -p -w -O -0 -m -n -h -h -b -w -0 -J -X -c -v -u -L -q -a -d -O -Z -0 -O -w -o -o -Q -C -Y -Y -{ -} -} -1 -1 -J -J -m -Z -q -w -C -O -Z -w -Z -Z -m -Z -m -b -k -q -Z -m -Z -Z -Z -O -b -) -Z -M -& -& -M -L -M -W -W -M -W -M -M -W -W -M -* -# -# -# -M -# -# -* -* -x -o -% -k -1 -c -v -Y -U -m -p -h -b -b -k -o -h -m -* -b -M -h -k -# -M -a -b -d -p -z -n -L -L -0 -Y -U -m -m -m -m -m -q -b -o -o -p -k -o -p -k -p -w -L -n -} -j -n -| -{ -n -j -n -] -] -_ -r -? -n -? -+ -( -f -+ -n -] -] -- -? -_ -- -] -? -? -? -] -] -{ -} -Z -w -W -x -u -u -v -0 -0 -h -q -a -q -o -# -d -d -h -b -d -k -d -q -m -+ -O -m -p -q -q -q -q -q -q -p -p -q -w -q -w -8 -8 -& -W -B -a -k -* -a -* -o -k -d -w -m -k -w -# -O -t -c -| -v -b -C -o -p -; -0 -C -C -c -v -J -M -h -k -O -w -m -Z -w -p -Y -U -J -X -C -C -Z -0 -q -m -# -& -p -k -* -o -Z -q -L -b -* -& -M -* -o -% -& -W -M -& -# -o -b -p -w -O -O -k -w -a -k -d -w -0 -C -Y -z -v -u -J -0 -d -b -O -Q -q -a -o -a -b -0 -J -J -X -X -j -u -U -z -J -h -m -Z -q -w -Q -0 -Z -Z -Z -m -w -m -k -k -b -q -& -q -m -Z -m -O -b -C -M -# -b -C -% -W -& -& -W -W -W -M -M -W -W -M -* -# -# -# -M -# -# -* -o -p -& -8 -r -j -z -c -X -U -d -p -k -k -b -k -a -b -L -b -b -* -O -Q -b -a -& -W -W -a -c -n -Q -C -0 -C -C -m -m -m -Z -w -b -b -# -* -d -q -o -p -o -b -d -0 -C -X -{ -v -} -] -v -x -} -) -f -x -r -[ -_ -n -f -_ -? -r -x -? -] -- -- -_ -? -} -] -? -? -] -[ -} -[ -m -q -W -x -n -u -c -o -a -0 -q -k -X -d -b -p -b -k -p -b -p -b -q -q -O -0 -q -q -q -q -q -q -q -q -q -p -q -q -w -m -& -o -& -W -% -@ -# -a -h -o -q -0 -w -O -w -k -m -# -Z -\ -j -\ -Y -o -Q -b -p -; -m -L -U -U -c -Q -& -h -a -p -p -d -b -Z -w -m -U -Y -z -X -Q -Z -w -b -w -b -# -Z -p -W -d -b -Z -Z -o -a -% -B -# -% -M -& -M -8 -B -# -o -b -p -w -Z -Z -d -M -h -k -k -q -O -C -Y -z -c -v -U -O -q -Z -d -o -M -* -k -k -m -Y -Y -X -X -, -j -c -v -| -Y -b -O -Z -q -Z -Q -O -Z -Z -m -m -m -m -k -k -U -a -w -w -m -Z -d -m -q -k -M -W -# -W -h -8 -8 -& -& -W -M -M -M -M -M -M -* -# -# -# -M -# -# -o -o -X -& -& -? -z -z -Y -z -0 -q -k -b -b -b -k -o -r -u -C -k -# -k -0 -L -p -q -w -m -C -u -n -L -C -O -Y -Q -m -m -m -m -q -b -b -M -M -k -k -# -p -* -p -w -Z -u -J -| -z -| -{ -u -n -} -x -x -n -j -n -? -x -? -1 -j -j -_ -? -] -_ -? -- -? -] -[ -[ -] -? -] -} -{ -m -p -W -n -u -n -Y -# -Q -Q -a -a -m -Z -m -d -b -b -p -p -p -b -p -q -m -m -q -p -q -q -q -q -q -q -w -q -q -w -q -m -% -O -W -W -& -& -b -b -o -m -q -m -Y -0 -f -k -p -# -p -\ -) -f -Q -o -C -# -w -; -O -0 -O -U -z -m -& -a -a -o -p -k -w -m -w -p -0 -Q -u -f -J -L -q -q -d -w -M -W -b -b -# -b -h -h -M -@ -B -B -B -% -M -M -M -W -M -# -* -b -p -q -Z -Z -w -* -o -k -b -q -m -Q -U -Y -z -c -U -# -a -o -a -o -k -b -q -q -Z -X -z -z -v -{ -[ -1 -] -) -O -0 -0 -m -m -Q -Q -0 -O -m -m -m -m -m -k -o -o -* -v -w -m -Z -k -p -p -k -W -W -k -M -& -% -% -b -M -8 -M -M -M -M -M -M -* -# -# -# -M -# -# -o -o -M -& -& -j -X -z -X -X -m -p -d -k -b -k -h -h -Z -C -m -& -M -M -L -C -q -w -w -q -Z -n -n -L -L -0 -J -C -Z -m -m -Z -p -b -k -* -& -# -a -# -b -# -h -p -p -d -0 -x -L -/ -r -v -n -] -x -u -v -r -j -} -x -? -r -j -r -f -f -_ -- -] -- -] -] -} -[ -[ -{ -[ -[ -] -O -d -M -n -n -n -J -C -# -# -v -d -k -X -h -p -b -q -p -w -d -d -p -p -w -w -q -p -q -q -q -q -q -q -q -q -w -q -w -w -# -Q -o -M -$ -8 -L -d -d -d -# -p -# -Q -Q -m -w -# -a -v -t -j -0 -a -L -o -d -; -Q -C -0 -L -Y -h -W -& -# -a -w -p -q -p -q -p -q -* -L -X -r -J -0 -w -d -d -d -# -h -b -a -# -b -a -b -M -# -% -% -B -M -M -M -M -% -# -* -b -p -q -Z -q -M -q -o -k -b -p -m -Q -C -U -X -z -U -q -h -h -k -L -c -r -\ -x -t -c -v -u -r -? -} -[ -r -z -J -Q -Z -m -m -Q -Q -O -O -Z -Z -w -m -k -k -| -Z -M -8 -m -m -m -W -k -b -h -& -W -Q -M -& -& -& -& -b -M -M -M -M -M -W -M -* -# -# -# -# -# -# -o -o -o -B -& -X -v -Y -c -J -m -d -b -b -k -b -* -m -o -b -k -W -* -M -O -Q -q -q -q -w -m -n -n -L -0 -0 -L -L -Z -m -m -m -p -k -k -M -8 -* -o -W -a -M -M -b -b -d -q -c -m -v -n -0 -r -f -C -C -J -Y -) -z -u -u -n -j -j -f -r -] -] -] -] -[ -[ -} -[ -} -} -1 -{ -1 -Z -b -# -n -v -u -J -J -p -w -Y -0 -d -0 -* -b -p -b -w -w -p -p -d -p -p -q -p -q -q -q -w -w -q -w -q -q -w -q -w -m -0 -a -d -W -$ -& -h -h -o -k -o -a -k -Z -L -O -d -* -o -Q -X -j -0 -o -Q -a -p -I -Z -m -0 -C -Y -k -W -& -k -a -p -w -p -k -q -q -k -m -p -w -O -w -0 -k -k -d -% -d -& -k -b -p -k -a -W -M -W -% -M -% -# -M -# -# -# -# -* -b -p -q -m -d -Z -Z -0 -h -b -p -w -0 -L -J -Y -X -Y -Z -h -Q -t -t -( -n -\ -j -x -c -n -r -~ -x -m -? -/ -J -C -Q -Z -m -m -0 -0 -Z -Z -Z -Z -m -m -h -b -B -w -m -r -m -Z -w -Y -k -k -o -& -W -& -M -W -& -& -& -# -# -M -M -M -M -M -# -o -* -* -# -# -# -# -a -a -a -q -& -& -f -Y -X -U -O -p -b -k -b -b -* -k -o -b -* -* -# -* -Z -L -w -q -q -w -b -n -u -L -m -0 -L -Q -Z -w -w -w -d -b -k -% -% -% -# -M -& -& -& -o -a -a -b -Z -J -C -p -X -O -L -m -Q -0 -0 -j -/ -n -C -\ -z -v -x -} -} -} -} -? -] -} -} -] -} -{ -1 -) -\ -Z -k -a -n -v -v -C -X -* -C -* -J -Q -d -# -b -b -w -w -p -p -p -p -p -p -p -q -q -q -q -w -q -q -q -w -w -q -q -q -w -m -8 -w -W -& -& -a -q -h -d -o -a -h -a -c -U -p -k -# -k -Y -j -L -* -C -o -b -I -O -Z -Z -U -J -b -o -& -a -k -a -a -p -d -O -w -q -m -0 -w -m -k -h -w -w -Z -p -m -M -p -q -d -h -* -# -M -o -* -M -# -* -o -* -a -& -M -# -k -d -p -w -b -a -8 -/ -o -b -d -q -Z -Q -C -U -Y -Y -0 -z -v -x -1 -{ -( -t -r -x -x -v -1 -< -Z -Q -_ -C -J -C -0 -O -Z -m -Q -Q -O -m -Z -m -Z -w -d -h -k -q -r -m -Z -Z -Z -q -a -a -k -W -& -W -M -& -W -& -& -M -o -M -M -# -# -# -* -* -* -* -# -# -# -* -o -a -h -1 -& -& -& -z -X -Q -Z -p -b -k -b -a -o -M -* -W -M -w -a -* -B -m -p -q -q -q -k -n -u -L -m -0 -L -Q -m -w -w -q -d -k -a -m -m -W -8 -& -& -& -8 -M -# -W -a -a -m -h -b -0 -d -p -d -Y -z -v -c -m -v -n -u -L -z -z -u -) -1 -1 -} -[ -} -} -[ -} -{ -{ -) -f -O -o -a -n -v -c -J -X -U -C -0 -h -Q -0 -k -h -# -M -p -p -p -p -q -q -q -q -w -q -q -q -w -m -q -q -w -q -q -q -q -w -m -a -Z -W -W -& -Y -o -o -k -* -o -a -a -Y -L -p -k -# -k -c -C -c -Y -C -h -h -l -w -Z -Z -Y -Y -o -# -8 -o -a -k -d -b -d -p -m -m -w -q -m -b -w -h -o -M -o -q -q -q -& -p -p -w -o -o -a -o -# -* -h -a -* -# -o -o -M -# -k -d -p -w -h -W -8 -b -* -k -d -q -m -0 -L -J -J -U -Q -c -n -v -1 -| -t -n -n -z -u -| -/ -J -0 -X -U -Y -J -Q -0 -O -Z -m -L -L -Z -O -0 -d -a -a -# -\ -O -m -b -m -Z -Z -Z -O -b -a -0 -M -W -Q -8 -8 -& -& -# -k -o -# -# -# -# -# -o -o -o -* -* -# -# -* -o -a -o -1 -& -8 -& -n -X -O -Z -p -k -h -b -o -m -& -# -h -# -L -p -h -d -q -k -b -d -p -O -n -n -Q -O -Q -Q -0 -Z -w -w -p -b -h -p -p -q -w -q -q -d -a -& -W -W -8 -p -d -# -a -# -a -a -q -k -Q -L -L -J -C -p -q -C -Z -0 -n -r -f -/ -( -{ -1 -} -[ -{ -] -} -{ -1 -r -w -M -a -v -z -c -Y -0 -C -Z -J -* -d -o -o -k -o -M -p -p -p -q -w -w -w -m -m -w -q -w -q -q -w -q -w -q -q -p -q -m -Z -Y -C -W -w -% -q -p -b -b -d -o -a -k -q -X -p -k -M -b -f -Y -f -j -L -h -b -I -Z -Z -Z -L -O -o -# -& -b -b -h -k -p -Z -q -q -w -k -8 -0 -0 -0 -0 -w -q -O -m -d -W -M -M -& -q -b -k -k -k -b -@ -# -o -# -# -% -@ -W -* -k -d -p -q -a -o -k -k -W -h -b -p -w -O -Q -C -C -C -0 -f -c -x -j -u -n -\ -C -Y -< -^ -{ -r -z -z -Z -Y -C -0 -O -0 -Z -0 -Q -O -w -w -* -# -M -M -# -W -O -m -j -m -Z -Z -0 -Q -k -a -O -W -& -a -* -m -& -& -k -# -b -# -# -# -# -# -o -o -o -o -* -* -* -o -a -h -; -u -% -B -& -r -Y -0 -w -k -h -a -k -* -w -& -M -M -W -Z -b -w -M -a -k -k -b -b -X -n -c -L -0 -J -Q -0 -Z -w -w -b -k -k -p -p -q -q -w -q -p -q -p -p -q -k -a -* -8 -h -o -* -o -p -q -m -Z -Z -b -b -h -k -k -0 -q -X -c -n -x -t -\ -( -{ -} -[ -{ -1 -) -( -v -q -W -a -u -v -z -X -m -C -z -v -M -U -a -b -o -0 -k -* -q -q -w -w -w -w -w -w -w -w -w -w -w -q -q -q -q -p -q -q -m -O -p -Y -W -Q -@ -a -p -k -h -o -a -k -k -Q -X -q -b -b -# -0 -Y -r -v -J -* -d -l -q -m -O -L -0 -* -o -& -a -q -p -m -Z -m -Z -m -L -m -0 -Z -m -0 -d -q -q -q -b -m -h -m -C -0 -k -W -M -8 -% -& -W -8 -% -B -B -% -B -M -# -k -d -p -q -a -q -Z -X -a -a -b -d -q -m -0 -L -C -L -O -m -c -d -v -j -m -O -O -x -I -> -_ -I -j -( -Q -u -L -0 -0 -q -Z -0 -O -O -w -w -* -# -M -M -M -& -% -r -Z -Z -O -O -Q -L -a -o -m -W -W -& -Q -p -& -& -h -o -b -* -* -* -* -* -o -o -o -o -* -o -o -o -a -k -} -c -J -Y -O -B -Q -q -d -h -a -k -o -M -a -M -# -# -M -k -d -h -* -q -8 -8 -# -k -v -n -J -L -Q -C -0 -O -m -w -w -d -b -a -d -p -q -q -w -q -p -q -p -p -w -J -1 -1 -{ -) -U -d -8 -# -* -o -a -k -p -q -o -o -o -a -b -Z -0 -L -U -v -x -t -( -1 -( -) -( -| -| -U -k -W -o -u -c -X -u -h -o -d -X -W -L -d -O -Q -O -d -p -# -w -w -q -w -w -w -m -w -w -w -w -q -q -w -q -q -q -w -p -a -b -h -C -W -* -$ -W -p -d -a -q -h -h -h -d -0 -Z -q -b -* -C -f -c -C -U -b -o -l -w -Z -0 -L -q -M -o -W -a -h -d -w -O -0 -m -O -L -L -Y -L -0 -C -L -0 -L -0 -L -J -v -n -v -X -Z -h -8 -8 -8 -% -% -B -B -% -& -& -& -M -# -k -d -p -q -M -O -Q -Q -/ -o -b -b -p -w -Z -Q -Q -Q -O -* -Y -L -m -q -w -w -Y -\ -I -? -- -| -? -; -r -Y -0 -Z -Z -0 -L -C -0 -O -m -w -* -# -# -M -u -* -o -B -0 -O -O -O -Q -Q -o -* -0 -W -W -M -L -b -& -W -k -h -Y -* -* -* -o -o -o -o -a -o -o -o -o -o -a -} -v -Y -J -v -% -& -n -d -b -h -o -b -* -q -X -M -W -# -M -* -a -* -* -8 -8 -B -8 -8 -u -x -L -Q -L -L -0 -Z -w -q -w -b -b -b -p -p -q -q -w -p -q -q -p -p -q -Y -( -( -{ -1 -{ -{ -{ -] -? -| -O -M -8 -# -& -& -W -# -a -q -q -w -Z -0 -L -X -n -r -x -f -/ -\ -) -m -h -W -o -u -v -c -c -b -o -a -* -o -J -Z -C -L -p -Q -Z -d -w -w -m -m -w -m -m -w -w -w -w -q -w -w -q -w -p -8 -# -d -o -d -J -W -w -@ -@ -d -q -k -b -d -k -b -0 -O -0 -b -b -b -C -0 -/ -c -r -h -h -I -q -Z -Z -0 -m -o -a -8 -o -a -k -q -m -m -0 -Z -q -O -Q -O -Z -m -Z -m -p -d -Z -m -b -% -8 -# -W -& -8 -8 -8 -& -& -8 -& -W -W -8 -# -W -# -k -d -q -w -a -m -C -Q -b -* -h -b -d -q -m -O -Q -0 -m -b -q -d -q -w -} -- -_ -} -) -) -[ -_ -~ -, -, -U -0 -m -Z -L -J -Q -Z -Z -m -w -k -# -M -* -# -l -M -c -Q -0 -O -0 -0 -W -* -M -M -p -M -W -k -k -8 -m -M -b -d -* -* -* -o -o -a -a -a -h -a -a -o -a -k -f -Y -J -C -o -% -& -0 -b -k -o -o -k -o -Z -# -M -o -a -o -f -a -d -# -# -& -8 -B -M -n -n -L -0 -L -Q -0 -Z -w -q -p -b -k -a -b -b -d -d -p -p -q -q -q -p -q -J -\ -\ -( -( -( -{ -{ -{ -{ -{ -} -] -- -_ -n -h -M -# -* -* -o -o -h -b -q -m -0 -L -C -C -Y -v -u -a -M -M -o -v -c -X -c -a -d -h -k -o -p -M -0 -Q -q -m -m -% -m -Z -m -w -m -m -w -w -w -q -w -w -w -w -Z -q -B -k -d -* -d -p -0 -& -& -M -$ -b -a -p -o -a -d -a -d -Z -C -0 -b -d -p -Y -{ -J -L -h -o -l -d -w -O -0 -w -k -* -& -& -M -a -p -d -b -a -o -* -* -w -q -k -k -W -M -& -M -& -W -& -M -* -* -* -M -* -* -# -8 -8 -8 -W -M -M -a -a -W -# -k -d -p -q -m -Z -L -0 -X -# -a -k -b -p -w -Z -0 -O -m -p -0 -p -_ -/ -} -d -m -) -x -) -) -u -I -^ -: -0 -O -m -Z -C -Y -Q -0 -Z -m -w -m -o -# -M -# -@ -# -o -M -0 -0 -O -Q -* -* -M -M -k -p -M -M -b -o -W -k -J -d -* -o -o -o -o -a -@ -B -B -8 -h -a -h -| -t -J -J -C -a -& -& -x -k -a -a -o -o -W -Z -& -M -# -w -Q -\ -0 -p -w -B -% -M -% -M -n -n -L -L -L -Q -O -m -q -w -b -b -b -h -a -a -k -b -b -b -d -d -b -b -q -J -\ -\ -\ -\ -| -) -{ -) -{ -1 -{ -{ -} -{ -{ -} -} -} -] -] -[ -] -] -{ -x -Z -p -p -p -q -q -b -a -o -M -# -h -c -c -Y -X -q -b -p -h -* -o -o -W -& -a -* -W -m -m -m -m -w -w -w -w -q -w -w -w -w -m -m -w -p -h -w -o -Q -q -b -Y -& -& -$ -$ -p -k -h -a -a -b -k -h -Z -O -Y -0 -p -m -U -c -| -x -Y -h -I -p -q -m -m -w -M -M -% -% -M -& -M -# -# -* -a -a -# -M -# -a -h -b -a -h -o -a -k -a -h -h -k -a -h -d -w -m -a -* -* -a -* -o -o -k -M -# -h -d -p -q -X -J -w -0 -k -Z -o -k -b -d -q -m -O -O -m -p -c -j -r -\ -- -1 -} -n -< -1 -{ -? -| -I -: -{ -Z -w -Q -J -U -U -Q -m -Z -O -Z -o -* -a -0 -o -a -q -k -m -0 -Q -Q -* -# -M -M -a -b -* -& -8 -k -# -k -q -0 -o -o -o -o -* -W -8 -@ -B -B -h -h -h -/ -{ -f -U -U -X -& -8 -# -a -a -o -a -* -d -d -h -# -M -p -d -L -0 -h -a -# -8 -% -8 -k -x -n -L -Q -Q -0 -Z -m -q -w -k -k -k -o -o -o -a -a -h -k -b -b -b -b -d -C -j -f -\ -/ -\ -1 -{ -{ -1 -{ -{ -) -1 -) -{ -1 -1 -1 -{ -{ -} -] -] -} -{ -} -) -t -t -x -Y -m -d -o -* -a -o -J -c -z -X -q -p -q -k -o -k -M -W -# -M -o -d -m -m -m -m -m -m -m -w -w -q -w -q -m -m -Z -k -q -b -a -* -p -o -O -u -& -& -@ -$ -k -k -Z -b -a -b -b -h -q -m -U -U -q -p -* -X -} -/ -u -z -" -d -w -Z -O -m -# -Z -M -W -M -M -M -M -a -h -b -h -b -h -k -a -h -h -a -b -h -b -q -q -O -C -C -U -c -n -c -X -m -h -a -* -h -k -a -k -M -# -a -d -q -q -p -# -W -* -Z -b -* -a -b -b -p -w -Z -Z -m -p -w -z -f -1 -I -; -_ -~ -; -l -1 -! -~ -I -; -! -Z -w -J -C -J -L -O -Z -Z -0 -Z -* -o -& -o -d -w -m -q -p -m -Q -Q -& -M -M -# -# -Q -# -p -a -p -k -k -q -C -W -# -M -W -& -M -% -8 -o -M -h -k -b -b -C -Q -o -Y -L -b -& -o -v -a -o -o -# -Z -& -# -a -W -h -x -q -b -h -8 -W -% -p -& -p -n -n -Q -L -L -0 -Z -q -q -q -d -a -h -* -o -o -o -o -o -o -a -a -a -a -h -Z -z -r -r -x -r -t -( -( -( -) -1 -{ -1 -1 -{ -{ -1 -1 -1 -1 -1 -} -} -} -{ -) -1 -[ -{ -{ -\ -U -0 -Q -C -0 -Z -Q -C -C -X -Q -a -w -k -d -b -W -a -d -Q -k -d -m -O -m -m -m -m -m -w -w -q -w -m -m -k -b -o -o -k -h -M -# -M -M -c -& -& -X -@ -d -p -b -m -a -b -p -k -q -Z -J -0 -w -w -w -w -c -j -n -/ -t -f -O -w -Q -C -O -0 -L -U -C -C -0 -Z -m -0 -Z -U -z -x -j -z -X -u -f -t -/ -x -n -r -j -j -x -x -v -x -x -c -0 -k -b -# -a -a -d -a -M -# -a -d -q -q -C -Q -k -* -o -h -* -a -k -b -d -q -m -m -m -p -z -X -n -| -> -[ -] -( -< -^ -v -I -> -] -< -] -j -O -Y -Y -C -J -Q -O -O -p -a -w -z -M -o -r -w -m -Z -p -d -d -p -Q -# -# -* -# -o -o -o -o -k -b -p -w -m -W -% -W -M -# -* -W -W -8 -M -o -d -b -b -p -# -M -W -# -Z -& -8 -B -a -a -o -M -m -# -o -Z -M -w -p -d -o -p -h -& -8 -8 -* -z -n -n -0 -0 -Q -0 -Z -q -q -k -b -a -p -@ -8 -* -8 -W -h -o -o -o -o -o -a -d -Z -Q -J -z -x -j -f -t -t -f -/ -\ -( -| -) -) -) -) -) -1 -} -{ -1 -{ -1 -{ -{ -} -} -{ -} -1 -] -r -C -Q -Z -Z -J -L -J -J -# -a -p -0 -M -M -k -C -Q -p -q -Z -Z -Z -Z -m -q -q -q -m -q -m -w -Z -# -o -o -& -8 -& -& -W -& -M -x -0 -B -k -@ -p -O -m -m -m -q -d -Q -Q -C -L -L -p -0 -m -Z -Y -Y -v -f -| -/ -u -L -Y -Y -J -n -j -r -\ -\ -{ -) -) -) -1 -{ -) -) -[ -| -( -\ -/ -) -\ -t -/ -\ -j -j -f -f -f -j -t -v -C -h -* -h -k -a -h -8 -M -# -a -p -q -p -b -o -o -d -b -Z -q -o -h -k -b -q -w -m -w -p -a -L -Y -v -} -( -v -X -z -^ -I -} -; -} -- -\ -f -C -J -J -Q -p -b -k -b -k -k -o -u -@ -L -j -O -m -Z -C -q -w -q -w -# -# -o -a -o -o -a -a -b -k -b -m -Z -b -& -& -# -M -* -W -& -W -M -8 -% -k -0 -d -M -M -W -W -h -8 -& -& -C -a -a -# -m -M -a -W -Z -L -* -M -& -k -m -a -o -% -W -r -n -X -Q -Q -Q -O -Z -q -q -k -b -a -w -8 -@ -$ -B -& -% -8 -8 -o -o -o -a -p -Z -O -0 -Q -J -U -v -j -j -f -j -f -t -\ -| -( -) -{ -( -( -( -( -) -1 -1 -{ -{ -{ -} -] -1 -) -{ -? -j -C -0 -0 -Q -Q -C -m -# -o -a -p -w -v -O -p -L -h -o -Z -Z -m -m -Z -w -m -w -Z -O -d -m -# -a -o -# -8 -% -& -a -& -& -m -{ -C -$ -$ -$ -d -Z -O -w -m -0 -w -O -m -m -J -L -q -p -Z -O -C -| -n -) -( -v -x -L -U -U -v -v -f -\ -f -| -) -( -[ -\ -{ -| -1 -1 -) -| -( -\ -/ -r -f -j -r -r -x -r -j -f -r -j -n -c -L -# -o -W -# -# -M -* -M -# -a -p -q -p -k -o -p -k -k -( -& -* -a -k -b -p -w -m -m -p -k -C -Y -X -| -t -C -Y -c -j -f -X -< -+ -} -n -m -Z -w -w -q -p -b -d -p -d -h -* -@ -Z -r -w -Z -Z -Q -Q -C -q -q -p -d -o -* -o -k -k -m -b -b -k -p -Z -0 -h -W -# -# -# -& -W -p -& -# -B -% -8 -p -% -# -# -# -M -M -8 -8 -8 -X -h -h -h -* -& -r -* -w -* -O -d -q -u -* -Q -J -o -W -x -n -J -0 -0 -0 -O -m -q -p -b -b -h -* -h -M -# -o -* -# -8 -% -W -M -W -% -k -O -O -O -O -O -0 -0 -Q -L -X -n -x -x -n -x -x -j -x -f -t -/ -( -| -( -1 -) -) -{ -( -( -( -( -f -j -n -U -U -Q -Z -m -J -O -M -M -b -8 -& -M -o -0 -b -a -* -O -Z -O -Z -w -O -O -Q -o -p -Z -o -a -# -o -8 -O -o -* -8 -# -# -W -m -B -$ -@ -B -q -d -p -p -p -b -p -a -d -p -m -w -p -p -k -O -x -L -c -\ -/ -x -} -C -U -0 -Y -u -/ -r -1 -( -| -) -( -/ -/ -\ -\ -| -) -\ -f -j -r -j -x -r -r -u -u -c -n -v -v -u -X -u -Q -p -k -p -b -a -W -M -M -# -a -p -m -d -p -a -b -m -( -O -c -* -o -k -b -d -q -w -w -p -d -v -0 -Q -c -0 -J -0 -Y -n -x -( -> -+ -/ -0 -0 -O -Z -m -m -q -q -q -q -m -k -x -w -0 -@ -O -0 -0 -Q -Q -Q -0 -m -p -p -k -a -h -h -k -0 -O -Q -m -p -0 -0 -M -W -h -M -o -W -W -& -W -@ -B -% -k -k -* -* -* -# -M -M -b -& -& -8 -a -k -h -h -J -M -k -* -* -v -d -O -k -L -U -k -a -@ -r -n -J -0 -Q -0 -O -m -q -d -h -b -a -b -a -a -M -# -a -p -q -o -$ -@ -B -B -M -o -W -h -Q -O -O -0 -O -0 -0 -0 -C -X -c -c -c -v -v -c -v -v -n -j -t -f -/ -/ -\ -\ -( -) -| -/ -j -v -Y -J -C -O -Z -w -C -h -W -& -# -# -& -M -W -W -# -M -0 -O -O -Z -O -Q -p -b -h -m -k -# -M -# -8 -b -o -# -8 -M -@ -8 -W -o -$ -& -@ -$ -q -d -d -m -b -m -b -h -k -q -m -p -q -k -b -k -J -U -Y -X -1 -1 -j -L -J -0 -m -Z -Q -0 -C -z -z -Y -J -n -Y -z -C -Q -Q -J -O -Q -0 -Z -0 -Q -Y -u -v -c -X -Q -Z -p -q -a -a -W -8 -& -M -M -# -M -M -* -a -p -m -p -d -d -b -} -U -- -C -* -o -h -k -d -q -w -w -q -d -c -Z -d -m -m -q -Z -j -> -) -l -i -\ -| -w -q -0 -0 -O -O -Z -Z -Z -Z -Q -b -c -p -0 -x -0 -0 -0 -Q -Q -L -Q -O -O -p -k -p -h -k -k -Q -M -8 -k -Q -0 -C -W -# -k -m -& -W -o -W -* -M -B -W -X -q -W -k -* -o -M -# -& -z -h -& -Q -w -a -Y -* -d -r -Y -o -U -o -} -Q -0 -O -Z -w -b -x -v -L -Z -0 -O -Z -q -p -b -b -k -b -8 -* -o -# -* -8 -8 -B -% -8 -w -d -p -& -& -& -8 -# -q -Q -a -o -b -Z -m -Z -Z -O -O -L -C -C -U -U -Y -U -Y -Y -Y -Y -X -z -X -z -v -v -c -U -C -C -L -L -O -Z -w -w -m -W -W -M -8 -8 -# -8 -# -w -% -Q -C -L -J -8 -o -h -k -h -a -* -W -o -* -W -# -8 -B -p -h -a -* -& -8 -8 -Y -@ -@ -b -p -q -b -o -o -d -d -p -b -q -b -p -b -k -k -p -O -Z -0 -/ -} -] -1 -U -0 -Z -q -Z -w -q -Z -w -Z -q -p -Z -m -0 -Z -Z -p -m -O -Q -w -w -m -Z -q -O -p -p -m -w -k -p -h -a -# -& -8 -& -W -o -M -# -o -h -p -m -p -a -U -( -Y -- -/ -U -a -* -a -k -b -p -q -w -q -q -L -q -p -f -\ -1 -] -c -. -X -{ -< -? -( -p -Z -0 -Q -0 -O -O -Z -Z -Q -b -o -M -h -X -0 -O -0 -Q -Q -0 -L -Q -m -U -Y -O -h -b -q -Z -U -o -o -a -Y -U -m -& -a -O -b -& -& -# -& -W -# -W -a -W -a -& -j -# -a -* -o -# -M -& -& -C -p -h -a -m -L -m -c -z -c -a -v -a -Q -O -Q -L -q -n -u -L -0 -0 -O -Z -q -p -b -b -k -d -% -% -& -8 -% -a -m -h -8 -B -B -d -m -n -J -m -a -M -# -M -# -d -b -k -h -* -b -Z -m -m -q -m -O -0 -Q -C -C -L -C -C -L -C -J -J -J -U -C -L -L -Q -O -0 -0 -Z -m -q -w -C -* -M -8 -% -o -& -* -o -L -Y -b -& -k -h -p -m -k -# -# -M -* -M -h -# -o -B -# -w -k -h -M -& -C -8 -a -$ -@ -O -d -k -w -& -# -# -b -h -d -k -b -b -k -b -a -h -C -q -J -L -} -v -v -/ -J -J -Q -C -C -L -O -w -Q -m -C -m -q -m -w -w -Z -Z -w -0 -0 -O -Q -C -Q -C -C -m -m -q -w -b -k -k -W -# -M -* -W -h -M -# -o -k -p -Z -q -j -| -x -j -b -0 -) -( -* -a -k -b -p -q -w -w -q -q -k -b -n -j -r -\ -/ -" -f -_ -< -? -j -m -0 -Q -0 -0 -0 -O -Z -Z -Q -k -x -o -a -# -Q -0 -0 -0 -O -b -h -h -h -M -M -* -p -d -p -q -X -* -* -# -n -p -d -& -d -O -& -& -a -& -q -p -# -# -z -* -Z -& -k -* -h -Y -n -C -# -& -8 -Q -# -J -d -Z -{ -n -X -U -C -h -* -o -o -o -# -b -u -n -L -L -Z -O -O -Z -q -k -p -b -o -m -d -p -q -b -J -Z -O -b -Z -d -h -B -a -Y -L -C -Q -O -O -0 -k -o -a -* -* -* -k -k -o -h -* -q -O -q -q -p -q -p -w -w -m -Z -O -Q -0 -O -Z -Q -0 -O -Q -0 -O -m -Z -m -M -h -Q -J -O -m -h -a -0 -h -# -a -a -* -# -d -& -& -# -* -W -W -W -8 -d -B -m -* -Z -Q -L -J -C -C -] -8 -@ -$ -@ -L -Y -L -f -M -# -o -b -d -b -* -p -k -o -a -h -k -U -0 -Y -0 -} -n -Y -c -J -c -X -Y -Y -C -C -C -C -L -0 -Q -L -L -C -Z -u -< -^ -, -- -/ -X -Y -c -z -C -U -C -Q -O -m -b -p -p -# -M -M -* -o -# -* -a -b -p -0 -m -O -- -_ -0 -q -t -| -j -# -o -h -b -d -q -w -m -w -m -h -k -Q -Y -v -u -{ -? -{ -> -+ -} -j -Z -0 -Q -L -Q -0 -0 -0 -0 -J -k -o -* -# -Q -O -p -b -k -k -k -k -k -b -M -o -W -# -0 -O -L -& -# -* -o -p -b -p -a -q -J -d -d -C -d -L -w -& -a -b -p -W -p -b -o -& -* -U -z -* -& -8 -m -m -U -Y -J -X -L -z -Z -m -b -w -* -o -* -* -* -x -n -L -L -Z -O -Z -m -w -b -o -b -o -# -@ -M -* -* -o -a -q -m -C -v -w -q -b -m -J -Q -Z -Q -X -( -O -C -Y -w -m -b -a -* -* -* -o -Q -a -M -a -M -h -p -p -p -p -p -q -p -p -p -p -Z -Q -Q -L -0 -0 -Z -m -m -b -* -W -a -8 -Q -0 -k -Z -d -o -# -k -b -b -& -d -8 -% -8 -% -% -8 -B -k -W -k -# -Z -O -0 -L -C -U -8 -& -m -@ -@ -0 -# -m -z -a -k -a -k -p -a -8 -8 -q -a -h -b -U -U -Y -z -c -[ -n -z -u -U -| -! -l -{ -f -( -1 -[ -} -{ -] -X -c -[ -! -{ -( -] -( -/ -\ -] -< -< -] -Y -U -C -L -0 -m -O -q -h -* -# -W -J -# -& -* -a -b -q -L -O -j -n -Z -p -p -O -x -Y -X -o -h -b -d -q -w -w -w -p -h -k -0 -L -L -U -f -{ -i -: -x -X -Q -O -J -L -Q -Q -Q -0 -0 -0 -o -d -q -% -} -Z -d -d -d -h -k -k -k -a -p -M -a -M -M -a -L -Q -M -# -* -* -b -b -L -C -X -k -8 -& -W -8 -& -8 -q -f -p -Z -& -c -8 -8 -p -h -b -v -m -8 -& -Q -J -L -J -p -Z -v -a -W -M -O -q -* -* -* -* -# -x -r -Q -L -O -O -O -Z -b -k -k -b -k -o -k -p -a -h -# -# -# -* -M -m -0 -c -Y -/ -q -J -O -v -U -Y -w -Z -Z -L -X -U -L -q -p -o -M -M -& -* -* -# -% -8 -M -* -p -q -q -q -q -p -d -m -L -L -C -0 -Z -q -m -p -Z -o -# -M -# -M -k -q -h -b -w -M -o -h -& -a -% -W -& -B -@ -B -B -& -z -h -& -8 -& -# -o -h -a -a -v -* -* -B -@ -% -8 -q -0 -k -O -o -m -q -L -& -& -# -o -h -d -U -J -j -r -1 -] -) -\ -) -) -\ -[ -> -] -f -f -f -/ -v -/ -1 -) -x -~ -x -U -u -U -U -j -/ -( -1 -( -| -1 -c -U -J -J -O -Q -Z -p -k -Q -q -p -p -* -o -h -b -Z -C -Q -x -z -d -0 -( -/ -r -| -X -* -a -b -d -p -w -m -m -d -b -o -Z -0 -Q -Q -c -/ -! -| -} -v -q -0 -v -L -L -Q -Q -Q -c -x -Q -C -L -O -C -Q -d -d -k -Q -d -k -b -k -m -W -* -a -W -w -h -k -M -# -# -# -k -Z -h -8 -& -& -& -Z -& -Y -d -W -& -& -z -k -d -W -& -W -& -h -W -Y -Y -* -& -& -B -0 -# -* -& -# -M -M -o -p -# -* -* -* -* -k -x -C -Q -L -O -O -Z -q -a -h -b -k -a -q -h -Z -B -% -* -# -M -M -W -# -o -a -Y -< -] -d -Z -m -c -0 -a -L -X -j -Y -U -C -J -n -C -O -k -a -o -a -k -O -* -a -O -o -p -h -h -a -q -o -M -M -W -W -W -M -a -b -b -h -C -k -C -0 -k -h -* -0 -p -q -o -o -o -B -b -B -# -# -W -* -M -a -W -* -8 -8 -8 -8 -* -o -o -k -% -@ -Z -$ -% -@ -B -% -& -# -b -k -* -W -/ -Q -% -o -Q -Z -k -X -J -X -c -v -] -< -i -{ -_ -[ -j -( -[ -? -? -{ -| -} -- -- -] -+ -) -C -1 -{ -} -} -| -/ -) -| -c -r -C -f -< -_ -z -c -Y -J -Q -Q -Y -h -# -# -W -* -o -k -p -0 -J -C -k -c -\ -| -n -x -( -Q -h -# -a -b -p -q -w -m -m -q -k -* -w -m -Z -Z -L -r -> -] -) -u -m -C -r -c -n -v -v -v -u -f -L -@ -M -0 -O -0 -d -b -d -W -M -k -b -k -Z -M -W -w -M -M -# -o -* -h -# -# -# -B -m -8 -* -& -W -8 -& -& -& -W -b -b -& -# -J -W -W -p -C -h -W -j -z -d -& -8 -& -C -Z -a -a -J -M -M -# -k -# -# -# -# -# -L -x -J -Q -L -Z -O -Z -w -a -a -k -k -b -d -b -L -# -W -# -p -Z -8 -W -M -a -* -m -z -+ -x -/ -j -c -m -a -* -# -\ -( -J -Y -L -X -U -p -O -0 -m -o -h -d -m -p -p -q -d -k -a -m -q -M -& -8 -8 -& -& -W -k -L -p -m -L -* -h -Z -o -L -C -Z -p -d -k -a -* -8 -* -* -# -# -W -# -W -M -M -* -8 -8 -8 -8 -* -o -o -o -8 -* -B -$ -8 -$ -8 -U -M -& -p -k -M -# -p -B -W -L -, -J -m -u -v -Y -Y -} -] -! -_ -] -- -) -j -z -v -z -t -t -t -j -j -f -/ -i -+ -j -1 -1 -\ -/ -/ -X -C -x -u -f -j -\ -n -{ -- -_ -| -} -) -j -h -# -* -M -M -o -a -b -q -Q -J -J -Z -0 -\ -x -d -0 -r -m -b -d -o -k -p -q -w -m -m -d -a -# -p -q -m -Z -0 -} -i -] -( -X -k -Z -C -n -v -u -v -u -u -C -j -* -# -L -0 -Q -d -C -& -& -& -d -k -a -Y -M -M -p -a -0 -Q -0 -0 -X -b -& -M -W -8 -* -W -% -w -W -W -M -a -W -& -% -& -a -% -q -& -k -8 -& -W -j -Y -m -& -8 -& -J -O -Q -o -m -& -M -# -p -# -# -# -# -# -J -c -L -Q -L -O -Z -O -h -a -a -b -h -q -# -O -m -L -h -& -o -k -o -M -m -W -p -b -O -v -X -c -C -z -} -? -% -# -b -* -J -z -v -k -L -# -M -Q -x -| -b -b -p -O -p -q -0 -O -f -u -Q -d -# -& -& -# -a -Z -p -m -# -q -U -a -a -k -o -O -L -Q -Q -# -k -M -& -W -* -& -C -* -# -# -M -M -M -M -M -* -* -o -o -& -d -% -& -q -& -$ -B -@ -$ -Z -a -d -q -a -# -* -w -h -b -p -J -O -t -& -/ -{ -] -] -r -> -( -| -} -C -u -X -r -f -t -/ -j -r -r -j -t -/ -t -j -/ -/ -| -\ -0 -d -a -p -p -z -x -) -\ -j -u -Q -( -l -! -| -k -# -# -M -# -a -h -d -m -C -J -J -O -f -Z -Q -Z -n -Z -C -o -* -o -k -p -q -q -w -m -p -o -M -k -p -d -p -h -\ -< -1 -C -w -k -Q -L -u -n -u -n -x -f -U -# -% -# -m -O -Q -Q -0 -M -W -& -& -w -0 -# -a -Z -0 -C -W -M -# -* -W -a -m -p -p -M -B -B -@ -q -M -W -M -8 -* -p -q -W -8 -W -8 -0 -Z -h -W -0 -n -X -Q -M -a -O -% -Z -Q -M -& -M -0 -M -d -M -M -# -# -# -r -J -L -Q -Q -0 -Z -w -a -h -k -k -k -p -k -Q -p -U -b -W -% -B -a -q -* -m -Z -c -{ -p -Z -c -/ -v -| -m -Q -a -k -# -o -* -a -a -J -* -W -a -h -j -| -c -p -b -b -m -| -r -b -* -k -U -o -M -# -q -p -J -k -d -a -b -Q -M -k -L -b -Q -C -C -Z -a -# -& -8 -M -Q -* -8 -8 -# -# -* -M -M -M -M -# -o -a -o -M -o -@ -& -& -Q -$ -@ -@ -$ -% -M -w -Q -o -* -p -Q -B -Z -p -W -p -& -o -& -] -] -x -t -/ -} -< -\ -1 -z -f -/ -/ -( -| -/ -t -f -j -f -[ -/ -j -\ -) -{ -} -U -0 -O -w -d -d -m -{ -( -r -J -n -1 -< -i -? -X -p -d -W -* -a -h -p -O -J -J -U -Q -v -n -L -x -C -Q -Q -# -# -o -h -p -q -q -m -m -q -m -w -b -M -# -# -* -} -] -( -u -a -p -Q -C -r -u -n -u -x -n -Y -X -C -L -Q -C -Q -L -d -d -& -M -W -& -p -Q -w -# -# -q -M -W -W -W -W -M -M -M -8 -p -% -B -M -M -q -a -# -W -w -d -d -* -o -W -W -p -# -a -W -c -c -c -L -w -J -M -& -L -b -W -W -W -& -& -w -& -& -W -W -M -x -v -0 -Q -0 -O -O -k -h -k -k -k -b -d -8 -Y -Z -Z -b -* -B -% -o -B -m -J -8 -0 -/ -L -x -[ -I -! -[ -t -v -w -b -* -q -a -o -h -a -d -b -k -h -w -{ -| -[ -t -X -c -C -# -* -W -& -q -m -o -a -p -b -k -a -h -o -U -C -# -a -b -v -L -0 -k -d -* -* -o -M -Q -# -8 -8 -% -M -M -M -M -M -M -* -o -a -h -p -k -c -n -a -& -x -$ -$ -@ -$ -M -o -Z -h -# -* -q -& -k -m -h -8 -B -8 -8 -8 -{ -v -/ -c -U -} -| -n -} -c -) -1 -1 -{ -{ -{ -) -| -/ -t -r -u -\ -( -{ -] -? -{ -- -- -- -? -c -J -X -/ -f -U -d -q -\ -, -< -C -m -q -W -* -a -b -p -O -C -J -U -L -r -{ -f -z -Q -O -Z -# -# -* -a -d -q -w -m -m -q -m -q -d -M -M -# -* -( -) -/ -\ -a -w -L -Q -c -v -v -c -n -U -v -C -U -@ -Q -Q -L -L -b -Q -& -M -W -M -w -Z -* -W -M -W -# -M -M -& -& -W -& -& -& -W -% -M -q -M -k -8 -& -W -Z -p -k -* -& -8 -* -M -Q -W -& -d -z -M -U -k -% -& -& -U -& -M -W -w -b -& -q -w -& -& -& -W -x -Y -0 -Q -0 -Z -Z -h -h -o -k -k -p -q -& -Q -x -Y -W -8 -B -M -% -M -o -q -o -m -q -z -v -) -{ -b -0 -u -w -* -* -Q -c -0 -X -U -p -p -Q -t -} -! -n -m -J -C -\ -j -L -h -a -# -o -* -Y -w -m -O -d -h -h -a -# -# -M -M -# -o -k -q -p -o -k -M -M -M -k -8 -8 -% -% -% -M -# -# -M -# -o -a -k -d -Q -m -q -Y -c -k -& -h -$ -$ -@ -B -# -X -w -w -p -d -q -d -$ -p -a -% -8 -* -o -& -/ -) -t -x -) -] -( -n -) -) -] -_ -+ -+ -_ -? -] -{ -) -( -n -n -( -} -? -+ -~ -< -< -< -~ -+ -_ -? -? -) -\ -_ -m -q -b -w -| -J -d -* -& -# -a -k -b -Z -C -U -Y -J -b -) -) -m -b -o -o -w -d -m -a -b -q -w -m -m -q -o -w -q -M -M -M -# -} -\ -r -% -a -Z -Q -Q -Q -v -r -x -n -Q -$ -C -Y -u -Q -J -L -0 -p -Q -W -* -W -m -& -Z -M -M -# -# -p -M -M -% -8 -8 -& -& -& -& -W -B -a -# -8 -& -& -M -# -8 -m -* -& -p -M -Y -o -W -W -8 -W -a -p -Z -W -& -& -X -W -W -M -a -o -M -k -M -O -b -8 -B -x -Y -Q -Q -0 -C -d -k -h -o -k -b -b -8 -& -m -Y -J -8 -b -# -M -& -o -a -M -m -O -Y -j -) -l -0 -k -a -u -q -Y -J -U -z -Z -Z -Q -( -J -f -1 -0 -x -! -t -1 -\ -c -m -U -X -w -o -k -p -m -u -Z -m -q -h -J -U -C -d -* -p -x -0 -m -w -p -M -M -& -M -M -8 -% -% -% -% -% -M -# -M -# -# -o -h -p -C -B -& -Z -X -8 -& -& -k -$ -@ -@ -@ -M -c -q -0 -d -q -q -b -m -h -a -& -& -k -a -U -x -v -{ -r -c -] -| -\ -- -} -{ -> -l -! -! -> -+ -] -} -{ -| -| -{ -- -+ -! -I -I -l -: -; -> -+ -_ -- -t -| -] -C -p -p -0 -t -J -a -o -& -M -o -h -k -w -L -Y -X -Y -O -\ -L -# -M -# -M -d -b -q -o -k -q -m -m -m -q -a -d -b -M -W -M -# -| -( -v -a -k -O -Q -Q -L -c -n -x -t -v -z -L -c -J -0 -Y -0 -Q -d -C -M -M -b -& -W -W -& -o -# -0 -o -* -M -W -8 -& -& -8 -& -W -& -p -W -h -a -W -& -a -W -o -& -& -8 -d -h -W -W -p -B -* -M -L -Z -k -M -8 -& -h -W -# -w -M -# -a -M -Z -Z -O -m -C -n -v -Q -0 -C -k -b -k -k -a -k -h -* -W -& -m -b -z -W -q -8 -M -B -% -b -8 -p -q -X -J -} -[ -M -* -# -b -w -m -v -c -Q -J -J -Y -p -t -\ -1 -? -! -l -c -J -? -1 -? -( -j -C -m -m -b -q -Z -Q -p -t -z -m -x -d -L -# -* -q -q -C -d -# -# -# -p -o -a -8 -% -% -% -% -% -M -* -# -# -# -* -c -m -q -8 -W -& -8 -o -B -W -o -$ -@ -@ -$ -M -a -Z -q -d -q -p -q -p -h -% -& -& -o -& -1 -\ -] -[ -j -/ -[ -t -) -) -1 -[ -l -< -} -- -< -? -+ -} -[ -t -} -~ -+ -> -i -+ -? -[ -} -? -< -i -] -] -- -> -~ -} -[ -J -/ -] -n -q -h -& -M -# -a -a -p -O -U -c -z -U -v -o -M -M -M -M -p -b -b -& -a -p -w -w -m -w -b -p -b -& -W -W -# -) -t -| -a -b -0 -Q -Q -L -c -v -j -j -v -B -C -o -Z -Y -u -b -b -h -% -# -d -8 -W -& -W -b -h -o -a -M -* -M -M -& -& -& -@ -@ -M -& -* -# -W -& -& -& -# -a -o -W -& -W -k -k -8 -& -d -8 -M -* -0 -W -& -d -& -& -B -M -8 -w -W -M -# -a -m -w -O -Z -0 -n -c -Q -J -0 -q -k -k -k -b -k -h -k -k -m -m -Q -W -& -h -B -W -% -& -8 -a -Z -Q -Y -Q -j -) -% -* -p -b -U -0 -Z -c -O -C -X -c -r -[ -0 -n -v -Q -j -( -t -j -X -O -U -Y -u -O -b -d -a -p -0 -v -0 -m -r -c -* -M -a -M -M -& -h -b -o -* -M -k -8 -% -8 -% -% -B -B -B -W -M -# -# -# -m -m -0 -L -& -a -& -% -M -& -8 -o -@ -@ -B -@ -8 -k -p -d -d -p -p -b -h -h -8 -& -M -o -& -v -/ -< -I -t -; -} -/ -| -{ -{ -[ -^ -^ -! -] -{ -[ -- -[ -{ -| -~ -_ -} -} -1 -{ -} -1 -1 -1 -} -} -{ -{ -< -{ -_ -~ -+ -] -< -] -x -m -k -o -W -M -o -o -d -m -C -c -c -X -a -# -M -M -M -M -p -k -p -k -a -d -w -m -m -w -k -p -b -& -& -M -M -/ -j -- -a -q -0 -0 -0 -L -n -x -f -C -& -# -Q -m -8 -M -M -q -a -Q -& -k -p -& -W -M -b -a -h -o -o -W -M -W -* -M -& -W -B -@ -@ -& -& -# -a -& -& -M -W -& -& -W -& -& -o -k -o -W -& -h -M -p -# -o -W -& -& -& -& -& -d -p -M -* -a -b -w -m -m -O -n -n -v -X -Y -w -k -b -k -a -b -k -b -h -Z -0 -a -q -k -0 -M -W -o -8 -b -B -& -m -m -O -L -( -] -# -k -Z -Q -X -J -J -Q -J -Y -L -m -k -c -0 -Q -z -n -x -U -X -c -m -0 -m -Y -c -Y -L -o -b -Q -X -Q -r -t -1 -k -h -a -o -a -p -W -# -& -8 -* -* -B -% -8 -% -B -B -B -B -B -% -# -M -M -q -Z -Q -Y -Y -u -h -8 -& -8 -8 -a -& -$ -@ -@ -@ -8 -a -Q -b -p -k -k -k -a -o -8 -W -o -o -& -8 -Z -@ -& -f -[ -} -| -? -, -! -1 -j -c -u -u -n -X -Y -\ -) -) -n -r -x -\ -f -f -f -r -x -x -r -j -t -1 -f -} -{ -) -? -[ -( -v -U -m -b -* -o -M -# -o -b -w -C -v -v -z -k -# -M -W -W -M -p -p -p -q -o -k -q -w -m -w -b -d -k -& -& -W -# -c -x -~ -a -m -O -0 -U -c -v -Y -X -q -Z -# -% -p -c -* -b -# -W -M -* -d -& -& -M -& -W -h -o -o -o -W -# -M -o -h -& -8 -@ -@ -@ -M -W -M -& -& -& -# -M -* -& -& -& -& -& -k -& -& -M -q -o -C -o -W -W -M -8 -& -& -& -X -p -C -W -M -* -q -Z -Z -m -x -x -n -c -m -p -d -k -q -a -k -k -h -8 -B -o -8 -d -w -M -% -B -8 -W -% -B -& -d -J -q -0 -| -? -h -p -Q -v -c -x -r -L -p -d -q -p -W -Q -u -p -w -k -b -p -0 -a -X -q -* -h -U -Z -d -k -k -o -q -x -/ -x -p -a -# -k -a -M -& -b -p -b -& -d -M -p -a -* -# -# -M -M -M -M -W -8 -& -p -m -m -0 -Q -C -J -* -& -# -@ -M -z -Z -$ -@ -@ -@ -M -o -C -a -o -h -# -W -o -M -W -a -M -M -M -M -& -8 -& -f -] -] -? -, -+ -d -q -q -p -p -d -0 -U -z -n -Y -u -x -j -J -J -L -L -d -k -a -k -a -a -L -U -_ -\ -t -\ -X -c -v -? -r -o -q -o -a -# -M -* -b -w -C -v -v -c -b -M -M -W -W -W -b -b -b -b -W -h -p -w -m -m -p -q -b -& -& -& -* -J -v -r -q -Y -Y -z -z -c -f -z -J -p -X -p -w -d -& -W -o -M -W -M -d -M -M -M -a -8 -W -* -h -o -# -w -Z -O -0 -Q -m -B -@ -@ -@ -W -M -W -& -& -& -W -# -& -W -& -& -& -d -W -W -M -k -p -d -b -o -W -o -o -o -& -& -% -B -O -W -W -m -# -w -m -O -Z -x -n -u -0 -q -d -q -m -a -o -k -k -o -8 -8 -% -8 -q -M -8 -M -a -b -o -# -* -* -w -v -p -Y -r -Q -k -X -r -J -c -n -Q -Y -U -p -b -b -& -& -W -W -& -& -p -w -k -Y -8 -8 -h -h -w -k -k -h -h -a -k -c -X -w -k -a -* -p -b -k -q -p -b -k -& -% -# -& -o -# -# -# -# -# -# -# -# -8 -a -b -p -p -q -w -Z -Q -J -o -M -& -& -v -C -@ -@ -@ -@ -W -# -B -% -% -B -B -# -* -k -h -k -k -# -& -W -* -& -B -/ -? -_ -l -0 -d -p -d -b -b -b -k -L -C -L -Y -J -C -Q -L -Q -Q -0 -0 -M -o -# -# -# -# -o -a -L -? -} -) -) -n -v -_ -q -b -Q -b -L -d -& -# -k -w -C -u -u -c -O -W -M -W -W -W -d -k -k -k -k -a -d -q -m -m -q -p -k -W -o -k -q -O -v -Y -q -U -Y -X -X -x -c -Y -L -q -% -p -d -b -k -# -a -d -W -w -& -W -M -8 -a -a -& -8 -o -w -0 -& -& -o -& -& -8 -o -b -W -M -& -# -8 -& -& -& -8 -& -& -& -& -& -& -* -& -& -M -& -% -C -o -W -o -p -q -p -Y -b -o -& -L -* -8 -8 -M -* -# -w -Z -x -c -O -p -q -d -L -a -k -b -k -h -w -8 -8 -% -% -Q -O -C -Y -# -M -& -8 -M -k -Q -& -o -L -Z -j -v -o -i -\ -n -m -0 -m -q -d -p -b -& -& -8 -8 -& -& -& -o -J -& -8 -& -h -k -m -k -b -h -k -a -h -M -p -d -h -a -# -d -w -m -* -m -p -k -% -& -o -* -& -# -# -# -# -# -* -# -* -a -a -b -b -p -p -q -m -Z -h -* -# -W -o -c -x -8 -@ -@ -@ -W -8 -8 -8 -8 -B -B -# -a -k -h -k -# -M -W -W -W -8 -k -Q -z -" -d -p -k -a -o -* -* -* -# -O -m -Z -O -w -Z -Q -0 -O -o -O -0 -# -# -* -# -# -# -M -M -W -# -* -0 -I -_ -n -~ -Q -b -J -b -b -p -b -M -a -m -C -v -n -c -n -M -W -M -W -W -q -k -k -k -Z -o -b -p -w -m -q -M -& -k -k -h -w -b -z -v -u -Y -Y -z -c -r -j -X -c -o -Z -q -d -d -b -o -M -h -& -p -W -M -& -o -o -* -W -8 -0 -& -M -W -W -& -W -& -W -W -W -& -W -W -& -B -{ -& -W -B -/ -& -& -& -& -* -& -M -M -M -& -& -m -o -W -m -Y -w -m -q -X -c -& -C -a -* -8 -W -# -W -q -q -n -J -m -q -q -C -C -b -h -h -k -k -w -8 -8 -8 -% -% -b -M -m -d -d -o -M -& -W -* -# -8 -k -O -q -{ -n -f -Q -m -u -d -p -q -d -d -M -8 -8 -8 -& -8 -& -& -b -@ -8 -8 -8 -k -h -h -h -k -k -h -d -h -a -k -k -M -o -o -0 -Z -q -b -Y -p -d -& -* -o -k -* -# -# -# -# -# -# -# -b -a -k -k -d -d -p -q -m -L -& -M -# -W -J -\ -u -o -@ -@ -@ -8 -8 -% -# -% -% -& -# -o -a -h -h -k -M -W -# -k -8 -$ -n -v -, -m -p -h -o -o -# -# -# -p -h -m -m -m -Z -m -C -Q -O -o -b -M -# -# -# -* -8 -M -M -M -M -M -M -q -q -h -+ -} -< -+ -/ -L -d -q -p -# -o -m -J -v -n -v -u -# -W -& -W -& -b -k -o -W -8 -# -k -q -w -w -w -# -& -o -h -b -d -L -c -u -t -Y -Y -c -c -r -f -z -# -* -W -d -d -b -k -k -# -* -0 -& -M -W -a -o -* -# -b -w -& -W -& -W -& -& -W -& -& -M -W -W -W -& -% -\ -& -& -& -W -& -& -& -& -& -# -& -& -M -M -M -C -m -W -W -q -c - -r -n -a -p -& -Q -M -8 -M -* -k -M -q -m -x -u -v -O -C -J -m -b -o -k -k -a -w -% -% -% -8 -% -m -k -Z -d -w -w -# -a -o -M -* -W -# -& -U -U -q -U -w -& -8 -B -8 -o -p -p -% -8 -8 -8 -8 -& -8 -& -& -8 -8 -8 -8 -p -b -k -k -k -a -b -b -h -k -k -h -& -M -# -q -m -Z -Y -w -p -O -M -a -o -h -o -* -* -# -* -o -# -k -L -k -b -d -p -d -q -W -k -# -8 -# -M -& -0 -j -m -p -B -$ -@ -o -M -M -W -8 -8 -8 -# -o -o -k -k -k -w -# -# -& -p -0 -u -f -< -d -d -k -* -* -M -& -& -m -b -h -w -p -O -m -8 -W -M -W -C -& -& -M -M -M -8 -M -M -W -W -M -W -p -b -h -b -r -U -Z -q -k -q -Z -Q -* -* -w -L -c -x -v -v -C -k -b -d -k -& -& -& -& -& -o -a -p -w -w -w -a -W -M -h -b -q -X -c -/ -1 -Y -v -v -v -r -r -z -O -* -k -p -k -k -h -h -a -# -L -& -W -M -o -* -# -# -O -M -& -W -* -W -W -M -M -W -& -& -W -8 -W -& -& -8 -& -& -& -& -& -8 -d -& -M -M -& -W -M -M -M -q -m -W -W -& -M -W -^ -u -J -8 -& -% -& -M -W -8 -# -# -Z -O -X -v -u -C -L -Z -w -k -o -k -k -a -k -8 -% -% -% -W -d -q -q -h -h -M -W -# -W -M -& -M -m -& -* -m -m -O -b -% -% -% -8 -% -% -8 -d -p -b -* -& -% -% -8 -8 -8 -8 -8 -8 -k -k -k -b -b -b -b -b -b -b -k -k -8 -M -# -U -L -X -L -O -q -a -d -o -b -a -o -# -* -* -o -* -k -0 -O -k -b -b -d -p -q -a -h -W -W -& -& -M -& -C -J -Y -@ -@ -@ -* -W -& -& -W -8 -W -h -o -o -* -a -k -k -W -# -8 -Z -Q -v -r -/ -* -d -h -o -* -8 -8 -B -a -# -k -k -d -M -& -M -M -a -8 -* -M -W -8 -W -W -W -W -& -W -& -W -W -b -h -k -k -k -q -w -O -b -p -J -Z -B -* -q -Q -z -x -u -v -C -k -k -k -k -& -& -& -& -& -w -o -d -w -m -m -h -W -& -a -a -h -q -U -f -? -X -c -c -x -r -t -U -w -p -& -b -k -h -h -h -M -q -* -W -& -& -& -M -& -0 -& -& -8 -W -W -& -W -& -W -8 -& -& -& -W -W -& -& -& -& -8 -& -& -& -& -w -& -W -W -& -& -& -h -q -h -d -W -W -W -W -W -I -~ -Z -@ -& -Q -M -8 -8 -& -& -k -# -p -Z -m -v -c -Z -m -w -b -h -k -h -h -b -% -% -% -% -d -b -b -O -m -h -M -a -w -p -& -& -p -p -8 -8 -W -8 -8 -8 -% -% -8 -% -% -% -% -d -d -b -d -b -k -b -d -q -w -d -b -* -b -b -b -b -b -d -k -b -p -k -b -d -8 -& -W -k -w -q -0 -0 -b -b -* -* -a -a -a -a -* -o -o -k -p -m -Z -h -b -k -d -p -m -a -k -W -a -8 -& -L -@ -z -Q -0 -@ -B -$ -& -M -& -p -a -W -% -o -o -* -o -a -k -p -M -o -M -# -O -x -n -] -q -b -b -a -8 -B -8 -h -h -o -w -# -o -M -p -h -o -o -M -B -8 -W -# -8 -M -W -M -M -M -W -M -& -b -a -* -M -M -# -a -b -a -o -k -q -O -* -d -0 -c -j -u -v -C -q -h -h -h -& -& -8 -& -8 -W -o -b -q -m -m -b -& -8 -o -a -h -a -z -/ -v -c -c -u -j -; -f -| -q -C -p -k -h -h -k -h -W -p -W -h -W -& -W -W -@ -# -& -W -W -& -W -W -8 -& -8 -& -& -M -& -& -& -L -& -& -8 -h -0 -b -& -& -& -W -W -& -& -& -W -o -a -o -b -& -M -M -W -& -; -1 -r -X -& -Q -& -& -W -# -8 -o -o -a -Z -m -w -c -X -Z -k -o -d -k -h -k -m -% -8 -% -% -k -q -d -w -q -o -a -h -p -m -d -q -d -q -8 -% -8 -% -% -8 -8 -% -8 -8 -% -8 -% -d -w -p -d -k -q -d -p -b -d -p -b -& -8 -8 -8 -8 -8 -8 -% -B -8 -M -o -b -8 -8 -M -b -U -n -X -Z -d -q -8 -b -w -a -o -o -o -* -d -p -q -U -O -0 -h -b -p -q -m -k -h -& -* -& -% -n -a -n -t -J -@ -% -@ -$ -b -8 -8 -% -8 -h -h -* -a -a -o -a -d -W -& -o -# -M -p -v -] -o -b -M -8 -% -B -% -k -k -# -# -# -a -# -o -o -M -# -k -8 -% -M -b -O -Q -m -L -Z -O -Z -C -o -M -M -M -M -M -* -h -d -q -p -Z -O -v -* -b -O -Y -x -n -v -n -Y -$ -h -a -8 -8 -8 -8 -& -& -* -b -q -m -m -q -# -8 -* -a -a -Y -c -\ -Y -j -_ -> -" -. -U -j -p -W -k -h -Z -0 -O -o -W -h -M -h -* -# -& -& -m -& -W -& -W -& -w -O -& -W -# -Z -k -& -& -W -& -p -% -& -o -q -q -k -o -& -& -& -& -& -W -% -X -o -a -k -a -8 -b -W -W -W -u -j -t -( -# -8 -& -U -& -% -& -8 -d -p -0 -m -Z -p -U -C -b -# -h -k -h -k -p -% -% -8 -8 -k -p -d -p -q -h -w -Z -q -d -p -p -q -8 -% -8 -% -8 -% -% -8 -8 -% -8 -8 -% -% -p -p -d -p -d -p -p -p -d -p -p -p -% -% -8 -8 -8 -8 -8 -8 -8 -8 -8 -8 -% -d -b -m -k -p -z -Q -p -b -Q -& -b -M -a -o -a -a -a -p -w -m -m -X -L -b -d -q -q -w -w -M -& -# -& -W -x -L -| -r -n -@ -% -@ -$ -$ -8 -& -M -% -m -k -h -a -o -a -a -h -# -W -& -& -# -W -n -r -o -o -8 -8 -% -M -8 -* -8 -8 -% -% -B -% -8 -B -% -8 -8 -# -J -Q -C -J -a -Q -C -O -0 -Q -0 -M -* -# -# -* -* -* -b -q -m -O -0 -L -x -o -b -O -Y -n -u -c -n -h -$ -a -a -8 -8 -8 -8 -8 -8 -# -k -q -m -m -w -W -& -o -a -* -X -c -\ -[ -( -l -` -. -" -b -@ -w -# -q -o -8 -8 -M -8 -d -W -W -& -# -M -M -8 -d -& -W -& -& -Z -W -& -8 -& -& -& -% -q -& -& -& -r -8 -8 -C -q -k -h -a -& -& -& -& -& -0 -k -p -a -o -a -d -& -* -W -& -W -( -/ -j -t -B -& -& -J -% -W -& -o -Z -Y -O -Z -w -Z -q -C -b -b -b -h -k -h -w -b -p -d -# -d -p -d -d -p -p -a -w -w -w -d -p -p -8 -% -8 -% -% -8 -8 -% -8 -% -8 -% -8 -h -d -p -q -p -p -p -d -q -p -d -p -q -B -8 -% -% -% -8 -8 -8 -8 -8 -8 -8 -% -b -d -m -m -p -Y -m -* -m -h -M -m -& -o -B -B -B -8 -8 -& -& -o -* -b -Y -c -c -c -u -n -u -o -M -& -& -W -u -! -_ -_ -@ -B -@ -@ -8 -M -W -8 -$ -m -h -M -& -8 -@ -8 -# -M -# -a -# -M -8 -$ -c -Z -w -b -a -k -h -% -8 -8 -8 -& -W -& -& -W -M -W -& -h -C -U -J -Y -u -Z -f -j -j -x -x -j -0 -w -h -# -* -h -q -0 -L -J -J -J -Q -c -a -b -O -J -v -v -c -a -0 -* -h -h -% -8 -8 -8 -8 -8 -p -k -q -Z -Z -m -M -8 -o -a -C -X -r -j -} -~ -` -^ -: -X -M -Z -& -m -p -Z -& -W -W -W -q -& -W -W -# -M -M -m -& -& -W -W -m -% -B -B -M -% -& -W -W -& -q -& -& -a -& -& -q -p -k -k -8 -& -& -& -& -& -w -p -a -a -a -p -o -a -o -W -& -% -c -t -f -j -J -8 -m -# -h -8 -& -8 -u -Y -Z -O -m -Z -b -w -k -Z -b -k -b -p -O -b -b -b -% -% -% -B -% -M -p -p -q -w -q -p -q -p -8 -8 -8 -% -8 -8 -% -8 -% -8 -% -8 -% -p -d -p -p -q -p -p -p -d -p -q -q -q -% -% -8 -% -% -% -8 -% -8 -8 -8 -8 -% -b -q -# -w -k -0 -o -o -k -a -# -a -8 -o -B -B -8 -8 -8 -W -o -# -d -d -n -X -X -u -u -z -Y -a -W -8 -p -B -J -< -! -[ -$ -@ -@ -@ -8 -M -& -8 -8 -& -@ -8 -8 -8 -8 -B -* -# -o -b -* -M -# -8 -C -w -p -a -a -p -a -& -8 -& -W -M -M -# -# -* -# -o -# -Y -C -X -n -x -) -n -f -t -r -r -r -r -L -L -L -L -C -C -J -J -J -Y -X -Y -0 -z -k -d -O -C -z -c -b -a -# -0 -$ -o -8 -8 -8 -8 -8 -% -p -k -q -Z -m -q -* -& -} -r -} -m -j -\ -t -J -, -" -I -; -8 -W -M -w -b -0 -W -W -& -M -w -W -& -W -# -M -W -0 -& -& -W -b -# -B -B -B -* -8 -% -& -8 -& -& -q -& -& -& -& -k -a -# -M -B -& -& -@ -8 -& -d -a -a -o -Z -a -a -a -a -W -0 -m -L -f -f -j -( -M -0 -& -J -8 -& -M -r -U -C -L -O -d -d -Z -0 -p -k -a -d -Z -Z -b -b -b -% -% -% -% -% -% -% -8 -% -8 -B -& -a -m -% -8 -% -8 -8 -% -B -% -8 -% -% -% -% -d -d -d -d -d -p -q -p -d -q -q -q -q -8 -8 -8 -8 -8 -& -% -% -& -8 -% -% -B -p -8 -# -# -o -d -& -* -# -o -o -# -a -M -B -8 -8 -8 -8 -* -a -* -k -q -X -v -r -x -c -c -c -a -B -8 -r -X -J -> -+ -+ -$ -$ -@ -@ -W -J -# -& -# -8 -% -8 -8 -8 -% -% -B -B -& -M -M -# -% -j -m -Z -b -b -q -q -k -W -W -M -# -* -o -o -o -k -p -h -q -u -r -r -/ -\ -/ -x -r -r -n -n -X -u -Z -p -Z -m -Z -0 -Q -Q -Q -Q -C -C -0 -n -q -p -Z -L -U -X -a -x -J -C -m -a -W -M -M -M -W -& -h -b -k -C -p -m -k -. -< -i -! -x -f -j -f -" -" -` -^ -X -M -w -k -p -k -0 -& -& -& -W -q -8 -& -* -M -M -% -w -& -W -& -C -8 -B -B -W -& -& -& -& -p -& -$ -% -8 -& -8 -& -w -M -M -o -@ -& -W -B -k -h -* -o -a -C -a -a -a -a -a -a -b -w -C -r -x -t -v -p -d -& -Y -B -# -b -n -q -L -z -v -u -L -h -q -q -k -h -b -d -O -w -p -B -% -% -% -% -% -% -% -% -% -8 -8 -& -& -d -Z -m -q -m -b -# -8 -% -% -% -% -% -% -d -w -p -p -d -d -p -d -w -q -q -p -w -8 -8 -8 -8 -& -8 -8 -% -% -8 -8 -8 -% -p -M -k -o -W -B -* -# -L -* -* -& -8 -o -8 -8 -8 -8 -& -q -a -p -b -q -z -z -v -c -x -b -% -o -8 -& -# -j -# -$ -8 -w -@ -$ -@ -@ -M -J -M -8 -M -p -/ -f -X -M -& -% -% -% -& -# -M -C -O -z -C -p -p -p -p -w -W -M -# -* -o -a -a -b -q -b -Y -z -X -\ -\ -/ -f -/ -r -z -n -u -v -u -z -U -p -w -m -Z -Z -O -0 -Q -0 -0 -J -O -Z -x -Z -q -Z -Q -Y -a -u -X -U -C -Q -d -a -a -h -h -a -o -@ -k -k -q -m -p -p -$ -l -; -n -v -u -j -Y -` -^ -" -. -L -Y -q -h -d -b -h -8 -W -& -& -& -& -W -W -& -8 -O -& -W -# -p -W -W -B -W -W -W -& -& -& -& -$ -@ -& -& -# -& -8 -Z -k -# -$ -% -& -& -@ -8 -# -o -a -Z -a -& -a -h -h -a -b -b -d -Q -x -x -n -x -z -p -8 -% -W -k -Q -c -p -k -b -d -d -d -p -q -Z -k -b -b -k -0 -d -b -% -% -% -% -% -% -% -% -% -% -8 -% -8 -& -m -Z -q -p -q -q -q -p -p -p -d -o -& -B -p -d -d -p -p -d -p -d -b -q -q -q -q -8 -% -8 -8 -8 -8 -% -% -% -8 -8 -% -B -8 -b -p -* -* -M -# -M -Z -M -# -& -M -k -8 -8 -8 -& -M -a -b -b -b -p -v -z -u -r -% -o -# -h -& -8 -% -& -& -& -8 -0 -$ -@ -@ -@ -& -d -M -M -M -\ -f -\ -r -X -W -& -8 -b -# -# -& -X -Z -X -0 -q -b -q -w -d -M -# -* -o -a -k -q -p -j -x -x -v -/ -| -/ -f -j -r -Z -z -z -u -v -v -z -w -p -q -m -Z -Z -Z -0 -0 -Q -0 -Q -O -Z -n -u -m -w -Z -+ -X -# -X -Y -U -C -p -Z -0 -j -! -< -~ -j -q -q -w -w -d -Z -k -I -I -p -c -c -j -< -^ -^ -, -& -B -Q -p -h -b -k -k -h -& -W -o -8 -M -& -W -& -o -0 -& -W -W -Q -% -& -& -M -W -& -B -8 -& -& -& -B -% -& -b -W -8 -& -q -m -h -8 -& -8 -& -# -# -W -8 -o -a -W -J -h -a -* -a -# -Q -X -I -! -+ -( -m -B -& -& -B -# -Q -x -m -p -q -d -m -w -p -p -k -k -d -d -w -J -b -d -8 -8 -% -8 -& -& -W -M -p -p -d -p -p -h -w -k -b -q -Z -0 -L -C -0 -p -d -b -d -p -8 -% -8 -% -B -@ -M -h -p -q -m -p -q -% -% -8 -8 -8 -% -% -8 -% -% -% -% -& -q -m -* -W -w -# -# -a -O -* -& -M -* -n -8 -8 -8 -M -o -k -b -p -b -k -U -v -z -v -a -8 -* -k -8 -B -k -& -8 -$ -J -l -$ -$ -@ -@ -8 -& -8 -8 -% -v -t -( -1 -/ -m -8 -8 -q -M -M -* -C -m -n -0 -q -p -q -O -a -* -a -o -o -w -q -\ -t -j -n -z -J -{ -) -j -r -x -n -Z -X -c -c -u -c -X -q -d -p -q -Z -Z -O -0 -O -Q -C -C -Q -Z -n -c -U -m -m -n -h -z -U -X -z -z -+ -i -l -i -; -` -. - -d -J -Z -b -q -0 -a -, -i -h -z -X -r -I -` -' -z -M -8 -Q -d -a -a -b -k -d -a -& -d -& -& -W -M -W -W -0 -& -& -W -0 -% -% -& -& -W -& -& -& -& -& -& -B -B -& -w -W -B -& -& -& -& -& -& -& -# -M -W -h -h -W -o -* -o -a -a -d -a -a -B -z -1 -< -~ -~ -] -Q -& -0 -M -a -X -c -z -0 -w -q -q -b -b -b -p -k -m -m -w -O -d -W -* -& -& -& -W -# -# -# -b -h -* -o -a -o -Z -L -J -U -J -J -Y -O -q -p -d -k -m -w -M -@ -B -% -% -8 -% -8 -% -% -% -% -B -b -k -& -B -B -% -8 -% -% -% -% -% -w -b -Z -d -W -m -m -C -* -M -M -8 -& -q -8 -8 -& -W -o -k -b -b -b -b -b -w -c -c -v -n -% -M -h -& -k -a -W -j -< -_ -_ -$ -@ -@ -@ -8 -8 -8 -% -$ -n -r -( -1 -1 -] -b -h -# -M -W -M -% -Z -u -L -b -w -m -0 -* -o -p -a -q -) -/ -t -j -v -X -J -O -f -/ -r -r -x -u -X -z -c -X -c -c -u -d -d -p -q -w -w -m -Q -C -Y -f -t -t -z -L -C -Q -O -v -u -a -X -X -c -c -u -; -! -^ -' -. -' -. -. -q -b -k -h -j -w -w -. -) -h -c -X -( -I -^ -: -B -# -W -Y -b -h -o -p -k -a -o -W -w -& -& -& -& -8 -& -O -& -& -8 -a -& -W -8 -& -W -& -& -& -& -8 -& -8 -% -& -@ -% -B -8 -& -& -8 -& -@ -# -8 -# -M -& -* -# -o -* -h -k -U -k -a -o -h -C -j -l -< -+ -] -| -L -8 -& -J -0 -n -Z -X -O -p -p -p -w -Z -p -0 -m -p -w -b -b -# -h -k -o -M -W -M -k -h -a -a -a -a -k -d -Y -z -u -x -x -x -n -u -r -\ -t -j -f -L -# -B -% -8 -% -a -M -% -% -% -8 -8 -8 -p -p -p -p -p -p -q -p -p -d -b -* -8 -m -& -8 -k -o -o -h -o -# -* -k -o -k -C -& -W -* -w -h -b -b -b -b -b -q -v -c -v -v -k -M -M -% -u -a -0 -t -> -+ -\ -$ -@ -@ -@ -8 -B -% -B -M -M -z -f -{ -} -] -~ -C -* -# -M -W -W -M -r -Q -p -w -k -h -a -d -\ -| -/ -f -x -n -X -U -Q -0 -m -\ -\ -j -n -u -u -v -v -U -0 -Z -m -q -J -Q -Q -X -L -J -c -n -x -v -/ -x -/ -Y -U -J -J -z -f -f -X -X -X -c -u -r -` -. -. -. -. -. -. - -p -k -b -b -h -m -k -# -k -o -c -c -- -I -: -b -u -Y -B -O -b -h -a -d -a -a -o -& -w -& -W -W -& -8 -8 -L -# -8 -# -% -8 -8 -W -& -W -W -8 -& -& -m -& -& -& -# -@ -B -B -B -8 -& -8 -@ -p -% -M -M -w -# -8 -# -$ -@ -q -L -b -o -a -* -X -Q -f -> -> -? -+ -) -Y -& -8 -U -m -q -Z -O -Z -w -m -Z -Z -O -b -p -p -p -q -q -w -o -a -d -k -a -# -# -* -h -o -h -a -o -* -Z -Q -J -c -n -x -j -x -n -r -j -/ -\ -\ -X -z -X -X -Q -# -B -8 -% -% -a -% -% -% -w -p -d -b -d -p -q -q -d -p -d -b -p -% -& -O -d -h -a -p -* -% -d -% -o -b -h -8 -W -h -o -b -k -k -k -b -w -q -u -v -n -v -c -n -@ -8 -J -a -r -\ -- -- -r -W -@ -@ -$ -d -C -& -W -M -u -X -v -/ -{ -? -l -; -# -b -M -# -o -M -( -U -q -h -h -a -Z -1 -( -\ -t -f -t -r -f -r -x -r -Z -m -Z -Z -m -m -m -q -O -p -p -p -p -p -U -O -0 -Q -Y -c -n -u -n -/ -/ -f -f -J -U -U -J -C -/ -Y -Y -X -z -c -n -x -` -. -. -. -. -. -. - -q -k -d -d -p -0 -m -a -b -a -c -c -_ -~ -" -U -X -U -C -Z -b -h -a -d -a -* -* -& -m -& -& -& -8 -B -B -Q -W -& -p -8 -8 -8 -8 -& -& -# -M -8 -& -m -& -& -W -M -@ -@ -@ -q -k -& -% -p -& -8 -M -k -M -M -# -# -$ -# -a -8 -q -a -a -o -Y -0 -j -i -! -1 -[ -( -C -& -& -@ -U -& -J -Z -Z -w -m -m -q -b -k -d -p -q -p -b -b -o -h -k -h -a -o -* -M -W -o -o -d -m -q -U -U -X -v -c -n -n -n -n -f -j -\ -/ -( -c -z -z -z -c -z -X -X -L -b -@ -8 -B -* -w -m -q -p -d -p -d -p -w -p -d -b -Z -% -O -Z -q -O -p -p -h -h -b -B -o -Q -O -Q -n -X -c -c -v -c -Y -z -X -c -p -p -q -p -p -m -0 -k -8 -& -m -w -r -x -m -o -$ -@ -$ -\ -( -$ -8 -? -{ -8 -? -[ -] -! -+ -~ -# -W -M -M -W -W -x -J -# -# -h -< -l -> -< -+ -+ -) -t -t -\ -\ -j -/ -Q -Q -0 -Z -m -m -q -p -d -b -d -b -b -Z -L -Z -Z -L -0 -c -v -c -X -f -r -f -f -J -U -U -Y -\ -t -k -X -X -c -v -n -n - -. - -. -. -. - -m -q -p -p -d -q -0 -Q -k -w -a -X -| -> -i -< -b -Y -O -U -Z -b -k -o -o -a -& -& -W -m -& -& -W -B -B -B -m -& -& -w -8 -8 -8 -& -& -M -M -# -M -& -w -W -& -8 -& -@ -@ -@ -B -@ -* -% -% -8 -8 -& -M -M -M -M -# -o -a -p -a -* -& -b -W -0 -0 -Y -! -> -\ -( -/ -\ -8 -q -$ -J -M -k -Z -w -p -m -Z -b -k -b -p -p -w -d -# -Z -Q -Q -L -L -C -O -b -o -o -o -h -M -h -o -U -C -J -X -r -u -u -c -n -x -r -f -/ -| -X -z -z -c -z -z -c -c -z -c -z -z -0 -W -p -m -p -b -d -p -p -q -p -p -d -d -p -& -m -Z -C -C -m -k -k -h -# -M -k -& -Z -C -J -z -Y -z -U -U -X -U -c -v -p -q -w -q -w -w -M -b -h -$ -m -O -r -u -p -q -@ -@ -$ -) -\ -| -8 -$ -1 -M -{ -] -} -x -} -I -o -W -M -# -* -M -x -0 -W -m -+ -I -l -l -! -< -- -) -| -| -( -| -\ -t -O -O -Z -w -m -q -d -p -h -a -k -h -k -C -q -q -w -0 -X -Y -Y -Y -Y -x -v -t -j -U -U -U -L -| -j -w -X -z -c -c -x -d -^ -. -. - -. - -. -0 -O -q -p -p -w -0 -C -p -q -h -J -< -) -} -Q -Y -z -% -J -C -0 -O -p -d -O -& -& -& -w -& -& -M -B -B -B -m -& -& -m -& -& -W -& -& -8 -8 -& -# -& -Q -& -W -8 -& -@ -@ -@ -B -B -B -B -B -8 -& -W -M -M -M -# -# -a -p -a -# -a -q -a -# -b -O -U -t -l -) -\ -) -| -o -1 -[ -C -m -8 -b -q -d -q -k -k -k -b -h -q -b -a -o -Q -0 -L -C -C -L -L -Q -Q -0 -L -Q -O -k -k -C -z -U -z -v -n -x -r -x -x -f -f -/ -| -X -z -z -z -c -c -c -c -c -c -c -c -c -X -) -j -L -b -d -w -q -q -p -p -d -d -q -# -p -Z -m -h -d -p -# -h -# -W -d -8 -L -J -U -Y -Y -z -z -X -Y -z -X -v -q -q -w -w -q -Z -& -p -& -@ -w -0 -x -v -p -L -@ -@ -@ -j -| -{ -8 -W -W -* -} -[ -] -f -( -# -M -W -# -b -o -& -x -# -j -} -: -: -; -! -> -_ -? -) -\ -) -\ -/ -f -v -Z -m -m -w -m -q -b -b -h -h -o -o -h -U -p -p -w -L -Y -X -U -J -v -r -X -x -j -U -Y -U -| -\ -n -Y -X -z -z -c -j -" -' -. -. - - - -' -C -Z -w -q -p -w -Q -L -m -b -d -U -- -| -{ -8 -W -\ -Z -f -X -Q -m -q -a -Z -& -& -W -q -& -W -W -B -$ -8 -Z -& -& -d -& -& -& -W -& -8 -8 -8 -8 -M -C -& -W -8 -W diff --git a/yosible/inventory.py b/yosible/inventory.py new file mode 100644 index 00000000..268d97a6 --- /dev/null +++ b/yosible/inventory.py @@ -0,0 +1,45 @@ +# -*- coding:utf-8 -*- +# !/usr/bin/env python +# Time 17-11-6 +# Author Yo +# Email YoLoveLife@outlook.com +from ansible.inventory import Host,Group,Inventory +from ansible.parsing.dataloader import DataLoader +from ansible.vars import VariableManager +class YoHost(Host): + def __init__(self,host): + self.host = host + self.name = host.service_ip + self.port = host.sshport + super(YoHost,self).__init__(self.name,self.port) + self.set_all_variable() + + def set_all_variable(self): + self.set_variable('ansible_host', self.name) + self.set_variable('ansible_port', self.port) + self.set_variable('ansible_user', self.host.normal_user) + # self.set_variable('ansible_ssh_pass', self.host.sshpasswd) #密码登陆 + self.set_variable("ansible_become", True) + self.set_variable("ansible_become_method", 'sudo') + self.set_variable("ansible_become_user", 'root') + self.set_variable("ansible_become_pass", self.host.sshpasswd) + + +class YoInventory(Inventory): + def __init__(self,host_list): + if host_list is None: + host_list = [] + else: + self.host_list = host_list + self.loader = DataLoader() + self.variable_manager = VariableManager() + super(YoInventory,self).__init__(self.loader,self.variable_manager,self.host_list) + + def parse_inventory(self,host_list): + all = Group('all') + for host in host_list: + h = YoHost(host) + all.add_host(h) + self.groups = dict(all=all) + + diff --git a/yosible/run/playbook.py b/yosible/run/playbook.py index f3820a6d..f41e313b 100644 --- a/yosible/run/playbook.py +++ b/yosible/run/playbook.py @@ -20,6 +20,7 @@ def pop_tasks(self): return self.tasks.pop_tasks() def pop_playbook(self): + print(dict(name=self.name,hosts=self.hosts,gather_facts=self.gather_facts,tasks=self.tasks.pop_tasks())) return dict(name=self.name,hosts=self.hosts,gather_facts=self.gather_facts,tasks=self.tasks.pop_tasks()) if __name__ == "__main__": diff --git a/yosible/runner.py b/yosible/runner.py new file mode 100644 index 00000000..40625270 --- /dev/null +++ b/yosible/runner.py @@ -0,0 +1,150 @@ +# -*- coding:utf-8 -*- +# !/usr/bin/env python +# Time 17-11-7 +# Author Yo +# Email YoLoveLife@outlook.com +from collections import namedtuple +import ansible.constants as C +from ansible.vars import VariableManager +from ansible.parsing.dataloader import DataLoader +from ansible.executor.playbook_executor import PlaybookExecutor +from ansible.utils.vars import load_extra_vars +from ansible.utils.vars import load_options_vars +from yosible.inventory import YoHost,YoInventory +from ansible.playbook.play import Play +from ansible.executor.task_queue_manager import TaskQueueManager + +class AdHocRunner(object): + Options = namedtuple("Options", [ + 'connection', 'module_path', 'private_key_file', "remote_user", + 'timeout', 'forks', 'become', 'become_method', 'become_user', + 'check', 'extra_vars', + ] + ) + + def __init__(self, + hosts=C.DEFAULT_HOST_LIST, + forks=C.DEFAULT_FORKS, # 5 + timeout=C.DEFAULT_TIMEOUT, # SSH timeout = 10s + remote_user=C.DEFAULT_REMOTE_USER, # root + module_path=None, # dirs of custome modules + connection_type="smart", + become=None, + become_method=None, + become_user=None, + check=False, + passwords=None, + extra_vars=None, + private_key_file=None, + gather_facts='no'): + self.pattern = '' + self.variable_manager = VariableManager() + self.loader = DataLoader() + self.gather_facts = gather_facts + self.options = self.Options( + connection=connection_type, + timeout=timeout, + module_path=module_path, + forks=forks, + become=become, + become_method=become_method, + become_user=become_user, + check=check, + remote_user=remote_user, + extra_vars=extra_vars or [], + private_key_file=private_key_file, + ) + self.variable_manager.extra_vars = load_extra_vars(self.loader, + options=self.options) + self.variable_manager.options_vars = load_options_vars(self.options) + self.passwords = passwords or {} + self.inventory = YoInventory(hosts) + self.variable_manager.set_inventory(self.inventory) + self.tasks = [] + self.play_source = None + self.play = None + self.runner = None + + def set_callback(self,callback): + self.results_callback=callback + + @staticmethod + def check_module_args(module_name, module_args=''): + if module_name in C.MODULE_REQUIRE_ARGS and not module_args: + err = "No argument passed to '%s' module." % module_name + print(err) + return False + return True + + def run(self, task_tuple, pattern='all', task_name='Ansible Ad-hoc'): + """ + :param task_tuple: (('shell', 'ls'), ('ping', '')) + :param pattern: + :param task_name: + :return: + """ + for task in task_tuple: + if not self.check_module_args(task.module,task.args): + return + self.tasks.append( + dict(action=dict( + module=task.module, + args=task.args, + )) + ) + + self.play_source = dict( + name=task_name, + hosts=pattern, + gather_facts=self.gather_facts, + tasks=self.tasks + ) + + self.play = Play().load( + self.play_source, + variable_manager=self.variable_manager, + loader=self.loader, + ) + + self.runner = TaskQueueManager( + inventory=self.inventory, + variable_manager=self.variable_manager, + loader=self.loader, + options=self.options, + passwords=self.passwords, + stdout_callback=self.results_callback, + ) + + # if not self.inventory.list_hosts("all"): + # raise AnsibleError("Inventory is empty.") + # + # if not self.inventory.list_hosts(self.pattern): + # raise AnsibleError( + # "pattern: %s dose not match any hosts." % self.pattern) + + try: + self.runner.run(self.play) + finally: + if self.runner: + self.runner.cleanup() + if self.loader: + self.loader.cleanup_all_tmp_files() + + def clean_result(self): + """ + :return: { + "success": ['hostname',], + "failed": [('hostname', 'msg'), {}], + } + """ + result = {'success': [], 'failed': []} + for host in self.results_callback.result_q['contacted']: + result['success'].append(host) + + for host, msgs in self.results_callback.result_q['dark'].items(): + msg = '\n'.join(['{} {}: {}'.format( + msg.get('module_stdout', ''), + msg.get('invocation', {}).get('module_name'), + msg.get('msg', '')) for msg in msgs]) + result['failed'].append((host, msg)) + return result \ No newline at end of file From cf8c0cc219030732c781f435c6946f82dbe7636a Mon Sep 17 00:00:00 2001 From: YoLoveLife Date: Thu, 9 Nov 2017 17:37:42 +0800 Subject: [PATCH 2/3] reload new-api --- .idea/devEops.iml | 2 + .idea/misc.xml | 3 + .idea/workspace.xml | 1010 ++++++++++++++-------------- apps/deveops/celery.py | 2 +- event/allevent.py | 16 +- executor/dispatch/dispatchpb.py | 2 +- manage.py | 22 - modules/__init__.py | 5 - modules/personblock.py | 52 -- modules/personbook.py | 17 - modules/persontask.py | 13 - playbook/base_pk_install.yml | 21 - playbook/mysql_pb_conf.yml | 17 - playbook/mysql_pb_install.yml | 32 - playbook/mysql_pb_remove.yml | 10 - playbook/redis_pb_conf.yml | 23 - playbook/redis_pb_install.yml | 19 - playbook/redis_pb_remove.yml | 10 - scripts/README.md | 5 - scripts/java/java_install.sh | 83 --- scripts/java/java_remove.sh | 57 -- scripts/mysql/mysql_answer.exp | 23 - scripts/mysql/mysql_control.sh | 46 -- scripts/mysql/mysql_install.sh | 109 ---- scripts/mysql/mysql_remove.sh | 75 --- scripts/mysql/mysql_test.sh | 10 - scripts/nginx/nginx_control.sh | 65 -- scripts/nginx/nginx_install.sh | 93 --- scripts/nginx/nginx_remove.sh | 56 -- scripts/redis/redis_control.sh | 36 - scripts/redis/redis_install.sh | 86 --- scripts/redis/redis_remove.sh | 68 -- scripts/redis/redis_test.sh | 10 - scripts/tomcat/tomcat_control.sh | 37 -- scripts/tomcat/tomcat_install.sh | 74 --- scripts/tomcat/tomcat_remove.sh | 59 -- scripts/tomcat/tomcat_test.sh | 10 - template/__init__.py | 6 - template/my.j2 | 154 ----- template/nginx.j2 | 117 ---- template/redis/redis2.6.17.j2 | 595 ----------------- template/redis/redis3.0.7.j2 | 941 -------------------------- template/redis/redis3.2.4.j2 | 1049 ----------------------------- template/redis/redis3.2.6.j2 | 1050 ------------------------------ template/setenv.j2 | 8 - template/test.j2 | 1 - test/__init__.py | 0 test/rq.py | 2 - test/start.py | 29 - yosible/inventory.py | 4 +- yosible/runner.py | 20 +- 51 files changed, 566 insertions(+), 5688 deletions(-) delete mode 100644 manage.py delete mode 100644 modules/__init__.py delete mode 100644 modules/personblock.py delete mode 100644 modules/personbook.py delete mode 100644 modules/persontask.py delete mode 100644 playbook/base_pk_install.yml delete mode 100644 playbook/mysql_pb_conf.yml delete mode 100644 playbook/mysql_pb_install.yml delete mode 100644 playbook/mysql_pb_remove.yml delete mode 100644 playbook/redis_pb_conf.yml delete mode 100644 playbook/redis_pb_install.yml delete mode 100644 playbook/redis_pb_remove.yml delete mode 100644 scripts/README.md delete mode 100644 scripts/java/java_install.sh delete mode 100644 scripts/java/java_remove.sh delete mode 100644 scripts/mysql/mysql_answer.exp delete mode 100644 scripts/mysql/mysql_control.sh delete mode 100644 scripts/mysql/mysql_install.sh delete mode 100644 scripts/mysql/mysql_remove.sh delete mode 100644 scripts/mysql/mysql_test.sh delete mode 100644 scripts/nginx/nginx_control.sh delete mode 100644 scripts/nginx/nginx_install.sh delete mode 100644 scripts/nginx/nginx_remove.sh delete mode 100644 scripts/redis/redis_control.sh delete mode 100644 scripts/redis/redis_install.sh delete mode 100644 scripts/redis/redis_remove.sh delete mode 100644 scripts/redis/redis_test.sh delete mode 100644 scripts/tomcat/tomcat_control.sh delete mode 100644 scripts/tomcat/tomcat_install.sh delete mode 100644 scripts/tomcat/tomcat_remove.sh delete mode 100644 scripts/tomcat/tomcat_test.sh delete mode 100644 template/__init__.py delete mode 100644 template/my.j2 delete mode 100644 template/nginx.j2 delete mode 100644 template/redis/redis2.6.17.j2 delete mode 100644 template/redis/redis3.0.7.j2 delete mode 100644 template/redis/redis3.2.4.j2 delete mode 100644 template/redis/redis3.2.6.j2 delete mode 100644 template/setenv.j2 delete mode 100644 template/test.j2 delete mode 100644 test/__init__.py delete mode 100644 test/rq.py delete mode 100644 test/start.py diff --git a/.idea/devEops.iml b/.idea/devEops.iml index 758f1604..adfe437a 100644 --- a/.idea/devEops.iml +++ b/.idea/devEops.iml @@ -33,6 +33,8 @@ diff --git a/.idea/misc.xml b/.idea/misc.xml index ee14b86b..a542795a 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -1,4 +1,7 @@ + + \ No newline at end of file diff --git a/.idea/workspace.xml b/.idea/workspace.xml index 0a7ca996..93c72323 100644 --- a/.idea/workspace.xml +++ b/.idea/workspace.xml @@ -1,8 +1,8 @@ - - + + @@ -15,46 +15,60 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - + + + + + + + + + + + + @@ -76,6 +96,7 @@ + @@ -84,63 +105,50 @@ - - - - - - - - - - - - - - + - t - a - adhoc - task_remove - queryset - group - host_group + TIME + ENVIRONMENT + scge + scg + sc + s + sche + crontab + CELERY_ACCEPT_CONTENT + c + cs + csrf + FormView + parse_inventory + Play + task_tuple + result_q + YoHost + YoInventory + all_vars + variable_manager + tasks + task_name hosts - groups - task_tb - author_name - AuthorityGroupView - User - Group - PermissionsMixin - backend - BACKEND - ExtendUser - form - Storage - group_form - datadir - u'operation' - date_joined - maker - ManyToManyField - ForeignKey - kwargs - str - print + script_maker + ext_vars + new_vars + pb + pattern + extra_vars data['data'] @@ -153,64 +161,64 @@ @@ -240,6 +248,8 @@ + + @@ -262,43 +272,7 @@ - - - - - - - - - - - - - - - - - - - @@ -312,53 +286,20 @@ - - - @@ -367,6 +308,7 @@ + + + + - - - + + + - - - @@ -404,99 +346,102 @@ - - + + - + - + - + - + + + + - - - - - + + + + + - - - - - + + + + + @@ -732,20 +677,6 @@ + + + @@ -1011,52 +1050,32 @@ - - - - + + + + + - + + - + + - - - - - - - - - - - - - - - - - - - - - - - - - - + + + - - - - - - - - - - - - - - @@ -1100,7 +1105,21 @@ - @@ -1125,16 +1144,6 @@ 36 - - - - - - - - - - - - - - + - - + + - - - - - - - - - - - + - - + + - + - - - - - + + + - + @@ -1225,14 +1263,6 @@ - - - - - - - - @@ -1240,55 +1270,59 @@ - + - + - + - - + + - + - - - + + + + + - + - - + + - + - - - + + + + + - + - - + + - + @@ -1296,23 +1330,23 @@ - + - + - + - - + + - + @@ -1320,7 +1354,7 @@ - + @@ -1328,81 +1362,79 @@ - + - - + + - + - - + + - + - + - + - - + + - + - - + + - + - - + + - + - - + + - + - - - - - + + + - + - - + + - + @@ -1410,43 +1442,41 @@ - + - - + + - + - - + + - + - - - - - + + + - + - - + + - + @@ -1454,39 +1484,57 @@ - + - - + + - + - - + + + + + + + + + + + + - + - + - + + + + + + + + + - - + + - + @@ -1494,100 +1542,112 @@ - + - - + + - + - - + + - + - - + + - + - - + + - + - - + + - + - - + + - + - - + + - + - - - + + + + + - + - - + + - + - - + + - + - - + + + + + + + + + + + + - + - - + + - + diff --git a/apps/deveops/celery.py b/apps/deveops/celery.py index 6fc42845..f02aeeac 100644 --- a/apps/deveops/celery.py +++ b/apps/deveops/celery.py @@ -27,4 +27,4 @@ def ddr(): import time host = Host.objects.all()[0] host.info = str(time.time()) - host.save() \ No newline at end of file + host.save() diff --git a/event/allevent.py b/event/allevent.py index 30937a54..8cb7bf97 100644 --- a/event/allevent.py +++ b/event/allevent.py @@ -3,14 +3,14 @@ # Time 08 11:35 # Author Yo # Email YoLoveLife@outlook.com -from executor.base import basepb -from executor.mysql import mysqlpb -from executor.java import javapb -from executor.nginx import nginxpb -from executor.tomcat import tomcatpb -from executor.redis import redispb -from executor.base import shellpb -from executor.dispatch import dispatchpb +from _executor.base import basepb +from _executor.mysql import mysqlpb +from _executor.java import javapb +from _executor.nginx import nginxpb +from _executor.tomcat import tomcatpb +from _executor.redis import redispb +from _executor.base import shellpb +from _executor.dispatch import dispatchpb ''' info:基础配置 包含gcc make libio libselinux except ''' diff --git a/executor/dispatch/dispatchpb.py b/executor/dispatch/dispatchpb.py index 09271b17..a94af7f2 100644 --- a/executor/dispatch/dispatchpb.py +++ b/executor/dispatch/dispatchpb.py @@ -8,7 +8,7 @@ from modules.personbook import PersonBook from modules.personblock import PersonBlock import time,os -from executor.dispatch import REDIS_CONF,MYSQL_CONF,NGINX_CONF,TOMCAT_CONF +from _executor.dispatch import REDIS_CONF,MYSQL_CONF,NGINX_CONF,TOMCAT_CONF FILENAME=r'/tmp/%s' BACK_NAME='\'%s.*.[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]\@[0-9][0-9]:[0-9][0-9]:[0-9][0-9]\~\'' def dispatch_getcnf(cnffile): diff --git a/manage.py b/manage.py deleted file mode 100644 index 7dd52a44..00000000 --- a/manage.py +++ /dev/null @@ -1,22 +0,0 @@ -#!/usr/bin/env python -import os -import sys - -if __name__ == "__main__": - os.environ.setdefault("DJANGO_SETTINGS_MODULE", "devEops.settings") - try: - from django.core.management import execute_from_command_line - except ImportError: - # The above import may fail for some other reason. Ensure that the - # issue is really that Django is missing to avoid masking other - # exceptions on Python 2. - try: - import django - except ImportError: - raise ImportError( - "Couldn't import Django. Are you sure it's installed and " - "available on your PYTHONPATH environment variable? Did you " - "forget to activate a virtual environment?" - ) - raise - execute_from_command_line(sys.argv) diff --git a/modules/__init__.py b/modules/__init__.py deleted file mode 100644 index eaa150b2..00000000 --- a/modules/__init__.py +++ /dev/null @@ -1,5 +0,0 @@ -# -*- coding:utf-8 -*- -# !/usr/bin/env python -# Author Yo -# Email YoLoveLife@outlook.com - diff --git a/modules/personblock.py b/modules/personblock.py deleted file mode 100644 index 476dfa3d..00000000 --- a/modules/personblock.py +++ /dev/null @@ -1,52 +0,0 @@ -# -*- coding:utf-8 -*- -# !/usr/bin/env python -# Author Yo -# Email YoLoveLife@outlook.com -from collections import namedtuple - -from ansible.executor.task_queue_manager import TaskQueueManager -from ansible.inventory import Inventory -from ansible.parsing.dataloader import DataLoader -from ansible.playbook.play import Play -from ansible.vars import VariableManager -from callback import ResultCallback - -HOST_LIST='/tmp/ansible.host' -class PersonBlock(): - def __init__(self): - Options = namedtuple('Options', - ['connection', 'module_path', 'forks', 'become', 'become_method', 'become_user', 'check']) - self.options = Options(connection='smart', module_path='', forks=100, become=None, become_method='sudo', - become_user=None, check=False) - - self.variable_manager = VariableManager() - self.loader = DataLoader() - self.passwords = dict(vault_pass='') - self.results_callback = ResultCallback() - self.inventory = Inventory(loader=self.loader, variable_manager=self.variable_manager, host_list=HOST_LIST) - self.variable_manager.set_inventory(self.inventory) - self.tqm=TaskQueueManager(inventory=self.inventory, - variable_manager=self.variable_manager, - loader=self.loader, - options=self.options, - passwords=self.passwords, - stdout_callback=self.results_callback,) - #self.play = Play().load(self.play_source, variable_manager=self.variable_manager, loader=self.loader) - - def add_extendvars(self,newext): - #print(newext) - #ext=self.variable_manager.extra_vars.copy() - #self.variable_manager.extra_vars=ext.update(newext) - self.variable_manager.extra_vars=newext - - - def set_playbook(self,pb): - self.playbook=pb - - def run_block(self): - try: - result =self.tqm.run(Play().load(self.playbook.push_playbook(),variable_manager=self.variable_manager,loader=self.loader)) - finally: - if self.tqm is not None: - self.tqm.cleanup() - diff --git a/modules/personbook.py b/modules/personbook.py deleted file mode 100644 index 2648805c..00000000 --- a/modules/personbook.py +++ /dev/null @@ -1,17 +0,0 @@ -# -*- coding:utf-8 -*- -# !/usr/bin/env python -# Author Yo -# Email YoLoveLife@outlook.com -from modules.persontask import PersonTask -class PersonBook(): - def __init__(self,pbname,pbfacts,): - self.name=pbname - self.hosts='all' - self.gather_facts=pbfacts - self.tasks=[] - - def push_playbook(self): - return dict(name=self.name,hosts=self.hosts,gather_facts=self.gather_facts,tasks=self.tasks) - - def add_task(self,task=PersonTask()): - self.tasks.append(task.push_task()) diff --git a/modules/persontask.py b/modules/persontask.py deleted file mode 100644 index b2c2a193..00000000 --- a/modules/persontask.py +++ /dev/null @@ -1,13 +0,0 @@ -# -*- coding:utf-8 -*- -# !/usr/bin/env python -# Author Yo -# Email YoLoveLife@outlook.com - -class PersonTask(): - def __init__(self,module="shell",args="",register='shell_out'): - self.module=module - self.args=args - self.register=register - - def push_task(self): - return dict(action=dict(module=self.module,args=self.args),register=self.register) diff --git a/playbook/base_pk_install.yml b/playbook/base_pk_install.yml deleted file mode 100644 index 65128565..00000000 --- a/playbook/base_pk_install.yml +++ /dev/null @@ -1,21 +0,0 @@ -- name: install base soft - hosts: nginx-server - user: root - gather_facts: false - vars: - - yum_repo: "/etc/yum.repos.d" - md5sum: "ccd96d70ecfe3b1655c98d8dabd8dcb5" - url: "http://192.168.83.128/repos/Zbjt.repo" - tasks: - - name: repo bk - shell: "tar -cvzf {{yum_repo}}/bk.tar.gz {{yum_repo}}/* --remove-files" - - name: repo get - get_url: "checksum=md5:{{md5sum}} url={{url}} dest={{yum_repo}}/" - - name: repo cache - shell: "yum clean all;yum makecache;" - - name: libaio - yum: "name=libaio state=present" - - name: libselinux-python - yum: "name=libselinux-python state=present" - - name: expect - yum: "name=expect state=present" diff --git a/playbook/mysql_pb_conf.yml b/playbook/mysql_pb_conf.yml deleted file mode 100644 index 196bee06..00000000 --- a/playbook/mysql_pb_conf.yml +++ /dev/null @@ -1,17 +0,0 @@ -- name: conf mysql - hosts: mysql-server - user: root - gather_facts: false - vars: - - prefix: "/usr/local" - basedir: "{{prefix}}/mysql" - datadir: "/usr/local/mysql/data" - port: "3306" - thread_cache_size: "64" - server_id: "1" - extend: "" - tasks: - - name: config - template: "dest=/etc/my.cnf src=../template/my.j2 owner=mysql group=mysql mode=644" - - name: mysql restart - service: "name=mysqld state=restarted" diff --git a/playbook/mysql_pb_install.yml b/playbook/mysql_pb_install.yml deleted file mode 100644 index 27ba88e9..00000000 --- a/playbook/mysql_pb_install.yml +++ /dev/null @@ -1,32 +0,0 @@ -- name: install mysql - hosts: mysql-server - user: root - gather_facts: true - vars: - - version: "10.1.12" - prefix: "/usr/local" - basedir: "{{prefix}}/mysql" - datadir: "{{basedir}}/data" - user: "mysql" - file: "mariadb-{{version}}-linux-{{ansible_architecture}}.tar.gz" - fro: "http://192.168.83.128/package/mysql/{{file}}" - checksum: "30a86202c8fe30ad3548988a7ddbf5a3" - port: "3306" - thread_cache_size: "8" - server_id: "1" - extend: "" - tasks: - - name: base-env - yum: "name=gcc state=present" - - name: get_soft - get_url: "url={{fro}} checksum='md5:{{checksum}}' dest=~" - - name: install_soft - script: "../script/mysql_install.sh -v {{version}} -f {{prefix}} -u {{user}} -d {{datadir}} >> ~/a.txt" - - name: clean_all - file: "dest=~/{{file}} state=absent" - - name: config - template: "dest=/etc/my.cnf src=../template/my.j2 owner=mysql group=mysql mode=644" - - name: start mysql - shell: "/usr/local/mysql/support-files/mysql.server start" - - name: secure_install - script: "../script/mysql_answer.exp" diff --git a/playbook/mysql_pb_remove.yml b/playbook/mysql_pb_remove.yml deleted file mode 100644 index 26e764e6..00000000 --- a/playbook/mysql_pb_remove.yml +++ /dev/null @@ -1,10 +0,0 @@ -- name: remove mysql - hosts: mysql-server - user: root - gather_facts: false - vars: - - prefix: "/usr/local" - user: "mysql" - tasks: - - name: remove_server - script: "../script/mysql_remove.sh -u {{user}} -f {{prefix}} -c /etc/my.cnf" diff --git a/playbook/redis_pb_conf.yml b/playbook/redis_pb_conf.yml deleted file mode 100644 index 80b5fe7c..00000000 --- a/playbook/redis_pb_conf.yml +++ /dev/null @@ -1,23 +0,0 @@ -- name: conf redis - hosts: redis-server - user: root - gather_facts: false - vars: - - prefix: "/usr/local" - basedir: "{{prefix}}/redis" - bind: "0.0.0.0" - port: "8081" - appendonly: "yes" - noonrewrite: "no" - logfile: "{{basedir}}/log/redis.log" - saveoptions: "save 900 300\nsave 30 10\nsave 2000 1" - dbfilename: "{{port}}.rdb" - dir: "{{basedir}}/data" - slaveof: "slaveof mip mport" - masterauth: "masterauth Redis" - cluster_enabled: "cluster-enabled yes" - cluster_config_file: "cluster-config-file nodes-{{port}}.conf" - extend: "1" - tasks: - - name: config - template: "dest={{basedir}}/redis.conf src=../template/redis.j2 owner=redis group=redis mode=644" diff --git a/playbook/redis_pb_install.yml b/playbook/redis_pb_install.yml deleted file mode 100644 index 8fd603b6..00000000 --- a/playbook/redis_pb_install.yml +++ /dev/null @@ -1,19 +0,0 @@ -- name: install redis - hosts: redis-server - user: root - gather_facts: true - vars: - - version: "3.2.4" - prefix: "/usr/local" - basedir: "{{prefix}}/redis" - user: "redis" - file: "redis-{{version}}.tar.gz" - fro: "http://192.168.254.128/package/redis/{{file}}" - checksum: "2f8b49e8004fbbfc807ca7f5faeabec8" - tasks: - - name: get_soft - get_url: "url={{fro}} checksum='md5:{{checksum}}' dest=~" - - name: install_soft - script: "../script/redis_install -v {{version}} -f {{prefix}} -u {{user}}" - - name: clean_all - file: "dest=~/{{file}} state=absent" diff --git a/playbook/redis_pb_remove.yml b/playbook/redis_pb_remove.yml deleted file mode 100644 index ea9bc69b..00000000 --- a/playbook/redis_pb_remove.yml +++ /dev/null @@ -1,10 +0,0 @@ -- name: remove redis - hosts: redis-server - user: root - gather_facts: false - vars: - - prefix: "/usr/local" - user: "redis" - tasks: - - name: remove_server - script: "../script/redis_remove.sh -u {{user}} -f {{prefix}}" diff --git a/scripts/README.md b/scripts/README.md deleted file mode 100644 index 73a6a0ba..00000000 --- a/scripts/README.md +++ /dev/null @@ -1,5 +0,0 @@ -# devEops Scripts -## Introduce - 包含了所有的应用的脚本。具有版本的适用性,通过参数应用脚本信息。 -## Use - 作为python包,__init__.py中定义了参数SCRIPTS_DIR。将该参数应用到playbook的参数当中去来绝对路径引用脚本 diff --git a/scripts/java/java_install.sh b/scripts/java/java_install.sh deleted file mode 100644 index 959f18b0..00000000 --- a/scripts/java/java_install.sh +++ /dev/null @@ -1,83 +0,0 @@ -#!/bin/bash -#Time 2017-1-9 20:42 -#Author Yo -PATH=/bin:/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin -VERSION="7u79" -PREFIX=/usr/local -SYSTEM=`uname -a |awk '{print $13}'` -function Confirm() -{ -cat <<_ACEOF - Version: ${VERSION} - Prefix: ${PREFIX} -_ACEOF -} -function IsAlready() -{ - if [ -d "/usr/local/java" ];then - echo "003001002" - exit 2 - fi -} -function Help() -{ -cat <<_ACEOF -configure java_install bash script. -Usage $0 [OPTION]... [VAR=VALUE]... - --help display this help and exit - -v,--version modify the version of java.Default 7u79 - -f,--prefix modify the prefix.Default /usr/local - -y answer question with yes -_ACEOF -} -function Avrg() -{ - ARGS=`getopt -o yv:f: --long version:,prefix: -n 'java_install' -- "$@"` - if [ ! $? -eq 0 ];then - echo "参数错误" - exit 2 - fi - eval set -- "${ARGS}" - - while true - do - case "$1" in - -v|--version) - VERSION=$2 - shift 2 - ;; - -f|--prefix) - PREFIX=$2 - shift 2 - ;; - -y) - YESFLAG="1" - shift - ;; - --) - shift - break - ;; - *) - echo "参数错误" - exit 2 - ;; - esac - done -} -IsAlready - -Avrg $@ -BVERSION=`echo ${VERSION}|cut -d"u" -f1` -MVERSION=`echo ${VERSION}|cut -d"u" -f2` -FILENAME=jdk-${VERSION}-linux-x64 - -tar -xvzf ${FILENAME}.tar.gz -C ${PREFIX} &>/dev/null -BASEDIR=${PREFIX}/java - -mv ${PREFIX}/jdk1.${BVERSION}.0_${MVERSION}/ ${BASEDIR} -#Confirm > ${BASEDIR}/INSTALL.info - -find ${BASEDIR}/bin -perm -u=x -type f -exec ln -s {} /usr/bin \; -#find ${BASEDIR}/bin -perm -u=x -type f -exec cp {} /usr/bin \; -echo "003000000" \ No newline at end of file diff --git a/scripts/java/java_remove.sh b/scripts/java/java_remove.sh deleted file mode 100644 index a0c5acd5..00000000 --- a/scripts/java/java_remove.sh +++ /dev/null @@ -1,57 +0,0 @@ -#!/bin/bash -#Time 2017-2-6 17:24 -#Author Yo -PATH=/bin:/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin -PREFIX=/usr/local -function Confirm() -{ -cat <<_ACEOF - Prefix: ${PREFIX} -_ACEOF -} -function Help() -{ -cat <<_ACEOF -configure java_install bash script. -Usage $0 [OPTION]... [VAR=VALUE]... - --help display this help and exit - -f,--prefix modify the prefix.Default /usr/local - -y answer question with yes -_ACEOF -} -function Avrg() -{ - ARGS=`getopt -o yf: --long prefix: -n 'java_remove' -- "$@"` - if [ ! $? -eq 0 ];then - echo "参数错误" - exit 2 - fi - eval set -- "${ARGS}" - - while true - do - case "$1" in - -f|--prefix) - PREFIX=$2 - shift 2 - ;; - -y) - YESFLAG="1" - shift - ;; - --) - shift - break - ;; - *) - echo "参数错误" - exit 2 - ;; - esac - done -} -Avrg $@ - -rm -rf ${PREFIX}/java - -echo "003000000" diff --git a/scripts/mysql/mysql_answer.exp b/scripts/mysql/mysql_answer.exp deleted file mode 100644 index 4203248e..00000000 --- a/scripts/mysql/mysql_answer.exp +++ /dev/null @@ -1,23 +0,0 @@ -#!/usr/bin/expect -f -#Time 2017-1-19 8:59 -#Author Yo -set MYSQL_BIN /usr/local/mysql/bin -set MYSQL_PASSWD [lindex $argv 0] -set timeout 30 -spawn ${MYSQL_BIN}/mysql_secure_installation -expect "current password for root*" -send "\r" -expect "Set root password*" -send "Y\r" -expect "New password*" -send "${MYSQL_PASSWD}\r" -expect "Re-enter new password*" -send "${MYSQL_PASSWD}\r" -expect "Remove anonymous users*" -send "Y\r" -expect "Disallow root login remotely*" -send "Y\r" -expect "Remove test database*" -send "Y\r" -expect "Reload privilege tables*" -send "Y\r" diff --git a/scripts/mysql/mysql_control.sh b/scripts/mysql/mysql_control.sh deleted file mode 100644 index 378a16a3..00000000 --- a/scripts/mysql/mysql_control.sh +++ /dev/null @@ -1,46 +0,0 @@ -#!/bin/bash -#Time 2017-02-06 09:23 -#Author Yo -#Control redis -COMMDDIR=/etc/init.d -function Help() -{ -cat <<_ACEOF -control mysql bash script. -Usage $0 [OPTION]... [VAR=VALUE]... - help display this help and exit - start start mysql with /etc/my.cnf - stop stop mysql - restart restart mysql -_ACEOF -} -function Start() -{ - ${COMMDDIR}/mysqld start -} - -function Stop() -{ - ${COMMDDIR}/mysqld stop -} - -function Restart() -{ - Stop - Start -} - -case "$1" in - "start") - Start - ;; - "stop") - Stop - ;; - "restart") - Restart - ;; - *) - Help - ;; -esac diff --git a/scripts/mysql/mysql_install.sh b/scripts/mysql/mysql_install.sh deleted file mode 100644 index dab7c753..00000000 --- a/scripts/mysql/mysql_install.sh +++ /dev/null @@ -1,109 +0,0 @@ -#!/bin/bash -#Time 2017-1-9 20:42 -#Author Yo -PATH=/bin:/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin -VERSION="10.1.12" -PREFIX=/usr/local -SYSTEM=`uname -a |awk '{print $13}'` -USER=mysql -BASEDIR=${PREFIX}/mysql -DATADIR=${BASEDIR}/data/ -SHELL=/sbin/nologin -function Confirm() -{ -cat <<_ACEOF - Version: ${VERSION} - Prefix: ${PREFIX} - User: ${USER} - Datadir: ${DATADIR} -_ACEOF -} -function IsAlready() -{ - if [ -d "/usr/local/mysql" ];then - echo "已安装" - exit 2 - fi -} -function Help() -{ -cat <<_ACEOF -configure nginx_install bash script. -Usage $0 [OPTION]... [VAR=VALUE]... - --help display this help and exit - -v,--version modify the version of mysql.Default 10.1.12 - -f,--prefix modify the prefix.Default /usr/local - -u,--user modify the user of mysql.Default mysql - -d,--datadir modify the datadir of mysql.Default /usr/local/mysql/data - -y answer question with yes -_ACEOF -} -function Avrg() -{ - ARGS=`getopt -o yv:f:u:d: --long version:,prefix:,user:,datadir: -n 'mysql_install' -- "$@"` - if [ ! $? -eq 0 ];then - echo "参数错误" - exit 2 - fi - eval set -- "${ARGS}" - - while true - do - case "$1" in - -v|--version) - VERSION=$2 - shift 2 - ;; - -f|--prefix) - PREFIX=$2 - shift 2 - ;; - -u|--user) - USER=$2 - shift 2 - ;; - -d|--datadir) - DATADIR=$2 - shift 2 - ;; - -y) - YESFLAG="1" - shift - ;; - --) - shift - break - ;; - *) - echo "参数错误" - exit 2 - ;; - esac - done -} -IsAlready - -Avrg $@ -FILENAME=mariadb-${VERSION}-linux-${SYSTEM} - -tar -xvzf ${FILENAME}.tar.gz -C ${PREFIX} &>/dev/null - -mv ${PREFIX}/${FILENAME}/ ${BASEDIR} -if [ `cat /etc/passwd |grep mysql|wc -l` == "0" ];then - groupadd ${USER} - useradd -s ${SHELL} -g ${USER} ${USER} -fi - -#Confirm > ${BASEDIR}/INSTALL.info - -mkdir -p ${DATADIR} -chown -R ${USER}:${USER} ${DATADIR} -chown -R ${USER}:${USER} ${BASEDIR} - -${BASEDIR}/scripts/mysql_install_db --basedir=${BASEDIR} --datadir=${DATADIR} --user=${USER} &>/dev/null - -cp ${BASEDIR}/support-files/mysql.server /etc/init.d/mysqld -cp ${BASEDIR}/bin/mysql /usr/bin/mysql -cp ${BASEDIR}/support-files/my-large.cnf /etc/my.cnf -/sbin/chkconfig --add mysqld -echo "002000000" diff --git a/scripts/mysql/mysql_remove.sh b/scripts/mysql/mysql_remove.sh deleted file mode 100644 index ba4be132..00000000 --- a/scripts/mysql/mysql_remove.sh +++ /dev/null @@ -1,75 +0,0 @@ -#!/bin/bash -#Time 2017-1-13 15:36 -#Author Yo -PATH=/bin:/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin -PREFIX=/usr/local -BASEDIR=${PREFIX}/mysql -DATADIR="${BASEDIR}/data/" -USER="mysql" -CONF=/etc/my.cnf -function Help() -{ -cat <<_ACEOF -configure mysql_remove bash script. -Usage $0 [OPTION]... [VAR=VALUE]... - --help display this help and exit - -f,--prefix modify the prefix.Default /usr/local - -d,--datadir modify the datadir of mysql-server.Default /usr/local/mysql/data/ - -u,--user modify the user of mysql.Default mysql - -c,--conf modify the conf of mysql.Default /etc/my.cnf -_ACEOF -} -function Avrg() -{ - ARGS=`getopt -o f:d:u:c: --long prefix:,datadir:,user:,conf: -n 'mysql_remove' -- "$@"` - if [ ! $? -eq 0 ];then - echo "参数错误" - exit 2 - fi - eval set -- "${ARGS}" - - while true - do - case "$1" in - -f|--prefix) - PREFIX=$2 - shift 2 - ;; - -d|--datadir) - DATADIR=$2 - shift 2 - ;; - -u|--user) - USER=$2 - shift 2 - ;; - -c|--conf) - CONF=$2 - shift 2 - ;; - --) - shift - break - ;; - *) - #Help - echo "参数错误" - exit 2 - esac - done -} - -Avrg $@ -BASEDIR=${PREFIX}/mysql - -rm -rf ${DATADIR} ${BASEDIR} ${CONF} - -if [ "`cat /etc/passwd|grep ${USER}|wc -l`" == "1" ];then - userdel -r ${USER} -fi - -/sbin/chkconfig --del mysqld -rm -rf /etc/init.d/mysqld -if [ "$?" == "0" ];then - echo "002000000" -fi diff --git a/scripts/mysql/mysql_test.sh b/scripts/mysql/mysql_test.sh deleted file mode 100644 index 1b7c85e6..00000000 --- a/scripts/mysql/mysql_test.sh +++ /dev/null @@ -1,10 +0,0 @@ -#!/bin/bash -# Author Yo -# Email YoLoveLife@outlook.com -# Time 2017-04-05 16:19 -ONLINE=`ps aux |grep mysql |wc -l` -if [ "${ONLINE}" == "3" ];then - echo "1" -else - echo "0" -fi \ No newline at end of file diff --git a/scripts/nginx/nginx_control.sh b/scripts/nginx/nginx_control.sh deleted file mode 100644 index 75f73d48..00000000 --- a/scripts/nginx/nginx_control.sh +++ /dev/null @@ -1,65 +0,0 @@ -#!/bin/bash -# Author Yo -# Email YoLoveLife@outlook.com -# Time 2017-03-07 09:25 -source /etc/profile -COMMDDIR=/usr/local/nginx/sbin -function Help() -{ -cat <<_ACEOF -control nginx bash script. -Usage $0 [OPTION]... [VAR=VALUE]... - help display this help and exit - start start nginx - stop stop nginx - reload reload nginx conf - test test nginx conf.Default nginx conf/nginx.conf -_ACEOF -} -function Start() -{ - if [ -f $2 ];then - echo nginx_online - exit 2 - fi - ${COMMDDIR}/nginx -} -function Stop() -{ - if [ ! -f $2 ];then - echo nginx_ofline - exit 2 - fi - ${COMMDDIR}/nginx -s stop -} -function Test() -{ - ${COMMDDIR}/nginx -t -} -function Reload() -{ - if [ -f $2 ];then - ${COMMDDIR}/nginx -s reload - else - echo nginx_ofline - exit 2 - fi - -} -case "$1" in - "start") - Start $@ - ;; - "stop") - Stop $@ - ;; - "test") - Test - ;; - "reload") - Reload $@ - ;; - *) - Help - ;; -esac diff --git a/scripts/nginx/nginx_install.sh b/scripts/nginx/nginx_install.sh deleted file mode 100644 index 79464eee..00000000 --- a/scripts/nginx/nginx_install.sh +++ /dev/null @@ -1,93 +0,0 @@ -#!/bin/bash -# Author Yo -# Email YoLoveLife@outlook.com -# Time 2017-02-07 11:27 -PATH=/bin:/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin -VERSION="1.10.1" -PREFIX="/usr/local" -BASEDIR=${PREFIX}/nginx -YESFLAG="0" -USER="www" -function Confirm() -{ -cat <<_ACEOF - Version: ${VERSION} - Prefix: ${PREFIX} -_ACEOF -} -function IsAlready() -{ - if [ -d "/usr/local/nginx" ];then - echo "001001002" - exit 2 - fi -} -function Help() -{ -cat <<_ACEOF -configure nginx_install bash script. -Usage $0 [OPTION]... [VAR=VALUE]... - --help display this help and exit - -v,--version modify the version of nginx.Default 1.10.1 - -f,--prefix modify the prefix.Default /usr/local -_ACEOF -} -function Avrg() -{ - ARGS=`getopt -o v:f: --long version:,prefix: -n 'nginx_install.sh' -- "$@"` - if [ ! $? -eq 0 ];then - echo "001002002" - exit 2 - fi - eval set -- "${ARGS}" - - while true - do - case "$1" in - -v|--version) - VERSION=$2 - shift 2 - ;; - -f|--prefix) - PREFIX=$2 - shift 2 - ;; - --) - shift - break - ;; - *) - #Help - echo "参数错误" - exit 2 - esac - done -} -IsAlready -if [ "$1" == '--help' ];then - Help - exit 2 -fi -Avrg $@ - -if [ `cat /etc/passwd |grep ${USER}|wc -l` == "0" ];then - groupadd ${USER} - useradd -s ${SHELL} -g ${USER} ${USER} -fi - -FILENAME=nginx-${VERSION} - -tar -xvzf ${FILENAME}.tar.gz &>/dev/null -cd ./${FILENAME} - -mkdir -p ${PREFIX}/nginx - -./configure --prefix=${PREFIX}/nginx --user=${USER} --group=${USER}&>/dev/null -make &>/dev/null -make install &> /dev/null - -chown ${USER}:${USER} ${PREFIX}/nginx - -#Confirm > ${PREFIX}/nginx/INSTALL.info - -echo "001000000" diff --git a/scripts/nginx/nginx_remove.sh b/scripts/nginx/nginx_remove.sh deleted file mode 100644 index b1084297..00000000 --- a/scripts/nginx/nginx_remove.sh +++ /dev/null @@ -1,56 +0,0 @@ -#!/bin/bash -#Time 2017-1-13 15:36 -#Author Yo -PATH=/bin:/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin -PREFIX=/usr/local -BASEDIR=${PREFIX}/nginx -USER="www" -function Help() -{ -cat <<_ACEOF -configure nginx_remove bash script. -Usage $0 [OPTION]... [VAR=VALUE]... - --help display this help and exit - -f,--prefix modify the prefix.Default /usr/local -_ACEOF -} -function Avrg() -{ - ARGS=`getopt -o f: --long prefix: -n 'nginx_remove.sh' -- "$@"` - if [ ! $? -eq 0 ];then - echo "001002002" - exit 2 - fi - eval set -- "${ARGS}" - - while true - do - case "$1" in - -f|--prefix) - PREFIX=$2 - shift 2 - ;; - --) - shift - break - ;; - *) - #Help - echo "001002002" - exit 2 - esac - done -} -if [ "$1" == "--help" ];then - Help - exit 2 -fi -Avrg $@ -DIRNAME=${PREFIX}/nginx -rm -rf ${DIRNAME} -if [ "`cat /etc/passwd|grep ${USER}|wc -l`" == "1" ];then - userdel -r ${USER} -fi -if [ "$?" == "0" ];then - echo "001000000" -fi diff --git a/scripts/redis/redis_control.sh b/scripts/redis/redis_control.sh deleted file mode 100644 index bf4c78a6..00000000 --- a/scripts/redis/redis_control.sh +++ /dev/null @@ -1,36 +0,0 @@ -#!/bin/bash -#Time 2017-02-06 09:23 -#Author Yo -#Control redis -CONF=/etc/redis.conf -COMMDDIR=/usr/local/redis/bin -function Help() -{ -cat <<_ACEOF -control redis bash script. -Usage $0 [OPTION]... [VAR=VALUE]... - help display this help and exit - start start redis with /etc/redis.conf - stop stop redis -_ACEOF -} -function Start() -{ - ${COMMDDIR}/redis-server ${CONF} -} -function Stop() -{ - ${COMMDDIR}/redis-cli -h 127.0.0.1 -p 6379 -a $1 shutdown -} -case "$1" in - "start") - Start - ;; - "stop") - shift - Stop $1 - ;; - *) - Help - ;; -esac diff --git a/scripts/redis/redis_install.sh b/scripts/redis/redis_install.sh deleted file mode 100644 index d78737f8..00000000 --- a/scripts/redis/redis_install.sh +++ /dev/null @@ -1,86 +0,0 @@ -#!/bin/bash -#Install Redis -#Author Yo -PATH=/bin:/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin -VERSION="3.2.4" -PREFIX="/usr/local" -SYSTEM=`uname -a |awk '{print $13}'` -USER="redis" -SHELL="/sbin/nologin" -YESFLAG="0" -function Confirm() -{ -cat <<_ACEOF - Version: ${VERSION} - Prefix: ${PREFIX} - User: ${USER} -_ACEOF -} -function IsAlready() -{ - if [ -d "/usr/local/redis" ];then - echo "已安装" - exit 2 - fi -} -function Help() -{ -cat <<_ACEOF -configure redis_install bash script. -Usage $0 [OPTION]... [VAR=VALUE]... - --help display this help and exit - -v,--version modify the version of redis.Default 3.2.4 - -f,--prefix modify the prefix.Default /usr/local - -u,--user modify the user of redis.Default redis -_ACEOF -} -function Avrg() -{ - ARGS=`getopt -o v:u:f:u: --long version:,prefix:,user: -n 'redis_install.sh' -- "$@"` - if [ ! $? -eq 0 ];then - echo "参数错误" - exit 2 - fi - eval set -- "${ARGS}" - - while true - do - case "$1" in - -v|--version) - VERSION=$2 - shift 2 - ;; - -f|--prefix) - PREFIX=$2 - shift 2 - ;; - -u|--user) - USER=$2 - shift 2 - ;; - --) - shift - break - ;; - *) - #Help - echo "参数错误" - exit 2 - esac - done -} -IsAlready - -Avrg $@ - -tar -xvzf redis-${VERSION}.tar.gz -C ${PREFIX} &>/dev/null -mv ${PREFIX}/redis-${VERSION} ${PREFIX}/redis -BASEDIR=${PREFIX}/redis - -#Confirm > ${PREFIX}/redis/INSTALL.info - -make --directory=${BASEDIR} &>/dev/null - -mkdir ${BASEDIR}/bin -find ${BASEDIR}/src -perm -u=x -type f -exec ln -s {} ${BASEDIR}/bin \; -echo "001000000" diff --git a/scripts/redis/redis_remove.sh b/scripts/redis/redis_remove.sh deleted file mode 100644 index ac1175f7..00000000 --- a/scripts/redis/redis_remove.sh +++ /dev/null @@ -1,68 +0,0 @@ -#!/bin/bash -#Time 2017-1-13 15:36 -#Author Yo -PATH=/bin:/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin -PREFIX=/usr/local -BASEDIR=${PREFIX}/redis -LOGFILE="${BASEDIR}/redis.log" -CONFFILE=/etc/redis.conf -DATADIR="${BASEDIR}/data/" -USER="redis" -function Help() -{ -cat <<_ACEOF -configure redis_remove bash script. -Usage $0 [OPTION]... [VAR=VALUE]... - --help display this help and exit - -f,--prefix modify the prefix.Default /usr/local - -l,--logfile modify the logfile of redis-server.Default /usr/local/redis/redis.log - -d,--datadir modify the datadir of redis-server.Default /usr/local/redis/data/ - -u,--user modify the user of redis.Default redis -_ACEOF -} -function Avrg() -{ - ARGS=`getopt -o f:d:l:u: --long prefix:,datadir:,logfile:,user: -n 'redis_remove.sh' -- "$@"` - if [ ! $? -eq 0 ];then - echo "001002002" - exit 2 - fi - eval set -- "${ARGS}" - - while true - do - case "$1" in - -f|--prefix) - PREFIX=$2 - shift 2 - ;; - -d|--datadir) - DATADIR=$2 - shift 2 - ;; - -l|--logfile) - LOGFILE=$2 - shift 2 - ;; - -u|--user) - USER=$2 - shift 2 - ;; - --) - shift - break - ;; - *) - #Help - echo "001002002" - exit 2 - esac - done -} - -Avrg $@ -DIRNAME=${PREFIX}/redis -rm -rf ${LOGFILE} ${DATADIR} ${DIRNAME} $CONFFILE - -echo "001000000" - diff --git a/scripts/redis/redis_test.sh b/scripts/redis/redis_test.sh deleted file mode 100644 index b6151a95..00000000 --- a/scripts/redis/redis_test.sh +++ /dev/null @@ -1,10 +0,0 @@ -#!/bin/bash -# Author Yo -# Email YoLoveLife@outlook.com -# Time 2017-03-07 08:56 -ONLINE=`ps aux |grep redis-server|wc -l` -if [ "${ONLINE}" == "2" ];then - echo "1" -else - echo "0" -fi \ No newline at end of file diff --git a/scripts/tomcat/tomcat_control.sh b/scripts/tomcat/tomcat_control.sh deleted file mode 100644 index 7630514f..00000000 --- a/scripts/tomcat/tomcat_control.sh +++ /dev/null @@ -1,37 +0,0 @@ -#!/bin/bash -#Time 2017-02-06 09:23 -#Author Yo -#Control redis -source /etc/profile -COMMDDIR=/usr/local/tomcat/bin -function Help() -{ -cat <<_ACEOF -control tomcat bash script. -Usage $0 [OPTION]... [VAR=VALUE]... - help display this help and exit - start start tomcat - stop stop tomcat -_ACEOF -} -function Start() -{ - nohup ${COMMDDIR}/catalina.sh start & -} - -function Stop() -{ - ${COMMDDIR}/catalina.sh stop -} - -case "$1" in - "start") - Start - ;; - "stop") - Stop - ;; - *) - Help - ;; -esac diff --git a/scripts/tomcat/tomcat_install.sh b/scripts/tomcat/tomcat_install.sh deleted file mode 100644 index cf7f3ec5..00000000 --- a/scripts/tomcat/tomcat_install.sh +++ /dev/null @@ -1,74 +0,0 @@ -#!/bin/bash -# Author Yo -# Email YoLoveLife@outlook.com -# Time 2017-02-07 09:09 -PATH=/bin:/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin -VERSION="7.0.72" -PREFIX="/usr/local" -YESFLAG="0" -function Confirm() -{ -cat <<_ACEOF - Version: ${VERSION} - Prefix: ${PREFIX} -_ACEOF -} -function IsAlready() -{ - if [ -d "/usr/local/tomcat" ];then - echo "004001002" - exit 2 - fi -} -function Help() -{ -cat <<_ACEOF -configure tomcat_install bash script. -Usage $0 [OPTION]... [VAR=VALUE]... - --help display this help and exit - -v,--version modify the version of tomcat.Default 3.2.4 - -f,--prefix modify the prefix.Default /usr/local -_ACEOF -} -function Avrg() -{ - ARGS=`getopt -o v:u:f: --long version:,prefix: -n 'tomcat_install.sh' -- "$@"` - if [ ! $? -eq 0 ];then - echo "参数错误" - exit 2 - fi - eval set -- "${ARGS}" - - while true - do - case "$1" in - -v|--version) - VERSION=$2 - shift 2 - ;; - -f|--prefix) - PREFIX=$2 - shift 2 - ;; - --) - shift - break - ;; - *) - #Help - echo "参数错误" - exit 2 - esac - done -} -IsAlready - -Avrg $@ - -tar -xvzf apache-tomcat-${VERSION}.tar.gz -C ${PREFIX} &>/dev/null -mv ${PREFIX}/apache-tomcat-${VERSION} ${PREFIX}/tomcat -BASEDIR=${PREFIX}/redis - -#Confirm > ${PREFIX}/tomcat/INSTALL.info - -echo "004000000" \ No newline at end of file diff --git a/scripts/tomcat/tomcat_remove.sh b/scripts/tomcat/tomcat_remove.sh deleted file mode 100644 index 7a93c759..00000000 --- a/scripts/tomcat/tomcat_remove.sh +++ /dev/null @@ -1,59 +0,0 @@ -#!/bin/bash -# Author Yo -# Email YoLoveLife@outlook.com -# Time 2017-02-07 10:01 -PATH=/bin:/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin -PREFIX=/usr/local -function Confirm() -{ -cat <<_ACEOF - Prefix: ${PREFIX} -_ACEOF -} -function Help() -{ -cat <<_ACEOF -configure tomcat_install bash script. -Usage $0 [OPTION]... [VAR=VALUE]... - --help display this help and exit - -f,--prefix modify the prefix.Default /usr/local - -y answer question with yes -_ACEOF -} -function Avrg() -{ - ARGS=`getopt -o yf: --long prefix: -n 'tomcat_remove.sh' -- "$@"` - if [ ! $? -eq 0 ];then - echo "参数错误" - exit 2 - fi - eval set -- "${ARGS}" - - while true - do - case "$1" in - -f|--prefix) - PREFIX=$2 - shift 2 - ;; - -y) - YESFLAG="1" - shift - ;; - --) - shift - break - ;; - *) - echo "参数错误" - exit 2 - ;; - esac - done -} - -Avrg $@ - -rm -rf ${PREFIX}/tomcat - -echo "003000000" diff --git a/scripts/tomcat/tomcat_test.sh b/scripts/tomcat/tomcat_test.sh deleted file mode 100644 index 562f1dbf..00000000 --- a/scripts/tomcat/tomcat_test.sh +++ /dev/null @@ -1,10 +0,0 @@ -#!/bin/bash -# Author Yo -# Email YoLoveLife@outlook.com -# Time 2017-04-05 16:19 -ONLINE=`ps aux |grep java |wc -l` -if [ "${ONLINE}" == "2" ];then - echo "1" -else - echo "0" -fi \ No newline at end of file diff --git a/template/__init__.py b/template/__init__.py deleted file mode 100644 index cbd40a5d..00000000 --- a/template/__init__.py +++ /dev/null @@ -1,6 +0,0 @@ -# -*- coding:utf-8 -*- -# !/usr/bin/env python -# Author Yo -# Email YoLoveLife@outlook.com -import os -TEMPLATEDIR=os.path.dirname(__file__) \ No newline at end of file diff --git a/template/my.j2 b/template/my.j2 deleted file mode 100644 index fd8f80f6..00000000 --- a/template/my.j2 +++ /dev/null @@ -1,154 +0,0 @@ -# Example MariaDB config file for large systems. -# -# This is for a large system with memory = 512M where the system runs mainly -# MariaDB. -# -# MariaDB programs look for option files in a set of -# locations which depend on the deployment platform. -# You can copy this option file to one of those -# locations. For information about these locations, do: -# 'my_print_defaults --help' and see what is printed under -# Default options are read from the following files in the given order: -# More information at: http://dev.mysql.com/doc/mysql/en/option-files.html -# -# In this file, you can use all long options that a program supports. -# If you want to know which options a program supports, run the program -# with the "--help" option. - -# The following options will be passed to all MariaDB clients -[client] -#password = your_password -port = {{port}} -socket = {{socket}} - -# Here follows entries for some specific programs - -# The MariaDB server -[mysqld] -port = {{port}} -socket = {{socket}} -basedir = {{basedir}} -datadir = {{datadir}} -{{extend}} -skip-external-locking -key_buffer_size = {{key_buffer_size}} -max_allowed_packet = 1M -table_open_cache = {{table_open_cache}} -sort_buffer_size = {{sort_buffer_size}} -read_buffer_size = {{read_buffer_size}} -read_rnd_buffer_size = {{read_rnd_buffer_size}} -myisam_sort_buffer_size = 64M -thread_cache_size = {{thread_cache_size}} -query_cache_size= {{query_cache_size}} -# Try number of CPU's*2 for thread_concurrency -thread_concurrency = 8 - -# Point the following paths to different dedicated disks -#tmpdir = /tmp/ - -# Don't listen on a TCP/IP port at all. This can be a security enhancement, -# if all processes that need to connect to mysqld run on the same host. -# All interaction with mysqld must be made via Unix sockets or named pipes. -# Note that using this option without enabling named pipes on Windows -# (via the "enable-named-pipe" option) will render mysqld useless! -# -#skip-networking - -# Replication Master Server (default) -# binary logging is required for replication -log-bin=mysql-bin - -# binary logging format - mixed recommended -binlog_format=mixed - -# required unique id between 1 and 2^32 - 1 -# defaults to 1 if master-host is not set -# but will not function as a master if omitted -server-id = {{server_id}} - -# Replication Slave (comment out master section to use this) -# -# To configure this host as a replication slave, you can choose between -# two methods : -# -# 1) Use the CHANGE MASTER TO command (fully described in our manual) - -# the syntax is: -# -# CHANGE MASTER TO MASTER_HOST=, MASTER_PORT=, -# MASTER_USER=, MASTER_PASSWORD= ; -# -# where you replace , , by quoted strings and -# by the master's port number (3306 by default). -# -# Example: -# -# CHANGE MASTER TO MASTER_HOST='125.564.12.1', MASTER_PORT=3306, -# MASTER_USER='joe', MASTER_PASSWORD='secret'; -# -# OR -# -# 2) Set the variables below. However, in case you choose this method, then -# start replication for the first time (even unsuccessfully, for example -# if you mistyped the password in master-password and the slave fails to -# connect), the slave will create a master.info file, and any later -# change in this file to the variables' values below will be ignored and -# overridden by the content of the master.info file, unless you shutdown -# the slave server, delete master.info and restart the slaver server. -# For that reason, you may want to leave the lines below untouched -# (commented) and instead use CHANGE MASTER TO (see above) -# -# required unique id between 2 and 2^32 - 1 -# (and different from the master) -# defaults to 2 if master-host is set -# but will not function as a slave if omitted -#server-id = 2 -# -# The replication master for this slave - required -#master-host = -# -# The username the slave will use for authentication when connecting -# to the master - required -#master-user = -# -# The password the slave will authenticate with when connecting to -# the master - required -#master-password = -# -# The port the master is listening on. -# optional - defaults to 3306 -#master-port = -# -# binary logging - not required for slaves, but recommended -#log-bin=mysql-bin - -# Uncomment the following if you are using InnoDB tables -#innodb_data_home_dir = /usr/local/mysql/data -#innodb_data_file_path = ibdata1:10M:autoextend -#innodb_log_group_home_dir = /usr/local/mysql/data -# You can set .._buffer_pool_size up to 50 - 80 % -# of RAM but beware of setting memory usage too high -#innodb_buffer_pool_size = 256M -#innodb_additional_mem_pool_size = 20M -# Set .._log_file_size to 25 % of buffer pool size -#innodb_log_file_size = 64M -#innodb_log_buffer_size = 8M -#innodb_flush_log_at_trx_commit = 1 -#innodb_lock_wait_timeout = 50 - -[mysqldump] -quick -max_allowed_packet = 16M - -[mysql] -no-auto-rehash -# Remove the next comment character if you are not familiar with SQL -#safe-updates - -[myisamchk] -key_buffer_size = 128M -sort_buffer_size = 128M -read_buffer = 2M -write_buffer = 2M - -[mysqlhotcopy] -interactive-timeout diff --git a/template/nginx.j2 b/template/nginx.j2 deleted file mode 100644 index b0a9261e..00000000 --- a/template/nginx.j2 +++ /dev/null @@ -1,117 +0,0 @@ - -user {{user}}; -worker_processes {{workproc}}; - -#error_log logs/error.log; -#error_log logs/error.log notice; -#error_log logs/error.log info; - -pid {{pid}}; - - -events { - worker_connections {{workconn}}; -} - - -http { - include mime.types; - default_type application/octet-stream; - - #log_format main '$remote_addr - $remote_user [$time_local] "$request" ' - # '$status $body_bytes_sent "$http_referer" ' - # '"$http_user_agent" "$http_x_forwarded_for"'; - - #access_log logs/access.log main; - - sendfile on; - #tcp_nopush on; - - #keepalive_timeout 0; - keepalive_timeout 65; - - #gzip on; - - server { - listen {{port}}; - server_name {{servername}}; - - #charset koi8-r; - - #access_log logs/host.access.log main; - {{locations}} - location / { - root html; - index index.html index.htm; - } - - #error_page 404 /404.html; - - # redirect server error pages to the static page /50x.html - # - error_page 500 502 503 504 /50x.html; - location = /50x.html { - root html; - } - - # proxy the PHP scripts to Apache listening on 127.0.0.1:80 - # - #location ~ \.php$ { - # proxy_pass http://127.0.0.1; - #} - - # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 - # - #location ~ \.php$ { - # root html; - # fastcgi_pass 127.0.0.1:9000; - # fastcgi_index index.php; - # fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name; - # include fastcgi_params; - #} - - # deny access to .htaccess files, if Apache's document root - # concurs with nginx's one - # - #location ~ /\.ht { - # deny all; - #} - } - - - # another virtual host using mix of IP-, name-, and port-based configuration - # - #server { - # listen 8000; - # listen somename:8080; - # server_name somename alias another.alias; - - # location / { - # root html; - # index index.html index.htm; - # } - #} - - - # HTTPS server - # - #server { - # listen 443 ssl; - # server_name localhost; - - # ssl_certificate cert.pem; - # ssl_certificate_key cert.key; - - # ssl_session_cache shared:SSL:1m; - # ssl_session_timeout 5m; - - # ssl_ciphers HIGH:!aNULL:!MD5; - # ssl_prefer_server_ciphers on; - - # location / { - # root html; - # index index.html index.htm; - # } - #} - -} diff --git a/template/redis/redis2.6.17.j2 b/template/redis/redis2.6.17.j2 deleted file mode 100644 index ae58e97c..00000000 --- a/template/redis/redis2.6.17.j2 +++ /dev/null @@ -1,595 +0,0 @@ -# Redis configuration file example - -# Note on units: when memory size is needed, it is possible to specify -# it in the usual form of 1k 5GB 4M and so forth: -# -# 1k => 1000 bytes -# 1kb => 1024 bytes -# 1m => 1000000 bytes -# 1mb => 1024*1024 bytes -# 1g => 1000000000 bytes -# 1gb => 1024*1024*1024 bytes -# -# units are case insensitive so 1GB 1Gb 1gB are all the same. -{{extend}} -# By default Redis does not run as a daemon. Use 'yes' if you need it. -# Note that Redis will write a pid file in /var/run/redis.pid when daemonized. -daemonize yes - -# When running daemonized, Redis writes a pid file in /var/run/redis.pid by -# default. You can specify a custom pid file location here. -pidfile /var/run/redis_{{port}}.pid - -# Accept connections on the specified port, default is 6379. -# If port 0 is specified Redis will not listen on a TCP socket. -port {{port}} - -# If you want you can bind a single interface, if the bind option is not -# specified all the interfaces will listen for incoming connections. -# -# bind 127.0.0.1 -bind {{bind}} -# Specify the path for the unix socket that will be used to listen for -# incoming connections. There is no default, so Redis will not listen -# on a unix socket when not specified. -# -# unixsocket /tmp/redis.sock -# unixsocketperm 755 - -# Close the connection after a client is idle for N seconds (0 to disable) -timeout 0 - -# TCP keepalive. -# -# If non-zero, use SO_KEEPALIVE to send TCP ACKs to clients in absence -# of communication. This is useful for two reasons: -# -# 1) Detect dead peers. -# 2) Take the connection alive from the point of view of network -# equipment in the middle. -# -# On Linux, the specified value (in seconds) is the period used to send ACKs. -# Note that to close the connection the double of the time is needed. -# On other kernels the period depends on the kernel configuration. -# -# A reasonable value for this option is 60 seconds. -tcp-keepalive 0 - -# Specify the server verbosity level. -# This can be one of: -# debug (a lot of information, useful for development/testing) -# verbose (many rarely useful info, but not a mess like the debug level) -# notice (moderately verbose, what you want in production probably) -# warning (only very important / critical messages are logged) -loglevel notice - -# Specify the log file name. Also 'stdout' can be used to force -# Redis to log on the standard output. Note that if you use standard -# output for logging but daemonize, logs will be sent to /dev/null -logfile "{{logfile}}" - -# To enable logging to the system logger, just set 'syslog-enabled' to yes, -# and optionally update the other syslog parameters to suit your needs. -# syslog-enabled no - -# Specify the syslog identity. -# syslog-ident redis - -# Specify the syslog facility. Must be USER or between LOCAL0-LOCAL7. -# syslog-facility local0 - -# Set the number of databases. The default database is DB 0, you can select -# a different one on a per-connection basis using SELECT where -# dbid is a number between 0 and 'databases'-1 -databases 16 - -################################ SNAPSHOTTING ################################# -# -# Save the DB on disk: -# -# save -# -# Will save the DB if both the given number of seconds and the given -# number of write operations against the DB occurred. -# -# In the example below the behaviour will be to save: -# after 900 sec (15 min) if at least 1 key changed -# after 300 sec (5 min) if at least 10 keys changed -# after 60 sec if at least 10000 keys changed -# -# Note: you can disable saving at all commenting all the "save" lines. -# -# It is also possible to remove all the previously configured save -# points by adding a save directive with a single empty string argument -# like in the following example: -# -# save "" - -{{saveoptions}} - -# By default Redis will stop accepting writes if RDB snapshots are enabled -# (at least one save point) and the latest background save failed. -# This will make the user aware (in an hard way) that data is not persisting -# on disk properly, otherwise chances are that no one will notice and some -# distater will happen. -# -# If the background saving process will start working again Redis will -# automatically allow writes again. -# -# However if you have setup your proper monitoring of the Redis server -# and persistence, you may want to disable this feature so that Redis will -# continue to work as usually even if there are problems with disk, -# permissions, and so forth. -stop-writes-on-bgsave-error yes - -# Compress string objects using LZF when dump .rdb databases? -# For default that's set to 'yes' as it's almost always a win. -# If you want to save some CPU in the saving child set it to 'no' but -# the dataset will likely be bigger if you have compressible values or keys. -rdbcompression yes - -# Since version 5 of RDB a CRC64 checksum is placed at the end of the file. -# This makes the format more resistant to corruption but there is a performance -# hit to pay (around 10%) when saving and loading RDB files, so you can disable it -# for maximum performances. -# -# RDB files created with checksum disabled have a checksum of zero that will -# tell the loading code to skip the check. -rdbchecksum yes - -# The filename where to dump the DB -dbfilename {{dbfilename}} - -# The working directory. -# -# The DB will be written inside this directory, with the filename specified -# above using the 'dbfilename' configuration directive. -# -# The Append Only File will also be created inside this directory. -# -# Note that you must specify a directory here, not a file name. -dir {{dir}} - -################################# REPLICATION ################################# - -# Master-Slave replication. Use slaveof to make a Redis instance a copy of -# another Redis server. Note that the configuration is local to the slave -# so for example it is possible to configure the slave to save the DB with a -# different interval, or to listen to another port, and so on. -# -# slaveof -{{slaveof}} -# If the master is password protected (using the "requirepass" configuration -# directive below) it is possible to tell the slave to authenticate before -# starting the replication synchronization process, otherwise the master will -# refuse the slave request. -# -# masterauth -{{masterauth}} -# When a slave loses its connection with the master, or when the replication -# is still in progress, the slave can act in two different ways: -# -# 1) if slave-serve-stale-data is set to 'yes' (the default) the slave will -# still reply to client requests, possibly with out of date data, or the -# data set may just be empty if this is the first synchronization. -# -# 2) if slave-serve-stale-data is set to 'no' the slave will reply with -# an error "SYNC with master in progress" to all the kind of commands -# but to INFO and SLAVEOF. -# -slave-serve-stale-data yes - -# You can configure a slave instance to accept writes or not. Writing against -# a slave instance may be useful to store some ephemeral data (because data -# written on a slave will be easily deleted after resync with the master) but -# may also cause problems if clients are writing to it because of a -# misconfiguration. -# -# Since Redis 2.6 by default slaves are read-only. -# -# Note: read only slaves are not designed to be exposed to untrusted clients -# on the internet. It's just a protection layer against misuse of the instance. -# Still a read only slave exports by default all the administrative commands -# such as CONFIG, DEBUG, and so forth. To a limited extend you can improve -# security of read only slaves using 'rename-command' to shadow all the -# administrative / dangerous commands. -slave-read-only yes - -# Slaves send PINGs to server in a predefined interval. It's possible to change -# this interval with the repl_ping_slave_period option. The default value is 10 -# seconds. -# -# repl-ping-slave-period 10 - -# The following option sets a timeout for both Bulk transfer I/O timeout and -# master data or ping response timeout. The default value is 60 seconds. -# -# It is important to make sure that this value is greater than the value -# specified for repl-ping-slave-period otherwise a timeout will be detected -# every time there is low traffic between the master and the slave. -# -# repl-timeout 60 - -# Disable TCP_NODELAY on the slave socket after SYNC? -# -# If you select "yes" Redis will use a smaller number of TCP packets and -# less bandwidth to send data to slaves. But this can add a delay for -# the data to appear on the slave side, up to 40 milliseconds with -# Linux kernels using a default configuration. -# -# If you select "no" the delay for data to appear on the slave side will -# be reduced but more bandwidth will be used for replication. -# -# By default we optimize for low latency, but in very high traffic conditions -# or when the master and slaves are many hops away, turning this to "yes" may -# be a good idea. -repl-disable-tcp-nodelay no - -# The slave priority is an integer number published by Redis in the INFO output. -# It is used by Redis Sentinel in order to select a slave to promote into a -# master if the master is no longer working correctly. -# -# A slave with a low priority number is considered better for promotion, so -# for instance if there are three slaves with priority 10, 100, 25 Sentinel will -# pick the one wtih priority 10, that is the lowest. -# -# However a special priority of 0 marks the slave as not able to perform the -# role of master, so a slave with priority of 0 will never be selected by -# Redis Sentinel for promotion. -# -# By default the priority is 100. -slave-priority 100 - -################################## SECURITY ################################### - -# Require clients to issue AUTH before processing any other -# commands. This might be useful in environments in which you do not trust -# others with access to the host running redis-server. -# -# This should stay commented out for backward compatibility and because most -# people do not need auth (e.g. they run their own servers). -# -# Warning: since Redis is pretty fast an outside user can try up to -# 150k passwords per second against a good box. This means that you should -# use a very strong password otherwise it will be very easy to break. -# -# requirepass foobared -requirepass {{requirepass}} -# Command renaming. -# -# It is possible to change the name of dangerous commands in a shared -# environment. For instance the CONFIG command may be renamed into something -# hard to guess so that it will still be available for internal-use tools -# but not available for general clients. -# -# Example: -# -# rename-command CONFIG b840fc02d524045429941cc15f59e41cb7be6c52 -# -# It is also possible to completely kill a command by renaming it into -# an empty string: -# -# rename-command CONFIG "" -# -# Please note that changing the name of commands that are logged into the -# AOF file or transmitted to slaves may cause problems. - -################################### LIMITS #################################### - -# Set the max number of connected clients at the same time. By default -# this limit is set to 10000 clients, however if the Redis server is not -# able to configure the process file limit to allow for the specified limit -# the max number of allowed clients is set to the current file limit -# minus 32 (as Redis reserves a few file descriptors for internal uses). -# -# Once the limit is reached Redis will close all the new connections sending -# an error 'max number of clients reached'. -# -# maxclients 10000 - -# Don't use more memory than the specified amount of bytes. -# When the memory limit is reached Redis will try to remove keys -# accordingly to the eviction policy selected (see maxmemmory-policy). -# -# If Redis can't remove keys according to the policy, or if the policy is -# set to 'noeviction', Redis will start to reply with errors to commands -# that would use more memory, like SET, LPUSH, and so on, and will continue -# to reply to read-only commands like GET. -# -# This option is usually useful when using Redis as an LRU cache, or to set -# an hard memory limit for an instance (using the 'noeviction' policy). -# -# WARNING: If you have slaves attached to an instance with maxmemory on, -# the size of the output buffers needed to feed the slaves are subtracted -# from the used memory count, so that network problems / resyncs will -# not trigger a loop where keys are evicted, and in turn the output -# buffer of slaves is full with DELs of keys evicted triggering the deletion -# of more keys, and so forth until the database is completely emptied. -# -# In short... if you have slaves attached it is suggested that you set a lower -# limit for maxmemory so that there is some free RAM on the system for slave -# output buffers (but this is not needed if the policy is 'noeviction'). -# -# maxmemory - -# MAXMEMORY POLICY: how Redis will select what to remove when maxmemory -# is reached. You can select among five behaviors: -# -# volatile-lru -> remove the key with an expire set using an LRU algorithm -# allkeys-lru -> remove any key accordingly to the LRU algorithm -# volatile-random -> remove a random key with an expire set -# allkeys-random -> remove a random key, any key -# volatile-ttl -> remove the key with the nearest expire time (minor TTL) -# noeviction -> don't expire at all, just return an error on write operations -# -# Note: with any of the above policies, Redis will return an error on write -# operations, when there are not suitable keys for eviction. -# -# At the date of writing this commands are: set setnx setex append -# incr decr rpush lpush rpushx lpushx linsert lset rpoplpush sadd -# sinter sinterstore sunion sunionstore sdiff sdiffstore zadd zincrby -# zunionstore zinterstore hset hsetnx hmset hincrby incrby decrby -# getset mset msetnx exec sort -# -# The default is: -# -# maxmemory-policy volatile-lru - -# LRU and minimal TTL algorithms are not precise algorithms but approximated -# algorithms (in order to save memory), so you can select as well the sample -# size to check. For instance for default Redis will check three keys and -# pick the one that was used less recently, you can change the sample size -# using the following configuration directive. -# -# maxmemory-samples 3 - -############################## APPEND ONLY MODE ############################### - -# By default Redis asynchronously dumps the dataset on disk. This mode is -# good enough in many applications, but an issue with the Redis process or -# a power outage may result into a few minutes of writes lost (depending on -# the configured save points). -# -# The Append Only File is an alternative persistence mode that provides -# much better durability. For instance using the default data fsync policy -# (see later in the config file) Redis can lose just one second of writes in a -# dramatic event like a server power outage, or a single write if something -# wrong with the Redis process itself happens, but the operating system is -# still running correctly. -# -# AOF and RDB persistence can be enabled at the same time without problems. -# If the AOF is enabled on startup Redis will load the AOF, that is the file -# with the better durability guarantees. -# -# Please check http://redis.io/topics/persistence for more information. - -appendonly {{appendonly}} - -# The name of the append only file (default: "appendonly.aof") -# appendfilename appendonly.aof - -# The fsync() call tells the Operating System to actually write data on disk -# instead to wait for more data in the output buffer. Some OS will really flush -# data on disk, some other OS will just try to do it ASAP. -# -# Redis supports three different modes: -# -# no: don't fsync, just let the OS flush the data when it wants. Faster. -# always: fsync after every write to the append only log . Slow, Safest. -# everysec: fsync only one time every second. Compromise. -# -# The default is "everysec", as that's usually the right compromise between -# speed and data safety. It's up to you to understand if you can relax this to -# "no" that will let the operating system flush the output buffer when -# it wants, for better performances (but if you can live with the idea of -# some data loss consider the default persistence mode that's snapshotting), -# or on the contrary, use "always" that's very slow but a bit safer than -# everysec. -# -# More details please check the following article: -# http://antirez.com/post/redis-persistence-demystified.html -# -# If unsure, use "everysec". - -# appendfsync always -appendfsync everysec -# appendfsync no - -# When the AOF fsync policy is set to always or everysec, and a background -# saving process (a background save or AOF log background rewriting) is -# performing a lot of I/O against the disk, in some Linux configurations -# Redis may block too long on the fsync() call. Note that there is no fix for -# this currently, as even performing fsync in a different thread will block -# our synchronous write(2) call. -# -# In order to mitigate this problem it's possible to use the following option -# that will prevent fsync() from being called in the main process while a -# BGSAVE or BGREWRITEAOF is in progress. -# -# This means that while another child is saving, the durability of Redis is -# the same as "appendfsync none". In practical terms, this means that it is -# possible to lose up to 30 seconds of log in the worst scenario (with the -# default Linux settings). -# -# If you have latency problems turn this to "yes". Otherwise leave it as -# "no" that is the safest pick from the point of view of durability. -no-appendfsync-on-rewrite {{noonrewrite}} - -# Automatic rewrite of the append only file. -# Redis is able to automatically rewrite the log file implicitly calling -# BGREWRITEAOF when the AOF log size grows by the specified percentage. -# -# This is how it works: Redis remembers the size of the AOF file after the -# latest rewrite (if no rewrite has happened since the restart, the size of -# the AOF at startup is used). -# -# This base size is compared to the current size. If the current size is -# bigger than the specified percentage, the rewrite is triggered. Also -# you need to specify a minimal size for the AOF file to be rewritten, this -# is useful to avoid rewriting the AOF file even if the percentage increase -# is reached but it is still pretty small. -# -# Specify a percentage of zero in order to disable the automatic AOF -# rewrite feature. - -auto-aof-rewrite-percentage 100 -auto-aof-rewrite-min-size 64mb - -################################ LUA SCRIPTING ############################### - -# Max execution time of a Lua script in milliseconds. -# -# If the maximum execution time is reached Redis will log that a script is -# still in execution after the maximum allowed time and will start to -# reply to queries with an error. -# -# When a long running script exceed the maximum execution time only the -# SCRIPT KILL and SHUTDOWN NOSAVE commands are available. The first can be -# used to stop a script that did not yet called write commands. The second -# is the only way to shut down the server in the case a write commands was -# already issue by the script but the user don't want to wait for the natural -# termination of the script. -# -# Set it to 0 or a negative value for unlimited execution without warnings. -lua-time-limit 5000 - -################################## SLOW LOG ################################### - -# The Redis Slow Log is a system to log queries that exceeded a specified -# execution time. The execution time does not include the I/O operations -# like talking with the client, sending the reply and so forth, -# but just the time needed to actually execute the command (this is the only -# stage of command execution where the thread is blocked and can not serve -# other requests in the meantime). -# -# You can configure the slow log with two parameters: one tells Redis -# what is the execution time, in microseconds, to exceed in order for the -# command to get logged, and the other parameter is the length of the -# slow log. When a new command is logged the oldest one is removed from the -# queue of logged commands. - -# The following time is expressed in microseconds, so 1000000 is equivalent -# to one second. Note that a negative number disables the slow log, while -# a value of zero forces the logging of every command. -slowlog-log-slower-than 10000 - -# There is no limit to this length. Just be aware that it will consume memory. -# You can reclaim memory used by the slow log with SLOWLOG RESET. -slowlog-max-len 128 - -############################### ADVANCED CONFIG ############################### - -# Hashes are encoded using a memory efficient data structure when they have a -# small number of entries, and the biggest entry does not exceed a given -# threshold. These thresholds can be configured using the following directives. -hash-max-ziplist-entries 512 -hash-max-ziplist-value 64 - -# Similarly to hashes, small lists are also encoded in a special way in order -# to save a lot of space. The special representation is only used when -# you are under the following limits: -list-max-ziplist-entries 512 -list-max-ziplist-value 64 - -# Sets have a special encoding in just one case: when a set is composed -# of just strings that happens to be integers in radix 10 in the range -# of 64 bit signed integers. -# The following configuration setting sets the limit in the size of the -# set in order to use this special memory saving encoding. -set-max-intset-entries 512 - -# Similarly to hashes and lists, sorted sets are also specially encoded in -# order to save a lot of space. This encoding is only used when the length and -# elements of a sorted set are below the following limits: -zset-max-ziplist-entries 128 -zset-max-ziplist-value 64 - -# Active rehashing uses 1 millisecond every 100 milliseconds of CPU time in -# order to help rehashing the main Redis hash table (the one mapping top-level -# keys to values). The hash table implementation Redis uses (see dict.c) -# performs a lazy rehashing: the more operation you run into an hash table -# that is rehashing, the more rehashing "steps" are performed, so if the -# server is idle the rehashing is never complete and some more memory is used -# by the hash table. -# -# The default is to use this millisecond 10 times every second in order to -# active rehashing the main dictionaries, freeing memory when possible. -# -# If unsure: -# use "activerehashing no" if you have hard latency requirements and it is -# not a good thing in your environment that Redis can reply form time to time -# to queries with 2 milliseconds delay. -# -# use "activerehashing yes" if you don't have such hard requirements but -# want to free memory asap when possible. -activerehashing yes - -# The client output buffer limits can be used to force disconnection of clients -# that are not reading data from the server fast enough for some reason (a -# common reason is that a Pub/Sub client can't consume messages as fast as the -# publisher can produce them). -# -# The limit can be set differently for the three different classes of clients: -# -# normal -> normal clients -# slave -> slave clients and MONITOR clients -# pubsub -> clients subcribed to at least one pubsub channel or pattern -# -# The syntax of every client-output-buffer-limit directive is the following: -# -# client-output-buffer-limit -# -# A client is immediately disconnected once the hard limit is reached, or if -# the soft limit is reached and remains reached for the specified number of -# seconds (continuously). -# So for instance if the hard limit is 32 megabytes and the soft limit is -# 16 megabytes / 10 seconds, the client will get disconnected immediately -# if the size of the output buffers reach 32 megabytes, but will also get -# disconnected if the client reaches 16 megabytes and continuously overcomes -# the limit for 10 seconds. -# -# By default normal clients are not limited because they don't receive data -# without asking (in a push way), but just after a request, so only -# asynchronous clients may create a scenario where data is requested faster -# than it can read. -# -# Instead there is a default limit for pubsub and slave clients, since -# subscribers and slaves receive data in a push fashion. -# -# Both the hard or the soft limit can be disabled by setting them to zero. -client-output-buffer-limit normal 0 0 0 -client-output-buffer-limit slave 256mb 64mb 60 -client-output-buffer-limit pubsub 32mb 8mb 60 - -# Redis calls an internal function to perform many background tasks, like -# closing connections of clients in timeot, purging expired keys that are -# never requested, and so forth. -# -# Not all tasks are perforemd with the same frequency, but Redis checks for -# tasks to perform accordingly to the specified "hz" value. -# -# By default "hz" is set to 10. Raising the value will use more CPU when -# Redis is idle, but at the same time will make Redis more responsive when -# there are many keys expiring at the same time, and timeouts may be -# handled with more precision. -# -# The range is between 1 and 500, however a value over 100 is usually not -# a good idea. Most users should use the default of 10 and raise this up to -# 100 only in environments where very low latency is required. -hz 10 - -# When a child rewrites the AOF file, if the following option is enabled -# the file will be fsync-ed every 32 MB of data generated. This is useful -# in order to commit the file to the disk more incrementally and avoid -# big latency spikes. -aof-rewrite-incremental-fsync yes - -################################## INCLUDES ################################### - -# Include one or more other config files here. This is useful if you -# have a standard template that goes to all Redis server but also need -# to customize a few per-server settings. Include files can include -# other files, so use this wisely. -# -# include /path/to/local.conf -# include /path/to/other.conf diff --git a/template/redis/redis3.0.7.j2 b/template/redis/redis3.0.7.j2 deleted file mode 100644 index 2cc231d8..00000000 --- a/template/redis/redis3.0.7.j2 +++ /dev/null @@ -1,941 +0,0 @@ -# Redis configuration file example. -# -# Note that in order to read the configuration file, Redis must be -# started with the file path as first argument: -# -# ./redis-server /path/to/redis.conf - -# Note on units: when memory size is needed, it is possible to specify -# it in the usual form of 1k 5GB 4M and so forth: -# -# 1k => 1000 bytes -# 1kb => 1024 bytes -# 1m => 1000000 bytes -# 1mb => 1024*1024 bytes -# 1g => 1000000000 bytes -# 1gb => 1024*1024*1024 bytes -# -# units are case insensitive so 1GB 1Gb 1gB are all the same. -{{extend}} -################################## INCLUDES ################################### - -# Include one or more other config files here. This is useful if you -# have a standard template that goes to all Redis servers but also need -# to customize a few per-server settings. Include files can include -# other files, so use this wisely. -# -# Notice option "include" won't be rewritten by command "CONFIG REWRITE" -# from admin or Redis Sentinel. Since Redis always uses the last processed -# line as value of a configuration directive, you'd better put includes -# at the beginning of this file to avoid overwriting config change at runtime. -# -# If instead you are interested in using includes to override configuration -# options, it is better to use include as the last line. -# -# include /path/to/local.conf -# include /path/to/other.conf - -################################ GENERAL ##################################### - -# By default Redis does not run as a daemon. Use 'yes' if you need it. -# Note that Redis will write a pid file in /var/run/redis.pid when daemonized. -daemonize yes - -# When running daemonized, Redis writes a pid file in /var/run/redis.pid by -# default. You can specify a custom pid file location here. -pidfile /var/run/redis.pid - -# Accept connections on the specified port, default is 6379. -# If port 0 is specified Redis will not listen on a TCP socket. -port {{port}} - -# TCP listen() backlog. -# -# In high requests-per-second environments you need an high backlog in order -# to avoid slow clients connections issues. Note that the Linux kernel -# will silently truncate it to the value of /proc/sys/net/core/somaxconn so -# make sure to raise both the value of somaxconn and tcp_max_syn_backlog -# in order to get the desired effect. -tcp-backlog 511 - -# By default Redis listens for connections from all the network interfaces -# available on the server. It is possible to listen to just one or multiple -# interfaces using the "bind" configuration directive, followed by one or -# more IP addresses. -# -# Examples: -# -# bind 192.168.1.100 10.0.0.1 -# bind 127.0.0.1 -bind {{bind}} -# Specify the path for the Unix socket that will be used to listen for -# incoming connections. There is no default, so Redis will not listen -# on a unix socket when not specified. -# -# unixsocket /tmp/redis.sock -# unixsocketperm 700 - -# Close the connection after a client is idle for N seconds (0 to disable) -timeout 0 - -# TCP keepalive. -# -# If non-zero, use SO_KEEPALIVE to send TCP ACKs to clients in absence -# of communication. This is useful for two reasons: -# -# 1) Detect dead peers. -# 2) Take the connection alive from the point of view of network -# equipment in the middle. -# -# On Linux, the specified value (in seconds) is the period used to send ACKs. -# Note that to close the connection the double of the time is needed. -# On other kernels the period depends on the kernel configuration. -# -# A reasonable value for this option is 60 seconds. -tcp-keepalive 0 - -# Specify the server verbosity level. -# This can be one of: -# debug (a lot of information, useful for development/testing) -# verbose (many rarely useful info, but not a mess like the debug level) -# notice (moderately verbose, what you want in production probably) -# warning (only very important / critical messages are logged) -loglevel notice - -# Specify the log file name. Also the empty string can be used to force -# Redis to log on the standard output. Note that if you use standard -# output for logging but daemonize, logs will be sent to /dev/null -logfile {{logfile}} - -# To enable logging to the system logger, just set 'syslog-enabled' to yes, -# and optionally update the other syslog parameters to suit your needs. -# syslog-enabled no - -# Specify the syslog identity. -# syslog-ident redis - -# Specify the syslog facility. Must be USER or between LOCAL0-LOCAL7. -# syslog-facility local0 - -# Set the number of databases. The default database is DB 0, you can select -# a different one on a per-connection basis using SELECT where -# dbid is a number between 0 and 'databases'-1 -databases 16 - -################################ SNAPSHOTTING ################################ -# -# Save the DB on disk: -# -# save -# -# Will save the DB if both the given number of seconds and the given -# number of write operations against the DB occurred. -# -# In the example below the behaviour will be to save: -# after 900 sec (15 min) if at least 1 key changed -# after 300 sec (5 min) if at least 10 keys changed -# after 60 sec if at least 10000 keys changed -# -# Note: you can disable saving completely by commenting out all "save" lines. -# -# It is also possible to remove all the previously configured save -# points by adding a save directive with a single empty string argument -# like in the following example: -# -# save "" - -{{saveoptions}} - -# By default Redis will stop accepting writes if RDB snapshots are enabled -# (at least one save point) and the latest background save failed. -# This will make the user aware (in a hard way) that data is not persisting -# on disk properly, otherwise chances are that no one will notice and some -# disaster will happen. -# -# If the background saving process will start working again Redis will -# automatically allow writes again. -# -# However if you have setup your proper monitoring of the Redis server -# and persistence, you may want to disable this feature so that Redis will -# continue to work as usual even if there are problems with disk, -# permissions, and so forth. -stop-writes-on-bgsave-error yes - -# Compress string objects using LZF when dump .rdb databases? -# For default that's set to 'yes' as it's almost always a win. -# If you want to save some CPU in the saving child set it to 'no' but -# the dataset will likely be bigger if you have compressible values or keys. -rdbcompression yes - -# Since version 5 of RDB a CRC64 checksum is placed at the end of the file. -# This makes the format more resistant to corruption but there is a performance -# hit to pay (around 10%) when saving and loading RDB files, so you can disable it -# for maximum performances. -# -# RDB files created with checksum disabled have a checksum of zero that will -# tell the loading code to skip the check. -rdbchecksum yes - -# The filename where to dump the DB -dbfilename {{dbfilename}} - -# The working directory. -# -# The DB will be written inside this directory, with the filename specified -# above using the 'dbfilename' configuration directive. -# -# The Append Only File will also be created inside this directory. -# -# Note that you must specify a directory here, not a file name. -dir {{dir}} - -################################# REPLICATION ################################# - -# Master-Slave replication. Use slaveof to make a Redis instance a copy of -# another Redis server. A few things to understand ASAP about Redis replication. -# -# 1) Redis replication is asynchronous, but you can configure a master to -# stop accepting writes if it appears to be not connected with at least -# a given number of slaves. -# 2) Redis slaves are able to perform a partial resynchronization with the -# master if the replication link is lost for a relatively small amount of -# time. You may want to configure the replication backlog size (see the next -# sections of this file) with a sensible value depending on your needs. -# 3) Replication is automatic and does not need user intervention. After a -# network partition slaves automatically try to reconnect to masters -# and resynchronize with them. -# -# slaveof -{{slaveof}} -# If the master is password protected (using the "requirepass" configuration -# directive below) it is possible to tell the slave to authenticate before -# starting the replication synchronization process, otherwise the master will -# refuse the slave request. -# -# masterauth -{{masterauth}} -# When a slave loses its connection with the master, or when the replication -# is still in progress, the slave can act in two different ways: -# -# 1) if slave-serve-stale-data is set to 'yes' (the default) the slave will -# still reply to client requests, possibly with out of date data, or the -# data set may just be empty if this is the first synchronization. -# -# 2) if slave-serve-stale-data is set to 'no' the slave will reply with -# an error "SYNC with master in progress" to all the kind of commands -# but to INFO and SLAVEOF. -# -slave-serve-stale-data yes - -# You can configure a slave instance to accept writes or not. Writing against -# a slave instance may be useful to store some ephemeral data (because data -# written on a slave will be easily deleted after resync with the master) but -# may also cause problems if clients are writing to it because of a -# misconfiguration. -# -# Since Redis 2.6 by default slaves are read-only. -# -# Note: read only slaves are not designed to be exposed to untrusted clients -# on the internet. It's just a protection layer against misuse of the instance. -# Still a read only slave exports by default all the administrative commands -# such as CONFIG, DEBUG, and so forth. To a limited extent you can improve -# security of read only slaves using 'rename-command' to shadow all the -# administrative / dangerous commands. -slave-read-only yes - -# Replication SYNC strategy: disk or socket. -# -# ------------------------------------------------------- -# WARNING: DISKLESS REPLICATION IS EXPERIMENTAL CURRENTLY -# ------------------------------------------------------- -# -# New slaves and reconnecting slaves that are not able to continue the replication -# process just receiving differences, need to do what is called a "full -# synchronization". An RDB file is transmitted from the master to the slaves. -# The transmission can happen in two different ways: -# -# 1) Disk-backed: The Redis master creates a new process that writes the RDB -# file on disk. Later the file is transferred by the parent -# process to the slaves incrementally. -# 2) Diskless: The Redis master creates a new process that directly writes the -# RDB file to slave sockets, without touching the disk at all. -# -# With disk-backed replication, while the RDB file is generated, more slaves -# can be queued and served with the RDB file as soon as the current child producing -# the RDB file finishes its work. With diskless replication instead once -# the transfer starts, new slaves arriving will be queued and a new transfer -# will start when the current one terminates. -# -# When diskless replication is used, the master waits a configurable amount of -# time (in seconds) before starting the transfer in the hope that multiple slaves -# will arrive and the transfer can be parallelized. -# -# With slow disks and fast (large bandwidth) networks, diskless replication -# works better. -repl-diskless-sync no - -# When diskless replication is enabled, it is possible to configure the delay -# the server waits in order to spawn the child that transfers the RDB via socket -# to the slaves. -# -# This is important since once the transfer starts, it is not possible to serve -# new slaves arriving, that will be queued for the next RDB transfer, so the server -# waits a delay in order to let more slaves arrive. -# -# The delay is specified in seconds, and by default is 5 seconds. To disable -# it entirely just set it to 0 seconds and the transfer will start ASAP. -repl-diskless-sync-delay 5 - -# Slaves send PINGs to server in a predefined interval. It's possible to change -# this interval with the repl_ping_slave_period option. The default value is 10 -# seconds. -# -# repl-ping-slave-period 10 - -# The following option sets the replication timeout for: -# -# 1) Bulk transfer I/O during SYNC, from the point of view of slave. -# 2) Master timeout from the point of view of slaves (data, pings). -# 3) Slave timeout from the point of view of masters (REPLCONF ACK pings). -# -# It is important to make sure that this value is greater than the value -# specified for repl-ping-slave-period otherwise a timeout will be detected -# every time there is low traffic between the master and the slave. -# -# repl-timeout 60 - -# Disable TCP_NODELAY on the slave socket after SYNC? -# -# If you select "yes" Redis will use a smaller number of TCP packets and -# less bandwidth to send data to slaves. But this can add a delay for -# the data to appear on the slave side, up to 40 milliseconds with -# Linux kernels using a default configuration. -# -# If you select "no" the delay for data to appear on the slave side will -# be reduced but more bandwidth will be used for replication. -# -# By default we optimize for low latency, but in very high traffic conditions -# or when the master and slaves are many hops away, turning this to "yes" may -# be a good idea. -repl-disable-tcp-nodelay no - -# Set the replication backlog size. The backlog is a buffer that accumulates -# slave data when slaves are disconnected for some time, so that when a slave -# wants to reconnect again, often a full resync is not needed, but a partial -# resync is enough, just passing the portion of data the slave missed while -# disconnected. -# -# The bigger the replication backlog, the longer the time the slave can be -# disconnected and later be able to perform a partial resynchronization. -# -# The backlog is only allocated once there is at least a slave connected. -# -# repl-backlog-size 1mb - -# After a master has no longer connected slaves for some time, the backlog -# will be freed. The following option configures the amount of seconds that -# need to elapse, starting from the time the last slave disconnected, for -# the backlog buffer to be freed. -# -# A value of 0 means to never release the backlog. -# -# repl-backlog-ttl 3600 - -# The slave priority is an integer number published by Redis in the INFO output. -# It is used by Redis Sentinel in order to select a slave to promote into a -# master if the master is no longer working correctly. -# -# A slave with a low priority number is considered better for promotion, so -# for instance if there are three slaves with priority 10, 100, 25 Sentinel will -# pick the one with priority 10, that is the lowest. -# -# However a special priority of 0 marks the slave as not able to perform the -# role of master, so a slave with priority of 0 will never be selected by -# Redis Sentinel for promotion. -# -# By default the priority is 100. -slave-priority 100 - -# It is possible for a master to stop accepting writes if there are less than -# N slaves connected, having a lag less or equal than M seconds. -# -# The N slaves need to be in "online" state. -# -# The lag in seconds, that must be <= the specified value, is calculated from -# the last ping received from the slave, that is usually sent every second. -# -# This option does not GUARANTEE that N replicas will accept the write, but -# will limit the window of exposure for lost writes in case not enough slaves -# are available, to the specified number of seconds. -# -# For example to require at least 3 slaves with a lag <= 10 seconds use: -# -# min-slaves-to-write 3 -# min-slaves-max-lag 10 -# -# Setting one or the other to 0 disables the feature. -# -# By default min-slaves-to-write is set to 0 (feature disabled) and -# min-slaves-max-lag is set to 10. - -################################## SECURITY ################################### - -# Require clients to issue AUTH before processing any other -# commands. This might be useful in environments in which you do not trust -# others with access to the host running redis-server. -# -# This should stay commented out for backward compatibility and because most -# people do not need auth (e.g. they run their own servers). -# -# Warning: since Redis is pretty fast an outside user can try up to -# 150k passwords per second against a good box. This means that you should -# use a very strong password otherwise it will be very easy to break. -# -# requirepass foobared -requirepass {{requirepass}} -# Command renaming. -# -# It is possible to change the name of dangerous commands in a shared -# environment. For instance the CONFIG command may be renamed into something -# hard to guess so that it will still be available for internal-use tools -# but not available for general clients. -# -# Example: -# -# rename-command CONFIG b840fc02d524045429941cc15f59e41cb7be6c52 -# -# It is also possible to completely kill a command by renaming it into -# an empty string: -# -# rename-command CONFIG "" -# -# Please note that changing the name of commands that are logged into the -# AOF file or transmitted to slaves may cause problems. - -################################### LIMITS #################################### - -# Set the max number of connected clients at the same time. By default -# this limit is set to 10000 clients, however if the Redis server is not -# able to configure the process file limit to allow for the specified limit -# the max number of allowed clients is set to the current file limit -# minus 32 (as Redis reserves a few file descriptors for internal uses). -# -# Once the limit is reached Redis will close all the new connections sending -# an error 'max number of clients reached'. -# -# maxclients 10000 - -# Don't use more memory than the specified amount of bytes. -# When the memory limit is reached Redis will try to remove keys -# according to the eviction policy selected (see maxmemory-policy). -# -# If Redis can't remove keys according to the policy, or if the policy is -# set to 'noeviction', Redis will start to reply with errors to commands -# that would use more memory, like SET, LPUSH, and so on, and will continue -# to reply to read-only commands like GET. -# -# This option is usually useful when using Redis as an LRU cache, or to set -# a hard memory limit for an instance (using the 'noeviction' policy). -# -# WARNING: If you have slaves attached to an instance with maxmemory on, -# the size of the output buffers needed to feed the slaves are subtracted -# from the used memory count, so that network problems / resyncs will -# not trigger a loop where keys are evicted, and in turn the output -# buffer of slaves is full with DELs of keys evicted triggering the deletion -# of more keys, and so forth until the database is completely emptied. -# -# In short... if you have slaves attached it is suggested that you set a lower -# limit for maxmemory so that there is some free RAM on the system for slave -# output buffers (but this is not needed if the policy is 'noeviction'). -# -# maxmemory - -# MAXMEMORY POLICY: how Redis will select what to remove when maxmemory -# is reached. You can select among five behaviors: -# -# volatile-lru -> remove the key with an expire set using an LRU algorithm -# allkeys-lru -> remove any key according to the LRU algorithm -# volatile-random -> remove a random key with an expire set -# allkeys-random -> remove a random key, any key -# volatile-ttl -> remove the key with the nearest expire time (minor TTL) -# noeviction -> don't expire at all, just return an error on write operations -# -# Note: with any of the above policies, Redis will return an error on write -# operations, when there are no suitable keys for eviction. -# -# At the date of writing these commands are: set setnx setex append -# incr decr rpush lpush rpushx lpushx linsert lset rpoplpush sadd -# sinter sinterstore sunion sunionstore sdiff sdiffstore zadd zincrby -# zunionstore zinterstore hset hsetnx hmset hincrby incrby decrby -# getset mset msetnx exec sort -# -# The default is: -# -# maxmemory-policy noeviction - -# LRU and minimal TTL algorithms are not precise algorithms but approximated -# algorithms (in order to save memory), so you can tune it for speed or -# accuracy. For default Redis will check five keys and pick the one that was -# used less recently, you can change the sample size using the following -# configuration directive. -# -# The default of 5 produces good enough results. 10 Approximates very closely -# true LRU but costs a bit more CPU. 3 is very fast but not very accurate. -# -# maxmemory-samples 5 - -############################## APPEND ONLY MODE ############################### - -# By default Redis asynchronously dumps the dataset on disk. This mode is -# good enough in many applications, but an issue with the Redis process or -# a power outage may result into a few minutes of writes lost (depending on -# the configured save points). -# -# The Append Only File is an alternative persistence mode that provides -# much better durability. For instance using the default data fsync policy -# (see later in the config file) Redis can lose just one second of writes in a -# dramatic event like a server power outage, or a single write if something -# wrong with the Redis process itself happens, but the operating system is -# still running correctly. -# -# AOF and RDB persistence can be enabled at the same time without problems. -# If the AOF is enabled on startup Redis will load the AOF, that is the file -# with the better durability guarantees. -# -# Please check http://redis.io/topics/persistence for more information. - -appendonly {{appendonly}} - -# The name of the append only file (default: "appendonly.aof") - -appendfilename "appendonly.aof" - -# The fsync() call tells the Operating System to actually write data on disk -# instead of waiting for more data in the output buffer. Some OS will really flush -# data on disk, some other OS will just try to do it ASAP. -# -# Redis supports three different modes: -# -# no: don't fsync, just let the OS flush the data when it wants. Faster. -# always: fsync after every write to the append only log. Slow, Safest. -# everysec: fsync only one time every second. Compromise. -# -# The default is "everysec", as that's usually the right compromise between -# speed and data safety. It's up to you to understand if you can relax this to -# "no" that will let the operating system flush the output buffer when -# it wants, for better performances (but if you can live with the idea of -# some data loss consider the default persistence mode that's snapshotting), -# or on the contrary, use "always" that's very slow but a bit safer than -# everysec. -# -# More details please check the following article: -# http://antirez.com/post/redis-persistence-demystified.html -# -# If unsure, use "everysec". - -# appendfsync always -appendfsync everysec -# appendfsync no - -# When the AOF fsync policy is set to always or everysec, and a background -# saving process (a background save or AOF log background rewriting) is -# performing a lot of I/O against the disk, in some Linux configurations -# Redis may block too long on the fsync() call. Note that there is no fix for -# this currently, as even performing fsync in a different thread will block -# our synchronous write(2) call. -# -# In order to mitigate this problem it's possible to use the following option -# that will prevent fsync() from being called in the main process while a -# BGSAVE or BGREWRITEAOF is in progress. -# -# This means that while another child is saving, the durability of Redis is -# the same as "appendfsync none". In practical terms, this means that it is -# possible to lose up to 30 seconds of log in the worst scenario (with the -# default Linux settings). -# -# If you have latency problems turn this to "yes". Otherwise leave it as -# "no" that is the safest pick from the point of view of durability. - -no-appendfsync-on-rewrite {{noonrewrite}} - -# Automatic rewrite of the append only file. -# Redis is able to automatically rewrite the log file implicitly calling -# BGREWRITEAOF when the AOF log size grows by the specified percentage. -# -# This is how it works: Redis remembers the size of the AOF file after the -# latest rewrite (if no rewrite has happened since the restart, the size of -# the AOF at startup is used). -# -# This base size is compared to the current size. If the current size is -# bigger than the specified percentage, the rewrite is triggered. Also -# you need to specify a minimal size for the AOF file to be rewritten, this -# is useful to avoid rewriting the AOF file even if the percentage increase -# is reached but it is still pretty small. -# -# Specify a percentage of zero in order to disable the automatic AOF -# rewrite feature. - -auto-aof-rewrite-percentage 100 -auto-aof-rewrite-min-size 64mb - -# An AOF file may be found to be truncated at the end during the Redis -# startup process, when the AOF data gets loaded back into memory. -# This may happen when the system where Redis is running -# crashes, especially when an ext4 filesystem is mounted without the -# data=ordered option (however this can't happen when Redis itself -# crashes or aborts but the operating system still works correctly). -# -# Redis can either exit with an error when this happens, or load as much -# data as possible (the default now) and start if the AOF file is found -# to be truncated at the end. The following option controls this behavior. -# -# If aof-load-truncated is set to yes, a truncated AOF file is loaded and -# the Redis server starts emitting a log to inform the user of the event. -# Otherwise if the option is set to no, the server aborts with an error -# and refuses to start. When the option is set to no, the user requires -# to fix the AOF file using the "redis-check-aof" utility before to restart -# the server. -# -# Note that if the AOF file will be found to be corrupted in the middle -# the server will still exit with an error. This option only applies when -# Redis will try to read more data from the AOF file but not enough bytes -# will be found. -aof-load-truncated yes - -################################ LUA SCRIPTING ############################### - -# Max execution time of a Lua script in milliseconds. -# -# If the maximum execution time is reached Redis will log that a script is -# still in execution after the maximum allowed time and will start to -# reply to queries with an error. -# -# When a long running script exceeds the maximum execution time only the -# SCRIPT KILL and SHUTDOWN NOSAVE commands are available. The first can be -# used to stop a script that did not yet called write commands. The second -# is the only way to shut down the server in the case a write command was -# already issued by the script but the user doesn't want to wait for the natural -# termination of the script. -# -# Set it to 0 or a negative value for unlimited execution without warnings. -lua-time-limit 5000 - -################################ REDIS CLUSTER ############################### -# -# ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -# WARNING EXPERIMENTAL: Redis Cluster is considered to be stable code, however -# in order to mark it as "mature" we need to wait for a non trivial percentage -# of users to deploy it in production. -# ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -# -# Normal Redis instances can't be part of a Redis Cluster; only nodes that are -# started as cluster nodes can. In order to start a Redis instance as a -# cluster node enable the cluster support uncommenting the following: -# -# cluster-enabled yes - -# Every cluster node has a cluster configuration file. This file is not -# intended to be edited by hand. It is created and updated by Redis nodes. -# Every Redis Cluster node requires a different cluster configuration file. -# Make sure that instances running in the same system do not have -# overlapping cluster configuration file names. -# -# cluster-config-file nodes-6379.conf - -# Cluster node timeout is the amount of milliseconds a node must be unreachable -# for it to be considered in failure state. -# Most other internal time limits are multiple of the node timeout. -# -# cluster-node-timeout 15000 - -# A slave of a failing master will avoid to start a failover if its data -# looks too old. -# -# There is no simple way for a slave to actually have a exact measure of -# its "data age", so the following two checks are performed: -# -# 1) If there are multiple slaves able to failover, they exchange messages -# in order to try to give an advantage to the slave with the best -# replication offset (more data from the master processed). -# Slaves will try to get their rank by offset, and apply to the start -# of the failover a delay proportional to their rank. -# -# 2) Every single slave computes the time of the last interaction with -# its master. This can be the last ping or command received (if the master -# is still in the "connected" state), or the time that elapsed since the -# disconnection with the master (if the replication link is currently down). -# If the last interaction is too old, the slave will not try to failover -# at all. -# -# The point "2" can be tuned by user. Specifically a slave will not perform -# the failover if, since the last interaction with the master, the time -# elapsed is greater than: -# -# (node-timeout * slave-validity-factor) + repl-ping-slave-period -# -# So for example if node-timeout is 30 seconds, and the slave-validity-factor -# is 10, and assuming a default repl-ping-slave-period of 10 seconds, the -# slave will not try to failover if it was not able to talk with the master -# for longer than 310 seconds. -# -# A large slave-validity-factor may allow slaves with too old data to failover -# a master, while a too small value may prevent the cluster from being able to -# elect a slave at all. -# -# For maximum availability, it is possible to set the slave-validity-factor -# to a value of 0, which means, that slaves will always try to failover the -# master regardless of the last time they interacted with the master. -# (However they'll always try to apply a delay proportional to their -# offset rank). -# -# Zero is the only value able to guarantee that when all the partitions heal -# the cluster will always be able to continue. -# -# cluster-slave-validity-factor 10 - -# Cluster slaves are able to migrate to orphaned masters, that are masters -# that are left without working slaves. This improves the cluster ability -# to resist to failures as otherwise an orphaned master can't be failed over -# in case of failure if it has no working slaves. -# -# Slaves migrate to orphaned masters only if there are still at least a -# given number of other working slaves for their old master. This number -# is the "migration barrier". A migration barrier of 1 means that a slave -# will migrate only if there is at least 1 other working slave for its master -# and so forth. It usually reflects the number of slaves you want for every -# master in your cluster. -# -# Default is 1 (slaves migrate only if their masters remain with at least -# one slave). To disable migration just set it to a very large value. -# A value of 0 can be set but is useful only for debugging and dangerous -# in production. -# -# cluster-migration-barrier 1 - -# By default Redis Cluster nodes stop accepting queries if they detect there -# is at least an hash slot uncovered (no available node is serving it). -# This way if the cluster is partially down (for example a range of hash slots -# are no longer covered) all the cluster becomes, eventually, unavailable. -# It automatically returns available as soon as all the slots are covered again. -# -# However sometimes you want the subset of the cluster which is working, -# to continue to accept queries for the part of the key space that is still -# covered. In order to do so, just set the cluster-require-full-coverage -# option to no. -# -# cluster-require-full-coverage yes - -# In order to setup your cluster make sure to read the documentation -# available at http://redis.io web site. - -################################## SLOW LOG ################################### - -# The Redis Slow Log is a system to log queries that exceeded a specified -# execution time. The execution time does not include the I/O operations -# like talking with the client, sending the reply and so forth, -# but just the time needed to actually execute the command (this is the only -# stage of command execution where the thread is blocked and can not serve -# other requests in the meantime). -# -# You can configure the slow log with two parameters: one tells Redis -# what is the execution time, in microseconds, to exceed in order for the -# command to get logged, and the other parameter is the length of the -# slow log. When a new command is logged the oldest one is removed from the -# queue of logged commands. - -# The following time is expressed in microseconds, so 1000000 is equivalent -# to one second. Note that a negative number disables the slow log, while -# a value of zero forces the logging of every command. -slowlog-log-slower-than 10000 - -# There is no limit to this length. Just be aware that it will consume memory. -# You can reclaim memory used by the slow log with SLOWLOG RESET. -slowlog-max-len 128 - -################################ LATENCY MONITOR ############################## - -# The Redis latency monitoring subsystem samples different operations -# at runtime in order to collect data related to possible sources of -# latency of a Redis instance. -# -# Via the LATENCY command this information is available to the user that can -# print graphs and obtain reports. -# -# The system only logs operations that were performed in a time equal or -# greater than the amount of milliseconds specified via the -# latency-monitor-threshold configuration directive. When its value is set -# to zero, the latency monitor is turned off. -# -# By default latency monitoring is disabled since it is mostly not needed -# if you don't have latency issues, and collecting data has a performance -# impact, that while very small, can be measured under big load. Latency -# monitoring can easily be enabled at runtime using the command -# "CONFIG SET latency-monitor-threshold " if needed. -latency-monitor-threshold 0 - -############################# EVENT NOTIFICATION ############################## - -# Redis can notify Pub/Sub clients about events happening in the key space. -# This feature is documented at http://redis.io/topics/notifications -# -# For instance if keyspace events notification is enabled, and a client -# performs a DEL operation on key "foo" stored in the Database 0, two -# messages will be published via Pub/Sub: -# -# PUBLISH __keyspace@0__:foo del -# PUBLISH __keyevent@0__:del foo -# -# It is possible to select the events that Redis will notify among a set -# of classes. Every class is identified by a single character: -# -# K Keyspace events, published with __keyspace@__ prefix. -# E Keyevent events, published with __keyevent@__ prefix. -# g Generic commands (non-type specific) like DEL, EXPIRE, RENAME, ... -# $ String commands -# l List commands -# s Set commands -# h Hash commands -# z Sorted set commands -# x Expired events (events generated every time a key expires) -# e Evicted events (events generated when a key is evicted for maxmemory) -# A Alias for g$lshzxe, so that the "AKE" string means all the events. -# -# The "notify-keyspace-events" takes as argument a string that is composed -# of zero or multiple characters. The empty string means that notifications -# are disabled. -# -# Example: to enable list and generic events, from the point of view of the -# event name, use: -# -# notify-keyspace-events Elg -# -# Example 2: to get the stream of the expired keys subscribing to channel -# name __keyevent@0__:expired use: -# -# notify-keyspace-events Ex -# -# By default all notifications are disabled because most users don't need -# this feature and the feature has some overhead. Note that if you don't -# specify at least one of K or E, no events will be delivered. -notify-keyspace-events "" - -############################### ADVANCED CONFIG ############################### - -# Hashes are encoded using a memory efficient data structure when they have a -# small number of entries, and the biggest entry does not exceed a given -# threshold. These thresholds can be configured using the following directives. -hash-max-ziplist-entries 512 -hash-max-ziplist-value 64 - -# Similarly to hashes, small lists are also encoded in a special way in order -# to save a lot of space. The special representation is only used when -# you are under the following limits: -list-max-ziplist-entries 512 -list-max-ziplist-value 64 - -# Sets have a special encoding in just one case: when a set is composed -# of just strings that happen to be integers in radix 10 in the range -# of 64 bit signed integers. -# The following configuration setting sets the limit in the size of the -# set in order to use this special memory saving encoding. -set-max-intset-entries 512 - -# Similarly to hashes and lists, sorted sets are also specially encoded in -# order to save a lot of space. This encoding is only used when the length and -# elements of a sorted set are below the following limits: -zset-max-ziplist-entries 128 -zset-max-ziplist-value 64 - -# HyperLogLog sparse representation bytes limit. The limit includes the -# 16 bytes header. When an HyperLogLog using the sparse representation crosses -# this limit, it is converted into the dense representation. -# -# A value greater than 16000 is totally useless, since at that point the -# dense representation is more memory efficient. -# -# The suggested value is ~ 3000 in order to have the benefits of -# the space efficient encoding without slowing down too much PFADD, -# which is O(N) with the sparse encoding. The value can be raised to -# ~ 10000 when CPU is not a concern, but space is, and the data set is -# composed of many HyperLogLogs with cardinality in the 0 - 15000 range. -hll-sparse-max-bytes 3000 - -# Active rehashing uses 1 millisecond every 100 milliseconds of CPU time in -# order to help rehashing the main Redis hash table (the one mapping top-level -# keys to values). The hash table implementation Redis uses (see dict.c) -# performs a lazy rehashing: the more operation you run into a hash table -# that is rehashing, the more rehashing "steps" are performed, so if the -# server is idle the rehashing is never complete and some more memory is used -# by the hash table. -# -# The default is to use this millisecond 10 times every second in order to -# actively rehash the main dictionaries, freeing memory when possible. -# -# If unsure: -# use "activerehashing no" if you have hard latency requirements and it is -# not a good thing in your environment that Redis can reply from time to time -# to queries with 2 milliseconds delay. -# -# use "activerehashing yes" if you don't have such hard requirements but -# want to free memory asap when possible. -activerehashing yes - -# The client output buffer limits can be used to force disconnection of clients -# that are not reading data from the server fast enough for some reason (a -# common reason is that a Pub/Sub client can't consume messages as fast as the -# publisher can produce them). -# -# The limit can be set differently for the three different classes of clients: -# -# normal -> normal clients including MONITOR clients -# slave -> slave clients -# pubsub -> clients subscribed to at least one pubsub channel or pattern -# -# The syntax of every client-output-buffer-limit directive is the following: -# -# client-output-buffer-limit -# -# A client is immediately disconnected once the hard limit is reached, or if -# the soft limit is reached and remains reached for the specified number of -# seconds (continuously). -# So for instance if the hard limit is 32 megabytes and the soft limit is -# 16 megabytes / 10 seconds, the client will get disconnected immediately -# if the size of the output buffers reach 32 megabytes, but will also get -# disconnected if the client reaches 16 megabytes and continuously overcomes -# the limit for 10 seconds. -# -# By default normal clients are not limited because they don't receive data -# without asking (in a push way), but just after a request, so only -# asynchronous clients may create a scenario where data is requested faster -# than it can read. -# -# Instead there is a default limit for pubsub and slave clients, since -# subscribers and slaves receive data in a push fashion. -# -# Both the hard or the soft limit can be disabled by setting them to zero. -client-output-buffer-limit normal 0 0 0 -client-output-buffer-limit slave 256mb 64mb 60 -client-output-buffer-limit pubsub 32mb 8mb 60 - -# Redis calls an internal function to perform many background tasks, like -# closing connections of clients in timeout, purging expired keys that are -# never requested, and so forth. -# -# Not all tasks are performed with the same frequency, but Redis checks for -# tasks to perform according to the specified "hz" value. -# -# By default "hz" is set to 10. Raising the value will use more CPU when -# Redis is idle, but at the same time will make Redis more responsive when -# there are many keys expiring at the same time, and timeouts may be -# handled with more precision. -# -# The range is between 1 and 500, however a value over 100 is usually not -# a good idea. Most users should use the default of 10 and raise this up to -# 100 only in environments where very low latency is required. -hz 10 - -# When a child rewrites the AOF file, if the following option is enabled -# the file will be fsync-ed every 32 MB of data generated. This is useful -# in order to commit the file to the disk more incrementally and avoid -# big latency spikes. -aof-rewrite-incremental-fsync yes diff --git a/template/redis/redis3.2.4.j2 b/template/redis/redis3.2.4.j2 deleted file mode 100644 index 7335fa76..00000000 --- a/template/redis/redis3.2.4.j2 +++ /dev/null @@ -1,1049 +0,0 @@ -# Redis configuration file example. -# -# Note that in order to read the configuration file, Redis must be -# started with the file path as first argument: -# -# ./redis-server /path/to/redis.conf - -# Note on units: when memory size is needed, it is possible to specify -# it in the usual form of 1k 5GB 4M and so forth: -# -# 1k => 1000 bytes -# 1kb => 1024 bytes -# 1m => 1000000 bytes -# 1mb => 1024*1024 bytes -# 1g => 1000000000 bytes -# 1gb => 1024*1024*1024 bytes -# -# units are case insensitive so 1GB 1Gb 1gB are all the same. -{{extend}} -################################## INCLUDES ################################### - -# Include one or more other config files here. This is useful if you -# have a standard template that goes to all Redis servers but also need -# to customize a few per-server settings. Include files can include -# other files, so use this wisely. -# -# Notice option "include" won't be rewritten by command "CONFIG REWRITE" -# from admin or Redis Sentinel. Since Redis always uses the last processed -# line as value of a configuration directive, you'd better put includes -# at the beginning of this file to avoid overwriting config change at runtime. -# -# If instead you are interested in using includes to override configuration -# options, it is better to use include as the last line. -# -# include /path/to/local.conf -# include /path/to/other.conf - -################################## NETWORK ##################################### - -# By default, if no "bind" configuration directive is specified, Redis listens -# for connections from all the network interfaces available on the server. -# It is possible to listen to just one or multiple selected interfaces using -# the "bind" configuration directive, followed by one or more IP addresses. -# -# Examples: -# -# bind 192.168.1.100 10.0.0.1 -# bind 127.0.0.1 ::1 -# -# ~~~ WARNING ~~~ If the computer running Redis is directly exposed to the -# internet, binding to all the interfaces is dangerous and will expose the -# instance to everybody on the internet. So by default we uncomment the -# following bind directive, that will force Redis to listen only into -# the IPv4 lookback interface address (this means Redis will be able to -# accept connections only from clients running into the same computer it -# is running). -# -# IF YOU ARE SURE YOU WANT YOUR INSTANCE TO LISTEN TO ALL THE INTERFACES -# JUST COMMENT THE FOLLOWING LINE. -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -bind {{bind}} - -# Protected mode is a layer of security protection, in order to avoid that -# Redis instances left open on the internet are accessed and exploited. -# -# When protected mode is on and if: -# -# 1) The server is not binding explicitly to a set of addresses using the -# "bind" directive. -# 2) No password is configured. -# -# The server only accepts connections from clients connecting from the -# IPv4 and IPv6 loopback addresses 127.0.0.1 and ::1, and from Unix domain -# sockets. -# -# By default protected mode is enabled. You should disable it only if -# you are sure you want clients from other hosts to connect to Redis -# even if no authentication is configured, nor a specific set of interfaces -# are explicitly listed using the "bind" directive. -protected-mode yes - -# Accept connections on the specified port, default is 6379 (IANA #815344). -# If port 0 is specified Redis will not listen on a TCP socket. -port {{port}} - -# TCP listen() backlog. -# -# In high requests-per-second environments you need an high backlog in order -# to avoid slow clients connections issues. Note that the Linux kernel -# will silently truncate it to the value of /proc/sys/net/core/somaxconn so -# make sure to raise both the value of somaxconn and tcp_max_syn_backlog -# in order to get the desired effect. -tcp-backlog 511 - -# Unix socket. -# -# Specify the path for the Unix socket that will be used to listen for -# incoming connections. There is no default, so Redis will not listen -# on a unix socket when not specified. -# -# unixsocket /tmp/redis.sock -# unixsocketperm 700 - -# Close the connection after a client is idle for N seconds (0 to disable) -timeout 0 - -# TCP keepalive. -# -# If non-zero, use SO_KEEPALIVE to send TCP ACKs to clients in absence -# of communication. This is useful for two reasons: -# -# 1) Detect dead peers. -# 2) Take the connection alive from the point of view of network -# equipment in the middle. -# -# On Linux, the specified value (in seconds) is the period used to send ACKs. -# Note that to close the connection the double of the time is needed. -# On other kernels the period depends on the kernel configuration. -# -# A reasonable value for this option is 300 seconds, which is the new -# Redis default starting with Redis 3.2.1. -tcp-keepalive 300 - -################################# GENERAL ##################################### - -# By default Redis does not run as a daemon. Use 'yes' if you need it. -# Note that Redis will write a pid file in /var/run/redis.pid when daemonized. -daemonize yes - -# If you run Redis from upstart or systemd, Redis can interact with your -# supervision tree. Options: -# supervised no - no supervision interaction -# supervised upstart - signal upstart by putting Redis into SIGSTOP mode -# supervised systemd - signal systemd by writing READY=1 to $NOTIFY_SOCKET -# supervised auto - detect upstart or systemd method based on -# UPSTART_JOB or NOTIFY_SOCKET environment variables -# Note: these supervision methods only signal "process is ready." -# They do not enable continuous liveness pings back to your supervisor. -supervised no - -# If a pid file is specified, Redis writes it where specified at startup -# and removes it at exit. -# -# When the server runs non daemonized, no pid file is created if none is -# specified in the configuration. When the server is daemonized, the pid file -# is used even if not specified, defaulting to "/var/run/redis.pid". -# -# Creating a pid file is best effort: if Redis is not able to create it -# nothing bad happens, the server will start and run normally. -pidfile /var/run/redis_{{port}}.pid - -# Specify the server verbosity level. -# This can be one of: -# debug (a lot of information, useful for development/testing) -# verbose (many rarely useful info, but not a mess like the debug level) -# notice (moderately verbose, what you want in production probably) -# warning (only very important / critical messages are logged) -loglevel notice - -# Specify the log file name. Also the empty string can be used to force -# Redis to log on the standard output. Note that if you use standard -# output for logging but daemonize, logs will be sent to /dev/null -logfile "{{logfile}}" - -# To enable logging to the system logger, just set 'syslog-enabled' to yes, -# and optionally update the other syslog parameters to suit your needs. -# syslog-enabled no - -# Specify the syslog identity. -# syslog-ident redis - -# Specify the syslog facility. Must be USER or between LOCAL0-LOCAL7. -# syslog-facility local0 - -# Set the number of databases. The default database is DB 0, you can select -# a different one on a per-connection basis using SELECT where -# dbid is a number between 0 and 'databases'-1 -databases 16 - -################################ SNAPSHOTTING ################################ -# -# Save the DB on disk: -# -# save -# -# Will save the DB if both the given number of seconds and the given -# number of write operations against the DB occurred. -# -# In the example below the behaviour will be to save: -# after 900 sec (15 min) if at least 1 key changed -# after 300 sec (5 min) if at least 10 keys changed -# after 60 sec if at least 10000 keys changed -# -# Note: you can disable saving completely by commenting out all "save" lines. -# -# It is also possible to remove all the previously configured save -# points by adding a save directive with a single empty string argument -# like in the following example: -# -# save "" -{{saveoptions}} - -# By default Redis will stop accepting writes if RDB snapshots are enabled -# (at least one save point) and the latest background save failed. -# This will make the user aware (in a hard way) that data is not persisting -# on disk properly, otherwise chances are that no one will notice and some -# disaster will happen. -# -# If the background saving process will start working again Redis will -# automatically allow writes again. -# -# However if you have setup your proper monitoring of the Redis server -# and persistence, you may want to disable this feature so that Redis will -# continue to work as usual even if there are problems with disk, -# permissions, and so forth. -stop-writes-on-bgsave-error yes - -# Compress string objects using LZF when dump .rdb databases? -# For default that's set to 'yes' as it's almost always a win. -# If you want to save some CPU in the saving child set it to 'no' but -# the dataset will likely be bigger if you have compressible values or keys. -rdbcompression yes - -# Since version 5 of RDB a CRC64 checksum is placed at the end of the file. -# This makes the format more resistant to corruption but there is a performance -# hit to pay (around 10%) when saving and loading RDB files, so you can disable it -# for maximum performances. -# -# RDB files created with checksum disabled have a checksum of zero that will -# tell the loading code to skip the check. -rdbchecksum yes - -# The filename where to dump the DB -dbfilename {{dbfilename}} - -# The working directory. -# -# The DB will be written inside this directory, with the filename specified -# above using the 'dbfilename' configuration directive. -# -# The Append Only File will also be created inside this directory. -# -# Note that you must specify a directory here, not a file name. -dir {{dir}} - -################################# REPLICATION ################################# - -# Master-Slave replication. Use slaveof to make a Redis instance a copy of -# another Redis server. A few things to understand ASAP about Redis replication. -# -# 1) Redis replication is asynchronous, but you can configure a master to -# stop accepting writes if it appears to be not connected with at least -# a given number of slaves. -# 2) Redis slaves are able to perform a partial resynchronization with the -# master if the replication link is lost for a relatively small amount of -# time. You may want to configure the replication backlog size (see the next -# sections of this file) with a sensible value depending on your needs. -# 3) Replication is automatic and does not need user intervention. After a -# network partition slaves automatically try to reconnect to masters -# and resynchronize with them. -# -# slaveof -{{slaveof}} -# If the master is password protected (using the "requirepass" configuration -# directive below) it is possible to tell the slave to authenticate before -# starting the replication synchronization process, otherwise the master will -# refuse the slave request. -# -# masterauth -{{masterauth}} -# When a slave loses its connection with the master, or when the replication -# is still in progress, the slave can act in two different ways: -# -# 1) if slave-serve-stale-data is set to 'yes' (the default) the slave will -# still reply to client requests, possibly with out of date data, or the -# data set may just be empty if this is the first synchronization. -# -# 2) if slave-serve-stale-data is set to 'no' the slave will reply with -# an error "SYNC with master in progress" to all the kind of commands -# but to INFO and SLAVEOF. -# -slave-serve-stale-data yes - -# You can configure a slave instance to accept writes or not. Writing against -# a slave instance may be useful to store some ephemeral data (because data -# written on a slave will be easily deleted after resync with the master) but -# may also cause problems if clients are writing to it because of a -# misconfiguration. -# -# Since Redis 2.6 by default slaves are read-only. -# -# Note: read only slaves are not designed to be exposed to untrusted clients -# on the internet. It's just a protection layer against misuse of the instance. -# Still a read only slave exports by default all the administrative commands -# such as CONFIG, DEBUG, and so forth. To a limited extent you can improve -# security of read only slaves using 'rename-command' to shadow all the -# administrative / dangerous commands. -slave-read-only yes - -# Replication SYNC strategy: disk or socket. -# -# ------------------------------------------------------- -# WARNING: DISKLESS REPLICATION IS EXPERIMENTAL CURRENTLY -# ------------------------------------------------------- -# -# New slaves and reconnecting slaves that are not able to continue the replication -# process just receiving differences, need to do what is called a "full -# synchronization". An RDB file is transmitted from the master to the slaves. -# The transmission can happen in two different ways: -# -# 1) Disk-backed: The Redis master creates a new process that writes the RDB -# file on disk. Later the file is transferred by the parent -# process to the slaves incrementally. -# 2) Diskless: The Redis master creates a new process that directly writes the -# RDB file to slave sockets, without touching the disk at all. -# -# With disk-backed replication, while the RDB file is generated, more slaves -# can be queued and served with the RDB file as soon as the current child producing -# the RDB file finishes its work. With diskless replication instead once -# the transfer starts, new slaves arriving will be queued and a new transfer -# will start when the current one terminates. -# -# When diskless replication is used, the master waits a configurable amount of -# time (in seconds) before starting the transfer in the hope that multiple slaves -# will arrive and the transfer can be parallelized. -# -# With slow disks and fast (large bandwidth) networks, diskless replication -# works better. -repl-diskless-sync no - -# When diskless replication is enabled, it is possible to configure the delay -# the server waits in order to spawn the child that transfers the RDB via socket -# to the slaves. -# -# This is important since once the transfer starts, it is not possible to serve -# new slaves arriving, that will be queued for the next RDB transfer, so the server -# waits a delay in order to let more slaves arrive. -# -# The delay is specified in seconds, and by default is 5 seconds. To disable -# it entirely just set it to 0 seconds and the transfer will start ASAP. -repl-diskless-sync-delay 5 - -# Slaves send PINGs to server in a predefined interval. It's possible to change -# this interval with the repl_ping_slave_period option. The default value is 10 -# seconds. -# -# repl-ping-slave-period 10 - -# The following option sets the replication timeout for: -# -# 1) Bulk transfer I/O during SYNC, from the point of view of slave. -# 2) Master timeout from the point of view of slaves (data, pings). -# 3) Slave timeout from the point of view of masters (REPLCONF ACK pings). -# -# It is important to make sure that this value is greater than the value -# specified for repl-ping-slave-period otherwise a timeout will be detected -# every time there is low traffic between the master and the slave. -# -# repl-timeout 60 - -# Disable TCP_NODELAY on the slave socket after SYNC? -# -# If you select "yes" Redis will use a smaller number of TCP packets and -# less bandwidth to send data to slaves. But this can add a delay for -# the data to appear on the slave side, up to 40 milliseconds with -# Linux kernels using a default configuration. -# -# If you select "no" the delay for data to appear on the slave side will -# be reduced but more bandwidth will be used for replication. -# -# By default we optimize for low latency, but in very high traffic conditions -# or when the master and slaves are many hops away, turning this to "yes" may -# be a good idea. -repl-disable-tcp-nodelay no - -# Set the replication backlog size. The backlog is a buffer that accumulates -# slave data when slaves are disconnected for some time, so that when a slave -# wants to reconnect again, often a full resync is not needed, but a partial -# resync is enough, just passing the portion of data the slave missed while -# disconnected. -# -# The bigger the replication backlog, the longer the time the slave can be -# disconnected and later be able to perform a partial resynchronization. -# -# The backlog is only allocated once there is at least a slave connected. -# -# repl-backlog-size 1mb - -# After a master has no longer connected slaves for some time, the backlog -# will be freed. The following option configures the amount of seconds that -# need to elapse, starting from the time the last slave disconnected, for -# the backlog buffer to be freed. -# -# A value of 0 means to never release the backlog. -# -# repl-backlog-ttl 3600 - -# The slave priority is an integer number published by Redis in the INFO output. -# It is used by Redis Sentinel in order to select a slave to promote into a -# master if the master is no longer working correctly. -# -# A slave with a low priority number is considered better for promotion, so -# for instance if there are three slaves with priority 10, 100, 25 Sentinel will -# pick the one with priority 10, that is the lowest. -# -# However a special priority of 0 marks the slave as not able to perform the -# role of master, so a slave with priority of 0 will never be selected by -# Redis Sentinel for promotion. -# -# By default the priority is 100. -slave-priority 100 - -# It is possible for a master to stop accepting writes if there are less than -# N slaves connected, having a lag less or equal than M seconds. -# -# The N slaves need to be in "online" state. -# -# The lag in seconds, that must be <= the specified value, is calculated from -# the last ping received from the slave, that is usually sent every second. -# -# This option does not GUARANTEE that N replicas will accept the write, but -# will limit the window of exposure for lost writes in case not enough slaves -# are available, to the specified number of seconds. -# -# For example to require at least 3 slaves with a lag <= 10 seconds use: -# -# min-slaves-to-write 3 -# min-slaves-max-lag 10 -# -# Setting one or the other to 0 disables the feature. -# -# By default min-slaves-to-write is set to 0 (feature disabled) and -# min-slaves-max-lag is set to 10. - -# A Redis master is able to list the address and port of the attached -# slaves in different ways. For example the "INFO replication" section -# offers this information, which is used, among other tools, by -# Redis Sentinel in order to discover slave instances. -# Another place where this info is available is in the output of the -# "ROLE" command of a masteer. -# -# The listed IP and address normally reported by a slave is obtained -# in the following way: -# -# IP: The address is auto detected by checking the peer address -# of the socket used by the slave to connect with the master. -# -# Port: The port is communicated by the slave during the replication -# handshake, and is normally the port that the slave is using to -# list for connections. -# -# However when port forwarding or Network Address Translation (NAT) is -# used, the slave may be actually reachable via different IP and port -# pairs. The following two options can be used by a slave in order to -# report to its master a specific set of IP and port, so that both INFO -# and ROLE will report those values. -# -# There is no need to use both the options if you need to override just -# the port or the IP address. -# -# slave-announce-ip 5.5.5.5 -# slave-announce-port 1234 - -################################## SECURITY ################################### - -# Require clients to issue AUTH before processing any other -# commands. This might be useful in environments in which you do not trust -# others with access to the host running redis-server. -# -# This should stay commented out for backward compatibility and because most -# people do not need auth (e.g. they run their own servers). -# -# Warning: since Redis is pretty fast an outside user can try up to -# 150k passwords per second against a good box. This means that you should -# use a very strong password otherwise it will be very easy to break. -# -# requirepass foobared -requirepass {{requirepass}} -# Command renaming. -# -# It is possible to change the name of dangerous commands in a shared -# environment. For instance the CONFIG command may be renamed into something -# hard to guess so that it will still be available for internal-use tools -# but not available for general clients. -# -# Example: -# -# rename-command CONFIG b840fc02d524045429941cc15f59e41cb7be6c52 -# -# It is also possible to completely kill a command by renaming it into -# an empty string: -# -# rename-command CONFIG "" -# -# Please note that changing the name of commands that are logged into the -# AOF file or transmitted to slaves may cause problems. - -################################### LIMITS #################################### - -# Set the max number of connected clients at the same time. By default -# this limit is set to 10000 clients, however if the Redis server is not -# able to configure the process file limit to allow for the specified limit -# the max number of allowed clients is set to the current file limit -# minus 32 (as Redis reserves a few file descriptors for internal uses). -# -# Once the limit is reached Redis will close all the new connections sending -# an error 'max number of clients reached'. -# -# maxclients 10000 - -# Don't use more memory than the specified amount of bytes. -# When the memory limit is reached Redis will try to remove keys -# according to the eviction policy selected (see maxmemory-policy). -# -# If Redis can't remove keys according to the policy, or if the policy is -# set to 'noeviction', Redis will start to reply with errors to commands -# that would use more memory, like SET, LPUSH, and so on, and will continue -# to reply to read-only commands like GET. -# -# This option is usually useful when using Redis as an LRU cache, or to set -# a hard memory limit for an instance (using the 'noeviction' policy). -# -# WARNING: If you have slaves attached to an instance with maxmemory on, -# the size of the output buffers needed to feed the slaves are subtracted -# from the used memory count, so that network problems / resyncs will -# not trigger a loop where keys are evicted, and in turn the output -# buffer of slaves is full with DELs of keys evicted triggering the deletion -# of more keys, and so forth until the database is completely emptied. -# -# In short... if you have slaves attached it is suggested that you set a lower -# limit for maxmemory so that there is some free RAM on the system for slave -# output buffers (but this is not needed if the policy is 'noeviction'). -# -# maxmemory - -# MAXMEMORY POLICY: how Redis will select what to remove when maxmemory -# is reached. You can select among five behaviors: -# -# volatile-lru -> remove the key with an expire set using an LRU algorithm -# allkeys-lru -> remove any key according to the LRU algorithm -# volatile-random -> remove a random key with an expire set -# allkeys-random -> remove a random key, any key -# volatile-ttl -> remove the key with the nearest expire time (minor TTL) -# noeviction -> don't expire at all, just return an error on write operations -# -# Note: with any of the above policies, Redis will return an error on write -# operations, when there are no suitable keys for eviction. -# -# At the date of writing these commands are: set setnx setex append -# incr decr rpush lpush rpushx lpushx linsert lset rpoplpush sadd -# sinter sinterstore sunion sunionstore sdiff sdiffstore zadd zincrby -# zunionstore zinterstore hset hsetnx hmset hincrby incrby decrby -# getset mset msetnx exec sort -# -# The default is: -# -# maxmemory-policy noeviction - -# LRU and minimal TTL algorithms are not precise algorithms but approximated -# algorithms (in order to save memory), so you can tune it for speed or -# accuracy. For default Redis will check five keys and pick the one that was -# used less recently, you can change the sample size using the following -# configuration directive. -# -# The default of 5 produces good enough results. 10 Approximates very closely -# true LRU but costs a bit more CPU. 3 is very fast but not very accurate. -# -# maxmemory-samples 5 - -############################## APPEND ONLY MODE ############################### - -# By default Redis asynchronously dumps the dataset on disk. This mode is -# good enough in many applications, but an issue with the Redis process or -# a power outage may result into a few minutes of writes lost (depending on -# the configured save points). -# -# The Append Only File is an alternative persistence mode that provides -# much better durability. For instance using the default data fsync policy -# (see later in the config file) Redis can lose just one second of writes in a -# dramatic event like a server power outage, or a single write if something -# wrong with the Redis process itself happens, but the operating system is -# still running correctly. -# -# AOF and RDB persistence can be enabled at the same time without problems. -# If the AOF is enabled on startup Redis will load the AOF, that is the file -# with the better durability guarantees. -# -# Please check http://redis.io/topics/persistence for more information. - -appendonly {{appendonly}} - -# The name of the append only file (default: "appendonly.aof") - -appendfilename "appendonly.aof" - -# The fsync() call tells the Operating System to actually write data on disk -# instead of waiting for more data in the output buffer. Some OS will really flush -# data on disk, some other OS will just try to do it ASAP. -# -# Redis supports three different modes: -# -# no: don't fsync, just let the OS flush the data when it wants. Faster. -# always: fsync after every write to the append only log. Slow, Safest. -# everysec: fsync only one time every second. Compromise. -# -# The default is "everysec", as that's usually the right compromise between -# speed and data safety. It's up to you to understand if you can relax this to -# "no" that will let the operating system flush the output buffer when -# it wants, for better performances (but if you can live with the idea of -# some data loss consider the default persistence mode that's snapshotting), -# or on the contrary, use "always" that's very slow but a bit safer than -# everysec. -# -# More details please check the following article: -# http://antirez.com/post/redis-persistence-demystified.html -# -# If unsure, use "everysec". - -# appendfsync always -appendfsync everysec -# appendfsync no - -# When the AOF fsync policy is set to always or everysec, and a background -# saving process (a background save or AOF log background rewriting) is -# performing a lot of I/O against the disk, in some Linux configurations -# Redis may block too long on the fsync() call. Note that there is no fix for -# this currently, as even performing fsync in a different thread will block -# our synchronous write(2) call. -# -# In order to mitigate this problem it's possible to use the following option -# that will prevent fsync() from being called in the main process while a -# BGSAVE or BGREWRITEAOF is in progress. -# -# This means that while another child is saving, the durability of Redis is -# the same as "appendfsync none". In practical terms, this means that it is -# possible to lose up to 30 seconds of log in the worst scenario (with the -# default Linux settings). -# -# If you have latency problems turn this to "yes". Otherwise leave it as -# "no" that is the safest pick from the point of view of durability. - -no-appendfsync-on-rewrite {{noonrewrite}} - -# Automatic rewrite of the append only file. -# Redis is able to automatically rewrite the log file implicitly calling -# BGREWRITEAOF when the AOF log size grows by the specified percentage. -# -# This is how it works: Redis remembers the size of the AOF file after the -# latest rewrite (if no rewrite has happened since the restart, the size of -# the AOF at startup is used). -# -# This base size is compared to the current size. If the current size is -# bigger than the specified percentage, the rewrite is triggered. Also -# you need to specify a minimal size for the AOF file to be rewritten, this -# is useful to avoid rewriting the AOF file even if the percentage increase -# is reached but it is still pretty small. -# -# Specify a percentage of zero in order to disable the automatic AOF -# rewrite feature. - -auto-aof-rewrite-percentage 100 -auto-aof-rewrite-min-size 64mb - -# An AOF file may be found to be truncated at the end during the Redis -# startup process, when the AOF data gets loaded back into memory. -# This may happen when the system where Redis is running -# crashes, especially when an ext4 filesystem is mounted without the -# data=ordered option (however this can't happen when Redis itself -# crashes or aborts but the operating system still works correctly). -# -# Redis can either exit with an error when this happens, or load as much -# data as possible (the default now) and start if the AOF file is found -# to be truncated at the end. The following option controls this behavior. -# -# If aof-load-truncated is set to yes, a truncated AOF file is loaded and -# the Redis server starts emitting a log to inform the user of the event. -# Otherwise if the option is set to no, the server aborts with an error -# and refuses to start. When the option is set to no, the user requires -# to fix the AOF file using the "redis-check-aof" utility before to restart -# the server. -# -# Note that if the AOF file will be found to be corrupted in the middle -# the server will still exit with an error. This option only applies when -# Redis will try to read more data from the AOF file but not enough bytes -# will be found. -aof-load-truncated yes - -################################ LUA SCRIPTING ############################### - -# Max execution time of a Lua script in milliseconds. -# -# If the maximum execution time is reached Redis will log that a script is -# still in execution after the maximum allowed time and will start to -# reply to queries with an error. -# -# When a long running script exceeds the maximum execution time only the -# SCRIPT KILL and SHUTDOWN NOSAVE commands are available. The first can be -# used to stop a script that did not yet called write commands. The second -# is the only way to shut down the server in the case a write command was -# already issued by the script but the user doesn't want to wait for the natural -# termination of the script. -# -# Set it to 0 or a negative value for unlimited execution without warnings. -lua-time-limit 5000 - -################################ REDIS CLUSTER ############################### -# -# ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -# WARNING EXPERIMENTAL: Redis Cluster is considered to be stable code, however -# in order to mark it as "mature" we need to wait for a non trivial percentage -# of users to deploy it in production. -# ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -# -# Normal Redis instances can't be part of a Redis Cluster; only nodes that are -# started as cluster nodes can. In order to start a Redis instance as a -# cluster node enable the cluster support uncommenting the following: -# -# cluster-enabled yes -{{cluster_enabled}} -# Every cluster node has a cluster configuration file. This file is not -# intended to be edited by hand. It is created and updated by Redis nodes. -# Every Redis Cluster node requires a different cluster configuration file. -# Make sure that instances running in the same system do not have -# overlapping cluster configuration file names. -# -# cluster-config-file nodes-6379.conf -{{cluster_config_file}} -# Cluster node timeout is the amount of milliseconds a node must be unreachable -# for it to be considered in failure state. -# Most other internal time limits are multiple of the node timeout. -# -# cluster-node-timeout 15000 - -# A slave of a failing master will avoid to start a failover if its data -# looks too old. -# -# There is no simple way for a slave to actually have a exact measure of -# its "data age", so the following two checks are performed: -# -# 1) If there are multiple slaves able to failover, they exchange messages -# in order to try to give an advantage to the slave with the best -# replication offset (more data from the master processed). -# Slaves will try to get their rank by offset, and apply to the start -# of the failover a delay proportional to their rank. -# -# 2) Every single slave computes the time of the last interaction with -# its master. This can be the last ping or command received (if the master -# is still in the "connected" state), or the time that elapsed since the -# disconnection with the master (if the replication link is currently down). -# If the last interaction is too old, the slave will not try to failover -# at all. -# -# The point "2" can be tuned by user. Specifically a slave will not perform -# the failover if, since the last interaction with the master, the time -# elapsed is greater than: -# -# (node-timeout * slave-validity-factor) + repl-ping-slave-period -# -# So for example if node-timeout is 30 seconds, and the slave-validity-factor -# is 10, and assuming a default repl-ping-slave-period of 10 seconds, the -# slave will not try to failover if it was not able to talk with the master -# for longer than 310 seconds. -# -# A large slave-validity-factor may allow slaves with too old data to failover -# a master, while a too small value may prevent the cluster from being able to -# elect a slave at all. -# -# For maximum availability, it is possible to set the slave-validity-factor -# to a value of 0, which means, that slaves will always try to failover the -# master regardless of the last time they interacted with the master. -# (However they'll always try to apply a delay proportional to their -# offset rank). -# -# Zero is the only value able to guarantee that when all the partitions heal -# the cluster will always be able to continue. -# -# cluster-slave-validity-factor 10 - -# Cluster slaves are able to migrate to orphaned masters, that are masters -# that are left without working slaves. This improves the cluster ability -# to resist to failures as otherwise an orphaned master can't be failed over -# in case of failure if it has no working slaves. -# -# Slaves migrate to orphaned masters only if there are still at least a -# given number of other working slaves for their old master. This number -# is the "migration barrier". A migration barrier of 1 means that a slave -# will migrate only if there is at least 1 other working slave for its master -# and so forth. It usually reflects the number of slaves you want for every -# master in your cluster. -# -# Default is 1 (slaves migrate only if their masters remain with at least -# one slave). To disable migration just set it to a very large value. -# A value of 0 can be set but is useful only for debugging and dangerous -# in production. -# -# cluster-migration-barrier 1 - -# By default Redis Cluster nodes stop accepting queries if they detect there -# is at least an hash slot uncovered (no available node is serving it). -# This way if the cluster is partially down (for example a range of hash slots -# are no longer covered) all the cluster becomes, eventually, unavailable. -# It automatically returns available as soon as all the slots are covered again. -# -# However sometimes you want the subset of the cluster which is working, -# to continue to accept queries for the part of the key space that is still -# covered. In order to do so, just set the cluster-require-full-coverage -# option to no. -# -# cluster-require-full-coverage yes - -# In order to setup your cluster make sure to read the documentation -# available at http://redis.io web site. - -################################## SLOW LOG ################################### - -# The Redis Slow Log is a system to log queries that exceeded a specified -# execution time. The execution time does not include the I/O operations -# like talking with the client, sending the reply and so forth, -# but just the time needed to actually execute the command (this is the only -# stage of command execution where the thread is blocked and can not serve -# other requests in the meantime). -# -# You can configure the slow log with two parameters: one tells Redis -# what is the execution time, in microseconds, to exceed in order for the -# command to get logged, and the other parameter is the length of the -# slow log. When a new command is logged the oldest one is removed from the -# queue of logged commands. - -# The following time is expressed in microseconds, so 1000000 is equivalent -# to one second. Note that a negative number disables the slow log, while -# a value of zero forces the logging of every command. -slowlog-log-slower-than 10000 - -# There is no limit to this length. Just be aware that it will consume memory. -# You can reclaim memory used by the slow log with SLOWLOG RESET. -slowlog-max-len 128 - -################################ LATENCY MONITOR ############################## - -# The Redis latency monitoring subsystem samples different operations -# at runtime in order to collect data related to possible sources of -# latency of a Redis instance. -# -# Via the LATENCY command this information is available to the user that can -# print graphs and obtain reports. -# -# The system only logs operations that were performed in a time equal or -# greater than the amount of milliseconds specified via the -# latency-monitor-threshold configuration directive. When its value is set -# to zero, the latency monitor is turned off. -# -# By default latency monitoring is disabled since it is mostly not needed -# if you don't have latency issues, and collecting data has a performance -# impact, that while very small, can be measured under big load. Latency -# monitoring can easily be enabled at runtime using the command -# "CONFIG SET latency-monitor-threshold " if needed. -latency-monitor-threshold 0 - -############################# EVENT NOTIFICATION ############################## - -# Redis can notify Pub/Sub clients about events happening in the key space. -# This feature is documented at http://redis.io/topics/notifications -# -# For instance if keyspace events notification is enabled, and a client -# performs a DEL operation on key "foo" stored in the Database 0, two -# messages will be published via Pub/Sub: -# -# PUBLISH __keyspace@0__:foo del -# PUBLISH __keyevent@0__:del foo -# -# It is possible to select the events that Redis will notify among a set -# of classes. Every class is identified by a single character: -# -# K Keyspace events, published with __keyspace@__ prefix. -# E Keyevent events, published with __keyevent@__ prefix. -# g Generic commands (non-type specific) like DEL, EXPIRE, RENAME, ... -# $ String commands -# l List commands -# s Set commands -# h Hash commands -# z Sorted set commands -# x Expired events (events generated every time a key expires) -# e Evicted events (events generated when a key is evicted for maxmemory) -# A Alias for g$lshzxe, so that the "AKE" string means all the events. -# -# The "notify-keyspace-events" takes as argument a string that is composed -# of zero or multiple characters. The empty string means that notifications -# are disabled. -# -# Example: to enable list and generic events, from the point of view of the -# event name, use: -# -# notify-keyspace-events Elg -# -# Example 2: to get the stream of the expired keys subscribing to channel -# name __keyevent@0__:expired use: -# -# notify-keyspace-events Ex -# -# By default all notifications are disabled because most users don't need -# this feature and the feature has some overhead. Note that if you don't -# specify at least one of K or E, no events will be delivered. -notify-keyspace-events "" - -############################### ADVANCED CONFIG ############################### - -# Hashes are encoded using a memory efficient data structure when they have a -# small number of entries, and the biggest entry does not exceed a given -# threshold. These thresholds can be configured using the following directives. -hash-max-ziplist-entries 512 -hash-max-ziplist-value 64 - -# Lists are also encoded in a special way to save a lot of space. -# The number of entries allowed per internal list node can be specified -# as a fixed maximum size or a maximum number of elements. -# For a fixed maximum size, use -5 through -1, meaning: -# -5: max size: 64 Kb <-- not recommended for normal workloads -# -4: max size: 32 Kb <-- not recommended -# -3: max size: 16 Kb <-- probably not recommended -# -2: max size: 8 Kb <-- good -# -1: max size: 4 Kb <-- good -# Positive numbers mean store up to _exactly_ that number of elements -# per list node. -# The highest performing option is usually -2 (8 Kb size) or -1 (4 Kb size), -# but if your use case is unique, adjust the settings as necessary. -list-max-ziplist-size -2 - -# Lists may also be compressed. -# Compress depth is the number of quicklist ziplist nodes from *each* side of -# the list to *exclude* from compression. The head and tail of the list -# are always uncompressed for fast push/pop operations. Settings are: -# 0: disable all list compression -# 1: depth 1 means "don't start compressing until after 1 node into the list, -# going from either the head or tail" -# So: [head]->node->node->...->node->[tail] -# [head], [tail] will always be uncompressed; inner nodes will compress. -# 2: [head]->[next]->node->node->...->node->[prev]->[tail] -# 2 here means: don't compress head or head->next or tail->prev or tail, -# but compress all nodes between them. -# 3: [head]->[next]->[next]->node->node->...->node->[prev]->[prev]->[tail] -# etc. -list-compress-depth 0 - -# Sets have a special encoding in just one case: when a set is composed -# of just strings that happen to be integers in radix 10 in the range -# of 64 bit signed integers. -# The following configuration setting sets the limit in the size of the -# set in order to use this special memory saving encoding. -set-max-intset-entries 512 - -# Similarly to hashes and lists, sorted sets are also specially encoded in -# order to save a lot of space. This encoding is only used when the length and -# elements of a sorted set are below the following limits: -zset-max-ziplist-entries 128 -zset-max-ziplist-value 64 - -# HyperLogLog sparse representation bytes limit. The limit includes the -# 16 bytes header. When an HyperLogLog using the sparse representation crosses -# this limit, it is converted into the dense representation. -# -# A value greater than 16000 is totally useless, since at that point the -# dense representation is more memory efficient. -# -# The suggested value is ~ 3000 in order to have the benefits of -# the space efficient encoding without slowing down too much PFADD, -# which is O(N) with the sparse encoding. The value can be raised to -# ~ 10000 when CPU is not a concern, but space is, and the data set is -# composed of many HyperLogLogs with cardinality in the 0 - 15000 range. -hll-sparse-max-bytes 3000 - -# Active rehashing uses 1 millisecond every 100 milliseconds of CPU time in -# order to help rehashing the main Redis hash table (the one mapping top-level -# keys to values). The hash table implementation Redis uses (see dict.c) -# performs a lazy rehashing: the more operation you run into a hash table -# that is rehashing, the more rehashing "steps" are performed, so if the -# server is idle the rehashing is never complete and some more memory is used -# by the hash table. -# -# The default is to use this millisecond 10 times every second in order to -# actively rehash the main dictionaries, freeing memory when possible. -# -# If unsure: -# use "activerehashing no" if you have hard latency requirements and it is -# not a good thing in your environment that Redis can reply from time to time -# to queries with 2 milliseconds delay. -# -# use "activerehashing yes" if you don't have such hard requirements but -# want to free memory asap when possible. -activerehashing yes - -# The client output buffer limits can be used to force disconnection of clients -# that are not reading data from the server fast enough for some reason (a -# common reason is that a Pub/Sub client can't consume messages as fast as the -# publisher can produce them). -# -# The limit can be set differently for the three different classes of clients: -# -# normal -> normal clients including MONITOR clients -# slave -> slave clients -# pubsub -> clients subscribed to at least one pubsub channel or pattern -# -# The syntax of every client-output-buffer-limit directive is the following: -# -# client-output-buffer-limit -# -# A client is immediately disconnected once the hard limit is reached, or if -# the soft limit is reached and remains reached for the specified number of -# seconds (continuously). -# So for instance if the hard limit is 32 megabytes and the soft limit is -# 16 megabytes / 10 seconds, the client will get disconnected immediately -# if the size of the output buffers reach 32 megabytes, but will also get -# disconnected if the client reaches 16 megabytes and continuously overcomes -# the limit for 10 seconds. -# -# By default normal clients are not limited because they don't receive data -# without asking (in a push way), but just after a request, so only -# asynchronous clients may create a scenario where data is requested faster -# than it can read. -# -# Instead there is a default limit for pubsub and slave clients, since -# subscribers and slaves receive data in a push fashion. -# -# Both the hard or the soft limit can be disabled by setting them to zero. -client-output-buffer-limit normal 0 0 0 -client-output-buffer-limit slave 256mb 64mb 60 -client-output-buffer-limit pubsub 32mb 8mb 60 - -# Redis calls an internal function to perform many background tasks, like -# closing connections of clients in timeout, purging expired keys that are -# never requested, and so forth. -# -# Not all tasks are performed with the same frequency, but Redis checks for -# tasks to perform according to the specified "hz" value. -# -# By default "hz" is set to 10. Raising the value will use more CPU when -# Redis is idle, but at the same time will make Redis more responsive when -# there are many keys expiring at the same time, and timeouts may be -# handled with more precision. -# -# The range is between 1 and 500, however a value over 100 is usually not -# a good idea. Most users should use the default of 10 and raise this up to -# 100 only in environments where very low latency is required. -hz 10 - -# When a child rewrites the AOF file, if the following option is enabled -# the file will be fsync-ed every 32 MB of data generated. This is useful -# in order to commit the file to the disk more incrementally and avoid -# big latency spikes. -aof-rewrite-incremental-fsync yes diff --git a/template/redis/redis3.2.6.j2 b/template/redis/redis3.2.6.j2 deleted file mode 100644 index fc58580e..00000000 --- a/template/redis/redis3.2.6.j2 +++ /dev/null @@ -1,1050 +0,0 @@ -# Redis configuration file example. -# -# Note that in order to read the configuration file, Redis must be -# started with the file path as first argument: -# -# ./redis-server /path/to/redis.conf - -# Note on units: when memory size is needed, it is possible to specify -# it in the usual form of 1k 5GB 4M and so forth: -# -# 1k => 1000 bytes -# 1kb => 1024 bytes -# 1m => 1000000 bytes -# 1mb => 1024*1024 bytes -# 1g => 1000000000 bytes -# 1gb => 1024*1024*1024 bytes -# -# units are case insensitive so 1GB 1Gb 1gB are all the same. -{{extend}} -################################## INCLUDES ################################### - -# Include one or more other config files here. This is useful if you -# have a standard template that goes to all Redis servers but also need -# to customize a few per-server settings. Include files can include -# other files, so use this wisely. -# -# Notice option "include" won't be rewritten by command "CONFIG REWRITE" -# from admin or Redis Sentinel. Since Redis always uses the last processed -# line as value of a configuration directive, you'd better put includes -# at the beginning of this file to avoid overwriting config change at runtime. -# -# If instead you are interested in using includes to override configuration -# options, it is better to use include as the last line. -# -# include /path/to/local.conf -# include /path/to/other.conf - -################################## NETWORK ##################################### - -# By default, if no "bind" configuration directive is specified, Redis listens -# for connections from all the network interfaces available on the server. -# It is possible to listen to just one or multiple selected interfaces using -# the "bind" configuration directive, followed by one or more IP addresses. -# -# Examples: -# -# bind 192.168.1.100 10.0.0.1 -# bind 127.0.0.1 ::1 -# -# ~~~ WARNING ~~~ If the computer running Redis is directly exposed to the -# internet, binding to all the interfaces is dangerous and will expose the -# instance to everybody on the internet. So by default we uncomment the -# following bind directive, that will force Redis to listen only into -# the IPv4 lookback interface address (this means Redis will be able to -# accept connections only from clients running into the same computer it -# is running). -# -# IF YOU ARE SURE YOU WANT YOUR INSTANCE TO LISTEN TO ALL THE INTERFACES -# JUST COMMENT THE FOLLOWING LINE. -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -bind {{bind}} - -# Protected mode is a layer of security protection, in order to avoid that -# Redis instances left open on the internet are accessed and exploited. -# -# When protected mode is on and if: -# -# 1) The server is not binding explicitly to a set of addresses using the -# "bind" directive. -# 2) No password is configured. -# -# The server only accepts connections from clients connecting from the -# IPv4 and IPv6 loopback addresses 127.0.0.1 and ::1, and from Unix domain -# sockets. -# -# By default protected mode is enabled. You should disable it only if -# you are sure you want clients from other hosts to connect to Redis -# even if no authentication is configured, nor a specific set of interfaces -# are explicitly listed using the "bind" directive. -protected-mode yes - -# Accept connections on the specified port, default is 6379 (IANA #815344). -# If port 0 is specified Redis will not listen on a TCP socket. -port {{port}} - -# TCP listen() backlog. -# -# In high requests-per-second environments you need an high backlog in order -# to avoid slow clients connections issues. Note that the Linux kernel -# will silently truncate it to the value of /proc/sys/net/core/somaxconn so -# make sure to raise both the value of somaxconn and tcp_max_syn_backlog -# in order to get the desired effect. -tcp-backlog 511 - -# Unix socket. -# -# Specify the path for the Unix socket that will be used to listen for -# incoming connections. There is no default, so Redis will not listen -# on a unix socket when not specified. -# -# unixsocket /tmp/redis.sock -# unixsocketperm 700 - -# Close the connection after a client is idle for N seconds (0 to disable) -timeout 0 - -# TCP keepalive. -# -# If non-zero, use SO_KEEPALIVE to send TCP ACKs to clients in absence -# of communication. This is useful for two reasons: -# -# 1) Detect dead peers. -# 2) Take the connection alive from the point of view of network -# equipment in the middle. -# -# On Linux, the specified value (in seconds) is the period used to send ACKs. -# Note that to close the connection the double of the time is needed. -# On other kernels the period depends on the kernel configuration. -# -# A reasonable value for this option is 300 seconds, which is the new -# Redis default starting with Redis 3.2.1. -tcp-keepalive 300 - -################################# GENERAL ##################################### - -# By default Redis does not run as a daemon. Use 'yes' if you need it. -# Note that Redis will write a pid file in /var/run/redis.pid when daemonized. -daemonize yes - -# If you run Redis from upstart or systemd, Redis can interact with your -# supervision tree. Options: -# supervised no - no supervision interaction -# supervised upstart - signal upstart by putting Redis into SIGSTOP mode -# supervised systemd - signal systemd by writing READY=1 to $NOTIFY_SOCKET -# supervised auto - detect upstart or systemd method based on -# UPSTART_JOB or NOTIFY_SOCKET environment variables -# Note: these supervision methods only signal "process is ready." -# They do not enable continuous liveness pings back to your supervisor. -supervised no - -# If a pid file is specified, Redis writes it where specified at startup -# and removes it at exit. -# -# When the server runs non daemonized, no pid file is created if none is -# specified in the configuration. When the server is daemonized, the pid file -# is used even if not specified, defaulting to "/var/run/redis.pid". -# -# Creating a pid file is best effort: if Redis is not able to create it -# nothing bad happens, the server will start and run normally. -pidfile /var/run/redis_6379.pid - -# Specify the server verbosity level. -# This can be one of: -# debug (a lot of information, useful for development/testing) -# verbose (many rarely useful info, but not a mess like the debug level) -# notice (moderately verbose, what you want in production probably) -# warning (only very important / critical messages are logged) -loglevel notice - -# Specify the log file name. Also the empty string can be used to force -# Redis to log on the standard output. Note that if you use standard -# output for logging but daemonize, logs will be sent to /dev/null -logfile "{{logfile}}" - -# To enable logging to the system logger, just set 'syslog-enabled' to yes, -# and optionally update the other syslog parameters to suit your needs. -# syslog-enabled no - -# Specify the syslog identity. -# syslog-ident redis - -# Specify the syslog facility. Must be USER or between LOCAL0-LOCAL7. -# syslog-facility local0 - -# Set the number of databases. The default database is DB 0, you can select -# a different one on a per-connection basis using SELECT where -# dbid is a number between 0 and 'databases'-1 -databases 16 - -################################ SNAPSHOTTING ################################ -# -# Save the DB on disk: -# -# save -# -# Will save the DB if both the given number of seconds and the given -# number of write operations against the DB occurred. -# -# In the example below the behaviour will be to save: -# after 900 sec (15 min) if at least 1 key changed -# after 300 sec (5 min) if at least 10 keys changed -# after 60 sec if at least 10000 keys changed -# -# Note: you can disable saving completely by commenting out all "save" lines. -# -# It is also possible to remove all the previously configured save -# points by adding a save directive with a single empty string argument -# like in the following example: -# -# save "" - -{{saveoptions}} - -# By default Redis will stop accepting writes if RDB snapshots are enabled -# (at least one save point) and the latest background save failed. -# This will make the user aware (in a hard way) that data is not persisting -# on disk properly, otherwise chances are that no one will notice and some -# disaster will happen. -# -# If the background saving process will start working again Redis will -# automatically allow writes again. -# -# However if you have setup your proper monitoring of the Redis server -# and persistence, you may want to disable this feature so that Redis will -# continue to work as usual even if there are problems with disk, -# permissions, and so forth. -stop-writes-on-bgsave-error yes - -# Compress string objects using LZF when dump .rdb databases? -# For default that's set to 'yes' as it's almost always a win. -# If you want to save some CPU in the saving child set it to 'no' but -# the dataset will likely be bigger if you have compressible values or keys. -rdbcompression yes - -# Since version 5 of RDB a CRC64 checksum is placed at the end of the file. -# This makes the format more resistant to corruption but there is a performance -# hit to pay (around 10%) when saving and loading RDB files, so you can disable it -# for maximum performances. -# -# RDB files created with checksum disabled have a checksum of zero that will -# tell the loading code to skip the check. -rdbchecksum yes - -# The filename where to dump the DB -dbfilename {{dbfilename}} - -# The working directory. -# -# The DB will be written inside this directory, with the filename specified -# above using the 'dbfilename' configuration directive. -# -# The Append Only File will also be created inside this directory. -# -# Note that you must specify a directory here, not a file name. -dir {{dir}} - -################################# REPLICATION ################################# - -# Master-Slave replication. Use slaveof to make a Redis instance a copy of -# another Redis server. A few things to understand ASAP about Redis replication. -# -# 1) Redis replication is asynchronous, but you can configure a master to -# stop accepting writes if it appears to be not connected with at least -# a given number of slaves. -# 2) Redis slaves are able to perform a partial resynchronization with the -# master if the replication link is lost for a relatively small amount of -# time. You may want to configure the replication backlog size (see the next -# sections of this file) with a sensible value depending on your needs. -# 3) Replication is automatic and does not need user intervention. After a -# network partition slaves automatically try to reconnect to masters -# and resynchronize with them. -# -# slaveof -{{slaveof}} -# If the master is password protected (using the "requirepass" configuration -# directive below) it is possible to tell the slave to authenticate before -# starting the replication synchronization process, otherwise the master will -# refuse the slave request. -# -# masterauth -{{masterauth}} -# When a slave loses its connection with the master, or when the replication -# is still in progress, the slave can act in two different ways: -# -# 1) if slave-serve-stale-data is set to 'yes' (the default) the slave will -# still reply to client requests, possibly with out of date data, or the -# data set may just be empty if this is the first synchronization. -# -# 2) if slave-serve-stale-data is set to 'no' the slave will reply with -# an error "SYNC with master in progress" to all the kind of commands -# but to INFO and SLAVEOF. -# -slave-serve-stale-data yes - -# You can configure a slave instance to accept writes or not. Writing against -# a slave instance may be useful to store some ephemeral data (because data -# written on a slave will be easily deleted after resync with the master) but -# may also cause problems if clients are writing to it because of a -# misconfiguration. -# -# Since Redis 2.6 by default slaves are read-only. -# -# Note: read only slaves are not designed to be exposed to untrusted clients -# on the internet. It's just a protection layer against misuse of the instance. -# Still a read only slave exports by default all the administrative commands -# such as CONFIG, DEBUG, and so forth. To a limited extent you can improve -# security of read only slaves using 'rename-command' to shadow all the -# administrative / dangerous commands. -slave-read-only yes - -# Replication SYNC strategy: disk or socket. -# -# ------------------------------------------------------- -# WARNING: DISKLESS REPLICATION IS EXPERIMENTAL CURRENTLY -# ------------------------------------------------------- -# -# New slaves and reconnecting slaves that are not able to continue the replication -# process just receiving differences, need to do what is called a "full -# synchronization". An RDB file is transmitted from the master to the slaves. -# The transmission can happen in two different ways: -# -# 1) Disk-backed: The Redis master creates a new process that writes the RDB -# file on disk. Later the file is transferred by the parent -# process to the slaves incrementally. -# 2) Diskless: The Redis master creates a new process that directly writes the -# RDB file to slave sockets, without touching the disk at all. -# -# With disk-backed replication, while the RDB file is generated, more slaves -# can be queued and served with the RDB file as soon as the current child producing -# the RDB file finishes its work. With diskless replication instead once -# the transfer starts, new slaves arriving will be queued and a new transfer -# will start when the current one terminates. -# -# When diskless replication is used, the master waits a configurable amount of -# time (in seconds) before starting the transfer in the hope that multiple slaves -# will arrive and the transfer can be parallelized. -# -# With slow disks and fast (large bandwidth) networks, diskless replication -# works better. -repl-diskless-sync no - -# When diskless replication is enabled, it is possible to configure the delay -# the server waits in order to spawn the child that transfers the RDB via socket -# to the slaves. -# -# This is important since once the transfer starts, it is not possible to serve -# new slaves arriving, that will be queued for the next RDB transfer, so the server -# waits a delay in order to let more slaves arrive. -# -# The delay is specified in seconds, and by default is 5 seconds. To disable -# it entirely just set it to 0 seconds and the transfer will start ASAP. -repl-diskless-sync-delay 5 - -# Slaves send PINGs to server in a predefined interval. It's possible to change -# this interval with the repl_ping_slave_period option. The default value is 10 -# seconds. -# -# repl-ping-slave-period 10 - -# The following option sets the replication timeout for: -# -# 1) Bulk transfer I/O during SYNC, from the point of view of slave. -# 2) Master timeout from the point of view of slaves (data, pings). -# 3) Slave timeout from the point of view of masters (REPLCONF ACK pings). -# -# It is important to make sure that this value is greater than the value -# specified for repl-ping-slave-period otherwise a timeout will be detected -# every time there is low traffic between the master and the slave. -# -# repl-timeout 60 - -# Disable TCP_NODELAY on the slave socket after SYNC? -# -# If you select "yes" Redis will use a smaller number of TCP packets and -# less bandwidth to send data to slaves. But this can add a delay for -# the data to appear on the slave side, up to 40 milliseconds with -# Linux kernels using a default configuration. -# -# If you select "no" the delay for data to appear on the slave side will -# be reduced but more bandwidth will be used for replication. -# -# By default we optimize for low latency, but in very high traffic conditions -# or when the master and slaves are many hops away, turning this to "yes" may -# be a good idea. -repl-disable-tcp-nodelay no - -# Set the replication backlog size. The backlog is a buffer that accumulates -# slave data when slaves are disconnected for some time, so that when a slave -# wants to reconnect again, often a full resync is not needed, but a partial -# resync is enough, just passing the portion of data the slave missed while -# disconnected. -# -# The bigger the replication backlog, the longer the time the slave can be -# disconnected and later be able to perform a partial resynchronization. -# -# The backlog is only allocated once there is at least a slave connected. -# -# repl-backlog-size 1mb - -# After a master has no longer connected slaves for some time, the backlog -# will be freed. The following option configures the amount of seconds that -# need to elapse, starting from the time the last slave disconnected, for -# the backlog buffer to be freed. -# -# A value of 0 means to never release the backlog. -# -# repl-backlog-ttl 3600 - -# The slave priority is an integer number published by Redis in the INFO output. -# It is used by Redis Sentinel in order to select a slave to promote into a -# master if the master is no longer working correctly. -# -# A slave with a low priority number is considered better for promotion, so -# for instance if there are three slaves with priority 10, 100, 25 Sentinel will -# pick the one with priority 10, that is the lowest. -# -# However a special priority of 0 marks the slave as not able to perform the -# role of master, so a slave with priority of 0 will never be selected by -# Redis Sentinel for promotion. -# -# By default the priority is 100. -slave-priority 100 - -# It is possible for a master to stop accepting writes if there are less than -# N slaves connected, having a lag less or equal than M seconds. -# -# The N slaves need to be in "online" state. -# -# The lag in seconds, that must be <= the specified value, is calculated from -# the last ping received from the slave, that is usually sent every second. -# -# This option does not GUARANTEE that N replicas will accept the write, but -# will limit the window of exposure for lost writes in case not enough slaves -# are available, to the specified number of seconds. -# -# For example to require at least 3 slaves with a lag <= 10 seconds use: -# -# min-slaves-to-write 3 -# min-slaves-max-lag 10 -# -# Setting one or the other to 0 disables the feature. -# -# By default min-slaves-to-write is set to 0 (feature disabled) and -# min-slaves-max-lag is set to 10. - -# A Redis master is able to list the address and port of the attached -# slaves in different ways. For example the "INFO replication" section -# offers this information, which is used, among other tools, by -# Redis Sentinel in order to discover slave instances. -# Another place where this info is available is in the output of the -# "ROLE" command of a masteer. -# -# The listed IP and address normally reported by a slave is obtained -# in the following way: -# -# IP: The address is auto detected by checking the peer address -# of the socket used by the slave to connect with the master. -# -# Port: The port is communicated by the slave during the replication -# handshake, and is normally the port that the slave is using to -# list for connections. -# -# However when port forwarding or Network Address Translation (NAT) is -# used, the slave may be actually reachable via different IP and port -# pairs. The following two options can be used by a slave in order to -# report to its master a specific set of IP and port, so that both INFO -# and ROLE will report those values. -# -# There is no need to use both the options if you need to override just -# the port or the IP address. -# -# slave-announce-ip 5.5.5.5 -# slave-announce-port 1234 - -################################## SECURITY ################################### - -# Require clients to issue AUTH before processing any other -# commands. This might be useful in environments in which you do not trust -# others with access to the host running redis-server. -# -# This should stay commented out for backward compatibility and because most -# people do not need auth (e.g. they run their own servers). -# -# Warning: since Redis is pretty fast an outside user can try up to -# 150k passwords per second against a good box. This means that you should -# use a very strong password otherwise it will be very easy to break. -# -# requirepass foobared -requirepass {{requirepass}} -# Command renaming. -# -# It is possible to change the name of dangerous commands in a shared -# environment. For instance the CONFIG command may be renamed into something -# hard to guess so that it will still be available for internal-use tools -# but not available for general clients. -# -# Example: -# -# rename-command CONFIG b840fc02d524045429941cc15f59e41cb7be6c52 -# -# It is also possible to completely kill a command by renaming it into -# an empty string: -# -# rename-command CONFIG "" -# -# Please note that changing the name of commands that are logged into the -# AOF file or transmitted to slaves may cause problems. - -################################### LIMITS #################################### - -# Set the max number of connected clients at the same time. By default -# this limit is set to 10000 clients, however if the Redis server is not -# able to configure the process file limit to allow for the specified limit -# the max number of allowed clients is set to the current file limit -# minus 32 (as Redis reserves a few file descriptors for internal uses). -# -# Once the limit is reached Redis will close all the new connections sending -# an error 'max number of clients reached'. -# -# maxclients 10000 - -# Don't use more memory than the specified amount of bytes. -# When the memory limit is reached Redis will try to remove keys -# according to the eviction policy selected (see maxmemory-policy). -# -# If Redis can't remove keys according to the policy, or if the policy is -# set to 'noeviction', Redis will start to reply with errors to commands -# that would use more memory, like SET, LPUSH, and so on, and will continue -# to reply to read-only commands like GET. -# -# This option is usually useful when using Redis as an LRU cache, or to set -# a hard memory limit for an instance (using the 'noeviction' policy). -# -# WARNING: If you have slaves attached to an instance with maxmemory on, -# the size of the output buffers needed to feed the slaves are subtracted -# from the used memory count, so that network problems / resyncs will -# not trigger a loop where keys are evicted, and in turn the output -# buffer of slaves is full with DELs of keys evicted triggering the deletion -# of more keys, and so forth until the database is completely emptied. -# -# In short... if you have slaves attached it is suggested that you set a lower -# limit for maxmemory so that there is some free RAM on the system for slave -# output buffers (but this is not needed if the policy is 'noeviction'). -# -# maxmemory - -# MAXMEMORY POLICY: how Redis will select what to remove when maxmemory -# is reached. You can select among five behaviors: -# -# volatile-lru -> remove the key with an expire set using an LRU algorithm -# allkeys-lru -> remove any key according to the LRU algorithm -# volatile-random -> remove a random key with an expire set -# allkeys-random -> remove a random key, any key -# volatile-ttl -> remove the key with the nearest expire time (minor TTL) -# noeviction -> don't expire at all, just return an error on write operations -# -# Note: with any of the above policies, Redis will return an error on write -# operations, when there are no suitable keys for eviction. -# -# At the date of writing these commands are: set setnx setex append -# incr decr rpush lpush rpushx lpushx linsert lset rpoplpush sadd -# sinter sinterstore sunion sunionstore sdiff sdiffstore zadd zincrby -# zunionstore zinterstore hset hsetnx hmset hincrby incrby decrby -# getset mset msetnx exec sort -# -# The default is: -# -# maxmemory-policy noeviction - -# LRU and minimal TTL algorithms are not precise algorithms but approximated -# algorithms (in order to save memory), so you can tune it for speed or -# accuracy. For default Redis will check five keys and pick the one that was -# used less recently, you can change the sample size using the following -# configuration directive. -# -# The default of 5 produces good enough results. 10 Approximates very closely -# true LRU but costs a bit more CPU. 3 is very fast but not very accurate. -# -# maxmemory-samples 5 - -############################## APPEND ONLY MODE ############################### - -# By default Redis asynchronously dumps the dataset on disk. This mode is -# good enough in many applications, but an issue with the Redis process or -# a power outage may result into a few minutes of writes lost (depending on -# the configured save points). -# -# The Append Only File is an alternative persistence mode that provides -# much better durability. For instance using the default data fsync policy -# (see later in the config file) Redis can lose just one second of writes in a -# dramatic event like a server power outage, or a single write if something -# wrong with the Redis process itself happens, but the operating system is -# still running correctly. -# -# AOF and RDB persistence can be enabled at the same time without problems. -# If the AOF is enabled on startup Redis will load the AOF, that is the file -# with the better durability guarantees. -# -# Please check http://redis.io/topics/persistence for more information. - -appendonly {{appendonly}} - -# The name of the append only file (default: "appendonly.aof") - -appendfilename "appendonly.aof" - -# The fsync() call tells the Operating System to actually write data on disk -# instead of waiting for more data in the output buffer. Some OS will really flush -# data on disk, some other OS will just try to do it ASAP. -# -# Redis supports three different modes: -# -# no: don't fsync, just let the OS flush the data when it wants. Faster. -# always: fsync after every write to the append only log. Slow, Safest. -# everysec: fsync only one time every second. Compromise. -# -# The default is "everysec", as that's usually the right compromise between -# speed and data safety. It's up to you to understand if you can relax this to -# "no" that will let the operating system flush the output buffer when -# it wants, for better performances (but if you can live with the idea of -# some data loss consider the default persistence mode that's snapshotting), -# or on the contrary, use "always" that's very slow but a bit safer than -# everysec. -# -# More details please check the following article: -# http://antirez.com/post/redis-persistence-demystified.html -# -# If unsure, use "everysec". - -# appendfsync always -appendfsync everysec -# appendfsync no - -# When the AOF fsync policy is set to always or everysec, and a background -# saving process (a background save or AOF log background rewriting) is -# performing a lot of I/O against the disk, in some Linux configurations -# Redis may block too long on the fsync() call. Note that there is no fix for -# this currently, as even performing fsync in a different thread will block -# our synchronous write(2) call. -# -# In order to mitigate this problem it's possible to use the following option -# that will prevent fsync() from being called in the main process while a -# BGSAVE or BGREWRITEAOF is in progress. -# -# This means that while another child is saving, the durability of Redis is -# the same as "appendfsync none". In practical terms, this means that it is -# possible to lose up to 30 seconds of log in the worst scenario (with the -# default Linux settings). -# -# If you have latency problems turn this to "yes". Otherwise leave it as -# "no" that is the safest pick from the point of view of durability. - -no-appendfsync-on-rewrite {{noonrewrite}} - -# Automatic rewrite of the append only file. -# Redis is able to automatically rewrite the log file implicitly calling -# BGREWRITEAOF when the AOF log size grows by the specified percentage. -# -# This is how it works: Redis remembers the size of the AOF file after the -# latest rewrite (if no rewrite has happened since the restart, the size of -# the AOF at startup is used). -# -# This base size is compared to the current size. If the current size is -# bigger than the specified percentage, the rewrite is triggered. Also -# you need to specify a minimal size for the AOF file to be rewritten, this -# is useful to avoid rewriting the AOF file even if the percentage increase -# is reached but it is still pretty small. -# -# Specify a percentage of zero in order to disable the automatic AOF -# rewrite feature. - -auto-aof-rewrite-percentage 100 -auto-aof-rewrite-min-size 64mb - -# An AOF file may be found to be truncated at the end during the Redis -# startup process, when the AOF data gets loaded back into memory. -# This may happen when the system where Redis is running -# crashes, especially when an ext4 filesystem is mounted without the -# data=ordered option (however this can't happen when Redis itself -# crashes or aborts but the operating system still works correctly). -# -# Redis can either exit with an error when this happens, or load as much -# data as possible (the default now) and start if the AOF file is found -# to be truncated at the end. The following option controls this behavior. -# -# If aof-load-truncated is set to yes, a truncated AOF file is loaded and -# the Redis server starts emitting a log to inform the user of the event. -# Otherwise if the option is set to no, the server aborts with an error -# and refuses to start. When the option is set to no, the user requires -# to fix the AOF file using the "redis-check-aof" utility before to restart -# the server. -# -# Note that if the AOF file will be found to be corrupted in the middle -# the server will still exit with an error. This option only applies when -# Redis will try to read more data from the AOF file but not enough bytes -# will be found. -aof-load-truncated yes - -################################ LUA SCRIPTING ############################### - -# Max execution time of a Lua script in milliseconds. -# -# If the maximum execution time is reached Redis will log that a script is -# still in execution after the maximum allowed time and will start to -# reply to queries with an error. -# -# When a long running script exceeds the maximum execution time only the -# SCRIPT KILL and SHUTDOWN NOSAVE commands are available. The first can be -# used to stop a script that did not yet called write commands. The second -# is the only way to shut down the server in the case a write command was -# already issued by the script but the user doesn't want to wait for the natural -# termination of the script. -# -# Set it to 0 or a negative value for unlimited execution without warnings. -lua-time-limit 5000 - -################################ REDIS CLUSTER ############################### -# -# ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -# WARNING EXPERIMENTAL: Redis Cluster is considered to be stable code, however -# in order to mark it as "mature" we need to wait for a non trivial percentage -# of users to deploy it in production. -# ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -# -# Normal Redis instances can't be part of a Redis Cluster; only nodes that are -# started as cluster nodes can. In order to start a Redis instance as a -# cluster node enable the cluster support uncommenting the following: -# -# cluster-enabled yes - -# Every cluster node has a cluster configuration file. This file is not -# intended to be edited by hand. It is created and updated by Redis nodes. -# Every Redis Cluster node requires a different cluster configuration file. -# Make sure that instances running in the same system do not have -# overlapping cluster configuration file names. -# -# cluster-config-file nodes-6379.conf - -# Cluster node timeout is the amount of milliseconds a node must be unreachable -# for it to be considered in failure state. -# Most other internal time limits are multiple of the node timeout. -# -# cluster-node-timeout 15000 - -# A slave of a failing master will avoid to start a failover if its data -# looks too old. -# -# There is no simple way for a slave to actually have a exact measure of -# its "data age", so the following two checks are performed: -# -# 1) If there are multiple slaves able to failover, they exchange messages -# in order to try to give an advantage to the slave with the best -# replication offset (more data from the master processed). -# Slaves will try to get their rank by offset, and apply to the start -# of the failover a delay proportional to their rank. -# -# 2) Every single slave computes the time of the last interaction with -# its master. This can be the last ping or command received (if the master -# is still in the "connected" state), or the time that elapsed since the -# disconnection with the master (if the replication link is currently down). -# If the last interaction is too old, the slave will not try to failover -# at all. -# -# The point "2" can be tuned by user. Specifically a slave will not perform -# the failover if, since the last interaction with the master, the time -# elapsed is greater than: -# -# (node-timeout * slave-validity-factor) + repl-ping-slave-period -# -# So for example if node-timeout is 30 seconds, and the slave-validity-factor -# is 10, and assuming a default repl-ping-slave-period of 10 seconds, the -# slave will not try to failover if it was not able to talk with the master -# for longer than 310 seconds. -# -# A large slave-validity-factor may allow slaves with too old data to failover -# a master, while a too small value may prevent the cluster from being able to -# elect a slave at all. -# -# For maximum availability, it is possible to set the slave-validity-factor -# to a value of 0, which means, that slaves will always try to failover the -# master regardless of the last time they interacted with the master. -# (However they'll always try to apply a delay proportional to their -# offset rank). -# -# Zero is the only value able to guarantee that when all the partitions heal -# the cluster will always be able to continue. -# -# cluster-slave-validity-factor 10 - -# Cluster slaves are able to migrate to orphaned masters, that are masters -# that are left without working slaves. This improves the cluster ability -# to resist to failures as otherwise an orphaned master can't be failed over -# in case of failure if it has no working slaves. -# -# Slaves migrate to orphaned masters only if there are still at least a -# given number of other working slaves for their old master. This number -# is the "migration barrier". A migration barrier of 1 means that a slave -# will migrate only if there is at least 1 other working slave for its master -# and so forth. It usually reflects the number of slaves you want for every -# master in your cluster. -# -# Default is 1 (slaves migrate only if their masters remain with at least -# one slave). To disable migration just set it to a very large value. -# A value of 0 can be set but is useful only for debugging and dangerous -# in production. -# -# cluster-migration-barrier 1 - -# By default Redis Cluster nodes stop accepting queries if they detect there -# is at least an hash slot uncovered (no available node is serving it). -# This way if the cluster is partially down (for example a range of hash slots -# are no longer covered) all the cluster becomes, eventually, unavailable. -# It automatically returns available as soon as all the slots are covered again. -# -# However sometimes you want the subset of the cluster which is working, -# to continue to accept queries for the part of the key space that is still -# covered. In order to do so, just set the cluster-require-full-coverage -# option to no. -# -# cluster-require-full-coverage yes - -# In order to setup your cluster make sure to read the documentation -# available at http://redis.io web site. - -################################## SLOW LOG ################################### - -# The Redis Slow Log is a system to log queries that exceeded a specified -# execution time. The execution time does not include the I/O operations -# like talking with the client, sending the reply and so forth, -# but just the time needed to actually execute the command (this is the only -# stage of command execution where the thread is blocked and can not serve -# other requests in the meantime). -# -# You can configure the slow log with two parameters: one tells Redis -# what is the execution time, in microseconds, to exceed in order for the -# command to get logged, and the other parameter is the length of the -# slow log. When a new command is logged the oldest one is removed from the -# queue of logged commands. - -# The following time is expressed in microseconds, so 1000000 is equivalent -# to one second. Note that a negative number disables the slow log, while -# a value of zero forces the logging of every command. -slowlog-log-slower-than 10000 - -# There is no limit to this length. Just be aware that it will consume memory. -# You can reclaim memory used by the slow log with SLOWLOG RESET. -slowlog-max-len 128 - -################################ LATENCY MONITOR ############################## - -# The Redis latency monitoring subsystem samples different operations -# at runtime in order to collect data related to possible sources of -# latency of a Redis instance. -# -# Via the LATENCY command this information is available to the user that can -# print graphs and obtain reports. -# -# The system only logs operations that were performed in a time equal or -# greater than the amount of milliseconds specified via the -# latency-monitor-threshold configuration directive. When its value is set -# to zero, the latency monitor is turned off. -# -# By default latency monitoring is disabled since it is mostly not needed -# if you don't have latency issues, and collecting data has a performance -# impact, that while very small, can be measured under big load. Latency -# monitoring can easily be enabled at runtime using the command -# "CONFIG SET latency-monitor-threshold " if needed. -latency-monitor-threshold 0 - -############################# EVENT NOTIFICATION ############################## - -# Redis can notify Pub/Sub clients about events happening in the key space. -# This feature is documented at http://redis.io/topics/notifications -# -# For instance if keyspace events notification is enabled, and a client -# performs a DEL operation on key "foo" stored in the Database 0, two -# messages will be published via Pub/Sub: -# -# PUBLISH __keyspace@0__:foo del -# PUBLISH __keyevent@0__:del foo -# -# It is possible to select the events that Redis will notify among a set -# of classes. Every class is identified by a single character: -# -# K Keyspace events, published with __keyspace@__ prefix. -# E Keyevent events, published with __keyevent@__ prefix. -# g Generic commands (non-type specific) like DEL, EXPIRE, RENAME, ... -# $ String commands -# l List commands -# s Set commands -# h Hash commands -# z Sorted set commands -# x Expired events (events generated every time a key expires) -# e Evicted events (events generated when a key is evicted for maxmemory) -# A Alias for g$lshzxe, so that the "AKE" string means all the events. -# -# The "notify-keyspace-events" takes as argument a string that is composed -# of zero or multiple characters. The empty string means that notifications -# are disabled. -# -# Example: to enable list and generic events, from the point of view of the -# event name, use: -# -# notify-keyspace-events Elg -# -# Example 2: to get the stream of the expired keys subscribing to channel -# name __keyevent@0__:expired use: -# -# notify-keyspace-events Ex -# -# By default all notifications are disabled because most users don't need -# this feature and the feature has some overhead. Note that if you don't -# specify at least one of K or E, no events will be delivered. -notify-keyspace-events "" - -############################### ADVANCED CONFIG ############################### - -# Hashes are encoded using a memory efficient data structure when they have a -# small number of entries, and the biggest entry does not exceed a given -# threshold. These thresholds can be configured using the following directives. -hash-max-ziplist-entries 512 -hash-max-ziplist-value 64 - -# Lists are also encoded in a special way to save a lot of space. -# The number of entries allowed per internal list node can be specified -# as a fixed maximum size or a maximum number of elements. -# For a fixed maximum size, use -5 through -1, meaning: -# -5: max size: 64 Kb <-- not recommended for normal workloads -# -4: max size: 32 Kb <-- not recommended -# -3: max size: 16 Kb <-- probably not recommended -# -2: max size: 8 Kb <-- good -# -1: max size: 4 Kb <-- good -# Positive numbers mean store up to _exactly_ that number of elements -# per list node. -# The highest performing option is usually -2 (8 Kb size) or -1 (4 Kb size), -# but if your use case is unique, adjust the settings as necessary. -list-max-ziplist-size -2 - -# Lists may also be compressed. -# Compress depth is the number of quicklist ziplist nodes from *each* side of -# the list to *exclude* from compression. The head and tail of the list -# are always uncompressed for fast push/pop operations. Settings are: -# 0: disable all list compression -# 1: depth 1 means "don't start compressing until after 1 node into the list, -# going from either the head or tail" -# So: [head]->node->node->...->node->[tail] -# [head], [tail] will always be uncompressed; inner nodes will compress. -# 2: [head]->[next]->node->node->...->node->[prev]->[tail] -# 2 here means: don't compress head or head->next or tail->prev or tail, -# but compress all nodes between them. -# 3: [head]->[next]->[next]->node->node->...->node->[prev]->[prev]->[tail] -# etc. -list-compress-depth 0 - -# Sets have a special encoding in just one case: when a set is composed -# of just strings that happen to be integers in radix 10 in the range -# of 64 bit signed integers. -# The following configuration setting sets the limit in the size of the -# set in order to use this special memory saving encoding. -set-max-intset-entries 512 - -# Similarly to hashes and lists, sorted sets are also specially encoded in -# order to save a lot of space. This encoding is only used when the length and -# elements of a sorted set are below the following limits: -zset-max-ziplist-entries 128 -zset-max-ziplist-value 64 - -# HyperLogLog sparse representation bytes limit. The limit includes the -# 16 bytes header. When an HyperLogLog using the sparse representation crosses -# this limit, it is converted into the dense representation. -# -# A value greater than 16000 is totally useless, since at that point the -# dense representation is more memory efficient. -# -# The suggested value is ~ 3000 in order to have the benefits of -# the space efficient encoding without slowing down too much PFADD, -# which is O(N) with the sparse encoding. The value can be raised to -# ~ 10000 when CPU is not a concern, but space is, and the data set is -# composed of many HyperLogLogs with cardinality in the 0 - 15000 range. -hll-sparse-max-bytes 3000 - -# Active rehashing uses 1 millisecond every 100 milliseconds of CPU time in -# order to help rehashing the main Redis hash table (the one mapping top-level -# keys to values). The hash table implementation Redis uses (see dict.c) -# performs a lazy rehashing: the more operation you run into a hash table -# that is rehashing, the more rehashing "steps" are performed, so if the -# server is idle the rehashing is never complete and some more memory is used -# by the hash table. -# -# The default is to use this millisecond 10 times every second in order to -# actively rehash the main dictionaries, freeing memory when possible. -# -# If unsure: -# use "activerehashing no" if you have hard latency requirements and it is -# not a good thing in your environment that Redis can reply from time to time -# to queries with 2 milliseconds delay. -# -# use "activerehashing yes" if you don't have such hard requirements but -# want to free memory asap when possible. -activerehashing yes - -# The client output buffer limits can be used to force disconnection of clients -# that are not reading data from the server fast enough for some reason (a -# common reason is that a Pub/Sub client can't consume messages as fast as the -# publisher can produce them). -# -# The limit can be set differently for the three different classes of clients: -# -# normal -> normal clients including MONITOR clients -# slave -> slave clients -# pubsub -> clients subscribed to at least one pubsub channel or pattern -# -# The syntax of every client-output-buffer-limit directive is the following: -# -# client-output-buffer-limit -# -# A client is immediately disconnected once the hard limit is reached, or if -# the soft limit is reached and remains reached for the specified number of -# seconds (continuously). -# So for instance if the hard limit is 32 megabytes and the soft limit is -# 16 megabytes / 10 seconds, the client will get disconnected immediately -# if the size of the output buffers reach 32 megabytes, but will also get -# disconnected if the client reaches 16 megabytes and continuously overcomes -# the limit for 10 seconds. -# -# By default normal clients are not limited because they don't receive data -# without asking (in a push way), but just after a request, so only -# asynchronous clients may create a scenario where data is requested faster -# than it can read. -# -# Instead there is a default limit for pubsub and slave clients, since -# subscribers and slaves receive data in a push fashion. -# -# Both the hard or the soft limit can be disabled by setting them to zero. -client-output-buffer-limit normal 0 0 0 -client-output-buffer-limit slave 256mb 64mb 60 -client-output-buffer-limit pubsub 32mb 8mb 60 - -# Redis calls an internal function to perform many background tasks, like -# closing connections of clients in timeout, purging expired keys that are -# never requested, and so forth. -# -# Not all tasks are performed with the same frequency, but Redis checks for -# tasks to perform according to the specified "hz" value. -# -# By default "hz" is set to 10. Raising the value will use more CPU when -# Redis is idle, but at the same time will make Redis more responsive when -# there are many keys expiring at the same time, and timeouts may be -# handled with more precision. -# -# The range is between 1 and 500, however a value over 100 is usually not -# a good idea. Most users should use the default of 10 and raise this up to -# 100 only in environments where very low latency is required. -hz 10 - -# When a child rewrites the AOF file, if the following option is enabled -# the file will be fsync-ed every 32 MB of data generated. This is useful -# in order to commit the file to the disk more incrementally and avoid -# big latency spikes. -aof-rewrite-incremental-fsync yes diff --git a/template/setenv.j2 b/template/setenv.j2 deleted file mode 100644 index 1321d308..00000000 --- a/template/setenv.j2 +++ /dev/null @@ -1,8 +0,0 @@ -#!/bin/bash -# Author Yo -# Email YoLoveLife@outlook.com -# Time 2017-02-07 09:23 -CATALINA_HOME={{basedir}} -JAVA_HOME={{java_home}} -JRE_HOME={{java_home}}/jre -JAVA_OPTS={{java_opts}} \ No newline at end of file diff --git a/template/test.j2 b/template/test.j2 deleted file mode 100644 index ce0e8bd3..00000000 --- a/template/test.j2 +++ /dev/null @@ -1 +0,0 @@ -sadasda diff --git a/test/__init__.py b/test/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/test/rq.py b/test/rq.py deleted file mode 100644 index d8349200..00000000 --- a/test/rq.py +++ /dev/null @@ -1,2 +0,0 @@ -from apps.operation.models import Script -print(Script.objects.all()) \ No newline at end of file diff --git a/test/start.py b/test/start.py deleted file mode 100644 index 652324a9..00000000 --- a/test/start.py +++ /dev/null @@ -1,29 +0,0 @@ -class One(): - def __init__(self): - self.ddr = 1 - - def get_ddr(self): - print(self.ddr) - - - -class Two(): - def __init__(self): - self.test=One() - - def set_one(self,test): - self.test=test - - def one_add(self): - self.test.ddr=5 -if __name__ == "__main__": - # t=One() - # o=Two() - # o.set_test(t) - # o.test_add() - # t.get_ddr() - o = One() - t = Two() - t.set_one(o) - t.one_add() - o.get_ddr() \ No newline at end of file diff --git a/yosible/inventory.py b/yosible/inventory.py index 268d97a6..21324492 100644 --- a/yosible/inventory.py +++ b/yosible/inventory.py @@ -6,6 +6,7 @@ from ansible.inventory import Host,Group,Inventory from ansible.parsing.dataloader import DataLoader from ansible.vars import VariableManager +from utils.aes import decrypt class YoHost(Host): def __init__(self,host): self.host = host @@ -22,8 +23,7 @@ def set_all_variable(self): self.set_variable("ansible_become", True) self.set_variable("ansible_become_method", 'sudo') self.set_variable("ansible_become_user", 'root') - self.set_variable("ansible_become_pass", self.host.sshpasswd) - + self.set_variable("ansible_become_pass", decrypt(self.host.sshpasswd)) class YoInventory(Inventory): def __init__(self,host_list): diff --git a/yosible/runner.py b/yosible/runner.py index 40625270..7e986ddb 100644 --- a/yosible/runner.py +++ b/yosible/runner.py @@ -7,12 +7,14 @@ import ansible.constants as C from ansible.vars import VariableManager from ansible.parsing.dataloader import DataLoader -from ansible.executor.playbook_executor import PlaybookExecutor from ansible.utils.vars import load_extra_vars from ansible.utils.vars import load_options_vars -from yosible.inventory import YoHost,YoInventory +from yosible.inventory import YoInventory from ansible.playbook.play import Play from ansible.executor.task_queue_manager import TaskQueueManager +import time +import os +FILENAME = r"/tmp/%s%s" class AdHocRunner(object): Options = namedtuple("Options", [ @@ -56,6 +58,7 @@ def __init__(self, ) self.variable_manager.extra_vars = load_extra_vars(self.loader, options=self.options) + print(self.variable_manager.extra_vars) self.variable_manager.options_vars = load_options_vars(self.options) self.passwords = passwords or {} self.inventory = YoInventory(hosts) @@ -64,6 +67,8 @@ def __init__(self, self.play_source = None self.play = None self.runner = None + self.timestamp = str(time.time()) + self.filename=FILENAME%(self.timestamp,'') def set_callback(self,callback): self.results_callback=callback @@ -76,11 +81,11 @@ def check_module_args(module_name, module_args=''): return False return True - def run(self, task_tuple, pattern='all', task_name='Ansible Ad-hoc'): + def run(self, task_tuple, pattern='all'): """ :param task_tuple: (('shell', 'ls'), ('ping', '')) :param pattern: - :param task_name: + :param timestamp: :return: """ for task in task_tuple: @@ -94,7 +99,7 @@ def run(self, task_tuple, pattern='all', task_name='Ansible Ad-hoc'): ) self.play_source = dict( - name=task_name, + name=self.timestamp, hosts=pattern, gather_facts=self.gather_facts, tasks=self.tasks @@ -147,4 +152,7 @@ def clean_result(self): msg.get('invocation', {}).get('module_name'), msg.get('msg', '')) for msg in msgs]) result['failed'].append((host, msg)) - return result \ No newline at end of file + return result + +# +# class PlayBookRunner(object): From 235e5f385f546212478a2f2da71ac932259196d0 Mon Sep 17 00:00:00 2001 From: YoLoveLife Date: Fri, 10 Nov 2017 15:18:25 +0800 Subject: [PATCH 3/3] remove old api&put the new api in --- .../execute/ansible}/__init__.py | 2 +- .../execute/ansible}/inventory.py | 0 {yosible => apps/execute/ansible}/runner.py | 105 +++++++++++------- apps/execute/api.py | 19 ++-- apps/execute/service/__init__.py | 74 ++++++------ apps/execute/service/catch/db.py | 50 ++++----- apps/execute/service/catch/new-api.py | 6 +- inventory/maker.py | 48 -------- yosible/__init__.py | 0 yosible/module/__init__.py | 21 ---- yosible/module/copy.py | 16 --- yosible/run/__init__.py | 0 yosible/run/ansiblerun.py | 62 ----------- yosible/run/playbook.py | 39 ------- yosible/tasks/__init__.py | 0 yosible/tasks/tasks.py | 39 ------- yosible/vars/__init__.py | 0 yosible/vars/args.py | 30 ----- 18 files changed, 138 insertions(+), 373 deletions(-) rename {inventory => apps/execute/ansible}/__init__.py (84%) rename {yosible => apps/execute/ansible}/inventory.py (100%) rename {yosible => apps/execute/ansible}/runner.py (66%) delete mode 100644 inventory/maker.py delete mode 100644 yosible/__init__.py delete mode 100644 yosible/module/__init__.py delete mode 100644 yosible/module/copy.py delete mode 100644 yosible/run/__init__.py delete mode 100644 yosible/run/ansiblerun.py delete mode 100644 yosible/run/playbook.py delete mode 100644 yosible/tasks/__init__.py delete mode 100644 yosible/tasks/tasks.py delete mode 100644 yosible/vars/__init__.py delete mode 100644 yosible/vars/args.py diff --git a/inventory/__init__.py b/apps/execute/ansible/__init__.py similarity index 84% rename from inventory/__init__.py rename to apps/execute/ansible/__init__.py index 4462d07b..92b7dba8 100644 --- a/inventory/__init__.py +++ b/apps/execute/ansible/__init__.py @@ -1,5 +1,5 @@ # -*- coding:utf-8 -*- # !/usr/bin/env python -# Time 06 14:48 +# Time 17-11-10 # Author Yo # Email YoLoveLife@outlook.com \ No newline at end of file diff --git a/yosible/inventory.py b/apps/execute/ansible/inventory.py similarity index 100% rename from yosible/inventory.py rename to apps/execute/ansible/inventory.py diff --git a/yosible/runner.py b/apps/execute/ansible/runner.py similarity index 66% rename from yosible/runner.py rename to apps/execute/ansible/runner.py index 7e986ddb..11b5992c 100644 --- a/yosible/runner.py +++ b/apps/execute/ansible/runner.py @@ -3,20 +3,22 @@ # Time 17-11-7 # Author Yo # Email YoLoveLife@outlook.com +import time from collections import namedtuple + import ansible.constants as C -from ansible.vars import VariableManager +from ansible.executor.task_queue_manager import TaskQueueManager from ansible.parsing.dataloader import DataLoader +from ansible.playbook.play import Play from ansible.utils.vars import load_extra_vars from ansible.utils.vars import load_options_vars -from yosible.inventory import YoInventory -from ansible.playbook.play import Play -from ansible.executor.task_queue_manager import TaskQueueManager -import time -import os +from ansible.vars import VariableManager +from apps.execute.ansible.inventory import YoInventory +import os,glob +from operation.models import Script FILENAME = r"/tmp/%s%s" -class AdHocRunner(object): +class YoRunner(object): Options = namedtuple("Options", [ 'connection', 'module_path', 'private_key_file', "remote_user", 'timeout', 'forks', 'become', 'become_method', 'become_user', @@ -56,9 +58,9 @@ def __init__(self, extra_vars=extra_vars or [], private_key_file=private_key_file, ) - self.variable_manager.extra_vars = load_extra_vars(self.loader, - options=self.options) - print(self.variable_manager.extra_vars) + # self.variable_manager.extra_vars = load_extra_vars(self.loader, + # options=self.options) + self.variable_manager.extra_vars = extra_vars self.variable_manager.options_vars = load_options_vars(self.options) self.passwords = passwords or {} self.inventory = YoInventory(hosts) @@ -68,7 +70,8 @@ def __init__(self, self.play = None self.runner = None self.timestamp = str(time.time()) - self.filename=FILENAME%(self.timestamp,'') + self.filename = FILENAME%(self.timestamp,'') + self.have_script = 0 def set_callback(self,callback): self.results_callback=callback @@ -81,26 +84,39 @@ def check_module_args(module_name, module_args=''): return False return True - def run(self, task_tuple, pattern='all'): - """ - :param task_tuple: (('shell', 'ls'), ('ping', '')) - :param pattern: - :param timestamp: - :return: - """ + def task_add(self,task_tuple): for task in task_tuple: if not self.check_module_args(task.module,task.args): return + if task.module == u'script': + self.have_script = 1 + script = Script.objects.filter(id=task.args) + if os.path.exists(self.filename): + os.remove(self.filename) + script_name = FILENAME % (self.timestamp, '-' + str(script.get().id)) + output = open(script_name, 'w') + output.writelines(script.get().formatScript()) + output.close() + self.tasks.append( dict(action=dict( module=task.module, - args=task.args, + args=script_name, )) ) + def run(self, task_tuple,):# pattern='all'): + """ + :param task_tuple: (('shell', 'ls'), ('ping', '')) + :param pattern: + :param timestamp: + :return: + """ + self.task_add(task_tuple) + self.play_source = dict( name=self.timestamp, - hosts=pattern, + hosts='all', gather_facts=self.gather_facts, tasks=self.tasks ) @@ -134,25 +150,32 @@ def run(self, task_tuple, pattern='all'): self.runner.cleanup() if self.loader: self.loader.cleanup_all_tmp_files() + if self.have_script: + self.cleanup_script() - def clean_result(self): - """ - :return: { - "success": ['hostname',], - "failed": [('hostname', 'msg'), {}], - } - """ - result = {'success': [], 'failed': []} - for host in self.results_callback.result_q['contacted']: - result['success'].append(host) - - for host, msgs in self.results_callback.result_q['dark'].items(): - msg = '\n'.join(['{} {}: {}'.format( - msg.get('module_stdout', ''), - msg.get('invocation', {}).get('module_name'), - msg.get('msg', '')) for msg in msgs]) - result['failed'].append((host, msg)) - return result - -# -# class PlayBookRunner(object): + def cleanup_script(self): + # if os.path.exists(self.filename): + # os.remove(self.filename) + # return self.filename + for name in glob.glob(self.filename+'*'): + if os.path.exists(name): + print(name) + os.remove(name) + # def clean_result(self): + # """ + # :return: { + # "success": ['hostname',], + # "failed": [('hostname', 'msg'), {}], + # } + # """ + # result = {'success': [], 'failed': []} + # for host in self.results_callback.result_q['contacted']: + # result['success'].append(host) + # + # for host, msgs in self.results_callback.result_q['dark'].items(): + # msg = '\n'.join(['{} {}: {}'.format( + # msg.get('module_stdout', ''), + # msg.get('invocation', {}).get('module_name'), + # msg.get('msg', '')) for msg in msgs]) + # result['failed'].append((host, msg)) + # return result \ No newline at end of file diff --git a/apps/execute/api.py b/apps/execute/api.py index b151b697..950f6be2 100644 --- a/apps/execute/api.py +++ b/apps/execute/api.py @@ -1,16 +1,15 @@ # -*- coding:utf-8 -*- -import models,serializers +from application.models import DB +from execute.callback import ResultCallback +# from execute.service.catch.db import DBAnsibleService +from manager.models import Host +from operation.models import PlayBook from rest_framework import generics from rest_framework.permissions import IsAuthenticated -from execute.service.catch.basic import BasicAnsibleService -from execute.service.catch.db import DBAnsibleService -from operation.models import PlayBook -from manager.models import Host -from application.models import DBDetail,DB -from yosible.runner import AdHocRunner -from execute.callback import ResultCallback -from service.catch.basic import BasicAnsibleService +import serializers +from execute.ansible.runner import YoRunner + class UpdateHostAPI(generics.ListAPIView): serializer_class = serializers.UpdateHostSerializer permission_classes = [IsAuthenticated] @@ -24,7 +23,7 @@ def get(self, request, *args, **kwargs): # bas = BasicAnsibleService(hostlist=[host]) # bas.run(tasklist=playbook.tasks.all().order_by('-sort')) hosts = Host.objects.all() - runner = AdHocRunner(hosts=hosts) + runner = YoRunner(hosts=hosts,extra_vars={'ddr':'ls','zzc':'hostname'}) runner.set_callback(ResultCallback()) playbook = PlayBook.objects.all()[0] ret = runner.run(playbook.tasks.all()) diff --git a/apps/execute/service/__init__.py b/apps/execute/service/__init__.py index ddd2fff0..1d2d9007 100644 --- a/apps/execute/service/__init__.py +++ b/apps/execute/service/__init__.py @@ -1,40 +1,36 @@ # -*- coding:utf-8 -*- -from yosible.tasks.tasks import Task -from yosible.run.ansiblerun import Ansible -from yosible.run.playbook import Playbook -from yosible.tasks.tasks import Tasks -from operation.models import Script -__metaclass__ = type -class AnsibleService(): - def __init__(self,filename): - self.ansible = Ansible(filename) - self.playbook = Playbook(pbname='null',pbfacts='no') - self.tasks = Tasks() - self.push_tasks() - self.push_playbook() - - def run(self,tasklist,maker): - for task in tasklist : - t = Task(module = task.module,args=task.args) - #如果为脚本 则单独将脚本文件写出来 - if task.module == u'script': - script = Script.objects.get(id=int(str(task.args))) - t.args = maker.script_maker(script_id=str(script.id),script=script.formatScript()) - self.tasks.push_task(t) - result = self.ansible.run_playbook() - maker.inventory_clear() - - return result - - def push_makername(self): - return self.maker.filename - - def push_tasks(self): - self.playbook.push_tasks(self.tasks) - return - - def push_playbook(self): - self.ansible.set_playbook(self.playbook) - - def push_callback(self,callback): - self.ansible.set_callback(callback) \ No newline at end of file +# from operation.models import Script +# __metaclass__ = type +# class AnsibleService(): +# def __init__(self,filename): +# self.ansible = Ansible(filename) +# self.playbook = Playbook(pbname='null',pbfacts='no') +# self.tasks = Tasks() +# self.push_tasks() +# self.push_playbook() +# +# def run(self,tasklist,maker): +# for task in tasklist : +# t = Task(module = task.module,args=task.args) +# #如果为脚本 则单独将脚本文件写出来 +# if task.module == u'script': +# script = Script.objects.get(id=int(str(task.args))) +# t.args = maker.script_maker(script_id=str(script.id),script=script.formatScript()) +# self.tasks.push_task(t) +# result = self.ansible.run_playbook() +# maker.inventory_clear() +# +# return result +# +# def push_makername(self): +# return self.maker.filename +# +# def push_tasks(self): +# self.playbook.push_tasks(self.tasks) +# return +# +# def push_playbook(self): +# self.ansible.set_playbook(self.playbook) +# +# def push_callback(self,callback): +# self.ansible.set_callback(callback) \ No newline at end of file diff --git a/apps/execute/service/catch/db.py b/apps/execute/service/catch/db.py index 5b67330f..dd838c47 100644 --- a/apps/execute/service/catch/db.py +++ b/apps/execute/service/catch/db.py @@ -3,30 +3,30 @@ # Time 17-10-9 # Author Yo # Email YoLoveLife@outlook.com -from execute.service import AnsibleService +# from execute.service import AnsibleService from execute.callback.catch.basic import BasicResultCallback -from inventory.maker import Maker +# from inventory.maker import Maker __metaclass__ = type -class DBAnsibleService(AnsibleService): - def __init__(self,hostlist): - self.maker = Maker() - self.hostlist = hostlist - self.maker.inventory_maker(hostlist) - super(DBAnsibleService,self).__init__(self.maker.filename) - - def run(self,db,tasklist): - callback = BasicResultCallback() - self.push_callback(callback) - - super(DBAnsibleService,self).run(tasklist,self.maker) - - list = callback.ResultExtract() - self.update(list,db) - - def update(self,list,db): - detail = db.dbdetail.get() - detail.com_insert = list[0].strip() - detail.com_update = list[1].strip() - detail.max_connections = list[2].strip() - detail.thread_running = list[3].strip() - detail.save() +# class DBAnsibleService(AnsibleService): +# def __init__(self,hostlist): +# self.maker = Maker() +# self.hostlist = hostlist +# self.maker.inventory_maker(hostlist) +# super(DBAnsibleService,self).__init__(self.maker.filename) +# +# def run(self,db,tasklist): +# callback = BasicResultCallback() +# self.push_callback(callback) +# +# super(DBAnsibleService,self).run(tasklist,self.maker) +# +# list = callback.ResultExtract() +# self.update(list,db) +# +# def update(self,list,db): +# detail = db.dbdetail.get() +# detail.com_insert = list[0].strip() +# detail.com_update = list[1].strip() +# detail.max_connections = list[2].strip() +# detail.thread_running = list[3].strip() +# detail.save() diff --git a/apps/execute/service/catch/new-api.py b/apps/execute/service/catch/new-api.py index 79be537e..a0ebcd63 100644 --- a/apps/execute/service/catch/new-api.py +++ b/apps/execute/service/catch/new-api.py @@ -4,10 +4,12 @@ # Author Yo # Email YoLoveLife@outlook.com -from yosible.runner import AdHocRunner -from manager.models import Host from execute.callback import ResultCallback +from manager.models import Host from operation.models import PlayBook + +from apps.execute.ansible.runner import AdHocRunner + __metaclass__ = type def test_task(): diff --git a/inventory/maker.py b/inventory/maker.py deleted file mode 100644 index 04b28e6b..00000000 --- a/inventory/maker.py +++ /dev/null @@ -1,48 +0,0 @@ -# -*- coding:utf-8 -*- -# !/usr/bin/env python -# Time 06 14:50 -# Author Yo -# Email YoLoveLife@outlook.com -import os -import time -from utils import aes -FILENAME = r"/tmp/%s%s" -SSHPORT = "ansible_ssh_port=" -SSHUSER = "ansible_ssh_user=" -SUDOPASS = "ansible_sudo_pass=" -class Maker(): - def __init__(self): - self.timestamp = str(time.time()) - self.filename=FILENAME%(self.timestamp,'') - - def set_filename(self,filename): - self.filename=FILENAME%(filename,'') - - def inventory_maker(self,hosts): - if os.path.exists(self.filename): - os.remove(self.filename) - output=open(self.filename,'w') - for host in hosts: - str = host.service_ip + \ - " " + SSHPORT + host.sshport + \ - " " + SSHUSER + host.normal_user + \ - " " + SUDOPASS + aes.decrypt(host.sshpasswd) + '\n' - output.writelines(str) - output.close() - return self.filename - - def inventory_clear(self): - if os.path.exists(self.filename): - os.remove(self.filename) - return self.filename - - def script_maker(self,script_id,script): - if os.path.exists(self.filename): - os.remove(self.filename) - script_name = FILENAME%(self.timestamp,'-'+script_id) - output = open(script_name,'w') - output.writelines(script) - output.close() - return script_name - - diff --git a/yosible/__init__.py b/yosible/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/yosible/module/__init__.py b/yosible/module/__init__.py deleted file mode 100644 index c4045249..00000000 --- a/yosible/module/__init__.py +++ /dev/null @@ -1,21 +0,0 @@ -# -*- coding:utf-8 -*- -# !/usr/bin/python2.6 -# Author Yo -# Email YoLoveLife@outlook.com -import json -class BaseModule(): - def result2Json(self,value): - self._result=json.loads(value) - - def value2Args(self,*args,**kwargs): - self._ansible_parsed=self._result['_ansible_parsed'] - self._changed=self._result['changed'] - self.__ansible_no_log=self._result['_ansible_no_log'] - - def pop_task(self): - pass - -if __name__ == "__main__": - ddr = {'rr':{'ddr':'zzc'}} - ba=BaseModule() - ba.result2Json(ddr) \ No newline at end of file diff --git a/yosible/module/copy.py b/yosible/module/copy.py deleted file mode 100644 index 5e7187d8..00000000 --- a/yosible/module/copy.py +++ /dev/null @@ -1,16 +0,0 @@ -from yosible.module import BaseModule -class CopyModule(BaseModule): - - - def value2Args(self,*args,**kwargs): - self._size = self._result['size'] - self._own = self._result['own'] - self._group = self._result['group'] - self._md5sum = self._result['md5sum'] - self._dest = self._result['dest'] - self._mode = self._result['mode'] - - return super(CopyModule,self).value2Args(*args,**kwargs) - - - diff --git a/yosible/run/__init__.py b/yosible/run/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/yosible/run/ansiblerun.py b/yosible/run/ansiblerun.py deleted file mode 100644 index f96cbfb5..00000000 --- a/yosible/run/ansiblerun.py +++ /dev/null @@ -1,62 +0,0 @@ -from yosible.tasks.tasks import Tasks,Task -from ansible.executor.task_queue_manager import TaskQueueManager -from ansible.inventory import Inventory -from ansible.parsing.dataloader import DataLoader -from ansible.playbook.play import Play -from ansible.vars import VariableManager -from apps.execute.callback import ResultCallback -from playbook import Playbook -from yosible.vars.args import option, HOST_LIST - -class Ansible(): - def __init__(self,host_file): - self.options = option - self.variable_manager = VariableManager() - self.loader = DataLoader() - self.passwords = dict(vault_pass='') - self.results_callback = ResultCallback() - self.inventory = Inventory(loader=self.loader, variable_manager=self.variable_manager, host_list=host_file) - self.variable_manager.set_inventory(self.inventory) - - def add_extendvars(self,newext): - self.variable_manager.extra_vars=newext - - def set_playbook(self,pb): - self.playbook=pb - self.add_extendvars(self.playbook.ext_vars) - - def set_callback(self,callback): - self.results_callback = callback - - def run_playbook(self): - tqm=pop_TaskqueueManager(self) - try: - result =tqm.run(Play().load(self.playbook.pop_playbook())) - return result - finally: - if tqm is not None: - tqm.cleanup() - -def pop_TaskqueueManager(ansible): - tqm = TaskQueueManager(inventory=ansible.inventory, - variable_manager=ansible.variable_manager, - loader=ansible.loader, - options=ansible.options, - passwords=ansible.passwords, - stdout_callback=ansible.results_callback,) - return tqm - - -if __name__ == "__main__": - pb=Playbook('ddr','no') - pb.push_vars({'prefix':'/usr/local','base_dir':'/usr/local/tomcat'}) - - b=Task(module="script",args="~/ddr.sh") - - s=Tasks() - s.push_task(b) - A=Ansible() - pb.push_tasks(s) - A.set_playbook(pb) - - A.run_playbook() diff --git a/yosible/run/playbook.py b/yosible/run/playbook.py deleted file mode 100644 index f41e313b..00000000 --- a/yosible/run/playbook.py +++ /dev/null @@ -1,39 +0,0 @@ -from yosible.tasks.tasks import Task,Tasks -class Playbook(): - def __init__(self,pbname,pbfacts): - self.name=pbname - self.hosts='all' - self.gather_facts=pbfacts - self.ext_vars={} - self.tasks=Tasks() - - def push_vars(self,new_vars):#Rewrite - self.ext_vars=new_vars - - def push_task(self,task): - self.tasks.push_task(task=task) - - def push_tasks(self,tasks):#Rewrite - self.tasks=tasks - - def pop_tasks(self): - return self.tasks.pop_tasks() - - def pop_playbook(self): - print(dict(name=self.name,hosts=self.hosts,gather_facts=self.gather_facts,tasks=self.tasks.pop_tasks())) - return dict(name=self.name,hosts=self.hosts,gather_facts=self.gather_facts,tasks=self.tasks.pop_tasks()) - -if __name__ == "__main__": - p=Playbook('ddr','no') - - a=Task(module="shell",args="ls /etc") - b=Task(module="shell",args="ls /usr") - c=Task(module="shell",args="ls /") - - s=Tasks() - s.push_task(a) - s.push_task(b) - s.push_task(c) - - p.push_tasks(s) - print(p.pop_playbook()) \ No newline at end of file diff --git a/yosible/tasks/__init__.py b/yosible/tasks/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/yosible/tasks/tasks.py b/yosible/tasks/tasks.py deleted file mode 100644 index 6701ddaf..00000000 --- a/yosible/tasks/tasks.py +++ /dev/null @@ -1,39 +0,0 @@ -class Task(object): - def __init__(self,module="shell",args="",register='shell_out'): - self.module=module - self.args=args - self.register=register - - def pop_task(self): - return dict(action=dict(module=self.module,args=self.args),register=self.register) - - def __str__(self): - return "[module_name:%s][args:%s][register:%s]"%(self.module,self.args,self.register) - -class Tasks(object): - def __init__(self): - self.task_list=[] - - def __str__(self): - return self.task_list - - def push_task(self,task): - self.task_list.append(task) - - def pop_tasks(self): - list=[] - for task in self.task_list: - list.append(task.pop_task()) - return list - -if __name__ == '__main__': - a=Task(module="shell",args="ls /etc") - b=Task(module="shell",args="ls /usr") - c=Task(module="shell",args="ls /") - - s=Tasks() - s.push_task(a) - s.push_task(b) - s.push_task(c) - print(s.pop_tasks()) - print(s.__str__()) \ No newline at end of file diff --git a/yosible/vars/__init__.py b/yosible/vars/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/yosible/vars/args.py b/yosible/vars/args.py deleted file mode 100644 index 91968c8e..00000000 --- a/yosible/vars/args.py +++ /dev/null @@ -1,30 +0,0 @@ -# -*- coding:utf-8 -*- -# !/usr/bin/env python -# Author Yo -# Email YoLoveLife@outlook.com -from collections import namedtuple -#FTP地址 -FTP='192.168.254.134' -#是否启用Checksum -CHECKSUM=1 - -#默认的ansible host路径 -HOST_LIST='/tmp/ansible.host' -#Ansible执行数值列表 -OPTIONS = namedtuple('Options', - ['connection', 'module_path', 'forks', 'become', 'become_method', 'become_user', 'check']) -#Ansible Fork子线程个数 -FORKS=100 -#执行操作的连接 -CONNECTION='smart' -#提权操作后成为的用户 -BECOME=None -#提权操作使用的方法 -BECOME_METHOD='sudo' -#提权操作后成为的用户 -BECOME_USER=None - - - -option=OPTIONS(connection='smart', module_path='', forks=FORKS, become=BECOME, become_method=BECOME_METHOD, - become_user=BECOME_USER, check=False) \ No newline at end of file