SlideShare une entreprise Scribd logo
1  sur  68
ActiveSupport事始め
2012/8/30 yoyogi.rb
自己紹介



curl http://cui-about.me/nysalor
今回どうしよう
今回どうしよう
ActiveSupportについて
ActiveSupportについて


パクリ

意外と知らないメソッドが多い

復習の意味で
ActiveSupport?

https://github.com/rails/rails/tree/master/activesupport
Railsに入っている便利ライブラリ

Railsをインストールすると勝手に入る

Rails抜きでも使える
試してみよう
試してみよう
% gem install activesupport
Fetching: activesupport-3.2.8.gem (100%)
Successfully installed activesupport-3.2.8
1 gem installed
ついでにpryも
ついでにpryも

% gem install pry
% gem install pry-coolline
pry?


http://pryrepl.org/
irbの強化版
インストール
インストール

% gem install pry
% gem install pry-coolline
起動
起動

% pry
1.9.3 (main):0 >
ActiveSupportを読み込む
ActiveSupportを読み込む

1.9.3 (main):0 > require 'active_support/all'
=> true
1.9.3 (main):0 >
String系
pluralize
pluralize
1.9.3 (main):0 > 'magazine'.pluralize
=> “magazines”
1.9.3 (main):0 > 'fantasy'.pluralize
=> “fantasies”
singularize
singularize
1.9.3 (main):0 > 'magazines'.singularize
=> “magazine”
1.9.3 (main):0 > 'fantasies'. singularize
=> “fantasy”
camelize,under_score
camelize,under_score
1.9.3 (main):0 > 'active_support'.camelize
=> “ActiveSupport”
1.9.3 (main):0 > 'ActiveSupport'.underscore
=> “active_support”
constantize
constantize

1.9.3 (main):0 > 'CurrentUser'.constantize
=> CurrentUser
from
from
1.9.3 (main):0 > ‘active_support’.from(3)
=> “ive_support”
1.9.3 (main):0 > ‘active_support’[3..-1]
=> “ive_support” # 同じ
blank?
blank?
1.9.3 (main):0   > nil.blank?
=> true
1.9.3 (main):0   > ''.blank?
=> true
1.9.3 (main):0   > ‘ ‘.blank?
=> true
1.9.3 (main):0   > ‘            ‘.blank?
=> true
1.9.3 (main):0   > ‘blank‘.blank?
=> false
present?
present?
1.9.3 (main):0   > true.present?
=> true
1.9.3 (main):0   > 'blank'.present?
=> true
1.9.3 (main):0   > ‘‘.present?
=> false
1.9.3 (main):0   > ‘ ‘.present?
=> false
1.9.3 (main):0   > nil.present?
=> false
presence
presence
1.9.3 (main):0   > true.presence
=> true
1.9.3 (main):0   > 'blank'.presence
=> 'blank'
1.9.3 (main):0   > ‘‘.presence
=> nil
1.9.3 (main):0   > ‘ ‘.presence
=> nil
1.9.3 (main):0   > nil.presence
=> nil
presence
presence

1.9.3 (main):0 > ‘cool’.presence || ‘oops!’
=> “cool”
1.9.3 (main):0 > ["aaa", "bbb", "ccc"].map{|x|
1.9.3 (main):0 * x.gsub("a","").presence &&
1.9.3 (main):0 * x.upcase}
=> [nil, "BBB", "CCC"]
inquiry
inquiry

1.9.3 (main):0 > ‘tiger’.inquiry
=> “tiger”
1.9.3 (main):0 > 'tiger'.inquiry.tiger?
=> true
1.9.3 (main):0 > 'tiger'.inquiry.bunny?
=> false
1.9.3 (main):0 > 'tiger'.inquiry.class
=> ActiveSupport::StringInquirer
どうやっているのか?



http://goo.gl/qt8Sz
DateTime系
Time.zone
Time.zone
1.9.3 (main):0   >   Time.zone
=> nil
1.9.3 (main):0   >   Time.zone = ‘Tokyo’
=> “Tokyo”
1.9.3 (main):0   > Time.zone
=> (GMT+09:00)   Tokyo
1.9.3 (main):0   > Time.zone.now
=> Thu, 30 Aug   2012 17:41:49 JST +09:00
yesterday,tommorow
yesterday,tommorow

