[Ovirt-devel] [PATCH] incorporated tallen's notification UI enhancements.

Scott Seago sseago at redhat.com
Tue Jul 15 20:12:28 UTC 2008


I've replaced all instances of "alert($foo)" with the jgrowl implementation, and I've increased the default visibility duration to 10 seconds. This can still be customized on a per-message basis if we eventually want to change the behavior based on the context of the message.

Signed-off-by: Scott Seago <sseago at redhat.com>
---
 wui/src/app/views/hardware/move.rhtml           |    2 +-
 wui/src/app/views/hardware/quick_summary.rhtml  |    2 +-
 wui/src/app/views/hardware/show_hosts.rhtml     |    2 +-
 wui/src/app/views/hardware/show_storage.rhtml   |    4 +-
 wui/src/app/views/hardware/show_vms.rhtml       |    2 +-
 wui/src/app/views/host/show.rhtml               |    2 +-
 wui/src/app/views/layouts/redux.rhtml           |   12 +-
 wui/src/app/views/resources/quick_summary.rhtml |    2 +-
 wui/src/app/views/resources/show_vms.rhtml      |    2 +-
 wui/src/app/views/storage/show.rhtml            |    4 +-
 wui/src/app/views/user/_show.rhtml              |    4 +-
 wui/src/app/views/vm/show.rhtml                 |    6 +-
 wui/src/public/images/icon_conf_message.png     |  Bin 0 -> 49126 bytes
 wui/src/public/javascripts/jquery.jgrowl.js     |  204 +++++++++++++++++++++++
 wui/src/public/javascripts/ovirt.js             |    8 +-
 wui/src/public/stylesheets/jquery.jgrowl.css    |  125 ++++++++++++++
 16 files changed, 356 insertions(+), 25 deletions(-)
 create mode 100644 wui/src/public/images/icon_conf_message.png
 create mode 100644 wui/src/public/javascripts/jquery.jgrowl.js
 create mode 100644 wui/src/public/stylesheets/jquery.jgrowl.css

diff --git a/wui/src/app/views/hardware/move.rhtml b/wui/src/app/views/hardware/move.rhtml
index 4126e3b..968e2ca 100644
--- a/wui/src/app/views/hardware/move.rhtml
+++ b/wui/src/app/views/hardware/move.rhtml
@@ -27,7 +27,7 @@
               $("#<%= @resource_type %>_grid").flexReload()
 	      jQuery(document).trigger('close.facebox');
 	      if (data.alert) {
-	        alert(data.alert);
+	        $.jGrowl(data.alert);
               }
  	      if (get_selected_<%= @resource_type %>().indexOf($('#<%= @resource_type %>_selection_id').html()) != -1){
 	        empty_summary('<%= @resource_type %>_selection', '<%= @resource_type == 'hosts' ? 'Host' : 'Storage Pool' %>')
diff --git a/wui/src/app/views/hardware/quick_summary.rhtml b/wui/src/app/views/hardware/quick_summary.rhtml
index 85524f4..897cecb 100644
--- a/wui/src/app/views/hardware/quick_summary.rhtml
+++ b/wui/src/app/views/hardware/quick_summary.rhtml
@@ -31,7 +31,7 @@
                                          :action => "quick_summary" %>',
                             <%= @pool.id %>)
 		if (data.alert) {
-		  alert(data.alert);
+		  $.jGrowl(data.alert);
                 }
                }, 'json');
     }
diff --git a/wui/src/app/views/hardware/show_hosts.rhtml b/wui/src/app/views/hardware/show_hosts.rhtml
index 167c601..f2962cb 100644
--- a/wui/src/app/views/hardware/show_hosts.rhtml
+++ b/wui/src/app/views/hardware/show_hosts.rhtml
@@ -31,7 +31,7 @@
               function(data,status){
                 $("#hosts_grid").flexReload()
 		if (data.alert) {
-		  alert(data.alert);
+		  $.jGrowl(data.alert);
                 }
 		if (hosts.indexOf($('#hosts_selection_id').html()) != -1){
 		  empty_summary('hosts_selection', 'Host')
diff --git a/wui/src/app/views/hardware/show_storage.rhtml b/wui/src/app/views/hardware/show_storage.rhtml
index dc1460a..3446280 100644
--- a/wui/src/app/views/hardware/show_storage.rhtml
+++ b/wui/src/app/views/hardware/show_storage.rhtml
@@ -22,7 +22,7 @@
               function(data,status){
                 $("#storage_grid").flexReload()
 		if (data.alert) {
-		  alert(data.alert);
+		  $.jGrowl(data.alert);
                 }
 		if (storage.indexOf($('#storage_selection_id').html()) != -1){
 		  empty_summary('storage_selection', 'Storage Pool')
@@ -39,7 +39,7 @@
               function(data,status){
                 $("#storage_grid").flexReload()
 		if (data.alert) {
-		  alert(data.alert);
+		  $.jGrowl(data.alert);
                 }
 		if (storage.indexOf($('#storage_selection_id').html()) != -1){
 		  empty_summary('storage_selection', 'Storage Pool')
diff --git a/wui/src/app/views/hardware/show_vms.rhtml b/wui/src/app/views/hardware/show_vms.rhtml
index 26e2488..4555718 100644
--- a/wui/src/app/views/hardware/show_vms.rhtml
+++ b/wui/src/app/views/hardware/show_vms.rhtml
@@ -18,7 +18,7 @@
               function(data,status){
                 $("#vmpools_grid").flexReload()
 		if (data.alert) {
-		  alert(data.alert);
+		  $.jGrowl(data.alert);
                 }
 		if (vm_pools.indexOf($('#vmpool_selection_id').html()) != -1){
 		  empty_summary('vmpool_selection', 'Virtual Machine Pool')
diff --git a/wui/src/app/views/host/show.rhtml b/wui/src/app/views/host/show.rhtml
index e1bafac..b5582f6 100644
--- a/wui/src/app/views/host/show.rhtml
+++ b/wui/src/app/views/host/show.rhtml
@@ -31,7 +31,7 @@
                             <%= @host.id %>)
                 $("#hosts_grid").flexReload()
 		if (data.alert) {
-		  alert(data.alert);
+		  $.jGrowl(data.alert);
                 }
                }, 'json');
   }
diff --git a/wui/src/app/views/layouts/redux.rhtml b/wui/src/app/views/layouts/redux.rhtml
index f0bc049..46ff9da 100644
--- a/wui/src/app/views/layouts/redux.rhtml
+++ b/wui/src/app/views/layouts/redux.rhtml
@@ -15,6 +15,7 @@
   <%= stylesheet_link_tag '/javascripts/jquery-treeview/ovirt.treeview.css' %>
   <%= stylesheet_link_tag 'flexigrid/flexigrid.css' %>
   <%= stylesheet_link_tag 'facebox' %>
+  <%= stylesheet_link_tag 'jquery.jgrowl.css' %>
   <!--%= stylesheet_link_tag 'jquery.ui-1.5b4/themes/flora/flora.tabs.css' %-->
   <%= javascript_include_tag "jquery-1.2.6.min.js" -%>
   <%= javascript_include_tag "jquery-treeview/jquery.treeview.js" -%>
@@ -30,6 +31,7 @@
   <%= javascript_include_tag "jquery.cookie.js" -%>
   <%= javascript_include_tag "jquery.livequery.pack.js" -%>
   <%= javascript_include_tag "jquery.form.js" -%>
+  <%= javascript_include_tag "jquery.jgrowl.js" -%>
 
   <!-- ovirt-specific functions defined here -->
   <%= javascript_include_tag "ovirt.js" -%>
@@ -66,7 +68,7 @@
                           $('#side-toolbar').html($(data).find('div.toolbar'));
                           $('#tabs-and-content-container').html($(data).not('div#side-toolbar'));
                         },
-                        error: function(xhr) {alert(xhr.status + ' ' + xhr.statusText);}
+                        error: function(xhr) {$.jGrowl(xhr.status + ' ' + xhr.statusText);}
                     });
                     return false;})},function(){});
             $('.tab_nav a').livequery(function(){
@@ -83,7 +85,7 @@
                           var my_parent = $(this).parent();
                           $('#content-area').html($(data).find('div').filter('[id=content-area]'));
                         },
-                        error: function(xhr) {alert(xhr.status + ' ' + xhr.statusText);}
+                        error: function(xhr) {$.jGrowl(xhr.status + ' ' + xhr.statusText);}
                     });
                     return false;})},function(){});
             $('.dialog_tab_nav a').livequery(function(){
@@ -100,7 +102,7 @@
                           var my_parent = $(this).parent();
                           $('#dialog-content-area').html($(data));
                         },
-                        error: function(xhr) {alert(xhr.status + ' ' + xhr.statusText);}
+                        error: function(xhr) {$.jGrowl(xhr.status + ' ' + xhr.statusText);}
                     });
                     return false;})},function(){});
 	});
@@ -114,7 +116,7 @@
                 // need to redirect to the parent using the new ajax reload stuff
                 $("#vmpools_grid").flexReload()
 		if (data.alert) {
-		  alert(data.alert);
+		  $.jGrowl(data.alert);
                 }
                }, 'json');
     }
@@ -127,7 +129,7 @@
               function(data,status){
                 // need to redirect to the parent using the new ajax reload stuff
 		if (data.alert) {
-		  alert(data.alert);
+		  $.jGrowl(data.alert);
                 }
                }, 'json');
     }
diff --git a/wui/src/app/views/resources/quick_summary.rhtml b/wui/src/app/views/resources/quick_summary.rhtml
index 972c439..77b1708 100644
--- a/wui/src/app/views/resources/quick_summary.rhtml
+++ b/wui/src/app/views/resources/quick_summary.rhtml
@@ -32,7 +32,7 @@
                                          :action => "quick_summary" %>',
                             <%= @vm_resource_pool.id %>)
 		if (data.alert) {
-		  alert(data.alert);
+		  $.jGrowl(data.alert);
                 }
                }, 'json');
     }
diff --git a/wui/src/app/views/resources/show_vms.rhtml b/wui/src/app/views/resources/show_vms.rhtml
index b1accd3..359bd8f 100644
--- a/wui/src/app/views/resources/show_vms.rhtml
+++ b/wui/src/app/views/resources/show_vms.rhtml
@@ -33,7 +33,7 @@
               function(data,status){
                 $("#vms_grid").flexReload()
 		if (data.alert) {
-		  alert(data.alert);
+		  $.jGrowl(data.alert);
                 }
 		if (vms.indexOf($('#vms_selection_id').html()) != -1){
 		  empty_summary('vms_selection', 'Virtual Machine')
diff --git a/wui/src/app/views/storage/show.rhtml b/wui/src/app/views/storage/show.rhtml
index 8da0f8c..6263021 100644
--- a/wui/src/app/views/storage/show.rhtml
+++ b/wui/src/app/views/storage/show.rhtml
@@ -84,7 +84,7 @@
                             <%= @storage_pool.id %>)
                 $("#storage_grid").flexReload()
 		if (data.alert) {
-		  alert(data.alert);
+		  $.jGrowl(data.alert);
                 }
                }, 'json');
   }
@@ -95,7 +95,7 @@
               function(data,status){
                 $("#storage_grid").flexReload()
 		if (data.alert) {
-		  alert(data.alert);
+		  $.jGrowl(data.alert);
                 }
 	        empty_summary('storage_selection', 'Storage Pool')
                }, 'json');
diff --git a/wui/src/app/views/user/_show.rhtml b/wui/src/app/views/user/_show.rhtml
index dd391dd..351d0c7 100644
--- a/wui/src/app/views/user/_show.rhtml
+++ b/wui/src/app/views/user/_show.rhtml
@@ -19,7 +19,7 @@
             function(data,status){
               $("#users_grid").flexReload()
 		if (data.alert) {
-		  alert(data.alert);
+		  $.jGrowl(data.alert);
                 }
              }, 'json');
     }
@@ -33,7 +33,7 @@
               function(data,status){
                 $("#users_grid").flexReload()
 		if (data.alert) {
-		  alert(data.alert);
+		  $.jGrowl(data.alert);
                 }
                }, 'json');
     }
diff --git a/wui/src/app/views/vm/show.rhtml b/wui/src/app/views/vm/show.rhtml
index fe671ef..293b632 100644
--- a/wui/src/app/views/vm/show.rhtml
+++ b/wui/src/app/views/vm/show.rhtml
@@ -49,7 +49,7 @@
                             <%= @vm.id %>)
                 $("#vms_grid").flexReload()
 		if (data.alert) {
-		  alert(data.alert);
+		  $.jGrowl(data.alert);
                 }
                }, 'json');
     }
@@ -62,7 +62,7 @@
               function(data,status){
                 $("#vms_grid").flexReload()
 		if (data.alert) {
-		  alert(data.alert);
+		  $.jGrowl(data.alert);
                 }
 	        empty_summary('vms_selection', 'Virtual Machine')
                }, 'json');
@@ -79,7 +79,7 @@
                             <%= @vm.id %>)
                 $("#vms_grid").flexReload()
 		if (data.alert) {
-		  alert(data.alert);
+		  $.jGrowl(data.alert);
                 }
                }, 'json');
   }
