From 7a50d2064cbf5e36f950a32f81974a7d8dfd6677 Mon Sep 17 00:00:00 2001 From: rgarcia Date: Sun, 2 Aug 2015 13:35:48 +0200 Subject: [PATCH 01/29] adds voting methods to comment model [#25] --- app/models/comment.rb | 1 + 1 file changed, 1 insertion(+) diff --git a/app/models/comment.rb b/app/models/comment.rb index 91d7447c0..e99ef15e3 100644 --- a/app/models/comment.rb +++ b/app/models/comment.rb @@ -1,5 +1,6 @@ class Comment < ActiveRecord::Base acts_as_nested_set scope: [:commentable_id, :commentable_type] + acts_as_votable validates :body, presence: true validates :user, presence: true From 44ae7078ea95d78b5c9fbc565a38378fc9275819 Mon Sep 17 00:00:00 2001 From: rgarcia Date: Sun, 2 Aug 2015 13:36:08 +0200 Subject: [PATCH 02/29] adds routes to votable comments and debates [#25] [#25] --- config/routes.rb | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/config/routes.rb b/config/routes.rb index f5afd988c..58e23310d 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -6,9 +6,17 @@ Rails.application.routes.draw do # You can have the root of your site routed with "root" root 'debates#index' + + concern :votable do |options| + resources :votes, options.merge(only: :create) + end + resources :debates do - resources :votes, only: :create - resources :comments, only: :create + concerns :votable, votable_type: 'debate' + + resources :comments, only: :create do + concerns :votable, votable_type: 'comment' + end end resource :account, controller: "account", only: [:show, :update] From 2a3086010ec14992bcc0b4fbc92934df90193495 Mon Sep 17 00:00:00 2001 From: rgarcia Date: Sun, 2 Aug 2015 13:37:37 +0200 Subject: [PATCH 03/29] adds voting for comments functionality [#25] --- app/controllers/votes_controller.rb | 23 +++++++++++++++++--- app/views/comments/_comment.html.erb | 5 +++++ app/views/comments/_votes.html.erb | 11 ++++++++++ app/views/{votes => debates}/_votes.html.erb | 0 app/views/debates/show.html.erb | 4 ++-- app/views/votes/create.js.erb | 3 ++- 6 files changed, 40 insertions(+), 6 deletions(-) create mode 100644 app/views/comments/_votes.html.erb rename app/views/{votes => debates}/_votes.html.erb (100%) diff --git a/app/controllers/votes_controller.rb b/app/controllers/votes_controller.rb index e93968f35..c42935ddf 100644 --- a/app/controllers/votes_controller.rb +++ b/app/controllers/votes_controller.rb @@ -1,21 +1,38 @@ class VotesController < ApplicationController before_action :set_debate + before_action :set_resource before_action :authenticate_user! respond_to :html, :js - + def create register_vote - notice = @debate.vote_registered? ? I18n.t("votes.notice_thanks") : I18n.t("votes.notice_already_registered") respond_with @debate end private + def set_resource + @resource = resource_model.find(params["#{resource_name + "_id"}"]) + end + + def resource_name + @resource_name ||= params[:votable_type] + end + + def resource_model + resource_name.capitalize.constantize + end + def set_debate @debate = Debate.find(params[:debate_id]) end def register_vote - @debate.vote_by voter: current_user, vote: params[:value] + @resource.vote_by voter: current_user, vote: params[:value] end + + def notice + @resource.vote_registered? ? I18n.t("votes.notice_thanks") : I18n.t("votes.notice_already_registered") + end + end diff --git a/app/views/comments/_comment.html.erb b/app/views/comments/_comment.html.erb index 0d152d928..50c033670 100644 --- a/app/views/comments/_comment.html.erb +++ b/app/views/comments/_comment.html.erb @@ -8,6 +8,11 @@ <%= comment.user.name %> • <%= time_ago_in_words(comment.created_at) %>

<%= comment.body %>

+ + + <%= render 'comments/votes', comment: comment %> + +

<%= render 'comments/form', parent: comment %>

diff --git a/app/views/comments/_votes.html.erb b/app/views/comments/_votes.html.erb new file mode 100644 index 000000000..24b7dd869 --- /dev/null +++ b/app/views/comments/_votes.html.erb @@ -0,0 +1,11 @@ + + <%= link_to "up", debate_comment_votes_path(@debate, comment, value: 'yes'), + method: "post", remote: true %> + <%= comment.get_likes.size %> + + + + <%= link_to "down", debate_comment_votes_path(@debate, comment, value: 'no'), + method: "post", remote: true %> + <%= comment.get_dislikes.size %> + \ No newline at end of file diff --git a/app/views/votes/_votes.html.erb b/app/views/debates/_votes.html.erb similarity index 100% rename from app/views/votes/_votes.html.erb rename to app/views/debates/_votes.html.erb diff --git a/app/views/debates/show.html.erb b/app/views/debates/show.html.erb index 3ae0cace4..8ea945eee 100644 --- a/app/views/debates/show.html.erb +++ b/app/views/debates/show.html.erb @@ -17,8 +17,8 @@

<%= render 'shared/tags', debate: @debate %>

-
- <%= render 'votes/votes' %> +
+ <%= render 'debates/votes' %>
diff --git a/app/views/votes/create.js.erb b/app/views/votes/create.js.erb index 5e855e40e..2953d8a25 100644 --- a/app/views/votes/create.js.erb +++ b/app/views/votes/create.js.erb @@ -1 +1,2 @@ -$("#votes").html("<%= j render('votes') %>"); \ No newline at end of file +$("#<%= dom_id(@resource) %>_votes"). + html('<%= j render("#{@resource_name.pluralize}/votes", comment: @resource) %>'); \ No newline at end of file From cce6ca2fb9792559a613ae1500c23b27c6de3ec1 Mon Sep 17 00:00:00 2001 From: rgarcia Date: Sun, 2 Aug 2015 13:37:50 +0200 Subject: [PATCH 04/29] adds feature specs [#25] --- spec/features/votes_spec.rb | 199 +++++++++++++++++++++++++----------- 1 file changed, 139 insertions(+), 60 deletions(-) diff --git a/spec/features/votes_spec.rb b/spec/features/votes_spec.rb index d1aabd84a..4d20724b2 100644 --- a/spec/features/votes_spec.rb +++ b/spec/features/votes_spec.rb @@ -2,74 +2,153 @@ require 'rails_helper' feature 'Votes' do - background do - @manuela = create(:user) - @pablo = create(:user) - @debate = create(:debate) + feature 'Debates' do + + background do + @manuela = create(:user) + @pablo = create(:user) + @debate = create(:debate) + + login_as(@manuela) + visit debate_path(@debate) + end + + scenario 'Show' do + vote = create(:vote, voter: @manuela, votable: @debate, vote_flag: true) + vote = create(:vote, voter: @pablo, votable: @debate, vote_flag: false) + + visit debate_path(@debate) + + expect(page).to have_content "2 votes" + + within('#in_favor') do + expect(page).to have_content "50%" + end + + within('#against') do + expect(page).to have_content "50%" + end + end + + scenario 'Create', :js do + find('#in_favor a').click + + within('#in_favor') do + expect(page).to have_content "100%" + end + + within('#against') do + expect(page).to have_content "0%" + end + + expect(page).to have_content "1 vote" + end + + scenario 'Update', :js do + find('#in_favor a').click + find('#against a').click + + within('#in_favor') do + expect(page).to have_content "0%" + end + + within('#against') do + expect(page).to have_content "100%" + end + + expect(page).to have_content "1 vote" + end + + scenario 'Trying to vote multiple times', :js do + find('#in_favor a').click + find('#in_favor a').click + + within('#in_favor') do + expect(page).to have_content "100%" + end + + within('#against') do + expect(page).to have_content "0%" + end + + expect(page).to have_content "1 vote" + end - login_as(@manuela) - visit debate_path(@debate) end - scenario 'Show' do - vote = create(:vote, voter: @manuela, votable: @debate, vote_flag: true) - vote = create(:vote, voter: @pablo, votable: @debate, vote_flag: false) - visit debate_path(@debate) + feature 'Comments' do - expect(page).to have_content "2 votes" + background do + @manuela = create(:user) + @pablo = create(:user) + @debate = create(:debate) + @comment = create(:comment, commentable: @debate) - within('#in_favor') do - expect(page).to have_content "50%" + login_as(@manuela) + visit debate_path(@debate) end - within('#against') do - expect(page).to have_content "50%" + scenario 'Show' do + vote = create(:vote, voter: @manuela, votable: @comment, vote_flag: true) + vote = create(:vote, voter: @pablo, votable: @comment, vote_flag: false) + + visit debate_path(@debate) + + within("#comment_#{@comment.id}_votes") do + within(".in_favor") do + expect(page).to have_content "1" + end + + within(".against") do + expect(page).to have_content "1" + end + end end + + scenario 'Create', :js do + within("#comment_#{@comment.id}_votes") do + find(".in_favor a").click + + within(".in_favor") do + expect(page).to have_content "1" + end + + within(".against") do + expect(page).to have_content "0" + end + end + end + + scenario 'Update', :js do + within("#comment_#{@comment.id}_votes") do + find('.in_favor a').click + find('.against a').click + + within('.in_favor') do + expect(page).to have_content "0" + end + + within('.against') do + expect(page).to have_content "1" + end + end + end + + scenario 'Trying to vote multiple times', :js do + within("#comment_#{@comment.id}_votes") do + find('.in_favor a').click + find('.in_favor a').click + + within('.in_favor') do + expect(page).to have_content "1" + end + + within('.against') do + expect(page).to have_content "0" + end + end + end + end - - scenario 'Create', :js do - find('#in_favor a').click - - within('#in_favor') do - expect(page).to have_content "100%" - end - - within('#against') do - expect(page).to have_content "0%" - end - - expect(page).to have_content "1 vote" - end - - scenario 'Update', :js do - find('#in_favor a').click - find('#against a').click - - within('#in_favor') do - expect(page).to have_content "0%" - end - - within('#against') do - expect(page).to have_content "100%" - end - - expect(page).to have_content "1 vote" - end - - scenario 'Trying to vote multiple times', :js do - find('#in_favor a').click - find('#in_favor a').click - - within('#in_favor') do - expect(page).to have_content "100%" - end - - within('#against') do - expect(page).to have_content "0%" - end - - expect(page).to have_content "1 vote" - end - end \ No newline at end of file From 99c09afb02c2934f41dbde74595186287c0816c3 Mon Sep 17 00:00:00 2001 From: kikito Date: Mon, 3 Aug 2015 19:30:06 +0200 Subject: [PATCH 05/29] Adds TagSanitizer --- lib/tag_sanitizer.rb | 17 +++++++++++++++++ spec/lib/tag_sanitizer_spec.rb | 23 +++++++++++++++++++++++ 2 files changed, 40 insertions(+) create mode 100644 lib/tag_sanitizer.rb create mode 100644 spec/lib/tag_sanitizer_spec.rb diff --git a/lib/tag_sanitizer.rb b/lib/tag_sanitizer.rb new file mode 100644 index 000000000..f44b06adf --- /dev/null +++ b/lib/tag_sanitizer.rb @@ -0,0 +1,17 @@ +class TagSanitizer + + DISALLOWED_STRINGS = %w(? < > = /) + + def sanitize_tag(tag) + tag = tag.dup + DISALLOWED_STRINGS.each do |s| + tag.gsub!(s, '') + end + tag + end + + def sanitize_tag_list(tag_list) + tag_list.map { |tag| sanitize_tag(tag) } + end + +end diff --git a/spec/lib/tag_sanitizer_spec.rb b/spec/lib/tag_sanitizer_spec.rb new file mode 100644 index 000000000..e1fd6499b --- /dev/null +++ b/spec/lib/tag_sanitizer_spec.rb @@ -0,0 +1,23 @@ +require 'rails_helper' + +describe TagSanitizer do + + subject { described_class.new } + + describe '#sanitize_tag' do + it 'allows regular text, even spaces' do + expect(subject.sanitize_tag('hello there')).to eq('hello there') + end + + it 'filters out dangerous strings' do + expect(subject.sanitize_tag('user_id=1')).to eq('user_id1') + end + end + + describe '#sanitize_tag_list' do + it 'returns a new tag list with sanitized tags' do + expect(subject.sanitize_tag_list(%w{x=1 y?z})).to eq(%w(x1 yz)) + end + end + +end From b53bc42dcdfa462cc1af365aa5ea5e492661958c Mon Sep 17 00:00:00 2001 From: kikito Date: Mon, 3 Aug 2015 19:32:00 +0200 Subject: [PATCH 06/29] Uses the TagSanitizer in Debate --- app/models/debate.rb | 5 +++++ spec/features/debates_spec.rb | 21 +++++++++++++++++++++ spec/models/debate_spec.rb | 6 ++++++ 3 files changed, 32 insertions(+) diff --git a/app/models/debate.rb b/app/models/debate.rb index 0c98d9274..d82cfb8ac 100644 --- a/app/models/debate.rb +++ b/app/models/debate.rb @@ -13,6 +13,7 @@ class Debate < ActiveRecord::Base validates :terms_of_service, acceptance: { allow_nil: false }, on: :create before_validation :sanitize_description + before_validation :sanitize_tag_list def likes get_likes.size @@ -40,4 +41,8 @@ class Debate < ActiveRecord::Base self.description = WYSIWYGSanitizer.new.sanitize(description) end + def sanitize_tag_list + self.tag_list = TagSanitizer.new.sanitize_tag_list(self.tag_list) + end + end diff --git a/spec/features/debates_spec.rb b/spec/features/debates_spec.rb index cbeeee600..034b1d504 100644 --- a/spec/features/debates_spec.rb +++ b/spec/features/debates_spec.rb @@ -62,6 +62,27 @@ feature 'Debates' do expect(page.html).to_not include '' end + scenario 'tagging using dangerous strings' do + + author = create(:user) + login_as(author) + + visit new_debate_path + + fill_in 'debate_title', with: 'A test' + fill_in 'debate_description', with: 'A test' + fill_in 'debate_tag_list', with: 'user_id=1, &a=3, ' + check 'debate_terms_of_service' + + click_button 'Create Debate' + + expect(page).to have_content 'Debate was successfully created.' + expect(page).to have_content 'user_id1' + expect(page).to have_content 'a3' + expect(page).to have_content 'scriptalert("hey");script' + expect(page.html).to_not include 'user_id=1, &a=3, ' + end + scenario 'Update should not be posible if logged user is not the author' do debate = create(:debate) expect(debate).to be_editable diff --git a/spec/models/debate_spec.rb b/spec/models/debate_spec.rb index 2510c7ec1..f2af2cf0a 100644 --- a/spec/models/debate_spec.rb +++ b/spec/models/debate_spec.rb @@ -31,6 +31,12 @@ describe Debate do expect(@debate.description).to eq("alert('danger');") end + it "should sanitize the tag list" do + @debate.tag_list = "user_id=1" + @debate.valid? + expect(@debate.tag_list).to eq(['user_id1']) + end + it "should not be valid without accepting terms of service" do @debate.terms_of_service = nil expect(@debate).to_not be_valid From 823426bfded234f80f55580c32efdb9516b935aa Mon Sep 17 00:00:00 2001 From: rgarcia Date: Tue, 4 Aug 2015 12:54:24 +0200 Subject: [PATCH 07/29] verify captcha only when captcha keys present --- app/controllers/application_controller.rb | 5 +++++ app/controllers/debates_controller.rb | 9 ++------- app/controllers/registrations_controller.rb | 7 ++++--- 3 files changed, 11 insertions(+), 10 deletions(-) diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb index b64f11bb4..d6cda45be 100644 --- a/app/controllers/application_controller.rb +++ b/app/controllers/application_controller.rb @@ -7,4 +7,9 @@ class ApplicationController < ActionController::Base # Prevent CSRF attacks by raising an exception. # For APIs, you may want to use :null_session instead. protect_from_forgery with: :exception + + def verify_captcha?(resource) + return true unless recaptcha_keys? + verify_recaptcha(model: resource) + end end diff --git a/app/controllers/debates_controller.rb b/app/controllers/debates_controller.rb index 672f41d20..e75f9a2fb 100644 --- a/app/controllers/debates_controller.rb +++ b/app/controllers/debates_controller.rb @@ -1,5 +1,5 @@ class DebatesController < ApplicationController - include RecaptchaHelper + include RecaptchaHelper before_action :set_debate, only: [:show, :edit, :update] before_action :authenticate_user!, except: [:show, :index] before_action :validate_ownership, only: [:edit, :update] @@ -25,7 +25,7 @@ class DebatesController < ApplicationController def create @debate = Debate.new(debate_params) @debate.author = current_user - if verify_captcha? and @debate.save + if verify_captcha?(@debate) and @debate.save redirect_to @debate, notice: t('flash.actions.create.notice', resource_name: 'Debate') else render :new @@ -51,9 +51,4 @@ class DebatesController < ApplicationController raise ActiveRecord::RecordNotFound unless @debate.editable_by?(current_user) end - def verify_captcha? - return true unless recaptcha_keys? - verify_recaptcha(model: @debate) - end - end diff --git a/app/controllers/registrations_controller.rb b/app/controllers/registrations_controller.rb index 07b347cdc..c0113de42 100644 --- a/app/controllers/registrations_controller.rb +++ b/app/controllers/registrations_controller.rb @@ -1,15 +1,16 @@ class RegistrationsController < Devise::RegistrationsController + include RecaptchaHelper def create - if verify_recaptcha + if verify_captcha?(resource) super else build_resource(sign_up_params) flash.now[:alert] = t('recaptcha.errors.verification_failed') render :new - end + end end - + private From 9dfde8125e57cfe31b7a86669e0946e20a1a40c6 Mon Sep 17 00:00:00 2001 From: Alberto Garcia Cabeza Date: Tue, 4 Aug 2015 13:19:49 +0200 Subject: [PATCH 08/29] Deletes foundation icons, adds custom icons font --- app/assets/fonts/foundation-icons.eot | Bin 54568 -> 0 bytes app/assets/fonts/foundation-icons.svg | 970 ------------------- app/assets/fonts/foundation-icons.ttf | Bin 56976 -> 0 bytes app/assets/fonts/foundation-icons.woff | Bin 32020 -> 0 bytes app/assets/fonts/icons.eot | Bin 0 -> 4228 bytes app/assets/fonts/icons.svg | 22 + app/assets/fonts/icons.ttf | Bin 0 -> 4072 bytes app/assets/fonts/icons.woff | Bin 0 -> 2976 bytes app/assets/stylesheets/foundation_icons.scss | 594 ------------ app/assets/stylesheets/icons.scss | 75 ++ 10 files changed, 97 insertions(+), 1564 deletions(-) delete mode 100644 app/assets/fonts/foundation-icons.eot delete mode 100644 app/assets/fonts/foundation-icons.svg delete mode 100644 app/assets/fonts/foundation-icons.ttf delete mode 100644 app/assets/fonts/foundation-icons.woff create mode 100644 app/assets/fonts/icons.eot create mode 100644 app/assets/fonts/icons.svg create mode 100644 app/assets/fonts/icons.ttf create mode 100644 app/assets/fonts/icons.woff delete mode 100644 app/assets/stylesheets/foundation_icons.scss create mode 100644 app/assets/stylesheets/icons.scss diff --git a/app/assets/fonts/foundation-icons.eot b/app/assets/fonts/foundation-icons.eot deleted file mode 100644 index 1746ad407fecf570ead54e216dc4bd7c79271206..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 54568 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 diff --git a/app/assets/fonts/foundation-icons.svg b/app/assets/fonts/foundation-icons.svg deleted file mode 100644 index 4e014ff89..000000000 --- a/app/assets/fonts/foundation-icons.svg +++ /dev/null @@ -1,970 +0,0 @@ - - - - - -Created by FontForge 20120731 at Fri Aug 23 09:25:55 2013 - By Jordan Humphreys -Created by Jordan Humphreys with FontForge 2.0 (http://fontforge.sf.net) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/assets/fonts/foundation-icons.ttf b/app/assets/fonts/foundation-icons.ttf deleted file mode 100644 index 6cce217ddc2efe3411dc9fa34e294e48e4cdf4f5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 56976 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 diff --git a/app/assets/fonts/foundation-icons.woff b/app/assets/fonts/foundation-icons.woff deleted file mode 100644 index e2cfe25dd392203f910d5deadd19beebe7e99984..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 32020 zcmZsBW0WSn^Y%Tq?b)$y?bx=B9ox2T+qQRX+qSJ8{pb0;U*B|J-RG)QrIOQ0pOZ?t z%87~sfB-+m8x;We-+R&Szvut2h>9x9003UEKXuqY!2Q#P_bjJG&jbJf<^6EUALt8k z>fRe!8~n5ZviZY>e(D4P2v0*sE>4610O$_@p#K9Bkg%D7s9l9T|eWrI7{`nF9$n<|W!4F74?tr)cSUb7> z$S!|y^W(-P_YuHuWoz`K2TB3}0Q3C^-FSu~YXi3*zd(LJc7*={$PP%v#=zPH0C08s zk^lM8E0-`+FR`)QdKnTaSB^z}gjhFY+F|MkUsVM;1V0d?f= zAxeovn6N3_4r#H*L>Q4yn?!(k4u(xwm=P-+3a-7pJZ)6h)CsX1oQk4=!Zbm1l0QYg z6I~zzJR~0xO(8Pwk>J!b_nnze2!vqT`?`B(kLP5&-rkb&r7}YVLP4NJ00;!L&opxX zB!GZ?GDBay4Kupl2hx35!wcci+Bu2DrQRM%D$3RKIej&%j~@a*FDP;~94Ep(mpo&D zCc+;<({=g)DMlY7=g-IQY&R*|g+Z;hpqs^i(@XumdZkeoJId4mqr?zhTTU1K>H-t+1YfrPq1@^&{)u0LWV*E|Bt4Iv*elc$? z%F_kPM}1F3vAe(inLQP!+wJ9dQc{X)#@AV%&Z4dD5C`Ko)Aqd6iX#EXl3a-bdPY31 zcv|vGH%t|4PkB{71ifm9c8WK}camldJ@gGP%BrJY$z>9v>T@9X>8LaR7c zcq*T3AzcpJuvqOQZk>NqHrQZSm-gs4?Up7*f20EUb zE6j*JTwE=(e>*nz)Z)ba{@>iu*EjXk#{w4xN2~+7$L#Y$2L~gZ0uJK;A}{~`#=_)d z`uLuifmIpn9UTT3F)=U!L6Lzg_l`1L0s%Do!AAgqpLO~(8>#+xc>y{A|9}L60)PgA zDS-a~HvumLzk=X`@PPz@OoHlyo`U;;PeU+37(#?WG(qe_YC>*92|~p|^+SV0^Ftd# zr@_#{?85TFPQnqwiNl4#lfVbT_rm`}a6m{wm_)Qd%tGu!d`6-`5=Q!il!Nq)Oom*9 z{0~JK#R_E-6&95r)d!6T%?GU??Hc_r20Dg3h6hF)CIzN4W&`FS79ExwRvy+V_9PB8 z4iAn6P6w_a?jasB9t++dyk2~Ce13dQ{2csK0wRJof)7Gf!lGZOzx;l+{W>R-CUPU% zB#t2NC4ncgA;}}TBxNJjCv_n`C4(p9C$k|-Bbz3dB`+a=reLDTp!i3rPgzIBM>R?< zNF77nMtx5sP7^_MNDEJ^N?S#{OovSuKvzU}O^-`2PH#*fL;uLY&)~*T!|=t(!l=!d zz=X(@#MHoa&+Ngx&mzv^z|za|%*w%P!#c`(&4$jV%ht~>&jHGT&#}y@&Kbvr&Sk+h z$hF8V&ppYb%+t%W$qUU}#JkJ~$w$K%#CQ6e|MxvV5r3HguE3!ngP@CGix9XFhmf66 zlQ5#NqHwQBo+zIfiCCIAs`#`7q=cWus-&Ofq!heVlvIT@K-yILOXgBmQZ_Uma3iRJ}k$ zS0heiRTEcJT=S1+lomkCMXO(%PP;+-Lq}RCNM}|TUswIV|4vaiR2Ht7GsAZ6^xu=q zv-GX(^z8Jl^rf5(ElmmPF)o_5gsP2UwqbQX6D`OMeWSJEVYXLbD|iqxOh+McL53YM zKRZlFv9^F;ZydmTl8{hhejiXDfY|Ta3NzKt1Xx+3DOFcBm6f}SbDbyMW`U?61I*e$ z5OCHa#&=zY<7Gao^t**&Pq6Rhbur35t%Gi55l6JoGSu7m=GcG;Te6IBO=bm&P3O@LX4_%`^c{ z6kwv&{@_{hQ|r(BdR;G#Znz0|Ro?1OfmWQE8bj5oYw|R!VB9ytzUZdrLkH-h-PW3Q zzvy%Eu_R(&g_LEv!Jn5IK)YaUSmuYr7%edm(g|tnIG0q}mo8aw45+psE23j8Bs)5> zHI?M26S>$*xBsl{;SDl+vZu4XV?u725QN&A7}iU7T}7?S&QUT^;c-vzN{^iLLK7ZP zJ>j&#y>Q3$)!7ih_pyc;1&I!o5l1PX)IU4VS~vtnb@atR>?OR~gQ|5S7cb(}k*8ns zrik;?zS&BAq=yUNK#Y;h4w@mq23jKDfqv;01PtnlAwW2lUBnuE&ai3|n<+<|_V_UV z>Aeq~OemrC?nUQNWH%Vtk9JC!u+7N~%XDGNX(K@zq3GgLWF>MBw?3z4Gr{6%7*3m0 zhmXxefYo_Y^lO5slUH~G;zthm9m&Xey#;x?#R`%jK(8J8r~HH<5?g(0n8kokzBE%f zR&kT6s&}5_!Ouogh%^W1=fzYGZd{L)Dw;}9gM-v9#sS8cRM{-q zzNLwfEsEr%O=k5{X{EMNEek??wC{25^xkg&b>6O}Z~=J@%sk3_aLep~l{kr%Sw)h< z&Bbn+(Rd_TsGY++)!weKLeeN~cRwo6b@g^O;h(W^_1q*eraS$NVyIdLF%`j?g*lTv z(SA3`z{m4PrQor0o|w{$`g{b%4r0>=)&A*4O{HD650JUBWIa4wj#i>M&FmIgpC-_M zL_9Q^_U+?KqlDYHu{TJLJm9wRt~T+nh}P&BVscfaes1zldz8TCz&TsyQtPJuTIiJV z{NlyBKg6#4a9sWTpFMFykdnNhrCMTarYA)d11w|UwQ`lxylM4@b#ULcRQP7@1fC1PX8W=o3n;+DTpUgn_chK!h%7tbRIAyDZCycl~46#!z zq9=vH3G)2{C+kR`AGt4rN!tJd~5@5vxTU(EN8fq>=iwp>E`Z!N0(bV~C=khp6_SPcN8^ zyNp&7B!VS{=h~{a&2WOvHub?eOM}u3!kA`5-hx%=hPM7lcMK@E14r=ys%Hm(W{QYG zHitx581T*%k$o*H)jg8?L-ITbf+711MmC(2UtY2byn+I6;A)G!o1Q0b4(?0$#O>iAIu20VFn+Yw4PT zqj-F3RE+93V`^MlYoud&Cx3?m7M6~FneN4+X*k_vDOC>@5HqZ9ZAEJyL6fspyK2qU zxd9Xm<8iL@|AP9qqBg z`JA5;S=|yKbstxOF{%OcfpYggfo`^m+^@Y3Tzt8NBe32s61cy&Bn`qUt9%u-&q{y> z9Q1wMuHE4>$`ZzulvWZqy1caZ69P0OvY}sZ%GC@6N zMmkmL>=(tAv<+-#S{*YO0(VUIl*2FD^Z^mE-8cJ0V8(i@$#GhXOxzPd%5-8z2o@b~ z&_&czM95fPfKm+)ga9vXJO#3b8b{&AAJ)!h7d%E090ifi8GE9HU(hPOx)KIKS^zVx zhi7Jz1_(Fb>2~xP#|x}yi+AnBSim;l0Uw>j*5Pd1Bnex08|7q4u$;`UDIU#s$7Bn= zrRa+csi-;UxS!UZs!?`5oK~4exkWYJonp3VSzDMWVJ1_wwr=B``3%t;+Swl@5!gcI zbhJ#0P9)~Aa68LJT&FR4>!yx6oD+P4Q~;LvV1t*dtIy8gH$h0qZ>EEV=q<5WK8Htx zkukXFVwAU$DpjM^Vk7GDg-mFU#Y1EU2?pL}PNN;?cPm05LXh+U_88p_XiK57sN)f7 zH@bad3&=u0%nmHoWuY`d)GYZdED`)Fn(}i+V1=t_SF&vdtLB+lFo7t1)8(ikc<%Fj zUdLEt=byq zx$4)hIJJEFn=9K6k^L{gN2@prG0pMNG1#3*{n5ZE{$&zf`$5;}r~$&bk*f@siyf>Q zHL484^JGZf6QUg&HYzNZNNh~`u$>Bi>WvSKc0m)?yKwOK+@=mhYPt1}wp5=9*<4*Q zwN1c@MA(otF&u<3)dRkKj7HOt&EaT-y8ZgqH|PW8h#(9oW05$7=ZP_+L%uu|kON{; z_9XmOlM`XcOi>)Hesn}7Re65b+ITr5*$1F}j3H^zTA zaa7KPHR(ge7;sRc5~C1N$ruNxK`Bcn7`TC(z3kCMZ{&;xUyxmaB6>L)r3{%&!d$_6 z&0WQyjbv#lTh^ ziz-)b^hY-5OjaTQ`CZM<|hUj1alOI!3q1loY=Cc&{zkbkt}W@oE5@x&{cnT zSHAO^ING{7;-a}#yY{g-a zG!1wo1SfhJt{;i)SP;w53 zQzD6CVzot(M1iV1Sy6IV2=3^HZG1f++Frt!f}5**-)E+?mMz;?-;5Kh^x$mpTCP5P z?>-8mgk1%<;!;EH7UhQit$d+L`uQ-i4$g*|>ou-7ypo}xOPoS8kvwc|MTq&_uCYFb zDl1o9E}k$DvoM?A>+jU1_cDuKC@3pJ#Q9Nt(s3WlUh3$U9kW4y%{IiHJ@I|tvHAN0 zEVN&`y3e<{>CJ(uq~`4P1iu2eX!IG1*1T}NyL&T_d`G*pCiAi_Fx@z5^D}-cKKs;2 zb#XKOGRBU6297jstl~kYU1R(Z*5;^ER)@F~wF$4x%AD%M1EVq9a~>rBi^BEb?y=k3 zh$mi4>V9M6%g7OjAwOzNoO2uSiU91Ug_$}X#p`KjI6r+P8dbNKkG z`VorT3&Zw@)Hk%&u=2Y4(a^^2PBzsn)5y)9ZjvWErWqzgv``3RN{lfa?wceR^4vJp zY(aAhqh|bOzOfap6^nA-kgGA5F$EG%=&DA%(Kv)fr{NNB96$va!aDj-_zE;$>Wt5s=45%P8~mE(}^twbW*7~x%SDaPz~0-z@>-F3&Z z-GG0Kj|n*gL2+q4CexZ5((IzlvR1{oI>5J(uCT`k-#%nt2&HS^R`6%emi?-SaCn1W z8_{MsY87vce}zY|iIg@f%He>D^I!xAIq;e@Ot2nUhy~S<{G|))R%~SAeR66hLjl=5X0ps#v?i4X5@}o%X3#erB z?(l&P95Ukz!d==il|5Y;v7S<2O|l-4+mNY5vYGrDZQv_YfLzLIIYIkpf%0l)-f&f4 z;T4KtdHf>u!42;#df*b|uKK?YCZDCF5qWKEo)S*HyW_4I0eVbXW3SsEgAs3Uwz+RP z9^OZ#@fy!_Uza5}{U*$V#hVA1hTxZ%2Tc3U|#vB~&WZHi4S?vQqT$Tu$ zxd+9`weXcGEx2^Od1uA8<@osR-{Hi8Pw!`N!I&K>9Izeuh#*{ms5Bg}AZ=Pi5NU;5 zbt;-I2#Zh(#CMY<3%AD5oT3WcmzTNu1(p!!5zNJXXFE9&w2u9xovVTc%`_P zpx7Q?rf#&C0MrWd=&w^SBtEu2#d7xUw*xB>IW7lL#B&nuOJ6V;YBAr`Zx-|(f^OwG zlKye|-Yb1$+}Zv1>qN9+JWQHayk{XQ?3l-_4&~Z6CvnIJUL^20@cxOhz>kqJ5jeX+ z^*UQ3cE`OoXLaW#Y>>$Y_?1Dy1^Oa>N8ye-+xJuGIN}-E)`zr&(ULzpG$t*4>Q0A+ zy>Rkfe^1r>jL*Fe%(6y>^+Xwa4RsRwrYi$?t#_Ck&yNDNwrK*HRBscMQTcjq@u9Z% ze1;)UDY&GZC>)ki%1CLf5t3eRmd@){72S%_Bu9itRUR@*vw=693M7dri7u>`s$$*i zFqSP=jN1LGrR1i-rIOLpb4Mi7S<-CsciD?A8jzjv2;waWpn(^JULlDWXYG#CH%&k$ z40rgeIHvZ6tdwXWUwrh+S29k~oJ4>#p{Adqju8e!!^Fka=KdQ+GE=CGASM_;0y!)} z!^GlZaaD=*(SA|%6})Q26D?buT9InypQnNaHM9+V>%R6g9h1AmK-Gb)wO0FsR23&* zQnIN*l|7e^I>8wOs8dK2PL;6d%xefWU z8*FjygwdhbMRtmFsY&-|`d3qW*((EfY_1tz({#hIwBw|rQou#Wbzeuqa8mtRTW_1d z)OaG*VKkrpWnS1uMxaAw)MmBngVVpeCs|K(!PQb&55nN8NT;v_DPF5uEBsQd&muyd zAkmJw08iOd!JC_`G&9FtO2R?0_`=eT%BqP=_L+Se!iX2fa zQWbCVDA!8oe?nj#$rfC+v{*)ak%Q^aB-GVp%guxSX%D10o;KYj{K4D?lzH0saAu<@ z#Sm9h(?`=IS3ItQ?+4QoZ6$tfC9y_KAk3k%WTL^_eZ<(_xZd@mta_@IxxN1yrE@f1abP!s&Av$Z_6)jq*Z!LBRUWC3eT&%qAYF_m8-q(G)@Pync zO$X>xHhpv^*ujGz6kML7Lgtu`qrnbXic7C99+PG_F-Ne_MWbA#m}}Mbc;&ma@HAFj z8jBDAjjQY7TNhQnLY$0v$ zk2niq+BX?h*uIu_uWn(hsVOn3qg94AjW8s~P716D6c$}_jg&G_n9^KE^IYU4eg2iR zzb)G|gY|6OPvc6Ei6vyVey%q@mzD8ivL;Ew6{mpY$VXYvd~ouCbT0XvBp@MKsxTDgz34E@i(nIQO{1LLZpx zw`UBoNWR9@OI{KM5n+AQXrT%TtbXU91#J7CuCAQkR*>#pIIWh_lD9mWw?3LT-6qP_ zTIXu7Q#Dk{kT;8FH7v)*gzWuk>xzgCrkal{#f^RP?aGx~+9{p8N%Z`N(618+Ev5Az zG?x;j{ie13mY_A0V+@sD>o0CJb@!y>G%tXCoiBd+o?DmGxFFAM_$&8psd%6pkbO&2 zSael`S~87NT^{1mSwfoQTvQ{RM`S#l%-^G#C@5UAB?{o)T0pUxx0)q$!}p342z>N8 zJ;L2L=?h%{+~y(K6uu;szxkrHW8`#4xZ6za*gfNHK;r{{7=@6-yol-!D~-XVSE}ZB zDs;+K2_CHPd=eF1UKss?Ft-X*bWiZ$+;#4v;wz|WMsl8#Ttw5$Kgt?atlP3`f?(JW z6dod}fKAg~a*?m*ED(9lSavKLkPg%K^@FAInq>7YUH&GV4=4@@Nwdbl9!^6K*f z!U^-%wN_C?;~c%xZNiuj2SeBzMoMZ{JLO-?R2u|S`k0s_sVxtDs9kWi3VQAqumF_K zbGc2k>eWUOTJqC+)x5IP`yo3D6=QvYdrXEEb)g(suvWuRd^r?SglsTB_#*iI?dj{| zBZue|8YI->Pt;l{Ip6v1<2Q6q5?;0;v0zjk^!+D;B;)T~_KBkpk_i}vUE-j4BLAYa zjADP+M)8pJ|jpk}6G032>gNfj;o>iqLB6OIt3$OTXJ;FFRz z8o5+bx$GX5weaLaO^trjMB2fRpqtIwd;K^_hjzj}ok1vGv2jO=J&Y&!670R5$u34o~`%o8o@YkWd-}JPm^( zXmg$6+PzXc_L@CZ!?@fq$2mO%I1caqyCW5 z19aVkYSB14Y7r$(3y=nMS+nBS*lYf+y$F>Duef~9S)I?hR;mfzK<@bI?O>R9aMaAw zYoQzh2&8Yw@HvByhHsto8)f(B_aXFblO3Ak(nYM3U007YX% z=*=zq9m}UL0%@PjIP=fUJg5DyFAzTuNd&kflKNIg6&_0lHchUn2U#Q70inVuR*J-g z2J7onL(wO%h$w}AHnj;vILrW@VO4A2I?bEOB`WX06_JT9FxDg015Ao{&|t!*wcP$d z!#PlfLbh-&k)$w8teqvE1%#lmp&-Z)yl9<+pgvIY^m0|VdPK2ZPC;$tmQp*kyYNiP zoy8mhV`4;2|1=xxeHM|`K^8u{g(16=5EzD~QYgz^i&aD8xXwz^*eWVrgAZ_&Be#ZMGQMGqw`11tSKFjQv(-`xA;Z)tayxaCQ$lC+G7~R=r~w~ z$Y{mH#uHzA#no|jcLKe-Zfz3%MPRx|(Z{M+CIU?cVi zUl=)Z(+9JNSS4cnWn3r?s$Wuxoh)KSG$Wo;%(%9^Y~G_+UM8fY>JbI?bz=&UU+?~% zp2RRXOCy7+b^&rpQ=A2*1g$0>o>~P*nsh3T-9`*X0Cc>AWCU=0f7ua8#v^iewG*%r zu3z6K#w=BacAUXS*%_{ko*Myh?Ce3)ouLha+=>THAm1YLK#&4(8Tl`3R$QuUl+~a9 zAYcr20Nc5Zz9oX9F&K1j%XorLKPPtA4%D!uKrJ$b;JLVnC%B6O zb%0(cB3oJ+J5u;l1Bz;|PAhJfR6`Ib+S&-OCMISpPpA1t<=?ppsM z(E3_IH`_y8Br?iTfYMcmjx*9z86iTFbnCF9%s!g|w33a3fBuOQwr#7&3tuFYbe=E6 ze`H!+>DeP<_({9)PI`=9gLO5>p_2{R4MW@9SmB&$S6Fj7 znhhcX8#!{emnU*JA`gt-85yed#Q_aHB+VIo{{3;|6qdRHtEh?@`XB-8@+Kwd0Vf$M zP{E+_a;E~8iU4sk$USTrLm^Z8l2cO1NV8ANytTu(%w4$C_s~G$H;D5Not{U9i@m|o zxQ3FQPtv!Z*0AAyK1#+@rVLNY=n*pG-*AGR+OXZnBzb5#sNlqo&6Ne-HxPzBxK%Bf zljEfOV|5rfVV?*|Ds#T2R{z>*fmSYgF42_a(VIo5zh{}#ysje^QeF4*yCXyJ43v6l z*ki$rzYV-iJ^rOGEVNEeN++sRddLkk3z>{aZNmRejFO>!-Ilj$%Ze;z+JPB}%75f> zZ^NWx+8=Gswazl*nP@{c|MDKTjBdsD#WEKrAxgz|zu6%4wkC?S?S&_FklEN0?oV5jKQjiLIUEv*5DX5yzk;^EbBrGqXrs@xO ze}9>9D%Ijg3=4!dB8(po9ONz#9L50Lz5fG~23rk+l%%2Y%kZeH^UJDPwAJwC{$4Gq zMJ}i!4wp#_PlrlFCJvH(d6yU&U1sQ{H62bg@|h=HakyTqH| z<+B)3;l18e>Z9heMCeEHnqL+S1i>y;hFuXtRLl!7ERYQvcg&(IoE^%fK{)DS@xpl- zYP+#(ue=~-D7olJ`4?F+5*=Gp-bzYc|F+54kbVf{`iM)~kZF9O{x0cJ_8QSEV;8xHT^Ke7gIKXeCp?)y9B!c`m(F$`z1g$#&kDDNeXJ9{ z`*J^04nkh&ohlsnK}0Lq4P}%*u^L0qYljqBmlC4kf@41Kfn_K1!rn{4Cb|mVa(uW3 z7t0O71?@@Ht!XJh8N=qPTlVhKE*&K@`iakX@vz-+(xuCM1fVX)LEr-Bi=bOf0$42#wj4M?FUi_3n`!TT89=B?Ddm zm)g6PbW`CLJR|Hox)$O4HuFVutXOq!^PDw&REM4WxIl^v#ZP>!l;1R9-2*b7KuOv) z%^j_kQ)j{+KVUN2P2*TRQq3M)Yu=!cPm7jER28WGy{kYr;I2ZJ>bmef%}DOG&e~xV zgz>P5(<)D}JSbRZcZne!*N>RpX3#HE<+&=CPGKPsS$jh#W4_&H=N2u1lh3t9X1Xle z{u<02d(H(OXAd)Gi7cs~p510H!^p%V=A*R12F;&Ix7L!NK(?{)^7S!AX-7#OX-;*u zM~zN?oxXyG8#=^79&NUxe3%H{LIs1jwSTvW0`;YqqfM57(scABtV7s9t%R~D&2kRy zA+g1F=eX2c>UHR>f3y)V^r3pvEX$YfxBunOhRlJk7AeLmwz9KbhM|)oTY7(=KoAx< zhTT*poRoIBkL+NL=BI(w+>CLljg*DPmYa?K2ovaFX)9b9vFl4G=L#phPxH=E}E-HiepC&0MZ-sRd~>?7?}*BrsD0)+Gq6{dQv?Te|k;mj84>;yC~ zWw>pc%Q#nkLSk}&?emu8r+&XMTIZXEmF_V)^1@u=-?Z7=IQk%fV!uI~-HVm?c}4o3 zPbwDcca|&&BmS8@1{Xt5>S0Nfkq4G_&#rb!oN0*uIHqU;q%+j$CD|~p!4|%GTk@9I z^304TgbPu{t!PGm<*wEw|!A2vOlq$5;rclUFrad(f*c!KQwD;wAby-r`2E_EOi;M_rsT~mu zN{WdHlfU4qU-Mc^;|CCu!9+~+8iHaO_@b1%|D0SBsWTrBpZ!~|enP{!Y;7BeO4!CZ zwrqY|XBXqtQfsW*t@;Ifus3^nUX5XGy-3lnZ@4r#NEJN-_5o>gd7+je=~~DsA@YaC zj1xa;J^!zoqJu=Z8&@{H|EeZ8zT<9L3BgT3@YSTT#JHy?mXy3P%DnOK;`cF9#*=rK zN!PzOgMYtsUOuLciE$gtvxq0P_mKDJ`}l-$Z9)pyb2s`@qW7s7Iw&wCKa}nbz`mQ_ zc>7C(D4I(s3fGM{?&xZtJ_T!u-kmLHU7o-@}SToTHpTGP8yl1O(jzhl>~#EYLBo#sRL2+QUwog zB9p1j4ucYIy83{I>yWrf$%|t;!&FcewWHQYXexc>x%Y#GPA`qvzllfeh{r9;tj_Tp zVQPnU%|e+ZXNitq#1pxHYN~*W(IcDupPZ74k^5zBN6Bp9ImffTn_F8|DEl)3GPgcJ znLKv7=k723qSW1I{761*h&MhA|M+%iLQaTe)s`FZyy%2ch32G+CluffIUJOsXh-!Z zWPHi8f;C&2rIO5J?;FmS^SR_gv~(4@ruzMxgHv#rKUEFhU*)+F59<4s4Jc$n=3PCF zjYXnVRjklrrf+DQc$oK^pe+$lHFqP5c77IKE!BLVJS&?@n{`-Gs5noHAt>iPMa%D2 z%UgUmQ35sDy$CHwXuT_?&6R%@WxGMtJXzwxVGeIkz{QNXAAQUT*aX|y`J)*7w4xs{ zCA>J_HG{Yc8^gPJc6{3=aj_bqmb(B$7LAMjh(r^O$V>F4`-`T4u$ha3w%S2^Sn5Dr zxl(p_DH5v{mSC1{!bFYumjFyUf(3gL2Sjv?dAR|V(rc{CCgXxmxir=J=nd6jUq24} ziKM?*4(7jzpbM|N?doUFC0=YHU3!bdO2v?FY*<{V|DutC6sQrIvtA_of2KIp$vd`u zi6wM`d`3?zFEr|5JyViss)_31;GKNNID)6zY=|hY>OQ+=d${#9ZYOt5Nxv|u6}JKr zaK|j{-7ljMqp$CB%(}Q%K%lLang{wsQ$+d)*(jAGT%8lGsvxBB=wCSBbYVLN;E~(MIf8AjWT!m4N$Zk6lW;jm?HKMbi!6tFS;~u6AdHN2? zB$hIj>UCM4DuqIy=^y6Od{HI`^eG!{v<#zu1v>HVtbk?1s9}pt$$+k-t9N>xUXdOx zmN<_?)0-7J>omHI~~SzF5}o*CMLcUstXUi8DTuZ(+sp2s0{HnQVucRuf8x4rat(n()} z`IepMvNATl;aS4hXgD(Td$P7c*o#BI&BoN5rENY4MqPDFj(yP+7g1G9IGiXn z>-h8f!26rIX-rDS0B{8o4zIx7=pD3H6dU;AH)YaPX|`nv2i#)RQ}+hAmB(-(=X@Z0 z0&9D-M+N9GwUWIp6gT21rWExC$`-SZcouX6S7nE62p^Xfns)>rtq+m;Rx>#@5VkHa z@||^y1D0u2iULH%tBB))xhnEDma~`}?h=)hJZY%pUzx2}SZPY!$tZ)>#V3W*OJTH2ej(-2XKIsg|dVr1yH#T7e`8z#@ zHJosf1od{7RpUM5huCZxz;2{vWw#`fXXxx*7-emMEpAlap0Clg^C((ZN;s4OQCALD ziTGrH<)VfjEa3~P62xqVF)uyGr1hBnsY|u6)c4_G6?XG97|jNB#9Xg5n+uqDjWa^0 z^v-2~+D_}tV2x+mD9-?bJ+HrGU=tXUV@tg-^Sx0q3Vr*%;iGG}EmL~Jo3 zHC1lr^Dx@yN#9PnwB3T- z5PCM7rbQej!L=9DE)+f}53IYe5lR2b@KIuV_K|5zh5!17^er~C`P?Fh%g2&4F~|mV z46&LZ4j0YK%$Ot%|70%?Wgpg}FD_cG;9##+$u>b7jRpa??mOV$-)`ZZUK2{Q`Sxac zOiq46zPAlxc|x`gkhTuu0Nqy3)bczjlEgmEAlVFI@(Xr$YC=E}HmyH+`pdr1s|`dB zKQ+pqODkX7JYn5kSp`qLwujQn!3+oCHLdFvFZDq@Lh-UQIQ7dgQy$`siD`Nbb@Cs* zlNp;dy|FJca_-gR^=<3?wx<;oUpyTyfW$@ED%9VWP%Pa$I3<4GBa!-EyYf7`TElv- z>P$}bCgJqm!vv2ePZ&!S1@1MZeTs6#E0zg!m8bQWNyil)9_%;xFt69-gVrbPWLNk4nR06-j>D&2GnW@{pI!RLsj#}Y7Zkw`XWuoJL)P!{H|o??u5aSp z4*;CN?T5FlUY0FwIWgO6cGN)Fmt88AUxmhBE37tiUBi6AJ2l9P{93B->c{ z>!F+zo1Qxvbi3)u6I3uW3IL!MuiC!jCnmMv=0$}r5^1M|ZlQY?iwL~cn%j+D+C8a^8^z)#7|mAMFcf}Q+w)_tN1U@bjEPm--fV-+xzGwR!d{%ozZBMC=G0Ry>@7|Am_OZhz=`wO=F){3 zv${28Htd$`P-V7c_-yg+(3$a)9AT(K=3vhZimN=!X`_nc0UQh#DD;rL7R>0NQEM!} z#we0eBif^jy>02QGHssl&IeVxf{bK?qh{0D@>V6qBgfuB?r#rD?C z`dR^D3$AUC2MahKN$LQOosE@7QnX|RDTRuYg3Ca+Fy{&V0#^0XThA74>wp4^pE|^RRUC0PetV z#{#*^oDZ!w;4ev|9SM<q?uGL$aENJUv8ioKnPMnTPy5)WKsyP;YUiLS*a3VolLS8@TS`F%gf?VDov)X<>wRH;c8e8G1dPXv2UfrVFPZ> zfxYDJztkRb?ys*}k8#xTqSj_I_U>tPJ*!ub-aIQ8GfG#}V8KooxoN6HZ!gXE0No}W z)OsdrA;j`)6~DXwx9U)L1F@i8yZ6O88J>WB@XlC@`1^4f{p9PU&f7d`;rS<3RP6n) zz2V!OWxkgOTx~Y&x!sxtRDU1UxhM<-pVTOrG;Y#8pwQ{6oa>DY7j1tG6JA)`%{T#} z7*|Si>`{5w(C(KZ&ztw0}Nf!cvKtungx(&W{&57Cgi=!Tp}J9#d%p(I0{OH zQW!0h1+T)U$VcqhaQUDfcKEO}r7jd!MmMt^?GFw9QJPoo=a&?8^G@M@BCS`*3Tv3M zEpiUErB~;H{kd8ZR=~C;J$Q6{TZibmC>lQa`cBMj(j;B!E=Pkfax+q5k~}q1+cM2OL8kxC^YB1DA>b9t;*X3Yf2+ACbDRo?tQuPfW{f$QL3f*71 z*PHW!^?}9{=17K<9bd(nc1jX1&H!_9o&<-#mjCDJPvy21b$bQA{&&@k*0PrM`}UG4 zk97@xOZC$dacu~7b-c32AYEDG@#@KYdX?wNl+$JwK}%JwYHZhe9*$J(p%Pq+@a#Vb>SDt$X8IugNF?o-f%@O@!z{aEH784Cg z#VCOZKC3Oy>oqqqG-iR6Bt}6SM`^zs%g4}mgo8{@YrUiY?Twz9g`19vpM#m6WlY4T z&BgY+$0P3nJDAn(*K|aNeMm!|s%G)i>`Qu>G|p1JjZXfRU9w)J$0E9nTc8nAcV6@| zgvNTb6LVws5P6ZrvBo982MH$Q6q?e;7N%5vn~o%@4*kKWn+WSQu5}GeB}**!X^_ zgf3BHX0n8qWf`R{zvCFadK+@umR!uSa_X+OeXq3P5?hw2nOD3N5Qy<5Yv&pEZddFk zG5hTma-^q%*!au9NS#gfbTV_n{%sm%P=M)l7gh=(3lD%00LxDYH@SK@J@~K#)oqF1 zY!Q#Ek~b%EqW8d0w|zLYwY~UEfZa+1Z&;bQZ@uFV_OvHF%tu;ZI0AD2G-r_idq0-j zyQ$2!ecVm?_gu_;^$X(3EhR1Q*KS*AZK8N5$KHApWUrS zc>vxfxiRm3EOxP6T{(z*2yGAdo1lgn*^y(pH$2q%)HD#0V-|mKqgem1j`UO}AV+3MMp>O* z!%VBE0fEUr3aT##%4L?%bYq0*8}?wM4(83J5U2cr+NAvI>inF+lGXAF%h3YEQGc~E ziRx*zORJsvi4|URqyStmJI8O75teC(>71_)1WL?1n& z{ZVuJM1PfaOM&|WQNYlSjP%Sn3w=>bpwGo!6gKpL8s~g;7Wh5AZi!ErOM;AeTLW4Ol>xat3FAlTC>shCgTl?>Mk4gv*AGq z!uQiY^3gmoFx$%+xD>v5DRdoEwX$?g^?fj2M70&fRoH?>bo*)#)^W7J2TnCNPc-ln z8BOaus&VSJ;Ex=?Qj=z9i8i0+zdYol!e!V>7zP+VV}0h z?A+t(D3!LR=s0$*b=wB^Z(Lg1e2oG9yc=>>@L}JzJ9&}TKEGOfdBxOkxT#?t%~&i5 zMxJT)-}8dtn)v>%3NHQq4hr2X{%71d_9d(4838)cEbp8J?(IoBgho{Yf#1Rg=S|wW z*1)FK)5NZksu`X4CCuELHiuuMxk9Zp#9QP-`Ih6OIP?eyS=M6`g)fFq%(y}q43^bDb4`_5< ztm&c!wpTlm_)0Tx<9hkUyR-0!ebNP!!*2x}o$B>{q%Rq7mJw|1T@+OjnnZ{qRd^=fJlFC>!xvO;qMds6dmN7pc zoLCUwpCi0GVcQ_ne$E8I(H3ynq-QXKvkc-km>rMz1`tG_G3rj*?u0`^E@m`-o82oI zCft<|AmGPH(>CFEgXje^+hxmP(kA_>nLSZIzo}Fvg4yPKLXLoRGE3gjYW&uTmiIj} z#OpiJ)O*p*261j+i%FZL!G6_uW!aNYA@#mN$HE7RKt6&Nv%#VSjgf)$L;yVe4o_%s zo?@ly3XWv6!(IM zqmxN8v2EM7ZQD7qZBA_4w(U%8+c>f9$({RntNxe!w7R?cxoh{X?r(8v94|c^cTh9` ztU#4^wWrsb!s12L%sD0AHDA#;kVFx|rL(XT z`ue*Ci#&=CoRb-#Y2EYUC-nV^(DjjWyK>_gQ%D8gaPZjW}VZSuwuxb4Hi|RX%p9(;>mIjb<{> z$JHy)Cc8DE^K`H~hoz3#;Vpw_qc|V_ST~OpWT*!eMaYV{i8w{xS3O?Jcp)CVem@(W z@eSAf-DF{MmiIwgSR0Y}f%sa>-9l%8E@{97PKfN3Y!{mO?(F%f*u*^knq{7S5Dk6jp>L`Ru3WM$i=X!g}3)%DOuK zex=;3s(94b?a1K<(I{)mVZjOqP^R8o*d(_LB3~yu_&sjrnUiV+yxk;cNZ}M0Ixev< z5(;70gD*_qMWcPb55DaqknvG7GzdapIeE&(){;c*k`*GOI>#Rwjqh#$2u6VJ$w9J{#ddz*s>e6dE{~i0US_-P1HAItslGj>XqURi4 zx=Y038smBqxa}Sx!u%a_-PQ7snA{W7?PO3M?Rv31Q`lGbFa>HXwVi7lYX%i5<78{a zeu_hoJEus?zuT9y-eyW~DU5+ekdClX`x}4Zi@4!W$HcHvU;8DXeQZkuY-mSk@Rpuv zfLzyVowY)GXdPqdq6Q@ql{Iub>|If!T<@}SOQJU8!xL`|cGtCY9^^ukU9<*7Sn||p zM1{poBc8-4=726*1u+NZ+IkG5NquIscx-RQ`9F zeyz17mtAC+X^n7cm{mF6lX1Y3zB;rTb?qUxR8dqrq23=`9z3ix(Tb9H2$#GP?BflC zGWD%j*Jz-TtFht-bZ#d6U8mFmRkE8QAO~tK*=X?KsazWd^F=L~Gc~BB6J$taA0ry) zTur{TQJJ<)yYSF6X>i?=lTo9LKp*DBj#UK_dQo;$wK(hhfMu(ZJMJ0?zGcD!gLnJC z#tbT(66yOBs3}*Qqg6FKbzqi0tz|+QZ3lD1v?)w|4X)glAee-o!~!Z4=~*W3 zsA>>~hNZSDay?Whqv-0hIbEx(Q{<;nD_aJlGp4lRpY$dtip>|#v}m$K(Gi<~jFUEg z5`OF{BbW3~j56GcS_|Lt&tJ`LI$>RmMIr$B)NFXO$aNdXQiI?s>v^&Cak2~-B&pKZy0>AOyC3dWA z=lh;y$<{aK1np9x`4e42^IsQ9mAw2;e6c@2l}0?~S(sO)5pa@9r*#=C0L)qAlgViT zlQx#`>6A<<8~p;6y;^f0na~AOSM4_=fYh8+)RQO?(~VZ+h-%Y~>~(c^q$Xoo+e9r< zXz9dMf`|HSg0q(XaL;i-WQ3D)|G23X&OZFU`jnokz<-y)Pmx zSMj>PvC)xFaM*!v7!`2atZsbCXVvKq;F_%$nn!6Y&?hgoH_R>42?F6ZW!z~ z*W7AmPIlUWl?k-vjaTS=lw2u`$iVmOaARdCBz74GsfsB>(&=ziX+$RAxFWK<25G3% z-8fx}@kTOj4EP->Np=!#*&0Oa}fghAgieK%n#ji7WbPnrv08$(z@>_ zS#)Gzj5>)*luMJ6Zi)Shj=F=bT2Y;QO;9Fxajk#3Xw^f`@^>?L1@C5J$9i@zm)Yiu zGwo#WvU_q};bGlfu1_3@R(Jfi)Mwif zb4yj6(3Bsk*#iA>u}~Y1A(W;x2GtM=?xJUA#G0vFbzRk$LOY^`bY7D?-deK>-sytG^s~nqHP{ z?YXXj6#2sK_s>)gh+c)H+(hMKuRs7&l| z8s&b~ViksOPrX`k8O1RD130+XEL#eDNtUDWl-h*A|RLK|qtW>90 z5fji7oH53OoV80k>6f9c%O^h@58@FE+JrK7Y6)>jl-y+Ub*bHR*=U#tB>E{;H=E0o z^&J4!%wm1~M-nO#m6zHET6k>P*hR!`aR1-bF%jrR0O`CCpuAhs|@Y33+q@Uk( zhq+CS#t3D*+t&D+7EgyIOG$@K!R=Tooz5j*E7Lv_ZGs5EvC|I+==fIdV0zu*RZ~VW zEi$7ODZT%=PfEhj+InbT76JyPNlGB*w2?1!IQ@oh^qTHd{Kg;bEAhRLSsr0&5fen= zdeYX^3hP!wdQ8A(JNl(%ErAgtV!ce2O0mCp!EHoRO`;CD7~_JpFil)TVjIP7T93K` zNs{&BHi`s}8Jf1(8K%LIkKrD>fMg5w*Vrh$oYH{7Uvx1?dZj$upI7CA&5J=g*mk9! ziSOfuHyGYk3cD@V->kcLZ-j2%K_^k?LquT?^~G|RS+y~eE7PKrq4|@9q)5j!qpu?k zH9^h}5Rd-Yt2<{CW^FibL4T2YFY-d~hO|qK39x?uxA|bLi#6*PHG=6{^ zkS0s*tp{u5Tm900GpKt>kf-I@>vR=xFd@V1Et%*MBw&E&3#j2TC`HQcm58ExH9=8wPHg-<4V-f2d<<~h$*Mlk3*6MAiD6fsyyn#n(_(v zErEONBlKNsqG--F!0udo7|gft&>L|aU~(!^x}K6CyCVCQzY>iB$M9Z#w^yO%R$-P)e?G$^t7{vFWWFrJSR^eE#vCC_S=QyG{v5#BeUQ^FAz zE2W2`j6_O(T>}t}0smu{)A^p&_CJN$21x2vJNxn=?0GaP)g-G(KXu|NPxQA-NVZk2*(H;C9BLi+WjdJNpEWlf{;@+6~E*4eY? zBZywq43HNjFUJM>bmmZ5vZp|moIu$K%TAM;>C;?{;w*0^;}e!XK%-nGy`xZgJ9EiD zC7)d6QUscQ&Ev0|^y&6!n9 z0||!N7Z*g$)MD81ogmC%&<&3vyjB(U$B$x#jKajh>zzk0a!wkpm9q37Be9z55sn~Z z9{iVe{Q|!0Zfb*c?M1Q9EiU2FJl_pxL?hz1K4EwbHA?6Z{saC+asRu=bZ~g9C_U$Q zQ})bIG!n3Sb7S^Q^!2<4&o@@QYq+Qje2zlf%@pR95Dw$Nm(@f07OmrthEk$DcW!~J?RZTDcaLphg$i|TtJM(H29L(>h+Ewd8W1Gp9##w~a$zzZY{QRfhwl2f| z9le(4Z<3}?Z}@ui%7^H&=&|tEy4S;x5}OXjCLir~6JEWHoEp^9kq7Uj%%x`+ zgeC0l71HUM&XozK`&bwXjakn`t_iG(C1I{H)D+y4Qu)Y?`ew!w2L|x3U%$vVIv5oF8yXA&n;vTUhyX#?o+K z!o*`Ry$;DfZ(;hecE+R)`D3QHPS!2FDMAY!J|9crCd69BuGSR5S#anyvYz zzs4@arBTe7*Xpn5o&hG^EPd2i@r~le%uA%znq`()Xfc$?*<>msA<_$P#vu=YGw zY3;RlAJc3`Mh8Ags8>U-P)1hYWr#Z>!=WPBT$LD=9u9+$)MN1!sPAGf^S(7dv~T!mWvTkHF$LE>gO!; z0>tNee%t^p<1xrgQuKR2;vNmCn2-o8>mcDh%aE$YOe8{46lZ#9Ib%%zFlTIg_)Bys zWB)+FrZww~LQAPs%iga? z?Dte)H1u}5CiW_+y7Z>@Jx|8DC?fa!e9x%3x^@<&f=<-5^bsJY;JiKLaC(&$+b9;v zxpba$5tBVR!l$ITV_So<#_+e9vIS=fB&c4X{a1jdK{V#0v+?!>lPIVKee=g(j}~_U zr#3_1ejVbjO;PcejK*zXs)tJv`03-0jjSrB;NBSDc( z4w!%Gz`}x%j|ZnEP8d&Y<7?QWPv~Y6IfU_EDC~xnHenrj3*J&%n8X>dr;Wj_F^12? zn~!hv;dqRGSw-lFwXUvEqSks7t1`f=!a@r~FFv>drzHR?3yecQh6ap-1>%8hP%f#RVFVncNyb*U4RyD(Y$6r%X9i zVRVT|v#LwDQ!>du1c}aBG`d(!wKCOZT%p0`yv;DGLh8)0)a^&^N0sh3O+cRROEp0P z>J?0IX8@4Q`zys=;iR15seRA{9*9fAPMg;nbaYy=`jlqYDb+ga9Z5LC2zsaRxEwvs zy~=oc-pQ^dPoKM-K|L%e+fE&PT3O9pc@y+8scvmN+bPv`mCv8=^6C@dm&kg&a7$(0 zTwhWEg*XoiCsLP!J>yrvx-{m(t#;tZt7*0^7t@qZ_(|To*57itjfe$lz^%}tvbV*(bi8d{bp^O3n%7YGmbVX!&3BwMJdGBXl8sI9K!N z%(!OJF;1#H)uuICC)0eKhaWw19}CfCh7)HXR=T#It`S->M`}*s@p;|D+x5Ed{#<<; zAHD^7FpN-ngU^kscT;1vd)M$mBKj@eTond63he!)#05NbACw*@d6Ar%x$~q%T)t0R z|H_l~YQyL8o7}zOmL2FwF093_{OaJKl&53iV`H(@Sa0r1Uw3{|Gya+u2;_aFFHfSf zBI^zbAm6vTM4vZa%Yg{td9&8#(^_2ID?V;4aEP{0 zma7b}KTjr=P2D&XKY4${za+XFyqsYNP-5s-Z6XTerg*N&&ym6r&!6^TVuQ9jzCfBvg*NTZ1RSa+j}zHj}Np<(9sue z!)u?C?O2a8C0a%E=9Sq01!hT=;udd}RAq9UmZ-9Cj^R@g;2?9LCHuih!N=>FG25@u z0AztS_P3~t>CI^}-&#Z!G%~BYO(v9fM3g#mPW)pc&o3XY>99qxU zrx6ybf_cwjV}no}`+?UUatApPqbLe6SnUyt;FwU$H*?%$)qfyAt_X$Sz?3+htQqE+ zs3DxT^uRm;Iv#WZr7?617hUGx{0-2kEG}Zly+!4DCbba}1_O(u2M+PB z-2_;vKsyHOOcRG@p}%h@WHG#D7qb-;Cj!!16VpwqyECDdCzx{91*Bw)+@unch$x~~ zVkyPe3#$BQ#mC)Hn@owpfrR}9*~r5wQ=EqYXOYB+TzP5b*BzgY$rB2vJNkwQvcHhg z7d{8I;SY8lyK${zm?AH`a#w)r)M&MAMq`4wGrRER|!1?j{#9B;D+ zEDqmK`So=copG-5L-!qvihStO?*3&wsT4Vy93{4tNnI9Q%pQGejfbXE%kw}D+R0Sg zO{~!+EQprOGjt6(7QOUx(?$i;#wKstvzbG7`IBp@0j2iTsZv{+MYOqbDw4`6I9>CL z^u&YnP`f{?DlNq@PR%7j)FP-l?u0GXR-HukQd_FZZLYqT?tMZ#Quwmj(x3R^z9aB- zKy=I=&Nn(E32?3IV>yA+jKZNZQ#aQUR>{@ddN&i*Zo0-sLgr#Rv zmfK|Ec%&*?yx9&?WzYj#dm<^PDGqVQ>!OZ#V%KVlFgzOP%Xf*WE zLu$mvEmcK~5}QaDqmLAlcm=Nqo(QM)S>NbUFKwxLwSQ(H?u<4G4?tqhs){ZS1+A>n zhu7DEgx6!YAfW`5*o2syvmKYZN_Qx2&eNa^x~G<>x?!>%H#WvLZ70?+5{_}J8aH^R zlnF_#yPHb2qGr&PF0%y){z)jthCWi^>?}7v1!F#sG=X!G-y2j~{sEqa$d_kupCii` zkszTNtcLU8sJqG%eoSJ_Bg4zh1#4r9iARDLW3zN#u??_GXCufI)2!C3x?8cvkJCxb+G$*k2D8&u zRh4Hru|56nPrQ5DH_3w|2f?;Huil>8ZR2Q4jRLqNa+dYUm z!MzFE>`U;b@lG6_c4*)|a$Rp0#m9Zm9TN=PoV3Ics9WAfD2(OB=gsFW6UYlB;HTKp z^tR4XrpNg|H^qg;jO3a%I+o5`^6K{XHX`#PcYgpb0S$PMoNv3u5H~}om|e&khuqnc z3`nooPm){dB!D=sco`&af1~KVMO69exq-Rou7K)R;q2HymOn605~jrdjxc}=S(-T- z7uJWNFIIGa64;__FBXxQo^$WpbU0!kijOw}EUXMm9|>p@0jE|Y0fDt)4mV^-hLy|> zYq>HfgFq$yOzH!>lD*?wD8g=V!5=Av0ZcbN_#S?khHKJ^p*T99IHS%|gy5sf?mD*s zQ8{!Po+7OnH-_kfIpQGL`u#*|a)pH1q|Gw=?6tdz%cmo^-b@Dd$e0RY$Adwhk5=CJdXCo5}yq59J!L+`l9qmg~FF4D227ISrE4yu5ut^*oZ;IJ z2WRPP`{J;zW5Oi(w7`jZj8r_eJK5>gWm=VTaVhE4_JXwxL2x6%G&HqC?1EnN%vMxN ztl6T@3vE)gUkJa1(!2ODUca3633-@dHRVD@<=UXZYuAw#ZQ{xG-U!T84OIe$4l0jTm~xSQB<&x%GQeUyWhu*RBGSODjd&nh0jK!-N_gQ*CG-#;c(s zg9F*MS!|nVs{;2VRB}(k->hs=E^KY`P7TJ{8;%wN*vH3)r*7hgS%`vco6`Tj{NP8d zFYfWCFbT;LZzP=zwItgv2I$!cZogh&Wq}Y(;H9tUt;&j+U+MgdS96JOM!s8wZhoK( zmy%MH8~MHWQ7FVJ{95}1BPVc;6`iF(0Ct?j@>^r3j)B?Qk)5ODJkkg?GgoI-V|JlK zn}jx4o1T>CKGyGj{#Uu-5v=4*#J;2a@@*U%M1H)%>%AU~}$ zrL2*?B8oRdX~B>}Br|6k7*Ox=occ~|J~bdR(`31Jz#)b_bP7UfDd9uYhU*cKU+$$N zX!7^Yt>E5MiUV|qh?!*ENNboa1y`H5N92v#634cI8tf+;DAVtTLtpPdwEJQ%^2fFr zx^J&2@_g<|7(SPih9~U*PN3W%Fe~t3talq{8j~{THxW~3)1`!bd;Ner31^hT`#pi9 zI}*B07KXnYl4pmpF8BL|t&6_M#Z0rStKobtDhz>+*&Z&_TJ}C zpp08q2bTx|VxMdNree$dU%({%bRg=|mGss`&KR9M8>{as{d#UDZV5arnX~b;;p8;c zee4)N2h8tRDWzH1_X*a(py=1^ex7LAW`LY&u%HU%Nx=J<&eo_IZIS$$qTvr`QCg0F z?=A4_h00dR&3^^0_e5PR4({)Ds(|lY%_C<_1J79(Pi53-lEi|@(L7pRy66;~k!-xi6p8f*LUf`N={wb>>)d`tlFwg63<*N! zKcdDnq4v-u7RNut3TMCy6%Tsl%gUVCQYEv-|1Lfx zTseGU<`{KnPC#3@ydIK^&>*{(;!XCTzT1rO$C1K*61s#A-ys~Z2iq4GM_R$6HtvyY zo@gadcqGhiU@*~TlAvJJa5y6jb;jgDk7d-Wk)&^-50%vQCSd{{K-7bq{UFX(!6j&j zfy{6)n1ZB>ZaJW|E0lbTzW8bMLr8MEpIxi$>vnmSwupq`!pFu&ZYmYRQ4x0ALhZO~WT1sfyJ@Oz z?eZLyA%Ld{6PJueRA-sBMdeBP;Q`{4{2T;SfRmeQiyq0akG3Vbt++>1`gjFg zOH(uqA`1oi9B8UE+-#$W92+Uuy0*TN@&=}y*HIYMBbQ!lxcNjkqlBdLI2Bobi#C^c zDZ~^;W)PO&gqj0ndhijiwZbTk!9-G7Eu(=}oSBo*ufdMSh87d7@L4y%`-Picm|nG+ zFO7|+8>e(D?dwIxZu)~i{;Q$vY&ii|Z|Ev;Bo#QSQJ0Twdp#VWVwdFdWcmpnItLk| zKQ(0YUoqZY=@EHPHf4UIAZti7G~eNZ5S~cLKwhvBcy#m6LR4Q3!a4e`AxGSD4pc+f ztwqvaiqH!}e0u&uwF1dy%p`a-W~;BSo(X$U`b`#yhfNYj1W6Vxw$$(u4=kb*<&*P` zE|(?2Jb-&lyzY)HuWhZg>bf4qSqi7AdS$)H9Cc)O z^3D6OWLUdVFlnF{>3P;#S;4l)B?~T{VQZ1w##_P$>|98 zT3l(->pz9mMSq9YupoJHlra2CDs7fczf&r6(L53<5O=k5*A+U38`-5^52UpPegEH-LStOs=jwb9s4TG6x(?rR-|MBq88bIsil zC^p{5_Bf;_Av}GA8MXlqLbm?!0MUU-H=ONPw`bXnoa+LQ-;755F75n zgJkpxZ8V@RU&h;iGHeaO|Bs`yPJ61K?}f?7odpl-EjuKA?^niV-UCc*+o1cM?I?L= zKvSK!T->;<9$UmBLKQTnttxpHt?3fnYY*MVRhLEEo!%Dq$Iy7J1x;->$|iy6zuH%M zvvr%Ib&64c$u-e%q7b^-zO}3}O4c}$LW@5h6S0hHIv^D4@u}NLGn9yZ(?2OqzkaV{ zQ$BaabuFyD;qhuy+ohR8ntcSJeoV_r0o55Jq1wUAk`o>|reFY+DQG^5`1W})AiJcy zEc0^+qhdp&y;jzVMNDecy1d;kf+Y2k$WJ>&^f8Jf-AZ9TZo@27dObD`L~8wHp&9pq zIg3|thtgQbjsD1Vdc)9&Q5t5itT{abNfmWft?@nlW&DCz{;7Jc$M~=cy+dThjO`7+ zkg6Cm@o|t!tIKtNt2$Ozs!m6eUx;%3Rbb$`q}<9~{v$6Avaga-UV>Q(rKz6+xeZ$G z=nJWHWjI0PT}Pu3#t7H57%dD}$!imk5Y3|dhAaPO+930eVbDPeL8=*ZnCL?vDR2)C z%WVuF6O)&D+#g&O{`}+_jcm+M0Kxi}Es3ZHgy!ObS3y2O)d(A@GnP$=^0y}_i+nzq zcR;VXNYekS03^E~6&$|^uMJmh3g=?6xqJ4p4z7*@C*cRn1o?tIQs1-W+Z8%}7s3Ih zkJ%WILOdTGm&vyOgqU&Lg!AVJx4M`ok_>2L`kT1M4^~|Tr)}Rzbd;35;*<{rwH~&~ zzP!hIwhMiGwd3TSAcF9gvibh8p=Yh44Y5tE5fqq`hMmdK>7~oSSBo>glIzyni1i zHUu@M4Xod|nU2ff4DK-{CKt%Rxm84UIMgXLR1C$6lK1e;PB!F}OMBQ{$}U-MH#|I0 zG**96c;g(!kiV|WT-sI-9Wga+A28qeyCKs%N_Nv(eGc#mAxL--BziVfy&%_48?{dk z?K%^di+@O$5G&~G_R{P_{tloPAKKYZ^BfNwe3o`=s9=@wRKi_d1HejLwcHA+_FK5hFwGY zR|8yA^X#_un5}&&YsIsAstKU3tIh=bDCc2A)p8{2%rLZDat7ok4>ZRC7ea}1ejmBd zQK(LpLQz5Mb++x#i>kGRS$Si#Ras-qgaEyr`uIHWn>V-W_lYh?EGnp8+H!=A-EW!9 z{S<-XQ}69BGLouWWtKelQt3tg8QN=tRZHm?=c__qDABM)y+54JrHy3tL~&^ z#$x;FVEh-kOGmZS(|hQ{$IqEjoe>^VYwC*^MOT{CP4YDaM_3o7nN1 z@V<5C@yIN=c0|XW>tgpduLbh14;M%p@-bACotCTO@A!deK)hchZ+bhCK1dr>dYrb) z*Flr5PGJ2h6r?j4SkN})CJN{)VLGh1flx*pZLS3WFnlBKC(={!#zEVK%O4HPRTE%9 zG2__}qhnsBFUvutbL?N+Dwc6$Rxyla)Q$>Dyz&t|gKyE|M=XS#xnMc(AYz_BC}`w` z`qbl!vGfA%yn1L25OQ2Y;vrF9$(+D?bs$KyjG_lay^sd1r(kL%EreVCAV(Bp=MOP3 zT2h8H2Xz{R2snx6sdu*Yn);44zPEUqO0QB}2~fypEphlIlNqI6dTZ9bEHCTYsa>r; zg+;6oqJ#gbzI$%EwYTx6Nf2|wvEXU~{7YKgj|29sa4K{6Y7fN}++qD|Lrd#A-_XZ+ z%39ZQ4Es@pyWe85s>obn^Aauas#~{N$070h86!@M*_>(ednM|IYEs2BlLR~O4+k|Q zSUDONXF^7i!hR8Z{3|HqfBmuNX*}ZFzP2XQOSKx4XQ2hnbdyVTtstQS%{JYLb${!% zVQ&iOuofjQnXp^jqMK~5NhTWuS2)|V@(`8rc*6nG01pXEya;n=Wd|ptD%nk z*Gbg%zL~x*M%ExEs`60KRNrVue}5dFc_+|iZ2Az#x1FiORb(!hGId8R;c>`mZ7hU6 zku@09B7ru^k(6&z8Ux|^7y+@T4x=m*q1snZ?XRj*jX+E2!^cXO>S~YhADr0HAgNxd zo#e41R*6uiR@<;8MHp-Qhugu@P4U!Vy>g61_a$`Q5CLH?2yb9@W%08Mtn<0z%Uac3 z1a;BW*cyZ-g2<4RQ(ea7t$5w4qD;&Vh~>$3Ur}PSMCwbxfai~rNy&a6^btvPz<>d^ zfa2bb@mjAR5B-mk)HP~!Ptkx{{@Bed-VhFMxY}ZYpQ_T_l4?$nk%dcdc7Mer{Bi$j zZIT|Fv;;g;NM+ijZj(wDv-8mJ6{+t~JDe|*5@Qt+590)|AzjONtD;P4eZQ$S((-5l8_ah#dg)p~c2nJi; zGT*V;bPK$?@o!mxe&wd1;*a>r;bZI%ei66N^?aBSzA#8e01?8MP2s7dqPafclXSpC zjHqY?^hrd}h@IRjjh&Nnjb0b9EfdQ>vOM^qxb)0kE8|ZgUy(0jB#nxa?mfO7iG%Z@ z^FXGQtXhynxz~}4ccTu8J1t++j&8fVG)ZRW@5!c7^+r{JLLbB2A8`E>zEI3YBP8*8 z7MT_jQM?e1VpI(xQ}>6zWsC8hm27>>w*u^!<*QetZ~oaH9a;O&qTLuS4bGyHcwTNa zpp;sQOOb6w#k15d<>k()Rl(>_r1azZMq40zntMVhx%$2*KiCqaD6p}7J;0)a^T{-q zSIe%merIb^)i}`B9byo@N;Nws@?>lN zy>#S*_(f=28AL|zBnO}wzoVt@D$>8 z2?%{XxRH_#e^MaEbOX)}+9Ji;tHeq~^e1T6XOSPIYypL+k!%%4VXujjcuL8mUMQ>Z z1VoSbOIVtL=G`%QezDideb=fp-U4D+&H0FoqW)5M4< z<2y0OWRk7}&QQ%@1!?wwUn&ZJY^DvL(u_Ib!IAagYpb5m3*oJ4Dx{t_ZaKG!-FTzY z4@0$@CNR}RYxx1ZHTy7G&{i?j4;pRJt_t_03Jrm@C)SD7+fFd-SDC>O3z-x49pJUj z4LWi3wGtJomU?Q#rtLh(IDGLPaZw%!zWm|>H6J<>36Azr&2U3V1Ku+)Oan!vh}%em zs}$%R&y0XNAF@v>=S#B@yU@O%vT)I~@aA6n1TqVCC!o-O zfb9Fm#+Gkz)2Ntt4cd_#i;b^y22ZX}xjj43SOb*zaX3gXiTZ z=O0io_+8kxQ1DILb>L7P1%J0gwdi1TbJQxwg^eg?={S=>R@I_zm?TH)3oHrd7*PHdPM3u~Q!X0Jh zzs^7vMm4v3j!{J;ue7n{Cdp*0?VJ0wyG)*s>_6Y_vc~7BGv4Uk_l5hjBkl|kH#?G) zWaj2$)8w->I6i}!xQdgqSQH7Xz~rXp5{>QBghxJZ(NphT*Jn3vHtJ^B zniTu(n=V~|*&65@%LS8{5FV}+Z3YX#8ucJ&Oc+idI*>JkN;QF2$ry1lV@xX1%+#7P z!%8*fI=%(r9}CmWMSEqWxkpkzD5{>KuAZ>+iC)$U>KFn;R%UjBmZn}Yq2r&~s2=RB zmXH&Xk(lj&_xTO?N{Z8ng!4efZluC~xM(wjZZocKGtKT3YWqf;2jFQnhj0TvTn^3n z1nRA&Y_H|;y%HN3D?A(Hdp99`+?)0e_+8F|_@scoVH=zf_Wt>UJHYXV9_EC(d+ZRq z$AderggedTlLp|5J$%F8JpuFUkH{Vx&mO4A9y!bYlaW2Vo;}!+J^H5GAEG-ntUG}4 zhLq-nmF5ht;e@8)47cipxB39E+Y|R2Pr?H+i%+% zziE%^>In0Gy=(@8fw{u{-v)|V}=}jAs?&psh6DckMC~TN-xA0*l%EY8Y zmy1M?BbSg7l@V7dte9`M@M0y&#G*r^!<&vYlb95pjNSC#!586muf^&5Be%6Qy|qQR zwNSIQVY{_*wY7tXZd*-oG5X%%_n(+Ucoz~lh4{)RcntFUKa;||Q;PQpzyCyK-g()3 zh2MXoH1Ev(J;U!mQJZ&h^4{V1pC~Xm#dr_#`%hFDoTt5)`28nJ49+y(Q~drDH3k=} z?=61+iK5+8j`tY9|3ua9dE0x9-+!WP_sso0$L~K;w|nvO-sAUQ_?s_qitrxvUl=47 zSo=2o4*EiP{{Ig|biWZCk^bWTGa3K$Yyb0%|NLJsx1piQkKZhf-Jefh1cTgZ9S zBIn2{vQ9?iGAJH7PS(g-@&q|gR>>t$5^@5ROBg+u&T5ezWS%Tw>&dEU!mVR`tbI_(SLvaRV+G*{)tl;RyWG;xA8*y z7d#K0UA??<_bxaQ|7RFC&Ypkj%$e@)CkSEt@aEq>zP5UrzuWsB#{PtHk7p^=hzfXUM{%_FlpI<+<>fQ|MSl>mzbz$|%4e}N8BF1;A{%G~W+H0q0{s9I4 z1=_bZ)-PY7f26<1`%hzhCDjf3U4852XCL$TyhrTJ{(t`4KOew28P{5di;=?vRth6r z^Vxiq%1T==o>F}B0^uoHO{6JpC7(t$Laz~>81xW51KPp7eveehGh6pSx-ws+s$*yN zpC&5+@;rU}?%QJ-#u8)_W%8kYk-SP?K}kptcawy;M|ji)9MY$ruib~9(xVQUr%?;k z*_J#H)YP@A>bpN3zY8h>`?2a!C^t(wH!H@2TS%X~$+#}0VOqB1dY^mo|8>C(d4xPo zenCgtG861kc9ZYof7c&{i7t|t=yP;GDZ^foPeo@t?Jw=zOP3c1O*%}=gg(cvG6N6u zHO~0P1`5q*be=2PRmRnTcJZPHqB8rd_N3V0sPc=on(o64k3c^<_o#b^ub+o^~ikfIkil%Of=RPPs{ z_a3Ep%5M^iOQFgw44-4Z5(koEy|08)R`_))U?x5|rY3-lO3)sB=LVS|50f7fQtU_} zMI4oqCYAToy|k1p4u;Fa<)xid{i%66C?(1?YSLt9O302!XK81ue;?bc4VH$>0AYAP zU0NRYm6BLUF(3DYhF=Vgqe0xHaWbiRfMb73@yXwjzGZ@{p*Loyy5+Bn`@&LEpPbW7lT)rSic4e6(72{^t&>Ex`W!u$^)R4O{PK%y zJQQ=2_2lqw+gq5PZFh@B*`JAGdfj(xl}4#l@`AD^HIs4QuT&fLYR&a~QPgfvPffO? zNUu1WhL>p?O>f2x&NYJ?dem&Tr`w(4o!50k7o1ZD!Fc{=%!NE0OPz||r>;}3b-KM$ z6z}P_n+>&Rn2Id)7M$NDC&@L0ZJ2!$m;eyq&_i#Q!mJ97NnoIEpL*B@oA)e@7YE58 zwfiELCHK++=4TjYI4VRVsc=*e%$;JWcq=H?3+@Gu3P}|3ryO+E7zy2wx)8cFbb8cw z-P5jTnsv!^E-llgFtcD>7))}_$;6f9yg(b8-{mu|Z(sf^Bx+z81V>T_6%iDUj zS~N4MANOs`vVtRa!}p~S!m+(dF|;jjP%p<%c|zBPDqiz!yU?f=Yo03$g<@=(1r0_v zm=G3|5J0=3HUow4#0!?-w&~cW8|#*-yRKb}Oe=}FQ7=s=C82|t72NPG+vr9G*@;5T zHKU|inMmRk4?=IzTfpP1 z1xu-mr7&#zmhz494Hp^1k~$+0EhP;)2Jj=G2x;m}^I>L#dS0d5-=hhO0|E_DP}7v$ z)VO4Z;7lmLaZO8doymIW0ZrHL#^w6Jv+S@~@oZD-uq_k5->{DaK*#ov>yw>{+C*zx zsZyXe^XMirKf#93O-qkm({@ao3#(!~F>nAHl->X`z{e6oxhd5OrWF?p1zD{ZYmI_! zdlPXoQE4WTY1)SGct+reLew>E%fAs=w(Sa$B-6B1H+Ym-CO%^*PT>dXJBVLHbc9r) zBfImc(&?wc1%|wjCX1*Ll$7yNt9`vZ6mprq6IX0IDYo0&W(J49;2C>&PAr%nckL!D zoD^-_ncT6si!D!0*P3;!S*AZ|gwD2hzulaudBKb}-K}d}RH|)iJ5jMxjb|%W=2-pZ zh6viBim@8L5+0HEbdE0TrxLTVCB|Jomuo)+Y zWv!Hgpj8@`T9kas_|I=PYK<_q9JqE*NIgj!@ChRb<5ALTC7(EoZyS6C(c6ey3@7L; z`7$BHcA-5~aZ0&^Xi!8jD1>#ErCWO#N_M1u0)o|x1lG5g+rz>7&WBL{d*@4$fV->`edG;9-vs7M-RG!$jY=Jbf78p4;(4pB-l#n z7*ZPOqbUO$eGL0>XS;Pzqg?e1hG`lFzlyJzEq*bBT!RdiNj7~#nJtGuqo?~QNlB?= ze732#g8&{71ddY-8_wg9Oe>90rtp%7oh^%z`7lF;T0=p=-mvx;WhttV~x4MSUb63Ziaf>1+ZvIileZaZA*IabaLjozZ|lS+H}bXs{Y~sh%1ux#@Xgv9 z($X+*GqOTv@;1kuALVTwiRw#vTY&zDt!eGKQ|lvSw;xGukFTA5;`}O7&I4&;dnK(e zA^BZ{tb;VkZIRt*ZzjlDf04|QU3dmagLlAd$bt3Il>_US&aSlv^9!xrt@M4U7w2}( z4HkA_#wH7r3-dp+>Jw|1E}vT;wRX%S#s2SAALNy(*>k&P?X1Lq1E6YTAK4Fm4w5gD z2gyU^OXLtaOpcJFY806nK8n#&DU#Z!YNt}z&O@nkP?eo2F1X(O#_R8^dYs>?`ai^< ByQ}~J literal 0 HcmV?d00001 diff --git a/app/assets/fonts/icons.svg b/app/assets/fonts/icons.svg new file mode 100644 index 000000000..9a8da8380 --- /dev/null +++ b/app/assets/fonts/icons.svg @@ -0,0 +1,22 @@ + + + +Generated by Fontastic.me + + + + + + + + + + + + + + + + + + diff --git a/app/assets/fonts/icons.ttf b/app/assets/fonts/icons.ttf new file mode 100644 index 0000000000000000000000000000000000000000..787788696608e9e3151139fa5341e70a68bc0b69 GIT binary patch literal 4072 zcmcgvYlvh=6+U&VZqYVe{IaNiBh|Kh{8XB+PL?~(PMOoB-+0~yM5x} zy~7j#{^Bb{>=fFMp1!!gRe85_8SOtK-G6TV%GT}M;6&k1&~Kf)@buZUy@O8@@gqde zub|7pHkmuzd`#~Xb&!Io?iFgC^Rs?hj#no z`cqr zS`WP$)M`Hg=M2ckUv6 z;wl%WRF>_yo*#VT$^X|0bMy#3LqB6@X{*%fr#?Xmw@(%wT4b4a=!EjUF`J zosp^=uzA*<8QjGW8^e{+DnJ?Uh?Oj?)8`BGhZ3`w0&hRrh zw+vyJ!sw=Py|KU^nzYbiF#PkMFhnF5rW@(;gKn@iJKyP*N@_3{C+u42*Q?EPxf~QK zhB9m}!mwIvHfnW0?8kAZGdnZgiDR?s83qRdSV9;Uv&^{F>dbb!rCYC=mMMi` z9D<2_WsHS90#m)JIbgn5sdsz*a-1CMby`imXSj|m>;|0Qr&IJi!Zyr44NL$CaOk5o z&tO)K#xyX{U&sRNf}L-kCCkHfnAv?9)6zTH5aTBpPH@zS#!BO;6U?1qsCjEB^#XSS zM~x&h_)`wLu8gH=DN{;QStdK-`u-U|u9BbjDsaMM<@7jTyqE0sO{dOe<-Hcy7G<2Z!}-DVgnDW&HI)l%d-!LU(Do(`mG zN}atLxNfmoFVzEI6^o_Bv5N+bY;h?at{{MMU2g^k-$|AnDO}rgZ9g#`+w^_69@|bD z3#(C{P0P{*FQ;%lbX=(GCYXgU^jrr=jjJT(R=VPb!)d_GxNfV zsv9DcDqvmM7IK#|He zxe>z577K!EZ*a(vjsOG(pkTJGgl!1LEh)Ive&gGY5++xTC;*zi+e<2qVc@t?sT#Pp zGGSXT!?5W-SO7Y1c+#BiPSvN{d&<=!b9umakoh4tglRiw;@hrgyFxlu*Gqr{&|vI3 zkO4l9l-f<1QM8?;R4l4mqf~DeT{oCY(y3}IjcwbtLNBlio-D>a%XPx*1;=%LDbsY8 zl^d3bQ^&?NhT#;xkG+lfH9|uw9Xcjo9#y)7EV#gscd>LC1%i?`K1#i>S4UE!zhnXV2X5_@@Hv@cyYKI}pCxf`!wP>w44smJjgNnb~@);j}93JI%=3(;0MHQ}v)Q zXUz5*hLF`-hq+!{s@9VEYK?o&V6`a=ok+)61Gj|x*iG!CJ&3bZ+Lm*-!vR^i-i{N( z2ZyQou}9wY{3xl_ry>OpQ8H>JspU9p|&VKOMzdD5s+$rP^zcUXpESA4cL`wg}w?s zAuJp+i@_)%ZSLRuaX`)ty72nR5t=#qvJRyB+uoZ0^;!+B4&vZ3lkpqr-I=9{=Vu2f zrsmOuts$~p zH#cvhQf}PQb^|XA3##BL(+K%)AB$alMg144L1x6n+ z;N}>k;0Uiz)oV%QyKt`_PIm+=+tu_B@7Cu!k%!mI1i9;(+g@ZcqRZoYXn3(Og~^81ucnZc<7w<#h@A@8~?8rcLbb zD@5l{Z;nx%qzyVpPeP7$!b|hy#) zfHcI2eefDOwmH6fZ1eKDjrMSHseQ1Wt%q`X;lRRhX&*-Hu-F#nQ7m&A!ky0+Z-bFu zkRIK*eC7P+xV>)?jsKmMy|FTrXBpe6=Cu%|eu*8SqtNGG`ZV1~_tR(S0Xj|((h1#* nml-a_sOcw?-luw}GT1IauHT^gb*8!C_vV*gdsmmc-?{$*uK25l literal 0 HcmV?d00001 diff --git a/app/assets/fonts/icons.woff b/app/assets/fonts/icons.woff new file mode 100644 index 0000000000000000000000000000000000000000..a6676b0db6661734ebff5c7b85e79c5e08539df7 GIT binary patch literal 2976 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 ZmX98FN3;C%AN>v4QaA#@?WO^&{{ccXAa?)& literal 0 HcmV?d00001 diff --git a/app/assets/stylesheets/foundation_icons.scss b/app/assets/stylesheets/foundation_icons.scss deleted file mode 100644 index 2b6855c55..000000000 --- a/app/assets/stylesheets/foundation_icons.scss +++ /dev/null @@ -1,594 +0,0 @@ -/* - * Foundation Icons v 3.0 - * Made by ZURB 2013 http://zurb.com/playground/foundation-icon-fonts-3 - * MIT License - */ - -@font-face { - font-family: 'foundation-icons'; - src: font-url('foundation-icons.eot'); - src: font-url('foundation-icons.eot?#iefix') format('embedded-opentype'), - font-url('foundation-icons.woff') format('woff'), - font-url('foundation-icons.ttf') format('truetype'), - font-url('foundation-icons.svg#fontcustom') format('svg'); - font-weight: normal; - font-style: normal; -} - -.fi-address-book:before, -.fi-alert:before, -.fi-align-center:before, -.fi-align-justify:before, -.fi-align-left:before, -.fi-align-right:before, -.fi-anchor:before, -.fi-annotate:before, -.fi-archive:before, -.fi-arrow-down:before, -.fi-arrow-left:before, -.fi-arrow-right:before, -.fi-arrow-up:before, -.fi-arrows-compress:before, -.fi-arrows-expand:before, -.fi-arrows-in:before, -.fi-arrows-out:before, -.fi-asl:before, -.fi-asterisk:before, -.fi-at-sign:before, -.fi-background-color:before, -.fi-battery-empty:before, -.fi-battery-full:before, -.fi-battery-half:before, -.fi-bitcoin-circle:before, -.fi-bitcoin:before, -.fi-blind:before, -.fi-bluetooth:before, -.fi-bold:before, -.fi-book-bookmark:before, -.fi-book:before, -.fi-bookmark:before, -.fi-braille:before, -.fi-burst-new:before, -.fi-burst-sale:before, -.fi-burst:before, -.fi-calendar:before, -.fi-camera:before, -.fi-check:before, -.fi-checkbox:before, -.fi-clipboard-notes:before, -.fi-clipboard-pencil:before, -.fi-clipboard:before, -.fi-clock:before, -.fi-closed-caption:before, -.fi-cloud:before, -.fi-comment-minus:before, -.fi-comment-quotes:before, -.fi-comment-video:before, -.fi-comment:before, -.fi-comments:before, -.fi-compass:before, -.fi-contrast:before, -.fi-credit-card:before, -.fi-crop:before, -.fi-crown:before, -.fi-css3:before, -.fi-database:before, -.fi-die-five:before, -.fi-die-four:before, -.fi-die-one:before, -.fi-die-six:before, -.fi-die-three:before, -.fi-die-two:before, -.fi-dislike:before, -.fi-dollar-bill:before, -.fi-dollar:before, -.fi-download:before, -.fi-eject:before, -.fi-elevator:before, -.fi-euro:before, -.fi-eye:before, -.fi-fast-forward:before, -.fi-female-symbol:before, -.fi-female:before, -.fi-filter:before, -.fi-first-aid:before, -.fi-flag:before, -.fi-folder-add:before, -.fi-folder-lock:before, -.fi-folder:before, -.fi-foot:before, -.fi-foundation:before, -.fi-graph-bar:before, -.fi-graph-horizontal:before, -.fi-graph-pie:before, -.fi-graph-trend:before, -.fi-guide-dog:before, -.fi-hearing-aid:before, -.fi-heart:before, -.fi-home:before, -.fi-html5:before, -.fi-indent-less:before, -.fi-indent-more:before, -.fi-info:before, -.fi-italic:before, -.fi-key:before, -.fi-laptop:before, -.fi-layout:before, -.fi-lightbulb:before, -.fi-like:before, -.fi-link:before, -.fi-list-bullet:before, -.fi-list-number:before, -.fi-list-thumbnails:before, -.fi-list:before, -.fi-lock:before, -.fi-loop:before, -.fi-magnifying-glass:before, -.fi-mail:before, -.fi-male-female:before, -.fi-male-symbol:before, -.fi-male:before, -.fi-map:before, -.fi-marker:before, -.fi-megaphone:before, -.fi-microphone:before, -.fi-minus-circle:before, -.fi-minus:before, -.fi-mobile-signal:before, -.fi-mobile:before, -.fi-monitor:before, -.fi-mountains:before, -.fi-music:before, -.fi-next:before, -.fi-no-dogs:before, -.fi-no-smoking:before, -.fi-page-add:before, -.fi-page-copy:before, -.fi-page-csv:before, -.fi-page-delete:before, -.fi-page-doc:before, -.fi-page-edit:before, -.fi-page-export-csv:before, -.fi-page-export-doc:before, -.fi-page-export-pdf:before, -.fi-page-export:before, -.fi-page-filled:before, -.fi-page-multiple:before, -.fi-page-pdf:before, -.fi-page-remove:before, -.fi-page-search:before, -.fi-page:before, -.fi-paint-bucket:before, -.fi-paperclip:before, -.fi-pause:before, -.fi-paw:before, -.fi-paypal:before, -.fi-pencil:before, -.fi-photo:before, -.fi-play-circle:before, -.fi-play-video:before, -.fi-play:before, -.fi-plus:before, -.fi-pound:before, -.fi-power:before, -.fi-previous:before, -.fi-price-tag:before, -.fi-pricetag-multiple:before, -.fi-print:before, -.fi-prohibited:before, -.fi-projection-screen:before, -.fi-puzzle:before, -.fi-quote:before, -.fi-record:before, -.fi-refresh:before, -.fi-results-demographics:before, -.fi-results:before, -.fi-rewind-ten:before, -.fi-rewind:before, -.fi-rss:before, -.fi-safety-cone:before, -.fi-save:before, -.fi-share:before, -.fi-sheriff-badge:before, -.fi-shield:before, -.fi-shopping-bag:before, -.fi-shopping-cart:before, -.fi-shuffle:before, -.fi-skull:before, -.fi-social-500px:before, -.fi-social-adobe:before, -.fi-social-amazon:before, -.fi-social-android:before, -.fi-social-apple:before, -.fi-social-behance:before, -.fi-social-bing:before, -.fi-social-blogger:before, -.fi-social-delicious:before, -.fi-social-designer-news:before, -.fi-social-deviant-art:before, -.fi-social-digg:before, -.fi-social-dribbble:before, -.fi-social-drive:before, -.fi-social-dropbox:before, -.fi-social-evernote:before, -.fi-social-facebook:before, -.fi-social-flickr:before, -.fi-social-forrst:before, -.fi-social-foursquare:before, -.fi-social-game-center:before, -.fi-social-github:before, -.fi-social-google-plus:before, -.fi-social-hacker-news:before, -.fi-social-hi5:before, -.fi-social-instagram:before, -.fi-social-joomla:before, -.fi-social-lastfm:before, -.fi-social-linkedin:before, -.fi-social-medium:before, -.fi-social-myspace:before, -.fi-social-orkut:before, -.fi-social-path:before, -.fi-social-picasa:before, -.fi-social-pinterest:before, -.fi-social-rdio:before, -.fi-social-reddit:before, -.fi-social-skillshare:before, -.fi-social-skype:before, -.fi-social-smashing-mag:before, -.fi-social-snapchat:before, -.fi-social-spotify:before, -.fi-social-squidoo:before, -.fi-social-stack-overflow:before, -.fi-social-steam:before, -.fi-social-stumbleupon:before, -.fi-social-treehouse:before, -.fi-social-tumblr:before, -.fi-social-twitter:before, -.fi-social-vimeo:before, -.fi-social-windows:before, -.fi-social-xbox:before, -.fi-social-yahoo:before, -.fi-social-yelp:before, -.fi-social-youtube:before, -.fi-social-zerply:before, -.fi-social-zurb:before, -.fi-sound:before, -.fi-star:before, -.fi-stop:before, -.fi-strikethrough:before, -.fi-subscript:before, -.fi-superscript:before, -.fi-tablet-landscape:before, -.fi-tablet-portrait:before, -.fi-target-two:before, -.fi-target:before, -.fi-telephone-accessible:before, -.fi-telephone:before, -.fi-text-color:before, -.fi-thumbnails:before, -.fi-ticket:before, -.fi-torso-business:before, -.fi-torso-female:before, -.fi-torso:before, -.fi-torsos-all-female:before, -.fi-torsos-all:before, -.fi-torsos-female-male:before, -.fi-torsos-male-female:before, -.fi-torsos:before, -.fi-trash:before, -.fi-trees:before, -.fi-trophy:before, -.fi-underline:before, -.fi-universal-access:before, -.fi-unlink:before, -.fi-unlock:before, -.fi-upload-cloud:before, -.fi-upload:before, -.fi-usb:before, -.fi-video:before, -.fi-volume-none:before, -.fi-volume-strike:before, -.fi-volume:before, -.fi-web:before, -.fi-wheelchair:before, -.fi-widget:before, -.fi-wrench:before, -.fi-x-circle:before, -.fi-x:before, -.fi-yen:before, -.fi-zoom-in:before, -.fi-zoom-out:before { - font-family: "foundation-icons"; - font-style: normal; - font-weight: normal; - font-variant: normal; - text-transform: none; - line-height: 1; - -webkit-font-smoothing: antialiased; - display: inline-block; - text-decoration: inherit; -} - -.fi-address-book:before { content: "\f100"; } -.fi-alert:before { content: "\f101"; } -.fi-align-center:before { content: "\f102"; } -.fi-align-justify:before { content: "\f103"; } -.fi-align-left:before { content: "\f104"; } -.fi-align-right:before { content: "\f105"; } -.fi-anchor:before { content: "\f106"; } -.fi-annotate:before { content: "\f107"; } -.fi-archive:before { content: "\f108"; } -.fi-arrow-down:before { content: "\f109"; } -.fi-arrow-left:before { content: "\f10a"; } -.fi-arrow-right:before { content: "\f10b"; } -.fi-arrow-up:before { content: "\f10c"; } -.fi-arrows-compress:before { content: "\f10d"; } -.fi-arrows-expand:before { content: "\f10e"; } -.fi-arrows-in:before { content: "\f10f"; } -.fi-arrows-out:before { content: "\f110"; } -.fi-asl:before { content: "\f111"; } -.fi-asterisk:before { content: "\f112"; } -.fi-at-sign:before { content: "\f113"; } -.fi-background-color:before { content: "\f114"; } -.fi-battery-empty:before { content: "\f115"; } -.fi-battery-full:before { content: "\f116"; } -.fi-battery-half:before { content: "\f117"; } -.fi-bitcoin-circle:before { content: "\f118"; } -.fi-bitcoin:before { content: "\f119"; } -.fi-blind:before { content: "\f11a"; } -.fi-bluetooth:before { content: "\f11b"; } -.fi-bold:before { content: "\f11c"; } -.fi-book-bookmark:before { content: "\f11d"; } -.fi-book:before { content: "\f11e"; } -.fi-bookmark:before { content: "\f11f"; } -.fi-braille:before { content: "\f120"; } -.fi-burst-new:before { content: "\f121"; } -.fi-burst-sale:before { content: "\f122"; } -.fi-burst:before { content: "\f123"; } -.fi-calendar:before { content: "\f124"; } -.fi-camera:before { content: "\f125"; } -.fi-check:before { content: "\f126"; } -.fi-checkbox:before { content: "\f127"; } -.fi-clipboard-notes:before { content: "\f128"; } -.fi-clipboard-pencil:before { content: "\f129"; } -.fi-clipboard:before { content: "\f12a"; } -.fi-clock:before { content: "\f12b"; } -.fi-closed-caption:before { content: "\f12c"; } -.fi-cloud:before { content: "\f12d"; } -.fi-comment-minus:before { content: "\f12e"; } -.fi-comment-quotes:before { content: "\f12f"; } -.fi-comment-video:before { content: "\f130"; } -.fi-comment:before { content: "\f131"; } -.fi-comments:before { content: "\f132"; } -.fi-compass:before { content: "\f133"; } -.fi-contrast:before { content: "\f134"; } -.fi-credit-card:before { content: "\f135"; } -.fi-crop:before { content: "\f136"; } -.fi-crown:before { content: "\f137"; } -.fi-css3:before { content: "\f138"; } -.fi-database:before { content: "\f139"; } -.fi-die-five:before { content: "\f13a"; } -.fi-die-four:before { content: "\f13b"; } -.fi-die-one:before { content: "\f13c"; } -.fi-die-six:before { content: "\f13d"; } -.fi-die-three:before { content: "\f13e"; } -.fi-die-two:before { content: "\f13f"; } -.fi-dislike:before { content: "\f140"; } -.fi-dollar-bill:before { content: "\f141"; } -.fi-dollar:before { content: "\f142"; } -.fi-download:before { content: "\f143"; } -.fi-eject:before { content: "\f144"; } -.fi-elevator:before { content: "\f145"; } -.fi-euro:before { content: "\f146"; } -.fi-eye:before { content: "\f147"; } -.fi-fast-forward:before { content: "\f148"; } -.fi-female-symbol:before { content: "\f149"; } -.fi-female:before { content: "\f14a"; } -.fi-filter:before { content: "\f14b"; } -.fi-first-aid:before { content: "\f14c"; } -.fi-flag:before { content: "\f14d"; } -.fi-folder-add:before { content: "\f14e"; } -.fi-folder-lock:before { content: "\f14f"; } -.fi-folder:before { content: "\f150"; } -.fi-foot:before { content: "\f151"; } -.fi-foundation:before { content: "\f152"; } -.fi-graph-bar:before { content: "\f153"; } -.fi-graph-horizontal:before { content: "\f154"; } -.fi-graph-pie:before { content: "\f155"; } -.fi-graph-trend:before { content: "\f156"; } -.fi-guide-dog:before { content: "\f157"; } -.fi-hearing-aid:before { content: "\f158"; } -.fi-heart:before { content: "\f159"; } -.fi-home:before { content: "\f15a"; } -.fi-html5:before { content: "\f15b"; } -.fi-indent-less:before { content: "\f15c"; } -.fi-indent-more:before { content: "\f15d"; } -.fi-info:before { content: "\f15e"; } -.fi-italic:before { content: "\f15f"; } -.fi-key:before { content: "\f160"; } -.fi-laptop:before { content: "\f161"; } -.fi-layout:before { content: "\f162"; } -.fi-lightbulb:before { content: "\f163"; } -.fi-like:before { content: "\f164"; } -.fi-link:before { content: "\f165"; } -.fi-list-bullet:before { content: "\f166"; } -.fi-list-number:before { content: "\f167"; } -.fi-list-thumbnails:before { content: "\f168"; } -.fi-list:before { content: "\f169"; } -.fi-lock:before { content: "\f16a"; } -.fi-loop:before { content: "\f16b"; } -.fi-magnifying-glass:before { content: "\f16c"; } -.fi-mail:before { content: "\f16d"; } -.fi-male-female:before { content: "\f16e"; } -.fi-male-symbol:before { content: "\f16f"; } -.fi-male:before { content: "\f170"; } -.fi-map:before { content: "\f171"; } -.fi-marker:before { content: "\f172"; } -.fi-megaphone:before { content: "\f173"; } -.fi-microphone:before { content: "\f174"; } -.fi-minus-circle:before { content: "\f175"; } -.fi-minus:before { content: "\f176"; } -.fi-mobile-signal:before { content: "\f177"; } -.fi-mobile:before { content: "\f178"; } -.fi-monitor:before { content: "\f179"; } -.fi-mountains:before { content: "\f17a"; } -.fi-music:before { content: "\f17b"; } -.fi-next:before { content: "\f17c"; } -.fi-no-dogs:before { content: "\f17d"; } -.fi-no-smoking:before { content: "\f17e"; } -.fi-page-add:before { content: "\f17f"; } -.fi-page-copy:before { content: "\f180"; } -.fi-page-csv:before { content: "\f181"; } -.fi-page-delete:before { content: "\f182"; } -.fi-page-doc:before { content: "\f183"; } -.fi-page-edit:before { content: "\f184"; } -.fi-page-export-csv:before { content: "\f185"; } -.fi-page-export-doc:before { content: "\f186"; } -.fi-page-export-pdf:before { content: "\f187"; } -.fi-page-export:before { content: "\f188"; } -.fi-page-filled:before { content: "\f189"; } -.fi-page-multiple:before { content: "\f18a"; } -.fi-page-pdf:before { content: "\f18b"; } -.fi-page-remove:before { content: "\f18c"; } -.fi-page-search:before { content: "\f18d"; } -.fi-page:before { content: "\f18e"; } -.fi-paint-bucket:before { content: "\f18f"; } -.fi-paperclip:before { content: "\f190"; } -.fi-pause:before { content: "\f191"; } -.fi-paw:before { content: "\f192"; } -.fi-paypal:before { content: "\f193"; } -.fi-pencil:before { content: "\f194"; } -.fi-photo:before { content: "\f195"; } -.fi-play-circle:before { content: "\f196"; } -.fi-play-video:before { content: "\f197"; } -.fi-play:before { content: "\f198"; } -.fi-plus:before { content: "\f199"; } -.fi-pound:before { content: "\f19a"; } -.fi-power:before { content: "\f19b"; } -.fi-previous:before { content: "\f19c"; } -.fi-price-tag:before { content: "\f19d"; } -.fi-pricetag-multiple:before { content: "\f19e"; } -.fi-print:before { content: "\f19f"; } -.fi-prohibited:before { content: "\f1a0"; } -.fi-projection-screen:before { content: "\f1a1"; } -.fi-puzzle:before { content: "\f1a2"; } -.fi-quote:before { content: "\f1a3"; } -.fi-record:before { content: "\f1a4"; } -.fi-refresh:before { content: "\f1a5"; } -.fi-results-demographics:before { content: "\f1a6"; } -.fi-results:before { content: "\f1a7"; } -.fi-rewind-ten:before { content: "\f1a8"; } -.fi-rewind:before { content: "\f1a9"; } -.fi-rss:before { content: "\f1aa"; } -.fi-safety-cone:before { content: "\f1ab"; } -.fi-save:before { content: "\f1ac"; } -.fi-share:before { content: "\f1ad"; } -.fi-sheriff-badge:before { content: "\f1ae"; } -.fi-shield:before { content: "\f1af"; } -.fi-shopping-bag:before { content: "\f1b0"; } -.fi-shopping-cart:before { content: "\f1b1"; } -.fi-shuffle:before { content: "\f1b2"; } -.fi-skull:before { content: "\f1b3"; } -.fi-social-500px:before { content: "\f1b4"; } -.fi-social-adobe:before { content: "\f1b5"; } -.fi-social-amazon:before { content: "\f1b6"; } -.fi-social-android:before { content: "\f1b7"; } -.fi-social-apple:before { content: "\f1b8"; } -.fi-social-behance:before { content: "\f1b9"; } -.fi-social-bing:before { content: "\f1ba"; } -.fi-social-blogger:before { content: "\f1bb"; } -.fi-social-delicious:before { content: "\f1bc"; } -.fi-social-designer-news:before { content: "\f1bd"; } -.fi-social-deviant-art:before { content: "\f1be"; } -.fi-social-digg:before { content: "\f1bf"; } -.fi-social-dribbble:before { content: "\f1c0"; } -.fi-social-drive:before { content: "\f1c1"; } -.fi-social-dropbox:before { content: "\f1c2"; } -.fi-social-evernote:before { content: "\f1c3"; } -.fi-social-facebook:before { content: "\f1c4"; } -.fi-social-flickr:before { content: "\f1c5"; } -.fi-social-forrst:before { content: "\f1c6"; } -.fi-social-foursquare:before { content: "\f1c7"; } -.fi-social-game-center:before { content: "\f1c8"; } -.fi-social-github:before { content: "\f1c9"; } -.fi-social-google-plus:before { content: "\f1ca"; } -.fi-social-hacker-news:before { content: "\f1cb"; } -.fi-social-hi5:before { content: "\f1cc"; } -.fi-social-instagram:before { content: "\f1cd"; } -.fi-social-joomla:before { content: "\f1ce"; } -.fi-social-lastfm:before { content: "\f1cf"; } -.fi-social-linkedin:before { content: "\f1d0"; } -.fi-social-medium:before { content: "\f1d1"; } -.fi-social-myspace:before { content: "\f1d2"; } -.fi-social-orkut:before { content: "\f1d3"; } -.fi-social-path:before { content: "\f1d4"; } -.fi-social-picasa:before { content: "\f1d5"; } -.fi-social-pinterest:before { content: "\f1d6"; } -.fi-social-rdio:before { content: "\f1d7"; } -.fi-social-reddit:before { content: "\f1d8"; } -.fi-social-skillshare:before { content: "\f1d9"; } -.fi-social-skype:before { content: "\f1da"; } -.fi-social-smashing-mag:before { content: "\f1db"; } -.fi-social-snapchat:before { content: "\f1dc"; } -.fi-social-spotify:before { content: "\f1dd"; } -.fi-social-squidoo:before { content: "\f1de"; } -.fi-social-stack-overflow:before { content: "\f1df"; } -.fi-social-steam:before { content: "\f1e0"; } -.fi-social-stumbleupon:before { content: "\f1e1"; } -.fi-social-treehouse:before { content: "\f1e2"; } -.fi-social-tumblr:before { content: "\f1e3"; } -.fi-social-twitter:before { content: "\f1e4"; } -.fi-social-vimeo:before { content: "\f1e5"; } -.fi-social-windows:before { content: "\f1e6"; } -.fi-social-xbox:before { content: "\f1e7"; } -.fi-social-yahoo:before { content: "\f1e8"; } -.fi-social-yelp:before { content: "\f1e9"; } -.fi-social-youtube:before { content: "\f1ea"; } -.fi-social-zerply:before { content: "\f1eb"; } -.fi-social-zurb:before { content: "\f1ec"; } -.fi-sound:before { content: "\f1ed"; } -.fi-star:before { content: "\f1ee"; } -.fi-stop:before { content: "\f1ef"; } -.fi-strikethrough:before { content: "\f1f0"; } -.fi-subscript:before { content: "\f1f1"; } -.fi-superscript:before { content: "\f1f2"; } -.fi-tablet-landscape:before { content: "\f1f3"; } -.fi-tablet-portrait:before { content: "\f1f4"; } -.fi-target-two:before { content: "\f1f5"; } -.fi-target:before { content: "\f1f6"; } -.fi-telephone-accessible:before { content: "\f1f7"; } -.fi-telephone:before { content: "\f1f8"; } -.fi-text-color:before { content: "\f1f9"; } -.fi-thumbnails:before { content: "\f1fa"; } -.fi-ticket:before { content: "\f1fb"; } -.fi-torso-business:before { content: "\f1fc"; } -.fi-torso-female:before { content: "\f1fd"; } -.fi-torso:before { content: "\f1fe"; } -.fi-torsos-all-female:before { content: "\f1ff"; } -.fi-torsos-all:before { content: "\f200"; } -.fi-torsos-female-male:before { content: "\f201"; } -.fi-torsos-male-female:before { content: "\f202"; } -.fi-torsos:before { content: "\f203"; } -.fi-trash:before { content: "\f204"; } -.fi-trees:before { content: "\f205"; } -.fi-trophy:before { content: "\f206"; } -.fi-underline:before { content: "\f207"; } -.fi-universal-access:before { content: "\f208"; } -.fi-unlink:before { content: "\f209"; } -.fi-unlock:before { content: "\f20a"; } -.fi-upload-cloud:before { content: "\f20b"; } -.fi-upload:before { content: "\f20c"; } -.fi-usb:before { content: "\f20d"; } -.fi-video:before { content: "\f20e"; } -.fi-volume-none:before { content: "\f20f"; } -.fi-volume-strike:before { content: "\f210"; } -.fi-volume:before { content: "\f211"; } -.fi-web:before { content: "\f212"; } -.fi-wheelchair:before { content: "\f213"; } -.fi-widget:before { content: "\f214"; } -.fi-wrench:before { content: "\f215"; } -.fi-x-circle:before { content: "\f216"; } -.fi-x:before { content: "\f217"; } -.fi-yen:before { content: "\f218"; } -.fi-zoom-in:before { content: "\f219"; } -.fi-zoom-out:before { content: "\f21a"; } diff --git a/app/assets/stylesheets/icons.scss b/app/assets/stylesheets/icons.scss new file mode 100644 index 000000000..b7b4a820f --- /dev/null +++ b/app/assets/stylesheets/icons.scss @@ -0,0 +1,75 @@ +@charset "UTF-8"; + +@font-face { + font-family: 'icons'; + src: font-url('icons.eot'); + src: font-url('icons.eot?#iefix') format('embedded-opentype'), + font-url('icons.woff') format('woff'), + font-url('icons.ttf') format('truetype'), + font-url('icons.svg#icons') format('svg'); + font-weight: normal; + font-style: normal; +} + +[data-icon]:before { + font-family: "icons" !important; + content: attr(data-icon); + font-style: normal !important; + font-weight: normal !important; + font-variant: normal !important; + text-transform: none !important; + speak: none; + line-height: 1; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +[class^="icon-"]:before, +[class*=" icon-"]:before { + font-family: "icons" !important; + font-style: normal !important; + font-weight: normal !important; + font-variant: normal !important; + text-transform: none !important; + speak: none; + line-height: 1; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +.icon-angle-down:before { + content: "a"; +} +.icon-angle-left:before { + content: "b"; +} +.icon-angle-right:before { + content: "c"; +} +.icon-angle-up:before { + content: "d"; +} +.icon-chat-bubble-two:before { + content: "e"; +} +.icon-like:before { + content: "f"; +} +.icon-unlike:before { + content: "g"; +} +.icon-twitter:before { + content: "h"; +} +.icon-quote-left:before { + content: "l"; +} +.icon-quote-right:before { + content: "i"; +} +.icon-calendar:before { + content: "j"; +} +.icon-lightbulb:before { + content: "k"; +} From 90f863c49f245ac41a45544b72813873e482aad1 Mon Sep 17 00:00:00 2001 From: Alberto Garcia Cabeza Date: Tue, 4 Aug 2015 13:20:14 +0200 Subject: [PATCH 09/29] Adds custom icons fonts --- app/assets/stylesheets/application.scss | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/assets/stylesheets/application.scss b/app/assets/stylesheets/application.scss index 2f0f5f47b..6ae9b1ecc 100644 --- a/app/assets/stylesheets/application.scss +++ b/app/assets/stylesheets/application.scss @@ -1,4 +1,4 @@ @import "foundation_and_overrides"; -@import "foundation_icons"; @import "fonts"; +@import "icons"; @import "debates"; \ No newline at end of file From 4344bc121fd91eb6e73cb1bdf71c2211d9335aa5 Mon Sep 17 00:00:00 2001 From: Alberto Garcia Cabeza Date: Tue, 4 Aug 2015 13:21:09 +0200 Subject: [PATCH 10/29] Changes styles for debates index and debate show --- app/assets/stylesheets/debates.scss | 862 +++++++++++++++------------ app/views/debates/_debate.html.erb | 64 +- app/views/debates/index.html.erb | 66 +- app/views/debates/show.html.erb | 62 +- app/views/shared/_tag_cloud.html.erb | 5 +- app/views/votes/_votes.html.erb | 44 +- config/locales/en.yml | 13 + config/locales/es.yml | 12 + 8 files changed, 651 insertions(+), 477 deletions(-) diff --git a/app/assets/stylesheets/debates.scss b/app/assets/stylesheets/debates.scss index 6e251d6dd..9e991d89b 100644 --- a/app/assets/stylesheets/debates.scss +++ b/app/assets/stylesheets/debates.scss @@ -1,6 +1,8 @@ // Table of Contents // // 01. Variables +// 01.1. Fonts +// 01.2. Colors // 02. Global styles // 03. Header // 04. Footer @@ -17,174 +19,170 @@ // 01. Variables // - - - - - - - - - - - - - - - - - - - - - - - - - +// 01.1. Fonts +// - - - - - - - - - - - - + $font-family-sans-serif: 'Roboto', 'Helvetica Neue', Helvetica, Arial, sans-serif; $line-height: rem-calc(24); +// 01.2. Colors +// - - - - - - - - - - - - + $background: #E9E9E9; $border: #DEE0E3; -$brand: #0077B9; +$brand: #0077B9; $debates: #008CCF; -$comments-bg: #FAF9F8; +$comments-bg: #F1F1F1;//FAF9F8; $comments-info: #A5B2B9; $comments-text: #3F4549; -$header-color: #292B33; +$header-color: #292B33; $link: #0077B9; $tags-bg: #FAFAFA; $tags-border: #F0F0F0; $tags-color: #8F8F8F; -$text-color: #919399; +$text-color: #222222; $text-medium: #999999; -$text-light: #a3a6ad; +$text-light: #A3A6AD; -$votes-background: #EDEDED; -$votes-border: #DEE0E3; -$votes-dislike: #EF8585; -$votes-dislike-b: #D26463;//FF7978; +$votes: #A0AEC4; +$votes-background: #F0F0F0; +$votes-border: #D8D8D8; +$votes-unlike: #EF8585; $votes-like: #7BD2A8; -$votes-like-b: #56A47D; +$votes-text: #54627C; // 02. Global styles // - - - - - - - - - - - - - - - - - - - - - - - - - *, html { - margin: 0; - padding: 0; + margin: 0; + padding: 0; } body { - background: white; - font-family: $font-family-sans-serif; - font-size: rem-calc(13); - font-weight: normal; - - p { - font-weight: normal; - } + background: white; + font-family: $font-family-sans-serif; + font-size: rem-calc(13); + font-weight: normal; + text-rendering: optimizeLegibility; } .row { - max-width: 1170px; + max-width: 1170px; } .row-full { - max-width: 100% !important; + max-width: 100% !important; } .clear { - clear: both; + clear: both; } .inline-block { - display: inline-block; + display: inline-block; } -::selection { - background: $brand; - color: white; -} - -::-moz-selection { - background: $brand; - color: white; +::selection, ::-moz-selection { + background: $brand; + color: white; } // 03. Header // - - - - - - - - - - - - - - - - - - - - - - - - - header { - background: url('home_header_bg.jpg'); - background-position: 50% 50%; - background-size: cover; - min-height: $line-height*20; + background: url('home_header_bg.jpg'); + background-position: 50% 50%; + background-size: cover; + min-height: $line-height*20; - &.results { - min-height: $line-height*8; - } + &.results { + min-height: $line-height*8; + } - h1 { - color: white; - font-size: rem-calc(45); - font-weight: bolder; - line-height: $line-height*3; - margin: $line-height 0 0 0; - padding: 0; - } + h1 { + color: white; + font-size: rem-calc(45); + font-weight: bolder; + line-height: $line-height*3; + margin: $line-height 0 0 0; + padding: 0; + } - h2 { - @extend h1; - font-size: rem-calc(24); - font-weight: normal; - line-height: $line-height*2; - margin: 0; - } + h2 { + @extend h1; + font-size: rem-calc(24); + font-weight: normal; + line-height: $line-height*2; + margin: 0; + } - .button { - background: none; - border: 2px solid white; - color: white; - margin-top: $line-height*2; - } + .button { + color: white; + margin-top: $line-height*2; + } } .contain-to-grid { - background: none; + background: none; } .top-bar { - background: white; - color: $header-color; - height: $line-height*4; - max-width: 1170px !important; + background: white; + color: $header-color; + height: $line-height*4; + max-width: 1170px !important; - .name a { - color: black; - font-family: 'Lato'; - font-size: rem-calc(36); - font-weight: lighter; - line-height: $line-height*4; - padding-left: 0; + .name a { + color: black; + font-family: 'Lato'; + font-size: rem-calc(36); + font-weight: lighter; + line-height: $line-height*4; + padding-left: 0; - span { - color: $brand; - font-size: rem-calc(24); - font-weight: normal; - } - - img { - margin-right: $line-height/2; - } + span { + color: $brand; + font-size: rem-calc(24); + font-weight: normal; } + + img { + margin-right: $line-height/2; + } + } } .top-bar-section { - li:not(.has-form) a:not(.button) { - background: white; - color: $brand; - line-height: $line-height*4; - } + li:not(.has-form) a:not(.button) { + background: white; + color: $brand; + line-height: $line-height*4; + } - li.active:not(.has-form) a:not(.button) { - height: $line-height*4; - line-height: $line-height*4; - } + li.active:not(.has-form) a:not(.button) { + height: $line-height*4; + line-height: $line-height*4; + } } .top-links { - color: white; - font-size: rem-calc(14); - height: $line-height*2; - padding: $line-height/2 0; + color: white; + font-size: rem-calc(14); + height: $line-height*2; + padding: $line-height/2 0; - a { - color: white; - } + a { + color: white; + } } // 04. Footer @@ -197,315 +195,448 @@ header { // 05. Debates // - - - - - - - - - - - - - - - - - - - - - - - - - +aside { + .button { + margin-top: $line-height; + } +} + // 05.1. Debates Index // - - - - - - - - - - - - -.debates-index { - margin-top: $line-height; +.debates-list { + margin-top: $line-height; } -.debate { +.debates-featured { + + .debate { .panel { - background: white; - box-shadow: 0 2px 0 rgba(0,0,0,.1); + background: white; + box-shadow: 0 2px 0 rgba(0,0,0,.1); + padding: rem-calc(20) rem-calc(20) 0 rem-calc(20); - .fi-comment-quotes { - color: $debates; - font-size: rem-calc(36); - line-height: $line-height; - margin-bottom: $line-height*0.77; + .debate-content { + min-height: $line-height*11; + } + + .label { + background: none; + clear: both; + color: $debates; + display: block; + font-weight: bold; + text-transform: uppercase; + padding: 0; + } + + .icon-quote-right { + color: $debates; + font-size: rem-calc(30); + line-height: $line-height; + position: absolute; + right: $line-height; + top: $line-height/2; + } + + .icon-chat-bubble-two { + vertical-align: middle; + } + + h3 { + margin: rem-calc(12) 0 0 0; + font-weight: bold; + + a { + clear: both; + color: $header-color; + display: block; + font-size: rem-calc(16); + line-height: $line-height; } + } - .fi-price-tag { - color: $text-color; - font-size: rem-calc(18); - line-height: $line-height; + .debate-info { + color: $text-light; + font-weight: lighter; + margin-bottom: 0; + + .icon-chat-bubble-two { + font-size: rem-calc(16); } + } - .label { - margin-top: $line-height/4; - } - - h3 { - margin: 0; - font-weight: bold; - - a { - clear: both; - color: $header-color; - display: block; - font-size: rem-calc(16); - line-height: $line-height; - } - } - - p { - color: $text-color; - font-size: rem-calc(13); - line-height: $line-height; - margin-bottom: $line-height; - } + p { + color: $text-color; + font-size: rem-calc(13); + line-height: $line-height; + margin-bottom: $line-height/2; + } } .votes { + border-top: 1px solid $votes-border; + padding: $line-height/2 0; + + .icon-like { background: $votes-background; - margin: -5px -20px -20px -20px; - padding: 1.25rem 1.25rem 0 1.25rem; + border: 1px solid $votes-border; + border-radius: rem-calc(3); + color: $votes; + display: inline-block; + font-size: rem-calc(30); + line-height: rem-calc(30); + padding: rem-calc(6) rem-calc(12); + //when active => color: $votes-like; - .fi-like { - color: $votes-like; - font-size: rem-calc(48); - line-height: $line-height*2; + &:hover { + background: white; + color: $brand; } + } - .fi-dislike { - color: $votes-dislike; - display: inline-block; - font-size: rem-calc(48); - line-height: $line-height*2; - padding-top: $line-height/3; + .icon-unlike { + background: $votes-background; + border: 1px solid $votes-border; + border-radius: rem-calc(3); + color: $votes; + display: inline-block; + font-size: rem-calc(30); + line-height: rem-calc(30); + padding: rem-calc(6) rem-calc(12); + //when active => color: $votes-unlike; + + &:hover { + background: white; + color: $brand; } + } - .in-favor { - color: $votes-like; - line-height: rem-calc(48); - vertical-align: top; + .like { + line-height: rem-calc(48); + vertical-align: super; - span { - display: inline-block; - line-height: 48px; - padding-top: 5px; - vertical-align: top; - } + span { + color: $votes-text; + display: inline-block; + font-size: rem-calc(18); + font-weight: bold; + line-height: $line-height*2; + padding-left: rem-calc(6); + vertical-align: top; } + } - .against { - @extend .in-favor; - color: $votes-dislike; - display: inline-block; - } + .unlike { + @extend .like; + } - .total-votes { - font-size: rem-calc(12); - line-height: $line-height*2; - } + .total-votes { + color: $votes-text; + line-height: $line-height*2; + } - .divider { - background: rgba(0,0,0, .1); - display: inline-block; - height: 3rem; - margin: 0 .5rem; - width: 1px; - } + .divider { + margin: 0 rem-calc(3); + } } + } +} + +.debates-index { + @extend .debates-featured; + + .debate { + margin-bottom: rem-calc(6); + + .panel { + border: 0; + box-shadow: none; + margin-bottom: 0; + padding: 0 rem-calc(6); + + p { + text-align: justify; + } + + .debate-content { + min-height: 0; + } + + .icon-quote-right { + font-size: rem-calc(14); + position: initial; + vertical-align: bottom; + } + + .label { + line-height: $line-height; + margin-right: rem-calc(5); + } + } + + .votes { + border: 0; + margin-top: $line-height; + + .like { + + span { + color: $votes-text; + display: block; + font-size: rem-calc(18); + font-weight: bold; + line-height: $line-height*1.5; + } + } + } + } } // 05.2. Debates Show // - - - - - - - - - - - - .debate-show { - color: $text-medium; - margin-top: $line-height; - margin-bottom: $line-height*2; - padding: 0 $line-height/2; + margin-top: $line-height; + padding: 0 rem-calc(12); - .back { - color: $text-light; - font-size: rem-calc(13); - line-height: $line-height; + .back { + color: $text-light; + font-size: rem-calc(13); + line-height: $line-height; + } + + .icon-angle-left { + @extend .back; + } + + h1 { + clear: both; + font-size: rem-calc(24); + font-weight: bold; + line-height: $line-height*2; + margin: 0; + } + + .debate-info { + clear: both; + color: $text-light; + font-weight: lighter; + line-height: $line-height*2; + text-align: justify; + + .bullet { + color: $border; } - h1 { - clear: both; - font-size: rem-calc(24); + p { + font-size: rem-calc(14); + line-height: $line-height; + margin-bottom: 0; + } + } + + .author-photo { + border-radius: 2px; + display: inline-block; + height: 32px; + line-height: $line-height*2; + margin-right: $line-height/4; + vertical-align: middle; + width: 32px; + } + + .author { + color: $text-color; + font-weight: bold; + } + + .votes { + padding-top: 0; + + @media (min-width: 480px) { + padding-top: $line-height*1.5; + } + + h3 { + border-bottom: 1px solid $border; + font-size: rem-calc(18); + margin: 0 0 $line-height 0; + text-transform: uppercase; + } + + .icon-like { + background: $votes-background; + border: 1px solid $votes-border; + border-radius: rem-calc(3); + color: $votes; + display: inline-block; + font-size: rem-calc(30); + line-height: rem-calc(30); + padding: rem-calc(6) rem-calc(12); + //when active => color: $votes-like; + + &:hover { + background: white; + color: $brand; + } + } + + .icon-unlike { + background: $votes-background; + border: 1px solid $votes-border; + border-radius: rem-calc(3); + color: $votes; + display: inline-block; + font-size: rem-calc(30); + line-height: rem-calc(30); + padding: rem-calc(6) rem-calc(12); + //when active => color: $votes-unlike; + + &:hover { + background: white; + color: $brand; + } + } + + .like { + + span { + color: $votes-text; + display: block; + font-size: rem-calc(18); font-weight: bold; - line-height: $line-height*1.3333; - margin: 0; - padding-top: $line-height/2; + line-height: $line-height*1.5; + } } - .debate-info { - color: $text-light; - font-weight: lighter; - line-height: $line-height*2; - margin-bottom: $line-height*0.5; - text-align: justify; - - span { - color: $border; - } - - p { - font-size: rem-calc(14); - line-height: $line-height; - margin-bottom: 0; - } + .unlike { + @extend .like; } - .author-photo { - border-radius: 2px; - display: inline-block; - height: 32px; - line-height: $line-height*2; - margin-right: $line-height/4; - vertical-align: middle; - width: 32px; + .total-votes { + color: $votes-text; + font-size: rem-calc(14); + line-height: $line-height; } - .votes { - border: 1px solid $votes-border; - box-shadow: 0 2px 0 rgba(0,0,0,.1); - border-radius: 3px; - padding: $line-height/2; - - .fi-like { - background: $votes-like; - border: 1px solid $votes-like-b; - border-radius: $line-height*2.5; - color: white; - display: block; - font-size: rem-calc(48); - height: $line-height*2.5; - line-height: $line-height*2.5; - width: $line-height*2.5; - } - - .fi-dislike { - background: $votes-dislike; - border: 1px solid $votes-dislike-b; - border-radius: $line-height*2.5; - color: white; - display: block; - font-size: rem-calc(48); - height: $line-height*2.5; - line-height: $line-height*2.5; - width: $line-height*2.5; - } - - .in-favor { - color: $votes-like; - line-height: rem-calc(48); - - span { - display: inline-block; - font-size: rem-calc(18); - font-weight: bold; - line-height: $line-height; - padding-top: $line-height/4; - vertical-align: top; - } - } - - .against { - @extend .in-favor; - color: $votes-dislike; - } - - .total-votes { - font-size: rem-calc(14); - margin: 0; - } - - .divider { - background: rgba(0,0,0,.05); - display: inline-block; - height: $line-height*4; - margin: 0 $line-height; - width: 1px; - } + .divider { + margin: 0 rem-calc(12); } + } - .publish-comment { - margin-top: $line-height; - } + .leave-comment { + display: inline-block; + margin-top: $line-height; + } } // 06. Comments // - - - - - - - - - - - - - - - - - - - - - - - - - .comments { - background: $comments-bg; - background-image: url('comments_divider.png'); - background-repeat: repeat-x; - padding-top: $line-height; - padding-bottom: $line-height*4; + background: $comments-bg; + background-image: url('comments_divider.png'); + background-repeat: repeat-x; + padding-top: $line-height; + padding-bottom: $line-height*4; - h2 { - margin: 0; - font-weight: bold; + h2 { + margin: 0; + font-weight: bold; + } + + .comment { + margin: $line-height/4 0; + + p { + color: $comments-text; + font-size: rem-calc(15); + margin-bottom: 0; } - .comment { - margin: $line-height/4 0; - - p { - color: $comments-text; - font-size: rem-calc(15); - margin-bottom: 0; - } - - a { - color: $comments-info; - } - - .user-photo { - border-radius: 2px; - display: inline-block; - height: 32px; - line-height: $line-height*2; - margin-right: $line-height/4; - vertical-align: top; - width: 32px; - } - - .comment-body { - margin-left: $line-height*1.6; - - .reply { - font-size: rem-calc(12); - font-weight: lighter; - } - } - - .comment-children { - border-left: 1px dotted $border; - margin-left: $line-height*1.6; - padding-left: $line-height/4; - - @media only screen and (max-width: 40em) { - margin-left: $line-height/1.5; - } - } - - .comment-info { - color: $comments-info; - font-size: rem-calc(13); - font-weight: lighter; - vertical-align: middle; - } + a { + color: $comments-info; } + + .user-photo { + border-radius: 2px; + display: inline-block; + height: 32px; + line-height: $line-height*2; + margin-right: $line-height/4; + vertical-align: top; + width: 32px; + } + + .comment-body { + margin-left: $line-height*1.6; + + .reply { + font-size: rem-calc(12); + font-weight: lighter; + } + } + + .comment-children { + border-left: 1px dotted $border; + margin-left: $line-height*1.6; + padding-left: $line-height/4; + + @media only screen and (max-width: 40em) { + margin-left: $line-height/1.5; + } + } + + .comment-info { + color: $comments-info; + font-size: rem-calc(13); + font-weight: lighter; + vertical-align: middle; + } + } } // 07. Tags // - - - - - - - - - - - - - - - - - - - - - - - - - -.tags a { +.tags { + + a { background: $tags-bg; border: 1px solid $tags-border; border-radius: 3px; color: $tags-color; + display: inline-block; font-size: rem-calc(13); - margin-bottom: 8px; - margin-right: $line-height/3; - padding: $line-height/4 $line-height/3; + margin-bottom: rem-calc(8); + margin-right: rem-calc(8); + padding: 0 rem-calc(6); + &:hover { - color: $link; - cursor: pointer; - background: #e5f1f8; - border: 1px solid $brand; + color: $link; + cursor: pointer; + background: #e5f1f8; + border: 1px solid $brand; } + } +} + +.tag-cloud { + @extend .tags; + + h3 { + font-size: rem-calc(24); + font-weight: bold; + line-height: $line-height*2; + margin: 0; + } + + a { + padding: $line-height/4 $line-height/3; + } } // 08. Login and Sign Up @@ -515,57 +646,22 @@ header { // - - - - - - - - - - - - .auth { - background: $background; - box-shadow: 0px -4px 5px $background; - min-height: $line-height*20; + background: $background; + box-shadow: 0px -4px 5px $background; + min-height: $line-height*20; - .panel { - background: white; - margin-top: $line-height*2; + .panel { + background: white; + margin-top: $line-height*2; - h1 { - font-size: rem-calc(30); - font-weight: bolder; - } + h1 { + font-size: rem-calc(30); + font-weight: bolder; } + } } - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/views/debates/_debate.html.erb b/app/views/debates/_debate.html.erb index 4253143a6..93d4ad209 100644 --- a/app/views/debates/_debate.html.erb +++ b/app/views/debates/_debate.html.erb @@ -1,33 +1,39 @@ -

+
+
- - <%= t("debates.debate.debate") %> +
+
+
+ <%= t("debates.debate.debate") %> + +

<%= link_to debate.title, debate %>

+

+  <%= pluralize(debate.comment_threads.count, t("debates.debate.comment"), t("debates.debate.comments")) %> +

+

<%= sanitize(truncate(debate.description, length: 200).html_safe) %>

+ <%= render "shared/tags", debate: debate %> +
+
+
+
+ <%= link_to debate_votes_path(debate, value: 'yes'), class: "like inline-block", title: t('votes.agree'), method: "post" do %> + + <%= percentage('likes', debate) %> + <% end %> -

<%= link_to debate.title, debate %>

-

Por <%= debate.author.name %> el <%= l debate.created_at.to_date %>

-

<%= sanitize(debate.description.html_safe) %>

+ -

<%= render 'shared/tags', debate: debate %>

- -
-
- - <%= link_to debate_votes_path(debate, value: 'yes'), class: 'in-favor', method: "post" do %> - - <%= percentage('likes', debate) %> - <% end %> - - - - <%= link_to debate_votes_path(debate, value: 'no'), class: 'against', method: "post" do %> - - <%= percentage('dislikes', debate) %> - <% end %> -
- -
-

<%= pluralize(debate.total_votes, t("debates.debate.vote"), t("debates.debate.votes")) %>

-
-
+ <%= link_to debate_votes_path(debate, value: 'no'), class: "unlike inline-block", title: t('votes.disagree'), method: "post" do %> + + <%= percentage('dislikes', debate) %> + <% end %> +
+ + <%= pluralize(debate.total_votes, t("debates.debate.vote"), t("debates.debate.votes")) %> + +
+
+
-
+
+
\ No newline at end of file diff --git a/app/views/debates/index.html.erb b/app/views/debates/index.html.erb index f48884c24..b88d5e9bd 100644 --- a/app/views/debates/index.html.erb +++ b/app/views/debates/index.html.erb @@ -1,9 +1,59 @@ -
-
- <%= render @debates %> -
-
+
+
+ + <% debate = @debates.first %> +
+
+ +
+
+
+
+ +
+ <%= render @debates %> +
+
+ +
+
+
\ No newline at end of file diff --git a/app/views/debates/show.html.erb b/app/views/debates/show.html.erb index c9ce7abf1..76c76e71c 100644 --- a/app/views/debates/show.html.erb +++ b/app/views/debates/show.html.erb @@ -1,42 +1,36 @@
- -
- -
- - <%= link_to "« ".html_safe + t("debates.show.back_link"), debates_path, class: 'left back' %> - -

<%= @debate.title %>

-
- - <%= image_tag('user_default.jpg', class: 'author-photo', size: '32x32') %> - - <%= @debate.author.name %>  •  <%= l @debate.created_at.to_date %>  •  <%= pluralize(@debate.comment_threads.count, t("debates.show.comment"), t("debates.show.comments")) %> -
-
- <%= @debate.description.html_safe %> -
-

<%= render 'shared/tags', debate: @debate %>

-
- -
- <%= render 'votes/votes' %> +
+
+  <%= link_to t("debates.show.back_link"), debates_path, class: 'left back' %> +
+ <%= image_tag('user_default.jpg', class: 'author-photo', size: '32x32') %> + <%= @debate.author.name %> •  <%= l @debate.created_at.to_date %>  •  <%= pluralize(@debate.comment_threads.count, t("debates.show.comment"), t("debates.show.comments")) %> +
+

<%= @debate.title %>

+

<%= @debate.description %>

+

<%= render 'shared/tags', debate: @debate %>

+
+
+ <%= render 'votes/votes' %> +
+ <%= link_to t("debates.show.leave_comment"), "#comments", class: "leave-comment" %>
+
-
-
-

<%= t("debates.show.comments") %>

-
- <%= t("debates.show.leave_comment") %> - <%= render 'comments/form', parent: @debate %> -
- <%= render @debate.root_comments %> +
+
+

<%= t("debates.show.comments") %>

+
+ <%= t("debates.show.leave_comment") %> + <%= render 'comments/form', parent: @debate %>
- <% if current_user && @debate.editable_by?(current_user) %> - <%= link_to t("debates.show.edit_debate_link"), edit_debate_path(@debate), :class => 'button radius right' %> - <% end %> + <%= render @debate.root_comments %>
-
+ <% if current_user && @debate.editable_by?(current_user) %> + <%= link_to t("debates.show.edit_debate_link"), edit_debate_path(@debate), :class => 'button radius right' %> + <% end %> + + \ No newline at end of file diff --git a/app/views/shared/_tag_cloud.html.erb b/app/views/shared/_tag_cloud.html.erb index bb61c5a4d..c113a76bb 100644 --- a/app/views/shared/_tag_cloud.html.erb +++ b/app/views/shared/_tag_cloud.html.erb @@ -1,5 +1,6 @@ -
+
+

<%= t("shared.tags_cloud.tags") %>

<% tag_cloud Debate.tag_counts, %w[s m l] do |tag, css_class| %> <%= link_to sanitize("#{tag.name}(#{tag.taggings_count})"), debates_path(tag: tag.name), class: css_class %> <% end %> -
+
\ No newline at end of file diff --git a/app/views/votes/_votes.html.erb b/app/views/votes/_votes.html.erb index fd2704ed4..b88de32a9 100644 --- a/app/views/votes/_votes.html.erb +++ b/app/views/votes/_votes.html.erb @@ -1,23 +1,25 @@ -
-
- <%= link_to debate_votes_path(@debate, value: 'yes'), class: 'in-favor', method: "post", remote: true do %> - - <%= percentage('likes', @debate) %> - <% end %> -
- - - -
- <%= link_to debate_votes_path(@debate, value: 'no'), class: 'against', method: "post", remote: true do %> - - <%= percentage('dislikes', @debate) %> - <% end %> -
-
- -
-

+

+

<%= pluralize(@debate.total_votes, t("debates.debate.vote"), t("debates.debate.votes")) %>

-
+ +

<%= t("votes.supports") %>

+ +
+
+ <%= link_to debate_votes_path(@debate, value: 'yes'), class: "like", title: t('votes.agree'), method: "post", remote: true do %> + + <%= percentage('likes', @debate) %> + <% end %> +
+ + + +
+ <%= link_to debate_votes_path(@debate, value: 'no'), class: "unlike", title: t('votes.disagree'), method: "post", remote: true do %> + + <%= percentage('dislikes', @debate) %> + <% end %> +
+
+
\ No newline at end of file diff --git a/config/locales/en.yml b/config/locales/en.yml index 7842b7e0b..75e5bd1af 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -12,10 +12,17 @@ en: create_debate: Create a debate my_account_link: My account debates: + index: + create_debate: Create a debate debate: debate: Debate vote: vote votes: votes + comment: Comment + comments: Comments + agree: I agree + disagree: I disagree + leave_comment: Comment form: one_error: error plural_errors: errors @@ -45,9 +52,15 @@ en: reply_link: Reply reply_button: Publish reply votes: + agree: I agree + disagree: I disagree + supports: Supports notice_thanks: "Thanks for voting." notice_already_registered: "Your vote is already registered." account: show: title: "My account" save_changes_submit: "Save changes" + shared: + tags_cloud: + tags: Tags diff --git a/config/locales/es.yml b/config/locales/es.yml index eb36d241a..1cb2dd4c3 100644 --- a/config/locales/es.yml +++ b/config/locales/es.yml @@ -12,10 +12,16 @@ es: create_debate: Crea un debate my_account_link: Mi cuenta debates: + index: + create_debate: Crea un debate debate: debate: Debate vote: voto votes: votos + comment: Comentario + comments: Comentarios + agree: Estoy de acuerdo + disagree: No estoy de acuerdo form: one_error: error plural_errors: errores @@ -45,9 +51,15 @@ es: reply_link: Responder reply_button: Publicar respuesta votes: + agree: Estoy de acuerdo + disagree: No estoy de acuerdo + supports: Apoyos notice_thanks: "Gracias por votar." notice_already_registered: "Tu voto ya ha sido registrado." account: show: title: "Mi cuenta" save_changes_submit: "Guardar cambios" + shared: + tags_cloud: + tags: Etiquetas From c3046ccc2bd0788c3a94ce43fd249b24813d5bd6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Juanjo=20Baz=C3=A1n?= Date: Tue, 4 Aug 2015 17:56:38 +0200 Subject: [PATCH 11/29] fixes build adds empty featured_debates --- app/controllers/debates_controller.rb | 9 ++-- app/views/debates/_featured_debates.html.erb | 42 ++++++++++++++++ app/views/debates/index.html.erb | 51 ++------------------ spec/factories.rb | 2 +- spec/features/debates_spec.rb | 14 +++--- spec/features/tags_spec.rb | 12 +++-- 6 files changed, 67 insertions(+), 63 deletions(-) create mode 100644 app/views/debates/_featured_debates.html.erb diff --git a/app/controllers/debates_controller.rb b/app/controllers/debates_controller.rb index 672f41d20..df98fdb72 100644 --- a/app/controllers/debates_controller.rb +++ b/app/controllers/debates_controller.rb @@ -1,15 +1,16 @@ class DebatesController < ApplicationController - include RecaptchaHelper + include RecaptchaHelper before_action :set_debate, only: [:show, :edit, :update] before_action :authenticate_user!, except: [:show, :index] before_action :validate_ownership, only: [:edit, :update] def index if params[:tag] - @debates = Debate.tagged_with(params[:tag]) + @debates = Debate.tagged_with(params[:tag]).order("created_at DESC") else - @debates = Debate.all + @debates = Debate.all.order("created_at DESC") end + @featured_debates = [] end def show @@ -53,7 +54,7 @@ class DebatesController < ApplicationController def verify_captcha? return true unless recaptcha_keys? - verify_recaptcha(model: @debate) + verify_recaptcha(model: @debate) end end diff --git a/app/views/debates/_featured_debates.html.erb b/app/views/debates/_featured_debates.html.erb new file mode 100644 index 000000000..6de9472e3 --- /dev/null +++ b/app/views/debates/_featured_debates.html.erb @@ -0,0 +1,42 @@ +
+
+ +
+
+ diff --git a/app/views/debates/index.html.erb b/app/views/debates/index.html.erb index b88d5e9bd..7c6f80042 100644 --- a/app/views/debates/index.html.erb +++ b/app/views/debates/index.html.erb @@ -1,52 +1,9 @@ -
-
- - <% debate = @debates.first %> -
-
- -
-
+
+
- -
+
<%= render @debates %>
diff --git a/spec/factories.rb b/spec/factories.rb index 65315a112..8e1a2ea6c 100644 --- a/spec/factories.rb +++ b/spec/factories.rb @@ -9,7 +9,7 @@ FactoryGirl.define do end factory :debate do - title 'Debate title' + sequence(:title) {|n| "Debate #{n} title"} description 'Debate description' terms_of_service '1' association :author, factory: :user diff --git a/spec/features/debates_spec.rb b/spec/features/debates_spec.rb index 034b1d504..637c7ed3e 100644 --- a/spec/features/debates_spec.rb +++ b/spec/features/debates_spec.rb @@ -3,16 +3,16 @@ require 'rails_helper' feature 'Debates' do scenario 'Index' do - 3.times { create(:debate) } + debates = [create(:debate), create(:debate), create(:debate)] visit debates_path expect(page).to have_selector('.debate', count: 3) - within first('.debate') do - expect(page).to have_content "Debate title" - expect(page).to have_content "Debate description" - expect(page).to have_content Debate.first.author.name - expect(page).to have_content I18n.l(Date.today) + debates.each do |debate| + within('#debates') do + expect(page).to have_content debate.title + expect(page).to have_content debate.description + end end end @@ -21,7 +21,7 @@ feature 'Debates' do visit debate_path(debate) - expect(page).to have_content "Debate title" + expect(page).to have_content debate.title expect(page).to have_content "Debate description" expect(page).to have_content debate.author.name expect(page).to have_content I18n.l(Date.today) diff --git a/spec/features/tags_spec.rb b/spec/features/tags_spec.rb index 6b5889ea7..2e62a1ef4 100644 --- a/spec/features/tags_spec.rb +++ b/spec/features/tags_spec.rb @@ -18,16 +18,20 @@ feature 'Tags' do end scenario 'Filtered' do - 2.times { create(:debate, tag_list: 'Salud') } - 2.times { create(:debate, tag_list: 'Hacienda') } + debate1 = create(:debate, tag_list: 'Salud') + debate2 = create(:debate, tag_list: 'Salud') + debate3 = create(:debate, tag_list: 'Hacienda') + debate4 = create(:debate, tag_list: 'Hacienda') visit debates_path first(:link, "Salud").click within('#debates') do expect(page).to have_css('.debate', count: 2) - expect(page).to have_content('Salud') - expect(page).to_not have_content('Hacienda') + expect(page).to have_content(debate1.title) + expect(page).to have_content(debate2.title) + expect(page).to_not have_content(debate3.title) + expect(page).to_not have_content(debate4.title) end end From 16549f90c43be9c388600abc060111470cf75125 Mon Sep 17 00:00:00 2001 From: kikito Date: Tue, 4 Aug 2015 17:58:30 +0200 Subject: [PATCH 12/29] Adds badges for travis, code climate and gemnasium --- README.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/README.md b/README.md index 648cefd8d..5405cec86 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,9 @@ # Aplicación de Participación Ciudadana del Ayuntamiento de Madrid +[![Build Status](https://travis-ci.org/AyuntamientoMadrid/participacion.svg?branch=master)](https://travis-ci.org/AyuntamientoMadrid/participacion) +[![Code Climate](https://codeclimate.com/github/AyuntamientoMadrid/participacion/badges/gpa.svg)](https://codeclimate.com/github/AyuntamientoMadrid/participacion) +[![Dependency Status](https://gemnasium.com/AyuntamientoMadrid/participacion.svg)](https://gemnasium.com/AyuntamientoMadrid/participacion) + Este es el repositorio de código abierto de la Aplicación de Participación Ciudadana del Ayuntamiento de Madrid. ## Estado del proyecto From 90e577c811c154fe900d57a884f8a2eb96a2c329 Mon Sep 17 00:00:00 2001 From: kikito Date: Tue, 4 Aug 2015 18:40:58 +0200 Subject: [PATCH 13/29] Adds feature for debate description --- spec/features/debates_spec.rb | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/spec/features/debates_spec.rb b/spec/features/debates_spec.rb index 034b1d504..df9a4a92c 100644 --- a/spec/features/debates_spec.rb +++ b/spec/features/debates_spec.rb @@ -45,21 +45,22 @@ feature 'Debates' do expect(page).to have_content I18n.l(Date.today) end - scenario 'JS injection is sanitized' do + scenario 'JS injection is prevented but safe html is respected' do author = create(:user) login_as(author) visit new_debate_path fill_in 'debate_title', with: 'A test' - fill_in 'debate_description', with: 'This is ' + fill_in 'debate_description', with: '

This is

' check 'debate_terms_of_service' click_button 'Create Debate' expect(page).to have_content 'Debate was successfully created.' expect(page).to have_content 'A test' - expect(page).to have_content 'This is alert("an attack");' + expect(page.html).to include '

This is alert("an attack");

' expect(page.html).to_not include '' + expect(page.html).to_not include '<p>This is' end scenario 'tagging using dangerous strings' do From a2ea42d13df5f3ecb31d872c17cf4bc0da4b955b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Juanjo=20Baz=C3=A1n?= Date: Tue, 4 Aug 2015 18:41:09 +0200 Subject: [PATCH 14/29] adds first 3 debates as featured_debates --- app/controllers/debates_controller.rb | 2 +- app/views/debates/_featured_debate.html.erb | 41 +++++++++++++++++++ app/views/debates/_featured_debates.html.erb | 42 -------------------- app/views/debates/index.html.erb | 4 +- spec/features/debates_spec.rb | 11 ++++- spec/features/tags_spec.rb | 12 +++--- 6 files changed, 59 insertions(+), 53 deletions(-) create mode 100644 app/views/debates/_featured_debate.html.erb delete mode 100644 app/views/debates/_featured_debates.html.erb diff --git a/app/controllers/debates_controller.rb b/app/controllers/debates_controller.rb index df98fdb72..23ab36a32 100644 --- a/app/controllers/debates_controller.rb +++ b/app/controllers/debates_controller.rb @@ -10,7 +10,7 @@ class DebatesController < ApplicationController else @debates = Debate.all.order("created_at DESC") end - @featured_debates = [] + @featured_debates = @debates.to_a.shift(3) end def show diff --git a/app/views/debates/_featured_debate.html.erb b/app/views/debates/_featured_debate.html.erb new file mode 100644 index 000000000..6f74b0ed7 --- /dev/null +++ b/app/views/debates/_featured_debate.html.erb @@ -0,0 +1,41 @@ +
+
+ +
+
diff --git a/app/views/debates/_featured_debates.html.erb b/app/views/debates/_featured_debates.html.erb deleted file mode 100644 index 6de9472e3..000000000 --- a/app/views/debates/_featured_debates.html.erb +++ /dev/null @@ -1,42 +0,0 @@ -
-
- -
-
-
diff --git a/app/views/debates/index.html.erb b/app/views/debates/index.html.erb index 7c6f80042..a03809525 100644 --- a/app/views/debates/index.html.erb +++ b/app/views/debates/index.html.erb @@ -1,6 +1,6 @@
-