1.9.3 (main):0   > Time.zone.now
=> Thu, 30 Aug   2012 17:41:49 JST +09:00
1.9.3 (main):0   > Time.zone.now.tomorrow
=> Fri, 31 Aug   2012 17:41:49 JST +09:00
1.9.3 (main):0   > Time.zone.now.yesterday
=> Wed, 29 Aug   2012 17:41:49 JST +09:00
ago
ago

1.9.3 (main):0   > Time.zone.now
=> Thu, 30 Aug   2012 17:41:49 JST +09:00
1.9.3 (main):0   > 3.days.ago
=> Mon, 27 Aug   2012 17:41:49 JST +09:00
1.9.3 (main):0   > 10.month.ago
=> Sun, 30 Oct   2011 17:41:49 JST +09:00
since
since

1.9.3 (main):0   > Time.zone.now
=> Thu, 30 Aug   2012 17:41:49 JST +09:00
1.9.3 (main):0   > 3.days.since
=> Sun, 02 Sep   2012 17:41:49 JST +09:00
1.9.3 (main):0   > 10.month.since
=> Sun, 30 Jun   2013 17:41:49 JST +09:00
引数
引数

1.9.3 (main):0   > Time.zone.now
=> Thu, 30 Aug   2012 17:41:49 JST +09:00
1.9.3 (main):0   > Time.zone.now.ago(3.days)
=> Mon, 27 Aug   2012 17:41:49 JST +09:00
1.9.3 (main):0   > Time.zone.now.since(3.years)
=> Sun, 30 Aug   2015 17:41:49 JST +09:00
始まりと終わり
始まりと終わり

1.9.3 (main):0   > Time.zone.now
=> Thu, 30 Aug   2012 17:41:49 JST +09:00
1.9.3 (main):0   > Time.zone.now.beginning_of_day
=> Thu, 30 Aug   2012 00:00:00 JST +09:00
1.9.3 (main):0   > Time.zone.now.end_of_year
=> Mon, 31 Dec   2012 23:59:59 JST +09:00
任意の時刻
任意の時刻

1.9.3 (main):0   > Time.zone.now
=> Thu, 30 Aug   2012 17:41:49 JST +09:00
1.9.3 (main):0   > Time.zone.now.change(:hour =>
19)
=> Thu, 30 Aug   2012 19:00:00 JST +09:00
範囲
範囲

1.9.3 (main):0 > Time.zone.now
=> Thu, 30 Aug 2012 17:41:49 JST +09:00
1.9.3 (main):0 > Time.zone.now.all_day
=> 2012-08-30 00:00:00 UTC..2012-08-30 23:59:59
UTC
1.9.3 (main):0 > Time.now.all_day
=> 2012-08-30 00:00:00 +0900..2012-08-30 23:59:59
+0900
Array/Hash系
Array#from
Array#from

1.9.3 (main):0 > ‘cool’.presence || ‘oops!’
=> “cool”
1.9.3 (main):0 > ["aaa", "bbb", "ccc"].map{|x|
1.9.3 (main):0 * x.gsub("a","").presence &&
1.9.3 (main):0 * x.upcase}
=> [nil, "BBB", "CCC"]
Hash#assert_valid_keys
Hash#assert_valid_keys
1.9.3 (main):0 > hash = {
1.9.3 (main):0 *   :tiger => 10.4,
1.9.3 (main):0 *   :lion => 10.7
1.9.3 (main):0 *   }
1.9.3 (main):0 > hash.assert_valid_keys(
1.9.3 (main):0 * :tiger, :leopard, :lion)
=> {:tiger=>10.5, :leopard=>10.6, :lion=>10.8}
1.9.3 (main):0 > hash.assert_valid_keys(
1.9.3 (main):0 * :tiger, :bunny)
=> ArgumentError: Unknown key: lion
Array#forty_two
Array#forty_two

1.9.3 (main):0 > [1,2,3,4].forty_two
=> nil
1.9.3 (main):0 > (1..100).to_a.forty_two
=> 42
なにこれ?
なにこれ?
質疑応答
質疑応答

if available?
  Question.all.map{|x|
    x.try(:answer).presence ||
    x.to_a.forty_two}

Contenu connexe

Tendances

SecureSocial - Authentication for Play Framework
SecureSocial - Authentication for Play FrameworkSecureSocial - Authentication for Play Framework
SecureSocial - Authentication for Play Frameworkjaliss
 
