tidyverse/0000755000176200001440000000000013565420332012273 5ustar liggesuserstidyverse/NAMESPACE0000644000176200001440000000143413565047045013522 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/LICENSE0000644000176200001440000010413012775005145013302 0ustar liggesusersGNU General Public License ========================== _Version 3, 29 June 2007_ _Copyright © 2007 Free Software Foundation, Inc. <>_ Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. ## Preamble The GNU General Public License is a free, copyleft license for software and other kinds of works. The licenses for most software and other practical works are designed to take away your freedom to share and change the works. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change all versions of a program--to make sure it remains free software for all its users. We, the Free Software Foundation, use the GNU General Public License for most of our software; it applies also to any other work released this way by its authors. You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for them if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs, and that you know you can do these things. To protect your rights, we need to prevent others from denying you these rights or asking you to surrender the rights. Therefore, you have certain responsibilities if you distribute copies of the software, or if you modify it: responsibilities to respect the freedom of others. For example, if you distribute copies of such a program, whether gratis or for a fee, you must pass on to the recipients the same freedoms that you received. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. Developers that use the GNU GPL protect your rights with two steps: **(1)** assert copyright on the software, and **(2)** offer you this License giving you legal permission to copy, distribute and/or modify it. For the developers' and authors' protection, the GPL clearly explains that there is no warranty for this free software. For both users' and authors' sake, the GPL requires that modified versions be marked as changed, so that their problems will not be attributed erroneously to authors of previous versions. Some devices are designed to deny users access to install or run modified versions of the software inside them, although the manufacturer can do so. This is fundamentally incompatible with the aim of protecting users' freedom to change the software. The systematic pattern of such abuse occurs in the area of products for individuals to use, which is precisely where it is most unacceptable. Therefore, we have designed this version of the GPL to prohibit the practice for those products. If such problems arise substantially in other domains, we stand ready to extend this provision to those domains in future versions of the GPL, as needed to protect the freedom of users. Finally, every program is threatened constantly by software patents. States should not allow patents to restrict development and use of software on general-purpose computers, but in those that do, we wish to avoid the special danger that patents applied to a free program could make it effectively proprietary. To prevent this, the GPL assures that patents cannot be used to render the program non-free. The precise terms and conditions for copying, distribution and modification follow. ## TERMS AND CONDITIONS ### 0. Definitions “This License” refers to version 3 of the GNU General Public License. “Copyright” also means copyright-like laws that apply to other kinds of works, such as semiconductor masks. “The Program” refers to any copyrightable work licensed under this License. Each licensee is addressed as “you”. “Licensees” and “recipients” may be individuals or organizations. To “modify” a work means to copy from or adapt all or part of the work in a fashion requiring copyright permission, other than the making of an exact copy. The resulting work is called a “modified version” of the earlier work or a work “based on” the earlier work. A “covered work” means either the unmodified Program or a work based on the Program. To “propagate” a work means to do anything with it that, without permission, would make you directly or secondarily liable for infringement under applicable copyright law, except executing it on a computer or modifying a private copy. Propagation includes copying, distribution (with or without modification), making available to the public, and in some countries other activities as well. To “convey” a work means any kind of propagation that enables other parties to make or receive copies. Mere interaction with a user through a computer network, with no transfer of a copy, is not conveying. An interactive user interface displays “Appropriate Legal Notices” to the extent that it includes a convenient and prominently visible feature that **(1)** displays an appropriate copyright notice, and **(2)** tells the user that there is no warranty for the work (except to the extent that warranties are provided), that licensees may convey the work under this License, and how to view a copy of this License. If the interface presents a list of user commands or options, such as a menu, a prominent item in the list meets this criterion. ### 1. Source Code The “source code” for a work means the preferred form of the work for making modifications to it. “Object code” means any non-source form of a work. A “Standard Interface” means an interface that either is an official standard defined by a recognized standards body, or, in the case of interfaces specified for a particular programming language, one that is widely used among developers working in that language. The “System Libraries” of an executable work include anything, other than the work as a whole, that **(a)** is included in the normal form of packaging a Major Component, but which is not part of that Major Component, and **(b)** serves only to enable use of the work with that Major Component, or to implement a Standard Interface for which an implementation is available to the public in source code form. A “Major Component”, in this context, means a major essential component (kernel, window system, and so on) of the specific operating system (if any) on which the executable work runs, or a compiler used to produce the work, or an object code interpreter used to run it. The “Corresponding Source” for a work in object code form means all the source code needed to generate, install, and (for an executable work) run the object code and to modify the work, including scripts to control those activities. However, it does not include the work's System Libraries, or general-purpose tools or generally available free programs which are used unmodified in performing those activities but which are not part of the work. For example, Corresponding Source includes interface definition files associated with source files for the work, and the source code for shared libraries and dynamically linked subprograms that the work is specifically designed to require, such as by intimate data communication or control flow between those subprograms and other parts of the work. The Corresponding Source need not include anything that users can regenerate automatically from other parts of the Corresponding Source. The Corresponding Source for a work in source code form is that same work. ### 2. Basic Permissions All rights granted under this License are granted for the term of copyright on the Program, and are irrevocable provided the stated conditions are met. This License explicitly affirms your unlimited permission to run the unmodified Program. The output from running a covered work is covered by this License only if the output, given its content, constitutes a covered work. This License acknowledges your rights of fair use or other equivalent, as provided by copyright law. You may make, run and propagate covered works that you do not convey, without conditions so long as your license otherwise remains in force. You may convey covered works to others for the sole purpose of having them make modifications exclusively for you, or provide you with facilities for running those works, provided that you comply with the terms of this License in conveying all material for which you do not control copyright. Those thus making or running the covered works for you must do so exclusively on your behalf, under your direction and control, on terms that prohibit them from making any copies of your copyrighted material outside their relationship with you. Conveying under any other circumstances is permitted solely under the conditions stated below. Sublicensing is not allowed; section 10 makes it unnecessary. ### 3. Protecting Users' Legal Rights From Anti-Circumvention Law No covered work shall be deemed part of an effective technological measure under any applicable law fulfilling obligations under article 11 of the WIPO copyright treaty adopted on 20 December 1996, or similar laws prohibiting or restricting circumvention of such measures. When you convey a covered work, you waive any legal power to forbid circumvention of technological measures to the extent such circumvention is effected by exercising rights under this License with respect to the covered work, and you disclaim any intention to limit operation or modification of the work as a means of enforcing, against the work's users, your or third parties' legal rights to forbid circumvention of technological measures. ### 4. Conveying Verbatim Copies You may convey verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice; keep intact all notices stating that this License and any non-permissive terms added in accord with section 7 apply to the code; keep intact all notices of the absence of any warranty; and give all recipients a copy of this License along with the Program. You may charge any price or no price for each copy that you convey, and you may offer support or warranty protection for a fee. ### 5. Conveying Modified Source Versions You may convey a work based on the Program, or the modifications to produce it from the Program, in the form of source code under the terms of section 4, provided that you also meet all of these conditions: * **a)** The work must carry prominent notices stating that you modified it, and giving a relevant date. * **b)** The work must carry prominent notices stating that it is released under this License and any conditions added under section 7. This requirement modifies the requirement in section 4 to “keep intact all notices”. * **c)** You must license the entire work, as a whole, under this License to anyone who comes into possession of a copy. This License will therefore apply, along with any applicable section 7 additional terms, to the whole of the work, and all its parts, regardless of how they are packaged. This License gives no permission to license the work in any other way, but it does not invalidate such permission if you have separately received it. * **d)** If the work has interactive user interfaces, each must display Appropriate Legal Notices; however, if the Program has interactive interfaces that do not display Appropriate Legal Notices, your work need not make them do so. A compilation of a covered work with other separate and independent works, which are not by their nature extensions of the covered work, and which are not combined with it such as to form a larger program, in or on a volume of a storage or distribution medium, is called an “aggregate” if the compilation and its resulting copyright are not used to limit the access or legal rights of the compilation's users beyond what the individual works permit. Inclusion of a covered work in an aggregate does not cause this License to apply to the other parts of the aggregate. ### 6. Conveying Non-Source Forms You may convey a covered work in object code form under the terms of sections 4 and 5, provided that you also convey the machine-readable Corresponding Source under the terms of this License, in one of these ways: * **a)** Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by the Corresponding Source fixed on a durable physical medium customarily used for software interchange. * **b)** Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by a written offer, valid for at least three years and valid for as long as you offer spare parts or customer support for that product model, to give anyone who possesses the object code either **(1)** a copy of the Corresponding Source for all the software in the product that is covered by this License, on a durable physical medium customarily used for software interchange, for a price no more than your reasonable cost of physically performing this conveying of source, or **(2)** access to copy the Corresponding Source from a network server at no charge. * **c)** Convey individual copies of the object code with a copy of the written offer to provide the Corresponding Source. This alternative is allowed only occasionally and noncommercially, and only if you received the object code with such an offer, in accord with subsection 6b. * **d)** Convey the object code by offering access from a designated place (gratis or for a charge), and offer equivalent access to the Corresponding Source in the same way through the same place at no further charge. You need not require recipients to copy the Corresponding Source along with the object code. If the place to copy the object code is a network server, the Corresponding Source may be on a different server (operated by you or a third party) that supports equivalent copying facilities, provided you maintain clear directions next to the object code saying where to find the Corresponding Source. Regardless of what server hosts the Corresponding Source, you remain obligated to ensure that it is available for as long as needed to satisfy these requirements. * **e)** Convey the object code using peer-to-peer transmission, provided you inform other peers where the object code and Corresponding Source of the work are being offered to the general public at no charge under subsection 6d. A separable portion of the object code, whose source code is excluded from the Corresponding Source as a System Library, need not be included in conveying the object code work. A “User Product” is either **(1)** a “consumer product”, which means any tangible personal property which is normally used for personal, family, or household purposes, or **(2)** anything designed or sold for incorporation into a dwelling. In determining whether a product is a consumer product, doubtful cases shall be resolved in favor of coverage. For a particular product received by a particular user, “normally used” refers to a typical or common use of that class of product, regardless of the status of the particular user or of the way in which the particular user actually uses, or expects or is expected to use, the product. A product is a consumer product regardless of whether the product has substantial commercial, industrial or non-consumer uses, unless such uses represent the only significant mode of use of the product. “Installation Information” for a User Product means any methods, procedures, authorization keys, or other information required to install and execute modified versions of a covered work in that User Product from a modified version of its Corresponding Source. The information must suffice to ensure that the continued functioning of the modified object code is in no case prevented or interfered with solely because modification has been made. If you convey an object code work under this section in, or with, or specifically for use in, a User Product, and the conveying occurs as part of a transaction in which the right of possession and use of the User Product is transferred to the recipient in perpetuity or for a fixed term (regardless of how the transaction is characterized), the Corresponding Source conveyed under this section must be accompanied by the Installation Information. But this requirement does not apply if neither you nor any third party retains the ability to install modified object code on the User Product (for example, the work has been installed in ROM). The requirement to provide Installation Information does not include a requirement to continue to provide support service, warranty, or updates for a work that has been modified or installed by the recipient, or for the User Product in which it has been modified or installed. Access to a network may be denied when the modification itself materially and adversely affects the operation of the network or violates the rules and protocols for communication across the network. Corresponding Source conveyed, and Installation Information provided, in accord with this section must be in a format that is publicly documented (and with an implementation available to the public in source code form), and must require no special password or key for unpacking, reading or copying. ### 7. Additional Terms “Additional permissions” are terms that supplement the terms of this License by making exceptions from one or more of its conditions. Additional permissions that are applicable to the entire Program shall be treated as though they were included in this License, to the extent that they are valid under applicable law. If additional permissions apply only to part of the Program, that part may be used separately under those permissions, but the entire Program remains governed by this License without regard to the additional permissions. When you convey a copy of a covered work, you may at your option remove any additional permissions from that copy, or from any part of it. (Additional permissions may be written to require their own removal in certain cases when you modify the work.) You may place additional permissions on material, added by you to a covered work, for which you have or can give appropriate copyright permission. Notwithstanding any other provision of this License, for material you add to a covered work, you may (if authorized by the copyright holders of that material) supplement the terms of this License with terms: * **a)** Disclaiming warranty or limiting liability differently from the terms of sections 15 and 16 of this License; or * **b)** Requiring preservation of specified reasonable legal notices or author attributions in that material or in the Appropriate Legal Notices displayed by works containing it; or * **c)** Prohibiting misrepresentation of the origin of that material, or requiring that modified versions of such material be marked in reasonable ways as different from the original version; or * **d)** Limiting the use for publicity purposes of names of licensors or authors of the material; or * **e)** Declining to grant rights under trademark law for use of some trade names, trademarks, or service marks; or * **f)** Requiring indemnification of licensors and authors of that material by anyone who conveys the material (or modified versions of it) with contractual assumptions of liability to the recipient, for any liability that these contractual assumptions directly impose on those licensors and authors. All other non-permissive additional terms are considered “further restrictions” within the meaning of section 10. If the Program as you received it, or any part of it, contains a notice stating that it is governed by this License along with a term that is a further restriction, you may remove that term. If a license document contains a further restriction but permits relicensing or conveying under this License, you may add to a covered work material governed by the terms of that license document, provided that the further restriction does not survive such relicensing or conveying. If you add terms to a covered work in accord with this section, you must place, in the relevant source files, a statement of the additional terms that apply to those files, or a notice indicating where to find the applicable terms. Additional terms, permissive or non-permissive, may be stated in the form of a separately written license, or stated as exceptions; the above requirements apply either way. ### 8. Termination You may not propagate or modify a covered work except as expressly provided under this License. Any attempt otherwise to propagate or modify it is void, and will automatically terminate your rights under this License (including any patent licenses granted under the third paragraph of section 11). However, if you cease all violation of this License, then your license from a particular copyright holder is reinstated **(a)** provisionally, unless and until the copyright holder explicitly and finally terminates your license, and **(b)** permanently, if the copyright holder fails to notify you of the violation by some reasonable means prior to 60 days after the cessation. Moreover, your license from a particular copyright holder is reinstated permanently if the copyright holder notifies you of the violation by some reasonable means, this is the first time you have received notice of violation of this License (for any work) from that copyright holder, and you cure the violation prior to 30 days after your receipt of the notice. Termination of your rights under this section does not terminate the licenses of parties who have received copies or rights from you under this License. If your rights have been terminated and not permanently reinstated, you do not qualify to receive new licenses for the same material under section 10. ### 9. Acceptance Not Required for Having Copies You are not required to accept this License in order to receive or run a copy of the Program. Ancillary propagation of a covered work occurring solely as a consequence of using peer-to-peer transmission to receive a copy likewise does not require acceptance. However, nothing other than this License grants you permission to propagate or modify any covered work. These actions infringe copyright if you do not accept this License. Therefore, by modifying or propagating a covered work, you indicate your acceptance of this License to do so. ### 10. Automatic Licensing of Downstream Recipients Each time you convey a covered work, the recipient automatically receives a license from the original licensors, to run, modify and propagate that work, subject to this License. You are not responsible for enforcing compliance by third parties with this License. An “entity transaction” is a transaction transferring control of an organization, or substantially all assets of one, or subdividing an organization, or merging organizations. If propagation of a covered work results from an entity transaction, each party to that transaction who receives a copy of the work also receives whatever licenses to the work the party's predecessor in interest had or could give under the previous paragraph, plus a right to possession of the Corresponding Source of the work from the predecessor in interest, if the predecessor has it or can get it with reasonable efforts. You may not impose any further restrictions on the exercise of the rights granted or affirmed under this License. For example, you may not impose a license fee, royalty, or other charge for exercise of rights granted under this License, and you may not initiate litigation (including a cross-claim or counterclaim in a lawsuit) alleging that any patent claim is infringed by making, using, selling, offering for sale, or importing the Program or any portion of it. ### 11. Patents A “contributor” is a copyright holder who authorizes use under this License of the Program or a work on which the Program is based. The work thus licensed is called the contributor's “contributor version”. A contributor's “essential patent claims” are all patent claims owned or controlled by the contributor, whether already acquired or hereafter acquired, that would be infringed by some manner, permitted by this License, of making, using, or selling its contributor version, but do not include claims that would be infringed only as a consequence of further modification of the contributor version. For purposes of this definition, “control” includes the right to grant patent sublicenses in a manner consistent with the requirements of this License. Each contributor grants you a non-exclusive, worldwide, royalty-free patent license under the contributor's essential patent claims, to make, use, sell, offer for sale, import and otherwise run, modify and propagate the contents of its contributor version. In the following three paragraphs, a “patent license” is any express agreement or commitment, however denominated, not to enforce a patent (such as an express permission to practice a patent or covenant not to sue for patent infringement). To “grant” such a patent license to a party means to make such an agreement or commitment not to enforce a patent against the party. If you convey a covered work, knowingly relying on a patent license, and the Corresponding Source of the work is not available for anyone to copy, free of charge and under the terms of this License, through a publicly available network server or other readily accessible means, then you must either **(1)** cause the Corresponding Source to be so available, or **(2)** arrange to deprive yourself of the benefit of the patent license for this particular work, or **(3)** arrange, in a manner consistent with the requirements of this License, to extend the patent license to downstream recipients. “Knowingly relying” means you have actual knowledge that, but for the patent license, your conveying the covered work in a country, or your recipient's use of the covered work in a country, would infringe one or more identifiable patents in that country that you have reason to believe are valid. If, pursuant to or in connection with a single transaction or arrangement, you convey, or propagate by procuring conveyance of, a covered work, and grant a patent license to some of the parties receiving the covered work authorizing them to use, propagate, modify or convey a specific copy of the covered work, then the patent license you grant is automatically extended to all recipients of the covered work and works based on it. A patent license is “discriminatory” if it does not include within the scope of its coverage, prohibits the exercise of, or is conditioned on the non-exercise of one or more of the rights that are specifically granted under this License. You may not convey a covered work if you are a party to an arrangement with a third party that is in the business of distributing software, under which you make payment to the third party based on the extent of your activity of conveying the work, and under which the third party grants, to any of the parties who would receive the covered work from you, a discriminatory patent license **(a)** in connection with copies of the covered work conveyed by you (or copies made from those copies), or **(b)** primarily for and in connection with specific products or compilations that contain the covered work, unless you entered into that arrangement, or that patent license was granted, prior to 28 March 2007. Nothing in this License shall be construed as excluding or limiting any implied license or other defenses to infringement that may otherwise be available to you under applicable patent law. ### 12. No Surrender of Others' Freedom If conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot convey a covered work so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not convey it at all. For example, if you agree to terms that obligate you to collect a royalty for further conveying from those to whom you convey the Program, the only way you could satisfy both those terms and this License would be to refrain entirely from conveying the Program. ### 13. Use with the GNU Affero General Public License Notwithstanding any other provision of this License, you have permission to link or combine any covered work with a work licensed under version 3 of the GNU Affero General Public License into a single combined work, and to convey the resulting work. The terms of this License will continue to apply to the part which is the covered work, but the special requirements of the GNU Affero General Public License, section 13, concerning interaction through a network will apply to the combination as such. ### 14. Revised Versions of this License The Free Software Foundation may publish revised and/or new versions of the GNU General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies that a certain numbered version of the GNU General Public License “or any later version” applies to it, you have the option of following the terms and conditions either of that numbered version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of the GNU General Public License, you may choose any version ever published by the Free Software Foundation. If the Program specifies that a proxy can decide which future versions of the GNU General Public License can be used, that proxy's public statement of acceptance of a version permanently authorizes you to choose that version for the Program. Later license versions may give you additional or different permissions. However, no additional obligations are imposed on any author or copyright holder as a result of your choosing to follow a later version. ### 15. Disclaimer of Warranty THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM “AS IS” WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. ### 16. Limitation of Liability IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. ### 17. Interpretation of Sections 15 and 16 If the disclaimer of warranty and limitation of liability provided above cannot be given local legal effect according to their terms, reviewing courts shall apply local law that most closely approximates an absolute waiver of all civil liability in connection with the Program, unless a warranty or assumption of liability accompanies a copy of the Program in return for a fee. _END OF TERMS AND CONDITIONS_ ## How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively state the exclusion of warranty; and each file should have at least the “copyright” line and a pointer to where the full notice is found. Copyright (C) This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . Also add information on how to contact you by electronic and paper mail. If the program does terminal interaction, make it output a short notice like this when it starts in an interactive mode: Copyright (C) This program comes with ABSOLUTELY NO WARRANTY; for details type 'show w'. This is free software, and you are welcome to redistribute it under certain conditions; type 'show c' for details. The hypothetical commands `show w` and `show c` should show the appropriate parts of the General Public License. Of course, your program's commands might be different; for a GUI interface, you would use an “about box”. You should also get your employer (if you work as a programmer) or school, if any, to sign a “copyright disclaimer” for the program, if necessary. For more information on this, and how to apply and follow the GNU GPL, see <>. The GNU General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. But first, please read <>. tidyverse/README.md0000644000176200001440000001205413561360544013560 0ustar liggesusers # tidyverse [![CRAN status](https://www.r-pkg.org/badges/version/tidyverse)](https://cran.r-project.org/package=tidyverse) [![Travis build status](https://travis-ci.org/tidyverse/tidyverse.svg?branch=master)](https://travis-ci.org/tidyverse/tidyverse) [![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](http://r4ds.had.co.nz). ## Installation ``` r # Install from CRAN install.packages("tidyverse") # Or the development version from GitHub # install.packages("devtools") devtools::install_github("hadley/tidyverse") ``` ## Usage `library(tidyverse)` will load the core tidyverse packages: - [ggplot2](http://ggplot2.tidyverse.org), for data visualisation. - [dplyr](http://dplyr.tidyverse.org), for data manipulation. - [tidyr](http://tidyr.tidyverse.org), for data tidying. - [readr](http://readr.tidyverse.org), for data import. - [purrr](http://purrr.tidyverse.org), for functional programming. - [tibble](http://tibble.tidyverse.org), for tibbles, a modern re-imagining of data frames. - [stringr](https://github.com/tidyverse/stringr), for strings. - [forcats](https://github.com/hadley/forcats), for factors. You also get a condensed summary of conflicts with other packages you have loaded: ``` r library(tidyverse) #> ── Attaching packages ────────────────────────────────────────────────────────────────────── tidyverse 1.2.1.9000 ── #> ✔ ggplot2 3.0.0 ✔ purrr 0.2.5 #> ✔ tibble 1.4.99.9005 ✔ dplyr 0.7.99.9000 #> ✔ tidyr 0.8.1 ✔ stringr 1.3.1 #> ✔ readr 1.1.1 ✔ forcats 0.3.0 #> ── Conflicts ────────────────────────────────────────────────────────────────────────────── tidyverse_conflicts() ── #> ✖ dplyr::filter() masks stats::filter() #> ✖ 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() ── #> ✖ dplyr::filter() masks stats::filter() #> ✖ dplyr::lag() masks stats::lag() #> ✖ 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/rstats-db/hms), for times. - [lubridate](https://github.com/hadley/lubridate), for date/times. - Importing other types of data: - [feather](http://github.com/wesm/feather), for sharing with Python and other languages. - [haven](https://github.com/hadley/haven), for SPSS, SAS and Stata files. - [httr](https://github.com/hadley/httr), for web apis. - [jsonlite](https://github.com/jeroenooms/jsonlite) for JSON. - [readxl](https://github.com/hadley/readxl), for `.xls` and `.xlsx` files. - [rvest](https://github.com/hadley/rvest), for web scraping. - [xml2](https://github.com/hadley/xml2), for XML. - Modelling - [modelr](https://github.com/hadley/modelr), for modelling within a pipeline - [broom](https://github.com/dgrtwo/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/0000755000176200001440000000000013565101104013037 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.Rd0000644000176200001440000000177413564620071016756 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{http://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/DESCRIPTION0000644000176200001440000000330013565420332013775 0ustar liggesusersPackage: tidyverse Title: Easily Install and Load the 'Tidyverse' Version: 1.3.0 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: GPL-3 | file LICENSE URL: http://tidyverse.tidyverse.org, https://github.com/tidyverse/tidyverse BugReports: https://github.com/tidyverse/tidyverse/issues Depends: R (>= 3.2) Imports: broom (>= 0.5.2), cli (>= 1.1.0), crayon (>= 1.3.4), dbplyr (>= 1.4.2), dplyr (>= 0.8.3), forcats (>= 0.4.0), ggplot2 (>= 3.2.1), haven (>= 2.2.0), hms (>= 0.5.2), httr (>= 1.4.1), jsonlite (>= 1.6), lubridate (>= 1.7.4), magrittr (>= 1.5), modelr (>= 0.1.5), pillar (>= 1.4.2), purrr (>= 0.3.3), readr (>= 1.3.1), readxl (>= 1.3.1), reprex (>= 0.3.0), rlang (>= 0.4.1), rstudioapi (>= 0.10), rvest (>= 0.3.5), stringr (>= 1.4.0), tibble (>= 2.1.3), tidyr (>= 1.0.0), xml2 (>= 1.2.2) Suggests: covr, feather, glue, knitr, rmarkdown, testthat VignetteBuilder: knitr Encoding: UTF-8 LazyData: true RoxygenNote: 7.0.0 NeedsCompilation: no Packaged: 2019-11-20 00:01:12 UTC; hadley Author: Hadley Wickham [aut, cre], RStudio [cph, fnd] Maintainer: Hadley Wickham Repository: CRAN Date/Publication: 2019-11-21 05:30:02 UTC tidyverse/build/0000755000176200001440000000000013565101102013361 5ustar liggesuserstidyverse/build/vignette.rds0000644000176200001440000000035113565101102015717 0ustar liggesusersuM 0?-(B7.{Bܸt$ҝ'uVp33;nj1 X y" +Qu:;`TLԉMҦ~y =:udstJ_g{233 cү_6Fͤ ,-í G"o4>jrKrPdtcg.[8gB0tidyverse/tests/0000755000176200001440000000000013465363413013442 5ustar liggesuserstidyverse/tests/testthat/0000755000176200001440000000000013565420332015275 5ustar liggesuserstidyverse/tests/testthat/test-utils.R0000644000176200001440000000031013465363413017534 0ustar liggesuserscontext("test-utils.R") test_that("tidyverse packages returns character vector of package names", { out <- tidyverse_packages() expect_type(out, "character") expect_true("ggplot2" %in% out) }) tidyverse/tests/testthat.R0000644000176200001440000000007613465363413015430 0ustar liggesuserslibrary(testthat) library(tidyverse) test_check("tidyverse") tidyverse/vignettes/0000755000176200001440000000000013565101110014271 5ustar liggesuserstidyverse/vignettes/review-jeffreyhanson.md0000644000176200001440000001752513561360544021003 0ustar liggesusers> 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.Rmd0000644000176200001440000003226213565047111016063 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/articles/), run [developer days](https://www.tidyverse.org/articles/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.bib0000644000176200001440000002234013564610233016071 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 = {http://www.nature.com/nmeth/journal/v12/n2/full/nmeth.3252.html}, } @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.Rmd0000644000176200001440000001434013505647641016746 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/hadley/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/0000755000176200001440000000000013565042265012501 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.R0000644000176200001440000000616513564620067014117 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.md0000644000176200001440000000615113565047667013414 0ustar liggesusers# tidyverse 1.3.0 * The tidyverse now has an associated paper at the [Journal of Open Source Software](http://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 conflited shims (#136). * `tidyverse_deps()` now succeeds even if a dependency of a depedency 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()` corrently returns packages names (#93, #106, @coatless) * `tidyverse_sitrep()` gives you a situtation 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/MD50000644000176200001440000000374213565420332012611 0ustar liggesusers7f164a4064f5bed30f6eb3a2160eb8b5 *DESCRIPTION 29a9012941a6bcb26bf0fb4382c5dd75 *LICENSE f5f79a80babc026ec45820831b75e0ff *NAMESPACE daf420ba985a342daee5144af212816d *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 1cb482ca465a2a2e9a0bc6cc83cc2e23 *README.md 12b1df218f11430f0cf409864d819d81 *build/vignette.rds 093b67e1a409ad67a2fe37990f7f5feb *inst/CITATION c3dfb29cf6b905026f343eddb4903085 *inst/doc/manifesto.Rmd c1de469eb48b2893a3e0138de4ad7509 *inst/doc/manifesto.html 60129ea523691e042c0174482bd3578d *inst/doc/paper.R e969fb7a4b79b46aeb4c094082c2f87b *inst/doc/paper.Rmd d1d2205b69770592ce886dd64f393c58 *inst/doc/paper.html f7c787aff996e89dab2dfd867cab75bc *man/figures/logo.png ed75fb7499308ee78c8d05a133e5c4c9 *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 c3dfb29cf6b905026f343eddb4903085 *vignettes/manifesto.Rmd e969fb7a4b79b46aeb4c094082c2f87b *vignettes/paper.Rmd c58a0ba5df352410a4c63dca4861a3f8 *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/0000755000176200001440000000000013565101102013237 5ustar liggesuserstidyverse/inst/doc/0000755000176200001440000000000013565101102014004 5ustar liggesuserstidyverse/inst/doc/paper.html0000644000176200001440000170161113565101102016010 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.0 --
#> v ggplot2 3.2.1     v purrr   0.3.3
#> v tibble  2.1.3     v dplyr   0.8.3
#> v tidyr   1.0.0     v stringr 1.4.0
#> v readr   1.3.1     v forcats 0.4.0
#> -- 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. http://www.nature.com/nmeth/journal/v12/n2/full/nmeth.3252.html.

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.html0000644000176200001440000002542313565101100016663 0ustar liggesusers The tidy tools manifesto

The tidy tools manifesto

Hadley Wickham

2019-11-19

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.R0000644000176200001440000000100513565101101015231 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.Rmd0000644000176200001440000003226213565047111015575 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/articles/), run [developer days](https://www.tidyverse.org/articles/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.Rmd0000644000176200001440000001434013505647641016460 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/hadley/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" )