├── .gitattributes
├── .gitignore
├── .here
├── CNAME
├── README.md
├── css
├── fonts
│ ├── L-Consolas-Bold.ttf
│ ├── L-Consolas-BoldItalic.ttf
│ ├── L-Consolas-Italic.ttf
│ └── L-Consolas.ttf
└── slides.css
├── img
├── como.png
├── fff.png
├── logo.png
├── mu_dsa_rev.png
└── mu_jschool.png
├── index.Rmd
├── index.html
├── index_files
├── font-awesome
│ ├── css
│ │ ├── all.css
│ │ └── v4-shims.css
│ └── webfonts
│ │ ├── fa-brands-400.eot
│ │ ├── fa-brands-400.svg
│ │ ├── fa-brands-400.ttf
│ │ ├── fa-brands-400.woff
│ │ ├── fa-brands-400.woff2
│ │ ├── fa-regular-400.eot
│ │ ├── fa-regular-400.svg
│ │ ├── fa-regular-400.ttf
│ │ ├── fa-regular-400.woff
│ │ ├── fa-regular-400.woff2
│ │ ├── fa-solid-900.eot
│ │ ├── fa-solid-900.svg
│ │ ├── fa-solid-900.ttf
│ │ ├── fa-solid-900.woff
│ │ └── fa-solid-900.woff2
└── remark-css
│ └── robot.css
├── rtweet-workshop.Rproj
└── script.Rmd
/.gitattributes:
--------------------------------------------------------------------------------
1 | *.* linguist-language=R
2 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | .Rhistory
2 | .RData
3 | .Rproj.user
4 | .DS_Store
5 |
--------------------------------------------------------------------------------
/.here:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mkearney/rtweet-workshop/b8a59d4c07556bdb3cbe3d217a8a9228b326fc72/.here
--------------------------------------------------------------------------------
/CNAME:
--------------------------------------------------------------------------------
1 | rtweet-workshop.mikewk.com
2 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # rtweet-workshop
2 | [Slides](https://rtweet-workshop.mikewk.com) and [code](https://github.com/mkearney/rtweet-workshop/script.Rmd) for my [rtweet](https://rtweet.info) workshop.
3 |
--------------------------------------------------------------------------------
/css/fonts/L-Consolas-Bold.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mkearney/rtweet-workshop/b8a59d4c07556bdb3cbe3d217a8a9228b326fc72/css/fonts/L-Consolas-Bold.ttf
--------------------------------------------------------------------------------
/css/fonts/L-Consolas-BoldItalic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mkearney/rtweet-workshop/b8a59d4c07556bdb3cbe3d217a8a9228b326fc72/css/fonts/L-Consolas-BoldItalic.ttf
--------------------------------------------------------------------------------
/css/fonts/L-Consolas-Italic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mkearney/rtweet-workshop/b8a59d4c07556bdb3cbe3d217a8a9228b326fc72/css/fonts/L-Consolas-Italic.ttf
--------------------------------------------------------------------------------
/css/fonts/L-Consolas.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mkearney/rtweet-workshop/b8a59d4c07556bdb3cbe3d217a8a9228b326fc72/css/fonts/L-Consolas.ttf
--------------------------------------------------------------------------------
/css/slides.css:
--------------------------------------------------------------------------------
1 | @import url('https://fonts.googleapis.com/css?family=Roboto:400,400i,700,700i');
2 |
3 | @font-face{
4 | font-family: 'L-Consolas';
5 | src: url('fonts/L-Consolas.ttf') format('truetype');
6 | font-weight: 400;
7 | font-style: normal;
8 | }
9 |
10 |
11 | @font-face{
12 | font-family: 'L-Consolas';
13 | src: url('fonts/L-Consolas-Bold.ttf') format('truetype');
14 | font-weight: 700;
15 | font-style: normal;
16 | }
17 |
18 | @font-face{
19 | font-family: 'L-Consolas';
20 | src: url('fonts/L-Consolas-Italic.ttf') format('truetype');
21 | font-weight: 400;
22 | font-style: italic;
23 | }
24 |
25 | @font-face{
26 | font-family: 'L-Consolas';
27 | src: url('fonts/L-Consolas-BoldItalic.ttf') format('truetype');
28 | font-weight: 700;
29 | font-style: italic;
30 | }
31 |
32 | .remark-slide-content {
33 | font-size: 1.38em;
34 | padding: .25em 3.5em .25em 4em;
35 | }
36 |
37 | h1, h2, h3 {
38 | font-family: Roboto, 'Helvetica Neue', 'Helvetica', sans-serif;
39 | font-weight: 700;
40 | color: #222;
41 | }
42 | .remark-code, .remark-inline-code {
43 | font-family: 'L-Consolas', 'Consolas', Monaco, monospace;
44 | }
45 |
46 | body {
47 | font-size: 22px;
48 | font-family: Roboto, 'Helvetica Neue', Helvetica, sans-serif;
49 | }
50 | .title-slide h3, .remark-slide .title-slide h3, h1, h2, h3 {
51 | font-family: Roboto, Helvetica, sans-serif;
52 | }
53 | .title-slide {
54 | background-image: url("../img/mu_jschool.png"),
55 | url("../img/mu_dsa_rev.png");
56 | background-size: 300px auto, 300px auto;
57 | background-position: 0 100%, 100% 100%;
58 | }
59 |
60 | .remark-slide-content {
61 | background-image: url("../img/mu_jschool.png"),
62 | url("../img/mu_dsa_rev.png");
63 | background-size: 250px auto, 250px auto;
64 | background-position: 0% 100%, 100% 100%;
65 | }
66 | .inverse {
67 | background-image: none !important;
68 | }
69 |
70 | .remark-slide-number {
71 | top: 12px;
72 | bottom: unset;
73 | }
74 | .title-slide .remark-slide-number {
75 | display: none;
76 | }
77 | ul li, ol li {
78 | margin-top: .6em;
79 | margin-bottom: .6em;
80 | }
81 | /*.mjx-chtml {
82 | font-size: 120% !important;
83 | }*/
84 | table {
85 | margin: auto;
86 | border-top: 2px solid #000;
87 | border-bottom: 2px solid #000;
88 | border-spacing: 0;
89 | min-width: 30%;
90 | font-size: 75%;
91 | }
92 | table thead th {
93 | border-bottom: 1px solid #333;
94 | border-collapse: collapse;
95 | }
96 | th, td { padding: 4px 12px; }
97 | td { vertical-align: middle; }
98 | tr:nth-child(even) { background: #f3f3f3 }
99 | .remark-code, .remark-inline-code {
100 | font-family: "L-Consolas", 'Courier New', monospace;
101 | }
102 | pre code {
103 | font-size: 84% !important;
104 | }
105 |
106 | .hljs {
107 | box-shadow: 2px 2px 2px rgba(0,0,0,.2);
108 | background-color: #f3f3f3 !important;
109 | border-color: rgba(0,0,0,.05);
110 | border-style: solid;
111 | border-width: 1px;
112 | border-radius: 2px;
113 | }
114 | .wide pre {
115 | width: 110% !important;
116 | margin-left: -6.25% !important;
117 | }
118 | .tight ul li, .tight ol li {
119 | margin-top: .6em;
120 | margin-bottom: .6em;
121 | line-height: 0 !important;
122 | }
123 | .tight p {
124 | margin-top: -.2em;
125 | }
126 | blockquote {
127 | border-top: solid 1px rgba(0,0,0,.1);
128 | border-left: none;
129 | color: #333333bb;
130 | padding: unset;
131 | margin-left: 2em;
132 | }
133 | .hljs {
134 | color: #222 !important;
135 | }
136 | .hljs-comment, .hljs-quote {
137 | font-style: normal !important;
138 | }
139 | li code.remark-inline-code , p code.remark-inline-code {
140 | background-color: #f5f5f5;
141 | font-size: 102%;
142 | }
143 |
--------------------------------------------------------------------------------
/img/como.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mkearney/rtweet-workshop/b8a59d4c07556bdb3cbe3d217a8a9228b326fc72/img/como.png
--------------------------------------------------------------------------------
/img/fff.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mkearney/rtweet-workshop/b8a59d4c07556bdb3cbe3d217a8a9228b326fc72/img/fff.png
--------------------------------------------------------------------------------
/img/logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mkearney/rtweet-workshop/b8a59d4c07556bdb3cbe3d217a8a9228b326fc72/img/logo.png
--------------------------------------------------------------------------------
/img/mu_dsa_rev.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mkearney/rtweet-workshop/b8a59d4c07556bdb3cbe3d217a8a9228b326fc72/img/mu_dsa_rev.png
--------------------------------------------------------------------------------
/img/mu_jschool.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mkearney/rtweet-workshop/b8a59d4c07556bdb3cbe3d217a8a9228b326fc72/img/mu_jschool.png
--------------------------------------------------------------------------------
/index.Rmd:
--------------------------------------------------------------------------------
1 | ---
2 | title: "rtweet-workshop"
3 | subtitle: "Collecting and analyzing Twitter data"
4 | author: '`r rmdees::title_author()`'
5 | date: '`r rmdees::title_icons_fa5(twitter = "kearneymw", github = "mkearney")`'
6 | output:
7 | xaringan::moon_reader:
8 | css: ["robot", "css/slides.css"]
9 | self_contained: no
10 | nature:
11 | highlightStyle: github
12 | highlightLines: true
13 | countIncrementalSlides: false
14 | ratio: '16:9'
15 | ---
16 |
17 | ```{r setup, include=FALSE}
18 | knitr::opts_chunk$set(
19 | echo = TRUE,
20 | eval = FALSE,
21 | collapse = TRUE,
22 | comment = "#>"
23 | )
24 | options(htmltools.dir.version = FALSE)
25 | htmltools::tagList(rmarkdown::html_dependency_font_awesome())
26 |
27 | ## load libraries, set ggplot2 theme, and create datatable function
28 | library(mwk)
29 | theme_set(dataviz::theme_mwk(base_size = 14))
30 | set.seed(20180911)
31 | print <- function(x, n = NULL, align = "c", digits = 3) {
32 | if (is.null(n)) n <- nrow(x)
33 | if (nrow(x) < n) n <- nrow(x)
34 | cat(paste(knitr::kable(x[seq_len(n), ], format = "markdown",
35 | align = align, digits = digits), collapse = "\n"))
36 | }
37 | ```
38 |
39 | background-image: url(img/logo.png)
40 | background-size: 350px auto
41 | background-position: 50% 20%
42 | class: center, bottom
43 |
44 | View these slides at [rtweet-workshop.mikewk.com](https://rtweet-workshop.mikewk.com)
45 |
46 | View companion script at [rtweet-workshop.mikewk.com/script.Rmd](https://rtweet-workshop.mikewk.com/script.Rmd)
47 |
48 | View the Github repo at [github.com/mkearney/rtweet-workshop](https://github.com/mkearney/rtweet-workshop)
49 |
50 | ---
51 | class: tight
52 |
53 | ## About {rtweet}
54 |
55 | - On Comprehensive R Archive Network (CRAN)
56 |
57 | [](https://opensource.org/licenses/MIT)[](https://cran.r-project.org/package=rtweet)
58 |
59 | - Growing base of users
60 |
61 | [](http://depsy.org/package/r/rtweet)
62 |
63 | - Fairly stable
64 |
65 | [](https://travis-ci.org/mkearney/rtweet)[](https://codecov.io/gh/mkearney/rtweet?branch=master)[](https://www.tidyverse.org/lifecycle/#maturing)
66 |
67 | - Package website: [rtweet.info](http://rtweet.info)
68 |
69 | [](http://rtweet.info/)
70 |
71 | - Github repo: [mkearney/rtweet](https://github.com/mkearney/rtweet)
72 |
73 | [](https://github.com/mkearney/rtweet/)[](https://github.com/mkearney/rtweet/)
74 |
75 | ---
76 |
77 | ## Roadmap
78 | 1. Search tweets
79 | 1. Timelines
80 | 1. Favorites
81 | 1. Lookup tweets
82 | 1. Friends/followers
83 | 1. Lookup users
84 | 1. Lists
85 | 1. Stream
86 |
87 | ---
88 |
89 | ## Install
90 |
91 | - Install **{rtweet}** from [CRAN](https://cran.r-project/package=rtweet).
92 |
93 | ```{r}
94 | install.packages("rtweet")
95 | ```
96 |
97 | - Or install the **development version** from [Github](https://github.com/mkearney/rtweet).
98 |
99 | ```{r}
100 | #devtools::install_github("mkearney/rtweet")
101 | ```
102 |
103 | - Load **{rtweet}**
104 |
105 | ```{r tidy=FALSE}
106 | library(rtweet)
107 | ```
108 |
109 |
110 | ---
111 |
112 | ## httpuv
113 |
114 | To authorize rtweet's embedded **rstats2twitter** app via web browser, the **{httpuv}** pakage is required
115 |
116 | ```{r}
117 | ## install httpuv for browser-based authentication
118 | install.packages("httpuv")
119 | ```
120 |
121 |
122 | ---
123 | class: inverse, center, middle
124 |
125 | # Accessing web APIs
126 |
127 | ---
128 |
129 | ## Some background
130 |
131 | **Application Program Interfaces** (APIs) are sets of protocols that govern interactions between sites and users.
132 |
133 | + APIs are similar to web browsers but with different purpose:
134 | - Web browsers render **visual content**
135 | - Web APIs manage and organize **data**
136 | + For public APIs, many sites only allow **authorized** users
137 | - Twitter, Facebook, Instagram, Github, etc.
138 |
139 | ---
140 |
141 | ## developer.twitter.com
142 |
143 | To create your own token (with write and DM-read access), users must...
144 |
145 | 1. Apply and get approved for a developer account with Twitter
146 | 1. Create a Twitter app (fill out a form)
147 | - For step-by-step instructions on how to create a Twitter app and corresponding token, see
148 | [rtweet.info/articles/auth.html](https://rtweet.info/articles/auth.html)
149 |
150 | ---
151 | class: inverse, center, middle
152 |
153 | # Twitter Data!
154 |
155 | ---
156 | class: inverse, center, middle
157 |
158 | # 1.
Searching for tweets
159 |
160 | ---
161 |
162 | ## `search_tweets()`
163 |
164 | Search for one or more keyword(s)
165 |
166 | ```{r}
167 | rds <- search_tweets("rstats data science")
168 | rds
169 | ```
170 |
171 |
172 |
173 | > *Note*: implicit `AND` between words
174 |
175 | ---
176 |
177 | ## `search_tweets()`
178 |
179 | Search for exact phrase
180 |
181 | ```{r}
182 | ## single quotes around doubles
183 | ds <- search_tweets('"data science"')
184 |
185 | ## or escape the quotes
186 | ds <- search_tweets("\"data science\"")
187 | ds
188 | ```
189 |
190 | ---
191 |
192 | ## `search_tweets()`
193 |
194 | Search for keyword(s) **and** phrase
195 |
196 | ```{r}
197 | rpds <- search_tweets("rstats python \"data science\"")
198 | rpds
199 | ```
200 |
201 | ---
202 |
203 | ## `search_tweets()`
204 |
205 | + `search_tweets()` returns 100 most recent matching tweets by default
206 |
207 | + Increase `n` to return more (tip: use intervals of 100)
208 |
209 | ```{r}
210 | rstats <- search_tweets("rstats", n = 10000)
211 | rstats
212 | ```
213 |
214 |
215 |
216 | > Rate limit of 18,000 per fifteen minutes
217 |
218 | ---
219 |
220 | ## `search_tweets()`
221 |
222 | **PRO TIP #1**: Get the firehose for free by searching for tweets by
223 | verified **or** non-verified tweets
224 |
225 | ```{r}
226 | fff <- search_tweets(
227 | "filter:verified OR -filter:verified", n = 18000)
228 | fff
229 | ```
230 |
231 | Visualize second-by-second frequency
232 |
233 | ```{r}
234 | ts_plot(fff, "secs")
235 | ```
236 |
237 |
238 | ---
239 |
240 |
241 |
242 | ---
243 |
244 | ## `search_tweets()`
245 |
246 | **PRO TIP #2**: Use search operators provided by Twitter, e.g.,
247 |
248 | + filter by language and exclude retweets and replies
249 |
250 | ```{r}
251 | rt <- search_tweets("rstats", lang = "en",
252 | include_rts = FALSE, `-filter` = "replies")
253 | ```
254 |
255 | + filter only tweets linking to news articles
256 |
257 | ```{r}
258 | nws <- search_tweets("filter:news")
259 | ```
260 |
261 | ---
262 |
263 | ## `search_tweets()`
264 |
265 | + filter only tweets that contain links
266 |
267 | ```{r}
268 | links <- search_tweets("filter:links")
269 | links
270 | ```
271 |
272 |
273 | + filter only tweets that contain video
274 |
275 | ```{r}
276 | vids <- search_tweets("filter:video")
277 | vids
278 | ```
279 |
280 | ---
281 |
282 | ## `search_tweets()`
283 |
284 | + filter only tweets sent `from:{screen_name}` or `to:{screen_name}` certain users
285 |
286 | ```{r}
287 | ## vector of screen names
288 | users <- c("cnnbrk", "AP", "nytimes",
289 | "foxnews", "msnbc", "seanhannity", "maddow")
290 | paste0("from:", users, collapse = " OR ")
291 | #> "from:cnnbrk OR from:AP OR from:nytimes OR from:foxnews OR
292 | #> from:msnbc OR from:seanhannity OR from:maddow"
293 |
294 | tousers <- search_tweets(paste0("from:", users, collapse = " OR "))
295 | tousers
296 | ```
297 |
298 |
299 | ---
300 |
301 | ## `search_tweets()`
302 |
303 | + filter only tweets with at least 100 favorites or 100 retweets
304 |
305 | ```{r}
306 | pop <- search_tweets(
307 | "(filter:verified OR -filter:verified) (min_faves:100 OR min_retweets:100)")
308 | ```
309 |
310 | + filter by the type of device that posted the tweet.
311 |
312 | ```{r}
313 | rt <- search_tweets("lang:en", source = '"Twitter for iPhone"')
314 | ```
315 |
316 |
317 | ---
318 |
319 | ## `search_tweets()`
320 |
321 | **PRO TIP #3**: Search by geolocation (ex: tweets within 25 miles of Columbia, MO)
322 |
323 | ```{r}
324 | como <- search_tweets(
325 | geocode = "38.9517,-92.3341,25mi", n = 10000
326 | )
327 | como
328 | ```
329 |
330 |
331 | ---
332 |
333 | ## `search_tweets()`
334 |
335 | Use `lat_lng()` to convert geographical data into `lat` and `lng` variables.
336 |
337 | ```{r}
338 | como <- lat_lng(como)
339 | par(mar = c(0, 0, 0, 0))
340 | maps::map("state", fill = TRUE, col = "#ffffff",
341 | lwd = .25, mar = c(0, 0, 0, 0),
342 | xlim = c(-96, -89), y = c(35, 41))
343 | with(como, points(lng, lat, pch = 20, col = "red"))
344 | ```
345 |
346 |
347 |
348 | > This code plots geotagged tweets on a map of Missouri
349 |
350 | ---
351 |
352 |
353 |
354 | ---
355 |
356 | ## `search_tweets()`
357 |
358 | **PRO TIP #4**: (for developer accounts only) Use `bearer_token()` to increase rate limit to 45,000 per
359 | fifteen minutes.
360 |
361 | ```{r}
362 | mosen <- search_tweets(
363 | "mccaskill OR hawley",
364 | n = 45000,
365 | token = bearer_token()
366 | )
367 | ```
368 |
369 |
370 | ---
371 | class: inverse, center, middle
372 |
373 | # 2.
User timelines
374 |
375 | ---
376 |
377 | ## `get_timeline()`
378 |
379 | Get the most recent tweets posted by a user.
380 |
381 | ```{r}
382 | cnn <- get_timeline("cnn")
383 | ```
384 |
385 | ---
386 |
387 | ## `get_timeline()`
388 |
389 | Get up to the most recent 3,200 tweets (endpoint max) posted by multiple users.
390 |
391 | ```{r}
392 | nws <- get_timeline(c("cnn", "foxnews", "msnbc"), n = 3200)
393 | ```
394 |
395 | ---
396 |
397 | ## `ts_plot()`
398 |
399 | Group by `screen_name` and plot hourly frequencies of tweets.
400 |
401 | ```{r}
402 | nws %>%
403 | dplyr::group_by(screen_name) %>%
404 | ts_plot("hours")
405 | ```
406 |
407 |
408 | ---
409 | class: inverse, center, middle
410 |
411 | # 3.
User favorites
412 |
413 | ---
414 |
415 | ## `get_favorites()`
416 |
417 | Get up to the most recent 3,000 tweets favorited by a user.
418 |
419 | ```{r}
420 | kmw_favs <- get_favorites("kearneymw", n = 3000)
421 | ```
422 |
423 | ---
424 | class: inverse, center, middle
425 |
426 | # 4.
Lookup statuses
427 |
428 | ---
429 |
430 | ## `lookup_tweets()`
431 |
432 | ```{r}
433 | ## `lookup_tweets()`
434 | status_ids <- c("947235015343202304", "947592785519173637",
435 | "948359545767841792", "832945737625387008")
436 | twt <- lookup_tweets(status_ids)
437 | ```
438 |
439 |
440 | ---
441 | class: inverse, center, middle
442 |
443 | # 5.
Getting friends/followers
444 |
445 | ---
446 |
447 | ## Friends/followers
448 |
449 | Twitter's API documentation distinguishes between **friends** and **followers**.
450 |
451 | + **Friend** refers to an account a given user follows
452 | + **Follower** refers to an account following a given user
453 |
454 | ---
455 |
456 | ## `get_friends()`
457 |
458 | Get user IDs of accounts **followed by** (AKA friends) [@jack](https://twitter.com/jack), the co-founder and CEO of Twitter.
459 |
460 | ```{r}
461 | fds <- get_friends("jack")
462 | fds
463 | ```
464 |
465 | ---
466 |
467 | ## `get_friends()`
468 |
469 | Get friends of **multiple** users in a single call.
470 |
471 | ```{r}
472 | fds <- get_friends(
473 | c("hadleywickham", "NateSilver538", "Nate_Cohn")
474 | )
475 | fds
476 | ```
477 |
478 | ---
479 |
480 | ## `get_followers()`
481 |
482 | Get user IDs of accounts **following** (AKA followers) [@mizzou](https://twitter.com/mizzou).
483 |
484 | ```{r}
485 | mu <- get_followers("mizzou")
486 | mu
487 | ```
488 |
489 | ---
490 |
491 | ## `get_followers()`
492 |
493 | Unlike friends (limited by Twitter to 5,000), there is **no limit** on the number of followers.
494 |
495 | To get user IDs of all 55(ish) million followers of @realDonaldTrump, you need two things:
496 |
497 | 1. A stable **internet** connection
498 | 1. **Time** – approximately five and a half days
499 |
500 | ---
501 |
502 | ## `get_followers()`
503 |
504 | Get all of Donald Trump's followers.
505 |
506 | ```{r}
507 | ## get all of trump's followers
508 | rdt <- get_followers(
509 | "realdonaldtrump",
510 | n = 56000000,
511 | retryonratelimit = TRUE
512 | )
513 | ```
514 |
515 |
516 | ---
517 | class: inverse, center, middle
518 |
519 | # 6.
Lookup users
520 |
521 | ---
522 |
523 | ## `lookup_users()`
524 |
525 | Lookup users-level (and most recent tweet) associated with vector of `user_id` or `screen_name`.
526 |
527 | ```{r}
528 | ## vector of users
529 | users <- c("hadleywickham", "NateSilver538", "Nate_Cohn")
530 |
531 | ## lookup users twitter data
532 | usr <- lookup_users(users)
533 | usr
534 | ```
535 |
536 |
537 | ---
538 |
539 | ## `search_users()`
540 |
541 | It's also possible to search for users. Twitter will look for matches in user names, screen names, and profile bios.
542 |
543 | ```{r}
544 | ## search for breaking news accounts
545 | bkn <- search_users("breaking news")
546 | bkn
547 | ```
548 |
549 | ---
550 | class: inverse, center, middle
551 |
552 | # 7.
Lists
553 |
554 | ---
555 |
556 | ## `lists_memberships()`
557 |
558 | + Get an account's list memberships (lists that include an account)
559 |
560 | ```{r}
561 | ## lists that include Nate Silver
562 | nsl <- lists_memberships("NateSilver538")
563 | nsl
564 | ```
565 |
566 | ---
567 |
568 | ## `lists_members()`
569 |
570 | + Get all list members (accounts on a list)
571 |
572 | ```{r}
573 | ## all members of congress
574 | cng <- lists_members(owner_user = "cspan", slug = "members-of-congress")
575 | cng
576 | ```
577 |
578 | ---
579 | class: inverse, center, middle
580 |
581 | # 8.
Streaming tweets
582 |
583 | ---
584 |
585 | ## `stream_tweets()`
586 |
587 | **Sampling**: small random sample (`~ 1%`) of all publicly available tweets
588 |
589 | ```{r}
590 | ss <- stream_tweets("")
591 | ```
592 |
593 | **Filtering**: search-like query (up to 400 keywords)
594 |
595 | ```{r}
596 | sf <- stream_tweets("mueller,fbi,investigation,trump,realdonaldtrump")
597 | ```
598 |
599 | ---
600 |
601 | ## `stream_tweets()`
602 |
603 | **Tracking**: vector of user ids (up to 5000 user_ids)
604 |
605 | ```{r}
606 | ## user IDs from congress members (lists_members ex output)
607 | st <- stream_tweets(cng$user_id)
608 | ```
609 |
610 | **Location**: geographical coordinates (1-360 degree location boxes)
611 |
612 | ```{r}
613 | ## world-wide bounding box
614 | sl <- stream_tweets(c(-180, -90, 180, 90))
615 | ```
616 |
617 | ---
618 |
619 | ## `stream_tweets()`
620 |
621 | The default duration for streams is thirty seconds `timeout = 30`
622 |
623 | + Specify specific stream duration in seconds
624 |
625 | ```{r}
626 | ## stream for 10 minutes
627 | stm <- stream_tweets(timeout = 60 * 10)
628 | ```
629 |
630 | ---
631 |
632 | ## `stream_tweets()`
633 |
634 | Stream JSON data directly to a text file
635 |
636 | ```{r}
637 | stream_tweets(timeout = 60 * 10,
638 | file_name = "random-stream-2018-11-13.json",
639 | parse = FALSE)
640 | ```
641 |
642 | Read-in a streamed JSON file
643 |
644 | ```{r}
645 | rj <- parse_stream("random-stream-2018-11-13.json")
646 | ```
647 |
648 | ---
649 |
650 | ## `stream_tweets()`
651 |
652 | Stream tweets indefinitely.
653 |
654 | ```{r}
655 | stream_tweets(timeout = Inf,
656 | file_name = "random-stream-2018-11-13.json",
657 | parse = FALSE)
658 | ```
659 |
660 | ---
661 |
662 | ## `lookup_coords()`
663 |
664 | A useful convenience function–though it now requires an API key–for quickly looking up coordinates
665 |
666 | ```{r}
667 | ## stream tweets sent from london
668 | luk1 <- stream_tweets(q = lookup_coords("London, UK"), timeout = 60)
669 |
670 | ## search tweets sent from london
671 | luk2 <- search_tweets(
672 | geocode = lookup_coords("London, UK"), n = 1000)
673 | ```
674 |
675 |
676 | ---
677 | class: inverse, center, middle
678 |
679 | # Analyzing Twitter data
680 |
681 | ---
682 |
683 | ## Data set
684 |
685 | For these examples, let's gather a data set of iPhone and Android users
686 |
687 | ```{r}
688 | iphone_android <- search_tweets(
689 | paste0('(filter:verified OR -filter:verified) AND \n',
690 | '(source:"Twitter for iPhone" OR source:"Twitter for Android")'),
691 | include_rts = FALSE,
692 | n = 18000
693 | )
694 |
695 | ## view breakdown of tweet source (device)
696 | table(iphone_android$source)
697 | ```
698 |
699 | ---
700 |
701 | ## Text processing
702 |
703 | Tokenize tweets [into words]
704 |
705 | ```{r}
706 | ## tokenize each tweet into words vecotr
707 | wds <- tokenizers::tokenize_tweets(iphone_android$text)
708 |
709 | ## collapse back into stirngs
710 | txt <- purrr::map_chr(wds, paste, collapse = " ")
711 |
712 | ## get sentiment using afinn dictionary
713 | iphone_android$sent <- syuzhet::get_sentiment(
714 | iphone_android$text, method = "afinn"
715 | )
716 | ```
717 |
718 | ---
719 |
720 | ## Compare groups
721 |
722 | Group by source and summarize some numeric variables
723 |
724 | ```{r}
725 | iphone_android %>%
726 | group_by(source) %>%
727 | summarise(sent = mean(sent, na.rm = TRUE),
728 | avg_rt = mean(retweet_count, na.rm = TRUE),
729 | avg_fav = mean(favorites_count, na.rm = TRUE),
730 | tweets = mean(statuses_count, na.rm = TRUE),
731 | friends = mean(retweet_count, na.rm = TRUE),
732 | followers = mean(retweet_count, na.rm = TRUE),
733 | ff_rat = (friends + 1) / (friends + followers + 1)
734 | )
735 | ```
736 |
737 | ---
738 |
739 | ## Features
740 |
741 | Easily automate feature extraction for Twitter data.
742 |
743 | ```{r}
744 | ## install package
745 | remotes::install_github("mkearney/textfeatures")
746 |
747 | ## feature extraction
748 | tf <- textfeatures::textfeatures(iphone_android)
749 |
750 | ## add dependent variable
751 | tf$y <- tweet_source_data$source == "Twitter for iPhone"
752 | ```
753 |
754 | ---
755 |
756 | ## Machine learning
757 |
758 | Run a boosted model
759 |
760 | ```{r}
761 | ## load gbm and estimate model
762 | library(gbm)
763 | m1 <- gbm(y ~ ., data = tf[1:15000, -1], n.trees = 200)
764 | #summary(m1)
765 |
766 | ## generate predictions
767 | p <- predict(m1, newdata = tf[15001:nrow(tf), -1],
768 | type = "response", n.trees = 200)
769 |
770 | ## how'd we do?
771 | table(p > .50, tf$y[15001:nrow(tf)])
772 | ```
773 |
774 | ---
775 |
776 | ## Tweetbotornot
777 |
778 | A package designed to estimate the probability of an account being a bot.
779 |
780 | ```{r}
781 | ## install from Github
782 | remotes::install_github("mkearney/tweetbotornot")
783 |
784 | ## estimate some accounts
785 | bp <- tweetbotornot::tweetbotornot(c(
786 | "kearneymw",
787 | "realdonaldtrump",
788 | "netflix_bot",
789 | "tidyversetweets",
790 | "thebotlebowski")
791 | )
792 | bp
793 | ```
794 |
795 |
796 |
797 |
--------------------------------------------------------------------------------
/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | rtweet-workshop
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
847 |
848 |
849 |
894 |
895 |
905 |
906 |
925 |
926 |
936 |
937 |
938 |
--------------------------------------------------------------------------------
/index_files/font-awesome/css/all.css:
--------------------------------------------------------------------------------
1 | /*!
2 | * Font Awesome Free 5.1.0 by @fontawesome - https://fontawesome.com
3 | * License - https://fontawesome.com/license (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
4 | */
5 | .fa,.fab,.fal,.far,.fas{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:inline-block;font-style:normal;font-variant:normal;text-rendering:auto;line-height:1}.fa-lg{font-size:1.33333em;line-height:.75em;vertical-align:-.0667em}.fa-xs{font-size:.75em}.fa-sm{font-size:.875em}.fa-1x{font-size:1em}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-6x{font-size:6em}.fa-7x{font-size:7em}.fa-8x{font-size:8em}.fa-9x{font-size:9em}.fa-10x{font-size:10em}.fa-fw{text-align:center;width:1.25em}.fa-ul{list-style-type:none;margin-left:2.5em;padding-left:0}.fa-ul>li{position:relative}.fa-li{left:-2em;position:absolute;text-align:center;width:2em;line-height:inherit}.fa-border{border:.08em solid #eee;border-radius:.1em;padding:.2em .25em .15em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left,.fab.fa-pull-left,.fal.fa-pull-left,.far.fa-pull-left,.fas.fa-pull-left{margin-right:.3em}.fa.fa-pull-right,.fab.fa-pull-right,.fal.fa-pull-right,.far.fa-pull-right,.fas.fa-pull-right{margin-left:.3em}.fa-spin{animation:a 2s infinite linear}.fa-pulse{animation:a 1s infinite steps(8)}@keyframes a{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.fa-rotate-90{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";transform:rotate(90deg)}.fa-rotate-180{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";transform:rotate(180deg)}.fa-rotate-270{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";transform:rotate(270deg)}.fa-flip-horizontal{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";transform:scaleX(-1)}.fa-flip-vertical{transform:scaleY(-1)}.fa-flip-horizontal.fa-flip-vertical,.fa-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)"}.fa-flip-horizontal.fa-flip-vertical{transform:scale(-1)}:root .fa-flip-horizontal,:root .fa-flip-vertical,:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270{-webkit-filter:none;filter:none}.fa-stack{display:inline-block;height:2em;line-height:2em;position:relative;vertical-align:middle;width:2em}.fa-stack-1x,.fa-stack-2x{left:0;position:absolute;text-align:center;width:100%}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-500px:before{content:"\f26e"}.fa-accessible-icon:before{content:"\f368"}.fa-accusoft:before{content:"\f369"}.fa-address-book:before{content:"\f2b9"}.fa-address-card:before{content:"\f2bb"}.fa-adjust:before{content:"\f042"}.fa-adn:before{content:"\f170"}.fa-adversal:before{content:"\f36a"}.fa-affiliatetheme:before{content:"\f36b"}.fa-algolia:before{content:"\f36c"}.fa-align-center:before{content:"\f037"}.fa-align-justify:before{content:"\f039"}.fa-align-left:before{content:"\f036"}.fa-align-right:before{content:"\f038"}.fa-allergies:before{content:"\f461"}.fa-amazon:before{content:"\f270"}.fa-amazon-pay:before{content:"\f42c"}.fa-ambulance:before{content:"\f0f9"}.fa-american-sign-language-interpreting:before{content:"\f2a3"}.fa-amilia:before{content:"\f36d"}.fa-anchor:before{content:"\f13d"}.fa-android:before{content:"\f17b"}.fa-angellist:before{content:"\f209"}.fa-angle-double-down:before{content:"\f103"}.fa-angle-double-left:before{content:"\f100"}.fa-angle-double-right:before{content:"\f101"}.fa-angle-double-up:before{content:"\f102"}.fa-angle-down:before{content:"\f107"}.fa-angle-left:before{content:"\f104"}.fa-angle-right:before{content:"\f105"}.fa-angle-up:before{content:"\f106"}.fa-angry:before{content:"\f556"}.fa-angrycreative:before{content:"\f36e"}.fa-angular:before{content:"\f420"}.fa-app-store:before{content:"\f36f"}.fa-app-store-ios:before{content:"\f370"}.fa-apper:before{content:"\f371"}.fa-apple:before{content:"\f179"}.fa-apple-pay:before{content:"\f415"}.fa-archive:before{content:"\f187"}.fa-archway:before{content:"\f557"}.fa-arrow-alt-circle-down:before{content:"\f358"}.fa-arrow-alt-circle-left:before{content:"\f359"}.fa-arrow-alt-circle-right:before{content:"\f35a"}.fa-arrow-alt-circle-up:before{content:"\f35b"}.fa-arrow-circle-down:before{content:"\f0ab"}.fa-arrow-circle-left:before{content:"\f0a8"}.fa-arrow-circle-right:before{content:"\f0a9"}.fa-arrow-circle-up:before{content:"\f0aa"}.fa-arrow-down:before{content:"\f063"}.fa-arrow-left:before{content:"\f060"}.fa-arrow-right:before{content:"\f061"}.fa-arrow-up:before{content:"\f062"}.fa-arrows-alt:before{content:"\f0b2"}.fa-arrows-alt-h:before{content:"\f337"}.fa-arrows-alt-v:before{content:"\f338"}.fa-assistive-listening-systems:before{content:"\f2a2"}.fa-asterisk:before{content:"\f069"}.fa-asymmetrik:before{content:"\f372"}.fa-at:before{content:"\f1fa"}.fa-atlas:before{content:"\f558"}.fa-audible:before{content:"\f373"}.fa-audio-description:before{content:"\f29e"}.fa-autoprefixer:before{content:"\f41c"}.fa-avianex:before{content:"\f374"}.fa-aviato:before{content:"\f421"}.fa-award:before{content:"\f559"}.fa-aws:before{content:"\f375"}.fa-backspace:before{content:"\f55a"}.fa-backward:before{content:"\f04a"}.fa-balance-scale:before{content:"\f24e"}.fa-ban:before{content:"\f05e"}.fa-band-aid:before{content:"\f462"}.fa-bandcamp:before{content:"\f2d5"}.fa-barcode:before{content:"\f02a"}.fa-bars:before{content:"\f0c9"}.fa-baseball-ball:before{content:"\f433"}.fa-basketball-ball:before{content:"\f434"}.fa-bath:before{content:"\f2cd"}.fa-battery-empty:before{content:"\f244"}.fa-battery-full:before{content:"\f240"}.fa-battery-half:before{content:"\f242"}.fa-battery-quarter:before{content:"\f243"}.fa-battery-three-quarters:before{content:"\f241"}.fa-bed:before{content:"\f236"}.fa-beer:before{content:"\f0fc"}.fa-behance:before{content:"\f1b4"}.fa-behance-square:before{content:"\f1b5"}.fa-bell:before{content:"\f0f3"}.fa-bell-slash:before{content:"\f1f6"}.fa-bezier-curve:before{content:"\f55b"}.fa-bicycle:before{content:"\f206"}.fa-bimobject:before{content:"\f378"}.fa-binoculars:before{content:"\f1e5"}.fa-birthday-cake:before{content:"\f1fd"}.fa-bitbucket:before{content:"\f171"}.fa-bitcoin:before{content:"\f379"}.fa-bity:before{content:"\f37a"}.fa-black-tie:before{content:"\f27e"}.fa-blackberry:before{content:"\f37b"}.fa-blender:before{content:"\f517"}.fa-blind:before{content:"\f29d"}.fa-blogger:before{content:"\f37c"}.fa-blogger-b:before{content:"\f37d"}.fa-bluetooth:before{content:"\f293"}.fa-bluetooth-b:before{content:"\f294"}.fa-bold:before{content:"\f032"}.fa-bolt:before{content:"\f0e7"}.fa-bomb:before{content:"\f1e2"}.fa-bong:before{content:"\f55c"}.fa-book:before{content:"\f02d"}.fa-book-open:before{content:"\f518"}.fa-bookmark:before{content:"\f02e"}.fa-bowling-ball:before{content:"\f436"}.fa-box:before{content:"\f466"}.fa-box-open:before{content:"\f49e"}.fa-boxes:before{content:"\f468"}.fa-braille:before{content:"\f2a1"}.fa-briefcase:before{content:"\f0b1"}.fa-briefcase-medical:before{content:"\f469"}.fa-broadcast-tower:before{content:"\f519"}.fa-broom:before{content:"\f51a"}.fa-brush:before{content:"\f55d"}.fa-btc:before{content:"\f15a"}.fa-bug:before{content:"\f188"}.fa-building:before{content:"\f1ad"}.fa-bullhorn:before{content:"\f0a1"}.fa-bullseye:before{content:"\f140"}.fa-burn:before{content:"\f46a"}.fa-buromobelexperte:before{content:"\f37f"}.fa-bus:before{content:"\f207"}.fa-bus-alt:before{content:"\f55e"}.fa-buysellads:before{content:"\f20d"}.fa-calculator:before{content:"\f1ec"}.fa-calendar:before{content:"\f133"}.fa-calendar-alt:before{content:"\f073"}.fa-calendar-check:before{content:"\f274"}.fa-calendar-minus:before{content:"\f272"}.fa-calendar-plus:before{content:"\f271"}.fa-calendar-times:before{content:"\f273"}.fa-camera:before{content:"\f030"}.fa-camera-retro:before{content:"\f083"}.fa-cannabis:before{content:"\f55f"}.fa-capsules:before{content:"\f46b"}.fa-car:before{content:"\f1b9"}.fa-caret-down:before{content:"\f0d7"}.fa-caret-left:before{content:"\f0d9"}.fa-caret-right:before{content:"\f0da"}.fa-caret-square-down:before{content:"\f150"}.fa-caret-square-left:before{content:"\f191"}.fa-caret-square-right:before{content:"\f152"}.fa-caret-square-up:before{content:"\f151"}.fa-caret-up:before{content:"\f0d8"}.fa-cart-arrow-down:before{content:"\f218"}.fa-cart-plus:before{content:"\f217"}.fa-cc-amazon-pay:before{content:"\f42d"}.fa-cc-amex:before{content:"\f1f3"}.fa-cc-apple-pay:before{content:"\f416"}.fa-cc-diners-club:before{content:"\f24c"}.fa-cc-discover:before{content:"\f1f2"}.fa-cc-jcb:before{content:"\f24b"}.fa-cc-mastercard:before{content:"\f1f1"}.fa-cc-paypal:before{content:"\f1f4"}.fa-cc-stripe:before{content:"\f1f5"}.fa-cc-visa:before{content:"\f1f0"}.fa-centercode:before{content:"\f380"}.fa-certificate:before{content:"\f0a3"}.fa-chalkboard:before{content:"\f51b"}.fa-chalkboard-teacher:before{content:"\f51c"}.fa-chart-area:before{content:"\f1fe"}.fa-chart-bar:before{content:"\f080"}.fa-chart-line:before{content:"\f201"}.fa-chart-pie:before{content:"\f200"}.fa-check:before{content:"\f00c"}.fa-check-circle:before{content:"\f058"}.fa-check-double:before{content:"\f560"}.fa-check-square:before{content:"\f14a"}.fa-chess:before{content:"\f439"}.fa-chess-bishop:before{content:"\f43a"}.fa-chess-board:before{content:"\f43c"}.fa-chess-king:before{content:"\f43f"}.fa-chess-knight:before{content:"\f441"}.fa-chess-pawn:before{content:"\f443"}.fa-chess-queen:before{content:"\f445"}.fa-chess-rook:before{content:"\f447"}.fa-chevron-circle-down:before{content:"\f13a"}.fa-chevron-circle-left:before{content:"\f137"}.fa-chevron-circle-right:before{content:"\f138"}.fa-chevron-circle-up:before{content:"\f139"}.fa-chevron-down:before{content:"\f078"}.fa-chevron-left:before{content:"\f053"}.fa-chevron-right:before{content:"\f054"}.fa-chevron-up:before{content:"\f077"}.fa-child:before{content:"\f1ae"}.fa-chrome:before{content:"\f268"}.fa-church:before{content:"\f51d"}.fa-circle:before{content:"\f111"}.fa-circle-notch:before{content:"\f1ce"}.fa-clipboard:before{content:"\f328"}.fa-clipboard-check:before{content:"\f46c"}.fa-clipboard-list:before{content:"\f46d"}.fa-clock:before{content:"\f017"}.fa-clone:before{content:"\f24d"}.fa-closed-captioning:before{content:"\f20a"}.fa-cloud:before{content:"\f0c2"}.fa-cloud-download-alt:before{content:"\f381"}.fa-cloud-upload-alt:before{content:"\f382"}.fa-cloudscale:before{content:"\f383"}.fa-cloudsmith:before{content:"\f384"}.fa-cloudversify:before{content:"\f385"}.fa-cocktail:before{content:"\f561"}.fa-code:before{content:"\f121"}.fa-code-branch:before{content:"\f126"}.fa-codepen:before{content:"\f1cb"}.fa-codiepie:before{content:"\f284"}.fa-coffee:before{content:"\f0f4"}.fa-cog:before{content:"\f013"}.fa-cogs:before{content:"\f085"}.fa-coins:before{content:"\f51e"}.fa-columns:before{content:"\f0db"}.fa-comment:before{content:"\f075"}.fa-comment-alt:before{content:"\f27a"}.fa-comment-dots:before{content:"\f4ad"}.fa-comment-slash:before{content:"\f4b3"}.fa-comments:before{content:"\f086"}.fa-compact-disc:before{content:"\f51f"}.fa-compass:before{content:"\f14e"}.fa-compress:before{content:"\f066"}.fa-concierge-bell:before{content:"\f562"}.fa-connectdevelop:before{content:"\f20e"}.fa-contao:before{content:"\f26d"}.fa-cookie:before{content:"\f563"}.fa-cookie-bite:before{content:"\f564"}.fa-copy:before{content:"\f0c5"}.fa-copyright:before{content:"\f1f9"}.fa-couch:before{content:"\f4b8"}.fa-cpanel:before{content:"\f388"}.fa-creative-commons:before{content:"\f25e"}.fa-creative-commons-by:before{content:"\f4e7"}.fa-creative-commons-nc:before{content:"\f4e8"}.fa-creative-commons-nc-eu:before{content:"\f4e9"}.fa-creative-commons-nc-jp:before{content:"\f4ea"}.fa-creative-commons-nd:before{content:"\f4eb"}.fa-creative-commons-pd:before{content:"\f4ec"}.fa-creative-commons-pd-alt:before{content:"\f4ed"}.fa-creative-commons-remix:before{content:"\f4ee"}.fa-creative-commons-sa:before{content:"\f4ef"}.fa-creative-commons-sampling:before{content:"\f4f0"}.fa-creative-commons-sampling-plus:before{content:"\f4f1"}.fa-creative-commons-share:before{content:"\f4f2"}.fa-credit-card:before{content:"\f09d"}.fa-crop:before{content:"\f125"}.fa-crop-alt:before{content:"\f565"}.fa-crosshairs:before{content:"\f05b"}.fa-crow:before{content:"\f520"}.fa-crown:before{content:"\f521"}.fa-css3:before{content:"\f13c"}.fa-css3-alt:before{content:"\f38b"}.fa-cube:before{content:"\f1b2"}.fa-cubes:before{content:"\f1b3"}.fa-cut:before{content:"\f0c4"}.fa-cuttlefish:before{content:"\f38c"}.fa-d-and-d:before{content:"\f38d"}.fa-dashcube:before{content:"\f210"}.fa-database:before{content:"\f1c0"}.fa-deaf:before{content:"\f2a4"}.fa-delicious:before{content:"\f1a5"}.fa-deploydog:before{content:"\f38e"}.fa-deskpro:before{content:"\f38f"}.fa-desktop:before{content:"\f108"}.fa-deviantart:before{content:"\f1bd"}.fa-diagnoses:before{content:"\f470"}.fa-dice:before{content:"\f522"}.fa-dice-five:before{content:"\f523"}.fa-dice-four:before{content:"\f524"}.fa-dice-one:before{content:"\f525"}.fa-dice-six:before{content:"\f526"}.fa-dice-three:before{content:"\f527"}.fa-dice-two:before{content:"\f528"}.fa-digg:before{content:"\f1a6"}.fa-digital-ocean:before{content:"\f391"}.fa-digital-tachograph:before{content:"\f566"}.fa-discord:before{content:"\f392"}.fa-discourse:before{content:"\f393"}.fa-divide:before{content:"\f529"}.fa-dizzy:before{content:"\f567"}.fa-dna:before{content:"\f471"}.fa-dochub:before{content:"\f394"}.fa-docker:before{content:"\f395"}.fa-dollar-sign:before{content:"\f155"}.fa-dolly:before{content:"\f472"}.fa-dolly-flatbed:before{content:"\f474"}.fa-donate:before{content:"\f4b9"}.fa-door-closed:before{content:"\f52a"}.fa-door-open:before{content:"\f52b"}.fa-dot-circle:before{content:"\f192"}.fa-dove:before{content:"\f4ba"}.fa-download:before{content:"\f019"}.fa-draft2digital:before{content:"\f396"}.fa-drafting-compass:before{content:"\f568"}.fa-dribbble:before{content:"\f17d"}.fa-dribbble-square:before{content:"\f397"}.fa-dropbox:before{content:"\f16b"}.fa-drum:before{content:"\f569"}.fa-drum-steelpan:before{content:"\f56a"}.fa-drupal:before{content:"\f1a9"}.fa-dumbbell:before{content:"\f44b"}.fa-dyalog:before{content:"\f399"}.fa-earlybirds:before{content:"\f39a"}.fa-ebay:before{content:"\f4f4"}.fa-edge:before{content:"\f282"}.fa-edit:before{content:"\f044"}.fa-eject:before{content:"\f052"}.fa-elementor:before{content:"\f430"}.fa-ellipsis-h:before{content:"\f141"}.fa-ellipsis-v:before{content:"\f142"}.fa-ember:before{content:"\f423"}.fa-empire:before{content:"\f1d1"}.fa-envelope:before{content:"\f0e0"}.fa-envelope-open:before{content:"\f2b6"}.fa-envelope-square:before{content:"\f199"}.fa-envira:before{content:"\f299"}.fa-equals:before{content:"\f52c"}.fa-eraser:before{content:"\f12d"}.fa-erlang:before{content:"\f39d"}.fa-ethereum:before{content:"\f42e"}.fa-etsy:before{content:"\f2d7"}.fa-euro-sign:before{content:"\f153"}.fa-exchange-alt:before{content:"\f362"}.fa-exclamation:before{content:"\f12a"}.fa-exclamation-circle:before{content:"\f06a"}.fa-exclamation-triangle:before{content:"\f071"}.fa-expand:before{content:"\f065"}.fa-expand-arrows-alt:before{content:"\f31e"}.fa-expeditedssl:before{content:"\f23e"}.fa-external-link-alt:before{content:"\f35d"}.fa-external-link-square-alt:before{content:"\f360"}.fa-eye:before{content:"\f06e"}.fa-eye-dropper:before{content:"\f1fb"}.fa-eye-slash:before{content:"\f070"}.fa-facebook:before{content:"\f09a"}.fa-facebook-f:before{content:"\f39e"}.fa-facebook-messenger:before{content:"\f39f"}.fa-facebook-square:before{content:"\f082"}.fa-fast-backward:before{content:"\f049"}.fa-fast-forward:before{content:"\f050"}.fa-fax:before{content:"\f1ac"}.fa-feather:before{content:"\f52d"}.fa-feather-alt:before{content:"\f56b"}.fa-female:before{content:"\f182"}.fa-fighter-jet:before{content:"\f0fb"}.fa-file:before{content:"\f15b"}.fa-file-alt:before{content:"\f15c"}.fa-file-archive:before{content:"\f1c6"}.fa-file-audio:before{content:"\f1c7"}.fa-file-code:before{content:"\f1c9"}.fa-file-contract:before{content:"\f56c"}.fa-file-download:before{content:"\f56d"}.fa-file-excel:before{content:"\f1c3"}.fa-file-export:before{content:"\f56e"}.fa-file-image:before{content:"\f1c5"}.fa-file-import:before{content:"\f56f"}.fa-file-invoice:before{content:"\f570"}.fa-file-invoice-dollar:before{content:"\f571"}.fa-file-medical:before{content:"\f477"}.fa-file-medical-alt:before{content:"\f478"}.fa-file-pdf:before{content:"\f1c1"}.fa-file-powerpoint:before{content:"\f1c4"}.fa-file-prescription:before{content:"\f572"}.fa-file-signature:before{content:"\f573"}.fa-file-upload:before{content:"\f574"}.fa-file-video:before{content:"\f1c8"}.fa-file-word:before{content:"\f1c2"}.fa-fill:before{content:"\f575"}.fa-fill-drip:before{content:"\f576"}.fa-film:before{content:"\f008"}.fa-filter:before{content:"\f0b0"}.fa-fingerprint:before{content:"\f577"}.fa-fire:before{content:"\f06d"}.fa-fire-extinguisher:before{content:"\f134"}.fa-firefox:before{content:"\f269"}.fa-first-aid:before{content:"\f479"}.fa-first-order:before{content:"\f2b0"}.fa-first-order-alt:before{content:"\f50a"}.fa-firstdraft:before{content:"\f3a1"}.fa-fish:before{content:"\f578"}.fa-flag:before{content:"\f024"}.fa-flag-checkered:before{content:"\f11e"}.fa-flask:before{content:"\f0c3"}.fa-flickr:before{content:"\f16e"}.fa-flipboard:before{content:"\f44d"}.fa-flushed:before{content:"\f579"}.fa-fly:before{content:"\f417"}.fa-folder:before{content:"\f07b"}.fa-folder-open:before{content:"\f07c"}.fa-font:before{content:"\f031"}.fa-font-awesome:before{content:"\f2b4"}.fa-font-awesome-alt:before{content:"\f35c"}.fa-font-awesome-flag:before{content:"\f425"}.fa-font-awesome-logo-full:before{content:"\f4e6"}.fa-fonticons:before{content:"\f280"}.fa-fonticons-fi:before{content:"\f3a2"}.fa-football-ball:before{content:"\f44e"}.fa-fort-awesome:before{content:"\f286"}.fa-fort-awesome-alt:before{content:"\f3a3"}.fa-forumbee:before{content:"\f211"}.fa-forward:before{content:"\f04e"}.fa-foursquare:before{content:"\f180"}.fa-free-code-camp:before{content:"\f2c5"}.fa-freebsd:before{content:"\f3a4"}.fa-frog:before{content:"\f52e"}.fa-frown:before{content:"\f119"}.fa-frown-open:before{content:"\f57a"}.fa-fulcrum:before{content:"\f50b"}.fa-futbol:before{content:"\f1e3"}.fa-galactic-republic:before{content:"\f50c"}.fa-galactic-senate:before{content:"\f50d"}.fa-gamepad:before{content:"\f11b"}.fa-gas-pump:before{content:"\f52f"}.fa-gavel:before{content:"\f0e3"}.fa-gem:before{content:"\f3a5"}.fa-genderless:before{content:"\f22d"}.fa-get-pocket:before{content:"\f265"}.fa-gg:before{content:"\f260"}.fa-gg-circle:before{content:"\f261"}.fa-gift:before{content:"\f06b"}.fa-git:before{content:"\f1d3"}.fa-git-square:before{content:"\f1d2"}.fa-github:before{content:"\f09b"}.fa-github-alt:before{content:"\f113"}.fa-github-square:before{content:"\f092"}.fa-gitkraken:before{content:"\f3a6"}.fa-gitlab:before{content:"\f296"}.fa-gitter:before{content:"\f426"}.fa-glass-martini:before{content:"\f000"}.fa-glass-martini-alt:before{content:"\f57b"}.fa-glasses:before{content:"\f530"}.fa-glide:before{content:"\f2a5"}.fa-glide-g:before{content:"\f2a6"}.fa-globe:before{content:"\f0ac"}.fa-globe-africa:before{content:"\f57c"}.fa-globe-americas:before{content:"\f57d"}.fa-globe-asia:before{content:"\f57e"}.fa-gofore:before{content:"\f3a7"}.fa-golf-ball:before{content:"\f450"}.fa-goodreads:before{content:"\f3a8"}.fa-goodreads-g:before{content:"\f3a9"}.fa-google:before{content:"\f1a0"}.fa-google-drive:before{content:"\f3aa"}.fa-google-play:before{content:"\f3ab"}.fa-google-plus:before{content:"\f2b3"}.fa-google-plus-g:before{content:"\f0d5"}.fa-google-plus-square:before{content:"\f0d4"}.fa-google-wallet:before{content:"\f1ee"}.fa-graduation-cap:before{content:"\f19d"}.fa-gratipay:before{content:"\f184"}.fa-grav:before{content:"\f2d6"}.fa-greater-than:before{content:"\f531"}.fa-greater-than-equal:before{content:"\f532"}.fa-grimace:before{content:"\f57f"}.fa-grin:before{content:"\f580"}.fa-grin-alt:before{content:"\f581"}.fa-grin-beam:before{content:"\f582"}.fa-grin-beam-sweat:before{content:"\f583"}.fa-grin-hearts:before{content:"\f584"}.fa-grin-squint:before{content:"\f585"}.fa-grin-squint-tears:before{content:"\f586"}.fa-grin-stars:before{content:"\f587"}.fa-grin-tears:before{content:"\f588"}.fa-grin-tongue:before{content:"\f589"}.fa-grin-tongue-squint:before{content:"\f58a"}.fa-grin-tongue-wink:before{content:"\f58b"}.fa-grin-wink:before{content:"\f58c"}.fa-grip-horizontal:before{content:"\f58d"}.fa-grip-vertical:before{content:"\f58e"}.fa-gripfire:before{content:"\f3ac"}.fa-grunt:before{content:"\f3ad"}.fa-gulp:before{content:"\f3ae"}.fa-h-square:before{content:"\f0fd"}.fa-hacker-news:before{content:"\f1d4"}.fa-hacker-news-square:before{content:"\f3af"}.fa-hand-holding:before{content:"\f4bd"}.fa-hand-holding-heart:before{content:"\f4be"}.fa-hand-holding-usd:before{content:"\f4c0"}.fa-hand-lizard:before{content:"\f258"}.fa-hand-paper:before{content:"\f256"}.fa-hand-peace:before{content:"\f25b"}.fa-hand-point-down:before{content:"\f0a7"}.fa-hand-point-left:before{content:"\f0a5"}.fa-hand-point-right:before{content:"\f0a4"}.fa-hand-point-up:before{content:"\f0a6"}.fa-hand-pointer:before{content:"\f25a"}.fa-hand-rock:before{content:"\f255"}.fa-hand-scissors:before{content:"\f257"}.fa-hand-spock:before{content:"\f259"}.fa-hands:before{content:"\f4c2"}.fa-hands-helping:before{content:"\f4c4"}.fa-handshake:before{content:"\f2b5"}.fa-hashtag:before{content:"\f292"}.fa-hdd:before{content:"\f0a0"}.fa-heading:before{content:"\f1dc"}.fa-headphones:before{content:"\f025"}.fa-headphones-alt:before{content:"\f58f"}.fa-headset:before{content:"\f590"}.fa-heart:before{content:"\f004"}.fa-heartbeat:before{content:"\f21e"}.fa-helicopter:before{content:"\f533"}.fa-highlighter:before{content:"\f591"}.fa-hips:before{content:"\f452"}.fa-hire-a-helper:before{content:"\f3b0"}.fa-history:before{content:"\f1da"}.fa-hockey-puck:before{content:"\f453"}.fa-home:before{content:"\f015"}.fa-hooli:before{content:"\f427"}.fa-hornbill:before{content:"\f592"}.fa-hospital:before{content:"\f0f8"}.fa-hospital-alt:before{content:"\f47d"}.fa-hospital-symbol:before{content:"\f47e"}.fa-hot-tub:before{content:"\f593"}.fa-hotel:before{content:"\f594"}.fa-hotjar:before{content:"\f3b1"}.fa-hourglass:before{content:"\f254"}.fa-hourglass-end:before{content:"\f253"}.fa-hourglass-half:before{content:"\f252"}.fa-hourglass-start:before{content:"\f251"}.fa-houzz:before{content:"\f27c"}.fa-html5:before{content:"\f13b"}.fa-hubspot:before{content:"\f3b2"}.fa-i-cursor:before{content:"\f246"}.fa-id-badge:before{content:"\f2c1"}.fa-id-card:before{content:"\f2c2"}.fa-id-card-alt:before{content:"\f47f"}.fa-image:before{content:"\f03e"}.fa-images:before{content:"\f302"}.fa-imdb:before{content:"\f2d8"}.fa-inbox:before{content:"\f01c"}.fa-indent:before{content:"\f03c"}.fa-industry:before{content:"\f275"}.fa-infinity:before{content:"\f534"}.fa-info:before{content:"\f129"}.fa-info-circle:before{content:"\f05a"}.fa-instagram:before{content:"\f16d"}.fa-internet-explorer:before{content:"\f26b"}.fa-ioxhost:before{content:"\f208"}.fa-italic:before{content:"\f033"}.fa-itunes:before{content:"\f3b4"}.fa-itunes-note:before{content:"\f3b5"}.fa-java:before{content:"\f4e4"}.fa-jedi-order:before{content:"\f50e"}.fa-jenkins:before{content:"\f3b6"}.fa-joget:before{content:"\f3b7"}.fa-joint:before{content:"\f595"}.fa-joomla:before{content:"\f1aa"}.fa-js:before{content:"\f3b8"}.fa-js-square:before{content:"\f3b9"}.fa-jsfiddle:before{content:"\f1cc"}.fa-key:before{content:"\f084"}.fa-keybase:before{content:"\f4f5"}.fa-keyboard:before{content:"\f11c"}.fa-keycdn:before{content:"\f3ba"}.fa-kickstarter:before{content:"\f3bb"}.fa-kickstarter-k:before{content:"\f3bc"}.fa-kiss:before{content:"\f596"}.fa-kiss-beam:before{content:"\f597"}.fa-kiss-wink-heart:before{content:"\f598"}.fa-kiwi-bird:before{content:"\f535"}.fa-korvue:before{content:"\f42f"}.fa-language:before{content:"\f1ab"}.fa-laptop:before{content:"\f109"}.fa-laravel:before{content:"\f3bd"}.fa-lastfm:before{content:"\f202"}.fa-lastfm-square:before{content:"\f203"}.fa-laugh:before{content:"\f599"}.fa-laugh-beam:before{content:"\f59a"}.fa-laugh-squint:before{content:"\f59b"}.fa-laugh-wink:before{content:"\f59c"}.fa-leaf:before{content:"\f06c"}.fa-leanpub:before{content:"\f212"}.fa-lemon:before{content:"\f094"}.fa-less:before{content:"\f41d"}.fa-less-than:before{content:"\f536"}.fa-less-than-equal:before{content:"\f537"}.fa-level-down-alt:before{content:"\f3be"}.fa-level-up-alt:before{content:"\f3bf"}.fa-life-ring:before{content:"\f1cd"}.fa-lightbulb:before{content:"\f0eb"}.fa-line:before{content:"\f3c0"}.fa-link:before{content:"\f0c1"}.fa-linkedin:before{content:"\f08c"}.fa-linkedin-in:before{content:"\f0e1"}.fa-linode:before{content:"\f2b8"}.fa-linux:before{content:"\f17c"}.fa-lira-sign:before{content:"\f195"}.fa-list:before{content:"\f03a"}.fa-list-alt:before{content:"\f022"}.fa-list-ol:before{content:"\f0cb"}.fa-list-ul:before{content:"\f0ca"}.fa-location-arrow:before{content:"\f124"}.fa-lock:before{content:"\f023"}.fa-lock-open:before{content:"\f3c1"}.fa-long-arrow-alt-down:before{content:"\f309"}.fa-long-arrow-alt-left:before{content:"\f30a"}.fa-long-arrow-alt-right:before{content:"\f30b"}.fa-long-arrow-alt-up:before{content:"\f30c"}.fa-low-vision:before{content:"\f2a8"}.fa-luggage-cart:before{content:"\f59d"}.fa-lyft:before{content:"\f3c3"}.fa-magento:before{content:"\f3c4"}.fa-magic:before{content:"\f0d0"}.fa-magnet:before{content:"\f076"}.fa-mailchimp:before{content:"\f59e"}.fa-male:before{content:"\f183"}.fa-mandalorian:before{content:"\f50f"}.fa-map:before{content:"\f279"}.fa-map-marked:before{content:"\f59f"}.fa-map-marked-alt:before{content:"\f5a0"}.fa-map-marker:before{content:"\f041"}.fa-map-marker-alt:before{content:"\f3c5"}.fa-map-pin:before{content:"\f276"}.fa-map-signs:before{content:"\f277"}.fa-marker:before{content:"\f5a1"}.fa-mars:before{content:"\f222"}.fa-mars-double:before{content:"\f227"}.fa-mars-stroke:before{content:"\f229"}.fa-mars-stroke-h:before{content:"\f22b"}.fa-mars-stroke-v:before{content:"\f22a"}.fa-mastodon:before{content:"\f4f6"}.fa-maxcdn:before{content:"\f136"}.fa-medal:before{content:"\f5a2"}.fa-medapps:before{content:"\f3c6"}.fa-medium:before{content:"\f23a"}.fa-medium-m:before{content:"\f3c7"}.fa-medkit:before{content:"\f0fa"}.fa-medrt:before{content:"\f3c8"}.fa-meetup:before{content:"\f2e0"}.fa-megaport:before{content:"\f5a3"}.fa-meh:before{content:"\f11a"}.fa-meh-blank:before{content:"\f5a4"}.fa-meh-rolling-eyes:before{content:"\f5a5"}.fa-memory:before{content:"\f538"}.fa-mercury:before{content:"\f223"}.fa-microchip:before{content:"\f2db"}.fa-microphone:before{content:"\f130"}.fa-microphone-alt:before{content:"\f3c9"}.fa-microphone-alt-slash:before{content:"\f539"}.fa-microphone-slash:before{content:"\f131"}.fa-microsoft:before{content:"\f3ca"}.fa-minus:before{content:"\f068"}.fa-minus-circle:before{content:"\f056"}.fa-minus-square:before{content:"\f146"}.fa-mix:before{content:"\f3cb"}.fa-mixcloud:before{content:"\f289"}.fa-mizuni:before{content:"\f3cc"}.fa-mobile:before{content:"\f10b"}.fa-mobile-alt:before{content:"\f3cd"}.fa-modx:before{content:"\f285"}.fa-monero:before{content:"\f3d0"}.fa-money-bill:before{content:"\f0d6"}.fa-money-bill-alt:before{content:"\f3d1"}.fa-money-bill-wave:before{content:"\f53a"}.fa-money-bill-wave-alt:before{content:"\f53b"}.fa-money-check:before{content:"\f53c"}.fa-money-check-alt:before{content:"\f53d"}.fa-monument:before{content:"\f5a6"}.fa-moon:before{content:"\f186"}.fa-mortar-pestle:before{content:"\f5a7"}.fa-motorcycle:before{content:"\f21c"}.fa-mouse-pointer:before{content:"\f245"}.fa-music:before{content:"\f001"}.fa-napster:before{content:"\f3d2"}.fa-neuter:before{content:"\f22c"}.fa-newspaper:before{content:"\f1ea"}.fa-nimblr:before{content:"\f5a8"}.fa-nintendo-switch:before{content:"\f418"}.fa-node:before{content:"\f419"}.fa-node-js:before{content:"\f3d3"}.fa-not-equal:before{content:"\f53e"}.fa-notes-medical:before{content:"\f481"}.fa-npm:before{content:"\f3d4"}.fa-ns8:before{content:"\f3d5"}.fa-nutritionix:before{content:"\f3d6"}.fa-object-group:before{content:"\f247"}.fa-object-ungroup:before{content:"\f248"}.fa-odnoklassniki:before{content:"\f263"}.fa-odnoklassniki-square:before{content:"\f264"}.fa-old-republic:before{content:"\f510"}.fa-opencart:before{content:"\f23d"}.fa-openid:before{content:"\f19b"}.fa-opera:before{content:"\f26a"}.fa-optin-monster:before{content:"\f23c"}.fa-osi:before{content:"\f41a"}.fa-outdent:before{content:"\f03b"}.fa-page4:before{content:"\f3d7"}.fa-pagelines:before{content:"\f18c"}.fa-paint-brush:before{content:"\f1fc"}.fa-paint-roller:before{content:"\f5aa"}.fa-palette:before{content:"\f53f"}.fa-palfed:before{content:"\f3d8"}.fa-pallet:before{content:"\f482"}.fa-paper-plane:before{content:"\f1d8"}.fa-paperclip:before{content:"\f0c6"}.fa-parachute-box:before{content:"\f4cd"}.fa-paragraph:before{content:"\f1dd"}.fa-parking:before{content:"\f540"}.fa-passport:before{content:"\f5ab"}.fa-paste:before{content:"\f0ea"}.fa-patreon:before{content:"\f3d9"}.fa-pause:before{content:"\f04c"}.fa-pause-circle:before{content:"\f28b"}.fa-paw:before{content:"\f1b0"}.fa-paypal:before{content:"\f1ed"}.fa-pen:before{content:"\f304"}.fa-pen-alt:before{content:"\f305"}.fa-pen-fancy:before{content:"\f5ac"}.fa-pen-nib:before{content:"\f5ad"}.fa-pen-square:before{content:"\f14b"}.fa-pencil-alt:before{content:"\f303"}.fa-pencil-ruler:before{content:"\f5ae"}.fa-people-carry:before{content:"\f4ce"}.fa-percent:before{content:"\f295"}.fa-percentage:before{content:"\f541"}.fa-periscope:before{content:"\f3da"}.fa-phabricator:before{content:"\f3db"}.fa-phoenix-framework:before{content:"\f3dc"}.fa-phoenix-squadron:before{content:"\f511"}.fa-phone:before{content:"\f095"}.fa-phone-slash:before{content:"\f3dd"}.fa-phone-square:before{content:"\f098"}.fa-phone-volume:before{content:"\f2a0"}.fa-php:before{content:"\f457"}.fa-pied-piper:before{content:"\f2ae"}.fa-pied-piper-alt:before{content:"\f1a8"}.fa-pied-piper-hat:before{content:"\f4e5"}.fa-pied-piper-pp:before{content:"\f1a7"}.fa-piggy-bank:before{content:"\f4d3"}.fa-pills:before{content:"\f484"}.fa-pinterest:before{content:"\f0d2"}.fa-pinterest-p:before{content:"\f231"}.fa-pinterest-square:before{content:"\f0d3"}.fa-plane:before{content:"\f072"}.fa-plane-arrival:before{content:"\f5af"}.fa-plane-departure:before{content:"\f5b0"}.fa-play:before{content:"\f04b"}.fa-play-circle:before{content:"\f144"}.fa-playstation:before{content:"\f3df"}.fa-plug:before{content:"\f1e6"}.fa-plus:before{content:"\f067"}.fa-plus-circle:before{content:"\f055"}.fa-plus-square:before{content:"\f0fe"}.fa-podcast:before{content:"\f2ce"}.fa-poo:before{content:"\f2fe"}.fa-portrait:before{content:"\f3e0"}.fa-pound-sign:before{content:"\f154"}.fa-power-off:before{content:"\f011"}.fa-prescription:before{content:"\f5b1"}.fa-prescription-bottle:before{content:"\f485"}.fa-prescription-bottle-alt:before{content:"\f486"}.fa-print:before{content:"\f02f"}.fa-procedures:before{content:"\f487"}.fa-product-hunt:before{content:"\f288"}.fa-project-diagram:before{content:"\f542"}.fa-pushed:before{content:"\f3e1"}.fa-puzzle-piece:before{content:"\f12e"}.fa-python:before{content:"\f3e2"}.fa-qq:before{content:"\f1d6"}.fa-qrcode:before{content:"\f029"}.fa-question:before{content:"\f128"}.fa-question-circle:before{content:"\f059"}.fa-quidditch:before{content:"\f458"}.fa-quinscape:before{content:"\f459"}.fa-quora:before{content:"\f2c4"}.fa-quote-left:before{content:"\f10d"}.fa-quote-right:before{content:"\f10e"}.fa-r-project:before{content:"\f4f7"}.fa-random:before{content:"\f074"}.fa-ravelry:before{content:"\f2d9"}.fa-react:before{content:"\f41b"}.fa-readme:before{content:"\f4d5"}.fa-rebel:before{content:"\f1d0"}.fa-receipt:before{content:"\f543"}.fa-recycle:before{content:"\f1b8"}.fa-red-river:before{content:"\f3e3"}.fa-reddit:before{content:"\f1a1"}.fa-reddit-alien:before{content:"\f281"}.fa-reddit-square:before{content:"\f1a2"}.fa-redo:before{content:"\f01e"}.fa-redo-alt:before{content:"\f2f9"}.fa-registered:before{content:"\f25d"}.fa-rendact:before{content:"\f3e4"}.fa-renren:before{content:"\f18b"}.fa-reply:before{content:"\f3e5"}.fa-reply-all:before{content:"\f122"}.fa-replyd:before{content:"\f3e6"}.fa-researchgate:before{content:"\f4f8"}.fa-resolving:before{content:"\f3e7"}.fa-retweet:before{content:"\f079"}.fa-ribbon:before{content:"\f4d6"}.fa-road:before{content:"\f018"}.fa-robot:before{content:"\f544"}.fa-rocket:before{content:"\f135"}.fa-rocketchat:before{content:"\f3e8"}.fa-rockrms:before{content:"\f3e9"}.fa-rss:before{content:"\f09e"}.fa-rss-square:before{content:"\f143"}.fa-ruble-sign:before{content:"\f158"}.fa-ruler:before{content:"\f545"}.fa-ruler-combined:before{content:"\f546"}.fa-ruler-horizontal:before{content:"\f547"}.fa-ruler-vertical:before{content:"\f548"}.fa-rupee-sign:before{content:"\f156"}.fa-sad-cry:before{content:"\f5b3"}.fa-sad-tear:before{content:"\f5b4"}.fa-safari:before{content:"\f267"}.fa-sass:before{content:"\f41e"}.fa-save:before{content:"\f0c7"}.fa-schlix:before{content:"\f3ea"}.fa-school:before{content:"\f549"}.fa-screwdriver:before{content:"\f54a"}.fa-scribd:before{content:"\f28a"}.fa-search:before{content:"\f002"}.fa-search-minus:before{content:"\f010"}.fa-search-plus:before{content:"\f00e"}.fa-searchengin:before{content:"\f3eb"}.fa-seedling:before{content:"\f4d8"}.fa-sellcast:before{content:"\f2da"}.fa-sellsy:before{content:"\f213"}.fa-server:before{content:"\f233"}.fa-servicestack:before{content:"\f3ec"}.fa-share:before{content:"\f064"}.fa-share-alt:before{content:"\f1e0"}.fa-share-alt-square:before{content:"\f1e1"}.fa-share-square:before{content:"\f14d"}.fa-shekel-sign:before{content:"\f20b"}.fa-shield-alt:before{content:"\f3ed"}.fa-ship:before{content:"\f21a"}.fa-shipping-fast:before{content:"\f48b"}.fa-shirtsinbulk:before{content:"\f214"}.fa-shoe-prints:before{content:"\f54b"}.fa-shopping-bag:before{content:"\f290"}.fa-shopping-basket:before{content:"\f291"}.fa-shopping-cart:before{content:"\f07a"}.fa-shopware:before{content:"\f5b5"}.fa-shower:before{content:"\f2cc"}.fa-shuttle-van:before{content:"\f5b6"}.fa-sign:before{content:"\f4d9"}.fa-sign-in-alt:before{content:"\f2f6"}.fa-sign-language:before{content:"\f2a7"}.fa-sign-out-alt:before{content:"\f2f5"}.fa-signal:before{content:"\f012"}.fa-signature:before{content:"\f5b7"}.fa-simplybuilt:before{content:"\f215"}.fa-sistrix:before{content:"\f3ee"}.fa-sitemap:before{content:"\f0e8"}.fa-sith:before{content:"\f512"}.fa-skull:before{content:"\f54c"}.fa-skyatlas:before{content:"\f216"}.fa-skype:before{content:"\f17e"}.fa-slack:before{content:"\f198"}.fa-slack-hash:before{content:"\f3ef"}.fa-sliders-h:before{content:"\f1de"}.fa-slideshare:before{content:"\f1e7"}.fa-smile:before{content:"\f118"}.fa-smile-beam:before{content:"\f5b8"}.fa-smile-wink:before{content:"\f4da"}.fa-smoking:before{content:"\f48d"}.fa-smoking-ban:before{content:"\f54d"}.fa-snapchat:before{content:"\f2ab"}.fa-snapchat-ghost:before{content:"\f2ac"}.fa-snapchat-square:before{content:"\f2ad"}.fa-snowflake:before{content:"\f2dc"}.fa-solar-panel:before{content:"\f5ba"}.fa-sort:before{content:"\f0dc"}.fa-sort-alpha-down:before{content:"\f15d"}.fa-sort-alpha-up:before{content:"\f15e"}.fa-sort-amount-down:before{content:"\f160"}.fa-sort-amount-up:before{content:"\f161"}.fa-sort-down:before{content:"\f0dd"}.fa-sort-numeric-down:before{content:"\f162"}.fa-sort-numeric-up:before{content:"\f163"}.fa-sort-up:before{content:"\f0de"}.fa-soundcloud:before{content:"\f1be"}.fa-spa:before{content:"\f5bb"}.fa-space-shuttle:before{content:"\f197"}.fa-speakap:before{content:"\f3f3"}.fa-spinner:before{content:"\f110"}.fa-splotch:before{content:"\f5bc"}.fa-spotify:before{content:"\f1bc"}.fa-spray-can:before{content:"\f5bd"}.fa-square:before{content:"\f0c8"}.fa-square-full:before{content:"\f45c"}.fa-squarespace:before{content:"\f5be"}.fa-stack-exchange:before{content:"\f18d"}.fa-stack-overflow:before{content:"\f16c"}.fa-stamp:before{content:"\f5bf"}.fa-star:before{content:"\f005"}.fa-star-half:before{content:"\f089"}.fa-star-half-alt:before{content:"\f5c0"}.fa-staylinked:before{content:"\f3f5"}.fa-steam:before{content:"\f1b6"}.fa-steam-square:before{content:"\f1b7"}.fa-steam-symbol:before{content:"\f3f6"}.fa-step-backward:before{content:"\f048"}.fa-step-forward:before{content:"\f051"}.fa-stethoscope:before{content:"\f0f1"}.fa-sticker-mule:before{content:"\f3f7"}.fa-sticky-note:before{content:"\f249"}.fa-stop:before{content:"\f04d"}.fa-stop-circle:before{content:"\f28d"}.fa-stopwatch:before{content:"\f2f2"}.fa-store:before{content:"\f54e"}.fa-store-alt:before{content:"\f54f"}.fa-strava:before{content:"\f428"}.fa-stream:before{content:"\f550"}.fa-street-view:before{content:"\f21d"}.fa-strikethrough:before{content:"\f0cc"}.fa-stripe:before{content:"\f429"}.fa-stripe-s:before{content:"\f42a"}.fa-stroopwafel:before{content:"\f551"}.fa-studiovinari:before{content:"\f3f8"}.fa-stumbleupon:before{content:"\f1a4"}.fa-stumbleupon-circle:before{content:"\f1a3"}.fa-subscript:before{content:"\f12c"}.fa-subway:before{content:"\f239"}.fa-suitcase:before{content:"\f0f2"}.fa-suitcase-rolling:before{content:"\f5c1"}.fa-sun:before{content:"\f185"}.fa-superpowers:before{content:"\f2dd"}.fa-superscript:before{content:"\f12b"}.fa-supple:before{content:"\f3f9"}.fa-surprise:before{content:"\f5c2"}.fa-swatchbook:before{content:"\f5c3"}.fa-swimmer:before{content:"\f5c4"}.fa-swimming-pool:before{content:"\f5c5"}.fa-sync:before{content:"\f021"}.fa-sync-alt:before{content:"\f2f1"}.fa-syringe:before{content:"\f48e"}.fa-table:before{content:"\f0ce"}.fa-table-tennis:before{content:"\f45d"}.fa-tablet:before{content:"\f10a"}.fa-tablet-alt:before{content:"\f3fa"}.fa-tablets:before{content:"\f490"}.fa-tachometer-alt:before{content:"\f3fd"}.fa-tag:before{content:"\f02b"}.fa-tags:before{content:"\f02c"}.fa-tape:before{content:"\f4db"}.fa-tasks:before{content:"\f0ae"}.fa-taxi:before{content:"\f1ba"}.fa-teamspeak:before{content:"\f4f9"}.fa-telegram:before{content:"\f2c6"}.fa-telegram-plane:before{content:"\f3fe"}.fa-tencent-weibo:before{content:"\f1d5"}.fa-terminal:before{content:"\f120"}.fa-text-height:before{content:"\f034"}.fa-text-width:before{content:"\f035"}.fa-th:before{content:"\f00a"}.fa-th-large:before{content:"\f009"}.fa-th-list:before{content:"\f00b"}.fa-themeco:before{content:"\f5c6"}.fa-themeisle:before{content:"\f2b2"}.fa-thermometer:before{content:"\f491"}.fa-thermometer-empty:before{content:"\f2cb"}.fa-thermometer-full:before{content:"\f2c7"}.fa-thermometer-half:before{content:"\f2c9"}.fa-thermometer-quarter:before{content:"\f2ca"}.fa-thermometer-three-quarters:before{content:"\f2c8"}.fa-thumbs-down:before{content:"\f165"}.fa-thumbs-up:before{content:"\f164"}.fa-thumbtack:before{content:"\f08d"}.fa-ticket-alt:before{content:"\f3ff"}.fa-times:before{content:"\f00d"}.fa-times-circle:before{content:"\f057"}.fa-tint:before{content:"\f043"}.fa-tint-slash:before{content:"\f5c7"}.fa-tired:before{content:"\f5c8"}.fa-toggle-off:before{content:"\f204"}.fa-toggle-on:before{content:"\f205"}.fa-toolbox:before{content:"\f552"}.fa-tooth:before{content:"\f5c9"}.fa-trade-federation:before{content:"\f513"}.fa-trademark:before{content:"\f25c"}.fa-train:before{content:"\f238"}.fa-transgender:before{content:"\f224"}.fa-transgender-alt:before{content:"\f225"}.fa-trash:before{content:"\f1f8"}.fa-trash-alt:before{content:"\f2ed"}.fa-tree:before{content:"\f1bb"}.fa-trello:before{content:"\f181"}.fa-tripadvisor:before{content:"\f262"}.fa-trophy:before{content:"\f091"}.fa-truck:before{content:"\f0d1"}.fa-truck-loading:before{content:"\f4de"}.fa-truck-moving:before{content:"\f4df"}.fa-tshirt:before{content:"\f553"}.fa-tty:before{content:"\f1e4"}.fa-tumblr:before{content:"\f173"}.fa-tumblr-square:before{content:"\f174"}.fa-tv:before{content:"\f26c"}.fa-twitch:before{content:"\f1e8"}.fa-twitter:before{content:"\f099"}.fa-twitter-square:before{content:"\f081"}.fa-typo3:before{content:"\f42b"}.fa-uber:before{content:"\f402"}.fa-uikit:before{content:"\f403"}.fa-umbrella:before{content:"\f0e9"}.fa-umbrella-beach:before{content:"\f5ca"}.fa-underline:before{content:"\f0cd"}.fa-undo:before{content:"\f0e2"}.fa-undo-alt:before{content:"\f2ea"}.fa-uniregistry:before{content:"\f404"}.fa-universal-access:before{content:"\f29a"}.fa-university:before{content:"\f19c"}.fa-unlink:before{content:"\f127"}.fa-unlock:before{content:"\f09c"}.fa-unlock-alt:before{content:"\f13e"}.fa-untappd:before{content:"\f405"}.fa-upload:before{content:"\f093"}.fa-usb:before{content:"\f287"}.fa-user:before{content:"\f007"}.fa-user-alt:before{content:"\f406"}.fa-user-alt-slash:before{content:"\f4fa"}.fa-user-astronaut:before{content:"\f4fb"}.fa-user-check:before{content:"\f4fc"}.fa-user-circle:before{content:"\f2bd"}.fa-user-clock:before{content:"\f4fd"}.fa-user-cog:before{content:"\f4fe"}.fa-user-edit:before{content:"\f4ff"}.fa-user-friends:before{content:"\f500"}.fa-user-graduate:before{content:"\f501"}.fa-user-lock:before{content:"\f502"}.fa-user-md:before{content:"\f0f0"}.fa-user-minus:before{content:"\f503"}.fa-user-ninja:before{content:"\f504"}.fa-user-plus:before{content:"\f234"}.fa-user-secret:before{content:"\f21b"}.fa-user-shield:before{content:"\f505"}.fa-user-slash:before{content:"\f506"}.fa-user-tag:before{content:"\f507"}.fa-user-tie:before{content:"\f508"}.fa-user-times:before{content:"\f235"}.fa-users:before{content:"\f0c0"}.fa-users-cog:before{content:"\f509"}.fa-ussunnah:before{content:"\f407"}.fa-utensil-spoon:before{content:"\f2e5"}.fa-utensils:before{content:"\f2e7"}.fa-vaadin:before{content:"\f408"}.fa-vector-square:before{content:"\f5cb"}.fa-venus:before{content:"\f221"}.fa-venus-double:before{content:"\f226"}.fa-venus-mars:before{content:"\f228"}.fa-viacoin:before{content:"\f237"}.fa-viadeo:before{content:"\f2a9"}.fa-viadeo-square:before{content:"\f2aa"}.fa-vial:before{content:"\f492"}.fa-vials:before{content:"\f493"}.fa-viber:before{content:"\f409"}.fa-video:before{content:"\f03d"}.fa-video-slash:before{content:"\f4e2"}.fa-vimeo:before{content:"\f40a"}.fa-vimeo-square:before{content:"\f194"}.fa-vimeo-v:before{content:"\f27d"}.fa-vine:before{content:"\f1ca"}.fa-vk:before{content:"\f189"}.fa-vnv:before{content:"\f40b"}.fa-volleyball-ball:before{content:"\f45f"}.fa-volume-down:before{content:"\f027"}.fa-volume-off:before{content:"\f026"}.fa-volume-up:before{content:"\f028"}.fa-vuejs:before{content:"\f41f"}.fa-walking:before{content:"\f554"}.fa-wallet:before{content:"\f555"}.fa-warehouse:before{content:"\f494"}.fa-weebly:before{content:"\f5cc"}.fa-weibo:before{content:"\f18a"}.fa-weight:before{content:"\f496"}.fa-weight-hanging:before{content:"\f5cd"}.fa-weixin:before{content:"\f1d7"}.fa-whatsapp:before{content:"\f232"}.fa-whatsapp-square:before{content:"\f40c"}.fa-wheelchair:before{content:"\f193"}.fa-whmcs:before{content:"\f40d"}.fa-wifi:before{content:"\f1eb"}.fa-wikipedia-w:before{content:"\f266"}.fa-window-close:before{content:"\f410"}.fa-window-maximize:before{content:"\f2d0"}.fa-window-minimize:before{content:"\f2d1"}.fa-window-restore:before{content:"\f2d2"}.fa-windows:before{content:"\f17a"}.fa-wine-glass:before{content:"\f4e3"}.fa-wine-glass-alt:before{content:"\f5ce"}.fa-wix:before{content:"\f5cf"}.fa-wolf-pack-battalion:before{content:"\f514"}.fa-won-sign:before{content:"\f159"}.fa-wordpress:before{content:"\f19a"}.fa-wordpress-simple:before{content:"\f411"}.fa-wpbeginner:before{content:"\f297"}.fa-wpexplorer:before{content:"\f2de"}.fa-wpforms:before{content:"\f298"}.fa-wrench:before{content:"\f0ad"}.fa-x-ray:before{content:"\f497"}.fa-xbox:before{content:"\f412"}.fa-xing:before{content:"\f168"}.fa-xing-square:before{content:"\f169"}.fa-y-combinator:before{content:"\f23b"}.fa-yahoo:before{content:"\f19e"}.fa-yandex:before{content:"\f413"}.fa-yandex-international:before{content:"\f414"}.fa-yelp:before{content:"\f1e9"}.fa-yen-sign:before{content:"\f157"}.fa-yoast:before{content:"\f2b1"}.fa-youtube:before{content:"\f167"}.fa-youtube-square:before{content:"\f431"}.sr-only{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.sr-only-focusable:active,.sr-only-focusable:focus{clip:auto;height:auto;margin:0;overflow:visible;position:static;width:auto}@font-face{font-family:"Font Awesome 5 Brands";font-style:normal;font-weight:normal;src:url(../webfonts/fa-brands-400.eot);src:url(../webfonts/fa-brands-400.eot?#iefix) format("embedded-opentype"),url(../webfonts/fa-brands-400.woff2) format("woff2"),url(../webfonts/fa-brands-400.woff) format("woff"),url(../webfonts/fa-brands-400.ttf) format("truetype"),url(../webfonts/fa-brands-400.svg#fontawesome) format("svg")}.fab{font-family:"Font Awesome 5 Brands"}@font-face{font-family:"Font Awesome 5 Free";font-style:normal;font-weight:400;src:url(../webfonts/fa-regular-400.eot);src:url(../webfonts/fa-regular-400.eot?#iefix) format("embedded-opentype"),url(../webfonts/fa-regular-400.woff2) format("woff2"),url(../webfonts/fa-regular-400.woff) format("woff"),url(../webfonts/fa-regular-400.ttf) format("truetype"),url(../webfonts/fa-regular-400.svg#fontawesome) format("svg")}.far{font-weight:400}@font-face{font-family:"Font Awesome 5 Free";font-style:normal;font-weight:900;src:url(../webfonts/fa-solid-900.eot);src:url(../webfonts/fa-solid-900.eot?#iefix) format("embedded-opentype"),url(../webfonts/fa-solid-900.woff2) format("woff2"),url(../webfonts/fa-solid-900.woff) format("woff"),url(../webfonts/fa-solid-900.ttf) format("truetype"),url(../webfonts/fa-solid-900.svg#fontawesome) format("svg")}.fa,.far,.fas{font-family:"Font Awesome 5 Free"}.fa,.fas{font-weight:900}
--------------------------------------------------------------------------------
/index_files/font-awesome/css/v4-shims.css:
--------------------------------------------------------------------------------
1 | /*!
2 | * Font Awesome Free 5.1.0 by @fontawesome - https://fontawesome.com
3 | * License - https://fontawesome.com/license (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
4 | */
5 | .fa.fa-glass:before {
6 | content: "\f000"; }
7 |
8 | .fa.fa-meetup {
9 | font-family: 'Font Awesome 5 Brands';
10 | font-weight: 400; }
11 |
12 | .fa.fa-star-o {
13 | font-family: 'Font Awesome 5 Free';
14 | font-weight: 400; }
15 |
16 | .fa.fa-star-o:before {
17 | content: "\f005"; }
18 |
19 | .fa.fa-remove:before {
20 | content: "\f00d"; }
21 |
22 | .fa.fa-close:before {
23 | content: "\f00d"; }
24 |
25 | .fa.fa-gear:before {
26 | content: "\f013"; }
27 |
28 | .fa.fa-trash-o {
29 | font-family: 'Font Awesome 5 Free';
30 | font-weight: 400; }
31 |
32 | .fa.fa-trash-o:before {
33 | content: "\f2ed"; }
34 |
35 | .fa.fa-file-o {
36 | font-family: 'Font Awesome 5 Free';
37 | font-weight: 400; }
38 |
39 | .fa.fa-file-o:before {
40 | content: "\f15b"; }
41 |
42 | .fa.fa-clock-o {
43 | font-family: 'Font Awesome 5 Free';
44 | font-weight: 400; }
45 |
46 | .fa.fa-clock-o:before {
47 | content: "\f017"; }
48 |
49 | .fa.fa-arrow-circle-o-down {
50 | font-family: 'Font Awesome 5 Free';
51 | font-weight: 400; }
52 |
53 | .fa.fa-arrow-circle-o-down:before {
54 | content: "\f358"; }
55 |
56 | .fa.fa-arrow-circle-o-up {
57 | font-family: 'Font Awesome 5 Free';
58 | font-weight: 400; }
59 |
60 | .fa.fa-arrow-circle-o-up:before {
61 | content: "\f35b"; }
62 |
63 | .fa.fa-play-circle-o {
64 | font-family: 'Font Awesome 5 Free';
65 | font-weight: 400; }
66 |
67 | .fa.fa-play-circle-o:before {
68 | content: "\f144"; }
69 |
70 | .fa.fa-repeat:before {
71 | content: "\f01e"; }
72 |
73 | .fa.fa-rotate-right:before {
74 | content: "\f01e"; }
75 |
76 | .fa.fa-refresh:before {
77 | content: "\f021"; }
78 |
79 | .fa.fa-list-alt {
80 | font-family: 'Font Awesome 5 Free';
81 | font-weight: 400; }
82 |
83 | .fa.fa-dedent:before {
84 | content: "\f03b"; }
85 |
86 | .fa.fa-video-camera:before {
87 | content: "\f03d"; }
88 |
89 | .fa.fa-picture-o {
90 | font-family: 'Font Awesome 5 Free';
91 | font-weight: 400; }
92 |
93 | .fa.fa-picture-o:before {
94 | content: "\f03e"; }
95 |
96 | .fa.fa-photo {
97 | font-family: 'Font Awesome 5 Free';
98 | font-weight: 400; }
99 |
100 | .fa.fa-photo:before {
101 | content: "\f03e"; }
102 |
103 | .fa.fa-image {
104 | font-family: 'Font Awesome 5 Free';
105 | font-weight: 400; }
106 |
107 | .fa.fa-image:before {
108 | content: "\f03e"; }
109 |
110 | .fa.fa-pencil:before {
111 | content: "\f303"; }
112 |
113 | .fa.fa-map-marker:before {
114 | content: "\f3c5"; }
115 |
116 | .fa.fa-pencil-square-o {
117 | font-family: 'Font Awesome 5 Free';
118 | font-weight: 400; }
119 |
120 | .fa.fa-pencil-square-o:before {
121 | content: "\f044"; }
122 |
123 | .fa.fa-share-square-o {
124 | font-family: 'Font Awesome 5 Free';
125 | font-weight: 400; }
126 |
127 | .fa.fa-share-square-o:before {
128 | content: "\f14d"; }
129 |
130 | .fa.fa-check-square-o {
131 | font-family: 'Font Awesome 5 Free';
132 | font-weight: 400; }
133 |
134 | .fa.fa-check-square-o:before {
135 | content: "\f14a"; }
136 |
137 | .fa.fa-arrows:before {
138 | content: "\f0b2"; }
139 |
140 | .fa.fa-times-circle-o {
141 | font-family: 'Font Awesome 5 Free';
142 | font-weight: 400; }
143 |
144 | .fa.fa-times-circle-o:before {
145 | content: "\f057"; }
146 |
147 | .fa.fa-check-circle-o {
148 | font-family: 'Font Awesome 5 Free';
149 | font-weight: 400; }
150 |
151 | .fa.fa-check-circle-o:before {
152 | content: "\f058"; }
153 |
154 | .fa.fa-mail-forward:before {
155 | content: "\f064"; }
156 |
157 | .fa.fa-eye {
158 | font-family: 'Font Awesome 5 Free';
159 | font-weight: 400; }
160 |
161 | .fa.fa-eye-slash {
162 | font-family: 'Font Awesome 5 Free';
163 | font-weight: 400; }
164 |
165 | .fa.fa-warning:before {
166 | content: "\f071"; }
167 |
168 | .fa.fa-calendar:before {
169 | content: "\f073"; }
170 |
171 | .fa.fa-arrows-v:before {
172 | content: "\f338"; }
173 |
174 | .fa.fa-arrows-h:before {
175 | content: "\f337"; }
176 |
177 | .fa.fa-bar-chart {
178 | font-family: 'Font Awesome 5 Free';
179 | font-weight: 400; }
180 |
181 | .fa.fa-bar-chart:before {
182 | content: "\f080"; }
183 |
184 | .fa.fa-bar-chart-o {
185 | font-family: 'Font Awesome 5 Free';
186 | font-weight: 400; }
187 |
188 | .fa.fa-bar-chart-o:before {
189 | content: "\f080"; }
190 |
191 | .fa.fa-twitter-square {
192 | font-family: 'Font Awesome 5 Brands';
193 | font-weight: 400; }
194 |
195 | .fa.fa-facebook-square {
196 | font-family: 'Font Awesome 5 Brands';
197 | font-weight: 400; }
198 |
199 | .fa.fa-gears:before {
200 | content: "\f085"; }
201 |
202 | .fa.fa-thumbs-o-up {
203 | font-family: 'Font Awesome 5 Free';
204 | font-weight: 400; }
205 |
206 | .fa.fa-thumbs-o-up:before {
207 | content: "\f164"; }
208 |
209 | .fa.fa-thumbs-o-down {
210 | font-family: 'Font Awesome 5 Free';
211 | font-weight: 400; }
212 |
213 | .fa.fa-thumbs-o-down:before {
214 | content: "\f165"; }
215 |
216 | .fa.fa-heart-o {
217 | font-family: 'Font Awesome 5 Free';
218 | font-weight: 400; }
219 |
220 | .fa.fa-heart-o:before {
221 | content: "\f004"; }
222 |
223 | .fa.fa-sign-out:before {
224 | content: "\f2f5"; }
225 |
226 | .fa.fa-linkedin-square {
227 | font-family: 'Font Awesome 5 Brands';
228 | font-weight: 400; }
229 |
230 | .fa.fa-linkedin-square:before {
231 | content: "\f08c"; }
232 |
233 | .fa.fa-thumb-tack:before {
234 | content: "\f08d"; }
235 |
236 | .fa.fa-external-link:before {
237 | content: "\f35d"; }
238 |
239 | .fa.fa-sign-in:before {
240 | content: "\f2f6"; }
241 |
242 | .fa.fa-github-square {
243 | font-family: 'Font Awesome 5 Brands';
244 | font-weight: 400; }
245 |
246 | .fa.fa-lemon-o {
247 | font-family: 'Font Awesome 5 Free';
248 | font-weight: 400; }
249 |
250 | .fa.fa-lemon-o:before {
251 | content: "\f094"; }
252 |
253 | .fa.fa-square-o {
254 | font-family: 'Font Awesome 5 Free';
255 | font-weight: 400; }
256 |
257 | .fa.fa-square-o:before {
258 | content: "\f0c8"; }
259 |
260 | .fa.fa-bookmark-o {
261 | font-family: 'Font Awesome 5 Free';
262 | font-weight: 400; }
263 |
264 | .fa.fa-bookmark-o:before {
265 | content: "\f02e"; }
266 |
267 | .fa.fa-twitter {
268 | font-family: 'Font Awesome 5 Brands';
269 | font-weight: 400; }
270 |
271 | .fa.fa-facebook {
272 | font-family: 'Font Awesome 5 Brands';
273 | font-weight: 400; }
274 |
275 | .fa.fa-facebook:before {
276 | content: "\f39e"; }
277 |
278 | .fa.fa-facebook-f {
279 | font-family: 'Font Awesome 5 Brands';
280 | font-weight: 400; }
281 |
282 | .fa.fa-facebook-f:before {
283 | content: "\f39e"; }
284 |
285 | .fa.fa-github {
286 | font-family: 'Font Awesome 5 Brands';
287 | font-weight: 400; }
288 |
289 | .fa.fa-credit-card {
290 | font-family: 'Font Awesome 5 Free';
291 | font-weight: 400; }
292 |
293 | .fa.fa-feed:before {
294 | content: "\f09e"; }
295 |
296 | .fa.fa-hdd-o {
297 | font-family: 'Font Awesome 5 Free';
298 | font-weight: 400; }
299 |
300 | .fa.fa-hdd-o:before {
301 | content: "\f0a0"; }
302 |
303 | .fa.fa-hand-o-right {
304 | font-family: 'Font Awesome 5 Free';
305 | font-weight: 400; }
306 |
307 | .fa.fa-hand-o-right:before {
308 | content: "\f0a4"; }
309 |
310 | .fa.fa-hand-o-left {
311 | font-family: 'Font Awesome 5 Free';
312 | font-weight: 400; }
313 |
314 | .fa.fa-hand-o-left:before {
315 | content: "\f0a5"; }
316 |
317 | .fa.fa-hand-o-up {
318 | font-family: 'Font Awesome 5 Free';
319 | font-weight: 400; }
320 |
321 | .fa.fa-hand-o-up:before {
322 | content: "\f0a6"; }
323 |
324 | .fa.fa-hand-o-down {
325 | font-family: 'Font Awesome 5 Free';
326 | font-weight: 400; }
327 |
328 | .fa.fa-hand-o-down:before {
329 | content: "\f0a7"; }
330 |
331 | .fa.fa-arrows-alt:before {
332 | content: "\f31e"; }
333 |
334 | .fa.fa-group:before {
335 | content: "\f0c0"; }
336 |
337 | .fa.fa-chain:before {
338 | content: "\f0c1"; }
339 |
340 | .fa.fa-scissors:before {
341 | content: "\f0c4"; }
342 |
343 | .fa.fa-files-o {
344 | font-family: 'Font Awesome 5 Free';
345 | font-weight: 400; }
346 |
347 | .fa.fa-files-o:before {
348 | content: "\f0c5"; }
349 |
350 | .fa.fa-floppy-o {
351 | font-family: 'Font Awesome 5 Free';
352 | font-weight: 400; }
353 |
354 | .fa.fa-floppy-o:before {
355 | content: "\f0c7"; }
356 |
357 | .fa.fa-navicon:before {
358 | content: "\f0c9"; }
359 |
360 | .fa.fa-reorder:before {
361 | content: "\f0c9"; }
362 |
363 | .fa.fa-pinterest {
364 | font-family: 'Font Awesome 5 Brands';
365 | font-weight: 400; }
366 |
367 | .fa.fa-pinterest-square {
368 | font-family: 'Font Awesome 5 Brands';
369 | font-weight: 400; }
370 |
371 | .fa.fa-google-plus-square {
372 | font-family: 'Font Awesome 5 Brands';
373 | font-weight: 400; }
374 |
375 | .fa.fa-google-plus {
376 | font-family: 'Font Awesome 5 Brands';
377 | font-weight: 400; }
378 |
379 | .fa.fa-google-plus:before {
380 | content: "\f0d5"; }
381 |
382 | .fa.fa-money {
383 | font-family: 'Font Awesome 5 Free';
384 | font-weight: 400; }
385 |
386 | .fa.fa-money:before {
387 | content: "\f3d1"; }
388 |
389 | .fa.fa-unsorted:before {
390 | content: "\f0dc"; }
391 |
392 | .fa.fa-sort-desc:before {
393 | content: "\f0dd"; }
394 |
395 | .fa.fa-sort-asc:before {
396 | content: "\f0de"; }
397 |
398 | .fa.fa-linkedin {
399 | font-family: 'Font Awesome 5 Brands';
400 | font-weight: 400; }
401 |
402 | .fa.fa-linkedin:before {
403 | content: "\f0e1"; }
404 |
405 | .fa.fa-rotate-left:before {
406 | content: "\f0e2"; }
407 |
408 | .fa.fa-legal:before {
409 | content: "\f0e3"; }
410 |
411 | .fa.fa-tachometer:before {
412 | content: "\f3fd"; }
413 |
414 | .fa.fa-dashboard:before {
415 | content: "\f3fd"; }
416 |
417 | .fa.fa-comment-o {
418 | font-family: 'Font Awesome 5 Free';
419 | font-weight: 400; }
420 |
421 | .fa.fa-comment-o:before {
422 | content: "\f075"; }
423 |
424 | .fa.fa-comments-o {
425 | font-family: 'Font Awesome 5 Free';
426 | font-weight: 400; }
427 |
428 | .fa.fa-comments-o:before {
429 | content: "\f086"; }
430 |
431 | .fa.fa-flash:before {
432 | content: "\f0e7"; }
433 |
434 | .fa.fa-clipboard {
435 | font-family: 'Font Awesome 5 Free';
436 | font-weight: 400; }
437 |
438 | .fa.fa-paste {
439 | font-family: 'Font Awesome 5 Free';
440 | font-weight: 400; }
441 |
442 | .fa.fa-paste:before {
443 | content: "\f328"; }
444 |
445 | .fa.fa-lightbulb-o {
446 | font-family: 'Font Awesome 5 Free';
447 | font-weight: 400; }
448 |
449 | .fa.fa-lightbulb-o:before {
450 | content: "\f0eb"; }
451 |
452 | .fa.fa-exchange:before {
453 | content: "\f362"; }
454 |
455 | .fa.fa-cloud-download:before {
456 | content: "\f381"; }
457 |
458 | .fa.fa-cloud-upload:before {
459 | content: "\f382"; }
460 |
461 | .fa.fa-bell-o {
462 | font-family: 'Font Awesome 5 Free';
463 | font-weight: 400; }
464 |
465 | .fa.fa-bell-o:before {
466 | content: "\f0f3"; }
467 |
468 | .fa.fa-cutlery:before {
469 | content: "\f2e7"; }
470 |
471 | .fa.fa-file-text-o {
472 | font-family: 'Font Awesome 5 Free';
473 | font-weight: 400; }
474 |
475 | .fa.fa-file-text-o:before {
476 | content: "\f15c"; }
477 |
478 | .fa.fa-building-o {
479 | font-family: 'Font Awesome 5 Free';
480 | font-weight: 400; }
481 |
482 | .fa.fa-building-o:before {
483 | content: "\f1ad"; }
484 |
485 | .fa.fa-hospital-o {
486 | font-family: 'Font Awesome 5 Free';
487 | font-weight: 400; }
488 |
489 | .fa.fa-hospital-o:before {
490 | content: "\f0f8"; }
491 |
492 | .fa.fa-tablet:before {
493 | content: "\f3fa"; }
494 |
495 | .fa.fa-mobile:before {
496 | content: "\f3cd"; }
497 |
498 | .fa.fa-mobile-phone:before {
499 | content: "\f3cd"; }
500 |
501 | .fa.fa-circle-o {
502 | font-family: 'Font Awesome 5 Free';
503 | font-weight: 400; }
504 |
505 | .fa.fa-circle-o:before {
506 | content: "\f111"; }
507 |
508 | .fa.fa-mail-reply:before {
509 | content: "\f3e5"; }
510 |
511 | .fa.fa-github-alt {
512 | font-family: 'Font Awesome 5 Brands';
513 | font-weight: 400; }
514 |
515 | .fa.fa-folder-o {
516 | font-family: 'Font Awesome 5 Free';
517 | font-weight: 400; }
518 |
519 | .fa.fa-folder-o:before {
520 | content: "\f07b"; }
521 |
522 | .fa.fa-folder-open-o {
523 | font-family: 'Font Awesome 5 Free';
524 | font-weight: 400; }
525 |
526 | .fa.fa-folder-open-o:before {
527 | content: "\f07c"; }
528 |
529 | .fa.fa-smile-o {
530 | font-family: 'Font Awesome 5 Free';
531 | font-weight: 400; }
532 |
533 | .fa.fa-smile-o:before {
534 | content: "\f118"; }
535 |
536 | .fa.fa-frown-o {
537 | font-family: 'Font Awesome 5 Free';
538 | font-weight: 400; }
539 |
540 | .fa.fa-frown-o:before {
541 | content: "\f119"; }
542 |
543 | .fa.fa-meh-o {
544 | font-family: 'Font Awesome 5 Free';
545 | font-weight: 400; }
546 |
547 | .fa.fa-meh-o:before {
548 | content: "\f11a"; }
549 |
550 | .fa.fa-keyboard-o {
551 | font-family: 'Font Awesome 5 Free';
552 | font-weight: 400; }
553 |
554 | .fa.fa-keyboard-o:before {
555 | content: "\f11c"; }
556 |
557 | .fa.fa-flag-o {
558 | font-family: 'Font Awesome 5 Free';
559 | font-weight: 400; }
560 |
561 | .fa.fa-flag-o:before {
562 | content: "\f024"; }
563 |
564 | .fa.fa-mail-reply-all:before {
565 | content: "\f122"; }
566 |
567 | .fa.fa-star-half-o {
568 | font-family: 'Font Awesome 5 Free';
569 | font-weight: 400; }
570 |
571 | .fa.fa-star-half-o:before {
572 | content: "\f089"; }
573 |
574 | .fa.fa-star-half-empty {
575 | font-family: 'Font Awesome 5 Free';
576 | font-weight: 400; }
577 |
578 | .fa.fa-star-half-empty:before {
579 | content: "\f089"; }
580 |
581 | .fa.fa-star-half-full {
582 | font-family: 'Font Awesome 5 Free';
583 | font-weight: 400; }
584 |
585 | .fa.fa-star-half-full:before {
586 | content: "\f089"; }
587 |
588 | .fa.fa-code-fork:before {
589 | content: "\f126"; }
590 |
591 | .fa.fa-chain-broken:before {
592 | content: "\f127"; }
593 |
594 | .fa.fa-shield:before {
595 | content: "\f3ed"; }
596 |
597 | .fa.fa-calendar-o {
598 | font-family: 'Font Awesome 5 Free';
599 | font-weight: 400; }
600 |
601 | .fa.fa-calendar-o:before {
602 | content: "\f133"; }
603 |
604 | .fa.fa-maxcdn {
605 | font-family: 'Font Awesome 5 Brands';
606 | font-weight: 400; }
607 |
608 | .fa.fa-html5 {
609 | font-family: 'Font Awesome 5 Brands';
610 | font-weight: 400; }
611 |
612 | .fa.fa-css3 {
613 | font-family: 'Font Awesome 5 Brands';
614 | font-weight: 400; }
615 |
616 | .fa.fa-ticket:before {
617 | content: "\f3ff"; }
618 |
619 | .fa.fa-minus-square-o {
620 | font-family: 'Font Awesome 5 Free';
621 | font-weight: 400; }
622 |
623 | .fa.fa-minus-square-o:before {
624 | content: "\f146"; }
625 |
626 | .fa.fa-level-up:before {
627 | content: "\f3bf"; }
628 |
629 | .fa.fa-level-down:before {
630 | content: "\f3be"; }
631 |
632 | .fa.fa-pencil-square:before {
633 | content: "\f14b"; }
634 |
635 | .fa.fa-external-link-square:before {
636 | content: "\f360"; }
637 |
638 | .fa.fa-compass {
639 | font-family: 'Font Awesome 5 Free';
640 | font-weight: 400; }
641 |
642 | .fa.fa-caret-square-o-down {
643 | font-family: 'Font Awesome 5 Free';
644 | font-weight: 400; }
645 |
646 | .fa.fa-caret-square-o-down:before {
647 | content: "\f150"; }
648 |
649 | .fa.fa-toggle-down {
650 | font-family: 'Font Awesome 5 Free';
651 | font-weight: 400; }
652 |
653 | .fa.fa-toggle-down:before {
654 | content: "\f150"; }
655 |
656 | .fa.fa-caret-square-o-up {
657 | font-family: 'Font Awesome 5 Free';
658 | font-weight: 400; }
659 |
660 | .fa.fa-caret-square-o-up:before {
661 | content: "\f151"; }
662 |
663 | .fa.fa-toggle-up {
664 | font-family: 'Font Awesome 5 Free';
665 | font-weight: 400; }
666 |
667 | .fa.fa-toggle-up:before {
668 | content: "\f151"; }
669 |
670 | .fa.fa-caret-square-o-right {
671 | font-family: 'Font Awesome 5 Free';
672 | font-weight: 400; }
673 |
674 | .fa.fa-caret-square-o-right:before {
675 | content: "\f152"; }
676 |
677 | .fa.fa-toggle-right {
678 | font-family: 'Font Awesome 5 Free';
679 | font-weight: 400; }
680 |
681 | .fa.fa-toggle-right:before {
682 | content: "\f152"; }
683 |
684 | .fa.fa-eur:before {
685 | content: "\f153"; }
686 |
687 | .fa.fa-euro:before {
688 | content: "\f153"; }
689 |
690 | .fa.fa-gbp:before {
691 | content: "\f154"; }
692 |
693 | .fa.fa-usd:before {
694 | content: "\f155"; }
695 |
696 | .fa.fa-dollar:before {
697 | content: "\f155"; }
698 |
699 | .fa.fa-inr:before {
700 | content: "\f156"; }
701 |
702 | .fa.fa-rupee:before {
703 | content: "\f156"; }
704 |
705 | .fa.fa-jpy:before {
706 | content: "\f157"; }
707 |
708 | .fa.fa-cny:before {
709 | content: "\f157"; }
710 |
711 | .fa.fa-rmb:before {
712 | content: "\f157"; }
713 |
714 | .fa.fa-yen:before {
715 | content: "\f157"; }
716 |
717 | .fa.fa-rub:before {
718 | content: "\f158"; }
719 |
720 | .fa.fa-ruble:before {
721 | content: "\f158"; }
722 |
723 | .fa.fa-rouble:before {
724 | content: "\f158"; }
725 |
726 | .fa.fa-krw:before {
727 | content: "\f159"; }
728 |
729 | .fa.fa-won:before {
730 | content: "\f159"; }
731 |
732 | .fa.fa-btc {
733 | font-family: 'Font Awesome 5 Brands';
734 | font-weight: 400; }
735 |
736 | .fa.fa-bitcoin {
737 | font-family: 'Font Awesome 5 Brands';
738 | font-weight: 400; }
739 |
740 | .fa.fa-bitcoin:before {
741 | content: "\f15a"; }
742 |
743 | .fa.fa-file-text:before {
744 | content: "\f15c"; }
745 |
746 | .fa.fa-sort-alpha-asc:before {
747 | content: "\f15d"; }
748 |
749 | .fa.fa-sort-alpha-desc:before {
750 | content: "\f15e"; }
751 |
752 | .fa.fa-sort-amount-asc:before {
753 | content: "\f160"; }
754 |
755 | .fa.fa-sort-amount-desc:before {
756 | content: "\f161"; }
757 |
758 | .fa.fa-sort-numeric-asc:before {
759 | content: "\f162"; }
760 |
761 | .fa.fa-sort-numeric-desc:before {
762 | content: "\f163"; }
763 |
764 | .fa.fa-youtube-square {
765 | font-family: 'Font Awesome 5 Brands';
766 | font-weight: 400; }
767 |
768 | .fa.fa-youtube {
769 | font-family: 'Font Awesome 5 Brands';
770 | font-weight: 400; }
771 |
772 | .fa.fa-xing {
773 | font-family: 'Font Awesome 5 Brands';
774 | font-weight: 400; }
775 |
776 | .fa.fa-xing-square {
777 | font-family: 'Font Awesome 5 Brands';
778 | font-weight: 400; }
779 |
780 | .fa.fa-youtube-play {
781 | font-family: 'Font Awesome 5 Brands';
782 | font-weight: 400; }
783 |
784 | .fa.fa-youtube-play:before {
785 | content: "\f167"; }
786 |
787 | .fa.fa-dropbox {
788 | font-family: 'Font Awesome 5 Brands';
789 | font-weight: 400; }
790 |
791 | .fa.fa-stack-overflow {
792 | font-family: 'Font Awesome 5 Brands';
793 | font-weight: 400; }
794 |
795 | .fa.fa-instagram {
796 | font-family: 'Font Awesome 5 Brands';
797 | font-weight: 400; }
798 |
799 | .fa.fa-flickr {
800 | font-family: 'Font Awesome 5 Brands';
801 | font-weight: 400; }
802 |
803 | .fa.fa-adn {
804 | font-family: 'Font Awesome 5 Brands';
805 | font-weight: 400; }
806 |
807 | .fa.fa-bitbucket {
808 | font-family: 'Font Awesome 5 Brands';
809 | font-weight: 400; }
810 |
811 | .fa.fa-bitbucket-square {
812 | font-family: 'Font Awesome 5 Brands';
813 | font-weight: 400; }
814 |
815 | .fa.fa-bitbucket-square:before {
816 | content: "\f171"; }
817 |
818 | .fa.fa-tumblr {
819 | font-family: 'Font Awesome 5 Brands';
820 | font-weight: 400; }
821 |
822 | .fa.fa-tumblr-square {
823 | font-family: 'Font Awesome 5 Brands';
824 | font-weight: 400; }
825 |
826 | .fa.fa-long-arrow-down:before {
827 | content: "\f309"; }
828 |
829 | .fa.fa-long-arrow-up:before {
830 | content: "\f30c"; }
831 |
832 | .fa.fa-long-arrow-left:before {
833 | content: "\f30a"; }
834 |
835 | .fa.fa-long-arrow-right:before {
836 | content: "\f30b"; }
837 |
838 | .fa.fa-apple {
839 | font-family: 'Font Awesome 5 Brands';
840 | font-weight: 400; }
841 |
842 | .fa.fa-windows {
843 | font-family: 'Font Awesome 5 Brands';
844 | font-weight: 400; }
845 |
846 | .fa.fa-android {
847 | font-family: 'Font Awesome 5 Brands';
848 | font-weight: 400; }
849 |
850 | .fa.fa-linux {
851 | font-family: 'Font Awesome 5 Brands';
852 | font-weight: 400; }
853 |
854 | .fa.fa-dribbble {
855 | font-family: 'Font Awesome 5 Brands';
856 | font-weight: 400; }
857 |
858 | .fa.fa-skype {
859 | font-family: 'Font Awesome 5 Brands';
860 | font-weight: 400; }
861 |
862 | .fa.fa-foursquare {
863 | font-family: 'Font Awesome 5 Brands';
864 | font-weight: 400; }
865 |
866 | .fa.fa-trello {
867 | font-family: 'Font Awesome 5 Brands';
868 | font-weight: 400; }
869 |
870 | .fa.fa-gratipay {
871 | font-family: 'Font Awesome 5 Brands';
872 | font-weight: 400; }
873 |
874 | .fa.fa-gittip {
875 | font-family: 'Font Awesome 5 Brands';
876 | font-weight: 400; }
877 |
878 | .fa.fa-gittip:before {
879 | content: "\f184"; }
880 |
881 | .fa.fa-sun-o {
882 | font-family: 'Font Awesome 5 Free';
883 | font-weight: 400; }
884 |
885 | .fa.fa-sun-o:before {
886 | content: "\f185"; }
887 |
888 | .fa.fa-moon-o {
889 | font-family: 'Font Awesome 5 Free';
890 | font-weight: 400; }
891 |
892 | .fa.fa-moon-o:before {
893 | content: "\f186"; }
894 |
895 | .fa.fa-vk {
896 | font-family: 'Font Awesome 5 Brands';
897 | font-weight: 400; }
898 |
899 | .fa.fa-weibo {
900 | font-family: 'Font Awesome 5 Brands';
901 | font-weight: 400; }
902 |
903 | .fa.fa-renren {
904 | font-family: 'Font Awesome 5 Brands';
905 | font-weight: 400; }
906 |
907 | .fa.fa-pagelines {
908 | font-family: 'Font Awesome 5 Brands';
909 | font-weight: 400; }
910 |
911 | .fa.fa-stack-exchange {
912 | font-family: 'Font Awesome 5 Brands';
913 | font-weight: 400; }
914 |
915 | .fa.fa-arrow-circle-o-right {
916 | font-family: 'Font Awesome 5 Free';
917 | font-weight: 400; }
918 |
919 | .fa.fa-arrow-circle-o-right:before {
920 | content: "\f35a"; }
921 |
922 | .fa.fa-arrow-circle-o-left {
923 | font-family: 'Font Awesome 5 Free';
924 | font-weight: 400; }
925 |
926 | .fa.fa-arrow-circle-o-left:before {
927 | content: "\f359"; }
928 |
929 | .fa.fa-caret-square-o-left {
930 | font-family: 'Font Awesome 5 Free';
931 | font-weight: 400; }
932 |
933 | .fa.fa-caret-square-o-left:before {
934 | content: "\f191"; }
935 |
936 | .fa.fa-toggle-left {
937 | font-family: 'Font Awesome 5 Free';
938 | font-weight: 400; }
939 |
940 | .fa.fa-toggle-left:before {
941 | content: "\f191"; }
942 |
943 | .fa.fa-dot-circle-o {
944 | font-family: 'Font Awesome 5 Free';
945 | font-weight: 400; }
946 |
947 | .fa.fa-dot-circle-o:before {
948 | content: "\f192"; }
949 |
950 | .fa.fa-vimeo-square {
951 | font-family: 'Font Awesome 5 Brands';
952 | font-weight: 400; }
953 |
954 | .fa.fa-try:before {
955 | content: "\f195"; }
956 |
957 | .fa.fa-turkish-lira:before {
958 | content: "\f195"; }
959 |
960 | .fa.fa-plus-square-o {
961 | font-family: 'Font Awesome 5 Free';
962 | font-weight: 400; }
963 |
964 | .fa.fa-plus-square-o:before {
965 | content: "\f0fe"; }
966 |
967 | .fa.fa-slack {
968 | font-family: 'Font Awesome 5 Brands';
969 | font-weight: 400; }
970 |
971 | .fa.fa-wordpress {
972 | font-family: 'Font Awesome 5 Brands';
973 | font-weight: 400; }
974 |
975 | .fa.fa-openid {
976 | font-family: 'Font Awesome 5 Brands';
977 | font-weight: 400; }
978 |
979 | .fa.fa-institution:before {
980 | content: "\f19c"; }
981 |
982 | .fa.fa-bank:before {
983 | content: "\f19c"; }
984 |
985 | .fa.fa-mortar-board:before {
986 | content: "\f19d"; }
987 |
988 | .fa.fa-yahoo {
989 | font-family: 'Font Awesome 5 Brands';
990 | font-weight: 400; }
991 |
992 | .fa.fa-google {
993 | font-family: 'Font Awesome 5 Brands';
994 | font-weight: 400; }
995 |
996 | .fa.fa-reddit {
997 | font-family: 'Font Awesome 5 Brands';
998 | font-weight: 400; }
999 |
1000 | .fa.fa-reddit-square {
1001 | font-family: 'Font Awesome 5 Brands';
1002 | font-weight: 400; }
1003 |
1004 | .fa.fa-stumbleupon-circle {
1005 | font-family: 'Font Awesome 5 Brands';
1006 | font-weight: 400; }
1007 |
1008 | .fa.fa-stumbleupon {
1009 | font-family: 'Font Awesome 5 Brands';
1010 | font-weight: 400; }
1011 |
1012 | .fa.fa-delicious {
1013 | font-family: 'Font Awesome 5 Brands';
1014 | font-weight: 400; }
1015 |
1016 | .fa.fa-digg {
1017 | font-family: 'Font Awesome 5 Brands';
1018 | font-weight: 400; }
1019 |
1020 | .fa.fa-pied-piper-pp {
1021 | font-family: 'Font Awesome 5 Brands';
1022 | font-weight: 400; }
1023 |
1024 | .fa.fa-pied-piper-alt {
1025 | font-family: 'Font Awesome 5 Brands';
1026 | font-weight: 400; }
1027 |
1028 | .fa.fa-drupal {
1029 | font-family: 'Font Awesome 5 Brands';
1030 | font-weight: 400; }
1031 |
1032 | .fa.fa-joomla {
1033 | font-family: 'Font Awesome 5 Brands';
1034 | font-weight: 400; }
1035 |
1036 | .fa.fa-spoon:before {
1037 | content: "\f2e5"; }
1038 |
1039 | .fa.fa-behance {
1040 | font-family: 'Font Awesome 5 Brands';
1041 | font-weight: 400; }
1042 |
1043 | .fa.fa-behance-square {
1044 | font-family: 'Font Awesome 5 Brands';
1045 | font-weight: 400; }
1046 |
1047 | .fa.fa-steam {
1048 | font-family: 'Font Awesome 5 Brands';
1049 | font-weight: 400; }
1050 |
1051 | .fa.fa-steam-square {
1052 | font-family: 'Font Awesome 5 Brands';
1053 | font-weight: 400; }
1054 |
1055 | .fa.fa-automobile:before {
1056 | content: "\f1b9"; }
1057 |
1058 | .fa.fa-cab:before {
1059 | content: "\f1ba"; }
1060 |
1061 | .fa.fa-envelope-o {
1062 | font-family: 'Font Awesome 5 Free';
1063 | font-weight: 400; }
1064 |
1065 | .fa.fa-envelope-o:before {
1066 | content: "\f0e0"; }
1067 |
1068 | .fa.fa-deviantart {
1069 | font-family: 'Font Awesome 5 Brands';
1070 | font-weight: 400; }
1071 |
1072 | .fa.fa-soundcloud {
1073 | font-family: 'Font Awesome 5 Brands';
1074 | font-weight: 400; }
1075 |
1076 | .fa.fa-file-pdf-o {
1077 | font-family: 'Font Awesome 5 Free';
1078 | font-weight: 400; }
1079 |
1080 | .fa.fa-file-pdf-o:before {
1081 | content: "\f1c1"; }
1082 |
1083 | .fa.fa-file-word-o {
1084 | font-family: 'Font Awesome 5 Free';
1085 | font-weight: 400; }
1086 |
1087 | .fa.fa-file-word-o:before {
1088 | content: "\f1c2"; }
1089 |
1090 | .fa.fa-file-excel-o {
1091 | font-family: 'Font Awesome 5 Free';
1092 | font-weight: 400; }
1093 |
1094 | .fa.fa-file-excel-o:before {
1095 | content: "\f1c3"; }
1096 |
1097 | .fa.fa-file-powerpoint-o {
1098 | font-family: 'Font Awesome 5 Free';
1099 | font-weight: 400; }
1100 |
1101 | .fa.fa-file-powerpoint-o:before {
1102 | content: "\f1c4"; }
1103 |
1104 | .fa.fa-file-image-o {
1105 | font-family: 'Font Awesome 5 Free';
1106 | font-weight: 400; }
1107 |
1108 | .fa.fa-file-image-o:before {
1109 | content: "\f1c5"; }
1110 |
1111 | .fa.fa-file-photo-o {
1112 | font-family: 'Font Awesome 5 Free';
1113 | font-weight: 400; }
1114 |
1115 | .fa.fa-file-photo-o:before {
1116 | content: "\f1c5"; }
1117 |
1118 | .fa.fa-file-picture-o {
1119 | font-family: 'Font Awesome 5 Free';
1120 | font-weight: 400; }
1121 |
1122 | .fa.fa-file-picture-o:before {
1123 | content: "\f1c5"; }
1124 |
1125 | .fa.fa-file-archive-o {
1126 | font-family: 'Font Awesome 5 Free';
1127 | font-weight: 400; }
1128 |
1129 | .fa.fa-file-archive-o:before {
1130 | content: "\f1c6"; }
1131 |
1132 | .fa.fa-file-zip-o {
1133 | font-family: 'Font Awesome 5 Free';
1134 | font-weight: 400; }
1135 |
1136 | .fa.fa-file-zip-o:before {
1137 | content: "\f1c6"; }
1138 |
1139 | .fa.fa-file-audio-o {
1140 | font-family: 'Font Awesome 5 Free';
1141 | font-weight: 400; }
1142 |
1143 | .fa.fa-file-audio-o:before {
1144 | content: "\f1c7"; }
1145 |
1146 | .fa.fa-file-sound-o {
1147 | font-family: 'Font Awesome 5 Free';
1148 | font-weight: 400; }
1149 |
1150 | .fa.fa-file-sound-o:before {
1151 | content: "\f1c7"; }
1152 |
1153 | .fa.fa-file-video-o {
1154 | font-family: 'Font Awesome 5 Free';
1155 | font-weight: 400; }
1156 |
1157 | .fa.fa-file-video-o:before {
1158 | content: "\f1c8"; }
1159 |
1160 | .fa.fa-file-movie-o {
1161 | font-family: 'Font Awesome 5 Free';
1162 | font-weight: 400; }
1163 |
1164 | .fa.fa-file-movie-o:before {
1165 | content: "\f1c8"; }
1166 |
1167 | .fa.fa-file-code-o {
1168 | font-family: 'Font Awesome 5 Free';
1169 | font-weight: 400; }
1170 |
1171 | .fa.fa-file-code-o:before {
1172 | content: "\f1c9"; }
1173 |
1174 | .fa.fa-vine {
1175 | font-family: 'Font Awesome 5 Brands';
1176 | font-weight: 400; }
1177 |
1178 | .fa.fa-codepen {
1179 | font-family: 'Font Awesome 5 Brands';
1180 | font-weight: 400; }
1181 |
1182 | .fa.fa-jsfiddle {
1183 | font-family: 'Font Awesome 5 Brands';
1184 | font-weight: 400; }
1185 |
1186 | .fa.fa-life-ring {
1187 | font-family: 'Font Awesome 5 Free';
1188 | font-weight: 400; }
1189 |
1190 | .fa.fa-life-bouy {
1191 | font-family: 'Font Awesome 5 Free';
1192 | font-weight: 400; }
1193 |
1194 | .fa.fa-life-bouy:before {
1195 | content: "\f1cd"; }
1196 |
1197 | .fa.fa-life-buoy {
1198 | font-family: 'Font Awesome 5 Free';
1199 | font-weight: 400; }
1200 |
1201 | .fa.fa-life-buoy:before {
1202 | content: "\f1cd"; }
1203 |
1204 | .fa.fa-life-saver {
1205 | font-family: 'Font Awesome 5 Free';
1206 | font-weight: 400; }
1207 |
1208 | .fa.fa-life-saver:before {
1209 | content: "\f1cd"; }
1210 |
1211 | .fa.fa-support {
1212 | font-family: 'Font Awesome 5 Free';
1213 | font-weight: 400; }
1214 |
1215 | .fa.fa-support:before {
1216 | content: "\f1cd"; }
1217 |
1218 | .fa.fa-circle-o-notch:before {
1219 | content: "\f1ce"; }
1220 |
1221 | .fa.fa-rebel {
1222 | font-family: 'Font Awesome 5 Brands';
1223 | font-weight: 400; }
1224 |
1225 | .fa.fa-ra {
1226 | font-family: 'Font Awesome 5 Brands';
1227 | font-weight: 400; }
1228 |
1229 | .fa.fa-ra:before {
1230 | content: "\f1d0"; }
1231 |
1232 | .fa.fa-resistance {
1233 | font-family: 'Font Awesome 5 Brands';
1234 | font-weight: 400; }
1235 |
1236 | .fa.fa-resistance:before {
1237 | content: "\f1d0"; }
1238 |
1239 | .fa.fa-empire {
1240 | font-family: 'Font Awesome 5 Brands';
1241 | font-weight: 400; }
1242 |
1243 | .fa.fa-ge {
1244 | font-family: 'Font Awesome 5 Brands';
1245 | font-weight: 400; }
1246 |
1247 | .fa.fa-ge:before {
1248 | content: "\f1d1"; }
1249 |
1250 | .fa.fa-git-square {
1251 | font-family: 'Font Awesome 5 Brands';
1252 | font-weight: 400; }
1253 |
1254 | .fa.fa-git {
1255 | font-family: 'Font Awesome 5 Brands';
1256 | font-weight: 400; }
1257 |
1258 | .fa.fa-hacker-news {
1259 | font-family: 'Font Awesome 5 Brands';
1260 | font-weight: 400; }
1261 |
1262 | .fa.fa-y-combinator-square {
1263 | font-family: 'Font Awesome 5 Brands';
1264 | font-weight: 400; }
1265 |
1266 | .fa.fa-y-combinator-square:before {
1267 | content: "\f1d4"; }
1268 |
1269 | .fa.fa-yc-square {
1270 | font-family: 'Font Awesome 5 Brands';
1271 | font-weight: 400; }
1272 |
1273 | .fa.fa-yc-square:before {
1274 | content: "\f1d4"; }
1275 |
1276 | .fa.fa-tencent-weibo {
1277 | font-family: 'Font Awesome 5 Brands';
1278 | font-weight: 400; }
1279 |
1280 | .fa.fa-qq {
1281 | font-family: 'Font Awesome 5 Brands';
1282 | font-weight: 400; }
1283 |
1284 | .fa.fa-weixin {
1285 | font-family: 'Font Awesome 5 Brands';
1286 | font-weight: 400; }
1287 |
1288 | .fa.fa-wechat {
1289 | font-family: 'Font Awesome 5 Brands';
1290 | font-weight: 400; }
1291 |
1292 | .fa.fa-wechat:before {
1293 | content: "\f1d7"; }
1294 |
1295 | .fa.fa-send:before {
1296 | content: "\f1d8"; }
1297 |
1298 | .fa.fa-paper-plane-o {
1299 | font-family: 'Font Awesome 5 Free';
1300 | font-weight: 400; }
1301 |
1302 | .fa.fa-paper-plane-o:before {
1303 | content: "\f1d8"; }
1304 |
1305 | .fa.fa-send-o {
1306 | font-family: 'Font Awesome 5 Free';
1307 | font-weight: 400; }
1308 |
1309 | .fa.fa-send-o:before {
1310 | content: "\f1d8"; }
1311 |
1312 | .fa.fa-circle-thin {
1313 | font-family: 'Font Awesome 5 Free';
1314 | font-weight: 400; }
1315 |
1316 | .fa.fa-circle-thin:before {
1317 | content: "\f111"; }
1318 |
1319 | .fa.fa-header:before {
1320 | content: "\f1dc"; }
1321 |
1322 | .fa.fa-sliders:before {
1323 | content: "\f1de"; }
1324 |
1325 | .fa.fa-futbol-o {
1326 | font-family: 'Font Awesome 5 Free';
1327 | font-weight: 400; }
1328 |
1329 | .fa.fa-futbol-o:before {
1330 | content: "\f1e3"; }
1331 |
1332 | .fa.fa-soccer-ball-o {
1333 | font-family: 'Font Awesome 5 Free';
1334 | font-weight: 400; }
1335 |
1336 | .fa.fa-soccer-ball-o:before {
1337 | content: "\f1e3"; }
1338 |
1339 | .fa.fa-slideshare {
1340 | font-family: 'Font Awesome 5 Brands';
1341 | font-weight: 400; }
1342 |
1343 | .fa.fa-twitch {
1344 | font-family: 'Font Awesome 5 Brands';
1345 | font-weight: 400; }
1346 |
1347 | .fa.fa-yelp {
1348 | font-family: 'Font Awesome 5 Brands';
1349 | font-weight: 400; }
1350 |
1351 | .fa.fa-newspaper-o {
1352 | font-family: 'Font Awesome 5 Free';
1353 | font-weight: 400; }
1354 |
1355 | .fa.fa-newspaper-o:before {
1356 | content: "\f1ea"; }
1357 |
1358 | .fa.fa-paypal {
1359 | font-family: 'Font Awesome 5 Brands';
1360 | font-weight: 400; }
1361 |
1362 | .fa.fa-google-wallet {
1363 | font-family: 'Font Awesome 5 Brands';
1364 | font-weight: 400; }
1365 |
1366 | .fa.fa-cc-visa {
1367 | font-family: 'Font Awesome 5 Brands';
1368 | font-weight: 400; }
1369 |
1370 | .fa.fa-cc-mastercard {
1371 | font-family: 'Font Awesome 5 Brands';
1372 | font-weight: 400; }
1373 |
1374 | .fa.fa-cc-discover {
1375 | font-family: 'Font Awesome 5 Brands';
1376 | font-weight: 400; }
1377 |
1378 | .fa.fa-cc-amex {
1379 | font-family: 'Font Awesome 5 Brands';
1380 | font-weight: 400; }
1381 |
1382 | .fa.fa-cc-paypal {
1383 | font-family: 'Font Awesome 5 Brands';
1384 | font-weight: 400; }
1385 |
1386 | .fa.fa-cc-stripe {
1387 | font-family: 'Font Awesome 5 Brands';
1388 | font-weight: 400; }
1389 |
1390 | .fa.fa-bell-slash-o {
1391 | font-family: 'Font Awesome 5 Free';
1392 | font-weight: 400; }
1393 |
1394 | .fa.fa-bell-slash-o:before {
1395 | content: "\f1f6"; }
1396 |
1397 | .fa.fa-trash:before {
1398 | content: "\f2ed"; }
1399 |
1400 | .fa.fa-copyright {
1401 | font-family: 'Font Awesome 5 Free';
1402 | font-weight: 400; }
1403 |
1404 | .fa.fa-eyedropper:before {
1405 | content: "\f1fb"; }
1406 |
1407 | .fa.fa-area-chart:before {
1408 | content: "\f1fe"; }
1409 |
1410 | .fa.fa-pie-chart:before {
1411 | content: "\f200"; }
1412 |
1413 | .fa.fa-line-chart:before {
1414 | content: "\f201"; }
1415 |
1416 | .fa.fa-lastfm {
1417 | font-family: 'Font Awesome 5 Brands';
1418 | font-weight: 400; }
1419 |
1420 | .fa.fa-lastfm-square {
1421 | font-family: 'Font Awesome 5 Brands';
1422 | font-weight: 400; }
1423 |
1424 | .fa.fa-ioxhost {
1425 | font-family: 'Font Awesome 5 Brands';
1426 | font-weight: 400; }
1427 |
1428 | .fa.fa-angellist {
1429 | font-family: 'Font Awesome 5 Brands';
1430 | font-weight: 400; }
1431 |
1432 | .fa.fa-cc {
1433 | font-family: 'Font Awesome 5 Free';
1434 | font-weight: 400; }
1435 |
1436 | .fa.fa-cc:before {
1437 | content: "\f20a"; }
1438 |
1439 | .fa.fa-ils:before {
1440 | content: "\f20b"; }
1441 |
1442 | .fa.fa-shekel:before {
1443 | content: "\f20b"; }
1444 |
1445 | .fa.fa-sheqel:before {
1446 | content: "\f20b"; }
1447 |
1448 | .fa.fa-meanpath {
1449 | font-family: 'Font Awesome 5 Brands';
1450 | font-weight: 400; }
1451 |
1452 | .fa.fa-meanpath:before {
1453 | content: "\f2b4"; }
1454 |
1455 | .fa.fa-buysellads {
1456 | font-family: 'Font Awesome 5 Brands';
1457 | font-weight: 400; }
1458 |
1459 | .fa.fa-connectdevelop {
1460 | font-family: 'Font Awesome 5 Brands';
1461 | font-weight: 400; }
1462 |
1463 | .fa.fa-dashcube {
1464 | font-family: 'Font Awesome 5 Brands';
1465 | font-weight: 400; }
1466 |
1467 | .fa.fa-forumbee {
1468 | font-family: 'Font Awesome 5 Brands';
1469 | font-weight: 400; }
1470 |
1471 | .fa.fa-leanpub {
1472 | font-family: 'Font Awesome 5 Brands';
1473 | font-weight: 400; }
1474 |
1475 | .fa.fa-sellsy {
1476 | font-family: 'Font Awesome 5 Brands';
1477 | font-weight: 400; }
1478 |
1479 | .fa.fa-shirtsinbulk {
1480 | font-family: 'Font Awesome 5 Brands';
1481 | font-weight: 400; }
1482 |
1483 | .fa.fa-simplybuilt {
1484 | font-family: 'Font Awesome 5 Brands';
1485 | font-weight: 400; }
1486 |
1487 | .fa.fa-skyatlas {
1488 | font-family: 'Font Awesome 5 Brands';
1489 | font-weight: 400; }
1490 |
1491 | .fa.fa-diamond {
1492 | font-family: 'Font Awesome 5 Free';
1493 | font-weight: 400; }
1494 |
1495 | .fa.fa-diamond:before {
1496 | content: "\f3a5"; }
1497 |
1498 | .fa.fa-intersex:before {
1499 | content: "\f224"; }
1500 |
1501 | .fa.fa-facebook-official {
1502 | font-family: 'Font Awesome 5 Brands';
1503 | font-weight: 400; }
1504 |
1505 | .fa.fa-facebook-official:before {
1506 | content: "\f09a"; }
1507 |
1508 | .fa.fa-pinterest-p {
1509 | font-family: 'Font Awesome 5 Brands';
1510 | font-weight: 400; }
1511 |
1512 | .fa.fa-whatsapp {
1513 | font-family: 'Font Awesome 5 Brands';
1514 | font-weight: 400; }
1515 |
1516 | .fa.fa-hotel:before {
1517 | content: "\f236"; }
1518 |
1519 | .fa.fa-viacoin {
1520 | font-family: 'Font Awesome 5 Brands';
1521 | font-weight: 400; }
1522 |
1523 | .fa.fa-medium {
1524 | font-family: 'Font Awesome 5 Brands';
1525 | font-weight: 400; }
1526 |
1527 | .fa.fa-y-combinator {
1528 | font-family: 'Font Awesome 5 Brands';
1529 | font-weight: 400; }
1530 |
1531 | .fa.fa-yc {
1532 | font-family: 'Font Awesome 5 Brands';
1533 | font-weight: 400; }
1534 |
1535 | .fa.fa-yc:before {
1536 | content: "\f23b"; }
1537 |
1538 | .fa.fa-optin-monster {
1539 | font-family: 'Font Awesome 5 Brands';
1540 | font-weight: 400; }
1541 |
1542 | .fa.fa-opencart {
1543 | font-family: 'Font Awesome 5 Brands';
1544 | font-weight: 400; }
1545 |
1546 | .fa.fa-expeditedssl {
1547 | font-family: 'Font Awesome 5 Brands';
1548 | font-weight: 400; }
1549 |
1550 | .fa.fa-battery-4:before {
1551 | content: "\f240"; }
1552 |
1553 | .fa.fa-battery:before {
1554 | content: "\f240"; }
1555 |
1556 | .fa.fa-battery-3:before {
1557 | content: "\f241"; }
1558 |
1559 | .fa.fa-battery-2:before {
1560 | content: "\f242"; }
1561 |
1562 | .fa.fa-battery-1:before {
1563 | content: "\f243"; }
1564 |
1565 | .fa.fa-battery-0:before {
1566 | content: "\f244"; }
1567 |
1568 | .fa.fa-object-group {
1569 | font-family: 'Font Awesome 5 Free';
1570 | font-weight: 400; }
1571 |
1572 | .fa.fa-object-ungroup {
1573 | font-family: 'Font Awesome 5 Free';
1574 | font-weight: 400; }
1575 |
1576 | .fa.fa-sticky-note-o {
1577 | font-family: 'Font Awesome 5 Free';
1578 | font-weight: 400; }
1579 |
1580 | .fa.fa-sticky-note-o:before {
1581 | content: "\f249"; }
1582 |
1583 | .fa.fa-cc-jcb {
1584 | font-family: 'Font Awesome 5 Brands';
1585 | font-weight: 400; }
1586 |
1587 | .fa.fa-cc-diners-club {
1588 | font-family: 'Font Awesome 5 Brands';
1589 | font-weight: 400; }
1590 |
1591 | .fa.fa-clone {
1592 | font-family: 'Font Awesome 5 Free';
1593 | font-weight: 400; }
1594 |
1595 | .fa.fa-hourglass-o {
1596 | font-family: 'Font Awesome 5 Free';
1597 | font-weight: 400; }
1598 |
1599 | .fa.fa-hourglass-o:before {
1600 | content: "\f254"; }
1601 |
1602 | .fa.fa-hourglass-1:before {
1603 | content: "\f251"; }
1604 |
1605 | .fa.fa-hourglass-2:before {
1606 | content: "\f252"; }
1607 |
1608 | .fa.fa-hourglass-3:before {
1609 | content: "\f253"; }
1610 |
1611 | .fa.fa-hand-rock-o {
1612 | font-family: 'Font Awesome 5 Free';
1613 | font-weight: 400; }
1614 |
1615 | .fa.fa-hand-rock-o:before {
1616 | content: "\f255"; }
1617 |
1618 | .fa.fa-hand-grab-o {
1619 | font-family: 'Font Awesome 5 Free';
1620 | font-weight: 400; }
1621 |
1622 | .fa.fa-hand-grab-o:before {
1623 | content: "\f255"; }
1624 |
1625 | .fa.fa-hand-paper-o {
1626 | font-family: 'Font Awesome 5 Free';
1627 | font-weight: 400; }
1628 |
1629 | .fa.fa-hand-paper-o:before {
1630 | content: "\f256"; }
1631 |
1632 | .fa.fa-hand-stop-o {
1633 | font-family: 'Font Awesome 5 Free';
1634 | font-weight: 400; }
1635 |
1636 | .fa.fa-hand-stop-o:before {
1637 | content: "\f256"; }
1638 |
1639 | .fa.fa-hand-scissors-o {
1640 | font-family: 'Font Awesome 5 Free';
1641 | font-weight: 400; }
1642 |
1643 | .fa.fa-hand-scissors-o:before {
1644 | content: "\f257"; }
1645 |
1646 | .fa.fa-hand-lizard-o {
1647 | font-family: 'Font Awesome 5 Free';
1648 | font-weight: 400; }
1649 |
1650 | .fa.fa-hand-lizard-o:before {
1651 | content: "\f258"; }
1652 |
1653 | .fa.fa-hand-spock-o {
1654 | font-family: 'Font Awesome 5 Free';
1655 | font-weight: 400; }
1656 |
1657 | .fa.fa-hand-spock-o:before {
1658 | content: "\f259"; }
1659 |
1660 | .fa.fa-hand-pointer-o {
1661 | font-family: 'Font Awesome 5 Free';
1662 | font-weight: 400; }
1663 |
1664 | .fa.fa-hand-pointer-o:before {
1665 | content: "\f25a"; }
1666 |
1667 | .fa.fa-hand-peace-o {
1668 | font-family: 'Font Awesome 5 Free';
1669 | font-weight: 400; }
1670 |
1671 | .fa.fa-hand-peace-o:before {
1672 | content: "\f25b"; }
1673 |
1674 | .fa.fa-registered {
1675 | font-family: 'Font Awesome 5 Free';
1676 | font-weight: 400; }
1677 |
1678 | .fa.fa-creative-commons {
1679 | font-family: 'Font Awesome 5 Brands';
1680 | font-weight: 400; }
1681 |
1682 | .fa.fa-gg {
1683 | font-family: 'Font Awesome 5 Brands';
1684 | font-weight: 400; }
1685 |
1686 | .fa.fa-gg-circle {
1687 | font-family: 'Font Awesome 5 Brands';
1688 | font-weight: 400; }
1689 |
1690 | .fa.fa-tripadvisor {
1691 | font-family: 'Font Awesome 5 Brands';
1692 | font-weight: 400; }
1693 |
1694 | .fa.fa-odnoklassniki {
1695 | font-family: 'Font Awesome 5 Brands';
1696 | font-weight: 400; }
1697 |
1698 | .fa.fa-odnoklassniki-square {
1699 | font-family: 'Font Awesome 5 Brands';
1700 | font-weight: 400; }
1701 |
1702 | .fa.fa-get-pocket {
1703 | font-family: 'Font Awesome 5 Brands';
1704 | font-weight: 400; }
1705 |
1706 | .fa.fa-wikipedia-w {
1707 | font-family: 'Font Awesome 5 Brands';
1708 | font-weight: 400; }
1709 |
1710 | .fa.fa-safari {
1711 | font-family: 'Font Awesome 5 Brands';
1712 | font-weight: 400; }
1713 |
1714 | .fa.fa-chrome {
1715 | font-family: 'Font Awesome 5 Brands';
1716 | font-weight: 400; }
1717 |
1718 | .fa.fa-firefox {
1719 | font-family: 'Font Awesome 5 Brands';
1720 | font-weight: 400; }
1721 |
1722 | .fa.fa-opera {
1723 | font-family: 'Font Awesome 5 Brands';
1724 | font-weight: 400; }
1725 |
1726 | .fa.fa-internet-explorer {
1727 | font-family: 'Font Awesome 5 Brands';
1728 | font-weight: 400; }
1729 |
1730 | .fa.fa-television:before {
1731 | content: "\f26c"; }
1732 |
1733 | .fa.fa-contao {
1734 | font-family: 'Font Awesome 5 Brands';
1735 | font-weight: 400; }
1736 |
1737 | .fa.fa-500px {
1738 | font-family: 'Font Awesome 5 Brands';
1739 | font-weight: 400; }
1740 |
1741 | .fa.fa-amazon {
1742 | font-family: 'Font Awesome 5 Brands';
1743 | font-weight: 400; }
1744 |
1745 | .fa.fa-calendar-plus-o {
1746 | font-family: 'Font Awesome 5 Free';
1747 | font-weight: 400; }
1748 |
1749 | .fa.fa-calendar-plus-o:before {
1750 | content: "\f271"; }
1751 |
1752 | .fa.fa-calendar-minus-o {
1753 | font-family: 'Font Awesome 5 Free';
1754 | font-weight: 400; }
1755 |
1756 | .fa.fa-calendar-minus-o:before {
1757 | content: "\f272"; }
1758 |
1759 | .fa.fa-calendar-times-o {
1760 | font-family: 'Font Awesome 5 Free';
1761 | font-weight: 400; }
1762 |
1763 | .fa.fa-calendar-times-o:before {
1764 | content: "\f273"; }
1765 |
1766 | .fa.fa-calendar-check-o {
1767 | font-family: 'Font Awesome 5 Free';
1768 | font-weight: 400; }
1769 |
1770 | .fa.fa-calendar-check-o:before {
1771 | content: "\f274"; }
1772 |
1773 | .fa.fa-map-o {
1774 | font-family: 'Font Awesome 5 Free';
1775 | font-weight: 400; }
1776 |
1777 | .fa.fa-map-o:before {
1778 | content: "\f279"; }
1779 |
1780 | .fa.fa-commenting {
1781 | font-family: 'Font Awesome 5 Free';
1782 | font-weight: 400; }
1783 |
1784 | .fa.fa-commenting:before {
1785 | content: "\f4ad"; }
1786 |
1787 | .fa.fa-commenting-o {
1788 | font-family: 'Font Awesome 5 Free';
1789 | font-weight: 400; }
1790 |
1791 | .fa.fa-commenting-o:before {
1792 | content: "\f4ad"; }
1793 |
1794 | .fa.fa-houzz {
1795 | font-family: 'Font Awesome 5 Brands';
1796 | font-weight: 400; }
1797 |
1798 | .fa.fa-vimeo {
1799 | font-family: 'Font Awesome 5 Brands';
1800 | font-weight: 400; }
1801 |
1802 | .fa.fa-vimeo:before {
1803 | content: "\f27d"; }
1804 |
1805 | .fa.fa-black-tie {
1806 | font-family: 'Font Awesome 5 Brands';
1807 | font-weight: 400; }
1808 |
1809 | .fa.fa-fonticons {
1810 | font-family: 'Font Awesome 5 Brands';
1811 | font-weight: 400; }
1812 |
1813 | .fa.fa-reddit-alien {
1814 | font-family: 'Font Awesome 5 Brands';
1815 | font-weight: 400; }
1816 |
1817 | .fa.fa-edge {
1818 | font-family: 'Font Awesome 5 Brands';
1819 | font-weight: 400; }
1820 |
1821 | .fa.fa-credit-card-alt:before {
1822 | content: "\f09d"; }
1823 |
1824 | .fa.fa-codiepie {
1825 | font-family: 'Font Awesome 5 Brands';
1826 | font-weight: 400; }
1827 |
1828 | .fa.fa-modx {
1829 | font-family: 'Font Awesome 5 Brands';
1830 | font-weight: 400; }
1831 |
1832 | .fa.fa-fort-awesome {
1833 | font-family: 'Font Awesome 5 Brands';
1834 | font-weight: 400; }
1835 |
1836 | .fa.fa-usb {
1837 | font-family: 'Font Awesome 5 Brands';
1838 | font-weight: 400; }
1839 |
1840 | .fa.fa-product-hunt {
1841 | font-family: 'Font Awesome 5 Brands';
1842 | font-weight: 400; }
1843 |
1844 | .fa.fa-mixcloud {
1845 | font-family: 'Font Awesome 5 Brands';
1846 | font-weight: 400; }
1847 |
1848 | .fa.fa-scribd {
1849 | font-family: 'Font Awesome 5 Brands';
1850 | font-weight: 400; }
1851 |
1852 | .fa.fa-pause-circle-o {
1853 | font-family: 'Font Awesome 5 Free';
1854 | font-weight: 400; }
1855 |
1856 | .fa.fa-pause-circle-o:before {
1857 | content: "\f28b"; }
1858 |
1859 | .fa.fa-stop-circle-o {
1860 | font-family: 'Font Awesome 5 Free';
1861 | font-weight: 400; }
1862 |
1863 | .fa.fa-stop-circle-o:before {
1864 | content: "\f28d"; }
1865 |
1866 | .fa.fa-bluetooth {
1867 | font-family: 'Font Awesome 5 Brands';
1868 | font-weight: 400; }
1869 |
1870 | .fa.fa-bluetooth-b {
1871 | font-family: 'Font Awesome 5 Brands';
1872 | font-weight: 400; }
1873 |
1874 | .fa.fa-gitlab {
1875 | font-family: 'Font Awesome 5 Brands';
1876 | font-weight: 400; }
1877 |
1878 | .fa.fa-wpbeginner {
1879 | font-family: 'Font Awesome 5 Brands';
1880 | font-weight: 400; }
1881 |
1882 | .fa.fa-wpforms {
1883 | font-family: 'Font Awesome 5 Brands';
1884 | font-weight: 400; }
1885 |
1886 | .fa.fa-envira {
1887 | font-family: 'Font Awesome 5 Brands';
1888 | font-weight: 400; }
1889 |
1890 | .fa.fa-wheelchair-alt {
1891 | font-family: 'Font Awesome 5 Brands';
1892 | font-weight: 400; }
1893 |
1894 | .fa.fa-wheelchair-alt:before {
1895 | content: "\f368"; }
1896 |
1897 | .fa.fa-question-circle-o {
1898 | font-family: 'Font Awesome 5 Free';
1899 | font-weight: 400; }
1900 |
1901 | .fa.fa-question-circle-o:before {
1902 | content: "\f059"; }
1903 |
1904 | .fa.fa-volume-control-phone:before {
1905 | content: "\f2a0"; }
1906 |
1907 | .fa.fa-asl-interpreting:before {
1908 | content: "\f2a3"; }
1909 |
1910 | .fa.fa-deafness:before {
1911 | content: "\f2a4"; }
1912 |
1913 | .fa.fa-hard-of-hearing:before {
1914 | content: "\f2a4"; }
1915 |
1916 | .fa.fa-glide {
1917 | font-family: 'Font Awesome 5 Brands';
1918 | font-weight: 400; }
1919 |
1920 | .fa.fa-glide-g {
1921 | font-family: 'Font Awesome 5 Brands';
1922 | font-weight: 400; }
1923 |
1924 | .fa.fa-signing:before {
1925 | content: "\f2a7"; }
1926 |
1927 | .fa.fa-viadeo {
1928 | font-family: 'Font Awesome 5 Brands';
1929 | font-weight: 400; }
1930 |
1931 | .fa.fa-viadeo-square {
1932 | font-family: 'Font Awesome 5 Brands';
1933 | font-weight: 400; }
1934 |
1935 | .fa.fa-snapchat {
1936 | font-family: 'Font Awesome 5 Brands';
1937 | font-weight: 400; }
1938 |
1939 | .fa.fa-snapchat-ghost {
1940 | font-family: 'Font Awesome 5 Brands';
1941 | font-weight: 400; }
1942 |
1943 | .fa.fa-snapchat-square {
1944 | font-family: 'Font Awesome 5 Brands';
1945 | font-weight: 400; }
1946 |
1947 | .fa.fa-pied-piper {
1948 | font-family: 'Font Awesome 5 Brands';
1949 | font-weight: 400; }
1950 |
1951 | .fa.fa-first-order {
1952 | font-family: 'Font Awesome 5 Brands';
1953 | font-weight: 400; }
1954 |
1955 | .fa.fa-yoast {
1956 | font-family: 'Font Awesome 5 Brands';
1957 | font-weight: 400; }
1958 |
1959 | .fa.fa-themeisle {
1960 | font-family: 'Font Awesome 5 Brands';
1961 | font-weight: 400; }
1962 |
1963 | .fa.fa-google-plus-official {
1964 | font-family: 'Font Awesome 5 Brands';
1965 | font-weight: 400; }
1966 |
1967 | .fa.fa-google-plus-official:before {
1968 | content: "\f2b3"; }
1969 |
1970 | .fa.fa-google-plus-circle {
1971 | font-family: 'Font Awesome 5 Brands';
1972 | font-weight: 400; }
1973 |
1974 | .fa.fa-google-plus-circle:before {
1975 | content: "\f2b3"; }
1976 |
1977 | .fa.fa-font-awesome {
1978 | font-family: 'Font Awesome 5 Brands';
1979 | font-weight: 400; }
1980 |
1981 | .fa.fa-fa {
1982 | font-family: 'Font Awesome 5 Brands';
1983 | font-weight: 400; }
1984 |
1985 | .fa.fa-fa:before {
1986 | content: "\f2b4"; }
1987 |
1988 | .fa.fa-handshake-o {
1989 | font-family: 'Font Awesome 5 Free';
1990 | font-weight: 400; }
1991 |
1992 | .fa.fa-handshake-o:before {
1993 | content: "\f2b5"; }
1994 |
1995 | .fa.fa-envelope-open-o {
1996 | font-family: 'Font Awesome 5 Free';
1997 | font-weight: 400; }
1998 |
1999 | .fa.fa-envelope-open-o:before {
2000 | content: "\f2b6"; }
2001 |
2002 | .fa.fa-linode {
2003 | font-family: 'Font Awesome 5 Brands';
2004 | font-weight: 400; }
2005 |
2006 | .fa.fa-address-book-o {
2007 | font-family: 'Font Awesome 5 Free';
2008 | font-weight: 400; }
2009 |
2010 | .fa.fa-address-book-o:before {
2011 | content: "\f2b9"; }
2012 |
2013 | .fa.fa-vcard:before {
2014 | content: "\f2bb"; }
2015 |
2016 | .fa.fa-address-card-o {
2017 | font-family: 'Font Awesome 5 Free';
2018 | font-weight: 400; }
2019 |
2020 | .fa.fa-address-card-o:before {
2021 | content: "\f2bb"; }
2022 |
2023 | .fa.fa-vcard-o {
2024 | font-family: 'Font Awesome 5 Free';
2025 | font-weight: 400; }
2026 |
2027 | .fa.fa-vcard-o:before {
2028 | content: "\f2bb"; }
2029 |
2030 | .fa.fa-user-circle-o {
2031 | font-family: 'Font Awesome 5 Free';
2032 | font-weight: 400; }
2033 |
2034 | .fa.fa-user-circle-o:before {
2035 | content: "\f2bd"; }
2036 |
2037 | .fa.fa-user-o {
2038 | font-family: 'Font Awesome 5 Free';
2039 | font-weight: 400; }
2040 |
2041 | .fa.fa-user-o:before {
2042 | content: "\f007"; }
2043 |
2044 | .fa.fa-id-badge {
2045 | font-family: 'Font Awesome 5 Free';
2046 | font-weight: 400; }
2047 |
2048 | .fa.fa-drivers-license:before {
2049 | content: "\f2c2"; }
2050 |
2051 | .fa.fa-id-card-o {
2052 | font-family: 'Font Awesome 5 Free';
2053 | font-weight: 400; }
2054 |
2055 | .fa.fa-id-card-o:before {
2056 | content: "\f2c2"; }
2057 |
2058 | .fa.fa-drivers-license-o {
2059 | font-family: 'Font Awesome 5 Free';
2060 | font-weight: 400; }
2061 |
2062 | .fa.fa-drivers-license-o:before {
2063 | content: "\f2c2"; }
2064 |
2065 | .fa.fa-quora {
2066 | font-family: 'Font Awesome 5 Brands';
2067 | font-weight: 400; }
2068 |
2069 | .fa.fa-free-code-camp {
2070 | font-family: 'Font Awesome 5 Brands';
2071 | font-weight: 400; }
2072 |
2073 | .fa.fa-telegram {
2074 | font-family: 'Font Awesome 5 Brands';
2075 | font-weight: 400; }
2076 |
2077 | .fa.fa-thermometer-4:before {
2078 | content: "\f2c7"; }
2079 |
2080 | .fa.fa-thermometer:before {
2081 | content: "\f2c7"; }
2082 |
2083 | .fa.fa-thermometer-3:before {
2084 | content: "\f2c8"; }
2085 |
2086 | .fa.fa-thermometer-2:before {
2087 | content: "\f2c9"; }
2088 |
2089 | .fa.fa-thermometer-1:before {
2090 | content: "\f2ca"; }
2091 |
2092 | .fa.fa-thermometer-0:before {
2093 | content: "\f2cb"; }
2094 |
2095 | .fa.fa-bathtub:before {
2096 | content: "\f2cd"; }
2097 |
2098 | .fa.fa-s15:before {
2099 | content: "\f2cd"; }
2100 |
2101 | .fa.fa-window-maximize {
2102 | font-family: 'Font Awesome 5 Free';
2103 | font-weight: 400; }
2104 |
2105 | .fa.fa-window-restore {
2106 | font-family: 'Font Awesome 5 Free';
2107 | font-weight: 400; }
2108 |
2109 | .fa.fa-times-rectangle:before {
2110 | content: "\f410"; }
2111 |
2112 | .fa.fa-window-close-o {
2113 | font-family: 'Font Awesome 5 Free';
2114 | font-weight: 400; }
2115 |
2116 | .fa.fa-window-close-o:before {
2117 | content: "\f410"; }
2118 |
2119 | .fa.fa-times-rectangle-o {
2120 | font-family: 'Font Awesome 5 Free';
2121 | font-weight: 400; }
2122 |
2123 | .fa.fa-times-rectangle-o:before {
2124 | content: "\f410"; }
2125 |
2126 | .fa.fa-bandcamp {
2127 | font-family: 'Font Awesome 5 Brands';
2128 | font-weight: 400; }
2129 |
2130 | .fa.fa-grav {
2131 | font-family: 'Font Awesome 5 Brands';
2132 | font-weight: 400; }
2133 |
2134 | .fa.fa-etsy {
2135 | font-family: 'Font Awesome 5 Brands';
2136 | font-weight: 400; }
2137 |
2138 | .fa.fa-imdb {
2139 | font-family: 'Font Awesome 5 Brands';
2140 | font-weight: 400; }
2141 |
2142 | .fa.fa-ravelry {
2143 | font-family: 'Font Awesome 5 Brands';
2144 | font-weight: 400; }
2145 |
2146 | .fa.fa-eercast {
2147 | font-family: 'Font Awesome 5 Brands';
2148 | font-weight: 400; }
2149 |
2150 | .fa.fa-eercast:before {
2151 | content: "\f2da"; }
2152 |
2153 | .fa.fa-snowflake-o {
2154 | font-family: 'Font Awesome 5 Free';
2155 | font-weight: 400; }
2156 |
2157 | .fa.fa-snowflake-o:before {
2158 | content: "\f2dc"; }
2159 |
2160 | .fa.fa-superpowers {
2161 | font-family: 'Font Awesome 5 Brands';
2162 | font-weight: 400; }
2163 |
2164 | .fa.fa-wpexplorer {
2165 | font-family: 'Font Awesome 5 Brands';
2166 | font-weight: 400; }
2167 |
2168 | .fa.fa-spotify {
2169 | font-family: 'Font Awesome 5 Brands';
2170 | font-weight: 400; }
2171 |
--------------------------------------------------------------------------------
/index_files/font-awesome/webfonts/fa-brands-400.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mkearney/rtweet-workshop/b8a59d4c07556bdb3cbe3d217a8a9228b326fc72/index_files/font-awesome/webfonts/fa-brands-400.eot
--------------------------------------------------------------------------------
/index_files/font-awesome/webfonts/fa-brands-400.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mkearney/rtweet-workshop/b8a59d4c07556bdb3cbe3d217a8a9228b326fc72/index_files/font-awesome/webfonts/fa-brands-400.ttf
--------------------------------------------------------------------------------
/index_files/font-awesome/webfonts/fa-brands-400.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mkearney/rtweet-workshop/b8a59d4c07556bdb3cbe3d217a8a9228b326fc72/index_files/font-awesome/webfonts/fa-brands-400.woff
--------------------------------------------------------------------------------
/index_files/font-awesome/webfonts/fa-brands-400.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mkearney/rtweet-workshop/b8a59d4c07556bdb3cbe3d217a8a9228b326fc72/index_files/font-awesome/webfonts/fa-brands-400.woff2
--------------------------------------------------------------------------------
/index_files/font-awesome/webfonts/fa-regular-400.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mkearney/rtweet-workshop/b8a59d4c07556bdb3cbe3d217a8a9228b326fc72/index_files/font-awesome/webfonts/fa-regular-400.eot
--------------------------------------------------------------------------------
/index_files/font-awesome/webfonts/fa-regular-400.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mkearney/rtweet-workshop/b8a59d4c07556bdb3cbe3d217a8a9228b326fc72/index_files/font-awesome/webfonts/fa-regular-400.ttf
--------------------------------------------------------------------------------
/index_files/font-awesome/webfonts/fa-regular-400.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mkearney/rtweet-workshop/b8a59d4c07556bdb3cbe3d217a8a9228b326fc72/index_files/font-awesome/webfonts/fa-regular-400.woff
--------------------------------------------------------------------------------
/index_files/font-awesome/webfonts/fa-regular-400.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mkearney/rtweet-workshop/b8a59d4c07556bdb3cbe3d217a8a9228b326fc72/index_files/font-awesome/webfonts/fa-regular-400.woff2
--------------------------------------------------------------------------------
/index_files/font-awesome/webfonts/fa-solid-900.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mkearney/rtweet-workshop/b8a59d4c07556bdb3cbe3d217a8a9228b326fc72/index_files/font-awesome/webfonts/fa-solid-900.eot
--------------------------------------------------------------------------------
/index_files/font-awesome/webfonts/fa-solid-900.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mkearney/rtweet-workshop/b8a59d4c07556bdb3cbe3d217a8a9228b326fc72/index_files/font-awesome/webfonts/fa-solid-900.ttf
--------------------------------------------------------------------------------
/index_files/font-awesome/webfonts/fa-solid-900.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mkearney/rtweet-workshop/b8a59d4c07556bdb3cbe3d217a8a9228b326fc72/index_files/font-awesome/webfonts/fa-solid-900.woff
--------------------------------------------------------------------------------
/index_files/font-awesome/webfonts/fa-solid-900.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mkearney/rtweet-workshop/b8a59d4c07556bdb3cbe3d217a8a9228b326fc72/index_files/font-awesome/webfonts/fa-solid-900.woff2
--------------------------------------------------------------------------------
/index_files/remark-css/robot.css:
--------------------------------------------------------------------------------
1 | .title-slide, title-slide h1, .title-slide h2, .title-slide h3,
2 | .remark-slide .title-slide,
3 | .remark-slide .title-slide h1,
4 | .remark-slide .title-slide h2,
5 | .remark-slide .title-slide h3 {
6 | background-color: #fff;
7 | color: #222;
8 | }
9 | .title-slide h3,
10 | .remark-slide .title-slide h3 {
11 | font-family: 'Roboto Condensed', 'Avenir Next', 'Helvetica Neue', 'Helvetica', sans-serif;
12 | font-weight: 400;
13 | padding-top: 15px;
14 | font-size: 28px;
15 | }
16 | .title-slide h3:nth-of-type(2),
17 | .remark-slide .title-slide h3:nth-of-type(2) {
18 | margin-top: 10px;
19 | font-size: 28px;
20 | }
21 | .title-slide table,
22 | .remark-slide .title-slide table {
23 | padding-top: 35px;
24 | }
25 | .title-slide i.fa,
26 | .remark-slide .title-slide i.fa {
27 | font-size: 2em;
28 | }
29 | a, a > code {
30 | color: #0051BA;
31 | text-decoration: none;
32 | }
33 | a:hover, a:hover > code {
34 | color: #d22;
35 | text-decoration: none;
36 | }
37 | .footnote {
38 | position: absolute;
39 | bottom: 3em;
40 | padding-right: 4em;
41 | font-size: 90%;
42 | }
43 | .remark-code-line-highlighted { background-color: #ffaaff; }
44 |
45 | .inverse {
46 | background-color: #0051BA;
47 | color: #fff;
48 | }
49 | .inverse h1, .inverse h2, .inverse h3 {
50 | color: #fff;
51 | }
52 | /* Two-column layout */
53 | .left-column {
54 | color: #777;
55 | width: 20%;
56 | height: 92%;
57 | float: left;
58 | }
59 | .left-column h2:last-of-type, .left-column h3:last-child {
60 | color: #000;
61 | }
62 | .right-column {
63 | width: 75%;
64 | float: right;
65 | padding-top: 1em;
66 | }
67 | .pull-left {
68 | float: left;
69 | width: 47%;
70 | }
71 | .pull-right {
72 | float: right;
73 | width: 47%;
74 | }
75 | .pull-right ~ * {
76 | clear: both;
77 | }
78 | img, video, iframe {
79 | max-width: 100%;
80 | }
81 | blockquote {
82 | border-left: solid 5px lightgray;
83 | padding-left: 1em;
84 | }
85 | table {
86 | margin: auto;
87 | border-top: 1px solid #222;
88 | border-bottom: 1px solid #222;
89 | }
90 | table thead th { border-bottom: 1px solid #222; }
91 | th, td { padding: 2px 5px; }
92 | thead, tfoot, tr:nth-child(even) { background: #f0f0f0 }
93 |
94 | @page { margin: 0; }
95 | @media print {
96 | .remark-slide-scaler {
97 | width: 100%;
98 | height: 100%;
99 | transform: scale(1);
100 | top: 0;
101 | left: 0;
102 | }
103 | }
104 |
--------------------------------------------------------------------------------
/rtweet-workshop.Rproj:
--------------------------------------------------------------------------------
1 | Version: 1.0
2 |
3 | RestoreWorkspace: No
4 | SaveWorkspace: No
5 | AlwaysSaveHistory: Default
6 |
7 | EnableCodeIndexing: Yes
8 | UseSpacesForTab: Yes
9 | NumSpacesForTab: 2
10 | Encoding: UTF-8
11 |
12 | RnwWeave: Sweave
13 | LaTeX: pdfLaTeX
14 |
15 | AutoAppendNewline: Yes
16 | StripTrailingWhitespace: Yes
17 |
18 | BuildType: Package
19 | PackageUseDevtools: Yes
20 | PackageInstallArgs: --no-multiarch --with-keep.source
21 | PackageRoxygenize: rd,collate,namespace
22 |
--------------------------------------------------------------------------------
/script.Rmd:
--------------------------------------------------------------------------------
1 | ---
2 | title: "R Notebook"
3 | output: html_notebook
4 | ---
5 |
6 | ## Install
7 |
8 | - Install **{rtweet}** from [CRAN](https://cran.r-project/package=rtweet).
9 |
10 | ```{r}
11 | install.packages("rtweet")
12 | ```
13 |
14 | - Or install the **development version** from [Github](https://github.com/mkearney/rtweet).
15 |
16 | ```{r}
17 | #devtools::install_github("mkearney/rtweet")
18 | ```
19 |
20 | - Load **{rtweet}**
21 |
22 | ```{r tidy=FALSE}
23 | library(rtweet)
24 | ```
25 |
26 |
27 | ## httpuv
28 |
29 | To authorize rtweet's embedded **rstats2twitter** app via web browser, the **{httpuv}** pakage is required
30 |
31 | ```{r}
32 | ## install httpuv for browser-based authentication
33 | install.packages("httpuv")
34 | ```
35 |
36 |
37 | # 1. Searching for tweets
38 |
39 | ## `search_tweets()`
40 |
41 | Search for one or more keyword(s)
42 |
43 | ```{r}
44 | rds <- search_tweets("rstats data science")
45 | rds
46 | ```
47 |
48 |
49 |
50 | > *Note*: implicit `AND` between words
51 |
52 | ## `search_tweets()`
53 |
54 | Search for exact phrase
55 |
56 | ```{r}
57 | ## single quotes around doubles
58 | ds <- search_tweets('"data science"')
59 |
60 | ## or escape the quotes
61 | ds <- search_tweets("\"data science\"")
62 | ds
63 | ```
64 |
65 | ## `search_tweets()`
66 |
67 | Search for keyword(s) **and** phrase
68 |
69 | ```{r}
70 | rpds <- search_tweets("rstats python \"data science\"")
71 | rpds
72 | ```
73 |
74 | ## `search_tweets()`
75 |
76 | + `search_tweets()` returns 100 most recent matching tweets by default
77 |
78 | + Increase `n` to return more (tip: use intervals of 100)
79 |
80 | ```{r}
81 | rstats <- search_tweets("rstats", n = 10000)
82 | rstats
83 | ```
84 |
85 | > Rate limit of 18,000 per fifteen minutes
86 |
87 | ## `search_tweets()`
88 |
89 | **PRO TIP #1**: Get the firehose for free by searching for tweets by
90 | verified **or** non-verified tweets
91 |
92 | ```{r}
93 | fff <- search_tweets("filter:verified OR -filter:verified", n = 18000)
94 | fff
95 | ```
96 |
97 | Visualize second-by-second frequency
98 |
99 | ```{r}
100 | ts_plot(fff, "secs")
101 | ```
102 |
103 | ## `search_tweets()`
104 |
105 | **PRO TIP #2**: Use search operators provided by Twitter, e.g.,
106 |
107 | + filter by language and exclude retweets and replies
108 |
109 | ```{r}
110 | rt <- search_tweets("rstats", lang = "en",
111 | include_rts = FALSE, `-filter` = "replies")
112 | ```
113 |
114 | + filter only tweets linking to news articles
115 |
116 | ```{r}
117 | nws <- search_tweets("filter:news")
118 | ```
119 |
120 | ## `search_tweets()`
121 |
122 | + filter only tweets that contain links
123 |
124 | ```{r}
125 | links <- search_tweets("filter:links")
126 | links
127 | ```
128 |
129 | + filter only tweets that contain video
130 |
131 | ```{r}
132 | vids <- search_tweets("filter:video")
133 | vids
134 | ```
135 |
136 | ## `search_tweets()`
137 |
138 | + filter only tweets sent `from:{screen_name}` or `to:{screen_name}` certain users
139 |
140 | ```{r}
141 | ## vector of screen names
142 | users <- c("cnnbrk", "AP", "nytimes",
143 | "foxnews", "msnbc", "seanhannity", "maddow")
144 | tousers <- search_tweets(paste0("from:", users, collapse = " OR "))
145 | tousers
146 | ```
147 |
148 | ## `search_tweets()`
149 |
150 | + filter only tweets with at least 100 favorites or 100 retweets
151 |
152 | ```{r}
153 | pop <- search_tweets(
154 | "(filter:verified OR -filter:verified) (min_faves:100 OR min_retweets:100)")
155 | ```
156 |
157 | + filter by the type of device that posted the tweet.
158 |
159 | ```{r}
160 | rt <- search_tweets("lang:en", source = '"Twitter for iPhone"')
161 | ```
162 |
163 |
164 | ## `search_tweets()`
165 |
166 | **PRO TIP #3**: Search by geolocation (ex: tweets within 25 miles of Columbia, MO)
167 |
168 | ```{r}
169 | como <- search_tweets(
170 | geocode = "38.9517,-92.3341,25mi", n = 100
171 | )
172 | como
173 | ```
174 |
175 | ## `search_tweets()`
176 |
177 | Use `lat_lng()` to convert geographical data into `lat` and `lng` variables.
178 |
179 | ```{r}
180 | como <- lat_lng(como)
181 | par(mar = c(0, 0, 0, 0))
182 | maps::map("state", fill = TRUE, col = "#ffffff",
183 | lwd = .25, mar = c(0, 0, 0, 0),
184 | xlim = c(-96, -89), y = c(35, 41))
185 | with(como, points(lng, lat, pch = 20, col = "red"))
186 | ```
187 |
188 | > This code plots geotagged tweets on a map of Missouri
189 |
190 | ## `search_tweets()`
191 |
192 | **PRO TIP #4**: (for developer accounts only) Use `bearer_token()` to increase rate limit to 45,000 per
193 | fifteen minutes.
194 |
195 | ```{r}
196 | mosen <- search_tweets(
197 | "mccaskill OR hawley",
198 | n = 45000,
199 | token = bearer_token()
200 | )
201 | ```
202 |
203 |
204 | # 2. User timelines
205 |
206 | ## `get_timeline()`
207 |
208 | Get the most recent tweets posted by a user.
209 |
210 | ```{r}
211 | cnn <- get_timeline("cnn")
212 | ```
213 |
214 | ## `get_timeline()`
215 |
216 | Get up to the most recent 3,200 tweets (endpoint max) posted by multiple users.
217 |
218 | ```{r}
219 | nws <- get_timeline(c("cnn", "foxnews", "msnbc"), n = 3200)
220 | ```
221 |
222 | ## `ts_plot()`
223 |
224 | Group by `screen_name` and plot hourly frequencies of tweets.
225 |
226 | ```{r}
227 | nws %>%
228 | dplyr::group_by(screen_name) %>%
229 | ts_plot("hours")
230 | ```
231 |
232 |
233 | # 3. User favorites
234 |
235 | ## `get_favorites()`
236 |
237 | Get up to the most recent 3,000 tweets favorited by a user.
238 |
239 | ```{r}
240 | kmw_favs <- get_favorites("kearneymw", n = 3000)
241 | ```
242 |
243 | # 4. Lookup statuses
244 |
245 | ## `lookup_tweets()`
246 |
247 | ```{r}
248 | ## `lookup_tweets()`
249 | status_ids <- c("947235015343202304", "947592785519173637",
250 | "948359545767841792", "832945737625387008")
251 | twt <- lookup_tweets(status_ids)
252 | ```
253 |
254 |
255 | # 5. Getting friends/followers
256 |
257 | ## Friends/followers
258 |
259 | Twitter's API documentation distinguishes between **friends** and **followers**.
260 |
261 | + **Friend** refers to an account a given user follows
262 | + **Follower** refers to an account following a given user
263 |
264 | ## `get_friends()`
265 |
266 | Get user IDs of accounts **followed by** (AKA friends) [@jack](https://twitter.com/jack), the co-founder and CEO of Twitter.
267 |
268 | ```{r}
269 | fds <- get_friends("jack")
270 | fds
271 | ```
272 |
273 | ## `get_friends()`
274 |
275 | Get friends of **multiple** users in a single call.
276 |
277 | ```{r}
278 | fds <- get_friends(
279 | c("hadleywickham", "NateSilver538", "Nate_Cohn")
280 | )
281 | fds
282 | ```
283 |
284 | ## `get_followers()`
285 |
286 | Get user IDs of accounts **following** (AKA followers) [@mizzou](https://twitter.com/mizzou).
287 |
288 | ```{r}
289 | mu <- get_followers("mizzou")
290 | mu
291 | ```
292 |
293 | ## `get_followers()`
294 |
295 | Unlike friends (limited by Twitter to 5,000), there is **no limit** on the number of followers.
296 |
297 | To get user IDs of all 55(ish) million followers of @realDonaldTrump, you need two things:
298 |
299 | 1. A stable **internet** connection
300 | 1. **Time** – approximately five and a half days
301 |
302 | ## `get_followers()`
303 |
304 | Get all of Donald Trump's followers.
305 |
306 | ```{r}
307 | ## get all of trump's followers
308 | rdt <- get_followers(
309 | "realdonaldtrump",
310 | n = 56000000,
311 | retryonratelimit = TRUE
312 | )
313 | ```
314 |
315 |
316 |
317 | # 6. Lookup users
318 |
319 | ## `lookup_users()`
320 |
321 | Lookup users-level (and most recent tweet) associated with vector of `user_id` or `screen_name`.
322 |
323 | ```{r}
324 | ## vector of users
325 | users <- c("hadleywickham", "NateSilver538", "Nate_Cohn")
326 |
327 | ## lookup users twitter data
328 | usr <- lookup_users(users)
329 | usr
330 | ```
331 |
332 | ## `search_users()`
333 |
334 | It's also possible to search for users. Twitter will look for matches in user names, screen names, and profile bios.
335 |
336 | ```{r}
337 | ## search for breaking news accounts
338 | bkn <- search_users("breaking news")
339 | bkn
340 | ```
341 |
342 |
343 | # 7. Lists
344 |
345 | ## `lists_memberships()`
346 |
347 | + Get an account's list memberships (lists that include an account)
348 |
349 | ```{r}
350 | ## lists that include Nate Silver
351 | nsl <- lists_memberships("NateSilver538")
352 | nsl
353 | ```
354 |
355 | ## `lists_members()`
356 |
357 | + Get all list members (accounts on a list)
358 |
359 | ```{r}
360 | ## all members of congress
361 | cng <- lists_members(owner_user = "cspan", slug = "members-of-congress")
362 | cng
363 | ```
364 |
365 |
366 |
367 | # 8. Streaming tweets
368 |
369 | ## `stream_tweets()`
370 |
371 | **Sampling**: small random sample (`~ 1%`) of all publicly available tweets
372 |
373 | ```{r}
374 | ss <- stream_tweets("")
375 | ```
376 |
377 | **Filtering**: search-like query (up to 400 keywords)
378 |
379 | ```{r}
380 | sf <- stream_tweets("mueller,fbi,investigation,trump,realdonaldtrump")
381 | ```
382 |
383 | ## `stream_tweets()`
384 |
385 | **Tracking**: vector of user ids (up to 5000 user_ids)
386 |
387 | ```{r}
388 | ## user IDs from congress members (lists_members ex output)
389 | st <- stream_tweets(cng$user_id)
390 | ```
391 |
392 | **Location**: geographical coordinates (1-360 degree location boxes)
393 |
394 | ```{r}
395 | ## world-wide bounding box
396 | sl <- stream_tweets(c(-180, -90, 180, 90))
397 | ```
398 |
399 | ## `stream_tweets()`
400 |
401 | The default duration for streams is thirty seconds `timeout = 30`
402 |
403 | + Specify specific stream duration in seconds
404 |
405 | ```{r}
406 | ## stream for 10 minutes
407 | stm <- stream_tweets(timeout = 60 * 10)
408 | ```
409 |
410 | ## `stream_tweets()`
411 |
412 | Stream JSON data directly to a text file
413 |
414 | ```{r}
415 | stream_tweets(timeout = 60 * 10,
416 | file_name = "random-stream-2018-11-13.json",
417 | parse = FALSE)
418 | ```
419 |
420 | Read-in a streamed JSON file
421 |
422 | ```{r}
423 | rj <- parse_stream("random-stream-2018-11-13.json")
424 | ```
425 |
426 | ## `stream_tweets()`
427 |
428 | Stream tweets indefinitely.
429 |
430 | ```{r}
431 | stream_tweets(timeout = Inf,
432 | file_name = "random-stream-2018-11-13.json",
433 | parse = FALSE)
434 | ```
435 |
436 | ## `lookup_coords()`
437 |
438 | A useful convenience function–though it now requires an API key–for quickly looking up coordinates
439 |
440 | ```{r}
441 | ## stream tweets sent from london
442 | luk1 <- stream_tweets(q = lookup_coords("London, UK"), timeout = 60)
443 |
444 | ## search tweets sent from london
445 | luk2 <- search_tweets(geocode = lookup_coords("London, UK"), n = 1000)
446 | ```
447 |
448 |
449 |
450 | # Analyzing Twitter data
451 |
452 |
453 | ## Data set
454 |
455 | For these examples, let's gather a data set of iPhone and Android users
456 |
457 | ```{r}
458 | iphone_android <- search_tweets(
459 | '(filter:verified OR -filter:verified) AND (source:"Twitter for iPhone" OR source:"Twitter for Android")',
460 | include_rts = FALSE,
461 | n = 18000
462 | )
463 |
464 | ## view breakdown of tweet source (device)
465 | table(iphone_android$source)
466 | ```
467 |
468 | ## Text processing
469 |
470 | Tokenize tweets [into words]
471 |
472 | ```{r}
473 | ## tokenize each tweet into words vecotr
474 | wds <- tokenizers::tokenize_tweets(iphone_android$text)
475 |
476 | ## collapse back into stirngs
477 | txt <- purrr::map_chr(wds, paste, collapse = " ")
478 |
479 | ## get sentiment using afinn dictionary
480 | iphone_android$sent <- syuzhet::get_sentiment(
481 | iphone_android$text, method = "afinn"
482 | )
483 | ```
484 |
485 | ## Compare groups
486 |
487 | Group by source and summarize some numeric variables
488 |
489 | ```{r}
490 | iphone_android %>%
491 | group_by(source) %>%
492 | summarise(sent = mean(sent, na.rm = TRUE),
493 | avg_rt = mean(retweet_count, na.rm = TRUE),
494 | avg_fav = mean(favorites_count, na.rm = TRUE),
495 | tweets = mean(statuses_count, na.rm = TRUE),
496 | friends = mean(retweet_count, na.rm = TRUE),
497 | followers = mean(retweet_count, na.rm = TRUE),
498 | ff_rat = (friends + 1) / (friends + followers + 1)
499 | )
500 | ```
501 |
502 | ## Features
503 |
504 | Easily automate feature extraction for Twitter data.
505 |
506 | ```{r}
507 | ## install package
508 | remotes::install_github("mkearney/textfeatures")
509 |
510 | ## feature extraction
511 | tf <- textfeatures::textfeatures(iphone_android)
512 |
513 | ## add dependent variable
514 | tf$y <- tweet_source_data$source == "Twitter for iPhone"
515 | ```
516 |
517 | ## Machine learning
518 |
519 | Run a boosted model
520 |
521 | ```{r}
522 | ## load gbm and estimate model
523 | library(gbm)
524 | m1 <- gbm(y ~ ., data = tf[1:15000, -1], n.trees = 200)
525 | #summary(m1)
526 |
527 | ## generate predictions
528 | p <- predict(m1, newdata = tf[15001:nrow(tf), -1],
529 | type = "response", n.trees = 200)
530 |
531 | ## how'd we do?
532 | table(p > .50, tf$y[15001:nrow(tf)])
533 | ```
534 |
535 | ## Tweetbotornot
536 |
537 | A package designed to estimate the probability of an account being a bot.
538 |
539 | ```{r}
540 | ## install from Github
541 | remotes::install_github("mkearney/tweetbotornot")
542 |
543 | ## estimate some accounts
544 | bp <- tweetbotornot::tweetbotornot(c(
545 | "kearneymw",
546 | "realdonaldtrump",
547 | "netflix_bot",
548 | "tidyversetweets",
549 | "thebotlebowski")
550 | )
551 | bp
552 | ```
553 |
554 |
555 |
556 |
--------------------------------------------------------------------------------