Kotlinのcoroutine、async/awaitと同じでしょ?って思ってたけど意外と洗練されててすごいなぁって思った話をさせてほしい
Kotlinのcoroutine、async/awaitと同じでしょ?って思ってたけど意外と洗練されててすごいなぁって思った話をさせてほしいKotlinのcoroutine、async/awaitと同じでしょ?って思ってたけど意外と洗練されててすごいなぁって思った話をさせてほしい
Kotlinのcoroutine、async/awaitと同じでしょ?って思ってたけど意外と洗練されててすごいなぁって思った話をさせてほしいTakuya Kikuchi
 
The Weather of the Century Part 2: High Performance
The Weather of the Century Part 2: High PerformanceThe Weather of the Century Part 2: High Performance
The Weather of the Century Part 2: High PerformanceMongoDB
 
Elasticsearch sur Azure : Make sense of your (BIG) data !
Elasticsearch sur Azure : Make sense of your (BIG) data !Elasticsearch sur Azure : Make sense of your (BIG) data !
Elasticsearch sur Azure : Make sense of your (BIG) data !Microsoft
 
масштабирование в Sql azure
масштабирование в Sql azureмасштабирование в Sql azure
масштабирование в Sql azureДенис Резник
 
Divolte collector overview
Divolte collector overviewDivolte collector overview
Divolte collector overviewGoDataDriven
 
Prototyping online ML with Divolte Collector
Prototyping online ML with Divolte CollectorPrototyping online ML with Divolte Collector
Prototyping online ML with Divolte Collectorfvanvollenhoven
 
Divolte Collector - meetup presentation
Divolte Collector - meetup presentationDivolte Collector - meetup presentation
Divolte Collector - meetup presentationfvanvollenhoven
 
The Ring programming language version 1.5.4 book - Part 50 of 185
The Ring programming language version 1.5.4 book - Part 50 of 185The Ring programming language version 1.5.4 book - Part 50 of 185
The Ring programming language version 1.5.4 book - Part 50 of 185Mahmoud Samir Fayed
 

Tendances (9)

SecureSocial - Authentication for Play Framework
SecureSocial - Authentication for Play FrameworkSecureSocial - Authentication for Play Framework
SecureSocial - Authentication for Play Framework
 
Kotlinのcoroutine、async/awaitと同じでしょ?って思ってたけど意外と洗練されててすごいなぁって思った話をさせてほしい
Kotlinのcoroutine、async/awaitと同じでしょ?って思ってたけど意外と洗練されててすごいなぁって思った話をさせてほしいKotlinのcoroutine、async/awaitと同じでしょ?って思ってたけど意外と洗練されててすごいなぁって思った話をさせてほしい
Kotlinのcoroutine、async/awaitと同じでしょ?って思ってたけど意外と洗練されててすごいなぁって思った話をさせてほしい
 
The Weather of the Century Part 2: High Performance
The Weather of the Century Part 2: High PerformanceThe Weather of the Century Part 2: High Performance
The Weather of the Century Part 2: High Performance
 
Elasticsearch sur Azure : Make sense of your (BIG) data !
Elasticsearch sur Azure : Make sense of your (BIG) data !Elasticsearch sur Azure : Make sense of your (BIG) data !
Elasticsearch sur Azure : Make sense of your (BIG) data !
 
масштабирование в Sql azure
масштабирование в Sql azureмасштабирование в Sql azure
масштабирование в Sql azure
 
Divolte collector overview
Divolte collector overviewDivolte collector overview
Divolte collector overview
 
Prototyping online ML with Divolte Collector
Prototyping online ML with Divolte CollectorPrototyping online ML with Divolte Collector
Prototyping online ML with Divolte Collector
 
Divolte Collector - meetup presentation
Divolte Collector - meetup presentationDivolte Collector - meetup presentation
Divolte Collector - meetup presentation
 
The Ring programming language version 1.5.4 book - Part 50 of 185
The Ring programming language version 1.5.4 book - Part 50 of 185The Ring programming language version 1.5.4 book - Part 50 of 185
The Ring programming language version 1.5.4 book - Part 50 of 185
 

En vedette

En vedette (8)

Rails基礎講座 part.1
Rails基礎講座 part.1Rails基礎講座 part.1
Rails基礎講座 part.1
 
社内LT資料
社内LT資料社内LT資料
社内LT資料
 
Rails基礎講座 part.2
Rails基礎講座 part.2Rails基礎講座 part.2
Rails基礎講座 part.2
 