diff --git a/wui/src/public/images/icon_conf_message.png b/wui/src/public/images/icon_conf_message.png
new file mode 100644
index 0000000000000000000000000000000000000000..1153a76fedee496949647a72b4fc345231dd884e
GIT binary patch
literal 49126
zcmdSA1#DbD+vc4#ZNtpmG~6&VGcz+YGbar*Gc^r2%*;#^W at er+!)*G0cK2D3UhVhl
zlU8fZvF~%n<GE~)t<m|ND_mYy3?2pt1`G at gUP4@0 at uMX8dq92t$hqh%e}5F8odhM6
zp+1r~lyTU{IkdgFh7%YVEXv;ld}iJE_2VL*vxvI0lAWoun}MSVn1HdJp~*K<3r7<-
zJ4Y+0Z$e5;X$ztdU|`^;_KvD*?pfyxJqrEwa9`v at tI2RBs?{Axk4Fw|h9=~}c6E>Z
zzj5^iQ!%ZK`K2#UoDU`79p1d`Qmys99j$mY<kwd=s-Dy=63?lYtv7Wv%Ae|5QHW7g
zBsHdDNUlr4e`xu4y3}(jps~ZPm=)SF@{|$2?LBt!;pa9nG~MqP4u9QE3?`TOaW8cC
z2Ij!EEAm1(fTpus98Kd{t}8;5Ih$zaE4|>+=6Pj;U|_QOX==6PwZt!0?LOPzcwg=n
z*H2+=ll!L5gbz})U}!Rv=PUW->qLYdeDTH$y{5o2)8;7Mg;JU)w+XV2_oAH7BcKVG
zVb_S- at Am$i^pEbDEkI4HBg*wLUBj03XWqr<WRc*+3nKF`M~L=$@w8I+KA;%r>Kdiw
zvg>(Su*1jB2WoZE^ZB>O)88%|WL3Ek8v}gH513{zuVFVrJK+EB@<+54OK3E~z4rro
zTkPXZ+{Q{!^m$|S{UiSTKh^tBoKO}p<$-~*LD*O+D}BtO&$`=cV=bMW+w5HU%{*}a
z#$LC5fyZsV*!4zAFE+(w+16Mqd9VLi3PU73S`MFl)phOO{n)RI3Bv!gK-_l=A9nb%
z!8j<C&%R8L6Z&9rp>(TkO;um}>Q)!d=C>}-7BXBQxfB^6_m9pRZCSM23>r*}JF>SH
zvN{Y#P6K7_Pt)q&0+9;?*A47ftIYzpN3e~X9)1P+zh~Zgb!4u(626~V$5z@#!y8#Y
z4r=AwNk_vzx|(K9BE%pN9U|{(^T(LHLbaF;=GqTFSx<2g7{#xODPOZHFQv1ZoddvC
zYki<t5WfZVZItt at 6()x0jN$^7W`NT at _fnFsG49}PI?p^<(-P~fZzl*89EOmgKK#YJ
zR<Y^_VadEWwV8Oe*XoYd(GA?an(1|b8W-2qp#DKa&LIR+9d>ge!@B++;}qC*&>WGG
zHTJ6gEsie;Y7;<o7ezIkUXH?a8k43m)_cY<WIfsZS(_K<;@ibanyKL~qjeGXQktf<
zH(y9}dO-B1 at e;eMfirb#&n|;I_gA^Zo>}8dX0yKcD*MzcYxX at 05SDzIhrPew2;>$l
z!dA=`c+x3EH`JdmlH|FRfzV%2GhAt4W#}L?B8p7%O3gExmNq1i7EW=XLf=@&uxph=
zZnY3BGM{(Tx1IQN9r#1ROu<^4P2jdx$=O-cSFIY<H3Qm~d`}-qUn<n<H;WAFM;KN@
zcT)>&d4 at aGRl8{PAz}25XdyGrpsj%=e6Wp4r()(z(|wXwu`5jxN0S*ZDZg$J@@`_B
zi7N#ZW#I;>lg_+G`4 at T>JS#;?g?wz_is-d6fmE{h5%xIXY}o-_cP%@6)Of|knpy0T
zm_z30t~6ys^H_o`A at b+4?e&PIW@}h}J}Eiz=nu<Qa78$QBS!QdaAX}~IYAc0LB|kS
zO{eIb(do3!7b*4DWPyXmQ)zHGi2_E9=Hpn*nRppC`e{<tK%2)GXn`FtpE2-JvuXJv
z6keB9aN#E>aLZO~u<0e)pXQEYlf$M^%Wy=gM0<=u+N at hbHG`twOK>=q-2vaRA{=g@
z=1%40YvruBQlkq}N@@e at HSr|9vRK?z^Qf7<Y2l03M<EZC5DpM1);NOoePR3H{q_|{
z2ZIcjZ?ThRzbJI3i#)lGAXu^8 at T;SJ6R?69#_u}}bclzJpVy=ojdWQ|4V-4f%U_(r
ztZF!77WS5#eAdXvZf6dO?Qr#`=oAzvzt84er|Z@;b6169Y8s at k8-y|c{=<@S?v?rz
zY&*B6NQhu>1t6MKw*zm>cOdh6DcMNo`zNYZy7=Y|rLNaFe2s%|nzBHOK$F&iHq!}X
zqy+LntgjjdT?76UMi1=$K>Vjm-fz34I{=Zh;?7CMZ!Gwno3scz<~&xcfq>e#wfotO
z17ORzZZ9Sm1z5IxGyYGwWZKm`HU0cX^I_SZifzoHiG2gp*x76*2d6&O&do-VsdOqY
zUlPJW2m=v$5<n)G?6-1gk=s7U-|D&7F;bFEWBCuTA`W0%%d?c;7UU9ix%YP?a&0+$
zPbKDhTL)Wh-8A5t^w`=@C8%_|5AypVy-y;UJ?;8eqze_tWBmCkxJ3QtGVkB at D#w?o
zd71Nx1V_SL2#n9kng*FEM#3wMPOB at JtWV)qIr~!X3||=$(5$D2u+PZD9C>4iGp28&
zHzO%5XusWXuzHe6u*H8Hg1uNNC at Ap%G#pS~A?-Kz?U^3W&wcR1>353ESF^|-2|)Je
zVh^<rXY7oqZw(RQb>&bc+2H2UkgEE>`VF0EDl_qBIUyT>MWtr!i<I4P+%$=<7DS(9
z>!aw8%7Sh at _f$LcUxf^{{TG|Z at j4$@#D8Wpc!o<WKnHgI+Lq#BfTRn=(s1feE%$KJ
z1e4?NkHRX-Pybyh;@PE=c>wKDfdyy`vnLG=e5zhOY;`9%DTv5c at 8XYPaVW+<JsZcD
zb9Pl)Tpj@&;se~J259+|5sgyz4Qp;jIQo1J3>T2m<;$w&{!kfpZtLS)rIa*SB*1p`
zd(3L<E{D4@|GLq4L~|l4uewAEXG0zA9cB2_m(M&u&{LZ^zLvnVMCQeh7b>Mc#oL^g
zfSHBcNAxSS2rHFNd*6ToSq&+`b1ZX%MSjwuoRWR;4!*%&9F}BO#x`5-X39CXPqBac
z3Ogo=GYKUoXx0A`1pu>cHaT?R5Jo6l>*-BKv5MfnLZnN;k|kaDQ>(KWo-PQYeSBCt
zVm1L)!0}7sY3<jcHN{&<<k6CfKm$kqlE4QqpVyGdq`lMI=!9%uOg2YChRY-htVLBf
zywjV?%1Kxo(hO&Jx<kfa$6CBEUoE_OgFIFtimLj+4<X)h at 0MU3Z@OW_r5x~Lkg9}>
z8F=G_ifv?JIx8sdf<nia!u(=1Aw10U?w at L9a#71Sm3<s$Os_<$j?N;nV)M1d`6-ZC
z1s9KAQE4L<Ki?#U3YZ6&l_D3d&kfR!%x8(wVg*yPcRLGjp{&nw!PDcfgC(Xo7tuUZ
zLmG9Oz>T6=9$6n`R?>kLT$T#DkVSMUL8-TW;)o&_VL)`;8c6M_G5#VmNH8k6@`Q!y
zpaB6C`RqXV{nBwOa|pYwjH_yBVZnm(M#IDwDxdJgI2g(cuDSTG$36G5?;TzgK+KeS
z9y&h?Xv2_~GX;?7HS$McN$0Wx1BTjO-Ba<&$yLXJTJV*r at S?waOX63nC&gI^ixA;G
zf at N7VVi06Z1{DyC(>JBQ5lH;mUCJgDfzi?YB13}kwRl2@@wN9g=pg9@`Z4%SVcj_9
zlK}^kPi{0;gu!!&Gjm()kc~oRTss)cBnAS)iF(_XghPA154TNP97cMi92AjtL1v#Y
z5(z#pgLbzK9;T at ODWv^m9D-=s0VCF_!=GCidJ~=1c^MnE;xyBA6NTPiLu|cEYrmCF
z<VTe&0TWWbwrFECtw-;tzi`?Z$d$jT7#k;-+Rxd!ARD|*C7ovFLyXy- at JwMKhSoo7
zi<A-6?C=Nqt|H?`$lH&4)}n%){e-(C$60`714)?w=0l?Fguu*|t2UX`rnU{JZlt?e
zl2B^HfXUW`R%;uM+qAV5B!Br0i<oH1j at Sc<CopuBq%JZwT$fP;rtd=Y6mUEj#d#Bb
zISVF4R}3W^`#npaqD3rbhj2N}!p6Sy%dbz2R-GM}4XjHUC(o4)7{f8!k1PX&hc+o1
zpN$({r{TZUE_kC-6`7!~R)6be6|#Dc!6?zk^T|-JDfy{Nhx at tlT8=nqm$O*cn^r4|
z=ir=r9g}$HZ7<B7z?n`k(^EF`I%3f4mMPHfqO3ke4Cc|@b3XF`@l#ofYMFPh6hV+e
zW`R-`rlNMOqo`L;DuRWfgMa=&{d^SU^rwpXsYyACF=}s~FDGl5E{9HNyu0s_c(uky
zLJ+ttrm3d`-JpO#P{hw(UK_-=-!f0b`ORXUR4CF84At}29xPf^!Oh#M<w##<5*R6r
zTkr|8?H^+(#3jCZ$A^?3_y83KclemWQh$$3xYM`%Dt=PFW(E}u?_&hVz`SJCvzK)v
zgvi4HUj^ijha|R2$RI_Ol!xuiRk5e>IPsD6J}>z2R`!$CHrFsu6+B**ub!^0x$fgP
zgO3=BgSRkQL at M$#vj2ws+D?9)Rd8UR?u`9S$Mm>W8n><Ov!>frp3+x{l%~l9C23O~
z59*;G{cNv><@}`ySxyNVN|lnVWhf+G2GP3wKChSHXs7__#hDwl%3h*`Ni)H?W}jU*
zd9ADF2;c at 4*t>Zsx-Zz~!}H_k6k4zT2no<c0kxFz)nS$X2JSf1g>H;WEmV9k$Yp;Y
z3S2M2MYLvJZq8T579vJhF?lb`(a|YwElbi?WbZy{%m!@uaY{2P=e0=u!h(W$or9bM
zKuN9;D=}9_qAC14wl^nCK#)268jB(BQ`q+l65^_?J#8|MrUdQu&S4UJ8Qr78ZmHwQ
zXD3<5EGKf;hH}XQ5n-GsRRW%MD$OVSOK2{KSCV~q4u|=)X3OOIQSmZ4*#f$A5yZzO
zZ9F~+4qaJIc(Mvn(hA0z6O`|XNQgwqM~@PtSB^85j20|Z7U=N{sI(P2onm*ySD9y7
z+}qdF*$#{kQI56N3>u9;G%(`#g=oiEWp?#~6JG?Hsm>VBTu!DP9k0`~UL|Ek_Ue%l
zfYnvihwP;g*A!y-abg_%#;gX6naYe*M)SI}f_)afe?*4l6k}2o7m_5bG$qQ$_1g$1
zW`cO%^QX9yZe$s+M<r<W6JQO|SK;Q(Eu*3l!gugxzK4&<<*{16k7T_%CfB<cV9v&n
z60Mvs)#%BdrQ*J@^eURw at xbV-S!Pre6 at q#8gD0>8gmgd4=&0p>D_L~tl^J~=v5i<O
zT4t_MajeurZMoyLs>{-frG at _)lCWGdVn1L<MYQY>N<?{j{nJG&;!b;)Bxk?i&kATK
z3f7Nw_+DsV?_!mHuoT0lYw4v*ep$K`ag^ec=mOC$MI~nrOiWQYo8GZ$w$!bvlNpL#
zlu^~PTC-H&Wo~FFvIXn9wbXhj>a-{<wW-yYs!*uZb*n1tqAgt7k__ND^3Lywp6i~U
zFPgVMO~JIQL_K+OpSeZ<m0 at 7J-c+2D6HwG+d?uIhTU!o&fiwma23qo#Jf?7ZOHP4w
zu;|>w0*?jy8&}S<V%2y- at 0U&U^$flOvG#R}j4G43l-W=3az;ptgK{{5QC3D~)`bk>
zJjY1FaE$3YVz8f{VJ6x?yZ at EK;{F49E6sX`<$OWqB?CiY);Z%369$oGhU=JB0TGO^
zFwcDatj@}C^PHkpk`xip<!-SMDOO1Laaavwi`aH^QYpCL0#bc69XeI_)7Th43W#!$
z`iJU7{oKjkOyG;wg9~L3Q|0Go?i+}TnNHT2CkS%iOg`r(ts*t6!sz;X+Ee^djfbi1
z=(&WX(h9jjEQzQJM}fquESFQnKr%doiJR?O&H~}wQXa^vnHo^7Z7r?4h%!x7p~zLk
z({u5lTtdTWv7g7NhVZ3Z(`rl0`nlvyhSJYte^tg^@lJR at yQBC-LtSeeKna-MgzHOR
z<|+U{`|csJ(qi?wJ`;6fHNasYH81yyEy>wcw?{+IX%@0F)A at XNsUh_CG8!Vkuj;95
zuwwexTB||N5VQ5J*dwqH`88yS?3S#R49|)`Mj{s{d)dDWV{fZU<E#=_0XI7S3Nyph
zcL+p3zLXwYz@#@T8gI3W&-Xx8u5flnKC^6iHA5OH9J0t9mEkx+n*^ikPk_gdyGc}t
z{hq|hljnB+Ch98Ou5<LWvJIxn-cZeYMrfrnYEx-a?E;C1wyH0eX?Ge1IbfDg9OsAX
zw2A?I;SGM_KCXPG6AYR(s$y8~lQic|9EOSR%|mO}G{2O#38h+1g)u{ROe<g4N#2zo
z7|7pBwp~Qd;^vhw%c2HT8fDS0`>yELA&S4pF;|?lEr|cQgp|7o1;D{_d_t#Fq0Ldy
zVSs8G43sQAfN^bm<yieiDw;Y>?_t+)E)k8DKnns-z`_Ofd2)2!gU?|MiK#)0nkUXx
zmV)3UZYq^t4q<DW5^_D#|J0l$<8CKgcBxLj`uX=?$b)Dl3?xH#5~OyqfDQ<)V>#2e
z1kTqGcaKu+WK65jS$_Sl$5(CKDOhe&JKDdGKApXW)!kIhJ@^KDy_znei>cvtILEkB
z#Z<Dl?i}Iaz2P4o5hc;&aQ6U;`D=P~b5$H%2bRYUtlM_ZBI>9BfSzSs2|y)QtKm^0
zQ~hWIx{w;24udm>5F!{$JK=pxL>^U$F00TYRmeYeKEcrp6#b1okKxXh|JEFs`m*4<
z6-W<W8j(%qs>{h$rmaxpGyu?J<g#LZiq!TnQ#tcSTx!wuP^-Dw%+4l0Z-?db3#YpH
z5z~o?r&G~h_E#wPzoHjkd)J2R%D>WX?C(>Xt}6|XUb?5|N8A4DpzWQ~1N;pyAcWLD
z8u%*-O307nZ`g?l_qVOT{rGOh)ftuShR(GK=~}6}p>n2O<J1qpXNSGhOE7!v7a0Uh
zN3w1V0yJr~yt?gZ`hq7vk6O_NRn#@8&kM+<cX^_<d2Vo8J!#*MkA~@J2jlKJ%{o`c
zPbZLwar*PykhYTFT2K{HiMYtQe_i|I?a->Kw!<Ac+hA&-BV^bA9 at TJ8xyZT<EXg@)
z3JE*#4C>kBNhxF0Xr=p;^YY~R+mh>tT>Z5$m7H_>>nq8Q62xXC$+iz<%wV#W`pzbg
z?v^s1j)U{SG%5Rv;<M|(^f6us_LT*h5MShoeWd2VhKn0PBsQD`t637c-W94ZN)%77
z%Md*Z6H$}M83*ZtOKCCG!oXEJWG+~mYSi4-8QCj>{~?+EyY&}wfK{7zAn0df<2C{K
zyuU-AR`Vk16-4a_;pGcwIpIn*2>#;Mf2A|n&!~`>o;&!W^JnAGGEmDX!71qh%&`vp
zr>7M(jR)E)?vHC#s|g!VHWk!ch!uG42jXK`%eW~jZdS61jG*xuk{80buiq!fVOG~$
zzsEkYDy$zTEM^oqoH#a*>Ifjtp2}duuSF%-cb1q&dqsdhg&j$-ZteCy?Kf1LE7uj(
zB&#ShSrEIdpe%OCl<a<fjg*^fq=EJ-a at ibivz1)xg*F$5FNlen|2_THa^iEn0Db_o
z(D858JYJbCLeJoe<fUGBsZ`@97y}T*+8rYvrhN>{d*QXS1>XR867o93o!o+-mVXEO
z=|~!1fTHxZi8QTPl0md_Bg`_I(05yo!3?TR#bZLSr^qP)shDi1qGwLoLLn6{{ZF)%
zyFc}!-`LvX2;+F^ZJWS)GK!j3tj;T1?+066B1l{$@~fKGAl+fR{FnwyQDXIOVoqgV
z|M(&0ml8||F`sfCX6J|>9(Ij=-6Q^bv0bIvnOt`_JGUgRdYWH$-NgGQYf&-T8M)%w
z^6Gw?TU`InCe*&mZ6ll&;_q2l=_|)VG2XVzM1$f1yk`#)z2>##7K<HT(zp9Qw<tTn
z at W<elQ|B$md}_FJRfz`U=HiwjB*+u-RJZyD)+l#l?~U%VpPuX{Tpi&e5W|$=-V0^L
z?qy^7g8Mvn>=r*ecWB43N+u=!aP$!Ei2{gi-HU$cY>Q<he=AIwtCee4Ep)UdkBgaa
zGb_KE<yCC+(dULpYjOin4?8j8g=OO+B>%&6e&*`z214hr8+a+xX@)jcBeAP7Y6UU?
z7ESH=MA#yxCeWxS0hY!^XXOp+nonWeOX?o_;_OW`@8NWV>w>LfA{kQKqx+xiVG_a@
z4L?A8FyxRbMq6$e)`1e`WVSq9j0#^<au25ihprLlr)i3X$-Xn`Yo(Y}=SAS$vi17w
zh)~IxSVs6@#vA&Hq9bW<2=i);?<GlP1w%TYzv9)1w35WA&NbQ6D0U-jeiSK!xkv<b
z0{`0d$ya7RoC$_B<8TFn(}w<MjH=&5q|<(Y-Mk%a4XrhyrH}-^9XNhyi6s(<OwSlG
zVktt!RMTpc+!E0nt|wI_8Znd`tuB~SZ+rkHL%ML+*zG6S>rb^jwnwoMHH$viV)?3-
z5WB_orihDBTP0pndmBVBG0j}eYKIAcRb}3jcBva;mRkHUTFK(C9yB<F`6QnNH}s%^
z%QSik)CG!N`JNFku$#MzxFSz5ND-?U7fMy{Yy~+E1a+!<c`=jILD5J7Gzn*grYhdk
zzGj=dzQtA-oSs`wMu;bO;or^8n1wpSbSYv7C+wMlYh0A$b{*QGehE#qxinUtN65Lo
z^URw9k-p#cDBhIxP%nP33HRRtQK|y^Gxk{Kz~ebRe8BanwiFTJ!rW+f7I7+S`{pOu
zfmSov8xgNJXDM{KZhA;<qBXYZZu9fbG{G*QbWfY-A8j7(Z5FSVTTGx0I(}G9Z$#YD
z4uZiX8$-RdO;$1*exA}<bz5m1q^To75d+?HPTADYTU9zeh at 3u-vkj37AnbXv2MtiD
zGvz2jHAyeXi*Q#gQfi$XVTggC($Schw~>m7W5=pI`Fy^y@~6jLiQQoA#>in$g9qzd
z*_DeX%}H={Py>3|^FpwnXW1foxS9MU?21pXV`DFRt%(LbFtGJu2{L=}e&1>Pq2FBr
zenXMuHo_G|*PA=~LvN^=CD_4lxcQya>M#N2g5!4!XO;@an_p)6hH8?M=4Md=2U*1w
zzEai%dA8&5$@AL9U>D0uEQxAPenob|z+la#<+Gn=+3x*xe%(f|Prt at f!ClAws2sP-
z17^8rB`B}Q6 at PFsB=T?&A335#r!1zT%Cp$OyYPM|SGoY`F<iGerC6EPw21UpX2?aA
zz at _`=EyNI5zGC-C3WU}h(2b~4x<5Z^QRjv<&82^lzq-WtQ13Y4y{!J at h7PMn{rX_E
zZEB05J0LsCjPd?eo|nAJ_tTrwnPy^aGPVySnu2LOLarEr){G>7W8muN1?>w2;K#<v
zx8MtRhx8y76H*--#!#QnEnyV+cv}@!R-GMp5O)DPqY*MjTJ!n7v4Ts|M^NG5tHvOP
zM2Bo$Yem}J5cBC&gakh5i!;#jfbhB=bWs93JV^+R&T2-jDjNQl;A1#xWw`D3)oT=I
zWeHbMY>>H>aO`f3-jR)T3?(i!_-dX~hsb%1ShOd5?kKfpy_)qf_v4SG^|0l=CWe4Q
z<>X>Pa_3&hReJvNHj*&=sa>qC?J8GC-Ksx`?X*_!j?&k3-IwCnj`IGA)st5Q>lg|p
zJ|=N4OW at Gm+X~Q{e~(SprXv{=YSzU1ij%#rSqJ<jR1Ei(+Af#0IBi_C_&ig~br(|K
z7pa?R_fy8r^})RhA;2P|&L<}(q)X6)%$vhsH41^#tSMT5=W9^+QGHw5Pt&&Ix6D=G
zHdJQyEUx~{g at V-c>SxCbsIrYAYU%>Moi1=_tH$+<8so6&jg5^wy;Xe45czR5z}eOp
zFZB|Rmln|2vJLz!(Tm4;0<Uh at B2V|;AyLk*K<k)qOm%Z^sLiLwMRMWTYDcd=0)kU`
zIr`)30yYxpGdRSn+VyNA)`O!7B)_|mTPr{3u;8;;ENJJjW_b(HucQ?33E4K~fmxwH
zAankKp5(MF*T&LIASIgqcnrdNrq-jAt5&W8N_D?scqvJo>y@{B?n)HOx8C)9d}*;&
zo>m<Y%Q_wvOnRu8eb2T+D3JB^0zaPU6qf*Ar_o;=5dpgQT_Bd!{lstf8 at NswtMil1
z(Gp+p=GWI1GRy+_C$7s1_#sa3gd)+FHZ)+>v|}<pgag;-W<*aoAe+CB-3z>PXR4R`
zmNCEP)b85>i?W5Z&l-d)KZO^M<=l20fNL$!kQ0(5A)CN;Mu*z*kd$Eae7nQ6P7QME
zK<%txnc9IbaT9SU>}<Kc*)&tch`fd?qXp=0-;7DX&I6qBMNgTMMUS-8vjCL%Y0#eP
z#VLX;2iq2xEPmy3uN0;1*^c!=F`@h^LRS at 7GxZ7tOq_3AQ8pT1Ji?O-J?_sD`Sd9Q
zGHwaAr@^Hf7xTP;F1m&(7CU^84Y3`SH!yb2+$0#>1h$E?4_sXKtKhfke_39f!*)y(
zoG<u6i5C2#t$Kxqx75^WAi~^d&%K_onI0g0v&~Xn&*f)WyNh$E1W4WhvL<5F&0kN!
zO;gxun~r21>0Z)sF%j#byM8;5O7`wvneOEs at aV2Z6B=z!{>j#a1cnzjguMoK3k1L!
z389nUHY85sD<ny-FQlYgV(nn2 at GB7CCtXv!E!;-n>SLFBi0swMc&(UTrU`0h#DrWE
zg;WWo5E^Sz#MG(e*NkA5;ZSfRkMX#YoN0_tWfx7u14pPa89}8&Aq$PVaf|oF6^=al
zX<vXa8bqcG_zZO^!OKQ5*maGB7GhswBI~Lhuvur}tfgsKI|=&+$GZpZ7_ITz=sEdy
zKgSMjU14#{{6p%p;9t7!-rZU8uF-57;qN`z_w=s8AAdq%*@)=J_9smy^#uKdmT5}~
zE=q-v5t*%>Qf8jevc4dJ3NTDWLU^%BVKOd-J8r_8VZ9T(4C_<*1SgNIw8r?g_kH5L
zL6f?oTgSS~<u&1LfojEWmVRXq>wH$-q*sgpbL^z)%Nako_4vO24Ryc-{+(G*isKuU
z4VkC9#ks<ZD)O6#(<VyN29fhdylp>=_-J at uT5y7o9QLp#yX0g8g-c0Qjr!DKSYpTb
zEK#(;=f~y$2+B<ca{Wh0PUf)!U@`98<I_}N!i3HIKR~&`U(0(_))0NwY$7@{qwQ|n
zH}}~5Pt-W0%Du%vMt=%FT7DTeh;KNn5=b(@BkT_xm-!El3yB;1>P at k*6o!~7(1*@0
z|5=E^cF-e`5B^@e&?Dl&Jp2c)c-cT+{g6hW8TzPT-{Fk at N`<#R at 4h~8${EcoD+!A2
zHCc)h7d6CW)=XX&Q~1dgV}F&Dt9*SN!a%|Qa|OJ4CH$hiwy~gb14iVu;riXa{w at 3v
zl+oRyrZdj>&SJB-@@Y6-oW3DlE?zXfyl<*6ve`h)Ejm^)YNLY%EYk&ba2a6{nUIWJ
z5&eKvv9e)#@#guKn*Op>h_xzrC4x4`atUF5lNXcBqLper-{BZ)CnOqjx1=7%^&Oo$
zQ%0zfL;<+K^6E`P{-hc&Ji{SZ=SSwvs=@5YB{`qmLVin5=T05G)+x^g>#x}+FD>WA
zEEDTa=^a6IuJT}<dG=h}ueOb+Ro$XC({b59wfg8{GROMH35vPQb`C-+yt`~7e=(`u
zzl!rlLH0)c63=3D%i>o at jW`P37p~#m$4^bNO%=PqjMxF|t}9l0oRLk?<vl;GBOSgW
zCqzGoUBmOnY$nx5B at 3h?blDj=CHS)@&)#Lul!i&&+26|IgKa+NNF4N-U^>Vb<V6x0
zJ+ULig!4TqO8rn^!Pe1AIxrz?iL(*mgTplf{vtUIx<R^K{vHgUtRCN=6o<R)zp-UD
zA3MSl4n8sF8s&>6IHN*4wqI7tNJ_#`_~Q+)jNUfE{YLD&3N?G>CAVBQwr|AB+FO&b
z&v2WUO3fRAQY=ej9~;G}E`-qB4M4}Ds9DmEJS7{d2MAQOS)5=4Twv%S<i-kgG{gK+
zX^7#Te{8p#dqJ$Cd52%(q^9>_>U})3!X!!;Px- at O3X|Epl>A`J1c}%x<}rcAP8N2H
z5;6|C&zV_iu0i~w$#RyPs1m(z83Va;&z_#p^+g*qU(B~`Df|w0PaV}QqXqz2yAn2I
zbIHy=^WNBwYEnMC7P_N1)u6 at T%FSY0Gov-dR{(E-c`0aRJitX*s4)%4 at xq7q48JLA
zX|F}SFy}w)*`qiRRM*=kLa`%@3Qjgs4i&Tb6B%g2mfk|@RV{Px&yJAV{maLmfs~G&
zEkvku{o-dM)t>(UyCjZpY9Xy+{)l-H(($N%LZYV$y)fr84jcDsQo-sQBF!AHUgNRT
z&%4Y&bh0bdok!@|KFGTcNwCmRUwTE4aI*b+MXoZ=QTGjyo;216MAKZAaN9`KoCsR<
z(Q3EAW|0G=oRuz^yPcgOq%~*K8;|PnqMlM1D3nU_>eB66JHg_5i(%%|Dc)s?^v_}T
z=yT8pxQ7EU^}Y at zpfh88QNUUp8fo{Nz&B$e_jiPKj|JEfn4MJu+X=L^iVMfhl3R$P
zd`lA1zn?K|<t#w%`t%|iA%gNlDUH9YQ*m8r^7Eu~BziA at VlbrlS!sqOxVYZcam~t7
zXK1ryY1U=M3Wv!Twe902p7&1UW!^*QTsG(AWKPBw<H<7hr3-K;DUC65^F^a{wm at f&
zXUEE7bsM>ay+O at T0+MfG){40#a=--b^WXZg8d8KD<IYT<@e(wNv<O~*n&Z}DXD=~2
z|4BY at HFJMeZy=~?Ov_6YR2^@NfGQB@{Mc_Fz+>>m4fxy1r6_RvPYc|jXV#C7PtqET
zt}aTe^OQvzrW#4~M_1AGtW8HB_?9ub%;_c}7k9uhl9p#r6=HrVnj`O1>38BX>EL|d
zvPh`Y&?4<aJbZOurHg<@clLsT!ylS=Vd#+GZ&zcM<b!@HEhKI$eWQyylJV}H at I%Qs
zLKKd;IFk98ss}@jNUd+>=VRQiGjo-}g2k%6^R$e6O_>=}Bb`UReFZoGp-XVFDF#kb
zRb=Mta#LzBbsZ^ReNL8qfH(0gbNAF3<<HrCC~_>xh~fd`??nwgPZ<6%!{tx+y^AaQ
zR)0?07Bs&ZA^LJo)@Ya_$IV}hv7rrX-pG`vrKni<{RCTut2pMmpM&$f4rw)1_)?+E
z3T3^YD+)E_BHQt(-H7EizWQ-zOSJ!G1o?{lNH>V}E(>EHJ^JCu?CZsbngvZP+U3>l
zAGQg?&#E*Ps!u_w+)(+f62<Iv1wQxO$Qjcbj0NEX;4v7ps!RmJu=T1!e0+J-b(eQ&
zB~E&C*^>&7Q7?3k!wGqa at YZu_I+d6ZAV>sWFX=eB)xOF{*kS<Oz4^5~{lGxCYTf?4
zbp_f^h*pgtnz+>Hueg0zcjw-1uHWBCu`fk%YBL^M#IPelQ()Q=WNf=Vdp~myltyM>
z6Thcwp>h5=vzpl{|HOqQNZEV?$x}#39+01bhbE&y)Rm`UBJ6bJ%<qk?{_xa{k~zFH
zIK!W~GgN0=<>cgbkuy1$Jmgp|=-o#*2$S?<goC`4WB-qF-4B6U%!Q*bb3=%P{0!S!
z_B1?l+duHWKY5ewW%1!0x;*}irxE0`1O*dzKXmZ&1{97F)ELhAF;R}8XuLjAr9FJT
z8E;E9N~RVx-uBb+;1KLiHO^MBen4%|OU}HFU=p!)l;vpQkhYa2ZTjx$HM-Bb6&qkg
zhaVyJ{~4!I5d50ZRhzg{eE$8Om56t^7Oq26hGKynFWQ+bCif7b>I>=JEBh~Krp-cD
zsre5yOGG`E@|uR=WySm##ZnEFC{vIqi>hxu%LXSR5d1NHm6)`<UodYxW2rjx<9h|U
zwq~1m?1|V8+cJko?|welt}zgM-+0-u)>@^O`ukX at c8X2LU>6MeL!iCdlF8EPT>k#v
z9uvn?a#qB!1u@>5fu6yngCgXfLJa4(SjW*3>t18lQe)M at KOL+~ebp*u82JC<dP-y!
z79SD=&wZJtP at f-T1ux_QTqDC&<SqUZv|%dNOv=RG-`qomuVTpJ`}d0Faalmdvc4^n
zn%pyy7DEY0=dNc<bmaGA(Qh~grFF{$U#h8CCRAq?!FYDSBybOj=zbPemLYn1w`ddI
zkhf7fW}43StB$nT%IqzimQOg^^0YET;Ygb1ll7r at RRkGByvs@M-ITqzqHVX#De?Ab
zK&-IegrNPT84OSAonELg$uQ#Da4$XA$nGwVp!%(~AhQ5}Nn634*CMAWS|b+ObmcSW
z<e6>5>Dz8wyP~<P+J{qITEXH1 at mQ#~+RAn(LnULA_(jVy+VQT{OXtmna^S041iq)r
zq*!fJJWg}#N<EJ4`t{C)iy#l7Tt??7Wv20pm;1RHrYYvMs5c44q|?&g*8VF&B7yMt
z{u*YSSIR&AOZ7Z-(fMTH#zRb6C&}r`&0Dw?S~sD$VNJLqHw|zzj+)&d3%H$?M+u`i
z2b;5~3g)k+<oG|s1jv+L%?0 at N^3qemF8;EyuX3cH at DgR(i`H8$^=7|YX2>eJ41O1u
znYHzZW)|*=Eh*-7Y?Z>rPSyO-Pubs5`7um84#Tj7Potl_`_ErI{>0tBfk|;NZO=&Q
zdti&tw59F*Uj=H(8%8f5ce%B8KZx4UMiT)bQl<|ZeXHzasv8AbTs)a*I)gDbgQD!P
z8vB~&cQTJM?8^o0$_C`30oL7mu#T6D(jJF)x3W)XO^bX90Od^<z$PWGm!9{l&K>4!
zjiB0$mpQJeOp7U|<bayPP9TK&E?39#{aRYV+%a^A)dgEE at y@v*rt`XryT~j4Q08qM
ztM{bC%F_w{@1gzU&Ea>%gpddoXBBm!V{b8wr>}DdS)abl2BBGw;-2R-AzCOLu=rJt
zVZ+z=tE4!huS#Of9+$jG*?A1I5iw1KHyu&h<bVR1XzqVX>^#FaZzS=?AXBIVQA>?e
zk;Dlbf`*iPIf}`2-U`c-sY2`7tOYBkbSUSwdu&tr%y8 at bk5I75E-D&%N|A+T_WAfx
zjCTFh=@2*f at TVS+e)K at uB&@L9<q}zJxLAU`iSAXendp>QR687r+ZE3jPtwOcn(mCk
z9hyi0*#jGlyt&zg4zBOX&l^==I~NxJVOoVw^;&=V2)fwe*3kvK7-F9F)gH7f at 0SSp
z`{(k%OiP#5Y!%&1ElbD26#=jz?&vx&g)T&wou^V+ at s|%p<kew$f|YE)RZpsX5Ukr;
z>{i{s91C3tQ{SAD^&h4sWoBOdx8?_Qs&0fJ41yN_i;-?-mNoVx{&KGOgk_EV5xu=p
zt}??zuWrC!LX`~yp5a*>>MT7;X?v(S-1=-CS?=rnBXs+pX!#+quIvL$eMrj=t?O$4
z2!%EwL;f<Vza$Mg<lXUa=tGFr`a#S7N)o|(9 at F>;Z+-OtY2mL%jnylY^7gW&C*EqO
z4_0P)7?Dlv3hdS>0VQzvk<&7|#^}~xvAQl;F0VlNT4B?AlgaBk5m{$f4E#ax9DSY7
zUz)#J&=@<cHB%Km+xfBfEjP2sDLN{JgkuK$vnACuPoA6>gAU~%uU at 7t)%_2y)rxYc
zkyXh8dy3;pd~a56BiGV6;wpA0+{Gfyyhsf94y at 5m9+~k`xLccCL{(W;@c5lfuIcf6
zZ10d9ITz<qmjwEP%bvMXyAK5fy!uqUa}<$J6+_!Ioifuz6(f6iG!Z7pg#D}`9ilb&
z<G!-(Mtxjgyp|)M`za##GEx8Rshle$J`K8s#&D9drc#PWq?$HnlKb&<cfDajj2YXu
z8yGiRz>OIdzoYKzKF%v<eFOXhRLR#U+>PE2+Hk at +nRoxq#gAv9Lf-7$iy`OkX<l)u
z?gF+cy&ur)c>u1PIEh*L?T~Sq6G(GfQsyK1OB?d>O`2A=vu&jrzX+#nw^|7$^yCAB
zbhm35EEY(NQ^=M<{>(@orm9Q81$2+`rtlNl)b<6EXr<IX6(Edfny%fb`Ic#U!JP<;
z)tVCAu$Zu1EjS at 2fUYW7BtL^Cx}yAdh6HZuY)UiGMi8HTOV9gvqm9H8Q^kwuhKo`!
zhAh93<u at 1Oa*SwJc`LGC at F!3O*piqHFn1Q8KvPuK75x~4TCF5wYEUnPTa~HX&Hhg1
zS9Hn6QZJMUzoL#}O8sizS3jLqsLKt$LMIs}&>1;${D!k4sZ$v)!a{KvV_49BN|6MC
z4eJHD(sDRnC(qnyH_+-V`y&@rm#Y=Bd}>(^e)Yc%aA^AiwZPmluWMyD- at pb~S0gEv
z!tv?Y=k3;de9L5zO?H3HaMQNiQF{x-lDP{bE6`ZvxVRPO<OAujej{XXNA#P&uE?s$
zEgBT9)g;tO?z%g6leF@=*O^-w+aJ;baTnfoVejA{S`hCrf1aaqx%2uXV6cIoYY{)}
z)HKAvobaHq%i$?J_|*$FuhaEMi~{`b;_=CYaG>b at dX8mHnqRRP1Ie71`oqs`J*<~o
zvJ1Ze@(_k}xqe4?!g~71n$5&1-_-|z at 1cdCcG1PrD>nwFmrd<Bw;FHpu$aT7K58X<
zu~VOU;BWHh$F*ngKzzZ&kd<aEo6L}vgEcOj*#@>s9b+!&7sNsACwH~F4qmX<MZ)#9
zoO{>HFWGkLjFB<R4LDp8dZyuw4uj_LCbpvOol}m4uqoQ+rKdB%p*T>u;f7YNoV(e@
zB20(g!-hwfg-s>*)+oe3S*IVtW&RP=9wRHap2MD}pl+B{ynL>y47cX-l;Zcrqj~q5
zc_ijKX)3B>s%<wO&1)aR0)Xl1fgFLL4)2UK^TJt`d};y}GHb!I>un&pgH80vD|k|b
zoN0!nA~1oiM-@=rfNetUz)z(p9rt-BMwRW?)3kX^4~bONwR#olLX$f>4{i9n69FRn
z<nYQ4K`(34E3z4wq<AkG_R^daH;%@0Tq|=R&5JNg#^y-VPjilhw9RJ~@%>YK+3*pP
zXPqKU^*GG9a|a<m<){u|A|FnJBR&>iA&XbDD45u~*7pYl1^fQ>ycW(>=Z&Ikg+rYT
z!qWJ2erE+vmSL;uM=Vlgr0aJ{`$^lU1Y at G)XZ(4kHN8iI)D?<RHGlcF1 at BzXyRHwD
zz)f1iGmMLO44HKhly$r at 9ZT6x<UQ95!2_3$*WxrpF0Pk+l^mJ?S3dT&$gQ9Uvu#Me
z!{LU6f$!-)=WAlS%agUnjY#YxT4m7_g61vili+dgbA~(SKH2w5w^Vm{k_D2gJcO{h
zkyF at 5P4HAteg1YU<gNwtWc*6oK?l7=z at _S5u33}!Q~S%$C6)-6vG%gcA}h-Bm&rM+
zS+(Vf-F2B=HHh4&2VZc_sU5E+dEgy=ku~be&U+(+1^9_X_MoHDjK9CA8*B9T)Pr^~
zMnRM36V4?bz~F(_(nZg_YTU|!@VY at bwf^_(_q7)+K27ZtUI+G=EBj<(+^ZTL=n-T+
zqYCS)Mi=z)GBF<}-&<K;#L9`fW4-9ASxW^vYm)K`_4y{+*IBI&UJ33%Pu(dXYDyh?
zWgN}ePY1%ejv?No_C~r~*e>$HNXyHV?|EwVFMi1H%BoMCgB6rfFG7QNiyB<1N$!)#
z6Z6~UwMU>;<GaS+Su at Y9q!SDl!N9Z~Yu at 7|A=Sl0U$*y(X<w3>Ydo9tBx=@}V6|D$
ztR{X_EJ5}i29OvqN?vi%pys<%+S;W*@AQTU-*`&j$*RrG1`LxIKG$@y_L=8`-=%86
z1Q~yKnH0+D2uX1qXzvI)(nDX>h+n%>JZD35GMo49qjQjZ{Bf`7on31uHaW1vLH`o8
z92yaNG2C~;@(>WJ(ov?~Y`EP;2+QVFclpCrv8d*f&HtLi;|}#G*KjezyL|kJ>sJ_K
zr1K;9^-_ZBr&|0qvg!j*H~S&2*4LVQqms~OJxAss9^t4w{Cx==-2P%e6Yb#hAm&hS
zy*L1)Hf=a*b(77y!U<{wBik at zqxgwS#=Oly0dJ8;sH*hIBi%12H6~D8 at tdER4!`fa
zcu6&fQ4OQyS?U?8mo6%77t at l`!qngf5+`Gk#G87hUPyc!rACTBH+58%>@iH976Ahc
zut2mc>O7=@162PF(o9ITZm||B!qKObtm2mRB6<>U;(7H0rQge5oUv|!CR)$bd?Io+
zng~Z9wIVz_qjRK at 2iboLN9~fZn0?rJHZ$sgB|ae|wy6o*+shU3U7}`93*}r#Q<Q<=
zW2<H(lw at _&7B2 at W>yO}A1VO;@<}`c+y^Xa_U>}E!Q{&|9^rafbWDp(XRK&Ev;aMZH
z^qT()FXuUJ(XVBo1?ZsBi at lfZ?DlKgt=C+_J8KpKUrhCh&v>ukGx0laT(#-y8-Y~F
z($V=j{&T~6o-x#b^!7M{ZgpsIMqTbpSJwIhJ$`NO5cToyo!2^qv at gL92SGvG*&$Tq
zi^md~zL$^SEfiG~+u3%_#^vWk1SwCUgl at nk65Z-LwxLnX2HcgJop{&1Sg88&dzcFd
zK>_2>DPhu#Vb!ul>K}Jc at jF8J682`4#906<`UX$%r>N!WJTE6$KY;BiljNrqb!vv>
z&oi_+h$l*!3ZKxLz3Kyx&D+G9PP>XSjYNoUE}>}Ixlg9nP2W0*84Y~;@&(2)<d1rY
z1eW-YYCg-o*=d^3fF(3qe8-iMh4*FH-Myx{<?D?{z<-MmGlYC+*|LKOL8Nt-rWf*G
zCF)-Hg822&xXEAT)e_pofldGV#5mE|Ll7G|R;0o2%y at cN!V at a382W)*5X5n~c+PU$
z)Q<pC+?}g|t9W?8U`W~6wtABw(t3^l9WL<<CPn8llL!P#N>8TBL!;t=$`f<kKe3<=
zPOxu!HLH`Rr8XW=b9>;WHIVq~t*YwF6={BSk(*W!P_8gRZRqPvu6$IOmf<fG_g}L!
zS37o<gl+#vwk4bT58K*pSj@{j|2NxOulN_+dgl6ITZ|yT-S#NxlS5DL4;NkMhsEy0
z4yPkKhVYXf>1<;25)~}4TVb@!pzN#VXFGH2UX?^L(>l-xSPOJY9~lRj8fW8B<M95L
z!?%wnxMR{0DPn+nP=+p?j{RhLt(w1k&$tp;Ur*EF{|hqE{s_Lv#iQw}5M0bY$<7$}
ztF=Diy)j**3Gaw249616q)y@@U|0YLt at agry)=z=;<o8>ZFxCIEE%;gP}vKY;a(j2
zMIqd}U!0sX!eTlwCZ}v;Al81~0E=8WofE6zi(V^%UXf7En#hMg(Bq>g%Flogv!EaQ
zz<<IY_`iMR!z7pyZgWbH^hHM;M}mlwB)T9DEkRT<jF0uvh}&9xxyJZ00}{?TZl`8U
z=zGH^Rbi5%B<0`iZSmpZ;r;Z~N-}seu$CZI`UT}!Pe~<r-Ii_t=Ee#1{QT_XJLXbM
zpt3-t(&^{n!Lej?dRtX-3wn8Zp_6ne_vFh5S-ebcfzo+-d3{&FoWO1JE2*Mfdt8F&
z;~&uh9U2)f<Lq_y&vh=c*fV?uYVy3J43bU-5o#8ypu^YrH$4}rOA$g)_+)b!onzMc
zQ+{ul-cE*@RI-}RVogr^gop;gwUPDc4YgKLu5y+Ju6Ubr=f~F}G-f`5&d<*;W5Rsg
ziynrgiG2hzzqQZoWZjFs=BVP2v9+hh>puAKCR)towARub;yoU{=UN<q&bWMXq$MA#
z&(zP!hLlI;ADG^hH;AilH%su%K$Vx0goF!E)(GDSO!nT$FL)vr9{GYN((H~8pKSfl
zYYgsB&oXa2yxFj#(VuuT-uQ;%ZdFo9$GFNaP-1^qyvEX9+1xke$okP8?MlQnEI*ju
zC at ciNdU_3CanBl$AG01Cr`tYp9aXK2f(mODIw4YQUc9^>Sk6h_x?et9Oc%Kypn=S|
z2T88KPv~}%@|?U@{WDWJN~tS{6V4YVbWaOOr{7Ym4SaAXI<1}`=JXowJsSARIp#7(
ztS3C9XFxtS#9cRHo3Bz<MCF;cH&zs594BJ0y9{kzNgGF=DT~w<3SDGC>j?|hgRY3T
z+O-#Ay#?;;tovT37C?>-$%8J38GNc22U)dS9a;M-=UDn_xJ&Gv=|aYHt77m2=R$`x
zm5tiaEq0umZazVAzbEN~L}~}HkTEwOm}+g8|30aS+i1$yX~lf6*1k4Gb3|NzQvuDV
zN_UoOqzh^ydLTmb!gd*N7_C<+TE4+qZUUhSWKF-tgTzdD#eClR20++;_wRA8J6Rpr
zF^^235p`5w%Z}%)RIg8up323y0!?zdlh>ow)4Zq;b$m|Q9<ig|m5rBvn_`r?@<rTq
z3=0gtj49JOiy^s+biG(?kFj95vz<szHV=M;PL8qHX`m;+?>7{8FYBN>#@sTa_sJG~
zu3O&(7n-{(N}s^4urcmNl}Cm)GpxqFH_k(YLHixU!+I94>_?^tirC~pKdUPu8*-b`
zoaJFqK4b0;?Xa)b0;P}GCZN?Yc3NFzO}grE at oo8~C&Rus<s{i)F0iHGh3)Wqnhk66
z;ZW4$j(&xIGg2BCmG34ex#gij%G{!ZpQrP->%T6 at e^#ZA3>WhM?<t;Zk1#Yf#*(c_
zhwQ^6uJrFsNG1G#+fn`#7ykOqw=Dwo(Lxj;9gra%kT4yP{suMe0kBO)M4$-h!vLX7
zxtCKJYk*P$iNyc%BAj->JM6rWJLDK^aC_)#m3y$$S#-i1a>^(gnmogLqkfp{aKRX>
z<<=ddhx6+Ub-t)IO7^KUaIKhl;c4)jXX|>82I at 7QdZ}`p=I(oD`@9S;ceU!yzKuC`
zUg&`q4?TQW_!iGVJ|?T4z{QKz#<%D3hr_P7uBvB(#fP#7{>pi`mn at O_T>M3=|1RzM
z;jcyi|13T7^T9loH}fc$e)#th7XLlGx$ggG4gANoK880tIv$S_E*L)y)!`dLe>gi5
z<c=`ju<r2*?_!&o1pnmZyLy$SrCFN=5(?B*U`}dkk3KyX+}FVWR&4RTKHr`0A5P}_
zdGByO{5jllDl7*xd3@*rDI7mVyfb-&-rx3Ti{<`#o6-B}dVh10w$tb3p6jBT&E)g#
zi<s!#OMOmqj@(_>C)Vlr%6q*#g=g2~qQu4X&8KV~<?Hgj&pJ3Ax`ktvX6Nl*y!Mud
zWuB*Jg!@*TE-m$TUIZD49$)^vS9zG+#k}P5`Mp1Q9ns9ZJzniTbhwAKme9cpb9N9M
zGYP-vkX?thw_uu->55}6-g%t-vLL3D6T`pte2t#`0~*?_((8Kn1;TK?ILVkyUlYqD
zO)_cZ67xJTzO=z9<g7wv4sA}Q7lmI$X=yw0h~Q-3u-E&D at D_++4woJ)10R3EuGEg=
zFDeuMF{8=7@>zU;9!D>K^;0!n03G{fw+D>BpV*Zssk)uvd8+zM)9wV)P4Sla25_r7
zy0-H3juP=bpsQrRJ;hCqZDNBi7%-a$-jBGSiSK}Wh40C4KKMJ`jY~Z5qFUcRy678H
zeygw&DR`47n@)S#L`!uZ-=b^cXFPY<@hWXcrKLSUb6<>a)poH5Z+x%j7kV-AOyRTs
z7JI at 9bXb2Q=_Ib>^PFN$IToBPov^?hzPKOayOw_4$DUxTB-&*<lhaf1naTxsxw|;A
z!`{TpAV@#fdgjR~M0B<)9FBZ>l<5Y=4_*+F`_Mt$4Tc)GPB}6 at jpz*tJ%@rWYD-=@
zQ%i4;Tk-$f&xDixA$8qv;@Yl<r#Xm<o#uwwXJ9p_*J!`LP<_(aA;8N}<^5zCJ$Jz&
zEw;B5P<hn6V{<`NHrQBZ_5<+enovdCv*}gqsa{NAe}M;8x0uS&<?7X|;Z$06fBy9y
z`cS2ij}oNHTQQS(69S-oCirsb9vAGL1)*_VJ`*sA-eyK%;di^6r9I$bv8HQupz=I>
zZMQx9g9kYuw!5zPhUjMWz5iSpBe`x?qY$Ej&(ZYS>>V^pkb(N5mX+$XFxsJtw`}_~
zclRS#b(s*T{zSZw#seA`9bS9$`vWmqmf)94rIm+Mwk3M&JK*s}yi8j<)%PF40J)ja
z{3vt8Tb7*lhOQXwoO at -+;`=W26T2;(B)2MWB~#4Gm$jbR+$2A$+=XMxx+VY at HfH_V
zxG4BOMqND at r#t-1>C(v1!ww}~n4A&-)}!`R<vH=Mdd3Za3B)L+stFUhTV>K=yqTC;
zdJNBn<a?#=e_xw0{heV?SwCIAS*58^|B*s<TE%}qBv^`P at wX+=IH;t4_<Crl?&byO
z_hpB$yvuEYZ2kEz{RNw;QeiPE;8C{xQo+P^kq|mo2ePDUu&MRF%FIZ->Uk{Z5F2RG
zk^K<i1x&pi7bs%NIlh(fyI~I*GOxRKyB;+jpK)1q8ymiD4phODc-T`rbVv%kWUm0u
zFCI$d{}<NYGAOPfS{FqUBsc^~&_J+Y!JWY&A$SN5!3pjTgG+D^5Fi8yBv^2F8GL{M
zgF6g9_#h*X^UgW<zFYO)t^4Cub=CgSUA?PUum0Bhx_hmb!OiE&E<TstJ<cF;%ekV{
z9xU9v99FSH8D;-L<X at N!{TV;JPwE(;)f=LyJYLUlequU4bH{fpaf03-1q)h3B}XbG
z?BvCVb at CI3uV6tc`XQOwrx4#46#^AUk{7lCQgWc=)b+1+$H(ReK&TVhV+7F{wf__{
z2|R-;7~HDAkgmzEkJQVVyQcRSlrCVRMQ0jciI|@}v at W3qP4$rGW2eV3x~o5E$2C)Q
z%^uJc4XOLjzSkVkp-DV4(VK-{K?k>7*<XZF6)P_2(1Oj1$wIp}qY1+xscU`>|G~;2
zB~g^){eO-G{ugjvJ&z9HbIe<T$m~evg3;26lc~WPg%i8&G+~obcLkU)5Hh>oyZZiB
z)|I1`)ipEL0d)Vpc;4)<m;m&}dQ^(j#vqK0nBXle!}bS;@i~cb<P2Dm(yrphs>@C)
zo?!e&fUB-0^mK6!iDp02Z=|dh=`3(}SttxFc)V=k4Q2Lik(&AFcs0qJ!*FHt!{hPV
zsmm^{=EehTPDbxI`5Q%uRSe5VK=C<O^-+QU4J@!j`>u~WncFPiU74QGVDQ05tc`d6
zw;jbML@@YdxMd4VQ|k_RoJ<(v!n$p*hr6aCL|g{F<uHGU@^lH(5B_M!=4bZk*r#(V
zpCF@}KzEdX`=_f~h%YLx8o9Q=5=ixqqFK0t`L^|Z#pEY-?9IWWu$}3kc0s{cB+gkL
zCZc-c3C at S>9D#$=`EL0+T|PD|yI8(c2gVPT_kJ};#46>m#_{{^q;*sDdM&_C@|qj!
zvOd#^z2xdE)@E8=KLg1`)qvM6fpGNj={DdVr1|NfL;9}8Xwm#~atKZTP|VWpV}k%}
z?)$V(YMAQ}q4VpLDF0k{d#o9L2t8VIl}sYN`&&54UvF0@?)J$nQ>8IPCdb(Pv3-k%
zX0tAw{zW0B;D6h~4qy*-e+j1DlGfa1yv+dXf-Lml``7?AO`bcNiDArVB$s3RNMRls
zSq8M#)GgzhU?y!of2n!wR+?1v)RL;p<#h<vS#V_+G01g4AXAX$eEJ)av)VSne#N$r
z-q0k<)U5qWgGL+4+HQ+Jz1&SZO9R|5=_sS(04sIRVSUtV;QE-3z?~qmUIMqc8>}Qf
zMHIj~AGPj&$Ejd-K4*y8s5CfzQsSP|P(A9eqk`lq;_ at csAW<_Rd9bh4`bWlIy7I<s
zp{TCgtme4p+<i&fnOxdGNbU0C)@QK71`)Sxg8b$&{54+)v#}7wD4mpd9;koVa=*$y
z^YHK_Us8ItdH2GPZs~}^?LpF2R^~o0WBA(v&PS8kBqSGuLTx&Z^cz^tNJY at MZk4n5
z^qMUSqr2GprgvGCeo6ei^*OM{A0*=DN`+Ikzqg1wk)M$6AQa{`aCDo~XNCh>zWrk~
zH5h!{ZLG5U<ou4_xBPqIDX0yLe)(!UkY_8x^{SI at MVH<hl4(9x0GotFjG}G at c4z4&
zzkFmX^nJ5F>3bj3oRcnrGmFz!1_IeZs+!VuQJO{DxSr$3YYxe)hix!cqeSBn^RXK1
zgZb*_lJh#Q{O|MUSFPi|ri*CN|C;36_8&(yrr;GvhQ*V23EnAPTsCDNOe at G?lk?#)
zOjkLxWa!^hNof_GqI$r0j02zJnp&!PNhvthm4A3MlPgv7YmHNWT4+P8w8VO;*6F8h
zO3VW9!eXfg5R(*J1)}><P_4qBLg9A{4IlNLP*yRW2Z-~FbR+5wU(jTdS&HeHcB{rz
zKEHdCN-JJssjp0bYv69?CV`alpX<xZ#L3=Is6vlAflimjH78f}LgGRhD5%!C$u+MD
zi+#)8^0?~c=fC)|Q;+=5Ho)UU8{1kmW%9nrv$weAP626!o^osEb&v68e@{tf{6uT#
zkDH6%oazN9o>u8pvtGX7>TKy&sHUhybT6Aj at tc<lL*AJnwQnFHwT?gpj{k2ki+MBJ
z!4)?|(O++uq^H{K&wasXVRUhUTS6P|F4co$>uHQ at BS4~rZf>j^Iidg}ZfrgET^zv$
zRwD|>j${D;)O^6Z5^_zb%U~sm=HW^63Ku%Az-g2>x?lRZ=Cb>6#p6eP9^8E*y=%PQ
zR7M6pW<4ED!_|3<0PnsG`p^+|y|r=u_6FU~k3jv0i+UR6glzt56WV-LeV1e>5mgOo
zJ8$}$U+`HU0_PSS)7%DBbf#jOW_LX`5r5DMyM>&FOc?(ycGN`UJ?P(kIaaZv3>o6w
z#-ktLkt!he{nf#XOcrz>56&dnE&#Io{P8~Xef_C6t<vRX`n1pH1xKAnU0WZzrCK-%
zCh)s6R##HLC4Lm`m|zZ8n+9iGR*A{;;jZ at P+u!Xgf#-fOX0ykOANm4-YLYX45*L27
zXKhcVvW|mfn at E<e>IcA`)s!)1cc1Pz{I`ZEaoepPK}>czD at m8ZcS1}amoD?dy}JJt
zZTe75EuDNIfP3YXEdS3&<WsQC4ZJnBpsM0R2g%XAaL_-txrYA<wQe(dWAu@(=qOTX
z^??y)0kr;EWg~#QmWJeVIXAok?*VV+ud~~du?j!BM^@`1fDklxJBoNc<3K8}A9f3@
zGG+ryBY?K(B;%lHG at Rrb?)f+1R13=aLS=t<f3f#ZaG((+YErPGKF39L&;dp5_Mm^+
zJ?U$^>vaQbQR?;u->n;iIw6t~@Tgk!XD7gaqvn4bx&Po3XYft3!0E+ at tJK~Q3UuX7
zXFX_U{R`P=*AF-Tkuu({zx&s}n7GFst6c^Kqw!!EGb9h91tYpX-r^G~@RRf3$2Hwn
zeO)X!iw82z++YXSv#JZ<!0Wl_dj`^&dD_*wm=6z6?xZW6_4f}ih6TLMOKuV?(P9fV
zS-S^?4z2}&_9fanN8s9+;{EOVdTr4S(77WTiS)&tmAUFCK4z)@5&V03j0$qytRzu+
zthrpIDJg}nM0 at 5V{Il~;i)MrKFqiVW9OHsR?h{UH=Yks5)1qPQVlNavQlqMiDqXqC
zjr9xe!^dwDI&Y)(a&~^hVA?s?NDuZKc;~4J6j;R$P4oKx(Xa*Vd-ZiZfLHOdRJwdc
zKj_~`h`Y3TQ5S~)pDy+Gm2>FgBIX1Lo>j90N_IqHdX>Q}b)^ON9)e0|YQg>u8cXKE
znl-03kh_e%)XwGPn+ at cd*N2Vox*~<{pB2z2;|_GT$OgeIma&7CzmFtfj-LR1aH4ur
zgEEEZrbFY9*Cxy-`eWm3rn{GwqbP)?WS0QDY}fI&Y>1Z%?Ic2?tpf1}8o0aa9X5(O
z6vcGrkEh(v(KcPz($8o71f>;t(5+6|4KM|l1{BVCGUg*wN0uRiQ-h{HP^#3^KP#(#
zzB2_^s}f7uGE4qnA7{PjoFw+O!%u*h-W>+Uv&R2Pace^U_vH2etoA=C?y?x6vhM$~
zjj8IAlIMGQN}xJoSVO<;Cs;6d7*m2r{u3kR{?3yo+Two{zjs|gG-??JN at hgUx3lXd
z1!iw9-kojsyLSHvU;G1K>as)Xi~k|)e+cUUZ{3__p<3IUlIC35fz>MdM1e9Ph=uvN
z_o!2}6Y&1(0J847-i1V5?2ZBNf8J0x)?9GD;hWs0fu?F8O{$l`wM(vd=|1_!UyRJ>
zYAwL;C-YH!5_dop;tnEmt%>Go%^*w>7qA3CKca at 8=Ri<S)K`v^tbk^UC9GZAo8ujG
zfs5Ok{T(p>jy$lDFx9h>5^lHy65f#Ml8BbU7`2k-KVBR`SE4lUd|`z9{yS#C3LYlN
zQWH0F++buq0Av3lv%tH5%2WN01(K#`dL*N24*%BUe`}Zq@@adu9Cw|tYwkSog%GXd
zy at m2@U^JaD`0mVDW^VVuX=u2{NpkPJXA1G>&aSI;USbM}<{vrC{V!SiDbaw|(^dXL
z%Fvgtd@#d{)q4h$L&r9e>uSHqvHcSVT=1TqYW`W)O;>vs{4yT_UN}z<iuNyndv^`+
zc4i{b(Wpx*6Vz3`1-SoLk~$mG_h7l7ddKmAB_Et}{~9o9dWWqJbuCFSNk$HLaWC_o
ztS^;jUo<mrX)nu;u7`*)dIC6u<0iRVnP{E5j-lVL2o~%Nm{^W|o<g;u4J7F|cFpul
zgmC$S9IA`c<Ha1a(RJ^u^6ju{G`6>W=SG(^ASpP|G+~N2WH at -r#~hA+FL~q#bse{R
ze{*zYXqvWGe*~0mI>6>VuHeksbae+RWFflK0m17svY-cp!k)?XZx`%52#lS7BWR9J
z{Zs(>=02~kwj=&(aG4r<zjlCg6}ODvHrPhvgBr@{1|RKcejm-b(m{QP-1Vb;j*Zm-
z#&W@>03M|8&B<=#tn>6-Dl%9~W!P$0Ei$v4KRC9d%zO9TZ|_6E+AjtMJyic&!v82*
zR>sG92q~FvI}_=f&=*$Sj7`Dk_3B;m1f7(?enh{Wo!!4f#Kt`SJ~1c~y3%vSBX4$e
z>1b{T7{B;YqYU_7TwlS2&Rm7~ybTIkNSdNu07`?(RJ*l?PM7VVp2yAGd?0(qh1BzR
zL?AEZN(eP1F!cg@?_yRK9M%Lg+Pfub^H(f5%Dx02H(v_x#~z at e1|z^yw7$>TRcV<f
zJuT-6^FyuG+ex}HAH$9Gg+T&BG}Pz<78J74YR<|Be#$+01#~kB9UE!&pZxn+!#6c@
zAj#(!O+CLk>3NMXKfq}g2cYRIw8mFzgjd^5PK-OZ{e#vPv1t0C*8_=S`Lp2F+d?~x
zormtR(b^AzJAnUNE^i5;H0B$Qf?Yk(Xqkqz?OUuu+U1oY>f3;wmlY$oSmqJ=2oUux
z!bBIfO%Nni&55=Q3QHawg^G6d{I^oO at HS?89Yxbw0LcMP18_5i?aXyDAIGZ7g-(|0
zjYnbFJfxg*q8kLI1kE70%d}0ceU4|9)=qa;z+Sdy2Q{v|@4K!*W}Az9Dc<eTg3o!q
zhh`jt0pl0on|<$Rg}uL=mbpaQ at 7H}APV=O4q9LUHH8Dh8j-sY$KBs?Hw8o#2noBo#
zQ!c at s5a>m2WCe^MRb_PjD5(}F7cvmwl|t5H=Ci&dzzGCM>N^j4TnpzT=v{ZLZW!we
zQSSnd0ry?sl2bKL;Q at Z|guqs|1<<R9D4W&*Ues?yJ2D^fk9u~HdAjD2IsmVTT37iI
z&*v|9de2qtAn21ou9;-)<}@IL!Rf(Q3KJ<Etg_m9yreu-o?>>-$#|U~)^r^3j^1rY
zr8^TrP_wOej8QrNeKK$&aB*baW*A2BkgJjjOyw6i04-P5fZc1#a=v&w+frwz%XIU0
z&!JX>E2}4tF1}ZX6j&Vp_l*6`HTG`k&f_{0z18(`uk42%@6A`;_)kVbpV4;$*1}VP
z$-y*DMZ4c$8r(sBPX?P(mwd(n>$`u~f1kk>&(LAXcSg(UXFTqFS%CHWbLs9wDYCKg
zkfwyZ7#8IE;$9Vcaj#vb>EEKVBRXN3*&THo at E6mgs#|;C6<>U4z~dM9ZR}}PnahNs
zu_WC|nd_beCMQsqq=n}*q>N`lG#<ebI7wT(UX!Ogb5gc?-!5Cz*SNcWU8uGL6KC8%
zMa=)`9%)Gj%8*DDy7USjP(q)X8>7wN0FRu#{#rR7_bbTkxR;=HQ4NV7(r-yYcv5u$
zD7lo&&*bSEmsjXM8EH6lRqCQc1O$}4+Xhu!c_QHZsFnX=t^zmw#u9Q&27zl|S04`D
z=>4EgfVYtN4r&&(aKZY<ZNMIAIyoo8s at wEeeO-|svDy8hQ_Mxjk4%y&5C;Xs_O2E!
z5yDvbYwX`*u^Fb*k1r&HE>Pi@;x+ZZsSET$;E-k$$>+-eACyZ{_DTB<G)=^2+ at o}T
z8rglRXQ><Fb618cHfx3J5o(HRavTIna^2~I4^*xYLP3B9+Y`nH^c1}54FKeklnvJp
z0Ska#2Q^Sxi-n_)XrPM{M?*ralPoHr-=G(#^D!$U>(0+r<3(<coqG(>#^}}es3>Gg
z$fPIlHu(~^|MzKhigSd}Vw2{|35+sGo&jBDjVQQ)-||6k7jeI#dM$-f%Ol;x{;1Vk
znBM<b^8ba2|A~xmJ9r1QsIo&yo-m@`%un*ms+epQcJHjHjh?NMu6w8%puaVG3IMli
zIo3-rplwO-kB*zE+Qc%F64+(7(hOv`vO0(-wJRUAkuNQaH<sM5lJYNn{o)9YE#aK$
z-AAV_=A&vsnaQa>lhjOWEBw%;IrR<^Qb#<SLK_|dP#)}F_^wbq`;s1 at W|pMXRuU2?
zegUr4hSgRZRzs9q#j=ioWF#7Z-4IC$>Gx9Eu;q1B5zny~#(CR7n!kqJ8ZGF+t{tU-
zO2RkUe9%B{8H}nOW_xn7ADF43?My<ppaQ{pA}7JK_1(>zFwRzn6&F*@_6LtOdNbN_
zc)deRNHlZvX&|H9UhCGKfVgj{NCw>;-xM!hVE~WMiNpgJ5`-?ktWytM)6Zr=CO^D4
zY^^bZSB)Mv{`}0^oIrFkQ{p6^9MwS%%{(b+%AuR90kdd=^#Zu|d-c!&$x|f7oo5ns
z#X2{H!RLHKqd6}|F&`@WhSv~ULCfVM at z38z^6FM>EcjQ*0eUqks=1D<KXoli10 at bD
z-dODk&J2_vDq!)#sX6!t at jFe~o~!aqHW=x4tVz(VWc+lJhv1uowtK&qc0D9iL3W=>
z#m}{WU`H3%U4E#%kRaJnG_4a^aj3M-&$+Ps at a^bHKt5j$*FvXpU{cOHeVfPGs=}3e
zwIRg)SIFkRaXVdLvVVL>arMQ7|4V$Ur^5kq-DPW6?N_O5lK)P9VUZQJp&;?>N{WCH
z&j9`Ij0e@~@0Z7ypJFWh1ko5j!ta@?AjN$c7*GEn=kWDz|7R}h|Gw3u0}C;B()Fgp
zJ-ccA@^9~|gou>M&=l*XE56_v+e=2KS8QEmEMzpaOs6_8SBB<^ma5w`)n2E*NX5 at 1
zcuCX#mePO?V%jz)ezM>IA!d;x%?u5<(mp>zH at wB&?3KyqzAM;C_nbr{z<hVRfz{D<
z6~z6zbr(j*rz=)E%X at 5`T?geto#*w>osDV#C4KQMkO1cxVgK;A)`(W_t>0}a*%298
zm_td0cUHLj*-PiLHx+yTBrQzdvs^E2u5IU1S)JLL-FsQs6>@bNBT(P2xib%S+Y@=0
zn3w!+!G9^LjjLumr46SjHS;VgyLY*phEkphfkphrb!-1N at b+~F18Y8?@K?JqT`3Ah
zdT~89SO`Zy;(>l>73pDh>Q4K<%byr`cCP$I0GTD>E;4CWV&c3I^F`6Lo_+2D2CS8G
zsr6^H!fcv1EJi?AX5(x}Sk0}OuUE!~@+LA{KA|W`YlqJx#8P at +l`*hk{pEVJCm>2|
zrg0 at 5!u(>uef6Oz!P;5+6{kOl^|q!Xp~p?+P2UCD1Eq{72t>bH0rj343D+3TI~=T%
z*bL>bJM>RhE0yb;hxrZ@*9^}~zAkHKtg!=G-zsM at d$dy|XU`W!hy^+Gyl>BrHyQ^P
zd>KQ}eEkYDE&pU%PM4)EZb|KEVSVZo(EZ6Y`uF;SZM~~*@&=L^TYj1n&&=%i+)O*;
z=m)8qK^*jkz->lUxz6!I1$Ph1QM~+RV;Scc?`bEKZc(v3Wae+z+S=8OT#5wiO{-m=
zs;o7nmhG?0ysGl}ScKk-z>oOrt5 at 5o!tS3B%25l=WkU|dya+M&hXFoqCl~X`H*;AM
zr at HyKLQS?3-BEC~lwg%K`e>+bGkIY%{(VbOJ!|H<If>nw(gpo(G4a6Z&A2TP-s}AQ
zyFXFp*B60<h)yzmOn#`_apFN$5DF}M?rd(jL2LH)(ESC<QDoM{G<(#*I3y%xU?D$g
z at t6^HNh;i#r$r^w17KUDwbFU-X32k3A%5=6&K&?($ocZHQSy{hKcBh(DPDrwt$j}@
ziv?dnV^9@?{J9M_7DZFTd4tyYQy|c1IVt^7sP5F?MXVtH=ftr*ijBh!61ED{tb#)>
z*ML;yLKUVHj2}Fib0lji{yvbZg<xsoKYlUtM#f6p=es~W40sNt&L&GR9_)0Eh6WLb
z<h|?0J)KyQJ8#t|i_IZJ^xntv2sc}J)ZX%WaWWRvIW+!<T0ds at xqj~RO?!r`02AMx
z=)+gn(05!NWZ0vD^A;OJhEI4q;z!G03Cm=Q0D&`6GiHmr3tt|UW{t$=mxzV%{A=#S
zD0;RGxS>|zbM!qv?SR;*GSR}6v+PI;X5(WXJ$WlRg_*G65!SPt#lcqFVj9s|Hh(l&
z)SFo_wL*7i-C*I1{J~SMAhL54YKWYI4ml)($eS4+P^94$^UFFijezVqI>?5)GEpg?
z?PTR6J-;SAghTLJm$_NU3YqbEPu2NT16*!ViQrH4AUyw;-CorpM^a1BLS-&Cawh&$
zX?g##yKi2?HH7E)%jEx1^>5u->*;k;b`z&tF1p6r*_^y<NB^FdslWVhknpZPMUwvi
ze%;{zv%}O=)Kg%fQg$S)WeNl14fX%rMVLK%gxCKy%liKwZ~tFwA3->ntL2zu{w7V8
zn>=oSIaT#F)r-e3ORB+Z@)vQ52?+^_+&Mt)hwrBa1qXMt=-F5!&jT5~KnVU{URXQt
z$31AUNCC!DeJaloMEP?}aX*%u>EKgGjP<CH{!2^xjj(5=m`%@UrwU&8`mUxg)<*W8
zPXu`)&J|oSGV at mDxaQmio4TAdDW7ln<;!kz9K1cVXszJ_!12j{tbF7yF;B#<5e;kc
zG|69H1AjA<cjD(nD3D!d&XACB%{ne~oGSZkFpFJhS!*ebn~PHo&&X)vyk&E$5Nb(&
z=gfsVJ#tC$JzZ9zPWBl5dz+ZEfhnc^C&C?{WcoQiS50<Zlxlh~;eAncuT4=iJ<vV5
zwK^mu+?bQMSlB8ePK0~@zGbkdH{6-Hfc}ZM=8s!gxwxCj?LVXxA1w(Vpaap|qA?&r
zUXZTdm-p0-vx$<4@@C*W58WJtfLjkcNsPCe`)91Kh6(fLjitRF#yP&0oCgtv5WQ3g
zMifB<gQ%$PA#E6FQ)6{bUK_GGe{y+LR-WOlz5x$RPI?d?X62Rtr7`lAfW}dR2H!DH
zqo>0;OniX^0mXV#<{hRt7$i_0y~rv#4I>N7tDtW&Ro=9Kq;Y}?{^%&Ns_I+4Rky<)
zl4-x?<n#JspKkl at dJccO#UNT{bd;`~d`xL<@M4>jGHX_fg!@3`##3l;vj;dYoENZR
zc?Kx?`JVA?<Hm$m>V+nqI;$oNhv<&ThC~^aG=Bb{L*&1BTtm5HcwdAnQBwt8%7-7G
zB6*Y8>JbKq!*}vl2Kj8DZ|^%Pyq?&!^N!w-Bg(<}g1j^iHXIpXz^oJ?pNIe8wOhU>
zrZff;==c03c>)1?35m~WD)rv0uc-NxU0&|zpm*F-J1v>P8_Ji&+76~uuB^sd7Sl+~
zSP>+R0l8uKgw!VW9{_2&p{qScsB!@{;;o42W>^)Y$b04UY!&0PsHeU at oVj3805{!^
ztZ&k at L>w3O4bZPu3g_{sqmD9w>-~`rOAauSdP?cgRgxuE-w31FF9FIQ{cyrauOeTQ
zh1ED}-H7EWHK#aV+~PYtCYw8-h1{=&Rus_5grL%*cULwRqEp*&4&=q}8 at KSI3Fb?%
z#Pq5v)aZy6`h6N4ERRS&5bW<l6*{nBq5d^biwK|$iIOGG)D8q%yt7Z4vTwIxijL=$
zeTTlNB0aQHUtg%;)k=A9Mrvl7nBS3JPt^NSM5`xxaxr;afk|XN9`XK2VG@@lPB88h
z&ng;a(rtQe4hFS%Rj2S at 2CI3IL*>s}`3c7EQCw=t_vQQ61__L&lJ5tKlVDbOv3{@f
z%M_;}&1)p21wSbaK7WBQFddg4O_RzxjVC{Nxcqf~9acVM1`(f(gayc}fD3+TOH&TH
z*pluzMk*fORN6>BlPX8vQd#^%$Z$7q{Vd3H7=k&*yp=CBcH_9-dfiQr(G~;xk-B^{
z?uHa1bQyaw=KeXuU?}|#|K11Oc(YHl$m at 5l>XPt~=;~4UzAF?gTzTHRfmYq1^Zp%o
zes~m<olIc6QAS000)bc@(_}`+85>c*kdToAsms1E7Qe(oVpVRv{^xE=iCKgZEUg+v
zMd<is3MDu+O4GJob9YeJ=GCp8E)5LF<i-~r0^u~Sw<C`ap`JtoGAY|X1#g>RYbzqg
zzozXn%d-h}J|r$A{wcpBs{&9ra}Xx7`L6PcDzJpe2jYdB*8F=0*~-?N)yJwM6wR68
z2Rb;0gxh3TskC={P>q4^7^k)s7kFvOrLV at +8dgq^@CId9^;bc)>g3oDZ+Ameu(uyh
z_IEnoPMY8>UHAc0E~|aO?&}&xKM7=5o(vI1L?&#=D`n&7lyYW<x3T#z$OU`t0^}bK
z2 at H>&Ir{Y9xow7x)Lw+16SM?%3S at KbBR5P0ns1m+);Lp~R>Yd;y_{&C()G$3 at yd6G
z7Q<+sWZIlZ#V1DS=&oOd4MjN1SbuvLc7Sq1U0twi5LrZ95ByXSY-LT1?qI3l1nhT!
zUq8k4WTaci$2J$1rl>nHqyx$8u<$rCyQ^sNOxcj5n4z{+y?A|_tn<Hl!0CbvqK8vE
z<HKUJ>f$*s!oXi&eC4LC+}|;O<07dV-g`f!L?u5|8%;lN<<uQ=J9%0QB^t{&j!5G3
zv?#P|c}GdDgeS1e9e_Q<zeMd7Mk|r#_+jWDbg~zxXySx!I0uhpw>VyfbB}H|kX&@s
z^=xd=#k%~qWWV`rGc!=u<67&R4C#<#pKpRAq_eAtfTe}R(SX|4Kb3r52?Wm_mis*+
z-zVPZtxo!Pc}+-5y4C#2Kc}>mAv^u#>V=q9jm+nBELr9*k2#TGC2rVm1l&eZ4CH7%
z?>v#=ba?-#UwQxjw(P!DQcD$m6V!~PF|7&AM~Dh5n;gtGwciJ5FHrsnc(oZ0!o~Nd
zR1K9mMPL5%cFV0>y1D+iSlsR^sKpt3+hDw5HYc(@zjV3%nTaRYnvHz(jdT<1K+mYH
zVVYF8Sz5$G^JjCB{POkTAba|j at uR1L3q>-akpfIFwAx7T-O&(HTuN|KJppo#7{RUK
z+2zo#oFgsY_!aS)p!_7PK2xFW;^xVhB)v3FOr3+2WZ4gc>o_yjk at 4s_daPzpnX{#o
z0EMz at x{mwbI=cQ=<xYm(?OV73UE7z$ous;JP3KA#Ipiv7^VLkSMAMs>U1Jp9gafuu
z7bNIqM=Nwxb9k{Y7GYoiiu9d#)b@)cIi&1jmRaqoXu4_g5Ru+jiO{Q3&miwtMuBSi
zBk%W?^?D|csU+IogCe@}zamF`r0fEcwiEWBoHL!H@%WYBxI5?YNTw6LyGVSFAxZ?m
zUSrtOJmxU;AX>Dx0X+kcDC3M$6Yb{U&)iR!q8}ql7F4rH8OM4pjzOU1qWw}CnjumQ
z?xM_=8bNeCt>Uo}UVN+4`RGtJ=8U`h+3|v?8*Lb%C1N;XO|23q1wP11JY4oVOp;`)
z1HgdPuJoWu6sdR9!WRA9VUZKva$qJMi5rO=(SbIZQ%7It)N?u)M}lN}6a`rr`icoV
z%-M;c?@)d8BURoc6Y&bYqdYo^E~GZwHIemo;7dkN&&;0F58!dB;VM3g#tm8>&Y%xo
z=KSpk7rj#6*TG896o&(x`p#cJSN%su%mvfHqc^7%IPUhuwZdGk;kocoP5s3C<3)XG
z?A1&3<m`MhduS>wAt#C>m|(*dzwSiBbicA}S)@$a-pRK%x<fW$CSWK~q)p2_2SA9~
zM5J^?JF`kNWncgEX1%pIqTlD|o>~PV--G-Cv-%9G&R((ya(;eK4Sh0ITjbh(#A&C4
z<;>Lox>C5Cn<+yn!Vkd#_#;8lWY?p2)EGsr+#ytubJ)X#zrR6+ciFh!+OH&(5Qg(A
ztKJ<z>a_C>H|1Kc`kFYlkjn6JJJwUeS%={dhYBwGuhF{yl8SpIm+xCLPK|(v8|bEY
ztl<^UAX{cx at _rBVPeW3CY4&%~$VvJLv9soVn!xrP=UCbgd?Aso$uA=MUZIjf4`|+P
zd06$v!t}VDba}xow4>HAXN)i?;K|jQgl!xxOJ60>)xK50z#;4w)bTEee}3VMAcY)9
z&|R4isV)B?Hbv<?k%n4mZ0?7iiHes?yoE>qjsP<ri>CeV^146FSX`+tP`pl|tWN^4
zwzk6JiE0MmhBMnCUt)JMBDAV8V%<p at j=b4KIU=9Z-RVinV-=-2F$E|e`9YF!>cf7<
ztLMSTE(o}Tv}_4KUC;lxaSTso&(mnTvK-IgD|)S at k=gp^nJTs%<jdNFHi2}wHxDD<
z$31O1Me+3F@)^6iWBrq}4OT-VShY!L;gZE{Y00*5ie{CAM>)yZ^!e{wZ)WlBdHIC^
zw}|n|c^{|JDko`z2-0K*%8?es<9(2SA>~S!uopHm>embz0mNA;A}pYQ3-N~@rcPVi
z6)#i%q1zE89q-{mD3pkOcYIiec+O{sB*|6k at gPU_glI+6{Bn_BH~vv=VrNVlSX2>{
zX7{pq+i)4%N2gGqoi;k=S)j7bUuS;U8fHQu0oJN-7cTY(^qgc0y=Xbx>r^Pp at 7`+Z
zwtwnvAwgJDfy?Sm+~o-y+5M9DpscW`!v1rGxmxG%=Zs>iG!ff2w&$?cAuqzTNhz)O
zM(C at gzp@d at u#~&u74$xRQ9G4TzFJUqGRtRT>R at V%LPs(kjV<&K_Uw>%dawE%FZ3}(
z!#*VB89}ZUzdg}V%j_+E3Lh`h+r}X*{th01BUdFGa_z>+VIM*)I81kI)?Udw`0R5`
z+g^aK8H>AHuS}XR<#(S3r^$J%!gY#DevsizVqwhL9l^hyzEo#CB`B8?jUm*GZ<ZK7
z88wDGi+G>-+$61nBn6Z98l{I3r at r(DWxfe64Eql?=-d0`>?b89f^KT4N%fy4O{Ed#
z6 at iz$7+wU`%thFjE?&7W0TdfYiPm4v|5}bKh}2(7{~cAruYd7_p^9OSIEp*8ly<sW
zbNE@^_v^Q<_9&m2u}6lHCdnY(2D?`O#9B&m1J4`%6YGH}!|2)R6UtYmA)*)a*jb##
zQ9Diy9r0^Bk)ykk7!@E|BD3k?{auL(SuK34A!V0;v=ecg!yfx<^mIa`_#lS0w_jzP
ze}2B%Iry~5%%R%lWTx|<F7hp*LI7qw=;VVzv>@{PuwKMXq`IWp(=C)4Wr%^*-_E2^
zObg7H`##tzs!zR{H=#uQUoRasAZo~u;Q;Q~MW{!F^yx}cv_Y_lf;_3d$Z|VIit;*j
zxyh+umUE!cD^qdwW_uN6<-L&0!Se+Q;rIVMBYneH%n1J|7Q*ezNx~Da5&~|*+nb8l
zkz(k~4LYr(4Abm at eCo5yHvT4BztXJ`Y79i<dodQPF4iz`7e#fmm2#l<Wj5{VIyQY<
zrz<@?R at Qg$ZJf5JR?T)Rd9FF-c-SNp08h|gUSJ?4FsKXtRJgvZB_?=G#xKyF!=k%x
zc{<#p2=FvCX$qyC&U#Tc?$ld(BXkvB0uJ|c)_(_y4plj+`K7S`a^~uopZt(K4R4v;
z5u!bhOc4C?-kx at a8-xzM-@cD~sn(XO6AK?4IQvOC&^LTDtcm&gei#}xTGt+(EcNO#
z(U`QLMZ<UTs>xzt<+kakQD{<+Uz~}KmrpL{jG58<lT`~74$M)8VWS)^rL5#5^eGen
z*W9(@r$zQj8}R&Nf1I~)U5u0uuZI1JC$zD(NX83DPgrzh|JAYy)mRjYlVY(8j9?ZF
z#BVgcqpVZ{i5ZOCzVnzHcqUX%k at d#E0BOkx2F8zd{CmmA5=Z3scXfJ2a!5euQJ#O|
zF|W5?%x`Lnf=_<h!_w!z=_Os7;gvZ)xgu)ME!{5T*y;MgT^d^`Kof(2aDo+Z;SwB+
zDU#WA+JZ8jD4|Wxd)C;ySxb>qYI!kCq{)xxjP)39jn}y&#}zhGhixai2d$(j;S0x0
zT>l(A&j#EQB3tm*S*6%scm)aq5{mIEgEVkB-9*VOb7rxCr`rdBS&Nb{JBk#I`c8Pj
zG%C!Z&a+s9>_V&_qa_(h at 7sLN5=U2TP8R*m;R)Sbmuf4WPQR;+K;s at y10Vj9N^#*h
zGV{upm2cG!Xs&x{zLGV~<%llH6kvRGD-w>0Z&_?8ae66Os*7M=$UppW+8Jw*au@~8
zuQ1*ecD^aPB_?d^*2a)#_71*D9dZMId*hdAc{3N+cDkLt&GJQ^tNu>5-RM;cKB^g9
z9pbPtW0<j8NlBAh)G+g!0U-P}^M^Bz*P(Z;DN_t<l57%uHA;e5$X;wYqUBpryO;Md
zwP26r{j<qb%@Te&K9BhBCtW#DpV1DHfpy*p_dJ at kvEwf*Yz{0>3>gF at +Fl#saadGY
z at 5!#qum?OVc#abZ`9NA(Q(w7^MST?0^t)5UC}p}wEa)@skjN at C)^36UCjYv5C`rIm
zc2c5KWuD*g_UYsYz~6fVGpq{&ISBwi-cMY~g>id6HJXA?^6b~Rga{u^7jniI;3vwu
z7vUWvgx5GjC5L}u<7?W1(vJ3`IX%?syEQ$&2HJOS2ooRJMEayAAG(Qm at Mh_}_1RUT
zhG6rAs+!K(h|^cKEap6SdXkF_hB!0*l_&M~VIBOwUUv-JKM3q)ak0uOrv=Y!$QeaY
z8bMiU)J?s=<KId8pC(@d7_r5?jBz524_>7b+?O`K=4PC%{!rCylf|6;G~m}R>$|mR
zxkJa5acVN19j8}<-uGe~OJV*L>qh_z^8)?BgHFx}IZK6^>w{~}yH_3o-H{eQON4c6
zCtT*Ui|b>_So)qzA%z6}lUGET|4{yz(Lo+gU#&+dgoSHA+3jYNX)#XjV0k8wp*jKT
zTo3dqve|eFan$UGd>nCd=SbF5#Xg&8v`;1>Y+ua~BW>fB_4?a*Gu%HH{$V-L4X@!v
zCW0}JZ{f|@2j;}**5>|%j4)uKBe&2gfy#Ima at tZ+hPxNc>*`3(j8v424ie2W=B1=-
zRGe2hp_cnzNVdZg_XV_f;Dkoh#DNQo-pyA|QC;9|U9K at IcDr|)a;?$WDB)*bWSLj+
z at chV$_(ibv*XlQ2Uj05a)a<sq^urbTH}_ip5V9jug_L!LbacjTfkL`?Q4*e=Mk3kH
zB at +GcGW}Y0_=%W2m81P3wBmhl5{pp@&*%G3VXkF4>SGp6;vO_))UPopPUqU5V;k{w
z*k3x at Uobvn1Sq7xZpMEw%R2WONQQTdTXUp}QE9D4nJzWu7DIfE$$w({I?)_}B^wj0
zGiP10A<<W^lWG<FiPm?7sxN=7MRF+K*F at Dkj>!e_Zk$OSwv907z_<(RAbxT7 at _QQ1
z>6tL62)QcX&Goq91b<8mQ?0hnUV<Ydx69c4gMn&i70zhf8F6aF=osL+44Nj_+BW?O
zCX`L29*976nkfM(-)A|;lRy7+;I%d!SgMfSnAbV3P>E&rx$|`K?P!z_gD`!6pP$rD
z#HES2Ay)G$+G_IwGPM)Tzw}mw8Pf1-KKZinNc_;+NrF9#@PS{IxmQY6qX~=6lwd#@
ze3LBFBo2B-_3ngUk~w9B;r7(fPYw)G<H`2F2091X0~vD(t?7t<GMk=(A?W3!Ry at 5{
zUJJ(xJ4;Jn0invoU&wC}Jq|prOxnbM#``cdt+ROMpUn44XncK+Z>>_6Jyxo|h$=nb
zy at eOO!~b-vB3-Y43w(v?A##xCJFO~sSxeJS^)Tbcd`=Hpj;AKXY%K~eX0a1_<5w!q
zcvc+=a|~2Xsg}}DDZjxxS&^sGUQg77c9W=odO~&=6{u!^U1%mXt_-A%(<h>r+G+gI
z6AeO2_`VMM>uMPKok!bLiej{4V(Hc9tKEXuhcjg`gS#wgu%K;`&Mhl_`?o|_%7Mqu
zl8UErJZcoLFV0aUTw at wR$A%Mzh at 2!5qyufX2R8pSKc%D4?fn;agOL{q+Xxeh6`Sg{
z4mi_FNUN53?(Pi#$$DaP{j(d!Xg1L#G3_D?H=AqFIV^hrCRUh9+|~1!`jUS({<Yc@
zp6O-puO;48;(IH&^45N$sxhB(y5<+yewmY$*W|xaxF~kQq_O)z%!Ga`6juvu_Sc1D
zl?Df)+!yQD9H-8XF&FR0Evr2xFm2n|`KA!zJ;e0e9rd!WP^PS{5i0>K5b1&UC7z(q
zg4sZQCYu1MM6Gu!7bFVl;nfds%Vqb4PCyUc1lV(H3=hIBSi*LVnSN-iq?3=`DpxBH
zdM~b6YIJ646%>X5Ue<mfx~u5h51$i;!o<q1j}ENuJU?y$NYq7wxe2k%^K;Xg7_&^m
z9TzK~tlbtkc}+$-)p-7hmvCklfNTplTVmRnnBtjS5RT=o>;(E*tbcHAjo1DMbkg!w
z6HPomc<ku3G!Dbef_sk99OY!mG26o*132$KioiL!BnAtn(?_l*n2G*ezL7X1jT&2v
z=<hdc^Y*L+=eo<cioNMg+_w)^@k?O*YlwOrowG1jgnGzHpf00bkGRWzs*XVxy+W|@
zT}3=~p*^nVq?bZoHb0BL;6Cn~+y at ECPBwFz7?tPC%i#@d-&KR+R;M<4_l3hhq{gA8
zghnD at 7bccZe?2@(Dw-@?5nyVo9{5S*O}OrkR7~FDvQ19nTkapPDi(<38pam7I-oaE
zJ4H7MYAtw$&L!WS^LvNZ6Z<{l^E)4d2^G?-N^%h$0&&mq7~#PAO_qp$H}=;J$|+;r
zvae<W-xg4RiX{7GsQ-JR&()@i`}bG&Kk=&UZQbzCP!A;k<kr$YWduv^#G`)d=w`iK
zC8aQIOI`=28OhU6*$)I|`PDV6Udj at QEE@)V(Pwmu^wp;5B_yNU3=a2qC!zM-s5-8H
z^|_*+F~pzcCyyr0D#2XppPS~QcRvj>;VI7ZV`R^P9Vp!M@^OFgdD!%IVGs=Q=B=yj
z&oElk<@7i+j?Y>oWTWmU6 at 3vtO;t9w&6o#ZpHuc+O*v`#&<BQuh}Cen9hgG;dzNP%
z<)no31qI1vX!p!L;aVb{>Hbsdw$P(6-%o5OQJjRczati1WZhh0iO at RJ)$u^VN}nbP
zf_q{b(0ya{TEAiH{)Fut3w_v(c?=u-v-gf~T}tDA)+o04?I%9~2{KIhRMS_+M-&M+
zy|E|VNsO{gmJ(FBb~76d2!O{%r5|Mi*vUliv}3~D$?_swle$_*5>BvK)V6eZFZdMF
z+i^e5uh at aKA;XpBy9e8sj3xwIq{p9IngP};%hde-^%=X~>dPWSjbcUyregiKW^Pe`
ze6^3Ll)9iqY<RGQm at 0lMTMr7IT<l)8FAwL?sn?_`B~+6X|ITJtzvm|}gD|HuX&4e}
z&g=!*!+NUwZZn$GaX^6`bk8wsa~T*UCFetwf83~@3W`oS=049F_m;wQyJ at r@P1 at a$
z<x(gIzQ`@X%OOnE*(6DYs|U0WB}2PKX*pdmW<v3P?>)JhWpYx&CRU-R^`CI+jFBK8
zPes2=Tsui~WvrDymXb3`O2{=4Nwz-QM=Jl?aA({A7mY+|#~E)m@=H0EpRQ{3%dDZZ
zby<Us!Y8LPVV;;Dy@#A^dau(gbLE2NT8{Qks0t<;Q2g6S+P6J&fs7++cj=?wXrKRU
z>+o`z#=QVdSyO#@C+$&yPe$@nOULf=0d#5p!LmiCzW9J>u;7T)2~e?>l2O3<>hHX9
zMVxZq9-iwwl)(238<wNlV-^(-FIhK)zQ8|t9r0zL{fu9jYPO1wOWl)+xC9%rCkmGL
zeotrP{)YWI5K-x^{|%>4txVL8nzt4ZH5p&1u>P)_N;@KL(yokEX8We&?LjI%_Hr at C
z3bCdZcFH|Sn8PE|Xg!C*Pdk;=h)M>pG(_cxoDG8p&-L~l+QIN at MKpV+%SH0u1 at Nzx
zS*y9mZzh;3raAK^6)8R6hQ`hf4aS<j#OhbJhHOYz^rD0xGvQ%X>2w6CWb}Xz^!Z6r
zMk_U8ShdwoUet8Xb?x~IB@%(8R&sJy=_|94P9~tX$Gf2FE0<R>-}8>DhZwpT9amH-
z8+tNb=^ZpOQwFHhvW-cMt*W at RV1m6*c&`-=;vQeE6*h2rPM6zTbc2;Axfa|sTfu6e
z3Fr(FV7psgpgV2BRrYXj_(?|dlRio;HjltxZggme`c17qDLz?IJw;sT?-|l}DKli>
z;7`)U`C7}o!!0?l!;I>kXe5pZJvTduTbab_ at PvDM-e2d+grL7PgnbW7nY#S;PAbJQ
z|Ae@&i70llWZUegF2pa_IDQ|uZr+nPv`R&hx at D89XPYA$gDWnZS*f_SUe#qjTFyLg
z(?t0%fze&(;tST9aoYH_ff>LWTIh4*lgdipd<cVi;G$>|9UXZqDf89p+X}-Iobzhg
zblc!>rA;Gf=%AL8LyhzBl8*#TdzgVfw)+WeX3ayRtH#)O{3<_S<IPR&S7AE5cq_n9
z2gXA5E=@*dhHbuRV`DZz&3yW$R{k_QH<PCkhwDe8pwz?ubQ2!d!~Kl32m8phWB-WW
z+ri6G6MQQ*K5G22GDDTw_N5e5bRzk50Gkyv;TsSK_xdz&1>Nj_qEzV4k?W89&G@>b
zj?Vq_uEh^ggMp6KjSy0FFRG+Vr at C~CZ*L^fKFvPre4P20-EIF%GHGADZ;y=T$HQE9
z?AJ)Z{l5eBcvGr3xdy#`;EEkJ$>lx3%l%J5tn&%??oaQZ#&E;F%OzJYG)@uMRp|3q
z7527EP+kGk<JDF`3|r=RU%5 at 4*oH3U{(-KerY<r)o2u{%TvlYhHF(Ski?;sDZCLyg
z${m%h?#Tuf$uY?DrQ%_mWS}xU>53BMD6Ps-5l^iQw1R|<&sTyT?ZMuvWbx0c13I6z
zv-?n&Fy`z at Jj@fzM*3FHC!JCekgkc9^B5cRGyWz at dc=3P{e3tz7+%58f3>R2lDcka
z5E14^S>pcurD^txXVRm8$8Frl`i70J2&Yyyf?l!1_OgGbRW4>R$JR50uyc&NJYr3z
z8zpE6rkl;A#*>6fu-GeosD$JjW9n#H$B&YksT}0WC64{JT at NvQg&dpOQQAGEImdIM
zZYI7$ysZft+~BK_BVN4-dzPiP>kJRatR<B(L$B%^{&bIKZp0*~DBY5x!JCd&{#rMA
z^u`LewNv7y-?DFHP{~ArZ&fxc(#BrL?(goxJ?7rZo^`i4v;i at m`Dd)(r$DgBhe**b
zC(#}%BLhHR2p+`Q7aA%$rr0TLb6}6QlJ-UXnaxbRg6NK5Hb+;^eh=CwA`{T=MTiUi
z<~Z*JXsSHV)D{$qBC<WQvZ`;=a&^Q07;0z{k)_X3EW-#w%T{@98wkaIKKr2ZYq7vB
z6EA)wa at zv7ojdr~iNU1ASUlY7K|thkOOF^xs4im5-S+jOV+?~mkGg~`3a3C}YW`g4
z_KTDv+~r9ftcc~-50O1pPox?k4DBK@{`0KP{5QC_d7rjH+v|I;bDWRHn1cEE`R5-o
ze*4pitq>x0OFSY^3 at XTTEhWG9XwX88<W>*dO23yn;f;$4*0*^;4mugq?GquPiFaKq
zC~Mor7|}PQ17;htS-!Zwq^E>|oS$YHJ1>4$z>SPK6t<=2KoF|W at 60c1e8KKcGBlX-
zn<}R$-J6px6ME)9ph}~eDz#JaHYhh43Z$bDyeb_h#Tz$9-^k-j0Im5`nT-}TUvsJX
z!M}{BNy9w9?Y?h8h0fajiXA3=8nXVySSNrznx-QccSwb at fThMKH9L4orWBwb;>K9x
z3H|{nKs(m2$-yCN{T_pj1A~)}vRUuWf at IA6&OBQHNRzp<&)kZ%`#aa;X_&tg{yv`D
z*We!H>tj<VFC#|GiYfMQp}qv6ivM0Ts^i9PQr#NZnu|%X1~Fhzh?yVf#JQ1cUGhgq
zZJ$Q!qk5d2*CW2Af3*b&6(Bp>B|0z0!${K2i)S- at m>!bpAJjJ_9SbDfCgy>4jKo`X
ziRSZno1P8}N$$R;ua#qpgXz#eDck)kh#-&$Zc7^Wx&6NyF_S3iS=ZK^`K#Ht+|RDd
zLFl&jt&prC^>~Jefrn>?nK}(|r9xXGT(6Qdf at MRzV;ufkdF3n2-fvuM at eUetApOvg
zq~sr+kbp*jDEZqVeFNo{;x1QO>;&4*=9+lH0OI(tuc2 at 8fPbl~Nqeot%5{nlRce3Q
zG3LG9xS=4#`t>ne at 95?2MPz6DllXk!DrP>R`nCDwN2=QO_*9VgXXB at Vn)T^V+N_3M
zYD_b+o47IqmjkPy9cy!w1R7+o!UQwJq^j3IpH9M${rwKOUnxA>%dxEE{c(urWIGSp
z?Y(6uj-2T=VS*G+f={-O?7X>2Cp(&3a(#LDsIJxpmrL*3&QCP{o@^O#<XI6#B>mfR
zy;dhvJWKT)eeu(xnFYb}HqeTwcev+_wb5HqUqK#|qSPo<?qI at 5q@8;q8T#OdB;YV&
zjj3&1fcl0`_iTPuwZyUiXen at ql6nmvdSlhov4`j42(QmDheJ{_&nl+i-7JBMT=Jw+
zIj^=r2wlDoJ2ZBG^5<Lej4EC;T+_nj{=%Fgg_ChEnVe%mSOiz*Q>5_Fk!cBzdwxvh
zfZHzz_Gcb7;*A~3io=zhArge!`xI at 3+2ShBE63@60%@gpJOEFeEDsA6W`7^O`Y<;O
zNga~MXLF&C=Y9hb->I3#<qA#MsP9|TpP>PXECaa5F8IqQZ<lOr5<45xtwUVX+;^L*
zYF=Ty0 at Z1msdCD6xi%gRr}9=0bl|1VHc6}cx4#f=&~4yR$Lf5x`Dik)#Qck`nkLC|
z*2~-}B7;^~@YaNx?*yh&31XZYomsMxdU4aE#O=pO8^mPE<frJ#VM}WDl;;s86W^Y~
z9puKXL~*)|7 at zH!$`A;3+F9N_8=yp<Uwh&U=<9e=s at Y+mh^*o5L5bKs#oQTb1I|Bw
zG|te;Gxi<8nBaUDpDlhX>{pt!qVIrQB4WvS<)XnApp`bTltHnD->XJyw^i4>_E9N;
z8 at CU$_YQOfs4opXFw+5+E3TGGH$2fP^)?IWuePd5E2|&JEoD<A?syW%{zX*iR+n<@
zeJ9;|M)C=pYU!TdZ(5a&b~<CShwx1+54`?~UtwRR?$hFn7$Dst45&Dv;H4;<f)o3n
ze<vkt5Eo8vaz<wjtZ4?bMpTks)!Kkaids0Fp19!BKL_T>&oxx<Ez(DCT=9E+em|OU
zQ}H^-N~nA2`_kpq>Kp6GOnH`9!E0z68IY%ivwcx3`cOsC$_&b|mo4Tke%aBONxRh&
zyB-eKJMfQ*k(ab3U^YzoB0aBIMj$=9MHk*HlzQ@&ttcsN4HDF)fJ~neY#)H<+L<nd
zAW(Vwb`Ci9y6+71h|^P<`Q?O_8Gs%_I1utc#OBJ8+)nm^lS83z%g3|H&8$@~5h;2Y
zpGNNwrbLs6lIzO~ol-B*1MxSDAi|+9<>M1FaUXee^<5w1QT-A!!8IL*9ecxp(B at _g
zXKvj0b%Azv!6QB)oQI|))YE&OuK>Qc`*4H2xUjwbZwxBg%706pUWq0}>wTXOQgGR%
zvW3-0N$|=#yR%mJ?#E=*K6*F*ba1G>0l2(b$r3gD7V<|O^KIkfBuXqQbP;y!{st9_
zyJ+tiUH!J59MD%q&V+9Q{E+F!7jd5&V=e6TD>t-~>g(JSJE0Ze;WRJ-_5_t at 1|tC2
z*OV!{Ysbv_=j0Fcx2MVc$BV72z%|Un3R^)tc$_QNGzv^_M(QhJcGSU)k+~Y!O7q8>
zrJj=J6*$^!BltJ><C84<%4$A%$$gOq8RSA)5kXQ9iSk at ee(YEGiN$`APUewpz^gaF
z7p8NP=JRtpyiD at V%-V(1yVRQ=Gd+8;!KJ(WuY)^qt^lKkZz^N!6GqWPJC~Fc(ZV=h
zNp+7a6GP$F8gzd)#zw>K&P)@HqUu<@OVacqaR0yBJNIxX(>{(%Qj6pi(YB`1dWAVV
zjA at 22&L-;+B{jwvr(tG{sTm?m=c06Etcod<$~h~9a#$gU4p at h<CCVzt3X$0nt9GyV
z+V^_?*z0=#c%DDzy63(=zu$d7pXWROJ at +*(g^;VtT-#;Vn3?XFUIO#e=`FL~2k2*A
znwN7edz;_ppWj<4>{F+w1z9C2N6s7%ZN71;MMWys!Ck*u_P1tT at eg&5M}Ph-$~l2o
zvAuXuSvmzl>YD9YUS0V-hHy#tT5B%rQ+fRW;nj(RRo^x3;eE7FeRz6Ot*6t0ckBAo
zt)sgV#+&T;<t;lccB{JG6u!8eu#$iJmFVMRhtL&uaLMOoKmO3x#a%Bdt$J#1<Ml4t
zqq6yAO#2Iy=|1^pwCi`b6Z_4*UZ30PmC_qdc#tt_6Es=gF!<notDurJyj9~x9H%9=
z at X)^H#OU(bgYpqgdifm<7V_04UU#l!&X!iSW*(mG7&3a;Mduqi&K1=QJ6(Fo>`#nK
z!I9g|n{yQKiZX)Yhmpekjj=^rN|Y+Fd@|~p|6o{8{B(`wm7}72FCns~zq?x;KQN$Q
zSe&h%`Y?$s()Q!OYz<<KAv`)-;_JB-iD at TDX>zWuoD!z4Yi6!|nVol1?fBmI>9u#?
z7omP{yjC}JXH{+Uq$s*yk33!PQ9gblC-VP)xb{cU%I;)!K6kTlQbGc)9O$-#vxDS_
zqcTI_6knzf4bBT$cwrxJ#$!>abQ%ZZL-P-05TGM>??EAfz67X;Aqh!hS<(UmZ6nw;
z*NAOy)CfA&#20F2Dud_Y#0^4d914UN63ht0 at d(h*eR1OP{4 at dz`HXPr1gQD^f{-1g
zA0U=YHVt9`N5QB_i~+>J2#z*Jn;0AELtH5wh&_b?K^sHRNTm1!jYFYu1}Mnl1vQls
zkML|?Kb#BEdT~whHv%+(!(rhN2rick=VIVYwm$-8Vq$_oq7i5`OiaMS!WkS255@@7
zT4?fTA0jP`$_`|40+|fRd|!$Wb1#Pgh0ZUubS>T-g|)O0BWzKiSS5l-VIfd(Bx0$v
zxDYR%#96Xw6b_T^#$*PYF5JF#Ae+Wzvgu(EOIHkjzVa{7msP*i(})xf%~b3I3qu;i
zkS1<uBu*^G(Ae{<`UU83<s_zWpkMfZDL262P}s%tub{<pJYrtNS7JU}pTDQS&Hpc9
zzSJdOti9~u&yU5Iil7D4LTC(5nAjQWug-j_I6o#kgu*cm459eb5G;m29`R-JANRMg
zYjG^Zu|zE8^3Sa=J<5M&@WuPT(te>SxCkJ*pe|4sAOnD4FkPT7Kn4K8V7fqEfD8bF
z!E}MT02u%TgXscw0Wtsx2Ga%V0%QOX45kaz1;_v(7)%$a3y=XoFqke-7a#+GU@%>v
zE<gqV!C<;TU4RS#g28lwx&Rpf1cT`UbpbK}2nN#y>H=f{5DcaZ)CI@@AQ(&+s0)w*
zKromtP!}KrfM76Ppe{fL0Ks6oKwW?g0D}K9T{2%zde9i+;~iY_ISzA)aeWC1DYhNa
z+|Bm*+cr{w*LIcrW1`~8MjJovbNsqZ{A=IX9lhutyRTnOLnd~`jm}J&Co+eFRs{`0
zb=}iW!c{W!3Un at dJ3LnHJp6ru><uW~r`4L+X|N(M-qWIM)6+V~f&JPeyVWo?w#Mh6
zD%boc;HRr*LPxfYlxo$i8 at 9^WFX%ZsQYCU|ziI4D94<0u2~39Dg}vB!>XtcqgHj5O
z1*^^p*139G+Z1+RF6j$@Z<NqKdU*nNHYxvTTvnk?W!C!23Zu$+l;j*zL+!B7DYt#6
zx(3%bXlIixJWNm5ydT}~)BvOC9U<dX12HF}(!6=8S?RLm)R?mbr=D%jd134B-#RGe
zg^C at PKT&KoS88bIb0DG``-YIOWpdkR>aAun?ZeF|tVX<iHLgU*UCCFK3DuF?1`FHS
zam=#1?4sX at r%;%~>T7E~(`J}m!PUHi(bLVYHpHmNNw4(m+GU$~y|xo`?53n(s}vEo
zYx%^5-q8TFsG&U&4Th$zV~1sK><bP2+T&Yjg*F0;%)VGF_I8z<mE(F%Pa>$nYn%$#
zNFLF{^d>kqmSK6i>=H&hc3U*H{a%H#0{X%xix7vT<beCNO0QiG6mp`g51#Q~hMk_+
zh&K&5Re(S5*!=F-=$4vy(~^61eH9dm>xps#DQ96sK_^6JHe08wEyc^i2C<?4S$y})
zl%25^+Q at z6?p)N9p|Rpz(z3_WS<eoYj_JZ7$r>7d^jVC%v8nX^$$MA&8Z_^|9t;u&
zpOun~U#C^Jx5~%ydY7!Nx?<JU#~$I~ZxiuKQR(iEN2E9S(3`)BkX*Bz1q<b0Ro*f<
z9I92H8^Gq3s>TjxiZa%w1{3A%W3IGL?QX<(kI55a;sa=T>GVUx8p&{N6NB<|O~VHE
zn~7UDAGEwtlHK)l%Am`QxO^#R`QF`Tb|p#GF5g`qY<G%&bv=_FAtUhs`|aG=YRRm=
zB7NEKQ&n^xTBe;hFTm_J%jD}Po;X&d;M_2DJ2G?{A_42cmZiPA$aZpytc)AdncJH2
zVR!@4r05q?c7nw&$F|k<kQ)1GsHc?TQK3*l`Ij~Pl;Y8x(mH-<IjPjjAuPj_;{wAu
zr^1Yjy;N!ZypNQ`xB;~{C)0h at vtUGZPXX)AI9%1<P9i^D#YS6t=g%iP|Kom(M`I0H
z+ZUrdICFwR-vY+e{egz_h1knK<v?W4uj+g<<r(cGn%)rS6y2C6o1+-_DYh*lFi{}q
zS^TJ;q|3K1e$%(o$Y1E*a*MhK=~e4ytvX<@lkN<iiXvgp+>XTO9gh=9nUbHHm3e-v
z-(R7mIdOaQIRAz1OoX8vcWl?QsG47o<Tk5uR!>zv`t6Ry!HNp+phnk6J~5%LO^CC0
z7i$r2)^U`PidPeQBG}x95wdK3Bl*%s|1)pr5`tMXhQrc_yRIszT*xQodF#+ZWH!$T
z@>BZq-Um%J@;(f&jOicy=n+#?_PWJdvy~ov-RNURprXHv3boVas%CI~&!^WD<OhVG
b&>~4K#J!RyhDhQ39}w7CZ6jt|c*p($EuLSu

literal 0
HcmV?d00001

diff --git a/wui/src/public/javascripts/jquery.jgrowl.js b/wui/src/public/javascripts/jquery.jgrowl.js
new file mode 100644
index 0000000..b803de8
--- /dev/null
+++ b/wui/src/public/javascripts/jquery.jgrowl.js
@@ -0,0 +1,204 @@
+/**
+ * jGrowl 1.1.0
+ *
+ * Dual licensed under the MIT (http://www.opensource.org/licenses/mit-license.php)
+ * and GPL (http://www.opensource.org/licenses/gpl-license.php) licenses.
+ *
+ * Written by Stan Lemon <stanlemon at mac.com>
+ * Last updated: 2008.06.13
+ *
+ * jGrowl is a jQuery plugin implementing unobtrusive userland notifications.  These 
+ * notifications function similarly to the Growl Framework available for
+ * Mac OS X (http://growl.info).
+ *
+ * Changes in 1.1.0
+ * - Multiple container and instances.
+ * - Standard $.jGrowl() now wraps $.fn.jGrowl() by first establishing a generic jGrowl container.
+ * - Instance methods of a jGrowl container can be called by $.fn.jGrowl(methodName)
+ * - Added glue preferenced, which allows notifications to be inserted before or after nodes in the container
+ * - Added new log callback which is called before anything is done for the notification
+ * - Corner's attribute are now applied on an individual notification basis.
+ *
+ * Changes in 1.0.4
+ * - Various CSS fixes so that jGrowl renders correctly in IE6.
+ *
+ * Changes in 1.0.3
+ * - Fixed bug with options persisting across notifications
+ * - Fixed theme application bug
+ * - Simplified some selectors and manipulations.
+ * - Added beforeOpen and beforeClose callbacks
+ * - Reorganized some lines of code to be more readable
+ * - Removed unnecessary this.defaults context
+ * - If corners plugin is present, it's now customizable.
+ * - Customizable open animation.
+ * - Customizable close animation.
+ * - Customizable animation easing.
+ * - Added customizable positioning (top-left, top-right, bottom-left, bottom-right, center)
+ *
+ * Changes in 1.0.2
+ * - All CSS styling is now external.
+ * - Added a theme parameter which specifies a secondary class for styling, such
+ *   that notifications can be customized in appearance on a per message basis.
+ * - Notification life span is now customizable on a per message basis.
+ * - Added the ability to disable the global closer, enabled by default.
+ * - Added callbacks for when a notification is opened or closed.
+ * - Added callback for the global closer.
+ * - Customizable animation speed.
+ * - jGrowl now set itself up and tears itself down.
+ *
+ * Changes in 1.0.1:
+ * - Removed dependency on metadata plugin in favor of .data()
+ * - Namespaced all events
+ *
+ * @todo	Group by header.
+ */
+(function($) {
+
+	/** jGrowl Wrapper - Establish a base jGrowl Container for compatibility with older releases. **/
+	$.jGrowl = function( m , o ) {
+		// To maintain compatibility with older version that only supported one instance we'll create the base container.
+		if ( $('#jGrowl').size() == 0 ) $('<div id="jGrowl"></div>').addClass($.jGrowl.defaults.position).appendTo('body');
+		// Create a notification on the container.
+		$('#jGrowl').jGrowl(m,o);
+	};
+
+
+	/** Raise jGrowl Notification on a jGrowl Container **/
+	$.fn.jGrowl = function( m , o ) {
+		if ( $.isFunction(this.each) ) {
+			var args = arguments;
+
+			return this.each(function() {
+				var self = this;
+
+				/** Create a jGrowl Instance on the Container if it does not exist **/
+				if ( $(this).data('jGrowl.instance') == undefined ) {
+					$(this).data('jGrowl.instance', new $.fn.jGrowl());
+					$(this).data('jGrowl.instance').startup( this );
+				}
+
+				/** Optionally call jGrowl instance methods, or just raise a normal notification **/
+				if ( $.isFunction($(this).data('jGrowl.instance')[m]) ) {
+					$(this).data('jGrowl.instance')[m].apply( $(this).data('jGrowl.instance') , $.makeArray(args).slice(1) );
+				} else {
+					$(this).data('jGrowl.instance').notification( m , o );
+				}
+			});
+		};
+	};
+
+	$.extend( $.fn.jGrowl.prototype , {
+
+		/** Default JGrowl Settings **/
+		defaults: {
+			header: 		'',
+			sticky: 		false,
+			position: 		'center', 
+			glue: 			'after',
+			theme: 			'default',
+			corners: 		'10px',
+			check: 			500,
+			life: 			10000,
+			speed: 			'normal',
+			easing: 		'swing',
+			closer: 		true,
+			log: 			function(e,m,o) {},
+			beforeOpen: 	function(e,m,o) {},
+			open: 			function(e,m,o) {},
+			beforeClose: 	function(e,m,o) {},
+			close: 			function(e,m,o) {},
+			animateOpen: 	{
+				opacity: 	'show'
+			},
+			animateClose: 	{
+				opacity: 	'hide'
+			}
+		},
+		
+		/** jGrowl Container Node **/
+		element: 	null,
+	
+		/** Interval Function **/
+		interval:   null,
+		
+		/** Create a Notification **/
+		notification: 	function( message , o ) {
+			var self = this;
+			var o = $.extend({}, this.defaults, o);
+
+			o.log.apply( this.element , [this.element,message,o] );
+
+			var notification = $('<div class="jGrowl-notification"><div class="close">×</div><div class="header">' + o.header + '</div><div class="message">' + message + '</div></div>')
+				.data("jGrowl", o).addClass(o.theme).children('div.close').bind("click.jGrowl", function() {
+					$(this).unbind('click.jGrowl').parent().trigger('jGrowl.beforeClose').animate(o.animateClose, o.speed, o.easing, function() {
+						$(this).trigger('jGrowl.close').remove();
+					});
+				}).parent();
+				
+			( o.glue == 'after' ) ? $('div.jGrowl-notification:last', this.element).after(notification) : $('div.jGrowl-notification:first', this.element).before(notification);
+
+			/** Notification Actions **/
+			$(notification).bind("mouseover.jGrowl", function() {
+				$(this).data("jGrowl").pause = true;
+			}).bind("mouseout.jGrowl", function() {
+				$(this).data("jGrowl").pause = false;
+			}).bind('jGrowl.beforeOpen', function() {
+				o.beforeOpen.apply( self.element , [self.element,message,o] );
+			}).bind('jGrowl.open', function() {
+				o.open.apply( self.element , [self.element,message,o] );
+			}).bind('jGrowl.beforeClose', function() {
+				o.beforeClose.apply( self.element , [self.element,message,o] );
+			}).bind('jGrowl.close', function() {
+				o.close.apply( self.element , [self.element,message,o] );
+			}).trigger('jGrowl.beforeOpen').animate(o.animateOpen, o.speed, o.easing, function() {
+				$(this).data("jGrowl").created = new Date();
+			}).trigger('jGrowl.open');
+		
+			/** Optional Corners Plugin **/
+			if ( $.fn.corner != undefined ) $(notification).corner( o.corners );
+
+			/** Add a Global Closer if more than one notification exists **/
+			if ( $('div.jGrowl-notification:parent', this.element).size() > 1 && $('div.jGrowl-closer', this.element).size() == 0 && this.defaults.closer != false ) {
+				$('<div class="jGrowl-closer">[ close all ]</div>').addClass(this.defaults.theme).appendTo(this.element).animate(this.defaults.animateOpen, this.defaults.speed, this.defaults.easing).bind("click.jGrowl", function() {
+					$(this).siblings().children('div.close').trigger("click.jGrowl");
+
+					if ( $.isFunction( self.defaults.closer ) ) self.defaults.closer.apply( $(this).parent()[0] , [$(this).parent()[0]] );
+				});
+			};
+		},
+
+		/** Update the jGrowl Container, removing old jGrowl notifications **/
+		update:	 function() {
+			$(this.element).find('div.jGrowl-notification:parent').each( function() {
+				if ( $(this).data("jGrowl") != undefined && $(this).data("jGrowl").created != undefined && ($(this).data("jGrowl").created.getTime() + $(this).data("jGrowl").life)  < (new Date()).getTime() && $(this).data("jGrowl").sticky != true && 
+					 ($(this).data("jGrowl").pause == undefined || $(this).data("jGrowl").pause != true) ) {
+					$(this).children('div.close').trigger('click.jGrowl');
+				}
+			});
+
+			if ( $(this.element).find('div.jGrowl-notification:parent').size() < 2 ) {
+				$(this.element).find('div.jGrowl-closer').animate(this.defaults.animateClose, this.defaults.speed, this.defaults.easing, function() {
+					$(this).remove();
+				});
+			};
+		},
+
+		/** Setup the jGrowl Notification Container **/
+		startup:	function(e) {
+			this.element = $(e).addClass('jGrowl').append('<div class="jGrowl-notification"></div>');
+			this.interval = setInterval( function() { jQuery(e).data('jGrowl.instance').update(); }, this.defaults.check);
+			
+			if ($.browser.msie && parseInt($.browser.version) < 7) $(this.element).addClass('ie6');
+		},
+
+		/** Shutdown jGrowl, removing it and clearing the interval **/
+		shutdown:   function() {
+			$(this.element).removeClass('jGrowl').find('div.jGrowl-notification').remove();
+			clearInterval( this.interval );
+		}
+	});
+	
+	/** Reference the Defaults Object for compatibility with older versions of jGrowl **/
+	$.jGrowl.defaults = $.fn.jGrowl.prototype.defaults;
+
+})(jQuery);
\ No newline at end of file
diff --git a/wui/src/public/javascripts/ovirt.js b/wui/src/public/javascripts/ovirt.js
index e0aa222..829738f 100644
--- a/wui/src/public/javascripts/ovirt.js
+++ b/wui/src/public/javascripts/ovirt.js
@@ -21,7 +21,7 @@ function get_selected_checkboxes(formid)
 function validate_selected(selected_array, name)
 {
   if (selected_array.length == 0) {
-    alert("Please select at least one " + name + "  to continue")
+    $.jGrowl("Please select at least one " + name + "  to continue")
     return false
   } else {
     return true
@@ -43,7 +43,7 @@ function add_hosts(url)
 		  $('.tab_nav li.current a').click()
                 }
 		if (data.alert) {
-		  alert(data.alert);
+		  $.jGrowl(data.alert);
                 }
                }, 'json');
     }
@@ -63,7 +63,7 @@ function add_storage(url)
 		  $('.tab_nav li.current a').click()
                 }
 		if (data.alert) {
-		  alert(data.alert);
+		  $.jGrowl(data.alert);
                 }
                }, 'json');
     }
@@ -86,7 +86,7 @@ function ajax_validation(response, status)
       }
     }
     if (response.alert) {
-      alert(response.alert)
+      $.jGrowl(response.alert)
     }
   }
 }
diff --git a/wui/src/public/stylesheets/jquery.jgrowl.css b/wui/src/public/stylesheets/jquery.jgrowl.css
new file mode 100644
index 0000000..7f558f1
--- /dev/null
+++ b/wui/src/public/stylesheets/jquery.jgrowl.css
@@ -0,0 +1,125 @@
+
+div.jGrowl {
+	padding: 			10px;
+	z-index: 			9999;
+}
+
+/** Special IE6 Style Positioning **/
+div.ie6 {
+	position: 			absolute;
+}
+
+div.ie6.top-right {
+	right: 				auto;
+	bottom: 			auto;
+	left: 				expression( ( 0 - jGrowl.offsetWidth + ( document.documentElement.clientWidth ? document.documentElement.clientWidth : document.body.clientWidth ) + ( ignoreMe2 = document.documentElement.scrollLeft ? document.documentElement.scrollLeft : document.body.scrollLeft ) ) + 'px' );
+  	top: 				expression( ( 0 + ( ignoreMe = document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop ) ) + 'px' );
+}
+
+div.ie6.top-left {
+	left: 				expression( ( 0 + ( ignoreMe2 = document.documentElement.scrollLeft ? document.documentElement.scrollLeft : document.body.scrollLeft ) ) + 'px' );
+	top: 				expression( ( 0 + ( ignoreMe = document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop ) ) + 'px' );
+}
+
+div.ie6.bottom-right {
+	left: 				expression( ( 0 - jGrowl.offsetWidth + ( document.documentElement.clientWidth ? document.documentElement.clientWidth : document.body.clientWidth ) + ( ignoreMe2 = document.documentElement.scrollLeft ? document.documentElement.scrollLeft : document.body.scrollLeft ) ) + 'px' );
+	top: 				expression( ( 0 - jGrowl.offsetHeight + ( document.documentElement.clientHeight ? document.documentElement.clientHeight : document.body.clientHeight ) + ( ignoreMe = document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop ) ) + 'px' );
+}
+
+div.ie6.bottom-left {
+	left: 				expression( ( 0 + ( ignoreMe2 = document.documentElement.scrollLeft ? document.documentElement.scrollLeft : document.body.scrollLeft ) ) + 'px' );
+	top: 				expression( ( 0 - jGrowl.offsetHeight + ( document.documentElement.clientHeight ? document.documentElement.clientHeight : document.body.clientHeight ) + ( ignoreMe = document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop ) ) + 'px' );
+}
+
+div.id6.center {
+	left: 				expression( ( 0 + ( ignoreMe2 = document.documentElement.scrollLeft ? document.documentElement.scrollLeft : document.body.scrollLeft ) ) + 'px' );
+	top: 				expression( ( 0 + ( ignoreMe = document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop ) ) + 'px' );
+	width: 				100%;
+}
+
+/** Normal Style Positions **/
+body > div.jGrowl {
+	position:			fixed;
+}
+
+body > div.jGrowl.top-left {
+	left: 				0px;
+	top: 				0px;
+}
+
+body > div.jGrowl.top-right {
+	right: 				0px;
+	top: 				0px;
+}
+
+body > div.jGrowl.bottom-left {
+	left: 				0px;
+	bottom:				0px;
+}
+
+body > div.jGrowl.bottom-right {
+	right: 				0px;
+	bottom: 			0px;
+}
+
+body > div.jGrowl.center {
+	top: 				0px;
+	width: 				50%;
+	left: 				25%;
+}
+
+/** Cross Browser Styling **/
+div.center div.jGrowl-notification, div.center div.jGrowl-closer {
+	margin-left: 		auto;
+	margin-right: 		auto;
+}
+
+div.jGrowl div.jGrowl-notification, div.jGrowl div.jGrowl-closer {
+	background-color: 		#FFFFCC;
+	background-image: url(../images/icon_conf_message.png);
+	background-repeat: no-repeat;
+	color: 					 #333333;
+	opacity: 				.95;
+	filter: 				alpha(opacity = 85);
+	zoom: 					1;
+	width: 					380px;
+	padding: 				10px 10px 10px 40px;
+	margin-top: 			5px;
+	margin-bottom: 			5px;
+	font-family: 			Tahoma, Arial, Helvetica, sans-serif;
+	font-size: 				12px;
+	text-align: 			left;
+	display: 				none;
+	-moz-border-radius: 	5px;
+	-webkit-border-radius:	5px;
+	border:#E7A543 solid 1px;
+}
+
+div.jGrowl div.jGrowl-notification {
+	min-height: 				18px;
+	
+}
+
+div.jGrowl div.jGrowl-notification div.header {
+	font-weight: 			bold;
+	font-size:				10px;
+}
+
+div.jGrowl div.jGrowl-notification div.close {
+	float: 					right;
+	font-weight: 			bold;
+	font-size: 				12px;
+	cursor:					pointer;
+	padding:	            0 0 10px 12px;
+}
+
+div.jGrowl div.jGrowl-closer {
+	height: 				15px;
+	padding-top: 			4px;
+	padding-bottom: 		4px;
+	cursor: 				pointer;
+	font-size:				11px;
+	font-weight: 			bold;
+	text-align: 			center;
+	background-image:none;
+}
-- 
1.5.5.1




More information about the ovirt-devel mailing list