tidyverse/0000755000176200001440000000000014036036602012270 5ustar liggesuserstidyverse/NAMESPACE0000644000176200001440000000143414035650136013514 0ustar liggesusers# Generated by roxygen2: do not edit by hand S3method(print,tidyverse_conflicts) S3method(print,tidyverse_logo) export(tidyverse_conflicts) export(tidyverse_deps) export(tidyverse_logo) export(tidyverse_packages) export(tidyverse_sitrep) export(tidyverse_update) importFrom(broom,tidy) importFrom(dbplyr,db_collect) importFrom(forcats,fct_c) importFrom(ggplot2,ggplot) importFrom(haven,read_sas) importFrom(hms,hms) importFrom(httr,GET) importFrom(jsonlite,fromJSON) importFrom(lubridate,ymd) importFrom(magrittr,"%>%") importFrom(modelr,add_predictions) importFrom(pillar,pillar) importFrom(readr,read_csv) importFrom(readxl,read_excel) importFrom(reprex,reprex) importFrom(rlang,qq_show) importFrom(rvest,html_node) importFrom(stringr,str_c) importFrom(tidyr,spread) importFrom(xml2,read_xml) tidyverse/LICENSE0000644000176200001440000000005714035647323013306 0ustar liggesusersYEAR: 2021 COPYRIGHT HOLDER: tidyverse authors tidyverse/README.md0000644000176200001440000001132414035650135013552 0ustar liggesusers # tidyverse [![CRAN status](https://www.r-pkg.org/badges/version/tidyverse)](https://cran.r-project.org/package=tidyverse) [![R-CMD-check](https://github.com/tidyverse/tidyverse/workflows/R-CMD-check/badge.svg)](https://github.com/tidyverse/tidyverse/actions) [![Codecov test coverage](https://codecov.io/gh/tidyverse/tidyverse/branch/master/graph/badge.svg)](https://codecov.io/gh/tidyverse/tidyverse?branch=master) ## Overview The tidyverse is a set of packages that work in harmony because they share common data representations and API design. The **tidyverse** package is designed to make it easy to install and load core packages from the tidyverse in a single command. If you’d like to learn how to use the tidyverse effectively, the best place to start is [R for data science](https://r4ds.had.co.nz). ## Installation ``` r # Install from CRAN install.packages("tidyverse") # Or the development version from GitHub # install.packages("devtools") devtools::install_github("tidyverse/tidyverse") ``` ## Usage `library(tidyverse)` will load the core tidyverse packages: - [ggplot2](https://ggplot2.tidyverse.org), for data visualisation. - [dplyr](https://dplyr.tidyverse.org), for data manipulation. - [tidyr](https://tidyr.tidyverse.org), for data tidying. - [readr](https://readr.tidyverse.org), for data import. - [purrr](https://purrr.tidyverse.org), for functional programming. - [tibble](https://tibble.tidyverse.org), for tibbles, a modern re-imagining of data frames. - [stringr](https://github.com/tidyverse/stringr), for strings. - [forcats](https://github.com/tidyverse/forcats), for factors. You also get a condensed summary of conflicts with other packages you have loaded: ``` r library(tidyverse) #> ── Attaching packages ─────────────────────────────────────── tidyverse 1.3.1 ── #> ✓ ggplot2 3.3.3 ✓ purrr 0.3.4 #> ✓ tibble 3.1.0 ✓ dplyr 1.0.5 #> ✓ tidyr 1.1.3 ✓ stringr 1.4.0 #> ✓ readr 1.4.0 ✓ forcats 0.5.1 #> ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ── #> x dplyr::filter() masks stats::filter() #> x dplyr::lag() masks stats::lag() ``` You can see conflicts created later with `tidyverse_conflicts()`: ``` r library(MASS) #> #> Attaching package: 'MASS' #> The following object is masked from 'package:dplyr': #> #> select tidyverse_conflicts() #> ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ── #> x dplyr::filter() masks stats::filter() #> x dplyr::lag() masks stats::lag() #> x MASS::select() masks dplyr::select() ``` And you can check that all tidyverse packages are up-to-date with `tidyverse_update()`: ``` r tidyverse_update() #> The following packages are out of date: #> * broom (0.4.0 -> 0.4.1) #> * DBI (0.4.1 -> 0.5) #> * Rcpp (0.12.6 -> 0.12.7) #> Update now? #> #> 1: Yes #> 2: No ``` ## Packages As well as the core tidyverse, installing this package also installs a selection of other packages that you’re likely to use frequently, but probably not in every analysis. This includes packages for: - Working with specific types of vectors: - [hms](https://github.com/tidyverse/hms), for times. - [lubridate](https://github.com/tidyverse/lubridate), for date/times. - Importing other types of data: - [feather](https://github.com/wesm/feather), for sharing with Python and other languages. - [haven](https://github.com/tidyverse/haven), for SPSS, SAS and Stata files. - [httr](https://github.com/r-lib/httr), for web apis. - [jsonlite](https://github.com/jeroen/jsonlite) for JSON. - [readxl](https://github.com/tidyverse/readxl), for `.xls` and `.xlsx` files. - [rvest](https://github.com/tidyverse/rvest), for web scraping. - [xml2](https://github.com/r-lib/xml2), for XML. - Modelling - [modelr](https://github.com/tidyverse/modelr), for modelling within a pipeline - [broom](https://github.com/tidymodels/broom), for turning models into tidy data ## Code of Conduct Please note that the tidyverse project is released with a [Contributor Code of Conduct](https://tidyverse.tidyverse.org/CODE_OF_CONDUCT.html). By contributing to this project, you agree to abide by its terms. tidyverse/man/0000755000176200001440000000000014036031204013034 5ustar liggesuserstidyverse/man/tidyverse_logo.Rd0000644000176200001440000000074513200154202016363 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/logo.R \name{tidyverse_logo} \alias{tidyverse_logo} \title{The tidyverse logo, using ASCII or Unicode characters} \usage{ tidyverse_logo(unicode = l10n_info()$`UTF-8`) } \arguments{ \item{unicode}{Whether to use Unicode symbols. Default is \code{TRUE} on UTF-8 platforms.} } \description{ Use \code{\link[crayon:strip_style]{crayon::strip_style()}} to get rid of the colors. } \examples{ tidyverse_logo() } tidyverse/man/tidyverse_update.Rd0000644000176200001440000000122613505647641016726 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/update.R \name{tidyverse_update} \alias{tidyverse_update} \title{Update tidyverse packages} \usage{ tidyverse_update(recursive = FALSE, repos = getOption("repos")) } \arguments{ \item{recursive}{If \code{TRUE}, will also list all dependencies of tidyverse packages.} \item{repos}{The repositories to use to check for updates. Defaults to \code{getOptions("repos")}.} } \description{ This will check to see if all tidyverse packages (and optionally, their dependencies) are up-to-date, and will install after an interactive confirmation. } \examples{ \dontrun{ tidyverse_update() } } tidyverse/man/tidyverse-package.Rd0000644000176200001440000000200114035650110016725 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/tidyverse.R \docType{package} \name{tidyverse-package} \alias{tidyverse} \alias{tidyverse-package} \title{tidyverse: Easily Install and Load the 'Tidyverse'} \description{ \if{html}{\figure{logo.png}{options: align='right' alt='logo' width='120'}} The 'tidyverse' is a set of packages that work in harmony because they share common data representations and 'API' design. This package is designed to make it easy to install and load multiple 'tidyverse' packages in a single step. Learn more about the 'tidyverse' at . } \seealso{ Useful links: \itemize{ \item \url{https://tidyverse.tidyverse.org} \item \url{https://github.com/tidyverse/tidyverse} \item Report bugs at \url{https://github.com/tidyverse/tidyverse/issues} } } \author{ \strong{Maintainer}: Hadley Wickham \email{hadley@rstudio.com} Other contributors: \itemize{ \item RStudio [copyright holder, funder] } } \keyword{internal} tidyverse/man/tidyverse_deps.Rd0000644000176200001440000000076013505647641016401 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/update.R \name{tidyverse_deps} \alias{tidyverse_deps} \title{List all tidyverse dependencies} \usage{ tidyverse_deps(recursive = FALSE, repos = getOption("repos")) } \arguments{ \item{recursive}{If \code{TRUE}, will also list all dependencies of tidyverse packages.} \item{repos}{The repositories to use to check for updates. Defaults to \code{getOptions("repos")}.} } \description{ List all tidyverse dependencies } tidyverse/man/tidyverse_conflicts.Rd0000644000176200001440000000121113040245243017404 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/conflicts.R \name{tidyverse_conflicts} \alias{tidyverse_conflicts} \title{Conflicts between the tidyverse and other packages} \usage{ tidyverse_conflicts() } \description{ This function lists all the conflicts between packages in the tidyverse and other packages that you have loaded. } \details{ There are four conflicts that are deliberately ignored: \code{intersect}, \code{union}, \code{setequal}, and \code{setdiff} from dplyr. These functions make the base equivalents generic, so shouldn't negatively affect any existing code. } \examples{ tidyverse_conflicts() } tidyverse/man/figures/0000755000176200001440000000000013505647641014522 5ustar liggesuserstidyverse/man/figures/logo.png0000644000176200001440000012256413505647641016202 0ustar liggesusersPNG  IHDRޫhgAMA a cHRMz&u0`:pQ<bKGD pHYs!7!73XztIME IDATxuǙ=VhYXfرl'% ܅xqbf[d1J U=3˻+9흩=EW.lܸbO2 =40ԅq'6ˌA:04Т%&cE .3ۘ:0Űb`O/_c1X}t߆E]|xagb/3ۏ.3ۈ0n>p?q`zC~<4.^f]f u`^'p9l~2]2_ԁq0p5^_fK.3%J]1| $bO2ưk. {n ,7n{i.S,/!vj߀k_  X }Y_Bt/._|MyPJFhSfIˌ|2_D¸%c;X!/t"^ Px/]fD7˫x'B@8l觩1@8lq,;i tYo <e&Xt:0\eRS0MEKsz?`$7`B!Ɩvꄌ_}x02#5]f!.4ctU | u>BJ G=n<0$>lZ&5~]CCHLWfܸq_DER` Bmmu5m. )`HEY|m 6,"i?n8..KARM{RRp@NPN,4MDT)>]B7!p!LmcaZ8:y<*=oc/slq2u)[Ÿčٹ^oɓq-70lX[{NL,%Lg?nB/xkiI.oSXAV ]2xѵeFU. T̴1|0U^z\qtSLԩs;{MkR*Nqɏc lvAKg| Kݦcw5,V,,tYxJ2c}Xe~3R#C ~Dc֣'J )A;|Y a-A|0n <8im@Sl.KN݄0,1Ӑ45 BRi9X~+^ ilRz>°"Ç| >J*6N ]O*rr-ª;>qtNHyXwFm Q_ٔRU°a=z@ ثKJ( G^DOȶ< 2rii^i8UIR |xz JPJiGH1K*BF@5r\f HmE9ee99 R*:¡XHDDrE"g0%nZv 3,5={p8t1~,ix6pԥX̛rq47j%`^ͮ1=XZ^3#pi J-ñ|p/}]BA],QgٹZ>_(=)&%~a*;$U-)( 3әXI.×e u?%JR[F0h7QM#2q&+{ab!5ʃcl moc4 x[BKgAn>]Nua c)Ku\! 1iS]-Iׄsr%ze)zCML$Ny WqVEi}h!@m̘>+"kKw yX ";]f(u)[|wc,,ٹf#p#'ȜO`+=a$i( st"e +wu5k:3fjJK/tѴV`yoB)*ƍ.3r;])Xe~錫Bhk JuJhH"+7vh!i:l֙tY ƍ&330!?fdd8ҙ P eآZ¸EXb(4hh0Ѐ{ +ADB&ܽǑQ Wфޞ)%c&mmm%!'EAa2 Bnb?OBw) uX !ihQ]J7MКqy 8DvRXg|,PCd7m^3q6H4Jˌ@ةX`?Z} Dt9X旑2 >HCNJ -љXs sI,Ov|<;de;lGn E]XIi?.D Rx2sz!h}*f:5M0Oc =(D9boA. `fcI?Jubk@(ʸZpրY} tV#*h21‰Jͮ& Gz1:W)vamnJiHXc2$RѣKxw1md*{$JdS%Jv^QJ擿@U?WM5&O>_@0Bv <3L5_BH.\pЏC)Mjۨ]V!Mgc8;+$JBٻmd] tM`9f`߈ycp i`26*HRA3dRXe,-4h0 U:BN&V8x1%3p2뱺}4n2+w4n8Re2l;҄`\NqG*/oR~(BE&|Ken,G5&̍:.! b0MlYf;u^Ec[*fcxy T_cT4t`S% -~ɮ ~z AW!#0kYAH*ZbwzPlc- |<^{clX鼿X1TI.7 }7긱L: ,*!Kt xzyNCoh(..$`n hIv6u&B(?k#/@)rT$Cwydgg2sT|><'#mdZ[7Ow R.F._I); >r/&G ^w:ίVGX ȃ"ϙV2 % WV)Eaa~=˗/S<˜={>ٛڬm(MG~^7~aMdǃE)+/#AF);fHF*4M31sj2[HŜ\w:iw7 U< E]U-t}BVېq%)˯Zw Q#J=EL@+;@=z (jN L1f 9mVSSbR̠45ilڂK̙3}ƎMcc3O<,~of¤aA =99|~"HH(N~|v.vb/~HS~ W4Jn_\(-ȉygsYΞ9?($g 9ViP߅nG+(,!h@UlEIjv)( ;;ycI?QuyV{0yӢXc7D )f%ܼlv+mx0W G@2i޿QgϥFJI6>s+:kWw&P%/U "A8,odkWg0k*cPRE:|ƥa1Y)7 !CM K:IO>v:n)6B6|2*G=-UHo[][b_  ѴLn) z, H6  GTg+q\# >L3]MO<| < !Lb ӂ(Prq(0\{0WTAJYuj`FT02JQ N5HrZfzNq76[{7uӰxXnnԧK7XxwTRxC4i=}O{ܢݰ$ShqhKEScKf':"Sĵ'~E)xDɿPGA[Ǘ>B:Nv(ƽ́ @?f[KTW(l'}c%,궸gv[쑁pXCX(%.a| !!/Do `!)r0ᴙ>%(CUKvz1|rk1Lh;}0`l'x1%Wyx9ߞhW%Dc+׊{3gi})^0`mB؝w&ׂ2tPXIf#8F-߀chh+XRוΝ5^jϢZ{jb UU5Hh Nm$Tigi,NOn]E 'g1 'gkm#%8 yrW5ifX)VᲐEʫEW!ul'C&^opnױJBp󀛱lӀW7n XXvok/ƥnk(dԨ|c2uDvCkk[F%y(S6}5h"4Ájטv>|";iS֚T^h*3u\䇯uԽnVCuW$ɤJsIɘ&0IO\,!8g b鏖;8e~cۢ/ђzOᱵFkQb!x>,;깫 @s0iG:+tņg|/'j$T`Y]g-MUQUIhJ|}ew1[H_ahc)**H$~K1"I_.L=% ߾&eߘpi%DAg +l70De~B[ؿ0C)ž}@+t Q,-FJ)t&OttI"b/JG *3pZI mdvvЃtB6o~?>$pL-7Ͷs'oyuNM%hK {N` ^XAF3a'S0+BX}iwAP 'M_4L"fs h#B$$*Wvtzv $ #G6 _ qlKȍ@kEx[PY9Hv1ol/f޼+x SN# nV9Fk"}=+!9ƃaC -߉Eq }CbC٢3ŲŤec2!lڴ# 4hs2 3r4zpM{NZBٜD&\te<hKzcQ:M"G)(3s997DMy`5Ʊ{yB㕗qՊlڸ@ V6c6]m(=4Bw]T Fsl;'2=xBV0Khm P7{%ߣVN&(#w#i/wޞEv(gf_P75M[H֫GkIxpY=&W)=7gklv7m/Jm<ێ.O&l"hV $+ەpD7n\?j$룪HOI$tk dpp9_ao}‰ٝ TF6w2rqjz׮X='uzNSP%X4Ƙ$ԙ+nANYqpmSf6~G71.N]mzFiWjc$pMO"%Ԧ8W~*B?yHX⍂gf:yލ I`8=t:s0gۆJA"roQg V&bF{x4dFR"H`Lx6neg0A_9uX5MgO΅Tr\_b˟&S4V| 9! ~4,!E0Z"^j^@kPpGO~"? S#Bxfsp\rAzZ6µ~ؖMx6^PiJOG?~<7fMWhOMj FP'"Xýl+L(PV:9Skp`(nsvb֬i VDEEuMa"`xb:/z([f9 -3m\THfGF/,gA\LqV7)NӴ23<vg`!>H礬#FL~Hf5 +Ut8ll¦Em{SJea!bNG+ [kx[8mU<'#^F EJ$Jhh:dk_!o6܅gV6Zѣ(QGK߶}` Am]=eL0`0̱̣ R47R &#-(Q2Z׷KRFZQuV'1\1:B2ۅD"*k"_g߾C5X$UQZgt"Զ0Ph9ŨnF6W:PG͔3裪Wf?Bp CB؝HjSdw-pPqAx!{ol7nw' N,4dDh|=ȠB$}- QyiI (tΖ|`~pM٦ l}"ʼֿ{_mdνxmlܸm[w%>;9{ZU i1i!ze^)eٖ{٤)e ,%L[_-&HGJ7c!3uv%* 39t;1zTV\GiZG鉟Ja#3rWT06S񞉊s^t!paŞR,.;0mI$6؂Çs|9#F … %3p8,Xx%ӦMf>]ZEXzMJ/D-DoPAk vTЦRpTQ&Ax`h3پm7@04Xt2#x=mPӨ Bk? 2HD]JMmNA}o lMhkq4MWJ꫗Ųe 7ӧ \RqXH)U_J ip4CPPh9b ]9^8 ^|lwO:ţM45w/%O4vn/GDNs`) ^~ f~ x5vQ3Iw:vI@aDvHbٰ*1 :XOjFDARP4M 4sKJIFlBv˖-;z-`˞vBs#= (`a&jV%j9ذG]N;};Їĉ㈱=+?<|m䭦t+SX] ;'%6ŋx*,r)̅W܂^_{U6]"ӀGCw#KMx<,Nԁ 'O…r +Сc JsMӘ3wwqW^9ܹWE<̫#t#gUXRd@"x?W9Ã̄)26u/< M=0@DWfptw:,$p>Rdw(>6S!;n\ibLC_1c̢#[MQuPU#0"2>jk>vMH ?? ȁBPUU޽8|8>j/; aڃ*s83gN_4ȑ#:m;wb.LNC%Bh,d:ߗ<Ҳm~82#[IFv.{C+pYEȊe5*cm+׸j);bppmbOK~Pn%r.@i2&ȘKBB>Zwcx;L꺆a:KIJa *k~iW 9,&BCf*Bo@VEzҚۀk!+-Udsh0#BI%we17e R+-v' (@@ٻqHL*fSh؋>~{UTR+ybPX hdWTHF)|ĴHۂL)"C4`z/zN@vt쬎؇cMv$ُ~kp݂ߏ*^ WX )8Gy\!z` *4]$.-ugR l;ۂ $i:e8uћJEP\RUnGNJٮ":/mm~vO(5>aw4`? Em] (`Kӫ/pm{{FNNVZ1ijpkϙT[0FEi3J&cO]z$ad[ 0]j>--ۏ߁c#CU 6̬c-|rkVmwP!i(D&)g,ͯUf-7fhn@/ e*|Z+=M-OI] Y9)6 va32C܎-UWRIcXO5Щ7!R{"uSx |GO׼'zw/~_ȅ Chob퐷}P;"MajppC(-捁hZJ-L><-p *^yG~5MX@qnM!ݥ5$* *:?o`81P^kA6Vm>1> nHh R6POI̟; 0QJ8q<I C444C HMaT$Y9b0LOsso+: +Ƨ?YvC0c{,]/s$9C(]+T߁l>3S1+SNH:mةvK9 ?5\wFQQ{䏏ʞa%,qu]=Sb7\ok&L/ݐLX/{~K^;SabP?c_^e:m\s ƍ䪫1c~2e{˥μ c)  `5Iq ?8Zx%}cTg/ƻ KW6_ґfQ"i6+[YLRxv'MV5׮Mږ8JӢMD9=HOfBT`I5Vl/Fu %ھh a(%R2v(>3aX̞=Q|IK#!MD&9֙=U9MC+Ad#J֤s*=pŕ,f (VGTYϝS98LG^RʐګRV7R6oźs y7;Ԝ>RJ}nN8Caa>] ]e{+3<zϝ gZ ]CF.+9Y \ƍ夭,ndd<{lNas:leg@BWJf u;Z5IKdӺwF= 8;pF9U4iwY17[ SVk޾ɚ{zm{mA-xDxl.Jk5iJnjvKCCcDCCc4M:^z0WzO=ʯ̩ᾷTd%n{9%<qJGJ` ŋI=*>\;^"R(Z7 ;\4wfs5Ce bIԣ&IB+,PreøaFYzTpkx̣RZu]B?FVW] ?m{YCSdN?S} הlB'ZoJ 5a5FMb)Łz9sNmm]J_^BEABQ(ek iBݹSP,&R:a Ǡɡ rd[@B@"c3$}FG煀րT8^Ö ͽ1B`&J*F `Æmlݺ`0ĎDH؉/ R !Ԇhwg/ Fk|.3G~ l$l&ѓ$\rxGII,݇ Af$fS吗 zqegx G{j*dQ!wu۔|cJYX[A4y饵8pLN>g"FB9êHK^ϠhK{'ÙZIRRiy5Mr]#֌:l;^ \<҅α'v(K+4ȡmwmLD)Qg*baKcNBI<މb4Zo|%?$q3* R"*t VOa9c >䬂`BFP:D$ \ gҼuu4-M@.!%3-'eD1N˒ 25&8YmR1`가N}S.~TV[4Dߗ%0+h#g @A4ʏb&MB@faҕ*Z)X8{;PqJAW=.K xҤ!**5P #]4dJK*$ 'xrWE*-E4W =Y_fk2R h}2FpLMmJ)F.+f MPSS7L41M)|?& IQd8+l`PZgLι:_\fړ9.-8|_` (8t_78v"u $,p4 :whL'D.GJ)22<|3ih,\4mq]u"}ܹ TU6SZZ`tvLWR0eNXR*fLBffFЯ2 5iƛ;PUY-^NJ C}c3SgXZFYqTȾI`H,$nCD #̗2 %;wG~6lF0ܹ iFAa 5A&0i-[ȪUKy꩗W4Amm=[Ʉ cȑ7lM2]&c)ѳB>䙝ֆ>CRJf̘if]1t]6$g?d"kn+C2]iI3GY,*2V#=+֮%2Mia9#RN'ލ96Evv&'jm͇i ;lC к23fLe+S8w3g =;1G˸L8,4M# Q]U޽X&:J$|/sbJ4*ʫزͤB\1k]IVVf\ڄBav˜W GذakgD0V\YĚQS]˦MߧgLaժe,\8cFia9zoc=J) zrlvk֭ی7 OlXb wyNvvU5|_NK)x|\s3gN(Á4%mm>+80[BNqq!˖-dL2\v;)imr۷fㆭ b(r2hllDRRR2|vbӧ>JeEMG-O/R:ٽkwsW/k2RJ%%M|ח=>t]73mGۮgh`7n {nc짿a߾Cnb)%#K_ YsQZxw?Nrr:l6NXfM㓟+W.%3'q5Wf-|K]]}sTNnzL>elH1rk8s^~yRJ1"Wżr`#/@2PHV?dWF zl?sRR\\Wy1u$U6-Zy/7W:v%K?&7| n+y+Qk~abrf<744a5hj.'O+_'SP¬< OaVK&XrR)-*9 +F&:])/_zu]UJꥵŋT rss4iJz9> Oj!uu lذů;^s/6!5ZEtN[[lX2)aÊMλ#SZZ%d1̜5I:M%]t?~L< OQ[Siδ((G* =~xپmwwf G0vSE׭BO4n!I_={t|J)N86>:1'N/掷,2ol̙[a\׭﹛lKH…s5se.g0i&wb#GNp l6]`ϞzFɈØ`^H+Xxq d-47ƙLJɄ cW>g^Mx>xs\P4t\Lɇ:I-wGȾ}hk!f).*䦛z#F 7;xq`^}u}Bo7 Ik-*,I0n3ixZZZqI [7n׿6fu׭{|^nv`CW4O!֬Yg,^SQQWRD.`7/ |"!-@;(\ys`ܸ1}<)%ƍffo!Μ9gMӨ{:9JFg+m4bᢹ)M\.'s{u??o5գ)4ywkDJo~gHSv:cWJ1|X1g/[~8+0g/Ы^xu?WţM 3il޼|臿>mG`nqů)x/p䙄<RM5Mmvu`Ea_Xs([>kupYr Grb@8q<̋?aٺeg5U\yL =dS$$u.?=>ARZh.r_ۘXBvlMCCb0 ^}#~?:^ާ'rŝ;QU۷gϖvR̿a6XWΌz9Zö]TVVRJ` o۝D0AcCS<3x:9XaWSS]׏Ӳ#Hno 77':6s圙c&oOT:x4SJ1lx1cǎYӥ$DxbP)%?a,ÇK49p%pˋd1+f`Ҥ=n()%Fd !xsNn97enjܹ{=cYoŅ(i%6}~־n;wVSTTT BUJ)w[Nmcν|4+PUծښ5W_ G;!)SLJJw{(NGJIEE`0@s]3*d PJ)?~ np `  im[_ASc3ma+QrՊ%8p|b Vg`0ĺ[꾔 wu8VZK/u:Xfy5'p`N7++ƶo4>)S'%a.;;'^SA}CUH4*y|cuw+ɓ}_Hyy%R>}BXp#/c ?u(wNua  0RΗ#Jp"хW 6-&ƪKcO=tpUmQisγxq;Ţ9/$F3gάxfXl͝8;;St4M~5V-M]8VE_sBzZs)_3 -[J)Mgx{fͼ=r0z\[M9$&icEJ\4-j6؃`OC1 rss:|0hllJyd^k:u={pk*܌S6}2vKI=wng{}떝}:4{ٸq 0ν *:T*j#^w 566qön*]ffӆu: º[O>$^TUU5|? ,: ;fM8Oϝw‹/~zHlv{F/n|&;a]4sęNX)aӫi4~ _4eRJ4N<ÿ}oBKskS,ǽ0_>}֬Y49=3*ނMX!ri{K'kNΗ3a89XVvV,tNq~muM8ukV -5: JF.7 olRBu.ڽ_q|QS _4j7~k{K6Xr)Ow_|ol8Z}G9߼yǥj+eNiv({C+R!:rͦ|=C޲M&NXR` ̺b:7mG%̟e'GƍhiiM ar_իS+ݲ_II4[ɊVC:>&p$ҩ8~A/~V1;bϞL4no 4M / _OBMhZ OSS}I sT$og4cws1q%%M40ƈa)BӰI ihkk233XrIoBXeӦ Kns9]NV^WN;V/'yaUᔕuQ!ƱcYO0lxה&h;vzSO:3e$ ä9RMNNV&A?vp@X6b[HaȋB+eeb&:uR-XR].rsIV4rHǾMŋK,[#^i\8_]卾aÊ0M#?vU7)!FVb+u+Jc9xϗ:iBV\OҤ"VV^t.#G\Ϟkl9C|5rU=gϔv H={rdJ !hnneMR1aX&O@vv͎4M֯)+ ì[p8پbt dq'[H!,;gsR2ixƎ=(iCA<'9rxɒ;8q&^ɵ`.hRڂ.uc.c@VΟ/RJƍҥ Zb yy)Bƍ!X2W2~XƍKPH2.wdɂxf\}ƪ C0 vQošfŗ<].'+^|i*3_թRE`RhZH DmEStrwRX$!=y=p&3ٵk_2 |¸&(ɽX;;̙ɤIy1`}ڹS~wVf̘'Nvf ݓ{:ʒ3r;ocd P):uҀWR*^}e  |7NdddO~ ދӂEP(6 goKP\S%+~+~u1cGq Ww>:tci.Tk;ѣnj  O\̫Q:'LC{rSa<ܫο{UH3ݽau#)%U  Q_Bt3_9%Kw-%JnNU4'&+;]{a V)zQivܹq|MM8wwK9ĠiԩLRdsw3Ldž4yg:H)YzWyVYJi1aXxΣGJ)/[''';֕a,&7Xr Ps-8~td]ykN{'V?{xpؑZaÊͽAmm= 4Mv&?/̬ l6~qFsB@m%]|!,]RW2*+kdgg1aX&L }5xco&wcGǥikWjRR83%''Ӂk̾r=3 C37}oj0nZVZY*t 1-޶"]Ǘ>͈:U(ΰaE ^ tWLO)%q3~xud3gMci=c{piްaE9i'vĤY@O{i۶s_cYcc{ӑ:>{lN3fN%33gE4.|ZHȜXl=S>xo8v?s[4Ml6=qc*oVo֡DhkQW3ػoϹs5}GA#Z^!Ӕ;H al‰vvPV|MBAA>%#b5%Oc̮u\P\T"b456SSSGk7:ϷkA-6MV,ᗏ|/njƏ?#i=y<"c, ͱ_6ZZ{ERkXx<.((##:Ehjnִ| V<< ȰMaa6_iTnjRX_䁥v\O),kv+=`jư#e]6v_(PL>;M(/^.>ۏ끚MpmP(LEE5UtmIQg(.hXE)Rrײ$K/̙!@lhYau)m]`m&2MYWLAnW{=FLoOJzYx/2M`&퐐"yg8}eLBwR,2s4/x8[oɿ>{yh9b%4M<7p5us4zGP[[Lo?4VB.. P`]`ex<8 !/Y捅X:2 IJH~4( , n_}wr<\Ͷe|҂^SNW g/y~O &yh5M0edv%ϗi㎄*.Sblna_#;5TB; ,bi|f܉l:fe0RVi^n8W6W\_Uo36 ,:R uUk0;wUH%㥄 z~$ͤvJO)EfVfa+y晗 B=X #Ⱦ}㽄%μV\֭;o`+tAϴ%E- _o!JK/`*k8vT~6QJF[:xfv<,[慗8x8اYe壕Lw6Bԩ̳T۪ uT2!izGQQ 1:BNdM0zd!GO>o@Fc1ؙ |;ųϽJuUm痠 + 6ngTT&S7[PU'PPPJ1zT q3rpn݅wϬa$瀳<}h\fΚʩgillqP&K=}rc)SN$;;ִRJs?~ ^G߿~,Z1+Wdp JG8~2ܣ$ }U/+AxPo nk\\=͎fǣqM|8 e RT|e0ݮx:JğHMm3UMҲ.'eU'eQ4XZRMUT$\;M3FaSp]ĉ>ӧ5R?5LOZXba]êUKD x}Ɣ+grw0aX;?q&4b"%v&Mt E#6qGf >g ]d'?úv"oPdhH >PˣqM| {ݛ%u;R:.QꚆa?xM4A$3 "a:M>IPBjjx׸K/y@kw60n/hg^8SV_9dAv)%ӧO>F?_p%?/(/Jj̈́\{J͛a^se;W?\?]`F5C%MhGxP7z a hF py4ƌ y4Hwd낿?JMIo Fd_b?v`HZ96zcg&Bygؾ}7)o;ob"^}eGLl GoKOɚ`MƊ*P@ti*cK t}x> n5nX']gt3߼=k,Ɇ͇_sb)l BK6OAVhjIfr|Ʃ.0խx-? |jdYi O<6 La(D!i08x(6ok ߷ym ^^y}-ĘWh)(WeSykQQAQB@MG?]]gim!y} ]D c N,%PL` 1-,Ǔ᡼2}!֐Lȸ@5!z@%lf6 2m׃Qs4nm'-8XfΤ7n Xw,5!͵ti̛?O|h,INv?S` Vi ( ߄<-u,oCe2[+(9L$#̈́ c;ӡTAe``b; NF8U==-w{IkmpR])a4pT{̰;ס-Jrĺ6Д' E-VG G+z b,]hPR hDxl"euЪ223:%kAٍV-pzVM͠ɧx#m6/|m~"vnͼ1[q[Ae`MZD5-WC:4MC p h4c֖& YWXeVW?mQZ}ӚAR3dSvxCqԄQ/yt}]=mR n:u4)x̀0-AusDiR@i?~TlN?V}c=&X*;+/Kc̙kod$I?/C=";oXU@nU>U <7 \MX`:ڰ.L&s@Jk.xLn`GXԠ-JnXM5Ab FXoliT5- ~<4 <%|-~x1M#:;wg_1}%ns=&Q3{œJ"~p8Sl{HRQF?qeӦH% n=dd @JEc:቏a9:)k>L@R˜v~aŠ. t FhqQnGNx|2r,$=XcjS hѱvq[B> >}QFX?;vEnn# y(&b¶SFNs~@ !8s&q9"#OJ ,Vp;oǟeݺ-C"^F4 #ܱ= x_H:*V"ESXQ*)A@WL! lP&#0f;7`)+!u7Jĉ3шv0B!hlh#GanGc(l<y$ Z(V4XPN )BRDlXR׾ieD Xj'J'R6mI2B)\Ԩ(݆"F]=/xRH~Ԩ9$|)1i:;DUUM/EFo4,G(3o9[kR"nN؝$h_2/Fձl;TXDO6o$RxQ2}>,!PL i:O,e8qWbK,|!8L`Yؿ?R٣< ڀR~dRnoP=2JP/nrV#\:-kߖ`)3(>;0QÂM._H( P'#Z?8$@1F ЗK&J1lf3y饵lڸ#ցBC=aU(?Z*)~pY 51_$ThN=+SNEi3ۨy#P(Ĭ/lP\D y}⛦~cʱV;>t_ĉ czHUh(G䏱{!͡auZR]zb"29(hgZ U$7"m0jlg x1X٬YY=RYvY #0J0FYp8⟵mmLID VVdHb4* hoD( O{qiPfkNdfj'Y2?<̟2X;Q(ͅ(?r6U-AATGu0M=(]׸kYf9[_ÈXFR0Xk\:ׁ!~:TQKǘQ4=H~~vCS[[=!VUV~'":/tHkߝ%"4NZBĴb'/*m`Kc/Jl G IL+02`[Z({8JDsVJ',-"}`x 8x{Y:)x=[[zdne=As%Z6MȲVxR"K'kNW>& 3sjeS 꾤@Z^ax Ŏ ƦYSNLi]>ty2> ̜>MӘ8~8 M⅗w_LN"];ֻk]͑xd5עZQJrg$WIDATI A=}%N|K s!{ܕ"a#hPFES,qSph\snA(S!2ld{V.-VҼw/g2 =P욓C/ۑՍc䤾Ӄ$$דUS0w,bۉh x9 UJ)lQِ2iBW V#Օ=pN0EDh/SjE ! _ɭs0x 6Mcq,0g!(i<(.=qթQ4aٽOc^K@;EVKV_4J|=b`Md縈D HrvnrSF0M(*ഒIɑ򓄍S@# '򮢉rf2֝ou/!Q+o{=x= !!6:`P=g`q%܏+!BP<,L'>!TCq@ 1xd7ZG*tO+2MF:2YSmlu%q,[g@4M\,D ~ǵlz?wܲ:~yc~|Р6`x ~OUW-`֝)sfrŒL.okzHx{0Rq25m2z(JET `'b3BbeyVUy/ " i*4SMNkzVjj4dJX=AG0Mf"ZbGLl{ \=c EԵ6؛l9#),؜O<"FxmmE6+E5xGۈc F" ̣Ky;.7%,378q;c|lƟԢt]c7;Jb뢠 Rڀ@02.#JrqP磭-LH-j޵;#'s U@E;F_{Z`ŝ/d\(7zzTqiu1Py h;} g9\++$o@N堰(O3])ـǁc;dGx<ZZ4>-LyCe}.\T4]BkGOVhm;3=Nw'$,0(aePEp@sgQgFQѹ^ J$!;d!{';:uy珷tU'@%9-cp@^$RKhצ&YJ?>ɽ $ bϢBkͥ?KG.gMyEh487ǁ-Y$ Lf`k- p{uaXXVթvf۰tr1IX[ }@ 4}cӽ!*\>uVVZ2pյR_018XߖAKCo$^蓂)7u<ѥcy捻G2Ĵ0'R |x KYf~R*I5!/0 SҨ+~bAsԷj(~? [ym+M艏2 ̩tmc#{)!T;^+-*bLBb%0;x`fp c$PSSlh~QrI~jj#DK&v|Z+W׺lٲ= @ 2u}} 2mC0Ǯie<:l u!95j8@\N )\?ŝeyOBk)< r^ӖUhJw$8u-a{qsӅ^JnA/AB!C?4>\rFWiDրwf iݥx|G/rjX6,|. hSLUؽ7ΩT,2CJՄ]#Hq~+:Z7L+{̼셽>A%>\.-ϢRNFel` &p9sՖB"@(]$cז9jİBj8 M$3q0'9Ur%0lڴud/ vHtYC=1N\nҲe<^])Ĝ^G%b02qS8X(->N;meNk^AM8uB K yz۶uσa:N Bc$bq:1xk $"/dщ;?Jo~]060_:4 ϘQ :^|aֿ?d]# lO&xJ0nA_=o!A1p~Ubmzִ?:E0I?zѴBQRFܴ[cjYZ f¦+FG1|{%7f!v/<\|1wYfo|Vew_eQ'ya[#$Xki̞]iY:xԩւ%%~\8"( 7i+6 o46c&[,dZшDU/eY|^AIϔ';\_[+;gl8p@ض޽Q'E ǒR?<޼% >AM=}OQ]\_9=뢦6BRQ_Rh#CkMXi][,x>Q75m߾FqMhnn}IN,Є<~ wv4oM aP/WA4cRjj#Cu7?#OBVE鉮^Ue,dٜ#>>f,`JVX͖(;9 ڶm;9r#GO~ICC mX~Ko|}ͭv X0݅Gn'74_qGF f&|yc@ʹ0U!сCtYIWH5c䃂HtmE%L~+QR?1-j@ hF-T +^^5I*%ָ8,3r='ߞɢzOm0z},ݥ2uB*V>18fI_Y,TD=='ܛB߀n`9wpФ9 Ri 'l#V[&%ꜿ[;Ѻ:^iKZzrb706b4캝\ ο "ټ7iZrP/l %/O%3O:=8c;[[yh.+w-2l'e72:PZYvgSVV9]3'>ލ \nTPH?5?~y71l҈,ŨlG!$]1088c} Ryg |H "`MvYWB.o}>7 i*8*,a;t_iH#U7~UGvH J1؍)bd,U<\N : ,%+-GO֢#BqEu0MaFeM`7- %[p哲Tj5:HA<]N""ޤotX[ʅmu5ӭ02] a3F>WOS XzkSq=p؋ƴl05llc+WGun]˼\0MGbࠄ%rB!55Q**x,Ma2і5)T[5([L5=tu8ޏQDmx+gQkYdjN9nnAxTrE ⊥H)Yb5"4}q8寮2Hā_Qo`j7I /-.él,)[Fm-#g54)4op,7˗x^*xyo6i6oꄼpp8č7^/~ K\o+Vs7GI__?^iBV0,2+n&SH#<*|X[-#>'e(E-Ie1V=?vԆdw;g ,n_aq1*RŕWsϝo$s`!Z?[q]رEyE * u$n i7 5Fhf]E/%9`oC3eeFuM#0i8ЌiKj?մ.o;_pĉ\zR&iVcGWRS[Ͳe_m[w}Q 6^XA<'Z~f)uQ|֛fMr@k4dWwD砺rj~$IdQ,֬ɱ.fL$=Gxg^d dL=z7Th ̬`?lO50>O)I5ϤBXM"K/}x àX+Pa^b` F zZi|ۇ?kӷ<RIl![_FŎtvMBJ~yY]ےo ×|i{#qw󦹘^@ &m9w[| m?@}t\.Ƨ?q**io?NSS oRsD eO0SĔ_3![܅7l1 y3d}lq9uXg( n[u]{V cAtuv[9<\]m`o4b|'Ok^˘5k<sy*Zӑіa٢#"2{{-ZM‡zqJJ,\x.^[˝wBUu HUqKYz+WF5o1o_'cG3)Q+p:2]m$z],'F"re<{%t˱5!F{?!.l ]vۍzz~WG4͛ï~͛{ S]&ts%QZNPe3)8]@d@{@05,^ .X$=}ܶF?ܹsӬ[**-U ;TihgPj4V8jDs@#>m01Rd8G?v;fٸ=VXEuu{2_E5"Q?ӣF >2ɫn:ȣ4Ȉ/Dy;/Y8RFŸe[r0ćy<3$ Hx(-AMae WܑP$)Fdp5òEGs! aXttV8˶Ӵ{xiӪKy5ۈaܞƶ(G?2e~HV[FgQfUNPXKq"|e`Oh"qc-,^6 jjYz{짳dc4COø$r0Q$(Ȉl -ӑI˭XimC=Rv{<4va]'T=צ$5ﻜcZ+ٳ6zXv3&ذ m"Z.JyE'8$jQ$pA' $[ G|=: #](kMGx~i NŹgדH$0 :;3g&`wαcmXvi535?b 3pVg2Eee9]tu짿?u<,7؎˥QR"ߟȱJXߞ:Gq#עۨ8N8w#ц4ymۦϜ93ԧ?NWW7eYM0s ;olHOM]Ad~ +p") ף䌔b>E۶ `ٜwټXs\RɎuEREYyRn~]W,p[<*;fbdGnG C7,,Sg=ܹ f#z=~!quF 'Q}_1)N7 <Ȑ-nCm;Pm%N-*17|wAό:~9;1u6ubDKFwe0goPB12] Q!d=8-SJmo}p9()P=/}+tuvrm@MyEpěoc';x3V3|MkTc}RЭTGeY:5{$ڛ(S(Bqg <V>܋jq)aߠ>iK$My  =TTrn࿒>,wQ$"oN.[log0)[\TT !eX7d[$ġHI4"{kP%٢aXtuέR.& J2I"'҈\) Z;Pj'H19P$$Cƶzǀq*ǀZ >,wrHI4"k;!鏣&1H#eY ?F+?_AEO [ `^Na_["y'?B _47](w*H) RԶZ-LEM((H#rX5q7@;Q$Gƶ%HG#G@s"y6>MAw@nGB5ce~>͐&qM_(?-?]zi%tEXtdate:create2018-12-11T09:12:29-06:00F%tEXtdate:modify2017-11-21T00:26:02-06:00IENDB`tidyverse/man/tidyverse_packages.Rd0000644000176200001440000000057713040245243017214 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/utils.R \name{tidyverse_packages} \alias{tidyverse_packages} \title{List all packages in the tidyverse} \usage{ tidyverse_packages(include_self = TRUE) } \arguments{ \item{include_self}{Include tidyverse in the list?} } \description{ List all packages in the tidyverse } \examples{ tidyverse_packages() } tidyverse/man/tidyverse_sitrep.Rd0000644000176200001440000000071013564620175016745 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/update.R \name{tidyverse_sitrep} \alias{tidyverse_sitrep} \title{Get a situation report on the tidyverse} \usage{ tidyverse_sitrep() } \description{ This function gives a quick overview of the versions of R and RStudio as well as all tidyverse packages. It's primarily designed to help you get a quick idea of what's going on when you're helping someone else debug a problem. } tidyverse/DESCRIPTION0000644000176200001440000000347414036036602014006 0ustar liggesusersPackage: tidyverse Title: Easily Install and Load the 'Tidyverse' Version: 1.3.1 Authors@R: c(person(given = "Hadley", family = "Wickham", role = c("aut", "cre"), email = "hadley@rstudio.com"), person(given = "RStudio", role = c("cph", "fnd"))) Description: The 'tidyverse' is a set of packages that work in harmony because they share common data representations and 'API' design. This package is designed to make it easy to install and load multiple 'tidyverse' packages in a single step. Learn more about the 'tidyverse' at . License: MIT + file LICENSE URL: https://tidyverse.tidyverse.org, https://github.com/tidyverse/tidyverse BugReports: https://github.com/tidyverse/tidyverse/issues Depends: R (>= 3.3) Imports: broom (>= 0.7.6), cli (>= 2.4.0), crayon (>= 1.4.1), dbplyr (>= 2.1.1), dplyr (>= 1.0.5), dtplyr (>= 1.1.0), forcats (>= 0.5.1), googledrive (>= 1.0.1), googlesheets4 (>= 0.3.0), ggplot2 (>= 3.3.3), haven (>= 2.3.1), hms (>= 1.0.0), httr (>= 1.4.2), jsonlite (>= 1.7.2), lubridate (>= 1.7.10), magrittr (>= 2.0.1), modelr (>= 0.1.8), pillar (>= 1.6.0), purrr (>= 0.3.4), readr (>= 1.4.0), readxl (>= 1.3.1), reprex (>= 2.0.0), rlang (>= 0.4.10), rstudioapi (>= 0.13), rvest (>= 1.0.0), stringr (>= 1.4.0), tibble (>= 3.1.0), tidyr (>= 1.1.3), xml2 (>= 1.3.2) Suggests: covr, feather, glue, knitr, rmarkdown, testthat VignetteBuilder: knitr Encoding: UTF-8 RoxygenNote: 7.1.1 Config/Needs/Website: tidyverse/tidytemplate NeedsCompilation: no Packaged: 2021-04-15 12:33:12 UTC; hadley Author: Hadley Wickham [aut, cre], RStudio [cph, fnd] Maintainer: Hadley Wickham Repository: CRAN Date/Publication: 2021-04-15 13:20:02 UTC tidyverse/build/0000755000176200001440000000000014036031203013357 5ustar liggesuserstidyverse/build/vignette.rds0000644000176200001440000000035114036031203015715 0ustar liggesusersu0 'H4&^<<.RȶHbNׯwc <S ߚxq)y]]XdA0lxzc6/!UqRa?8+[^Aٳ\-Dف✌a/xг \`U iF@]*;Jc=>j&زwvǯǯ9r0*E In my opinion, the _tidyverse R_ package provides two additional functionalities that are not discussed in the manuscript. Firstly, attaching the _tidyverse R_ package will ensure that tidyverse packages are attached in the correct order. This is not trivial for beginners (e.g. attaching the _plyr_ and _dplyr R_ packages in the incorrect order will cause issues). Secondly, attaching the _tidyverse R_ package will inform the user about namespace conflicts in a concise and informative manner. This is very useful when many tidyverse and non-tidyverse packages are attached. For instance, conflicts arise when the _tidyverse R_ package is attached following the _raster R_ package because both the _tidyr R_ package---a core tidyverse package---and the _raster R_ package contain `extract()` functions. I think the _tidyverse R_ package is exceptionally useful when evaluated on its standalone merits---that is, disregarding the usefulness of the other packages that comprise the tidyverse---and I think readers would benefit from knowing about these functionalities. We've added a sentence mentioning the "report" given when attaching the tidyverse package. But generally the order of packages within the tidyverse isn't so important (especially as over time we deliberately work to remove conflicts). > Perhaps it is worth providing a citation for R? I realize that many readers will likely already be familiar with R to some extent, but perhaps this be useful for readers that are less familiar with R? We've added a citation in the new related work paragraph, which also includes a more thorough description of the relaitonship between the tidyverse and base R. > This manuscript is about describing (i) the collection of packages referred to as the tidyverse (covered in the **Components** and **Philosophy** sections) and (ii) the _tidyverse R_ package (covered in the **Tidyverse package** section). The **Summary** section does a fantastic job of summarizing the tidyverse collection of packages but I feel like it could provide more information about the _tidyverse R_ package itself. Perhaps the purpose of the _tidyverse R_ package could be mentioned in the **Summary** section? We now mention the primary purpose (the ability to install all the packages with a single command) in the Summary section. > Is the _tidyverse R_ package not a core tidyverse package? It is not listed as a core package in Line 129. Maybe it would be useful to explicitly state if the _tidyverse R_ package is a core package or not? Since the tidyverse is a package that contains all of the other packages (core or otherwise), it doesn't fit into the categories given to its component packages. We've tried to clarify this by adding language re. its nature as a "meta" package. > I wonder if it is worth listing all of the non-core packages in the tidyverse? I suggest this for two reasons. Firstly, it is noted that one of the main purposes for the _tidyverse R_ package is that it provides a convenient method to install all of the packages in the tidyverse. Since there over ten non-core packages listed on the tidyverse package's REAMDE file, I suspect that listing all of these packages here would help the reader appreciate this functionality. Secondly, if one of the main aims of this manuscript is to describe the tidyverse, then I think it would be useful to list all of the packages that comprise the tidyverse. Although additional packages may be added to the tidyverse in the future, I think this would helpful to the reader. Now added to the "Tidyverse package" section. > Throughout manuscript: The **Reviewer Checklist** requires that "the authors describe how this software compares to other commonly-used packages". This manuscript does not make such comparisons. For instance, the tidyverse _readr R_ package provides functions for importing data similar to the _utils_ (`read.table()`) and _data.table R_ packages. If this manuscript were specifically about the _readr R_ package then I would expect such comparisons to be present, but I personally think that detailed comparisons for all tidyverse packages would distract from the main purpose of the manuscript. I raise this issue here because it is on the checklist. We've added a paragraph briefly discussing how the tidyverse ecosystem compares to other software, but feel the comparisons for the component packages would be out of scope for this paper (though we make more explicit mention of the compoinent-package references, now). > ", not to solve every possible problem". Perhaps a semicolon or em-dash would be more appropriate here than a comma? Changed to a semicolon. > Perhaps "downloading and installing" might be more appropriate than "downloading", since the following _R_ code uses `install.packages`? Thanks, we've made this change. > Perhaps "tidyverse version 1.2.0" to make it clear that this sentence is referring to a specific version of the _tidyverse R_ package? We've added this, as suggested. > Is the ordering of these packages significant? If not, perhaps these packages could be listed alphabetically? Packages are now listed in alphabetical order. > Perhaps "application programming interface (API)" instead of "API" for clarity? We don't believe that spelling API out makes it any easier to understand. > This is a bit nitpicky but I do not think that data are necessarily "stored" in an API? I would say that data are accessed through an API? Apologies if I'm just plain wrong. We've tried to work around this by saying "behind a web API". > My impression is that terms like "data frame" and "flat file" will be very useful for individuals with experience in programming _R_, _Python_, or _SQL_. If such individuals are the intended audience for this manuscript, then using such terminology is ideal. If a broader audience is intended, then perhaps using different terms (or clarifying these terms) will be useful (e.g. terms like "tabular" or "spreadsheet" may be more informative for a broader audience). We agree that "tabular" is a bit clearer than "flat," so we've changed this. > It appears that the term "data" is being used to refer to a singular entity, though some would argue that the term "data" is a plural. I do not know the grammar rules to which this journal subscribes, so I thought I would raise this point just in case. We've done our best to use the proper conjugations, but will defer to the editors, of course. > Perhaps it might be useful to provide the full name of the format that corresponds to these file extensions (e.g. tab-separated values for tsv)? We left this as is, since they're already in a parenthetical, and worry that "comma-separated values" might be more obscure than "csv." > I don't want to wade into the debate regarding if data is a singular or plural term, but I think that it might be useful to be consistent throughout the manuscript. My interpretation of the sentence containing the phrase "[...] import data stored in other common formats or retrieve it directly [...]" uses the term "data" to refer to both a plural and a singular entity. Perhaps the sentence might be clearer if written as something like "[...] import data from other common formats or the web directly"? Now changed to "make it possible to import data stored in other common formats or directly from the web." > The manuscript contains many embedded links which mean that URLs are not shown in the text (e.g. [like this](https://google.com)). I am not familiar enough with the correct reference style for this journal, so I thought I would raise this point just in case. As well as links to individual websites, all packages also have full citations. > Perhaps "core tidyr package provides" might be useful to be consistent with the rest of the manuscript (e.g. "the core readr package", line 139)? So added. > The reference for Bache & Wickham (2014) has a lower case "r" in the title when referring to the R programming language. Good catch! Change has been made. tidyverse/vignettes/paper.Rmd0000644000176200001440000003225214035650015016056 0ustar liggesusers--- title: 'Welcome to the Tidyverse' output: rmarkdown::html_vignette: keep_md: TRUE tags: - data science - R author: Hadley Wickham, Mara Averick, Jennifer Bryan, Winston Chang, Lucy D'Agostino McGowan, Romain François, Garrett Grolemund, Alex Hayes, Lionel Henry, Jim Hester, Max Kuhn, Thomas Lin Pedersen, Evan Miller, Stephan Milton Bache, Kirill Müller, Jeroen Ooms, David Robinson, Dana Paige Seidel, Vitalie Spinu, Kohske Takahashi, Davis Vaughan, Claus Wilke, Kara Woo, Hiroaki Yutani authors: - name: Hadley Wickham orcid: 0000-0003-4757-117X affiliation: 1 - name: Mara Averick orcid: 0000-0001-9659-6192 affiliation: 1 - name: Jennifer Bryan orcid: 0000-0002-6983-2759 affiliation: 1 - name: Winston Chang orcid: 0000-0002-1576-2126 affiliation: 1 - name: Lucy D'Agostino McGowan orcid: 0000-0001-7297-9359 affiliation: 8 - name: Romain François orcid: 0000-0002-2444-4226 affiliation: 1 - name: Garrett Grolemund orcid: 0000-0002-7765-6011 affiliation: 1 - name: Alex Hayes orcid: 0000-0002-4985-5160 affiliation: 12 - name: Lionel Henry orcid: 0000-0002-8143-5908 affiliation: 1 - name: Jim Hester orcid: 0000-0002-2739-7082 affiliation: 1 - name: Max Kuhn orcid: 0000-0003-2402-136X affiliation: 1 - name: Thomas Lin Pedersen orcid: 0000-0002-5147-4711 affiliation: 1 - name: Evan Miller affiliation: 13 - name: Stephan Milton Bache affiliation: 3 - name: Kirill Müller orcid: 0000-0002-1416-3412 affiliation: 2 - name: Jeroen Ooms affiliation: 14 - name: David Robinson affiliation: 5 - name: Dana Paige Seidel orcid: 0000-0002-9088-5767 affiliation: 10 - name: Vitalie Spinu orcid: 0000-0002-2138-3413 affiliation: 4 - name: Kohske Takahashi orcid: 0000-0001-6076-4828 affiliation: 9 - name: Davis Vaughan orcid: 0000-0003-4777-038X affiliation: 1 - name: Claus Wilke orcid: 0000-0002-7470-9261 affiliation: 6 - name: Kara Woo orcid: 0000-0002-5125-4188 affiliation: 7 - name: Hiroaki Yutani orcid: 0000-0002-3385-7233 affiliation: 11 affiliations: - name: RStudio index: 1 - name: cynkra index: 2 - name: Redbubble index: 3 - name: Erasmus University Rotterdam index: 4 - name: Flatiron Health index: 5 - name: Department of Integrative Biology, The University of Texas at Austin index: 6 - name: Sage Bionetworks index: 7 - name: Department of Biostatistics, Johns Hopkins Bloomberg School of Public Health index: 8 - name: Chukyo University, Japan index: 9 - name: Department of Environmental Science, Policy, & Management, University of California, Berkeley index: 10 - name: LINE Corporation index: 11 - name: University of Wisconsin, Madison index: 12 - name: None index: 13 - name: University of California, Berkeley index: 14 date: 19 November 2019 bibliography: paper.bib vignette: > %\VignetteIndexEntry{Welcome to the tidyverse} %\VignetteEngine{knitr::rmarkdown} %\VignetteEncoding{UTF-8} --- ```{r, include = FALSE} knitr::opts_chunk$set(collapse = TRUE, comment = "#>", width = 68) options(width = 68, cli.unicode = FALSE, cli.width = 68) ``` # Summary ![](tidyverse-logo.png){ width=120px } At a high level, the tidyverse is a language for solving data science challenges with R code. Its primary goal is to facilitate a conversation between a human and a computer about data. Less abstractly, the tidyverse is a collection of R packages that share a high-level design philosophy and low-level grammar and data structures, so that learning one package makes it easier to learn the next. The tidyverse encompasses the repeated tasks at the heart of every data science project: data import, tidying, manipulation, visualisation, and programming. We expect that almost every project will use multiple domain-specific packages outside of the tidyverse: our goal is to provide tooling for the most common challenges; not to solve every possible problem. Notably, the tidyverse doesn't include tools for statistical modelling or communication. These toolkits are critical for data science, but are so large that they merit separate treatment. The tidyverse package allows users to install all tidyverse packages with a single command. There are a number of projects that are similar in scope to the tidyverse. The closest is perhaps Bioconductor [@Bioconductor; @Huber2015], which provides an ecosystem of packages that support the analysis of high-throughput genomic data. The tidyverse has similar goals to R itself, but any comparison to the R Project [@R-core] is fundamentally challenging as the tidyverse is written in R, and relies on R for its infrastructure; there is no tidyverse without R! That said, the biggest difference is in priorities: base R is highly focussed on stability, whereas the tidyverse will make breaking changes in the search for better interfaces. Another closely related project is data.table [@R-datatable], which provides tools roughly equivalent to the combination of dplyr, tidyr, tibble, and readr. data.table prioritises concision and performance. This paper describes the tidyverse package, the components of the tidyverse, and some of the underlying design principles. This is a lot of ground to cover in a brief paper, so we focus on a 50,000-foot view showing how all the pieces fit together with copious links to more detailed resources. # Tidyverse package The tidyverse is a collection of packages that can easily be installed with a single "meta"-package, which is called "tidyverse". This provides a convenient way of downloading and installing all tidyverse packages with a single R command: ```{r, eval = FALSE} install.packages("tidyverse") ``` The core tidyverse includes the packages that you're likely to use in everyday data analyses, and these are attached when you attach the tidyverse package: ```{r} library(tidyverse) ``` This is a convenient shortcut for attaching the core packages, produces a short report telling you which package versions you're using, and succinctly informs you of any conflicts with previously loaded packages. As of tidyverse version 1.2.0, the core packages include dplyr [@R-dplyr], forcats [@R-forcats], ggplot2 [@ggplot2], purrr [@R-purrr], readr [@R-readr], stringr [@R-stringr], tibble [@R-tibble], and tidyr [@R-tidyr]. Non-core packages are installed with `install.packages("tidyverse")`, but are not attached by `library(tidyverse)`. They play more specialised roles, so will be attached by the analyst as needed. The non-core packages are: blob [@R-blob], feather [@R-feather], jsonlite [@R-jsonlite], glue [@R-glue], googledrive [@R-googledrive], haven [@R-haven], hms [@R-hms], lubridate [@R-lubridate], magrittr [@R-magrittr], modelr [@R-modelr], readxl [@R-readxl], reprex [@R-reprex], rvest [@R-rvest], and xml2 [@R-xml2]. The tidyverse package is designed with an eye for teaching: `install.packages("tidyverse")` gets you a "batteries-included" set of 87 packages (at time of writing). This large set of dependencies means that it is not appropriate to use the tidyverse package within another package; instead, we recommend that package authors import only the specific packages that they use. # Components How do the component packages of the tidyverse fit together? We use the model of data science tools from "R for Data Science" [@r4ds]: ![](data-science.png){ width=80% } Every analysis starts with data __import__: if you can't get your data into R, you can't do data science on it! Data import takes data stored in a file, database, or behind a web API, and reads it into a data frame in R. Data import is supported by the core [readr](https://readr.tidyverse.org/) [@R-readr] package for tabular files (like csv, tsv, and fwf). Additional non-core packages, such as [readxl](https://readxl.tidyverse.org) [@R-readxl], [haven](https://haven.tidyverse.org) [@R-haven], [googledrive](https://googledrive.tidyverse.org/) [@R-googledrive], and [rvest](https://rvest.tidyverse.org/) [@R-rvest], make it possible to import data stored in other common formats or directly from the web. Next, we recommend that you __tidy__ your data, getting it into a consistent form that makes the rest of the analysis easier. Most functions in the tidyverse work with tidy data [@tidy-data], where every column is a variable, every row is an observation, and every cell contains a single value. If your data is not already in this form (almost always!), the core [tidyr](https://tidyr.tidyverse.org/) [@R-tidyr] package provides tools to tidy it up. ```{r, include = FALSE} # Ensure pkgdown links to the right packages. library(dplyr) ``` Data __transformation__ is supported by the core [dplyr](https://dplyr.tidyverse.org/) [@R-dplyr] package. dplyr provides verbs that work with whole data frames, such as `mutate()` to create new variables, `filter()` to find observations matching given criteria, and `left_join()` and friends to combine multiple tables. dplyr is paired with packages that provide tools for specific column types: * [stringr](https://stringr.tidyverse.org) for strings. * [forcats](https://forcats.tidyverse.org) for factors, R's categorical data type. * [lubridate](https://lubridate.tidyverse.org) [@R-lubridate] for dates and date-times. * [hms](https://hms.tidyverse.org/) [@R-hms] for clock times. There are two main tools for understanding data: __visualisation__ and __modelling__. The tidyverse provides the [ggplot2](https://ggplot2.tidyverse.org/) [@ggplot2] package for visualisation. ggplot2 is a system for declaratively creating graphics, based on The Grammar of Graphics [@wilkinson2005]. You provide the data, tell ggplot2 how to map variables to aesthetics, what graphical primitives to use, and it takes care of the details. Modelling is outside the scope of this paper, but is part of the closely affiliated [tidymodels](https://github.com/tidymodels) [@R-tidymodels] project, which shares interface design and data structures with the tidyverse. Finally, you'll need to communicate your results to someone else. __Communication__ is one of the most important parts of data science, but is not included within tidyverse. Instead, we expect people will use other R packages, like [rmarkdown](https://rmarkdown.rstudio.com/) [@R-rmarkdown] and [shiny](https://shiny.rstudio.com/) [@R-shiny], which support dozens of static and dynamic output formats. Surrounding all these tools is __programming__. Programming is a cross-cutting tool that you use in every part of a data science project. Programming tools in the tidyverse include: * [purrr](https://purrr.tidyverse.org/) [@R-purrr], which enhances R’s functional programming toolkit. * [tibble](https://tibble.tidyverse.org/) [@R-tibble], which provides a modern re-imagining of the venerable data frame, keeping what time has proven to be effective, and throwing out what it has not. * [reprex](https://reprex.tidyverse.org/) [@R-reprex], which helps programmers get help when they get stuck by easing the creation of reproducible examples. * [magrittr](https://magrittr.tidyverse.org) [@R-magrittr], which provides the pipe operator, `%>%`, used throughout the tidyverse. The pipe is a tool for function composition, making it easier to solve large problems by breaking them into small pieces. # Design principles We are still working to explicitly describe the unifying principles that make the tidyverse consistent, but you can read our latest thoughts at . There is one particularly important principle that we want to call out here: the tidyverse is fundamentally __human centred__. That is, the tidyverse is designed to support the activities of a human data analyst, so to be effective tool builders, we must explicitly recognise and acknowledge the strengths and weaknesses of human cognition. This is particularly important for R, because it’s a language that’s used primarily by non-programmers, and we want to make it as easy as possible for first-time and end-user programmers to learn the tidyverse. We believe deeply in the motivations that lead to the creation of S: "to turn ideas into software, quickly and faithfully" [@programming-with-data]. This means that we spend a lot of time thinking about interface design, and have recently started experimenting with [surveys](https://github.com/hadley/table-shapes) to help guide interface choices. Similarly, the tidyverse is not just the collection of packages --- it is also the community of people who use them. We want the tidyverse to be a diverse, inclusive, and welcoming community. We are still developing our skills in this area, but our existing approaches include active use of Twitter to [solicit feedback](https://twitter.com/hadleywickham/status/948722811232751617), announce updates, and generally listen to the community. We also keep users apprised of major upcoming changes through the [tidyverse blog](https://www.tidyverse.org/blog/), run [developer days](https://www.tidyverse.org/blog/2018/08/tidyverse-developer-day/), and support lively discussions on [RStudio community](https://community.rstudio.com). # Acknowledgments The tidyverse would not be possible without the immense work of the [R-core team](https://www.r-project.org/contributors.html) who maintain the R language and we are deeply indebted to them. We are also grateful for the financial support of [RStudio, Inc](https://www.rstudio.com/). # References tidyverse/vignettes/paper.bib0000644000176200001440000002231314036031046016063 0ustar liggesusers@book{r4ds, title={R for Data Science: Import, Tidy, Transform, Visualize, and Model Data}, author={Wickham, Hadley and Grolemund, Garrett}, year={2017}, publisher={O'Reilly Media, Inc.} } @book{ggplot2, Title = {{ggplot2}: Elegant graphics for data analysis}, Author = {Wickham, Hadley}, Publisher = {Springer}, Series = {{useR}}, Year = {2016}, } @book{programming-with-data, title={Programming with data: A guide to the {S} language}, author={Chambers, John M}, year={1998}, publisher={Springer} } @article{tidy-data, Author = {Wickham, Hadley}, Journal = {The Journal of Statistical Software}, Title = {Tidy data}, Volume = {59}, Year = {2014} } @book{wilkinson2005, author = {Wilkinson, Leland}, title = {The Grammar of Graphics}, year = {2005}, isbn = {0387245448}, publisher = {Springer-Verlag}, address = {Berlin, Heidelberg}, doi = {10.1007/0-387-28695-0} } @Manual{R-blob, title = {{blob}: A Simple S3 Class for Representing Vectors of Binary Data ('BLOBS')}, author = {Hadley Wickham}, year = {2018}, note = {R package version 1.1.1}, url = {https://CRAN.R-project.org/package=blob}, } @Manual{R-broom, title = {{broom}: Convert Statistical Analysis Objects into Tidy Tibbles}, author = {David Robinson and Alex Hayes}, year = {2018}, note = {R package version 0.5.1}, url = {https://CRAN.R-project.org/package=broom}, } @Manual{R-dplyr, title = {{dplyr}: A Grammar of Data Manipulation}, author = {Hadley Wickham and Romain François and Lionel Henry and Kirill Müller}, year = {2019}, note = {R package version 0.8.3}, url = {https://CRAN.R-project.org/package=dplyr} } @Manual{R-feather, title = {feather: {R} Bindings to the Feather {API}}, author = {Hadley Wickham}, year = {2019}, note = {R package version 0.3.3}, url = {https://CRAN.R-project.org/package=feather}, } @Manual{R-forcats, title = {{forcats}: Tools for Working with Categorical Variables (Factors)}, author = {Hadley Wickham}, year = {2019}, note = {R package version 0.4.0}, url = {https://CRAN.R-project.org/package=forcats}, } @Article{R-jsonlite, title = {The jsonlite Package: A Practical and Consistent Mapping Between {JSON} Data and {R} Objects}, author = {Jeroen Ooms}, journal = {arXiv:1403.2805 [stat.CO]}, year = {2014}, url = {https://arxiv.org/abs/1403.2805}, } @Manual{R-ggplot2, title = {{ggplot2}: Create Elegant Data Visualisations Using the Grammar of Graphics}, author = {Hadley Wickham and Winston Chang and Lionel Henry and Thomas Lin Pedersen and Kohske Takahashi and Claus Wilke and Kara Woo and Hiroaki Yutani}, note = {R package version 3.2.1}, year = {2019}, url = {https://CRAN.R-project.org/package=ggplot2} } @Manual{R-glue, title = {{glue}: Interpreted String Literals}, author = {Jim Hester}, year = {2018}, note = {R package version 1.3.0}, url = {https://CRAN.R-project.org/package=glue} } @Manual{R-haven, title = {{haven}: Import and Export {SPSS}, {Stata}, and {SAS} Files}, author = {Hadley Wickham and Evan Miller}, year = {2018}, note = {R package version 2.0.0}, url = {https://CRAN.R-project.org/package=haven}, } @Manual{R-hms, title = {{hms}: Pretty Time of Day}, author = {Kirill Müller}, year = {2018}, note = {R package version 0.4.2}, url = {https://CRAN.R-project.org/package=hms}, } @Manual{R-lubridate, title = {{lubridate}: Make Dealing with Dates a Little Easier}, author = {Vitalie Spinu and Garrett Grolemund and Hadley Wickham}, year = {2018}, note = {R package version 1.7.4}, url = {https://CRAN.R-project.org/package=lubridate}, } @Manual{R-magrittr, title = {{magrittr}: A Forward-Pipe Operator for {R}}, author = {Stefan Milton Bache and Hadley Wickham}, year = {2014}, note = {R package version 1.5}, url = {https://CRAN.R-project.org/package=magrittr}, } @Manual{R-modelr, title = {{modelr}: Modelling Functions that Work with the Pipe}, author = {Hadley Wickham}, year = {2018}, note = {R package version 0.1.2}, url = {https://CRAN.R-project.org/package=modelr}, } @Manual{R-purrr, title = {{purrr}: Functional Programming Tools}, author = {Lionel Henry and Hadley Wickham}, year = {2019}, note = {R package version 0.3.3}, url = {https://CRAN.R-project.org/package=purrr}, } @Manual{R-readr, title = {{readr}: Read Rectangular Text Data}, author = {Hadley Wickham and Jim Hester}, year = {2018}, note = {R package version 1.3.1}, url = {https://CRAN.R-project.org/package=readr} } @Manual{R-readxl, title = {{readxl}: Read Excel Files}, author = {Hadley Wickham and Jennifer Bryan}, year = {2019}, note = {R package version 1.3.1}, url = {https://CRAN.R-project.org/package=readxl}, } @Manual{R-reprex, title = {{reprex}: Prepare Reproducible Example Code via the Clipboard}, author = {Jennifer Bryan and Jim Hester and David Robinson and Hadley Wickham}, year = {2019}, note = {R package version 0.3.0}, url = {https://CRAN.R-project.org/package=reprex} } @Manual{R-rvest, title = {{rvest}: Easily Harvest (Scrape) Web Pages}, author = {Hadley Wickham}, year = {2019}, note = {R package version 0.3.4}, url = {https://CRAN.R-project.org/package=rvest}, } @Manual{R-stringr, title = {{stringr}: Simple, Consistent Wrappers for Common String Operations}, author = {Hadley Wickham}, year = {2019}, note = {R package version 1.4.0}, url = {https://CRAN.R-project.org/package=stringr}, } @Manual{R-tibble, title = {{tibble}: Simple Data Frames}, author = {Kirill Müller and Hadley Wickham}, year = {2018}, note = {R package version 2.1.3}, url = {https://CRAN.R-project.org/package=tibble}, } @Manual{R-tidyr, title = {{tidyr}: Tidy Messy Data}, author = {Hadley Wickham and Lionel Henry}, year = {2019}, note = {R package version 1.0.0}, url = {https://CRAN.R-project.org/package=tidyr}, } @Manual{R-googledrive, title = {{googledrive}: An Interface to Google Drive}, author = {Lucy {D'Agostino McGowan} and Jennifer Bryan}, year = {2019}, note = {R package version 0.1.3}, url = {https://CRAN.R-project.org/package=googledrive}, } @Manual{R-tidymodels, title = {{tidymodels}: Easily Install and Load the 'Tidymodels' Packages}, author = {Max Kuhn and Hadley Wickham}, year = {2018}, note = {R package version 0.0.2}, url = {https://CRAN.R-project.org/package=tidymodels}, } @Manual{R-shiny, title = {{shiny}: Web Application Framework for {R}}, author = {Winston Chang and Joe Cheng and JJ Allaire and Yihui Xie and Jonathan McPherson}, year = {2019}, note = {R package version 1.3.2}, url = {https://CRAN.R-project.org/package=shiny}, } @Manual{R-rmarkdown, title = {{rmarkdown}: Dynamic Documents for {R}}, author = {JJ Allaire and Yihui Xie and Jonathan McPherson and Javier Luraschi and Kevin Ushey and Aron Atkins and Hadley Wickham and Joe Cheng and Winston Chang and Richard Iannone}, year = {2018}, note = {R package version 1.12}, url = {https://rmarkdown.rstudio.com}, } @Manual{R-tidyverse, title = {{tidyverse}: Easily Install and Load the 'Tidyverse'}, author = {Hadley Wickham}, year = {2017}, note = {R package version 1.2.1}, url = {https://CRAN.R-project.org/package=tidyverse}, } @Manual{R-core, title = {R: A Language and Environment for Statistical Computing}, author = {{R Core Team}}, organization = {R Foundation for Statistical Computing}, address = {Vienna, Austria}, year = {2019}, url = {https://www.R-project.org/}, } @article{Bioconductor, author = {Gentleman, Robert C and Carey, Vincent J and Bates, Douglas M and Bolstad, Ben and Dettling, Marcel and Dudoit, Sandrine and Ellis, Byron and Gautier, Laurent and Ge, Yongchao and Gentry, Jeff and others}, year = {2004}, title = {Bioconductor: open software development for computational biology and bioinformatics}, journal = {Genome Biology}, volume = {5}, number = {10}, pages = {R80}, } @article{Huber2015, author = {W. Huber and V. J. Carey and R. Gentleman and S. Anders and M. Carlson and B. S. Carvalho and H. C. Bravo and S. Davis and L. Gatto and T. Girke and R. Gottardo and F. Hahne and K. D. Hansen and R. A. Irizarry and M. Lawrence and M. I. Love and J. MacDonald and V. Obenchain and A. K. {Ole's} and H. {Pag`es} and A. Reyes and P. Shannon and G. K. Smyth and D. Tenenbaum and L. Waldron and M. Morgan}, title = {{O}rchestrating high-throughput genomic analysis with {B}ioconductor}, journal = {Nature Methods}, year = {2015}, volume = {12}, number = {2}, pages = {115--121}, url = {https://www.nature.com/articles/nmeth.3252}, } @Manual{R-Biobase, title = {Biobase: Base functions for Bioconductor}, author = {R. Gentleman and V. Carey and M. Morgan and S. Falcon}, year = {2019}, note = {R package version 2.46.3}, } @Manual{R-datatable, title = {{data.table}: Extension of `data.frame`}, author = {Matt Dowle and Arun Srinivasan}, year = {2019}, note = {R package version 1.12.6}, url = {https://CRAN.R-project.org/package=data.table}, } @Manual{R-xml2, title = {{xml2}: Parse {XML}}, author = {Hadley Wickham and Jim Hester and Jeroen Ooms}, year = {2019}, note = {R package version 1.2.2}, url = {https://CRAN.R-project.org/package=xml2}, } tidyverse/vignettes/data-science.png0000644000176200001440000026361113563551252017346 0ustar liggesusersPNG  IHDRcBgAMA a cHRMz&u0`:pQ< pHYs.#.#x?v iTXtXML:com.adobe.xmp 2 5 1 2 Ү$@IDATx ӽ899IB"T%dg9㟙zX94f0F 1s ;g/fC"@ @ @ @BL#f㯙̑5Z5t0FhFfqcx9$ @ @ @ @@k,  @ @ @ @4,a1+VZ`8s9z4k}*={;[@)v @ @ @ @(hѢ㏳/b{M$S1!sԛST2=*s9z@cmw9C a/ @ @ @ 3}SNz(,XЭe 9.ܲRclyh[K^]] 7n\QSSS< @ @ @ @@Ν&M+2dɒbm=S0.s<]BsW4ۙW樷%I׮]cqI'z~O @ @ @(կc|駅L[9.+Tܼ yP?堺aviZk-vM @ @ @h3gO~lPҥK L桙`F -O0FLC7f]6Dž^m]" @ @ @ @x;NL>Pd*lJ^s1V4zGrǍ\rIt֭nk @ @ @ @@Y ,\0?+ e29-TX^**O+bܝ91㬳Ί_ѹsZ՝ @ @ @ @S 83&jjj{:ۖu1-K2FLAKzk6FI @ @ @hWv[1gΜN[fd45#qP'80Rg?vs @ @ @ @@x粋Qu~U&c\̆Ln$1m4Q @ @ @ @Z dlօV843˚:F*n)u[Xs @ @ @ @ Xk6RlDb'R ERj3ڵuY1~Y  @ @ @ @!0hРXy㮻=.m2GYdiB c[o7n\׿ @ @ @ PQnmkO2ǣ3 Wg޹78{֭[.' @ @ @ @".\[lEL>>\l9ޮY&'@ bsM @ @ @T@Z"JZ)RS`~;}m], @ @ @ @HǏ;Sb+:3]vW^y%Zk\O @ @ @ @@9sf| _O?x\X;yݕ1e ]!ExĨ- @ @ @()f)"XLuWz֟s5㥗^[/ @ @ @ С^}4hP,YS3ruW8(W>wygA @ @ @ @N -bb(qu]$s2n\jWsN @ @ @h1)"ZK)3S:9W{FMMM.' @ @ @ @C ̝;7V[mX`A\R;#^cXmV Fm @ @ @ @@HYX:)/"WV;#osa  @ @ @ Сv9/"^Fctʜ1eҎ;;I @ @ @Ckb-RE^c v]2dȐڗ  @ @ @ @Z@,EX%A킾}*R;9 @ @ @ @C XSQ'\\0ƺ+`#6\ @ڻ1} 1cty6J @@=b#A @@;:F;$]$@^ @@ox&@ PT$ @cT @ŋcѢE @ @F"@ P1uf Ђ .l5M @= @`c,;  @V>k}q @$k @, gG @- tR[&  @h]UI~# @(G8+DhA`ق&@ @ @,`@s  @= `  @ M%̢1 @*S@0FeΫQ @ ,^h @'ol+ @c Xm @^ @*EJI @T`ʛS#"@4(dɒ @ @~^fJ?  @O@0FǛs#&@:ҥK; @ P)TL @cTޜ @AX B @ڑ7ht ct 7\ @ @ P)TL @cTޜ @ @ @ І1ߣ  @ @ @ @QysjD @ @ @ @@ hC|&@ @ @ @*Os Ɉ @ @̙ZQ 70uVT/~`s{fR_S릾}ƚkY7u;X9^{!. @ P1*`  @ PW瞋=ܳnK/4F캥N>S] /555q)Ĕ)S;b„ e?I1 @ `JEc @ @b-_~ur}y7z&l hk @`6aP @ @@ TWWǘ1c>O>hy) %zkѦQ @ @h' @ @ ;-Ϗ{hy) |={v:uG.X& @w} @ PD`6[HiDC[7tS;sE @ @, =Ϟ @ @hhu)SĂ iamQ|n"@ @Qh @ @cƌ)2͛SN-Z" mQJ+ܹsuX~g(*FI @@9 [=7 @ @& 4(6tx' ޓ*Qb33ڢdĈ2jO>9{Y7߼^'xsn @ڻ`>O @hD 9 Ƹ;c…ѭ[FZizlQ2xHD< @Y6%<;F @(ѣ`Kq{˖7-JC]ަG @څ`v1M:I @X~6lSɓ'-[(I!;[uy\C @G@0F+=%@ @,رc{wg}V9˳EIsW @fI  @ @+(0r8餓 ]|Gq}ŮOx衇b?_W ͝;7-ZT[nѣGzMx3gƌ37ވYfe[}#Zs׏aÆЪ~anԬPK,9slwE)xC'x"^zx7[oH3H{ĺ[1wy'R`SO=}OӻD㴺͚k=rHD @@y (; @ @@Iҏ);,^ڪ mQGqDL2^;찘0aBb)[o.,~bgW֯_lv bРALrKlV˚%~UO/XV,O>믿>.҂Kzjl&{| U/YY{?A,]4&MW\qE<# '|2/{6C9$gXi\ @ P))y  @ @@ 4 q\9jlߜ;qlCm0i%s=76|lPFV8bM7N8ف9r駟m]\s5,{1"<Ș6mZ@BO?t|{ˮ裏" @6 @ @}cW.|xѮJV$5EINW_]-KΝ[[ ^h?|E.E~mH~ӟf{)RikqgI @ P%@ @ @4UmiI mQR]]cƌYfgʔ)q7ZSN1`xcȐ!ꪫ6zO0cƌ8ST\+wqo7{JGv+u]7z}K,s9zmQޏSO=5.&Q+YgjR>; @!й< @ @!0tH?7{ ;c2~[ѯ_ƚXV(,iUaÆEqvJ+^|͑VNxGkO81~ꫯ.n;v{K8j[nyu?Ӹ"Y-n^8p`m}QNG i,̾)h(ä@yO?O>dLtQG]w *VE> @$`eV @ @@9t%FU+)8ayR[lQx vk׮V ӟGno~q뭷ƹ[t|Ng^uUEO<_|qկ~5?l @ZaXJmS*#LrYc5믏<2rlPKnEW^9(sG z7n\vR'\\ @' = @ PmUhNJ rK[ {g|6㋖-H+C\r%u]]v^N}ݸ{ vw֊nY}3(^ʜ5kVѲ((#YZ& jMc)-aHmJSN{P< @ZQ@0F+b{ @ @rH?JHsRC[mB-x㍢ͦ lI^~3DSN9% 1=irJ~V8R߾} .޽{*.I[Kկ'@ @c @ @E m{Ns*i-JR?䓢cܹsѲ ^7ߌ,+_h׶ze /F:-*fy~m`.\Xa„ ѧOeeq ?fΜYH @$|J[sC @ 2cƌ?`zkv;'mQJb]v)TT^h;i+z@s2gAV(ډ6.(-ƚkXޔ2 XvK}__ -;\ޔ @VP@0  @ 6hp 矯Yf#<lMӦM C4jԨҥK}//Yg_֫[0pOZ7]^}|^ߗw%Pz7'!3Q(^Gowߔ)ScSA @' @ @@C[L'dp O\=PlZdMkt)@s.}S9<@ab E m9CҥK% @2FK k @ Pi &-~zTUU,Oiێb[ZV[{#<2UCҏW]uU۷oKR P6>,^|xgcĉq+rx?RP)v/kFG̟??z-yA @Z^@0F{ @ @,Җoy<~}ǢᇋnQ2v9=p93;n{/T RJ?bv) hXa…/g/^zyھ&/Z]ߏwy[lQT`Raj @@3c4Lu @ @@% Bii1n馢-EI5559wlA.))$!7RF mbQ]];~6mZ<# FS[~?6%{bvh>x8 @*P(;l7 @ @{WѠUI()V>dȐp ZuY'nX7|38cmͮxL$"tA.IڎS[m1o޼JZc#@ P1zzt @ вz :CfΜOq_9rdʍpq \8cb뭷ήp.}Cm&Zo߾="k!*=Цt&@ P1bt @ vibo.XڣP{](U6x_?<N g7z_{ZGZy+Ȕ\Z2UUUeigh @1(!@ @t={fW;( F Z?m2EIZqPj-J n?~|fw}1y裏ޒw=k֬8##dvJs,O:ꨣsWl( xQl[ׯ_,;OAw];!@ @lSRysjD @ @f 4gBAiګnRѣ㷿mv `c]堡VW_mv?|KRciՐS7QTǚkYl0Sh VI @@.M  @ @e]W^M[Rڢu.?}ѻwY<x ;Vh+4&M*z{]w]۷h ͛Pqŕ|̙3) @ @ ئϡ @ @VX[n1rȸkSO=lI%K.*>z+r2:w'|rvՂk`z`~.]:RJݴ iӧ%SN`F2/^'j~lEǜ{(+}ٸ5kaV/_ @# u= @ PiB'OcۢgϞnS` bw/X֔qE`ٳglSNѯ_(K/Űa XC=\N]wX{ 5%g .isVN}Nj/XoHob[ڍ]pٕNj7X0F] @ZQ6%Q @ @rvm1ڢ$VhP@޻B4hPmn0`@ _b̴éZ'in+:G [n~5 O 袋 55sܹ@BSpD @@ h;{O&@ @@Za̘1+_£P녲[,&[{'>쳂eM|WV[s5]v]wEѼiҤI˵*FzN׮] >.ұ+[\r%qwl7eڢh.(#*;~BEMʻbVUU{]/_ @' = @ P 5~߿U5Z;mVkŷO 7 9眢U (2Fںd„ E,TpwF1B歾u׋/n0Mn-~+/\.,#{~ e]/XP_8 Vnb5(X& @:ΞB @hmYzk g߿h? rH|E-={vEVZi6lXۖ]o\z饑V1H[4,X'xbx{6ZkYˮ;xᇗ]7tVDob{ 5e~tIѽ{i}'hѢujgk6:ꨢSkTS  @?L @ @A!-RZQ)SĐ!Cdޏ){SO=5=/64^z+=ܳ )# ?bĈx}Ќ3esn-9X~7m/MW^ye|{ߋv!Ҷ/MI=X̙Ӕ[ZN9 SN9x6Ҽ]xM_?FZ#]x6t=zt. @h}έHO$@ @@3hׯ_H繣O>- k5c}Mc7nRRWܹsPHz#=K.je&>裏h*|ey{1cu],?}\y啳ϯ[u#m;ij׾b+ H$KMyno/ ]vO>$~lM%qg[NZtӧOt?:7,3k֬&)8ꫯD @@ h[O'@ @J(~h닶su ȝb[ m _o&SO5:Z#ױrCvse53|-ԩSvV,z+_kƂ;>>fc;vlm-JK,cSR 8I+f`B)Vlh칅/u^9UUUGoGZcU[&N Bkm @`7 @ @viOK?o(Z_={\F@)hcUWͮ,X{<ߔ`T'>Eɻ/ۮIm RqeWhME*#;l͊h8;y„ q'6\i?٠bMlUV#'pBvURA02lA @+( cN @[o]b+ܩ?8/7VnA)Pn^ZѣGGZaҥE[:S5 =b-⢋.o=Ê}Mt @h9-ge @ @vy6zrc w}w?> @ P1*zz  @tLrX#;31'  @ @@܁n @ @@ ?6px[}ZW.l$@ @C1zA @X-*Iw@ϥ @ @@{2F{1%@ @xۃ< +ea׮]?i~QUUUʦE"@IDATE @Cpt @1cFvmqǴibɒ%Zjq%Đ!CZ)&@ @ړ`4[J @,x駳)gYߚ'ǏN;-zњ, @ @c @ oӧ7ߜ=^}Y>}΋Ç= @h1,# @O=Բ^{I+RαFřg٤{Zi /0[#@ @:`6K @ڃ`ꪱLj#bСѽ{XdI\r%;w?яcnO @ @@ ƨܹ52 @ Ю^~4iRp -HYgc=ۅlV$RD _BAm f @ @cl @ @,~O>d0k5jT4%8bE1o83IS @ ;@ @9sbotF. tM_N;T={s9'ƌ{T$@ @$ @ @-Zw}wL81O}i`n|֊/| +n|-.(^{)$@ @QHE @ Pgy&q{hz=:Ǝ_ iucTWWѩS6 @ @ O@0F  @ @`EfϞ݂$1}F=3;DKA`.4j[mU @ @јr @ @Q6$^{mL2%uCk׮뮻>_W{ U_>xm3&>իWr @ @h @ @@3⪫1k֬B[ne~1jԨV |Hol#ukW_W> @ @`s+ @iՋ;#ʘ:uj }7{| _h~KU:th^0fm_|qz-H @ @T@0Fx&@ @xOSvwyӶ#{G;Duuu[pw:+cN:)t  @ @ `n @ @9/;3.u-`=:zh֬/})6`83"l"@ @:`5FK @$gW3gl޽{77n\l mN:eUF[΂g @ @! c̳Q @ @&  @ @/ ϡ @ @bqeţ>`[b}a <  @ @U@0FGy&@ @/W\] c֬Y z|K_;,FnVhp@  @ @-( q5M @Qg\tEq5vk׮1jԨlF Ɛ @ @& iNj @ @v/O\rK,YxrHtAj @ @`.r  @ @@E;3~#,8sw)ڑv!N8~Q@\sM6#妀qŔ)S&+ @4"PHb @ @ ,Yc뭷Ox b]v{'.h ֑IM֭[޽{,M @ hHG @h'x"ƌO/؃]ɓcĉ&#/[ cq衇ƬYߠ; @1:4 @s=tP|k_oϿk) C"@  qǒ%K] @ @`B* @ @@+ |vi; > _BnI~$ @eǰaCŹ瞛 @cRG @ZA -{ǖ[nW\qE0`@|0FUUU3 @v%kvYgi;) @ hHG @h!\O?SV]u8G<0:uT hY>}_)0#R Gse$@ @@=W$ @(ơ]g|=?a  @ @@ z뭱ƙg|I 2$nKbe @@ .իW^GǛo @I@0 @ /cǎ>8xzOӧOuYq=dW̨WAZksN^Ν'pB^  @$ @ Pb%/:thZo}[#!/%(ѣGǾPwu @ @`  @(@ i΋ŋk9mW2u%ie ڗ駟'fsA @@ѱ  @ @D͋G1rxW굺kƥ^7tS|_W.ڇ@޽mWG~1$@ @Uc  @ @@% {ア;d-.]7.]xcԨQye. @} 1vؼ~1iҤ< @t\w @VP %׿x7|%%ɉ'=zW.گ bVH  @ @@0w @,mm]\s5N/"` @/*ęg7ٳgG Ґ @ ;@ @!ơǏYfջ3h|'}$$0r1bDވ⊘>}z^  @:xsn @ 7pCv5n^ 555q9č7W.*SOۊjɒ%Ztieب @h`&1D @Y`ܹqGǑG|A=v-z7n\TUU+A+Zk7{,&N @% cͷ @ @@3|e]s;WYe袋ꫯ5X^ )`o/~裏\ @ qct6R @h@Z^ .ÇǫZѣGǃ>cǎW&:@׮]c„ y~We @ @0Sm @ Tw}7o8S>˻gϞq%۷o^ i#F\veo @ @cl @ DSСCk;6|{c̘1d @5I.]A|qg,vB @@qH  @ @~7ieک*?<~իٿ4iR?Ν;+Aj p QSS,kҥqi-vB @@1(  @ @_6lXh1}<8S/=z䕹 @Xi;N^rK[yy. @,5FC @;3ƎgիWL8ޒy\ @ r!2riqW.} @ P1*pR  @Yk?{>5ADQ *,]+'X.svb{3Z]V[ـ 4ۛ7WϷ @ ~cR@ @!0vX/4W_}.kl^{m_: F$3Ϙ &4bQ) @ P!1*i @ P_}c=̨Q|ܹy'J+Kg Шvm7Ӳe9ś9sy衇l @H?1 @ 7n#cǎ6K.dPA@֭[vW{̷ @ ncQz@ @'0~xӭ[7駟+{-/ @@V,o; @AclGj@ @ ~Gӽ{w3b_:tbm֗ @ -b 3)Y̐!Cl @H71}(= @ 4il>c__~yc%@H-[W'x· @ ^cQr@ @%0ydcС:o<#]vt6 @i$N; /S؀ @Ict7J @ @ Mfg2xK// @@Z lvysw 2@ @ 0H= @2C`٦W^歷I0~aـ ",b6pC_ f @H'1y(5 @ L8s?K,yX~}l@@`U㥗^m@ o @@ 0W\ 4Ȭ⊾t6 @Y!_ѣG؀ @Gc3J @ @ sz)sgբE s;ـ djX^~M~C @)$1F oE @ %9#̬Y|պͦnKc 5͚53lZcp@ T#BC @~_~UN3=z@*!Y  @ O0ݦ @I>c{_ziN>d_ ,c3|Y2u @@ `[L!@ 4ӧ<|'m+@:;6m;ـ @Ect/J @ @ o^}U_]:wln6ӢE _: <ҥ|o @ @ ]0H @2A`z,{1[@ 5\WU1|8؀ @@`[F!@ ^{e5kUd 1^zW@*$Zkٳ}il@ @!0wzJI!@ @ +j+/C7,Y TD h1e3j(+V'A @MKc!@ @N> @ƴkδm֌7n*c~@ @ USEa!@ @ z裏ZU@ # B @ @i бcG_1?s6 @@z`{EI!@ @ $5jTkK @ mcdR;@ @ @ %:t+)>l@ @ U0H @ @@V /fر46 @ t#RB @ @'Ю];ӲeK_-?s6 @@:`D)!@ @ h֬ z TIo:Ճ @,12{k @ @ 6۷y̘1m6 @ t#RB @ @9 Kj?ـ @Act'J @ @ @6m|Ç @ U @ @:m8n86 @@:`D)!@ @ z#7*B dT  @ @H#W`N6 @ $1FC @ @ Yٳ}UÇ @ M @ @W cCo\1 䅀}ś $~7sw{<?͚5[lW i{96l:t@ %Y'3pݬU_ SZO$rK`ܸq; "t:lxg`3dȐXS޽-21ƈ#l@H=yH% olV_}`2 @h|9ꨣa@\ "OÇ @;sꩧz1fϞ]+?sf2v9s# 'G0Hݢ&aJh!%XH @h"zsY@H?`͛Z*@[c3e>} ȑ#=Ïy晧D94-Y1`  @*$0zh#d63g,Y[l&Ŀf뭷6ވ@MxcJ״0hZ\2F@2eT"5kؠG A$BrN`ڴifԨQ> Մe 2hz!Q %"I,8'g}lfo^sk5E &NkZM\@h%W^i՝ CpP|7CH”  9r)6ll֬رcI '9c9)Ԁ 50(\CfȐ!f+$|O%$@Bc) СCI'dYf{Gy̘1#<8 <רkl dB  @N dV0?A p 7 &8kr7]:WcW7wq~ 4:1Q>@O`̙G5{Yjo}@5ٳg?FdW]uUs'7|3L< @@: |G@5-馛z_jwfwf( @ Nkr\>ZV\m=ڌ3Ƌ&^ZᮏVsަm۶$wa{>|ꫯbIoyFq 7TYؔgPd믛'||fرG+SUvyN:nݺy,fwy+;{r-gW6Yi*&ɧLRY᠟<fĈ/>ɤ?p؜o=_~Ũ6Y`7${~s5x5\|f}5/x*B˖-M5.ڧOn~ioY4 kK.זi&6MmMZn]u|y3W!E@;>=z^:_ j/lc/cO?Ԩ_u8sG+P} 1W,ȜV^lƎT`8ԯ[pVZG%)g_X}b;QXK[J8qbasη=](??3n8ձꦏڃvءQl~<[x\hW=_֦MBB6|:s5Yve7hPeyE @F#@r^{5iR(yv%Lms9<_ykzzlGYKC]s/G5֚4i1^xᅍ.]z }YO' Ɛ.B'%leR{?X-1=++޼X~UzXtEoZVe*.#A{9{̥(|4G^.+^^z2}*){?aìS$q(8<-Հ^r%DD)/2#K^\m+OM̞yfUVLs1q睧\ʼn2HfyVvWaF+dJkݻw7'pאkۧᦛnZK|2ʹxN&6^cTQRibkb 3DQ{'N;3rQF 0R6,뿢gK//q+eݥ0"W_}}NqygKp1ӃuR?rm1{8&zNnFoA1,5j4@y%62 ,V+LHyQY&2.UW<;kgԷ yͰSIMt@G{) ԯ\R(uI:jњԼM*p.ZSF]$M%4%tq$iIҋkQڀG@qK.QO =Nzۛۓ> yr˸qes=x:{`Yx@uR,m}A=G13[\C,Xc?<(&6`OqZ|,'Ib-UJAKc+O);wl9@J~ː@F#VECZ)ZU X:N*뮻7 - ??ȪRGm`]CVb""2X~C .=Za,/4ZrY-"$>MH*Y樆D9h%wukWtSMC  I\b﨟>6CrW VHu|4p袋>>g޵AC ,nկvm=%oTC 塼վV>SNAO;,!򖑵 ԯQFTr ۯבр{FɪkIys{w:>ygK 5.B-!-FC {X4Mxc()c|iP\~C4~/nSe:q  WjD^;` 2P_eK_i߾9c-8g}.)u(ܥи^fb#jы zzU:r-F *.XLc}y^]^T*]~BUbkqz뭕[LbGg{n섽SjZcob[nl\.(t&e k]5>,cKɖHi-ZH(K.T4IL:kVEА"x۲&@ Y֪IϴWrݍAF`W*ri& `=Q ג1kհ\˅y"W bz m&--AFyBC@a>&Ry(߂Qη/Ym5y([Vʰ"ٖBTÆry+.s׮]厭~ ?ɘOڂb3=jsWd0.%tϋ<.[۹ŠyxD @zRƄ @(crD$N^"\bè±Y "/hnaݪWy R(<%塎Qz#2oV|iak1[d$cC="_@IDAT$W 51hh/ V:+"nqjz#]i\Bɫɵ qQmGMy&‚J )#<笳Ϊٵo)9Ε FrSujpREq;ĵayː?lZMO@va/+VªǰOJ?[.;ZqM4ʍb#%?[m(7@HJuQi qRa'0%d:B+ƴZQ{-H}Y&]hw&J?#=OIAƅ QVϹ~ ;qƊՈ+ySyOʕ$+4/BY \x7}_o|l@c @yn't,.VGI2_<ԱZ,$[JEyТ{.KJg2(4Ai-D$"=wZg ܚUyfAGc=j֭p!XED;\rI#7ac%Y8_ . ;M+YQDJvj4q"+( {䶹]vQNV-J< eС:V<  <,˜ #aLP1Q}OtV\pSbzرwK5PX.;U>!3\jpV5oMtW㏏܆ɠKDq8]]~Z5d6Sʿ0j;AQ(չk/^lʝJ$ #]6Z E.S$("ŒIIWra? ,P[\1F8uk*Q6*28{1E3MUuÌ1=:-v4 yKC!2-.ZczӢEՐQ!*U?Hjy(ĤY!6mx34R-Wަ-.hU:(Oωr43w HeƎ"/\ȒJ?^H.^V=k`K>|gե|] QsVr g[/.V1[7Mjk:Jr[{VQ8a&RG^||KB52jrM`W*Qn5& jMJqt֭re 6۔ԯpr ?%yG2PgDwh"f3v"8wuJ\L'{7Jҵy]BE VE VYM`#8SM̭e˖^?He]ַ[קzʗVs5ڬ12QQ}R=mi)XeTWT?y[ *Q$Z% G(.C(~KnU'{JI{zϕ])LHq?AՇ)r jo626 Gd#J2.Uo߾WAHCjrm҂݇8y'@_2JSUVYeN2'u=k2f6)o@pGˉ'(n};؀*&(:2N>=wK\OӶ BKOI|ApŹ<ԱۼX(t %4~ ydQny IU,GRէ@+oz-F”*ܸȽYrkU2*_Y(]xiۊ=eШbxk՛QUgzD w}!Η^4ꈇe:ӍmE arkjE))?˽@c"V UФIXVm 9b -eDFZy\I]8_$d۷.҂@hb0&ʋ B4`+t2jZIjVO/"Q 1ta\D \;̰ xagWh`>Imwyz6b^xa~W7xkW.E-TIlرcɍBȚ&Zrf;^iDd=SrjK.1:t(5Tcaw5hvNJJr!zMJE2$IۺzKQ-Ù ]$TuF?[VrUY cD [qV6K)ozc[h2e,qĦ{-hփ}o^ݮpKtLS5)E4S#aLjV`yԉ\D0g;W+d\l۵Ö-M"HImI1FREC-!sZŒe@S2&{@ 蝬YRsZ (,OјP!\u޽VY}衇JNs,*9@Ђbո=e #PiٗIȆ̚Gc-8Ѫ}K$+3F܉D #a.)uPI裞[50M6qumV;ZM@ )0& eetX\ UA_[{n,/WXeU73q2wꨇSDmڵk]6]E MN'׊ 9i<~mliU-g(j\<4<؆ ?Wju|G.7yS7 3"WylMC;<%塎T#]ve%:wlB-=chKݲQx^zY \]dD)WN1lΫ~-T<|r-WE񫽧<Ӳ1FBwJʼmV6c iTj'fQB+JV!tM VeVuB1TՊ:26R*[%K,10&>Q)aVekr:~. XuzRZE\M6c M=#f]$*? aLo3}m(E[SMlw5v4.bAFPѤE=$]z 'Z]DyEޕ.XҔ#e 6G6K`V46m'E-f6c iT?t@ gcj9CGu!@z GuyCe]̼[IflZ5(yKCxBGU*.ʩqzcHWy`[!3l9?yQFd$6gDmaQ8RQH\ǑJQFy -4wcjrؔQٸkQap kbe0kmm J)]\8&B1DLjsE8cT# "T0BqH zg)[]׮wz{CM/OI. +W}RdT*qKT` J@ oLJbz PWʴD8T-h7:;0#82h *LuKZ 0:6SNU+,,K/Qҋ'a@w 'x I#϶6E৒E_플jyx㍝pʫpS┿#!kF9&Q򬸐(kbũAEkqyJ?[{)U(h>b+j-\y7UTѥʔp Q=u~#\$d/z6+BIzԑBO1*M2J.4wOpO·\|͚~+Rz'hO(Y-qU3 ygxiS yRۣF$((ge2 gu58/NZ _}#шK6d׮2p1?\rnXJZ>ƅ<<]lH 7^le}%䉀\+l[mZ/WZ_﹌ }ߗEL*59Z͖| (C >qSX٢E ׌8ve̘1F\  \&:B>IYq)UC|l"뮻mWEiZ.C )9U6pC,{R.7xcd]}Սhw٠sbSqCnmBȂ8(RE*cPhRpCԩT?zR\71&2GQFn~ZB{K^(̅~ ~K \fr^B{,믿g!j{TS¹^{aU/pD ㊷ky?).Cߍ6֌Sv %YZTN 8$du9H7|KN]>aϾr7~ 0:6Rc|嗖Z/'쥇9rgx!> oWHrge#,y=Z5T3gY[nbK1JZ4)E DIr2P!PkritPN.wwmj\a*K.鵕rYt{mŰBTj!o+@@bP&h\ζXZA!7|ӼM>M^T=ȑaP>y2,QF׮]͎;XQD#I]+k8@!xU,IzG,7˿BǵnQ'Ќr߽{wSIl0}8tj>_CZyj-⵺lEy嗽B۩w4>ZMHIcջI+VA:RǏV9̂zBİXq13p@#iVUe7 d@+F۶m1vvm^?S9MJ@gk2uZ1- SNu$Ds X,i/(!$]ԋWXWH_`?S5#b[W(TRYf9O2eJ>D-Za[\*atCҴwaԩu+{cӜtI}γ֧?SsGlCE@ф!qщǀ/\x* H^zQaA~PLW]uy<Q1c.rӷoߺM?xT=v$@#{T^ːqic-ˬZ(׵Oi/B9_|EoWKayo`뮦) U\hQ\Di>^bע]HrV? GZaFX f~%l.V`|T5O۵Э)W ZԷp,|%Kɖ%/akݺu}1`A( &Ca'#V"ᓘ|Tn)Xdo%+9^ (b!OAW;I<|ױ W^tzf 60p2dHpkanoƫj~i2hDt ?YuU+"9Zgv\4BycT)7B@ H*.وF@z~8v|ep(g(ÚBN}MW:14fRzIXE-& ?/׶|- Gz$lv|i fmL%z.:wOCx&lbdP4MQ{6$9sf٤.1Rw˚_~e=z3?`Wgęqayb6"t9)vaCis[Vs@MtWΞD&MyU2iâP%6c x oq1\%'6IN,5Zju<ʫWgZ`!;U (%X\m۴i<+դ dћT'_TtRKdc W>nvWGիk\h)[ou /\|  $cǎ 3x^/&MT|xoG'(ٗdoM2H3_s$? ' CWPy$ؐp.w^ ! e,"c hT:&tN͠tj>_$`[7NL2R?yRBHWx^VW_;l4Lbd<^$[u# f{챇ꪫ̰a7#zpTa9q/>K*Ckp< @F@РA{m;4@ a2zo GiN9Tbki¼iPQEWx݅Z,KW|AۍHO?mbյL.c ")]ڕwy޺X>c#@.{hq(鮹-QۉԆ\rܸqMܞyk^({頄Y骣b#hTP*>yTѨ7\am /Ptdu?2ݳgOa'~9G%I9H\)tō7M8_yfO g5VЫM6[2p dK/?>FIm%HAX! @+V5Ԟ@^;0oy+>E<\O}j-ZiUl.L丅ם!|I5gUW]Y ^xYwuK>nGb{7}w_{O۶m}Q7\'uݔaJX8k1))L`ԩo߾sύ|@5j.Wjm18[o5{6pVngtaG IOm3Ԝ|fweG941 .A?ϒsdwޒJ8C$B )+g}V")Rij:_RByDHBk N3qĒ=P\Ɂ)8}TJһQ\A :_ ,e$\}aӹ(˱[m<cT޶+17HתIAS2duf!N6k52Ǐ7~3$v@Q@֘tҥK @"+;vl%FM 5ThPrXM Ub3ƐrQ־-[<!whr@ i{zFxHnAM[n9rh;>&GH-ζ¸( Mo~m"xNc k)+9v?SVS7}„ Zz @o@H{c2|J28Tc42UVWHg0H[++g}⋭ITOtf!nk| $QؼjL^_tL &Ba8UqHNtl;$:hV0EU*Y4$ShΝ;{ރɋ曪}]qyuY') >mldmzL  ;?S/e rn#mdH 504hk^k|MzD3fvGJ#[Ϭ%iSxYQ/ؒ8 Ivj;VU.0j\P%Tk jw3zH SA-nq1d }Q<ҮvI*ᢧrJK.1W]uU"sO9}%0_P w,2֬nM/(B lVfZՈt$.l2Fǘ|Z]-.Ϋ`;_EpTY+Y5W8^.ll!L_nb\}+fgXjWۮDӓȆ<ki4!/ {t(;0 _{l9226lXC+ޯDl!JT$\ٮIZtq:ݻwsW6~m]:yDԳM7ضQIL6m{g2 ȭdE1]^J#8~(O{q @@@z_}PG 1l"o̘1jVB6ѕc 'lRCO )oaH V0_F}Ip-JBH_[o%QL!+8W"b,O6YuU/_˥RR=C_8 =T9B=\C-`o_oey]ʫ`;_Ey63O3O~f9K*<1RBUme7[ou])دpq/¸[}e)Z@;]:t@@9ңIA],rߢE$~C5&мysdꫯE]j;9K]Z/o!j7o/_^U:_`GbX @߾}M9ƚp72%^P(z, !h<Ez)#2",Ծ}{)^蠃hN_~e\]w]o?,dcرy衇ʖpr^ 绶%GYl&瞛O(/4ٗb' ݎڞ09ӽc.SQ# AjeSaE\yH.:L:3P~Eb=HZ ϢtA&M =%9N:~2P\p]pҿh.F2q-89JS\v d &o>/A +V`#z7w}ȒWuA+QT:~rh͏W'AkLfhPrѨ\6Lm4 ert䫭)g&6'@Qh˳Vs=G`۶m(Z}.@[ʷQEdr%z7(>U'Qa>4hR Z M`D )c)< ˭@)paz" Z(nrVht.2j.\^Y/ݻ<ɻ`7i1 L[5ް}kIUפqłd ,žMyqTO@jrFLm-P9C^h"V;!JjE|!MrX2Vb!1D&ʳѕG=Ca[~RrD1ĐAG¼pD~1s eVTC ){s@jA@/먮}'TM@Aҹ`Q~gDqEZ1 (BP1y/(pd/#(^Pa_U/ϓQ[hQu>#N:cʅGqǃ>Ƀa1!ˮBQJQB!g*9B y/|NI, ҳ#jnUuZLw#O@ݗ8D1RWnn.zkۍ7W^I9iuz#=":IԗW\$Ex=QjI^ @ ?nAf@N@a &7ꢡj#қoi:w\q6y/'& ]CuQ3TCZ `Ba;NR&r-5\e\}ݷ:w.,xԋ(6_Dvd=dfRtAp-RUUf=ܷE*bZQn+Fd9PqꩧVP؊:uVQ'$bP$;sa3ʔ-"кS(~wG*H"7r07IW[&· l9ryg|S,qV40N:y]x&^RM*;h. |A#{gMv`9JF2:{-{Iѽ"jk|ɞQW^i䤓N2#F¯H7^{E-Z[2ĬjkG!fߌ5*Mk1K@bT}-&ΒsVǽ+fwwy=/ɺM.)Hy FQ1|p˸_oxT5\ӫlK &߹9=RtWEmgRM;AAI\epͶ1O_p@ g "OLBs$š(MEhUUk2FdUw y#㌸qb 6\w65 tysҥ O"r-ĕjqukg!o!m]Oq!dhR< V3I&wNZzU<%es<Ǚ"gy[x뭷Nvstq% qD)KJ^x[틌Zz M޽=$ܒ^xSn+O>hoQz "CH'd w-.F;c$O"n.XBYnwBEetWw IנeqqN0Cş;v2eQíX@С~+z\0B*IɪΜ{eP^rw[bp D (ޠVUo/WWO.]̕t2-ܙi0(ݺu3 &݄@Z L636РRm7ʡ՜9sgdW_} OTQik)VZFGmʅ>q[#k-&TS}~*:t7nQ4>< 1TQ$N ! ]V|T)59$OƋɗ!SNVQk%ѣ9^gj@}s6h#OgoG)ԓv>5{lo,*oَ?L0̚5Ihq>MTm Dk)iOI&yud쪶F n6tSӱcȋïj^u>^,cƌ12,+St.lяrJaj9@#N}T1%(c.Rt/w>2BiJy2 `k`QL` L8,j0W9#9@ ,9.e{JA0H"Y@ !Z6Hd@L 1Fs  @b*xv @ 駟JC<T&|j@~s7ق @ zҁX6֝D!@ 7..B# @@`Mm!@xW\of!RN @ W~;VZɗ @ }cdSC@@̘1Üx~{V2$B @Y%0`?w'ـ @Ac|gj @ ޽{7|ӚkM' @@ + 7ڎ;hV_}u_ @@>`L-!@x̅^hF1':s̕W^9'ǚkitD @ j&L.^1|8؀ @@̝RY@b裏g}\pA oμ;<ӬY3~v@ @W%n:@ Ře&@IDAT Pɓ'}d}1{G! @ )7t?~Nro @ @ _SMm!@5%*)!@ @y!$]w]v5k/ @ @ _0 XtEoZn]k1 @ F#pW)Suـ @Gc5^fe̞=ۚN" d@Yf栃2#GdWj@ = 0ڽ{w؀ @G`U#cǖ֦M4 @ Hl޼yw}g&MyرgM61뮻nAPC@ @_|>}-Zb@ ?fW$rG@9Sa@ @Æ B5[8 @@N $7jC @ @ LqXVZO< 9 @12u;  @ @ Pk?yg|9 a~}H؀ @@ `O!@ @ 8fΜis9 @ bc7 @ @ {׼꫾;,R46 @ `Q 7 @ @ FG8M@ @ @ @ #p &.b0% @ 1\dH @ @rM70wu.bn;_ @0a @ @=3gO>ǡUVO>46 @ `aB @ @ k3#F1ݻi׮/ @ @6cب@ @ Qe]ka?p_ @\0p! @ @ٳg?L:uNݛ5kf.rӼy9i @ Fc0: @ @rE[o5·zҥ/ @ @a0>@ @ @ 7ks۾}{sYg؀ @ P @ @O<Ͼ^}զUV46 @ #1F9B @ @2O6/xl|il@ @Bc(8 @ @,o֜}پkΜ{46 @ D%1FTR@ @ dٳqgLەW^iZnKc @@TcD%q @ @@, OңGfT @1ǚ+A @ @ DO?5D OҧO_ @#.1 @ @RO`̙樣2ӦM7 -/ @ @q `C @h@Æ kRQ$@@|+Ga6ػprq_IH%`D*DAJ@Q*+@W)ir R H GZ@J:INߓ{&gԙSfڌ5(?ߨӧOgY1w]w]k. @+ '@ @@3 ̙3'mUJD`q!~hʕq'˳+STV  @B@2F! @ @@3|ͱjժXn]V  "k֬_8V^])+dsU @Q(Iq @ Є) #%clx~7,vMZȑ#׏oo}[te5I7xcV|3qEe @ @@!$cRS, @4@ڞdܹ9{UIN J^xx׳FCaf*b̙1bĈN:e3:wU @QHM @ D7pCޞƏNhmUWŨ:iӦA5בV… /:thV  @Z@2FE#@ @@N/R^f̘׿֫ @E %Tu]yVH+dL2Z>;ҪU#8"?E @ @(1*( @'PӪڪR+f￿gҥ1|;W3&n[oW^yeV  @K@2Fd%@ @@fΜuنD2F$@&=zt\fMqq%ku_Ν㦛n]f @ @@$cKV\ @AokyڴiN R̙'O.8CO>ɺ/oYe. @ PL @XlY~uhu:SiH-P m5V-zp o~j @(d @HK/^겝IiHX`ԨQl\|ō# @+ b @ @֭[ӟSO=iwhm/b꫍ٳ^kt @ P_Ӟ @ sJu @%bU4&Lh 2 @H@2F=lS%@ @ \ }נDK"뮂u|8⦛n*XL @ Pdڄ @ @|x衇4Gy$,YҠ{DC b`vv8묳 .r @Qla  @ Hn_[|n$@f9rdzO+W  @ $c9 @ @@ Xpay睍u  @@S ̝;7&MTƍGuTW('@ @ Hhù  @('o=^9&O+VhL @&3fLY}=1lذxwޗ @(O͚ @V =e˖?8 @b =][o!<2o @ P( @>(HAZ/ӦMk!Ο??<ȢoҤ @-B@2Fx A @7pC<M{6 Fjr.]駟o} @Q @h/b u,X xBT"Ǝ[И5k߾}|lQӟ4RR @QHM @ P 믿@/J;hY&MeHSi[SƯݻwSt @P@2F>tS&@ @e ̞=;瞂R2FI$@ 9@w}#%}mr  @ @1 ( @ )p7GZLJ~/BÊG%VĘ8qbbt?;3۠55UG @ H(@ @hʕ+#%c:Fd%@ 3&V^7hРb/})o; @(dbI @ u]1o޼]m1j7҂V`W^qEԩS㨣6m4` @@4҆ @F c_7ߌӧǐ!Cٍ @NӦM_~NmkkI'#F]\= @*`e N @ <+{x @@aFڵ?>z.Ѣ @ PP @ *H (իc̘1G}4.ׯ_b @MI!5"@ @@{クxwn{?F  @@&OkP=3;e]t @ Pl+c[X| @Aok֡ea?0D!@ 9rdvm;qIĨ @hJM/ @Xti~9jWdيL ,X &LP{m1pꪫbʔ)q>  @ \)i.y @ @FK,iRSF"W^Mگ @@;vlTTTԊѳg83ߣSN׀ @-E-I @e+ǀ[nѶm|L[fM<ekn мFq)bĈ3)"F- @D+cħbL @ޚ5e˖Eں󩧞ǯK.}=VZf7ic=vb @jK9HIÇgDŜ @ @Hh  @(/X~СC1w)b#-@0#^z  @@F:(=Hs @ @ HhO  @(K={f{ѢEYו:t^ze2 @R"1cu]΋=# @Zd @0cVH R&Os oȐ!0 Rk\ @hdӹ @'УGj/\0S\h)GluYgŷh׮]Kq @ @1 ) @F`Õ1RiM+ _BΝ;?; @ Њڶ* @@ڎk׮YgκvAZ@NOђ @ P4E @0`@VfʺvA @ @@Hhw @ @&c|ᇍ) @ @xC @ ,>ȺvA @ @@Hhw @ @Vh4 @ @" ( @ @d֬YY. @ @hW @4Z`mJ>F @ @ Hh @h );wn,[YƢS @ @O@2YxG @V%[F6m<}k @ @4d7# @ "ЩS4hPV,Y. @ @4dfa) @ #O:+ou @ @z$@ @@ 7̺vA @ @@ Hhzs= @ @`!` @ @hdӹ @/6d ߎ5kd @ @ @i$c4 @ PP WXjU[C0 @ @' ~^Z @ @E l&ѿ1=Y. @ @hZM7 @\`wΊse] @ @ @i$c4 @ Pp 1Qpb  @ @K@2F4&@ @@i+ĪU\ @ @ t1ZO @(;"MU @ @tz"@ @@QulMVl[dq @ @ Ф1[g @(;'ȺvA @ @@ Hh:k= @ @h{Vnݺ2 @ @4dq  @*/~1+cڴiYe. @ @hM @U`РA[fVp @ @ 1\ @(κvA @ @@Hhg @ @nUOĪUޯ @ @ @V`}6mڬ駟^  @ @M# iB @ l&g3~k @ @_@2F@ @&8֭*sA @ @@q$cWt @4Wլf͚=\V  @ @+  @ @IlMV߲] @ @ P\ @M.pgyf] @ @ @1+: @\ދ_|1 @ @Q<[  @ ,m] <81cd] @ @ @x1g+2 @M#{ѱjժ2 @ @G@2Fq\E%@ @@ |[?/ @ @QWQ  @ Ьi;k v[ֵ  @ @# 8 @ @;1<#1cƌ2 @ @^}CH @-ACM6$%wg}vWLߎ%K8-"zYcBW1t7_S6mZ^àA2=Vт yXxq;X\ @ZdD @رc}qׯ1~DN֗yC@tAp' .k5ѣGѡCەs1gϮF?1߃j-sΉ &T'կ+ @ @@KMIK{"C @ lUܹscԨQA(Z'|Rpǎ+TuߥEŚ5k խ8 @ @1+8 @W`С~e "/4H\ PE`1iҤ*%}c̙3ۉ @ @$c41 @ ~zV3f̈Ye. PU`ȑU/)*D'@ @U$cT @({ǎ;5* L81͛W(.]{oQb J @S@2Fs @M$/RL2z M`1vآ{ܸq| @ 1Z\ @haÆ[o^uUbQFU{ @ P21JQ @ m6N=Ԭ%X]vR1֮]wygL k֬6Tog򗿌CWՌAJ<(1mڴbUrUtUWE#:+6l\lݺuq]w7O>d\GJlzlv}/oo\{ @mJ1$ @b8 NUh׮]\35jT動VܹsbvS#F#<7#__=.jrKĎ˖-VH&1rvm{ĕW^+Wլe?| 6,OM+?O2fO=T& @ P1J @ g?-2E]^V G mUH7˹U6}xsޓX&~_^/X ~ӟfVHz[>5\SĐ}/8DJGU>gy1a2+Ucr70%|{ߋ{N!wC.W{|ͫS裏>$b̞={ڴi?2dHtڵ{׿Ɯ9sjlSʴuʵ^[ iu9V/ǏKSm @ $cGh @h@m7 lWE@y䑱FUcĉZǬY5O_:#1a„j}U-HsK:y /mG9eԧ>'tR;o  @dRyA @F~o;+K/A'0|𜓞4iRg[ -ʻ=EmQ*\+W{QG'O>oʊ^zߞIh߾}eq״˫W]/8u9 )ero6))o98LŜU S_GN:UZ>@O @( 9 @ @]tQl6Yw/n-//9WmWάP*DnݺšZuNۍ|7͸"% HۨG?+2-);[)UW]iU:tȌ鬳Ϊm9Ν;7㎜u{k&z葳>_a/~:.䒼u* @ P 1J) @ LK/b" (qvEJ\un$Wʲ|ۛq9㨼7xc[Ҷ{n*>a6zyȷIޛT4 Ro2)ү~H[4[[MPyB @2. @)VŪU{^|Y.(m| ӦM_~Γپ[[.ƎTx)DVVHۑ;|H;mxX"&La~7M {mkJ9#sѶm51q\ @ P? L @"pgz̙33 {JG`СN;P}Vv뭷λjBNk)LҖ+zj-jUy'I i{\ǀUUc9&S{*\GAcjvm3LMI*9oPH @V$ =,C%@ @@S wytz`̞=ik>Zyc jJzk:v!obG1ں2Wʷ~w}#ט+̘1ga/_fͪ+ @JJ}Id @ @`)#m/_dzk+>e P={C9$ƍWm#GaÆU+Zo80pM~Μ99cU#vqǜu )L+Y1eʔjüy󪵫,(>ʰz5i>zH۵8 @ PjV('j> @(vm~{/3W^ye\U'@Dsf&M >sޛoXuUrm] UbٲeYuաCtM6o߾bX`A}o)hwy#@ @@KRq @ @ 瞙-Kڶy9_:j"@P_җmYb^:ƌ+Rr†Gnj]Qc{r/!QcM6r…Yu-ʺHI"iB膬&C @4@oҚ{4'@ @))+OBF5JK mo~3mCmLr_עsιU缿_w%g_pҥYu|Iu1/F1|3NJ4ז @F@2FyTJ @ַw^A2.j (|[L6-^~j׿/bT/V(\|y5%N伡5%0t5+BZ $QSR YW^dei @JQ})Nʜ @ @8#FŋǕW^e]K.)Y @;S<ƐV?UoŌ:vmȷuȆۆ|[no\3gΌu>j=ܜ*L۴wq ' @Zd8  @-_ώ=z\5?ϱhѢꫣ}{7p\(c=6g2رcϏ:dfV:3fLs19 Q/a֬Yjժ(J^!>6\#߸V\}Q?gΙ3'3ׯ_$N;-gB @]6%iA @z_t/eĒ%K6%]#̙08qM<9ΝMZ R /P9FY&~qra9ۦwy'o]}+ޒi?p+VSH @ HƨH  @!5|eEWx* PiC9$LFf}m]v%m?x޺VKlٲmSc=<@}oɴ5@ M+ @Y͝ @8ã{q 'G{뭷qG/-0|7n\IL4)͛Y-g„ SA椘{7|J9ӫ*㎼PS2FJh;Sb7.|Ir-uiZnV!CT^6_Wέk-'xb㺑 @-Y- @Z~i{޽{g6/iY_K_Rڊcՙ/ӿ&ڭ[6lXBM74gȷ~;%!O byj#v}ju[ou۷Zy*Hnu)_U{*n&O25mGo\\s5qUWU;RK8 @h1Zc2H @li{vک@ӗp725_RJ]vqGQ"}kѹs\U-77矟Oކ5T\pbŊ-vnr3KӿXrSx穩[q̙]w]݂itY @ 9 @ @ 0 qWm4>h4xju h]sLO6-^~uޢӴO6m*/^OsNVY}._y?u~a\xᅱnݺmU{RoIRMꫯ>(WU;gLzN_C# @F3 @Z@ǎ#-k΍6(kgώ|;q)… \ z;su]ܾ1 b8H[p 7hڵqüq{Y(_:DJ$ɷF0vZU]6,=М-欯0%\|9^ѿu  @ P 1J) @Z@Z#-K닶;3{odgf8#P.^ЍnVҥK8Ǐ/~OmSY1k֬8#K.袋SN3MJXwo˼y5Y_|HYf}zϼsHە~_EJXfM92N>+~ԴLm @ @5Hh O  @ _?qV}*zj,ZZZ@J)ri+>I^jH5ik#8"~ǔ)S"+^zi&iϪ"%k%`Ȑ!ӟt۳}w}3[1TMI[;&Ҫ'N̺lM۸̿^{m̘1#dw-YcCvaLIW @@R9 @ @@ݻwq1z/?\(@IDAT~/X*O_s9q1DA@ٳgr!H+P 0&EK["=1vؼSߞ9۶m}:ܹscʕyZ`o[)-.IgW߾}3iuJ7p*~ɓ㡇_twyҿ2%٥ڎ7<߅7޸  @ ЪѪ @ @uD{,TpoĈqdTk)PGҦXk2[y%~e2_Dý=zK6۷n-E]nJ裏"Q["vm)I1GJ[sh+U2cKcK"F3[/W8e @()%8M @-W`6/?!r/RfN8!~ ] oKnݺŰaÚmiU/<:HJKU!{t9aV[ oMېTנqӶnI,;3 $lIu!R"e]?xzu)ԩS㢋.]v٥t~x3&E75cI2eJ?6h<-G3_UD9_y(!@ @@ ?'WO?19 @JM`޼y6%!@ Y&nK#߿Q 鯫 gl4@w穧=ܹs3g"6tLRC?m F}:sx3 hgώt~'ѫWiLo}Jjjlٲ?ӧO_o6H +[ne9hРfcMWW 2t5̌ @)郞暪]SHƨ= @ }YS7EZ%K+믿>VZsmڴC9$F_rQHdzfKh uIưMIKxR@ @ѭ[82K_xnݺ?~|&!#-?a„He @ @-I@2FKzB @Oc_"^xᅸ yV83ⳟl?z(֮] M)xxnN;-/[l{w.q%4pE @Q}c M @ &еkя~cرq5ī3+⮻ʜqA(MaAfΜJ˙iӦպh : @ @7# @4BC1|̙V5jT}ݱ`QgϞ^{mL _җ?R@ckoF5%ċE;lݣ]v  @ @@ @ @@vqHĉ3u9#,]4g`v$f䌝w9ڶgN8g-^HgJHs-СCWdh B @_@2F?# @ @F 2 9ϟٞd/9է/^z~k>gKJrڵooVL>=p.̙S |3veiU  @ P:1JY  @n'xbL_7.&LPkbFn⮻ʜ SNU7/Di[裏2)2"Θ1#VZUI3+"%`|ӟ @ @J[@2Fi?_#@ @@Y :̙V6x3ۙDʤV9)ƱFe.REzΕ[nek׮]I @R6 @4\}^{e??)S駟ΜӧOsԩS3g՛t>Ac뭷$gtnfѵkתͽd1{HۈiՒbݺu*sK5ItQLx  @ @@ H(i* @ 0O}Sqqea…3ij>IHK.WU /9sݘ߿$)Q#ѽ{gZ?άRQkZ"m#S$;w$\ċ޽{Wm= @ @1M @(u={9\׮]$3^|Hg\K,tԩS#RGzM}*O i:dδG6|ڦyUTTDڶe͚55O).^˗/$}'R͠A2i;ʄҦM  @ @Qִ @ @pm۶m6s)w$Sto{F!ҙp@~'ZT&]l晲X @ @$@ @V/49:蠬|YI|AYfej좚&li劔l뵲5nRm  @ @Qդ @ @9 o #pQ3ׅ 6j j6cAW^,jzݻ ItM @D@2FA!@ @uH[glV;V\/EŒ%K2}*<+.]W̙W,5kDv2gJСCӸtRgϞ䋮]4Mu @ @Qդ @ @ t19[\ @ PnmmK @ @ @(dbM @ @ @d{&L @ @ @S@2F1u&@ @ @ @N@2F=r&@ @ @ @) b @ @ @ @e'   @ @ @ @QL]  @ @ @ @Qv܄  @ @ @ @b H( @ @ @ @@ H(Gn @ @ @ @@1$cSWl @ @ @ @$c#7a @ @ @ @1+6 @ @ @ Pv10 @ @ @ PL @ @ @(;eM @ @ @(dbM @ @ @d{&L @ @ @S@2F1u&@ @ @ @N@2F=r&@ @ @ @) b @ @ @ @e'   @.ЦMr'0 @JDyA(A%PM P_V֤ @$MkzZJ(/͖ ~Y釀 @RTy @JO@2F=S3"@(жH% @FV  Pv~_v܄  @rh׮]? @%"M8 @t-  @:tP^'@ @@b4 @M' Dh]ve- @i5A @Hh-O8  @Eh׮]tҥ=M @ +s @@kZq @,رc{ @HSlOR?3  @_@2F?# @nݺEڇA @ >) @M@2Fk{bK(@ݣ}EEx @,>' @Q@2Fk|jL(@6m2QDd  @Q2#}>q @h1ZS3f @@ڶm=zeI'@ @@ښ$}IK @ZmOθ  @EH~ڱc"$< @#}" @.`3 PdnݺeVXlY[Ƚ O @@9 .]DNqL P1J @iKFEEEËG @@ ]vvڕ @dR{C(@hZ.xŊ|Xvmz @rh۶mlV(m @2Qݔ  @Hd}SR'|")1%@ P) sΙ$= @@) H(ŧjN @" __3%esEUx @Z@3 )A @$c6? @@/Rӹf͚XreTTTd3֭[W䞅'@ @% $ѡCziC @rQ.O<  @EHXM=#%b2ҙ4ҹvLyQ!< @&H g~$}.HgJHgs @(G͙ Pd ot @ @ @rh[n6_ @ @ @ @@1$cSWl @ @ @ @$c#7a @ @ @ @1+6 @ @ @ Pv10 @ @ @ PL @ @ @(;eM @ @ @(dbM @ @ @d{&L @ @ @S@2F1u&@ @ @ @N@2F=r&@ @ @ @) b @ @ @ @e'   @ @ @ @QL]  @ @ @ @h_v36a @ <354hP۷6*͛3fUl]v6mڬ.7f͊> T>EΝ֫ L'b< @ @Q U1  @e,<֮]WO:*o}~:.|ՙGǎkl*'O7tSap [WA niOx @ @! b @ j̙K.9޴s)$@ @ @@>d @ PW_}u{g***Gɓ'+¼:Đ!Cⳟl.TV5%]L81^xX`AY&#})Ƴ{g._~x㩧ٳg'|6(zc?ͱu5N}1vx'ߏUVeկ~58|/Ճ>oFRڥDҷog}_r2Ɔ=\g͚oRw}űGݫW-H{2?O)$=m{~cu]kMw9LW @ @@Kђ @\o[7.gܝv)+.Lr@KW_}5sD}kqI'EJҨV/)!"ב5RD?SO=5Wz͙3'~MJISRć~9'MI 1bD^Wo;3ņAӪ Uq-3I U6|lٲH̙3gk&qoaWV %c\}ժ~}窶r)!$%XRBΙg7.ޥ3]z @ @-   @*H+.\r%Y+->s=1mڴ 31>dpgG}T[zZ-1GZ#%,]^aΝw^f'VwfR2HS]_:F]o&% ]vYlYMRb)nYxnϻO:Q駟^7ݵ @ @I1zүa- @kT` h"n/vm9^+] y7BWPo}CS]vͻd׮JxV%s17wqGG7h.҆mEt;'@ @ Sk"@yG$ l{ӤINӧOy5=oY6… kMߗa҄ ȑ#Ӝ9s*G䀏SI'9(&2~mQ>dؼF>o`/Ҏ;[5;r;=+s=7M>M]m:qĴbŊm2Z[o6}=Дןw( sM#Fh3=uo= @ @& "C :}P}nFt]90(0&p.^{U[mUW.HRSNJ'xb~U(}SJ3fh^-!Q>ϴ ĨxRhoo #F1j;gON+aoN oRޅ"dʻyuץn29 @ @nэ&@XeAYE7| 팱7ר=֫^~m^sPA+iϕ|JG3:zz*:5Iŋ|ǒ^ki]^sjD @ @kZ_f#@Xr0Fqs @ƭڪt. Phū;\4o{N [o|ڊA= n'|vcVŖ[nY/iw/Sm|gM͂1.4dȐ9-oyK%(rC̘>}zzǛ.9 倎ѣG7JyiӦi>tF;HúqmMw똖 @ @@ s/ @z;P^{-M8O}㭷ޚW)zJj:О?7_;o_[\Z7V 8qI'/8Wz]xf]ZnK>颋.Jzh@<8t{ @ @(3Fz @ \sM.,iw,,Y.Ҧ|=%5pwhxǚ=ܓ^|v~WoOA$"$-Z|GSޭ7oǧkԔ6|tgWEY@Oq9 & 0QsIN9ԯ_c}&MTs:SS vyҹdc>"~)R^}a}>cĈ rW^~jC&]}ի|[1ϟ.]0#I]R4+jj& /Bʦ==b} @ @cɨ'@lƌtluf:tUW||%\R?84k֬spMwh:Iw?X:cgtQrYgfΜYTZA0G @/~o'򗿬 ;DNoօs<3ѐw)K#栘ڣD^wi 7,V/ Xpaʻ4KytOxok @ @ [#0 @`8ԩSS{>"/I9w4O|mH|$IQz??{]/ +?+A-yF)5>Fvuהȁ7JEyߜ9FvIA¹.w hcsC6nިzUݴiRC-X Pvaw#)KwR)%rΙ߯'7 @ @* U1  @ lv㎫vѴs': eGstbŃsNsre]~ߥ7wɻLm٦Ҩ.R DiV[0Sq++A/y ovhܰLO @ @S&$@~zz֭y<[љwLѡnm::4hЄ GQe{nZK[dIzG]wݕi ƛtgΙ1:rP[ltx #;l)#Oܓ1tS` @ @0= @"зo>vaJǏOe_rj{BSN9%ژwݝF.¦]7ʑ,Ecq#Ȗ~/}KiРAޮ1=\NkozM @ @ ]h @Cxg?e7h|%q^ޕ .PP{]CC9cX:3lPֵm'?>ѰW2jNMկ=ܳtPqёe w]i]ti>.Z}mGw+"M4)͚5}8c*y 7lا+s@%\tקiӦŋ7}l[A,Gydzߞ[ocrG2eJ}ݗ/_ޮS>%}\z馛nJ˖-+fU~|ː!CR~'xx{6{u @ @(3|Qt:1}EJ"@ Jz衇*yiEСC+7tӴnUr|=ܓϙ3dwA~)[:ϱ&m&m֕wv=jQC @ Ȼ?}\Xm1j5 @!57<Fb-Rν-們}g-;^lƕCsEo6Hޕ @ @}n{ @ @ @ @ ch @ @ @ @. u3# @ @ @ @1 i4 @ @ @ @ZѺ @ @ @ @B4 @ @ @ @ h @ @ @ @@`B  @ @ @ @cnf @ @ @ @P@0F! @ @ @ @@1Z73 @ @ @ P( F @ @ @ @uA @ @ @(QH @ @ @ к`͌ @ @ @ @ (@ @ @ @h]@0FfF @ @ @ @ ch @ @ @ @. u3# @ @ @ @1 i4 @ @ @ @ZѺ @ @ @ @B4 @ @ @ @ h @ @ @ @@`B  @ @ @ @cnf @ @ @ @PҥKk  @ @ @ @B`ɒ6!dj0ƂZ @ @ @ @mB,jA`6 1 @ @ @ @VhSZtF5c^s @ @ @ @@61t̙3k  @ @ @ @BALET xV_lQ= @ @ @ @ %w1uMEnc<sE5͘1zJ @ @ @x 4ȱOT1EÃv[m= @ @ @ @ - "tc.ڤj0F[k @ @ @ @p b)nmЧqms1iz@me}`8͛7NW5~YS<4! @ @ @ @z@ȱ 1rD1C{1rqsz  @ @ @ @U >1r,D]ʱ9fԯE"yE_iȐ!iԨQjW @ @ @ @@ ).\X{b|4P׾Io_]}:_ TߤL @ @ @QyN;-]r%֕1 :2 @ @ @ @K,XQ$rKZ|y#?Pԡ_~iiԨQiرi̘1i=H#FhW% @ @ @ @sM3fHSNMSLIwqGZpaW yYYVۺ*泑O%N׍78ΕaÆ_= @ @ @ @`ҥK+9a̜93⋫ڛ#I~둟kҷC]Q]fqȧEޠZJ @ @ @XK/s/w+AqsL|ȶ @ @ @X#K)7D$E/0< c"|X#, @ @ @ @B`qL`["O<5k4`E%sưC#, @ @ @ @ ,GOG~$SE @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @7@5Gy˗/ߪ{u]R'2 @ @ @ k,cܸqXbz>}<sзo馛yC @ @ @ ;vC];آqwL<֢>  @ @ @ @kBxHw?#v8 @guO @ @ @(X'1V`8ke/ @ @ @ НR0F)v8'vߝh&@ @ @ @ sywy  @ @ @ @"п#/cj߾}Ubpmy?*EnvhQ; @ @ @ @+zL0Fb<8y^.1y䑣/_˸٤. I @ @ @ =&=o֧Ooz{dlQ4.v+jk>yr]wm9hРW_}˭?͝;w;xȐ!s.HXoӧoǎ=(/<]13v?~x#ziM1e˖mϞwu׽T]S{w<|Ϸg> @ @ @ W;vC];c(vhQ{}}c/qƞa}lm]>>?3eʔqms|2'D)q))~K_#)uL9Aqu^s<h8p"-rDz?@9VijI&M~mAxim;wYdIQ2־E]K͋C\uĉo?rd́,7<5-SM fFM##hQ^_$qJڀ~~mD9fԩEs<'/>A+5XzQ{wn)gĚ?WTǕ @ @ @z@u^fm1G /܍1>2|,@Ph0->/2z4Ͽ+[hbFC,hw.E@2~&q1]9ѸSyGآ@6Ƙ|te۟Yw󭨫Ѧ}!uWsOoS&@ @ @ @-PГ_->l};;nߏvc@wwx\@|LJ4Mȁ;7\!u՝*v.v.Wă[2/Y.aRҧQte4 mؤ 4װ9Ue*  @ @ @ @W `}`xu]RYڶpںf15Bvk:6;zԏGuءq9_`|ܰcR#"Q:.Yl @ @ @<^A{38+<ʢD 1y')G~ia!e}c'[s_Zkvy pG{o̎9ױq4{,slnoc„ w< @ @ @ֈ@ ƈqܷѪvD|5>oS6..u3#&OmѶq|tΜ9c4f5}:>_Ͻ'cKܰu,>#0J'1DYG99O7{_Qwm}}|"6ckns.[r g,#t*̺W}]s55xۣm\u5k+9p%~AM&{<kMƏm25f2cJ8 @ @ @ KzR0FLZc|.jjT?#vQبu7.8qܺpqk[U XհfҤIOF@#Q^}{.5vyfֶGYD911qպ.oذaE˖!Cv>W_:-"Δc7d?Hӊ䤢\ w( @ @ @z@hٱ3η">K~o]ʎ'oX"jjQZwqm0o޼|F];Ұ2Anx&ߦMjpWەbg͢c=ݱqmH&kWmCɪڕ7aykn7) @ @ @ @:(.c,#%~։fxl|kl]|u9䐩ӦM[cy&X">튑6y 9h 67ʦvͦ ߁vC܏h63_6>=^,k@^+kF @ @ @:owG/j}|߸zkyQ}|GE<m V̽S5ZM;^g;J+'0rŧam&[۵Sa﷤,'/|رcק6 @ @ @2#>$7b7⧈yg5'>oc= !cz嘾8#<6j~QCGcW?7Yx%Azt}[O+g5ﲬ=c4N @ @ @^.c1CFҥKWDfNj)e1g4hԠZzrb6%x<$Ǯv9'pzs̹6wO @ @ @z@O Ƙ=iҤnhD[} whu)6/koh]O-Z}֦}yR2zvڭF=KbDߙ`FpΩ(K @ @ @ @G `GQ5m$#w믿AQ{!XvAmԩy5{î#H?}=Ur1lꫯ_-7ƻ9Q4j}x~a]_L @ @ @ֺ@ߵ^C>K?>-?~|#F ?*4Q[}y-rQ%0^{_F T… ,{Vaܺ;4y+bQ @ @ @ @Ѣ|u"*#/^C>;/uGn0R5nܸO+j_Ib7_|e/)kbA @ @ @ZѪCٰ8o„ c6>$`akR?ǀ.+]l tȫv8ꨣvOF>uctq;*km=.룍 @ @ @-1b"P♒,Z趱cnըOb|$lPS)-$~n/|mvɻ{̝;1-ڬv @ @ @ 1::eʔk#`)mhA'{~EO⋗T+7tx%1׉m$$eK0mJq}8Xb-eڲD @ @ @ָcJ:AA@ՎĔ)~7xS/F=N!;F~oheQ{@Ê1V{l|wM4陘7g @ @ @jǔ/vQYebHQN8ahZQ[k&@ @ @ @ cˋ;^ǣrG}eŪG}.sν+mUeMhQrw]" @ @ @ N>[cF.cIK"7'm#]qu;օ @ @ @h пA.Я_Fś,u@9Ibr'@ @ @ @ 8u>bҤIOB|'u|!@ @ @ @oT#+ި(彏:-.]bN8oߋNc( @ @ @ 1ց?qW9.R^<q4ɜч @ @ @h. Q1a„/^<&mYl^]̍p1'g黎'v'1D @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @%4=IENDB`tidyverse/vignettes/review-checklist.md0000644000176200001440000000231613561360544020103 0ustar liggesusers - blob https://github.com/tidyverse/blob/pull/14 - dplyr https://github.com/tidyverse/dplyr/pull/4610 - forcats https://github.com/tidyverse/forcats/pull/218 - ggplot2 https://github.com/tidyverse/ggplot2/pull/3615 - glue https://github.com/tidyverse/glue/pull/152 - googledrive https://github.com/tidyverse/googledrive/pull/282 - haven https://github.com/tidyverse/haven/pull/484 - hms https://github.com/tidyverse/hms/pull/77 - lubridate https://github.com/tidyverse/lubridate/pull/808 - magrittr https://github.com/tidyverse/magrittr/pull/201 - modelr https://github.com/tidyverse/modelr/pull/102 - purrr https://github.com/tidyverse/purrr/pull/719 - readr https://github.com/tidyverse/readr/pull/1045 - readxl https://github.com/tidyverse/readxl/pull/595 - reprex https://github.com/tidyverse/reprex/pull/292 - rvest https://github.com/tidyverse/rvest/pull/257 - stringr https://github.com/tidyverse/stringr/pull/317 - tibble https://github.com/tidyverse/tibble/pull/674 - tidyr (not neeeded) - tidyverse https://github.com/tidyverse/tidyverse/pull/201 - dbplyr https://github.com/tidyverse/dbplyr/pull/374 - dtplyr https://github.com/tidyverse/dtplyr/pull/119 tidyverse/vignettes/manifesto.Rmd0000644000176200001440000001434213665266641016754 0ustar liggesusers--- title: "The tidy tools manifesto" author: "Hadley Wickham" date: "`r Sys.Date()`" output: rmarkdown::html_vignette vignette: > %\VignetteIndexEntry{The tidy tools manifesto} %\VignetteEngine{knitr::rmarkdown} %\VignetteEncoding{UTF-8} --- This document lays out the consistent principles that unify the packages in the tidyverse. The goal of these principles is to provide a uniform interface so that tidyverse packages work together naturally, and once you've mastered one, you have a head start on mastering the others. This is my first attempt at writing down these principles. That means that this manifesto is both aspirational and likely to change heavily in the future. Currently no packages precisely meet the design goals, and while the underlying ideas are stable, I expect their expression in prose will change substantially as I struggle to make explicit my process and thinking. There are many other excellent packages that are not part of the tidyverse, because they are designed with a different set of underlying principles. This doesn't make them better or worse, just different. In other words, the complement to the tidyverse is not the **messy**verse, but many other universes of interrelated packages. There are four basic principles to a tidy API: 1. Reuse existing data structures. 1. Compose simple functions with the pipe. 1. Embrace functional programming. 1. Design for humans. ## Reuse existing data structures Where possible, re-use existing data structures, rather than creating custom data structures for your own package. Generally, I think it's better to prefer common existing data structures over custom data structures, even if slightly ill-fitting. Many R packages (e.g. ggplot2, dplyr, tidyr) work with rectangular datasets made up of observations and variables. If this is true for your package, work with data in either a data frame or [tibble](https://github.com/tidyverse/tibble). Assume the data is tidy, with variables in the columns, and observations in the rows (see [_Tidy Data_](https://www.jstatsoft.org/article/view/v059i10) for more details). Some packages work at a lower level, focussing on a single type of variable. For example, __stringr__ for strings, __lubridate__ for date/times, and __forcats__ for factors. Generally prefer existing base R vector types, but when this is not possible, create your own using an S3 class built on top of an atomic vector or list. If you need "non-standard scoping", where you refer to variables inside a data frame as if they are in the global environment, prefer tidy evaluation over non-standard evaluation. See the examples in [Tidy evaluation](https://tidyeval.tidyverse.org) and [the metaprogramming chapters in Advanced R](https://adv-r.hadley.nz/meta-big-picture.html) for more details. ## Compose simple functions with the pipe > No matter how complex and polished the individual operations are, > it is often the quality of the glue that most directly determines > the power of the system. > > --- Hal Abelson A powerful strategy for solving complex problems is to combine many simple pieces. Each piece should be easily understood in isolation, and have a standard way to combine with other pieces. In R, this strategy plays out by composing single functions with the pipe. The pipe, `%>%`, is a common composition tool that works across all packages. Some things to bear in mind when writing functions: * Strive to keep functions as simple as possible (but no simpler!). Generally, each function should do one thing well, and you should be able to describe the purpose of the function in one sentence. * Avoid mixing side-effects with transformations. Ensure each function either returns an object, or has a side-effect. Don't do both. (This is a slight simplification: functions called primarily for their side-effects should return the primary input invisibly so that they can still be combined in a pipeline.) * Function names should be verbs. The exception is when many functions use the same verb (typically something like "modify", or "add", or "compute"). In that case, avoid duplicating the common verb, and instead focus on the noun. A good example of this is ggplot2: almost every function adds something to an existing plot. An advantage of a pipeable API is that it is not compulsory: if you do not like using the pipe, you can compose functions in whatever way you prepare. Compare this to an operator-overloading approach (such as the `+` in ggplot2), or an object-composition approach (such as the `...` approach in httr). ## Embrace functional programming R is a functional programming language; embrace it, don't fight it. If you're familiar with an object-oriented language like Python or C#, this is going to take some adjustment. But in the long run you will be much better off working with the language, rather than fighting it. Generally, this means you should favour: * Immutable objects and copy-on-modify semantics. This makes your code easier to reason about. * The generic functions provided by S3 and S4. These work very naturally inside a pipe. If you do need mutable state, try to make it an internal implementation detail, rather than exposing it to the user. * Tools that abstract over for-loops, like the apply family of functions or the map functions in purrr. ## Design for humans > Programs must be written for people to read, and only incidentally > for machines to execute. > > --- Hal Abelson Design your API primarily so that it is easy to use by humans. Computer efficiency is a secondary concern because the bottleneck in most data analysis is thinking time, not computing time. * Invest time in naming your functions. Evocative function names make your API easier to use and remember. * Favour explicit, lengthy names, over short, implicit, names. Save the shortest names for the most important operations. * Think about how autocomplete can also make an API that's easy to write. Make sure that function families are identified by a common prefix, not a common suffix. This makes autocomplete more helpful, as you can jog your memory with the prompts. For smaller packages, this may mean that every function has a common prefix (e.g. stringr, xml2, rvest). tidyverse/vignettes/tidyverse-logo.png0000644000176200001440000075776413563551254020025 0ustar liggesusersPNG  IHDR X pHYs!7!73Xz IDATxa9ԐK抔eùiJmӋ9uܕD;C[ B5@H!뢈%4?<6(pZn9{骪&]Q S-o$N2^UՂ+ le;%Rx4k$O$,V)TJ9Lmv_H2VU9WjS-r,(6|ϦL$[q %R>f{*DUU R8{I& 'SE@?3NV)DQCjIƫ:'ЏSSJ9zrRv6HeR }2d,ɓjܒԣq J)'U]L2VU3Rwq pWRNW;zbcG)pgSTl:`ӕRƓ%Rc,&j\ `3h$j5f0N6\)ԣjG*R80$IPo=d)`lRXaʐ}o1XUUg4*Hr&ɨ[ G*(K=J9Ɩlʤ2NnK)e8X'hLTU pS[VJ9d"ɐu1xUUgnq pJ)'RRRc8zrN f7r,(#I)aRp/Gdq)wcR$IFOdgގq J)'RR8zf|#|&Rt6HeA M;%TJO2nͩ$1)7s Rʣ2w$:'lo)R%9lG*RdP)e8x'`Hy)`0N-b$`{:xUU R@)Rx@VJ9LQ5-]LrsR@2N>TJ9zr\ !&jR /)GJ)IS[ܼLTU Ô!5,)3Nr"DԀ;#sRcwI)XQI5`CM2^UդS`R%yR 4`UU-86Q)t RrF ) J)''9Iƪz^ X)J)RRN}lꑊ~`( '[r$UUKwq aGL$UINWUuN sS)INt[Su$1L&z"?-rI$UUUuN 9)pJ)RRҳG*R1NPJN2LTU 3xI& |wQ9#=xG)Iƫ:'Y)RT gST&8֕R%yR -MTU @r:xQ5;b8mr"(8zlW)lKGL$9 Φ8mgl7$1L6ϩ$1)n9mh껥El)4^)ԣj}|ʤ4q UJN2 5>tShRXaʐd3R4)4J)D3IFRTI@ScG)#I)SJ)Iƒ<@O%jA *R$IbHVdSJ9z6r>Hl%)lcG)'G*RJ)Iֿ,&j\ q }r:xQ5IƪzF q }p#|ΧjZffnsuxdj!,Mq1]TeM)骪&FpC֏HrJ t }9cy/dp7;K|&9z2NhRx8‡X+ \n2z`dt`~δK~h$UUK<) SJy4DQ5h^o-3W37i{OƎ|| q1骪I) QJy8(4rL-׻ިu')o_ޑ@~oj Mr>HeR 8`+ Rt2F;9Ny<@\Dh4ɳG*Rl )[@)e8x :nfsfS|+d~eMTo;%oI&cBCv{|i!^ۖÔ;|=}T1L2I;Rʉ$IRNzۺf9[-#|} iIƫ:'@1N3cG)'ՠ)VRݞ7/=|IΦLJ?SD)e8א"4jL-9Oqʛp^zOWv04bƥ)}r:xQ5h^o-N-f~~YO7&uƸdgvIpRNWdfZzbl!wv=g_3|` 4hϗRΧH78R%OrJ bii%N-q ɩ/?tk=/vn' >{Αi\hl1GwQJN2aee5Wҹ?O{7nvO]M}o{r`v\hb1DUUR3wPJ9n)jZffn#FǾ w9W;/]}oGvZ.4Mq1]TRI&WdfZzbl<W2zo,h "$ST|#|&Rt|i!nO-hxhON}9~Bd~Lo0^{ki\h$UU-HP3NXWJO2dH `˕,-G__#I\~Wn~okؕp>o'Dh*Rh껥AzkG\<}{.o>~).qC=}@Fz[ߛy9 [kjCB\LrsRۙq mR%94rL-׻.Fx]=dovxǬ%+9K7<W2$ߟWtV=:=><4#I)8vJ)IƓ<Mtsej)+˫ov|eff6_/ >3#̮֎z/zОͿv4|i9_Wծo GfϞ>H4SI&ZNSm2z2MefjqÇ$/R>ȋU7O'fpp-?=g؛{uUUuF `0NRʉGAzkdnG4b1DUU rMc4N)tR&bq9<Ҿq7Oz^~dʮ֎M3oWCٟ&_@WUuF IS(H24v]y)&0NRʱԣSjKK+yuj)nm32<1<6|sV:׷u<׳_춿6{ΑiBM=Rq[V)e8#|hn/ε>ݾ'?5l꼾_ m}}^kZZ|ónppO4bƥ*`K*INASt:\Z;>W?|{[]3㔭o G&y:xUU Rn@+'a ܻS׹ͅr# IDATBz=DRʘ@%ЯJ)'I2M뭭sU 痳<}CI>>P9]U9I~dRʱԣj ˹2^pz33}5 ޣ# M0* /6 /򥅬8drow;wT)$o[^'Gzi~~9KKCW.-pSeekpq5.Ly\d Rʰ1N'<M\xy.k]A)+y}%Ŭō^?]Wò tuRz5Ah'Sw_Zk[wk_w!Nf27M򫥔sroeښSoJ)ǒL];4J^Zڲd쓟#z]_—/n#߷7G2rx׆~ݿw%.hnAM2^UդS$I)e8;++2Ԙ{|wcy/3_!?S<;{ڥ؏_v|O ɑ=XL2QUո@b$)N2zkc3>?Çm/}/;όGd0Z;nye:g9{?py}9=o|=p߮?7;nrgo_˩OL Z;s`&9z=6~DSjN7/-m=2C y|3Nu[?;Fw/\\|R.]~Cmo G&9z l/)͔RƓ%R&X+ \nȋUQ`kvv&y!H )cI&TX_t=1@+=0v{@ #I)`k3N-2d,ɓjN73Wӹ& {%Mz=QUՂ5UJ9?Azkyuj1bܦivAS\L2^U)`1N-r"(!5hk׻.j̑>W |9)`0N-r,xSjKK+yuj)nO g9:v{@ l1G`}2dl>4jW^YHZW M28'Gf@K b1DUUR@3N>VJ9n)jZffn#]rxdj!Mq1]Tq RI&WdfZzbeٟ{ŠIΧQJO2dH `˕,-؛#{%Mz2!})pRM}Q5h^ombl!<}b$p]RJ9Lj ˹2^[@+1hG*R3NMVJN2 5hN+SKYY^!r`-MTc2z2MefjhޣCivAS,&9S`RN$H4ANf;Mv}󳹶F_VkgCm&y!HS`RTXZZɫSKv{bܦȽ8=7g߿/}p&9dI)`c( 'K4jL-s+m \g~npe5+}eo_{@8Z.&MzT>QUՂpgVJ9?lAzkyuj1bܦr#kd/ᅦGvZ..Mq1]THwq !IƓWNzb܆}C~=o{3J-їڙ#G3|` MO2VUR3NTJ9zrJ t=1n?ok-?{޸{~sܳwwL=$gST8nQ)e8#|hn/ε/z,K{v߱<\7G_=8'Gf@ˇXL2QUոpkSRM2dT [vMǾ{hfݳa_>w)ӗA3sP; b껨<# SRASv23}-u1nþ]y>S~xS{޸/+F_6h BOrI) X?g")5hN+SKYY^6տs,7w=R~ }ۧo GaIN2^UՂΌSٻ?"D (ҤH&$c[k7IkczƙٽW;M줕nvfinwLN4woSKMb%nd$kbOc#G-) ")<u?&Q*/gP}!Y"-cF$JlPL/{oTO5.=Ƅ?^QmdV)78xƘmIl>sep}W/^J8RW6~&Kq])ZGRƘAUF)CԀ-rقf 1`ZkSk-m) ()S.1b-b nc2RI)@1&=[xTrN޼O @M@gY9mRW#`XҰ1!IcHH!1fE?dNg2 S5͛t/ 5~41XA~<-͛j K6<$iuIPB$@-ޫX"ʚiLa țudJ3yA ŃU?nj'&cISj 2iOAP"k$ۦn GQuq j1fPQ05`|~QԀ (if:l'B`HkٯH%A @M0č1a ,XMd:3N/Dgu3?Y {P媟QRV4ܯ /Or5PTrNG XxM/WWT )"aUu_ŢfxR/Q8D bB҈뺏kq ֌1f*!jTr^AP"RУ_]߹SOo?`hmtk5}m|MWK|>r !69H)`cT9nq}.5Za!a ԮPuw9g_XFN[D=r1`TrjbUU|DR5`ܹyN ˻SR(g?V?&& ucʷ4I/7&WPggT=j[Ju]wX-S*1rZ5` (Wa7)[ue59BREø͚}F]\Zǎ->2<~Ы$QWp ń!V(c̠}[L%b* =)[jt0:_]ҏWH$1b-ĀM2RI+q V1&.iTnjkf:Bϫ=}hWGe;n]cM饿M(9Y *sVy¥ok?U XEIs]7G ,7)XvƘU)Ԁ ~Eb: wjᮏJpzF9ACN|lP4ZFB'p9NXwN8_^}:;U?ɬuˉq 1f*W P62iO>N k#P9ݓ(|:| 6kuq] WKy=}]S%o?|)=ۦnpTˁq 1fPҘajlA|? RJtГ zj}|/F[:Yo!c_쫄Ze7o}FFv PㇾHXq"M2RIWq 4"AjELĀ fXG?]sϫ/NQ75]=Ƅ?#jWiȧu׿Jޯp۝6o9&,l1##q SOPvP6O*-VcԦޫJNA_ۤwr/w_&rVwG}'N/}Eg/y{WvM-&$\SpY1TB "W&)JĀ'Ѣ٤M9ӷ˭6gg-5,wSzxWy ?}[8R_L(aTo-ƘAIvPu~:/8/{P޸X~ S?Ĺ<ކo t/c{ =~[zз/DDx`Fo)cL\H?~sr}b0NÝh }?ts.uܼݺ曯_JuA~K?H4()f cQ jAPV*9L# lJ{eI?~QƏo%Y{>~߽;V}8qJ>M8%omWWpPH8aUQ5`LS*9 ( q P-MWRAL_~*Г4lSikrZk\~J_?pP^H$v;M2R9F <)>cvP<_S9~@ @SZԢ?Ʌ.&[߭]鮝,tуzз.yQOo'odQus$HI2ƌJJa ,QMd5~&0P|_ +2LZ3ǚPanzCM S$i{d45S%%1#$#@c3lO5` (W#& lvj ]ע>Sq|EVe A/V*;]=B8AcU Qe +JԜxG~ͺ;%)?ִ7-hۻ|= /J R9 S,B`@k9$iuIcKUe ! IDAT+7P>u7ΪE5.~Hޡg^W't"돩(acC\͑qH8)'0(&s?aiEŚzN{y^: W&l񠤄1f')'4c6IcnleeҞ2i+|2iOlA=mvtHz#! X3(eE>y~@ 02iOq"D ncKu]7A;1N1&.iD+,.53|?6o9& lC=Ƙ1IcH` R;!)D55K Sy_NJ+ :~\ pr %1$JlJ+%bߗI{)%l0 @euc$S1fPQjkj2's9#lj6Cc~UF*\PǸcF%X93)iP&*w)cD_)NNCƘ{$r1P#peEynG]ݎ&uHzzNu0N#Ƙ[U QȤ= 1IJ)]POoQ\cQUF* )uWe=kP$!;pGP&Ӻs/+ @&sVG*! l0$iGҨ9Զ j1fDRB S`l"3)i}|woWKǥry͞GSS#|F )^XA޼3MMe%%7qr @2lOc>sjDǞϪG#}KZSEU_TW6H1fu0N1ƘAUF)CԀ-rقR9~@ Ƅ.h㿣rYwV. u,` AIrm)k! lp$sHJ$q @0%r,1`JɛԸ}W]Be}pzFm__1F6o9& l0,i1us$X{! 1L%~ɜdu}޽]/+~/_RC0L:u2鼂LAIXc1$r0`Tr^ (c{>҆wWrYjt1NdҞrقzzVF#ՁʨGH6c̠*ajO1K.ϨxMփ*G?T;b{BRD&<@% fʤ=m:.lj6c2RI`u5Z1qI#/ Xaq< `))~oo*xq}:3dky[߭]鮉sSzxWy u1kQ_L͑0aYUXdu9VU/KleU6W&&o]jjyˊ)kgݺ{F8qJ{=v74cXySV1f*!jTr^AP"РJz_մcg )kqZuZJ56W'hMp8Q~S&GU#aBWIA |MM1 SjCoU=i|+xI9WvM3<~M+ 0QWp_Tń!` 12Jl43W2}}(+ִz'l|{*)fy~ju}^=q}:qņ?X_TQUF* R\)W4*i75` 53bH VاVYh=Х=Ĺ|U]9bnTiW8D bBҨHc6UF)PH%I{ 13cw֌$iQ:: ԥp86uu;ĀM2R9B K1N9ƘAUF)Ԁ-EbP|_4q.OԽhcr1`T` 4R+|`Ţf}bb-돩9&l1+iuQR0N1fQIԀ TrNG ԕvuu; [LHq]1RF84,c̭\3D "J+J@] C)%lrT1RF84>cvP<_S9~@ Xi]!lGҨ9RF84c̨IԀ ~EbJQ9&l1@eQ0N s* P6r 9bzpH]ݎzzۈLHR1NV3 J'iE.[t^AP"J$bb&GU$Hl8X4*i75` 53bH 44-ZZ<$iu)mcFTtP6(R9eb?3 [Jq]w)Mkcr5` (+I{\p86uu;ĀMWerS@3 J4L "-(ކH$MW8b&T$HP1qI#lXt^޼O ` 6o9&l1匹#GS@]2T3Ԁ ӳf AWvMĀ-&$0NuMҨ!j2iOAP"cwFUer^0Nu3(e5`|~Q j6?&lj6/i~@=`j1&.iW E?йs9y>1`w+vZS(kQ_L͑01`YIc뎒2)fc4&iAJ)+kCLWn_!+OSB@Q8D bBST#ES@1ܪ(eE&)W+$]-[j"z ~{i?B"E"a+%lrTNuq +|$lyfZ,+7(ӵUַ sԵ! 7ߦ3+~p8nG=mĀM&T)Zaք1fPQ5`\鼂D X!zmٺU'ߴ*jpZ/|Y" +㪐^xҗ@\" kcLX 1`CF\M6)`UcF%lyR9y>1`]J+>66OJOԽצjE=NP¥cjii&l1usq X5ƘU)Ԁ ~TrN,_i +ip&.> 5wIe.y[> wD Y-[YO^%.Q]p1`YUNQG g&iL-Ԁ LS&qd˖kJy D׆ڷީ5{7?BzuˇWWm @O< τ!!l*##+q X1ƘAUF)Ԁ-Eb^v}BRi8pPx0/Fk馁x>N~ċԑw]'_*I'<\* kq9N~I&HV1qI#lXt^޼O \6i}T۷5v)=7u$+D:J5³jg%ƧxhUuain`w8A w6o9&l1#XNS24*iAu~zV,_1>|^97~<5% oQ}s}GӴ.xF y^8>ՍwFefS%=kQ8D bB~#X.S0lSe2D "W&)\[##}Y?zзy DDCܲIV-us5~ NS-Zzk^q@Y>C)%lrT1R+8\c̠*Ԁ-~V{~M'H`X#]-[j"z fk~^ׄcJO"+Vu_^/mA/}ȋKb-돩9&l1+iuQR`.1IcAY2iXWۇӺ2Ǹ?szxהLBlԵޠLV]Z9^W+/<̅;uRS<@4:HL8RWnGpA` I;]=B p9s*!jlA3yyUy_{? :M*f8l-*jpZ/|Y^|`ߵֻ+'X^?gKE"a+%lrTJ`ޒ1&(e5` 53b#qe]uAx Q7ЙrC76O\\wJoDi'J%nQ"/.ESKK31`=F]͑ 1ƌHJa ,QMd5~&0VXH҅UW X>v}Zf"It[c{:^H7iMM|([R#7GGucI'iAI{J%PڻB.,5#ڤSxxAsDE6[P>Q]ݎzztH1fu")ƘAUF)CԀ-rقR9~@ ZxdgT7QȢ7Ю+"C%se?X(-\c!UF* 8H1qI X|s}b԰[>^}}]]sY?uo㢞E^tH굣N[D7 64lyHҘ9 @ՄE?dNg2 SjX߻铟oows57鎏蓟oW߻A7ɔf 2A`%%w h`ƘmT9vB*9LSPڻB꿾1O 食u4}:/h.]QI{e mSWCXy~@ ZxdgT7*2LA fzta @ {:8Ô7im҇U|ڻudJ伂LؠC҃Ƙ1r89cIUT WlΨnW\~ _/p .J)S3J`@AcQI## bWr\*`55^!Y&ɉsz ^+J:7S6v9/XaH1UH} cF%%0(_hLa ?dNE>F=vHJcFH}89TSXTAz1dQ8DԻI_Tv{$؁q 0ܪ(eE.[t^AP" ()S.1b-D $ƘT$qu7ƌI륟un20uVBAǏ$8^:j-$cƌ1qrPPǛ&$lPOh'RQ?}IĉS+>8~? 7ztZS9A nI cNRP:c&i*Ǜu/ʤ=e'n8>>x^t/>~ࠒW ˒_TW6~ֈGH@`@0 J4L "-(Ā?}>|ĉSzorR HJ)]ЦrQ`[$ƘCT$1NU 5` Jɛ }/?w뎷cS8OKޯUI{e mSWC`@#ՁʨGH@ma@ 1 JE>y~@ 4~{}n|V{%V]43W6[P_L! l0$54U?)cL\HE?йs9~G X(jLFXcjt1fuQrB$`mU= SPNL1L:/ɔRyA A1 c=`mqr ks1UI{Odu(S.v; $4U媟c$`1N`USxQ kj2'u)[8N(cHu]7GV% IDAT1bK@gY0Lxd45S`ݒƘRz89UPvLcD>se A/V*;]=BVV1fP>U 43W "JJ%.hcLX Q`I1*#IXSXƘQU yfZ, ʯ^ESKK3Q`!IƘ$# +DW8ЄE?dNg2 S$oKӚ)-0$ˋSX&Ƙm$B ʤ=eW^W6[P>Q=mvtHzh#! Wq W3(eE.[P*9'xSAPt^MW8Hr1T$H1N`1qI# Xaq鼼ydEys\͑0Q`aIی1c\͑"zlB S` (kj2N7ɔf 2A`U>xyAp89`&iT5`Tr^ (l2iOlA}1; $=R{$=Sx1RvP<_S9~@ MN{q"D $_ W7acF%X93)57;h <X(jLFgYX!)Q!xM2=z1HSNAY2iUז[urM &g4=ڽצÄXsR8RWnGpA` UNQy~1VUF)CԀ-2iO伂D ӆoәr? ue\ )hHX=wFu))Tc⪌R<_3y-Ԅ-Tenc?BL㔥cFE.lj6#iu)B$@ X:jLa $Ƨ4u1+69iZ?>,5~&ɜ/5vKJcFH'1f}Az15/]-[j"z {}Y5OS䔥4p8nG=mĀM&T)q !cU Qe +J+S%*U7Gc/ 50wB/<#^<-0NY:)htHXcZ4nF8P1qI X|s}b헣Q[*'x$SS=g@U2etͭ:[xC\MSq PESKK31`$#Q0N4 cNIc:@䜲Y՛Oz{5V.K{MNJUrڪ Ak_7C3[:˲ PN cmJR"K/!' BUe9 UOspfͷTeMJGQ)P8I# )G9:~O5e %.)g.i#i+lQ_B1)rƬ{Lĸ_6'ٚ;twnLuL&/0>"5?Ь"V,HJ?zlXCQJT UWRqqaK6Ij,+NlF9Ռ1mJSI^0K(% bS _ۭ ~~cVL[ee@Wח3^2tA(يr +cK*4R4b+<0D0M(@v+*ԽK~RRIWa,:R€BReYm(1fҥeǒ  q\iD9rC vf!~OWׇ d%.d )`&1ҀWضa0`PNr'ggfX g$ KK;BE~Vw|MReYqd@cITNM靾AbID9r5Ẁ.0_RIIordmң~[ReY[IScYt)VҀWr]F9rWYU]_};-#WRUU ^rPd3S4ĨKq\ Yj~8o-228}MWrR(R]}H0%۔.t`&QNcLFFGߗ=d[?9[X9[^Fe|\ُG^9,*V]}HE~a+%uXNB90#1$Kj$ xR4bd )גZį\[H%%~]/-SUuP>_a+%Y Q2,W4ш\9M2v-zQJld)eUw}oI9~`x\ik(|BՇTQ xAK*`PNL>֒¶q\,j7zwuB?iGW_)u7Rd2*HJLퟏq<,L0%۔.ĉ0(1]RrҀ9zzⲇ,oMR/#0BVÜ<#(l@XFe|\z}F98@ LE~a+%[AD90e1^-43D2rF / TJ/) ws|HKxtw;6!d]]_Ψxɠ6˲rQN\crG4uSFlE#6#| y2f.,RQM<.^_0~͝["0J_aYV8C9pQƘu/,I^)7X,IAXNFCE}dQv_a+%[(r c+]J4aE#\9U~DPaV=Ԫ^=ŔRQo2'O>]z kSIFQ>_C %DmSa']ZҀW$z/!q @M*Б~˜"ozB+Pqգz_>vS s󠮾Pu^ S(R]}H0%$1kS2THj`€W J,(S c)ZJ#i \70d]e qk\m۫(AM;?ߺZ}_€g^>)}feYqSH{1$ub _+^E3 cnS4ш\w0dW[Kʟ} ԸN_^''\w\!c#-SEePvcJZgYV@YbbOmG} &@ֺ"?̢0;qs6DI% `Nc&Ieʼn2 1mD11:S(,g;<Uٸ\7E &0)AƘƘ.IߖTN"uRx`X'H ]# 1<@Œ:y<0a+%}1f9q@R4``cIڪ'cI8.a)^5˻۩#OtsdY%{RaL9*yvntu}HP1aKvKj,(`fQNdԮr'ضa0$)& U΢i*%їu~Oԯ^5Ieʼnfc}`cIxĘl\S"_UӬ3Y=uU(aGo/!gxc&olbe[I^V4bu @cdnÏj€W *}ieYqSH0u&S.)Ml\oPL ʶoUSG/~H;b \"1  uP_7Ƭ&:S\ReF,Oc䢱nÏj0IƘvI]s\uTb 9"`V[4şJ㮊>?G13S穨z5k%uM/VN41gCR#i \70%VN:|g^RKZgYK7cnS4XR} 8a`JCFTS[ %YƘJT>Ƙ I6¶%4# L+qs6XlDu! `Nc&Ieʼn.Oz=w IDAT1mD11:S(({'#=^QR1fQűr crI[^yR4b+წtq^Sȗ7ʴs_y?&Ѡtuuu !XRUUUS[J rIߟͲDUJL_3S4XR!9KJsC*-,a7:t06>tk8wwSGΪ[n{>c[ݯd',1~O T(d%.4) S!McmG!a +U jIuow|J'AhS2Zԙ&P8I#K;BE~aK&ò8QwS佉9J/`OmJT@> oc*$M|00::a0*ʋO7cy}nj23oMgƫ|ہ15ӛPXu!}aYV;QSc:II^)؄TV6[ZWƦu_* m)ǤPN^Uj:}]Qiˉ xPMm yy.Ͳg/3f9 Fl<vۂt_ùi/HRt_9-]\G@aS$G]{acI€W4Je9`-OEhbOmGgr0\w\=gFTS[`O(e^3lSz%8VN9ƘvI]s\uTb vy*޳q?3xZI]Ƙ6531^-=M)" }bI%TUTUuP>_ וKDAeeYPN1$mUz;Ɽrq>+<0xlDWׇ  Qe9tIH2)r1BRmG} & LWLRC*.."x2IƘI,+N$rQ!Eub @VbY\>"<0hĖdұ^FU=]vG.ӟݓR_KeRkӳQu$@NFlcIՇTQ xAOT-:@$ Y3ORH$FN_Bd.K|y͖Ñ}tDܐRFlJ$o?Xk^G yyڲ2us6HV]}HP$YƘm [R,Y 1&>I^03yk:=̞}'|LWӃ Xc~J}y[|+2u|-3k #:y.9AK~(/VՒ#*Ѯ7s__ՆH쑤ާwaPC*^1(òviSd1f#|I^)؄F9^PQ^7辆s9=$R%vdГ@9!bH#&l| NK~y~=hKa5e+ xEҫԖ2@JT^' 3r 51§CZҀWضFcLMV*R.䏥j|ٽ2k9zr﹬YAZ7.Q;c{U8z6GUo1b@\s_XK6dAKڢ˾ee# dPԯ2~€lnYV()f1]RrҀ9J$" x?30\1O-7f !=u,ZnWrhZc[ݯd'ORyo2b@buqiZt֬y@MM h;HR{vӎ8ف LE~a+.t@93,UR#i \751g0K0]WqfbA;Zd&*l_hJ\[I^SV6[5ZR9Sbݿgzv*yw},t.#wU|0V*ԩTqoDUѣ]M %x h29v섶o} ߧC ^[ReY]D`:PN01%m$ xm;  vWHLOν.۩7vr~ռ k˛G9.)մ&})X}X:Ȱ`_u!k:,ˊTH1MR(#Wg<L6r^K̹u;zd) +:үGֶ7R"U2mIJz/HRWgz</+Pᅵ T.#S@XhS$M c;zddbe.g<&(LYD`*cKt+i \7hV4b3= }usCWHJ,}Аvs/^ AgTE:[ٕN=@S -RwF%{aoPE_ur:шx,RUU ^P.$YuH\))1fҥUH$FN_B0ס#҃+Q F$yxxۯWzfnH>$%?U|0ܒ zGTuI]s:YШ@Wɉ Fl5\S`O([%YƘm-"E9c*$) cK0Ȁ^mLzr9uPLAn AZ AS=ooB|BT__XlHo22uM?@TTRέPG(Vc:$uX'r 61g]R#i \7w% Ƞ_6x/ߊ葷"Z߬t1TvY:'dPKڢjIƍr}ڼi;!aG'US[|BA+WuƘv˲ A9%3,W4aE#\w0j =뵬!bm띣m{{%0@F4-Ik<?_~U[6?s )UWREe@?q!seY KA92S4l\`Fm)m+/֗>ݠoҦgdLm=ڢ%z;]wyvإ=m us6DI% `׌1۔.0c%)\W==qa2&>8n>T`$@F%Z>\B˻E+WЖ?& #cޣ|Sg&y*PXu!}DxZI1e}cVKPzy6 n7Kh-~VbE_]K)-Xƍr}ڼi;fyE55ՒkĊ^ĨlQUuPUA|PrIMYgY"(xcmJR"K/!' abP Tݐ_ hfkq j K0д&m͟msk_ՖOk`Ayl͚Դ=on^C{vӎpqL.Qe9tIHZA*"2T(]JYK vߗhr0r*TpyWH;(}]n.kRr=O珽!̀9{3o:رK{v?W纥[%۩#Ot1h]Ӣ֖O} ѝw #ڲi+9K-S0`K6Ij,+N(1MRˮ9oqߗP"R^puU/?;G*蘌7AÍIݒ&P8Iu=dM`Dkʕ#IؾK{v L#)G9籕ٱc'L|]]_Ψxɠ cKڪ2k@sݔ[!b}a\-׻J}cWL=‘ipΌW_}*zT'')r iQ$s::6ѷ8 ӀrJQNylڲ9WjjK9 %fY c)]JYFx,% kҗ[*I tH?dX 0[wܭˆtuuu;~gTSS5رq̣LE7mÔ>#Iٽ/>]]R(TI/٭tI(2aPz|FҀWضa0DwOBOS_BC3v*exkıoi_U+ԺeZV8vDΌ >U+~y" ^VjcL˲DxG!1J飘))y[O{HTIk9[;uس{/gOlpD6mW;)`0+ӫLF"1  uS\rz8`1%+ ш=j0{_]e qklFT{[Xl6}^MM &dΌy!E#C Q.cAImeN$@n䰉>J/sxm;=㸄0Is~g40ю? -#~tJʋO7csӾDD,ەR>9}ѿSӢֶVdؿl!.뎫l\J0'x2Ic)]Ra(9.MG9zz`Z<+?5߻T;ҞD|pT_|JsCrK)ǨtB*>8Jѷ/jj]Ӣ`W48v6?uv!8S穨*+-SG(Vc-  PNr|3r&F ^֯_+?:v-<ݓ#O$tq잔BS *mz6F\=i/h򞯅LX,D₪+ rI6ƴIZgY"r GcnS4XR} 8aL]wݡ>jjرCGupuUIm'aWt$vlߥX7|FMnb3uR<6C ^(2TE$@d9cLvII^aێM$͟6|OԴԴ@|K֖?m&䉧v? jIu7"r=4!Ns3qWgb UWRqq I4lnYVHE9b˒+LW} %̢9zEKh;Ktwh}ڱ}@moqnH_nT??wQ|0JxOFTYWlfYV cKڪd@sݔ[шI Kr}Zj%fI@-jn^-K/B'{z䉄.ӟݓR+iu;Ʈ{&,X,D₪-%xAO\fY"  c)]JYFx,% IjwZ[[TSS=-ۯWQǎ'3yБ~:"=beHNHێ 6S穨BbՇT `Ƙ˲ډSe”^6 yRx`HшM :p"unTrw}A{YoO"@I$FHLUA|\W.鱉,zHE9FƘ$u(L ш\w0dU]uR|N\Z|#*~KpY-ՇTQ xA]ƘJT^'`z01Ƙ^xm;:y<$z>ڞuma=_ i"H LMOjY^~U[=&p\w\=g<m3LkƘcLqSS)fiԦr`@s\%HI:{`BEsz3yp!Y󀚚d;vB۷DǎŁCaGQUVTS["P%3ƴ[AԡLcjG4uS#|8qŌ9v-}ѿSKڢw8юC<,K*jjK ^P.Ƙ6I,:@$\!caMulwb(½AJɺ-+@SZ4GlǧH"[-~xؒ.J,z_OLڪv`\TV{Nm;?^kK{ NMJ+Qr >1%$' 8pB]Ea(j~֬#=7om+"0'nhX;N?槞T(D^a)N*}{eYa=cV )& 8mtc({ӦGTO˗jʛOkGӱ!=]~er**N&Ѳljx')cHj4= $ad0)2…WT۶=Ϳ# lZ1GKq=ȓP[*# 8.K*;(1s." 8E4Wg{XMYr Nhj+O6ѡ6=z?',լ~/aI r =cL?#$::Š  PNڵU}PL۷m+",kVU@^a)NJj,(0QNfIR:ҀvJ= (Tk~N 7oUO**TV" 8Eһ`L/ ,ԬC SW% 8, r ZR`Y/3aLCk޼ 'q٧M<7X,TVPx|\o;(U-|͗UQY$EpJ8Q)(1K.\FpN)*2Z*YYUTO㴴#<Ϳ#t,E:쪛 զ7S/B8[*+7JTvd5cK)IN DWDM=˖/Պ7_ jz?'d,uWwbɉos'T;{_!td$ף^€_J5*>€R*Q PNA3Q4h\a6a`\,[T+V,ԦGݿ",,~|.P,Nn`- լ~/aIP¨d4)hƘFI IN+:' ;@+VޢenxC1m~joA@Yʌ-]gHm/CF 5*\0'%5YHTS17IjTGpNg@`00*++nV4:O=htPМj%Qov5s",&2VY_e~y<.SIZmYN@b\RbҀScȶsIG'c)ud)+ tKU9\4Z8^GE*# 8.K*DLA9St)ei)Ѹ"%Yԭ+Z87G)m9Mq^a|y*No5d^ͪ (??0$Ij,+LjS01 % Q$2L:Ktw|/ ;bڲ7NP+/U[<Œ>1>sRm/EGF1çUŌTDJS0e1K$=.4R(Uoa +Yu(O>zJvSvWk:yR= Ex xr顜lkVU@^a)NJj,(0(`cVKjTGpNg@`0H9YnoqNA=X?ajJZԧ[SZ쐶읾QN9=S**TV" 8E˲# )8kƘ%JR"gP͖pV\,8{Jw~[{^.dn})o S%r @!2-ׄr顜l5*>€R*Qlce)1<.8D4ჽPL#} u~>wS$"G?|V۞UmuA@閾SҳjRK/' RoY'+/f:jy=h4N pŒ~mySB+>bĘc%JZEpDV! ) 57֟ V>jフYk3Ho)qGz֟ҷ XHa%8X%@ )8#Ƙ1K*&d;NgP*:HS[#*.ۊuyc6”>]꒴8'_t81=ToϠl;E pbI1Ƙ%ā3Js&11Z-Z=cҖП y9Ƣ@#}ӗRF .X_*cm蟖k2Zk>΋vպz4*@ 0$$,(A9SbikQLCDq=TG{b _)W뺅S_L\Zm{V9,Ln;)k؋)T 4*@jy=)Kj14cJF煵J4~w,o<7}Hǚ/X+咮[ޟ_)g` |-_z֟+<}pZq=Tg{Q?p{$cV 1f1UFYͶS#AE"YpO{VG,=_|TǚOx0 nJ(Jӹ)MDu%ӹ),J6/yp:c:|W=(=c̫Ƙ%ā7ccdI#8A?cGPo#|89tsKr߳g rGIaJ y)y&$5”.?ĶჽFLey388j4 uwEiフ3sr_ĴvL)]0E2/)jK3 xV˱^Ԕ(Up咖cdYVH7vNF~b ¶Sl 8wбmY_Lo.tB_?_w1E𝂔O]1%]ᑞgy #:סȶSX/Ҙ(LSƘ%ƘW%}O_@ჽg5>\}c9 ;7֟cscp'] Iag"^Q€SI1f1f qLOScc,}Y/ჽmo<ԪbzL 3SE,<iɶ葠Qvc,dc7ƔB9e0Ɣc%*i q[-t_M L2XB-B s:zi`t~׫Jbmѡ ^ ʶ G(j8Ks&G!b|^z{REeJfNP'i1f˲^%g@8H4Wg{=do^k']zuaLxVG{X%K(pŒ~myHReYa"q8\VQLC$ⶎXb :r+󇶮.#뮓J]8"gZVs(p{$cY9!1K$=G@ֳ \]&m@9e: +/U[<LJIHU/Hm/QLȈ,$8AՖe$G9%c(]JYLppL]v0 ҿVXP.쓶?~L's/Wx:hHo.j>Ɓ} ElvR= ifU@@> $YƘ]JTZ${QNRƘIJok8B4WwWDñaa6/um:wI9)-J*8YUU/r&v7JYx~ UP~~. Kj1< ɲ0d~#Bb "V˱Y%YTBp%u[ ΠVKSnu i |y#Kt?di.K_Ls/'q:ò)Kj5Ƭ&)YDRHN`)QQF:'͓RI ?N(p/\8>'3 ^jk./ᔊ]u\}|8?w W1]/ҁ}%qS$2B NP,{:4XH,`t)e9i)"a( @VZZC"GO<ĭ}To+o 0:ZIY{O G1mibq% bIuwE FU]["I1۔.If1%ޞpᄺ" @VcKJjÔϯ?bUGV^BLH, ;b=psn;%mS$X J񸭖c! )Q%-14Ij,+L$MitNV(!l;RLU^4_yb[9W})~d|tP蜼ܜТ9ƭCS D:tW]6?>yvd vN0Ƙ%%-& 8EoϠBlyGB_y$nr)~".sgm#P{)zWR|ׄ<΁N[[S,*ӬJfNP'{˲^%A9%Cc(]JYEph4q0dhd,v{. } }5L-{z95uqߎ6i^vNlaIu F5* K(pŒ~myB ~2)f)0D0{dOkhJ)_'}PGU;O)aGL?;n. s|_)m9MYj8P˱|ͪ (!8*I7c,j$&cIҫJϿg)uwEt`/Yi??ŔJ̝>Fїԝꏿ=cóeo\7<ц1)ps IDATȰ gPpbI11E9e c.ԤvB#7*IKGOokZԧuSڰ#Phd6Ng@!UTdPucvIZmYV+L.)htOp,A@۲7Z8_k({_Kq됞o@pxVG{X%K(pŒZ1Ij,+L$> USj98H$҆1`D[w qǰI)0Dj9Rg{Q?p{$$` fY"q mFG @iqRd o Xr=IIu @6KjSQ=kX}IEbN6%a;pG+af"UQYH pbIG *-I$r1Q4"$adq>T%߄K7̚\ݣ;OSK۠W? &y_ t>38cGzD # ~cG.b#:*+ hGu%8aq`Y"IeT(e@-}bХۼҟ4H FSCj9wa閨KgC.)vRJM\a*(AQ҆~g\Ly[jb[Uҩ]{Trjҁ_Tb 0 j9Rg{X U9VIj=R)yPMJod=NeF9z~Ldi"kS5*xYlhR,SQ:j: r>_WŒzn!tZXh$ǭrx8&ieY;QNy cJR"SwWDЫYU!Ie{ӾbiPR̿ 8A"n+Hd00"kW|BMqYm jJZԧ[N1 i6숱 0zg]> +wr^VkK'̪͘bFIN*]Pi!Lr1f%oN`)Q @_Jx L7㩔NzXxqN՜odvDEO=DPcfq,SQ~fKq됞ofWR@fګ@df*s'TӷOXΊVY_'˲vN'?)Ƙ9JRڇScP<\l=]E |tnzqwL_Z׭S,6hs/_U20C}3F_*cm`G?@Tw"veֵfb#,qz4*@ 0$۔.N'=m)ƘI ZSDq (:' `lU}snҝ_֞6dY}58KS83UU@ǓSzA 4\` )QCp$5YOvZS1%5I* 'NtT?'qO YN)5~#~r c3zg]>`R3¶"4Q?Ex\hhYN.c(]J4gP`T$ \_{rx*%ǃZuW IS8[_yڊ)v}bu`+`Jx2ҖhW{) oTU:9BT~b0}U% 8JTZUN1ƔHj8pB]EV?6ת.7-I/ڣ~8B(0~J*QOv?G]]Aq|ͪ (! 8IIMe5:I9bY-QRU8m3P0J؂k|zj)?SvJ&{aa(0Wk:c}gHefj>H2^Eex\h`YsNx2Y_N1,Q&"gP$ g;frLTJziOL_Z| )LTmEKnfF*[*# 8.K*fr&Ix-)Ѹ:Êm0n>yC\Q=;ح=/r SW\]ۿGZB**{ N%p6|VS1$$::Š yZ.ɛNÏ= &GYi@X3¶IHc **⤤F˲bIRx l;5:g0Lc vj]] 1S_D5 T7_P8VY_e~y<.SIZmYl9(cHz\b^cppL]v0L˕so6?Y۩S 1z=YP Op]JTZ3@3b)(^Sph4c 6>Xq\gQDZyG#D5)&ЫYU!3ݙz`ƘIHmur,D1@F]+SG)Jt0l˶SGR1fu`bY:^?pN)*2@[pO~g*+rTJziOLok'(;vN0<,$ 8o$5X3*c)Ƙ9$-3x& Y;f+??=맥-? C9Tz=-% 86K*p0S^N1ƔHjbx8qQYyn_q^ !6>Xz1>Ģ` )QCpJodYVx*dJ)$vJ'N0ި lZ|>IRKq=ȓ;pZ(Q?Ex\hhYSuSRN1,Qr8EoϠBl;I6Gf,ݞ='ax_SdǭYUd%ZN1̑(ikDu+x& LHk~VO7oު۞W4:Dx(ߗYU^€ȄS1KjSQ ʶicZf wPw!Tes:zgw3¶IPؼ;TXԧ5KT i6숱8zTQY>€RDSFG4IZ)Ѹ:Êm1oаV8۷XzVP>_WŒA 4\M#^Xo6K>w?襤S szs߲7ƭCR, w/H~0$Ij,+wBuu`o anwoc~_d Ïd0ц~Ք'q:ZTT/=EΘVY_'iڲg{GgUN1Q5Scȶ9/в7jdl顦盛 T:o>gyN*et} woE37-{fq}ҧ|׸pJҖqBpּ^fVd%ֱ)ƘIa h\=ay?f-@Έϗ+A繺ԷB}Xo?GչcwƐ~{@`|.[ӝ6֦]ÊR 8TBѥ+߱Y^_լs N&˲gz3.c.; 3a`Z).RS,99]4Z~68O\_.a&7ޑ `d5nm\¹9cqmSGNvo)qBd[X_? $z~&ۢ9ڰүӶ)mKGO`CVk[$_sŢ*ѓY LǭB NK*;O?bt)e9)"a( ٪\x|ʏe;(U-,L(u3t3(rOw&ƐqO0,ӺOTW"v%aGL[2p+?ۿOx*}5D~0$OHj,=)ƘI ֓%bx8|7)х/ґw\JրLՓ?1=1_b!`|.Y{w)m9 ; 8YK4{e:R=_EA^_UMMr€STzӓ&˲ ZN1Ƭa1 l;]'χQQN.j̻$뢑t`+,wo[c3=1 ԭuK? )K P |~͓\#[/<*TE*+qMQ?Ͻ 9qgP`T$ }2nL@&h Gu2{Q,}I{*J G# pۣOܪG@P(լJfNPwSdF:|W=S8}i/3V_n(ӾX0q3ڰU#nb[|~ WԿ~ &m'#AEqcQN$Z^XHM t{\},5P?LQ/,` q%+z]Jz'Yk|L'I3KXH['(zs+8Ӈ蛍eݱ_<=t~AP{G |~sO\J̝CQm,ȰѸ*+q S`TRL3pWOi,dښ\m{V=]Ŕ zwoJ^"kW_c_Ly+G[R(q%, ToπyC$Y-葠"$i#0jw RNAJ3yW snQ e⹺ 6}w/]$2Jϯ>+?Ih8 q Y)u_-B:N)ZR>ۻ#=Ok swoq3En?u`T*כǕ,4SX|<}蟮5)XHav@rĶS  8)Hr~כ$}:7%#m4%lS 冲i|/P{F7֡_@9꿬\]9{?Z˯9GO~¤)QY_B9Y#Soπq04}-_ܔ6Ei,\0ث_b )2=:Fn=***bW.`إMeos ժw)->c[-fYZ'UMYGZuI.1f2 LU/R?y 2ͳ)4)y{TsڡC(`gG>ŋT\\4(>GNraRݨi7uPtɠ_C8q\?kFKM/VXct}IkQ 8^\~ڭJ[c  *S0:^57 rD핪ڽ۱^J[[֗ۤsU3esuNu{w]iaqS/c٠fͺ5^J}j@p^NL ncמb\1ww@lWJYc')`HvnPMY`Z`V{ s@KWk9B-y #cBH__ Iz's@$z:J}D3l}0.}G5,@OѢK}aN\ ^us} +nUZ(8WU[k]U~UUW".]"o{ԜUI:r8!AknK_ |pq%ǎ31C7|24{yNfb1O7Hzk_~O`^vQFVxB8v%w7?#M2o٦U|][[JKT怴9@DښFMs}QsGUsN@T0Y fx#Ik:7 rA՜v:*^Ɋ! )l`H-Mr:`nGzV[jw+/o>|Vo&CXԱd6P̙6q24=:vEQ"xI;^'YƫbWЉITL 7P-G[ ?xOMY`Z`VKWkSiZ[aul>>y:Fx4Mi$X(KM?u/&凭j:qA7xu5D.G[NG)n%)˧& aODK)gbzSs05{uDR;QDDQ󗚔{c{X}D|ͯXOw3H#u+]x`\r:7&5P(Nz䒻;@ b4J5:3W :Tu'<(`4 &]4s-?u5޼[O3i~PAL($SkJܸG54nMq1K8 %G0@8qZfsrgTi'`lWU7+ |!§-,NPFn^3GU~n<ߥyǽ{XXKp|r|JKOTݪ(N'8jkV0 x~ۻOOjt^NktG1Yh׷uX#~d;r ^lcŝ9ƍ)9L SWnw@ Kix.7uk~H=WIA( 2!UC}Ne $QI=\r|F&"|=ic WVB`li,v(%ŬDGq §0D 6xsnR(d{f%2o#˴gH ] Q$9)AzfɧQzL6!(tzrj*nUL [[TPN\ { wޭmQ\)Lvt`<+OW$c5xi$~jm=uO=JXM9#4D5˯J9IRzICcUk&( KNƎfK %0`dNk2Y$Iq'z],忖\zʓ rGnoP=Jܸȑ`")-ڵyUU'X"ߔ{]p YZq}/sEhQ(lSQ7ަ8BA(N!zAv ^[:_䴏eMo?!ӡJ%n5AOIQ4u~1>d(G_ ^*^Q¥Kd^ǫ-[U  ,7N+WvOώweҮ?6GQл'ەbIl3BPn9lèԓuK]p1M L'2{6xsnR(dr*qOw( ҍe*߲MVC ?寪tv{ĸq6}Kc4vN߿ަy|t6o%(tzr>Jv+D9SXӫ.AaNy/>>dFAq *;Ӧ{oihLֺM @T0)Ӂ4av{gUeV{~5GкUk9(?(Ly+yF`WM.9JO(Q(%ww0`x*ύ ,z09M+Q\I%^FP1t9C zmtCcUk&$Q”USsV?X,URZ]55gUR>N@Ցֵ'iRrX'WWY@ YG+33Yq1e(N"`H-Mr:ä'sR͠:dٻU/0IJ%9Z6E)f3xfiz̩XU~UUWi2ݝN*gF.V2,0]e{*oaQDuRV'*&@(Q(-G[`/a0赥UɺZ_81YEygߢQ~#S^G,7N+(-g6;ީgI'?ؠN)C.]S`,cЋ BVӫqmJN1H8%¹\>4 QlC\]%Gtw}Z-32YUmyn6~gٙ6TZ.gfMVYXmZKX*ڥv-(TcsvjJNzv<+UC}7&5P")'TCC@ԩoќ[+SRnzѥ'tŏ0ysWtO(JBw_B{3%G8s3aWP 8}ï1g _OH}\zEޝ{os8 u՜vfKи6J2Ad CjnrDu)j^=Csn+vGg|ʫ//kwBaJɜ?)ya2'k~neQ +&WY/Li1.٭_7Qٙ6B#JXۡ*;mEyA>-O+s.j6۪0.O'ڭ`0D )~^QУonҍ ,zьiL=zI6b#?w >2rd]-[,h8SH6C#3ˤmWW#x0b<ɣu|z.'jm jn5:h {Ge9r%\ t蝒3:y@!ڥGiJN1H8%57r'%F7.oHkS 88S׏?4ݣN) j"5P)a'TsK.wKlַVFμ_tܦNwXI 34vNQa3xt n̢3'ZuI.1f>*^?*mШ[tj~6_bҬ;nRRJKOT\| )SP0z ..ի't~0Uﴅ\߬;kQ} 5˯JйaKvSko̾JϾrNu l]F;ZïGdַ?h zy7[ ig5i7sԜoӡ>@Xq:rJ[>@Kӫm}PУ~E_^֠7}yY.0[$G2)A;f휞\5˯byȩw/(tԶK_{”aZWs4C֛j)LuN빣S\Ǩ d {ڥmN&Zf@rQe-M?aW?q6@oѼqZq}χ<ԣ2}zegF=ݥ6ݟ{?y~HIiZm۝{nm} Y?#DK Z5nM q(Nf=ZtO p6+ۺ)Yϟr686+;Ӧ{oٶs3o^'3:tİ8Z@vSçtҙu Ѭ٫E?Tx̆K6$iS_oJGO6?rNsq>iGcm:Mp=V?102Bl*}.D4+ ݭ` @ʌjA?֦]zIya7J* e..pk~Fut^Cd1hLuk{Qk~/˰0<%|VhcP+w}FĹ³S]h18bbJKT0ߎ_?Hq0p|jir)0n\`*xҡ7m$8Ceْ-ѥEWOqzL6a1,F_jRC~}W]|# ITXuyCےnuNZ;E}rqw@ C">>FYɲZ cP.j80ͦLUVƕ1[أ'th 3Qh8\ Y.BcdjROUSc5_>:*^'hqJ,#IrB6Ҧ\zT}kelիO:δ鑢OV6GkoV\˜Ɛk 4'N jc!Un nT0Q"±,Δ$%nQUi,O<mp'?J;m}~ߦ]E~LB{$N=L>Y=.? rǵ_Y+l1ސ{hR Ģ rL}mx]{6תzYW^kS(M7,0_oVyﵨ SN{t5'(?_F@{NA+|ҳ̚*-&8)qqMZ뽄ώkz}Qɏ(+#7*A0B=!Ulk-*N}|tnAPҨX]{w/6g$ʺvnߦC/6 mzy[~0U˿fO:0B gnM JL5^]^*P΂Lu^?VM~o4eͲ˲A[eyIxA@t@ uk͆>tՀn|S@ظ.YjKqFLu7쬪8 @nI`zk_~Op(N.gF.V2:l&)ZC6Ukw4']>*.|VNSΌD0h0Ú&%k⽓ `9E--iSrFݝ'%ߑqM*`PKXDq IRzYSeiR>uXZ)}^* pI#ܨX]sgj5}8髓汪)9z/a`dHHVk< ,Q`s ʳ8S-fȺvs֩ 5gA]wROՒ :S[Cq X%S(7?EE䰙l̦%nQUi! ]%L=Sŕ & $z{ee* Fq 0g59jHcնh$tDSJyy*ύ ,CpԐO-[,")0*)Vޝj9l&)qqMZ,y߫2{UghĶ tD S(8S׏USqȏݜ(J IDATaؠ ,e狲|Q%d\ߣQ~#S^Beə/g8Re#Km q>iʚee{8zI?S-U˿`rZeVYvH,YfMYIʺЫzsC-aAq erf$jl-a5/Q%`]/5z@T3Jyso*dC?ėֳ.˨X]sgZ榩FMӵ3RRURQtqIj0g"3E uz{Y<D5S^sӝ_"?}͘6zyN.±,T%yw%I_7UMi!Cq >wβ)1n߷骃:b Yv(YɺZ#.Ȳd*a(h6S^fȺvsq}Az/-[ )@D[8V[Ʃ%!."A+ɴT3Rwu!mL*ׄ˒eWnQ6lMQU6( բU[yUU'hP(?υfԜq \9Qd,.0}B`~y wNOŸrl "`TR;[MSlLG͵$`E*\DV9rB%V55g jYGkT<;^[> Sm)t#TkW|D)JX ݣ*0ppYnX3(ۼ{]z7j6тsj]JK_5yySDwr=68=N-(TcEG1iVUy "Qk9|k 2ޑ5ۼ7g$ʺvnߦC/6Љ>EiZ+˛,Ԃ|VoF F S@ة*mШ[՞v,Nh껔?vO3#Qcey7햹iʚee{s|Dz-/.RA~j1HTZZ필Gq KݝJjo9#S_?񽖳orajpm*..c\LzYSeiRچiXK&Uv0}p}pY-+/-ͮ5kV&m9|(NaޫG+7?EE䰙>#Z¥KT'| gFߚ~ny<6tM?K#VE*..RZ}˛[]TZVJP)qjnXygJvpfNI+<0*V0)L0Ә7sVK'Ncq) /oѨ풤d\3ͮ[߭Z4\'hw+/oevJOUR~!=.7!ZQ"N7E)&;Ӧ{oٶs2}ze'i.jѪPA+vвZ-*\zuhCq {nJ' l{T8+[9U">(^Q¥Kdt\yh`64q\yT[H K? y|pۺu%tQAD8`Y$GE}> GvS,vOA>ŋT\\4v M?OuU'eNQ΄vu|3^aJ?4t6s*D:DEBڇ옷eͫ|t6oeF3sHꠥR>xiFay~BGq `HY┒lUcKa(;ӦGR'G8[dk*5(Q.gb4ZK4C'jN&p`ԙj=GͽqʙڮÕrw p]}fIr\Z{dUai>*#H:ڦyu8cZt>9_97_%}G5,D S.gbzө`_/\Ӧ 0'"ChѼqZq}uB.mA6 rl6i̙6͐34>k2+7NF0GDj _Ц#ZfU-QtlOT^h6oe#9ר.1Oսq:lgtIۻAq `&M=W1St77NqKޢM3F[kmw=C7gt(A=Q5s4ξAAˠoW8Uf~D%7ӻ'jX(sԕML2kJV~S@0"utni1Ӧ{o5[RxSu lRG۔8s{sOI9c+pjY8SL U[g_tC5[`Dkp%.-7N+Wv3"?+dѯvTE sfIsIC1糽v;;Nuwf(NsUOZ$GE}<1oⴣ1Y6)%L?Ouu0ICkz;p0Bq @ؼVv'3tsFs}5F?}::,\Ep- a)ӧ5oUa+dQٱmZ8 :ޮ2uϼ mc+tJ`/|Wj?ǿ AѢmcSܐړ6K6h?{_~s @Y鴞KJٶsr WȢ_4r_ 0H;/hӧդQsFQKhgA8 ttÒӺf]-*;9 $iCB`{q(h6ӠtW)Z Se Fvw]7d3x=֮4 XAǩcY9hׇǟЩ:^%t#ǔ75xUs,Fq ]{wF̡w~[ ׬}ʢIcRRv [4jG3S-slT_]egkh]ZaQRZZ-v{XD4SF'JmvKD~vjJNkUQ]&l1{r@')AL-}k]!Wvr#ᦻPW[59jHX lo[- km=}Ty3V+->sس֗=ܻδ鑢ȩ8hLs4G`zZ=%MfߦC/6aE9|\V>ŋj7dGNh?, )@`ř~7zLzr]oneѢXmMTϹFuy~vU&?Gλ@Xsa:/7,u .Ko fm=95& "ׇUqyߤ5IJUޯ¥hP֮2Ul$pD%S(SUڠQ/ ~aSrFǩ18$rgUu̔ftGԩFʷlՙ3uʷlU2/UOf]S@$_ޢQ;u͝rβ&F:Z@n,ӟ+vi껔?g`}^mr=eBxs\hOK2_~!ݣ߫Lj:ڦy:/I2{uD" =[X .Q!iy1寪t8iW$;tuk];^bXYfMYItA7sVK'Nw\bQ8) ώ_?Hq08C^)G1i31Cq٪y{^?a>Z9rBzV\y)ݿg$n:Z(XHVn`;rJjj08e]8m}zg~`M^lP[(0|SznN#`󼘚*)y^G'Gc:Kab{v lmmzaDs0s ӨX]sgZ ojZ%l"I /gj-,k~FutFz D;Ϗs{Z_;Ul 8: Yq2'tJxm jn5:)R Wc.zU2oJHa)m})̚5g$x6_|kٙ6=R]\HUkf1ԿvxUeʷlcY0h(NtSgay{<Ŗ )Fm?Q9vIzp@6PHfNӊ_Q^Tq}/P2(N  (h6SoЫ-*m L7d3 ɎOq|4QOr>󼘊]TZs )o d_`G7{uD"$ ˪ɱ2|낽Ox~T,=} )pAq ± 2N>gSrFݝв%9Z6K clk^[\Iy^̑#'qw S#MhFthntGTmM#aH<ܢ7)!mI:w5@_Q2(N  \J5wf9.Ikesjvs{n@/sEȗ)pAq ]zYSeiRGzRUDLMr-+W; LW`")-.ǫ-[U`80Ls9|X^/ۨ``ٌ7Q9v「W}^>))ZjOQLNPvz-| B53.-7N+(-)N/I҆39*Wj~-~v!A ugߠE†զ2ϿZSЉՄ+V8;n S$ o(N(Np?8=Ngu?d TkV>iْ-ѥ|{vߨN ۣ ?ޮ)u ܸ8JW-{K5 @P3RQgZm۝{nm.@֡ D4;|`Xǝұ7$t>)#TGO63m1m{HX6o%$q8`kp%.-7NWg?nRG`(o4M;v{@PIRfU#Rzy^M$(ߩb{%`,2Jq@ԣ8 IZ-*^-fYZy9|obL)1NߠVTtWj1_5'Nc՞=y#8X !͎10*^{Adm(NlZ.9ϟ2o&CT?HS^3 %ҿ j%7hAq @'N{V^~Q\\¥Kw^Ie}L1!Ǡ|d (NFP5XZ ,,fYZy9|Y1ҿCe &.[gmiFq 05S3g|qye{O},X.MKj1'Nc՞=y#hQYBHW x&IB;^נA2D#ױ:ICv~Cu:wwSxfcQ~ҍaFM!aT%wҿ j%oo7)x㵹z_ @X8]rr&fH^{}\LRuM# 1y3iŊ(/oV,^ҍe*߲ňbC$͎^rA@{xG]VOW'ɫ; lQjkFM+GLZvfc2Љ,ǤѪw)?ΰj1kժ*,UO=U#8Q Vz$!Q=n s>*."[W_{KM/VXc[WjR?#S\Q=a7\Q S.d{aʇckUt fH/XCy S>lA9!Q3'9\ЧhcP)gKZ4ױ:ޝGUL, !!1Pm"X[oR/AZ[ V[[ZJV LE%" K"JYHXd̜7Z$LY>G̜9s\RʝkD "#m,o#L]i :.iE mUZM?~g*n_RO06 7s^)E# 'A/m ;!F(?Qu{JJĵ9t:uhCöCZiL)!)*6jg][Nh]ͪro9 _5itwMF1}Traou:&* E@)aH^u7M IDAT&fνޔޮfc]jg?{@kcѼ51aiғznI`-ߤ5O"t+Nj1=inʓ:tر2*]+E6 ޮ`NIwJn'aNC;ܬ}p:]ڽyb;|7ypSPΎՌiAi1fV& ˵5^h90QFXo="vRN֕]g8Sk>W +R9=xqL'vmm~V6SQFp=XCv5v'hP=%Iz{yVbwjν@|ssӂZAx ݺ-d<ވR ̌T H7oͶSh}աC(a,"=aRkpfm:C? * JG9틉^x!v;;VÆؚtaClz#yJ &|E"tׄ.W*d>vt[w-]-E,H#8.ްAv)HfS]ڽS9*D!!>Tze(LɷMb-r ~.K?p}n>JO,*sKOt3m;M족=N+Bmz 4-~\UcPVs8ZQ%X.Ƣ{g.r̊ն =4BO90Q?QΔrMёic䤘LJ1QXg~NtZ cmCfVb<&ڢWw!vEOZM")Cpu7=DŽ)|SFNh2).I9]֟+{Qڶ>EΎU~}@>]EmS4l7bmCM9@PNG͘^6Нw󊉶?&4|9QN/!}m6(mېyhQpE9J[QN 0)Lz?CMK^uѦ& .p$;+9Æشm}?Qb_;H kf29Yފ2JVhaCwΝwKXH|M@%XF*m!nj[C|47BZi*ŔY77 @^jӧΩL;weq D9m~JVhS? 5TJ9!釡>6Ջ~@+G'{[wd${J_Rp*+k2ݣ];8@VU ұ%]iCx05R~Ѫ-d@0()9ŋW~ZMrRS{9彧e+T]`A  :i6&I2 iTfў dJwWrFW=@صsΙŋUsӦm+e-yb &͸/N߾!JDyw?kiwi'NBC=s!'}t[4tVY XYoո?иiy1 kɒWپPNA|M^HRLL^^OֆN"'D<ќFgHF'=^OI`P]Pg:MΘ^9niiW*ZB_(뒓B$ o iz5_zt}g*=x-yo*(8Lpr 7Dyrn e+2OUz}LYK^ƍ[ @PN|ڡŋW^jM'JjөSGUUU=QNÚ;g>A@5%T^jKIb(R^$s:T^81eƍHMi)#cG*;{׬%$QNȩҬF2.8 Ԓ)4ũ5Z %F36; Ӯ# J#1Qq8͜9]飴l ڹ^C9R=-0Sk ,0u-Wc-WH uHyB#&j9SkX 7R^)SnRjj>{liyJ'D(CnjLh 5ve$s)H9 Jmb1Fʔ~4M~Q1&P}|Ww_V̈́XkiiԧRk7uFN59cG4#4dV^v*(A"h2)6&Tb*Nru;ҍU&I? 7-qKzг. U}H>nU9rI?!KE9aVzvC~+z+L- Fd]@ƏVvaDz۔1Q#Rk0Y(A`lf*ݷ2iaS ]>'ɩrj ͍n 5eH2%-hރT[ey;E: -L'u gJ^/ө5Z %FwQi1^RQVh+0+׎T\J8͜9]飴l ڹMB9`Rf4k`!yFzЬpiaӓ#EM^*uW`jnń6koj CvCG* )C-d,^ϼqDN#}/(%k>Nj/=*)9NFDKä1?FUz9uB*\ϥ#$ybbU96SuɗJjd E!cLZ1X# 6l)̳ꎞk/za[v4itwMF1Q;T^Ϯ֧{>'D7:uꨙTjjV}2trW+/]UW;X 9QNH!M35-{* 1S'-@k}\#$wf]QHaŬxJ $/_zt]g;L+-gAqn!IK:}*L^w>:Dh,S=vݦ7~2&`1D9cCYᦢ ;ʐIcCLeZUG$>NfE_U'~@a+f_h=뙧_ԣ.&?䉉UL%jXTrAѹ(~$l)̳|i"B66׌Tw|1M镜J_Ͻpe4l߳"m)g*l7B !i*-ZhIRHU9M_X F}NtASlSt}IJ0*9z%wZuɽT96x 7ު}?ן9zUTxt 5~R FH+#MM N(IHFzn?.zD?y[Æш=Rmˋ))hQ>^U2Qwzwuqϵ'}Eznq?nMJOM=a*a&?@WaSU1 e3fLkԛҴa3**ޮ3&41EkR^ԾZL5v1%'%IJMSxS'Y-Rf1~MΘPiLZCU& O::k#p8u`h4-]'uwX5owhڴ_i 06w-e ms l:uYw*5$)?gTIqW1hsH7PӀ(%ʐ2Mlb٦5lI46kF}HwX=ϊJu+Eɉ}AoW)_##Nors_Prr"a&n̙ӵ2(>ylxp:uHh"IM9FΎUrR^]xN }%''+oo$Yo>ްU*,,bViV^'UTzĢr]3/}A[bahZ KHL=mN1lB2&OahIveLzr/}HFQNOhr]=+-XX\-=4SE5l@obԩ75ah߉2YVDB5l46@Kvy22&*nklj4st-PIaJWԾ?3+>>7%{lxp:uB;aFOrh1wvw w:}OodoHo<$MO=5O))~\RRuj}aƏ["L%%=-vSң5z6Y]>6G$w\Nz\_RߞD)! ;ҍU&I? 7N$3t_b~N:*s-<5xp彧e+T]{:&`V ĢrUT~)=X/JNNTn zra6|롇f|FO--*45+T6CNN^U1BN<%Ǹ S+]]i:CnJ)=4tb DFڕ1ed͋)g7zePƳeԩ7)$9&&Zo>JNN@2pS+#M ~gs^3^eT{P NwN>%Ox=]C?s:d/u6wUPp׮};,JR^Oj銴||csPNY ghZNrUWa@sm  IҥRNqAiztۭh"U>w^.q>gl;4vh R_ȴEz㇐Bإv 4)w@ߖGWchQ"_;Rӧڛեe^5k h:uYw*5_?lmzQaJV|p7?B.Me H И1WO4zWW6LKI #iViEZ)PU]w?&w'n.髲y|cl @3J9FHcBM7g]rn*ZmxƍAnQp*/wrm7`iWƔ4n|ƍ^׎T]&&09E[&0 %%eJ}h&hizi*ox:ī'&mZ1Bo .@Em+kJzc5+GN9 ߫_%PJZIƔ7~_leZhv 5nuS#ط9p iria޹Wn]IK.IX,Vʩ54*h3vC Uy~ׅaK;w\)%X =aoQ2?g'xD+aR755dCKPI!#@F9S-ɶ=U]8+B'~ׅkЄpeЈ>LK:vB +H9 Jҫ/]Cz\ҳ>^gW䜾\!Uw QN\پm.wҧkiﵱM7RkR*%pKUA ]qc!{±ch{X`(QBtOl_>hVժ;/7w[Dk.}a2~jNTqDhn tdg]/V+k煉)ސ.:=4᫫q "w].o}|^MRiY/ nVR:@vQ 9;tm\'d~ոo9Ga ,aLÔԩ{):%sRH^8^QR"հ#?F9h6[ όn:iJ SԵ|K@VӽO&u;ո4hBc-ѱM7RkR*<,>$]qױ8~x]ҧik^1~r #L#%X9VR%[ !ۥ+N:q`u`Q^h ;DƇs}Isݺ Z{j]v\^l  ǵ]TҲorUDJj8Zu1g(>#M6njRe{NZ2T~^):8P{v%I]UC:{OTk\{_]oVM7ҧΩ0%?ص܊Jm=5b))t )rZ^+75&v~&)IR+u'όn˝i- `%}u#bIx%}FßG7 ,mSM)/Vi]mxz\;ʴaAqSTeJ|YR0fPixܬgFsNJ9'T{(]TE+ X@^Mj:B,r1Ѻ5i{Ŗ x@'ش~aS#04*aJϹʔj Բ~f WJ߾:dTys% ]'G{ݿIǎ4:%tɭU*o|0q"Boí,(~zzC¤0SQ>:4RefW:ҡzB=-\{⤋ǪwC:c9.Bv!]T< ^Emg#:]ϢPNHNPfIas^K\<鞒nWi]R3l:]ڽS >U}bw\'Ѫ9r@{q r\E!m;:hKgU>g (\()2 9uCpJ~67ob;ĨC`}avZyPLSսuheAHŊ\ʟܣS۬b8)XOէΧ""TK("tPkCI%/**4l߳u76[RhNK'vrw-Sε*?QˉR[|zQOfzq˞BYA9sjC¤0SQ-xQb)Ik Udo.Ej'ԧ'N3Q`V9. @.Skq-2m-`/v PNDNPfIa?u R,$@^XU{Twqd\GY-;A.0)@*Hw9 J"L4iG.]{=q5n](ˉR[|zQOf􃘦7e PN6tkҬpSQ(lؾ'Qeyx9nE-q|$[)@XU'0S¾v9 Ŕ*}+ǸHI|^{ ʔ\nz>n6E1@۰罨N<[+WRLSLNLGiUjjUmnr-_:}c;%QN6mc9Q$>m(E@`br نrVApIEGZ2n64Pϱʔ M@+8pXgPgPZZBY꤉Նʩmx^916nܪ;f+/⦆{v_)Z|Z)e 2L Q}ô" ڡ%ͼw5s֝JMϷఖ,yUva&p:]&s0M"h͗%pSiV9iQmn*<:^{/L%%5w|LfMW||\@=jSYK^aRJa[&H} )((x;AhQ]Cj b4ЭṢW+Sm÷ܣwǫYvܣih%v8T;^;fSL BShG41ڰ~ SBTS҃,РjU~0a_ReJKkoUk {T\j÷i\^Ml,mŗ9|=ҞS{ʼcWs_Y|PV7Sb[f(,,wh4=<$eiWWjG&L)V?aƄ9]'e*>9F;wiDFzkKrpmЩqMVED!xR|P{ }uCV9 /{׮}Zlv7Pp6mܮAWՌSu}?SLLt<];[g/m#=ZeI%Ta(=&vEEE8aA0ԩjdF:jךNU|_&iHF WHn[RZde_Rr\-Rj4}-JIYZZ%jƭ|@d|(ky *8PZТ.4P{wV; =ɓ+$ϱRS{ TZᵱbezrGpɘ2QƏVݦlqAz<3)̡4fjDFc÷Эu5:v!'tzkhk^1)ڑʜ>UvOOé^[EF)G,_<-_| 6@9@kD/5t0ϫޭg~Q>E72MM Z*SʩkkG*#cjSV*/w5!Y|e4gW^A#0ٚij]N6LXq9~4ok(#cb\@9QNS)@<$MO=5O))~Uw׮}ZyrJ+(h S1ahɇG7ezZ.`nCEDh$|Kk?WzWtENssnZmu -ɳPf5 UPpXKw'PNiqS|r {zh VTTj^aQ! T~67!x =n ڻ_:7h3e%Q4cؾzmu^@攎=jL$ ]۲^jSYK^Q.唖F9WPN(+7 6@aܹW_]ٳapSB.UehUy!dLwڧs*ۣψSMAt[A5hB\Skt`?`m*J:tNK0΋uPJ]w)-[)!кƏCɉNJ,$ymXEl hd -m2uVRNPo@ۻ餴?qƎ]ڻV.p'Z &*hBJQ=c¿2N:uڡe+uڲuZ[lS@aa]5V&֟|H11maIM6m:Uh͗%SiV:)P|l><lgոmߊ)QBt:"zh f8S:0.AkHkhc^1ᴰZyՔ)7)5Wk>-[Bv!D\)$InVC3uoWHޭG{@rJR Z/)R_8{ոhȘNӱoSgW䜾\!+_e_~ֳk͝3_׎TFD}JK˔Umܸ"]\zhNmG+1!MoOf^Ih~JLH TRb B6v^گ w.ޣkow5\ GQ*-]GyM :]O1 Yi(;{7 TvJeNb )@{85BF?VCS'Ӹ`a{lv,%''+ooP?)SEDIIK{xwk]O @h [KGxMbJ#B}{WEu*!<wT^ʜ>Ue/[j똜 7F닝wur=Q?JlH\?TQQcVTTjztX)+k?P$04:g2o|ּb>o%l-UTڰ <Zye-yb Z  ʦhӉ9JPZrs |Zf6mܮ{ ׃,P}YǨwϋ 8: VE=[֠= U׆I #(A 9)D9zdt m} C6Ħ=}qGOTV5`R6o`QsϽĄ4?efc6ߢAWѣ.&&ʼz2n%2D۵2{^~%% hU3hܜd%''QN\+#ym [.n_A_켄P*5.gϳ{<};hwYvL??iAzj7CҦ>? ZܙaClں>r oS|mʳSRY6tPykG7x***?{tyhBB@Xp˪۠niuա~o~nS=I魂N9 Fji!&s8[zJ$sz8+:!**LcJ]`0(suԺA߹p@/] ޻k-3U%iG[Чs w(NZ(Iyj/ǟSmm~/3z֯p:鿞w=3^C5tםj  w\:+:jFB96Ԣ]o)6.JbnPk6)YB5P ֯[G_WpP`'6:BgRށr|4SՍlJxH) oUڒT:FNλz]v@޻Gט~z1*UΨVUu;A|ƛoC4=vQsv:战r`- ::UNw~A{BEپ@9m>Ev{7+!!&-S))۲LnPmm=7FԴm9i}-| g$0*kSmH=*߾Gs9\ظ(Im{lV+[S߹E"y=˞`~'yED+g;`@rFk't [p} sTU5SzeSp9mՒZ*;CǍ3Ԩ8_%M-Ϥ>StCL^?W3Uy%fvQ@@J)| +I_g2{672`O֢G+)]'%~tDž;}biLGם7k/S.{J3M1Q*_Ɣ7h٢:j{Naݎr:[URPmյOgkSC5Nj@ѯyI[S3)(Ԙm{u:Vq1^3/OOqJaPnö>kljQ%E_`]Ul%^`0 1? IDAT0\ݬ#.&P1ڟEU e4߬tEnKPqqVIz>ݾ3 YF<6A^߬>@Wm}.S#־<<OkAI3*>0VOoS.oQx}C((М4dhq;4raLtm{u|m"#ff25R4&Cs C5sM<6M1-T_YbUױzy( 0Sƛg5rDO7_Zjk|ߤt)Ec:ƣx́yK=+yEF /1*XoLT u^x.0)tPIzeK1?{߈`\o〿hTζv> ^f ҲECUZzA75@)|(_3\.}nI\q~\eJXb2*--UsU;j4pLs ? 雱q>2haT9!!&-S))|c""µre*+u[J4pwOp~`)K՚ܭ:-2m,{xʠS|K1gL)m?_1qR5?S.={mFwuZں6V9ivS^rn@<((`@9O:4_MO-C#tgtf3rFR~*o ޒMzA7jY5j9?\n-Mv SP@s 6?~Q=(1?ޢ'7첇:ioEϕx$ŦMo &NO-/xLWgx"5<Yڣ|>IWn})GvkvU q?oEO\ex<^;useP4ķg|Bjo9y!OC_৖I|_iF__Wyռηil}yl{ʠ75=L*l$UW7U3OSS%Mv^\\.wP0)Bs |~'2y<?_YRhժ [hNguGwZ&[ݧI4UW7Ujut˘G =q6]B4SIE5q}Z&[.9^YTyǹ\neq&N-|e;V)u*..8WzCd-NKUq!C _nԂ5s>u2|4Ri1ͺ:Xҫ;0zJY@ii}>mܬ"z)Q!!O]l''ߨܬb!BAaMvҿsEjl:{ :e`}kucxzM,͛$PvV%w3*)ijTvVlAA@9=&yg,S⢵f*U[[OX_wٺWmEX1Uc5kMҭSizUh!,`OUe22*..WΛ󮲳^ќnhPDD4UIIS 6gH7#኏b z^^g0[iO|=Pc[}a`=(M1KpUc pf]5l?2k4g,duxYJ{%{++X3v/{TIIS~,S3_Q= )蒴%JYxk-75kV %E__-4Y.*^r8uZϵb5ۥo~]\\2.|f͞m;:g*2QK٩'-hNU̍PNλz i>GXY#&MU!Frv;PA:Rf#,-5Vl[M1kSzvUGiݖeBBLJX&RZO*E1ͺbU *. 3[Uq􁎮hQ|/ruu ژYyyEG^x.R %+ȸx,A:!)nlA]޼>ПSS˴nޤShN61H1fsʬظ(AM.S׮sX%$TG릨 VWioC~ >s\]p*gl{eUHaT֦(~qںvIpDsJ9[DDY+oń9&͜ 㵟j8گA۪  af Q;[ whp>NXxDyߏީu[R9BK4UWנݹ~޻{"\yzA75hNqmN [fQ$y{;\=_ Q/@M,o /1HqS?~ˤݠ=\;ecu鴴^;gDDVPr\eeV瀗[Y75 t-eG9-sќ'j+/qRC#bN~Muظ()zvK\!FF(Mr@J?^!'Uåɩ:,ۇEr:[)HJ?GlxYJhcf:{j4&*@A>?jշ3UU pE4;tp7My 1< NBA;) af4U冘Or%NwJ&+|^,ԑ2AUKPbY#U$%MURTegoUvV xv|{f)Jf߀|--nhUx,Et%]7+t+(?oڞNc Fc&͜^lL M.EUMwhԨpB =/m {AF WMwX\5L}6;P%)j.Z>hDD4\75g9']Mg9Bc ShN N=Cs5|2YoI̻T4YnXξSФnȷߗ? .+/ۃ<`Y 5+y:5x=_)UXYcWӏ{T<i_S3g(,XoUSW%}twGN3V?Z x _oIPcE.S4Ҡ MStUeRnX/+Y}Νi'@Uu.R ^HEFxt{Գ Zy^MǛd5VnF^n w9.az{。swݫ֤Nope|Loo&L MR jM\&5QcS )S:טuꂁ\oM.%)qRh2RkH Oͤ0p Jy'/tģ g#\.;|rwpKiPhNap5e| Gm-:.(?W^N4:U ITi/e_gzczs^v=_ Q/>4\R]3n(]?cοz\o~Soj Ej7=*ժNk\z_Ѡ [ќ1 ]cM첇X5/ȿ.roT2ū/ TRPH@AXT4W -4YScԄEcT3v- uC̣r ^GjFHN2IJK[KVzot&,ޥhP,U]!oԪ(~MukӘ3&MN~3Ri<@MVoh|| YeQa:.ܤUݰ"V5EUu.ҿ}J^;oˣ'8SP#޻TKp.,E@mSpN9n_*P|Fl\ܠRɫViM."*Ip8_55 zk?ZS"4K2]`4)yjz1rCfޥIS#.cԬ$ ژrFs.,/?>QcyZ͜cӾ<<Ok\)^Gs @DΜrC A\Ґ)4s:atʢpSd>]j>r:?"؎U(7wWp*;{+@{co>lUs*u鍽暢:wm)ֈ˪:bÆkqڔ)zM t.c\кGKܩ>On^m|EvUh-3}A}6ImОB`qEՄEcT3vX5o*6$Т[c:̆6< pf]ա9Rl=V=Y)=c""{eZvjkޞ“Sxc [džꥭ(\mSUvGMW||P[ޠ}/'<|6\7}cc5ۥo~y4S򊔗W%JYxBL=_]]֮T뼺E馨 V[ÖHf)YRkH~1WtI`1Qf}bdԱSڔ]QZ(aW#;k~P{{d|éu2!SN9u[Waˈ9GŅۃxQ~ c?V=s*.SF(S:U)-IhphˇUKc :`b}ܘruզQZxaX9Wnwh ٶC|K2nvVl{GvoTh-,1[<&m- ֫;p/+P9JXHRδkK9V U^)BhNA9zlӚ5k3*""ݫ-[U[[OԞB鶹|z̆z^^J)},w/RJKKNm|E;PeV9Y)@As M^^򊔶$U) o/ ˔:P>馨 V[+ui6QBvCY[ܽJX=w.S9v`N IDAT4S.n˓L7~ hC74׹ziK{ mjkSkhY])vCnЖZ=JL}wggm%(g̣nb7?D1?ֱzi1''<3uxե0ќU[[V=DD=@Rm|(8ՠqcjt3kנ'S=}Pn;Z˧``:}pܝ{H) (--5hcf&4S+!|٪ûظ(I>KCaVYK) } mMPvV%w^qOauiS@;nlՊ$1̢&WϟlVpUjknђ%w~jK伫Y]>ŏ(ʞ֏dk3hG[URP(') j!}J[֭T]]?o/.SF>SWq:[URPr4U冘n?GC+鰭0DIdPi7^R{ +݆)Ie65`16@N"=GO?DyGfUNg+xQZ{\a-:Re $t+SQR`MsjK^)o5+m̾F׸i 9ECs ^`b$C )mV éZ) EOhۧtbT3)*i~_sg |QXY#&M)YK (ScE?+[thTZ<ȹ3QEodԐN-V9 |)T?A͒4,FQXq@mz)@W+l8rCJH!j4}1mrU5iuRwn?* ՗|Ʀ݊*o5-9VkgWa jwk>*6.JbnP$?q-4Y.*m@9rNi]:5-G;ïV[O5*\&$.:vҠ MStUeR]Fs 0;Ӯ}/W仵p4io~323m 1W\)J\&5 KRMtpjj\=SʩI3x݁2^;\wVh?[Bs @?oIPcE.Ur%g$gJ t )Tl\}%WϞTidϋӰ:RfChNgB1i 1=Rʕ4Ljk&uZ("S 1HJ&R&jll@Gc7)8)]@_aC( wk6[b4tV%A'B$K?*U|ڢ[c:̆zIoIT۫uy0ќEeR6%x2}צMZʋ>mZq">s߂zݔW?F8NX4S٪B+41IG=|2a TlE3ڬS6-ܤF륽.)tֺG%M-ೆ ۢ ^RcoѪqZ8u5pV-٪oIPcEM.Ӏ| ;Y#e6"u{F1LzaQvU۫uy0 МЃʬ2mJXTaVNwx^F68URP 6gH7#{զQb @Gs @s:[URPr4U冘~|T`J>+fY?NA=2͛$hN%M-jb㢤UWk*R[564X3JS{|1&)?^vV-٪oIPcEM.WצMZJV.N+X~)zmJѮ(rbWhN#eR6%X,0^+;lV>춹|z̆>Gڴ ^F/h%ϟTlژYtSco U. V*,\c&MU!+נ=*ijHy?]fC?!mMmKe22*..ZyWYnw4кwߧsq?-|ZԸ}ATy;4bŭ`JJzSRnQ9ڪm; J4ݺ-16@,Q;Ү6U }AyKtzt5Lr^_b䃃j R.PZZ?dTzܢk3Ul=D@'ќ9p]WVMAzF|J][]S/r&4itUcS*q</eJ[SEDk͚U*..ӺT[[O@ќڸUw&-hQq9q ެPFUNrCLנ UZZ)DD=@""jbb27B99*;ul |Sblqh;vifIZ/(%;NgJQ5hB*] 5ߡFʬ `ܣn7%%ϟ쬭ٶ+9/W7^<c(wc}TҊT&~AyKtzt5L:צglVbRz2%'s0D))hL['BBLJY@) oUscTqq27^6[%ϡ9xK,jrzܗn@)sRUbb)Wd;(&|)TTFM *]PE~'-Tqqy$'ߨY)gegm 4cNgJ Z1kЅ*a/2r3*)iyN!&RnF7URP(')HhiLTr + `%2vl> ϑgXq@mՄ)٪ҽkԨp Jw'sX%$(#hN55 R[#+BlE*aЃhN1?{w}%|C_,[D02&s|2'RT\ ""ذvD@9SSRT\(*iupgYY^"}&J&˓R[%)W˕};%Q_,/Qwu[<bHN\Fqx ,e 垩2{&S !9p)c/_dٳFHN\d9\qP:K̏8=<y꩟7"|`;$DDΒ9\ۼ b'$/gٷs祡aT)_2eL*6h/W@yV|eakg""sx024G\;{47Ɂ_5̞=K9rU/OHNߟoI0`'OFz2wn^Bg?~tоCr @w^x={n>*ewKinwFrQSs9 ;^B|ܫy9KhπS@r @b!c>eYf<""rȫg1HX,n 3`\O-/ӧgP!9 7߲O1`B> v CGN}L.f$$e cL.f$DD$_"]+ -E !HHxlHB2Ǘ}~!dAr I#!Şm!]{_h@B~&SL ) GKm{&S )γ}YPu54I<6Br ]2忑O ɩSg!!LsD~XUv6ժ9pTw1yŐ{ >3D,LJxxKN_ΟA)Rp`['+K,9*k4HNEӦ._Λ'}Y}/*1e IDAT< ޑf$Fo!.w=Fҵ,w#δl~| Ƿߐ fI;S~}2)DB &[%)9lXbJ$e"9f=#2׬r=y|^(FF8*d0-LiHi:il9\ )$8D/3D<3Dx?zSN?k!$ QLsDJKJm]xQX[M+@Sw%oD? UJiserA:پm(q C ӧ*9.?UKHN$T0-`md_g#)2͑UU8- $ )HS4$ iHN@Ґ!9ICr $ )HS3)[n : 9)ΟH~%q.i'wv9  d\dxs&dΖߚ׽3ǷB2x ."9šiNHMusC8ɠ`$wG>y{n||TN9 o?0巯]/S| +;%&n\qqpΕzٿgŇr;[' Spo ʴi'%ed-rAL)?pŻrGrG 0SpCd YHN@Ґ!9ICr $ )HS4$ iHN@Ґ!9ICr $T.w]˝%ݗ%aכ-""Ff|O`8*ȨbCG%92"pybdf^ED}8u3hH$|BDDo%9")dž #S$ q >_^1Q Gޒ7 )1b'olEkd {X|yRx%Ɯ2c b$b$m}m}HNIS퓯1~e2 +//45twrQ~BÌ`GUTsR";K^9z@屛|߾濭,/MP;/_ʎP\Wm]Ųv9g18n%,w8#-,d*`x})-YP K}!9jc_U>A[##HNIk&XadJ).^N+GiٳEv7cWR흲Db|pgbc?ݪSgw(iDX]T\(VOh2@ d0L\Z=lټyRpϖ;Kֲ>)+Kdey )#1 HwY$p_e kgIm]MWVp77;AQFej IPByAr .ZyM om_/jF&q[3Lή$(Im]rO\|1(H FL}|7{ɥߗˌ̻ !9Xϗ'}` 䕣HRQ&ʠ2/`"!" džoZrCj&Ǜwlu 9kH`_tv%NXj+K{tUƞɼ%IQq)=(EŅ\㉑@?슧Gɴr-;VHV|1~4HNiuva%֥I*ڦXk@sK`?Ah~EՔĈу;XAΒFٴ *n(3rgJmH Fuپ|vUI)WZ|yvӲk2p6Gr HM|lIJn .{!;Oo,ttw}4OB>~ABYtfey)F(p+Kt5ח̋{^iLb$\0#nNMV|1ٱGIΌ/ȓK/O.ȼS@$\Ҳo'J,UwPqDZkbzw_v8o5'&ŃcMuM7[zjH$K+ HNkʳ+EOkٱG[ۧ16Ar H:/OB8i=`cê+gZAd⭵+tD#\zs0 #S*A/]-O{B˽Ukk/wǟ+-1.ٱi)ʴHX|yv27p 9$o ҲoxOlM7bnϢZ[=bNpE\QcY6$Y'HgW`06?!}\S > \Fj0 Yյ|m kƈ@d3y̖_Hߙv$) )|O3K [Y^"NXo |IsKɴ+Q?mKFlMrd@˕ήN5:\n¦\Sy ~7V->=rhԬEcC2~˖-a"h޼GTiNϘj*GxUkذBLkg0KQgvrPb R[K6J*1L) a_-}@0.w;o=@4J5+!hm铈>Z ȔFY_YajHm] _;HLQsԲo'lZb$#0)ce2ye i 4&Pcê?? q-}ڦf#T܊ԹFMX9\>UT\ &/ں- Mb$#S~v8 *~@km;Ogp4a_>ԭvhixi7n$p㇉?0ȠkhW _,/aR-u[02s CDD_ޔwv:;ՖvgǛHEvKν_zL⽗?A!!HNHHHsZ<6o݃ WYWQ-{v,s8vZo˺TT02lwj5oW*cҧ+mImiؒ( ٕm nI]VIDcUA XUaY\WjmK_h@JIiZIpTHA ytRپYLF -}SVcdZʻq!ı4GeikTu802PV*] ֣7:i ޅP_alZ14GV(>ʶmϪ+M?c+2[6 ٴyEuK9ں,9*۷], ɞٳ; oZU& ҇ LQi2}svI 7Qio=;wI[["K҃١jJ0#?j0ꚋmѲ0Sm}pqxlX6VoG/ݎ`[JKJY:GWr`[u9UNu;h>_ºad")/4 e\t~bHJKmϊi??"RW2=4GecVYWQ䱶+|%h[b$b$b$Bj*lإRxBRZV|ذmʡ76թO ߾YG/\iBRWEkCTVUm;TE|<՟k1QDCsD"[ͷ4G͖Zv3USaYvDQGkcW\,Z+E]Z###9Sp7[WV8⽚" 7ϡP<:,/ʪ Uq)!EŅ,|+C<6lmiƐ>ziLlo?`_Y"  GtlڼaB H[AX辟K>| Gǝ83Lx͖%^W}<E?]5R_8$Z###9u[>Jj:11R{v$R `!T|Lk=Xͽr5U'+z*Ѯy }9"k乆&c L늶\O[.G/5w' eliUζK$~{cuM҇ HƇlj^}3*۷=+%k%b?!\WQ-*6ڢ+nfdǪ2}[q;ڻd-kPK6VoU{s|1 ZUXYWQoht=˝{WĔkbcW;-}@`|HNƜgl^-즊h/LU[lc G-zPDuc|4'o*k8y&SKmsnuiذ<$uժM>V.Tw̦9Jb$%WU1)ؘ&p+oDQN) CRZV*V3H F0N$`C.w,/{džt#K'B$KeQ _+s8Ɩ>`er S΋[Y^*s|ꎛEҺ`Z҃is M$(BEN0# bCp^r pM7ad} RXP)2)-]'Az"N{Ǿ|7Vqպn #$2%džU'FTV+UϢKrtwʞvd+UM {ce& HHHH@ڐb#Hs(kdE|?~ԕr`GJK7ALsDUTm/kkk%ǛMk rԕ)7Q/tV-U^ OcR8.ɵ}uINʁc-uUTSٳy1111V$_՗GOW3<)>x~izu<³2ay{O]Ĕxאb#ؐ?UDАܢ@k笶EȅU\C.)h3BRXPFKݛ|hayb$b$b$b$ HNQ;5/!3O3?_}+*.oSG{llRb/JpTaucKkVf0UJwwђ#ELsD7nUƍ\/\CM,VPĆ####iGrRK m{.̞=Kv=CV{ "،adʦlHLITpGM7%irgKxdž%WqZw!ڴUiU܎P` }NPߤ~˖/ʪ5il"8i0Q*B SGYYL>mRt - 6RD] b$؃ihkr=˖-a-Bc M A2Ym2MMsTJKױc> jrTզĎ d}eEZ9*ekIb'MJG{' F"F"F"F,%|~y'?gyRgƔ_d2yge3LYYnvᨬfb`cuޯEoehl ǺU {.TV{]WQ͢KUWרjWx)@I{q;OOeLK 9EM'gJs )++b@9;UMdžٵfHPQ.J<6ic `8*ؐc҄>֤M{ϿԴ;xlHUz?_\,&AQ)-].JsQr &HHHHer.w{1QYv)i޸U\MsUʘ4غEcֲm-}LsTUKiJ HC.N VX9SDn߷ F"F"F"Ff~X= G[4?d;4VИa# ;nZp:|׳#4GBIB&HLEu3a F"F"F"F,ٽ= vs M RؐE 6W  ]XѺ`@kkTo[AiGpC}-:,&ꗎ.5/f$Lǣ%mK@DDDX )(Ѐl߶ M.U5q9ͻXNk4{TQ‘uxrTsذJyvd'79˗0a6eRVĔ);/W@DDDX )pVӴ 6Aܱ>LsT+tGT?c2]G[T <Ǘ+.wfCMDd8!@DDDX )pV?J9M7TѫSqS*5}9Z`*% il))J[˖mN7^m}b8b$b$b$b$RHN@C0Ã1%:;) T[Aw %>jna7}0)Z=*U\aݼgg9q5vadꈗ{qb$b$b$b$ZHN@BU bL")ʠҲ~F&Ba$9jrDkGk2YUZǹ}B`{xTc&' F1B*U~XCe!iob jmT{Tf`oNշV9QziJ2QIX~I}** ֖k[v@D)(fߥC;H<6@(q1p ߩUW*$7&TIpG8z\GRx?@M[0*d\CDVR";Kͱ⧘0####Br nV>~v0maԝw#T(zDpv --ꎙ>m̗rd/ H(IL(ԯ"eu G~@n׽j5b@DDDX )(bRT\=$e[VOa;5|`ږL˗2I=gn!;ĮDkٛio?n #SgoŴ^$QX'@S## pS8y7ԓ?]{gG*W@ Jh_oa"m ꗎ.B9lv%>`m4Pw̆A9[HWBPJG b*k襥=XL6 F"F"F"Fe>*럖@`=w~Rq Yz47ٳTP͖ ?ذwOss QK|۶sqXkqj-RtT&=EJhiH, C####VDrBgϞ@~Z9SODzr $(}ч> G/4@(eȪUeL`hl5c<RRz1N,C0-9j\}6@DDe@b$b$RHNQIz'rs祡a~ 9F m'nFc Riڒ;ڻlXceі1LCB`8*P?'Mh8Or02,Ѡa @DX )6p<䏥aޙ-/W@>@b~\hSPJCېӵ-}tw!9˗*,L&Ӑ5|<[9b$׾K0@DX )6rQ\ȑWe h/gϞcp@EcTM9nu1hRy I~jMP^XtЀS[5j df F11`)$`q[c:FQs' %Vyi=H[AM0ح<쥟a4$77p2!I9l1L&ˢk!H F"F,NsKLC3U4WmAa[hH H<6 aCZ*^mkUSR#?x% Hi^ݼ tH8Sjd,~'qtbJ1 GU.hH om=`xZC̹Xxlھrrg1q F11` $`a[twi0|ScC*^RV1pTVOrhܪ4I9J+EӰ3x/\\O;],6z @DX)X9UqMѸ,ZϧFUrrfT7J[v}{02) F11~$`Q.w3U;USKCM|4GԖ%ࢵObiުs @9J Ebi ]([o`c˥Wz @D)pp:UњL槵ϤikD1q9uq@CRfPAJw|Kap3َv$˱cs28D8bEobgO<%g F11V$`QZ{TsLsDN\Nki2=BkkP}CS*XCR8 -.L*Y@G{˥K$Uy썍;8Ab$b$ mHN|<1 M!zC 2Zrb'HSS> }NSKxlX"JT`I1CtccHz Ft~3e L @D)Xy*;{>cC*2=ҔOrcХiJ&zjH ?hi=h^D j b$##)Gr 4w#*[!VZ Dsd9LkY ZKCR8cC*f1Yi1$O/𷾲B1"9 Y9 1dže:;UMfg4Uaho?]Ace M>`WzRi@ MVTLH8Ru[HP1"9Zo0e. GN0 uwKx垩x?!uId9lqw۶Ƅ1V(E\ᆱ*KvwH sH F"F,02U-a@+Tf!M;` n71stbdžU/ X= hxʱl>^ˇm~rBpH F"F,Dk?J,,랻ª.LREe=O`P-_VMB%-}c;K #1v/`W,!a5 sNa['ȐM6?D#Dr 2w^fn蜤UikM-}LsTm^_%g_֦|z8[RqwhB`'ɚ7I8 1d"9 јUMW\O\ #uJaU{Ec6GKKЀއjcdqs+GiO"a VymۥUTH4vb$##Dr rKߍ>}^{602XMTZ2at8#9gц$ڵ*?_}HhZ 2h{󥳫E*我b$ HNBr@ǭ@Yj[aMi4Ck4GW:nƾ k u"lFۿGȐ?{yJ8%'<:׈ VFY7@^DRjՆH֟_=r נ0 {J݂խ4!mZ`ܤzư[`g df`|?K{\s_u؀45tl+b$ ($S0 Ks JҩYVزp;TIFcR}$-Tɨg)7> $_h$->S}Sr)y9@#Ar <̦f`ՍqԴ(MmTV)Xl>rҘT@Ax|K_e )K20tJNb b$#(4S0SعMkZ,g:1CU/}nOKKtjN}HuBL+zE"#g噞^}͡T,Ab$b$HNucN$_s݌aZvqÑQ.UD)Fr%Ά\~e$祩jyH)bO.dvs*Mk]dlX.wSsLk-ZpT'(8LBP-@ȱ'<=*9pI*HH FpS0]ĵ9p\<>n[DGwx9N,tbYh>7 TWuȓ`X -u8D>~Jw)%1@@b (=<ܖYy]՘7jl҃1ΏsQ$2 ʙA{vґP\c8*OÅ& ѣ'dty&BDLh;e$:&}}HHQTN;xxC$2rV3--}\w^.&(ieɴyz #P/ IDAT9&AdbFe"n(ciZ#< 4)gS*R{u[SK ,剶@J| zkI(FK{O IǁLj b$#HN{w38CϩWCZ5cOhhFKiibo̫Vgaq]ޟ܎_!w êelC#@r pGݘ\yxB }/Uwyz>Ԝb\\y)KP I:;o8L$(NW:0YhjnS¥s{O+<"9ɤ`8ܼͨsa%-}HL?mhhHtԚ96PL%BzBwCẅ 9ʕMo@ݘ} O kʳ診 G^oM+h2ܱ'U3ASs=/C{HHNC5L%3Nͩ|g:1# U\*sl^@#0 J&^͡9-ʑV%dX=Kr1>^]\҇p݌TW$-&.2$Pb>+b!$I*H '#Qu/QLMjU*ED.*M21# ]Gue$:jռ7> `TFJ557؀tx b$aHNkԍ95u,mnHtE24أ?F(<T qvtV:<Ƅ`S@\e6Dd2;TEbqewZR2~}}\H`7I #ApT^tJhAr il8eV+Uqyu Sr5>j^iaa$6qstʥ^yjk'Qg 9{\NK@A01V$XmmCDleVPs\'=@%3M&M6jdty9xIT$$Pbucry@eC4,tlקaDH&\7#e$:d=-2q,~(2S(uf$l[Į!Zmm5+ WSNrP*ik@7=']LFA<_E P,$XXl\ҩ9UcV_i?d!?b)kZаJG;T.gW| moli*]8?=!m-iS`S&CcLyFr 5IfՕ|[hOjeck ҩ9ZpYh@㺆-;%F]pwiO@ ) :*&cۦv\ *hbбW5^ZD FV3[v2ȯXl\ҩ9Uc'*Sf8ib5-}4|0 AJÖZj(zy7 XS@*&ѳWKPѰНNIY)JB>؄./Ny\7#]-;j| )P:8xH@HN7emCDUg"D[/~K{k ra`tjVZ[I[~T :XE 9"9@ޤS^|jZJ[}LΓL`զ OR $ FrCr >jSČS\r݌DԌ7U;ZD` )y&P$ A1t16!;ǢmlUQ=@Bpn]8?.M͍*ƺMID*h7U̵n](x|R:C[vʙ!q]QVSsD#nDͯU2 `zJXY<>)Ԝ1o{d ?Ώs+bkMWX*cGOHÖyD)zBE;VJՖM2DlD W o8 Sn4qyI&fT-8N/$LHWaiزS:PMeH(TD#Cr r~ZG|=nN?~ٲMۍDG3:j[8a)ZZ>ξN|ísʙ\7##Qyhikٯjf>,H!99زR ,^Ϻ7 o>F~]_@@ִtvƓH>Zij-}ҩ9I*t'e{thg"ScWޒ~#?3k{JGL4Ҹ@` hۥoRk -}3,v+U\Moc^5%^ktJfҰe;4-޳{O ~#F )G:Zn!Pwk2DC~&$)l%32,ya6#ơ0Xޅjjz\I;7#g-;I*"rГHHy$`Y[6UJ+^+t>|7]90\>r-Z6)8elf+[\OI:5 k"9Tcl @e=nI~w!^ψ'U)r1ՕWK* ,v["}֬Qy%,'\7#1% *SVіX,*r{uU *v F"F 9C$>Xr2ݢѳjZ> o飩 x}kZur-ɑ$L*AŤ>HB#9C)rHZB6"Q%|J_ijuULo3IM x?TLjC(4S0D)3 tjVƧԌULDu3r>ezKH*G+rE5c&[LP.gAb$@!I)>EQZ]@F";Ą M2Eȅ㜰Qt}1zN̨Mz.ĵՌDpnu3oߓj*}O(4S0ZnV 힐 U/ y3^szL<>&6)f%[ Ghs')J`dbFyDg0 Ph$`M]MSͨi"Rj Vq2c?cҒ8eE+mzK()wL1m4ǬgԎߔ{b$@eM#%o\78؄n7 WSXdڊ&}# ,ҋORޑw?ĽI޼'i_np. 7Z8NYA^[Ԝti%ǿב-}.6Vt_3=nF:ƍfT%F)XQwe%v?Y|H<='^exZ"ڱ[x9P$ g3j_ith,' Gt)F-}\w>9vMO6'e$:r~%11Xћߑ=]v'?%{-y~Y؝#GqmbXl\X])""\zm >c9'U Lqi2c1HNA־|]g??GܟdM??[7>p S6jq90 tIf%da5L.E$ӟϽ)z!%bLDGzthB+p)# ,iT>+t#LDr ?ʗЪg9v?)wg軴,h7x!Ҳ^䄮XlB\7I q݌腺Lޕsp^txTݘ׭+#F"FAʕ/&_Gh^ڳߕ\& rp5>v.R| &ki>w&'ti|ڧɲVq2#?SL̨E @nbqU""b$b$)ȫK/JsG)"/pg&nJʕՎGwp=)ȇdbFTZ,\wJ xM/anskigISvY֦tAՈ@r X &Ԏ}sF|J=ȏሎk]69blύ|'u^e]eI {Z*##Wϼ.<篔`HNq5%՛[=.B%܆[L& jms16!\mUH {TyB(S:wr=$f$ZL†VbHTII OI&!,YR{qRK lFr \z0]$[tXGC YܵkGIB#̻88H$# Ar ҾذD_D bq|U6-(HDGX]f?#2;DrYW8eym]R4@0)*UUzVzGi[=%0tjV(5"۶rDђԁ8pd)& `S\]} ;by _)av@,>cRUF~a%1fhKblBY V!M$b$b$Ѓ v„757R=rvRas&k],/$-j29칾AN<|Euc&;6 lBr K&f$SH^=mL Jl. ' ؄nYq݌\K2XЪ)"vjqN @S\ IVSg* @={[qʘaTgxVXΏssqVRWofd7;11hAr `!m ױh (9zS&{p -Ca.~UF&u< qyǹ>S.aeNf5V Iǁv F"F@ f`%}}?CSsc C0USP Y\6CQkaSRG{Gٽ% ^xw@0) S2Q9s0+v"QǸ9Tb­mBHLΡUF&aN'f$iAqN $NziI5Ξe IDATT6j$TL(tjVEPLmB%xʥʮ]; lugpuJvikEr #_Or p'{.'iT(T+aC_]2 vQ:NY l%"2%9픮HH`$Sn܁fd$:sgo T)eB]Mߺvա*#KISae6 b>T:pwgQc@SRHH`5SK]VZVЦ@Ͱf"W,ۮ8'~}t㓒N=ƺfQ.焂b;6El6jnoyT! Z$rY_r 9blB\wފϲ{O  'O1*γ([2J(T+S=7DGO\Inqr&4mL_%F"Fu&ȂfL=zy4=700-p3L{3Qz6$ "M9O12$V#Fb ZM @i/yF 828xJɀFF/oՈY5nE+?9]؄|xSXxӳڵz$s3p>@l0hBISFcx(T+xKmkS_ɸq^!SnF=aM UN&m4%FbKj|pJɶ)" #J ~Xծ"$Se24 .4|u} = x^35-c`/mU3VםwH\Xu]X=qd`4 *E?,M͍LTI&fT1, kgw16!D2M,l ժ O##'X)V( xp *~&1z GFPڧ)KU?[#yHtԪO=l﷫˺S"9X*ڱdcTMb t\QEcze%-ydaݜݳ6;zi>COX5BZګމ 1l|zc9A$KfՎQ|J"%Rh$@r822-^Dg9y OUQNrߡCOo:5'I #sxcgYf}uw19Br `9COrdgLm1AĒz\ƞ'1ֈS=s3(*ϹP̖>+3^ga>P 98<$׆ؽ$d lG`9r ʏgGeߐV?$K(κXrsW\w8e20tJs(S^+ƭsbKfl40tJN5Č ^:s2:A,m o{Zdtl%VIǁvu㶩%1%{odw$-o<})]{IaJu3sx)A8UO+D4&%A;<7$(7$Ԝ'To7U|> YBǟ)S5fםn#1V?j J-r`-Er `dRw`tx dLely+998=^5#1OG%E+0_X H 2q鬄[9 rm,݇Unı1#F1U>&g[kui?Gޯ􀔭I )咉vb9Fѱ|{^(mi[םÒNAAAS2mASTb@i1YfEI[WɩV˥c¥srГLGu>./\:{"ؽUU=2| HVr;'_xP{>joH &"$p5>3m(yx| H[~vg|?䇟H?Ay㳿,ǿ.ա1 9+W^콾,@<l篔rF[N椿o# b㞉K]3 nFy8er26< kj.Cetyijny篠l='!1e͡:EJwǻR;~[#_hϏG}LHN<)+>GuJOds3wn$/?HY1f\'OfqE>fTb)H[)WU,(o_V|`g0r7$(11!9VdYZY8?hE[\l zOS(MN%DAqǂ7LaеD1 ;zBҩ9O,_)2:ӒUĺzTNYJ>lAbw*\# R$aiij΁'"JǁǬORij./\:'ǻ2ϭ:]5z>kq({JѳLLpmtbF$oٷI}nXkbBRR }5 {sFN.{Z=pvڝ'hKgxaS.HJ+UջI "Q&\ sZ#cGggp5/zͶGr7_P1viѱ5L1tj H'xp %Jŋ}r2ijn.Sݪw+UrLejRʢ[BRBr^xkS`GMx/.~>NU=K8UzR^tNFǞ_b˭h3y -{ !=Wi9x #Ů*&f;Gb$b$b$""w17,6}!snw=m2#c\BZpx&'#Jb_{L\:k̓j 7HtT"sƗ+%*ڮj3=,dҩYatbƊMf|󈌎 XFijnם p~\bqNԅjr!J`UQ*9ԍx!:<{COZ_b$b$b$$=-+e{O"Ӊ &8TI X%7n`A^(tSǙ[ԜrF,U ժKHY4.gׯs(y69e``"j}Oi'/޷.\\hrV X%@o*ٻ@p*Jv(\lRm{j}ߡǎ F"F"F"F<C"sV',U`<." q]W\^hof2+&,W-u纺M"[/BJ(Xl\y>uY!Mq3r%>%׮$LQBZ VBZGW#lzceμ'_x] 6%9eγCbČ;zƮw,X4ryRɗz^u_iL,%ի+u|=4^J<> ʮGwXW)8xHHH瑜x,𳵵ϝlp(8xAI;zheZLn[j|JI&^o$X$3Y//>,&dҺcLO//a؄/7ooF_؄ *o$:*W4ދ ;/rEI\{YRWNn)/R֯@psʍ8elV7~ ٦Tk׎펁=_5 )Dg km/R>3N,lv>@)Dy.9e:1C"qSD29>O&KݴdQ:5'JJ*)aNUQWwMX\TY|Y(T+#)Z;[3H,/XgCZ$P6P쥺%111!9Hd\7#mdty&y<楳,Vո/P`>/ZN͑H!]%xkW_!CElܸAF @.yd.&,]}To/,fH A -(t  xN:5Kr J-#wE;zE6o@z3(mޛ-ep/0F;br {iv!""Č{^^Ҫ ""uuDDϳI(Fb$#Sn n|Pbq&FJ}&g"X ɤ ,uuGhMdXl3)#1JEC =L=aF<rRۅђ$ H Sxb{<,UNȱ',yAdjbNrxW}'e,mSfNHI6# R$ui&|LҾq?c:5'$x IX)~H[>_`[r=P#% F1ޙi~/e-@r Q#Qں䬭u;&W_D"ޫruL̰#mb,[+Gx_Bb$OS]L>uUd-@r aTO!n ؾa=9#\7#;e$:d`V&w)H F­-#WE';.w*k}>@r Ifd/Q,zBT+)fqb7lp;!Ƨ$`㎺:K-PD*qr&X_ɻ<s!1%Ib$#aE>m|?,wea<""r>'-;a$6Ώ[Yb an5<|QikO8&beP5+ǰ$# /[_/?;x )nI``$xϙ$$8PB6UhS5)q{#m(&Xƣ3 X)H F_Lc"<K(,JAw#rO.lNI,65F&ʏDu3d^?K $+:Ȏy,LIb 1)nOʱO3D)8hyXe",󲿽KFޭ[Po Z]0(N J(jS 2 xČlol#1 HVscsY,NI[>Wcpʩpe;q/'^sV~RfE/:e$hV&7N2H FJ$XVWa:+>EƧHf%ۖ!U<>ڼ]eNQT~q%n`"pÙ!ims1)nk_{' n+TZ3=djncu `mB!퍟gC j L"u祫;z F1< 9 wFZ[gmy6?*߼엞^K޵k/w:5:HĞ eQ0̍_'噞^&3ֺH Fb<"9HPɿuʘXg$:JWeƧaNQW_$xV'OkӖg (3ҰebLfЖ46~H<#9@Vd$.2>/ǎ>Mx^29ȋ5x-IE1wJ[ o`2[,hk/c>'m-iC#Br 9TdEf?Tmol3Lm&g]MTO- \(x|R?/]GXDDǤe Ж_-wH7Qa HH@ k *#1&c ~-.d_$S} [vʙ!&D}1cJ_5z 8 ժesa#{N>+ [v&cT IDATkvin"Ԝbr8\7#gLBpM}E6B b$b$!9@^=!}}}fY?Rاnti2JPŽj:cwe㔓`)RUu0$b$BXlQKJ|J\$ bːP&&֖}4@ɱ[.,J8M:9&n,NHH@-[~W?D__n?R$ԣ1x|R.'{ao]$82q鬚{HWVɶm RWJkxgH$KrԍWHV[\"R@D)Gr)HN]vX#ކ@jq;;/$;~kj.ǻR1tjNڲ0^(T+u5RWIU,b:1#go,$3,Z X%PlܸABZOUVY F"F䔂#9$ҖQ{ƒ@8N{{ V,(.S2^9, ?7H0XŘ)f$xI^TU|y8TI]}dҊM;" ՉrLp11PP$) 9XbFq A %]DryNH"1#4 踏U~}%[.S*Ұe' 5|JqG*SUj|JDDq]W^0y篔+% rc7P #& 9HN1)@nw,>`>+ED4- _0D5{Kp""RWƟNI:ʋ""+NJ**ypAXGcyEbř'4K/EBZYڰn{Cq]h]ȕ ]޵HIHN)8SLAr P<>p鬚>e'/y!9MN -g8OXc SX.~!|aOo7U7L WJSs?7A`S,kOȗWyWDzeOҋvڮfWSa`%S,uHgD'~C < zM~r8Xqe65>A`%S,u~' 7y-5}H&77D@={[qT5( HN>iwk9{]yobB)'O;VM|ak9ޖ/+USɤ@-MUS\w^.&8hEr%~f<X|JUUSf8pE 8OUՔ!>457USX8xIU=y4 HN`PV5I:5ˁ`=SXС'T)55o`R5@5)T59 9jqԌj|JI 9ZPӢj'SHNޕwCyYȇ[20ޡCO/USx)Nuo+v?mߒ$_gR`IuJ՘b +_{֕_ |Brodo1ŷ;20_)3USx)NuRu݇M?o?=Ϳ>5㔩3USx) ) "-HMG޽ϧ?)VZ޼5vi͡Ucj /#9z+Xwt|yM E VIǁvuj /#9#޼|G#o^'&޽DY&dR9eRѠ$K}Զ;ϓ[iv4vUخJZh˯>[nɡ#Z̈́@QNlzէpC?εk>ҦM3(h z0q?Ғz%L8).iz:lSӬ"I6}o[|hgSc4z*qLMdzܥ%Gȼgx PN Ixzɹ2{;c5kj`S'[yϨ O)'[ni3X#]!O!)ٳgi❷9u{yBQNZOl-O SG)凬֓3ϒZM(*22Ba-Dy%*CA(h[nҌfL ?ܳi : 6Xӧi-7hM vGZ QN쀿_JȈAc'zajB?"nfM' ֮H{ йzeF"77Wnm*FF "pIzɇ(=z%r I⧍4ap{FOw[júgEXsg[YՄN*,||NĶ>@Hܽ2zmÆ)W!q~ (t`¸)|0E%I[jjj )@W_kV1{...0vi@V.B)<:e[uTSS8g_R=]:uz`TSo )6G9^PN64Krsl2=S<ד+9)I/,Rh\+UEUǬw  p7+e+s& pr>J+yu. ۫Uz iN)F9^PNzz7]+.8c" Z1><]! S =žW {U՝&P|z8v+-mr 4ݤ}bvSL$Iw\Ɋa`(*~769ޏYhVA42bqUG=L2N3 _7߭}"U%Zy|0t^ME9/=q=Ȝ;pDAuǴvG2Ғ#L0N3l5:0V}w KA84)qS{5=AfsL1Xҕy  ko&w9KK*)i֮ HIxx+:fv?d2ݨ- p]ΑzRFcoR GPwRis9}âƎQ|Tylz!Zx23j%]eet9喛lv|J)B ~z J?tp%AE9 ) Le2ŒuTSSd:M6۔S(p6JR UW5xzۥݹ +p4~~>ZcZxASg6*uRƎaR$q^}Wi"Ve0$lyo{.=<8)pJs UU=/5n_C18 VNPBBv3w=^>sMk, ~k?N!*= ~Rt%XWhXoI@@+-9ҒMY#ߔC^]io)~{8l7~AݢcVBNr .ՙ+tujTA..$rmut'gi9D}7 @6}iՊiZCY ?Ru̪+lժwm (җ4.\v..Q?Ho.;^$.`詐pkOcKXިSuUq0!4b5j꿩 $8".@QTT!ᡪ ױ^'+:O)^gF9nfMGxhtmFn.z~6.(ru~W` Zʥlհ*{N&`C6}~զM+k[@p.rowTN@ ڝ[(PF^U}yY~WQ_$nQNوrwoqFW里*=|pԀކˤm #hؿ(`;۳wid{Æϕ )@' 4hФ@GWwAVE)Tv; |i~z4p\\f\uz`TW0I[Smњ@k{ te7kgy_X5]ѦRZyVRJnm~΂o*=SKvc;F޲[k)2HSd27oQֶEnjWty:| K2mPMM-r+4|_4/T nѱbGD9mM1JMyOYYl#ڦVt}Uͱ2Fwy33j%]eeLfYYVez5oڣԤԣz.r ZG S9_[)ڤBI˕Eqq6&ۭ- tr7_ʿ^xFzMvT_cl†(留U)>h-\Hcd6׻][^^)%]2]$0t35RI>z1mJOWk~6T#Htb7S&hEPƺX h[-G13EMWS[ueIK'Tש0X4.-$*Bcj^/=ؠWKe㡜f ٳZ}uAfsL1\ EMM,i4s&ce2nY qՐ}:6K}moH;tteZYV"uUr9{MVW| r .Gg*,lH[ 2nTZZ2h %'-WƺJ??%/o%?SaKAFo?p0VX^Y @Zx [8^*=~35F9-†hܪUt8؉EFEs K**: )**B S~[yyR(%п~Z4Io.;^$;(aõ%J) oװ=*U]iBiJhJ&S\ͻ5b\\\q644j]L8'q we2VԨe[uXV$aC7j&hY,\蒲rs5$˶f[sM ՄI Wa4vo}\-$P:RWn'rRCTc秨 sm 9V&Y,@~~>l*Ifw*Kw%;I2kz_=>[z]3aU)Ju,u!ᡪ Wa{VKc :'RnR:(*%\lr pUk1HK_׀ _x\'4?h{^&&h ~2]xeg5# tY|} Fe}<<3gWIp7(11A㕒?J)a[oolvuO|5Pl<{g&@p~=-UsO yz$UWpisꆱb]Sba6>֕7lCSsI?S`xN//,l/^ &1J]Tfsl C-PWm+򫔷%[7}q>\b\\_#ii^t-:0VG.yu6:BoI蝙ޚ;@?r L+7jh/eԤwJ]M=RܫԒ?p8Nv}2 C=hGaCJLLhv)"#+%uqp'f8y⬶~j^U׷V5/j hO,B9_ T=tnn.z)˽J#  v:~u5]!kžWuՐ&"\_\^}LT^ם+rv\ןtWj")_g RK 1X...v;μ~*-r ŋآ$пXҿuvBP۠v;fkÕI2.|-Dv)ޮǭSjʻܼ[ 4Z蚼>滽y[[٩ovh'8mw&*:z_$%BїvlNw뤞gU@;T$H7W?\c Bc)N>whwyG|RoOE宼S:am$ 8<)6G9^PNqz_zv(w-zGWCzyiVo({A9q-{Unnzަ&eأ$V7ŒuTSSd)4wMŪߥc'S>Tg'׻ƐQ@ ߿_" jG"PN{;+K+>Wih#ZIKh3]ft#s4szߟ'Og*tP()hwM}Q^;h@Mqt^XZ+7-P⃏4vliJK[QN+Nyۣ~at 8Ks lȞ)nP||<< 3AP eWIrqn`r`wy5VH+tRw}QzTߞ8El֌zdquz%J:FBjS)- c+#s.mjjҪ[4ﱷ 27oQֶEnjn-/Œ[cVU}IW\ǫ4kaC7Q^JMyOYY9.-**BEEYE_7^T5M|YDtk~ ު?6=]ƫ3걧+Uh)@yajdVF K󗔴VޙIڞ IYY=t.U).]13[ Qs:>aVͱ2ư/s@{8-mŕJ^i']S|ݏ}О}{BJ @PN:]S_#{644ٗWʍg#yZ`Lclo[IY.4v^ۚF+jTn\J|} FU^nN,qSY&<2-x6=ϭzqJRu\'(J72zMMMڱGwM}:H-ږs7JJJ;]XXP%$LQHHPWͽ@-^@[ʒX@&m#s߽C0=SU2.r ЉЈSqzr$rs*-"VSS+KZ>zn:ˇNta~~>J=O^vLe2Œuض /]e1=]ƫ3걧+U))H]Q+7jd mK BI˕n+ys@.sDEGk:(2rxlUt..jFv3hz^!)b_]Ttbuo{2F+jT2֭g ؔclmcJIy n ֋S8'Lw 9V&Y,>vg;F SmZ -^@ٻ+]QN兄)a(,lH[ 2nTZZV@ V^dpEFŒΊ@h7StYO*i]',l/^̭ZeIg g촢XELPjʻ6pWtxELv'a2VԨe[h %J|q&F9@b;FfslowRͱ2bIg s]+$$@PN%U\N|}ϭ>r LNr QjLyyUQ^@~~>O]qiޥԔTVVp SԔw J=ӯB-/Tj{abclu9\e+c2H*p" )czYҙ (**BsfఏlUt[t˕pxHisfdlT9SpNt.|ݠ&;s v7^ 5L퀕SpA+s6]F=/opbWԇ 6\{\;}ܪ).-*:[@ECGwE*@Uj oޝ2RQn*N3)).)3eeZ|‡*!aBBZu:[FNL~X }|%I]"+ v9oO409ppt#]5$DN;Wֱl2 3)S5V]kT[B(=_pP^n|\c0UfݯN+c$`Kv3ږ8,弯57̰Qrr ;7t|X#eg_FklC\v\ϽT7E6:MϭVޢRBF(N^VTqFZ{unmge²C(k[clm3j%]eePVVrs 3^1]JY,鬒@'Lђԭjk"o7սd/NNWYǽͥ$mˮS̤CLHo)!W#FiKpZ< `[S@4a&]]^xY!q-Ipz/lcjjjeIKק[0EJK[:r9V&=?$9Ʃh5l2Dܣ~hTqqŊ \&'-WfMTXUK} 5m\T8Dfy[~%N72\߿_GnAQ//Ҳ X{Z3{yJ9zSYW(i%P!yA h?5޿B\O,!T;[ `?cd6׻ϑ[)^-^%%Ů:}͍:3:!΍ :աҳtH# zm?45IGv~w?'7=Fkq)uG/[yRZ~FE-qh4|4cZ"4Kz;4ڻ\RˍFZ=0BE^L?+!@3dnޢm9 poUJMyOYY9 'Lkƨ]J)?]55Y.[ [NNa#kz|zjky'O zm zQQn*GSz,ezZ7?(ѷ'x΀5K_ӑt}{owWW@\1AZbJ q\$%NjjjeIKW9)55M3 57Ŕ5ձ߾²8d}Z~CZ} l3Xr?T,}oFY;gя{h;pSpά}/*Mt]I('{'Bmwm@K*9i|\yy[tߌ>G߫&[<r^jova#eaΪk64g*6bw:fՁ/>RPflVUuw'_hkGGd&wè(? * g`I='(@# eGFc˞\/*q'a]DQA-\H% fgRB\Z^v:@M=;o ӡ#ṲCC**V7T{lqBSJu Z(y>MO߭>zS >Q}e A7Ɠv{^<er'M5aFW>8X"r?!Y,骩EEp Z|*A3:d7i21nd3Z^7׽3ַ'N鱔}i[}4z%G6r^pXwL*iOZݨW4"}$h8/i=ɥrO6:a4+[*8HeIKWƺ OPY,ܼ`ഖ8e+k~Z}a5iXuV&]ZfyQommЖR:WYTw/wWKt2\'3kz_=>[z..ү֑,mKK6NsCm۾[K@۲ jjj yശ<-;uK{ IDATyUl8Y3j֌2zf#Gu4 8i1|\S>ڗ{"G]ʨPe^hwFMH]UWdE{PTj{+}hkEoWSk(؁FJ7O(֪v= NI%tb 鳏@vB9F>\u*ПzMo~Q|{]6wޠMjwht'4.*?},tOMmSL}{{_*>׋}KFߞ8EPvPI{TwL*Ym+?ZyBʪ%\-FS :\\cʠO>R؈L( h=-iC螉[ YMM,i4s&ce2nj딱n,i N,/b&Rذ?M lrŔz0ݕp8%L{Z"KK_q-mVVVܢ keI[V||b [phLgRʏ9D<_6]O-JӡJ&Y^n.X$12c}VrrU:CgӰ@jkFY}u[+W=&wm;Ó27oQֶEnjWty"JIyOywQ_LfB’! [-DJk ՆV5Uk.*Wb=Z( ^Pk$G`-!asI!ad!{f&u*3s=dF )"# u);_7_w\ǖoo^Uv͞>\wWKmP;4@/e 9Neև[ 5Ypr7Q *)jկnW7$Ģ?-bMޮ%zcmsS5<8*\ZkuCNx;ӯBB,^7I֫i㦏5*+>pXEm]4Hor}}l5 Uw`r@UTTQx )uE$Xa^.ϝNѳ+d淚Njʵ_蝑0M^xa+-}93cJ- JWk̰5(бcG &vhzՇ|"r_7_;_M|G6~s*[Cq{|~I?'OR5+;ێub 4Y,f~)j>P$_bџߩ;ch{AϞkޮ%zY0c#wz7E2cb\w.~!A85o)g4JoniHҺ q{F|aC5$f$wrkտt<NjS >}Y*6ǪԶZU;rƌV}ajj<ob$ͱ]6wbs啲X>%?NW8עr @7uu@ib"E\Pb5"1s?YIc|C *߭JLXYYlnʣ|n68T!u.v\OQ5cPSm4p^;4LV#zu.fY]]UQQ+V+77O ޤ>q^K97(gF9N NBYS=s5~1NSgѠq '2!gy 7M ieJ;[Ɋsݪ̌St4$N^)6Y1VX(\Cr^}3I~~~̀)?{ n}_lx܋JUlGh$>p @']21Z'OWqUr{܊ͱ5*),YnyK-oTCj5Aˏajt*+p)SYkaV-HMVb,oeeVPQ>"A#F+p|åVϝgmU4f8':l+yܡa:j5 RUZbrspMQs8]Zh>p @;Y,fEMBMQRʅqK#jRdQMf P7ŗ(Fh8iN_fkG2P_UQ>-]L3gNSZ"ED~' Nh3ŬxZ&h;kc)Jqh,<~g󎁺'TEqx;~XkcOVj?^C!߭ԅJ?OVKϡ`23^WEE n_*Iy|)m01~jUjRbs¯tFx-ZrBC KDG.WUVBe@_iIoѩ;(^sf+JKUzEE%ZmVhMVL>-"G8*$~åV;Vj#֘a1|+ Oo_diюh=b~t5";4LSKsote.ڪ P<~Mqq8V<.BkxYf=*),`N!:<!SxFL67 ԯTw)bhC#e (+Q{l#lGt2͜9Mi5;.ߠp8)4vk .w LP5PSmx%)? ՂCԡLJ)õp(~H [ kV~n.LVy Z:*kMroT›t][TTկf;B![P Kƈ r1_#d4~.[a\F HܢU StT@m2IWδ'u é̌9u7֊**GbVt|ͱ3nbs'DktMJ )4x~FEuo`CE%JB%˴tUYYN23(_L!'oƏTlk[:00Acpf )^? բԳ ӻoRIz[hAEv篔4R&+jQV֙'nc#u:Jhvj :FդRUݣZ;Mp W짃C 2*gnڢUQQEA[P>i7E?B1ڻc m}|OTnw{9TThOi&G짃Cz=%I5e֯Ess8SbV̕W.6L0*6*[th<uP;Vëj'w!tL׈1]~3~b5VE\1snЈ4 :)>+4cM]2<AR̻,3(H{|F#@cUӥWU1'ݭ{k6)ץJSŅ դYĸt*knјH zuP;맥Пոzzzeқ `50>%bV̌j|j[:2r̹AaCi2#xBж|ʨ-ߥm4a~s3g}*6_z; j_')8!IX>w~G᪋MV̌X4t+)}2MlzxK槔uKP|6>&I7W@}Tjs-6oƏh:VS͸ڦ{nww }JqRN*%PW pfC7t?Է2 ,Swޭ׸sji^?!FM<_W]/fC٨ $`50>ASxk j {@]2:Q)QӮ:W ^zjM 64QS)ev!Jtݭ\k_ zrv ] @ @{N9[4j=.}sP;] Cs2uqfCo̟VSp^[qUji=׏aH]>~t5E*~h'"#筆46 z: {@;iW2zeқo9$M?bfzhz7a~cA/獷ӳ֫Qsw遇_wb>)lPCQs2 69@_GC͆ʮ7&I7W@p 'N=}71QϧޥgW׌k7J}^NFM<֝m.M^|=yfIO@@8ʫL|ھWfGnczf;۝4<`]uH]ReRt)>a{Anux%-c(ͷ=e&-[4?L7R&[isУOTi\AtN)oU FϮZuFw޳J7ߺ\ )kjl\ti6=Dvw0l3|z@̪w4쏺lz]^ F6>رj>I|w~{:v~x_Ӹzm)v^?fM槔QdNYvSu%+hƵ3ޡ>谭\7' 435ߩ' tx3+4cM]2:QJf\mSYy z@#U:Z^ӮnQV/[#I1}\Ia9,~^{fMj\VVޢ)e2JkNi\An=xԅJ;B3Qذi6lڣ_CqBB,z߽ezlm/~_r5j] _bj)ʫ?tL[kJNf\m~:H> b[KqVJx3)-}""%III+#u8|8^{AiP('ZUÇZ,-W.=lx{+E$iLt4;:y?ҝ:l+i|}(\lyqtQ$ l#+M<Ϲw5w+4FqpMx (3u== džQ5_G)p EJH*ӥ~reGG*nhee&ORMXj[5/_ꋴwg4 OZnHГOWŗ( ENOE8@W:t&+1qV͵NvS<^J]xmV< @3cJ-r\&ri 6*^p @:+)n.cNoIWy ZXӥ̌׸t'F8SNGyJ]|?m# +YQӮ~ST_ TSkN!$ΝdEDs!p z} =݃pJ#)/.~/No l#F+p|B}5ߩw`@8p JO_߸Z+Vdp!p ~} =]pJ;o8u=Zwݦz|BT%$LeOHcǪc钉:9|j[r_\w.USvz5,Ir:>c!JK_zp=h\[gp/`^) *-V%&1Y̘R]6TU{=d H͉<&#@{na A);JRS؜m.ġGr .III1Nd+gtgSx )gI]lt<{B8bVԴ+թqR@NSTzHʼ1JiP܋M&>fE8p 0Sp!=p x} :pJ#)#uarK?|%lpBg._FQIa1E̞>\ TT`}FNjhmD8p |[\Em IDATd-^υ8)z3h?)~U=+Ujc&5~.[aJ\52TIIJh^N H\g :D/Kqq|숈p=.zE\d=ϚSDed>Bx4)谭\4$N.w73گZy[k`t"u}dv=6Hͺ>JWj^Oo9JAVߪY~//|5opN{|&DLSxI`n;`="e+H&~ɩ..:%d .LVy ZzII)qleV 4]&h]p pw6 .1cwg,g>]'*NϧH^Ĺ^CբJJN+?7AݹEUjpUN}81nD8USYm!O oR\DSDD>rJUlGh:j6xFL~Sϝ+`Vd!ZY;ǸZ'Up8tXM]5[1ё;׬"Vl=p Ə_TQv4L|BriSd[-^1Yy4eV 4rV.51~jUj`tvu5TУ^fZxET5ۛ8I 4HUja:T?@1s4 |)j̙˔biR|J-r{}t@A8Q#CuhJh$Ǚ Ӓ9Ҽ)7uT,2JTn ɚu>8ӧZ( rw. ޯQ1SstF@"xt"5'tm|V`m.ʵ_P4  2/}lSdvқGpw;P~ Z^:L\TM]5[#8>AG37_\e+,T5[@8`)(%[C)g RWv[R@', `}ckILYӒ9wN\$r~~:1-B߉uU\PG!\Աcұth>]^81hot_ Rf}zbS4{p9_~lɩ..: M)RZo$=i1stˤn@_1)aBG&1A5l_Ea\TbŠ*LУJ;uVN3QҔ@VZLzPl-0\DկicEik%Z29Nt# K,LH?`CJ8M6tETnUMYnUx[O^-S,%P]n?ůY#kwӳ 5&W2IyI?~v^A%!]L9۬JM47Ozjkۂ)_2I/m 1t:kCi/)xI*ûg+c1ahfH M\Fo}FUwq&{ tA~z!/C Own>@%M h}ZeeutqARv)_O lPP|e?c1a~~~=hcǪux{[E]6hj <[{mŪ K-ߑۃEgc[}Z<w).nb#w23^tХRWm3}%6Ħ4$N.w@Όn6ǬYj1~}Pؤ"PEE.YJO_]2nQQVX* @{|&DLS6?׬(~ݱKՔL_"B;I:l\TfVm)VTOQ\!q*+tt2)Y]Ct+oq $I.WnۦAgkţ&R;vQn%I'[).cMy߾[IWjjrpr7QD  .+*Sm,W/S5|CM]5ӘHRFUKG>QbG8p*kM>ݪEJHzgee+gF9NxU}#uw~3L+FG%ۛzJC$I#kA8.J˞\JO_ܞUkپAo9H/9' nX-&Q<n{|&DTj N6(*ܧVZ:5kVQ>k+GjJ7 {C_I s7$lI8P QSr7)wSΣI:m湝<ՠG2Хu`EI>(S5<:FF[+QC &p&CݪY5=4#:IzlҖiEI}guj}*jg vILz:^F!eҧ9N\ZyZ&M;NpU3Ɨ )2&:RUSkݬIZh(%Y&imgWRyQ][ieYSUҪF5g_PTOK,SJMMVDDxZYY\܇I]l(55Y+VdCV)klPN9).|^P (il #1fݙyZunɐd^qChho3PJ 0ѤxKvUiR̆y!C'=NA}_p~ro3gNSZs\z%***UQQE|pXJݿ3>Tz$,Ul?5XYfL=*),PmW>p a޿- 5pek^ڪ]}61~bwyowt``'Dm @5s6IyI?~v^A%5q!J8|>-}=oj!}?'j3!,vILz:/XF!e6@_SQQ+V+77ۣD_v"k :a8wd+g-G4'tuuh݆>mLtNG]V 6ås5)TU{Մ;u]|';7H]e֒7Y7Iv 7.>e XS k:sA}6'N.Y y2*٤@_VTOK,SJMM>gVfMQ5*jQZB%%]N<ʵ_A#5%ۗjZ9j(|VP>6E(YG(Ƶ_B\@Ic֣o4z{;3O.& 2jzIT) K>m~p*Zw =d^J ]8K|5ILZ$}?Pg?mHLe2;o֥7ԉimzŭAVkK)ydև[u⻼"RYY+26:Nxwo]5fS.p ׍S~wĢժڑs5)T[E|` y$4+yZ~ץlI= dcAvo*&e֫>բm/*tOxdȷ7=tRdҾS\T*-]Lq񓕞Hѣ=nKYk~ e^r(rK/Wl_[ғ라7"z],SLs{MwO[ieңAF!_jHU%e.U,ۧI 4HU[-کk+[KQ>G8woUVr8Xe@+sk_}yx^rPڀp zԂ[BaßjM;VI)RZߒ51G\&}J|UqATPiI0=\ͻstBx0)VF/ ӕ3wdY7RpZ~:u+jKu:ewS@ЭN{& t}*qlߪ`v8]YA97`F[Qt9H{mS0l]=j-r-roM6˰r ̨ZH !~Z_;鶴clx1é50w&+1qV(**QWe".3zd@)glSPQQ+V+77O ޤ}Lee23^W~n x9) jzEt2%ΝdED>KYk~||5;6XVv;uf64ſ?2LJ/ݔ4z%͟`Eּ-IB852Tw}oVIrhzJ6+ eOtӤ@C:?iCZ,e6(0qSYkaVY0w**( (o ݿ`Oѿ)gYGV;*e :f6I/5 t4K9**&` *UVVvtqнX9/2oRbo/N]3>Jk7)oq qfMfChc?n`7uW^Z"%$Lc =}P͏ Ӓ9Ҽ)7 Y,fEi*Dmtڐ~J)~3JUUZ OVz"EGEE%Zb5)h`_/ۡ#MAE ɃX1V`m.ʵ_PT&ORMX[[ȹ?j TSk@nIW;ʰ6>mHM&kNEt/UJKUVKǰَ(#u>p HJUlG(ttGjVxNf]Y+~5LGTs::@ڊ_#d4~.[a\F "mi1)l(%@Z,m2Amr7)n%Ϳ^mzRfkݔG}ɷ-7Q+rs*35n?1\OP*|PS].͚8Nd p&rmVͱ̘{TRXLpQ&eedܭZY翟ӥ~#ך}\СCt7KLWLS ZM PzA-|bVt|ͱkj.w LИ9#谭b**rji›ιUkUQQE)8`RޤEJLl\(ߩժgjTd@)+oTI3Rĩ#pi\M,U=SXYQ>-]LsgkiZ~ Q>p !qlߪ`C+1je~U6 @QSSgw҃)4į͏׻Kußj($Ic#u:JZ%w׌%KŸVX(=\vX䠏ī;L9[\Dͼbz:MV\צ}ˮW"t҈39W.P9V Idb4pQST{VW:ݭGԫlږ:}4* )AYf]n8 O7mP3N|+)^WSk G?ů3گZþxO{w9@);ڬ)eaQ}6 eaQO)Sf8>mas'3cfHMQ=~#pw&ͺFf~ \FݱKakT^6ߩw`|WfZQZVnlЊEyI)mw#vjՇ]21Z'OWqU兇d1B1<p U_1"\zd[_}!=)_*s떿[ 6h.HP˰նZ=f>.wͱ_Sرj{_}#.M0JUUG{k@<ԢiREAn=!`nK=x)v&3cJ-(` IDATrtɸO)tm@dnnTFaU fnj-|^p +ݱKK&LBMQ׬{TRXLQt:rcV, KlП6pU_1"\tޮOj\B {׹u_u~z`EuhCF=IQ^p ;V-{OLUjGU0O{k@yE;9f=0ϢPK7?آů;T^禐@8ؤb^Ґ8>ߩtVN͍ܨ?,3B*v;2Nk ?{wu}53$32$;@@ @] ]~kzVkZݺk?D [ $\*$$L=?<hdf|9L23y}o#z9]^Lȁ7$YJm>_ bJ]nx/7_*d<_Y{F~@@2xw\;V38I0S" {پ}_e}ЩCGuO~++{Y-_}CǴf:>~K' яahw o_)Յj8@/{M%@A9_kݽ_ѼsTRڵm^cY'-.?%Bnm$r Qk׬l۩E35s454MZf=@Y6ղojNW/XHm:Mp5SpY**'76J }Bmz#msTl.(Յ&@n),9U:g].qVʃJU4H>xHmkS^P`L]B)5#BU;B.qe" ]ܵ% [g̘!) rC7X~vǥ5F"/-Vŝ?c#-JJthjUӺ*ȫ!X0S" {پ}_rJҿ3IY<46%wA7/.-&) pv-_bS *x/0SR&CatU69N'rZnnuS|aQZ5&#j1hO't_^wEja3M8#:bb#sE-5ǩv`5+u׶:\)^G9WPN |J K+p:7jYF|?;ڀoҙتĺC:r Xrroƌ۷m۩U9UCC#!ȁ 5h;txC\ϐYhrrQNSBtGG>طGhjTX.|ĕ.kp%iL͜944MZf={n;{/Y^4ڮ U1DU5›*ȫa@kPN:)rJg~g(z!^j1Y D@i;7,b Qb+bS *`6$@lV͛?Gϕjc*+*%'nȴY:6 HWg,%g)XWb7mS|1(:ԣ&;zDAXjHJU}}=S޸bb'T~^N͜5]g**{v:tL9Ͻ3J۳]";rzkӣ|ԮO3@ )^wrJ'GW$_]D' =j_ڥ *`y KW5jXE*("|ztAUpY&%iL1iW);{l;cF?>mvjU_H9Сc2'k/!Qrב=USi#ͣw X^1}^։ ^ࢽL\t ee/UF̙4yJ6Ik׬'O|:KZAh|`dݧ S.Zh NtAXU |J_]1Y_ͪyhLjř9sV弤oSwT|U磮SD|qS1$<ԣ8I]!e}@_5iB^1}<1Lj>Ơ?Wdfzh:tr{QgevH1bM&/ SN 6J+B=#$ գۥ_4Tx@_)D9٘t]يrnjS|T۶k׫(0$#S5&uG?jd?٬Z5fH83itm|c֮Y(#_jRS>e|D)|fhL QNPN*%Lr 4)~")9VSu*ILX~E9EtȞ6]g:R։ ^ࢽ:]XJXPNQKIWij::R,ܑ>"<3(Q&2B]~qC,i1>| i2Ytd>/PN!F& *hJxwG BFk`Fbc X&Nԉ$ +ŒyxNu8+vG]r"OeeU ȁ <1|Uf))Ju;X@Jn͔ut87(5HEwЋ,%_px:ߙ4:SO| PNii*`!QI1>:@/5~cTp2)Iȁ `PNe#RUvWfK錻#X!YX'N`خQ) .x^Pښ8Q'|n]:FcӤ'&bb2xl)nǗ<׌D;OS īj(i(xV*\1KCo>Ĩft&kS,#4yX _bп/i(6.k%9RSsV|o9,oӨЖe=@xT_ۦ|2%gUgUըuEy$.?/z\J$''B'&iLk)2HfG(! Yn8$r4MtF+4caAzC4uEtp%Tťm&99Aٷ}_cƌTee|2G\jS%&pUwϵ薜z=kNuSemap@A^Wy8+NA޻FYdբ!WTJ"Šbvݺ^5<.W5jYFܧ3Tࢽ:RXN:i-v6o BgO ׷|)A0=5\?ALj"PC"g`:aYxI㣟+\l̘YRYߓfWd}#D'~=\LXv?<@Yd ٳO{>ٿتԆUңk۴jUr;fW{Ua c_EZ/dУwGjJ@W}ޥwRRrZ'l>9F 1թkLEE9tyfkZf6)Ŧ(G\ gxr2ZN3OP~nVηyxt8{e'ToMnU6H[Mp+׭笊KYNJ{mzUutAU1 4&*-YrƌyُY-ZyfkUKPF|VFǚd=iՏfР| |CGcO)+{ivVXxF99/)+԰ɺ0dη{gcwy/^TW#(}`5ΊSsP 1GE:Z83x@9QN7ZtCA&|ѣ>)ȁ <1=DWhKl6͟ŋ3mvjU_wd}#D?o!YȓKnԼy{m nm|c6/&%Dפ40*}\G#Po*K 6GS:,mOGS?yC9.YNaY-w$>Ro))9Vu>pt$$z"I3gNSe9]orwYUdO &V@jJFJJT\?hQrڸYwu[0۶k׫wݬ#v)r!ӦL-4SsXGUUJ͈P򔻵HS|RT#RUzWL竊%|pb#zv%9~uAgZlz{KXYDsf]#IZ-|z\.f𦊊sz4&*uW=@Z֬/Tw7ĩ_^ X%@ j<.Z6)~X~,B2B}PCq4[cr$Q *~*{lsݞZx4|zr^BP^v(nG%Y-W*yI |\X}UƏU}̗ X;@  #vcnw٧k 1*dN)qٷ֞R1SvEbmdX/&enmؽBPC[VQ֭PL#cߔ~Rc(}(,߮تԆ _cԌ.LRMh/pTywX)jxOd'٥F=tT\ZE^ШU9mܬߥmܸEk׼b&YGvRC,i8g"W:nHmhnayN~r ,:ޢ졪tZre" ]ܵ%>޿T#ReT:|\|SuL٭O4RUʧ7MأOjLU^K//V弤s֋! J+Xy*( 0PN )*K We'i2rz8HMN 3UXD7g^#ZM-qV>A9/l!`/;Tw9k'"I*,)&fSeA.,-kg_NMw }lݮnѿ=XYf뮟Y,>E PCt`SKX" 5` |I1YjFoU#+OR8[Kc9eJFcLٻ4RUʧ7jd0>nVηyxZ .ګ QN:xVzt)ίCmPyc x/WYJ*{xAF5MĩѪ[Fy5XݜymGֲojӔ|zeeURٛ_1йFOA՞8zsA77PLޖ|Xcت# AzktR½jGZ ״F(:BN9V{}^Ln=wWi G9ۥ,(ģ?zAz2kֵP` ~pIKhb]cu٫O0V.w1gR3"dLPAFGi>d˗hTj螺#zu{Z\ " (xVztw#-wa;ctaTXiLvW7ԨtX!hؿ$l]>rL`in&Op|]NcPN=|̺/k5wx弰E+^f${; ?U{|ؚ%=lw)NjcoPM@?s,@Uoò[{|cRW) &`}+V|7BazW:tw^7 IDAT;Uz]wYDŔOs|m^d\?3fVC} Af)QXnA?s3g~?DS';ϭ ,%OqCbloHEwn&\3ǩv`55%!mJ?"̜5]g**ʗclhtkjhD3~=oԪwx_|o{X {1=>z`0S" {پ}_rJ Qos]zɠƠ7dL镃|eZϋU\F>yxtt */+ ]9~Ԫ7up[xI͟+{߶m^^^)`JF|"Kq W׿ )^G9WPN |ҊP6IޞH#fD#p\.W}B^G:5ld. ]Gتt,$kDU:sNQU*HLaY=͜9ˏ9tr{Q;kU zdM4ߝ{][9/lQ-To+(LC=L^j1YW MPHmKw_AhlԤ *S0?%|τ )*K s9R^,R}-"p$''(k̘a_YYU9/)7wߟ/˗k}%ZNrQNSf)QXLAt{`}L|lMɰpֿٕs%|t):nHC e:(O]~fITs15Cv+wm 2yr**clhtkƦ9O)ϔTqkcJ@@9.YN "ֵHZ z(TvGnnCz%||Uqi/,VD^9XɉpPQ٦[o?Lgf|[MW]:QXJ8g VCToι9Ȩ18.RuϨ 'Bn~%7mݡk^WCKp1)@/zIsA+B=$uufI6 wB^&]W Bw=K)I"+ !VNk͠"-kg_N75vzS^V<box#J)x/WYJ*Ct6.ۃiR_+Q}-K_2)@)nn0hfP¾0/ * + ؛T3Ω #\sQz9eZ  @QNض6i[A? =r{}N6J7XTN)k5<7A'8uR1!@gg Ԍ3T!TJˆk :XnB\@Cղl8Ŕ+T?vSmQB!AF1+@S8تJW?2Ї(TiMWjjqwHo/>D9ZN6˗+*I'۔tOVQSU6;UHn~D.GiMn~NSk\n|Qoap1s n{M+jFܽO{6Y@1|Wd;D6w{MVGrerO[T:tt3u* tADtg41%H_bSgkjwk;̈́ ~S^ԝs_'! gjGkFݟG#is~S̜qNi#'J'QAGzi:SUJ@ЏzYioYI!2]rKuz?G9У2'ќb1C˛c{Ү7&,GQOmnғKm$WW@9#iM9Qi|]m #5:FJr~~?IOϊH(HjPeNԘ]~fkȉڰovKЏthwYUvAy't3ur [`mD(k"M9QmVAG [FUZA (.5Ģ9iid16Scyk籽Zo4#S QNt=VJi#'*=9M缾5G9Rcj }Y̡ZrAm֎c{QNti1}eXi#'j*(_d h r>)\,5fwg,>b6iu599s^ sd1qM9~hsjlv3Xҟ]Y2HuZZ$)=yL] =§sٚ3:87nNd0|vA${ &,Ѫ#]8SKpjJ7l1*k"RP g00QLʐ}L~8dD=7 `PN~bҩ5mD==8v8}H/3|F٦թ3bc`=9t~8d~t4$QN~bќ4guC'1ڰo6翫f7 OMMG_eq X|@~r #GNԂ sG-0[s>YgDZ 8^xRnt`m$}3"^z~r λ]1C<-PeXcS?+nNObn m -OHmCF鎏vh9)Ob"cGPNUAu%ؽA:[{*u]*mi`~r pb6&e&ڣd}OGizI=t:<#]xR[I}PLA̓P"ʠGTHA1A|GiJJS.%:UAE!F'kyJb#Ky+tϞWIiu͡έ{|2fܧR)`Y>8PeqKR}CZ:[{*u]*mi`p^y}6m=e}l~sVOo D:mDL&b9Ȧe.5Է 5o*k_A${׫>CD\1Q+ޠW^ߩ{@7g^yz5̔`lafŅ+l">B9+9%RjܪSKK;? N"}fa2ta;0Qt<_ĀVVi;u 4eȀ:#Z+`lRl|l63a1)> <"#TU jP{{VQ2 ~.vS:MwǍӲm,;@7=8Mޱ@q~}>%՟ a2?Y'0|yqΖr5 @/a`~!)8-1Įho]`GNmz@f+ٲ-~uuun弰E9jd@HDEcd2c&%$EEg\jr ĚmZ:S!>OI(LXUG|\1YGݜy_?nPqi@laf q(440|_}6ܩ 5n-s@5hRΛ ph-۵O\**{}cLǹ{1=>zA fIcr8B ÇQNqjPeE\Ǔ2tsL;Sghc~t4۝WY%*)ÏѦ$b2)ic ?@9/^TEE)"¢ jo!tKt~;VvS:~*k[5źimz@ޱ@ٷ̖n㨫sk DDXmWD~H#lRrJF̋ K탴u<-OHr IߌW%%:@cV>AfܧW׿^-Mq`LUzꏏ_-WrrZ<4RS 3!ͬQ,SB? Nߌ'.0 Zۆ^'Gn5鯛+ @r5V)-zdM4ҫۼ}=V>;Mcm۩U9UCC#!LF q(zF7} ͝5^,_bxlv6٬ZF͛7?9s&OI76imW&@~r3 P@ΖPB(!դS6m=M[;(ٲۯ]W֊w._0o\-^)ڬ-^3kUKOx G8X'@PN JNդ2ZZ >Pخgח|OoP-Z][V [z\.!b'++{(Z~:^TaD0Mf&B9%8r8BUYQw r5h [_giʤ]zܫ?nPqi!pe}33fH=GmN(wLFEE)i#D9%@}-/UM@ێ^PȔP5 9Zu (.M{BS2RYv9OoB"уhqfΜ֣۝9s&OI76i tmd E9%LƇ+|Uujo!ܵ% r]p醐 ]ܵ%e̸Oٷֽw,n$VhL;M6+۷Y-Z8S3gN~s}`0 5nUVԩP k۴wǕ4ڮ UJŜrNhma@?{}c\F|z@??1ںJE%.SVLXTSScf8pF?A9?!UuU*+:^qHcg:e!^`BDTUia>ը[CpMR&9 Uig0iC.Բd&a2?Y'0)nPTt"",:[۪mUzkj9d$O8ZfrUpO[e:ۧ9+5!˦ukݦEDX48fL&aCS`I Ijhh2ܭ^ PSTޯiPćU:ZY8HZ;OZly}+5Nl׎}g @mf&~rJE`3kp.Ըu̥B/mWh/LT2RZ9n@7ղojN9I]zLɥ!eNLSUA:٤h#,)LEvG*+T]@ %CJ͈P$B#]ͪ[F)!V:׭ǧZBisPG.6*g2)ic |r .%aАNJJ.PK jM^)d s iЀ][€W`!u9 U=94p?uN0pjHCfas(K&%DEN(xQlL+RCζ3kK*0sZXm+1ΡeF(: Z6QOԚ-ڱ,PK8d D9UVԫPaM~w iM?k_W 3mG/SrPU:~{.QU*H; ,MB9I]3\!ͽf~ K<&QCb u"6HRP1?A ~\L A?}>߱Cn8$r4ձ;ZS]qHSnsP9I1\8?gt碡 .kDjt 3KL&b9Ȧe.5Է ݐ1Ѣ4DQ s8!z~yqKY)Fǩv`5%!mJ?W[iل69 Bժ94Z/Hx%0l6r .MIhS"r5̥vB cX$'k{)ڝńPw(;Stb]2S m' ђ)f%k|F1Q7.Qnm,C @2Mf& \6)ޛGlUW5A@'V?ola0HS'[tpۣU?(3miEoаIؾ_-Q,<.ݕm= y=miaӆ]mb~d2**:LNaیD2(*:LÆ;:b|sWLXɠG)c"w?(vǎʼ"]}r !mtF+}wmyGmRH _r34@J'N&-I;mLSf֜tZgfJO圖K.0e$P @0;6evzi$;lIZŲ緳˳@WqSp~m@ DަD(1s Ι{tާxPzu)] <Ūꟾ?=`?O\_:OmhѱS9ȁn@.]1[ז䌩df5WjՉw՝o3[?cϴ1@3 <*.u&+J뇖e=KuՂ˴ju =xXv:d1-vm/O&~?9OX{^B2DA ]242iM tՒbv˚Ԕ;cM7֊̟%ڶuvzschv_~00^l^?dL@ЧBW]qu06uu^-';^\ժ{SGZ_c1^0s咊gS\{JOӨ#JNضCިX2njy5Ҟ9Pzzi.M7L+Vn{[zAg9S(l*- L )KhAZcxA8Axf{i^gre\:scj˪YTRuǽFTq=`q yUe2!+u'l/ih_w… i{<͛U{ Oh00i(`R=Ϋ *O5aBMm-\9!ya_'b@t\^ׅ.yGb IDAT6{O&0NkԚɫy^ j=CzNi~Bw~[Z|nP$}C6ݫ/L9,(-izr fz4w^xt~%#8ȑwiՒ. :zixuUS~LurF{>9ۛK, R*7/֍1Y͢_|YoXyny|{޾S۶Уyrc(-T # L)R@0_}0fQ«xGZ_ӽO- ='iT]֔:emSdݻ֣ٯnVw>>0ݻ]{XD  2 a`JQN3 K M57(ޟ av &E3 ȁn@.]1[c9ڷpu>K2Ma`ZQN3MDޯθB}gݺjnb…)yG^|L;٣|i0/L90T\W # 88F$ZP^uwe44zu«x'qm<{K}o:¦"B0S(Riy@YZc'pў+VMvjսݩ#2ǡGzݪ{P}J$8AmӎgkjJ{[}= 0FLCp,)p@ЧBW]quuƕL }o;VMmnR0xL i 8R^cayD  ǣ 8(O| 8͑{.Z\'G&Q0"0( cG | _m1  0{^د^yZ\?[tջ~5.BXcdxT\& d3Sz%y5=;/AXp;`UMuuk;ua#~/a #XRD }*{WG{n.eq0<¦Ba%| H;/NC۶m^%ɒ<'c"-b rS8)r{~nB, 4w^Xh8>Imln< f׽m+ieY딞I~Hn*j9֣D"I(iqV9tŊFfLc<Ԡot@1 Qͯ/#9^JM6;N?kQL,cy*+:D1.IgSLβ"Imض]'J)Y Mͯ(6 0~n/xUޫSTRNheӃ Y&-AavImζힳӘmѶ,IM2 KZPY@0J>tQ=ԠRgQI_WWӟw"d߫5E2 ɞdٶʶƱyxն*-˪T'=Cņt5D"I(iqV9/4[U3K' -,Ys=lۮ?^@- j~MDh #@ӃGwP,6b#6Yi2FpRDLSq_s) lTyi)dvm$],i'D 4& bW-)ַ6QE0?֜E/*?,v>G8C?Q8KM'd= I _Q(ln*۶km R޲U%U0fpx<> +Twtg{ZfiC-" R[q}a}|08G?b;>5{Zfi}q ocxTVcI:۶N'˲$J*b d=݃hS"$ )PWpi?$T7rڥiBM|Mw6 &)[<CA&Tovd=S$ɲJIunecϴrںh.Wf}'Ԓs@H_kIC.cE9r `y MELE҄-s&^NyeY˕.,cldÉZcXpun]rJ~\l~ 559W`rrbxP_|1;p!Rޜ$? O&B9-ivI Ep}JRMŃMY9-eSRXZc& r%97Crk_K@hV$"gzLd2yr$4RC`v=oJ3&)_N=A^r &^5Ima*t)dYV@Ro0pAXc~,Y9WiۗU+%7g!Oiɳ+%K'.PNFP$Z@Gp^I'{ ә1xY0WrA ^uuG d}'tš.Z-[yF?W%g>7SœXq\O鹤?\:ε0 #OPd d-Jϖ8];0c:_eYrK*qL\\D  ܣx?s(ڏ]T5W/97Ѓo61k)U\izN׫t));tFcNfͯ/#TK"[yD')I5/좘S6I! `a䩬<S Tb䐙SζIeKjcN uW݃@:wBW_5۲ŚONG 0"B¦ Ep]JϖĝF[nYrK*Kp"p<,Sm1@jh?#vR},#}Z떮?O/ 9MH8P(l^x" 8>i̴9m>$ieY.Tp ‰C>>@jh?#vR},0.W-)mWsx1N,0 .-U}X3 >M'tGՒ 2 W%wC=-d~:?;N6=}%Y fhjVƽ аF<$,d}SҥLHe~}Y؟Kɭ}-m5fyK2gKɆ'5唷X\2U8p"֘b1>0>kԚɫ1߷)wwt9FXїJ/Tq0)%źUxO!Bm x}~Z2aۛU_qm(3&fbH瀎ooRK\̖(3ebNY#/ivI Ep}lޛMO*)o,kzIEpx<֘ R]WzvW`R~{ie~26}22֫Am}2 tPƬ dKWVryY-3%٥ChR)2S /4[};ftIy<<8YQ$Z(IRJC6>-HeYIq T[kLa2njN{ޚ #zC_y AFyg\wqEd)%5K Xp?S#*zLYr &S0C&2c(-T # 8]og>唷XU9:+9ddJ} *sՒbv/?-e19%䖇r rAܧykZ kh{f D${Zf^gy M&K Tkvc?ќ(Ų$UpɆI57(ϻ J-riCL 8g+?NX*_[se0d)fE3t}QX'gMQ %?o?%}rLƝ.<54 X[>73i)IX"[ݾvRX7G3<.Imr[,˪Tze[%)oUw7Sx`ܶZ7VNۇCr׋tώ p0)r~RmϡIxCGt3NQwJg[3i8> PD.}dHP)à'imۍBΗSbY*I*HN644֘ jIpu1H3u48d?>RfI73ߦ?%mNs΅kMUxƒfGee=a隔.% iٶSN˲$J*"8VUuHؐƔH$ kk@_[&= cp:>tGK\dHzۅ)I m&Y/ܩϽܩ.ӭKNMTvWn$x8c< WRmDGyDNmI4d~WsR$Z(2dG]?II%) Z2KCrO_C1fy*.k~Mb 2ISލe}ރeY^giɆIu{00.ߑ18@%3gyF}/&BŴe}<[^Ց "CE^}~U w ߻{.8[0"0t$ڶ}(NrY,k:I'hSH06SO_ ؈v| 1m(De~*Iln$G9eض}Hr˲V)]R 8aTZPh֘ B{2 <*+ 1Nפt)e/QL)S̶흒vZU'VR^CTG{$<CA&TovQL<"|-' }3ok2 F"BͯPLA&"baidvue5HT.E }hSw `Ч%E2 aImQL/)0r˲)]R 8{tZ0d/T7ݼZ>vz@ Nפt)e'Q8kt8m K4GsUV`[|};;vUUo{~'p<CUUUUSŕJH,˪T/i%iɒɔ:h# /_8Dպ+xÇ_ѦBG9UwϖWu@7;`RFBaS>[$ٶHC9,ZtI"Ҁ 'jnQ?Ar 4buZzϣ>͛~x| >Er{ €S(rJ,k%"Ҁ Q"$ J`H~3?p#Yګ~_u)ڽamۺ#2E2Maz%ڶ@G9%XT'vҀӥW29B"Pխ7jYi}[ZPz IDATzEkÆ[TUu9oS7ݫ:QN #O%~>@&KRm=D(d ˲*%5HZFpd2>uu  Tfb)}#!m.55g4U{gt%Ç_ѦBGRN --T(l0\ۥl)DYfAܲJT*HNd.Om1cM1]x~XTgrHuI=Q` +&"I .4):߫0tMٶ(2 6ҲZ)"8VUuHؐƔH$  r>rnL.9%k`B?$|Hx +ug~<5S `ܼ>K2Maz%ٶ]O-2?JI[H~j~MDh @xhҐ&˛;#80s}C3Od>g}_ccfy*.k0d*)dW*",bYbI,Lxk  (S"VSs08G okmvh9eA -Pc19ۛ(-6G/ vnK4E`Y,c!I-ZtITDRiy@䫣Op5Е} $wH5]x~XTKk33&B{JTB^Spc?4G;(kTkN>̜,˪T+4d=݃hS"$ C7٣+6'\zplOpun]rJ~i?$ )kʻ\1{a4r14/Kp^ImE,˪T'VҀ%)uuW29B ܼ<oJ.=KպW^\l~ `PN|TyS%~%cgyK2gK!F9%X\2Ҁ 'jk)" S%13qNϤF8gH$G ,(T'z6B`QNE3j 4Tߎ7t@78`\Af0\ۧt)Q)9ȲuR?px<֘YG(pIk=)q,Sa龄Keuͫet+X3 D9ejE}0G S#M>Nq1 <*.;KgIRm D[((˲j%}4t=݃jk u[ZIi9||$=ʃ耳pݠH$m_A*)SfiP5MЗv_51*W Y'7QNqeUV,LO]qpN.13Sؘ:"l3:O>I-\=oԶ;{Ä(Lo*Sg]M a0 MA&آl)D(@dYrK*l8Tss 0&yR>2ɳZ?%՟tɞ?0|+tNo_&DӠ2 fh'+zAF9Mq }D {^Rm{SeJTDpxO]y=:u"$FK }Lpz۶{oG9gdYVIHNLtWݬ C4/T?ҳLpim$YZ-]zɄm7iӽ,x.]1[זgH=`"B¦ Ep}ٶH8)x_e-WRApaO,t/ PPAFgiMu5WNuttj{S @S j_r ` }7UUu)>0?KYf}zl0~%=ོҋ[_&(Y(l*-aNORmۇcE9IJUJT*HN'ާx?^r 0vv~m۶C۶`,P}_(Te8i,\tncZp:::yӽzp^7a隔.$ ѥ~jG+"8YO:H0(r RS-Νf0%O>p̔x.)aNORm{r &jeY.1t^ePxBm1  0.l2w1L&fNmGRۖYI*pPT >uu _TLdt"^n}Amw0 #OPd d]jmn$ L6)'Ue- T.jnQ?A(XlQpvk~`^{^R^T)5z,VR"R=Cj9֣D"I(8\V=C  MR)WKy}nYWRJQ`m*%m$ 8iz4&HP)|b]>wn8' SLA&(b 3`ض#ֲzYF*pH@㭽$rX(l^" 8>Iln$ L')v'eT/TDRiy@YZc'bxTVcIR^PNcضSN˲$J*"8VUuHؐƔH$ ,*-|2A:۶NGp۶$UJBp2߫9fNlcy*.k~Mb 2ISD̜GmG:˲$IZF*pR">u{POKd.€Tk!SQNܲuJT*HN/|448L(#|:f@2YQq_^0tMJRvu(lnX]J8yaXrE5_y}T|h d(yAUU(z%ev%d fNA]ntzI+INT3>,SYUjHIlpĭ#3?*ڞ_9JP0 D `:۶r 2veY˕.\D*pY">  0EIHyO%al2]~.Joof2_oFV xZ[; A"B=a)]JKDSFO-ZtITDiZ(H 06tavfJWOWG!>@FfKuĘ,1ܨ *_jp$A8YQ$Z(IRJQ 2艸R]G5=_Qq_lm#W]€KNÌ%)C.}*N1 ]pɅ_1o\?bSއB\r!aL3PYy@U!)wIZL1ـSlTgYVIHN ާ8٤K73&Sa龄K)G:|-\q 3wAzH2_:[G̋^@MOh LHP)pnZ۶•J eY˕.Tl8Tss @KZIi[RR9RY#7\~ZE"iߗÇ_8̿u.kc1XbWRg<似Nތ8$*.1NҥDlC9YͲZIuHN xkLkS8OZI#sIiIAZz)GЦM/3CQNA& }Y\rMݵ.5'__ #D*.|2A:۶يr eY *_]q%LLK i̔.G3<8Lik5\9%MԣyLTբEj{?oXeo>W^<`LS$ZP$ dJSzٌr reY%KZFpd2㭽$ `NϤ2;nߟgKNUUig> Lڽa޵G׿?@퓴ζF@.cY*K*'V[kLaS%Ɲ3. xO_~oEHx¶裏m;~O㳟+wiwiX_qx+8\#ŎۯCA`r{ €5)]JK%S,˪T+4d=݃hS"$ ` gQȟ\R!Xu n^+6~E[ޯ/L2fPRғr1Ô'CKtd_SΞc< WRmuD\D99ͲJIun% 8Y2RWg\]q%|3LK i̔]RʳÀq3|tǴbş~ڼ^=AB<K}rLŧ)n: Sr r @2%| `Z۶{r ɲJTl8T[kLa2N4:K~F .x{ڶu-(:RʟF寵k}IG9NF9 3>.)aNOR!@A4r˲)]R 8cʠZc&@ho?;--\tjk7( 6w?m[W<>@`gpyz7?O~\eW뎯* # Nפt)e'QiyDm K4GsUVap*d/6oު`g_ц_M>εvǍ_#朥)S)=Eo SxF/ܬQL*=b);peUJ4ddJ]qu3-? f"}0҉'5SbG}o؈!_?ŀ@8a)6 ,LERmۍD}X\E'N$ܣx0bS龿6_k/Xyh8=0N2x) 1NK% fF,,k%"R=Cj9֣D"I(p7{wm_RZ,sZRR6Hd!.麞p+ [{dpbݽ#a݁-%x4]GXؑC#v[?WWE_ųDZ_N{@Wb)' '=_ZYQy-?0OY}uamJ銝CSaYvyb rNIQ)19$5:,iR¥C;~ސy^ouَ!ҰH/?e?6;~[rDXҀ,0`LKi' PNa g8)Ԑ LdY*ZWOw\SIBqvb]EY ?4Jc>Wx-€:$mv]0QC9'8$ LyT(RV,)<ݰ>wXg'l{Y}j0rԥ:hFzԓ*o%Kleʺ=S(HӤd8k$5Kj ,JD{@.9ٱ2k܏FaqBniX_ѱcŒkul*ײCL עҲ5I/Ww^}epi`ӵ*§(졜qURC0Y"T_`N}o^.4PNBc^k[R_|4 ;K( /.ׯS%i^_>F@ yUUkL!uDd`98D`zLVT:Zזkg4Z)Bò홭3qKwP,XS`nTz99tQ-L7$u&f`8$iidTZ  /UI53pZnw]8x>{S~@9fߥԹ}9Lw+/j5޿LeY+|Ei)1f`9^JidcɔzG TsE6 TO \w.UpoSi}uW QN~+ D~ʔR^" `naI,Y<^Kˢ!%It5:2F(.{>V|2nG ^utd)8[mx\߯{v_ښw.~6lE\Т̴Qr Y/YR=idcɔzG CJYwAo>Lw+?: 焗ؼITz:+5r&5,+Wϫ i DU@0]&u_(yqʔTJH&K$ktd0<:o7KyIv7O:%i^_>Fp4+LסL)e?Qr  JjtitU?J% ϼ cVcz' LRZf•ug՗_f0M^HY!?a   QNqLQ@0Y*V_[K~r*]]No]QЭ~<Ҁ+\`rAI( 8%TC0X2ΘE}:=8W`lۧ [E0]2D,SqFIMJH&K$:S2" xߣ [0`!eJ)Xx( 8Ae *H=R`BW \GR1&)8I͒H&K:=`K˲ kuv6)8εʔTjH&SOw\SI ]T(𥵴@:R RIRȫ<^0`eJ)D998$QR id+Ly}I?%=}A0ReuP0`!e47 *3EeidTZ 'J1*rFEi-=I)Ѓ RXV"eE ER1vSLq$5L6LwX| \RoIw LF Uy.뢊YVatʔR^" `J٬LI4`D"FG]T(}՗JkzW: Uy&PUy-C0]2D|(U?JH& ;Ϊ w5YiI+ߌ)Z–mnQ*).8QI͒6LJ5ПP_0a`^i뢴,_I>Sd XV¥EʊERDBPN0mWRO0X2q>F|wI_UT03mR 146/C1FEi-3z_L PUUUPE0]Fu|D9@^_8D`zL1/kQm\5cK8a`^!EQy.ѽjIUii& 87RX0`!e>0   8H&K@0?bմT޽HtkL[oտ4`N]\yӋO#=`Upi@+| Jjt](,dS`8%TC0X2Θg 磌<뎥揋y~B;Y. ;?aut2Lf>Wx-€ڔ)& 8N&I%%Iu)L@) χ7tyߠ Y W3kZRlhV % nHR~ߡ8NP6ҀzOi?T?D?9/~>,/>|VpodöV2&dQyb=d;gU [0 vJjv]7FVS`DY@0Y*։! @.=w395N*eQ}= N/,R}6gy)+V4 * Ufuۉ΍r L8JjTC0zJJ@,]wD4s?їwg!dLT* aOKXs%PUUUPE0]2Dq&IJH&Gu;d2E;ٱrVi/ShI߶TYT % nHRDSSH0u6IJj! ̶}ZqREʊeY<\U [+"S HRL ." nLfqY@*0Eʊ ;BQ¥XL*uݗ.,IR Dq%;ĩ$`^*yPr(`3~Ik$Tf$`/jUUdkiY4a)0ݐF))uc6)SRi!,ke]DbBEʊ."L"i,`d6;_RzRo(RVPȯQBka좜`q6+SR)!3>F5H;ё1B@V+LסL)e?Q`̢QI;I& RWز,^`^KUA.SLA.ة D)0\׍Ij__RTҀ@@pA"e dYn;Q죜sdzq+SR!Ȳ T^a4ΘIٶO<^0`6eJ)c/x4JjTB*0kvyXNtǕLo{T^a`HR~WH0?\m4`2ie]DbY/ YVR){$E)ar #uc/YRT"K:=X¥2L*iD?\}u>)D`**PeuP,UOd/񮱬_o|<@ kE^]ZQyM1丮b Nq&IJH& wXd0f.ԟҟ]<=p\}gg ShI߶̑ y*A.n3QYr]IRTR id_+.Y:>ƕ5?}s@ǧ}=hD5ں0cU [+"S Z$E)sg&I %Sa|p}?z?:Mx6&L)Pȯ*JX߃\*uݗE9r8)ԐLH$a χU]9pf?;HX1)`yU^aLסL)Q9uHکLHW_R ~f˹C_oP|kz<5^eѐj)tCʼOb &@r'*YҀR& 苟KdR)cr |eY . ERDr 0q+SR' l,RggLSI E9erSPȯHY<^0`VeJ)rӻr 5lVRB*0kvyXDR]cJ&S0OE^Eʊx 8 r =^–e2`.YV]\SRb &@p]7&qfI%5 L. (Za '`Eʊ. Ȳ ;̴vA9 WRC*0eVh_=q%N% DVUh?lۧ [E0]2Dr Qq%5I*!vyXNtǕLܸzݸiWxGqCAbq3Qy!IM6B"6>*4`2ie]DbY/Q/ tŧ]SDwl /ҭ۶!,P.b rIQ) 4)8I͒H&K:=ȶV裕' b3Gzym[t[ҝy. 0`VIK;s2%R,@A,V_,}.ݸiWUuBAe {uݨxU<꠼uۖS^W_Jx9kvEXS`!I;]׍RLr ,`6IZ#4``ȯ,K~yWt4u^ BEʊ.@K 0]>8~IMH&Eʊ W<>J(dwH??Ŕ`'6\[oݢhy-jk;>IY uQE,0`VeVDt:M 78YRҀz# ݰB[UUeX5;<SZɱﵗ}D/zׯ:籶?E +RV," MR뺇0&uî뮑yeF3Fx-.vEX^޼q\iX, IDATuzo~7)TUֽڪKZe, ]~wŧt}oY2V1Enqct99S{T" nHҟb `*(ufIQI{H& ZYQy-SuezJW| /w.TWom/&8 O54ӡ<O7n^5j}bպfy)54S0X˴wםvOx_x}XVR^vJ(SZ8_RidTZ'488B X[6lc_}kӄ ނ>cLv-} аnRks3/G^|J5sۻgߤ*RVpi@U@0AeVBQN̈8)ԐL6::uuҮ/K)o5C>K S&G9}F9,Y{G:(ضO6{ :$mf}`&suUfT>GZ ˛>1W\^ߥo~S$2o~f=O_0$ah(1F0N6)Tu<~I .޹ϛkvE= )0ܐϻ)&qfIH=RcUWj?^Y~ߵ{'t*[>VlD:Щ(a(P2ZS_J~ȄoQ|r3*TH`=\׍ (q5ʔTH&K;€Ql{oVlȜ|_iN ܕku,E͠#ҷ%/ :o&ZnqCj{_pqFZ{Yv~}vݺmˬN)+eZ%5Qr `8s2%Ҁz8$ ̻-X۷^=5C>xuTW ˧&^#Owntv߽_snݳ z #T` /3}'"+l|0]2D Sj|Ob#V2" ̹+.SWnQUe؈\9>,i5hɼ9GQkWP{'FyL"ÏާuoTK%[^ͩ&nۢwl?౸UsBk [A Ijv](r `N8$iidTZ Īw//VW|R#??ڽw1ֶUx ~Ɨ>qRqN4 WkǎV+?:ڏKND~SHWPTC?xDyyu,p|ObeĈ0(8YSO0X2Q3|_iN ܕku,E/rllJ5j{;&>O_wG{ӝtrT߷u78w_UȲ x t\=LRHauHeFFFx--T",^[ՏoD1EmCDghssZ.Q<8'Qyrt67wRLq6l)S8WdM8g7&]0hk[>7麡ns(vEXA)0]?q]w=\cr `8(Ҁ2~N):KoVU9^9v\;~1N* \ħMT2&r>kZRl)0Dpboy-%}d’oU)S֡{D}oۡ[ʹZ+醔f |wD9@0Y*V_ ruھZ]Kޡꎻ]/R/Uo{^ jl5K^#WTG'σ0_}*#Sp݌nG;wm[t<5Bs . (\`R rAI`>QNqK! l,RggLSI+Kksf}t}AkӜtC]Nz-YP^9C8rm>{W5AcS;w=?/Sy-A ӵ)SJ9LPNqFIMJH&K$:S2" 궭 g v=賜|Dk+ek8/Sk?_f= 6^'3*`ʫ+=t2f:9E~\Wѧ2ֽ5Ox|&+fQy@˃R(&08Ae *H=R7t-ȟrp ^bk]_+{rkHj*XӦk*POcsz?/RlhаN?zߤF9%‹ <ͩ&jm}NwܭF*Ty``fucD0 lj*꧁4`T*C! H/R:hn5Z YUSeOY'g:!}IV {_> ܌oMkݻy,?TVׯҡ<߶׮]:("e dY<aVI]m' (r8JjTC0zJJG9su\>zի/3 Ȫ+זWxUuӋ+>=d;A#Duŧ&ݹkwVnk&'uMYwl׍6ꞽt˃YYM"x-0]2D0@NqIRҀQ+LE9s%Z[S5Zjq֮suZၗ0 p6Yu-UA~uݾc9bqR8lMiVKRV&dk:@˃n3QrE!rMZH&mV\TbY/̎oj1E^K-/+1BdOwꆻO{]K5O:v:=(yWS`UY[ ںqƬNks ~NGq)U [+"S Z$E)r S9q5ʬi l,R_Gcar BcY̞`Oy}kӋO#=3A[p֩~SAެ9tT|RmmGu;7n^5}$+` /R0hvk}ysB!.(e`Z%5Qr@sg&I5%It5:2F )|. ;8eFѿD>kWMu/:ڏk}N(Ïާu<'uMYj| yU^a`:) @. %5+!,68R(`.PNk>\Mk+[lD:!u/\p)ڎΝܔ~ .&sŧ9F٧;wZ–mx0tCל \׍FAɂ!VE)+& MxS7}BZQyԑ K۫iO)0 /q1EM~>ݺm˔Wv߽3k?I'nۢU9u,PbPLA.hb 09Y/YR=idcɔzy=09s)0]M?f=t'r;_PB߶cJ m!9߹kٗ5nʉs )+k@Z%5{(r 9Y ~`D"1%)S0(T6]Sʘ|$u$Cc {פRbn}NmmGZMMp5]HAm[tޗ_vb?Duŧ&<~Mzƞ@Wb^0]2DWSyqFIwL7ПP_)Rg #QN\m:OgTvs?od= gLVLh?{Mjane $ow>9:7;S_.r>M1uzk)RV``fucDgS 8QI%5LJ;a0) S`+זWxUkMkݻytoLyB'6\wp:a~ _z$:X,;w}cR|+\eJjt]( 8zeJ*5%S)q*I9r ֶUx7^@!HyqjGY&~ێi3Wi7w~Մ<׬OlDz9%{鞽6(lۧ [ŃkSr( 8N&I%:W2"B9sr SħMT꣕'g|]N_'X1&Z3ӕ9_T?nU֑tK4w>u7<W ZyRƫ W޺_ߛu6X\78umv˔'fR֍6 .B1UR뺍S $%}RRTU.^Y@#sַ5$diLVUrm9ECm={MrMuX\{'wltBK. yui]D,*L!q]wuF%Tf,`$ϣaUUZڲB(x#V\!PM̙U,sz{ǧ:&]c?T"}Y{qx̯X{5dnOoV'%&sJQ+YۑΑǞ 6j[!09= ij12p ch3wCB _﷊x wt0Ɯ;)a/i7Kj#Wɲxi,6s֨;"/bZ^=C='|^(RV^R̹̅J"dte\Ұ9g 6ݵBʴ/pI 20D1;%9J͇\ɲ *5\ׄVnFҚ3o+/SE[{br~osqVx^XldN+=Ŷ}D":2p4zסyuK/U)7/., cNcLr`9c(ETX\*T\RDAE$/RTR80Aúq~NQ@޳mvnWꣳLkMMM둁2?8z&Pf_7oGVjy-*F$=oh9G9Ȏp d9ԨTnzzMVTی.}cU>CӇƍ)$ku/ujKfٶO4FV}Ssv'Oe\~^˸n-s.VV_*:c۔̀1&>97V w[ Q `qsАʇ /g}oX HW5A@^ T؉~;ѯƦ'>YKD>3ooObёx/cgŲ *Ӫ50`@P~F03ScL$GR,@R=^痷CAEʿ& H?߰>g>3|L@kimGgQhQB?'Ix0X?]G"3wzߏ 7oRoO[yyV>p$W(g9#i8;%uKZBUFEK++466GOR`ҿt7~S }=` T8zn<>qІ#xDPlC $I~[ꑿL^/D69<)18oK/^u.}z]m,K~N) ؉7f ) ese~Nh){W+G,]]^ |p@R7{ )6q%*pJҧtWL92pT}Eg֑$V0s+u~J bcsS=)ccL@Jͧ\H++X\EAmFw`JoO6=mFNѮ@u-OC{YRUEׄJz0Ɯ )1cL7/U,gOKs`H~ᡬK=ڐX 5T5z !~<0č1;%=!)LEfR󫼼bp`^-ivvќ/Z(!ƖiD"y9ҫu~UTzavaIƘ6cLr0011%=[,@˫mծt{=z{r#GvOўqL56p oŵzx_KdYܬp11Q!C`y[:Ik Q aF8&PP7{_Nc'|JKkssEGr &<KUBEgJ:` L~.Q? P]^Ukbw;<Ƀ trTJON- gw^M;#}G <(*LkAvp 1&j)Qj-JU Ui_,s>.<\ki*<y)1}הpxhݾ#kƶ}z[:e۾ioY]:Ӯ˹Fyy*Ƅۅ%=aiS 8SR%Tn666y`ԁ?CX^ڵ;c Xg\xJi3<_޺%9)lZJ׮;W\ X~}irs9`^N9e$O> f貥aZZ3DmR.󩸸nsRSp!qlIm^px!d6Ƞ}sj*++YpW? ^)麥|r[zߨS:Sn mбisq(dOu 5 k'\SǒLvy 7#nT_S C8s'0j͒ ]\|_S紻q>| kW:G1gI{7 Ku pS33]'O}ok)UJ**,ί IDATS!%1QcsI*-]u~yK=$D3p}/<|E/?ΚB|mBY2`$=aIGW x]s,o}QpN{K/jsM0DT_UJ0ncvL1g1$TR_USl\?o,6;џv}oǬ!f>miجj+pz8r5sSX@DZ%uKjpdrBW.1%)H;:UVV2vX}?V"HL%۩.*?X~n~ҜUIҾv6].4*T^|УT0%N)X9NJjn'ukz~W{4C>~^@?]MjVϗs5۾鍿Kto=z~x mP<>Hd8oWQ长LU Kj3Ɯ,,SX)i7ץOi8Ƞzy6=}/w_󛖴xBXVE?On⻆b5忞?m4lV(A`j!E y |tsKtrTNj`nXVRnd) q6Jp[I]P"og}MM{>k(\gW'BQ*P,)y~\|׳fOWv%s_G_߼op`^M/inj.Qoo c 6؉xB{;(RiG mC Iyy]DU Ko9C)X<H9S ~jccx!7nQ W9<W}||"uW'h=M@ᤲR;ֿVM)opi_+3|Y$2߭- >g#~ZZYK޾c^B83-_U& )J9L)X|9cKj*ՀۥF\W2ybdoש}ssYS(\<'soK?/EPMͯ.شC:^ƘC˶}:}TXoZ]Tv96Lx,dp#FnFxNr'ԇ TnLNҧtNEKoF&:<'>2pT{;؃z;B5O)h߃u֖SnM*TEW^F  Jj3D)p8%TC5fƓ:>3SHiB Zb~xKu:ԙuO0WoP >:N19ٖDMZ=HގY N'tLmY-pxHt[JEw2k^XNcLRLR1&j(yI1*-zmF!C`$v4 8:`}3UT9c<.=Y8: ̑6mߺS=^e>)p$` S8_R%TnzC>$\){dzvyrEGx?5j}tEGmtY6۷R8<4/um4lVMM{lȰQ@NrŽXZ^m3`TɱJfqnIݒ./QXW.1%) \(Aȴ%=}z?wOI0EJuMI޾ۉziWx3mwIӺ{)xb`e_UJ/@ڌ1qJf>`ƌ1qcNIRsWJzMK(LMZ]:uD H:'O/{;rv|S+Ȱ^r vYKO0 , cN)`68;%TC5fccx!7nQ !a`m^О{:tM0X ȹv u= k3r^l q&Je&i[e>M))mJc}3vmImP5_ҰY T߷66Ȱ"99Aȹ]:v?cͦNilڡ}ήg<K.+n7*R\`ȉQ?%4HEfdlUi)RGcw@,67]HᡌAiK)شC]: HRKkuݽbYWim` uS@.N9ecHPe_Upੌ_j0Yzksdୌk)}JƦwG^S)U)4p?kcNcLr\"11fj RcrծcQHggD5酜짥Y=Cf5i:Ԝ%[hg_2㖮4xK=]UնxwIzsr@8)caIIhm_KdYLĢ#z/Yu;cKf}thm mqאX|3Ʌxn':v_ownb tЗE go6H 2Z1vj11q0o1QcFIR-cW-]u~yKMGd'ٕq}6N%_SVKk /էgx\3e$ёY~W>__U**nc3D)/S3Ɯ1$,in'Ȱz{2 <':HqhfDxY\RU EgJzsrF8<4ƘnIITnkm_2Y/̴ۉ$ۗ1a>xeZۉD3ni}cZ$2mb/U|ZR^/z=<|*cLSTn*:ʙ4R=2I)x7sƦ|ŐǗ54l:Ţ#~KHEoݥ5~K;z0ҫu~UTzvaIƘ6cLrp pc9cFIKQehyUWq43vrGoO_N#{ZwOk;):{J0XtNl#拷ԣZ'*f$9ƘƘ(n@81mcL@!zTB+my-IvrGqA56rP֎%]Og8𙡼U]Y"^F%01g(p)1%4@5fvyVyD2Y/v-2n'wCSt>yeZzfB jimY 4lN{L:< U(U57 )0y 9p-cLSԜd,@R^S)@{_͸6n'_ٙ{m”82p4khf_G{Q<3 ׯDkWr3’04)p+)1g1%d< vUK("n'wĢ#:%]5)-4#IN洣b8-hJ-eYp11(p;) oc+5Հy^S6~\t;#oe|uhJSflۧc'Ԗͳ:Ʀўvm`4_YbpQ>Ygyr|' ck% R}xXrx<޾ІK}oG֐mFuϨKKku]S856S 8䋺uiGڵx8 =` qK Q Y29O.Bڬ=-9 tLOΞx G}oǴ ֫{5U**, T[JRp X٨THjn޼>N1N3؉7sc&Nhim־3tLMG8< |Z̧" Ii9C)BD8,x&i Հ%7ɅǓ @ uě +Uzʑ?_4n'w|t}m&P#299xJGN; 3<K˫myn^ݨƘnJ2)`Qpǖ-j.}z]W.)M1N䣩FH89x꾯}:AM; mr_6#;џq}o 9oiجjwbDQ'Oͨ\BJUQE>Q*`#q)R Q ٭.}zMWޠXPg iJB :t k7t;y[[6]EG\K^dY?VjORŢsQJs\h y yKiEâk UKks`ʑھiw: ;&DggWƵ@^X[u~-]#Iz` XlQ?mPY ]ǓyoMr񄞰}@?[Rq>p;fl6k_G{'?XtdA]ң|Yv1)X-cL|u./Ѫ5_UF1~y[g_2R@7z=ZR+mY/߮OHohX~gcp~ t&XHB<"Sx͸asƠI&te\ T9ciEڕSv##p?>H]+iK1.ޖY}'?QoV_JgɒLќѬv,3 ь{Z3vjq*L<"n7T(e1&N9G8 cL$GR,@Kx_RAiRz~@ݟ˦^?/cz߸Vv3:PʾWsCOqf ̦IoObё:٥Hd5̲ 5z; )`9L)Of7ƴI"p3UU^^B1.ޖY}r{~V?QvM;0J0X?899Xt$kt;i=?2pTXI=}.zZu~ټ^s IDAT%cc`f̒1&j(yI1*-zm&*O:~s|r[j+OE0of:'rn8>gϴL8+ЏnQc7}ӞwOxzr\P?E8%ڠƦ3]mھuהX]Uڕ*5)mTƘ1 x0Sr_R@Հ|ZdY%@~>!y{m-uḓXtDfYڬ@>9аyN:]Mu2-nbYZ̧u~ytH c)@nLL@9NRՀOҧt 7-xBkfYR6⣳d q3Շ OVHΏW~>sz{t+oGEw2^XR1-~M`cc6JzQԀ+y,-UBR~Iq@~s'ܖFXh:7B 2''Oe\)ڬ%oGVj2]LƘSS8?K,~.^H('ҷ<zKzkBvDG,:'?;6B :v?zwੌAHdX{<]W̍=9s)sk*7K/U@޻>!yo{k\z~` ,{_͸VVKkO::sz_ g Oe_Uu~)SybcvJr$Eʲ *P zZ?z`aEGӗq}OKjSn764lVcӎӡ{ܰz{ }~0Xz 9r’cNcLr<$-FuBB7oܢ`Ns:&Ƕ}Ӳm_#Gվc|tAx<[_ - F= {> .CyK=WpbcS GdTnzzM.ɲx FKkN{8 i).8N@aI!7K&'tkrybҰYw; }c&㉜{3G"amzf۔x[[6g\mLᖃ]%%u-U**n`ݠ6cLR<\S\qJTjxR5v}bY TЁK;ngB :v?z8uSˡЁFE@'|b-]SE @8i_7K$n ')fhϸ}뮜daB.wĢ#Sias֑B3 ̇"-]c|RÔ]8RVu]r;M;usr&z+34,PKd |#i1&N)܇p 9NRՀ%¨^A1X`z;Nrݸ[˓U,:2vfPXtD|**Wɲ ۅ%4D){NN1Xlۧ=}ۇ\N{<'Z4lVסά]Pf"/>`ԣ+ly,n~]LPJ~ ?c6$Pj6JE]Yն;===:ұm^㉬ 6d |SھEE"|\w0)U]YA0n7*ecL` @s @rVJՀ%ryLW.)MA#w)`}kuB v੬ո:v}Y,:'?;56PKKsƎ,Ģ#욲>sɲ *UE`@R1&N) <8FI%xR>WoP DHq;w|k帝uvvoml1+'O)/%ztYV7<.T(OSqv*Rpq](.7U`Ʀ=2=7Ʀ:ԙq}] rv~]:ش#Z<Цon{n-VȶLnsTlyK=Z̧"nt]LP۔ NX &GMYBEf7tBQ?TҰ9㈜;NKڦ_dSGgɸ~dv,XztO>_177nTR1f?X,0$uKjpdrBW.ҧ(.-02XtD}_3Wv29qsݭaBUTz*F> qJTTnvk<>N1p#ґ'fuSM3f&:ڜq=֦g+//LEnV*rR,<`a2Ɯ1ƬR-W*X]YUC\'v)5ϪoV!uӾWrvnُ/^q3oG*&1f#p g9,) jͼ^tO[ܢ&P)h]ziWbёY/Ọ{vdœk{ZUΛeYZQmve^70V,`XD H:,)D5f.}zMW.Q iOK;Y[9#I}'c($xN+ )m_UTzίJ/7*.,fSŭ`bb*.q-juk>N1OΞ!uvv)ڬ}黤Ģ#m92b>~jӾ0M6M;޳=-z5RXa3 &i'{ES8%IZB5f7tkOR &PP)_WM`>}C)wL9ٕv{a>d:ciyQIƘ_F89_RՀ%ryLW.)MAHi4lo$Cھu׌$_g[fnmi؜9z{trݎ'KiiNMre+U)7/$ #)8 xR/$HܤLҰYY Y[3i.tr^Ֆx/EG^"e}eKdYpRsN9SJ Հ⅄n޸E1musn#w̦I0Xϸ}.C9;`^N9ed U\3oGKT\\ Io9L)05:IhJeY,>`N{|;_3SȰ ͸u(/#ambNF)XZQmveuS0tN8-j͒ ]\Ea:E"a<ȹaEc#3EOΞθTLBUTzUQeRR3E8qJTTnvk<>N1 mt T]?2pTGR$26k_G{ڵx mĢ#SZ_U"ō Hj3Ɯ-) q$헴jH\IXpui} զpxhwbSɖjlڑ5/R\R|z=ܰpQB))8RVryL>d6,5j}tھŜwKPhϸmsz 5jBOɶ|G97<>U|KYH6)rp rqÒBTnLN zL]So5S؉L!mߺkQ^U**nTݠRRD8sqJTj[x!~e۾{Dmv ѾuW|*XܠpƘ3s`ccJ"p"ծcryeB jim``$ Ƣ#:ٕq9q.4USr^6`.N34@5f>_*ev pٶO]:uDukK,]>2Dڵ@u2dfU|Z[&H c)`^cƘ"p3UVTyy <ӱoi::gu$qxB;qi=ξv;џ56^ K5ƴcp 11f畚k =H9"5%BB1ْn0Rqq",s[wږѹFq}I# Y؉(ov۳m3}ީq@*+k/JbU +K~"|Re)!Tr)5p-ΝGdCۚq7E_'(&R:tHEGR;tw81@ڐuĴ)"ǩE$bff%IR<ϕ3A ztho?^Wˎן-r~^{gֲȴdA̗%G.~eG4<|VsK3 9C=O'"Dyhtƭr Vy I}lbbR7oۄXo>8j!'O[3u\N&sE_m6DT9D~^/…f|VgXRцb<(CUG9y^AII@зW`IۿWdc%W@Ivz~yT̕9ŏ-"\*㬆=ٴ=(iI}fv(S8P¨ظ;0oBbۧsK3^;=zR>8\V)Q ]{ )Xp8ă˩PJ9C)$\I=~A¨41ak算thq~^/G|3̵" οJ~dSο3J.;ÿ(JJ "FU(2AD9y^B_" Ĥ_7PTs"ǔJxh>Hڗ\ ?}u^q݈~uzpqZ:}Y{vy /24'OixUWShCXц0#|P.H1,Q (,x-錤f@7n0ytho}?;ԣ/|02}!߫}fΫ~^̗$0[؝dS;wd׿.2/V"IH66ETrxhtJ)AG9eI}6lll\5>>A.~nG.;U}~^m.͉R3}fG4狎q݈vzIGxzJUTicSDpA7B) Q\PN@PQKkT-[bۨ7,afr 3듔4DHZmO(X'2X޿cG4':|2Xq*)aV1C0AZQ199I Xs<4()E{~nݺC4'g}M[| Jv=(*2cf_$3̺%TaN;HU!GZZ"XGr>;wsM&;S2+-kCޠM)IY7USI]0p8m w㺑Ō0d gz8_)=2RƦaJQVJ9CX9(%%$ Y$Rbur~ě_DHGf-HדMgTS#ְL|x-ڱ=vziaUPjCڳЪSR㮶5PLA98!)A1(SN_.YY)цT=fG9#^VLw۫y}7NEP茪*e 17cufӜ?,J2+-\ͮB!.B)QG9'$H@2]v[!iџ&|߻}2? X#N]ۗjՒ(U$'_XNJ(hSe|1r *4dycL7oibuASSBm^CòWo;wVѾ{%ICg>_}\72c3_T.;]w՜?`R;ti %8}dsE:y}ع,w(%=mf( C9X3dfݒ0wjij]\s'_+WsO%\7:wROT*RtJB*]$#IG~[v+\mr `YN+fmf_pS%`fg$uI:Fp8m w8H`m믕\%e .\Aɮ]c%R;BJ M%DU]]Ń #`M$DFIjtDd(Xca({ȬZPeG|WgY  -_F{R:=F̡, PJct(K̲f$ORDTSXcu NۿW?zw%Rr}$,לk 佩ֶk)3(.Y*, RUQ˖ZZ Pvrّō%:wyT2/nOu)/O*^5'⁹'ڐZZwUş-QIͬ.<(HJH:Ap866E8|C9;M/oC=|tN#S$Rm1k8< IlfYV`%3KHzS9@ UWWeKTO% 9 2/gl۹% }lAe算ޒ|jǼs8?ixohCJeFTgDF F%if]fv8G9XEf6()!i4dH;b5qQK- Lv9lAӃڷo.r$%1gXG;V{ǩ,֠pյx'$%J"7&YV1%ќo3וCJ)6'zNf-H\vdFEzJ&Q@d V{GLц0/.-z'`uQN̾0nIHʑq*)5p-bVgx7 Ul΃+̥ݗ4sN2%ec+%\Ҷ66E8<W̬̲ `=3KH:&iDTpH-[w 9`߫|~hd1b+<ȘJ8G=~S\7ds͍ݽ =W˖Z`tfqB9(3%i4dn}Z۞P0Iss|6 -d2WfNHj% *Ŏ65rJ.;ᡳ'GSXc;bDyhtCS? )@YH$IA85j yh$?0xi1"}wyݕ%)w[13+Ug5j)XKKzO@pQNʀ]2nIŨX֨kX^5ڷ}ufJGE_;]P)63^3S$z_}y[s)̥ϝ?ж\vDlǸnDο3cϣw݈Z]p$QB!G:5<QIY)(/3ͬOR $ sFCD„y7O)  ?}ur|VP)6֧9FJ~g%~~IFAP__m 52A3P(e.Y7UX-QF 9+rwwe?_8MO}sQp[V3?οY *"%R。J-QmZJ:hf]fv8F9X#lPRB @!wĴ)"YK^g򿪵꒿M=u_qQ ƺWlIJu}{Hs+,+Zt_a*K8N6]mmkP8AE03D 1%$" ĤxuTnYc&Z6^OĆEWdN?ѝ;s3)d.~n}OD;ѹ̺"ْD\}C|?gu-s]Erّ@ޓXc a\`auPRi& ݻռƾ_cn}Nw~>UyC_ZWE|rȌ{vR:}yN؂JsXH$ڡ_,z=mjD).k]2 KJ-[z*Q %;j*cojl)D%9F;ي.ӗgA~~׹ 9ji-|M%(k`0>I IC DburΝO~ojڎh7 xRC|?~+*;D")UeGC=:yԪ8Q{GLpAwBRX3uI" ٽ ]v[nYc&Z6IOu_~huOyn 0Gd.~숞sx[r#~CaC G ~^ڵ%EWWul׿GςMRE':׿ǢP]#={AXqER}mwٟ9<QI|fT%뗙f'K wk# `)?܈>kx߷T%\cSϕ= ׆զK1"頙uSL )f03,ik[66E8 ,DEo^]]ndI{F  ?}U/WesoB!GZDxXdS7vM} 7w23$H@"hCX1E„S.;RdSο3J&eKv}5ndJ-QsG8Nbujm{Bn} ) >3@1S̲f$Oځ@r mlh[GLZVۊ= *s-wZ9yi!TY[C$Rm 52Af%`N쒙%$@ Ul5P!`2+3䩢M&;uޝS#Q.;2c{*ܲ\Þ^Kk*FT^U|BJ:hf]fv8bfN,#Xcd(^=|v׍wT(zJs">@s9T])8N6]mmkP8̪Ocfv(0ofYIiAkS}} a%d2_ضsK:؂]/%ԎeZP9yPO@>թ#&O3338 ffY3 B⮶7(\X{R,z~~F#Ts"؂ۧoޒ]lIJ$˖tA%y\3_[ޯpmH:b5q*xd9IuY8,ffYBGIAU]]-Qm AkNui;Z^FRIҬI8_ˎ]^.!)]TAWdKA7^+/}mW$V~9N66ES8M!I 3$ KXRfI4 BZmmkP}} lۿWb"b *VNyqARcq-zb+nDd皿_5j)EХ%=mf'Kr eaf̬[AI9APUmji@xqnT2+3J' $Cggb/rIkSµ!mmoЦ+ǩE$bffqXS,+3;#K1I$ C֠qQ?f#-RdO"$B!GO%ղ%j oQI,afo,Q?}*T.̝k# t#J3T>N2c[ssk *F;~:}yk)SXc;bDyptC?eG91,ɓ!T(Xm%3Vo|~Qo9 */fMRJ~+t:\hk[b<$Y8IR*<; iP@#'+"ڡԜ(Zy>[dΝg֒\,RatgK_ˣvz}{v*J9׆kS8E$M[)V_$$# Y8R{GL"r~q݈>=sO/Lo4zl呹<_t}HCgg=Z 9wղ%J1 #|o*3ͬOR Km#hC0,|??ceisb}%1=|tւJU*XI-fgf>qXMSeͬ[@ 9N66E#p-+&`ტۛg/LT|2m.L۞GK*Vyܪ,ATk[GLZ9N*,#3,Kr @1KfQAPUlDB!@dJKR;-ӟؖLx^0׫\GJ:hf]fv8 dfN,V{GL:9?fcҗ.>7_TA%1h!ᡳڳЬ2JqJm֠pUx'$% Q"~k 7IOKJ,Xk\)YHqb *gdZyP:}Y{v|lAu7Djbf=f 3 BZZ ײX9D]s/~^/U -RbG6j(S=\Ҷ66E8<$̺,Kr afYB1I$ Cj渫P![OzI.-"FzSn~^m.\7*YRцb=^ZcM}}l /@bff̬[AI9APU=WKkT5UR;ti *%sqr 3S#G{ws׆A.]N+fM1@`M03$# Y8ֶmr~,_ \7:wROT*Rtb "yt&dƾD"^)4]Uu513]fqX -5|3" wk#2_+Jʾ{\Ppტۓ]_d.Ds|FAsewR:=HA7B)|VTLNN5nI 7>o58aPW)?TsJv,ɹ':wnd>+`|?g(XÃKK3KD`-`< % F|OFiN>u}P{Oy ?}؟R3_T.;{ )Xp835,X'!i ;b#{eGT8o D2/nOuXoi& pJmjyI>IDATrpLRb tX7I-*,V!kL|I IC DSNÏA|9c]/ixc *;w4S;Z *FӗV@qE+q*)aVB0AULNNHJ*C$ skbu1o>XJS"[AEޢ/rFfZ+R:wT"$%oA9fafY3; ɓ&T(Xmec57庑ZPd(+ ՞KThd+ר#Xc-+.-i3;`f>q@iS`쒙uK:(F ǠFU]SE E?0xi1"}wyݕ%)>ڐ7hSܕT"rY}AxS`쌤c C֠qWÏ3T>N2c[ssk *F;~:}yk)qW-[P@kULNN,y IvlbbRׯcPRdJйږˎ/׍wfyW_:c[%W` 2ǩT!hCRP$Y(`S@f5%y2$r mlh[GL<`x^髳;泂J>͉\7Rc|?=]~~ֶ͌k) 2<3;@1r ,]2.Io?HU!G-[ji*rdx(~蘞S;q{vY_}kզ*Aۨfefr ,3t4dpH18j@ZڂJ拙D">=|tւJHɥ8 qJm֠p{x$% QҨ$Xb%$" ĤxuTn! Y>ZrK:}Y{vygl`35)f|AZ{`PNey˒%5{j^cߍ,\7sYpA9gжHSPyfeGc6͛߃Sr(`yv/,#3{*%UuuZDT^u^&>LJVeGfr݈8gY}hQCR_(䨥5-Q)QIoYb ,/)̬ORBi "j=Xcg`ӗglm%R >V=3ǩƦ;b C|2!NHJ Q+|3; iIiAP9Nb֠uO_ْ)UP)VjIs߫TQ&SU! a>tiIOY+brr`xw@Rf@n|f0p_-xzd.~C)rh;N~^1tV *4dycLׯ^ޒ?bӃڹ륇?U-,T*VO!VKa|J"gfY3; ɓ!T(XmujZQG_]%.' +@MZB1@!mmkƦgax+ W9LC۟O=W6 9wղ%J1A7:eIRI)@kuXb5zi0tiJ)_=S`< %f@۫yݽs0)\ƦASQE9ցQ?=Sm 뎾_~S(ɦ"j@ЍJ4>r #%$ JEIݼ1n8N ak `HRe)y׭BI%I{_cߍF 55֩*.B)QB91PRamll\5>>ASµ!ASr(`}yI ]awaf 95ɭ@98&i|r @y^BI)@MLLۺycl]{NцAwARe@9U(4{j^cߍkD)ÍGeT(\" 4)<'ii ռ'ܵUTicSDpgfDx@I繒%' k1MLP85*ƢP)wϥFO6mTpctiJ)_`(yT(4lll\^{+~pmH"F r*R# bQN,\I=~A:}{5"~B!GO6ETeek)q t}cZ'YS0FFI$RLXS:HT();q RUGIVq0OIډ) q SUII[uzrS#N`jڧث+|.LS:Hrdy)5jdHc `Qʉ)Lh,[ISJUHg'9j]m#N`Uճ$${F2=J93J,TՐdd בV0U~ʡ5 :NSLSz[CIצ`N)VU%YEQKS0Gfc" Z'YS0gHRUST܀RL܉S *ck_~Z$9Io ^%Y.L&NTUʞ5`ޤG)gOe!Ɏ5`VQʉ)3|*"ɱ5`6,)圜ߠ$Y%ٷl$G S gʞ5`+\G)go#NTUCek$ w7@7vOQ9Liekps)pK ɐd0jQkS-He0*QKSgyرl:ɪ6n8PU-<liva ؀:HT[yzrf [ؠ:JT\cdZ;1l=\|p^$YS`#QU$'IUi)TAzg "oң3SxS`jdHc u28FvZ8=L28&G*ր$yڅ)`)0!U,=Rٳ3uATUCek0$` q LTU- I;Ml]GWUʾ52QkStS`KTQU\]G)/M'N-RUII[ ZV+WE?Z8M2.LE[#`ޤ_sf NZ&XXG)'vZk$$`^$YS`3SU$'I{~Zʅ)`>)0SUuY[v䨵vf q \U IIv ['fJvZr\MUU=ITW:O@"NޣG*{3]&Y^%q ^W,;IVSE!ɡ5NOK2!TAU?1{QkS"NHUG*$Ck_v,<,Ӄ+|/%NZU-ңZү05)7$'I5ޤG)g81UL2$ٱdӣS7 Z[%Y$9$H7)EU?$G S7Mܪzdds-NTՐddN2\_p)ST1aʕ) N\U=ITqgΓ,[kM%q 1UudHg[s4 `Y^?v,rcIV&SQEU?ON S&NF#bQʙ)TUG鑊~>2=J9106`j72sk|Ћ$ڕ)1WU$'IW,[kLLFUG*{3Mzr/q 09UL2$ٙ^G)')g`jZk$$3yI`LZU=IJo!`SYg_:ʡ+|9RU8~ivBRUG*םG)gFZUG*;$ډg`ήÑE~I`pINӼJ?-¢_He ~MzrfA%NZ&|Ib&NMJr/)Wx?q g'~$G |8 TB)ܚ{&ඈS5n,IENDB`tidyverse/vignettes/review-ldecicco-USGS.md0000644000176200001440000001153513561360544020461 0ustar liggesusers> The paper "Welcome to the tidyverse" is a 3 page introduction to the tidyverse R package. The tidyverse R package includes 8 core packages and other non-core packages. I am familiar with these tools, and my initial reaction was "this paper is entirely too short". Many of my questions on "tidyverse"-ness however were addressed in the link https://principles.tidyverse.org. Perhaps it would be worth moving that link into the introduction. I've added a sentence to the intro with more details on what we cover. I've left the link to (formerly https://principles.tidyverse.org) in the last section, but have renamed it make more clear that you'll get to that at the end of the paper. > The JOSS review is not just on the 3 page paper, it is on the entire software ecosystem. In this case, that includes a massive amount of useful resources. Each core package has adaquate to excellent documentation and links to external resources. Thanks! > My impression is this will be a useful paper for people to cite when they used tidyverse tools in their analysis. It is a short paper, but contains many useful links and references. I would recommend this paper to be published, but I offer the following impressions (they can be addressed or ignored): > 1. Discussing the pros and cons of using the "tidyverse" package versus loading individual packages would be useful. It is stated that the "tidyverse" is intended for the general workflow of a data project. However, it might be worth mentioning that it probably is not ideal for using as a dependency in package development. I'm sure there are other examples and issues that should be considered. We've added a sentence clarifying the advantages of `library(tidyverse)`, and another on why you should avoid importing in from another package. > 2. Related to #1... I think it would be useful to have a sentence or two addressing using tidyverse as it relates to package development. The tidyverse is such a nice introduction to R....and then the new-tidyverse user becomes a little more confident and wants to make an R package...The first thing they do is wrap their tidyverse code into some functions. Alerting them to some of the considerations would be great. Perhaps a link to http://r-pkgs.had.co.nz and https://dplyr.tidyverse.org/articles/programming.html (there are probably other great resources...those are the 2 I've used over the years). This feels a little out of scope for this paper, particularly since our advice is still in flux, and doesn't appear in a single good place. I've create an issue, , to make sure that we don't forget about this; I think "R packages" is best home since it's where we concentrate our other package development advice. > 3. Listing the full list of dependencies somehow would be useful (either directly in the text, or an obvious link). It might be worth addressing the fact that...yes...there are a lot of packages...but using the "tidyverse" package does simplify installation and helps prevent conflicts. Basically, having a reference to pass on to help ease the weary "IT admin" who has a knee jerk reaction to installing anything with too many dependencies would be great. We've mentioned the total number, but I'd prefer to avoid too much discussion of dependencies as the issued are rather nuanced (e.g. https://www.tidyverse.org/blog/2019/05/itdepends/) and I'd rather not distract from the meat of the paper. > 4. Consider adding a link to data.tables, fst, and feather in the sentence "Additional non-core packages". Thanks for spotting that we missed feather; I've added a citation. We've also added a paragraph on related work that mentions data.table, and hopefully makes it clear why we think a comparison to fst isn't quite right here. > 5. This is a bit more far-fetched, and could easily be considered out of scope of this paper....but... This might be a good venue for laying out some of the lessons learned over the years from developing all these packages. For example, how and when does the tidyverse team decide to break backwards compatibility? It might be nice to hear more about how to make a package more human centered. The last paragraph lays out some general ideas, but are there specific tactics for package developers to coordinate all that feedback that you all recommend? (I can only imagine that project management is critical for all these packages to be coordinated so well....) > > Each individual repo for core tidyverse packages serves as great examples of how to manage a package in a human centered way....if there were a few specific examples for inspiring other package developers to follow, that would be great. I think that's a book's worth of material :) So please stay tuned to where I'll be attempting to get all this knowledge out of our collective heads and into text in the next 2-3 years. tidyverse/R/0000755000176200001440000000000014035647316012502 5ustar liggesuserstidyverse/R/conflicts.R0000644000176200001440000000450313505647641014615 0ustar liggesusers#' Conflicts between the tidyverse and other packages #' #' This function lists all the conflicts between packages in the tidyverse #' and other packages that you have loaded. #' #' There are four conflicts that are deliberately ignored: \code{intersect}, #' \code{union}, \code{setequal}, and \code{setdiff} from dplyr. These functions #' make the base equivalents generic, so shouldn't negatively affect any #' existing code. #' #' @export #' @examples #' tidyverse_conflicts() tidyverse_conflicts <- function() { envs <- grep("^package:", search(), value = TRUE) envs <- purrr::set_names(envs) objs <- invert(lapply(envs, ls_env)) conflicts <- purrr::keep(objs, ~ length(.x) > 1) tidy_names <- paste0("package:", tidyverse_packages()) conflicts <- purrr::keep(conflicts, ~ any(.x %in% tidy_names)) conflict_funs <- purrr::imap(conflicts, confirm_conflict) conflict_funs <- purrr::compact(conflict_funs) structure(conflict_funs, class = "tidyverse_conflicts") } tidyverse_conflict_message <- function(x) { if (length(x) == 0) return("") header <- cli::rule( left = crayon::bold("Conflicts"), right = "tidyverse_conflicts()" ) pkgs <- x %>% purrr::map(~ gsub("^package:", "", .)) others <- pkgs %>% purrr::map(`[`, -1) other_calls <- purrr::map2_chr( others, names(others), ~ paste0(crayon::blue(.x), "::", .y, "()", collapse = ", ") ) winner <- pkgs %>% purrr::map_chr(1) funs <- format(paste0(crayon::blue(winner), "::", crayon::green(paste0(names(x), "()")))) bullets <- paste0( crayon::red(cli::symbol$cross), " ", funs, " masks ", other_calls, collapse = "\n" ) paste0(header, "\n", bullets) } #' @export print.tidyverse_conflicts <- function(x, ..., startup = FALSE) { cli::cat_line(tidyverse_conflict_message(x)) } #' @importFrom magrittr %>% confirm_conflict <- function(packages, name) { # Only look at functions objs <- packages %>% purrr::map(~ get(name, pos = .)) %>% purrr::keep(is.function) if (length(objs) <= 1) return() # Remove identical functions objs <- objs[!duplicated(objs)] packages <- packages[!duplicated(packages)] if (length(objs) == 1) return() packages } ls_env <- function(env) { x <- ls(pos = env) if (identical(env, "package:dplyr")) { x <- setdiff(x, c("intersect", "setdiff", "setequal", "union")) } x } tidyverse/R/update.R0000644000176200001440000000616514035647316014117 0ustar liggesusers#' Update tidyverse packages #' #' This will check to see if all tidyverse packages (and optionally, their #' dependencies) are up-to-date, and will install after an interactive #' confirmation. #' #' @inheritParams tidyverse_deps #' @export #' @examples #' \dontrun{ #' tidyverse_update() #' } tidyverse_update <- function(recursive = FALSE, repos = getOption("repos")) { deps <- tidyverse_deps(recursive, repos) behind <- dplyr::filter(deps, behind) if (nrow(behind) == 0) { cli::cat_line("All tidyverse packages up-to-date") return(invisible()) } cli::cat_line("The following packages are out of date:") cli::cat_line() cli::cat_bullet(format(behind$package), " (", behind$local, " -> ", behind$cran, ")") cli::cat_line() cli::cat_line("Start a clean R session then run:") pkg_str <- paste0(deparse(behind$package), collapse = "\n") cli::cat_line("install.packages(", pkg_str, ")") invisible() } #' Get a situation report on the tidyverse #' #' This function gives a quick overview of the versions of R and RStudio as #' well as all tidyverse packages. It's primarily designed to help you get #' a quick idea of what's going on when you're helping someone else debug #' a problem. #' #' @export tidyverse_sitrep <- function() { cli::cat_rule("R & RStudio") if (rstudioapi::isAvailable()) { cli::cat_bullet("RStudio: ", rstudioapi::getVersion()) } cli::cat_bullet("R: ", getRversion()) deps <- tidyverse_deps() package_pad <- format(deps$package) packages <- ifelse( deps$behind, paste0(cli::col_yellow(cli::style_bold(package_pad)), " (", deps$local, " < ", deps$cran, ")"), paste0(package_pad, " (", deps$cran, ")") ) cli::cat_rule("Core packages") cli::cat_bullet(packages[deps$package %in% core]) cli::cat_rule("Non-core packages") cli::cat_bullet(packages[!deps$package %in% core]) } #' List all tidyverse dependencies #' #' @param recursive If \code{TRUE}, will also list all dependencies of #' tidyverse packages. #' @param repos The repositories to use to check for updates. #' Defaults to \code{getOptions("repos")}. #' @export tidyverse_deps <- function(recursive = FALSE, repos = getOption("repos")) { pkgs <- utils::available.packages(repos = repos) deps <- tools::package_dependencies("tidyverse", pkgs, recursive = recursive) pkg_deps <- unique(sort(unlist(deps))) base_pkgs <- c( "base", "compiler", "datasets", "graphics", "grDevices", "grid", "methods", "parallel", "splines", "stats", "stats4", "tools", "tcltk", "utils" ) pkg_deps <- setdiff(pkg_deps, base_pkgs) tool_pkgs <- c("cli", "crayon", "rstudioapi") pkg_deps <- setdiff(pkg_deps, tool_pkgs) cran_version <- lapply(pkgs[pkg_deps, "Version"], base::package_version) local_version <- lapply(pkg_deps, packageVersion) behind <- purrr::map2_lgl(cran_version, local_version, `>`) tibble::tibble( package = pkg_deps, cran = cran_version %>% purrr::map_chr(as.character), local = local_version %>% purrr::map_chr(as.character), behind = behind ) } packageVersion <- function(pkg) { if (rlang::is_installed(pkg)) { utils::packageVersion(pkg) } else { 0 } } tidyverse/R/utils.R0000644000176200001440000000241013465363413013761 0ustar liggesusersmsg <- function(..., startup = FALSE) { if (startup) { if (!isTRUE(getOption("tidyverse.quiet"))) { packageStartupMessage(text_col(...)) } } else { message(text_col(...)) } } text_col <- function(x) { # If RStudio not available, messages already printed in black if (!rstudioapi::isAvailable()) { return(x) } if (!rstudioapi::hasFun("getThemeInfo")) { return(x) } theme <- rstudioapi::getThemeInfo() if (isTRUE(theme$dark)) crayon::white(x) else crayon::black(x) } #' List all packages in the tidyverse #' #' @param include_self Include tidyverse in the list? #' @export #' @examples #' tidyverse_packages() tidyverse_packages <- function(include_self = TRUE) { raw <- utils::packageDescription("tidyverse")$Imports imports <- strsplit(raw, ",")[[1]] parsed <- gsub("^\\s+|\\s+$", "", imports) names <- vapply(strsplit(parsed, "\\s+"), "[[", 1, FUN.VALUE = character(1)) if (include_self) { names <- c(names, "tidyverse") } names } invert <- function(x) { if (length(x) == 0) return() stacked <- utils::stack(x) tapply(as.character(stacked$ind), stacked$values, list) } style_grey <- function(level, ...) { crayon::style( paste0(...), crayon::make_style(grDevices::grey(level), grey = TRUE) ) } tidyverse/R/zzz.R0000644000176200001440000000055413505647641013470 0ustar liggesusers.onAttach <- function(...) { needed <- core[!is_attached(core)] if (length(needed) == 0) return() crayon::num_colors(TRUE) tidyverse_attach() if (!"package:conflicted" %in% search()) { x <- tidyverse_conflicts() msg(tidyverse_conflict_message(x), startup = TRUE) } } is_attached <- function(x) { paste0("package:", x) %in% search() } tidyverse/R/emails.R0000644000176200001440000000256713565046137014112 0ustar liggesusersmake_email <- function(to, package) { name <- gsub(" <.*>", "", to) body <- glue::glue(" Dear {name}, Your package, {package}, lists the tidyverse in either Depends, Imports, or Suggests in the DESCRIPTION file. This is a bad idea because, in short, the tidyverse is a set of packages designed for interactive data analysis, and it includes a very large number (>80) of direct and indirect dependencies, most of which your package probably doesn't use. Instead of depending on the entire tidyverse, please import from, suggest, or depend on the packages in the tidyverse that you actually use. This will make your package faster to install and will head off potential problems down the road. Thanks! Hadley ") get("gm_mime", asNamespace("gmailr"))( from = "hadley@rstudio.com", to = to, subject = glue::glue('{package} and the tidyverse'), body = body ) } tidyverse_dependency_dissuade <- function() { pkgs <- tools::package_dependencies("tidyverse", which = c("Depends", "Imports", "Suggests"), reverse = TRUE )[[1]] db <- tools::CRAN_package_db() maintainers <- db$Maintainer[match(pkgs, db$Package)] emails <- purrr::map2(maintainers, pkgs, make_email) purrr::walk(emails, ~ try(get("gm_send_message", asNamespace("gmailr"))(.x))) } # gm_auth_configure(path = "path/to/oauth.json") # tidyverse_dependency_dissuade() tidyverse/R/logo.R0000644000176200001440000000221513200154551013550 0ustar liggesusers #' The tidyverse logo, using ASCII or Unicode characters #' #' Use [crayon::strip_style()] to get rid of the colors. #' #' @param unicode Whether to use Unicode symbols. Default is `TRUE` #' on UTF-8 platforms. #' #' @md #' @export #' @examples #' tidyverse_logo() tidyverse_logo <- function(unicode = l10n_info()$`UTF-8`) { logo <- c( "0 __ _ __ 1 2 3 4 ", " / /_(_)__/ /_ ___ _____ _______ ___ ", "/ __/ / _ / // / |/ / -_) __(_- 3) { version[4:length(version)] <- crayon::red(as.character(version[4:length(version)])) } paste0(version, collapse = ".") } tidyverse/NEWS.md0000644000176200001440000000645214035663732013406 0ustar liggesusers# tidyverse 1.3.1 * tidyverse now installs dtplyr (#216), googledrive, and googlesheets4 (#229). All packages have been bumped to their latest versions. * License changed to MIT (#235). # tidyverse 1.3.0 * The tidyverse now has an associated paper at the [Journal of Open Source Software](https://joss.theoj.org/) that you can use to cite the tidyverse if you use it in a paper - see `citation("tidyverse")` for details. * Eliminate repeats in the package list when loading an odd number of packages (#94, #100, @dchiu911) * Packages attached from same library they were initially loaded from (#171, @gabrocsardi) * If conflicted package is loaded, omit display of conflicts. This includes fix to `tidyverse_conflicts()` to avoid accidentally triggering conflicted shims (#136). * `tidyverse_deps()` now succeeds even if a dependency of a dependency is missing (#152, @PoGibas). It no longer includes dependencies that are needed by the tidyverse package but are not strictly part of the tidyverse (i.e. cli, crayon, and rstudioapi). * `tidyverse_deps()` and `tidyverse_update()` gain a new `repos` argument that gets passed to the base function `available.packages()` (@zkamvar, #82) * `tidyverse_packages()` correctly returns packages names (#93, #106, @coatless) * `tidyverse_sitrep()` gives you a situation report on your install of the tidyverse (#203) # tidyverse 1.2.1 * Require modern versions of all packages (#85) * Work with RStudio 1.0 and earlier (#88). # tidyverse 1.2.0 ## Changes to tidyverse membership * stringr and forcats have been added to the core tidyverse, so they are attached by `library(tidyverse)`. * reprex joins the tidyverse to make it easier to create reproducible examples (#47) ## Other improvements * On attach, tidyverse now makes better use of the horizontal space, printing packages and versions in two columns (#59). It only prints packages that it attaches, not packages that you've already attached. Development versions are highlighted in red. You can now suppress this startup message by setting `options(tidyverse.quiet = TRUE)` * `tidyverse_conflicts()` now prints all conflicts that involve at least one tidyverse package; Previously it only omitted any intra-tidyverse conflicts (#26). I've also tweaked the display of conflicts to hopefully make it more clear which function is the "winner". * `tidyverse_update()` now just gives you the code you need to update the packges, since in general it's not possible to update packages that are already loaded. * feather is now _actually_ in suggests. # tidyverse 1.1.1 * Moved feather from Imports to Suggests - feather is part of the tidyverse but it's installation requirements (C++11 + little-endian) make it painful in many scenarios (#36). # tidyverse 1.1.0 * Added a `NEWS.md` file to track changes to the package. * Membership changes: * Removed DBI (since very different API, #16) * Added feather (#15) * `tidyverse_deps()` and `tidyverse_packages()` are now exported so you can more easily see the make up of the tidyverse, and what package versions you have (#18, #23) * `suppressPackageStartupMessages()` now suppresses all messages during loading (#19). `suppressPackageStartupMessages()` is called automatically for all tidyverse packages (#27). tidyverse/MD50000644000176200001440000000374214036036602012606 0ustar liggesusers54341914a0f4729d7dca34bb8540dc6d *DESCRIPTION bc6aebdf67bd7d3c791f0f9fdeef3b83 *LICENSE f5f79a80babc026ec45820831b75e0ff *NAMESPACE 12da18c3faa253da0fd4f4fd15de5a1b *NEWS.md 0ce4caf7c63d1d20a6b4ffccc445f3f6 *R/attach.R 310f2968ea59a0cebc990a3484f0947b *R/conflicts.R 1be82b2cbe64fd43d293b23d50d16a22 *R/emails.R 0002e45cd0b532d3505589c16598888a *R/logo.R 8a3d2f5aa67ccfd4fd7da444263788a2 *R/tidyverse.R 00ed69f40226e0ebcdff9b0bdd20cca8 *R/update.R a920d42b559a0aacbe6f154e0ae7ad33 *R/utils.R 38ec7e773d12dd2025ca781f8f768394 *R/zzz.R 0f3d5a23fd65186de8ccf4a50496cece *README.md d65dcc039539f003e93c91b4109492e8 *build/vignette.rds 093b67e1a409ad67a2fe37990f7f5feb *inst/CITATION b44ef7437641058cdbed77c8788db734 *inst/doc/manifesto.Rmd 360dcd50c6bda9f573150642bbe383a2 *inst/doc/manifesto.html 60129ea523691e042c0174482bd3578d *inst/doc/paper.R 8fed95f5c5b14d6594d2378d21c5c6e2 *inst/doc/paper.Rmd 18385abc558d570d010930251a99d6e3 *inst/doc/paper.html f7c787aff996e89dab2dfd867cab75bc *man/figures/logo.png 62f1c8d775ca6eab05ec58e091d617b9 *man/tidyverse-package.Rd 6ffddf26b6c2e24669ab8320a357402a *man/tidyverse_conflicts.Rd 11e78e6ed5ff31b8cb0b8784622315a0 *man/tidyverse_deps.Rd 77c742a7536ecc5b7dd83ebbd09fb25a *man/tidyverse_logo.Rd abc078c1fbd4ccc70efa582a2715fdca *man/tidyverse_packages.Rd 2de8aaab5c401873fb30a11f658c796e *man/tidyverse_sitrep.Rd 04a2adcd1d710f707d5b081afcd1fcdc *man/tidyverse_update.Rd e64c16e6675ba2c2808d3358a08e8d28 *tests/testthat.R 468a77d75595f8cffa0dcf6d4545cf07 *tests/testthat/test-utils.R 7c484d37192b28b1f1a1b010736f0da8 *vignettes/data-science.png b44ef7437641058cdbed77c8788db734 *vignettes/manifesto.Rmd 8fed95f5c5b14d6594d2378d21c5c6e2 *vignettes/paper.Rmd ff038a58d445b5d196453ebda8f4c10d *vignettes/paper.bib daefd6b57530b6c73b1c2dfe188d1f01 *vignettes/review-checklist.md 67d4944bada085d03b4581ca73db16ed *vignettes/review-jeffreyhanson.md 359b8f77e2d47dcab82b3664864c7b2c *vignettes/review-ldecicco-USGS.md 9cf362dd746f224400db39caadee2dba *vignettes/tidyverse-logo.png tidyverse/inst/0000755000176200001440000000000014036031203013235 5ustar liggesuserstidyverse/inst/doc/0000755000176200001440000000000014036031203014002 5ustar liggesuserstidyverse/inst/doc/paper.html0000644000176200001440000171342614036031203016015 0ustar liggesusers Welcome to the Tidyverse

Welcome to the Tidyverse

Hadley Wickham, Mara Averick, Jennifer Bryan, Winston Chang, Lucy D’Agostino McGowan, Romain François, Garrett Grolemund, Alex Hayes, Lionel Henry, Jim Hester, Max Kuhn, Thomas Lin Pedersen, Evan Miller, Stephan Milton Bache, Kirill Müller, Jeroen Ooms, David Robinson, Dana Paige Seidel, Vitalie Spinu, Kohske Takahashi, Davis Vaughan, Claus Wilke, Kara Woo, Hiroaki Yutani

19 November 2019

Summary

At a high level, the tidyverse is a language for solving data science challenges with R code. Its primary goal is to facilitate a conversation between a human and a computer about data. Less abstractly, the tidyverse is a collection of R packages that share a high-level design philosophy and low-level grammar and data structures, so that learning one package makes it easier to learn the next.

The tidyverse encompasses the repeated tasks at the heart of every data science project: data import, tidying, manipulation, visualisation, and programming. We expect that almost every project will use multiple domain-specific packages outside of the tidyverse: our goal is to provide tooling for the most common challenges; not to solve every possible problem. Notably, the tidyverse doesn’t include tools for statistical modelling or communication. These toolkits are critical for data science, but are so large that they merit separate treatment. The tidyverse package allows users to install all tidyverse packages with a single command.

There are a number of projects that are similar in scope to the tidyverse. The closest is perhaps Bioconductor (Gentleman et al. 2004; Huber et al. 2015), which provides an ecosystem of packages that support the analysis of high-throughput genomic data. The tidyverse has similar goals to R itself, but any comparison to the R Project (R Core Team 2019) is fundamentally challenging as the tidyverse is written in R, and relies on R for its infrastructure; there is no tidyverse without R! That said, the biggest difference is in priorities: base R is highly focussed on stability, whereas the tidyverse will make breaking changes in the search for better interfaces. Another closely related project is data.table (Dowle and Srinivasan 2019), which provides tools roughly equivalent to the combination of dplyr, tidyr, tibble, and readr. data.table prioritises concision and performance.

This paper describes the tidyverse package, the components of the tidyverse, and some of the underlying design principles. This is a lot of ground to cover in a brief paper, so we focus on a 50,000-foot view showing how all the pieces fit together with copious links to more detailed resources.

Tidyverse package

The tidyverse is a collection of packages that can easily be installed with a single “meta”-package, which is called “tidyverse.” This provides a convenient way of downloading and installing all tidyverse packages with a single R command:

install.packages("tidyverse")

The core tidyverse includes the packages that you’re likely to use in everyday data analyses, and these are attached when you attach the tidyverse package:

library(tidyverse)
#> -- Attaching packages --------------------------- tidyverse 1.3.1 --
#> v ggplot2 3.3.3     v purrr   0.3.4
#> v tibble  3.1.0     v dplyr   1.0.5
#> v tidyr   1.1.3     v stringr 1.4.0
#> v readr   1.4.0     v forcats 0.5.1
#> -- Conflicts ------------------------------ tidyverse_conflicts() --
#> x dplyr::filter() masks stats::filter()
#> x dplyr::lag()    masks stats::lag()

This is a convenient shortcut for attaching the core packages, produces a short report telling you which package versions you’re using, and succinctly informs you of any conflicts with previously loaded packages. As of tidyverse version 1.2.0, the core packages include dplyr (Wickham et al. 2019), forcats (Wickham 2019b), ggplot2 (Wickham 2016), purrr (Henry and Wickham 2019), readr (Wickham and Hester 2018), stringr (Wickham 2019d), tibble (Müller and Wickham 2018), and tidyr (Wickham and Henry 2019).

Non-core packages are installed with install.packages("tidyverse"), but are not attached by library(tidyverse). They play more specialised roles, so will be attached by the analyst as needed. The non-core packages are: blob (Wickham 2018a), feather (Wickham 2019a), jsonlite (Ooms 2014), glue (Hester 2018), googledrive (D’Agostino McGowan and Bryan 2019), haven (Wickham and Miller 2018), hms (Müller 2018), lubridate (Spinu, Grolemund, and Wickham 2018), magrittr (Bache and Wickham 2014), modelr (Wickham 2018b), readxl (Wickham and Bryan 2019), reprex (Bryan et al. 2019), rvest (Wickham 2019c), and xml2 (Wickham, Hester, and Ooms 2019).

The tidyverse package is designed with an eye for teaching: install.packages("tidyverse") gets you a “batteries-included” set of 87 packages (at time of writing). This large set of dependencies means that it is not appropriate to use the tidyverse package within another package; instead, we recommend that package authors import only the specific packages that they use.

Components

How do the component packages of the tidyverse fit together? We use the model of data science tools from “R for Data Science” (Wickham and Grolemund 2017):

Every analysis starts with data import: if you can’t get your data into R, you can’t do data science on it! Data import takes data stored in a file, database, or behind a web API, and reads it into a data frame in R. Data import is supported by the core readr (Wickham and Hester 2018) package for tabular files (like csv, tsv, and fwf).

Additional non-core packages, such as readxl (Wickham and Bryan 2019), haven (Wickham and Miller 2018), googledrive (D’Agostino McGowan and Bryan 2019), and rvest (Wickham 2019c), make it possible to import data stored in other common formats or directly from the web.

Next, we recommend that you tidy your data, getting it into a consistent form that makes the rest of the analysis easier. Most functions in the tidyverse work with tidy data (Wickham 2014), where every column is a variable, every row is an observation, and every cell contains a single value. If your data is not already in this form (almost always!), the core tidyr (Wickham and Henry 2019) package provides tools to tidy it up.

Data transformation is supported by the core dplyr (Wickham et al. 2019) package. dplyr provides verbs that work with whole data frames, such as mutate() to create new variables, filter() to find observations matching given criteria, and left_join() and friends to combine multiple tables. dplyr is paired with packages that provide tools for specific column types:

  • stringr for strings.
  • forcats for factors, R’s categorical data type.
  • lubridate (Spinu, Grolemund, and Wickham 2018) for dates and date-times.
  • hms (Müller 2018) for clock times.

There are two main tools for understanding data: visualisation and modelling. The tidyverse provides the ggplot2 (Wickham 2016) package for visualisation. ggplot2 is a system for declaratively creating graphics, based on The Grammar of Graphics (Wilkinson 2005).

You provide the data, tell ggplot2 how to map variables to aesthetics, what graphical primitives to use, and it takes care of the details. Modelling is outside the scope of this paper, but is part of the closely affiliated tidymodels (Kuhn and Wickham 2018) project, which shares interface design and data structures with the tidyverse.

Finally, you’ll need to communicate your results to someone else. Communication is one of the most important parts of data science, but is not included within tidyverse. Instead, we expect people will use other R packages, like rmarkdown (Allaire et al. 2018) and shiny (Chang et al. 2019), which support dozens of static and dynamic output formats.

Surrounding all these tools is programming. Programming is a cross-cutting tool that you use in every part of a data science project. Programming tools in the tidyverse include:

  • purrr (Henry and Wickham 2019), which enhances R’s functional programming toolkit.

  • tibble (Müller and Wickham 2018), which provides a modern re-imagining of the venerable data frame, keeping what time has proven to be effective, and throwing out what it has not.

  • reprex (Bryan et al. 2019), which helps programmers get help when they get stuck by easing the creation of reproducible examples.

  • magrittr (Bache and Wickham 2014), which provides the pipe operator, %>%, used throughout the tidyverse. The pipe is a tool for function composition, making it easier to solve large problems by breaking them into small pieces.

Design principles

We are still working to explicitly describe the unifying principles that make the tidyverse consistent, but you can read our latest thoughts at https://design.tidyverse.org/. There is one particularly important principle that we want to call out here: the tidyverse is fundamentally human centred. That is, the tidyverse is designed to support the activities of a human data analyst, so to be effective tool builders, we must explicitly recognise and acknowledge the strengths and weaknesses of human cognition.

This is particularly important for R, because it’s a language that’s used primarily by non-programmers, and we want to make it as easy as possible for first-time and end-user programmers to learn the tidyverse. We believe deeply in the motivations that lead to the creation of S: “to turn ideas into software, quickly and faithfully” (Chambers 1998). This means that we spend a lot of time thinking about interface design, and have recently started experimenting with surveys to help guide interface choices.

Similarly, the tidyverse is not just the collection of packages — it is also the community of people who use them. We want the tidyverse to be a diverse, inclusive, and welcoming community. We are still developing our skills in this area, but our existing approaches include active use of Twitter to solicit feedback, announce updates, and generally listen to the community. We also keep users apprised of major upcoming changes through the tidyverse blog, run developer days, and support lively discussions on RStudio community.

Acknowledgments

The tidyverse would not be possible without the immense work of the R-core team who maintain the R language and we are deeply indebted to them. We are also grateful for the financial support of RStudio, Inc.

References

Allaire, JJ, Yihui Xie, Jonathan McPherson, Javier Luraschi, Kevin Ushey, Aron Atkins, Hadley Wickham, Joe Cheng, Winston Chang, and Richard Iannone. 2018. rmarkdown: Dynamic Documents for R. https://rmarkdown.rstudio.com.
Bache, Stefan Milton, and Hadley Wickham. 2014. magrittr: A Forward-Pipe Operator for R. https://CRAN.R-project.org/package=magrittr.
Bryan, Jennifer, Jim Hester, David Robinson, and Hadley Wickham. 2019. reprex: Prepare Reproducible Example Code via the Clipboard. https://CRAN.R-project.org/package=reprex.
Chambers, John M. 1998. Programming with Data: A Guide to the S Language. Springer.
Chang, Winston, Joe Cheng, JJ Allaire, Yihui Xie, and Jonathan McPherson. 2019. shiny: Web Application Framework for R. https://CRAN.R-project.org/package=shiny.
D’Agostino McGowan, Lucy, and Jennifer Bryan. 2019. googledrive: An Interface to Google Drive. https://CRAN.R-project.org/package=googledrive.
Dowle, Matt, and Arun Srinivasan. 2019. data.table: Extension of ‘Data.frame‘. https://CRAN.R-project.org/package=data.table.
Gentleman, Robert C, Vincent J Carey, Douglas M Bates, Ben Bolstad, Marcel Dettling, Sandrine Dudoit, Byron Ellis, et al. 2004. “Bioconductor: Open Software Development for Computational Biology and Bioinformatics.” Genome Biology 5 (10): R80.
Henry, Lionel, and Hadley Wickham. 2019. purrr: Functional Programming Tools. https://CRAN.R-project.org/package=purrr.
Hester, Jim. 2018. glue: Interpreted String Literals. https://CRAN.R-project.org/package=glue.
Huber, W., V. J. Carey, R. Gentleman, S. Anders, M. Carlson, B. S. Carvalho, H. C. Bravo, et al. 2015. Orchestrating High-Throughput Genomic Analysis with Bioconductor.” Nature Methods 12 (2): 115–21. https://www.nature.com/articles/nmeth.3252.
Kuhn, Max, and Hadley Wickham. 2018. tidymodels: Easily Install and Load the ’Tidymodels’ Packages. https://CRAN.R-project.org/package=tidymodels.
Müller, Kirill. 2018. hms: Pretty Time of Day. https://CRAN.R-project.org/package=hms.
Müller, Kirill, and Hadley Wickham. 2018. tibble: Simple Data Frames. https://CRAN.R-project.org/package=tibble.
Ooms, Jeroen. 2014. “The Jsonlite Package: A Practical and Consistent Mapping Between JSON Data and R Objects.” arXiv:1403.2805 [Stat.CO]. https://arxiv.org/abs/1403.2805.
R Core Team. 2019. R: A Language and Environment for Statistical Computing. Vienna, Austria: R Foundation for Statistical Computing. https://www.R-project.org/.
Spinu, Vitalie, Garrett Grolemund, and Hadley Wickham. 2018. lubridate: Make Dealing with Dates a Little Easier. https://CRAN.R-project.org/package=lubridate.
Wickham, Hadley. 2014. “Tidy Data.” The Journal of Statistical Software 59.
———. 2016. ggplot2: Elegant Graphics for Data Analysis. useR. Springer.
———. 2018a. blob: A Simple S3 Class for Representing Vectors of Binary Data (’BLOBS’). https://CRAN.R-project.org/package=blob.
———. 2018b. modelr: Modelling Functions That Work with the Pipe. https://CRAN.R-project.org/package=modelr.
———. 2019a. Feather: R Bindings to the Feather API. https://CRAN.R-project.org/package=feather.
———. 2019b. forcats: Tools for Working with Categorical Variables (Factors). https://CRAN.R-project.org/package=forcats.
———. 2019c. rvest: Easily Harvest (Scrape) Web Pages. https://CRAN.R-project.org/package=rvest.
———. 2019d. stringr: Simple, Consistent Wrappers for Common String Operations. https://CRAN.R-project.org/package=stringr.
Wickham, Hadley, and Jennifer Bryan. 2019. readxl: Read Excel Files. https://CRAN.R-project.org/package=readxl.
Wickham, Hadley, Romain François, Lionel Henry, and Kirill Müller. 2019. dplyr: A Grammar of Data Manipulation. https://CRAN.R-project.org/package=dplyr.
Wickham, Hadley, and Garrett Grolemund. 2017. R for Data Science: Import, Tidy, Transform, Visualize, and Model Data. O’Reilly Media, Inc.
Wickham, Hadley, and Lionel Henry. 2019. tidyr: Tidy Messy Data. https://CRAN.R-project.org/package=tidyr.
Wickham, Hadley, and Jim Hester. 2018. readr: Read Rectangular Text Data. https://CRAN.R-project.org/package=readr.
Wickham, Hadley, Jim Hester, and Jeroen Ooms. 2019. xml2: Parse XML. https://CRAN.R-project.org/package=xml2.
Wickham, Hadley, and Evan Miller. 2018. haven: Import and Export SPSS, Stata, and SAS Files. https://CRAN.R-project.org/package=haven.
Wilkinson, Leland. 2005. The Grammar of Graphics. Berlin, Heidelberg: Springer-Verlag. https://doi.org/10.1007/0-387-28695-0.
tidyverse/inst/doc/manifesto.html0000644000176200001440000003326314036031201016662 0ustar liggesusers The tidy tools manifesto

The tidy tools manifesto

Hadley Wickham

2021-04-15

This document lays out the consistent principles that unify the packages in the tidyverse. The goal of these principles is to provide a uniform interface so that tidyverse packages work together naturally, and once you’ve mastered one, you have a head start on mastering the others.

This is my first attempt at writing down these principles. That means that this manifesto is both aspirational and likely to change heavily in the future. Currently no packages precisely meet the design goals, and while the underlying ideas are stable, I expect their expression in prose will change substantially as I struggle to make explicit my process and thinking.

There are many other excellent packages that are not part of the tidyverse, because they are designed with a different set of underlying principles. This doesn’t make them better or worse, just different. In other words, the complement to the tidyverse is not the messyverse, but many other universes of interrelated packages.

There are four basic principles to a tidy API:

  1. Reuse existing data structures.

  2. Compose simple functions with the pipe.

  3. Embrace functional programming.

  4. Design for humans.

Reuse existing data structures

Where possible, re-use existing data structures, rather than creating custom data structures for your own package. Generally, I think it’s better to prefer common existing data structures over custom data structures, even if slightly ill-fitting.

Many R packages (e.g. ggplot2, dplyr, tidyr) work with rectangular datasets made up of observations and variables. If this is true for your package, work with data in either a data frame or tibble. Assume the data is tidy, with variables in the columns, and observations in the rows (see Tidy Data for more details).

Some packages work at a lower level, focussing on a single type of variable. For example, stringr for strings, lubridate for date/times, and forcats for factors. Generally prefer existing base R vector types, but when this is not possible, create your own using an S3 class built on top of an atomic vector or list.

If you need “non-standard scoping”, where you refer to variables inside a data frame as if they are in the global environment, prefer tidy evaluation over non-standard evaluation. See the examples in Tidy evaluation and the metaprogramming chapters in Advanced R for more details.

Compose simple functions with the pipe

No matter how complex and polished the individual operations are, it is often the quality of the glue that most directly determines the power of the system.

— Hal Abelson

A powerful strategy for solving complex problems is to combine many simple pieces. Each piece should be easily understood in isolation, and have a standard way to combine with other pieces. In R, this strategy plays out by composing single functions with the pipe. The pipe, %>%, is a common composition tool that works across all packages.

Some things to bear in mind when writing functions:

  • Strive to keep functions as simple as possible (but no simpler!). Generally, each function should do one thing well, and you should be able to describe the purpose of the function in one sentence.

  • Avoid mixing side-effects with transformations. Ensure each function either returns an object, or has a side-effect. Don’t do both. (This is a slight simplification: functions called primarily for their side-effects should return the primary input invisibly so that they can still be combined in a pipeline.)

  • Function names should be verbs. The exception is when many functions use the same verb (typically something like “modify”, or “add”, or “compute”). In that case, avoid duplicating the common verb, and instead focus on the noun. A good example of this is ggplot2: almost every function adds something to an existing plot.

An advantage of a pipeable API is that it is not compulsory: if you do not like using the pipe, you can compose functions in whatever way you prepare. Compare this to an operator-overloading approach (such as the + in ggplot2), or an object-composition approach (such as the ... approach in httr).

Embrace functional programming

R is a functional programming language; embrace it, don’t fight it. If you’re familiar with an object-oriented language like Python or C#, this is going to take some adjustment. But in the long run you will be much better off working with the language, rather than fighting it.

Generally, this means you should favour:

  • Immutable objects and copy-on-modify semantics. This makes your code easier to reason about.

  • The generic functions provided by S3 and S4. These work very naturally inside a pipe. If you do need mutable state, try to make it an internal implementation detail, rather than exposing it to the user.

  • Tools that abstract over for-loops, like the apply family of functions or the map functions in purrr.

Design for humans

Programs must be written for people to read, and only incidentally for machines to execute.

— Hal Abelson

Design your API primarily so that it is easy to use by humans. Computer efficiency is a secondary concern because the bottleneck in most data analysis is thinking time, not computing time.

  • Invest time in naming your functions. Evocative function names make your API easier to use and remember.

  • Favour explicit, lengthy names, over short, implicit, names. Save the shortest names for the most important operations.

  • Think about how autocomplete can also make an API that’s easy to write. Make sure that function families are identified by a common prefix, not a common suffix. This makes autocomplete more helpful, as you can jog your memory with the prompts. For smaller packages, this may mean that every function has a common prefix (e.g. stringr, xml2, rvest).

tidyverse/inst/doc/paper.R0000644000176200001440000000100514036031202015227 0ustar liggesusers## ---- include = FALSE--------------------------------------------- knitr::opts_chunk$set(collapse = TRUE, comment = "#>", width = 68) options(width = 68, cli.unicode = FALSE, cli.width = 68) ## ---- eval = FALSE------------------------------------------------ # install.packages("tidyverse") ## ----------------------------------------------------------------- library(tidyverse) ## ---- include = FALSE--------------------------------------------- # Ensure pkgdown links to the right packages. library(dplyr) tidyverse/inst/doc/paper.Rmd0000644000176200001440000003225214035650015015570 0ustar liggesusers--- title: 'Welcome to the Tidyverse' output: rmarkdown::html_vignette: keep_md: TRUE tags: - data science - R author: Hadley Wickham, Mara Averick, Jennifer Bryan, Winston Chang, Lucy D'Agostino McGowan, Romain François, Garrett Grolemund, Alex Hayes, Lionel Henry, Jim Hester, Max Kuhn, Thomas Lin Pedersen, Evan Miller, Stephan Milton Bache, Kirill Müller, Jeroen Ooms, David Robinson, Dana Paige Seidel, Vitalie Spinu, Kohske Takahashi, Davis Vaughan, Claus Wilke, Kara Woo, Hiroaki Yutani authors: - name: Hadley Wickham orcid: 0000-0003-4757-117X affiliation: 1 - name: Mara Averick orcid: 0000-0001-9659-6192 affiliation: 1 - name: Jennifer Bryan orcid: 0000-0002-6983-2759 affiliation: 1 - name: Winston Chang orcid: 0000-0002-1576-2126 affiliation: 1 - name: Lucy D'Agostino McGowan orcid: 0000-0001-7297-9359 affiliation: 8 - name: Romain François orcid: 0000-0002-2444-4226 affiliation: 1 - name: Garrett Grolemund orcid: 0000-0002-7765-6011 affiliation: 1 - name: Alex Hayes orcid: 0000-0002-4985-5160 affiliation: 12 - name: Lionel Henry orcid: 0000-0002-8143-5908 affiliation: 1 - name: Jim Hester orcid: 0000-0002-2739-7082 affiliation: 1 - name: Max Kuhn orcid: 0000-0003-2402-136X affiliation: 1 - name: Thomas Lin Pedersen orcid: 0000-0002-5147-4711 affiliation: 1 - name: Evan Miller affiliation: 13 - name: Stephan Milton Bache affiliation: 3 - name: Kirill Müller orcid: 0000-0002-1416-3412 affiliation: 2 - name: Jeroen Ooms affiliation: 14 - name: David Robinson affiliation: 5 - name: Dana Paige Seidel orcid: 0000-0002-9088-5767 affiliation: 10 - name: Vitalie Spinu orcid: 0000-0002-2138-3413 affiliation: 4 - name: Kohske Takahashi orcid: 0000-0001-6076-4828 affiliation: 9 - name: Davis Vaughan orcid: 0000-0003-4777-038X affiliation: 1 - name: Claus Wilke orcid: 0000-0002-7470-9261 affiliation: 6 - name: Kara Woo orcid: 0000-0002-5125-4188 affiliation: 7 - name: Hiroaki Yutani orcid: 0000-0002-3385-7233 affiliation: 11 affiliations: - name: RStudio index: 1 - name: cynkra index: 2 - name: Redbubble index: 3 - name: Erasmus University Rotterdam index: 4 - name: Flatiron Health index: 5 - name: Department of Integrative Biology, The University of Texas at Austin index: 6 - name: Sage Bionetworks index: 7 - name: Department of Biostatistics, Johns Hopkins Bloomberg School of Public Health index: 8 - name: Chukyo University, Japan index: 9 - name: Department of Environmental Science, Policy, & Management, University of California, Berkeley index: 10 - name: LINE Corporation index: 11 - name: University of Wisconsin, Madison index: 12 - name: None index: 13 - name: University of California, Berkeley index: 14 date: 19 November 2019 bibliography: paper.bib vignette: > %\VignetteIndexEntry{Welcome to the tidyverse} %\VignetteEngine{knitr::rmarkdown} %\VignetteEncoding{UTF-8} --- ```{r, include = FALSE} knitr::opts_chunk$set(collapse = TRUE, comment = "#>", width = 68) options(width = 68, cli.unicode = FALSE, cli.width = 68) ``` # Summary ![](tidyverse-logo.png){ width=120px } At a high level, the tidyverse is a language for solving data science challenges with R code. Its primary goal is to facilitate a conversation between a human and a computer about data. Less abstractly, the tidyverse is a collection of R packages that share a high-level design philosophy and low-level grammar and data structures, so that learning one package makes it easier to learn the next. The tidyverse encompasses the repeated tasks at the heart of every data science project: data import, tidying, manipulation, visualisation, and programming. We expect that almost every project will use multiple domain-specific packages outside of the tidyverse: our goal is to provide tooling for the most common challenges; not to solve every possible problem. Notably, the tidyverse doesn't include tools for statistical modelling or communication. These toolkits are critical for data science, but are so large that they merit separate treatment. The tidyverse package allows users to install all tidyverse packages with a single command. There are a number of projects that are similar in scope to the tidyverse. The closest is perhaps Bioconductor [@Bioconductor; @Huber2015], which provides an ecosystem of packages that support the analysis of high-throughput genomic data. The tidyverse has similar goals to R itself, but any comparison to the R Project [@R-core] is fundamentally challenging as the tidyverse is written in R, and relies on R for its infrastructure; there is no tidyverse without R! That said, the biggest difference is in priorities: base R is highly focussed on stability, whereas the tidyverse will make breaking changes in the search for better interfaces. Another closely related project is data.table [@R-datatable], which provides tools roughly equivalent to the combination of dplyr, tidyr, tibble, and readr. data.table prioritises concision and performance. This paper describes the tidyverse package, the components of the tidyverse, and some of the underlying design principles. This is a lot of ground to cover in a brief paper, so we focus on a 50,000-foot view showing how all the pieces fit together with copious links to more detailed resources. # Tidyverse package The tidyverse is a collection of packages that can easily be installed with a single "meta"-package, which is called "tidyverse". This provides a convenient way of downloading and installing all tidyverse packages with a single R command: ```{r, eval = FALSE} install.packages("tidyverse") ``` The core tidyverse includes the packages that you're likely to use in everyday data analyses, and these are attached when you attach the tidyverse package: ```{r} library(tidyverse) ``` This is a convenient shortcut for attaching the core packages, produces a short report telling you which package versions you're using, and succinctly informs you of any conflicts with previously loaded packages. As of tidyverse version 1.2.0, the core packages include dplyr [@R-dplyr], forcats [@R-forcats], ggplot2 [@ggplot2], purrr [@R-purrr], readr [@R-readr], stringr [@R-stringr], tibble [@R-tibble], and tidyr [@R-tidyr]. Non-core packages are installed with `install.packages("tidyverse")`, but are not attached by `library(tidyverse)`. They play more specialised roles, so will be attached by the analyst as needed. The non-core packages are: blob [@R-blob], feather [@R-feather], jsonlite [@R-jsonlite], glue [@R-glue], googledrive [@R-googledrive], haven [@R-haven], hms [@R-hms], lubridate [@R-lubridate], magrittr [@R-magrittr], modelr [@R-modelr], readxl [@R-readxl], reprex [@R-reprex], rvest [@R-rvest], and xml2 [@R-xml2]. The tidyverse package is designed with an eye for teaching: `install.packages("tidyverse")` gets you a "batteries-included" set of 87 packages (at time of writing). This large set of dependencies means that it is not appropriate to use the tidyverse package within another package; instead, we recommend that package authors import only the specific packages that they use. # Components How do the component packages of the tidyverse fit together? We use the model of data science tools from "R for Data Science" [@r4ds]: ![](data-science.png){ width=80% } Every analysis starts with data __import__: if you can't get your data into R, you can't do data science on it! Data import takes data stored in a file, database, or behind a web API, and reads it into a data frame in R. Data import is supported by the core [readr](https://readr.tidyverse.org/) [@R-readr] package for tabular files (like csv, tsv, and fwf). Additional non-core packages, such as [readxl](https://readxl.tidyverse.org) [@R-readxl], [haven](https://haven.tidyverse.org) [@R-haven], [googledrive](https://googledrive.tidyverse.org/) [@R-googledrive], and [rvest](https://rvest.tidyverse.org/) [@R-rvest], make it possible to import data stored in other common formats or directly from the web. Next, we recommend that you __tidy__ your data, getting it into a consistent form that makes the rest of the analysis easier. Most functions in the tidyverse work with tidy data [@tidy-data], where every column is a variable, every row is an observation, and every cell contains a single value. If your data is not already in this form (almost always!), the core [tidyr](https://tidyr.tidyverse.org/) [@R-tidyr] package provides tools to tidy it up. ```{r, include = FALSE} # Ensure pkgdown links to the right packages. library(dplyr) ``` Data __transformation__ is supported by the core [dplyr](https://dplyr.tidyverse.org/) [@R-dplyr] package. dplyr provides verbs that work with whole data frames, such as `mutate()` to create new variables, `filter()` to find observations matching given criteria, and `left_join()` and friends to combine multiple tables. dplyr is paired with packages that provide tools for specific column types: * [stringr](https://stringr.tidyverse.org) for strings. * [forcats](https://forcats.tidyverse.org) for factors, R's categorical data type. * [lubridate](https://lubridate.tidyverse.org) [@R-lubridate] for dates and date-times. * [hms](https://hms.tidyverse.org/) [@R-hms] for clock times. There are two main tools for understanding data: __visualisation__ and __modelling__. The tidyverse provides the [ggplot2](https://ggplot2.tidyverse.org/) [@ggplot2] package for visualisation. ggplot2 is a system for declaratively creating graphics, based on The Grammar of Graphics [@wilkinson2005]. You provide the data, tell ggplot2 how to map variables to aesthetics, what graphical primitives to use, and it takes care of the details. Modelling is outside the scope of this paper, but is part of the closely affiliated [tidymodels](https://github.com/tidymodels) [@R-tidymodels] project, which shares interface design and data structures with the tidyverse. Finally, you'll need to communicate your results to someone else. __Communication__ is one of the most important parts of data science, but is not included within tidyverse. Instead, we expect people will use other R packages, like [rmarkdown](https://rmarkdown.rstudio.com/) [@R-rmarkdown] and [shiny](https://shiny.rstudio.com/) [@R-shiny], which support dozens of static and dynamic output formats. Surrounding all these tools is __programming__. Programming is a cross-cutting tool that you use in every part of a data science project. Programming tools in the tidyverse include: * [purrr](https://purrr.tidyverse.org/) [@R-purrr], which enhances R’s functional programming toolkit. * [tibble](https://tibble.tidyverse.org/) [@R-tibble], which provides a modern re-imagining of the venerable data frame, keeping what time has proven to be effective, and throwing out what it has not. * [reprex](https://reprex.tidyverse.org/) [@R-reprex], which helps programmers get help when they get stuck by easing the creation of reproducible examples. * [magrittr](https://magrittr.tidyverse.org) [@R-magrittr], which provides the pipe operator, `%>%`, used throughout the tidyverse. The pipe is a tool for function composition, making it easier to solve large problems by breaking them into small pieces. # Design principles We are still working to explicitly describe the unifying principles that make the tidyverse consistent, but you can read our latest thoughts at . There is one particularly important principle that we want to call out here: the tidyverse is fundamentally __human centred__. That is, the tidyverse is designed to support the activities of a human data analyst, so to be effective tool builders, we must explicitly recognise and acknowledge the strengths and weaknesses of human cognition. This is particularly important for R, because it’s a language that’s used primarily by non-programmers, and we want to make it as easy as possible for first-time and end-user programmers to learn the tidyverse. We believe deeply in the motivations that lead to the creation of S: "to turn ideas into software, quickly and faithfully" [@programming-with-data]. This means that we spend a lot of time thinking about interface design, and have recently started experimenting with [surveys](https://github.com/hadley/table-shapes) to help guide interface choices. Similarly, the tidyverse is not just the collection of packages --- it is also the community of people who use them. We want the tidyverse to be a diverse, inclusive, and welcoming community. We are still developing our skills in this area, but our existing approaches include active use of Twitter to [solicit feedback](https://twitter.com/hadleywickham/status/948722811232751617), announce updates, and generally listen to the community. We also keep users apprised of major upcoming changes through the [tidyverse blog](https://www.tidyverse.org/blog/), run [developer days](https://www.tidyverse.org/blog/2018/08/tidyverse-developer-day/), and support lively discussions on [RStudio community](https://community.rstudio.com). # Acknowledgments The tidyverse would not be possible without the immense work of the [R-core team](https://www.r-project.org/contributors.html) who maintain the R language and we are deeply indebted to them. We are also grateful for the financial support of [RStudio, Inc](https://www.rstudio.com/). # References tidyverse/inst/doc/manifesto.Rmd0000644000176200001440000001434213665266641016466 0ustar liggesusers--- title: "The tidy tools manifesto" author: "Hadley Wickham" date: "`r Sys.Date()`" output: rmarkdown::html_vignette vignette: > %\VignetteIndexEntry{The tidy tools manifesto} %\VignetteEngine{knitr::rmarkdown} %\VignetteEncoding{UTF-8} --- This document lays out the consistent principles that unify the packages in the tidyverse. The goal of these principles is to provide a uniform interface so that tidyverse packages work together naturally, and once you've mastered one, you have a head start on mastering the others. This is my first attempt at writing down these principles. That means that this manifesto is both aspirational and likely to change heavily in the future. Currently no packages precisely meet the design goals, and while the underlying ideas are stable, I expect their expression in prose will change substantially as I struggle to make explicit my process and thinking. There are many other excellent packages that are not part of the tidyverse, because they are designed with a different set of underlying principles. This doesn't make them better or worse, just different. In other words, the complement to the tidyverse is not the **messy**verse, but many other universes of interrelated packages. There are four basic principles to a tidy API: 1. Reuse existing data structures. 1. Compose simple functions with the pipe. 1. Embrace functional programming. 1. Design for humans. ## Reuse existing data structures Where possible, re-use existing data structures, rather than creating custom data structures for your own package. Generally, I think it's better to prefer common existing data structures over custom data structures, even if slightly ill-fitting. Many R packages (e.g. ggplot2, dplyr, tidyr) work with rectangular datasets made up of observations and variables. If this is true for your package, work with data in either a data frame or [tibble](https://github.com/tidyverse/tibble). Assume the data is tidy, with variables in the columns, and observations in the rows (see [_Tidy Data_](https://www.jstatsoft.org/article/view/v059i10) for more details). Some packages work at a lower level, focussing on a single type of variable. For example, __stringr__ for strings, __lubridate__ for date/times, and __forcats__ for factors. Generally prefer existing base R vector types, but when this is not possible, create your own using an S3 class built on top of an atomic vector or list. If you need "non-standard scoping", where you refer to variables inside a data frame as if they are in the global environment, prefer tidy evaluation over non-standard evaluation. See the examples in [Tidy evaluation](https://tidyeval.tidyverse.org) and [the metaprogramming chapters in Advanced R](https://adv-r.hadley.nz/meta-big-picture.html) for more details. ## Compose simple functions with the pipe > No matter how complex and polished the individual operations are, > it is often the quality of the glue that most directly determines > the power of the system. > > --- Hal Abelson A powerful strategy for solving complex problems is to combine many simple pieces. Each piece should be easily understood in isolation, and have a standard way to combine with other pieces. In R, this strategy plays out by composing single functions with the pipe. The pipe, `%>%`, is a common composition tool that works across all packages. Some things to bear in mind when writing functions: * Strive to keep functions as simple as possible (but no simpler!). Generally, each function should do one thing well, and you should be able to describe the purpose of the function in one sentence. * Avoid mixing side-effects with transformations. Ensure each function either returns an object, or has a side-effect. Don't do both. (This is a slight simplification: functions called primarily for their side-effects should return the primary input invisibly so that they can still be combined in a pipeline.) * Function names should be verbs. The exception is when many functions use the same verb (typically something like "modify", or "add", or "compute"). In that case, avoid duplicating the common verb, and instead focus on the noun. A good example of this is ggplot2: almost every function adds something to an existing plot. An advantage of a pipeable API is that it is not compulsory: if you do not like using the pipe, you can compose functions in whatever way you prepare. Compare this to an operator-overloading approach (such as the `+` in ggplot2), or an object-composition approach (such as the `...` approach in httr). ## Embrace functional programming R is a functional programming language; embrace it, don't fight it. If you're familiar with an object-oriented language like Python or C#, this is going to take some adjustment. But in the long run you will be much better off working with the language, rather than fighting it. Generally, this means you should favour: * Immutable objects and copy-on-modify semantics. This makes your code easier to reason about. * The generic functions provided by S3 and S4. These work very naturally inside a pipe. If you do need mutable state, try to make it an internal implementation detail, rather than exposing it to the user. * Tools that abstract over for-loops, like the apply family of functions or the map functions in purrr. ## Design for humans > Programs must be written for people to read, and only incidentally > for machines to execute. > > --- Hal Abelson Design your API primarily so that it is easy to use by humans. Computer efficiency is a secondary concern because the bottleneck in most data analysis is thinking time, not computing time. * Invest time in naming your functions. Evocative function names make your API easier to use and remember. * Favour explicit, lengthy names, over short, implicit, names. Save the shortest names for the most important operations. * Think about how autocomplete can also make an API that's easy to write. Make sure that function families are identified by a common prefix, not a common suffix. This makes autocomplete more helpful, as you can jog your memory with the prompts. For smaller packages, this may mean that every function has a common prefix (e.g. stringr, xml2, rvest). tidyverse/inst/CITATION0000644000176200001440000000135013565100743014405 0ustar liggesusersbibentry( "Article", title = "Welcome to the {tidyverse}", author = "Hadley Wickham, Mara Averick, Jennifer Bryan, Winston Chang, Lucy D'Agostino McGowan, Romain François, Garrett Grolemund, Alex Hayes, Lionel Henry, Jim Hester, Max Kuhn, Thomas Lin Pedersen, Evan Miller, Stephan Milton Bache, Kirill Müller, Jeroen Ooms, David Robinson, Dana Paige Seidel, Vitalie Spinu, Kohske Takahashi, Davis Vaughan, Claus Wilke, Kara Woo, Hiroaki Yutani", year = 2019, journal = "Journal of Open Source Software", volume = 4, number = 43, pages = 1686, doi = "10.21105/joss.01686", textVersion = "Wickham et al., (2019). Welcome to the tidyverse. Journal of Open Source Software, 4(43), 1686, https://doi.org/10.21105/joss.01686" )