Ruby with Hash
Ruby with HashRuby with Hash
Ruby with Hash
 
Ruby on
Ruby onRuby on
Ruby on
 
First Step TDD
First Step TDDFirst Step TDD
First Step TDD
 
Real world rails
Real world railsReal world rails
Real world rails
 
5 Tips for a Successful Social Media Strategy
5 Tips for a Successful Social Media Strategy 5 Tips for a Successful Social Media Strategy
5 Tips for a Successful Social Media Strategy
 

Similaire à Active support事始め

RではじめるTwitter解析
RではじめるTwitter解析RではじめるTwitter解析
RではじめるTwitter解析Takeshi Arabiki
 
A Deeper Dive into EXPLAIN
A Deeper Dive into EXPLAINA Deeper Dive into EXPLAIN
A Deeper Dive into EXPLAINEDB
 
JSR 310. New Date API in Java 8
JSR 310. New Date API in Java 8JSR 310. New Date API in Java 8
JSR 310. New Date API in Java 8Serhii Kartashov
 
Tensor flow description of ML Lab. document
Tensor flow description of ML Lab. documentTensor flow description of ML Lab. document
Tensor flow description of ML Lab. documentjeongok1
 
Becoming a better developer with EXPLAIN
Becoming a better developer with EXPLAINBecoming a better developer with EXPLAIN
Becoming a better developer with EXPLAINLouise Grandjonc
 
Java Time Puzzlers
Java Time PuzzlersJava Time Puzzlers
Java Time PuzzlersEric Jain
 

Similaire à Active support事始め (7)

RではじめるTwitter解析
RではじめるTwitter解析RではじめるTwitter解析
RではじめるTwitter解析
 
A Deeper Dive into EXPLAIN
A Deeper Dive into EXPLAINA Deeper Dive into EXPLAIN
A Deeper Dive into EXPLAIN
 
JSR 310. New Date API in Java 8
JSR 310. New Date API in Java 8JSR 310. New Date API in Java 8
JSR 310. New Date API in Java 8
 
Tensor flow description of ML Lab. document
Tensor flow description of ML Lab. documentTensor flow description of ML Lab. document
Tensor flow description of ML Lab. document
 
Becoming a better developer with EXPLAIN
Becoming a better developer with EXPLAINBecoming a better developer with EXPLAIN
Becoming a better developer with EXPLAIN
 
Java Time Puzzlers
Java Time PuzzlersJava Time Puzzlers
Java Time Puzzlers
 
Writing Faster Python 3
Writing Faster Python 3Writing Faster Python 3
Writing Faster Python 3
 

Dernier

Introduction to ArtificiaI Intelligence in Higher Education
Introduction to ArtificiaI Intelligence in Higher EducationIntroduction to ArtificiaI Intelligence in Higher Education
Introduction to ArtificiaI Intelligence in Higher Educationpboyjonauth
 
Introduction to AI in Higher Education_draft.pptx
Introduction to AI in Higher Education_draft.pptxIntroduction to AI in Higher Education_draft.pptx
Introduction to AI in Higher Education_draft.pptxpboyjonauth
 
URLs and Routing in the Odoo 17 Website App
URLs and Routing in the Odoo 17 Website AppURLs and Routing in the Odoo 17 Website App
URLs and Routing in the Odoo 17 Website AppCeline George
 
Kisan Call Centre - To harness potential of ICT in Agriculture by answer farm...
Kisan Call Centre - To harness potential of ICT in Agriculture by answer farm...Kisan Call Centre - To harness potential of ICT in Agriculture by answer farm...
Kisan Call Centre - To harness potential of ICT in Agriculture by answer farm...Krashi Coaching
 
PSYCHIATRIC History collection FORMAT.pptx
PSYCHIATRIC   History collection FORMAT.pptxPSYCHIATRIC   History collection FORMAT.pptx
PSYCHIATRIC History collection FORMAT.pptxPoojaSen20
 
Organic Name Reactions for the students and aspirants of Chemistry12th.pptx
Organic Name Reactions  for the students and aspirants of Chemistry12th.pptxOrganic Name Reactions  for the students and aspirants of Chemistry12th.pptx
Organic Name Reactions for the students and aspirants of Chemistry12th.pptxVS Mahajan Coaching Centre
 
