generics/0000755000176200001440000000000014176070372012060 5ustar liggesusersgenerics/NAMESPACE0000644000176200001440000000161014176060232013267 0ustar liggesusers# Generated by roxygen2: do not edit by hand S3method(as.difftime,default) S3method(as.factor,default) S3method(as.ordered,default) S3method(intersect,default) S3method(is.element,default) S3method(setdiff,default) S3method(setequal,default) S3method(union,default) export(accuracy) export(as.difftime) export(as.factor) export(as.ordered) export(augment) export(calculate) export(compile) export(components) export(equation) export(estfun) export(evaluate) export(explain) export(explore) export(fit) export(fit_xy) export(forecast) export(generate) export(glance) export(hypothesize) export(interpolate) export(intersect) export(is.element) export(learn) export(min_grid) export(prune) export(refit) export(required_pkgs) export(setdiff) export(setequal) export(specify) export(tidy) export(train) export(tunable) export(tune_args) export(union) export(var_imp) export(varying_args) export(visualize) generics/LICENSE0000644000176200001440000000004513747021246013063 0ustar liggesusersYEAR: 2020 COPYRIGHT HOLDER: RStudio generics/README.md0000644000176200001440000000447614176060236013350 0ustar liggesusers # generics [![R-CMD-check](https://github.com/r-lib/generics/workflows/R-CMD-check/badge.svg)](https://github.com/r-lib/generics/actions) [![Codecov test coverage](https://codecov.io/gh/r-lib/generics/branch/main/graph/badge.svg)](https://app.codecov.io/gh/r-lib/generics?branch=main) `generics` is designed to help package authors reduce dependencies by providing a set of generic methods that can be imported. For example, if a package author wanted to include a `tidy` method for their object, they would have to import the `broom` package to do so. This would work but would potentially increase the number of package dependencies required to install and/or test the package. ## Installation To install `generics` from CRAN, use: ``` r install.packages("generics") ``` To install the development version, use: ``` r install.packages("devtools") devtools::install_github("r-lib/generics") ``` ## Usage `generics` is a simple, lightweight package that contains S3 generics to be used by other packages. Some examples are: ``` r library(generics) #> #> Attaching package: 'generics' #> The following objects are masked from 'package:base': #> #> as.difftime, as.factor, as.ordered, intersect, is.element, setdiff, #> setequal, union fit #> function (object, ...) #> { #> UseMethod("fit") #> } #> #> tidy #> function (x, ...) #> { #> UseMethod("tidy") #> } #> #> ``` To use `generics` with your package, we recommend that you import and re-export the generic(s) of interest. For example, if you want to provide a method for the S3 `explain()` method, you’d using the following `roxygen2` code: ``` r #' @importFrom generics explain #' @export generics::explain ``` As an example, the [recipes](https://github.com/tidymodels/recipes) package defines a number of `tidy()` S3 methods by importing this package (whereas it previously depended on `broom`). ## Documentation When searching for help on a method that is exported from `generics` by one or more packages, using `?method` will show entries for all exported methods. If the version from `generics` is selected, the Methods section dynamically lists all specific methods exported by any loaded packages. generics/man/0000755000176200001440000000000014176060004012622 5ustar liggesusersgenerics/man/tune_args.Rd0000644000176200001440000000240414176060004015100 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/tune_args.R \name{tune_args} \alias{tune_args} \title{Determine arguments tagged for tuning} \usage{ tune_args(object, ...) } \arguments{ \item{object}{A \code{model_spec}, \code{recipe}, \code{workflow}, or other object.} \item{...}{Other arguments passed to methods.} } \value{ A tibble with columns for the parameter name (\code{name}), whether it contains \emph{any} tunable value (\code{tune}), the \code{id} for the parameter (\code{id}), and the information on where the parameter was located (\code{source}). } \description{ \code{tune_args()} takes an object such as a model specification or a recipe and returns a tibble of information on all possible tunable arguments and whether or not they are actually tunable. } \details{ The \code{source} column is determined differently for a \code{model_spec} or a \code{recipe} (with additional detail on the type). The \code{id} field has any identifier that was passed from \code{\link[tune:tune]{tune::tune()}} (e.g. \code{tune("some note")}). If no additional detail was used in that function, the \code{id} field reverts to the name of the parameters. } \section{Methods}{ \Sexpr[stage=render,results=rd]{generics:::methods_rd("tune_args")} } generics/man/fit_xy.Rd0000644000176200001440000000104013747021246014416 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/fit_xy.R \name{fit_xy} \alias{fit_xy} \title{Estimate model parameters.} \usage{ fit_xy(object, ...) } \arguments{ \item{object}{An object. See the individual method for specifics.} \item{...}{Other arguments passed to methods} } \description{ Estimates parameters for a given model from a set of data in the form of a set of predictors (\code{x}) and outcome(s) (\code{y}). } \section{Methods}{ \Sexpr[stage=render,results=rd]{generics:::methods_rd("fit_xy")} } generics/man/visualize.Rd0000644000176200001440000000066113747021246015137 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/visualize.R \name{visualize} \alias{visualize} \title{Visualize a data set or object.} \usage{ visualize(x, ...) } \arguments{ \item{x}{A data frame or other object.} \item{...}{Other arguments passed to methods} } \description{ Visualize a data set or object. } \section{Methods}{ \Sexpr[stage=render,results=rd]{generics:::methods_rd("visualize")} } generics/man/coercion-factor.Rd0000644000176200001440000000175613747021246016207 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/coercion.R \name{coercion-factor} \alias{coercion-factor} \alias{as.factor} \alias{as.ordered} \title{Factor coercion} \usage{ as.factor(x, ...) as.ordered(x, ...) } \arguments{ \item{x}{A vector of data.} \item{...}{Other arguments passed on to methods.} } \value{ For \code{as.factor()}, a factor. For \code{as.ordered()}, an ordered factor. } \description{ Coercion functions for creating factors from other existing objects. } \details{ These functions override non-generic factor coercion functions provided in base so that packages can provide methods for different data types. The default methods call the base versions. } \section{Methods}{ \subsection{\code{as.factor()}}{ \Sexpr[stage=render,results=rd]{generics:::methods_rd("as.factor")} } \subsection{\code{as.ordered()}}{ \Sexpr[stage=render,results=rd]{generics:::methods_rd("as.ordered")} } } \examples{ as.factor(letters[1:5]) as.ordered(letters[1:5]) } generics/man/augment.Rd0000644000176200001440000000112713747021246014562 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/augment.R \name{augment} \alias{augment} \title{Augment data with information from an object} \usage{ augment(x, ...) } \arguments{ \item{x}{Model object or other R object with information to append to observations.} \item{...}{Addition arguments to \code{augment} method.} } \value{ A \code{\link[tibble:tibble]{tibble::tibble()}} with information about data points. } \description{ Augment data with information from an object } \section{Methods}{ \Sexpr[stage=render,results=rd]{generics:::methods_rd("augment")} } generics/man/glance.Rd0000644000176200001440000000113513747021246014352 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/glance.R \name{glance} \alias{glance} \title{Glance at an object} \usage{ glance(x, ...) } \arguments{ \item{x}{model or other R object to convert to single-row data frame} \item{...}{other arguments passed to methods} } \description{ Construct a single row summary "glance" of a model, fit, or other object } \details{ glance methods always return either a one-row data frame (except on \code{NULL}, which returns an empty data frame) } \section{Methods}{ \Sexpr[stage=render,results=rd]{generics:::methods_rd("glance")} } generics/man/forecast.Rd0000644000176200001440000000074314176060004014723 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/forecast.R \name{forecast} \alias{forecast} \title{Forecasting from an object} \usage{ forecast(object, ...) } \arguments{ \item{object}{A model for which forecasts are required.} \item{...}{Other arguments passed to methods} } \description{ The functions allow producing forecasts based on the provided object. } \section{Methods}{ \Sexpr[stage=render,results=rd]{generics:::methods_rd("forecast")} } generics/man/fit.Rd0000644000176200001440000000071113747021246013702 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/fit.R \name{fit} \alias{fit} \title{Estimate model parameters.} \usage{ fit(object, ...) } \arguments{ \item{object}{An object. See the individual method for specifics.} \item{...}{Other arguments passed to methods} } \description{ Estimates parameters for a given model from a set of data. } \section{Methods}{ \Sexpr[stage=render,results=rd]{generics:::methods_rd("fit")} } generics/man/train.Rd0000644000176200001440000000071113747021246014235 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/train.R \name{train} \alias{train} \title{Estimate model parameters.} \usage{ train(x, ...) } \arguments{ \item{x}{An object. See the individual method for specifics.} \item{...}{other arguments passed to methods} } \description{ Estimates parameters for a given model from a set of data. } \section{Methods}{ \Sexpr[stage=render,results=rd]{generics:::methods_rd("train")} } generics/man/generics-package.Rd0000644000176200001440000000304613747037601016316 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/generics-package.R \docType{package} \name{generics-package} \alias{generics} \alias{generics-package} \title{generics: common S3 generics} \description{ These are generic functions that can be used to minimize package dependencies when multiple packages have the same method. } \details{ An attempt was made to use generic class signatures that were consistent with existing code. For example, \pkg{dplyr} and \pkg{lime} both have \code{explain()} methods that do very different things but both take \code{x} as their main object. Even though \code{x} would be different in those cases, this package provides access to the S3 generic so that other packages that may want to create \code{explain()} methods for their objects can do so without loading either of the other packages. For example, if a new \code{tidy()} method is being developed for a package, this lightweight package can be the required dependency to have access to the generic method (instead of depending on \pkg{broom} and installing its dependencies). } \seealso{ Useful links: \itemize{ \item \url{https://generics.r-lib.org} \item \url{https://github.com/r-lib/generics} \item Report bugs at \url{https://github.com/r-lib/generics/issues} } } \author{ \strong{Maintainer}: Hadley Wickham \email{hadley@rstudio.com} Authors: \itemize{ \item Max Kuhn \email{max@rstudio.com} \item Davis Vaughan \email{davis@rstudio.com} } Other contributors: \itemize{ \item RStudio [copyright holder] } } \keyword{internal} generics/man/min_grid.Rd0000644000176200001440000000143613747027223014716 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/min_grid.R \name{min_grid} \alias{min_grid} \title{Determine the minimum set of model fits} \usage{ min_grid(x, grid, ...) } \arguments{ \item{x}{A model specification.} \item{grid}{A tibble with tuning parameter combinations.} \item{...}{Not currently used.} } \value{ A tibble with the minimum tuning parameters to fit and an additional list column with the parameter combinations used for prediction. } \description{ \code{min_grid()} determines exactly what models should be fit in order to evaluate the entire set of tuning parameter combinations. This is for internal use only and the API may change in the near future. } \section{Methods}{ \Sexpr[stage=render,results=rd]{generics:::methods_rd("min_grid")} } generics/man/coercion-time-difference.Rd0000644000176200001440000000252213747021246017747 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/coercion.R \name{coercion-time-difference} \alias{coercion-time-difference} \alias{as.difftime} \alias{as.difftime.default} \title{Time difference coercion} \usage{ as.difftime(tim, ...) \method{as.difftime}{default}(tim, format = "\%X", units = "auto", ...) } \arguments{ \item{tim}{A vector specifying a time interval.} \item{...}{Other arguments passed on to methods.} \item{format}{A single character specifying the format of \code{tim} when it is a character. The default is a locale-specific time format.} \item{units}{A single character specifying units in which the results are desired. Required if \code{tim} is a numeric.} } \value{ A \code{difftime} object with an attribute indicating the units. } \description{ Coercion functions for creating \code{difftime} objects from other existing objects. } \details{ This function overrides the non-generic \code{as.difftime()} function provided in base so that packages can provide methods for different data types. The default method call the base version. } \section{Methods}{ \Sexpr[stage=render,results=rd]{generics:::methods_rd("as.difftime")} } \examples{ as.difftime(1:5, units = "secs") as.difftime(c("01:55:22", "01:55:25")) as.difftime("01", format = "\%H") as.difftime("01", format = "\%H", units = "secs") } generics/man/refit.Rd0000644000176200001440000000060213747021246014230 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/refit.R \name{refit} \alias{refit} \title{Refitting models} \usage{ refit(object, ...) } \arguments{ \item{object}{A fitted model object.} \item{...}{Other arguments passed to methods} } \description{ Refitting models } \section{Methods}{ \Sexpr[stage=render,results=rd]{generics:::methods_rd("refit")} } generics/man/tunable.Rd0000644000176200001440000000310013747021246014545 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/tunable.R \name{tunable} \alias{tunable} \title{Declare tunable parameters} \usage{ tunable(x, ...) } \arguments{ \item{x}{An object, such as a recipe, recipe step, workflow, or model specification.} \item{...}{Other arguments passed to methods} } \value{ A tibble with a column for the parameter \code{name}, information on the \emph{default} method for generating a corresponding parameter object, the \code{source} of the parameter (e.g. "recipe", etc.), and the \code{component} within the source. For the \code{component} column, a little more specificity is given about the location of the parameter (e.g. "step_normalize" or recipes or "boost_tree" for models). The \code{component_id} column contains the unique step \code{id} field or, for models, a logical for whether the model specification argument was a main parameter or one associated with the engine. } \description{ Returns information on potential hyper-parameters that can be optimized. } \details{ For a model specification, an engine must be chosen. If the object has no tunable parameters, a tibble with no rows is returned. The information about the default parameter object takes the form of a named list with an element for the function call and an optional element for the source of the function (e.g. the \code{dials} package). For model specifications, If the parameter is unknown to the underlying \code{tunable} method, a \code{NULL} is returned. } \section{Methods}{ \Sexpr[stage=render,results=rd]{generics:::methods_rd("tunable")} } generics/man/required_pkgs.Rd0000644000176200001440000000077413747021246015775 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/required_pkgs.R \name{required_pkgs} \alias{required_pkgs} \title{Determine packages required by objects} \usage{ required_pkgs(x, ...) } \arguments{ \item{x}{An object.} \item{...}{Other arguments passed to methods} } \value{ A character string of packages that are required. } \description{ Determine packages required by objects } \section{Methods}{ \Sexpr[stage=render,results=rd]{generics:::methods_rd("required_pkgs")} } generics/man/components.Rd0000644000176200001440000000143413747021246015310 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/components.R \name{components} \alias{components} \title{Extract components} \usage{ components(object, ...) } \arguments{ \item{object}{A data separable object.} \item{...}{Other arguments passed to methods} } \value{ A dataset (\code{\link[tibble:tibble]{tibble::tibble()}} or similar) containing components from the object. } \description{ \code{components} can be used to extract elements from an object. } \details{ For example, decomposition methods and some modelling techniques can be used to decompose a dataset into components of interest. This function is used to extract these components in a tidy data format. } \section{Methods}{ \Sexpr[stage=render,results=rd]{generics:::methods_rd("components")} } generics/man/explain.Rd0000644000176200001440000000066713747021246014572 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/explain.R \name{explain} \alias{explain} \title{Explain details of an object} \usage{ explain(x, ...) } \arguments{ \item{x}{An object. See the individual method for specifics.} \item{...}{other arguments passed to methods} } \description{ Explain details of an object } \section{Methods}{ \Sexpr[stage=render,results=rd]{generics:::methods_rd("explain")} } generics/man/setops.Rd0000644000176200001440000000326113747021246014440 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/sets.R \name{setops} \alias{setops} \alias{intersect} \alias{union} \alias{setdiff} \alias{setequal} \alias{is.element} \title{Set operations} \usage{ intersect(x, y, ...) union(x, y, ...) setdiff(x, y, ...) setequal(x, y, ...) is.element(el, set, ...) } \arguments{ \item{x, y}{Vectors to combine.} \item{...}{Other arguments passed on to methods.} \item{el, set}{Element and set to compare.} } \value{ For \code{union()}, \code{intersect()}, and \code{setdiff()}, a vector with all duplicate removed. For \code{setequal()} and \code{is.element()}, a logical \code{TRUE} or \code{FALSE}.` } \description{ Union (\code{union()}), intersect (\code{intersect()}), difference (\code{setdiff()}), and equality (\code{setequal()}) for two vectors representing sets. Determine membership with \code{is.element()}. } \details{ These functions override the set functions provided in base to make them generic so that packages can provide methods for different data types. The default methods call the base versions. } \section{Methods}{ \subsection{\code{intersect()}}{ \Sexpr[stage=render,results=rd]{generics:::methods_rd("intersect")} } \subsection{\code{union()}}{ \Sexpr[stage=render,results=rd]{generics:::methods_rd("union")} } \subsection{\code{setdiff()}}{ \Sexpr[stage=render,results=rd]{generics:::methods_rd("setdiff")} } \subsection{\code{setequal()}}{ \Sexpr[stage=render,results=rd]{generics:::methods_rd("setequal")} } \subsection{\code{is.element()}}{ \Sexpr[stage=render,results=rd]{generics:::methods_rd("is.element")} } } \examples{ intersect(1:5, 4:8) union(1:5, 4:8) setdiff(1:5, 4:8) setdiff(4:8, 1:5) } generics/man/explore.Rd0000644000176200001440000000125614176060004014573 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/explore.R \name{explore} \alias{explore} \title{Create an interactive visualization appropriate to a particular object type} \usage{ explore(x, ...) } \arguments{ \item{x}{A object} \item{...}{Other arguments passed to methods} } \value{ \code{NULL} (invisibly) or some other data type (e.g. tibble) depending on the application. } \description{ \code{explore()} invokes a function that starts an interactive, pre-defined widget (e.g. \code{plotly} visualization, \code{shiny} app, etc.) to investigate the results. } \section{Methods}{ \Sexpr[stage=render,results=rd]{generics:::methods_rd("explore")} } generics/man/generate.Rd0000644000176200001440000000063113747021246014713 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/generate.R \name{generate} \alias{generate} \title{Generate values based on inputs} \usage{ generate(x, ...) } \arguments{ \item{x}{An object.} \item{...}{Other arguments passed to methods} } \description{ Generate values based on inputs } \section{Methods}{ \Sexpr[stage=render,results=rd]{generics:::methods_rd("generate")} } generics/man/accuracy.Rd0000644000176200001440000000073414176060004014707 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/accuracy.R \name{accuracy} \alias{accuracy} \title{Accuracy measures for a model} \usage{ accuracy(object, ...) } \arguments{ \item{object}{A model for which forecasts are required.} \item{...}{Other arguments passed to methods} } \description{ Returns range of summary measures of the forecast accuracy. } \section{Methods}{ \Sexpr[stage=render,results=rd]{generics:::methods_rd("accuracy")} } generics/man/hypothesize.Rd0000644000176200001440000000062413747021246015476 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/hypothesize.R \name{hypothesize} \alias{hypothesize} \title{Construct hypotheses.} \usage{ hypothesize(x, ...) } \arguments{ \item{x}{An object.} \item{...}{Other arguments passed to methods} } \description{ Construct hypotheses. } \section{Methods}{ \Sexpr[stage=render,results=rd]{generics:::methods_rd("hypothesize")} } generics/man/var_imp.Rd0000644000176200001440000000072513747021246014562 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/var_imp.R \name{var_imp} \alias{var_imp} \title{Calculation of variable importance} \usage{ var_imp(object, ...) } \arguments{ \item{object}{A fitted model object.} \item{...}{Other arguments passed to methods} } \description{ A generic method for calculating variable importance for model objects. } \section{Methods}{ \Sexpr[stage=render,results=rd]{generics:::methods_rd("var_imp")} } generics/man/tidy.Rd0000644000176200001440000000107413747021246014074 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/tidy.R \name{tidy} \alias{tidy} \title{Turn an object into a tidy tibble} \usage{ tidy(x, ...) } \arguments{ \item{x}{An object to be converted into a tidy \code{\link[tibble:tibble]{tibble::tibble()}}.} \item{...}{Additional arguments to tidying method.} } \value{ A \code{\link[tibble:tibble]{tibble::tibble()}} with information about model components. } \description{ Turn an object into a tidy tibble } \section{Methods}{ \Sexpr[stage=render,results=rd]{generics:::methods_rd("tidy")} } generics/man/varying_args.Rd0000644000176200001440000000100213747021246015605 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/varying_args.R \name{varying_args} \alias{varying_args} \title{Find any arguments that are not fully specified.} \usage{ varying_args(object, ...) } \arguments{ \item{object}{An object. See the individual method for specifics.} \item{...}{Other arguments passed to methods} } \description{ Find any arguments that are not fully specified. } \section{Methods}{ \Sexpr[stage=render,results=rd]{generics:::methods_rd("varying_args")} } generics/man/specify.Rd0000644000176200001440000000064213747021246014565 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/specify.R \name{specify} \alias{specify} \title{Specify variables or other quantities.} \usage{ specify(x, ...) } \arguments{ \item{x}{An object.} \item{...}{Other arguments passed to methods} } \description{ Specify variables or other quantities. } \section{Methods}{ \Sexpr[stage=render,results=rd]{generics:::methods_rd("specify")} } generics/man/equation.Rd0000644000176200001440000000076713747021246014760 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/equation.R \name{equation} \alias{equation} \title{Model equations} \usage{ equation(object, ...) } \arguments{ \item{object}{A fitted model object.} \item{...}{Other arguments passed to methods} } \value{ Markup output suitable for rendering the equation. } \description{ Display the mathematical representation of a fitted model. } \section{Methods}{ \Sexpr[stage=render,results=rd]{generics:::methods_rd("equation")} } generics/man/calculate.Rd0000644000176200001440000000061213747021246015055 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/calculate.R \name{calculate} \alias{calculate} \title{Calculate statistics.} \usage{ calculate(x, ...) } \arguments{ \item{x}{An object.} \item{...}{Other arguments passed to methods} } \description{ Calculate statistics. } \section{Methods}{ \Sexpr[stage=render,results=rd]{generics:::methods_rd("calculate")} } generics/man/evaluate.Rd0000644000176200001440000000065213747021246014732 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/evaluate.R \name{evaluate} \alias{evaluate} \title{Evaluate an object.} \usage{ evaluate(x, ...) } \arguments{ \item{x}{An object. See the individual method for specifics.} \item{...}{other arguments passed to methods} } \description{ Evaluate an object. } \section{Methods}{ \Sexpr[stage=render,results=rd]{generics:::methods_rd("evaluate")} } generics/man/learn.Rd0000644000176200001440000000071113747021246014221 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/learn.R \name{learn} \alias{learn} \title{Estimate model parameters.} \usage{ learn(x, ...) } \arguments{ \item{x}{An object. See the individual method for specifics.} \item{...}{other arguments passed to methods} } \description{ Estimates parameters for a given model from a set of data. } \section{Methods}{ \Sexpr[stage=render,results=rd]{generics:::methods_rd("learn")} } generics/man/compile.Rd0000644000176200001440000000067513747021246014561 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/compile.R \name{compile} \alias{compile} \title{Configure an object} \usage{ compile(object, ...) } \arguments{ \item{object}{An object. See the individual method for specifics.} \item{...}{Other arguments passed to methods} } \description{ Finalizes or completes an object. } \section{Methods}{ \Sexpr[stage=render,results=rd]{generics:::methods_rd("compile")} } generics/man/interpolate.Rd0000644000176200001440000000127113747021246015450 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/interpolate.R \name{interpolate} \alias{interpolate} \title{Interpolate missing values} \usage{ interpolate(object, ...) } \arguments{ \item{object}{A fitted model object} \item{...}{Other arguments passed to methods} } \value{ A dataset (\code{\link[tibble:tibble]{tibble::tibble()}} or similar) of the same structure as the input dataset with missing values from the response variable replaced with interpolated values. } \description{ Interpolates missing values provided in the training dataset using the fitted model. } \section{Methods}{ \Sexpr[stage=render,results=rd]{generics:::methods_rd("interpolate")} } generics/man/estfun.Rd0000644000176200001440000000071113747021246014424 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/estfun.R \name{estfun} \alias{estfun} \title{Extracting the estimating functions of a fitted model.} \usage{ estfun(x, ...) } \arguments{ \item{x}{A fitted model object.} \item{...}{Other arguments passed to methods} } \description{ Extracting the estimating functions of a fitted model. } \section{Methods}{ \Sexpr[stage=render,results=rd]{generics:::methods_rd("estfun")} } generics/man/prune.Rd0000644000176200001440000000062013747021246014250 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/prune.R \name{prune} \alias{prune} \title{Prune or reduce an object} \usage{ prune(tree, ...) } \arguments{ \item{tree}{A fitted model object.} \item{...}{Other arguments passed to methods} } \description{ Prune or reduce an object } \section{Methods}{ \Sexpr[stage=render,results=rd]{generics:::methods_rd("prune")} } generics/DESCRIPTION0000644000176200001440000000243714176070372013574 0ustar liggesusersPackage: generics Title: Common S3 Generics not Provided by Base R Methods Related to Model Fitting Version: 0.1.2 Authors@R: c(person(given = "Hadley", family = "Wickham", role = c("aut", "cre"), email = "hadley@rstudio.com"), person(given = "Max", family = "Kuhn", role = "aut", email = "max@rstudio.com"), person(given = "Davis", family = "Vaughan", role = "aut", email = "davis@rstudio.com"), person(given = "RStudio", role = "cph")) Description: In order to reduce potential package dependencies and conflicts, generics provides a number of commonly used S3 generics. License: MIT + file LICENSE URL: https://generics.r-lib.org, https://github.com/r-lib/generics BugReports: https://github.com/r-lib/generics/issues Depends: R (>= 3.2) Imports: methods Suggests: covr, pkgload, testthat (>= 3.0.0), tibble, withr Config/testthat/edition: 3 Encoding: UTF-8 RoxygenNote: 7.1.2 NeedsCompilation: no Packaged: 2022-01-31 22:58:18 UTC; hadley Author: Hadley Wickham [aut, cre], Max Kuhn [aut], Davis Vaughan [aut], RStudio [cph] Maintainer: Hadley Wickham Repository: CRAN Date/Publication: 2022-01-31 23:30:02 UTC generics/build/0000755000176200001440000000000014176064612013157 5ustar liggesusersgenerics/build/generics.pdf0000644000176200001440000031335314176064612015461 0ustar liggesusers%PDF-1.5 % 157 0 obj << /Length 1120 /Filter /FlateDecode >> stream xY]o6}l,IJCH0Y"IT?}/EJROvl{ s`'scňsʜơCQHNYه98y31w)ó?2QZ&WowAcT R$2E_jŔjM"N668Ap&U..; u@Kn¸݀y+JerNLEj>Y[qc74wBݗ5y` `r0"! 0TiJ*%lr`гR R ;` H@BL5~MRJp|-e "mKbU*Q([:JE%TMǨK#hLj\X cO&qĭ5Vv1ޘ܊6}@tڎ1:Znod"FWɏ[%!5D(6+75N vԖ(-0zXJUb`v.@u6?aD{Kgf1\D,ITG0)Cy-EU֪y>g;&a.dӴ8'3b4#~j?d4J&~OȎB:fmeQeb A}f w*dte2}q:W%\sO!gl#ZT*71 {ӍN,2ӴF34}rѳG>嗯.(|(lbi9lv j9p0bἇn5AC n "yw0r<O=3$p YoP2i:Ez8{gXGً"(D>5{~=/vuȃB46i!-wI'>ϡdx\8RR ,wc.xE<ҕ 7/7C/F-VR_Njvvd|壀 %N/PYQ̋?۸6HǩШM -n8o&jG/UK@@Nz ;Ĩ3^r endstream endobj 197 0 obj << /Length 932 /Filter /FlateDecode >> stream xϓ6+to1v3Li6M毯16uX 롧Ixl/k*@AXFR&rJ27 -__]3zАJYe&*MF!]z\G׏(DDvn2:!F!_(X|=;T_c`ͫ0(HC6b?9'GsI[͂T;Od̽ѥ67 .)y U}a&b{ٟ@}2Kl_+ҳ(2cY@vyژ< #p) ٗS_G=L$i,2"ύVMcg趪|qN]QLb!fh{0/yy<ҫ/nf /"B qt;ҫ >N 0X*Ay߃>^orυI~1AD(h~-3}O2sI{/" ;2k{9steşx`9L )Lb:p9nalbH3R[:3iANVQfYWf8PE丩zԸ$~"ɇR)q~Mjͫ{'BcMeTaf[ա cv5q{aSb8:w(|\ n8ה8.9qTGOn@hg^ @fe΁aj4:sRn9%}ozkFG=:{>J#\.*N*`c'_]b endstream endobj 2 0 obj << /Type /ObjStm /N 100 /First 800 /Length 1688 /Filter /FlateDecode >> stream xڽXMoFW19dI6@ v M}%&" Ev}ߐ+E5H, ̾J2,Ӗ9f,&TIg2@ L ÔdL)"$+pL"t04ӆiI<^01dV(fXfmG: 9f9б9`{\"xKȜbe%"`,`voX0,J( Et6 EYA*F+XW1EwDlD@ *5$s< pf"rh.4pyg p->4xv`j Қhk FEΘtJs2 ݆H)hBv"%)gc{{`fjEF!ҚBb%R#{4eEG4*x"E!#s$D"Ζ,Һ-2*9LO;E))HX>"( \$`}7Ւ٦)f\>g/_f϶mlw^܏fQSL벙U͋ *fml_䤛!?Q}?߳]ffk޼XTn3zhMK#.rU{wvlEJ)2DQS##c wJ1M94Múy%nʹҒktVj.Ы+#s;vAFQT$栏Ax(ҥt$cFqa9[2*~Z^r8K`FN;.p|LspG`V^ZEwԭ쭦ܗҎ~H};}Cx \7Dny]uua`fSeSr|||BBBBB/$!_Lbhsߝ> stream xUYs0~#HG:KѤ2l0qtǷ߮v1Z"^O''gCo'/0pF4yp u܌dM$M/u^*IDKx85(o}(R܇Oy s|̝r0G%YVA8?q?(վ0=,If۵v{/u ef^UԿο;Bئ@נ6>>Y[`ʐt$JZ7!9[TYcɦFD?]ITIo*/Q#QXxHinj-Ї<> stream xڵVM6ϯ, I ߜ؛*W%T&lA3KdBV޵}S4AGDO7D +$%\D,b xxdz1e,f87˦򤣢?=!N)N* oSKNQBfX{i.S)ބQ8 e(J0HIauy-xZuSQ"NKpsԹDY_G:J0k}j{ltHEPvW:;liA-2~19h4Gcp]EyxFc [j#b1Vt:޴$nqsn:I}I[+9םD7(gk۲pԵnYMoT<skQoF7Ʈ};,2Scʜv3腈 Ng G1Pagm)^gUGK|mg 3T,Ȫ~R(؅6۷e$1&UZpOKu Zw YfZ@*]ČQKv!|F/e$t).%}m_o_jǼtrdrn&+FqƲɴlw$`dX3"ƿ1O ]Cv:W NPRĺ}}K_+%OD> stream xڭWm6_rD e~n[TUMJ NpK 1K7U)cCC߮w$$ y7AD!%:s>iB>=hz@Cu:^?%4r&.=8{;IِLo6ީ'*(<^yRlf<WpΣϝj*1FVIk|,miJ6ӗVS?3aWN`Z <67 Iؾ^y\P WmUc٫Tor}lU,lsc$d.ʺ%!Enh/FeخJfOD?B -Ym _PPN4L[yjPӇp^.3Xm'3t}Xoeѝ,sUE.;'KV^8`mu4a'VTGfŒJe.'Jy:' y;X_79dr/Tg `>샳[_f9sR4=]Ek&>1 _ 0ӂubçUHv[|H ^GObM9ho-)AoG psA0Y0wUi.C#WMJ;*8&m1q~7iqw|=R/e%W$B4ƫI?})JӉIx endstream endobj 268 0 obj << /Length 813 /Filter /FlateDecode >> stream xVIs0W`U-/iLg.m$/gIN-- {67 PhF 2EN0]^,|o fHR滲ESw3bu>Pr{-ݡ=86?RO F`3v4c1sqbƕڅ*R5gVd,ͶLz]VfQdnaIG(`Kcx``=N$/'OD]K )kSÚľAqqA|cbn->更U{Jw"*6fb9QpM'9}[RDpG軖̑O)Hxã=9pV@&(<Ĝ_48l ŏmi>2ϱn_11'fAd:ԮQeHe!QpE^YG )@z*s#NtpHs:aҨo'ī ( gt Qgdȧ6LR;NTbɣ>oZqZFEsuAh[RLBYHTJSF =5=Ԃ\2Y62ꮕV0++o6tp; BqqwUz\%d%kƑYnXEbcjcbmA1[}:jN&u{sp"x@s11>c戬2 `rp {FHYc"iU&*l_0MtjOӑj8K=?t endstream endobj 280 0 obj << /Length 604 /Filter /FlateDecode >> stream xTo0𱕈g;ؐ&(\&Q{GڎmKl!0N8 FFF1!H#F\oWg:#9#ZwG_L)xSȑ"E Wn|.@1|Z|BcYG_ߵ㝋<&eqH(Z "'QG s8)y~b8!S*G+7YH;> stream xXn7}W1yr8 -[iR`+@=eɱU&\g3ùQTsH*QB6ab,q5Z7 jBAע7؆*Ek&9\1v.qxeL! X  e 3G&[6]d_K`&1qIs 5$8-0a+8 M23[񑐓&L%9&0&:Is >7q vZ'YJ2.tpu[CC#H`nt$UA5h&V "*KQW_&ōab97cT`R$U  74(x8Sݰ6e0JK0B\2& #H:E0)~pXQ\28;[N+6&_J,:F x0=4'i~!ae`xLk["8LdMXTdoo24 fb2v1>|>k2<_M/b2?? /h| E8D{wL8K%ɹat0 0 >1$ӧmP$VxChn` rڒCITؾp}p*y}9GOKLqKBQۊKR›\n -9$(  -GM.ٶ(KEd9}E7e3f~X ̱Mv@ߜ2rx` aCk}K( ߇F0*yL}0K^!f,4ְdl1ZxNH>ood!{0/)Xo8Tpr? xQpzhP-./Nc:~< ) S.xͽvJqQ%&P%te =Th'O7<~Su5Ԓk`MQ$]`^W>E, 0:hcƕ3b}=W^Hc~Chi nkU.P/Np猩*vŝ>pF!3LB`:ixn*;kXe{E(+gּղ/Ct)[OӋ,\*ݻ)ȟNorxIwZ._D*wևU hPF @Ĕi`;LPof_]Bw.["tq8*F6"([g6+pY+rL`m}`ƗN{GQU:&-~#+kB[]ji]> stream xUn0^T'LդRV2]%Y2@yӿLf tveǽ{}A:W%(‘ֈ`% $`(Z% %gGYH̄hwWf*.VW) rN "Dֹ+d}n'|>C·xӱc@1Xr`F{PY=fE .+>઼Ou.,7 8[_1S)fFqMZ%>W2D>5R J>V=)qQ`r܂+.|Eyp7VMgn#ip>gR6vI!MZk[I?_U?K4oa 0 `ug*[[T\S*qS;?'OZ<Ǹ*9fJ̥^$ S`g7:NnTY9k9[F2ø p" Nu#Fn4MozA endstream endobj 309 0 obj << /Length 928 /Filter /FlateDecode >> stream xV˒6W*# ,vq*v6 {d@@="WLfRvً.zs6^~,P& `A"12x𶭚NE`rcI@8찿~׎#|8eI8(aUSY|KO'%"t`$9 `O[9_(K.bIrf=G endstream endobj 323 0 obj << /Length 767 /Filter /FlateDecode >> stream xVMo0 Wok؆a٩-VocmhKN4ڭ=$9G>>*-A'gsP#%sPY.=J׳s<$Q~:)uWuk9!lr;%n]3('px( ]g#A) A+muow36O Vp0e2HF1O欪#X`]9|70i7]ٔIw.'5X&W3k(+Z/&T>0χKfImzWDUE<[Q5ĐhpC"m5t7M\Q9BB >S `g4$L|r5^ =0Ej(6sS'/ 0]z{PN_4.(@v9W`IsZ{x M;"lm,mb'_hI޵9Hx81;> ph@ @s!)nj&KUi6C>6"at84 w" 5EӮISy`?W&N{8yl °"u'?:*҃͊G9p;Gmx8i0,i2G^WY/yS$zZV7wҤM+37MkmLb0]^n9os=Zw,Y$.m2x7T}WjA ^ endstream endobj 336 0 obj << /Length 732 /Filter /FlateDecode >> stream xVKS0Wh8%3DHlGGZ 3 6ĭ-7wmɉmB't^"Үz 99.XG9`( \f-T ~vyrPL!YsCl3CaJef.&Թ'(K[bq IA | |ƺ)>( })m,@ŔD.1Fu؄ydS&*A*2<3c*]67e suzjpg xc%#3Nф qtr̀L&uj&0a¤)Bc#xG \[ͣ,&܌<MWחzpcUdư* l2eԂ^;TR8vE޸p\mJ"E-{Uz@= Nxg.c2ZuKYۍ*Mea->2Y ias[w Q# ~ k! -T`+UlYg͐g]UfFeUmcV4T{³Uj_; #:68\v1ZJodp ³fP3hx?t_e endstream endobj 351 0 obj << /Length 740 /Filter /FlateDecode >> stream xVIs0WUR.mj$oHr~=e;fRl%{ &:gM>`0:x뻲0k!k4/^(YY[.RF`c37ϟ06H Ϛ +"aq|t̛M!vr<*{!=I  m%*.̚3wx6?kq_\k)3f]$zWb3vk~p#5{7XoE7dEŜ޹mZ]7L1@7kB_#nHerkVBaiԂ!ӨE#qsUJvmf; 7\F!bL-+YFErW汯c}bRxۊԍ/P+.?cF-Y#Rq|Gm<("0B_(GL\՗kLԳQ[L#ETs{Yʼ7Ҭv-LB10%RhXХ{!$ih˔/ZN$KrдKq|+?ʤ endstream endobj 365 0 obj << /Length 932 /Filter /FlateDecode >> stream xVK6WhCRd7HR$@q{Ii$:zt7Ç,}C.3|3C/7oxr,E(K Nb6}^J4݋7q:Ql '9-[ g,-(X1)*I|j8C&JivJp)H)g6||M/^DVKȲ2R^@]K-{< [{TB+909 fD4LR7܀mU @ULm/5fpva@i򻟖F(Bޗ#2cĻU}J+ٰN#g' nr21ŌӟS8y?ݛXLJ$ ;.9@|xlɻ]>JڃK͋jvid_ +|Dٻvԍ]"D@Q0=h$u=ƪK`tl9cK[acm)l"%o,WzÕQw Lk2waw}og<:VE-B}yNoe,׺;+#K}0ZN"*g6I<,D4!9@DPaiVw0~=+lRj {'z۠Z;4lqlʼny̏gCM< endstream endobj 380 0 obj << /Length 533 /Filter /FlateDecode >> stream xUMo0+|d?0*MH$ .l꿯& twQ0ޛ zJ+&RP%"q"8d%9 _%W" cju @uK:{ļ"̔`Jm;@9FHGA.}>>?{T m[3T+eL*W} *o37Y{ I0O k{!g1^&.rlpHfx QcҤ+ sBеRg 1f^WF9'PW}61=#asa/V]m\:YIe400?{}\/SBBMf@+P*o*E3.qnV_,t 7pY[]4@oX_61&3; `- gdMRj4$aJ,?7N#L+Ubcx :\/e endstream endobj 293 0 obj << /Type /ObjStm /N 100 /First 867 /Length 1255 /Filter /FlateDecode >> stream xX[O7~_cEEZ) <%<Vh"dAa57ٞRC 4TB.(5K >ӏK%pJAA)(O9Xe W8Y(P#4P֛ ^@T9~@[p3L\]0/IrԈ8b\BVb%xFȣ85 X5D! Ade$ C12[A8]B3%_`F3aIK[4>(y0` "dbXp*f\BP Nڡ(SCvzRb9xPF*$C=R=7QH0[Uf)7Lazy\qBBMdKE/ERaөQÊ(z@nBQ7 ba*$YE*DII(M]ASB@,`-Jhn}u"p (< jyvv¸ssνm<x ˗|u a|v7Op^ ],//dq1pxzz)=m`J9T>p FWgg9k0(`3>lh.jKѪuSYAGEŢ:7nXq(` wXVC7QXvSmyg:ݐblPL}`1m`~7W>0re~HDyKh~ZT6f(V8sb&S)?~7p. ͝XXS1=wv-qA3wV(\̂R+iN7p'"[Gp3lFOnm8Z)-Hh|\`uXևqrzg_?.' pye|st`_<9q yp1S^M OU@k/O/^\?? @9Fn HY&ρ7R}sPn-TR&$ZB"cXݰG}`fKLf쯙;EN7(UO봬PiZ߮~'%Fv endstream endobj 394 0 obj << /Length 883 /Filter /FlateDecode >> stream xVMo@Wі=Q!^BIL8ة%Rq3ơ%hz?z3~'82(x(! "XrS-(mV ^c$:i*##0nǣ_# ? {L`n4JWoML+$(8Z/;φc]`%(Dc;ѳfԳyk+[ #&IIҐ1 ) [_i~LNg>iӪ̈24Ĺ(R+<2-M=^-i"ccKQFwʺ+`X/؇HUIB1s)nWv]':s@_kb^^7na%rZآKkJ[U>WZRF}hX,"9*7-dH$|eUdKlH"<)%>/mOij^fvҘۢD/],d3A0vX 1U*\2%ZW|2HysbqCWw\Qx̻um1"ze$̷dgtsce &F9h4^B`И0w6'i6 fړcAj L$9LN hdU'3kD܁mNSm>"PL#В=W=s޵ZѼMaK؁@=#FpeW("۴OYŸe%K[OSe4XkM0a.ӌ_kmrqlA?cB_|<η.8}_xU~RJ{+;Ws׃W sYj@ojPb.dm> stream xWKFWp<ۦT*H"F 0 M.7W, $! 6 # 14x$W $YLieN\`olƺSYt?h) 5z^z\n"1YY2^+"?]UY^ǵ6jry"hN2+ܓGսɬo~EdvUu=V=>1\R nٗi.ei]QJRFy> 콝ToӪ̈́DW풃aɑgm<+ cSO䳬A˃f',>,]a-Rxq=,!(balڥz<=A_Z9n56L=RPL4nÏkp1,NINh/Y`{-5̗sW}&m=zCͰ _߷we O^F!TR?Dn=C31zѶ>e2kcU3*f֛a"/mO/TW*t̻ endstream endobj 426 0 obj << /Length 726 /Filter /FlateDecode >> stream xUMs0+r7MB:tFg[ʇ@tmkut8$ ! [9:>` 5ArpO2n?љwRaE88l}t9XMp.Hs>E!b@.~ӱN.t AB1?ŗ~"0 %s۪!76\}IYHU}3[rWe#"$=KYqd z#ʶM&{#p8#5}  '.7b>ޱ]++or!?IanBM}/0Mj$pUST'3Z9WBr"+FtוCPm~Mpjh)he{b"ptTk# )d FoeJӬ87Y`HNB472sG/0^D8osW%>$7f͍퉵?ZlM[2b+NYa0`2z!^zaZ˶:jJMz2NmoJw>BA@9g/*' u)sĞۮ+DBy2iBWO0e KHiB(6GIrOu%Z>k=qÿ{t~ p!L57T[W}T'[dW>Ni/umd#s_Ji}uS endstream endobj 440 0 obj << /Length 1666 /Filter /FlateDecode >> stream xڽXKo6W>i/ÇiiN/I`wWVrH$ˉSp >]_<{) 'y“z0J M(]Ȳ͇W^Fb)RAX3) }/닏 >iyDDT0*< >c1FRؒM/^FI )+X6rqg̙B X$Pn<^qX ዆hI}x%2I$I}էV̰fe$l`ص=T; #I a'p ^@X!á,[0jdEM3Z51/rզ6΃l1|Ɣ܄v?yL +x ;=wC3tk߲u:x<ng}/+.eUAUZ)C!/u;_sClukqaA} ?\6)l9j,ل)=ԷS=":DC.6a3FtY7Rjp Z%w'{N$UHiJFj)WF8Fcv&=܌nlKkˢi^ ;L-L=ګ+]C[%ɞ( A,%R5%<%4ש( ݊'8g.9#_DB,!o`G,p57 0 /^ÁyٛqK7 tv%lUG1΢m'"L3b-XCfkݺVK_5U9 wrra^|x?y 71 endstream endobj 454 0 obj << /Length 1203 /Filter /FlateDecode >> stream xWK6W9@KR$%EڢKZC%b%-7!vvv_}]=n(T8!# q:~YSF)+wzMw׬?n|xb-(?"Yac dH?P_=ӟn({DO+q;?( IG3"@Q%2dw¬] +P8;=zU9ͫ&4qr@9vڬ^m51 %Bٞ!Ip5LZv_% 2Mx^!'·|13LH㥄yзbqwE 0f^ʺ>BF$KU-J&Zr{Hx:PRqvvo&IfUCњY@v0k aMU4zs:HPKD1~53G,M(9?vK@ܨ\,dd`ջH"PԊozCE⡶ۮީ Urq -Ĉ~TZƚY ("!Y.>095Y*MN$!j:`.X)y{B InQq%@i-U~Q闵mB ,# Y^^BY/' ]{iP`cB|MzmK7uHi:~Y-m‚5/ [TQ{KD5JBi&Ɯ0d(*OK:`sBL<@D!i"!x dH~wS{$$y!"!Fw2-Ŭ/H!Y!ޤ*Z[^7$4ZB1hZIiJUW:VG%6CvRw+ҟ dK\>|N/α-dj`~1ߧ$ p z~f]3;h&HsfbN,uN!qc{nR>k+y!\?k0걘cP!سb١+(aGvW1r`<ލ#IUOpՀ?/m|?򳤳Ӊ.p[,qsFdܘL΍4 endstream endobj 468 0 obj << /Length 588 /Filter /FlateDecode >> stream xTM0WH;vl'9H+B쮐7q|ą_[;mVTp3yy+Yꝝ%8Tt@C](79 nقV,~U\#f bS*Pn~] #ѷ 1Bpd*{6xt>,ADAǢZ2l$&=VES0kv5 y[*{2AV:'Ɋccڪ007 _.k>aec}BMrzqX!GWk`?0o dj}bTZUAHnjSӾ]y*DN< 8@8q`:NBJ#Cai)ꦄM_׻GvQBv*f5X621/eٴefBYb,ƌC.zج.ͶlKvҮoڇ3=2zb S֥/w51ўqJy :ӛ R endstream endobj 391 0 obj << /Type /ObjStm /N 100 /First 873 /Length 1329 /Filter /FlateDecode >> stream xXKoG#\zݍ,$r)pHb8D(h72D}X۳IcX!`Ow7Ʃ$icg$)1 57>Fa@ Rd~@P֪`5($WPrs( P5B B Π #Y,9ޓEG~HYWEmSoDjG=NϿ,e6o>_ݽ`جgG\e9`1Ίsh̽gA_z:h U%vst ׎5΁a$dӇ_?8.6(=BFGWOg$MY(_Ë׫Į7gvxn{~j$ ~tMq4sH{q :wz3UObTeE^kvs ,ț2"6 ct Iƹ6(A0yFcF_s󧺿TC=պy>ѺXʊRf{^.`8 ."X*z0GWt#d1s3&tSً j${{O9T9W4q˳ytTOO?LNhބn`(BanmGrak7`fG>Iwۧۄ8z&yΝ[ng}0mnjc>f S5Fכ ]^ιCqZT1z;. rU$ǭw 2Od37^E'/{Eyg|^+ zn R8҅ӬI][+ծ+CgF|Nҡjg1w!& /@^ lْ{Xl'>~LxQTt &9S{A`oJ&%cй(8Ep^*Ep6k;^wk endstream endobj 528 0 obj << /Length 995 /Filter /FlateDecode >> stream xXM0$jo# 8["$mLM9VڬV{37.w{T!LBr$k|y1Ǘ?| B {+ VFp<Q,OkBWIZqAJ qNFV1l VQ$Ȑ +)%ISTD'"=-r|֘($紋j y+yKyS&y9CʅK툶" :(Β6mfou ==[Lv- xO}fڃ-ؗEBmj́^̫;jD= l6$=WͶqX7Ψg:g3,8=HNJ.*j:Imf1oQn ^?| JBn|( Ijt+OBY,[{ҏs~(滮߶8&$'ψ ]Ņ~"A`[(k Ziļ3A endstream endobj 537 0 obj << /Length1 2360 /Length2 10999 /Length3 0 /Length 12207 /Filter /FlateDecode >> stream xڝuTٶ&pw,x  ( p܂TwܾͬYU}ΡT`0dvlB;lt[@hi5-m@FZ vN660S)IaK,pqp ([XA6 F+wX[8 009Xa\,u@ l %h7ZڰmYgV7Xi60?!'T8-O Ԕ d  28ٙ %l0ch 0v1YX!?0X8: g jfrdc 2vR`[[#`ji0[ڡJ@G+@_0Lv6nO*0Zj*ʚOf`W!x3xrT3_aF񞃗؍? gڇ?u?Wc eÆhq<ߗ]hkiZ1>G @+c tY:X̀6P_r?XځP?$&rNK32L-\| tC〝.^^'rfg;\N^!hl/77]_.2OH.7?!EQ*gWBv'`|BZ,߈|B0 A& C`d[koM6 Kš7}B'XCIa$=aY:[?`'ȓ= xF`~ zB0欟+ F572Z?=! PKωjA`'I{YxD 8aoSC0OaIIXK+zjցSNO[5COƐt}BnOsJ ' v Yd67 6 h* qa;>s^VjŸ<`:7,$[{^^cv0='y̑V@~cH| 0 &&.h7"j`WM+| Ο(Vlơ_բ58%wmlV7CSؓ!:Ş۽.L1e7%3e>Fx[}yh+t/IץGV!=gȍ}mj h 'e7g,+/7=5߼>}{r{NЅŻ t8e?EW_ ' dJܚthtCٜ[K|, x W#b?@1I)Gw@0_(E`'/ ~*8~@PQ{`@R5Ve 3R(yˡ&Mܲ(H ̿ˀh} </L ?vơevE<싎'1+mk,A˽Oͺo.3|,BItͶ]@|#b=zJxOyx$٤} _IiGqn$ƽDotǠo8HcKXjAOD @ZR57?F=ƣŲW 6YH\d\3F[3ڳ#K\u_h]t bEz X%ag@5n˾GFEGLs / [#9Kī)`ھvЮe]f~6NXx0:h?[nIx}$' {HIhb? JC2b̋2{[ bSӾr8ˣ,|x5m JA[) &-k3Jp"BXNkuYk~̍aߌ'"sc?K4u`LL csX Cu=0`j //Do2cL6:?nokYQe S_9~.R:2Jg_}Nm7$=qW/>T$G~7V'FSh@ 2dQ4e^iw;fS巘(*R4i2;Sc.cZ"#5IU" -o~ Unړ$ o\[r'x˓-=(ۯX9˯XvHR&* %&9Hi.Y˫e`>t\> "[W-d%6499򴼼E-pr9^ɗ "UȦ|-u5cJۢ9eIJѫQh~= NL.㢀8}Bz#-+qAoԖ7K&==ڊ³(9%Y!L`7=;)F:Z xK8l^XT1S>~cg@} Xp7_Eh#n}},G Wbyjp\@і zqn:B~u8yx3~e=fxL{ ;kaM]l;>CgN -~yX6EQ懩dCK<з+`lZ(O V|6[Q@t"4mح!r&Xem7CQT\9^rI]s꣓҂TSXcB;&b b=JaY {3z,z!u. ދddAfqM] }SY!)E^}<oldm/Jc2?$I|1-tg];P^(rv ~kPE-k_ص%~Ыp>Xh2H`Y!9X.1R+zen;=򢌎q DÀ̔Z,jҞ_ SS1Rs}f`!N!"bpjk*.NjNYņ*=Njk(V>liƁDz,e}bU,UbPlM">SlTc<󖼿ҢFB1GSZ˽p,uRw+vxNѵ T ۖx1 )3a{Q]K W2IP\ os.߆Oߒ 6ֶv@DL^; ,Cr[Aɜ)I4 PQPg oau f"F01uK\_~" 8w3#Dj:&E^6g!~3taKT$b4iSVH ˯PolC;Kr\rə q&!b,S9}U;hg4N`>GePdo@PfD|uyC]1co4']:1TkjᐰKu5xiEWHpOGhbUFr7]ڴ|Z~nwTum1K ؓzG.Ywm@ @f)l|'Zo;16nV.GтIre\`'"%-N{7Ao i )C.o%l9 @^קGOM vF [c]P< "@W/F>7\hU[:1х&f3bLzv_Ë[Y:* vJ]0͕SpnX"m}Ҕ39xOq̠O4z0d:\XΥAoqg9]UUvE:EU9^\]K^ެY:UKգ'~\@_:r&~aY]s^Pwޕ~yvyxȻO[nj899\@!c0(ZVj_x/сW9bՕBҶmJ?| bgw~9lؖaEH6'J-Gw R,m'5vN0VşǖY1 f`2/q[N4cgɈŋ^ Mn "vc/9#/12,9ʸLT9+7S ?6%~u$!sꆑb6zIUw^}-[=l_VO"@AyV XSR9ҮXAiޏaf/yo,mz =a}*=z0xD)~Za_|uhqGY^.:`>nVX2ΪxE/sv#724e{Pr 7&a;!% !GiSO;UP|u 2NhoN$]"_r? i|rwEgbXEjq3Xŋ^@R43Ff1[.2`Džo#hڛAޛnQ⦾H /'U{ m-|nv+ǭ^ެg3LSA#w + *)s+/fouXf?~Iݕt- kx)3oבTv }3PϊwۤvՖ$KӥȢ1j%!H'"RBeW'txkͼ1P(VςqJ)R! 33:ii87 geA^eT 2<h jlW&+H\9br >Q]g*F@](ⅅun@=եVp[;wys&WSSp{}Uo#ȍd= (~| >ʙ[LއM]lwsOM1]o] j(3NNlʜbq3RWAIs$M)55|IgJ!{ D|ߢ'w'Kd&u4{Ҍ֌vH2pDKMF9Ml(+ѠcgVR[Fi:]WnlYjwad}ۏJVnG˒>2-H,_bx3F" e\vu8eyD c}ӏAu$ aK =ZJ\1!XrYDzx8c-G 5&P0S{Ok6U#>7;}@hRhY7snOJ{(yHk|^ƇJL)|+0"9#i- U~"Ԡcu#Qt~V=>:v$}R2 G\l]fԺ?{O|W4U0I\eL&Brc UYHJކ2DQBFLbcG bEUŅ }LK=ʪiuOzj/1`g=9%DWN%#{4LB3ա-Au_j~-YR[z ?7rڂZM ku~Ĕۺd4u+#\"MjUT/׵TnqcOf!=hrJ_d)Vmg+*M~;D1l?w};Bֲݸu<8O*(bE[^ HvsB-p͇l$%܊|{f 'ҸD'ammNэ4PLI5MZOpWΒlYSvuS ݇T K72\~DTNR%.\T jZ Y7~<$ #\Rv,̪Q^Nm$0* 95I7½w2n̊d+NI=D _>lǖ.1b s?j HcѢ$}ڦaC+ڎ{ͳQ,_-ġnS3Ce=~FQsN%ӌ[AbRa!hIJ~pyL'q Y(`rpFb˱A={ܫ^q'X TDYڽ3i-Rqг U FUN'k9ƓTqǙ/4Ά5FQ-eQTC[]Wʖ-Mzq 4ԑƝ>|& .o `ZB~1aMR@p__q\F}s2jǷ/xM5@[Rap ɬa6$W|P~.z4 C $dXm- >l:LdR4~UdzQ+fFMKQ8&3-|Tz !Ӫ,陥E\GJ%[NGXѿ|K$[EX8tIbGCS{{j'3N$z'}ZV᷈x::e62_QooN8׿R/o'V=1?Uemm|`{dH@ |]rnE-dܒ!Jػ01@kmt}7$hqVs&jYe|g?HA!<> alND18O(gt<βzlD J[U̶·ͻ~^QJ}V۵% nb.ޯɳ \;J.}sBh-U2P!FM ;98 pw.>!e_* 9㵅xXN8eŴmE6Wddjb y"Ub)={HCR5pb ͸M$+s% aoTBģM .k_/*[ų G^mRE0Eg(zQ;n.Ki2H#(V l#;؈3&7z7I@Ǯ8ZHJN8jM7N )k܇1.3Dc3j]"F!LTOT5`ĭD<;a(GłcEeoBO~ùLZ4xJ)떖p~X*^oyHz17M Lٱ&?lTa-,e\⭁vDL+͑6W36@AFp9uߔ^|L Uƛ Ckgk߇~V\ԉE_"܁@:$t[W>~3&8v&^v{M}d~46{Mpj\#lgTvR6)]Qf(T87GDS!¦H2ۚu_IJ0pgi:d,?f/PI>vANŦAm2]lcu# \]Ū=d@m,BZu%>+g.gŧ:dL?ѧoE>;?`"fJU1Tu)Pjn, a|/⥄Lu Э3n^*2)IX9RciE*UjG0tYYIVŅ_S-7X#[7teԂ"j[z#xm3@j o[4ւ/4AjՙvU)}JJ+?d_I˅SNro*[@96.݈A)-L% y@^W#22iyJ  þUW$53rB%&]ݰ0u$( >)Yz8~8wn>fl2YCtɛM}6oяrQ]uAe ءFuWeDZpuw5 7@ Wk'5_w'%uڪQ T }e +)b֙u$jMk*+&5[k̞[F@ hRVNAs6ՇB ~ej9$#?{j&sODu p?OϮNpcEWqQ@-ٟ?TN6^u $Qsfk3 CJԋv{l!4=Oz?1K*(0I;K㪏7f榣R ݏAxsh$&b_4e.u5_M;D}Z`q.Pc\OUrjA_01SOʹB05'0,rMzc'_ABlyO;D3X $V&/2}w '!s!@!l2*(Y-Uלi O@[vU47mV@9 #($r)ael̊)Pe_K3N}foׁ@%2"ʠbT&Kpt#zlxUSN#sllLX= .r+WQ9AԠ~8nĪpx7e3On+𛸪5vc*E.= Kfĝ̷AgSLT8O5SfZ I"D4~IH˹vQ> o<`@8W?^lp)R@&3$Z *Jcޤomh;M(cT }g5FHY!2h,ڕ^NȄ>57tPn>:Y0Agg^~̪ ׬Y"7\qWM7JQ&ؘ$!R@~<@|Mw,MT$)c,DB ^CėۀB큦EgڞVArZ( ^Y9j֛݈͑"JsG٭:}r#|1Br|E˄f3\jqїL"z-=ߣ"$"ݕnaOgo9ѧ>6ت p+U%S|?)]QC:ǧ٪32, أlSs OݫAȕ.5tlGJQoluI6G?D9qUΪG f.zvECNZLE h6қXisBha105~7j"mZ En<66O"Umw$|%i゜›ε~UGPOqXRWh&1klŶ|Mk빲 )YpZǤxy%Do51 ؕ>ߧQo+_jo4Ta(RSHH0E&]P FyRAlqrBAv_p4uakepwt`Wt*+KaI endstream endobj 539 0 obj << /Length1 1144 /Length2 1528 /Length3 0 /Length 2250 /Filter /FlateDecode >> stream xuSyQa"AXHx\dDg"B+1+|&WY#]AĆ#t rt&TA>Z4s:¢gBvP#X4L,SB ]3i̜!>@͝[q?,fδ6Ptw'alPXp+c62@gH4Lx`Ѹp;џb B;E`B !@5|SGa5 V ku^(o>H0fn_T06x)"o1WB;Blľ  îWALd3Ep?5wO-47˝dq\xӽsiiWsYw! 10uL 2)5,fμ87 `px.1"`P @7C0sN0aB0 Q̯4xf.=eςAp+P/AIg'ϐc0nYXm,Zn+t^fD6r)m`9o9L{c" j湥i0=gCT~Ф5EkcϝWFWO;T&#񺓛Qz|%1͏(u#%[҅S.x^Ѡ[ꨂJvU}E*&6޼d(۴dzt̬]ӣ뫻5S^ّX}Dkm60dx0t~zli^Kɚv󶞆{k'֩#%ILf=?x$6wjVurhu(237k<]iu4Mтָ'" ^&?S^PZo#fn=q-ޞ'IS 6Ɖg'v5+:+E-%F#/7삯O$1w_H\W8PAݓҨ@BT9>2hZJ?U7[qf*L&\꺪#oXl-Aih\Fѹw)}ʭDءx5{b 2+: M%w:~uxe[ؤ=j*/ާ z:V]q[e"Y)sa@&YDtd[~Lwp[:eMY1uX|ƹڪ~9qluL,a$+o[{$mr>[4|x~p7>Qi\XZT< 0\8e@<2}llDUޭ\Q=D-)p#1ve9k|U\3)J)}AؾގWuЉ<گ4kli3[}!FW7=81&A[%E R9etI犓%?Hd)g֍{}:drވ>~s@ҞhReQ? {#nq69WxKKԇn7r겜p=*VmI.xu$ #c|?M>ՙe:Y`{Yt2C eͺiۍ{6i8U捞5 K֭^]%+ ڍ#VE\~E"Pk~%lLs+ęyoj UVHF`iͶ8QO 6kKZ$M sSC] ąhv~B1Ja:`:>LcKRa-4&w([nR(UK}5*a㧬'R4>o R:`4V̷(2語rnxjo \s͓T҅ اPPhy`#qRãvEjA fR[SiNuC%eNy՝թsG9޷h{cdE>!Gm,)hi|-M7Q21dՈDZêhEm 쩒\h endstream endobj 541 0 obj << /Length1 1626 /Length2 11543 /Length3 0 /Length 12371 /Filter /FlateDecode >> stream xڭyUTږ-www[ ww n H$X9o5F%s͵BUY,co&Pؚ:*+2+ 7;75bo'e|  itigdd?=o ;7- \,s  +, UȂN&6UWSs{'?֜Yްĝ&g0r1Ng3m./ovs 98ٿEؾT]AN[UU)t4q3 74߾77 p)`qv1|3_ N` '3_WҽG'3Ɯ&孶]3nO3o$Ll<f`s$Ve{,{"/H"FqQ6}[1G=4W-џ`+aoc>yY#Y6S,&6oۮegv؁t{fv6iZB@v I7yV==--Yq;Pm \4=޸G+Jfy FB`b{oy|dw`@fۦ/7M/[<`d Jpc7P֤Y\Pk_eT<#x7ևgCۛ U@KE_N˸jTq)|AqVM{o{JMݨ=L'}[a·[4?PZcnF3V} M-p%\.1cn" _1EuJkAOaE%#Sɼf?uFe{RvamkYG֡ERL ذ[9^6nz86>#(fr\^)Ł ~O"{Q#hg^cWKt*.c;L (z]lz/v-H?[e*?VrKY'\;wj艄?Y]Hչf^&~L2dd^E]\a{&GUsdX!`%9~l}?ҏ? )MK?KK?"[`ǕmdpyTR,aiy gu D9}hVqB ͎<ݷfkn pD͎qwJdeqE/:';nӜW9`rUxX12ʒ!b;V=aYztrYn TC-bi;;9PxzcԳrND+baQzUbmGιe=7@[( -4h{ ]P}gwKIϯ?z6|j{MtQ)۳G_:º +7]!Qmh󐝁jVˆo u1.pd_DcZ;ToMt}YC䇚U!a]4Щ:@_PsE{ysGX*?'ېF1_' J(z*]qx|7﫶Iґt~W>jݦ GК#SӤ=HY }ȂP @kiޑMP'm>G-h֎U`yGˌe\8KƍpLģrfv]sn QE'ä愷z9 Ɵ|nF_"U_v_L۬=廼'"l*!$[ü2/ 'HD-hGqir m(0 }1 8͙}ޣ&`! `<c, ?"vt[η |xIBZаR;֜uS/AI9w6]rDk0i;1; C|c;3jI.8>%3%Ǽm!\nj5vI:U-\C\4gET+ňS܈ӄ-vjς vh+Sqʵ%m%H**={%VIZ|p0.1bD+$g;hP^P$~{QГ!G؝qXw`$T:?K=8O))jvxX"peVB_yr'mr{lF(?KL4V?7f%(!:yZ{KNc8"pkdÀ0%p)*lE N.>zh~p礲8h'NVXff"YQ&Kdm5(ut{CsnÒ݇[) A/ᨂ@w{ܜIęeB3:5 Un\U8Q=FAc JU,uzq2L33{nfX;ٲ5n܈x9+WUzO")+΃/"˚-ùК[0\Gp++-=!G5 [Ux:|_`!l]qA'zbc(p/>20Ȯ7$g{{!ybEqb~X+0G(x(z'~ߋ0ړ~hq#_]4y(4sQF|șxNiY>c s<:=eOj{݄;C@Xc2ȼija^H~Ⱦ3uBZ<O8w.pܬطJF;2"pھ#,oy;kL~{8F=k HbLSkq"D<ՀeɪQttG>:XͤRn ɔ+F$Ha1>eWԏKWv͇i9وm+e-^AZu0iߐYQYԳ$g8Ƣl:nh? pd:4TǗ(fs6VB8Wodj"C/:&㨑ݿza`DH,!TG9z#1g됰\aK9U$)FTV\$im8zCv{ Ƴo/& $'F)$Ҽj쟜Ǿˇb/5,şٻRpʒSk'/y: zMMfVO3Qnl}8[nP$'AdG*#V޻2HBVI;_;$4.Y iW:5ᣳ;?Fp*XloɑB~(J@^;.c>s֬p藼q)(»6tBa:B52/!zUE"Pk}Tcu)}& J2i?ӈiC`[v6y)GXQ] ]JunE9 V  /l2L\~i= F63U}tJOr{]E& z(_TJ?w?z2cWM#MRK!J&r2 ]#+D닔b+5(՜C|^ 7a-!#Yl)^>F6OZzLy(eM{wU8Ӄ!CC c£3Wj/ q*ބ1nmi~xB=ڨ nauzs7 ǟVCoƐoGC}b.6W80nE$0CM׵r G5M1)RyO,tϤ|`"\,dw*麼鞭"&\$FAljǻ;"y3E(gM/64P_L)Fi\?B€4Z\{IP"^lrV+w%5IzG/bd>{dհQ's\EɟbdÕOE??н-&NR"XnbgsSE^t8HS=!0ܾ{ni~S]jW>2Ҿ9%R߽Whx9yD,W} l@~VV`ƜL6 AC:BIN [6ɔt4Į6>n0r\ɿDžM.fy.Cj^֔?1V.^<ʵP lt@D5w8;d?Rɪ SlQc[TП^4{u"1#/}VT:QNtJ o{ 𮾫$U" bڄ]eY4QTE!X?hG(,]&?dň"jY #93̞0[oG8CS@`L\ޢ6.J9E=7c`X 1A־dջ3$ 07m4 ݽd jV#=#]q[IcEMĠ̺/6Bi1= @\hb2=4{ZzUP kc1n؅ۈ(\V{\Z!Kvl33yUA&l<8Hذ( ,w'2a=dG!Ox'EVC}0΂U:#[rOk+QH:dt9`PGx} TNdIJ7GwFྍ/@|d6D<']Dˏ:Qf }s8tv,-@`Pn)#}-_f9k׌ 4xjWs2kOFTS6f{PڋjIҩ䴠gN)hbOMkat_$dXLܸ 5lj-sTwaNqkrb۹= n0U{_JgNDoܝ#!-?yCANAwƪ7?3إ1}C_owjTms OZ%+<%XX Kyo7u 4cr1;!mXEy!r|%?'#%l{B0l9pݖ'|S?B +b 3n™.~f=O:c`٥c>Ĩ!w&«h-(EoUy>ZC^v B3[;iS0Y59ç.K%աi~HjhjNcK J'Ň bbpz,s?݌a܅jTu /˱$t5ۄZ\Ѽx, g(N Brwf}BzL{92W;h*c옭[Bcb:C%s>T2kl 6Xxs]^ l.4(9BU|xn" #85Ȱ,rSֻEƭP PEZ Ꮩֈ}@?$Hb,\=vU XF<d|D:EW<ˮ8Fk[Kpmy69g/ozFȰUaqf—br4pB-,Չ&EQT16{Hdn .J̔oC/]YH E'nON4?΢=SQ 4c\`sW; T4ʅō=>3!gxN`VIG):HB( PAV-]pWYga.8쵹jHGVRl$00gciKiom B7'":a* A׫Ɲq4THSN bƦ pF${)½Et/_@&K(']#P ^ۍ9Z[Q!ro51bӓF)᨟כ2f}v߹x"'ĵPB`|7*Wdz!A1J!QœA6}*ýzHsǗIFaGn0dKo WRVm1M;-+Zv+sz~-)XT%B6\Aee@&|;* / Q$0|ijL ™OldV7uFPk'JulfWL'q.z02v5l߁pȅ2| !הѽ3ǒHDurӚJ|%~6O` J7?N8mi)lM@lv!c-a_n?99KQH墈7%R?8dzC>jd_~g\3a8r+UKU] f-m$ uT9N~Ax=4ٽu. d~vIL73ia%C,yswxѻ4"LM/_<XPwhTnF^Ƿ|UudF($-ÒP!1hMDۖUBscH7Id!*0w?>7OxfD tEӾ^W6{1gY?l̉k]6BaOw./~] 4ّHx>X^a9TJQ*7,}x~?u:b!p1JK`{dK{;.j^X!^^/)mJrZYb4mી]}l;v@Rv%U(w]ƍ;u"}>z5S(4T*wkGµ"ysi~gÑfjڻN9B 㭹[{?±fnCװ=O//Mm(Fh:<^<"N (IAѝ kF%+^W-dÇic$V(?pAp ؞A/w Y*(3O?&+zzJr\S&dgF>"TK'd3$̆dI9=c$t5LKFυY-gED4 2wC;@wHdo`/߁.$G {/-aaX۞Tn97U|XYr˕tMhV#㗛57X:[M9>cll}|R/U C8u+>57o7tGeawv ]"FתI3Ǥ272ӔX(4 X$lR|w{[^:Xl"/KQ>mѪ##)Ǩ,wg%c:fpA`Ɣtpb-Z&XzWCߺޚr)AmhݓI#<[h,Pwhre;CB琮5vYعΏҫ?)wYpQQ!}Q~@ }rev6@gu]w@c_(TJk)3&QI1) Ypа>V>i$"Etyf|+4dPG65i\Dk[LM#e萆Bh@C B8> <m\wBQSOLC{kNO7Ʋk䱡-✔t]R~1FUҟ@zp cgs!\nzb!0^'4ko%̛&) /B:mgcXm޿kA[ 1W0$ N7.t)Vh Emygw*~-!:CHΙSOi`HTce{2ܨ(4CxL󴔣Ṣz&ӥHqY¯QxpF~X#2AÁzsY 6\j~LAi\0`0&;eA@QzНsy@+WS3O͉絆Z4`Ә,,''̯t) Em R ^1% Kct| OSt~Fz2FqHbgsJdC~[=ҳ'"!V]<|=U n~KL/fĮ ?v9Ҽ45osٺs=CZu]Y[p nxdp.~f Eb,TScfM֋ %ْNbs+afmw8h(z q^5Gi1ls5TKh3u0VZNDNE5TCҲ!W_"Z֍H<>ꦝiд:qL%)=9%9!Rkp?uz{YڒrtS!yh!|JxNaw] endstream endobj 543 0 obj << /Length1 1630 /Length2 16284 /Length3 0 /Length 17127 /Filter /FlateDecode >> stream xڬctem&'ر*VŶm'ضmUl۪b6*}q?c5&'VP452:13r,llml9eL͜_r6XrraSC' [)@ bj `f0qrr’m,̝TJԴS ?4_f@׃) Qdn iam WДP˩Mg#k c)є`hbOi_XCŗ?;S Gǯg#'[?m헅͗ L UADy::K eibkOI}|i -'S7bL, ݿb9X+ gG f`jf`bmOwNRme?spr4I+Y01[nl:S5ꟙJh01 g@2 B -lm-gh51%c| Ecm1v?yWkut2j Fz -,LM,? z/*h cbd/:s c+?$[e 4|$4%i7 _ _nFux11`_ q2zoB ?ϲNnUImMe'C״O?jcg/ve֘;2-3ݩ+gh\Dw/P]IJa_moZ6g[M0}$G©H/5eOe7)u_>EA^ Bzռ;θ^d#K:كqj},F'r#jmEȾ}<_ȹ |O ? _\8+ZԫQU]=^cј/X>Ab]/CCb  OHu.J-qYe.sX6F.m~Q H gjěH1@NWT`'CS#PM R_}@7kNtqg( iBsTÿ˃ ш)T>aY9; ͟ӅR*}G"aH%C~uң՝&0o0uQxƽaHST_\k;Q`cwc v̞$nL+. j^(B[\`-{}3FjoHlOy6`F;2o¯`j`Imvv{߼\\2rs0Hރ{+)ڽ:v;uSP ݏkZ\Θ.1ʁ:2YCp~鹒7lA^/X5OQpj(8t̜Ҳ_%bN[AܘW扐M $ޔb l1v cEԌ2Nod9wExw`SSM%K+"7.य़D}TVZڒiBtC`6?7naęVLU )h)ߟ"3um@C.EGP ÙVaսq$eE |ΝM;OՁE|ZٔOi?9v9u'XRJ#.&4&;C՜s_"V=]); {g7 hLIuJOJeY0>۝ɤGc^ 5nu'] z ]QKh/b7BKf`T6hM:|j$b5PR|e"_}87;ڱ>&7-}Ȝ.rMFIy> omQ1ZKY'55DDl&Ӓ9Ub%/4IַSlwPך7-}]VƼNRUveG0L:tzF'^5[21Ă^V5PGx8sb.@x,B붍wF#,"7[ l°. VYemAe2pU,NVf: 2" E1u~Tʽ&re uWg!l'7VO3;~v\Vܖ\_6,n]&|pվXK\9-^=L,}Po`Nȯu-{qiH"SH.~$?*ܛ K^(E@iHGY!K=-y6rl B 1qjd+g2;$SV>5u`{I-.GoaU! q:Ś:؎chqV0|eҡ\^h$/Gr砓F9!v M:SŅ Oi:F^PVD_X7J_2+l\MWG;F O& t$ȶVBRpv< \.]G.+Mj}1wu \4%]h2t6|6 ʅ|AY#V"<| NIr\Un"莔RfZ;dA͂>i>\&r{./ljh~ m-R@!'3OdVhrh?LRwFSK7BJ? xOzFܮ!!ɫyE,[6YYIg6\P#G^ 0حP{"+1j lGSc]2b٬aͱ3!~*;䄊3Z}(tSIkz0T3.Πkccn!5obhՎKlR\ԟFҙә4-5}os?ӿWDZ''|<8,ZBacͮxZsP$#ϕ+ӕ ͠8 'eCZcVPE,˳ه| FHAVD_e+ʽj,J}q{N4nB`f=C;7`R^`˔S^y8p􀀚MT=O"K)k`Α'i=l[-V0*Ys(XZd7_ j ~=0}9n:2ΗF!a Pʁ;\6/Zh3goZW5|q>P{3Hxнoᚔ}k_#ƭN5NU(c1RQsy0]r-Fb-N\Vf65"D(72 vKBtӎYہ,eIdPg 5:CPU' hMnX#u3!̄V}Uvd9G$-+oQFnmְ;6, >@ RtSd۝$G0Sw?e⦊!ˠP&qX.6>v8&\gYڒy-Gasƴ%* :s2|+P@nSmb wq([vMmՓLp^^V8m{j8$U70w\*k0~[d`3jZn\R"(it`O.kDtrMR~%Lr KށmD!o)v Ƅ&6eɲ+Z=%7vf p1,0u eu&K(^Pas6C[̴PަQwxjP3 bCHj5%-0[<)]#¬QoXBR]L+{Rr=u;yq&?%}L5 yHQJTh)d)ЃI}@ueK_{&8kI ԿHZ?94_LJeJ; 0L}bcBgC" szbOK~QZ[i@Ϭf 3 Ke~:4\0qVtM|y L8o .uUo3Ϧ_GiDnToj Gqtd^]Z=aBu-XwZQtiSn.bW܃f0=4uě2t뼐5FAځB&UIJh)< 1^$_,Z/ށZهC4; RDK4ɉ=+ۤ+}Q!U[7(%̜X0s]sjDJӃ;'8.H6Lj(TҩqKp9AТ耀%#[Oғ iN2C7bOipI6lhݕta:I7ݣ^[!E+xP(;S0BV۟Fx蛣-^/}UɆ.EadxC9MAU|綪/}1:NZ%+e~CşRzQDYCCZЎ9YpdX /L,ÔT1YxjHta +hD 3 6Rٰ R%&p)?9?nDizb\Ij 4x!!(U@wG]%W5ˏGy7n6 6iGDsmYȇק|-X2mB\eJ\3@BiXQVs7%-1! eRkQ`5Ptzݶ rNNPHcx:kqNu8 _G9@s[r߱m8ɩ#D1;8E* w8|_%쒿0( J;^YQ5]( a 9GU>7>|:(ZŭB5kjcTMN تLədӆ^PPM?Ci0ASeθ{uBG.+yc,%oH~`֏xS EC,yn95!S!ޥrU$>UXb Gщ}N(u<Fʔ!19Ys|=Z G_I!rfǻ@*o}b\itRs;`R-܄&a 0캽A} #hE#ܭRdO& َ.bDWύ!%pڰ[P3ί5KtHYcϚOLNi#>jiy2s!۽[ňot!8*kmW7O{'Ab5y<(BK4am=AjJiq~\1σ7x)Jh6%ӝՈ+2w>7hȼUb-P>gu[ [b\!|FĄKzk-x_gw)AyƋ98؜V^+]]3vܼy?(3l : !ɂ. ?өZh-Ӥ^.۬0p5bրjq[XښuwLuS|R?s1#zQ%PL_=9%\m0¥-X{|DNa–ŗ0+8bjF 4k`x|r:ϼC+UQ>s},xr6 e+^#WϽ;CDN|kdbH [S^UYC䓮 O) .YQJi<āEFIDn'7JSJS4g['*A9Ͳhkm~Ȼ^o !/$= +ozs''8y-MR Ct *)s;d!BC혭w[yȦ:.8Ccw2xh*ٳڏ,?Գ73zʟ!IUU%?"ߑ\O+Ԡ 3gAgت]W̾F*=va3N'%Mg1F60Sb}:d\xmQ")-kC Vb#6;p1E PYH ^y Hò("~SJrG Ɠں"EvAZ.l@l;CWkuJQ %QNaX@Q{>4W\t<~eݻ_ZbPKC ':Ύݵϸۊ4 ]d69ʦtEBo{Q|= Č(J,Su2+Rt3˂ZW/E͇7D#X~?q569tɵdh~7LOKJ⚄KU7la (E]jvfd Hɀ56D[N_y;9}d,ai졝B=1%T4Q]fKFsO}K[8Ct{U򤝘h%~7'Kh&ΔGśhE"qKR߫ͫg<x^# NR~KpEKu2!:C!jgkk^Ȋ"=$9Q!>x;=,JAqÃp|#܏1d|ClKwWg=VS^/`s3^QJ<{<3vf˴ѯ:%xnjћF\zDzϮ Ϛ۶bC(TOkNfȭ쟎zueL<^%e1(E(aRAPm01U$*\l s,D4㌔[%UDCXH>6K+3PюfZ[Cň[3KluRB8Xd=Z*taYzX2v 79.LVe]Ǡwב9L+Eynr W e>wPGXf~R|Dl(&;vf*JW;"n2uLq=#/3"*#vO>֩m!} ^rvjzFpSV"eO-]B>WKJ١""0Dzzc/` 8QK!~>,vQ 7ʇ\&~GsQ$=ʹEq)?`G8cQh枍(f$6tfYdv9bɣuOLi$Wz;=wRAݯ3bgveG:Ky6YmxƳY84R i{awJ%:qHZ Hjnf&'U>*,jP5 6ʨ0h pMء lY FS3Fs66'2 Ay#se rq=AD&UAZoR3+|RN &!t&sz{)W;lX׀}}Ģi뭘C>vV0r"S-)SbEu!vid!`Lbk&d64g/1jp'S{MU-yYBf>vK,,r\ e5ׄ7ȾwVapR=⣳FX'hQ#F":$S36gIÛf0qbmbe51xalXyQ07 Sȍ6/.S49q:Q`Zt\7>v,Yțd¾%VSaLlKUTh/J?V\,:cRܣX9=)1\%Ȱ6,GHs@S *Irlґi ~ձL)bFr21#@M9ҘΧ8nPh0[(0r}L <5v{9W,FD,ؓJ;awI/9 ۴*'ύ9]ߐf5 0䅜LJ"U)98S$Wz_찲-b^|Z`ixfWn3Pi n>iPO&&rXr\K WU\4c} }%UxreDHORՈ^Sl%λFRkڮIҊ4tsN%JdbqU6D!R}][JdXo:_QA 9'k+Pee7/k^]*b"{-/tqvK(%}du`յ\ft|gnYަ!pTF ڃ†lM$Y;s>svC+zJ;g_X ZE whm; #DP~?54?m_XīƊQ '2V HoinL^Qɢ34pu2/jv"S}ozA<nPfQ6yʃmt^/  :%8T% uAX 9oʥyr7k2[# vSL0S.D Hf13[ 2`'sM*څvƏ[=(%ȥ&"J>r8Wpl3ܜJ-btd+$$A.fT-6|BS sdOO8RFfHD { %kl$JE(LK,"94'B!(Jt#ح'uav}N)n ȧG8'!i-L b(BAJK=(U2s&kZ!&40˜E>( ;(!d^D(` Kk•/9C kۛ,L5 Jp,xkp'VCt )ⓈLtVHQ6`V3L!Z0{?G!{ďلi` >l?']]2xW '2 gLvcCoxfFct/&^ZwFU"D]뾮aŇaȝ 3ofo7v sr) Zwy,Cxx,mqle_u|N6WZHF\iyZS/Ӌt6niOgWt)qbE;s6|dͅv-MRPU0q"e~(#Ȯ*Ya ;Ԫ8L'):hwAֶi֮TC~bvH@NI~cA aСȍ./f<[ ϲW>&@!wq̄Y3![zRUK4#Ae\V.#8q <Q 4Ǖvn0AP HmE! A_tr TR< ξ~u5hƭ,WO[kkIH˜Pjs^%G8Gw[. Rʉ~9f[LƏ|?vLsSe>S)(o9qWh3쇁?x|XG 0ACMɓ;A*&9}:d0e꿾Wh]+Pb?Ef ޴==c,=ASd[ϵ9BW߄ xZ p,k(h6n$hkoWfPޥHN-1CRh[# =;{rw ɚeqpܸ>0#9 rMh/ŜpƦ٤& p=ϒ)K 9ʴ~czص4x0ub5zq9m_^,799Zʙ}yU*ëB_nd_Q3_wKݕLڊmSdђywI$t٨W[ V_.b(ևg?tXG3trE/ÞQ#bʠ@$0JD=H\ooĻX׶]J.]3SJqn9za/(S;(d5gb.MJ[%Ύa#63 9ZCŲ5ܓE*2 PrTt89Ìp0x ^s :,>hEՕѸ(I\#ElR*S;3ԝWI6$ G"nY<Du.'NJ3rϫٙg|`DvVUyӶ/X1M9gAٱ<0U7l:I'Pڟ+΄-q?I`v~j*b4}óM=Oe$:e]&@t_["/8y~w+!Rγ*~<i ^A`G a (J(h K-(avVg?.3+(7is9H'P Ois Nz8JsL&umgv&PP)ݳd87ݕ0k/0Sd|&`ߞe\]gꗡ}b&ͷlfs!gKЋ(+PLrֹ yC ,L81Fs5$*H {#;mnA܎%V/N;MYM+|{2EN.iB7ژoL2QxUʽhւK n{JwseTzpvPs>zLVa<>5'R5rߜ_& !T5y/dX RnDyWR8[ܤEۣrm^)?E+7Nu o|(*aЄ4%kyc"uI3XYQmZ# e .Mxb=2+/Dr@,@ @QXR4DZȣ cf# H%.(B WͺI?Ϗ3"r ,|qC~)[Dqv&?. RrYí,\Bʁl`!ߕ=W'<VelCG`[rwBf7!)>#-MslB?G9&QkIm5`uɑG\xM'arm8J7c) {XkRl*t_r^f=E nm_\vzhMQԠjz )|[3\ W)ݳ1H?'4+L_빝X១B#V 1 G^vNڑ45yǤVx;?yӞ"π P,މ+,bppVĐix>gu({SCgM_k:;s) c-NTK1TGʋd439*YLJ_v G_*V1Y /x{!j=-$A7_>5{ =>O9"%q#g'k82y2ٳK}c˝!b SGPǯ˜, 7YP|qb)ᳶ(%[>3rx5 =h5Kkaρ**@.EsDEهl18H咞**agOg5g%S2L,mk0\Hj !WDά xOq4{^*oT[ar]QwHo5N_[^8$*K~Yъ4Rj||#4&;h Lg & endstream endobj 545 0 obj << /Length1 1644 /Length2 9664 /Length3 0 /Length 10519 /Filter /FlateDecode >> stream xڭweTݒ5@ڸCp nhq ܂Kp ݝC{gϩ}j:VS(0`GFf^mVE'#+1@d qLc Oio\C-t5@{k707q|#1r2WBo"dx(&w憎b;` OIao4o!tu09Z~#f&V@77?gR_n#ʔ-[l3 ӟY1X8' Af- Ch$v| ߩ E7qU_% x[26=Y4Vd?ym dRom1{o r(Vo}ˮfcfTAƖ6ژkoU _ *VooŷpTu_< 9?EDwNn+7k|K/" AfFff7?bqcɟARq41yNo_t#,̂,RS~tw@ժN Y)3x d}6sh-M3ЉeEՑ<%$BEǤ_z~:-ɬKIY p-7 /hV:#]tY|^$ nW/\3\?:_GdIFd* ,4k-r!5?NxHtLUZuVhsF72}' a.|s Y> :dtvP:37jz8{5 rP`i†PA~'{v Ք#E>~4C$ˮKؕ'f!!- ڣw%QVDJG,'` GUȜlQ=IXFHeS\z\&7v贵s!M unwӒl Q,/%Ş}䠼^ցl%~ӎnfI|Q䩴}i]nFR> *ԼT3[LoڽLumr(hEtC(R"/knFXOE b)QJKګV|)XsWpq};[n~z~p|^O8Iɲ|Y# 5jA@?76^Aa`۪6pEQ! $z@n(*.u&0di\w/V7NA\r=hj<|ST*g!Blٙڜ?=Fc$M\ߡL'^A5>Iبc;k6sW~7`Iþ NO4AbHvVziT>^Gl{:w-%*h!#kzXTP呾 GNdBaf77CTKL&t;r/m)zDsݍ>5Pt'ƿ AnN MRl!|gJriF*_6K?5AY)tR'4FǏ}@'ʻݯaƯVgTd 4T86zߵ4[ rvN'W*A6M-ydjhi(%#C.a6f5"l'|pXɜ9v,I9"RD#rʴeފ6|Cpg1B?)cn199Qфd.y<һ0Wa '0h!],dk6k;pcXl>j9px>ir+]$ -&\qoMV/u`uABŽ 1TMU#9it14귂3 ۅ~U}Gy娆X@5d]a| 'ȕG+]f]DX I6L,;fe9|d7M? =6_9R`X;V̌ K0"%fk+R`Om ʣ 8&9q1' |S<@Hm}-&35^²Qlw2h!r QK뵯ޅnט,jrwx2em/JןL v%pyJ]ȫIsP3?0 }6'#V$~WQ%COH3haԸ+L1r%0FRZF7: u :TOW"c2$حɊ}%?S:M"2U~aM.aXUQҹU=qf9 }v-]E)Xm!P2rT,He1]I*z1 hz!0Gv#Fr]ݜý}DxB\8D =%66gN:Bw6< RW3{CCp|&.Wvu]Jy<5=ߌ 8[k[yBSLWh na %/,<+(=dhш*xKEgbP&!'s !w!b+' Ē6$\7zx;FBk𾨒,km[낶ơ| eG@D1žD-dhpދ$n,$<F+4!Եݕ UgITrT/Gh:h}hLͳ!k#ṏE,.LȟG=? jRg?5t>6HOe;(s$RN4ڒ*ʣiql)odB"oϰˊjbhgs]YL+Ș1*L]y{R[׍ ΕO+tJ{l=h"—aT0(rPb0x5t>:T|XT]cgm6jĀ8"(}7&ܣXn<At/7ݞ-ҋ]>AŲyvm7SbRUx3eol٨ݼ&8Bɼ Z/n[J*,NBjQf#KV]d]C^OJ|bpyF遣'^XRlxy[r?.x僽Q|}*x?`ceL`Q o#qNlK+- ±q3CԿLs%`Ί V>1T* Ń<;d޿-[u/&_ ^&kvq>h p}4Gk;3d: d>tS ڮ)7 ǯ5}|R{ 9 c@I^#ڗ RȸNn`;ׇ|`O TJHcц 5oW[ܩ ݭH£k33-6DB"~‘98DstWno;2 ZuT#x)O XE_6%n 4N! Ss:X UFoAL7 u0r>!Bm :g8Ӿxǁ؜x/5ry`D('\2ɤ۷^d2L>?m3y_'Պx;3Mjޞy4+G31~'?rtm<˅o>"JTQYM?;)8zddsY%S_$PH= /sH_9̏"M_7\L[W/,H ToSwJyl4g?њ]4[oÙD ^8t{(Dn Mۿ['jb98Hc>6nypfuyK--w֣J_T!Vdl|5K~@F8{" ~-vݑ֑_j}0;իdmѐتsrBX)spj5m4ŕpy?ߖ6`pp"!v!'#:?\sd= CcϤݠTUk_]D4vA\vaƻNJm T{5&IwLr.J\/ Bxʹ(ݴt1m|H(= *5)U پAڷ=AW>!gE\"+ rHk\?aY?pqex-0lbv8{FN40/N|VTJ#ɯNY;ܸLFE2)1Q9 +s[ .N pgw FMuFe`=3V%GZej OVEȉʪ:JWw~"lR2(b", K [U K Foә)#kC>ak=+lHNʗ=ln0֪u1U^*3L*6"VFrTux}mA׻|@ܒúQd\bt)ZrÀ@8Ub6a]`<&pS1AʈUlVHx ? ׮iEe'JLֳOGbցPn.Yʅs }tC=E5XD6Ec.˔j'9*,P?adC6ӎ>^6`ZJG?Pա=ڡxDjC~z~<|iLm@7~HNsϩ_p]Զ\vf1ԫ{'_a0=BUxbNβA#7N+R~k.ؗa.pT =8OUbaدxh_7Z YzSv6ff0*OTYޫ9N7Z_ɬp)WqQ U~,uISrK=;`xbq,GgSt#o g8ggDWӦTL=K閂X亳N{1= :>d4D"i/xbS\ {FP2!.47@&~ ^lT, %&A}trǗFV۟uIa*d&Ԗ<]PEwmYzZƄ7N/ W.al*dӐئdj^/L heb7@Hpzu5ɛ~w/4ҳ]MT{xR<Jw3LH)Ok8~0ι-܎ |\S+&NNj=>%QdIg ՃMYpqD}eԗJ> 'S8G1/_Rg24 Yח)[g;W(p,b,j%0jh$`r 4 ncR8;Ի'U۴۪! nhV:HW^r>9Qe(& Q:.3!eXsP~ȱìmنnu \rd++zoYu% ~xqD*bB ]g]vKQj &b>Z9N#'ʚX'S&EFF# ^eqM.ZLgsWQyX{ߢkϾ yBsN q]d;kz@ u_rGvl9H~||3\³`pD `N*Cr/ DRg6=Iܧ;=/8{w:3Gl('rDl 1TYOkvijmy~.Ɯ=,G:RDJ9L.ulW53HxFY>ϣYUEN̻a!zvѻyhɬ %,Y,<c&gloR>uò1N ƭ-0xVrSjlUiBk3nu4ݢ}b'{Ok}){@4/jw 7txė孟dh5W]"9\$õQYrče(9iRe pj8|ep% z?,Zz>i4?wt\qz4kH)qpc֡2ƒǭL~sȌѝTf@NF)2֑VN vCq3#F8WMo}}TT>¯-m%u6j~hbӭPp"{(:S(:5lAV*fA>0{A_n"$M^rL+l䫺?Ky)%YdYJO|F}BV#.W+ȏnaU4 gsCuﰁpF^=Ph@`EhAwTE2C)_AcQٻ=}<ty5]<ƝWHf0a > pܔ-{3e-A,L0Wy`BnnQܪ> stream xڭweT]ݒ-]

 3Eg'IYgRp[#FD i]X!@ּtSo:'I̝%S_(Cx7|O.L,CʻI*M+6ѣڕy N\_~ HKf]4JNrEu\IԨ}ї5$>jO+P*-CTohBkOSY,ɐS1.~ t3j7bMFT#Z/k-|V`ŵƸ Zd+yqkuCDQw*U@誊G`L$X ~5Q9wf"ZMOTD F>aS:tK_R YA|_UmBZƥ_}S8/h\=,q̓o=!lAA䪇<[<kLj^fc b [7W-yJTc@(4xZN}9w lI'_T>!yek$]Z )(s=q@5voǖh[ZPG${͵b5ZU0QonQWqf-{@;NnXUhѕϠA*I~bh^Ic׆Ovdͱ*%aj5}wb bYYg'x)VbOX<~|27w%9qS!ǂqXxe}ɛAGPZ?rO5;_6rr1(4߬0r>ѫw Ҫ:odE T'cm}g c@kӥC/:b/=?ĝ# #a`*ai=q (s$y+K((S(^g3Ѕj2zprw1X401B:$0 ͺ9hDU.q-@jZ*Wqce`Eʧ;]VṬYeif0:\P~iv6 _MEKE n/gE BЦnL'H&.QZB1D4~BPUQ) A96Ή ~E 20:/{l̀upwt̑:MQƷ{8e Lp|57mmYDI4 rZ#;d.ecM3^DpWe`LWW zdH׭Q#" INUT,%i9|tN@GBµUjy9b[JU3r`}aZE2RBlH h5*I'y\ujNo.R/yzOHˌE;\Z]ő$٭_GLY#l.SqjGhQj}M:sqjm`EW5Jn/#puLv,V_/:FM6[#xCa3iesAO(UKFl 6ŮL\T,ߘ0"NԄ-{މV +:Qs8ɠW\ (<.'loVO!z,ur:i<|+yL5́ -& *2zA&u( u2_p#'oj_meYZeÊ&5p>r%hT1dr? ߞM.>' >9hBNF֦=SX;Nu": )ίBGl,'Y~Aͭ9h SAF3,$2M;*ۉ̲q)/bPכܾ`O êwn✂E5s%np*pqZ}YBBSͺ5g#977<"xyf#)!m=qEWۓaz )쩂 R!$| bx.Z~Ü2y)HT"|O К`[?>%Qb8cbDbu1r;㶗v3%'CxX"3簻T rPyos|>gj~)AvW2}6Ͽ Rʛ6mIF לSlkx͗5myCESxwU] NW<%R[;EDfHh˒LwMk嫟vk]Q lj4ӾbK"W}-}*A?'o]JKSzvIvs}u/2M/n?g!D 1|^.|Q(b₽]<Т;lİI~&%])tJ `0 "N̾G@[8Tu"?_7c&U#Ma9Tk 9@k"-x3ʸHQ=Q‚ZR R'>GX 5OHAE,g5> v#7r񄉃]z(y'=P#4@_l1YDiUWm)^g=\)KߖɄIhKgO9{X:ڕA[ Hߡ}:\A{ʨ듻9!&T╏H#iEzA@ e'cv)%sfbZ5NĘVQ4ES.WTE򨹔 >˲6@%)N}%|',i;DUāT4qqy<Bd J98hZL5Eod-1IquHjpCK^lNZOP5 8f/C~oOY' "Gu[h7& *$(Zf{ds Frm~#+i _& T߯F,t J~U D1M|@*C<gD>aDOs3F ,x7yHQe/s9p*7)_$-x2SWmOY ;DEB_&g T~r#iUE;t*Wu ^1=&= .K\T-rPKAR ǃKAx{]WW! 95F򚕯1FӒ ?j $u>9^ZQ4lvtԿ~.ݜ#?+.j X1, ߡavoZ9K~\1fUP=rIil;Ԋ+iinR=R6kE,SšrޔV/,п5w<+br™^83|Tc6ͥʪo+uκdéRnkѦMژqYY1twZaE{?>!c!.Egs`zXT`%Nr, ~GBHz?jnaV9Wه~Z1~„AAV>c|ī$0 Y[Bj%taƴYiUKQA;ڢѮ%D's8()-5$@bP1"Яx#ZJB2ڶc/bh5i)M}$t:es7q9N C4p`Tۄ9"]^Ֆ33#w/p6vf])Đ#L0(P+Q->Af[R Q^EG:Q]YA *;Q>OUA ~Sȃ9("-*DF ^9;IAI1׾`*cԖç[͒߫w*BtJTUx?"PYJa8^X) +z~=P 3RLp,qұ yqon^d"ڈ,hyAEQ,8z"KRQ%ݠlI&~5)YU<lvaF>ƀt6,t٬=MsɘbJH_Aʠ#, ˴}ڼ]ƿ)ՋaB$;'*[4[s&*ffVyd-mG Wv΀8ݷ&|W3 < R}[fC. DK04"wĵ1u.ݞ/3~m8+]24Wi>!|8GN@&NUA6@3JփN|sT/$q0`&G CHs"LIi=H2F|Ыo8?X9.&D[i GMĴS+,ϰ{nőW{-3I*L.]b[^ݾk͗׵~FPa"oM sq:wY{kŠ (miDmy-A_-Jʹe˴UqwMʵ+A?Yo$Z}rH7m@2wJvKh9NA1:i{8:,c;ML,,z%mVۿts<'-p$g f\ө<<|l}O$CvB]zX-4B\ҩa~ȗRڏ'Ԉ1W=l5op[/͒ROG*[ۏVL3 SۘnV5'd:ʝ@bz8 k& }*٘236v(0շ-G_">g[rrt哺X Q O'W]&+hw[*\{:n걤9i1c6}G덶@+9*{Bhr21BƵyk.Mvon*Y/6XmOUk FQ)dS0YkK5XE߲̔5ʏ֛mgoRJjSLҏWX %un#p7Tq10Kx Al^;tB!g{=)\[̭ǫ|(#\-|aWFtX?A7f ?!}\4&%%,̥Xzv%Pg"{t&4q8ߡpR5~h| K̟\E& R%}. 4òqc4MBIZbʋF\9Kd܀W}h/@$y%8We,5|8+YA[.l1#h,QnoDԾbdBkad-%ƀ뽄Tі'FEѭ*f(CTՖޱ;ڨMs O t~({ 00%ouvw\jv] p8y,rf\ c `Ͷ#cpV9t.gI܏.Qq.t(\_(nzTn^%[G. qs* -B ݒɹEѱm&"H?(N P4LԱO$ )7l݉HΈ~rѵ}d˗rx|MH+sިK_Rg3{ECy 2L Ɔe!y;UjiKj 9ٍcwUÔQ~")+{ǒLBUHN.`PiE|IVa@y%q9zJu?a喭%ԙ{&U\ƜDr!Z^\[G^b z#O$(|Cݽ#Km[0gNFڬMUVG'?iӮ)kyDa\ٍqw^AӶg"!)B/DnOQmlL1TZxYo pN&gIH*⺟k̩}.ԡ:ݰ$z'D8:p"΁?| U_,=1DQɮpmV:^v+/p:.]v{M꽅45X"ɦq$L"]5 OOEHTRǁŭ~kW֧vU:{׆^f' ^^4;sf(׬0BA!2Wݤ'^~әj#lXxokIw rp!0TRގsr d9)g2l8sCbq?+pu"gί= Wn>^dC f3ɏtwjhDjOj;K7l%[ ȵBr~gnA]RiO_IY~p;[| eSoNۃ Ɍ \e;h<7Qn`^Х3̖M;WbL$OaءIJ\ʂh:m"|\l>tTaŦĨ7v#je Jo3gne=qNVLLfY_[\.0 ڈ/xGu-|G=$jo|qT_1&nr*$7>レ\y ݡtXk<!52aqf4K`4\N!wÃRKY߯jƶ:rHPҐAc,Tf3W(3rvdVlz)GH_cO\9J'g^W?זƓ/=)윔Մp=9(*$6*b\d?t8Lm {772I c{sNkNL c9kQ!IOasipxEH${ ѩQ @KZ $ a6Mb0Ga[)%*d~ M׏[!˖5j<[1pZ g񢊒xצj W%o0Q2=bqT$ ,2ɜsI޾J-O,@nm^~Vټ}K4r>gN-űIĜ]ˆST:E+cE.i̐TE&jlϑ68Ѧ+  bX-t._,,\/.{X&@2VcF?^^MG)z (3~0Bɷ)`\?JNJݬsVA6h I9 /Ɓ'6=$_M.8#j>r^K.A8~EoZRTRЛS ź|,n-tϷFsmM)by0wۯ) e?qVl8q>gagH4_AU)gϚ'=0ƌwQKw&vBQh ɕO=^ !&l_M w wxQ<1b>ʓ )/̠Ȃ.YQ%V;k܆8o 5?$XyJp.YJm/<)#u4>AB Oޓ%1WieZ7Az͘薵}L#\|G{_2÷z6F]r]kkUq -)!@ML9h@6o~b*o6V$^k0]]Ur1n9. KQ縷kˈ4T@iOö8WUx'tr.:KCQ!B㚰`]@x?C0KZVȪ2 2[}(.zQ'~$ӄ#i9ARse m%w>dHzdr tB* lRVǟӵkn$`.n"9M.Kd1Nik{SK  #_aD+=Y^dy&+ ψ{6v8GT}sN4$X(?8sN_^j`h@F'H͙SbPEF/ժxOd0aGr__sCE/r4\ܪx}7]/2gV_7Z׵.|j V %pe\r&6ymG7_Epou#ޅ~]r8!Ǔ¹\ҵf"lF4cL΋8@cHݶJ4ޯ0Nn*,pH뙭 }sGS60%>F/ˈLGc^ESp\MrATĩ(D0VP&bZ﬉;U.c,71ӇjU܉#y;|ߖə݀Y,jxE Jښ;e_{xv4-<zA0?'H _< ʺo3BOoZ/`3G)Y1 = LZ)n6ABkiBP@C8T_I7,_[YXµ.d.!DtAqT/(XE9"[U0zgP2м.m*:~vs: $ՄF<_ j-K b>WF7/%5Oo}φŧCXz[ԒbdUFe^EDFQ0FDˍ37*MxbF<`:fͽ TkԖgO57tVg΢ \;!A7|x?:;C+x KuVl.olvoUNS >6鉘{$ᚢRX%Y<0c/@`eK|)cM a̽XziT` wOuxV9U;| r sح^p>D0ZIbѪr Ae `NL;huʈv:Ȗ?Fc Ј I :c._;$ 1Pց$KXڅ()abr,WV(X;V*ڦ^°B~\V\V-IOKuYO]QyPVcPFx[iVjbboa7s _,a♍A0w&~ZN c4k*cѧEj.z6As}n~uH?hTVWgᖞ :` ɂG=y~Z|`XUM{XiVԶ 57)Pͷc P\xl(/iBa|U}8Y:`?coѮCx 7X> +?ZpǢm==ҭjAQ),92 X`]%,2xKoSL[$[ȳsFvt9ϫG#'+JKX :0bRbIMљߗ<{FmXɐќH}6tObĥ]6{[?A'JtiʱӜ*kD%ŹLmh#S ʌ-j2bΛYKM4pz?I[?N2J9"l^ endstream endobj 479 0 obj << /Type /ObjStm /N 100 /First 915 /Length 3592 /Filter /FlateDecode >> stream x[]s6}ׯc;_3$quNz<;Mʒ#i_sA"vv: /=.Qj32ޱHgIMɀsRY֊\ ,T1)|T"⊁MˤǤ&LAJjT%*t)*t45SVp4L9K-SF  [Z* dV5H- X2,0`#ZRRaԧ@+<3Gd`J*9Pfe $܂UXqJ-xJ<` U}f28 %h)h^ p sNS˜w"KtѠfb y)H(% r`  LdpQB4 ,jPkђ 5$AB)tkpѨ7<-ɩVC)2(*ŹiAB=SKC$JITFMP(rP@'DH@Q&[g5=KDi%!T";3"' K#~9GP(xʔ2Bg , @XG$#SagɀS!Jcl/f{1ۋ^24 Rj34VʩΩɩͩ˩ii'=lOf{2ۓٞd'=lOe{*SٞTeo~r~GtvQΒ'_2!t$fT@օ &0bv nB}M Mc+$+'bu= p ̻Er1A4s(x&`16A tј1XHS(c!qH5D!(ԡn7bP$@ 9RVZ^1XOGUhBR(T@z3MIVcq@Tٌ2G~0B A&d8#&C̓hLoʒb,A55z ,F)Z- h"=ސ 3-w` >􍵄%XТISRm S;00c9H뷂*j`6gOT&-y-"{;0TQcBPy=u)@ow*e(v0$Mk% Ӥ>&p׀&]@% \ՏB4%ߑ&=#^Caͅ)~ ILߴHv.v#j ]5S^ [^RwjԿDv~f86\萎6IXtyΠ{:tʈ }mVyU 8-N\٨t>< 1>i T[x]l\5FNm<u8kR:4HjO=iӖ KO>Ɠ"Iᱞ A8ʞ@ީ=R{Xj7|'w7|t5S>/RU)WUt[Ψmp7]||>ί/geO ^Og%Og9~]{01V_^}prw\^ݭu9)ERN)78/إmwN~ן~u<9=׆va]ׁ-QF%.%vI#ZtgyR+5/f-@(lԈVTJRTU&)ИO/^Bcs X2׹k}5+vC/o׷ys/=U~ӣǝ?Yνp/ؽRH꯹_v?X%*e<[5b7 }Un\p:Z\m"Ǭ mѿn^IKW,rC,p1\ͣoqOUhcM%Ql8ftՑޛ5WCu<ZAN8ujjHդ'6x@,CyM n9İ f¶ UtUЊ#A|xlEL:BjlbVHL1*7HHʁcQ0ԝHK+1|}[A"׳L7GC!#} ~"~0;Ѷ?N5X\}xǤ>`}*6 M*涁/LXfzf}_W |WQ@yyLƟ6UhzM8Cw;Q4˟9k_(mc9{LWuU_M5CWߞ0!K 0U{Л06>[4fd]&4B_eU#?-ƘiY,{Jgia:ϵW8Wcs{3+?ڪOӢs#1umC/62[p)zmrŖllgK-Ɩ\-{ٖcK^r/:u܋%{^^,܋b>Q;̋5dž{.cy\Cyh}6q ݡa;\5TiǴo3}ѾMthx V endstream endobj 608 0 obj << /Author(Hadley Wickham; Max Kuhn; Davis Vaughan)/Title(generics: Common S3 Generics not Provided by Base R Methods Related to Model Fitting)/Subject()/Creator(LaTeX with hyperref package)/Producer(pdfTeX-1.40.16)/Keywords() /CreationDate (D:20220131165817-06'00') /ModDate (D:20220131165817-06'00') /Trapped /False /PTEX.Fullbanner (This is pdfTeX, Version 3.14159265-2.6-1.40.16 (TeX Live 2015) kpathsea version 6.2.1) >> endobj 551 0 obj << /Type /ObjStm /N 74 /First 636 /Length 2711 /Filter /FlateDecode >> stream xڝK# )xqUfrߒ8Mr}jzfUH[MrrG #[ F GNi^W&FEFY5ip X Ob#(TdK,H<Ά0D O k[׆-Y^;" e )"vDGH2!J lց)jMXe)blH%`uӁcdZ q.b()- Cy"2s=Ppp:&8,NP^gqTz$̕V>1D Rkg; b!ѫ AB9h {n#6e"71<=J.+{`RPgIT)$LO*Ew5EY?ƒуOcsގ-gᇇ?(?muwgzqv7kfw;[ y6%/Sؿ6[X.5i;f}by-.wc[C:s:]F-9kra)̪j{$vHS9(y]m+;!s8"AHr ErDzfek r Ox *u܍nj&\uB]bY jiY9SGA1Ze9/y GZ,3PnT;uϨ7pm!+'RVt: Jtl6O̗D?Ǐo?L]! c.څlV95oFpVq9WA,injhuD6M3|y'Wf/|SYJ1;y;`jj${Vs籯kj;>oN<6j汘%\Z|-rmv㗧k(Z*f=5&D4p7E4`a!6K$!HL-Z q$B"Jm՛c~AuLBh18R۫xSj; t*kUF!I!kUiMhŋkK hԢbb bt }"$ bAai\w׹%tAҶ8>{ܹ"'p9 T%+quZl άӱx\w7iFF 1HT1 mm m@J@ڊ#--H[[6?ݲ@f}oAڊ DYv2v2 s\H;nE߁)@D9&2HIi/=i/ˁlz"mmXA8JMp@:G d?uhy@-Al +'B%,ׁOsɏDx !:qsqP ϲuܐX$NE q:P︙e%{m2KQo~qXPt(~Ϫ%9ʶU!ȆefqJP8$p{=ۨF(FFt(F4(o&.A5~cfŨF(F&-s %ڈQiMPYCL~ييGmܿЬ^ zhEVth%s5z5q8,!hE@ޯ(~^Vt+hhxZ'ZPaVC@+zhUV\hUA:~Ϯػ#ВhEgVhEV4g8cG6K_Њ>;h%~M%xޝ@V dE@V dE[@s٭*<&/hJ+E%'d}'}zuXLLiAaTO+ūHi騼`$wSnf+ MDel-ރeX$}]_8*6Tï>ҵQӨtfTz1꼗uQ鳨tV>ee/QyI.=~z!K;"$mb./j ?'VSw%èqu^m +W+v\p7 endstream endobj 609 0 obj << /Type /XRef /Index [0 610] /Size 610 /W [1 3 1] /Root 607 0 R /Info 608 0 R /ID [<3D7D708161E169AE7C4ACCCCF73A9D03> <3D7D708161E169AE7C4ACCCCF73A9D03>] /Length 1364 /Filter /FlateDecode >> stream x9oG/f5 ͎bw|t"4YFQHG)SD"J=z=rν3)_/^isRޮU =FJ6Nu{#ve{7]0J{L{ {hoi{al,i/`B9ihϕ 3!8L;@{<Gi'c,h-$*O UbUJ7op.%p57&܂p=7W}Sn<*z]]+W"UVt,vÏ0* ksaуSFh. jtƩGk-8K5rh!SWϷ t W t ĻLϬ, uD˩x QSnQF: ;sZC,5 {@zAAv$s.V>2Y@Yz \*u&#VeZٜGJCTS a**UTT)RRo4e9ѡ(Q-ReĢ9:yԠblab&nM5bz1: b &W̃n"Ow 18&Mw̗4 `vgr:o,et"\пu7%ir[[[YǾsYQrpM\Wt`a^a^a^a^Vf>FA`66¼ XNUb݅%6IXXb`cm e*[ C 40iX%\l,𲰱^w-v:}TXE,+^FK鳘llz CӈM#66ϼllllllm31111111Jn m m m1cbjjjj9߸hж cimmmjR4{O^ŏዸ:ӷ?~&s^O\]y]\@ej5 o-X αq! [`X Cw@;aB ^}0@AQ8ql<'$0g,' p. \+9{?H endstream endobj startxref 102551 %%EOF generics/tests/0000755000176200001440000000000013747021246013221 5ustar liggesusersgenerics/tests/testthat/0000755000176200001440000000000014176070372015062 5ustar liggesusersgenerics/tests/testthat/testMultiMethod/0000755000176200001440000000000014176064612020215 5ustar liggesusersgenerics/tests/testthat/testMultiMethod/NAMESPACE0000644000176200001440000000020413747021246021427 0ustar liggesusers# Generated by roxygen2: do not edit by hand S3method(multi_method,data.frame) S3method(multi_method,default) export(multi_method) generics/tests/testthat/testMultiMethod/man/0000755000176200001440000000000013747021246020767 5ustar liggesusersgenerics/tests/testthat/testMultiMethod/man/multi-method.Rd0000644000176200001440000000043313747021246023666 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/a.r \name{multi_method} \alias{multi_method} \title{Generic test for multiple methods} \usage{ multi_method(x, y) } \arguments{ \item{x, y}{A parameter} } \description{ Generic test for multiple methods } generics/tests/testthat/testMultiMethod/man/multi-method-2.Rd0000644000176200001440000000042313747021246024024 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/a.r \name{multi_method.default} \alias{multi_method.default} \title{Test default} \usage{ \method{multi_method}{default}(x, y) } \arguments{ \item{x, y}{A parameter} } \description{ Test default } generics/tests/testthat/testMultiMethod/man/multi-method-3.Rd0000644000176200001440000000044213747021246024026 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/a.r \name{multi_method.data.frame} \alias{multi_method.data.frame} \title{Test data frame} \usage{ \method{multi_method}{data.frame}(x, y) } \arguments{ \item{x, y}{A parameter} } \description{ Test data frame } generics/tests/testthat/testMultiMethod/DESCRIPTION0000644000176200001440000000033613747021246021724 0ustar liggesusersPackage: testMultiMethod Title: Tools to make developing R code easier License: GPL-2 Description: Author: Hadley Maintainer: Hadley Version: 0.1 Collate: a.r RoxygenNote: 6.1.0 generics/tests/testthat/testMultiMethod/R/0000755000176200001440000000000013747021246020415 5ustar liggesusersgenerics/tests/testthat/testMultiMethod/R/a.r0000644000176200001440000000070313747021246021020 0ustar liggesusers#' Generic test for multiple methods #' #' #' @param x,y A parameter #' #' @rdname multi-method #' #' @export multi_method <- function(x, y) { UseMethod("multi_method") } #' Test default #' #' @param x,y A parameter #' #' @rdname multi-method-2 #' #' @export multi_method.default <- function(x, y) { x } #' Test data frame #' #' @param x,y A parameter #' #' @rdname multi-method-3 #' #' @export multi_method.data.frame <- function(x, y) { x } generics/tests/testthat/testSameRd/0000755000176200001440000000000014176064612017135 5ustar liggesusersgenerics/tests/testthat/testSameRd/NAMESPACE0000644000176200001440000000005613747021246020354 0ustar liggesusers# Generated by roxygen2: do not edit by hand generics/tests/testthat/testSameRd/man/0000755000176200001440000000000013747021246017707 5ustar liggesusersgenerics/tests/testthat/testSameRd/man/same_rd_name.Rd0000644000176200001440000000044113747021246022607 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/a.r \name{same_rd_name} \alias{same_rd_name} \title{Generic test for multiple methods on the same rd file} \usage{ same_rd_name(x) } \arguments{ \item{x}{A parameter} } \description{ Should be comma separated } generics/tests/testthat/testSameRd/man/same_rd_name-2.Rd0000644000176200001440000000057313747021246022754 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/a.r \name{same_rd_name.default} \alias{same_rd_name.default} \alias{same_rd_name.data.frame} \title{Test default} \usage{ \method{same_rd_name}{default}(x) \method{same_rd_name}{data.frame}(x) } \arguments{ \item{x}{A parameter} \item{x}{A parameter} } \description{ Test default Test data frame } generics/tests/testthat/testSameRd/DESCRIPTION0000644000176200001440000000033413747021246020642 0ustar liggesusersPackage: testSameRd Title: Tools to make developing R code easier License: GPL-2 Description: Author: Hadley Maintainer: Hadley Version: 0.1 Collate: a.r RoxygenNote: 6.1.0 generics/tests/testthat/testSameRd/R/0000755000176200001440000000000013747021246017335 5ustar liggesusersgenerics/tests/testthat/testSameRd/R/a.r0000644000176200001440000000067613747021246017751 0ustar liggesusers#' Generic test for multiple methods on the same rd file #' #' Should be comma separated #' #' @param x A parameter #' #' @rdname same_rd_name #' same_rd_name <- function(x) { UseMethod("same_rd_name") } #' Test default #' #' @param x A parameter #' #' @rdname same_rd_name-2 same_rd_name.default <- function(x) { x } #' Test data frame #' #' @param x A parameter #' #' @rdname same_rd_name-2 same_rd_name.data.frame <- function(x) { x } generics/tests/testthat/test-docs.R0000644000176200001440000000242014010003413017063 0ustar liggesuserstest_that("generics methods can be reexported and extended", { local_load_all("testGenericsExtension") expect_snapshot(methods_rd("tidy")) }) test_that("multiple packages have multiple headers", { local_load_all("testMultiMethod") local_load_all("testMultiPackage") expect_snapshot(methods_rd("multi_method")) }) test_that("S4 bullets print with no issues", { local_load_all("testS4Docs") expect_snapshot(methods_rd("multi_method")) }) test_that("S4 and S3 packages can intermingle", { local_load_all("testS4Docs") local_load_all("testMultiMethod") expect_snapshot(methods_rd("multi_method")) }) test_that("multiple methods but same rdname are comma separated", { local_load_all("testSameRd") expect_snapshot(methods_rd("same_rd_name")) }) test_that("single method is correctly itemized", { local_load_all("testSingleMethod") expect_snapshot(methods_rd("single_method")) }) test_that("multiple methods are correctly itemized", { local_load_all("testMultiMethod") expect_snapshot(methods_rd("multi_method")) }) test_that("no methods case returns default output", { expect_equal( methods_rd("methods_rd"), "No methods found in currently loaded packages." ) }) test_that("nonexistant generic is an error", { expect_error(methods_rd("xyz")) }) generics/tests/testthat/testSingleMethod/0000755000176200001440000000000014176064612020344 5ustar liggesusersgenerics/tests/testthat/testSingleMethod/NAMESPACE0000644000176200001440000000014413747021246021561 0ustar liggesusers# Generated by roxygen2: do not edit by hand S3method(single_method,default) export(single_method) generics/tests/testthat/testSingleMethod/man/0000755000176200001440000000000013747021246021116 5ustar liggesusersgenerics/tests/testthat/testSingleMethod/man/single-method-2.Rd0000644000176200001440000000042013747021246024277 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/a.r \name{single_method.default} \alias{single_method.default} \title{Test default} \usage{ \method{single_method}{default}(x) } \arguments{ \item{x}{A parameter} } \description{ Test default } generics/tests/testthat/testSingleMethod/man/single-method.Rd0000644000176200001440000000035613747021246024150 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/a.r \name{single_method} \alias{single_method} \title{Generic test} \usage{ single_method(x) } \arguments{ \item{x}{A parameter} } \description{ Generic test } generics/tests/testthat/testSingleMethod/DESCRIPTION0000644000176200001440000000033713747021246022054 0ustar liggesusersPackage: testSingleMethod Title: Tools to make developing R code easier License: GPL-2 Description: Author: Hadley Maintainer: Hadley Version: 0.1 Collate: a.r RoxygenNote: 6.1.0 generics/tests/testthat/testSingleMethod/R/0000755000176200001440000000000013747021246020544 5ustar liggesusersgenerics/tests/testthat/testSingleMethod/R/a.r0000644000176200001440000000043313747021246021147 0ustar liggesusers#' Generic test #' #' #' @param x A parameter #' #' @rdname single-method #' #' @export single_method <- function(x) { UseMethod("single_method") } #' Test default #' #' @param x A parameter #' #' @rdname single-method-2 #' #' @export single_method.default <- function(x) { x } generics/tests/testthat/testGenericsExtension/0000755000176200001440000000000014176064612021416 5ustar liggesusersgenerics/tests/testthat/testGenericsExtension/NAMESPACE0000644000176200001440000000016313747021246022634 0ustar liggesusers# Generated by roxygen2: do not edit by hand S3method(tidy,special_method) export(tidy) importFrom(generics,tidy) generics/tests/testthat/testGenericsExtension/man/0000755000176200001440000000000013747021246022170 5ustar liggesusersgenerics/tests/testthat/testGenericsExtension/man/tidy-special.Rd0000644000176200001440000000041713747021246025050 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/a.r \name{tidy.special_method} \alias{tidy.special_method} \title{Test default} \usage{ \method{tidy}{special_method}(x, ...) } \arguments{ \item{x}{A parameter} } \description{ Test default } generics/tests/testthat/testGenericsExtension/man/reexports.Rd0000644000176200001440000000060413747021246024512 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/a.r \docType{import} \name{reexports} \alias{reexports} \alias{tidy} \title{Objects exported from other packages} \keyword{internal} \description{ These objects are imported from other packages. Follow the links below to see their documentation. \describe{ \item{generics}{\code{\link[generics]{tidy}}} }} generics/tests/testthat/testGenericsExtension/DESCRIPTION0000644000176200001440000000037013747021246023123 0ustar liggesusersPackage: testGenericsExtension Title: Tools to make developing R code easier License: GPL-2 Description: Author: Hadley Maintainer: Hadley Version: 0.1 Collate: a.r RoxygenNote: 6.1.0 Imports: generics generics/tests/testthat/testGenericsExtension/R/0000755000176200001440000000000013747021246021616 5ustar liggesusersgenerics/tests/testthat/testGenericsExtension/R/a.r0000644000176200001440000000027413747021246022224 0ustar liggesusers#' @importFrom generics tidy #' @export generics::tidy #' Test default #' #' @param x A parameter #' #' @rdname tidy-special #' #' @export tidy.special_method <- function(x, ...) { x } generics/tests/testthat/testMultiPackage/0000755000176200001440000000000014176064612020330 5ustar liggesusersgenerics/tests/testthat/testMultiPackage/NAMESPACE0000644000176200001440000000005613747021246021547 0ustar liggesusers# Generated by roxygen2: do not edit by hand generics/tests/testthat/testMultiPackage/man/0000755000176200001440000000000013747021246021102 5ustar liggesusersgenerics/tests/testthat/testMultiPackage/man/multi-method-4.Rd0000644000176200001440000000041413747021246024141 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/a.r \name{multi_method.matrix} \alias{multi_method.matrix} \title{Test data frame} \usage{ multi_method.matrix(x, y) } \arguments{ \item{x, y}{A parameter} } \description{ Test data frame } generics/tests/testthat/testMultiPackage/DESCRIPTION0000644000176200001440000000034213747021246022034 0ustar liggesusersPackage: testMultiPackage Title: Tools to make developing R code easier License: GPL-2 Description: Author: Hadley Maintainer: Hadley Version: 0.1 Collate: a.r RoxygenNote: 6.1.0 generics/tests/testthat/testMultiPackage/R/0000755000176200001440000000000013747021246020530 5ustar liggesusersgenerics/tests/testthat/testMultiPackage/R/a.r0000644000176200001440000000017313747021246021134 0ustar liggesusers#' Test data frame #' #' @param x,y A parameter #' #' @rdname multi-method-4 multi_method.matrix <- function(x, y) { x } generics/tests/testthat/testS4Docs/0000755000176200001440000000000014176064612017061 5ustar liggesusersgenerics/tests/testthat/testS4Docs/NAMESPACE0000644000176200001440000000013713747021246020300 0ustar liggesusers# Generated by roxygen2: do not edit by hand export(multi_method) exportMethods(multi_method) generics/tests/testthat/testS4Docs/man/0000755000176200001440000000000013747021246017633 5ustar liggesusersgenerics/tests/testthat/testS4Docs/man/multi_method.Rd0000644000176200001440000000066213747021246022620 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/a.r \docType{methods} \name{multi_method} \alias{multi_method} \alias{multi_method,ANY,ANY-method} \alias{multi_method,numeric,ANY-method} \alias{multi_method,numeric,integer-method} \title{An s4 generic} \usage{ multi_method(x, y) \S4method{multi_method}{numeric,ANY}(x, y) \S4method{multi_method}{numeric,integer}(x, y) } \description{ An s4 generic } generics/tests/testthat/testS4Docs/DESCRIPTION0000644000176200001440000000033113747021246020563 0ustar liggesusersPackage: testS4Docs Title: Tools to make developing R code easier License: GPL-2 Description: Author: Hadley Maintainer: Hadley Version: 0.1 Collate: a.r RoxygenNote: 6.1.0 generics/tests/testthat/testS4Docs/R/0000755000176200001440000000000013747021246017261 5ustar liggesusersgenerics/tests/testthat/testS4Docs/R/a.r0000644000176200001440000000055213747021246017666 0ustar liggesusers#' An s4 generic #' #' @export #' @aliases multi_method,ANY,ANY-method setGeneric("multi_method", function(x, y) { x }) #' @rdname multi_method #' @export setMethod("multi_method", signature(x = "numeric"), function(x, y) { x }) #' @rdname multi_method #' @export setMethod("multi_method", signature(x = "numeric", y = "integer"), function(x, y) { x }) generics/tests/testthat/_snaps/0000755000176200001440000000000014010003446016326 5ustar liggesusersgenerics/tests/testthat/_snaps/docs.md0000644000176200001440000000510514010003522017574 0ustar liggesusers# generics methods can be reexported and extended Code methods_rd("tidy") Output [1] "See the following help topics for more details about individual methods:\n\n\\code{testGenericsExtension}\n\\itemize{\n\\item \\code{\\link[testGenericsExtension]{tidy-special}}: \\code{special_method}\n}" # multiple packages have multiple headers Code methods_rd("multi_method") Output [1] "See the following help topics for more details about individual methods:\n\n\\code{testMultiMethod}\n\\itemize{\n\\item \\code{\\link[testMultiMethod]{multi-method-2}}: \\code{default}\n\\item \\code{\\link[testMultiMethod]{multi-method-3}}: \\code{data.frame}\n}\n\\code{testMultiPackage}\n\\itemize{\n\\item \\code{\\link[testMultiPackage]{multi-method-4}}: \\code{matrix}\n}" # S4 bullets print with no issues Code methods_rd("multi_method") Output [1] "See the following help topics for more details about individual methods:\n\n\\code{testS4Docs}\n\\itemize{\n\\item \\code{\\link[testS4Docs]{multi_method}}: \\code{ANY,ANY}, \\code{numeric,ANY}, \\code{numeric,integer}\n}" # S4 and S3 packages can intermingle Code methods_rd("multi_method") Output [1] "See the following help topics for more details about individual methods:\n\n\\code{testMultiMethod}\n\\itemize{\n\\item \\code{\\link[testMultiMethod]{multi-method-2}}: \\code{default}\n\\item \\code{\\link[testMultiMethod]{multi-method-3}}: \\code{data.frame}\n}\n\\code{testS4Docs}\n\\itemize{\n\\item \\code{\\link[testS4Docs]{multi_method}}: \\code{ANY,ANY}, \\code{numeric,ANY}, \\code{numeric,integer}\n}" # multiple methods but same rdname are comma separated Code methods_rd("same_rd_name") Output [1] "See the following help topics for more details about individual methods:\n\n\\code{testSameRd}\n\\itemize{\n\\item \\code{\\link[testSameRd]{same_rd_name-2}}: \\code{data.frame}, \\code{default}\n}" # single method is correctly itemized Code methods_rd("single_method") Output [1] "See the following help topics for more details about individual methods:\n\n\\code{testSingleMethod}\n\\itemize{\n\\item \\code{\\link[testSingleMethod]{single-method-2}}: \\code{default}\n}" # multiple methods are correctly itemized Code methods_rd("multi_method") Output [1] "See the following help topics for more details about individual methods:\n\n\\code{testMultiMethod}\n\\itemize{\n\\item \\code{\\link[testMultiMethod]{multi-method-2}}: \\code{default}\n\\item \\code{\\link[testMultiMethod]{multi-method-3}}: \\code{data.frame}\n}" generics/tests/testthat.R0000644000176200001440000000007413747021246015205 0ustar liggesuserslibrary(testthat) library(generics) test_check("generics") generics/R/0000755000176200001440000000000014176060004012250 5ustar liggesusersgenerics/R/compile.R0000644000176200001440000000053313747021246014034 0ustar liggesusers#' Configure an object #' #' Finalizes or completes an object. #' #' @section Methods: #' \Sexpr[stage=render,results=rd]{generics:::methods_rd("compile")} #' #' @param object An object. See the individual method for specifics. #' @param ... Other arguments passed to methods #' @export compile <- function(object, ...) { UseMethod("compile") } generics/R/equation.R0000644000176200001440000000063213747021246014231 0ustar liggesusers#' Model equations #' #' Display the mathematical representation of a fitted model. #' #' @param object A fitted model object. #' @param ... Other arguments passed to methods #' #' @return Markup output suitable for rendering the equation. #' #' @section Methods: #' \Sexpr[stage=render,results=rd]{generics:::methods_rd("equation")} #' #' @export equation <- function(object, ...) { UseMethod("equation") } generics/R/generate.R0000644000176200001440000000042113747021246014172 0ustar liggesusers#' Generate values based on inputs #' @param x An object. #' @param ... Other arguments passed to methods #' #' @section Methods: #' \Sexpr[stage=render,results=rd]{generics:::methods_rd("generate")} #' #' @export generate <- function(x, ...) { UseMethod("generate") } generics/R/utils.R0000644000176200001440000000022614007543733013543 0ustar liggesuserslocal_load_all <- function(path, env = parent.frame()) { pkgload::load_all(path, quiet = TRUE) withr::defer(pkgload::unload(path), envir = env) } generics/R/interpolate.R0000644000176200001440000000110413747021246014725 0ustar liggesusers#' Interpolate missing values #' #' Interpolates missing values provided in the training dataset using the #' fitted model. #' #' @param object A fitted model object #' @param ... Other arguments passed to methods #' #' @return A dataset ([tibble::tibble()] or similar) of the same structure as #' the input dataset with missing values from the response variable replaced #' with interpolated values. #' #' @section Methods: #' \Sexpr[stage=render,results=rd]{generics:::methods_rd("interpolate")} #' #' @export interpolate <- function(object, ...) { UseMethod("interpolate") } generics/R/visualize.R0000644000176200001440000000045113747021246014416 0ustar liggesusers#' Visualize a data set or object. #' #' @param x A data frame or other object. #' @param ... Other arguments passed to methods #' #' @section Methods: #' \Sexpr[stage=render,results=rd]{generics:::methods_rd("visualize")} #' #' @export visualize <- function(x, ...) { UseMethod("visualize") } generics/R/glance.R0000644000176200001440000000077413747021246013644 0ustar liggesusers#' Glance at an object #' #' Construct a single row summary "glance" of a model, fit, or other #' object #' #' glance methods always return either a one-row data frame (except on #' `NULL`, which returns an empty data frame) #' #' @param x model or other R object to convert to single-row data frame #' @param ... other arguments passed to methods #' #' @section Methods: #' \Sexpr[stage=render,results=rd]{generics:::methods_rd("glance")} #' #' @export glance <- function(x, ...) { UseMethod("glance") } generics/R/components.R0000644000176200001440000000123613747021246014572 0ustar liggesusers#' Extract components #' #' `components` can be used to extract elements from an object. #' #' For example, decomposition methods and some modelling techniques can be used #' to decompose a dataset into components of interest. This function is used #' to extract these components in a tidy data format. #' #' @param object A data separable object. #' @param ... Other arguments passed to methods #' #' @return A dataset ([tibble::tibble()] or similar) containing components from #' the object. #' #' @section Methods: #' \Sexpr[stage=render,results=rd]{generics:::methods_rd("components")} #' #' @export components <- function(object, ...) { UseMethod("components") } generics/R/tidy.R0000644000176200001440000000060613747021246013356 0ustar liggesusers#' Turn an object into a tidy tibble #' #' @param x An object to be converted into a tidy [tibble::tibble()]. #' @param ... Additional arguments to tidying method. #' @return A [tibble::tibble()] with information about model components. #' #' @section Methods: #' \Sexpr[stage=render,results=rd]{generics:::methods_rd("tidy")} #' #' @export tidy <- function(x, ...) { UseMethod("tidy") } generics/R/sets.R0000644000176200001440000000425713747021246013371 0ustar liggesusers#' Set operations #' #' Union (`union()`), intersect (`intersect()`), difference (`setdiff()`), #' and equality (`setequal()`) for two vectors representing sets. Determine #' membership with `is.element()`. #' #' These functions override the set functions provided in base to make them #' generic so that packages can provide methods for different data types. The #' default methods call the base versions. #' #' @section Methods: #' #' \subsection{`intersect()`}{ #' \Sexpr[stage=render,results=rd]{generics:::methods_rd("intersect")} #' } #' #' \subsection{`union()`}{ #' \Sexpr[stage=render,results=rd]{generics:::methods_rd("union")} #' } #' #' \subsection{`setdiff()`}{ #' \Sexpr[stage=render,results=rd]{generics:::methods_rd("setdiff")} #' } #' #' \subsection{`setequal()`}{ #' \Sexpr[stage=render,results=rd]{generics:::methods_rd("setequal")} #' } #' #' \subsection{`is.element()`}{ #' \Sexpr[stage=render,results=rd]{generics:::methods_rd("is.element")} #' } #' #' @param x,y Vectors to combine. #' @param el,set Element and set to compare. #' @param ... Other arguments passed on to methods. #' @return For `union()`, `intersect()`, and `setdiff()`, a vector with all #' duplicate removed. #' #' For `setequal()` and `is.element()`, a logical `TRUE` or `FALSE`.` #' @name setops #' @examples #' intersect(1:5, 4:8) #' union(1:5, 4:8) #' #' setdiff(1:5, 4:8) #' setdiff(4:8, 1:5) NULL #' @rdname setops #' @export intersect <- function(x, y, ...) UseMethod("intersect") #' @rdname setops #' @export union <- function(x, y, ...) UseMethod("union") #' @rdname setops #' @export setdiff <- function(x, y, ...) UseMethod("setdiff") #' @rdname setops #' @export setequal <- function(x, y, ...) UseMethod("setequal") #' @rdname setops #' @export is.element <- function(el, set, ...) UseMethod("is.element") #' @export intersect.default <- function(x, y, ...) base::intersect(x, y, ...) #' @export union.default <- function(x, y, ...) base::union(x, y, ...) #' @export setdiff.default <- function(x, y, ...) base::setdiff(x, y, ...) #' @export setequal.default <- function(x, y, ...) base::setequal(x, y, ...) #' @export is.element.default <- function(el, set, ...) base::is.element(el, set, ...) generics/R/min_grid.R0000644000176200001440000000127413747027223014200 0ustar liggesusers#' Determine the minimum set of model fits #' #' `min_grid()` determines exactly what models should be fit in order to #' evaluate the entire set of tuning parameter combinations. This is for #' internal use only and the API may change in the near future. #' @param x A model specification. #' @param grid A tibble with tuning parameter combinations. #' @param ... Not currently used. #' @return A tibble with the minimum tuning parameters to fit and an additional #' list column with the parameter combinations used for prediction. #' @section Methods: #' \Sexpr[stage=render,results=rd]{generics:::methods_rd("min_grid")} #' @export min_grid <- function(x, grid, ...) { UseMethod("min_grid") } generics/R/refit.R0000644000176200001440000000042013747021246013510 0ustar liggesusers#' Refitting models #' #' @param object A fitted model object. #' @param ... Other arguments passed to methods #' #' @section Methods: #' \Sexpr[stage=render,results=rd]{generics:::methods_rd("refit")} #' #' @export refit <- function(object, ...) { UseMethod("refit") } generics/R/explain.R0000644000176200001440000000046514176060004014040 0ustar liggesusers#' Explain details of an object #' #' @param x An object. See the individual method for specifics. #' @param ... other arguments passed to methods #' #' @section Methods: #' \Sexpr[stage=render,results=rd]{generics:::methods_rd("explain")} #' #' @export explain <- function(x, ...) { UseMethod("explain") } generics/R/varying_args.R0000644000176200001440000000040413747021246015074 0ustar liggesusers#' Find any arguments that are not fully specified. #' #' @section Methods: #' \Sexpr[stage=render,results=rd]{generics:::methods_rd("varying_args")} #' #' @inheritParams compile #' @export varying_args <- function(object, ...) { UseMethod("varying_args") } generics/R/fit.R0000644000176200001440000000042413747021246013165 0ustar liggesusers#' Estimate model parameters. #' #' Estimates parameters for a given model from a set of data. #' #' @section Methods: #' \Sexpr[stage=render,results=rd]{generics:::methods_rd("fit")} #' #' @inheritParams compile #' @export fit <- function(object, ...) { UseMethod("fit") } generics/R/train.R0000644000176200001440000000055613747021246013526 0ustar liggesusers#' Estimate model parameters. #' #' Estimates parameters for a given model from a set of data. #' #' @param x An object. See the individual method for specifics. #' @param ... other arguments passed to methods #' #' @section Methods: #' \Sexpr[stage=render,results=rd]{generics:::methods_rd("train")} #' #' @export train <- function(x, ...) { UseMethod("train") } generics/R/calculate.R0000644000176200001440000000041113747021246014334 0ustar liggesusers#' Calculate statistics. #' @param x An object. #' @param ... Other arguments passed to methods #' #' @section Methods: #' \Sexpr[stage=render,results=rd]{generics:::methods_rd("calculate")} #' #' @export calculate <- function(x, ...) { UseMethod("calculate") } generics/R/augment.R0000644000176200001440000000065313747021246014047 0ustar liggesusers#' Augment data with information from an object #' #' @param x Model object or other R object with information to append to #' observations. #' @param ... Addition arguments to `augment` method. #' @return A [tibble::tibble()] with information about data points. #' @section Methods: #' \Sexpr[stage=render,results=rd]{generics:::methods_rd("augment")} #' #' @export #' augment <- function(x, ...) { UseMethod("augment") } generics/R/evaluate.R0000644000176200001440000000045714176060004014207 0ustar liggesusers#' Evaluate an object. #' #' @param x An object. See the individual method for specifics. #' @param ... other arguments passed to methods #' #' @section Methods: #' \Sexpr[stage=render,results=rd]{generics:::methods_rd("evaluate")} #' #' @export evaluate <- function(x, ...) { UseMethod("evaluate") } generics/R/coercion.R0000644000176200001440000000474413747021246014215 0ustar liggesusers#' Factor coercion #' #' Coercion functions for creating factors from other existing objects. #' #' These functions override non-generic factor coercion functions provided #' in base so that packages can provide methods for different data types. The #' default methods call the base versions. #' #' @section Methods: #' #' \subsection{`as.factor()`}{ #' \Sexpr[stage=render,results=rd]{generics:::methods_rd("as.factor")} #' } #' #' \subsection{`as.ordered()`}{ #' \Sexpr[stage=render,results=rd]{generics:::methods_rd("as.ordered")} #' } #' #' #' @param x A vector of data. #' @param ... Other arguments passed on to methods. #' @return For `as.factor()`, a factor. For `as.ordered()`, #' an ordered factor. #' #' @name coercion-factor #' #' @examples #' as.factor(letters[1:5]) #' as.ordered(letters[1:5]) #' NULL #' @rdname coercion-factor #' @export as.factor <- function(x, ...) UseMethod("as.factor") #' @rdname coercion-factor #' @export as.ordered <- function(x, ...) UseMethod("as.ordered") #' @export as.factor.default <- function(x, ...) base::as.factor(x) #' @export as.ordered.default <- function(x, ...) base::as.ordered(x) #' Time difference coercion #' #' Coercion functions for creating `difftime` objects from other #' existing objects. #' #' This function overrides the non-generic `as.difftime()` function #' provided in base so that packages can provide methods for different data #' types. The default method call the base version. #' #' @section Methods: #' \Sexpr[stage=render,results=rd]{generics:::methods_rd("as.difftime")} #' #' @param tim A vector specifying a time interval. #' @param format A single character specifying the format of `tim` when it is #' a character. The default is a locale-specific time format. #' @param units A single character specifying units in which the results are #' desired. Required if `tim` is a numeric. #' @param ... Other arguments passed on to methods. #' @return A `difftime` object with an attribute indicating the units. #' #' @name coercion-time-difference #' #' @examples #' as.difftime(1:5, units = "secs") #' #' as.difftime(c("01:55:22", "01:55:25")) #' #' as.difftime("01", format = "%H") #' as.difftime("01", format = "%H", units = "secs") #' NULL #' @rdname coercion-time-difference #' @export as.difftime <- function(tim, ...) UseMethod("as.difftime") #' @rdname coercion-time-difference #' @export as.difftime.default <- function(tim, format = "%X", units = "auto", ...) base::as.difftime(tim = tim, format = format, units = units, ...) generics/R/var_imp.R0000644000176200001440000000056614176060004014037 0ustar liggesusers#' Calculation of variable importance #' #' A generic method for calculating variable importance for model objects. #' #' @param object A fitted model object. #' @param ... Other arguments passed to methods #' #' @section Methods: #' \Sexpr[stage=render,results=rd]{generics:::methods_rd("var_imp")} #' #' @export var_imp <- function(object, ...) { UseMethod("var_imp") } generics/R/fit_xy.R0000644000176200001440000000053713747021246013712 0ustar liggesusers#' Estimate model parameters. #' #' Estimates parameters for a given model from a set of data in the form of #' a set of predictors (`x`) and outcome(s) (`y`). #' #' @section Methods: #' \Sexpr[stage=render,results=rd]{generics:::methods_rd("fit_xy")} #' #' @inheritParams compile #' @export fit_xy <- function(object, ...) { UseMethod("fit_xy") } generics/R/forecast.R0000644000176200001440000000060214176060004014177 0ustar liggesusers#' Forecasting from an object #' #' The functions allow producing forecasts based on the provided object. #' #' @param object A model for which forecasts are required. #' @param ... Other arguments passed to methods #' #' @section Methods: #' \Sexpr[stage=render,results=rd]{generics:::methods_rd("forecast")} #' #' @export forecast <- function(object, ...) { UseMethod("forecast") } generics/R/generics-package.R0000644000176200001440000000170513747021246015576 0ustar liggesusers#' generics: common S3 generics #' #' These are generic functions that can be used to minimize #' package dependencies when multiple packages have the same #' method. #' #' An attempt was made to use generic class signatures that were #' consistent with existing code. For example, \pkg{dplyr} and #' \pkg{lime} both have `explain()` methods that do very different #' things but both take `x` as their main object. Even though `x` #' would be different in those cases, this package provides access #' to the S3 generic so that other packages that may want to create #' `explain()` methods for their objects can do so without loading #' either of the other packages. #' #' For example, if a new `tidy()` method is being developed for a #' package, this lightweight package can be the required dependency #' to have access to the generic method (instead of depending on #' \pkg{broom} and installing its dependencies). #' #' @keywords internal "_PACKAGE" generics/R/explore.R0000644000176200001440000000110514176060004014046 0ustar liggesusers#' Create an interactive visualization appropriate to a particular object type #' #' `explore()` invokes a function that starts an interactive, pre-defined widget #' (e.g. `plotly` visualization, `shiny` app, etc.) to investigate the results. #' #' @param x A object #' @param ... Other arguments passed to methods #' #' @return `NULL` (invisibly) or some other data type (e.g. tibble) depending on #' the application. #' #' @section Methods: #' \Sexpr[stage=render,results=rd]{generics:::methods_rd("explore")} #' #' @export explore <- function(x, ...) { UseMethod("explore") } generics/R/specify.R0000644000176200001440000000042713747021246014050 0ustar liggesusers#' Specify variables or other quantities. #' #' @param x An object. #' @param ... Other arguments passed to methods #' #' @section Methods: #' \Sexpr[stage=render,results=rd]{generics:::methods_rd("specify")} #' #' @export specify <- function(x, ...) { UseMethod("specify") } generics/R/tunable.R0000644000176200001440000000275213747021246014043 0ustar liggesusers#' Declare tunable parameters #' #' Returns information on potential hyper-parameters that can be optimized. #' #' @param x An object, such as a recipe, recipe step, workflow, or model #' specification. #' @param ... Other arguments passed to methods #' #'@return A tibble with a column for the parameter `name`, information on the #' _default_ method for generating a corresponding parameter object, the #' `source` of the parameter (e.g. "recipe", etc.), and the `component` within #' the source. For the `component` column, a little more specificity is given #' about the location of the parameter (e.g. "step_normalize" or recipes or #' "boost_tree" for models). The `component_id` column contains the unique step #' `id` field or, for models, a logical for whether the model specification #' argument was a main parameter or one associated with the engine. #' @details #' For a model specification, an engine must be chosen. #' #' If the object has no tunable parameters, a tibble with no rows is returned. #' #' The information about the default parameter object takes the form of a #' named list with an element for the function call and an optional element for #' the source of the function (e.g. the `dials` package). For model #' specifications, If the parameter is unknown to the underlying `tunable` #' method, a `NULL` is returned. #' #' @section Methods: #' \Sexpr[stage=render,results=rd]{generics:::methods_rd("tunable")} #' #' @export tunable <- function(x, ...) { UseMethod("tunable") } generics/R/prune.R0000644000176200001440000000042213747021246013532 0ustar liggesusers#' Prune or reduce an object #' #' @section Methods: #' \Sexpr[stage=render,results=rd]{generics:::methods_rd("prune")} #' #' @param tree A fitted model object. #' @param ... Other arguments passed to methods #' @export prune <- function(tree, ...) { UseMethod("prune") } generics/R/hypothesize.R0000644000176200001440000000042213747021246014754 0ustar liggesusers#' Construct hypotheses. #' #' @param x An object. #' @param ... Other arguments passed to methods #' #' @section Methods: #' \Sexpr[stage=render,results=rd]{generics:::methods_rd("hypothesize")} #' #' @export hypothesize <- function(x, ...) { UseMethod("hypothesize") } generics/R/docs.R0000644000176200001440000000712014010003622013311 0ustar liggesusers# Modified from sloop::methods_generic methods_find <- function(x) { info <- attr(utils::methods(x), "info") if (nrow(info) == 0) { info$topic <- character() return(info) } info$method <- rownames(info) rownames(info) <- NULL # Simply class and source generic_esc <- gsub("\\.", "\\\\.", x) info$class <- gsub(paste0("^", generic_esc, "[.,]"), "", info$method) info$class <- gsub("-method$", "", info$class) info$source <- gsub(paste0(" for ", generic_esc), "", info$from) # Find package info$package <- lookup_package(x, info$class, info$isS4) # Find help topic path <- help_path(info$method, info$package) pieces <- strsplit(path, "/") info$topic <- vapply(pieces, last, character(1)) info[c("method", "class", "package", "topic", "visible", "source")] } methods_rd <- function(x) { methods <- methods_find(x) methods <- methods[!is.na(methods$topic), , drop = FALSE] if (nrow(methods) == 0) { return("No methods found in currently loaded packages.") } methods_by_package <- split(methods, methods$package) topics_by_package <- lapply(methods_by_package, function(x) { split(x, paste(x$topic, x$package, sep = ".")) }) make_bullets <- function(topics) { bullet_vec <- vapply( X = topics, FUN = function(x) { link <- paste0( "\\code{", "\\link[", x$package[[1]], "]", "{", x$topic[[1]], "}", "}" ) classes <- paste0("\\code{", x$class, "}", collapse = ", ") paste0("\\item ", link, ": ", classes) }, FUN.VALUE = character(1), USE.NAMES = FALSE ) paste0(bullet_vec, collapse = "\n") } make_header <- function(pkg) { paste0("\\code{", pkg, "}") } bullets <- lapply(topics_by_package, make_bullets) headers <- lapply(names(topics_by_package), make_header) help_msg <- paste0( "See the following help topics for more details about individual methods:\n" ) paste0( c(help_msg, paste( headers, "\\itemize{", bullets, "}", sep = "\n" ) ), collapse = "\n" ) } last <- function(x, n = 0) { if (length(x) <= n) { x[NA_integer_] } else { x[[length(x) - n]] } } help_path <- function(x, package) { help <- mapply(locate_help_doc, x, package, SIMPLIFY = FALSE) vapply(help, function(x) if (length(x) == 0) NA_character_ else as.character(x), FUN.VALUE = character(1) ) } locate_help_doc <- function(x, package) { help <- if (requireNamespace("pkgload", quietly = TRUE)) { shim_help <- get("shim_help", asNamespace("pkgload")) function(x, package = NULL) { tryCatch( expr = shim_help(x, (package)), error = function(e) character() ) } } else { utils::help } if (is.na(package)) { help(x) } else { help(x, (package)) } } as.character.dev_topic <- function(x, ...) { sub("[.]Rd$", "", x$path) } lookup_package <- function(generic, class, is_s4) { lookup_single_package <- function(generic, class, is_s4) { if (is_s4) { class <- strsplit(class, ",")[[1]] fn <- methods::getMethod(generic, class, optional = TRUE) } else { fn <- utils::getS3method(generic, class, optional = TRUE) } # Not found if (is.null(fn)) { return(NA_character_) } pkg <- utils::packageName(environment(fn)) # Function method found, but in a non-package environment if (is.null(pkg)) { return(NA_character_) } pkg } pkgs <- mapply(lookup_single_package, generic, class, is_s4, SIMPLIFY = FALSE) as.vector(pkgs, "character") } generics/R/learn.R0000644000176200001440000000055614176060004013502 0ustar liggesusers#' Estimate model parameters. #' #' Estimates parameters for a given model from a set of data. #' #' @param x An object. See the individual method for specifics. #' @param ... other arguments passed to methods #' #' @section Methods: #' \Sexpr[stage=render,results=rd]{generics:::methods_rd("learn")} #' #' @export learn <- function(x, ...) { UseMethod("learn") } generics/R/accuracy.R0000644000176200001440000000057314176060004014172 0ustar liggesusers#' Accuracy measures for a model #' #' Returns range of summary measures of the forecast accuracy. #' #' @param object A model for which forecasts are required. #' @param ... Other arguments passed to methods #' #' @section Methods: #' \Sexpr[stage=render,results=rd]{generics:::methods_rd("accuracy")} #' #' @export accuracy <- function(object, ...) { UseMethod("accuracy") } generics/R/required_pkgs.R0000644000176200001440000000053713747021246015254 0ustar liggesusers#' Determine packages required by objects #' #' @param x An object. #' @param ... Other arguments passed to methods #' @return A character string of packages that are required. #' @section Methods: #' \Sexpr[stage=render,results=rd]{generics:::methods_rd("required_pkgs")} #' @export required_pkgs <- function(x, ...) { UseMethod("required_pkgs") } generics/R/tune_args.R0000644000176200001440000000213614176060004014364 0ustar liggesusers#' Determine arguments tagged for tuning #' #' `tune_args()` takes an object such as a model specification or a recipe and #' returns a tibble of information on all possible tunable arguments and #' whether or not they are actually tunable. #' #' @param object A `model_spec`, `recipe`, `workflow`, or other object. #' @param ... Other arguments passed to methods. #' #' @details #' The `source` column is determined differently for a #' `model_spec` or a `recipe` (with additional detail on the type). #' #' The `id` field has any identifier that was passed from [tune::tune()] (e.g. #' `tune("some note")`). If no additional detail was used in that function, #' the `id` field reverts to the name of the parameters. #' #' @return A tibble with columns for the parameter name (`name`), whether it #' contains _any_ tunable value (`tune`), the `id` for the parameter (`id`), #' and the information on where the parameter was located (`source`). #' #' @section Methods: #' \Sexpr[stage=render,results=rd]{generics:::methods_rd("tune_args")} #' #' @export tune_args <- function(object, ...) { UseMethod("tune_args") } generics/R/estfun.R0000644000176200001440000000045413747021246013712 0ustar liggesusers#' Extracting the estimating functions of a fitted model. #' #' @section Methods: #' \Sexpr[stage=render,results=rd]{generics:::methods_rd("estfun")} #' #' @param x A fitted model object. #' @param ... Other arguments passed to methods #' @export estfun <- function(x, ...) { UseMethod("estfun") } generics/NEWS.md0000644000176200001440000000065314176064571013166 0ustar liggesusers# generics 0.1.2 # generics 0.1.2 * New `forecast()` and `accuracy()` generics. # generics 0.1.1 * New `tune_args()` generic. # generics 0.1.0 * Maintainer changed to Hadley Wickham. * Re-licensed with MIT license. * New `min_grid()`, `required_pkgs()`, and `tunable()` generics. # `generics` 0.0.2 * Removed the `data` argument to `augment` to resolve issues with `broom`. # `generics` 0.0.1 First CRAN version generics/MD50000644000176200001440000001366214176070372012400 0ustar liggesusers773b074c85489318edbb3794e0276232 *DESCRIPTION 5174dfc514f0941d2edd4b0b4c9941dd *LICENSE 6e427cab76b0ab19a98352d30d6d2685 *NAMESPACE 12e92ee1f732e45290733d57d6496fc6 *NEWS.md 21bedfd0c934feef3a81c82ce5abeead *R/accuracy.R a1bd47ef344ca3b8c8e16bfbd0fa120e *R/augment.R 1ec5c5e1d2f1f73ff275fd1091a20b3e *R/calculate.R 775f146887bd51d40b8c57dcc03a57c5 *R/coercion.R 5257de8b9a5dcf09e45aaa0ae70ab9bf *R/compile.R c5265a01d3e9cb31052efff4d3839064 *R/components.R 0664f10163e7b26b76bfff3bed125646 *R/docs.R 8dd18dc4efae761ba046da933443caea *R/equation.R 4fe6ca98c96c3066b004473e897c15ff *R/estfun.R d3dce08568db87b84dd67c52a9251d55 *R/evaluate.R 7bba594189e5381735f51447881876fd *R/explain.R 80dd5a29986e7b75ddd1e7d533fddb75 *R/explore.R bb7d63cdce04e8b7fdeb1cabd3d093e3 *R/fit.R 77aed72c740584b38ef42c2d07b1d733 *R/fit_xy.R 04d829fd0a275e8e45874cd546ed67c9 *R/forecast.R 3e92c1d331a30fc064a8185ad352c484 *R/generate.R d9a1ddf6e6410911926a4265667539ee *R/generics-package.R 681857b0281027823af5e7ea15110330 *R/glance.R da90990e27342ce15a6806d3d0905082 *R/hypothesize.R eedc6ed8f894f7e569a0133b55fcbb68 *R/interpolate.R 19cdb999be6c773c401efafcfa356c53 *R/learn.R c25a35502ed985eebe44f3afad997893 *R/min_grid.R 033d195099df7924af3b759e5f34f332 *R/prune.R 32d94e7a205c33d20aab3dcdd879e88b *R/refit.R e2aeb4f6e986a2c680fa56f888305379 *R/required_pkgs.R 7bcb1db05f0ecf23dca2aa6d5ff385ae *R/sets.R 1ef466ed87482aeb8e2a5c79d4b881c7 *R/specify.R 308fea1188c72f14b7f877ade546c09c *R/tidy.R 11c48f1eea847f278a4d3a868ae0dc11 *R/train.R c65c7fabc1a95f6fd53c4096737276a2 *R/tunable.R f1bb491c12763e56d4b0c3de10dd407a *R/tune_args.R 175e5a10e67af5b9877f058ecc5de658 *R/utils.R 4c56b30b94c818f1ee28048e03d0293f *R/var_imp.R cf7ec6cf9623759597133947bda96adc *R/varying_args.R 6b47983c74b128cabf453745e4c39779 *R/visualize.R 20e6b855811f8c05d1caf07d323562c3 *README.md c7f286c556b17bc99bb7a120209c35d5 *build/generics.pdf f23520f8c25f2f821dd159427a1442ce *man/accuracy.Rd 523b56b30a4c9ac8c807d8ccda8d344d *man/augment.Rd 83ab075348313b46dc2e2d519b1c1341 *man/calculate.Rd 4c48614ad02aedc37c68cdeb344b5d3d *man/coercion-factor.Rd deb545088c9a00e968319b13b0e49b3c *man/coercion-time-difference.Rd 998985c56353e5273cc536eb1bd7ff60 *man/compile.Rd 21862abe1685e13d29f5a9f75a26f393 *man/components.Rd f65f1ce688a37aa6f34e102882f580ff *man/equation.Rd b4ed2df1beedf0cd3c730e680635873e *man/estfun.Rd 32fa1cace23d3ee2c3fa61f000d6a17c *man/evaluate.Rd acd4cb06baf8de4745b7516be781b758 *man/explain.Rd 03ef38ae2db6122358702973b8ed9b29 *man/explore.Rd 1f2773e5f0794259365b7961944a5102 *man/fit.Rd 04942f4c5a5e0a82c3277d2aaf9b9bfb *man/fit_xy.Rd 2ebb46ff1c203ee4a200eeff35d6f464 *man/forecast.Rd b92626134335db76c2d30c4a57394cab *man/generate.Rd 077d5c26170902bd6bb73f3c8938d5fe *man/generics-package.Rd 09d54ee897ea912b31a9dd4266d1ea1d *man/glance.Rd cf4879ac57cf58bf6645291b80ca2fa7 *man/hypothesize.Rd 3d7f18e74b7478ff2f64d5932f92dbbc *man/interpolate.Rd ddf1c70bd453d5f21d57da88ccd36d41 *man/learn.Rd 246ddc29a5d96465428df18a4a91dfee *man/min_grid.Rd bb0bebb75f24031c553309c68b0f982d *man/prune.Rd 90fd18460d2f637ab17d18e03672e550 *man/refit.Rd 6015d0ab63dba841c36e9f0806f24dc6 *man/required_pkgs.Rd c66c4107f6fb877b4e500ecf92f3c381 *man/setops.Rd d87bc36ec4adcf4fe6e368aff5247647 *man/specify.Rd 346fe4de2ab6f2715e499253fb790a6d *man/tidy.Rd aa3497002c683594476b2c3e9adf68d6 *man/train.Rd f53631194c4b49d948d5f724e38d8d12 *man/tunable.Rd 220aa3d310c658840627b00e068ef218 *man/tune_args.Rd 8f3b62d34cd522e2a7a0e966834ad257 *man/var_imp.Rd 4c918d2bc5a75c124201f8bf07fa77ac *man/varying_args.Rd 3c0925e7779785f7d71c85d98fd76208 *man/visualize.Rd 10e57227abf625e9bd94bb01a28d18bf *tests/testthat.R a7ec69411ed35025f1c7318b82e1cd70 *tests/testthat/_snaps/docs.md 56c5e6507d27c1ad25637475b4e8f896 *tests/testthat/test-docs.R 57ca61f2caa8c713a6fa35ceed78fb34 *tests/testthat/testGenericsExtension/DESCRIPTION 65070781ab853dbeee0ed430afba2e74 *tests/testthat/testGenericsExtension/NAMESPACE bed46e9148b57983b54a9a86e095aaa3 *tests/testthat/testGenericsExtension/R/a.r dc65ad9d2cdf35e10bdab6dcfc66a242 *tests/testthat/testGenericsExtension/man/reexports.Rd 6d14ba2857c093f7265f3f8fdcbf0c4c *tests/testthat/testGenericsExtension/man/tidy-special.Rd d9be3e139b99a5645efc089f523db68c *tests/testthat/testMultiMethod/DESCRIPTION 050e863e2159229598a36ec227dff549 *tests/testthat/testMultiMethod/NAMESPACE 73970c5c20aace9f4ce4983e815c8841 *tests/testthat/testMultiMethod/R/a.r e4e546a50ba081cefe0c96a889c15cd2 *tests/testthat/testMultiMethod/man/multi-method-2.Rd 7e5b097d6fd3e9c1de9e51d1906c93b4 *tests/testthat/testMultiMethod/man/multi-method-3.Rd 945c59174d06a10d0e2ae1d633ea505f *tests/testthat/testMultiMethod/man/multi-method.Rd c3a3d5f5c29264cad2d4593652f65a1b *tests/testthat/testMultiPackage/DESCRIPTION dc21c19f0d6968ee25d441b2cf46017d *tests/testthat/testMultiPackage/NAMESPACE 5282094581ee4a4030780dcff58afebb *tests/testthat/testMultiPackage/R/a.r d861a94cfb80732a6f4d71e19679ff7a *tests/testthat/testMultiPackage/man/multi-method-4.Rd 23f5d58a38a3e6f85f64b277678f9159 *tests/testthat/testS4Docs/DESCRIPTION 04cb102d01a92edd5557d6bb88d6340e *tests/testthat/testS4Docs/NAMESPACE 6c52dc5190d32bfa35db1cba764f3af6 *tests/testthat/testS4Docs/R/a.r 9bcff2bf60bbc365fea8833ef9a3a19a *tests/testthat/testS4Docs/man/multi_method.Rd 25f65c26045a9f6695435ef633ed69c4 *tests/testthat/testSameRd/DESCRIPTION dc21c19f0d6968ee25d441b2cf46017d *tests/testthat/testSameRd/NAMESPACE a8d34885c4196c1757a723f7751e3ce4 *tests/testthat/testSameRd/R/a.r ae4d8e21ea85356ea5781f18cdead6e9 *tests/testthat/testSameRd/man/same_rd_name-2.Rd e1858acfbc77a13308bd43048c271546 *tests/testthat/testSameRd/man/same_rd_name.Rd 9484eb32bebc16a7115ba40c410ff99b *tests/testthat/testSingleMethod/DESCRIPTION b7888be3ed78d52a045d613d8f8c01ae *tests/testthat/testSingleMethod/NAMESPACE 8c0260df5bd5c720ed13cd70fb661207 *tests/testthat/testSingleMethod/R/a.r dd9555882a4a87cb61b91b33f2ed2ec3 *tests/testthat/testSingleMethod/man/single-method-2.Rd 5c51ca0b0dcf6c4f6b5bdf02ed4fa451 *tests/testthat/testSingleMethod/man/single-method.Rd