Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEd Stoner <ed@whsd.net>2007-10-30 14:55:51 (GMT)
committer Ed Stoner <ed@whsd.net>2007-10-30 14:55:51 (GMT)
commit816061cbf24d85dc7d3d891fdc04b2529e7b614e (patch)
treeb000b6ca0ea906988be38cc7cb3bf1227d63c729
Initial import
-rw-r--r--activity/activity-flipsticks.svg91
-rwxr-xr-xactivity/activity.info7
-rw-r--r--activity/newbad.activity-flipsticks.svg119
-rw-r--r--animatefp.gifbin0 -> 42097 bytes
-rw-r--r--export.notes.txt2
-rw-r--r--flipsticks.py1882
-rw-r--r--flipsticks.pycbin0 -> 37706 bytes
-rw-r--r--flipsticks01.jpgbin0 -> 377327 bytes
-rw-r--r--flipsticks04.jpgbin0 -> 221746 bytes
-rw-r--r--flipsticksIcon.eps59
-rw-r--r--icons/50x50blank-trans.pngbin0 -> 167 bytes
-rw-r--r--icons/big_left_arrow.pngbin0 -> 1753 bytes
-rw-r--r--icons/big_pause.pngbin0 -> 1712 bytes
-rw-r--r--icons/big_right_arrow.pngbin0 -> 1802 bytes
-rw-r--r--icons/camera.pngbin0 -> 2565 bytes
-rw-r--r--icons/clear.pngbin0 -> 2202 bytes
-rw-r--r--icons/down_arrow.pngbin0 -> 419 bytes
-rw-r--r--icons/filmstrip.pngbin0 -> 1670 bytes
-rw-r--r--icons/left_arrow.pngbin0 -> 422 bytes
-rw-r--r--icons/logo.pngbin0 -> 29250 bytes
-rw-r--r--icons/old_pause.pngbin0 -> 223 bytes
-rw-r--r--icons/old_x_clear.pngbin0 -> 1469 bytes
-rw-r--r--icons/pause.pngbin0 -> 252 bytes
-rw-r--r--icons/pink_arrow.pngbin0 -> 361 bytes
-rw-r--r--icons/reset.pngbin0 -> 1534 bytes
-rw-r--r--icons/right_arrow.pngbin0 -> 424 bytes
-rw-r--r--icons/sound_icon.pngbin0 -> 3227 bytes
-rw-r--r--icons/up_arrow.pngbin0 -> 405 bytes
-rw-r--r--icons/yellow_arrow.pngbin0 -> 375 bytes
-rw-r--r--lp-en/An_Overview.txt13
-rw-r--r--lp-en/Lesson_Plan_1.txt65
-rw-r--r--lp-en/Lesson_Plan_2.txt42
-rw-r--r--lp-en/Lesson_Plan_3.txt25
-rw-r--r--manifest1
-rw-r--r--notes.txt7
-rw-r--r--old.flipsticks.py1527
-rwxr-xr-xpng2theora117
-rw-r--r--todo.txt4
38 files changed, 3961 insertions, 0 deletions
diff --git a/activity/activity-flipsticks.svg b/activity/activity-flipsticks.svg
new file mode 100644
index 0000000..fa72631
--- /dev/null
+++ b/activity/activity-flipsticks.svg
@@ -0,0 +1,91 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 12.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 51448) -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" [
+ <!ENTITY ns_svg "http://www.w3.org/2000/svg">
+ <!ENTITY ns_xlink "http://www.w3.org/1999/xlink">
+ <!ENTITY stroke_color "#010101">
+ <!ENTITY fill_color "#FFFFFF">
+]>
+<svg version="1.1" xmlns="&ns_svg;" xmlns:xlink="&ns_xlink;" width="60.818" height="55.881" viewBox="0 0 60.818 55.881"
+ overflow="visible" enable-background="new 0 0 60.818 55.881" xml:space="preserve">
+<g id="Layer_2">
+</g>
+<g id="Layer_1">
+ <g>
+ <g>
+ <path d="M0.5,0.5v54.881h54.804V0.5H0.5z M42.44,4h2.868v4.983H42.44V4z M36.074,4h2.866v4.983h-2.866V4z M23.341,4h2.867v4.983
+ h-2.867V4z M16.975,4h2.866v4.983h-2.866V4z M10.609,4h2.866v4.983h-2.866V4z M4,4h3.109v4.983H4V4z M4,12.483h28.427v31.521H4
+ V12.483z M7.109,51.881H4v-4.377h3.109V51.881z M13.475,51.881h-2.866v-4.377h2.866V51.881z M19.841,51.881h-2.866v-4.377h2.866
+ V51.881z M26.208,51.881h-2.867v-4.377h2.867V51.881z M32.574,51.881h-2.866v-4.377h2.866V51.881z M32.574,8.983h-2.866V4h2.866
+ V8.983z M38.94,51.881h-2.866v-4.377h2.866V51.881z M45.309,51.881H42.44v-4.377h2.868V51.881z M51.804,51.881h-2.995v-4.377
+ h2.995V51.881z M51.804,44.004H35.927V12.483h15.877V44.004z M51.804,8.983h-2.995V4h2.995V8.983z M17.821,14.194
+ c-7.018,0-12.728,6.14-12.728,13.687c0,7.546,5.709,13.686,12.728,13.686c7.018,0,12.727-6.14,12.727-13.686
+ C30.548,20.333,24.838,14.194,17.821,14.194z M17.821,38.066c-5.088,0-9.228-4.569-9.228-10.186
+ c0-5.617,4.14-10.187,9.228-10.187s9.227,4.57,9.227,10.187C27.048,33.497,22.909,38.066,17.821,38.066z M19.299,23.941
+ c0,1.567,1.229,2.843,2.741,2.843c1.511,0,2.741-1.275,2.741-2.843s-1.229-2.842-2.741-2.842
+ C20.529,21.099,19.299,22.374,19.299,23.941z M23.781,23.941c0,1.016-0.781,1.843-1.741,1.843s-1.741-0.827-1.741-1.843
+ c0-1.016,0.781-1.842,1.741-1.842S23.781,22.926,23.781,23.941z M16.193,23.941c0-1.567-1.229-2.842-2.741-2.842
+ c-1.51,0-2.739,1.275-2.739,2.842s1.229,2.843,2.739,2.843C14.963,26.784,16.193,25.509,16.193,23.941z M11.713,23.941
+ c0-1.016,0.78-1.842,1.739-1.842c0.96,0,1.741,0.827,1.741,1.842c0,1.016-0.781,1.843-1.741,1.843
+ C12.493,25.784,11.713,24.958,11.713,23.941z M17.885,32.835c-2.48-0.12-4.214-2.413-4.687-3.113l-1.658,1.119
+ c0.604,0.895,2.839,3.827,6.249,3.991c2.453,0.118,4.833-1.198,7.075-3.914l-1.542-1.273
+ C21.503,31.848,19.674,32.921,17.885,32.835z M51.788,41.149v-3.5c-5.088,0-9.227-4.569-9.227-10.186
+ c0-5.617,4.139-10.188,9.227-10.188v-3.5c-7.018,0-12.727,6.14-12.727,13.688C39.062,35.009,44.771,41.149,51.788,41.149z
+ M50.16,23.525c0-1.568-1.229-2.844-2.738-2.844c-1.512,0-2.741,1.276-2.741,2.844c0,1.567,1.229,2.842,2.741,2.842
+ C48.932,26.367,50.16,25.092,50.16,23.525z M45.681,23.525c0-1.017,0.781-1.844,1.741-1.844c0.958,0,1.738,0.827,1.738,1.844
+ c0,1.016-0.78,1.842-1.738,1.842C46.462,25.367,45.681,24.541,45.681,23.525z M51.801,34.365l-0.025-2
+ c-2.604,0.033-4.445-2.379-4.948-3.119l-1.654,1.123C45.816,31.318,48.197,34.411,51.801,34.365z"/>
+ </g>
+ <g>
+ <path fill="none" stroke="#000000" d="M0.5,0.5v54.881h54.804V0.5H0.5z M42.44,4h2.868v4.983H42.44V4z M36.074,4h2.866v4.983
+ h-2.866V4z M23.341,4h2.867v4.983h-2.867V4z M16.975,4h2.866v4.983h-2.866V4z M10.609,4h2.866v4.983h-2.866V4z M4,4h3.109v4.983
+ H4V4z M4,12.483h28.427v31.521H4V12.483z M7.109,51.881H4v-4.377h3.109V51.881z M13.475,51.881h-2.866v-4.377h2.866V51.881z
+ M19.841,51.881h-2.866v-4.377h2.866V51.881z M26.208,51.881h-2.867v-4.377h2.867V51.881z M32.574,51.881h-2.866v-4.377h2.866
+ V51.881z M32.574,8.983h-2.866V4h2.866V8.983z M38.94,51.881h-2.866v-4.377h2.866V51.881z M45.309,51.881H42.44v-4.377h2.868
+ V51.881z M51.804,51.881h-2.995v-4.377h2.995V51.881z M51.804,44.004H35.927V12.483h15.877V44.004z M51.804,8.983h-2.995V4h2.995
+ V8.983z M17.821,14.194c-7.018,0-12.728,6.14-12.728,13.687c0,7.546,5.709,13.686,12.728,13.686
+ c7.018,0,12.727-6.14,12.727-13.686C30.548,20.333,24.838,14.194,17.821,14.194z M17.821,38.066
+ c-5.088,0-9.228-4.569-9.228-10.186c0-5.617,4.14-10.187,9.228-10.187s9.227,4.57,9.227,10.187
+ C27.048,33.497,22.909,38.066,17.821,38.066z M19.299,23.941c0,1.567,1.229,2.843,2.741,2.843c1.511,0,2.741-1.275,2.741-2.843
+ s-1.229-2.842-2.741-2.842C20.529,21.099,19.299,22.374,19.299,23.941z M23.781,23.941c0,1.016-0.781,1.843-1.741,1.843
+ s-1.741-0.827-1.741-1.843c0-1.016,0.781-1.842,1.741-1.842S23.781,22.926,23.781,23.941z M16.193,23.941
+ c0-1.567-1.229-2.842-2.741-2.842c-1.51,0-2.739,1.275-2.739,2.842s1.229,2.843,2.739,2.843
+ C14.963,26.784,16.193,25.509,16.193,23.941z M11.713,23.941c0-1.016,0.78-1.842,1.739-1.842c0.96,0,1.741,0.827,1.741,1.842
+ c0,1.016-0.781,1.843-1.741,1.843C12.493,25.784,11.713,24.958,11.713,23.941z M17.885,32.835
+ c-2.48-0.12-4.214-2.413-4.687-3.113l-1.658,1.119c0.604,0.895,2.839,3.827,6.249,3.991c2.453,0.118,4.833-1.198,7.075-3.914
+ l-1.542-1.273C21.503,31.848,19.674,32.921,17.885,32.835z M51.788,41.149v-3.5c-5.088,0-9.227-4.569-9.227-10.186
+ c0-5.617,4.139-10.188,9.227-10.188v-3.5c-7.018,0-12.727,6.14-12.727,13.688C39.062,35.009,44.771,41.149,51.788,41.149z
+ M50.16,23.525c0-1.568-1.229-2.844-2.738-2.844c-1.512,0-2.741,1.276-2.741,2.844c0,1.567,1.229,2.842,2.741,2.842
+ C48.932,26.367,50.16,25.092,50.16,23.525z M45.681,23.525c0-1.017,0.781-1.844,1.741-1.844c0.958,0,1.738,0.827,1.738,1.844
+ c0,1.016-0.78,1.842-1.738,1.842C46.462,25.367,45.681,24.541,45.681,23.525z M51.801,34.365l-0.025-2
+ c-2.604,0.033-4.445-2.379-4.948-3.119l-1.654,1.123C45.816,31.318,48.197,34.411,51.801,34.365z"/>
+ </g>
+ </g>
+</g>
+<g id="Layer_3">
+ <polyline fill="#636466" stroke="#BCBEC0" stroke-width="3" points="54.152,15.419 54.152,54.17 1.651,54.17 1.651,1.669
+ 54.152,1.669 54.152,15.419 "/>
+ <path fill="#636466" stroke="#BCBEC0" stroke-width="3" d="M60.818,30.336"/>
+</g>
+<g id="Layer_4">
+ <path fill="#636466" stroke="#BCBEC0" stroke-width="3" d="M27.646,9.952c0.409,2.399-1.192,4.68-3.581,5.092
+ c-2.387,0.411-4.654-1.2-5.063-3.599c-0.41-2.4,1.193-4.68,3.579-5.091C24.969,5.94,27.235,7.552,27.646,9.952z"/>
+ <line fill="#636466" stroke="#BCBEC0" stroke-width="3" x1="25.067" y1="15.431" x2="27.226" y2="28.071"/>
+ <line fill="#636466" stroke="#BCBEC0" stroke-width="3" x1="20.979" y1="18.345" x2="29.736" y2="16.833"/>
+ <line fill="#636466" stroke="#BCBEC0" stroke-width="3" x1="30.719" y1="16.936" x2="36.044" y2="22.17"/>
+ <line fill="#636466" stroke="#BCBEC0" stroke-width="3" x1="19.667" y1="17.971" x2="15.776" y2="24.991"/>
+ <line fill="#636466" stroke="#BCBEC0" stroke-width="3" x1="23.174" y1="29.12" x2="31.431" y2="27.697"/>
+ <line fill="#636466" stroke="#BCBEC0" stroke-width="3" x1="22.866" y1="30.065" x2="18.054" y2="37.75"/>
+ <line fill="#636466" stroke="#BCBEC0" stroke-width="3" x1="31.888" y1="28.515" x2="39.915" y2="34.097"/>
+ <line fill="#636466" stroke="#BCBEC0" stroke-width="3" x1="40.181" y1="34.355" x2="42.992" y2="40.625"/>
+ <line fill="#636466" stroke="#BCBEC0" stroke-width="3" x1="44.099" y1="41.667" x2="48.082" y2="38.947"/>
+ <line fill="#636466" stroke="#BCBEC0" stroke-width="3" x1="19.086" y1="38.948" x2="28.983" y2="37.354"/>
+ <line fill="#636466" stroke="#BCBEC0" stroke-width="3" x1="30.082" y1="38.037" x2="29.345" y2="42.514"/>
+ <line fill="#636466" stroke="#BCBEC0" stroke-width="3" x1="36.754" y1="23.001" x2="43.103" y2="20.344"/>
+ <line fill="#636466" stroke="#BCBEC0" stroke-width="3" x1="9.386" y1="29.209" x2="15.307" y2="25.819"/>
+ <ellipse fill="#636466" stroke="#BCBEC0" stroke-width="3.5" cx="7.699" cy="50.284" rx="3.33" ry="3.484"/>
+ <ellipse fill="#636466" stroke="#BCBEC0" stroke-width="3.5" cx="21.102" cy="50.284" rx="3.331" ry="3.484"/>
+ <ellipse fill="#636466" stroke="#BCBEC0" stroke-width="3.5" cx="34.84" cy="50.284" rx="3.33" ry="3.484"/>
+ <ellipse fill="#636466" stroke="#BCBEC0" stroke-width="3.5" cx="48.08" cy="50.284" rx="3.33" ry="3.484"/>
+</g>
+</svg>
diff --git a/activity/activity.info b/activity/activity.info
new file mode 100755
index 0000000..6701033
--- /dev/null
+++ b/activity/activity.info
@@ -0,0 +1,7 @@
+[Activity]
+name = FlipSticks
+service_name = org.worldwideworkshop.olpc.FlipSticks
+class = flipsticks.flipsticksActivity
+icon = activity-flipsticks
+activity_version = 1
+show_launcher = yes
diff --git a/activity/newbad.activity-flipsticks.svg b/activity/newbad.activity-flipsticks.svg
new file mode 100644
index 0000000..c0377c0
--- /dev/null
+++ b/activity/newbad.activity-flipsticks.svg
@@ -0,0 +1,119 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 12.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 51448) -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" [
+ <!ENTITY ns_svg "http://www.w3.org/2000/svg">
+ <!ENTITY ns_xlink "http://www.w3.org/1999/xlink">
+]>
+<svg version="1.1" id="Layer_1" xmlns="&ns_svg;" xmlns:xlink="&ns_xlink;" width="55.485" height="112.462"
+ viewBox="0 0 55.485 112.462" overflow="visible" enable-background="new 0 0 55.485 112.462" xml:space="preserve">
+<g>
+ <g>
+ <path d="M0.682,57.58v54.882h54.804V57.58H0.682z M42.622,61.08h2.868v4.984h-2.868V61.08z M36.256,61.08h2.866v4.984h-2.866
+ V61.08z M23.523,61.08h2.867v4.984h-2.867V61.08z M17.157,61.08h2.866v4.984h-2.866V61.08z M10.791,61.08h2.866v4.984h-2.866
+ V61.08z M4.182,61.08h3.109v4.984H4.182V61.08z M4.182,69.564h28.427v31.521H4.182V69.564z M7.291,108.962H4.182v-4.377h3.109
+ V108.962z M13.657,108.962h-2.866v-4.377h2.866V108.962z M20.023,108.962h-2.866v-4.377h2.866V108.962z M26.39,108.962h-2.867
+ v-4.377h2.867V108.962z M32.756,108.962H29.89v-4.377h2.866V108.962z M32.756,66.064H29.89V61.08h2.866V66.064z M39.122,108.962
+ h-2.866v-4.377h2.866V108.962z M45.49,108.962h-2.868v-4.377h2.868V108.962z M51.985,108.962H48.99v-4.377h2.995V108.962z
+ M51.985,101.085H36.108V69.564h15.877V101.085z M51.985,66.064H48.99V61.08h2.995V66.064z M18.002,71.274
+ c-7.018,0-12.728,6.14-12.728,13.687c0,7.546,5.709,13.686,12.728,13.686c7.018,0,12.727-6.14,12.727-13.686
+ C30.729,77.414,25.02,71.274,18.002,71.274z M18.002,95.146c-5.088,0-9.228-4.569-9.228-10.186c0-5.617,4.14-10.187,9.228-10.187
+ s9.227,4.569,9.227,10.187C27.229,90.577,23.09,95.146,18.002,95.146z M19.481,81.021c0,1.568,1.229,2.844,2.741,2.844
+ c1.511,0,2.741-1.275,2.741-2.844c0-1.566-1.229-2.842-2.741-2.842C20.71,78..18,19.481,79.455,19.481,81.021z M23.963,81.021
+ c0,1.017-0.781,1.844-1.741,1.844s-1.741-0.827-1.741-1.844c0-1.016,0.781-1..842,1.741-1.842S23.963,80.006,23.963,81.021z
+ M16.375,81.021c0-1.566-1.229-2.842-2.741-2.842c-1.51,0-2.739,1.275-2.739,2.842c0,1.568,1.229,2.844,2.739,2.844
+ C15.145,83.865,16.375,82.59,16.375,81.021z M11.895,81.021c0-1.016,0.78-1.842,1.739-1.842c0.96,0,1.741,0.826,1.741,1.842
+ c0,1.017-0.781,1.844-1.741,1.844C12.675,82.865,11.895,82.038,11.895,81.021z M18.067,89.916c-2.48-0.12-4.214-2.413-4.687-3.113
+ l-1.658,1.119c0.604,0.895,2.839,3.827,6.249,3.991c2.453,0.118,4.833-1.198,7.075-3.914l-1.542-1.273
+ C21.685,88.929,19.856,90.002,18.067,89.916z M51.97,98.229v-3.5c-5.088,0-9.227-4.569-9.227-10.186
+ c0-5.617,4.139-10.188,9.227-10.188v-3.5c-7.018,0-12.727,6.14-12.727,13.688C39.243,92.09,44.952,98.229,51.97,98.229z
+ M50.342,80.605c0-1.568-1.229-2.844-2.738-2.844c-1.512,0-2.741,1.275-2.741,2.844c0,1.567,1.229,2.842,2.741,2.842
+ C49.113,83.447,50.342,82.173,50.342,80.605z M45.862,80.605c0-1.017,0.781-1.844,1.741-1.844c0.958,0,1.738,0.827,1.738,1.844
+ c0,1.016-0.78,1.842-1.738,1.842C46.644,82.447,45.862,81.621,45.862,80.605z M51.982,91.445l-0.025-2
+ c-2.604,0.033-4.445-2.379-4.948-3.119l-1.654,1.123C45.998,88.398,48.379,91.491,51.982,91.445z"/>
+ </g>
+</g>
+<g>
+ <ellipse fill="none" enable-background="new " cx="47.185" cy="49.65" rx="3.304" ry="3.481"/>
+ <g>
+ <g>
+ <path d="M0,0v53.819h4.277c0.803,0.61,1.78,0.979,2.844,0.979s2.041-0.369,2.844-0.979h7.61c0.803,0.61,1.78,0.979,2.843,0.979
+ c1.063,0,2.042-0.369,2.844-0.979h7.943c0.804,0.61,1.781,0.979,2.844,0.979c1.063,0,2.041-0.369,2.844-0.979h7.448
+ c0.804,0.61,1.78,0.979,2.844,0.979s2.04-0.369,2.843-0.979h4.89V0H0z M8.641,50.484c-1.172,0-2.197,0-3.041,0
+ c-0.125-0.251-0.202-0.531-0.202-0.834c0-0.999,0.772-1.813,1.722-1.813s1.722,0.814,1.722,1.813
+ C8.843,49.953,8.766,50.233,8.641,50.484z M21.938,50.484c-1.03,0-2.046,0-3.041,0c-0.125-0.251-0.202-0.531-0.202-0.834
+ c0-0.999,0.773-1.813,1.722-1.813c0.951,0,1.723,0.814,1.723,1.813C22.14,49..953,22.063,50.233,21.938,50.484z M35.568,50.484
+ c-0.996,0-2.012,0-3.04,0c-0.125-0.251-0.202-0.531-0.202-0.834c0-0.999,0.773-1.813,1.723-1.813s1.721,0.814,1.721,1.813
+ C35.77,49.953,35.692,50.233,35.568,50.484z M48.704,50.484c-0.871,0-1.892,0-3.041,0c-0.124-0.251-0.201-0.531-0.201-0.834
+ c0-0.999,0.771-1.813,1.723-1.813c0.948,0,1.721,0.814,1.721,1.813C48.905,49.953,48.828,50.233,48.704,50.484z M51.753,47.88
+ c-0.688-1.964-2.468-3.376-4.568-3.376c-2.693,0-4.887,2.31-4.887,5.146c0,0..285,0.037,0.561,0.08,0.834
+ c-1.114,0-2.293,0-3.523,0c0.043-0.273,0.08-0.549,0.08-0.834c0-2.837-2.191-5.146-4.886-5.146c-2.693,0-4.886,2.31-4.886,5.146
+ c0,0.285,0.037,0.561,0.08,0.834c-1.338,0-2.683,0-4.019,0c0.042-0.273,0.08-0.549,0.08-0.834c0-2.837-2.192-5.146-4.887-5.146
+ c-2.694,0-4.886,2.31-4.886,5.146c0,0.285,0.038,0.561,0.08,0.834c-1.294,0-2.529,0-3.686,0c0.042-0.273,0.08-0.549,0.08-0.834
+ c0-2.837-2.191-5.146-4.886-5.146c-1.631,0-3.069,0.854-3.957,2.152c0-10.948,0-40.774,0-43.322c2.88,0,45.708,0,48.589,0
+ C51.753,5.985,51.753,38.153,51.753,47.88z M7.323,31.193c0.476-0.083,0.889-0.353,1.163-0.761
+ c0.204-0.304,0.307-0.657,0.308-1.018l4.853-2.799c0.363,0.246,0.812,0.36,1..273,0.279c0.477-0.083,0.889-0.354,1.163-0.762
+ c0.203-0.304,0.31-0.658,0.31-1.019c0-0.104-0.009-0.208-0.026-0.313c-0.028-0.167-0.085-0.32-0.153-0.466l2.416-4.281
+ l-0.152-0.095c0.213,0.047,0.437,0.057,0.665,0.018c0.476-0.083,0.888-0.353,1.162-0.761c0.114-0.169,0.191-0.356,0.243-0.549
+ l3.436-0.597l1.518,8.948l-0.913,0.159c-0.391-0.474-1.005-0.736-1.644-0.625c-0.477,0.083-0.89,0.353-1.164,0.762
+ c-0.262,0.392-0.363,0.865-0.284,1.334c0.026,0.155,0.077,0.299,0.138,0.436l-0.223-0.153l-4.774,7.68l0.133,0.092
+ c-0.468,0.087-0.872,0.352-1.142,0.755c-0.263,0.393-0.364,0.866-0.285,1.334c0.167,0.98,1.082,1.643,2.04,1.476
+ c0.478-0.084,0.892-0.353,1.164-0.762c0.055-0.082,0.099-0.169,0.14-0.258l9..559-1.548c0.036,0.021,0.071,0.044,0.108,0.063
+ l-0.647,3.967l1.781,0.324l0.731-4.475l-0.044-0.008c0.139-0.111,0.267-0.237,0.37-0.391c0.199-0.298,0.304-0.646,0.304-1.001
+ c0-0.101-0.007-0.204-0.025-0.307c-0.162-0.959-1.058-1.605-1.996-1.443c-0.467,0.08-0.87,0.344-1.139,0.744
+ c-0.149,0.223-0.238,0.473-0.277,0.731l-8.948,1.451c-0.024-0.03-0.046-0.063-0.072-0.093l4.453-7.162
+ c0.221,0.053,0.455,0.063,0.692,0.022c0.477-0.083,0.89-0.353,1.164-0.76c0.062-0.094,0.098-0.198,0.142-0.3l3.782-0.659
+ c0.394,0.432,0.984,0.663,1.594,0.557c0.184-0.032,0.354-0.1,0.514-0.184l7.469,5.229c-0.017,0.158-0.019,0.318,0.009,0.479
+ c0.156,0.938,1.033,1.573,1.951,1.414c0.023-0.004,0.044-0.014,0.067-0.019l2.409,5.411c-0.01,0.014-0.021,0.024-0.031,0.038
+ c-0.262,0.391-0.363,0.864-0.284,1.334c0.167,0.98,1.083,1.642,2.042,1.476c0.476-0.083,0.889-0.352,1.162-0.76
+ c0.119-0.179,0.194-0.376,0.246-0.58l3.895-2.677l-0.991-1.597l-3.513,2.416c-0.243-0.197-0.534-0.326-0.849-0.372l-2.637-5.924
+ l-0.202,0.1c0.092-0.272,0.122-0.563,0.072-0.854c-0.159-0.939-1.035-1.574-1.954-1.414c-0.076,0.014-0.148,0.039-0.221,0.062
+ l-7.684-5.38c-0.001-0.098-0.005-0.196-0.021-0.293c-0.167-0.981-1.083-1.642-2.043-1.474c-0.476,0.081-0.889,0.352-1.162,0.758
+ c-0.081,0.121-0.142,0.251-0.191,0.386l-0.987,0.171l-1.518-8.948l3.059-0.532c0.349,0.514,0.943,0.818,1.579,0.771l3.774,3.813
+ c-0.063,0.248-0.081,0.508-0.036,0.768c0.167,0.981,1.083,1.643,2.043,1.475c0.476-0.083,0.889-0.352,1.163-0.761
+ c0.138-0.207,0.229-0.438,0.274-0.679l5.556-2.341c0.389,0.5,1.019,0.781,1.678,0.666c0.476-0.083,0.889-0.353,1.163-0.761
+ c0.262-0.391,0.363-0.864,0.284-1.334v-0.001c-0.167-0.979-1.081-1.641-2.042-1.474c-0.476,0.083-0.889,0.353-1.162,0.761
+ c-0.034,0.051-0.059,0.106-0.087,0.16l-6.05,2.551c-0.378-0.297-0.867-0.444-1.371-0.357c-0.03,0.005-0.059,0.018-0.089,0.025
+ l-3.588-3.624c0.125-0.312,0.165-0.653,0.107-0.993c-0.167-0.979-1.082-1.642-2.039-1.476c-0.478,0.084-0.891,0.354-1.165,0.762
+ c-0.028,0.042-0.047,0.087-0.07,0.131l-3.3,0.573l-0.196-1.156c0.668-0.395,1.256-0.924,1.708-1.597
+ c0.777-1.157,1.074-2.556,0.84-3.938c-0.492-2.904-3.211-4.863-6.061-4.368c-1.417,0.247-2.644,1.048-3.454,2.259
+ c-0.775,1.157-1.074,2.554-0.839,3.935c0.492,2.903,3.21,4.864,6.06,4.368c0..007-0.001,0.014-0.004,0.021-0.006l0.138,0.813
+ l-3.514,0.611l0.034,0.214c-0.393-0.466-1.002-0.722-1.636-0.612c-0.477,0.083-0.89,0.353-1.164,0.759
+ c-0.263,0.394-0.364,0.867-0.284,1.335c0.054,0.32,0.194,0.601,0.383,0.836l-0.408-0.256l-2.383,4.222
+ c-0.121-0.005-0.244,0.001-0.368,0.023c-0.477,0.084-0.89,0.353-1.164,0.761c-0.164,0.244-0.256,0.521-0.29,0.807l-5.043,2.909
+ c-0.329-0.173-0.709-0.248-1.1-0.181c-0.478,0.085-0.891,0.355-1.165,0.764c-0.262,0.392-0.362,0.864-0.283,1.332
+ C5.448,30.697,6.363,31.36,7.323,31.193z M17.81,38.954c-0.133,0.199-0.336,0.331-0.572,0.373
+ c-0.473,0.081-0.924-0.235-1.003-0.705c-0.036-0.215,0.012-0.436,0.133-0.616c0.133-0.198,0.336-0.33,0.572-0.371
+ c0.473-0.081,0.924,0.233,1.003,0.703c0.007,0.047,0.011,0.096,0.011,0.143C17.954,38.648,17.905,38.813,17.81,38.954z
+ M28.428,35.724c0.127-0.19,0.321-0.316,0.548-0.355c0.453-0.077,0.884,0.223,0.959,0.672c0.035,0.206-0.012,0.416-0.128,0.59
+ c-0.126,0.19-0.319,0.315-0.545,0.354c-0.453,0.078-0.884-0.224-0.96-0.673C28.267,36.105,28.311,35.896,28.428,35.724z
+ M23.962,28.812c-0.133,0.198-0.336,0.329-0.571,0.37c-0.474,0.083-0.925-0.233-1.004-0.703
+ c-0.037-0.215,0.009-0.433,0.132-0.618c0.133-0.198,0.337-0.329,0.573-0.371c0.474-0.082,0.923,0.235,1.003,0.706
+ C24.132,28.411,24.083,28.632,23.962,28.812z M43.346,41.879c0.132-0.197,0.336-0.329,0.572-0.371
+ c0.474-0.081,0.924,0.233,1.004,0.703c0.037,0.217-0.013,0.437-0.135,0.619c-0.132,0.197-0.334,0.328-0.57,0.368
+ c-0.476,0.083-0.924-0.231-1.003-0.702C43.177,42.28,43.221,42.061,43.346,41.879z M39.218,33.756
+ c0.122-0.181,0.309-0.3,0.525-0.339c0.431-0.075,0.842,0.213,0.916,0.643c0.032,0.195-0.007,0.394-0.122,0.56
+ c-0.119,0.182-0.306,0.302-0.522,0.34c-0.434,0.075-0.844-0.213-0.916-0.642C39.066,34.121,39.108,33.923,39.218,33.756z
+ M29.2,26.701c0.134-0.2,0.337-0.33,0.572-0.37c0.474-0.083,0.925,0.232,1.005,0.703c0.008,0.046,0.013,0.094,0.013,0.142
+ c0,0.167-0.051,0.333-0.146,0.474c-0.133,0.199-0.336,0.331-0.572,0.371c-0.475,0.083-0.925-0.232-1.005-0.702
+ C29.03,27.103,29.079,26.887,29.2,26.701z M43.839,18.679c0.132-0.198,0.336-0.33,0.57-0.372
+ c0.475-0.081,0.926,0.234,1.005,0.705c0.008,0.046,0.013,0.094,0.013,0.142c0,0.168-0.05,0.333-0.146,0.475
+ c-0.132,0.198-0.336,0.331-0.57,0.372c-0.476,0.081-0.926-0.232-1.006-0.703C43.667,19.081,43.714,18.861,43.839,18.679z
+ M35.166,21.795c0.133-0.199,0.336-0.331,0.571-0.373c0.474-0.081,0.924,0.235,1.004,0.706c0.037,0.215-0.008,0.436-0.132,0.615
+ c-0.133,0.2-0.337,0.331-0.573,0.371c-0.474,0.083-0.923-0.232-1.004-0.702C34.995,22.197,35.044,21.979,35.166,21.795z
+ M29.557,15.728c0.133-0.198,0.336-0.331,0.572-0.372c0.474-0.083,0.924,0.234,1.005,0.703c0.008,0.047,0.011,0.095,0.011,0.142
+ c0,0.169-0.05,0.334-0.144,0.476c-0.135,0.198-0.337,0.33-0.571,0.37c-0.476,0.083-0.927-0.232-1.005-0.703
+ C29.388,16.128,29.436,15.906,29.557,15.728z M23.212,13.504c-1.878,0.328-3.667-0.939-3.987-2.821
+ c-0.148-0.876,0.042-1.763,0.537-2.502c0.53-0.79,1.336-1.314,2.273-1.477c1..878-0.327,3.667,0.94,3.987,2.823
+ c0.148,0.876-0.045,1.766-0.538,2.504C24.954,12.819,24.148,13.343,23.212,13.504z M18.124,17.715
+ c0.133-0.198,0.336-0.329,0.572-0.371c0.475-0.083,0.924,0.233,1.005,0.703c0.007,0.048,0.011,0.097,0.011,0.144
+ c0,0.168-0.05,0.332-0.146,0.475c-0.132,0.197-0.334,0.329-0.57,0.37c-0.476,0.083-0.925-0.233-1.005-0.704
+ C17.954,18.116,18.002,17.895,18.124,17.715z M13.9,24.635c0.133-0.198,0.336-0.329,0.573-0.371
+ c0.474-0.082,0.925,0.233,1.004,0.704c0.036,0.215-0.011,0.436-0.133,0.617c-0.132,0.197-0.336,0.329-0.573,0.371
+ c-0.325,0.057-0.63-0.083-0.821-0.323l-0.137-0.263c-0.013-0.041-0.038-0.075-0.045-0.118
+ C13.73,25.037,13.776,24.819,13.9,24.635z M6.304,28.934c0.133-0.199,0.337-0.331,0.574-0.373
+ c0.473-0.082,0.923,0.233,1.003,0.705c0.008,0.047,0.012,0.096,0.012,0.143c0,0.168-0.05,0.333-0.145,0.475
+ c-0.133,0.198-0.335,0.329-0.571,0.371c-0.475,0.082-0.925-0.234-1.005-0.705C6.136,29.333,6.182,29.115,6.304,28.934z"/>
+ </g>
+ </g>
+</g>
+</svg>
diff --git a/animatefp.gif b/animatefp.gif
new file mode 100644
index 0000000..2f85a83
--- /dev/null
+++ b/animatefp.gif
Binary files differ
diff --git a/export.notes.txt b/export.notes.txt
new file mode 100644
index 0000000..68eea0e
--- /dev/null
+++ b/export.notes.txt
@@ -0,0 +1,2 @@
+png2yuv -I p -f 25 -j /tmp/*.png >my.yuv
+ffmpeg2theora --optimize my.yuv
diff --git a/flipsticks.py b/flipsticks.py
new file mode 100644
index 0000000..05b9290
--- /dev/null
+++ b/flipsticks.py
@@ -0,0 +1,1882 @@
+#!/usr/bin/env python
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+#
+
+
+### flipsticks
+###
+### author: Ed Stoner (ed@whsd.net)
+### (c) 2007 World Wide Workshop Foundation
+
+import time
+import pygtk
+pygtk.require('2.0')
+import gtk
+import gobject
+import os
+import math
+import textwrap
+import pickle
+
+SERVICE = 'org.freedesktop.Telepathy.Tube.Connect'
+IFACE = SERVICE
+PATH = '/org/freedesktop/Telepathy/Tube/Connect'
+GRAY = "#B7B7B7" # gray
+PINK = "#FF0099" # pink
+YELLOW = "#FFFF00" # yellow
+WHITE = "#FFFFFF"
+BLACK = "#000000"
+BACKGROUND = "#66CC00" # light green
+BUTTON_FOREGROUND = "#CCFB99" # very light green
+BUTTON_BACKGROUND = "#027F01" # dark green
+COLOR_FG_BUTTONS = (
+ (gtk.STATE_NORMAL,"#CCFF99"),
+ (gtk.STATE_ACTIVE,"#CCFF99"),
+ (gtk.STATE_PRELIGHT,"#CCFF99"),
+ (gtk.STATE_SELECTED,"#CCFF99"),
+ (gtk.STATE_INSENSITIVE,"#CCFF99"),
+ ) # very light green
+COLOR_BG_BUTTONS = (
+ (gtk.STATE_NORMAL,"#027F01"),
+ (gtk.STATE_ACTIVE,"#CCFF99"),
+ (gtk.STATE_PRELIGHT,"#016D01"),
+ (gtk.STATE_SELECTED,"#CCFF99"),
+ (gtk.STATE_INSENSITIVE,"#027F01"),
+ )
+OLD_COLOR_BG_BUTTONS = (
+ (gtk.STATE_NORMAL,"#027F01"),
+ (gtk.STATE_ACTIVE,"#014D01"),
+ (gtk.STATE_PRELIGHT,"#016D01"),
+ (gtk.STATE_SELECTED,"#027F01"),
+ (gtk.STATE_INSENSITIVE,"#027F01"),
+ )
+
+SPANISH = u'Espa\xf1ol'
+LANG = {'English':{'size':'Size',
+ 'angle':'Angle',
+ 'lessonplan':'Lesson Plans',
+ 'lpdir':'lp-en',
+ 'export':'Export Frame One',
+ 'HEAD':'Head',
+ 'NECK':'Neck',
+ 'RIGHT SHOULDER':'Right Shoulder',
+ 'UPPER RIGHT ARM':'Upper Right Arm',
+ 'LOWER RIGHT ARM':'Lower Right Arm',
+ 'RIGHT HAND':'Right Hand',
+ 'LEFT SHOULDER':'Left Shoulder',
+ 'UPPER LEFT ARM':'Upper Left Arm',
+ 'LOWER LEFT ARM':'Lower Left Arm',
+ 'LEFT HAND':'Left Hand',
+ 'TORSO':'Torso',
+ 'RIGHT HIP':'Right Hip',
+ 'UPPER RIGHT LEG':'Upper Right Leg',
+ 'LOWER RIGHT LEG':'Lower Right Leg',
+ 'RIGHT FOOT':'Right Foot',
+ 'LEFT HIP':'Left Hip',
+ 'UPPER LEFT LEG':'Upper Left Leg',
+ 'LOWER LEFT LEG':'Lower Left Leg',
+ 'LEFT FOOT':'Left Foot'},
+ SPANISH:{'size':u'Tama\xf1o',
+ 'angle':u'\xe1ngulo',
+ 'lessonplan':u'Planes de la lecci\xf3n',
+ 'lpdir':'lp-en',
+ 'export':'Un marco de la exportacion',
+ 'HEAD':'Cabeza',
+ 'NECK':'Cuello',
+ 'RIGHT SHOULDER':'Hombro derecho',
+ 'UPPER RIGHT ARM':'Brazo derecho superior',
+ 'LOWER RIGHT ARM':'Bajar el brazo derecho',
+ 'RIGHT HAND':'Mano derecha',
+ 'LEFT SHOULDER':'Hombro izquierdo',
+ 'UPPER LEFT ARM':'Brazo izquierdo superior',
+ 'LOWER LEFT ARM':u'Un brazo izquierdo m\xe1s bajo',
+ 'LEFT HAND':'Mano izquierda',
+ 'TORSO':'Torso',
+ 'RIGHT HIP':'Cadera derecha',
+ 'UPPER RIGHT LEG':'Pierna derecha superior',
+ 'LOWER RIGHT LEG':'Bajar la pierna derecha',
+ 'RIGHT FOOT':'Pie derecho',
+ 'LEFT HIP':'Cadera izquierda',
+ 'UPPER LEFT LEG':'Pierna izquierda superior',
+ 'LOWER LEFT LEG':u'Una pierna izquierda m\xe1s baja',
+ 'LEFT FOOT':'Pie izquierdo'}}
+
+DRAWWIDTH = 750
+DRAWHEIGHT = 500
+FPWIDTH = 150
+FPHEIGHT = 100
+#DRAWHEIGHT = 300 for my laptop
+KEYFRAMEWIDTH = 675
+KEYFRAMEHEIGHT = 80
+
+KEYFRAMES = [50,190,337,487,625]
+TOTALFRAMES = 30
+
+STICKS = {'HEAD':(0,15),
+ 'NECK':(90,15),
+ 'RIGHT SHOULDER':(185,25),
+ 'UPPER RIGHT ARM':(60,35),
+ 'LOWER RIGHT ARM':(35,35),
+ 'LEFT SHOULDER':(355,25),
+ 'UPPER LEFT ARM':(300,35),
+ 'LOWER LEFT ARM':(325,35),
+ 'TORSO':(270,60),
+ 'RIGHT HIP':(80,20),
+ 'UPPER RIGHT LEG':(300,50),
+ 'LOWER RIGHT LEG':(340,40),
+ 'RIGHT FOOT':(85,15),
+ 'LEFT HIP':(280,20),
+ 'UPPER LEFT LEG':(65,50),
+ 'LOWER LEFT LEG':(15,40),
+ 'LEFT FOOT':(275,15)}
+
+PARTS = {'RIGHT HAND':14,
+ 'LEFT HAND':14}
+
+
+STICKLIST = ['NECK','HEAD','RIGHT SHOULDER','UPPER RIGHT ARM','LOWER RIGHT ARM',
+ 'LEFT SHOULDER','UPPER LEFT ARM','LOWER LEFT ARM','TORSO',
+ 'RIGHT HIP','UPPER RIGHT LEG','LOWER RIGHT LEG','RIGHT FOOT',
+ 'LEFT HIP','UPPER LEFT LEG','LOWER LEFT LEG','LEFT FOOT']
+
+LABELLIST = ['HEAD','NECK','RIGHT SHOULDER','UPPER RIGHT ARM','LOWER RIGHT ARM',
+ 'RIGHT HAND','LEFT SHOULDER','UPPER LEFT ARM','LOWER LEFT ARM','LEFT HAND',
+ 'TORSO','RIGHT HIP','UPPER RIGHT LEG','LOWER RIGHT LEG','RIGHT FOOT',
+ 'LEFT HIP','UPPER LEFT LEG','LOWER LEFT LEG','LEFT FOOT']
+
+# The joint is the circle at the end of the stick
+
+JOINTS = {'HEAD':'head',
+ 'NECK':'neck',
+ 'RIGHT SHOULDER':'rightshoulder',
+ 'UPPER RIGHT ARM':'rightelbow',
+ 'LOWER RIGHT ARM':'righthand',
+ 'LEFT SHOULDER':'leftshoulder',
+ 'UPPER LEFT ARM':'leftelbow',
+ 'LOWER LEFT ARM':'lefthand',
+ 'TORSO':'groin',
+ 'RIGHT HIP':'righthip',
+ 'UPPER RIGHT LEG':'rightknee',
+ 'LOWER RIGHT LEG':'rightheel',
+ 'RIGHT FOOT':'righttoe',
+ 'LEFT HIP':'lefthip',
+ 'UPPER LEFT LEG':'leftknee',
+ 'LOWER LEFT LEG':'leftheel',
+ 'LEFT FOOT':'lefttoe'}
+
+JOINTTOSTICK = {}
+for jname in JOINTS:
+ JOINTTOSTICK[JOINTS[jname]] = jname
+
+PARTS = {'HEAD':40,
+ 'RIGHT HAND':14,
+ 'LEFT HAND':14}
+
+TESTSTICKS = {'RIGHT SHOULDER':(37,20),
+ 'UPPER RIGHT ARM':(6,15),
+ 'LOWER RIGHT ARM':(10,15)}
+
+def getwrappedfile(filepath,linelength):
+ text = []
+ f = file(filepath)
+ for line in f:
+ if line == '\n':
+ text.append(line)
+ else:
+ for wline in textwrap.wrap(line.strip()):
+ text.append('%s\n' % wline)
+ return ''.join(text)
+
+def capwords(s):
+ x = s.split()
+ n = []
+ for word in x:
+ n.append(word.capitalize())
+ return ' '.join(n)
+
+def prepare_btn(btn, w=-1, h=-1):
+ for state, color in COLOR_BG_BUTTONS:
+ btn.modify_bg(state, gtk.gdk.color_parse(color))
+ c = btn.get_child()
+ if c is not None:
+ for state, color in COLOR_FG_BUTTONS:
+ c.modify_fg(state, gtk.gdk.color_parse(color))
+ else:
+ for state, color in COLOR_FG_BUTTONS:
+ btn.modify_fg(state, gtk.gdk.color_parse(color))
+ if w>0 or h>0:
+ btn.set_size_request(w, h)
+ return btn
+
+def inarea(x,y,awidth,aheight):
+ if x+5 > awidth:
+ return False
+ if y+5 > aheight:
+ return False
+ if y < 5:
+ return False
+ if x < 5:
+ return False
+ return True
+
+def interpolate(x,x0,y0,x1,y1):
+ if x1-x0 == 0:
+ return y0
+ m = float(y1-y0)/float(x1-x0)
+ y = y0 + ((x-x0)*m)
+ return y
+
+def getpoints(x,y,angle,len):
+ nx = int(round(x + (len * math.cos(math.radians(angle)))))
+ ny = int(round(y - (len * math.sin(math.radians(angle)))))
+ return (nx,ny)
+
+def scalesticks(stickdict,i):
+ for key in stickdict:
+ (angle,len) = stickdict[key]
+ newlen = int(len * i)
+ stickdict[key] = (angle,newlen)
+
+class flipsticks:
+ def delete_event(self, widget, event, data=None):
+ return False
+
+ def destroy(self, widget, data=None):
+ gtk.main_quit()
+
+ def expose_event(self, widget, event):
+ x , y, width, height = event.area
+ widget.window.draw_drawable(widget.get_style().fg_gc[gtk.STATE_NORMAL],
+ self.pixmap, x, y, x, y, width, height)
+ return False
+
+ def kf_expose_event(self, widget, event):
+ x , y, width, height = event.area
+ widget.window.draw_drawable(widget.get_style().fg_gc[gtk.STATE_NORMAL],
+ self.kfpixmap, x, y, x, y, width, height)
+ return False
+
+ def fp_expose_event(self, widget, event):
+ x , y, width, height = event.area
+ widget.window.draw_drawable(widget.get_style().fg_gc[gtk.STATE_NORMAL],
+ self.fppixmap, x, y, x, y, width, height)
+ return False
+
+ def configure_event(self, widget, event):
+ x, y, width, height = self.mfdraw.get_allocation()
+ self.pixmap = gtk.gdk.Pixmap(self.mfdraw.window, width, height)
+ self.drawmainframe()
+ return True
+
+ def kf_configure_event(self, widget, event):
+ self.drawkeyframe()
+ return True
+
+ def fp_configure_event(self, widget, event):
+ self.drawfp()
+ return True
+
+ def motion_notify_event(self, widget, event):
+ if event.is_hint:
+ x, y, state = event.window.get_pointer()
+ else:
+ x = event.x
+ y = event.y
+ state = event.state
+ if state & gtk.gdk.BUTTON1_MASK and self.pixmap != None:
+ if self.jointpressed:
+ if inarea(x,y,DRAWWIDTH,DRAWHEIGHT):
+ #self.joints[self.jointpressed] = (x,y) # old hack way
+ # first find the parents x,y
+ (px,py) = self.getparentjoint(self.jointpressed,self.joints,
+ self.middle)
+ if x-px == 0:
+ #computeangle = 0
+ b = 1
+ else:
+ b = float(px-x)
+ a = float(y-py)
+ computeangle = int(math.degrees(math.atan(a/b)))
+ stickname = JOINTTOSTICK[self.jointpressed]
+ # add sum of parent angles to new angle
+ parents = self.getparentsticks(stickname)
+ panglesum = 0
+ for parentname in parents:
+ (pangle,plen) = self.sticks[parentname]
+ panglesum += pangle
+ (angle, len) = self.sticks[stickname]
+ #print 'X:%s,Y:%s,PX:%s,PY:%s,ANGLE:%s,NEWANGLE:%s' % (x,y,px,py,angle,newangle)
+ newangle = computeangle-panglesum
+ if (x < px) or (b == 1):
+ newangle = newangle + 180
+ if newangle < 0:
+ newangle = 360 + newangle
+ self.sticks[stickname] = (newangle,len)
+ self.setjoints() # this is overkill
+ self.drawmainframe()
+ self.updateentrybox()
+ elif self.middlepressed:
+ if inarea(x,y,DRAWWIDTH,DRAWHEIGHT):
+ xdiff = x-self.middle[0]
+ ydiff = y-self.middle[1]
+ self.shiftjoints(xdiff,ydiff)
+ self.middle = (x,y)
+ self.drawmainframe()
+ elif self.rotatepressed:
+ if inarea(x,y,DRAWWIDTH,DRAWHEIGHT):
+ (px,py) = self.middle
+ if x-px == 0:
+ #computeangle = 0
+ b = 1
+ else:
+ b = float(px-x)
+ a = float(y-py)
+ computeangle = int(math.degrees(math.atan(a/b)))
+ stickname = 'TORSO'
+ (angle, len) = self.sticks[stickname]
+ newangle = computeangle
+ if (x < px) or (b == 1):
+ newangle = newangle + 180
+ if newangle < 0:
+ newangle = 360 + newangle
+ anglediff = newangle-angle
+ self.sticks[stickname] = (newangle,len)
+ # now rotate the other sticks off of the middle
+ for stickname in ['NECK','RIGHT SHOULDER','LEFT SHOULDER']:
+ (sangle,slen) = self.sticks[stickname]
+ newsangle = sangle+anglediff
+ if newsangle < 0:
+ newsangle = 360 + newsangle
+ if newsangle > 360:
+ newsangle = newsangle - 360
+ self.sticks[stickname] = (newsangle,slen)
+ self.setjoints()
+ self.drawmainframe()
+ self.updateentrybox()
+
+ return True
+
+ def kf_motion_notify_event(self, widget, event):
+ if event.is_hint:
+ x, y, state = event.window.get_pointer()
+ else:
+ x = event.x
+ y = event.y
+ state = event.state
+ if state & gtk.gdk.BUTTON1_MASK and self.pixmap != None:
+ if self.kfpressed >= 0:
+ if inarea(x,y,KEYFRAMEWIDTH,KEYFRAMEHEIGHT):
+ xdiff = x-self.keyframes[self.kfpressed]
+ self.shiftjoints(xdiff,0,self.kfsjoints[self.kfpressed])
+ self.keyframes[self.kfpressed] = x
+ self.drawkeyframe()
+ return True
+
+ def button_press_event(self, widget, event):
+ if event.button == 1 and self.pixmap != None:
+ joint = self.injoint(event.x, event.y)
+ if joint:
+ self.jointpressed = joint
+ self.drawmainframe()
+ elif self.inmiddle(event.x, event.y):
+ self.middlepressed = True
+ self.drawmainframe()
+ elif self.inrotate(event.x, event.y):
+ self.rotatepressed = True
+ self.drawmainframe()
+ return True
+
+ def syncmaintokf(self):
+ # set the main window to the keyframe
+ if self.kfsticks[self.kfselected]:
+ self.sticks = self.kfsticks[self.kfselected].copy()
+ self.parts = self.kfparts[self.kfselected].copy()
+ self.middle = self.kfmiddles[self.kfselected]
+ self.setjoints()
+ self.drawmainframe()
+
+ def kf_button_press_event(self, widget, event):
+ if event.button == 1 and self.pixmap != None:
+ kfnum = self.inkeyframe(event.x, event.y)
+ if kfnum >= 0:
+ self.kfpressed = kfnum
+ self.kfselected = kfnum
+ self.drawkeyframe()
+ self.syncmaintokf()
+ self.updateentrybox()
+ return True
+
+ def button_release_event(self, widget, event):
+ self.jointpressed = None
+ self.middlepressed = False
+ self.rotatepressed = False
+ self.drawmainframe()
+ return True
+
+ def kf_button_release_event(self, widget, event):
+ self.kfpressed = -1
+ self.drawkeyframe()
+ return True
+
+ def setplayspeed(self,adj):
+ #self.waittime = int((6-adj.value)*150)
+ self.waittime = int((6-adj.value)*75)
+ if self.playing:
+ gobject.source_remove(self.playing)
+ self.playing = gobject.timeout_add(self.waittime, self.playframe)
+
+ def playframe(self):
+ if not self.playing:
+ return False
+ else:
+ if self.playframenum == -1:
+ return True
+ joints = self.frames[self.playframenum]
+ parts = self.fparts[self.playframenum]
+ # draw on the main drawing area
+ area = self.toplevel.window
+ drawgc = area.new_gc()
+ drawgc.line_width = 3
+ cm = drawgc.get_colormap()
+ white = cm.alloc_color('white')
+ black = cm.alloc_color('black')
+ drawgc.fill = gtk.gdk.SOLID
+ x, y, width, height = self.mfdraw.get_allocation()
+ #self.pixmap = gtk.gdk.Pixmap(self.mfdraw.window, width, height)
+ # clear area
+ drawgc.set_foreground(white)
+ self.pixmap.draw_rectangle(drawgc,True,0,0,width,height)
+
+ drawgc.set_foreground(black)
+ #hsize = self.sticks['HEAD'][1] # really half of head size
+ hsize = self.fhsize[self.playframenum]
+ middle = self.fmiddles[self.playframenum]
+ rhsize = parts['RIGHT HAND']
+ lhsize = parts['LEFT HAND']
+ self.drawstickman(drawgc,self.pixmap,middle,joints,hsize,rhsize,lhsize)
+ # draw circle for middle
+ #green = cm.alloc_color('green')
+ #drawgc.set_foreground(green)
+ #x,y = middle
+ #self.pixmap.draw_arc(drawgc,True,x-5,y-5,10,10,0,360*64)
+ self.mfdraw.queue_draw()
+
+ fsecs = self.frames.keys()
+ fsecs.sort()
+ if self.playingbackwards:
+ # decrement playframenum
+ if self.playframenum == fsecs[0]:
+ self.playframenum = fsecs[-1]
+ else:
+ i = fsecs.index(self.playframenum)
+ self.playframenum = fsecs[i-1]
+ else:
+ # increment playframenum
+ if self.playframenum == fsecs[-1]:
+ self.playframenum = fsecs[0]
+ else:
+ i = fsecs.index(self.playframenum)
+ self.playframenum = fsecs[i+1]
+ if self.playing:
+ return True
+ else:
+ return False
+
+ def enterangle_callback(self, widget, entry):
+ stickname = self.stickselected
+ if stickname in self.sticks:
+ newangle = int(entry.get_text())
+ (angle, len) = self.sticks[stickname]
+ self.sticks[stickname] = (newangle,len)
+ else:
+ # part not stick
+ self.angleentry.set_text('-')
+ self.setjoints()
+ self.drawmainframe()
+
+ def updateentrybox(self):
+ if self.stickselected in self.sticks:
+ (angle, len) = self.sticks[self.stickselected]
+ self.angleentry.set_text(str(angle))
+ else:
+ # part not stick
+ len = self.parts[self.stickselected]
+ self.sizeentry.set_text(str(len))
+
+ def enterlen_callback(self, widget, entry):
+ stickname = self.stickselected
+ newlen = int(entry.get_text())
+ if stickname in self.sticks:
+ if stickname == 'HEAD':
+ newlen = int(newlen/2.0)
+ (angle, len) = self.sticks[stickname]
+ self.sticks[stickname] = (angle,newlen)
+ else:
+ # part not stick
+ self.parts[stickname] = newlen
+ self.setjoints()
+ self.drawmainframe()
+
+ def reset(self, widget, data=None):
+ xmiddle = int(DRAWWIDTH/2.0)
+ ymiddle = int(DRAWHEIGHT/2.0)
+ self.middle = (xmiddle,ymiddle)
+ self.sticks = STICKS.copy()
+ self.parts = PARTS.copy()
+ self.selectstickebox()
+ self.setjoints()
+ self.drawmainframe()
+
+ def setframe(self, widget, data=None):
+ self.kfmiddles[self.kfselected] = self.middle
+ self.kfparts[self.kfselected] = self.parts.copy()
+ self.kfsticks[self.kfselected] = self.sticks.copy()
+ self.kfssticks[self.kfselected] = self.sticks.copy()
+ scalesticks(self.kfssticks[self.kfselected],.2)
+ self.kfjoints[self.kfselected] = self.joints.copy()
+ self.kfsjoints[self.kfselected] = self.initjoints()
+ #x, y, width, height = self.kfdraw.get_allocation()
+ #y = int(height/2.0)
+ #y = int(KEYFRAMEHEIGHT/2.0)-5
+ y = int(KEYFRAMEHEIGHT/2.0)
+ x = self.keyframes[self.kfselected]
+ kfmiddle = (x,y)
+ self.setjoints(self.kfsjoints[self.kfselected],self.kfssticks[self.kfselected],kfmiddle)
+ self.drawkeyframe()
+
+ def clearframe(self, widget, data=None):
+ self.kfsticks[self.kfselected] = None
+ self.kfssticks[self.kfselected] = None
+ self.kfjoints[self.kfselected] = None
+ self.kfsjoints[self.kfselected] = None
+ self.kfparts[self.kfselected] = None
+ self.drawkeyframe()
+
+ def intjoints(self,sjoints,ejoints,count,numpoints):
+ # numpoints: number of points between start and end
+ # count: point were getting now
+ ijoints = {}
+ for jname in sjoints:
+ (x0,y0) = sjoints[jname]
+ (x1,y1) = ejoints[jname]
+ #print 'x0:%s,y0:%s' % (x0,y0)
+ #print 'x1:%s,y1:%s' % (x1,y1)
+ x = x0 + (count * ((x1-x0)/float(numpoints)))
+ y = interpolate(x,x0,y0,x1,y1)
+ ijoints[jname] = (int(x),int(y))
+ return ijoints
+
+ def intparts(self,sparts,eparts,count,numpoints):
+ iparts = {}
+ for pname in sparts:
+ x0 = sparts[pname]
+ x1 = eparts[pname]
+ if x0 == x1:
+ iparts[pname] = x0
+ continue
+ x = x0 + (count * ((x1-x0)/float(numpoints)))
+ iparts[pname] = int(x)
+ return iparts
+
+ def inthsize(self,shsize,ehsize,count,numpoints):
+ x0 = shsize
+ x1 = ehsize
+ if x0 == x1:
+ return x0
+ x = x0 + (count * ((x1-x0)/float(numpoints)))
+ return int(x)
+
+ def intmiddle(self,smiddle,emiddle,count,numpoints):
+ (x0,y0) = smiddle
+ (x1,y1) = emiddle
+ x = x0 + (count * ((x1-x0)/float(numpoints)))
+ y = interpolate(x,x0,y0,x1,y1)
+ return (int(x),int(y))
+
+ def makeframes(self):
+ endsecs = KEYFRAMEWIDTH
+ fint = int(endsecs/float(TOTALFRAMES)) # frame interval
+ self.frames = {}
+ self.fparts = {}
+ self.fmiddles = {}
+ self.fhsize = {}
+ kf = {} # point to keyframes by x-middle (which represents a time, like seconds)
+ for i in range(len(self.keyframes)):
+ secs = self.keyframes[i]
+ #kf[secs] = i
+ # use self.kfjoints[kf[secs]] and self.kfparts[kf[secs]]
+ if self.kfjoints[i]:
+ self.frames[secs] = self.kfjoints[i].copy()
+ self.fparts[secs] = self.kfparts[i].copy()
+ self.fmiddles[secs] = self.kfmiddles[i]
+ #print '%s:KFMIDDLE:%s = (%s,%s)' % (i,secs,self.fmiddles[secs][0],self.fmiddles[secs][1])
+ self.fhsize[secs] = self.kfsticks[i]['HEAD'][1]
+ fsecs = self.frames.keys()
+ fsecs.sort()
+ if not fsecs:
+ return
+ # ADD frame at 0
+ self.frames[0] = self.frames[fsecs[0]].copy()
+ self.fparts[0] = self.fparts[fsecs[0]].copy()
+ self.fmiddles[0] = self.fmiddles[fsecs[0]]
+ self.fhsize[0] = self.fhsize[fsecs[0]]
+ # ADD frame at end
+ self.frames[endsecs] = self.frames[fsecs[-1]].copy()
+ self.fparts[endsecs] = self.fparts[fsecs[-1]].copy()
+ self.fmiddles[endsecs] = self.fmiddles[fsecs[-1]]
+ self.fhsize[endsecs] = self.fhsize[fsecs[-1]]
+ # now fill in frames between
+ fsecs = self.frames.keys()
+ fsecs.sort()
+ for i in range(len(fsecs)):
+ if i == len(fsecs)-1:
+ continue # nothing after end
+ startsecs = fsecs[i]
+ endsecs = fsecs[i+1]
+ numframes = int((endsecs-startsecs)/float(fint))-1
+ #print 'NUMFRAMES(%s):%s' % (i,numframes)
+ for j in range(numframes-1): # MAYBE SHOULD BE numframes
+ secs = startsecs + ((j+1)*fint)
+ self.frames[secs] = self.intjoints(self.frames[startsecs],self.frames[endsecs],
+ j+1,numframes)
+ self.fparts[secs] = self.intparts(self.fparts[startsecs],self.fparts[endsecs],
+ j+1,numframes)
+ self.fmiddles[secs] = self.intmiddle(self.fmiddles[startsecs],self.fmiddles[endsecs],
+ j+1,numframes)
+ self.fhsize[secs] = self.inthsize(self.fhsize[startsecs],self.fhsize[endsecs],
+ j+1,numframes)
+ #print '%s,%s(%s secs):(%s,%s) START(%s,%s) - END(%s,%s) startsecs:%s endsecs:%s numframes:%s' % (i,j,secs,self.fmiddles[secs][0],self.fmiddles[secs][1],self.fmiddles[startsecs][0],self.fmiddles[startsecs][1],self.fmiddles[endsecs][0],self.fmiddles[endsecs][1],startsecs,endsecs,numframes)
+ #print self.frames.keys()
+
+ def shiftjoints(self,xdiff,ydiff,joints=None):
+ if not joints:
+ joints = self.joints
+ for jname in joints:
+ #if isinstance(self.joints[jname],tuple):
+ (jx,jy) = joints[jname]
+ njx = jx + xdiff
+ njy = jy + ydiff
+ joints[jname] = (njx,njy)
+
+ def initjoints(self):
+ joints = {}
+ for stickname in JOINTS:
+ jname = JOINTS[stickname]
+ joints[jname] = (0,0)
+ return joints
+
+ def getparentsticks(self, stickname):
+ if stickname in ['RIGHT SHOULDER','LEFT SHOULDER','NECK','TORSO']:
+ return []
+ if stickname in ['HEAD']:
+ return ['NECK']
+ if stickname == 'UPPER RIGHT ARM':
+ return ['RIGHT SHOULDER']
+ if stickname == 'LOWER RIGHT ARM':
+ return ['UPPER RIGHT ARM','RIGHT SHOULDER']
+ if stickname == 'UPPER LEFT ARM':
+ return ['LEFT SHOULDER']
+ if stickname == 'LOWER LEFT ARM':
+ return ['UPPER LEFT ARM','LEFT SHOULDER']
+ if stickname == 'RIGHT HIP':
+ return ['TORSO']
+ if stickname == 'UPPER RIGHT LEG':
+ return ['RIGHT HIP','TORSO']
+ if stickname == 'LOWER RIGHT LEG':
+ return ['UPPER RIGHT LEG','RIGHT HIP','TORSO']
+ if stickname == 'RIGHT FOOT':
+ return ['LOWER RIGHT LEG','UPPER RIGHT LEG','RIGHT HIP','TORSO']
+ if stickname == 'LEFT HIP':
+ return ['TORSO']
+ if stickname == 'UPPER LEFT LEG':
+ return ['LEFT HIP','TORSO']
+ if stickname == 'LOWER LEFT LEG':
+ return ['UPPER LEFT LEG','LEFT HIP','TORSO']
+ if stickname == 'LEFT FOOT':
+ return ['LOWER LEFT LEG','UPPER LEFT LEG','LEFT HIP','TORSO']
+
+ def getparentjoint(self,jname,joints,middle):
+ if jname in ['rightshoulder','leftshoulder','groin','neck']:
+ return middle
+ parentjoints = {'rightelbow':'rightshoulder',
+ 'righthand':'rightelbow',
+ 'leftelbow':'leftshoulder',
+ 'lefthand':'leftelbow',
+ 'righthip':'groin',
+ 'rightknee':'righthip',
+ 'rightheel':'rightknee',
+ 'righttoe':'rightheel',
+ 'lefthip':'groin',
+ 'leftknee':'lefthip',
+ 'leftheel':'leftknee',
+ 'lefttoe':'leftheel',
+ 'head':'neck'}
+ return joints[parentjoints[jname]]
+
+ def setjoints(self,joints=None,sticks=None,middle=None):
+ if not joints:
+ joints = self.joints
+ if not sticks:
+ sticks = self.sticks
+ if not middle:
+ middle = self.middle
+ # have to traverse in order because
+ # parent joints must be set right
+ for stickname in self.sticklist:
+ (angle,len) = sticks[stickname]
+ jname = JOINTS[stickname]
+ (x,y) = self.getparentjoint(jname,joints,middle)
+ parents = self.getparentsticks(stickname)
+ panglesum = 0
+ for parentname in parents:
+ (pangle,plen) = sticks[parentname]
+ panglesum += pangle
+ (nx,ny) = getpoints(x,y,angle+panglesum,len)
+ joints[jname] = (nx,ny)
+
+ def drawmainframe(self):
+ area = self.toplevel.window
+ drawgc = area.new_gc()
+ drawgc.line_width = 3
+ cm = drawgc.get_colormap()
+ red = cm.alloc_color('red')
+ yellow = cm.alloc_color('yellow')
+ white = cm.alloc_color('white')
+ black = cm.alloc_color('black')
+ blue = cm.alloc_color('blue')
+ green = cm.alloc_color('green')
+ drawgc.fill = gtk.gdk.SOLID
+ x, y, width, height = self.mfdraw.get_allocation()
+ #self.pixmap = gtk.gdk.Pixmap(self.mfdraw.window, width, height)
+ # clear area
+ drawgc.set_foreground(white)
+ self.pixmap.draw_rectangle(drawgc,True,0,0,width,height)
+
+ drawgc.set_foreground(black)
+ hsize = self.sticks['HEAD'][1] # really half of head size
+ rhsize = self.parts['RIGHT HAND']
+ lhsize = self.parts['LEFT HAND']
+ self.drawstickman(drawgc,self.pixmap,self.middle,self.joints,hsize,rhsize,lhsize)
+ # draw circle for middle
+ drawgc.set_foreground(green)
+ if self.middlepressed:
+ drawgc.set_foreground(blue)
+ x,y = self.middle
+ self.pixmap.draw_arc(drawgc,True,x-5,y-5,10,10,0,360*64)
+ # draw circle for rotate (should be halfway between middle and groin
+ (rx,ry) = self.getrotatepoint()
+ drawgc.set_foreground(yellow)
+ if self.rotatepressed:
+ drawgc.set_foreground(blue)
+ self.pixmap.draw_arc(drawgc,True,rx-5,ry-5,10,10,0,360*64)
+ # draw circles for joints
+ drawgc.set_foreground(black)
+ for jname in self.joints:
+ if jname == 'head':
+ continue
+ x,y = self.joints[jname]
+ if self.jointpressed == jname:
+ drawgc.set_foreground(blue)
+ self.pixmap.draw_arc(drawgc,True,x-5,y-5,10,10,0,360*64)
+ drawgc.set_foreground(black)
+ else:
+ drawgc.set_foreground(red)
+ self.pixmap.draw_arc(drawgc,True,x-5,y-5,10,10,0,360*64)
+ drawgc.set_foreground(black)
+ self.mfdraw.queue_draw()
+
+ def drawstickman(self,drawgc,pixmap,middle,joints,hsize,rhsize,lhsize):
+ leftarm = [middle, joints['leftshoulder'],joints['leftelbow'],joints['lefthand']]
+ rightarm = [middle, joints['rightshoulder'],joints['rightelbow'],joints['righthand']]
+ torso = [joints['neck'],middle,joints['groin']]
+ leftleg = [joints['groin'],joints['lefthip'],joints['leftknee'],
+ joints['leftheel'],joints['lefttoe']]
+ rightleg = [joints['groin'],joints['righthip'],joints['rightknee'],
+ joints['rightheel'],joints['righttoe']]
+ # draw lines
+ pixmap.draw_lines(drawgc, leftarm)
+ pixmap.draw_lines(drawgc, rightarm)
+ pixmap.draw_lines(drawgc, torso)
+ pixmap.draw_lines(drawgc, leftleg)
+ pixmap.draw_lines(drawgc, rightleg)
+ # draw head
+ x,y = joints['head']
+ pixmap.draw_arc(drawgc,True,x-hsize,y-hsize,hsize*2,hsize*2,0,360*64)
+ # draw circles for hands
+ x,y = joints['righthand']
+ pixmap.draw_arc(drawgc,True,x-int(rhsize/2.0),y-int(rhsize/2.0),rhsize,rhsize,0,360*64)
+ x,y = joints['lefthand']
+ pixmap.draw_arc(drawgc,True,x-int(lhsize/2.0),y-int(lhsize/2.0),lhsize,lhsize,0,360*64)
+
+ def drawkeyframe(self):
+ area = self.toplevel.window
+ drawgc = area.new_gc()
+ drawgc.line_width = 2
+ cm = drawgc.get_colormap()
+ red = cm.alloc_color('red')
+ white = cm.alloc_color('white')
+ black = cm.alloc_color('black')
+ blue = cm.alloc_color('blue')
+ green = cm.alloc_color('green')
+ pink = cm.alloc_color(PINK)
+ bgcolor = cm.alloc_color(BACKGROUND)
+ darkgreen = cm.alloc_color(BUTTON_BACKGROUND)
+ drawgc.fill = gtk.gdk.SOLID
+ x, y, width, height = self.kfdraw.get_allocation()
+ self.kfpixmap = gtk.gdk.Pixmap(self.kfdraw.window, width, height)
+ # clear area
+ drawgc.set_foreground(bgcolor)
+ self.kfpixmap.draw_rectangle(drawgc,True,0,0,width,height)
+ # draw line in middle
+ drawgc.set_foreground(darkgreen)
+ self.kfpixmap.draw_rectangle(drawgc,True,10,int(height/2.0)-5,width-20,10)
+ x = 10
+ y = int(height/2.0)
+ self.kfpixmap.draw_arc(drawgc,True,x-5,y-5,10,10,0,360*64)
+ x = width-10
+ self.kfpixmap.draw_arc(drawgc,True,x-5,y-5,10,10,0,360*64)
+ # draw the keyframe circles
+ for i in range(len(self.keyframes)):
+ # first the outer circle
+ x = self.keyframes[i]
+ if i == self.kfselected:
+ drawgc.set_foreground(pink)
+ else:
+ drawgc.set_foreground(darkgreen)
+ self.kfpixmap.draw_arc(drawgc,True,x-40,y-40,80,80,0,360*64)
+ # then the inner circle
+ drawgc.set_foreground(white)
+ self.kfpixmap.draw_arc(drawgc,True,x-35,y-35,70,70,0,360*64)
+ if self.kfssticks[i]:
+ # draw a man in the circle
+ drawgc.set_foreground(black)
+ hsize = self.kfssticks[i]['HEAD'][1]
+ rhsize = int(self.kfparts[i]['RIGHT HAND']*0.2)
+ lhsize = int(self.kfparts[i]['LEFT HAND']*0.2)
+ self.drawstickman(drawgc,self.kfpixmap,(x,y),self.kfsjoints[i],hsize,rhsize,lhsize)
+ #self.kfpixmap.draw_arc(drawgc,True,x-5,y-5,10,10,0,360*64)
+ self.kfdraw.queue_draw()
+
+ def drawfp(self):
+ area = self.toplevel.window
+ drawgc = area.new_gc()
+ drawgc.line_width = 1
+ cm = drawgc.get_colormap()
+ red = cm.alloc_color('red')
+ white = cm.alloc_color('white')
+ black = cm.alloc_color('black')
+ blue = cm.alloc_color('blue')
+ green = cm.alloc_color('green')
+ pink = cm.alloc_color(PINK)
+ bgcolor = cm.alloc_color(BACKGROUND)
+ darkgreen = cm.alloc_color(BUTTON_BACKGROUND)
+ drawgc.fill = gtk.gdk.SOLID
+ x, y, width, height = self.fpdraw.get_allocation()
+ self.fppixmap = gtk.gdk.Pixmap(self.fpdraw.window, width, height)
+ # clear area
+ drawgc.set_foreground(white)
+ self.fppixmap.draw_rectangle(drawgc,True,0,0,width,height)
+ self.fpdraw.queue_draw()
+
+ def inkeyframe(self, x, y):
+ for i in range(len(self.keyframes)):
+ kx = self.keyframes[i]
+ if (abs(kx-x) <= 20):
+ return i
+ return -1
+
+ def injoint(self, x, y):
+ for jname in self.joints:
+ jx, jy = self.joints[jname]
+ if (abs(jx-x) <= 5) and (abs(jy-y) <= 5):
+ return jname
+
+ def inmiddle(self, x, y):
+ mx, my = self.middle
+ if (abs(mx-x) <= 5) and (abs(my-y) <= 5):
+ return True
+
+ def inrotate(self, x, y):
+ rx, ry = self.getrotatepoint()
+ if (abs(rx-x) <= 5) and (abs(ry-y) <= 5):
+ return True
+
+ def getrotatepoint(self):
+ (angle,len) = self.sticks['TORSO']
+ x,y = self.middle
+ (rx,ry) = getpoints(x,y,angle,int(len/2.0))
+ return (rx,ry)
+
+ def selectstick(self, widget, event, data=None):
+ if data:
+ if self.stickselected:
+ ebox = self.stickbuttons[self.stickselected]
+ ebox.modify_bg(gtk.STATE_NORMAL,gtk.gdk.color_parse(BUTTON_BACKGROUND))
+ label = ebox.get_child()
+ label.modify_fg(gtk.STATE_NORMAL, gtk.gdk.color_parse(BUTTON_FOREGROUND))
+ self.stickselected = data
+ self.selectstickebox()
+
+ def selectstickebox(self):
+ ebox = self.stickbuttons[self.stickselected]
+ ebox.modify_bg(gtk.STATE_NORMAL,gtk.gdk.color_parse(BUTTON_FOREGROUND))
+ label = ebox.get_child()
+ label.modify_fg(gtk.STATE_NORMAL, gtk.gdk.color_parse(BUTTON_BACKGROUND))
+ if self.stickselected in self.sticks:
+ if self.stickselected == 'HEAD':
+ self.sizeentry.set_text(str(self.sticks[self.stickselected][1]*2))
+ else:
+ self.sizeentry.set_text(str(self.sticks[self.stickselected][1]))
+
+ self.angleentry.set_text(str(self.sticks[self.stickselected][0]))
+ else:
+ # its a part not a stick
+ self.angleentry.set_text('-')
+ self.sizeentry.set_text(str(self.parts[self.stickselected]))
+
+ def showlessonplans(self, widget, data=None):
+ dia = gtk.Dialog(title='Lesson Plans',
+ parent=None,
+ flags=0,
+ buttons=None)
+ dia.set_default_size(500,500)
+ dia.show()
+
+ #dia.vbox.pack_start(scrolled_window, True, True, 0)
+ notebook = gtk.Notebook()
+ # uncomment below to highlight tabs
+ notebook.modify_bg(gtk.STATE_NORMAL,gtk.gdk.color_parse(WHITE))
+ notebook.set_tab_pos(gtk.POS_TOP)
+ #notebook.set_default_size(400,400)
+ notebook.show()
+ lessonplans = {}
+ lpdir = os.path.join(self.mdirpath,LANG[self.language]['lpdir'])
+ lpentries = os.listdir(lpdir)
+ for entry in lpentries:
+ fpath = os.path.join(lpdir,entry)
+ lessonplans[entry] = getwrappedfile(fpath,95)
+ lpkeys = lessonplans.keys()
+ lpkeys.sort()
+ for lpkey in lpkeys:
+ lpname = lpkey.replace('_',' ').replace('0','')[:-4]
+ label = gtk.Label(lessonplans[lpkey])
+ #if self.insugar:
+ # label.modify_fg(gtk.STATE_NORMAL,gtk.gdk.color_parse(WHITE))
+ eb = gtk.EventBox()
+ eb.modify_bg(gtk.STATE_NORMAL,gtk.gdk.color_parse(WHITE))
+ #label.set_line_wrap(True)
+ label.show()
+ eb.add(label)
+ eb.show()
+ #tlabel = gtk.Label('Lesson Plan %s' % str(i+1))
+ tlabel = gtk.Label(lpname)
+ tlabel.show()
+ scrolled_window = gtk.ScrolledWindow()
+ scrolled_window.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_ALWAYS)
+ scrolled_window.show()
+ scrolled_window.add_with_viewport(eb)
+ notebook.append_page(scrolled_window, tlabel)
+ #dia.action_area.pack_start(notebook, True, True, 0)
+ dia.vbox.pack_start(notebook, True, True, 0)
+ result = dia.run()
+ dia.destroy()
+
+ def loadfile(self, widget, data=None):
+ pass
+
+ def savefile(self, widget, data=None):
+ pass
+
+ def exportanim(self, widget, data=None):
+ if self.insugar:
+ self.exporttojournal()
+ else:
+ self.exportfile()
+
+ def exportfile(self):
+ self.makeframes()
+ fsecs = self.frames.keys()
+ tmpdir = '/tmp'
+ pngpaths = []
+ for i in fsecs:
+ joints = self.frames[i]
+ parts = self.fparts[i]
+ # draw on the main drawing area
+ area = self.toplevel.window
+ drawgc = area.new_gc()
+ drawgc.line_width = 3
+ cm = drawgc.get_colormap()
+ white = cm.alloc_color('white')
+ black = cm.alloc_color('black')
+ drawgc.fill = gtk.gdk.SOLID
+ x, y, width, height = self.mfdraw.get_allocation()
+ pixmap = gtk.gdk.Pixmap(self.mfdraw.window, width, height)
+ # clear area
+ drawgc.set_foreground(white)
+ pixmap.draw_rectangle(drawgc,True,0,0,width,height)
+
+ drawgc.set_foreground(black)
+ #hsize = self.sticks['HEAD'][1] # really half of head size
+ hsize = self.fhsize[i]
+ middle = self.fmiddles[i]
+ rhsize = parts['RIGHT HAND']
+ lhsize = parts['LEFT HAND']
+ self.drawstickman(drawgc,pixmap,middle,joints,hsize,rhsize,lhsize)
+ pixbuf = gtk.gdk.Pixbuf(gtk.gdk.COLORSPACE_RGB, False, 8, width, height)
+ gtk.gdk.Pixbuf.get_from_drawable(pixbuf,pixmap,pixmap.get_colormap(),0,0,0,0,width,height)
+ filename = 'fp%03d.png' % i
+ filepath = os.path.join(tmpdir,filename)
+ pixbuf.save(filepath,'png')
+ pngpaths.append(filepath)
+ # now convert all of the pngs to gif and then make a gif animation
+ convertpath = 'convert'
+ tmpdir = '/tmp'
+ entires = os.listdir(tmpdir)
+ gifpaths = []
+ for pngfilepath in pngpaths:
+ giffilepath = pngfilepath[:-4]+'.gif'
+ gifpaths.append(giffilepath)
+ os.system('%s %s %s' % (convertpath,pngfilepath,giffilepath))
+ #os.remove(pngfilepath)
+ agifpath = os.path.join(self.mdirpath,'animatefp.gif')
+ os.system('%s -delay 20 -loop 0 %s/fp*.gif %s' % (convertpath,tmpdir,agifpath))
+ for giffilepath in gifpaths:
+ os.remove(giffilepath)
+
+ def exporttojournal(self):
+ self.makeframes()
+ fsecs = self.frames.keys()
+ tmpdir = '/tmp'
+ pngpaths = []
+ firstpixindex = fsecs[0]
+ for i in [fsecs[0]]:
+ joints = self.frames[i]
+ parts = self.fparts[i]
+ # draw on the main drawing area
+ area = self.toplevel.window
+ drawgc = area.new_gc()
+ drawgc.line_width = 3
+ cm = drawgc.get_colormap()
+ white = cm.alloc_color('white')
+ black = cm.alloc_color('black')
+ drawgc.fill = gtk.gdk.SOLID
+ x, y, width, height = self.mfdraw.get_allocation()
+ pixmap = gtk.gdk.Pixmap(self.mfdraw.window, width, height)
+ # clear area
+ drawgc.set_foreground(white)
+ pixmap.draw_rectangle(drawgc,True,0,0,width,height)
+
+ drawgc.set_foreground(black)
+ #hsize = self.sticks['HEAD'][1] # really half of head size
+ hsize = self.fhsize[i]
+ middle = self.fmiddles[i]
+ rhsize = parts['RIGHT HAND']
+ lhsize = parts['LEFT HAND']
+ self.drawstickman(drawgc,pixmap,middle,joints,hsize,rhsize,lhsize)
+ pixbuf = gtk.gdk.Pixbuf(gtk.gdk.COLORSPACE_RGB, False, 8, width, height)
+ if i == firstpixindex:
+ firstpixbuf = pixbuf
+ gtk.gdk.Pixbuf.get_from_drawable(pixbuf,pixmap,pixmap.get_colormap(),0,0,0,0,width,height)
+ filename = 'fp%03d.png' % i
+ filepath = os.path.join(tmpdir,filename)
+ pixbuf.save(filepath,'png')
+ pngpaths.append(filepath)
+ from sugar.datastore import datastore
+ mediaObject = datastore.create()
+ mediaObject.metadata['title'] = 'FlipSticks PNG'
+ thumbData = self._get_base64_pixbuf_data(firstpixbuf)
+ mediaObject.metadata['preview'] = thumbData
+ #medaiObject.metadata['icon-color'] = ''
+ mediaObject.metadata['mime_type'] = 'image/png'
+ mediaObject.file_path = pngpaths[0]
+ datastore.write(mediaObject)
+
+ def _get_base64_pixbuf_data(self, pixbuf):
+ data = [""]
+ pixbuf.save_to_callback(self._save_data_to_buffer_cb, "png", {}, data)
+ import base64
+ return base64.b64encode(str(data[0]))
+
+ def _save_data_to_buffer_cb(self, buf, data):
+ data[0] += buf
+ return True
+
+ def playbackwards(self, widget, data=None):
+ if self.playing:
+ playimg = gtk.Image()
+ playimg.set_from_file(os.path.join(self.iconsdir,'big_left_arrow.png'))
+ playimg.show()
+ widget.set_image(playimg)
+ self.playing = False
+ # set the main window to the keyframe
+ if self.kfsticks[self.kfselected]:
+ self.sticks = self.kfsticks[self.kfselected].copy()
+ self.parts = self.kfparts[self.kfselected].copy()
+ self.middle = self.kfmiddles[self.kfselected]
+ self.setjoints()
+ self.drawmainframe()
+ self.updateentrybox()
+ else:
+ stopimg = gtk.Image()
+ stopimg.set_from_file(os.path.join(self.iconsdir,'big_pause.png'))
+ stopimg.show()
+ widget.set_image(stopimg)
+ self.makeframes()
+ fsecs = self.frames.keys()
+ fsecs.sort()
+ if fsecs:
+ self.playframenum = fsecs[-1]
+ else:
+ self.playframenum = -1
+ self.playingbackwards = True
+ self.playing = gobject.timeout_add(self.waittime, self.playframe)
+
+ def playforwards(self, widget, data=None):
+ if self.playing:
+ playimg = gtk.Image()
+ playimg.set_from_file(os.path.join(self.iconsdir,'big_right_arrow.png'))
+ playimg.show()
+ widget.set_image(playimg)
+ self.playing = False
+ # set the main window to the keyframe
+ if self.kfsticks[self.kfselected]:
+ self.sticks = self.kfsticks[self.kfselected].copy()
+ self.parts = self.kfparts[self.kfselected].copy()
+ self.middle = self.kfmiddles[self.kfselected]
+ self.setjoints()
+ self.drawmainframe()
+ self.updateentrybox()
+ else:
+ stopimg = gtk.Image()
+ stopimg.set_from_file(os.path.join(self.iconsdir,'big_pause.png'))
+ stopimg.show()
+ widget.set_image(stopimg)
+ self.makeframes()
+ #mkeys = self.fmiddles.keys()
+ #mkeys.sort()
+ #for mkey in mkeys:
+ # print '%s:(%s,%s)' % (mkey,self.fmiddles[mkey][0],self.fmiddles[mkey][1])
+ fsecs = self.frames.keys()
+ fsecs.sort()
+ if fsecs:
+ self.playframenum = fsecs[0]
+ else:
+ self.playframenum = -1
+ self.playingbackwards = False
+ self.playing = gobject.timeout_add(self.waittime, self.playframe)
+
+ def changed_cb(self, combobox):
+ model = combobox.get_model()
+ index = combobox.get_active()
+ if index:
+ lang = model[index][0]
+ if lang == 'Espa\xc3\xb1ol':
+ lang = SPANISH
+ if lang in LANG:
+ self.lessonplans.set_label(LANG[lang]['lessonplan'])
+ self.anglelabel.set_label(LANG[lang]['angle']+':')
+ self.sizelabel.set_label(LANG[lang]['size']+':')
+ self.export.set_label(LANG[lang]['export'])
+ for stickpartname in self.labellist:
+ label = self.sticklabels[stickpartname]
+ label.set_label(LANG[lang][stickpartname])
+ prepare_btn(self.lessonplans)
+ prepare_btn(self.export)
+ return
+
+ def setlastlanguage(self, widget, data=None):
+ li = LANGLIST.index(self.language)
+ if li == 0:
+ self.language = LANGLIST[len(LANGLIST)-1]
+ else:
+ self.language = LANGLIST[li-1]
+ self.changebuttonlang()
+
+ def setnextlanguage(self, widget, data=None):
+ li = LANGLIST.index(self.language)
+ if li == (len(LANGLIST)-1):
+ self.language = LANGLIST[0]
+ else:
+ self.language = LANGLIST[li+1]
+ self.changebuttonlang()
+
+ def getdefaultlang(self):
+ return 'English'
+
+ def getsdata(self):
+ self.makeframes()
+ sdd = {} # save data dictionary
+ sdd['kfmiddles'] = self.kfmiddles
+ sdd['kfparts'] = self.kfparts
+ sdd['kfsticks'] = self.kfsticks
+ sdd['kfssticks'] = self.kfssticks
+ sdd['kfjoints'] = self.kfjoints
+ sdd['kfsjoints'] = self.kfsjoints
+ sdd['keyframes'] = self.keyframes
+ sdd['kfselected'] = self.kfselected
+ return pickle.dumps(sdd)
+
+ def restore(self, sdata):
+ sdd = pickle.loads(sdata)
+ self.kfmiddles = sdd['kfmiddles']
+ self.kfparts = sdd['kfparts']
+ self.kfsticks = sdd['kfsticks']
+ self.kfssticks = sdd['kfssticks']
+ self.kfjoints = sdd['kfjoints']
+ self.kfsjoints = sdd['kfsjoints']
+ self.keyframes = sdd['keyframes']
+ self.kfselected = sdd['kfselected']
+ self.drawkeyframe()
+ self.syncmaintokf()
+ self.updateentrybox()
+
+ def __init__(self, toplevel_window, mdirpath):
+ self.insugar = False
+ self.playing = False
+ self.playingbackwards = False
+ self.waittime = 3*150
+ self.keyframe = 0
+ self.toplevel = toplevel_window
+ self.mdirpath = mdirpath
+ xmiddle = int(DRAWWIDTH/2.0)
+ ymiddle = int(DRAWHEIGHT/2.0)
+ self.middle = (xmiddle,ymiddle)
+ self.sticks = STICKS.copy()
+ self.parts = PARTS.copy()
+ self.sticklist = STICKLIST
+ self.labellist = LABELLIST
+ self.stickselected = 'RIGHT SHOULDER'
+ self.laststickselected = None
+ self.keyframes = KEYFRAMES
+ self.kfsticks = [None,None,None,None,None]
+ self.kfssticks = [None,None,None,None,None]
+ self.kfjoints = [None,None,None,None,None]
+ self.kfsjoints = [None,None,None,None,None]
+ self.kfmiddles = [None,None,None,None,None]
+ self.kfparts = [None,None,None,None,None]
+ self.kfselected = 0
+ self.joints = self.initjoints()
+ self.setjoints()
+ self.jointpressed = None
+ self.kfpressed = -1
+ self.middlepressed = False
+ self.rotatepressed = False
+ self.iconsdir = os.path.join(self.mdirpath,'icons')
+ self.language = self.getdefaultlang()
+
+ self.mpbox = gtk.VBox()
+ self.main = gtk.EventBox()
+ self.main.show()
+ self.main.modify_bg(gtk.STATE_NORMAL,gtk.gdk.color_parse(YELLOW))
+ self.mainbox = gtk.EventBox()
+ self.mainbox.modify_bg(gtk.STATE_NORMAL,gtk.gdk.color_parse(BACKGROUND))
+ self.mainbox.set_border_width(5)
+ self.mainbox.show()
+ self.main.add(self.mainbox)
+ self.mpbox.show()
+ self.hbox = gtk.HBox()
+ self.hbox.show()
+ self.vbox = gtk.VBox()
+ self.vbox.show()
+ self.hbox.pack_start(self.vbox,False,False,0)
+ self.mainbox.add(self.mpbox)
+ self.mpbox.pack_start(self.hbox,True,True,0)
+
+ self.logobox = gtk.HBox(False,0)
+ self.logobox.show()
+ self.logo = gtk.Image()
+ self.logo.show()
+ self.logo.set_from_file(os.path.join(self.iconsdir,'logo.png'))
+ self.logobox.pack_start(self.logo,False,False,0)
+ self.lessonplans = gtk.Button('Lesson Plans')
+ self.lessonplans.connect('clicked',self.showlessonplans, None)
+ prepare_btn(self.lessonplans)
+ self.lessonplans.show()
+ self.lpvbox = gtk.VBox()
+ self.lpvbox.show()
+ self.lpvbox.pack_start(self.lessonplans,True,False,0)
+ self.lpoframe = gtk.EventBox()
+ self.lpoframe.modify_bg(gtk.STATE_NORMAL,gtk.gdk.color_parse(YELLOW))
+ self.lpoframe.show()
+ self.lpframe = gtk.EventBox()
+ self.lpframe.modify_bg(gtk.STATE_NORMAL,gtk.gdk.color_parse(BACKGROUND))
+ self.lpframe.show()
+ self.lpalign = gtk.Alignment(1.0,1.0,1.0,1.0)
+ self.lpalign.add(self.lpframe)
+ self.lpalign.set_padding(0,5,5,0)
+ self.lpalign.show()
+ self.lpoframe.add(self.lpalign)
+ self.lphbox = gtk.HBox()
+ self.lphbox.show()
+ self.lphbox.pack_start(self.lpvbox,True,False,0)
+ self.lpframe.add(self.lphbox)
+ self.logobox.pack_start(self.lpoframe,True,True,0)
+ #vvvvv LANGUAGE BUTTONS vvvvv
+ #self.lastlang = gtk.Button()
+ #self.lastlang.connect('clicked', self.setlastlanguage, None)
+ #llla = gtk.Image()
+ #llla.set_from_file(os.path.join(self.iconsdir,'left_arrow.png'))
+ #llla.show()
+ #self.lastlang.add(llla)
+ #prepare_btn(self.lastlang)
+ #self.lastlang.show()
+ #self.llvbox = gtk.VBox()
+ #self.llvbox.show()
+ #self.llvbox.pack_start(self.lastlang,True,False,0)
+ #self.lang = gtk.Button(self.language)
+ #prepare_btn(self.lang)
+ #self.lang.show()
+ #self.nextlang = gtk.Button()
+ #self.nextlang.connect('clicked', self.setnextlanguage, None)
+ #nlra = gtk.Image()
+ #nlra.set_from_file(os.path.join(self.iconsdir,'right_arrow.png'))
+ #nlra.show()
+ #self.nextlang.add(nlra)
+ #prepare_btn(self.nextlang)
+ #self.nextlang.show()
+ #self.nlvbox = gtk.VBox()
+ #self.nlvbox.show()
+ #self.nlvbox.pack_start(self.nextlang,True,False,0)
+ #self.langvbox = gtk.VBox()
+ #self.langvbox.show()
+ #self.langvbox.pack_start(self.lang,True,False,0)
+ #^^^^^ LANGUAGE BUTTONS ^^^^^
+ #vvvvv LANGUAGE DROPDOWN vvvvv
+ self.langdd = gtk.combo_box_new_text()
+ self.langdd.append_text('Language')
+ self.langdd.append_text('English')
+ self.langdd.append_text(SPANISH)
+ self.langdd.connect('changed', self.changed_cb)
+ self.langdd.set_active(0)
+ self.langdd.show()
+ self.langddvbox = gtk.VBox()
+ self.langddvbox.show()
+ self.langddvbox.pack_start(self.langdd,True,False,0)
+ #^^^^^ LANGUAGE DROPDOWN ^^^^^
+ self.langoframe = gtk.EventBox()
+ self.langoframe.modify_bg(gtk.STATE_NORMAL,gtk.gdk.color_parse(YELLOW))
+ self.langoframe.show()
+ self.langframe = gtk.EventBox()
+ self.langframe.modify_bg(gtk.STATE_NORMAL,gtk.gdk.color_parse(BACKGROUND))
+ self.langframe.show()
+ self.langalign = gtk.Alignment(1.0,1.0,1.0,1.0)
+ self.langalign.add(self.langframe)
+ self.langalign.set_padding(0,5,5,5)
+ self.langalign.show()
+ self.langoframe.add(self.langalign)
+ self.langhbox = gtk.HBox()
+ self.langhbox.show()
+ #self.langhbox.pack_start(self.llvbox,True,False,0)
+ #self.langhbox.pack_start(self.langvbox,True,False,0)
+ #self.langhbox.pack_start(self.nlvbox,True,False,0)
+ self.langhbox.pack_start(self.langddvbox,True,False,0)
+ self.langframe.add(self.langhbox)
+ self.logobox.pack_start(self.langoframe,True,True,0)
+
+ self.vbox.pack_start(self.logobox,False,False,0)
+
+ #self.drawhbox = gtk.HBox()
+ #self.drawhbox.show()
+ self.mfdraw = gtk.DrawingArea()
+ self.mfdraw.set_size_request(DRAWWIDTH,DRAWHEIGHT)
+ self.mfdraw.show()
+ self.mfdraw.connect('expose_event', self.expose_event)
+ self.mfdraw.connect('configure_event', self.configure_event)
+ self.mfdraw.connect('motion_notify_event', self.motion_notify_event)
+ self.mfdraw.connect('button_press_event', self.button_press_event)
+ self.mfdraw.connect('button_release_event', self.button_release_event)
+ self.mfdraw.set_events(gtk.gdk.EXPOSURE_MASK
+ | gtk.gdk.LEAVE_NOTIFY_MASK
+ | gtk.gdk.BUTTON_PRESS_MASK
+ | gtk.gdk.BUTTON_RELEASE_MASK
+ | gtk.gdk.POINTER_MOTION_MASK
+ | gtk.gdk.POINTER_MOTION_HINT_MASK)
+ self.drawborder = gtk.EventBox()
+ self.drawborder.modify_bg(gtk.STATE_NORMAL,gtk.gdk.color_parse(PINK))
+ self.drawborder.set_border_width(10)
+ self.drawborder.show()
+ self.drawframe = gtk.EventBox()
+ self.drawframe.modify_bg(gtk.STATE_NORMAL,gtk.gdk.color_parse(BACKGROUND))
+ self.drawframe.set_border_width(5)
+ self.drawframe.show()
+ self.drawborder.add(self.drawframe)
+ self.drawframe.add(self.mfdraw)
+ #self.drawhbox.pack_start(self.drawborder, False, False, 10)
+
+ #self.vbox.pack_start(self.drawhbox,False,False,0)
+ self.vbox.pack_start(self.drawborder,False,False,0)
+
+ self.keyframehbox = gtk.HBox()
+ self.keyframehbox.show()
+
+ self.playback = gtk.Button()
+ self.playback.connect('clicked', self.playbackwards, None)
+ playbackla = gtk.Image()
+ playbackla.set_from_file(os.path.join(self.iconsdir,'big_left_arrow.png'))
+ playbackla.show()
+ self.playback.add(playbackla)
+ prepare_btn(self.playback)
+ self.playback.show()
+ self.playbackvbox = gtk.VBox()
+ self.playbackvbox.show()
+ self.playbackvbox.pack_start(self.playback,True,False,0)
+ self.keyframehbox.pack_start(self.playbackvbox,True,False,0)
+ # vvvvvvvvvvKEYFRAME DRAWING AREA HEREvvvvvvvvvvvv
+ self.kfdraw = gtk.DrawingArea()
+ self.kfdraw.set_size_request(KEYFRAMEWIDTH,KEYFRAMEHEIGHT)
+ self.kfdraw.show()
+ self.kfdraw.connect('expose_event', self.kf_expose_event)
+ self.kfdraw.connect('configure_event', self.kf_configure_event)
+ self.kfdraw.connect('motion_notify_event', self.kf_motion_notify_event)
+ self.kfdraw.connect('button_press_event', self.kf_button_press_event)
+ self.kfdraw.connect('button_release_event', self.kf_button_release_event)
+ self.kfdraw.set_events(gtk.gdk.EXPOSURE_MASK
+ | gtk.gdk.LEAVE_NOTIFY_MASK
+ | gtk.gdk.BUTTON_PRESS_MASK
+ | gtk.gdk.BUTTON_RELEASE_MASK
+ | gtk.gdk.POINTER_MOTION_MASK
+ | gtk.gdk.POINTER_MOTION_HINT_MASK)
+ #self.drawborder = gtk.EventBox()
+ #self.drawborder.modify_bg(gtk.STATE_NORMAL,gtk.gdk.color_parse(PINK))
+ #self.drawborder.show()
+ #self.drawframe = gtk.EventBox()
+ #self.drawframe.modify_bg(gtk.STATE_NORMAL,gtk.gdk.color_parse(BACKGROUND))
+ #self.drawframe.set_border_width(5)
+ #self.drawframe.show()
+ #self.drawborder.add(self.drawframe)
+ #self.drawframe.add(self.mfdraw)
+ self.keyframehbox.pack_start(self.kfdraw,False,False,0)
+
+ # ^^^^^^^^^^KEYFRAME DRAWING AREA HERE^^^^^^^^^^^^
+ self.playforward = gtk.Button()
+ self.playforward.connect('clicked', self.playforwards, None)
+ playforwardla = gtk.Image()
+ playforwardla.set_from_file(os.path.join(self.iconsdir,'big_right_arrow.png'))
+ playforwardla.show()
+ self.playforward.add(playforwardla)
+ prepare_btn(self.playforward)
+ self.playforward.show()
+ self.playforwardvbox = gtk.VBox()
+ self.playforwardvbox.show()
+ self.playforwardvbox.pack_start(self.playforward,True,False,0)
+ self.keyframehbox.pack_start(self.playforwardvbox,True,False,0)
+
+ self.vbox.pack_start(self.keyframehbox,False,False,10)
+
+ self.bottomcontrolshbox = gtk.HBox()
+ self.bottomcontrolshbox.show()
+ self.resetbutton = gtk.Button()
+ resetimg = gtk.Image()
+ resetimg.set_from_file(os.path.join(self.iconsdir,'reset.png'))
+ resetimg.show()
+ self.resetbutton.add(resetimg)
+ self.resetbutton.connect('clicked', self.reset, None)
+ prepare_btn(self.resetbutton)
+ self.resetbutton.show()
+ self.bottomcontrolshbox.pack_start(self.resetbutton, True, False, 0)
+
+ self.setframebutton = gtk.Button()
+ cameraimg = gtk.Image()
+ cameraimg.set_from_file(os.path.join(self.iconsdir,'camera.png'))
+ cameraimg.show()
+ self.setframebutton.add(cameraimg)
+ self.setframebutton.connect('clicked', self.setframe, None)
+ prepare_btn(self.setframebutton)
+ self.setframebutton.show()
+ self.bottomcontrolshbox.pack_start(self.setframebutton, True, False, 0)
+
+ self.clearframebutton = gtk.Button()
+ clearimg = gtk.Image()
+ clearimg.set_from_file(os.path.join(self.iconsdir,'clear.png'))
+ clearimg.show()
+ self.clearframebutton.add(clearimg)
+ self.clearframebutton.connect('clicked', self.clearframe, None)
+ prepare_btn(self.clearframebutton)
+ self.clearframebutton.show()
+ self.bottomcontrolshbox.pack_start(self.clearframebutton, True, False, 0)
+
+ adj = gtk.Adjustment(2.5,1,5,.5,1)
+ adj.connect('value_changed',self.setplayspeed)
+ self.playspeed = gtk.HScale(adj)
+ self.playspeed.set_draw_value(False)
+ for state, color in COLOR_BG_BUTTONS:
+ self.playspeed.modify_bg(state, gtk.gdk.color_parse(color))
+ self.playspeed.show()
+ self.bottomcontrolshbox.pack_start(self.playspeed, True, True, 5)
+ self.vbox.pack_start(self.bottomcontrolshbox,False,False,10)
+
+ # NOW THE RIGHT SIDE
+ self.rightvbox = gtk.VBox()
+ self.rightvbox.show()
+ # vvvvv FILE PICKER THING vvvvv
+ #self.filechooserhbox = gtk.HBox()
+ #self.filechooserhbox.show()
+ #self.lastfile = gtk.Button()
+ #lfla = gtk.Image()
+ #lfla.set_from_file(os.path.join(self.iconsdir,'left_arrow.png'))
+ #lfla.show()
+ #self.lastfile.add(lfla)
+ #prepare_btn(self.lastfile)
+ #self.lastfile.show()
+ #self.lfvbox = gtk.VBox()
+ #self.lfvbox.show()
+ #self.lfvbox.pack_start(self.lastfile,True,False,0)
+ #self.filechooserhbox.pack_start(self.lfvbox,True,False,5)
+ ## vvvvv FILE PICKER DRAWING AREA vvvvv
+ #self.fpdraw = gtk.DrawingArea()
+ #self.fpdraw.set_size_request(FPWIDTH,FPHEIGHT)
+ #self.fpdraw.show()
+ #self.fpdraw.connect('expose_event', self.fp_expose_event)
+ #self.fpdraw.connect('configure_event', self.fp_configure_event)
+ #self.fpdrawborder = gtk.EventBox()
+ #self.fpdrawborder.modify_bg(gtk.STATE_NORMAL,gtk.gdk.color_parse(PINK))
+ #self.fpdrawborder.show()
+ #self.fpdrawframe = gtk.EventBox()
+ #self.fpdrawframe.modify_bg(gtk.STATE_NORMAL,gtk.gdk.color_parse(BACKGROUND))
+ #self.fpdrawframe.set_border_width(5)
+ #self.fpdrawframe.show()
+ #self.fpdrawborder.add(self.fpdrawframe)
+ #self.fpdrawframe.add(self.fpdraw)
+ #self.filechooserhbox.pack_start(self.fpdrawborder,False,False,0)
+ ## ^^^^^ FILE PICKER DRAWING AREA ^^^^^
+ #self.nextfile = gtk.Button()
+ #nfla = gtk.Image()
+ #nfla.set_from_file(os.path.join(self.iconsdir,'right_arrow.png'))
+ #nfla.show()
+ #self.nextfile.add(nfla)
+ #prepare_btn(self.nextfile)
+ #self.nextfile.show()
+ #self.nfvbox = gtk.VBox()
+ #self.nfvbox.show()
+ #self.nfvbox.pack_start(self.nextfile,True,False,0)
+ #self.filechooserhbox.pack_start(self.nfvbox,True,False,5)
+ #self.rightvbox.pack_start(self.filechooserhbox,False,False,5)
+ # ADD FILENAME LABEL HERE
+ # ^^^^^ FILE PICKER THING ^^^^^
+ # START OF STICK CONTROLS
+ self.stickcontrols = gtk.VBox()
+ self.stickcontrols.show()
+ self.stickcontrolsborder = gtk.EventBox()
+ self.stickcontrolsborder.modify_bg(gtk.STATE_NORMAL,gtk.gdk.color_parse(PINK))
+ self.stickcontrolsborder.set_border_width(5)
+ self.stickcontrolsborder.show()
+ self.stickcontrolsframe = gtk.EventBox()
+ self.stickcontrolsframe.modify_bg(gtk.STATE_NORMAL,gtk.gdk.color_parse(BUTTON_BACKGROUND))
+ self.stickcontrolsframe.set_border_width(5)
+ self.stickcontrolsframe.show()
+ self.stickcontrolsborder.add(self.stickcontrolsframe)
+ self.stickcontrolsframe.add(self.stickcontrols)
+ self.anglesizehbox = gtk.HBox()
+ self.anglesizehbox.show()
+ #label = gtk.Label('Angle:')
+ self.anglelabel = gtk.Label(LANG[self.language]['angle']+':')
+ self.anglelabel.modify_fg(gtk.STATE_NORMAL, gtk.gdk.color_parse(BUTTON_BACKGROUND))
+ self.anglelabel.show()
+ self.anglesizehbox.pack_start(self.anglelabel,False,False,5)
+ self.angleentry = gtk.Entry()
+ self.angleentry.set_max_length(3)
+ self.angleentry.set_width_chars(3)
+ self.angleentry.connect('activate', self.enterangle_callback, self.angleentry)
+ self.angleentry.show()
+ self.anglesizehbox.pack_start(self.angleentry,False,False,0)
+ #label = gtk.Label('Size:')
+ self.sizelabel = gtk.Label(LANG[self.language]['size']+':')
+ self.sizelabel.modify_fg(gtk.STATE_NORMAL, gtk.gdk.color_parse(BUTTON_BACKGROUND))
+ self.sizelabel.show()
+ self.anglesizehbox.pack_start(self.sizelabel,False,False,5)
+ self.sizeentry = gtk.Entry()
+ self.sizeentry.set_max_length(3)
+ self.sizeentry.set_width_chars(3)
+ self.sizeentry.connect('activate', self.enterlen_callback, self.sizeentry)
+ self.sizeentry.show()
+ self.anglesizehbox.pack_start(self.sizeentry,False,False,0)
+ self.asbox = gtk.EventBox()
+ self.asbox.modify_bg(gtk.STATE_NORMAL,gtk.gdk.color_parse(BUTTON_FOREGROUND))
+ self.asbox.show()
+ self.asbox.add(self.anglesizehbox)
+ self.stickcontrols.pack_start(self.asbox,False,False,0)
+ self.stickbuttons = {}
+ self.sticklabels = {}
+ for stickpartname in self.labellist:
+ #label = gtk.Label(capwords(stickpartname))
+ label = gtk.Label(LANG[self.language][stickpartname])
+ label.modify_fg(gtk.STATE_NORMAL, gtk.gdk.color_parse(BUTTON_FOREGROUND))
+ label.show()
+ self.sticklabels[stickpartname] = label
+ ebox = gtk.EventBox()
+ ebox.modify_bg(gtk.STATE_NORMAL,gtk.gdk.color_parse(BUTTON_BACKGROUND))
+ ebox.show()
+ ebox.set_events(gtk.gdk.BUTTON_PRESS_MASK)
+ ebox.connect('button_press_event',self.selectstick,stickpartname)
+ ebox.add(label)
+ self.stickbuttons[stickpartname] = ebox
+ self.stickcontrols.pack_start(ebox,False,False,0)
+ # highlight the currently selected stick and update the entry boxes
+ self.selectstickebox()
+ # END OF STICK CONTROLS
+ stickalign = gtk.Alignment(1.0,1.0,1.0,1.0)
+ stickalign.add(self.stickcontrolsborder)
+ stickalign.set_padding(80,5,5,5) # top,bottom,left,right
+ stickalign.show()
+ self.rightvbox.pack_start(stickalign,False,False, 0)
+ #self.rightvbox.pack_start(self.stickcontrolsborder,False,False, 0)
+ #self.filesave = gtk.Button()
+ #self.filesave.set_label('SAVE')
+ #prepare_btn(self.filesave)
+ #self.filesave.connect('clicked',self.savefile,None)
+ #self.filesave.show()
+ #self.fshbox = gtk.HBox()
+ #self.fshbox.show()
+ #self.fshbox.pack_start(self.filesave,True,False,0)
+ #self.rightvbox.pack_start(self.fshbox,True,False,0)
+ self.export = gtk.Button()
+ #self.export.set_label('EXPORT')
+ self.export.set_label(LANG[self.language]['export'])
+ prepare_btn(self.export)
+ self.export.connect('clicked',self.exportanim,None)
+ self.export.show()
+ self.exporthbox = gtk.HBox()
+ self.exporthbox.show()
+ self.exporthbox.pack_start(self.export,True,False,0)
+ self.rightvbox.pack_start(self.exporthbox,True,False,0)
+
+ self.hbox.pack_start(self.rightvbox,False,False,0)
+
+try:
+ from sugar.activity import activity
+ from sugar.presence import presenceservice
+ from sugar.presence.tubeconn import TubeConnection
+ import telepathy
+ import telepathy.client
+ from dbus import Interface
+ from dbus.service import method, signal
+ from dbus.gobject_service import ExportedGObject
+
+ class flipsticksActivity(activity.Activity):
+ def __init__(self, handle):
+ activity.Activity.__init__(self,handle)
+ self.connect("destroy",self.destroy_cb)
+ bundle_path = activity.get_bundle_path()
+ os.chdir(bundle_path)
+ self.set_title('FlipSticks')
+ toolbox = activity.ActivityToolbox(self)
+ self.set_toolbox(toolbox)
+ toolbox.show()
+ if hasattr(self, '_jobject'):
+ self._jobject.metadata['title'] = 'FlipSticks'
+ title_widget = toolbox._activity_toolbar.title
+ title_widget.set_size_request(title_widget.get_layout().get_pixel_size()[0] + 20, -1)
+ self.app = flipsticks(self, bundle_path)
+ self.app.insugar = True
+ outerframe = gtk.EventBox()
+ outerframe.modify_bg(gtk.STATE_NORMAL,gtk.gdk.color_parse(BUTTON_BACKGROUND))
+ outerframe.show()
+ innerframe = gtk.EventBox()
+ innerframe.show()
+ ifalign = gtk.Alignment(1.0,1.0,1.0,1.0)
+ ifalign.add(innerframe)
+ ifalign.set_padding(20,20,50,50) # top,bottom,left,right
+ ifalign.show()
+ #innerframe.set_border_width(150)
+ outerframe.add(ifalign)
+ innerframe.add(self.app.main)
+ self.set_canvas(outerframe)
+
+
+ # mesh stuff
+ self.pservice = presenceservice.get_instance()
+ owner = self.pservice.get_owner()
+ self.owner = owner
+ try:
+ name, path = self.pservice.get_preferred_connection()
+ self.tp_conn_name = name
+ self.tp_conn_path = path
+ self.conn = telepathy.client.Connection(name, path)
+ except TypeError:
+ pass
+ self.initiating = None
+
+ #sharing stuff
+ self.game = None
+ self.connect('shared', self._shared_cb)
+ if self._shared_activity:
+ # we are joining the activity
+ self.connect('joined', self._joined_cb)
+ if self.get_shared():
+ # oh, OK, we've already joined
+ self._joined_cb()
+ else:
+ # we are creating the activity
+ pass
+
+ def destroy_cb(self, data=None):
+ return True
+
+ def read_file(self, filepath):
+ f = file(filepath)
+ sdata = f.read()
+ f.close()
+ self.app.restore(sdata)
+
+ def write_file(self, filepath):
+ sdata = self.app.getsdata()
+ f = open(filepath,'w')
+ f.write(sdata)
+ f.close()
+
+ def _shared_cb(self,activity):
+ self.initiating = True
+ self._setup()
+ id = self.tubes_chan[telepathy.CHANNEL_TYPE_TUBES].OfferDBusTube(
+ SERVICE, {})
+ #self.app.export.set_label('Shared Me')
+
+ def _joined_cb(self,activity):
+ if self.game is not None:
+ return
+
+ if not self._shared_activity:
+ return
+
+ #for buddy in self._shared_activity.get_joined_buddies():
+ # self.buddies_panel.add_watcher(buddy)
+
+ #logger.debug('Joined an existing Connect game')
+ #self.app.export.set_label('Joined You')
+ self.initiating = False
+ self._setup()
+
+ #logger.debug('This is not my activity: waiting for a tube...')
+ self.tubes_chan[telepathy.CHANNEL_TYPE_TUBES].ListTubes(
+ reply_handler=self._list_tubes_reply_cb,
+ error_handler=self._list_tubes_error_cb)
+
+ def _setup(self):
+ if self._shared_activity is None:
+ return
+
+ bus_name, conn_path, channel_paths = self._shared_activity.get_channels()
+
+ # Work out what our room is called and whether we have Tubes already
+ room = None
+ tubes_chan = None
+ text_chan = None
+ for channel_path in channel_paths:
+ channel = telepathy.client.Channel(bus_name, channel_path)
+ htype, handle = channel.GetHandle()
+ if htype == telepathy.HANDLE_TYPE_ROOM:
+ #logger.debug('Found our room: it has handle#%d "%s"',
+ # handle, self.conn.InspectHandles(htype, [handle])[0])
+ room = handle
+ ctype = channel.GetChannelType()
+ if ctype == telepathy.CHANNEL_TYPE_TUBES:
+ #logger.debug('Found our Tubes channel at %s', channel_path)
+ tubes_chan = channel
+ elif ctype == telepathy.CHANNEL_TYPE_TEXT:
+ #logger.debug('Found our Text channel at %s', channel_path)
+ text_chan = channel
+
+ if room is None:
+ #logger.error("Presence service didn't create a room")
+ return
+ if text_chan is None:
+ #logger.error("Presence service didn't create a text channel")
+ return
+
+ # Make sure we have a Tubes channel - PS doesn't yet provide one
+ if tubes_chan is None:
+ #logger.debug("Didn't find our Tubes channel, requesting one...")
+ tubes_chan = self.conn.request_channel(telepathy.CHANNEL_TYPE_TUBES,
+ telepathy.HANDLE_TYPE_ROOM, room, True)
+
+ self.tubes_chan = tubes_chan
+ self.text_chan = text_chan
+
+ tubes_chan[telepathy.CHANNEL_TYPE_TUBES].connect_to_signal('NewTube',
+ self._new_tube_cb)
+
+ def _list_tubes_reply_cb(self, tubes):
+ for tube_info in tubes:
+ self._new_tube_cb(*tube_info)
+
+ def _list_tubes_error_cb(self, e):
+ #logger.error('ListTubes() failed: %s', e)
+ pass
+
+ def _new_tube_cb(self, id, initiator, type, service, params, state):
+ #logger.debug('New tube: ID=%d initator=%d type=%d service=%s '
+ # 'params=%r state=%d', id, initiator, type, service,
+ # params, state)
+
+ if (self.game is None and type == telepathy.TUBE_TYPE_DBUS and
+ service == SERVICE):
+ if state == telepathy.TUBE_STATE_LOCAL_PENDING:
+ self.tubes_chan[telepathy.CHANNEL_TYPE_TUBES].AcceptDBusTube(id)
+
+ tube_conn = TubeConnection(self.conn,
+ self.tubes_chan[telepathy.CHANNEL_TYPE_TUBES],
+ id, group_iface=self.text_chan[telepathy.CHANNEL_INTERFACE_GROUP])
+ self.game = ConnectGame(tube_conn, self.initiating, self)
+
+ class ConnectGame(ExportedGObject):
+ def __init__(self,tube, is_initiator, activity):
+ super(ConnectGame,self).__init__(tube,PATH)
+ self.tube = tube
+ self.is_initiator = is_initiator
+ self.entered = False
+ self.activity = activity
+
+ self.ordered_bus_names=[]
+ self.tube.watch_participants(self.participant_change_cb)
+
+ def participant_change_cb(self, added, removed):
+ if not self.entered:
+ if self.is_initiator:
+ self.add_hello_handler()
+ else:
+ self.Hello()
+ self.entered = True
+
+ @signal(dbus_interface=IFACE,signature='')
+ def Hello(self):
+ """Request that this player's Welcome method is called to bring it
+ up to date with the game state.
+ """
+
+ @method(dbus_interface=IFACE, in_signature='s', out_signature='')
+ def Welcome(self, sdata):
+ self.activity.app.restore(str(sdata))
+
+ def add_hello_handler(self):
+ self.tube.add_signal_receiver(self.hello_cb, 'Hello', IFACE,
+ path=PATH, sender_keyword='sender')
+
+ def hello_cb(self, sender=None):
+ self.tube.get_object(sender, PATH).Welcome(self.activity.app.getsdata(),dbus_interface=IFACE)
+
+except ImportError:
+ pass
+
+if __name__ == '__main__':
+ toplevel_window = gtk.Window(gtk.WINDOW_TOPLEVEL)
+ mdirpath = os.path.abspath(os.curdir)
+ app = flipsticks(toplevel_window,mdirpath)
+ toplevel_window.add(app.main)
+ toplevel_window.set_title('FlipSticks')
+ toplevel_window.connect('delete_event', app.delete_event)
+ toplevel_window.connect('destroy', app.destroy)
+ toplevel_window.show()
+ gtk.main()
diff --git a/flipsticks.pyc b/flipsticks.pyc
new file mode 100644
index 0000000..eb37f54
--- /dev/null
+++ b/flipsticks.pyc
Binary files differ
diff --git a/flipsticks01.jpg b/flipsticks01.jpg
new file mode 100644
index 0000000..f453ec6
--- /dev/null
+++ b/flipsticks01.jpg
Binary files differ
diff --git a/flipsticks04.jpg b/flipsticks04.jpg
new file mode 100644
index 0000000..1092b3b
--- /dev/null
+++ b/flipsticks04.jpg
Binary files differ
diff --git a/flipsticksIcon.eps b/flipsticksIcon.eps
new file mode 100644
index 0000000..70d6ce3
--- /dev/null
+++ b/flipsticksIcon.eps
@@ -0,0 +1,59 @@
+%!PS-Adobe-3.1 EPSF-3.0 %ADO_DSC_Encoding: MacOS Roman %%Title: flipsticksIcon.eps %%Creator: Adobe Illustrator(R) 12 %%AI8_CreatorVersion: 12.0.0 %AI9_PrintingDataBegin %%For: Richard Goehl %%CreationDate: 10/8/07 %%BoundingBox: 0 0 61 61 %%HiResBoundingBox: 0 0 60.7500 60.5293 %%CropBox: 0 0 60.7500 60.5293 %%LanguageLevel: 2 %%DocumentData: Clean7Bit %%Pages: 1 %%DocumentNeededResources: %%DocumentSuppliedResources: procset Adobe_AGM_Image 1.0 0 %%+ procset Adobe_CoolType_Utility_T42 1.0 0 %%+ procset Adobe_CoolType_Utility_MAKEOCF 1.19 0 %%+ procset Adobe_CoolType_Core 2.23 0 %%+ procset Adobe_AGM_Core 2.0 0 %%+ procset Adobe_AGM_Utils 1.0 0 %%DocumentFonts: %%DocumentNeededFonts: %%DocumentNeededFeatures: %%DocumentSuppliedFeatures: %%DocumentProcessColors: Black %%DocumentCustomColors: %%CMYKCustomColor: %%RGBCustomColor: %ADO_BuildNumber: Adobe Illustrator(R) 12.0.0 x5199 R agm 4.3861 ct 5.530 %ADO_ContainsXMP: MainFirst %AI7_Thumbnail: 128 128 8 %%BeginData: 15708 Hex Bytes %0000330000660000990000CC0033000033330033660033990033CC0033FF %0066000066330066660066990066CC0066FF009900009933009966009999 %0099CC0099FF00CC0000CC3300CC6600CC9900CCCC00CCFF00FF3300FF66 %00FF9900FFCC3300003300333300663300993300CC3300FF333300333333 %3333663333993333CC3333FF3366003366333366663366993366CC3366FF %3399003399333399663399993399CC3399FF33CC0033CC3333CC6633CC99 %33CCCC33CCFF33FF0033FF3333FF6633FF9933FFCC33FFFF660000660033 %6600666600996600CC6600FF6633006633336633666633996633CC6633FF %6666006666336666666666996666CC6666FF669900669933669966669999 %6699CC6699FF66CC0066CC3366CC6666CC9966CCCC66CCFF66FF0066FF33 %66FF6666FF9966FFCC66FFFF9900009900339900669900999900CC9900FF %9933009933339933669933999933CC9933FF996600996633996666996699 %9966CC9966FF9999009999339999669999999999CC9999FF99CC0099CC33 %99CC6699CC9999CCCC99CCFF99FF0099FF3399FF6699FF9999FFCC99FFFF %CC0000CC0033CC0066CC0099CC00CCCC00FFCC3300CC3333CC3366CC3399 %CC33CCCC33FFCC6600CC6633CC6666CC6699CC66CCCC66FFCC9900CC9933 %CC9966CC9999CC99CCCC99FFCCCC00CCCC33CCCC66CCCC99CCCCCCCCCCFF %CCFF00CCFF33CCFF66CCFF99CCFFCCCCFFFFFF0033FF0066FF0099FF00CC %FF3300FF3333FF3366FF3399FF33CCFF33FFFF6600FF6633FF6666FF6699 %FF66CCFF66FFFF9900FF9933FF9966FF9999FF99CCFF99FFFFCC00FFCC33 %FFCC66FFCC99FFCCCCFFCCFFFFFF33FFFF66FFFF99FFFFCC110000001100 %000011111111220000002200000022222222440000004400000044444444 %550000005500000055555555770000007700000077777777880000008800 %000088888888AA000000AA000000AAAAAAAABB000000BB000000BBBBBBBB %DD000000DD000000DDDDDDDDEE000000EE000000EEEEEEEE0000000000FF %00FF0000FFFFFF0000FF00FFFFFF00FFFFFF %524C45FD8027F8272027F8272027F8272027F8272027F8272027F8272027 %F8272027F8272027F8272027F8272027F8272027F8272027F8272027F827 %2027F8272027F8272027F8272027F8272027F8272027F8272027F8272027 %F8272027F8272027F8272027F8272027F8272027F8272027F8272027F827 %2027F8272027F8272027F827202727202727272027272720272727202727 %272027272720272727202727272027272720272727202727272027272720 %272727202727272027272720272727202727272027272720272727202727 %272027272720272727202727272027272720272727202727272027272720 %27272720272727202727272027272720272727202727F827F827F827F827 %F827F827F827F827F827F827F827F827F827F827F827F827F827F827F827 %F827F827F827F827F827F827F827F827F827F827F827F827F827F827F827 %F827F827F827F827F827F827F827F827F827F827F827F827F827F827F827 %F827F827F827F827F827F827F827F827F827F827F827F827F827F827F8FD %81272027F8272027F8272027F8272027F8272027F8272027F8272027F827 %2027F8272027F8272027F8272027F8272027F8272027F8272027F8272027 %F8272027F8272027F8272027F8272027F8272027F8272027F8272027F827 %2027F8272027F8272027F8272027F8272027F8272027F8272027F8272027 %F8272027F8272027F8FD0427202727272027272720272727202727272027 %272720272727202727272027272720272727202727272027272720272727 %202727272027272720272727202727272027272720272727202727272027 %272720272727202727272027272720272727202727272027272720272727 %2027272720272727202727272027272720F827F827F827F8537D7E7D7D7D %7E7D7D7D7E7D7D7D7E7D7D7D7E7D7D7D7E7D7D7D7E7D7D7D7E7D7D7D7E7D %7D7D7E7D7D7D7E7D7D7D7E7D7D7D7E7D7D7D7E7D7D7D7E7D7D7D7E7D7D7D %7E7D7D7D7E7D7D7D7E7D7D7D7E7D7D7D7E7D7D7D7E7D7D7D7E7D7D7D7E7D %7D7D7E7D7D7D7E7D7D7D7E7D7D7D7E7DA85227F827F827F8FD08277DFD70 %FFA8FD0727F8272027F827207DFD70FF7D272027F8272027272027272720 %277DFD70FFA820272727202727F827F827F827F87EFD70FF7D27F827F827 %F8FD08277DFD70FFA8FD07272027F8272027F8A8FD2CFFA8A8A8FD41FF7D %27F8272027F8FD0427202727277DFD28FFA85252FD0427527DA8FD3EFFA8 %27272027272720F827F827F827F87DFD26FF7D27F827F827F827F827F827 %52A8FD3CFF7D27F827F827F8FD08277DFD25FF52FD0E27A8FD3BFFA8FD07 %27F8272027F827207DFD24FF27272027F8272027F8272027F8272027F87D %FD3AFF7D272027F8272027272027272720277DFD23FF522721FD04277DFD %04A852272027272720A8FD39FFA820272727202727F827F827F827F87EFD %22FF5227F827F8277DFD07FFA852F827F82720FD39FF7D27F827F827F8FD %08277DFD21FFA8FD04274BA8FD0AFF7DFD042752FD38FFA8FD07272027F8 %272027F8A8FD21FF59F82720277DFD0CFF522027F827A8FD37FF7D27F827 %2027F8FD0427202727277DFD21FF2727202752FD0DFFA8272727207EFD37 %FFA827272027272720F827F827F827F87DFD20FF7D27F827F8A8FD0EFF52 %27F82752FD37FF7D27F827F827F8FD08277DFD20FF8427272752FD0FFFA8 %27272752FD37FFA8FD0727F8272027F827207DFD20FF5327202752FD0FFF %7D27202727FD37FF7D272027F8272027272027272720277DFD20FF7D2027 %2752FD0FFFA820272727A8FD36FFA820272727202727F827F827F827F87E %FD20FF7D27F82727FD0FFF7D27F82727FD37FF7D27F827F827F8FD08277D %FD20FFA8FD0427A8FD0EFF7D27272752FD37FFA8FD07272027F8272027F8 %A8FD20FFA827F827207DFD0EFF2727F82752FD37FF7D27F8272027F8FD04 %27202727277DFD21FF5227212727FD0DFF5327272720A8FD37FFA8272720 %27272720F827F827F827F87DFD21FFA8F827F82728FD0BFF7D27F827F852 %FD38FF7D27F827F827F8FD08277DFD22FF52FD042752FD09FF7DFD0527A8 %FD38FFA8FD0727F8272027F827207DFD22FFA827F8272027277DA8FFFFFF %A8A852272027F82752FD39FF7D272027F8272027272027272720277DFD23 %FF7E272027272720272752FD04272027272752FD3AFFA820272727202727 %F827F827F827F87EFD24FF7D27F827F827F827F827F827F827F82752FD09 %FFA8FD31FF7D27F827F827F8FD08277DFD25FFA852FD0C277DFD08FFA852 %52527DFD2FFFA8FD07272027F8272027F8A8FD27FFA85227F8272027F827 %202727FD08FF7D2027F8272052FD2EFF7D27F8272027F8FD042720272727 %7DFD2AFFA87DA87D7DFD0427A8FFFFFFA8A87D5220277DA87D2727A8FD2D %FFA827272027272720F827F827F827F87DFD2FFF27F827F85252522727F8 %27F82752FFFFFF522752FD2DFF7D27F827F827F8FD08277DFD23FF7DA8A8 %FD05FFA8A87D7DFD0D277DFFFFFFA82753FD2DFFA8FD0727F8272027F827 %207DFD21FF7D2027F8277D7D52522727F8272027F8272027F8272027F827 %202727A8FFA827277DFD2DFF7D272027F8272027272027272720277DFD20 %FF7D202752522027272720272727202727272027272720272727527D2727 %215227272052A8FD1BFFA8FD10FFA820272727202727F827F827F827F87E %FD20FF272753FFFF7DF827F827F827F827F827F827F827527D7DA8A8FFFF %FF2727F827F827F827A8FD18FF7D2727F852A8FD0DFF7D27F827F827F8FD %08277DFD1FFFA82727FFFFFFA8FD0727287D7DFD0427FD09FFA8A852FD05 %27A8FD16FF7DFD0627A8FD0CFFA8FD07272027F8272027F8A8FD1FFFAF20 %27A8FFFFA8F827527D7DA8A8FFFFFF2727F8277DFD0BFF2727F8272027A8 %FD13FFA87D202752FFA852F852FD0CFF7D27F8272027F8FD042720272727 %7DFD20FF522752A8A8272752FD08FF522727207DFD0CFF272721272727A8 %FD10FFA85227202727FFFFFFA82727FD0CFFA827272027272720F827F827 %F827F87DFD1FFF7DF827F827F82727A8FD08FF5227F82752FD0DFF2727F8 %27F827A8FD0CFFA85227F827F827F827FFFFFFA8F827A8FD0BFF7D27F827 %F827F8FD08277DFD1EFFA8FD05275252FD0AFFA827272752FD0EFFFD0527 %52A8FD09FF7E7DFD09277DFFFF522752FD0CFFA8FD0727F8272027F82720 %7DFD1EFF5227F82720A8FD0CFF7D27202720FD0FFF27272027F827A8FD05 %FFA87D2727F8272027F827202752272027F82720A8FD0CFF7D272027F827 %2027272027272720277DFD1DFF7D272727207DFD0EFFFD0427A8FD0FFFFD %0427202727527DA852272027272720FD0427A8FFFF7D52272727A8FD0DFF %A820272727202727F827F827F827F87EFD1DFF52F827F827A8FD0EFF27F8 %27F87DFD10FF2727F827F827F827F827F827F827F827F8527DFD05FFA8A8 %A8FD0FFF7D27F827F827F8FD08277DFD1CFF7DFD04277DFD0FFF52272727 %53FD11FF5227277DA8A8FD0727527DFD1AFFA8FD07272027F8272027F8A8 %FD1CFF2727F82727FD10FF7DF8272052FD11FF7D2052FFFFFF7DF8272027 %52A8FD1CFF7D27F8272027F8FD0427202727277DFD1BFF5227272720A8FD %10FF7D27202727FD11FF7D2752FFFFFF7D27207DA8FD1EFFA82727202727 %2720F827F827F827F87DFD1AFFA827F827F852FD11FFA8F827F827A8FD10 %FFA8F8277DFFA852F87DFD20FF7D27F827F827F8FD08277DFD19FF7D52FD %0427A8FD11FFA8FD0427A8FD11FF52FD0627A8FD20FFA8FD0727F8272027 %F827207DFD17FF7DF8272027F82752FD13FF2727F8277DFD11FFA8522027 %F852A8FD21FF7D272027F8272027272027272720277DFD16FFA827272852 %272727FD14FF7D2727207DFD13FFAFA8A8FD23FFA820272727202727F827 %F827F827F87EFD16FF272752FFFF7DF827A8FD13FF5227F82728FD39FF7D %27F827F827F8FD08277DFD15FF7D2727FD04FF5227A8FD13FFA827272752 %FD39FFA8FD07272027F8272027F8A8FD13FFA82727F8277DFFFFFF2027A8 %FD13FF84272027F8AFFD04FF7D5352A8FD30FF7D27F8272027F8FD042720 %2727277DFD11FFA8522027272720277DA8272752FD15FFFD04277DFFFFA8 %FD0427207DFD2FFFA827272027272720F827F827F827F87DFD10FF5227F8 %27F827F827F827F827F8A8FD10FFA8FD04FF52F827F87DFFFF2727277D52 %27F87EFD2EFF7D27F827F827F8FD08277DFD0EFF7DFD0727527D7D525252 %FD0FFFA87D272752A8FFFF52FD04277D272727FFFFFF7D2752FD2EFFA8FD %0727F8272027F827207DFD0CFF7D522027F8272027277DFD14FFA827F827 %2027F87D5227F8272027F8272052FFFFFFA8F827A8FD2DFF7D272027F827 %2027272027272720277DFD07FF7D7D7DA8522720272727202752FD16FF7D %275284FF52272027272720272727202727FFFFFF532720277DFD2CFFA820 %272727202727F827F827F827F87EFD05FF7DF827F827F827F827F827F852 %A8FD17FF27277DFFFFFF2727F827F827F827F827F827277D5227F827F827 %52FD2BFF7D27F827F827F8FD08277DFD04FFA82727527DFD0727A8FD19FF %5227A8FFFFFF52FD052752527D7DA8FD0B27A8FD29FFA8FD07272027F827 %2027F8A8FD04FF522752FFFFFF272720277DFD1BFF272752FFFF7D202752 %7D7DA8A8FD05FF7D5952A85227F8272027F87DFD28FF7D27F8272027F8FD %0427202727277DFD04FF5227A8FFFFFF7D2052FD1CFF5227212727522027 %7DFD0FFF7D27202727272052A8FD26FFA827272027272720F827F827F827 %F87DFD04FF522752FFFFFF27277DFD1BFF7D27F827F827F82752FD11FFA8 %52F827F827F82752FD25FF7D27F827F827F8FD08277DFD04FFA8272752A8 %522727FD1BFFAF52FD04277EA8A8FD14FF7DFD0727AFFD23FFA8FD0727F8 %272027F827207DFD05FF7D2027F82720A8FD1BFF59F82720277DFD18FFA8 %2727F8272027F87DFD22FF7D272027F8272027272027272720277DFD06FF %A8525252A9FD1BFFA82727212752FD1BFF5927202727272052A8FD20FFA8 %20272727202727F827F827F827F87EFD26FF2727F827F8A8FD1CFF7D27F8 %27F827F8277DFD1FFF7D27F827F827F8FD08277DFD25FF7DFD04277DFD1F %FF7DFD062752FD1EFFA8FD07272027F8272027F8A8FD24FFA827F8272027 %A8FD20FFA82727F8272027277E7D84A8FD19FF7D27F8272027F8FD042720 %2727277DFD24FF522727202784FD23FF522720272727202727277DFD18FF %A827272027272720F827F827F827F87DFD23FF7DF827F82752FD25FF7D27 %F827F8272752F8277DFD17FF7D27F827F827F8FD08277DFD23FFFD0527FD %27FFA852272752FFFF7D2752FD17FFA8FD0727F8272027F827207DFD22FF %5227F827207DFD28FFA82720FFFFFFA82727FD17FF7D272027F827202727 %2027272720277DFD21FF7D2727272052FD12FFA87D28527DFD13FF27277D %FFFF7D2752A8FD16FFA820272727202727F827F827F827F87EFD21FF27F8 %27F827A8FD11FFA827F827F82727FD12FF7DF8275252F827F87DFD16FF7D %27F827F827F8FD08277DFD20FF7DFD04277DFD12FF522752A8A827277DFD %12FF7DFD0727FD16FFA8FD07272027F8272027F8A8FD1FFFA82027F82727 %FD11FFA87D2027A8FFFF7DF852FD13FFA85353F82720277DFD15FF7D27F8 %272027F8FD0427202727277DFD1FFF5227272720A8FD0AFFA8A87D7D5252 %2727202727FFFFFFA82727FD16FF5220272752FD15FFA827272027272720 %F827F827F827F87DFD1EFF5227F827F87DFD04FFA8FF847D52522727F827 %F827F827F827F82752FFA852F852FD16FF7D27F827F884FD14FF7D27F827 %F827F8FD08277DFD1DFFFD0627A8A87D7D5252FD1327522727A8FD17FFFD %042752FD14FFA8FD0727F8272027F827207DFD1CFF2727277D52272027F8 %272027F8272027F8272027F8272027F827202727522727F8277DFD18FF7D %F82720277DFD13FF7D272027F8272027272027272720277DFD1BFFA82720 %A8FFFF7D272727202727272027272720FD042752527D7DA9FFFFA8272727 %20A8FD19FF2720272753FD13FFA820272727202727F827F827F827F87EFD %1BFFA8F852FFFFFFA8F827F827F827F827F827527D7DA8A8FD08FFA8F827 %F827A8FD19FF5227F827F8A8FD0BFFA8FD06FF7D27F827F827F8FD08277D %FD1BFFA82727FFFFFF7DFD04277D7D84A8FD0FFF7DFD0427FD1BFFFD0427 %52FD09FFA85227FD06FFA8FD07272027F8272027F8A8FD1CFF2827277D52 %27F87DA8FD14FF7DF8272052FD1BFF52F8272027A8FD07FF7D27202752FD %05FF7D27F8272027F8FD0427202727277DFD1DFF27272027277DFD16FF52 %27202752FD1BFFA8272027277DFD06FF5227202727277DFD04FFA8272720 %27272720F827F827F827F87DFD1EFF7D5252A8FD16FFA852F827F87DFD1C %FF5227F82727FD04FFA82727F827F827F87DFD04FF7D27F827F827F8FD08 %277DFD39FFFD0427A8FD1CFFA8FD042752A8FF7DFD062752FD06FFA8FD07 %27F8272027F827207DFD38FF84272027F8AFFD1DFF52F8272027F8272027 %F82720277DFD07FF7D272027F8272027272027272720277DFD38FFA82027 %2727FD1EFF272727A85327202727272052A8FD08FFA820272727202727F8 %27F827F827F87EFD38FFA8A87D7D52FD1DFF7D2727FFFFFF5227F827F87D %FD0AFF7D27F827F827F8FD08277DFD5AFFA82753FFFFFFA8272727A8FD0B %FFA8FD07272027F8272027F8A8FD5AFF7D2727A8FFFF522727FD0DFF7D27 %F8272027F8FD0427202727277DFD5BFF2727277D522727A8FD0DFFA82727 %2027272720F827F827F827F87DFD5BFFA82727F827F87DFD0EFF7D27F827 %F827F8FD08277DFD07FFA8A8A8FD1BFFFD05A8FD1BFFA8A884A9FD14FF7D %7D7DFD05FFA8A8A8FD08FFA8FD0727F8272027F827207DFD04FF59522727 %F827275252A8FD14FFA87D27272027F827277DA8FD15FFA87D27272027F8 %27527DA8FD14FFA85227F827202727527DFD05FF7D272027F82720272720 %27272720277DFFFF7D27272027272720272727207DFD12FF7D2727272027 %27272027272752FD13FF5227272720272727202727277DFD11FFA8522027 %272720272727202752A8FFFFFFA820272727202727F827F827F827F8A8FF %52F827F827F827F827F827F827F852A8FD0FFF5227F827F827F827F827F8 %27F82727A9FD0FFFA82727F827F827F827F827F827F82752FD0FFF7D27F8 %27F827F827F827F827F827F87DFFFF7D27F827F827F8FD08277D52FD1027 %A8FD0DFF52FD1027FD0FFFFD102752FD0DFF7DFD1027A8FFA8FD07272027 %F8272027F8272027F8272027F8272027F8272027F8272052FD0CFF522720 %27F8272027F8272027F8272027F82727FD0DFF27272027F8272027F82720 %27F8272027F82752FD0BFF7D27F8272027F8272027F8272027F8272027F8 %A87D27F8272027F8FD042720272727202727272027272720272727202727 %272027277DFD0AFFA8272027272720272727202727272027272720277DFD %0BFF7D27202727272027272720272727202727272027A8FD0AFF52272720 %27272720272727202727272027272752A827272027272720F827F827F827 %F827F827F827F827F827F827F827F827F827F827277D7D7E7D7D7D7E7D7D %7D52F827F827F827F827F827F827F827F827F827F8277D7D7D7E7D7D7D7E %7D7D7D27F827F827F827F827F827F827F827F827F827F8527D7D7D7E7D7D %7D7E7D53F827F827F827F827F827F827F827F827F827F8272727F827F827 %F8FD0F27527DFFA87DFD1A2752A8A8A852FD1B2752A8A8A852FD1A27A8A8 %AF7DFD1027F8272027F8272027F8272027F87DFD05FF7DF8272027F82720 %27F8272027F8272027F8272027F827202752FD05FF7D27F8272027F82720 %27F8272027F8272027F8272027F82720277DFD05FF5227F8272027F82720 %27F8272027F8272027F8272027F82727A8FD04FFA8272027F8272027F827 %2027F827202727202727272027272720272752FD07FF5220272727202727 %27202727272027272720272727202727FD07FF5227202727272027272720 %2727272027272720272727202752FD07FF27272027272720272727202727 %27202727272027272720A8FD06FF7D2727272027272720272727202727F8 %27F827F827F827F827F82752FD07FF7D27F827F827F827F827F827F827F8 %27F827F827F827F87DFD07FF7DF827F827F827F827F827F827F827F827F8 %27F827F827F87DFD07FF53F827F827F827F827F827F827F827F827F827F8 %27F827A8FD07FFF827F827F827F827F827F827F8FD0D277DFD07FFA8FD16 %2759FD07FF7DFD17277DFD07FF53FD1627FD08FFFD0E272027F8272027F8 %272027F82727FD07FF5227F8272027F8272027F8272027F8272027F82720 %27F852FD07FF7D2027F8272027F8272027F8272027F8272027F8272027F8 %7DFD07FF522027F8272027F8272027F8272027F8272027F8272027A8FD06 %FFA8F8272027F8272027F8272027F8FD08272027272720277DFD05FFA827 %272720FD0F272027272720A8FD05FFA82027272720FD0F2720FD0427A8FD %05FF7D2027272720FD0B272027272720272752FD06FF52272027272720FD %0827A8FFA8FFFFA8F827F827F827F8277DFFFFFF7D27F827F827F827F87D %FFFFA8FFA8FFA8FF7D27F827F827F827F87DA8FFA87E2127F827F827F827 %53FFA8FFA8FFA8FFA8FF5227F827F827F82727A8FFFFA87DF827F827F827 %F8277DFFA8FFA8FFA8FFA827F827F827F827F852A8FFFFA82727F827F827 %F82727FFA8FFA8FFA8FD07FF52FD092752FD0A27A8FD09FFFD0A272852FD %0927FD0BFFFD09275228FD0A27FD09FF59FD09272852FD09277DFD0DFF7D %27F8272027F8272027F8272027F8272027F82752FD0AFF7D2027F8272027 %F8272027F8272027F8272027F853FD0BFF522027F8272027F8272027F827 %2027F8272027F87DFD09FFA8F8272027F8272027F8272027F8272027F827 %2027A8FD0EFF282721272727202727272027272720FD0427FD0CFF522727 %20272727202727272027272720272727A8FD0BFFA8272727202727272027 %27272027272720272752FD0BFF7D20272727202727272027272720272727 %20277DFD0FFFA8F827F827F827F827F827F827F827F827F8A8FD0CFFA827 %F827F827F827F827F827F827F827F8277DFD0DFF7D27F827F827F827F827 %F827F827F827F827A8FD0CFF52F827F827F827F827F827F827F827F82752 %FD11FFA8FD0F27A8FD0EFFA8FD0F277DFD0FFF7DFD0E2752A8FD0EFF53FD %0E2752FD13FFA828272027F8272027F827202727A8FD10FFA852F8272027 %F8272027F8272052A8FD11FF7E27F8272027F8272027F8272052A8FD10FF %7D2027F8272027F8272027F8277DFD16FF7D5227272027272720527DFD14 %FFA85227272720FD04277EFD15FF7DFD04272027272752A8FD14FF522720 %2727272027277DA8FD19FFA87D7D527D7DA8FD18FFA8847D7D527DA8FD19 %FFA87D597D53A8A8FD17FFA8A87D7D537D7DFD0EFFFF %%EndData %%EndComments %%BeginDefaults %%ViewingOrientation: 1 0 0 1 %%EndDefaults %%BeginProlog %%BeginResource: procset Adobe_AGM_Utils 1.0 0 %%Version: 1.0 0 %%Copyright: Copyright (C) 2000-2003 Adobe Systems, Inc. All Rights Reserved. systemdict /setpacking known { currentpacking true setpacking } if userdict /Adobe_AGM_Utils 70 dict dup begin put /bdf { bind def } bind def /nd{ null def }bdf /xdf { exch def }bdf /ldf { load def }bdf /ddf { put }bdf /xddf { 3 -1 roll put }bdf /xpt { exch put }bdf /ndf { exch dup where{ pop pop pop }{ xdf }ifelse }def /cdndf { exch dup currentdict exch known{ pop pop }{ exch def }ifelse }def /ps_level /languagelevel where{ pop systemdict /languagelevel get exec }{ 1 }ifelse def /level2 ps_level 2 ge def /level3 ps_level 3 ge def /ps_version {version cvr} stopped { -1 }if def /set_gvm { currentglobal exch setglobal }bdf /reset_gvm { setglobal }bdf /makereadonlyarray { /packedarray where{ pop packedarray }{ array astore readonly }ifelse }bdf /map_reserved_ink_name { dup type /stringtype eq{ dup /Red eq{ pop (_Red_) }{ dup /Green eq{ pop (_Green_) }{ dup /Blue eq{ pop (_Blue_) }{ dup () cvn eq{ pop (Process) }if }ifelse }ifelse }ifelse }if }bdf /AGMUTIL_GSTATE 22 dict def /get_gstate { AGMUTIL_GSTATE begin /AGMUTIL_GSTATE_clr_spc currentcolorspace def /AGMUTIL_GSTATE_clr_indx 0 def /AGMUTIL_GSTATE_clr_comps 12 array def mark currentcolor counttomark {AGMUTIL_GSTATE_clr_comps AGMUTIL_GSTATE_clr_indx 3 -1 roll put /AGMUTIL_GSTATE_clr_indx AGMUTIL_GSTATE_clr_indx 1 add def} repeat pop /AGMUTIL_GSTATE_fnt rootfont def /AGMUTIL_GSTATE_lw currentlinewidth def /AGMUTIL_GSTATE_lc currentlinecap def /AGMUTIL_GSTATE_lj currentlinejoin def /AGMUTIL_GSTATE_ml currentmiterlimit def currentdash /AGMUTIL_GSTATE_do xdf /AGMUTIL_GSTATE_da xdf /AGMUTIL_GSTATE_sa currentstrokeadjust def /AGMUTIL_GSTATE_clr_rnd currentcolorrendering def /AGMUTIL_GSTATE_op currentoverprint def /AGMUTIL_GSTATE_bg currentblackgeneration cvlit def /AGMUTIL_GSTATE_ucr currentundercolorremoval cvlit def currentcolortransfer cvlit /AGMUTIL_GSTATE_gy_xfer xdf cvlit /AGMUTIL_GSTATE_b_xfer xdf cvlit /AGMUTIL_GSTATE_g_xfer xdf cvlit /AGMUTIL_GSTATE_r_xfer xdf /AGMUTIL_GSTATE_ht currenthalftone def /AGMUTIL_GSTATE_flt currentflat def end }def /set_gstate { AGMUTIL_GSTATE begin AGMUTIL_GSTATE_clr_spc setcolorspace AGMUTIL_GSTATE_clr_indx {AGMUTIL_GSTATE_clr_comps AGMUTIL_GSTATE_clr_indx 1 sub get /AGMUTIL_GSTATE_clr_indx AGMUTIL_GSTATE_clr_indx 1 sub def} repeat setcolor AGMUTIL_GSTATE_fnt setfont AGMUTIL_GSTATE_lw setlinewidth AGMUTIL_GSTATE_lc setlinecap AGMUTIL_GSTATE_lj setlinejoin AGMUTIL_GSTATE_ml setmiterlimit AGMUTIL_GSTATE_da AGMUTIL_GSTATE_do setdash AGMUTIL_GSTATE_sa setstrokeadjust AGMUTIL_GSTATE_clr_rnd setcolorrendering AGMUTIL_GSTATE_op setoverprint AGMUTIL_GSTATE_bg cvx setblackgeneration AGMUTIL_GSTATE_ucr cvx setundercolorremoval AGMUTIL_GSTATE_r_xfer cvx AGMUTIL_GSTATE_g_xfer cvx AGMUTIL_GSTATE_b_xfer cvx AGMUTIL_GSTATE_gy_xfer cvx setcolortransfer AGMUTIL_GSTATE_ht /HalftoneType get dup 9 eq exch 100 eq or { currenthalftone /HalftoneType get AGMUTIL_GSTATE_ht /HalftoneType get ne { mark AGMUTIL_GSTATE_ht {sethalftone} stopped cleartomark } if }{ AGMUTIL_GSTATE_ht sethalftone } ifelse AGMUTIL_GSTATE_flt setflat end }def /get_gstate_and_matrix { AGMUTIL_GSTATE begin /AGMUTIL_GSTATE_ctm matrix currentmatrix def end get_gstate }def /set_gstate_and_matrix { set_gstate AGMUTIL_GSTATE begin AGMUTIL_GSTATE_ctm setmatrix end }def /AGMUTIL_str256 256 string def /AGMUTIL_src256 256 string def /AGMUTIL_dst64 64 string def /AGMUTIL_srcLen nd /AGMUTIL_ndx nd /thold_halftone { level3 {sethalftone currenthalftone} { dup /HalftoneType get 3 eq { sethalftone currenthalftone } { begin Width Height mul { Thresholds read {pop} if } repeat end currenthalftone } ifelse }ifelse } def /rdcmntline { currentfile AGMUTIL_str256 readline pop (%) anchorsearch {pop} if } bdf /filter_cmyk { dup type /filetype ne{ exch () /SubFileDecode filter } { exch pop } ifelse [ exch { AGMUTIL_src256 readstring pop dup length /AGMUTIL_srcLen exch def /AGMUTIL_ndx 0 def AGMCORE_plate_ndx 4 AGMUTIL_srcLen 1 sub{ 1 index exch get AGMUTIL_dst64 AGMUTIL_ndx 3 -1 roll put /AGMUTIL_ndx AGMUTIL_ndx 1 add def }for pop AGMUTIL_dst64 0 AGMUTIL_ndx getinterval } bind /exec cvx ] cvx } bdf /filter_indexed_devn { cvi Names length mul names_index add Lookup exch get } bdf /filter_devn { 4 dict begin /srcStr xdf /dstStr xdf dup type /filetype ne{ 0 () /SubFileDecode filter }if [ exch [ /devicen_colorspace_dict /AGMCORE_gget cvx /begin cvx currentdict /srcStr get /readstring cvx /pop cvx /dup cvx /length cvx 0 /gt cvx [ Adobe_AGM_Utils /AGMUTIL_ndx 0 /ddf cvx names_index Names length currentdict /srcStr get length 1 sub { 1 /index cvx /exch cvx /get cvx currentdict /dstStr get /AGMUTIL_ndx /load cvx 3 -1 /roll cvx /put cvx Adobe_AGM_Utils /AGMUTIL_ndx /AGMUTIL_ndx /load cvx 1 /add cvx /ddf cvx } for currentdict /dstStr get 0 /AGMUTIL_ndx /load cvx /getinterval cvx ] cvx /if cvx /end cvx ] cvx bind /exec cvx ] cvx end } bdf /AGMUTIL_imagefile nd /read_image_file { AGMUTIL_imagefile 0 setfileposition 10 dict begin /imageDict xdf /imbufLen Width BitsPerComponent mul 7 add 8 idiv def /imbufIdx 0 def /origDataSource imageDict /DataSource get def /origMultipleDataSources imageDict /MultipleDataSources get def /origDecode imageDict /Decode get def /dstDataStr imageDict /Width get colorSpaceElemCnt mul string def imageDict /MultipleDataSources known {MultipleDataSources}{false} ifelse { /imbufCnt imageDict /DataSource get length def /imbufs imbufCnt array def 0 1 imbufCnt 1 sub { /imbufIdx xdf imbufs imbufIdx imbufLen string put imageDict /DataSource get imbufIdx [ AGMUTIL_imagefile imbufs imbufIdx get /readstring cvx /pop cvx ] cvx put } for DeviceN_PS2 { imageDict begin /DataSource [ DataSource /devn_sep_datasource cvx ] cvx def /MultipleDataSources false def /Decode [0 1] def end } if }{ /imbuf imbufLen string def Indexed_DeviceN level3 not and DeviceN_NoneName or { /srcDataStrs [ imageDict begin currentdict /MultipleDataSources known {MultipleDataSources {DataSource length}{1}ifelse}{1} ifelse { Width Decode length 2 div mul cvi string } repeat end ] def imageDict begin /DataSource [AGMUTIL_imagefile Decode BitsPerComponent false 1 /filter_indexed_devn load dstDataStr srcDataStrs devn_alt_datasource /exec cvx] cvx def /Decode [0 1] def end }{ imageDict /DataSource [1 string dup 0 AGMUTIL_imagefile Decode length 2 idiv string/readstring cvx /pop cvx names_index /get cvx /put cvx] cvx put imageDict /Decode [0 1] put } ifelse } ifelse imageDict exch load exec imageDict /DataSource origDataSource put imageDict /MultipleDataSources origMultipleDataSources put imageDict /Decode origDecode put end } bdf /write_image_file { begin { (AGMUTIL_imagefile) (w+) file } stopped{ false }{ Adobe_AGM_Utils/AGMUTIL_imagefile xddf 2 dict begin /imbufLen Width BitsPerComponent mul 7 add 8 idiv def MultipleDataSources {DataSource 0 get}{DataSource}ifelse type /filetype eq { /imbuf imbufLen string def }if 1 1 Height MultipleDataSources not{Decode length 2 idiv mul}if{ pop MultipleDataSources { 0 1 DataSource length 1 sub { DataSource type dup /arraytype eq { pop DataSource exch get exec }{ /filetype eq { DataSource exch get imbuf readstring pop }{ DataSource exch get } ifelse } ifelse AGMUTIL_imagefile exch writestring } for }{ DataSource type dup /arraytype eq { pop DataSource exec }{ /filetype eq { DataSource imbuf readstring pop }{ DataSource } ifelse } ifelse AGMUTIL_imagefile exch writestring } ifelse }for end true }ifelse end } bdf /close_image_file { AGMUTIL_imagefile closefile (AGMUTIL_imagefile) deletefile }def statusdict /product known userdict /AGMP_current_show known not and{ /pstr statusdict /product get def pstr (HP LaserJet 2200) eq pstr (HP LaserJet 4000 Series) eq or pstr (HP LaserJet 4050 Series ) eq or pstr (HP LaserJet 8000 Series) eq or pstr (HP LaserJet 8100 Series) eq or pstr (HP LaserJet 8150 Series) eq or pstr (HP LaserJet 5000 Series) eq or pstr (HP LaserJet 5100 Series) eq or pstr (HP Color LaserJet 4500) eq or pstr (HP Color LaserJet 4600) eq or pstr (HP LaserJet 5Si) eq or pstr (HP LaserJet 1200 Series) eq or pstr (HP LaserJet 1300 Series) eq or pstr (HP LaserJet 4100 Series) eq or { userdict /AGMP_current_show /show load put userdict /show { currentcolorspace 0 get /Pattern eq {false charpath f} {AGMP_current_show} ifelse } put }if currentdict /pstr undef } if /consumeimagedata { begin currentdict /MultipleDataSources known not {/MultipleDataSources false def} if MultipleDataSources { DataSource 0 get type dup /filetype eq { 1 dict begin /flushbuffer Width cvi string def 1 1 Height cvi { pop 0 1 DataSource length 1 sub { DataSource exch get flushbuffer readstring pop pop }for }for end }if dup /arraytype eq exch /packedarraytype eq or DataSource 0 get xcheck and { Width Height mul cvi { 0 1 DataSource length 1 sub {dup DataSource exch get exec length exch 0 ne {pop}if}for dup 0 eq {pop exit}if sub dup 0 le {exit}if }loop pop }if } { /DataSource load type dup /filetype eq { 1 dict begin /flushbuffer Width Decode length 2 idiv mul cvi string def 1 1 Height { pop DataSource flushbuffer readstring pop pop} for end }if dup /arraytype eq exch /packedarraytype eq or /DataSource load xcheck and { Height Width BitsPerComponent mul 8 BitsPerComponent sub add 8 idiv Decode length 2 idiv mul mul { DataSource length dup 0 eq {pop exit}if sub dup 0 le {exit}if }loop pop }if }ifelse end }bdf /addprocs { 2{/exec load}repeat 3 1 roll [ 5 1 roll ] bind cvx }def /modify_halftone_xfer { currenthalftone dup length dict copy begin currentdict 2 index known{ 1 index load dup length dict copy begin currentdict/TransferFunction known{ /TransferFunction load }{ currenttransfer }ifelse addprocs /TransferFunction xdf currentdict end def currentdict end sethalftone }{ currentdict/TransferFunction known{ /TransferFunction load }{ currenttransfer }ifelse addprocs /TransferFunction xdf currentdict end sethalftone pop }ifelse }def /clonearray { dup xcheck exch dup length array exch Adobe_AGM_Core/AGMCORE_tmp -1 ddf { Adobe_AGM_Core/AGMCORE_tmp 2 copy get 1 add ddf dup type /dicttype eq { Adobe_AGM_Core/AGMCORE_tmp get exch clonedict Adobe_AGM_Core/AGMCORE_tmp 4 -1 roll ddf } if dup type /arraytype eq { Adobe_AGM_Core/AGMCORE_tmp get exch clonearray Adobe_AGM_Core/AGMCORE_tmp 4 -1 roll ddf } if exch dup Adobe_AGM_Core/AGMCORE_tmp get 4 -1 roll put }forall exch {cvx} if }bdf /clonedict { dup length dict begin { dup type /dicttype eq { clonedict } if dup type /arraytype eq { clonearray } if def }forall currentdict end }bdf /DeviceN_PS2 { /currentcolorspace AGMCORE_gget 0 get /DeviceN eq level3 not and } bdf /Indexed_DeviceN { /indexed_colorspace_dict AGMCORE_gget dup null ne { dup /CSDBase known { /CSDBase get /CSD get_res /Names known }{ pop false }ifelse }{ pop false } ifelse } bdf /DeviceN_NoneName { /Names where { pop false Names { (None) eq or } forall }{ false }ifelse } bdf /DeviceN_PS2_inRip_seps { /AGMCORE_in_rip_sep where { pop dup type dup /arraytype eq exch /packedarraytype eq or { dup 0 get /DeviceN eq level3 not and AGMCORE_in_rip_sep and { /currentcolorspace exch AGMCORE_gput false } { true }ifelse } { true } ifelse } { true } ifelse } bdf /base_colorspace_type { dup type /arraytype eq {0 get} if } bdf /currentdistillerparams where { pop currentdistillerparams /CoreDistVersion get 5000 lt}{true}ifelse { /pdfmark_5 {cleartomark} bind def }{ /pdfmark_5 {pdfmark} bind def }ifelse /ReadBypdfmark_5 { 2 dict begin /makerString exch def string /tmpString exch def { currentfile tmpString readline pop makerString anchorsearch { pop pop cleartomark exit }{ 3 copy /PUT pdfmark_5 pop 2 copy (\n) /PUT pdfmark_5 } ifelse }loop end } bdf /doc_setup{ Adobe_AGM_Utils begin }bdf /doc_trailer{ currentdict Adobe_AGM_Utils eq{ end }if }bdf systemdict /setpacking known { setpacking } if %%EndResource %%BeginResource: procset Adobe_AGM_Core 2.0 0 %%Version: 2.0 0 %%Copyright: Copyright (C) 1997-2005 Adobe Systems, Inc. All Rights Reserved. %% Note: This procset assumes Adobe_AGM_Utils is opened on the stack below it, for %% definitions of some fundamental procedures. systemdict /setpacking known { currentpacking true setpacking } if userdict /Adobe_AGM_Core 201 dict dup begin put /Adobe_AGM_Core_Id /Adobe_AGM_Core_2.0_0 def /AGMCORE_str256 256 string def /AGMCORE_save nd /AGMCORE_graphicsave nd /AGMCORE_c 0 def /AGMCORE_m 0 def /AGMCORE_y 0 def /AGMCORE_k 0 def /AGMCORE_cmykbuf 4 array def /AGMCORE_screen [currentscreen] cvx def /AGMCORE_tmp 0 def /AGMCORE_&setgray nd /AGMCORE_&setcolor nd /AGMCORE_&setcolorspace nd /AGMCORE_&setcmykcolor nd /AGMCORE_cyan_plate nd /AGMCORE_magenta_plate nd /AGMCORE_yellow_plate nd /AGMCORE_black_plate nd /AGMCORE_plate_ndx nd /AGMCORE_get_ink_data nd /AGMCORE_is_cmyk_sep nd /AGMCORE_host_sep nd /AGMCORE_avoid_L2_sep_space nd /AGMCORE_distilling nd /AGMCORE_composite_job nd /AGMCORE_producing_seps nd /AGMCORE_ps_level -1 def /AGMCORE_ps_version -1 def /AGMCORE_environ_ok nd /AGMCORE_CSD_cache 0 dict def /AGMCORE_currentoverprint false def /AGMCORE_deltaX nd /AGMCORE_deltaY nd /AGMCORE_name nd /AGMCORE_sep_special nd /AGMCORE_err_strings 4 dict def /AGMCORE_cur_err nd /AGMCORE_current_spot_alias false def /AGMCORE_inverting false def /AGMCORE_feature_dictCount nd /AGMCORE_feature_opCount nd /AGMCORE_feature_ctm nd /AGMCORE_ConvertToProcess false def /AGMCORE_Default_CTM matrix def /AGMCORE_Default_PageSize nd /AGMCORE_currentbg nd /AGMCORE_currentucr nd /AGMCORE_in_pattern false def /AGMCORE_currentpagedevice nd /knockout_unitsq nd currentglobal true setglobal [/CSA /Gradient /Procedure] { /Generic /Category findresource dup length dict copy /Category defineresource pop } forall setglobal /AGMCORE_key_known { where{ /Adobe_AGM_Core_Id known }{ false }ifelse }ndf /flushinput { save 2 dict begin /CompareBuffer 3 -1 roll def /readbuffer 256 string def mark { currentfile readbuffer {readline} stopped {cleartomark mark} { not {pop exit} if CompareBuffer eq {exit} if }ifelse }loop cleartomark end restore }bdf /getspotfunction { AGMCORE_screen exch pop exch pop dup type /dicttype eq{ dup /HalftoneType get 1 eq{ /SpotFunction get }{ dup /HalftoneType get 2 eq{ /GraySpotFunction get }{ pop { abs exch abs 2 copy add 1 gt{ 1 sub dup mul exch 1 sub dup mul add 1 sub }{ dup mul exch dup mul add 1 exch sub }ifelse }bind }ifelse }ifelse }if } def /clp_npth { clip newpath } def /eoclp_npth { eoclip newpath } def /npth_clp { newpath clip } def /graphic_setup { /AGMCORE_graphicsave save def concat 0 setgray 0 setlinecap 0 setlinejoin 1 setlinewidth [] 0 setdash 10 setmiterlimit newpath false setoverprint false setstrokeadjust //Adobe_AGM_Core/spot_alias get exec /Adobe_AGM_Image where { pop Adobe_AGM_Image/spot_alias 2 copy known{ get exec }{ pop pop }ifelse } if 100 dict begin /dictstackcount countdictstack def /showpage {} def mark } def /graphic_cleanup { cleartomark dictstackcount 1 countdictstack 1 sub {end}for end AGMCORE_graphicsave restore } def /compose_error_msg { grestoreall initgraphics /Helvetica findfont 10 scalefont setfont /AGMCORE_deltaY 100 def /AGMCORE_deltaX 310 def clippath pathbbox newpath pop pop 36 add exch 36 add exch moveto 0 AGMCORE_deltaY rlineto AGMCORE_deltaX 0 rlineto 0 AGMCORE_deltaY neg rlineto AGMCORE_deltaX neg 0 rlineto closepath 0 AGMCORE_&setgray gsave 1 AGMCORE_&setgray fill grestore 1 setlinewidth gsave stroke grestore currentpoint AGMCORE_deltaY 15 sub add exch 8 add exch moveto /AGMCORE_deltaY 12 def /AGMCORE_tmp 0 def AGMCORE_err_strings exch get { dup 32 eq { pop AGMCORE_str256 0 AGMCORE_tmp getinterval stringwidth pop currentpoint pop add AGMCORE_deltaX 28 add gt { currentpoint AGMCORE_deltaY sub exch pop clippath pathbbox pop pop pop 44 add exch moveto } if AGMCORE_str256 0 AGMCORE_tmp getinterval show ( ) show 0 1 AGMCORE_str256 length 1 sub { AGMCORE_str256 exch 0 put }for /AGMCORE_tmp 0 def } { AGMCORE_str256 exch AGMCORE_tmp xpt /AGMCORE_tmp AGMCORE_tmp 1 add def } ifelse } forall } bdf /doc_setup{ Adobe_AGM_Core begin /AGMCORE_ps_version xdf /AGMCORE_ps_level xdf errordict /AGM_handleerror known not{ errordict /AGM_handleerror errordict /handleerror get put errordict /handleerror { Adobe_AGM_Core begin $error /newerror get AGMCORE_cur_err null ne and{ $error /newerror false put AGMCORE_cur_err compose_error_msg }if $error /newerror true put end errordict /AGM_handleerror get exec } bind put }if /AGMCORE_environ_ok ps_level AGMCORE_ps_level ge ps_version AGMCORE_ps_version ge and AGMCORE_ps_level -1 eq or def AGMCORE_environ_ok not {/AGMCORE_cur_err /AGMCORE_bad_environ def} if /AGMCORE_&setgray systemdict/setgray get def level2{ /AGMCORE_&setcolor systemdict/setcolor get def /AGMCORE_&setcolorspace systemdict/setcolorspace get def }if /AGMCORE_currentbg currentblackgeneration def /AGMCORE_currentucr currentundercolorremoval def /AGMCORE_distilling /product where{ pop systemdict/setdistillerparams known product (Adobe PostScript Parser) ne and }{ false }ifelse def /AGMCORE_GSTATE AGMCORE_key_known not{ /AGMCORE_GSTATE 21 dict def /AGMCORE_tmpmatrix matrix def /AGMCORE_gstack 32 array def /AGMCORE_gstackptr 0 def /AGMCORE_gstacksaveptr 0 def /AGMCORE_gstackframekeys 10 def /AGMCORE_&gsave /gsave ldf /AGMCORE_&grestore /grestore ldf /AGMCORE_&grestoreall /grestoreall ldf /AGMCORE_&save /save ldf /AGMCORE_&setoverprint /setoverprint ldf /AGMCORE_gdictcopy { begin { def } forall end }def /AGMCORE_gput { AGMCORE_gstack AGMCORE_gstackptr get 3 1 roll put }def /AGMCORE_gget { AGMCORE_gstack AGMCORE_gstackptr get exch get }def /gsave { AGMCORE_&gsave AGMCORE_gstack AGMCORE_gstackptr get AGMCORE_gstackptr 1 add dup 32 ge {limitcheck} if /AGMCORE_gstackptr exch store AGMCORE_gstack AGMCORE_gstackptr get AGMCORE_gdictcopy }def /grestore { AGMCORE_&grestore AGMCORE_gstackptr 1 sub dup AGMCORE_gstacksaveptr lt {1 add} if dup AGMCORE_gstack exch get dup /AGMCORE_currentoverprint known {/AGMCORE_currentoverprint get setoverprint}{pop}ifelse /AGMCORE_gstackptr exch store }def /grestoreall { AGMCORE_&grestoreall /AGMCORE_gstackptr AGMCORE_gstacksaveptr store }def /save { AGMCORE_&save AGMCORE_gstack AGMCORE_gstackptr get AGMCORE_gstackptr 1 add dup 32 ge {limitcheck} if /AGMCORE_gstackptr exch store /AGMCORE_gstacksaveptr AGMCORE_gstackptr store AGMCORE_gstack AGMCORE_gstackptr get AGMCORE_gdictcopy }def /setoverprint{ dup /AGMCORE_currentoverprint exch AGMCORE_gput AGMCORE_&setoverprint }def 0 1 AGMCORE_gstack length 1 sub { AGMCORE_gstack exch AGMCORE_gstackframekeys dict put } for }if level3 /AGMCORE_&sysshfill AGMCORE_key_known not and { /AGMCORE_&sysshfill systemdict/shfill get def /AGMCORE_&sysmakepattern systemdict/makepattern get def /AGMCORE_&usrmakepattern /makepattern load def }if /currentcmykcolor [0 0 0 0] AGMCORE_gput /currentstrokeadjust false AGMCORE_gput /currentcolorspace [/DeviceGray] AGMCORE_gput /sep_tint 0 AGMCORE_gput /devicen_tints [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] AGMCORE_gput /sep_colorspace_dict null AGMCORE_gput /devicen_colorspace_dict null AGMCORE_gput /indexed_colorspace_dict null AGMCORE_gput /currentcolor_intent () AGMCORE_gput /customcolor_tint 1 AGMCORE_gput << /MaxPatternItem currentsystemparams /MaxPatternCache get >> setuserparams end }def /page_setup { /setcmykcolor where{ pop Adobe_AGM_Core/AGMCORE_&setcmykcolor /setcmykcolor load put }if Adobe_AGM_Core begin /setcmykcolor { 4 copy AGMCORE_cmykbuf astore /currentcmykcolor exch AGMCORE_gput 1 sub 4 1 roll 3 { 3 index add neg dup 0 lt { pop 0 } if 3 1 roll } repeat setrgbcolor pop }ndf /currentcmykcolor { /currentcmykcolor AGMCORE_gget aload pop }ndf /setoverprint { pop }ndf /currentoverprint { false }ndf /AGMCORE_cyan_plate 1 0 0 0 test_cmyk_color_plate def /AGMCORE_magenta_plate 0 1 0 0 test_cmyk_color_plate def /AGMCORE_yellow_plate 0 0 1 0 test_cmyk_color_plate def /AGMCORE_black_plate 0 0 0 1 test_cmyk_color_plate def /AGMCORE_plate_ndx AGMCORE_cyan_plate{ 0 }{ AGMCORE_magenta_plate{ 1 }{ AGMCORE_yellow_plate{ 2 }{ AGMCORE_black_plate{ 3 }{ 4 }ifelse }ifelse }ifelse }ifelse def /AGMCORE_have_reported_unsupported_color_space false def /AGMCORE_report_unsupported_color_space { AGMCORE_have_reported_unsupported_color_space false eq { (Warning: Job contains content that cannot be separated with on-host methods. This content appears on the black plate, and knocks out all other plates.) == Adobe_AGM_Core /AGMCORE_have_reported_unsupported_color_space true ddf } if }def /AGMCORE_composite_job AGMCORE_cyan_plate AGMCORE_magenta_plate and AGMCORE_yellow_plate and AGMCORE_black_plate and def /AGMCORE_in_rip_sep /AGMCORE_in_rip_sep where{ pop AGMCORE_in_rip_sep }{ AGMCORE_distilling { false }{ userdict/Adobe_AGM_OnHost_Seps known{ false }{ level2{ currentpagedevice/Separations 2 copy known{ get }{ pop pop false }ifelse }{ false }ifelse }ifelse }ifelse }ifelse def /AGMCORE_producing_seps AGMCORE_composite_job not AGMCORE_in_rip_sep or def /AGMCORE_host_sep AGMCORE_producing_seps AGMCORE_in_rip_sep not and def /AGM_preserve_spots /AGM_preserve_spots where{ pop AGM_preserve_spots }{ AGMCORE_distilling AGMCORE_producing_seps or }ifelse def /AGM_is_distiller_preserving_spotimages { currentdistillerparams/PreserveOverprintSettings known { currentdistillerparams/PreserveOverprintSettings get { currentdistillerparams/ColorConversionStrategy known { currentdistillerparams/ColorConversionStrategy get /sRGB ne }{ true }ifelse }{ false }ifelse }{ false }ifelse }def /convert_spot_to_process where {pop}{ /convert_spot_to_process { //Adobe_AGM_Core begin dup map_alias { /Name get exch pop } if dup dup (None) eq exch (All) eq or { pop false }{ AGMCORE_host_sep { gsave 1 0 0 0 setcmykcolor currentgray 1 exch sub 0 1 0 0 setcmykcolor currentgray 1 exch sub 0 0 1 0 setcmykcolor currentgray 1 exch sub 0 0 0 1 setcmykcolor currentgray 1 exch sub add add add 0 eq { pop false }{ false setoverprint current_spot_alias false set_spot_alias 1 1 1 1 6 -1 roll findcmykcustomcolor 1 setcustomcolor set_spot_alias currentgray 1 ne }ifelse grestore }{ AGMCORE_distilling { pop AGM_is_distiller_preserving_spotimages not }{ //Adobe_AGM_Core/AGMCORE_name xddf false //Adobe_AGM_Core/AGMCORE_in_pattern known {//Adobe_AGM_Core/AGMCORE_in_pattern get}{false} ifelse not AGMCORE_currentpagedevice/OverrideSeparations known and { AGMCORE_currentpagedevice/OverrideSeparations get { /HqnSpots /ProcSet resourcestatus { pop pop pop true }if }if }if { AGMCORE_name /HqnSpots /ProcSet findresource /TestSpot get exec not }{ gsave [/Separation AGMCORE_name /DeviceGray {}]AGMCORE_&setcolorspace false AGMCORE_currentpagedevice/SeparationColorNames 2 copy known { get { AGMCORE_name eq or}forall not }{ pop pop pop true }ifelse grestore }ifelse }ifelse }ifelse }ifelse end }def }ifelse /convert_to_process where {pop}{ /convert_to_process { dup length 0 eq { pop false }{ AGMCORE_host_sep { dup true exch { dup (Cyan) eq exch dup (Magenta) eq 3 -1 roll or exch dup (Yellow) eq 3 -1 roll or exch dup (Black) eq 3 -1 roll or {pop} {convert_spot_to_process and}ifelse } forall { true exch { dup (Cyan) eq exch dup (Magenta) eq 3 -1 roll or exch dup (Yellow) eq 3 -1 roll or exch (Black) eq or and }forall not }{pop false}ifelse }{ false exch { dup (Cyan) eq exch dup (Magenta) eq 3 -1 roll or exch dup (Yellow) eq 3 -1 roll or exch dup (Black) eq 3 -1 roll or {pop} {convert_spot_to_process or}ifelse } forall }ifelse }ifelse }def }ifelse /AGMCORE_avoid_L2_sep_space version cvr 2012 lt level2 and AGMCORE_producing_seps not and def /AGMCORE_is_cmyk_sep AGMCORE_cyan_plate AGMCORE_magenta_plate or AGMCORE_yellow_plate or AGMCORE_black_plate or def /AGM_avoid_0_cmyk where{ pop AGM_avoid_0_cmyk }{ AGM_preserve_spots userdict/Adobe_AGM_OnHost_Seps known userdict/Adobe_AGM_InRip_Seps known or not and }ifelse { /setcmykcolor[ { 4 copy add add add 0 eq currentoverprint and{ pop 0.0005 }if }/exec cvx /AGMCORE_&setcmykcolor load dup type/operatortype ne{ /exec cvx }if ]cvx def }if /AGMCORE_IsSeparationAProcessColor { dup (Cyan) eq exch dup (Magenta) eq exch dup (Yellow) eq exch (Black) eq or or or }def AGMCORE_host_sep{ /setcolortransfer { AGMCORE_cyan_plate{ pop pop pop }{ AGMCORE_magenta_plate{ 4 3 roll pop pop pop }{ AGMCORE_yellow_plate{ 4 2 roll pop pop pop }{ 4 1 roll pop pop pop }ifelse }ifelse }ifelse settransfer } def /AGMCORE_get_ink_data AGMCORE_cyan_plate{ {pop pop pop} }{ AGMCORE_magenta_plate{ {4 3 roll pop pop pop} }{ AGMCORE_yellow_plate{ {4 2 roll pop pop pop} }{ {4 1 roll pop pop pop} }ifelse }ifelse }ifelse def /AGMCORE_RemoveProcessColorNames { 1 dict begin /filtername { dup /Cyan eq 1 index (Cyan) eq or {pop (_cyan_)}if dup /Magenta eq 1 index (Magenta) eq or {pop (_magenta_)}if dup /Yellow eq 1 index (Yellow) eq or {pop (_yellow_)}if dup /Black eq 1 index (Black) eq or {pop (_black_)}if }def dup type /arraytype eq {[exch {filtername}forall]} {filtername}ifelse end }def level3 { /AGMCORE_IsCurrentColor { dup AGMCORE_IsSeparationAProcessColor { AGMCORE_plate_ndx 0 eq {dup (Cyan) eq exch /Cyan eq or}if AGMCORE_plate_ndx 1 eq {dup (Magenta) eq exch /Magenta eq or}if AGMCORE_plate_ndx 2 eq {dup (Yellow) eq exch /Yellow eq or}if AGMCORE_plate_ndx 3 eq {dup (Black) eq exch /Black eq or}if AGMCORE_plate_ndx 4 eq {pop false}if }{ gsave false setoverprint current_spot_alias false set_spot_alias 1 1 1 1 6 -1 roll findcmykcustomcolor 1 setcustomcolor set_spot_alias currentgray 1 ne grestore }ifelse }def /AGMCORE_filter_functiondatasource { 5 dict begin /data_in xdf data_in type /stringtype eq { /ncomp xdf /comp xdf /string_out data_in length ncomp idiv string def 0 ncomp data_in length 1 sub { string_out exch dup ncomp idiv exch data_in exch ncomp getinterval comp get 255 exch sub put }for string_out }{ string /string_in xdf /string_out 1 string def /component xdf [ data_in string_in /readstring cvx [component /get cvx 255 /exch cvx /sub cvx string_out /exch cvx 0 /exch cvx /put cvx string_out]cvx [/pop cvx ()]cvx /ifelse cvx ]cvx /ReusableStreamDecode filter }ifelse end }def /AGMCORE_separateShadingFunction { 2 dict begin /paint? xdf /channel xdf dup type /dicttype eq { begin FunctionType 0 eq { /DataSource channel Range length 2 idiv DataSource AGMCORE_filter_functiondatasource def currentdict /Decode known {/Decode Decode channel 2 mul 2 getinterval def}if paint? not {/Decode [1 1]def}if }if FunctionType 2 eq { paint? { /C0 [C0 channel get 1 exch sub] def /C1 [C1 channel get 1 exch sub] def }{ /C0 [1] def /C1 [1] def }ifelse }if FunctionType 3 eq { /Functions [Functions {channel paint? AGMCORE_separateShadingFunction} forall] def }if currentdict /Range known {/Range [0 1] def}if currentdict end}{ channel get 0 paint? AGMCORE_separateShadingFunction }ifelse end }def /AGMCORE_separateShading { 3 -1 roll begin currentdict /Function known { currentdict /Background known {[1 index{Background 3 index get 1 exch sub}{1}ifelse]/Background xdf}if Function 3 1 roll AGMCORE_separateShadingFunction /Function xdf /ColorSpace [/DeviceGray] def }{ ColorSpace dup type /arraytype eq {0 get}if /DeviceCMYK eq { /ColorSpace [/DeviceN [/_cyan_ /_magenta_ /_yellow_ /_black_] /DeviceCMYK {}] def }{ ColorSpace dup 1 get AGMCORE_RemoveProcessColorNames 1 exch put }ifelse ColorSpace 0 get /Separation eq { { [1 /exch cvx /sub cvx]cvx }{ [/pop cvx 1]cvx }ifelse ColorSpace 3 3 -1 roll put pop }{ { [exch ColorSpace 1 get length 1 sub exch sub /index cvx 1 /exch cvx /sub cvx ColorSpace 1 get length 1 add 1 /roll cvx ColorSpace 1 get length{/pop cvx} repeat]cvx }{ pop [ColorSpace 1 get length {/pop cvx} repeat cvx 1]cvx }ifelse ColorSpace 3 3 -1 roll bind put }ifelse ColorSpace 2 /DeviceGray put }ifelse end }def /AGMCORE_separateShadingDict { dup /ColorSpace get dup type /arraytype ne {[exch]}if dup 0 get /DeviceCMYK eq { exch begin currentdict AGMCORE_cyan_plate {0 true}if AGMCORE_magenta_plate {1 true}if AGMCORE_yellow_plate {2 true}if AGMCORE_black_plate {3 true}if AGMCORE_plate_ndx 4 eq {0 false}if dup not currentoverprint and {/AGMCORE_ignoreshade true def}if AGMCORE_separateShading currentdict end exch }if dup 0 get /Separation eq { exch begin ColorSpace 1 get dup /None ne exch /All ne and { ColorSpace 1 get AGMCORE_IsCurrentColor AGMCORE_plate_ndx 4 lt and ColorSpace 1 get AGMCORE_IsSeparationAProcessColor not and { ColorSpace 2 get dup type /arraytype eq {0 get}if /DeviceCMYK eq { /ColorSpace [ /Separation ColorSpace 1 get /DeviceGray [ ColorSpace 3 get /exec cvx 4 AGMCORE_plate_ndx sub -1 /roll cvx 4 1 /roll cvx 3 [/pop cvx]cvx /repeat cvx 1 /exch cvx /sub cvx ]cvx ]def }{ AGMCORE_report_unsupported_color_space AGMCORE_black_plate not { currentdict 0 false AGMCORE_separateShading }if }ifelse }{ currentdict ColorSpace 1 get AGMCORE_IsCurrentColor 0 exch dup not currentoverprint and {/AGMCORE_ignoreshade true def}if AGMCORE_separateShading }ifelse }if currentdict end exch }if dup 0 get /DeviceN eq { exch begin ColorSpace 1 get convert_to_process { ColorSpace 2 get dup type /arraytype eq {0 get}if /DeviceCMYK eq { /ColorSpace [ /DeviceN ColorSpace 1 get /DeviceGray [ ColorSpace 3 get /exec cvx 4 AGMCORE_plate_ndx sub -1 /roll cvx 4 1 /roll cvx 3 [/pop cvx]cvx /repeat cvx 1 /exch cvx /sub cvx ]cvx ]def }{ AGMCORE_report_unsupported_color_space AGMCORE_black_plate not { currentdict 0 false AGMCORE_separateShading /ColorSpace [/DeviceGray] def }if }ifelse }{ currentdict false -1 ColorSpace 1 get { AGMCORE_IsCurrentColor { 1 add exch pop true exch exit }if 1 add }forall exch dup not currentoverprint and {/AGMCORE_ignoreshade true def}if AGMCORE_separateShading }ifelse currentdict end exch }if dup 0 get dup /DeviceCMYK eq exch dup /Separation eq exch /DeviceN eq or or not { exch begin ColorSpace dup type /arraytype eq {0 get}if /DeviceGray ne { AGMCORE_report_unsupported_color_space AGMCORE_black_plate not { ColorSpace 0 get /CIEBasedA eq { /ColorSpace [/Separation /_ciebaseda_ /DeviceGray {}] def }if ColorSpace 0 get dup /CIEBasedABC eq exch dup /CIEBasedDEF eq exch /DeviceRGB eq or or { /ColorSpace [/DeviceN [/_red_ /_green_ /_blue_] /DeviceRGB {}] def }if ColorSpace 0 get /CIEBasedDEFG eq { /ColorSpace [/DeviceN [/_cyan_ /_magenta_ /_yellow_ /_black_] /DeviceCMYK {}] def }if currentdict 0 false AGMCORE_separateShading }if }if currentdict end exch }if pop dup /AGMCORE_ignoreshade known { begin /ColorSpace [/Separation (None) /DeviceGray {}] def currentdict end }if }def /shfill { AGMCORE_separateShadingDict dup /AGMCORE_ignoreshade known {pop} {AGMCORE_&sysshfill}ifelse }def /makepattern { exch dup /PatternType get 2 eq { clonedict begin /Shading Shading AGMCORE_separateShadingDict def Shading /AGMCORE_ignoreshade known currentdict end exch {pop <</PatternType 1/PaintProc{pop}/BBox[0 0 1 1]/XStep 1/YStep 1/PaintType 1/TilingType 3>>}if exch AGMCORE_&sysmakepattern }{ exch AGMCORE_&usrmakepattern }ifelse }def }if }if AGMCORE_in_rip_sep{ /setcustomcolor { exch aload pop dup 7 1 roll inRip_spot_has_ink not { 4 {4 index mul 4 1 roll} repeat /DeviceCMYK setcolorspace 6 -2 roll pop pop }{ //Adobe_AGM_Core begin /AGMCORE_k xdf /AGMCORE_y xdf /AGMCORE_m xdf /AGMCORE_c xdf end [/Separation 4 -1 roll /DeviceCMYK {dup AGMCORE_c mul exch dup AGMCORE_m mul exch dup AGMCORE_y mul exch AGMCORE_k mul} ] setcolorspace }ifelse setcolor }ndf /setseparationgray { [/Separation (All) /DeviceGray {}] setcolorspace_opt 1 exch sub setcolor }ndf }{ /setseparationgray { AGMCORE_&setgray }ndf }ifelse /findcmykcustomcolor { 5 makereadonlyarray }ndf /setcustomcolor { exch aload pop pop 4 {4 index mul 4 1 roll} repeat setcmykcolor pop }ndf /has_color /colorimage where{ AGMCORE_producing_seps{ pop true }{ systemdict eq }ifelse }{ false }ifelse def /map_index { 1 index mul exch getinterval {255 div} forall } bdf /map_indexed_devn { Lookup Names length 3 -1 roll cvi map_index } bdf /n_color_components { base_colorspace_type dup /DeviceGray eq{ pop 1 }{ /DeviceCMYK eq{ 4 }{ 3 }ifelse }ifelse }bdf level2{ /mo /moveto ldf /li /lineto ldf /cv /curveto ldf /knockout_unitsq { 1 setgray 0 0 1 1 rectfill }def level2 /setcolorspace AGMCORE_key_known not and{ /AGMCORE_&&&setcolorspace /setcolorspace ldf /AGMCORE_ReplaceMappedColor { dup type dup /arraytype eq exch /packedarraytype eq or { /AGMCORE_SpotAliasAry2 where { begin dup 0 get dup /Separation eq { pop dup length array copy dup dup 1 get current_spot_alias { dup map_alias { false set_spot_alias dup 1 exch setsepcolorspace true set_spot_alias begin /sep_colorspace_dict currentdict AGMCORE_gput pop pop pop [ /Separation Name CSA map_csa MappedCSA /sep_colorspace_proc load ] dup Name end }if }if map_reserved_ink_name 1 xpt }{ /DeviceN eq { dup length array copy dup dup 1 get [ exch { current_spot_alias{ dup map_alias{ /Name get exch pop }if }if map_reserved_ink_name } forall ] 1 xpt }if }ifelse end } if }if }def /setcolorspace { dup type dup /arraytype eq exch /packedarraytype eq or { dup 0 get /Indexed eq { AGMCORE_distilling { /PhotoshopDuotoneList where { pop false }{ true }ifelse }{ true }ifelse { aload pop 3 -1 roll AGMCORE_ReplaceMappedColor 3 1 roll 4 array astore }if }{ AGMCORE_ReplaceMappedColor }ifelse }if DeviceN_PS2_inRip_seps {AGMCORE_&&&setcolorspace} if }def }if }{ /adj { currentstrokeadjust{ transform 0.25 sub round 0.25 add exch 0.25 sub round 0.25 add exch itransform }if }def /mo{ adj moveto }def /li{ adj lineto }def /cv{ 6 2 roll adj 6 2 roll adj 6 2 roll adj curveto }def /knockout_unitsq { 1 setgray 8 8 1 [8 0 0 8 0 0] {<ffffffffffffffff>} image }def /currentstrokeadjust{ /currentstrokeadjust AGMCORE_gget }def /setstrokeadjust{ /currentstrokeadjust exch AGMCORE_gput }def /setcolorspace { /currentcolorspace exch AGMCORE_gput } def /currentcolorspace { /currentcolorspace AGMCORE_gget } def /setcolor_devicecolor { base_colorspace_type dup /DeviceGray eq{ pop setgray }{ /DeviceCMYK eq{ setcmykcolor }{ setrgbcolor }ifelse }ifelse }def /setcolor { currentcolorspace 0 get dup /DeviceGray ne{ dup /DeviceCMYK ne{ dup /DeviceRGB ne{ dup /Separation eq{ pop currentcolorspace 3 get exec currentcolorspace 2 get }{ dup /Indexed eq{ pop currentcolorspace 3 get dup type /stringtype eq{ currentcolorspace 1 get n_color_components 3 -1 roll map_index }{ exec }ifelse currentcolorspace 1 get }{ /AGMCORE_cur_err /AGMCORE_invalid_color_space def AGMCORE_invalid_color_space }ifelse }ifelse }if }if }if setcolor_devicecolor } def }ifelse /sop /setoverprint ldf /lw /setlinewidth ldf /lc /setlinecap ldf /lj /setlinejoin ldf /ml /setmiterlimit ldf /dsh /setdash ldf /sadj /setstrokeadjust ldf /gry /setgray ldf /rgb /setrgbcolor ldf /cmyk /setcmykcolor ldf /sep /setsepcolor ldf /devn /setdevicencolor ldf /idx /setindexedcolor ldf /colr /setcolor ldf /csacrd /set_csa_crd ldf /sepcs /setsepcolorspace ldf /devncs /setdevicencolorspace ldf /idxcs /setindexedcolorspace ldf /cp /closepath ldf /clp /clp_npth ldf /eclp /eoclp_npth ldf /f /fill ldf /ef /eofill ldf /@ /stroke ldf /nclp /npth_clp ldf /gset /graphic_setup ldf /gcln /graphic_cleanup ldf /AGMCORE_def_ht currenthalftone def /clonedict Adobe_AGM_Utils begin /clonedict load end def /clonearray Adobe_AGM_Utils begin /clonearray load end def currentdict{ dup xcheck 1 index type dup /arraytype eq exch /packedarraytype eq or and { bind }if def }forall /getrampcolor { /indx exch def 0 1 NumComp 1 sub { dup Samples exch get dup type /stringtype eq {indx get} if exch Scaling exch get aload pop 3 1 roll mul add } for ColorSpaceFamily /Separation eq {sep} { ColorSpaceFamily /DeviceN eq {devn} {setcolor}ifelse }ifelse } bdf /sssetbackground {aload pop setcolor} bdf /RadialShade { 40 dict begin /ColorSpaceFamily xdf /background xdf /ext1 xdf /ext0 xdf /BBox xdf /r2 xdf /c2y xdf /c2x xdf /r1 xdf /c1y xdf /c1x xdf /rampdict xdf /setinkoverprint where {pop /setinkoverprint{pop}def}if gsave BBox length 0 gt { newpath BBox 0 get BBox 1 get moveto BBox 2 get BBox 0 get sub 0 rlineto 0 BBox 3 get BBox 1 get sub rlineto BBox 2 get BBox 0 get sub neg 0 rlineto closepath clip newpath } if c1x c2x eq { c1y c2y lt {/theta 90 def}{/theta 270 def} ifelse } { /slope c2y c1y sub c2x c1x sub div def /theta slope 1 atan def c2x c1x lt c2y c1y ge and { /theta theta 180 sub def} if c2x c1x lt c2y c1y lt and { /theta theta 180 add def} if } ifelse gsave clippath c1x c1y translate theta rotate -90 rotate { pathbbox } stopped { 0 0 0 0 } if /yMax xdf /xMax xdf /yMin xdf /xMin xdf grestore xMax xMin eq yMax yMin eq or { grestore end } { /max { 2 copy gt { pop } {exch pop} ifelse } bdf /min { 2 copy lt { pop } {exch pop} ifelse } bdf rampdict begin 40 dict begin background length 0 gt { background sssetbackground gsave clippath fill grestore } if gsave c1x c1y translate theta rotate -90 rotate /c2y c1x c2x sub dup mul c1y c2y sub dup mul add sqrt def /c1y 0 def /c1x 0 def /c2x 0 def ext0 { 0 getrampcolor c2y r2 add r1 sub 0.0001 lt { c1x c1y r1 360 0 arcn pathbbox /aymax exch def /axmax exch def /aymin exch def /axmin exch def /bxMin xMin axmin min def /byMin yMin aymin min def /bxMax xMax axmax max def /byMax yMax aymax max def bxMin byMin moveto bxMax byMin lineto bxMax byMax lineto bxMin byMax lineto bxMin byMin lineto eofill } { c2y r1 add r2 le { c1x c1y r1 0 360 arc fill } { c2x c2y r2 0 360 arc fill r1 r2 eq { /p1x r1 neg def /p1y c1y def /p2x r1 def /p2y c1y def p1x p1y moveto p2x p2y lineto p2x yMin lineto p1x yMin lineto fill } { /AA r2 r1 sub c2y div def AA -1 eq { /theta 89.99 def} { /theta AA 1 AA dup mul sub sqrt div 1 atan def} ifelse /SS1 90 theta add dup sin exch cos div def /p1x r1 SS1 SS1 mul SS1 SS1 mul 1 add div sqrt mul neg def /p1y p1x SS1 div neg def /SS2 90 theta sub dup sin exch cos div def /p2x r1 SS2 SS2 mul SS2 SS2 mul 1 add div sqrt mul def /p2y p2x SS2 div neg def r1 r2 gt { /L1maxX p1x yMin p1y sub SS1 div add def /L2maxX p2x yMin p2y sub SS2 div add def } { /L1maxX 0 def /L2maxX 0 def } ifelse p1x p1y moveto p2x p2y lineto L2maxX L2maxX p2x sub SS2 mul p2y add lineto L1maxX L1maxX p1x sub SS1 mul p1y add lineto fill } ifelse } ifelse } ifelse } if c1x c2x sub dup mul c1y c2y sub dup mul add 0.5 exp 0 dtransform dup mul exch dup mul add 0.5 exp 72 div 0 72 matrix defaultmatrix dtransform dup mul exch dup mul add sqrt 72 0 matrix defaultmatrix dtransform dup mul exch dup mul add sqrt 1 index 1 index lt { exch } if pop /hires xdf hires mul /numpix xdf /numsteps NumSamples def /rampIndxInc 1 def /subsampling false def numpix 0 ne { NumSamples numpix div 0.5 gt { /numsteps numpix 2 div round cvi dup 1 le { pop 2 } if def /rampIndxInc NumSamples 1 sub numsteps div def /subsampling true def } if } if /xInc c2x c1x sub numsteps div def /yInc c2y c1y sub numsteps div def /rInc r2 r1 sub numsteps div def /cx c1x def /cy c1y def /radius r1 def newpath xInc 0 eq yInc 0 eq rInc 0 eq and and { 0 getrampcolor cx cy radius 0 360 arc stroke NumSamples 1 sub getrampcolor cx cy radius 72 hires div add 0 360 arc 0 setlinewidth stroke } { 0 numsteps { dup subsampling { round cvi } if getrampcolor cx cy radius 0 360 arc /cx cx xInc add def /cy cy yInc add def /radius radius rInc add def cx cy radius 360 0 arcn eofill rampIndxInc add } repeat pop } ifelse ext1 { c2y r2 add r1 lt { c2x c2y r2 0 360 arc fill } { c2y r1 add r2 sub 0.0001 le { c2x c2y r2 360 0 arcn pathbbox /aymax exch def /axmax exch def /aymin exch def /axmin exch def /bxMin xMin axmin min def /byMin yMin aymin min def /bxMax xMax axmax max def /byMax yMax aymax max def bxMin byMin moveto bxMax byMin lineto bxMax byMax lineto bxMin byMax lineto bxMin byMin lineto eofill } { c2x c2y r2 0 360 arc fill r1 r2 eq { /p1x r2 neg def /p1y c2y def /p2x r2 def /p2y c2y def p1x p1y moveto p2x p2y lineto p2x yMax lineto p1x yMax lineto fill } { /AA r2 r1 sub c2y div def AA -1 eq { /theta 89.99 def} { /theta AA 1 AA dup mul sub sqrt div 1 atan def} ifelse /SS1 90 theta add dup sin exch cos div def /p1x r2 SS1 SS1 mul SS1 SS1 mul 1 add div sqrt mul neg def /p1y c2y p1x SS1 div sub def /SS2 90 theta sub dup sin exch cos div def /p2x r2 SS2 SS2 mul SS2 SS2 mul 1 add div sqrt mul def /p2y c2y p2x SS2 div sub def r1 r2 lt { /L1maxX p1x yMax p1y sub SS1 div add def /L2maxX p2x yMax p2y sub SS2 div add def } { /L1maxX 0 def /L2maxX 0 def }ifelse p1x p1y moveto p2x p2y lineto L2maxX L2maxX p2x sub SS2 mul p2y add lineto L1maxX L1maxX p1x sub SS1 mul p1y add lineto fill } ifelse } ifelse } ifelse } if grestore grestore end end end } ifelse } bdf /GenStrips { 40 dict begin /ColorSpaceFamily xdf /background xdf /ext1 xdf /ext0 xdf /BBox xdf /y2 xdf /x2 xdf /y1 xdf /x1 xdf /rampdict xdf /setinkoverprint where {pop /setinkoverprint{pop}def}if gsave BBox length 0 gt { newpath BBox 0 get BBox 1 get moveto BBox 2 get BBox 0 get sub 0 rlineto 0 BBox 3 get BBox 1 get sub rlineto BBox 2 get BBox 0 get sub neg 0 rlineto closepath clip newpath } if x1 x2 eq { y1 y2 lt {/theta 90 def}{/theta 270 def} ifelse } { /slope y2 y1 sub x2 x1 sub div def /theta slope 1 atan def x2 x1 lt y2 y1 ge and { /theta theta 180 sub def} if x2 x1 lt y2 y1 lt and { /theta theta 180 add def} if } ifelse gsave clippath x1 y1 translate theta rotate { pathbbox } stopped { 0 0 0 0 } if /yMax exch def /xMax exch def /yMin exch def /xMin exch def grestore xMax xMin eq yMax yMin eq or { grestore end } { rampdict begin 20 dict begin background length 0 gt { background sssetbackground gsave clippath fill grestore } if gsave x1 y1 translate theta rotate /xStart 0 def /xEnd x2 x1 sub dup mul y2 y1 sub dup mul add 0.5 exp def /ySpan yMax yMin sub def /numsteps NumSamples def /rampIndxInc 1 def /subsampling false def xStart 0 transform xEnd 0 transform 3 -1 roll sub dup mul 3 1 roll sub dup mul add 0.5 exp 72 div 0 72 matrix defaultmatrix dtransform dup mul exch dup mul add sqrt 72 0 matrix defaultmatrix dtransform dup mul exch dup mul add sqrt 1 index 1 index lt { exch } if pop mul /numpix xdf numpix 0 ne { NumSamples numpix div 0.5 gt { /numsteps numpix 2 div round cvi dup 1 le { pop 2 } if def /rampIndxInc NumSamples 1 sub numsteps div def /subsampling true def } if } if ext0 { 0 getrampcolor xMin xStart lt { xMin yMin xMin neg ySpan rectfill } if } if /xInc xEnd xStart sub numsteps div def /x xStart def 0 numsteps { dup subsampling { round cvi } if getrampcolor x yMin xInc ySpan rectfill /x x xInc add def rampIndxInc add } repeat pop ext1 { xMax xEnd gt { xEnd yMin xMax xEnd sub ySpan rectfill } if } if grestore grestore end end end } ifelse } bdf }def /page_trailer { end }def /doc_trailer{ }def /capture_currentpagedevice { //Adobe_AGM_Core/AGMCORE_currentpagedevice currentpagedevice ddf } def systemdict /findcolorrendering known{ /findcolorrendering systemdict /findcolorrendering get def }if systemdict /setcolorrendering known{ /setcolorrendering systemdict /setcolorrendering get def }if /test_cmyk_color_plate { gsave setcmykcolor currentgray 1 ne grestore }def /inRip_spot_has_ink { dup //Adobe_AGM_Core/AGMCORE_name xddf convert_spot_to_process not }def /map255_to_range { 1 index sub 3 -1 roll 255 div mul add }def /set_csa_crd { /sep_colorspace_dict null AGMCORE_gput begin CSA get_csa_by_name setcolorspace_opt set_crd end } def /map_csa { currentdict/MappedCSA known{MappedCSA null ne}{false}ifelse {pop}{get_csa_by_name /MappedCSA xdf}ifelse } def /setsepcolor { /sep_colorspace_dict AGMCORE_gget begin dup /sep_tint exch AGMCORE_gput TintProc end } def /setdevicencolor { /devicen_colorspace_dict AGMCORE_gget begin Names length copy Names length 1 sub -1 0 { /devicen_tints AGMCORE_gget 3 1 roll xpt } for TintProc end } def /sep_colorspace_proc { /AGMCORE_tmp exch store /sep_colorspace_dict AGMCORE_gget begin currentdict/Components known{ Components aload pop TintMethod/Lab eq{ 2 {AGMCORE_tmp mul NComponents 1 roll} repeat LMax sub AGMCORE_tmp mul LMax add NComponents 1 roll }{ TintMethod/Subtractive eq{ NComponents{ AGMCORE_tmp mul NComponents 1 roll }repeat }{ NComponents{ 1 sub AGMCORE_tmp mul 1 add NComponents 1 roll } repeat }ifelse }ifelse }{ ColorLookup AGMCORE_tmp ColorLookup length 1 sub mul round cvi get aload pop }ifelse end } def /sep_colorspace_gray_proc { /AGMCORE_tmp exch store /sep_colorspace_dict AGMCORE_gget begin GrayLookup AGMCORE_tmp GrayLookup length 1 sub mul round cvi get end } def /sep_proc_name { dup 0 get dup /DeviceRGB eq exch /DeviceCMYK eq or level2 not and has_color not and{ pop [/DeviceGray] /sep_colorspace_gray_proc }{ /sep_colorspace_proc }ifelse } def /setsepcolorspace { current_spot_alias{ dup begin Name map_alias{ exch pop }if end }if dup /sep_colorspace_dict exch AGMCORE_gput begin CSA map_csa /AGMCORE_sep_special Name dup () eq exch (All) eq or store AGMCORE_avoid_L2_sep_space{ [/Indexed MappedCSA sep_proc_name 255 exch { 255 div } /exec cvx 3 -1 roll [ 4 1 roll load /exec cvx ] cvx ] setcolorspace_opt /TintProc { 255 mul round cvi setcolor }bdf }{ MappedCSA 0 get /DeviceCMYK eq currentdict/Components known and AGMCORE_sep_special not and{ /TintProc [ Components aload pop Name findcmykcustomcolor /exch cvx /setcustomcolor cvx ] cvx bdf }{ AGMCORE_host_sep Name (All) eq and{ /TintProc { 1 exch sub setseparationgray }bdf }{ AGMCORE_in_rip_sep MappedCSA 0 get /DeviceCMYK eq and AGMCORE_host_sep or Name () eq and{ /TintProc [ MappedCSA sep_proc_name exch 0 get /DeviceCMYK eq{ cvx /setcmykcolor cvx }{ cvx /setgray cvx }ifelse ] cvx bdf }{ AGMCORE_producing_seps MappedCSA 0 get dup /DeviceCMYK eq exch /DeviceGray eq or and AGMCORE_sep_special not and{ /TintProc [ /dup cvx MappedCSA sep_proc_name cvx exch 0 get /DeviceGray eq{ 1 /exch cvx /sub cvx 0 0 0 4 -1 /roll cvx }if /Name cvx /findcmykcustomcolor cvx /exch cvx AGMCORE_host_sep{ AGMCORE_is_cmyk_sep /Name cvx /AGMCORE_IsSeparationAProcessColor load /exec cvx /not cvx /and cvx }{ Name inRip_spot_has_ink not }ifelse [ /pop cvx 1 ] cvx /if cvx /setcustomcolor cvx ] cvx bdf }{ /TintProc {setcolor} bdf [/Separation Name MappedCSA sep_proc_name load ] setcolorspace_opt }ifelse }ifelse }ifelse }ifelse }ifelse set_crd setsepcolor end } def /additive_blend { 3 dict begin /numarrays xdf /numcolors xdf 0 1 numcolors 1 sub { /c1 xdf 1 0 1 numarrays 1 sub { 1 exch add /index cvx c1 /get cvx /mul cvx }for numarrays 1 add 1 /roll cvx }for numarrays [/pop cvx] cvx /repeat cvx end }def /subtractive_blend { 3 dict begin /numarrays xdf /numcolors xdf 0 1 numcolors 1 sub { /c1 xdf 1 1 0 1 numarrays 1 sub { 1 3 3 -1 roll add /index cvx c1 /get cvx /sub cvx /mul cvx }for /sub cvx numarrays 1 add 1 /roll cvx }for numarrays [/pop cvx] cvx /repeat cvx end }def /exec_tint_transform { /TintProc [ /TintTransform cvx /setcolor cvx ] cvx bdf MappedCSA setcolorspace_opt } bdf /devn_makecustomcolor { 2 dict begin /names_index xdf /Names xdf 1 1 1 1 Names names_index get findcmykcustomcolor /devicen_tints AGMCORE_gget names_index get setcustomcolor Names length {pop} repeat end } bdf /setdevicencolorspace { dup /AliasedColorants known {false}{true}ifelse current_spot_alias and { 7 dict begin /names_index 0 def dup /names_len exch /Names get length def /new_names names_len array def /new_LookupTables names_len array def /alias_cnt 0 def dup /Names get { dup map_alias { exch pop dup /ColorLookup known { dup begin new_LookupTables names_index ColorLookup put end }{ dup /Components known { dup begin new_LookupTables names_index Components put end }{ dup begin new_LookupTables names_index [null null null null] put end } ifelse } ifelse new_names names_index 3 -1 roll /Name get put /alias_cnt alias_cnt 1 add def }{ /name xdf new_names names_index name put dup /LookupTables known { dup begin new_LookupTables names_index LookupTables names_index get put end }{ dup begin new_LookupTables names_index [null null null null] put end } ifelse } ifelse /names_index names_index 1 add def } forall alias_cnt 0 gt { /AliasedColorants true def /lut_entry_len new_LookupTables 0 get dup length 256 ge {0 get length}{length}ifelse def 0 1 names_len 1 sub { /names_index xdf new_LookupTables names_index get dup length 256 ge {0 get length}{length}ifelse lut_entry_len ne { /AliasedColorants false def exit } { new_LookupTables names_index get 0 get null eq { dup /Names get names_index get /name xdf name (Cyan) eq name (Magenta) eq name (Yellow) eq name (Black) eq or or or not { /AliasedColorants false def exit } if } if } ifelse } for lut_entry_len 1 eq { /AliasedColorants false def } if AliasedColorants { dup begin /Names new_names def /LookupTables new_LookupTables def /AliasedColorants true def /NComponents lut_entry_len def /TintMethod NComponents 4 eq {/Subtractive}{/Additive}ifelse def /MappedCSA TintMethod /Additive eq {/DeviceRGB}{/DeviceCMYK}ifelse def currentdict /TTTablesIdx known not { /TTTablesIdx -1 def } if end } if }if end } if dup /devicen_colorspace_dict exch AGMCORE_gput begin currentdict /AliasedColorants known { AliasedColorants }{ false } ifelse dup not { CSA map_csa } if /TintTransform load type /nulltype eq or { /TintTransform [ 0 1 Names length 1 sub { /TTTablesIdx TTTablesIdx 1 add def dup LookupTables exch get dup 0 get null eq { 1 index Names exch get dup (Cyan) eq { pop exch LookupTables length exch sub /index cvx 0 0 0 } { dup (Magenta) eq { pop exch LookupTables length exch sub /index cvx 0 /exch cvx 0 0 } { (Yellow) eq { exch LookupTables length exch sub /index cvx 0 0 3 -1 /roll cvx 0 } { exch LookupTables length exch sub /index cvx 0 0 0 4 -1 /roll cvx } ifelse } ifelse } ifelse 5 -1 /roll cvx /astore cvx } { dup length 1 sub LookupTables length 4 -1 roll sub 1 add /index cvx /mul cvx /round cvx /cvi cvx /get cvx } ifelse Names length TTTablesIdx add 1 add 1 /roll cvx } for Names length [/pop cvx] cvx /repeat cvx NComponents Names length TintMethod /Subtractive eq { subtractive_blend } { additive_blend } ifelse ] cvx bdf } if AGMCORE_host_sep { Names convert_to_process { exec_tint_transform } { currentdict /AliasedColorants known { AliasedColorants not }{ false } ifelse 5 dict begin /AvoidAliasedColorants xdf /painted? false def /names_index 0 def /names_len Names length def AvoidAliasedColorants { /currentspotalias current_spot_alias def false set_spot_alias } if Names { AGMCORE_is_cmyk_sep { dup (Cyan) eq AGMCORE_cyan_plate and exch dup (Magenta) eq AGMCORE_magenta_plate and exch dup (Yellow) eq AGMCORE_yellow_plate and exch (Black) eq AGMCORE_black_plate and or or or { /devicen_colorspace_dict AGMCORE_gget /TintProc [ Names names_index /devn_makecustomcolor cvx ] cvx ddf /painted? true def } if painted? {exit} if }{ 0 0 0 0 5 -1 roll findcmykcustomcolor 1 setcustomcolor currentgray 0 eq { /devicen_colorspace_dict AGMCORE_gget /TintProc [ Names names_index /devn_makecustomcolor cvx ] cvx ddf /painted? true def exit } if } ifelse /names_index names_index 1 add def } forall AvoidAliasedColorants { currentspotalias set_spot_alias } if painted? { /devicen_colorspace_dict AGMCORE_gget /names_index names_index put }{ /devicen_colorspace_dict AGMCORE_gget /TintProc [ names_len [/pop cvx] cvx /repeat cvx 1 /setseparationgray cvx 0 0 0 0 /setcmykcolor cvx ] cvx ddf } ifelse end } ifelse } { AGMCORE_in_rip_sep { Names convert_to_process not }{ level3 } ifelse { [/DeviceN Names MappedCSA /TintTransform load] setcolorspace_opt /TintProc level3 not AGMCORE_in_rip_sep and { [ Names /length cvx [/pop cvx] cvx /repeat cvx ] cvx bdf }{ {setcolor} bdf } ifelse }{ exec_tint_transform } ifelse } ifelse set_crd /AliasedColorants false def end } def /setindexedcolorspace { dup /indexed_colorspace_dict exch AGMCORE_gput begin currentdict /CSDBase known { CSDBase /CSD get_res begin currentdict /Names known { currentdict devncs }{ 1 currentdict sepcs } ifelse AGMCORE_host_sep{ 4 dict begin /compCnt /Names where {pop Names length}{1}ifelse def /NewLookup HiVal 1 add string def 0 1 HiVal { /tableIndex xdf Lookup dup type /stringtype eq { compCnt tableIndex map_index }{ exec } ifelse /Names where { pop setdevicencolor }{ setsepcolor } ifelse currentgray tableIndex exch HiVal mul cvi NewLookup 3 1 roll put } for [/Indexed currentcolorspace HiVal NewLookup] setcolorspace_opt end }{ level3 { currentdict /Names known { [/Indexed [/DeviceN Names MappedCSA /TintTransform load] HiVal Lookup] setcolorspace_opt }{ [/Indexed [/Separation Name MappedCSA sep_proc_name load] HiVal Lookup] setcolorspace_opt } ifelse }{ [/Indexed MappedCSA HiVal [ currentdict /Names known { Lookup dup type /stringtype eq {/exch cvx CSDBase /CSD get_res /Names get length dup /mul cvx exch /getinterval cvx {255 div} /forall cvx} {/exec cvx}ifelse /TintTransform load /exec cvx }{ Lookup dup type /stringtype eq {/exch cvx /get cvx 255 /div cvx} {/exec cvx}ifelse CSDBase /CSD get_res /MappedCSA get sep_proc_name exch pop /load cvx /exec cvx } ifelse ]cvx ]setcolorspace_opt }ifelse } ifelse end set_crd } { CSA map_csa AGMCORE_host_sep level2 not and{ 0 0 0 0 setcmykcolor }{ [/Indexed MappedCSA level2 not has_color not and{ dup 0 get dup /DeviceRGB eq exch /DeviceCMYK eq or{ pop [/DeviceGray] }if HiVal GrayLookup }{ HiVal currentdict/RangeArray known{ { /indexed_colorspace_dict AGMCORE_gget begin Lookup exch dup HiVal gt{ pop HiVal }if NComponents mul NComponents getinterval {} forall NComponents 1 sub -1 0{ RangeArray exch 2 mul 2 getinterval aload pop map255_to_range NComponents 1 roll }for end } bind }{ Lookup }ifelse }ifelse ] setcolorspace_opt set_crd }ifelse }ifelse end }def /setindexedcolor { AGMCORE_host_sep { /indexed_colorspace_dict AGMCORE_gget dup /CSDBase known { begin CSDBase /CSD get_res begin currentdict /Names known{ map_indexed_devn devn } { Lookup 1 3 -1 roll map_index sep }ifelse end end }{ /Lookup get 4 3 -1 roll map_index setcmykcolor } ifelse }{ level3 not AGMCORE_in_rip_sep and /indexed_colorspace_dict AGMCORE_gget /CSDBase known and { /indexed_colorspace_dict AGMCORE_gget /CSDBase get /CSD get_res begin map_indexed_devn devn end } { setcolor } ifelse }ifelse } def /ignoreimagedata { currentoverprint not{ gsave dup clonedict begin 1 setgray /Decode [0 1] def /DataSource <FF> def /MultipleDataSources false def /BitsPerComponent 8 def currentdict end systemdict /image get exec grestore }if consumeimagedata }def /add_res { dup /CSD eq { pop //Adobe_AGM_Core begin /AGMCORE_CSD_cache load 3 1 roll put end }{ defineresource pop } ifelse }def /del_res { { aload pop exch dup /CSD eq { pop { //Adobe_AGM_Core/AGMCORE_CSD_cache get exch undef }forall }{ exch { 1 index undefineresource }forall pop } ifelse } forall }def /get_res { dup /CSD eq { pop dup type dup /nametype eq exch /stringtype eq or { AGMCORE_CSD_cache exch get } if }{ findresource } ifelse }def /get_csa_by_name { dup type dup /nametype eq exch /stringtype eq or{ /CSA get_res } if }def /pattern_buf_init { /count get 0 0 put } def /pattern_buf_next { dup /count get dup 0 get dup 3 1 roll 1 add 0 xpt get } def /cachepattern_compress { 5 dict begin currentfile exch 0 exch /SubFileDecode filter /ReadFilter exch def /patarray 20 dict def /string_size 16000 def /readbuffer string_size string def currentglobal true setglobal patarray 1 array dup 0 1 put /count xpt setglobal /LZWFilter { exch dup length 0 eq { pop }{ patarray dup length 1 sub 3 -1 roll put } ifelse {string_size}{0}ifelse string } /LZWEncode filter def { ReadFilter readbuffer readstring exch LZWFilter exch writestring not {exit} if } loop LZWFilter closefile patarray end }def /cachepattern { 2 dict begin currentfile exch 0 exch /SubFileDecode filter /ReadFilter exch def /patarray 20 dict def currentglobal true setglobal patarray 1 array dup 0 1 put /count xpt setglobal { ReadFilter 16000 string readstring exch patarray dup length 1 sub 3 -1 roll put not {exit} if } loop patarray dup dup length 1 sub () put end }def /wrap_paintproc { statusdict /currentfilenameextend known{ clonedict begin /OldPaintProc /PaintProc load def /PaintProc { mark exch dup /OldPaintProc get stopped {closefile restore end} if cleartomark } def end } {pop} ifelse } def /make_pattern { exch clonedict exch dup matrix currentmatrix matrix concatmatrix 0 0 3 2 roll itransform exch 3 index /XStep get 1 index exch 2 copy div cvi mul sub sub exch 3 index /YStep get 1 index exch 2 copy div cvi mul sub sub matrix translate exch matrix concatmatrix 1 index begin BBox 0 get XStep div cvi XStep mul /xshift exch neg def BBox 1 get YStep div cvi YStep mul /yshift exch neg def BBox 0 get xshift add BBox 1 get yshift add BBox 2 get xshift add BBox 3 get yshift add 4 array astore /BBox exch def [ xshift yshift /translate load null /exec load ] dup 3 /PaintProc load put cvx /PaintProc exch def end 1 index dup /ID get exch /Pattern add_res gsave 0 setgray makepattern grestore }def /set_pattern { dup /PatternType get 1 eq{ dup /PaintType get 1 eq{ currentoverprint sop [/DeviceGray] setcolorspace 0 setgray }if }if setpattern }def /setcolorspace_opt { dup currentcolorspace eq{ pop }{ setcolorspace }ifelse }def /updatecolorrendering { currentcolorrendering/RenderingIntent known{ currentcolorrendering/RenderingIntent get }{null}ifelse Intent ne { Intent /ColorRendering {findresource} stopped { pop pop systemdict /findcolorrendering known { Intent findcolorrendering pop /ColorRendering findresource true } {false} ifelse } {true} ifelse { dup begin currentdict /TransformPQR known { currentdict /TransformPQR get aload pop 3 {{} eq 3 1 roll} repeat or or } {true} ifelse currentdict /MatrixPQR known { currentdict /MatrixPQR get aload pop 1.0 eq 9 1 roll 0.0 eq 9 1 roll 0.0 eq 9 1 roll 0.0 eq 9 1 roll 1.0 eq 9 1 roll 0.0 eq 9 1 roll 0.0 eq 9 1 roll 0.0 eq 9 1 roll 1.0 eq and and and and and and and and } {true} ifelse end or { clonedict begin /TransformPQR [ {4 -1 roll 3 get dup 3 1 roll sub 5 -1 roll 3 get 3 -1 roll sub div 3 -1 roll 3 get 3 -1 roll 3 get dup 4 1 roll sub mul add} bind {4 -1 roll 4 get dup 3 1 roll sub 5 -1 roll 4 get 3 -1 roll sub div 3 -1 roll 4 get 3 -1 roll 4 get dup 4 1 roll sub mul add} bind {4 -1 roll 5 get dup 3 1 roll sub 5 -1 roll 5 get 3 -1 roll sub div 3 -1 roll 5 get 3 -1 roll 5 get dup 4 1 roll sub mul add} bind ] def /MatrixPQR [ 0.8951 -0.7502 0.0389 0.2664 1.7135 -0.0685 -0.1614 0.0367 1.0296 ] def /RangePQR [-0.3227950745 2.3229645538 -1.5003771057 3.5003465881 -0.1369979095 2.136967392] def currentdict end } if setcolorrendering_opt } if }if } def /set_crd { AGMCORE_host_sep not level2 and{ currentdict /ColorRendering known{ ColorRendering /ColorRendering {findresource} stopped not {setcolorrendering_opt} if }{ currentdict/Intent known{ updatecolorrendering }if }ifelse currentcolorspace dup type /arraytype eq {0 get}if /DeviceRGB eq { currentdict/UCR known {/UCR}{/AGMCORE_currentucr}ifelse load setundercolorremoval currentdict/BG known {/BG}{/AGMCORE_currentbg}ifelse load setblackgeneration }if }if }def /setcolorrendering_opt { dup currentcolorrendering eq{ pop }{ clonedict begin /Intent Intent def currentdict end setcolorrendering }ifelse }def /cpaint_gcomp { convert_to_process //Adobe_AGM_Core/AGMCORE_ConvertToProcess xddf //Adobe_AGM_Core/AGMCORE_ConvertToProcess get not { (%end_cpaint_gcomp) flushinput }if }def /cpaint_gsep { //Adobe_AGM_Core/AGMCORE_ConvertToProcess get { (%end_cpaint_gsep) flushinput }if }def /cpaint_gend { newpath }def /set_spot_alias_ary { dup inherit_aliases //Adobe_AGM_Core/AGMCORE_SpotAliasAry xddf }def /set_spot_normalization_ary { dup inherit_aliases dup length /AGMCORE_SpotAliasAry where{pop AGMCORE_SpotAliasAry length add} if array //Adobe_AGM_Core/AGMCORE_SpotAliasAry2 xddf /AGMCORE_SpotAliasAry where{ pop AGMCORE_SpotAliasAry2 0 AGMCORE_SpotAliasAry putinterval AGMCORE_SpotAliasAry length }{0} ifelse AGMCORE_SpotAliasAry2 3 1 roll exch putinterval true set_spot_alias }def /inherit_aliases { {dup /Name get map_alias {/CSD put}{pop} ifelse} forall }def /set_spot_alias { /AGMCORE_SpotAliasAry2 where{ /AGMCORE_current_spot_alias 3 -1 roll put }{ pop }ifelse }def /current_spot_alias { /AGMCORE_SpotAliasAry2 where{ /AGMCORE_current_spot_alias get }{ false }ifelse }def /map_alias { /AGMCORE_SpotAliasAry2 where{ begin /AGMCORE_name xdf false AGMCORE_SpotAliasAry2{ dup/Name get AGMCORE_name eq{ /CSD get /CSD get_res exch pop true exit }{ pop }ifelse }forall end }{ pop false }ifelse }bdf /spot_alias { true set_spot_alias /AGMCORE_&setcustomcolor AGMCORE_key_known not { //Adobe_AGM_Core/AGMCORE_&setcustomcolor /setcustomcolor load put } if /customcolor_tint 1 AGMCORE_gput //Adobe_AGM_Core begin /setcustomcolor { currentdict/TintProc known currentdict/CSA known and 3 1 roll //Adobe_AGM_Core begin dup /customcolor_tint exch AGMCORE_gput 1 index aload pop pop 1 eq exch 1 eq and exch 1 eq and exch 1 eq and not current_spot_alias and{1 index 4 get map_alias}{false}ifelse { false set_spot_alias 4 -1 roll{ exch pop /sep_tint AGMCORE_gget exch }if mark 3 1 roll setsepcolorspace counttomark 0 ne{ setsepcolor }if pop pop true set_spot_alias }{ AGMCORE_&setcustomcolor pop }ifelse end }bdf end }def /begin_feature { Adobe_AGM_Core/AGMCORE_feature_dictCount countdictstack put count Adobe_AGM_Core/AGMCORE_feature_opCount 3 -1 roll put {Adobe_AGM_Core/AGMCORE_feature_ctm matrix currentmatrix put}if }def /end_feature { 2 dict begin /spd /setpagedevice load def /setpagedevice { get_gstate spd set_gstate } def stopped{$error/newerror false put}if end count Adobe_AGM_Core/AGMCORE_feature_opCount get sub dup 0 gt{{pop}repeat}{pop}ifelse countdictstack Adobe_AGM_Core/AGMCORE_feature_dictCount get sub dup 0 gt{{end}repeat}{pop}ifelse {Adobe_AGM_Core/AGMCORE_feature_ctm get setmatrix}if }def /set_negative { //Adobe_AGM_Core begin /AGMCORE_inverting exch def level2{ currentpagedevice/NegativePrint known{ currentpagedevice/NegativePrint get //Adobe_AGM_Core/AGMCORE_inverting get ne{ true begin_feature true{ << /NegativePrint //Adobe_AGM_Core/AGMCORE_inverting get >> setpagedevice }end_feature }if /AGMCORE_inverting false def }if }if AGMCORE_inverting{ [{1 exch sub}/exec load dup currenttransfer exch]cvx bind settransfer gsave newpath clippath 1 /setseparationgray where{pop setseparationgray}{setgray}ifelse /AGMIRS_&fill where {pop AGMIRS_&fill}{fill} ifelse grestore }if end }def /lw_save_restore_override { /md where { pop md begin initializepage /initializepage{}def /pmSVsetup{} def /endp{}def /pse{}def /psb{}def /orig_showpage where {pop} {/orig_showpage /showpage load def} ifelse /showpage {orig_showpage gR} def end }if }def /pscript_showpage_override { /NTPSOct95 where { begin showpage save /showpage /restore load def /restore {exch pop}def end }if }def /driver_media_override { /md where { pop md /initializepage known { md /initializepage {} put } if md /rC known { md /rC {4{pop}repeat} put } if }if /mysetup where { /mysetup [1 0 0 1 0 0] put }if Adobe_AGM_Core /AGMCORE_Default_CTM matrix currentmatrix put level2 {Adobe_AGM_Core /AGMCORE_Default_PageSize currentpagedevice/PageSize get put}if }def /driver_check_media_override { /PrepsDict where {pop} { Adobe_AGM_Core /AGMCORE_Default_CTM get matrix currentmatrix ne Adobe_AGM_Core /AGMCORE_Default_PageSize get type /arraytype eq { Adobe_AGM_Core /AGMCORE_Default_PageSize get 0 get currentpagedevice/PageSize get 0 get eq and Adobe_AGM_Core /AGMCORE_Default_PageSize get 1 get currentpagedevice/PageSize get 1 get eq and }if { Adobe_AGM_Core /AGMCORE_Default_CTM get setmatrix }if }ifelse }def AGMCORE_err_strings begin /AGMCORE_bad_environ (Environment not satisfactory for this job. Ensure that the PPD is correct or that the PostScript level requested is supported by this printer. ) def /AGMCORE_color_space_onhost_seps (This job contains colors that will not separate with on-host methods. ) def /AGMCORE_invalid_color_space (This job contains an invalid color space. ) def end /set_def_ht { AGMCORE_def_ht sethalftone } def end systemdict /setpacking known { setpacking } if %%EndResource %%BeginResource: procset Adobe_CoolType_Core 2.25 0 %%Copyright: Copyright 1997-2005 Adobe Systems Incorporated. All Rights Reserved. %%Version: 2.25 0 10 dict begin /Adobe_CoolType_Passthru currentdict def /Adobe_CoolType_Core_Defined userdict /Adobe_CoolType_Core known def Adobe_CoolType_Core_Defined { /Adobe_CoolType_Core userdict /Adobe_CoolType_Core get def } if userdict /Adobe_CoolType_Core 60 dict dup begin put /Adobe_CoolType_Version 2.25 def /Level2? systemdict /languagelevel known dup { pop systemdict /languagelevel get 2 ge } if def Level2? not { /currentglobal false def /setglobal /pop load def /gcheck { pop false } bind def /currentpacking false def /setpacking /pop load def /SharedFontDirectory 0 dict def } if currentpacking true setpacking currentglobal false setglobal userdict /Adobe_CoolType_Data 2 copy known not { 2 copy 10 dict put } if get begin /@opStackCountByLevel 32 dict def /@opStackLevel 0 def /@dictStackCountByLevel 32 dict def /@dictStackLevel 0 def end setglobal /@_SaveStackLevels { Adobe_CoolType_Data begin /@vmState currentglobal def false setglobal @opStackCountByLevel @opStackLevel 2 copy known not { 2 copy 3 dict dup /args 7 index 5 add array put put get } { get dup /args get dup length 3 index lt { dup length 5 add array exch 1 index exch 0 exch putinterval 1 index exch /args exch put } { pop } ifelse } ifelse begin count 1 sub 1 index lt { pop count } if dup /argCount exch def dup 0 gt { args exch 0 exch getinterval astore pop } { pop } ifelse count /restCount exch def end /@opStackLevel @opStackLevel 1 add def countdictstack 1 sub @dictStackCountByLevel exch @dictStackLevel exch put /@dictStackLevel @dictStackLevel 1 add def @vmState setglobal end } bind def /@_RestoreStackLevels { Adobe_CoolType_Data begin /@opStackLevel @opStackLevel 1 sub def @opStackCountByLevel @opStackLevel get begin count restCount sub dup 0 gt { { pop } repeat } { pop } ifelse args 0 argCount getinterval {} forall end /@dictStackLevel @dictStackLevel 1 sub def @dictStackCountByLevel @dictStackLevel get end countdictstack exch sub dup 0 gt { { end } repeat } { pop } ifelse } bind def /@_PopStackLevels { Adobe_CoolType_Data begin /@opStackLevel @opStackLevel 1 sub def /@dictStackLevel @dictStackLevel 1 sub def end } bind def /@Raise { exch cvx exch errordict exch get exec stop } bind def /@ReRaise { cvx $error /errorname get errordict exch get exec stop } bind def /@Stopped { 0 @#Stopped } bind def /@#Stopped { @_SaveStackLevels stopped { @_RestoreStackLevels true } { @_PopStackLevels false } ifelse } bind def /@Arg { Adobe_CoolType_Data begin @opStackCountByLevel @opStackLevel 1 sub get begin args exch argCount 1 sub exch sub get end end } bind def currentglobal true setglobal /CTHasResourceForAllBug Level2? { 1 dict dup /@shouldNotDisappearDictValue true def Adobe_CoolType_Data exch /@shouldNotDisappearDict exch put begin count @_SaveStackLevels { (*) { pop stop } 128 string /Category resourceforall } stopped pop @_RestoreStackLevels currentdict Adobe_CoolType_Data /@shouldNotDisappearDict get ne dup { /@shouldNotDisappearDictValue known { { end currentdict 1 index eq { pop exit } if } loop } if } if end } { false } ifelse def true setglobal /CTHasResourceStatusBug Level2? { mark { /steveamerige /Category resourcestatus } stopped { cleartomark true } { cleartomark currentglobal not } ifelse } { false } ifelse def setglobal /CTResourceStatus { mark 3 1 roll /Category findresource begin ({ResourceStatus} stopped) 0 () /SubFileDecode filter cvx exec { cleartomark false } { { 3 2 roll pop true } { cleartomark false } ifelse } ifelse end } bind def /CTWorkAroundBugs { Level2? { /cid_PreLoad /ProcSet resourcestatus { pop pop currentglobal mark { (*) { dup /CMap CTHasResourceStatusBug { CTResourceStatus } { resourcestatus } ifelse { pop dup 0 eq exch 1 eq or { dup /CMap findresource gcheck setglobal /CMap undefineresource } { pop CTHasResourceForAllBug { exit } { stop } ifelse } ifelse } { pop } ifelse } 128 string /CMap resourceforall } stopped { cleartomark } stopped pop setglobal } if } if } bind def /doc_setup { Adobe_CoolType_Core begin CTWorkAroundBugs /mov /moveto load def /nfnt /newencodedfont load def /mfnt /makefont load def /sfnt /setfont load def /ufnt /undefinefont load def /chp /charpath load def /awsh /awidthshow load def /wsh /widthshow load def /ash /ashow load def /sh /show load def end currentglobal false setglobal userdict /Adobe_CoolType_Data 2 copy known not { 2 copy 10 dict put } if get begin /AddWidths? false def /CC 0 def /charcode 2 string def /@opStackCountByLevel 32 dict def /@opStackLevel 0 def /@dictStackCountByLevel 32 dict def /@dictStackLevel 0 def /InVMFontsByCMap 10 dict def /InVMDeepCopiedFonts 10 dict def end setglobal } bind def /doc_trailer { currentdict Adobe_CoolType_Core eq { end } if } bind def /page_setup { Adobe_CoolType_Core begin } bind def /page_trailer { end } bind def /unload { systemdict /languagelevel known { systemdict/languagelevel get 2 ge { userdict/Adobe_CoolType_Core 2 copy known { undef } { pop pop } ifelse } if } if } bind def /ndf { 1 index where { pop pop pop } { dup xcheck { bind } if def } ifelse } def /findfont systemdict begin userdict begin /globaldict where { /globaldict get begin } if dup where pop exch get /globaldict where { pop end } if end end Adobe_CoolType_Core_Defined { /systemfindfont exch def } { /findfont 1 index def /systemfindfont exch def } ifelse /undefinefont { pop } ndf /copyfont { currentglobal 3 1 roll 1 index gcheck setglobal dup null eq { 0 } { dup length } ifelse 2 index length add 1 add dict begin exch { 1 index /FID eq { pop pop } { def } ifelse } forall dup null eq { pop } { { def } forall } ifelse currentdict end exch setglobal } bind def /copyarray { currentglobal exch dup gcheck setglobal dup length array copy exch setglobal } bind def /newencodedfont { currentglobal { SharedFontDirectory 3 index known { SharedFontDirectory 3 index get /FontReferenced known } { false } ifelse } { FontDirectory 3 index known { FontDirectory 3 index get /FontReferenced known } { SharedFontDirectory 3 index known { SharedFontDirectory 3 index get /FontReferenced known } { false } ifelse } ifelse } ifelse dup { 3 index findfont /FontReferenced get 2 index dup type /nametype eq {findfont} if ne { pop false } if } if { pop 1 index findfont /Encoding get exch 0 1 255 { 2 copy get 3 index 3 1 roll put } for pop pop pop } { dup type /nametype eq { findfont } if dup dup maxlength 2 add dict begin exch { 1 index /FID ne {def} {pop pop} ifelse } forall /FontReferenced exch def /Encoding exch dup length array copy def /FontName 1 index dup type /stringtype eq { cvn } if def dup currentdict end definefont def } ifelse } bind def /SetSubstituteStrategy { $SubstituteFont begin dup type /dicttype ne { 0 dict } if currentdict /$Strategies known { exch $Strategies exch 2 copy known { get 2 copy maxlength exch maxlength add dict begin { def } forall { def } forall currentdict dup /$Init known { dup /$Init get exec } if end /$Strategy exch def } { pop pop pop } ifelse } { pop pop } ifelse end } bind def /scff { $SubstituteFont begin dup type /stringtype eq { dup length exch } { null } ifelse /$sname exch def /$slen exch def /$inVMIndex $sname null eq { 1 index $str cvs dup length $slen sub $slen getinterval cvn } { $sname } ifelse def end { findfont } @Stopped { dup length 8 add string exch 1 index 0 (BadFont:) putinterval 1 index exch 8 exch dup length string cvs putinterval cvn { findfont } @Stopped { pop /Courier findfont } if } if $SubstituteFont begin /$sname null def /$slen 0 def /$inVMIndex null def end } bind def /isWidthsOnlyFont { dup /WidthsOnly known { pop pop true } { dup /FDepVector known { /FDepVector get { isWidthsOnlyFont dup { exit } if } forall } { dup /FDArray known { /FDArray get { isWidthsOnlyFont dup { exit } if } forall } { pop } ifelse } ifelse } ifelse } bind def /?str1 256 string def /?set { $SubstituteFont begin /$substituteFound false def /$fontname 4 index def /$doSmartSub false def end 3 index currentglobal false setglobal exch /CompatibleFonts /ProcSet resourcestatus { pop pop /CompatibleFonts /ProcSet findresource begin dup /CompatibleFont currentexception 1 index /CompatibleFont true setexception 1 index /Font resourcestatus { pop pop 3 2 roll setglobal end exch dup findfont /CompatibleFonts /ProcSet findresource begin 3 1 roll exch /CompatibleFont exch setexception end } { 3 2 roll setglobal 1 index exch /CompatibleFont exch setexception end findfont $SubstituteFont /$substituteFound true put } ifelse } { exch setglobal findfont } ifelse $SubstituteFont begin $substituteFound { false (%%[Using embedded font ) print 5 index ?str1 cvs print ( to avoid the font substitution problem noted earlier.]%%\n) print } { dup /FontName known { dup /FontName get $fontname eq 1 index /DistillerFauxFont known not and /currentdistillerparams where { pop false 2 index isWidthsOnlyFont not and } if } { false } ifelse } ifelse exch pop /$doSmartSub true def end { exch pop exch pop exch 2 dict dup /Found 3 index put exch findfont exch } { exch exec exch dup findfont dup /FontType get 3 eq { exch ?str1 cvs dup length 1 sub -1 0 { exch dup 2 index get 42 eq { exch 0 exch getinterval cvn 4 1 roll 3 2 roll pop exit } {exch pop} ifelse }for } { exch pop } ifelse 2 dict dup /Downloaded 6 5 roll put } ifelse dup /FontName 4 index put copyfont definefont pop } bind def /?str2 256 string def /?add { 1 index type /integertype eq { exch true 4 2 } { false 3 1 } ifelse roll 1 index findfont dup /Widths known { Adobe_CoolType_Data /AddWidths? true put gsave dup 1000 scalefont setfont } if /Downloaded known { exec exch { exch ?str2 cvs exch findfont /Downloaded get 1 dict begin /Downloaded 1 index def ?str1 cvs length ?str1 1 index 1 add 3 index putinterval exch length 1 add 1 index add ?str1 2 index (*) putinterval ?str1 0 2 index getinterval cvn findfont ?str1 3 index (+) putinterval 2 dict dup /FontName ?str1 0 6 index getinterval cvn put dup /Downloaded Downloaded put end copyfont dup /FontName get exch definefont pop pop pop } { pop } ifelse } { pop exch { findfont dup /Found get dup length exch ?str1 cvs pop ?str1 1 index (+) putinterval ?str1 1 index 1 add 4 index ?str2 cvs putinterval ?str1 exch 0 exch 5 4 roll ?str2 cvs length 1 add add getinterval cvn 1 dict exch 1 index exch /FontName exch put copyfont dup /FontName get exch definefont pop } { pop } ifelse } ifelse Adobe_CoolType_Data /AddWidths? get { grestore Adobe_CoolType_Data /AddWidths? false put } if } bind def /?sh { currentfont /Downloaded known { exch } if pop } bind def /?chp { currentfont /Downloaded known { pop } { false chp } ifelse } bind def /?mv { currentfont /Downloaded known { moveto pop pop } { pop pop moveto } ifelse } bind def setpacking userdict /$SubstituteFont 25 dict put 1 dict begin /SubstituteFont dup $error exch 2 copy known { get } { pop pop { pop /Courier } bind } ifelse def /currentdistillerparams where dup { pop pop currentdistillerparams /CannotEmbedFontPolicy 2 copy known { get /Error eq } { pop pop false } ifelse } if not { countdictstack array dictstack 0 get begin userdict begin $SubstituteFont begin /$str 128 string def /$fontpat 128 string def /$slen 0 def /$sname null def /$match false def /$fontname null def /$substituteFound false def /$inVMIndex null def /$doSmartSub true def /$depth 0 def /$fontname null def /$italicangle 26.5 def /$dstack null def /$Strategies 10 dict dup begin /$Type3Underprint { currentglobal exch false setglobal 11 dict begin /UseFont exch $WMode 0 ne { dup length dict copy dup /WMode $WMode put /UseFont exch definefont } if def /FontName $fontname dup type /stringtype eq { cvn } if def /FontType 3 def /FontMatrix [ .001 0 0 .001 0 0 ] def /Encoding 256 array dup 0 1 255 { /.notdef put dup } for pop def /FontBBox [ 0 0 0 0 ] def /CCInfo 7 dict dup begin /cc null def /x 0 def /y 0 def end def /BuildChar { exch begin CCInfo begin 1 string dup 0 3 index put exch pop /cc exch def UseFont 1000 scalefont setfont cc stringwidth /y exch def /x exch def x y setcharwidth $SubstituteFont /$Strategy get /$Underprint get exec 0 0 moveto cc show x y moveto end end } bind def currentdict end exch setglobal } bind def /$GetaTint 2 dict dup begin /$BuildFont { dup /WMode known { dup /WMode get } { 0 } ifelse /$WMode exch def $fontname exch dup /FontName known { dup /FontName get dup type /stringtype eq { cvn } if } { /unnamedfont } ifelse exch Adobe_CoolType_Data /InVMDeepCopiedFonts get 1 index /FontName get known { pop Adobe_CoolType_Data /InVMDeepCopiedFonts get 1 index get null copyfont } { $deepcopyfont } ifelse exch 1 index exch /FontBasedOn exch put dup /FontName $fontname dup type /stringtype eq { cvn } if put definefont Adobe_CoolType_Data /InVMDeepCopiedFonts get begin dup /FontBasedOn get 1 index def end } bind def /$Underprint { gsave x abs y abs gt { /y 1000 def } { /x -1000 def 500 120 translate } ifelse Level2? { [ /Separation (All) /DeviceCMYK { 0 0 0 1 pop } ] setcolorspace } { 0 setgray } ifelse 10 setlinewidth x .8 mul [ 7 3 ] { y mul 8 div 120 sub x 10 div exch moveto 0 y 4 div neg rlineto dup 0 rlineto 0 y 4 div rlineto closepath gsave Level2? { .2 setcolor } { .8 setgray } ifelse fill grestore stroke } forall pop grestore } bind def end def /$Oblique 1 dict dup begin /$BuildFont { currentglobal exch dup gcheck setglobal null copyfont begin /FontBasedOn currentdict /FontName known { FontName dup type /stringtype eq { cvn } if } { /unnamedfont } ifelse def /FontName $fontname dup type /stringtype eq { cvn } if def /currentdistillerparams where { pop } { /FontInfo currentdict /FontInfo known { FontInfo null copyfont } { 2 dict } ifelse dup begin /ItalicAngle $italicangle def /FontMatrix FontMatrix [ 1 0 ItalicAngle dup sin exch cos div 1 0 0 ] matrix concatmatrix readonly end 4 2 roll def def } ifelse FontName currentdict end definefont exch setglobal } bind def end def /$None 1 dict dup begin /$BuildFont {} bind def end def end def /$Oblique SetSubstituteStrategy /$findfontByEnum { dup type /stringtype eq { cvn } if dup /$fontname exch def $sname null eq { $str cvs dup length $slen sub $slen getinterval } { pop $sname } ifelse $fontpat dup 0 (fonts/*) putinterval exch 7 exch putinterval /$match false def $SubstituteFont /$dstack countdictstack array dictstack put mark { $fontpat 0 $slen 7 add getinterval { /$match exch def exit } $str filenameforall } stopped { cleardictstack currentdict true $SubstituteFont /$dstack get { exch { 1 index eq { pop false } { true } ifelse } { begin false } ifelse } forall pop } if cleartomark /$slen 0 def $match false ne { $match (fonts/) anchorsearch pop pop cvn } { /Courier } ifelse } bind def /$ROS 1 dict dup begin /Adobe 4 dict dup begin /Japan1 [ /Ryumin-Light /HeiseiMin-W3 /GothicBBB-Medium /HeiseiKakuGo-W5 /HeiseiMaruGo-W4 /Jun101-Light ] def /Korea1 [ /HYSMyeongJo-Medium /HYGoThic-Medium ] def /GB1 [ /STSong-Light /STHeiti-Regular ] def /CNS1 [ /MKai-Medium /MHei-Medium ] def end def end def /$cmapname null def /$deepcopyfont { dup /FontType get 0 eq { 1 dict dup /FontName /copied put copyfont begin /FDepVector FDepVector copyarray 0 1 2 index length 1 sub { 2 copy get $deepcopyfont dup /FontName /copied put /copied exch definefont 3 copy put pop pop } for def currentdict end } { $Strategies /$Type3Underprint get exec } ifelse } bind def /$buildfontname { dup /CIDFont findresource /CIDSystemInfo get begin Registry length Ordering length Supplement 8 string cvs 3 copy length 2 add add add string dup 5 1 roll dup 0 Registry putinterval dup 4 index (-) putinterval dup 4 index 1 add Ordering putinterval 4 2 roll add 1 add 2 copy (-) putinterval end 1 add 2 copy 0 exch getinterval $cmapname $fontpat cvs exch anchorsearch { pop pop 3 2 roll putinterval cvn /$cmapname exch def } { pop pop pop pop pop } ifelse length $str 1 index (-) putinterval 1 add $str 1 index $cmapname $fontpat cvs putinterval $cmapname length add $str exch 0 exch getinterval cvn } bind def /$findfontByROS { /$fontname exch def $ROS Registry 2 copy known { get Ordering 2 copy known { get } { pop pop [] } ifelse } { pop pop [] } ifelse false exch { dup /CIDFont resourcestatus { pop pop save 1 index /CIDFont findresource dup /WidthsOnly known { dup /WidthsOnly get } { false } ifelse exch pop exch restore { pop } { exch pop true exit } ifelse } { pop } ifelse } forall { $str cvs $buildfontname } { false (*) { save exch dup /CIDFont findresource dup /WidthsOnly known { dup /WidthsOnly get not } { true } ifelse exch /CIDSystemInfo get dup /Registry get Registry eq exch /Ordering get Ordering eq and and { exch restore exch pop true exit } { pop restore } ifelse } $str /CIDFont resourceforall { $buildfontname } { $fontname $findfontByEnum } ifelse } ifelse } bind def end end currentdict /$error known currentdict /languagelevel known and dup { pop $error /SubstituteFont known } if dup { $error } { Adobe_CoolType_Core } ifelse begin { /SubstituteFont /CMap /Category resourcestatus { pop pop { $SubstituteFont begin /$substituteFound true def dup length $slen gt $sname null ne or $slen 0 gt and { $sname null eq { dup $str cvs dup length $slen sub $slen getinterval cvn } { $sname } ifelse Adobe_CoolType_Data /InVMFontsByCMap get 1 index 2 copy known { get false exch { pop currentglobal { GlobalFontDirectory 1 index known { exch pop true exit } { pop } ifelse } { FontDirectory 1 index known { exch pop true exit } { GlobalFontDirectory 1 index known { exch pop true exit } { pop } ifelse } ifelse } ifelse } forall } { pop pop false } ifelse { exch pop exch pop } { dup /CMap resourcestatus { pop pop dup /$cmapname exch def /CMap findresource /CIDSystemInfo get { def } forall $findfontByROS } { 128 string cvs dup (-) search { 3 1 roll search { 3 1 roll pop { dup cvi } stopped { pop pop pop pop pop $findfontByEnum } { 4 2 roll pop pop exch length exch 2 index length 2 index sub exch 1 sub -1 0 { $str cvs dup length 4 index 0 4 index 4 3 roll add getinterval exch 1 index exch 3 index exch putinterval dup /CMap resourcestatus { pop pop 4 1 roll pop pop pop dup /$cmapname exch def /CMap findresource /CIDSystemInfo get { def } forall $findfontByROS true exit } { pop } ifelse } for dup type /booleantype eq { pop } { pop pop pop $findfontByEnum } ifelse } ifelse } { pop pop pop $findfontByEnum } ifelse } { pop pop $findfontByEnum } ifelse } ifelse } ifelse } { //SubstituteFont exec } ifelse /$slen 0 def end } } { { $SubstituteFont begin /$substituteFound true def dup length $slen gt $sname null ne or $slen 0 gt and { $findfontByEnum } { //SubstituteFont exec } ifelse end } } ifelse bind readonly def Adobe_CoolType_Core /scfindfont /systemfindfont load put } { /scfindfont { $SubstituteFont begin dup systemfindfont dup /FontName known { dup /FontName get dup 3 index ne } { /noname true } ifelse dup { /$origfontnamefound 2 index def /$origfontname 4 index def /$substituteFound true def } if exch pop { $slen 0 gt $sname null ne 3 index length $slen gt or and { pop dup $findfontByEnum findfont dup maxlength 1 add dict begin { 1 index /FID eq { pop pop } { def } ifelse } forall currentdict end definefont dup /FontName known { dup /FontName get } { null } ifelse $origfontnamefound ne { $origfontname $str cvs print ( substitution revised, using ) print dup /FontName known { dup /FontName get } { (unspecified font) } ifelse $str cvs print (.\n) print } if } { exch pop } ifelse } { exch pop } ifelse end } bind def } ifelse end end Adobe_CoolType_Core_Defined not { Adobe_CoolType_Core /findfont { $SubstituteFont begin $depth 0 eq { /$fontname 1 index dup type /stringtype ne { $str cvs } if def /$substituteFound false def } if /$depth $depth 1 add def end scfindfont $SubstituteFont begin /$depth $depth 1 sub def $substituteFound $depth 0 eq and { $inVMIndex null ne { dup $inVMIndex $AddInVMFont } if $doSmartSub { currentdict /$Strategy known { $Strategy /$BuildFont get exec } if } if } if end } bind put } if } if end /$AddInVMFont { exch /FontName 2 copy known { get 1 dict dup begin exch 1 index gcheck def end exch Adobe_CoolType_Data /InVMFontsByCMap get exch $DictAdd } { pop pop pop } ifelse } bind def /$DictAdd { 2 copy known not { 2 copy 4 index length dict put } if Level2? not { 2 copy get dup maxlength exch length 4 index length add lt 2 copy get dup length 4 index length add exch maxlength 1 index lt { 2 mul dict begin 2 copy get { forall } def 2 copy currentdict put end } { pop } ifelse } if get begin { def } forall end } bind def end end %%EndResource %%BeginResource: procset Adobe_CoolType_Utility_MAKEOCF 1.21 0 %%Copyright: Copyright 1987-2005 Adobe Systems Incorporated. %%Version: 1.21 0 systemdict /languagelevel known dup { currentglobal false setglobal } { false } ifelse exch userdict /Adobe_CoolType_Utility 2 copy known { 2 copy get dup maxlength 27 add dict copy } { 27 dict } ifelse put Adobe_CoolType_Utility begin /@eexecStartData <BAB431EA07F209EB8C4348311481D9D3F76E3D15246555577D87BC510ED54E 118C39697FA9F6DB58128E60EB8A12FA24D7CDD2FA94D221FA9EC8DA3E5E6A1C 4ACECC8C2D39C54E7C946031DD156C3A6B4A09AD29E1867A> def /@recognizeCIDFont null def /ct_Level2? exch def /ct_Clone? 1183615869 internaldict dup /CCRun known not exch /eCCRun known not ct_Level2? and or def ct_Level2? { globaldict begin currentglobal true setglobal } if /ct_AddStdCIDMap ct_Level2? { { mark Adobe_CoolType_Utility /@recognizeCIDFont currentdict put { ((Hex) 57 StartData 0615 1e27 2c39 1c60 d8a8 cc31 fe2b f6e0 7aa3 e541 e21c 60d8 a8c9 c3d0 6d9e 1c60 d8a8 c9c2 02d7 9a1c 60d8 a849 1c60 d8a8 cc36 74f4 1144 b13b 77) 0 () /SubFileDecode filter cvx exec } stopped { cleartomark Adobe_CoolType_Utility /@recognizeCIDFont get countdictstack dup array dictstack exch 1 sub -1 0 { 2 copy get 3 index eq { 1 index length exch sub 1 sub { end } repeat exit } { pop } ifelse } for pop pop Adobe_CoolType_Utility /@eexecStartData get eexec } { cleartomark } ifelse } } { { Adobe_CoolType_Utility /@eexecStartData get eexec } } ifelse bind def userdict /cid_extensions known dup { cid_extensions /cid_UpdateDB known and } if { cid_extensions begin /cid_GetCIDSystemInfo { 1 index type /stringtype eq { exch cvn exch } if cid_extensions begin dup load 2 index known { 2 copy cid_GetStatusInfo dup null ne { 1 index load 3 index get dup null eq { pop pop cid_UpdateDB } { exch 1 index /Created get eq { exch pop exch pop } { pop cid_UpdateDB } ifelse } ifelse } { pop cid_UpdateDB } ifelse } { cid_UpdateDB } ifelse end } bind def end } if ct_Level2? { end setglobal } if /ct_UseNativeCapability? systemdict /composefont known def /ct_MakeOCF 35 dict def /ct_Vars 25 dict def /ct_GlyphDirProcs 6 dict def /ct_BuildCharDict 15 dict dup begin /charcode 2 string def /dst_string 1500 string def /nullstring () def /usewidths? true def end def ct_Level2? { setglobal } { pop } ifelse ct_GlyphDirProcs begin /GetGlyphDirectory { systemdict /languagelevel known { pop /CIDFont findresource /GlyphDirectory get } { 1 index /CIDFont findresource /GlyphDirectory get dup type /dicttype eq { dup dup maxlength exch length sub 2 index lt { dup length 2 index add dict copy 2 index /CIDFont findresource/GlyphDirectory 2 index put } if } if exch pop exch pop } ifelse + } def /+ { systemdict /languagelevel known { currentglobal false setglobal 3 dict begin /vm exch def } { 1 dict begin } ifelse /$ exch def systemdict /languagelevel known { vm setglobal /gvm currentglobal def $ gcheck setglobal } if ? { $ begin } if } def /? { $ type /dicttype eq } def /| { userdict /Adobe_CoolType_Data known { Adobe_CoolType_Data /AddWidths? known { currentdict Adobe_CoolType_Data begin begin AddWidths? { Adobe_CoolType_Data /CC 3 index put ? { def } { $ 3 1 roll put } ifelse CC charcode exch 1 index 0 2 index 256 idiv put 1 index exch 1 exch 256 mod put stringwidth 2 array astore currentfont /Widths get exch CC exch put } { ? { def } { $ 3 1 roll put } ifelse } ifelse end end } { ? { def } { $ 3 1 roll put } ifelse } ifelse } { ? { def } { $ 3 1 roll put } ifelse } ifelse } def /! { ? { end } if systemdict /languagelevel known { gvm setglobal } if end } def /: { string currentfile exch readstring pop } executeonly def end ct_MakeOCF begin /ct_cHexEncoding [/c00/c01/c02/c03/c04/c05/c06/c07/c08/c09/c0A/c0B/c0C/c0D/c0E/c0F/c10/c11/c12 /c13/c14/c15/c16/c17/c18/c19/c1A/c1B/c1C/c1D/c1E/c1F/c20/c21/c22/c23/c24/c25 /c26/c27/c28/c29/c2A/c2B/c2C/c2D/c2E/c2F/c30/c31/c32/c33/c34/c35/c36/c37/c38 /c39/c3A/c3B/c3C/c3D/c3E/c3F/c40/c41/c42/c43/c44/c45/c46/c47/c48/c49/c4A/c4B /c4C/c4D/c4E/c4F/c50/c51/c52/c53/c54/c55/c56/c57/c58/c59/c5A/c5B/c5C/c5D/c5E /c5F/c60/c61/c62/c63/c64/c65/c66/c67/c68/c69/c6A/c6B/c6C/c6D/c6E/c6F/c70/c71 /c72/c73/c74/c75/c76/c77/c78/c79/c7A/c7B/c7C/c7D/c7E/c7F/c80/c81/c82/c83/c84 /c85/c86/c87/c88/c89/c8A/c8B/c8C/c8D/c8E/c8F/c90/c91/c92/c93/c94/c95/c96/c97 /c98/c99/c9A/c9B/c9C/c9D/c9E/c9F/cA0/cA1/cA2/cA3/cA4/cA5/cA6/cA7/cA8/cA9/cAA /cAB/cAC/cAD/cAE/cAF/cB0/cB1/cB2/cB3/cB4/cB5/cB6/cB7/cB8/cB9/cBA/cBB/cBC/cBD /cBE/cBF/cC0/cC1/cC2/cC3/cC4/cC5/cC6/cC7/cC8/cC9/cCA/cCB/cCC/cCD/cCE/cCF/cD0 /cD1/cD2/cD3/cD4/cD5/cD6/cD7/cD8/cD9/cDA/cDB/cDC/cDD/cDE/cDF/cE0/cE1/cE2/cE3 /cE4/cE5/cE6/cE7/cE8/cE9/cEA/cEB/cEC/cED/cEE/cEF/cF0/cF1/cF2/cF3/cF4/cF5/cF6 /cF7/cF8/cF9/cFA/cFB/cFC/cFD/cFE/cFF] def /ct_CID_STR_SIZE 8000 def /ct_mkocfStr100 100 string def /ct_defaultFontMtx [.001 0 0 .001 0 0] def /ct_1000Mtx [1000 0 0 1000 0 0] def /ct_raise {exch cvx exch errordict exch get exec stop} bind def /ct_reraise { cvx $error /errorname get (Error: ) print dup ( ) cvs print errordict exch get exec stop } bind def /ct_cvnsi { 1 index add 1 sub 1 exch 0 4 1 roll { 2 index exch get exch 8 bitshift add } for exch pop } bind def /ct_GetInterval { Adobe_CoolType_Utility /ct_BuildCharDict get begin /dst_index 0 def dup dst_string length gt { dup string /dst_string exch def } if 1 index ct_CID_STR_SIZE idiv /arrayIndex exch def 2 index arrayIndex get 2 index arrayIndex ct_CID_STR_SIZE mul sub { dup 3 index add 2 index length le { 2 index getinterval dst_string dst_index 2 index putinterval length dst_index add /dst_index exch def exit } { 1 index length 1 index sub dup 4 1 roll getinterval dst_string dst_index 2 index putinterval pop dup dst_index add /dst_index exch def sub /arrayIndex arrayIndex 1 add def 2 index dup length arrayIndex gt { arrayIndex get } { pop exit } ifelse 0 } ifelse } loop pop pop pop dst_string 0 dst_index getinterval end } bind def ct_Level2? { /ct_resourcestatus currentglobal mark true setglobal { /unknowninstancename /Category resourcestatus } stopped { cleartomark setglobal true } { cleartomark currentglobal not exch setglobal } ifelse { { mark 3 1 roll /Category findresource begin ct_Vars /vm currentglobal put ({ResourceStatus} stopped) 0 () /SubFileDecode filter cvx exec { cleartomark false } { { 3 2 roll pop true } { cleartomark false } ifelse } ifelse ct_Vars /vm get setglobal end } } { { resourcestatus } } ifelse bind def /CIDFont /Category ct_resourcestatus { pop pop } { currentglobal true setglobal /Generic /Category findresource dup length dict copy dup /InstanceType /dicttype put /CIDFont exch /Category defineresource pop setglobal } ifelse ct_UseNativeCapability? { /CIDInit /ProcSet findresource begin 12 dict begin begincmap /CIDSystemInfo 3 dict dup begin /Registry (Adobe) def /Ordering (Identity) def /Supplement 0 def end def /CMapName /Identity-H def /CMapVersion 1.000 def /CMapType 1 def 1 begincodespacerange <0000> <FFFF> endcodespacerange 1 begincidrange <0000> <FFFF> 0 endcidrange endcmap CMapName currentdict /CMap defineresource pop end end } if } { /ct_Category 2 dict begin /CIDFont 10 dict def /ProcSet 2 dict def currentdict end def /defineresource { ct_Category 1 index 2 copy known { get dup dup maxlength exch length eq { dup length 10 add dict copy ct_Category 2 index 2 index put } if 3 index 3 index put pop exch pop } { pop pop /defineresource /undefined ct_raise } ifelse } bind def /findresource { ct_Category 1 index 2 copy known { get 2 index 2 copy known { get 3 1 roll pop pop} { pop pop /findresource /undefinedresource ct_raise } ifelse } { pop pop /findresource /undefined ct_raise } ifelse } bind def /resourcestatus { ct_Category 1 index 2 copy known { get 2 index known exch pop exch pop { 0 -1 true } { false } ifelse } { pop pop /findresource /undefined ct_raise } ifelse } bind def /ct_resourcestatus /resourcestatus load def } ifelse /ct_CIDInit 2 dict begin /ct_cidfont_stream_init { { dup (Binary) eq { pop null currentfile ct_Level2? { { cid_BYTE_COUNT () /SubFileDecode filter } stopped { pop pop pop } if } if /readstring load exit } if dup (Hex) eq { pop currentfile ct_Level2? { { null exch /ASCIIHexDecode filter /readstring } stopped { pop exch pop (>) exch /readhexstring } if } { (>) exch /readhexstring } ifelse load exit } if /StartData /typecheck ct_raise } loop cid_BYTE_COUNT ct_CID_STR_SIZE le { 2 copy cid_BYTE_COUNT string exch exec pop 1 array dup 3 -1 roll 0 exch put } { cid_BYTE_COUNT ct_CID_STR_SIZE div ceiling cvi dup array exch 2 sub 0 exch 1 exch { 2 copy 5 index ct_CID_STR_SIZE string 6 index exec pop put pop } for 2 index cid_BYTE_COUNT ct_CID_STR_SIZE mod string 3 index exec pop 1 index exch 1 index length 1 sub exch put } ifelse cid_CIDFONT exch /GlyphData exch put 2 index null eq { pop pop pop } { pop /readstring load 1 string exch { 3 copy exec pop dup length 0 eq { pop pop pop pop pop true exit } if 4 index eq { pop pop pop pop false exit } if } loop pop } ifelse } bind def /StartData { mark { currentdict dup /FDArray get 0 get /FontMatrix get 0 get 0.001 eq { dup /CDevProc known not { /CDevProc 1183615869 internaldict /stdCDevProc 2 copy known { get } { pop pop { pop pop pop pop pop 0 -1000 7 index 2 div 880 } } ifelse def } if } { /CDevProc { pop pop pop pop pop 0 1 cid_temp /cid_CIDFONT get /FDArray get 0 get /FontMatrix get 0 get div 7 index 2 div 1 index 0.88 mul } def } ifelse /cid_temp 15 dict def cid_temp begin /cid_CIDFONT exch def 3 copy pop dup /cid_BYTE_COUNT exch def 0 gt { ct_cidfont_stream_init FDArray { /Private get dup /SubrMapOffset known { begin /Subrs SubrCount array def Subrs SubrMapOffset SubrCount SDBytes ct_Level2? { currentdict dup /SubrMapOffset undef dup /SubrCount undef /SDBytes undef } if end /cid_SD_BYTES exch def /cid_SUBR_COUNT exch def /cid_SUBR_MAP_OFFSET exch def /cid_SUBRS exch def cid_SUBR_COUNT 0 gt { GlyphData cid_SUBR_MAP_OFFSET cid_SD_BYTES ct_GetInterval 0 cid_SD_BYTES ct_cvnsi 0 1 cid_SUBR_COUNT 1 sub { exch 1 index 1 add cid_SD_BYTES mul cid_SUBR_MAP_OFFSET add GlyphData exch cid_SD_BYTES ct_GetInterval 0 cid_SD_BYTES ct_cvnsi cid_SUBRS 4 2 roll GlyphData exch 4 index 1 index sub ct_GetInterval dup length string copy put } for pop } if } { pop } ifelse } forall } if cleartomark pop pop end CIDFontName currentdict /CIDFont defineresource pop end end } stopped { cleartomark /StartData ct_reraise } if } bind def currentdict end def /ct_saveCIDInit { /CIDInit /ProcSet ct_resourcestatus { true } { /CIDInitC /ProcSet ct_resourcestatus } ifelse { pop pop /CIDInit /ProcSet findresource ct_UseNativeCapability? { pop null } { /CIDInit ct_CIDInit /ProcSet defineresource pop } ifelse } { /CIDInit ct_CIDInit /ProcSet defineresource pop null } ifelse ct_Vars exch /ct_oldCIDInit exch put } bind def /ct_restoreCIDInit { ct_Vars /ct_oldCIDInit get dup null ne { /CIDInit exch /ProcSet defineresource pop } { pop } ifelse } bind def /ct_BuildCharSetUp { 1 index begin CIDFont begin Adobe_CoolType_Utility /ct_BuildCharDict get begin /ct_dfCharCode exch def /ct_dfDict exch def CIDFirstByte ct_dfCharCode add dup CIDCount ge { pop 0 } if /cid exch def { GlyphDirectory cid 2 copy known { get } { pop pop nullstring } ifelse dup length FDBytes sub 0 gt { dup FDBytes 0 ne { 0 FDBytes ct_cvnsi } { pop 0 } ifelse /fdIndex exch def dup length FDBytes sub FDBytes exch getinterval /charstring exch def exit } { pop cid 0 eq { /charstring nullstring def exit } if /cid 0 def } ifelse } loop } def /ct_SetCacheDevice { 0 0 moveto dup stringwidth 3 -1 roll true charpath pathbbox 0 -1000 7 index 2 div 880 setcachedevice2 0 0 moveto } def /ct_CloneSetCacheProc { 1 eq { stringwidth pop -2 div -880 0 -1000 setcharwidth moveto } { usewidths? { currentfont /Widths get cid 2 copy known { get exch pop aload pop } { pop pop stringwidth } ifelse } { stringwidth } ifelse setcharwidth 0 0 moveto } ifelse } def /ct_Type3ShowCharString { ct_FDDict fdIndex 2 copy known { get } { currentglobal 3 1 roll 1 index gcheck setglobal ct_Type1FontTemplate dup maxlength dict copy begin FDArray fdIndex get dup /FontMatrix 2 copy known { get } { pop pop ct_defaultFontMtx } ifelse /FontMatrix exch dup length array copy def /Private get /Private exch def /Widths rootfont /Widths get def /CharStrings 1 dict dup /.notdef <d841272cf18f54fc13> dup length string copy put def currentdict end /ct_Type1Font exch definefont dup 5 1 roll put setglobal } ifelse dup /CharStrings get 1 index /Encoding get ct_dfCharCode get charstring put rootfont /WMode 2 copy known { get } { pop pop 0 } ifelse exch 1000 scalefont setfont ct_str1 0 ct_dfCharCode put ct_str1 exch ct_dfSetCacheProc ct_SyntheticBold { currentpoint ct_str1 show newpath moveto ct_str1 true charpath ct_StrokeWidth setlinewidth stroke } { ct_str1 show } ifelse } def /ct_Type4ShowCharString { ct_dfDict ct_dfCharCode charstring FDArray fdIndex get dup /FontMatrix get dup ct_defaultFontMtx ct_matrixeq not { ct_1000Mtx matrix concatmatrix concat } { pop } ifelse /Private get Adobe_CoolType_Utility /ct_Level2? get not { ct_dfDict /Private 3 -1 roll { put } 1183615869 internaldict /superexec get exec } if 1183615869 internaldict Adobe_CoolType_Utility /ct_Level2? get { 1 index } { 3 index /Private get mark 6 1 roll } ifelse dup /RunInt known { /RunInt get } { pop /CCRun } ifelse get exec Adobe_CoolType_Utility /ct_Level2? get not { cleartomark } if } bind def /ct_BuildCharIncremental { { Adobe_CoolType_Utility /ct_MakeOCF get begin ct_BuildCharSetUp ct_ShowCharString } stopped { stop } if end end end end } bind def /BaseFontNameStr (BF00) def /ct_Type1FontTemplate 14 dict begin /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0] def /FontBBox [-250 -250 1250 1250] def /Encoding ct_cHexEncoding def /PaintType 0 def currentdict end def /BaseFontTemplate 11 dict begin /FontMatrix [0.001 0 0 0.001 0 0] def /FontBBox [-250 -250 1250 1250] def /Encoding ct_cHexEncoding def /BuildChar /ct_BuildCharIncremental load def ct_Clone? { /FontType 3 def /ct_ShowCharString /ct_Type3ShowCharString load def /ct_dfSetCacheProc /ct_CloneSetCacheProc load def /ct_SyntheticBold false def /ct_StrokeWidth 1 def } { /FontType 4 def /Private 1 dict dup /lenIV 4 put def /CharStrings 1 dict dup /.notdef <d841272cf18f54fc13> put def /PaintType 0 def /ct_ShowCharString /ct_Type4ShowCharString load def } ifelse /ct_str1 1 string def currentdict end def /BaseFontDictSize BaseFontTemplate length 5 add def /ct_matrixeq { true 0 1 5 { dup 4 index exch get exch 3 index exch get eq and dup not { exit } if } for exch pop exch pop } bind def /ct_makeocf { 15 dict begin exch /WMode exch def exch /FontName exch def /FontType 0 def /FMapType 2 def dup /FontMatrix known { dup /FontMatrix get /FontMatrix exch def } { /FontMatrix matrix def } ifelse /bfCount 1 index /CIDCount get 256 idiv 1 add dup 256 gt { pop 256} if def /Encoding 256 array 0 1 bfCount 1 sub { 2 copy dup put pop } for bfCount 1 255 { 2 copy bfCount put pop } for def /FDepVector bfCount dup 256 lt { 1 add } if array def BaseFontTemplate BaseFontDictSize dict copy begin /CIDFont exch def CIDFont /FontBBox known { CIDFont /FontBBox get /FontBBox exch def } if CIDFont /CDevProc known { CIDFont /CDevProc get /CDevProc exch def } if currentdict end BaseFontNameStr 3 (0) putinterval 0 1 bfCount dup 256 eq { 1 sub } if { FDepVector exch 2 index BaseFontDictSize dict copy begin dup /CIDFirstByte exch 256 mul def FontType 3 eq { /ct_FDDict 2 dict def } if currentdict end 1 index 16 BaseFontNameStr 2 2 getinterval cvrs pop BaseFontNameStr exch definefont put } for ct_Clone? { /Widths 1 index /CIDFont get /GlyphDirectory get length dict def } if FontName currentdict end definefont ct_Clone? { gsave dup 1000 scalefont setfont ct_BuildCharDict begin /usewidths? false def currentfont /Widths get begin exch /CIDFont get /GlyphDirectory get { pop dup charcode exch 1 index 0 2 index 256 idiv put 1 index exch 1 exch 256 mod put stringwidth 2 array astore def } forall end /usewidths? true def end grestore } { exch pop } ifelse } bind def /ct_ComposeFont { ct_UseNativeCapability? { 2 index /CMap ct_resourcestatus { pop pop exch pop } { /CIDInit /ProcSet findresource begin 12 dict begin begincmap /CMapName 3 index def /CMapVersion 1.000 def /CMapType 1 def exch /WMode exch def /CIDSystemInfo 3 dict dup begin /Registry (Adobe) def /Ordering CMapName ct_mkocfStr100 cvs (Adobe-) search { pop pop (-) search { dup length string copy exch pop exch pop } { pop (Identity)} ifelse } { pop (Identity) } ifelse def /Supplement 0 def end def 1 begincodespacerange <0000> <FFFF> endcodespacerange 1 begincidrange <0000> <FFFF> 0 endcidrange endcmap CMapName currentdict /CMap defineresource pop end end } ifelse composefont } { 3 2 roll pop 0 get /CIDFont findresource ct_makeocf } ifelse } bind def /ct_MakeIdentity { ct_UseNativeCapability? { 1 index /CMap ct_resourcestatus { pop pop } { /CIDInit /ProcSet findresource begin 12 dict begin begincmap /CMapName 2 index def /CMapVersion 1.000 def /CMapType 1 def /CIDSystemInfo 3 dict dup begin /Registry (Adobe) def /Ordering CMapName ct_mkocfStr100 cvs (Adobe-) search { pop pop (-) search { dup length string copy exch pop exch pop } { pop (Identity) } ifelse } { pop (Identity) } ifelse def /Supplement 0 def end def 1 begincodespacerange <0000> <FFFF> endcodespacerange 1 begincidrange <0000> <FFFF> 0 endcidrange endcmap CMapName currentdict /CMap defineresource pop end end } ifelse composefont } { exch pop 0 get /CIDFont findresource ct_makeocf } ifelse } bind def currentdict readonly pop end end %%EndResource %%BeginResource: procset Adobe_CoolType_Utility_T42 1.0 0 %%Copyright: Copyright 1987-2004 Adobe Systems Incorporated. %%Version: 1.0 0 userdict /ct_T42Dict 15 dict put ct_T42Dict begin /Is2015? { version cvi 2015 ge } bind def /AllocGlyphStorage { Is2015? { pop } { {string} forall } ifelse } bind def /Type42DictBegin { 25 dict begin /FontName exch def /CharStrings 256 dict begin /.notdef 0 def currentdict end def /Encoding exch def /PaintType 0 def /FontType 42 def /FontMatrix [1 0 0 1 0 0] def 4 array astore cvx /FontBBox exch def /sfnts } bind def /Type42DictEnd { currentdict dup /FontName get exch definefont end ct_T42Dict exch dup /FontName get exch put } bind def /RD {string currentfile exch readstring pop} executeonly def /PrepFor2015 { Is2015? { /GlyphDirectory 16 dict def sfnts 0 get dup 2 index (glyx) putinterval 2 index (locx) putinterval pop pop } { pop pop } ifelse } bind def /AddT42Char { Is2015? { /GlyphDirectory get begin def end pop pop } { /sfnts get 4 index get 3 index 2 index putinterval pop pop pop pop } ifelse } bind def /T0AddT42Mtx2 { /CIDFont findresource /Metrics2 get begin def end }bind def end %%EndResource Adobe_CoolType_Core begin /$Oblique SetSubstituteStrategy end %%BeginResource: procset Adobe_AGM_Image 1.0 0 %%Version: 1.0 0 %%Copyright: Copyright (C) 2000-2003 Adobe Systems, Inc. All Rights Reserved. systemdict /setpacking known { currentpacking true setpacking } if userdict /Adobe_AGM_Image 75 dict dup begin put /Adobe_AGM_Image_Id /Adobe_AGM_Image_1.0_0 def /nd{ null def }bind def /AGMIMG_&image nd /AGMIMG_&colorimage nd /AGMIMG_&imagemask nd /AGMIMG_mbuf () def /AGMIMG_ybuf () def /AGMIMG_kbuf () def /AGMIMG_c 0 def /AGMIMG_m 0 def /AGMIMG_y 0 def /AGMIMG_k 0 def /AGMIMG_tmp nd /AGMIMG_imagestring0 nd /AGMIMG_imagestring1 nd /AGMIMG_imagestring2 nd /AGMIMG_imagestring3 nd /AGMIMG_imagestring4 nd /AGMIMG_imagestring5 nd /AGMIMG_cnt nd /AGMIMG_fsave nd /AGMIMG_colorAry nd /AGMIMG_override nd /AGMIMG_name nd /AGMIMG_maskSource nd /AGMIMG_flushfilters nd /invert_image_samples nd /knockout_image_samples nd /img nd /sepimg nd /devnimg nd /idximg nd /doc_setup { Adobe_AGM_Core begin Adobe_AGM_Image begin /AGMIMG_&image systemdict/image get def /AGMIMG_&imagemask systemdict/imagemask get def /colorimage where{ pop /AGMIMG_&colorimage /colorimage ldf }if end end }def /page_setup { Adobe_AGM_Image begin /AGMIMG_ccimage_exists {/customcolorimage where { pop /Adobe_AGM_OnHost_Seps where { pop false }{ /Adobe_AGM_InRip_Seps where { pop false }{ true }ifelse }ifelse }{ false }ifelse }bdf level2{ /invert_image_samples { Adobe_AGM_Image/AGMIMG_tmp Decode length ddf /Decode [ Decode 1 get Decode 0 get] def }def /knockout_image_samples { Operator/imagemask ne{ /Decode [1 1] def }if }def }{ /invert_image_samples { {1 exch sub} currenttransfer addprocs settransfer }def /knockout_image_samples { { pop 1 } currenttransfer addprocs settransfer }def }ifelse /img /imageormask ldf /sepimg /sep_imageormask ldf /devnimg /devn_imageormask ldf /idximg /indexed_imageormask ldf /_ctype 7 def currentdict{ dup xcheck 1 index type dup /arraytype eq exch /packedarraytype eq or and{ bind }if def }forall }def /page_trailer { end }def /doc_trailer { }def /AGMIMG_flushfilters { dup type /arraytype ne {1 array astore}if aload length { dup type /filetype eq { dup status 1 index currentfile ne and {dup flushfile closefile} {pop} ifelse }{pop}ifelse } repeat }def /imageormask_sys { begin save mark level2{ currentdict Operator /imagemask eq{ AGMIMG_&imagemask }{ use_mask { level3 {process_mask_L3 AGMIMG_&image}{masked_image_simulation}ifelse }{ AGMIMG_&image }ifelse }ifelse }{ Width Height Operator /imagemask eq{ Decode 0 get 1 eq Decode 1 get 0 eq and ImageMatrix /DataSource load AGMIMG_&imagemask }{ BitsPerComponent ImageMatrix /DataSource load AGMIMG_&image }ifelse }ifelse currentdict /_Filters known {_Filters AGMIMG_flushfilters} if cleartomark restore end }def /overprint_plate { currentoverprint { 0 get dup type /nametype eq { dup /DeviceGray eq{ pop AGMCORE_black_plate not }{ /DeviceCMYK eq{ AGMCORE_is_cmyk_sep not }if }ifelse }{ false exch { AGMOHS_sepink eq or } forall not } ifelse }{ pop false }ifelse }def /process_mask_L3 { dup begin /ImageType 1 def end 4 dict begin /DataDict exch def /ImageType 3 def /InterleaveType 3 def /MaskDict 9 dict begin /ImageType 1 def /Width DataDict dup /MaskWidth known {/MaskWidth}{/Width} ifelse get def /Height DataDict dup /MaskHeight known {/MaskHeight}{/Height} ifelse get def /ImageMatrix [Width 0 0 Height neg 0 Height] def /NComponents 1 def /BitsPerComponent 1 def /Decode [0 1] def /DataSource AGMIMG_maskSource def currentdict end def currentdict end }def /use_mask { dup type /dicttype eq { dup /Mask known { dup /Mask get { level3 {true} { dup /MaskWidth known {dup /MaskWidth get 1 index /Width get eq}{true}ifelse exch dup /MaskHeight known {dup /MaskHeight get 1 index /Height get eq}{true}ifelse 3 -1 roll and } ifelse } {false} ifelse } {false} ifelse } {false} ifelse }def /make_line_source { begin MultipleDataSources { [ Decode length 2 div cvi {Width string} repeat ] }{ Width Decode length 2 div mul cvi string }ifelse end }def /datasource_to_str { exch dup type dup /filetype eq { pop exch readstring }{ /arraytype eq { exec exch copy }{ pop }ifelse }ifelse pop }def /masked_image_simulation { 3 dict begin dup make_line_source /line_source xdf /mask_source AGMIMG_maskSource /LZWDecode filter def dup /Width get 8 div ceiling cvi string /mask_str xdf begin gsave 0 1 translate 1 -1 Height div scale 1 1 Height { pop gsave MultipleDataSources { 0 1 DataSource length 1 sub { dup DataSource exch get exch line_source exch get datasource_to_str } for }{ DataSource line_source datasource_to_str } ifelse << /PatternType 1 /PaintProc [ /pop cvx << /ImageType 1 /Width Width /Height 1 /ImageMatrix Width 1.0 sub 1 matrix scale 0.5 0 matrix translate matrix concatmatrix /MultipleDataSources MultipleDataSources /DataSource line_source /BitsPerComponent BitsPerComponent /Decode Decode >> /image cvx ] cvx /BBox [0 0 Width 1] /XStep Width /YStep 1 /PaintType 1 /TilingType 2 >> matrix makepattern set_pattern << /ImageType 1 /Width Width /Height 1 /ImageMatrix Width 1 matrix scale /MultipleDataSources false /DataSource mask_source mask_str readstring pop /BitsPerComponent 1 /Decode [0 1] >> imagemask grestore 0 1 translate } for grestore end end }def /imageormask { begin SkipImageProc { currentdict consumeimagedata } { save mark level2 AGMCORE_host_sep not and{ currentdict Operator /imagemask eq DeviceN_PS2 not and { imagemask }{ AGMCORE_in_rip_sep currentoverprint and currentcolorspace 0 get /DeviceGray eq and{ [/Separation /Black /DeviceGray {}] setcolorspace /Decode [ Decode 1 get Decode 0 get ] def }if use_mask { level3 {process_mask_L3 image}{masked_image_simulation}ifelse }{ DeviceN_NoneName DeviceN_PS2 Indexed_DeviceN level3 not and or or AGMCORE_in_rip_sep and { Names convert_to_process not { 2 dict begin /imageDict xdf /names_index 0 def gsave imageDict write_image_file { Names { dup (None) ne { [/Separation 3 -1 roll /DeviceGray {1 exch sub}] setcolorspace Operator imageDict read_image_file names_index 0 eq {true setoverprint} if /names_index names_index 1 add def }{ pop } ifelse } forall close_image_file } if grestore end }{ Operator /imagemask eq { imagemask }{ image } ifelse } ifelse }{ Operator /imagemask eq { imagemask }{ image } ifelse } ifelse }ifelse }ifelse }{ Width Height Operator /imagemask eq{ Decode 0 get 1 eq Decode 1 get 0 eq and ImageMatrix /DataSource load /Adobe_AGM_OnHost_Seps where { pop imagemask }{ currentgray 1 ne{ currentdict imageormask_sys }{ currentoverprint not{ 1 AGMCORE_&setgray currentdict imageormask_sys }{ currentdict ignoreimagedata }ifelse }ifelse }ifelse }{ BitsPerComponent ImageMatrix MultipleDataSources{ 0 1 NComponents 1 sub{ DataSource exch get }for }{ /DataSource load }ifelse Operator /colorimage eq{ AGMCORE_host_sep{ MultipleDataSources level2 or NComponents 4 eq and{ AGMCORE_is_cmyk_sep{ MultipleDataSources{ /DataSource [ DataSource 0 get /exec cvx DataSource 1 get /exec cvx DataSource 2 get /exec cvx DataSource 3 get /exec cvx /AGMCORE_get_ink_data cvx ] cvx def }{ /DataSource Width BitsPerComponent mul 7 add 8 idiv Height mul 4 mul /DataSource load filter_cmyk 0 () /SubFileDecode filter def }ifelse /Decode [ Decode 0 get Decode 1 get ] def /MultipleDataSources false def /NComponents 1 def /Operator /image def invert_image_samples 1 AGMCORE_&setgray currentdict imageormask_sys }{ currentoverprint not Operator/imagemask eq and{ 1 AGMCORE_&setgray currentdict imageormask_sys }{ currentdict ignoreimagedata }ifelse }ifelse }{ MultipleDataSources NComponents AGMIMG_&colorimage }ifelse }{ true NComponents colorimage }ifelse }{ Operator /image eq{ AGMCORE_host_sep{ /DoImage true def HostSepColorImage{ invert_image_samples }{ AGMCORE_black_plate not Operator/imagemask ne and{ /DoImage false def currentdict ignoreimagedata }if }ifelse 1 AGMCORE_&setgray DoImage {currentdict imageormask_sys} if }{ use_mask { level3 {process_mask_L3 image}{masked_image_simulation}ifelse }{ image }ifelse }ifelse }{ Operator/knockout eq{ pop pop pop pop pop currentcolorspace overprint_plate not{ knockout_unitsq }if }if }ifelse }ifelse }ifelse }ifelse cleartomark restore }ifelse currentdict /_Filters known {_Filters AGMIMG_flushfilters} if end }def /sep_imageormask { /sep_colorspace_dict AGMCORE_gget begin CSA map_csa begin SkipImageProc { currentdict consumeimagedata } { save mark AGMCORE_avoid_L2_sep_space{ /Decode [ Decode 0 get 255 mul Decode 1 get 255 mul ] def }if AGMIMG_ccimage_exists MappedCSA 0 get /DeviceCMYK eq and currentdict/Components known and Name () ne and Name (All) ne and Operator /image eq and AGMCORE_producing_seps not and level2 not and { Width Height BitsPerComponent ImageMatrix [ /DataSource load /exec cvx { 0 1 2 index length 1 sub{ 1 index exch 2 copy get 255 xor put }for } /exec cvx ] cvx bind MappedCSA 0 get /DeviceCMYK eq{ Components aload pop }{ 0 0 0 Components aload pop 1 exch sub }ifelse Name findcmykcustomcolor customcolorimage }{ AGMCORE_producing_seps not{ level2{ AGMCORE_avoid_L2_sep_space not currentcolorspace 0 get /Separation ne and{ [/Separation Name MappedCSA sep_proc_name exch 0 get exch load ] setcolorspace_opt /sep_tint AGMCORE_gget setcolor }if currentdict imageormask }{ currentdict Operator /imagemask eq{ imageormask }{ sep_imageormask_lev1 }ifelse }ifelse }{ AGMCORE_host_sep{ Operator/knockout eq{ currentdict/ImageMatrix get concat knockout_unitsq }{ currentgray 1 ne{ AGMCORE_is_cmyk_sep Name (All) ne and{ level2{ Name AGMCORE_IsSeparationAProcessColor { Operator /imagemask eq{ /sep_tint AGMCORE_gget 1 exch sub AGMCORE_&setcolor }{ invert_image_samples }ifelse }{ [ /Separation Name [/DeviceGray] { sep_colorspace_proc AGMCORE_get_ink_data 1 exch sub } bind ] AGMCORE_&setcolorspace /sep_tint AGMCORE_gget AGMCORE_&setcolor }ifelse currentdict imageormask_sys }{ currentdict Operator /imagemask eq{ imageormask_sys }{ sep_image_lev1_sep }ifelse }ifelse }{ Operator/imagemask ne{ invert_image_samples }if currentdict imageormask_sys }ifelse }{ currentoverprint not Name (All) eq or Operator/imagemask eq and{ currentdict imageormask_sys }{ currentoverprint not { gsave knockout_unitsq grestore }if currentdict consumeimagedata }ifelse }ifelse }ifelse }{ currentcolorspace 0 get /Separation ne{ [/Separation Name MappedCSA sep_proc_name exch 0 get exch load ] setcolorspace_opt /sep_tint AGMCORE_gget setcolor }if currentoverprint MappedCSA 0 get /DeviceCMYK eq and Name AGMCORE_IsSeparationAProcessColor not and Name inRip_spot_has_ink not and Name (All) ne and { imageormask_l2_overprint }{ currentdict imageormask }ifelse }ifelse }ifelse }ifelse cleartomark restore }ifelse currentdict /_Filters known {_Filters AGMIMG_flushfilters} if end end }def /decode_image_sample { 4 1 roll exch dup 5 1 roll sub 2 4 -1 roll exp 1 sub div mul add } bdf /colorSpaceElemCnt { mark currentcolor counttomark dup 2 add 1 roll cleartomark } bdf /devn_sep_datasource { 1 dict begin /dataSource xdf [ 0 1 dataSource length 1 sub { dup currentdict /dataSource get /exch cvx /get cvx /exec cvx /exch cvx names_index /ne cvx [ /pop cvx ] cvx /if cvx } for ] cvx bind end } bdf /devn_alt_datasource { 11 dict begin /convProc xdf /origcolorSpaceElemCnt xdf /origMultipleDataSources xdf /origBitsPerComponent xdf /origDecode xdf /origDataSource xdf /dsCnt origMultipleDataSources {origDataSource length}{1}ifelse def /DataSource origMultipleDataSources { [ BitsPerComponent 8 idiv origDecode length 2 idiv mul string 0 1 origDecode length 2 idiv 1 sub { dup 7 mul 1 add index exch dup BitsPerComponent 8 idiv mul exch origDataSource exch get 0 () /SubFileDecode filter BitsPerComponent 8 idiv string /readstring cvx /pop cvx /putinterval cvx }for ]bind cvx }{origDataSource}ifelse 0 () /SubFileDecode filter def [ origcolorSpaceElemCnt string 0 2 origDecode length 2 sub { dup origDecode exch get dup 3 -1 roll 1 add origDecode exch get exch sub 2 BitsPerComponent exp 1 sub div 1 BitsPerComponent 8 idiv {DataSource /read cvx /not cvx{0}/if cvx /mul cvx}repeat /mul cvx /add cvx }for /convProc load /exec cvx origcolorSpaceElemCnt 1 sub -1 0 { /dup cvx 2 /add cvx /index cvx 3 1 /roll cvx /exch cvx 255 /mul cvx /cvi cvx /put cvx }for ]bind cvx 0 () /SubFileDecode filter end } bdf /devn_imageormask { /devicen_colorspace_dict AGMCORE_gget begin CSA map_csa 2 dict begin dup /srcDataStrs [ 3 -1 roll begin currentdict /MultipleDataSources known {MultipleDataSources {DataSource length}{1}ifelse}{1} ifelse { Width Decode length 2 div mul cvi { dup 65535 gt {1 add 2 div cvi}{exit}ifelse } loop string } repeat end ] def /dstDataStr srcDataStrs 0 get length string def begin SkipImageProc { currentdict consumeimagedata } { save mark AGMCORE_producing_seps not { level3 not { Operator /imagemask ne { /DataSource [ [ DataSource Decode BitsPerComponent currentdict /MultipleDataSources known {MultipleDataSources}{false} ifelse colorSpaceElemCnt /devicen_colorspace_dict AGMCORE_gget /TintTransform get devn_alt_datasource 1 /string cvx /readstring cvx /pop cvx] cvx colorSpaceElemCnt 1 sub{dup}repeat] def /MultipleDataSources true def /Decode colorSpaceElemCnt [ exch {0 1} repeat ] def } if }if currentdict imageormask }{ AGMCORE_host_sep{ Names convert_to_process { CSA get_csa_by_name 0 get /DeviceCMYK eq { /DataSource Width BitsPerComponent mul 7 add 8 idiv Height mul 4 mul DataSource Decode BitsPerComponent currentdict /MultipleDataSources known {MultipleDataSources}{false} ifelse 4 /devicen_colorspace_dict AGMCORE_gget /TintTransform get devn_alt_datasource filter_cmyk 0 () /SubFileDecode filter def /MultipleDataSources false def /Decode [1 0] def /DeviceGray setcolorspace currentdict imageormask_sys }{ AGMCORE_report_unsupported_color_space AGMCORE_black_plate { /DataSource DataSource Decode BitsPerComponent currentdict /MultipleDataSources known {MultipleDataSources}{false} ifelse CSA get_csa_by_name 0 get /DeviceRGB eq{3}{1}ifelse /devicen_colorspace_dict AGMCORE_gget /TintTransform get devn_alt_datasource /MultipleDataSources false def /Decode colorSpaceElemCnt [ exch {0 1} repeat ] def currentdict imageormask_sys } { gsave knockout_unitsq grestore currentdict consumeimagedata } ifelse } ifelse } { /devicen_colorspace_dict AGMCORE_gget /names_index known { Operator/imagemask ne{ MultipleDataSources { /DataSource [ DataSource devn_sep_datasource /exec cvx ] cvx def /MultipleDataSources false def }{ /DataSource /DataSource load dstDataStr srcDataStrs 0 get filter_devn def } ifelse invert_image_samples } if currentdict imageormask_sys }{ currentoverprint not Operator/imagemask eq and{ currentdict imageormask_sys }{ currentoverprint not { gsave knockout_unitsq grestore }if currentdict consumeimagedata }ifelse }ifelse }ifelse }{ currentdict imageormask }ifelse }ifelse cleartomark restore }ifelse currentdict /_Filters known {_Filters AGMIMG_flushfilters} if end end end }def /imageormask_l2_overprint { currentdict currentcmykcolor add add add 0 eq{ currentdict consumeimagedata }{ level3{ currentcmykcolor /AGMIMG_k xdf /AGMIMG_y xdf /AGMIMG_m xdf /AGMIMG_c xdf Operator/imagemask eq{ [/DeviceN [ AGMIMG_c 0 ne {/Cyan} if AGMIMG_m 0 ne {/Magenta} if AGMIMG_y 0 ne {/Yellow} if AGMIMG_k 0 ne {/Black} if ] /DeviceCMYK {}] setcolorspace AGMIMG_c 0 ne {AGMIMG_c} if AGMIMG_m 0 ne {AGMIMG_m} if AGMIMG_y 0 ne {AGMIMG_y} if AGMIMG_k 0 ne {AGMIMG_k} if setcolor }{ /Decode [ Decode 0 get 255 mul Decode 1 get 255 mul ] def [/Indexed [ /DeviceN [ AGMIMG_c 0 ne {/Cyan} if AGMIMG_m 0 ne {/Magenta} if AGMIMG_y 0 ne {/Yellow} if AGMIMG_k 0 ne {/Black} if ] /DeviceCMYK { AGMIMG_k 0 eq {0} if AGMIMG_y 0 eq {0 exch} if AGMIMG_m 0 eq {0 3 1 roll} if AGMIMG_c 0 eq {0 4 1 roll} if } ] 255 { 255 div mark exch dup dup dup AGMIMG_k 0 ne{ /sep_tint AGMCORE_gget mul MappedCSA sep_proc_name exch pop load exec 4 1 roll pop pop pop counttomark 1 roll }{ pop }ifelse AGMIMG_y 0 ne{ /sep_tint AGMCORE_gget mul MappedCSA sep_proc_name exch pop load exec 4 2 roll pop pop pop counttomark 1 roll }{ pop }ifelse AGMIMG_m 0 ne{ /sep_tint AGMCORE_gget mul MappedCSA sep_proc_name exch pop load exec 4 3 roll pop pop pop counttomark 1 roll }{ pop }ifelse AGMIMG_c 0 ne{ /sep_tint AGMCORE_gget mul MappedCSA sep_proc_name exch pop load exec pop pop pop counttomark 1 roll }{ pop }ifelse counttomark 1 add -1 roll pop } ] setcolorspace }ifelse imageormask_sys }{ write_image_file{ currentcmykcolor 0 ne{ [/Separation /Black /DeviceGray {}] setcolorspace gsave /Black [{1 exch sub /sep_tint AGMCORE_gget mul} /exec cvx MappedCSA sep_proc_name cvx exch pop {4 1 roll pop pop pop 1 exch sub} /exec cvx] cvx modify_halftone_xfer Operator currentdict read_image_file grestore }if 0 ne{ [/Separation /Yellow /DeviceGray {}] setcolorspace gsave /Yellow [{1 exch sub /sep_tint AGMCORE_gget mul} /exec cvx MappedCSA sep_proc_name cvx exch pop {4 2 roll pop pop pop 1 exch sub} /exec cvx] cvx modify_halftone_xfer Operator currentdict read_image_file grestore }if 0 ne{ [/Separation /Magenta /DeviceGray {}] setcolorspace gsave /Magenta [{1 exch sub /sep_tint AGMCORE_gget mul} /exec cvx MappedCSA sep_proc_name cvx exch pop {4 3 roll pop pop pop 1 exch sub} /exec cvx] cvx modify_halftone_xfer Operator currentdict read_image_file grestore }if 0 ne{ [/Separation /Cyan /DeviceGray {}] setcolorspace gsave /Cyan [{1 exch sub /sep_tint AGMCORE_gget mul} /exec cvx MappedCSA sep_proc_name cvx exch pop {pop pop pop 1 exch sub} /exec cvx] cvx modify_halftone_xfer Operator currentdict read_image_file grestore } if close_image_file }{ imageormask }ifelse }ifelse }ifelse } def /indexed_imageormask { begin save mark currentdict AGMCORE_host_sep{ Operator/knockout eq{ /indexed_colorspace_dict AGMCORE_gget dup /CSA known { /CSA get get_csa_by_name }{ /Names get } ifelse overprint_plate not{ knockout_unitsq }if }{ Indexed_DeviceN { /devicen_colorspace_dict AGMCORE_gget /names_index known { indexed_image_lev2_sep }{ currentoverprint not{ knockout_unitsq }if currentdict consumeimagedata } ifelse }{ AGMCORE_is_cmyk_sep{ Operator /imagemask eq{ imageormask_sys }{ level2{ indexed_image_lev2_sep }{ indexed_image_lev1_sep }ifelse }ifelse }{ currentoverprint not{ knockout_unitsq }if currentdict consumeimagedata }ifelse }ifelse }ifelse }{ level2{ Indexed_DeviceN { /indexed_colorspace_dict AGMCORE_gget begin }{ /indexed_colorspace_dict AGMCORE_gget begin CSA get_csa_by_name 0 get /DeviceCMYK eq ps_level 3 ge and ps_version 3015.007 lt and { [/Indexed [/DeviceN [/Cyan /Magenta /Yellow /Black] /DeviceCMYK {}] HiVal Lookup] setcolorspace } if end } ifelse imageormask Indexed_DeviceN { end } if }{ Operator /imagemask eq{ imageormask }{ indexed_imageormask_lev1 }ifelse }ifelse }ifelse cleartomark restore currentdict /_Filters known {_Filters AGMIMG_flushfilters} if end }def /indexed_image_lev2_sep { /indexed_colorspace_dict AGMCORE_gget begin begin Indexed_DeviceN not { currentcolorspace dup 1 /DeviceGray put dup 3 currentcolorspace 2 get 1 add string 0 1 2 3 AGMCORE_get_ink_data 4 currentcolorspace 3 get length 1 sub { dup 4 idiv exch currentcolorspace 3 get exch get 255 exch sub 2 index 3 1 roll put }for put setcolorspace } if currentdict Operator /imagemask eq{ AGMIMG_&imagemask }{ use_mask { level3 {process_mask_L3 AGMIMG_&image}{masked_image_simulation}ifelse }{ AGMIMG_&image }ifelse }ifelse end end }def /OPIimage { dup type /dicttype ne{ 10 dict begin /DataSource xdf /ImageMatrix xdf /BitsPerComponent xdf /Height xdf /Width xdf /ImageType 1 def /Decode [0 1 def] currentdict end }if dup begin /NComponents 1 cdndf /MultipleDataSources false cdndf /SkipImageProc {false} cdndf /HostSepColorImage false cdndf /Decode [ 0 currentcolorspace 0 get /Indexed eq{ 2 BitsPerComponent exp 1 sub }{ 1 }ifelse ] cdndf /Operator /image cdndf end /sep_colorspace_dict AGMCORE_gget null eq{ imageormask }{ gsave dup begin invert_image_samples end sep_imageormask grestore }ifelse }def /cachemask_level2 { 3 dict begin /LZWEncode filter /WriteFilter xdf /readBuffer 256 string def /ReadFilter currentfile 0 (%EndMask) /SubFileDecode filter /ASCII85Decode filter /RunLengthDecode filter def { ReadFilter readBuffer readstring exch WriteFilter exch writestring not {exit} if }loop WriteFilter closefile end }def /cachemask_level3 { currentfile << /Filter [ /SubFileDecode /ASCII85Decode /RunLengthDecode ] /DecodeParms [ << /EODCount 0 /EODString (%EndMask) >> null null ] /Intent 1 >> /ReusableStreamDecode filter }def /spot_alias { /mapto_sep_imageormask { dup type /dicttype ne{ 12 dict begin /ImageType 1 def /DataSource xdf /ImageMatrix xdf /BitsPerComponent xdf /Height xdf /Width xdf /MultipleDataSources false def }{ begin }ifelse /Decode [/customcolor_tint AGMCORE_gget 0] def /Operator /image def /HostSepColorImage false def /SkipImageProc {false} def currentdict end sep_imageormask }bdf /customcolorimage { Adobe_AGM_Image/AGMIMG_colorAry xddf /customcolor_tint AGMCORE_gget << /Name AGMIMG_colorAry 4 get /CSA [ /DeviceCMYK ] /TintMethod /Subtractive /TintProc null /MappedCSA null /NComponents 4 /Components [ AGMIMG_colorAry aload pop pop ] >> setsepcolorspace mapto_sep_imageormask }ndf Adobe_AGM_Image/AGMIMG_&customcolorimage /customcolorimage load put /customcolorimage { Adobe_AGM_Image/AGMIMG_override false put current_spot_alias{dup 4 get map_alias}{false}ifelse { false set_spot_alias /customcolor_tint AGMCORE_gget exch setsepcolorspace pop mapto_sep_imageormask true set_spot_alias }{ AGMIMG_&customcolorimage }ifelse }bdf }def /snap_to_device { 6 dict begin matrix currentmatrix dup 0 get 0 eq 1 index 3 get 0 eq and 1 index 1 get 0 eq 2 index 2 get 0 eq and or exch pop { 1 1 dtransform 0 gt exch 0 gt /AGMIMG_xSign? exch def /AGMIMG_ySign? exch def 0 0 transform AGMIMG_ySign? {floor 0.1 sub}{ceiling 0.1 add} ifelse exch AGMIMG_xSign? {floor 0.1 sub}{ceiling 0.1 add} ifelse exch itransform /AGMIMG_llY exch def /AGMIMG_llX exch def 1 1 transform AGMIMG_ySign? {ceiling 0.1 add}{floor 0.1 sub} ifelse exch AGMIMG_xSign? {ceiling 0.1 add}{floor 0.1 sub} ifelse exch itransform /AGMIMG_urY exch def /AGMIMG_urX exch def [AGMIMG_urX AGMIMG_llX sub 0 0 AGMIMG_urY AGMIMG_llY sub AGMIMG_llX AGMIMG_llY] concat }{ }ifelse end } def level2 not{ /colorbuf { 0 1 2 index length 1 sub{ dup 2 index exch get 255 exch sub 2 index 3 1 roll put }for }def /tint_image_to_color { begin Width Height BitsPerComponent ImageMatrix /DataSource load end Adobe_AGM_Image begin /AGMIMG_mbuf 0 string def /AGMIMG_ybuf 0 string def /AGMIMG_kbuf 0 string def { colorbuf dup length AGMIMG_mbuf length ne { dup length dup dup /AGMIMG_mbuf exch string def /AGMIMG_ybuf exch string def /AGMIMG_kbuf exch string def } if dup AGMIMG_mbuf copy AGMIMG_ybuf copy AGMIMG_kbuf copy pop } addprocs {AGMIMG_mbuf}{AGMIMG_ybuf}{AGMIMG_kbuf} true 4 colorimage end } def /sep_imageormask_lev1 { begin MappedCSA 0 get dup /DeviceRGB eq exch /DeviceCMYK eq or has_color not and{ { 255 mul round cvi GrayLookup exch get } currenttransfer addprocs settransfer currentdict imageormask }{ /sep_colorspace_dict AGMCORE_gget/Components known{ MappedCSA 0 get /DeviceCMYK eq{ Components aload pop }{ 0 0 0 Components aload pop 1 exch sub }ifelse Adobe_AGM_Image/AGMIMG_k xddf Adobe_AGM_Image/AGMIMG_y xddf Adobe_AGM_Image/AGMIMG_m xddf Adobe_AGM_Image/AGMIMG_c xddf AGMIMG_y 0.0 eq AGMIMG_m 0.0 eq and AGMIMG_c 0.0 eq and{ {AGMIMG_k mul 1 exch sub} currenttransfer addprocs settransfer currentdict imageormask }{ currentcolortransfer {AGMIMG_k mul 1 exch sub} exch addprocs 4 1 roll {AGMIMG_y mul 1 exch sub} exch addprocs 4 1 roll {AGMIMG_m mul 1 exch sub} exch addprocs 4 1 roll {AGMIMG_c mul 1 exch sub} exch addprocs 4 1 roll setcolortransfer currentdict tint_image_to_color }ifelse }{ MappedCSA 0 get /DeviceGray eq { {255 mul round cvi ColorLookup exch get 0 get} currenttransfer addprocs settransfer currentdict imageormask }{ MappedCSA 0 get /DeviceCMYK eq { currentcolortransfer {255 mul round cvi ColorLookup exch get 3 get 1 exch sub} exch addprocs 4 1 roll {255 mul round cvi ColorLookup exch get 2 get 1 exch sub} exch addprocs 4 1 roll {255 mul round cvi ColorLookup exch get 1 get 1 exch sub} exch addprocs 4 1 roll {255 mul round cvi ColorLookup exch get 0 get 1 exch sub} exch addprocs 4 1 roll setcolortransfer currentdict tint_image_to_color }{ currentcolortransfer {pop 1} exch addprocs 4 1 roll {255 mul round cvi ColorLookup exch get 2 get} exch addprocs 4 1 roll {255 mul round cvi ColorLookup exch get 1 get} exch addprocs 4 1 roll {255 mul round cvi ColorLookup exch get 0 get} exch addprocs 4 1 roll setcolortransfer currentdict tint_image_to_color }ifelse }ifelse }ifelse }ifelse end }def /sep_image_lev1_sep { begin /sep_colorspace_dict AGMCORE_gget/Components known{ Components aload pop Adobe_AGM_Image/AGMIMG_k xddf Adobe_AGM_Image/AGMIMG_y xddf Adobe_AGM_Image/AGMIMG_m xddf Adobe_AGM_Image/AGMIMG_c xddf {AGMIMG_c mul 1 exch sub} {AGMIMG_m mul 1 exch sub} {AGMIMG_y mul 1 exch sub} {AGMIMG_k mul 1 exch sub} }{ {255 mul round cvi ColorLookup exch get 0 get 1 exch sub} {255 mul round cvi ColorLookup exch get 1 get 1 exch sub} {255 mul round cvi ColorLookup exch get 2 get 1 exch sub} {255 mul round cvi ColorLookup exch get 3 get 1 exch sub} }ifelse AGMCORE_get_ink_data currenttransfer addprocs settransfer currentdict imageormask_sys end }def /indexed_imageormask_lev1 { /indexed_colorspace_dict AGMCORE_gget begin begin currentdict MappedCSA 0 get dup /DeviceRGB eq exch /DeviceCMYK eq or has_color not and{ {HiVal mul round cvi GrayLookup exch get HiVal div} currenttransfer addprocs settransfer imageormask }{ MappedCSA 0 get /DeviceGray eq { {HiVal mul round cvi Lookup exch get HiVal div} currenttransfer addprocs settransfer imageormask }{ MappedCSA 0 get /DeviceCMYK eq { currentcolortransfer {4 mul HiVal mul round cvi 3 add Lookup exch get HiVal div 1 exch sub} exch addprocs 4 1 roll {4 mul HiVal mul round cvi 2 add Lookup exch get HiVal div 1 exch sub} exch addprocs 4 1 roll {4 mul HiVal mul round cvi 1 add Lookup exch get HiVal div 1 exch sub} exch addprocs 4 1 roll {4 mul HiVal mul round cvi Lookup exch get HiVal div 1 exch sub} exch addprocs 4 1 roll setcolortransfer tint_image_to_color }{ currentcolortransfer {pop 1} exch addprocs 4 1 roll {3 mul HiVal mul round cvi 2 add Lookup exch get HiVal div} exch addprocs 4 1 roll {3 mul HiVal mul round cvi 1 add Lookup exch get HiVal div} exch addprocs 4 1 roll {3 mul HiVal mul round cvi Lookup exch get HiVal div} exch addprocs 4 1 roll setcolortransfer tint_image_to_color }ifelse }ifelse }ifelse end end }def /indexed_image_lev1_sep { /indexed_colorspace_dict AGMCORE_gget begin begin {4 mul HiVal mul round cvi Lookup exch get HiVal div 1 exch sub} {4 mul HiVal mul round cvi 1 add Lookup exch get HiVal div 1 exch sub} {4 mul HiVal mul round cvi 2 add Lookup exch get HiVal div 1 exch sub} {4 mul HiVal mul round cvi 3 add Lookup exch get HiVal div 1 exch sub} AGMCORE_get_ink_data currenttransfer addprocs settransfer currentdict imageormask_sys end end }def }if end systemdict /setpacking known { setpacking } if %%EndResource currentdict Adobe_AGM_Utils eq {end} if %%EndProlog %%BeginSetup Adobe_AGM_Utils begin 2 2010 Adobe_AGM_Core/doc_setup get exec Adobe_CoolType_Core/doc_setup get exec Adobe_AGM_Image/doc_setup get exec currentdict Adobe_AGM_Utils eq {end} if %%EndSetup %%Page: (Page 1) 1 %%EndPageComments %%BeginPageSetup /currentdistillerparams where {pop currentdistillerparams /CoreDistVersion get 5000 lt} {true} ifelse { userdict /AI11_PDFMark5 /cleartomark load put userdict /AI11_ReadMetadata_PDFMark5 {flushfile cleartomark } bind put} { userdict /AI11_PDFMark5 /pdfmark load put userdict /AI11_ReadMetadata_PDFMark5 {/PUT pdfmark} bind put } ifelse [/NamespacePush AI11_PDFMark5 [/_objdef {ai_metadata_stream_123} /type /stream /OBJ AI11_PDFMark5 [{ai_metadata_stream_123} currentfile 0 (% &&end XMP packet marker&&) /SubFileDecode filter AI11_ReadMetadata_PDFMark5 <?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?>
+<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="3.1.1-111">
+ <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
+ <rdf:Description rdf:about=""
+ xmlns:dc="http://purl.org/dc/elements/1.1/">
+ <dc:format>application/postscript</dc:format>
+ </rdf:Description>
+ <rdf:Description rdf:about=""
+ xmlns:xap="http://ns.adobe.com/xap/1.0/"
+ xmlns:xapGImg="http://ns.adobe.com/xap/1.0/g/img/">
+ <xap:CreatorTool>Adobe Illustrator CS2</xap:CreatorTool>
+ <xap:CreateDate>2007-10-08T19:08:06-04:00</xap:CreateDate>
+ <xap:ModifyDate>2007-10-08T19:08:06-04:00</xap:ModifyDate>
+ <xap:MetadataDate>2007-10-08T19:08:06-04:00</xap:MetadataDate>
+ <xap:Thumbnails>
+ <rdf:Alt>
+ <rdf:li rdf:parseType="Resource">
+ <xapGImg:width>256</xapGImg:width>
+ <xapGImg:height>256</xapGImg:height>
+ <xapGImg:format>JPEG</xapGImg:format>
+ <xapGImg:image>/9j/4AAQSkZJRgABAgEAyADIAAD/7QAsUGhvdG9zaG9wIDMuMAA4QklNA+0AAAAAABAAyAAAAAEA&#xA;AQDIAAAAAQAB/+4ADkFkb2JlAGTAAAAAAf/bAIQABgQEBAUEBgUFBgkGBQYJCwgGBggLDAoKCwoK&#xA;DBAMDAwMDAwQDA4PEA8ODBMTFBQTExwbGxscHx8fHx8fHx8fHwEHBwcNDA0YEBAYGhURFRofHx8f&#xA;Hx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8f/8AAEQgBAAEAAwER&#xA;AAIRAQMRAf/EAaIAAAAHAQEBAQEAAAAAAAAAAAQFAwIGAQAHCAkKCwEAAgIDAQEBAQEAAAAAAAAA&#xA;AQACAwQFBgcICQoLEAACAQMDAgQCBgcDBAIGAnMBAgMRBAAFIRIxQVEGE2EicYEUMpGhBxWxQiPB&#xA;UtHhMxZi8CRygvElQzRTkqKyY3PCNUQnk6OzNhdUZHTD0uIIJoMJChgZhJRFRqS0VtNVKBry4/PE&#xA;1OT0ZXWFlaW1xdXl9WZ2hpamtsbW5vY3R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo+Ck5SVlpeYmZ&#xA;qbnJ2en5KjpKWmp6ipqqusra6voRAAICAQIDBQUEBQYECAMDbQEAAhEDBCESMUEFURNhIgZxgZEy&#xA;obHwFMHR4SNCFVJicvEzJDRDghaSUyWiY7LCB3PSNeJEgxdUkwgJChgZJjZFGidkdFU38qOzwygp&#xA;0+PzhJSktMTU5PRldYWVpbXF1eX1RlZmdoaWprbG1ub2R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo&#xA;+DlJWWl5iZmpucnZ6fkqOkpaanqKmqq6ytrq+v/aAAwDAQACEQMRAD8A4NiydirsVdirsVdirsVd&#xA;irsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVRFhYXuoXsNjY&#xA;wvc3ly4jggjBZ3djQKoHUnFWT/8AKofzP/6lfUf+kd/6Yrbv+VQ/mf8A9SvqP/SO/wDTFbd/yqH8&#xA;z/8AqV9R/wCkd/6Yrbv+VQ/mf/1K+o/9I7/0xW3f8qh/M/8A6lfUf+kd/wCmK27/AJVD+Z//AFK+&#xA;o/8ASO/9MVt3/KofzP8A+pX1H/pHf+mK27/lUP5n/wDUr6j/ANI7/wBMVt3/ACqH8z/+pX1H/pHf&#xA;+mK27/lUP5n/APUr6j/0jv8A0xW3f8qh/M//AKlfUf8ApHf+mK27/lUP5n/9SvqP/SO/9MVt3/Ko&#xA;fzP/AOpX1H/pHf8Apitu/wCVQ/mf/wBSvqP/AEjv/TFbd/yqH8z/APqV9R/6R3/pitu/5VD+Z/8A&#xA;1K+o/wDSO/8ATFbd/wAqh/M//qV9R/6R3/pitu/5VD+Z/wD1K+o/9I7/ANMVt3/KofzP/wCpX1H/&#xA;AKR3/pitu/5VD+Z//Ur6j/0jv/TFbd/yqH8z/wDqV9R/6R3/AKYrbv8AlUP5n/8AUr6j/wBI7/0x&#xA;W3f8qh/M/wD6lfUf+kd/6Yrbv+VQ/mf/ANSvqP8A0jv/AExW3f8AKofzP/6lfUf+kd/6Yrbv+VQ/&#xA;mf8A9SvqP/SO/wDTFbd/yqH8z/8AqV9R/wCkd/6Yrbv+VQ/mf/1K+o/9I7/0xW2MX9he6fezWN9C&#xA;9teWzmOeCQFXR1NCrA9CMVQ+KuxVl/5Q/wDkz/K//bRt/wDiYxUvvPFi7FXYq7FXYq7FXYq7FXYq&#xA;7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXwZ+b3/kz/NH/AG0bj/iZxZBiGKux&#xA;Vl/5Q/8Akz/K/wD20bf/AImMVL7zxYuxV2KuxV2KuxV2KuxV2KpP5o84eWfK2nm/1/UIrC33Ceoa&#xA;u5ArxjjWrufZRirxrXP+cu/LlvKyaLodzqCjYTXEqWqn3Cqs7U+dMU0llh/zmEDKBqHlikRO8lvd&#xA;1YD/AFHiAP8AwQxWnqXkX88Py/8AOMyWljeNZ6m9OOn3qiKVie0ZBaNz7K1fbFDPsVdirsVdirsV&#xA;dirsVdirsVdirsVdirsVdirsVfBn5vf+TP8ANH/bRuP+JnFkGIYq7FWX/lD/AOTP8r/9tG3/AOJj&#xA;FS+88WLsVdirsVdirsVdirsVYj+Z/wCYmm+Q/LEur3Sie6c+jp9ly4maYioHiFUbsfD3IxV8Seaf&#xA;NfmDzZrcuq6zcvd3s7URd+KKT8McSfsqK7AfrxZPQvKH/OM/5h69bLeXqw6JbOKxi9LeuwPQ+igY&#xA;r/sypxRae6r/AM4j+b4LYyabrFlezKtTBIskBJ7hW/eD5VpitvHfMXlnzF5Y1RtP1qyl0++ioyq4&#xA;pUdnjdaq4/ylOKX0V/zjx+d93q00fk/zNcerfhf9xOoSH45goqYJSergD4G/a6HfqoIfQWKHYq7F&#xA;XYq7FXYq7FXYq7FXYq7FXYq7FXYq+DPze/8AJn+aP+2jcf8AEziyDEMVdirL/wAof/Jn+V/+2jb/&#xA;APExipfeeLF2KuxV2KuxV2KuxV2Kvjf/AJyZ82za1+Y82mo5NjoUa2sSV+H1mAkmenjyYIf9XFIZ&#xA;p/zi5+WNncRSeeNVhWZkkaDRonFVVk2kuN9ia/AvgQT4YqX0pih2KsP/ADR/LnSvPXlifTblFXUI&#xA;laTS70j4oZ6bb9eDUo48PcDFXwzFJqWi6usiFrXUtNuAVI+1HPA/61ZcWT9APKOvxeYfK+la3GOK&#xA;6jaxXBT+VnUF1/2LVGLFNsVdirsVdirsVdirsVdirsVdirsVdirsVfBn5vf+TP8ANH/bRuP+JnFk&#xA;GIYq7FWX/lD/AOTP8r/9tG3/AOJjFS+88WLsVdirsVdirsVdirsVfAf5nmQ/mT5qMhJb9L3wHKte&#xA;IuXC9e1OmLJ9hfkYkCflN5bEAAQ2xJA/naVy/wDw5OLFnWKuxV2Kvg384Y7dPzR8zrBTgdQmY02+&#xA;Nm5SdKftk4sg+rf+cemmb8nfLplrz43IFRQ8ReTBP+FpixL0XFXYq7FXYq7FXYq7FXYq7FXYq7FX&#xA;Yq7FXwZ+b3/kz/NH/bRuP+JnFkGIYq7FWX/lD/5M/wAr/wDbRt/+JjFS+88WLsVdirsVdirsVdir&#xA;sVfF/wDzkh5Wn0T8zb274EWetKt7bPTYsQEmWviJFJ+kYpD0v/nFj8yLJ9LfyPqEyxXdu7z6RzNB&#xA;LFIS8sS1/aRyz07gnwxUvoXFDsVY55/88aT5L8s3Wt6i4rGpW0t6/HPOw+CNR13PXwFTir4MubjU&#xA;NY1eW4k5XGo6jcNI/EVaSad6mg8WZsWT768j+XR5c8n6PoexewtY4pmHQy8aysPm5JxYp5irsVdi&#xA;rsVdirsVdirsVdirsVdirsVdir4M/N7/AMmf5o/7aNx/xM4sgxDFXYqy/wDKH/yZ/lf/ALaNv/xM&#xA;YqX3nixdirsVdirsVdirsVdirBfzh/LK18/eVzZKVh1ezLTaVctsFkIo0bkVPCQAA/Qe2KvinUtN&#xA;17y1rb2l7FNpur2EoNDVJI3Q1V0YferKfcYsnsXlD/nK7zTpltHa+YdPi1pIwFF2j/VrggbVchZE&#xA;c/7EYopPNT/5zAY2xXS/LQS5NeMl1c8418KoiIW/4IYrTxDzr5+80ec9T/SGvXZndKi3t1+CCFT1&#xA;WKMbL03PU9ycUvav+ccfyXvPrsHnXzFbtDDBSTRLOQUZ3I2uXU9FUf3fifi6AVUEvpfFDsVdirsV&#xA;dirsVdirsVdirsVdirsVdirsVfBn5vf+TP8ANH/bRuP+JnFkGIYq7FWX/lD/AOTP8r/9tG3/AOJj&#xA;FS+88WLsVdirsVdirsVdirsVdirF/PH5a+T/ADraCHXbESzRikF7EfTuIq/ySDt/ktUe2KvEdb/5&#xA;xBuxMzaF5gjaEn4Yr6IqyiveSIsG/wCAGKbYZ54/5xz80+UPK955hvNQs7q2sjH6sNv6peksqxA/&#xA;GiDYuCcVtjH5PXuhWf5k6JPry27aUsri4a84eihMTiORi/wjhJxap8MUl9W6t/zkB+Uum1D68l1J&#xA;vSO0jlnrT/LRSn3tixYD5u/5yy0FdNuoPK1hdSakycba8u0jSFGP7fAO7NxHQEDf2xTTDvL35M/m&#xA;v560NfN115g9O5vlM1lHdTTGWRRXgSy1WJWP2aduwxVnH/OO35k+Z7vWdS8h+apJLjUdMWRra4nP&#xA;OZDbyCKaCV9y/FjVST2Ir0xUvesUOxV2KuxV2KuxV2KuxV2KuxV2Kvgz83v/ACZ/mj/to3H/ABM4&#xA;sgxDFXYqy/8AKH/yZ/lf/to2/wDxMYqX3nixdirsVdirsVdirsVaZlVSzEBQKknYADFXzDq/5qfm&#xA;v+ZPm260X8umey0m1LFJYSsTtEp4iaed/sc/2VWn0kVxSls35wfnf+Wt/NovmhE1CaSPnaHUB6oo&#xA;TQSRzQsjSLsQQW+7FaSDVv8AnJb82b/kItRg05G6paW8Y+5pRK4+/FaYXrfnzzrrqNHq+uX17C/2&#xA;oJZ5DF1r/dV4dvDFNJDirK9J/Kn8yNWVXsfLl+8bbrLJC0KEezy8FP34rbKR/wA40fmuNOnvJbG3&#xA;ieCNpBZ/WEknfiK8UEXqIWPYcsUWyTyX/wA5Lah5S8px+WtT0FrjUdJj+rWkhkMFAlQqzxshYFOm&#xA;3X264rTGPyf/ADI03SvzXm8z+amY/pb11mu0+xBNdSK5kZdz6YoVoOgPtipfZ8M0U0STQuskMih4&#xA;5EIZWVhUMpGxBGKF2KuxV2KuxV2KsT84fmr5C8oSrb67qscF4wBFnGrzT0PRmjiDlAexalcVV/J/&#xA;5k+SfOCv/h/VI7uaJeUtsQ0UyrWnIxSBH4125AUxVkuKuxV2Kvgz83v/ACZ/mj/to3H/ABM4sgxD&#xA;FXYqy/8AKH/yZ/lf/to2/wDxMYqX3nixdirsVdirsVdirsVS3zJe6bZeX9RutUnFrp8VvKbq4Nfg&#xA;jKkEim5O+wG9cVfJn5E/mpo35eavq1prEbT6bqXp0vrVQ7K1uX4tQ8WZHEh9we3XFJRf5neak/OX&#xA;z/oejeVbSb6vADAlzKlGIlcGaZ1BPGONVB3NeuKvUdK/5xQ/Lq1o19dahqD91aVIo/ujQP8A8Pit&#xA;sw0z8j/yo05AkHlu1loKFrkPck17/v2kxQ+ItZ06TTNYvtNkr6llcS27161icof+I4sn3r+Xeq/p&#xA;byH5f1GtXuNPt2lJ/wB+CILJ/wAODixZDiqSeZPJPlXzLaT22s6Zb3QuEMbTtGvrKCKApLTmrCmx&#xA;BxV8afmx+U+s/l/rPpS8rrRbpj+jtRpsw6+nJTZZFHUd+o9lkCzD8ifz2l8ryxeXPMcrSeXJG42t&#xA;01WazZj95hJ6j9nqO4xQQ+tIZopokmhdZIZFDxyIQysrCoZSNiCMULsVdiqQ+afPflHyrb+vr+qQ&#xA;WIIqkLNymcf5EKcpG+hcVeGedP8AnLU/vLbyfplOqjUdQ+6qQIfuLN81xTTG/wAify/0j8zNe1/X&#xA;fOM8moyW7xyS2wkaNppbkuS8jR8WCj06KFI+4UxUrPzX8rWX5S/mNoWreUppYYph9ZWxLs7J6cnG&#xA;SPkTyaOVTxo1e++KvrjFDsVdir4M/N7/AMmf5o/7aNx/xM4sgxDFXYqy/wDKH/yZ/lf/ALaNv/xM&#xA;YqX3nixdirsVdirsVdirsVfNn/OVP5j8mh8j6dLsvG51llPU/ahgPy/vG/2OKQ89/IP8tF86+bue&#xA;oQ+poGlr6uog/ZkZqiKCo3HM1Jp+yD02xUvrnyz5G8o+V0kXQNKt9PMu0skS1kYdaNI3JyPauKE8&#xA;xV2Kvhn89NKOmfmv5ih48VmuRdrQUB+tIsxP/BOcWQfSf/ONGq/X/wAptPhLBn06e5tH8R+8Myg/&#xA;JZhixL1PFXYqlvmPy5o3mTRrnR9YtlurC6XjJG3UH9l0bqrKdwR0xV8V/mx+U+s/l/rPpS8rrRbp&#xA;j+jtRpsw6+nJTZZFHUd+o9lkCnn5V/8AOQev+SLF9KvLY61pCqfqVs8vpPA9a0SThJ+7Nd1pt1Hc&#xA;FRT1mz/5y08kSaVLcXWm30GoptHYIEkV69xNVAAO9Vr4A4rTy/zp/wA5O+fdcMlvo/DQLFqgfVz6&#xA;lyV/yp2G3+wVcVp5Uq6trOo0UXGo6ldN0HOeeRv+Gdjil6v5L/5xg89616dxrTR6BYtQkTfvboj2&#xA;hU0X/ZsD7YotP9Q/I/8ANn8v9dbU/wAuL5722kQIWVoUnCnqs0M37qReXSlfkMVtMfJP5J/mH5m8&#xA;5QebPzOnalq6SJaySRvNMYm5Rx8YaxRQhtyop8t64q+j8UOxV2Kvgz83v/Jn+aP+2jcf8TOLIMQx&#xA;V2Ksv/KH/wAmf5X/AO2jb/8AExipfeeLF2KuxV2KuxV2Kse/MDzlY+TvKd/r13RvqyUtoSaerO+0&#xA;UY+bdfapxV8G3t5qvmDXJbqcvd6pqdwWalS0k0zbKo9yaAYsn3F+U3kGDyP5Ms9Iopv5B9Y1OZaH&#xA;ncyAcgD3VAAi+wxYsxxV2KuxV8lf85ZaUbbz/Y6gopHf6enI+MkMjq3/AAhTFIZj/wA4garz0fzF&#xA;pJb/AHnuILpV/wCM6NGxH/IgVxUvoTFDsVdirGfzN0e31f8AL/zBZy2qXjmwuZLWFxX/AEiOJmhZ&#xA;e4YOBQjFXhf/ADifo/k69OsXF7DBc+YYXQW0U4V2S2K1LxK3cvszAVG3jupLF/8AnIPy9oD/AJqW&#xA;uk+U4Iv0hfRwxXllahVQXssrKq0FFV2Ury+/rXFQzTyX/wA4lRrwufOGp8z1OnafsPk87ivzCp/s&#xA;sVt7l5Y8keU/K1t9X0DS4LBSAHkRayvT+eVuUj/7JsUJ5irsVdirsVdirsVfBn5vf+TP80f9tG4/&#xA;4mcWQYhirsVZf+UP/kz/ACv/ANtG3/4mMVL7zxYuxV2KuxV2KvOvzv8AzSbyB5Zims40l1rUnaHT&#xA;0k3ROC1kmYftBOS7eJHbFXz95k8m/n95t8rp5j1sXWo6ZveRWbyoHVCv98lovGg4nYBeVO1MUpl/&#xA;ziv5N0/WPN15rt4yOdASN7W1PUz3HNVlp4RhG/2RB7YqX1pih2KuxV2Kvnz/AJy+0r1ND8vasF/3&#xA;muZrRnp/y0RiRQT/ANG5pikMM/5xP1X6t+YV7YMfgv8AT5Ao7mSGRHH/AAnPFS+tsUOxV2KuxV4H&#xA;50/5xYtr7W5dV8q6sNIFw7SPZSozRxs/2vReMhlU1+yQaeNNsU2nf5Vf847aX5O1Vdd1a9/S+sxc&#xA;ja0ThBCzbFwGLM706E9PCu+KLew4q7FXYq7FXYq7FXYq7FXwZ+b3/kz/ADR/20bj/iZxZBiGKuxV&#xA;l/5Q/wDkz/K//bRt/wDiYxUvvPFi7FXYq1JIkaNJIwSNAWd2NAANySTirxX8x/8AnJzyzoXq2Hlh&#xA;U1zVFqv1kE/Uo2/1xvN8k2/ysU0+ZvN/njzR5v1H6/r9893KnIQR7LFErGpWKNaKo2Hue9cUvoHS&#xA;P+cq/Ltr5IgW5sbiTzPbW6w/VlVRbyTIvESepyqqNSpHGo6CvXFFO/5xN8rapb2es+Z7yMxW2pmO&#xA;CyBHESCNmaWQKKDjyYKtPfFS+g8UOxV2KuxV5d/zkppRv/ym1KRV5PYTW92o9hKI2P0JKTiofNH5&#xA;HaqdM/Nfy3Py4iW6+qtvsfrSNAAfpkGLIvq/82fzU0v8vdDju5ovrep3jNHp9gG4cyoq7u29ESor&#xA;t1IHuFi8VH/OR35x2sMWuX3luH/D0rArMbS6igdGNFCXLMy1PY7/ACxTT3/8vvPmkeePLUOuaYDG&#xA;rMYrq1cgvDMlC0bEbHYhge4IxQyTFXYq7FXYq7FXYq7FXYq7FXYq7FXwZ+b3/kz/ADR/20bj/iZx&#xA;ZBiGKuxVl/5Q/wDkz/K//bRt/wDiYxUvvPFiwvz/APm/5J8jMkOs3LyX8i800+1USzlOzEEoqg02&#xA;5MK4qwi5/wCcsPy8GmTXNrZ6hJfLtDYTRxxFz4mRXlRV8TufY4pp4J+Yf50edfO8jw3tz9T0gn4N&#xA;KtSUipXb1T9qU/623gBimkB5E/K3zl52uRHo1kfqitSbUZqx20fjV6fEf8lanFbfT/5d/wDOO3kv&#xA;yqsd3qUa67rAoTPcoDBG3/FUJqux/aap+WLFkjfk5+VzX/18+WrH6wTyI9OkVa1/ua+l/wALirMI&#xA;oo4o0iiQRxRgKiKAFVQKAADoBiq7FXYq8r/5yF/MrUPJflSCLSH9HWNYkeG3uKAmKKNQZZFr+18S&#xA;qPCte2KvI7H/AJx2/M3U9Bj81vrVPME0Qube0llla5KsOShrnkeMjA7DxO5G+KbYpf8A58/mLeeU&#xA;5vKmpTQ3VtLG9tc3VxEWu2Q7cXctTkvZuPLxNcVp53DNLDKk0LtHNGweORCVZWU1DKRuCDilFjVb&#xA;i41KC71WSXUAkiNMs8jOzoGBZeTEn4htir6+84/nF+VVx+XF+8WpWt5He2UkFto6EeuXkjKpG8A+&#xA;KMKSPiIAHbFi8K/Ir85LXyDdXdjqlq8+j6k8byzQmssDoCvMIdnUg/EOu21emKSH17omu6Prumxa&#xA;lpF5FfWMwrHPC3JfcHurDuDuMUI7FXYq7FXYq7FXYq7FXYq7FXYq+DPze/8AJn+aP+2jcf8AEziy&#xA;DEMVdirL/wAof/Jn+V/+2jb/APExipfeeLF8nflzoWlefPz08wN5w/0l4Hu547CUlRI8MwiSM0oe&#xA;MUf7Pt4VxSjf+cnfy98leXLXR9S0O1i029u5ZIJbKD4Y5I0Xl6oj6KUJAJHXlioTz8pP+catDk0z&#xA;TvMXmuU373kEV3b6UgaOFFlRZFE5PF3YA/Euwr/NitvoKzs7SytY7WzhS3tYV4xQRKERFHZVWgAx&#xA;QrYq7FXYq7FXYq+Sv+coPP8Ap2veZYPL1lGsqeX2kWW9B3NxLQTxD/JTgoP+UDikI3TP+crdas/K&#xA;MWlnR0m12CBbeDUjL+7JVQqyvDwqW8RyoT92K0u/Kn/nG5/M2ltrvnKW805Lp+dpZxcIp5EO5lk9&#xA;RH4hyfhHGtN+4xW3rWk/845flLp5DNpL30gpR7ueV+niiskZr/q4oZDdflT+XFzpE2lHy7YRWk4o&#xA;/oQRxSV7MJUCyBh41xVgEX/OJv5dJemZ73U5LapK2plhAFexcRBiB27++KbeQ/mr/wA4+eYvJ5m1&#xA;PSuer+XVq7Tqv7+3X/i9F6qP5128QuK2wvyL+YvmryTqX13Q7oxo5H1qykq1vOo7SJ+phRh2OKaf&#xA;W/5X/nd5W89RJaqw07XwtZdLmbdqDdoHNBIPb7Q7jvixei4q7FXYq7FXYq7FXYq7FXYq+DPze/8A&#xA;Jn+aP+2jcf8AEziyDEMVdirL/wAof/Jn+V/+2jb/APExipfeeLF4V+an/OPmq6p5lfzb5Iv103V5&#xA;nM11A0jwVmPWaCaMEoz/ALQPfeuKbSTy9/zjn5413zDDq35k6v8AW7aAgtbC4kuZ5VXcR82AWOM9&#xA;+JJ+XXFbfR8caRoscahI0AVEUUAA2AAGKG8VdirsVdirsVedfnj+ZSeR/KEj2sgGu6lyt9MTupp+&#xA;8np4RA7f5RGKvjby/oWreZdftNI09TPqGozBELEndjVnc7nioqzHwxZPuryd+X/lvyvoen6ZZ2cM&#xA;klggH114k9Z5eryl6VqzEnrt0xYskxV2KuxV2KuIBFDuDirxD81v+ca9H1/1tW8piPS9Yary2X2b&#xA;Sc+wA/dOfEfCe4HXFNvl7VtH17y3rDWWpW82m6paMG4NVHUg/C6MOo2+FlNPDFL3X8qf+cnbm29H&#xA;R/PLNcW+yQ62grKg6D6wo+2P8tfi8QeuKKfSlhqFjqNnDfWFxHdWdwoeC4hYPG6nurLUHFCvirsV&#xA;dirsVdirsVdir4M/N7/yZ/mj/to3H/EziyDEMVdirL/yh/8AJn+V/wDto2//ABMYqX3nixdirsVd&#xA;irsVdirsVdiqhf39np9jcX97KsFnaxtNcTuaKkaAszH5AYq+E/zU8/3fnnzhdaxJySyX9xptuf8A&#xA;dduhPH/ZMSWb3OLIPfv+cYvyxOj6M3nDU4eOparHx05HG8Vod+Yr0M3X/Vp4nFBe64odirsVdirs&#xA;VdirsVY156/Lvyt520z6lrloJHQH6reR0W4gY943/Wpqp7jFXyT+aH5H+avIsr3XE6loJP7vU4VP&#xA;wCuyzoKmM+/2T412xTaWfl3+bPm7yJdE6XOJtOkblcaXPVoHJ6sADVH/AMpfprimnsOhf85X38eq&#xA;Qw+avL4s9PuCCLm2MgkjjY/DJ6cgPqL48SPbwxRT6ItLu2vLWG7tZFmtriNZYJVNVdHAZWB8CDXF&#xA;CrirsVdirsVdir4M/N7/AMmf5o/7aNx/xM4sgxDFXYqy/wDKH/yZ/lf/ALaNv/xMYqX3nixdirsV&#xA;dirsVdirsVdir5w/5yk/M/iq+RdLm+I8ZtbkQ9Bs0VuaeOzt/sffFIeX/kh+WsnnjzfHFcIf0Jpv&#xA;G41STsy1+CGvjKRT/VBxUvt2OOOKNY41CRoAqIoAUKBQAAdAMULsVdirsVeU/mH/AM5FeT/J+qya&#xA;PHBNq+pwErdR25VIonH7DyNX4/EKpp332xWkR+W/5/8AlDztqC6Sscul6w4LQ2tyVZJeIqwikX7T&#xA;Ab0IB8K4q9OxV2KuxVbNDFNE8MyLJFICskbgMrKdiCDsQcVfI3njQ/K/kX/nIC0lv9OWDyk01vex&#xA;2yoXiEbRhXYIa1VLhWbiOwoB2xSy/wD5yU/MD8vdc8oWen6XfW+q6ublJreW2Ik9CMKfULuPs8uQ&#xA;HHr92Kh6H/zjzrtjqn5W6VBb3HrXGmBrO8U1BRwxdV37em60PTFD0nFXYq7FXYq7FXwZ+b3/AJM/&#xA;zR/20bj/AImcWQYhirsVZf8AlD/5M/yv/wBtG3/4mMVL7zxYuxV2KuxV2KuxV2KsR/M78w9M8j+V&#xA;7vU55In1DgV06xdwHmmb4V+GvIop3anYYq+GpJNY8w64XcyX2r6pcfOSWed6AfNmbFk+4/yp/L60&#xA;8jeULbSU4vfyfv8AU7gD+8uHA5b/AMqD4F9hXqTixZJqOs6Ppqc9RvreySleVxKkQp0rVyuKsS1T&#xA;88Pyo03l6/mS1lK9rXndV+X1dZBirEdU/wCcrfy4tarZW+oag+/Fo4UijNPEyurCv+rimmH6v/zl&#xA;/durppPlxIjQhJ7m5LmpGx9NI16f6xxWkn/5xf07yrrPmvWbnzCsN7rapHLpsd3STmXZzcyqj1DO&#xA;vwb9RU4qVv55WPl3SPzg0Q+UVjttW520l7b2YCql1649I8UoFkZacgPY991X1jih2KuxV2Ksa88/&#xA;l15U87WCWmvWnqmGptrqM8J4S3Xg48abggj2xV80/nh+RGn+RNGstZ0O5uryxkna3vvrRjZo2cco&#xA;SPTSP4TxZWJ708cUgqP/ADjJ54Oheev0LcycdP19Rb0JNFukqYG/2VSn+yGKl9g4odirsVdirsVf&#xA;Bn5vf+TP80f9tG4/4mcWQYhirsVZf+UP/kz/ACv/ANtG3/4mMVL7zxYuxV2KuxV2KuxVD6heLZWF&#xA;zeMpdbaJ5mQbEiNS1B92Kvkz8tvId7+dHmjW/MHmjU5oraBk9UQFfVLTFjHFEZA6xxxqv8p7e+KU&#xA;q/M3yRqP5QeddPu/L+pO6zRvPpt1KkbTxEVikVwVMbEBtmCjr0BGKsR1T8yfzA1Sov8AzFqMyHrF&#xA;9ZlWP/kWrKn4YppjxM08u/KWaQ+7MzH8STiqf6X+XPn7VaHT/L2oTo3SUW0oj/5GMoT8cVtl+l/8&#xA;41/m1fUMmmRWCHo11cwj/hY2lYfSMUWy7TP+cQfMclP0p5gs7Xx+rRS3P/E/q2K2w386Pyr038uL&#xA;nRobHU5r67vVmlmZ0WL0xEyCMpxJO5Zu/bFQn/8Azix5XsdY87XurX8IuDo0CzWxckhbmV6JIR3I&#xA;VXpXvv1xUvrbFDsVdirsVdiqS+c/LFn5p8raloF3T0r+Fo1c78JB8UUg90kVW+jFXwJd22paJrEt&#xA;tMGtdS024KOBs0c0L029wy4sn3h+W/nCHzf5L0vXkI9a5iC3kY/YuI/gmWnYcwSvtTFiyXFXYqsS&#xA;eF5JI0kVpIiBKikEqSAwDAdKg1xVfir4M/N7/wAmf5o/7aNx/wATOLIMQxV2Ksv/ACh/8mf5X/7a&#xA;Nv8A8TGKl954sXYq7FXYq7FXYqsngingkgmUPDKpSRD0KsKEH5jFXys/lb83vya80X115VsZNX0K&#xA;9NEZYXuopIgxMQuI4iskcicqcqgGux3xSraJ+Xv5mfm35xg13z5bTaboluFVkkja1rCp5ehbRP8A&#xA;vPjJ3kP3nYYq9s0r8jfyo0wL6Hly2mZafFdc7qpHcidpF/CmKGW6doei6YvDTdPtrFQKBbaGOIU8&#xA;KIFxVG4q7FXYq+Qf+cqtUN3+ZcdmD8GnWEMRXweRnmJ+lZFxSHof/OIelGLytruqFaG8vUtw1Oot&#xA;ouX3VuDipe94odirsVdirsVdir5P/wCcqfI/6L8023mi1jpZ60vp3RUbLdwgCp/4yR0PzVsUhGf8&#xA;4oeePqWt3vlG6kpb6mDdWAPa5iX94o3/AG4hX/Y4qX09eXlpZWst3eTx21rApeaeVgkaKOrMzUAG&#xA;KHzn+av/ADk+SZtI8iGi7pNrki7+B+rRt/xNh8h3xTTBPyH/ADE8xaP+YaIwutVt9fkEWqQpznlZ&#xA;ifhuf2mLRVJY/wAvLFS+zcUPgz83v/Jn+aP+2jcf8TOLIMQxV2Ksv/KH/wAmf5X/AO2jb/8AExip&#xA;feeLF2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2Kvjr86vIH5i6j+YWva2nl++uLG4n/wBHuIImnDQw&#xA;osSN+65kDgg64pBe/f8AOPehXGj/AJV6XDdQtBd3L3FzPFIpR1LzMq8g1DX01XFD0fFXYq7FXYq7&#xA;FXYq8v8A+ck20cflRqP6RQvIZYBpxWnJbrn8LAn/ACOfL/Jrir5+8gfkP+YvmPRY/M+kTwaaoJk0&#xA;15ppIZ5SjU5xGNW4bg8WYj7t8U2xvzp53/MXUlHl3zVqVzN+iZGhks5iARLGxBMpWnqup2DOT7HF&#xA;KZ/ln+S3m3z3Ms9vH9Q0QNSbVp1PA0NCIU2MrfLYdyMVt9b+Qfyx8p+R7D6vo1r/AKTIoF1qEtGu&#xA;JiP5noKL/krQYsWV4q+DPze/8mf5o/7aNx/xM4sgxDFXYqy/8of/ACZ/lf8A7aNv/wATGKl954sX&#xA;Yq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq89/PjybqXmz8uryw0tDLqFtJ&#xA;HeW9uvWUxVDIPcozcfE7Yq8d/Lj/AJyTtvKXlGHy5rejTz3mlB4LZ4WWPkoYkJMr0KMhPEkA/KuK&#xA;aUvyg8gT/mZ531Tzt5rsCdEklknSEhlinuXb4Y16F44l+170B74q+poIILeCOC3jWGCJQkUUahUV&#xA;VFAqqKAADtihfirsVfBn5vf+TP8ANH/bRuP+JnFkGIYq7FWX/lD/AOTP8r/9tG3/AOJjFS+pPzT/&#xA;AD78s+R3bToE/S2v03sonCxw1Gxnko3E/wCSAT8uuLF8+67/AM5I/mtqkzGDUY9LgNaW9nDGAAdv&#xA;7yQSSf8ADYppL9P/AD9/NqxmEieYJZxX4o7iOGZT7fGhI+gjFaevfl5/zlVZ308Wn+c7VLCRyEXV&#xA;bYN6FTt+9jJZk/1gSPYDFafQMM0U0STQuskMih45EIZWVhUMpGxBGKF2KuxVqSRI0aSRgkaAs7sa&#xA;AAbkknFXgv5j/wDOUumaXcTab5Pto9UuYiUk1Oct9VDDY+milWl/1qhfDkMU08b1L8//AM27+YyN&#xA;r8lupNVitooYVXrsOKcj17k4rSL0T/nI7819LlVpNUTUoVIJgvYY3B+boI5f+HxWnvv5Xf8AOQnl&#xA;rznPFpV9H+iNek2it3blDO3hDIQPi/yG38K4op6virsVdiqyaaGCF5p5FihjUvJI5CqqgVJYnYAY&#xA;q+fPzD/5yqtbO4l0/wAl2qXrRkq+rXQb0SRt+5iBVnH+UxHyIxTTyTUPz8/Nq9mMjeYJYATUR28c&#xA;MSj2HFAfvOK0mOg/85J/mrpcqm41CPVbcUrBeQoagdf3kQikr82OK0+g/wArPz48s+eWTT5V/Rfm&#xA;Cn+8EjBkloKsYJNuXjxIDfPrih6birsVdirCPzFl/KvQLNvMHm/TNOnlJ4wvPaQT3UzgbJFzUsx+&#xA;mg7kYq8A8z/85S+brkm18q2dvoOmxgpb/u0mnCjYfaHpL/qhNvE4pphv/K8vzZ9X1f8AEtzy8KRc&#xA;fD7HDj+GK0zfyj/zlb5ysJkj8yW0Os2ZIEk0arbXIHcjgBE3y4D5jFafSnk3zt5c84aOuq6FdC4t&#xA;68ZYyOMsT0qUlTqrfge1Rih8U/m9/wCTP80f9tG4/wCJnFkGIYq7FUbo2r3uj6pbapYv6d7Zv6tt&#xA;LQHhIPstQ1HwnffFULPNNPNJPM7STSsXlkckszMasxJ6knFVmKuxV2KvoT/nGn83FsZZPJ/mG9SL&#xA;TijS6TdXMgRIWXd4C7kAKwqy77Go74oL6E/xt5M/6v8Ap3/SXB/zXih3+NvJn/V/07/pLg/5rxV4&#xA;R/zkt+b0UttF5Q8uX0c9vcx+rrF3bSLIrIT8FuHQkb05P7UHiMUh83YpdirsVXRySRyLJGxSRCGR&#xA;1NCCNwQR3xV9h/kh+c2m+YfKKw+ZNTt7XW9MYW88l1NHEbiOn7uYcytWIFH9xXvixL0P/G3kz/q/&#xA;6d/0lwf814q7/G3kz/q/6d/0lwf814q+eP8AnJb83BqE6eT/AC/epLpiKsurXNu4dJpGoyQh0JBR&#xA;BRm8W2/ZxSHz9il2KuxVUtrm4tbiK5tpWhuIWEkM0ZKujqaqysNwQcVfZ35Q/nLovmbyhBNrupWt&#xA;jrdmfq98lxNHD6hUDjMocrs4606NXFizb/G3kz/q/wCnf9JcH/NeKqd15/8AJFtbS3Muv6f6UKNI&#xA;/G6hZuKipooYknboMVfEv5lfmBqnnnzRcaxeMyW4Jj0+0J2gtwfhTb9o9WPc/RiyDFcVdirsVZb+&#xA;WP5han5G80W+q2rM9m5WPUrMGizQE/EKdOS9UPY/TipUPzM1Cz1L8wNf1CylWa0u72Wa3lU1DI7c&#xA;lI+g4qGM4q7FXYq7FX1f/wA4+fk75ctfKtl5o1myh1DVtTX6xbCdRJHBAT+74I1V5sPiLUqK0GKC&#xA;9G87fld5O83aVNZahp8Mc7qRb6hDGiXEL0+FlcAE07qdjih8M69o91out6hpF1T6zp1xLazEdC0L&#xA;lCR7GlRiyQGKuxV2KuxVEafY3F/f21jbgG4u5UghB2BeRgq1+k4q+5vIP5TeT/J2lQW1rYw3GoBF&#xA;F3qU0avNLJT4iGYEoteijbFiw789/wAm/LereVNQ1/SrGKx1zS4Xu2e2RYxcRRLykSVVoGbgpKt9&#xA;qopiofIWLJ2KuxV2KuxVH6Bo11reuafo9pQXOo3EVtET0DSuEDH2FanFX3P5K/K/yb5R0qKx07T4&#xA;ZJlUC4v5o0e4mb9pncitD/KNhixebf8AOQ35O+XrjyveeatFs47DVdMX1rtLdBHHcQVAkLooC80B&#xA;5cu4BBrtRSHylil2KuxV2KuxV6r/AM49/llp/nbzPczaupk0fR0jlubcEj1pJSwijYihCngxNPCm&#xA;KC+tv8IeVP0d+jP0NY/o/jx+qfV4vSpSn2ONOmKHyN/zkD+WWn+SPNFvJpIKaNq8bzW0DEn0ZI2A&#xA;liUncqOala+NO2KQ8txS7FXYq9J/6F0/OX/qXv8Ap8sf+q+K2xXzf5D82eT7qC18x2BsZ7pDLAvq&#xA;RShkB4k8oXkXY9q1xVIMVfYP/OOv5maHrPk6w8tz3McGu6TH9XFq7BWmhQ/u5IgacqLRWA3BFe+L&#xA;EvRvN/nPy75S0iXVNbu0t4Y1JiiqPVmcDaOJK1dj/t0GKvgrzJrc+u+YNS1q4XjNqNzLcug3C+q5&#xA;biPZa0xZIbTNNvdT1G102wiM97eypBbQggF5JGCotWIAqT1Jpir0D/oXT85f+pe/6fLH/qvitu/6&#xA;F0/OX/qXv+nyx/6r4rbA9a0bU9F1W60nVIDbahZuYrmAlW4uO3JCyn5g0xVZpeoTabqdpqMABms5&#xA;o7iIN05ROHWv0jFX3t5H8+eXfOeiw6no9yjllBubTkPWgkp8SSL1FD3pQ9RixYd+fX5naJ5a8n6l&#xA;o8d0kuv6rA9pBZxsDJGky8Hmkp9gKjHjXqaU7kKvjDFknnlLyV5n83ahJp3l2xN9dwxGeWMSRRBY&#xA;wwUsXlaNerDatcVZb/0Lp+cv/Uvf9Plj/wBV8Vt3/Qun5y/9S9/0+WP/AFXxW3n+pade6bqF1p19&#xA;EYb2zle3uYSQSkkTFHWoJBow7YqivLGuTaD5j0zWoV5yaddRXIj6cvScMV/2QFMVfevlPzh5f816&#xA;RDqmi3aXMEqgugI9SJiKlJU6qw8Dixea/wDORn5maLo/k++8tW1yk+u6sn1d7aNgzQQMayPLT7PJ&#xA;RxUHc1r0GKh8g4smQeUPIXmzzjc3Ft5csDfTWqCS4X1IogqseIPKZ413PauKsp/6F0/OX/qXv+ny&#xA;x/6r4raXeYPyT/M7y9o9zrGr6KbfTrQK1xOLi1l4hmCA8IpXc/Ew6Dbr0xW2D4q9g/5xs/MbSfKX&#xA;ma9sNYmW107W0iQ3b7JHPAW9Lmf2UYSsCexpXbooL68N5Zi1+tmeP6px9T6xzX0+HXlzrxp74ofI&#xA;H/OSH5j6V5v802lno8wudL0WOSNLtN0lmmKmVoz3QCNVB70NNqHFIeRYpZzoP5I/mhr+kW2saTop&#xA;uNOu1LW85ubWLkoYqTwklRxup6jFbTD/AKF0/OX/AKl7/p8sf+q+K2+2cWLy7/nIL8tZvOflAT6d&#xA;H6mt6OWns0FOUsbAetCPdgoZfcU74q+L2VlYqwKspoynYgjscWTgSpDKaEbgjqDiq+aeed+c0jSv&#xA;SnJ2LGnhU4qp4q97/wCcXvyzuL/WR511GErp2n8k0vkCPWuSCjSL4rECRX+b/VOKC+p8UOxV8zf8&#xA;5S/lpcJfJ5502IvbzKkGsqg3R1HCKc0/ZZaIfAgeOKQ+dsUr4Z5oX5wyNE/TkhKmnzGKrWZmYsxL&#xA;MxqzHcknucVaAJNBuT0GKvsT/nHH8tLnyn5Xl1XVIjDrOt8JHhcUeG3SvpRsD9lm5FmHyB3GLEvX&#xA;sVdir5V/5yh/LW407Xf8Z6fEW03UuKalxG0V0BxDnwWVQP8AZV8RikPB8UqkNxcQOXgleJyKFkYq&#xA;aeFRiqmSSancnqcVbRHd1RFLOxAVQKkk9ABir7T/ACA/LabyX5O9TUI/T1vV2W5vkP2okApDAfdA&#xA;SW/ymI7YsXp2KoPWtIstY0i80q+T1LS+he3nXb7MilTSvcVqMVfBXnzyXqvk3zNd6HqKnlCxa2np&#xA;RZoGJ9OVfZh9x2xZMexVU+s3Ho+h6r+gDURcjwr1+z0xVTxVkfkDyPq3nTzPa6JpyH94we7uKVWC&#xA;BSPUlY+w6eJoO+KvvTSNKstI0qz0uxT07OxhS3t08EjUKtfE0G+LFF4q7FXYq8d/Nj/nHXRvN082&#xA;s6HKmla9JVplIP1a5f8AmkC7o57uoNe4J3xW3z1rv5Hfmno8zpN5fubtFNFmsV+tqwrSoEPN/vUH&#xA;FlaBsfyl/M69mEUPlfU0ckCs9tJbrv8A5cwjX8cVt67+Xn/OKl61xHfed7hYrdDy/RFq/KR/aWZf&#xA;hUeIStf5hii30jY2Flp9nDZWMEdtZ26iOC3iUIiIOiqo2AxQr4q7FVO5tre5t5La5jWa3mUxzQyA&#xA;Mjowoysp2IIxV85fmP8A84rSvcS6h5HnRY3JZtGunK8T4QTGu3+TJ0/mxTbxzUPyi/M+wm9Gfyvq&#xA;TvuK29u9yu3+XAJF/HFNovRfyR/NPV5ljg8u3dsG6yXqfVFUeJ9fgfuGK29+/Kr/AJxs0nyzcRax&#xA;5llj1bWIqNBbIpNpA381HFZWHYsAB4V3xRb2vFDsVdiqH1DT7HUbGewv4EubO5QxzwSAMjowoQQc&#xA;VfNn5h/84qajHcS33kidJ7ZyW/RN0/CVKn7MUzfAw8OZBHicU28kvfym/M2zmMM3lbU2cdTDayzr&#xA;/wAHCHX8cU2mGhfkZ+amsSqkXl+4tEb7U18PqiqPEiXi/wByk4rb6G/Kn/nHbRPKFxFq+tSpq+ux&#xA;0aH4aW1u4NeUSt8TuOztSnYDFjb2DFXYq7FWK/mF+Wvlrz1pP1HWIis8VTZX8VBNAx6lSeqmnxKd&#xA;j86HFXzB5v8A+caPzG0SeRtMgTXbAE+nPaELNx7c4HIbl7IW+eKbYaPyv/Mkyen/AIV1fly41+o3&#xA;HGtafa4cae9cUs08of8AOM35ia3Mj6pCmg2BPxzXRDzEf5ECHlX/AFyuKLfT35f/AJb+WfIulfUd&#xA;GhJllobu+loZ52HQuwA2FfhUbDFDKcVdir//2Q==</xapGImg:image>
+ </rdf:li>
+ </rdf:Alt>
+ </xap:Thumbnails>
+ </rdf:Description>
+ <rdf:Description rdf:about=""
+ xmlns:xapMM="http://ns.adobe.com/xap/1.0/mm/"
+ xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#">
+ <xapMM:DocumentID>uuid:A113817B775811DCAE9FE3BA41DA243B</xapMM:DocumentID>
+ <xapMM:InstanceID>uuid:A113817C775811DCAE9FE3BA41DA243B</xapMM:InstanceID>
+ <xapMM:DerivedFrom rdf:parseType="Resource">
+ <stRef:instanceID>uuid:A113817A775811DCAE9FE3BA41DA243B</stRef:instanceID>
+ <stRef:documentID>uuid:A1138179775811DCAE9FE3BA41DA243B</stRef:documentID>
+ </xapMM:DerivedFrom>
+ </rdf:Description>
+ </rdf:RDF>
+</x:xmpmeta>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<?xpacket end="w"?> % &&end XMP packet marker&& [{ai_metadata_stream_123} <</Type /Metadata /Subtype /XML>> /PUT AI11_PDFMark5 [/Document 1 dict begin /Metadata {ai_metadata_stream_123} def currentdict end /BDC AI11_PDFMark5 %AI12_RMC_Transparency: Balance=75 RasterRes=300 GradRes=150 Text=0 Stroke=1 Clip=1 OP=0 Adobe_AGM_Utils begin Adobe_AGM_Core/page_setup get exec Adobe_AGM_Core/capture_currentpagedevice get exec Adobe_CoolType_Core/page_setup get exec Adobe_AGM_Image/page_setup get exec %%EndPageSetup Adobe_AGM_Core/AGMCORE_save save ddf 1 -1 scale 0 -60.5293 translate [1 0 0 1 0 0 ] concat % page clip gsave newpath gsave % PSGState 0 0 mo 0 60.5293 li 60.75 60.5293 li 60.75 0 li cp clp [1 0 0 1 0 0 ] concat 59 54.75 mo 1.75 54.75 li 1.75 1.75 li 59 1.75 li 59 54.75 li cp false sop /0 [/DeviceCMYK] /CSA add_res 0 0 0 0 cmyk f 3.5 lw 0 lc 0 lj 4 ml [] 0 dsh true sadj 59 54.75 mo 1.75 54.75 li 1.75 1.75 li 59 1.75 li 59 54.75 li cp 0 0 0 1 cmyk @ 29.769 11.6064 mo 30.2188 14.2261 28.4604 16.7144 25.8403 17.1641 cv 23.2212 17.6138 20.7329 15.855 20.2832 13.2354 cv 19.833 10.6162 21.5923 8.12793 24.2114 7.67822 cv 26.8315 7.22803 29.3193 8.9873 29.769 11.6064 cv cp 0 0 0 0 cmyk f 2 lw 29.769 11.6064 mo 30.2188 14.2261 28.4604 16.7144 25.8403 17.1641 cv 23.2212 17.6138 20.7329 15.855 20.2832 13.2354 cv 19.833 10.6162 21.5923 8.12793 24.2114 7.67822 cv 26.8315 7.22803 29.3193 8.9873 29.769 11.6064 cv cp 0 0 0 1 cmyk @ 26.939 17.5879 mo 29.3081 31.3857 li @ 22.4536 20.7676 mo 32.0635 19.1177 li @ 34.2891 20.2578 mo 38.9863 24.9434 li @ 19.75 22.7598 mo 16.7427 28.0225 li @ 26.9077 32.1787 mo 31.877 31.3252 li @ 24.5234 33.5605 mo 19.2422 41.9502 li @ 34.4248 31.8691 mo 43.2354 37.9629 li @ 45.1982 39.6777 mo 48.2832 46.5215 li @ 50.0215 47.3174 mo 54.3945 44.3477 li @ 20.3755 43.2568 mo 31.2383 41.5176 li @ 32.4443 42.2617 mo 31.6348 47.1504 li @ 41.1445 25.1655 mo 48.1123 22.2642 li @ 8.81104 32.8555 mo 15.3091 29.1543 li @ 1 lw 34.9326 18.8364 mo 35.0684 19.6309 34.5352 20.3848 33.7422 20.521 cv 32.9482 20.6572 32.1934 20.1245 32.0576 19.3301 cv 31.9209 18.5361 32.4541 17.7822 33.249 17.646 cv 34.042 17.5098 34.7959 18.0425 34.9326 18.8364 cv cp @ 22.2847 21.0083 mo 22.4209 21.8027 21.8872 22.5566 21.0942 22.6929 cv 20.3003 22.8291 19.5459 22.2964 19.4097 21.502 cv 19.2734 20.708 19.8066 19.9541 20.6006 19.8179 cv 21.3936 19.6816 22.1479 20.2144 22.2847 21.0083 cv cp @ 17.6128 28.5693 mo 17.749 29.3633 17.2158 30.1172 16.4229 30.2539 cv 15.6284 30.3906 14.874 29.8574 14.7378 29.063 cv 14.6016 28.269 15.1348 27.5151 15.9287 27.3789 cv 16.7222 27.2427 17.4766 27.7754 17.6128 28.5693 cv cp @ 9.20996 33.2646 mo 9.34619 34.0586 8.81299 34.8125 8.02002 34.9492 cv 7.22559 35.0859 6.47119 34.5527 6.33496 33.7578 cv 6.19873 32.9648 6.73193 32.2109 7.52588 32.0742 cv 8.31934 31.9375 9.07373 32.4707 9.20996 33.2646 cv cp @ 50.7305 22.0615 mo 50.8662 22.8555 50.333 23.6094 49.54 23.7456 cv 48.7461 23.8823 47.9912 23.3491 47.8555 22.5552 cv 47.7188 21.7612 48.252 21.0073 49.0459 20.8711 cv 49.8398 20.7349 50.5938 21.2676 50.7305 22.0615 cv cp @ 41.1367 25.4663 mo 41.2734 26.2593 40.7393 27.0142 39.9463 27.1499 cv 39.1523 27.2866 38.3984 26.7534 38.2617 25.9604 cv 38.125 25.1655 38.6592 24.4116 39.4531 24.2754 cv 40.2461 24.1392 41 24.6719 41.1367 25.4663 cv cp @ 27.147 32.0957 mo 27.2832 32.8887 26.7505 33.6436 25.9565 33.7793 cv 25.1621 33.916 24.4082 33.3828 24.272 32.5898 cv 24.1357 31.7959 24.6685 31.041 25.4629 30.9043 cv 26.2568 30.7686 27.0107 31.3018 27.147 32.0957 cv cp @ 34.5391 30.8262 mo 34.6748 31.6201 34.1416 32.374 33.3477 32.5107 cv 32.5537 32.6465 31.7988 32.1133 31.6631 31.3203 cv 31.5264 30.5264 32.0596 29.7715 32.8535 29.6357 cv 33.6484 29.5 34.4023 30.0332 34.5391 30.8262 cv cp @ 20.3408 43.1777 mo 20.4771 43.9727 19.9443 44.7256 19.1504 44.8623 cv 18.3564 44.998 17.6025 44.4658 17.4663 43.6719 cv 17.3301 42.8789 17.8633 42.124 18.6567 41.9883 cv 19.4507 41.8516 20.2046 42.3848 20.3408 43.1777 cv cp @ 33.6064 40.667 mo 33.7393 41.4395 33.2217 42.1709 32.4512 42.3037 cv 31.6797 42.4355 30.9473 41.9189 30.8154 41.1465 cv 30.6826 40.376 31.2012 39.6436 31.9717 39.5117 cv 32.7422 39.3789 33.4746 39.8965 33.6064 40.667 cv cp @ 45.4697 38.502 mo 45.5986 39.251 45.0957 39.9609 44.3477 40.0898 cv 43.5986 40.2188 42.8877 39.7158 42.7598 38.9678 cv 42.6309 38.2188 43.1328 37.5078 43.8818 37.3799 cv 44.6309 37.251 45.3408 37.7529 45.4697 38.502 cv cp @ 50.1846 47.4102 mo 50.3213 48.2041 49.7891 48.958 48.9941 49.0938 cv 48.2002 49.2305 47.4473 48.6982 47.3105 47.9033 cv 47.1748 47.1094 47.707 46.3564 48.501 46.2197 cv 49.2949 46.084 50.0488 46.6162 50.1846 47.4102 cv cp @ 11.5322 55.125 mo 11.5322 57.1445 9.896 58.7793 7.87695 58.7793 cv 5.8584 58.7793 4.22217 57.1445 4.22217 55.125 cv 4.22217 53.1074 5.8584 51.4707 7.87695 51.4707 cv 9.896 51.4707 11.5322 53.1074 11.5322 55.125 cv cp 0 0 0 0 cmyk f 3.5 lw 11.5322 55.125 mo 11.5322 57.1445 9.896 58.7793 7.87695 58.7793 cv 5.8584 58.7793 4.22217 57.1445 4.22217 55.125 cv 4.22217 53.1074 5.8584 51.4707 7.87695 51.4707 cv 9.896 51.4707 11.5322 53.1074 11.5322 55.125 cv cp 0 0 0 1 cmyk @ 26.2422 55.125 mo 26.2422 57.1445 24.606 58.7793 22.5869 58.7793 cv 20.5684 58.7793 18.9321 57.1445 18.9321 55.125 cv 18.9321 53.1074 20.5684 51.4707 22.5869 51.4707 cv 24.606 51.4707 26.2422 53.1074 26.2422 55.125 cv cp 0 0 0 0 cmyk f 26.2422 55.125 mo 26.2422 57.1445 24.606 58.7793 22.5869 58.7793 cv 20.5684 58.7793 18.9321 57.1445 18.9321 55.125 cv 18.9321 53.1074 20.5684 51.4707 22.5869 51.4707 cv 24.606 51.4707 26.2422 53.1074 26.2422 55.125 cv cp 0 0 0 1 cmyk @ 41.3203 55.125 mo 41.3203 57.1445 39.6846 58.7793 37.666 58.7793 cv 35.6465 58.7793 34.0107 57.1445 34.0107 55.125 cv 34.0107 53.1074 35.6465 51.4707 37.666 51.4707 cv 39.6846 51.4707 41.3203 53.1074 41.3203 55.125 cv cp 0 0 0 0 cmyk f 41.3203 55.125 mo 41.3203 57.1445 39.6846 58.7793 37.666 58.7793 cv 35.6465 58.7793 34.0107 57.1445 34.0107 55.125 cv 34.0107 53.1074 35.6465 51.4707 37.666 51.4707 cv 39.6846 51.4707 41.3203 53.1074 41.3203 55.125 cv cp 0 0 0 1 cmyk @ 55.8506 55.125 mo 55.8506 57.1445 54.2148 58.7793 52.1963 58.7793 cv 50.1768 58.7793 48.541 57.1445 48.541 55.125 cv 48.541 53.1074 50.1768 51.4707 52.1963 51.4707 cv 54.2148 51.4707 55.8506 53.1074 55.8506 55.125 cv cp 0 0 0 0 cmyk f 55.8506 55.125 mo 55.8506 57.1445 54.2148 58.7793 52.1963 58.7793 cv 50.1768 58.7793 48.541 57.1445 48.541 55.125 cv 48.541 53.1074 50.1768 51.4707 52.1963 51.4707 cv 54.2148 51.4707 55.8506 53.1074 55.8506 55.125 cv cp 0 0 0 1 cmyk @ %ADOBeginClientInjection: EndPageContent "AI11EPS" userdict /annotatepage 2 copy known {get exec}{pop pop} ifelse %ADOEndClientInjection: EndPageContent "AI11EPS" % page clip grestore grestore % PSGState Adobe_AGM_Core/AGMCORE_save get restore %%PageTrailer [/EMC AI11_PDFMark5 [/NamespacePop AI11_PDFMark5 [ [/CSA [/0 ]] ] del_res Adobe_AGM_Image/page_trailer get exec Adobe_CoolType_Core/page_trailer get exec Adobe_AGM_Core/page_trailer get exec currentdict Adobe_AGM_Utils eq {end} if %%Trailer Adobe_AGM_Image/doc_trailer get exec Adobe_CoolType_Core/doc_trailer get exec Adobe_AGM_Core/doc_trailer get exec %%EOF %AI9_PrintingDataEnd userdict /AI9_read_buffer 256 string put userdict begin /ai9_skip_data { mark { currentfile AI9_read_buffer { readline } stopped { } { not { exit } if (%AI9_PrivateDataEnd) eq { exit } if } ifelse } loop cleartomark } def end userdict /ai9_skip_data get exec %AI9_PrivateDataBegin %!PS-Adobe-3.0 EPSF-3.0 %%Creator: Adobe Illustrator(R) 12.0 %%AI8_CreatorVersion: 12.0.0 %%For: (Richard Goehl) () %%Title: (flipsticksIcon.eps) %%CreationDate: 10/8/07 7:08 PM %AI9_DataStream %Gb"-6H]o_cE@:MfniP>c@j^W7as$o5TWP>!4geH',oT:deXB0$CX2R6^$P%Hp@Lo!qt0&9J)D'?WiTrMDsgYs1R4A!!<.MdiU1Y- %^A@-kj,Y:rHhZLnf,t%UcS)^@/mNK7cD:o`L!s+1rTAC>If%#bkE9UdL-6f^)DAQb[Jf40/T*e%qr>TK&"e@El/T6kJ,&!bj84n0 %Ie``Xp%p]*rpfX2e_c,=hS4F;pAX*MLGthYo&YJ/Fo1S!O71qTpNJhcr9isMT3m7ohbifjbKYP._jfPurV6VHQK#[XnEp)p^O,i. %lLaIfJ,;Jqs*u3>Du&u`Da/^uF:%5)#i5FL^]!0S`udKpI,GL5:g\_F:VVAUqfb8Prq,@E]8n'5q.Em?79h;qo_PW'H2mDYDr+jV %^4#mVMf7Id+bG/jM^JJE`H%BG_V.ucRnmt[IZPYJFoCQ+5CRp*EV&?PqXZJLjIcJ,g\:/$ri9%$]*c<%qd!o-j3[etc2[S/bn#=! %R;h@3hELl%rL;,OH-G%V0kNM.>lC`]BfNWRRdgLFK\b,7Pc<dlQ0P<^rKh_Hs7POk^O5Y?]+:MurpU.1U0kV2<X/<`e)tZ+rSKG8 %,YBLVfromQs7Xo[5.pbd,8*k\9;>jCr9is!P,Qh"rr!dpg/?RtJ#1"H]_V3s\"?555JI.0,PL_e]]`-:3+'Gro@m%rj8e]DIsV"N %+$T[2N,-_*>7C$GCa?('m2,1G]>\'Wq[tR5-#H%2"8hC9?R2OgL$u&B5^2G9THkG.?]h;crMOkSJ+qpb>?EQXRWp;Kpc"i%I91!A %]$Kr&Bn<LQs*+?IO='fgIt%8\M4e!ko?5k6Z<[D")ZfF=J"VYhiQXGnhF]3Vs%E](P;n'%IIm7D'o00WMuW_KIpQC[q(jA<6N<Rn %h\bm-hspI'`_)f>43coD^\H>>q=X_.Xef$VW"gPk`J@\PU/m6IpX\NAUX$TKcG!d4iuPQ$*OYACIo5Oo#.8>dd.6<'^YIV;cM]nT %]t]U?Xmb`Kqu+48&W?m#_+,WjY@qXb4*UN.Io-S1i@eqs-DOOh"%E!C3hQb.6+:i#g4C[L`A^VH^Z\8a,X$c(quto$7k&*Q9];ka %7kN)A^Sl4'O"qXr?nOPW/dds7='>smK"^(p\-[7bDI[37j<&,f55[iF14hj#r$EYCGLQ\B2T!<GBaae,(Z.KKN'I:Kjs\&Qe,k'n %/#+Lj,((.#J7p\<bY<P&bQL/h3beuYN%[N.?k:Hb07bW:gNZ:!qhI5*c6O(QTs[]K^OeZI74jX?cmLr<[ePbAT^MH;8[ckaiLE.E %kr'D;=YXUmjru5u$T9YS9SMqeST%lm$K$BENJPt/\>,?UQenRPr%A!PF.&F?bqeFu)sQ=Qs,$[)fe.,:?eK7t1X#PmARD7fjM&bY %>#uTIR9iD:\6R&T(`=^K\oP]-21,k9oIDNFFl@gp(Tk44^MT0AlFZuc?G>$8q02Zb"=^>=nh2<b?JjjOcLO,2K:V\meWp&1hrWbg %[=#1Ho'c5$mB)W&GPQH,-f=7%r*.<.dH;?.r0;8en+KK4M8%6lpi(_PQS%%V/T!.cVic75Mt[,AeSACg>Ji(C+*jd8cd[4)SQik/ %jo9)Ji(*[ZnGK]os*qHLrU&jM]`.q.c<g\Nrc[hpacFTu.qM^7Ir,_rp98l]#qk&248PRUVm#I9CYl&`.pN"VJ:3^#f$B>0hUClj %D-F/=?_Ja)OsIg"hl#48RTb/L`2qfqIS(-I]@pIN^KXqm-GB&GFM#Am=8^aTkQe=6PAp0'A[D_If]9NGJJ7demLJ?RX:<gVII+6+ %2,i/;YFDdlV.U21pC-q:93h5Fkj'r^?>oiBIQPn?^4U=glg!_S;%+EuT^Sq#!+f\LG`dbbS$C_o)*u,eP<Q)gI4e)ND.UX[mVh.p %_)C/OapZ)/?h5YBa@;'@k><.6%97\H*l;g%F3>NB9KBsHV2Boie;9]sQ1$hA\',0?"/pB7B$%@le&aOYIg;K[]U>qpKZ$^am%o3O %jM$c+de`LeMY=kDPd%9'E^DVkoOm5SkYR7D0sQ&Kg\AFo5Z1gX!!DlCIXdk0f%T3'prW;,psIEOdoS(HU6cc>Ta/JX*02QmXhA=% %+u;fi\5c;Uq3.h3<-rI+,9lr<';/X?*.YDPoKOfOS*C`Z.EekM-\+_<q?\V(>+Q"R<*MKnBNW^nKh)#cg'4l/h2Ua'iG,4Ej4."Q %7V`Mj%m'58*Gk``%r<8-ldHc?ob?WteJYqf5bDP7TK;gCY!T/QB(d.d7CJU/^B<&12j:Jg&'RkM`>l]b@+?kBci5[GkuMnqe?E)c %h4CU6mNM6M@<fm6BJ^D&6TO1SqZI]UIKN?,[3ZZ=N:edS;66`M-[j78&R;X[;0dnF.XmG^L;rhcD"MdU\**!7QIK-dPJYqVhWu6q %+sXOuJg!T#[&ppJY@lKRVUr=JNe7m<:WbV@_Nk_Yd&OkIItjIf1Lc$*hifdr/+@k'I'_3uR;_.^FGjf8N&7>a@7A^+;75u>;fd[: %h2>;J)FXVuFB,?NkNhsb4c-8B:?IA8Dea@7Hp2>+/LKG,>'*\Dh/4a]NS4K8X`b,"Z'hej>%F0!FS#8Y1qdL+mmgSBR&a4u2Fp&" %/"_/m^)9/9Fkp4aj6U(?FKC)8^0"]RmteYLh=9rGjmib"a1U)BI[d3Ja1e1D_XmH';C3ojN>6ML&W:%4,Y,'P]k.o5b>l/<*W'Z\ %_`78>gM/rPH_@Vs5T8CuFnINiW>XAY40r6G<Y<=\CZoh_2"7I;Z<9).]G]>_37ErgbGo,W=KJ+F`]B(Y9sq>'rOtfe`gcVnC:6mc %fu[_SE7V)1B0+A%RqCM(Tg@aFf"tF0]ra6e>EuVhR@29$>Z[G,r(g\%NMjp\eIJO>AAfA*>sDQ4g,lI+lW(?W7*hs*od1Sa/J$gD %lD1160T<k$P%1f;4Z,EcIHMKF>'=,11X0Algh1BtBpo/cZdl,Y7FjT.(9ZsAr62a_`ko29?B+O0QWYW%5Yp9qltgRR,.?&Dc\SMM %i`>/m\_nD)Oj+Y!Xa&c>.'"K\;-I-V<QDA(]K`r=Q23DA]L$`k;>-j*]g/>)FW)&u*g:'ng,Kk5cZNe#2.`Yb051;`>BR[F1fCt' %#CEW,s4)!ASs?a]R1j+22:GiLd>fFo*a7)3@a,5*`J]uN@6WLK:WBb^SZQKcbP[t/18=NDf5LYIaJ@'doDM*ZpUurCW9`V[6U%rE %/3Mh.L?[:p*PH-L)Rc`Q34CHhp3*i^M0=l@s5Q/GKZC2b:(YOA(R-G@SMgC"UKkQ$,82EU:Q2\?q9r>7=$^LY[&tI/fT0K]#fg>N %.).,cd714[AC]b37_8#qL@ALnU:PM&LVaOHlUTiAK]>13=8tm*99$)^]N3R]JE^$;<U4D,'gH,b:X<-V`>2oUZdCl2_f]8E&K?2P %_Kk/hX];"2S#J48:,j\+?:XhJ1qTk[2*+h$B'=YOo99$Lh3r,<CD`Q.S2G#;@W@6j\_>:EgXLgfmP*/4BIjMf)/F)ImB#QSPZF\_ %$\-H?)2i6VXnUh1ar8TnhEA7rD2h:(=_hMPSH^?T4aWZVc`]a+Y<L=!86aWsnY!.'bh1'dB'#.G_+Yd5lHeS3];K,5cFf<e=oHSa %X)hW-piM121X4F6=Ti0tICaP>/+'10M-gt=U6_:OF)%88%E:-IJua1Fc[-$4U$d=pRIREQ(:_5"p?\d_:fa;>B9tn6\'[j7I08kB %33/E2l1=(9T%IXYX7pMGP?QM<8]Z'qSRr/p*.-0O\0$,"nRj-l-'lT]dZtK*[UW/$X\l)/;9?YPXniqmA`$"]N]YmAgg][EQn\![ %-K7&UhJ[ZTYX_M=":*I-::B0:3l\r2Vri[.Cps>dYJ!,Lr8$:s3LiOh\rh)IGo*?e(Y3BrmAq5`/c)U#`*Pr6AuKFXJtjhSrA/MS %jBQ/>\[N!..j4N!$fkLiL#//08`F\iCYci</m!.%1X*D]H1JOVt9rZX/cXO(L`/YusUaP:Q`kC#Q(3aFmqHW[G[<Vp:GLcECMQKOW %(*6[mR^m`KXgdRml3pt`>()[j3_Sg@U>Bp9HFIJ!'E=`U[[h$k*4`?rUpfI#Vrb,rJPicPDg7J*kAE"/DgkHn`n+(UmfU0aqNa!B %e;e!&a-O&Tp1.f,>,r..GZe5iugpYS^?_5N2IP'MAdbJTn2UZ1Y5ij?iJle#:p#2q;*o+4\>@pa%Z#Grm?p!Djr(A'^gXbq?9L?Yi %TF4ClmjafEH!K(?FY>i,++?nUbKdZPf.rOWh+tPT'nIr?003)Xo:`TqT%rR?04G_YPjVN5K!2n5?)MiEL[d=n@]O\9IAu6+Kt.W# %?EACF[I=+Nm#P3=pR)q30@VkoIm:r_``a.'G]#CKb$lmH[(lOB1Sg6&pAZn_'1QuP5AHL:D:$4=kKt35X%0i3k"kLV(==+,@aXRc %WI#$d+0o1Z3i?;Q^LfP.U8O&uD0X\.fZ@HF+'WgDfAl/efK8;GC)qWs^$bd(4C>L3dF7Pn,9*6;ZnP_7r3#4g4<\QiGq0Wmk=UU` %dH??P[lbu$rVpA^R:`*TZVTK(Rh7PBM=l?>"[1\'Ct1hQ[h-)/s$cW6fB_DmPuuBY/S,DS/lPcZ4Y<Y>GDU^lV"^D1#5K+FI"%)Y %m-JKXCS,&3R*7;QWVT0+=n:3lBfGkd.60>CkKM<H]sXo5_!4dfC2ff2iFD1gGs*giK?^2Dc^"?E*uHodUG_Kl$U_$(fY+qHmfce` %&8MaKNT-hg/,,R;39o!oY3OZ2[l+NS%>W89<<RK]F*gJOObgS-2m4a4k,?<:N<>R8+SoZ2[a<b><i:6E`@#Ed>YjNb*9W2jC?W5k %og17%J!=)o1Kj%E6T1@^P2F\.ihYs[]FWf*^</qbVe1#BdP!,5ki2=9j!nI([ktPM;V,*ms..8fm,\KD5=SsfJ[Uo,!GEu(1V7AMI %fNi?_c,-ep\,)Q>TXN3-)S'O>X&51TZC*DeQKtGZGg,trXS/QgGALRU#k6%6QmT2]6*]%eaIKI(MrX94XSp.NH_tG,D0mW$=A/\o %Q0*Euj`@Mp3kEAhNifGPkA;Bqd4BY<pQbXL^$YuZ:/u5k:,FRpl<X'pLmCP#f<Pg"jC0HOlI2kuIlWi0Xg;\9n0=)qj2H.*5i+Aa %m7!pRs%DBNG8@INmHs1U<o9SDWug@T=p-NrG>S!e&5SQhWFo@"@>DOpIWK6J%o.O`AG$M)?ep/*%`ba6e'5o<S<X&i%V5V)e&V2) %IkSR%chtsFDa49s-TPPZhgbNI+0"tG%lj',qE+[&s7TO_J#&_9k0q?ms7EcB^AiHSX/k\QrpK0mYMO[+_o;<G[i`?]iF`s1-=8F% %"dOQ8mU+gCg#\]IJ,7i^rVaV]*9dG$`S^^`^VBa@1H!a8qWXIkhgKtNHq3(AM_j^l0!7G;pqn1+ro)nXpBA>2Vh1c]F"-DS1gp6= %)gqGX&&RQU,crae]))'p-O5??57W6nr$hAhoB-#KGJF1Mk"gJOp[&C)jS&^IIX;+"qtG"m]rg\tX1b,KQ@FAYh8f9YIX%g>fTc=! %c)8nV^4$%TRm6rBq<c)k^"pF$ro9o3L2C1ApYfK9^Amu+#0Bd6k/2BZs7OX75<[OSL?\SZ+24Kf_Xk=Dn`.NZE6ZSF2h-)DVmhWQ %k<IaCc#:l=j7dIU]_QZcjeYVK+-L!ZB>$p#ZI3I^/Le\?p&4Pj5G8bN`V##KkJ-ibk.>i5D1@$)=01ZCIWt<tlMYq:535U]Z!=)_ %lgIUKFS_%G;VZKo,!CC)6a(9O?.!Gc(YK&fM-c<NJR4pSNa<[<<dH?BEHD&iV:WuVmcNr+?WZmRl':Lup_E$.kiMX%kdAfRjk"O^ %gbKB'Khl[FnE]pmHVL[oHL:XQoTF_ojB&"@kEk5\`ikY7$d9!-h=6DM4OG8HGKm<AIdR!Sr(?gCq?m)iqJuGdn2g*og:WaFFaYpH %dsiQbk9[=95-i?qLE(BX3Ua>H?5(sq@b(Fkm-DCQDYJM1j.>tWn,(Xa9uqnb]D__D\QZ2F..sL*Y_W`OVEGX`Oa"_k6jHfRiJ%a3E %^##pJ[D*4'O^@95?glTJHu/e:=F,1>chOVq]-EJ(?G&iWVLKtR>VhFYM/C0r@cbakFi7st4CX))?98\B208JW7ZKs"`Y'N-nHf"* %%<^U&:FlhaM(9>Q%*:(o%S75T&nD?T"W;ro609;:O?pr3A9'o>GR@5XF@C0:oVMSDh$^pIMm%SVrTU[%mr?CaZ7Tta93C2:QFuS- %'liMnjQ)>oisLHVFfSle)V;@YF^M?'CECr/+pf]TlaCYJo39l,$%C.-Dcb[N$,A.7o"CgTh<Ho]S9Me<QX"^G]5lLS0=Sl^Hb]@+ %Dr,d.K9,Xs55X/Cq<J]Neh'[Xqlk`2Cr$:T'1.KuKcKf*7B^JFWEYf\i6;nd\4)0Z@Ycb980SfCG_H`j2^b%:GKdiKX_\9S7,Us6 %;(c<K,[]dcO`7P;hsrl5Z^783/@Z6s'4-JJ";i<k+\mE5_p4tb@D:lLFNYkVa$[>??ph:Eh!RT$%1.fK6cpS8R;X@]@VNU>kpR0o %LN+]@LYP8f+o@@M%sH;&^_B<eSHZW1(r:7oZN9[VN[70W"D.i""_Iu$L<U4P&'PU/&Y:9r<Y)Z%<UNuAA@ej)h&T90Rl6D:L!6'X %ouV?E5I[_?85)h+8$&%f,!"4X179>%1mq/uV/0&cZ:^@<AQ+L7f8906.+>5f@-nXiH]jrB/@-d;dn;&(98+u:\%GgJnM65OJag</ %XLofd3On$J?t]E[=mnH'pBtb^B_Z@DlhSKQ4Ko<NmTs"*hm/-R@\oSs$%#^`/*k\H@aGPndhRjEVU:;YP+G-cUCgg-K`<'4nV5'S %MF8YPKLCt<:NEe(%$@_hCq?IZ\gE9e8b*Kc@3CDK,bF>9&0L=R1i>i2Y"18<M'P3H[!Ru6NFp"ipl#E:qDHCO:(nbtS-h*^*6kcH %/]?$u)V,i?Xt,\)9N*aq'_O:c2k%+sM:d8I@t-iYGX^((dgV9odlik_C$mW21j:2e2^G5$1f_UUUIcLtBfK!3X']Q8mRW(M8<U/i %533IBRRfK[PO@*p#;%dPG9gi\,jn_jl/6\R;HoaBf1'Lk+Z[%W@D&9_ECCNsPJW6RpcL"@N>*P\rd-3==M\\9&PGZ)7ade0R^=KG %NVQAPJrn_t=MmJG6H_^AMPc*1'l>Jt<]$uD>g^-[G?+7+MXnG4b-tBcUjuJF[Mi7iY\E#j#G3^5%nbL(E)FKRK5Uu84Oq6F:'$j\ %($0ceRTK0b.loVi^(jp(HM0Rp^aaQ3Y<./h4_(>nCFmM`cgCX^(/Fdbr!N?'8aaN`IVgV@Gk$#dc816o7(QgK\7Y!8@P0u:,iTO6 %'j+W^0CGW[!3HeP(7fe,gN[[T=GS(h&>YkN$0%1o1]n,N(JN0V#5eTq&bD-=lrHe+(,ZBPc2s23j<BKoo8#hR@kh1i!7r]P$a3H@ %bfaX2Aih_CYF1eK[%>a5O(um9B<'NFM:uK533)qXR^:D4VEIY'RKdnLXbmm*4aL"+.`t`?W@1_CW>dL\$W[G^X1,aO?E88*H0J&) %@n"T;'2.W1b')ki]k<UWa%Q7</)G&JlE>H[c`D^3X5V-3J`iB@3f2uj"D\h,i,soOM`WgPDT-F)_rEdbl&0nrX/4H>OV\s.-e@JS %o&\u%f/C:m_eZ6T;u>[]="bNmFBU:q-oX8Cj^R+#e$;C>r6=K,h`gc*oafOUm_+ilgjZf\I(dU#jRR2jT;j(uk`7o4`9i_"8_`n4 %)mte<=2W(VbII=Pd@L8oG(e!Rm&,)"e&5V'*o/40BHQ@!ooert^KBNmO(iICGcV8HTU/efCr?gH,l1bL*e0n"f=/^V2]$i/Fas#Y %mG%@O2h-;&T`T8GLB?aYmsOPQ2kU**Hs4a=@WPhfiHmK12`AriQtNkIYLsE#'+<T!r?^e@p?4=MEI)%M@YdIW+4c,h:.#_i`ZT"! %U;e9!]208hi4su"*@0i6513"I%bDJ5@##$5O9?F6q`e.6P=/kHa1,G8T9RU,,kE:Ufn/F4HO05M29uUp9Yq=hkQ=u%VePX/(4,1] %hFB0S;[ka7WP#W\s19'Ehb+@.Z2Z1&jY.6:$T9NEQ)JC`hpQsF0KPu).:mR2?R(]05HL2cY;XW&7rAJc[jXJ&F[K*Hf2f4"V,bed %rUN>FQUH=:>"sG[K.11Pa:Dg8"YtoQHYN$q\+2Te99:7(a>h^NZQHa.ib?cH40j3HH8i:cm)R97A`3..&bb*d?q!dG)m<9A]f:n2Z %OUX,tV2i5,6L7K3pH&:ph94F%Baa#;op*ZmN;-[cm$t!Z/9-(-MshpK^_*m6`%#okJAT<$[F_WL@%TNcNm6pe>d:065jp<%nFs#* %7I,!$iP\g[f!oX12[:hB#s>.1mK:8%NctptW(&te5Ft8opPE@.c4o1?l\$"2UCtaCriJu13-KA+\+4QpQg\7SHc>-4jE8n\;V(&p %]roND>$lD2k#Pi5&q?(2Tm<poOS.]l/EM.G%N:q%&67`_3V+0&F6MYAK-8dW$,f]A'?<Whj=9+=PNXL.<EMsdX+6XXRUG!E+I=`' %SMU9D)gD(aI%9jj]s?VjfP;2BQb8?q9<T$/_<>QSlq:^[p,^`bNAqqcc`9iAS#<%T<*:1UBWFHu'+NWA<I-.KZt`RhWMWZ7c)RtT %;6Qj+<QUh3cN]AI-@P!MEHdCt?5L;%UJ]K%e%Vi3Tn1f/-q"'T/C<R]TpHWa1@@$Z=ehO9W3Z[hCRDF=Eg@979_=[oqpVka?'[26 %0aO;]+L$QM3=&k6^dAO?Aa-Oem'@kehMaT\B#b6!LAr,7m)SY"1$hgT`m-H#/HaDGp"*u>8(:>8kQ("<kl7gW+AMP0Jm'V+C]eKm %$_+g0h$r<@J3&&`7tu.6_t%im&^`sd82lROOVPQi(Ag+7fd^::*$q2$\ZR+'Y@NSF.jBm*b/sW7>s;V\He]7*(:3'9n[8S@B](<t %C(eu`C2EM5Wf,](5mpgfN_(F9S=1,#NMOabr7Y94B3"se9A3/nC#<(AC4ON7f?LAYW+^oZ^XCV#jA]0?hG=L`6Y1#0PY?n`biY,/ %,\"$GX1bUCEj:kb+ZX#;1Ntm5.WVeRgK;E>d>I+'W:N]>_0eC?D:cU=D2d&n@-rqR1/guf;SDBIe^dEr7VZ_5p?(UWP&P0<;]GL@ %3ReXZ%F\prIfbr!^S.@rkZE=kTnqiI)5OTFP<Gf6g=t5Y);)tWHopHEC#;^8Q@mZ)[%*PH8'h&EVu+u2MnR_joq[j$/(=I3SY`bH %V`&EM)K)\A2B$LHmo,jY(&(lnmMUqcRl7$E2k"i`6._PmXYJ=BkFXT.a$rle*+'Ti*TNfj&dWnc)"_K*St6=BMM]k%<jSTZ-DdFk %V2cE.b4XU4S_;IhkK-X\BcW#a;]1KJ\Y?E'CWL&OQ+lm5)@HJ\L@2n5<J-X+^%$X3[ICEVo?c=`nD.jQm55F7'bBE/g\./ga9D_O %bkS_J@Ka#pOr2JBnn`&q9sq/Hc`L&!3'AVo]d<'Tb][T'4^4J(&mKXN=OLj3'h__Ij(5,1@O@9sOG1o>+Do?Y-Yo8]5PshgFmZ@2 %H.BIg)#VN7Y\-R/roUZI+#0G7XT&n@qS3$gh<29IV`\[Y9]tgonR_UlD>=,o2kZbsL-L#hlH?V.>'[dU2&3lO5=hc=+rTM"L%X>W %FY9ak$0-)Yr2?j6j9QA_&6Y$:b2GGqDERLaio>e%]TZ<=?_P\,@QO'L$duKI)nGQIrUr`U_ii6MJ,D*Pr@dg5^Jj++?MKFc?Mr8: %0,NMcq*4is,^17me.V0@ibL%/iNu$Wq<LCD./CYdra'bC\)[Y3\Eq,upB@&"J)jeJ<X&['?c]NrnZT?%(GG:eg(luh?=pYR2J]fJ %3=fEKL@hr,?F][VV4ik*f-k4_jE><?2F'^Yn*#8hIT\<@S.f_KChq/T<li.Y7GKgZ?s%mFb7l=A$=$k<1rATuffI,d;9K*7/g:4" %=\'0KC`-_o/JH!E\a<\E!7ObQ=`?N.Nq*e2jdoAjQ3+I&98AAp+E!O&XJ<4;KP@r0mgLbc`rt,WV(K%1);%d*8B"nAg9LbE-ncEk %O<,Df':=FE3]q*REm&_VCET[rZpc4h6"4$KBMlqWPF/f&`h[1*Q*l]B@Lfna#KGE[[>[t>Bpi?Q1R$[]0f*'6B%iskWaTDsB;>Fp %aR#GA@[!T8'qpncY&C,7JSDVNP>3j#9o.K@Z%6]K*d*[31mmnH%?Edg4i\2<^-+*o1Y$SH-56(H]ArO5N[ZP41C9KURMN<@9QX#[ %.je=L@lc1rRD6(.C:9LD&YsO;V58lBV5;.B3\;^XB!sBU5"I7Xa%>./bIMFtm`&R>3\<0c9Li)<;1=M;SBI36(R(3WXIg8pM7s!C %AB/B/f]>_D>A-5P9?Q+r"ggI*mE?9`7%Z$:$EZF?IhFPr%/$0nYBAr/7#F5rmBDFEEE!G^*V,TRZ;".TNuu8u"=Df-Ou%-c!d[<u %Ah-QcZ0lVR3:O/)$Q$I]1Fe@$3/8TI=fYcGo;G)=k_/CPoCLq/V6>UEP^td15nlq-n">;^\X>Q6kLY`1PJ!4JM+tTE[LUTK91:'= %=@Br6"@e@b?EWkXO-<#8A]r#J>TR)QB8`VEiFiRC(<&'.2#<g>&XGT'bWK'n1Nbh-g<4Oqi_/EE$ia'cX+gP?A[kH23/\B$dVG`@ %_8tp;n<bX_A&aEPPejt<64YFAYhD3SqD\Ad<`3.LAh1u>`HfV_*qB'NktXPL\Go,%#1F.#2kSuTqXis/DuTNE5"/Jc>c\kngULO* %NW?.WS.S=:Us(&Kih!=)`"7Z0+.=tN=F!,]lV"AYf98Bqf#AAHhF2sfH59>?%kK6$6aF4MgLT`4>sCI"op;C'd^%=I=tkMOX<Nal %/L"s3dN\HA;@pZu>j=2XbJgAbYTadi[$'PYrc1`VIds"p#)PTcR7c`,/I*^N?'7#:]9;dh/&YbJ9:#p<BruVO1PXh4GNhH@C4pbj %4*f+(?Z'Z#>.Q1'T1L)pe]#f=Q?m;PdfbeNGFAXc4T7,'5nQ6koj6;QJ<%m>LhWYK3E:9`g9)T,;^Ek!l-_/O3XNFZ!#`1KE2^BT %Y1_0([`_3H-&chC5\ne%DGimob:rOS4,k9n*%nMr@RO$EijK@oEQ3]SR?I/HR[oQFhXK5gn3`q4Im51$kY6V_T8\nT+ncHUEGc*9 %Kt>paY;.JO'%N@&FthMUa4!Yfm-,]-r<at@`$p`l)bXLjc4jsq88VtUSVE6L13%lZTO,p5d$$CHWR+jiMq6&s+cJsJ<ePlR;ZAh= %H#A5hJI3V43[sH8D`>Ok'^gV'NcEr0p-]P.b$`YfM6OeHL$$:IEgB8&B;0n5E-O^:7bVhUd=IaVUb/hZXN_@1C^$LaHZBE`ik5U% %Om6qBK;tb*Ag;5"U;+cKD:o74<Y?nAoB%t`)lY768pt;BJ:j)U[$!Bl=LfX%/XWaS,s)b4TEi-P"S!9#B]b$0"Op3>[Y9BTT`o_l %RUe_RLp1]6]>1<Z4(h_FJQ)Wh>Vjk,^r0K7\%?a=RCeRZ!IPZL"J78NVMuo-K\5[Mb5"Sgd7LQCT!#G<d\?2`:<48!,m2[h60ja/ %4/NP1CN)=5<tQ1kNBQN^e#G^qJS)1:+c2.7hb]\WA68%6,.[0`oolZjH6e,2=r3A4#&1C(R?rr2Y7;l;7B8%c:)jU%QOflkbsPC; %Otb8:]'R%CSogCBW43rb6c,U^RA>5.M2*n93LSSEL-f5E:@]@+E"g]]R)'$&AD"Sc$n"1WU>c]#ZU$(7Fia!u6=SP9F!6XjY_ltV %"UlRu`:6soP5#](]L]T/c"lX-SjFi6iuJOK'"2Z/_;$/m)-NU/k&O=q0!X6oY^VsgjC;JkM&g<uZL0[hPb.#OBhWRT?qE@rRgnom %S!"Op7h_lOUiBQYX[esPA-nOH"^.G(Ao1Zu#;a<7=!912TcM603jB*W/Fq4(JduH&f^+??P)f4XB]<UU8IM8B;Idf_Y$Y5Uik5M( %1p'fa%W%6j>q=@/[pp;M3Q3KscN>O>!kp:Fhb@J$m)4iSM_e@uULN;,BhL.cTe.7qdCF[uVlV$u&XLWRc*L%P8f+`L4/=%$flZBY %Ri4/N:%^NoZtCd'LZEtSKJ[5.KNPCM1NXXo(e?!1`[Rp^,rd_k8RIU?,0i/PKQ\7rXr3rd3RIU'RXm<@P03pH:,ZMKX%MtS:6AbZ %6l797@3ZecnTmri!30Q9WBenSU>t==ZjTU(7,j7(#p=njl76N`:4=<cZ^E71J9\YW.(<bD+\4ujEY#:ZRRiV*j'3\,[_1@B#\s!> %Y*2I02Fs]&KhG^Y$$Do@dd(HVkCpkACACa*/MKRj.PC%mJTZ:r=U'_Fd:i-.FhGUs;M&WY6iK&YU\SU<0?,]o+NkN.C1P(??;3sL %=#/dD8e5Gnqa,=6iIFY^HsmNNDd]f[_T&1IWdmZhJ.ib_fP1q33:Y_7X-eda5[]Dp`?N!B1V@CAP.&'V=!Y>dU'(S<2oAJbeiXMO %1ql'L10^ErR\Q<?#6;f8GeHIRCrAouZIo:P/?cT`7"4:;%`<%dRKGj@;AeE3!u_R`W<]Pr0X0&\2n<S+_SGS*2H,R5SQnM67<P`c %i.'1l5X]m1,7*]lUN!8(>RO^I_oc$+?4"E=3,5<eCg"&jBi'ZaL"'De':XhHIUi3b";SfTb8IEJ:o5Lrid2>`9\9UY`tr6?7OMRE %Me9k(4W[DI7C:nZQ-a+[:96Xk/uVmnrU(7P+<tk`Rth64lETu[NNa'D8_LFHUW>)DPS$7JZW6%JN*'b9bXXDqH!/38*Qj\fK@GV, %O7q6B85eh::/Jj_8U30kGS#_mc)\bo)gDdJ'K4X0%Eo_?@o#egM1H@WBGOjiRfm4)]9]Onl65'l74tX%81=*!&QlN_?tC>r7NU5A %0(8;X?tq9&]a%XhlsK->W\"@:^U^3M096=\CgM@6YXVY[h6"6s">;8D]Yq1VQkLTGX<ROcH.=bl(<uuHJgTQTgVOZ[[W.qroE!/W %Vu`PZY+J$.IK`i'<6-0<cR:9=mP744(dMu$7?hQI.LpXUMJGM&HfWPI-B4KNW^P585FWC=f,;VKP;4COTlLM6V^lG_]JNLKX6LbC %5DC;_MjFoGTjCQ_@+6,kJ.TCAZa:57["JY#R`7IQX'tlG45'Kb5'_<#7D#JN8)hQ)S"etPn2b5doe'VSP<@b=T1FF)!G>Ve`&T8[ %Ql^81C;k52XM_8>G:oc;X:[A@#o14S)otX&`"OrM)pJI&`TUOZCT#:9@6ctH<Aqg(oW1*Q0X>M4_n)oNZU#jE:EfjJj-lAIArp%, %`ba2EAuTupPu5mg:KYN-L8DM\Yn<Q%5u^m%1=Cd8Q*H6TF)N2<BX@1XU73upnA.bb;e!Mg1+m&KhkB^RCu$St+Vm58<8GJ<%Q+TO %&r-q)79Q^Y]Ttn8.PQ13=0=M6]2$rRV!EV"3$?!gK3RP69a.Le%C54S1:0Sj0^N=cKgXVq1C_NhNTYkaL(O^_8cn<NRM$dM&2S$C %jTH$ra0$(\^_66mq%_C/'fM/D/rQ+l`E?b.3/NniCVs`m@r9?8*HN0U[A90k/kg#6^o`Enn;FtiV9T=+#].JKG&VcYb[o'hJGA6U %5YMGj]V!SlXuNL(DD+R58LLX$Ws0rmVK5iQ#fL0V"Tj7;L)uI=F1l;T@!;]VbSCNq$t->,,gc`8E-;@>![:!D&GaCV5S^UWe;0;c %3H$biNtan%N5^XORKgA8P/Gu]-'YhFVBb8?C#Jbk>^:P2V\5gLGKYo$:s9Kt[pW8@>0U"Z33abH*No6_@+g.&afpR4]K\8KCKMM, %hBPumZ[b$@08hId/s5oq204=DX@N@#?[^*Qkd^[PXpiQ?ce/r9l/G:;*"@cY#u:r4'P%e,b%suPqp'!"/fP9KUrAUS:Y%<B.P`TA %KNPa^T2RLrU/jS2ZXS3!.##-^><.Q*\6rmVTJ9[b\>QY#.`6mlCK=aCbu5Pf3aX5<PX.1CUl-#QGB&fmZ\5o(:"Wh`,>]Dnc=a5\ %e3C.Hc?-)L=KH#$n_>-NE+/Hr%?n,dd*s*T`ZoG'AeCGhE-m5(\YtI+_D7Pc0iaOESgNYi(Cg#,.hNX_nKpH%7S)GP?qEU3D+eVf %,:^i:)r\Mu,E\bh!\A\(7</t33@l%IS9Dh&"/<CaatTX%OD)de]g,bCkp*AU^d:M_cHKSbT@dWR8fYM(_G1!k'cpg"5Qa/^Mo2[u %3dA6-\eRs_TS.1K<BUqK5amPIY)(etE'!7I\-ELM(/lPi99k5O7.6&FIi4[jL>nAr6]1YeMOoI7,q_S\(KP4LkIiq03sM*5"rkK\ %Nc>o%@$gQO5gT6U@M=e7b/f9Q^?MBH5T\4cl6bKjLZUQC=bU'sAa%Qb26S)`.%"4L3Y:'3jq?tlKR0q\"Zr(_*!Gt[lV'p'lr9Y4 %_I?UOCgF;(2c[qJGN@!i>+*O)eO\?g\q1?FKEXUV[Chi^.50u=0?`4HSlqeYd*Z_eFbiaG9MVZ"DJ^T;YX,OY'_dCc0UXlT0^u?% %0t'75*$hTn'@FoS.dF=cBftA76&62W2DKl7n2go2ibokeX%YNlHZFn'7iZhY@K#N!@0`8qr]4h.ksSXAP]ni/1*UTTqsE&fj;_`h %+*WRE]$Z(cYjH83PR,VWAP3\`ChAIh6"#dX,_iA^J3FNLQGp5?Qh;(pNL@aKOC;B:0^MS)Sa-eaQ(9"W"fj#'bp\WDH)U<n_g5ZM %Uf!X.;PQA8fZ(:8`4S`lBn/2(D#/1mUrR)!R6!1NEKZqIC0aho&E/8mL]?^?"Mk:%I.0@p0"iJM7NZG>C]e.g>N'D(Sa9</_p`fJ %mGK+sXDOho/2iL\4Bo`4]2B$\=uL=dM9p38M78C%m?-I+9RcFV#g@u1a4bh-<bF5e/6Y"9d0j\PZ^d\m"T&\Y(muFK)4!MH"4?*b %;'Wh`BMQP&d1(2$>Hu.c2E_*^TRQLDphd=C-u6=)O,0HHMj$>cB%5ib"P+7KYp80>=VkMLk]DR(Mu=P.no@eK_LVlD;Um<Xcsq`< %)T1U4AUsV_<)I(R41"/c1#l5/,=KQKjCC"3[M<;!;ICY.+KehN)Ms$WBXVg,3&F=Ic$Dh<!Mih@lBQp^&.np+KP2\?H@n$SY8S_] %]**:R)Z=O`_*D+r)"%^69\:o)SOjpRn\k,hG1AW\EV\K1M8AL]8`nemn6to(G=@l-+jX0^L($!lrZ&Se#3k+SDR(ts,L>$ejEIlu %fn^(UI7G$/#pH6E6L*J>mh\C1O_fFd8ZO\3n<72fIfp78)Qs`=:nB7R).;oa"pf[AHIQILi3E>N(.bKq<DTo[a@m7g`,129=W\p9 %Q<UY?OaV%O79r(8c3D3H15@ni:V]RlQA$tM/9*IOYU<rKcTm%Y[Q3$+2YI(mF]hL:qq\:o9l*5eAnq^Ki8c@-C>0kBf[uD(W?0sl %@p$0b9=?lf=K=5jc#/jCYc@5K5h+eO'')S>,0j=m-h%+?>^ieUs%(/?``LlJ/N!:Ul/H4[pk5'%$l2bgT3uQ!*E$3e\1Ag/jaq-6 %1+A#.m1F#4Fi(VMDsY7-cBZA,o+`B/[RQFFb>U3q6Yl!F2Vt\K>IBHaKdJrnUu?,?.gJ'qK]"#$rWh\H<tdQ`VPB:Y;\8W/[4K.P %7#IfSDjeeQ]`>N'QeW)1AW39=9*1"1b@(mJMAFplfU\o$g$9[H9)X?)@Ye9,\:f)9`-Bh*pIN<WLA-9O%BKjRBd;^r'!)<h`X/tR %:#p-V.CQmAq$U>Y!]kMZFlaoZ@*&[EH/,r@3DSXs6s+'6HCBCUQE.nDW_i%:R+2VSPg+)@e1+D<9+mDdA(,;9glPE8o[T'TPhr#W %&F@#J&-?>'SF(fP&[4-$#-2UJ@4MpT8A5mI]VWS?3ZdOAigk,N$/5]CB(qB!V'USuliR;5^)JEF^=Pb6[RAg;G9r6hbNR,a]G8/# %Y_T;C/4DEDU8R4odK)Q;iMK@0TTb:-WbcL2M-34kfBlJ"N/]bNr#cit@8!:1%#8+UPCOhnqrL`L>#d&F-:;eN<%,2g;8FJ7B.JhU %6!,eC7'KW9*.hne+fIqnXq%mcU_5uYfbTPk&$G'7WB=Q`a'K[M5n(D:,n<glfl;kF!05c6&ekQ`cBa$;mIhP^Zo&BD8`iWOCDNj] %T7M%`CC]PTVc"(9[BZSdNs7'0Wk2<52$<sE-^Fdj]lIp`+oB0c8?r3-j,/akocqN*aXPG,:&`p]%3Vu0Y>+0B5fD>#O(^YDff@Ta %cmXJA][`NK;XBndML\CF#c2[*k%2[m+4O`p,F"9UC#MW%E)33uf'51;_LWCW;Q2PpOQV4D%]mK)^\A*NjFpK7aTFtJ"87&`!r`(K %L._<1RD@H=@`PRn2WSiP+l/6],pXIRq1cPE3$oWN@t@%A2W53jkV;+:7B4cZjcEQ@1$9)T:/9TQ8V^EOdY?+DQZ[PGWu/DNE0>F$ %V<F"c#]"^JoVa\>0SE$_+Ym$ojMR'lfnXe^bF!_aKmq61>Tr-_"N307P75AS<G-)t!'_OX<a>\I&`[FA,5CXn-0)?AiU^_mgS0Vb %_eTnjY7'=p%8lgrI!CBB*((QmRDeXKSUggs#P-""h8:)O5EL'fRXgBB,`&h4I%V)'+d`cXff14MNTTi04/+oE3$8&s:UZ8G'<c1L %6A]u.9]co67hXW$U^n`An?7c70='Kk#PA>E?E>lu54K=!/4098FVQnl6_HJQ&b-rfV6.5JZ9ZXt]g^BFd(54KLhUo!(YR2kdVKoC %Q*[q]NtKl:>fM3[1W$k9V:%GbUe94?pDPdaEm1\/)["OPOF>jXNA-\ZkGWGA+ejVH\5+)7a;/TKeoP@h),+sS7qRMta/]h2P&n?_ %YXhf8B-6&N&4gXI":R2D'fud(.1q2h&H'I9^qHu5o<gIXoK#q$)@<'3TJT[N>Q`PWXdO\gO+S[jSM3n3!d0TMH0m/:75Nd=;ZTLO %#JRMZi6%)"_J7qJCG!>-^_TU^/hD#mVm.%KlMB@F=?.b`jj%>NaE*HS2&QU5c4pPEXAk^!$+^S^pGWWf#s&YqF17KX$s>\(3ES.D %:BF*M%hcsjjko[[?kV19=m)#>#Qfk"Qn^LMECu43:-?`+of@AR5u_A$4^a9/O=+Jt2Zk+'R;lYA@Y)uAFLF:SEk(_o+iIHI'<K,q %4t!b,FHQ748N`N2[]$0Uh3+%kZUK"9TFUdR"/i"H)nd;aiS>eS3$]o8.Hb"0p2GUsJO'>rgZnomJ-:lXZ_Z]b@2ObB3MUZ'_N((+ %"X5/3K?-*l&G)6P`4^P1ASm3nYS&Nb@]-#h99QfT$pd*L72m0oSB?S2]<_XCTW(@N-;7$(j:JSLPuU;Jk/X.8Qn<*&Z03T1^Si)+ %;=h*GPn(NYl0134*nYpoAW2PM8N2rF!Qa@+$l`)Tc9\`L1>=D4hhEt.qM-DSRG`UfcIh=u4r;q!_<MV!')<a;P!RES!ZM>jao@D> %0b1Y0f>93Y]+WRn$hHX-MbO<`XL$5j(4pB?@+We/1tqX2[\^55b'j@(b">(XXN;dlfPD@/ep'R8/Qc5jCmtU=aj.?.!ead+2F+iR %J?@X:-O^+m1VogMHmV-TU6U]>jGm;aYPSI`qF94R/)(1tZaOp`bq;:l:t/2@albR`A<1,4gnD;Jcid&-%KXhH@^t\-!A\/NC<^i' %]i5^hkq2^;'-PGi;opn.7=[0.\jVr)_!r5qD(f'88Rbi#"H^.&%Q^7Wgf5Z9B-mj(JE%UbUbrm;3(h;r*6<B0!oQ1n*4u$m+Y;HA %f(ficg+5darc%:,=#+V=pTk`?S,A`sX6:qGGe<@uhjS(lS,7BmYFYP%do;AKF^u?fAE30I7`Z"$+*^Fb[SsI)qOf?C6MLl!Dch'Q %H3s[I?Le+fU.aI"e5'Dkf".-k0lg$2:m<``it:oOeC4s1AZ,*XM7LU2kJ4MB0X<:mN$Qe>[T):!l"'rSk6a3Z\E4pUAm8:t&6V]> %/I8u+gGT@`$G=8KZ]Tnd)p*+S$&O\NrKjf8#(pIW/[Zq/I?O)N9+\4e2\Wu_/QlW88R;Irn"m-?JgG`._f(fMBk?4:[1'.!TX3a. %?R6>B@FXBKB1-EJ@;j6t2.D%;`Z^Ua:1Fnr++s%dNq_8$5U8d,](#e[9CH%qWDC6c/CG8rhQW*k]&%RV-H.=2&72RS>VsC)j/f\% %<;)KkckCE%(_FWqP1>u)j(lT:P33&`5GaN%`Y/cA]%]q#GI@:BSAO?m,`0(RfA..W)'<&gpYorMLMC`fK8F76^U`ho]Rr"M%]9bXG %KVXT,34E@`.])DaN-(RQpk\:P6fi,!98Fr"+N=SgaL2dGkKCi@m^$?=iA_9A'kGhtYXB't$UHOsh[9QnIc+pD5RBV3Q>XW0Ce[11 %`:LF.Xctg3&N7pr$'kq=Bat7H+U-&;+)*]YnG,lbc,dEFZsQoT`-^iG3gG(<fd++@UEo:QV551/<AP/#.EP:6j^8U$)<C-][Ni*I %.<%C)KGsMLe-+J<LN@:67`#\Ar^*qA'6MPAMoq4K)2+<7Zc=,bjH,;ff/iWH7-!TmEZKLeg[\4!1AE@$)^K(;gp+]9#lqIVa:GSm %7p[;j\OP_m%DM3>+FVQ?+%bmW2e-[nZ+M:sA#V.e[Yd$1EZP(?LiWeCVk7sH`@lB'@6Gb<Ze*%&bq6][_+1XPdYEoa=,n?&DiU#h %9<H7VVC8de<s-^X-AbeWb<WpAfe)_,E^\'5NBMN>/N*<i2YJ@1B93"k=cs'@F,n7m&BgKZ]C's&)9Jf9G(bOm0$V6T::mnFO5,fs %IC360B9t\BE"U$+nphB<UuS\kBEtee(C2ArP8F?j(F#tP?u(priSEITlZOoI5fMEO^Iim?G;\qhA03m/]::%R;<:%HDOh'4'QSBq %Sf@6_KS!l:/?9I1#OupNfeHY3Yj_\=P.D(F0(%G508/=mIdh_9e1q,o8X[Vm0_doOfq\!pc']a=8.a2'3s40GI,q8sFj-Rs?**pe %aAIWu6D--tP(eW@qJd"&;a@id2n3gQbA:845fgdXTqbkug,QLlKkdK2**$5\Q$'4^D_$hJ\gCj2,id\-pK1.p+2#erN<[.B"a/A@ %^igA(glY9D*XRD?A./!sd\T@Q<ZJnCl>fV7'>D<(=UVMp*e@&LE_;<iDg$$0gCuqmD"E%YDDTfM-IIDolG30V&97^!pNjIi+4s!p %=4bPs)KsG:a_4Uk*_n@0fVGA5o@OLSC:ZVJB"=0L2Q=duK'd0aQGC*N@U<N.\uEW8&HlJLGc<#$ml?42]ZJ8L.?0M8^:$*9#Kk>W %#X2gajK>+gM6:lgO0U#943J$hekHcUf<Un.FFt,*_49,o4[(j;nquOE:dfQnWi^p!,\lP3F*O4@K>]'2Q?VG<cd!Rj$N4T43=%0. %Wr#t<=ualO^5@H[MbBaEIaEa]8>#RjrrQ\*_i$_"#kF)]B*X*QA@V21#Bo;F_s8EP\EUf`AB0Zt83pF`hkV,`M"`sEnJN^K)l!cY %e*,7U$O44Z?qE4312*$qL#fj+K@:KU[[FYZl&2*24s%'e5(SBN(.l!li4rfSH,3\Kb&$2lBV`q<AZJK2>_hC@q7+;B73O+k;CJ9F %+:fh6.pM]l(QK4H.pLSV+OBI(%)[0h@SHtFaf0)YEJ#QEV@Ml7)S9;0-R-D`"m-'Ir'?5NM7f^R,['JQOs)nKWBm70JPROaY*KP* %XWG.s)(iI0:/OEF5YW&,RhO.VF')7UQb-[&ZQr'4>Y5u8bVdLtob5YZfX2L)?27;NP-_-0pEdRa+REq#!IJemP!cGr(gnoR1ED;K %R"f_\CiHon,uq/Q`Q^#!@Fej"o*%Ld+KefAJ]QBp*6/++=]m_di@=.=<LjS]H>&L<RLAR7kId"`$f90s*/Jp7S@H80NC5p"N]n'0 %,nhdVgJoD[?m!5I1^aeeA2\SQie^qh>ZJ'gVkT\"K#h9)94Y83iSL-VFMba+gS)/aS]%QH8K0@gD%\B\nB#)==o`H9ibSuiPE#Bq %'^)camoM^B"Wl6aWF0)./D-4L4EQ0\Xi1N8p/LLs_3+f1@n3%U=(Wr*CLX%p>I"b&K$f*1@%>@U+0Gm[j"V<"7%5nD\_M\^POVNo %8BednX,SeVM%!du`dA2>LQI(c.2?(lZPch;Gr*HK<BpatW+lEu$o/A5.g#8M)2NTYP&V0k&9S%'YF*Kfo*midNC<i:Woctb1n6&s %J-a`F?'7=7Fqt(2AtrcXrY=m`Va@=)L;An86U31pcF+q:iu_cTaTmkkK&9"O2(opG6?[bmjpoD'q3q`KGl2&(;E)tl_U1lLHBV"% %@b<PJHdS%lDJOFbZ7b,r*TUM:,`3*C]!WS#76WN1B]*r[U$N"0^+[8Fj$4ioRr5APld-&U>UG/O=j\I$d&Jr:Y"3)N2Tq_"2$M%Z %BXTD?Od^=p+k^.gnG,"#/X%6i!X*.@f_PFU+5pGID2jG/>#dAg-"eN4-#\JF/3bQT;5Z(U8e?F1,C`?;Q]+LD*f`d"Q\;l&f7dFR %HnLIOWY\;$[(On5J8%De/C(H86@.!6[N,o>?>ST@R95gd3%S1eN[9VFJ1I#0PljYl_Z?Zp9BHXX*!9#4c#HXWZsocj./.O\9su![ %P@Z`sMOd>?aVfiA/`'HjXTk:=[W@!E6"ep\0LE%Wno[Pb(J_bV^]g33WoV!,5cEM*m.7=BjdJX?L;@95na,7t/Qo:V9la"Gk[8H4 %$2<;"76qn_2RaL2Jdnq"H@G<l/n>9#]Ur'MYeb3<?J)l_&%%AVLlqL=H<[0!Ac&t'0/%?kb>o5U3@BHD-PjpPkC],W#hH*=/=>k. %nThlQ`Z'+A@5R-s8FR6m=c(fT0p]/PR_'5XGF%]icZRPG2)Qqr-*sF;EXF&`!bCo;H/f\KeY[YT>;@tE\[TtlB3^aHK-==N^pRrm %EnE:8b>mV`N1K!_28@:L2B/9+9[uSpSIX.#g[%+-O6'UY1C*fG!$1cZ"[tr,fn7Ud*hUeLUg#2IDd2dpqIK?f+leOqIe`'TX^j>o %3^u<8C?PpXKt9Y6D9XWjMdB8akkmjNn>KD&6.C]OGA,T]60BIC%ZmYYku)F=^gO(7]R*go,7hS;5mC?K1J/23''UDr0i;gP_U3!S %ab-,Ee3^m*d+9OBQnq8\jZ<qf=4RUW+"/s50'^+r+?>hTJ^p"VGL>+SZf3NEl-c_u@HOWu4QWjkp=,Tsla)8SGRA">$uq%Fh[=rp %>uJh?giP+1Cs4n3R^7u-</G]>[ZKTEs&RG%AA,g)X2gBC,"48lE3YGbR,dlahGSL@!R"d:^Z-2EH.]0t<1[ES/$[s&T]s*Z(m3.m %j+(AC(35c.*ac7#huP4=Ga`5hfn:e%Npru2@h2p`b1S/#.4/<H&S7<"e@2nR%^UcP`KI#.n)p`Wd+jR%>k2+q1^f<=UR)kZ*""3B %K$G,3Uu6=$+sItR>O>ZUBB^Q!b?55SB<0u2a3Y[,(4AUIGhD;P;k-&dZ'D3c.^k`>:5?pfB$P4,g#Y`48hke.T#-N%m`=sI9:Bos %A%c#>\_\prZp_HWYGZ"krdZMU>Z''S^$K^kZ@F@dOITp4Eisc3Q0Lfk;f7P:H9d>u-ekcR\-.qtc%qA73[[*MW*Z70OJG^8Pf_1Z %lB0R[PDt3u-]iQ$_$>kCf)Q*Ci,h+[Ar?k4WWLVsj;g<^!RO,u/`fq6`4]"J:,N#%:LCHVTE/Mf9A-+72#u28\#cDMP#p[M'<%GH %IjhnA$+B@$:[M;BOdbP,kA:>?NPp089!R6]R$n."NX0(m_gF*F][QZe\#<Q!j^PdS\D0`n5pFO&kks4TN%[1ZVGPsdjP4(IBVShH %@RQP8MlG`Yq?(uQb%.1.r5l/:X&oL303d)(UuReH20d.1rK0?UEt:QfaG0eZfj*1!iesI84\,SK^uJA+>g1/U\@*-m^TjljCDM0X %&UN$6XP)*t\`Z?9nm^`A`['8uogm&D`b.GD*9@r%N<.,RiAQQ*-'O?`0$>H!ja]ZX3l"fccmfP&fWOsgH>=A?[^F''pe2ad4B(e3 %F=u(L,F'*HmE^IBBso"sQ;Gdj`n;Sro+W13`9JB8k%Vc+3C=[R.N6t#J3BMVhY7[:n"h)Q0D/AXN?RfYs,M;ZFuulI<]1g-dp)/O %cHUCWQb%)U2Vh's>J6[JLO2o5F+@*5<c`uLaG*'f&Go#CCrcW:CpKj+%0_OX1lUQh>\%Z^>q5EZX+HFU"IiR@jTWs&,$R\heI<.r %&5d-8nKMn$F0[B!Du)j'oHKV0V/hp!X*kc2#CdND;R9Kl8C71`]j;V8KkIYI9$ZV<rKc;Xlp^P]JW$kbLi%fX"'9EC>FTHo,3a9S %juFtuKM6?ff;ql1<UIHD=tYSfqV2//G$^&?:]>n&@[UEHGrt_M[p!\q@lENVe$/;<>MVoO>Z=>nZ]$WQ-pOU;^)s]X2TYd7D5!8l %MBF#7N"CuRUm\0),"H=T@d(G2n?&E2S-YsP_i=R2K2=<m=ll=#<$,4oI4Mca(W[+tSA1MrHA>?+c(bl:?#Ga_fEA\T1J=$TCp:Us %N8U8*SJ.A_Qk<nGd)<>(*-27<mp="V_W?V*3#f0pL!%+n=TS.V4_\DA-n_FX`usSG8_,8-P"!tbXC7c7\t0!V1iN"!G^?T[*4p'2 %oJmi/#)BBde[W@(=-(.%NTItg#_:qVkcHjAM9l[93c<2n.Kj2,I=$kV@'cFjc!jAJX!C9VjsW@tG$n^`Xh<8Y=%CREN&b/4ai@ds %Uj-I)P:&ih8^cU<5R&5V^LJiGqdQ&Ac"[*TQm\q?Vr6jZ$*]DO7a6]8^#d#8Tte^OdF"\dW2msopgVWKQ"LKb<NbSAc-3%K;A'?= %,@,B&cKeKQ!Ci%(erD.2gj)(B(E;q/4CaIk[+bs.Sud=sL+a>,,$D=$!\kCiCQk\,QYse)gZ5:a+29A`YLE0:l_\.jHFq);f0)B4 %2nd$VDWS=UOg;;^!ln#SSTA\O913:k.PAb:1NS!a/kF`;dEK8TL7;)bg;:9!c8t'u#c1Pha3MCO&o!Q3%]Yi]&4ThL?C8X,/W"2* %N*X;r.,C\#>3$SY*/U&B4s8kG5u-D?4D6gHqT-2<58HT=rQ7"8&RJ3H`&K-ie2LEtm-@#pYYnoKUU"S-j]Q+Y2l[cl%mbFYUT+n7 %5!Gq$l%0"\+J1]MR_:TlEV;))HA;uc_QoaJOiKZP*'pU(4hKQpJiMPWauuo5mssTZGe6@Xd7Xj=+-l^VE1ga,MVe7jj?kQ4EK1^q %Wl=c2O$rN(75mo%:UaFsb8`P'P-,`$b3$bcka;l?:-J,-K[n\4GgMWB[6o.b+jV<I9;6#k..F`3[<s(XuB$fJ%/i-r38kitEK^<_3 %Hs":d[hAmGEWb@IThA.8.?(3R``tL>S!XUH)oG0lRc/bYUl8CRiZlqC0U/[Y&WIn9ieVu`@HWnQT/J(S^HM+t);/i+FbWXr%nR_* %11I5pW4g+M;QPre2Hn.^SbOET^?T^i=GLCgq(NNYi&JW)V$7)B-\r!(S\Chr4c;7#CE.Y6TkG)kib/]YdQTu.,rAF4&#lgp4mWD% %I+tEQ-@AV&l`hmJ"L5Y]\!gcI`Nb\F^FO9;_4Poq\S0`Q*nl3FRV5P2"D]*YLQW'<`PZH_4Ue\7M;FWAO1.ZGe5j^ofY$?ho91>@ %Iep!^=MLUe:1_<ce2i@[3_7u'Pd.HX?MNC+#*OGe7Y6WMa^Z^o#`14X$c7KY<3N)Hj/9G()S4gKHORCZnF-4E8&re\PWF9W_tS,W %NKs$\kp$UU63G8IWHJ&$_@b)f18Ug0eZ`d;_taG@(8G1CLPno)#AQMRkO5EH"@oNQL-AiQ`tXl+YuOj$8->C3^bK)/S\>VaKYn^A %d0K"48nTSoJg7^a1%TT:I:l7a[dWDf)n4InDsE:0FE"UHPqe;q%mRl"*?;mab8U;hO-(KY'?M2@1X[JMmR'pm/h5hI<gaY!D[h?d %UVHEpDoL/`ajnlYqrlsO)_5D<XcKj]E9t3F@9cEqD<PIk_I6`Gnr2?MVmeZEAKL(H?KX`+$UhYQ)uInf6K_CKj+fgG%nGAFR3#Q] %IA?m=C>]p][8,UL35YJtF90i4;B=(]VK3,(@Y0A$cRNjZS#q*OrSRfr;ePHlK;3:bN5q[bOTmeEK-Rm.*C'2TO)Xm93Qb:XN+Z)/ %@hEhNHQB/[qS>,N),uBU3c=0!ol.9tPj);7510G/):*n-Xjd%'O)X`"T,*;6F>d]h,BA]%@7'..<>D1>r?'fO+Xk"Bekhp+n.F\1* %9-;mgBC"I]/mEnYpTYdun9>-DRr,^YD(/+%EsO<>qS0#2n,p/\pEEBmT8-Nd;lB*%pMdL!Q*JPu54S\$2fK0AWtU4O_@_ej7kf`C %p3Rh,[ZF"3F4L)cn@RC*M`T]qn1?TjWZ7I2LOM9ter0uh-5)Sm_D4B_!c',][F>On5N)mm*hLIO+nr)O>mh%GSG8;VJXj*TBK57O %eoG7bY(pW6UsL!berLcD\Uh_YP8dV&qsd0i9_>@2k2Z&RAj\DOX%4K`P-`Di#>W@X5,(6VbXr_;2&Zfr]jkD49P[d'-(\-6g(#gG %*i@ptlD6jT,FueSe6<5GUSF;6*iu<$?O;T$?Ze!9QU/F)s"GOa3di)c%nGAFRHiDP7iL;B3kF6YFge!)m0KW??2Wn8f;UBO2D#n' %dhhqL/lu#0IVgrDXYKJ+4".5jP"/YDG>\7iH73!K;Xfbd@I,-WTR<qT%i;F.gd>.r/SW6ERrV&9j]kl*aN7L@K]EV1Xl78@>R,tP %1duu)D+bsd%qTUN-luFLd)-..Sc`/fTTe_nVbJ%i!_VOAg=S3$r-bskg)I3JA>cHWM2,DH#Kp:bY\K<*W;YZ6cPDgos&LigHto4W %QZRah:[f*#G&-bL/N'*)//mI!9^aODn<XbbQ*r<Poo=In0Wen8'qJ8"g(#gG*i@ptlE,iU7QN%)9J8:I[B>UD$[esL*j$Xf1DGYJ %CnbZb((;TM[>l8Mn>onEj:F]-;]Oc8%\@-@[GmmTG_@G?VU20"mn@P\@S<EQl^c",Z@MH<#[o;m7(b+29s%nq*B\+=$3f>@dltY' %4*Y&LW'afOnjdp[a.3P@Dqh,Z<9$k)pu6$1<ZtQl!5acq>CfI2bo:>3N?)k!4DS"*"lJ%_2T"2eGQfUujUN<A,<W\q8?][>l#+Z] %gH8<'2cZ(Od<VCqgcSOsfm63CW0B$.H(_W5WoW;ng(muY`#U"XF9f?Y2X@()LS9eCqGt0(O*@d(M0$PEJeia7F+Uf8>ANHBpV<ku %'lmVImDk:7Hj`YG.[@m'9fN4'BU*f]H]:3IAUMr=%Q13*_M_%CMcWiOJpB#@O4ELkBYM*UNKs&,@\o-6J?r<:"W&b+E908QHHOUg %3Qj!2N^Qeo%KKDo_!TA\.6i2QC/iY'M.R\&e66SQ-hYifR1r,5!(oIqKGId*L/V#dkU.IGa^o`9]1Yk7\LlmX0[?XjA5"5gI$C7= %1u[QH>fF/&Tq;g`27#WoY-NMn#VG\q"=L8#@'/2Cb7U1:@QRH!/BngX'IpQ6epTJ>Pkk45ih8_=CSaBgWJ>-R8tiC=a\9<8(S>O; %?en.!=LGQVNq*dRq9#rgi*e%`'DT;g/^M:>I%e.^gYrRr>0Dp(\/q(rX5&gJY*/2)f^P0mC<H<D[ac9Xnjdra/MH6T<pR@L'>&PC %bo[\DHJ-PYXk*5EU*6AYZ'Q5l[?@h)2j]!CZ7`@"lau)MFUH-bQ[u<F+Ic6^4R9=&MR`[A0@kEgL#^i;@/7sVf?E;Rj3U.$7@Ru< %/uQ6p++"N0DkJL";I^_o=:\6\/`*S=fdj(V)Ft@=Ffmel@5S1Vm@pg'P-rl7T,sFZ.tnV%/,c7U>3_b0:0)-Lq\a*`p;`uD75nZs %L;HZ/aQ-d#Mf-R'%<Ij;h=!r^18UIN6U,I=VTh_AepXi'!d6`6cp0*@eQP=),Ag-T7&P;L!%C>P!0KG*A_"T6C;8@#M!RJ^('#4u %n/W3[U.$p>U4$i@PVrN9GZ]s!LN%d\q^P`Y5>;9e.:[]*\(l$%80a>r@!DF[fDutYp7\V;pQ9b]g.'4AjB27t".U]W=`CW,H0?Ip %iNW5pl4iqq(VPX%.H;Wm;:"CaE!tr!H"pX\riNQda(gi"H0?LIE4AUoj2W%&55YE$GAm\O>%d3^!(ZeL`T%MdZ2OMs(?*I+S\n$j %pl+l^Zf%4"s&L'&F#gUf+$9!U,]6T(=?t\2m3N1&646Ai.<Q,k*$EAWW]BU[fgKQ_`S*aQ.f1V_8$4UoEjLhF)8'e:YB=t-qH8,X %ek?En+/nn>NR6BeJ&/+`2>"3rU%--jc/Z4cO)5arX0*iQ#pm)XK6bI&=&b(.nREr\LSTo%);BM7QZ_O9Xjq5=f[MrL-fG?QY1)M9 %Dna-DgZ.R6.FJcOq&gJd@>4;=*Z)Fm*A7.gSVr/:l+21N?crGu>*dU@D&5oJgB$BdJh3jcHL'5687`P*>op5'SQTkhF&U/8]N;_\ %&Ebe//?KuIZ2tUu]fiIJb%!ZHLM"f4:_JUX5CS:J>A/ai;etT05=56R+j/99_qON3Q.!YFKG'p=6UBDB8QM\@l:H$/YH)m6WX!5i %953&ld_=97bdE3TW0M,nd+(ZudGPd>g2`BteJ.SVL>->;*Tj3%[O76,CoGnX9kpf(T65[]bt9/:7U,c3,IAf?;K9!GgXshCRh;2J %Gn9.%2WRo)/_+GL28Xn]We5)Op%Q?!PXQUX3dKp6pMdL!PtA!8p9?86S@t%7_kj?]pTYh!M#4C1h4\h?CROt#?>^_O)ELu;YIb6K %_":o\XlG.">Rs?Z86N;f8F7W3E+0b/;-[k,^(5^HU[E^R:gBL-9XTgH'/48G/m_W'W*<a)h/%NG?;mcj_t@uUNKm'bOnGshE7P5R %iF6s-d"aj&@C_B<!+f*K32Y=5-rW)0..J/12F*\Icpp&"%\#5nZ1P:3E12kV_8Y]XTo\t>J<JqS)]q4V1*(,'Agf3Fes(#r`(.8L %'QB.5o5^rA0q5V<k'Ljs8==?uQTih'W7gpJkVT]YD@U1lq,LcX[YOBfRE6L3Q5mp]\Q\V4m4)3&L6OaRd)X_Td5G$;-aBHX2o'Fh %4:th5S\>VYKVR5SSLOK`Q=9OAo>s7HfO39C7@:1/G?4[T*u3Kj@ikr>].%7F8g!@!BC4U_/m?ia0.C,K&WY/c9qF_Wn:S7nL,.V6 %85UG<_&"(D4R&#/^iu>kEp$K*1NX7U8D:#,nWEFsb;qml/#7cVeqmlanH_]b?R8knYcYWbbC.o-hL"E:UFjR/ZA;+4dUO$%J8rqK %0!r%_DUniS[OR!fkB'S58L(Ih!%TI#X_mE;V!P=N^lLDm[h>@h]<)4*,pg(Y:8P6"d+18Mdm<<..&hNXcp+pSk`*q[mE3`XVf)8W9 %$V`O=@a3"F6oTgOXAbB+$io]"eo\^I2UKF<XYo_aH>(mR$MC3Job0f.SL%`)Q!/1o-Q\rfd;#L;fC"mR6J^VK]l[mKmnSiaf-\>e %QaYJ=T+7;IP<s1L>h4rXU%oaui)FIeYoeIKAq$sp%HiK0VGNAnAHus`BY)#(]XIt6ABiUP[>'-r*h"sM6G([RoWsV*g/Q@L;lR0b %rN&M&hlCRm/EdPn%q@'G@"o<A$@I%7NWkalKU$qc6DD=tlM3eSIXl,a9.?K&Du//u0_Z>p_6'[qp,19$p/:74/_B'<VG-On/@`PL %*ZkM"4S1^RFBFXElM..Utha>g]V+gFm8hYI?<0LoD2Pn^G8N9&rdFPhphYR.NAo>3"Ia.+\2*TeVAuiq5RlYs>WJ@6cXA""_lXLsn %ZnB)O@Wh7g7m=fK1"Em^@)Q23GU_D>m#4..-gF';E#YSO?LkJ0hLaV6)>iXUBH&Ico/G6U)rS49No4Aho$Blj_VqU1:&7LW&>L]7 %-&(qqjV^HKR=[JbWJP$P$:.![l@bjld)46h<lXU)O$(3l*3b#fXjd"VO)UK3P(]1E(/\!U)a(RT\FD;k:br$m6,\q4?>:I+BVB)Q %/]tZ@;u4QuPh\N$4J]tXp95U2JAg?8mS7+prN5tah1tHJp#bl/\">k*pZo<'J+l6%IX^fg^\RBXc,8<)0!s\KrRkm_G!RlNL)g.^ %?2o/dWT[@.7K;D?q<NO(O8kaXs7O69r:8j>rcu'LNm%Imf9"#\IFoP9pmS>)k#:CQ=l0P1hu3k2=>+R&LVLl:)IM8TMapc"%UiFD %j@CK=-^8UII?eT7i:)Oe"QPG&j?4IZ7)+1Vl@")d,Mooh5m9B<`pT\/YP^dILOCb'j<G_^$fB%[-h_Kp3BF61.mG,`1psNV.5$"c %'eX0/9l[-P[_f\*d`jZSW^VZ+[;AaKEW6Qa6*l0u_bUKI(\.)/+i)I.HkjK+j0=6tVlhIp4LfJFZ&l<V-3Ugc9nj_`]9Q/QoMVk/ %!bg^c#g-4;)EF>tdcC-Z8E4,h%A3;j*S/`S$9.UHn]I:M.mn.KCd>DLE3cn]b+0)Cj;rb*aM!D%cY7tWDn,HZO/_)nf(Si4o;mG' %:L7#D;El.C6PTVi7tIFP>hR_7kKBk.DiAA<&'VOU1a\ZqbM!j*Gac_jAZRdg[V,I[Rh>eIT)3!<Cj&fE_6k6ZK%7b7!3;H*n?Ihb %BAAT*_:K4FSli)GPPh[ZE]Mcj6]GSkjjQL5e5=7b9q,!5?PR3YJ_&cGQPO;F]a]aflW@t1Kc0SY=_1<mPLONgAcld4`h(Eab2(uW %j;rb*aM!D%?Sq<E@R?1"I&DSm8V]J_7j3ERBnW.,<MWRWOA9#<FK=r1aHWMZXh'_^L5sU2ZteQScN_mJbWVR;PWL%ea?BH3OF%R( %^W6P>=g*"AgJ$5N:C$9+Zig9Tfmt]ZNSOYm(;!""[<A2YWAS6]mH`2h=uOL(WQmdl4OP6D/M/`JXDNU\BEp"6%mLrm?Gt/CdKD>k %eIL*&pUU*AcjiQ-:kbQiFhQV*W02Ne8@L(QRTe:L.auDe10t^?>L[]2B*5/&L/Y/2B0oFWHhb]*pEG'8O\Ht)?L:#S:X$TEiLh-M %G+e9BPcq'q@Na!5`TW)s%b)+GX%GIC6.OsE'3!/RU_];GBIthg.`a0S`RX=XW#_fr4T#>dH3jhke.0t_k6oR0e(7A#AT5!YFk"Ud %eCuR4.Z&5!FK=r3WF\f)mVGS!U0(pGAa6a5ZN7HUA'a9Ajj=QS7fTB;gl(t'77*(P'7sKO4"^XfT60;gEYJR2<,<L3pILe0U8X72 %dNIA#5H:\o9ktlJ0ssW<-$O`+;HDnc!OX"jcfYMod10uGi2;.]Mtm+EnN_M=-[f/leX$dOh/K_&F(YW]b%cm$eXOs\T3<I9MbH.6 %SXl$M1X!u'd&!Gs)5((,e66!Y<6Qc(=1Y%d)M!^a_bU?=(\.#gK7H#RoP$%&?ToGD_U8#!S`OK$S#)j(,4hL;g]g$DEFhj;,c.cJ %PY7jHn.<96"rEA!<,<pr>1"@m^1QI+had$%I/NJSD/[S_TeT3IaR"q]_0d&_/70tO^326QgkI)&+%bo'l!5:BMkF5V/h!?]q!%ON %o,S`;8LfuOKG(kM\%mqCQ/ufF(LE")0.iU#i+nID"4ku9DQU$;<gMCc>#DH@Si<BXCPaX:K$Z)'#1^F<:??9T(DrtrD(W#0+*C;b %VY5.Jf>J:saW7W$jbDEoZk^71]b"CQik9E3MuRAGA#E6WW`$9:2UeX"<2H\Y>It$&aDC.Y_5ReF'oQrg/"m7P%:]7rU($Ln&mJVU %]lP/dphB&M/RS6YN@6sBS(J59fRf'/8$%,uXkL*.`D%tM#%Fo5K3$rEO_L%h2uCnr/RMeeE7F!oXmbTAA1e4e[-IcOSZ?Y2Sl:?l %39i/bK.t=rQ,QdJS\cg0@n1,+l?\.oJVU'JZgFM;*,B:rQWE&ZIjT?G<g6r@Q>(,k/N0To'Mb\H)e-ulf..i;-Z(H?XbNtca-p&J %fdNAb<HCZH7JRZ*8#LR3E%L:`o]CMrmQ6,4k'Msb/Z*J*o=aOd.\%+Q86t!oFWO&X3_Q<hj*797Bo"@,8*Ud`Wu2jcbLb5o*2P%$ %QIo5*=+sS#h7Y,c^+I%8W@I[.m(&FDRU`I/=tOg+ZdA&SmaP/)#HY%/[F?%,^+-RcQ:ed?NG*0#CF$FNerkES("?&^_@KOD[#T`s %/VWo#fY+G_&0:Y#9%"n^m;&V_EiY>Hj,"eI(#;qn5RjF+`Km6mE<N4gc(-mNCeIuNlDPl522eLrZDPTQD7#ECpphWVU2,Fr2@%>u %Eff)&0#H`4GQ,c5DY_,Qr1;p42-ELfIh1YQp*d2>*_KK\mCjY<Ym_uP?M\;bY$b;mB>+H(rCJUbjQs"_(^J%MAF#pkqlgII`_ONo %lX_X!DX?PkS$Cb_O6*0[I6ohGSqfjgm.jN1qTS7ojtb+78bZ!N+`DB*8Y0^ljAdNJ$7]*lksL$pp%8?K\b07OLK^@e!2[:,p&s0r %3=YnFGs'A@kAR`*V1@U_M8h#(>R7>?U,0ZtU_[%WSrXm*2U0-XM_^McgMXla"4B]N7\kuIIEdNLLJ/'ODbiZ6)7G]J'#:EqlVl4P %1uQBBDi[PW"acSk;`,c:ci&_A-huYH3H[bMfbcaVR*g2tnOQ0<Jk`iX04S.g&g!Y2:=t:(>S<:[>=43h3@T8B&oGb_,'S8?i/5QK %%ET2MJ571q-ZgEW56@HbR$'WU\O!e3=<h[b:0Pq>"BPQgY4]kic)is1Knn3oqRp#+0s6GeK6X+bX,qEM2&a<.>;LtX;MMkb076O5 %C+7b<KT6<[BUU?b*i[#Tb;Ed?0sINjJsAUOOu:pm(o*ap[k.o`G$5eXn$Ep95@'\MerbGmdY*n>YT[kXf-]4tODPnrFB1SBp:RE- %fMqPMUK(pC*ud)cMP'-qDT#M:[)C8b3Q&nk2J>lceP)[9H>+;O9PjU8Z5*sdg>Y3B3i]7#\<ptQ/S\Kob?7uso]7mWe:aOqn-GF< %G$*LRCGSEO\3b&3Z'HDa"*2CORFSE>[$5K!2>*>;BNoS;K.,>#mr@Kb4I*$'-s<qD8jYE%0^tc7.jc@?nnB6hEB3#?drj6TMYu'r %]O!WdbM(au<@lUR0N/H5AYqgu3_WMa1(fe3.7_r`#dK*n\MHr?e#3H-VX6oijd!0>:&,?7p8jZ6-cj4J-Z"'QUe:gCJt=F)RDLX! %[;ChId(h&)6GpUe[c+R/kX8-bl,jFtVX7%c>(tNWor7f9Z5/J.SWu?QANVn/9k,%2&!&DX`lQT:@JEeP4e[d<@]XE:i.,1<dEL?^ %1eR'6>7m7%7BF[\?Z_T[C&<=h264lTW<o+"1nqaVPAgYR6u]"L#CsfPPKT83V6&XtKQ@gf`nh3<3QpSb:"AfHV?plRdkk&tVBOJF %G)#5@o$XrdO>B'=&hP1u=i7TaDeI.MrJd=0cP[`pIqZ2f9>O;[9spNe]!ea>hD/f"rJ\nPd!S(:gqt@b4r*/DPf?CDC0<V2ZOuN1 %k?1(q;c0Xs:K?']qYN9UQuRP->F4Ein.%PR(_FA</_+[=//Q(P=Xk&lR>J6d"X]La_:?EA^Rbp!e&,n^%R0;:4rk"l#)jUa.^e2p %IbaC&erW&#7-9+sT4B#Z%r5PI5^F_n!TkGamaal!2fW)PEB8>6mGrT5m@/?U:\^$t7"cn<UP[=j]5D9aC]K8WGuSZ+#&(nM9<LbP %D@BB#rShqg!Zr?Zd%E.Pd7b`7:W-V3E@GOlkKuLoo$*-fZGSS-J'OH8^Gm7YkD.O9b+@8F1Y:Z,&*94X`?_lH1[K5gGh=,]S3o$( %b\1;#h),eKRA)5*D@INk(_-"Y#!D'!b^>;GI#mHb)7-9^bYe.@5JT]!1.;*q',CrVD"_r:ARHF@R0>Do&V6?krfe)rS0'Q[G:%d$ %Z9ZV:^;`j2_(P1G]'X0WqiFg'W#=>bJMrZFZ&g;UeANDV_JFY?h46OE1Q0Z#Scos7??LQp)<ck41da"*C`-d+8*dM;(jXEsRlQ:# %3Kh]kZSSY+AfVDfs0OM"SdH<?_hZ^r7=31BHd8(M>+JGkVk)-tEF$D8fC&+Iao62Ufu8j3md-(nEA\YP6'hZKYb#1-b<,Fod$ACd %3cglFeb3?GqA`47BE!Q&3Y6X4``\r:m>*epcd$`TYDZhdAWA$]d@PP[,P**pq=UPm`c-?R&os$1H:5Zn>*sR0m:0]Zd':?CaE_U, %pA5FBU@A50<jj*Tfm@9-K_Kr4HT,BIRrElDmqhF4$2<J5qdIA?0]E#`hb1L%O5,d0mY;,C_iah9cM]TYI[Y4?::MAng`QDTS,<)9 %qtl'DH,BMBiVqKe9=_eZ\\CqMT-rF?8+,hemc-ld8&_gY1s\kgb]M1`@f`Ff@A;c@;4gR?_F2@sf;c>7;/pTMc=UWrU>h2h]M-;T %M2q0@I5WTs'.)f_d;iZijl/\'c-!mkbIr-#ia`&KA,sJW!5`7H`r9;FjkN8Kq2%_5Q+;aC)[@K["s?VE+AN+`:'P+mn&:/:9GCd& %.(*2\QmfPt%_t7GJ:00QGqoAF1&tg6#@/-X\h6bMg8ljLFPTL!Br=)@Fb3qtfHs%4U?hAcF^:U&\e\n_PpU'fU?dhq]M-qrM69Jb %]f%C!'3uCrd<0`/lWP4_K`>pF!+UL3eoc84lWTri1&t`<!+UM^eTGl+ldA2)c-#$6f8Tlo-3K>V!tZg^&17Q6p@i$%QRBAI"e$e@ %O=(,ap@h`r(FQdH:%[/@/5C<C2ulB'jdE:;oZ^&7c'6T-UOam%Kc:IrRPYqqZrs*1rd*"f6&H=HE<[l9+GC,tYt'GR:E]$\89kCg %:EYW[<l$4VIB2admC#U7*!"@!,S"su\maZE_l0e>,j!uAGK'7<8^YJlD2Jn[RDhn73Am;(B9<acLsEZa=j3P[e&:S=;>#DN<:^^P %R>X"FYi?>G4@_:-78R:A,Hdm03Ic-8,!5L"A7,gp]aijQEn#t^36LBZkd`ZP/$T"+,-Yr/Z-Tt2Z`)P.DUZbpQXMtq-!I!jc<m#/ %R:^H!<c#MZgEL6I-F_=3(ULWqTuVfHIMp.85bOCtHkb%$d<"9#<cZYr6uq<UEh>/OB>K[t0A]=hQXMs:R]YX7BDp+"#;aE.Q/"%1 %[`DUA8a^Z>iloe6oQZJQ0>i$Vmomh5fY'R).=9?Gm*#Ue2#/ocD:&eKFGj-Q.t#XUlAUEM6[3\o>5@Q)M_g$!rnu!@ktHgb6b!D, %MfE%t>O;&$atjRnd-&eqGSKCTdpj5/8WPVCjqq37,N/GR-uOLZ0s:(<oUl6D-Qq1IL-#J,F!0]Q,Y`g-$'9B7P3,$0_`)Q:45S3V %2.>/.#TVSPR#Hne%`+s^9nqc7#e$32N1UNqXNXC.k-71RRuE?!N5Ma@9a9e.Gbgf<O.Qj"XN\r/k5`YVS<EtGa3g7g`Q8*C(3YV" %!D8QlR$GY4!'M*'MN\'5PJNWO`Q8*C)FTFg!D8QlR$GYD!$+>X`+f>`7Ba,("e2HSZ8T'Dp34l#%3.Tbj(<hs"Obr_6,>F?dL9$D %6&H=H@uj,3f.q94Ec9+7)?7]?%G5If>ganD-2e75E*`CeO)eNX5(1N8..@'!mP5XVHt^[0?X(KR=C%?&rHcm6b5+I2Q8#M??a<tQ %dU"[B+n5D'LMbB1rW/P`dP0otU"j%r".N5?eing]IHXSnEP"UOPJ\%?jiJYS!%Q@ap&!!jD8WN:FTDU#e%:#eNncI!8f^<EjVB!, %_mn14)=%^0p9`VB(_8u53E21m9BMmQm*fou7&1js*$k%`O8e"F9&PZdYti+c?*68KD\7cD?i#ImbaTAnXctHIV38-+!;bR_-r0R5 %rV:IL2F8O)'0//CXGjQjE`RLN_$c\#/)<]U/CYlu=0U7&55)[$aB/\nC(BcJ;',%^=E\5fOG=$Y,)O<,B7<<"-[:^>gG,of)eSOl %8Zc#WbkNsE.<qhRg%S5S&!bqH>N4*U5Lp^7SIN@Bph@u"\dnju6r@U-Td=h^ApE(CMIbsJ#2A4YMG8r:k`0fPIG37!l<";Liqeo/ %O&ZBXHW"1k7KrNiW>r-jW'rVgBt[blUOf=*)<r&:.W,$iPK9Fif]ab%oVWsaX>:t[@JgN.33N-3?"c^tH>(G06RHuU.Kg0"HhJJF %A#4dEEiKs$/N:^B"l^2J2V'lr4..cU@&U%=*m&g\%(1,)39fEaX+g4jo#5FM[\dg+HY^&l=b2?nAt>;&@g+_[XM$3j/W?s[M!%=P %BXLh$oTD3p@a`s]2@%GI&I:m9qqm>-5kB))kN:H"7gp#E^GJ*_jThk64FDjN15\bH6H5:S78L:/7E`hiaM\WE#c][aI/=6S,nZT@ %"Yit1$fibY*U=\A*6<B$TlL].dpq/&o"\c$Fpq!2%^VQG!o_4arqBkLW*i>JOKji"*fl/%s8.W0N9ROM9TERa@^9PofQBM>+kbF3 %2(>mf)rf04h7'+o>E$T`"YGkDUX_&!:oiU_=Wa]'BTAn$c8IZgU1F6[fg-M"PAknt3)P`SA!tt'S(/\\:\`?9DWZLBfYgr1C)E>Y %UqH_U^hpsT<u<0c><bScC/'h"6`H?EHJApk8mPetfE03bR;FY/C$i4ZnFXI;&=gt#='-R:c=*f@8tWM0_aUCt[0k+Z0c6d2m!ENE %=BVmG;"!H]`1`4.ZT`2jD;gFr7U/H0?H>kDg$5rrQo+2LPWi*6S&o+nAulm9=<G38Ci^h=X<Rq.orrQ:pV._&S1spWk06:@m='i8 %DK?-W15&"/VNo9OVcg$9]bgn&67op"KjneqW6J"sZ&Y5*:Po$PkCD\[at$2VUH"h[3uB\iD&aL1ZXF9\N&+ralbaublF)Xo'])bd %5Lp]lSW1E8m%&3>AZ?^4op29uk\G3AqU>OaK#tGCcK`)3H)srG%i)aF20,Xj(<mLK@&u,X3g0(qUM$;Mc";(Z7'qg5_<P`i_E-2_ %2QOgt9Xuq.M<1m$QFVil1=Tthl,TTLX>AcpiVY2WT[teUUO9I-:^Ls<M,Vp;=[=X)@jUHZ3&S$@`]@tToW]PYlPu"W9UI`fcq_<i %4#Qn30A7aU\s4/6@GMtZ#W#CgXAc?<b/]cgX<VMaorrQ:pV.14(#30,MR9I39gjKq((`dSQ3QZ%[c!-f$9jH3F0I%43fRkEf\h^2 %H;#h(Y>]PHjdnA;=ret-RJ*qXB*rpcA&pK8Y<hsm2;4/B@fnR=l*)`6^J_C4q"CFIo?uk[_9%pAR4+r[>,oS7"eg*tF3laRST\B2 %Yot%O%&aps)ZH!pJu[YCP4TRGm!`B9WE$3?B`H&@fe3lWIXcZSe*n+Loj=qiB4Fgln-QuqD3&P?5K9Fqn9f&ArJZ0o-Y;Ja2m?X+ %*9n9UC95=c?L8`tA8GVcJc5.9lh@=AY2:`fk[1qBpZ+lYKI]i,pXhD"Et\KhfiNW:.-r6YD)-8fhHt_GAG#cJI"V#Jqr_=jmJ*L8 %]RVY2DXYo\ZCd9E^Y#FG/#!,YW1)D"ibS6G?P@m(Qa(F,l)"9dYMSkr;J][VRR^5E0CEK>MOl]cs!$3dYAiu<U97_o]k2cc25.Bh %-#:?3F9D8[gGii*ge50K."_%:r_)AP0==IKRTRTJ)J_+2YM$")Gp'1ol<<C)hMlsVp=;7)gc9b-I%PYlqEH4pJ$JsV=2Zauj+t'^ %^Xqh3rBIs.gQ$-mEZOiWr=AeEJ1.p3H,&!-jH^j'P\!,b#n_n8&5?#rKfUt;&q^*h1EsgUR8p;2+6rXR+<%<pH`il!o,<r-,Q870 %epZ"q#VGrT0u3f*0)pFNFn^q7TASqkO#2FF(Fo<W`3B4@=3c;N4a%@\*tlWj6em"><Hc.V%g^bbThbE5e1L]])4KIJh2cILhm]Wc %=:qDp`/XGBWVJoU8H8W`bPO3/hu8Cab5T`n_gf_Is(8(pl`9gTXNVbs(3TN3s7Th!Vr.HR^\cdCrVbXQmbe'BF,3!<kl-@0roO/i %s0CWkrp9+QiBR>I[\M=sQWaI=TDXqfrTWq2^\KNIrPMDQnr(6-0(RelTBBDNQXRAblH^S3Y8d9.S@b4U?'"XFUNB[^h.MMUI;ImJ %@^Ya<T.IE\nO+(Jb)4;=Z3.#u+0C6-eB6*#s"sYt8kn,'BB&$[a=]@PHP>OS=j7sR^]-[Rg;9%La)#c_>^"/o:]((c^oL]fM\kbd %nT1`:J=g%GKRobVBAqh&YmZ60gr*QK_"XI;C&G;%rO]iEkC<BphuE(nqV>NWh1,Cs5<Y`j@W^(7Nq"LSrn7>ApWj3ApYYtlTDdH8 %rqbqF]`7<to_3iHO8d81s7(C(It%Cg?Beg>Ep&('>>6&h;[d?N+FZcmZH\HRV*]>79h?5[<e=dC`,.@oHTi\#a[VnZD>:OrcgRJ4 %IsJCbZO1-eD"L[+s+k/`Ip%CSUj@HROIdN&ZD2?a-I*PNY'Y<tdmt;ZB*nTu##:N.BEQTSB65QGD"V9Cri#EPT$mtG0>%/rigDdH %D9R\gSiq-pk;/U[`O:3/rVG!$&?FDpGd^],=0k(pk)Sd3:ThCAanB&U26cdj)OuI9f_LgeYg65/ZMjFgs*ouDcTDACj1s6^'tqmB %cOGN?qp`D^%E#3l[r[m1I.,9js*t#^e^.EISsSWDU(*5Tbot>G2b[($^5uA*PpV0d=^cLfekms[mCCE,n`lV=OiH%\?WQmL_VR.R %lmTK^Z\3s$Bn)`I-+</".'[ds#P)S/kPP$cW*?B9*p&S!nVChX0tdBdKQBS_DCq@)c8/Ol9_b\Pbg2+$io7L)3a3tYeLQ)U*V9u] %g0<1W*PJW>^iOek127B2g)a<]Gn(`$lR6c0cFpp$!5srr>6o5EQuMqJBu3bO`i,8r`Wj`cF4/$mG4u34/$/%h>.'.0#@2NsRe9'S %0'.c>H:E$7%`$+BoLE,WVHBqArP(*?qRP?6W@XRak2-\PD:K/s7iSc\pQtkmJ*_^%Ze\=+&C*-sDR8NgI]i6rD75GW0ui`d#J#&c %g[`.d26@k8BC@GY+4G"ZY`6SXG[<9q!Iu<q@>qA`edi+++Rs5k=]5bDS9N<Wk</:FX\9"mP;BfC>WI.)4DB,jGDtO3$M:Eb<XYK> %Pp_i4\6k9j+*B2a)9+X(dHhF2R5)FYJVUJ[8`<S1IdhK.<t'GZ\aim.8%*&rL1eNj]'T\`%CB@hY+%R&?/:C5imr1[Bh:`&?rrc+ %mf&3<>M27nj4fo1n4,U`kAqss[-d$ASE2hkOUuHG/9?h-'anLIiV$AmcX"hMhA_LG7pPr,ii+L]4PN?QnBM'n(gNu@p!Wo$I='XP %(!gbTOCqg?q7/A'itbAn-Y[JH;YO[>9g1XNa0TLB$K:C^hjWoUM?]Y.T]a:,j4&C.O2ea+Z8<[T]s:iG.jW&=ijJIG>hm3\#e*R& %ZJmWb`/bhT0kc8(W3`/+Fe9^K/R2N)lp2[TKnd!nmi$RsL3@,qJ3L+2FHit)[:*\0T'U3`RjZ9:+8,<m>O"?)SuKQ4]alsh4PCsK %AarEc's%W5@KXr!(Xk7E4]XW_)"Cq6=)*?\CuOB"'NP^pRI<fDK-#+D<\Y&KhmMXFAbb:SOL,GjilduDh93$0le)-cr;G]&_1s)l %lT%.<'@(6fBM%PYIHhFAkFJ(cKXLHo"u%J^:7uZdrJCf&b5A,qIP-D?@n>m^E+!$8GN5c$#9NCTm(jZii7Va)o%>)\`$='LB<&rI %r'rkB\_;bA;jDR])8`]BV&?<7>ksH+&f]aHhEj#1Nnl/N]\)"9LnEFJk/bg^UK%qafXbhrkV!LYEX$r=TRfVG1u.G53SoH19nffG %*j9jn#EO*t,-u\aF/?^+F6dD`UA4EuG]q]_gDMnM..;"\5G["T34Mk9GH[/bN-dG^,XY)au@Ad;<bW"S!9sqsYALFF1cR^s_c*>;s %](p;b]D.QfoqrlpqIQ-\I/b"2rUR"<3!()QkB*]nk]<0ZeuqS2Ga+f)\`-8AgFDR>2*'BO#!lI0L9'7Q*Va*T^7<iB7IZcSk0r>d %bFa6n&AMJU5?Qc<]7"*@dC+<aU#f#9\Yh6>PKngN9L;GJ1JK=$ZhYRF@@bs3eBJ*42<'X2cRebniNimLC1uE_[30o41*>9EHqfK. %HT^J;S3,PS=n,cBc<kL_Dd"O;[/T?_4.\ZL*!]Ns/S8ETM^pZ0-?nGsbX^,aTh<o"U'Z#X5]bnZ7_$gh>27/;D>GA-]Y*=l042/B %W;C'65-f5koKdioC%8G;HuINuEP1$8M(mr+rF*sS0ERl4f#I17>N];oZbga]A@(j`==F_[',hd5iD&ujV18Aem-*e.;VWnBqVqt+ %3%@G.M#*dM^:MPsoS[Ts*5Cl=DgLN>?<nX`1Da-<,BPl=GM[p"2/Mao44Mj,U6YKF@'sqt<2YdDX-jl4=nL.21p#e=#4KUqpSEg. %6(4n2VgimQEO48e+RW&<D6LB%CnDkaNSA*$[G\no'l.$M98`&nD8'IBdH:rBVe*N@4?&t:[hQR+8)1$QQkDD5f/"fJ@"n.H#bSBB %"Bo`%)o.MZgTJBs=3HP&0hOg.AN+ig>jXQgoR\.e-E.=+nfu4:S"e</,DdfBRR]q`C1+52*H*gE;pAn%@hQ'b\m2;MR&(t*@qd8> %;laMXD5u$g`iO:CKH9`,(^93WKSih_&dA##RuO;fA*VO(na(Q!hV=hE:7#T`L6>Et#e"%[$OXA4%@5OCN!=BjfnU:j,XMU%OIArT %(K^qn6O5^;WM3ZS_Es'Be].je9B+'.rhV2(.m67]+f:]<%HJAYHu-;\NR#fRRlE=Q2MWX<*loC0VWY'=HIGnsL*j:^jk$,Ro^%WB %rBUt.m-U.sp!jmA*Qo%8YplS8h[6++TCm"73Y/oZiT*V<'p8t=do0:`)]+5r0PQ0.:nQ+9<I,`cp`rmJ3m`L"7[-&ONlI^IqaeDH %#CC>Fi9kK)/.FG?W7tNBca#<ZLaXh#dTC5alLlGT\2TW9+a!D!"1u[Yj8.N/C7o\f>RG(+2g_FLm-\2-CsI9*Z7X?f*1Q]X_DE1c %@\l"men8On!mfFcV1ra%jmGiL\Fql$>FmVaLQB]m[JLBa$j/H1)s9Xek<'2E=*rGLN">gH;>JC"R^^;^3chsLp0n<V%^nu277f8A %)o@S=Yqttm5R7/DY3ET>DF8>)A&TnJ_)`XlMfuCAN&7o&A&[sN+Y6cBbg7O2knAOEisa8+7s+W8r9gaQ`4#]n+n'@F%h<p[:dLtB %MuGg\2<`^@E?g//mA"cL+mb'$G5kI7?R!XPdOtRI>C(DY'L(OhOd:3IbGnBB;m5W[I>%%e$;G^=h-e)^1PEdt\nn-b[ThPIi5-0_ %gumAI-\Th9!PS0RR>MpP=GD_G2DcS!PXi5RAZKs..Qia+`Q!^_*/iq.NhMr9*P'g&,*(lmUomPMGE(46\3m$JQ1h\J@rDjYH="'^ %70ASheC<ohr&WFNfSep'TsEPM*Bit6XPrXPpuq(_IQ[q%7V@[ImRM>hI[%H`K`T]?H&bqaU1hk.W;-<HAW5&V^tPP6Esu)f*V2@. %D-RBqSd+>U&@[Tg8)cq4[aqo@(RTK<m2sQ&NoTr_RL15hO7Y0f0KjlS"Mc79l4da7G!G!5%W.@#*)?&=hQ3+'&UiC__LV/n)b,mF %qpZh+-X3W'*!1:cpBDe*-kgL$14-GTm>2]Da;0?h5cb<\)auB#:QIQ0iUO\8k^n*Ea)MB![QO^Q);TQBC]GPdX0oo=0V:Goe&n)c %bBIp'g6KsOh"]ShrR?Pd6%Ch?-1mpsY_IW,HlPB%!iR8IAR_RTp2]+C'JB12>eDlTbKZhAHs!BV@YV!#m[mT&,ua#2=pXHJC6p*2 %(=87(^()[[Z*YFpOKEZp=ASj&;[!rq6Rtlj3&ZepJRW@`HpNZcJ$m#$mU(^2-S@&.'@3As\%0]!Gkm=>q=V'qX%2r1,6%iW&?K)7 %OpguZM//'&lcu3t[Ec"PC"`"3R]rrDC!L-m5JpP\KCk4Q*g`(IQNI#>J39,Wqd@^EE*5$(1YiN4#_uXpc/qX@(u0CtcnQF.C_%9N %&c-p.\F[dV^k6%bXR3/LLfZj,m"9YP@BBodO;Rlg-Th9P*kQ'sC[FFXl=bBp_&fP._RD\+<(SbTTD^M7[[AMTcoAV/V?c_TB(Tb9 %<&&6%^_Nj</"CNi^r\9L#7@*!=*$T-*]ub8/FF'&56hu6AglF'7Xa\)(Y"8Nbjc"Q6OX^UCi],_E-Q\'&@[=\)t@RnWB#?@YO1n7 %eQ`b4[d433&5m??4YahHG/:R_fhE:mdkA`F]]['7pB0VRi]8\HL$nL+/BkS"mH29/F+?B#YqMVO*9!4p_[#qUl[<%\CskR)/KJIV %`7-_+kT8]X7`fMsn\P4kQkY=iD8JKW9*67tJ<!V;+2n\P_AVAsX#oe\O#TX3q[I#7%[f;Y7n/Rb:5ogf'!mnA-2&@oIrnsY)`R1p %nO5jjAXWl,TJSQqGXC)qC4b*iG>)t=&t631]SX.NSe]qr/([Z%Kj8<j>tf2E7G4T@!!RIeX?9i'YXe"F$WX&D4k`,:"KKE0_*-g] %&#+diL:dgC)e`q$23:;D-b(hhmHa"^Mg;Y6l3WeE2Z*<@ig-:P\9%(4im"A5^[`^,L$#uGZJG!4KkWf-1I^<t][%gpEHROshUr]u %o@@-uqqG2sSg3JB_`T'b,O*m14IUKWfi.114"f$]0@-43TC&N>'HGeeb#Qf?8*6QS^_=BSlWhS\9Ur56qnE*]'r1_Dc@(VmlUKV9 %Ac^NHpIW3s^/DI1?XLj;VM9im]AH!F4DJg;52sjTTlTYIRuOJhr:-=*79r.p=T]/G&&0pofHWfNb?W84rnsS<\'fk`HAp-:/Srjh %=@G=Xo?+rO46uVs:aaFO=YW9>!u:Z%&#WM8!W.7tdbl_Ni7b[O^iM-4#;rrl`<5sKX2P.l0nOTBE<'Ar5@Pb7i`tUH4:sZZYqG![ %mkMWE6*D:birOe),>tfb.07*(KJQ^'<C8a`5o7cI=P9T17$l[)&[jRd=c4>j53!9":I?4T>IR\!L562AP's:,iKK)TO,/%6'Mdt3 %<`1pVXjkU'rs*",Qa=NH)2]\UX#Gh><oK-(dG^+AE<26])8Vk'?#HEV@*adYTHf+hI(L(l'B35[i;!"ek\Jbc4OC2OX$=1\_iJRF %XOK-E=5kiO>YMN*bKe$E)FSO]&RiS9ZfE(o$&`Q#H$10D<r7KFeX^ZiG<d'pbClMr)#MDPUZ4eig`@VYWR!i20EsYh2DKNA.j-?/ %Joa(YI5KjDQjrr@N9+q3OG4eAf/&)"d9<SS6I03aVkFQ,NdKt%qEBsaj\VZn@2U")BSI1W"qkdd"olBa*rCX_[29;6SeqLeiR.Z- %F`ub=jk7l)5DI/RJS`n'4J%2#+hht..rC$`Y\k.s1XM*_1i)SUg83[c$6*r_PD^<!G_C>rp-n):=i?gbVDe)<?5C8ucfbqKZ#NQZ %osR;eRMg?:caOp7MKhAXm[aJqjp*fW.mF!,(>9Y9FgaKnOVpI(8f+R<[I?Fk!N*jA9b$)kc+2aNERuERW"VKe"?iKoGRJX\.(Wt3 %'Eh6:k.=lp%N1=m)CfK,DY(T55$j[SZ[01omLElUVg("H2bW+cH%7L_d`19A(>7m91*qkE\Fd);^-_QL@G[46/!)$[4lAb9_O2J& %2h7*70l@<8ge[A.;C8"FOQiYjZVK!/"`Y[)C:%tV1UDY_IsWrRB7&ZT(9Cd,mC+`5i95V11RA0p5hut=2@jS7l@-\?-RAb[6F[l^ %EmQu\J6E[9>$H=4VU'kAIs]_eM#R00`!30o,XXuh<1q*;0dSe!?9[=q)gp3(A'%a.<[M=Eh0]DhRuV+8JLkIAZFDSD#/8MY+eAgk %?kYHREm]Rq1h7^*`FZJgC@;Gf^I&ERV!4L`YJ0O@>UJUWLh1&Z]Y\>+Y.U*%q781cOf>-*+%s.8;a#l<qhTW8>j<E=2\YoN1*&J& %rFY&K#VU]KW4W^XTSd_6'^bs3nX/eoFX;>Om;B^H/1*UNX@(NeA%Q;Xe49fR+WXm$O5`F3A/8aF#a3V!kE0,+go#&3)S.=.RJu_Z %jF5j.2MI^Vb^e#AH,'hmUGuhC:G.-Ggd.onR:O1..ui,33RR(BEs7pU5b0B[#(qsGVj@4DiW;$?,bgk?S&e)M=_hL6mg(SbB[P1j %_2uPoGN"pU>-lhkJ2cqX>j5N>lI[_Sc'`^^8b^9bd19d&X(?G>'0:9DdA_dE)`KCq13jWj*,FiBgp@ue/dPFe#LSc<Jnglq)0iTu %JsX$cO?;eoIAVJnC#@kR2!%-;f6?(5`M:4sl`%!_3g,.Ril<As4;.KF`92:2?4F[\o<EjB4g;9PTDjJP@cmNA#Ar*brsj%@$&GYe %X3-*@%;I>30/\A]pAJ,=Bn[V)<OJeIiJ@8[)1-GR'a\imp#,VXD/s<-Nh!.TOVQWN;,M>*+an]d&,tpe!1lLDKNm7G*^Fg;gL8S_ %Z)Y#90FXGI]/6HN^'!WBbd1;uDl<n:BD\M$1k:X:KVe2WG6^8q$umOS`o`rKZUcbBW!?W4]<7N`X"Qa#J3>qls7Bua5V.Wi<hslG %*=Ul+*,psAd6/#]YM%-R-BIsoE4>m0LaJd6[gtce_4c:C*j(1B^`?G3\1JB,0.dlPgoJ&^<HlWX.sRfEQK5?GG2M:\:`9tSl`B^2 %[17X>'4Vr^U31f-b`i/#kYi":Nmt9Tn-Qo*4PbV>B$(\OZPpOqmSt_Q<E?;k8=G;lAY::XpS=;43WO80]79;!0_+@`(bhcW#g]$1 %Gen8#g;OMsM%:`-hh2S+?GHg8"&bj\":=F4ibb(7l0)/)#+t!4g6i$'.[[-69#mu`752n(0""@2l;u-CXWmNA%!\3XQ0Rj"G%EYf %Bcmf8=,'$QiVE0g1cF9b%i7"-joduoaLAjY!so&X-.U5t&G_k2a5LM/e"'H\RcT&r`58Np=6Ag&EDlj3/.,ZoqXU/b1H^0akNEhs %e+Sj2j`u[2=+UUmQhpEq]^)eBo\7F*nC"IH*.Rrdo(Q=*UtbctY-9WlegU(M/bW*K40[p0qd#"Wct7sO9Z1a6Lo?(]g]_\069/A! %!&_8[jY5OtgdbUN7a"N_jC6,X?e<b?!m+^1gj*b'0.^B'1LI]YV,1ThE$N"]gr!^`d>Cb;8eKW"LY)"<FqJ*=;dO<^!tV8S:*I\P %SB)[*Be,Ws@7VbCR5T@V\!V+gY32,DpTIp/rPf+W!4P4FkW?bKn,rHdF,>h)A[<]i&K@gV0F/9I!1[!l.PgM=+Ttj:[0(&6#gUMB %^#G:7nhMrnXU?!I;h@nE4Or54'fW?E]_'Hl_d."DUj?Y)$@aaR?hOjpBpg!<iZJ*<H)FchD!3g=E97!HA7rcqkStf0BE0&*$AP%S %o.)^=hlf3<Y-,1FZ)er8^olYA2t;]^TkrhbZu?%5(e:]FSAMo6[9\_[I;YB8&`t$icW((3"loqFp'*7Sbup:=p,'&%[c,KkJpM:# %J_WZV\ue?+GMXKtF)ojY,9[IcP6h99XXS-G`71amf-K"PKm5X"-(+0hURsT_SR*!7SO%5c%P\(_PIr7q`3Pb@8-r_k3s`U-JJ'?q %N%iQ3f<9O"5Cf_@:m1cJ3<;J^\qQing^b?$agjHcWs6=.GCGS971MQhUqjF(LbF/RrQG'mFU$)s$&ckCI]!n?e!1]7%Nr"!>@lIV %`0;HikRa0<#Lf4,mP:II<-*`HpX0)f>[seCH-FM5jTTp7P(N:n_:%j);5Zn!&D:ZedX_6%Io]#m4:_@rVO,9pnO3s`f06T9Q2iCL %L#FR!<b8?8eAs'I!m]rRN,b$Y*Fof/2PoI&c!J1+oB!I#NKTN_P(PpYS`66.KE-eA#q$lt*^pAY2SKK13[l"0&`:PPdi0,4F+Z"( %[0I\Z/9n"RN>5d2LdnI2?)ID\00u)S!b/,dJd[Q&/UHBBmN`F.gU7J>B0aVDS8>1Xe.Z1\!*nPe(MM6R<nh5]Soj2%_R*gnNQ-kH %F*R:^.oBN&2o,NdM)nk9?0pQFr@WknkIn`r4;^t@>iRPFM>eiPlt\#OJ/dd<*'$qg26[9\(gl_KqG75?\0VJ<A0t\Q38XM)E`pCB %$qj"Nls#&%[-:$j=p,UlH3LCs<:P(-OC6W\aae:lhBM%G3n@-Jp&H'k73pQ>""E[-0X9F74DYNR&)5@*ic*>!B*P(Mk.BAd*kN)s %hgq0L]/jAuHUGi&=nCf_Wg/VAA]H.dK3IKWnmdg6$DSO51sRZ8+JY%AXp>`(6<!a[p$451+Yb>*'L_C(Dn;Thj1eG"haIt`,)#St %<I/FfRm#ZB#:\7%b(#bfh-tgl+`WDMUCc#H.f@pO<>1"q.@8Ipm9O0^I:-]AOInIEfXW?!SY&5EP!;"^l_?sp2u93Mlrf=U':PcN %Wp^S(9'%o-6S@0cUDdpb.G_F(BkhY(6TGT?T*\Gm`YtoLM]UZ+7R,Y(5i,s,EDV<g(mM3fq;pekZbR87b3%HFYGW^QPog56eiUj? %QP9<p`>9a^qfX7_"eKjGLCaQDo&88!,%1BG1A7I6DHYm.GlLtF7WDhX9oQ/*'@q^Ohh$?mFMXblLOT8#]:lfQ3m8QR#V4KEA3hbA %>oBr."S37Y&].%<ipVTeZtDZk;AA,s7[Kd'#dh6fi*&>ep5G;5J0OCQJB+NFiP'<[5T!WRmQ\u>#k;QRW<C]/5Z[3m^jb+H0m/?P %+X`L`5d@+M6\ZF?B]Wc,/8[cg.c\ljKOTti`<A]_CI.[OqF#PSE[DZ^#5tr>F:mlD,?@V[+Vc-jUIcFKZ5]R@&T\W7Lj.oAXC04C %-^>WsWO%4WAl9_X+/dsNWH77\9Er5t=j]#t,@$1b)K,`%HXgH_A1[C%j*,mfBbrh%1S>Ep>0o###fdY8-aa.#K1laj`0]l=+s'(V %+DlPmML[(pr;</3N-nI=.fb%g,QM8GLue$\k7WiuT(Zbf:?-_`Da0\!L]Q@<$NHBT87^LqOqk5[1-<UU=(I>5lW=srODPueYNtDa %(>,PX_$*kn#42]iA:\lnctuCbX#QQFqLrmY8`:BSc@-sjqf76WcU:=cW>jWoq4sH)APS^kH+4"4(`QAJg>m>N.iKfjDk;q>;Cmm8 %U4K/:erMs:P+i,C=l2oc/HNsT%e-)8(:G&G"N&FD@iV"+s77^Pghui)Tk"k9'$fV!Wt^jFR^n%aGj-e5OJXS&),Pm.MW+,p_MT6d %-8H(.YbJ,=d5Zb(krTg9[=KTW)G"TgW\EBAP^7A6+$7q+I;0mG(X)br]!WB1H2RfISL&nrKl>liiY__*BD>3^Eh_H("m"c(%]q%, %iX.pQKSek"ENH?,po[JL[PG[2_,3^eio592KKYHLNr2)?1#Qujr&s>QE$#_hPhJQn8$[p"LdRdWIV/cTF)S>$fZV,ZiD_ud8cA8b %kL3>E0t^pa`"UQg+RZ-@'[>Oa0=o'q+a*b9AlAdRhg\)\?hT6FIKF6,Mc=CPM]@"[]h44cE(Rrc<JdX>^q^9t-?C234$rOkG6Y^H %(;^!o5\u9qK3KJmEC+Z\,&qP8TihrmqhDr/;hFN`RK0[P"h$fm>SFXf/?mZL3t\:?5k![K?50S5ZB[R%Fl6tAAM0P_2I4LN;7@D= %9[DpdY"9>)%Zi+"fi&SLlZh'%^1.F)2&FkZ3ARDP>B4`Z&5Z)II`)GJp@'R-J-uVjKC6UMI0OLc@EZdoRsYuShk,pI@AI);^a;fr %(gdIn@AT@J(`J"d;XBV))Z[!a^`>bWO+@SQb8MP0I]>iK.?]6,DTNH/@cF;:JJr"p8O/#Nc^CIJM7t2/g/=OY?'DW0/4F8S!opj? %Pu>98F/>8b71`3#PWaJd#ef6><qh;m4aLsN$J^qdoZ"3CFZMo?TRlg:n=-P#;N8?j!;bfroi.l/7*l,G+\iuSE+)A7M'lGs&_<p[ %i9R,n;-..-eji,r4Y)Su?QmY5@Ko62]>1M&&rHE-UiBOhB]D1/2BuM'`cV3=e?=ns-J$7.V?eU"p%tP4^B,ZNh'=Fg5=ctI()18f %^?-<#MLJPkjfGeJ^o.[,Yc:I>#<5C_Ukuc_L?]*[bmNf3W.T5!q(bk#X2kYga;IRlroen2fYM$,F!s`VaeH%Q9:DJRkIe#kE<!K\ %.,Z!]5AZtq]7o9!F&iQ!"//P&GF8t9i(VK"J*C&C0e=U0VWk;%Flclf)"B&>#i`!1*/@p,.1_K,f^ofZ<%LkBg[[V90AC$n5$>-+ %>RY80M=VT>:fnGU>'q.p?<(Roe/hAKBE3!P'B57TOgb:rg\au;mV[2+O?1?3EDS_WK'[OZ8Z;rL>iW8$"$712%SsTU"sR3_8ggTD %_"ntB9/b_,lBiQYjgAI0_LVh\DrBAiL%+9Wiip](#%n5*(RtpeaVhCo`HYmBj\CH<1Im!3?9L;[='qF^K(T2:<eI#!MFH01"i`c- %%+o<q$8:%Nl_#bJbsoI@(03LO._^EepM.K0Id=7eT*>em)UUMZ[naSOiiG?qH$AOB/bF8VTSdC(gP/C?#_>;En;dV8eMpeDl[4?; %JY++BN9p#TA]1+'ZB]kCkcJ'f"sm)h!dOpk\O5[9i!->V<ON,CX6175mo1V^>;=$AGVVu$jl)KG0iuR@ZL:JP2i-FtnIm@!7V,o? %3k];YSm$%kfq]:u%q'---5PI,40/jeJs8NHKTI'b-+n;8QdER$2(h5OG\/RUXGb@2O8a0\Pnguk4$2kXq_/FFNm<B@(r$b^UA4[p %+PsUQLj'd.k@Q"aRkVJq?618\#+3DC!EaT'LR@p9=CE@8Z(U-83dDSlXu8>5CH4,Dco[,1296$iY*Yc5F#!e@VH%CTZo^PWjN47I %Y#ksmrqr%JRa14d!R_WDX+M\a`X@BWpG.QtE-:O<IY/W^B86+_l#F3u4OJkNGhXME\?0+j\T#:^fk_2!Sa0Uf7T1Xh+kLoK/'":S %97nIQ`E+f=<ppK.C9JXiR#RfH=!^s4;E0hVLNF,X_?;S:=,]H=G_*8M%;]NLZd0'#Kul[dKW,ro40h<%9EAScLHE_S*`A8ohb2c/ %@(,t7oXRCbOAqAF5_sDo.Wr$6PUc@KEZh^!OW'-F"gEt>i\kVgBoh<-Y0Jd*RWZ*+as'a/fZ75FV$`;e"?nb2iPQY``;iVR"56lL %^rRXsH>VRMo+jK"<N:kcIMOTFPJDL,QW>W1K0<rPXGmeh6'D6cG#k,^oX%@>&=.9DIRaK1+.H*)N7/JOZ,\UR>1Z?G<o7cA^jW4< %h9oI*ZuJ?jCWu`Lf5YRM)?=[7_c^in9%/A)k1/2aO\&)Yej/79Ui\5ihlsV&kr$WFcA_u[/`.u[K%$*3LmZa/dMo"?aBBrK1DelB %Kl@>32Bd!6nq]FJTi;)6U>6g"A>-c`I)JNH8tnas%NfMA7c$epUH'l=7cSZ)DB'HZ=piTB_n<OFl;k(3@h7ab?34L<D\\r?bQ'r? %noKLZ0eo'eI#h$O^ebdg'-"Xernq:O=A&P-SqSIk'O*APdG]IZFA5mKTV<-sh`8sFiJ5\]W6shO(Xl9N8hif&qr]*i'Od8:Edr8l %bpMqD41V*e_]Wq/kj>XL:`;!u!_nJ=]mT?7\AOQc`^,8r&?j(=_F_Ei5)oq>),a/_JsgN=SDDss"U,F\-XN`^<OoU*AP/<n/"&KQ %8!V%kg$5S2QZ[.8UQ?@mm;)7Fg1aG@;(^TcIhAX@m7tJB=FmU_4C@Q^--38r>1W4uRoQ'sS^GZ/3<hjVbARFPmlG5@?oAHg*X8Ih %D+3MN>GjeM.W(sU]d:C6\;6MF3Ni4"cD=3*UV4>pgG7k]OG[BijD)(A1OUjRHXsu=)AA_N2F*X>Q"cGf(,GGPdAMMPn\/W<'uUA8 %!:D!ml$nWpV\F.?&?=Sf@b$Bji^XQ')H!Xbs!=7*dXmr=iHn,i^1["88f'"jhopXSZCksQ)7;Q<<>WntT$u<[Z%Uc_Za'^LgI17t %eREIV"_oT1Wk#L4Zdag-]KppM0M!TI+eXD#])^["*F<d;R$^msl@Ji#"gXN7(($Ir3'`./d4CZL5.fh*jiLCC1&5l2*cYpf^/JG' %#(t\YA^lAq2p-,QR[Dbq7?!qkJ,l[7pdDHJ2Ed:Hnp1h>1XL%4h`$S*MT!3@M&ht=Y$f)QnPX%[f<Dkb9\AJ*bt_RY%l,L\#C%ki %mIHl[<bOnK2*uNo!B1C:\6c?o^]nK5S&;8sfib70>cgmg.4;CECSjh*BX.*?(>PR$9W5\&K]mG=3:SP<r!oBD]1/j(c!Je47<Rhh %ICiGoTN83(,UQ,NQrU,)p!Wnhjn[gI)[gtn,3WcCi;hrOo(PL&=28)Fm$\`kTW;'+PJa&O#-(XF'RPV>aZgY20u!b"k$8A_K)cQ? %iLes,LReoi2]'@'LOdY#M&j2nW^lG$j_GH6;Z[+?INBZ8Q,<<SY%Dq]:_2*-Y:qi^U&T,Bs'jak7?8F&%BQ.pQmb<9`FDq0HY!7= %@\=?ZHW?u4!a[W3^JER]ImIYqCd@agJouhdrMn(hr!=cjjTtTK\dRV$<@ujF.N8*A84g`1>VJER\SQ*gO-ddJfAG+1'#"b>>cAnd %911sZF0S9(f5YC)]KfAJV;JMi];Y(Y>j]R$-fnql.!.GcqmV0=1n>;3U^--L>t5$$6Du,('Vh_<F)pE^JnuhPioaV`j_)Fc0ZZ"X %D$h/k=<Ol7H$%Z_8qaiW7l[!u\L(_^\;DFZm;VXG]>o%JT'DgnI@R?JF''&*,Yn.j;Ig[)VE@g/VJWO<h?OA>A@lPID3a>(N;G^, %_/hjnH)_K-MOAEY,'l]i\%,NNl!oJs!:;DM`@=aHNrm\<]g3o[+0ZXJ?Ir1Qb45E<;$d/$Wp5A,L^B3.mD;Eu!]SHGofA?DJ]K7C %<0A,o0H_.Y+Ljk\EEBMsSUq?c?5AGb=lSE[01p`rBC'!\4b\FR5n0JU@t<adPLFj9R=uLg:9&nY*VP9nL/8\\Gs2IdUDmgs#sjdg %M?s!&N+nZQlgd%4&O'J[-"PI$OW<]o%ac++U))4:;.R_'JXkfop#?=k[8j=:n?hKXT+)?V3Wo'p6BIX](0^`$M/9\(X`fuo-G%!C %ef"QF^`A4p$pqHd)$7cC`_$!?mRnquc<9NU1/RB%_OGBPJj-rn=:6j.ACrM\MaF`p-q#3]Aq$6g7Qrea`OZWSE]%5Sq'/IB!,^'K %!D_$O6FouXkrr)TY;+\f%A9@;."nD'FQRfYf%$lHX]9D4?T4/P"2pVi90]I45\CF/'e)>&m/6Uff^?l^SdnMeqDqR+FZ$B?]+joj %e7p?sFR7h[2!97t`=,r?;7_Weafmr2<;'ngH+XRNJY`cp&4[0"o$gLeW#`5S/X,Gco:[.ogXLcRCXtHgirEVLgD[X;cc%r.P,sdZ %5F!JL,,m&FViJVo8,7oXj>k_&>6o$9ChArh7T*1N/P1\6P"u.)_`?2?d)B]W@;Gs6F<ODJ7RrTUCQcbbOHdtEYqR=p"e*K^=n%?Z %?))*Jg;XYNClrnBPnF#Aomt!\Cl#@+aD,n!#`ZZ$T>o#Q.cl)L:[$d1B*6Xg5YT=oWNDkNc6HmmFm6@r!JYkm29\S^5k;t^7%X4f %S![d,I5_<?lc5jiVLSBP]N&7WNL>ei;/OC#];e6/M@imZ1D<\UWT!^Ig)mh@QLKFl?j>WIk8Y9*K]h%>R8ZYqB/1%\gZ)2%#ffkA %\-[@5K3;)sVD8>A@l[@-s"(5p01W^S2^PaE8BkI\g-nf(<,r/CrJX\X9R,iEFa4Sqc0?bNC`1]gF@OhU-`XZeD.sm=QXZn8?:b@u %f#5f+BOMptYCp`iI_K["3bF;k,^iKS6TBY0)LrpVl^(Rs&M)#Rp5&:d@g@o^BrM%.W]^I,Bbt[LOH-L<o6*>dR-$k+U#%9^]*U!K %c9k@p,=%\*\XaJMR.Zuuq\PjPLHEQSFl?PqQ&.Bt,S6auUe$16QZBBgo<GdR3o?YAYLhW=JKSpZ9D_2qY2D"JZrY(u0R-NfFG1WS %+s/!AFq6Nr%<WgQJgN>g0fH_H];BMTb&\B[6g=*+"8^)18Jop?(R0r'<J41oK[a6WI<t<e7Y-:4r]duqM'0!aRhJ,obT)R8WiBT/ %mbil[Z1\LFNAIb$Nh+>R?E[oE?uCtQQZ3,]$8qb5GSVbs+dK:R,3J.^''d8?9][HN8b^J0</^,tS/h7A1rs<C4(B`713>c`?j1P& %).rRd)*u>5k:PGgVKPQLmSQP',#HKPmj_f?,Dq.+_lBbhLd_=PNre6a/[>V="J#C+i7)4V1ZAl61(\DO0(^,RS=$.UnjjgY;tU/X %)Y;(kDY.D,OG<X,O-R'&7oL9kCI!1H3I5]UABIdV*&^&.[>NZ*6l9POf:81*CcZ*+&Mo7bjZr)$8]n6ZO"hdja_F5)3KQqaCUAHU %=e`hF+mtCi-CLH0`(O_PA<q12!'Q/TUVs02O;-J)jclaj,$_FP3jPS;l.Kq6LgeI2&MAX/ZrX6bM9=f=AplX=JP-k.b)1_1m8E(^ %RB)Md78BU/3F0Pg`"(kDB1t]+)?(sU<K6"'&ka<@>VtB-Ng?rF/?B>8\:eXg626<h;'J=B_Bb-eB^-2Kn+lRSA5uIF(un["4%<!H %F<h%a2]3+HBPjple@h7,BcYshH?)u=qQ$+03W04Q?q$+l(^GqLEc>k7E.lB.&pBVf8F4UAr\m*i5u`r<kYr;B.W.M@k@]Q\^r'd= %T0/#YmCY@uC%)<]GW091k$u9'<L-#jZY(tLCmIZhJ:*"]hYP.[P6L(@?4#!+Q$Q>^aNNR>^5n^+oB_Lpk+Tq_<B4+2^goSMf<?EO %-!14.pDZ928\H<X+/`\6fi]NSc6;D>f0"YJ2DZRe^baG/p?CFCCD)B#1,_?-q0-^sIiO(,glt00UFQE#1hoeq6icq`8N!Un@IG^a %0K`Pgk'Yo(4F$]&Wc#S4*:+!o)m.B-6cf@<=;e-@is1'mlP^b/PNZL&4a#6h`WI79U]IBjA5a0@gNaG/X\e4*247FO4Kc&8L]"J] %<ZN[KRj)O(HbVt(q)#4i,(7e1=I\$1MH17eVBp$]p7gbq7q'95`_?rKbsb8ETZ5*jT<m*N4f+REFG_QJa%&ZP\m.8C<oG"Zl+qMe %ceUWM$RcJo\<a)bB7B3s9ib&[bh>4\k1&\<MeTf+okH,2<QU+I'qT'N\PE5`ad\Y14"3pqn9t+5Xt4JI>jVNa';LP!9[T&7ih"6! %_n;:uUc):/"D7bBp^-9f/[%NqT9XFRMbp>&f4/P'Rr4j&Bk?f%h4tgX75Q._(r55ICp?D'0fg+a;@[uS&GAO^"6Pl8isPBt=^7R: %<Ja=G8^\Tf3PI>ua<li\9`[@<=kRB;X2%]hWmCUA2Q9UiAII0n"jYe<PX9tRY.@f:15r$`pjtk9[3A"`Fr2!"U/%O<=N\H5(Z7*M %@YL"X$j&5#+T?!c_e>X8bMeQ0-QM7O+9]3cbN9j!cn'#il*.c`Q]?(L-/)%L"j2Mc>[gIL\jmQ(Kg%@lT%5c/Nr"4BL_lHO=e'?; %]E=BWZ[d5-40T4dnVmAE5[JDdgl`40h[GaT8r,&C@.*\"b.+ZD[V]5^J>K3a>J!28>H[XoAsI[XFW_najDSqAm2H@!Rrh)[#I4S" %ZEg&L3Ci=#-MY-)#;L['!-ooUf=k7Q2C=`E5uZ6c[HTXY?t[SZh!0ljc:iVt<0WPGA/OFhpa"J#;YLU^$pRdLX8EE9PYSJpWuOh% %0(0/`(G(?pn1_p#e63USN\P!!#3+4?7uX,V^A0<l%NAJgA`0c\)Xbsm;"!oAdl:sqY!o8n3tfU_RW[!>\4/IgLOI['c5MJ5&BIE4 %eJNLg_<ErHF@HP#p*6Td8tPI/aN6m[cB&YB$%<@,I\Pl_!+3q.GIeM0LZ5Z$XCmXm*'"nHDR/P;=ZSm5iZTRq^\HfU^1Wi=PID"I %`R:-HAN,g'Feu'DFVT_9+E_Oq3Y@t4Ke3?qn!-"@^`\rg1(_`61ms@iWu='%^[DTZ\3\0ZLZ;A[]$umS$LLN8ee!CO4Ybg7[\8OI %-.]A"/na3VDjd(*It7fIdEsf3O"!e@0j%-aP8`l=hQU]Z]H:?.K]dNHU]pLO$5qV!N`nn@@L+U&]I6eO"o_t+UE<@,%`M^iSJleg %S%OIT"T?(J=F^SJ7h_d/H'RN=@KK2hB&:E-`8Lc;PD<feF-C:2F_0V0Ggi^:>amY3:eH("nmfO-B%U(nl'8h@)OO4XFOP4aT+,br %6alC!7QT"6.8Q]:bQCrAH_a3VG..@4B;1*PKth8+D'8(0LdK,J/3<9g4$2.Bhu[HsR&IJ@mhR"?&:Zt_*+D0pB2cV_9*),O!^[&D %lgj_>)L,$[-[Mp7qTpCD+PV0jRp;XJ;/3ZJ,WQGo?!]N<%U9ImK3&FY@61CPXE4*nn``I:MCCN2992LN2eNEn\R@9^V#;pdG-!,J %QK+bF..nmWl^^g.QCY#%c\gfLE1GS6n]3UrHE)t]#`?E@!QtE9ILnm+M936U&XWr^#qj#N";U&,/=_3N*@]g2\3a,kMZ<4CT:ik?2 %8/kR\%r9W=0t8!eI^rj&A2,?4:*qk(W/pcO).fe;OF&Yf(9'p4*<,GU9se:<hJO^EC!fC\TJ$l,+_0`:>dPH9s#K;,*TbZ(e&,O' %"55aXrs)2;QuLL$E@P]??bV,jfG9dQ]%&<1>:c($^TdRi'u]!B3@),cX9%5lbB4AI(uaMZ%RE17Ep)h]S5c4&ilq:dG03D:n3fuc %q,dD?10j0W8>s!25"U_q>5h?7*`-#T&kLd\#jKt[Jt"'c$t\*i)Y3t;qC60`#ubr9\_'#S;\3GoE$,9bc@Jn.(Bq3gCeiNaZZQZp %SQ^,4QafF+XSgq=F]!R`ER.?C9(^iD\)9ldK_WVQ[1>@3RGaNaH5c7UMN8SDjOL:%l8JC:.W:a^`su)=>@g7'W`LU=(rF1(d^53: %=:?>u-7-4cph*DWnAI<:CTGTIc&;OrMdSLb!ed6a;i[5I1b]VZ94?3h3nhm00oqP8GRj>6*#lOcE^U]m7O8n_rBb`q2b46q7M#?% %*/!i'^X&oP^2N.n'=VO&E?3c0=jGp)b\^7iITHVU#ONc;5;2+3BDRLN5K$*^o4Mc)fhd:LW>r^bc,QOHd2e%sVFF'QBHNDsd<I#= %`[k2RR;4jAU'oNPl<tAA(TdlHV8$b9Xg\KmI2sRHW[G:VfRL!NSN4OH>b[KTOdEtb>1tZ#G6%\@.oF-as1eh8?0WL%)GK*$WWSl= %F4mbeGmIASmBVGJ=$\Pqb>l^7^0hP*OdCfqb"o8#0/k%@^[8V<N4i__$D#_9C+%uRBl[0*\f_.CU),V*51-Dp[5o.HXGUuH"$1@@ %jO^(m]O"1&[O69.n/5ePIHtE1In1tE0(o*0=Dde5Wikd\ipJDf8fW4Q?.tHAom!!JVTGgRY\-*8B2t&%*bDt+bNP0US=ENmf#13Y %26t-$$Y!"A6T?_5?Ze>b(6e7N8K]s#Tbj<`O!lK6)W:qJgo-?N(rCtG[NZm3AW^]dp>S1C5@%Fsgs"@3$"nl#[k:)fbL&J4PtLet %(4DeEAUu5t<3\9_W%E^:2c=_AauG'L]Y3-eXpCb/L#P5<X<8[d]p$@^:2SS+o'D;8Hq+8Z+n6>Jim1K;BsI_h4'LW8RUPm=no7:5 %bf.PqSLr"p[(DX0#3=A&b%pfN9"W1&Y+Qojq_EFEjosF[Z.p<6JT%`^7JgT$/maj1!ie!p+B#`ufP!UELJ)<_)!jSccug?$T^[!o %:OM2]ac4V=f'2`t0s#"S3T3):a;JX_?b'^m7OONZ':`:TnXBW\^]r)`c3fJbF>p2/ZS<$."AIGG@D@S%*ec=&LiD=F<;f=S.dIfU %r9NZfW]1UuN&Th%`Ee\La+mp,RI=>9=kJh;OO5LFk1Ybpr:tpX+1JX,6?mB%'8eiBI[Z#03,#>R:_ba5Qk/(`Q(KH.60QW\.1;Uo %h$"^d=GE$<-sBV]24YYLW^UZp+ASoe0&(n9QKCk@:uTAFfp,-:NWRI7P=Hlg0S-&;;6\B$OYj_Ar&XP^"oI03UBu8+5m!L"ZN9&q %X?%Or8<XBtH$r.3X+s6^aoJ0]$&TM=ZPTf0X04/o1,n7;df?/(W&Ye`@]H^neZBCVf%`h=D^XkK.,"Wb=.C?>\/-1.(Q\&2%A[48 %l>9h6T'8/@>4INEZbsao?O#,!53LFYlT(0q\nu%2qc0=VKM1JZbdNnoIDHHPaa@W?17Z*=[p*6[pu0!JpD9V+hBN\W>'Q<4=I0ZV %8cYJ@22.J@acW^3N=f,60<Ytd_=r:G<p2'W5_"ERbf#=U:jas)lIldfd$e?jnHE`&\\E?MZ&iB5/6ee2N^__!*OZd[d']@c3NKbi %5)Wgj[`'H.f7\os[U7t("UZ^m[a-9rCR5i+3Ac11#X1NXUE*\#%%K^IAkB]VY7:0&6G3+@lFt<i0\5/M4+6jEa<62`:26%\CaoEB %o=[7*WQ"8gW&,+R=N"75J_7d2'2OWVmH"$CYMF$W>J?lhkcQ70V\CmcQG@Z)C(lk#@QKJ#<aYtDN'0Y[LK._aTg_=De6L"*>Yg06 %hn\1-_)KBcd_B=$$T;4BS03Hb]kbsriHNf[,pM9"8[2n<U$0JIg[6t&?)F0/_lJNk"(g!_\=6__<:+e4RaL)7qq/]SB,R?XYClBa %Wr[S+$p7b?3i9ksp:4E%1"k35-9"4"6NBG4WG?%NERRe"W-@')Q8WF#E/g$eREki-4CbXpPd,L)l&8uB?Eo[J7#["JV+mq*<GQ'# %oig:&5@BVXg+G3S>DbgTYMUW%o&0hgp!u!IQc*_;.Z<!tK<mo9b1bm;>,D!\$ofj4T!"$[1jBH%,fofG6;MgJ)lTjO,lD190Tes" %j8!W7'CnY/Q0G$3oXS^EKG*Q^jq'756Ml35peBht]nG>bDjo^.J.&<p<?KQ8iHH]lHBsJf7E-r!3.W7aqkF0o`Eep40</C10=OM; %oaVL5bA,ilmc"RUHM?nV,H7Sl.a[!k!q`?THdhrN]<p/$4E2GELid6n5CX%WAX?CVA,6gC[U1>,qRi!<r9En8ofPt:r"1VfMJ&e? %ZX$ag?-L6JO;=ej?gt'AMl8.qU+_\t=k3R#nO%8YB%GM17L3*4U!-L72A:8Y_!sAUWFE%opu>)Y"[rH^-\PmoZ\>*OdR^*CD^m^" %/M]o<'t;#>C4<Dj'Ro7MhS0gQ`Z(@XTY:`s3RUp<(T!3_,5Vj;VX2ko$5/H6,7FG&A:0@\&6oUM:,J%9b@ko)N2"+/QaL_5DW[VB %H8RrY;]!'G21YY]Ka/XDd`3UF7@*;n_%hkqG#SJbR]'4V\akO%4rUjo$V(RZS5GLm@]EBpUX\/sU!YPK#aa=:(CK([g$ju#6S:bF %76=An;,nU?l[Bc>_H\]=bDeuGF)+`=o?da24FhrjL&2^--4Fi18q=e7(e,Po-+=8Qo*>jPJ\^9MPUHZjEAXo@$>M4EoWF6$?VV-S %N]"7#b;t9VO,WV7I[RQQa+B>21jP%=PB:if\sj^DPU)-bMCF`]36VFP\KT_nof=oPX@8E@Uf\+0A*uK'J:eG_Z[!4274QBHU8Vf` %8dZmYQc;sbgk$m&Ym&aY=j4E!Q!Z49;k-]qI%9J^r`R<**=Cp*&B'_REP$5k&uYd?>gGPr*K11-gHA?#bTXtkpJO\j$"26-9Yt`6 %QpAb'Z5`Rr#c>fi?eC=q@gI>kbR7-;04):5!'8,Ni`35_h0dqL:/H-3R\u=f#gMTC@KrX?)#/IeP\Rfb[jUXK?_0><dE,9OT?TLF %5ZTd$)-Jf9i<ibkl#@+F/jDEa)Li8][,pU1:<mkD0QGl*NcuI*o>&QSl*@4C\@cc.@sFT>c#r5]N+-1L>U*N^"e-,EE^NS9UZ?s) %5;$%'<##GsWYd])N'.J9LcU[0`q4g!mnft-$BE=;,*9\eCTPd2.hCVPf;T3@=M<4<#[*)o)"!SS$\$E\)5EfRUt["Dl4UM^**5DY %\TI<jfQ+uL"'!*m,^I$Epo<T??heDK!DT7rN=9$5+oHd:Ad_mU7ODV%OC\e03fK"g'csCf+!![LT?iOWhk.24,O/?uYY'lq@dphk %'1h8S='>*jEmlp`JF5EN4K2RhMq`<0[Ff/"KG7[HNs;sU+_7BgMQbh$+*%W^4DiWLU)d`^X-,'W?3VWu<>cY>b/Z356u[:McuInb %k(rKLiC'gm5J$Y5agG65bh`K8r<f*H@nd</A+g`uSLPA;Lshk8,,'U#BL5s;qgp)pI*ms/Z="%bWQs0/SdJT?QM$7S1uJSXS&B%C %ai7!Jhb&beH-M[FDD'Z_^LD6c>j<kW0oO$]KUg5^po.V()amjWMW"4BH,kNdDu&3UJhfe2CnG;p7\/Ujl$Q2NA-4U*lQ!6a*6foG %:@Yl+SV>"-n$&HOaEZ\[ptO,;Y*Dq9a&K7^RA!j,A%ADGA(]$<[HjF%BV:6Q1.B7tGJn+T6/iRUiZN$hW?14?;;qY02.A288W#@M %Tf\c'qb$Dc^Qf<Y?IS!p[>r?&CH!I&USL7T'M=V($o&RMppf=N-p>eEi^WD]#bU`[V[\PaF=F=r%-AlFARPTA)%@!X\h9!SmP&ZR %ET4gN3r6PL2%/H9Ek6M9\Eed-YVYZH:a>_"hJOtcW]Z&HIWSkpB5rlZ<S(KUp1'P@k=4qYH_\*T"<1,9d7!Z7<4-7m8!7L1Xc/qU %Kp>TW6"s"uog>QLk.2c9h>h>@9n\[a-\cSq_pYVYl..Ma=nb9u:CjGIk@>BT<14,dR)J'.qJA9Eqgl1llN%3:bli+@'J8I5NBt2`3 %D".[TN]3>Tk=?o,qDccgV9$Y9)YQ@?"X>OtYQH!__UG]Cnic]BcBuMu4]3\8d/a5l7T((Ob9]?8TTM<`ctn6hRB;,o'-_\2"hHI- %!B`P*:k+1;Tu*S;"]OYI9Yh8"dT'o'`]I,<2t?%%M&Xf1V=S3Y7q/U2*>\d,?H9U)2B>7cU%&</`HBs7`Z^.?D]^NKH'8f.GbI7B %F"j#Yp]`G`jifU643]^2[)<R(HSB+;af2;Lfs@A'f\9kI\fbK8gMHL5DN^NY'\hY/NI#4=PUi0srOAlZ]4Jt-,$ii%JBcrIV1AcR %hM'Y%"LA1ePDmgEFO&_q6<6/.]1S.D9BgXGM11W:WY/ZJrC9QjF*n/uJklcFioZ@DU4J!"D8+aV<<:6fcS@P)5Z$Q)::r\o4ahsM %oRC(:lK4=+/Ge@`A-dN.S`ttfpVb3aF"@!k+#s+r`TRaVBU=/sZ2r>Nq@RF;2DA.jp5?b)qrT*Q8Rftkd8Me4Yq=s[]bjLVN"qV1 %-5_CQ/uU8'/f_c0!>*'>j2n./_=L(K=6KHD3r+M2?(2+>]:uR/@..hETES7K^TC[`(03_<XRqDX1g#ht>^T;iMao/TQ>YAe[TU^6 %H?Qb\R^bG).CV[59s.ieYr59:'Pn?jcI00;Tb2/4p)YcTfn5kT^9l9)0sN>ViqQ]lc=2k=]C>0sI=?ZHG<Ne#Zre]H,[%7mnCe\X %JiClaZ$Ni-D=h(sm1^`#EV2&n[^)pH!a1's#P8/-a\8R9A[b/[20mM/A\bLQUPULmh,V\-UJe`nBG#1;2e8]j_mWA>eTPX1RdMg9 %5Q;2Z,j+gea<c;5pe2QE;'n\Op6i4/G[:$>"IV6SCK0BGM,CfLn`BXtI6*\/rGubmC;iK4ST2Q[6VKJ[PTSNXn"\%k!.])%D8a(, %S$fJ0h]l`J?+!Q=Z[Fr<lWmln6Y/?j-oNU!4)A&)aK-Q='kt>j#X_P.Bt`O7hY=dPbEkYZ*8eq+e&$ucq>06m#%mgc]`O!#4q,uT %Vp(]8"V\7rQ'2ODBu!RP]U$_TbH,>_MpfYT/gs@jOT*H(<'=KeqoZ^Z>(#h;D]poP@Hj)g<O^P"*!TD8n^r(Q"cYEZr5PL:;ClP\ %nc?2u':)cu'PE-=bHL43l)mt:d:+4Jlq7c]Tb(BLo/](Cqf^P6F,G0fBP[mIgiR!?5SJ@9,T"soA%ajjZ"(=&($#db,+f$X-&Htf %WN`E\MBctl,0&Lr&AJq<YeKD6Ak(,4#N/-e8O6;e6M&B&V0g<I?$@+p+[e/[DH<KOQ>!,*lq@<OUOp#(1c%=+,;n-MTV5^p(p=rI %Nu\_TMI<%!p^T$==2-^V60SNVDjIKu19.tq5GVt_dc%PaXPbPe3]ik^+hVnEEDW'*>=kY_Vc#s-37K(88sbcc30`u]D8d*4Oe4hq %3?dgMbho1I`MI2bXC$/pd]a_V5BI^-;g#Ndl8-YD(b/dV![rU1mF9t1IdId[#c(;263IRZMhG@83.9E@:5.D_/SMJ1h]Y2'5AZN_ %Jo<kS1^m>6l-m]jh@Al1EDWf/?,O;8^#6k?%%W)rKb$[1E;2P^.d("2S'CP`QbQC\Jph$^gX[9^9$Bb/n>*T6,A!b""(h(']!9d_ %%S\DMdHa\iX^>4RemZg,XWA(/"$lZCYi!dkQF[,=1X)A5LnW/,Z^L/oc2btMeigA`UofPYG<\S\.KJdHS-IC*-A$tDAneFQ'b[*J %<fF%4?8>(am,G-R.02ZTHYDgf.#=j[H#<LH^<a]W[B?<:.jcRCS>9<0r%K"J&kZS!A:CU6hgRur1s)&n"VPL-E0J;8Or>j1gS?>9 %+B>8rmmA@(`QGPZ"E$QsU[BXDdY>!14Mlp\g?V_F!0l.hbk-m67o_u"c&L%j--;S:@3J<GV+"g*5g>fRYc)e<P^^2$kgouRlnnuj %11\XS=Y,<]me&>3i]9T4-l14k_8cB/.ZLEVMZ;g#<\/"d?SCa+6oOoKqQW7Fn77[ugtUAEJH1[H&)Ah9(hCLhlg*&B-)3&'^=pck %C>DEb9ga1pqa,q2_.lYm-np/(fMmd_A`:;>QG#gXDF3Vk/!=25h&.rbFo)3f\ibR<I7krqaT</T^Y_p(WDm%+->u4]`OJTB\D4r8 %MS*UE9&?DeXXY%E]W6t&B'\%=^+r%8$..Nl)=./"fpjD+8%Et])O\iu4ZTc:LQX;[g)@3d;=f65fNP=s,^YL@BRQf/]C2o*6H=$i' %a/8/TD&"p(ILGAu6%+9j^/ii_qj'?Rl&)iZ`o3HmPr#1@Eu<UHPF%8BGOR<;`M/:J>j+^79N+SlL.Ckhn1;6tWc2B5-Ge"6:k*c< %5c6]/M(N%LB>cmNC>#SK,Ib<8H$:=`J0O:MEHn0P$unZ8d(c`RgmiYG<O-X>`i5u-7?W\ZCM\M(XcG6UEn4A5NBOR^9pd,_f3:CU %Srs7E)A,r/B3>7C.+Q]^[m7\bY;5aidt[I4"QS4^?k$UG&D.XciRdn-Y4op(;9]4cf(^d>+[_B.'5#&b%`tjG##DZq(.'4Rk,Im. %pj!.!XYS&<`q@a#AiiC#5*\ZH:WaA#LGO*']4lu(:2[t`BKe;h!PAq1Nm5Gd<`Z\4_C!$T?\E%erl%+mfisj?(GEs^.4jTXq"N2E %b;2;^6m'<Gd==:_nM3/%9K6`;dK"CJK((%E)AsiEc.!bu<P7)9YmO[`/clQ6Atjhi@E.r&>kY+FM$]fb/(-5WA'o!i#mg.h0o6:! %)nL9R#SkfPV%Dac`5$XeOGrsXA8/%d-aeU3/Q-*n=O#esQ1UlgkAiS#4;L:N?ZKDP,*2=W"(=;&6fQ44S6'ON`/V3`.Z?CRE\<fU %7eU`j==b%73L+Ya%#KA*LPgNaq?6b3CfFAeq%mAKl#=IN;5>=C$f;kV.-Cn8k9AfoV+#8"IW\dr?kP9SVMeuHj3b)Pm*irD=Hkc+ %<B3WU>N@"@,IofLC%ljLSS4Z'B!r4/C;#MVAH]j?WS1huiF0'h8p;6p:;>#D_u/bWjOa/KZShpU\a*_e1\%>hPu1=-T8f[eU6E-E %Hu;I(k#^st'Hg)&hdn*qGSgsHD<H(ce""Oe-9`TR`r4+BR-CilGG7nr/>I4LWb/@WCVKDXF\P4eNXdU6;g]9YaG9=rZTd#9k6ns1 %4TLbi%UbZMcl(hkg?'b&hk<SmLZ%V511UVBHcO^GpjhHdGKlahE5/M#;p;sa0^_J04qguJoXhW<LMBS]TE&H5a<`l%ejF9=p#g:e %/U9/H[640u0VP[-0@aK+EV%,4TGOgKM.=e4=MprKPZhR:71&X_1;FdsXCL.mJK9tTej'b4a'msb+_fpe0d&i553_2U..J@K^qf4Y8 %i=YZrkC`/J)HJ[\/M..`K+$L8o./?7P__5Y2Us8+4WkLLrDIY4%jQ^[JQ8L++^>l!8#!;1hQj6M5qs;FXm46</plI!>-S:#7M`]d %H^!e5)d/Cj0+%pE9abq]em'/[_:ke7IW&[42^MkfDa/Xi`2YpWdj[(gW/KQT/t.A)cR0=^kVOgU'/PiZUeAe)VNS)k[945/9Eu(l %F+8A*.6ggKEMhEaEE%9&pI&cH;p,(b=Hq$uG.'H[OM8L*/8F*(d3nu.q5SGm%5><<6d:Et,p_Me$2,T3=u2LciK<,(5I1I5h6BoS %=<U*j5**b;`,^&uA$A7Xb$$;-:@.W'"WJVAXt\7Qa^UL)nD8E@MrN>t!nb`(QP'>!mcmo0<4-V<N842;X!G%)LXRgE1mn.o/tOOc %3.s-Bn89nuGm^uK*-5Z84^l-SOkF!PXDk"uGdF":&RZ]W.9UDB!i2d/Z717oi]e`Qb#B)VA'%\u7NRet7OkOl.:OQI0#Dol4>J(e %*pX@nRNcACq%TGl0N"N5mku%BB8k6:9a)4k#*BM&aVW`&3`L.?*PKNc3E2XE\3QVNP'(]B^QldVZ-,jR>^Xs_:-d8Wq?R((73%5) %SKI3M;&#b9Grc[XNQ8.S!^3d]lerZ5C:!&q1BQ-^5jXqABS%D##h3He/7"%NU1Ut\]WZrME(q((4W:97k9N)]oO$_6l,3d+&0]tA %`sH1lmpdHE`HP96NIn\Zorq1u+fB^%3poT>'jnB`aVi0EX]]F`b;uWaE[r1=a[RGskKLN/0!9<!U?8ll@J)2!eXLLkmHN4WgEdp< %=<]W/HL>%4A?j7E`4fSO+j5YO[/lh9P@'UU>cpX0X*pgIeYK;"bp&,h)rO"a:NF[n4CH/cQl+ppGnX[+/-7HAeQ%gCP]eT-2:)Uh %;$b_MdTJj.bZ:udI1S%QeM_]S0MZ*,VCIhR;E;1Xe:8L.YogGkjeW"^jT[?d6"2*ule!6;jP<m^b0QU1jhMnc7cB1H(p%2@`b7I, %/B7!bnm"]<gK1oZA-U[6aEhDm\"-++BH<#4/CiEZ6#4O_4GW>%\EM)HVORdYL=`)llarF;,1EVg"K*Ah"#bF9UT?SaXunFO'.jWE %W>M?#M:.s3j^gc?(4?`Lh?KSmgEjPo4CjoP8oXlkUJZt&3AK[8G'no0.]P4[%<]Sfn<na<hJP<m;Y"H0FlT%P6gG15`.`tgm0H_. %lAW>>94%6oX+$\kBICFG+VQj"ENf<r36+8^o:JiP(e"kql*H4LRs(C7_r)4;iBlqV66jESU8OA5=Ze'/qHf:E.DL`d_d>G9RY3UC %a0^t]ZXZ[>SO*%o5#f%X>!uVt[k(91&$;[X)5p5+9(_Mo\%SIO8sHc"cjZgrLo\\0=-c.s<*MJ.;59.b]"l*_):]GF`=[U!R9aEt %-/IGZ<;t$q][[qQSa&@c@GYasL>p]t+[g2MQ$YE>!iOVS8EI(BF^[,XPjm-=I+R:!T@5>SF1cR5=E5ILk8VA@IW^Q<[Fqmf]c8Ek %gXg:`7V!O&P3AIr8P2eDN.sSgA3/Rt[TVk?_R^a8\]13m/4IBc9u@m>_J=i?2*Z3`]!&FBYpt<cR.(&*?Sa/u7]p880!%IdG6j&^ %8'\u<c/O.cWs38K6qUi%/3ZjiM[=ifZnCVQnp+?UZ]cTne/CntQ2='-@ktS6&uhZ5?DhnFhV@2ZY8qsgO,7u^b7o;Nl7S_FG>oh5 %9jrdKbT_n/'b7kZ"CIOR-jdAWR7u,4GNb:X^bm<0hnSRrHea7t.SP:73=Y`qkG*A5kb_.H`KaO#7<[@")ee#s]]uqpkjK&r]nEsg %Wh!3^KmhV#?Q2#-'4b<V)ucG[Ij"a?a;GiA74qQ@iP6QJH%B1f6NE>%o./.+I;4Co0:`Cu`fB?f/kS2I9eg+-)]H/AOc#@@rU5hi %L3u3CMk-*%!b`n,rpT?`Os%A)XuLj^KL"&!P[[S2>Ig,+?ea`@A7>:,e-()QQiQpp8BDDu8)PlmP_DT;C!;(V!30A-_s[NX"-//5 %KaXnnGnM)-,VW+9_L66Feemd`3SgBLd<3^n\=<,of'$X^&UF4Z47ITD2?_sQH:IVUPGn3oJ<3\m.:1L<!Z7-"'RFhMgpJSOWuX;1 %mgt[R(.eXIHC?6A*a)grNp[=+BJ!W(R@N6M1WE'Z@(4%5$XqKe,t4AMhsDNs;07!qSujZ;auikuftE,feUV,01thh=$F(bB,n#e! %hOf2Th?9%7jP`3iKk.ks9tsIkHb^7],ip*/,$6$0_GL;oX]g[nmGnt]_WCpV&/IQ3o`*DrW%-5b:LU=S%H@P%5>$p=-n^7c#uur( %8kXO0!.NTo_s\/c2U"cb.An<M.54RtUF8X:OrYcuF$9e@Q1+6>Z$u@Wgk%qPeOU(ri;h5E]h2+(BFO>!)CtgSlUGhCQ@=r2Sdk[T %l-[ZU=-^[fRY_;&rMo7)k-Ktg.qu,OPJ*;O>l+<r?Sruadq.S%0dhVh]b]qdQZAcglVN-ajrCH1d:^d#JM!R3q(-H8K="TBFb!+r %go@RRAE\*2_t9rW!mZq<Uip3!W4?$SrMo:/Qf:]?FuJEe4m\-24h/:$M26E2I,(=V5V[nW:o:'fi[W[U\HsmQU*R\rkK#a'KNO+? %gkt8PhM<Z&<![,?5X0a"0,i&saWOG(G'0>gXEGXaWc_85VU#`XSsdoK[=E*p&X0kV^tJRV)WjWol%t8CTemGa@l2k6TCD*4E60V: %=mp+)lAm`::fLDGnE%Re"s0_?lhc:2m45`6>e_U:"AWtSIcssFU<lL%2W8+)H?3H+FPsc+%=U#_#bDrRE`-a`75Z,M,sXAnL3jo7 %Y"bmC%'mN_il"_mL([`k5.mh?Y<@bZ7sbm^N9_KtH0Oa^Y#IrKl6-@DoUHPHd.-XJK_VXKM'C#I_M-$>Y\.+%fi3M4"9W"<`jCoH %GF%6NpYU:f*=bZK<BA<%SB<=7JA8P9l!&/pX9d'-I'sd3U!ji*X*F]A/WpFZr-tG'l/Jp((SZ^()H-K?I@FTXT-J@NfLggUh]]-7 %7\,?3^[^P[hU_i0HYnGB4iBX*hfYN)ULB>=@7_cFQ?,S5]i"u)j5"GDp3#,.qBW;:0//DA2\E""eJNqIC*&q,[]C)diCI)D:q0QU %-ZEc_<@h<QX*6;gHRGrASkU[S!omu<qr%A'S]+\&_t7"S0CKq@;i$1u/L0h&j;7R'!XMf0X9bi]ZZqIeJ9JU3TQuJDb@a=?7_&l7 %odj3"i*MPWIV;c?64McS]bqZ..c^e^:ku0FKB@RWt;,K*%(YNoF1=sWE^+>BD*??7bZ:'?kKM;">![Lr\<2<cE5:/R*GY)hA'UpQa %;Z8\tB0/bB*s\:sfo)i$$j[:n&IYF+2hZt)q?*3I,BT>bce?+Ui0;\=X3fqs54eM9C+_YAm;NVKl3hI09St9gj(.U78KhH;^7/La %?>qBp?f;=^4^:P:3ti.O;g-Xp-F7k8A#_ZuZ^t^0fIFc'9MpS4%?Sm^+(F-OX*l>*!A6uJ'Z^'1D8VOd0aM^QA$V(&9J<A[0dII= %lmMH`SLnGar;6]l*V!\mZ"(`*pA5IG.o.h:qH4&FHQ!!hb47P8oSqkLd^Xs8pEkkC#>$(lK9kF=2sO,)b8ad1&?;CV\1F(2$TUOn %hS;Yh`eEeG!nV'nU:V.+66gD?ZtFo2]6In.pcd@\Bo%WX*.?!8PuRn6=C)>Yj%9)*Sek8HGIU`OQ6Wb-,8a#&1J1n1liE*cU5ER6 %JBFp>/.P!_rOWP*hoar^OTY*ZF2@o"0EJ6ai@3.##aI41&-G-P.#dX3g]AU:%j;Ie)C]ZBJ3!2I_oP&`b1<ouS+-UD_nJ=V8s9V. %[&pFkIK91$#[Bnc1D\*L;6ljeU9:Dc;$X.AFB:I;-8$iKmGU",E-f9W+RV_m!nb)Hi)d3X1Rf:pVfp@RT#DFZHnSLTjqZCdQ&n3` %]p$!$H+@%,d;%4;^F#[]<J!d3@,78&m45Wp?=Xh9T]@6MbH@qYUNLJ_47V$Z-2+>I5^e!m$f?59W_aYJ>]uC3Hk6rTHFiCSXa/4H %3`Ki(TmUdch!b*UAc+L>;G8PIQd,DG*[!gs]mqhZUoWE%M(W+<AS1g;($Zc?co]1YUp:V/N!q%+T.Gtdp>k)RZ$:O=Op_H+)nZb] %J<skKE8"E/<:-A$<IssLq,Dlnm4Pc[X)ppRYl-Y[d)Jj5c*k%ZZ>_li^=[r-)-]NSO`b8!`bh?4mISc0n*2RO/ITuZ\gOUuE=4F5 %Ti*/#h!&JJgXhE]#L9C`\PT*bSLSG$h]"rrX9kaR&tfEj?mAf(6u<BA<)%;pb]03'8l]*=@`XJBs7H0Vl500c_?$ZcD0K`sG+ZTR %*XoQ4hS*k1?ThRD^a5)\42hQLLlf8T[IHd34AIYS]f;M%ECs4km07lo"u[Fqe:Y*,qej!B#'Y3eB>H749(KAg8.M;QckKSD<Ik$f %l?Aru.ZXaZarMZ+Bi]U+a0@obWHjDrgEVWiZRA.$ZDqAb5<1c%Xp?Ij-B/pmW88eO(e,`'QhI-!1_TIQ*Rf3UanbYm=.H"#p@Ls> %RZOLc"G'I88M+8PRSrXLr>b0dRC^+b>,0b"^?lP4*:YR1CQorj$fMh$/_hAd*iZ_:M-QD7Wb0a98/@]1:?A@FCneF(G*k,uk-NmO %TF<M<aH_%U%t`P+@jGueL8!6E<Rf]C&1D/HZ5bP$N4J4gPN^Y$&uBla<m>@='H?.`B^7Q<Rjo$aG'mM524_CmdDYNOKRY!42U&0T %`)lgC]`eL5<GZSaV)MD>P^D59#FR;W<',C'42ma:#IEUr6cl/AL4i?3i?urFBZ?rncO6`Df.2/WF"k-OHG>9Y!VUYha1hE?Fn`uM %I27aU;!'npjg0bmZs8F:f?W>gV5YA+_!Vd-\u@/1N[g?M6IUYDlD,#k#OCGX%9,u#R657-YnSRdX8-na\i[q[D[gLai)g0$D,Spd %@buf#4Ll,`!.M*n`lhnM!jb;/`B2$1(r>.hks8d<Ee$kk1ice"e-oREp:I6W`'Rjnc>tII=b>6gKWOBWgGiP_3kDRK@"MI[G__[> %eAp)s[[7k(>`Ku?Wjp5%HYrMiO?(>B;L?EpeF'L1k[-1\ic0jAK=^"RZJo=*"6Ae6^2*X2%5dsu"LrKpENJKCTdaZYCT;_FcZam7 %*FDM+hn\Md;OA'!cj4@(2gP12*ZK$.-7Lr=RUXdZGQ4VsMP$C#.gPCM)*[;`?pf_^>U^3gLXJ6(>osEA+]mqj)[JA$FUAE/b9Hel %c>E()")<T6d!>WS!L%ea(s]#/'aHUFfI2T_]#aZj)%^\^eIT&[?V7V>@W&[G77cjXW`[Lg+)p3#hjbrY=K$\$#*9_P)!L36%^m:j %N.(()?aYX(3ORR\CX&d_*$%!Q]AnbRb2==5D*8VUIl'0L`md'4XGol;,$F+*24!+Dr3fN.ZTBhkNfGi"_L+:.V7O<!U1=9g*H@Zk %%ep2Pr5+h>/=@)Kr8f-\l8\.F,:o+(IThT,ljtb;=*H-bcgIe6>7b,"ZAMI_fCXF"g?nWI`]nTrLIkO*HUgEo48!'6N-Okr_'8F? %d[)Z1`D2th7lmpgi:dD42[*iOB,/cnl\!7Yk:@6pm+CR-&o-Qn/b4P';7kN(XrR70Xs+#K;kqt&Lr%mlVL7-LJb<MqOBgl+>6!S, %+<Ddn-'Ol-8^u3b7B93Ipb&Bi+2um"DVch.1S6oYYOPP1PL*NMY'.ATS2cot"mLWa/RgSd(,;7%j+$:o]=+osO)B?Z6[VkX6ZD+3 %-Ud\bKpKUh9q]GL9=*\Q/JeS4jcWa*U0L:?P#f-(H]_ChJ-I1=7D8Kd=cdHEX.n="Ds=)#^RgI6CcH`A=Y8K8&[2l`MN11G0M%LC %^dr86*=[tfilD8`Y'T[CjE>9kn6!(LUs@sAnF0b@Hs[?$hu*-05Q)+BqS0+]q_*Emf73L<s6uZ\_nZ&K^]41\pNO@[iLg(\J,d!m %q]PkcJ,[(;rRLe[qs//QrUu&^Ps>'nIJ_LV^OPi^Ieni_s5e1@s6nkCfB7Y]YKn<jpETMfhqGR>mG%[:J#.(5D,:.Hn%!X'k&]6h %K\_GFXd?uaF,'<I`D9edri=p>D?'&h`U!-)s+j]V&l2ZAhU\)kM_pjdARJ'W!$C4V0Cs6Q(.*[sq'6S%QFtg55JHGj?]QIc2&HHR %B3GNPY`"cS+hrVc*t=?H"m0?CqmmAM)_;*?PK1p4oGurF2j(H*/:'521B<i'\i?$M=DL5*F+GCM`6U";q>kdC]g81N5SK)1R^>_F %c"LC-$tm*G<k,$@kUoA>P<@/DT/?<`Q@2r)+W[.nb7$t+.A\n0W:hK/J$!fH@P7)=($<0=:fR%[;7^_0'9b;;9KELk+#&kf:k7uT %8c.KLcBirqQQK6YNt021IJ@!\^+a(^lISNTZVSfq8N$l>i85]\@\.O]kmcY'aBkujR\Yo/NPmYl[d^a"'%eSRLUSJjG^D>3Zdgcm %YPgLB3X@Rr?F!1(m-m$,"j;j@-+8e$:%(L`a_@E*^M*AR7]7o4n`Lb(mtK)^ePR=XjMHfI%RMfJ_TA$Yn[\G$M0pkTC5@YD8;9Ut %;nl(_$f2Z5D>*]Y_g!'+<4E3VmNZGdTA9)$diS#_[!4#$h!>DqWj"g7)IMD%>t<5n"5#`Nk]l_RKt@I1n."C*8=JMRLc6>RUpn.q %Cr2T3g_#p/0A^mCn.)tNXXPUVc-5-o[NcIU](e-KC[K!TQ-s_cr`N[6g;t4/6dG9()f'B-=mg\L0ar['?ZbZ,psTW(@qM4+:nIL" %k9SC*6AA=9raYBlUCY`nl`<%nGFr&*/Nhn(N$lBeYmej/9BsPj,<U##`AY98ZL!P.M.u<^-]Z^];U'hsO8)WmVt!:QjWL!RkT/Y3 %mS6_oS\(rPUhQ2B<r^Xa@Ta>q,[tr/BqA#dXrY8qp#MfFFtt*S!<`=73OP@1^p>>n/f3ddIIR?.Pg4d:RX'[520"%t$cI]GaWJKP %I\U])Y];.s'Mh]DbU7Q-;[:r29-cLHQN2<B\ES\-0l$bpC!9C1[cp:-LF>M-SWtU#D\nNm(['*(HfO.dR9h-r$L?f3Nh%5PcL]OC %]D(33iH&#*RD<L)E9BhSY4/'q:^O=89W)oe7nJmFl5OZKLsG<CqPdi"_rn7J0*"(-:)oPno<1pPAstq($9h*P)=W6N<HQJq5%"$A %8t&1gTe&aISLjt*)Ag^P4Q4/,Dn9Gq/i4N1#JIu@OTW::HiWTrcgFM:TJ94\pYCC-2.e^%DX8aSNm6:r3L$k19s3o31;"(9aS,_W %k"hk*<T82RpTIruG33[$EYOLUk3h>V4P_o@BK,V^f1+V=/<ik'c!:rE(2+7?mfiF".a;\1D5WR28;0FkXH:ELcZtii3F'"QR_6(^ %o/)Ojb>ZY_fn6(plIu!!+7NQ+3GMsSMDMO\*p"D`iY@PpB_G=gmk@*FnNn9*^:6.d*TfD*3P77X36PYi^n/f_((m<M/l%Z`Y8tf5 %I^&c)lGe-F9Yr!ML5RG&BALm/;L^oZg(J/XSnWQ9fNBN2P:#$u4#iOQe&"Jfgk9'@=l?33:uCCp@1MEPe?;%8)q-@`A!DNANHKiS %/:Z@4MF]:Y(>N&"HiW?HC+Y`Um<YZi-si405UJU).)U+AZ6HucP;LS(qm^u>ca6.H)8m*JrLsC,rUtBV4d@hc8!+#?RL?$8k!6eo %E#`W5WZ`IPgXm*A'IIE)mm5p1%fG1TNQI%h")JFkYi*0V_B&OnMr?\G\V[iqX_/hkLHjlZ[UsHjfu_[i0$ACQo)8*V/PC:tI"@kJ %'8&a)69;YtB;&LbjTW'6rQ5Nm`5T9nJ>R<n=i[:SLo,'Uhm^!P=YBd4qC"`@Gj?hE/9Z)tK>>FN`YDZ8:3;,8-<P"EZVBRAPTW]\ %cUhhNJs?XZ#!D@Y+I]N")9XDKma#bt>EL&Hk^4cl4bn_U4)uVEVY^;b%(oFWObHf]Q<FL^70!h>!FO(;3K94<Lnc&;!pi8.FB)Kj %e,8,dUE_&FP:L*+E$>&DFpaMEi,bbah?!uO_Cfj`g2fJ@UQZZnX7UEnp@0ZiFMO0aAsTfk62i7\*_,0e"A7[=#pP5t8Z\?u7=7e! %)OW`)4_7Yb^!LBW]!Z`GWlHZ*@+9l6foD%Ge)6+<qoc^HYb8p<AXskn?Ms4!_ok*5op"Lo<)UMuFl28t5`Rlm5Xb5(6U&nghO!X4 %)4Vfco5WG5TXjgDn$Dq<a*$o<4G%`1KKKK0b$PJ>6oOS.%qqJnjdr<!lbi9kIIE<DgmlQ2N37Bp7N>q'A+cS$p,+I[5#<1:f-W5< %jDV5[1S;Y:>190P1pV`\#YK7;7LpPuM4JMTI)0gbBlX)b#g]jOE;04J`-aSS?QC4XhTp,%C?(_Jg:CjD0f!e<\pK0GR1>mf<Phtr %P!n@Bb(I"JQ\8n`ocDIb!nET"bH5\"Y=^G"-/[1L%\0-$-RGo_Q3qXe/f>s.\@6:<BnMk==a)5DH#3/4?DA%GB-=5p'D%!OeoPL# %/f.i&ks=L*3Sq?#%q+cUDm_>HfLZWbmhOZB4D="k?VWX5k_IAZf7VWqA*jKJ?i2p7QgV2E&+S,QhHF$:hon<OQ5b@h$c#\e][k7' %%(j;$7`G6;?jDR90Sik-G[37rhh;f[^?EOIj=L/**C9X=j<VTK?,+bNFE(j)2"DtVD5a8u;#J>O5nm^nDGFE<YJsf$]a8Ua2aUc_ %J]hNop.0B7S@WA><f^q0)oU&V6d1-;-:BuS&U*+"?eQe[50KYS,OOrj@ROUNi3hGbV@M"kq$eKbaY":CCV,@lA[a:,EQ%C+0t\o2 %=]Qm03%Pd81SUIrYq,BibD+1;No*'F3p18fZ6l^N;C%+@,(b+ac/Zur1%X%<fI#+bdKj'U:38f#O#8Y5n0N_pM4A/k:+GBu:Gli1 %Nf4t1ea&D4(5;rH-PPV,hu3&emTBS6:Ml3'Pcj>9!;-*gkK=\Sm/\HkQSCC-pabp])cJ6YPGT=$@nL#95U@dIqQeq@Ks<",b%=&a %dk95P;Q*km+6;`DBgA=(9-:=1P2rgKP*TsHk4&(fGT!3DQpLgi8M]GM.1_L);`u$KT1l8Z2!t^&E<l9^6o`MM%^/%jY'kc_Ihg-] %nM-O?j)7@5EYdW'#noIb=XCV[?#bk1OGF4D#kISMn7)tgC@_cfp=)[@k#b\&qP]cnKV!2j+QM%qBC2M4NHriAPY*IjQn[M]3@6j( %p`%+gcPFL,2IAA<0G\VI]RBp%5+T6sG)k]V#Z>;h7R'BFG[nT^*2M?U&;#kO#N"W*)h9H8PNgt8K9(cCqo/Fc5Z#C\go!c%39L`\ %_#cOu69+g]pgsk[-(hh_Tb.mT9e/Te)d'Cg,,Y'&%fco.T'AYO9kO&k6T%]d-28kL$Q7q>oN/g-rai-KHJ<LI6ToE%1VSm@3Qm88 %Fe(]1BE0c';GgRu+:&T9n^p[M$@'K`fET6s'-$bD#94#"jPh..Zm[f7_)&J\?QaSkIl<0E#&e3fD2Ghr>g3OP+=ehA.QTb,H;*0ZJ %6i8f5<Vlb6ilUDlM%f0qa"sE`ruM^6W6O2km,G?ab:t1>[0NUF,Dg.u+TUTLbLK4RIM4&S,924T_InmR7$)TB`Jq<@SSROo6..H# %0-+HHMD!(oU%+<k*C&NECq3;,o=C7A%gHkcOX!1a1?!r(dfTNbesLPh2mE'ZY8XN3nd`B__661VdQc?X$UfPt3n2*M&B+D2-X>X. %hVl"K"%(ShEbOWd["kpL6MT!_N?\>N!><TjiT,>";L"NfFc%usR`ZHISWf/>-tgPQQ2B=.SU@kt=3Oj-:[?7(/k$nDINbRqqfUPn %:cd?1h?d/=M+>Z)MHs4CJemCApnYWRqh8mDO_'W7mIbTs&cE4iqJFr.TsAN>3Y[>m-YF*Fh]j+$6O-+]lUQ*>E<M7$MhKgBAYPm' %/KEQlZa3N^B/RE#3hB"J@%qVs)'drfEg;WS\cLAf^jk*,&`d]_hJ*%L7,CupSa?DfL<()]o68ZlQoH%EdR1\gb*mB'EhU65&%T]Y %CRAg[-KGH6IAg%?XPK-AV<c"M3)4pRq6gY8p13;f%WC3#D->]$$W1dK.l/_m)\">`-h^t@r[\@(GR]QYht*o,+)rGDeQo#.9UIcY %l4@KJ;`#laX-?'@ON/cgnl::W@9i-5Lb-l`e[]$Ye8E$>>e?T=N[O!X#G,jF"'+#34_b[p!26#r_#.k=U?ESc%GD6N9q]jCLS@&L %7d-jofF;q$Z0!$a'>iHY>A_$49q3/(1=SM2mXZ=cMnl>O\M/A\c.N2<./QEt'.0Go2I9j)T^/Z9S.hK&_ug+@Z2HpJg*-8O<Ku6X %U,o?t%P+h*QB5^@?uFbi`2NgbBTE:sBY[@r*eo^k6J;hP1:pVSq\f#C4?"8"_;Bn.A:YTg%H?E$E,nj6)/*fJB1_@u<,\u\(abMi %1S_0Bl1&_U%r1C]7$s?%7uerAeOW"4mi7UYJ^UrpaJh!r5KbsA8:Do],Me[f`g7kAq:a:r@//]f;YiQ+L+`)&T..!^+-1qO@]$E#3 %EcLau4gM+`WtVNbY&Tu_Q8LPRIq.qQQQnSPX3i<Q43Sd:fT$J=h(RnDBk05G%Wi"Sp@/qH:,"pA.,kmoTP#sAW2DkFQ^(P[1cUI, %$)#,C6deZRhUT%.Y0+o1b*DhJQoG-.7;2-jb[euP_irtN'`9:`=Zad'As]IOJI8/*l",hf4cZmjVfrF'Nc++%4B!ZPYbPV!,(p^e %JBJ,>7^-JMS?A,3%oInl@W/P+g7T'CQ>@:M+S_?P-<c*>B+`+qF;s5NAQ5'8.%MmY2%lC\#uU5cYTUQuHS^C=2Es_#cZB/(\4[t[ %oi0)6RPj%k66qr)!&mc$mCL18l3K/1JA\c,L)0ntM(A1+\,fQjKSpi]!1SNG$LTY(oDs!>`R42P82MYrHq-eU:c0l&b`MZ$;UsHp %GnMErY9M_r>43OanuCsT"!C?3UeuQG('K]k'i6J#X>2(&^dg_9]ibuV12\qp1>0r+gpKL><PH-Z6,Lb[@\.BCaqV`nH#dT(&.0!7 %OLin2(l,5$acUVm]="<COT%]eVcI(W1P$SIEHYD8C/Qr5obEM/_Aaf]]*Q5MaVGadPL#(<buUpFAYetq;tFaV0DbX-l-E\LKu:f9 %.o^/C\/@Uh"f3`=)H]*"fZ\+a"&NLo!hVkSAg3",B/3WBUQ@MAeYa]rkh>RXePYa?h`itsCLB,a#TqTU2mAm@+]Hr1eB'[K#^+K* %f.6sO.^`@fBgp9&U2tT'g+(@_@<p:"1^!Y%@tH5\e>C*^ni11fO`'2_ZpHA#S=_&U57scGbrs0R8Z^V6,e7P:?6^2Acd7rPT*jTs %<XeU&F5V>m3GFf6Fg]5Pe3efr!U8nY8e<>>o!c9CROiiZd4cFr/Ikl;-;SAhiG^D!X#'LUa>sA=+<GA1Xbf#L\:AO$CL.Js"W`^: %M6X_#>:+@/"OP>Q7eIPjf$h@]%q$])jq.]g"A>kQ',<H50gl#J5og2Nb4$pHY-mgQ_CJP#oic1tCO=de3^>6%#LM&CguKoeL)1/Q %nN#NsB9:nG4/EMURu'Vn#1U.@BiQX*F#!iD+do9.[gLqmmDiJ=<MqP\RXs/!XggBDBl!lXb4V$3PA6LQCYX2[21S9^c'D!hD^hAV %DrsVXAXSA5Td>&pPXJ5*flHKl,4S8e#7Hk[Km#Q4)t*G4o84lJgQs0h1IJN/=3t_!jK3H-C:'NnG2S]2OGGH23%bb"UYdr]'Nj6` %RqD<ZXEKE(V9h'8^mapa`>ic2K%0<khs#]0DAm\nhb@c@)iS`jIbCKBLp&sm2uu-B1p"U&/f)3&Nk,%>g/p;jZ9Xq$#5S_j0P-ap %U=?Ng4_5*R8o0ZRA9,^G1n`>20khL.>g]>_Vl_$1AEX>(oC?W13R5KV)"6=Z;@"&jn)!$W@.?Xfb_EF0rf_Nl<F2aWarK\%BGmN; %,ggB03]J9X/rCBH,pP:A6KNrT.8pn9DYFT:JsnqZ',:"1q#[(59^lL2C!!N;$#^"ooR)Zur<Nn3$`9\5=iU]jBBdi=>i'\ODr]23 %%^-9'*aj@01Gr&B-&-0k>5$?`>hch[E-+lREff)'1%,*g8*#jpas.MIU02RokNo$'?YkL$nR3=q?5Nm'>(^Q`:W**%#3HJM#MEJR %/A)-Ra\kdq=3Q]uRG*n5+:DkQ>nk@K_/4hNQA?mklbs@IP0?sI!m1N[=L%#?g_'bLS,i1^gbfJ1$*2K$6kHsgmI^o-3d)aj"8s)n %>T.oAJZ``-:(?M.+`jC%R`p/J$tgW`\unjA-L5j#/U]>R<$6a!oAX$YldCZjFllE&Mk*QY7`dFAYV[=Q,toMb\T]mU`Y!F1-kWC' %\'(Q'Gk!eMl2iidIZdJ@k]SBP-+<8TnVfGf\::2J,.3,kb?^9,e5o^$=]E]f$(HdghlNK)8SMG<3J>MPP!d,:Q-s3#j@"cN,?f?T %$ppS`M/8(t"m[4;DE5\"@^iC(_O;I]lF\?0#_%pbO['>Ue8u+o(;7dO`Aeg`H9"dGm)<X-TFF1o09IC;!`B@Z.Z\Y,K?jC0.:@l7 %iIbJCFJp8;1gnTb4H-Qkm49KpX=+?pA`3lT-o1r;$:VEe2S'Z6#`gnY(q2"cb^9K<*6@_MUP`S%o#ZNEFK.4ZQW'.bn=kA88sX!) %3nosZW5(gP,#hRM'L@Z02/TXZf*)D1+De'9h4S^Fc<QTI=`7DW,dsntCoA_M;JB`<(_VhIHB&hgD`l4qDr!)Q&me>\EdL3GK%<;G %==ire12,*gL&&FDc0kmY-n"Q]`kqk)Mlm0+!Sk5PDB0RE;cuhF:($pg<nHX<q'MdCVNDK6(WdOWg`(*CEgE>fm+dHCIFNg%3sPs\ %ef5@uNnB[b."G9OE0e!6"%aM3]C2%DQ*hSn>#^[q=6Fr:B@SWHYS[@;QarM.pMa2==dK=;Yt=7kGunSdd/=/06,5L$q`DT5PlN-d %,FSW>QN<?>ZWWt6[>J)__J"TL;@dp^7*X4bX@qq(j,VK'_DU[,K`k>XM&6\dVM@^4/nI#6NL\0i/\t7t))`ErhtT$!#csoNI7>a] %,pgt+K+2f)BU".nkWaX9S-"758'k"/9dq)O36c]%-&FTp^56m_eorDYCPG>&$oc@CeZMV[COn/OO`V^_9T;l['l,;&=U\4.,-P$1 %ZFE5@3%--V"H2,]j'djpEN$/IJ"lV2huaK-`ot84aZgQC/%PHlf#blMY?=t*Gm*RdYj8Y_]OAd#+QZ-tHtO.+Emb%4_PpG\L`t'6 %V_Q"a_k0N1&:0eIYe-<%8KZG"=Oil'Oq8a,-_BRj:4O;BamN!#P^Y,caY.]1h(iXN28]QAn`m:#BN[1.&g2N/1DB+P"YSeFA-?RY %eh+'PkOK4/VErAB/c!E5/1Nbd7Kh`tA:I]M^o.#4.md]T8!/*(lB['Sj^;>?e3ZZ_h4++rQi"s8Z8HLX&sD?LVp;'/G7(,8JrZ#q %U4m=g(R<CV$IC`H2Rj)#p@q*1.psn0^FR):9'U!t=*2<KkH@pCOq:J[mJR66"QFU]pr3S3&O6g/b22'YhB=F.EgXIm%XYuABG6h\ %8I-r&)&la#R*I_!8Od;73!2Ws.4(9e>7\kb]gZ2\EROPspDZYP]%t1SF?s*K4l-`@C?Z>[f^R^WH8hn!83AFgI'P"HDVr[jE;!DJ %/\Y+<\(S4o'F;ZBKXnud`DRraG0?r7^]<'QQ^VBUC".rRQDElS1k5UG-W@CEF`MTRH=4-j[sCV/J+&!&0gM,&MT,G+2VZL1Wr%V2 %hTbnOGN[<oF-84s:HfZ*/h@N*rkegPclf$=c8H6E?E5-3<OMFsFfN0+(88^)JgLn[`!&c5WRXO+.uOYe4peobW*$QcYJhIHRZ[/` %iG-:-Y1>R8A@R'aip=.40U\O7YWDG$%<d6:G4oL`-*nhDUodrhA(%cG-["Zr!!Z2uA=j9Ak(KI5#!gUaG1N@a^i@@HT]gbY33G(6 %9g>W$]R`4.U%GV/3W16+7!m^C[>+N5pUP%h&ba$@&C/u<H@h?TLl:Sk?g@^KK:7[[*AXe,=0<g6,]kI++Yjie/sP\FU76^]f>[NQ %Hn6I0/V$2G/[sa5W8:l(ZP;6tf?ZF(F?@#[DMNTGL&O'k(<s;)4YZP5J`+L2V:U<(Os-7PB%-N`M\Z:AMn)8oR]'D(.J$.>jUk"N %+P$b$C^\<RG8,S:C(o]1F_Ri=Ns1AQ[o/tTl_Fe6!thh*NfHH,WXL"kF^Z`#k2=aGNiUudRoPUA[0_R0o"f3!4DC_sj2R*8QHKA+ %<#j+.7sA2ScrHJcGcaa!^7dO6'6Jp9MlCMukIpC>c&_!=pZmKu<:2-N4;>K;H#:]3SUm?OK0h5s;2>8"]%e0PM1t)5'pHnJHSaoV %[PcaB+'FDb&!q&NC)PW8]@PZCp;n'0cOXEJ*hi7PJ$=XR%*%(!B80$Sqm"DPUcKm8G3g^]f,&u'Oi_^^_Cbq,OLZ+.[;ZM=<pU/Z %G.-VJ@.l9>YsMbka4,"/Y*sLE+lPCJ<ea0aJ?LglM.(lX$jef>MAdb6MjF#a`jeN)!]]%o"=2q_@aVj7&_%bC)S=N:TNAYPT"MRs %cg\_(^bh/AR%FMI?I&=RcC2>n+3sNPV?eD%+B=sl"765f8RttS'sB4Fou.,O`6qAZqW2jnMo)c[V\_lhE)g0ES?dICPs#t!4Y5Z] %J."@&$Gqb%ENV=K3_>SSk#EE/dS0I6%()dJUip%<@0;7T\mQ9uP,GFcRm8u&A$fq@i=ZFi>F\eUdb`(_c.,*(m;7L`BXC4^4!SW) %*IR^cJf(]blk(rR-,E>nQ`NZp\2II<=0#mj^WAocW.VYUUsbfRM7/EF:^QBQA"P)[-Q^T8T1ioFkpmN8coT%;>&g^S@jN(UR_H;- %[.nH*-3[[X>t0;Ep/teS;K8/G)ah^neR%M)@9o@*L?uZr5T8!0T(-Y_eF/7uFf;-j<gQJqK.)Ra$ij?Ufs[jfUm50CMU5.P-loR5 %J$iba.,[K6eC*m0NQ4uJJ,i:dgAS@'0FVVI50I?6L[M>RW'X-*p"BD;G>pf<]$pg2*e:9?,!)i<1rCG/WYBl4!0WPreT/4n!k/mC %L_t-l#]<WXG2rc`qrfB_AH4l_R$0-i`@3GU$%YU&:lq9,?2uH0jFJ[Og+[eE=RFdXf+6ft<d8[]P8(-/JC4I(lDi/nWHJ]#=t^L, %VR`+7k.O%%g'Wc3hJ2\H'dM(j%[]"-(&3653YtN0%?#VH9-?Z<JbAFTJ2n:EilTmU&h*$'p<'B[+',)/oMa>P]R)lfJ'aSdJYIu4 %bd)\DSA>uGQepop99>;B+Op/8i[O3Z7U4G=l3#!W@fe&Fb0p`V`oTQq7J1OCg4M1f^!$eU#W.s_k`Z$JZN4/j!UkOD)[A5)8-U^i %6lES-qPhl+EU8m9W'3MQSic!QAjbRI&OU#er?m4%qBVqU>60X=C.*[#E%sO03uN5*n78FP[+A;/:RpVI?JJK=5X858`#/_E5e[#1 %7Gc]+!"rmnVn9kA2>6CuMZpHtn<ESIn-YgF?d&YoQK.VV3#/bR946O]:kF;-'f>3WoSDYk"/.ssY7bZ%CjQ:^5G&bG%Q"sp"P/:e %c!(TpXEJCaB5O&a?4rgZ+EY>"E/@g8`';&fP,p?k+r*,&AV&YIb9Y8f;HUqOls6^s?D8q'P&?+Y6*/FR&itQ^!G:hLJRpcU?parU %#@O0"(:!/Jk!:Y3hpJWd`q;5B8=-ZI[3?OA-HK-YC2aQTe153hXph6bST&G'7n0/?>n?cTJlY:^\5fV(]%-mLm'Q"sYg/h^[[K3G %EDj.+R_H&b/<uHQJmGREIVFb"[Qs'ci$K]h![i8em51n<B)nCsoS+?+=Q/XT9aKMi$`?gV%(qICNOO6js0J--'Z+a<9VSuj^,e]$ %\@c@G5T6:?i=;\REU=*Zl&]Pj5$/tjp[DogXLj_B_145R\)235#pE`3.F\BkU&,3I6\i3&h^'-N=>Hsbi3U>(7!'tj_s(pJ]b;-A %UHH@2Eu:W/Z_i>WU-`f.rNV2"+gJp+7H%2o(2]Kf:<;Q7-0_.8)3P!K$e7//=F#&oX"gGQ>]$>am)b-94D<Wo@3/Iu<ML-ObHQ!1 %Y6r6`%?mXC.@\dp@73geL2+mc05uqJKl'2d@R5a*Rtf+L_^fQ#Q.+1UDhrbFC+bR_AY@UA3#PO(7`&\n_]p0,N*$^/e=#/Xq*4rL %U+$o`)HB?#"9JD#RVt]*DgFcl?d/j?U@9#i]?9?=2=!0?PuY)jd2]C;/ZDJ*Mir^cCg\q"[oja!fiaNW`]?sO^`6M"rupf&r/d^j %'r36q('-9<DZNY,/Y7oS`=V`1K*9GKHAb7g#qtdWp<%;r0Y@+9MMBdDbT8RG9eKEkl]PsW@/=AA#2Yl@#n.CBCs8^n?lHGQNdtbd %%uniPI7/VtWR)W,V,rlt$dXo7N2<2tOe+-dUGG8h!*bON)[2(7j*mYF!XO9YBOq!2a5+q6;mj;UYZ_bS.V2kHQ>61@&6WuQ%W=%( %SB75anp:P#!XBaZfB2_=3fO/XUZW4DGekW7O()5`?Dn#LlP<b:J-f]tR5RC]R:-M9\Z%G%Xj8>\1It=m7KWp/a^G0(!Q\uHJ;8Ac %-F)-3`$fbN19H<&.n4:WB*HhJ993%@Es!X!cBEPY]d)-*i:mU:^aqKrAOBO&6+G<fZ8f_^!o!nc*GWK:e#Q;.n[3=#B&f)r&mY]\ %"sjB)d,0MRn`K=S1aD.:)Tu\?1rAZ?PZ&FKW>JK7[N<f#Nh)']kujc?`7h)Z91TH+5JV+MX5"OnC/HHJSo?V\+0uhnKKZX#Q]qN" %Raj@gS0a\(7Fd-dH('/6,*=)^,/Cu.Lrfi$?#CDf\.]V'@nHiRN8LpE+71DrW%^#]mIZ<b.H4(e":jC$7S)6SC^<lGQ_h]a#=r`8 %7jsKEZs%6KQHoOB&`OOi`Q74^)i1ScGX]`BDce:T/j^go1=P7Brgqp1_O]o'RON?+Yf%q.rS0j#YK7`Y,9;<^SdPSNCcqi`',OBo %VSc@6<_H(`4*b=[d.8=nEB$%C+aWpm:cd(TCee<FRbCTWL'9IqRGpmKBnk&m8p#94UCIA?j3!;*W9Yk)C7E4EP=CmTf.*Y>jW2b> %8%RN8LtN@60!?=NSY;@J#mJ$Y2<K^+VeD$c)A\ES,O+09l\.cKn;Ek'8IP6:JE^aDA9p"88qVd,9PMS7';RK('*J)?OVkbdM>&.p %'g&ZhAPT=/$7FSRc]f[V:RLo]e?p&'J<LOiK-ISV,KASl:pV]q!dB.7OLh8TF(hdm#\sE=!/fk+ZDS6cNDjR,LTVu*m(e:qNN_ht %1k64N0Ft4e2?YO,a&rc5D>P64(_.qIrY7ko?&56D:&mD)cEpRaqTCB(c_,)Fi!Q!OT+MVq_dk#A[YNrXosILuSHeJK(js?8'**_a %>gOZo[!d'I2khkh&-@cC`h=rj`XE>r(Io'+TRN/FQh0\YM+/!6D4:N"9W<&;1m/PA8muld?lTR.F!#NT$gAKJSNM#:QI@U:]b4/" %&F!nB@lJ+%Q$<fA+L()^n%jC65hP#Vgm\8K=LfA5@&"^,]i$ROQI8[Ll?3fG6@a'BBN=%]K=thuqTXNg:RJL)6"b]akTWmB1h4c] %KT"1EcI)Bs+99ugM5DUC*%R8kgmu8J/87VM1"(pr'RZGG;IP<JKF52jj?IA7\XLT1'C_GV=1jfLEpKfk;i4HR*brc#4)@\q?Ee/m %,)m`&LbiFAh4KRDain^Ha?:mp_2+d+n_N*CIO70@:iX2g=drW'$Cp.c<-eWZ#Z]n11g#Z6i:FIJOC0?O]`HKSQ<_##"W^@q]CVIc %1gp,LTaWX_I?3S6HJ'$".j8%rXg,lba?Z+RHeB!45sPnh'sUGTT;nbl'Lg%^r*%tuOXf$>02/k`be+7\e@GX'o,bEBcmqOMBV[4N %Zpu8R"iZ0fK!"$I\CPQE$rii"IPEROS+g)(UNIR@(=`$*[;,$gk>P(h$(#,\WGo:m'P]>Y,?_D_g42#4'PRMTR9ChHD#"!_a5Zr6 %\McjgXBRKJ/:Z&tSeW5p_8;A\\84ah;6e3`$5H$<fU*!P(b(IAE:5N<d?(rK+rYDah#@9J`k_3bf;<6"Mj$$<:os+6^%dUqJ?p#4 %GK-!qR^kBhO'D'j!gslnJhrLC4]07V;h4oaGn9K<=q-QKF-Y:]%0T!Q:3FL^Gn(tP<!`KZGtjIC>6@7]%(0jSH9hA#%Y-0Kcn@8, %e6Eq6iEE$^JNBVnX_&@JgpSRdNTcK6kAUH6L-!g4<QNOC-ln=@53M>Vpe]YfI&3286SYO]Js<C05cdp6_=F"IX\`YA6.f#`*/Q+W %`D#oF*E>()4]+^4.e&T\pq(ZXGTY%8FIGJ*;DDp(,5V#<YToFQ4VgEk-RMTlcQu5%.6c[#qle6\LLduN/[$;b@'0Ndh9A,Ra]r\l %Add8T^`/`A$0*8%oYARN7INnMr8pt9ML[+IIoe+[%CtQP/^m3,:;cd)KU)!9!m@9sPlZanp@`$=Nj,QsBMe'(\:C74U\&/ijCN0/ %Ql@+_o<?:952sV7P49-QhBVXM$M$#1Z!`DC0;1u"DtiDj)#F9`,J:Ht]/;@8%AoO$L6D";*$Ph`n%_WB$.NET5!8)4Tj/3g$ZdGW %]&h%eS2i0?9ZHF)WAo1h[SA8@ct:M9*mIgTmLF8HUK<MONrt.S^%U,BXb&Y;'cI9(BPFFS*qhJ+Gt(KC*e7sJpQsfG2FDEt3H_JI %f&0)]8eI!&Bk^>)I$+coSJC+o3+CL+F2oK+9;M%-c_:5%Ph+Ia&'PiCmK]t#$=hN2quB=e/@h@9m:0PnC6=f+61-6<U].2/a>+Kg %-kp3VWI!3q8@a'2p&4Vd"1h6R]=SaO6$h(Z:[V5TN+f>p*G;,]q+pP&/[:lQ-as;j7r3h5m:=No2$F7+L='AQ7@pUUOER)_\H*q_ %r'WlDA/.TS),OK:&@E6NG5'$iIhQ1.MK!YSrCt)!PJQM.c(nsS:2m\t4JY#k7_s)fS]G&+EYXmY2%G.I%;D7J%rsYSej+Wiom(6d %.u)bgSPlhC=@eEr42>TB[#[=h6*ug?$OiP7jQ^88+?c_fi]&2l.GO4T$tu;W4&+T"BPj*aF9K_b!=R_fQ.m9$=8TcN0q"H&:!Net %0F92eR`p.u&MXPZ7S,RHJgT/V&t$=*_"igCNkni]N*Xe)26)\BRKER<$As18O\Q]eZ>b(U>USY<;+RuU'%1V4aWfIJ':TM5`0o$% %924_!q2Mh[leGS^!K4iu-,]?_B7CC(`nN=lDD!P-1uSA3`&k>:4mkgGj#iO)$E6hTY;QuaDul/Bfas[\,@4iP8V05I^LBQbS&F/I %JHlF<pHmrq,Wf_M95Zkm:E'm48If0Qc3F@FR0tDaR@4cKEa-SmVMcjY'![Tbr9&\P0C9MZNeho[f3fXL1\?VJef\7,krXIU@8DoU %-!8"GkCZTac<lcDUVWf"V&_![F(U.^&=k4.b-Sc*=1)2pat05/1$Q,Y.L6ZUk*O;uXtJIan.I,lA=cGK<QblKKrKWWDWX*m$5%66 %*Xm!h%F;Bq4JJ&j/I2D5k+Y.oXn%aPh]c!kQH[`m37A?W$D[A9J1O<i:"?=7I^ff:(+*`=-5g9aU26B4<O1G5:=,cqOeNPG.*d@I %kB_2s0J2-(@D^T4b/`iF!fpu/)%=:e#8s0OZk#mI(NB$c&iD'I8Y,D.WgY&D@%9bh9PR[3GV-pe&=b:o)7;E=qPKipQ$B)^dI=!6 %#;ous]0V+#:a2gm:)iTB6b'p.OHnGA.j4n@JF[a]!7LrC.4#$'hB;:O=BRLQ2KcJ0WsNOn-R_5Z%&<B0^BEjO_"ltM-Q+$4K<K/% %!t3,!rPJ?is/jm.`MT4`3\CRhP:bFaZ>;\=]G9fC0rTKLH-pDm?"'<g@6Hmogk,X=&T%RN&X&C$kn;@SGfJ&S\I#%&^k*5$TqqSh %s6JY;.jR##i6d/H1Bp0[FDMdI^l4AWrb,nr)/Ha%IURa>5k)ipF+>Agn#)NR>3%q5eq%Pa/rMi022fEm:+]+-lGe+q&4F]QW-Ld= %`<r^(A1&T-@YUQ_qWL`k>#;E0*MFB\;_`QP+cOEaXXuFtQ1h3RC6YTj>$&!Td4moRDLk_]<6R$"&Hg$TbuWCj(aA<ic7ha$`pM;1 %2F(mf5bqS\h=rY5Lfr'SJ9T``%Xk!^#hkX7C9i;mAqBe0":;Sf[Sh(%Gp-^m*UR1^d@hH(MS_>a!2A-U(($'p?kReHNihhBQb\gm %&IE'j+^UL&.oiG]WIQY6A.0a"a5nV)&B-,`oZc6ISYZtmBrI!2./51C8Q%IX/05H/i39o-6kGOj4Wb8t.9b[GB*meES4b[ketE-* %;'aZ^`GBd*,&q<NH.\.t!98t=V5%WTUB"`JTamH/E=)*'_$UBa<'X3Pa?%\5La`lAB=AY'dJ@cMj#GJ-Bpk>(GS)XTc3frg0h><O %$o"qm6%XW(72F7X%_V25#"e$`'.20V_<hR65jJaiAns,P`&i\6EJD\@AeIUa>R\=\c);tjQ%1q%K;V/>g33UK4!k)oM.uoX>kuVP %:fU?oRJOT`YlVk:d;;=GiPaP_b*r8E&PeO&d`[g+$6li"/LlN8Ip0((&mESbC.<kN;EHS%78@>NP4C^iW`bea[O#EV14s.;lf&J6 %\Vu8%N-Kb!8rZt?l>j(r96#,9buW".l(%!!HOpmTcks!fktRV1kuaF&U&O<o5YZ6ml,p6+(Y!6*QAO;-IN$"(k<Tt,[;V)N2,="O %ipfl^%8sH-_$Y^=-qdX.annH@_>o9`lVp)A+m=Z8hp;F]!/mhZDaB'%:M_.[D3^QX\W9,a3ildS#198iki6Xg9cRXu"#o=q/e%ph %GnSM)q5BdTTe9MpJcT>GpT1u5h[LU![^8=X<ioF?4`,%WJDS\ra9`5$"!m'hP\`9uc3:T<Qqa#Y>=/)B%$#am1r@]cbbOR83odAk %nKC1"6Vo+@CFDN<F!REV!gG>'83dAV3hF=R&tq+&%O_Wr"JpC;Uo4)!\-f;pTq6)\JPDDkO<#jK=auGgam6A!c]OA)``75@Y\-'! %QN8%=YlbsO3d;9`1eqd_eh!R0EFh)M66^Fq4'!#FN!MEZ@hU$R`Sba5U%pg-!?TB6]TF(b<#p=Y2Ao/i^Z=e]fk:bB!eV.0"Pj/g %&0$]\b[Q>.9"2e$(O.3H\`c<_]O?U..olsuW>2ZAJ"!XeUe+[[/N660QtG(q=.?,i3pYOhKO4jLCoM5G+<.&O(s>Ook,tlmAX`QL %Z;BA7YaQ"'QnEptMs8M)a<su)9qo:jF(qD+V^@=I#-^l@82Fo:D:)!!JjslJY/1K@N"s>*1+%:8Xi$Srd"B,naV:K7*I7hj>;L\Y %i?Oi.:6WthEl!8/q^Uu"WAU281<Mob6"1XIgLUdiOo_F:&4+t\X&nCVW+A?'Ej<h0i$;'4G8;^@UO5U"8.<2G88.-B+.X6-RA7$+ %a-LVf=E=If/4GD^2(&L5V(6_pFpgu$HY;NL-*daur=F\h1T6\%J+m-.jj)E#nRN6O%eXOqZCCBSj966ag1#?e@%]M^9k;dN(]BR% %*#00Cq;ULT6Sb3`SQ@4Gjr)g+9_86oXeT:7&dPXnSIO%l#T&_r3?ZhJcQf)Z[EsMY1"jt:^eO0\Z*HoB`We-Scn]BBg2Al:#)b/> %TX^?-fW>oK)oERQ%n&CeX!'_pZOU)gg&TukpN=ci>I.]`kFlSn.-hb;)rfQ*!T0rI6*B;[,-9(+^M"a+EXodR_[R8-FpdioW4s$T %OIPL*B"3kdhX%=\Afg7U'@/Jd-JQbi?XD\")t5VQE6/;_6ksA^U7\[$Fs9=bYXk^J#G>[e'ds:]mFa)-!0DS=V<?=H%@]19CDi]i %mj<G;1QFFr@eS5L:*s#hfb$AXaPfNpM8_G\H-'Gr,h],*VX"MGNM_0PddN=7mQ,)bqR<CL6B'dS.M#]L#=bq(Wp[e'fUdm`j^@&Y %l.Y9-/r1Fl\@l*s_VT(8&:H;.Gb2;KX!L/C[82\QGp-V#m!Gu)M6Q6&j;2A-L*PVnUR.Skm4:pLZmDI@L=A9ue&q`uddaRU=QOlq %0SGW(.]aC+aO[2l8>B9mRRU^M])X-OG\,m<5pX?+(J-31BA\#A>)`D*o,.r9`V=6>/57`d^dIJq"0.%jiH1EabsYhF,@ClBC-gI+ %TYcf;acJ;cnm*gP7[Mh3\[4[+KKL1fSpD/q$cSKjc;grmq^lnl>ZQRkhGK3K4Df_2[Y;NL(N)km19Qn+;2kjN`!r(0g%I*\e#$H@ %Yr2oAbu4fKjO,ccSuK8g.[`^_e0*.F/160`!(sSbF,N@9C5/*P&n;lS>8sDJ4]gji#R&5gYctg!0U3YM2oTGk;WI;sp97Y`WEC#r %.`-mbA\Gs4jl";J:DhZ\?+]\cokMXtR?Mr#FF7EPXH-[H*J#-p6HMNSE=Drp9ekR2Jin^tI;"U40iSu!&:sAVBE4ADfG7J>QCI1@ %Q4u0Z7+D]<Z`[)S!FVc?ld\Q/BN1mc4*\-[hQKHr(^;Bhdq<SR=h_$YCL!#`WRq;Trgp^uq:b>P4)X5b]_MQL_Q@CCVl!3?[WD8[ %3`.W[PB2r9_cj.?W23:2oa(NBaF-XcKga_4Q:X;B/3TmlNQ+Bs-sJJFL,H5t96O\"IlfqWN,?S0EQrUdB>9"lq&F[3J/1"&Rm'au %Z>_u9gWLF`Q?J&f;>3Bo$S5"VDH&`7[UkD=rj-f%$;4#M1sQNr;;Xa9$(-Jl:S=.t/*`b0FV25Y]rI53>qimAQ#$Uu75UJ>Ylp1< %.bZ.DQO?QAqedM<$%>K&lt*W%/*duo*s,%Q7X*h&429!>KHPCf&iu9YMBtED,q_fu38"_ud/_??oQ(#:\J/OPU#qEdR3KKGWPN#8 %r<Z+O,H+^kYu90/Xklkt&e>i8@J82%dXPJ<)"DgL-^0<k;UN/a/PU@rb3daEq$R;9:/kt.fX_6dPoCF\SP_nU,tQ[*873tUOCoj* %\uN*6"A+iN=KDRM2Yr]8h^l-8N:ESu3Mbe=_[lJO]*!KJQ6/T#X/pK[N6,nkNWunN>'&tqY`>I]f>)-mR0+'LB_heiP0t*r*SCtg %cS`m:ZTV<nhjR+SDV5>8,!'h0d!@Q:oe]=a(ZAc?rQW/SR0_]uV;[MP*UJq9kHo\`D<j%Vb$]q-es;a#OX^<r2Wqlc/g(K:2*=Gp %Ad]N#%ukA&S[VGo&BBCI"1fIe%pJ@GMbOW9:lCuQ0EC;jMD_4]P[L!d?<.s'"(fSTd'2X49Eo#?RqI>?4TAHpA`]1[F]VE>FX/!c %bY/-$J/Xq9Hur)"nV'h)A6J@k"6C_$kXCj_NYZk?eJY/T2DFQkM[mk>l3.-gqPU">>rJN5(H;k39*XoXBs7r66.%r?f'\cV"fJr^ %B.mq58Zc3T3O`PPU%dl+fYM[)OW/8h2IA*CXX9/u*%uDN7AN%Z:oI,]Xt8:"KIIi!^m94VVKh<PA`p/O3\;(>[o[=<RG7XuEdt<\ %d.5/m@cD@6<J61/D(M(m.PJf7?A!?+;<=K7:P0t2b!JX!_t(pN(Mg6CF."%_#t5*&FbWJ4!7OmS4fQgi;U.F3PrY_0@t=ZjQptqb %L*%p%b,[eC3]h1n5fI>3d]G2(?0c.LAo/Ngj[W5t"2lLQ$:"uAN\l!fnt)#g,:kbMc]d"Loqn!toX\M:E/JnsoLg'nZVg6o@LBF< %Q+4$#84IBo8QNOX%C=/n2#'k/m'6s3%P`[.YRG8ik431fO+WaNng>mk@<7RZ-\qe_/J@$j+Z+t5-Cr5[.:QV4C!o'W/u,a2T+2)3 %r$iVi_[dIqV+)uf/.taqTQhhD_(.H&>HAV=D(DHM?,^P6Ch5>WI[pq:MI7$=cu+l(;+o9D(/-Ei9g;Z180ds)RO!;142C@J2-E2B %(d>>W:31I]Uh-`'BF8lc2/b4op8\JFlY1jErEJeiMabt%fBYPEZn!sN?1naI"pGZMOZY#ZYJ/iDnTd]t,]A*7Yq:it(LmHs&b8Cg %>>7Sp=TkIp6;'#VKLf+X9uKZ"`30RE+#UAreuSpgC8#1ObU7SEAi#8kW/WiO7srut#mP:KD8\QC?1%c&d-r+`'-I^A(<T*9R>p@D %jom+:Zq;p."i[,;)1WK`Aabo*JV5)92;EtU(P:>:\Te]93;j+ln^Si2aN]E$m.uYW4&<2o*7NL.\#qH4AY#rG3H\p:FGQ'9<43MR %#&d":o,(ki`3P*8BRkh[Lm/TZ)m-nKrDaJR$ftK?4mEI4As>lmpGCXUDl`H?7)<L@0q(Btlq0iSl\m_s8,rrZdepF1.!6;tkEZ<8 %C,OZ-"JaD1[Lm+/)L!@N[LOhaPo!Yp3"*=VF#6rHpJXm!MZ@!Hc,j;J0WM'Fd"iNO*1Hb-i8DM,BHNFT+&a%b!oCnbKb?8!Pu8a_ %^n#.NC\RtiU^)fiS%$q"A-I[qkgQCq4XW210grO+GGL:N!K?ME7"GdKfibc"NCJlpW+"0^>t0DamJ(3q*apQ3)fQ.t-_"IXEVi35 %GLT'(fKMt^!/tjD"9ict(dSXadRAtVZbjaoJ7,c[3a4EuT?+@;N87`dD&fe>;f]'`1SIM^EpInuO`<MJ7)a3fEo=mS#"_8f&/4FL %L48i3mhKs<4^l`9&TYf?S)q`HA-%reBN`LUR]+,%6@.d/7+"K1!](bGYZ$)4;Q[J5eGujcDL,9G.$Xql(fhJe#F<t$CGE?7hPc5N %9)`$OHqZ<lAt"9_Ka@&t*X^@bU<&A.@XMM_/e^Q/9Y+UWmig>bMRNt?TD)PI$!O4RlGt):$`R6PHY55)FtdtX-.)$eYboD'!?h]o %-a-@r.F)Zj&nd#e+.G,t-q?S,]%]$6)CYM#E"u>B*)I`sjV"RloFk?'&fMS2V'WudClUs#rCpMGbJuNZ.U?gIK'^sdY[H@?@mXAB %=Ao4HKVA")r0X(k:&B7[[*hp<)0LRq1Q_8_W,3p8/,+oNTJqX$>_Q;9e8[!hdV,nR\fJZ01gOsQc/0*'&LkS2nh_f@f6>tlgX=3@ %=OoIfcRKoMqJeU`&9!G9;Y\kL^5!EHFDY]p!G9lNKr..nR,R5=?@.#G0!l0T(%rVRBl"_gHj[qL-Sn<`V$O,mXm&FMRg:0FLMgV,+ %ppqlpL^)V8lcqk8XbPs)l7#\bZ1_oY$j%1MP:'#@<H#DdC)is7\$X;Gh9%.aUIZNpI=b9((FQOk5pU"s]LMrU.&<4,q@4*7$he'1 %L/:RjTf`cak7gn>d$(ePJO?3`&Og]J6cbgZ7AtQd!k(R)14`48o(AZO60O3Cf33qFNOXu-j<<Q#,thE:Xq!&:5E`ZQ!qC3.h%G/T %rf.%r[H+"7Y#-`mM(/]sS4#rB*_D)CK;8f9bIJQ"7%AqdAQ&+g$#Um/$Wf/'`f^tOg8BR06GTfml!dbQSRlRt9i"V3Cm3W-?V)h4 %b#:B<OkHFLLqV38j=CNj$*ETX*nZ^B01FdM<9jr:!:rf^i\Q0*GYB5T&B)'im:MfZJ-XTS7*/Z)W447:-U"Zqn4D9J$a"kDedT.r %/a&@299!V$ME*?e##1J+[N`+='-(-_>315+,]g7FDO<,4.)!`6Wg44;\hfh\q1t-S]CiWY7ZaC`b#ufU>SmJ>A##k+)0jUrq4]UW %*6^-nTO(R%_]/@8oI[kNblNbHSIJ:2^`1U<P^Mo4UCp`J?]e3(14Z^*oZ<jkK_&Tfl<mR2p0CdF0WKO(fEY"<)u:$JCI\RRp46?U %BblORDh-5p7W`DJ!$F^g(It/h&0]c]`s'F!c'=9P3-J1=7'q/5qDI@.brI$\Fi*hP@lIi+.om7\kD>ok=lV(!c;!;YblPClU8V'o %?^0#FKscLXb/gt+*-r<4e.JJ1&](#RP:;3lD.Q[D&a2DgcZ&#BKY^4POV1E,fgj`RD_u@O\D2o284ef#HOQ_p?'9jr5au<igl>=0 %%Lf?tc"1^mb"1?'@lYF"=i"gB[49s`#-/<JXEgA%SQ.BrgHJbC&.4PpFD-aDOb&FR+Mn#TLSt)(#:g)_R[V(<>tUdL&u6Y)o)S2E %n5@59-%a8&iaQ**_5qLMHE2u/?rih_%/CiT\IP#V:qW=_Q3$"!b:'#mD!B?AELn#,Uh&HI,,o/eike5%B@7npf'S9ombe+7Zh91$ %ZbWrP>u-`S'tZiF6upPU2$%1Hm>1)'B/c'OLP2upW3E`"!JW:1#1(Unjrd)64Fj'[?)*ZaP0i/.#4:>6r!*sr$5VX%BUm3WA?I2I %b><bk?9>X<TOp3*V_.OS<#dBM4`i5,\-+u4U+@jL(YifM8DuBal^a_:JjK+0M4Alb@0)7tDAI,o!Ws&nZiu$n70>AFVJ^*)N./l7 %Je9@A-SPgHrWD0<X>L*Iijt7#;:UQE*0<;hMa?_Eil5Gp0uOp1"DH3*TSOMaU-mokZf"$G=NfE.Q\cLlqF#'H<`gef!;'H-EmG#\ %99C13%cj`.?NiO<,Y_/W+ToZZM33,J>?H[[b6Yu%&j-G`+H0#0\R,)S8=(W%TVnr!HEmNu>(ABp,^?ip`L)fT"8t9(o\CB5EEFM8 %L`rNbM-`J1.<ZH"cLG6D-gT8QQiW.c1W`h&Bhje:WM>IJm0%HlYQ.A\%&-U3]m?qK<+S#r:u`R&nuX:TUD7hpMGP^-6!TP4Yt:/` %++^!r[9+-;/F@iQNiW(gS<,J\&k+.N<*TmX>;K/4Z_IM%0HFl%-klr,En"WC?*P<LRLI#>%-MeX!j?HQE68l]JsjH40bbnP!=[6m %[:N=6V206\XMpCA'[dC\@a9/QKra(=r]VYu4d?'3jY(QVZ,aeIE4o/+3ARIth"-80/B;m"'P8]@0H"1h4doc*&g.OjIU;3F!EW,: %6^!.\,d9(c^H3+/d7b[O4;#]>+XfBZ@$M.R;O=*bR4MVB=lj"d(!#VlZN;^b=ScN$QLkmBFs%6"kt,^@$613KffmK6;:gHQ.uOi? %l?]E&=iVE9JjE?)AonfsgaIl!@R]OaGG)L=7B8uBh49(FUC`d'3]>3c+R[5i6+%'`YLXU9G9$-5ffmL!%mfHH5FKq1MQeL_DQRKd %TsON);bW]N(!-?^>r$>(3W(:#+uFaK=ZFH"/.3=YB6[P]josm57K0Bmo;iM&),6E<=nl`'/038]Z*&7+ohKW6RbacK%mKu6>D%f% %CumQM2rQ?TaXV(OR>p,2Jg<q>6N.a0<##:pAgY'XF]bc=-<!ce"ao:[.l\cZI_p3>@X8IZmkGPi`.pPJYsUDC3*_nt]2:;],1JS? %jPic<>\ElEZ?XN'^$o"#>$e85Rc0Z+W;IC#0B(/J7IaE=_m/d*!ruui'#:5@fKXXL2^^8,#r^B<-09g@1HRm(?"j^QM>"4[,*g%) %Q1l\,MlB-8Tl'n;B.&ED,2c0V0rJn@2e`7,2EQaVi^Zt3RbA2;4+Tq![B3p,.0D*rlBJ)P:EDc:-)kA,\mEj,'o5^<:4>ZEoft*0 %'N*#UH.>bPFH#jN/iEL1g6%u[.b'e\UQRuaG5hOST]MCA+3:fejMje=R@:<mUEdqMaK_)3D*^chMp7QFd'-Y27f[a4JuaPXS1eFa %O5@@tN%K<D*;cQ^d=?0c4!:V=-uMHKAURokhH.0BQ6',=IN\!1!M%NpdmBGd@J0t/(c58'>$P3#k2>$#M0_,r7OleM&9b.+FhAEu %`H?pk#V4cE$GhirW,d_<&5LK-PmIID8W+L"KhN4KM[I_1nJ]<Jfs7Sk@7?pC]"BhN^?AlUN:eSC7$1<.>5KIIO%2O@LSjf)++\TB %m`u><i13eToEte.X_PE_FpY-[N^6VRZQ)PRJQ)^`7L$g0;DA`)@`X/lO0LW3q53-pN.he!8s!N_X@Sk]%a^FaP!9d&FsL$bGqM'a %;kJa(Cn+o<&mCruQWerFh8"o"ZX]*e-=Ri[#*>E)dO,b8'bMoTR0G5TV&8JJdfeqejD[]I<^dB`WWm3,J%gYr;Ad[4e6@VoNKa/q %cb^uDZ<EFq54>Z6ZW/#);9,*IMt!2"D-X%s\7JC..>Z8+ZSR%bbYZ%L\X%"(9lN"hbclE+^:+iL.-=h"uZ9fqX]po+V':Oi`=H#I< %r(m\Zc:\jA7Gh$`H>_&PI'`l"c;-o!OeP#@[gP,O9eZX2>_IKXA*#]/"0+5WSlTnC1i9W^U35ZHI&_9dTd50-bm@2tm0)ur:s4Z, %0bKRk5:>f=a-?\kPgJ9]D<SY8Daqt0:+lc"$YL)47>fMt%+'U@H``%1Ggr7uB*-rVWFR;ioNJ%%J0#gY(d=B]-/jM$>37[UrFJ?b %=.B'I,VWmH(0222bI=bXROICAECE)=Q#i/rJs@(4fueRE-S)[q/7SQ(Vc?q1;97`+W_V(];L1l<Bi](.oX?=$Pd2,VBUJindasZW %V+j1=`gJGFI4piMS7QJ.NCTb=bf9.7<"NGUYV7@q&huGV(N2C\)l#IU0`tq.BoNm$@!.hT$nJd9?BN0CSSUB(?[#LcPGj"<]W1KO %*##Wg24-cm6XO7[0(-;O4ji8U`n2!`ctGBj1NBuD@$!,.VC#KKa)P)WH.+tq`^HL69"^Q!i[sHCkCc.5=bd`dl]Mh$=;5ck%&$#< %&:)G#g)4?'9QKS=8W4:;RaX/<)>jIKj>L<SQdG:d::-XghrWZ,S+XO;<PHD=.g6p#i@dV\-"9W;+`3Oj'ZFlYE"gEh10m,-X3md' %1\NN5i^*Gm=B[O5I(e@;4G@t$!*q,j1$H![O2u&LIoIVt:cpSBJ#I2G-S5^h!=FAB`/>0Y33HXL8m5sf`maZUCAN'>.cD*jZUj?c %'rSO+Je#R-5IkeS'NnEg\SC[EW^,N2A#[asbXJP`Z3PS!]].?Q,0/ABOZ:rM?C/'`mh&'JPrO`0#U7&b`a,t'O:9J:JZ$Y)=Tocs %QENRN=fBY;W7=Eb:)"iTHSpUb4<0+0*H6s:K.er/>0,F^Ruaj+>.ZQ0h5T!!!^3\+Ru"(#];Y;SXSO%iP9/&#Hli*pfl1]5m53Tb %S/G1-:>O`a)`q*e$_l7;9Q,kFY_5q)^*"=)+%\tFM+;WNi\\bY=kuN]<(IVEWKbP&:M=N!hM&s5F9=L$O$`)N(Y[UBe\f0KW_hNT %`!\$jQH:rEFJJ!@?7+SW91LhQ@eu;9E+U7QV5[(Wl0e/h(5Z51?'Nb>*N6>SZ39K67QNBiU&ZKpb:$77>`#pQd#`E#?;cE]iD^=& %Rk3`XAGoJ$9Z0B@*bi$_A*B=9XN7fO+r@*cYS_k!D,i,oSu]g/N]>(V`u?$T?/RDYV<I9I/QQ!^Cqhl\SN0KgBV-T/a9+7d4ST97 %B&4BYo-PX?_ak5Jh9L!'BY.JK,On]6=H4[XpM@.ejX-16^a^[c/W1p.!+$<c0,#"Mq5JYU&q(\0mW<QaVR)paI0CY"0=>]KU77i_ %eMX3<\HXj;647,f&\8qd)C(s<agkRsS;-NnY"i>#1)ngH#^Y;.^uQ!Zfi5MP"gjH#k*MJ#/,$5j([qV$\M4@kp<h$[9aP]6qF4Fa %&G7H!,c7;J)_4[*8$K-n1oSEKn'_bN29AmiZXnXCZ^&":q0S>.=h^t-W8kRgi1^t,d?%+Nk87(^cIRZfZ'3hPCeXn$'"W$mZ;;&U %acuBDLi!HY:g.4X0%/2%J-GLI$!!ag2L60GcJ5YpisO'h.g)J-5+?]-Kerm!1sHa?b9Y+6Fksr-NY.Y\&.Y+_#sn\p%U&dq@,r=> %[%XiFq$#R/>$7(;_$H0B$SN#(jOakbkgsi2O-oWP(R8bF!m-nY`qMhZ2J[Y7QB)_o(2r:u7/ei"FWs]17[dkqLlic)e97]mW(7]4 %GQF?!DojL\g$n-1bPI$@91fJ-R8Y)uO^K/G/D7r%gLu+sTaJGcW>aG&MI,gF/4N26Bl[X>UXEdsAI)\JY"k:X$t-Kbj>.r(hkWSm %I@@;q6EVHU6];/DW6`s?``Z?%[>I#Y8.A@_7J>#"OFU\s=lnGA7]JRR*,GTkE35:_hE=RlC_8Bk[TID1J%3J7gM.+6[2\S>0t1>] %pKF_(Xk^P^n3+5OFut&O7=L<j^=CZhl4_t55A^!M[X'7oGVE?lSZQ5G4V#tB?gAc:Co[eB5s@g%$i1k^V]Hj()DCV]<tr'AW]YeP %qfF;9`N]q%"!D$.Yc"q#RTg<TX[hnEa7cqTI]Fo:O4gbf`7Sg`CpdKURQ0&]TmI3GX[^l"F6jssD7c4FeKDNFGhd%Irkmma<hoF2 %"+$H=^""OGa+3&VlYgnQmW0MZ3ZHhdOtA0X?M1s2Ol)r+SXd/%Mt6t_IC31F)4Fh/4s,*O^V//Rhr;W$;^5t3r9jB,"XEd0=a\Pp %^%I'9C(5!e)t'sc[[AB7fIbioS?;M3G0B+k.r21S[afQ5a3NFS'5k3![p,<UN7.+ElS^PCX$+,?Ek]T:hJ/0k[GC;Xo=+Q!>J5gZ %N^cJk4mmrs4W+$9575@9gFfH57bemoXlZ;A=/D7n>UsFsR2*l:Cu$[P>\`O@K?Z)M!Y#k%`RUk1p2DZ3*WZ]OYMl8dC3TmnHpI+4 %`oPfZ6'(tV8\V.*MW>]pB`rXX@(24KT2s<YU'YBucGkGN,LY^Jp_XbL[/:ci3%"<@'Jr+e)1=4&YnA[jEt&P!()p:)Y,K<rm_WK8 %DH]Fp`CgOo6/RA%l]X*7E9fV1G#XZ[k%,QuhGljI3;+)h7Y!H`PnWXZPd8^5K)5uTX\Q]5pL/u\Yp`;nQd!@d.3?o!Pb8$'9iX0@ %'RGcQWKKLHI5bV<_TtgN3td.7K5rB'HD4_M8<Kq")CC;[M4bCBaIkmU`fa;`/7]7q=D\2$CQB`b.F]?EjQ_m8nLc9O71h#[TZ3U- %=_RN$QAeZ.E$#DAmZG+,VYt&D_VHMl/"lJ8K.fiO!j/Ki;a>hC!\L+D6j#i3E!0o3P+a4Y:P*Hs3(LD\"`4g%>Fh#_N(q?"[$q,) %UqWK,rPG$u4aN@3dBC6APR5DKG:Ebr)AhNJ$%`nl7B:8N+pd:>,Af$eYB#g1Ppu5PQ&<khcHY5=E(/fqB[i,SRXe/gJa\^2Z%d.: %e;uu1/<f$.[$2CH;Y.X@`CP**1rY2g5[=S%L'0Xo>g^Onf"[P6O/V^K*Dg#3-A%N*=aa"Dg'1[`8lJJggrlY?g!&n-PaRi_>Xq[[ %C9+:2Yu&?79!6s3NsdHo81>[U$k(<d6CF:G7Oin3)fP*9);i3*e,\RbU&aXZQ!:W\Fp5NQ;r=A"ml:BV*Yhn?Q*!R'f#)8"_7':R %gick=5?PB:_Y5,'>E<qTl^GeE811)2.Tr._2JB`M=9ri(-74(iHC:IT8ODCj.a3_55U`h/&^t^1F_sXp+#<'p.RQ9_TZs/_2)M*b %V+WC_\l0e<qKC;Q/54L.HZmT`NO<U2hQpLsDsaZ!i#[SlO)ipRL:4(_Xm0c8,.pE[DUYfD'_+=YRp,VZNE_s11AXVKlYEh0K`[=& %W])-G'CPN!A-$pDLHhFh)e/m1lpA0S[=r?O%Df/,>JY+h_@kU>TriLeFpi)D2)a!ST*T$]ok%-UWuZb!<iTn!1Q;OF'4[U\kD_Al %'+*/4eJQm%[7TIgT^\aB@k,XH=lC-+J]Opa!5HPP)K@'5b%Pms-=UPtWZPm[=[FBmC1B-ckK;iYSgS<:I`%iW'onM9M4M*e$s6-= %_Rk>m2RC2r$o.Y4j9L9O/;*X?&/mPI[QDY4=ePAf1mgWaWi*dp\A]ZAl47W<eVmX8g\-d3ZbCD=Cf*8M9qi@(fEA@iUOB*50>igM %;?oYk,r2':#'@@G9kBn99b_r;0GkV!2[I+h9VPJ.>6BG86b7O&"!L!XnLI8$C+DppTl+D&eWAeWJr0(7q5%7%_/.RjRMEa*Qi`0V %Y7/ZpXb0qJ8QY3>-Z?E`[T\>gD9%"ib\]9&<pTE"96[F:]\S%nDJF*tb.!f-pKIE;]n3Bc_gT8=<km^us0CJ.&^!l)`/#01^W"'_ %>t+0rV[XZDrn-$q-5b'U(?CdXHd=J)\g=e%SpNBLp.`)?qek<V>LgT6"`f[0frCFJWj$j">m80.3X8GU4_7(k`Gf=oBdGN*LM*d] %+G`oE6jJm@(bi<U._#YQl`.?$T^JSpG!b-D_XEC@H&JVJ)9.?\L&f[scd`.R6f<9#_P)dWfWT2P6n?DCab"LEQ'uIJ:`$fUeMn:6 %>]SCKKnLJuU*UPFhdWFEd-&Lc3)gqhkO>KJ1#VF1T625I"5gU)k.>5/7&Via'T<3n(3DQ1&QO*#:(ku_EP\^(_U]F'1D$,GH@*+$ %,gesD,:+RdT\C+]MhmpCJYtI<b/3aRQXJ3UO=WUG6<AF5UiJSc<0c3h-oDbY=FG>:RP<6)n$>[;P6a#IRGG`g6g/*([+mK!K&mrA %Q!G'lZ+<nP.2/mnWOPbq2T'Mti*qGq<C4Rh-UeDsc:cM0WA<F0Z<21DZ[H':*o)-O(N.FJWbF?,=L8M:M#Cbao.74.(%m#QbL"EW %M\;e&U$QAG?$3cUn>]B[Lh_lp"9r;]_I9/:"\D-u==Z0c?]-sA$q+/$60Z]j8%?#H=[nE25%u*PGPb':'rT(IdccJ='r2@tZT9ph %PJR_p#C+g#6OX!S,)f"87q//cTt2Ys),f`Macglmj!N$Q`),M[H+Q;MV@tYDT?/YMX=XQ<X-YSbAPp>Y0Ha5q"\0*NN9Dp/)NbZu %$<lkLop4>7i!<l?U/R2OC;j(;ZRHD/7W>NI7I5UrYKc@d$1a_@!3'8ri:kG\3E>,L"HRI,ncd`42?:=6HI37J"LU.dHqJ,KBXS)' %8=]H7@a>e6)<4$eSS(aJBVZ,C'*TkkWb2mD!tfPC_3s0J-/V2!*)4$e3FekCild/ic"5=dG37ZekG-Xf$$k4D?3`6+b3Cl],>O[R %m[WH_Xsd<t`.@6s8qAmSeGMaK'8Bhmed[\G^*#@"eSeo-)*5m(%PF;hk43]EHCGM\c!^PP$@D)'<nOHZWJ`aodCO6g-jW6nWb1eh %>m]Dr<q:Pe9')KIp9eTBTI;ZjDfn,/WmO3_181#ULm][VV>#%)n[/i\XB3*$PFa-=\"R[IB.k!n8m@37\a?5VXXjLJ2R=GDF.2hI %]lE5'5TN+?%lpJ]A4Nh&S6\mJpuII&6Z3N;Bn8VtU'b+5XjMZZ5`:4U5DOM@O=V_ifXauNpp1H>]SC^6'k)#4/lRD9M%u^b&-<*j %5nl[Ob_9AEc6'UNM34@'orkB##msn<B/>9`>M#]?22%$UI(ZD$:F".P?*SpR<Jht-!+dJ$+a'@":RIcRJJaQiD,s3o*=!B8#I,9A %5fJf#arF#50&rs.N9p5FY<i`tR@hh6N'ECoX</+Qe+s3jrHCHqjn/2b/eu=<.?2SR*2W#qlHZ<^q#8RXIV0h])<A_bf(75aN?9I> %TQ3UcaaINq3#&'EF2fY)9mjTm6@)3=LepAh>Ybf1PK$Tl7W7+GM<cpJ[n("Be9j_49X9ssUR<P@P<uUs![,?_`G8<T<*=CX,UP31 %PuULha!%+$98_Yk64hHp,ZSme)jbRH#&KoFc(Mgp,is9]qHL_rNDb4rf5duW"8]Y=LK(HhU8cm3k9NePNs65--g6es+7dW(9_;%k %m=9sF>Q[24Rm%HAijMcc_&4A&+tCr9'Og+I%P6D+;B5dmgkek,5Ul/uNm(`e'[j6a]ab9SV<B2#,k<rK:!Mpb4fTW;/$=mV^oZl, %G\O`5Z;RXW^"R7:J3#1%q88/Sc+i!/b$KR.mrFCr;3WJASFD\mpsO^]W!.%-5H3K"o?%h-^FH!S26aL]e#bhl.ATU([iqt`l>20k %/PhPfjUopOIp[XTR:euB:#&b>&b>9JV;F'\SG4p+7B,Nlm?Y51k8h:n:gLQnaMbjeRXN^1@JD\77kCg$A+M9h53.t!eBsirF9D8p %k?;C7hKW+Zn$fP9mlZA=l!(`%g&9GKnR+5q;X_,p'.=P<UpaTMVCL*X19.QclN"Jk^8UBC8MeD/9<f4Kc#d1!;ILulJ>ecC/8!a: %GD3qWn]hR*[JC.V(cQ`Rg3PAl'M)jU2#C@1_kcT,As_mr@P\G0;uo;8-0T[D^0@PZ"Nkg1[%L7fQ&8KT31LWhq30'A6(P6:!"-t0 %HV^)7"H'aOWU"X3lfcE@B98ljF/t:?2h"N:*-l_6Nug`c>.ul"]m?-9EF1\>qgdqjf;`cZc;UfRT%i'mn?8C!Y#\0>2DdB914[m. %*O3kL`98VZ%M9$?\FkKQ_<i[fgb_:5d4[e2)H)t@As>*786(729qq42&N6XNN=S\ii8r[)2uj"]q3::UJ/RR9(]`/G$g2>b3fChA %.=,;KpCg'@,!=7=Pr!qA^BSjQX^\4Bq+76&.08?\Djc]l+Dq>#,0UWM)EqBm+Kd7g]+"/UBoC%ePhX5W(H=C3#"3Md*[t8'S@4&2 %-I*4d-Ac8/9hX6'kFs.%0lSPlRQB_9'XGNuofrpFb&JAdc=`BNkl+dVV+9SH$a,]pW2M$.O"o9^KN\_7+$3s0F`Tj&ZNHH@A;iWR %7bLA@GDOP1Mm+fs)4gFc,B$3/edPur!!h):,Q"NWQuCF4\-/$)3E]m(S>]O1'5hVrobHc+@ajP+^$>[RjTjhG;bUFhg).tD$.)8F %:\b0m5XUV=>`=VDnKOQ[P,"A>-]1e5]4-`tHCj'<7$$gV)I'dE6p6U!%:M3*YbQAkjd$Q8^Gg@uO^PRId*6+g=!JQYMQ*J;XGUM, %R_BT+'$tu<9c]u_n%[H(NC[Il;P"QX$fJc.K%5BR%7?!QdRo0pZ/?HeJ']>C$-;WJU6eMT3Y="IW%0)Sf-db_!NHX0:_9O&T,0S= %?HOA^jKm*hV]"HGZ.L^JB/W@ehsSunA/o-^r@jLiPPkdK)#a1)o#Z2tW>MY@DQ_"66bmEIH\A=45]$GbgoO6a[?t$EZY<-P#ha+O %'Wt1E+b`NaRmnhQ3a;uL20d&RNo!V8_cJ&Zd1T,Q*qr(C*=q>"q;)ujc$ZN];<F1pdDub6/P]On/#,h5E2a+?,e%d.G)8*J="`%G %#a21d=D#-Hi#D,R.@u=q:a2*64*PCu7+l<hrj)?+M3/4252:6OK\BB00%&6'X6'O&1]#(rPbVMuW4T&3Q&YctinsTC7&^1aW7mhG %\\&J'%n^P7V;%FE[DsY+ZSLrM4.#2<%+*Qko9-._PS/DtTIbqudnJh:8SLY\.LZIW2/#Wg1,Ko9Xf(G^T9Q,$@b%==,W!\h(,7aZ %4]-3]J0)1p5RRlbVE6@`Z!IgpSB*5uY-%/>IL(r4;Qd5)ND@U</rW"E5#JQh[Afr-q'78CA75d0&NWM2(M.L)lg_:O8i2b=U$Ysg %Q"UE[`XadXi:X5*b5HNsV>8WOOu@aqP6q[g@@:(+>)STh[8;I?$8G$m]/N\RUo@-^34GufOP0"Xc+55L9i-j08#,bc'bu!g4Cr9\ %XJ7Bb=$kb`U636Ng=;)mVHU&XRCAR2&-ZatC*scO6$_C',jRa!B"P<Z%[0U:;22VrWjq4Ia&PX!RaDpe:naR]ne\]oO:qHmdk/EV %-cjmfY?shlZuL%WLuD5G6c7s-X?,s?i5MXs6p]*J6mSbI51`Fret`a+`M9N4$rL49SIlTT:uq"35M.q`UKl&/Sg2L$Z#a"ogkZeQ %`.m9Cj8dsd91HlUmT_SS<hK`+SsP,q+tUSXTYaoJ%:ZD80-+TSf@]$ID$j9I;)#rJp<.j*bmATkgT5VJ1-u^Pd,o,j:A2Kd'fi\E %KQ5=(X3iUSF-Y:,gP8e1[nfeE)5.=dB]Eo2(YsJ?ZF6g%MFO)#i[o>7JkF&Y6)j?TOn(jkD-ht<>[+n@IC.,JD,mFg="u8QJ!krK %+slgHW]QBe?6SIf>I&b/r8oPQeCjp?l?CdglM#SNEG%P'm@`!bjrSc]c5"m2DcjJB0A82e,I8\4@R9kn2MoaDgXq0P4.MO(q63R& %bh<W.Hc8.@%$mNEGW?)&l@p(I%\QQs0f.];$i'p9-g_u4UuQe%P#=.onW9g'2qM1_X)bF5h<+]:!s$j5[R**FCep/_4F,YVb"Wn: %1\5,"C:a:Z4r3s#G+gP_X#jdNmpP#!-MNCCOH]'AIt'53)Xl<]cB5iA4(<:D8Q;[>1Yuk!4do02-u#m:G6^C&TE+:u0bOc?VHb"> %Ocb6k&D*\,@o0B)PIjV`Rtd<#omBUmk=W_IItIGQ#r$b$@`;Y>I)NEH`K4/G%?W1C.K5?#SZUHDoAP[B=/>91nrY9s1ifYFYVBPu %/+f]PkO9^I02&dNF]KPL`hL/^"d84HO([4T"JZ['#[12V8h4X*e7_gAe7V8_D&Z-*`"G&,\?`P1@/tFM24TroPj16HBZ7K+2.M?A %5DO7/G@0O&Of2LI90/a@j[pE"J/rMpkJr0Zem]I.ICOpTLLIP@"gtF<lVc)'3n<29FL`^&prHFnY$GpZ#gnN@p)C]Wng<h>#$n2) %K#M(a6k_RQF_\sX^^0FY9,J97TepCN2[Ls:kj5`EX90m8ZEqbc#b]bFr1Ll1"0L5t()'=hr[D.scG"ph)eeo\1h#gB,Nc2V=qSnU %)?2SAW9F4(i30dK_KP7sm&%e%n3\f+/rZP\J2(3X#neRnW(IP7<P)Mc_,ghTpEg!(W<I<=j""gF\J18Q3+Fud;ed"Gpt=dS<,Kd& %U1.+(KEKcD5]8q(6_-q_K!UUb*T4?>>!sL.;$7&`k"X'`*E36odjT%I\6f9l259/G6\Yf.)o>iGAOF*9P!-kGDCgE$lg^9p(kk,m %espgpU,P^W89BR$$73n<5QH?sCIK!(51pL!TmoGN+6U$AO?uib1pp%^8*Q=R?,#$_R($,CGB_oa:?b#*W@DO:\$<W`QH7<(lO5ko %$-<:P51r-@&(2\trM)M2QkG!RAK+S*pdKS9.B][?-A:fiADTr"\j)RqnUHTarDe9R,TRAO:n5D(=.ap2ffso\Z_,"Eq;oTKc,KA1 %ds']_qR7XEk9EQ\<W=_UIeLb*]8O.JHM,V!pr1S*c9>M3iVM]$Y5O\gs(bm8q=kJJ$:1RFM`Q?e+(k":Pb=@UTu<4lngRmL@#W^G %KQ3]<)/@\6%7`'!Z7;k4#@h>eRYERCEdCW&=Q5k$nnh%S;VE[r^=YP<71l56&27/>P]H$>XO6UK<T)^bAF)22?5V?)plH\_M/D#K %OTSZ/caG<0nl!9U\iD@]K6(m[\K0A^cpY(@ME7/mOMIRp2L6M]hJ3qi,#&r9\-,`GN1+l.d2fCRV'6DI*#2V@M=M6UOr0a<Ap`6O %+@Le<E?hQ"MGp3MfcUo,65.^']ZbVM78B;5^ss&-Gb_TV2J'6(#sEXMqdS/h7))'Do&*8h%5kX/:7j+K)(Mj)P^(V[(<WIUY@pXN %;ZesQ9i)%Y]K^^jgqq;t`JA:7'Om$PQB5A%d^fcCO$^r`le=[mUPA40BEJmS"1TW+1h[esU]Pgl9_cmhFW-UJ,1+ir=oh<(Q3.$5 %.]+OA.6p9?OT%3?F<7E*-L$jF=./.TeCCmu<i[E:6q:h<Oq7k>SQcLJFM(I#mAbFZfn'qr+Z*DGE%!Lgl_p]6>=S4Kgb`;E]b*nn %1l57D;+JEZbVY..C"HqcPu%<)mJD\p!CXG%OHMaB<X%Q)^WDFd!b3K%^#b>/a8=opQdZ);e,H,4Lb-,>Am1LnI"IoeCN[70,8WA6 %B7YH:2F:Dj&*a-=5uB6n^@qsn:nhT?AtQ>YWTPeHHHKIFqF+3K$!l\jH<N8Ybu/@NIsTs1?',HWVTBf#8TVXCTLcsm?7_h34D!RT %W]\YkPbEq74/+k^kQr`%E3ih34fs5W('H(W"]kSRPTdg*Ufl[p)l(.n,Qd@5doZd`+(^n8UieU>\Snd&48%7Q6n^<PoKK>-CV<%] %#W-C+T\5d)!SLd6<ESPi$L\1Ne^F*0]u`*Ll7I5/**tUq6DtUaE&m,cXduDV4JK;n&N`S>,;$%i'dU/`W$!>C0,c^Eb\8C4J.t%7 %-Eq#)>'*pOA<XBg#d*2BfD;9:Fu"I?GXXZjPq(49#enQ4%O?2$)#F.Z4WK*Nj]GW,;G,7/WuoK]g1KFDE.a@8knWU&Xc?8.J<Phg %#94Kt!'c.g;kj]33ho75LRHmtgGRPNM(kQr'V[Q$@$-U)r(XVec%#QJls0*,Zba'hd-cpg1)XI)M*01*Y2HplXJS537.,8*1't_n %mIf5kO"kOl0LnVWAtN]6LX1GH/cCTOnkWWjf73_`ic5J!g!B#G@qn7*n)'Z5pA3#orGc>mp\r(nYQ"?9=-mjG595_t]t=()_p/"( %Req?rGGhpQ3;_jto$+dfI^\b2B>8nB1]NI6lfPftcfs?dq<,Nlo&l@sIWP?3]qGCQHZ:tC&asGIi@h*q+68H?2p87,0-NiGXr,W\ %C];pq5K`Y#s6'=HjqlVkhS'kKqo/6cG($*gq4imADr-!D/^"fFh"0`jlMbMLBDZT0-i36;T#81rTB*0lDf3;Bq.]KdBDk6US6u3Y %S"#rj$(!m:eb5+W[lhmlnA!jFh<1LZDa(i2lGM`ZgU$KW?\R:Hj4hB<4SFONQM.K-o@<+&o3]0ms.9h^-1%d6DVb!L:De8']XJuc %IWosVqNpg0O+?nh7t33rOLm^2]CYb=/pGo'\GXaHl0\-[2]"Dc+&VV#\_cr.J%W:=^dm.hB,;#!c\)#]H'%FUd:.$as)D$dh`p/i %q$N2\GqRtAqI-PA4b%[%F8^">Y;1$@oL8MnonRa(kPt)?o\4::c??XI5Op:);u#`9f+&U85GBD^*[X#.Y'GGDp$MGLMjn!1c&XR[ %2YfT6gHYSsq:Df6J*,To3d>uVDso^`7L*l#i9`[qRf*$<kqMHWIsZV6re:/p4%K,?e(rdS=?F$>#C#XpmN()rK=c>HpKk5=pP\XX %S6pa8c0:_`^V544hbeVQ^/0,q^<ctRBO?.\LTIs$lOA8bq;EPgqu59?@Kpd&m%kO"48V51Dr1E_r%AkDIG*;8?>k-FS)?M+5J2Jq %EVfAFZ6o=bQG3@plhBR$^Nb;Kkon4.`U'6V]Bf;PIs]`WZFc7kk.<"rp:oYdZUYu6rO:s&^\dM_rHm2a:V#5(7_ZP8nF#VkZh#iq %:+pgPn8@+TkRVl/"uDrPc`Sq)hu2;:^C`DN8,M5VLHMM?rV5g#cAsciieP_+GH\4-^:u[V]DF4mHfGe#QQH!fs8KKGYMYq$_Ge`! %pW5?3%bg]m?!l%;GCD&lIgTi;5NGt=GBi-r5N#CfE6n>MYsEhgII[$n7,o%Y&W]'S6FZ6:.eeQYo[NT]bKQ)2n7+V*6gp4J4YJN] %nm%Eqji,L5:G4nDU[4U23.6!jo?Gh]c0gG-IF8HU13<;"<VKn7nCS;E>p&1S+*!s>-_X2*YCH<0h*9#RTD'/t8D%g.OS#Wh8DO/0 %ikD%Uqr91k4:1OcmJTEpni,b#rcCnRnc]su0C`9EGS<&%L-BT[rqtAT^:q=qr5H;>o=s`60n-QUTq>/DaO(+J2pXR/kktN#[0P'W %]^mA]=Cfq,nYCSi@(a%[4P`.t\:;na(BsU)a#gUH]K:O_nR;0U%$s2-"RSJja,]'>bu7f`fC-HPk5+ZF:Z(Q%C\$I7NF&bk4".Gu %X3>`?aZ1cU+7UlJ*4FW=D>&KXYNNU^O+'3]lEac,qm+iJ%WVAdC\Ds9)#(@KIqKbh^=DS"[C\l6-R[4R<9uhV7K1LAfA0Nc^)T^k %aeJ:T7rmScVZ_I3>NFJtIWf%0miPTMnjN.$5MnJdp%k0,[r9SG^Grtj5C5rJk3e4irfDW^3J$b#%sdoha5:DhYKVDTLOOO=rnGWF %Zh(6h[l;&^rH=53UT;iueBU)DIIN92g,Xhj2ok7PqrO4fY@p2b?G3rA8&+T7?([Ma[(@i>bFe=)g_ZOUR`\0N"8/oPqX1DT@gdXY %*HkdmcWiQu?GHA)d$6`JL%cf?JEO68^4$WJnEZ"UbD/@M/t_(.m_0CuF4nn>QD_LX"5^WTq<lP3hd'UVrn7)+k8RjD\_c0!]mbP< %3PG@Vl$"5SIl>TZS'uQl3n36e7t7\bMmqlI4'*_uSR.odk5*?jRq^aK";1774);W1C.e6Zj%,G89e<b9rjLO+-,01WaiU!drU:Lu %MKe7MddR+5hRpD/\bO>M5*Xmmphna0TBRlk=1EV6:p,6kQfRf+`RX4:;8_fP&)Gn>%.da&Tqh<Z^bEARZ@.RY*5F8S,i&:f)]%ke %ppG$ZR'Ql7B(+Y3%oDB6r-7%Gp$Kqr[$Pa!ZPNk%q+5IdB+KdNfpFt=@9su40[EVtm`RV4JAZ4!,#@8AS\7!BbQIR^1I#21Jq83` %E1#H_jhBrkrIi(Y]f8!q"'3u/f+'GP%^Z&LgD:%_6figk#L2jjDtq\]p-deW+'A[f!%^3ZKcf\4r-5:^HghVr]Ep^JO1ttK`a:L? %c'Js!0"`mRl-#q!H'-nJ];G]oQ13t9[-9r&EXj#Tq__P;BXEC]gCoRTo3+:j[%F'^qtG;%nC';CcKQ&`o\#i"Z\*sTct=HNB0U)4 %m@_f!8Y7$iZ\(I=*dtIDFhW6*cME6o[@JE=#K]I'7h5!lD0FSjor#H>G(05([eYbuS*XJCST/!,]RP/+e8)VTnZg6Orpoe"IlkFC %rT39f?TtP*E$oetaH,qW/]@?Qo=[6#])Gelr-iY!pfIIdi*Q4ArnG+)s7q'?H2R-oiu_U@1kb"O)J7l0D-e]Ab56+66"S[23q0%0 %&,m9X4#=p.5ij:*W''YB>eGK+rq47bMqo&ij5Z`'hYcpFMf?5efb;:d(E;Y?#B]+b(P)JmCqKJP:B!%UK0M5praQ&uYHP[RIQt43 %mlp*n,^s+M_T2BFIceiq[!A7RQM\Vuhh-1TSk(6A`obuRL%+)HgeQa4gjF0cI^Ao\gF(88.Csmk1rKJj]B@HYZ?&_=cQChkbEL;L %caTM<cb"[i5<nTinr]a@qB5$*J!#f-ma_W"qgO:f:Q"1rNo*2)i'Si181,M-agW@/,G"`d'#-dpq2e@#0'Qp'Tp/@`mdg\NejBf? %O?u.<i&INo\,-kp'_3E$quk>e80L4D&Fgotr+TL3+bb;7+htf,nsbQ@^](Ha#EXA]#VRXQ\hfu5q[`/0*nJ^T&*#1t\EWgD]QKp^ %^4&0AT=;Ec_)qBSha`peo!$HLER1CEg3;_HQe-`Cp%^3nrq+I[q"LO>il9gM&T?S#kYM">*Vk<aotJ)3S#kPos7GaWr9`\-e2[JU %3%c"s])MU\(Y>#:2kRiHJ+NL/]@46=gA.`B,oZN>h094I*C=e%OPC@Y&00E`*^XmCn2uJfh"10SIG6d4GP_&lWt.-2Bd^FY*aJa/ %Mll@D9]qc&0+SCs/U'<[]]YUtlqa47(%kO^QsY_\Eh\lT*\I3^hk$I"j7h@;/6mEkTdTlG@o#1e-nNsT8"]5+pmf*m:A3TFp?f)u %5N+'SNDEr:IO+4L,D;a#ELWkagLug@i\h^niUG)8DKCWg*9&l3\BQ17F,8RuoVi=?RmYun&@^>;W(2d#4GDJ\dQg=K+UIap3e)o5 %e5iu'T[.l:&,+dGCl_L>s$Z]t+#u/105c5gHL\9(fD]K;QVF+B,+DFl'R9?<\MJCV3-aT@)7rgB*4RergOoEg\20`?lo]5_mFC1k %:m:(QT:;J6-9V%/o>!G13'3c1Mu8gbcM^?'5PWkoE)&Q,!`/IKqp.:qo3["C`Aa]5Y5`f]o(/J<%9B>.]>._ia?,T]rIhc/4dRaB %rUne2cYmLFn'9fQB[uLnL3cDsl(-S%^A5j$Yl]OVp8f@s]A4Ri]-lD5^Z0b7dr5:N?"^f<:Z/d2Q,h!<mD0#f\7X(>2*2B3rZeT! %,<tIUci:B<e*VTZJ+j(Aifi-m8cF&+joO++^&%8k..7(&hjf09Njq1a/q;I<D0H*VDhk"*;u9rU0W7hY6&fMm$6Oj<qm;R@9*oA" %rZHuh`j7aM%mc3<W6#Q9NC-P&3<qEZ:*0Ja4+oHa3nsT*]@4*Ue'$WT?gJ8cQ^`2H1\dfe#*p:ubh;R;l21'Z]fZ7d&*IlWG.1mt %h=^Q:P+A:fDa.M*DLCKZ4Fii0^#dY6ltkj(lFo59Dm-pc\[XZs8Gm>tY3G49?<f\PPAT+HpttGY_p(@!eTW.8hBT>$#:TCrBDd%j %dJ*=Gl`8jV*+/UHO0`mPQ^d<sc'%B?Ga&:H'5Q5&(R(hUVrV;J:bb,k6TlG)dt,*o&V<K%r:'-T&!t0lfV^^gb9SK]J-#Yn?&8Y: %acErC?UUi8Wgte-;AOK_\6aYl_"Fs\P(.d$#Vu/6&7c;rU4#=hmJ]L,(-cuKg1N&e8`=!#Q==M!aM&rLBL*]f'`W-@ie`WGK=c@+ %>hm#JCnu^$GB!=`N5N-raa\:)%M%C4iB'#H5:MBVjl4^3AdR*cO)O4%4*Z,XO72#s*B_&ga*7%J?EhKEs'/pGq9ut)h7)skh0XHl %n&W6\LG-D%L[P7>ZnDpH6e:"MFno>r8&Pf$WNrjgpOf\<4QBGO00S_5N#0f>4hN&[MZ\t%pH?SrfRDF[\p.)pllYEZG\fY:6^l6f %Mrsm4Eqm%4r+Q-(e`H&KT0IfOU?c_ncRs+LqmQe5]&2CmGI`(Y?E\g*>l$fOj1]?,?dUgeUV6<j9nJ]Lo6o9RH01F<5JjGmgfn=& %B1CY-02^?g@lM1.[P-GQ-23T#St0k+mm"J^qXj.PMmLlf=?@H\4asVXB4"1FlKdcFmr(rcecp,:N,IPIHll4/bJQO$`]]C^BRg!C %!EI%('`/sOI^I!q]fb9@gE-;:+55]Ljg)>i\?deKrVORaLBf)Om.s6P]Ob`IX7OO)QNr55QTH8e\Tm!o-.gM)@UoB-K%9XQVVRgF %2)+1..$K4AfdiMY=T?q]S@.>6g^8E]@YZMu`o%h"L#sdM]IEI'>gUGdQcTgA;kD_\<oC$'?*UKUEb?d5s90`=o^/.7@Ya:rF^%=)/ %!2&bsT"?_%5_)'TV/U^"oD@!pO'-5pV\)\]?/0gKFoDAUrdE3'0+o]/d*Uj[cOTC0*<,aY="[98QTfj9k0=LCq^;42;ga_`+64Yc %SFo1rZ[S!s0]fDI&eAX<iTts^BBMXsg2fJ:5KQQCmRQI.qX'[mS\*VVLSOIOI?C/MdCDJ]kX1]VQXC37`,G2+9jj"t_Fp^LHL^(& %0=OC,+!413]J#l1bAW[?8I:%J3*Q$=AEiB$%(.mXaZ_-Hrtr5Zs#B.Ss-1F=e_Y?XFnf$5s*rdq9X=!Ent1),KXgpd*PKY^GJCru %g_Yt?P04@Xj)fUMp&%#[?-*cIUckRLpt^k3kC&T!c=>=']bmo5URb]K#EsQuOWrF>H41/SdO+eM$foofR4,cSq\RRaT7-PbFF`pF %Q>5'_<,Q&b_l)_3kJ!)Vm]GX_`qGU4VuQbmr8"P/hS$GGd#WZ'm8#qAk4G_1hnqV\1rHAb1HGC"s7NTMfZ$'M8&b/[mF`TT8=R9% %<H_VS\Q;"TFnQo4FnULSbl:Ylfe8p(@`$D#<F,Xph<E\g?gl?1iq]["R_(uH?_X+b1*\!8@Tbp>?g\RXZ4?Dd+7GCIEpi+WQTr&Z %fH4J`e$S5N!,D33X8-9'pk.9brR9)BmG4-/rq;>ZJKdr<ad9cUIf'!s"OiSTM>.nMJ%Bm:rkiB`rDptsJ,80:X08ZZ5PsW9^H;DZ %r;HYC3.H)CC<3R'a'?nb0E:,ipZgr%5QC]6cTZaMY91c*rc7r(GFuG+'RT?2PrfK'`u;u?gA$`0.Jm1rrbR0Jrqj=tQiCk!iVs>6 %?XKX2^NoMPrdX@d)]J>ZT,lJ9j)M7d]P>"Sj'4p"FiE?^lsimI8OXC^BZm4r9YMkdVD4o'^:bUM=6\.&s6db6[(15D]Sf-ZbAeJb %*\uW6F)$*]GQd1Jhqpa[DV9:Jqr=,lUME4<^L&Gsl(;a#@66*E,lOQ'Id&^#:l]mdEU.U[Y3Q'FZET*o5Q7UujD-)N50g\RS\^%_ %*gUFM'+=,G%R.Z(hk.%1iZc&Fq6>6N3k^.)g2SU%Ik:HVhVEF0il?,:0jFX^8FM09nDe/>bVkI<oppfufVcYDaDnj[qHV"[j08fG %4>)Q@.c)Z9g#b$D;L&c237CqI_W&U.lB,]5O*f%IEQXYBW&0%J@g;_5)NLT91k;XIIU#=nep\UP]Rqs-R/)Z$:JuMuGMqODoA^=# %FjWSC?U;\-9<rhmolbg%o6ZJo"2BLnf7oU[$l\`.hs^!cqbf.McOW+OW"1n,4B6T>XQ,C[]n&A]W:/asX`(9;EG^i!B^`?i:H(1# %?G6HbTSKf<`r=]e[QTZ*EX<\cTZ9ZO4_)HikMdB7'(Z=^,,>b+e+cQEI:FSs1hPM(gY/*e6<i@F@jLb&/:6?/`Gp92h`%uB:Z4:0 %Qo6j/:Le<u*,]Uk)V7&sji`DHW>pu"o#B8LWK4=^D)K]K9qB#oe0r!?jVW5C;t]dOFka!$MPT*o^7inE3#5\(2'9q<mWl>SpD7-k %/Ck2E-se/RijYs]7:\Ru=i<F7&J[=7:)a#o`5Jg:34.u@qoL-!Nm.g&lTp2QkRa<7R'l6B^fYTYeQ;=96HM'>RZ>G>iNJF/^u2Co %lZ&hV_ZPi.0`HpYCi.3[61\;$hg0[-+s4Ue->R[MQ.3Kp5=bTAen3:"QqOb=0Qr3nX(hnrXjY9/C)dnh<dLo2Y&%UCao77>[BcAF %inef2PG/T[@ma>.0$;o_6nV%8&-YAcXd74Il"fC"CXb,bT3V?^)%7N'Wm@0@*Ep%c:c=oGKe^AFgUH#?*=4=g.[oga::4&H)9k*5 %-Xb02#hQ7FLSZYDo8ATh4.aX'NGhH;YR<4=AKC9Vc:?-bAsUnpXtCKUOHu1,=pNF#Lin%GYq9TkiZr:l_h`QFeZ:b-m-A)%r:2X@ %MXl$`;hd3efbKFcGuZWa.IXL1*IXq)6n<I];aV?[mo`X<3m1KnN)u<N9Hs2U(VY(Jk'Rt.QcH?U3cQRh<[+.Ej%+>GWNqgGBIri: %.LU`RZfl`Lh)@N#;?^BfLY8LWB,kocJ&_XJq<3g&#g:4YNAX%tF#WA*)&eVbcBf;0!#!%C*OJi"A;RZiAL3V]4&(#(Z+-W!I'R%* %Gurc@I]b_/<o\hNjg8F[fPP,0b$,iI4hD?g1Up?XF[\&^ZBt%A?.W-kSLSS>nesZe*-`q%8abi9=.O;C*RGuRdq>0uM4]',oBr>( %OC8`]\(Yr5]>jPO)+oj#QH,V,os1X=q<V;siE4i?p=._dZ>N2bjH,QD0$1F4+%gQi;;ROI0C'c\$E9S4HDQqo70AKSi*lGW`;7p2 %<bGPSgQTnF3]9=uC?MjBpIUT<8t@i\f_2_Y"ZnUO<5mMIj5][=+Uo0d:*>];e3mOlIn(,@hi_)%c:&0">$'1.onUb!bW?'c,K"_e %=$V6L"+eb>=SWsI.k$;B'ui?%3eQt\]nrHHNf2W<j"&)"CUCqO)D>TJgFaEm`N"6$Ltf.-j_83t9s<rh@c<C@F\=]SFOCC25fIR[ %<*k'5Q:Y,rfQ>UteQ.T3&ud2-mGj*/c\H4OZD0uN-53,FKmZj_E%JoB^<I4d4?gCd5\CEC,=>^`k8E=jh*J5H/GMn"[c#LPg05)S %#.&k]6'lY'>jIi'4Cc`I^RrVGB<-`f!r;d<DJ%+OWU$tPA:Q8k`+(!"jNTtWZ_,;+.?+kDnI7g(@X=,\]VM3m7c-icUUI5Iq5-L9 %\dF2s^l-J&!osjc+hCLh5-3:fj';1"/BJWRVdiloBa']LCu1lUK7$\j<5ti%rAqZ-M7)%;5/C_Kk>PHcB"V:D!"gk1H1+2cC=%)\ %<l!@#]E3gf1(FtgD90BIBN3MA6N]6tV6ocU9n;jAgF$K:o(ipVfS""aV9nP*Y`jcV[mM!#jb^32[LpV'pEdJh&&C&-IXeFK0sJY= %$s?q<Kons(QCm'RGMUr7SeS4l9Hb$qY;7";=?X1!JtO%%Z:aam8N7[oW!6FbU);O#k=%8pVfD9>R=PlrIid<D(Y(LeeQYb5oT?if %p/:[j80"X:`$?>BT&WAW:^n_eZ_^#hNNR9dO/#p][T#XP$pE*u=$M)V_TOn162*en9.R#S-t5HKiD^7VLj+1]")mK+,psM^"lg`+ %[n\P2M1auN3!Z/KF#YXXj6+L=)[l/dbio%Tq]Yei4h\K#\3846Ca/GNd>pq49Q5!"N@1sK$ND#o$"!7?)o_Wp1<c]@%P*%b/?27Z %*7)Dj(ZG-@/<;,D'!ff;!KaRLHr^2mS:>rsc#pJO+LLgpa\XMcF_EAM6/Cd<CZl_<SqIaOf\@Y1[aOcLh*f;!oQ>64/],%cVf;'8 %q'l"ok-"/0m9$#)aKLkqPsbj/b(NJlnURLfTbfZm]rdu!>Z125g5HI$d!FBlHR'<K9QXfCGM.+!nlL63UCQ1eDeNIGC+0!^X-Vlq %#X$k@d95\PprD8Z'LfC!%\6>e>W5Cj&rmcpeg#r\29AFeVpfF0H9SFn=a$P!Yn[,U\];PiIpGi@(04PhG+*SM[`^dX`TSWR`3K8! %O(]1&jo+Lb:2dOp&D!&;5!Y'TdmTi87-E8UF+Q<i=RKn@oG@sUd1'idcsk2OklTjIahhk'bc:1H=@E^$ETi5\1F`)niJ'q3Lo:&; %&YPBYC"/ps5NQs&[uEEUpXWSNqi<'SJY9tYUn&*Dm^J0JG-*#b2[rU3?hBL?9\&Ye1&3nCm19fqd;GAf=^AcO@lY(SL]-KI_jY$t %R0*bR&^HDVYFF[#VesG/f7n!(Aiistg@,0b[4<PA\dN#Jj(8)AXp*YMq&:l&aO!j3`(c#@oO.=`%QBms>)"K1G+4N=E0uCm+#Z6Y %/Ou%O?":IVMUO=e'&@`-Y9o&U6J>*B,LR=?W7i5Hd]8@89W'ip4t\:mR+''O[&=oK&_8\WVT\nEpjMtHo]S_NGcA6QK3"Or8&jkt %^2HbshD]_eYB=iD,9l$VQJqtYP1NS"]E*F<0riW8XtIJXE<6Zs[V`On'_njT_LWaICI8A7>G=N.Cc;[%/l"Oj1_>E7[\:`[%6mpH %$RJf%O-._40nu%Y!nf]_Ba@+gal5'23Z>7GlcMloUpEe!qfs#leMmGi<?7U'%n]S9&JHqqEX[)IY.RdGV5:1rGNcK.VBfro)7B:D %cbuDNZ/prNchN%N$BEJ;.#93-G.0uK+R6s>j4nco1U>BeE;`ZE)_m.#+-F;*^]#T9CD'8Zl:oSf7nWm90O8N0kpE#iKO`X1j]W8i %@>aAT%XLT@4tKb<^j4$AEJSP3r$%#J]E6Z1_22mC3hG.V8OlpZH`[-A`As\9A!^#;[+GUdKf)>&'!)GFe0MRi9-SQ$-ACuYjd;fQ %?8FTOeD=Z$V)nRM>@Ok/8EcS4?]L'M,fE)EbG&eIFKFcC_%TF.F:,G(2kca3_ahtuk7L/iV*]E:ka,mkJW_@t)A^)Uem0fsV7Y4? %3f?!LCZ;H_,fGEhmR?IjlQIdJ:I8A=.<fp)H;?tiWIdZ)jhi"W!bhgJ"]ioNE1CH44,MiM^.9XqW+CoM!fO*\e(A4lr`CR=V;E,_ %f`2?S0TrkbpX5*#\dTK_]JBRLC0U7rD!Ga8PV/XRHRq)-8oM1F!SKR75C7=[,hI%3M;B&a4-\DU>pEu#AF.L\jp(pDXmUa.)C_X3 %CMT[[$Uq@i[9s=FW6nCj_jA[o:1b8DX9'1ih'</K7XCX>X,$T8T8tQ\Y.[7Frt8lOX]t&,0o!Cq6Qkero%s92d#pK@#=M"'&s,?. %\^E0?L(,XLUod`#*;`(mE)QV^`Q^fH=O]=1o4H-?ThTIDXbI-aQDO(E`IVj`FZ!%S`-H@?gU^lbDeB=!\jlMYWpcGMghD\l@\;Dt %VpGn-,MQLU_E;+`&DL&1+=8/AAac>NOY!!H5/e,9Rc7pT,9_3[B(tV6]Qko>BdjCD+i]_#`F?rOE/)kGasJrdSF,aBWdm1"Y9S-A %C06FDY!j(h's0fX&/rSYj_;a?7>/Pad2>t66s8',2!e&Q&s0(=2r.*R@lA_6DqUu&VKX4;JV;"^#3slZ,DU3UV"%pP2(("6EUBfV %L:kU7Qt1p]MnZOR81mj^#!0'.].o>tnIrF]%a3N,<CP`("M[L?=m'\Z0FIUiG#9$4q["UdFpYJN=M[onUghYqgQmR;\/h\]b"+(2 %qZN==>3u'R:Wra"\p5g38qn57GC"d8RkBgplRb0M`iV,#h+Aiq0o+c6#gdj"jn_#.X*4'@\*^]r1#@61R0,#&_e,;ibE5#%((8+- %N`l-V(!)t]F7pKi2O/E61Km6m7(*^<fGA=*XQoT-G""-($]>J3/kT(bMgAM&@hc8hoQ@ba*>E9fk<?rCEH?<R2%^Y.2gdO2K:6K6 %9+i!ZpREYQ$M'A&MXo:[q46jUr[gJ#[&Q<UlDfQW\cf%dc(s+`G_%.#hJg0(LsidIW9)a_Kh,ulgi[`n]Uf48[i@>#<N=smg;M$s %1$VJt9Z3ii9\^ERZbteoIBeHY8]]X;K-3,nMGlm\e2:`W&%^=tN=(B]jM.To.iJVf_m$q''><hoA>_m#7M$'*#DIO.+8aI%Gqd-F %_b>l,OeGu5U115=?1#1(ERDA&^W.h5_'L5@`tE:jM)IpnV.A9gqf$Ac*DnCP)HlCY,8!o'Z\Y>CA>\)#,26eqj"84K+9ga8-U^97 %BBiUFi^T^i4I3ZenRQi^Z=.jC2B5)JD/e:JZ!E;5$nrnR2_H5)J7`e2mun+aHUG)"-Sp&46s)3Jng8COQW3auP=47K9>"(1KlL?% %g$]7c6bt9lL8%:9eUKgMCULte'K)b/O@e0N#,;H+Jp26l%0kPO1apha`#:*KM%Z]"qX55o-[:f&?_udtRmP)4NG[CmfcO3C"V;=D %9H1gqRYA^qjhm>==B2P@m#tt,_BLtW\EQH<=PXtiFJ`U?=N,eu9rQ_#6W!MAD5di>-:6uCp)V]pHoOL7G?s&ef]OSW0Xb3Yq6=@a %\6)b7?U1q)a29kSOp]6p>9+Ml6$&Pd\pgaNV"$-j!.'SpdY5Z#!KCGET+NBMA%Ci'`LIiE"YC1_`D1*UP?VP8eXX?+#9/"`;mc9r %C^N1Xe>t;;Jemr)Xd>:uMm\6r+@i.'VP1<#&S19ZR%r=c"i;n5PigUgF.s6in%4>#&n4b,K(eJ6[d@\^'sbecMoQcY;bOj-N(&k$ %;,aVF)3u]k_\,R@Qi/,j$a;OK$9$9NLAk(DlH%U?!2<!.>_#7[H/8U7S5YG(G"fJ,k64,%JRB>+.&pV5BNeCeMK.D"/)3+_V^'-V %Wg>D'4sVOGF4k7UKAGj647tY@$AGt-CGXOIa.8qD5)I82(N>^9lpK34_13Oo`EL=PS"8p,_eO7T4\ld$cu<t5_",o+),%BAfJ(%. %/7L:+""@Ug)nX7u?5`JIW#6=KT\+:(0i"h?;Of3b-rqX+5(AMDEaEs@jh]$BaLa)k;6_<n4(">K@UfUEfBBLf,Gkgl$f1SO%C)_M %K7\BpVNJ2>dp!@e=orU0T`@F"nJCn6@+`F,X*2Z.8rCU,`m(u&3b<tu'#@2,Gt1s);B`@q8hTcV?,LKEpE^o$@]8sipDc@.W7ngP %83@[CG!0hMX*;<2]N)DAd7$1LZi$--,])RdH#Ds]FMC7TBM@0bfhn\P;G(f4pN/=!7-iX*3!:RYNk(pIYR.CKmX8V'"/&'`gkO2* %\.&_HB^Vjq?sEoqB(tD3A^%bJ2%NDOoH76QCk=3[pZM"WlF.!%8]P*0Rkobq!(&8\qN*CWr'$`PYjcFJbFs[;fU0+WJHVHr_\VPt %,l-m@pjG4s.G!&"hq/'2pm;0$Z,5Cs-T&64ZhFnOk8iQFoAjO@T;u08JY/Sl^eeH8cibaS[>jQ>@57*Y0N)Se/(fakR.O>nPNnjX %oT=3Tgc-Tk(eM8TKr[AE8>k]@nLkt<-u)Q*&ds07T]<.;qMk#8%kI(@`D#WGU#6mH`h]Dg<Jb."IW@9BqQ6G`+[4NPN*9D2c#E5- %J;[_2(/qaPqoA/ne[3UJ[(2R^I#"hQCTQ!5f^n(01$m#eQp]Y8!Z7!@p?-I%T^hMl2d*="h&-cB?:2<_O62.MH?L/"ET_@0CKge7 %b=.6(@dMHHY>"hK'Z+<b&GcejpSh[2M`$R7@))dEq^,UjNW@NIG>'B6A"4\'jBtQRXl8kPXVC0qr4[CW);aoSSM(VNcT-4ppDZOR %F-#LsI0/^(?IU,SqL&2emBg`*p\_2F]fn\hN#fBUhK?AIicqm!_rb.Hrr;CB0$s0(-FCti;iQ=H.N[1&)UHMhlAlC_VWkmW!6:.W %"+\^"Ot<-k"cA5_>n)AQ6mjN$])!u!^a]sc@J<6E#:pL^:Y576;7Y$:?FDmh(o/P,.eU!$4W"oM=r@'3`HJ),Y'G$Ar)'Tj@;d9* %6\?etOFtJiS3^sOQ=^VZdOd4$dEKS?0_TgEWKiG^@Xf(L0_U8l^\Hg+O03CZ$'r@$ig8]_8,_YbpQ,=GDbEQijK]fIDYqZn<@;$m %feeP&(o`LXfS1,8M/-ViEh9q'mX+'"nHN6C:F)<+nPrY(ZZMSW3$d0'.YCYZ8OjfVKYU,EK2<<eV'BeYV+LM%5%j,f,b8-"6HX1N %4p+HN(j:Xc4:Yjk%hOVl^:ZTpFG?%tF$K4Q+d0m=_QjLS9L\XFj':UuC*5<46=]mU5U1MmnD<1^_6Ia@PfG.I4ut]LFn+/8NDX$H %.'(T*Z=Z`aXStQ*R=-ss8.U!.e=0Xe&\BX4D3>2#k(VY`!D?+1T<UG.fd5ufQ(?SQUe0`ZMZB@YEN1YT!`AD,-!^,'/?C+@!r?CX %$8gqu[@-8:<=)+uH!#A_b,j[RXpRGI?5L8\m\R%nN9)_(ksffh;TT:)qkSh.a[5;%B-lS+O;&^<K!^*7]>L]lSpD[Eo2t.=GHIo/ %5gali7ZC_p$D'u*&tAT3;\2<oZP7Y4EH=(M+k<<&V\4=?6nO1cK8*rCD-g##E<7B,Yf_*7n,;-@f@"6/dbUHfOE"<!NpO!UacfI9 %*nkVR/u+%LB+4mW6Ik<`VJ:jLJ/t'@C/2\M&47eWhmq%.es`%B["4)kCUuc>bg%%8LqBH_Nno<'0+_n[7F5SaF'F+Al!Ds<\IO]( %;]+IYK-B5ofr79b&<uA_*PqP$*R?*lLrX4oWkpm^g2O4Lk-1*b^VU?tiflHeO^<qU)%k>G,,gl]8n]f]:f:0t%s>&(,)(u@9[a@. %dJ6AP%_YKGL[CtY1>`nooti_t$U'0rKK@/<G?pcAepf5g??[)B]6,)O$#?O$'Wk#YXX=hKpli,:&.%5N\t<K=R6'O"B(#MjO'Xs. %N*!S,3srRA9Wj)XI6KA1`O!=uS>>u*6_Fb@K(\Jfb].qVV:.RDm82&cj3<]2E'2V:nF6p)f*/s&RN-F4Z,tT6p!.Lf';,KBlXPG- %`%R\`6%'=$NnX#*Yr(MBKogCRZ+F'O'MY4XWT>Ya]'L,4O`@8He<>lo/oDLeJ"tpGRb^9o'ggEk=jmIbFA_IVVA)G9^";0l/K4i, %.In7Kr`6$"_T`Y)ZTUu[r+R?OMSBQ\WG$C[r)Rb3X^bYBkOAV?s5rWfAu_W$+N_2/SBaD>;DNC1ktICRe>=-ETYA<Q-YK7XcD0]o %:(*kM422RL.)a,R:gb1`ff=;JPte>%3fqH3`m$+#Th?2<#7lD;EpA'`\*eIV46upY/O?r]V\4*KOAU4q;FI@3-UlJB\DIEL'ZK1_ %EE>IdL+h?<hFX6?KJ#p7.1c[Z,q#qPIn7X%!Ve=BCV%sPVe7-RAU<U[N8X?Al4Z./`572k.4Mch_iUmkQNWeYW@YZ_0@/l*AqDF\ %JJ5:L:nl`:#\#A%W*U3#bJK;:/R+-)6%E6<J=R=93)E+9,:+hlli%uEr@pjqGD/UC+R.ktL=LfP<SuZYEe6Pk2V!%H?Tlh<Rth/9 %Ga!p`]jaY!XO=.Y<f<5[J))G#T<c`3Dk)F#,NT%[8#Na="NE]!r\$Eb>/t0>#p<?`/3W3n&<Wim%T:tC@kjMG[L7QFouDMI^@%'J %5E/am9e[K\!ah#r/::SRKJh4gKcW@6BT-b1G+buh%7,AYHmiO95rMDPp5I-<-JOLa$O95^LeJtZ$Z[c/`ad$I36"$)^ICT86mb7` %iecBBV=TaF"9Uj+W)a.;A`(GB*r%J9+9HOQ2-h)SN:%3F^mto_Dn.gtc%`f:o.;@Na9bR1Obh-dc8LO%H%NK?LHk4FXL&=@>_K*I %rRV_:gj'i(i=)ASBui;C>X=VBbA`BgZUF1Z#2tt_?Jp\a)A`J".bWH&3BV'!a^,dr]DfkD-)m4Vd3,Y9.,b[sJW`bC`X0Y^XuK$! %cEao;8ae[kRAk`GZp'8qi;G-SVFgn[lKD9b%aK,)@j6hKD8#rpcNrV(6'FqXjj&O!1T*59(*dkS&'O!;eZ'cgqDpXC0=KjsN&aM- %5`fLJ:VC$B-$YOhH2F<PM0]apn<<dg@YI`iEMG*6-I+8J31%:fX1mD>&B[[$2[MR.6l`hp*)t.sfWm[_,rU&qQ5MRoE%GbH0t;CK %p`K07I$(aCk&tdfZ.Ja4Moq[b"Z8SmY<2@hRD`ut\9^I47`"o6V,%W7\.#i`)5GY/.^T,*2\-eodLg+`9nFHBg_j6pWC`m[7`l@M %&fCaFYFCd*>D%gd.QCKGWa9WNL.`+j>k6D/9XH.T-J3]W!"&aSaZXYS5F!L`&gL?,4"KKR8W#_q@'V05HQB[2)L%PG5J3IO]UOrc %f"l%%-ti4,^6O$#.F1>uHAe"#aU.;Wic4b"]m#rjUSI(&CHqSf++DFsZJ4$-)pQ;>+?/Lg`2a@L(@/$&5?KMdERWR9)pOVjf]$,R %Wt+8Vn9[Aj$S:a0h3;e7GI;s='<aGF;Up3NrB^#-PoOueRrkFY9_mG])]]B\\a9oNh*SQ09tG(OI]HB(,$o@F.&$.%[Jh9N(^(Sd %Bl$[N#6YIld<pj3#B@BB54r@SWat@k>Js_lEsN862bN5"h]go*=m"1AnQ(K@i*4,=--P:-/D_eCX76tq7`hsa%uWA=k14R2GcP@m %>DL0:-0#uo!8oHgbm(S^Gs7^bl=FF%8k$*S),g%ai:L<PgFZm^YrcM?rG#uVc!O_P)qB!BhBJQ+\?G_]$rH78>^g[TY,[hfH&HqC %`BDK@`Aog-?_#PEoeKro&[/sZX''plRBXjf0%*bm16$2a0>G#p=atFZ`lg"fdZ*NP\Si'5^UU3;R7(9Xh<iH]E:bmF0/_FU7_sFW %kfiELWXqDLMAo]$83<A7D@oYj?etN]6<$X9*)NdKGqsslD8ac/i^Sc:'h4-2\OAWGYcYm1qps\gf8duY<$Z^<Yn`>!^k>c+-&#IX %,)27nLNUp;BRP7UIQu%_+k8@<ZQ8T1l@Z'(en>&Y:/u!(`K#31G_5?P+5S2B--m(eSm.>chn81t?CuYG\P9a1bJ*E?VLbp$gG^E& %7u>o8Sp_2hhK16X7D/5hp;-GsVg*Wdq4kEU2fH:*)eTO',h<I;fFb<%QGms(G^Ym+h>#C.<7gQ/m5Nk5L^u0*gVhk7SVpm^D(O]> %8!f4n(@h6rqmsQB"tVi%.@dHWLif;Y3O6L=-&BNF(e8m)\r1UkOusrMhLr0^hUB.t,jlS7+D3=ab:B8*6EoVdJ-=oE&Ca%H/ThB_ %f#o9gJ?]m,[ih6#SFJq%<%.$k^k,3b\XaPD,phbh7jEqP`'"KDCQiRga6[YDL;HPK.UQ1(OWi/qYn9huGmRfL!,3nCR<Eh,%Y$Dl %GR2n?GW$rl=40(KF[(Lm6qN%k&ZGiS-a>Er1_KdR0QTr;L$>.Y]Pk]REKYN=m^AcJ\lse8,V3(NX_UV"0R&8C"L*Jj!SOjca7&*: %a*.n_1ltF.enb"o*crG.3KjR1]SqFo,aO\uoQJAWVaDnXG7OUo/=b?Y1a>:<&k:-/U#:Vj'8Nif'OqPKM99u+>sLqHdp3:Xkd<nn %aBCS_^`+>;/6@7M.\*@]*5d:I7qof-T.#>gL"J#LWaX_:@C&^4!9,brCf-W6[2?_O_iRW*NCG`3??*,23b6bk/Sbeb!'i-J"8"GS %?ucQu-n&#,oS"![d?+_J?p?W.2#adn[-2XS@du-HUCmcMQY!!)jO_mQ";W*=K'>W"9DDXX$k)k2jfirl+!:nojWl6HZ-aU;XcdBr %1h)AZ)=aelfLQ^?7LZ7<Zu6;l30]#L_>,Iil_VDRB-P(=B-h/^WX6\$=HYAZ26\^d67eEb`$4+Zq(5<:-lFaTC?ZucK^uY\0]-E/ %HguFo%g%2Q>fQC9?j7ebaj(h=O\GI*?QdF]5rj)qE8lPMU+;fI>%1Hlh+iZDXDV$'4rmcKPIQu8%V&JN1_Q[Q;(1b?(r2E/VIZWj %#W!c>$-dYd!fR_bEq%KMj>.jMC+P]IL[L:p'd_Iu-]rKoJYYZK![/g=/"j!jKD?3ToJILH;?Aj*FbV#\Bo;t\90ppmf9bW`;m2Fi %:3cCgUOXJOmI?47,I;o$?-%tC^`k8ICP&Q\+\MVA\i`o15j\njQA95'8.pNNkS-::!%F$-5g#81#h$,TBejN31ZM0NMWip)&oIp0 %1jHiObFE[^A.-$@mBV>=<fV25$8o,^lgketF`%e'1+:4aO;:$D6%+oLrIrV@"\WpZ/BaW_[LbjUdSo?O?(8d.jc?Ibi4,nQK7_&N %;W>q)XIfZ@DVCS5P`R9$Uj=`rD,7TrP3]]kfSXUUAMc(`Za3td[S8[?V`G,36WP`EH,%M">odU[8i<Vjb'nKTH=37"?;L"9o"/'n %g>-S,#Z23T%Gp>qZ-6)A/_Pqq')k,O)k+h+WH\n"1POec\`P"",IHV*aZ9Gn0-GF(mtouNU9-aa6Y[4_b%&OCcdE,Ba\jI7OK)GH %+UEC^Mue?`6<KtZ66."'[#AgV`]Sd82g3Q).Gm5e8TS(**B]<t4rhA&+Y.2d+_/X]Uu>-.2]=ZqKN*u@LhQnn"TpQI-e_HZQAG$2 %>g^E^?&&l"2),j^$PN0'FPFXmBLFNhF;jgDDP(cl-R5'sQ9elA1#9:4Yf\L9n2+Qq2[+ao%uV!Je0)2s$u>0+Ip[1YG;DKSq]nF< %i^P-`&!KM)HtkF*5I-ZE]SO1+q,M/#06Tc/lgR=2bCVrg6bP<1QtX_JR_f-s@%kJ60d$J&7i@_OpI$r1+rQMjpf\CIa2p?uBu<u% %M4p(HG#M3e$r5-r>p(#m(:=kMI+e[-[CMLNg5a1#b;@'iQ@\Z?U'!2Z3GI\eM^+7gh%Mo@!1Wfi7u&')GAc&+,u9koPjIAb,:tj* %MGoPS,1Psd&h<&[#n'LBk,cKq+=>m<OBFJpJWgXUf*Q:iaPK:7_kn8InBS\HfN_m=!qgk,#R+3ZY\i.Z`Sr2I6K(2&WDGk>`6>?N %2VOIM8oQMmOtca\GFkI#:7^9X>A=\<pY#tV&%5rCOuR%q6I-hneq#05KQ29kgp,*CFfSH04:uaT_U95DSj9(8gU=dP=@P1:aZQgS %iqj9W@j!+pU$6-Sf.LCQ-@Pru0m>q4K5Se0/p]uT+`uKSQH:VgMA,)XC;30H]nZW@f8:.V3Yk&5-6mE_qLkCu7L,WfG*V>EmEMCS %71:4jO@jNYFANDs9*Bp8ak71$V/6o]5JDT8eg[-@VMuG*GdNb\2K.\<@UW%LRX$J464i$/$Jg/)M#,f&@8Kbd-S!%J8CG_Z/\--f %mb2D501*Na]*VN.iX#8,WHGO?mHeL6X7M?17nY3K2]6)HV8Q.9:"ZV)*[esGf54TZ@ctEJAj*$dRL#ZmV$\rDeAe"qH%IKgJSEpI %q$CjmRQ(Ufn#DX\.4OUGJI66qoN8"ag\G.^<5<j/E3^EE\a(Ef3q4!Lk/-:;SGo[g\qif=6dV/s7%TL-AKC`'\!>C=iG2:o/b5NU %:AWrZ<e8eZ:e`P:>,F8O![%H0ctmYY%WOF)\lAn+CpJX9j90KUn$O/_[46^EMhDfL$hH79'ro<2[^9'6Rmeii%#!Ho+$q8dgU<>O %KCu?)_V##qZ/2<<Ha_=U8:mK0qFM*eVg*fRP6X[kUd/U/=X`X:,kTA869KhU-F[hb2't7JY\o/?k4,WabJSP^@d!@(>K:9Yq0BQ2 %4gdJh1d[cknQuZD.1&r.O[Zf)iW5q/G"4SO)NH%\Y9iuk-8_'-K^0^sBbKVPbY=S(M`T(Wg^SF>;5E2X#rBlcOpQ:3@\tfg[BU9= %TZiYT[`U@1UYXW^6?_ca_%cWUIT*?\8UX]n$2$RG&sCdO_'^dR&"^Xu8fE(AWE<JJ2fZnC@D?NlDIRH3*uqmaaEo,naMc].QuD9% %3gUk%B/f_e#L(WRC0+^-M%r"o6P_Aj2<0r,f="6d@Mm,Re@i:_3P<m'KkBgk`EG0=X&US_[nje+.%!fB[%6ZnB\hp*q]@NY?u&lG %V&S9%g'9&%dZCfS6?SPN@ftXF\7/`hG_(-83ODdk$@>$Zg_3/8jfD@\6V/9XB%?X5mmm&JXKF=QVF`Z4[2%7&f%Qc2Z%++\DKp_9 %MVi:)D.bYqJM*7:n+X_GA".=T$X;J&(![:kV/RA1->>jQ(2(L?F(CSq+gF&-O<`8:,URklP(j)iPF%A_/`LKa/8_<0f&[7F'imYt %6bsILcm/k#j3k%2@3T7;=t%@moDr#1AJ=*E!P"DRd>IffO7R35L/Wa0VO7N441l?AkUOLrOrT0M>Aq6N0HCVZ+q[+WVqkJiE+.d0 %W"j3%`FEVr3k<)*&5SrUinLmI^'F8j01)XUKC;TM;"$(E)_Nh&X!K#r@$i)TDkPU2,Z^Kr&k6,6E2QgH&f&P&3(1=.[a%Kk7D"%c %KUgU!"]GiDbsgr1KA,#&mW#tb%O[Gc-JK*0(tLosVsKERl^pYUhu^e_%#!b!YAG^X)!d45<QIsdaZRQ#D-sZM8[*UE(#fPJF>V4M %o=YpA4+2):o7\$]/98l94VoT.(0G1R$5Kd"RH\>n5n]WQN7p=rIW;8l18_r%S%]_8k!g339=>EWSliVXoYm?tKR4;C1C0\IAs`8G %$4R*4.b%*\FKHHb0,!ll/+h9-[OmcZEG7pYF2A$mq0d:Y<kQ5r;COGh\(V+#%rB2Bs!7.oNF/#tC=&6=X2if$g0(NTdKM(E/Be\5 %Pju1BjZP;kXm?I$ajRVu)+=*`Gu%K!,MS*>(*t3%%4J33/_?[q)@>@IP:f*C,bU)*i@j/g"Ll]H3,(VoE>!^U*LVY46#H=!6%/8Q %KEC%'hJ3K1JU5sK.(n4Q494cr15e\SqY9:nm*5=h.%?lGEY)\$cWfJY<Yu2)C2$ipU]dB&,u(WW9?Tpo\X/DZS0uTl\mE9E7Vt5Q %GgKY;;jK?_gRs#!c#+0<7olNLA8+\F8*hRY/8p3\Ht40N.KjUq/pl*nIeN`$R&.j0JA3`1`*1->KXdahX*@"LCE$i<O,R^BNHO!A %k$9NTX*#Ygn<%S,-u?;)/QQh&Gle^i+Rlb-[e%2*Fh\ITJ&G;*P-Q,`eW-"PLTfDD;s"Zjm>*4W&QA(QWUkqFG&5ZR`2pi;Lfq]? %`)Jg-l9$u)*AM\"@]CG'S$k:cl9&OU*AM\"@]F8T9A=&KbbDN0&[V<3Ak1(B-'!uHX]FE/"038/bRiciWHQ4A:lh!T*&/_i,Gs0, %6c+e6Z::kNm"hXa&]:Do4mo_s\P[=aCh3-nfnaXdOA\5NMB+EVBG+po4CYf.r-J.<:lgTF8'FF^O-iA+m>.Hud3C!mYsDl5iSJju %E'^^kpY+V_a`bUa0Gpa1*\h^Oja"dD4(@bC2Q@cPGs,X%ZIkMPo@U8lAdZ_-`2mE0@]CG'AKESVNgR*n1"D;O167f;7nf>k`k%Wj %7ng>.?tij3fI6?I=bY$2Z\n.+=g]l/eBWMdO!A91GZg)p<GY0!>rHO]@d:88cQe0VL`H]N[b7pjBO->`LtRUO0UQ&04>u=8eFeWc %:V1=&hoiCpote>&(rArN$`t$>pBALc*4!,JYV7a^8bbDJW2NCmo4_S\KpgK5#?j1P1!(H31bK^j'8N,@g(eD&HiC,Q7%dQXAoLsW %KKq<s(X$.>(oQ\9!Yqb)`?GZH&;toAqe_U(J#d_gfeuXQ"(#E8:Hh((Gd!*Gp;'5Ba[@UP\Ebnf<.CnQ6jA2]@4B2s*@)&k/bln9 %5ah3Lc%J*P<sRs;<p?+jpV\7Tg1_t&i_jBFpBZ`#3",)T/=atdN)-P\THJgYhqKS%NQlPq1hc5Flud(^h4fJd@)5)H_rOlP(WN\t %*qn=M"Qp%?[rEaa^6Q$nL<CiODF;pE+1#=>2QabbW5B7k,/cP+"U`VbFQIr0+&b#I7`^ijTjW`mPopHKH?+nc\j`\5"gY@q[IWP" %9(;Be/d)eV;h1tq:-KXmTF;%5Qu076022L5Q<,6#AGH.gp7CaT:qG>PG4r61J%R?2X^uK*p;Gmrk(6ZhXAH&E)Ve_=##ZA21KKQY %Bj2LG_i*(pj<q1"fXaM]Cc;]?D[4daR1GrWHlik\gFf[@9)!\jreCk9Cdjiq<WJEKZ[E+;=G6qXHN[R[,4#l2j]K])kVY;P:B><r %X*AQIZ<r=58A[8o.n>1@L$W_S6\l?ePSlP7fG,lu(0fX09?:]%G0[2%i'DY2aX`H?U"$ca8hmX%MR8hs'2TuD]Y`)tpqo#Y[0i6a %fSFMcP8S0A8[)G&XZ)$f$sl4U%$lta#np^+?FP:tf!5SO"?dp2BPi[Uc"7:V/q8r!V_$_2`<_Ng_Ldk.f;mLFn'94?3[++>,8Q?q %ZXU?-GdEp2C-ms(=T=d+V+kZ''[[LD;27WF,#lEG-pW[^VJXZ\#]aEVTa(d\CGP8%TeNfhZG?j!TpeV0A=3cZMc#^Qdl,5LXW"TS %KMgsRTO<Y.N$Vnd4($Z%q55dH_S"r3a]_u'@qO,;/EA[#[bXSULaS;DW&nk0U)>33ZMU541*1>O-r7?dh<[s"]@f?-QeCCkY^*K$ %/fMNu6-GYTJCYM0:\mM9\V)N8:"uHY&JqRMctK[cEE\PpTJ[V.E-[&B!"tWr?/!Tu>.!_j_>On34Jkp'1bj/T>[VK/EiJcp`@)T, %^l2[1&mU='<j$NqXJ1&"=g7*K.9auM*n4K$&TSU+FQO9I<FeJdqe=(2-1d"Jf\EiKpY(pr+GqWc(J@CM;ac`ap4]EE!4aMI[K+`o %Zsj((49<`Y9j=Drc.?-19+S+5`<`eH:L+JXE(W78./:i5<4i3CP;dSG$.T[\ZS#OgbHqW<!NM^093^Ck7&$3KX_rh^1r"p="is99 %AuIbCT[@P#jDK%LP,Hk715Xef3&ZH$LH#["DM?rnPbomA,&hs9Fko)%&/-3`?#E[kiW0j%rG>c+5&T6$alO+6X49^HV\(B)4t(SO %Tl$qukX+Kkd*B_jgJ1tY>``ZR_#6aDGtQQ.JJ]g<]TeK`=u7CiQ?%!A$C$T[2N"OPS%4dBGB?_gI_1lDcjjba^tQ.);G+/SEuT"M %'*u+(]b%Sh[;In$S^$LBkKE420A"R/]lC8\Ut')?ac-&[S%[L\Rc0<4>@u.9?W9dor]InZ`UFQp9"e4S=aj_3AgoX>;/<eXX(gDU %J-R)I@YW7)B"P`eXoDd<SPfN:/(8jd=i+;tMkd*^OTIfsP?:[?Ca2PlTec3U=(+[YjZ^Z\,pm>iEf90#o-1R571dUW>65QcIB5?9 %>[NW\aWNb$(^+'SD6(X$[p%H$^\dn._FN@H9u9Ed>HPc=#?ESK=8]J-%qU%9FHCVcR,jSMcnmtCZ+!1Nn94"Q5q#*6kDSK7/o@YP %16^(j9rH'D]=psY2LmUJ'RVZQ>MaC&S)BKUgU$3=6!bmpiJT:,iUC/_rON7Dh7F7h,n6\g&T`Ql(@t"mjej9/dmX8ZgU;tPVgWJ1 %_Zp2jPH`d6APSs^I5l>Po9s/"-TL#L>Zue_#9!Wt[`nk7VB:^sC39lo*/<-\->"$?/>T#WA]ND]+Z:Q4R>.F9Pke!E3!aUJB3!&3 %GMPs`&r5P^:N`kC(YE`TU)CS[=^?FfF-8)G!*V<ceBW5\YN#dL?8sn9@W*6rGd<?4^^RE8h9&t1p1D.\J\m;Lm^5c@3aT3hTfdj" %7?[p%-sr2S_/sT;TI`@sj^FLalcYaJh&_YUljI5=S)e0@2V3pSB1EAbT6]%ZA8C758mu)>VgFK:m*81o`DWF2C]TA-I5p81<3Aa_ %L*j?ZK^'piYm$pgrP]FSd#12E-amD-S<<K((u%%K=?sA<lXWm4DIWLV=H_jE/Wr4D?@[]tjLJ_-W3Uq#k:LPO-$_+HX!N%/StK8M %kGBgD2ja8BKhEMh@\=*"W;2,\>sLX)2D>3F!g5Yn\ptL)%?LQV]Y[&Q&4)?Y,r]\'\S:8ZNGP<s2I]pX8Z=%^:36NO(?uT/F9-SO %>JZ:Km"g2p?*Fo9FMT/mkQ:#c:%Fg1!?+DMj.GN:Wo^!ISt!/ZnsnnFRP:2k\Y9ItGr3nP]pL<f+pM`'Al&M%F90ooaFK^2D3;=g %d05GI72KdY5SqdNMI>WL\q#I&jLLum8?B)%M([^9D&L,",]9d^a[?qASVhsr`7efrgmmS[NGtU"2I`<e2HlGQC1g&K8!<'%nJ,?6 %&H`9bNLaTG%+(;L>NJ6hd'O+^m'Nm\\@H9YKbIar&H`9BBUss1jU"t0_=Ft&[e%1+lWt[gq[,dB5RIKP1Wcte5<HnSXMTSCi(3G* %g$m^@8b1pl,9Crc-n:RC&0tJ]FqL#t`GlVs3[@k+i+]F6afO#P9F(g>jRmk:_;83>X'%pZA>V)<ZVE.g(Y``[D&&L?Ek&WbpB6/Z %`[`TWF-oo?Y3cO^51k[Rk"2G71"@GlPBI@FPV-[A"Vo?,`f:(32bVsX7WspG1s]W8s/%C33q>u9>_Ph>k:3nscXLE<PAQ'K2]tYX %1f*NA<FBO4jK8J_)U^aG/?NWXX10eZUB*t<c*OJh?@M,?*$%],Ch/B:k2t-;!9?8k4I:>X/BsA*@R?rm'nOZm,tuKNOHs"(Ju.k= %SacjJ-/8c=Rcd/!J5KY[;j$365@qq!RH@(X)\-GTH'2!Vq:SY)2uC]jo:u^p"oF.a9t8G(FF$_>XoF@tBq?97b9"'tTAAO`RJi\C %1s_-uTuWaaFXLDYVH*CLTcK@a[(j&GK+`hbVKEX!1s_-u$(2a78DW&`_+aIU4RLR?^=T*%V[r3F`&(sa@lbg7il_lMPH(]BfSM#: %7Q&`/SI[+p9l8F!]GOD^#$).I):P0r-:Mdi_am-<GedF>Onqq39Vk01CG"*A6F1N5`3P:T&;h%kPiOmLh-ONWkdt]2]UFa?>!&7% %gF&@&f:056$sMP('eXp=MJ[PaGe?No;F[Jg;Z]$31W;IV"XsPRa^PNa&DGrr;V:LH/Ar3P<d3".]O-n2Q-52L<qarH;nT=JQ.A4> %0I]I<&t"a?Vq))LYbBGE#uJi+mg0*C:E(a-]D>2O8]$%VUM(?MP8K?25DQc#ei>h:8k5.00FhX(o'O_tZnerF_NH7Fl^4t!B,M(3 %PECO&BcD*BIDsl-Sh_qlJF>/NhX(-q:B"iomGd3JT`#mLJ96Q_*-e8EP<sONZGkU<]47O?At,WsTPZOdM=,`&_O9`$&K?5ge@P'F %gYM3;k=]%-$9<'NYpV0^:Sq=H2ESM[6`kT8(1J,,gM'7W%+4P->_OumGS(ak(V/g9DY*JObEDA-4R&a19Q+'Um_&Suo5@YsODAN8 %5cc6E)>-Nl.(-6imR=A(+Y,cM6'A-B:gb7h[@$5oGo'1Ih['&M4F+:am`F4EC%?C$Sn,DhVsY@p.%%/oV(ML$E%7W)-4/j8/'c'> %J9X"I@mMm3U(eZ8SHf->p876LNS&$K_PIW@0pho?@<&_&M^`U9#iWAt?=E"h!MM)[]b?OT\/SR!:I$odkQ>Tn$Q+)^-%TY83GBK@ %+J,Z&Ut+*<@!D0g!G#R79]I$sJBN_:<g;$AFGY`$h$@ZU`[Wled(2L:JYT#<b[;C>@\"\aHVrU7Mi2;TrL,',2_7$rolfL1\6,-M %';pYL`j4>:PSGI]._p1RD-8t6jT0S^#d^)()fa8I0B/,eWY<&)lj!R^X&d0s`3)GdCU2iAJD!u-\8H2@!FZAMpq+&feuR\l5^T[# %#d]Vs6bsIlNd$3*c/uC>Okh8PB(gB`>O#[9&3u@NitX:)a+D/ho[2O>"/WlF8j2RLbmqO"dlN2.1%I53j2dcpo*62$>94n?[(#X0 %B?TsR:$#[dg`K]r$k5c1#AtIB2GS]55Lu2Q2W,mk24l1Z1,2:dOa2QW$S!"DCrMGo_Rq"GVR/6kI"jF#:P<8`!0mmCY3gPmBfd)U %K'rlQZ+A`d\^L"HrI,/GoUAR+]A2U$Tr/"-hZ@+lC"k^U^trf@jomY$V2"QA`j;-^=F`<eL+/:O(SFACMcb\!KT/A@(?,d*-r2N, %"lJT?>IlfR>iV'hXY@j7$jBRg@bG#9`7!c[CTe-BT>OY%$69]Ggcuj?HfK2\D1kT?N!G_Zk1SAS1@A4?ma*)V`Nmq`&=n2(3r.Ge %);29'r[C^mW..[u`A=Z/'-,^<`&ceXqJm9/ThlY8;H/;`ZPoU]XaW"Yn^_Ke:oR=dF."dZpV&##7*@J2P;sY&R7epL*/V7(0/4=;# %.\,^]jS.A_)K6/es0rF5KNq7AUrluMDDnGac0QLeK%]*c&FL?]j'Vk0$:nWXF.Em`h2$-AKpYJgF`#jp%f3(l.tma%2A]'rP3tbS %[LBP)$1bsU^-(f2G(&1#!=q8?5lLJ5_r[Q%b&]dnn,9"GrS+)SI.T)KIIZXHkF]N"q"!]Ts8M*Ola'6L]_=(G?X:?@-e8"d:OdYc %LR($u7)97Xp#4]R^Q(PVk7IUR-lr9[khlEX*Bg;RJ#6k]<eheA.InB^m"h(@2lT5-p'0q%@NR./S%u#(6Fj*X'Z,P@V%#]u5?7=U %0?E]oMbkKhoU<8p.1>Z^7i[@L9O'mWA"E1%,,cUV_&sF*cs?h6B9+sS]Vq3gZi&H"e-C>H\:4tOYs;$P+TctO9C[^n'h:1#kcImI %=@/j&^nI2/+,5m?CnodXicj+r@A*4p4G4\2Gq;'g!mHnoP>L2"/O.1q<H(PZ.Z&s@C\M$VOT`+H,S+@dE[/FHLN=^'9n`Y^S;l-t %^T)n5Rt3.t@]jppboc&mfW*J`C7L[5FUa8%mR0?oT9=QHWiT'0U/Y8?Q\3`0;IX*$BuHlZ<s_uKinglk<u[t_Z@U@N7$>@?c;8=0 %UBZ2f$,rT.[FI#j'IjhGAUbhOp1Q7roQ-rc6kMp<^0N(h+X%!@FsL'&Qbc/],sFu$*u)<<1?^f5;Dh#kBGk2rlJ#-u]pYJ=N=:`& %MR3]OD&UfC1j`Z9EbHl-%M'<7Ot);f^9u1I:co7ga)[Q+V/ql`QoDi8[0i\^F;o4bN2dXj:oP*[Q*KLfl4gM4#,<o\(SL&"#uqa5 %K<0E\c3c<c+@O7.$$NCe%@os\6,c7SG?3[)_9#.d;k3Wk!nqh.H5#2?%s:[h_^,ZdQsP/V6[TBK<'KT;eh3LaA04fQFOl93r^Lt' %"Utj^dBk=FpYld2;O4MDTC%I5#6]p6[\H3ckD(p1]tJW3+?hkMrbCU]r.OC^;^kTo<`-A9`V2J2ks/rKbEDNQ(@$:D`'FE22#3?" %cZ?cM(t*Z@l&*J=H#^?nPILtrToB4Oi?D=<`T2;saH?B:SJ?,&!j0Jt0o8KGh!\-33I7[W7`DXb`ll7B91`7*X!#!/cr42Vc6mR* %("D6=D3@O-<s%!\1OcMQLh1&+9VD>3B#OsNWYJcs_.gZoY&FQe(m=),;;q2i8mN*7b/CiF3;$U-^C`Tj\9lUT]UMu-.qagqGS#I- %$qu_(c48<B>WNKAa#VP@<d_6rCcr(=Q\E?PS+%\H4:a/`H4^KF'q#rV:,imiZl/fc>0W,]2,YTD/b[GE-7]Nc)7Y@h;aX+4S2qf) %T#,G6]Th$k;LM%L7)MN7D(\jcB@&U5Q:6V!,p=[MUE2b5CO)Qs(umoD1TG(CTo*>-%jFbD]F0C?j%(jQBI,pb!+cq#).ou0WF,lL %<tf!c+M\Nm9>KV_JUnR2[0N0hF'0J5,-;9`j6pd;%u$p=]W.maeIl$+WJ]=uDil;j=\$EtMUuTpnReI&YgmE&+'+[A$q+B.%UZKN %jGI?eQt5i\Nio8l_FDbEgsQTb/e>eL-AfdJNWKs^qAVc4dTPN=G-MN#c1!nI>j/E'#kNgQ+QJq^aA4<Q`q;pHOHQ`sm!/rMTS9GV %E/,[=Y#)Nd'Mr86oDHj47NfsE"<?Q5C!$oM`Ks=8Ef:aMTYg%gZ/=0W9V+.&i`TJebIj`\ALAL*5A;i6']#Hc_1P2>=NJIUL/fd` %.Ydg>rimSkBOWYsXW9a(EcOL1-YFEPYIUd(I4Wr$QO3`7!FJ\]KD&?kBc'2-kXT_gPMooS)Ess)]V-,FY#K5_lE_Kt%ME1pB:+c1 %i4X\:Jl\[W`eKZp-ormgfofnTa<G-u?H9'b4tqCbc\p'`d-t&l@9LYb=MF&(h9+_(;g@Mi![]Jb]rR)be&_-&/TK?i7)4GI8<+(] %QeaBs4T(ZoP\q[R:AB5@qm!MSWI<gk%RWG+_KB9:K^?@<WERg'gH?9b9O/>lZ$8<HOd$>..;a"iU<jAc084KA%^P_WAV9R1KGp:q* %L$^`+^^XN!jl=!#3cn033Spc\<Cnpq+_5CBY<^_@*]4g\=dG'a(un)DJbO[;7hZ4%$lW<EXt*:)Ptct^>SI=HBpro`6/iiSc9=ip %@Nc[2]I\f)lZ%dhampVZ1B7-oW4-)#DihCKWALD9!.rc0W\mBjdWf8<K9mi-)&g%lP#b?SjC..[qi=$kG:t&QHZZQ_@/?r;,q,5], %M`/Q$dMp\lmfT[Y@Wo6'6BD1".HL^bX18"^Y*I'OXit6=mo:l<(Y-'5KN5C;@;^6SOpiM-k`^Fefl^Ds8Zb)_$\M'm-Gb)/&m/[Q %aMFaN'*F:hSPV&!U-O?WRdX4p;N_J&(K6pF:@@J26M4HN>XjZr7c,1$=4(SA2?]YXXj/&*f%jPiBX1VfqgHR":ca98%/KH=*^a5? %K'As*QWfS`'Z`J`Pp:ZTTr`N_%tlq:V]lC)]#'?fR4Ve)OJ7YQak1U66Z)XZKJ5/eFhYp#d;&2nWOGXHpS/7<BX$regM58<4rkQ> %=E)Zs0ci;2F=S[nF?Olh/<`e89#3gGWk<nLr&JTi$lWd5<so;?K#55<AfJah_`1gSP.TB\>mOV9S>qh:)EY^NGDYtIHe^(B3$udf %LOIK?M.?@0?!MLMaQA!$,MG6<SIqR%g$Rk5Q3V*77F;=6O"(kV8JL8/UNSOJ6`a>j.S?m#b6pBD?P@6/%_B>n6#bhe_=tL-ZMG)S %E=kRNE#`u3d<MK0PErlc41Uf(lBbJ"4:+ANlI_'#F;;*"98!aST"NXF&d:7?#ddi9a>UmSD-N7X^<(4gT0Q8&:"TGPl[t%fa#D2; %8$^k#NNiDqHG#Y@%<=)(Dl*^F#P0YWlo&AlqnBFQ*Km8308iQ_X:-JbQlt%s-CG=>W/qHK()h=PN$D.D.2BJK)YPjc]c2/E(Y9q! %,hUmAa`Y22KVIAejDPA#Kn,_eKa,'8/BQKi5b\9e>t2($W3!B5fV5]mpEc:p7X0aq(l5Z0E`lnU^WR2RJt\:K\?q`WQ475'C=A.F %_";/)kU8RoHn8b``ibT2\s_8FjoF)A*\8g)b^+N]J.OLMTUGq6UM!tVj^u>c2bK1MpLSGi[N$;CAjCsnI!]l?Q>;mbP6BPs=e**E %#rJQZ)[Urn,'HV&Mj@RHk1[IjU:%s:i7d$Z0>'lVJ4cZrStR:7TNRgKQ"UMfS7r\JapMRR$:PD\mTPUE8">$u@;7aP./T"$X"&WV %_Q".O-EfbDUP[I@o&"eYE%-]tqMT]br,<E0De83\.4WQ-b;2i?-s?@Ck(*m$DGpU16PAZ*?drP>JfqP'+WgMNf="B#Tku<M0mY0F %9Cn!`D[!2T`!JjLA0hqr`(;p@'hs?A/G69:SD_?m?_[nG)adeW81L[#?&us]o+U"'F#l[j'rU'0Ap-\D[3j0p^>.fs,sfHsg4W"+ %LqAWIPol0aT!XfBJksV9-1@:gdS`rjWMrQe7@cG%Vi"f]oU!Kf<n+qc"Yj%+Lo<\[mTCSumOW@lG+epg6!VAV)Wfq2':o=lco&*l %KgHnajI:`AM(MqFK`]QGA[/fKf[K/r$VQqKod[j.27m(^$EBU%TYoO`(h'6DhbCtB4F+D"JU5nh"0*cd<cKNcL,Bt*'a>3_5$0@h %TOsjE:lb[ibG4Q''F%I9N,OaIIH-SGP!LPSO6W1;Jq`6uKT@Gpl9]7DQ4u&lq7L_3egoTt:s"Bh:XGo=\a4\"\q!nm_23ghmhBn1 %VfXHXjJi^5&fU;kJI-CRXeDEUfA*K-#i*R2fh8=6FiMWjCo3BA;HOO0nj<G?EH7#/U+N9<k`q_ej83XkOH;Sn_U^tR]o(Of=RTQC %VC4t@5gk65>/XW$L?)dLd`*WE^rc:N;2M9PSLtR^.3**<5tauFk!9s0/5.T'k.e!&qFefsFk.\$Lb'"k+,S*SmZ5>#IQa2>`S3j[ %Wo+#*G;8k]K`RFMN3%T5$;VHN3tGAlY5M'1\Y!,.GZHnSR4tN%%\#Sjj-3beCjH@?Ppe%Z()$+,^)dFl`_lr&kd8H3[qB42N3L'; %?NEY/VJYb0?Drc=?pP`KJ5E^Vg5:4\I=kJ5/rPXnBR!adc3BT[+E9:TY2'*S"trZg159*Lj:46pe"oUtB%H8l5O19RFYCuXRFK,> %H0UpTp2h'!PDHQco&:Ck-a:-YMBje%O,4TC0-2BqNda5G=G<o0g4qLX8l9;`$4$she/VC4'Gm!-c"pm_7*-b#8a(,)-rI,k3X0=G %:dm1X\TiIOBNSf67Cna\JU%cH7CDMsP'#2]+sN2#*Qf(Xmjb;gN\2TX$>_=N9ZoX)g6?0g@tQ5='p+7gMB2tFa^\:FKt,*YSeNuJ %4r/f-Xhu?k6i@")'Z-S9C*+\i*4Ts5s(5]"%fF_AD<.EK0Wmo&Nl4WuZ'pYQLJO`9+/NNbT84ngTX.^?%kIhFi09-I\OpCZ,P)NF %A^f\a#sr#O`#PFU00:HpZRQJo1!Q2I^_#fOW-!<H`*#Qa>9-U1]l>5,&:/^nMZUm>l`DP5@9hauAb9MM-kjGB7i"iddb6Rq^mE0) %&F8d;Bol/^1)*@3-m]&r13/'sf%u;@koC6u0DL"1\Y9uun%(f'oW:l'/KI6"1][Fj&IIA&9Oc]lXa2A_Rq0-F^o`HD4)+d3jg\n5 %&lPZAa_$Hn],XO2;ccbb*)6tj9j;:/aX,(h,sk-^5i0L];PV^L>e+1pWqAZN&\X`395tV!S,r+Pg5A9pERPnJ3ZB>Hh3)U1.MN8R %YTFU'@BNMPN]h9a9J`#0;LD)-*nrE]kl`tU7k,Msie2%!fI(_pG>g5(/4IIqCJ(I/K3=<g0$T][S3FL)>SeN?;C1F@6W5;.,mpr4 %ar"-S4NKNsW0J'q;kiB0)Ld@0#_6.gZ0l4`?$cAGj:-i@`4F:BL:58kC#:l>\<6BIa`K$G9EZBOE^@hXhBFSaN;H1i_VZp&%Z)Ws %!dt-]J*Bmo]=fUnbM*E#0%Vk0HtWdG24VDq-l_<Kh!%bXrLY^9C'EcCNXlmp!Z/Lu,\"c%MV`5F`Af-pZ_j`8bTJ^qQ%\4i7)p]j %JhG8n7@V1`0Jm&W1pikE[cF;<5fVq1gH1<><LftFKFmCU>h]!7Gn6%XQA[^SalfAlX'>gTX;](ROR(mOkDM?t[[tSd%KZ^W%0o&P %f<[83-)+>_=sNW)2GSDsk_\R^K[#mT<a[<Yfa$`HDM_G:LNHZ>o#9AW:ik$u::fob[57offTER@4K]<FYpoh#/fqiB>GTMo(8n^A %gD4p?[dQ"n!.Q*f;c-;((;a$\PG7<fNu%h,)ISrmTp6:HY)gtE"ISdI@4pT>4=20g(E+,:c_\+X"cYEq`S.K3^*[=nCV@WR5Z*Q7 %WCRN"Q%''"=&DSf8F/]PG*K'>&g1pPbnLpZ.oM$31Or)coaLV%ZP'5ufM0g>hrt#4fmT@c^%or"HEl11l[qd).[g0kX2%=uCe6;g %E6EAM)2.g\=34b[^LNa(pl-`$-1O&Ll6.;PMKVK,nP#e52$f4/'6KEG%)8[<R^4@Q+9W!l/[O"u'.5!ClG+n&PeWh7L`$WN9o/`n %3]n;MRg.G'L8h8;Cl:ltdi#<O9L/<s;G/o@76t"-T>VWiQ]r2^!/m/3ANgA8L;L/q=.%@s]TJB0k$c_sX$Ac[P!=KC81Q-;',kX% %G;Zg"X.i1A;5M'a:/8SUAP$.".WUK[EFn!PWc!lV7T"X>REfW%PHYsH=])8PTNlL;0;X?[MOS374(9%Nj2ad:o/=f#QpEV:pP>gg %,dgp@57l%Wb>"o8qW+MDL1t45EYaON.8>^s9bmd/9U>nL-1(USZ,W&Re)8]:'eG[b?HN[=8q+(818T]_N1;W5WmW;?.5a"pYUGB= %:*$o;70.<9b;WX2"hD6$qJ)0?b9`Vh<A%!<a:a(@Bf&G1[a,d:(,a3oDHuN\-"/Of[%`g-(_Yu\JOU1#THL1_S=FkP(5i7KiAJ/6 %d:X=]`jn?nM;p^S2u9c<=!IDYDjSn)28g\75\A/SCto*No4::M.SGf=i\M<:E/jbqjtSI<#(aK'/IdUi8:$&"dii!HL9/5t*:DT? %r3U6R+gM-jI/lIu-N#5BA5Ea/#GI2e"[ue,'9cCXO[UF1.`10I5]JSqg&^M+e#:R#qI=5OHib80;^2>Z?_,G9\lDbB,O/bBF..:Wr %lD8"@0o7ud=EPn71"h:dV7Y5j'-YtY(C6V#%s4[&9S8IU:&!,8d4Sa_fQjkG"0]7?XHH?,3$a=qBL+t))=g\TSX4E7)!g1\P#\&: %7u@2.Ju6L?1E`:um8KWgQ@(+;?m[6,ZfVR#W(C)oKMcr=!rj"Y40GFE%TP1nX.^ae9^&RTRtS+nMpo4&)<.s>0OOo_4K8\O":81i %<h69J(>U4!_T]R=CK&Sgmm);Al05'kc#;?jgQR\TY*KN&K=tsCimiPk,&RPs0BIo,[%tSEe"A.h^0llcIabs#[8]$o`ORA]&XC0N %ljES8!u,^VHbLM^(ahY.MLhIb;F,p\'V#=O\ZG3(,r+WRj6TOdW;NFk3B2Wt9-R-(?KGk)kQbV.a>d')6AdW\Y8IK0p3i]1>:jSB %W6%W9.^^"S>T.jNUPiE\g':C+E?'M0'L>bR05beeM:m[V<9&#YWo.q*aC28j7I'qK1cA=H*cj2m?j\/kb0++4%I!dZgT\'P'gaHI %0;c`fKGIkBc,<_:]Xi&q2c?RX[1rM*G!ks_5_3iN&!a//r>`lE\oTW3:ke7s/cn2Amq3./oA856e')UY(TXs]Gtdc5K[)p/J;tQu %M,C[@!jT$j8:^sp3kVVCpfR%n19:'WBT<cT^d6L%UOCPD,rQ&5:1'[skK'o=^5nEg%MTP]bDq5qg4OttZo]R0&?(tXnb%]3D'7k[ %QYW7=JLEX+U#I]?'(YF'ClX,cCgrTH8`O[;;V[D!Bf"!>-W"!_8&5hfqmC[XP$Ja_P/%OM&sn\A<Egs1"XF\AHOUeATsR6W=#$C4 %'LZA)Vi<-o*@!O4G47Mm?BNaTa<`J%KgL?6`/2l';Wbpc<Qkrr'&rHBN-'Lq*[u>qb3J8n-`g29MR@+4)3P'ZA@RKl$>P8>Y0N97 %$<'u-#R^L7EmQMm@ob6^;@`6QMRs-c^2:!'6FE!k`'_L=f!@E1V?ZK$dOX%(Mbfj\52tBCXG0aDkWm%JZrppT`co[s8k1(Y4DeIu %-NPUd&7nrjHEZN,@RbGm>-):?pmSmI!,a5hJfkVI7RGjin6gitOrPjcU3fH@0aX@>&4n:?O/<u.B:9tV'S)%H=uLI4J]q(ap1PlT %U`bj5_6(Wu2k3fo[?,>]K'Y=dWX^4(fqt[2N)jpS7aA9Y-3[a-9!<#_CsoJa=4L7M%Y6U_l^O7CEfk)<?3,S>7o?-Q/+@h(9X5g6 %>mqW-$&;*Qpn8OD;t(-#[Kfipk#&0]HG0StZ<Xe$>WSb!R9:4^KdZ)A"A7g!UY'u-\4Trbr9D_mMIcu+W&?OG(bLd>o6haf00]N; %d%jbbc&FK@%a;U5e#7Sc70'CX^^p"_.Yu*&a5]ST!b>(eZ]."$69%;7Q&sbRCQWmXA:+m4IYq,,j5gh&i0\`ji^S+tf'4XDL\VNb %$ssL6$OplKDbkdNgARP_h(R1&;C:P)5_rT`A4#KBe<VIAQT`nTZ?Q,OD`S*,3BQXGN0YS"!=F?C81V\Qh:/eGFZ1IP!<`I($G(qB %31/BM)_2dp/;e>c6`@h>'Zkk,p#pEqEh_?jD40$:[6ol'<tPVC01^)A3gmT/CGmYIV0=>1Oukuh=Z]Nn!<pSR#uYpMWmn,K\VL]Q %mY*OBhFD[nfOX.]71"3^>dG#8WGW<0:8;I!MCGJ?0Q+7`]Mh\(R6eX\@g$+[!^@fTLVT0\ZL;jDZt';NFD98ULO?jMqUWMdaD![U %9Gn3&?r1J@H%gHGfT=%jiKVmZ+]=u<,,TTAXl=73g:!/<5tIYBf!-QtC%@o5<"_>hkUBo'6nFY/Y1Ah-6(<1B\!Bm!<3+Dr#2Bds %!=SfQ?"t)0mBPM`6!6("@E5Gb8IBccP*k\F,$%eq+m]kufCe&6*4M05dpq/I8.^ea^,0I[>!0APTM^9md7>@B-$2Q68eZT\KVM\L %m,X,#(5T^aj<?%gPi]@`'B%^9Y_nA_!t]_j!N?GP6l;&[ab$uF1jVZlPtlTIe@/8#2rS<nf#bl>'aD9OoOr</R%pm2JNOO[5-KSe %H,G"gp/qW*(BQ`cW!55i2m@ra\h=E/SaY]!iUi5.#H/[/!1=@(''F'L$cJT1lRn+(^k->Xf>k^Eb*`dV='Nd8:cQB8+eDb=os!G. %K[(j<+p)jSQ8;Etl')[(&)f8tYB>8hJ/GUte2cJ^^p;5Y<sIo)A>IJW<PeJI98WBCR&;K,LCHuum_e0D]?`BVL4)_@8=>6bm7?7X %)-7:\Wia7%lFuV)R]o0L4_0p00S@RT\oJ0jH=lN*9`QTNGbI+SLJ2mU(CLh==$d]OKekPt7d/'d+fngp*PB*^*pnj8/u'M(167fK %[U\d/Rc.s,.p0mi?K$s-[]+^fb'K!"X^hK+$t^r!8n,f(BX"8jQT.uCg6TttP,M!F/>HZeEK4i`?mP+TlHn=1+n:PJ?Xu7\2!D`H %0`s=Xh;C8b(BihoN+#<6V*:$B2m<\Vo;c8Pi<^f:-jl8!F3H>6J\<qd*&F,9.A!*peo6oefiGb+ea-WMG"rTill')3**uWH3'3f6 %<Gfh#+oUJRKu6LrW@77k+"J,g-\'_Bdqc@nPnT^fL-;It"J3LC2MFa[jNGn4i1h-l4JW]^bYI;=i?0<>pAj7t'Pn;!7Tu'Kc:PnJ %-<q(o6B8#]@.3Z@=&d7k2CRK5_9uiY$?R1!Ae1g9@#!$DrhgM?_aPS0b/t,.O-N`W16*$_<p)4/M6T$Up&_e>>LlB$8n`VJNg`@2 %fNqfrjf%2ed!J#HXp<:!9qO,h'6c]0/]K9@QIAJ!lZ@F(A9T\Ngc*qb4aG<j#pS16FkM#MTns>=7cBIc?6Z(*B.bG>2E6][)X46A %onXg'<gnPXC-&aL?Os09b'r\N#QTD*ISjI+3+f*cK@]7`-X[tug5e,!LANi:PKku:J_]lChiYa4[;#EkW,IkR6LKA(aAH>brN'C\ %k)l.O9*\+M2RKPb4b.Qgd\n8gaN6#TLp0e:_s5<%(SDnlB/lD2,MT7$efji,LJeOoTCn2a**-$(=?-_.ROBl/@^HJO#tB>[d89Wj %/#L?KL&;S)6o]-72`q_JZu)%(R34R2+<[+o71bRV!We]oKNHPU+:LgB1^91?m%>g(W9gF4!qg9sGU4b7LcN#n'j=#0Ej<j"Jc^J? %!Vh]Ep)WQu`?p_L5sa5Vg(rVY.\YP9LYT&V>d@!fj1XuLkae)+OE&^880CIe:N3#FXK?*RE/b6n[EKNtaCe$64dS3.Zsbma)C9YX %An%Vmn^YJ%9/.&3MfEc[K7,HDXD2m0(7&0V[lg1`]IKG$#Vpgh4;`76BeC&I.5GNa@#\$"5p1]c9A8F"m\8!T74^Z5k#)Et2/>j# %#9/&WG&B&E02r?KG)[+U0l\I\6[R;@'FRf)!:Fb8=fN/L<ekf,+H.^R&Z+g-100S#I5!to%S/a*R?93I771H$lr]5NiA[rBkq3qj %o*IH![Ml#$3]I[Zd?+63Oh-#3!Y]$B0AaMF?`f^=3Z;Og_3Q.TRte)Dbps]Z2'P'ko=rkE//A5fVT<DZ;JpU@F3&c0#gN@!]j\K? %E'V*_b@:=g=T<5tocKP;nP@IQ'bGnDnS7tpP[<Cb#H,Bk^:7_ui.Lo&"kN1IahTAI2BCpYgj;ADM?ci^;=U;N+Tlc:C%7*7^)I%N %60[/7D>&1MF/*ng8pT/eGXiorg\@Bc/qi)Apd3>M>7&G_`G,'1b\]diEsSM6nRQAXI]PGe'de-Kl7>L=B5A$u?mY0QQAZn&[_tt_ %fqE\W"HF5S5BD?YO^MZjUSpgEnn)kRo)Mjb-&\-pA<c-Y[j3m5aU%)7\Il:o5r:EBP#M+n[LGQ%$-8'LicGPAhqFm;TX^-&K0n$k %'.W6If)Z@m(eRX!('p0SO['JQA0j(UoMg#o$"ohWk:VZh(_n<m;gcn#3&q3:V[PB'9d=4,P7W?[oH"r3i'V@k>>td=iqq2EgR?C[ %S`t1h"7.*cm2n.Oh9E<R+.ie8+cakR9LLo=*]+U7`IfM4BR%mGPkTFLKZ#$_mjT[m*\o05_aC:I1u)qWD@c5@ceEf=iei=[Up_n& %.OF<%"aA0YVC9"%"bj$4^EUu\n"-+43r%q?Uua5Z$r/.<ON<@s6<5t/"?Jek<sY"tH7"8!a,WhF5TQDtKSj#Np8K"u5C'?C=/R.U %lNESP]P0+C(!8FO?%MiAL*OLoU0'd8hfl%M-pUo"NAnH#.\thDH!*!s&C`keKq8XuPHYa\$^NF1>5<nr"e#CtI2KdL=fW1YD&kH3 %SEHlnJ6@9:#=hTnMOBsHWLJRAV-Fk15XK`hh9gaPTVgM8YArQ:qB@5P1uJcFX$P$-V8\n+#EDK.Uk_>!WG*!"`SRB<">Equ@?M3U %2aOocS^qJ=W*'C>+%r86dQi2D830:bSA7BM9EbY2*7@t>9tUZY5rf[Tj`o69:f<0ql;@O<$KaTOC!;,q@L\_[:e=&M32L<GaMq#N %#sul*Olq-gU[l?L!F3d+o!V]gD/[ff!J8):^f^IYr^NeP!"X,#Vnc73WiqlWY?M'2oCL6.BKnj,S"F,qQE%N73=T7=f]kZFOub)R %>Z#p9ATBIZj/'cO)PG-hhj9W!eM"k"'LWbPE*"q3&919NA7e4eihT3!`7)kR<##\V-Y>_C9$QZHBQQ-+=ojm9D,(GuAC#JN-p5p\ %\u"`?Tl3%Pqnjc@;[#Qk-$SP1R+_3k<F#&p#D[;ZY<%6nr.LhEeeF%;Jkr+L5KM"RelU5*Zl,X5OLJ\(M$O8^IrA;)%FiQ03`&@@ %RgI%ZmP^gT&jrl*9p?uW5Zu7B,m[PJ(p\\"&;'BhDA7K/KDmq)MC>pY%_aDSbg;*C!S<mk+RgA@L2[XA<b!lg$_]2*6fe-]1!@46 %!gb.jS/`8.`+a8E-X^j@:f2mPWH&\]Vi/r2`Y>YthD15e`d:I6*@8/@eSM7?S0Z%BN,E(18M/Rs'tTjY]uBMc+l'%>P8&DY;d`ca %R1R_#023s\[Rpc*0NA^"Q6noEJF%GM5:1VbE)QdfLrJTR.@FE0DA3?Ac!EY9@utZ5]mu35OQ-Nf2B_O8`1d:`JUVLB`_Ub9d'hA] %m<&&k\"C<>UPM$s>%O;pY7=MH:<B[Fd$'(pBM@,*^.TaEJq7@BFQ4hqPc(?eBaft$K#Tih$%5LB;D[=2=Xhu3ZmC6<JO<Ip&'5K, %Tg%QCMh7ZHZQpte@C4JSA4HdlqmgT1kDK1\\iXSb.IKaVIq=q1\#tMOZ$W^3q::2E94kn[\MF;70>+m-];ij'YQ5;!8'="LBqnV@ %$9U[M#jMt3#J;k?Nf<N0OtA6q8#Q@q"F?0O&E$"C]MRb*B%BXPBVrH3Wf][S6=`^EB?k0^VcLG7;9B3I=#2=5r[IBN2Qk;A%L_B" %Ta,PUip!Rq/Ye`M/_kGi+"_2iY(0e9:%1IP7lP=+1(?SCHAc:A+ZR]XDQCZg%M?>!c=$$GfFQQKps]8/]@K0BKAOf?8F#\WCOJ-F %#Plc&&3G]&#>mR=M?f5)5f(.u*CR_2#TcBd-4hZGK?[`A[P>AI,IkuE)jK?U&d/N4&'`Mc$J8=Op:HrbWklhE;,N!8_<Aodc[[Q@ %_NSUHYX5nQ6S&hDiZUDrG_kL?#4sL<T)XVdTpRN;*@m#echGcn[q$oZK&>nf&?$UUGV89_j?PV&OGQm*K#+lT2'';8:IVe2<riI8 %@&snS7Ou_*3+OUd&(ZeDMIjA7f`<OVn^KBL?:h%e!b=ZdgLr/``JSEt<Y/NS2Wk5)RXu'f5Sqtn/C=(GfF<"l1SE_+g_o*GHOtOY %W9B])SO$9O=BoZ7=]C&*iUML8@n7*_lqbkLk8NWAnXnli"GOrCX?2(C_M]C!&KSe/m3.Z]_*Jda6+kYICm:l;[K0CO]r0FaL8.?D %:@rkkcR'Qjk\O!nA+ZNO/iZ&.&0Zm,YqZqm'WOn@dePn'N#O6MpPp<u_+.*%*8AAe=\nB-apqn,%cPoJ@M0\)8iTqd:MO/M(?^SF %DA8^:=QYq(,XY>bQ/E8<?oO`(j(`PFat[&pYuFC#-.+S%DZRpg6%qT;Z6B)>&7TQTdErkCCSW05RJB8NUUAC9*?JgP:GTkA0dVDr %l4@5-<qHJ"9<@UN9j*('GQ;Fa<'5]>"?YuKM+aN#!RrEii^)WOo;&lLI0gtSrWFRpE.83.dI87k'<&DKNQIg[Omb\KJj+V`Q&3c< %H]sk*iB;_:"<5Da#Yf7D4b1r`.NUiiJnX0HBMG/Z!Q6;br&fM`"=ih8DM!E#"6`HI`IeFk7)ad,:139KJE-if?AZ`i#fq%0E[")6 %:&-NS>"VaT%o-bgX[jCQd>X;:ARYcD?8T2X/#ffR.lnDc2WdtiUGE9798&L[V(%Yq&6XmhGS"/<W-Ak^MQ!3/C:W54+g$,Cn^1/O %Y.M]a:L:]qHA'#J'O\OuP1F,>]su9.+&7GS,^M[hk$WM[IOYiSB]MSk9!\R('@X$n?$\$GMKaAocWS*D@.Z$?Z]]\m@;.(D&A?;# %\2Vs]<,li^Q\int2r2YVEF6SLWSu]u02oj'8RJ.M!OOLY`<1p'TONuY"Wok"e>]Bk:pErt\:;%fdI;[<Vbll5P,G&65t+SCiW3Ud %7E#?9T0g?r8tUuu0)MR_5?4,'GStFoTb0=-o^"2.Le<@Y5Zm4CfF;RlbbCl^;d]'A9)-fAaHd+Rp73[P:TIA#?A)=Z'NR5F7CZEO %PuKlM$7f(<TFS$$GX*QU4Mq89Z/QWB:lQ32/VT!C.]nNCoiTnpdjtJO_Pku;4@jNa>sqemCFqhB/-BiVZDZcLP\YQ,Ci8kr=\L"j %W@CRdK:0Rf7V&P2ErN&<.$D]mmPOSXF#J80#74-)_$[E@JHIN)4pWQ37^kjj0"-H-BHYgf>fRWH+e!X)j9'f>g/-bR9*-q3R([AJ %U#T!YCp:,Jos"P:6I(W'TqY_PJ3T.ci!Qm.b1=QH+EVjhSQ`HunXsX*XQ$teCurhNWG!e#*`CHf1d%_:Xf-J8?!G_GONP#+iBakg %7E'nZgTl\uf!kUa[_?O2>LS$#)RoLX#?86&-f)P_/`,OEQ#?*tpTJ]I%JR&LM[B92HFH`@J;Ug<]+:ic$Pa2NHAc(q!Hi<l,GlG3 %6)5kNE`e^AiZPf;+%qa;0ZdQ-Mh^b,#p8r<XiE;*eagE7nKCMkW?Utj%q(W$UkB?),-"i_&<[T6?RWcZ"drMFZA9U\<-+uLg4G:h %A#YAu,OcJ.,K\o_AFPLCifYgLLl'DEDc0+sO=^+Eip-;)#*6li"jPb^^igfu(CV#hW>LShp&6h$EPD1)Wklha+RDB/S45,`P":FN %8D%rh*b,&;W_f\sWPb0(W0eMQm`JsN''<mp;^ki/9@?H\$-,b.'.A*O4?clZ(`FGl^"?<>[skSc.1`@b$k3`G@16B%!EG(I`SKer %s4LT5XcbC[mfBhTU#Q(%N6NQZIm%;#P]%/XC"5c&Hu<=p_g;O)eX9pL"(AteaH"P7OZVo-f,O?ODrb]Gltq!0ROs6()u3So&jC<! %nB.f1l-#$idl8G=XK&_Hbm=tb'4SRg*-AfXQ(apEZ'(PAIDNc'`]Gb<_`NRVP-NAPXp>J1HAYr>+mAH\:?`=R*].O7%`tsb2UlQ7 %G9>H!UUG%N@-+JG[BE/QC'ncj"ge\ojM:oDG$X\f*K?X98$bO%Z^H4eeCS0ecFdn#\n8"n^(n56qpum_Tq1]MoS3[.&eC'RMMd$# %N/+n]&(!ASl\2XqPj>J'Or<eA3`.D<^r<C=4WDUs4ChIMOp3)(UUAUKFIh^Ej/]n[4EY-*c]18)8h7-ga+4Y>NaOf2Pp&#:K;<D0 %)5SJ>*5EsL'8YNtP>`gE>gbZUfujaV:Ec]kKSK]`S^f<e&nl"f\d/9IUZ^&F%_ltDWhmRm9LTm*M]m+\C*^rCp'J</iGre3R,5%% %XYK7!ea>=1pTNE_'b@8#D,0[!=7CqO<*`5.pN)?^aq1G/8)n&u,-5X(e]/"\>!46dHFBUAN&b_LBGUgQgpJ7\Vn5VNMLnWPM.B$Q %.5p;M"Q2XI4qL(ROt'Wt+P`8,LP?$J,DV.rlid,Ln^\CVb$Yu+gB]WTjEM$pCQ-kH*oT6!7:=-+=gf$6notEMTZrRg)U`1tas<Yq %kr+:X"#\K"iW3',T`U/.M(_VX@b!#pBIRYlq#hEGlH.^11*B>hX9s)^\eu\R_"8$M[3g=aW%]F@?"*@PQ&@.-W@)0d;H@H<)pX6. %*PZ7O&RA58>+])1i<SYS,Li1rl3_UDW3g1""RG`<:EcFTqRGQZ>GK/IB@hIG5[![>g$?lAgQr1iBXamsRSg8TO'<>G+YWSUT@eYo %'ObcmbW9._>)iUSjQg&:cHW%\nPI'4RA*p/5rR!WOS';#Wm1DRPae8m*9KUJL\f[P?:d-f]!%LImLY"2UA&t\-t+I^<mZ%f@DN'M %[7M92O?i#.du`rB.pA7&Eq?'8Xhl$Bb\kOKW*gGOJ'\mh9dqC"%n;0Z1"[W7QH*utjXJ,:_!+l#.`PnM?#pY4m#f+;0="4kIgaBr %*[*[G*2Kc&9Q\$BMJjt*NjkN+Kmr\+C7L!i'21aY^<,3qo[j;bO^:Fno6b@hEI`Yh]I]T-%Cr!47Z@U0+h//8=5cIaZr\<a<9tD7 %3*:@^5`#QT#c^KRb5s#!C!+\r^k0ROHYT][=EV>IN6HuN+?I;B`lol3q3k+a]kOX'9U,eU8.HL,1XU1^Oh]JSKQ`G^9bG6!%3+Vh %1-RLk]it&f;f$IKpT3#JL31cd-s^Mb<\QU/ckDha%XV;7b"AnsD_\%mnN#g4d#lmT3GQX%e+buq;cTpS3jI$h+[j=4M[_X(2>p[V %pc.F!8(A(&f:X<3",^i8LdaiW]f=1U9X)&C)fTi[i\eg-hXpt=o]aecB(be.9W;(*?)nO+M?[;$WiB.Fg!<n4-Wh:?>crgCmhDdR %b=n\:]VR_iEC7i>3WZc`2U9@O?T"dU8\nqgF=**:;[$_qIo*YGKhFU,M.2@J4So*fb-as?Tljr`O@mm;no;4=BK1n(X<`jR<0PI2 %,1M8G3mE#Bi+Al8#6$lu0oFT0(I*W99U&ZbKrS0L*gGZdn@CF(:9k>i6:(EH8/>2)3'ZlS7$a;n/,fO&=(pU77=6hnMR,h%jT"<j %CpnitNdf?4>6IY`V4WPt*V'?Xe%@+`<kDZY\6L]\"Mf(l%Hf`Wo.hB0YJW@j#t96lY?$sB.hAX]8q2g6nOek<%hWI*6pePa,U7r7 %ZVR)u7C,.N,/Zu@)\Z1=7IEg6N/S,/>rSE-A_!Iu;0Ga$&!5+)Cj0W$CYm<Gbs%<\cs*.1'O3]?B7/'X[;L<iP\OV(SK^F"KlZh4 %#Mg/pY>'LC/XrK)i%,i1eG9a:d]KF&qP+r,h45mNiu1@$`CWK;aU733l52S7'Lc"%@9cGW;=.Ll"\m'<Z!04=d*a8KZpT9q$"lt: %Da26r_c'JGP1=a(9,HQi-0(#>%:F!(R76<+P'TZ,m*q<p:h*@m*#"8$';F7nrK5P3\/NJ@CugbkSCkhGD.%0>gaI2_,\P&3a.DpK %GiTe9"7R?$M'DArBlLE%WbTg>HgIU:Gcj1ZA^G^qjm)*OBHG+8dp(7d\Qsj`U?UBHcu4cUd)5a4F&]AVlp2l/h)n2#kkLh1`%4LX %44,sI6hS2^_ng(r#O@6fW'Ma[BXd9l4+_+!385,!.'QQF@WV_lnH,M\%jZ9ba=l&%U:5;<'@AWEZSB:_nUeufBO%l:.14E:c5bHd %YeZ$/\RDs.;#0KdNOT)`j@$u'l>sGaWS=If#8R+>n.&I@4&f5+:61#bp^U<igS(!`C+>*O8TXN'duc)ZK]"A52Z@Bl"cUJD<3Z\M %PRrTXrLgWYB"]j+`:;(66>n[1,^6"_b(a]V%82Wem4GbK7U62oTW;9I(CT4;,:t:HD?b_lCX]N4k$;Pq;DD:.$LiC"M/8%VXn4uI %?6O;#'pahSQWs]qjeR^^bku1tmiAMQMdHFW,"hQl7..Dca#frJAPDZ#dF'Qf%ZuW0\YRd`p"0r[@TG!t#`bO18([FgY`),DL4c8Ph %'QNVQ5g;lV-ekC/+:Z99G(>(X*I[]9QT%G'IIo2L*M$G@]XW91q>BI<2odRHO"RT,T>#gI:SZGna1pZ,5Q/pu+)^C/4heHe]tXF* %e]mpCjlsfef:Tgf5(7R!]sJ%9_(S@R(Vd\3rqW%A0<`[omnZ]n5.ae9H_4PmrP?n1DiV#>NZK9*]t1j=4h8,7IfGNlqM6QYrpo:' %U]9jVkiJ0rme^t?aqj*/f6g#a%_1/IKo2d"foJU"^Snc,Q,Igt4HXe<gT9rq1o5GB$3d[aCO0kfea(nQVILbW8shj[l;-].'DGK% %.&/bCf!a+PmqR^WjN6^:mQCR3INa:bZpkn7MWco[>d]A5EO&FW](A8=\g8]2mWs&d(TBac_--HfA+K<(g<9@`++AZ[I<PGZd<eZ\ %HusE"lJf.NRq$3Fb`r.tLYM#I^@+JdHq^#fUSm9VYF`Ma9HTZaT08o2(f+[o>b/kHjt@CUi6hSX:+/=RPeV?-Fj;1?fMe,q4>=*@ %5m]=s^*4/1g_)H/$gc3)F)mPWJCDo<.`KXL"U.8e$6+9OHI:P=UV]]h.D?>0X2H8NcR?5&as'#^1"R5g4]%b:&8u!rR7_9V<S:3S %lsQpH#?AS8]%U2ha80CRhe^&CSj%Jk-':4eiUZR7iq3&of@S'hcVDNXe'n3Lh48lKlb]P!55G'&j"WC_J,Uiq\N&$VJoW42!tG?d %@dg.sqkji!C,ehMdbqn+X3$3NjiPU]?SU:+GPt^2+Ms>#4+Ds"oQBs6\IA?h.Gst2![k9XilUqD,u+ObNiqnE?Tnfe:S(\=Kqucn %5&N!gD^?2*Jel4)`E&41KMiS<O:-K7/[<BqH/$:(pbT;u:HE*4OKi6,_[o;C-%mg3R=ZmKggF\O*elEraneI(9Z<\_A^40VEF>$D %DRi3k$k.D4?#=26?--%mPLh>+:>$7.,2NrG4@"##hdInA:??_eWB;6X',k?8>fFgfTC?TQAbU=+F#hf5I5a2Y"lm^pq6F#8oCo9[ %OHt_]?@jqHh04=WWi`r4mb$!%H$mYVGnnl@S`"^>:X$R6_s_l&AGYU.^Uq)TFIZ5fj.L_r=N#TiX<0S$h$a(TaX<^P^Dd.NjNIQC %VTP\.5'h\Njlt0VlW5aS3Vr.5jmgs#f12H<59KUGgHRc_&"ao8T:_+bo\u@H'5dRBX/kh&O5eQFS"n<N-N!9te+\nE%i&mW6L@!$ %5JB-=e:,kgfR'AFX17g-[U7,JKhl"sT5U4)M?E6u_o$l"C/tr&Y5U/ET3Mk!o:&J7@4.XrHh@-Up">[=StD`/X17g1f-aY?kJOb+ %piLn.H@>Pn=N,hErVi:mbI9^aa02)XK<U5;S,LOlGjZAa3T%!#<D`#=*aaCYVTNBes0'1_qZHcNn^)Q%FacdHIkNHqG4P%JL[Q=5 %+Hpumo$*DIa&E#(TcI':jr$rLqA[[@r^ZsY4/I;YUYbI+D8OF+BDNu;qPWgI\llf>+.b9\IsClKaIA3<D>^/Ir6BdMmWA(u[Vg!C %J*8V9TUq`J(GD<RSZC4GpHR"Tci&lRGT?E<^E1ki5/-&=^WV=MBRPnRgMU1O8&c#J1I>9*0-0j!O7<0+90PJtT(<J!,e$"gcH^\# %PD,Xqa_:Rbos)r+qcL5QhtAVm8a&W8n:_e55S"8cYs3Uaa7^&@TZ^2RCZ!Ya\*pcgfr\'#Ib^jTSt(1AhYLo2I5D;P1h)^EIS]aP %pR3_,N5ttrk0<_db=<ZRT?F:M>k26VKf`>Xfuqk9e*$0AIJCGE]LW"okeiI9"oS32/O"Q^DS;+WcH!Q>GE1!%O/.=tjnePA2Yj7< %?i']_G]_58^\$U^jk7cH1KTph?_-$.de];kN^!B*>^lQW*.L#!q_,'Prcmt6S'Oi*Y(fgPS3EaPle<N;^$#Tc;u,oaVdCJCo'"KK %H_uH9<TCQ\N;55HIP4KHrVH0WPNU7`r6$=6OJDJKma^&Rmk6KjPHV]HH$Vh6n!j(I/`ml+PL&Hf&!"tBN3S^p2B&+N/9l+)oacP% %G&r-/>s0"R)uQ=p2_XCn*fo"Qg$..Chn/aMjUFco";g66(UnP'cJ*_qF+*`Kl!$4ln=S#k\^n4H28[dXN\NQf`mqco`Z&WuXlR<o %]49W=m9pW\rCPpk-c,@8GC3O2\rU4spOBpq(Au?opI:0-qXmosNW%edTu1;da'nQ]A.6Xoa3W)q-?JZZs)t=)#P#!2UACt3a7u92 %k2r&UIlk".msArL^S7.L,Ua:p9@R/f[+jbVGW-<.+2e(6*;6`U%Pu#e*UQN")"sT<YVSEX-&_8c8%P2H1@4OLk:l`ThT]*TIFoq1 %VjG^OE$sW5ci,;*m@EYkZ\,01Ik7Uln"OOu-jUM>F:qY"K][,%lYjhf$hq/ar/fP0:Z`/MP4!=[>PPl>;*NV[n=:fsX6Zf&8"Y9P %r;>h5HUC5oa[`h#eE6(@)_HiMqXXP!K=8ur^NsmI6@s#JSf_<hqu5OaDO$-%8#j,XUf%>.+-q]So#m5<I\\]I!RL93o_N0$p<D.\ %J*TAhIW=rLqF"[Z#3Nnp);^>lI!L0dX4uclhX9^AhsDM6q!7r@4aBI,_&r/jGMRnpgc50.lDpDHTptOAfU;3m"8r-[n'Ao58P>6[ %,)KGS;oN!34FR7^s(7%_h>M9YAbXm[[3OSFFr,As]"#B"q4I[VGIKb\pY4K,0>>)Fq3%I0k@^,GMce'4YeY`6S!D?#>%?=#`@:UM %3m<)'I=1k]X/kQE^%H<9gq*EMn(uamO`b_tD^q9JD:Zb9%pWAQ55i_BTAI69(e?;UNmELUj($*-djNH.I.lghouZI[c"`bR^:JQ8 %p#>?1j_!hk55jbof\h89s+*Be5EJjbMmLT&YKfhF[([kLp$!:-3rSpO<4)*XcQCd%ft?)^nT)7qaFZXjgcd7SH?OIWp_Ee8'cp^G %^UcE%miUkqqP,X,7#*60\N\)aIY+uuj.DW1J8(UA2=I-'nLdmt8B$.I`J"4\?'!2Sr!q"K^O(_3+6!_-g"V!@DTM]nhn&U-nb'lO %jdW$C=6Jbe?_@<;b_pu+U#+2EnW#8/Q5cJD`K:sbhYN<4s50._Jc@]UnY>!_IW0L$aR=SWrcO3Ir4<sCq"Hu=jmR9Cs6c5#rOX'D %p&bg%hnE5BE9!#Yn#PKDhjmY7o\ZEH8b_L8`FU&[l:O+kF$LldRtrSEOF-Y]oU:W:0^rkd\%S[=..t>f;e0jmWhWK@bCPEo:j7jk4 %AYBa'r0Hk)0,`X^;!t6u#SC8S^LcB7Hcp3%GOpiE7BXEfG0CIQpj[d*qiA.-;7aDX?2jOp/Une9qX_ITs&]LZ;.&q2gKV===R0>9 %Yl9`Zq@A)Lhnd:lhhUk!ebRI>/6@kXcRrOogQc7bg[LX1m8f&4J`l`QMu@ba$9-/GE)P`"0;$RT`p_-0r:Kd^FPO4u+[5kqOk5Q8 %p\t,tn`e5dCM&h-%iU?j]mR1;IIudGnh0D0gG`b(Vi-YX`(&(5X3oXa_HYpC4QOaWKPl/*T/e!AUPXkocpo1kr+715,lIRLll./2 %!+MVj(WF2R_e8%!^k[UUFd*!XjO:$I04(3>S6]H8Mb(+ne2YX2pOglU[oXs7*3Y>7l-DXJko[iUNV)h8=o%]FD`KoRjj@_=cZ_RL %O$7p`jVrW?.76bm.@#AYlJfdlPc_'[fE\%047;GLd4QNR\pX=ug#_Qhdr^"ao]O]po;fXM-^p[!?CsBq]$X<>&"]?J:cS(<(Y;`l %DN=_lqXjE#gIU5q?]UhS]Bf0ShpPd.f2q.50DKU,:TL,fqVq/Dq#'sa+Y20*5<h;;Ib#G,_t-D3!PmsijjB:`=/T_aRE7,\oZcq" %bOX>)NrO-IG.."]&+&?6s5f2!'#(p0IU9.m\GKWo/a7JkD*/a7lLa_f&O!jV-sp>'I!gA=nscCea(+jSqAQa2b6tsB5IDOkq*u7! %2rD8nH*^6urTLTJQX?>E-aO,fp;Ls2^HT?DOW"%LG^a2nrmQu\f-;j)`Q^l299/dt[S9a([Xfg`lmb)+aM[iJd"u\bL\q#3o^mM> %+@2*.1>JmEVt&9RS,>5u4r`8=QP?3EX.%kqU^)PNq6t;1ig!c<o@O"fXKJ=<IaJ,O8\sNslV@!,5G);2H$mmVMjtWkF&(D3UVJ7g %>O6fI]8:@<Z#1Ai?eaI1g<R0=_<ubjZ]+_[2]?t4*rN-O"oHR=[S(H2]DE!*djK;oiW/m?;ut=b)7Z:2qf1tN(ZZX#mJqi`i>gK3 %bP=*c6Z]JCE[3OB&+MY#IsLn]s1UNWH@.P5(q[l^fa3kdr9!:pb>[Q6phCdnml``qrp'I:Gslk$+a7V8jMu.fB^OAX?(JX>(u*HA %Nc0r7CCG]*R^%k*GMqqp!/U4*=:A!f?58CjJl=KsA8%3o0<T29=rj6-]bF=4L<T6*B-2pX"4hL8%LuM`C-DFWe]lXs)dX$7<7+h. %g&CWuB>;')IX:KLa4L=Vir!hEr-6j>j0X,TF/hJ%iCDMOa81*HY_mXtIqa&rc.VpalVjW"7H`W..qTmEU(YUn<rI:.e^N_o#TjKG% %V/+Q3a1QZ-/]hAVdZ2132A4a5TDn,&kKC+XN*#[rka^%WT:b!<Nk=8^HY@9pN[F"=hsp:&o!V%phs^L.jBJKeq9F1ObBGf@%t&a( %f!iEC\=O^jH%((+M>s+kq:E"#s4?Qu06M%+'@1-6]ouMNDlt^Ag7@ScRtq%0jY=:skWBnja'GV'&&'[9Zi#b'j_nRm^AR7L5NC5f %-XI!1cd,Acg@sSt-&AK2NnVR`^$D0"N:*1-HL!.52ZC-dq9..H4cA;MGf?o=;q((RRj*/2d2lG_C]$"<Oj\PbWJZF]Ya%QB_S[OcT %qGlnEGh["]H$(oZJS1lfh0a6k2QjB1H)po4r!^l!hXE_DH?FXVqLmjh5P`,[Ni/NG&M?gsNh6hDkb6>M+8?iUmrNW/ggtX\NAiY\ %lH:/qH@>Y\o_S7FdI0m2lfRE_cd-Kh^H=SB]6Rmm&_*rQ8*5XGp<K]T8'd2K^]+7Kqp+TiFf"%Ii#X!I$&%FFf]aO[;Fp7>&4d<C %+T%]-rHPOERut<7feRNt?MdmAQ:KA:\hokjk$'3^h!>"5NKN$;FP7gd5Om4JYkS*/C_p5aUk-?tKh%\OB:t;s'XsW3_)525)Y(!` %3-r+)n2BKu*K,(Rn`Hti5JRQ9)35s<;iVG-b#!&*EV)3T"3BD=(^'Vb<m=JhhSLBi9[qZrMt`]hR,RPpkO7/&Q:8++X2RYnAA8F- %o("HXm%Y#ls'Nf@\(IiD(q"\75s%hZ;`2Ei&lrIN[>@O116ZlJS%e,a>->:9e(lVkYuV^JV<Aa]BN)qO6JGZG:`QSGMF*1^q.h0/ %`uCS!3o>D_(ZMV6p%@qq9CX/cGqekD33D]V\0`'ZbP+N!<.+Q1r"k+b#&?F3rh=>:AFH/9TT:6o1EL8*_Y(`qctr+l&qu=SRbuBX %MoGZ!a1f&R=*h@#h*[@bS%E[8n5T=EKbRUhEsir4Top``?PP3d0ijfSFKr"*\o&;]BQi,70*cL#rXn;:iq:4M,9kFG+,QRT*I/4_ %B(,$T).dDB&e;Yb&8S#DRk5nK/V?Sh=[_6jP&!WWVl].VCsn/iFS0ri6ek&lS,knck6+=[p@r2$j_'p&!;#b9oIU9[WW'7cD4O"@ %mqTQ(kj5JV!uP1(eapB"HYL'%F<m.5,ZPl&gpF(?O%QMM=-9H3=EtFfL+orjLk9J,(B3(7p\O8AG6cCt00a_\rk/1,qitb[E]!.I %pK%OFej]>n"j@UC`&o:03YfB4UHs5\b_&@5qDMou6lum]VXr1UKg9t_lb6KMf@Rsu`ZY5RJ`p)&'Z`5XDRVP3`2d2,cXo'W(d4*s %FF0-7bK$eI/RU.a0A>sneCiC"nU3ItNta]#Z8fPLO)Ks<*@Hu$^?^4-,m1Ad/nXk&AiTY4[rmL[+Ka`9#*5AomHldoq53%=jF)6_ %#M!a6"4o8FI6f*JIXg9Z(g?C\`ou6_>ssN=@+`a:CFEuB<_hOX<*?=eIR'Ld^H8Vg9.VY8gih1',TkT"$u@r.#>d%=K%oQS//Qn- %,8\]'iP'Q``,=YS;?3X:\K<O?R&?@ENNj5'eCe\&HS(nDiQ#/hU6WA##s5L&s#RN\K;A\)22A;pd8.(jgf/2Jn>Mn>`PW4="np.6 %^`i#G/REa/]K?6ShudSO/M12(V4U4d[N2aH]`Dm-&A2Mj=0PfN].3/aI;^WF2E>2Ck_Aa+Q4G6?UQ)N_jg[:igPT88@_rIhpJ:8u %LG/VpQ[]*Z&o$sc*<m*<Zl+:>4.TQpr*Yf(S,I:g)!qCEhLGFuEbg&7X.af02dGQSF'XS`oHM=75k$#2]Yt]oSuSOl6>R#"+&-gc %gnG<!jq^"gQU*9TK1V7jLu&Y)RhORni&IYSegYprXla".Y`ADc5[HKn%nGZB@nL0H#9f8dh:eiYkdh+js"jsf6hdN>)I'!!B^6Km %7r.:dBfu7G*Tc&5_;\F4diZ6r\j<V9Rgm2t)S&!ef@Yh.(FrBMV3)q"%J2U]Rrg`1:!B[JCkQ[T.%ap%9k$1\I,/14h]bC&RT#sh %:1uS6Dmh`[:&pTa;.kP'J8P<b4b^W<-ePQD1bAdsN@Q,=L.5r9nEOHAC=6;"H!<&X)&h'@U'bS3a1[(/IX_J+,iW%B"Ge8M?t]eB %N;te).5oFOEV*tUgfq?'78+i*r<]'E^gs\&nEZh[-:Kl/UqgRE@#2Y'dj(\W"'_Moe/V?K\(>ES&PC+1S0;06PbR(%ROf;-".CV8 %dJ`n_NkcV5'%'VE3sJHtKW@+E$\I59aJ7^+qpJGmF#IrcO2.'Ffa)[XrYW4U%m5q"6fNhYIiWW[s"MH1\4]e<mXj>Eq[RXHr*p=a %Agrq_EGR2gbJDP:0JC")CM+u1VQtEC_6bEJS\*7bTLCNti0fJ*oaF3tkX%7@hLm_0@3p%Yke2L72NEcP;K7L3l<dbLX0q/dKV6mo %'^cNT%keQ'.8jq6ns)nV_+-6nKk,E>..N-=aY/YU"cR6`6G>ifnBMPL6l*epr!Oc>U+//AS[^$bZC:]$QJH(\EL`Fb'Xh&:KB]Iu %NC9P':Z[\ZK6,"JEQ5Nn-<;iU0SGb*eA-\h4s#r:";*UbpSnDW_kh307=d0%KgV%ab`$KJLr-9WJ*;HcS]W;3i"<U(&(=7Y;`E,% %-Po[jN@EP5NrX::o_uE&rgO^>+\&MR#TfHce?%_:&D8Xj_GDdD;/D'o1Z^/e%Ccn^&GmCsoO?sF_t:CGH-\,/\FZTLX7a4hIX?4` %d+E8!G>?t/I;O^C'tZ?FeY4uen,2fpDo)7(gcg\o0>i81V;iN2pA)/OTYh5gmRsbNg`EkSrJc.#SUkpZbi_=FH/e81.n#u#OG,)< %ho,rth"_*/P0L>8h-IFuh8)>p6HuSH\%e1#UZXM.4b'n+I]dBHF.`.6\Y@5]l*g5*]97NDou^@AcusfFo@2G3%+\H`S([f"hT!8f %>Z5iIY4B!WX`@PbgtrIDjS!HXk.J.6\b[L&DO.oR`)c_&)9R"JRJ"a(5q$7R,\?(JBj"b,+'#aV[JJM#m-/8+qc1./Zee<Be^Mrn %+t`8b-?=fodmRg8CF,,0M#3%qqr_*5M%=?H\Y6h]X8SjA_>?c0l_dh\0]]nhA&upDMXf<ihE%&t^+_,;_I$r(?PAga:p"ldV3H-Z %(J=h$6o'B>HVf@liL:0;X+-PFH=C1u9#C`EXBLsoQ=jR`BDid`^"G=,g_^M*bJW)N_t*>[:f,G8A?;S*kXFsK0&A,1mu8m+dtbET %%^XWIoN=_h3c,<I$^iO/`SIZDl!Yl$HdVk2coN2m5*d\":3Y8ab2#]dVq;CA<_6Y2Q=#X^BUoY4SsN?5ad'e#X](o?XKO<=/^;S? %bHDhXABJ/BRsUiP?9+_)FJdVr8fiC#S5MGNch89K:(;Xqh(J%OPQM\Q0*_/(dN3S#p7\rZF!W2lUBUEdl1rnPBb"2$kk970_6^/a %H+EoK3X%uf<Sa30$m%$*Vi4B;Sr+?O[t<FM/EuBl0mA)fm'L#B4^4S'\roSpL.dpX^!l$4,P5HlYA^S]Ks_k^d:r,6]hmtCl('<g %LWmp3O(5'6MfVmf`S'.shZ9iXTsfGK@<>\A9bu:=3ht/n-_TO(n,/\:f9uKjl?oAuIR3A.I\L/Sd(;*+9B>"':94+r24uZOJnNNL %KoIWLn=m,8SYr+>mp]XS:<S'(ViBNM#G]b;>fnkO=L)2UkATa*?$!]]#`YI?1;2/mR6S*!o:f,E4o4U5fU]mj\@^SCs7WdX:@BsT %=l]7;hW_cPfVm?O'=:MC?-[XYG+!D74"-XaZT?nX/qlfThJ"2nHes3T>UH#]P2<`U5->B`SR/0S:OQ9A#JsJY]gD$AQ@s.VRB$d> %YXM"MD>*mig$.\DH)&7?oY)S51nQS";ku.o>RrJO^6Xq;=_ajqO4R1O:4&Q)e/PO==;&5/&>#q^D*!8a(ZN[3k[^%2l!SItRl*6D %a_;:7A@0=U9KJ.Z`TGCCmZpI<K0OWS^eV5M:6/FS^Q6q2%HqnVi9<))e@Wg@SUP:2G,HIHZ.n@*h2JMZV94e-lP:&06M9iNNh,>1 %3qY0cf9M\`U!p-+(VSAaB:a4&l]S8[4ecnhSM?q'4L_]*mhUVJbc5u6LRf4YSX,EpX#E+%d-4lRmM'sjQBY?/HIq>k^3#P4+S`:P %>5cl2?,(&0gusHGrI"&GSI-^nnWrdK2#9d79APnB?23=WbpVTG:S7Ve8H[GC'g&M+"!E>N&,WJ5=t2JO6?VCgWk\;]!k53s@mcR' %>JG^'>o+EWlO*#2U#as&U!_^MZ+f'-%MDhmlYTW]HJ(Gm]mUO=[_>38`r,;oZGP;VCkD=<0:Zr#Uf_Pn_F<HCDnku/Q\7'f99bG1 %IS$pl>[A[Vos\6c;ss@4bI?7fm4H0,>sl,jdl(?9*su)Gl5&^QZ#Dd/IUKkf'HXDq(JTkahVXZRLX4R'l`DKr?7a:$[i<1_kt/5= %H>)YZ+QaL7Mi=j/.8bGX%N'+gZXRMFZ,X^alV-(uRFu(trR)>i^SDC[gNHc5q:qU?^F_Wmc^.^&[k*J0_rJ[%HLHs.PnqqK479SI %M>YZ=Rf:kgq4uD^@R\uI[,1r)[W7;(:(Jo+50m2S_a@_rl2I*64[l>L!P7SrBWe8l>cs",NP]@;X*23`^*15Op2+pu+2b!CD6&hL %g"NG?p+oJDm5b!%j,s$6*'MWj$cEc*;@`Yq4'V7j%b0ou:ftF16dE1DiV9unYPu@SiFB9\"tl@D%b6c>A!atObX`,Ba#RFbTV(8+ %o$1!gn*&s,4ItKCOD^>QCXOfBe!XCO_!I<\3K-_LZir[ll*SL$F&d+L"$3RI1e4J2q>"1*;e#]0S][a,i[#HJ7dGQWm'QcZ6L[[k %fr9!MB6O^^TU9A89!!Mt4XPO<MUqej]i4%TNnGkSpIFdr)G<+'%+[YL;mcPYXA1kD:=[7GCR73HSh%&p(nIZgBN%$u3^*#7Be3E^ %QsIiQ"!E(2PeQ3_I<rM:Ncr"afAM7ZUlY1l]!RP;-$MVq`ON<?n?a#"[]Ba+o<^i#3*j%]\@">G6d/km=mM\AVm?lc7\oaKh"7-$ %,(NU-$n"Tfa7DG6hNf0(ZQhlT?87ins58K83K7FAK-P.ggZ\Ob8/"ec.@+5fl5.M1?p8<&e%Bj+bXT+dA6`eq[k1W&L3:OYXW`>i %<)";2A.NuIDG4E]'Z]nUJ-NJf#]sOi;L%YH-h/9$aE:oMGY"WeY$W#ub#YkF56a;?=sWS?;>qAjnlX>[]J2e5=&\:+S-Y`/q<-86 %IP-\BX<?0;#IG4fY2@^cU,dJSVkMA=B.^B)`aQ_cO>4N3$jV4#>f[6PQCW]]c+3'!?GG`#LU)S7ETY9\47`CGR()o"iLC_iZ@iOG %eTXNdT(>++n:@1;I9-Xhh*i#@B_0+ul4+Ac@)#)$Uur%idW'Jp*<hMDcnFH%"*Z#09#4g+r\D;&gN9UJ*?,>e_GbHh1#^W&Z_".! %lf(7=coKCtlamH;/AlRjJ&5hUYKt@_MjrKDX$UIoFZ&Deokb/3F/;R.o_SR"a&[C9drp:p!XW%l?eC0[@V]\O1V+tOP[dRrm[qiT %\_\6"!6hS9`P.E!>10VB^J)jq2%1\r109Y*o)((iX`ol7Uf*'n"e.C6iNKP*9p`,Tpl@.O4UcaJl$_.lh,;T'/6b[`6ZS2;_]5$4 %\s:#dp0[aH4?B0=@6mP\r;)`?9-'*sOkht-XQ:0[0WXL_9.fBD@k8L21YV/!pI\Gh=peG=V_88!gNBb]\$.Xllfh&8f[T6@iH68Y %[?V(F\TV8YghM3.+^(SVIr'RB%r.E0/+'/@?9c?i#E4,V"WA/_h!7HbkR<DiXIof$6DsX$_+P3^]iR8!cd(X>Pi[j-)o159ANX?] %W7Qa\l`"=:D:_L<Z.Gi%mF3hE12Ui87U4,q_i3/qD9%p'E%EG<Xrj'@.#N0F[_m1j@nE:C6!)Dp\APVil.C54"d:Gef3^=4iQ<1r %"5+3\0qY52An"9%>Ma:;3Qcjk,7``Q&&6jh[A*^\:\c]4m'%p@EsWKeY(=suI2iU/f>8M`,mA,bAIP)"]E</TMgm.kD"%$*Q[\0+ %C:#leY%6fZRSQ\e-/F?8bV+!I89Qs37e=.u;P7/%N0&9F?j&?_LLE+eW"JWW%i0eFmY7,M5so[=8MI*jlr4,'Y"&Jrr-]Uen@?^m %!+I+6,jAa%=bn9,WC%m+"XkP4<q'"h@EX"sG!35r&f3'j2:)3ARB,O>p!1gD#4L;Q\T\5/lM&%,,E&3%jq<fq"-CK4E/Lgj,Kn?k %Gs@5elk("G3b^<u#E7l04L[.''.K5Tj3H5@5C3E[?50;H?.?api=V7BO=X(">i;.k;tBtTam5;V#@[UN:j>@!ds_I]?PsF5?s-9P %d*$!]@m[FGD7(@jj0>_]a*lOX]g"Uij-8b;,,Q1mlgr+](_N7N^j$;_'K@9GZ)$!=?=,`7H&QH_r?B>q9OsX@2S\nYh8](H\6H]Z %PI/_&02WJC^=O!p;hS'Y1ARc]moG,%9l2a^VIo4P8!$@:5eP7#7H^pd!2V?>,i"i,]Eol!Y#o&(!8.$[4$QnX>_qnu3\"TjCfs^* %,BhkBNe&3'>BU$nSmAS0@Wb<"Ju:&XE-Jf"H[SB<SY17UJMHWinP=7DB1:`-^rD;AdQkd7'/L^cNQ<E0")/KO/Y/>`ipG8l02BYM %"A4CQ`SB@3!%/_61u>nk![ed9p<V*4"B:u9]&;>B8>lF[k4Q9u_dM2.?D51UNrreKl6aO8GN$UE2LXe9I+IZ_ldDAk\9=Sdk%BcD %"377*eg^FAmKK17E>W^9'(*Q%BWQ@8O_C(E?ATF=JOa+38i4_p"CP/iBYuKK$G;E=nRG*6+-$(l5E$i7&;ii,\G!n9_TDD0L;!=R %i"VPrIGql+=Z*17D@8G!f!o7YTM6TMemX,EV&0HN$s#ZTB@.M7a/;$-&\\:X"YY%u6HESpLKeBBQbaWO9Hd'`hZmPOXa9]NnE^6u %n!-tuh"3USku\caj/UeQR`6$K`p-?9g?VR;cC?uM'+SY;LY<Id5rcMIO+Q%]#A#V5kP;AJD:kAXB=tg[3R_sB1p3d"<,Hm!Hho/3 %j$Oo(3mfKFaT--\pAOqC9c$]:Yebu>c@j,@pp=.Ek$SO"%%qihXN#rMKbHiWN\H`$M&q.rCi+t9Q4&X!8(WJgWN8T/i\S"\i&h7f %TabEQG9a8c;t_pSQp#jF&P'ia86r1$)3VE)#-J$![%Bsl)M'VggF`5H\GL!UAa-eiKoN@cFIZ!+aidqB;ec`WHlX'8eg\Hse]BZs %:5\NqQP$_!-mkp6I?X7N-Juq%#\qJ&k3Ddi829Y)>WZtclTN(ENj@>r:+BInWc'`>Bj1_[V-59o2ss@J"5'u:\8jA]cP'*OmLAql %1A((<F&/=Bm&a^CiEIZu0Sa2Z/]j[<JRRuQWjY))$FQd#\n>HQJUSK[d<kihZMCjjg]"8)[(21:gA0HBQ'OcRS3c>GqSpdRF63N! %1[+2[)^`b%$dPCi]@Bj$TaT/=@q5s:cCrDaB$a]6JeR:n0fh0Ik\Orn=Un_V#+_;:3*?_3]2QqH@qH*<bb5EiTQ@=9pc3H4)0An# %hh4"3_&7?@KOjWn]&3uXa$+Mne<..DuVB'gdo%Asa+NbSsj8%Tj__0_3Z@W00:E6GVY4Ou'Ll$98e6s`2,5HH;DYl@4:[CX@nNp\G %G]JS,B]kV)n`3R>rc;[(LWd?@Kq=%^3j-@p:GbnH?\4,uH[Z!@F-[9qRNZ`KTfE;K+o*o9]ph$U87rD]4E;0e-b$298t#:A;rT%S %a(hEF+H5[@lMV=DiJr!oUe66Y*0FQfYjl3\fV=Gr`2d9\pTrgr(d"lq:-rEq)rG(cOCU:N]U1q3Mofkl)_R]nP9]P(b&J7DFMe.+ %69,B^HPTkHL_H.;Rj$.Vd;==K0Mal"9Bpe]#Z%[l7d$9s\L%1XY5rj)BliEN-:U.T`K=]rB"hGf![I,k7I]\!$7SCSS@L?9%NM4F %RrsKXlA1fWLH32UA(@^eBJrp5=D/J;3gsM!hrA(J7Z*AL(M8"G3eLJ9+h>n60<B>a8MD-]Zn"!ckR@C:.4%EHSJr;e#!PX#+$4kq %]7+oEhdp\7?l#]R#8BVqo)iLkR!V)$=T\]?6Lnuf@8*14`k85J-c265)91H_?i>jQf28HTSM4:(AMsVY1CWW@n>'?RfgE+-=P6Ii %+Mn6kiGF]%oC6[1@V=#mPXau4ghkcjN%D"%q-X3-E"HePpF1]EQ"FG-20)guD!24OG"-0A`A21q.;kjG)N"slH2]PF&Y9oQ(umW% %J.khT6j()&Us#rH:MgV)G,4aaHlGLn1RXI9atlrJ@Z9q=B.f7_?"IY:nV)0Hm'4mml#8aoBg1;nj22N^]]10`=HX%fdD@uha;$3a %NZDg>(m6Nrj7)iRku&U$P_`"PL0^U29Ycb,o3MOgjGq<_Nk>rA9M#RQ"jIjGq:XeaaFp*^PNS60Et_&So[rrqe.2'JlqQFA&PPnj %71VM*p;DIS-BH7+RX656Nh);'BkSZZi1>`521L*o)A*k2c81`!i/-mk<-,tf7rh@T7Wo`o"i%=th[e""[5lrs.'efnrQ4L;>@0E_ %L7M<&FYr1PM_[A:1mX(5eCbr8hCo`l_rT7p80@FD?1@+q^:_%UpP/M<`CO=k'QP=[NWUZhSfZ\M9Hfg8`@X6pFmL5a./-p82BrEa %1314CP7#W&Lk/@L?(XjQ^:qsA\6+tOF^sUP;>+;sfX18/`]g(7.3C2#K^'9Ci?llAjiN;<c5)ou+3l%M*#WbFcA-J2\N1fg<J//C %hL%;\QP;G[K0(/-7a6b\Y03X:E#'a(3<5EY(HEQiACoG$0/g(961m^<ZSPsIqb/78$V@8h+HY@^9u#'WJ['E@,%Q(lEU?j3k:0bV %T7dW._f`(Mn.%+&j*%'8SJBt:O-[n11$2c;<6o#(p^U\lF92sdP,S'-U6c=ipKPH>j?%_ib<VHAEN4*(bc6b($mX'DFYnC&Q]#oe %f?/>ZXJ5NKe2='BCkutgA'3^dD?D5)-=]CVMSXt0gtb9SE;@quGMNfir2)X+Yh(2FV=0;0YhQ%,:,fud4>AB3?]<U5%WnX(#O.JA %^(=#!>tm+"okJdjWE7Qj8A5%o8k,g?PFG06._qH=7Og`m7RelER79Xqk-+;\"&7*JF"`pJ?dj0e_bVh/g$i_645>V;/1+o`C<jkS %]W#jf/]Q#cR4oB$*?E,s[JrZF>i7d7;bMi)g.@eo(!c&Fq@A`_.i$@W9;H@gUSYiHG]#&M0,;c@(_Z;&Bc=F7!WH5T)rYq!I,hn: %Gd=un0CMVk^>1`n;cO+i2gG5?&O&*_j,<sn!ZQ-hCKrdANVAUp0fKp@'K5sq%coUNT\F`hQkog'*^_qADps;(H1(NhQ<.]I#A;>/ %L"u&]l-EK`4EW\d-Ior;2L$I/;fb`k`Vj@&Oki478n9RscP"p/p3C-;I'\KU*Fl^`6uN%(LgJO&=4pD?X1^1LONkHSGHtF&+PH.l %+?4@WAt9gI3/7l_4_FdpGHtGQ20\o9a?*&P#F13obdmD\-eYV"3b!27RWYGqH'@&*"#K</M'?f>7P3]ti5Y'3Ru8"X\SWY_i6JUu %Uk#"PS2r_(,eGXX?Q:g^/\WlU>V5YP)0X0I9i/.MS&"AiW'0LO1[L93L!(5n_lam(BjFhMFugJSmEKr<F_98PmUo0//-KU<B"C(m %=]8k_*9j'mAZianpt$!nBs]sjmI7KP3Ef.e:I6g?%fW'6S6=o4B:g>^1+msD9mP6&n6Kef7rCI*m.("7pR&TTSuP:Na3:=C1W)tZ %W!Ps7X,Z&<RX'X`=3;IU-WQ+N:QBkcC0Hn`B[J,<V7_m^Eh#e30GEit<Bsisd#''>F+"];O`TO("j6(2EYOYrStGmHABI()SqHh> %oCF"6B+@LoNWoqBoIqT3OGL7PWuoBCVhT4f)j43(P()2/N,1Q/#TXe^;p(tI?u4!=F>Rct?&NdZCc^;"I(*iaS4uMsV.8ppNh&l\ %.J%QGCc]Tl=jcA'U=SsQ3h#[!T]@P5dtOBFSk:m]9-[4kRuSk24aAq+/XMLAAZFF*!G?bVQqc`kT6<@O:OK6[3h$&PmT#WX2B>N! %;KkPWb,04haiL<"6q=/>9h3C'e$D'3R8$1U5BioI)VK5>>WPp9^[\Yp`no[6PYK2\?TEgV3a+/lj;89(SJ)HBgt?dkN(lC'NjaqA %9E&X;e'S06P1.^RU[bc5*M$4h*A*U1i$JdHLlcF6)?@7"R79(T/XOaeo5X>;3a+/,Mta-49h.jk@GF2e6q9'=cu[*uHU?b*ds6[Y %3e5U5;V_i@da4>nPM2n&)"&&]S;D?h16p'',H>mk)cj#fK78!O1S\+oe[h-H?6-.5)/n>an9T4C3GXY'Z/)XaQ/$V1pT!\D)g0e3 %$a2q`(fJ.p99)nm]L1+CG6A_Uji%n&RAmZc"lLi:qCHb[IL-+/.ZGT,h7&<`F4s^3p4plI2igJi5C^Tb#%Nt0Mf]kPlnWdLr"jjV %]1D)s>uNQ%geAEni%K/LB+9M.\sjfZUR/N\pj=huRCa;;L>eq>m]\0>BV@N5bA>jCm_"e.FUBjDRC`b!_LZ$\*Kq<[qIP.kGo$@, %:M(1h=-Or'IHb8L\NKaoB/.8d*Y[W%A7r#ac$<&@a2/MS-9d%=htQHZnIQA*Q,Zl2"0kcGPC)s>X='bkj`cro2Vn.cc=JGIRSVF2 %B2K>S'Q7f4m*eeLk+C4=.$FNnkrEn1I%6T"nDJ_6'"__7F23X$;bP;_!]UkFG1E;]q/;caM9u]*#1Q57:1C?a=^\<Sj\)]Rm"F^O %nY^e`Fp,PWb&@_!JLrX2)7.`ooAnb2QOB'R2_sErpZan/IHfY;`Fk;H)49)Q)jB-ZJ-fB-X'g0,bmK1A@pT`)iVgsV`.b3_felqW %6e!#A#UapBK>.TnJMW:5cA_MkluCtePh'lG<K2^=+YZH;s#n@30A'T[2M>_,jqAVt=ID&7+sqIfb^%5H&mdI9UV\%XDRE@%DF2lf %<4JD[o9#rf*ET)MM=ZSJ8pM)V@:4f$Lm@PNXDg\/1?5BS(C?Jh#cO"O5q:[clb-'TTER?O@P>XoEX[o=OHakAbR(n*'S18c_?QGh %At0rn.20<GJF*h(pEFY?A(8G#/(Wm;1O3HsQ,g:Ef1?C+_gb5m>?Y>:h?t,OM$\*loH(0'/AI`rZt>5d]=8,I@%;'.1^M=/N0)%i %A;!BG@NlY!Aq[SEiO_Wu42KQ2a)OD*_cSn$0.sEg.)L*I4c,$[=$@)'m\("`@TlCcM4S;CrFe3o0VlK0-HCPpS2m`(hi944(2+Q) %piB[jfBkd<Q%[Y^UXjj_m$sVnP)cm"PNK@VYe[<=>W,8XNb`DI^"ahOA)i:kr@@].pLF_lOlLa$W:E&RcWl+^U^4PP0I-'Fs/m(I %]%$_<2/!C'")0T),jF]12ji?DNrNo@1,&Gd9^CFW\UAb6U!5TFjE])@N5&VsBnN+H*'!cC?&*8d>1+7!mUkTk8S/mti9r[uF4,fT %bh\0K`i_;aWN?EkilVnG%EeYH'UbL![F`;PAuDop]X[_._TMgm#M!7`S2iWQVkso9h`HjG393[JK%GJ7I]U)+o&8$`,Wn?\._F[[ %XF<kW=LipXft#QRl&h6apCNQ"2cO%*Z7#CMSpe=`G.Q$lQ/>_9G^3o!Yp=GG=CBEs0YCL\0KW!F4QOdnCYI1[m`AhU1;o@?XkWO[ %8'CPbhbQ2<?"s$,Z$LiZBkQcZ\69[*%D"@F,j+LLDgI@;1Er%ZnYsgfhnUIsSGOtJWaj&*h:=&e2s>.KG&233.V?^/2+ECY)Bi6o %gAH0Ld>h84LBQbBq]<^rZ`RuY\+/rhB%c<+>/^p5H9ApRm:]"jR!<Wj\J&PN/M`ltW**gXoa^ol6j#keI0_C@3N^*m;<tiu:CdZ+ %\4&HT"[ca2EA!"f8*:o@<rQttr3FO1fP5!Mq+o&B`DtVFXraX+@a+2-.FfkP7sgHmep\N%)l\.5)=1!DA%W:jFXk!c2n<phe@:[t %k]*^qnM/5h*,EaOIHh$C!%3aW@h,1+_G9"A;*Mod]X!Y?LT*&TBlV/5qC\gek?7HGmBi\HYV7\jKPB#7k9IIsRG]7-\9GV@-91F) %=-U=i!EfGiiH'\=4>E*S[>ts?>unra?l]'BGMT^^W4/9c/'A]C[ulPaI&VW>pDcTDZ"c_<kC?heDT4K.Lt9(O8FCG0:a2R+OTSJ^ %h=?$-<)-mO[HjMdDn&_+#IH<.O(T%*=BKa5',8j8!Ph%&k\uLhf*-_Zdld(E3HBE?JVEJr7`&8@4e3u<$V3h[V$f)]6Zrs4CWC0@ %O,,.gd(5!CX=QWn*5E,$4<t<]7SIb2@$Gp,p_EHQ8ffJjco$Q.*'eug1DW_4WMjIkMN3r*kYMD53Ingp)^[TmWMi<4s4CJ)PR149 %L=e[F:DP(l1:a(&$LKQDikbYf.%ae-m=/9'0.7/d]qTnu.,7d[o#8+m7S#.?TR#PS8c2p0j`B$HqHk!!j1%a!$:XbWcG35T-m,Eq %\NQCS.%biW*@ggK13l5/:KV@N5[D-40:1^:.'C.1iL*s"W9^?oE_Z"?.!f16Lo5+1XQp[-eShP$TdY'^JgWsI_+(Wo7pW!kg^WAH %lPFrm,kU.OB3i:1ZVh9I3Dj(s5_FK7)YM(RY$Y:)M:]QSY3QmOT#l-+\h\_?5PN[?L"s\(>>je`"k+j$3l<q"rFf>X;`LK9WTtAE %\3]qU;^q]SjWmSQrJ4V,0>)`[?X:ESY2di#S"r/sVq/Z9Fo?"6ZF/Kkfc86aY/4E`p%Z%<JV1$"9rT1@8Fe-P4hd#hI_ej>S<8Zo %qRMCBc-E(WbNO*I/C'qip%.$+1i?U6i:I^H4uR[l5DS[$T[I)38aH3V=7n@*L*j%gB;\AL9_U9IdR*(iZQn\BAb<Q__,^H2_#'q1 %+4"itjE:EQU"K&5-I7$H=7qJXO)LQJgtliWIpKhZo,d7fRH\p;8'cMfY3O($?_Z*DRli3\VljC23H&I;9j$#n4YEqI3/0:cXm6eZ %)BYl[*s9YsDdr1c=k>;D$:d7nES/V?L!Wpm"H5:-KO*,HX;c:1Fo=(H<W2hW,D!rPbdr7cZdP^N^=Z<5O-Nii[B<l@bnPJ>'5(T8 %Y'PI8H+5tZoN9MBW:fr*MdZDHnP+D/'r@q&jS&AgYNn^3<T:MM4_e9;i4,'jJY0<P+"cZ4U;\I\lfX\3a).a0F#@!(^L4N62Pn!6 %_7Q*FN(m:'caAqMWd[6_,suWKlhZTfH8&N.^L4rUpQ?l,lPF(K[YB%(G8bW&ecMoK&^OnnFo?o9Cksr4Kt;_a)ePIC4-dC+COoLa %gj;WQfC`WB3a"DNN*"Vl4X<.Uc`HgZ^$'7P\'IU:H-RkLLTG9GO@r9$f8HJW2m`t=]Zf_+UI`2+%c2Q\(1$R^pVa:DEK7MEJ'bk] %c^CpL#p`6\8qCa&FLM[+R_Xm.SiU)._:n.o7U`[0[je=YB@=ZNbVj0efi4?^F+2ma,a.niq#lG(&dsa^mtpu-k@S=Om8qK4/>(d0 %c9K$h6FHYm&?;A5-)%bsZ7XRP*t=omU?.'JmbsAVpj%9$NkRUD_V'LA$0SoBQbp`2rDg?A7`^j]O/mcI<UMUggh&4f_F&,$89fNp %IMJGLjcT$`?S;]2#H<p'?r/E`LA/CC_4TAn*;ht!WSp0h*Y!_M&S?2=j?D9Z7luL[lc/&(m9=%>5'_Q=V_3IOeX&B^X7+<JIjJ`> %[)-6dpA6/HX(_)pXj?>#PsmJD0_(Ls.u2G]8bBC!c._u=;OHdWiRr43.RB#9Bn3RD;%/5I:teJ$.Q<6["JembE2g]>erg*uq"ket %=!#hC_-nt6S140+UouR)o"p,XX6`o@g?ZqR:d7#=)9tF3>*upj0`##NX_(Va_`OPgHV.[@ie^LF/3f7PImW+mPP&mYbs#arX-:n. %5Ba]i0f<24=I?nSQqsMZ%[BGbY],F:\(cbMD7,JHVDgF&fj5kD134:*@cHbu^04=n2W]*+HZ6Z^=T"_D\Meq;K;NF6\DJoM:i=R8 %Md,33ejm%hiiJ_0Q5bY]=e&Yq3`+e=ZbDfTHWu-;/q8j?^JO]oacipi3ULH)#cW3&r'[6G1B..:/Aa>-Bt[d7lb[QEIqFY39;rp1 %bS`VaM?*^Q^o7,#orDLS`EcpDVq2c'mU'6_J.ri7`^&.uC&<U*#&C7Wa,B*8euJOT.qcVY.^p5[j9>7_[TftCJaN-=Bmt+K=t^q* %_33\BTt\*O5BHO'ho[ud3-qark)$7b/qPRbcN'Kg[.H'Mr.A(K,5E[k?R4RmnV.MMM3s+gXHpgPMdU%=..R]_u+B1Xm2H15X8$K5< %7g4i&B8NehSV%.`"RMks3/-BS\SuN]-,\?tJH"5e=aZ]i%e;hNiML$.k1T+_)&Br.S(fPP=6>k+\dK=^Q)aE>TO]i!Z[R>^FBiN! %Al:uPj^nKp&("FA"0<q[$/"mAHD7D3g;ZJBI!`>>Pc9?3?&L$UT1bU>D"=cqg=b;Idbdj,Yp:JMB[g!4,W)'FeiLqsZEf#=EYj12 %'F5)^?e9n^C@%hVY<,UjILE8JBhd?I@+AFTRJ^Vb'au+mj]$Ok:JLpunRht*Y_%AliBQYDqa:p)J,;`X!T:)P>F<I1V$qhT7'n\. %UWt(B78UF*Me)NLADmFJH<npm5X<EV=4LpM.=J[dCnF4@:?dHj42W^6ik2U2E47f*OLB4S);s`/XLT7jqd;%lZ`Q?Y-eGp_%KE4U %41SHDd"<Pc),0$WZ7otpGZID0&YBlnWRR*Qa%Kq].C&`ZZsl5Ra:]D\7@W</(EV)s%KZ)RCjf<tB=]rTgYWXPpJuTl?QOa`XY1\# %"VL)%P`^_=Z>/eJ?=Kb("`#dYg1oM/mRbL1k`*uX5Nb2l$Sa"aX(Ttkcq\bn#D:QnH++5MN00BRh16cpV60?T@N/_9)4("[0L7hu %!;s6bImNn0IsUYIq-.RZFh32f9s!4LQj1It_K>k\;QXt\li^2Pe[tnCh)cRkR9<J@0Gaa;83dCNeXdPPoM;<B'Uf[#O)G*JFP:uj %r*;.NIEc;ArJI$.jn0+d<SN4OUj\Udkl&8/YW,pBLRTCd1H#,k#h4Fd767i*p['Y@8[2It[YX>0R<9q[<ajQkljCcmbSf6J\8gC7 %OYYOb1cnc&9cm9V(E4YC&Ma.4&r%,&B$SQ(dm@nC4k)-pN.9.mZ=?5CPsiq>[sm.sJ)$WYeQIfDhA>VbEm(iOQ:-e)9F@#Gi=QWu %OgMFlF)'E!l"bZ$9<%b=i;p&(D:GhdhQ=$o@\1+Ao(r/Qi*?W71)U#)^*@FLr*b/$E.W<p3hV%Clm4Y=mK-eG'5*=l#D'AC9elp9 %O)-E8=<R7G7j'9i/qMKu$WHgd4EtPsM/kfu3hgRB-Z4PZg9W.ae?'*GmQBn'&OJ-7Lg_!mK<RmAf\&H(=^?1+mF%q8(6$c[C?Liq %qCO%E2NKM+GXU,o4H,U"*&q9>BJf)'ODg[,F+9`9U-09`.Q?@ij!TCPN"WAF$\g-8]hrHL!p]`_IR8-06,,iER\(/I9-?-B6pDj+ %QOleZpCj9J$,j0+kU/dm&eJPMrIjB@!f?P=oFmsG$*e#_59[V)@+9^_i[7^lV'G!;[*/2mN6f;heii`hbT;m#)/ERf=Uo*mO4H*r %kC/6U$^Ls<%mS6&!_#tQ^[TQa++BN4@>l]"9JQ<W.J7KIeOGR(GD'5S:i=*Q^DuIDl5Z-lFNFQ"GXjobq"hL?D]/3=ei)3IQsFsW %Zdekd)olDg)j.ZFpG:*mN=>CW^<ZUbp9EC-V9V8T-suCY4b%=W;6595[X)h/pYBY+R'mFnMHFf@jG=+nP[*+eTFGsML(K.?[h^Kp %C,)k,eT/<AqY/e`*">*g5.^9#CcPPKg_IedDS&shF?8TUs,OO707Q3WmO5d`05R4smI%!nmESA.h2,cMKe"1[=')V&Y,JX0\h3m9 %Y2l0i^%.F>[/H]:B".bfq:Vc1+.R.bB"R'?o"'(FDU5ckWj1XYf$=3rTf,LsR(*[MW2_?%Y?Lm?BD-GT\c"#5X>udY@XKj$c[R[^ %[Y&"`A0Up#^.W"5g0#W-1PE<sK,`XRe(ka_a;%.X*M<#k7hQ>BXd%W;gV0e4Y0"2_*pTZTV8KG/%#L-b'Sc#:=L+gKIN;Ln2WVp? %gI?ArApo*B\Pl,-#[,or1>,tM1LF_+Sa5Fc>j$aB/Ia:XIg/.04)ansH9%k1if-7;Ki&2:b,:B<=2k)hq3RHmf"Jo?%eeQB'Ao)Q %"Sm=%+E"7U=fjqW#O,eiE0B_-];6si']69(G_l@<HBE9_0Zd[7P_/L,J*YAU7Wc;A=+4#Y*\KLG?)1X>O(=e7hNYJA,*0Ef"TWH- %L7h21SQlVh_kF$8j3IKMr]G2;DS9TmZR8nhaidq7aY5'WdFUDK-+Aaqf1CN]$:*[eXRDn-4YaadS6QW0Z9nf_4:RI"6mA1#:aDRo %S-""bA(dUOe&ln6D/o1BjgDA,^RI1r*9AoWj-O!</L]=MOG]:ZWN?;Uo`0st\\Odn<c.geNfN9`onQcED=d+4m\>*_4r/*dU.rbX %_r'L/TkA6aA`+A'9.:>rCp00WZFSBeVR1cWKp)/0@#3b#'u4]Mi/-;@d8V)e,i7%g^L[9rf3p12&DI\'Rf^CbcNjS[l/AS-Wa8[8 %5S[AKhh,DM#,Rk_<QLg0"b7n-$j!S?`2koJ"_&.5dl?b5]QjCO)m!T%Q<9fIpbHnQDqUdN;n_:8\&U1qMFq&RNRdn8r4/%H6TR;3 %>E?W;Qaf@DH*Uk<a]!IoF9!W=+7kl2Zr:@KF+RpVM/V6:)o/d/b_,m0ZU4E>io<HplYRq"G24PBKfm$kIdqmD.0\R/$YH'3+UH'< %r]3IhP^rPcNc^u!G1.Zk19FpNk;ie^)R(LJloU;CY.br&Z,81^h98k@McQqB`,eKt$$$Msc>_0h]'kP9ND`+O`3DP`ZrkX)4.AHH %<3*K!$]O0W*.bAZFsFU#A#7jHZ8/n+a4>V<.Kp%WZ$'Ch*N@d.,Heb,P9S_[n?I.6,nsPXa=aS,RPpdDrgM/N#)/,5DFU4%=a;>; %<I+Q6E8O+]k#U"l_%tjpUP+FOTb^`H9!H9XgB4#51gaohm#qlh4aQbaS<2q5eM">V'A?oK0CHLi_<)`R/HG>-\?j];UFa-W>'$V9 %T^nAZNY>d^X`)]i35J^QRt.FR.4*'E&>!GeZks#!djBmUig8S40:Dm^`16nL[<#c=2iQs5-5cos'MGFlACK2RkCQQ&6G.lu+NG$A %+CGV+#OR/O[`B^]kFk`ef,62s(SX*<i/Mn'6b`X<g\&#Y4'_0,f]6-bFG`J]X85T1mL&LVlY$OG+`.@Fp%sWKQ:^1Wqq7O-=*"<< %m$+&3D()I1T8srWc3Z)8Qe`Jl\uP@7,I?b7q,gsGrd7pU1Q2sNeb+G.%[6$$TS/0e-Ud\Aa>S0/59[V)5]r)Sr.O9?!q[,Y:PeEb %J:rdG-Ud\A#f\(b$.6G>=>II[&D]tZCHSnp&D]u5;c9@b$)mEPOZ&KHAqb/-H.nb1KI_K*b1#3H2E$X[gWJ"%<$mjrgK+<g[FfLN %M4poHC:ER=9?!&cG]M@QrUmE]nYsr^qrfr,s)nT$0s:O(^jl,t=c83$)OH=Mpeeu-NE.T!g;_*R]E.$ZWN\B"D1B3W5'l&Ii8=;B %5.Wpk>jQ@KQf<>G-YU+3:Vg^t-YNsmdMN@=Je:2cK_QnlJ,LJQHkZPK_loi&&D-sZK"k'??XeCI-5`M10E-YIHgo'g>g=/Gs+r8r %KD=8T&8rf'e!M[:n5q;WH+@1=s2:^R3A9%r)Wh,jP)KYB(Z+'C#;%]3.K5s,//7\R8W,*nPV7o/$,GSrZDadC7F:V*VJ:*RORlXI %:uFo*YD>LOSqqYp&S-,a_H0q=,pm>@^+>*RGubX<%nS;5-!:<5Jsr%Kn/ELN1:.UH]W,]mnl7Ctb5b(d\I6cbUm:P'-K1.t?IR%@ %4OIP%,'5K(nqp=CiA4Ve\]J<C4B&XCN(D'kU8EDeb%5t[RG&%mS%?`k+YT.tO]9d!_V&Vld=$qN.[A6p+LBPRW/47)bM4KD/$c%u %<JEd`hI$J<.`Q$ob*QZV8gAL;N=HOF>#?n<B6%<2Q5.hN3F=>Z0RoId+I&eTR1,![<]-"]VO#@;Fs\\a74lV81G(8[@VL-E.h]]f %C+9t'.g^/B..6oC=d#KMF`IP*Z=R^?nHX<pa!g86aju!;hUEbmt$8.^CWRJbYO;B0F!Pec<P!YO:;t=MXaLJ<D!)&_hB3JW*!$9De %jI8US$s6@Z_>mQN@S%173s5&-_=D^q$2Ka]i[fU*PVU(L,jS\EW6CS23G?NfI(<JbU>kO@QnM(Ij)Q#^>UU9E,b[n0n/9Se3J?gc %1(^M%9o:Ds'?gkq;b89W&'S=F<LKpk8H?c"g6r%4.gc=^+tgta0o@`h,Ks1=.oTq5)'i`a6'QqNer!YY=L40H6<:l&#XQrGjJkh8 %.eB>GkX$%R_IXj;FijrB$5u*,?t)G_TW]=`)Bb-9aOM0UYp*p;cmO]%Q&%8]<*bK?aEoBd/Ke%fJc=U7OJbK7>?MPg@Y&_KA4h6$ %$4[f/$A>PHO-EN[ecQ\bUrbY?!ROT5'T;&cGuE3-NI1u2;%b]@KVD)G-AlY/,W\7m,_Q;:WTZrA.I1>Tq4aUab`W6!__D3Al>6Y= %e\#g<0<sKCe4NkDb%.BD==TNBJhcSt!<"AJJ`%2E/PCap#X2+d(H"X2![A?f/ZoG4:/>Eupd@s"7"E-"(cFuO:!h#cFpUFKkX)OJ %:^b>[FUJ5[:<+p073fL&JtP=/Pj5rUcBn3:^d\YKAI24kJ2FW0r3Mk2g(5=.-B,><A3eKg"!)*/_TO5\&'u_6;'f"'4el-^C.FGk %%HpeGB?33R4?ufc1I)&f"3%N35*JV#&pYVAA\C$r,a#9<]E0KiI&%PN2C0P-!&%`<Br!O-3*hGo.+(*YocTq06L:[^BdM]G;MdMu %'b)=3k;FofJQO=Y6m&GMB0YI6Wg"e"$s"A1:.,?06nhP.TR;h]H"76V%=0(t4pg:h=b8*_1BD"pZiROcrZY-qAXjKm<4PQXb%SQJ %B-M(B?2&t<!6Z&V8[>;Zeps]TUba\`1nmGCYXHTWZ>NV#1D-tr).Tp&l]=_-7?2_-2C4"W_nuJ.,%25f%D<kS9J2TP`Zr>825H,L %1Dh*#&b.%gf9+s`+Gi4EJ<Guqn<n/sJa?Gp@]'l^XH=kc/@WIU)DSJTRA>01+:1ZG8m7Jhkp_L'2?E$9cJm3Z-kh.YTfK<U\uht= %J/K33TZK5;'s1R;gnoc^e9%qW7+7FjN5H0O7RW1D!^SC=8`LIU-E@Il=+lhC56CcjR4n^++(Q1pH,1cVT;aS$.<m9!%dB(jAh&oj %K\`mtZ)!W*GG%MQLU'?6@Sr>FnQZiL,k(s'H'(3d'i"_0W&#nedo;PO0[(a:WK=R&\P3HG.#ett#SoZ*&5ttP/3;;?1*T1QgJZD/ %8l<D@6Ouuo9s+#T6:;"2]d:$DnX2du2bZ\;FXAKe0Ce/H3ohLM@MDKSbcIb(!:2fB*8lW![7KAQJ/F%H>0.>IOsK7^M*R(IPrt8H %asM`lMLl<D"Ip2#c#%3K-KsHEN(3t&dHqBPf4/G^!OVqVpQ@iG2%EV3qB&\"+[&4^2XCmHBLiiA=*<h\^a,ZjOhB$t/BPJ9W<u8N %YVu]aV!F&8VNqXk6n8l2+W!uY!c7fG%37E&2Co>8;0<U@#Sm:CJIjl@.SWn&rn1"?Fb7,$OQ"!peo^?]T4ql$T^YW+'"*DJLrM0: %pd"idYoHAd;Y!4*8S(4G1+GNeR7Mo;ZL0F+K+]pZd;L>,?3!]e8CrHnN+**8!g/E9SW"mT)Ynt-P28HiQ?>tt/sQl574S`A1T=&! %%U`C).1nh`R.S^BC)dR:'QC(FO-Ch32DeZq$q&?//a@+WQB53F,GNkjgRgkkU'2md#1\N@9lF$0;*:O(MM!32'2Sb(\LJ6T&a]\. %8A6UJ(Jl;C-kk;=YptQa,H(tQ0S%>W!3fY$C_F4Q42$LphV\][DX[sW'fu<(AiDRVMDBfX[7JM9<1kF3\>jbU&krLT;_.-C"p'`n %<\mhlSd;oX_Ipl$?sF%0:uG]5;676)";L:n"KVinoHk?sqKJSI@!^n%oj(-Yqas;(+6=W\L:,C#PSIKs^o34\9%G[*b(?H=UO`#4 %DJD]EE%3IN32'oF'*N)>SUBL=;0NN>M1dT-I"J4Q=ou9n"V1`=-T*^s"E^rlMW(j6P0Olr8s)ql_\6#aF:V_FlG`4BU59jAK7q^5 %)A#9WHgm\5_KCqS_Q!;q"6!s]3Q)R5>8\t7Oc6QDW&bb.=S0pV8k="nGtA8X9Lfr4N0I\tLp_$s":IR3d#nN!$&*N$W2i]N2G#UF %I%]5rEY2ljeHhokOpd<KKEP_cT4O[<&NpC-86I]B<hh&6!VU&_`bo8rfS8FR&Va2?!`lBO3dqu7,ALJ&:(^/96&!n83J)N&P[&8t %AVG#u4\,C+AdDoFV_p@?Lc'X^.smH1Gg&\OOA/!C3KZmBGZb*gesN93e!q\<RgE)_j$sJR/<u`hPXY(''Ju,W7d0U\>K+UJou)^r %OIt+V/0NO=c(5nr["`'L15BZJEm0A6;FV9B.n(e!s"qbCBfa;ej-MGJJg/Go94Y8Iajj#2RF)4L50s_8-,6OD=V.[^>Q$PDBT:#H %AW>>ojI?k.Yu/pCLoT8hfu_@t0Xngmei=g/5JB43f\<Y+:FG#cG*0U&I<ZET)g$h0hOkN(^A%VZ:Z)nmGqrMcWl=s%`PYu*~> %AI9_PrivateDataEnd \ No newline at end of file
diff --git a/icons/50x50blank-trans.png b/icons/50x50blank-trans.png
new file mode 100644
index 0000000..b8de5ee
--- /dev/null
+++ b/icons/50x50blank-trans.png
Binary files differ
diff --git a/icons/big_left_arrow.png b/icons/big_left_arrow.png
new file mode 100644
index 0000000..9cd03c7
--- /dev/null
+++ b/icons/big_left_arrow.png
Binary files differ
diff --git a/icons/big_pause.png b/icons/big_pause.png
new file mode 100644
index 0000000..53bdcdb
--- /dev/null
+++ b/icons/big_pause.png
Binary files differ
diff --git a/icons/big_right_arrow.png b/icons/big_right_arrow.png
new file mode 100644
index 0000000..026d59c
--- /dev/null
+++ b/icons/big_right_arrow.png
Binary files differ
diff --git a/icons/camera.png b/icons/camera.png
new file mode 100644
index 0000000..05c8af8
--- /dev/null
+++ b/icons/camera.png
Binary files differ
diff --git a/icons/clear.png b/icons/clear.png
new file mode 100644
index 0000000..50bd045
--- /dev/null
+++ b/icons/clear.png
Binary files differ
diff --git a/icons/down_arrow.png b/icons/down_arrow.png
new file mode 100644
index 0000000..df950cd
--- /dev/null
+++ b/icons/down_arrow.png
Binary files differ
diff --git a/icons/filmstrip.png b/icons/filmstrip.png
new file mode 100644
index 0000000..5429616
--- /dev/null
+++ b/icons/filmstrip.png
Binary files differ
diff --git a/icons/left_arrow.png b/icons/left_arrow.png
new file mode 100644
index 0000000..bde58b9
--- /dev/null
+++ b/icons/left_arrow.png
Binary files differ
diff --git a/icons/logo.png b/icons/logo.png
new file mode 100644
index 0000000..ffab90e
--- /dev/null
+++ b/icons/logo.png
Binary files differ
diff --git a/icons/old_pause.png b/icons/old_pause.png
new file mode 100644
index 0000000..59dc8b4
--- /dev/null
+++ b/icons/old_pause.png
Binary files differ
diff --git a/icons/old_x_clear.png b/icons/old_x_clear.png
new file mode 100644
index 0000000..4885eea
--- /dev/null
+++ b/icons/old_x_clear.png
Binary files differ
diff --git a/icons/pause.png b/icons/pause.png
new file mode 100644
index 0000000..98abd38
--- /dev/null
+++ b/icons/pause.png
Binary files differ
diff --git a/icons/pink_arrow.png b/icons/pink_arrow.png
new file mode 100644
index 0000000..bb0ac73
--- /dev/null
+++ b/icons/pink_arrow.png
Binary files differ
diff --git a/icons/reset.png b/icons/reset.png
new file mode 100644
index 0000000..48b7f61
--- /dev/null
+++ b/icons/reset.png
Binary files differ
diff --git a/icons/right_arrow.png b/icons/right_arrow.png
new file mode 100644
index 0000000..1dd5e10
--- /dev/null
+++ b/icons/right_arrow.png
Binary files differ
diff --git a/icons/sound_icon.png b/icons/sound_icon.png
new file mode 100644
index 0000000..e953394
--- /dev/null
+++ b/icons/sound_icon.png
Binary files differ
diff --git a/icons/up_arrow.png b/icons/up_arrow.png
new file mode 100644
index 0000000..e37d71c
--- /dev/null
+++ b/icons/up_arrow.png
Binary files differ
diff --git a/icons/yellow_arrow.png b/icons/yellow_arrow.png
new file mode 100644
index 0000000..f3a35f2
--- /dev/null
+++ b/icons/yellow_arrow.png
Binary files differ
diff --git a/lp-en/An_Overview.txt b/lp-en/An_Overview.txt
new file mode 100644
index 0000000..f4f0819
--- /dev/null
+++ b/lp-en/An_Overview.txt
@@ -0,0 +1,13 @@
+Flipsticks: Lesson Plans Overview
+
+Flipsticks is a "keyframe animation" tool that lets you pose and program a stick figure to rotate, twist, turn, tumble, and dane. It provides a fun context for learners (and beginning XO users) to explore basic functions of the XO laptop and to learn how to articulate many creative ideas. You can save your Flipsticks animations to the Journal and share them with friends using the mesh network. You can export the first pose as a picture, then use it in other creative projects.
+
+Flipsticks can be integrated into many school subject areas such as creative writing, art, drama, geometry and computer programming. Students can make Flipsticks figures that relate to a subject the class is studying, and share them with peers. It helps you develop spatial and analytical thinking skills and to express ideas that you might not have words for yet.
+
+Skills:
+Learn how to use specific programs of the XO Laptop.
+Learn some basic geometric ideas.
+Learn to translate ideas into artistic images.
+Learn about the climax of a story.
+Learn how to tell a story.
+Practice working in groups and with a partner.
diff --git a/lp-en/Lesson_Plan_1.txt b/lp-en/Lesson_Plan_1.txt
new file mode 100644
index 0000000..e0e76bb
--- /dev/null
+++ b/lp-en/Lesson_Plan_1.txt
@@ -0,0 +1,65 @@
+Lesson Plan 1: Exploring Flipsticks
+From the Home screen of your XO, click on the Flipsticks icon to open it. You can also open Flipsticks from the MaMaMedia Creative Center activity.
+
+POSE YOUR STICK FIGURE BY CLICKING DIRECTLY ON HIM
+
+The first thing you will notice is a stick figure in the 'stage' area.
+
+ - Put him in different poses by clicking and dragging on the red dots
+ on his body
+ - Use the yellow dot to rotate him.
+ - Use the green dot to move him to a different place on the screen
+
+POSE YOUR STICK FIGURE USING THE BODY PARTS LIST
+
+ - Look at the text list of body parts on the right side of the screen.
+ - Click on a part, such as "Head" or "Upper Left Arm" and look at the
+ numbers for "Angle" and "Size" that appear at the top of the list.
+ - Click on the "Angle" number then type in a new number on your
+ keyboard to move that part on your stick figure
+ - Click on the "Size" number then type in a new number on you keyboard
+ to make the part bigger or smaller.
+ - Press the "enter" key on your keyboard to save your new number.
+ - Notice how your stick figure has changed.
+
+SAVE YOUR POSES AS KEYFRAMES
+
+ - When you like the way your stick figure looks, save it as a "keyframe"
+ - The keyframes are the five circles under the Stage window.
+ - Click on a keyframe circle to choose it -- it will turn pink so you
+ know it is ready. Then click on the Camera button (at the bottom
+ of the screen) to save you pose into this keyframe.
+ - Move the stick figure into a new pose, then save it by clicking on
+ another keyframe circle and then clicking the Camera button.
+ - Fill up all five keyframes with different poses.
+
+WATCH YOUR ANIMATION!
+
+ - To play your animationl, press the Play (right arrow) button at the
+ right end of the keyframes line. Your figure will move through the
+ poses you created.
+ - Notice how the computer adds extra poses in between you keyframes,
+ so your animation plays smoothly.
+ - Press on the Play button again if you would like to stop
+ - Press the Play Backwards (left arrow) button to play it backwards
+ - Press the Play Backwards button again if you would like to stop.
+
+EDIT YOUR ANIMATION
+
+REORDER THE POSES: You can change the order of you keyframes by clicking on each circle and dragging it to the left or right. Press Play to see how the figure moves when the frames are in a different order.
+
+ADJUST THE SPEED: There is a Speed control "slider" bar underneath the keyframes. Make your animation move faster or slower by clicking on the little circle on the Speed bar and dragging it left (to go slower) or right (to go faster).
+
+RESET THE STICK FIGURE: If you want to start a new post from the original standing position, click the butotn with the man on it.
+
+CLEAR FRAMES: If you want to clear out the keyframes and start fresh, click the button that looks like a circle with a line through it.
+
+SAVE AND SHARE YOUR ANIMATION
+
+Take time to explore and make many different movements with your figure. When you are done, click on the Journal icon (open book at the top of your screen) to keep a copy of your animation in the Journal.
+
+Share the animation you made with your friends and classmates by selecting the "Share with: My Neighborhood" option in the top bar of your screen.
+
+Use the "Export Frame One" button to turn your first pose into a picture that you can use in other programs, like Paint or Jigshaw Puzzle.
+
+After looking at one another's Flipsticks animations, discuss what was difficult and what was easy about making them. What would you like to program your Flipsticks figure to do next?
diff --git a/lp-en/Lesson_Plan_2.txt b/lp-en/Lesson_Plan_2.txt
new file mode 100644
index 0000000..c7928e6
--- /dev/null
+++ b/lp-en/Lesson_Plan_2.txt
@@ -0,0 +1,42 @@
+Lesson Plan 2: Introducing Geometry
+
+Geometry is the study of curves, angles, and shapes. Teachers or students who are familiar with geometry can lead new learners in the following exercise.
+
+EXPLORE BASICS ABOUT ANGLES AND STRAIGHT LINES
+
+Ask the learners: What do you know about geometry? Then explain that you will be exploring some basics about angles and straight lines.
+
+ - Using a chalk board or paper, draw a circle and explain that
+ a perfect circle is 360 degrees around.
+ - Draw a straight horizontal line through the circle and explain
+ that the line is a 180 degree angle.
+ - Draw a staight vertical line through the middle of the circle;
+ ask learners what they notice about the shape it created by
+ crossing the straight horizontal line.
+ - Point out how cutting the circle into four quarters forms 90
+ degree angles. Explain that a 90 degree angle is called a
+ right angle
+ - Draw a diagonal line that cuts one of the four quarters of the
+ circle in half again. Explain that an angle half the size of
+ the 90 degree angle is a 45 degree angle.
+ - Discuss with the class why mathematicians measure angles and
+ what migth be the importance of doing this
+
+NOW USE FLIPSTICKS TO EXPLORE ANGLES FURTHER
+
+From the Home screen of your XO, lick on the Flipsticks icon to open it. You can also open Flipsticks from the MaMaMedia Creative Center activity.
+
+Go the the Body Parts list and click on the "Upper Right Arm" then move your cursor where it says "Angle" and type in a 0. Press "enter" on the keyboard.
+
+Click on the "Lower Right Arm" and type in 0. Press "enter" on the keyboard. Now you should have a straight line. This should be the figure's first
+movement.
+
+Click on the first keyframe circle and then the camera button to save this pose. Click on the second keyframe circle, then go back to the Body Parts list. Click on the "Lower Right Arm" and type in 45. Press "enter" on the keyboard. Click on the camera button to save this pose.
+
+Click on the the third keyframe circle, then go back to the Body Parts list. Click on the "Lower Right Arm" and then type in 270. Press "enter" on the keyboard. Click on the camera button to save this pose.
+
+Click on the fifth keyframe circle, then go back to the Body Parts list. Click on the "Lower Right Arm" and type in 360. Press "enter" on the keyboard. Click on the camera button to save this pose.
+
+Press the play button and discuss what you notice about the movements this figure is making. What size angles are made? What is the final shape that has been made? How many 90 degree anbles are there? How many 45 degree angles are there?
+
+Have on student record this discussion on the XO laptop in the WRITE program.
diff --git a/lp-en/Lesson_Plan_3.txt b/lp-en/Lesson_Plan_3.txt
new file mode 100644
index 0000000..2ebc4f9
--- /dev/null
+++ b/lp-en/Lesson_Plan_3.txt
@@ -0,0 +1,25 @@
+Lesson Plan 3: Progressive Story Telling
+
+A progressive story is when one person starts a story idea an everyone else in the group adds a part of the story to it until the story is complete.
+
+To start this Flipsticks story, the teacher or a student should create a Flipsticks animation on the XO computer. Together the class is going to write a story based on this animation.
+
+Sit in a circle on the floor and watch the starter animation as a group.
+
+The person who created the animation should tell the first part of the story, and explain who and where the character is.
+
+The next student should share what would happen next in the story. Just choose one simple action. This story should be based on the picture and should follow what came begore.
+
+The next student should add do the story and so on.
+
+Each idea should build off of the next. The story needs to build up to a problem, a climax, and finally a solution.
+
+One student should record this story on their XO laptop.
+
+Now each person should work on a Flipsticks animation for their part of the story.
+
+When everyone is done, have the group sit together again.
+
+The person who wrote the story down for the group will read it out loud.
+
+As their part comes up in the story, each person will show their animation to the group.
diff --git a/manifest b/manifest
new file mode 100644
index 0000000..096c630
--- /dev/null
+++ b/manifest
@@ -0,0 +1 @@
+flipsticks.py
diff --git a/notes.txt b/notes.txt
new file mode 100644
index 0000000..40f2941
--- /dev/null
+++ b/notes.txt
@@ -0,0 +1,7 @@
+linear interpolation:
+this is what to do to get intermediate points
+
+skeletal animation:
+what the program is doing
+
+
diff --git a/old.flipsticks.py b/old.flipsticks.py
new file mode 100644
index 0000000..a953b2a
--- /dev/null
+++ b/old.flipsticks.py
@@ -0,0 +1,1527 @@
+#!/usr/bin/env python
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+#
+
+
+### flipsticks
+###
+### author: Ed Stoner (ed@whsd.net)
+### (c) 2007 World Wide Workshop Foundation
+
+import time
+import pygtk
+pygtk.require('2.0')
+import gtk
+import gobject
+import os
+import math
+import pickle
+
+GRAY = "#B7B7B7" # gray
+PINK = "#FF0099" # pink
+YELLOW = "#FFFF00" # yellow
+WHITE = "#FFFFFF"
+BLACK = "#000000"
+BACKGROUND = "#66CC00" # light green
+BUTTON_FOREGROUND = "#CCFB99" # very light green
+BUTTON_BACKGROUND = "#027F01" # dark green
+COLOR_FG_BUTTONS = (
+ (gtk.STATE_NORMAL,"#CCFF99"),
+ (gtk.STATE_ACTIVE,"#CCFF99"),
+ (gtk.STATE_PRELIGHT,"#CCFF99"),
+ (gtk.STATE_SELECTED,"#CCFF99"),
+ (gtk.STATE_INSENSITIVE,"#CCFF99"),
+ ) # very light green
+COLOR_BG_BUTTONS = (
+ (gtk.STATE_NORMAL,"#027F01"),
+ (gtk.STATE_ACTIVE,"#CCFF99"),
+ (gtk.STATE_PRELIGHT,"#016D01"),
+ (gtk.STATE_SELECTED,"#CCFF99"),
+ (gtk.STATE_INSENSITIVE,"#027F01"),
+ )
+OLD_COLOR_BG_BUTTONS = (
+ (gtk.STATE_NORMAL,"#027F01"),
+ (gtk.STATE_ACTIVE,"#014D01"),
+ (gtk.STATE_PRELIGHT,"#016D01"),
+ (gtk.STATE_SELECTED,"#027F01"),
+ (gtk.STATE_INSENSITIVE,"#027F01"),
+ )
+
+SPANISH = u'Espa\xf1ol'
+LANG = {'English':{'size':'Size',
+ 'angle':'Angle',
+ 'lessonplan':'Lesson Plans',
+ 'lpdir':'lp-en',
+ 'HEAD':'Head',
+ 'NECK':'Neck',
+ 'RIGHT SHOULDER':'Right Shoulder',
+ 'UPPER RIGHT ARM':'Upper Right Arm',
+ 'LOWER RIGHT ARM':'Lower Right Arm',
+ 'RIGHT HAND':'Right Hand',
+ 'LEFT SHOULDER':'Left Shoulder',
+ 'UPPER LEFT ARM':'Upper Left Arm',
+ 'LOWER LEFT ARM':'Lower Left Arm',
+ 'LEFT HAND':'Left Hand',
+ 'TORSO':'Torso',
+ 'RIGHT HIP':'Right Hip',
+ 'UPPER RIGHT LEG':'Upper Right Leg',
+ 'LOWER RIGHT LEG':'Lower Right Leg',
+ 'RIGHT FOOT':'Right Foot',
+ 'LEFT HIP':'Left Hip',
+ 'UPPER LEFT LEG':'Upper Left Leg',
+ 'LOWER LEFT LEG':'Lower Left Leg',
+ 'LEFT FOOT':'Left Foot'},
+ SPANISH:{'size':u'Tama\xf1o',
+ 'angle':u'\xe1ngulo',
+ 'lessonplan':u'Planes de la lecci\xf3n',
+ 'lpdir':'lp-es',
+ 'HEAD':'Cabeza',
+ 'NECK':'Cuello',
+ 'RIGHT SHOULDER':'Hombro derecho',
+ 'UPPER RIGHT ARM':'Brazo derecho superior',
+ 'LOWER RIGHT ARM':'Bajar el brazo derecho',
+ 'RIGHT HAND':'Mano derecha',
+ 'LEFT SHOULDER':'Hombro izquierdo',
+ 'UPPER LEFT ARM':'Brazo izquierdo superior',
+ 'LOWER LEFT ARM':u'Un brazo izquierdo m\xe1s bajo',
+ 'LEFT HAND':'Mano izquierda',
+ 'TORSO':'Torso',
+ 'RIGHT HIP':'Cadera derecha',
+ 'UPPER RIGHT LEG':'Pierna derecha superior',
+ 'LOWER RIGHT LEG':'Bajar la pierna derecha',
+ 'RIGHT FOOT':'Pie derecho',
+ 'LEFT HIP':'Cadera izquierda',
+ 'UPPER LEFT LEG':'Pierna izquierda superior',
+ 'LOWER LEFT LEG':u'Una pierna izquierda m\xe1s baja',
+ 'LEFT FOOT':'Pie izquierdo'}}
+
+DRAWWIDTH = 750
+DRAWHEIGHT = 500
+FPWIDTH = 150
+FPHEIGHT = 100
+#DRAWHEIGHT = 300 for my laptop
+KEYFRAMEWIDTH = 675
+KEYFRAMEHEIGHT = 80
+
+KEYFRAMES = [50,190,337,487,625]
+TOTALFRAMES = 30
+
+STICKS = {'HEAD':(0,15),
+ 'NECK':(90,15),
+ 'RIGHT SHOULDER':(185,25),
+ 'UPPER RIGHT ARM':(60,35),
+ 'LOWER RIGHT ARM':(35,35),
+ 'LEFT SHOULDER':(355,25),
+ 'UPPER LEFT ARM':(300,35),
+ 'LOWER LEFT ARM':(325,35),
+ 'TORSO':(270,60),
+ 'RIGHT HIP':(80,20),
+ 'UPPER RIGHT LEG':(300,50),
+ 'LOWER RIGHT LEG':(340,40),
+ 'RIGHT FOOT':(85,15),
+ 'LEFT HIP':(280,20),
+ 'UPPER LEFT LEG':(65,50),
+ 'LOWER LEFT LEG':(15,40),
+ 'LEFT FOOT':(275,15)}
+
+PARTS = {'RIGHT HAND':14,
+ 'LEFT HAND':14}
+
+
+STICKLIST = ['NECK','HEAD','RIGHT SHOULDER','UPPER RIGHT ARM','LOWER RIGHT ARM',
+ 'LEFT SHOULDER','UPPER LEFT ARM','LOWER LEFT ARM','TORSO',
+ 'RIGHT HIP','UPPER RIGHT LEG','LOWER RIGHT LEG','RIGHT FOOT',
+ 'LEFT HIP','UPPER LEFT LEG','LOWER LEFT LEG','LEFT FOOT']
+
+LABELLIST = ['HEAD','NECK','RIGHT SHOULDER','UPPER RIGHT ARM','LOWER RIGHT ARM',
+ 'RIGHT HAND','LEFT SHOULDER','UPPER LEFT ARM','LOWER LEFT ARM','LEFT HAND',
+ 'TORSO','RIGHT HIP','UPPER RIGHT LEG','LOWER RIGHT LEG','RIGHT FOOT',
+ 'LEFT HIP','UPPER LEFT LEG','LOWER LEFT LEG','LEFT FOOT']
+
+# The joint is the circle at the end of the stick
+
+JOINTS = {'HEAD':'head',
+ 'NECK':'neck',
+ 'RIGHT SHOULDER':'rightshoulder',
+ 'UPPER RIGHT ARM':'rightelbow',
+ 'LOWER RIGHT ARM':'righthand',
+ 'LEFT SHOULDER':'leftshoulder',
+ 'UPPER LEFT ARM':'leftelbow',
+ 'LOWER LEFT ARM':'lefthand',
+ 'TORSO':'groin',
+ 'RIGHT HIP':'righthip',
+ 'UPPER RIGHT LEG':'rightknee',
+ 'LOWER RIGHT LEG':'rightheel',
+ 'RIGHT FOOT':'righttoe',
+ 'LEFT HIP':'lefthip',
+ 'UPPER LEFT LEG':'leftknee',
+ 'LOWER LEFT LEG':'leftheel',
+ 'LEFT FOOT':'lefttoe'}
+
+JOINTTOSTICK = {}
+for jname in JOINTS:
+ JOINTTOSTICK[JOINTS[jname]] = jname
+
+PARTS = {'HEAD':40,
+ 'RIGHT HAND':14,
+ 'LEFT HAND':14}
+
+TESTSTICKS = {'RIGHT SHOULDER':(37,20),
+ 'UPPER RIGHT ARM':(6,15),
+ 'LOWER RIGHT ARM':(10,15)}
+
+def capwords(s):
+ x = s.split()
+ n = []
+ for word in x:
+ n.append(word.capitalize())
+ return ' '.join(n)
+
+def prepare_btn(btn, w=-1, h=-1):
+ for state, color in COLOR_BG_BUTTONS:
+ btn.modify_bg(state, gtk.gdk.color_parse(color))
+ c = btn.get_child()
+ if c is not None:
+ for state, color in COLOR_FG_BUTTONS:
+ c.modify_fg(state, gtk.gdk.color_parse(color))
+ else:
+ for state, color in COLOR_FG_BUTTONS:
+ btn.modify_fg(state, gtk.gdk.color_parse(color))
+ if w>0 or h>0:
+ btn.set_size_request(w, h)
+ return btn
+
+def inarea(x,y,awidth,aheight):
+ if x+5 > awidth:
+ return False
+ if y+5 > aheight:
+ return False
+ if y < 5:
+ return False
+ if x < 5:
+ return False
+ return True
+
+def interpolate(x,x0,y0,x1,y1):
+ if x1-x0 == 0:
+ return y0
+ m = float(y1-y0)/float(x1-x0)
+ y = y0 + ((x-x0)*m)
+ return y
+
+def getpoints(x,y,angle,len):
+ nx = int(round(x + (len * math.cos(math.radians(angle)))))
+ ny = int(round(y - (len * math.sin(math.radians(angle)))))
+ return (nx,ny)
+
+def scalesticks(stickdict,i):
+ for key in stickdict:
+ (angle,len) = stickdict[key]
+ newlen = int(len * i)
+ stickdict[key] = (angle,newlen)
+
+class flipsticks:
+ def delete_event(self, widget, event, data=None):
+ return False
+
+ def destroy(self, widget, data=None):
+ gtk.main_quit()
+
+ def expose_event(self, widget, event):
+ x , y, width, height = event.area
+ widget.window.draw_drawable(widget.get_style().fg_gc[gtk.STATE_NORMAL],
+ self.pixmap, x, y, x, y, width, height)
+ return False
+
+ def kf_expose_event(self, widget, event):
+ x , y, width, height = event.area
+ widget.window.draw_drawable(widget.get_style().fg_gc[gtk.STATE_NORMAL],
+ self.kfpixmap, x, y, x, y, width, height)
+ return False
+
+ def fp_expose_event(self, widget, event):
+ x , y, width, height = event.area
+ widget.window.draw_drawable(widget.get_style().fg_gc[gtk.STATE_NORMAL],
+ self.fppixmap, x, y, x, y, width, height)
+ return False
+
+ def configure_event(self, widget, event):
+ x, y, width, height = self.mfdraw.get_allocation()
+ self.pixmap = gtk.gdk.Pixmap(self.mfdraw.window, width, height)
+ self.drawmainframe()
+ return True
+
+ def kf_configure_event(self, widget, event):
+ self.drawkeyframe()
+ return True
+
+ def fp_configure_event(self, widget, event):
+ self.drawfp()
+ return True
+
+ def motion_notify_event(self, widget, event):
+ if event.is_hint:
+ x, y, state = event.window.get_pointer()
+ else:
+ x = event.x
+ y = event.y
+ state = event.state
+ if state & gtk.gdk.BUTTON1_MASK and self.pixmap != None:
+ if self.jointpressed:
+ if inarea(x,y,DRAWWIDTH,DRAWHEIGHT):
+ #self.joints[self.jointpressed] = (x,y) # old hack way
+ # first find the parents x,y
+ (px,py) = self.getparentjoint(self.jointpressed,self.joints,
+ self.middle)
+ if x-px == 0:
+ #computeangle = 0
+ b = 1
+ else:
+ b = float(px-x)
+ a = float(y-py)
+ computeangle = int(math.degrees(math.atan(a/b)))
+ stickname = JOINTTOSTICK[self.jointpressed]
+ # add sum of parent angles to new angle
+ parents = self.getparentsticks(stickname)
+ panglesum = 0
+ for parentname in parents:
+ (pangle,plen) = self.sticks[parentname]
+ panglesum += pangle
+ (angle, len) = self.sticks[stickname]
+ #print 'X:%s,Y:%s,PX:%s,PY:%s,ANGLE:%s,NEWANGLE:%s' % (x,y,px,py,angle,newangle)
+ newangle = computeangle-panglesum
+ if (x < px) or (b == 1):
+ newangle = newangle + 180
+ if newangle < 0:
+ newangle = 360 + newangle
+ self.sticks[stickname] = (newangle,len)
+ self.setjoints() # this is overkill
+ self.drawmainframe()
+ self.updateentrybox()
+ elif self.middlepressed:
+ if inarea(x,y,DRAWWIDTH,DRAWHEIGHT):
+ xdiff = x-self.middle[0]
+ ydiff = y-self.middle[1]
+ self.shiftjoints(xdiff,ydiff)
+ self.middle = (x,y)
+ self.drawmainframe()
+ elif self.rotatepressed:
+ if inarea(x,y,DRAWWIDTH,DRAWHEIGHT):
+ (px,py) = self.middle
+ if x-px == 0:
+ #computeangle = 0
+ b = 1
+ else:
+ b = float(px-x)
+ a = float(y-py)
+ computeangle = int(math.degrees(math.atan(a/b)))
+ stickname = 'TORSO'
+ (angle, len) = self.sticks[stickname]
+ newangle = computeangle
+ if (x < px) or (b == 1):
+ newangle = newangle + 180
+ if newangle < 0:
+ newangle = 360 + newangle
+ anglediff = newangle-angle
+ self.sticks[stickname] = (newangle,len)
+ # now rotate the other sticks off of the middle
+ for stickname in ['NECK','RIGHT SHOULDER','LEFT SHOULDER']:
+ (sangle,slen) = self.sticks[stickname]
+ newsangle = sangle+anglediff
+ if newsangle < 0:
+ newsangle = 360 + newsangle
+ if newsangle > 360:
+ newsangle = newsangle - 360
+ self.sticks[stickname] = (newsangle,slen)
+ self.setjoints()
+ self.drawmainframe()
+ self.updateentrybox()
+
+ return True
+
+ def kf_motion_notify_event(self, widget, event):
+ if event.is_hint:
+ x, y, state = event.window.get_pointer()
+ else:
+ x = event.x
+ y = event.y
+ state = event.state
+ if state & gtk.gdk.BUTTON1_MASK and self.pixmap != None:
+ if self.kfpressed >= 0:
+ if inarea(x,y,KEYFRAMEWIDTH,KEYFRAMEHEIGHT):
+ xdiff = x-self.keyframes[self.kfpressed]
+ self.shiftjoints(xdiff,0,self.kfsjoints[self.kfpressed])
+ self.keyframes[self.kfpressed] = x
+ self.drawkeyframe()
+ return True
+
+ def button_press_event(self, widget, event):
+ if event.button == 1 and self.pixmap != None:
+ joint = self.injoint(event.x, event.y)
+ if joint:
+ self.jointpressed = joint
+ self.drawmainframe()
+ elif self.inmiddle(event.x, event.y):
+ self.middlepressed = True
+ self.drawmainframe()
+ elif self.inrotate(event.x, event.y):
+ self.rotatepressed = True
+ self.drawmainframe()
+ return True
+
+ def syncmaintokf(self):
+ # set the main window to the keyframe
+ if self.kfsticks[self.kfselected]:
+ self.sticks = self.kfsticks[self.kfselected].copy()
+ self.parts = self.kfparts[self.kfselected].copy()
+ self.middle = self.kfmiddles[self.kfselected]
+ self.setjoints()
+ self.drawmainframe()
+
+ def kf_button_press_event(self, widget, event):
+ if event.button == 1 and self.pixmap != None:
+ kfnum = self.inkeyframe(event.x, event.y)
+ if kfnum >= 0:
+ self.kfpressed = kfnum
+ self.kfselected = kfnum
+ self.drawkeyframe()
+ self.syncmaintokf()
+ self.updateentrybox()
+ return True
+
+ def button_release_event(self, widget, event):
+ self.jointpressed = None
+ self.middlepressed = False
+ self.rotatepressed = False
+ self.drawmainframe()
+ return True
+
+ def kf_button_release_event(self, widget, event):
+ self.kfpressed = -1
+ self.drawkeyframe()
+ return True
+
+ def setplayspeed(self,adj):
+ self.waittime = int((6-adj.value)*150)
+ if self.playing:
+ gobject.source_remove(self.playing)
+ self.playing = gobject.timeout_add(self.waittime, self.playframe)
+
+ def playframe(self):
+ if not self.playing:
+ return False
+ joints = self.frames[self.playframenum]
+ parts = self.fparts[self.playframenum]
+ # draw on the main drawing area
+ area = self.toplevel.window
+ drawgc = area.new_gc()
+ drawgc.line_width = 3
+ cm = drawgc.get_colormap()
+ white = cm.alloc_color('white')
+ black = cm.alloc_color('black')
+ drawgc.fill = gtk.gdk.SOLID
+ x, y, width, height = self.mfdraw.get_allocation()
+ #self.pixmap = gtk.gdk.Pixmap(self.mfdraw.window, width, height)
+ # clear area
+ drawgc.set_foreground(white)
+ self.pixmap.draw_rectangle(drawgc,True,0,0,width,height)
+
+ drawgc.set_foreground(black)
+ #hsize = self.sticks['HEAD'][1] # really half of head size
+ hsize = self.fhsize[self.playframenum]
+ middle = self.fmiddles[self.playframenum]
+ rhsize = parts['RIGHT HAND']
+ lhsize = parts['LEFT HAND']
+ self.drawstickman(drawgc,self.pixmap,middle,joints,hsize,rhsize,lhsize)
+ # draw circle for middle
+ #green = cm.alloc_color('green')
+ #drawgc.set_foreground(green)
+ #x,y = middle
+ #self.pixmap.draw_arc(drawgc,True,x-5,y-5,10,10,0,360*64)
+ self.mfdraw.queue_draw()
+
+ fsecs = self.frames.keys()
+ fsecs.sort()
+ if self.playingbackwards:
+ # decrement playframenum
+ if self.playframenum == fsecs[0]:
+ self.playframenum = fsecs[-1]
+ else:
+ i = fsecs.index(self.playframenum)
+ self.playframenum = fsecs[i-1]
+ else:
+ # increment playframenum
+ if self.playframenum == fsecs[-1]:
+ self.playframenum = fsecs[0]
+ else:
+ i = fsecs.index(self.playframenum)
+ self.playframenum = fsecs[i+1]
+ if self.playing:
+ return True
+ else:
+ return False
+
+ def enterangle_callback(self, widget, entry):
+ stickname = self.stickselected
+ if stickname in self.sticks:
+ newangle = int(entry.get_text())
+ (angle, len) = self.sticks[stickname]
+ self.sticks[stickname] = (newangle,len)
+ else:
+ # part not stick
+ self.angleentry.set_text('-')
+ self.setjoints()
+ self.drawmainframe()
+
+ def updateentrybox(self):
+ if self.stickselected in self.sticks:
+ (angle, len) = self.sticks[self.stickselected]
+ self.angleentry.set_text(str(angle))
+ else:
+ # part not stick
+ len = self.parts[self.stickselected]
+ self.sizeentry.set_text(str(len))
+
+ def enterlen_callback(self, widget, entry):
+ stickname = self.stickselected
+ newlen = int(entry.get_text())
+ if stickname in self.sticks:
+ if stickname == 'HEAD':
+ newlen = int(newlen/2.0)
+ (angle, len) = self.sticks[stickname]
+ self.sticks[stickname] = (angle,newlen)
+ else:
+ # part not stick
+ self.parts[stickname] = newlen
+ self.setjoints()
+ self.drawmainframe()
+
+ def reset(self, widget, data=None):
+ xmiddle = int(DRAWWIDTH/2.0)
+ ymiddle = int(DRAWHEIGHT/2.0)
+ self.middle = (xmiddle,ymiddle)
+ self.sticks = STICKS.copy()
+ self.parts = PARTS.copy()
+ self.selectstickebox()
+ self.setjoints()
+ self.drawmainframe()
+
+ def setframe(self, widget, data=None):
+ self.kfmiddles[self.kfselected] = self.middle
+ self.kfparts[self.kfselected] = self.parts.copy()
+ self.kfsticks[self.kfselected] = self.sticks.copy()
+ self.kfssticks[self.kfselected] = self.sticks.copy()
+ scalesticks(self.kfssticks[self.kfselected],.2)
+ self.kfjoints[self.kfselected] = self.joints.copy()
+ self.kfsjoints[self.kfselected] = self.initjoints()
+ #x, y, width, height = self.kfdraw.get_allocation()
+ #y = int(height/2.0)
+ #y = int(KEYFRAMEHEIGHT/2.0)-5
+ y = int(KEYFRAMEHEIGHT/2.0)
+ x = self.keyframes[self.kfselected]
+ kfmiddle = (x,y)
+ self.setjoints(self.kfsjoints[self.kfselected],self.kfssticks[self.kfselected],kfmiddle)
+ self.drawkeyframe()
+
+ def clearframe(self, widget, data=None):
+ self.kfsticks[self.kfselected] = None
+ self.kfssticks[self.kfselected] = None
+ self.kfjoints[self.kfselected] = None
+ self.kfsjoints[self.kfselected] = None
+ self.kfparts[self.kfselected] = None
+ self.drawkeyframe()
+
+ def intjoints(self,sjoints,ejoints,count,numpoints):
+ # numpoints: number of points between start and end
+ # count: point were getting now
+ ijoints = {}
+ for jname in sjoints:
+ (x0,y0) = sjoints[jname]
+ (x1,y1) = ejoints[jname]
+ #print 'x0:%s,y0:%s' % (x0,y0)
+ #print 'x1:%s,y1:%s' % (x1,y1)
+ x = x0 + (count * ((x1-x0)/float(numpoints)))
+ y = interpolate(x,x0,y0,x1,y1)
+ ijoints[jname] = (int(x),int(y))
+ return ijoints
+
+ def intparts(self,sparts,eparts,count,numpoints):
+ iparts = {}
+ for pname in sparts:
+ x0 = sparts[pname]
+ x1 = eparts[pname]
+ if x0 == x1:
+ iparts[pname] = x0
+ continue
+ x = x0 + (count * ((x1-x0)/float(numpoints)))
+ iparts[pname] = int(x)
+ return iparts
+
+ def inthsize(self,shsize,ehsize,count,numpoints):
+ x0 = shsize
+ x1 = ehsize
+ if x0 == x1:
+ return x0
+ x = x0 + (count * ((x1-x0)/float(numpoints)))
+ return int(x)
+
+ def intmiddle(self,smiddle,emiddle,count,numpoints):
+ (x0,y0) = smiddle
+ (x1,y1) = emiddle
+ x = x0 + (count * ((x1-x0)/float(numpoints)))
+ y = interpolate(x,x0,y0,x1,y1)
+ return (int(x),int(y))
+
+ def makeframes(self):
+ endsecs = KEYFRAMEWIDTH
+ fint = int(endsecs/float(TOTALFRAMES)) # frame interval
+ self.frames = {}
+ self.fparts = {}
+ self.fmiddles = {}
+ self.fhsize = {}
+ kf = {} # point to keyframes by x-middle (which represents a time, like seconds)
+ for i in range(len(self.keyframes)):
+ secs = self.keyframes[i]
+ kf[secs] = i
+ # use self.kfjoints[kf[secs]] and self.kfparts[kf[secs]]
+ self.frames[secs] = self.kfjoints[kf[secs]].copy()
+ self.fparts[secs] = self.kfparts[kf[secs]].copy()
+ self.fmiddles[secs] = self.kfmiddles[kf[secs]]
+ #print '%s:KFMIDDLE:%s = (%s,%s)' % (i,secs,self.fmiddles[secs][0],self.fmiddles[secs][1])
+ self.fhsize[secs] = self.kfsticks[kf[secs]]['HEAD'][1]
+ fsecs = self.frames.keys()
+ fsecs.sort()
+ # ADD frame at 0
+ self.frames[0] = self.frames[fsecs[0]].copy()
+ self.fparts[0] = self.fparts[fsecs[0]].copy()
+ self.fmiddles[0] = self.fmiddles[fsecs[0]]
+ self.fhsize[0] = self.fhsize[fsecs[0]]
+ # ADD frame at end
+ self.frames[endsecs] = self.frames[fsecs[-1]].copy()
+ self.fparts[endsecs] = self.fparts[fsecs[-1]].copy()
+ self.fmiddles[endsecs] = self.fmiddles[fsecs[-1]]
+ self.fhsize[endsecs] = self.fhsize[fsecs[-1]]
+ # now fill in frames between
+ fsecs = self.frames.keys()
+ fsecs.sort()
+ for i in range(len(fsecs)):
+ if i == len(fsecs)-1:
+ continue # nothing after end
+ startsecs = fsecs[i]
+ endsecs = fsecs[i+1]
+ numframes = int((endsecs-startsecs)/float(fint))-1
+ #print 'NUMFRAMES(%s):%s' % (i,numframes)
+ for j in range(numframes-1): # MAYBE SHOULD BE numframes
+ secs = startsecs + ((j+1)*fint)
+ self.frames[secs] = self.intjoints(self.frames[startsecs],self.frames[endsecs],
+ j+1,numframes)
+ self.fparts[secs] = self.intparts(self.fparts[startsecs],self.fparts[endsecs],
+ j+1,numframes)
+ self.fmiddles[secs] = self.intmiddle(self.fmiddles[startsecs],self.fmiddles[endsecs],
+ j+1,numframes)
+ self.fhsize[secs] = self.inthsize(self.fhsize[startsecs],self.fhsize[endsecs],
+ j+1,numframes)
+ #print '%s,%s(%s secs):(%s,%s) START(%s,%s) - END(%s,%s) startsecs:%s endsecs:%s numframes:%s' % (i,j,secs,self.fmiddles[secs][0],self.fmiddles[secs][1],self.fmiddles[startsecs][0],self.fmiddles[startsecs][1],self.fmiddles[endsecs][0],self.fmiddles[endsecs][1],startsecs,endsecs,numframes)
+ #print self.frames.keys()
+
+ def shiftjoints(self,xdiff,ydiff,joints=None):
+ if not joints:
+ joints = self.joints
+ for jname in joints:
+ #if isinstance(self.joints[jname],tuple):
+ (jx,jy) = joints[jname]
+ njx = jx + xdiff
+ njy = jy + ydiff
+ joints[jname] = (njx,njy)
+
+ def initjoints(self):
+ joints = {}
+ for stickname in JOINTS:
+ jname = JOINTS[stickname]
+ joints[jname] = (0,0)
+ return joints
+
+ def getparentsticks(self, stickname):
+ if stickname in ['RIGHT SHOULDER','LEFT SHOULDER','NECK','TORSO']:
+ return []
+ if stickname in ['HEAD']:
+ return ['NECK']
+ if stickname == 'UPPER RIGHT ARM':
+ return ['RIGHT SHOULDER']
+ if stickname == 'LOWER RIGHT ARM':
+ return ['UPPER RIGHT ARM','RIGHT SHOULDER']
+ if stickname == 'UPPER LEFT ARM':
+ return ['LEFT SHOULDER']
+ if stickname == 'LOWER LEFT ARM':
+ return ['UPPER LEFT ARM','LEFT SHOULDER']
+ if stickname == 'RIGHT HIP':
+ return ['TORSO']
+ if stickname == 'UPPER RIGHT LEG':
+ return ['RIGHT HIP','TORSO']
+ if stickname == 'LOWER RIGHT LEG':
+ return ['UPPER RIGHT LEG','RIGHT HIP','TORSO']
+ if stickname == 'RIGHT FOOT':
+ return ['LOWER RIGHT LEG','UPPER RIGHT LEG','RIGHT HIP','TORSO']
+ if stickname == 'LEFT HIP':
+ return ['TORSO']
+ if stickname == 'UPPER LEFT LEG':
+ return ['LEFT HIP','TORSO']
+ if stickname == 'LOWER LEFT LEG':
+ return ['UPPER LEFT LEG','LEFT HIP','TORSO']
+ if stickname == 'LEFT FOOT':
+ return ['LOWER LEFT LEG','UPPER LEFT LEG','LEFT HIP','TORSO']
+
+ def getparentjoint(self,jname,joints,middle):
+ if jname in ['rightshoulder','leftshoulder','groin','neck']:
+ return middle
+ parentjoints = {'rightelbow':'rightshoulder',
+ 'righthand':'rightelbow',
+ 'leftelbow':'leftshoulder',
+ 'lefthand':'leftelbow',
+ 'righthip':'groin',
+ 'rightknee':'righthip',
+ 'rightheel':'rightknee',
+ 'righttoe':'rightheel',
+ 'lefthip':'groin',
+ 'leftknee':'lefthip',
+ 'leftheel':'leftknee',
+ 'lefttoe':'leftheel',
+ 'head':'neck'}
+ return joints[parentjoints[jname]]
+
+ def setjoints(self,joints=None,sticks=None,middle=None):
+ if not joints:
+ joints = self.joints
+ if not sticks:
+ sticks = self.sticks
+ if not middle:
+ middle = self.middle
+ # have to traverse in order because
+ # parent joints must be set right
+ for stickname in self.sticklist:
+ (angle,len) = sticks[stickname]
+ jname = JOINTS[stickname]
+ (x,y) = self.getparentjoint(jname,joints,middle)
+ parents = self.getparentsticks(stickname)
+ panglesum = 0
+ for parentname in parents:
+ (pangle,plen) = sticks[parentname]
+ panglesum += pangle
+ (nx,ny) = getpoints(x,y,angle+panglesum,len)
+ joints[jname] = (nx,ny)
+
+ def drawmainframe(self):
+ area = self.toplevel.window
+ drawgc = area.new_gc()
+ drawgc.line_width = 3
+ cm = drawgc.get_colormap()
+ red = cm.alloc_color('red')
+ yellow = cm.alloc_color('yellow')
+ white = cm.alloc_color('white')
+ black = cm.alloc_color('black')
+ blue = cm.alloc_color('blue')
+ green = cm.alloc_color('green')
+ drawgc.fill = gtk.gdk.SOLID
+ x, y, width, height = self.mfdraw.get_allocation()
+ #self.pixmap = gtk.gdk.Pixmap(self.mfdraw.window, width, height)
+ # clear area
+ drawgc.set_foreground(white)
+ self.pixmap.draw_rectangle(drawgc,True,0,0,width,height)
+
+ drawgc.set_foreground(black)
+ hsize = self.sticks['HEAD'][1] # really half of head size
+ rhsize = self.parts['RIGHT HAND']
+ lhsize = self.parts['LEFT HAND']
+ self.drawstickman(drawgc,self.pixmap,self.middle,self.joints,hsize,rhsize,lhsize)
+ # draw circle for middle
+ drawgc.set_foreground(green)
+ if self.middlepressed:
+ drawgc.set_foreground(blue)
+ x,y = self.middle
+ self.pixmap.draw_arc(drawgc,True,x-5,y-5,10,10,0,360*64)
+ # draw circle for rotate (should be halfway between middle and groin
+ (rx,ry) = self.getrotatepoint()
+ drawgc.set_foreground(yellow)
+ if self.rotatepressed:
+ drawgc.set_foreground(blue)
+ self.pixmap.draw_arc(drawgc,True,rx-5,ry-5,10,10,0,360*64)
+ # draw circles for joints
+ drawgc.set_foreground(black)
+ for jname in self.joints:
+ if jname == 'head':
+ continue
+ x,y = self.joints[jname]
+ if self.jointpressed == jname:
+ drawgc.set_foreground(blue)
+ self.pixmap.draw_arc(drawgc,True,x-5,y-5,10,10,0,360*64)
+ drawgc.set_foreground(black)
+ else:
+ drawgc.set_foreground(red)
+ self.pixmap.draw_arc(drawgc,True,x-5,y-5,10,10,0,360*64)
+ drawgc.set_foreground(black)
+ self.mfdraw.queue_draw()
+
+ def drawstickman(self,drawgc,pixmap,middle,joints,hsize,rhsize,lhsize):
+ leftarm = [middle, joints['leftshoulder'],joints['leftelbow'],joints['lefthand']]
+ rightarm = [middle, joints['rightshoulder'],joints['rightelbow'],joints['righthand']]
+ torso = [joints['neck'],middle,joints['groin']]
+ leftleg = [joints['groin'],joints['lefthip'],joints['leftknee'],
+ joints['leftheel'],joints['lefttoe']]
+ rightleg = [joints['groin'],joints['righthip'],joints['rightknee'],
+ joints['rightheel'],joints['righttoe']]
+ # draw lines
+ pixmap.draw_lines(drawgc, leftarm)
+ pixmap.draw_lines(drawgc, rightarm)
+ pixmap.draw_lines(drawgc, torso)
+ pixmap.draw_lines(drawgc, leftleg)
+ pixmap.draw_lines(drawgc, rightleg)
+ # draw head
+ x,y = joints['head']
+ pixmap.draw_arc(drawgc,True,x-hsize,y-hsize,hsize*2,hsize*2,0,360*64)
+ # draw circles for hands
+ x,y = joints['righthand']
+ pixmap.draw_arc(drawgc,True,x-int(rhsize/2.0),y-int(rhsize/2.0),rhsize,rhsize,0,360*64)
+ x,y = joints['lefthand']
+ pixmap.draw_arc(drawgc,True,x-int(lhsize/2.0),y-int(lhsize/2.0),lhsize,lhsize,0,360*64)
+
+ def drawkeyframe(self):
+ area = self.toplevel.window
+ drawgc = area.new_gc()
+ drawgc.line_width = 2
+ cm = drawgc.get_colormap()
+ red = cm.alloc_color('red')
+ white = cm.alloc_color('white')
+ black = cm.alloc_color('black')
+ blue = cm.alloc_color('blue')
+ green = cm.alloc_color('green')
+ pink = cm.alloc_color(PINK)
+ bgcolor = cm.alloc_color(BACKGROUND)
+ darkgreen = cm.alloc_color(BUTTON_BACKGROUND)
+ drawgc.fill = gtk.gdk.SOLID
+ x, y, width, height = self.kfdraw.get_allocation()
+ self.kfpixmap = gtk.gdk.Pixmap(self.kfdraw.window, width, height)
+ # clear area
+ drawgc.set_foreground(bgcolor)
+ self.kfpixmap.draw_rectangle(drawgc,True,0,0,width,height)
+ # draw line in middle
+ drawgc.set_foreground(darkgreen)
+ self.kfpixmap.draw_rectangle(drawgc,True,10,int(height/2.0)-5,width-20,10)
+ x = 10
+ y = int(height/2.0)
+ self.kfpixmap.draw_arc(drawgc,True,x-5,y-5,10,10,0,360*64)
+ x = width-10
+ self.kfpixmap.draw_arc(drawgc,True,x-5,y-5,10,10,0,360*64)
+ # draw the keyframe circles
+ for i in range(len(self.keyframes)):
+ # first the outer circle
+ x = self.keyframes[i]
+ if i == self.kfselected:
+ drawgc.set_foreground(pink)
+ else:
+ drawgc.set_foreground(darkgreen)
+ self.kfpixmap.draw_arc(drawgc,True,x-40,y-40,80,80,0,360*64)
+ # then the inner circle
+ drawgc.set_foreground(white)
+ self.kfpixmap.draw_arc(drawgc,True,x-35,y-35,70,70,0,360*64)
+ if self.kfssticks[i]:
+ # draw a man in the circle
+ drawgc.set_foreground(black)
+ hsize = self.kfssticks[i]['HEAD'][1]
+ rhsize = int(self.kfparts[i]['RIGHT HAND']*0.2)
+ lhsize = int(self.kfparts[i]['LEFT HAND']*0.2)
+ self.drawstickman(drawgc,self.kfpixmap,(x,y),self.kfsjoints[i],hsize,rhsize,lhsize)
+ #self.kfpixmap.draw_arc(drawgc,True,x-5,y-5,10,10,0,360*64)
+ self.kfdraw.queue_draw()
+
+ def drawfp(self):
+ area = self.toplevel.window
+ drawgc = area.new_gc()
+ drawgc.line_width = 1
+ cm = drawgc.get_colormap()
+ red = cm.alloc_color('red')
+ white = cm.alloc_color('white')
+ black = cm.alloc_color('black')
+ blue = cm.alloc_color('blue')
+ green = cm.alloc_color('green')
+ pink = cm.alloc_color(PINK)
+ bgcolor = cm.alloc_color(BACKGROUND)
+ darkgreen = cm.alloc_color(BUTTON_BACKGROUND)
+ drawgc.fill = gtk.gdk.SOLID
+ x, y, width, height = self.fpdraw.get_allocation()
+ self.fppixmap = gtk.gdk.Pixmap(self.fpdraw.window, width, height)
+ # clear area
+ drawgc.set_foreground(white)
+ self.fppixmap.draw_rectangle(drawgc,True,0,0,width,height)
+ self.fpdraw.queue_draw()
+
+ def inkeyframe(self, x, y):
+ for i in range(len(self.keyframes)):
+ kx = self.keyframes[i]
+ if (abs(kx-x) <= 20):
+ return i
+ return -1
+
+ def injoint(self, x, y):
+ for jname in self.joints:
+ jx, jy = self.joints[jname]
+ if (abs(jx-x) <= 5) and (abs(jy-y) <= 5):
+ return jname
+
+ def inmiddle(self, x, y):
+ mx, my = self.middle
+ if (abs(mx-x) <= 5) and (abs(my-y) <= 5):
+ return True
+
+ def inrotate(self, x, y):
+ rx, ry = self.getrotatepoint()
+ if (abs(rx-x) <= 5) and (abs(ry-y) <= 5):
+ return True
+
+ def getrotatepoint(self):
+ (angle,len) = self.sticks['TORSO']
+ x,y = self.middle
+ (rx,ry) = getpoints(x,y,angle,int(len/2.0))
+ return (rx,ry)
+
+ def selectstick(self, widget, event, data=None):
+ if data:
+ if self.stickselected:
+ ebox = self.stickbuttons[self.stickselected]
+ ebox.modify_bg(gtk.STATE_NORMAL,gtk.gdk.color_parse(BUTTON_BACKGROUND))
+ label = ebox.get_child()
+ label.modify_fg(gtk.STATE_NORMAL, gtk.gdk.color_parse(BUTTON_FOREGROUND))
+ self.stickselected = data
+ self.selectstickebox()
+
+ def selectstickebox(self):
+ ebox = self.stickbuttons[self.stickselected]
+ ebox.modify_bg(gtk.STATE_NORMAL,gtk.gdk.color_parse(BUTTON_FOREGROUND))
+ label = ebox.get_child()
+ label.modify_fg(gtk.STATE_NORMAL, gtk.gdk.color_parse(BUTTON_BACKGROUND))
+ if self.stickselected in self.sticks:
+ if self.stickselected == 'HEAD':
+ self.sizeentry.set_text(str(self.sticks[self.stickselected][1]*2))
+ else:
+ self.sizeentry.set_text(str(self.sticks[self.stickselected][1]))
+
+ self.angleentry.set_text(str(self.sticks[self.stickselected][0]))
+ else:
+ # its a part not a stick
+ self.angleentry.set_text('-')
+ self.sizeentry.set_text(str(self.parts[self.stickselected]))
+
+ def showlessonplans(self, widget, data=None):
+ pass
+
+ def loadfile(self, widget, data=None):
+ pass
+
+ def savefile(self, widget, data=None):
+ pass
+
+ def exportfile(self, widget, data=None):
+ pass
+
+ def playbackwards(self, widget, data=None):
+ if self.playing:
+ playimg = gtk.Image()
+ playimg.set_from_file(os.path.join(self.iconsdir,'big_left_arrow.png'))
+ playimg.show()
+ widget.set_image(playimg)
+ self.playing = False
+ # set the main window to the keyframe
+ if self.kfsticks[self.kfselected]:
+ self.sticks = self.kfsticks[self.kfselected].copy()
+ self.parts = self.kfparts[self.kfselected].copy()
+ self.middle = self.kfmiddles[self.kfselected]
+ self.setjoints()
+ self.drawmainframe()
+ self.updateentrybox()
+ else:
+ stopimg = gtk.Image()
+ stopimg.set_from_file(os.path.join(self.iconsdir,'big_pause.png'))
+ stopimg.show()
+ widget.set_image(stopimg)
+ self.makeframes()
+ fsecs = self.frames.keys()
+ fsecs.sort()
+ self.playframenum = fsecs[-1]
+ self.playingbackwards = True
+ self.playing = gobject.timeout_add(self.waittime, self.playframe)
+
+ def playforwards(self, widget, data=None):
+ if self.playing:
+ playimg = gtk.Image()
+ playimg.set_from_file(os.path.join(self.iconsdir,'big_right_arrow.png'))
+ playimg.show()
+ widget.set_image(playimg)
+ self.playing = False
+ # set the main window to the keyframe
+ if self.kfsticks[self.kfselected]:
+ self.sticks = self.kfsticks[self.kfselected].copy()
+ self.parts = self.kfparts[self.kfselected].copy()
+ self.middle = self.kfmiddles[self.kfselected]
+ self.setjoints()
+ self.drawmainframe()
+ self.updateentrybox()
+ else:
+ stopimg = gtk.Image()
+ stopimg.set_from_file(os.path.join(self.iconsdir,'big_pause.png'))
+ stopimg.show()
+ widget.set_image(stopimg)
+ self.makeframes()
+ #mkeys = self.fmiddles.keys()
+ #mkeys.sort()
+ #for mkey in mkeys:
+ # print '%s:(%s,%s)' % (mkey,self.fmiddles[mkey][0],self.fmiddles[mkey][1])
+ fsecs = self.frames.keys()
+ fsecs.sort()
+ self.playframenum = fsecs[0]
+ self.playingbackwards = False
+ self.playing = gobject.timeout_add(self.waittime, self.playframe)
+
+ def changed_cb(self, combobox):
+ model = combobox.get_model()
+ index = combobox.get_active()
+ if index:
+ lang = model[index][0]
+ if lang == 'Espa\xc3\xb1ol':
+ lang = SPANISH
+ if lang in LANG:
+ self.lessonplans.set_label(LANG[lang]['lessonplan'])
+ self.anglelabel.set_label(LANG[lang]['angle']+':')
+ self.sizelabel.set_label(LANG[lang]['size']+':')
+ for stickpartname in self.labellist:
+ label = self.sticklabels[stickpartname]
+ label.set_label(LANG[lang][stickpartname])
+ prepare_btn(self.lessonplans)
+ return
+
+ def setlastlanguage(self, widget, data=None):
+ li = LANGLIST.index(self.language)
+ if li == 0:
+ self.language = LANGLIST[len(LANGLIST)-1]
+ else:
+ self.language = LANGLIST[li-1]
+ self.changebuttonlang()
+
+ def setnextlanguage(self, widget, data=None):
+ li = LANGLIST.index(self.language)
+ if li == (len(LANGLIST)-1):
+ self.language = LANGLIST[0]
+ else:
+ self.language = LANGLIST[li+1]
+ self.changebuttonlang()
+
+ def getdefaultlang(self):
+ return 'English'
+
+ def getsdata(self):
+ self.makeframes()
+ sdd = {} # save data dictionary
+ sdd['kfmiddles'] = self.kfmiddles
+ sdd['kfparts'] = self.kfparts
+ sdd['kfsticks'] = self.kfsticks
+ sdd['kfssticks'] = self.kfssticks
+ sdd['kfjoints'] = self.kfjoints
+ sdd['kfsjoints'] = self.kfsjoints
+ sdd['keyframes'] = self.keyframes
+ sdd['kfselected'] = self.kfselected
+ return pickle.dumps(sdd)
+
+ def restore(self, sdata):
+ sdd = pickle.loads(sdata)
+ self.kfmiddles = sdd['kfmiddles']
+ self.kfparts = sdd['kfparts']
+ self.kfsticks = sdd['kfsticks']
+ self.kfssticks = sdd['kfssticks']
+ self.kfjoints = sdd['kfjoints']
+ self.kfsjoints = sdd['kfsjoints']
+ self.keyframes = sdd['keyframes']
+ self.kfselected = sdd['kfselected']
+ self.drawkeyframe()
+ self.syncmaintokf()
+ self.updateentrybox()
+
+ def __init__(self, toplevel_window, mdirpath):
+ self.playing = False
+ self.playingbackwards = False
+ self.waittime = 3*150
+ self.keyframe = 0
+ self.toplevel = toplevel_window
+ self.mdirpath = mdirpath
+ xmiddle = int(DRAWWIDTH/2.0)
+ ymiddle = int(DRAWHEIGHT/2.0)
+ self.middle = (xmiddle,ymiddle)
+ self.sticks = STICKS.copy()
+ self.parts = PARTS.copy()
+ self.sticklist = STICKLIST
+ self.labellist = LABELLIST
+ self.stickselected = 'RIGHT SHOULDER'
+ self.laststickselected = None
+ self.keyframes = KEYFRAMES
+ self.kfsticks = [None,None,None,None,None]
+ self.kfssticks = [None,None,None,None,None]
+ self.kfjoints = [None,None,None,None,None]
+ self.kfsjoints = [None,None,None,None,None]
+ self.kfmiddles = [None,None,None,None,None]
+ self.kfparts = [None,None,None,None,None]
+ self.kfselected = 0
+ self.joints = self.initjoints()
+ self.setjoints()
+ self.jointpressed = None
+ self.kfpressed = -1
+ self.middlepressed = False
+ self.rotatepressed = False
+ self.iconsdir = os.path.join(self.mdirpath,'icons')
+ self.language = self.getdefaultlang()
+
+ self.mpbox = gtk.VBox()
+ self.main = gtk.EventBox()
+ self.main.show()
+ self.main.modify_bg(gtk.STATE_NORMAL,gtk.gdk.color_parse(YELLOW))
+ self.mainbox = gtk.EventBox()
+ self.mainbox.modify_bg(gtk.STATE_NORMAL,gtk.gdk.color_parse(BACKGROUND))
+ self.mainbox.set_border_width(5)
+ self.mainbox.show()
+ self.main.add(self.mainbox)
+ self.mpbox.show()
+ self.hbox = gtk.HBox()
+ self.hbox.show()
+ self.vbox = gtk.VBox()
+ self.vbox.show()
+ self.hbox.pack_start(self.vbox,False,False,0)
+ self.mainbox.add(self.mpbox)
+ self.mpbox.pack_start(self.hbox,True,True,0)
+
+ self.logobox = gtk.HBox(False,0)
+ self.logobox.show()
+ self.logo = gtk.Image()
+ self.logo.show()
+ self.logo.set_from_file(os.path.join(self.iconsdir,'logo.png'))
+ self.logobox.pack_start(self.logo,False,False,0)
+ self.lessonplans = gtk.Button('Lesson Plans')
+ self.lessonplans.connect('clicked',self.showlessonplans, None)
+ prepare_btn(self.lessonplans)
+ self.lessonplans.show()
+ self.lpvbox = gtk.VBox()
+ self.lpvbox.show()
+ self.lpvbox.pack_start(self.lessonplans,True,False,0)
+ self.lpoframe = gtk.EventBox()
+ self.lpoframe.modify_bg(gtk.STATE_NORMAL,gtk.gdk.color_parse(YELLOW))
+ self.lpoframe.show()
+ self.lpframe = gtk.EventBox()
+ self.lpframe.modify_bg(gtk.STATE_NORMAL,gtk.gdk.color_parse(BACKGROUND))
+ self.lpframe.show()
+ self.lpalign = gtk.Alignment(1.0,1.0,1.0,1.0)
+ self.lpalign.add(self.lpframe)
+ self.lpalign.set_padding(0,5,5,0)
+ self.lpalign.show()
+ self.lpoframe.add(self.lpalign)
+ self.lphbox = gtk.HBox()
+ self.lphbox.show()
+ self.lphbox.pack_start(self.lpvbox,True,False,0)
+ self.lpframe.add(self.lphbox)
+ self.logobox.pack_start(self.lpoframe,True,True,0)
+ #vvvvv LANGUAGE BUTTONS vvvvv
+ #self.lastlang = gtk.Button()
+ #self.lastlang.connect('clicked', self.setlastlanguage, None)
+ #llla = gtk.Image()
+ #llla.set_from_file(os.path.join(self.iconsdir,'left_arrow.png'))
+ #llla.show()
+ #self.lastlang.add(llla)
+ #prepare_btn(self.lastlang)
+ #self.lastlang.show()
+ #self.llvbox = gtk.VBox()
+ #self.llvbox.show()
+ #self.llvbox.pack_start(self.lastlang,True,False,0)
+ #self.lang = gtk.Button(self.language)
+ #prepare_btn(self.lang)
+ #self.lang.show()
+ #self.nextlang = gtk.Button()
+ #self.nextlang.connect('clicked', self.setnextlanguage, None)
+ #nlra = gtk.Image()
+ #nlra.set_from_file(os.path.join(self.iconsdir,'right_arrow.png'))
+ #nlra.show()
+ #self.nextlang.add(nlra)
+ #prepare_btn(self.nextlang)
+ #self.nextlang.show()
+ #self.nlvbox = gtk.VBox()
+ #self.nlvbox.show()
+ #self.nlvbox.pack_start(self.nextlang,True,False,0)
+ #self.langvbox = gtk.VBox()
+ #self.langvbox.show()
+ #self.langvbox.pack_start(self.lang,True,False,0)
+ #^^^^^ LANGUAGE BUTTONS ^^^^^
+ #vvvvv LANGUAGE DROPDOWN vvvvv
+ self.langdd = gtk.combo_box_new_text()
+ self.langdd.append_text('Language')
+ self.langdd.append_text('English')
+ self.langdd.append_text(SPANISH)
+ self.langdd.connect('changed', self.changed_cb)
+ self.langdd.set_active(0)
+ self.langdd.show()
+ self.langddvbox = gtk.VBox()
+ self.langddvbox.show()
+ self.langddvbox.pack_start(self.langdd,True,False,0)
+ #^^^^^ LANGUAGE DROPDOWN ^^^^^
+ self.langoframe = gtk.EventBox()
+ self.langoframe.modify_bg(gtk.STATE_NORMAL,gtk.gdk.color_parse(YELLOW))
+ self.langoframe.show()
+ self.langframe = gtk.EventBox()
+ self.langframe.modify_bg(gtk.STATE_NORMAL,gtk.gdk.color_parse(BACKGROUND))
+ self.langframe.show()
+ self.langalign = gtk.Alignment(1.0,1.0,1.0,1.0)
+ self.langalign.add(self.langframe)
+ self.langalign.set_padding(0,5,5,5)
+ self.langalign.show()
+ self.langoframe.add(self.langalign)
+ self.langhbox = gtk.HBox()
+ self.langhbox.show()
+ #self.langhbox.pack_start(self.llvbox,True,False,0)
+ #self.langhbox.pack_start(self.langvbox,True,False,0)
+ #self.langhbox.pack_start(self.nlvbox,True,False,0)
+ self.langhbox.pack_start(self.langddvbox,True,False,0)
+ self.langframe.add(self.langhbox)
+ self.logobox.pack_start(self.langoframe,True,True,0)
+
+ self.vbox.pack_start(self.logobox,False,False,0)
+
+ #self.drawhbox = gtk.HBox()
+ #self.drawhbox.show()
+ self.mfdraw = gtk.DrawingArea()
+ self.mfdraw.set_size_request(DRAWWIDTH,DRAWHEIGHT)
+ self.mfdraw.show()
+ self.mfdraw.connect('expose_event', self.expose_event)
+ self.mfdraw.connect('configure_event', self.configure_event)
+ self.mfdraw.connect('motion_notify_event', self.motion_notify_event)
+ self.mfdraw.connect('button_press_event', self.button_press_event)
+ self.mfdraw.connect('button_release_event', self.button_release_event)
+ self.mfdraw.set_events(gtk.gdk.EXPOSURE_MASK
+ | gtk.gdk.LEAVE_NOTIFY_MASK
+ | gtk.gdk.BUTTON_PRESS_MASK
+ | gtk.gdk.BUTTON_RELEASE_MASK
+ | gtk.gdk.POINTER_MOTION_MASK
+ | gtk.gdk.POINTER_MOTION_HINT_MASK)
+ self.drawborder = gtk.EventBox()
+ self.drawborder.modify_bg(gtk.STATE_NORMAL,gtk.gdk.color_parse(PINK))
+ self.drawborder.set_border_width(10)
+ self.drawborder.show()
+ self.drawframe = gtk.EventBox()
+ self.drawframe.modify_bg(gtk.STATE_NORMAL,gtk.gdk.color_parse(BACKGROUND))
+ self.drawframe.set_border_width(5)
+ self.drawframe.show()
+ self.drawborder.add(self.drawframe)
+ self.drawframe.add(self.mfdraw)
+ #self.drawhbox.pack_start(self.drawborder, False, False, 10)
+
+ #self.vbox.pack_start(self.drawhbox,False,False,0)
+ self.vbox.pack_start(self.drawborder,False,False,0)
+
+ self.keyframehbox = gtk.HBox()
+ self.keyframehbox.show()
+
+ self.playback = gtk.Button()
+ self.playback.connect('clicked', self.playbackwards, None)
+ playbackla = gtk.Image()
+ playbackla.set_from_file(os.path.join(self.iconsdir,'big_left_arrow.png'))
+ playbackla.show()
+ self.playback.add(playbackla)
+ prepare_btn(self.playback)
+ self.playback.show()
+ self.playbackvbox = gtk.VBox()
+ self.playbackvbox.show()
+ self.playbackvbox.pack_start(self.playback,True,False,0)
+ self.keyframehbox.pack_start(self.playbackvbox,True,False,0)
+ # vvvvvvvvvvKEYFRAME DRAWING AREA HEREvvvvvvvvvvvv
+ self.kfdraw = gtk.DrawingArea()
+ self.kfdraw.set_size_request(KEYFRAMEWIDTH,KEYFRAMEHEIGHT)
+ self.kfdraw.show()
+ self.kfdraw.connect('expose_event', self.kf_expose_event)
+ self.kfdraw.connect('configure_event', self.kf_configure_event)
+ self.kfdraw.connect('motion_notify_event', self.kf_motion_notify_event)
+ self.kfdraw.connect('button_press_event', self.kf_button_press_event)
+ self.kfdraw.connect('button_release_event', self.kf_button_release_event)
+ self.kfdraw.set_events(gtk.gdk.EXPOSURE_MASK
+ | gtk.gdk.LEAVE_NOTIFY_MASK
+ | gtk.gdk.BUTTON_PRESS_MASK
+ | gtk.gdk.BUTTON_RELEASE_MASK
+ | gtk.gdk.POINTER_MOTION_MASK
+ | gtk.gdk.POINTER_MOTION_HINT_MASK)
+ #self.drawborder = gtk.EventBox()
+ #self.drawborder.modify_bg(gtk.STATE_NORMAL,gtk.gdk.color_parse(PINK))
+ #self.drawborder.show()
+ #self.drawframe = gtk.EventBox()
+ #self.drawframe.modify_bg(gtk.STATE_NORMAL,gtk.gdk.color_parse(BACKGROUND))
+ #self.drawframe.set_border_width(5)
+ #self.drawframe.show()
+ #self.drawborder.add(self.drawframe)
+ #self.drawframe.add(self.mfdraw)
+ self.keyframehbox.pack_start(self.kfdraw,False,False,0)
+
+ # ^^^^^^^^^^KEYFRAME DRAWING AREA HERE^^^^^^^^^^^^
+ self.playforward = gtk.Button()
+ self.playforward.connect('clicked', self.playforwards, None)
+ playforwardla = gtk.Image()
+ playforwardla.set_from_file(os.path.join(self.iconsdir,'big_right_arrow.png'))
+ playforwardla.show()
+ self.playforward.add(playforwardla)
+ prepare_btn(self.playforward)
+ self.playforward.show()
+ self.playforwardvbox = gtk.VBox()
+ self.playforwardvbox.show()
+ self.playforwardvbox.pack_start(self.playforward,True,False,0)
+ self.keyframehbox.pack_start(self.playforwardvbox,True,False,0)
+
+ self.vbox.pack_start(self.keyframehbox,False,False,10)
+
+ self.bottomcontrolshbox = gtk.HBox()
+ self.bottomcontrolshbox.show()
+ self.resetbutton = gtk.Button()
+ resetimg = gtk.Image()
+ resetimg.set_from_file(os.path.join(self.iconsdir,'reset.png'))
+ resetimg.show()
+ self.resetbutton.add(resetimg)
+ self.resetbutton.connect('clicked', self.reset, None)
+ prepare_btn(self.resetbutton)
+ self.resetbutton.show()
+ self.bottomcontrolshbox.pack_start(self.resetbutton, True, False, 0)
+
+ self.setframebutton = gtk.Button()
+ cameraimg = gtk.Image()
+ cameraimg.set_from_file(os.path.join(self.iconsdir,'camera.png'))
+ cameraimg.show()
+ self.setframebutton.add(cameraimg)
+ self.setframebutton.connect('clicked', self.setframe, None)
+ prepare_btn(self.setframebutton)
+ self.setframebutton.show()
+ self.bottomcontrolshbox.pack_start(self.setframebutton, True, False, 0)
+
+ self.clearframebutton = gtk.Button()
+ clearimg = gtk.Image()
+ clearimg.set_from_file(os.path.join(self.iconsdir,'clear.png'))
+ clearimg.show()
+ self.clearframebutton.add(clearimg)
+ self.clearframebutton.connect('clicked', self.clearframe, None)
+ prepare_btn(self.clearframebutton)
+ self.clearframebutton.show()
+ self.bottomcontrolshbox.pack_start(self.clearframebutton, True, False, 0)
+
+ adj = gtk.Adjustment(2.5,1,5,.5,1)
+ adj.connect('value_changed',self.setplayspeed)
+ self.playspeed = gtk.HScale(adj)
+ self.playspeed.set_draw_value(False)
+ for state, color in COLOR_BG_BUTTONS:
+ self.playspeed.modify_bg(state, gtk.gdk.color_parse(color))
+ self.playspeed.show()
+ self.bottomcontrolshbox.pack_start(self.playspeed, True, True, 5)
+ self.vbox.pack_start(self.bottomcontrolshbox,False,False,10)
+
+ # NOW THE RIGHT SIDE
+ self.rightvbox = gtk.VBox()
+ self.rightvbox.show()
+ # vvvvv FILE PICKER THING vvvvv
+ #self.filechooserhbox = gtk.HBox()
+ #self.filechooserhbox.show()
+ #self.lastfile = gtk.Button()
+ #lfla = gtk.Image()
+ #lfla.set_from_file(os.path.join(self.iconsdir,'left_arrow.png'))
+ #lfla.show()
+ #self.lastfile.add(lfla)
+ #prepare_btn(self.lastfile)
+ #self.lastfile.show()
+ #self.lfvbox = gtk.VBox()
+ #self.lfvbox.show()
+ #self.lfvbox.pack_start(self.lastfile,True,False,0)
+ #self.filechooserhbox.pack_start(self.lfvbox,True,False,5)
+ ## vvvvv FILE PICKER DRAWING AREA vvvvv
+ #self.fpdraw = gtk.DrawingArea()
+ #self.fpdraw.set_size_request(FPWIDTH,FPHEIGHT)
+ #self.fpdraw.show()
+ #self.fpdraw.connect('expose_event', self.fp_expose_event)
+ #self.fpdraw.connect('configure_event', self.fp_configure_event)
+ #self.fpdrawborder = gtk.EventBox()
+ #self.fpdrawborder.modify_bg(gtk.STATE_NORMAL,gtk.gdk.color_parse(PINK))
+ #self.fpdrawborder.show()
+ #self.fpdrawframe = gtk.EventBox()
+ #self.fpdrawframe.modify_bg(gtk.STATE_NORMAL,gtk.gdk.color_parse(BACKGROUND))
+ #self.fpdrawframe.set_border_width(5)
+ #self.fpdrawframe.show()
+ #self.fpdrawborder.add(self.fpdrawframe)
+ #self.fpdrawframe.add(self.fpdraw)
+ #self.filechooserhbox.pack_start(self.fpdrawborder,False,False,0)
+ ## ^^^^^ FILE PICKER DRAWING AREA ^^^^^
+ #self.nextfile = gtk.Button()
+ #nfla = gtk.Image()
+ #nfla.set_from_file(os.path.join(self.iconsdir,'right_arrow.png'))
+ #nfla.show()
+ #self.nextfile.add(nfla)
+ #prepare_btn(self.nextfile)
+ #self.nextfile.show()
+ #self.nfvbox = gtk.VBox()
+ #self.nfvbox.show()
+ #self.nfvbox.pack_start(self.nextfile,True,False,0)
+ #self.filechooserhbox.pack_start(self.nfvbox,True,False,5)
+ #self.rightvbox.pack_start(self.filechooserhbox,False,False,5)
+ # ADD FILENAME LABEL HERE
+ # ^^^^^ FILE PICKER THING ^^^^^
+ # START OF STICK CONTROLS
+ self.stickcontrols = gtk.VBox()
+ self.stickcontrols.show()
+ self.stickcontrolsborder = gtk.EventBox()
+ self.stickcontrolsborder.modify_bg(gtk.STATE_NORMAL,gtk.gdk.color_parse(PINK))
+ self.stickcontrolsborder.set_border_width(5)
+ self.stickcontrolsborder.show()
+ self.stickcontrolsframe = gtk.EventBox()
+ self.stickcontrolsframe.modify_bg(gtk.STATE_NORMAL,gtk.gdk.color_parse(BUTTON_BACKGROUND))
+ self.stickcontrolsframe.set_border_width(5)
+ self.stickcontrolsframe.show()
+ self.stickcontrolsborder.add(self.stickcontrolsframe)
+ self.stickcontrolsframe.add(self.stickcontrols)
+ self.anglesizehbox = gtk.HBox()
+ self.anglesizehbox.show()
+ #label = gtk.Label('Angle:')
+ self.anglelabel = gtk.Label(LANG[self.language]['angle']+':')
+ self.anglelabel.modify_fg(gtk.STATE_NORMAL, gtk.gdk.color_parse(BUTTON_BACKGROUND))
+ self.anglelabel.show()
+ self.anglesizehbox.pack_start(self.anglelabel,False,False,5)
+ self.angleentry = gtk.Entry()
+ self.angleentry.set_max_length(3)
+ self.angleentry.set_width_chars(3)
+ self.angleentry.connect('activate', self.enterangle_callback, self.angleentry)
+ self.angleentry.show()
+ self.anglesizehbox.pack_start(self.angleentry,False,False,0)
+ #label = gtk.Label('Size:')
+ self.sizelabel = gtk.Label(LANG[self.language]['size']+':')
+ self.sizelabel.modify_fg(gtk.STATE_NORMAL, gtk.gdk.color_parse(BUTTON_BACKGROUND))
+ self.sizelabel.show()
+ self.anglesizehbox.pack_start(self.sizelabel,False,False,5)
+ self.sizeentry = gtk.Entry()
+ self.sizeentry.set_max_length(3)
+ self.sizeentry.set_width_chars(3)
+ self.sizeentry.connect('activate', self.enterlen_callback, self.sizeentry)
+ self.sizeentry.show()
+ self.anglesizehbox.pack_start(self.sizeentry,False,False,0)
+ self.asbox = gtk.EventBox()
+ self.asbox.modify_bg(gtk.STATE_NORMAL,gtk.gdk.color_parse(BUTTON_FOREGROUND))
+ self.asbox.show()
+ self.asbox.add(self.anglesizehbox)
+ self.stickcontrols.pack_start(self.asbox,False,False,0)
+ self.stickbuttons = {}
+ self.sticklabels = {}
+ for stickpartname in self.labellist:
+ #label = gtk.Label(capwords(stickpartname))
+ label = gtk.Label(LANG[self.language][stickpartname])
+ label.modify_fg(gtk.STATE_NORMAL, gtk.gdk.color_parse(BUTTON_FOREGROUND))
+ label.show()
+ self.sticklabels[stickpartname] = label
+ ebox = gtk.EventBox()
+ ebox.modify_bg(gtk.STATE_NORMAL,gtk.gdk.color_parse(BUTTON_BACKGROUND))
+ ebox.show()
+ ebox.set_events(gtk.gdk.BUTTON_PRESS_MASK)
+ ebox.connect('button_press_event',self.selectstick,stickpartname)
+ ebox.add(label)
+ self.stickbuttons[stickpartname] = ebox
+ self.stickcontrols.pack_start(ebox,False,False,0)
+ # highlight the currently selected stick and update the entry boxes
+ self.selectstickebox()
+ # END OF STICK CONTROLS
+ stickalign = gtk.Alignment(1.0,1.0,1.0,1.0)
+ stickalign.add(self.stickcontrolsborder)
+ stickalign.set_padding(80,5,5,5) # top,bottom,left,right
+ stickalign.show()
+ self.rightvbox.pack_start(stickalign,False,False, 0)
+ #self.rightvbox.pack_start(self.stickcontrolsborder,False,False, 0)
+ #self.filesave = gtk.Button()
+ #self.filesave.set_label('SAVE')
+ #prepare_btn(self.filesave)
+ #self.filesave.connect('clicked',self.savefile,None)
+ #self.filesave.show()
+ #self.fshbox = gtk.HBox()
+ #self.fshbox.show()
+ #self.fshbox.pack_start(self.filesave,True,False,0)
+ #self.rightvbox.pack_start(self.fshbox,True,False,0)
+ self.export = gtk.Button()
+ self.export.set_label('EXPORT')
+ prepare_btn(self.export)
+ self.export.connect('clicked',self.exportfile,None)
+ self.export.show()
+ self.exporthbox = gtk.HBox()
+ self.exporthbox.show()
+ self.exporthbox.pack_start(self.export,True,False,0)
+ self.rightvbox.pack_start(self.exporthbox,True,False,0)
+
+ self.hbox.pack_start(self.rightvbox,False,False,0)
+
+try:
+ from sugar.activity import activity
+ class flipsticksActivity(activity.Activity):
+ def __init__(self, handle):
+ activity.Activity.__init__(self,handle)
+ self.connect("destroy",self.destroy_cb)
+ bundle_path = activity.get_bundle_path()
+ os.chdir(bundle_path)
+ self.set_title('FlipSticks')
+ toolbox = activity.ActivityToolbox(self)
+ self.set_toolbox(toolbox)
+ toolbox.show()
+ if hasattr(self, '_jobject'):
+ self._jobject.metadata['title'] = 'FlipSticks'
+ title_widget = toolbox._activity_toolbar.title
+ title_widget.set_size_request(title_widget.get_layout().get_pixel_size()[0] + 20, -1)
+ self.app = flipsticks(self, bundle_path)
+ self.app.insugar = True
+ outerframe = gtk.EventBox()
+ outerframe.show()
+ innerframe = gtk.EventBox()
+ innerframe.show()
+ ifalign = gtk.Alignment(1.0,1.0,1.0,1.0)
+ ifalign.add(innerframe)
+ ifalign.set_padding(20,20,50,50) # top,bottom,left,right
+ ifalign.show()
+ #innerframe.set_border_width(150)
+ outerframe.add(ifalign)
+ innerframe.add(self.app.main)
+ self.set_canvas(outerframe)
+
+ def destroy_cb(self, data=None):
+ return True
+
+ def read_file(self, filepath):
+ f = file(filepath)
+ sdata = f.read()
+ f.close()
+ self.app.restore(sdata)
+
+ def write_file(self, filepath):
+ sdata = self.app.getsdata()
+ f = open(filepath,'w')
+ f.write(sdata)
+ f.close()
+
+except ImportError:
+ pass
+
+if __name__ == '__main__':
+ toplevel_window = gtk.Window(gtk.WINDOW_TOPLEVEL)
+ mdirpath = os.path.abspath(os.curdir)
+ app = flipsticks(toplevel_window,mdirpath)
+ toplevel_window.add(app.main)
+ toplevel_window.set_title('FlipSticks')
+ toplevel_window.connect('delete_event', app.delete_event)
+ toplevel_window.connect('destroy', app.destroy)
+ toplevel_window.show()
+ gtk.main()
diff --git a/png2theora b/png2theora
new file mode 100755
index 0000000..60efde1
--- /dev/null
+++ b/png2theora
@@ -0,0 +1,117 @@
+#! /bin/sh
+
+# png2theora - temporary wrapper script for .libs/png2theora
+# Generated by ltmain.sh - GNU libtool 1.5.22 Debian 1.5.22-4 (1.1220.2.365 2005/12/18 22:14:06)
+#
+# The png2theora program cannot be directly executed until all the libtool
+# libraries that it depends on are installed.
+#
+# This wrapper script should never be moved out of the build directory.
+# If it is, it will not operate correctly.
+
+# Sed substitution that helps us do robust quoting. It backslashifies
+# metacharacters that are still active within double-quoted strings.
+Xsed='/usr/bin/sed -e 1s/^X//'
+sed_quote_subst='s/\([\\`\\"$\\\\]\)/\\\1/g'
+
+# The HP-UX ksh and POSIX shell print the target directory to stdout
+# if CDPATH is set.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+relink_command="(cd /tmp/libtheora-1.0beta2/examples; { test -z \"\${LIBRARY_PATH+set}\" || unset LIBRARY_PATH || { LIBRARY_PATH=; export LIBRARY_PATH; }; }; { test -z \"\${COMPILER_PATH+set}\" || unset COMPILER_PATH || { COMPILER_PATH=; export COMPILER_PATH; }; }; { test -z \"\${GCC_EXEC_PREFIX+set}\" || unset GCC_EXEC_PREFIX || { GCC_EXEC_PREFIX=; export GCC_EXEC_PREFIX; }; }; { test -z \"\${LD_RUN_PATH+set}\" || unset LD_RUN_PATH || { LD_RUN_PATH=; export LD_RUN_PATH; }; }; { test -z \"\${LD_LIBRARY_PATH+set}\" || unset LD_LIBRARY_PATH || { LD_LIBRARY_PATH=; export LD_LIBRARY_PATH; }; }; PATH=\"/usr/local/bin:/usr/bin:/bin:/opt/bin:/usr/i686-pc-linux-gnu/gcc-bin/3.4.4:/opt/blackdown-jre-1.4.2.03/bin:/usr/qt/3/bin:/opt/panda3d/bin\"; export PATH; gcc -I/usr/include/libpng12 -Wall -Wno-parentheses -O3 -fforce-addr -fomit-frame-pointer -finline-functions -funroll-loops -o \$progdir/\$file png2theora-png2theora.o ../lib/.libs/libtheora.so /usr/lib/libogg.so /usr/lib/libpng12.so -Wl,--rpath -Wl,/tmp/libtheora-1.0beta2/lib/.libs)"
+
+# This environment variable determines our operation mode.
+if test "$libtool_install_magic" = "%%%MAGIC variable%%%"; then
+ # install mode needs the following variable:
+ notinst_deplibs=' ../lib/libtheora.la'
+else
+ # When we are sourced in execute mode, $file and $echo are already set.
+ if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then
+ echo="echo"
+ file="$0"
+ # Make sure echo works.
+ if test "X$1" = X--no-reexec; then
+ # Discard the --no-reexec flag, and continue.
+ shift
+ elif test "X`($echo '\t') 2>/dev/null`" = 'X\t'; then
+ # Yippee, $echo works!
+ :
+ else
+ # Restart under the correct shell, and then maybe $echo will work.
+ exec /bin/sh "$0" --no-reexec ${1+"$@"}
+ fi
+ fi
+
+ # Find the directory that this script lives in.
+ thisdir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`
+ test "x$thisdir" = "x$file" && thisdir=.
+
+ # Follow symbolic links until we get to the real thisdir.
+ file=`ls -ld "$file" | /usr/bin/sed -n 's/.*-> //p'`
+ while test -n "$file"; do
+ destdir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`
+
+ # If there was a directory component, then change thisdir.
+ if test "x$destdir" != "x$file"; then
+ case "$destdir" in
+ [\\/]* | [A-Za-z]:[\\/]*) thisdir="$destdir" ;;
+ *) thisdir="$thisdir/$destdir" ;;
+ esac
+ fi
+
+ file=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
+ file=`ls -ld "$thisdir/$file" | /usr/bin/sed -n 's/.*-> //p'`
+ done
+
+ # Try to get the absolute directory name.
+ absdir=`cd "$thisdir" && pwd`
+ test -n "$absdir" && thisdir="$absdir"
+
+ program=lt-'png2theora'
+ progdir="$thisdir/.libs"
+
+ if test ! -f "$progdir/$program" || \
+ { file=`ls -1dt "$progdir/$program" "$progdir/../$program" 2>/dev/null | /usr/bin/sed 1q`; \
+ test "X$file" != "X$progdir/$program"; }; then
+
+ file="$$-$program"
+
+ if test ! -d "$progdir"; then
+ mkdir "$progdir"
+ else
+ rm -f "$progdir/$file"
+ fi
+
+ # relink executable if necessary
+ if test -n "$relink_command"; then
+ if relink_command_output=`eval $relink_command 2>&1`; then :
+ else
+ echo "$relink_command_output" >&2
+ rm -f "$progdir/$file"
+ exit 1
+ fi
+ fi
+
+ mv -f "$progdir/$file" "$progdir/$program" 2>/dev/null ||
+ { rm -f "$progdir/$program";
+ mv -f "$progdir/$file" "$progdir/$program"; }
+ rm -f "$progdir/$file"
+ fi
+
+ if test -f "$progdir/$program"; then
+ if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then
+ # Run the actual program with our arguments.
+
+ exec "$progdir/$program" ${1+"$@"}
+
+ $echo "$0: cannot exec $program ${1+"$@"}"
+ exit 1
+ fi
+ else
+ # The program doesn't exist.
+ $echo "$0: error: \`$progdir/$program' does not exist" 1>&2
+ $echo "This script is just a wrapper for $program." 1>&2
+ echo "See the libtool documentation for more information." 1>&2
+ exit 1
+ fi
+fi
diff --git a/todo.txt b/todo.txt
new file mode 100644
index 0000000..ea999b1
--- /dev/null
+++ b/todo.txt
@@ -0,0 +1,4 @@
+mesh working
+ - share with neighboorhood should make animation available on mesh
+ - other users should be able to join
+lesson plans