Contemporary philippine arts from the regions_PPT_Module_12 [Autosaved] (1).pptx
Contemporary philippine arts from the regions_PPT_Module_12 [Autosaved] (1).pptxContemporary philippine arts from the regions_PPT_Module_12 [Autosaved] (1).pptx
Contemporary philippine arts from the regions_PPT_Module_12 [Autosaved] (1).pptxRoyAbrique
 
Accessible design: Minimum effort, maximum impact
Accessible design: Minimum effort, maximum impactAccessible design: Minimum effort, maximum impact
Accessible design: Minimum effort, maximum impactdawncurless
 
_Math 4-Q4 Week 5.pptx Steps in Collecting Data
_Math 4-Q4 Week 5.pptx Steps in Collecting Data_Math 4-Q4 Week 5.pptx Steps in Collecting Data
_Math 4-Q4 Week 5.pptx Steps in Collecting DataJhengPantaleon
 
Employee wellbeing at the workplace.pptx
Employee wellbeing at the workplace.pptxEmployee wellbeing at the workplace.pptx
Employee wellbeing at the workplace.pptxNirmalaLoungPoorunde1
 
Mastering the Unannounced Regulatory Inspection
Mastering the Unannounced Regulatory InspectionMastering the Unannounced Regulatory Inspection
Mastering the Unannounced Regulatory InspectionSafetyChain Software
 
A Critique of the Proposed National Education Policy Reform
A Critique of the Proposed National Education Policy ReformA Critique of the Proposed National Education Policy Reform
A Critique of the Proposed National Education Policy ReformChameera Dedduwage
 
Sanyam Choudhary Chemistry practical.pdf
Sanyam Choudhary Chemistry practical.pdfSanyam Choudhary Chemistry practical.pdf
Sanyam Choudhary Chemistry practical.pdfsanyamsingh5019
 
Call Girls in Dwarka Mor Delhi Contact Us 9654467111
Call Girls in Dwarka Mor Delhi Contact Us 9654467111Call Girls in Dwarka Mor Delhi Contact Us 9654467111
Call Girls in Dwarka Mor Delhi Contact Us 9654467111Sapana Sha
 
The basics of sentences session 2pptx copy.pptx
The basics of sentences session 2pptx copy.pptxThe basics of sentences session 2pptx copy.pptx
The basics of sentences session 2pptx copy.pptxheathfieldcps1
 
Grant Readiness 101 TechSoup and Remy Consulting
Grant Readiness 101 TechSoup and Remy ConsultingGrant Readiness 101 TechSoup and Remy Consulting
Grant Readiness 101 TechSoup and Remy ConsultingTechSoup
 
Q4-W6-Restating Informational Text Grade 3
Q4-W6-Restating Informational Text Grade 3Q4-W6-Restating Informational Text Grade 3
Q4-W6-Restating Informational Text Grade 3JemimahLaneBuaron
 
Concept of Vouching. B.Com(Hons) /B.Compdf
Concept of Vouching. B.Com(Hons) /B.CompdfConcept of Vouching. B.Com(Hons) /B.Compdf
Concept of Vouching. B.Com(Hons) /B.CompdfUmakantAnnand
 

Dernier (20)

TataKelola dan KamSiber Kecerdasan Buatan v022.pdf
TataKelola dan KamSiber Kecerdasan Buatan v022.pdfTataKelola dan KamSiber Kecerdasan Buatan v022.pdf
TataKelola dan KamSiber Kecerdasan Buatan v022.pdf
 
Introduction to ArtificiaI Intelligence in Higher Education
Introduction to ArtificiaI Intelligence in Higher EducationIntroduction to ArtificiaI Intelligence in Higher Education
Introduction to ArtificiaI Intelligence in Higher Education
 
Introduction to AI in Higher Education_draft.pptx
Introduction to AI in Higher Education_draft.pptxIntroduction to AI in Higher Education_draft.pptx
Introduction to AI in Higher Education_draft.pptx
 
URLs and Routing in the Odoo 17 Website App
URLs and Routing in the Odoo 17 Website AppURLs and Routing in the Odoo 17 Website App
URLs and Routing in the Odoo 17 Website App
 
Kisan Call Centre - To harness potential of ICT in Agriculture by answer farm...
Kisan Call Centre - To harness potential of ICT in Agriculture by answer farm...Kisan Call Centre - To harness potential of ICT in Agriculture by answer farm...
Kisan Call Centre - To harness potential of ICT in Agriculture by answer farm...
 
