From 718b13e6c100db31dd5a7e6294ee22cf05671e1c Mon Sep 17 00:00:00 2001 From: cxt Date: Wed, 3 Aug 2016 11:12:55 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E7=89=88=E9=A2=98=E5=BA=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/users_controller.rb | 76 +++++----- .../layouts/_show_messages_list.html.erb | 4 +- app/views/layouts/static_base.html.erb | 4 +- .../users/_homework_post_notice.html.erb | 25 ++-- .../_homework_repository_detail.html.erb | 73 +++------- .../users/_homework_repository_list.html.erb | 92 +++++++----- .../_homework_repository_search.html.erb | 20 ++- .../users/_send_homework_to_course.html.erb | 53 +++++-- .../_send_homework_to_course_form.html.erb | 32 ++--- app/views/users/choose_user_course.js.erb | 27 ++-- .../users/send_homework_to_course.js.erb | 11 +- app/views/users/show_homework_detail.js.erb | 3 +- app/views/users/user_homework_type.js.erb | 3 +- app/views/users/user_homeworks.html.erb | 136 ++++++++---------- app/views/users/user_search_homeworks.js.erb | 2 +- public/images/hw/icons_hw.png | Bin 0 -> 25185 bytes public/stylesheets/css/common.css | 2 + public/stylesheets/css/popup.css | 1 + public/stylesheets/sy_public.css | 54 +++++++ public/stylesheets/syllabus.css | 34 +++++ 20 files changed, 371 insertions(+), 281 deletions(-) create mode 100644 public/images/hw/icons_hw.png diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb index 2f1d6a4db..61f62480e 100644 --- a/app/controllers/users_controller.rb +++ b/app/controllers/users_controller.rb @@ -592,23 +592,25 @@ class UsersController < ApplicationController #用户作业列表 def user_homeworks - @order,@b_sort = params[:order] || "created_at",params[:sort] || "desc" + @order,@b_sort = params[:order] || "publish_time",params[:sort] || "desc" @user = User.current @r_sort = @b_sort == "desc" ? "asc" : "desc" if(params[:type].blank? || params[:type] == "1") #我的题库 - @homeworks = HomeworkCommon.where("user_id = #{@user.id} and publish_time <= '#{Date.today}'").order("#{@order} #{@b_sort}") - elsif params[:type] == "2" #题库 + courses = @user.courses.where("is_delete = 1") + course_ids = courses.empty? ? "(-1)" : "(" + courses.map{|course| course.id}.join(",") + ")" + @homeworks = HomeworkCommon.where("user_id = #{@user.id} and course_id not in #{course_ids}").order("#{@order} #{@b_sort}") + elsif params[:type] == "2" #公共题库 visible_course = Course.where("is_delete = 0") visible_course_ids = visible_course.empty? ? "(-1)" : "(" + visible_course.map{|course| course.id}.join(",") + ")" @homeworks = HomeworkCommon.where("course_id in #{visible_course_ids} and publish_time <= '#{Date.today}'").order("#{@order} #{@b_sort}") end @type = params[:type] - @limit = 25 + @limit = 10 @is_remote = true @hw_count = @homeworks.count @hw_pages = Paginator.new @hw_count, @limit, params['page'] || 1 @offset ||= @hw_pages.offset - @homeworks = paginateHelper @homeworks,25 + @homeworks = paginateHelper @homeworks,10 respond_to do |format| format.js format.html {render :layout => 'static_base'} @@ -641,15 +643,15 @@ class UsersController < ApplicationController end def choose_user_course - homework = HomeworkCommon.find params[:send_id].to_i - if homework.user != User.current && homework.course.is_public == 0 && !User.current.allowed_to?(:as_teacher,homework.course) - ah = ApplyHomework.where("user_id = ? and homework_common_id = ?", User.current.id, params[:send_id].to_i) - if ah.empty? - @status = 2 - elsif ah.first.status != 2 - @status = ah.first.status - end - end + homework = HomeworkCommon.find params[:homework].to_i + # if homework.user != User.current && homework.course.is_public == 0 && !User.current.allowed_to?(:as_teacher,homework.course) + # ah = ApplyHomework.where("user_id = ? and homework_common_id = ?", User.current.id, params[:send_id].to_i) + # if ah.empty? + # @status = 2 + # elsif ah.first.status != 2 + # @status = ah.first.status + # end + # end if !params[:search].nil? search = "%#{params[:search].to_s.strip.downcase}%" @course = @user.courses.where("is_delete = 0 and #{Course.table_name}.id != #{homework.course_id} and (#{Course.table_name}.id = #{params[:search].to_i } or #{Course.table_name}.name like :p)",:p=>search).select { |course| @user.allowed_to?(:as_teacher,course)} @@ -658,7 +660,7 @@ class UsersController < ApplicationController end @search = params[:search] #这里仅仅是传递需要发送的资源id - @send_id = params[:send_id] + @send_id = params[:homework] respond_to do |format| format.js end @@ -751,30 +753,26 @@ class UsersController < ApplicationController end def user_homework_type - @order,@b_sort = params[:order] || "created_at",params[:sort] || "desc" + @order,@b_sort = params[:order] || "publish_time",params[:sort] || "desc" @r_sort = @b_sort == "desc" ? "asc" : "desc" @user = User.current if(params[:type].blank? || params[:type] == "1") #我的题库 courses = @user.courses.where("is_delete = 1") course_ids = courses.empty? ? "(-1)" : "(" + courses.map{|course| course.id}.join(",") + ")" - @homeworks = HomeworkCommon.where("user_id = #{@user.id} and publish_time <= '#{Date.today}' and course_id not in #{course_ids}").order("#{@order} #{@b_sort}") - elsif params[:type] == "2" #题库 - if params[:is_import].to_i == 1 - visible_course = Course.where("is_public = 1 && is_delete = 0") - elsif params[:is_import].to_i == 0 - visible_course = Course.where("is_delete = 0") - end + @homeworks = HomeworkCommon.where("user_id = #{@user.id} and course_id not in #{course_ids}").order("#{@order} #{@b_sort}") + elsif params[:type] == "2" #公共题库 + visible_course = Course.where("is_public = 1 && is_delete = 0") visible_course_ids = visible_course.empty? ? "(-1)" : "(" + visible_course.map{|course| course.id}.join(",") + ")" @homeworks = HomeworkCommon.where("course_id in #{visible_course_ids} and publish_time <= '#{Date.today}'").order("#{@order} #{@b_sort}") - elsif params[:type] == "3" #申请题库 - none_visible_course = Course.where("is_delete = 1") - none_visible_course_ids = none_visible_course.empty? ? "(-1)" : "(" + none_visible_course.map{|course| course.id}.join(",") + ")" - #apply_homeworks = ApplyHomework.where("user_id = ?",@user.id).order('created_at desc') - #homework_ids = apply_homeworks.empty? ? "(-1)" : "(" + apply_homeworks.map{|ah| ah.homework_common_id}.join(",") + ")" - #@homeworks = HomeworkCommon.where("id in #{homework_ids} and course_id not in #{none_visible_course_ids}") - - sql = "SELECT homework_commons.* FROM homework_commons INNER JOIN apply_homeworks as ah ON homework_commons.id = ah.homework_common_id where ah.user_id = #{@user.id} and homework_commons.course_id not in #{none_visible_course_ids} order by ah.created_at desc" - @homeworks = HomeworkCommon.find_by_sql(sql) + # elsif params[:type] == "3" #申请题库 + # none_visible_course = Course.where("is_delete = 1") + # none_visible_course_ids = none_visible_course.empty? ? "(-1)" : "(" + none_visible_course.map{|course| course.id}.join(",") + ")" + # #apply_homeworks = ApplyHomework.where("user_id = ?",@user.id).order('created_at desc') + # #homework_ids = apply_homeworks.empty? ? "(-1)" : "(" + apply_homeworks.map{|ah| ah.homework_common_id}.join(",") + ")" + # #@homeworks = HomeworkCommon.where("id in #{homework_ids} and course_id not in #{none_visible_course_ids}") + # + # sql = "SELECT homework_commons.* FROM homework_commons INNER JOIN apply_homeworks as ah ON homework_commons.id = ah.homework_common_id where ah.user_id = #{@user.id} and homework_commons.course_id not in #{none_visible_course_ids} order by ah.created_at desc" + # @homeworks = HomeworkCommon.find_by_sql(sql) end if params[:property] all_homework_ids = @homeworks.empty? ? "(-1)" : "(" + @homeworks.map{|h| h.id}.join(",") + ")" @@ -792,7 +790,7 @@ class UsersController < ApplicationController @type = params[:type] @property = params[:property] @is_import = params[:is_import] - @limit = params[:is_import].to_i == 1 ? 15 : 25 + @limit = params[:is_import].to_i == 1 ? 15 : 10 @is_remote = true @hw_count = @homeworks.count @hw_pages = Paginator.new @hw_count, @limit, params['page'] || 1 @@ -827,11 +825,11 @@ class UsersController < ApplicationController #用户主页过滤作业 def user_search_homeworks - @order,@b_sort = params[:order] || "created_at",params[:sort] || "desc" + @order,@b_sort = params[:order] || "publish_time",params[:sort] || "desc" @r_sort = @b_sort == "desc" ? "asc" : "desc" @user = User.current search = params[:name].to_s.strip.downcase - type_ids = params[:property]=="" || params[:property].nil? ? "(1, 2, 3)" : "(" + params[:property] + ")" + type_ids = (params[:property]=="" || params[:property].nil? || params[:property]=="0") ? "(1, 2, 3)" : "(" + params[:property] + ")" if(params[:type].blank? || params[:type] == "1") #我的题库 courses = @user.courses.where("is_delete = 1") course_ids = courses.empty? ? "(-1)" : "(" + courses.map{|course| course.id}.join(",") + ")" @@ -844,11 +842,7 @@ class UsersController < ApplicationController @homeworks = HomeworkCommon.where("user_id = #{@user.id} and course_id not in #{course_ids} and publish_time <= '#{Date.today}' and (name like '%#{search}%') and homework_type in #{type_ids}").order("#{@order} #{@b_sort}") end elsif params[:type] == "2" #题库 - if params[:is_import].to_i == 1 - visible_course = Course.where("is_public = 1 && is_delete = 0") - elsif params[:is_import].to_i == 0 - visible_course = Course.where("is_delete = 0") - end + visible_course = Course.where("is_public = 1 && is_delete = 0") visible_course_ids = visible_course.empty? ? "(-1)" : "(" + visible_course.map{|course| course.id}.join(",") + ")" all_homeworks = HomeworkCommon.where("course_id in #{visible_course_ids} and publish_time <= '#{Date.today}'") all_user_ids = all_homeworks.map{|hw| hw.user_id} @@ -886,7 +880,7 @@ class UsersController < ApplicationController end =end @type = params[:type] - @limit = params[:is_import].to_i == 1 ? 15 : 25 + @limit = params[:is_import].to_i == 1 ? 15 : 10 @is_remote = true @hw_count = @homeworks.count @hw_pages = Paginator.new @hw_count, @limit, params['page'] || 1 diff --git a/app/views/layouts/_show_messages_list.html.erb b/app/views/layouts/_show_messages_list.html.erb index 0829b9c42..66151f650 100644 --- a/app/views/layouts/_show_messages_list.html.erb +++ b/app/views/layouts/_show_messages_list.html.erb @@ -72,10 +72,10 @@ <% elsif ma.course_message_type == "Course" %>
  • 系统提示 您成功创建了班级:班级名称:<%=ma.course_message.name %>
  • <% elsif ma.course_message_type == "JoinCourseRequest" %> - <% content = User.find(ma.course_message_id).name+"申请成为班级\""+"#{Course.find(ma.course_id).name}"+"\"的"+"#{ma.content == '9' ? "教师" : "教辅"}" %> + <% content = User.find(ma.course_message_id).name+"申请成为班级\""+"#{Course.find(ma.course_id).name}"+"\"的"+"#{ma.content && ma.content.include?('9') ? "教师" : "教辅"}" %>
  • 系统提示 您有了新的班级成员申请:<%=content %>
  • <% elsif ma.course_message_type == "CourseRequestDealResult" %> - <% content = ma.status == 1 ? '您申请成为班级"'+Course.find(ma.course_id).name+'"的'+(ma.content == '9' ? '老师' : '教辅')+'申请已通过' : '您申请成为班级"'+Course.find(ma.course_id).name+'"的'+(ma.content == '9' ? '老师' : '教辅')+'的申请被拒绝' %> + <% content = ma.status == 1 ? '您申请成为班级"'+Course.find(ma.course_id).name+'"的'+(ma.content == '9' ? '老师' : '教辅')+'申请已通过' : '您申请成为班级"'+Course.find(ma.course_id).name+'"的'+(ma.content && ma.content.include?('9') ? '教师' : '教辅')+'的申请被拒绝' %>
  • 系统提示 班级申请进度反馈:<%=content %>
  • <% elsif ma.course_message_type == "JoinCourse" and ma.status == 0 %>
  • <%=User.find(ma.course_message_id).show_name %> 将您加入了班级:<%=ma.course.name %>
  • diff --git a/app/views/layouts/static_base.html.erb b/app/views/layouts/static_base.html.erb index c7cb37be5..0dc3b93d3 100644 --- a/app/views/layouts/static_base.html.erb +++ b/app/views/layouts/static_base.html.erb @@ -7,7 +7,7 @@ <%= csrf_meta_tag %> <%= favicon %> - <%= stylesheet_link_tag 'jquery/jquery-ui-1.9.2', 'application', 'nyan','prettify', :media => 'all' %> + <%= stylesheet_link_tag 'jquery/jquery-ui-1.9.2', 'application', 'nyan','prettify','syllabus','sy_public', :media => 'all' %> <%= stylesheet_link_tag 'rtl', :media => 'all' if l(:direction) == 'rtl' %> <%= javascript_heads %> <%= javascript_include_tag "jquery.leanModal.min",'prettify' %> @@ -16,7 +16,7 @@ <%= call_hook :view_layouts_base_html_head %> <%= yield :header_tags -%> - <%= stylesheet_link_tag 'css/common','css/structure','css/public', :media => 'all'%> + <%= stylesheet_link_tag 'css/common','css/structure','css/public','css/popup', :media => 'all'%> -
    -
    -
    -
      -
    • - 我的题库 -
    • -
    • - 题库 -
    • -
    • - 申请题库 -
    • -
    •  
    • -
    • - -
    • -
      +
      + +
      +
        +
      • + -
        -
        - <%=render :partial=>'homework_repository_search', :locals=>{:type => @type,:is_import => 0,:property => nil} %> -
        -
        -
        - <%=render :partial => 'homework_repository_list', :locals => {:homeworks => @homeworks,:type=>@type,:is_import => 0,:property => @property,:search=>''} %> -
        -
        - <%=render :partial => 'homework_repository_detail', :locals => {:homework => nil} %> -
        -
        -
        -
          - <%= pagination_links_full @hw_pages, @hw_count, :per_page_links => false, :remote => @is_remote, :flag => true%> -
        -
        -
        - 发送至 -
        - -
      -
      + +
    +
    +
    +
    +
    + <%=render :partial=>'homework_repository_search', :locals=>{:type => '1',:is_import => 0,:property => nil,:order => @order, :b_sort => @b_sort, :search => ''} %> +
    + +
    + <%=render :partial => 'homework_repository_list', :locals => {:homeworks => @homeworks,:type=>'1',:is_import => 0,:property => @property,:search=>''} %> +
    +
    +
    +
      + <%= pagination_links_full @hw_pages, @hw_count, :per_page_links => false, :remote => @is_remote, :flag => true%> +
    +
    \ No newline at end of file diff --git a/app/views/users/user_search_homeworks.js.erb b/app/views/users/user_search_homeworks.js.erb index 29d490960..4c8e640c3 100644 --- a/app/views/users/user_search_homeworks.js.erb +++ b/app/views/users/user_search_homeworks.js.erb @@ -5,5 +5,5 @@ $("#homework_detail_information").html("<%=escape_javascript(render :partial => <% else %> $("#homework_repository_list").html('<%= escape_javascript(render :partial => 'users/homework_repository_list', :locals => {:homeworks => @homeworks,:sort => @order,:b_sort => @b_sort,:type=>@type,:is_import => @is_import,:property => @property,:search=>@search})%>'); $("#homework_pository_ref_pages").html('<%= pagination_links_full @hw_pages, @hw_count, :per_page_links => false, :remote => @is_remote, :flag => true %>'); -$("#homework_repository_detail").html("<%=escape_javascript(render :partial => 'users/homework_repository_detail', :locals => {:homework=>nil}) %>"); +$("#homework_search_input").html('<%= escape_javascript(render :partial => 'users/homework_repository_search', :locals => {:type => @type,:is_import => @is_import,:property => @property,:order => @order, :b_sort => @b_sort, :search => @search})%>'); <% end %> \ No newline at end of file diff --git a/public/images/hw/icons_hw.png b/public/images/hw/icons_hw.png new file mode 100644 index 0000000000000000000000000000000000000000..013aa8afcbe1e11207742cdf8766b788249c8bf9 GIT binary patch literal 25185 zcmeI52{e^m`|xi=88RhPBnMHdb1wJ3u50i8+t=Rv+Iv~YA){?N{JfI9008jo z>1r8+pCs@nj(aKiet>`(1wVM)b*(%BVA+cKA2#50vIGF|8aR?jMn(=yFQ%sh(;cEm zB0=0en0AgX3;^(JOEK}aJUK0<);-M-G}nAOb~WB56p)k8<*pI3IxBPnpzIeCRKj#CxBplK!x~JCfZQSTG$^jSo zfsqM4wI#sQ?2{ehz|*s&}I%ebkFQUwezI! z;C&b{bHpG2L49@V8KW8%=~cYTmc3S>o+*R(9Z~y?>SgvE37P^+KeY#p0eeoXC+1aT zgn!&aar3!kd~C3mQxoAfJt+UF`atlCy^ucFIyMb-pzf zDngn|`$Jaoo{@;tSZP{8e9BpHg+nrZ`RQJv{M!gT|6q^s&d_0Z@ujvBsg)9?5j>n4 zHQXyGvc!YSsmGqmHE@e39^;gw=%P=AoP!J<6xl9URpW7vJzLZ1_%2=fw@?oeLex(6 z*_iek2=efU!=*ZiQ=!+kb3A7ERxiFFBYF5u)^k~?izvnC;GSX$|}Sl^_J;5>$dAc&zYQ4YZh`$)>j;kalPNw&wVW<7ZQKG zFh(%O@WkBxJN<)B zeT-lxk=ZNI-lrAnlf+21=b#xa4^KPVJ5D>mhP-a_bcV0ij(-^6?EI2zXmBWe!k3Rf zfv!V>k*FL@N7SYrx*f|N?MPY_ICnpv)&TE9>9_ygfsVyt;= zQ0(AEQ!`Jq%`N^Hmzn063FhoJ4?IscyKdB%>3+rzKn3tRx$IslnLSINGRjyG=&9 z&Bw4=8vnJ31LX7w-3(J&;k}hnvSRm;jB!iNRu6NI;f>A-22|^7Gb8#wOXj3}V0-mV zNS+t%a_x@WrM%cv&n9s1YR?$qS@MM0vjCW)@ZX>XpJ*qhsL9=O@=-S|rF5pCFih-dP_q`**Tlg^~;M8>4} ztI^icCK((Y&5ey&>4L!1#_D2dFP#${i<-vv_g+|D>u~ejg+g^iwx7FuuByLWss5DnX}gS{K2rgn1GmLu3B)p2cc`)ZfO8N^NJCYY<4`UQ*s&pCs3Ak>?`OO3g}>CT?wrkq;xhBd14}z9vjjrWB@Jry8Z}RtZbD zZt~i+&%?{R&d0^Qbog8^`cC%U>^nmi_EPp|JX79b#LsVysTGd*i5E9<%{rXrmKIPO zJ0SVyW^=)#$&93uq>j92u8%wGRI37W<_wgRr0(y!qdKZFF*a@ad{13pN>)-<<-3?c z*lwTQR=elQRvTVVR!nV$yVkVdweBga-D^u!Q)SFH3~{L4Q)5pHNQ*2#UoO|JS}q^d z8k88s^&xd`(`@a>==ZmJ{ojg>Z(Cx^cAIU0tt?bB^g4$#hYV*TXC@bBNz{^(r7%7< zQB6J`ek&P|lgtY7w^B1SREPb>(@mlexKl)TNX^3Q6!llPEya0gUv1Af@!I1xy|Fd7-)hdj?AUm8_R-=^?M^p5eC%_b zT#Q|4BS}ReMHh=g{UYCMkH-sptyshJ`cVJfr*~Bk^?9-nx|~KO_n$V6^P*iE=r~&} z{$i-1Hq}?f3S$+s4}Ty*IR4t^fpCbX5lq5xAj{1_dd1uQNe2wI%g;ug-F~&OXp72; z7b)hkQ~1tJfuvc72t%^>Jrs|j@dp3nD^C>5zcVn`YVFExe75HqlyEBfRC0zfzhhkf zh9~gCb%lm@8#bKe@ArS<`atSrIR^qVsBjV~Dqi0Q*FZ1A&|u=Xp` zEz{lc7}ag}>D7$h>5tbGGdqUO}d}sSaV>l zL+!P=k4Dcejm_RV`FFfMW*pv}nMv9ZW`T~)K6Ss=?b5`KVwxx=mTorc6yIWP9=u*W z)+X0I_rj(3SI9*#o?C3QY1udF@7mVZwWaXE>tWsDbHi@A(^j`GZz*%qXn7bh#-ArO z9yK6kr8;t9|wh zofup=$vv#=zoD6U%R3jE;hL^`rfl@((To)7-O@Vcg`a~)5q&i8YD~06YI@2#)$y7B zu#wide-nD&KnLVj7b+fqF8~s9?>HF`x2BUY4mAX&JO;g(y z3b*E|UQ*Qwa{t(?d)b;f%$TlyZJ~0>Yrd!MP-;=a6Z^gDJ1MEhO-P~P_O71ylbtKj@kR~Z$qJ@0KRY#Z-b362Wz zM5cZ^_4!d`Z?jIFPK!KQJ}NpzMn;NXvg|Fr;bd>twX7A54}#1;`wx5O40eBfKDV{e z^25`yWiv+_Z(Z`we&;colYN<3Enh8D+TgD`e*QyVLwn$8(dfN1(cbsy9}8NF+o zrB!D=G@Mo&-1q4NYJ=Y!88;AR5ts$ zQ)tc%F9?-k@93r~H(GK_4&q2xm9xMYzzy6<3QC=fqa7dKC$pQ_v!zeG@;e+-j@d{OaoR+ZD3uMlEsU<4sCJs1#-G8RgMV{s51 zK^cL;;n28^5F{Ldfx%HQ6dZ~~5z%lW8VULKl2hXaB^3|49nn~e{H;3hH&rNGPZQ_4If1qWD4GJmtSS`R+%H;YsswboX*(x;B-5D@rh9}e8gT~PI0b3&f zyT*HZ88d#u{R3B^`fnY%e?Q3lzFj|x{}H2?quoC=WWMAd%@}@;|6n#>^4081Onn_{ z6_7fS*Tr&Z;?PwF45+>b?U-sa2NK%~&-mpe7u ze4sPvDzLvi{n@M^mfy@A|2~|5hTyAz7W03u!`Fe~_OB+&S65%O{@IBq)6UD6;=$0c z2P5Q9=I~dqe>MBny$Wo8dvJ05zc3J<6rcZY7{GYLppXm-6pzPJpdl|Nn;JXB5*MC~o!)x*F_z&%QtS-!yU*J1oYIhQUC= z#fl2G!=M>ZDw;}zBJoH#28Y7gVF|SF{ritb?$B`1pSqrF4deOp6{94Oz-2ANVJ9!qs zEXj+?kCp02{;L7z>hme6CyUzremg%ZniTuLKK)(*W<*GmrUss*iAQUYa9Sv=797m* zaacH(42P3&NHl4o)JYB8>SM9!kMr z5O_Nb9Kj&q{zKPxIPf5Z#LS;u;Fzzirl8RjClpcs^O6``;ZQ&}0M_tAQtLz)=W zH4r55EcJ(uPzX3m1BpTqG_WMl5e84t($L0gA<-C6L~0=Z+z}m5W1#I&P!t9Ua-ySA z;J^|nP&yTXL(&jvJQn-stwL*R5^!*^X=u`y?h!zlfYC;2%g;P50k29KKuPMDufNSrna2ZjYgbKyz# zedGvmEfNBb1;-7C`Qiw!P1e%Xf}==iBtnCL{^PEZ;7B-G3#E-f66RZk#cQBQ;LzbQ zcq|EvLjJiUEeuKnkJBKb5m=ly8iCLxYiX0QcpMpp!J^53Fmb+jjSNyDW3*6c4RFxF zSkllW!NGoNYGT2#)X>uWRNt;o#i{ z)Q*NmfI*3-Lg5Iy9hFW)VUN`)i9vmF+Vgi@#!1b8h<0}lpB z90QF7k9EIu_Vwvs*K8HopRM>T8v}{y!t^j;(iv*tO!{g4^D)b2^RpQITLq)9f2yG7 zX{@6O(bFbj5d&94Q&HMII^2yPy%mMkUTEWgGK%YFEl{r>Ay@U|Vi z=!gBd>Hk|Q@HPMYAAbMYrT<~atnL;oVWqL4yohT-M63#nxL9c{C@`SZORMFXCDd5v#%?E>;=~ z%8R%bM8vAFh>MlRg7PA+1rf0-EaGCNv7o$&Ye7V;3X8Z{X)Gu&;#v?9tHL5KRvHV+ zi?|j<#Hz4}i6EGRGHS`ZPd!XhqK8Vkyc zxE4gjs<4QQmBxbdBCZ7yu_`R$Vx_U5yohT-M63#nxL9c{C@4Mp6PzO?*#RZ^p@%aw^GgUzdL8$XSQH zgOiV4pFAOQxfb-js!L5QDG+r|@ey^hNq+X|+10(y0IWR}n@|aNWWJ-uMTS3e^q1!@lJ{?ce7d|1xtyNpxNLW=@KlSGSE9}%6%}9XDcF(1>+smgdkdBNyg3nNAB6UO(;=!(gjaI)8?^^LlOF@F z?NWQM4vCr0etFscLfl3xWbdVtH|tk$%68dZZ)$BN`}*RxZ{NOV&6@NUC)!$r)A?t> zSCtD^hFzIMpivfO8b^DmJ7_&(=pPV~6<(+| zPW};}lDX^VIZ^i;8*Lo1N%iWR9x7EYcUvp8`STkbcOykOugPIGyMwdyyY`0#owjg& z_Im)4P(!Zk58wNsF@{HK|60DN9eG&5%hz|#^<~>?Y3aNrd>$PSwTNW_fPZ`A6ON_5 zJfs14{6=8=_D_9ho%dQ;SgaN5JMP1blf=azxKeh1#M`5ZskL~>5c>^;8f+u>Y-HYGlg?q%!$$d*#Mp>;0TEc6V-$aWoEM1q%ZNd!A7 z^i0LKUyp98JqtKFJ1a!qS>7z*RB*Z}Lnq_O@B!UJXvrv!M0;+%v~`EO;9wlq1Z(7( z%X3#=nK&x*q5oKu1D|uSVWSZ>f>|fQmviZoz)R}P%#3ek(Fu0{xOIoa_9pO|1Cv~I zxH=ydi2cB~; z+qt=mdlk^dF3`E{HaP=vL2bJTSFRyEQ9m{9UFc`FYoXX4=VaWZ9lJl?KDw*AShq~I z`OaMjbVRP9NY#|PN?%Z-as{zxv%B&I-)EM|IkTTv555+E$7ao`G10vCFg2@sdiU&6 za^Jq~BCZ^VR_^GzMZfkg6bDY|ot$xONujscc1JRJVY-Rw<(gj$yyV|wrGyN*{j`_GrlJK zZMC%09^A=0|6pd5h_&KpHDOta$dGJu#uvL%`K&yHi9jpm6_y(;0@Jj)BdpV!97JYy z?{KsZhK;WrlO6L_=SdfM9+dV#VN8#3ov--N*_WA(4(N*3Qj> zW6jc&=f~*~+2Lht?SzIBFP*_MG@m{~ox#kDZ=)6;;jcq58ksCT$;e~L7AZD-&%Ixqz2RPF@3P) z(386y4=JO%u5Qe2s*gPEKHbkL2rg>dGs%4=wC2*%WYECbv^96h^hVp(_g4Mq`eQ`W zI72e;oCx^zVCJ#>;IX>Pc(ZY?cNkBjs81^LVt&%^8I;{;VuGjhV@%C(Y3UuN%Dp=! zrdO#sS1x^q>X6(TAJ2Q_omk}K#cFbcKzCamBq* z)|RL+d9#EQlrkYDJ#4m@I|gk}i#@eQ-+CF!AMGabu>M{cUL_GE%t~d92Tv}gjZeI~Mw?koC)$+DS3sdaly|Uh?2WTqq8c;iL z>=eijuZ^pn|7BH)J0DOCD%JeDyO$|#(Ara5cskc$UY^_bCgVe` z$8?O+uHCO%FR;IDUeRnnyROF1=w#bwgVUTd3tG=m`4txrQA&Wa`pdk9hwj zEff1E67f&GBWeCC9w|0V@W;VE_cP9aa#(LRX{IvQb)78~ZI!gHYnQ%Rpr}bOIyOG| z?KKOdlmzS^#h5JiI0L<*ycQvQ+kwYx?>}Z3+h^0V9M_7;K*R)v5^w68ZwnL-O!gH% zKDS#;@hD^2TG&Xzo})p0)-v5&g2-w%Nw?1X`68lP$(OO<8}8tTqx){CmB)f#9b48` z69_Y5yM9kGYBC3+ggqo`!h64!VPc<`k!u&(P69bSaPl#-&y%-~uRpAGU`>_c`RD6?YsoXDHxxA8 zxH^^}uCYX7r-Bb;>tO@x0lsrxPUq|L!vk`j@oNrN%kNa2cI93Xaodc_bq&2sQXx7P z4mNVFoo+j9D5!Un^`#`4syi6hd1*nFQI?C1D%xokZv?^jpyGNE%3ap-$279JCTD&RIUXongyeHF8D7aqIO5{b}8k6_|{gU%3 z8lgMArvkD1686fwOP;RfwrEX=Lqs(XWa`%@kik%?DmfC)o?T+j8-ZfXMVT1!T<%bo`-oy>ex+0f?UJG+xGsporC_prfPI8(t&Suh(qY8DA3BnJiy zDIQgwD}d z&aNNdt}K)1rq-*f%e-M^emy+Exong3`_|>Nc-0MWc?UL{7+Tc}zy!11F1_$*AIJz% z(w8{@C@L#Dh&p@Mxz9JR`>Nd&$%|4KJFV^%9@914;%lGyD#EFCWXBzwjltum`|zE9 zv+Ha<7$>{qk{&4B?>lo)CiPjLnGWXz$yCR}-T;oh4I^yonrAyq74M_AhEr}q0}6HD z?(~^_khXjLqC7i;zcJt1GdsfK)5Kwuj5WoId$GU;`;BRA4}o*u1h>xkO-S*O

    @x z0&!+W^%g`)`MrvPi|ML9{=Ta|I}&0MQl#Y2=*A%ZvX)Y5f9V%@`c|)oA9%8PZ)aYU zPpwb)$aq7TPyfN=`Mw43=F&c@*=h`2+y9hvb)A0o*hUWSfC5%Z;+*P0yltLc|d7acu1&+6rm$rfwg)qxk5VXV>VJ z&fd>a7TPTtxZ$CgZI}3@jmzFk)RcZH({Mv>i+4M#h(kwaIoj!MP`;=F;9VE-L+g!P z8+*NSje^TOz4KDLpzCxF;;HvZLWQ%^xRPL3(mq(R{Mr-3X`1`;_ht8(b6F5Cxxbiu zlw2BcVuQ5BF}BZqtB&@3(WjlPRT=(_y**Rm9KDG0{Roh>YkE=%Q81FZQx8PUDb9(H~j2&E7?{3HxIFs5P!{Szo)oG zo*OR?K87)S0^pI4Io1m`Tga|a8xvH`OB=ntr!y(>ag1pbMs zQ?gDbdnCtDTd@2E+Gcg5&+KLszPlUOoZu8Xt8SFCbR&mfRE;$MoxMIfnGs32myS<) zf8MJj(Bjw)MpOBE-@LSB(w(n_YeS}r@c+