PSYCHIATRIC History collection FORMAT.pptx
PSYCHIATRIC   History collection FORMAT.pptxPSYCHIATRIC   History collection FORMAT.pptx
PSYCHIATRIC History collection FORMAT.pptx
 
Organic Name Reactions for the students and aspirants of Chemistry12th.pptx
Organic Name Reactions  for the students and aspirants of Chemistry12th.pptxOrganic Name Reactions  for the students and aspirants of Chemistry12th.pptx
Organic Name Reactions for the students and aspirants of Chemistry12th.pptx
 
Contemporary philippine arts from the regions_PPT_Module_12 [Autosaved] (1).pptx
Contemporary philippine arts from the regions_PPT_Module_12 [Autosaved] (1).pptxContemporary philippine arts from the regions_PPT_Module_12 [Autosaved] (1).pptx
Contemporary philippine arts from the regions_PPT_Module_12 [Autosaved] (1).pptx
 
Accessible design: Minimum effort, maximum impact
Accessible design: Minimum effort, maximum impactAccessible design: Minimum effort, maximum impact
Accessible design: Minimum effort, maximum impact
 
_Math 4-Q4 Week 5.pptx Steps in Collecting Data
_Math 4-Q4 Week 5.pptx Steps in Collecting Data_Math 4-Q4 Week 5.pptx Steps in Collecting Data
_Math 4-Q4 Week 5.pptx Steps in Collecting Data
 
Employee wellbeing at the workplace.pptx
Employee wellbeing at the workplace.pptxEmployee wellbeing at the workplace.pptx
Employee wellbeing at the workplace.pptx
 
Mastering the Unannounced Regulatory Inspection
Mastering the Unannounced Regulatory InspectionMastering the Unannounced Regulatory Inspection
Mastering the Unannounced Regulatory Inspection
 
A Critique of the Proposed National Education Policy Reform
A Critique of the Proposed National Education Policy ReformA Critique of the Proposed National Education Policy Reform
A Critique of the Proposed National Education Policy Reform
 
Staff of Color (SOC) Retention Efforts DDSD
Staff of Color (SOC) Retention Efforts DDSDStaff of Color (SOC) Retention Efforts DDSD
Staff of Color (SOC) Retention Efforts DDSD
 
Sanyam Choudhary Chemistry practical.pdf
Sanyam Choudhary Chemistry practical.pdfSanyam Choudhary Chemistry practical.pdf
Sanyam Choudhary Chemistry practical.pdf
 
Call Girls in Dwarka Mor Delhi Contact Us 9654467111
Call Girls in Dwarka Mor Delhi Contact Us 9654467111Call Girls in Dwarka Mor Delhi Contact Us 9654467111
Call Girls in Dwarka Mor Delhi Contact Us 9654467111
 
The basics of sentences session 2pptx copy.pptx
The basics of sentences session 2pptx copy.pptxThe basics of sentences session 2pptx copy.pptx
The basics of sentences session 2pptx copy.pptx
 
Grant Readiness 101 TechSoup and Remy Consulting
Grant Readiness 101 TechSoup and Remy ConsultingGrant Readiness 101 TechSoup and Remy Consulting
Grant Readiness 101 TechSoup and Remy Consulting
 
Q4-W6-Restating Informational Text Grade 3
Q4-W6-Restating Informational Text Grade 3Q4-W6-Restating Informational Text Grade 3
Q4-W6-Restating Informational Text Grade 3
 
Concept of Vouching. B.Com(Hons) /B.Compdf
Concept of Vouching. B.Com(Hons) /B.CompdfConcept of Vouching. B.Com(Hons) /B.Compdf
Concept of Vouching. B.Com(Hons) /B.Compdf
 

Active support事始め

Notes de l'éditeur

  1. \n
  2. \n
  3. \n
  4. \n
  5. \n
  6. \n
  7. \n
  8. \n
  9. \n
  10. \n
  11. \n
  12. \n
  13. \n
  14. \n
  15. \n
  16. \n
  17. \n
  18. \n
  19. \n
  20. \n
  21. \n
  22. \n
  23. \n
  24. \n
  25. \n
  26. \n
  27. \n
  28. \n
  29. \n
  30. \n
  31. \n
  32. \n
  33. \n
  34. \n
  35. \n
  36. \n
  37. \n
  38. \n