From 13978b1227f22703654ae6a61dbcdf059cd666e4 Mon Sep 17 00:00:00 2001 From: "Stephanie J. Spielman" Date: Wed, 12 Nov 2025 11:12:23 -0500 Subject: [PATCH 001/148] also link filtered for demo purposes --- scripts/link-data.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/scripts/link-data.sh b/scripts/link-data.sh index aaed38f2..dee88474 100644 --- a/scripts/link-data.sh +++ b/scripts/link-data.sh @@ -86,6 +86,7 @@ link_locs=( scRNA-seq-advanced/analysis/mouse-liver/markers scRNA-seq-advanced/data/PBMC-TotalSeqB/raw_feature_bc_matrix scRNA-seq-advanced/data/PBMC-TotalSeqB/normalized/PBMC_TotalSeqB_normalized_sce.rds + scRNA-seq-advanced/data/glioblastoma-10x/filtered_feature_bc_matrix scRNA-seq-advanced/data/glioblastoma-10x/raw_feature_bc_matrix scRNA-seq-advanced/data/ewing-sarcoma/annotations/ewing_sarcoma_sample_metadata.tsv scRNA-seq-advanced/data/ewing-sarcoma/processed From 654d2e795ff4b19e10cb239378e0d0fd7f8352e6 Mon Sep 17 00:00:00 2001 From: "Stephanie J. Spielman" Date: Wed, 12 Nov 2025 11:12:55 -0500 Subject: [PATCH 002/148] remove space so the link is a link --- scRNA-seq-advanced/01-read_filter_normalize_scRNA.Rmd | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scRNA-seq-advanced/01-read_filter_normalize_scRNA.Rmd b/scRNA-seq-advanced/01-read_filter_normalize_scRNA.Rmd index bb7c0175..b4a2bb91 100644 --- a/scRNA-seq-advanced/01-read_filter_normalize_scRNA.Rmd +++ b/scRNA-seq-advanced/01-read_filter_normalize_scRNA.Rmd @@ -109,7 +109,7 @@ Whether the 10x Cell Ranger data is in Matrix Exchange format or in an HDF5 file (Though again, we do not recommend using the `.h5` file if you can avoid it, _especially_ for raw (unfiltered) data.) If you used something other than Cell Ranger to process the raw data, you would need to use a different function to read it in and create the `SingleCellExperiment` object. -Some of these functions for other common data formats are discussed in [Chapter 3 of OSCA] (http://bioconductor.org/books/3.19/OSCA.intro/getting-scrna-seq-datasets.html#reading-counts-into-r). +Some of these functions for other common data formats are discussed in [Chapter 3 of OSCA](http://bioconductor.org/books/3.19/OSCA.intro/getting-scrna-seq-datasets.html#reading-counts-into-r). ```{r read SCE, live=TRUE} # read SCE from matrix directory From 574c5a66ebbd36e82b7670f21ce37ce7bcb1d9ef Mon Sep 17 00:00:00 2001 From: "Stephanie J. Spielman" Date: Wed, 12 Nov 2025 11:13:47 -0500 Subject: [PATCH 003/148] add alpha=1 to guide override --- scRNA-seq-advanced/02-dataset_integration.Rmd | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scRNA-seq-advanced/02-dataset_integration.Rmd b/scRNA-seq-advanced/02-dataset_integration.Rmd index 07c9078b..32c48656 100644 --- a/scRNA-seq-advanced/02-dataset_integration.Rmd +++ b/scRNA-seq-advanced/02-dataset_integration.Rmd @@ -809,7 +809,7 @@ scater::plotReducedDim(merged_sce, # Specify variable for faceting other_fields = "sample") + scale_color_brewer(palette = "Dark2", name = "Broad celltype", na.value = "grey80") + - guides(color = guide_legend(override.aes = list(size = 3))) + + guides(color = guide_legend(override.aes = list(size = 3, alpha = 1))) + ggtitle("UMAP after integration with harmony") + facet_wrap(vars(sample)) ``` From c119d392df584d5828391aba3fccd89c2c21581d Mon Sep 17 00:00:00 2001 From: "Stephanie J. Spielman" Date: Wed, 12 Nov 2025 12:44:27 -0500 Subject: [PATCH 004/148] add a little sentence about patient diagnoses to help us remember that patient A and B are indeed really patients A and B and not dummy variables created for teaching --- scRNA-seq-advanced/02-dataset_integration.Rmd | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/scRNA-seq-advanced/02-dataset_integration.Rmd b/scRNA-seq-advanced/02-dataset_integration.Rmd index 32c48656..c63fe02c 100644 --- a/scRNA-seq-advanced/02-dataset_integration.Rmd +++ b/scRNA-seq-advanced/02-dataset_integration.Rmd @@ -66,6 +66,8 @@ These SCE objects, stored as RDS files, are available in the `data/rms/processed - `SCPCL000481.rds` (Patient B) - `SCPCL000482.rds` (Patient B) +Both Patient A (18 year old male) and Patient B (4 year old female) had recurrent embryonal rhabdomyosarcoma when samples were taken. + To begin, let's set up our directories and files: ```{r directories, live = TRUE} @@ -718,7 +720,7 @@ What trends do you observe between tumor and healthy tissues among these integra `fastMNN` is only one of many approaches to perform integration, and different methods have different capabilities and may give different results. For example, some methods can accommodate additional covariates (e.g., technology, patient, diagnosis, etc.) that can influence integration. -In fact the data we are using has a known _patient_ covariate; `SCPCL000479` and `SCPCL000480` are from the first patient, and `SCPCL000481` and `SCPCL000482` are from the second patient. +In fact the data we are using has a known _patient_ covariate; `SCPCL000479` and `SCPCL000480` are from the Patient A, and `SCPCL000481` and `SCPCL000482` are from Patient B. So, let's perform integration with a method that can use this information - [`harmony`](https://portals.broadinstitute.org/harmony/)! From 398da1dff5cc67ca6bfe295ad14c19440df6f021 Mon Sep 17 00:00:00 2001 From: Ally Hawkins Date: Thu, 13 Nov 2025 13:44:14 -0600 Subject: [PATCH 005/148] typos and formatting in gsea --- .../04-gene_set_enrichment_analysis.Rmd | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/scRNA-seq-advanced/04-gene_set_enrichment_analysis.Rmd b/scRNA-seq-advanced/04-gene_set_enrichment_analysis.Rmd index 7c43a03b..e6c76b9b 100644 --- a/scRNA-seq-advanced/04-gene_set_enrichment_analysis.Rmd +++ b/scRNA-seq-advanced/04-gene_set_enrichment_analysis.Rmd @@ -137,7 +137,7 @@ The enrichment score for a pathway is the running sum's maximum deviation from z GSEA also assesses statistical significance of the scores for each pathway through permutation testing. As a result, each input pathway will have a p-value associated with it that is then corrected for multiple hypothesis testing ([Subramanian _et al._ 2005](https://doi.org/10.1073/pnas.0506580102); [Yu](http://yulab-smu.top/clusterProfiler-book/chapter2.html#gene-set-enrichment-analysis)). -The implementation of GSEA we use in here examples requires a gene list ordered by some statistic and input gene sets. +The implementation of GSEA we use here requires a gene list ordered by some statistic and input gene sets. When you use previously computed gene-level statistics with GSEA, it is called GSEA pre-ranked. ## DESeq2 results @@ -167,7 +167,7 @@ You can see an example in this Harvard Chan Bioinformatics Core Training materia One good thing about Ensembl gene identifiers is that they are less likely to be duplicated than, for example, gene symbols. (Multiple Ensembl gene identifiers can map to the same symbol.) -The GSEA approach requires on discriminating between genes that are in a gene set and those that are not. +The GSEA approach requires discriminating between genes that are in a gene set and those that are not. Practically speaking, gene sets are just collections of gene identifiers! When the function we use for GSEA pre-ranked gets a list with duplicated gene identifiers, it can produce unexpected results. So, let's check for duplicates in the data frame of DESeq2 results. @@ -223,8 +223,9 @@ gsea_results <- GSEA(geneList = lfc_vector, # ordered ranked gene list Let's take a look at the GSEA results. ```{r view_gsea, live = TRUE, eval = FALSE} -View(gsea_results@result |> - dplyr::arrange(dplyr::desc(NES)) +View( + gsea_results@result |> + dplyr::arrange(dplyr::desc(NES)) ) ``` @@ -232,10 +233,11 @@ Normalized enrichment scores (NES) are enrichment scores that are scaled to make Pathways with significant, highly positive NES are enriched in ERMS myoblasts, whereas pathways with significant, highly negative NES are enriched in ARMS myoblasts. -Let's write these results to file. +Let's write these results to a file. ```{r write_gsea} -gsea_results@result |> readr::write_tsv(output_file) +gsea_results@result |> + readr::write_tsv(output_file) ``` ### Visualizing GSEA results From f01b271c01e68f549512a039543257f917bee3db Mon Sep 17 00:00:00 2001 From: Ally Hawkins Date: Thu, 13 Nov 2025 14:10:35 -0600 Subject: [PATCH 006/148] backticks for AUCell and SCE --- scRNA-seq-advanced/05-aucell.Rmd | 38 ++++++++++++++++---------------- 1 file changed, 19 insertions(+), 19 deletions(-) diff --git a/scRNA-seq-advanced/05-aucell.Rmd b/scRNA-seq-advanced/05-aucell.Rmd index f74fc0fd..a39a1906 100644 --- a/scRNA-seq-advanced/05-aucell.Rmd +++ b/scRNA-seq-advanced/05-aucell.Rmd @@ -18,21 +18,21 @@ date: 2024 --- -In this notebook, we'll demonstrate how to use the AUCell method, introduced in [Aibar _et al_. 2017.](https://doi.org/10.1038/nmeth.4463). +In this notebook, we'll demonstrate how to use the `AUCell` method, introduced in [Aibar _et al_. 2017.](https://doi.org/10.1038/nmeth.4463). -We can use AUCell when we are interested in a gene set's relative expression or activity in an individual cell. +We can use `AUCell` when we are interested in a gene set's relative expression or activity in an individual cell. Gene sets can come from a curated collection of prior knowledge, like the Hallmark collection we used in the last notebook, or we can use our own custom gene sets (e.g., a set of marker genes for a cell type of interest). -A nice feature of AUCell is that it is based on ranking genes from highest to lowest expression value in an individual cell, which is helpful in the following ways ([AUCell vignette](https://bioconductor.org/packages/release/bioc/vignettes/AUCell/inst/doc/AUCell.html)): +A nice feature of `AUCell` is that it is based on ranking genes from highest to lowest expression value in an individual cell, which is helpful in the following ways ([`AUCell` vignette](https://bioconductor.org/packages/release/bioc/vignettes/AUCell/inst/doc/AUCell.html)): - It can take a number of different values as input (e.g., raw counts, TPM) - It compensates for differences in library size, where something like averaging raw count values of genes in a gene set would not - It scales to larger datasets, since creating rankings is not as resource-intensive as something like permutation testing, and we could split up the object into subsets of cells if needed -AUCell calculates the area under the recovery curve (AUC), which "represents the proportion of expressed genes in the signature and their relative expression value compared to the other genes within the cell" ([Aibar _et al_. 2017.](https://doi.org/10.1038/nmeth.4463)). +`AUCell` calculates the area under the recovery curve (AUC), which "represents the proportion of expressed genes in the signature and their relative expression value compared to the other genes within the cell" ([Aibar _et al_. 2017.](https://doi.org/10.1038/nmeth.4463)). We will visualize some recovery curves in the notebook to give you a better intuition about the AUC and its meaning. -The AUC values we get out of AUCell can be used in a number of ways ([Aibar _et al_. 2017.](https://doi.org/10.1038/nmeth.4463)): +The AUC values we get out of `AUCell` can be used in a number of ways ([Aibar _et al_. 2017.](https://doi.org/10.1038/nmeth.4463)): - As continuous values we can use for visualization or clustering - For binary assignment (i.e., "on" and "off" or "expressed" and "not expressed") if we pick a threshold either automatically using built-in functionality or manually by inspecting the distribution of scores ourselves @@ -82,7 +82,7 @@ sce_file <- fs::path(processed_dir, "SCPCL000822_processed.rds") ``` -We will save the AUCell results as a table in the analysis directory. +We will save the `AUCell` results as a table in the analysis directory. ```{r setup_output_files, live = TRUE} output_file <- fs::path(analysis_dir, @@ -99,7 +99,7 @@ source(fs::path("util", "aucell_functions.R")) ``` This loads one custom function, called `plot_recovery_curve()`, into our environment. -This function is adapted from [the AUCell vignette](https://github.com/aertslab/AUCell/blob/91753b327a39dc7a4bbed46408ec2271c485f2f0/vignettes/AUCell.Rmd#L295-L316). +This function is adapted from [the `AUCell` vignette](https://github.com/aertslab/AUCell/blob/91753b327a39dc7a4bbed46408ec2271c485f2f0/vignettes/AUCell.Rmd#L295-L316). ## Set up gene sets @@ -150,7 +150,7 @@ ewing_gene_set_collection <- ewing_gene_set_names |> GeneSetCollection() ``` -## Read in and prepare SingleCellExperiment +## Read in and prepare the `SingleCellExperiment` ```{r read_in_sce, live = TRUE} sce <- readr::read_rds(sce_file) @@ -164,7 +164,7 @@ We can extract a counts matrix in sparse format for use with `AUCell`. counts_matrix <- counts(sce) ``` -There may be genes in our gene set that do not appear in the SingleCellExperiment object. +There may be genes in our gene set that do not appear in the `SingleCellExperiment` object. We can remove them using the `subsetGeneSets()` function. ```{r subset_gene_sets, live = TRUE} @@ -173,9 +173,9 @@ ewing_gene_set_collection <- subsetGeneSets(ewing_gene_set_collection, rownames(counts_matrix)) ``` -## AUCell +## `AUCell` -AUCell relies on ranking genes from highest to lowest expression value to calculate the AUC. +`AUCell` relies on ranking genes from highest to lowest expression value to calculate the AUC. The AUC is the area under the recovery curve, which captures the number of genes in a gene set that are present in the rankings above some threshold (i.e., it is the area under the curve to the left of this gene rank). By default, the top 5% of genes are used as the threshold. @@ -190,16 +190,16 @@ set.seed(2024) ### Cell ranking -The first step in AUCell is to rank genes for each cell from highest to lowest expression value. -We can do this using the `AUCell_buildRankings()` function, which will output a visualization showing the distribution of the number of genes detected in the cells in our SingleCellExperiment object. +The first step in `AUCell` is to rank genes for each cell from highest to lowest expression value. +We can do this using the `AUCell_buildRankings()` function, which will output a visualization showing the distribution of the number of genes detected in the cells in our `SingleCellExperiment` object. ```{r cell_rankings, live = TRUE} cell_rankings <- AUCell_buildRankings(counts_matrix) ``` -The AUCell authors recommend making sure most cells have at least the number of genes we will use as the max rank to calculate the AUC. +The `AUCell` authors recommend making sure most cells have at least the number of genes we will use as the max rank to calculate the AUC. -The AUC max rank value tells AUCell the cutoff in the gene rankings to use for calculating AUC; we will visualize this curve and max rank in just a moment. +The AUC max rank value tells `AUCell` the cutoff in the gene rankings to use for calculating AUC; we will visualize this curve and max rank in just a moment. If we picked a max rank higher than the number of genes detected in most cells, the non-detected genes that are randomly ordered would play an outsized role in our AUC values. By default, the max rank is the top 5% highest expressed genes. @@ -227,10 +227,10 @@ auc_max_rank <- ceiling(nrow(cell_rankings) * 0.01) ### Plotting AUC -The AUC values we get out of AUCell are the area under a recovery curve and estimate the proportion of genes in the gene set that are highly expressed (i.e., highly ranked). +The AUC values we get out of `AUCell` are the area under a recovery curve and estimate the proportion of genes in the gene set that are highly expressed (i.e., highly ranked). Let's plot the recovery curve for a cell with high AUC and a cell with low AUC to get a better intuition about AUC values. -Earlier, we loaded a custom function we adapted from [the AUCell vignette](https://github.com/aertslab/AUCell/blob/91753b327a39dc7a4bbed46408ec2271c485f2f0/vignettes/AUCell.Rmd) called `plot_recovery_curve()` with `source()`. +Earlier, we loaded a custom function we adapted from [the `AUCell` vignette](https://github.com/aertslab/AUCell/blob/91753b327a39dc7a4bbed46408ec2271c485f2f0/vignettes/AUCell.Rmd) called `plot_recovery_curve()` with `source()`. First, we'll start with a cell with a high AUC. We picked this barcode ahead of time when we wrote the notebook. @@ -293,7 +293,7 @@ head(auc_df) ### Assignments -AUCell can assign cells as having an active gene set or not by picking a threshold automatically. +`AUCell` can assign cells as having an active gene set or not by picking a threshold automatically. We'll explore these in a later plot, but for now, let's calculate the threshold and assign cells with `AUCell_exploreThresholds()`. ```{r auc_assignments, live = TRUE} @@ -376,7 +376,7 @@ auc_plotting_df |> #### Adding AUC to `colData` -We can also add the AUC values back into the SingleCellExperiment for convenience, e.g., for plotting. +We can also add the AUC values back into the `SingleCellExperiment` for convenience, e.g., for plotting. We'll add it to the existing `colData`. First, let's rename the gene set columns to something more easily typed. From c4b4082b39e8524dea907c082e4cf42bb2f2162e Mon Sep 17 00:00:00 2001 From: Stephanie Spielman Date: Thu, 13 Nov 2025 16:25:22 -0500 Subject: [PATCH 007/148] Update scRNA-seq-advanced/02-dataset_integration.Rmd Co-authored-by: Ally Hawkins <54039191+allyhawkins@users.noreply.github.com> --- scRNA-seq-advanced/02-dataset_integration.Rmd | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scRNA-seq-advanced/02-dataset_integration.Rmd b/scRNA-seq-advanced/02-dataset_integration.Rmd index c63fe02c..3598c619 100644 --- a/scRNA-seq-advanced/02-dataset_integration.Rmd +++ b/scRNA-seq-advanced/02-dataset_integration.Rmd @@ -720,7 +720,7 @@ What trends do you observe between tumor and healthy tissues among these integra `fastMNN` is only one of many approaches to perform integration, and different methods have different capabilities and may give different results. For example, some methods can accommodate additional covariates (e.g., technology, patient, diagnosis, etc.) that can influence integration. -In fact the data we are using has a known _patient_ covariate; `SCPCL000479` and `SCPCL000480` are from the Patient A, and `SCPCL000481` and `SCPCL000482` are from Patient B. +In fact the data we are using has a known _patient_ covariate; `SCPCL000479` and `SCPCL000480` are from Patient A, and `SCPCL000481` and `SCPCL000482` are from Patient B. So, let's perform integration with a method that can use this information - [`harmony`](https://portals.broadinstitute.org/harmony/)! From ad068f5614844219a255ef4c60d6dddde51078c1 Mon Sep 17 00:00:00 2001 From: Joshua Shapiro Date: Tue, 18 Nov 2025 11:06:27 -0500 Subject: [PATCH 008/148] reformat multi-line functions in intro --- .../01-read_filter_normalize_scRNA.Rmd | 59 ++++++++++++------- 1 file changed, 39 insertions(+), 20 deletions(-) diff --git a/scRNA-seq-advanced/01-read_filter_normalize_scRNA.Rmd b/scRNA-seq-advanced/01-read_filter_normalize_scRNA.Rmd index b4a2bb91..23991c70 100644 --- a/scRNA-seq-advanced/01-read_filter_normalize_scRNA.Rmd +++ b/scRNA-seq-advanced/01-read_filter_normalize_scRNA.Rmd @@ -96,8 +96,10 @@ normalized_dir <- file.path(data_dir, "normalized") fs::dir_create(normalized_dir) # output RDS file for normalized data -output_sce_file <- file.path(normalized_dir, - "glioblastoma_normalized_sce.rds") +output_sce_file <- file.path( + normalized_dir, + "glioblastoma_normalized_sce.rds" +) ``` @@ -273,8 +275,10 @@ The `mito` name is important in that it is the name that will be expected by a l (We could define more subsets, but for now this one will do.) ```{r per cell QC, live=TRUE} -filtered_sce <- scuttle::addPerCellQC(filtered_sce, - subsets = list(mito = mito_genes)) +filtered_sce <- scuttle::addPerCellQC( + filtered_sce, + subsets = list(mito = mito_genes) +) ``` Now we can look at the colData to see what was added: @@ -337,8 +341,11 @@ We stick with that default, but for clarity, we will also include it in our code ```{r miQC plotFiltering} # look at miQC filtering -miQC::plotFiltering(filtered_sce, miqc_model, - posterior_cutoff = 0.75) + +miQC::plotFiltering( + filtered_sce, + miqc_model, + posterior_cutoff = 0.75 +) + theme_bw() ``` @@ -349,8 +356,10 @@ At this point, we can perform the actual filtering using the `filterCells()` fun ```{r miQC filtercells, live=TRUE} # perform miQC filtering -qcfiltered_sce <- miQC::filterCells(filtered_sce, - model = miqc_model) +qcfiltered_sce <- miQC::filterCells( + filtered_sce, + model = miqc_model +) ``` #### One more filter: unique gene count @@ -383,8 +392,10 @@ Finally, we apply the scaling factor to the expression values for each cell and qclust <- scran::quickCluster(qcfiltered_sce) # use clusters to compute scaling factors and add to SCE object -qcfiltered_sce <- scran::computeSumFactors(qcfiltered_sce, - clusters = qclust) +qcfiltered_sce <- scran::computeSumFactors( + qcfiltered_sce, + clusters = qclust +) # perform normalization using scaling factors # and save as a new SCE object @@ -424,8 +435,10 @@ num_genes <- 2000 gene_variance <- scran::modelGeneVar(normalized_sce) # get the most variable genes -hv_genes <- scran::getTopHVGs(gene_variance, - n = num_genes) +hv_genes <- scran::getTopHVGs( + gene_variance, + n = num_genes +) ``` The result is a vector of gene ids (ordered from most to least variable): @@ -486,8 +499,10 @@ Since the UMAP procedure would be slow to calculate with the full data, so the ` Since we already have a PCA matrix, we will tell the function use that instead of recalculating it. ```{r runUMAP, live=TRUE} -normalized_sce <- scater::runUMAP(normalized_sce, - dimred = "PCA") +normalized_sce <- scater::runUMAP( + normalized_sce, + dimred = "PCA" +) ``` As before, we could extract the UMAP matrix from our SCE object with the `reducedDim()` function. @@ -495,10 +510,12 @@ We can also visualize the UMAP results using the `plotReducedDim()` function. ```{r plotReducedDim, live=TRUE} # plot the UMAP -scater::plotReducedDim(normalized_sce, - "UMAP", - # color by the most variable gene - color_by = hv_genes[1]) +scater::plotReducedDim( + normalized_sce, + "UMAP", + # color by the most variable gene + color_by = hv_genes[1] +) ``` @@ -552,8 +569,10 @@ Here rather than the general `plotReducedDim()` function, we will use `plotUMAP( ```{r plot clusters, live=TRUE} # plot UMAP with assigned clusters -scater::plotUMAP(normalized_sce, - color_by = "nn_cluster") +scater::plotUMAP( + normalized_sce, + color_by = "nn_cluster" +) ``` What do you see in these results? From d7bc902e02651bdae75fc291ff01d1d27b099926 Mon Sep 17 00:00:00 2001 From: Joshua Shapiro Date: Tue, 18 Nov 2025 11:19:03 -0500 Subject: [PATCH 009/148] Formatting for differential expression --- .../03-differential_expression.Rmd | 237 ++++++++++-------- 1 file changed, 139 insertions(+), 98 deletions(-) diff --git a/scRNA-seq-advanced/03-differential_expression.Rmd b/scRNA-seq-advanced/03-differential_expression.Rmd index 43d0cb9e..55f1ea68 100644 --- a/scRNA-seq-advanced/03-differential_expression.Rmd +++ b/scRNA-seq-advanced/03-differential_expression.Rmd @@ -68,27 +68,35 @@ To begin, let's set up our directories and files: data_dir <- file.path("data", "rms") # integrated file containing samples to use for DE analysis -integrated_sce_file <- file.path(data_dir, - "integrated", - "rms_all_sce.rds") +integrated_sce_file <- file.path( + data_dir, + "integrated", + "rms_all_sce.rds" +) # sample metadata to set up DE analysis -sample_metadata_file <- file.path(data_dir, - "annotations", - "rms_sample_metadata.tsv") +sample_metadata_file <- file.path( + data_dir, + "annotations", + "rms_sample_metadata.tsv" +) # directory to store output deseq_dir <- file.path("analysis", "rms", "deseq") fs::dir_create(deseq_dir) # results file to output from DE analysis -deseq_output_file <- file.path(deseq_dir, - "rms_myoblast_deseq_results.tsv") +deseq_output_file <- file.path( + deseq_dir, + "rms_myoblast_deseq_results.tsv" +) # output integrated sce object -output_sce_file <- file.path(data_dir, - "integrated", - "rms_subset_sce.rds") +output_sce_file <- file.path( + data_dir, + "integrated", + "rms_subset_sce.rds" +) ``` We can go ahead and read in the SCE object and the metadata file. @@ -174,17 +182,21 @@ coldata_df <- colData(integrated_sce) |> dplyr::left_join(sample_metadata, by = c("sample" = "library_id")) |> # create new columns # cell_id is a combination of barcode and sample - dplyr::mutate(cell_id = glue::glue("{sample}-{barcode}"), - # simplify subdiagnosis - diagnosis_group = forcats::fct_recode( - subdiagnosis, - "ARMS" = "Alveolar rhabdomyosarcoma", - "ERMS" = "Embryonal rhabdomyosarcoma" - )) + dplyr::mutate( + cell_id = glue::glue("{sample}-{barcode}"), + # simplify subdiagnosis + diagnosis_group = forcats::fct_recode( + subdiagnosis, + "ARMS" = "Alveolar rhabdomyosarcoma", + "ERMS" = "Embryonal rhabdomyosarcoma" + ) + ) # add modified data frame back to SCE as DataFrame -colData(integrated_sce) <- DataFrame(coldata_df, - row.names = coldata_df$cell_id) +colData(integrated_sce) <- DataFrame( + coldata_df, + row.names = coldata_df$cell_id +) ``` Now when we look at the `colData` of the SCE object we should see new columns, including the `diagnosis_group` column which indicates if each cell comes from an ERMS or ARMS sample. @@ -204,11 +216,13 @@ In the chunk below we will start by taking a look at our integration results and ```{r diagnosis group UMAP, live=TRUE} # UMAP of all samples, separating by diagnosis group -scater::plotReducedDim(integrated_sce, - dimred = "fastmnn_UMAP", - color_by = "diagnosis_group", - point_size= 0.5, - point_alpha = 0.2) +scater::plotReducedDim( + integrated_sce, + dimred = "fastmnn_UMAP", + color_by = "diagnosis_group", + point_size = 0.5, + point_alpha = 0.2 +) ``` Interestingly, it looks like samples from the ARMS and ERMS subtypes tend to group with samples of the same subtype rather than all together. @@ -225,12 +239,14 @@ The samples which could be further classified have a mix of `Tumor_Mesoderm`, `T ```{r celltype UMAP} # UMAP of all samples labeled by cell type -scater::plotReducedDim(integrated_sce, - dimred = "fastmnn_UMAP", - # color each point by cell type - color_by = "celltype_broad", - point_size = 0.5, - point_alpha = 0.4) + +scater::plotReducedDim( + integrated_sce, + dimred = "fastmnn_UMAP", + # color each point by cell type + color_by = "celltype_broad", + point_size = 0.5, + point_alpha = 0.4 +) + # Modify the legend key with larger, easier to see points guides(color = guide_legend(override.aes = list(size = 3, alpha = 1))) ``` @@ -247,14 +263,16 @@ In the below plot we will color our cells by cell type while also using `facet_g ```{r celltype subdiagnosis UMAP, live=TRUE} # UMAP of all samples # separating by diagnosis group and labeling cell type -scater::plotReducedDim(integrated_sce, - dimred = "fastmnn_UMAP", - # color each point by cell type - color_by = "celltype_broad", - point_size= 0.5, - point_alpha = 0.4, - # tell scater to use diagnosis_group for plotting - other_fields = "diagnosis_group") + +scater::plotReducedDim( + integrated_sce, + dimred = "fastmnn_UMAP", + # color each point by cell type + color_by = "celltype_broad", + point_size = 0.5, + point_alpha = 0.4, + # tell scater to use diagnosis_group for plotting + other_fields = "diagnosis_group" +) + # include each diagnosis group as its own column facet_grid(cols = vars(diagnosis_group)) ``` @@ -271,20 +289,22 @@ tumor_cells_df <- coldata_df |> # create a stacked barplot ggplot(tumor_cells_df, aes(x = sample, fill = celltype_broad)) + - geom_bar(position = "fill", color = "black", size = 0.2) + - labs( - x = "Sample", - y = "Proportion of cells", - fill = "Cell type" - ) + + geom_bar(position = "fill", color = "black", size = 0.2) + + labs( + x = "Sample", + y = "Proportion of cells", + fill = "Cell type" + ) + scale_fill_brewer(palette = "Dark2") + theme_bw() + - theme(axis.text.x = element_text(angle = 90, vjust = 0.5))+ + theme(axis.text.x = element_text(angle = 90, vjust = 0.5)) + # facet by diagnosis group - facet_grid(cols = vars(diagnosis_group), - # only show non-NA values on x-axis - scales = "free_x", - space = "free_x") + facet_grid( + cols = vars(diagnosis_group), + # only show non-NA values on x-axis + scales = "free_x", + space = "free_x" + ) ``` Similar to the UMAP, this plot shows that ARMS and ERMS share a lot of the same cell types. @@ -376,8 +396,10 @@ We'll start by creating a fake matrix of counts. counts_mtx <- matrix( 1:12, ncol = 4, - dimnames = list(c("geneA", "geneB", "geneC"), - c("A-cell1", "A-cell2", "B-cell1", "B-cell2")) + dimnames = list( + c("geneA", "geneB", "geneC"), + c("A-cell1", "A-cell2", "B-cell1", "B-cell2") + ) ) counts_mtx ``` @@ -390,8 +412,7 @@ To do this we will use the `DelayedArray::colsum()` function, which allows us to groups <- c("A", "A", "B", "B") # sum counts across cells (columns) by group label -pb_counts <- DelayedArray::colsum(counts_mtx, - groups) +pb_counts <- DelayedArray::colsum(counts_mtx, groups) pb_counts ``` @@ -414,8 +435,10 @@ pb_groups <- colData(rms_sce)[, c("celltype_broad", "sample")] # create a new SCE object that contains # the pseudo-bulked counts across the provided groups -pb_sce <- scuttle::aggregateAcrossCells(rms_sce, - id = pb_groups) +pb_sce <- scuttle::aggregateAcrossCells( + rms_sce, + id = pb_groups +) # column names aren't automatically added to the pseudo-bulked sce, # so let's add them in @@ -514,8 +537,10 @@ The subtype information is stored in the `diagnosis_group` column of the `colDat ```{r deseq object, live=TRUE} # set up the deseq object, group by diagnosis -deseq_object <- DESeq2::DESeqDataSet(tumor_myoblast_sce, - design = ~ diagnosis_group) +deseq_object <- DESeq2::DESeqDataSet( + tumor_myoblast_sce, + design = ~diagnosis_group +) ``` The pseudo-bulked SCE object contains only one assay: the `counts` assay. @@ -536,8 +561,10 @@ As a reminder, this is NOT required for running `DESeq2` analysis; we are just u deseq_object <- DESeq2::estimateSizeFactors(deseq_object) # normalize and log transform to use for visualization -normalized_object <- DESeq2::rlog(deseq_object, - blind = TRUE) +normalized_object <- DESeq2::rlog( + deseq_object, + blind = TRUE +) normalized_object ``` @@ -651,18 +678,19 @@ This package automatically colors the points by cutoffs for both significance an Even better, it outputs a `ggplot2` object, so if we want to customize the plot further, we can use the same `ggplot2` commands we have used before. ```{r volcano} -EnhancedVolcano::EnhancedVolcano(deseq_results, - x = 'log2FoldChange', # fold change statistic to plot - y = 'pvalue', # significance values - lab = deseq_results$gene_symbol, # labels for points - pCutoff = 1e-05, # p value cutoff (default) - FCcutoff = 1, # fold change cutoff (default) - title = NULL, # no title - subtitle = NULL, # or subtitle - caption = NULL, # or caption - drawConnectors = TRUE, # add some fun arrows - labSize = 3 # smaller labels - ) + +EnhancedVolcano::EnhancedVolcano( + deseq_results, + x = "log2FoldChange", # fold change statistic to plot + y = "pvalue", # significance values + lab = deseq_results$gene_symbol, # labels for points + pCutoff = 1e-05, # p value cutoff (default) + FCcutoff = 1, # fold change cutoff (default) + title = NULL, # no title + subtitle = NULL, # or subtitle + caption = NULL, # or caption + drawConnectors = TRUE, # add some fun arrows + labSize = 3 # smaller labels +) + # change the overall theme theme_bw() + # move the legend to the bottom @@ -680,12 +708,14 @@ This can help us validate the `DESeq2` results so that we can visualize gene exp myoblast_combined_sce <- rms_sce[, which(rms_sce$celltype_broad == "Tumor_Myoblast")] # plot PTPRT (ENSG00000196090) expression in ARMS vs. ERMS -scater::plotReducedDim(myoblast_combined_sce, - dimred = "fastmnn_UMAP", - color_by = "ENSG00000196090", #PTPRT - point_size= 0.5, - point_alpha = 0.4, - other_fields = "diagnosis_group") + +scater::plotReducedDim( + myoblast_combined_sce, + dimred = "fastmnn_UMAP", + color_by = "ENSG00000196090", # PTPRT + point_size = 0.5, + point_alpha = 0.4, + other_fields = "diagnosis_group" +) + facet_grid(cols = vars(diagnosis_group)) ``` @@ -695,10 +725,12 @@ However, we might be interested to see the expression of genes that are differen ```{r celltype comparison} # let's compare gene expression across some other cell types # look at all tumor cells and pick one normal cell type -celltypes <- c("Tumor_Myoblast", - "Tumor_Mesoderm", - "Tumor_Myocyte", - "Vascular Endothelium") +celltypes <- c( + "Tumor_Myoblast", + "Tumor_Mesoderm", + "Tumor_Myocyte", + "Vascular Endothelium" +) # subset to just celltypes that we are interested in tumor_sce <- rms_sce[, which(rms_sce$celltype_broad %in% celltypes)] @@ -713,28 +745,37 @@ We can then directly reference that `Feature` column when plotting, instead of u ```{r multi-gene plot} # pick a couple genes to look at -genes_to_plot <- c("ENSG00000196090", #PTPRT - "ENSG00000148935") #GAS2 +genes_to_plot <- c( + "ENSG00000196090", # PTPRT + "ENSG00000148935" +) # GAS2 # create a violin plot -scater::plotExpression(tumor_sce, - # a vector of genes to plot - features = genes_to_plot, - x = "diagnosis_group", - color_by = "diagnosis_group", - other_fields = "celltype_broad", - point_size = 0.1) + +scater::plotExpression( + tumor_sce, + # a vector of genes to plot + features = genes_to_plot, + x = "diagnosis_group", + color_by = "diagnosis_group", + other_fields = "celltype_broad", + point_size = 0.1 +) + # each celltype is its own column - facet_grid(cols = vars(celltype_broad), - # each feature (gene) is its own row - rows = vars(Feature)) + + facet_grid( + cols = vars(celltype_broad), + # each feature (gene) is its own row + rows = vars(Feature) + ) + # change the font size of the facet labels theme(strip.text = element_text(size = 7)) + - guides(color = guide_legend( - title = "Subtype", # update the legend title - # change the size of the legend colors - override.aes = list(size = 3, alpha = 1)) + guides( + color = guide_legend( + # update the legend title + title = "Subtype", + # change the size of the legend colors + override.aes = list(size = 3, alpha = 1) ) + ) ``` How do the expression of these genes change across cell types and RMS subtypes? From aae36f1c8ebf299a80b4ce80cc13b36abb70c7f9 Mon Sep 17 00:00:00 2001 From: "Stephanie J. Spielman" Date: Tue, 18 Nov 2025 11:41:43 -0500 Subject: [PATCH 010/148] less live path typing --- scRNA-seq-advanced/02-dataset_integration.Rmd | 2 +- scRNA-seq-advanced/04-gene_set_enrichment_analysis.Rmd | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/scRNA-seq-advanced/02-dataset_integration.Rmd b/scRNA-seq-advanced/02-dataset_integration.Rmd index 3598c619..8ae26da1 100644 --- a/scRNA-seq-advanced/02-dataset_integration.Rmd +++ b/scRNA-seq-advanced/02-dataset_integration.Rmd @@ -70,7 +70,7 @@ Both Patient A (18 year old male) and Patient B (4 year old female) had recurren To begin, let's set up our directories and files: -```{r directories, live = TRUE} +```{r directories} # Define directory where processed SCE objects to be integrated are stored input_dir <- file.path("data", "rms", "processed") diff --git a/scRNA-seq-advanced/04-gene_set_enrichment_analysis.Rmd b/scRNA-seq-advanced/04-gene_set_enrichment_analysis.Rmd index e6c76b9b..e22afb81 100644 --- a/scRNA-seq-advanced/04-gene_set_enrichment_analysis.Rmd +++ b/scRNA-seq-advanced/04-gene_set_enrichment_analysis.Rmd @@ -55,7 +55,7 @@ library(msigdbr) #### Directories -```{r create_dir, live = TRUE} +```{r create_dir} # We'll use the differential expression results as GSEA input rms_analysis_dir <- file.path("analysis", "rms") From 9311c72566df520ff17849b5b1fa867ac381d142 Mon Sep 17 00:00:00 2001 From: Ally Hawkins Date: Tue, 18 Nov 2025 18:26:07 +0000 Subject: [PATCH 011/148] remove non-detected genes --- scRNA-seq-advanced/05-aucell.Rmd | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/scRNA-seq-advanced/05-aucell.Rmd b/scRNA-seq-advanced/05-aucell.Rmd index a39a1906..4f185439 100644 --- a/scRNA-seq-advanced/05-aucell.Rmd +++ b/scRNA-seq-advanced/05-aucell.Rmd @@ -156,9 +156,21 @@ ewing_gene_set_collection <- ewing_gene_set_names |> sce <- readr::read_rds(sce_file) ``` +Our object includes counts for all genes that were present in the index when quantifying gene expression. +There are a number of genes that are present in the object but not detected in any of the cells. +We don't want genes that are not found in our data set to impact our rankings, so let's remove them. + +```{r, filter_sce} +# remove genes that are not detected in any of the cells from the SCE object +genes_to_keep <- rowData(sce)$detected > 0 +sce <- sce[genes_to_keep, ] +``` + + The `AUCell` functions takes an expression matrix with genes as rows and cells as column. We can extract a counts matrix in sparse format for use with `AUCell`. + ```{r counts_matrix} # Extract counts matrix counts_matrix <- counts(sce) From 5d21965965567439282391960a3df2e599b10f6e Mon Sep 17 00:00:00 2001 From: "stephanie.spielman@gmail.com" Date: Tue, 18 Nov 2025 21:04:33 +0000 Subject: [PATCH 012/148] rip out glue::glue --- scRNA-seq-advanced/02-dataset_integration.Rmd | 29 +++---------------- 1 file changed, 4 insertions(+), 25 deletions(-) diff --git a/scRNA-seq-advanced/02-dataset_integration.Rmd b/scRNA-seq-advanced/02-dataset_integration.Rmd index 07c9078b..ca19f31d 100644 --- a/scRNA-seq-advanced/02-dataset_integration.Rmd +++ b/scRNA-seq-advanced/02-dataset_integration.Rmd @@ -66,6 +66,8 @@ These SCE objects, stored as RDS files, are available in the `data/rms/processed - `SCPCL000481.rds` (Patient B) - `SCPCL000482.rds` (Patient B) +Both Patient A (18 year old male) and Patient B (4 year old female) had recurrent embryonal rhabdomyosarcoma when samples were taken. + To begin, let's set up our directories and files: ```{r directories, live = TRUE} @@ -129,29 +131,6 @@ length(histologies) purrr::map(histologies, length) ``` -One other new coding strategy we'll learn in this notebook is using the [`glue`](https://glue.tidyverse.org/) package to combine strings. -This package offers a convenient function `glue::glue()` that can be used instead of the base R `paste()` function. - -```{r paste} -# Define a variable for example: -org_name <- "Data Lab" - -# We can use paste to combine strings and variables: -paste("Welcome to the", org_name, "workshop on Advanced scRNA-seq!") -``` - -We can use `glue::glue()` to accomplish the same goal with some different syntax: - -```{r glue} -# glue::glue takes a single string argument (only one set of quotes!), and -# variables can easily be included inside {curly braces} -glue::glue("Welcome to the {org_name} workshop on Advanced scRNA-seq!") -``` - -(Note that even though the `glue::glue()` output isn't in quotes, it still behaves like a string!) - - -Alright, time for the good stuff! Let's use `purrr::map()` to read in our SCE objects so that they are immediately stored together in a list. @@ -718,7 +697,7 @@ What trends do you observe between tumor and healthy tissues among these integra `fastMNN` is only one of many approaches to perform integration, and different methods have different capabilities and may give different results. For example, some methods can accommodate additional covariates (e.g., technology, patient, diagnosis, etc.) that can influence integration. -In fact the data we are using has a known _patient_ covariate; `SCPCL000479` and `SCPCL000480` are from the first patient, and `SCPCL000481` and `SCPCL000482` are from the second patient. +In fact the data we are using has a known _patient_ covariate; `SCPCL000479` and `SCPCL000480` are from Patient A, and `SCPCL000481` and `SCPCL000482` are from Patient B. So, let's perform integration with a method that can use this information - [`harmony`](https://portals.broadinstitute.org/harmony/)! @@ -809,7 +788,7 @@ scater::plotReducedDim(merged_sce, # Specify variable for faceting other_fields = "sample") + scale_color_brewer(palette = "Dark2", name = "Broad celltype", na.value = "grey80") + - guides(color = guide_legend(override.aes = list(size = 3))) + + guides(color = guide_legend(override.aes = list(size = 3, alpha = 1))) + ggtitle("UMAP after integration with harmony") + facet_wrap(vars(sample)) ``` From 334f51cb7909e991814e418164f99947423ea868 Mon Sep 17 00:00:00 2001 From: "stephanie.spielman@gmail.com" Date: Tue, 18 Nov 2025 21:47:12 +0000 Subject: [PATCH 013/148] updated merging preamble and sectioning, opened with checking genes --- scRNA-seq-advanced/02-dataset_integration.Rmd | 99 +++++++++++-------- 1 file changed, 59 insertions(+), 40 deletions(-) diff --git a/scRNA-seq-advanced/02-dataset_integration.Rmd b/scRNA-seq-advanced/02-dataset_integration.Rmd index ca19f31d..a0e8d4a5 100644 --- a/scRNA-seq-advanced/02-dataset_integration.Rmd +++ b/scRNA-seq-advanced/02-dataset_integration.Rmd @@ -207,19 +207,68 @@ A word of caution before we begin: **This merged SCE object is NOT an integrated Merging SCEs does not perform any batch correction, but just reorganizes the data to allow us to proceed to integration next. To merge SCE objects, we do need to do some wrangling and bookkeeping to ensure compatibility and that we don't lose important information. -Overall we'll want to take care of these items: +Overall, we'll want to make sure that: -1. We should be able to trace sample-specific information back to the originating sample, including... - - Cell-level information: Which sample is each cell from? - - Library-specific feature statistics, e.g., gene-level statistics for a given library found in `rowData`. - Which sample is a given feature statistic from? -2. SCE objects should contain the same genes: Each SCE object should have the same row names. -3. SCE cell metadata columns should match: The `colData` for each SCE object should have the same column names. +1. All objects have compatible dimensions. +This means that all objects should... + + Have the same genes, in the same order + + Have the same `colData` slot columns, in the same order + + Have the same assays and reduced dimensions +2. After merging, we'll still be able to identify which sample different pieces of information came from +As we saw in the slides, this means we'll have to... + + Attach sample names to the barcodes (aka, the SCE's column names) + + Attach sample names to `rowData` slot column names and `metadata` field names (if you care to keep this information around - today, we will!) + + Add a new column indicating the sample to the `colData` slot + +We'll approach this merge in two parts: + ++ First, we'll take some time to thoroughly explore the our SCE objects to determine what wrangling we need to do to make all the objects _compatible_ for merging ++ Then, we'll write (ok, we've written it for you) a _custom function_ to prepare each SCE object for merging, including: + + Making any changes to ensure objects are compatible + + Adding in identifying information so we know which sample the cells and other metadata came from + +When merging objects on your own, don't skip these data exploration steps! +The steps we take to prepare our SCEs will probably be different from the steps you need to take with other SCEs, and only by carefully exploring the objects can you figure out what steps you'll need to take to meet all of our conditions. + +### Explore the SCE objects + +#### Check the genes + +First, we'll compare the object's genes (aka, their rownames). +We can use some `purrr` magic to help us find the set of shared genes among all objects: + +```{r shared genes} +# Define vector of shared genes +shared_genes <- sce_list |> + # get rownames (genes) for each SCE in sce_list + purrr::map(rownames) |> + # reduce to the _intersection_ among lists + purrr::reduce(intersect) + +# How many shared genes are there? +length(shared_genes) +``` + +That's quite a lot! +In fact, because these objects were all uniformly processed by the same workflow (which did not filter out any genes!), we expect them to all have the same genes. +We can map over the list to confirm that indeed, they have the same number of rows (genes): + + +```{r check shared genes, live = TRUE} +# The number of genes in an SCE corresponds to its number of rows: +sce_list |> + purrr::map(nrow) +``` + +Even though we know the genes already match, we need to also be sure they are in the same _order_ among all objects. +So, we'll hold onto that `shared_genes` variable we defined and use it soon in our custom function to make sure all objects fully match. + + +#### Check the `colData` column names + +#### Check the assays and reduced dimensions -We'll begin by taking some time to thoroughly explore our SCE objects and figure out what wrangling steps we need to take for these specific data. -Don't skip this exploration! -Bear in mind that the exact wrangling shown here will not be the same for other SCE objects you work with, but the same general principles apply. #### Preserving sample information at the cell level @@ -275,36 +324,6 @@ purrr::map(sce_list, #### Ensuring that only shared genes are used -The next step in ensuring SCE compatibility is to make sure they all contain the same genes, which are stored as the SCE object's row names (these names are also found the `rowData` slot's row names). -Here, those gene ids are unique Ensembl gene ids. - -We can use some `purrr` magic to quickly find the set of shared genes among our samples, and then ask how many there are. - -```{r shared genes} -# Define vector of shared genes -shared_genes <- sce_list |> - # get rownames (genes) for each SCE in sce_list - purrr::map(rownames) |> - # reduce to the _intersection_ among lists - purrr::reduce(intersect) -``` - -```{r print shared genes, live = TRUE} -# How many shared genes are there? -length(shared_genes) -``` - -In this case, we happen to know that all SCE objects we're working with already contained the same genes. -We do a quick-and-dirty check for this by looking at the number of rows across SCE objects, and we'll see that they are all the same: - -```{r check shared genes, live = TRUE} -# The number of genes in an SCE corresponds to its number of rows: -sce_list |> - purrr::map(nrow) -``` - -So, for our data, we will not have to subset to shared genes since they are already shared! - #### Ensuring matching columns in `colData` Finally, we'll need to have the same column names across all SCE `colData` tables, so let's look at all those column names. From 27fe54653774b05a8280b2ec05b49f644d7004c3 Mon Sep 17 00:00:00 2001 From: "stephanie.spielman@gmail.com" Date: Tue, 18 Nov 2025 21:57:06 +0000 Subject: [PATCH 014/148] sections for exploring coldata names and assays/reddims --- scRNA-seq-advanced/02-dataset_integration.Rmd | 48 +++++++++++++++++++ 1 file changed, 48 insertions(+) diff --git a/scRNA-seq-advanced/02-dataset_integration.Rmd b/scRNA-seq-advanced/02-dataset_integration.Rmd index a0e8d4a5..de537fd5 100644 --- a/scRNA-seq-advanced/02-dataset_integration.Rmd +++ b/scRNA-seq-advanced/02-dataset_integration.Rmd @@ -266,8 +266,56 @@ So, we'll hold onto that `shared_genes` variable we defined and use it soon in o #### Check the `colData` column names +Next up, we'll check the `colData` columns: we need these to be the same, and in the same order. +Let's print out each object's `colData` column name to see where we stand: + +```{r coldata colnames} +sce_list |> + purrr::map( + \(sce) colnames(colData(sce)) + ) +``` +We see the same columns all around in the same order, which is great! + +But what if we we saw different (but overlapping) columns across objects? +In that case, we could find the intersection of column names like we did above for genes, and use that to re-order and subset all `colData` slot in our custom function. + + #### Check the assays and reduced dimensions +Finally, we'll make sure that all objects share the same assays and reduced dimensions. + +```{r assay names, live = TRUE} +# print all the assay names +sce_list |> + purrr::map(assayNames) +``` +```{r reddim names, live = TRUE} +# print all the assay names +sce_list |> + purrr::map(reducedDimNames) +``` +Again, all objects are compatible already: They both a `counts` and `logcounts` assay, and they both have `PCA` and `UMAP` reduced dimensions, so we don't need to do anything in particular here. + +In your own data exploration, if you encounter SCEs to merge that have different reduced dimensions, you can remove extraneous ones by setting them to `NULL`, e.g. `assay(sce, "assay_to_remove") <- NULL`. + + + + + + + + + + + + + + + + + + From 2281386b86c00090092cba67834ddfdc60ce4c5b Mon Sep 17 00:00:00 2001 From: "stephanie.spielman@gmail.com" Date: Tue, 18 Nov 2025 22:24:36 +0000 Subject: [PATCH 015/148] rowdata section and function update --- scRNA-seq-advanced/02-dataset_integration.Rmd | 184 ++++++++---------- 1 file changed, 77 insertions(+), 107 deletions(-) diff --git a/scRNA-seq-advanced/02-dataset_integration.Rmd b/scRNA-seq-advanced/02-dataset_integration.Rmd index de537fd5..cb87318f 100644 --- a/scRNA-seq-advanced/02-dataset_integration.Rmd +++ b/scRNA-seq-advanced/02-dataset_integration.Rmd @@ -217,6 +217,7 @@ This means that all objects should... 2. After merging, we'll still be able to identify which sample different pieces of information came from As we saw in the slides, this means we'll have to... + Attach sample names to the barcodes (aka, the SCE's column names) + This also ensures that column names are unique; while a single sample (library) is guaranteed to have unique barcodes, technically they can be repeated across samples! + Attach sample names to `rowData` slot column names and `metadata` field names (if you care to keep this information around - today, we will!) + Add a new column indicating the sample to the `colData` slot @@ -230,6 +231,9 @@ We'll approach this merge in two parts: When merging objects on your own, don't skip these data exploration steps! The steps we take to prepare our SCEs will probably be different from the steps you need to take with other SCEs, and only by carefully exploring the objects can you figure out what steps you'll need to take to meet all of our conditions. + +### Background: Why do we need to make these changes + ### Explore the SCE objects #### Check the genes @@ -299,90 +303,23 @@ Again, all objects are compatible already: They both a `counts` and `logcounts` In your own data exploration, if you encounter SCEs to merge that have different reduced dimensions, you can remove extraneous ones by setting them to `NULL`, e.g. `assay(sce, "assay_to_remove") <- NULL`. +#### Bonus rowData exploration +One of the other items we said we'd need to think about is the `rowData`, which contains gene metadata. +This slot is interesting because some of its columns are _specific_ to the given sample, while others are general: - - - - - - - - - - - - - - - - - - -#### Preserving sample information at the cell level - -How will we be able to tell which sample a given cell came from? - -The best way to do this is simply to add a `colData` column with the sample information, so that we can know which sample each row came from. - -In addition, we want to pay some attention to the SCE object's column names (the cell ids), which must remain unique after merging since duplicate ids will cause an R error. -In this case, the SCE column names are barcodes (which is usually but not always the case in SCE objects), which are only guaranteed to be unique _within_ a sample but may be repeated across samples. -So, after merging, it's technically possible that multiple cells will have the same barcode. -This would be a problem for two reasons: -First, the cell id would not be able to point us back to cell's originating sample. -Second, it would literally cause an error in R, which does not allow duplicate column names. - - -One way to ensure that cell ids remain unique even after merging is to actually modify them by _prepending_ the relevant sample name. -For example, consider these barcodes for the `SCPCL000479` sample: - -```{r barcodes} -# Look at the column names for the `SCPCL000479` sample, for example -colnames(sce_list$SCPCL000479) |> - # Only print out the first 6 for convenience - head() -``` - -These ids will be updated to `SCPCL000479-GGGACCTCAAGCGGAT`, `SCPCL000479-CACAGATAGTGAGTGC`, and so on, thereby ensuring fully unique ids for all cells across all samples. - -#### Preserving sample information at the gene level - -The `rowData` table in SCE objects will often contain both "general" and "library-specific" information, for example: - -```{r rowdata} -rowData(sce_list$SCPCL000479) |> - head() -``` - -Here, the rownames are Ensembl gene ids, and columns are `gene_symbol`, `mean`, and `detected`. -The `gene_symbol` column is general information about all genes, not specific to any library or experiment, but `mean` and `detected` are library-specific gene statistics. -So, `gene_symbol` does not need to be traced back to its originating sample, but `mean` and `detected` do. -To this end, we can take a similar approach to what we'll do for cell ids: -We can change the sample-specific `rowData` column names by prepending the sample name. -For example, rather than being called `mean`, this column will be named `SCPCL000479-mean` for the `SCPCL000479` sample. - -All our SCE objects have the same `rowData` columns (as we can see in the next chunk), so we'll perform this renaming across all SCEs. - -```{r compare rowdata, live = TRUE} -# Use `purrr::map()` to quickly extract rowData column names for all SCEs -purrr::map(sce_list, - \(sce) colnames(rowData(sce))) -``` - - -#### Ensuring that only shared genes are used - -#### Ensuring matching columns in `colData` - -Finally, we'll need to have the same column names across all SCE `colData` tables, so let's look at all those column names. -We can use similar syntax here to what we used to look at all the `rowData` column names. - -```{r compare coldata} -purrr::map(sce_list, - \(sce) colnames(colData(sce)) ) +```{r little head rowdata} +sce_list |> + purrr::map( + \(sce) head(rowData(sce), 3) # only print 3 rows for space! + ) ``` -It looks like the column names are all already matching among SCEs, so there's no specific preparation we'll need to do there. +The column `gene_symbol` is not sample-specific - it just provides the corresponding gene symbol to the Ensembl ids seen here as row names. +The columns `mean` and `detected`, however, are sample-specific - they contain sample-specific statistics about gene expression. +Overall, this means we need to make sure that `mean` and `detected` columns can be mapped back to their original sample, we should update them to include the sample id. +But, if we don't change `gene_symbol`'s name, it will be left alone as just `gene_symbol` because it matches across the objects. +We'll show this in the wrangling, but it's worth noting there's nothing _wrong_ with also adding the sample id to the `gene_symbol` column; they will just be redundant. ### Perform SCE merging @@ -399,33 +336,63 @@ We'll then use our new `purrr::map()` programming skills to run this function ov This will give us a new list of formatted SCEs that we can proceed to merge. It's important to remember that the `format_sce()` function written below is not a function for general use – it's been precisely written to match the processing we need to do for _these_ SCEs, and different SCEs you work with will require different types of processing. -```{r format_sce function} -format_sce <- function(sce, sample_name) { - # Input arguments: - ## sce: An SCE object to format - ## sample_name: The SCE object's name - # This function returns a formatted SCE object. - - ###### Ensure that we can identify the originating sample information ###### - # Add a column called `sample` that stores this information - # This will be stored in `colData` - sce$sample <- sample_name - +We also include Roxygen-style comments for this function, which can be a helpful consistent way to document your code if you like it - we've even written a blog post about it: . - ###### Ensure cell ids will be unique ###### - # Update the SCE object column names (cell ids) by prepending `sample_name` +```{r format_sce function} +#' Custom function to format an SCE before merging +#' +#' @param sce SCE object to format +#' @param sample_name Name of the sample +#' @param shared_genes Vector of shared genes across all SCE objects +#' +#' @returns An updated SCE object ready for merging +format_sce <- function( + sce, + sample_name, + shared_genes + ) { + + ###### Ensure objects have the same genes in the same order ###### + # Use the shared_genes vector to index genes to the intersection - this subsets (if needed) and reorders! + sce <- sce[shared_genes, ] + + ##### There is no additional wrangling to do for the colData column names, assays, or reduced dimensions. + ##### But if there were, you could add your custom code to do so here. + ##### Your custom function may need additional arguments for this, too. + + + ###### Ensure cell ids will be unique and identifiable ###### + # Update the SCE object column names (cell ids) by prepending the `sample_name` colnames(sce) <- glue::glue("{sample_name}-{colnames(sce)}") - ###### Ensure gene-level statistics can be identified in `rowData` ###### - # We want to rename the columns `mean` and `detected` to contain the `sample_name` - # Recall the names are: "gene_symbol", "mean", "detected" - colnames(rowData(sce)) <- c("gene_symbol", - glue::glue("{sample_name}-mean"), - glue::glue("{sample_name}-detected")) - - # Return the formatted SCE object - return(sce) + ###### Ensure the rowData columns can be identified ###### + # Recall, we want to leave `gene_symbol` alone, but add the `sample_name` to the rest + # We'll map over the column names to update the ones that _aren't_ `gene_symbol` using the + # map function `purrr::map_chr()` which returns a character vector instead of a list + new_rowdata_names <- colnames(rowData(sce)) |> + purrr::map_chr( + \(colname) { + # leave it alone if it's gene_symbol. else, tack on the sample name + if (colname == "gene_symbol") { + return(colname) + } else { + return( glue::glue("{sample_name}-{colname}") ) + } + } + ) + colnames(rowData(sce)) <- new_rowdata_names + + ###### Ensure metadata slot fields can be identified ###### + # We'll simply prepend the `sample_name` to all fields for this slot + names(metadata(sce)) <- glue::glue("{sample_name}-{names(metadata(sce))}") + + + ###### Add sample indicator to the colData slot ###### + sce$sample <- sample_name + + # Finally, we can return the formatted SCE object + return(sce) } ``` @@ -440,7 +407,9 @@ sce_list_formatted <- purrr::map2( sce_list, names(sce_list), # Name of the function to run - format_sce + format_sce, + # Additional arguments to pass into the function + shared_genes ) # Print resulting list @@ -471,13 +440,14 @@ Let's take a peek at some of the innards of this new SCE object: ```{r explore merged_sce, live = TRUE} # How many samples, and cells per sample? -table( colData(merged_sce)$sample ) +table(colData(merged_sce)$sample) # What are the new cell ids (column names)? -head( colnames(merged_sce) ) +head(colnames(merged_sce)) +tail(colnames(merged_sce)) # What does rowData look like? -head( rowData(merged_sce) ) +head(rowData(merged_sce)) ``` From 8547ac25dc3c1b56a26f594d210cb4ff2109574e Mon Sep 17 00:00:00 2001 From: "stephanie.spielman@gmail.com" Date: Tue, 18 Nov 2025 22:44:01 +0000 Subject: [PATCH 016/148] formatting updates --- scRNA-seq-advanced/02-dataset_integration.Rmd | 62 ++++++++++--------- 1 file changed, 32 insertions(+), 30 deletions(-) diff --git a/scRNA-seq-advanced/02-dataset_integration.Rmd b/scRNA-seq-advanced/02-dataset_integration.Rmd index 497e859d..8152aa50 100644 --- a/scRNA-seq-advanced/02-dataset_integration.Rmd +++ b/scRNA-seq-advanced/02-dataset_integration.Rmd @@ -211,29 +211,27 @@ Overall, we'll want to make sure that: 1. All objects have compatible dimensions. This means that all objects should... - + Have the same genes, in the same order - + Have the same `colData` slot columns, in the same order - + Have the same assays and reduced dimensions + + Have the same genes, in the same order + + Have the same `colData` slot columns, in the same order + + Have the same assays and reduced dimensions 2. After merging, we'll still be able to identify which sample different pieces of information came from As we saw in the slides, this means we'll have to... - + Attach sample names to the barcodes (aka, the SCE's column names) - This also ensures that column names are unique; while a single sample (library) is guaranteed to have unique barcodes, technically they can be repeated across samples! - + Attach sample names to `rowData` slot column names and `metadata` field names (if you care to keep this information around - today, we will!) - + Add a new column indicating the sample to the `colData` slot + + Attach sample names to the barcodes (aka, the SCE's column names) + This also ensures that column names are unique; while a single sample (library) is guaranteed to have unique barcodes, technically they can be repeated across samples! + + Attach sample names to `rowData` slot column names and `metadata` field names (if you care to keep this information around - today, we will!) + + Add a new column indicating the sample to the `colData` slot We'll approach this merge in two parts: + First, we'll take some time to thoroughly explore the our SCE objects to determine what wrangling we need to do to make all the objects _compatible_ for merging + Then, we'll write (ok, we've written it for you) a _custom function_ to prepare each SCE object for merging, including: - + Making any changes to ensure objects are compatible - + Adding in identifying information so we know which sample the cells and other metadata came from + + Making any changes to ensure objects are compatible + + Adding in identifying information so we know which sample the cells and other metadata came from When merging objects on your own, don't skip these data exploration steps! The steps we take to prepare our SCEs will probably be different from the steps you need to take with other SCEs, and only by carefully exploring the objects can you figure out what steps you'll need to take to meet all of our conditions. -### Background: Why do we need to make these changes - ### Explore the SCE objects #### Check the genes @@ -289,7 +287,7 @@ In that case, we could find the intersection of column names like we did above f Finally, we'll make sure that all objects share the same assays and reduced dimensions. -```{r assay names, live = TRUE} +```{r assay names} # print all the assay names sce_list |> purrr::map(assayNames) @@ -317,9 +315,12 @@ sce_list |> The column `gene_symbol` is not sample-specific - it just provides the corresponding gene symbol to the Ensembl ids seen here as row names. The columns `mean` and `detected`, however, are sample-specific - they contain sample-specific statistics about gene expression. -Overall, this means we need to make sure that `mean` and `detected` columns can be mapped back to their original sample, we should update them to include the sample id. -But, if we don't change `gene_symbol`'s name, it will be left alone as just `gene_symbol` because it matches across the objects. -We'll show this in the wrangling, but it's worth noting there's nothing _wrong_ with also adding the sample id to the `gene_symbol` column; they will just be redundant. + +This means we definitely need to update the colum names `mean` and `detected` to include the sample id. +But, we don't need a separate `gene_symbol` column for each sample, so we can leave that one alone as just `gene_symbol`. +Once we eventually merge, only one `gene_symbol` column will be left in the final object since it is the same across all the SCEs. + +We'll show one way to do this in our custom function, but it's worth noting there's nothing _wrong_ with also adding the sample id to the `gene_symbol` column; you'll just end up with a bunch of redundant columns. ### Perform SCE merging @@ -336,7 +337,7 @@ We'll then use our new `purrr::map()` programming skills to run this function ov This will give us a new list of formatted SCEs that we can proceed to merge. It's important to remember that the `format_sce()` function written below is not a function for general use – it's been precisely written to match the processing we need to do for _these_ SCEs, and different SCEs you work with will require different types of processing. -We also include Roxygen-style comments for this function, which can be a helpful consistent way to document your code if you like it - we've even written a blog post about it: . +We also include Roxygen-style comments for this function, which can be a helpful consistent way to document your code if you like it - we've even written a blog post about it :) (). ```{r format_sce function} #' Custom function to format an SCE before merging @@ -352,28 +353,29 @@ format_sce <- function( shared_genes ) { - ###### Ensure objects have the same genes in the same order ###### - # Use the shared_genes vector to index genes to the intersection - this subsets (if needed) and reorders! + ### Ensure objects have the same genes in the same order + # Use the shared_genes vector to index genes to the intersection + # Doing this both subsets to just those genes, and reorders! sce <- sce[shared_genes, ] - ##### There is no additional wrangling to do for the colData column names, assays, or reduced dimensions. - ##### But if there were, you could add your custom code to do so here. - ##### Your custom function may need additional arguments for this, too. + ### There is no additional wrangling to do for the colData column names, assays, or reduced dimensions. + ### But if there were, you could add your custom code to do so here. + ### Your custom function may need additional arguments for this, too. - ###### Ensure cell ids will be unique and identifiable ###### + ### Ensure cell ids are identifiable and fully unique # Update the SCE object column names (cell ids) by prepending the `sample_name` colnames(sce) <- glue::glue("{sample_name}-{colnames(sce)}") - ###### Ensure the rowData columns can be identified ###### + ### Ensure the rowData columns can be identified # Recall, we want to leave `gene_symbol` alone, but add the `sample_name` to the rest - # We'll map over the column names to update the ones that _aren't_ `gene_symbol` using the + # We'll map over the column names and update the ones that _aren't_ `gene_symbol` using the # map function `purrr::map_chr()` which returns a character vector instead of a list new_rowdata_names <- colnames(rowData(sce)) |> purrr::map_chr( \(colname) { - # leave it alone if it's gene_symbol. else, tack on the sample name + # if it's not gene_symbol, return an updated colum name with the `sample_name` included if (colname == "gene_symbol") { return(colname) } else { @@ -383,12 +385,12 @@ format_sce <- function( ) colnames(rowData(sce)) <- new_rowdata_names - ###### Ensure metadata slot fields can be identified ###### + ### Ensure metadata slot fields can be identified # We'll simply prepend the `sample_name` to all fields for this slot names(metadata(sce)) <- glue::glue("{sample_name}-{names(metadata(sce))}") - ###### Add sample indicator to the colData slot ###### + ### Add dedicated sample indicator column to the colData slot sce$sample <- sample_name # Finally, we can return the formatted SCE object @@ -408,11 +410,11 @@ sce_list_formatted <- purrr::map2( names(sce_list), # Name of the function to run format_sce, - # Additional arguments to pass into the function + # Additional argument(s) to pass into the function shared_genes ) -# Print resulting list +# Print formatted SCE list sce_list_formatted ``` @@ -434,7 +436,7 @@ merged_sce <- do.call(cbind, sce_list_formatted) merged_sce ``` -We now have a single SCE object that contains all cells from all samples we'd like to integrate. +We now have a single merged SCE object that contains all cells from all samples we'd like to integrate. Let's take a peek at some of the innards of this new SCE object: From 55569dd6985e0d5fc04fafc5d34fbe559beb9a9b Mon Sep 17 00:00:00 2001 From: "Stephanie J. Spielman" Date: Tue, 18 Nov 2025 18:27:06 -0500 Subject: [PATCH 017/148] update the technical merge diagram --- .../diagrams/technical_merge_sce.png | Bin 788690 -> 740951 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/scRNA-seq-advanced/diagrams/technical_merge_sce.png b/scRNA-seq-advanced/diagrams/technical_merge_sce.png index 48ab09481d793309758d85e3b376727bfd485bd6..03cc43326d4dd4124ad4d0c49de22b6984ce618d 100644 GIT binary patch literal 740951 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

sZYJz^kt4L%mBC+|3C)e8RcBlgu!3$q+> z+zKjI+Xya)^|7)3=-8LHJ#kGti@k>QIA89soU|!^DO+eiG&;Q=_$@CceC)47xW*RRzXZ-6RK~s2g%zN zvZ4vroH<7yRy+>t*O**_68%)Q^6=_^Vo!I$i=M^^@5NXFeLI?a>qK~*LJ@#JdxD=+ zwL(QVgyy@acu%MZ1f2TUl)>pi9tRb273(u0wpEVYPa%2_c7M?58-WO?KcAU3Cz*O+ zX>;v`dbTx|3&byjk> zeYd0J_XaDMAFMFY`@=2)Blit=?z5Vnx5_+rvYw9yILci@+O6hy?^hckm1Kx?{EJ@l zDp0|Uev%C)I9&t!ZR7$}giQ{KMr#T#S`L2eMV9l7nVzfoi>+6n?o~oQa=UK-7PomU ztIgcuO}gW}>2{`Sfx=>0xZ}Es6)_B0EybYW-A^5q^NN4#PU$9 zzB?ty2E>-0{}P~x-!_h>RY195g7g!nhY|hM${8xhxeeWd)tca-W@;wn*f{8dZJykllg`pMJL$8RoW5x3hyYFkMe)?R5P9P2@WQy~eS!wlQ$1$E7 z!cEe$BI58EUM39@Ix}djB8ERG<{pouzBpQN&Cj{Wthk&I5kct1bn6f1*Jn_7)>BJC zD#{sq;ls`XsO`GfovOQ>)zcN~k&13iM&(7>K2i*k*R0ttix&H-W;A?sqK{P1=Y6x; z4@1wSoIh=Sx`6m^N%1HI5&k*nR{?5`DH?uY0d&p{3Ei6o#)@>e*_}wu3 z_X{B|h4aF0zCa7+?sHd!fB?kA&0DMX`9~mV=8I5=Bd!0MRCf&;vFC6Xa9`U#u0G$# zv-7;fru0vFyZ3zFZa6I%*g1Z<^o==K<_Iv_fm48pRsZUVupQH&C+Bb?{(`GH4s8|xH=+N=>9Gf=lj<@G2kFXetW`LUe$m7a?RP7ngV{yy`hZbC0?e0~lD$1~LTQ2u zzm(uQxqWePJl~)@XQn9{s*Xkn^b~8^og6uoK5iOFLg(3u%mH4;uOw#Y^&St@P+1(m zUtqJ#%i_;qb$jrhqTW}hl>`}#IeAz*s(o7u)Su=!Sbq-?HMKF`O#qdrHf@} z7r=P?#7RJczTmMZ!QM#PAY95dt~Fq=Hd9ATz2qT>g}7qs@cKN=zEvEgb1V^dj2Cl{ zS_OjVNVk#sD`nw{`#;>}hbFOj(w>`soYiLab!Aix{fv|++&=c^2Wk(xP+>FzaV8u^ zI*msUImT98?@oV5GAa1a`2baRMpU1e8Eih~v}IsYO<5v4uHjB$!jlkdV|{eMjk3e0 zR;Ewu*l6R+6;xgUTgurhI~Wdza~z9^U>Fsc!gD;kCei!|WM|;|b3eSdqdPAXa`(Dk zFbl05>>)e0|2H#-w9~@IFGa$qZjKjezS<#yEllg?JG4>2p$6Osyn!e~GCjpE8nR}l z-bK1-@)JD%Ewfn!8Rj48zth%+V8|cy(y7eY>dw}mZfD>!Vn~RzMPnlejD`Ir^jdYA zmd{l_d*3#_@ut?b9Ih%AN5+YJFa2m5hiM#|8-_C^-Xp`;7{G&yn09B8g&fM5dZrC# zYvr(ULBEYEY&h)oPcnu^T<>%746FNrUb#@DA;2{)X#*U>jwtD0~p{>U>zkSe0ifMo_-`;2S@a^emAGsP`+s{+e29Zoz>?oeI zM?$*$*VS(T)<+qd_RA2!W91yM=0%6<4$C}ER!2%3LU^F=^_2y66r@Re5vs>3!hpDt zN{c)cFl+wPdThWre)nQ?z?R@4X=HkO&*!jWKsts$IzYZ>$8Gsgm*_&# z!M8sm)j-**?HEfeRD*t-^VSm}UB5Nzk1UG|w5op(MuCvx#G-~1VPr&SSqp1JQZV8B z2Xrg1x_{HsWC5A3wkz%G51TqZM_6|`)5Pih%f}5?klKn{@3USiQ!OgH?x&%y6-MJ? zV?aea&hwqsS6|lDaXsmMTdFPv5Y5@>yDU`129TM(E*?*?NKn)^%rvs&^1QAT1XSF^ zY4=$}(K#-Yf{BqA9fd~;6H{<%nE3uu zm?$@01=VgK94vO4D2&%*QoAi6~=1ny07tz7uON1@T&W;l+cZOhxg zT0^r_ri4<%^_ZBLha8+X1d2ir6MqM0f296;b(#Il>@xH^U-dI5jCXMmUDk~}IU=gW z!g=k(8|Lr0HXq=buuWP%yx&GrV^GnjOeDZhZmzj6{@};dl7QF|VGsWR&^4N!`$?+M zBzPDtVT!B75`*ZQF4Y$@F=MilIj5kgaQ98JvA#nIw1#9ZHu+;qqWY#& zQZu^1oL=|c4lWnzha)qQNcSD`ToV&$PX-#eeOLGtE!2{sFJBSY>17sHn)kcprt`-8 z&3xsKNE7G`l3_~EwmRgM6j|!!UEdXnCi2Qnh7&!m8?W{Ct5Wd7g1uT+;H_2{^x7bi z7qkuNvsbN_?RwebC)G32#wP0z6z|;?F6YN4e-SX@DT0XVbDsmpu#C(P{&l>|{f%w3 zY3De5#^B>IAm}4l@jinLO_*t!mI^8BTMGN)9IE4Bvq~ZMA_xd0{3E6mdP^^1Huh&E z@ynMje9=N|DGbUVRb7k=x6ex;5(UcLYZ6Q7^<@4vvdb99CeABv?49}pw!DeP%k2?s zIv;K~#W>t-2At5$ot%<~!gN+l`nS=gwiBJRl@^~Sus@_&sPMKhpE1P#&Q8=Wb`u0n zo#}GiM@Dq`so(Ysq!Cef*d}r%4Fz-F$dKIi9F!fvejaRZ;Rs*p|Dd7(y3Zc&A)LFr zsb-}{SA%@5`MSD#NZ$s(8aXQPf`~DZyaySKltV^cBd4`cVKzWp+sC)uC*9X8gUI5u zTZ)L7l9T!vJVm4Zfn$R#an&t@AU;*P(dM|_X-7DMtvOpS0C>UU!9dj!*~=IW)ksP~ z#TEup+agV`M~wTAC~y*;=HY~aTyR5|EBidCPv(uHtdCQ1QvuyY*fpIpKM%0yLM#cN zIe1!9TZJjT!`}=1^yVl=VU1+SyPak5qrsn9F^Q{Bf^IGh;3r_-x>2(PLiJ{!2ZYdu z@P0W$nv%UO-mqyAvDf}Y+`p0=B(efqSw5-@E?;$Zw6~OP-3o3{I2?TlqX=_{|1JY% z{3%$S-;!Ydb{BxA9CW8!`yRKL>CFeRl7(-ztl{2)&5q^T;}Q4tw}%P*5hr3z^BTOS>`nHTUZZJrYD-#2b8#IGM#lpfq3( zE0lFRe{PGQ-*He@$dg{Vk1EWYl_D6HQ`2+>B zc@+FlhmPeV?^f?@RG8b&fOJAMA0vsnp?Rr}jU{cUW+A9}Jz)T~sOXcHAZ?3$QGBYR z$Zt;JD{3Vmjy*DcN0nSQcpPY(U1j4x;4 zD8ZB0X#WIH%L$ET{#Jh)6oam>1E-MT>6TNs0YP!>(JW!6{aREb$~tQq!YhOWa`Xs) zArxHM{%N$qB|tD2o>eL57f0gdJP8Y&Ta|2rf9E^+%zE6E2gjW?EVDLR$`8 zg%)Rg`@v<_+Eppu&cJb2iZlMmSQ?Dlxlpw{{MA|Yv1)E**|xFalgADVWY$X_>VLFp z3~B9{?VV;#*O|uFy+-n82Qu?@JD+$p_X%jPX@?f@t+=io8!@o_Eqi$PkXnRNe@4-j z^c^Qu>>0=}Rff&NM!ecrZ!=f1ASuy?J)t<6uhw3Fzwq2VyZPIqy=oAe`G@i+s=z}N zaC}3>k}Lkqo|o9!*%<|r5B)K`9pI0Ji%3Ri@-O|(RWB<42! z@0YN6F?PTJ!rN$2s}O=jhLrg7FYRA*jQZoBm8rXQqp$ho67&R>-YquOvLVvz;`+14 z-_kP^s~qbKWtsftO5*QXNb%$R;{4A`0i&s(Hk_HGS zg)$8cIy(9BB#z0lHKlhU-`jNF7R~~O=sB9tj5#!XHqInVJn#?pqtG_3Pc}lJ15|Sx z1N5y|Lg=kBgE9zTHT#*UH#Hn5k&lCm!CUtnjWJZrnT3ZIa$; zDWBF65+F;YeRet9N2EvoIF+Rm;`=b*i@Q1Gn4E3<93ovtg}k+%ywQ-J6aRKqw==y< z4+gD@>$mZtQX+8jc;^-#i{9l1C!D+dMVb8JJ#ocF>h4v~DRbZ`YK!618si9~TYr=B zCwkI>(EflOKaYr#D9FPXO2I{OvMhf@r=QWp*Oec~=t*)Ww(vCHd5#uz=30zbc$}Hi zYYwAnZ?7#iLrkRbo^*`dwx8n1nA8ODnis#yxKd}S7K8%?KPnoWqL@ZcL@7}A7MfqXL5$(yZE*U0zVGUwT~^>qDlS9n;42% zJ7dc|jXmtibJ+VOa7TszxHl8@&-q&=eexVAbX@&k?1-h>s`vY%W&Fh{#d_461Bx$t zstzkP%8LCD_Sj%4L6%&^`dy=}p|4Pvjp(K4r&IjF1@nhR*nXGZ{rR6?jA43h`0XXu zF#6T=uMYgUEVcwfTdxqkLs2(*&GyiI){DcM{^4}>OWnY4kA=3BAU+h={mu(D#0Fw? z7lO)I@-T%qO;)p}MON*CDi_Z+svz3y6@Ug5CY$Yjki+U-?1Z0rlEO3aZLiMt(u&AB z&)2$#z#T=KECOY%yBVCcn)R{kn6J!jsLeP@x}#t2qyf=KHMuh&ckw3TIueKVDm(J4 ztzOr^!7IDV_N62vq#uzOJ$5HZZI-m0aD)ezbD+ z>!h^*`^G=eX1|*lnCOlhB!{|Q?A#qz;oMbk0$p^R-e4lt_qQKEuNCUDX-W)$>6s2M?8BF2{93dTPIj?_o4Au4YUr(A-bo7g&3j`a{+3p*+R&P*j5?jrE#g5sa zYOU3Jn1j%xUiGqma*8d2;SvMDl@8QgLV3_rJ{rWQu6_^$>XV9BY)=+ZT6rVPY(YO zXEiW4Vxm`?EHR5L!TWdkiEQUj#yAc0BLeB% z_fkAnx*3@K-X<`R-j|?Hv#t_fXtn-Anft+r<3?g(_JFI(t!SBtM-2vUuh|9L;pIqd z*F7qqUsNF`-@#?OExyyeVnfNF=pUNhGd43H;qy9s#ZC!rIQ)1cw24T67bPV)*}i)y z8s%h3#yeBe?i2UP%IpcN-Kqw;rBfwB1cEQ`JxA0I$Ga0K?~j7oE8p=voZ@;JEe#E| zmcur7N2l6RUOv_bUFiXOA^k@CBG4qf)6ZMf#c3Dbobu~B(2Q?w1g4nh-e>Qv(_|`SL^5_1sSG85K?HuThSQ4pXU?9@L>eVs zY|)>p;w|W3FdI3Y$_FI$zfB>%^Os45VZIlFqOG7QG8I|T^O3vjCRDS%_ZHX<%P?X_s? zi10C%c=JSpN`PGkSDGVMWZx?sJj&kuc&$-0Z9as{M9A|i5y{r)GF|!G)}B;ec?Z=~ z2*xm;aUZE~#FTF!-FFAP2xKa64$$REU>4XYJ~m!A~~c)?s`mK!=tt}T@RQ5;2CF@p!lX+se&bIHkbwtF%zms}lESVylSP-bFHE|i=Zs!ls+ za>-M70<-$lqAvMDpu&HGe({{Y5g7HN&i%7*wB$%0lGbGaZL4^#@!MO5zpKJ0$hWFBqqNBG|4$XKJyBD34xjI&a zr7)~h(4ArwCNd3+$oEHyWvUYEwn6}qn#bE5h*&?5g&lIRslGZO%_a?L{+e~2qC~>7 zw2?c^Q|Z)tdpg$GFEZ1{e1^2x6S`NV1)>$Hja0l|7xT!~(j{ln#w^MLOv}a#q*RwB z)eY-dPqkl2Ep_xUVa2s*%(W2OooX$J=56vKkCe!QNFELtNAoH-JY-6`rM-n(jgu+` zm75@Y}{Vww-21VF+?`9#2v44M+}lVVe2BYnGgOlzsUGHwmb9m_6TPauh%oUntx|~1G2v`diq$Ru z^~w~NtH`vx1Ts|j=;wUR>XbxF#6sCO$w5Y};>Jt}8fLPV8gT<&i!PV**Wgl2S?xg& zk0je}=W*kH&87IPaCZ2u@6*I;12*8lz%o>^=5?}L4<^cY^;t?8-_1^qd!J6*{(ZMA z%jeGGJSrD&ie%@I40zc)9-0CXWW+Rwp7hPbi|xtz}ixTVx=1+t$ya{jSUJs3FC9K)mNwy;sbu!stb3 z)UANN%L3Hn(=e{QOfv7wG2SM^f}1}}zRy$j!S;D-7iXT7>BqTI<0T3eqJ#%rV%N)`XSH_hqJBfx&N=tIJ-d;AR`Rz&d&fG`rJ`T~| zX)Frjv+s=YD|u4{LQRY-EK0tOH4|7t|4N7=w-2$}VQsm?&C`5aAs3mfA7>y-MLTb} zbtv%etbP>t=A==euG&vjwxBrDOL*p$A!N>3$E9rGu5ezbPhuY73!m8bgT|=(~o|t#e=K zq<@1a@FEJe7A#JGgWuoI4u*{NkyY``?Dv@7R$srG?fmv}`dHhUxvO%gR04GtBei8V zVkTzFIJ)45rV-}ECO!>L+xto&Ux{OB4sbf&b2uc&P{>qDn0!--54TB$%{YZE~8Mb$d^5eficn;L+r zC(?5LDwA)tFiIAHZUK*l6SDkZQD^Uh0+hJ-6eBCkwGEHgkS3tD0!ztu>5xm-^M=k; zn2bUW#gQIpF&fcDnHqgOZ@l%`=>UD3VubR%BV zOB*Q4(j?$<)mz;%oaV{F?Wm=nCs+gikL>j`ET9ZUJ5la`zDlaJG24%D88e10D_aVo zhkDN*-Q}N)?N~!)i-mwmY6YEKQhxquN5chKLjo1Ajke{Vpb9O(iz1B_k4&u%WD`|a zvY!Ex%O>#N(L!CI)M?kV|Ln!~NW9TaDL%8-a%?C6nd8n9!B8?VxD>#B2k<<#2fCYf zXYS8>aijyLZUAV@0^t@G~Jz#*Ilsz z$ZZ9F_ge}23mpxB%xp(`_uG0FM2NNdq&!M<1m5dw#w)z~g`I}O`j5asnY z9nKy|EA(Gdz__$=+$?v;+alY>*T8$#1az%dm|G{cBb9F_1nIsHdTyJIrBPgTQP5~v ze+0pF-c@$D_Q7>{0TY7!U;;-8HIXZDm8POl%{$nv*VG8EuGQ*w&@WmDa0TP?^Z;oC z5P>y6L@m$bhB?iN3doxd2d!RduW$hVT^bv$Ah4e=h8Iu6@;uyk)Jm}cL>l~g((Qbx zF}|lHebN`St$f)S5pMm;m#Sq|<8E1$>GCU)CmA$Bh(-pQ~6nlfRmu2%N?i#;C&WdUFk z;ZUSTohhL<*yKs`OqBTrz)1L6dK?hD=ELvL@roVR?}`9E93j540Md@$@iD<#4g2tVCW1xu z6!2%4)cogxvcZ1zoB8Dy4z7os4KbYc^LBC&{^U-!32v_%X4_l6)nfAnL?}T~``J0tOgGl*DtU@cvaP~B&# zeakK{({#+e@GHDscMlylie|w{|NZj(RQX??pJ&5; z-6Kqfi8}__-q#i#=aIXT)N}QA#4osZY%kvFzqj~TwFPZxgas7rs!;2izN893d)@}k z#qnl{;`-s?!d>ZoU6&pCWZQXbS^;p&5G#PX;nIQjC$b+VOR;PON8t;=(SAxwvpNId z11Uq}Rqva~yoL+tgSA@NGBW`6=^ChHQQ&`Vy!piyVf?q~7~uE3FnnjSS&wV`%@Ppi z$%&;EeWN-F{~afoeLHIQ?&}4S?>W(94{_K4*SMSfMy&VL@Q#MX-29Ba_I$lX)8BI? z06AgtI7#JQP0sYs0$~^mPb@kxU8HF14d?_(=K$o4q9m@Zx6EhEJ*!ZWy+o16>1PVD zhNh0=rYV~&ylI7)PHe^G5oE-?KzOupAf$1xUfC}6)zc(A!XA;fotPTdt478yKnxT* z{+c1)?y%9zljd?7{WRL=D(}tUBjD)xC$N)Z^sZ;+N&D8*4paT??1d9Ys2%}$Pta9Q z76opWnrJ5f*9<^i4Wz_)<`rHjZjLKjfO6ai%#kDyl<_|5Hb=CNa{R(D1 zD$iIVFaM8k9Wtpx7!8=oRwInjGY|GU|6_afKbPH?-}3_flXb-Vez}(&UHlS~R#ERW z`(#|DU$Cn84AmQ8#b+A$2Pgoo?N91+YH1RlpnA^*(CBAa4F`n(-C1VfnhOMf{*2uZ z#in^ZWOlCWDZ6Gm$fyHAGdHc=uiP{gDrBa`k*7;h=Xa)&cgQ~I_}p&WYljoWrqZ|e z5ey#=J8Q;e_Upzq{hi`v{CTE=Nmw5(R+^QBmA$r^+1LB@J@{X+vW|he!kRGY=h+w zTS46X@e;Y8NvITdqXbn4J}kVm4NkogQ*W_#PMrWefZi|0=MRF?A>uz;R=H4+x+vX^ zH8jKS9_RUIeput5Qr`khz>d$lP67zyzkJ$CfND}{mo#~hLDGVfCS5j~dd2MUt?#=|z*BF09%6an8@lvoJx4CfjD0;qkmBW$r%K)e}xyZNo_sUwob?+YEahn##ZKLjkH>_De9VK|*tZlg)Cm7wOky)b#r?|{L zu6a9pMm*%BKjVK`7$J|;C+Zu%6Eq>P`mS@zJVV!XbH1V9vYL(cVG*b26d+V)N=#@t zH_U*0hq@5gnpusHnb$q9BYP6~B=39gLP)DyAwSsuM%EO1A>eo^5a#r>%h?DvXrB+c z1lX@8sl}uC9+!WTHU+EDY?<0D7B`Aydb(F7iv>^>0GU-uyeXvQ0Z#Ld{C#iC z{cstE)|4bw4UooJvid(J{X9$PZ*47_g&>0og>k;;( zdH;6}X(6*(c)j_{uJVcTTQSEEs8)piAxWI2*tUU}9MK^fE$r;o67je1RbLac*V6jEX;Q6@Uf-z0OZ!&yBa}pK`H&x;XXTRfqs@ z#&OJ&(ellbUzj#o&2Qgnx|=d+j_FBPcA(~uuA7Xqjun0MHkLJAY3c?ZrEr3FKq{nP4PODpf5B!*u;q(SxMwRty~io}V|UN%Bd%X+4kTP&wo`jg zQ>dw0@^e5NmP0IyqHE62p5w2#P+VfKHCA%~QbLy~WKmQ&cIf#;wV|0Ep+`wd0hSOR zcyL3BbN?HjL+B{#572>!9;x{nzTK_66XCqP0sqnfb4yA1+@ADI^`g;IO}Wb*7jQ(# z_rQSsGHlqNye2Bni1-Z1yay(GXWE_|?vLQ2gzl$(oG6++ zya>pz;`p!BEiiWs9!7Xx z0RJcXoj3@A&iW{X2*-yTkz@1G0Qdkx(V@CE+rH;7H`m`a5JtrG31Y+Zy>_5`=+)6L zKSVoXBc3Pk-+NNcjiXIgL=@k4_0hg`+->+28=_Hv)0~IyrF5%1N+hp*rfBz^9tXsz z3P=~*5gGEvhiJ|&9S7rCL{};_D{*pFu`GwICQ{vp`lbzz9q~>f#VlEAkBQ!h@JT>O z?nMwk-3P3}k`DVOyH6jXdfW%i8Fw%M8kP_8wH99TH#W=@Ojv1FdD|=r4C}vr+c4=J zk{yxSefR1+2JUq z5);HO;%c5OuPy6u<*m=H2mcK}#F@AUYr`T0X6%D%hYLy1N#)AlDxM?LV?m6su*eLpj`lu+r8m3vP&mL}r-3zc>+ z!Dp{nWZ3t6k+zGL!Bo9qeOGbWHbK>qh1aRdcSXN@46dV8z*)+=+-f*xjye*+*MO05 zA9m9J_)pVwf!{@VZ5g2m+J#qQUE95*8zXprWg>F!i3@7lo#wxh*pr}irrye0yHM}> z35D3qP(KfalU2S~cZ7tddX@^eMROG4ZBP5YM-r>^G;8#S%QkG{WGZ1AT&uxF4jjD3^Dz29?=i&eesY8N0 zklbVfZ?a~XD~$!_=C7HGgZ_OLnZXz3coEOS2~jc@JQW-I)Tv~#z0v%PhLN`fP}I~ zWM|T5+o^jXWV%l2#|0Tq8T?u{+e;e$tP4it@~aznI6(GD^pjW?(23~k6%{T2Kc`*) za0+IuI^?m~d)59oZ=oN*exS7AptRHt?!4#&=yvDC3W%M6k{L&ge*lFFg}eJAY$}3i zoE+j%YPgN?>k-GjKNr(i`8zhi&cg=+p_eE)kQs*_MNRV%1CE9j{{|M?y2 zUI0b7C{@#EU5?Ubf|8eg3B#y6fWZESD$n*?DBQK+1>*c7@>LiJLpB6D+t0Dvn=hxE zeYR7-l9|4IgU?Amy9*uoFZO00Oy*{9%(<#{V1?Er27H3YnW@!Wa>FmHcLoo29Rlv! zH|+u7vRc%KNp<&kTvWF}1pS~_05m3Mr?enG3-&Kk;k-8pZIb3Q4EU$@{s&ka6S*0^ z6?39gZ(#BxAE``+<2A;qzuj{An9MSH9b5ITXn>=(;eF(F4d4#=cpqIr}Ska3l%8vL|S$+a1SB zU{zc38-|VZvciDEU-oES7M^)%X0=o3Gy7=bVk-`$;4{cxay3YjR=+?Fzx}Qgz3K4&B4RuC)VFOJJhsBm9?-bf+gSOnp*PlaY<82=deqa6FU@EgVm9OO zTj%`f^H@QvKWeuffQ3x;a(iiuTgVYjn&w>W@{Ca$Z(m?}0GEFX^Ve@B{l*N=fCSuE zC_O0K|4c#GTul|hxBT2X?twJ<2_+9eI~74tFvXdD1t7ASjlB$*N=7nOhivh1mI}iY z4kJN6bc^*>-8Yn{$JPGH%vpFSMr0iN`0q^5GYSeyP{hLnBp#QiJ|LMCz<`R%vGcF- zIp*4*vAxZck||%vT<`h)VfD*#H6z_UGy!gZK`s7x5b(0Cs2;G5Ws1K1rI~tKuc@aU zNEAnp#6(!^^#lC@_~R?Ejk~UV@b!EQU%?7Ax@-x>Ip9%LCLKdLo-~nmFMf;j3+vwm zCa^5t^Baf$HPSXIJVG&we{}zaG(D5$w!LJP%hF7|0P-t9SX_=SB{+gRm01Rm3u^b* zIe`)blVXUb6R>H_^+i%dk)GnSpuMGdsVep+#A|f4}cn zgJ0Usiwf@8oeODp8R~ozVs=o1z=SY6f>abAQN?-X*uqEJmy7N`-Qqir6KMR1`U_d^ zO_YW&g9Dkb*QBs>w1v6k^U+jE(>a#-;O#oV5H*AY&p4IaHegRtdeVW?=e+zIG(Z*g zEqbw%$u=yMJ`@aO`ep4R%TlFxRdkVqy)?5VxFW0ttM^6a`gtzo?PgfP!> zJ$N6NmxaY~JS-0^LaqTWp3@TQo=TOhCclzW$NKvt0E8yfSXZ#THc5`_TG2&~! zi;ffHz)fdx;np1&yHt;K$5p&&ztq9NM7|`qFh@i~hlaUvNMKk2dH;eJQ!EOUJf(_P zT{spfY)sqWszRUQk!#!(rIwtq-nL5%bUl;uJOD?q%!TwRHv}L1&%ZR&-}&&T1Fk#d zGGtsJDI719e=UIV86PE2;1oj4qfZ0A1`@H8g4_Hs4*neXyy>}fAfLQ(D}Kn{_5S<2 zIeZ&WfeQJp?S$x%x~9}l?5-uV9W|i*g794Xxwi>prLcUec(uJ2pCWQPKL+E>3JS0M zPg@sBgHB5m0FE1^R2w?J;r%Ir!SaO*g%+h-$UFHJ8dXieT7A)MJc%FCweWT*(QJ%Q zLZr___dh@2c0)g6CLmr%>6jjhCP`q08E4)Xf2KeCELs4#(enQUJTzAOIaXf$?YKj#N?mlU zN_@Mb>e_1n2K}Zu{sXIfnQ0xm*q^Dn6vL__!W$3tD6UNMA7RdS(2?t-Iif1E(%NeD z@9#kk-)H2> zDNYgG$b?S1NP5e(P8-1nkjxWA(s9EV;jqo5`9L2JOrb=-3nVfMrsI(=&_8AUq6iSz zrA_T~x5+1Yjr!vg8BFwcY4@X~K-?!t>+_V~S$&dbk5U?iNqy8G{1#*guZ%VnJ6^4zT>qnQOeJ{t3P3nfZ zrjaZ{5U*Z<1QK4{C2mlG#Y%RC@PziFLfM})mf&`V+3%SzANO1mFh4hVE&Eyy=fW9c z1xnilOuY~Ecf<5bL~m=dw~i~Sm2Vd>E$tmhu+#t;pUIk%u6UdRDnD>_J2T}-kb?FB zGg-=gGKV3-)XV*lWR%q5IUs$*vkhKj#$vjI^3kkWB&?@kFY!9Gt!hi9c39g}1Aa$4 zD0mrpG+_@9gq|yCzi_IB(}5Hf)PDA(K3yyo8#ZnuK{<6lmGrX;qYA01)HpFd4F$Z( z>7{E90z{UzhjM(S004d*Z=ErS(;%qn=z-&4TzvH|CI3lI%zlGe^F-4sW5a7#jb25s z>K$IffO)pl4K3jbZ}eckVyEyd{UO$_eac88tx|&FJplqpn2kEUEOc0;bta2 zp<+>(kTmWQyuU7ki*vqy&_9dUmrDxi>EwCS7r?V(C|A>v4o`-{c+O|BL`UwG|VA}1e zXTVZZ@!Ne$y!i$qm@i7_8gdIoqMCE`?eE8v6x(Bm$tr*xeHoWI|D{tj*q-0q{8Tvd zY?KXEm&bY%7Hb0bV1q61WJm!xosci3+b^Ou554`xW5LfU12TFJtqL@?SRlHZt0e|9 z)2Emk1z_#+c)G_|&glA!@m;fG+d>(#Xj&;M&m=$8r1G1$3~dQqB0yD4VdhNQ*%>+AS!SsfK9vP-x96B;sr=T1sRiFaEvPz`y2Kni9c~WW2OGpv|ER7+ zyJTKzI>0TpL1s0G~4r*))~SlM-$n` z&vOMI5!kwJlE-DFjJb|B?3uh$Qs^aew;!~gOHzDT_PF8n;wJZZ9wxgeaCb@ztYLPI8{-qKTvUown z&%K?e%{Fj8glF|Xan_g|Ow1f+w4wI>rXyt|yH2v~;ZF98XAuSvN9IEt3KEyw1+0^` zQ?^Vx7XxHn7lT`kpDOZV_j+lcdfUwfKc(*{CxIxF?oJEf!9BsW$8I`1`7cNLsGPeN zmv$=+c1axgIoaYqx)=B&Qg>iuX7;?eKn{OIq<6MO)SHCj9zUkL{uG0xW&{b%fQJ4} zGxtStLOkMJS8MvaF*+}L7bXN7Y>4U3kl@B24Y!Ts&r?Mhe#nHR!9>C7RakWYrj24? zrHw_igIrH#>6M@%+#fbUSQWi-3af;f-Zzhi8<&!wfqhFrl1nQCtQ&ZHmGmq+-|E?~ z)!S@tz@84e$%A-=YJ&4j0u{XQ3+jS5qc@R?6A<0cpFi>2Y>)2|2 z<`jEo*H2#4AqboGttezGEjV@F+Sc7j#{_WD2R8B>1` z-uP#eSg6BVHX^LEoPyueI>!y5waQH;!`{SS_p%#o@y zqp%-v-%tAiKdqxTfi?Hr$2!&zHXa=oiT{8ZiBYf+(&^aT*^^xmWpJk^ntR~gl+f;b zR|B`h7}F=26R~nh!FgxL6$7S2wMlB<3u(Y)DI)Z|b|67kr~JjxZG_>!IKiqD^|rov zBsW4w;H*;o=AROKONv~sSM+GO39~-D{|B6vY8=o>FO$7-{PhS?+YGo&p=JH<`)=F8 zcNzltaPv`cCyMW|UjKwnn6)5o zXktnQXK&yh`lnA|mri>LxiEk?rU{FSBKq!U#J%$iR+w&2t(hHZUZdOnOm0-JNJG7z-cj{*0pX9>ew#?!*k9k)1JKc5`kgFv zPE-_?ZQ~ZBi@t_-10#Dm$l(G*%U_R+<3;#%O%_+*TlXpiiTB_ypc&Q(Gv-i?5D#gh zBUtm0o#J|R3I5oO{d%g%!n=YRHSU;aib3M#13M~1GIi;rZvmD*{bruN1OJ!|>UUYs zRyTOR8|Jiqx@Q&!qKFtN%un(TP}*?eRCJ4|9zxhIW!yc{rty*f%LW5lgt5c!;G@L7 zR-k)lAb&V49_#lWiLa+icD?^aMl+vsz<&3>d0DP~a___DnUa3bvI<6UZ}61vZg2Ox zdVEDlzX>u8_#I&F-lC5$`Qt`No=f-!JmE?ly3K_3(e>=gHx|`oTrE!$cyV;E9&t^X z<#H=jNFINvMmjvisfwdczzRNZS{+E_)}>Kl@*>5t5us6%WO`;oJ#Tl`8fF~9#L$Wt zG)PaOfM{IQQeUqtn|=#P7#2X}mrhaTzBfCbFXv5wby$wfGF{Q)n2;IaTk@hIm4lFh z^&`p5I0kDDdByKl*R#lMG07DL?Ug$u8%KW`M68{tKwK?I-x)!2=P&BM&LaqpNN@)E2d6 zI_Eo8sZ6W@re>;4jfc}B)3p57Yk9Umzdy9@b!|n6)QQOmayR;x-#w(=QsQ7?VtxTS zk@P74;Yp%bODNvswg}Ywp%fC9e-%**a)AM25{EQvR>Jg$#$R%7&K`%{Ba5mBt!EiK zK5H#%+A<||cCqqOhSSUXxZ>A|HFhhG1P$y`c(D^gw<-$Ah!st!#3NEIZnQnnB1_TF z-};>{aBKZ;4N}PCB6ft&pYJ_RPQ;%s`ppqzzVLOCEO`(Unvl4#bi2t6a&h_D>?%jD zU>wk7A&ip=PuwP7EJ#LiU4DP}1!z&|Wsi*M*yZs4Cz!0iM9F91=E?MD{*$2hc8aTG zhe7zBP1^%Y%CtTV)7WJvij{R`l^-%Jrk2xU$do_L@sx$t^D|9{h)vg|4=--k&fs<$ z^|)pi)i2TKTJ7hR6HIW4|H1=U?}tk$rji8Ni(qg!{!Mml@}{p!O3DIXuW}Jv@Zu%Q z`>|&wACPk<4uS{#=L70I{1A4tgJO{1+eV^L}J{eGl~pdf?MWd&<6TOB%i=|CbGaTDZ_UhB7BMp-uNVdz^y z(?csmV|m$CZj~x+k=L)9r&Avm6x_@jh~9wN%NYv20gyu|2mjs6D+m5>MR>kDy@Ay~ zr+nXU?rj27H<`(XjQYe2Ks6-4{*(?>6ZA7XG$UsQS6m8S!c5HT%Uml!pp5?oLmN{_ z2B(h@=w}T*w2E36GW?8fY0uil-z~V|KCSt*F%} zM~g?v{?0Qx9@V$99tM1%b9L}bor^9&-=F6ZSVgwU{f?$_<7ukzF&bsFgvrLAhvptk zQLBqP39ylWY{~7BWqE#e=cso7Dx~u-*-hxVmGeV0li{oTT`y%PmuvSTq>b2ZV0ldw zcy8oW$V6N_@NKHy=1;Ge-v#3bvqD?|{V$dc4;tpYomE;v^rN9;Y2I<^S*y4^ zXK!+@qB;#)iUk@9XQc$-$#>=DQZHNQ0ue1E7CS?~l6``+RhO|ME{ZpRsLy>of5;UaqzP@kV3I;N%3*CT= z;)d1SP5g9o#q+1|hMeiKdjoc-7M|Pw?Tyl-ZqA}Kp;j{0#A{KiJ>g%H2h9S$d`rve z(g?#<0@4hGa7VqqGFO{tGw*+e6#VOYV-+EU2mPb`fAjE{s@<*}VRxsjJ{}%> zKMBvXT=z+*ZsW;~zs-v)*UZGJpNO}n+F<1fK9)E}77Y_Kr4Puw0>)z+ z0&g|D`E4eNsf;8oJA!{Ln=MLp@KXwONI|B0fAwTsw|o3$xl$y{6PT~F`tdvezb0oh z`Fhh~A~G5o+~m;r$Z{HG>bWJjOJdstopa(JzcqJsuXpx6z0w{=;W)G%t2z&{P*%2h zJey2+%@)?-py$Xw&opciK|lk`gMDD3L>x}{ft-$+t}_}xFR0u(Va)qBxN^od@l4cU z<~3$+!zQDmJ#m!qm!`AX=v$nHYepD~z3aly%Ch15XodoGHl*ml|L3EJ9pzH>7mwC% z2#=X{(cm5zfi(SuC7zkgxE!}bVSi)8J7?ap;Fx;s%q5c28r!?K`*bpys>Q_MPeF#U zg$P$~71TXx3@mFHDa`sNcF^|6vIto&C@3iE9w+kAE+M3vMv|adAYZQ{aChd3r`}3bm8x!5;-qYnQ4snwZ99$ zS+OWmu{b_!G2NUj%Yv*wvYtd+(Nn%FW5p$v;dn7<$$0Zg7hQ=*lt@NYq5KJwZ6Ti& zqry-b_aUAt3#++fFTu5UJAQVcIyI6MZ%@r1J;xS0*fwdN|1wrYy+3J_uU6llV52W@ zEDJrF$`Y>H%&!Ww%;GEkec2h7NYS82T34mk-*i&m{g1?xdwV2xeZ9q-^#I~+kL>!(dA;+>rmx{KJq%7V& z-KCW8nL3HI=t{fse_VOw_6rbP{`bUYh zsk5AWEvIyQ$kvefmIZ6mH$(6c)8qclAS}Yn%mgGveqgKE&xQUil+43 z(q`C3jbBUWG0t%z2>QbOv;}bt*A@a5`&Mz7kn!@&F?#)<4Yo5MFB!?M6aJ6qNeU%M zjOa}wrElgIFNS3igg7uszxe4(#BWBO%pAT#+-x?&9AmLh6}kk>As<||o_B!m3<(GV14jA3e>SR~C#;P;_ysr<4|~j9#3O(@ zmT-`0+a>ENA>fJ8ni#)4)+~&^BmwRLW9jo@NV*;gA?llUrpOmlX@n4jRro-@`P*1m z#cd&S-RC3#XLXM<89gl3ljnlho2<}M+Mx8~H*}tGbKV_v0s)EwMO7Wmwb^*Pso`MM zt9_!kV$r^^(^jVOYEASyq96Rkkcn(o6!uZin)MdfVtscl2#t7~A+xEIr|Ft(YfN>( zMsIDXC)ZvK(XhUeZW8HLM~2DwnRU$PR{@a??rNFM%&dZ`5004(>31x&_VpGA?qw@< z`jv(U6KcJo?$qWOM}hT!1#9!v_Gq3XTxWjs*06vU5TZhDo{T%cf7;Vh43R?#CQ=FU zI^|4ii5}xeM#IIo|9g;sH_6cV8PORf@g_B+UXc7ws2Z&_AQSl2R-IH^#m-=%Y6_J% zIn&`r-9=oxopa^QbJ7lcG`wgQemjkx8M1dcBip~-cm9a$vgrSYh205Ke!ssD^Aw@o z*p0P%@os<%FZi{vd^?L3be>H2ME4stSi9shk0Z|u2yiI#4`H>ZJ|^px8PY(>{r)k4 z{r|l+{#_n>^Or1vXep`^iY8<-E$~YXT#GOp*8whm))$wvm7^!?W<1(itL+JyU{tzM zAq6(xkyrsOt7d`xK2nx;NT+>0d;l*$q13svN*+fxqBWr+(9i@}m zN%t9CZ9TLRYX^sr{Ke(zCl`icy){m|ivwNzQ1H|}T%i_UCwYdYX43n5#uT$QIGbp) zM5lR!-^x89XO&zve-~eRZAj*mSsJkz$NHd^b40w=UiK3- z?yV##{3JYhDmF^rz16YPB5EB!Wk>J0gX~Fevxe*(tcXr7F3AgI9?v zS3<8d2$JlKG8hH$xfoVNF-rY9K;)_la1Ct46+Dj}l$FHYuX>I-cpW@j#qYI*;k(L*YsfWB@(KIrZj z8QdpbL`6x-wb_b_j><_4;MBbto!7rY??XF4Ng7t(!UNL^(u7RxXP7!E9WQyviCU|2 zVMCA4h_l8Yvo(rjyucQ$Il_ISaeRY>#0${8D3UIrjor1l{)q0B%iULaMYKpM!t2o_ zWAe-K4Egn%E)OJJ<9Kd{x)&U~j3tOyi6tc~AQO+#(TzsNN>5ks_umdlwr2tY(%x%| zWd!pw4j-sZPMgJ{)ovRh9`OH1)l2Ta*0O7geBi~lM+@de`AF`Td8_&uClFEM-(N{Z z!RRV`jPfzORY_BS_d-hxg&0v@ia_(k7&##UN>P(B7V9yW$?c25#DT zLqzc;0qSG~ZG7`l>O}2aoIGy(n5JC4D2*O#YC9Y17%>Q`zGhGcsUr2KTBoc9)(^au za?jzq<}sX;%R0k`f};awF^}P;(0sefyo-m4V7JMfWtm?Ea)GuFfURaC*K>nij@;wi z^w+Fs$Sxwh7$sDHEMdUD{~>BFtdO=2c_xmQW38X`e0jkS^Ax3-^vr+^jU3=H>HM zlHAjT-UikNxd-E;2MDsJU}3xzI`gCl@t*q)zlG$hA1^w8!5EzYRX&0@Dr~vhewmi! zx7s{yUiWY1^aOO5JX`n6rLeHy=C;ni`H?W{9oV5)+=nP&Pcn>e&_^#Zut^I>!Xzcy1p}<;BVw^y1zWR@MN=XwANer zrm1~YLEaK);9mg&?d-M^|LIj*3r6S=EgEkTJ3d+Nk~)QSdgvGkuSSA~@52oRm{wjV zO}qo7Rn1qQo!#>!r(P~hsJ7i}?dBvV?$#Fa^ImlSw})fP;loy{HGA(zAwg}iNjW@u z9;|XX(sWg^+@fLaAI@pH;k|?CL}$68o+Ii3ETdGDRE}EdUz)D2Gi}1^J`FQmhMNzR zo^v9JyIH~g&jW1(_D)d1ak$D~SsFPmiqs-86doc|Y|tq+ycWzRENQI7%#2^|bFGX? zw;##-Fr(7^JFeA-{F<>6eQRZ--9(Gxu7?F<%+_p$x0m}k&_rA7>jcn+Kfv%AaP=~* zi#ER`FhrsXIikwr?3>wa0`I0&kerXygOZ54e$N~$otcp7FE$L4H7du|+cdVs5lQ7r z;`U#hmAU@cW_m0;Xm}t>FcHsIzmV2^jOB4So-!Ty-BYnUy3kFeA#>_!B0d}71PNGU zm`YvdPR;L%bZZofmW1OI`abpD%Wu%z>$oqA? zsKeO&Yz?{mcBCk_S#8Ys2YtGAh(3nYf1-0^_jF*^@``;CKs1TEwt-RZ;+nB@TcF%C z|B%@Ccn-aIygN@>FTquDF*_;54Y{E-iSBDvHo4bKh)QS9hn=5ZViQl)gkS7d|X4)rB{J!}> zSo)WgHBdUG&^^7XU{U*6(hZJgJ)v<-io>l^yL`E6=7cnTne@iiAG%bZn$jmt2Pw6@ z0*wb8HqQ&67AU8UlI}*!>-ug;c68sJEOYMC?2&sMRUg=9(Q`QV#0`d8U>^XU>TBjZ zngXhM6_e1Hq#r-N4mG;*X-ti-u$|*?Bn?bJD8c0&n3S_i1$~0&b^`qO2e}ROD})bL z>OrNL&pam_eH}lI$){4d1qj`AG0wd=Ht|)$m|N)gka_XwhrLiI8&tY4Og6jWfm;LO z2l9w@nN6w^cvM@yO*vN|t9Au`v{C~~QekK_WmPRuAkwfn3gE&PZMi!9-~Mk^jAkzf6Gp&6Y zIv9m-cuXk=ZrXevO}|N1pgN99G+kS0xhx#WduNxN#bXxih(<#{;GP<%VWw1}%XwN< z8oeIZrU5D~y2p*lx1Z-7RU{=*ZwW^tMg7@5sUKQbLEuRS3?@T3LN$|T(u1QtKtoNo zGcvPQceK$hHDWFAu&zW!ed_N;Bk)TTaHvI?>ge447*0fI#HJ5~jaJ$DU4Db<^J-CI zg@-JG4r8|I*=qeJsQ}u!A-PjjkaTIf|v`ZAc z52%veuF=R6n@}W9{==@&TcNY4=qDn?s(hBA+MBu|nAK2oe1oaqMRh= zl<(YK@a{jobKeocfquaEyVqL45DXvj;W6dny3}m^YQ>IxiiqmMgS(Q`{lo^>WZC{0 z;#F%KJdGF5h|}l2JK4;ov}v=!j^A6aKx)sg z#rL5u^O;S^nmO80OH84=^5dX;(5qK34>2nFP1v|*!AO*Ei8o5G%RM*!^d!U#+d;`W zr%7ajTJwmG`M3AbAtEM8cF+|9t>6Z}Abjz+p#nH#BD=m6xRKIq@K;!&T4ftaZ!zqR8>ALqZS9k-bkfQ$;yq36-3eap0)3*gWC<;A`W)@L&jc;^X|QWw zsfMJb(<$*BU?-~8)ryh%o5>RzC!qT{C#>BKw1RZ@B$v_5$QEuj;@Ws;MB}V}l~!Y< zpn5gN_FHzV1El=1)(_)j6zAXX&X_lQU1nZ9Gq?F3);))ma&@XrWFem&#$A$=XXTEA zKyv;RD%7r9dE43dhXEaP55!^9)^s1i3AEe;Z%^Yuv|_ZSbl!GrElG_Z9hi0*-Fa{$ z@Zt*_Y>eittsE11V{4Puv^oOlikI+FB=8^O@98ySTgQRC5hyAJ9y?wiSd5jc<1t^D zz}|I7mi$rZEn$o_Scl|)Re}GCL1jK9Zx)?Qsk&c|n_Zn-;e9SAOM-Gq`}vjpS{A&W zZu`m=#0HF0d`ExHN21hk@vT`RRj0`~GP#NT^e|Lofv=Kp*L(o0Z>bM+^_ulp;g?qX z{N(92ATD;14jLM8Jz1(vPxSiqaz||W>G#JQ!mMA(PI0f_TLtwpSgyCJhS>8&;*jd4 z-T?W4&Ct`P6eA7|Wy3H`tZMC0MV@mdC6AM$vXwh8UzRG&HKs*QDWIIB)=Ca4yjmRF z^BPTMmysX{S2{O+xg=XwO1Oz$ossWs8FArxE_$K;OME%S^~Q3hNM3jQt}qpkc@8L{ zmPcT$J1+zK`3Efr#9>dSn!TOcK%Pt8V;l?y;6Y6dY&EOZdtwKND4k<#N1=CvjY;iy zfcP^L&}2+DWeBbd`_wXdHlB_&0{8$Orp5%IzGr)8 zS0x~P8{e^Jk+Ely@C@#NLiCUN=M6OL>YMfL%Q=%hS2#R|TYAiCOOdejUla&%vy_)9 z`fd61efbPX>wAS_#^9+3PgmktDf?r3`c@;pT99N(;w$csi(oeXqWuiF-Mr`*Y_8Z4 zAb&KPt>#I8Ho;c1q|3HU5x~edJo_%_l3Lrfp zR3qez2DzPg-tCEsS+H-@`dyPHOOPg%Y1=jfyZ`b;1cd}QAT;d?ph>HP02d0v(Hz$Z z)n>=ykZ<4y@#z3yb|g_cUNNEtSZAr?LGy1SQd}*Bgy#9{@D4I{E@05#b%S5%?Dapqmu4cChC7A@-1Bbj1i6oqq=Y z#CcsQj$Ow}=-hI+#cjWX`ni(#pD0*if$qhB*!eiA|Btt6`vb3IOvpl(jl2KrZM%N| zZG+TN;JFMNZ#I^^mDHy4x7gP#Q(srqUFr!BOE>kh;n$Fd(y-_!7w3+qk$g19}op=@jXp?>;3{C8d7lw3`bS%ZBzzhF@@; ze>>hfZQe}hoe7gP-fWjyyk}>J%NjW4&XlIT1k*~OBlYE=YQfk^|;}4 zJ_ccfVOY@reZL^t4)XrH*7v3vT>QUJ@RuW{@{Ikp6jML^i_uW+)9k3dkn+}Pa`5Jb z+VBQfP_YEQ|EiNRV)p$zW$!_egrAzYD1oV2e~mk^dCNos6@> z@g$#W)=%e+QaMz=2uB2mDSrRnwimLV?Z*-R4+&xXg{qEd-CO3kfJw+TIJa8i)SPv& z!7hb9N9Py0Puylm7PA z{Es-ihCf~))(!LH*VU%q5FkS@t?6*>qGnhwNWN3Xcls>XOSy1AnU%Pp!L)46QgACz z+$U}odYTM%t(UUczTK)$ucYp;2(S%4deEYj#Jo(0)N^TioSWK-u`C$KUY z3e;$dkCtLToxH1LBXC>6A7}e!vG(!&j)9ePN^L1%vmtbvV=?+kMOyK$nLg+m4VQ|I zE1n#S{%|=-(sgG@VExK+yg)VadxLB$yT29MX&N;6vBN$x#PjtY?rA(U^`*ZNkR-_y z^OtywSS?f6{ZRvx0w41nLvC)iecD?J$}G=;RvjC+JXR z9hP3~-!SYV99Cd53>|Q{*lP{61E!4)5j7ns)zY@EUwHkJyopb*0boU9?w?+p{+EEG z(hSQKj4Drb4R3!S4&ejNRQzcW@?%UI&i*r?wqo$hj1vNu67sNKz>Z<}@x+Ku)wW*G z*duM-rB)M0IF-m18qH|j-{*=`%G<&ZaC<~A0<=gp2|Kx-Z>DSvVQ9y9Q z$oFdQ0AK`|0|A)q=g2Eiz?OL8V_D`nwXuw6XZM@&xq*kT?};!tA9@Cu@DrQB9k2P~ zyqPV89Ww=_S1r}oeyUL(1vI=}0doF~Sv{t5uK!jyV*~*l1-M})FU4YSawC>Sg&_Dl z={@vvN;Fj%=XrXhIN^n_j=tA8=9Zc?j~Dr^4S1n|hZRV@#@oo<9SUHgWb%rrLkxm# z=T1_{=TM^&kP`2lZgjSHi0Thb2h-_kU^iTnp^b3a^^?o0^(~#? zNs!81lo=0pHd9V}^T`tXweaOvdMbMDJg*(ztc;J&dst)mD-5S;u94m>nGEISYNz+# zhbP5Mo)Ajisr%5OYm%F2LfvYTiH^P)65Te8%CM)bKiI%@QoDqy7B;QAkAmyL2NRF6%S>knO z)oyhok*nSB33M<+ynw%K8t+7-m?IInlvT>3uQN25lec5N3+KT>gCkQvUCKTa*`Q^h*p68NK75A-kZeN9P?TNi6-6t&sJKK zxMCpp+AkKY?A};JpmX5nWiE30QbvO5I?R44tIyK5*UL`OLld?_?YU;=8Pd&x+0Y-s zj{LxFL-xTAa$KP>inL%RE!>-dO8Ou<*B44{h0!j>YZKvXkrXDyWdvH@uhW;#8bHYx zKn?eul!VX6i`KX}hBzzo+;w-yZg@B=v@@o9#W%ddK6Ku#WQ@ThwLMYX&wgx>4@LF- z5Z)ZKJ~)OnUvDzpH07Ko|7uh-E5sIV}y+a}C>gCeHFgaQt;MHa^~ zMtY4%RD;DTV@p+re0B1-;dr!Mm_DgqC!b4yw|y_&IBJKkG4Oy|U~~=*pp!<=^EGCF zG9B9l{0#gaedijB48FvO(X z%;!XCs!YuM=9xN-h14&xG8T)?92KYnN<%6L;~A2|!Izgu~e$Fc;yv^Rw38D=~`b~ipp5o?T+ zYkW7mpA-1pq+0K~#>6E}*H14%uYV}nz#3_EP&bnnBrrL7W?v=E{!yC4;r4teZbTa6 zJncD>%|k16>*F+chsIHVY?*`8R_=!^&6)yD*@r)s2JTv~Vg0#Pn`{<*{ENzY!)P{a z(|S35tR`)-QCo6Zmy|Tj|55(E{Ndm6B;T$f4p5p@hykX~BJo>d7}3qkX|qXyl@Uak zqyLvZYibG8m3vuaSe6W5&^zOfkLU$+5MkSanG$zm}3Py^IVQRaWRG^R%7WZv~NBg*Tlx9QZR&e)JbFHJUIq6@%i54S+1?r zn1ysK(rM~f1Qu)ms_zZQK^xa1B7kW03hS7xsOWoL#4?XR0B*PlbKWtZ$OoKL;^4HV zaeWknVb&iP*!H!p?&6+Vu@lz>0gsqiSl|X;XSD-^B{N|Z$TRFFB@P9j$?W_iB&g%S z|Gr;zpf6b%)k5SsaYDmHROF4{Ypgi|#}#E#%@+&r2~mD-8Jfe#aVuLaU-F7yw8wc} zyT1?Ahg;UioT^#}2yq>7m99I}GoBI?UY`F4V{aW6W!voyOQ&>74mos6cXvvIln6*j zNJ&X|hy#LjSs)!lcb6bif^?U3!*{axe)qob=X>`3zJGCW90OdOGuOJ-`qjF^3JN6_ zb6)~n(&128d@2maG3vn)7a1kSf<$K~YpJj33Z_xY=4}cAGSD%^c3a$u` z5{agSp{a$Z_44^xBMfR#Gpm`V$?<)$CO|`I)sSlEL13ml6ZP0)kFjU+E)VUZAe3Zk zlK!F-Hm4?xi?!n8X}ZWa&!v`=#-6t#mD^!O-eu&X$TpJ5>{(Qaep;+KC2pjBI6y}$ zJS}P+{>Qnzi;hFBHM$Bam|8I<9fT+?b6p_sC$=8C&Awtt#D{T8WY?|niYHk!g=&0- zu(0j3c0L1Hbd;Ts%K_8n5Mq1RKxby3U#b?<86}pf0qV?yMXi;Jn7Fy^aY>J^XX5nv zne6q3-=%QM6V(7*c4nswM}&wORtm|s;xOv|`1qxw*KM*6&3>%eKfDY68i$c+RccXP z+%*A(f&o_hU_}ghKhcdueW&K^9U^RfDMnm15wHM}h-iff&5;nj$n-;9ubtU+{Fuf+-d5b|g+T$$sDgII7^yd>5)=-H(nssVI1+`Rnv}{TsXZFw zKbr^o5%a}nq_tq#dTHFavjV`J$57C(Y(2MJhetZOMO+S z%2x|zUSZ#T+bre#2kXLNx}q=?1!?AuuFO$D$BTFYCBqra6AGqrHt#wf=5y@OZ|U!m z_YVT4J9KeeT3_RKG3~nE-TK!^QY8hnila03KT_Z584PRmS;W|^bacbm_G%MKO#lt2 z`tOdFu8tC&l}yCF(HX=M-WpyUxEKBryQkkf=1XGGGwbWA-SRqwRX-mx{<3Wm zV0EK8->nnD!(&*3Pp{BB%gk7)T*4!$pRq^np_Yy7+r!6+%t1hA;BBi{ zx=A}Cu>rc&HpmrQXm4-N>p2!q-jnv@(79muh%;xmUf=<07zd21P;$PpGWC;gLNU*V zVr+1qalsEHeG zYmW@hw`H8RiLe<E}*ynJ{7eG1&Za6D<^r@bbZhn>F`EzFHLKiNZ9QtbOGmqkgBHBEmjkaJ|#4eTPO_zlztxt|0|*uX7=(pCKfK!mr)pv zTBH#)m@4Uoa)h@xDMR2VdiEI8ezjkgNh63|>RXzMugjMTB#gu=T_Ctn7yFoU?!w{5 zx%Uk=qq62XbCpx{?7MVXWm;V$2j>SgQ3P>+;O%5U6Q);H=H8sQ0-0IjdwTt8Tf)Y+ zO*zd7zDTzm!_{2ojI2L}V(il}~Rfg#vn`=2=y^gl$6?P4z`_d5KAE8f-pasNtt6FvTb`*>NN z61v=){5qGW&~R0n4$JesgpC!YJWuozE7xW|x?)tTv)_zxKbA|Ms&9d2StapUYGxf2 zsg zK27hffaUJEL(W}0ud%#0(U0S^aj?B5Ll8WI+oS70Jtg=?xTav}Vx`^g`_^+X753iK zPozJ2Qpmoe%2r?)#$_%YX|={*KErEcUjM4xqwUOqMRFf;RwwTP4(4vwIgQVX<;8Pq zR{%OjjU^8~jGbS2pM7bo@qk>)_nB#s-CEP0fkjgGdUoJbb}AO@r=fme3tme~IR}~T z(bonO+V&*!|u1_l23F^Nzyyy+4*2UwN-0ging>;-+TGK zSUC+z>MJ}>Cn|ovjUV%{CEfh+Vf^5TUCcpf&A@et2Z{AV3LmSVUWR^yEp|wQNA_ID zG=HNNh!AjtWFSw7)Ie_m6+-+yjX`K5_`BR%@taITRYqT8)^7!vmIl7|9~dSz5|$~f z3#umk+4uVVpn?!*`w>aOPR?zg=H7exQjU>BpeE8wJ6&eO{?|YECXqyM;`sy`uuV~e09gtt7_|OL>h4cuerhECa2eYWS zG!>&0u_E5%r#E+=cO@pZ8pFh) zS|c%10>_)~xrt{!jFg8-@e)OU!5`nyxi~`-f9T)MvZkjf;0qPuEhK7~B1vhfRYeq3 z#^B`z&+pWCor!XOj}Ecu>mZi_L7({V@peL&0VhGfZA@q8$6uLV|Cz|R3xRMb$n&UEs6Z!qob3 z-5x3Y=kflBI4CG7<_!TWW9?q`N*6W)5!<==np!df5^8U5x5H!!KB>g{UJZqJOq>hT zgMMyLlqJ*$=F2M$+WFl}k1$qKS)-!WJ?s_!V@!v7qFcmO_+7Xif$gN2JR?`34)D*5 zXJC6Zldago(kCIT{;6v?FYB<)SYt9Ja_WHVL^nVU-Bnp(HR;wG{ix)#)uS}RA%(Uh zS-g{M!=I(TF6gVt|K(cm^-NGqWSABUChYM;d0J^?TD{o_Br6I5wG^|4bEob=Usrr| zLQgigUQdvYyi?MBw7P?L&9)s}10PRXlfC~{K|c~&=@Z1PM%1S$l{Y}NR5=O79Q|F- zWe_jv08BPQNT@D0`qCn--QmXjSyZ`zy;6uQw?N_dPn@J5@UyEi(Qs?m)A3IDC9fryd z`0Rt#qg$>EtwC-s-eSBcs!Hu1n`82`5kE`JOl}RZ`cl7dtIN}(A!g8zm6(aTJ|6f; zc3Wyt+ANM#SgWk89HsiAzIO_}^JqQO032Z5_T{&~eYkVbGaS%2a*x-I<6iju6@r1% zA-_J^N)FNTxxH8)io~anhI**~_0#m#KsYnDaP0A|`TjNjk zcaLm^5RbFz72}m8m!jNO`_lkk7$)ghI)-D~u$&7vaVj{u_axA~_qOLd)?E6SFs833 z#@>dGKv?$VuZqQgb6!DwF|EQyg})koDlZNP;s7%&z7~x2C=G{7By#C=u-)v{7aB3| z?>jTq1B02OJx@MswP90wyQuO9yd6;=uM=oFj& zfpCSZb&64=ca%|s=QkF!`l{nxFmv$p+d}W`(Etqo7$EO>h&h%W;UB@jl*`b!H`k!9 zub*pT^aEE(2@-W?YyC00bCR1|@9g@??83mB(5xcdp477xJXca2lw# zFRtdZ`$lP}QE(4*nqEIFn$i&bW>Q-tH;&@Q(Gvo>bDXRHd3}`4^#KqJ>3|EE=6CdN zvuAu#mf;Nq#8byOX|b``KkD2`FL0jkZj9!yfrv~VEK*K>78Z3mdr6mt)&=X!7F>kL zcw#pFR1kwR;`qCEIO7!H#yU@bZd>Ss=ikWT*D!JSU0d z(~RyUH5;|vnd+fGiydKQ40}1>xjc8KEN}lr%ny8vjrFW~`AWd)SIt8SW9Xf3L@fRE z^z=ucBa*R}&+9oBt5x8^B}&qCD_$r1{nhTw5J4H?P%Qb6Fn+q(HwZ}9#ss%uVEgH!ZL|C@2zX#UIolZ?A|kgIAl@y%qtg`t2t#dF*m zJd4zRd>m3MecI$m@hxvcMmTXS@PEJMp+@K#m7$o?7DQXnqjOICc1|zuoNM$udee|d zDU3%%L4r)QtZqzx{=3oV`EZ6X$&cN<4Ck4uFVJ_} zKZ}^3MM(B0F{*a9cN!I1B!{+>yRCreh@_hEG5>y;rrfCHi*cy#Ck?77#NdxM1Nv)U zi%NLY1)O+6Y(M|J-%(teWMGzIiPYNnQ`(E@A}I?CjGhRAC^!>30wN9`19YwJ1n9%c zZ;fFuUs#Zpe#5^DH+1A%|K0lRvC_(FesDRpOI-!ItMV1gt{T z!3KaDF2ErtB>$DdWzHl=^GwUt`MsshxWhkH)Uc3NVb#w>IAZJ1*#q(l%^FUbSXlb@ zI!m4jjUW~Uooow6Cbf_5 zP}y&fOkjUlSXhJ)BXuqs_Tvq8zN`>9L|MeQQ-mGDSab(p6n$58HLrf5_oLKYvRq6_ zLxaQtYbMA%o<{QdojA*cG`t{KD@ZISbHN!W51G#L>Xd3p0Mvy+^xSs$sxQBrd}Dq} zgP}>zJ}%h*$49QNu`ti^PntAQKeC-&FX9lhC6E?_7&Y=0;<{c3-$9aS5n7WaPKE@1 zyAF|cFdWUy5q;4IjreSh95QXz(#0Db1B;!A&*s!YISSPZf=}1(o0OBaGd_}2PnGH{ ze%fR_BX$PqYNc*3QiywGDUJCm?sm0bGtC-*5*BpT6YpcYp2$t+8mH-bN&?YqMV*1 zkfzti8!Y5+h!*^a(S;=7&)b^_7F}A9$&uQAl$eDx5{s$E%?fi#7|=?)Z2tuE*K+JO zI;0pHbYym(4OK!WHEy7MiGu%j--R7=8dXdco0iY+OgH_oGVBAgoLOut5w&8~vI;40 zXRtw9hjjE3!ax!lOc<%#i!vrj6&kJjiMtu1Q0^I2;O5lZg*7cLnkQC{OwdWuq9GoE zLJ_KWwl`;ulI#mgM(ysmCdSIwnA)#4zDt+8m{i%7-voYPd~%AhiFOOWbMqh*wDSKq zPx1e5j21GaY3D(e<6`)Hz4R!W%k!yw0&euDvUP8gMV}@2ety`u@~ktN)mzmMPbsrv z*xoDNy}NZNA5%IO4xDXsYpA#a@R7Q)pXqHI8})O`1Nfg=cOMMj;lPKJ((tXeLP8qP z$owZO*l`JxS+t_npdN9k))%Y_&9^2b#Bgczc7>fRYX-bs*z+ao6C-Wh8(T@2{oWHt z!90Nj>!K;WtMhI#qk^wT_H?Z_*O8_KmaP*yHk3Fuhhd^fl+Qot8Z)p-cRR>7WiG$ zr7}DWQ|2ZFCH39&%I8DD($PQf8a#KaLVuyUJ`5+0H+R_;wC;XoKYzR3HeUr8kM(}{ zr-9-up<|6c?hjL>e^*<4*1h}j{4-Lw^dALUOs@LREwNnp0xiQYTDFM><+G8Q(R%-4 zmHK;=oS}-o5~C&U6H)qlwkbzW5hIL_9EDmmPkU?8Ih<-EgWRPJB~HfwHxh$uu~~yY zQ4Dlgi$Cv4Y&D;RAp&$9V}R4vGkm!j6C|7AVyXz1yyHwE9#wjfwP+*(OVH$BBp>UN zCut}ydh&(6Bv5FfNh7mfI5M(KsFk4c{tn)x66ouD_)TZu4Dygt=MAw_>Uv}537ezvsiBuvoSKTtyU(3? zo9?$Ldo?b);a8AL=@&14M7jwY-(tipWt5GJ?&ivbMZ1xSl)$wXL{VJ1aoBa9`ky?u z_nHks2K4^`mb{T#GZ`)pjRb@9YWuA4#Szl*T)ju_g|kJ##elg=R(G85NR1%9e{ele z=g4m1I#9rtC`~oQGnAFfoj2?>GkAipJ}0voOjp{8^a?2kKpwfX#e zs0$^3R+MJ~8OdAFd*Di<&nWveeRK8`nY(57&D^CfzY?&HzK|{b-v>08J-S3L8I-PF z(4gDR75TA5e~jVWVlL<&hl=g@ z>)NO(EV?rR{YGIDd+zln4pE*dw9xnT#aC#n6Te=z*Z?sjG!!-Z8POsoQ*5?B%w8Jh zQAw`E&8x3NFF$%{|NK4cy}Y4S@eDv$`t~)(uoZBmk0;IVXzC*IiTvPVpJL4do^oU#giY^Gd>iO^Qkoq!DGf0o9!?7`0>MA`qHTS zh78-5^Chh9ul6+=l5ZFvkmaO?!-ZZS!?q~`>kk45vpRaeV7W+1*ID;yXk+HX80Hfs zE?aFFrUGAaK9Skl>4G%4Md7ZR#7Z5n-TTJZK0a@%@@l<9>o*vH)x#n&G2SZT$Wg|~_6232c zfTFx>%wEbNMTkc-kD+p+;8v2rK-=Wa)fr)uJ)lD0W*$HfAq*~e$2*lHDh)YLX&;Nc z+OPu=S2dJIIW#%gfgturZZqZ=-4-!B6lvWpmQq+}EX?H)%R}982Csl2+Gn;J5*o3x z(qTD|r$hN*pLEv6HRn8uF{WTQn95eR%6ZPX{VIEC`(-~5&_3xf9s2zC`DtZr2tWTa z!leEowPCM*;ClC^CKgL#TAc#UxBa;*nKQ!;;LW{x8B^Ieexg2}1>OroLCdHG*o~nBtp)x^?6B6)<}J->!tUYY zY!P2W2vf)pLSJ`%u-u!Swpv8!)BU1j^My-EY_D=VlXvX7o#?efT73^Sbyjk<_F-sy zc8$y}3rz}Bl^IdJDH=_GQ1t`<~rRIJkIqG^}boAIS^D-0KkIETC<8vH4Um`ZmH48U`mD;U z>loVox;^Lz*5!-n6s9LqbUCfKR>W-Do>?I%>sc0U56FXch{9Oy8H}uO90eSwXm@k< zzs+L$xQz7L*^YcMWGd*{nRYK8tI{!D<=Grl024LK1Y?!iR*v)BQJ4}4MJ&sq@?91C zNo|@YFoV{BD#rMVG2N3Q#-wS% z+UJs{OK3N!(bv@%ZsoH$;#;iLM&zYp$RM2rq8|ooV$^k*`bn7LXWh@BgwIeXM+&4) zWn#5y(D!gNb!dudXM5@8xShl$Wkjtr+CJpVgdHvk;KneFS!U$S%TRjm&ODYJ%|7LZ z%g?slnUGi7mEtA98}d!@7_V{r!mH`M!!i7$cp_^$>co$Uy9v5}70>#tv;*>E6~6fGR_DvTt#x0=nI@(TB}zi+x-fa! z#29S~Yt2_MW7a2w7HK`r*9rjrcW2nc6f9_`(EH#kXcojwD3nqahseqQ^0-{3^HmY| z4v8|(nI_m5mS#9C$4N4VOXP3(P)a{T$aSosfWO9P!(r~j!@jqO(Kgd>#JQ2kUsl;?8#l%qotb{g zQ$tg8cj+##;R9GeX!c^{neXoj^`aZ>>;L&ayKI!fH z+{@k)*X7^D@_d~}Zf>&M&$oK47*}AYiS&4n#T=a6n(yFbvEL>+^f5rPx&4+M_3I6Y zZ|eD+jFp84(&!`r7Tp2RHsgyM?ZBZ#$?n760@Y%ylj~zHgucFvm zWQ-GE7!o$!UXoD^DLZhyec`&{4ETi1Pj-E1oEK$ch=J@~S|6;th?%NPi|_HY$ZhC|l28kbwx)m^kxeXEw#1x`T?-Xef~cnWrK0+7ZE}?tTdAm}Z9eZv8r=)4m2(hns*P>CGMFiwni$ zm%sfWnX`K@&_9A)2jlinhB2YiA*ib&CJY2d2mxBm7Q=!QkFL%l8h-V?B*5b{eDBhY z({DS2lsf)3nL%F_bj;;Y929zTCt*}EM>8G7BcGlEt5eXe$EZO}w_v9RLJ z0f~)2#%Y{dwhb?=2YHL~$}#QlsZOEZMS4ZfBdT?Jz4BY{DrAI&im1IJ#hzhw;y%*= zw}?DMO(dSSwg1g2qEF?k%_PcDOb^*c#dwRjC6=G|^Z{W!Q*Q%O@wikRP01{&0LgG} zByR~kWtQr|i8?Qj5g${EM(r(C90t{V8p>-?x7Mz$iT7m`op^~_;u=jxO$QCHtQ@_% zafPvTM5hN2A+a5A_?Tjr9EU={l${Gyw9LwLIv|>R5%XC7>5nBJoElrToI9=O#k!x* zz-MS?|J{U}^|!=&JYD!u^knwoyNKY>+&JA*xc%UuDVwe7=vjGlK9?@jutu=mL&90b zB@!H~BwN>Al-%IQS^(z^(}GaCj&c$}O2`si6zjYXtROW$`%+&|H%4`bk&e#F%fvPx z|5a@FFOYALJ7EwaAuC*xocEbsNe4{$Gqnv#gWpXkVn3Gz^kiyo1jlzBu}3;q=CTt5 zXN{9%QF{#(K&=$3G#PJLpJ6z7KRzS#hMA2evaDbTim;@ND?L$;%EPIBjE5GAM&qfu z%+$vv7P6FVt5ttQxkNO;DfSFUv_dl?Q9wnd*|m?j_*3vl<=@kpd&P7v4f1sWd}5j) z@63)|O0uOL7t*3CV)$cPX3-4Q&tJu7!-UQ3@JEcdt?J}?Y%Fzh;L9O9ui+x+=|K zmpfxuc9fE$R=5gPaug;L8;bXJJ8 zZ;_adlV}s(~4))J5D*x(Q;EqFDJK9a2AT8=cdw+$qs z$Q>Mlw}*~gvaB~pvQA*U*&hv(OZ#M_2O!l1R`q39u8r4>ZrK7@7#Q(}bWVWbAXs-` z=cyh|($-T0JX6>c>==ik4?o>XL3n|TDI+tpYPPkSQn_^{{R{hacvg(UXDxGZ4PSjg zFd!p&H{I6$LR*JtEUVMEq1)_4z4A*v!`pv`AnQV;em~9(ssL<;Mls8EzcjUU?hfoA z0H7qh7dgGFZx(BRKXM>`Q)gDTpi3jq5v>fXzE+^j4Q_`~^+MY-Wu8(C4FziXEwT2k zezO1ZJa=7JZlF6?7Ol(w9ah3m1bt{5uXnVVW?OVS6$<<+JdsW;S_T&JDMpL#p%NN$ zA$R{xI}t2BV1Sa;YkR_}xTsVhkIb{*(u-?GF!~q_+k*rwSn>z)U8uI>p%_lUQ&ien zk?%YwqOUw7W{&CIOH_;y94g%r-ly;Si}QH~hzUuolG}8u*{#=p`1`9_Lx~|Im~EMO!Ue_t$7p})%e*8??m2`n=|;%KKaBPf19apv@{_;!F`C?jd|)T5|R0+JBYc_jl_M{ZudUtqbHrbJ6`usc|zsAL80@9h1-yt1TNxaa}2|_cq+v05Yv5G1X zR47wT`erUgpFxvZCoYyCuU#Zx7$2_-XF98$Lrulq00q(bMqF4 zH8VJ4B{h$|Oy3b3w9VjHRVu`N7<*}Nz%n61C*BkXhhf#A^~+M_z&~Xeex?$6C8XJ9 z%^qwKu9j;?$b3W6K8dj#Tpn_YbI@MvJ0Y%{_%Z?eY`Es|j4v?5G(nJrXF~7mijj&m zw(~4poBcDZK?%b?q6;Qre>@xCCI9M*@UR#}0=Z%&&g2+NqDoh?Zgr_pVuM~;xtdXI z@$(NbYiwE{3kGJpE*_iwi!|l0#C^^Rt(Juh<6u1li68XadD#(}4R`ZF2RZ^N+DKl( zNjsS~Sw6R{Pb!Qkpq0B{RMQ^E^_?zy4_ccFlbXv(uwm8T&kR z<$B@)<;2hhLW$q4?M;hooqV%4>JkpNbQ>uLWwZh;;)3{(EI9@VI_5=V66J+@IT__Uf%gEHmDiH9B|K{)tY{IQtJd0#2Z1%tUFu>U$rbrW| zS7LY8OSn6^8g)2XZ1k$+CU2E(<^%va##moeSJVpZMvzN&0}T_U-T;i56(*=%DDDCB zl9!aOy7eaVNqW;2iX3wW4l@l>Ob+z!&twjO{9jeVPe{Z zb9WLv1J-e?rd~cc!Zv8Q{K*bqXo`k|P@sYKT0v zHXSLw4*aJFc~YE|Mi>8U$U%BV{*0V#_$n z9SzX<{JElm?z#}KB6|r?iF(4k=c*0opVo=5GF;%YNvd>$%8N~PE&`Au4)RehrwZTH7{%9_4*0QL=Ye1h zTbU&qMrwbN(;{x(f$!gDyL_W5G_(3ydor!4l$u3u3h>~&mNWa&6=|o~B=^%3vMym% zJomAv(xVwHf5sFUF?QUl8^9Z&LmrfiygpVROUXC-6xM~m`{*V^wl^~w6Zy$p{U>(E zyfD%966?&LKyScj+3sy0Vo0q0+(7Z5AJJaKx*HIZ!Fp)fh7}-%0760Qip5$5VRxrh z+K{!piRAyR+U<8qy=}=^LGWvlZ+=t`a@RZ(>LkM>CK`qe~Y>P=z2JVxlEF6 zCvyRL*^ZuUXL(%zkBW;0JgA!tBV%FtoKLgn@WaJc%MlLkCezM{0gFGt&AEbNi&Jb= zsX)}VM^5BP$$kxTf%`R{dClF$tv(>3`@_A0RI90ho`6N=Icsa{t53U^b@hCmmjMgY z(KFea_>GlFm$3{(#WsZv-3szZ-h-8#XS2Nc=5#Vb!;hp+cdzu>vC0Zu3W#jZfhE)i zBbPW>p3W6D8vzNYZ0(H~`e!UoJI4W2p2f_gw)5!2z&}oN_0@2}%j=^NcgEdfL@iW$ zXgP=nTA}SLvyeVexyY2EDJ+{GV>IaWX>6Sq#iJT0mFouCf9eVf4Ut88VhW@_8K+U{ zWvZNY?)|Y0ofsXrm!CcPJQTy<4gkqX znlnru+eLmwWK#=rp8KjS(k+7ikmsU}ov+ZK$%izCy$a9HXv>0C$6c%vzi#%?XT zA1l|rY5H~p7vt(8zr(GYDH^-PhUdv>?OVpltrYnR)lq>?AY`{Iv78d!?4 zY8?9nC`)GRJ?eLg*Af>mPbeabNPEd}7Q2TCRRm}28c!zDD+WYoob6$rPy}rmpqDW6 zoXoda4ykSh@`x8+0HKy1M>fH9J>KnSkG6tqY`=S6^5jMBQq-ZE&3Krhu5H#Ex9~?>JaZsQ!i!-<&plY~F(Gv(#mc(% zbJa(;##}+TNvY{S>ILRoJB&JPa+7Pz^Ba)a*Y6`^QR%kI+LlxvbP0{bqjnIDq(#RY zwo4QDt=R;s2ZkANRFT#5TR)3J6M?EJjFOker}Zr4G^T6(UbMP`yBmGbQ|&OHKlX8R z8Q_`nWp+PVhmv%~Ia2B{h`EFPg0I8n=7F^Y?-1`7>p$s1qNSeR7a9~^BzgVl>J6#1 zp@_^qC?@2Q7H=MVXs8qd-07D-L@GmPYFF-KBD8W=P1^KhrF8U7&P%c7T=$w=o50NA|xk6WGQDB`G3R&7EArvYd zs{`+Uy}~tA4PiY^E1*Psautnt5%m~VpW;{T%Ss{dP)z&0)^!ovS1wS#17 zA*npn6(r*|w)X#$8}l4_18MlRJz2_Jkk+u*+?F`EGmgtJmcn6<(T&Fe{n96S67E}H z+VcCn=>5tA$%U1S4CR6 zc~#^~1&#|Ezog!3m@Ea(xPO0*;6QM=Fe7p@%vZ%#(nW9?PoJ@oUPW5wo}y!E*+;Rr zyM*DC*{qpyOn(T=$e`pS^XcvHC%^_iRO??R4TVikUyZ=rULRCL<*)Y9*2hI*6~)6hp!97VhQT%HS_c zHK}t8TM2X1PQa@!(*IVzNu79_o-s>{wn?d$UDH2pe1NQGN3-xI8RGxm#Sbk^;sMJD z*;-jaAX_ehoXVZSKd4wEBc!a1553D*79|Q08eqaN7lCrR61w;_;KDo)8cJpv!5hJr z|4hLWEojN0J&(+KQepy)Qs8>?lWvzv$3VNX_MXqWHjIRqj*V@d{1KEI=rx>|zp*Ud zU5vb!^NCv`zyi`}f6grjProKJPoDfT9L)YTPP2N$!WD?`a5tIuPPuBjCLnT(gDV@M z?3uh2Hfx}hlAl&LEpVN-c^`H1aDo9YVN&bdlu`J-K=~`jJc4#X{`rbuFst5Ig<17n zWO)QEF}l%-$kkFp#sO7Huam`f0!-$H8Wldd$gM}8PBTGSR2ks5ftOp_<)aj{4q zfJ@HXnZ?7WQT$eG5Ug9gR)+nVJ?o7>8sey(wfgOC9a}~3xghJ@NwD;gaR2q5uVKo9 z71k2=_SZ@CK=ocRba5ODW^++b$M=_Sw3Jj;W8@Ot&cEk&2)uL%lgk;b+BL3DlEc7V z3`W74gls?JS0Z8isDylqW^e8yP4D_sK2tsIFsh30l5&^L*e4Q624xI&(HEpFt#}nn z!nRK)dpcjsT|VqYxJkN|H(wm2V{f#==)dyV=H;+2)1Y3?V4O7p|1>WeJ~3N7pKHQv zN^Xlc-?q&JE_7sQM^bs_2=WIysVJVIoLhZCgYY^|xj+;teN?i($VP_RF_1A}qcvFj zbfs4LU*XulL=jgEtqHR+1vrOO!24*uDMcE8=rU~y)jh|U;*gLi9~)&@QuT6PIuaYb zJtL_haHTQ(NHUU${S1n0O}!F%=g4;VgEJf0Pb6ZCLc_-O|5>Da7%bK1*E|IivZha2 zdd$uTE!M`F54_VX9=U#=*QkgPt3!@OIC~@Yk>BY9Ys5r;s4Po39tq{3=I+7NR;hN7_sGWYL5WWztaHHd@F{kHV+n$!wC z-JYB`^_n~R2tsHCxQM$R4&};1f4AUwaW~{bq&_^xs{Ib%{Fu&B?pDWP%ZHJW^nvO( z#ctbJqCBW`gp7;of^j5yeT8v_?O^S&g-)>tlFAd$bzm8Ko08%jaQN=3^D$BXh8zmz z)X#)Ns`lqAy>IVnb(m}(ivvihpFq>la?4v-duQUhm6f*(d;40#gYk@OMwugv6ws`ps8K!rg%vdgGTz>U)FonJcBo2Z7?l`!Oskx@JwyWi_U|T zg!A`fr9{DbO11)4o1W^YK#nVWw3iTbElYbjLib|2B6&BkYhI7adggv0pm2su&#-r5 zTK67rn)goAWC!lm@#Z%InMjfZQf^XOoj&cx_?P@x{{XS;mMnS3e&Zn5Ou86XeY7R9A8uH2?gABfj1aFG%=6YHc)LNEBI6b!8x#=DPLmah-y<*HGbrN2l3(pjX0n z6(2V<&Wtp7DJ-pQ;XRn34_~eHYL^cOodg_PsOjou4YV-kqkRF>1t_t}*zTRhVQ6wm5M@4tu?{OlK@TsQo7HB%MUnpt$QV zEf_=SsNITQpL|$5=%FEWpzo*Abm3FHYulxo5HYOLHn+S;AT^*n>#Hm>DIFe|5s6lp z=#C~;`=Z)k{(R_#>tuu|8~1W!I*^GDyexCEKT;>(L_6r;yu|i7Ii#TZVR&&epMP`M zrblnh`iyp2NDg&^)v!-WTBT*GKA&QJ9#rOHw>aLT6FLzwyZn z5|)0lJhBcO_5FnRKoC|8HL;hp2xQ_BD?Aow@o9U(`1Ts^>2eKMeBp!nJYh#nZ|0AA zRUpyg%cheQL#4&1m;}Yz`9#7y8Ario=hDJiN>AH$`}~P#Awd}3diTNyd#pux|gy{MviFzQmQX7iaN#+sFjq?UU&fIdzd}<1?VoGGXeWKR1 zCsHlZiYY{%Px&RlBn1_@_gaY*KW6-QV^t7eg47O2lRQjPQHnt(@4Pb94WH3kx*%uK zYz8>fEd!LONYPY&$R+o1VyCVW3zF)$#6e$w5hZHrl0N(ufH{V2pg+ zd)r<{1d?={2(URfQU{D_D!gr_3RWIA|&2LBuQT zpFtj2Bm};vJ1IzAlcnaiBPm}PS9C4$S>f9QpkEZU#zV(rPDE!pHKiRkSfWh7PEzf{ zH5z*RpC1(|I&`&EZt2KtxvYm09UtFRzKz96k-g)3gbXy@4EhzEk4;Z%oabh4ist{# zpdcp?d_AAPZ#=ZP;qVVj%BpMj46Rp~diDG*p zW+r<24j{g5%d&Qt9z>crdY2OZUk_&?Q9StC2Zt5E#_JW&u>$3_r5LVZ&F=)nr~|sQ zF(R(})@Omr7tMFKS6wO-$!8$(jT;06R$Ljh{F^h2j0W0h?c7m{XsJHA2b1cFR6z4Z zDrk`r7i6KVV;CI6GaGsDJ{v}n&h0RQ6ny&&m;VVZ2uQJi$5M$35L|%phCzqYCXx&D zz`shL{@X#-d2i>MI^Qsp&*`Ll(AT#93cV8pSp|UBnu^DdKK;)v8A=OmDM5)vua*BD z086WltdUT|KRSLQ{4bwcT4aP-8LPh3NCrkm#=}&Jzb4B4h0`TM2R1QGU-X(*sqE!y|sX#C`9Ui#3Xar>S@Y8`9A_ZX~is!&Y5^S!b5-oo9?ZwjyJf9Tz=U{UOlaQO1f1TSZ-Pv)( z|D4c&pKq8KG}!9PzX;EW2$4Y?w`IN8K4y;n*invF>IFttLxSu|P za{UoNMohpZGhS*w?{a@vkji^{*pcF>H>zPN5c}3 zr%FiZvEb;^fFvLd=qW}(Q|GbvPE(=}|Mp|Lb5ez7mY8tQ2}nij^KbzUFfRAmm@{0t zpCCxf7ZRjY3+$>^+MO@iV?fWAoeJPmxi}`tRdfZ^a7u360|XMl6>#G{UqKKHxIM~F zFKxLMA!9$jD^z{|0T|$??y;j;!hPzZ@PEkr6jY=d{&+ zzjHImz>}l=Z>KJWfVc6p=)DneV=#o@+rT4Zdc(x7rQSBZoNrc&jNz>By%#6Fy(7G7 z8$Z3zKD+?yoh{1*A{nb4CIw0x52F(?Z`aG>rQ7ya047-Nb2@G7j>ml;8;FMq9NhT9 z9pWZUuRZvH5a0-$L4&GrGoae+fE&(Wd|xG0w|Wqk6i!U09)I`f>85A z6P!Rw)f9I8*_+*w!1O%brvDYufpcl@S-ds|?q=IQ^> zj2T1_`o{P(ET?}WkM%D()Gj6Te?S83ycHEef*Jx^WE7Atq})5-&;VB2_d@Zujc*FFkA_vauNe9(%e>)4Z6Ex zS9;k<1YteOmN2AR2P9PNUg@>E^N@L92O$l{s(mqv>}50BOVqxgv7;z?`4+2X?@o(`k&X=8~{h8{XzWJr4xW=+aLT-QaSNp3xMQOXyPt)LPE^t-Mvl#`IQvbG;_m!ULR#kHP-FgwU`^GC}8z zj3RGKf;R&zaF~)B zytrK#ra(QjgCT)sDT<6Q19VVoUnGd1rmj@euKs_7y>(QT?Y0Lh-LPnoSag>lz3A># zKpF{^Zjh1&=?3XgKm`<#?rua7kWT6Dz7PBCZy(*~j(f-84;Uf~-u1rone$hZ%6CZG z|HUDO)dz-Rjp_~35Cz|k)i^%?8tI_uWap%Qt)(VHkCJ)?Wne@3DVG3}*Pda=#kkG; zfkoc-#N5Hwx~dB_tnx*${T2jVygZv<%;aW3|6us0yN5~ zp4^>aX5A@7cBwCu4(8}DpOhNteHIXa%=Lmzf-3`fVebQy5j0VW4SYSpLQ5KR^a;U? zTkwqXg6)1Wuqv<+wr6hv2bEN8qswQLO}^;7#3;aV{qD~{;$KIIIyVFul+DK~k~RN0 zYWCWY5U%$HM@t1gi zx&w^00z@QhTGXU~WZD5mM5Xi`6UUWq&d(GzT;#fYjKMY0-_$fUHL>A~U0#a#{xJRU z-_4b{f(+FedPMNgqqmQX@8i+{Jm|>~Cdhv+8 zr~&Ib!)Ybf^I1*qyO=x(>t4P_!cTN`L}rij>*s{lAboFQ%ITGe>faKw)`|LHy8@rX z&EC@Q;shEh_(h&qfRsz2)fo||q>d<}y?YvZTokZs?me5 z)$}A^v#kc-txB0GSCdR+3b|J4E*(@IjP%QaAjrMx+}+tTH%uFIj1)+j)N~peIAC?f zsLE%$h1^S@mP{o#@D?9~4rC^gIf4DD2Y@gQfQzj}_xKt>Ftr|&vFbVk*;hujPDx`I z+S3xM0btMT&p~7G2cHv#`U8dBb1_9}X7+KKz#$ zzJveN&x|)nE2((~E*ud3)myOC{hC`22u1hV1jX-NYFqs-SP;H+dAehL*Hrytq^&9x zi!AvoH2w7(_w5>y^M$}uRnmFrJVVDb$KybC1C8a(B=>iqmy&U}Hbj&b|La3BsO2eV z5t~8H_Xy@AWp%yA*GVP#Yjp)kNdQu+!y@yIvd-Mt-L4!}y`^>E8$6|^v?oT`3JM1c zmWrM;JO}xHB;MONtVDZ_-l}eExU*_E}}fa}uZE9P_?P zaD$XuYhA?=%vl4X{{k^7KSp#4iZ1}KmKSyrh}RaS&atp5_oCprn={8KVkk&+F@o5|dM7cc5^LR`;s31^nk+1cP5u z5EWAV|Bv6~{^qr*C%b{VH%68W?-> z;~$SU_XME}d|kV}x^hslHPqT8Ofaux-o1&_wsYPg<6g1lci)8_#ZPLs#oKZarEk@B z*!Y1~cSg@DGgB*IYVfD3q0YZ=`6?H9{uzfrFA(=Q%HW^j)W?iHJOsk3pQZMLdOQx+ zbv!O%1u4sJR#~2wQ%&rqv>rucMH;lm&JcDX_gx!P30xcq*Al)b`a4V>%K?(-{&FWE z@HuPm;Q@sQE7X0)5!;cDgbhu^?S}$mEhq{P??Cg^JYK4fY`+e|C29cU7;0E-VS4oy zz?b?(WA;rK3{SdIpx!3A!>R&{h!|3rfQ{i%QO;ceI9E1H+5f%QSpIddN#WxnJs0uz zAR?4E9sXocT>fc8%n9vLT(4riO4?LhB@_qwaM=4|l~~k8d#!+GN~aBxWcwWWsRs0e z{L$%U*-aNd8vX04EbuG6fl*jxIEHwEUQ5$Q+Pvl-T1}ZE)vpDC-PJvQe(l0^obdh{%U3XSC4<#~Nw0D}@-xyMpORrZF+T??v`scL2B{RwNfDNF)UljjHWR=vk~F zqCpDhw^w^Unwxsj77ll7?MXO~+pr;;OxwdQXl+;yqSUeSkhkf#;6(BkC`fW^T)*&^ z2gyrA(T*9=oy8QT$$<5XF?`FzuLWwAo*<8aDE`ed5-GIWBbN&`YlFBXa7%8Q;)W|a zg?8X66PYa|CDwLfvj*Sib_WnyGL9oDNN6s0*Dw<5{cK4TEDf)WISv?#fEGggQ#h-y z21V9xoo^icB*ivR&febS?i?RY+gqi7!Dp{_+j&N87BaeK)73~zc?p)#`{121R}Jwx z@lMHjfjYG)rOWPuWXL)3+L^ig+siG0hT5j}3$oDubI8RiznP)wCU;goY@IZkTLuf$ zEkmu^lWmkK>i{Bi$Q$SWlj_4h<-=iw_MoVSFS(wDl&)hM7n`WUZS|IuLzOe0YniiP z=1oh`VGmFTfx|QODF$Xg39ZD2M6b4$Rg|aIn5wJiUVqXSnH+tXgY|b+^Pea1m-H-( zyC6~PBRu6U**kMM9w3NK65{tCN*rMPR2)Nwr6jB8Av^?d@n5W(a3{T za*XhPhW?6GSnD`*#HnShOh|jX*u*6c$3N90l>4|Q)cbh&)|lJPQsMAm=q4N3c$4U1 z&p;PeLcTPmW9+jEC`j{MiWg+VvSUR!2ef6;XnZdoD8=XFvyzEs7^`Qmw}Y(Oh8+Ix zte;&`>EvnT#&4c)O+W35Q1Ucl>F_PwIao8*D$RA4`JbcM#G0x__`zOq`m2Vs z1^|rgirrnr)B{w5TeW79!hhd5D3+zCJlI}EsH@(7EWS@VrXow5;qulA#DHJ8kA2$( z(NhZP=MtoCFGuD<1n9H%5_SH)dQgo*X%UI4hDEOg5DUSHJ3U7)Rolh^MtPI;7N?(2 zbZUXtpM_U~`I#CJ%cyw#nh))cx^EdSQ3+*d*Rs6qmVyZ8#L%Qds`2*nH6rX8zs4j_ z)cyApiwM7we{O0Yvf9ttY^E^4s$I1Hoc`=;1E`&rqXm|Fv_~N+ z0B+m8_x5BvoO(9j5#wjqh@Rnq8=$sO_+)I9yiNDRj1Vd}T}k6wmS4I+hn(AN-N|)@ zi_T_N0mrieR?HgE$_@Pn`Hl+`!T=PTFl&nc_)quAp8g<#_U$N03ioy&5?m9QJ4zLh zlxJnIthAjTpJVnA8#Jf$82-6`iMl78HuMYh{^)F@jb3M;Ej(~!F>BZJA_hLWULJ2m z_cD(S1~EjQy~kIBJ<{T_iN~NB?Ibp~S;9zg^w=}OQ#PF!=}9^4z*kE(K`{0WBMEA? zohZ#zd4;xDHG)hiCno80ob=teA;!sv!R0_iT$E%^m`CMp+jDy2=T0%oe>Je6pUp!= zr!NY^CndN8qPlCje#E=Ql4%5Hes*gS;H+D+wKD*KDr zczds1YVe!CXGbFFsMAvb`}%2c+HCSmu4tBv(nOtWdL+VOtx=4V>(=-I!gb+g%oQ^O z2PWn9hj2OJUEMjDB9j#NPteBR2Qck|qx4%$dqK<($7Ruz-16U^5(_-fwHq%veixUU zN@cAfcW;b>-ft5H_lJnBy!cd4go(!*$av^QB(x+CiE)~WAM`+;^Skr$BJ#atR#Pt4 zDYNUtM;d+RZa3cJFbINdSiM9%Qv>kyBkx`JcBZD?JYB@>U(MbVtFY)7!CL|dRP5{u zZiRQQKQDf;p#AE81D{c44~CyKsy~=03K7$(X7&#{BWsKrvAOs`#rC8=N5y3O$SkNOg7|wy_-YxWs#p2J7|V0< z?MQr}#72|xzDf)yg85Oq7*tY(JQ0oSQK%CJDiAoBYw!Q?A@~{DX)P9lQ zgA$ijzlu%Zk&Q-avGadTo&WVEx>}BW06M}r=03jjI~c`^HPYCJfUr_y)gS z;s!INtnnrq;Ty4dAjjFS08r$_bh4?^%_4$cMTAza$?6Qk0d}K&<1&O{P#cg0D1Mk> z&qb=tUMm2907DKH=2wtQR6aLt&Nxx)Y^6^lwELMb19BsD&4mC1RNID@Q^%QLEn9WS0i~A zRiiHdr(phd`Ev-+2#mt_qgb_&W5Qn90UW#n&ZQ#?$f{bAb3Wlx!UOm zs=6qmrU>7~5q}i;#Rj)IPsZ$sRTHsPBij5I>Oa^X^1d>eLkkl}WhTiJ2h8K3REUHJ z%!!*c0GpC>I|jq{XB`Hg}HBl4Hd(< zA`*H`1dmDsIcUZ;fv7@WKqe-KW31_dXWoHbkF&(lNu163XH35aFG;54NjNvx1eVa- zh{b9;qPT+ug%5jZOR&#_t*DKv=&CmO&uRhhbV~l&p!SCk0D+DO-oBNmceMS<{7-lO zAH3_&Ph!dZY0y|unJ`V3ef%G_XGxgG=kSDqKrJIp4;c0&l()_1VA?d)snqMNk$q2w z0Vi_Zlm4sfbhOwl;?aH>PR_DSTMV47lau+w$u9gLe+L-*QV73vdkEHYz1B2P**bt{ zjqeeh1`-De+L*BW+$`cJ?ZqI%pf@*XdoSUi!o*N(#oBHbwUIX_N(VWM93mY|fry$* z0%h;Mpnu=Bn5hUU590y+);E8@DzxB`LOfgM&(uAOhWNW;k`!~wfRW=aqu-1a6I*;3 zCR$1BQE*Q(Evml?mv85hwQ#lw{?R=a->Sj7>MZy{C-k#GZHiE?s4B zXKE)}uao~hP5h^j|Ia7>dH786Ig&Ix(Gse?N01I;Sz|-j)<~aT)Mj0mT@xBde z;Kl_D>mmi_*hJZUOB)N)aP&I;OC6(WRIKEbebLvj&&x6rw^2_^-X`xYeQC$$;lymS zrG8+tEoEc+Ml79rlB(hHtHkY2JVHUHh&7}vGDoSzmh`}&06 zMhEBXDsyYF_pmu7YTziOIS#baeNLYizG`brJxB=u8`$_SoWn-Q-+Yxe^mTsVNv^eeP!+T?8O(*%jn%5a8c9g zXhd>ZtYEe7JBgpSU@&T(b2mg^o{F?Zkv#e#O+1xE?8|nuiOK>X3gw?l9+d^&te7h( z{!EP_0o4$XfHj2=KTyqJ!axyxk|p5EwypP}e48iz)LmZW5eBcXy*%?Xc+1P!vl{CrXvA4YlZb8Nk>N(!JOT^cu)*pHo5eame_t6Mq}F`v&C! zr_8hY$u1`SjI%fxPmnY%IavUL?ftag1?@J?7<>VBrQWpVXs3NynECO2TahDYLQwZk zwHy@-cv{aFLn8-Q?b+1Se~o(yCk^YWqWpC-{EZZYe=5gkdLj|*?}OY*n#h>a4W#wY zmEQGGodWP>1|)v64`@6#82e4WFciI~lS_q)tkCa4ff<`XyS!1D?R4~e&=o-aB^4ALOy8Gs_;lj;~q_q2l$u_JF>#4mlX2hbk3CARYm|LO+w} z_Luh4WPAEVIT-bw5=05?AlnJSrr4Z&y~RG?O`n^JwaJKvPz)bz0M>-nu4%W5@qD^I zSvzmw;MsY2@Ct$t`HcD`L^r%Nd-cHK(K^I zqi(!kMA^rP&)#3r!XrN4Yp-3Xy0gAmdD5_Ux|X<~)bC7QLRIYjqiJ368S#JBwm-l0 zF9{bfMrWbR>sEU6U1{JW6ik<%++6#@Knrod8nh1Jj9m?s0gM=d<<=9HS^mwnrpprI zr4hipKz~azP>7@P9BPJ+u!y;GpANb^z%%@qdR0EVy8sv*v7d%<03p|hbS_g#)jV`p zAHW6gf*;CfiXM|7E86S1H`nMq)F~;N=yUq38w19kr=nVd|LP+k$BS)CL9#d5Z;cKg z@0$}iyYqc_Wy~qdbYm!I^hncEIao~QrG^c&uR6)?O|H97Lu&BM`>bbN`66y>{tjvW zgS$xgL3oOsi$v_k#2)AF=BF|zus!jU7oZ67`jfjk*})34o&oCqX0|7&o<4n-F&0PaCNa}jD9Vg zqw@dx>`gvHBk;mbvY~<~0I7!sCH4w-tI{d}@(%)+rZ2wBklD6ms>>1^o!@!iMpY}@ znC7@|{ICc&jaizYF_@GgHcUik9S6?liIV9oyRyd9x5VsKwug-XXJ|t{OZB01TPF(E7kNTQszeQsnhHjL~(+r7y$p7Re6a+D1hrHm23P4M*7SK;-hi zO+0vuY6V1mMJ1CV499`U+t(kq2JsO_J_1(yb}EHf$Xzyt!%*bPGda)#c(E3ps-ztx z3QQd+{mnYxuG)2{*&RS!<5$Pez}7%agPLB|BiVD1LE-XUfu*1@Ff+jFbB~8{d3!$2{8crT7&NB-T-u;8}QE05b78#UOg<0ZTkG=Q&n?zw*V}437ID=0Wk4A%kvT- z-p&xPy4&``zD-sChP?hyWx20A00#p@Ua*7?3?X1KJofSWK-0qeH`R!;=gcq+h!`L! z@X6Rdkk`__8Y|jB3K1;@8mL`>LnU6j z^cZ>T!h$;pyMre36cVrz#XrY&Py~)!qx}s_NrgmctvJM=WS#QyiyTiZ0KX~iCTgj= zuJ+%(LkaY^X>bR)W9C62?CKrw^x)yw`w2RCxf3grtP#TXaw0gvtwyX^*AY4v}poLJohzj_jIX zzWa{1L3v&2*mr~v77j52<_(Lz%!;0@5fjjqnNsdh3>Om&y9YA6q$G|mkL!Oe5mp=RUQH`l7f!JUw zoe?get+bwx7dPO$Y#NLVLb5MPg{VFAYNB*`bD}J}imVJvI&$ip^+lC-F9|xvR|L~Q zKB@;YWolk(LK_8@uX${#2#_=ag>?58gWnqaUi?Dz2jtb7HNtAo^LTy}qt=gIw6rWA zz9cx!*1K1`(J-{8IA|QFAN8i;LZ!>Ji{rO`ypPz^;wRgu~IX@=h&!QK8d{dNvCXA=IcWvh_$_~S?o>Ca&-08e215+1N$V{ z$>;c6LFz)Cv41&6Y)<;oCTiEW{mAo;!lJ~Cfy+w-1I@jS2%E_+4xe6ZqavoFGt`r;m|UH#7ZOh>Yfq@qBmHUD9j zf`-)hCHrE~28_&xZymn}QJwwtS)Viihof)ygvTIa+sEh4QrTim;158tpYqq7q?%dn ziK87Yt(^D0`sKwYtW?+7`NU7+Mt*C-a;7CB?b@qB7`gqE$c6|n`EXT7#MOu#lo!W< zf#;yzIwkgF&^YiKe-geq9_9Issr)hBU0HH=>1RJqjOE<7^QxRCu%%jH$B?}^8bqI` zp}73`8gP2R;R;$1Vi5iwGki#$)(rAsv@^YRxGqY*AYXyJmX;>M_F6d#*TlP_DPEgb zf6rd}SpK%xq5WmX9PcM>IQr%0wtrQq*enJzbC4vOIaj??I(T#j$lh}U9yKo`LN;Z5 zXej2#qqsnl789?Rq(=NR>ut(Li~;VRkXNw1h2TCeJB`5V|?8Lhf?rl*hDBH>`T0zz2i?~b+I2pHKhFe z$}yn~oe4fbRK%qH$s?N z$AoZE0MwUWfz8xecymh@X#yc6S_IE&uqfx>zYL=SHQaPFzF}?I(@1yu=CLT8Rm&T= zQXn7+&qsF z&du${JVV|aHc8ckh}UfIQ?@u#| z3*?L49>f$!FA3Jsujw#toF=>6Fn@2(O#(Z&=bgY#d+8<|-xYc~?Vo_rW2c)0#4-`P zC3RcRFMQrMZw*nqAZ_|)C2)++WC%KwoBmufZ9t_}n*0i8OD5mfQ+$G(ry!oB(kG2C z{&3NPrT+a6W1;!+9@*X|i0`*~IjHURSC3A`2#=@j)K_ed0D^j5-7DmP|D>RS#Yv) zLDdTD61sS@Bs&xXT6|G+VKPN?N4VE&!K?TxurI%5=ZB z#Sh@`M$UwWNd^tDf7F0d3I=tufc)dGSLc?@+w=UCv_NTA-Mk7i;y@Y;!T5a|K8SW$ z=_#26%shsc!K9G(|1jDAG!;vT1c$7u<{0z8pIf9Dew_YXI$koZi=D*Y(EBRuf7vT@ zdT~uBM?tuyxawqqtbi=Gudrxe2^g{c6tZs-razHRUs2< zOnva!lcy-5)hIq2Bo_}QlVtku2e9dTsfnD7Rr-Es>|^`|^f~cQtAJGEDVzSy$ZMcz z;%q$DoH}{QY9=`Ydi18s`y(ob`0LI+tdO88)VtW(>SIFH;Jh~E7PH?azC!g_$B_)a z6=W;^_&5uWhS92au9X=rs(OMn2_jdNH@bA0hr$5;hli>bxrW{`h=+YMlMm4~S8 z054LSt`_9;y*`k0@1;-CZIVKiYH+<57)$`y=~cA2wkP2Fo$Q`LV(VNs%=~z+u^jDx z4INhlm$PE^gprpXY2N{Wd$pUaX(GY4<~xVMbbhs;z4Htw6=0i!((F=a#8D>ktbeRK zFl?sjcJP3EU9SI^0>!=EFqiEz@(4!hz2BP5%J>Xt%PP|~nWBC*S$`?ClKl_-Y+smx z3MZ*#`}Z>UJcv=cvb9jr`G*q)?B#&RHyHp29NcIRE4e(G%%JKD&8zK8+cW@tlFM=B>W)npyDdBDFFnD6ir4aNn=L z+O1bPemkKtX4_z#>Jr4S`~^rZr!qa3!ow3{qJ=h@Fn$vDm77DvbhQUCu7JREZJ%J+ z+@n(6ehjoH#ItNCC!nLQ16_h>eoiP;xcj)^TE?<$B#9|?-;y8ah-^FY2O!s0bg338 z3zEYSyS>e$WDO$+q^QP}pkpgKC-p5ye%n(4Q^3+jd$q+hm+;Sdv@hBcR0FHU4@8m6 zL~~ST)Z)rLaKv)8##jj^q&XNz>5xRS8d{VTbae-Rh>8BappM25c}N|&V2pKvV|JjhB_?|mR!|L0gzWdk2{yfKm=8cb={B`7GI zM?}n?+NwJFq2_0iMmzF+8XS~Ra%t7+*N0NT({iaKUYsw-P$0~JJW+)wxb{F&fAX2L z7+&wGVm?%lBYO`LxbFDKqWR{O2RFdqt^vA~g)&pNgs1%i5}=^1ZaNPFXa>mOVh|gY z_VL;DZ zdOIFb*aiI4DsTEGWA7*cClZaOtq|}XSR__C>egxcuXNQ#$o)X0bu=q1&DPc(hg0l# zcWVdCo5de%%7AOz@5kZzjN7#BMF&9;-!8A|&AC?uaI};Ti=1VM;N1H&$g@~LU!uGD z@bmSCnqN6rz>Hto|K2}fRzQUB%f*v_@n?tj{0y|9 z(#cqpa#0Nr!WN;p15*j%yhHTTeg1VlJI2d3moDabk4_Pz~3 z=}b4pc=0!r-*`!f51Q|8_9_{G9cw;{l&1?ot;xWnJsX6M7*PbGQq$wevl?gtM8%^K zqVAxfhC4)`XfVUWrjdhW{|#zcsj0vGa=eAz>n2G)Ss)&U=6OMX{bp~Y;7cOKDTN`O0Z z;E;y!YNA$Ny55A+C#W77u3#963t;!(`-Tyj=1}6G!d~TNK{6DLqLwNF4VGRbJ6UKD zxit?!Qad27{x(Csm;omIke_3CW%(t&;GA#t_C9C}3&j!!L7Z&fPb=+bSS4#LxTT|+ zp0|Bm+`z2{6gI4h)saksmGVP``Mw5Rv{!#q5p^;UWdCrZ9+C;xa*LO50$qe##$8-S zll$IWvF%en_vrM>t`|~&cAB54b7GD42TL@i{(K7I{fkoZPQL-O)8`M#rc{1F!bk+q z;@VP{;WqV>`4RoL6|!hxb&ApJmy=J{>CMp5`to}>^25u(a)!Z5q3LhdR%qp;ZkCfw zgTCeNpELAY8Zm9N8`lL8P4 z4(P$ujts(6Xfbsabb%@A2l7qC*2AEqxBADFGBIDFPc@dk4|C{9FO-&KbxXj2&%7hL zTpJ(J*?#PZJ*N`pqM?N6d5>6N%qF{(G@i`~zpg7;PLc|^GMTn5R9kG3RQiJ<@t;9k zXXkc*%JSC(6buOqJ6n1imP#Cxte z=J&HP25<|6{#*yZ*Rl3mF+6D+7(FPO!Oi+h`tf1)K5Yj+JVut11}!3)MJ=bt=MF6U zuy`)SmL+T-S>fdX^ei0@PdYu&Ivnl%_IASWjA||e0*6lbX+FQ05t!ge24gtmwf!21 zPCcTC_A*&z-EXDYuj;TyX=Upt8F$;HITD9*TnGp>q<$BKHx| zLng3{IMT9+`xZMT&ufZYH^+KUHbxoiK538NYm_Uu%<*yKqh%Te@(34$H9sh)t(T6y zek@Had~n>?38v^IrLP^_Fs(_@_l!o5b^*Nm!_H{PUnP)$7!Hl4Q%3XTPw2$vE24ZK zMYYFnh(kufT>2}_O}wfwZ<^Mg{D2%hUKrexLSugS@)rFpP6O{!@(LWJkLoeiL+MTe z={zZH!Hz>`u+evRv9aa!i)nk?%g#EwhROTsqf+Pq8^k8sPKolFsIB0qZsm$jl@Xe-v1?hI{Cc4)Vu#4$%`wbdj&dm2bYSm@#QR?V=N6e=8h+tL#fJ? z&%!*@Hp4?*X~i@+l2>qpxRQGF8J<~z5ygh*mf!z-fQ|-({ksi%bL9!C&$xf=={ztpoMw0TfqP)ot{bl7=N zj$xP^`kA`b_6OQEMJ#3#=^OBt<@-D?AK*KBR80B5Jxfp2gTPM%T`^6ecuN~?7@Pw- ztvM2bhdZo&*oRuuNJ$0ivVeJemHUxn$d_(#iLp?|n@VU?1K)l-l9Xp)i?;6WPr>(2 zA`pD@?IX4+F}woZdg9fZ*d6I?QWfR!r#4~T{c(ZyoWLK5gsMP1PBxnxO8IKf_9fv( z6x8>edj6XS6w~O@!6AJk1+lhAS*P$Ou(l1mZ?p!YtWBp7sK!X55+-(&F~9OK^#Pj^ zMhv6PPil1=N-_c=RiL9@b*jU8o%ZRUEPx~h^gUjSzC`cg0|2A!fUG5I^3G|B=$C(1 z04n%2)WnZDZ3_n|(8!?_NMhF`eVmkQaBlKz=||X#1|1f+xXB6^lttL(;` zZqw09^cra5S{7u}^knmi5qa^#f?=+tCufJYqECjL8ePb}gq55J8F+K7c&I@Rv*ntj z7|-nJpSML%=7YN`ZnCU>l~xjSNsh4rnLPl#>8RKBlY6P}QcrQr`bj7>BuK`|QdRyW-$_BNhMAzLJLF1qI zk=Iz)djMm-h>oif75btIxBCPD%%8V;Ck&SFEq%l%CQGwe_UYh~56T=xe=oalyN&N^ zIBJ#3N%ztfC~4A$s5QJf_QC*q{LTG#y?W?g=Qr%RPCG$0kJY9%RwE1i(s}hi#*3{$ z)8-7Q7?qu7kW63z8z6x>KbrHqm|MyeB3U9dW1Qz`-9I(;8@oK)+mjc~UeRzKRpGA% z1?~MN6&r~p^Spm+`AGtI!}1^V`2A#~nlpw(i1)M$pZ-UYp-x^CIfRR?t~l zssJWNQKwKfvqR67{^xkfS0iMk^BziI2_#nVy$M@dcABlb9>$g^nz>q919avJPZC|H3%Ig{DvY{F~mtk83_+|9gMy-L$vS z=HYd{3KPpIzG#^H7ywtgVe(qRe2&3EM+fTaxqTp<@dNTfdy_$O=g*h||8>x{&Pp1` zab-5p1eK%j@hjLqm(-pixt3iqfrsoVUpy<|&MLPM9q~yY3ed z_UZ?HmQWUsa%W*O2M@msNHxSe#W0RJOxzDlnd!iJAN&YH9PM z^4|?0JZ3c0_j2Pjv*U(>%S5~qJ)O!0m-N|tRLE}B>8*M=NQl* zb@vMYm$ovIE21W0EFfy#G0dn{^n3xK{>*`j5qnNi<592^s_8Gxui*+>Q4Q{7wXWv> z>y`rJ$OC^(LhbV!z@HZ06}?QzyXz#*zT$#&)|##@-N)^a!{xkDO7XQf8vsdUcAWc2 zKU+iFGX&>}vy z=vyOOcA~Ev`V)f_wkI2N+v4?(jqfRVR|4<$x9@qnRaAONW|VyP1qmZ!S18ms7X9Q2 zAVyCYznOJ9r5E?GHTmA$E+NG;yv$M^a9Ba81KJ$l@lCpJn@J>$-}T^s^aOE=ZeHle z{YU#i0QIjJ66!}xDAGaNlRvm7>vWe{L%m8;P?xY_eoLq$=21=EfR}~d>al0BAgc3x zpHeMg-Rn2d@huy@-k|pqdy8WRL=p<~?M*6rK$vy(+X7ETUDcRmI|k>xyDX5u6J&wD zt0G&(;v^0VD>@iD?`6!M~N}nEm2+wMF_5(Dj z6%0$`Ad+XO#{)(#?$L1A$J%b$L~nY$R2y(e_;$Mnm>34N*u1M9!g>{dIqlvXpNl(= zP{qCRxgUW7U%RhV4wNf(KwK~AiaJ7fOO9U}0}a5*diFPn_(r@KgJs~w+pbbj5?tR2 z`^W$6;qPyCra;j5TT%Q@PdtTSx+atgOe>PO~Un!kQbb$6S- zxC83pQ-l*?y~&~?eV9ews^TYG{bkqGCjt%&;%9)8oUYJ)uV|rDX5<64sw*Sre|4p2 zOE_48A^|qvwWJ{_%s7ZH3At|CR4k;zbsx!}hcIS&%w+Y0yH+sWLT=I@;uIC5EJ;50 zNoN>0*?%`q%Hn{cIOEV@SDxhIdKybK#9e54T< z_VDcS+Hx#-=H8on13;{R@Hsc0(W4juJ51dcV9hn+{>sY|0137HYQ%ZW9Z~iy|2^JL zha~;bJ^Z04iYJ-@BwFhMMl(v~w%=ZjAC_JX-n{WB?11hrkEHCx+bC&l-tN{1+g%=$ z+9l&WXJCc-gCm4gxC7Vn@h*@sh?=N06X)!>Ch$r#@uxEVbQEe+#3G@tFcbhorKBFebJv97-@|g}FJCSiCzK{sa%u;p zD9(_;qC*j}EaErc?y*MuIy8b;o@Vn!9$Vg9@fZz>HO#eDP;z=<;MhsXA#@Ssgz3AC z#s$`OV&oEv5W_JBb@p{oKNC$kp%f*?-ZS*zq+1OQAJ+hiE;8?K;m{Mh<(oY)Px6W) z(d*sMo9x%bS=4E4zBoKdtfe=ofvBdH>`7Y#`EeHEF$c^LPlaM~M* z2CbPjehI0Ozikt{*-$G+lRpshphO#tkkd;oAYhj&5`-mjdv@=8FB9_pSW}@%)SW>^ z^8w%{!#D-!C)+>gj(JXhvjcV07XF|vGh`gj-y^MS=iR@OgS=40o|iVnwDxb;8L(}h zv_^PWW{(^NqM)rVuS!xJ++?Vcza`D^f+Eb4*D3jQm7U$VA4G7sT)h$jL zh+RgUCUEQ4lw~N@Ged7;L*T9iQ}levhs|@hhsErVSNkUgk40Y3DzBA8%L>2W+Ex$N zbB;+-{3?wIlVsZgVvc9Epbyx<|6W~9GMejmu=V4qr7ox%T@%LRamK+CQR-Rr&;_8L z`TE61>?V=;1J-bYa<2kd8mttY!P4={l7V`0AMzApbWUjQPrbT8F{Sn0Q|KQ`Bt88B zC8R;koEzDpf&ym^_Z?%3(@IkN)dDyGT%mr~U)j?P+6PYd?d_^wqrb9$p{9#x$*f=W zUY&!@xx`QF3b$0w4r@+gpPUhs8DBM(uI+))9)T_&WrO`J&~ha^2fqh)wbJE>!HO;UgM9CAh4+J6a(Abo1T4}@G`7S$RGF(T_#%)}=H-beE ze32P_J(!nEBvRQL4E9l(dm!wJ(-7+Yx}2RA5()8VUrhW@ptw<|2{ClN`;`iZRT8l+ z2rq$x{X*--h9~TF~DS`SMSDiMSp_;$B(<^2kke z??Tyx<};a}&aV#2j?ViY5msm-4fQM>KE9>2tsnmrf$$YWLeUMVqfT?&CKO{#I zIMq-@qs~P#q{IZ}JkV2?ks%kY(sjBqF%>4qxzZy#UZP-6x6PFBvK(bMZkl=fq)2^k z*zRM}-m*Vm>_o8t0SM;!6)FgAs6-I0DaT);`m!jMbQARUoq%IN?MMP5&j zo46Lp&(F4N{f64q*BO15s?9pl`>Q2IW>}}XVyYa)6gqlPu%JXMm%7cqQk(f9&RsEg zU40<$zx7h7!RE5(vp@&D==lC|7|!9Sy?{nCP8P_g151eoFNZ^!pbN2olbim>F7Cx3p33B_Uw_{a5N|9t!rs2ZoI9Gv!;E_);p^LJ z;nCP)rA0!hqmQnSW81AopI)tKy160@*UCn$gx;FGLy>gm*Y^E@_3go2GxM3Kv?f#E zH`nMtM)MZ?Z1FfGLS(N(<+Sbl5rM3y3!gfSw1Fx##oS;Wv>A@vlsH8R{Y2e5@2M3D9xr5tq1{h`Q8GuA_gQ5jIalu zd?Yhgd}Bz&1}`L$cy3eaW#L^c#ZQ6j2~7<+duuxnJC}pDY$^t;jI@i)O!0uZW=2{g zS25|MQOC2FXkw;^_hK+npUVPEJcbkMI-HR}>8Jz-m1Ao3rv0IX3El`D?dp%ba1KJUUQY;->BGVe%bt~m^(s(H_xz>%wh#obCf z7s@+5Uok+_3hFkTwl!p~bm@7Z7*A8fyf zw4tBAe-vssTqZmChH3nOEx;G{>bPq5lz0bM{s|e1BUXvS%iwA6D@w5aEAAR$jf~%J ze@R>h!!d~eK}9SPr;$0r3T6Y!$aAf$7~)Rg!dRX2^$LSNwsa64o(_Bs_KYpxUJMI2 z2xu_ua93_kK970C8K9hn{gToAmq`_V8^ovKYWJ?f-%lFB?3U7@#s4>wzx)CCw%4Ls z174w|PdhfTsF6tai|(9fVHPv}u;Fy5 zxAKlZ@b7F-H-G2ozR3}r@!M>7MuUT=T|>MR z{EA}M(7r~jp^X%SUD~8bgqw6m=U^+>U|?7s?j(a+)=Imzi_%e6uZ!W%Um{8WCAt>= z<>JDucV&um-#o2S{xdS%LuW1H@;Tpu8Dtf6A%10{q8V&w3NG3dz;D!{dg zT|!ihpK)MM0UZvCr+vz6qaNLti)E;!!TW~?-On4;e~4t~Xnq)|5`}xsdL&OhK!C6r z^bT~LjZ20K(;-k-Euuv@34e9NFrtpykOLquQMM6BRd^*#_(Khm)hrtS2WA;&M-Fgo z>ZWp$Ji4+0CbA}|wPs{76b?AGMUR$x+3=kJW4S)vSQyS&`Eqxr_P0+!m~6vKNj>St zHxNaLQPW+Pm4h(nn9FfM&u-JrPnDKHvOI{VDj4bFVhoLn>gXA~sVaGGr^Y0cEjFzm z$WNo$qDUPU?gv7<=G%cTfQ|0qk~T=OP(kd)KRk3Aqmm7t+|C_3$J0PE4aHGea&AY* zWlRWOi~nvD1j~;S-c}#N;Nj(&t5kCUHWDKZt9#eLjFMZxaWw@zO_uw8)G%ztJr@m;z zLs$hNLEj{Nr4zw2Gku#y<*Y|r6ZTxDfv5MHxf2kE~V7dIHr6(;g~INQqe5d;<0 zkf<7jmreRmT|X4mm5rgaRUoTa{p?R{T1WCZl-NujVARUjXkb4MvlbgBQ2=^wb9|)4 zEzo3>VMsH;o)(dP4ZLy$S_nN#f)4%$>3~8!BjPX(Kt+7pv7f1lOX`$DT%H3#1O1_i z=}R(kWrNGhZxCLm3E+2Nz_=C=h)aV>f{4}RGhPv1+&QZF9^8D%%S0vr@>>wwHPksF zxe_Zb)C%f0vKDmx0{1W7vKgcL3yEO5IS;-C z|JIy)?Xh)WZJKo8lFcKY{d)KLX@E_kK=qEBT`ob zFz?CG%#T(wqz-bC7vM}(R;NxRS^_kBb4W6}D-AN0<$ZKO)N!qJSM*Isw!2H$7L6sB z00@7MoM8yVtz}5UoUl+pO3;qe#YkkA8ha7s-=>bVEyEeG9!RDkbhV!wK zbjI(KLw7eZa5upJQs_o~O;tqDd3h{2mOaf!uL}vll(5)qJgXA=f7pA=uqwB;Z5R=e zl1@Ro8x#TQ?i2+{0RfS2kdl&ALK-BcR7$!L5eWea=}x6XKtS-l=Gt4AuC@1izVGMz z9?w4xV9t5ZagX~NSDX=$fmcj!Y}^)+#F&B08~%+pb3K!t7X3H?uQSXDR}0PJM#KFJ zRJzthL5T>C=+e`HIybw`%z+_HO%6>nsY`tfk{6NBJ)AkSS-nNTK{dnz?yEAss)k<$ zfz_0T&~Za*yGru`P!@Ly3_hJb=9b2heytzz3hlZ?#Otzivs|AAFYEyZ*7WzDT1gH1 z7G;;)lp+qrY4%t=L3g&%xX><4`!=2r>TLkqw>=cITxYtwM|75)6(0Vd=G4KhU7D*dlOiQKAYGjez zIMxewwepDHDx5z-Vn3i$ioxQUC`70&WKk9w)yhfhUirmiJ|D!IU{`6K{71rb6*4W}~kb`%EeuUDt6~aES1$>DuTk@OT31nMNa=o{V94 zSqs+~ZjCi(`)}PYXGmGE)Vo|Yp!%^ttoa~H>L~GnL?cmP8~|$)-=QHMJX|5>fgB}m z%=5&o;v;A_c^owQIs$2y3gaD-ZyLs{qt#8zCP6sO#<+P)ex=_GCtW)?lSc+AiQlfs zV~)Cc>*aRWTY-eD=TwEW126wi3@%FKAbc(VMEvCBD+2G4xNF344O(v7GaF4Pp;n#v zn(M!KR!m|eHr!(BA7uo0dJw0?ZvOnIE?rU<$$J2$>Xkl+KTh%%ZCg5o?I@(`?Aeu< z7QFRjTf{V?+f~y=6;2BGsjAX_I=kMr_@D$myM}k2^gT!;Iehz)TDiNSv-Jufmx8~HZWUX)Ayo7l79V_p%QFQDktYClx~1lt&*EIMd)QJQ{@Pi(fb4SaI0A>r zok^{C39I&r(KES7$_;3R^GeXTSGV?N`&geGQ4ze6pB?2v5Q!YV$!%Zf_aN`Zb_}4# zrk0K6sB2i1q$%~*xM2JY&3VL1u#@|V`Y@o3QixX`;of%dp|-|jjPO~$=iU_cBE*xZl~B6E zpFJe327~|H$GrL9y8FN5jo?onC_C>~J0%g~gjemA@leCj-H3?b(zoT5utZ_PgLy$# z5Y?TmgwxivnKUwp+g{mo>l5>Z>|QKavD2^fOQY(=h9YhN=cxm2osTUdvyT9lNjI5d zhh2GQucZ=Q!@MPMTh!~L)^66_=|-u0NMd>h?v}Xwn8pm(ZOKtjYa&T$kxkUUP_}GC z3hw+SI8uI+AN3%70GFY?RMK$tdw%*fyiD~#OA zQM^GVY0b1LqcycXK})%~le$ySclSdxX$$_mAbmO}rQ~a?@Y+x0p$m92aQ>}0?XB4^ zIvrBY4k0otn|ovB3M*+u&KoU3nBHi$K@6Pc#DmzEeyb3E%|+m6zv+vAXwkH$PLQIZ zx|3j02zsYE|{T_#NBb2McwwZ0=e0SDJhG>Mb6J4Ww7`;Lj<@qp(HnL zOV!oTh$F>L6RAeNTd8)mlLdYU&>2Eg$I|20)*LmJ9Oz)OuW4%@&m9Zo0m5Yi{#1I5 zC)POscu^l4ls|^5tyNWdZLYs@=8KvhMkJZ@&5}XVKd!Z%qTyL$ z75CS`HtytNss;>G>rj9We`4x84Qyd1hgO~vXD)lX8Xr=UqocC3A-pvOsBdO7*MFVOfr&UCU zW<%uLmQ)+|;{|O?pnwX9tj27a3ZEB#G6)HQrziHSr>)bYVy6yuo4f1;_CU;7E~;Hw zNj-`wG`#dfDWspVxfQAYfyE&@WBr?LL${?Qi?L%R%PN`S@gwxDM>|lyXcEc6M z(G}jp7WHoD<~`;o>q@TP{XpGiOxiPl2{v;iPRjoJmmxj79F_aCC*)k_FEd31J>J%OuNsVJ>5 zFIFO|2KWS;ZxOtmz$h5kFu_(_Z%rlZ&H_!y`3(THUFKoE56}UfRZ5QqVeY>g1JO1w=#xwx(~7W@r;))xHNg{}y7iH2hxxU6J5VwtM#jQJo5flJ zouzQkZ5fnT7na`Q?cE98&n{UNmP3pk5n>YL{2SK^F1x2K^*pthqj(2sH#`5g0Qj;V z%~jFsQo}C-K$YY7?c0KN2G0*Q^K5Y@ zEcM8=%CoT68`6YhC(wEtuL+E?nyU9`tdvt*x`?LsZD(g{!6Rtp1b`0bW>B91AMUg&ZZaRB`*JFqNJ5T+D;kOPejVPYGYJ#W*0ntWhHxsO7 zr^4YpIePuoMp=3Gn^{+Uaz@K-VMA6dM~j`3W+^`-M$;kEsf($-jyXdS|ePO-2*5wA0*IuSo_xCOuZOU%0tM{QG zue?4>R~9X{G)%#pNs;*y7w7IYz~`~+x&!?8quU!`deHW$b(!9w7n5MGEEGq-?8b|D zQD+@9p@hZ(64AM=hwg8RnPsW)FxrRxzxv6YKX~kk2h}s4?MvWhi4N+IUNHty6vfk5 z9%%~Y4PJ-m81rXX{6nNqNr6yb@@l5LpIQ?Xj(3^i9ExBB1EpezSkU;-M z?4E&qIEtEHTIyLX?VUjJDSnp&!x2l=d3e@VzVJw@51o-xjAH zCoO$sotDLNrGMiJ!k!|fZ(HwtMI_UWwdGy!Q1Z(Pi$`HJNp$vXvBqBe%pywVRBMxqcU?B zS;d9)+YiJniM@j`gcvs>Zz4cBhrHwW&sewEBtj6Go2y_LKPtFvO9+`*sJDsWK9Juj1{1#FAmd$&;6Zj5n{Qs^!-} zK(Y|L7td)hSA1MXa`k3%R7->0!n}tyNFJyW`$nKM4U+Lmme0PHm`(?=ztsV9JFI;d z8)rDh>>BrFdxL~LoIXiy;ew`lvweA4I{f2ZpK+L)h@ux)2vp)XXWXK7F=MU^SwNur{{A1GkLIB{smagf{+Nbk4^JK1@JeQ+l$oYN7& zKXxk=j9gL2{v9~=1GAS{3H+G--e3#8zd$K0P{GzAW!4r!wgC$FigB|dyKt^nScE+d zTw#42WdvGZ2@SzPn0PnW;B2~(f*{V8MAa5t@?p5R^CH95(U9}x(NM9=Z|w#Uq-Bbl zZlHN*wZ-FqfLe1^Q3;7T-_l(zN-K5r$ek|GNMhNhXx^Q7W;EavfpcLsiHt(!g)@1s z>$sZhB)(L>duc2ktBfC2nmp1%qA5uO%`^{7B1NOV=SCl3NRBkOc+`j{gj_|;F^&(K zHY(p}#HGjk&ZwF?gNjXYH}lPw zx&K*{PUt;FmnBLz;bnmSwb)H3eE*jjr%eAQn&_dOk#v#0z@;wChxuxTMe&pR6uNuD zNUXv+_Xzxc;$FQewr~I#&;>FX-^Sdzs#1$epdugNQ-?gOo)F&f$^r10RMfT{HhFw<(=0)z*?!D zYQWj2+S=n-8wP!I_B&&c-7XsXp143GUW>$qd#gG4s?u0`cU#2aNCTXn8vt{3rk66C zF`jQrpM;j1G0ia0G4j1K7hZjQSNZ|9sJHe<7o`#v+4pE5eF7}2tTXRquQTM49v>pe zdVNxrr|`>afK?@F^9D@1x2ebbxih|?0Gbh_?1E6==Ivaunh!0-Ks<j|m0nlWv1!+n)zEH*j+Im~Angx6U$E|jNZh0$f zfrQ2rm9>9ym||2bYCB9xeca{Mr*CK*m`#ZwpN$|9G`EP5+V-5*MicU{YLFC!z+2jOAa z;T$EBRRU$;ZA0gQe%r zYd-6EL3E_!q~&(-k6Y%0g90e-MR|EDe&MrIKF2oW-5K88r-e|V2u&D$KhhREGnZE) zWYf_!4F(7HSolwvIPQy{+a7AhWFS54+Tv~|f5t2;WLrIp>Najul_PAPy*K0V`nH%D z>R9^ym4Z*kdUE2|AeHC1qSYASbKZ~<8oSQRsZNhW)o?__`cLPEp9Y z=-=m?wG9d`$5w4SeXjIz*_{sj;XE}egb6^)k3a8k9yAKHRQ4YPz_rlukHTV&Yju#@f%u?L=&vm`M>=W=27cAIH^W9v!E5FVRi(`u-8DVOE|a=^ z)<08VKaSXDmb_FG4k;9%g9OghLnt25eN@#7?dSe|1CPZx;(Kf%1ZY>@4^oNTcYaPm z$r>m~Tda8X7$}{e_92@9*r3QTfOV~9uD`>To3p8%@yFB@)Y)>s-JCo@_gen+aeE8j zR>a{!)Avi*qxi-TzERV=;SUBvqxBGr3?F+mrk>BCH@+Ns>^HflGkEfJz&NrLP_zgLTy&S% zDkT=ZsI=T!`%Bxwx&dV_;5D=z%cHdV4p<~fqKoNlx1HwSZPsmyBB<202xzNg(L!=B zJEbZX&r&l@8eh4ItTf6HWguu7tjNii z*i&t{X4(OfX(h}lY}iPD+#Ty2PtdiFGT_1XF1|S3?G@{-vUA#)8J`27f{IlOD2(>E zJb(Kg82CDIH6vQ5n{D4hlPFIV zbjl570oJEVovfv8YY7#7XA-E}7mQ3SZH&<(cHKUD=c;NSRM1dm=wPe)jsi^1GP8aP>-niy2p_D+%+X zO%qkn_xaBgv1-X5&z45K9hcd_k!)qWrRh7rEY}-8Ofa2m4T{j&dGtl+d!wHPxXVOw zF?P)PtLo#v5jwvgVuYY5dIGJ8V@+GDT>g0#{lRRIwZM({?Dqf2(H0pCwx_9YJNQrq3>6{X`V><Nyv9ZO+@ox6&tQ_o@rorfIq87&%E$%QhJBJiMWI)plYeenA#yk7~Lt9)S;}a6|_2 zhke0i0K4=#bmc9V6WZEDd!_8Y^3e;dG(JN9Kasa~Nn()4Y^cnQhFvQvL%0 z`LFA*!Hdd>A!myFGlGJ1L<9<2QqTju3gGd`@n2tcT6*8He29xP9Lrjd&IY&H3E&|L zFN}e+Y&mWn^&rh&uWwq3tKrV#oWEkbM|3fM6J0?QLtpXNiZXOofFYHizU@sC^KGP~ zxj*QSN=m!Q3&jNzh( z*IX}=7cfu8wVV$1#vtR>9M}DAI)4VQ{m}!IxCw!R*kAXBIiq;iZa$4xRJ-s!G<@i8 z6w-xy4=Q$!(`?X4_S?lgkXui(NOOSIQ#lUOXDesp)S0kY4%1Dl&e~vbAZ^M5*SLF-)rU6KDnNHQcZ8gp+d;NY8JK_2$SN zp!=M=4nYFp^oCy$e1vAa{w{04Y0~}E{V|n(kOQT0Bn=$g9V9E!qT&9 zu|F6lk6YKv5n?Q}yp{Cnolw|-sYW^ftG$F0qi+p&URBS;6r}F|2BLX@_6(l8m>wy; zUl&P_`3&lMufROk0iZda>9%Ja1KHH7X|QLc6R7(uimZMDp$&F*>y_p9>Y!i2Q%W}! zF}U;xiLjode6wQMP-*u;bND$wqiAS2g(mOhUlOdYNC%x0K7XWX;ro$(x2CLf~ZD3e@Cags@ly!wRM z`myhf+#Rnh^aMM%e(5AE86`6}i5lsBfV@Cwyh%%M>t+pDDQJ!x2bCC0C`%xPF9*MN z3Vycz8t?}BCCPSV2euvB)LoC=i_+Zt5UkUd&bJ2%UtEok$<Tlp>C*e)aAR-Cs_O88^iY z;5*pPwT2cZ~xIuA#xinKFTQ+p@i7WWa5BB^qokRFD!5I7A3GI6l?}=2Pz((eTN}{ns+^b-W z9tcpswI-FAvFV^eJ+&|Bv{a37kAibXNK%*PPE^%1?nW7ol54w@4Q!-wWC1)#{(>&0TX^f?I*NF9!`o8)7q>0_)bJQ<^9f6;_iahGw zTlTcT^w&rK-=Px=!7r)#LlUHL7u>xeb#mW8c-!bH>wU!i>%Rq&j>eMY< z`pFae1I!sOC+^=F@1{0L``fEVXweB{@A!mUf7z_p0DZ|9O-7oeBwTsPuV(|rAE?`us32+EZ>nrK+Bqhe)qFqJo6~<>6t-Exp!aI( zgnHVkSFoZ_SXuBtekwI8G8!w7_#E+nxb7dH z2w$x8>KT-{R}H7{DgXIXNzthDTaiNbetGGC_>p-W1y`$c|LC&kKY!}~F5F-C)&KJg zHxd*f{X+}j&!^yjci&$hqW{m2t)Jtv7t1(WqR5}IN&JdmLU{!gfk4F2Sq!bjRPWFvy|Rn`aTVK{XKldVjvSKzGWt(|MM-I85pRI7eEQYcD5ym z=b#SIBY92!o%~IQ-Ts^oe~%gJbLhA`FIu_q&IbOBP6@%yV4l24yISpYa)danWQHg& zNc=6Xa`HhWQc_7h{kbIKEHvD<69U>GM?*`t{&joaKvGgNx?G0tZxPwAO9Dw^(NR55 z?PuIk$3UZJWUPg3hqyyNynj4L9##53yifog;u?Cy_|MQRev4L}P*NTSk_N%pmpbvU zE@AvN^lMYYm9p7uB;o&DC}vh?m7n^*HT++`Tx9Q|9S^M ze0g{o3MYotpMPO^)Eq>g2em{aIe>)~QZVNKe)j3(!t!9Y$TIx={_2%z5g@D#R=a{l z3XxP|Qw;RE)mUX5v0=-R=g^ISQCYxF8-`TQFlOuW*qlfG zc|kvSfh8^Mg5;awrIJ4`$gfLz1~JRsL<7j+dQ41Ak0%xX&pq<At$zH^D|lnSES8 zxAKoYk}(3?jgVaT;=`YJN1M^lVZN=VGmdRps0OSZ>jDDqNE~MT=hDPTQ;W?$gSrWH)3F&W z6C?hfAF1Dgv?C0Q;m@ez_e$zE-1Q=;mTDN4d5`o3z9Roz#(xJGZBoQzY%P(5{qwt5 z6QTeMdlQ&7xSyYcEIGo@G1P1M$8Gxa9qe;p=hXDyj6MAEm680Eq^T+Pt-zd{lZE9o z{+=@b&+q=@^?pifuuJgnsa`(@8@Z&4OQW9N7{<)67 zy!4kJ1#r$d=BJ*=P5Aq#{&=5%t)@SQ=Z_`(^DF;&eExN%slo6BdLTKF{cZ34{(sc@ zCFg%0C_lgCZy(p}0UQ1Q-pgv1!DNLy>I6zSj$pIta4q-emi*6)=g0O)JShC>hiE#v z3215QJ378nQc!TXaPdm@2x9@xe}2)=-zpONg%fLGQ;cj*c^_N?|2Hdslh*dcb3`6x z6xW>F*T<`dJu3yYU)jq<@ZOL}m)p@`3r!0;f@c|GPYk}nS-V>?&>Y3%W(aVjxg40H3 z!*y;{{O0d5y*pkR3PvFkx^L3~r@D2`vb zP&d@PeOUi7rN}+XtHu%xbf)Q{V)zdhKI5s4Hu*LIfVrs#a)1;x1{wt?5g+04OTz9S z0QWap5HdQ+63V}VaAQ&MKL;MI8V zZi$e`P9VA1scXWVRDDoT^ru4wdwg>AOXF2`Rb4w9(GQ3@YwcEtIN)h=;lX6ZSMskH z84G}I5TV!P(@+>NR0ddApH!wtac%6g>i~1Q%EkCG=N}`(91U(l2JPAXjmf%(MBY&j z!}^hk;k{KRPrC08m@+rOhG-WpD$~eBu3Fw+UP*5iJY()4OAO?yfGNCol0|Uq1+vdK zAS8`QPK1hdQ5V2MxH1IW=U_RP7#lp2h;c$Flp_8AN(HOA@Ve6Ia zq5_Q8#V|2*_pjt~==C?CIeiGk8$Db!K)7vY)ONjp|0SypgX^~PWer)Ih>Luk9a54H zJ<(Ax4C0eKT7xgWAS%c^OSa8N6)G}1%H(JuG@US7W`Ve-9FPJUsb18`^5{w0O$xmg zPQtb4&3K=NiG`$0XLTrFqf0uO+s@+&f~`JuiygXW%gbXe47 zD<5A)b3wb6w5f{P^qh$7g26m3t$cONP?N(vobRbccP0b$Iw$FTCyy2{;ZjjFl0nC#{An6^p}Il&mFCmAzxl!edGm@r4uFU zAjO+1Nt**NR9l)1go3qypfGA|9j$(Buv8jto!jOsFS=pgKz-pIIn>TZ0 zo)%`tCw7dO!+alw5S(^NaZy@_R_ak-tA*mrR?Y!d+^ zb0lhabrYk4i${WzYKQa|NWv{@p-V^G8+dFG8oE_@ETOo3+<18ltiJJHK=b;jUVx6B zB6-MSu~SR$EV|JSZ%p$5kUaDvKY1vXjMcil2x7x*js4{5zp2{z}b&hO%kHlbstPD)N4glSiL?g_@(|2$Z63TD;-tSFNiQko$^`7)xdT%+sEXMvmv5|?1>5pN_(S<6m$l$Cm_kj>0 zML%&9tVkw6a-7yA>?n>|y+D&;_fzyiu;Wv#OVikHiMSrMx`2N0fz@&zZ?!<*8X1TWJtEGz?;_BVbT#DV5Ye^Hf zE7$(#&8&kS8@VStnYVQ_7-!ktxIMo}nD!_lhq*TlYlf9KtSek5y_7JB>`7HXy*Pa} z^Po0>7)>|oN<^=m!U^qZoRdI;+><0vQ+)oB&GG)F#%Y_W-G!2%wu{2<_LMw1C6!!X zl3T(%2BiHTNQQ&rjA(ysO9EoXS!r)}jRj9yQadV}-ffaNXh_6$ExcBjd{G5G5NG=? z%z>X7d3>+mZ(D6+(&6`@P*4u%oXgV}yq>GPokst0GKxkj%Pw@aZs{9HR*q6YG+20> zmPYKVVjBN0RuM8Ajw?y6DfZFrpe1HUkg~v12A)i4FSfh^h4&9>DFz+HSW0N?jeFJl5I5^|?-%I@aDm_DDzZF`ie-Bx}GS^!ZH-h<8Qs(U7CX zAlXX(hbGMpGX%WEA!a%-82xH*r0#w+BecAh&>M?fc90xOvW}U$@!0*sTXM z52$NPYIiz;J5k}0z|0?k@&ZDgUdoCRB@>l$a;#NDT)7X-=3Ldjrh{fpur$vplc8&zC-{0%YfQs zr0=)%cx?uD?1d`Y9o1;L@GxQQK~)W6k4AZJ_2_qDEq_#Sq3G0IOmyt|YpMMvHP+*xmd3Mp5LqLjo$x{y}Q0~lX(zPr5q zGTkCTpQbcc{}krZrTawvg(@kPjGFT9phaQNNq^Z(^yy-k_SedNy^xaglwX;+(B3Y+ zjeSA$oq_ZKD7Iz^gbzX94D5U4wb%=ULy#VRBa?%yO>^46g8aBuxBTF+y2n zCha8V6RPP;6)7)6dL6Qmq;a*v4~MH5O3tq-Q<~-mOcEG zRdQ>`K1v*fZSB6^nHz7w6MMtt^L?ZcD2FjI2zG#nummD&Y~WSZ5%Gv5l!+Fn=?y~o z7L=D?AqZH&a|CHqx#Zr?&MS5ogBqX1IxcuQT#`rnP`z*?Q?udz4FXPJel0bK#*e0N zB!Rr_VlmLk;?X(rH5WYa>?WVza0=x3c)e~%x-V}hnx0;(#EZ34gV$vxnAmjv@@sU)YS zM0P-Dy{D5ECd^dpwrOkf27I8rO?D2=-}j9@W!P>86^k_Loshf>0}@MbH*`+l&&w#x*ExS) zqkpb&H?-=Gg+)p`;(*)rS{W$~P?Mg1gA!}6x1x8faJ+bOz*GZCRUM>PU-h{yi7%=e zzoSp?$jrz@WsjYt>;*C;mX|)@JOJ zXZQE+fiP*Q`3N=+_{NZpfy|_CR}f7=og^QNb1ceZgx`2@=)F0@enmlEEzsPuZgXZZ z0*h(+>YD1uMA(Xyn4Kh94$RhZ_2f`(EuDK%WDAV1tLYgUL5u^WgyyTC`rgktm-^g< zY=AbOIWW1!p2hlO3`2M~xfu+W4W;E@dD3IB&;x&&s9s)cvdGFt%W=j0Ywa;+foEs+ zy+V4Oj$?V6Mtawdc?J%fM;;;a_0igz5H|{K(68esIvdV^6hJ7tcco;VUf0z8cKCcs z&#Wqxqw@rxuv>0W9Uq9|(N3R4V>GX#TC{r2b!}lc*ZC?Q^)-GaP0g&m>?mNz)qL=o zC(CQ2w!`SwOJmvTSO3K7;rGlvQ<64bni5^3lZ|dW8w#v64I2WM78hv0m>QCw8x~ot zxmi}bqBcd@$wJpB1uqonY#*^OZUnos%JwVt_q?O^a%+vsqzuuHgAEdHXQ~?j;;d}* zqJ@A35NEvB8e)jYDPq+PTXc2U`%a@1IzZn*_!wn4OD61q;v(f|p{BE;o(SO8fxGVK zV*@MyGz!yLBN<8&eE-wqCSPMLKDkHHe`|F9n*D|Zi+_7AeWuWDV`3B}rr%1RXHZM{ z%568L4;}VB#@mGI-O@;8ABh~TpetYtAiyad-+lzi+Oq)bszkQ&n>J!(>)y16p`wUW zz;`m|cOdsFDIa#I`QSTceS!Xt9y1#{>rPA5ffQIbV^}xkb29UX?fA$K;>v|Gc64-X zG#+nUrjb0M5V=1Xh~bgdJ|J~ysWn&d;?BN=fyWxN*dyseXv64LbA{sLi-7X+L;b9G zl{R`DFZCQ9MW*d8k(d~wFPdF82ks+qm>3%pQ`G0eAr9r)3DfYsI1TI}sv0IQ`~5XR%v<|y;sJ!%#suJ0cvjURdmUwMaZM^)YD!ifT!Mm~dwXsf1ky5y~MG%xObd~Vt1 z{SheH1vr<6+IJk8al)h%qUnk`>?umWkaUS$^nH5G#k;*Qm0PECllM;h2a`>=nPv$D z5R;LTW$gwC|4k+|I-3^JaOrSQw>|>b;xSUaDqEZ3H!g8r4JEaTABqkOiiVW3x~+;& zx{q#{Dspn+&=o4FBWkoMmZP+o{uW_LLP@15=|iGW(w#MQ6rvzU06-Nk^7JKJVa?L^ z60TnkIsA%$jvoIY~Je1hH2s#ra1N1Kc(2~x;!VghWkB;`8Z8>MCCAeDD zc*MHd@S(FsM9{5=g<=>a-n&UT>1weSf!F8KN{aCKwHp+*@z7XU#Is@6PGn&))Nc72 z7#OBX$>v96WL&UNU_aA*X8PUvc)bNR-}^n2PQ48vvC!TAip5CI)wR+ffvM#!@#1B& ztJaC3@;hOpHBNcg1upNA2UcrR;V044vLuAGrhf}dJV(jYH~d!8UpDHEj8oi!thsrv zh5GAd!GdJA&ER^sFK%l(xj}C=t1G^(JnwE4_&$Y;lq%o!lzxfG0dF|^swsBQ`}86$)X3FVz{66D7i}sOA`bL zCUbjyw_cz3G2(c|7efl26gtyON_7)we@klr65!DgeGLjh$5z-Z9W5Fx#`gnI_qtOg zI{MU}j#;3;kK2?&{Q|YcA?|GzT1r+3j&5+ZJboD(*$;_(6b?o2*e9sJGJbQPik7{5 zBY|HLWSnSS_;k>T!1di8((ST4pB25*52|+*-E7u2+hOfaXnu$i zOi3pr$dcmO%nmjT7_siE!is%4G>g|shm@#-`?g{|Wvu&3m_v0D%FEM}^Is`gKVLOu z$kE34=-z7$weIx^P}6Oi3}@>xaJk{;+jv8|9sQ_jM2(>&L7c&XK7L`_gpEg4Ip)b~ z3KG4;B9v@mLr-l%|3A$*_aN8uGaP_%N)PHrN;Rqep{(r0hCT)nI_i$eNQG6EUZYnM zJPG;`q-3BGrMwU|YZSWlrlTp&({yiz&v0wRtZgSYmT>x}$gbB&qjw4k8n1Gy2L2al zb{ydv)x6>DAdtx{0NUy8G)m}NH~v`%J{6429AQ?g zp_i5W(;my0s90Y--F{L+SA5Akfj?a5p_00GJzu5&ilTC85gU!g=l-0^#uR=f;qg_G z=&On1rLODOrn?0RG>`VzEojxNr~MzlnUcST?HgH?UE(m8b137PDn0#T6JHD3kaGwc z;BI`h4wHn8pq;a!p~Q|N8Mvr{wjak6BhS=;pV98ugYw^Vs|7iz%5or8B$iZ6L)syX zwg{E9?y!=~%%OK@-hAljK+nXqyi#1#TU9zhegLfzGs*W*7QCO&hJ6tXV-d0xIWxTSU!NOeO%{g$$nwSfjr)dys%xd1X>x8FTzA0r`Squg=;Vaqu8 z{6*y-OdlW>0w8uMS^ZfB@%&f?0f+BXe5mHU48&@vlM{5nMb!=nC(3Q=5sj#KJs^CmHy zi@WKuByWJXXq=fR`e==GODSkj|wu!#|ie*22f`ziNjea|yhdRm$tDGE|Kzlbm;s~u3HVdo0>p_ni z3c?`d-DmT?kFnd7Xf=&xB4RfeBv+mrd3Q2G50%dCbzop%;zdwcE{8$VGa;9i z*cX~PVTIR~iMVD}lE(qOvHKWLfSb-+#z^`Ld1oa{vuL^UV4rrxgC*9&>RY6wc5L zS{{T_11FuSQ5p|G>^}gEc>p2D*vqG?FK~uz&rBeJnpVmd2ChPm3nfabst6q=C*F)z zHPr9^iudo=rU1i8uf{Qm97K!&JAGTC$}oO6c^*1`ldYkfi=Ue`b2?!*m zpT{BO*<3FPxjI)(UY+^~Lk{t`O#iL%qOOQWXsyE4g5HjH3?qY@^73-wLPU?g!a6A| zBPRI$+ovOSZpA4;2~2^SmOsO;dqBs;Bn!-g$0xwcJ#ksr-UR5v8{PchZCl<$<3#aU z2JQA75L+-GQXIa#S(v;!)o{!}pal(~ji9HYwxh3dYyr*|?eIyQ7J7UEh+I3{3P?Le zR@**(*TDN}T7@FK=y;K4^FCyh!zF?bO)5SD6nRHoU=bhF@cn*LqI|;ArIi=sJfZ|BqE{j|3@qdd2elZd=F=(tifuy{5 z^7;2&D{rl;oaQJcEF9;0bu??%%F$#WZ~7dR>yI*De2WGK=H8 zWhf3*p*G9iZv_Bfdy-G*Ad?k2Wb$&u7^`r~;x*D0t|4_+|9D?EyJ}a0+sr0=2bGvk$K~)D#t2zf5&G zX!wUoGELrJCGm$6{`$A6&K=1&MJ7}+lD84l9B4AW1Q^1BG}!`Z`kGIGXV$Vux&tKB zJD%Rb{LhTM67yhgS`AN^Tv`r7O5a}dg$ce^`4q7Yy&lT#X{roQOW?M}26)?>hF4W^EK!UW;^PJ}fGy4SkZf60Ef$uc6c10Zj zmo1`>kFJj|A@k6VY}lXH4xQ|P<*n51lOq@N53zm6$yP-UP-j(;IR;G8KW27QF-Cvy zQXI&A!qTLo!1vh7j-|s*y}X$7qYeXBwQ|RgpRbG40kPMzl;;3x>KKee<$CMZyKfEXOS2g~UGfG|4mzfq{%#*3B8Gfa zk!BVlaY}TXDOXnQC@WN2_56(3gXu-HOX0j1QkO%VWScykIekQDOx!7;iFrW zFf;RJbj2@Sc%+%ytL`%&vX?p}(W~Rrd&`-;lP1ff;BI#dvW|W6erlqHg~fQmgPNYz z8U)@&gzLxvJ*yXkWR2PYqnEkT-n?9?=_Cu%Fr(a)YN8MqJeWwTJXErAoD_k>e|1D-0Nh2>; zS(9*Ek*yGJ$O{sEVL6)~VXx>~^bL>Kwi8oQkSeT`nO!Ois|aJc+@jZZdfCU0wELBh z*)yz&C=k+ffI2fQLO8$5`}k@?TI1UlMT%%+BUIUwj|Ftak7S9TGi&xytE9#Fx}70Xzb?K=l5dIUVwJ<1Q5PnrU}bw@pJ1w+-yiReWX37 z2@vUq(t~{dBlAR_YuqU5#p{68Njf9wmEK0$eZ@;e;HE)$nfI}4CC(kvoB1!`tkR{7 zht8Hqwtd(WivXAbh zM(Ga8AqAwnMClY1DFtbeaOfDiM>>ZXVrZVlb>H`U9q)17d%yen^d9qJ?|nG3hjY$z zt@Z!qN8=@mNc~d*5s{g_S1T(G{gI<7Hh>*8u(oDp%4QT>a93;M_Fk_U+73LF0_e}v zR}H>Q0XZV9&EWAqVDt$8kwNHVEoNm1!o1C~eRqD~t3{H_dH z*v&2rx=|vY%2_=qiUyAeoU7{xV)?$M!;6vpc=Vn)APe5=pi*q4>aY;KOwYvUsB7q& zRGfUG(;+gFR7k{5w6@5pGm!GRz~Qh-^>ou+J|G6W51cnV)t6#L+QB!#^8mP^e)@bx ziX4z%G-&#*>l()_*8S*fkhc?k7TOoB@4cYx>Y$;k2}ImW8gD zMw8DQC&m7VaDLqRS37m&2KXn4=iizfkACC?5@IrMYPl+|!r z-io3JCVs5+d}IooV5^#*-_xJ|Q0o8Oh?%ReGmA+o=Ok%P=vmiViZIS_6~ScJ82X@8 zjABg^t~Ud^!}`5$nAAeh+(siq2H^a*fvhcA2KN%`O8hS`^0*L4F@B`K1-o~-h^`^T z>tMNdcJjmZBOny&)8;#q2}S@y7LNa10A@10y))OU+=GX7FK;)d&HYZ$$Td(3STu4i zzK_j39$t-QqE|tN4sE@=+<4C)bD4&E9nHzzE?Qr~2rV2`miqLP+v$5q?ek)Q{WA5| zXD6#ZE;ljIRQDlIUs9(!G(U136!QI41d5_|r}5JAdaJIfN1bX#JR5`gMdg|$@j1*~ zSO9_P4%t3Qg=Cv`=w=crb2Bc*Uy+c#S(KqqxQJLgJ=Cs3JH16-1#BGqSYKL-T_P{f zOZj%F(6&#Gk3amV2~Waqbnspv|8U8;%GczkZ~~-Sx*m-`P!kF6U02=Fz#0MJEL7A| zP*ikoI-MC>j-o*ngMpi|Ywb9d)1($u1Y?xsz2?K1lu3?TsV-iha<5E?Sx zBe?_pKw8m8&6rUdII7MR`4sL=Y7*g+l%OVUQ;Vn6d@ucd1QTgapTafuCIHQ zjGZf|#Gq!7+?X#FQT`&~Gp|wQ7d|8@kzD&p1p8MZAetk_H68w-mQ~aB?9&#~ZA@4j zT|{2NfP>D%Ya>Y?(_aCQKigXg8N2R3EX|5G-$v!vM|wB>=TTV}l^dQy;vrSqY(HzrMu z0vTA3j%^l2!cp?hY`EnBgcS0Y9SbyJIP;rX&jVH z38<^mFyQd+1i(aRJvBW^XgRiG*t?TE$76oyW8S}6IFonKKreB6p8ZU}vgcGeAX56q zIeWwYV8m94*qJ)JFq+_WH8*Bc;DfGoog1p>RIZ7M=mmqQylvb&hTW%4IU)rE`d7)P zB72jmZ2F%kpEEkttPWN?5fi`JC$KKo=3Bu$!#HTVH2kSsh5=0ZoVRmIX)md&12}_} zl>~s)ak*rLg(+`rE;Jq>6f#A`JVUiJ`gg!Gs&e`9x+rj^&H8*k? z_wHuZJu#VG^M=VYkV-QReAN!wo{40OAQg_ABjneRDTwAaPfXI4b_p#9ju${b zml_X>9b{&slgl;zxJJ8<9vW)t;=Br~io=blXElATr7qIT)8skl#!VSS7Ecxtxpy^z z10w2@CerF3*)9qA#i(sMkO`b>Q5H8=NEQki3WT*G9_vKD#n0oOUxA(eGy~F$zaf-i!=>Rc^>YMsicie5NV+>xI!oHAO=Az} z=oA=vXwaxqKtz33#o=x8e2pTV`4vjNSs7M1?e3p2CST+8Ck4MjPlf%l?tZKBtDY2U%3wn9_c#wBRto^&7NI^Koev?+#?Q*1u^AK0V*g zrpa1Gm*aKa zrge<_cTFUf_fBK6rfJK?mEqwkAo9D#iwxIGpqSZof9|dNrkyB1A)cr=ViEk&AuWPX zDN!8?IEjP3%M>J8#M$2d&!`vk1(F}uFsok*e9eqYefdalD|xZ*;2s7(HV~1JelaWbVoMYUE zpn_J_V6}3_3Bs;_B{5*OyAntxau}bVR36IKM4Ev$+VuwRU2ZAM{Wek~1sste&)V_t zzUP9MpZATsZ)Q~$n<=5jO8rW9gp*iV4Kyx%*1T0ZzGxmksE3n2M7Np@0YQu>*H+h` zQZ?S);X73fCei2|3N2K2|)x z@97kBS5nn}SK2mwqpBaLS?n)RIc7#I=*uFLRq?PmP@-ogYXm{#+<9a=XNoR*Vq&76 z1QM)LbOT#(Se^n#!)KnWBmeVH?i*Rc%0KOuF&WoYkEHu%8s@5E81n8$X8I#Ih3!Xr zVRT+0gaSWjL;6o%mDKtd$oaaqqE>4OBIX$vtkuzY7-EVdswMH*@*nzDTMw}0vy&DD zxa}qh`WLFnT5*oO=?&35w{TGg9R;KEMqE<$xDu~-w1v3JaP~f2H+a#dy{~iLl~iO4 zW$}{*dJ8+l7US@lmu;8wM{ynWCa_9tZMNZ$l0R&}(OvB$GUQ>r6GK&;hw z6Fez&R#;_W3_z0fQ@_&P7pG*AXcA<)QF9nkf0HDBeX%nw4_WJ069NCU;55RK{3qYZ zs&|p}zM+;}P8SegitM>A$K|Z3+hncK@Kh#&L>8y}>MXU5jT-_pT>fQ37Sn^tWQ1f!%K*#Sr^DRC()WZg z{-B6u+Fcbd1%OZtHk@iR20sz-IpR|xsDR&|C@2egVw}y>!LmYY1CF7sP=nL62crLr z73PZMQd7VKr0i<3MUZv8go>;hWD2X**r^X%b7Ozm8BmAya}`eX-pb#6p1i3h@aKwV z<$wd)rKe8Zp_5fCBr@kD;piUN4(9{0uSEfBF{yFuKJhCMerTK%RR16#RuFNJ+k_j8 zSl#=*Yk15|Z`pCg7Wf_Q4PuHY6yKGc-KzcUMKW5ztQc|^6%|3SI!E+C-gHOQdAY)H zboW6fw?U>JF67OEPp;Us>bG`1&7d<40ni&rh~%b=S&83@i!Gq#l$m9C;)!EDTxgG_ z9latxdnV*&B6?XEl?64_d0737JUyW!PfcAQr|->_pCFVdd^sagYpQ-I2lK<1@b+!x z&jQwjPar2(Rc_R!$1K9SfFMU<^2&~1U_S&o4|aQS`e%AD7h_Y^_+4>Rv4+Nq35Aqo{efR z>j1tFIWO}{oC~q3kVo!n`xHx?uPpj&B;#e0XX@NjsB=yvqVsk{Zufq!0ZRc*efT}x5)5Yt z{^{?Upq4nIzPPkTUTZ*f@HtJKG%6?xg+O5=my+V*%8>-~0_R)%?Xc6NXW30{ZF-H! zYRZwUBID!XM_sEWK6IQk8MJ}*!W?Zc`jf(?8(v~}{*q#-6{{o;z4a(nn0BA#x>APd zr0%2;dO9{M1;oac9^#+eiL<1OqtiQz=Zm-quN?-atLL4MpD6lt1hRS(%r#gZQ6b-eM^fO;f;One}xZrV$Xjc>>6NO zCaiy^pL$)2fSJ55n(y zp&`>5VCS3xk`(2m(IxJKKH%%z#rvJ(!~lypOq}7_#y?K zaC*rX*K{)OZfn31M(i#mP!#A~8@+u?E+i~MfewPMVPEM*SP33RqSk7$8+>sT3 zVHEYBXS|n8M0+E@orvE;b}sS&$59?SJLnF(rwJAzN(?D)2N8{`i-L6D!#1_f9_H2YFPf@iaI{U2|2 zZ)?@gYsKGT&b81~5zcK3ls~Bc*7u-?Y%hJG_g7yKfyQMGg5r=mWy(iHIsw?ol_Gt; z((Y7cydghKU4b&SHh&SodZ_9+kgx)qh1T`8PoOk79~8a0&!^;61IJvO4~W4$B&f3e zWNfT3Ag`dHn4D&SMCWx7vwc7YXW3hw*&-VQ&vg{ui+UerVKVgJz9^vSXB8oTqPIt# zH_PxCJN-YCG5)o2XMMcVPIaj1H2HqtK;#xcx)%|tNU7h>t)s+BF5w;rCv*)XgDQu{KHQY++}0W&SLz$`$F#OKd7%Anx3W&b1QDhB*CU<*E4+urzD9<8Nsp|dhk;A=tTl!%^1|L7oJxGdXfg-$}{)359W7A##A$# zjsU+~|5ODwR+J$n_7jD^i=Eb(qaBChK7GCq_Gj`v9*y=HA7Ymh3O03a#$j(}(2Gx?#S@XKnvEbep`L+K2nX*e35 zRrkNI0?MaPPK_Y@cN7V*8`~zJ1e}f!z`dhzYkj7!s=wR0xW9Xk5IDAVFyI~>0k=Re zdW-pN*#E{UTfYLZ(E}sbsX;g){%6`iOm56Y#A&DMMR$E_hVMxg<0G&ljY&5EvrLK; z)L5ze!xz!CY3d@~aWOp%0Gh_x9_fRS(X$_(4oWl?B*8^*mlT!_v(B&D$1p>g7u?8u zo8qOdEbtsqyl1;C-DEj63Lo*vmNX#%L+X{P zNdU?9noTjfpH{Pk=}w9@>e{2tCLMl(gv|#fMvLt!NB|2h*DNk(XvD)%_^6m1W<8-W z1uEa8Y(JyV;}<^YPNuZOB;UFv&K#eTXEq=YTdb41Ns_vD`|VDb)qywNziFgOgcZO4 z_)$+&^OYf;if6r6e$eTFd^kzn57|hNnky{)c0FS^K;=WfNc?Kl%FI(;|F(#;@RJX^ zl35R{Sblapobl&PCz2NUVMRXXsBC`YN>v}tEx#|WeEV1QT8lOsU+ zqOsWgnyNgr1+D*kEST>8#u&$E3fAj zIF`gZOG95!tI5kJIzeY`fxN9FSD5h;RBe%kq4ffATmTI}AoUUj&uj9G*!fUkGuz=8 z3w zKla0dgV>zs@+{mJ$zFlIN2+-qj4dM>?|UORV)_1l!S4ILcx(*L3eZy}L=@EbUCAK4 zuJ)J{k%k#xj>>{c`^h1qcfVyQg=Gxs6Xnx}D1f)&O@G4jH>5slZFpE~Dph8N1NB#% zbu}J|eG+??J49B$(%Q_yx8U>7?^PM3vof-$Aglh9BlVj+P{>_F;3MJ8#eTSoXpL+` z$m&BxK?KC(Y3oeEF;FgVBgVqgc``J$M8uHTPRo#=55Y@kT|vGprG#}GC7C&nkneES zKCz7_s3*c*bfw9bzaG}Oz_~@Y+%eS`P0~5NYL9xrv35{;c z9lcV&Rm-THl7b0tq4;X)r$BvQbC(!Oii#k2s7D+se*EHLjjAkIGOKh4IS|DRlwa6- zb-hW=RcBQt;>rqtI{OArVHY_2ShMjM#q_~HZOpGghZ}tp?&zxm;LXw3D7B zDc_4#=N`@Bn=~UBeVO#fC|C^Aalj;H@;650A17arS`l@O)Vr!ZHfj%s^XCc7AVDIHsY z70i<`gyt%f7lX6qw(I6Pds^9t_7(I#iajXeJ0{IglwIE=4GZKN-mvrbQBaFR=;4^6 zDq9Y}u6H?0+9WN^X%7h#gf9pPB83$OT}4WP{@guNe@Vp4{$iuacm9>ma|xOLKS7%& zFaoO>E9J_S;pmH!;T&YcW1*j^FAI=@=jLk|_75UHU zfVX@~^x*}~Fo}i|O+exev&jn8D;~*~HbRn$Wixj6d%^$1f&FhF5j!c!x>A%$@x4ud zZ}I&&h*$8M3lbyqfPyo}3R=B=l~u4 z4agKf1YKzO;xk;=WsiHr^Hsku8Dy-~0O6?tqK4hLK*w!M>+UB|HeU@!2z`+Ck)io{ z^PBMVzfcs5chZU9O^UB#GDBE>Xx0-XN#0#U0O<0W#G)0w>fyK4Y0ZPxoMu`>;R z^RvIeQ~z7d&0GVt(+XRY&$#{q4f^koqi_p+GeqC-5#0C-HvPXokAJ)(2;*BUxkLB2 zc7^{RKVFukIw6~o&=hLAW+Oe+mgzBCc9QH=B8 zV_+RD_1|-4tpn8BZ!L_mgP`+rB=QCm$dYP56D~>$KOp5O9~=jP4Xf6p-(ckrjY~>h ziCCj(UM{SzFfPNZ|4xG+o+ciL|Agyy>C5sS^2?Z7Fvg@_7n^+cG_#ga!1t?p9V-B{pOB zMh5a+{?yy|6fqFM>~UFTa5U`a09kci=77K@Q)&8-!wDcTxGLGI0V~GIwtx&4{3;I& zSW?cAE*#;TywQRjbUr{3GJU0f0wvb#0xL#vpo3^GHforB%Q%2fo9}oxL424au>Duzu{Qh6sfOJEf);0x zo)GS1Zc*d_L#92Ci2+`~8a!hAs>*1YtXox&yUPzp{BPi18DyrXYceO!z+YMM1%+@A zUK(!v@WR+*>X0IKHhBWrz<~?wm9F4~917DTr5FElCrlnx0})oatZ`M@jHwViHJ+ok zJ=8x-3>ajn9x%Mw1!WV?S8g6onQs+3dM0@BR}EC zm^y9G8$d6`Y;04np%+TteMDO~q^{Bg_Ug(=xizFJ<_eBr70#qj=so&V(iyuJzw8|2 z_3mMs{6<;wK84p?axa6+@5zz+ln;hB-TPT{e#lV=0B&9J+1ns!;&~}a5Pw&{njyDly>~J5`-FNSdiq2TXkUI_UhTHeHYaf`Hxx30 z0W#KOQ+m<&-2lk+s&ZP8b;uIiaPFz#;lK;ph@U(EO$OaJV$I}-pnt1mw|D|`;uiqH zJR1X6gRy#;bN7v$MlDsz9zx%p8++cL_#8@rJ?_iK@E2!xP8(3nGHWs)!+1AM_*EJ8 zy|vA~8)4T#qlX1PG~dYx+}FNQA*TbzNy^k}srV0`Is$0O4M85s!``nOTX_ri&EJlgagq!>T6Ob_!n2 z`>dXx+^yr4Om~nzw`U~(>Sspzevuamkbtydl$6wwKI@Wu$A=zil~`gTgPR4j)~ z=9P-}%3uMA>Bs?{hlSvuCuc0}4Qg+bfH6X!ZA>Ya&kRHhFQ3y8;s=GtTgX>WgM>at zoiK-ima%D>d`B4PmvF{@H3Gk;{G zYD)&-E)IH=dPPj?%lgQZ52aJh@TWRNL4Y}VL(@d>9afHRE)*k87xLJNh3%S}Q#ymb zEf-MV(?rf~sg`|?LzaXz2W}EZmjjenR2WOwLC(L(X3%l{piaAfQ8~{*@bBVLs=cw< zC#7U$U6zzP`$XS346x3fgb~A{n$WLr5xIpF6sbXj8hlCxzZUH%0~g<+pLTDq3BV?< z5;x-VFzCiu{;cwj4av^_Jyxy^R{Eq!Q1td$FO&&(i^Np`V1@bsV#e@}&jHHIZk1Ma5@mbgm0Xt7Oi}%Ryo}i+MC~)(@xGlFN8t=l27j=iL z;P*TPJG|&mjDl!^jVCq?AA|^$VWYe-jmc2wIA$#yjmjaIYuL9i+LNCd@F5{aVvX{9y8WbtIooKH5--Imrh9M0RL zPe1&u!Tp=FSa`;-n|M#SvRLWkCHYydS4mQ>MR`HO4t_SG&7_mTc2l#z?}Cp<+Q?|K z+YvXGf{{M*c6{1eck)7>dF9T8ay_Cpnvk5Q`|6y;BnsUC1)7ZbX8H7+C%!;gM|fV* z*)%8CC;8?k3OiHbUa6x3*fV#H!-aX_FO4xd545@MgZ2cS=JWV^#&~1mEa&JSYVH>h z)pbkd+0S?~9%1JMRy&NB&9+hR>HwlV5|4QP{;ekn)J>%G`xtI~Cx-hHH8uf11HI@K zRz(@=#&{TP#h{3DAPfBI3GPR(?N4RmSttI5v^Ye<^!#C}E|)7CtS7aT2|Kyo&xktc z140`lzme*wWB{jTKQ}upSUxd~^2g){_o#5`Xp|_)nEwqsfOb`aqggGvef2B=!uz(7 zIJ~7Vg9uSoV6{$t`NO20ml)Y*w7?HsSpAvt3$FAC858F9^H&eaOa1~;xeC-0H^OoP zC$p!l27_Q5m=W5pw=<&QV%IG(=#1x7WF0F#a*serq`I66pX*{lg}#Y#y(dmhr-14;ysySNPHH7H+edxDnAAkZx@jA z#&_><&@~d3;8I=#n(*g@M3DK2?;V949Je4XBR|nWq3PI$zU6WNti`DY4P*J z_7@W?$*iVBA%0HD?Q8|Pk2b${>V$5JH33|1s#oTa0JAK2Tq21hYIlBr^Nu(p{dO{n*xOi|BUg4cg4XEzj73O%c$4y6yLCR0%~UgYZu5HwQxqV+wPOJV^5E zJ(b1s|5u1r4TyC~Ez1*ShI%c#zJq3{X`dA#B(Ew*&^JxQ$3$Hque@v|G#TYmjZV*5&vg5nL7dv{D&ndO znSI89t|$ak*J;eWAoq0xar@em+zr{pL`_><(_0}PQkTf<%^bXN=!`rLz4L)3&X!rB}d4WU`!rc zUKMFf`(Bu6Kln1ANRx=@$;!DwNvp%;{?&+h}xg8CxGee-3mWw+JA4 zxroigm*vK=g-M%BfgRrwZ7OAsNHN}ZNBX2+agS-~Gg} ziEb2V-lL0h)xM4Wc)&Sr;`Jn@cYy(E@Xe(XA|9;NC%Pb}hUJ6^_#Qkh7jIM3DiwH#|;=Y5-hDND1F z=AHAjlVMb;?}6$gRgnWNL9Wem{tq@~*GUgj@#RX+S1!*o=Z~IlYrwW@EHs}PmvSFk zab7IMWX592SLGQ#*I(fO0m?L=y4xjt-qaHh#&oGv7t$?E6V;P7}JLKk1LLh_Rkg zpuiG?FW2ba?tu&=OI%4Fo;vsr5Vi^_Gv^8u+@9!b7og(4gJk^E{peF*p3SFu_Zris z_DAj7i(haj6N~hNi*Z8};aS}IetYtEZ>xR}!L_|;IQRJJ^6FKyZhOaLqU#(&z6Q^6 zmwVL>mSyhst2^UTJUhbl@f-JWTF$WWf4NZgSx-RxTv$JYIYb{H75JUF^$eY3#A0V3 zbF&xMWKTSP{xU5Iee=dYc{N2oT;RbsO1GeU}5-ggYrg?x~eWSh!y^8AC3M z<{lJ)g?-ixOE>yf_x0lDeSNjT)6hRN-f6JqPl%t}FyB7GjUG6-wPv67N8^C-fUyP# z^JgY(X81U_|G{gP_2KG~9h#y+z@r&4eMaOW#Q1^TaP;Hz6@=sd_SUVg=<~Vtm1-xG zg`iz5h8?pI)#r;F0B4K2HnNJ)R?A~;2sMap+al(WsC5$gV}9Q9xbC-{g8tS|51(mEfgR zVDakLPG0Y@NEjxBhxumT8I;Ot2{CYzU) z`^%@;M!XK^+!%>dEY@F6?gAenWL-@G{{QTi9_=3;b2dL9vYHjRkWPhlA2Z|bw-A8O zPSAb?G#iMcE%zp34na&tG&te92;YldR8BRDF}!x$DkK3`P0=wchXx&r+k8fzYrlv4 zE~3Pa0>y08ywRN^eH+n2je)q}=OH~Hby*>=hc+jE3<;?(%RXx!r@*+NDlgNp=za{T z+;8`eiZ*2aI+Dq0ayQ0MJZ;TLgX5lYRY2Bnpr#?`@Fn9HSW46!Jmu@#Y#sxlAhhH8 z(cTrha0aGx(0csANLGwv1S9*z>uvq522qkepMEpkCQQYuP0Hu}8lIaWyq{0C|Ilwc zc1HWjC4LfWx;cyHzZre8*?+-}C5NR1zHJH5f}XGgbKC>N%YC8NjZ%koyhBI`-A}I7 z1oyo0>x&u3>PEi?Jf_`e)S*}H;G1f@o7%cQ+#n;dCgo_~z-J|H8%yt($eyMHxw56y zYcxOy9fU!{=AG^G8h{TyN{0H%)c=rqWd;V&k?NIkqc&=iXs7_WOOd_U=cjF%?`S1J)hR*SL$>mE4EzQ7ZdqUJiWZ zT!@5&JeWZto)6LkQUgo-Ll)e90xM}5CF9z=fmCN%yM&jH%A2+VTh*A~1=O7jF=CVl zcwLc?g?Qas3|tU0B4$3IAl6Sl`pk>=;h(Bs;&+L9Qu(TOr<%_7MVwthr+WUMewHZc z$-{|``qS)a9E9)*aE`5aeW9%5+UE#2a4 z?f}pOO|*F3;iL`u81!=CmLnbrI_nv_KhPO;)dkGA8O!odcIm74lx;j4D18@>aY^&L zfJGf_KqEGNW*#WbFc$gZT9hQ=OQUufNwt zx)>_*TJe^1v^&pDm03(9=FS|aN)6da!LQCFT_ec#gi>(G@UH?DxzupuNVrS$O)_rL zqh>-LfKN;ol|5!`+7r5zTOeyXl9{~Y0>y^fHykX#CvOfY-i?kz9;YM2l1HXUB3YB$l&-^@qa{pT+8EMA30EZFNHH{MsQ|3D*?v<}7;dS@@I)*TI|*;*U?x zft)h)NESGCy=PPjJSueDGdQ$s2kp6M2j-&(# z)tL{xn-Sj8&3gUMUa!aAypCC1EUvGAeCRKgp*bnUNug-!-VU3DpiPo z`~6ci;?**x2VaySIiSmJy)lg>+m>qz5>K1?&wJYgW&CMQEE=JpIVAeTHsiVBqXi&D zBC^-buetB-$&2+U8oGz&>2e2&!Vjy3P$m)z9F=ERP0Bl);f@AP)kreByPcZTAdwY^1Ilk-joKk6Z(gg46B z{quc~K?^_e%ma6egNb_UDTC~r&P#+oTcNx-LKgYn&Eo&;W%2N#qj>(0^={37`aAvC z`?h@vY`s`I>-?UYVgKL#&DH>aA~nc^iVq6^?CADi$Gcg@hs@WLFoU)q%1H?R`HKJ_ zM?u`|<$&H3wtqO7U5#%Z9B;C)wPqE6yn<`|gDK;G*0^U+uRh}&37an!|M2mg&_hLWT}BW)$Hm2&DRFLw1(jP zQ4Oo+UmQX>vz|o=kAsoy_LeCJLZ5VNifB(Ho9l<&Uxoyh1m~(eg#71w`|>XX3GKOMqu(E36+bI8Q_L-QwJ8!xhmuFTa#6TG zLO2ee+JE^G+0=7c7o-!Cn;CS0Ox*kVzm17f!{(D-=i22-qP~7OJCt2d*%_?<~f zSxdPAqdWGI-$`SkgT(1EC>UVh7!rR3QnWM|KsuR?tx9{2qkc zS>8_hSUbN5pQHX+*7r#tp2rKI$NU5iZ2Y6+4o&BR_EoukcUq;9@S-u^g}oN(ZzVTUGJM^g zvE*A2kZgb61;GT2k4^37SvC?PA&|GrU=C97Y|hSZLiLCy{ltm!Um0Q#1Vj_xxbt)K z9?LYx7QDbxmwP-{XbWPrC@MEbR4^URS-Z*^_-mGtE9C3;_~Y|9R@=vD@{&{5CS1**VhiM5 z7IPg`k7K4MAcwvUm#dxt;(ZecgcyPoA5#N(<)Q@3IIRZr;2_ct>L=XDVN_r3UzLpv zBUY7Xnrd{YvoLr@1uRK#O?KxiZhXT#1gz(uux&5s#&_kICL6z;B`{g>O#IX*x5)HS zS=ebMq#CWnl*kOLZ1F#mO_if?lHOt7Z>$p^CEsbHi{|G#YS|jBf(H90zU!j4fK7Zi zi^8SyriQ%g=T#A0%flFmGYIigdi?Q+gXxE~ZvxCrsx8hYCLr&|u3YZRt8!zR1rS7j zN6ufo9b}X=!;QRLRo=dTvTy+Y%a{L`K(h)Md2m8ha9YgOi3ULWpZpl+j=!keX7$Gq z=RN@@lA^QCt-}|v#e0pw0n=*rI~#pCwKl^VB|?-To430;w7M=>;xr3e3E6AZzPyQh zmAi9m9h8}|ki@wRnDA#FA}`-9YGn-b9}Ew9Qmld68YHNV74p*l-CPZh3h-&QqZq;U z!e`7I9$VVf=hT}kpL5M`ks*7vb9Z&Vnru5x-@ni`aFXda0E50W%e^XExYtf|NL$0Q z;OR-!U6vTktWXhR=3I-}A!E!zrO;$Z2)B=aAu_{hbR%E|sA#e|L9oU9f`U_R9g)az zrVNi9kb9StQ4U($j5_07)R?1*hstk}w5f=LbR3@NSY;;dlnIG_c=tn#lY_<-B$V6X zuGerW%KR1v6*)GX+CE+3g`9lgQmJe>IAhoGYvAccQ#sfFAlToDYV8{ap3xk$%ieVeTS*_&n1gfdvYgpB2OKx=Jw&Am9I=J;akf)DKI0`P9?hz( zhV7+_w300_w(dYS?)9}tLed>)FO+<*lc@B9Q*XiRF4ix|^(ngb^3O3sTh;LQcuene z)um2cTknWPxy6XM8B7!NZxIR~3~SPKcgWV>xv1$E^(yeCiiLO72$su5^Nb07{0=_` zH*0}Y(l(m|`p9m>s|xuHy3_vg0k+h}C@IB&&06)MjlVk; z4v=eiRcJPH}>jxIkp1O$79Sjn+;6ZpMke;dfcD=Xk4Fm3< zHQORYZacT=VR=mD=%6yCt2CPi5U=E}oJbbJkcub~S9x8?4A1K2)7AnIz86RATT zsgA9kXNWDv21?n-pZly`oB(G`7o0ApC+t1W`87J(O;Xp#ANr=m&i9AnpKgV3WHg;_ z)wS02JpfW5z05{`=HdPAwSr80(4hC!8wX3(^bSQi>4dAxv766>X(JHPMenIsr~i|= zPInbjkl|@PuIo5*`|I~^jftf4t<>(@-+tOu)rcOlOsT~BY*v>?SrsVZPgPt{G^~S3 zaxI@}WSh^AjQNYp2(gzv+l%&|a}5|jyT+-Zr3TFLO@<@z-x!Z)x%LHeGo00Xf|gS5D2xgJzew1*SC z_u8r{;I!!5T&y-A>7tNX-)UtEB2MLeh1*3cp?1!ul&MJD(nsSvVU~QLIN*G3+I7tE zMY$I})*YsFZiWCIS2?kpNr+M^0wceZdN-7F6lnEfx#?7L>v!dB`^=n>-h-!}fBa9$ zN%Ht+Jw!-!B#A|))PK?3oV~pGQN&Ssxnq?^D6;?BbhMeYop=Q&&33Yay-U;avxcwC-5q$slP;+o*_ay{(-&~(;sO+9`ar#nP)(j_2D43#cHFp!}rJwj6H8r}6l zy1PUHNonblh7CkoN@_4-#E8MhbNpV{^B?d7JLkObc-<%OAFzpTng)ra=9=Yl45)<6 zWYC~1q43VjlY(atk6xrM>cI+{tfwu6V!K!Wv?N5KU{kR(=Cs8dcy%*mTm7pBxPm*LTD>Ea|QqN}{4Ma=tlajUe?IdzW zvp-fS*ab1TYXlDcAsZNF&>co7^6C7s^Wf6yp|?c@$_#(~n#2$vwHm!4;B&W!@P_Go zjqRwf(|2pqyF+Sn0vt(ZIgdLSj;u3nop0p z_qi+IJ{{M=^${!i{%5|(GYLt%C|$?l$j`YdvEdrJywpcdb!LTS;uP(IOa1<}`=@L^U$CsbQgJyxJ+TF!9)b!bYc;?ki7X(NL4O$NE0nq<`UpA=$S4na*#8_7N#Xo@A zZE&Ga<;4z=jRG!{``!;a>GUlJIJnveBp;$?ohklIUovVkEW-(Yau2g;^N@Ag)36ez zeLC-8)(-WR$Y?i6T!8*Cx3Gk|X$+S&vPWE#jYyi08FoO=kAI+bd#<%r6$h|@9oRo7 z^9m`0g}@aqtr|xWhyL`Og#H=VoDPO=A$zQIy~RgjArkQ*Y%pqz=j42=cFiyM4#$01 zsW%)R-8!a!7pmz9@5{tGAwG-iYE%tO_<2AL8Mu7vmH)7+#f( zZjPtKKgmyyN~YMYOXN3m$+&;lcs|Uyxswx|IevaT3K3E|dn*w1i!!$?X)`Mj$$Dje z#$V6=GG+W{5sJ+bJm^0$`ukE-=%ku=FmL-Gp04M-X2%Ry1lAwS1Mi}v-DKy zZFF2*Ci!fRs)|-GF?*M|1Xrsr9Xfe?>+z^LP8MtD;i)s^`Md)-8MNk<_Y_ZFdYNz2 zKLViF!l90P-g3d=dTk#jV~(aabAu(#`q5&(fVP`pfDmsaZ!k!^0=Y@&XcIuOnN84{WSEKs&niien zMswLRps){C_^nve&9!*Oyw6iKOk-1!0tQtAM<8&Z6eoeyY zZQ;iw_8A1N0R2&IviLXDdySk=cV3$?@#I-u#j&I8BT+91? z7l5JE#$Ir9&Fag+o}i335Z>bmVS0Ef`t0{}L%Mr((uUsvhd?E_%5j!9TS}TJFEntW z;{=}N8m=R1(nm=ALWKfvB(mVCFibV0Z@mz5S;LVkUV2#-zjjo4-w3xh#vu=LSS=To zO(I<1Xhj9G!C$qF{}xwSfb0DCr0q!Az3fJIh^8jjIP@MV71=JEd0`@h8U8rK5@*xb ziXZb^ySl!FoLYUPQZNHNo?%yTqb8ZbiIsf5_;(X>H*5$w7foPvSCZhr96;)K7ghQM z9WL%QbLY)lb$20(p1ynKzaycpxv3Y@rB}PtqU+fN0MJi6dTUtCA6uK6B$`-zgXd=q zDoFLlL>1F>9cy_t7s}ecw%2?ca9*=G7Pmg%bTo0xkmbA7iYCy?RznPL2g`9Qn14uXx5 zz4?UjKX)?#CFpOWtdD&jyiFqNWci84|AZn_nEoU@w;C8J~#NVmtwlOpTMSnPsu1c?&Mp@9uaw~Tp0gQQ> zP#&vr{wf8CQ!TY~>rP3cZ0^Ax$a7)ynYK8zU3mB^;B$OMHP)`~X?u+|!aMT*Ej0JN z9E<)>o36Xvt)AlHBcbQar9`NyEtkmZ-^oZp5_r&fXa zN(%(S+cjMBF$$6XjB7oUEHC|Q21WMEhC)aq(SAyTM@=U|{t=62(n(AM@%h1v=r1n7 zA6+&v6|2ea!2UxS5FL^`-C(gfN_>|XA>~WgJI-DlG5azf9BDoIMC2?Mr+6oq0b%g= z;H&N0XGXi!aK-a>wETqUu|kvYvXNvdAUq*k9Agp6T}|6wrDms~ZhQRlhj}Q5!>IOg z7dm1j!vYQ!m1tm7p`W35`C|sS;XUSs>%lMb7&ar~Zs8tL>xUvv#%FWncV#!Hx9L;H zJ*Ac9Q@bz^ZZ^;EnZCnVYC7)JACGMK!rtCpL0IFKXJGxpCx_R2I)RUyjh!p-(473Q z6F$yVgK~o-Kq_kTe^#Pxh71AQMlK@WG+X8i{XKR8~n-*@Kd_kHj8}nTVZBP4&^;U<#HkwhI=LJd(@xd z%Ygz;st<3R1~FEMvK1p99b-akEHF3_Z;S<6SN?op_g$(_$Ei7IRB)~$2iNlHL0QjT z5!bQo^G%lnosZ*PjeBh^sgH^SL*lmho7}p9?nbX3^zi)AK-77@&fU0wzH*Xbn&@X9 zeakt~R6FA?5kEVEd|cD|0Gq@4X5q+$z9B-#)Y^lRj?43RQrt_imM^yBNnvDk|C<7@@i)=x1Fw(}bYAgRsd-7eBHvH*{iiM3rk^K)qZJ19=5)@unSn^c_ zo04?5XZk^@S~JaT#oPsG1g-Kjl~1zO*f0Hr_NQk*yJ6}uhk3uJceBQH-Js~~#o<|n z_0~Nn4Qu(b^LHRi%q(5@Vs(B+s(eF;#>9xu6Vzkl=855Y^qVN{t>$+f)z;TNerA}5 z$~lWGud}ZIm=lSB$;Mxm#Az>%Ay8^urH4M1o#&x+*3cU8;dNr1CKS7p44sn2&%HFdx0&4goR2XWu;&&J@ zDHaIprDS{)+B4`2`r|TvKw5%nlE=lv_E}CpZl#sYI`dR=1#fceC68 zp0kFIW|P2>_0eKT>ZSvKaXrlz$r{`31|kl3KvcqNbB&@Kjo)%2E10_rWH-k?kZ(jm z@2WsOL~v_B_*>x`G9VD8Kl8|cgbMbPjXeDf=s#pwZ6bvitE=#)&V$k>h;z5Dt8#X@ z0zEgTt8;`c#gf-wPKnuZ`*OF!1h=fRFuwi^L9Fl%cD4sn3?Cwmx`F`GAj znGg9`TKFlCYCb$wed|9sAm)fKH}=AAjoqr8q|0izd)=54l%S}gp1iWHbbh(NAXv~L z`casmD#>}H%Tu!^u{~+_t@R)`a}Rx+vw$%LjWv5bO_N$OjgqYF*?cYtviHs{RXl_r z%B~%THib;I?G0P7Hj0kI_-{xXvqQ!j)V7xWZ2Pkza}fWUW>XXK;<$RaTt(oAw!_;3 zvBT{$x3m4fPAvtTFC94yFy0}Uc8?Oe87sYGcD1mg!81U~3Hz3LUPR)NobZtGzSYek z1sF1nn518EOx$!jIFH|`-ah^zrMPXMW!tt~o^Jv_F)Xc|UGo(!%cxK;xH>Sx+rR6) zG&(3nwE)ZSTVUK}-c=6jt)3Z5<|sCh0Ng0fuAq$4&BOS94z<8%EY8M0YT-xw;~)j{ zBKkGW_f~>BicB>xl|23h*WOo@YDK9N*ILu*dWfxMKU%W*60Ju(>1()@kLxBE`^f&5 zm&Zy?f`jq{{5fd4?pYM$twJp??S=b8jgUgd-X>xj)#*R<)^Q0_q3(uTMEy}xo|=XC zE!1U3Z%=aN_VDvo&{r{4a!$7uUuC}TfbO#uz;Ke8obPnV15z(*{V(ghBQ0?K;(@jJ zXQPK4^Xi&rh)LypNPMj%4BctOP=9a{nM4Z@{ z5#JjakT3xzCDC&X{Ou%H{}uALlNIb!v#AV3LS}p#+_G#hIcO-FTsh?96W4Z{X_N+M zdh%pzte!TmN4(}InEkYjnXQ!vQ%zETO-N~2YE>^r7YD+BY3awmNzQxLDU6EU^>>!A z9IqpPrMpnc?^ej^%{8vqbA)@MXWg%q(Gx{-D^4wM>s`U3^%1CEcADHX$#cZoWc34b z_VrsU3a(`Z7_QvA;M}rDC^z;13V9q_wX{JZW8JK z-Snv7^ogq4qNzXP_DsrsZJKd+K}GU)J8OB);xF zAtrq2H1;pb{#nMBlgoxHR-ddE)9X6j?xbMZVMM)qtL(4;$OXr1k46wPJhU z!a&g8n+Pv3SpnSrbxohwdLg3~j$L~ks(3MLa`y&~H4-`&%{cmoz&@wH>%1CXRlE;t z{TjFs{ncbEZTCt21wGz^bEmm=wUfEbc5{Sz=dv+G+;G$?Px9f^o2~KcKC^sz&%~Gu zZr^vEoPqA#$C*bTDcM6OiZ!`e>fn;FfHY|*%~=K9sZ*Dya@p;|5wYBw$-iF)0(prANc!_{KN7TB}=X}`HzpX92 zQjO0|*9oT?UPTT1Z}-kX^37%yZ0TYf=?2sa(!RY^4i4jNi`adXdWd|kLJL27t|^Tn zpDWnl{eHIp%VDMit80ccyv|(??VJG2t2DMi5uW!M`;h7St()aAMeDY z^CsiLM$YP+8CnH#f)wI=RuXM7opvT!1)nXiUAN@hAZx)&cMVmJKR@2JPCKlqgq8!I zjli`D2LH|L%;7K{%7&sg6?79b>l~{h4DqS;d&VbhoZP9Z-_Ks@DPcYGd~rN3Fo}4k ziDwFcrU5i8PZd(`=SW&}(GNA^WupgJcPkk@*g(G8blW9h&^BsehF6(mILZ{sV^~nj z(x6Z7{?g{WpFH(MQ!`i}`*hYr(|@DXt`x=AjLl^Wg?z8r2|exKdbId~`|5 z=%<6ErlWxiFuL+Q$S-oufyOgfXv7(|u;GVQ|B%RhcwawW4---j6_;2M=jiXcx#}v2 z>E9L)JUY3xTvtb`iy!a0TxyCfGSz7kG&i@ioakowqGWA>v!INJSk2ZnQ7ux=EAYD^y)9^@!Z}PHh>B_fCANsX0!qvcS_cNu?Q{ z6GF^P>vlaPhn*W#;u>^%%|%9p4FKjP!`FaWyVN1rlc|9Yr@Y`7jRQx;dY>2rlj;>@ zq8(1S?*)hbGn9$;>xOezOk_##aoN)i#&fa;C;>s%CVLh~S?TOIp)*ED_Z7114}d_! zQni06>uHMRZqCZJjqrb={TEWE)O#9k4eTbqW*LEN5kLsh5NuQOQ*PW*lHwo6f6(8% z`bkiu8fo>vK%u5a!6AsvE9j~@h*4SjY94WybhmJhVQvY!FUMzTy}ruWg)#2pjIZyh zd~~hNlE>4c6c3RnQ@XiCY#%tBe;5y1XJ4TZ)FaDQ5wN|ZgO3*Cf@rLaTOfDs$tcOT z(gG9nv@W>2nb=MrY^kH$+=m zj>Jjh@7oz@CvG1;YSM!TA@Or5XHLR=fE*9c=`Q7H!|Py z0qUB3X?-63f)zu9Y^ZF?9+kUO0cS-9T$IA3>{w~DGqC=4E0V_EoyAXf?#+x|UlLQ7 zZ8XWc$#jtJ$U;GmX^av159aU2S4T|Wq;Kb6g~Vh{BjNGkMB-=K7NqD9r$V=L~XU-}*0w~m!3e_TnwDRbU# zD~#yEuk(5|+XNF278{&nVDoaz73NU6lBO(uH=buEJ+?dY-kamnD;)5j(#y9brr&rH z1!M4E#RIJhyCSQ_m|8oU%#-+ z!0|`3KRITJS?w}u+}mB{RTvEeQw}#kniK6l38mP_0=|{7GK%(~zl;U3jajoA9onrN zSz4M8ZJE2i?bW}~c33CIxOEnbwm*?o;2YKU{gg+c%`_AbI-mUQ)peCuMiz9FadRBg zvt30$`;>lf_OdeJP^hF*I_ z!P4uFry85Pu%gD3l!9x4qq^}!bZ3LyuV5TYCXc3H#u7`S6BK6O`wp{w$6k^6W~$w1 z7_SxWwKdyjGJdY2dJ}k@QgBys?d$KsB$3(;+?t67t4Bg5t6fE2=YNR3q;!w3#c%7{ zYF1r@0wOH6Ke~r%+zZqty%^qVeUP&cuhd_M09VAUFE)R1U1G2lkex&QKMW~h5EoL; zU%b{5s_T!8*818Xk6NsM1;*j7IC;Dksj4)N zN$yTjIpQTVBBHirM0zez>v2cYcz1+1N+A>~s&EcaU@cFvh#D=g*BZuhkKL4W>w^9U zt=uZZqa)OM`L8-t={zit{0FRj7O<3j8mq_-6md%}^M0ugiCym&hG_`i3=1`_zXE8) z(E?lrRy8d%kPAgr<$08Xt*(sd|5DLVxAE4ZGfvj__x+#Li*Fwyi(3%<$=VnAhnj~8j~iEL!Y0|XQJ+>4jm@7) zeAh2+lnAC=1)}tVO>u8{pv4ZOx7=fC-Z$8jzP7+q&=Ri~{{5*&0r$mkduTlT{KPI* zUwxCbFkEn*nD8bh=%@vG$L0dSsVdTtoM=Bspn>t4o3H(Y0M++luPb&35>)Ow`IPnC zcpa|AewoaoBb}F4>;9~g2U({lV2%H)7x74dW^Gu@*M&B1yoH!anxz zxwjNyzf=}I4=AMBsNE$Gd(-{2B&ww;5+h}6*mbsmHOQH%kad8 z*KaBgsb?XAmdk;D_J7l^NIOqYfYQ}nxrsx?g>>h4wr%!Xl!xTXxE)CE^O6D;y?EAX z$}wxx)fu3h&H6c8J2-nPtS*xj>+~-gK!CbKKd{jl;J?r^zS{_Sh%(|M?&8-dVA%%$8p7 zEgl9IG3oq;CXQjfD=!&x!=%9nz&6v4bzyhL@l4(0p`QRX?fxkNrkgfV|3_{{hH9Nutr%fQD(h3GOh{m2q-8r;<3BwR{KswN=$>j%U_KT7XlTlM%eUU5!Xb4=W zNaFdcXJ~=Qd{1I&5E!Adu3M6ud5Zi{d&ReMh!E;9KCAYG%uEVS246<82Az6&7qd&u z)yGcJnIO5dN4t)c+_MK+rO7TJxGb~3G3Yl(qaT}>LdfH(*wr!E%QKe~nLm;kT^Qjo9a-*bSiA9rc6*n(LlJc@3>Q+7GB~WTObd*-FDM zcbn;yetcvVXZ#VaS;v~d++H5mgnkjQt5RWb+vil43wiSWc*N zPTUHNE-i{;;6J0f4BjrXXa&h-#AO|QYi|N-2_U)vUuK-$uP@O>{C>0SM!&dGfa?VR zuyd>8ym;#HROw=p)q6_wl$bmqWE*vQ(M?Pr$wd|9y~i8%R{Xaf0%-i@=PxxZO~wrL z=BLbA&`mNf{3M?5L;t2ag}4=%moL#@9oT!#WezzAM#&7!JJ0L^u{Cb+aCS-5{H50{ zR7%&ZAVFRJF<2>K22IfP)pe2)2;6*Q?fNjC;a2sCOkni+feXoFC3noU{-C^A=~or2 zbg8Nrzg|tWHnyHG!+N-wJtlYOLrm1xcbnreK(Wyg%(Y)Q43xHnJW`8R7v*>P{T`q! z_SPISiZuxh6_}j!BrKjFE4=RphMP^~f$1%5H&(wlhOg)cmQ~e`o_#BAUC(X|OAuN4 zF#qpoGQ-!!c)bz)DbOHnnSOf#FnuWfOxuVFG2=P}*4Et{y8J6fIc_?g*S2#pOZ zr8;GkwPD(#E;+~{cVx9^tNk4TZ^q8X)DNJB?ku>#FxI?SRR=nv8T79k26F^nAgyXl zn1^3fPcou!_L`+ix1OzJTkBU_elOUFwbU6_ArQBtnus!}Eh;yw1?4T*bEj}SAq>m2TE%pwpQo`ul z2i&~Aq;D&;d``CR=2s5FqSTp+#`;%6`*8) zj`+=!*_7cG9z*h_oxe@ zpng7Pk6T|7T?Om#89|rIVdj()B%Kz0q9Xj5{5cU7*R(uLg!uKSOD6yQMU%sq+kUsr z!@tq+jzxTa{^6&C1WR~9$Qu>IN@Aiki=-YR=FPWVOPrZu$o+rL4^^=osgJsK#nakX zGG$>Wzlj>mDZc~BHnV6RV&1Rf*pEX0^)J$JhyXQH>hszkf+)=`);@zSnSy`)?uNvS z^EbJ|Ea=KWn!)<;Z}qR%is;BWR{JfdUo&6IMGm9agFmn8=8Cr>0l{RPxtJ;J1#+Ks zi={q_HS2TT`R;&wO;i**s+OuDD~vxuK@P-Isu{_|E1{#po+=4v_pmF4|NbU)F6=ap z$YAjtrR`5l1ZIZ%B|3$z04|*t%5oRxUIq2$o2#Ur$IhrM z{ovMG`TeR4fUbT0Pp8^ZRo$KBel|&3q2l|}2~vw8ov$RWtv28D+u91WF3@#7l#+-U zUTlc&sc}`&1J!e%I5vKZ)~dY=37(wM-dbB((pA-~8D8u0)~6ZXoDqGG5}l%6$2*H$ zt%jMR+l8@1mpqHyHz10)8Utguej>9&gSEjoQbM^~7bFH59A6-J1NG_4kc_69YeWO< zcknr=Xm;XjA@8wTZ8`%lCd%tUlT}MR0cjgZ_#II`lan@oyhWSpM1G*#Z=HB_g-!mn ziGFFK#>AzE{Czwr4Tq)`C)i<67~GYh0G7WH92EY}<yydF`8B2suaK)u>1DD(}y-f1BmWfjif(t?tl4SP`8`1 zlYso9YOK77s>~%3>e53hNlrszzvNHRTi|!#11xTQ2cbts>{3#};PIt1`-T>+pg^hc znd$&ByM!K!g6?)ntuevQU@tmpyU}Z#?X4ua;#7t_)rKC!F@GY+-(b?s9W$BgCr*rIKoOJC5c4Cdmd{dAXO*WYmxCSPhF z=$97Eq8W?eB_1s-|yK{}Tt;pkOQG%v0#*p4w#ffbj~ zFF=Z9IiB-WrPZcWczPSESop*VC6w#5gtZxBA7lnealTur~6l#B<_u%QQs~w z1B6$+VhMdO0QhLwigAoxMgaj1p6P0X+^M?ov_`!Z(ly|Ah$$j!P+KtoEDbdC!;q~8 zOZ<_@F?UTf@q1eWB^CH*AKWA>N>wETUjd2d>{mm}2PYJ{D^a;|bPIB=OD`V6%%UOcMXhj6d=J|a`H*fwCWKkzy%$WzuPCr;gr z6UdQ{MSL9MU+){7t#XgW*3DV#IQO#6Q+qoM#Mrx}d7ffVaF_A)tK1Huvt}z>LGDZK zJ7$pq=lcNj4!4y!F4(`Y3$0HzRvzX*KwK#w&F7Fr0}DYXB-;|vFec*y z4_dY(uD{o(alNNK`amOSuzpIZ8TyMA88<`dlW>(~z6@=H|xkXmVvS8Vbc4;EI{Ry;hA|jej_46Q75Wq6^$mco`0mIv+~InoP;))pJ|%hLZ_Km%m`aN z=d~D$XFu=M(AU>z<1W^CN5~3iL}O9xQwx5gBX7jeY#xC3dy#J4NGQ%BY)5Fo$`oK+ zCo3kxx$vh!JpfH{ zCx-Qb6Gt{jF$uWyJD_0v4BI#GlNvwdDx#6l`7`P-LnhZ9G#y_!@=Zf>_|ubWI{XpZ zCi~G{g=}37vm+VMEC#A`k>&R76G?}UUUd*p0nMvV)TQBvR`ht``tbVb*kiu~lY#ua zP~&yTYJAEayh2~g;H^eIg3?;nWbnaEl^^d+v%R70NWj;J>+)72QTnhm$!oS}b@5}6 zr!mCzWreg4f#F6?^~ifsT-J^7l`&e778x7s<;zZkZErddT-Az88_-!RD4VN9qY4XQTWZ0{&W|PC96ED%E&ch1Avr$dcJf$2Dlv}x( zzF@%S$;97(9zQfE;n04Lvt53vtavh;Z;WohdUc%RuWXo}p>NJ3>E8sJ17lnhJhmk8(Bq6x~K6i*K8{DQ$3XL|E#;sSDVJRq#?>0iz* zx~j<=OcHUp;;*rSdp?&o*^7#OWPHVFzLTaK{9^J;x3=B>7-W2?r;An9wkLe}Coiz+ zbbh;?>$*v{u=iW5PrW5nGr}@~#$0o?2N@Rs-%RDEoJ%kpebll=R9t-BLiKvd9YneT zIi~iW{oqE~>uE7Ax{=DoXK)_Y=t8>gz<5m0_x}Fh|n~E<{ zPb~g>$o@VrlM%%VpU7+B-$q-vCmgsO50{d>%2}krCL5@U7X~H1+^F{hY?v6gfudLT zssUCmC6Z@hD0Ez@%t1toEzstCUSM*|EiG3?dTZoPk=OKgmA=qO0_S@I=iqZ7$@!?N zUiwLpdK)vR1ML!S&T_E-;LO+BqjEe)6gThx81)HbE04?f`2(QY-ggdv1DY+${tuBX zP$X-sK-8qL?>tB){g>3de%3OYzLUWJ^$nT``*$R5dSRpcCv|z91r3S#jPvY;53Jwf>f2!Z`*i>AG=qt zToeS_OwhOAxhavRial|!wIAm;4yPqm{siL6-(NN-j0fs$m2dSia4oFsiPZ`GwX_yYGqW0i^eso${DSu%#NcZS% z>lnUP`%)Og@SS|8dGBMZ@uR!=Fh^gppt|iUd)NbZxlxacdQ)U20GKxVOF2EvVdv8u z&KL^YDfRCHu;f~9=rmz@%YmJaNFY1Pzi_OE7jnB(kX+e)7`I#%0+fM7FG%t9E5Yrh zsEe_7+W1NPNPx23!HWiP19lF?3KkN+YSnH2bjoDd{RaaIuh4+9z)Hhy`5h_wVnkXn z-=!BhRnZ-Ki>B|rAo6wvJ?}t^%Fd{Y`K=e>6n|BbB+Mo6E5IuM0X2mk$})g!LAn;Z z8?&QhVr}_)j&gQXyh|ZA=Z}+F0n==nXvO+#8Qp)8#8ax0(|75KChgv@WlA4#!9{=U zkjP|%&0XBLl~}YQLSbtW+(XSqf$vjKwv`!vOrvfpr^~fWhTK(X3;iI%EG8R7C*))zLW%a_E-(+9wSuc}m9<6I*Zn`_9#q7e=(SuP6N!u2l zt#ZV5+sbmbwhjmhqJOTUF0?3ABBC;B){F?%01=_gH2S+kyBx#Gg7{7WaBgKsq7A# zeT2L~@yG#_jbM`giOgZ=Q*A@R1RNo5{k!Dg7L)Q$OqBaXzUx42_{uJuvM*_W@(ImK z)u_j5$)Q~ge}b0Ks1$Uk3q~GRz^1;>t+g|5hM^Y@ zbf*%#!dJ;8GIykqZMD73YM#P`pBfYs<}IJ&7Y^x zRHpXq=+?D{4M^=t$Hu45B6);fd+SHm>Y<)ILMt^g%YMJHmcVQqa70Kr-AOw;BwZ6H zKFU^UW!O=P>C0?viiNh#yvoCmj~hF`)AUX>OZI-#+{=K`({pR*#>APPt7f5{;c z#Q8^ZKy!D$Ty^R|av;qINI^#1%5#;-QN1ld(s@YBkeo))Y=NAMoKH#74*RzGQ@e)n zZe57tg9~d@dl%~mlNqagh>So$a3SB2YbfN$K^*(uorx2>18F_NG?B($56@;D(_)sQMBKe5iu~O%p_}+A6 z-ey-KxJVp`(!q3`y9RlX!ipfiZ?>onrC;ZpOzO*2qK#@iX9J@u0L%4jmq^Dt$f?t~DF0Ia+__Adl%g?4Otx(&5uuDA z3sAV=kS8#ky=hNBRc&d#h9O${%mhX+1NUm7yj?p7EtO5FD2Sl~bs{|slv1BezWVFh z5Q5HH{4eV2sHToKpUUqw=iUonYxe-F2ir2X6`l_$Q;IXSz7GIj2V8+-ZsFGx54zxAh#aj9(#`@mLfX{5 zvN4fs-#v$3hfvo!mW4Rn`koe?w@Jm}-OT9sGI_g6U}B`^Q=rV@&g#Y_AWPAEHZRN! zipd@PII>`$-R#_8Zg>XMYfn6^_^W%5zYA$I!wa&l#2go=1b)f2&p+9gR+LyQ897Ex zKuLNKauw$XsHQw^Y4i)nRo&a5YqB)xh;*}Ur5dhz3vJb-^KiIHrC`RH^Mdbpv^ao8 zcsw8+Vg>T73zy(sZZSM2F)#h@iy84^u}E_qFWX@f?qvCXB-5)QVPi`m_-SHW z9TrYgvcTPKa^Ez*vsGsw!in?IGZRq-isqu9ps@MPB6Vw9PC=e2!eVOO-o%L{{C-&i z(<5!If)Tw>8dqH9;_N*81$SEIXA)KgBK>c0=YoRX?_?gx%v&{6=g#%NUwVBokzy`L z-cq#zlE&>bDE#qS3HUaCRb1wq$J#P$3b#^HaGb)a-!-|k+oMerx6?_$VeSp`7@63lnG{OAdY;up$0mY|HTR5taWkSfIJwFTc9&t4F%U^c zl0bC5$YhE#hj{qDkV?tUgme<)p7%u`A>BKja5$X~!;i4u_3tWM#s?C(VRz02k-CI)^NpnPs{Z#|LjUVdI&u1F)>m z7jdg)mQv~BW-KGkO)}lWq6?FU4qwU`AAkxV?vJcT;It*k7y_|u3xT)xV{KYz30jf? z4Ud0WDhAW7v9QsTzd7+QBVQ@%HmV@PdK*e{`0cs6(x~hCFX=a#nr-SVZ529H7f-D$ z6bc)k%ybo+!OV@!VjrA_!cRv#v=Uq_^9khs{vJPfyE0tvz`;B{coZIm)qXR3uZA;V z=&_LZ@Tbb(cvPvdJebLJi|OqpK%C3rXcr3C4JL-mh1bZzvlsUdoi(Ph7R4kHKo~QGb=3m;d}k9VT2d3)BtBN^+7X za>@;Sa0+g5dRmcpI+=^e$GMC#E0t_TKCLl9|-?c zDE~Uia}Qk}qww5h$jJU{iZ?|MAm!)nst)hSxOkdw2dwZ9v6Rlx0z9FSrn5c3Vh!Y6aq$ z9JbrfIy7(7ZRXb2x!qE(T)Hwd7^Q5&nYSsu8g3D02#i+J*vU-M8YMm>JM=UF5~~x8 zoFSH9L96gA)a{sE@UT1b7GhRE{x40SJ6n#ewvU`fUeNZoQ9v&rOzQ_>pQX#rFqUSSx*4vShkNgsVT+hjj?!>?hZ;D ztr_|ScT9~z(%j|3W1&CJX?Vl|5X$FOGuNVP6b$+3h;Qe{3yEVXwqzrA4IJ8))|*2AbGd7Rt#T1RF9&nRXF)i0Wso%rGg5g=lq$?6q7Ui@tXh&hcq&GD_=r zUr3vlCQzQCQ`*J_Vf(h9-h}HPr;n$GJz983UmaFS+@Iiu_pt$nG9+yfuJ`@CvSHah zkFXpde;{H ze_Y09{r`>wTYwSB+crFBBmYst`>y-%%Od&!JNXvAiT71gp1a43t?Q?y`UlM`WzX$oqmAK#Q5XILfsilXqycX!7)$g}2{)0R(zLjd4v17OYechX9c}ZirKm z{e0c#TCRsy)Yu4KLW#jlgF0mE>patpOG3IBja zXG2^EB6=C-Y}e)L7Id|EGpG9vZ(H2+)IF+}fQ}%NV3Wvl!(`btIF`W(XKllhwr_JI ztfp`3^G-&FZ8bNasQ~~b^CLBz6oiO0{*{k(lqjEsTJr?Y>n^X|hBBJqt%T;DPv7^Z zcyCXk^NUnj5^tjlPV78=H;~ylF7k?JxZ$tBgsmptx`>2+#`vqw+a93?h>GMrjQ%RT z)L#CceMc|GzD9O^YLXZ7^+f!Tz90KZwEDkB>pc=*z3hr6&3@`K&RSwCdnt!&YZn$p zC1f5`y{&R`C_99V>qrMKfFqs}Q7fW)+?ltvk?1`sTwKU0jGB}CbOVr%_`dU@V*VnM z=7HDAycV|jhUw@}zFgHHEql4;y@kd#UoLkXs104&7(va+es1ztZ90Z!93+%zj`-)2 zJ_R=$icmo!dxP;4u&<}n_SG(vS0k%IS>km5J^6pQ8;w|V%d5Pbt_-tIpar6XnP!V& zo&ur~NefiAM9bsa47lSARX??!wn~udZSCj&FqoUaeSvGaGx%#;+iduxh;E}(1DI}7 z)cTK8TH8T(R;M${@<3DpTRhg3EH&_zoZUgRZ6?u$j6KrGsP81<0CB|**#!Lb ze-0y{`7-+p9<@fcUMc^1oLv*H3#od35@0^0tZE+|Umxbyg*&6{D0hn8s`E(i9C6^N zO#6QpfYG`~ov$IP%C`sG8eUwimf<=^c;{DjBbi3L0?+?3_Lfm`eB0VD8r%ZG-3f%o z-Q6X@gG190+}$<7EkJO0cZcAvf#B}$4sZSUIp@B2pE2$p_hWb0s9v?!s#UAzeCF@* z84sNn0ggj1J>?Ypaj>dPId5+i*-g8WK`?S2=@*nnj zcyq66T!zJqi1c}JiT{*;l%oZ!V5Ii&RaZE~aIKvk)dF=D(KE2tU$Ia8w&HSwg+eP& z(ES?YFPz=W4G1(l;#UX^I%a65@*a-llfE>d9}X(1Nyh81zB|o4O`V{LrYvc4P?KMA+gvYwb1yv_RL+eg(C!#uX=~3)SAO-o8L0 z^J;zA3PC9jsce}VZeB~tVQq(8;0st4?BMbQ}40E(? z;p|I9lB?c=Ou9~LNEIvV@)q;O<%{X6%YKz9O$P^ngw?JxsNF&d?+=hf-kV%@d^E8{*j0NcxH{TNZ4pHxD{R*2 z>Kv)uL~X*@mh8#{m#9?DI>b|GtJYoIG_`3!>KOjD6DJAShW|6$``ZOGImuoZ575k+ zMriB+aIs4Q(v?6C)j&E;K52FcXxJM(6t@vaO2#%y0A27X?_Vpx4jV_?BGX9Oz#Q#Pn_&d#}(4WkZ2ZUOYuO2ZHU z1K@o22eRapyH3)`h4#j#LhQLekX>ecgP7olP_iolrt3b<07WnlBLq(0_3l>_-IrAz z3p%$&wD_5Oak584dh_&z{QaGiVmP>-C@OH1Xe*95I*c4UJkH>Dex4a=^%!Q+cwE0F z{V|TwkJ7BLTyz0nfNgbFRpuf%a-R5b&{yPnydm?`e#34gL|LPw4k7xr?C2Qv%bWqD z%3Nj^NHR>7-{<*0Lz>~63%nhvrSh%K%FxP{;S8R4mf8dV%k`>UoAgwKOJwv`DLUE1 zU}aGEWR$Sm&)Pb5;p?g9a+fofVN$>sB7x*h>-WZ7a_2vMR{}xhpeud^Ait-*X#V4U zpScA*F=9qOJ{ouOh=S(HqL`+LncknuIb{vG9H^Uy+&~@SX2*(O+|uSb3|_8%KR#@z z=mE6{gL(Z=@R+m;$&)Auc9c+tXc0u*Tx_7HO(HineX2l`lm>>C%*WY6N=%Ql_S(1& zK{`{eLaYpOHy-Ch*~kf>TLaXFW_k>a#9ZH0v9{bF?25Y{sAq*eCe7@b$vMZR`AD zW$k6ft91-QQ~R{ZXpP*^rhCEUuz-a>aC?kneN$B}`;7oOL%rTodcbGu6nMLB{Ki&c zq4{}GB|=-z&xX#>yPx31b@qtL+krldnen?h-pbkC&Mi5@g*!N6Xr4 z2S{mr3v<19hfSq-foOP#N-xHb8G+}kTkO`0*Fpy$lx=s2zuW;vXz}P;Cn}o>JCnCL z)*jCO8{JUS_l3eQDRy;B_EC`WOkv^oS#@EMT@v`TRcD{YOj7&vbhk~};&NqI-G~Ux zygj1zvSk7hx@<_c@WRgf)sOmm3tG(>ydseh?WYBeVask=bW;vtR8pHH>36asNAsHe zHs{ipsqD3`+R|ax7TR1R9xWuix_9bK3eeRq>w2I5iDxz*EMFh&`T@1%wN%}bo6rO? z);TWDyGH?%yoL#tI}?c(1M+$XtQvk3Y2LRBShFJy7R)nGwbS*rOb6a)Nn4t=tN%ps zuNfRersozu;1@_cEazUh2#NDoI*{8#u4B<>lFAK|QoYQ)hJnbC#S*7L?1Y`BnBIK$ zQsWhono#hnAW7NkWNX8vWfM!4Vk$`m?rL$;)a~`mM4rNmW(tN1}IW1eVKWC?>O4>&lw4wWlIMz7u zEAL=v7B!?9r6m0Sv6$d-Z%jOV`byWGbeMA3r{?}-(XO#T{EwG~6~mI}*$Gu%lzUFy zK0gFS+QlVr{)nLD3^i}0d-y)ecjq_3Zsn6Z zqIv@=_~Yi&3`0HFyDwABVA4U395+qxDEao+u{6NAd`Q(V&F;KpEx^nmI3ukg*SsUwI%~q{?XNjJvEj&i>k{%k))CGe%1g+fQ?HjR4 zsBesK08^9)j$JWh*`t*byv-O{5nG?`lt{+y)10Tz^swr!Z zlRkaLtrPu;qCb2~X0^1?-2KoywT667;+0Z{WB$Htc3|bhx+#$2=pKPnE8}0NiF=Pv zyp7fYZUX=zPCQ;Azq{M0yapo*k`VC`y(;C|DmT&iKk`;R?GEZlY^5}AvAg&WFIPaK zWJ`vS*yo@gbMZEy#npde&oIYESU#H$#pMfn1xHB~Saha$hohf33VDQk$I*l=v_yv*2{1KUQ$3f@-De)?g z&!wcav=oe)rEgZnr_x@L{;;yx!_KD0Wo+v`;C&?X9#h(pq>SRerr)0gBW>DSl+mLD zP?kU+Iaw4NgC8{+AdI(XNAIdu+!cDQZYTE%Pq`9SiQHVy11(7dIF zB`|dWuS^9Jaq3%0mZf%RZO6Q5W56c>YI%#IyiFI!GS)Amr=6N@% z<01li=LPh$BAbMc4pxHQB@}N;H`ZblD}wpr6V*k(hc?&X{#2-RjgsSnmFt#jD47uL zDyxLA4g59UcOf@&A9L?%DtHBS!MYkWN8UCEbvbmfum^CDH!6FLOx*4{j;Be#XI?`T zSX|KAOH5HdE9yw6V0W1f-Drw_dtAceI6`avJ-47r7J4c4f~)g)wcIOYj&|t~Fnk~# zHbYQP;_OKZ)wob>2zNh3(HY_p7%<>`UA=6mYreE4 z_pcHFP-iFxEdQr0hv$nes(7`2zz|wmurFJ9G}W#MqF!vG`(v(AhhAluPntSg(P&$y zEKuR(%=hhyA?xy&4L=d;pRpqA(DD7{P` z#I>Duy5c(i0f-i^tXLXN73;=w^LEPcCo>)0v^WBcFRG}f4 zG3ic#s0Qet%F_hhz0Oc`*2spR#N%J< zDDa&Cjd15ynK$!LK;jvX;vJ&EARPBxTOa2ZbVkQr`&r18>_!jWBeLOjYb`9jUxR}k zR_6NOfz-nqS+XJYAMt1VX42!)&`w|x$+B3WI)yumC=SUN*zb4{^E{oM$xNKE*PN4p zJ_2sY>V)&Ptjs3ER~%VUs9BgT)4slQu7KKO{S81}ik@5XXVK3Gp5Sdg928<8?`5s< zFC3_z)oj7?7F^Jr>~xvGq^z8@GO1a+y_8(TUgROAn&uT%rZ&vm^U35JW&5} z#3I<$?l+_h_QFDH_WoL*g5UB2y+6^=iBTkT8{v8C1JBGx?5j%B#G`zsdgEC@-t}@f zl)#jIIkp|3UAoCB)x9&^k*g@2QI5j$_k0YrvgM(?3TY)<#8ETE=g-k-bt>F=2mJvF z0U!(;!#SQGB4I1xpPJ?RSm!eGVbK*#DDD419g2!A3tw=5)`w%uITgWrF2vihoTKKy z`jCKkee5-F{1)xpAcCQQO18iEpU^WrALh%aEIEnx5$W*gqv#ld`_&fn<4b zjccfMXLc3X(v(xh7xk|Vxl9CHG4%=^7f9y(OIu4O-`pzCQFxHCsd1MrU(eCcbgRD( zw%HjkYOCyR^i1(Pk%#@R$aP%mz7Ga@8S(r&ERGM1HA%1yA^kM8_j2az3u;}`t=*U^ zHT=?0K8fnR1MD4pbyQuvkez0u%c+v~A%|60d-q#()GZ6#`{gq=R{TPVhe2Vn6wy~G z<(}^@$MK+@ybMGnDYLk!#bUb0IBXPP$gBcC4!Y<%I=?(xTW>YrBj_rna(!~i;L@C4 zj^2Gb>s#B+sQ8*rTT5fNn&drM#$C1H5?o$ey9-mkm>v)^>A5nOO(hpn7SOrW3F`#8 zsct55vKq+D)qU`7JJS)#@AQfrkDxneMBQu6oh0%}a_z5X90YMmlYC4yu^8j7QX z9EMUj8p%M1ErK6!{}^%@wS8Pd=J^FELwl=T21s0cO<!`D`8n_ zFAUy}GNsmsSe1LA6U48Bl;E3xbuVWtE15;S7Uf1G7o71niC_aXL{S_nsPv@qY=6?j ztW%BoqlxQ1eo66LzU-`1U;*vV3leT6K|4U8lj0v}Y|g4{d@9`vivRWbSESX}e6#|# z+xJlq7&2Rmxi3& zB7F^&6aoJ-7(>!@uGV=fx89^6PJ+;rO~zKc`L$ zD800emV`Gr!=E)ye1SE9i|5FIa_H+mgJ)n`+Di4`~ZxdrtrHDZzV2b$3)kF zJ{&`$s=1l;F~;4Z@QFjXGj}auo-TujW@MJVYuytOywC6ELnAPqp^r~T$!2Drl z#nB`Q+-fbl=-NeSfgc2(koVIRZYVZ^Y5R;OoIjhB#_j%3Fu~IyJD%V8?-aAw$$B`v zOVZ5Qd5ueIgAs2{<&KcM-4;DfNWBf?t5vzBuXGl%cq_p^8(T5By$73=4LqDcD!?V& z$?oeIupNXUixs6M&fgzLF_Hp={R!AIXwJQQu@Wh)q&rMDCQV4nNRCum(|jITwG8QE zSa-V~(|E5cPF7_DDpqPy0$$nF{0!tY;;y?`Ek{k|NXiuXxZ1g+@vN18aq!Lw>HYD< z#0BZAfp8}_Emk$VGTgZXIY<4$f*`#XCiAYAn$wM7^u&3eE1q)Ov+k>A=cAu>yEf?F z#VHtD+HQzX6S}aL*ryAltF`1-ETEc3@U&Hk3>3 z7YRVw5$Z!XG+J$1z9?C_pU2sjXnLOdX$M5Abyit#t7(o-pJVBww9;Q=DTjG{(s+mX z3d2n>Y5P+zpvFslVeTCDMN;@c(6p$x-s;I&2RDO8P>XK(mL@R$J{DZgikPPE;Ffu^ zO(96T)O>i%u~3qTIyX>nnJIsHB8_xbNtdQ39dW{ZE0s~HcVRJJlP+~CUqTCEYYLIR zJOHQ6mT@05eWkmzfcWObw?z%UyJgaiVZ6ph+5>eoF>m*bpMEts(VlP{2ti8?*c%7J z;jKb)mu>(Zx?6g_a&6Tn%Xh23pK;;s4RR*XwZ&KADSQlntY-zok94c_L$cRB)scw5*TO0j$DPq$wph-&ev$Jr8(0T%*%Pm3YFaolUnlZU#!8LsNm-U#Z(~S zCkO!*BXVLG>ANH!t8i_31nKz=`TI|7d?VuWGIs~qZzDc+=H_#Z`=ct4n%& z+d1HvsH87&@tFV@wyldrD;7=IqI2$8 zW;NjHHn-~8$HWek3t8VFym1v;6y*eirN%u^uW-eKV1cQA5&Ux~!&s4IA@7z?T;h+1 zJ^_0B?4&ivY6cx%DW7^{84r<9nfwSq7y>MfFsn?4MMNf4>W0w0$-S9O4;Og2b=%*| za;!#fkgZ|1@Cky=C1ShMpoQS3YsBLNH)4JDmsO~<9 z_4;qDS5beqsmfK)_}Ocv`onYYOp|U?#X~hTQS{a&JZ^7GAh6^VneNe3lhlk62o8S0 z|HCm^$aJlW$wGF)Cbck|^6={cDh|$lS2EDksCvRye_y*7D;gejfsd`4v1C2I3C4gI zA7#f}5PKJkuv@5hqs$DsIpowwZ~Us; zkHKgD=?g+NufyZ4+B^y+rE4d_HVW1IZk;{nlJvksGQXI|*dhCjwF4j%??KaqR$WBj0a>I>Ip2A=0*-R^w&>kd$^7lLOE&3G7I#u^2h zy|vUK--3xt7_&F5_IdG06>l1U9)0}oO1av}Bf>`-)>ENg_RihsVj0$UJM4jgcT3{{{nl)9nUU7zrb0;C@2EU2ZMyK*EB>(WT8jLHEa!TVOaR+8@mc{qZ=x$ z#KP}JFP9!Y3=el3zamnR|3S2}LsO^fWhrU8{L^FxLdpD;& z=qxJgA1T@of5v!mgFNr{MzG^dbJp3pY?=XK*@9izYeq4<=AGDK_)@T_OFWUwcOv>O znK4!{qi2wmNc;Cyw0&1wpC`^0VX8?F`zL+U1FgVwV)+klKaGN6Ug75SrhdJp2`Xz< zUJ(c37)HWt2zY8CoF7LC-=#RZ3B{3Gx#QNN)1m)8f2RF3!8C_j2MTgqtcA=J_Q{J@ z>bF~$V@}WY)0vQ^5+=`}AR~L< z;1a$YB)jr(qgB(e?Z@{f*)`v!l)kog@Yq$zXno!YiFc2@E_+D^9UxTP9n36kr(CZS z8gT1Yx~2~=w%Kpd&NRYlXSZM6B@Rz(IAbt%A)ugbe|Lo&Hp(zkL>+qX1QD1ITq-HK zEI)c06%`Lby>;~H$W+dC<}mruP}KouHXiHJ?e$39Be1M>^XmdLizp?FYt^z8vbd0U zPMwjb?#K3|eNfIEa~&3`tRE4^E5f^s77Fx{pzCRgXpR>$>@YUrzasUo`=iHg`bE00 zoB-wzrP?OO+5MfH`tO_b?;=!~&t|IK%mo0DVTjSR+Y6yiK6y{{`hE>bB96;0V-4aAMzhp6r)n{}BnS zSj4F)(#3#j!khp}I9NXt45nLm-gQYMpibInnxR(I?)Lc9?MlzaMwnfg<`ar2&Lk@C zbj^MGK88&OhegeVZGO8~LZV&`UZ^=+)6WmE;e8-}eJ!_+>*;WPi`fCnDkz9Z6tVls zq`dxi2s+6wp7_y=sof}JXVhPRTLl)?<}VS%3$2ZRal!QG?nQPWxZ$t0W{GDQ%ZVga z2zc%RnqZ@yVf9!4w~SA1VFM%l;ZQIj?ItkNWtS4Xil1qI}xS)ELwZQ%5We6Rv^m-4vj6S(G2b-Cj44au< zarbifa{xb_{`eMjJ{|~)iLaOrM8`B+nIF0Ao-a4j6M^U3KNUs7Z=H=5Ms)aFEYN48 zTgbyn0;+Fh{MeIvsd$r3Q$-oqrw$Ykg_AyWK~sl^%HNQ2c%6lSQDj&hGLKz zxhMV1sHq;xp%S8vTk38ytUwPJb_t(a-G1QY)hk&m-bG#feJ@TL>)OvYfhj|6N?ex8 zVX-}6tNcYklk+a`BliR0!*u1S?E)Nb=sK}2!p+`;hHl%yp8Jsg{$Jj3rb6UAX;!}{ zBz-gdH~L_$tZ6flG1qvE@Fu4<;X|WhqGlUu@##RNs`BoK{>4x-n<|&d&;)kXP!P-FCCnj|?h$#L!Sa{bEkGeOVNJ*AqDI9NnB zV)6&<{LF@>phvy11zRay8TDG68rHI{s*F*wLOGA;%9pIr{D}m14H5>{yY6#^#n<&4 zpi{DZ;{qpEhu0T|J#ih$p!;l`=h241=c$(|j^v-*$W|JxOSPq{S2y(MEA*^TMeEo! z2Vn92*ef8h5U#D0RXx*WikVT%2-(MENR1{t;p;U*O_dD^Gcst2c-TznlJdL^_6Xp0 zXtk=k*!(^BH(FUKED!rhQ#vQS8d_~9af>v|DIi}uT;;VmqMe^F@R;~2Ij)r1pMDx! z@?-Q-Xy?2G%D#teLiTkZV^!R(gC&VFFm}4(xnOGlVRDu6ykAE*V?iLvt-$qUabX0p zx1aY(QON3Bmf*rTb}^xp;FRn6cxGnj%3OV!i8exYhBT=K(UlCf!3Repg&N#jzJ&y6 zUdh*<+5}D_@H+zV42~t=ZW(2z+qPcp&FXr0pjCS}J`(f;iI7*&0Z5D8kYOkUV>fJb zvwd!$&3D}*=tkS?#6al8zs|zGv;Q8_o}yS(B5Wtzr?u_=+n`PFU|2NieMWcLnmH^$ zs1OJp%5^={FL>K*b`TU(KT)U<51Sx%+#OX?7QofUnUmf(XX}Q305Pv_?bUgIKh~zY zP)hkI=q)Y$^QTQ+J<}0XMKu;`I+Z2V+@O&XW%PXuv{&Uot5OatLr0b{>R(nD;0CMA zlZm^a=@(>EdZLKNe;eg)o0tJbkj<@(vPTTbnB^X8%R30B#teC|^L7@UL?l}JbF!bY zv>~wVsn}*LZRiE>$>j-eth|{;8}!|YJ*GcIa#4OM>+AM&VaKRO3gZ1(p^5xrS5BMa zE1opqg@80l_}zITip2WmdGYsLp+M$-bX(ho2HhMPoM}zVQOKxeVKS%W`r?w)2VPe9 z+%%K(sz4B20t<^5>N$(bzE{vM=pTmfpe5WEPOko%WM0{{>$7xAiuU$E8POTg_Az{+ z_1qvxcW|H}?dB)Iv+mT$_`{?6dw5;v-aX+(dffr+n3Nj7$1Ft3%q5%F zG1A`x>&X($c)0X+58Vi49N@d@{E_30KJUfhiZ_7u;1LJTSDfDHCL0C^>qXB`YQMI>cM_=KxM!7@TG7uKV`ZDa#j=@RFB*3zXVfgn9xCIsiLy!{ENl|dy z(x*4c>yni9)67BfD(e1te7F|s!Q}GWk@EiJ@(0rtjsh$T8;=0^>8qFN^{VHYd@CZV zd-cBYr9=UJ(s$gH@{=wURFKjjQMhr!wZiKl3$kH9jPouyj+ZBlD*KDuC0hb*nH6pGFU${AN%R<-J2^~Z z-O>w*@Y7X@QH@D>k_nvG6lP;}j&HB+KIl!xClUk!!ecJMX2tYU>Z;Tn-5CGVg9|cTw^t zMz9uaUdjkXFxsKbAgMHpPW91 zBO({5{wEsJq_aBzz5bUw-&vR8?7WQ!?^~;Ft6+NT`yL4XjJ>ofej2*vnuK8A|dhRmc}~x|^}Cx`$AJ=uLCndEzh`J`Py?@PU?`BY`w^_Ad~ z-!Tg}OEeID9ZFE0CF`T|zxZLrRuBhHu#9*rfw@Aue2=j;pj?H=rk{teSr>mpeMRF9 ztJJvaVHw;U^1AgfqKlI+nBlCmD>G<|qh=MgK_K2S8lMm@Abq9R)?eHidLfzKT~l)b zuVILrky-4>;5gSz&*t_WJbE6Qc6aO^zb0bu+w5NJh5qMFa=~bs&FrJ)R|f_| z|I33_&%M8CeeY29YgBD6b&d51+PgH;YQ^+bAJU(Bkk8n6!1TT0zLdG6g|(20%PsR} zhE8{ge?*X}VHztP24T=hzW?iDy+ADV^h}arhGJGbrhT2o!zH*t3$O#qNgCVIkTM4y zedu>bT$l4^)^9Vl9JUjDl_lO~zchK3M^E7Od3O6c58zm5D`hK5%1E&oW93O7saEwb z3E0ibhPFe=8rXMee{z&rd`Ecb(;;9~FJnd=MWZjPMOq(rB-oL22-~f5LE=TZ)25@M zyTBY0uZ!AAiBlr&j_>lccI$}wxwkNy(nvV;4oGDvz6v4ONFU{P2ZkmmvRX=PlM5lJ z;2uShYtox)?O`?6ad_BLknOq*a`vNH(zuXZb^K{_m;P$0+UVA9f#5x0mYkI=#+$e` zqtOw`9HsDQP21A-bh*zIk%`Q#8 zWQ5YPhxT^BBiXfSGP;dh^2$Ry7-C8rnWa0YT5C4e;0~0%-ZadKNsDIbZYST;R9gP_ zC@gVs!^m0_&r+CEju@%8ocGWh7G0_nCA%00$_qTHFhkKvzVYS9Fne9v4BRg_*~epr zN6;l~ZxfYEUX5ZS%8hQv$m%?XT_nh6=_L#$Z;?cBO0-~(HIAO_OsLD@WgcC#zl4uN z8Am}_tP2gA#`$i#5rlU~Al}|+Tf>*5x1^3(V1JPHC>J^1;HQ&lgxv-5fs3PyvxxGd z;~&G{1rBP^yqXQUo_ z!wa};8e8?R>51!m#gR>%+@A1jgt3E%)lxC=m~{^UY_5E_XnTi~Iy%Q>&=DA+j*iv?In2y8zkFG#+}wW3~9SY0G8ip#O=4sYaVyMS8K)&Kt{o+n}SJ@VXyP|Izit z81FYcw$gF{D@BmMntD0@wt~~Kt|{AY_rUsh

Il&C5-leOIhnk%_UBBz0aUxrGfe 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%0DBLUZPOh*cLKAJ@a#i-x(l} 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�r}~@iVkhPbbqG=lO!;5;r-+YkM2PAd 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¨QWr718?66L`Q^JyUu1uYu_3!Qw%bE5UoNa^*5k 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

+(RE48$bqGP+m7cA083w8?xSNnIwn+jqv?;j{^a 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 +j^&|~Z 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 literal 788690 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

7|QYfSrwJ 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

_f;PN?agCXe6U9Rj@&T5ZM4i(m^6et#%2}y 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%0A27wTD97R9;B$26Ep;ygyI1|7ZpEe!m*1 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 z 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

;sAXxKb_R>#{gxwBRpvSRx$Wk>C>FaL_ZyB4s$ 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
Hm{y2;NX~;fXimSt9GX8uPm*~JJ4nI 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

?T@Z508H5Vbv+=aRxp1QlPk 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

mVDM=6y3q77TLRI(c-#=+Kt8DhusoKC^mm7Cd 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 From 41f367215978b138da804b1875bace22aed92538 Mon Sep 17 00:00:00 2001 From: "Stephanie J. Spielman" Date: Tue, 18 Nov 2025 18:49:54 -0500 Subject: [PATCH 018/148] wording --- scRNA-seq-advanced/02-dataset_integration.Rmd | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/scRNA-seq-advanced/02-dataset_integration.Rmd b/scRNA-seq-advanced/02-dataset_integration.Rmd index 8152aa50..7443f963 100644 --- a/scRNA-seq-advanced/02-dataset_integration.Rmd +++ b/scRNA-seq-advanced/02-dataset_integration.Rmd @@ -224,7 +224,7 @@ As we saw in the slides, this means we'll have to... We'll approach this merge in two parts: + First, we'll take some time to thoroughly explore the our SCE objects to determine what wrangling we need to do to make all the objects _compatible_ for merging -+ Then, we'll write (ok, we've written it for you) a _custom function_ to prepare each SCE object for merging, including: ++ Then, we'll write (ok, we've written it for you) a _custom function_ to format each SCE object for merging, including: + Making any changes to ensure objects are compatible + Adding in identifying information so we know which sample the cells and other metadata came from @@ -263,7 +263,7 @@ sce_list |> ``` Even though we know the genes already match, we need to also be sure they are in the same _order_ among all objects. -So, we'll hold onto that `shared_genes` variable we defined and use it soon in our custom function to make sure all objects fully match. +So, we'll hold onto that `shared_genes` variable we defined and use it soon in our custom formatting function to make sure all objects fully match. #### Check the `colData` column names @@ -279,8 +279,8 @@ sce_list |> ``` We see the same columns all around in the same order, which is great! -But what if we we saw different (but overlapping) columns across objects? -In that case, we could find the intersection of column names like we did above for genes, and use that to re-order and subset all `colData` slot in our custom function. +But what if there were different columns across objects, or they were differently ordered? +In that case, we could find the intersection of column names like we did above for genes, and use that to re-order and subset all `colData` slot in our custom formatting function. #### Check the assays and reduced dimensions @@ -299,7 +299,7 @@ sce_list |> ``` Again, all objects are compatible already: They both a `counts` and `logcounts` assay, and they both have `PCA` and `UMAP` reduced dimensions, so we don't need to do anything in particular here. -In your own data exploration, if you encounter SCEs to merge that have different reduced dimensions, you can remove extraneous ones by setting them to `NULL`, e.g. `assay(sce, "assay_to_remove") <- NULL`. +In your own data exploration, if you encounter SCEs to merge that have extraneous assays or reduced dimensions that you don't need, you can remove them by setting them to `NULL` in your custom formatting function, e.g. `assay(sce, "assay_to_remove") <- NULL`. #### Bonus rowData exploration @@ -320,7 +320,7 @@ This means we definitely need to update the colum names `mean` and `detected` to But, we don't need a separate `gene_symbol` column for each sample, so we can leave that one alone as just `gene_symbol`. Once we eventually merge, only one `gene_symbol` column will be left in the final object since it is the same across all the SCEs. -We'll show one way to do this in our custom function, but it's worth noting there's nothing _wrong_ with also adding the sample id to the `gene_symbol` column; you'll just end up with a bunch of redundant columns. +We'll show one way to do this in our custom function, but it's worth noting there's nothing _wrong_ with also adding the sample id to the `gene_symbol` column; you'll just end up with a bunch of redundant gene symbol columns. ### Perform SCE merging From b043ffef7de19ecc8ffdcfbcde94a0899d396354 Mon Sep 17 00:00:00 2001 From: "Stephanie J. Spielman" Date: Tue, 18 Nov 2025 18:55:39 -0500 Subject: [PATCH 019/148] spelling --- components/dictionary.txt | 1 + scRNA-seq-advanced/02-dataset_integration.Rmd | 6 +++--- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/components/dictionary.txt b/components/dictionary.txt index b6fadbe6..9886d72f 100644 --- a/components/dictionary.txt +++ b/components/dictionary.txt @@ -390,6 +390,7 @@ rmd Rmd RMS roadmap +roxygen RPKMs rRNA Rscript diff --git a/scRNA-seq-advanced/02-dataset_integration.Rmd b/scRNA-seq-advanced/02-dataset_integration.Rmd index 7443f963..ee36484d 100644 --- a/scRNA-seq-advanced/02-dataset_integration.Rmd +++ b/scRNA-seq-advanced/02-dataset_integration.Rmd @@ -301,7 +301,7 @@ Again, all objects are compatible already: They both a `counts` and `logcounts` In your own data exploration, if you encounter SCEs to merge that have extraneous assays or reduced dimensions that you don't need, you can remove them by setting them to `NULL` in your custom formatting function, e.g. `assay(sce, "assay_to_remove") <- NULL`. -#### Bonus rowData exploration +#### Bonus `rowData` exploration One of the other items we said we'd need to think about is the `rowData`, which contains gene metadata. This slot is interesting because some of its columns are _specific_ to the given sample, while others are general: @@ -316,7 +316,7 @@ sce_list |> The column `gene_symbol` is not sample-specific - it just provides the corresponding gene symbol to the Ensembl ids seen here as row names. The columns `mean` and `detected`, however, are sample-specific - they contain sample-specific statistics about gene expression. -This means we definitely need to update the colum names `mean` and `detected` to include the sample id. +This means we definitely need to update the column names `mean` and `detected` to include the sample id. But, we don't need a separate `gene_symbol` column for each sample, so we can leave that one alone as just `gene_symbol`. Once we eventually merge, only one `gene_symbol` column will be left in the final object since it is the same across all the SCEs. @@ -337,7 +337,7 @@ We'll then use our new `purrr::map()` programming skills to run this function ov This will give us a new list of formatted SCEs that we can proceed to merge. It's important to remember that the `format_sce()` function written below is not a function for general use – it's been precisely written to match the processing we need to do for _these_ SCEs, and different SCEs you work with will require different types of processing. -We also include Roxygen-style comments for this function, which can be a helpful consistent way to document your code if you like it - we've even written a blog post about it :) (). +We also include roxygen-style comments for this function, which can be a helpful consistent way to document your code if you like it - we've even written a blog post about it :) (). ```{r format_sce function} #' Custom function to format an SCE before merging From fc09cc6ef8b809cd5101e4ec653b20416044159e Mon Sep 17 00:00:00 2001 From: Stephanie Spielman Date: Wed, 19 Nov 2025 15:07:29 -0500 Subject: [PATCH 020/148] Apply suggestions from code review Co-authored-by: Ally Hawkins <54039191+allyhawkins@users.noreply.github.com> --- scRNA-seq-advanced/02-dataset_integration.Rmd | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/scRNA-seq-advanced/02-dataset_integration.Rmd b/scRNA-seq-advanced/02-dataset_integration.Rmd index ee36484d..097242bd 100644 --- a/scRNA-seq-advanced/02-dataset_integration.Rmd +++ b/scRNA-seq-advanced/02-dataset_integration.Rmd @@ -280,7 +280,7 @@ sce_list |> We see the same columns all around in the same order, which is great! But what if there were different columns across objects, or they were differently ordered? -In that case, we could find the intersection of column names like we did above for genes, and use that to re-order and subset all `colData` slot in our custom formatting function. +In that case, we could find the intersection of column names like we did above for genes, and use that to re-order and subset all `colData` slots in our custom formatting function. #### Check the assays and reduced dimensions @@ -297,7 +297,7 @@ sce_list |> sce_list |> purrr::map(reducedDimNames) ``` -Again, all objects are compatible already: They both a `counts` and `logcounts` assay, and they both have `PCA` and `UMAP` reduced dimensions, so we don't need to do anything in particular here. +Again, all objects are compatible already: They both have a `counts` and `logcounts` assay, and they both have `PCA` and `UMAP` reduced dimensions, so we don't need to do anything in particular here. In your own data exploration, if you encounter SCEs to merge that have extraneous assays or reduced dimensions that you don't need, you can remove them by setting them to `NULL` in your custom formatting function, e.g. `assay(sce, "assay_to_remove") <- NULL`. From 3357a69cc4a301f8f6961d51a4d9f0994c5f7eea Mon Sep 17 00:00:00 2001 From: "stephanie.spielman@gmail.com" Date: Wed, 19 Nov 2025 20:31:46 +0000 Subject: [PATCH 021/148] responded to merge section reviews --- scRNA-seq-advanced/02-dataset_integration.Rmd | 56 ++++++++++++------- 1 file changed, 35 insertions(+), 21 deletions(-) diff --git a/scRNA-seq-advanced/02-dataset_integration.Rmd b/scRNA-seq-advanced/02-dataset_integration.Rmd index 097242bd..99321fe2 100644 --- a/scRNA-seq-advanced/02-dataset_integration.Rmd +++ b/scRNA-seq-advanced/02-dataset_integration.Rmd @@ -211,12 +211,12 @@ Overall, we'll want to make sure that: 1. All objects have compatible dimensions. This means that all objects should... - + Have the same genes, in the same order + + Have the same genes (aka row names), in the same order + Have the same `colData` slot columns, in the same order - + Have the same assays and reduced dimensions + + Have the same assays 2. After merging, we'll still be able to identify which sample different pieces of information came from As we saw in the slides, this means we'll have to... - + Attach sample names to the barcodes (aka, the SCE's column names) + + Attach sample names to the barcodes (aka column names) This also ensures that column names are unique; while a single sample (library) is guaranteed to have unique barcodes, technically they can be repeated across samples! + Attach sample names to `rowData` slot column names and `metadata` field names (if you care to keep this information around - today, we will!) + Add a new column indicating the sample to the `colData` slot @@ -227,16 +227,29 @@ We'll approach this merge in two parts: + Then, we'll write (ok, we've written it for you) a _custom function_ to format each SCE object for merging, including: + Making any changes to ensure objects are compatible + Adding in identifying information so we know which sample the cells and other metadata came from + + Removing the existing reduced dimensions (PCA and UMAP). + This is because we'll want to recalculate these matrices on the merged objects, taking batch into account When merging objects on your own, don't skip these data exploration steps! The steps we take to prepare our SCEs will probably be different from the steps you need to take with other SCEs, and only by carefully exploring the objects can you figure out what steps you'll need to take to meet all of our conditions. +### Updating the column names (cell barcodes) + +As part of the custom function we'll write, we'll include a step to attach sample names to the SCE column names (cell barcodes): We'll change them (as a toy example) from `ACGT` --> `SampleName-ACGT`. + +We do this because we need to be able to unambiguously identify which sample a given cell came from, and it helps us avoid bugs! +When merging, there can't be any duplicate column names (barcodes) across _all_ the objects or R will throw an error. +While you're guaranteed to have unique barcodes in a given SCE object, there is _no guarantee_ that they are unique across multiple samples - it is absolutely possible to have cells from two different samples share the same barcode (and we're seen it happen!). + +Adding the sample id to the column names (barcodes) is therefore a crucial step in our merging bookkeeping. + + ### Explore the SCE objects #### Check the genes -First, we'll compare the object's genes (aka, their rownames). +First, we'll compare the object's genes (aka, their row names). We can use some `purrr` magic to help us find the set of shared genes among all objects: ```{r shared genes} @@ -265,6 +278,11 @@ sce_list |> Even though we know the genes already match, we need to also be sure they are in the same _order_ among all objects. So, we'll hold onto that `shared_genes` variable we defined and use it soon in our custom formatting function to make sure all objects fully match. +It's worth noting that the intersection isn't the only option here, though! +Using the intersection means a lot of genes will get discarded if the objects have different genes. +We could instead take the _union_ of genes so nothing gets thrown out. +In this case, you'd need to create "dummy" assay rows for genes that a given SCE doesn't have and fill it with `NA` expression values. +You'll still have to make sure the SCEs have the same rows in the same order before merging, so you may need to do a decent bit of matrix wrangling. #### Check the `colData` column names @@ -283,23 +301,18 @@ But what if there were different columns across objects, or they were differentl In that case, we could find the intersection of column names like we did above for genes, and use that to re-order and subset all `colData` slots in our custom formatting function. -#### Check the assays and reduced dimensions +#### Check the assays -Finally, we'll make sure that all objects share the same assays and reduced dimensions. +Finally, we'll make sure that all objects share the same assays: -```{r assay names} +```{r assay names, live = TRUE} # print all the assay names sce_list |> purrr::map(assayNames) ``` -```{r reddim names, live = TRUE} -# print all the assay names -sce_list |> - purrr::map(reducedDimNames) -``` -Again, all objects are compatible already: They both have a `counts` and `logcounts` assay, and they both have `PCA` and `UMAP` reduced dimensions, so we don't need to do anything in particular here. +Again, all objects are compatible already with both having a `counts` and `logcounts` assay. -In your own data exploration, if you encounter SCEs to merge that have extraneous assays or reduced dimensions that you don't need, you can remove them by setting them to `NULL` in your custom formatting function, e.g. `assay(sce, "assay_to_remove") <- NULL`. +In your own data exploration, if you encounter SCEs to merge that have extraneous assays that you don't need, you can remove them by setting them to `NULL` in your custom formatting function, e.g. `assay(sce, "assay_to_remove") <- NULL`. #### Bonus `rowData` exploration @@ -350,24 +363,25 @@ We also include roxygen-style comments for this function, which can be a helpful format_sce <- function( sce, sample_name, - shared_genes - ) { + shared_genes) { + + ### Remove the single-sample reduced dimensions + # We do this first since it makes the object a lot smaller for the rest of this code! + reducedDims(sce) <- NULL ### Ensure objects have the same genes in the same order # Use the shared_genes vector to index genes to the intersection # Doing this both subsets to just those genes, and reorders! sce <- sce[shared_genes, ] - ### There is no additional wrangling to do for the colData column names, assays, or reduced dimensions. + ### There is no additional wrangling to do for the colData column names or assays. ### But if there were, you could add your custom code to do so here. ### Your custom function may need additional arguments for this, too. - ### Ensure cell ids are identifiable and fully unique # Update the SCE object column names (cell ids) by prepending the `sample_name` colnames(sce) <- glue::glue("{sample_name}-{colnames(sce)}") - ### Ensure the rowData columns can be identified # Recall, we want to leave `gene_symbol` alone, but add the `sample_name` to the rest # We'll map over the column names and update the ones that _aren't_ `gene_symbol` using the @@ -389,11 +403,11 @@ format_sce <- function( # We'll simply prepend the `sample_name` to all fields for this slot names(metadata(sce)) <- glue::glue("{sample_name}-{names(metadata(sce))}") - ### Add dedicated sample indicator column to the colData slot + # Recall, the `sce$` shortcut points to the colData sce$sample <- sample_name - # Finally, we can return the formatted SCE object + ### Finally, we can return the formatted SCE object return(sce) } ``` From c88dc4802a9aeb18824ccf60c6e781ecec73311e Mon Sep 17 00:00:00 2001 From: "stephanie.spielman@gmail.com" Date: Wed, 19 Nov 2025 20:46:06 +0000 Subject: [PATCH 022/148] PCA and UMAP simplified --- scRNA-seq-advanced/02-dataset_integration.Rmd | 74 ++++++------------- 1 file changed, 22 insertions(+), 52 deletions(-) diff --git a/scRNA-seq-advanced/02-dataset_integration.Rmd b/scRNA-seq-advanced/02-dataset_integration.Rmd index 99321fe2..740190d8 100644 --- a/scRNA-seq-advanced/02-dataset_integration.Rmd +++ b/scRNA-seq-advanced/02-dataset_integration.Rmd @@ -471,50 +471,24 @@ head(rowData(merged_sce)) ![Single-cell roadmap: Integrate](diagrams/roadmap_multi_integrate.png) - So far, we've created a `merged_sce` object which is (almost!) ready for integration. The integration methods we'll be using here actually perform batch correction on a reduced dimension representation of the normalized gene expression values, which is more efficient. `fastMNN` and `harmony` specifically use PCA for this, but be aware that different integration methods may use other kinds of reduced dimensions. -You'll notice that the merged SCE object object already contains PCA and UMAP reduced dimensions, which were calculated during our pre-processing: - -```{r merged_sce reddim, live = TRUE} -# Print the reducedDimNames of the merged_sce -reducedDimNames(merged_sce) -``` - -These represent the original dimension reductions that were performed on _each individual SCE_ before merging, but we actually need to calculate PCA (and UMAP for visualization) from the merged object directly. - -Why can't we use the sample-specific PCA and UMAP matrices? -Part of these calculations themselves involves scaling the raw data to center the mean. -When samples are separately centered but plotting together, you will see samples "overlapping" in space, but this placement is actually just an artifact of the individual centering. -In addition, the mathematical relationship between the original expression data and reduced dimension version of that data will differ across samples, meaning we can't interpret them all together. -To see how this looks, let's look at the UMAP when calculated from individual samples: - -```{r plot individual UMAPs} -# Plot UMAP calculated from individual samples with separate scaling -scater::plotReducedDim(merged_sce, - dimred = "UMAP", - color_by = "sample", - point_size = 0.5, - point_alpha = 0.2) + - # Use a CVD-friendly color scheme and specify legend name - scale_color_brewer(palette = "Dark2", name = "sample") + - # Modify the legend key with larger, easier to see points - guides(color = guide_legend(override.aes = list(size = 3, alpha = 1))) + - ggtitle("UMAP calculated on each sample separately") -``` - -As we see in this UMAP, all samples are centered at zero and all overlapping. -This visual artifact can give the _incorrect impression_ that data is integrated - to be clear, this data is NOT integrated! +Before merging, our objects had reduced dimension representations calculated on each individual SCE, and we removed them when preparing for merge. +We removed them because we don't actually want to use them anymore! +This is because part of their calculation involves scaling the raw data to center the mean. +When samples are separately centered, _all_ of them will centered at zero making it look like the datasets are already pretty overlapping when you plot their UMAPs together. +But, this is just a mathematical artifact of how dimension reduction is performed. +So, we'll begin by re-calculating PCA and UMAP on the merged object in a way that takes batches into consideration. For input to integration, we'll want the reduced dimension calculations to consider normalized gene expression values from all samples simultaneously. So we'll need to recalculate PCA (and UMAP for visualization) on the merged object. -We'll also save these new reduced dimensions with different names, `merged_PCA` and `merged_UMAP`, to distinguish them from already-present `PCA` and `UMAP`. First, as usual, we'll determine the high-variance genes to use for PCA from the `merged_sce` object. For this, we'll need to provide the argument `block = merged_sce$sample` when modeling gene variance, which tells `scran::modelGeneVar()` to first model variance separately for each batch and then combine those modeling statistics. +(Psst: isn't is handy we created that `sample` column when merging?!) ```{r calc merged hv genes} # Specify the number of genes to identify @@ -561,23 +535,13 @@ We can now include this PCA matrix in our `merged_sce` object: ```{r add merged_pca, live = TRUE} # add PCA results to merged SCE object -reducedDim(merged_sce, "merged_PCA") <- merged_pca[[1]] +reducedDim(merged_sce, "PCA") <- merged_pca[[1]] ``` Now that we have the PCA matrix, we can proceed to calculate UMAP to visualize the uncorrected merged data. -We'll calculate UMAP as "usual", but in this case we'll specify two additional arguments: - -- `dimred = "merged_PCA"`, which specifies which existing reduced dimension should be used for the calculation. -We want to use the batch-weighted PCA, which we named above as `"merged_PCA"`. -- `name = "merged_UMAP"`, which names the final UMAP that this function calculates. -This argument will prevent us from overwriting the existing UMAP which is already named "UMAP" and instead create a separate `"merged_UMAP"`. - ```{r calculate merged umap, live = TRUE} -# add merged_UMAP from merged_PCA -merged_sce <- scater::runUMAP(merged_sce, - dimred = "merged_PCA", - name = "merged_UMAP") +merged_sce <- scater::runUMAP(merged_sce) ``` Now, let's see how this new `merged_UMAP` looks compared to the `UMAP` calculated from individual samples: @@ -585,7 +549,7 @@ Now, let's see how this new `merged_UMAP` looks compared to the `UMAP` calculate ```{r plot uncorrected merged UMAP} # UMAPs scaled together when calculated from the merged SCE scater::plotReducedDim(merged_sce, - dimred = "merged_UMAP", + dimred = "UMAP", color_by = "sample", # Some styling to help us see the points: point_size = 0.5, @@ -595,7 +559,7 @@ scater::plotReducedDim(merged_sce, ggtitle("UMAP calculated on merged_sce") ``` -Samples are now separated, which more reasonably reflects that this data is _not yet batch-corrected_. +We see (mostly) four separate clumps representing the four different _merged but not yet integrated_ samples. We can think of this UMAP as our "before" UMAP, and we can compare this to the "after" UMAP we see post-integration. Let's discuss a little first: What visual differences do you think the UMAP on the integrated version of data will have? @@ -645,6 +609,10 @@ reducedDim(merged_sce, "fastmnn_PCA") <- reducedDim(integrated_sce, "corrected") ``` Finally, we'll calculate UMAP from these corrected PCA matrix for visualization. +In this case we need to specify two additional arguments since we're working with non-standard reduced dimension names: + ++ `dimred = "fastmnn_PCA"`, which specifies the existing reduced dimension to use for the calculation ++ `name = "fastmnn_UMAP"`, which names the final UMAP that this function calculates ```{r calculate fastmnn umap, live = TRUE} # Calculate UMAP @@ -774,7 +742,7 @@ However, unlike `fastMNN`, `harmony` does not "back-calculate" corrected express For input, `harmony` needs a couple pieces of information: - First, `harmony` takes a batch-weighted PCA matrix to perform integration. -We already calculated a batch-weighted PCA matrix (our `merged_PCA` reduced dimension), we'll provide this as the the input. +We already calculated a batch-weighted PCA matrix so we'll provide this as the the input. - Second, we need to tell `harmony` about the covariates to use - `sample` and `patient`. To do this, we provide two arguments: - `meta_data`, a data frame that contains covariates across samples. @@ -787,7 +755,7 @@ Let's go! ```{r run harmony, live = TRUE} # Run harmony integration harmony_pca <- harmony::RunHarmony( - data_mat = reducedDim(merged_sce, "merged_PCA"), + data_mat = reducedDim(merged_sce, "PCA"), meta_data = colData(merged_sce), vars_use = c("sample", "patient") ) @@ -858,9 +826,11 @@ This will take a couple minutes to save while compression is performed. ```{r save integration, live = TRUE} # Export to RDS file with "gz" compression -readr::write_rds(merged_sce, - integrated_sce_file, - compress = "gz") +readr::write_rds( + merged_sce, + integrated_sce_file, + compress = "gz" +) ``` From f309fa404d6617c27385a7dd2b626d0690af828b Mon Sep 17 00:00:00 2001 From: "stephanie.spielman@gmail.com" Date: Wed, 19 Nov 2025 20:53:29 +0000 Subject: [PATCH 023/148] missed spots of merged_umap --- scRNA-seq-advanced/02-dataset_integration.Rmd | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/scRNA-seq-advanced/02-dataset_integration.Rmd b/scRNA-seq-advanced/02-dataset_integration.Rmd index 740190d8..d87519e7 100644 --- a/scRNA-seq-advanced/02-dataset_integration.Rmd +++ b/scRNA-seq-advanced/02-dataset_integration.Rmd @@ -488,7 +488,7 @@ So we'll need to recalculate PCA (and UMAP for visualization) on the merged obje First, as usual, we'll determine the high-variance genes to use for PCA from the `merged_sce` object. For this, we'll need to provide the argument `block = merged_sce$sample` when modeling gene variance, which tells `scran::modelGeneVar()` to first model variance separately for each batch and then combine those modeling statistics. -(Psst: isn't is handy we created that `sample` column when merging?!) +(Psst: isn't it handy we created that `sample` column when merging?!) ```{r calc merged hv genes} # Specify the number of genes to identify @@ -544,16 +544,15 @@ Now that we have the PCA matrix, we can proceed to calculate UMAP to visualize t merged_sce <- scater::runUMAP(merged_sce) ``` -Now, let's see how this new `merged_UMAP` looks compared to the `UMAP` calculated from individual samples: - ```{r plot uncorrected merged UMAP} # UMAPs scaled together when calculated from the merged SCE -scater::plotReducedDim(merged_sce, - dimred = "UMAP", - color_by = "sample", - # Some styling to help us see the points: - point_size = 0.5, - point_alpha = 0.2) + +scater::plotUMAP( + merged_sce, + color_by = "sample", + # Some styling to help us see the points: + point_size = 0.5, + point_alpha = 0.2 +) + scale_color_brewer(palette = "Dark2", name = "sample") + guides(color = guide_legend(override.aes = list(size = 3, alpha = 1))) + ggtitle("UMAP calculated on merged_sce") @@ -641,7 +640,7 @@ scater::plotReducedDim(merged_sce, ggtitle("UMAP after integration with fastMNN") ``` -This `fastmnn_UMAP` certainly looks different from the one we made from `merged_UMAP`! +This `fastmnn_UMAP` certainly looks different from the one we made before integrating! What different trends do you see? Do all samples look "equally well" integrated, from a first look? From 84d89eb7eee476ca08dbb2fb5d1b9f56f5478b03 Mon Sep 17 00:00:00 2001 From: Stephanie Spielman Date: Thu, 20 Nov 2025 10:29:04 -0500 Subject: [PATCH 024/148] Apply suggestions from code review Co-authored-by: Ally Hawkins <54039191+allyhawkins@users.noreply.github.com> --- scRNA-seq-advanced/02-dataset_integration.Rmd | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/scRNA-seq-advanced/02-dataset_integration.Rmd b/scRNA-seq-advanced/02-dataset_integration.Rmd index d87519e7..b09a5ef0 100644 --- a/scRNA-seq-advanced/02-dataset_integration.Rmd +++ b/scRNA-seq-advanced/02-dataset_integration.Rmd @@ -240,7 +240,7 @@ As part of the custom function we'll write, we'll include a step to attach sampl We do this because we need to be able to unambiguously identify which sample a given cell came from, and it helps us avoid bugs! When merging, there can't be any duplicate column names (barcodes) across _all_ the objects or R will throw an error. -While you're guaranteed to have unique barcodes in a given SCE object, there is _no guarantee_ that they are unique across multiple samples - it is absolutely possible to have cells from two different samples share the same barcode (and we're seen it happen!). +While you're guaranteed to have unique barcodes in a given SCE object, there is _no guarantee_ that they are unique across multiple samples - it is absolutely possible to have cells from two different samples share the same barcode (and we've seen it happen!). Adding the sample id to the column names (barcodes) is therefore a crucial step in our merging bookkeeping. @@ -479,7 +479,7 @@ The integration methods we'll be using here actually perform batch correction on Before merging, our objects had reduced dimension representations calculated on each individual SCE, and we removed them when preparing for merge. We removed them because we don't actually want to use them anymore! This is because part of their calculation involves scaling the raw data to center the mean. -When samples are separately centered, _all_ of them will centered at zero making it look like the datasets are already pretty overlapping when you plot their UMAPs together. +When samples are separately centered, _all_ of them will be centered at zero, making it look like the datasets are already pretty overlapping when you plot their UMAPs together. But, this is just a mathematical artifact of how dimension reduction is performed. So, we'll begin by re-calculating PCA and UMAP on the merged object in a way that takes batches into consideration. From cde10f37ac6935459ebc8a56673a51b4e37638d4 Mon Sep 17 00:00:00 2001 From: Stephanie Spielman Date: Thu, 20 Nov 2025 11:48:54 -0500 Subject: [PATCH 025/148] Apply suggestions from code review Co-authored-by: Joshua Shapiro --- scRNA-seq-advanced/02-dataset_integration.Rmd | 38 +++++++++---------- 1 file changed, 17 insertions(+), 21 deletions(-) diff --git a/scRNA-seq-advanced/02-dataset_integration.Rmd b/scRNA-seq-advanced/02-dataset_integration.Rmd index b09a5ef0..e0a6655c 100644 --- a/scRNA-seq-advanced/02-dataset_integration.Rmd +++ b/scRNA-seq-advanced/02-dataset_integration.Rmd @@ -227,16 +227,17 @@ We'll approach this merge in two parts: + Then, we'll write (ok, we've written it for you) a _custom function_ to format each SCE object for merging, including: + Making any changes to ensure objects are compatible + Adding in identifying information so we know which sample the cells and other metadata came from - + Removing the existing reduced dimensions (PCA and UMAP). + + Removing the existing reduced dimension matrices (PCA and UMAP). This is because we'll want to recalculate these matrices on the merged objects, taking batch into account When merging objects on your own, don't skip these data exploration steps! The steps we take to prepare our SCEs will probably be different from the steps you need to take with other SCEs, and only by carefully exploring the objects can you figure out what steps you'll need to take to meet all of our conditions. -### Updating the column names (cell barcodes) +### Creating unique cell identifiers -As part of the custom function we'll write, we'll include a step to attach sample names to the SCE column names (cell barcodes): We'll change them (as a toy example) from `ACGT` --> `SampleName-ACGT`. +As part of the custom function we'll write, we'll include a step to create unique cell identifiers by attaching sample names to the SCE column names (cell barcodes). +For example, we would update the column name for a cell from `Sample1` with the barcode `ACGT` to `Sample1-ACGT`. We do this because we need to be able to unambiguously identify which sample a given cell came from, and it helps us avoid bugs! When merging, there can't be any duplicate column names (barcodes) across _all_ the objects or R will throw an error. @@ -314,7 +315,7 @@ Again, all objects are compatible already with both having a `counts` and `logco In your own data exploration, if you encounter SCEs to merge that have extraneous assays that you don't need, you can remove them by setting them to `NULL` in your custom formatting function, e.g. `assay(sce, "assay_to_remove") <- NULL`. -#### Bonus `rowData` exploration +#### `rowData` exploration One of the other items we said we'd need to think about is the `rowData`, which contains gene metadata. This slot is interesting because some of its columns are _specific_ to the given sample, while others are general: @@ -361,9 +362,10 @@ We also include roxygen-style comments for this function, which can be a helpful #' #' @returns An updated SCE object ready for merging format_sce <- function( - sce, - sample_name, - shared_genes) { + sce, + sample_name, + shared_genes +) { ### Remove the single-sample reduced dimensions # We do this first since it makes the object a lot smaller for the rest of this code! @@ -386,17 +388,13 @@ format_sce <- function( # Recall, we want to leave `gene_symbol` alone, but add the `sample_name` to the rest # We'll map over the column names and update the ones that _aren't_ `gene_symbol` using the # map function `purrr::map_chr()` which returns a character vector instead of a list - new_rowdata_names <- colnames(rowData(sce)) |> - purrr::map_chr( - \(colname) { - # if it's not gene_symbol, return an updated colum name with the `sample_name` included - if (colname == "gene_symbol") { - return(colname) - } else { - return( glue::glue("{sample_name}-{colname}") ) - } - } - ) + rowdata_names <- colnames(rowData(sce)) + # prefix rowData names with the sample name, except for gene symbols + new_rowdata_names <- ifelse( + rowdata_names == "gene_symbol", + "gene_symbol", + glue::glue("{sample_name}-{rowdata_names}") + ) colnames(rowData(sce)) <- new_rowdata_names ### Ensure metadata slot fields can be identified @@ -423,9 +421,7 @@ sce_list_formatted <- purrr::map2( sce_list, names(sce_list), # Name of the function to run - format_sce, - # Additional argument(s) to pass into the function - shared_genes + \(sce, sample_name) format_sce(sce, sample_name, shared_genes) ) # Print formatted SCE list From 74c245b590ce5159c015237b694a9a12b7f35abd Mon Sep 17 00:00:00 2001 From: Stephanie Spielman Date: Thu, 20 Nov 2025 12:25:53 -0500 Subject: [PATCH 026/148] Apply suggestions from code review Co-authored-by: Joshua Shapiro --- scRNA-seq-advanced/02-dataset_integration.Rmd | 1 - 1 file changed, 1 deletion(-) diff --git a/scRNA-seq-advanced/02-dataset_integration.Rmd b/scRNA-seq-advanced/02-dataset_integration.Rmd index e0a6655c..562b57fd 100644 --- a/scRNA-seq-advanced/02-dataset_integration.Rmd +++ b/scRNA-seq-advanced/02-dataset_integration.Rmd @@ -239,7 +239,6 @@ The steps we take to prepare our SCEs will probably be different from the steps As part of the custom function we'll write, we'll include a step to create unique cell identifiers by attaching sample names to the SCE column names (cell barcodes). For example, we would update the column name for a cell from `Sample1` with the barcode `ACGT` to `Sample1-ACGT`. -We do this because we need to be able to unambiguously identify which sample a given cell came from, and it helps us avoid bugs! When merging, there can't be any duplicate column names (barcodes) across _all_ the objects or R will throw an error. While you're guaranteed to have unique barcodes in a given SCE object, there is _no guarantee_ that they are unique across multiple samples - it is absolutely possible to have cells from two different samples share the same barcode (and we've seen it happen!). From 88135903de36ac6106d73639c98c7b9a22a71c43 Mon Sep 17 00:00:00 2001 From: "stephanie.spielman@gmail.com" Date: Thu, 20 Nov 2025 17:44:58 +0000 Subject: [PATCH 027/148] clean up deprecated comments, move up in function --- scRNA-seq-advanced/02-dataset_integration.Rmd | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/scRNA-seq-advanced/02-dataset_integration.Rmd b/scRNA-seq-advanced/02-dataset_integration.Rmd index 562b57fd..8f26e60b 100644 --- a/scRNA-seq-advanced/02-dataset_integration.Rmd +++ b/scRNA-seq-advanced/02-dataset_integration.Rmd @@ -370,6 +370,10 @@ format_sce <- function( # We do this first since it makes the object a lot smaller for the rest of this code! reducedDims(sce) <- NULL + ### Add dedicated sample indicator column to the colData slot + # Recall, the `sce$` shortcut points to the colData + sce$sample <- sample_name + ### Ensure objects have the same genes in the same order # Use the shared_genes vector to index genes to the intersection # Doing this both subsets to just those genes, and reorders! @@ -385,8 +389,6 @@ format_sce <- function( ### Ensure the rowData columns can be identified # Recall, we want to leave `gene_symbol` alone, but add the `sample_name` to the rest - # We'll map over the column names and update the ones that _aren't_ `gene_symbol` using the - # map function `purrr::map_chr()` which returns a character vector instead of a list rowdata_names <- colnames(rowData(sce)) # prefix rowData names with the sample name, except for gene symbols new_rowdata_names <- ifelse( @@ -400,9 +402,6 @@ format_sce <- function( # We'll simply prepend the `sample_name` to all fields for this slot names(metadata(sce)) <- glue::glue("{sample_name}-{names(metadata(sce))}") - ### Add dedicated sample indicator column to the colData slot - # Recall, the `sce$` shortcut points to the colData - sce$sample <- sample_name ### Finally, we can return the formatted SCE object return(sce) @@ -419,7 +418,6 @@ sce_list_formatted <- purrr::map2( # arguments `sce_list` and `names(sce_list)` in order sce_list, names(sce_list), - # Name of the function to run \(sce, sample_name) format_sce(sce, sample_name, shared_genes) ) From f900ff034127d52c2af7c56ebeea36895a172cfd Mon Sep 17 00:00:00 2001 From: "Stephanie J. Spielman" Date: Thu, 20 Nov 2025 14:14:58 -0500 Subject: [PATCH 028/148] parallel headers --- scRNA-seq-advanced/02-dataset_integration.Rmd | 20 +++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/scRNA-seq-advanced/02-dataset_integration.Rmd b/scRNA-seq-advanced/02-dataset_integration.Rmd index 8f26e60b..aa441e11 100644 --- a/scRNA-seq-advanced/02-dataset_integration.Rmd +++ b/scRNA-seq-advanced/02-dataset_integration.Rmd @@ -55,7 +55,7 @@ set.seed(12345) ``` -### Directories and files +### Define directories and files We have already prepared count data for the four samples we'll be integrating (i.e., filtered cells, normalized counts, and calculated PCA & UMAP). @@ -197,7 +197,7 @@ That said, the integration methods we will be applying _do not actually use_ any If we have annotations, they are a helpful "bonus" for assessing the integration's performance, but they are not part of the integration itself. -## Prepare the SCE list for integration +## Prepare the SCE list for merging ![Single-cell roadmap: Merge](diagrams/roadmap_multi_merge.png) @@ -234,7 +234,7 @@ When merging objects on your own, don't skip these data exploration steps! The steps we take to prepare our SCEs will probably be different from the steps you need to take with other SCEs, and only by carefully exploring the objects can you figure out what steps you'll need to take to meet all of our conditions. -### Creating unique cell identifiers +### Create unique cell identifiers As part of the custom function we'll write, we'll include a step to create unique cell identifiers by attaching sample names to the SCE column names (cell barcodes). For example, we would update the column name for a cell from `Sample1` with the barcode `ACGT` to `Sample1-ACGT`. @@ -314,10 +314,10 @@ Again, all objects are compatible already with both having a `counts` and `logco In your own data exploration, if you encounter SCEs to merge that have extraneous assays that you don't need, you can remove them by setting them to `NULL` in your custom formatting function, e.g. `assay(sce, "assay_to_remove") <- NULL`. -#### `rowData` exploration +#### Check the `rowData` contents One of the other items we said we'd need to think about is the `rowData`, which contains gene metadata. -This slot is interesting because some of its columns are _specific_ to the given sample, while others are general: +This slot is interesting because some of its columns are specific to the given sample, while others are general: ```{r little head rowdata} sce_list |> @@ -335,7 +335,8 @@ Once we eventually merge, only one `gene_symbol` column will be left in the fina We'll show one way to do this in our custom function, but it's worth noting there's nothing _wrong_ with also adding the sample id to the `gene_symbol` column; you'll just end up with a bunch of redundant gene symbol columns. -### Perform SCE merging + +### Merge the SCE list into one object As you can see, there's a lot of moving parts to consider! Again, these moving parts may (will!) differ for SCEs that you are working with, so you have to explore your own SCEs in depth to prepare for merging. @@ -460,7 +461,7 @@ head(rowData(merged_sce)) ``` -## Integration +## Integrate samples ![Single-cell roadmap: Integrate](diagrams/roadmap_multi_integrate.png) @@ -558,7 +559,7 @@ Let's discuss a little first: What visual differences do you think the UMAP on t What similarities do you think the integrated UMAP will have to this plot? -### Integration with `fastMNN` +### Integrate with `fastMNN` Finally, we're ready to integrate! To start, we'll use the `fastMNN` approach from the Bioconductor [`batchelor` package](http://www.bioconductor.org/packages/release/bioc/html/batchelor.html). @@ -705,8 +706,7 @@ scater::plotReducedDim(merged_sce, What trends do you observe between tumor and healthy tissues among these integrated samples? - -### Integration with `harmony` +### Integrate with `harmony` `fastMNN` is only one of many approaches to perform integration, and different methods have different capabilities and may give different results. For example, some methods can accommodate additional covariates (e.g., technology, patient, diagnosis, etc.) that can influence integration. From ab4ac1120dfc1b395a6dbae12be415b8a707daf0 Mon Sep 17 00:00:00 2001 From: "Stephanie J. Spielman" Date: Thu, 20 Nov 2025 14:17:47 -0500 Subject: [PATCH 029/148] one more --- scRNA-seq-advanced/02-dataset_integration.Rmd | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/scRNA-seq-advanced/02-dataset_integration.Rmd b/scRNA-seq-advanced/02-dataset_integration.Rmd index aa441e11..0af8cba4 100644 --- a/scRNA-seq-advanced/02-dataset_integration.Rmd +++ b/scRNA-seq-advanced/02-dataset_integration.Rmd @@ -336,7 +336,7 @@ Once we eventually merge, only one `gene_symbol` column will be left in the fina We'll show one way to do this in our custom function, but it's worth noting there's nothing _wrong_ with also adding the sample id to the `gene_symbol` column; you'll just end up with a bunch of redundant gene symbol columns. -### Merge the SCE list into one object +### Reformat the SCE objects As you can see, there's a lot of moving parts to consider! Again, these moving parts may (will!) differ for SCEs that you are working with, so you have to explore your own SCEs in depth to prepare for merging. @@ -429,6 +429,9 @@ sce_list_formatted (Psst, like `purrr` and want to dive deeper? Check out [the `purrr::imap()` function](https://purrr.tidyverse.org/reference/imap.html)!) +### Merge the SCE list into one object + + At long last, we are ready to merge the SCEs, which we'll do using the R function `cbind()`. The `cbind()` function is often used to combine data frames or matrices by column, i.e. "stack" them next to each other. The same principle applies here, but when run on SCE objects, `cbind()` will create a new SCE object by combining `counts` and `logcounts` matrices by column. From 0ca6cfb673c8dde2c4406b166420f75a2174e849 Mon Sep 17 00:00:00 2001 From: "Stephanie J. Spielman" Date: Thu, 20 Nov 2025 14:33:56 -0500 Subject: [PATCH 030/148] moar headers --- scRNA-seq-advanced/02-dataset_integration.Rmd | 20 ++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/scRNA-seq-advanced/02-dataset_integration.Rmd b/scRNA-seq-advanced/02-dataset_integration.Rmd index 0af8cba4..206a8c4d 100644 --- a/scRNA-seq-advanced/02-dataset_integration.Rmd +++ b/scRNA-seq-advanced/02-dataset_integration.Rmd @@ -197,7 +197,7 @@ That said, the integration methods we will be applying _do not actually use_ any If we have annotations, they are a helpful "bonus" for assessing the integration's performance, but they are not part of the integration itself. -## Prepare the SCE list for merging +## Merge the SCE list into one object ![Single-cell roadmap: Merge](diagrams/roadmap_multi_merge.png) @@ -234,7 +234,9 @@ When merging objects on your own, don't skip these data exploration steps! The steps we take to prepare our SCEs will probably be different from the steps you need to take with other SCEs, and only by carefully exploring the objects can you figure out what steps you'll need to take to meet all of our conditions. -### Create unique cell identifiers +### Prepare to merge SCEs + +#### Create unique cell identifiers As part of the custom function we'll write, we'll include a step to create unique cell identifiers by attaching sample names to the SCE column names (cell barcodes). For example, we would update the column name for a cell from `Sample1` with the barcode `ACGT` to `Sample1-ACGT`. @@ -245,9 +247,9 @@ While you're guaranteed to have unique barcodes in a given SCE object, there is Adding the sample id to the column names (barcodes) is therefore a crucial step in our merging bookkeeping. -### Explore the SCE objects +#### Explore the SCE objects -#### Check the genes +##### Check the genes First, we'll compare the object's genes (aka, their row names). We can use some `purrr` magic to help us find the set of shared genes among all objects: @@ -284,7 +286,7 @@ We could instead take the _union_ of genes so nothing gets thrown out. In this case, you'd need to create "dummy" assay rows for genes that a given SCE doesn't have and fill it with `NA` expression values. You'll still have to make sure the SCEs have the same rows in the same order before merging, so you may need to do a decent bit of matrix wrangling. -#### Check the `colData` column names +##### Check the `colData` column names Next up, we'll check the `colData` columns: we need these to be the same, and in the same order. Let's print out each object's `colData` column name to see where we stand: @@ -301,9 +303,9 @@ But what if there were different columns across objects, or they were differentl In that case, we could find the intersection of column names like we did above for genes, and use that to re-order and subset all `colData` slots in our custom formatting function. -#### Check the assays +##### Check the assays -Finally, we'll make sure that all objects share the same assays: +Next, we'll make sure that all objects share the same assays: ```{r assay names, live = TRUE} # print all the assay names @@ -314,7 +316,7 @@ Again, all objects are compatible already with both having a `counts` and `logco In your own data exploration, if you encounter SCEs to merge that have extraneous assays that you don't need, you can remove them by setting them to `NULL` in your custom formatting function, e.g. `assay(sce, "assay_to_remove") <- NULL`. -#### Check the `rowData` contents +##### Check the `rowData` contents One of the other items we said we'd need to think about is the `rowData`, which contains gene metadata. This slot is interesting because some of its columns are specific to the given sample, while others are general: @@ -429,7 +431,7 @@ sce_list_formatted (Psst, like `purrr` and want to dive deeper? Check out [the `purrr::imap()` function](https://purrr.tidyverse.org/reference/imap.html)!) -### Merge the SCE list into one object +### Perform the merging At long last, we are ready to merge the SCEs, which we'll do using the R function `cbind()`. From a7433ac838f7843665d7ffff658f2d1f3d30dc4b Mon Sep 17 00:00:00 2001 From: "Stephanie J. Spielman" Date: Thu, 20 Nov 2025 14:35:01 -0500 Subject: [PATCH 031/148] back up export --- scRNA-seq-advanced/02-dataset_integration.Rmd | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scRNA-seq-advanced/02-dataset_integration.Rmd b/scRNA-seq-advanced/02-dataset_integration.Rmd index 206a8c4d..57ab79d6 100644 --- a/scRNA-seq-advanced/02-dataset_integration.Rmd +++ b/scRNA-seq-advanced/02-dataset_integration.Rmd @@ -815,7 +815,7 @@ What do you now notice in this faceted view that wasn't clear previously? Are there other patterns you see that are similar or different from the `fastMNN` UMAP? How do you think `fastMNN` vs. `harmony` performed in integrating these samples? -### Export +## Export Finally, we'll export the final SCE object with both `fastMNN` and `harmony` integration to a file. Since this object is very large (over 1 GB!), we'll export it to a file with some compression, which, in this case, will reduce the final size to a smaller ~360 MB. From 02c0f50275b9a93be4f2e62f07533aa53c32638f Mon Sep 17 00:00:00 2001 From: "Stephanie J. Spielman" Date: Thu, 20 Nov 2025 14:36:59 -0500 Subject: [PATCH 032/148] hands --- scRNA-seq-advanced/02-dataset_integration.Rmd | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scRNA-seq-advanced/02-dataset_integration.Rmd b/scRNA-seq-advanced/02-dataset_integration.Rmd index 57ab79d6..849f4761 100644 --- a/scRNA-seq-advanced/02-dataset_integration.Rmd +++ b/scRNA-seq-advanced/02-dataset_integration.Rmd @@ -338,7 +338,7 @@ Once we eventually merge, only one `gene_symbol` column will be left in the fina We'll show one way to do this in our custom function, but it's worth noting there's nothing _wrong_ with also adding the sample id to the `gene_symbol` column; you'll just end up with a bunch of redundant gene symbol columns. -### Reformat the SCE objects +#### Reformat the SCE objects As you can see, there's a lot of moving parts to consider! Again, these moving parts may (will!) differ for SCEs that you are working with, so you have to explore your own SCEs in depth to prepare for merging. From ae92db640d538cbe528a1dd9a16bac8b777fe810 Mon Sep 17 00:00:00 2001 From: sjspielman <4701111+sjspielman@users.noreply.github.com> Date: Thu, 20 Nov 2025 20:47:15 +0000 Subject: [PATCH 033/148] Live and rendered notebooks --- RNA-seq/02-gastric_cancer_tximeta.nb.html | 4 +- .../01-read_filter_normalize_scRNA-live.Rmd | 23 +- .../01-read_filter_normalize_scRNA.nb.html | 82 +- .../02-dataset_integration-live.Rmd | 362 ++++---- .../02-dataset_integration.nb.html | 835 +++++++++--------- .../03-differential_expression-live.Rmd | 188 ++-- .../03-differential_expression.nb.html | 271 +++--- .../04-gene_set_enrichment_analysis-live.Rmd | 15 +- .../04-gene_set_enrichment_analysis.nb.html | 35 +- scRNA-seq-advanced/05-aucell-live.Rmd | 50 +- scRNA-seq-advanced/05-aucell.nb.html | 149 ++-- 11 files changed, 1069 insertions(+), 945 deletions(-) diff --git a/RNA-seq/02-gastric_cancer_tximeta.nb.html b/RNA-seq/02-gastric_cancer_tximeta.nb.html index 99d9795d..ce6fa77e 100644 --- a/RNA-seq/02-gastric_cancer_tximeta.nb.html +++ b/RNA-seq/02-gastric_cancer_tximeta.nb.html @@ -3264,8 +3264,8 @@

Summarize to gene

# Summarize to the gene level
 gene_summarized <- summarizeToGene(txi_data)
- -
loading existing EnsDb created: 2025-07-16 21:08:01
+ +
loading existing EnsDb created: 2025-11-20 20:30:47
obtaining transcript-to-gene mapping from database
diff --git a/scRNA-seq-advanced/01-read_filter_normalize_scRNA-live.Rmd b/scRNA-seq-advanced/01-read_filter_normalize_scRNA-live.Rmd index 18140bb7..cf5c9cb3 100644 --- a/scRNA-seq-advanced/01-read_filter_normalize_scRNA-live.Rmd +++ b/scRNA-seq-advanced/01-read_filter_normalize_scRNA-live.Rmd @@ -93,8 +93,10 @@ normalized_dir <- file.path(data_dir, "normalized") fs::dir_create(normalized_dir) # output RDS file for normalized data -output_sce_file <- file.path(normalized_dir, - "glioblastoma_normalized_sce.rds") +output_sce_file <- file.path( + normalized_dir, + "glioblastoma_normalized_sce.rds" +) ``` @@ -106,7 +108,7 @@ Whether the 10x Cell Ranger data is in Matrix Exchange format or in an HDF5 file (Though again, we do not recommend using the `.h5` file if you can avoid it, _especially_ for raw (unfiltered) data.) If you used something other than Cell Ranger to process the raw data, you would need to use a different function to read it in and create the `SingleCellExperiment` object. -Some of these functions for other common data formats are discussed in [Chapter 3 of OSCA] (http://bioconductor.org/books/3.19/OSCA.intro/getting-scrna-seq-datasets.html#reading-counts-into-r). +Some of these functions for other common data formats are discussed in [Chapter 3 of OSCA](http://bioconductor.org/books/3.19/OSCA.intro/getting-scrna-seq-datasets.html#reading-counts-into-r). ```{r read SCE, live=TRUE} # read SCE from matrix directory @@ -327,8 +329,11 @@ We stick with that default, but for clarity, we will also include it in our code ```{r miQC plotFiltering} # look at miQC filtering -miQC::plotFiltering(filtered_sce, miqc_model, - posterior_cutoff = 0.75) + +miQC::plotFiltering( + filtered_sce, + miqc_model, + posterior_cutoff = 0.75 +) + theme_bw() ``` @@ -409,8 +414,10 @@ num_genes <- 2000 gene_variance <- scran::modelGeneVar(normalized_sce) # get the most variable genes -hv_genes <- scran::getTopHVGs(gene_variance, - n = num_genes) +hv_genes <- scran::getTopHVGs( + gene_variance, + n = num_genes +) ``` The result is a vector of gene ids (ordered from most to least variable): @@ -476,7 +483,7 @@ We can also visualize the UMAP results using the `plotReducedDim()` function. ```{r plotReducedDim, live=TRUE} # plot the UMAP - # color by the most variable gene + # color by the most variable gene ``` diff --git a/scRNA-seq-advanced/01-read_filter_normalize_scRNA.nb.html b/scRNA-seq-advanced/01-read_filter_normalize_scRNA.nb.html index dd2bf48f..6f2dc05a 100644 --- a/scRNA-seq-advanced/01-read_filter_normalize_scRNA.nb.html +++ b/scRNA-seq-advanced/01-read_filter_normalize_scRNA.nb.html @@ -3107,7 +3107,7 @@

Directories and files

- +
# Outputs ------------------------------------
 
 # Directory and file to save output
@@ -3117,8 +3117,10 @@ 

Directories and files

fs::dir_create(normalized_dir) # output RDS file for normalized data -output_sce_file <- file.path(normalized_dir, - "glioblastoma_normalized_sce.rds")
+output_sce_file <- file.path( + normalized_dir, + "glioblastoma_normalized_sce.rds" +) @@ -3139,7 +3141,8 @@

Reading Cell Ranger data

If you used something other than Cell Ranger to process the raw data, you would need to use a different function to read it in and create the SingleCellExperiment object. Some of these functions for -other common data formats are discussed in [Chapter 3 of OSCA] (http://bioconductor.org/books/3.19/OSCA.intro/getting-scrna-seq-datasets.html#reading-counts-into-r).

+other common data formats are discussed in Chapter +3 of OSCA.

@@ -3490,9 +3493,11 @@

Calculating summary QC statistics

more subsets, but for now this one will do.)

- -
filtered_sce <- scuttle::addPerCellQC(filtered_sce,
-                                      subsets = list(mito = mito_genes))
+ +
filtered_sce <- scuttle::addPerCellQC(
+  filtered_sce,
+  subsets = list(mito = mito_genes)
+)
@@ -3616,10 +3621,13 @@

Filtering compromised cells

also include it in our code!

- +
# look at miQC filtering
-miQC::plotFiltering(filtered_sce, miqc_model,
-                    posterior_cutoff = 0.75) +
+miQC::plotFiltering(
+  filtered_sce,
+  miqc_model,
+  posterior_cutoff = 0.75
+) +
   theme_bw()
@@ -3637,10 +3645,12 @@

Filtering compromised cells

object.

- +
# perform miQC filtering
-qcfiltered_sce <- miQC::filterCells(filtered_sce,
-                                    model = miqc_model)
+qcfiltered_sce <- miQC::filterCells( + filtered_sce, + model = miqc_model +)
Removing 387 out of 1626 cells.
@@ -3705,13 +3715,15 @@

Normalization

scuttle::logNormCounts() function.

- +
# Perform rough clustering
 qclust <- scran::quickCluster(qcfiltered_sce)
 
 # use clusters to compute scaling factors and add to SCE object
-qcfiltered_sce <- scran::computeSumFactors(qcfiltered_sce,
-                                           clusters = qclust)
+qcfiltered_sce <- scran::computeSumFactors(
+  qcfiltered_sce,
+  clusters = qclust
+)
 
 # perform normalization using scaling factors
 # and save as a new SCE object
@@ -3777,7 +3789,7 @@ 

Selecting highly variable genes

variation, which is what we are most interested in.

- +
# identify 2000 genes
 num_genes <- 2000
 
@@ -3785,8 +3797,10 @@ 

Selecting highly variable genes

gene_variance <- scran::modelGeneVar(normalized_sce) # get the most variable genes -hv_genes <- scran::getTopHVGs(gene_variance, - n = num_genes)
+hv_genes <- scran::getTopHVGs( + gene_variance, + n = num_genes +)
@@ -3907,9 +3921,11 @@

UMAP

recalculating it.

- -
normalized_sce <- scater::runUMAP(normalized_sce,
-                                  dimred = "PCA")
+ +
normalized_sce <- scater::runUMAP(
+  normalized_sce,
+  dimred = "PCA"
+)
@@ -3918,12 +3934,14 @@

UMAP

results using the plotReducedDim() function.

- +
# plot the UMAP
-scater::plotReducedDim(normalized_sce,
-                       "UMAP",
-                       # color by the most variable gene
-                       color_by = hv_genes[1])
+scater::plotReducedDim( + normalized_sce, + "UMAP", + # color by the most variable gene + color_by = hv_genes[1] +)

@@ -4003,10 +4021,12 @@

Unsupervised clustering

we can skip that argument.

- +
# plot UMAP with assigned clusters
-scater::plotUMAP(normalized_sce,
-                 color_by = "nn_cluster")
+scater::plotUMAP( + normalized_sce, + color_by = "nn_cluster" +)

@@ -4141,7 +4161,7 @@

Print session info

-
LS0tCnRpdGxlOiAiUmVhZGluZywgZmlsdGVyaW5nLCBhbmQgbm9ybWFsaXppbmcgc2NSTkEtc2VxIGRhdGEiCmF1dGhvcjogRGF0YSBMYWIgZm9yIEFMU0YKZGF0ZTogMjAyMwpvdXRwdXQ6CiAgaHRtbF9ub3RlYm9vazoKICAgIHRvYzogdHJ1ZQogICAgdG9jX2Zsb2F0OiB0cnVlCi0tLQoKIyMgT2JqZWN0aXZlcwoKVGhpcyBub3RlYm9vayB3aWxsIGRlbW9uc3RyYXRlIGhvdyB0bzoKCi0gUmVhZCBDZWxsIFJhbmdlciBkYXRhIGludG8gUgotIEZpbHRlciB0byBjZWxscyB1c2luZyBgZW1wdHlEcm9wc0NlbGxSYW5nZXIoKWAKLSBDYWxjdWxhdGUgcXVhbGl0eSBjb250cm9sIG1lYXN1cmVzIG9uIHNjUk5BLXNlcSBkYXRhCi0gUmVtb3ZlIGxpa2VseSBjb21wcm9taXNlZCBjZWxscyB3aXRoIGBtaVFDKClgCi0gTm9ybWFsaXplIGV4cHJlc3Npb24gZGF0YSBhY3Jvc3MgY2VsbHMKLSBDYWxjdWxhdGUgYW5kIHBsb3QgcmVkdWNlZCBkaW1lbnNpb24gcmVwcmVzZW50YXRpb25zIG9mIGV4cHJlc3Npb24gZGF0YSAoUENBLCBVTUFQKQoKLS0tCgpJbiB0aGlzIG5vdGVib29rLCB3ZSB3aWxsIHJldmlldyBiYXNpYyBwcm9jZXNzaW5nIGZvciBzaW5nbGUtY2VsbCBSTkEtc2VxIGRhdGEsIHN0YXJ0aW5nIHdpdGggdGhlIG91dHB1dCBmcm9tIENlbGwgUmFuZ2VyLCBhbmQgcHJvY2VlZGluZyB0aHJvdWdoIGZpbHRlcmluZywgcXVhbGl0eSBjb250cm9sLCBub3JtYWxpemF0aW9uLCBhbmQgZGltZW5zaW9uIHJlZHVjdGlvbi4gV2Ugd2lsbCBwZXJmb3JtIHRoZXNlIHRhc2tzIHVzaW5nIHRvb2xzIGZyb20gdGhlIFtCaW9jb25kdWN0b3IgcHJvamVjdF0oaHR0cHM6Ly9iaW9jb25kdWN0b3Iub3JnKSwgaW4gcGFydGljdWxhciBbYFNpbmdsZUNlbGxFeHBlcmltZW50YCBvYmplY3RzXShodHRwczovL2Jpb2NvbmR1Y3Rvci5vcmcvcGFja2FnZXMvcmVsZWFzZS9iaW9jL2h0bWwvU2luZ2xlQ2VsbEV4cGVyaW1lbnQuaHRtbCkgYW5kIGZ1bmN0aW9ucyB0aGF0IHdvcmsgd2l0aCB0aG9zZSBvYmplY3RzLgpNdWNoIG9mIHRoZSBtYXRlcmlhbCBpbiB0aGlzIG5vdGVib29rIGlzIGRpcmVjdGx5IGluc3BpcmVkIGJ5LCBhbmQgZHJhd3MgaGVhdmlseSBvbiwgbWF0ZXJpYWwgcHJlc2VudGVkIGluIHRoZSBib29rIFtfT3JjaGVzdHJhdGluZyBTaW5nbGUgQ2VsbCBBbmFseXNpcyB3aXRoIEJpb2NvbmR1Y3Rvcl8gKE9TQ0EpXShodHRwOi8vYmlvY29uZHVjdG9yLm9yZy9ib29rcy9yZWxlYXNlL09TQ0EvKS4KCiFbU2luZ2xlLWNlbGwgcm9hZG1hcDogT3ZlcnZpZXddKGRpYWdyYW1zL3JvYWRtYXBfc2luZ2xlX292ZXJ2aWV3LnBuZykKClRoZSBkYXRhIHdlIHdpbGwgdXNlIGZvciB0aGlzIG5vdGVib29rIGlzIGRlcml2ZWQgZnJvbSBhIGh1bWFuIGdsaW9ibGFzdG9tYSBzcGVjaW1lbi4KVGhlIHNhbXBsZSB3YXMgcHJvY2Vzc2VkIGJ5IDEweCBHZW5vbWljcyB1c2luZyBhIDMnIFJOQSBraXQgKHYzLjEpLCBzZXF1ZW5jZWQsIGFuZCBxdWFudGlmaWVkIHdpdGggQ2VsbCBSYW5nZXIgNi4wLgpGdXJ0aGVyIGRldGFpbHMgYWJvdXQgdGhlIHNhbXBsZSBhbmQgcHJvY2Vzc2luZyBjYW4gYmUgZm91bmQgb24gdGhlIFsxMHggd2Vic2l0ZV0oaHR0cHM6Ly93d3cuMTB4Z2Vub21pY3MuY29tL3Jlc291cmNlcy9kYXRhc2V0cy8yLWstc29ydGVkLWNlbGxzLWZyb20taHVtYW4tZ2xpb2JsYXN0b21hLW11bHRpZm9ybWUtMy12LTMtMS0zLTEtc3RhbmRhcmQtNi0wLTApLgoKCiMjIFNldCBVcAoKVG8gc3RhcnQsIHdlIHdpbGwgbG9hZCBzb21lIG9mIHRoZSBsaWJyYXJpZXMgd2Ugd2lsbCBuZWVkIGxhdGVyLCBhbmQgc2V0IGEgcmFuZG9tIG51bWJlciBzZWVkIGZvciByZXByb2R1Y2liaWxpdHkuCgpgYGB7ciBzZXR1cH0KIyBMb2FkIGxpYnJhcmllcwoKIyBQbG90dGluZyBmdW5jdGlvbnMKbGlicmFyeShnZ3Bsb3QyKQoKIyBUaGUgbWFpbiBjbGFzcyB3ZSB3aWxsIHVzZSBmb3IgU2luZ2xlIENlbGwgZGF0YQpsaWJyYXJ5KFNpbmdsZUNlbGxFeHBlcmltZW50KQoKIyBTZXR0aW5nIHRoZSBzZWVkIGZvciByZXByb2R1Y2liaWxpdHkKc2V0LnNlZWQoMTIzNDUpCmBgYAoKIyMjIERpcmVjdG9yaWVzIGFuZCBmaWxlcwoKQmVmb3JlIHdlIGdldCB0b28gZmFyLCB3ZSBsaWtlIHRvIGRlZmluZSB0aGUgaW5wdXQgYW5kIG91dHB1dCBmaWxlcyB0aGF0IHRoZSBub3RlYm9vayB3aWxsIHVzZSBuZWFyIHRoZSB0b3Agb2YgdGhlIGRvY3VtZW50LgpXaGlsZSB5b3UgbWlnaHQgbm90IGtub3cgdGhlIG5hbWVzIG9mIGFsbCBvZiB0aGUgZmlsZXMgeW91IHdpbGwgbmVlZCBvciBjcmVhdGUgb3V0cHV0IGZpbGVzIHdoZW4geW91IHN0YXJ0IGFuIGFuYWx5c2lzLCB3ZSBoYXZlIGZvdW5kIGl0IGhlbHBmdWwgdG8ga2VlcCBhbGwgZmlsZSBhbmQgZGlyZWN0b3J5IG5hbWVzIGluIGEgc2luZ2xlIHBsYWNlIG5lYXIgdGhlIHRvcCBvZiB0aGUgZG9jdW1lbnQuClRoaXMgbWFrZXMgaXQgZWFzaWVyIGZvciBzb21lYm9keSBjb21pbmcgdG8gdGhlIGNvZGUgbGF0ZXIgdG8gcXVpY2tseSBzZWUgd2hhdCBmaWxlcyBhcmUgbmVlZGVkIGFzIGlucHV0IGFuZCB3aGF0IHdpbGwgYmUgcHJvZHVjZWQgYXMgb3V0cHV0LgpNb3JlIG9mdGVuIHRoYW4gbm90LCB0aGF0IHNvbWVib2R5IGlzIHlvdSEKClRoZSBnZW5lIGV4cHJlc3Npb24gZGF0YSB3ZXJlIHByb2Nlc3NlZCB0byBjcmVhdGUgYSBnZW5lLWJ5LWNlbGwgZXhwcmVzc2lvbiBtYXRyaXggb2YgY291bnRzIGZvciB1c2luZyBDZWxsIFJhbmdlciA2LjAuCldlIGhhdmUgcHJvdmlkZWQgdGhlIHJhdyBkYXRhIGRpcmVjdG9yeSwgYHJhd19mZWF0dXJlX2JjX21hdHJpeGAsIHdoaWNoIGlzIHVzdWFsbHkgcHJvZHVjZWQgYnkgQ2VsbCBSYW5nZXIgYW5kIHBsYWNlZCBpbiBpdHMgYG91dHNgIGRpcmVjdG9yeS4KVGhpcyBkaXJlY3RvcnkgdXN1YWxseSBjb250YWlucyB0aHJlZSBmaWxlczoKLSBgYmFyY29kZXMudHN2Lmd6YCwgYSB0YWJsZSBvZiB0aGUgY2VsbCBiYXJjb2RlcyB0aGF0IDEweCB1c2VzLCBjb3JyZXNwb25kaW5nIHRvIHRoZSBjb2x1bW5zIG9mIHRoZSBjb3VudCBtYXRyaXguCi0gYGZlYXR1cmVzLnRzdi5nemAsIGEgdGFibGUgb2YgdGhlIGZlYXR1cmVzIChnZW5lcyBpbiB0aGlzIGNhc2UpIGZvciB3aGljaCBleHByZXNzaW9uIHdhcyBxdWFudGlmaWVkLgpUaGlzIHdpbGwgdXN1YWxseSBhbHNvIGluY2x1ZGUgYSBiaXQgb2YgbWV0YWRhdGEgYWJvdXQgdGhlIGZlYXR1cmVzLCBpbmNsdWRpbmcgZ2VuZSBzeW1ib2xzIChpZiB0aGUgZmVhdHVyZXMgYXJlIGdlbmVzKSBhbmQgdGhlIHR5cGUgb2YgZGF0YSB0aGV5IHJlcHJlc2VudCAoZS5nLiwgZ2VuZSBleHByZXNzaW9uIG9yIGFudGlib2R5IGNhcHR1cmUpLgotIGBtYXRyaXgubXR4Lmd6YCwgVGhlIGNvdW50cyB0aGVtc2VsdmVzLCBzdG9yZWQgaW4gYSBzcGFyc2UgWyJNYXRyaXggRXhjaGFuZ2UiIGZvcm1hdF0oaHR0cHM6Ly9tYXRoLm5pc3QuZ292L01hdHJpeE1hcmtldC9mb3JtYXRzLmh0bWwpLgoKQ2VsbCBSYW5nZXIgd2lsbCBhbHNvIGV4cG9ydCB0aGVzZSBkYXRhIGluIGEgc2luZ2xlIGBIREY1YCBmb3JtYXQgZmlsZSB3aXRoIGEgYC5oNWAgZXh0ZW5zaW9uLCB3aGljaCBjYW4gYWxzbyBiZSBpbXBvcnRlZCB3aXRoIHRoZSBzYW1lIGNvbW1hbmRzIHdlIHdpbGwgdXNlIGJlbG93LgpIb3dldmVyLCB3ZSBoYXZlIGZvdW5kIHRoYXQgcHJvY2Vzc2luZyBsYXJnZSBgLmg1YCBmaWxlcyBpcyBvZnRlbiBfbXVjaF8gbGVzcyBlZmZpY2llbnQgaW4gUiwgc28gd2UgcHJlZmVyIHRvIHN0YXJ0IHdpdGggdGhlIG1hdHJpeCBmaWxlcyB3aGVuIHBvc3NpYmxlLgpJbiBwYXJ0aWN1bGFyLCB3ZSB3b3VsZCBub3QgcmVjb21tZW5kIHdvcmtpbmcgd2l0aCBgLmg1YCBmaWxlcyBmb3IgcmF3IGRhdGE7IHRoZSBmaWx0ZXJpbmcgc3RlcHMgd2Ugd2lsbCB1c2UgYmVsb3cgY2FuIHNvbWV0aW1lcyB0YWtlIGhvdXJzIHdoZW4gdXNpbmcgdGhvc2UgZmlsZXMgYXMgaW5wdXQuCgpXZSB3aWxsIGFsc28gbmVlZCBhIHRhYmxlIG9mIG1pdG9jaG9uZHJpYWwgZ2VuZXMsIHdoaWNoIHdlIGhhdmUgc3RvcmVkIGluIHRoZSBgZGF0YS9yZWZlcmVuY2UvYCBkaXJlY3RvcnkuCgpGaW5hbGx5LCB3ZSB3aWxsIHNldCB1cCB0aGUgb3VyIG91dHB1dCBkaXJlY3RvcnksIGNyZWF0aW5nIGl0IGlmIGl0IGRvZXMgbm90IHlldCBleGlzdCwgYW5kIGRlZmluZSB0aGUgbmFtZSBmb3IgdGhlIGZpbGVzIHdlIHdpbGwgc2F2ZSBhZnRlciBhbGwgb2Ygb3VyIGluaXRpYWwgcHJvY2Vzc2luZyBpcyBjb21wbGV0ZS4KCmBgYHtyIGlucHV0cywgbGl2ZT1UUlVFfQojIElucHV0cyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIG1haW4gZGF0YSBkaXJlY3RvcnkKZGF0YV9kaXIgPC0gZmlsZS5wYXRoKCJkYXRhIiwgImdsaW9ibGFzdG9tYS0xMHgiKQoKIyBQYXRoIHRvIHRoZSBDZWxsIFJhbmdlciBtYXRyaXggZGlyZWN0b3J5CnJhd19tYXRyaXhfZGlyIDwtIGZpbGUucGF0aChkYXRhX2RpciwgInJhd19mZWF0dXJlX2JjX21hdHJpeCIpCgojIHJlZmVyZW5jZSBkYXRhIGRpcmVjdG9yeQpyZWZfZGlyIDwtIGZpbGUucGF0aCgiZGF0YSIsICJyZWZlcmVuY2UiKQoKIyBQYXRoIHRvIG1pdG9jaG9uZHJpYWwgZ2VuZXMgdGFibGUKbWl0b19maWxlIDwtIGZpbGUucGF0aChyZWZfZGlyLCAiaHNfbWl0b2Nob25kcmlhbF9nZW5lcy50c3YiKQpgYGAKCmBgYHtyIG91dHB1dHN9CiMgT3V0cHV0cyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCiMgRGlyZWN0b3J5IGFuZCBmaWxlIHRvIHNhdmUgb3V0cHV0Cm5vcm1hbGl6ZWRfZGlyIDwtIGZpbGUucGF0aChkYXRhX2RpciwgIm5vcm1hbGl6ZWQiKQoKIyBjcmVhdGUgdGhlIGRpcmVjdG9yeSBpZiBpdCBkb2VzIG5vdCBleGlzdApmczo6ZGlyX2NyZWF0ZShub3JtYWxpemVkX2RpcikKCiMgb3V0cHV0IFJEUyBmaWxlIGZvciBub3JtYWxpemVkIGRhdGEKb3V0cHV0X3NjZV9maWxlIDwtIGZpbGUucGF0aChub3JtYWxpemVkX2RpciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZ2xpb2JsYXN0b21hX25vcm1hbGl6ZWRfc2NlLnJkcyIpCmBgYAoKCiMjIFJlYWRpbmcgQ2VsbCBSYW5nZXIgZGF0YQoKIVtTaW5nbGUtY2VsbCByb2FkbWFwOiBQcmVwcm9jZXNzIGFuZCBJbXBvcnRdKGRpYWdyYW1zL3JvYWRtYXBfc2luZ2xlX3ByZXByb2Nlc3MucG5nKQoKV2hldGhlciB0aGUgMTB4IENlbGwgUmFuZ2VyIGRhdGEgaXMgaW4gTWF0cml4IEV4Y2hhbmdlIGZvcm1hdCBvciBpbiBhbiBIREY1IGZpbGUsIHdlIGNhbiB1c2UgdGhlIGByZWFkMTB4Q291bnRzKClgIGZ1bmN0aW9uIGZyb20gdGhlIGBEcm9wbGV0VXRpbHNgIHBhY2thZ2UgdG8gcmVhZCB0aGUgZGF0YSBpbnRvIFIgYW5kIGNyZWF0ZSBhIGBTaW5nbGVDZWxsRXhwZXJpbWVudGAgb2JqZWN0LgooVGhvdWdoIGFnYWluLCB3ZSBkbyBub3QgcmVjb21tZW5kIHVzaW5nIHRoZSBgLmg1YCBmaWxlIGlmIHlvdSBjYW4gYXZvaWQgaXQsIF9lc3BlY2lhbGx5XyBmb3IgcmF3ICh1bmZpbHRlcmVkKSBkYXRhLikKCklmIHlvdSB1c2VkIHNvbWV0aGluZyBvdGhlciB0aGFuIENlbGwgUmFuZ2VyIHRvIHByb2Nlc3MgdGhlIHJhdyBkYXRhLCB5b3Ugd291bGQgbmVlZCB0byB1c2UgYSBkaWZmZXJlbnQgZnVuY3Rpb24gdG8gcmVhZCBpdCBpbiBhbmQgY3JlYXRlIHRoZSBgU2luZ2xlQ2VsbEV4cGVyaW1lbnRgIG9iamVjdC4KU29tZSBvZiB0aGVzZSBmdW5jdGlvbnMgZm9yIG90aGVyIGNvbW1vbiBkYXRhIGZvcm1hdHMgYXJlIGRpc2N1c3NlZCBpbiBbQ2hhcHRlciAzIG9mIE9TQ0FdIChodHRwOi8vYmlvY29uZHVjdG9yLm9yZy9ib29rcy8zLjE5L09TQ0EuaW50cm8vZ2V0dGluZy1zY3JuYS1zZXEtZGF0YXNldHMuaHRtbCNyZWFkaW5nLWNvdW50cy1pbnRvLXIpLgoKYGBge3IgcmVhZCBTQ0UsIGxpdmU9VFJVRX0KIyByZWFkIFNDRSBmcm9tIG1hdHJpeCBkaXJlY3RvcnkKcmF3X3NjZSA8LSBEcm9wbGV0VXRpbHM6OnJlYWQxMHhDb3VudHMoCiAgcmF3X21hdHJpeF9kaXIsCiAgY29sLm5hbWVzID0gVFJVRSAjIGVuc3VyZSBiYXJjb2RlcyBhcmUgc2V0IGFzIGNvbHVtbiBuYW1lcyBpbiB0aGUgU0NFIG9iamVjdAopCmBgYAoKTGV0J3MgbG9vayBhdCB0aGUgY29udGVudHMgb2YgdGhlIG9iamVjdCBhZnRlciByZWFkaW5nIGl0IGluOgoKYGBge3IgdmlldyBTQ0UsIGxpdmU9VFJVRX0KIyB2aWV3IFNDRSBvYmplY3QKcmF3X3NjZQpgYGAKCldlIGNhbiBzZWUgZnJvbSB0aGlzIHN1bW1hcnkgdGhhdCB0aGlzIGBTaW5nbGVDZWxsRXhwZXJpbWVudGAgKFNDRSkgb2JqZWN0IGNvbnRhaW5zIDM2LDYwMSByb3dzLCB3aGljaCBjb3JyZXNwb25kIHRvIHRoZSBmZWF0dXJlcyAoZ2VuZXMpIHRoYXQgd2VyZSBhbmFseXplZCwgYW5kIDczNCw0OTIgY29sdW1ucywgd2hpY2ggY29ycmVzcG9uZCB0byB0aGUgcG9zc2libGUgYmFyY29kZSB0YWdzIHRoYXQgd2VyZSB1c2VkIGluIHRoZSBleHBlcmltZW50LgpOb3RlIHRoYXQgbm90IGFsbCBvZiB0aGVzZSBiYXJjb2RlIHRhZ3Mgd2lsbCBoYXZlIGJlZW4gdXNlZCwgYW5kIG1hbnkgb2YgdGhlIGZlYXR1cmVzIG1heSBuZXZlciBoYXZlIGJlZW4gc2VlbiBlaXRoZXIuCk9uZSBvZiBvdXIgZmlyc3Qgc3RlcHMgd2lsbCBiZSB0byBmaWx0ZXIgb3V0IGJhcmNvZGVzIHRoYXQgd2VyZSBuZXZlciBzZWVuLCBvciB0aGF0IG1heSBoYXZlIG9ubHkgYmVlbiBzZWVuIGluIGEgZHJvcGxldCB0aGF0IGRpZCBub3QgY29udGFpbiBhIGNlbGwgKGFuICJlbXB0eSBkcm9wbGV0IikuCgojIyMgU3RydWN0dXJlIG9mIHRoZSBgU2luZ2xlQ2VsbEV4cGVyaW1lbnRgIG9iamVjdAoKSW4gYWRkaXRpb24gdG8gdGhlIG1haW4gYGNvdW50c2AgbWF0cml4LCBsaXN0ZWQgYXMgYW4gYGFzc2F5YCBpbiB0aGUgU0NFIHN1bW1hcnkgYWJvdmUsIHRoZSBTQ0Ugb2JqZWN0IGNhbiBjb250YWluIGEgbnVtYmVyIG9mIG90aGVyIHRhYmxlcyBhbmQgbWF0cmljZXMsIGVhY2ggc3RvcmVkIGluIGEgInNsb3QiIHdpdGggYSBwYXJ0aWN1bGFyIGZvcm1hdC4KVGhlIG92ZXJhbGwgc3RydWN0dXJlIG9mIHRoZSBvYmplY3QgY2FuIGJlIHNlZW4gaW4gdGhlIGZpZ3VyZSBiZWxvdywgd2hpY2ggY29tZXMgZnJvbSBhbiBbT1NDQSBJbnRyb2R1Y3Rpb24gY2hhcHRlcl0oaHR0cDovL2Jpb2NvbmR1Y3Rvci5vcmcvYm9va3MvMy4xOS9PU0NBLmludHJvL3RoZS1zaW5nbGVjZWxsZXhwZXJpbWVudC1jbGFzcy5odG1sKS4KCiFbU3RydWN0dXJlIG9mIGEgU2luZ2xlQ2VsbEV4cGVyaW1lbnQgb2JqZWN0XShkaWFncmFtcy9TaW5nbGVDZWxsRXhwZXJpbWVudC5wbmcpCgpXZSBoYXZlIGp1c3QgbWVudGlvbmVkIHRoZSBtYWluIGBhc3NheWAgc2xvdCwgd2hpY2ggY29udGFpbnMgZnVsbCBtYXRyaWNlcyBvZiBkYXRhIChzdWNoIGFzIHRyYW5zY3JpcHQgY291bnRzKSB3aXRoIGVhY2ggcm93IGEgZmVhdHVyZSBhbmQgZWFjaCBjb2x1bW4gYSBjZWxsLgpUaGVyZSBhcmUgYWxzbyBhIGNvdXBsZSBvZiB0YWJsZXMgZm9yIG1ldGFkYXRhLCBhbmQgYSBzbG90IHRvIHN0b3JlIHJlZHVjZWQtZGltZW5zaW9uIHJlcHJlc2VudGF0aW9ucyAoZS5nLiwgUENBIGFuZC9vciBVTUFQKSBvZiB0aGUgZXhwcmVzc2lvbiBkYXRhLgoKV2UnbGwgc3RhcnQgd2l0aCB0aGUgYHJvd0RhdGFgIHNsb3QsIHdoaWNoIGlzIGEgdGFibGUgb2YgbWV0YWRhdGEgZm9yIGVhY2ggZmVhdHVyZSBpbiBvdXIgb2JqZWN0LgpGb3Igbm93IHRoYXQgY29udGFpbnMgdGhlIGNvbnRlbnRzIG9mIHRoZSBgZmVhdHVyZXMudHN2Lmd6YCBmaWxlIHRoYXQgd2UgZGlzY3Vzc2VkIGVhcmxpZXIuCklmIHdlIGhhZCByZWFkIHRoZSBkYXRhIGZyb20gc29tZXRoaW5nIG90aGVyIHRoYW4gQ2VsbCBSYW5nZXIgb3V0cHV0LCB3ZSBtaWdodCBoYXZlIGRpZmZlcmVudCBjb250ZW50cywgYnV0IGVhY2ggcm93IHdvdWxkIHN0aWxsIGNvcnJlc3BvbmQgdG8gYSBzaW5nbGUgZmVhdHVyZSBvZiB0aGUgU0NFIG9iamVjdC4KCkxldCdzIGxvb2sgYXQgdGhpcyB0YWJsZSwgZXh0cmFjdGluZyBpdCBmcm9tIHRoZSBTQ0Ugb2JqZWN0IHdpdGggdGhlIGByb3dEYXRhKClgIGZ1bmN0aW9uIGFuZCB1c2luZyBgaGVhZCgpYCB0byB2aWV3IG9ubHkgdGhlIGZpcnN0IDYgcm93cy4KCmBgYHtyIHJvd2RhdGF9CiMgdmlldyByb3dEYXRhIChmZWF0dXJlcykKaGVhZChyb3dEYXRhKHJhd19zY2UpKQpgYGAKCllvdSBjYW4gc2VlIHRoYXQgdGhpcyB0YWJsZSBpbmNsdWRlcyBhbiBgSURgIGZvciBlYWNoIGZlYXR1cmUsIHdoaWNoIGlzIHVzdWFsbHkgdGhlIEVuc2VtYmwgZ2VuZSBJRCwgYXMgd2VsbCBhcyB0aGUgY29ycmVzcG9uZGluZyBnZW5lIHN5bWJvbCBpbiB0aGUgYFN5bWJvbGAgY29sdW1uLgpGaW5hbGx5IHRoZXJlIGlzIGEgY29sdW1uIGZvciBgVHlwZWAsIHdoaWNoIGluIHRoaXMgY2FzZSBpcyBhbHdheXMgIkdlbmUgRXhwcmVzc2lvbiIsIGFzIGFsbCBvZiB0aGUgZmVhdHVyZXMgaW4gdGhpcyBkYXRhIHNldCBhcmUgZ2VuZXMuCklmIHRoZXJlIHdlcmUgYW5vdGhlciBtb2RhbGl0eSBvZiBkYXRhIHRoYXQgaGFkIGJlZW4gYXNzYXllZCBpbiB0aGlzIGV4cGVyaW1lbnQsIHRoZXJlIG1pZ2h0IGJlIG90aGVyIHZhbHVlcyBpbiB0aGlzIGNvbHVtbiwgc3VjaCBhcyAiQW50aWJvZHkgQ2FwdHVyZSIgZm9yIENJVEUtc2VxIGV4cGVyaW1lbnRzLgoKVGhlIHNlY29uZCBzbG90IGlzIHRoZSBgY29sRGF0YWAgdGFibGUsIHdoaWNoIG5vdyBjb3JyZXNwb25kcyB0byB0aGUgYGJhcmNvZGVzLnRzdi5nemAgZmlsZSwgY29udGFpbmluZyBvbmUgcm93IHBlciBjZWxsIGJhcmNvZGUsIG9yLCBtb3JlIGdlbmVyYWxseSwgb25lIHJvdyBwZXIgY29sdW1uIG9mIHRoZSBgY291bnRzYCBhc3NheS4KV2UgY2FuIGxvb2sgYXQgdGhpcyB0YWJsZSB1c2luZyB0aGUgYGNvbERhdGEoKWAgZnVuY3Rpb24gKGFuZCBgaGVhZCgpYCBhZ2FpbiB0byBwcmV2ZW50IHByaW50aW5nIHRoZSB3aG9sZSB0YWJsZSk6CgpgYGB7ciBjb2xkYXRhfQojIHZpZXcgY29sRGF0YSAoY2VsbCBiYXJjb2RlcykKaGVhZChjb2xEYXRhKHJhd19zY2UpKQpgYGAKCkhlcmUgd2Ugc2VlIHRoYXQgdGhlcmUgYXJlIGN1cnJlbnRseSB0d28gY29sdW1uczoKCi0gdGhlIGBTYW1wbGVgIGNvbHVtbiBoYXMgdGhlIHBhdGggb2YgdGhlIGZpbGUgdGhhdCB3ZSByZWFkIGluICh5b3UgbWF5IG5vdCBzZWUgdGhlIHdob2xlIHBhdGggaW4gdGhpcyBkaXNwbGF5KTsgdGhpcyBzaG91bGQgYmUgaWRlbnRpY2FsIGluIGFsbCByb3dzIGZyb20gYSBzaW5nbGUgc2FtcGxlLgotIHRoZSBgQmFyY29kZWAgY29sdW1uIGNvbnRhaW5zIHRoZSBzZXF1ZW5jZSB0aGF0IHdhcyB1c2VkIHRvIGlkZW50aWZ5IGVhY2ggcG90ZW50aWFsIGRyb3BsZXQgZm9yIHNlcXVlbmNpbmcgKGFuZCBhIG51bWVyaWMgdGFnLCBpbiB0aGlzIGNhc2UpLgpUaGVzZSB3aWxsIGJlIHVuaXF1ZSB3aXRoaW4gYSBzYW1wbGUuCgpBcyB3ZSBwcm9jZWVkIHRvIGNhbGN1bGF0ZSBwZXItY2VsbCBzdGF0aXN0aWNzLCB3ZSB3aWxsIGJlIGFkZGluZyBuZXcgZGF0YSB0byB0aGlzIHRhYmxlLgoKIyMgUXVhbGl0eSBjb250cm9sIGFuZCBmaWx0ZXJpbmcKCiFbU2luZ2xlLWNlbGwgcm9hZG1hcDogUUMsIEZpbHRlciwgYW5kIE5vcm1hbGl6ZV0oZGlhZ3JhbXMvcm9hZG1hcF9zaW5nbGVfcWNfbm9ybS5wbmcpCgojIyMgRmlsdGVyaW5nIGVtcHR5IGRyb3BsZXRzCgpNb3N0IG9mIHRoZSBiYXJjb2RlcyBpbiBhbnkgZ2l2ZW4gMTB4IGV4cGVyaW1lbnQgd2lsbCBub3QgYmUgc2VlbiBhdCBhbGwsIHNvIG91ciBmaXJzdCBzdGVwIGNhbiBiZSB0byBmaWx0ZXIgdGhpcyByYXcgZGF0YSB0byBvbmx5IHRoZSBjZWxscyB3aGVyZSB0aGVyZSBpcyBhdCBsZWFzdCBvbmUgdHJhbnNjcmlwdCB0aGF0IHdhcyBjb3VudGVkIHdpdGggdGhhdCBiYXJjb2RlLgoKVG8gZG8gdGhpcywgd2Ugd2lsbCB1c2UgdGhlIGBjb2xTdW1zKClgIGZ1bmN0aW9uIHRvIHF1aWNrbHkgYWRkIHVwIGFsbCB0aGUgY291bnRzIHRoYXQgY29ycmVzcG9uZCB0byBlYWNoIHBvc3NpYmxlIGNlbGwgYmFyY29kZSwgdGhlbiBmaWx0ZXIgb3VyIGByYXdfc2NlYCBkb3duIHRvIGp1c3QgdGhvc2UgY29sdW1ucyB3aGVyZSB0aGVyZSBhcmUgbm9uLXplcm8gdG90YWwgY291bnRzLgpXZSB3aWxsIG5lZWQgdG8gZXh0cmFjdCB0aGUgYGNvdW50c2AgbWF0cml4IGZyb20gb3VyIFNDRSBvYmplY3QsIHdoaWNoIHdlIGNhbiBkbyB1c2luZyB0aGUgYGNvdW50cygpYCBmdW5jdGlvbiwgY29udmVuaWVudGx5IGVub3VnaC4KCmBgYHtyIHJlbW92ZSB6ZXJvcywgbGl2ZT1UUlVFfQojIHN1bSBjb2x1bW5zIGZyb20gY291bnRzIG1hdHJpeApiYXJjb2RlX2NvdW50cyA8LSBjb2xTdW1zKGNvdW50cyhyYXdfc2NlKSkKCiMgZmlsdGVyIFNDRSBvYmplY3QgdG8gb25seSByb3dzIHdpdGggY291bnRzID4gMApyYXdfc2NlIDwtIHJhd19zY2VbLCB3aGljaChiYXJjb2RlX2NvdW50cyA+IDApXQpgYGAKCk5vdyB3ZSBjYW4gbG9vayBhdCBob3cgb3VyIFNDRSBvYmplY3QgaGFzIGNoYW5nZWQ6CgpgYGB7ciB6ZXJvLWZpbHRlcmVkIFNDRX0KcmF3X3NjZQpgYGAKCkJ1dCBiYXJjb2RlcyB3aXRoIHplcm8gY291bnRzIGFyZSBub3QgdGhlIG9ubHkgb25lcyB0aGF0IGNvcnJlc3BvbmQgdG8gZHJvcGxldHMgd2l0aG91dCBjZWxscyBpbiB0aGVtIQpFdmVuIGlmIGEgZHJvcGxldCBkb2VzIG5vdCBoYXZlIGEgY2VsbCBpbiBpdCwgdGhlcmUgd2lsbCBvZnRlbiBiZSBzcHVyaW91cyByZWFkcyBmcm9tIFJOQSBzZXF1ZW5jZXMgdGhhdCB3ZXJlIHByZXNlbnQgaW4gdGhlIGV4dHJhY2VsbHVsYXIgc29sdXRpb24sIHdoZXRoZXIgZnJvbSB0aGUgb3JpZ2luYWwgc2FtcGxlIG9yIGZyb20gY2VsbHMgdGhhdCB3ZXJlIGRhbWFnZWQgZHVyaW5nIHNpbmdsZS1jZWxsIGxpYnJhcnkgcHJlcGFyYXRpb24uCgpXZSBjb3VsZCBpZGVudGlmeSB0aGVzZSBiYXJjb2RlcyBzaW1wbHkgYXMgdGhvc2Ugd2l0aCBsb3cgdHJhbnNjcmlwdCBjb3VudHMuCk9yLCB3ZSBjYW4gYmUgYSBiaXQgbW9yZSBjbGV2ZXIhCldlIGNhbiBsb29rIGF0IHRoZSB0cmFuc2NyaXB0IGNvdW50cyBfZnJvbV8gdGhlIGxvd2VzdC1jb3VudCBkcm9wbGV0cyB0byBjcmVhdGUgYW4gZXhwZWN0ZWQgZGlzdHJpYnV0aW9uIG9mIHRyYW5zY3JpcHRzIGluIGRyb3BsZXRzIHRoYXQgZG9uJ3QgY29udGFpbiBjZWxscy4KVGhlbiB3ZSBjYW4gdGVzdCBlYWNoIGRyb3BsZXQgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgb3Igbm90IGl0cyB0cmFuc2NyaXB0IGRpc3RyaWJ1dGlvbiBkZXZpYXRlcyBmcm9tIHRoYXQgZXhwZWN0YXRpb24uCklmIGl0IGRvZXMsIHRoZW4gd2UgaGF2ZSBwcmV0dHkgZ29vZCBldmlkZW5jZSB0aGF0IHRoZXJlIF9pc18gYSBjZWxsIGluIHRoZXJlLgoKVGhpcyB0ZXN0IHdhcyBmaXJzdCBwcm9wb3NlZCBieSBbTHVuIF9ldCBhbC5fICgyMDE5KV0oaHR0cHM6Ly9kb2kub3JnLzEwLjExODYvczEzMDU5LTAxOS0xNjYyLXkpIGFuZCBpbXBsZW1lbnRlZCBhcyBgZW1wdHlEcm9wcygpYCBpbiB0aGUgYERyb3BsZXRVdGlsc2AgcGFja2FnZS4KVGhpcyBtZXRob2Qgd2FzIHRoZW4gYWRvcHRlZCwgd2l0aCBzb21lIG1vZGlmaWNhdGlvbnMsIGFzIHRoZSBkZWZhdWx0IGNlbGwgZmlsdGVyaW5nIG1ldGhvZCB1c2VkIGJ5IENlbGwgUmFuZ2VyLgpIZXJlIHdlIHdpbGwgdXNlIHRoZSBbYGVtcHR5RHJvcHNDZWxsUmFuZ2VyKClgIGZ1bmN0aW9uXShodHRwczovL3JkcnIuaW8vZ2l0aHViL01hcmlvbmlMYWIvRHJvcGxldFV0aWxzL21hbi9lbXB0eURyb3BzQ2VsbFJhbmdlci5odG1sKSB0byBwZXJmb3JtIGZpbHRlcmluZyB0aGF0IG1vcmUgY2xvc2VseSBtYXRjaGVzIHRoZSBDZWxsIFJhbmdlciBpbXBsZW1lbnRhdGlvbi4KCgpgYGB7ciBjYWxjdWxhdGUgZHJvcGxldCBzdGF0cywgbGl2ZT1UUlVFfQojIGNyZWF0ZSBhIHRhYmxlIG9mIHN0YXRpc3RpY3MgdXNpbmcgZW1wdHlEcm9wc0NlbGxSYW5nZXIKZHJvcGxldF9kZiA8LSBEcm9wbGV0VXRpbHM6OmVtcHR5RHJvcHNDZWxsUmFuZ2VyKHJhd19zY2UpCmBgYAoKTW9zdCB2YWx1ZXMgaW4gdGhpcyB0YWJsZSBhcmUgYE5BYCwgYmVjYXVzZSBpbmRpdmlkdWFsIHN0YXRpc3RpY3Mgd2VyZSBub3QgY2FsY3VsYXRlZCBmb3IgdGhlIGxvdy1jb3VudCBkcm9wbGV0cyB0aGF0IHdlcmUgdXNlZCB0byBnZW5lcmF0ZSB0aGUgYmFja2dyb3VuZCBkaXN0cmlidXRpb24uCihNb3N0IGRyb3BsZXRzIGRvbid0IGhhdmUgY2VsbHMsIHNvIHRoaXMgbWFrZXMgc29tZSBzZW5zZSEpCgpXZSBjYW4gbG9vayBhdCBqdXN0IHRoZSByb3dzIHdpdGhvdXQgYE5BYCB2YWx1ZXMgYnkgc2VsZWN0ZWQgdGhlIG9uZXMgd2hlcmUgdGhlIEZEUiAod2hpY2ggd2Ugd2lsbCB1c2UgYWdhaW4gc29vbiksIGlzIG5vdCBgTkFgLgoKYGBge3IgZHJvcGxldCBzdGF0c30KIyB2aWV3IHJvd3Mgd2hlcmUgRkRSIGlzIG5vdCBgTkFgCmRyb3BsZXRfZGZbIWlzLm5hKGRyb3BsZXRfZGYkRkRSKSwgXQpgYGAKWW91IHdpbGwgbm90aWNlIHRoYXQgc29tZSBjZWxscyB3aXRoIGhpZ2ggY291bnRzIGFsc28gaGF2ZSBgTkFgIHZhbHVlcyBmb3IgbWFueSBzdGF0aXN0aWNzLgpJbiB0aG9zZSBjYXNlcywgYE5BYCB2YWx1ZXMgYXJlIGFjdHVhbGx5IHByZXNlbnQgX2JlY2F1c2VfIG9mIHRoZSBoaWdoIGNvdW50cyAtIGBlbXB0eURyb3BzQ2VsbFJhbmdlcigpYCBhdXRvbWF0aWNhbGx5IGFzc3VtZWQgY2VsbHMgd2VyZSBwcmVzZW50LCBzbyB0aGV5IHdlcmUgYWxzbyBub3QgdGVzdGVkLgoKTm93IHdlIGNhbiBmaWx0ZXIgb3VyIGByYXdfc2NlYCBvYmplY3QgX2J5IGNvbHVtbl8gdG8gb25seSBrZWVwIHRoZSBjZWxscyB3aXRoIGEgc21hbGwgRkRSOiB0aG9zZSB0aGF0IGFyZSBxdWl0ZSB1bmxpa2VseSB0byBiZSBlbXB0eSBkcm9wbGV0cy4KCmBgYHtyIGZpbHRlciBlbXB0eWRyb3BzLCBsaXZlPVRSVUV9CiMgZmlsdGVyIGRyb3BsZXRzIHVzaW5nIGB3aGljaGAgdG8gcHJldmVudCBOQSB0cm91YmxlCmNlbGxzX3RvX3JldGFpbiA8LSB3aGljaChkcm9wbGV0X2RmJEZEUiA8IDAuMDEpCmZpbHRlcmVkX3NjZSA8LSByYXdfc2NlWywgY2VsbHNfdG9fcmV0YWluXQpgYGAKCkhvdyBtYW55IGNlbGxzIGRvIHdlIGhhdmUgbm93PwoKYGBge3IgZmlsdGVyZWQgc3VtbWFyeX0KZmlsdGVyZWRfc2NlCmBgYAoKIyMjIEFkZGl0aW9uYWwgcXVhbGl0eSBjb250cm9sCgpJbiBhZGRpdGlvbiB0byBmaWx0ZXJpbmcgb3V0IGVtcHR5IGRyb3BsZXRzLCB3ZSBhbHNvIHdpbGwgd2FudCB0byBmaWx0ZXIgb3V0IGNlbGxzIHRoYXQgbWF5IGhhdmUgYmVlbiBkYW1hZ2VkIGR1cmluZyBsaWJyYXJ5IHByZXBhcmF0aW9uLgpUaGVzZSB3aWxsIG9mdGVuIGJlIGNoYXJhY3Rlcml6ZWQgYnkgYSBoaWdoIHByb3BvcnRpb24gb2YgbWl0b2Nob25kcmlhbCB0cmFuc2NyaXB0cyBhbmQgYSBzbWFsbGVyIG92ZXJhbGwgbnVtYmVyIG9mIHVuaXF1ZSB0cmFuc2NyaXB0cy4KV2hlbiBhIGNlbGwgcnVwdHVyZXMsIGN5dG9wbGFzbWljIHRyYW5zY3JpcHRzIHdpbGwgbGVhayBvdXQsIGJ1dCBtaXRvY2hvbmRyaWFsIHRyYW5zY3JpcHRzLCBzdGlsbCBwcm90ZWN0ZWQgYnkgdGhlIG1pdG9jaG9uZHJpYWwgbWVtYnJhbmUsIG1heSByZW1haW4uCkFzIGEgY29uc2VxdWVuY2UsIHRoZXJlIHdpbGwgYmUgYW4gb3Zlci1hYnVuZGFuY2Ugb2YgbWl0b2Nob25kcmlhbCByZWFkcywgYW5kIGZld2VyIHVuaXF1ZSB0cmFuc2NyaXB0cyBleHByZXNzZWQuCgpPdXIgZmlyc3Qgc3RlcCB0aGVuLCBpcyBjcmVhdGUgYSB2ZWN0b3Igb2YgdGhlIG1pdG9jaG9uZHJpYWwgZ2VuZXMgdGhhdCBhcmUgcHJlc2VudCBpbiBvdXIgZGF0YXNldC4KVGhlIG1pdG9jaG9uZHJpYWwgZmlsZSB3ZSBkZWZpbmVkIGR1cmluZyBzZXR1cCAoYG1pdG9fZmlsZWApIGlzIGEgVFNWIGZpbGUgY29udGFpbmluZyBhbGwgb2YgdGhlIGh1bWFuIG1pdG9jaG9uZHJpYWwgZ2VuZXMgd2l0aCBhZGRpdGlvbmFsIGFubm90YXRpb24gaW5mb3JtYXRpb24gZm9yIGVhY2ggZ2VuZSwgc3VjaCBhcyB0aGUgZ2VuZSBsb2NhdGlvbiBhbmQgYWx0ZXJuYXRpdmUgbmFtZXMuCihGb3IgbW9yZSBkZXRhaWwgb24gdGhlIHN0ZXBzIHdlIHRvb2sgdG8gY3JlYXRlIHRoaXMgZmlsZSwgeW91IGNhbiBsb29rIGF0IFtvbmUgb2Ygb3VyIHNldHVwIG5vdGVib29rc10oaHR0cHM6Ly9naXRodWIuY29tL0FsZXhzTGVtb25hZGUvdHJhaW5pbmctbW9kdWxlcy9ibG9iL21hc3Rlci9zY1JOQS1zZXEtYWR2YW5jZWQvc2V0dXAvbWl0b19nZW5lX2xpc3RzLlJtZCkpCgpBbGwgd2UgbmVlZCBub3cgaXMgdGhlIGBnZW5lX2lkYCwgYW5kIG9ubHkgZm9yIHRoZSBnZW5lcyB0aGF0IGFyZSBwcmVzZW50IGluIG91ciBTQ0UsIHNvIHdlIHdpbGwgZG8gc29tZSBmaWx0ZXJpbmcgd2l0aCBgZHBseXJgIHRvIHB1bGwgb3V0IGEgdmVjdG9yIHdpdGgganVzdCB0aG9zZSBpZHMuCgpgYGB7ciBnZXQgbWl0b2Nob25kcmlhbCBnZW5lc30KIyByZWFkIGluIGEgdGFibGUgb2YgbWl0b2Nob25kcmlhbCBnZW5lcyBhbmQgZXh0cmFjdCBpZHMKbWl0b19nZW5lcyA8LSByZWFkcjo6cmVhZF90c3YobWl0b19maWxlKSB8PgogICMgZmlsdGVyIHRvIG9ubHkgdGhlIGdlbmVzIHRoYXQgYXJlIGZvdW5kIGluIG91ciBkYXRhc2V0CiAgZHBseXI6OmZpbHRlcihnZW5lX2lkICVpbiUgcm93bmFtZXMoZmlsdGVyZWRfc2NlKSkgfD4KICAjIGNyZWF0ZSBhIHZlY3RvciBmcm9tIHRoZSBnZW5lX2lkIGNvbHVtbgogIGRwbHlyOjpwdWxsKGdlbmVfaWQpCmBgYAoKIyMjIENhbGN1bGF0aW5nIHN1bW1hcnkgUUMgc3RhdGlzdGljcwoKV2UgY2FuIG5vdyB1c2UgdGhlIGBzY3V0dGxlYCBmdW5jdGlvbiBgYWRkUGVyQ2VsbFFDKClgIHRvIGNhbGN1bGF0ZSBzb21lIHN0YXRpc3RpY3MgYmFzZWQgb24gdGhlIGNvdW50cyBtYXRyaXgsIHdoaWNoIHdpbGwgYmUgYWRkZWQgdG8gdGhlIGBjb2xEYXRhYCB0YWJsZS4KCkluIGFkZGl0aW9uIHRvIGNhbGN1bGF0aW5nIHN0YXRpc3RpY3MgbGlrZSB0aGUgdG90YWwgcmVhZCBjb3VudCBmb3IgZWFjaCBjZWxsIGFuZCB0aGUgbnVtYmVyIG9mIHRyYW5zY3JpcHRzIHRoYXQgYXJlIGRldGVjdGVkLCB3ZSBjYW4gYWxzbyBjYWxjdWxhdGUgdGhvc2Ugc3RhdGlzdGljcyBmb3IgZGVmaW5lZCBzdWJzZXRzIG9mIGdlbmVzLgpJbiB0aGlzIGNhc2UsIHdlIHdpbGwgdXNlIG91ciBgbWl0b19nZW5lc2AgdmVjdG9yIHRvIGRlZmluZSBhIHN1YnNldCBjYWxsZWQgYG1pdG9gLgpUaGUgYG1pdG9gIG5hbWUgaXMgaW1wb3J0YW50IGluIHRoYXQgaXQgaXMgdGhlIG5hbWUgdGhhdCB3aWxsIGJlIGV4cGVjdGVkIGJ5IGEgbGF0ZXIgZnVuY3Rpb24uCihXZSBjb3VsZCBkZWZpbmUgbW9yZSBzdWJzZXRzLCBidXQgZm9yIG5vdyB0aGlzIG9uZSB3aWxsIGRvLikKCmBgYHtyIHBlciBjZWxsIFFDLCBsaXZlPVRSVUV9CmZpbHRlcmVkX3NjZSA8LSBzY3V0dGxlOjphZGRQZXJDZWxsUUMoZmlsdGVyZWRfc2NlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1YnNldHMgPSBsaXN0KG1pdG8gPSBtaXRvX2dlbmVzKSkKYGBgCgpOb3cgd2UgY2FuIGxvb2sgYXQgdGhlIGNvbERhdGEgdG8gc2VlIHdoYXQgd2FzIGFkZGVkOgoKYGBge3IgdmlldyBjb2xEYXRhIHN0YXRzfQpoZWFkKGNvbERhdGEoZmlsdGVyZWRfc2NlKSkKYGBgCgpXZSBjYW4gYWxzbyBwbG90IHNvbWUgb2YgdGhlc2Ugc3RhdGlzdGljcywgaGVyZSB1c2luZyB0aGUgYHBsb3RNZXRyaWNzKClgIGZ1bmN0aW9uIGZyb20gdGhlIGBtaVFDYCBwYWNrYWdlIHRvIHBsb3QgdGhlIHBlcmNlbnQgb2YgcmVhZHMgdGhhdCBhcmUgbWl0b2Nob25kcmlhbCAodGhlIGBzdWJzZXRzX21pdG9fcGVyY2VudGAgY29sdW1uKSBhZ2FpbnN0IHRoZSBudW1iZXIgb2YgdW5pcXVlIGdlbmVzIGRldGVjdGVkICh0aGUgYGRldGVjdGVkYCBjb2x1bW4pIGZvciBlYWNoIGNlbGwuCgpgYGB7ciBtaVFDIHBsb3RNZXRyaWNzfQojIHVzZSBtaVFDOjpwbG90TWV0cmljcygpCm1pUUM6OnBsb3RNZXRyaWNzKGZpbHRlcmVkX3NjZSkgKyB0aGVtZV9idygpCmBgYAoKV2UgY2FuIHNlZSB0aGF0IHRoZXJlIGlzIGEgcmFuZ2Ugb2YgbWl0b2Nob25kcmlhbCBwZXJjZW50YWdlcywgYW5kIGl0IGRvZXMgYWxzbyBzZWVtIHRoYXQgY2VsbHMgd2l0aCBoaWdoIHBlcmNlbnRhZ2VzIG9mIG1pdG9jaG9uZHJpYWwgZ2VuZXMgZG9uJ3Qgc2VlbSB0byBjb250YWluIHZlcnkgbWFueSB1bmlxdWUgZ2VuZXMuCgpIb3cgZG8gd2UgZmlsdGVyIHdpdGggdGhpcyBpbmZvcm1hdGlvbj8KT25lIG9wdGlvbiBpcyB0byBkZWZpbmUgYSBjdXRvZmYgZm9yIHRoZSBtaXRvY2hvbmRyaWFsIHBlcmNlbnRhZ2UgYWJvdmUgd2hpY2ggd2UgY2FsbCBhIGNlbGwgY29tcHJvbWlzZWQgYW5kIGV4Y2x1ZGUgaXQgZnJvbSBmdXJ0aGVyIGFuYWx5c2lzLgpIb3dldmVyLCBjaG9vc2luZyB0aGF0IGN1dG9mZiBjYW4gYmUgYSBiaXQgZnJhdWdodCwgYXMgdGhlIGV4cGVjdGVkIHBlcmNlbnRhZ2Ugb2YgbWl0b2Nob25kcmlhbCByZWFkcyBjYW4gdmFyeSBkZXBlbmRpbmcgb24gdGhlIGNlbGwgdHlwZSBhbmQgbGlicmFyeSBwcmVwYXJhdGlvbiBtZXRob2RzLgpTbyBpdCBtaWdodCBiZSBuaWNlIHRvIGhhdmUgYSBtZXRob2QgdG8gZGV0ZXJtaW5lIHRoYXQgY3V0b2ZmIGZyb20gdGhlIGRhdGEgaXRzZWxmLgoKIyMjIEZpbHRlcmluZyBjb21wcm9taXNlZCBjZWxscwoKRGV0ZXJtaW5pbmcgbWl0b2Nob25kcmlhbCBjdXRvZmZzIGlzIGV4YWN0bHkgd2hhdCB0aGUgYG1pUUNgIHBhY2thZ2UgZG9lcyAoW0hpcHBlbiBfZXQgYWwuXyAyMDIxXShodHRwczovL2RvaS5vcmcvMTAuMTM3MS9qb3VybmFsLnBjYmkuMTAwOTI5MCkpIQpJbiB0cnV0aCwgaXQgZG9lcyBzb21ldGhpbmcgcG9zc2libHkgZXZlbiBhIGJpdCBiZXR0ZXI6IGl0IGZpdHMgYSBtaXh0dXJlIG1vZGVsIHRvIHRoZSBkYXRhIHRoYXQgY29uc2lzdHMgb2YgZGlzdHJpYnV0aW9ucyBvZiBoZWFsdGh5IGNlbGxzIGFuZCBjb21wcm9taXNlZCBjZWxscy4KVGhlbiB3ZSBjYW4gY2FsY3VsYXRlIHdoZXRoZXIgZWFjaCBjZWxsIGlzIG1vcmUgbGlrZWx5IHRvIGJlbG9uZyB0byB0aGUgaGVhbHRoeSBvciBjb21wcm9taXNlZCBkaXN0cmlidXRpb24uCldlIGNhbiB0aGVuIGV4Y2x1ZGUgdGhlIGNlbGxzIHRoYXQgYXJlIG1vcmUgbGlrZWx5IHRvIGJlIGNvbXByb21pc2VkLgoKVG8gdXNlIGBtaVFDYCwgd2UgZmlyc3QgZml0IGEgbW9kZWwgdG8gdGhlIGRhdGEgaW4gb3VyIFNDRSBvYmplY3Q6CgpgYGB7ciBtaVFDIG1vZGVsLCBsaXZlPVRSVUV9CiMgZml0IHRoZSBtaVFDIG1vZGVsCm1pcWNfbW9kZWwgPC0gbWlRQzo6bWl4dHVyZU1vZGVsKGZpbHRlcmVkX3NjZSkKYGBgCgpOb3cgd2UgY2FuIHBsb3QgdGhlIG1vZGVsIHJlc3VsdHMgdXNpbmcgdGhlIGBwbG90TW9kZWwoKWAgZnVuY3Rpb24gdG8gc2VlIGhvdyBpdCBjb3JyZXNwb25kcyB0byBvdXIgZGF0YS4KV2Ugc2hvdWxkIGV4cGVjdCB0byBzZWUgdHdvIGZpdCBsaW5lczoKCi0gT25lIGxpbmUgd2lsbCBjb3JyZXNwb25kIHRoZSB0aGUgImhlYWx0aHkiIGNlbGxzIGFuZCBzaG91bGQgc2hvdyBsaXR0bGUgdG8gbm8gcmVsYXRpb25zaGlwIGJldHdlZW4gdGhlIG51bWJlciBvZiB1bmlxdWUgZ2VuZXMgZGV0ZWN0ZWQgYW5kIHRoZSBtaXRvY2hvbmRyaWFsIHBlcmNlbnRhZ2UuCi0gQnkgY29udHJhc3QsIHRoZSBsaW5lIHRoYXQgY29ycmVzcG9uZHMgdG8gImNvbXByb21pc2VkIiBjZWxscyB3aWxsIHNob3cgYSBuZWdhdGl2ZSByZWxhdGlvbnNoaXAgYmV0d2VlbiB0aGUgbnVtYmVyIG9mIHVuaXF1ZSBnZW5lcyBkZXRlY3RlZCBhbmQgdGhlIG1pdG9jaG9uZHJpYWwgcGVyY2VudGFnZS4KClRoaXMgcGxvdCB3aWxsIGFsc28gc2hvdywgZm9yIGVhY2ggY2VsbCwgdGhlIHBvc3RlcmlvciBwcm9iYWJpbGl0eSB0aGF0IHRoZSBjZWxsIGlzIGRlcml2ZWQgZnJvbSB0aGUgY29tcHJvbWlzZWQgZGlzdHJpYnV0aW9uOyBhIGhpZ2hlciBzY29yZSBpbmRpY2F0ZXMgdGhhdCBhIGNlbGwgaXMgbW9yZSBsaWtlbHkgdG8gYmUgY29tcHJvbWlzZWQuCgpJdCBpcyBhbHNvIGNyaXRpY2FsIHRvIG5vdGUgdGhhdCB0aGlzIG1vZGVsIGNhbiBfYW5kIGRvZXNfIGZhaWwgYXQgdGltZXMuClBsb3R0aW5nIHRoZSByZXN1bHRzIGFzIHdlIGhhdmUgZG9uZSBoZXJlIGlzIG5vdCBhIHN0ZXAgdG8gc2tpcC4KKipBbHdheXMgbG9vayBhdCB5b3VyIGRhdGEhKioKCmBgYHtyIG1pUUMgcGxvdE1vZGVsLCBsaXZlPVRSVUV9CiMgcGxvdCB0aGUgbWlRQyBtb2RlbAptaVFDOjpwbG90TW9kZWwoZmlsdGVyZWRfc2NlLCBtaXFjX21vZGVsKSArCiAgdGhlbWVfYncoKQpgYGAKCldlIGNhbiBub3cgZmlsdGVyIG91ciBkYXRhIGJhc2VkIG9uIHRoZSBwcm9iYWJpbGl0eSBjb21wcm9taXNlZCBhcyBjYWxjdWxhdGVkIGZyb20gdGhlIG1vZGVsLgpCdXQgYmVmb3JlIHdlIGRvIHRoYXQsIHdlIG1pZ2h0IHdhbnQgdG8gcXVpY2tseSBwbG90IHRvIHNlZSB3aGF0IHdvdWxkIGJlIGZpbHRlcmVkIG91dCB3aXRoIGEgZ2l2ZW4gY3V0b2ZmLCB1c2luZyB0aGUgYHBsb3RGaWx0ZXJpbmcoKWAgZnVuY3Rpb24uClRoZSBkZWZhdWx0IGlzIHRvIGV4Y2x1ZGUgY2VsbHMgdGhhdCBoYXZlIGEgcG9zdGVyaW9yIHByb2JhYmlsaXR5IG9mIDAuNzUgb3IgZ3JlYXRlciBvZiBiZWluZyBjb21wcm9taXNlZC4KV2Ugc3RpY2sgd2l0aCB0aGF0IGRlZmF1bHQsIGJ1dCBmb3IgY2xhcml0eSwgd2Ugd2lsbCBhbHNvIGluY2x1ZGUgaXQgaW4gb3VyIGNvZGUhCgoKYGBge3IgbWlRQyBwbG90RmlsdGVyaW5nfQojIGxvb2sgYXQgbWlRQyBmaWx0ZXJpbmcKbWlRQzo6cGxvdEZpbHRlcmluZyhmaWx0ZXJlZF9zY2UsIG1pcWNfbW9kZWwsCiAgICAgICAgICAgICAgICAgICAgcG9zdGVyaW9yX2N1dG9mZiA9IDAuNzUpICsKICB0aGVtZV9idygpCmBgYAoKSW4gdGhpcyBjYXNlLCB0aGUgbGluZSBiZXR3ZWVuIHRoZSBjZWxscyB0byBiZSBrZXB0IGFuZCB0aG9zZSB0aGF0IHdpbGwgYmUgcmVtb3ZlZCBzZWVtcyB0byBjb3JyZXNwb25kIHRvIGEgbWl0b2Nob25kcmlhbCBwZXJjZW50YWdlIG9mIGFib3V0IDEyLjUlLCBidXQgbm90ZSB0aGF0IHRoaXMgd2lsbCBub3QgYWx3YXlzIGJlIGNvbnN0YW50LgpUaGUgY3V0b2ZmIHBvaW50IGNhbiB2YXJ5IGZvciBkaWZmZXJlbnQgbnVtYmVycyBvZiB1bmlxdWUgZ2VuZXMgd2l0aGluIGEgc2FtcGxlLCBhbmQgaXQgd2lsbCBjZXJ0YWlubHkgdmFyeSBhbW9uZyBzYW1wbGVzIQoKQXQgdGhpcyBwb2ludCwgd2UgY2FuIHBlcmZvcm0gdGhlIGFjdHVhbCBmaWx0ZXJpbmcgdXNpbmcgdGhlIGBmaWx0ZXJDZWxscygpYCBmdW5jdGlvbiwgZ2l2aW5nIHVzIGEgZnVydGhlciBmaWx0ZXJlZCBTQ0Ugb2JqZWN0LgoKYGBge3IgbWlRQyBmaWx0ZXJjZWxscywgbGl2ZT1UUlVFfQojIHBlcmZvcm0gbWlRQyBmaWx0ZXJpbmcKcWNmaWx0ZXJlZF9zY2UgPC0gbWlRQzo6ZmlsdGVyQ2VsbHMoZmlsdGVyZWRfc2NlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2RlbCA9IG1pcWNfbW9kZWwpCmBgYAoKIyMjIyBPbmUgbW9yZSBmaWx0ZXI6IHVuaXF1ZSBnZW5lIGNvdW50CgpXaGlsZSB0aGUgbWlRQyBmaWx0ZXJpbmcgaXMgcHJldHR5IGdvb2QsIHlvdSBtYXkgaGF2ZSBub3RpY2VkIHRoYXQgaXQgc3RpbGwgbGVmdCBzb21lIGNlbGxzIHRoYXQgaGFkIHZlcnkgbG93IG51bWJlcnMgb2YgdW5pcXVlIGdlbmVzLgpXaGlsZSB0aGVzZSBjZWxscyBtYXkgbm90IGJlIGNvbXByb21pc2VkLCB0aGUgaW5mb3JtYXRpb24gZnJvbSB0aGVtIGlzIGFsc28gbm90IGxpa2VseSB0byBiZSB1c2VmdWwsIHNvIHdlIHdpbGwgZmlsdGVyIHRob3NlIGFzIHdlbGwuCldlIHdpbGwgb25seSBrZWVwIGNlbGxzIHRoYXQgaGF2ZSBhdCBsZWFzdCAyMDAgdW5pcXVlIGdlbmVzLgoKYGBge3IgdW5pcXVlIGN1dG9mZiwgbGl2ZT1UUlVFfQojIGZpbHRlciBjZWxscyBieSB1bmlxdWUgZ2VuZSBjb3VudCAoYGRldGVjdGVkYCkKcWNmaWx0ZXJlZF9zY2UgPC0gcWNmaWx0ZXJlZF9zY2VbLCB3aGljaChxY2ZpbHRlcmVkX3NjZSRkZXRlY3RlZCA+PSAyMDApXQpxY2ZpbHRlcmVkX3NjZQpgYGAKCgojIyBOb3JtYWxpemF0aW9uCgpOb3cgdGhhdCB3ZSBoYXZlIGRvbmUgb3VyIGZpbHRlcmluZywgd2UgY2FuIHN0YXJ0IGFuYWx5emluZyB0aGUgZXhwcmVzc2lvbiBjb3VudHMgZm9yIHRoZSByZW1haW5pbmcgY2VsbHMuCgpUaGUgbmV4dCBzdGVwIGF0IHRoaXMgcG9pbnQgaXMgdG8gY29udmVydCB0aGUgcmF3IGNvdW50cyBpbnRvIGEgbWVhc3VyZSB0aGF0IGFjY291bnRzIGZvciBkaWZmZXJlbmNlcyBpbiBzZXF1ZW5jaW5nIGRlcHRoIGJldHdlZW4gY2VsbHMsIGFuZCB0byBjb252ZXJ0IHRoZSBkaXN0cmlidXRpb24gb2YgZXhwcmVzc2lvbiB2YWx1ZXMgZnJvbSB0aGUgc2tld2VkIGRpc3RyaWJ1dGlvbiB3ZSBleHBlY3QgdG8gc2VlIGluIHJhdyBjb3VudHMgdG8gb25lIHRoYXQgaXMgbW9yZSBub3JtYWxseSBkaXN0cmlidXRlZC4KCldlIHdpbGwgZG8gdGhpcyB1c2luZyBmdW5jdGlvbnMgZnJvbSB0aGUgYHNjcmFuYCBhbmQgYHNjdXR0bGVgIHBhY2thZ2VzLgpUaGUgcHJvY2VkdXJlIHdlIHdpbGwgdXNlIGhlcmUgaXMgZGVyaXZlZCBmcm9tIHRoZSBbT1NDQSBjaGFwdGVyIG9uIG5vcm1hbGl6YXRpb25dKGh0dHA6Ly9iaW9jb25kdWN0b3Iub3JnL2Jvb2tzLzMuMTkvT1NDQS5iYXNpYy9ub3JtYWxpemF0aW9uLmh0bWwjbm9ybWFsaXphdGlvbi1ieS1kZWNvbnZvbHV0aW9uKS4KVGhlIGlkZWEgaXMgdGhhdCB0aGUgdmFyeWluZyBleHByZXNzaW9uIHBhdHRlcm5zIHRoYXQgZGlmZmVyZW50IGNlbGwgdHlwZXMgZXhoaWJpdCB3aWxsIGFmZmVjdCB0aGUgc2NhbGluZyBmYWN0b3JzIHRoYXQgd2Ugd291bGQgYXBwbHkuClRvIGFjY291bnQgZm9yIHRoYXQgdmFyaWF0aW9uLCB3ZSBmaXJzdCBkbyBhIHJvdWdoIGNsdXN0ZXJpbmcgb2YgY2VsbHMgYnkgdGhlaXIgZXhwcmVzc2lvbiB3aXRoIGBzY3Jhbjo6cXVpY2tDbHVzdGVyKClgLCB0aGVuIHVzZSB0aGF0IGNsdXN0ZXJpbmcgdG8gY2FsY3VsYXRlIHRoZSBzY2FsaW5nIGZhY3RvciBmb3IgZWFjaCBjZWxsIHdpdGhpbiB0aGUgY2x1c3RlcnMgdXNpbmcgYHNjcmFuOjpjb21wdXRlU3VtRmFjdG9ycygpYC4KRmluYWxseSwgd2UgYXBwbHkgdGhlIHNjYWxpbmcgZmFjdG9yIHRvIHRoZSBleHByZXNzaW9uIHZhbHVlcyBmb3IgZWFjaCBjZWxsIGFuZCBjYWxjdWxhdGUgdGhlIGxvZy1zY2FsZWQgZXhwcmVzc2lvbiB2YWx1ZXMgdXNpbmcgdGhlIGBzY3V0dGxlOjpsb2dOb3JtQ291bnRzKClgIGZ1bmN0aW9uLgoKYGBge3Igbm9ybWFsaXphdGlvbiwgbGl2ZT1UUlVFfQojIFBlcmZvcm0gcm91Z2ggY2x1c3RlcmluZwpxY2x1c3QgPC0gc2NyYW46OnF1aWNrQ2x1c3RlcihxY2ZpbHRlcmVkX3NjZSkKCiMgdXNlIGNsdXN0ZXJzIHRvIGNvbXB1dGUgc2NhbGluZyBmYWN0b3JzIGFuZCBhZGQgdG8gU0NFIG9iamVjdApxY2ZpbHRlcmVkX3NjZSA8LSBzY3Jhbjo6Y29tcHV0ZVN1bUZhY3RvcnMocWNmaWx0ZXJlZF9zY2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbHVzdGVycyA9IHFjbHVzdCkKCiMgcGVyZm9ybSBub3JtYWxpemF0aW9uIHVzaW5nIHNjYWxpbmcgZmFjdG9ycwojIGFuZCBzYXZlIGFzIGEgbmV3IFNDRSBvYmplY3QKbm9ybWFsaXplZF9zY2UgPC0gc2N1dHRsZTo6bG9nTm9ybUNvdW50cyhxY2ZpbHRlcmVkX3NjZSkKYGBgCgpUaGlzIGNyZWF0ZXMgYSBuZXcgImFzc2F5IiBpbiB0aGUgYG5vcm1hbGl6ZWRfc2NlYCBvYmplY3QsIGBsb2djb3VudHNgLCB3aGljaCBjb250YWlucyB0aGUgbm9ybWFsaXplZCBjb3VudCB2YWx1ZXMgZm9yIGVhY2ggY2VsbCBhbmQgZ2VuZS4KKFRoZSBkYXRhIGhlcmUgYXJlIG5vdCBfYWN0dWFsbHlfIHRoZSBsb2cgb2YgdGhlIGNvdW50cywgc2luY2Ugd2UgYWxzbyBhcHBsaWVkIHRoZSBzY2FsaW5nIGZhY3RvcnMsIGJ1dCB0aGF0IG5hbWUgaXMgdXNlZCBmb3IgaGlzdG9yaWNhbCByZWFzb25zLikKCkxldCdzIHRha2UgYSBsb29rOgoKYGBge3Igbm9ybWFsaXplZCBzY2V9Cm5vcm1hbGl6ZWRfc2NlCmBgYAoKIyMgRGltZW5zaW9uIHJlZHVjdGlvbgoKIVtTaW5nbGUtY2VsbCByb2FkbWFwOiBEaW1lbnNpb24gcmVkdWN0aW9uXShkaWFncmFtcy9yb2FkbWFwX3NpbmdsZV9kaW1lbnNpb25fcmVkdWN0aW9uLnBuZykKCk5vdyB0aGF0IHdlIGhhdmUgbm9ybWFsaXplZCBleHByZXNzaW9uIHZhbHVlcywgd2Ugd291bGQgbGlrZSB0byBwcm9kdWNlIHNvbWUgcmVkdWNlZC1kaW1lbnNpb24gcmVwcmVzZW50YXRpb25zIG9mIHRoZSBkYXRhLgpUaGVzZSB3aWxsIGFsbG93IHVzIHRvIHBlcmZvcm0gc29tZSBkb3duc3RyZWFtIGNhbGN1bGF0aW9ucyBtb3JlIHF1aWNrbHksIHJlZHVjZSBzb21lIG9mIHRoZSBub2lzZSBpbiB0aGUgZGF0YSwgYW5kIGFsbG93IHVzIHRvIHZpc3VhbGl6ZSBvdmVyYWxsIHJlbGF0aW9uc2hpcHMgYW1vbmcgY2VsbHMgbW9yZSBlYXNpbHkgKHRob3VnaCB3aXRoIG1hbnkgY2F2ZWF0cyEpLgoKIyMjIFNlbGVjdGluZyBoaWdobHkgdmFyaWFibGUgZ2VuZXMKCldoaWxlIHdlIGNvdWxkIGNhbGN1bGF0ZSB0aGUgcmVkdWNlZCBkaW1lbnNpb25zIHVzaW5nIGFsbCBvZiB0aGUgZ2VuZXMgdGhhdCB3ZSBoYXZlIGFzc2F5ZWQsIGluIHByYWN0aWNlIG1vc3Qgb2YgdGhlIGdlbmVzIHdpbGwgaGF2ZSB2ZXJ5IGxpdHRsZSB2YXJpYXRpb24gaW4gZXhwcmVzc2lvbiwgc28gZG9pbmcgc28gd2lsbCBub3QgcHJvdmlkZSBtdWNoIGFkZGl0aW9uYWwgc2lnbmFsLgpSZWR1Y2luZyB0aGUgbnVtYmVyIG9mIGdlbmVzIHdlIGluY2x1ZGUgd2lsbCBhbHNvIHNwZWVkIHVwIHNvbWUgb2YgdGhlIGNhbGN1bGF0aW9ucy4KClRvIGlkZW50aWZ5IHRoZSBtb3N0IHZhcmlhYmxlIGdlbmVzLCB3ZSB3aWxsIHVzZSBmdW5jdGlvbnMgZnJvbSB0aGUgYHNjcmFuYCBwYWNrYWdlLgpUaGUgZmlyc3QgZnVuY3Rpb24sIGBtb2RlbEdlbmVWYXIoKWAsIGF0dGVtcHRzIHRvIGRpdmlkZSB0aGUgdmFyaWF0aW9uIG9ic2VydmVkIGZvciBlYWNoIGdlbmUgaW50byBhIGJpb2xvZ2ljYWwgYW5kIHRlY2huaWNhbCBjb21wb25lbnQsIHdpdGggdGhlIGludHVpdGlvbiB0aGF0IGdlbmVzIHdpdGggbG93ZXIgbWVhbiBleHByZXNzaW9uIHRlbmQgdG8gaGF2ZSBsb3dlciB2YXJpYW5jZSBmb3IgcHVyZWx5IHRlY2huaWNhbCByZWFzb25zLgpXZSB0aGVuIHByb3ZpZGUgdGhlIGBtb2RlbEdlbmVWYXIoKWAgb3V0cHV0IHRvIHRoZSBgZ2V0VG9wSFZHcygpYCBmdW5jdGlvbiB0byBpZGVudGlmeSB0aGUgZ2VuZXMgd2l0aCB0aGUgaGlnaGVzdCBfYmlvbG9naWNhbF8gdmFyaWF0aW9uLCB3aGljaCBpcyB3aGF0IHdlIGFyZSBtb3N0IGludGVyZXN0ZWQgaW4uCgpgYGB7ciBzZWxlY3QgSFZHc30KIyBpZGVudGlmeSAyMDAwIGdlbmVzCm51bV9nZW5lcyA8LSAyMDAwCgojIG1vZGVsIHZhcmlhbmNlLCBwYXJ0aXRpb25pbmcgaW50byBiaW9sb2dpY2FsIGFuZCB0ZWNobmljYWwgdmFyaWF0aW9uCmdlbmVfdmFyaWFuY2UgPC0gc2NyYW46Om1vZGVsR2VuZVZhcihub3JtYWxpemVkX3NjZSkKCiMgZ2V0IHRoZSBtb3N0IHZhcmlhYmxlIGdlbmVzCmh2X2dlbmVzIDwtIHNjcmFuOjpnZXRUb3BIVkdzKGdlbmVfdmFyaWFuY2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4gPSBudW1fZ2VuZXMpCmBgYAoKVGhlIHJlc3VsdCBpcyBhIHZlY3RvciBvZiBnZW5lIGlkcyAob3JkZXJlZCBmcm9tIG1vc3QgdG8gbGVhc3QgdmFyaWFibGUpOgoKYGBge3IgdmlldyBIVkdzfQpoZWFkKGh2X2dlbmVzKQpgYGAKCiMjIyBQcmluY2lwYWwgY29tcG9uZW50cyBhbmFseXNpcwoKTm93IHRoYXQgd2UgaGF2ZSBzZWxlY3RlZCB0aGUgZ2VuZXMgd2Ugd291bGQgbGlrZSB0byB1c2UgZm9yIHRoZSByZWR1Y2VkLWRpbWVuc2lvbiByZXByZXNlbnRhdGlvbnMgb2YgdGhlIGV4cHJlc3Npb24gZGF0YSwgd2UgY2FuIHN0YXJ0IHRvIGNhbGN1bGF0ZSB0aGVtLgpGaXJzdCB3ZSB3aWxsIHVzZSB0aGUgYHNjYXRlcjo6cnVuUENBKClgIGZ1bmN0aW9uIHRvIGNhbGN1bGF0ZSB0aGUgcHJpbmNpcGFsIGNvbXBvbmVudHMgZnJvbSB0aGUgZXhwcmVzc2lvbiBtYXRyaXguClRoaXMgcmVwcmVzZW50YXRpb24gaXMgZmFzdCBhbmQgZmFpcmx5IHJvYnVzdCwgYnV0IHRoZSByZXN1bHQgaXMgc3RpbGwgcXVpdGUgbXVsdGlkaW1lbnNpb25hbC4KV2Ugd2FudCBrZWVwIGEgZmFpciBudW1iZXIgb2YgY29tcG9uZW50cyAoZGltZW5zaW9ucykgaW4gb3JkZXIgdG8gYWNjdXJhdGVseSByZXByZXNlbnQgdGhlIHZhcmlhdGlvbiBpbiB0aGUgZGF0YSwgYnV0IGRvaW5nIHNvIG1lYW5zIHRoYXQgcGxvdHRpbmcgb25seSBhIGZldyBvZiB0aGVzZSBkaW1lbnNpb25zIChpbiAyRCkgaXMgbm90IGxpa2VseSB0byBwcm92aWRlIGEgZnVsbCB2aWV3IG9mIHRoZSBkYXRhLgoKVGhlIGRlZmF1bHQgbnVtYmVyIG9mIGNvbXBvbmVudHMgaXMgNTAsIHdoaWNoIHdlIHdpbGwgc3RpY2sgd2l0aCwgYnV0IGxldCdzIGVudGVyIGl0IG1hbnVhbGx5IGp1c3QgZm9yIHRoZSByZWNvcmQuCgpgYGB7ciBydW5QQ0EsIGxpdmU9VFJVRX0KIyBjYWxjdWxhdGUgYW5kIHNhdmUgUENBIHJlc3VsdHMKbm9ybWFsaXplZF9zY2UgPC0gc2NhdGVyOjpydW5QQ0EoCiAgbm9ybWFsaXplZF9zY2UsCiAgbmNvbXBvbmVudHMgPSA1MCwgIyBob3cgbWFueSBjb21wb25lbnRzIHRvIGtlZXAKICBzdWJzZXRfcm93ID0gaHZfZ2VuZXMgIyB1c2Ugb25seSB0aGUgdmFyaWFibGUgZ2VuZXMgd2UgY2hvc2UKKQpgYGAKClRoZXNlIHJlZHVjZWQtZGltZW5zaW9uIHJlc3VsdHMgd2lsbCBiZSBzdG9yZWQgaW4gYSBgcmVkdWNlZERpbWAgc2xvdCBpbiB0aGUgU0NFIG9iamVjdC4KV2UgY2FuIHNlZSB0aGUgbmFtZXMgb2YgdGhlIGByZWR1Y2VkRGltYHMgdGhhdCB3ZSBoYXZlIGJ5IGxvb2tpbmcgYXQgdGhlIG9iamVjdCBzdW1tYXJ5OgoKYGBge3IgdmlldyByZWR1Y2VkIGRpbWVuc2lvbnN9Cm5vcm1hbGl6ZWRfc2NlCmBgYAoKSWYgd2Ugd2FudCB0byBleHRyYWN0IHRoZSBQQ0EgcmVzdWx0cywgd2UgY2FuIGRvIHRoYXQgd2l0aCB0aGUgYHJlZHVjZWREaW0oKWAgZnVuY3Rpb246Ck5vdGUgdGhhdCBmb3IgdGhlc2UgcmVkdWNlZC1kaW1lbnNpb25hbGl0eSBtYXRyaWNlcywgdGhlIHJvd3MgYXJlIHRoZSBjZWxscyBhbmQgdGhlIGNvbHVtbnMgYXJlIHRoZSBQQyBkaW1lbnNpb25zLgoKYGBge3IgZ2V0UmVkdWNlZERpbX0KIyBleHRyYWN0IHRoZSBQQ0EgbWF0cml4CnBjYV9tYXRyaXggPC0gcmVkdWNlZERpbShub3JtYWxpemVkX3NjZSwgIlBDQSIpCgojIGxvb2sgYXQgdGhlIHNoYXBlIG9mIHRoZSBtYXRyaXgKZGltKHBjYV9tYXRyaXgpCmBgYAoKIyMjIFVNQVAKCkZpbmFsbHksIHdlIHdpbGwgY2FsY3VsYXRlIGEgVU1BUCAoVW5pZm9ybSBNYW5pZm9sZCBBcHByb3hpbWF0aW9uIGFuZCBQcm9qZWN0aW9uKSByZXByZXNlbnRhdGlvbiBvZiBvdXIgZGF0YS4KVGhpcyBpcyBhIG1hY2hpbmUtbGVhcm5pbmctYmFzZWQgbWV0aG9kIHRoYXQgaXMgdXNlZnVsIGZvciBwZXJmb3JtaW5nIGRpbWVuc2lvbmFsaXR5IHJlZHVjdGlvbiBzdWl0YWJsZSBmb3IgdmlzdWFsaXphdGlvbi4KSXQncyBnb2FsIGlzIHRvIHByb3ZpZGUgYSByZXByZXNlbnRhdGlvbiBvZiB0aGUgZGF0YSBpbiB0d28gZGltZW5zaW9ucyAodHlwaWNhbGx5LCBtb3JlIGFyZSBwb3NzaWJsZSkgdGhhdCBwcmVzZXJ2ZXMgYXMgbXVjaCBvZiB0aGUgZGlzdGFuY2UgcmVsYXRpb25zaGlwcyBhbW9uZyBjZWxscyBhcyBwb3NzaWJsZS4KV2hpbGUgdGhpcyBkb2VzIG1ha2UgZm9yIHZpc3VhbGx5IGFwcGVhbGluZyBhbmQgdXNlZnVsIHBsb3RzLCBpdCBpcyBpbXBvcnRhbnQgbm90IHRvIG92ZXJpbnRlcnByZXQgdGhlIHJlc3VsdHMhCkluIHBhcnRpY3VsYXIsIHdoaWxlIHlvdSB3aWxsIG9mdGVuIHNlZSBzb21lIGFwcGFyZW50IGNsdXN0ZXJpbmcgb2YgY2VsbHMgaW4gdGhlIHJlc3VsdGluZyBvdXRwdXQsIHRob3NlIGNsdXN0ZXJzIG1heSBub3QgYmUgcGFydGljdWxhcmx5IHZhbGlkLCBhbmQgdGhlIHNwYWNpbmcgd2l0aGluIG9yIGJldHdlZW4gY2x1c3RlcnMgbWF5IG5vdCByZWZsZWN0IHRydWUgZGlzdGFuY2VzLgoKSW4gbWFueSB3YXlzIHRoaXMgaXMgYW5hbG9nb3VzIHRvIHRoZSBwcm9ibGVtIG9mIHByb2plY3RpbmcgYSBtYXAgb2YgdGhlIGVhcnRoIG9udG8gYSBmbGF0IHN1cmZhY2U7IGFueSBjaG9pY2Ugd2lsbCByZXN1bHQgaW4gc29tZSBkaXN0b3J0aW9ucy4KSG93ZXZlciwgd2l0aCBVTUFQLCB3ZSByYXJlbHkga25vdyBleGFjdGx5IHdoYXQgY2hvaWNlcyB3ZXJlIG1hZGUgYW5kIHdoYXQgZGlzdG9ydGlvbnMgbWlnaHQgaGF2ZSByZXN1bHRlZC4KVGhlIFVNQVAgY29vcmRpbmF0ZXMgdGhlbXNlbHZlcyBzaG91bGQgbmV2ZXIgYmUgdXNlZCBmb3IgZG93bnN0cmVhbSBhbmFseXNpcy4KClNpbmNlIHRoZSBVTUFQIHByb2NlZHVyZSB3b3VsZCBiZSBzbG93IHRvIGNhbGN1bGF0ZSB3aXRoIHRoZSBmdWxsIGRhdGEsIHNvIHRoZSBgcnVuVU1BUCgpYCBmdW5jdGlvbiBmaXJzdCBjYWxjdWxhdGVzIGEgUENBIG1hdHJpeCBhbmQgdGhlbiB1c2VzIF90aGF0XyB0byBjYWxjdWxhdGUgdGhlIFVNQVAuClNpbmNlIHdlIGFscmVhZHkgaGF2ZSBhIFBDQSBtYXRyaXgsIHdlIHdpbGwgdGVsbCB0aGUgZnVuY3Rpb24gdXNlIHRoYXQgaW5zdGVhZCBvZiByZWNhbGN1bGF0aW5nIGl0LgoKYGBge3IgcnVuVU1BUCwgbGl2ZT1UUlVFfQpub3JtYWxpemVkX3NjZSA8LSBzY2F0ZXI6OnJ1blVNQVAobm9ybWFsaXplZF9zY2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaW1yZWQgPSAiUENBIikKYGBgCgpBcyBiZWZvcmUsIHdlIGNvdWxkIGV4dHJhY3QgdGhlIFVNQVAgbWF0cml4IGZyb20gb3VyIFNDRSBvYmplY3Qgd2l0aCB0aGUgYHJlZHVjZWREaW0oKWAgZnVuY3Rpb24uCldlIGNhbiBhbHNvIHZpc3VhbGl6ZSB0aGUgVU1BUCByZXN1bHRzIHVzaW5nIHRoZSBgcGxvdFJlZHVjZWREaW0oKWAgZnVuY3Rpb24uCgpgYGB7ciBwbG90UmVkdWNlZERpbSwgbGl2ZT1UUlVFfQojIHBsb3QgdGhlIFVNQVAKc2NhdGVyOjpwbG90UmVkdWNlZERpbShub3JtYWxpemVkX3NjZSwKICAgICAgICAgICAgICAgICAgICAgICAiVU1BUCIsCiAgICAgICAgICAgICAgICAgICAgICAgIyBjb2xvciBieSB0aGUgbW9zdCB2YXJpYWJsZSBnZW5lCiAgICAgICAgICAgICAgICAgICAgICAgY29sb3JfYnkgPSBodl9nZW5lc1sxXSkKYGBgCgoKIyMgVW5zdXBlcnZpc2VkIGNsdXN0ZXJpbmcKCkFzIGEgZmluYWwgYW5hbHlzaXMgc3RlcCBhdCB0aGlzIHN0YWdlLCB3ZSB3aWxsIHJldHVybiB0byB0aGUgUENBIHJlc3VsdHMgdG8gcGVyZm9ybSB1bnN1cGVydmlzZWQgY2x1c3RlcmluZy4KSGVyZSB3ZSB3aWxsIHVzZSBhIGdyYXBoLWJhc2VkIGNsdXN0ZXJpbmcgbWV0aG9kLCB3aGljaCBzdGFydHMgYnkgaWRlbnRpZnlpbmcgY2VsbHMgdGhhdCBhcmUgY2xvc2UgdG9nZXRoZXIgaW4gdGhlIG11bHRpZGltZW5zaW9uYWwgc3BhY2UuCkl0IHRoZW4gaWRlbnRpZmllcyAiY29tbXVuaXRpZXMiIG9mIGhpZ2hseSBjb25uZWN0ZWQgY2VsbHMsIGFuZCBicmVha3MgdGhlbSBhcGFydCBieSByZWdpb25zIG9mIGxvd2VyIGNvbm5lY3Rpb24uCgpUaGVyZSBhcmUgYSBudW1iZXIgb2YgYWxnb3JpdGhtcyB0aGF0IGNhbiBwZXJmb3JtIHRoaXMgY2x1c3RlcmluZywgZWFjaCB3aXRoIHBhcmFtZXRlcnMgdGhhdCBjYW4gYWZmZWN0IGhvdyBtYW55IGNsdXN0ZXJzIGFyZSBpZGVudGlmaWVkIGFuZCB3aGljaCBjZWxscyBiZWxvbmcgdG8gZWFjaCBjbHVzdGVyLgpJdCBpcyBhbHNvIHdvcnRoIG5vdGluZyB0aGF0IHRoZXNlIGNsdXN0ZXJzIG1heSBvciBtYXkgbm90IGNvcnJlc3BvbmQgdG8gImNlbGwgdHlwZXMiIGJ5IHdoYXRldmVyIGRlZmluaXRpb24geW91IG1pZ2h0IHByZWZlciB0byB1c2UuCkludGVycHJldGF0aW9uIG9mIHRoZXNlIGNsdXN0ZXJzLCBvciBvdGhlciBtZWFzdXJlcyBvZiBjZWxsIHR5cGUsIGFyZSBzb21ldGhpbmcgdGhhdCB3aWxsIHJlcXVpcmUgbW9yZSBjYXJlZnVsIGFuZCBsaWtlbHkgbW9yZSBjdXN0b21pemVkIGFuYWx5c2lzLgoKV2Ugd2lsbCBwZXJmb3JtIG91ciBjbHVzdGVyaW5nIHVzaW5nIHRoZSBmdW5jdGlvbiBgc2NyYW46OmNsdXN0ZXJDZWxsc2AsIHdoaWNoIGNhbiBwZXJmb3JtIG1hbnkgZGlmZmVyZW50IHR5cGVzIG9mIGNsdXN0ZXJpbmcgdXNpbmcgdGhlIEJpb2NvbmR1Y3RvciBgYmx1c3RlcmAgcGFja2FnZSB1bmRlciB0aGUgaG9vZC4KQXMgbWVudGlvbmVkIGVhcmxpZXIsIHdlIGFyZSB1c2luZyAiZ3JhcGgiIGNsdXN0ZXJpbmcsIHdoaWNoIHdlIGRlZmluZSB1c2luZyB0aGUgYGJsdXN0ZXI6Ok5OR3JhcGhQYXJhbSgpYCBmdW5jdGlvbi4KV2l0aGluIHRoYXQgYXJlIGEgbnVtYmVyIG9mIGZ1cnRoZXIgb3B0aW9ucywgc3VjaCBhcyB0aGUgd2VpZ2h0aW5nIHVzZWQgZm9yIGJ1aWxkaW5nIHRoZSBuZXR3b3JrIGdyYXBoIGFuZCB0aGUgYWxnb3JpdGhtIHVzZWQgZm9yIGRpdmlkaW5nIHRoZSBncmFwaCBpbnRvIGNsdXN0ZXJzLgoKTW9kaWZ5aW5nIHRoZXNlIHBhcmFtZXRlcnMgY2FuIHJlc3VsdCBpbiBxdWl0ZSBkaWZmZXJlbnQgY2x1c3RlciBhc3NpZ25tZW50cyEKRm9yIHRoZSBjbHVzdGVyaW5nIGJlbG93IHdlIHdpbGwgdXNlIEphY2NhcmQgd2VpZ2h0aW5nIGFuZCBMb3V2YWluIGNsdXN0ZXJpbmcsIHdoaWNoIGNvcnJlc3BvbmQgbW9yZSBjbG9zZWx5IHRvIHRoZSBkZWZhdWx0IG1ldGhvZHMgdXNlZCBieSBgU2V1cmF0YCB0aGFuIHRoZSBkZWZhdWx0IHBhcmFtZXRlcnMuCkl0IGlzIGFsc28gd29ydGggbm90aW5nIHRoYXQgdGhlIHRoZSBjbHVzdGVyIGFzc2lnbm1lbnRzIGFyZSBzb21ld2hhdCBzdG9jaGFzdGljLgpJbiBwYXJ0aWN1bGFyLCB0aGUgbmFtZXMvbnVtYmVycyBvZiB0aGUgY2x1c3RlcnMgY2FuIGJlIHF1aXRlIGluY29uc2lzdGVudCBiZXR3ZWVuIHJ1bnMhCgoKYGBge3IgY2x1c3RlcmluZywgbGl2ZT1UUlVFfQojIHBlcmZvcm0gZ3JhcGgtYmFzZWQgY2x1c3RlcmluZwpubl9jbHVzdGVycyA8LSBzY3Jhbjo6Y2x1c3RlckNlbGxzKAogIG5vcm1hbGl6ZWRfc2NlLCAjIFNDRSB0byBwZXJmb3JtIGNsdXN0ZXJpbmcgb24KICB1c2UuZGltcmVkID0gIlBDQSIsICMgcGVyZm9ybSBjbHVzdGVyaW5nIG9uIHRoZSBQQ0EgbWF0cml4CiAgQkxVU1BBUkFNID0gYmx1c3Rlcjo6Tk5HcmFwaFBhcmFtKCAjIGNsdXN0ZXJpbmcgcGFyYW1ldGVycyB0byBwYXNzIHRvIGJsdXN0ZXIKICAgICMgbnVtYmVyIG9mIG5laWdoYm9ycyB0byB1c2UgaW4gbmV0d29yayBncmFwaAogICAgayA9IDIwLAogICAgIyB3ZWlnaHRpbmcgc2NoZW1lIGZvciBidWlsZGluZyB0aGUgbmV0d29yayBncmFwaAogICAgIyBkZWZhdWx0IGlzICJyYW5rIgogICAgdHlwZSA9ICJqYWNjYXJkIiwKICAgICMgY2x1c3RlciBkZXRlY3Rpb24gYWxnb3JpdGhtCiAgICAjIGRlZmF1bHQgaXMgIndhbGt0cmFwIgogICAgY2x1c3Rlci5mdW4gPSAibG91dmFpbiIKICApCikKYGBgCgpXZSBjYW4gc2F2ZSB0aGUgY2x1c3RlciBhc3NpZ25tZW50cyBiYWNrIGludG8gdGhlIGBjb2xEYXRhYCBvZiB0aGUgU0NFIG9iamVjdCB3aXRoIGEgbGl0dGxlIHNob3J0Y3V0OiB0aGUgYCRgIGZvbGxvd2VkIGJ5IHRoZSBuYW1lIG9mIHRoZSBuZXcgY29sdW1uIHdlIHdhbnQgdG8gYWRkLgoKYGBge3IgYWRkIGNsdXN0ZXJzIHRvIFNDRSwgbGl2ZT1UUlVFfQojIHNhdmUgY2x1c3RlcnMgdG8gU0NFIGNvbERhdGEKbm9ybWFsaXplZF9zY2Ukbm5fY2x1c3RlciA8LSBubl9jbHVzdGVycwpgYGAKCk5vdyB3ZSBjYW4gcGxvdCB0aGUgVU1BUCBhZ2FpbiwgdGhpcyB0aW1lIGNvbG9yZWQgYnkgdGhlIGNsdXN0ZXIgYXNzaWdubWVudHMgdGhhdCB3ZSBqdXN0IGNyZWF0ZWQuCkhlcmUgcmF0aGVyIHRoYW4gdGhlIGdlbmVyYWwgYHBsb3RSZWR1Y2VkRGltKClgIGZ1bmN0aW9uLCB3ZSB3aWxsIHVzZSBgcGxvdFVNQVAoKWAsIHdoaWNoIGlzIGV4YWN0bHkgdGhlIHNhbWUsIGV4Y2VwdCBpdCBhbHdheXMgcGxvdHMgZnJvbSB0aGUgYHJlZHVjZWREaW1gIHNsb3QgbmFtZWQgYFVNQVBgLCBzbyB3ZSBjYW4gc2tpcCB0aGF0IGFyZ3VtZW50LgoKYGBge3IgcGxvdCBjbHVzdGVycywgbGl2ZT1UUlVFfQojIHBsb3QgVU1BUCB3aXRoIGFzc2lnbmVkIGNsdXN0ZXJzCnNjYXRlcjo6cGxvdFVNQVAobm9ybWFsaXplZF9zY2UsCiAgICAgICAgICAgICAgICAgY29sb3JfYnkgPSAibm5fY2x1c3RlciIpCmBgYAoKV2hhdCBkbyB5b3Ugc2VlIGluIHRoZXNlIHJlc3VsdHM/CgpXaGF0IHdvdWxkIHlvdSB3YW50IHRvIGRvIG5leHQ/CgojIyBTYXZlIFNDRSBvYmplY3QgZm9yIGxhdGVyCgpXZSB3aWxsIG5vdyBzYXZlIG91ciBmaWx0ZXJlZCBhbmQgbm9ybWFsaXplZCBvYmplY3QsIGluY2x1ZGluZyB0aGUgZGltZW5zaW9uIHJlZHVjdGlvbiBhbmQgY2x1c3RlcmluZyByZXN1bHRzIHRvIGFuIGBSRFNgIGZpbGUsIHVzaW5nIHRoZSBmaWxlIHBhdGggdGhhdCB3ZSBkZWZpbmVkIGF0IHRoZSBzdGFydCBvZiB0aGUgbm90ZWJvb2suCklmIHdlIHdlcmUgdG8gd2FudCB0byByZXR1cm4gdG8gdGhpcyBkYXRhLCB3ZSBjb3VsZCBsb2FkIHRoaXMgZmlsZSBkaXJlY3RseSBpbnRvIGEgbmV3IFIgc2Vzc2lvbiBhbmQgbm90IGhhdmUgdG8gcmVwZWF0IHRoZSBwcm9jZXNzaW5nIHRoYXQgd2UgaGF2ZSBkb25lIHVwIHRvIHRoaXMgcG9pbnQuCgpUaGUgZGF0YSBpbiB0aGVzZSBvYmplY3RzIHRlbmRzIHRvIGJlIHF1aXRlIGxhcmdlLCBidXQgdmVyeSBjb21wcmVzc2libGUuClRvIHNhdmUgc3BhY2Ugb24gZGlzayAoYXQgdGhlIGV4cGVuc2Ugb2YgdGltZSksIHdlIHdpbGwgbWFrZSBzdXJlIHRoYXQgdGhlIGRhdGEgaXMgY29tcHJlc3NlZCBpbnRlcm5hbGx5IGJlZm9yZSB3cml0aW5nIGl0IG91dCB0byBhIGZpbGUuCk5vdGUgdGhhdCB0aGUgZmlsZSB3ZSB3cml0ZSBpcyBzdGlsbCBnb2luZyB0byBiZSBhbiBgLnJkc2AgZmlsZSB3aXRoIG5vIGFkZGl0aW9uYWwgZXh0ZW5zaW9uLgooRnVydGhlciBub3RlOiBUaGUgYmFzZSBSIGZ1bmN0aW9uIGBzYXZlUkRTKClgIHVzZXMgY29tcHJlc3Npb24gYnkgZGVmYXVsdCwgYnV0IHRoZSBgdGlkeXZlcnNlYCBmdW5jdGlvbiBgcmVhZHI6OndyaXRlX3JkcygpYCBkb2VzIG5vdC4pCgpgYGB7ciBzYXZlIFNDRSwgbGl2ZT1UUlVFfQojIHdyaXRlIFJEUyBmaWxlIHdpdGggY29tcHJlc3Npb24KcmVhZHI6OndyaXRlX3Jkcyhub3JtYWxpemVkX3NjZSwgZmlsZSA9IG91dHB1dF9zY2VfZmlsZSwgY29tcHJlc3MgPSAiZ3oiKQpgYGAKCgojIyBQcmludCBzZXNzaW9uIGluZm8KCkFzIGlzIG91ciBoYWJpdCBhdCB0aGUgRGF0YSBMYWIsIHdlIHdpbGwgc2F2ZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgY29tcHV0aW5nIGVudmlyb25tZW50LCB0aGUgcGFja2FnZXMgd2UgaGF2ZSB1c2VkIGluIHRoaXMgbm90ZWJvb2ssIGFuZCB0aGVpciB2ZXJzaW9ucyB1c2luZyB0aGUgYHNlc3Npb25JbmZvKClgIGNvbW1hbmQuCgpgYGB7ciBzZXNzaW9uIGluZm99CnNlc3Npb25JbmZvKCkKYGBgCgo=
+
LS0tCnRpdGxlOiAiUmVhZGluZywgZmlsdGVyaW5nLCBhbmQgbm9ybWFsaXppbmcgc2NSTkEtc2VxIGRhdGEiCmF1dGhvcjogRGF0YSBMYWIgZm9yIEFMU0YKZGF0ZTogMjAyMwpvdXRwdXQ6CiAgaHRtbF9ub3RlYm9vazoKICAgIHRvYzogdHJ1ZQogICAgdG9jX2Zsb2F0OiB0cnVlCi0tLQoKIyMgT2JqZWN0aXZlcwoKVGhpcyBub3RlYm9vayB3aWxsIGRlbW9uc3RyYXRlIGhvdyB0bzoKCi0gUmVhZCBDZWxsIFJhbmdlciBkYXRhIGludG8gUgotIEZpbHRlciB0byBjZWxscyB1c2luZyBgZW1wdHlEcm9wc0NlbGxSYW5nZXIoKWAKLSBDYWxjdWxhdGUgcXVhbGl0eSBjb250cm9sIG1lYXN1cmVzIG9uIHNjUk5BLXNlcSBkYXRhCi0gUmVtb3ZlIGxpa2VseSBjb21wcm9taXNlZCBjZWxscyB3aXRoIGBtaVFDKClgCi0gTm9ybWFsaXplIGV4cHJlc3Npb24gZGF0YSBhY3Jvc3MgY2VsbHMKLSBDYWxjdWxhdGUgYW5kIHBsb3QgcmVkdWNlZCBkaW1lbnNpb24gcmVwcmVzZW50YXRpb25zIG9mIGV4cHJlc3Npb24gZGF0YSAoUENBLCBVTUFQKQoKLS0tCgpJbiB0aGlzIG5vdGVib29rLCB3ZSB3aWxsIHJldmlldyBiYXNpYyBwcm9jZXNzaW5nIGZvciBzaW5nbGUtY2VsbCBSTkEtc2VxIGRhdGEsIHN0YXJ0aW5nIHdpdGggdGhlIG91dHB1dCBmcm9tIENlbGwgUmFuZ2VyLCBhbmQgcHJvY2VlZGluZyB0aHJvdWdoIGZpbHRlcmluZywgcXVhbGl0eSBjb250cm9sLCBub3JtYWxpemF0aW9uLCBhbmQgZGltZW5zaW9uIHJlZHVjdGlvbi4gV2Ugd2lsbCBwZXJmb3JtIHRoZXNlIHRhc2tzIHVzaW5nIHRvb2xzIGZyb20gdGhlIFtCaW9jb25kdWN0b3IgcHJvamVjdF0oaHR0cHM6Ly9iaW9jb25kdWN0b3Iub3JnKSwgaW4gcGFydGljdWxhciBbYFNpbmdsZUNlbGxFeHBlcmltZW50YCBvYmplY3RzXShodHRwczovL2Jpb2NvbmR1Y3Rvci5vcmcvcGFja2FnZXMvcmVsZWFzZS9iaW9jL2h0bWwvU2luZ2xlQ2VsbEV4cGVyaW1lbnQuaHRtbCkgYW5kIGZ1bmN0aW9ucyB0aGF0IHdvcmsgd2l0aCB0aG9zZSBvYmplY3RzLgpNdWNoIG9mIHRoZSBtYXRlcmlhbCBpbiB0aGlzIG5vdGVib29rIGlzIGRpcmVjdGx5IGluc3BpcmVkIGJ5LCBhbmQgZHJhd3MgaGVhdmlseSBvbiwgbWF0ZXJpYWwgcHJlc2VudGVkIGluIHRoZSBib29rIFtfT3JjaGVzdHJhdGluZyBTaW5nbGUgQ2VsbCBBbmFseXNpcyB3aXRoIEJpb2NvbmR1Y3Rvcl8gKE9TQ0EpXShodHRwOi8vYmlvY29uZHVjdG9yLm9yZy9ib29rcy9yZWxlYXNlL09TQ0EvKS4KCiFbU2luZ2xlLWNlbGwgcm9hZG1hcDogT3ZlcnZpZXddKGRpYWdyYW1zL3JvYWRtYXBfc2luZ2xlX292ZXJ2aWV3LnBuZykKClRoZSBkYXRhIHdlIHdpbGwgdXNlIGZvciB0aGlzIG5vdGVib29rIGlzIGRlcml2ZWQgZnJvbSBhIGh1bWFuIGdsaW9ibGFzdG9tYSBzcGVjaW1lbi4KVGhlIHNhbXBsZSB3YXMgcHJvY2Vzc2VkIGJ5IDEweCBHZW5vbWljcyB1c2luZyBhIDMnIFJOQSBraXQgKHYzLjEpLCBzZXF1ZW5jZWQsIGFuZCBxdWFudGlmaWVkIHdpdGggQ2VsbCBSYW5nZXIgNi4wLgpGdXJ0aGVyIGRldGFpbHMgYWJvdXQgdGhlIHNhbXBsZSBhbmQgcHJvY2Vzc2luZyBjYW4gYmUgZm91bmQgb24gdGhlIFsxMHggd2Vic2l0ZV0oaHR0cHM6Ly93d3cuMTB4Z2Vub21pY3MuY29tL3Jlc291cmNlcy9kYXRhc2V0cy8yLWstc29ydGVkLWNlbGxzLWZyb20taHVtYW4tZ2xpb2JsYXN0b21hLW11bHRpZm9ybWUtMy12LTMtMS0zLTEtc3RhbmRhcmQtNi0wLTApLgoKCiMjIFNldCBVcAoKVG8gc3RhcnQsIHdlIHdpbGwgbG9hZCBzb21lIG9mIHRoZSBsaWJyYXJpZXMgd2Ugd2lsbCBuZWVkIGxhdGVyLCBhbmQgc2V0IGEgcmFuZG9tIG51bWJlciBzZWVkIGZvciByZXByb2R1Y2liaWxpdHkuCgpgYGB7ciBzZXR1cH0KIyBMb2FkIGxpYnJhcmllcwoKIyBQbG90dGluZyBmdW5jdGlvbnMKbGlicmFyeShnZ3Bsb3QyKQoKIyBUaGUgbWFpbiBjbGFzcyB3ZSB3aWxsIHVzZSBmb3IgU2luZ2xlIENlbGwgZGF0YQpsaWJyYXJ5KFNpbmdsZUNlbGxFeHBlcmltZW50KQoKIyBTZXR0aW5nIHRoZSBzZWVkIGZvciByZXByb2R1Y2liaWxpdHkKc2V0LnNlZWQoMTIzNDUpCmBgYAoKIyMjIERpcmVjdG9yaWVzIGFuZCBmaWxlcwoKQmVmb3JlIHdlIGdldCB0b28gZmFyLCB3ZSBsaWtlIHRvIGRlZmluZSB0aGUgaW5wdXQgYW5kIG91dHB1dCBmaWxlcyB0aGF0IHRoZSBub3RlYm9vayB3aWxsIHVzZSBuZWFyIHRoZSB0b3Agb2YgdGhlIGRvY3VtZW50LgpXaGlsZSB5b3UgbWlnaHQgbm90IGtub3cgdGhlIG5hbWVzIG9mIGFsbCBvZiB0aGUgZmlsZXMgeW91IHdpbGwgbmVlZCBvciBjcmVhdGUgb3V0cHV0IGZpbGVzIHdoZW4geW91IHN0YXJ0IGFuIGFuYWx5c2lzLCB3ZSBoYXZlIGZvdW5kIGl0IGhlbHBmdWwgdG8ga2VlcCBhbGwgZmlsZSBhbmQgZGlyZWN0b3J5IG5hbWVzIGluIGEgc2luZ2xlIHBsYWNlIG5lYXIgdGhlIHRvcCBvZiB0aGUgZG9jdW1lbnQuClRoaXMgbWFrZXMgaXQgZWFzaWVyIGZvciBzb21lYm9keSBjb21pbmcgdG8gdGhlIGNvZGUgbGF0ZXIgdG8gcXVpY2tseSBzZWUgd2hhdCBmaWxlcyBhcmUgbmVlZGVkIGFzIGlucHV0IGFuZCB3aGF0IHdpbGwgYmUgcHJvZHVjZWQgYXMgb3V0cHV0LgpNb3JlIG9mdGVuIHRoYW4gbm90LCB0aGF0IHNvbWVib2R5IGlzIHlvdSEKClRoZSBnZW5lIGV4cHJlc3Npb24gZGF0YSB3ZXJlIHByb2Nlc3NlZCB0byBjcmVhdGUgYSBnZW5lLWJ5LWNlbGwgZXhwcmVzc2lvbiBtYXRyaXggb2YgY291bnRzIGZvciB1c2luZyBDZWxsIFJhbmdlciA2LjAuCldlIGhhdmUgcHJvdmlkZWQgdGhlIHJhdyBkYXRhIGRpcmVjdG9yeSwgYHJhd19mZWF0dXJlX2JjX21hdHJpeGAsIHdoaWNoIGlzIHVzdWFsbHkgcHJvZHVjZWQgYnkgQ2VsbCBSYW5nZXIgYW5kIHBsYWNlZCBpbiBpdHMgYG91dHNgIGRpcmVjdG9yeS4KVGhpcyBkaXJlY3RvcnkgdXN1YWxseSBjb250YWlucyB0aHJlZSBmaWxlczoKLSBgYmFyY29kZXMudHN2Lmd6YCwgYSB0YWJsZSBvZiB0aGUgY2VsbCBiYXJjb2RlcyB0aGF0IDEweCB1c2VzLCBjb3JyZXNwb25kaW5nIHRvIHRoZSBjb2x1bW5zIG9mIHRoZSBjb3VudCBtYXRyaXguCi0gYGZlYXR1cmVzLnRzdi5nemAsIGEgdGFibGUgb2YgdGhlIGZlYXR1cmVzIChnZW5lcyBpbiB0aGlzIGNhc2UpIGZvciB3aGljaCBleHByZXNzaW9uIHdhcyBxdWFudGlmaWVkLgpUaGlzIHdpbGwgdXN1YWxseSBhbHNvIGluY2x1ZGUgYSBiaXQgb2YgbWV0YWRhdGEgYWJvdXQgdGhlIGZlYXR1cmVzLCBpbmNsdWRpbmcgZ2VuZSBzeW1ib2xzIChpZiB0aGUgZmVhdHVyZXMgYXJlIGdlbmVzKSBhbmQgdGhlIHR5cGUgb2YgZGF0YSB0aGV5IHJlcHJlc2VudCAoZS5nLiwgZ2VuZSBleHByZXNzaW9uIG9yIGFudGlib2R5IGNhcHR1cmUpLgotIGBtYXRyaXgubXR4Lmd6YCwgVGhlIGNvdW50cyB0aGVtc2VsdmVzLCBzdG9yZWQgaW4gYSBzcGFyc2UgWyJNYXRyaXggRXhjaGFuZ2UiIGZvcm1hdF0oaHR0cHM6Ly9tYXRoLm5pc3QuZ292L01hdHJpeE1hcmtldC9mb3JtYXRzLmh0bWwpLgoKQ2VsbCBSYW5nZXIgd2lsbCBhbHNvIGV4cG9ydCB0aGVzZSBkYXRhIGluIGEgc2luZ2xlIGBIREY1YCBmb3JtYXQgZmlsZSB3aXRoIGEgYC5oNWAgZXh0ZW5zaW9uLCB3aGljaCBjYW4gYWxzbyBiZSBpbXBvcnRlZCB3aXRoIHRoZSBzYW1lIGNvbW1hbmRzIHdlIHdpbGwgdXNlIGJlbG93LgpIb3dldmVyLCB3ZSBoYXZlIGZvdW5kIHRoYXQgcHJvY2Vzc2luZyBsYXJnZSBgLmg1YCBmaWxlcyBpcyBvZnRlbiBfbXVjaF8gbGVzcyBlZmZpY2llbnQgaW4gUiwgc28gd2UgcHJlZmVyIHRvIHN0YXJ0IHdpdGggdGhlIG1hdHJpeCBmaWxlcyB3aGVuIHBvc3NpYmxlLgpJbiBwYXJ0aWN1bGFyLCB3ZSB3b3VsZCBub3QgcmVjb21tZW5kIHdvcmtpbmcgd2l0aCBgLmg1YCBmaWxlcyBmb3IgcmF3IGRhdGE7IHRoZSBmaWx0ZXJpbmcgc3RlcHMgd2Ugd2lsbCB1c2UgYmVsb3cgY2FuIHNvbWV0aW1lcyB0YWtlIGhvdXJzIHdoZW4gdXNpbmcgdGhvc2UgZmlsZXMgYXMgaW5wdXQuCgpXZSB3aWxsIGFsc28gbmVlZCBhIHRhYmxlIG9mIG1pdG9jaG9uZHJpYWwgZ2VuZXMsIHdoaWNoIHdlIGhhdmUgc3RvcmVkIGluIHRoZSBgZGF0YS9yZWZlcmVuY2UvYCBkaXJlY3RvcnkuCgpGaW5hbGx5LCB3ZSB3aWxsIHNldCB1cCB0aGUgb3VyIG91dHB1dCBkaXJlY3RvcnksIGNyZWF0aW5nIGl0IGlmIGl0IGRvZXMgbm90IHlldCBleGlzdCwgYW5kIGRlZmluZSB0aGUgbmFtZSBmb3IgdGhlIGZpbGVzIHdlIHdpbGwgc2F2ZSBhZnRlciBhbGwgb2Ygb3VyIGluaXRpYWwgcHJvY2Vzc2luZyBpcyBjb21wbGV0ZS4KCmBgYHtyIGlucHV0cywgbGl2ZT1UUlVFfQojIElucHV0cyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIG1haW4gZGF0YSBkaXJlY3RvcnkKZGF0YV9kaXIgPC0gZmlsZS5wYXRoKCJkYXRhIiwgImdsaW9ibGFzdG9tYS0xMHgiKQoKIyBQYXRoIHRvIHRoZSBDZWxsIFJhbmdlciBtYXRyaXggZGlyZWN0b3J5CnJhd19tYXRyaXhfZGlyIDwtIGZpbGUucGF0aChkYXRhX2RpciwgInJhd19mZWF0dXJlX2JjX21hdHJpeCIpCgojIHJlZmVyZW5jZSBkYXRhIGRpcmVjdG9yeQpyZWZfZGlyIDwtIGZpbGUucGF0aCgiZGF0YSIsICJyZWZlcmVuY2UiKQoKIyBQYXRoIHRvIG1pdG9jaG9uZHJpYWwgZ2VuZXMgdGFibGUKbWl0b19maWxlIDwtIGZpbGUucGF0aChyZWZfZGlyLCAiaHNfbWl0b2Nob25kcmlhbF9nZW5lcy50c3YiKQpgYGAKCmBgYHtyIG91dHB1dHN9CiMgT3V0cHV0cyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCiMgRGlyZWN0b3J5IGFuZCBmaWxlIHRvIHNhdmUgb3V0cHV0Cm5vcm1hbGl6ZWRfZGlyIDwtIGZpbGUucGF0aChkYXRhX2RpciwgIm5vcm1hbGl6ZWQiKQoKIyBjcmVhdGUgdGhlIGRpcmVjdG9yeSBpZiBpdCBkb2VzIG5vdCBleGlzdApmczo6ZGlyX2NyZWF0ZShub3JtYWxpemVkX2RpcikKCiMgb3V0cHV0IFJEUyBmaWxlIGZvciBub3JtYWxpemVkIGRhdGEKb3V0cHV0X3NjZV9maWxlIDwtIGZpbGUucGF0aCgKICBub3JtYWxpemVkX2RpciwKICAiZ2xpb2JsYXN0b21hX25vcm1hbGl6ZWRfc2NlLnJkcyIKKQpgYGAKCgojIyBSZWFkaW5nIENlbGwgUmFuZ2VyIGRhdGEKCiFbU2luZ2xlLWNlbGwgcm9hZG1hcDogUHJlcHJvY2VzcyBhbmQgSW1wb3J0XShkaWFncmFtcy9yb2FkbWFwX3NpbmdsZV9wcmVwcm9jZXNzLnBuZykKCldoZXRoZXIgdGhlIDEweCBDZWxsIFJhbmdlciBkYXRhIGlzIGluIE1hdHJpeCBFeGNoYW5nZSBmb3JtYXQgb3IgaW4gYW4gSERGNSBmaWxlLCB3ZSBjYW4gdXNlIHRoZSBgcmVhZDEweENvdW50cygpYCBmdW5jdGlvbiBmcm9tIHRoZSBgRHJvcGxldFV0aWxzYCBwYWNrYWdlIHRvIHJlYWQgdGhlIGRhdGEgaW50byBSIGFuZCBjcmVhdGUgYSBgU2luZ2xlQ2VsbEV4cGVyaW1lbnRgIG9iamVjdC4KKFRob3VnaCBhZ2Fpbiwgd2UgZG8gbm90IHJlY29tbWVuZCB1c2luZyB0aGUgYC5oNWAgZmlsZSBpZiB5b3UgY2FuIGF2b2lkIGl0LCBfZXNwZWNpYWxseV8gZm9yIHJhdyAodW5maWx0ZXJlZCkgZGF0YS4pCgpJZiB5b3UgdXNlZCBzb21ldGhpbmcgb3RoZXIgdGhhbiBDZWxsIFJhbmdlciB0byBwcm9jZXNzIHRoZSByYXcgZGF0YSwgeW91IHdvdWxkIG5lZWQgdG8gdXNlIGEgZGlmZmVyZW50IGZ1bmN0aW9uIHRvIHJlYWQgaXQgaW4gYW5kIGNyZWF0ZSB0aGUgYFNpbmdsZUNlbGxFeHBlcmltZW50YCBvYmplY3QuClNvbWUgb2YgdGhlc2UgZnVuY3Rpb25zIGZvciBvdGhlciBjb21tb24gZGF0YSBmb3JtYXRzIGFyZSBkaXNjdXNzZWQgaW4gW0NoYXB0ZXIgMyBvZiBPU0NBXShodHRwOi8vYmlvY29uZHVjdG9yLm9yZy9ib29rcy8zLjE5L09TQ0EuaW50cm8vZ2V0dGluZy1zY3JuYS1zZXEtZGF0YXNldHMuaHRtbCNyZWFkaW5nLWNvdW50cy1pbnRvLXIpLgoKYGBge3IgcmVhZCBTQ0UsIGxpdmU9VFJVRX0KIyByZWFkIFNDRSBmcm9tIG1hdHJpeCBkaXJlY3RvcnkKcmF3X3NjZSA8LSBEcm9wbGV0VXRpbHM6OnJlYWQxMHhDb3VudHMoCiAgcmF3X21hdHJpeF9kaXIsCiAgY29sLm5hbWVzID0gVFJVRSAjIGVuc3VyZSBiYXJjb2RlcyBhcmUgc2V0IGFzIGNvbHVtbiBuYW1lcyBpbiB0aGUgU0NFIG9iamVjdAopCmBgYAoKTGV0J3MgbG9vayBhdCB0aGUgY29udGVudHMgb2YgdGhlIG9iamVjdCBhZnRlciByZWFkaW5nIGl0IGluOgoKYGBge3IgdmlldyBTQ0UsIGxpdmU9VFJVRX0KIyB2aWV3IFNDRSBvYmplY3QKcmF3X3NjZQpgYGAKCldlIGNhbiBzZWUgZnJvbSB0aGlzIHN1bW1hcnkgdGhhdCB0aGlzIGBTaW5nbGVDZWxsRXhwZXJpbWVudGAgKFNDRSkgb2JqZWN0IGNvbnRhaW5zIDM2LDYwMSByb3dzLCB3aGljaCBjb3JyZXNwb25kIHRvIHRoZSBmZWF0dXJlcyAoZ2VuZXMpIHRoYXQgd2VyZSBhbmFseXplZCwgYW5kIDczNCw0OTIgY29sdW1ucywgd2hpY2ggY29ycmVzcG9uZCB0byB0aGUgcG9zc2libGUgYmFyY29kZSB0YWdzIHRoYXQgd2VyZSB1c2VkIGluIHRoZSBleHBlcmltZW50LgpOb3RlIHRoYXQgbm90IGFsbCBvZiB0aGVzZSBiYXJjb2RlIHRhZ3Mgd2lsbCBoYXZlIGJlZW4gdXNlZCwgYW5kIG1hbnkgb2YgdGhlIGZlYXR1cmVzIG1heSBuZXZlciBoYXZlIGJlZW4gc2VlbiBlaXRoZXIuCk9uZSBvZiBvdXIgZmlyc3Qgc3RlcHMgd2lsbCBiZSB0byBmaWx0ZXIgb3V0IGJhcmNvZGVzIHRoYXQgd2VyZSBuZXZlciBzZWVuLCBvciB0aGF0IG1heSBoYXZlIG9ubHkgYmVlbiBzZWVuIGluIGEgZHJvcGxldCB0aGF0IGRpZCBub3QgY29udGFpbiBhIGNlbGwgKGFuICJlbXB0eSBkcm9wbGV0IikuCgojIyMgU3RydWN0dXJlIG9mIHRoZSBgU2luZ2xlQ2VsbEV4cGVyaW1lbnRgIG9iamVjdAoKSW4gYWRkaXRpb24gdG8gdGhlIG1haW4gYGNvdW50c2AgbWF0cml4LCBsaXN0ZWQgYXMgYW4gYGFzc2F5YCBpbiB0aGUgU0NFIHN1bW1hcnkgYWJvdmUsIHRoZSBTQ0Ugb2JqZWN0IGNhbiBjb250YWluIGEgbnVtYmVyIG9mIG90aGVyIHRhYmxlcyBhbmQgbWF0cmljZXMsIGVhY2ggc3RvcmVkIGluIGEgInNsb3QiIHdpdGggYSBwYXJ0aWN1bGFyIGZvcm1hdC4KVGhlIG92ZXJhbGwgc3RydWN0dXJlIG9mIHRoZSBvYmplY3QgY2FuIGJlIHNlZW4gaW4gdGhlIGZpZ3VyZSBiZWxvdywgd2hpY2ggY29tZXMgZnJvbSBhbiBbT1NDQSBJbnRyb2R1Y3Rpb24gY2hhcHRlcl0oaHR0cDovL2Jpb2NvbmR1Y3Rvci5vcmcvYm9va3MvMy4xOS9PU0NBLmludHJvL3RoZS1zaW5nbGVjZWxsZXhwZXJpbWVudC1jbGFzcy5odG1sKS4KCiFbU3RydWN0dXJlIG9mIGEgU2luZ2xlQ2VsbEV4cGVyaW1lbnQgb2JqZWN0XShkaWFncmFtcy9TaW5nbGVDZWxsRXhwZXJpbWVudC5wbmcpCgpXZSBoYXZlIGp1c3QgbWVudGlvbmVkIHRoZSBtYWluIGBhc3NheWAgc2xvdCwgd2hpY2ggY29udGFpbnMgZnVsbCBtYXRyaWNlcyBvZiBkYXRhIChzdWNoIGFzIHRyYW5zY3JpcHQgY291bnRzKSB3aXRoIGVhY2ggcm93IGEgZmVhdHVyZSBhbmQgZWFjaCBjb2x1bW4gYSBjZWxsLgpUaGVyZSBhcmUgYWxzbyBhIGNvdXBsZSBvZiB0YWJsZXMgZm9yIG1ldGFkYXRhLCBhbmQgYSBzbG90IHRvIHN0b3JlIHJlZHVjZWQtZGltZW5zaW9uIHJlcHJlc2VudGF0aW9ucyAoZS5nLiwgUENBIGFuZC9vciBVTUFQKSBvZiB0aGUgZXhwcmVzc2lvbiBkYXRhLgoKV2UnbGwgc3RhcnQgd2l0aCB0aGUgYHJvd0RhdGFgIHNsb3QsIHdoaWNoIGlzIGEgdGFibGUgb2YgbWV0YWRhdGEgZm9yIGVhY2ggZmVhdHVyZSBpbiBvdXIgb2JqZWN0LgpGb3Igbm93IHRoYXQgY29udGFpbnMgdGhlIGNvbnRlbnRzIG9mIHRoZSBgZmVhdHVyZXMudHN2Lmd6YCBmaWxlIHRoYXQgd2UgZGlzY3Vzc2VkIGVhcmxpZXIuCklmIHdlIGhhZCByZWFkIHRoZSBkYXRhIGZyb20gc29tZXRoaW5nIG90aGVyIHRoYW4gQ2VsbCBSYW5nZXIgb3V0cHV0LCB3ZSBtaWdodCBoYXZlIGRpZmZlcmVudCBjb250ZW50cywgYnV0IGVhY2ggcm93IHdvdWxkIHN0aWxsIGNvcnJlc3BvbmQgdG8gYSBzaW5nbGUgZmVhdHVyZSBvZiB0aGUgU0NFIG9iamVjdC4KCkxldCdzIGxvb2sgYXQgdGhpcyB0YWJsZSwgZXh0cmFjdGluZyBpdCBmcm9tIHRoZSBTQ0Ugb2JqZWN0IHdpdGggdGhlIGByb3dEYXRhKClgIGZ1bmN0aW9uIGFuZCB1c2luZyBgaGVhZCgpYCB0byB2aWV3IG9ubHkgdGhlIGZpcnN0IDYgcm93cy4KCmBgYHtyIHJvd2RhdGF9CiMgdmlldyByb3dEYXRhIChmZWF0dXJlcykKaGVhZChyb3dEYXRhKHJhd19zY2UpKQpgYGAKCllvdSBjYW4gc2VlIHRoYXQgdGhpcyB0YWJsZSBpbmNsdWRlcyBhbiBgSURgIGZvciBlYWNoIGZlYXR1cmUsIHdoaWNoIGlzIHVzdWFsbHkgdGhlIEVuc2VtYmwgZ2VuZSBJRCwgYXMgd2VsbCBhcyB0aGUgY29ycmVzcG9uZGluZyBnZW5lIHN5bWJvbCBpbiB0aGUgYFN5bWJvbGAgY29sdW1uLgpGaW5hbGx5IHRoZXJlIGlzIGEgY29sdW1uIGZvciBgVHlwZWAsIHdoaWNoIGluIHRoaXMgY2FzZSBpcyBhbHdheXMgIkdlbmUgRXhwcmVzc2lvbiIsIGFzIGFsbCBvZiB0aGUgZmVhdHVyZXMgaW4gdGhpcyBkYXRhIHNldCBhcmUgZ2VuZXMuCklmIHRoZXJlIHdlcmUgYW5vdGhlciBtb2RhbGl0eSBvZiBkYXRhIHRoYXQgaGFkIGJlZW4gYXNzYXllZCBpbiB0aGlzIGV4cGVyaW1lbnQsIHRoZXJlIG1pZ2h0IGJlIG90aGVyIHZhbHVlcyBpbiB0aGlzIGNvbHVtbiwgc3VjaCBhcyAiQW50aWJvZHkgQ2FwdHVyZSIgZm9yIENJVEUtc2VxIGV4cGVyaW1lbnRzLgoKVGhlIHNlY29uZCBzbG90IGlzIHRoZSBgY29sRGF0YWAgdGFibGUsIHdoaWNoIG5vdyBjb3JyZXNwb25kcyB0byB0aGUgYGJhcmNvZGVzLnRzdi5nemAgZmlsZSwgY29udGFpbmluZyBvbmUgcm93IHBlciBjZWxsIGJhcmNvZGUsIG9yLCBtb3JlIGdlbmVyYWxseSwgb25lIHJvdyBwZXIgY29sdW1uIG9mIHRoZSBgY291bnRzYCBhc3NheS4KV2UgY2FuIGxvb2sgYXQgdGhpcyB0YWJsZSB1c2luZyB0aGUgYGNvbERhdGEoKWAgZnVuY3Rpb24gKGFuZCBgaGVhZCgpYCBhZ2FpbiB0byBwcmV2ZW50IHByaW50aW5nIHRoZSB3aG9sZSB0YWJsZSk6CgpgYGB7ciBjb2xkYXRhfQojIHZpZXcgY29sRGF0YSAoY2VsbCBiYXJjb2RlcykKaGVhZChjb2xEYXRhKHJhd19zY2UpKQpgYGAKCkhlcmUgd2Ugc2VlIHRoYXQgdGhlcmUgYXJlIGN1cnJlbnRseSB0d28gY29sdW1uczoKCi0gdGhlIGBTYW1wbGVgIGNvbHVtbiBoYXMgdGhlIHBhdGggb2YgdGhlIGZpbGUgdGhhdCB3ZSByZWFkIGluICh5b3UgbWF5IG5vdCBzZWUgdGhlIHdob2xlIHBhdGggaW4gdGhpcyBkaXNwbGF5KTsgdGhpcyBzaG91bGQgYmUgaWRlbnRpY2FsIGluIGFsbCByb3dzIGZyb20gYSBzaW5nbGUgc2FtcGxlLgotIHRoZSBgQmFyY29kZWAgY29sdW1uIGNvbnRhaW5zIHRoZSBzZXF1ZW5jZSB0aGF0IHdhcyB1c2VkIHRvIGlkZW50aWZ5IGVhY2ggcG90ZW50aWFsIGRyb3BsZXQgZm9yIHNlcXVlbmNpbmcgKGFuZCBhIG51bWVyaWMgdGFnLCBpbiB0aGlzIGNhc2UpLgpUaGVzZSB3aWxsIGJlIHVuaXF1ZSB3aXRoaW4gYSBzYW1wbGUuCgpBcyB3ZSBwcm9jZWVkIHRvIGNhbGN1bGF0ZSBwZXItY2VsbCBzdGF0aXN0aWNzLCB3ZSB3aWxsIGJlIGFkZGluZyBuZXcgZGF0YSB0byB0aGlzIHRhYmxlLgoKIyMgUXVhbGl0eSBjb250cm9sIGFuZCBmaWx0ZXJpbmcKCiFbU2luZ2xlLWNlbGwgcm9hZG1hcDogUUMsIEZpbHRlciwgYW5kIE5vcm1hbGl6ZV0oZGlhZ3JhbXMvcm9hZG1hcF9zaW5nbGVfcWNfbm9ybS5wbmcpCgojIyMgRmlsdGVyaW5nIGVtcHR5IGRyb3BsZXRzCgpNb3N0IG9mIHRoZSBiYXJjb2RlcyBpbiBhbnkgZ2l2ZW4gMTB4IGV4cGVyaW1lbnQgd2lsbCBub3QgYmUgc2VlbiBhdCBhbGwsIHNvIG91ciBmaXJzdCBzdGVwIGNhbiBiZSB0byBmaWx0ZXIgdGhpcyByYXcgZGF0YSB0byBvbmx5IHRoZSBjZWxscyB3aGVyZSB0aGVyZSBpcyBhdCBsZWFzdCBvbmUgdHJhbnNjcmlwdCB0aGF0IHdhcyBjb3VudGVkIHdpdGggdGhhdCBiYXJjb2RlLgoKVG8gZG8gdGhpcywgd2Ugd2lsbCB1c2UgdGhlIGBjb2xTdW1zKClgIGZ1bmN0aW9uIHRvIHF1aWNrbHkgYWRkIHVwIGFsbCB0aGUgY291bnRzIHRoYXQgY29ycmVzcG9uZCB0byBlYWNoIHBvc3NpYmxlIGNlbGwgYmFyY29kZSwgdGhlbiBmaWx0ZXIgb3VyIGByYXdfc2NlYCBkb3duIHRvIGp1c3QgdGhvc2UgY29sdW1ucyB3aGVyZSB0aGVyZSBhcmUgbm9uLXplcm8gdG90YWwgY291bnRzLgpXZSB3aWxsIG5lZWQgdG8gZXh0cmFjdCB0aGUgYGNvdW50c2AgbWF0cml4IGZyb20gb3VyIFNDRSBvYmplY3QsIHdoaWNoIHdlIGNhbiBkbyB1c2luZyB0aGUgYGNvdW50cygpYCBmdW5jdGlvbiwgY29udmVuaWVudGx5IGVub3VnaC4KCmBgYHtyIHJlbW92ZSB6ZXJvcywgbGl2ZT1UUlVFfQojIHN1bSBjb2x1bW5zIGZyb20gY291bnRzIG1hdHJpeApiYXJjb2RlX2NvdW50cyA8LSBjb2xTdW1zKGNvdW50cyhyYXdfc2NlKSkKCiMgZmlsdGVyIFNDRSBvYmplY3QgdG8gb25seSByb3dzIHdpdGggY291bnRzID4gMApyYXdfc2NlIDwtIHJhd19zY2VbLCB3aGljaChiYXJjb2RlX2NvdW50cyA+IDApXQpgYGAKCk5vdyB3ZSBjYW4gbG9vayBhdCBob3cgb3VyIFNDRSBvYmplY3QgaGFzIGNoYW5nZWQ6CgpgYGB7ciB6ZXJvLWZpbHRlcmVkIFNDRX0KcmF3X3NjZQpgYGAKCkJ1dCBiYXJjb2RlcyB3aXRoIHplcm8gY291bnRzIGFyZSBub3QgdGhlIG9ubHkgb25lcyB0aGF0IGNvcnJlc3BvbmQgdG8gZHJvcGxldHMgd2l0aG91dCBjZWxscyBpbiB0aGVtIQpFdmVuIGlmIGEgZHJvcGxldCBkb2VzIG5vdCBoYXZlIGEgY2VsbCBpbiBpdCwgdGhlcmUgd2lsbCBvZnRlbiBiZSBzcHVyaW91cyByZWFkcyBmcm9tIFJOQSBzZXF1ZW5jZXMgdGhhdCB3ZXJlIHByZXNlbnQgaW4gdGhlIGV4dHJhY2VsbHVsYXIgc29sdXRpb24sIHdoZXRoZXIgZnJvbSB0aGUgb3JpZ2luYWwgc2FtcGxlIG9yIGZyb20gY2VsbHMgdGhhdCB3ZXJlIGRhbWFnZWQgZHVyaW5nIHNpbmdsZS1jZWxsIGxpYnJhcnkgcHJlcGFyYXRpb24uCgpXZSBjb3VsZCBpZGVudGlmeSB0aGVzZSBiYXJjb2RlcyBzaW1wbHkgYXMgdGhvc2Ugd2l0aCBsb3cgdHJhbnNjcmlwdCBjb3VudHMuCk9yLCB3ZSBjYW4gYmUgYSBiaXQgbW9yZSBjbGV2ZXIhCldlIGNhbiBsb29rIGF0IHRoZSB0cmFuc2NyaXB0IGNvdW50cyBfZnJvbV8gdGhlIGxvd2VzdC1jb3VudCBkcm9wbGV0cyB0byBjcmVhdGUgYW4gZXhwZWN0ZWQgZGlzdHJpYnV0aW9uIG9mIHRyYW5zY3JpcHRzIGluIGRyb3BsZXRzIHRoYXQgZG9uJ3QgY29udGFpbiBjZWxscy4KVGhlbiB3ZSBjYW4gdGVzdCBlYWNoIGRyb3BsZXQgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgb3Igbm90IGl0cyB0cmFuc2NyaXB0IGRpc3RyaWJ1dGlvbiBkZXZpYXRlcyBmcm9tIHRoYXQgZXhwZWN0YXRpb24uCklmIGl0IGRvZXMsIHRoZW4gd2UgaGF2ZSBwcmV0dHkgZ29vZCBldmlkZW5jZSB0aGF0IHRoZXJlIF9pc18gYSBjZWxsIGluIHRoZXJlLgoKVGhpcyB0ZXN0IHdhcyBmaXJzdCBwcm9wb3NlZCBieSBbTHVuIF9ldCBhbC5fICgyMDE5KV0oaHR0cHM6Ly9kb2kub3JnLzEwLjExODYvczEzMDU5LTAxOS0xNjYyLXkpIGFuZCBpbXBsZW1lbnRlZCBhcyBgZW1wdHlEcm9wcygpYCBpbiB0aGUgYERyb3BsZXRVdGlsc2AgcGFja2FnZS4KVGhpcyBtZXRob2Qgd2FzIHRoZW4gYWRvcHRlZCwgd2l0aCBzb21lIG1vZGlmaWNhdGlvbnMsIGFzIHRoZSBkZWZhdWx0IGNlbGwgZmlsdGVyaW5nIG1ldGhvZCB1c2VkIGJ5IENlbGwgUmFuZ2VyLgpIZXJlIHdlIHdpbGwgdXNlIHRoZSBbYGVtcHR5RHJvcHNDZWxsUmFuZ2VyKClgIGZ1bmN0aW9uXShodHRwczovL3JkcnIuaW8vZ2l0aHViL01hcmlvbmlMYWIvRHJvcGxldFV0aWxzL21hbi9lbXB0eURyb3BzQ2VsbFJhbmdlci5odG1sKSB0byBwZXJmb3JtIGZpbHRlcmluZyB0aGF0IG1vcmUgY2xvc2VseSBtYXRjaGVzIHRoZSBDZWxsIFJhbmdlciBpbXBsZW1lbnRhdGlvbi4KCgpgYGB7ciBjYWxjdWxhdGUgZHJvcGxldCBzdGF0cywgbGl2ZT1UUlVFfQojIGNyZWF0ZSBhIHRhYmxlIG9mIHN0YXRpc3RpY3MgdXNpbmcgZW1wdHlEcm9wc0NlbGxSYW5nZXIKZHJvcGxldF9kZiA8LSBEcm9wbGV0VXRpbHM6OmVtcHR5RHJvcHNDZWxsUmFuZ2VyKHJhd19zY2UpCmBgYAoKTW9zdCB2YWx1ZXMgaW4gdGhpcyB0YWJsZSBhcmUgYE5BYCwgYmVjYXVzZSBpbmRpdmlkdWFsIHN0YXRpc3RpY3Mgd2VyZSBub3QgY2FsY3VsYXRlZCBmb3IgdGhlIGxvdy1jb3VudCBkcm9wbGV0cyB0aGF0IHdlcmUgdXNlZCB0byBnZW5lcmF0ZSB0aGUgYmFja2dyb3VuZCBkaXN0cmlidXRpb24uCihNb3N0IGRyb3BsZXRzIGRvbid0IGhhdmUgY2VsbHMsIHNvIHRoaXMgbWFrZXMgc29tZSBzZW5zZSEpCgpXZSBjYW4gbG9vayBhdCBqdXN0IHRoZSByb3dzIHdpdGhvdXQgYE5BYCB2YWx1ZXMgYnkgc2VsZWN0ZWQgdGhlIG9uZXMgd2hlcmUgdGhlIEZEUiAod2hpY2ggd2Ugd2lsbCB1c2UgYWdhaW4gc29vbiksIGlzIG5vdCBgTkFgLgoKYGBge3IgZHJvcGxldCBzdGF0c30KIyB2aWV3IHJvd3Mgd2hlcmUgRkRSIGlzIG5vdCBgTkFgCmRyb3BsZXRfZGZbIWlzLm5hKGRyb3BsZXRfZGYkRkRSKSwgXQpgYGAKWW91IHdpbGwgbm90aWNlIHRoYXQgc29tZSBjZWxscyB3aXRoIGhpZ2ggY291bnRzIGFsc28gaGF2ZSBgTkFgIHZhbHVlcyBmb3IgbWFueSBzdGF0aXN0aWNzLgpJbiB0aG9zZSBjYXNlcywgYE5BYCB2YWx1ZXMgYXJlIGFjdHVhbGx5IHByZXNlbnQgX2JlY2F1c2VfIG9mIHRoZSBoaWdoIGNvdW50cyAtIGBlbXB0eURyb3BzQ2VsbFJhbmdlcigpYCBhdXRvbWF0aWNhbGx5IGFzc3VtZWQgY2VsbHMgd2VyZSBwcmVzZW50LCBzbyB0aGV5IHdlcmUgYWxzbyBub3QgdGVzdGVkLgoKTm93IHdlIGNhbiBmaWx0ZXIgb3VyIGByYXdfc2NlYCBvYmplY3QgX2J5IGNvbHVtbl8gdG8gb25seSBrZWVwIHRoZSBjZWxscyB3aXRoIGEgc21hbGwgRkRSOiB0aG9zZSB0aGF0IGFyZSBxdWl0ZSB1bmxpa2VseSB0byBiZSBlbXB0eSBkcm9wbGV0cy4KCmBgYHtyIGZpbHRlciBlbXB0eWRyb3BzLCBsaXZlPVRSVUV9CiMgZmlsdGVyIGRyb3BsZXRzIHVzaW5nIGB3aGljaGAgdG8gcHJldmVudCBOQSB0cm91YmxlCmNlbGxzX3RvX3JldGFpbiA8LSB3aGljaChkcm9wbGV0X2RmJEZEUiA8IDAuMDEpCmZpbHRlcmVkX3NjZSA8LSByYXdfc2NlWywgY2VsbHNfdG9fcmV0YWluXQpgYGAKCkhvdyBtYW55IGNlbGxzIGRvIHdlIGhhdmUgbm93PwoKYGBge3IgZmlsdGVyZWQgc3VtbWFyeX0KZmlsdGVyZWRfc2NlCmBgYAoKIyMjIEFkZGl0aW9uYWwgcXVhbGl0eSBjb250cm9sCgpJbiBhZGRpdGlvbiB0byBmaWx0ZXJpbmcgb3V0IGVtcHR5IGRyb3BsZXRzLCB3ZSBhbHNvIHdpbGwgd2FudCB0byBmaWx0ZXIgb3V0IGNlbGxzIHRoYXQgbWF5IGhhdmUgYmVlbiBkYW1hZ2VkIGR1cmluZyBsaWJyYXJ5IHByZXBhcmF0aW9uLgpUaGVzZSB3aWxsIG9mdGVuIGJlIGNoYXJhY3Rlcml6ZWQgYnkgYSBoaWdoIHByb3BvcnRpb24gb2YgbWl0b2Nob25kcmlhbCB0cmFuc2NyaXB0cyBhbmQgYSBzbWFsbGVyIG92ZXJhbGwgbnVtYmVyIG9mIHVuaXF1ZSB0cmFuc2NyaXB0cy4KV2hlbiBhIGNlbGwgcnVwdHVyZXMsIGN5dG9wbGFzbWljIHRyYW5zY3JpcHRzIHdpbGwgbGVhayBvdXQsIGJ1dCBtaXRvY2hvbmRyaWFsIHRyYW5zY3JpcHRzLCBzdGlsbCBwcm90ZWN0ZWQgYnkgdGhlIG1pdG9jaG9uZHJpYWwgbWVtYnJhbmUsIG1heSByZW1haW4uCkFzIGEgY29uc2VxdWVuY2UsIHRoZXJlIHdpbGwgYmUgYW4gb3Zlci1hYnVuZGFuY2Ugb2YgbWl0b2Nob25kcmlhbCByZWFkcywgYW5kIGZld2VyIHVuaXF1ZSB0cmFuc2NyaXB0cyBleHByZXNzZWQuCgpPdXIgZmlyc3Qgc3RlcCB0aGVuLCBpcyBjcmVhdGUgYSB2ZWN0b3Igb2YgdGhlIG1pdG9jaG9uZHJpYWwgZ2VuZXMgdGhhdCBhcmUgcHJlc2VudCBpbiBvdXIgZGF0YXNldC4KVGhlIG1pdG9jaG9uZHJpYWwgZmlsZSB3ZSBkZWZpbmVkIGR1cmluZyBzZXR1cCAoYG1pdG9fZmlsZWApIGlzIGEgVFNWIGZpbGUgY29udGFpbmluZyBhbGwgb2YgdGhlIGh1bWFuIG1pdG9jaG9uZHJpYWwgZ2VuZXMgd2l0aCBhZGRpdGlvbmFsIGFubm90YXRpb24gaW5mb3JtYXRpb24gZm9yIGVhY2ggZ2VuZSwgc3VjaCBhcyB0aGUgZ2VuZSBsb2NhdGlvbiBhbmQgYWx0ZXJuYXRpdmUgbmFtZXMuCihGb3IgbW9yZSBkZXRhaWwgb24gdGhlIHN0ZXBzIHdlIHRvb2sgdG8gY3JlYXRlIHRoaXMgZmlsZSwgeW91IGNhbiBsb29rIGF0IFtvbmUgb2Ygb3VyIHNldHVwIG5vdGVib29rc10oaHR0cHM6Ly9naXRodWIuY29tL0FsZXhzTGVtb25hZGUvdHJhaW5pbmctbW9kdWxlcy9ibG9iL21hc3Rlci9zY1JOQS1zZXEtYWR2YW5jZWQvc2V0dXAvbWl0b19nZW5lX2xpc3RzLlJtZCkpCgpBbGwgd2UgbmVlZCBub3cgaXMgdGhlIGBnZW5lX2lkYCwgYW5kIG9ubHkgZm9yIHRoZSBnZW5lcyB0aGF0IGFyZSBwcmVzZW50IGluIG91ciBTQ0UsIHNvIHdlIHdpbGwgZG8gc29tZSBmaWx0ZXJpbmcgd2l0aCBgZHBseXJgIHRvIHB1bGwgb3V0IGEgdmVjdG9yIHdpdGgganVzdCB0aG9zZSBpZHMuCgpgYGB7ciBnZXQgbWl0b2Nob25kcmlhbCBnZW5lc30KIyByZWFkIGluIGEgdGFibGUgb2YgbWl0b2Nob25kcmlhbCBnZW5lcyBhbmQgZXh0cmFjdCBpZHMKbWl0b19nZW5lcyA8LSByZWFkcjo6cmVhZF90c3YobWl0b19maWxlKSB8PgogICMgZmlsdGVyIHRvIG9ubHkgdGhlIGdlbmVzIHRoYXQgYXJlIGZvdW5kIGluIG91ciBkYXRhc2V0CiAgZHBseXI6OmZpbHRlcihnZW5lX2lkICVpbiUgcm93bmFtZXMoZmlsdGVyZWRfc2NlKSkgfD4KICAjIGNyZWF0ZSBhIHZlY3RvciBmcm9tIHRoZSBnZW5lX2lkIGNvbHVtbgogIGRwbHlyOjpwdWxsKGdlbmVfaWQpCmBgYAoKIyMjIENhbGN1bGF0aW5nIHN1bW1hcnkgUUMgc3RhdGlzdGljcwoKV2UgY2FuIG5vdyB1c2UgdGhlIGBzY3V0dGxlYCBmdW5jdGlvbiBgYWRkUGVyQ2VsbFFDKClgIHRvIGNhbGN1bGF0ZSBzb21lIHN0YXRpc3RpY3MgYmFzZWQgb24gdGhlIGNvdW50cyBtYXRyaXgsIHdoaWNoIHdpbGwgYmUgYWRkZWQgdG8gdGhlIGBjb2xEYXRhYCB0YWJsZS4KCkluIGFkZGl0aW9uIHRvIGNhbGN1bGF0aW5nIHN0YXRpc3RpY3MgbGlrZSB0aGUgdG90YWwgcmVhZCBjb3VudCBmb3IgZWFjaCBjZWxsIGFuZCB0aGUgbnVtYmVyIG9mIHRyYW5zY3JpcHRzIHRoYXQgYXJlIGRldGVjdGVkLCB3ZSBjYW4gYWxzbyBjYWxjdWxhdGUgdGhvc2Ugc3RhdGlzdGljcyBmb3IgZGVmaW5lZCBzdWJzZXRzIG9mIGdlbmVzLgpJbiB0aGlzIGNhc2UsIHdlIHdpbGwgdXNlIG91ciBgbWl0b19nZW5lc2AgdmVjdG9yIHRvIGRlZmluZSBhIHN1YnNldCBjYWxsZWQgYG1pdG9gLgpUaGUgYG1pdG9gIG5hbWUgaXMgaW1wb3J0YW50IGluIHRoYXQgaXQgaXMgdGhlIG5hbWUgdGhhdCB3aWxsIGJlIGV4cGVjdGVkIGJ5IGEgbGF0ZXIgZnVuY3Rpb24uCihXZSBjb3VsZCBkZWZpbmUgbW9yZSBzdWJzZXRzLCBidXQgZm9yIG5vdyB0aGlzIG9uZSB3aWxsIGRvLikKCmBgYHtyIHBlciBjZWxsIFFDLCBsaXZlPVRSVUV9CmZpbHRlcmVkX3NjZSA8LSBzY3V0dGxlOjphZGRQZXJDZWxsUUMoCiAgZmlsdGVyZWRfc2NlLAogIHN1YnNldHMgPSBsaXN0KG1pdG8gPSBtaXRvX2dlbmVzKQopCmBgYAoKTm93IHdlIGNhbiBsb29rIGF0IHRoZSBjb2xEYXRhIHRvIHNlZSB3aGF0IHdhcyBhZGRlZDoKCmBgYHtyIHZpZXcgY29sRGF0YSBzdGF0c30KaGVhZChjb2xEYXRhKGZpbHRlcmVkX3NjZSkpCmBgYAoKV2UgY2FuIGFsc28gcGxvdCBzb21lIG9mIHRoZXNlIHN0YXRpc3RpY3MsIGhlcmUgdXNpbmcgdGhlIGBwbG90TWV0cmljcygpYCBmdW5jdGlvbiBmcm9tIHRoZSBgbWlRQ2AgcGFja2FnZSB0byBwbG90IHRoZSBwZXJjZW50IG9mIHJlYWRzIHRoYXQgYXJlIG1pdG9jaG9uZHJpYWwgKHRoZSBgc3Vic2V0c19taXRvX3BlcmNlbnRgIGNvbHVtbikgYWdhaW5zdCB0aGUgbnVtYmVyIG9mIHVuaXF1ZSBnZW5lcyBkZXRlY3RlZCAodGhlIGBkZXRlY3RlZGAgY29sdW1uKSBmb3IgZWFjaCBjZWxsLgoKYGBge3IgbWlRQyBwbG90TWV0cmljc30KIyB1c2UgbWlRQzo6cGxvdE1ldHJpY3MoKQptaVFDOjpwbG90TWV0cmljcyhmaWx0ZXJlZF9zY2UpICsgdGhlbWVfYncoKQpgYGAKCldlIGNhbiBzZWUgdGhhdCB0aGVyZSBpcyBhIHJhbmdlIG9mIG1pdG9jaG9uZHJpYWwgcGVyY2VudGFnZXMsIGFuZCBpdCBkb2VzIGFsc28gc2VlbSB0aGF0IGNlbGxzIHdpdGggaGlnaCBwZXJjZW50YWdlcyBvZiBtaXRvY2hvbmRyaWFsIGdlbmVzIGRvbid0IHNlZW0gdG8gY29udGFpbiB2ZXJ5IG1hbnkgdW5pcXVlIGdlbmVzLgoKSG93IGRvIHdlIGZpbHRlciB3aXRoIHRoaXMgaW5mb3JtYXRpb24/Ck9uZSBvcHRpb24gaXMgdG8gZGVmaW5lIGEgY3V0b2ZmIGZvciB0aGUgbWl0b2Nob25kcmlhbCBwZXJjZW50YWdlIGFib3ZlIHdoaWNoIHdlIGNhbGwgYSBjZWxsIGNvbXByb21pc2VkIGFuZCBleGNsdWRlIGl0IGZyb20gZnVydGhlciBhbmFseXNpcy4KSG93ZXZlciwgY2hvb3NpbmcgdGhhdCBjdXRvZmYgY2FuIGJlIGEgYml0IGZyYXVnaHQsIGFzIHRoZSBleHBlY3RlZCBwZXJjZW50YWdlIG9mIG1pdG9jaG9uZHJpYWwgcmVhZHMgY2FuIHZhcnkgZGVwZW5kaW5nIG9uIHRoZSBjZWxsIHR5cGUgYW5kIGxpYnJhcnkgcHJlcGFyYXRpb24gbWV0aG9kcy4KU28gaXQgbWlnaHQgYmUgbmljZSB0byBoYXZlIGEgbWV0aG9kIHRvIGRldGVybWluZSB0aGF0IGN1dG9mZiBmcm9tIHRoZSBkYXRhIGl0c2VsZi4KCiMjIyBGaWx0ZXJpbmcgY29tcHJvbWlzZWQgY2VsbHMKCkRldGVybWluaW5nIG1pdG9jaG9uZHJpYWwgY3V0b2ZmcyBpcyBleGFjdGx5IHdoYXQgdGhlIGBtaVFDYCBwYWNrYWdlIGRvZXMgKFtIaXBwZW4gX2V0IGFsLl8gMjAyMV0oaHR0cHM6Ly9kb2kub3JnLzEwLjEzNzEvam91cm5hbC5wY2JpLjEwMDkyOTApKSEKSW4gdHJ1dGgsIGl0IGRvZXMgc29tZXRoaW5nIHBvc3NpYmx5IGV2ZW4gYSBiaXQgYmV0dGVyOiBpdCBmaXRzIGEgbWl4dHVyZSBtb2RlbCB0byB0aGUgZGF0YSB0aGF0IGNvbnNpc3RzIG9mIGRpc3RyaWJ1dGlvbnMgb2YgaGVhbHRoeSBjZWxscyBhbmQgY29tcHJvbWlzZWQgY2VsbHMuClRoZW4gd2UgY2FuIGNhbGN1bGF0ZSB3aGV0aGVyIGVhY2ggY2VsbCBpcyBtb3JlIGxpa2VseSB0byBiZWxvbmcgdG8gdGhlIGhlYWx0aHkgb3IgY29tcHJvbWlzZWQgZGlzdHJpYnV0aW9uLgpXZSBjYW4gdGhlbiBleGNsdWRlIHRoZSBjZWxscyB0aGF0IGFyZSBtb3JlIGxpa2VseSB0byBiZSBjb21wcm9taXNlZC4KClRvIHVzZSBgbWlRQ2AsIHdlIGZpcnN0IGZpdCBhIG1vZGVsIHRvIHRoZSBkYXRhIGluIG91ciBTQ0Ugb2JqZWN0OgoKYGBge3IgbWlRQyBtb2RlbCwgbGl2ZT1UUlVFfQojIGZpdCB0aGUgbWlRQyBtb2RlbAptaXFjX21vZGVsIDwtIG1pUUM6Om1peHR1cmVNb2RlbChmaWx0ZXJlZF9zY2UpCmBgYAoKTm93IHdlIGNhbiBwbG90IHRoZSBtb2RlbCByZXN1bHRzIHVzaW5nIHRoZSBgcGxvdE1vZGVsKClgIGZ1bmN0aW9uIHRvIHNlZSBob3cgaXQgY29ycmVzcG9uZHMgdG8gb3VyIGRhdGEuCldlIHNob3VsZCBleHBlY3QgdG8gc2VlIHR3byBmaXQgbGluZXM6CgotIE9uZSBsaW5lIHdpbGwgY29ycmVzcG9uZCB0aGUgdGhlICJoZWFsdGh5IiBjZWxscyBhbmQgc2hvdWxkIHNob3cgbGl0dGxlIHRvIG5vIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIHRoZSBudW1iZXIgb2YgdW5pcXVlIGdlbmVzIGRldGVjdGVkIGFuZCB0aGUgbWl0b2Nob25kcmlhbCBwZXJjZW50YWdlLgotIEJ5IGNvbnRyYXN0LCB0aGUgbGluZSB0aGF0IGNvcnJlc3BvbmRzIHRvICJjb21wcm9taXNlZCIgY2VsbHMgd2lsbCBzaG93IGEgbmVnYXRpdmUgcmVsYXRpb25zaGlwIGJldHdlZW4gdGhlIG51bWJlciBvZiB1bmlxdWUgZ2VuZXMgZGV0ZWN0ZWQgYW5kIHRoZSBtaXRvY2hvbmRyaWFsIHBlcmNlbnRhZ2UuCgpUaGlzIHBsb3Qgd2lsbCBhbHNvIHNob3csIGZvciBlYWNoIGNlbGwsIHRoZSBwb3N0ZXJpb3IgcHJvYmFiaWxpdHkgdGhhdCB0aGUgY2VsbCBpcyBkZXJpdmVkIGZyb20gdGhlIGNvbXByb21pc2VkIGRpc3RyaWJ1dGlvbjsgYSBoaWdoZXIgc2NvcmUgaW5kaWNhdGVzIHRoYXQgYSBjZWxsIGlzIG1vcmUgbGlrZWx5IHRvIGJlIGNvbXByb21pc2VkLgoKSXQgaXMgYWxzbyBjcml0aWNhbCB0byBub3RlIHRoYXQgdGhpcyBtb2RlbCBjYW4gX2FuZCBkb2VzXyBmYWlsIGF0IHRpbWVzLgpQbG90dGluZyB0aGUgcmVzdWx0cyBhcyB3ZSBoYXZlIGRvbmUgaGVyZSBpcyBub3QgYSBzdGVwIHRvIHNraXAuCioqQWx3YXlzIGxvb2sgYXQgeW91ciBkYXRhISoqCgpgYGB7ciBtaVFDIHBsb3RNb2RlbCwgbGl2ZT1UUlVFfQojIHBsb3QgdGhlIG1pUUMgbW9kZWwKbWlRQzo6cGxvdE1vZGVsKGZpbHRlcmVkX3NjZSwgbWlxY19tb2RlbCkgKwogIHRoZW1lX2J3KCkKYGBgCgpXZSBjYW4gbm93IGZpbHRlciBvdXIgZGF0YSBiYXNlZCBvbiB0aGUgcHJvYmFiaWxpdHkgY29tcHJvbWlzZWQgYXMgY2FsY3VsYXRlZCBmcm9tIHRoZSBtb2RlbC4KQnV0IGJlZm9yZSB3ZSBkbyB0aGF0LCB3ZSBtaWdodCB3YW50IHRvIHF1aWNrbHkgcGxvdCB0byBzZWUgd2hhdCB3b3VsZCBiZSBmaWx0ZXJlZCBvdXQgd2l0aCBhIGdpdmVuIGN1dG9mZiwgdXNpbmcgdGhlIGBwbG90RmlsdGVyaW5nKClgIGZ1bmN0aW9uLgpUaGUgZGVmYXVsdCBpcyB0byBleGNsdWRlIGNlbGxzIHRoYXQgaGF2ZSBhIHBvc3RlcmlvciBwcm9iYWJpbGl0eSBvZiAwLjc1IG9yIGdyZWF0ZXIgb2YgYmVpbmcgY29tcHJvbWlzZWQuCldlIHN0aWNrIHdpdGggdGhhdCBkZWZhdWx0LCBidXQgZm9yIGNsYXJpdHksIHdlIHdpbGwgYWxzbyBpbmNsdWRlIGl0IGluIG91ciBjb2RlIQoKCmBgYHtyIG1pUUMgcGxvdEZpbHRlcmluZ30KIyBsb29rIGF0IG1pUUMgZmlsdGVyaW5nCm1pUUM6OnBsb3RGaWx0ZXJpbmcoCiAgZmlsdGVyZWRfc2NlLAogIG1pcWNfbW9kZWwsCiAgcG9zdGVyaW9yX2N1dG9mZiA9IDAuNzUKKSArCiAgdGhlbWVfYncoKQpgYGAKCkluIHRoaXMgY2FzZSwgdGhlIGxpbmUgYmV0d2VlbiB0aGUgY2VsbHMgdG8gYmUga2VwdCBhbmQgdGhvc2UgdGhhdCB3aWxsIGJlIHJlbW92ZWQgc2VlbXMgdG8gY29ycmVzcG9uZCB0byBhIG1pdG9jaG9uZHJpYWwgcGVyY2VudGFnZSBvZiBhYm91dCAxMi41JSwgYnV0IG5vdGUgdGhhdCB0aGlzIHdpbGwgbm90IGFsd2F5cyBiZSBjb25zdGFudC4KVGhlIGN1dG9mZiBwb2ludCBjYW4gdmFyeSBmb3IgZGlmZmVyZW50IG51bWJlcnMgb2YgdW5pcXVlIGdlbmVzIHdpdGhpbiBhIHNhbXBsZSwgYW5kIGl0IHdpbGwgY2VydGFpbmx5IHZhcnkgYW1vbmcgc2FtcGxlcyEKCkF0IHRoaXMgcG9pbnQsIHdlIGNhbiBwZXJmb3JtIHRoZSBhY3R1YWwgZmlsdGVyaW5nIHVzaW5nIHRoZSBgZmlsdGVyQ2VsbHMoKWAgZnVuY3Rpb24sIGdpdmluZyB1cyBhIGZ1cnRoZXIgZmlsdGVyZWQgU0NFIG9iamVjdC4KCmBgYHtyIG1pUUMgZmlsdGVyY2VsbHMsIGxpdmU9VFJVRX0KIyBwZXJmb3JtIG1pUUMgZmlsdGVyaW5nCnFjZmlsdGVyZWRfc2NlIDwtIG1pUUM6OmZpbHRlckNlbGxzKAogIGZpbHRlcmVkX3NjZSwKICBtb2RlbCA9IG1pcWNfbW9kZWwKKQpgYGAKCiMjIyMgT25lIG1vcmUgZmlsdGVyOiB1bmlxdWUgZ2VuZSBjb3VudAoKV2hpbGUgdGhlIG1pUUMgZmlsdGVyaW5nIGlzIHByZXR0eSBnb29kLCB5b3UgbWF5IGhhdmUgbm90aWNlZCB0aGF0IGl0IHN0aWxsIGxlZnQgc29tZSBjZWxscyB0aGF0IGhhZCB2ZXJ5IGxvdyBudW1iZXJzIG9mIHVuaXF1ZSBnZW5lcy4KV2hpbGUgdGhlc2UgY2VsbHMgbWF5IG5vdCBiZSBjb21wcm9taXNlZCwgdGhlIGluZm9ybWF0aW9uIGZyb20gdGhlbSBpcyBhbHNvIG5vdCBsaWtlbHkgdG8gYmUgdXNlZnVsLCBzbyB3ZSB3aWxsIGZpbHRlciB0aG9zZSBhcyB3ZWxsLgpXZSB3aWxsIG9ubHkga2VlcCBjZWxscyB0aGF0IGhhdmUgYXQgbGVhc3QgMjAwIHVuaXF1ZSBnZW5lcy4KCmBgYHtyIHVuaXF1ZSBjdXRvZmYsIGxpdmU9VFJVRX0KIyBmaWx0ZXIgY2VsbHMgYnkgdW5pcXVlIGdlbmUgY291bnQgKGBkZXRlY3RlZGApCnFjZmlsdGVyZWRfc2NlIDwtIHFjZmlsdGVyZWRfc2NlWywgd2hpY2gocWNmaWx0ZXJlZF9zY2UkZGV0ZWN0ZWQgPj0gMjAwKV0KcWNmaWx0ZXJlZF9zY2UKYGBgCgoKIyMgTm9ybWFsaXphdGlvbgoKTm93IHRoYXQgd2UgaGF2ZSBkb25lIG91ciBmaWx0ZXJpbmcsIHdlIGNhbiBzdGFydCBhbmFseXppbmcgdGhlIGV4cHJlc3Npb24gY291bnRzIGZvciB0aGUgcmVtYWluaW5nIGNlbGxzLgoKVGhlIG5leHQgc3RlcCBhdCB0aGlzIHBvaW50IGlzIHRvIGNvbnZlcnQgdGhlIHJhdyBjb3VudHMgaW50byBhIG1lYXN1cmUgdGhhdCBhY2NvdW50cyBmb3IgZGlmZmVyZW5jZXMgaW4gc2VxdWVuY2luZyBkZXB0aCBiZXR3ZWVuIGNlbGxzLCBhbmQgdG8gY29udmVydCB0aGUgZGlzdHJpYnV0aW9uIG9mIGV4cHJlc3Npb24gdmFsdWVzIGZyb20gdGhlIHNrZXdlZCBkaXN0cmlidXRpb24gd2UgZXhwZWN0IHRvIHNlZSBpbiByYXcgY291bnRzIHRvIG9uZSB0aGF0IGlzIG1vcmUgbm9ybWFsbHkgZGlzdHJpYnV0ZWQuCgpXZSB3aWxsIGRvIHRoaXMgdXNpbmcgZnVuY3Rpb25zIGZyb20gdGhlIGBzY3JhbmAgYW5kIGBzY3V0dGxlYCBwYWNrYWdlcy4KVGhlIHByb2NlZHVyZSB3ZSB3aWxsIHVzZSBoZXJlIGlzIGRlcml2ZWQgZnJvbSB0aGUgW09TQ0EgY2hhcHRlciBvbiBub3JtYWxpemF0aW9uXShodHRwOi8vYmlvY29uZHVjdG9yLm9yZy9ib29rcy8zLjE5L09TQ0EuYmFzaWMvbm9ybWFsaXphdGlvbi5odG1sI25vcm1hbGl6YXRpb24tYnktZGVjb252b2x1dGlvbikuClRoZSBpZGVhIGlzIHRoYXQgdGhlIHZhcnlpbmcgZXhwcmVzc2lvbiBwYXR0ZXJucyB0aGF0IGRpZmZlcmVudCBjZWxsIHR5cGVzIGV4aGliaXQgd2lsbCBhZmZlY3QgdGhlIHNjYWxpbmcgZmFjdG9ycyB0aGF0IHdlIHdvdWxkIGFwcGx5LgpUbyBhY2NvdW50IGZvciB0aGF0IHZhcmlhdGlvbiwgd2UgZmlyc3QgZG8gYSByb3VnaCBjbHVzdGVyaW5nIG9mIGNlbGxzIGJ5IHRoZWlyIGV4cHJlc3Npb24gd2l0aCBgc2NyYW46OnF1aWNrQ2x1c3RlcigpYCwgdGhlbiB1c2UgdGhhdCBjbHVzdGVyaW5nIHRvIGNhbGN1bGF0ZSB0aGUgc2NhbGluZyBmYWN0b3IgZm9yIGVhY2ggY2VsbCB3aXRoaW4gdGhlIGNsdXN0ZXJzIHVzaW5nIGBzY3Jhbjo6Y29tcHV0ZVN1bUZhY3RvcnMoKWAuCkZpbmFsbHksIHdlIGFwcGx5IHRoZSBzY2FsaW5nIGZhY3RvciB0byB0aGUgZXhwcmVzc2lvbiB2YWx1ZXMgZm9yIGVhY2ggY2VsbCBhbmQgY2FsY3VsYXRlIHRoZSBsb2ctc2NhbGVkIGV4cHJlc3Npb24gdmFsdWVzIHVzaW5nIHRoZSBgc2N1dHRsZTo6bG9nTm9ybUNvdW50cygpYCBmdW5jdGlvbi4KCmBgYHtyIG5vcm1hbGl6YXRpb24sIGxpdmU9VFJVRX0KIyBQZXJmb3JtIHJvdWdoIGNsdXN0ZXJpbmcKcWNsdXN0IDwtIHNjcmFuOjpxdWlja0NsdXN0ZXIocWNmaWx0ZXJlZF9zY2UpCgojIHVzZSBjbHVzdGVycyB0byBjb21wdXRlIHNjYWxpbmcgZmFjdG9ycyBhbmQgYWRkIHRvIFNDRSBvYmplY3QKcWNmaWx0ZXJlZF9zY2UgPC0gc2NyYW46OmNvbXB1dGVTdW1GYWN0b3JzKAogIHFjZmlsdGVyZWRfc2NlLAogIGNsdXN0ZXJzID0gcWNsdXN0CikKCiMgcGVyZm9ybSBub3JtYWxpemF0aW9uIHVzaW5nIHNjYWxpbmcgZmFjdG9ycwojIGFuZCBzYXZlIGFzIGEgbmV3IFNDRSBvYmplY3QKbm9ybWFsaXplZF9zY2UgPC0gc2N1dHRsZTo6bG9nTm9ybUNvdW50cyhxY2ZpbHRlcmVkX3NjZSkKYGBgCgpUaGlzIGNyZWF0ZXMgYSBuZXcgImFzc2F5IiBpbiB0aGUgYG5vcm1hbGl6ZWRfc2NlYCBvYmplY3QsIGBsb2djb3VudHNgLCB3aGljaCBjb250YWlucyB0aGUgbm9ybWFsaXplZCBjb3VudCB2YWx1ZXMgZm9yIGVhY2ggY2VsbCBhbmQgZ2VuZS4KKFRoZSBkYXRhIGhlcmUgYXJlIG5vdCBfYWN0dWFsbHlfIHRoZSBsb2cgb2YgdGhlIGNvdW50cywgc2luY2Ugd2UgYWxzbyBhcHBsaWVkIHRoZSBzY2FsaW5nIGZhY3RvcnMsIGJ1dCB0aGF0IG5hbWUgaXMgdXNlZCBmb3IgaGlzdG9yaWNhbCByZWFzb25zLikKCkxldCdzIHRha2UgYSBsb29rOgoKYGBge3Igbm9ybWFsaXplZCBzY2V9Cm5vcm1hbGl6ZWRfc2NlCmBgYAoKIyMgRGltZW5zaW9uIHJlZHVjdGlvbgoKIVtTaW5nbGUtY2VsbCByb2FkbWFwOiBEaW1lbnNpb24gcmVkdWN0aW9uXShkaWFncmFtcy9yb2FkbWFwX3NpbmdsZV9kaW1lbnNpb25fcmVkdWN0aW9uLnBuZykKCk5vdyB0aGF0IHdlIGhhdmUgbm9ybWFsaXplZCBleHByZXNzaW9uIHZhbHVlcywgd2Ugd291bGQgbGlrZSB0byBwcm9kdWNlIHNvbWUgcmVkdWNlZC1kaW1lbnNpb24gcmVwcmVzZW50YXRpb25zIG9mIHRoZSBkYXRhLgpUaGVzZSB3aWxsIGFsbG93IHVzIHRvIHBlcmZvcm0gc29tZSBkb3duc3RyZWFtIGNhbGN1bGF0aW9ucyBtb3JlIHF1aWNrbHksIHJlZHVjZSBzb21lIG9mIHRoZSBub2lzZSBpbiB0aGUgZGF0YSwgYW5kIGFsbG93IHVzIHRvIHZpc3VhbGl6ZSBvdmVyYWxsIHJlbGF0aW9uc2hpcHMgYW1vbmcgY2VsbHMgbW9yZSBlYXNpbHkgKHRob3VnaCB3aXRoIG1hbnkgY2F2ZWF0cyEpLgoKIyMjIFNlbGVjdGluZyBoaWdobHkgdmFyaWFibGUgZ2VuZXMKCldoaWxlIHdlIGNvdWxkIGNhbGN1bGF0ZSB0aGUgcmVkdWNlZCBkaW1lbnNpb25zIHVzaW5nIGFsbCBvZiB0aGUgZ2VuZXMgdGhhdCB3ZSBoYXZlIGFzc2F5ZWQsIGluIHByYWN0aWNlIG1vc3Qgb2YgdGhlIGdlbmVzIHdpbGwgaGF2ZSB2ZXJ5IGxpdHRsZSB2YXJpYXRpb24gaW4gZXhwcmVzc2lvbiwgc28gZG9pbmcgc28gd2lsbCBub3QgcHJvdmlkZSBtdWNoIGFkZGl0aW9uYWwgc2lnbmFsLgpSZWR1Y2luZyB0aGUgbnVtYmVyIG9mIGdlbmVzIHdlIGluY2x1ZGUgd2lsbCBhbHNvIHNwZWVkIHVwIHNvbWUgb2YgdGhlIGNhbGN1bGF0aW9ucy4KClRvIGlkZW50aWZ5IHRoZSBtb3N0IHZhcmlhYmxlIGdlbmVzLCB3ZSB3aWxsIHVzZSBmdW5jdGlvbnMgZnJvbSB0aGUgYHNjcmFuYCBwYWNrYWdlLgpUaGUgZmlyc3QgZnVuY3Rpb24sIGBtb2RlbEdlbmVWYXIoKWAsIGF0dGVtcHRzIHRvIGRpdmlkZSB0aGUgdmFyaWF0aW9uIG9ic2VydmVkIGZvciBlYWNoIGdlbmUgaW50byBhIGJpb2xvZ2ljYWwgYW5kIHRlY2huaWNhbCBjb21wb25lbnQsIHdpdGggdGhlIGludHVpdGlvbiB0aGF0IGdlbmVzIHdpdGggbG93ZXIgbWVhbiBleHByZXNzaW9uIHRlbmQgdG8gaGF2ZSBsb3dlciB2YXJpYW5jZSBmb3IgcHVyZWx5IHRlY2huaWNhbCByZWFzb25zLgpXZSB0aGVuIHByb3ZpZGUgdGhlIGBtb2RlbEdlbmVWYXIoKWAgb3V0cHV0IHRvIHRoZSBgZ2V0VG9wSFZHcygpYCBmdW5jdGlvbiB0byBpZGVudGlmeSB0aGUgZ2VuZXMgd2l0aCB0aGUgaGlnaGVzdCBfYmlvbG9naWNhbF8gdmFyaWF0aW9uLCB3aGljaCBpcyB3aGF0IHdlIGFyZSBtb3N0IGludGVyZXN0ZWQgaW4uCgpgYGB7ciBzZWxlY3QgSFZHc30KIyBpZGVudGlmeSAyMDAwIGdlbmVzCm51bV9nZW5lcyA8LSAyMDAwCgojIG1vZGVsIHZhcmlhbmNlLCBwYXJ0aXRpb25pbmcgaW50byBiaW9sb2dpY2FsIGFuZCB0ZWNobmljYWwgdmFyaWF0aW9uCmdlbmVfdmFyaWFuY2UgPC0gc2NyYW46Om1vZGVsR2VuZVZhcihub3JtYWxpemVkX3NjZSkKCiMgZ2V0IHRoZSBtb3N0IHZhcmlhYmxlIGdlbmVzCmh2X2dlbmVzIDwtIHNjcmFuOjpnZXRUb3BIVkdzKAogIGdlbmVfdmFyaWFuY2UsCiAgbiA9IG51bV9nZW5lcwopCmBgYAoKVGhlIHJlc3VsdCBpcyBhIHZlY3RvciBvZiBnZW5lIGlkcyAob3JkZXJlZCBmcm9tIG1vc3QgdG8gbGVhc3QgdmFyaWFibGUpOgoKYGBge3IgdmlldyBIVkdzfQpoZWFkKGh2X2dlbmVzKQpgYGAKCiMjIyBQcmluY2lwYWwgY29tcG9uZW50cyBhbmFseXNpcwoKTm93IHRoYXQgd2UgaGF2ZSBzZWxlY3RlZCB0aGUgZ2VuZXMgd2Ugd291bGQgbGlrZSB0byB1c2UgZm9yIHRoZSByZWR1Y2VkLWRpbWVuc2lvbiByZXByZXNlbnRhdGlvbnMgb2YgdGhlIGV4cHJlc3Npb24gZGF0YSwgd2UgY2FuIHN0YXJ0IHRvIGNhbGN1bGF0ZSB0aGVtLgpGaXJzdCB3ZSB3aWxsIHVzZSB0aGUgYHNjYXRlcjo6cnVuUENBKClgIGZ1bmN0aW9uIHRvIGNhbGN1bGF0ZSB0aGUgcHJpbmNpcGFsIGNvbXBvbmVudHMgZnJvbSB0aGUgZXhwcmVzc2lvbiBtYXRyaXguClRoaXMgcmVwcmVzZW50YXRpb24gaXMgZmFzdCBhbmQgZmFpcmx5IHJvYnVzdCwgYnV0IHRoZSByZXN1bHQgaXMgc3RpbGwgcXVpdGUgbXVsdGlkaW1lbnNpb25hbC4KV2Ugd2FudCBrZWVwIGEgZmFpciBudW1iZXIgb2YgY29tcG9uZW50cyAoZGltZW5zaW9ucykgaW4gb3JkZXIgdG8gYWNjdXJhdGVseSByZXByZXNlbnQgdGhlIHZhcmlhdGlvbiBpbiB0aGUgZGF0YSwgYnV0IGRvaW5nIHNvIG1lYW5zIHRoYXQgcGxvdHRpbmcgb25seSBhIGZldyBvZiB0aGVzZSBkaW1lbnNpb25zIChpbiAyRCkgaXMgbm90IGxpa2VseSB0byBwcm92aWRlIGEgZnVsbCB2aWV3IG9mIHRoZSBkYXRhLgoKVGhlIGRlZmF1bHQgbnVtYmVyIG9mIGNvbXBvbmVudHMgaXMgNTAsIHdoaWNoIHdlIHdpbGwgc3RpY2sgd2l0aCwgYnV0IGxldCdzIGVudGVyIGl0IG1hbnVhbGx5IGp1c3QgZm9yIHRoZSByZWNvcmQuCgpgYGB7ciBydW5QQ0EsIGxpdmU9VFJVRX0KIyBjYWxjdWxhdGUgYW5kIHNhdmUgUENBIHJlc3VsdHMKbm9ybWFsaXplZF9zY2UgPC0gc2NhdGVyOjpydW5QQ0EoCiAgbm9ybWFsaXplZF9zY2UsCiAgbmNvbXBvbmVudHMgPSA1MCwgIyBob3cgbWFueSBjb21wb25lbnRzIHRvIGtlZXAKICBzdWJzZXRfcm93ID0gaHZfZ2VuZXMgIyB1c2Ugb25seSB0aGUgdmFyaWFibGUgZ2VuZXMgd2UgY2hvc2UKKQpgYGAKClRoZXNlIHJlZHVjZWQtZGltZW5zaW9uIHJlc3VsdHMgd2lsbCBiZSBzdG9yZWQgaW4gYSBgcmVkdWNlZERpbWAgc2xvdCBpbiB0aGUgU0NFIG9iamVjdC4KV2UgY2FuIHNlZSB0aGUgbmFtZXMgb2YgdGhlIGByZWR1Y2VkRGltYHMgdGhhdCB3ZSBoYXZlIGJ5IGxvb2tpbmcgYXQgdGhlIG9iamVjdCBzdW1tYXJ5OgoKYGBge3IgdmlldyByZWR1Y2VkIGRpbWVuc2lvbnN9Cm5vcm1hbGl6ZWRfc2NlCmBgYAoKSWYgd2Ugd2FudCB0byBleHRyYWN0IHRoZSBQQ0EgcmVzdWx0cywgd2UgY2FuIGRvIHRoYXQgd2l0aCB0aGUgYHJlZHVjZWREaW0oKWAgZnVuY3Rpb246Ck5vdGUgdGhhdCBmb3IgdGhlc2UgcmVkdWNlZC1kaW1lbnNpb25hbGl0eSBtYXRyaWNlcywgdGhlIHJvd3MgYXJlIHRoZSBjZWxscyBhbmQgdGhlIGNvbHVtbnMgYXJlIHRoZSBQQyBkaW1lbnNpb25zLgoKYGBge3IgZ2V0UmVkdWNlZERpbX0KIyBleHRyYWN0IHRoZSBQQ0EgbWF0cml4CnBjYV9tYXRyaXggPC0gcmVkdWNlZERpbShub3JtYWxpemVkX3NjZSwgIlBDQSIpCgojIGxvb2sgYXQgdGhlIHNoYXBlIG9mIHRoZSBtYXRyaXgKZGltKHBjYV9tYXRyaXgpCmBgYAoKIyMjIFVNQVAKCkZpbmFsbHksIHdlIHdpbGwgY2FsY3VsYXRlIGEgVU1BUCAoVW5pZm9ybSBNYW5pZm9sZCBBcHByb3hpbWF0aW9uIGFuZCBQcm9qZWN0aW9uKSByZXByZXNlbnRhdGlvbiBvZiBvdXIgZGF0YS4KVGhpcyBpcyBhIG1hY2hpbmUtbGVhcm5pbmctYmFzZWQgbWV0aG9kIHRoYXQgaXMgdXNlZnVsIGZvciBwZXJmb3JtaW5nIGRpbWVuc2lvbmFsaXR5IHJlZHVjdGlvbiBzdWl0YWJsZSBmb3IgdmlzdWFsaXphdGlvbi4KSXQncyBnb2FsIGlzIHRvIHByb3ZpZGUgYSByZXByZXNlbnRhdGlvbiBvZiB0aGUgZGF0YSBpbiB0d28gZGltZW5zaW9ucyAodHlwaWNhbGx5LCBtb3JlIGFyZSBwb3NzaWJsZSkgdGhhdCBwcmVzZXJ2ZXMgYXMgbXVjaCBvZiB0aGUgZGlzdGFuY2UgcmVsYXRpb25zaGlwcyBhbW9uZyBjZWxscyBhcyBwb3NzaWJsZS4KV2hpbGUgdGhpcyBkb2VzIG1ha2UgZm9yIHZpc3VhbGx5IGFwcGVhbGluZyBhbmQgdXNlZnVsIHBsb3RzLCBpdCBpcyBpbXBvcnRhbnQgbm90IHRvIG92ZXJpbnRlcnByZXQgdGhlIHJlc3VsdHMhCkluIHBhcnRpY3VsYXIsIHdoaWxlIHlvdSB3aWxsIG9mdGVuIHNlZSBzb21lIGFwcGFyZW50IGNsdXN0ZXJpbmcgb2YgY2VsbHMgaW4gdGhlIHJlc3VsdGluZyBvdXRwdXQsIHRob3NlIGNsdXN0ZXJzIG1heSBub3QgYmUgcGFydGljdWxhcmx5IHZhbGlkLCBhbmQgdGhlIHNwYWNpbmcgd2l0aGluIG9yIGJldHdlZW4gY2x1c3RlcnMgbWF5IG5vdCByZWZsZWN0IHRydWUgZGlzdGFuY2VzLgoKSW4gbWFueSB3YXlzIHRoaXMgaXMgYW5hbG9nb3VzIHRvIHRoZSBwcm9ibGVtIG9mIHByb2plY3RpbmcgYSBtYXAgb2YgdGhlIGVhcnRoIG9udG8gYSBmbGF0IHN1cmZhY2U7IGFueSBjaG9pY2Ugd2lsbCByZXN1bHQgaW4gc29tZSBkaXN0b3J0aW9ucy4KSG93ZXZlciwgd2l0aCBVTUFQLCB3ZSByYXJlbHkga25vdyBleGFjdGx5IHdoYXQgY2hvaWNlcyB3ZXJlIG1hZGUgYW5kIHdoYXQgZGlzdG9ydGlvbnMgbWlnaHQgaGF2ZSByZXN1bHRlZC4KVGhlIFVNQVAgY29vcmRpbmF0ZXMgdGhlbXNlbHZlcyBzaG91bGQgbmV2ZXIgYmUgdXNlZCBmb3IgZG93bnN0cmVhbSBhbmFseXNpcy4KClNpbmNlIHRoZSBVTUFQIHByb2NlZHVyZSB3b3VsZCBiZSBzbG93IHRvIGNhbGN1bGF0ZSB3aXRoIHRoZSBmdWxsIGRhdGEsIHNvIHRoZSBgcnVuVU1BUCgpYCBmdW5jdGlvbiBmaXJzdCBjYWxjdWxhdGVzIGEgUENBIG1hdHJpeCBhbmQgdGhlbiB1c2VzIF90aGF0XyB0byBjYWxjdWxhdGUgdGhlIFVNQVAuClNpbmNlIHdlIGFscmVhZHkgaGF2ZSBhIFBDQSBtYXRyaXgsIHdlIHdpbGwgdGVsbCB0aGUgZnVuY3Rpb24gdXNlIHRoYXQgaW5zdGVhZCBvZiByZWNhbGN1bGF0aW5nIGl0LgoKYGBge3IgcnVuVU1BUCwgbGl2ZT1UUlVFfQpub3JtYWxpemVkX3NjZSA8LSBzY2F0ZXI6OnJ1blVNQVAoCiAgbm9ybWFsaXplZF9zY2UsCiAgZGltcmVkID0gIlBDQSIKKQpgYGAKCkFzIGJlZm9yZSwgd2UgY291bGQgZXh0cmFjdCB0aGUgVU1BUCBtYXRyaXggZnJvbSBvdXIgU0NFIG9iamVjdCB3aXRoIHRoZSBgcmVkdWNlZERpbSgpYCBmdW5jdGlvbi4KV2UgY2FuIGFsc28gdmlzdWFsaXplIHRoZSBVTUFQIHJlc3VsdHMgdXNpbmcgdGhlIGBwbG90UmVkdWNlZERpbSgpYCBmdW5jdGlvbi4KCmBgYHtyIHBsb3RSZWR1Y2VkRGltLCBsaXZlPVRSVUV9CiMgcGxvdCB0aGUgVU1BUApzY2F0ZXI6OnBsb3RSZWR1Y2VkRGltKAogIG5vcm1hbGl6ZWRfc2NlLAogICJVTUFQIiwKICAjIGNvbG9yIGJ5IHRoZSBtb3N0IHZhcmlhYmxlIGdlbmUKICBjb2xvcl9ieSA9IGh2X2dlbmVzWzFdCikKYGBgCgoKIyMgVW5zdXBlcnZpc2VkIGNsdXN0ZXJpbmcKCkFzIGEgZmluYWwgYW5hbHlzaXMgc3RlcCBhdCB0aGlzIHN0YWdlLCB3ZSB3aWxsIHJldHVybiB0byB0aGUgUENBIHJlc3VsdHMgdG8gcGVyZm9ybSB1bnN1cGVydmlzZWQgY2x1c3RlcmluZy4KSGVyZSB3ZSB3aWxsIHVzZSBhIGdyYXBoLWJhc2VkIGNsdXN0ZXJpbmcgbWV0aG9kLCB3aGljaCBzdGFydHMgYnkgaWRlbnRpZnlpbmcgY2VsbHMgdGhhdCBhcmUgY2xvc2UgdG9nZXRoZXIgaW4gdGhlIG11bHRpZGltZW5zaW9uYWwgc3BhY2UuCkl0IHRoZW4gaWRlbnRpZmllcyAiY29tbXVuaXRpZXMiIG9mIGhpZ2hseSBjb25uZWN0ZWQgY2VsbHMsIGFuZCBicmVha3MgdGhlbSBhcGFydCBieSByZWdpb25zIG9mIGxvd2VyIGNvbm5lY3Rpb24uCgpUaGVyZSBhcmUgYSBudW1iZXIgb2YgYWxnb3JpdGhtcyB0aGF0IGNhbiBwZXJmb3JtIHRoaXMgY2x1c3RlcmluZywgZWFjaCB3aXRoIHBhcmFtZXRlcnMgdGhhdCBjYW4gYWZmZWN0IGhvdyBtYW55IGNsdXN0ZXJzIGFyZSBpZGVudGlmaWVkIGFuZCB3aGljaCBjZWxscyBiZWxvbmcgdG8gZWFjaCBjbHVzdGVyLgpJdCBpcyBhbHNvIHdvcnRoIG5vdGluZyB0aGF0IHRoZXNlIGNsdXN0ZXJzIG1heSBvciBtYXkgbm90IGNvcnJlc3BvbmQgdG8gImNlbGwgdHlwZXMiIGJ5IHdoYXRldmVyIGRlZmluaXRpb24geW91IG1pZ2h0IHByZWZlciB0byB1c2UuCkludGVycHJldGF0aW9uIG9mIHRoZXNlIGNsdXN0ZXJzLCBvciBvdGhlciBtZWFzdXJlcyBvZiBjZWxsIHR5cGUsIGFyZSBzb21ldGhpbmcgdGhhdCB3aWxsIHJlcXVpcmUgbW9yZSBjYXJlZnVsIGFuZCBsaWtlbHkgbW9yZSBjdXN0b21pemVkIGFuYWx5c2lzLgoKV2Ugd2lsbCBwZXJmb3JtIG91ciBjbHVzdGVyaW5nIHVzaW5nIHRoZSBmdW5jdGlvbiBgc2NyYW46OmNsdXN0ZXJDZWxsc2AsIHdoaWNoIGNhbiBwZXJmb3JtIG1hbnkgZGlmZmVyZW50IHR5cGVzIG9mIGNsdXN0ZXJpbmcgdXNpbmcgdGhlIEJpb2NvbmR1Y3RvciBgYmx1c3RlcmAgcGFja2FnZSB1bmRlciB0aGUgaG9vZC4KQXMgbWVudGlvbmVkIGVhcmxpZXIsIHdlIGFyZSB1c2luZyAiZ3JhcGgiIGNsdXN0ZXJpbmcsIHdoaWNoIHdlIGRlZmluZSB1c2luZyB0aGUgYGJsdXN0ZXI6Ok5OR3JhcGhQYXJhbSgpYCBmdW5jdGlvbi4KV2l0aGluIHRoYXQgYXJlIGEgbnVtYmVyIG9mIGZ1cnRoZXIgb3B0aW9ucywgc3VjaCBhcyB0aGUgd2VpZ2h0aW5nIHVzZWQgZm9yIGJ1aWxkaW5nIHRoZSBuZXR3b3JrIGdyYXBoIGFuZCB0aGUgYWxnb3JpdGhtIHVzZWQgZm9yIGRpdmlkaW5nIHRoZSBncmFwaCBpbnRvIGNsdXN0ZXJzLgoKTW9kaWZ5aW5nIHRoZXNlIHBhcmFtZXRlcnMgY2FuIHJlc3VsdCBpbiBxdWl0ZSBkaWZmZXJlbnQgY2x1c3RlciBhc3NpZ25tZW50cyEKRm9yIHRoZSBjbHVzdGVyaW5nIGJlbG93IHdlIHdpbGwgdXNlIEphY2NhcmQgd2VpZ2h0aW5nIGFuZCBMb3V2YWluIGNsdXN0ZXJpbmcsIHdoaWNoIGNvcnJlc3BvbmQgbW9yZSBjbG9zZWx5IHRvIHRoZSBkZWZhdWx0IG1ldGhvZHMgdXNlZCBieSBgU2V1cmF0YCB0aGFuIHRoZSBkZWZhdWx0IHBhcmFtZXRlcnMuCkl0IGlzIGFsc28gd29ydGggbm90aW5nIHRoYXQgdGhlIHRoZSBjbHVzdGVyIGFzc2lnbm1lbnRzIGFyZSBzb21ld2hhdCBzdG9jaGFzdGljLgpJbiBwYXJ0aWN1bGFyLCB0aGUgbmFtZXMvbnVtYmVycyBvZiB0aGUgY2x1c3RlcnMgY2FuIGJlIHF1aXRlIGluY29uc2lzdGVudCBiZXR3ZWVuIHJ1bnMhCgoKYGBge3IgY2x1c3RlcmluZywgbGl2ZT1UUlVFfQojIHBlcmZvcm0gZ3JhcGgtYmFzZWQgY2x1c3RlcmluZwpubl9jbHVzdGVycyA8LSBzY3Jhbjo6Y2x1c3RlckNlbGxzKAogIG5vcm1hbGl6ZWRfc2NlLCAjIFNDRSB0byBwZXJmb3JtIGNsdXN0ZXJpbmcgb24KICB1c2UuZGltcmVkID0gIlBDQSIsICMgcGVyZm9ybSBjbHVzdGVyaW5nIG9uIHRoZSBQQ0EgbWF0cml4CiAgQkxVU1BBUkFNID0gYmx1c3Rlcjo6Tk5HcmFwaFBhcmFtKCAjIGNsdXN0ZXJpbmcgcGFyYW1ldGVycyB0byBwYXNzIHRvIGJsdXN0ZXIKICAgICMgbnVtYmVyIG9mIG5laWdoYm9ycyB0byB1c2UgaW4gbmV0d29yayBncmFwaAogICAgayA9IDIwLAogICAgIyB3ZWlnaHRpbmcgc2NoZW1lIGZvciBidWlsZGluZyB0aGUgbmV0d29yayBncmFwaAogICAgIyBkZWZhdWx0IGlzICJyYW5rIgogICAgdHlwZSA9ICJqYWNjYXJkIiwKICAgICMgY2x1c3RlciBkZXRlY3Rpb24gYWxnb3JpdGhtCiAgICAjIGRlZmF1bHQgaXMgIndhbGt0cmFwIgogICAgY2x1c3Rlci5mdW4gPSAibG91dmFpbiIKICApCikKYGBgCgpXZSBjYW4gc2F2ZSB0aGUgY2x1c3RlciBhc3NpZ25tZW50cyBiYWNrIGludG8gdGhlIGBjb2xEYXRhYCBvZiB0aGUgU0NFIG9iamVjdCB3aXRoIGEgbGl0dGxlIHNob3J0Y3V0OiB0aGUgYCRgIGZvbGxvd2VkIGJ5IHRoZSBuYW1lIG9mIHRoZSBuZXcgY29sdW1uIHdlIHdhbnQgdG8gYWRkLgoKYGBge3IgYWRkIGNsdXN0ZXJzIHRvIFNDRSwgbGl2ZT1UUlVFfQojIHNhdmUgY2x1c3RlcnMgdG8gU0NFIGNvbERhdGEKbm9ybWFsaXplZF9zY2Ukbm5fY2x1c3RlciA8LSBubl9jbHVzdGVycwpgYGAKCk5vdyB3ZSBjYW4gcGxvdCB0aGUgVU1BUCBhZ2FpbiwgdGhpcyB0aW1lIGNvbG9yZWQgYnkgdGhlIGNsdXN0ZXIgYXNzaWdubWVudHMgdGhhdCB3ZSBqdXN0IGNyZWF0ZWQuCkhlcmUgcmF0aGVyIHRoYW4gdGhlIGdlbmVyYWwgYHBsb3RSZWR1Y2VkRGltKClgIGZ1bmN0aW9uLCB3ZSB3aWxsIHVzZSBgcGxvdFVNQVAoKWAsIHdoaWNoIGlzIGV4YWN0bHkgdGhlIHNhbWUsIGV4Y2VwdCBpdCBhbHdheXMgcGxvdHMgZnJvbSB0aGUgYHJlZHVjZWREaW1gIHNsb3QgbmFtZWQgYFVNQVBgLCBzbyB3ZSBjYW4gc2tpcCB0aGF0IGFyZ3VtZW50LgoKYGBge3IgcGxvdCBjbHVzdGVycywgbGl2ZT1UUlVFfQojIHBsb3QgVU1BUCB3aXRoIGFzc2lnbmVkIGNsdXN0ZXJzCnNjYXRlcjo6cGxvdFVNQVAoCiAgbm9ybWFsaXplZF9zY2UsCiAgY29sb3JfYnkgPSAibm5fY2x1c3RlciIKKQpgYGAKCldoYXQgZG8geW91IHNlZSBpbiB0aGVzZSByZXN1bHRzPwoKV2hhdCB3b3VsZCB5b3Ugd2FudCB0byBkbyBuZXh0PwoKIyMgU2F2ZSBTQ0Ugb2JqZWN0IGZvciBsYXRlcgoKV2Ugd2lsbCBub3cgc2F2ZSBvdXIgZmlsdGVyZWQgYW5kIG5vcm1hbGl6ZWQgb2JqZWN0LCBpbmNsdWRpbmcgdGhlIGRpbWVuc2lvbiByZWR1Y3Rpb24gYW5kIGNsdXN0ZXJpbmcgcmVzdWx0cyB0byBhbiBgUkRTYCBmaWxlLCB1c2luZyB0aGUgZmlsZSBwYXRoIHRoYXQgd2UgZGVmaW5lZCBhdCB0aGUgc3RhcnQgb2YgdGhlIG5vdGVib29rLgpJZiB3ZSB3ZXJlIHRvIHdhbnQgdG8gcmV0dXJuIHRvIHRoaXMgZGF0YSwgd2UgY291bGQgbG9hZCB0aGlzIGZpbGUgZGlyZWN0bHkgaW50byBhIG5ldyBSIHNlc3Npb24gYW5kIG5vdCBoYXZlIHRvIHJlcGVhdCB0aGUgcHJvY2Vzc2luZyB0aGF0IHdlIGhhdmUgZG9uZSB1cCB0byB0aGlzIHBvaW50LgoKVGhlIGRhdGEgaW4gdGhlc2Ugb2JqZWN0cyB0ZW5kcyB0byBiZSBxdWl0ZSBsYXJnZSwgYnV0IHZlcnkgY29tcHJlc3NpYmxlLgpUbyBzYXZlIHNwYWNlIG9uIGRpc2sgKGF0IHRoZSBleHBlbnNlIG9mIHRpbWUpLCB3ZSB3aWxsIG1ha2Ugc3VyZSB0aGF0IHRoZSBkYXRhIGlzIGNvbXByZXNzZWQgaW50ZXJuYWxseSBiZWZvcmUgd3JpdGluZyBpdCBvdXQgdG8gYSBmaWxlLgpOb3RlIHRoYXQgdGhlIGZpbGUgd2Ugd3JpdGUgaXMgc3RpbGwgZ29pbmcgdG8gYmUgYW4gYC5yZHNgIGZpbGUgd2l0aCBubyBhZGRpdGlvbmFsIGV4dGVuc2lvbi4KKEZ1cnRoZXIgbm90ZTogVGhlIGJhc2UgUiBmdW5jdGlvbiBgc2F2ZVJEUygpYCB1c2VzIGNvbXByZXNzaW9uIGJ5IGRlZmF1bHQsIGJ1dCB0aGUgYHRpZHl2ZXJzZWAgZnVuY3Rpb24gYHJlYWRyOjp3cml0ZV9yZHMoKWAgZG9lcyBub3QuKQoKYGBge3Igc2F2ZSBTQ0UsIGxpdmU9VFJVRX0KIyB3cml0ZSBSRFMgZmlsZSB3aXRoIGNvbXByZXNzaW9uCnJlYWRyOjp3cml0ZV9yZHMobm9ybWFsaXplZF9zY2UsIGZpbGUgPSBvdXRwdXRfc2NlX2ZpbGUsIGNvbXByZXNzID0gImd6IikKYGBgCgoKIyMgUHJpbnQgc2Vzc2lvbiBpbmZvCgpBcyBpcyBvdXIgaGFiaXQgYXQgdGhlIERhdGEgTGFiLCB3ZSB3aWxsIHNhdmUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGNvbXB1dGluZyBlbnZpcm9ubWVudCwgdGhlIHBhY2thZ2VzIHdlIGhhdmUgdXNlZCBpbiB0aGlzIG5vdGVib29rLCBhbmQgdGhlaXIgdmVyc2lvbnMgdXNpbmcgdGhlIGBzZXNzaW9uSW5mbygpYCBjb21tYW5kLgoKYGBge3Igc2Vzc2lvbiBpbmZvfQpzZXNzaW9uSW5mbygpCmBgYAoK
diff --git a/scRNA-seq-advanced/02-dataset_integration-live.Rmd b/scRNA-seq-advanced/02-dataset_integration-live.Rmd index ce4cbb89..64a4cd7e 100644 --- a/scRNA-seq-advanced/02-dataset_integration-live.Rmd +++ b/scRNA-seq-advanced/02-dataset_integration-live.Rmd @@ -55,7 +55,7 @@ set.seed(12345) ``` -### Directories and files +### Define directories and files We have already prepared count data for the four samples we'll be integrating (i.e., filtered cells, normalized counts, and calculated PCA & UMAP). @@ -66,17 +66,22 @@ These SCE objects, stored as RDS files, are available in the `data/rms/processed - `SCPCL000481.rds` (Patient B) - `SCPCL000482.rds` (Patient B) +Both Patient A (18 year old male) and Patient B (4 year old female) had recurrent embryonal rhabdomyosarcoma when samples were taken. + To begin, let's set up our directories and files: -```{r directories, live = TRUE} +```{r directories} # Define directory where processed SCE objects to be integrated are stored +input_dir <- file.path("data", "rms", "processed") # Define directory to save integrated SCE object to +output_dir <- file.path("data", "rms", "integrated") # Create output directory if it doesn't exist +fs::dir_create(output_dir) # Define output file name for the integrated object - +integrated_sce_file <- file.path(output_dir, "rms_integrated_subset.rds") ``` @@ -126,29 +131,6 @@ length(histologies) purrr::map(histologies, length) ``` -One other new coding strategy we'll learn in this notebook is using the [`glue`](https://glue.tidyverse.org/) package to combine strings. -This package offers a convenient function `glue::glue()` that can be used instead of the base R `paste()` function. - -```{r paste} -# Define a variable for example: -org_name <- "Data Lab" - -# We can use paste to combine strings and variables: -paste("Welcome to the", org_name, "workshop on Advanced scRNA-seq!") -``` - -We can use `glue::glue()` to accomplish the same goal with some different syntax: - -```{r glue} -# glue::glue takes a single string argument (only one set of quotes!), and -# variables can easily be included inside {curly braces} -glue::glue("Welcome to the {org_name} workshop on Advanced scRNA-seq!") -``` - -(Note that even though the `glue::glue()` output isn't in quotes, it still behaves like a string!) - - -Alright, time for the good stuff! Let's use `purrr::map()` to read in our SCE objects so that they are immediately stored together in a list. @@ -210,7 +192,7 @@ That said, the integration methods we will be applying _do not actually use_ any If we have annotations, they are a helpful "bonus" for assessing the integration's performance, but they are not part of the integration itself. -## Prepare the SCE list for integration +## Merge the SCE list into one object ![Single-cell roadmap: Merge](diagrams/roadmap_multi_merge.png) @@ -220,115 +202,136 @@ A word of caution before we begin: **This merged SCE object is NOT an integrated Merging SCEs does not perform any batch correction, but just reorganizes the data to allow us to proceed to integration next. To merge SCE objects, we do need to do some wrangling and bookkeeping to ensure compatibility and that we don't lose important information. -Overall we'll want to take care of these items: +Overall, we'll want to make sure that: -1. We should be able to trace sample-specific information back to the originating sample, including... - - Cell-level information: Which sample is each cell from? - - Library-specific feature statistics, e.g., gene-level statistics for a given library found in `rowData`. - Which sample is a given feature statistic from? -2. SCE objects should contain the same genes: Each SCE object should have the same row names. -3. SCE cell metadata columns should match: The `colData` for each SCE object should have the same column names. +1. All objects have compatible dimensions. +This means that all objects should... + + Have the same genes (aka row names), in the same order + + Have the same `colData` slot columns, in the same order + + Have the same assays +2. After merging, we'll still be able to identify which sample different pieces of information came from +As we saw in the slides, this means we'll have to... + + Attach sample names to the barcodes (aka column names) + This also ensures that column names are unique; while a single sample (library) is guaranteed to have unique barcodes, technically they can be repeated across samples! + + Attach sample names to `rowData` slot column names and `metadata` field names (if you care to keep this information around - today, we will!) + + Add a new column indicating the sample to the `colData` slot +We'll approach this merge in two parts: -We'll begin by taking some time to thoroughly explore our SCE objects and figure out what wrangling steps we need to take for these specific data. -Don't skip this exploration! -Bear in mind that the exact wrangling shown here will not be the same for other SCE objects you work with, but the same general principles apply. ++ First, we'll take some time to thoroughly explore the our SCE objects to determine what wrangling we need to do to make all the objects _compatible_ for merging ++ Then, we'll write (ok, we've written it for you) a _custom function_ to format each SCE object for merging, including: + + Making any changes to ensure objects are compatible + + Adding in identifying information so we know which sample the cells and other metadata came from + + Removing the existing reduced dimension matrices (PCA and UMAP). + This is because we'll want to recalculate these matrices on the merged objects, taking batch into account +When merging objects on your own, don't skip these data exploration steps! +The steps we take to prepare our SCEs will probably be different from the steps you need to take with other SCEs, and only by carefully exploring the objects can you figure out what steps you'll need to take to meet all of our conditions. -#### Preserving sample information at the cell level -How will we be able to tell which sample a given cell came from? +### Prepare to merge SCEs -The best way to do this is simply to add a `colData` column with the sample information, so that we can know which sample each row came from. +#### Create unique cell identifiers -In addition, we want to pay some attention to the SCE object's column names (the cell ids), which must remain unique after merging since duplicate ids will cause an R error. -In this case, the SCE column names are barcodes (which is usually but not always the case in SCE objects), which are only guaranteed to be unique _within_ a sample but may be repeated across samples. -So, after merging, it's technically possible that multiple cells will have the same barcode. -This would be a problem for two reasons: -First, the cell id would not be able to point us back to cell's originating sample. -Second, it would literally cause an error in R, which does not allow duplicate column names. +As part of the custom function we'll write, we'll include a step to create unique cell identifiers by attaching sample names to the SCE column names (cell barcodes). +For example, we would update the column name for a cell from `Sample1` with the barcode `ACGT` to `Sample1-ACGT`. +When merging, there can't be any duplicate column names (barcodes) across _all_ the objects or R will throw an error. +While you're guaranteed to have unique barcodes in a given SCE object, there is _no guarantee_ that they are unique across multiple samples - it is absolutely possible to have cells from two different samples share the same barcode (and we've seen it happen!). -One way to ensure that cell ids remain unique even after merging is to actually modify them by _prepending_ the relevant sample name. -For example, consider these barcodes for the `SCPCL000479` sample: +Adding the sample id to the column names (barcodes) is therefore a crucial step in our merging bookkeeping. -```{r barcodes} -# Look at the column names for the `SCPCL000479` sample, for example -colnames(sce_list$SCPCL000479) |> - # Only print out the first 6 for convenience - head() -``` -These ids will be updated to `SCPCL000479-GGGACCTCAAGCGGAT`, `SCPCL000479-CACAGATAGTGAGTGC`, and so on, thereby ensuring fully unique ids for all cells across all samples. +#### Explore the SCE objects -#### Preserving sample information at the gene level +##### Check the genes -The `rowData` table in SCE objects will often contain both "general" and "library-specific" information, for example: +First, we'll compare the object's genes (aka, their row names). +We can use some `purrr` magic to help us find the set of shared genes among all objects: -```{r rowdata} -rowData(sce_list$SCPCL000479) |> - head() +```{r shared genes} +# Define vector of shared genes +shared_genes <- sce_list |> + # get rownames (genes) for each SCE in sce_list + purrr::map(rownames) |> + # reduce to the _intersection_ among lists + purrr::reduce(intersect) + +# How many shared genes are there? +length(shared_genes) ``` -Here, the rownames are Ensembl gene ids, and columns are `gene_symbol`, `mean`, and `detected`. -The `gene_symbol` column is general information about all genes, not specific to any library or experiment, but `mean` and `detected` are library-specific gene statistics. -So, `gene_symbol` does not need to be traced back to its originating sample, but `mean` and `detected` do. -To this end, we can take a similar approach to what we'll do for cell ids: -We can change the sample-specific `rowData` column names by prepending the sample name. -For example, rather than being called `mean`, this column will be named `SCPCL000479-mean` for the `SCPCL000479` sample. +That's quite a lot! +In fact, because these objects were all uniformly processed by the same workflow (which did not filter out any genes!), we expect them to all have the same genes. +We can map over the list to confirm that indeed, they have the same number of rows (genes): -All our SCE objects have the same `rowData` columns (as we can see in the next chunk), so we'll perform this renaming across all SCEs. -```{r compare rowdata, live = TRUE} -# Use `purrr::map()` to quickly extract rowData column names for all SCEs +```{r check shared genes, live = TRUE} +# The number of genes in an SCE corresponds to its number of rows: ``` +Even though we know the genes already match, we need to also be sure they are in the same _order_ among all objects. +So, we'll hold onto that `shared_genes` variable we defined and use it soon in our custom formatting function to make sure all objects fully match. -#### Ensuring that only shared genes are used +It's worth noting that the intersection isn't the only option here, though! +Using the intersection means a lot of genes will get discarded if the objects have different genes. +We could instead take the _union_ of genes so nothing gets thrown out. +In this case, you'd need to create "dummy" assay rows for genes that a given SCE doesn't have and fill it with `NA` expression values. +You'll still have to make sure the SCEs have the same rows in the same order before merging, so you may need to do a decent bit of matrix wrangling. -The next step in ensuring SCE compatibility is to make sure they all contain the same genes, which are stored as the SCE object's row names (these names are also found the `rowData` slot's row names). -Here, those gene ids are unique Ensembl gene ids. +##### Check the `colData` column names -We can use some `purrr` magic to quickly find the set of shared genes among our samples, and then ask how many there are. +Next up, we'll check the `colData` columns: we need these to be the same, and in the same order. +Let's print out each object's `colData` column name to see where we stand: -```{r shared genes} -# Define vector of shared genes -shared_genes <- sce_list |> - # get rownames (genes) for each SCE in sce_list - purrr::map(rownames) |> - # reduce to the _intersection_ among lists - purrr::reduce(intersect) +```{r coldata colnames} +sce_list |> + purrr::map( + \(sce) colnames(colData(sce)) + ) ``` +We see the same columns all around in the same order, which is great! -```{r print shared genes, live = TRUE} -# How many shared genes are there? +But what if there were different columns across objects, or they were differently ordered? +In that case, we could find the intersection of column names like we did above for genes, and use that to re-order and subset all `colData` slots in our custom formatting function. -``` -In this case, we happen to know that all SCE objects we're working with already contained the same genes. -We do a quick-and-dirty check for this by looking at the number of rows across SCE objects, and we'll see that they are all the same: +##### Check the assays -```{r check shared genes, live = TRUE} -# The number of genes in an SCE corresponds to its number of rows: +Next, we'll make sure that all objects share the same assays: + +```{r assay names, live = TRUE} +# print all the assay names ``` +Again, all objects are compatible already with both having a `counts` and `logcounts` assay. -So, for our data, we will not have to subset to shared genes since they are already shared! +In your own data exploration, if you encounter SCEs to merge that have extraneous assays that you don't need, you can remove them by setting them to `NULL` in your custom formatting function, e.g. `assay(sce, "assay_to_remove") <- NULL`. -#### Ensuring matching columns in `colData` +##### Check the `rowData` contents -Finally, we'll need to have the same column names across all SCE `colData` tables, so let's look at all those column names. -We can use similar syntax here to what we used to look at all the `rowData` column names. +One of the other items we said we'd need to think about is the `rowData`, which contains gene metadata. +This slot is interesting because some of its columns are specific to the given sample, while others are general: -```{r compare coldata} -purrr::map(sce_list, - \(sce) colnames(colData(sce)) ) +```{r little head rowdata} +sce_list |> + purrr::map( + \(sce) head(rowData(sce), 3) # only print 3 rows for space! + ) ``` -It looks like the column names are all already matching among SCEs, so there's no specific preparation we'll need to do there. +The column `gene_symbol` is not sample-specific - it just provides the corresponding gene symbol to the Ensembl ids seen here as row names. +The columns `mean` and `detected`, however, are sample-specific - they contain sample-specific statistics about gene expression. -### Perform SCE merging +This means we definitely need to update the column names `mean` and `detected` to include the sample id. +But, we don't need a separate `gene_symbol` column for each sample, so we can leave that one alone as just `gene_symbol`. +Once we eventually merge, only one `gene_symbol` column will be left in the final object since it is the same across all the SCEs. + +We'll show one way to do this in our custom function, but it's worth noting there's nothing _wrong_ with also adding the sample id to the `gene_symbol` column; you'll just end up with a bunch of redundant gene symbol columns. + + +#### Reformat the SCE objects As you can see, there's a lot of moving parts to consider! Again, these moving parts may (will!) differ for SCEs that you are working with, so you have to explore your own SCEs in depth to prepare for merging. @@ -343,33 +346,61 @@ We'll then use our new `purrr::map()` programming skills to run this function ov This will give us a new list of formatted SCEs that we can proceed to merge. It's important to remember that the `format_sce()` function written below is not a function for general use – it's been precisely written to match the processing we need to do for _these_ SCEs, and different SCEs you work with will require different types of processing. +We also include roxygen-style comments for this function, which can be a helpful consistent way to document your code if you like it - we've even written a blog post about it :) (). + ```{r format_sce function} -format_sce <- function(sce, sample_name) { - # Input arguments: - ## sce: An SCE object to format - ## sample_name: The SCE object's name - # This function returns a formatted SCE object. - - ###### Ensure that we can identify the originating sample information ###### - # Add a column called `sample` that stores this information - # This will be stored in `colData` +#' Custom function to format an SCE before merging +#' +#' @param sce SCE object to format +#' @param sample_name Name of the sample +#' @param shared_genes Vector of shared genes across all SCE objects +#' +#' @returns An updated SCE object ready for merging +format_sce <- function( + sce, + sample_name, + shared_genes +) { + + ### Remove the single-sample reduced dimensions + # We do this first since it makes the object a lot smaller for the rest of this code! + reducedDims(sce) <- NULL + + ### Add dedicated sample indicator column to the colData slot + # Recall, the `sce$` shortcut points to the colData sce$sample <- sample_name - - ###### Ensure cell ids will be unique ###### - # Update the SCE object column names (cell ids) by prepending `sample_name` + ### Ensure objects have the same genes in the same order + # Use the shared_genes vector to index genes to the intersection + # Doing this both subsets to just those genes, and reorders! + sce <- sce[shared_genes, ] + + ### There is no additional wrangling to do for the colData column names or assays. + ### But if there were, you could add your custom code to do so here. + ### Your custom function may need additional arguments for this, too. + + ### Ensure cell ids are identifiable and fully unique + # Update the SCE object column names (cell ids) by prepending the `sample_name` colnames(sce) <- glue::glue("{sample_name}-{colnames(sce)}") - - ###### Ensure gene-level statistics can be identified in `rowData` ###### - # We want to rename the columns `mean` and `detected` to contain the `sample_name` - # Recall the names are: "gene_symbol", "mean", "detected" - colnames(rowData(sce)) <- c("gene_symbol", - glue::glue("{sample_name}-mean"), - glue::glue("{sample_name}-detected")) - - # Return the formatted SCE object - return(sce) + ### Ensure the rowData columns can be identified + # Recall, we want to leave `gene_symbol` alone, but add the `sample_name` to the rest + rowdata_names <- colnames(rowData(sce)) + # prefix rowData names with the sample name, except for gene symbols + new_rowdata_names <- ifelse( + rowdata_names == "gene_symbol", + "gene_symbol", + glue::glue("{sample_name}-{rowdata_names}") + ) + colnames(rowData(sce)) <- new_rowdata_names + + ### Ensure metadata slot fields can be identified + # We'll simply prepend the `sample_name` to all fields for this slot + names(metadata(sce)) <- glue::glue("{sample_name}-{names(metadata(sce))}") + + + ### Finally, we can return the formatted SCE object + return(sce) } ``` @@ -382,15 +413,16 @@ In our case, we want to run `format_sce()` over paired `sce_list` items and `sce # Each "iteration" will march down the first two # arguments `sce_list` and `names(sce_list)` in order - # Name of the function to run - -# Print resulting list +# Print formatted SCE list ``` (Psst, like `purrr` and want to dive deeper? Check out [the `purrr::imap()` function](https://purrr.tidyverse.org/reference/imap.html)!) +### Perform the merging + + At long last, we are ready to merge the SCEs, which we'll do using the R function `cbind()`. The `cbind()` function is often used to combine data frames or matrices by column, i.e. "stack" them next to each other. The same principle applies here, but when run on SCE objects, `cbind()` will create a new SCE object by combining `counts` and `logcounts` matrices by column. @@ -405,7 +437,7 @@ Since we need to apply `cbind()` to a _list_ of objects, we need to use some sli ``` -We now have a single SCE object that contains all cells from all samples we'd like to integrate. +We now have a single merged SCE object that contains all cells from all samples we'd like to integrate. Let's take a peek at some of the innards of this new SCE object: @@ -419,54 +451,28 @@ Let's take a peek at some of the innards of this new SCE object: ``` -## Integration +## Integrate samples ![Single-cell roadmap: Integrate](diagrams/roadmap_multi_integrate.png) - So far, we've created a `merged_sce` object which is (almost!) ready for integration. The integration methods we'll be using here actually perform batch correction on a reduced dimension representation of the normalized gene expression values, which is more efficient. `fastMNN` and `harmony` specifically use PCA for this, but be aware that different integration methods may use other kinds of reduced dimensions. -You'll notice that the merged SCE object object already contains PCA and UMAP reduced dimensions, which were calculated during our pre-processing: - -```{r merged_sce reddim, live = TRUE} -# Print the reducedDimNames of the merged_sce - -``` - -These represent the original dimension reductions that were performed on _each individual SCE_ before merging, but we actually need to calculate PCA (and UMAP for visualization) from the merged object directly. - -Why can't we use the sample-specific PCA and UMAP matrices? -Part of these calculations themselves involves scaling the raw data to center the mean. -When samples are separately centered but plotting together, you will see samples "overlapping" in space, but this placement is actually just an artifact of the individual centering. -In addition, the mathematical relationship between the original expression data and reduced dimension version of that data will differ across samples, meaning we can't interpret them all together. -To see how this looks, let's look at the UMAP when calculated from individual samples: - -```{r plot individual UMAPs} -# Plot UMAP calculated from individual samples with separate scaling -scater::plotReducedDim(merged_sce, - dimred = "UMAP", - color_by = "sample", - point_size = 0.5, - point_alpha = 0.2) + - # Use a CVD-friendly color scheme and specify legend name - scale_color_brewer(palette = "Dark2", name = "sample") + - # Modify the legend key with larger, easier to see points - guides(color = guide_legend(override.aes = list(size = 3, alpha = 1))) + - ggtitle("UMAP calculated on each sample separately") -``` - -As we see in this UMAP, all samples are centered at zero and all overlapping. -This visual artifact can give the _incorrect impression_ that data is integrated - to be clear, this data is NOT integrated! +Before merging, our objects had reduced dimension representations calculated on each individual SCE, and we removed them when preparing for merge. +We removed them because we don't actually want to use them anymore! +This is because part of their calculation involves scaling the raw data to center the mean. +When samples are separately centered, _all_ of them will be centered at zero, making it look like the datasets are already pretty overlapping when you plot their UMAPs together. +But, this is just a mathematical artifact of how dimension reduction is performed. +So, we'll begin by re-calculating PCA and UMAP on the merged object in a way that takes batches into consideration. For input to integration, we'll want the reduced dimension calculations to consider normalized gene expression values from all samples simultaneously. So we'll need to recalculate PCA (and UMAP for visualization) on the merged object. -We'll also save these new reduced dimensions with different names, `merged_PCA` and `merged_UMAP`, to distinguish them from already-present `PCA` and `UMAP`. First, as usual, we'll determine the high-variance genes to use for PCA from the `merged_sce` object. For this, we'll need to provide the argument `block = merged_sce$sample` when modeling gene variance, which tells `scran::modelGeneVar()` to first model variance separately for each batch and then combine those modeling statistics. +(Psst: isn't it handy we created that `sample` column when merging?!) ```{r calc merged hv genes} # Specify the number of genes to identify @@ -515,41 +521,32 @@ We can now include this PCA matrix in our `merged_sce` object: Now that we have the PCA matrix, we can proceed to calculate UMAP to visualize the uncorrected merged data. -We'll calculate UMAP as "usual", but in this case we'll specify two additional arguments: - -- `dimred = "merged_PCA"`, which specifies which existing reduced dimension should be used for the calculation. -We want to use the batch-weighted PCA, which we named above as `"merged_PCA"`. -- `name = "merged_UMAP"`, which names the final UMAP that this function calculates. -This argument will prevent us from overwriting the existing UMAP which is already named "UMAP" and instead create a separate `"merged_UMAP"`. - ```{r calculate merged umap, live = TRUE} -# add merged_UMAP from merged_PCA ``` -Now, let's see how this new `merged_UMAP` looks compared to the `UMAP` calculated from individual samples: - ```{r plot uncorrected merged UMAP} # UMAPs scaled together when calculated from the merged SCE -scater::plotReducedDim(merged_sce, - dimred = "merged_UMAP", - color_by = "sample", - # Some styling to help us see the points: - point_size = 0.5, - point_alpha = 0.2) + +scater::plotUMAP( + merged_sce, + color_by = "sample", + # Some styling to help us see the points: + point_size = 0.5, + point_alpha = 0.2 +) + scale_color_brewer(palette = "Dark2", name = "sample") + guides(color = guide_legend(override.aes = list(size = 3, alpha = 1))) + ggtitle("UMAP calculated on merged_sce") ``` -Samples are now separated, which more reasonably reflects that this data is _not yet batch-corrected_. +We see (mostly) four separate clumps representing the four different _merged but not yet integrated_ samples. We can think of this UMAP as our "before" UMAP, and we can compare this to the "after" UMAP we see post-integration. Let's discuss a little first: What visual differences do you think the UMAP on the integrated version of data will have? What similarities do you think the integrated UMAP will have to this plot? -### Integration with `fastMNN` +### Integrate with `fastMNN` Finally, we're ready to integrate! To start, we'll use the `fastMNN` approach from the Bioconductor [`batchelor` package](http://www.bioconductor.org/packages/release/bioc/html/batchelor.html). @@ -588,6 +585,10 @@ We're mostly interested in the PCA that `fastMNN` calculated, so let's save that ``` Finally, we'll calculate UMAP from these corrected PCA matrix for visualization. +In this case we need to specify two additional arguments since we're working with non-standard reduced dimension names: + ++ `dimred = "fastmnn_PCA"`, which specifies the existing reduced dimension to use for the calculation ++ `name = "fastmnn_UMAP"`, which names the final UMAP that this function calculates ```{r calculate fastmnn umap, live = TRUE} # Calculate UMAP @@ -612,7 +613,7 @@ scater::plotReducedDim(merged_sce, ggtitle("UMAP after integration with fastMNN") ``` -This `fastmnn_UMAP` certainly looks different from the one we made from `merged_UMAP`! +This `fastmnn_UMAP` certainly looks different from the one we made before integrating! What different trends do you see? Do all samples look "equally well" integrated, from a first look? @@ -684,12 +685,11 @@ scater::plotReducedDim(merged_sce, What trends do you observe between tumor and healthy tissues among these integrated samples? - -### Integration with `harmony` +### Integrate with `harmony` `fastMNN` is only one of many approaches to perform integration, and different methods have different capabilities and may give different results. For example, some methods can accommodate additional covariates (e.g., technology, patient, diagnosis, etc.) that can influence integration. -In fact the data we are using has a known _patient_ covariate; `SCPCL000479` and `SCPCL000480` are from the first patient, and `SCPCL000481` and `SCPCL000482` are from the second patient. +In fact the data we are using has a known _patient_ covariate; `SCPCL000479` and `SCPCL000480` are from Patient A, and `SCPCL000481` and `SCPCL000482` are from Patient B. So, let's perform integration with a method that can use this information - [`harmony`](https://portals.broadinstitute.org/harmony/)! @@ -713,7 +713,7 @@ However, unlike `fastMNN`, `harmony` does not "back-calculate" corrected express For input, `harmony` needs a couple pieces of information: - First, `harmony` takes a batch-weighted PCA matrix to perform integration. -We already calculated a batch-weighted PCA matrix (our `merged_PCA` reduced dimension), we'll provide this as the the input. +We already calculated a batch-weighted PCA matrix so we'll provide this as the the input. - Second, we need to tell `harmony` about the covariates to use - `sample` and `patient`. To do this, we provide two arguments: - `meta_data`, a data frame that contains covariates across samples. @@ -773,7 +773,7 @@ scater::plotReducedDim(merged_sce, # Specify variable for faceting other_fields = "sample") + scale_color_brewer(palette = "Dark2", name = "Broad celltype", na.value = "grey80") + - guides(color = guide_legend(override.aes = list(size = 3))) + + guides(color = guide_legend(override.aes = list(size = 3, alpha = 1))) + ggtitle("UMAP after integration with harmony") + facet_wrap(vars(sample)) ``` @@ -782,7 +782,7 @@ What do you now notice in this faceted view that wasn't clear previously? Are there other patterns you see that are similar or different from the `fastMNN` UMAP? How do you think `fastMNN` vs. `harmony` performed in integrating these samples? -### Export +## Export Finally, we'll export the final SCE object with both `fastMNN` and `harmony` integration to a file. Since this object is very large (over 1 GB!), we'll export it to a file with some compression, which, in this case, will reduce the final size to a smaller ~360 MB. diff --git a/scRNA-seq-advanced/02-dataset_integration.nb.html b/scRNA-seq-advanced/02-dataset_integration.nb.html index 1b5b26bf..28d07264 100644 --- a/scRNA-seq-advanced/02-dataset_integration.nb.html +++ b/scRNA-seq-advanced/02-dataset_integration.nb.html @@ -3075,8 +3075,8 @@

Set up

-
-

Directories and files

+
+

Define directories and files

We have already prepared count data for the four samples we’ll be integrating (i.e., filtered cells, normalized counts, and calculated PCA & UMAP). These SCE objects, stored as RDS files, are available in @@ -3088,6 +3088,8 @@

Directories and files

  • SCPCL000481.rds (Patient B)
  • SCPCL000482.rds (Patient B)
  • +

    Both Patient A (18 year old male) and Patient B (4 year old female) +had recurrent embryonal rhabdomyosarcoma when samples were taken.

    To begin, let’s set up our directories and files:

    @@ -3205,50 +3207,8 @@

    Directories and files

    -

    One other new coding strategy we’ll learn in this notebook is using -the glue package -to combine strings. This package offers a convenient function -glue::glue() that can be used instead of the base R -paste() function.

    - - - -
    # Define a variable for example:
    -org_name <- "Data Lab"
    -
    -# We can use paste to combine strings and variables:
    -paste("Welcome to the", org_name, "workshop on Advanced scRNA-seq!")
    - - -
    [1] "Welcome to the Data Lab workshop on Advanced scRNA-seq!"
    - - -
    Welcome to the Data Lab workshop on Advanced scRNA-seq!
    - - - -

    We can use glue::glue() to accomplish the same goal with -some different syntax:

    - - - -
    # glue::glue takes a single string argument (only one set of quotes!), and
    -#  variables can easily be included inside {curly braces}
    -glue::glue("Welcome to the {org_name} workshop on Advanced scRNA-seq!")
    - - -
    Welcome to the Data Lab workshop on Advanced scRNA-seq!
    - - -
    Welcome to the Data Lab workshop on Advanced scRNA-seq!
    - - - -

    (Note that even though the glue::glue() output isn’t in -quotes, it still behaves like a string!)

    -

    Alright, time for the good stuff! Let’s use purrr::map() -to read in our SCE objects so that they are immediately stored together -in a list.

    +

    Let’s use purrr::map() to read in our SCE objects so +that they are immediately stored together in a list.

    We’ll first need to define a vector of the file paths to read in. We’ll start by creating a vector of sample names themselves and then formatting them into the correct paths. This way (foreshadowing!) we @@ -3416,8 +3376,8 @@

    Directories and files

    performance, but they are not part of the integration itself.

    -
    -

    Prepare the SCE list for integration

    +
    +

    Merge the SCE list into one object

    Single-cell roadmap: Merge
    Single-cell roadmap: Merge
    @@ -3430,179 +3390,88 @@

    Prepare the SCE list for integration

    integration next.

    To merge SCE objects, we do need to do some wrangling and bookkeeping to ensure compatibility and that we don’t lose important information. -Overall we’ll want to take care of these items:

    +Overall, we’ll want to make sure that:

      -
    1. We should be able to trace sample-specific information back to the -originating sample, including… +
    2. All objects have compatible dimensions. This means that all objects +should…
        -
      • Cell-level information: Which sample is each cell from?
      • -
      • Library-specific feature statistics, e.g., gene-level statistics for -a given library found in rowData. Which sample is a given -feature statistic from?
      • +
      • Have the same genes (aka row names), in the same order
      • +
      • Have the same colData slot columns, in the same +order
      • +
      • Have the same assays
      • +
    3. +
    4. After merging, we’ll still be able to identify which sample +different pieces of information came from As we saw in the slides, this +means we’ll have to… +
        +
      • Attach sample names to the barcodes (aka column names) This also +ensures that column names are unique; while a single sample (library) is +guaranteed to have unique barcodes, technically they can be repeated +across samples!
      • +
      • Attach sample names to rowData slot column names and +metadata field names (if you care to keep this information +around - today, we will!)
      • +
      • Add a new column indicating the sample to the colData +slot
    5. -
    6. SCE objects should contain the same genes: Each SCE object should -have the same row names.
    7. -
    8. SCE cell metadata columns should match: The colData for -each SCE object should have the same column names.
    -

    We’ll begin by taking some time to thoroughly explore our SCE objects -and figure out what wrangling steps we need to take for these specific -data. Don’t skip this exploration! Bear in mind that the exact wrangling -shown here will not be the same for other SCE objects you work with, but -the same general principles apply.

    -
    -

    Preserving sample information at the cell level

    -

    How will we be able to tell which sample a given cell came from?

    -

    The best way to do this is simply to add a colData -column with the sample information, so that we can know which sample -each row came from.

    -

    In addition, we want to pay some attention to the SCE object’s column -names (the cell ids), which must remain unique after merging since -duplicate ids will cause an R error. In this case, the SCE column names -are barcodes (which is usually but not always the case in SCE objects), -which are only guaranteed to be unique within a sample but may -be repeated across samples. So, after merging, it’s technically possible -that multiple cells will have the same barcode. This would be a problem -for two reasons: First, the cell id would not be able to point us back -to cell’s originating sample. Second, it would literally cause an error -in R, which does not allow duplicate column names.

    -

    One way to ensure that cell ids remain unique even after merging is -to actually modify them by prepending the relevant sample name. -For example, consider these barcodes for the SCPCL000479 -sample:

    - - - -
    # Look at the column names for the `SCPCL000479` sample, for example
    -colnames(sce_list$SCPCL000479) |>
    -  # Only print out the first 6 for convenience
    -  head()
    - - -
    [1] "GGGACCTCAAGCGGAT" "CACAGATAGTGAGTGC" "TGTGGCGGTGAATTGA" "GCCGATGGTACATACC"
    -[5] "ATTATCCCAGTTGGTT" "TCCGAAATCACACCGG"
    - - -
    GGGACCTCAAGCGGAT
    -CACAGATAGTGAGTGC
    -TGTGGCGGTGAATTGA
    -GCCGATGGTACATACC
    -ATTATCCCAGTTGGTT
    -TCCGAAATCACACCGG
    - - - -

    These ids will be updated to -SCPCL000479-GGGACCTCAAGCGGAT, -SCPCL000479-CACAGATAGTGAGTGC, and so on, thereby ensuring -fully unique ids for all cells across all samples.

    -
    -
    -

    Preserving sample information at the gene level

    -

    The rowData table in SCE objects will often contain both -“general” and “library-specific” information, for example:

    - - - -
    rowData(sce_list$SCPCL000479) |>
    -  head()
    - - -
    DataFrame with 6 rows and 3 columns
    -                gene_symbol       mean  detected
    -                <character>  <numeric> <numeric>
    -ENSG00000000003      TSPAN6 0.01772018  1.639778
    -ENSG00000000005        TNMD 0.00264480  0.158688
    -ENSG00000000419        DPM1 0.07299656  6.109495
    -ENSG00000000457       SCYL3 0.02300979  1.983602
    -ENSG00000000460    C1orf112 0.08119545  6.426871
    -ENSG00000000938         FGR 0.00317376  0.238032
    - - - -

    Here, the rownames are Ensembl gene ids, and columns are -gene_symbol, mean, and detected. -The gene_symbol column is general information about all -genes, not specific to any library or experiment, but mean -and detected are library-specific gene statistics. So, -gene_symbol does not need to be traced back to its -originating sample, but mean and detected do. -To this end, we can take a similar approach to what we’ll do for cell -ids: We can change the sample-specific rowData column names -by prepending the sample name. For example, rather than being called -mean, this column will be named -SCPCL000479-mean for the SCPCL000479 -sample.

    -

    All our SCE objects have the same rowData columns (as we -can see in the next chunk), so we’ll perform this renaming across all -SCEs.

    - - - -
    # Use `purrr::map()` to quickly extract rowData column names for all SCEs
    -purrr::map(sce_list,
    -           \(sce) colnames(rowData(sce)))
    - - -
    $SCPCL000479
    -[1] "gene_symbol" "mean"        "detected"   
    -
    -$SCPCL000480
    -[1] "gene_symbol" "mean"        "detected"   
    -
    -$SCPCL000481
    -[1] "gene_symbol" "mean"        "detected"   
    -
    -$SCPCL000482
    -[1] "gene_symbol" "mean"        "detected"   
    - - -
    gene_symbol
    -mean
    -detected
    - - -
    gene_symbol
    -mean
    -detected
    - - -
    gene_symbol
    -mean
    -detected
    - - -
    gene_symbol
    -mean
    -detected
    - - - +

    We’ll approach this merge in two parts:

    +
      +
    • First, we’ll take some time to thoroughly explore the our SCE +objects to determine what wrangling we need to do to make all the +objects compatible for merging
    • +
    • Then, we’ll write (ok, we’ve written it for you) a custom +function to format each SCE object for merging, including: +
        +
      • Making any changes to ensure objects are compatible
      • +
      • Adding in identifying information so we know which sample the cells +and other metadata came from
      • +
      • Removing the existing reduced dimension matrices (PCA and UMAP). +This is because we’ll want to recalculate these matrices on the merged +objects, taking batch into account
      • +
    • +
    +

    When merging objects on your own, don’t skip these data exploration +steps! The steps we take to prepare our SCEs will probably be different +from the steps you need to take with other SCEs, and only by carefully +exploring the objects can you figure out what steps you’ll need to take +to meet all of our conditions.

    +
    +

    Prepare to merge SCEs

    +
    +

    Create unique cell identifiers

    +

    As part of the custom function we’ll write, we’ll include a step to +create unique cell identifiers by attaching sample names to the SCE +column names (cell barcodes). For example, we would update the column +name for a cell from Sample1 with the barcode +ACGT to Sample1-ACGT.

    +

    When merging, there can’t be any duplicate column names (barcodes) +across all the objects or R will throw an error. While you’re +guaranteed to have unique barcodes in a given SCE object, there is +no guarantee that they are unique across multiple samples - it +is absolutely possible to have cells from two different samples share +the same barcode (and we’ve seen it happen!).

    +

    Adding the sample id to the column names (barcodes) is therefore a +crucial step in our merging bookkeeping.

    -
    -

    Ensuring that only shared genes are used

    -

    The next step in ensuring SCE compatibility is to make sure they all -contain the same genes, which are stored as the SCE object’s row names -(these names are also found the rowData slot’s row names). -Here, those gene ids are unique Ensembl gene ids.

    -

    We can use some purrr magic to quickly find the set of -shared genes among our samples, and then ask how many there are.

    +
    +

    Explore the SCE objects

    +
    +
    Check the genes
    +

    First, we’ll compare the object’s genes (aka, their row names). We +can use some purrr magic to help us find the set of shared +genes among all objects:

    - +
    # Define vector of shared genes
     shared_genes <- sce_list |>
       # get rownames (genes) for each SCE in sce_list
       purrr::map(rownames) |>
       # reduce to the _intersection_ among lists
    -  purrr::reduce(intersect)
    - - - - - - -
    # How many shared genes are there?
    +  purrr::reduce(intersect)
    +
    +# How many shared genes are there?
     length(shared_genes)
    @@ -3610,10 +3479,10 @@

    Ensuring that only shared genes are used

    -

    In this case, we happen to know that all SCE objects we’re working -with already contained the same genes. We do a quick-and-dirty check for -this by looking at the number of rows across SCE objects, and we’ll see -that they are all the same:

    +

    That’s quite a lot! In fact, because these objects were all uniformly +processed by the same workflow (which did not filter out any genes!), we +expect them to all have the same genes. We can map over the list to +confirm that indeed, they have the same number of rows (genes):

    @@ -3636,20 +3505,32 @@

    Ensuring that only shared genes are used

    -

    So, for our data, we will not have to subset to shared genes since -they are already shared!

    +

    Even though we know the genes already match, we need to also be sure +they are in the same order among all objects. So, we’ll hold +onto that shared_genes variable we defined and use it soon +in our custom formatting function to make sure all objects fully +match.

    +

    It’s worth noting that the intersection isn’t the only option here, +though! Using the intersection means a lot of genes will get discarded +if the objects have different genes. We could instead take the +union of genes so nothing gets thrown out. In this case, you’d +need to create “dummy” assay rows for genes that a given SCE doesn’t +have and fill it with NA expression values. You’ll still +have to make sure the SCEs have the same rows in the same order before +merging, so you may need to do a decent bit of matrix wrangling.

    -
    -

    Ensuring matching columns in colData

    -

    Finally, we’ll need to have the same column names across all SCE -colData tables, so let’s look at all those column names. We -can use similar syntax here to what we used to look at all the -rowData column names.

    +
    +
    Check the colData column names
    +

    Next up, we’ll check the colData columns: we need these +to be the same, and in the same order. Let’s print out each object’s +colData column name to see where we stand:

    - -
    purrr::map(sce_list,
    -           \(sce) colnames(colData(sce)) )
    + +
    sce_list |>
    +  purrr::map(
    +    \(sce) colnames(colData(sce)) 
    +  ) 
    $SCPCL000479
    @@ -3734,18 +3615,138 @@ 

    Ensuring matching columns in colData

    -

    It looks like the column names are all already matching among SCEs, -so there’s no specific preparation we’ll need to do there.

    +

    We see the same columns all around in the same order, which is +great!

    +

    But what if there were different columns across objects, or they were +differently ordered? In that case, we could find the intersection of +column names like we did above for genes, and use that to re-order and +subset all colData slots in our custom formatting +function.

    -
    -

    Perform SCE merging

    +
    +
    Check the assays
    +

    Next, we’ll make sure that all objects share the same assays:

    + + + +
    # print all the assay names
    +sce_list |>
    +  purrr::map(assayNames)
    + + +
    $SCPCL000479
    +[1] "counts"    "logcounts"
    +
    +$SCPCL000480
    +[1] "counts"    "logcounts"
    +
    +$SCPCL000481
    +[1] "counts"    "logcounts"
    +
    +$SCPCL000482
    +[1] "counts"    "logcounts"
    + + +
    counts
    +logcounts
    + + +
    counts
    +logcounts
    + + +
    counts
    +logcounts
    + + +
    counts
    +logcounts
    + + + +

    Again, all objects are compatible already with both having a +counts and logcounts assay.

    +

    In your own data exploration, if you encounter SCEs to merge that +have extraneous assays that you don’t need, you can remove them by +setting them to NULL in your custom formatting function, +e.g. assay(sce, "assay_to_remove") <- NULL.

    +
    +
    +
    Check the rowData contents
    +

    One of the other items we said we’d need to think about is the +rowData, which contains gene metadata. This slot is +interesting because some of its columns are specific to the given +sample, while others are general:

    + + + +
    sce_list |>
    +  purrr::map(
    +    \(sce) head(rowData(sce), 3) # only print 3 rows for space!
    +  )
    + + +
    $SCPCL000479
    +DataFrame with 3 rows and 3 columns
    +                gene_symbol      mean  detected
    +                <character> <numeric> <numeric>
    +ENSG00000000003      TSPAN6 0.0177202  1.639778
    +ENSG00000000005        TNMD 0.0026448  0.158688
    +ENSG00000000419        DPM1 0.0729966  6.109495
    +
    +$SCPCL000480
    +DataFrame with 3 rows and 3 columns
    +                gene_symbol       mean  detected
    +                <character>  <numeric> <numeric>
    +ENSG00000000003      TSPAN6 0.05209841  4.828312
    +ENSG00000000005        TNMD 0.00855151  0.828838
    +ENSG00000000419        DPM1 0.08919879  8.301539
    +
    +$SCPCL000481
    +DataFrame with 3 rows and 3 columns
    +                gene_symbol      mean  detected
    +                <character> <numeric> <numeric>
    +ENSG00000000003      TSPAN6 0.0637984  5.989666
    +ENSG00000000005        TNMD 0.0054835  0.495624
    +ENSG00000000419        DPM1 0.2401139 20.056944
    +
    +$SCPCL000482
    +DataFrame with 3 rows and 3 columns
    +                gene_symbol      mean  detected
    +                <character> <numeric> <numeric>
    +ENSG00000000003      TSPAN6 0.0289113  2.659838
    +ENSG00000000005        TNMD 0.0100776  0.759954
    +ENSG00000000419        DPM1 0.1391046 11.217578
    + + + +

    The column gene_symbol is not sample-specific - it just +provides the corresponding gene symbol to the Ensembl ids seen here as +row names. The columns mean and detected, +however, are sample-specific - they contain sample-specific statistics +about gene expression.

    +

    This means we definitely need to update the column names +mean and detected to include the sample id. +But, we don’t need a separate gene_symbol column for each +sample, so we can leave that one alone as just gene_symbol. +Once we eventually merge, only one gene_symbol column will +be left in the final object since it is the same across all the +SCEs.

    +

    We’ll show one way to do this in our custom function, but it’s worth +noting there’s nothing wrong with also adding the sample id to +the gene_symbol column; you’ll just end up with a bunch of +redundant gene symbol columns.

    +
    +
    +
    +

    Reformat the SCE objects

    As you can see, there’s a lot of moving parts to consider! Again, these moving parts may (will!) differ for SCEs that you are working with, so you have to explore your own SCEs in depth to prepare for merging.

    Based on our exploration, here is a schematic of how one of the SCE objects will ultimately be modified into the final merged SCE:

    -

    +

    We’ll write a custom function (seen in the chunk below) tailored to our wrangling steps that prepares a single SCE object for merging. We’ll then use our new purrr::map() programming @@ -3756,35 +3757,64 @@

    Perform SCE merging

    written to match the processing we need to do for these SCEs, and different SCEs you work with will require different types of processing.

    +

    We also include roxygen-style comments for this function, which can +be a helpful consistent way to document your code if you like it - we’ve +even written a blog post about it :) (https://www.ccdatalab.org/blog/dont-make-me-write-tips-for-avoiding-typing-in-rstudio).

    - -
    format_sce <- function(sce, sample_name) {
    -  # Input arguments:
    -  ## sce: An SCE object to format
    -  ## sample_name: The SCE object's name
    -  # This function returns a formatted SCE object.
    -
    -  ###### Ensure that we can identify the originating sample information ######
    -  # Add a column called `sample` that stores this information
    -  # This will be stored in `colData`
    +
    +
    #' Custom function to format an SCE before merging
    +#'
    +#' @param sce SCE object to format
    +#' @param sample_name Name of the sample
    +#' @param shared_genes Vector of shared genes across all SCE objects
    +#'
    +#' @returns An updated SCE object ready for merging
    +format_sce <- function(
    +  sce, 
    +  sample_name, 
    +  shared_genes
    +) {
    +  
    +  ### Remove the single-sample reduced dimensions 
    +  # We do this first since it makes the object a lot smaller for the rest of this code!
    +  reducedDims(sce) <- NULL
    +  
    +  ### Add dedicated sample indicator column to the colData slot
    +  # Recall, the `sce$` shortcut points to the colData
       sce$sample <- sample_name
     
    -
    -  ###### Ensure cell ids will be unique ######
    -  # Update the SCE object column names (cell ids) by prepending `sample_name`
    +  ### Ensure objects have the same genes in the same order
    +  # Use the shared_genes vector to index genes to the intersection
    +  # Doing this both subsets to just those genes, and reorders!
    +  sce <- sce[shared_genes, ]
    +  
    +  ### There is no additional wrangling to do for the colData column names or assays.
    +  ### But if there were, you could add your custom code to do so here.
    +  ### Your custom function may need additional arguments for this, too.
    +
    +  ### Ensure cell ids are identifiable and fully unique 
    +  # Update the SCE object column names (cell ids) by prepending the `sample_name`
       colnames(sce) <- glue::glue("{sample_name}-{colnames(sce)}")
     
    -
    -  ###### Ensure gene-level statistics can be identified in `rowData` ######
    -  # We want to rename the columns `mean` and `detected` to contain the `sample_name`
    -  # Recall the names are: "gene_symbol", "mean", "detected"
    -  colnames(rowData(sce)) <- c("gene_symbol",
    -                              glue::glue("{sample_name}-mean"),
    -                              glue::glue("{sample_name}-detected"))
    -
    -  # Return the formatted SCE object
    -  return(sce)
    +  ### Ensure the rowData columns can be identified
    +  # Recall, we want to leave `gene_symbol` alone, but add the `sample_name` to the rest
    +  rowdata_names <- colnames(rowData(sce))
    +  # prefix rowData names with the sample name, except for gene symbols
    +  new_rowdata_names <- ifelse(
    +    rowdata_names == "gene_symbol",
    +    "gene_symbol",
    +    glue::glue("{sample_name}-{rowdata_names}")
    +  )
    +  colnames(rowData(sce)) <- new_rowdata_names
    +  
    +  ### Ensure metadata slot fields can be identified
    +  # We'll simply prepend the `sample_name` to all fields for this slot
    +  names(metadata(sce)) <- glue::glue("{sample_name}-{names(metadata(sce))}")
    +  
    +  
    +  ### Finally, we can return the formatted SCE object
    +  return(sce)  
     }
    @@ -3796,26 +3826,25 @@

    Perform SCE merging

    sce_list names.

    - +
    # We can use `purrr::map2()` to loop over two list/vector arguments
     sce_list_formatted <- purrr::map2(
       # Each "iteration" will march down the first two
       #  arguments `sce_list` and `names(sce_list)` in order
       sce_list,
       names(sce_list),
    -  # Name of the function to run
    -  format_sce
    +  \(sce, sample_name) format_sce(sce, sample_name, shared_genes) 
     )
     
    -# Print resulting list
    +# Print formatted SCE list
     sce_list_formatted
    - +
    $SCPCL000479
     class: SingleCellExperiment 
     dim: 60319 1918 
    -metadata(14): salmon_version reference_index ... filtering_method
    -  miQC_model
    +metadata(14): SCPCL000479-salmon_version SCPCL000479-reference_index
    +  ... SCPCL000479-filtering_method SCPCL000479-miQC_model
     assays(2): counts logcounts
     rownames(60319): ENSG00000000003 ENSG00000000005 ... ENSG00000288724
       ENSG00000288725
    @@ -3824,15 +3853,15 @@ 

    Perform SCE merging

    SCPCL000479-CACAGATAGTGAGTGC ... SCPCL000479-GTTGTCCCACGTACAT SCPCL000479-TCCGATCGTCGTGCCA colData names(13): sum detected ... celltype_broad sample -reducedDimNames(2): PCA UMAP +reducedDimNames(0): mainExpName: NULL altExpNames(0): $SCPCL000480 class: SingleCellExperiment dim: 60319 4428 -metadata(14): salmon_version reference_index ... filtering_method - miQC_model +metadata(14): SCPCL000480-salmon_version SCPCL000480-reference_index + ... SCPCL000480-filtering_method SCPCL000480-miQC_model assays(2): counts logcounts rownames(60319): ENSG00000000003 ENSG00000000005 ... ENSG00000288724 ENSG00000288725 @@ -3841,15 +3870,15 @@

    Perform SCE merging

    SCPCL000480-AACTTCTTCCCTCAAC ... SCPCL000480-AGGGAGTAGCCTCATA SCPCL000480-TCGGATACATTGCAAC colData names(13): sum detected ... celltype_broad sample -reducedDimNames(2): PCA UMAP +reducedDimNames(0): mainExpName: NULL altExpNames(0): $SCPCL000481 class: SingleCellExperiment dim: 60319 5236 -metadata(14): salmon_version reference_index ... filtering_method - miQC_model +metadata(14): SCPCL000481-salmon_version SCPCL000481-reference_index + ... SCPCL000481-filtering_method SCPCL000481-miQC_model assays(2): counts logcounts rownames(60319): ENSG00000000003 ENSG00000000005 ... ENSG00000288724 ENSG00000288725 @@ -3858,15 +3887,15 @@

    Perform SCE merging

    SCPCL000481-GGGTATTTCGTTGTGA ... SCPCL000481-AAAGAACCACTTCAAG SCPCL000481-CAGCAGCTCGTGCATA colData names(13): sum detected ... celltype_broad sample -reducedDimNames(2): PCA UMAP +reducedDimNames(0): mainExpName: NULL altExpNames(0): $SCPCL000482 class: SingleCellExperiment dim: 60319 4372 -metadata(14): salmon_version reference_index ... filtering_method - miQC_model +metadata(14): SCPCL000482-salmon_version SCPCL000482-reference_index + ... SCPCL000482-filtering_method SCPCL000482-miQC_model assays(2): counts logcounts rownames(60319): ENSG00000000003 ENSG00000000005 ... ENSG00000288724 ENSG00000288725 @@ -3875,7 +3904,7 @@

    Perform SCE merging

    SCPCL000482-CAACCTCTCCGATCGG ... SCPCL000482-TGATTTCCACAAGTTC SCPCL000482-ACCAAACGTTCTCAGA colData names(13): sum detected ... celltype_broad sample -reducedDimNames(2): PCA UMAP +reducedDimNames(0): mainExpName: NULL altExpNames(0):
    @@ -3883,6 +3912,10 @@

    Perform SCE merging

    (Psst, like purrr and want to dive deeper? Check out the purrr::imap() function!)

    +
    +
    +
    +

    Perform the merging

    At long last, we are ready to merge the SCEs, which we’ll do using the R function cbind(). The cbind() function is often used to combine data frames or matrices by column, i.e. “stack” @@ -3905,11 +3938,11 @@

    Perform SCE merging

    # Print the merged_sce object merged_sce
    - +
    class: SingleCellExperiment 
     dim: 60319 15954 
    -metadata(56): salmon_version reference_index ... filtering_method
    -  miQC_model
    +metadata(56): SCPCL000479-salmon_version SCPCL000479-reference_index
    +  ... SCPCL000482-filtering_method SCPCL000482-miQC_model
     assays(2): counts logcounts
     rownames(60319): ENSG00000000003 ENSG00000000005 ... ENSG00000288724
       ENSG00000288725
    @@ -3919,29 +3952,29 @@ 

    Perform SCE merging

    SCPCL000479-CACAGATAGTGAGTGC ... SCPCL000482-TGATTTCCACAAGTTC SCPCL000482-ACCAAACGTTCTCAGA colData names(13): sum detected ... celltype_broad sample -reducedDimNames(2): PCA UMAP +reducedDimNames(0): mainExpName: NULL altExpNames(0):
    -

    We now have a single SCE object that contains all cells from all -samples we’d like to integrate.

    +

    We now have a single merged SCE object that contains all cells from +all samples we’d like to integrate.

    Let’s take a peek at some of the innards of this new SCE object:

    - +
    # How many samples, and cells per sample?
    -table( colData(merged_sce)$sample )
    +table(colData(merged_sce)$sample)
    
     SCPCL000479 SCPCL000480 SCPCL000481 SCPCL000482 
            1918        4428        5236        4372 
    - +
    # What are the new cell ids (column names)?
    -head( colnames(merged_sce) )
    +head(colnames(merged_sce))
    [1] "SCPCL000479-GGGACCTCAAGCGGAT" "SCPCL000479-CACAGATAGTGAGTGC"
    @@ -3956,9 +3989,25 @@ 

    Perform SCE merging

    SCPCL000479-ATTATCCCAGTTGGTT SCPCL000479-TCCGAAATCACACCGG
    - + +
    tail(colnames(merged_sce))
    + + +
    [1] "SCPCL000482-GATCACACAGCTAACT" "SCPCL000482-GACGCTGAGACTCTAC"
    +[3] "SCPCL000482-GTGAGGAGTCAACCTA" "SCPCL000482-ATTCCTAGTGTACATC"
    +[5] "SCPCL000482-TGATTTCCACAAGTTC" "SCPCL000482-ACCAAACGTTCTCAGA"
    + + +
    SCPCL000482-GATCACACAGCTAACT
    +SCPCL000482-GACGCTGAGACTCTAC
    +SCPCL000482-GTGAGGAGTCAACCTA
    +SCPCL000482-ATTCCTAGTGTACATC
    +SCPCL000482-TGATTTCCACAAGTTC
    +SCPCL000482-ACCAAACGTTCTCAGA
    + +
    # What does rowData look like?
    -head( rowData(merged_sce) )
    +head(rowData(merged_sce))
    DataFrame with 6 rows and 9 columns
    @@ -3991,8 +4040,8 @@ 

    Perform SCE merging

    -
    -

    Integration

    +
    +

    Integrate samples

    Single-cell roadmap: Integrate
    Single-cell roadmap: Integrate
    @@ -4005,78 +4054,28 @@

    Integration

    harmony specifically use PCA for this, but be aware that different integration methods may use other kinds of reduced dimensions.

    -

    You’ll notice that the merged SCE object object already contains PCA -and UMAP reduced dimensions, which were calculated during our -pre-processing:

    - - - -
    # Print the reducedDimNames of the merged_sce
    -reducedDimNames(merged_sce)
    - - -
    [1] "PCA"  "UMAP"
    - - -
    PCA
    -UMAP
    - - - -

    These represent the original dimension reductions that were performed -on each individual SCE before merging, but we actually need to -calculate PCA (and UMAP for visualization) from the merged object -directly.

    -

    Why can’t we use the sample-specific PCA and UMAP matrices? Part of -these calculations themselves involves scaling the raw data to center -the mean. When samples are separately centered but plotting together, -you will see samples “overlapping” in space, but this placement is -actually just an artifact of the individual centering. In addition, the -mathematical relationship between the original expression data and -reduced dimension version of that data will differ across samples, -meaning we can’t interpret them all together. To see how this looks, -let’s look at the UMAP when calculated from individual samples:

    - - - -
    # Plot UMAP calculated from individual samples with separate scaling
    -scater::plotReducedDim(merged_sce,
    -                       dimred = "UMAP",
    -                       color_by = "sample",
    -                       point_size = 0.5,
    -                       point_alpha = 0.2) +
    -  # Use a CVD-friendly color scheme and specify legend name
    -  scale_color_brewer(palette = "Dark2", name = "sample") + 
    -  # Modify the legend key with larger, easier to see points
    -  guides(color = guide_legend(override.aes = list(size = 3, alpha = 1))) +
    -  ggtitle("UMAP calculated on each sample separately")
    - - -
    Scale for colour is already present.
    -Adding another scale for colour, which will replace the existing scale.
    - - -

    - - - -

    As we see in this UMAP, all samples are centered at zero and all -overlapping. This visual artifact can give the incorrect -impression that data is integrated - to be clear, this data is NOT -integrated!

    -

    For input to integration, we’ll want the reduced dimension -calculations to consider normalized gene expression values from all -samples simultaneously. So we’ll need to recalculate PCA (and UMAP for -visualization) on the merged object. We’ll also save these new reduced -dimensions with different names, merged_PCA and -merged_UMAP, to distinguish them from already-present -PCA and UMAP.

    +

    Before merging, our objects had reduced dimension representations +calculated on each individual SCE, and we removed them when preparing +for merge. We removed them because we don’t actually want to use them +anymore! This is because part of their calculation involves scaling the +raw data to center the mean. When samples are separately centered, +all of them will be centered at zero, making it look like the +datasets are already pretty overlapping when you plot their UMAPs +together. But, this is just a mathematical artifact of how dimension +reduction is performed.

    +

    So, we’ll begin by re-calculating PCA and UMAP on the merged object +in a way that takes batches into consideration. For input to +integration, we’ll want the reduced dimension calculations to consider +normalized gene expression values from all samples simultaneously. So +we’ll need to recalculate PCA (and UMAP for visualization) on the merged +object.

    First, as usual, we’ll determine the high-variance genes to use for PCA from the merged_sce object. For this, we’ll need to provide the argument block = merged_sce$sample when modeling gene variance, which tells scran::modelGeneVar() to first model variance separately for each batch and then combine those -modeling statistics.

    +modeling statistics. (Psst: isn’t it handy we created that +sample column when merging?!)

    @@ -4147,48 +4146,32 @@

    Integration

    object:

    - +
    # add PCA results to merged SCE object
    -reducedDim(merged_sce, "merged_PCA") <- merged_pca[[1]]
    +reducedDim(merged_sce, "PCA") <- merged_pca[[1]]

    Now that we have the PCA matrix, we can proceed to calculate UMAP to visualize the uncorrected merged data.

    -

    We’ll calculate UMAP as “usual”, but in this case we’ll specify two -additional arguments:

    -
      -
    • dimred = "merged_PCA", which specifies which existing -reduced dimension should be used for the calculation. We want to use the -batch-weighted PCA, which we named above as -"merged_PCA".
    • -
    • name = "merged_UMAP", which names the final UMAP that -this function calculates. This argument will prevent us from overwriting -the existing UMAP which is already named “UMAP” and instead create a -separate "merged_UMAP".
    • -
    - -
    # add merged_UMAP from merged_PCA
    -merged_sce <- scater::runUMAP(merged_sce,
    -                              dimred = "merged_PCA",
    -                              name = "merged_UMAP")
    + +
    merged_sce <- scater::runUMAP(merged_sce)
    -

    Now, let’s see how this new merged_UMAP looks compared -to the UMAP calculated from individual samples:

    - +
    # UMAPs scaled together when calculated from the merged SCE
    -scater::plotReducedDim(merged_sce,
    -                       dimred = "merged_UMAP",
    -                       color_by = "sample",
    -                       # Some styling to help us see the points:
    -                       point_size = 0.5,
    -                       point_alpha = 0.2) +
    +scater::plotUMAP(
    +  merged_sce,
    +  color_by = "sample",
    +  # Some styling to help us see the points:
    +  point_size = 0.5,
    +  point_alpha = 0.2
    +) +
       scale_color_brewer(palette = "Dark2", name = "sample") +
       guides(color = guide_legend(override.aes = list(size = 3, alpha = 1))) +
       ggtitle("UMAP calculated on merged_sce")
    @@ -4198,19 +4181,19 @@

    Integration

    Adding another scale for colour, which will replace the existing scale. -

    +

    -

    Samples are now separated, which more reasonably reflects that this -data is not yet batch-corrected. We can think of this UMAP as -our “before” UMAP, and we can compare this to the “after” UMAP we see -post-integration.

    +

    We see (mostly) four separate clumps representing the four different +merged but not yet integrated samples. We can think of this +UMAP as our “before” UMAP, and we can compare this to the “after” UMAP +we see post-integration.

    Let’s discuss a little first: What visual differences do you think the UMAP on the integrated version of data will have? What similarities do you think the integrated UMAP will have to this plot?

    -
    -

    Integration with fastMNN

    +
    +

    Integrate with fastMNN

    Finally, we’re ready to integrate! To start, we’ll use the fastMNN approach from the Bioconductor batchelor package.

    @@ -4292,7 +4275,14 @@

    Integration with fastMNN

    Finally, we’ll calculate UMAP from these corrected PCA matrix for -visualization.

    +visualization. In this case we need to specify two additional arguments +since we’re working with non-standard reduced dimension names:

    +
      +
    • dimred = "fastmnn_PCA", which specifies the existing +reduced dimension to use for the calculation
    • +
    • name = "fastmnn_UMAP", which names the final UMAP that +this function calculates
    • +
    @@ -4332,13 +4322,13 @@

    Integration with fastMNN

    Adding another scale for colour, which will replace the existing scale. -

    +

    This fastmnn_UMAP certainly looks different from the one -we made from merged_UMAP! What different trends do you see? -Do all samples look “equally well” integrated, from a first look?

    +we made before integrating! What different trends do you see? Do all +samples look “equally well” integrated, from a first look?

    Importantly, one reason that batches may still appear separated in the corrected UMAP is if they should be separated - for example, maybe two batches contain very different cell types, have very @@ -4398,7 +4388,7 @@

    Integration with fastMNN

    Adding another scale for colour, which will replace the existing scale. -

    +

    @@ -4437,24 +4427,24 @@

    Integration with fastMNN

    Adding another scale for colour, which will replace the existing scale. -

    +

    What trends do you observe between tumor and healthy tissues among these integrated samples?

    -
    -

    Integration with harmony

    +
    +

    Integrate with harmony

    fastMNN is only one of many approaches to perform integration, and different methods have different capabilities and may give different results. For example, some methods can accommodate additional covariates (e.g., technology, patient, diagnosis, etc.) that can influence integration. In fact the data we are using has a known patient covariate; SCPCL000479 and -SCPCL000480 are from the first patient, and -SCPCL000481 and SCPCL000482 are from the -second patient.

    +SCPCL000480 are from Patient A, and +SCPCL000481 and SCPCL000482 are from Patient +B.

    So, let’s perform integration with a method that can use this information - harmony!

    To begin setting up for harmony integration, we need to @@ -4487,8 +4477,7 @@

    Integration with harmony

    • First, harmony takes a batch-weighted PCA matrix to perform integration. We already calculated a batch-weighted PCA matrix -(our merged_PCA reduced dimension), we’ll provide this as -the the input.
    • +so we’ll provide this as the the input.
    • Second, we need to tell harmony about the covariates to use - sample and patient. To do this, we provide two arguments: @@ -4505,10 +4494,10 @@

      Integration with harmony

      Let’s go!

      - +
      # Run harmony integration
       harmony_pca <- harmony::RunHarmony(
      -  data_mat = reducedDim(merged_sce, "merged_PCA"),
      +  data_mat = reducedDim(merged_sce, "PCA"),
         meta_data = colData(merged_sce),
         vars_use = c("sample", "patient")
       )
      @@ -4538,13 +4527,13 @@

      Integration with harmony

      # Print the harmony result
       harmony_pca[1:5, 1:5]
      - +
                                        [,1]      [,2]      [,3]     [,4]       [,5]
      -SCPCL000479-GGGACCTCAAGCGGAT -7.032044 -7.271764 -3.713022 5.477643  0.6781986
      -SCPCL000479-CACAGATAGTGAGTGC -8.237485 -7.436515 -5.579578 6.101144 -0.1577978
      -SCPCL000479-TGTGGCGGTGAATTGA -7.893770 -6.595934 -2.042903 4.706149  0.9176450
      -SCPCL000479-GCCGATGGTACATACC -6.741593 -7.537079 -5.997807 2.609384 -4.1100267
      -SCPCL000479-ATTATCCCAGTTGGTT -5.534487 -4.887054 -1.897409 2.588823  1.5458433
      +SCPCL000479-GGGACCTCAAGCGGAT -7.036850 -7.280253 -3.825712 5.564675 0.5984375 +SCPCL000479-CACAGATAGTGAGTGC -8.232417 -7.422768 -5.641379 6.128005 -0.2208036 +SCPCL000479-TGTGGCGGTGAATTGA -7.928602 -6.591079 -2.140173 4.775223 0.8639596 +SCPCL000479-GCCGATGGTACATACC -6.821359 -7.465958 -5.872961 2.313765 -4.1492218 +SCPCL000479-ATTATCCCAGTTGGTT -5.611779 -4.916862 -1.894365 2.626925 1.5535017 @@ -4584,7 +4573,7 @@

      Integration with harmony

      Adding another scale for colour, which will replace the existing scale. -

      +

      @@ -4594,7 +4583,7 @@

      Integration with harmony

      visibility:

      - +
      scater::plotReducedDim(merged_sce,
                              dimred = "harmony_UMAP",
                              color_by = "celltype_broad",
      @@ -4603,7 +4592,7 @@ 

      Integration with harmony

      # Specify variable for faceting other_fields = "sample") + scale_color_brewer(palette = "Dark2", name = "Broad celltype", na.value = "grey80") + - guides(color = guide_legend(override.aes = list(size = 3))) + + guides(color = guide_legend(override.aes = list(size = 3, alpha = 1))) + ggtitle("UMAP after integration with harmony") + facet_wrap(vars(sample))
      @@ -4612,7 +4601,7 @@

      Integration with harmony

      Adding another scale for colour, which will replace the existing scale. -

      +

      @@ -4622,8 +4611,9 @@

      Integration with harmony

      fastMNN vs. harmony performed in integrating these samples?

    -
    -

    Export

    +
    +
    +

    Export

    Finally, we’ll export the final SCE object with both fastMNN and harmony integration to a file. Since this object is very large (over 1 GB!), we’ll export it to a file @@ -4632,16 +4622,17 @@

    Export

    compression is performed.

    - +
    # Export to RDS file with "gz" compression
    -readr::write_rds(merged_sce,
    -                 integrated_sce_file,
    -                 compress = "gz")
    +readr::write_rds( + merged_sce, + integrated_sce_file, + compress = "gz" +)
    -
    -
    LS0tCnRpdGxlOiAiSW50ZWdyYXRpbmcgc2NSTkEtc2VxIGRhdGFzZXRzIgphdXRob3I6IERhdGEgTGFiIGZvciBBTFNGCmRhdGU6IDIwMjMKb3V0cHV0OgogIGh0bWxfbm90ZWJvb2s6CiAgICB0b2M6IHRydWUKICAgIHRvY19kZXB0aDogMwogICAgdG9jX2Zsb2F0OiB0cnVlCi0tLQoKIyMgT2JqZWN0aXZlcwoKVGhpcyBub3RlYm9vayB3aWxsIGRlbW9uc3RyYXRlIGhvdyB0bzoKCi0gUHJlcGFyZSBTQ0Ugb2JqZWN0cyBmb3IgaW50ZWdyYXRpb24KLSBBcHBseSBpbnRlZ3JhdGlvbiBtZXRob2RzIGluY2x1ZGluZyBgZmFzdE1OTmAgYW5kIGBoYXJtb255YAotIFZpc3VhbGx5IGV4cGxvcmUgdGhlIHJlc3VsdHMgb2YgaW50ZWdyYXRpb24KLSBVc2UgYHB1cnJyOjptYXAoKWAgZnVuY3Rpb25zIGZvciBpdGVyYXRpbmcgb3ZlciBsaXN0cwoKLS0tCgpJbiB0aGlzIG5vdGVib29rLCB3ZSdsbCBwZXJmb3JtIGludGVncmF0aW9uIG9uIHNjUk5BLXNlcSBkYXRhc2V0cyBmcm9tIHRoZSBbU2luZ2xlLWNlbGwgUGVkaWF0cmljIENhbmNlciBBdGxhcyAoYFNjUENBYCldKGh0dHBzOi8vc2NwY2EuYWxleHNsZW1vbmFkZS5vcmcvKSwgYSBkYXRhYmFzZSBvZiB1bmlmb3JtbHktcHJvY2Vzc2VkIHBlZGlhdHJpYyBzY1JOQS1zZXEgZGF0YSBidWlsdCBhbmQgbWFpbnRhaW5lZCBieSB0aGUgRGF0YSBMYWIuClRoZSBgU2NQQ0FgIGRhdGFiYXNlIGN1cnJlbnRseSBob3N0cyBzaW5nbGUtY2VsbCBwZWRpYXRyaWMgY2FuY2VyIHRyYW5zY3JpcHRvbWljIGRhdGEgZ2VuZXJhdGVkIGJ5IEFMU0YtZnVuZGVkIGxhYnMsIHdpdGggdGhlIGdvYWwgb2YgbWFraW5nIHRoaXMgZGF0YSBlYXNpbHkgYWNjZXNzaWJsZSB0byBpbnZlc3RpZ2F0b3JzIChsaWtlIHlvdSEpLgpUaGUgZXhwcmVzc2lvbiBkYXRhIGluIGBTY1BDQWAgd2VyZSBtYXBwaW5nIGFuZCBxdWFudGlmaWVkIHdpdGggW2BhbGV2aW4tZnJ5YF0oaHR0cHM6Ly9kb2kub3JnLzEwLjEwMzgvczQxNTkyLTAyMi0wMTQwOC0zKSwgZm9sbG93ZWQgYnkgcHJvY2Vzc2luZyB3aXRoIEJpb2NvbmR1Y3RvciB0b29scyB1c2luZyB0aGUgc2FtZSBnZW5lcmFsIHByb2NlZHVyZXMgdGhhdCB3ZSBoYXZlIGNvdmVyZWQgaW4gdGhpcyB3b3Jrc2hvcC4KVGhlIHByb2Nlc3NpbmcgcGlwZWxpbmUgdXNlZCBgZW1wdHlEcm9wc0NlbGxSYW5nZXIoKWAgYW5kIGBtaVFDYCB0byBmaWx0ZXIgdGhlIHJhdyBjb3VudHMgbWF0cml4LCBgc2N1dHRsZWAgdG8gbG9nLW5vcm1hbGl6ZSB0aGUgY291bnRzLCBhbmQgYHNjYXRlcmAgZm9yIGRpbWVuc2lvbiByZWR1Y3Rpb24uClRoZSBwcm9jZXNzZWQgZGF0YSBhcmUgc3RvcmVkIGFzIGAucmRzYCBmaWxlcyBjb250YWluaW5nIGBTaW5nbGVDZWxsRXhwZXJpbWVudGAgb2JqZWN0cy4KWW91IGNhbiByZWFkIG1vcmUgYWJvdXQgaG93IGRhdGEgaW4gdGhlIGBTY1BDQWAgaXMgcHJvY2Vzc2VkIGluIFt0aGUgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uXShodHRwczovL3NjcGNhLnJlYWR0aGVkb2NzLmlvL2VuL2xhdGVzdC8pLgoKCiFbU2luZ2xlLWNlbGwgcm9hZG1hcDogSW50ZWdyYXRpb24gT3ZlcnZpZXddKGRpYWdyYW1zL3JvYWRtYXBfbXVsdGlfbWVyZ2UtaW50ZWdyYXRlLnBuZykKClRvIGxlYXJuIGFib3V0IGludGVncmF0aW9uLCB3ZSdsbCBoYXZlIGEgbG9vayBhdCBmb3VyIHNhbXBsZXMgZnJvbSB0aGUgW2BTQ1BDUDAwMDAwNWAgcHJvamVjdF0oaHR0cHM6Ly9zY3BjYS5hbGV4c2xlbW9uYWRlLm9yZy9wcm9qZWN0cy9TQ1BDUDAwMDAwNSkgKFtQYXRlbCBfZXQgYWwuXyAyMDIyXShodHRwczovL2RvaS5vcmcvMTAuMTAxNi9qLmRldmNlbC4yMDIyLjA0LjAwMykpLCBhbiBpbnZlc3RpZ2F0aW9uIG9mIHBlZGlhdHJpYyBzb2xpZCB0dW1vcnMgbGVkIGJ5IHRoZSBbRHllcl0oaHR0cHM6Ly93d3cuc3RqdWRlLm9yZy9yZXNlYXJjaC9sYWJzL2R5ZXItbGFiLmh0bWwpIGFuZCBbQ2hlbl0oaHR0cHM6Ly93d3cuc3RqdWRlLm9yZy9yZXNlYXJjaC9sYWJzL2NoZW4tbGFiLXRhb3NoZW5nLmh0bWwpIGxhYnMgYXQgU3QuIEp1ZGUgQ2hpbGRyZW4ncyBSZXNlYXJjaCBIb3NwaXRhbC4KVGhlIHBhcnRpY3VsYXIgbGlicmFyaWVzIHdlJ2xsIGludGVncmF0ZSBjb21lIGZyb20gdHdvIHJoYWJkb215b3NhcmNvbWEgKFJNUykgcGF0aWVudHMsIHdpdGggdHdvIHNhbXBsZXMgZnJvbSBlYWNoIG9mIHR3byBwYXRpZW50cywgYWxsIHNlcXVlbmNlZCB3aXRoIDEweCBDaHJvbWl1bSB2MyB0ZWNobm9sb2d5LgpFYWNoIGxpYnJhcnkgaXMgZnJvbSBhIHNlcGFyYXRlIGJpb2xvZ2ljYWwgc2FtcGxlLgoKV2UnbGwgYmUgaW50ZWdyYXRpbmcgdGhlc2Ugc2FtcGxlcyB3aXRoIHR3byBkaWZmZXJlbnQgdG9vbHMsIFtgZmFzdE1OTmBdKGh0dHA6Ly93d3cuYmlvY29uZHVjdG9yLm9yZy9wYWNrYWdlcy9yZWxlYXNlL2Jpb2MvaHRtbC9iYXRjaGVsb3IuaHRtbCkgKFtIYWdodmVyZGkgX2V0IGFsLl8gMjAxOF0oaHR0cHM6Ly9kb2kub3JnLzEwLjEwMzgvbmJ0LjQwOTEpKSBhbmQgW2BoYXJtb255YF0oaHR0cHM6Ly9wb3J0YWxzLmJyb2FkaW5zdGl0dXRlLm9yZy9oYXJtb255LykgKFtLb3JzdW5za3kgX2V0IGFsLl8gMjAxOV0oaHR0cHM6Ly9kb2kub3JnLzEwLjEwMzgvczQxNTkyLTAxOS0wNjE5LTApKS4KSW50ZWdyYXRpb24gY29ycmVjdHMgZm9yIGJhdGNoIGVmZmVjdHMgdGhhdCBhcmlzZSBmcm9tIGRpZmZlcmVudCBsaWJyYXJ5IHByZXBhcmF0aW9ucywgZ2VuZXRpYyBiYWNrZ3JvdW5kcywgYW5kIG90aGVyIHNhbXBsZS1zcGVjaWZpYyBmYWN0b3JzLCBzbyB0aGF0IGRhdGFzZXRzIGNhbiBiZSBqb2ludGx5IGFuYWx5emVkIGF0IHRoZSBjZWxsIGxldmVsLgpgZmFzdE1OTmAgY29ycmVjdHMgZm9yIGJhdGNoIGVmZmVjdHMgdXNpbmcgYSBmYXN0ZXIgdmFyaWFudCBvZiB0aGUgbXV0dWFsLW5lYXJlc3QgbmVpZ2hib3JzIGFsZ29yaXRobSwgdGhlIHRlY2huaWNhbCBkZXRhaWxzIG9mIHdoaWNoIHlvdSBjYW4gbGVhcm4gbW9yZSBhYm91dCBmcm9tIHRoaXMgW3ZpZ25ldHRlIGJ5IEx1biAoMjAxOSldKGh0dHBzOi8vbWFyaW9uaWxhYi5naXRodWIuaW8vRnVydGhlck1OTjIwMTgvdGhlb3J5L2Rlc2NyaXB0aW9uLmh0bWwpLgpgaGFybW9ueWAsIG9uIHRoZSBvdGhlciBoYW5kLCBjb3JyZWN0cyBmb3IgYmF0Y2ggZWZmZWN0cyB1c2luZyBhbiBpdGVyYXRpdmUgY2x1c3RlcmluZyBhcHByb2FjaCwgYW5kIHVubGlrZSBgZmFzdE1OTmAsIGl0IGlzIGFsc28gYWJsZSB0byBjb25zaWRlciBhZGRpdGlvbmFsIGNvdmFyaWF0ZXMgYmV5b25kIGp1c3QgdGhlIGJhdGNoIGdyb3VwaW5ncy4KClJlZ2FyZGxlc3Mgb2Ygd2hpY2ggaW50ZWdyYXRpb24gdG9vbCBpcyB1c2VkLCB0aGUgYFNpbmdsZUNlbGxFeHBlcmltZW50YCAoU0NFKSBvYmplY3RzIGZpcnN0IG5lZWQgdG8gYmUgcmVmb3JtYXR0ZWQgYW5kIG1lcmdlZCBpbnRvIGEgc2luZ2xlICh1bmNvcnJlY3RlZCEpIFNDRSBvYmplY3QgdGhhdCBjb250YWlucyBhbGwgY2VsbHMgZnJvbSBhbGwgc2FtcGxlcy4KVGhpcyBtZXJnZWQgU0NFIGNhbiB0aGVuIGJlIHVzZWQgZm9yIGludGVncmF0aW9uIHRvIG9idGFpbiBhIGZvcm1hbGx5IGJhdGNoLWNvcnJlY3RlZCBTQ0Ugb2JqZWN0LgoKCiMjIFNldCB1cAoKYGBge3Igc2V0dXB9CiMgTG9hZCBsaWJyYXJpZXMKbGlicmFyeShnZ3Bsb3QyKSAgIyBwbG90dGluZyB0b29scwpsaWJyYXJ5KFNpbmdsZUNlbGxFeHBlcmltZW50KSAjIHdvcmsgd2l0aCBTQ0Ugb2JqZWN0cwoKIyBTZXQgdGhlIHNlZWQgZm9yIHJlcHJvZHVjaWJpbGl0eQpzZXQuc2VlZCgxMjM0NSkKYGBgCgoKIyMjIERpcmVjdG9yaWVzIGFuZCBmaWxlcwoKCldlIGhhdmUgYWxyZWFkeSBwcmVwYXJlZCBjb3VudCBkYXRhIGZvciB0aGUgZm91ciBzYW1wbGVzIHdlJ2xsIGJlIGludGVncmF0aW5nIChpLmUuLCBmaWx0ZXJlZCBjZWxscywgbm9ybWFsaXplZCBjb3VudHMsIGFuZCBjYWxjdWxhdGVkIFBDQSAmIFVNQVApLgpUaGVzZSBTQ0Ugb2JqZWN0cywgc3RvcmVkIGFzIFJEUyBmaWxlcywgYXJlIGF2YWlsYWJsZSBpbiB0aGUgYGRhdGEvcm1zL3Byb2Nlc3NlZC9gIGRpcmVjdG9yeSBhbmQgYXJlIG5hbWVkIGFjY29yZGluZyB0byB0aGVpciBgU2NQQ0FgIGxpYnJhcnkgaWRzIDoKCi0gYFNDUENMMDAwNDc5LnJkc2AgKFBhdGllbnQgQSkKLSBgU0NQQ0wwMDA0ODAucmRzYCAoUGF0aWVudCBBKQotIGBTQ1BDTDAwMDQ4MS5yZHNgIChQYXRpZW50IEIpCi0gYFNDUENMMDAwNDgyLnJkc2AgKFBhdGllbnQgQikKClRvIGJlZ2luLCBsZXQncyBzZXQgdXAgb3VyIGRpcmVjdG9yaWVzIGFuZCBmaWxlczoKCmBgYHtyIGRpcmVjdG9yaWVzLCBsaXZlID0gVFJVRX0KIyBEZWZpbmUgZGlyZWN0b3J5IHdoZXJlIHByb2Nlc3NlZCBTQ0Ugb2JqZWN0cyB0byBiZSBpbnRlZ3JhdGVkIGFyZSBzdG9yZWQKaW5wdXRfZGlyIDwtIGZpbGUucGF0aCgiZGF0YSIsICJybXMiLCAicHJvY2Vzc2VkIikKCiMgRGVmaW5lIGRpcmVjdG9yeSB0byBzYXZlIGludGVncmF0ZWQgU0NFIG9iamVjdCB0bwpvdXRwdXRfZGlyIDwtIGZpbGUucGF0aCgiZGF0YSIsICJybXMiLCAiaW50ZWdyYXRlZCIpCgojIENyZWF0ZSBvdXRwdXQgZGlyZWN0b3J5IGlmIGl0IGRvZXNuJ3QgZXhpc3QKZnM6OmRpcl9jcmVhdGUob3V0cHV0X2RpcikKCiMgRGVmaW5lIG91dHB1dCBmaWxlIG5hbWUgZm9yIHRoZSBpbnRlZ3JhdGVkIG9iamVjdAppbnRlZ3JhdGVkX3NjZV9maWxlIDwtIGZpbGUucGF0aChvdXRwdXRfZGlyLCAicm1zX2ludGVncmF0ZWRfc3Vic2V0LnJkcyIpCmBgYAoKCldlIGNhbiB1c2UgdGhlIGBkaXIoKWAgZnVuY3Rpb24gdG8gbGlzdCBhbGwgY29udGVudHMgb2YgYSBnaXZlbiBkaXJlY3RvcnksIGZvciBleGFtcGxlIHRvIHNlZSBhbGwgdGhlIGZpbGVzIGluIG91ciBgaW5wdXRfZGlyYDoKCmBgYHtyIGlucHV0IGRpciwgbGl2ZSA9IFRSVUV9CmRpcihpbnB1dF9kaXIpCmBgYAoKV2Ugd2FudCB0byByZWFkIGluIGp1c3QgZm91ciBvZiB0aGVzZSBmaWxlcywgYXMgbGlzdGVkIHByZXZpb3VzbHkuClRvIHJlYWQgaW4gdGhlc2UgZmlsZXMsIHdlIGNvdWxkIHVzZSB0aGUgYHJlYWRyOjpyZWFkX3JkcygpYCBmdW5jdGlvbiAob3IgdGhlIGJhc2UgUiBgcmVhZFJEUygpYCkgZm91ciB0aW1lcywgb25jZSBmb3IgZWFjaCBvZiB0aGUgZmlsZXMuCldlIGNvdWxkIGFsc28gdXNlIGEgYGZvcmAgbG9vcCwgd2hpY2ggaXMgdGhlIGFwcHJvYWNoIHRoYXQgbWFueSBwcm9ncmFtbWluZyBsYW5ndWFnZXMgd291bGQgbGVhbiB0b3dhcmQuCkEgZGlmZmVyZW50IGFuZCBtb3JlIG1vZHVsYXIgY29kaW5nIGFwcHJvYWNoIHRvIHJlYWRpbmcgaW4gdGhlc2UgZmlsZXMgKGFuZCBtb3JlISkgaXMgdG8gbGV2ZXJhZ2UgdGhlIFtgcHVycnJgXShodHRwczovL3B1cnJyLnRpZHl2ZXJzZS5vcmcvKSBgdGlkeXZlcnNlYCBwYWNrYWdlLCB3aGljaCBwcm92aWRlcyBhIGNvbnZlbmllbnQgc2V0IG9mIGZ1bmN0aW9ucyBmb3Igb3BlcmF0aW5nIG9uIGxpc3RzLgpZb3UgY2FuIHJlYWQgbW9yZSBhYm91dCB0aGUgYHB1cnJyYCBmdW5jdGlvbnMgYW5kIHRoZWlyIHBvd2VyIGFuZCB1dGlsaXR5IGluIFIgaW4gW3RoZSAiRnVuY3Rpb25hbHMiIGNoYXB0ZXIgb2YgdGhlIF9BZHZhbmNlZCBSXyBlLWJvb2tdKGh0dHBzOi8vYWR2LXIuaGFkbGV5Lm56L2Z1bmN0aW9uYWxzLmh0bWwpLgoKT2YgcGFydGljdWxhciBpbnRlcmVzdCBpcyB0aGUgW2BwdXJycjo6bWFwKClgXShodHRwczovL3B1cnJyLnRpZHl2ZXJzZS5vcmcvcmVmZXJlbmNlL21hcC5odG1sKSBmYW1pbHkgb2YgZnVuY3Rpb25zLCB3aGljaCBjYW4gYmUgdXNlZCB0byBydW4gYSBnaXZlbiBmdW5jdGlvbiBvbiBlYWNoIGVsZW1lbnQgb2YgYSBsaXN0IChvciB2ZWN0b3IpIGluIG9uZSBjYWxsLgpUaGUgZ2VuZXJhbCBzeW50YXggZm9yIGBwdXJycjo6bWFwKClgIGFuZCBmcmllbmRzIGlzOgoKYGBgCiMgU3ludGF4IGZvciB1c2luZyB0aGUgbWFwIGZ1bmN0aW9uOgpwdXJycjo6bWFwKDxpbnB1dCBsaXN0IG9yIHZlY3Rvcj4sCiAgICAgICAgICAgPGZ1bmN0aW9uIHRvIGFwcGx5IHRvIGVhY2ggaXRlbSBpbiB0aGUgaW5wdXQ+LAogICAgICAgICAgIDxhbnkgYWRkaXRpb25hbCBhcmd1bWVudHMgdG8gdGhlIGZ1bmN0aW9uIGNhbiBnbyBoZXJlPiwKICAgICAgICAgICA8YW5kIGFsc28gaGVyZSBpZiB0aGVyZSBhcmUgZXZlbiBtb3JlIGFyZ3VtZW50cywgYW5kIHNvIG9uPikKYGBgCgoKVGhlIG91dHB1dCBmcm9tIHJ1bm5pbmcgYHB1cnJyOjptYXAoKWAgaXMgYWx3YXlzIGEgbGlzdCAoYnV0IG5vdGUgdGhhdCB0aGVyZSBhcmUgb3RoZXIgYHB1cnJyOjptYXAoKWAgcmVsYXRpdmVzIHdoaWNoIHJldHVybiBvdGhlciBvYmplY3QgdHlwZXMsIGFzIHlvdSBjYW4gcmVhZCBhYm91dCBpbiBbdGhlIGBwdXJycjo6bWFwKClgIGRvY3VtZW50YXRpb25dKGh0dHBzOi8vcHVycnIudGlkeXZlcnNlLm9yZy9yZWZlcmVuY2UvaW5kZXguaHRtbCkpLgpJZiB0aGlzIGNvbmNlcHQgc291bmRzIGEgbGl0dGxlIGZhbWlsaWFyIHRvIHlvdSwgdGhhdCdzIGJlY2F1c2UgaXQgcHJvYmFibHkgaXMhCkJhc2UgUidzIGBsYXBwbHkoKWAgZnVuY3Rpb24gY2FuIHByb3ZpZGUgc2ltaWxhciB1dGlsaXR5LCBhbmQgdGhlIGBwdXJycjo6bWFwKClgIGZhbWlseSBvZiBmdW5jdGlvbnMgY2FuIChpbiBwYXJ0KSBiZSB0aG91Z2h0IG9mIGFzIGFuIGFsdGVybmF0aXZlIHRvIHNvbWUgb2YgdGhlIGJhc2UgUiBgYXBwbHlgIGZ1bmN0aW9ucywgd2l0aCBtb3JlIGNvbnNpc3RlbnQgYmVoYXZpb3IuCgpMZXQncyBzZWUgYSB2ZXJ5IHNpbXBsZSBleGFtcGxlIG9mIGBwdXJycjo6bWFwKClgIGluIGFjdGlvbiwgaW5zcGlyZWQgYnkgY2FuY2VyIGdyb3VwcyB0aGUgRGF0YSBMYWIgaGFzIGFuYWx5emVkIHRocm91Z2ggdGhlIFtPcGVuUEJUQV0oaHR0cHM6Ly9naXRodWIuY29tL0FsZXhzTGVtb25hZGUvT3BlblBCVEEtYW5hbHlzaXMvKSBwcm9qZWN0OgoKYGBge3IgbWFwIGV4YW1wbGV9CiMgRGVmaW5lIGEgbGlzdCBvZiBjYW5jZXIgaGlzdG9sb2dpZXMKaGlzdG9sb2dpZXMgPC0gbGlzdCgKICAibG93LWdyYWRlIGdsaW9tYXMiICA9IGMoIlNFR0EiLCAiUEEiLCAiR05HIiwgIlBYQSIpLAogICJoaWdoLWdyYWRlIGdsaW9tYXMiID0gYygiRE1HIiwgIkRJUEciKSwKICAiZW1icnlvbmFsIHR1bW9ycyIgICA9IGMoIk1CIiwgIkFUUlQiLCAiRVRNUiIpCiApCgojIFRoZSBvdmVyYWxsIGxlbmd0aCBvZiB0aGUgbGlzdCBpcyAzCmxlbmd0aChoaXN0b2xvZ2llcykKCiMgSG93IGNhbiB3ZSBydW4gYGxlbmd0aCgpYCBvbiBlYWNoIGl0ZW0gb2YgdGhlIGxpc3Q/CiMgV2UgY2FuIHVzZSBvdXIgbmV3IGZyaWVuZCBwdXJycjo6bWFwKCk6CnB1cnJyOjptYXAoaGlzdG9sb2dpZXMsIGxlbmd0aCkKYGBgCgpPbmUgb3RoZXIgbmV3IGNvZGluZyBzdHJhdGVneSB3ZSdsbCBsZWFybiBpbiB0aGlzIG5vdGVib29rIGlzIHVzaW5nIHRoZSBbYGdsdWVgXShodHRwczovL2dsdWUudGlkeXZlcnNlLm9yZy8pIHBhY2thZ2UgdG8gY29tYmluZSBzdHJpbmdzLgpUaGlzIHBhY2thZ2Ugb2ZmZXJzIGEgY29udmVuaWVudCBmdW5jdGlvbiBgZ2x1ZTo6Z2x1ZSgpYCB0aGF0IGNhbiBiZSB1c2VkIGluc3RlYWQgb2YgdGhlIGJhc2UgUiBgcGFzdGUoKWAgZnVuY3Rpb24uCgpgYGB7ciBwYXN0ZX0KIyBEZWZpbmUgYSB2YXJpYWJsZSBmb3IgZXhhbXBsZToKb3JnX25hbWUgPC0gIkRhdGEgTGFiIgoKIyBXZSBjYW4gdXNlIHBhc3RlIHRvIGNvbWJpbmUgc3RyaW5ncyBhbmQgdmFyaWFibGVzOgpwYXN0ZSgiV2VsY29tZSB0byB0aGUiLCBvcmdfbmFtZSwgIndvcmtzaG9wIG9uIEFkdmFuY2VkIHNjUk5BLXNlcSEiKQpgYGAKCldlIGNhbiB1c2UgYGdsdWU6OmdsdWUoKWAgdG8gYWNjb21wbGlzaCB0aGUgc2FtZSBnb2FsIHdpdGggc29tZSBkaWZmZXJlbnQgc3ludGF4OgoKYGBge3IgZ2x1ZX0KIyBnbHVlOjpnbHVlIHRha2VzIGEgc2luZ2xlIHN0cmluZyBhcmd1bWVudCAob25seSBvbmUgc2V0IG9mIHF1b3RlcyEpLCBhbmQKIyAgdmFyaWFibGVzIGNhbiBlYXNpbHkgYmUgaW5jbHVkZWQgaW5zaWRlIHtjdXJseSBicmFjZXN9CmdsdWU6OmdsdWUoIldlbGNvbWUgdG8gdGhlIHtvcmdfbmFtZX0gd29ya3Nob3Agb24gQWR2YW5jZWQgc2NSTkEtc2VxISIpCmBgYAoKKE5vdGUgdGhhdCBldmVuIHRob3VnaCB0aGUgYGdsdWU6OmdsdWUoKWAgb3V0cHV0IGlzbid0IGluIHF1b3RlcywgaXQgc3RpbGwgYmVoYXZlcyBsaWtlIGEgc3RyaW5nISkKCgpBbHJpZ2h0LCB0aW1lIGZvciB0aGUgZ29vZCBzdHVmZiEKTGV0J3MgdXNlIGBwdXJycjo6bWFwKClgIHRvIHJlYWQgaW4gb3VyIFNDRSBvYmplY3RzIHNvIHRoYXQgdGhleSBhcmUgaW1tZWRpYXRlbHkgc3RvcmVkIHRvZ2V0aGVyIGluIGEgbGlzdC4KCgpXZSdsbCBmaXJzdCBuZWVkIHRvIGRlZmluZSBhIHZlY3RvciBvZiB0aGUgZmlsZSBwYXRocyB0byByZWFkIGluLgpXZSdsbCBzdGFydCBieSBjcmVhdGluZyBhIHZlY3RvciBvZiBzYW1wbGUgbmFtZXMgdGhlbXNlbHZlcyBhbmQgdGhlbiBmb3JtYXR0aW5nIHRoZW0gaW50byB0aGUgY29ycmVjdCBwYXRocy4KVGhpcyB3YXkgKGZvcmVzaGFkb3dpbmchKSB3ZSBhbHNvIGhhdmUgYSBzdGFuZC1hbG9uZSB2ZWN0b3Igb2YganVzdCBzYW1wbGUgbmFtZXMsIHdoaWNoIHdpbGwgY29tZSBpbiBoYW5keSEKCmBgYHtyIHNhbXBsZSBuYW1lc30KIyBWZWN0b3Igb2YgYWxsIHRoZSBzYW1wbGVzIHRvIHJlYWQgaW46CnNhbXBsZV9uYW1lcyA8LSBjKCJTQ1BDTDAwMDQ3OSIsCiAgICAgICAgICAgICAgICAgICJTQ1BDTDAwMDQ4MCIsCiAgICAgICAgICAgICAgICAgICJTQ1BDTDAwMDQ4MSIsCiAgICAgICAgICAgICAgICAgICJTQ1BDTDAwMDQ4MiIpCmBgYAoKCmBgYHtyIGRlZmluZSBzY2VfcGF0aHMsIGxpdmUgPSBUUlVFfQojIE5vdywgY29udmVydCB0aGVzZSB0byBmaWxlIHBhdGhzOiA8aW5wdXRfZGlyPi88c2FtcGxlX25hbWU+LnJkcwpzY2VfcGF0aHMgPC0gZmlsZS5wYXRoKGlucHV0X2RpciwKICAgICAgICAgICAgICAgICAgICAgICBnbHVlOjpnbHVlKCJ7c2FtcGxlX25hbWVzfS5yZHMiKQopCiMgUHJpbnQgdGhlIHNjZV9wYXRocyB2ZWN0b3IKc2NlX3BhdGhzCmBgYAoKTGV0J3MgbWFrZSB0aGlzIGEgbmFtZWQgdmVjdG9yIHVzaW5nIHRoZSBzYW1wbGUgbmFtZXMuClRoaXMgd2lsbCBoZWxwIHVzIGtlZXAgdHJhY2sgb2Ygd2hpY2ggb2JqZWN0cyBhcmUgd2hpY2ggYWZ0ZXIgd2UgcmVhZCB0aGUgU0NFIG9iamVjdHMgaW46CgpgYGB7ciBhZGQgbGlzdCBuYW1lcywgbGl2ZSA9IFRSVUV9CiMgQXNzaWduIHRoZSBzYW1wbGUgbmFtZXMgYXMgdGhlIG5hbWVzIGZvciBzY2VfcGF0aHMKbmFtZXMoc2NlX3BhdGhzKSA8LSBzYW1wbGVfbmFtZXMKYGBgCgpXZSBjYW4gbm93IHJlYWQgdGhlc2UgZmlsZXMgaW4gYW5kIGNyZWF0ZSBhIGxpc3Qgb2YgZm91ciBTQ0Ugb2JqZWN0cy4gClNpbmNlIGByZWFkcjo6cmVhZF9yZHMoKWAgY2FuIG9ubHkgb3BlcmF0ZSBvbiBvbmUgaW5wdXQgYXQgYSB0aW1lLCB3ZSdsbCBuZWVkIHRvIHVzZSBgcHVycnI6Om1hcCgpYCB0byBydW4gaXQgb24gYWxsIGlucHV0IGZpbGUgcGF0aHMgaW4gb25lIGNvbW1hbmQuCkFsdGhvdWdoIGBzY2VfcGF0aHNgIGlzIGEgdmVjdG9yIChub3QgYSBsaXN0KSwgaXQgd2lsbCBzdGlsbCB3b3JrIGFzIGlucHV0IHRvIGBwdXJycjptYXAoKWAuClRoZSBvdXRwdXQgZnJvbSB0aGlzIGNvZGUgd2lsbCBzdGlsbCBiZSBhIGxpc3QsIHNpbmNlIHRoYXQncyB3aGF0IGBwdXJycjo6bWFwKClgIGFsd2F5cyByZXR1cm5zLCBhbmQgaXQgd2lsbCByZXRhaW4gdGhlIHNhbXBsZSBuYW1lcyBhcyB0aGUgbGlzdCBuYW1lcyBmb3IgY29udmVuaWVudCBib29ra2VlcGluZzoKCmBgYHtyIHJlYWQgc2NlIHBhdGhzLCBsaXZlID0gVFJVRX0KIyBVc2UgcHVycnI6Om1hcCgpIHRvIHJlYWQgYWxsIGZpbGVzIGludG8gYSBsaXN0IGF0IG9uY2UKc2NlX2xpc3QgPC0gcHVycnI6Om1hcCgKICBzY2VfcGF0aHMsCiAgcmVhZHI6OnJlYWRfcmRzCikKYGBgCgpMZXQncyBoYXZlIGEgbG9vayBhdCBvdXIgbmFtZWQgbGlzdCBvZiBTQ0Ugb2JqZWN0czoKCmBgYHtyIHByaW50IHNjZSBsaXN0LCBsaXZlPVRSVUV9CiMgUHJpbnQgc2NlX2xpc3QKc2NlX2xpc3QKYGBgCgpJZiB5b3UgbG9vayBjbG9zZWx5IGF0IHRoZSBwcmludGVkIFNDRSBvYmplY3RzLCB5b3UgbWF5IG5vdGljZSB0aGF0IHRoZXkgYWxsIGNvbnRhaW4gYGNvbERhdGFgIHRhYmxlIGNvbHVtbnMgYGNlbGx0eXBlX2ZpbmVgIGFuZCBgY2VsbHR5cGVfYnJvYWRgLgpUaGVzZSBjb2x1bW5zICh3aGljaCB3ZSBhZGRlZCB0byBTQ0Ugb2JqZWN0cyBkdXJpbmcgW3ByZS1wcm9jZXNzaW5nXShodHRwczovL2dpdGh1Yi5jb20vQWxleHNMZW1vbmFkZS90cmFpbmluZy1tb2R1bGVzL3RyZWUvbWFzdGVyL3NjUk5BLXNlcS1hZHZhbmNlZC9zZXR1cC9ybXMpKSBjb250YWluIHB1dGF0aXZlIGNlbGwgdHlwZSBhbm5vdGF0aW9ucyBhcyBhc3NpZ25lZCBieSBbUGF0ZWwgX2V0IGFsLl8gKDIwMjIpXShodHRwczovL2RvaS5vcmcvMTAuMTAxNi9qLmRldmNlbC4yMDIyLjA0LjAwMyk6CgoKPiBGb3IgZWFjaCBjZWxsIHN1YnNldCBpZGVudGlmaWVkIGJ5IGNsdXN0ZXJpbmcsIHdlIHVzZWQgYSBjb21iaW5hdGlvbiBvZiBgU2luZ2xlUmAgdmVyc2lvbiAxLjAuMSAoW0FyYW4gZXQgYWwuLCAyMDE5XShodHRwczovL3d3dy5uYXR1cmUuY29tL2FydGljbGVzL3M0MTU5MC0wMTgtMDI3Ni15KSkgYW5kIG1hbnVhbCBpbnNwZWN0aW9uIG9mIGRpZmZlcmVudGlhbGx5IGV4cHJlc3NlZCBnZW5lcyB0byBhbm5vdGF0ZSB3aGV0aGVyIGEgY2x1c3RlciBiZWxvbmdzIHRvIHN0cm9tYWwsIGltbXVuZSBvciBtYWxpZ25hbnQgc3VicG9wdWxhdGlvbnMuIApNYWxpZ25hbnQgY2VsbHMgd2VyZSBjb25maXJtZWQgaW4gcGF0aWVudCB0dW1vciBkYXRhIGJ5IGluZmVyZW5jZSBvZiBjb3B5LW51bWJlciB2YXJpYXRpb24gdXNpbmcgYGluZmVyQ05WYCB2ZXJzaW9uIDEuMS4zIG9mIHRoZSBUcmluaXR5Q1RBVCBQcm9qZWN0IChodHRwczovL2dpdGh1Yi5jb20vYnJvYWRpbnN0aXR1dGUvaW5mZXJjbnYpLiAKCldlIHdpbGwgZW5kIHVwIGxldmVyYWdpbmcgdGhlc2UgY2VsbCB0eXBlIGFubm90YXRpb25zIHRvIGV4cGxvcmUgdGhlIGludGVncmF0aW9uIHJlc3VsdHM7IGFmdGVyIGludGVncmF0aW9uLCB3ZSBleHBlY3QgY2VsbCB0eXBlcyBmcm9tIGRpZmZlcmVudCBzYW1wbGVzIHRvIGdyb3VwIHRvZ2V0aGVyLCByYXRoZXIgdGhhbiBiZWluZyBzZXBhcmF0ZWQgYnkgYmF0Y2hlcy4gCgpUaGF0IHNhaWQsIHRoZSBpbnRlZ3JhdGlvbiBtZXRob2RzIHdlIHdpbGwgYmUgYXBwbHlpbmcgX2RvIG5vdCBhY3R1YWxseSB1c2VfIGFueSBleGlzdGluZyBjZWxsIHR5cGUgYW5ub3RhdGlvbnMuCklmIHdlIGhhdmUgYW5ub3RhdGlvbnMsIHRoZXkgYXJlIGEgaGVscGZ1bCAiYm9udXMiIGZvciBhc3Nlc3NpbmcgdGhlIGludGVncmF0aW9uJ3MgcGVyZm9ybWFuY2UsIGJ1dCB0aGV5IGFyZSBub3QgcGFydCBvZiB0aGUgaW50ZWdyYXRpb24gaXRzZWxmLgoKCiMjIFByZXBhcmUgdGhlIFNDRSBsaXN0IGZvciBpbnRlZ3JhdGlvbgoKIVtTaW5nbGUtY2VsbCByb2FkbWFwOiBNZXJnZV0oZGlhZ3JhbXMvcm9hZG1hcF9tdWx0aV9tZXJnZS5wbmcpCgoKTm93IHRoYXQgd2UgaGF2ZSBhIGxpc3Qgb2YgcHJvY2Vzc2VkIFNDRSBvYmplY3RzLCB3ZSBuZWVkIHRvIG1lcmdlIHRoZSBvYmplY3RzIGludG8gb25lIG92ZXJhbGwgU0NFIG9iamVjdCBmb3IgaW5wdXQgdG8gaW50ZWdyYXRpb24uCkEgd29yZCBvZiBjYXV0aW9uIGJlZm9yZSB3ZSBiZWdpbjogKipUaGlzIG1lcmdlZCBTQ0Ugb2JqZWN0IGlzIE5PVCBhbiBpbnRlZ3JhdGVkIFNDRSEqKgpNZXJnaW5nIFNDRXMgZG9lcyBub3QgcGVyZm9ybSBhbnkgYmF0Y2ggY29ycmVjdGlvbiwgYnV0IGp1c3QgcmVvcmdhbml6ZXMgdGhlIGRhdGEgdG8gYWxsb3cgdXMgdG8gcHJvY2VlZCB0byBpbnRlZ3JhdGlvbiBuZXh0LgoKVG8gbWVyZ2UgU0NFIG9iamVjdHMsIHdlIGRvIG5lZWQgdG8gZG8gc29tZSB3cmFuZ2xpbmcgYW5kIGJvb2trZWVwaW5nIHRvIGVuc3VyZSBjb21wYXRpYmlsaXR5IGFuZCB0aGF0IHdlIGRvbid0IGxvc2UgaW1wb3J0YW50IGluZm9ybWF0aW9uLgpPdmVyYWxsIHdlJ2xsIHdhbnQgdG8gdGFrZSBjYXJlIG9mIHRoZXNlIGl0ZW1zOgoKMS4gV2Ugc2hvdWxkIGJlIGFibGUgdG8gdHJhY2Ugc2FtcGxlLXNwZWNpZmljIGluZm9ybWF0aW9uIGJhY2sgdG8gdGhlIG9yaWdpbmF0aW5nIHNhbXBsZSwgaW5jbHVkaW5nLi4uCiAgICAtIENlbGwtbGV2ZWwgaW5mb3JtYXRpb246IFdoaWNoIHNhbXBsZSBpcyBlYWNoIGNlbGwgZnJvbT8KICAgIC0gTGlicmFyeS1zcGVjaWZpYyBmZWF0dXJlIHN0YXRpc3RpY3MsIGUuZy4sIGdlbmUtbGV2ZWwgc3RhdGlzdGljcyBmb3IgYSBnaXZlbiBsaWJyYXJ5IGZvdW5kIGluIGByb3dEYXRhYC4KICAgIFdoaWNoIHNhbXBsZSBpcyBhIGdpdmVuIGZlYXR1cmUgc3RhdGlzdGljIGZyb20/CjIuIFNDRSBvYmplY3RzIHNob3VsZCBjb250YWluIHRoZSBzYW1lIGdlbmVzOiBFYWNoIFNDRSBvYmplY3Qgc2hvdWxkIGhhdmUgdGhlIHNhbWUgcm93IG5hbWVzLgozLiBTQ0UgY2VsbCBtZXRhZGF0YSBjb2x1bW5zIHNob3VsZCBtYXRjaDogVGhlIGBjb2xEYXRhYCBmb3IgZWFjaCBTQ0Ugb2JqZWN0IHNob3VsZCBoYXZlIHRoZSBzYW1lIGNvbHVtbiBuYW1lcy4KCgpXZSdsbCBiZWdpbiBieSB0YWtpbmcgc29tZSB0aW1lIHRvIHRob3JvdWdobHkgZXhwbG9yZSBvdXIgU0NFIG9iamVjdHMgYW5kIGZpZ3VyZSBvdXQgd2hhdCB3cmFuZ2xpbmcgc3RlcHMgd2UgbmVlZCB0byB0YWtlIGZvciB0aGVzZSBzcGVjaWZpYyBkYXRhLgpEb24ndCBza2lwIHRoaXMgZXhwbG9yYXRpb24hCkJlYXIgaW4gbWluZCB0aGF0IHRoZSBleGFjdCB3cmFuZ2xpbmcgc2hvd24gaGVyZSB3aWxsIG5vdCBiZSB0aGUgc2FtZSBmb3Igb3RoZXIgU0NFIG9iamVjdHMgeW91IHdvcmsgd2l0aCwgYnV0IHRoZSBzYW1lIGdlbmVyYWwgcHJpbmNpcGxlcyBhcHBseS4KCgojIyMjIFByZXNlcnZpbmcgc2FtcGxlIGluZm9ybWF0aW9uIGF0IHRoZSBjZWxsIGxldmVsCgpIb3cgd2lsbCB3ZSBiZSBhYmxlIHRvIHRlbGwgd2hpY2ggc2FtcGxlIGEgZ2l2ZW4gY2VsbCBjYW1lIGZyb20/CgpUaGUgYmVzdCB3YXkgdG8gZG8gdGhpcyBpcyBzaW1wbHkgdG8gYWRkIGEgYGNvbERhdGFgIGNvbHVtbiB3aXRoIHRoZSBzYW1wbGUgaW5mb3JtYXRpb24sIHNvIHRoYXQgd2UgY2FuIGtub3cgd2hpY2ggc2FtcGxlIGVhY2ggcm93IGNhbWUgZnJvbS4KCkluIGFkZGl0aW9uLCB3ZSB3YW50IHRvIHBheSBzb21lIGF0dGVudGlvbiB0byB0aGUgU0NFIG9iamVjdCdzIGNvbHVtbiBuYW1lcyAodGhlIGNlbGwgaWRzKSwgd2hpY2ggbXVzdCByZW1haW4gdW5pcXVlIGFmdGVyIG1lcmdpbmcgc2luY2UgZHVwbGljYXRlIGlkcyB3aWxsIGNhdXNlIGFuIFIgZXJyb3IuCkluIHRoaXMgY2FzZSwgdGhlIFNDRSBjb2x1bW4gbmFtZXMgYXJlIGJhcmNvZGVzICh3aGljaCBpcyB1c3VhbGx5IGJ1dCBub3QgYWx3YXlzIHRoZSBjYXNlIGluIFNDRSBvYmplY3RzKSwgd2hpY2ggYXJlIG9ubHkgZ3VhcmFudGVlZCB0byBiZSB1bmlxdWUgX3dpdGhpbl8gYSBzYW1wbGUgYnV0IG1heSBiZSByZXBlYXRlZCBhY3Jvc3Mgc2FtcGxlcy4KU28sIGFmdGVyIG1lcmdpbmcsIGl0J3MgdGVjaG5pY2FsbHkgcG9zc2libGUgdGhhdCBtdWx0aXBsZSBjZWxscyB3aWxsIGhhdmUgdGhlIHNhbWUgYmFyY29kZS4KVGhpcyB3b3VsZCBiZSBhIHByb2JsZW0gZm9yIHR3byByZWFzb25zOgpGaXJzdCwgdGhlIGNlbGwgaWQgd291bGQgbm90IGJlIGFibGUgdG8gcG9pbnQgdXMgYmFjayB0byBjZWxsJ3Mgb3JpZ2luYXRpbmcgc2FtcGxlLgpTZWNvbmQsIGl0IHdvdWxkIGxpdGVyYWxseSBjYXVzZSBhbiBlcnJvciBpbiBSLCB3aGljaCBkb2VzIG5vdCBhbGxvdyBkdXBsaWNhdGUgY29sdW1uIG5hbWVzLgoKCk9uZSB3YXkgdG8gZW5zdXJlIHRoYXQgY2VsbCBpZHMgcmVtYWluIHVuaXF1ZSBldmVuIGFmdGVyIG1lcmdpbmcgaXMgdG8gYWN0dWFsbHkgbW9kaWZ5IHRoZW0gYnkgX3ByZXBlbmRpbmdfIHRoZSByZWxldmFudCBzYW1wbGUgbmFtZS4KRm9yIGV4YW1wbGUsIGNvbnNpZGVyIHRoZXNlIGJhcmNvZGVzIGZvciB0aGUgYFNDUENMMDAwNDc5YCBzYW1wbGU6CgpgYGB7ciBiYXJjb2Rlc30KIyBMb29rIGF0IHRoZSBjb2x1bW4gbmFtZXMgZm9yIHRoZSBgU0NQQ0wwMDA0NzlgIHNhbXBsZSwgZm9yIGV4YW1wbGUKY29sbmFtZXMoc2NlX2xpc3QkU0NQQ0wwMDA0NzkpIHw+CiAgIyBPbmx5IHByaW50IG91dCB0aGUgZmlyc3QgNiBmb3IgY29udmVuaWVuY2UKICBoZWFkKCkKYGBgCgpUaGVzZSBpZHMgd2lsbCBiZSB1cGRhdGVkIHRvIGBTQ1BDTDAwMDQ3OS1HR0dBQ0NUQ0FBR0NHR0FUYCwgYFNDUENMMDAwNDc5LUNBQ0FHQVRBR1RHQUdUR0NgLCBhbmQgc28gb24sIHRoZXJlYnkgZW5zdXJpbmcgZnVsbHkgdW5pcXVlIGlkcyBmb3IgYWxsIGNlbGxzIGFjcm9zcyBhbGwgc2FtcGxlcy4KCiMjIyMgUHJlc2VydmluZyBzYW1wbGUgaW5mb3JtYXRpb24gYXQgdGhlIGdlbmUgbGV2ZWwKClRoZSBgcm93RGF0YWAgdGFibGUgaW4gU0NFIG9iamVjdHMgd2lsbCBvZnRlbiBjb250YWluIGJvdGggImdlbmVyYWwiIGFuZCAibGlicmFyeS1zcGVjaWZpYyIgaW5mb3JtYXRpb24sIGZvciBleGFtcGxlOgoKYGBge3Igcm93ZGF0YX0Kcm93RGF0YShzY2VfbGlzdCRTQ1BDTDAwMDQ3OSkgfD4KICBoZWFkKCkKYGBgCgpIZXJlLCB0aGUgcm93bmFtZXMgYXJlIEVuc2VtYmwgZ2VuZSBpZHMsIGFuZCBjb2x1bW5zIGFyZSBgZ2VuZV9zeW1ib2xgLCBgbWVhbmAsIGFuZCBgZGV0ZWN0ZWRgLgpUaGUgYGdlbmVfc3ltYm9sYCBjb2x1bW4gaXMgZ2VuZXJhbCBpbmZvcm1hdGlvbiBhYm91dCBhbGwgZ2VuZXMsIG5vdCBzcGVjaWZpYyB0byBhbnkgbGlicmFyeSBvciBleHBlcmltZW50LCBidXQgYG1lYW5gIGFuZCBgZGV0ZWN0ZWRgIGFyZSBsaWJyYXJ5LXNwZWNpZmljIGdlbmUgc3RhdGlzdGljcy4KU28sIGBnZW5lX3N5bWJvbGAgZG9lcyBub3QgbmVlZCB0byBiZSB0cmFjZWQgYmFjayB0byBpdHMgb3JpZ2luYXRpbmcgc2FtcGxlLCBidXQgYG1lYW5gIGFuZCBgZGV0ZWN0ZWRgIGRvLgpUbyB0aGlzIGVuZCwgd2UgY2FuIHRha2UgYSBzaW1pbGFyIGFwcHJvYWNoIHRvIHdoYXQgd2UnbGwgZG8gZm9yIGNlbGwgaWRzOgpXZSBjYW4gY2hhbmdlIHRoZSBzYW1wbGUtc3BlY2lmaWMgYHJvd0RhdGFgIGNvbHVtbiBuYW1lcyBieSBwcmVwZW5kaW5nIHRoZSBzYW1wbGUgbmFtZS4KRm9yIGV4YW1wbGUsIHJhdGhlciB0aGFuIGJlaW5nIGNhbGxlZCBgbWVhbmAsIHRoaXMgY29sdW1uIHdpbGwgYmUgbmFtZWQgYFNDUENMMDAwNDc5LW1lYW5gIGZvciB0aGUgYFNDUENMMDAwNDc5YCBzYW1wbGUuCgpBbGwgb3VyIFNDRSBvYmplY3RzIGhhdmUgdGhlIHNhbWUgYHJvd0RhdGFgIGNvbHVtbnMgKGFzIHdlIGNhbiBzZWUgaW4gdGhlIG5leHQgY2h1bmspLCBzbyB3ZSdsbCBwZXJmb3JtIHRoaXMgcmVuYW1pbmcgYWNyb3NzIGFsbCBTQ0VzLgoKYGBge3IgY29tcGFyZSByb3dkYXRhLCBsaXZlID0gVFJVRX0KIyBVc2UgYHB1cnJyOjptYXAoKWAgdG8gcXVpY2tseSBleHRyYWN0IHJvd0RhdGEgY29sdW1uIG5hbWVzIGZvciBhbGwgU0NFcwpwdXJycjo6bWFwKHNjZV9saXN0LAogICAgICAgICAgIFwoc2NlKSBjb2xuYW1lcyhyb3dEYXRhKHNjZSkpKQpgYGAKCgojIyMjIEVuc3VyaW5nIHRoYXQgb25seSBzaGFyZWQgZ2VuZXMgYXJlIHVzZWQKClRoZSBuZXh0IHN0ZXAgaW4gZW5zdXJpbmcgU0NFIGNvbXBhdGliaWxpdHkgaXMgdG8gbWFrZSBzdXJlIHRoZXkgYWxsIGNvbnRhaW4gdGhlIHNhbWUgZ2VuZXMsIHdoaWNoIGFyZSBzdG9yZWQgYXMgdGhlIFNDRSBvYmplY3QncyByb3cgbmFtZXMgKHRoZXNlIG5hbWVzIGFyZSBhbHNvIGZvdW5kIHRoZSBgcm93RGF0YWAgc2xvdCdzIHJvdyBuYW1lcykuCkhlcmUsIHRob3NlIGdlbmUgaWRzIGFyZSB1bmlxdWUgRW5zZW1ibCBnZW5lIGlkcy4KCldlIGNhbiB1c2Ugc29tZSBgcHVycnJgIG1hZ2ljIHRvIHF1aWNrbHkgZmluZCB0aGUgc2V0IG9mIHNoYXJlZCBnZW5lcyBhbW9uZyBvdXIgc2FtcGxlcywgYW5kIHRoZW4gYXNrIGhvdyBtYW55IHRoZXJlIGFyZS4KCmBgYHtyIHNoYXJlZCBnZW5lc30KIyBEZWZpbmUgdmVjdG9yIG9mIHNoYXJlZCBnZW5lcwpzaGFyZWRfZ2VuZXMgPC0gc2NlX2xpc3QgfD4KICAjIGdldCByb3duYW1lcyAoZ2VuZXMpIGZvciBlYWNoIFNDRSBpbiBzY2VfbGlzdAogIHB1cnJyOjptYXAocm93bmFtZXMpIHw+CiAgIyByZWR1Y2UgdG8gdGhlIF9pbnRlcnNlY3Rpb25fIGFtb25nIGxpc3RzCiAgcHVycnI6OnJlZHVjZShpbnRlcnNlY3QpCmBgYAoKYGBge3IgcHJpbnQgc2hhcmVkIGdlbmVzLCBsaXZlID0gVFJVRX0KIyBIb3cgbWFueSBzaGFyZWQgZ2VuZXMgYXJlIHRoZXJlPwpsZW5ndGgoc2hhcmVkX2dlbmVzKQpgYGAKCkluIHRoaXMgY2FzZSwgd2UgaGFwcGVuIHRvIGtub3cgdGhhdCBhbGwgU0NFIG9iamVjdHMgd2UncmUgd29ya2luZyB3aXRoIGFscmVhZHkgY29udGFpbmVkIHRoZSBzYW1lIGdlbmVzLgpXZSBkbyBhIHF1aWNrLWFuZC1kaXJ0eSBjaGVjayBmb3IgdGhpcyBieSBsb29raW5nIGF0IHRoZSBudW1iZXIgb2Ygcm93cyBhY3Jvc3MgU0NFIG9iamVjdHMsIGFuZCB3ZSdsbCBzZWUgdGhhdCB0aGV5IGFyZSBhbGwgdGhlIHNhbWU6CgpgYGB7ciBjaGVjayBzaGFyZWQgZ2VuZXMsIGxpdmUgPSBUUlVFfQojIFRoZSBudW1iZXIgb2YgZ2VuZXMgaW4gYW4gU0NFIGNvcnJlc3BvbmRzIHRvIGl0cyBudW1iZXIgb2Ygcm93czoKc2NlX2xpc3QgfD4KICBwdXJycjo6bWFwKG5yb3cpCmBgYAoKU28sIGZvciBvdXIgZGF0YSwgd2Ugd2lsbCBub3QgaGF2ZSB0byBzdWJzZXQgdG8gc2hhcmVkIGdlbmVzIHNpbmNlIHRoZXkgYXJlIGFscmVhZHkgc2hhcmVkIQoKIyMjIyBFbnN1cmluZyBtYXRjaGluZyBjb2x1bW5zIGluIGBjb2xEYXRhYAoKRmluYWxseSwgd2UnbGwgbmVlZCB0byBoYXZlIHRoZSBzYW1lIGNvbHVtbiBuYW1lcyBhY3Jvc3MgYWxsIFNDRSBgY29sRGF0YWAgdGFibGVzLCBzbyBsZXQncyBsb29rIGF0IGFsbCB0aG9zZSBjb2x1bW4gbmFtZXMuCldlIGNhbiB1c2Ugc2ltaWxhciBzeW50YXggaGVyZSB0byB3aGF0IHdlIHVzZWQgdG8gbG9vayBhdCBhbGwgdGhlIGByb3dEYXRhYCBjb2x1bW4gbmFtZXMuCgpgYGB7ciBjb21wYXJlIGNvbGRhdGF9CnB1cnJyOjptYXAoc2NlX2xpc3QsCiAgICAgICAgICAgXChzY2UpIGNvbG5hbWVzKGNvbERhdGEoc2NlKSkgKQpgYGAKCkl0IGxvb2tzIGxpa2UgdGhlIGNvbHVtbiBuYW1lcyBhcmUgYWxsIGFscmVhZHkgbWF0Y2hpbmcgYW1vbmcgU0NFcywgc28gdGhlcmUncyBubyBzcGVjaWZpYyBwcmVwYXJhdGlvbiB3ZSdsbCBuZWVkIHRvIGRvIHRoZXJlLgoKIyMjIFBlcmZvcm0gU0NFIG1lcmdpbmcKCkFzIHlvdSBjYW4gc2VlLCB0aGVyZSdzIGEgbG90IG9mIG1vdmluZyBwYXJ0cyB0byBjb25zaWRlciEKQWdhaW4sIHRoZXNlIG1vdmluZyBwYXJ0cyBtYXkgKHdpbGwhKSBkaWZmZXIgZm9yIFNDRXMgdGhhdCB5b3UgYXJlIHdvcmtpbmcgd2l0aCwgc28geW91IGhhdmUgdG8gZXhwbG9yZSB5b3VyIG93biBTQ0VzIGluIGRlcHRoIHRvIHByZXBhcmUgZm9yIG1lcmdpbmcuCgpCYXNlZCBvbiBvdXIgZXhwbG9yYXRpb24sIGhlcmUgaXMgYSBzY2hlbWF0aWMgb2YgaG93IG9uZSBvZiB0aGUgU0NFIG9iamVjdHMgd2lsbCB1bHRpbWF0ZWx5IGJlIG1vZGlmaWVkIGludG8gdGhlIGZpbmFsIG1lcmdlZCBTQ0U6CgohW10oZGlhZ3JhbXMvdGVjaG5pY2FsX21lcmdlX3NjZS5wbmcpCgoKV2UnbGwgd3JpdGUgYSBfY3VzdG9tIGZ1bmN0aW9uXyAoc2VlbiBpbiB0aGUgY2h1bmsgYmVsb3cpIHRhaWxvcmVkIHRvIG91ciB3cmFuZ2xpbmcgc3RlcHMgdGhhdCBwcmVwYXJlcyBhIHNpbmdsZSBTQ0Ugb2JqZWN0IGZvciBtZXJnaW5nLgpXZSdsbCB0aGVuIHVzZSBvdXIgbmV3IGBwdXJycjo6bWFwKClgIHByb2dyYW1taW5nIHNraWxscyB0byBydW4gdGhpcyBmdW5jdGlvbiBvdmVyIHRoZSBgc2NlX2xpc3RgLgpUaGlzIHdpbGwgZ2l2ZSB1cyBhIG5ldyBsaXN0IG9mIGZvcm1hdHRlZCBTQ0VzIHRoYXQgd2UgY2FuIHByb2NlZWQgdG8gbWVyZ2UuCkl0J3MgaW1wb3J0YW50IHRvIHJlbWVtYmVyIHRoYXQgdGhlIGBmb3JtYXRfc2NlKClgIGZ1bmN0aW9uIHdyaXR0ZW4gYmVsb3cgaXMgbm90IGEgZnVuY3Rpb24gZm9yIGdlbmVyYWwgdXNlIOKAkyBpdCdzIGJlZW4gcHJlY2lzZWx5IHdyaXR0ZW4gdG8gbWF0Y2ggdGhlIHByb2Nlc3Npbmcgd2UgbmVlZCB0byBkbyBmb3IgX3RoZXNlXyBTQ0VzLCBhbmQgZGlmZmVyZW50IFNDRXMgeW91IHdvcmsgd2l0aCB3aWxsIHJlcXVpcmUgZGlmZmVyZW50IHR5cGVzIG9mIHByb2Nlc3NpbmcuCgpgYGB7ciBmb3JtYXRfc2NlIGZ1bmN0aW9ufQpmb3JtYXRfc2NlIDwtIGZ1bmN0aW9uKHNjZSwgc2FtcGxlX25hbWUpIHsKICAjIElucHV0IGFyZ3VtZW50czoKICAjIyBzY2U6IEFuIFNDRSBvYmplY3QgdG8gZm9ybWF0CiAgIyMgc2FtcGxlX25hbWU6IFRoZSBTQ0Ugb2JqZWN0J3MgbmFtZQogICMgVGhpcyBmdW5jdGlvbiByZXR1cm5zIGEgZm9ybWF0dGVkIFNDRSBvYmplY3QuCgogICMjIyMjIyBFbnN1cmUgdGhhdCB3ZSBjYW4gaWRlbnRpZnkgdGhlIG9yaWdpbmF0aW5nIHNhbXBsZSBpbmZvcm1hdGlvbiAjIyMjIyMKICAjIEFkZCBhIGNvbHVtbiBjYWxsZWQgYHNhbXBsZWAgdGhhdCBzdG9yZXMgdGhpcyBpbmZvcm1hdGlvbgogICMgVGhpcyB3aWxsIGJlIHN0b3JlZCBpbiBgY29sRGF0YWAKICBzY2Ukc2FtcGxlIDwtIHNhbXBsZV9uYW1lCgoKICAjIyMjIyMgRW5zdXJlIGNlbGwgaWRzIHdpbGwgYmUgdW5pcXVlICMjIyMjIwogICMgVXBkYXRlIHRoZSBTQ0Ugb2JqZWN0IGNvbHVtbiBuYW1lcyAoY2VsbCBpZHMpIGJ5IHByZXBlbmRpbmcgYHNhbXBsZV9uYW1lYAogIGNvbG5hbWVzKHNjZSkgPC0gZ2x1ZTo6Z2x1ZSgie3NhbXBsZV9uYW1lfS17Y29sbmFtZXMoc2NlKX0iKQoKCiAgIyMjIyMjIEVuc3VyZSBnZW5lLWxldmVsIHN0YXRpc3RpY3MgY2FuIGJlIGlkZW50aWZpZWQgaW4gYHJvd0RhdGFgICMjIyMjIwogICMgV2Ugd2FudCB0byByZW5hbWUgdGhlIGNvbHVtbnMgYG1lYW5gIGFuZCBgZGV0ZWN0ZWRgIHRvIGNvbnRhaW4gdGhlIGBzYW1wbGVfbmFtZWAKICAjIFJlY2FsbCB0aGUgbmFtZXMgYXJlOiAiZ2VuZV9zeW1ib2wiLCAibWVhbiIsICJkZXRlY3RlZCIKICBjb2xuYW1lcyhyb3dEYXRhKHNjZSkpIDwtIGMoImdlbmVfc3ltYm9sIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2x1ZTo6Z2x1ZSgie3NhbXBsZV9uYW1lfS1tZWFuIiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsdWU6OmdsdWUoIntzYW1wbGVfbmFtZX0tZGV0ZWN0ZWQiKSkKCiAgIyBSZXR1cm4gdGhlIGZvcm1hdHRlZCBTQ0Ugb2JqZWN0CiAgcmV0dXJuKHNjZSkKfQpgYGAKClRvIHJ1biB0aGlzIGZ1bmN0aW9uLCB3ZSdsbCB1c2UgdGhlIGBwdXJycjo6bWFwMigpYCBmdW5jdGlvbiwgYSByZWxhdGl2ZSBvZiBgcHVycnI6Om1hcCgpYCB0aGF0IGFsbG93cyB5b3UgdG8gbG9vcCBvdmVyIF90d29fIGlucHV0IGxpc3RzL3ZlY3RvcnMuCkluIG91ciBjYXNlLCB3ZSB3YW50IHRvIHJ1biBgZm9ybWF0X3NjZSgpYCBvdmVyIHBhaXJlZCBgc2NlX2xpc3RgIGl0ZW1zIGFuZCBgc2NlX2xpc3RgIG5hbWVzLgoKYGBge3IgZm9ybWF0IHNjZXMgZm9yIG1lcmdlLCBsaXZlID0gVFJVRX0KIyBXZSBjYW4gdXNlIGBwdXJycjo6bWFwMigpYCB0byBsb29wIG92ZXIgdHdvIGxpc3QvdmVjdG9yIGFyZ3VtZW50cwpzY2VfbGlzdF9mb3JtYXR0ZWQgPC0gcHVycnI6Om1hcDIoCiAgIyBFYWNoICJpdGVyYXRpb24iIHdpbGwgbWFyY2ggZG93biB0aGUgZmlyc3QgdHdvCiAgIyAgYXJndW1lbnRzIGBzY2VfbGlzdGAgYW5kIGBuYW1lcyhzY2VfbGlzdClgIGluIG9yZGVyCiAgc2NlX2xpc3QsCiAgbmFtZXMoc2NlX2xpc3QpLAogICMgTmFtZSBvZiB0aGUgZnVuY3Rpb24gdG8gcnVuCiAgZm9ybWF0X3NjZQopCgojIFByaW50IHJlc3VsdGluZyBsaXN0CnNjZV9saXN0X2Zvcm1hdHRlZApgYGAKCihQc3N0LCBsaWtlIGBwdXJycmAgYW5kIHdhbnQgdG8gZGl2ZSBkZWVwZXI/IENoZWNrIG91dCBbdGhlIGBwdXJycjo6aW1hcCgpYCBmdW5jdGlvbl0oaHR0cHM6Ly9wdXJyci50aWR5dmVyc2Uub3JnL3JlZmVyZW5jZS9pbWFwLmh0bWwpISkKCgpBdCBsb25nIGxhc3QsIHdlIGFyZSByZWFkeSB0byBtZXJnZSB0aGUgU0NFcywgd2hpY2ggd2UnbGwgZG8gdXNpbmcgdGhlIFIgZnVuY3Rpb24gYGNiaW5kKClgLgpUaGUgYGNiaW5kKClgIGZ1bmN0aW9uIGlzIG9mdGVuIHVzZWQgdG8gY29tYmluZSBkYXRhIGZyYW1lcyBvciBtYXRyaWNlcyBieSBjb2x1bW4sIGkuZS4gInN0YWNrIiB0aGVtIG5leHQgdG8gZWFjaCBvdGhlci4KVGhlIHNhbWUgcHJpbmNpcGxlIGFwcGxpZXMgaGVyZSwgYnV0IHdoZW4gcnVuIG9uIFNDRSBvYmplY3RzLCBgY2JpbmQoKWAgd2lsbCBjcmVhdGUgYSBuZXcgU0NFIG9iamVjdCBieSBjb21iaW5pbmcgYGNvdW50c2AgYW5kIGBsb2djb3VudHNgIG1hdHJpY2VzIGJ5IGNvbHVtbi4KRm9sbG93aW5nIHRoYXQgc3RydWN0dXJlLCBvdGhlciBTQ0Ugc2xvdHMgKGBjb2xEYXRhYCwgYHJvd0RhdGFgLCByZWR1Y2VkIGRpbWVuc2lvbnMsIGFuZCBvdGhlciBtZXRhZGF0YSkgYXJlIGNvbWJpbmVkIGFwcHJvcHJpYXRlbHkuCgpTaW5jZSB3ZSBuZWVkIHRvIGFwcGx5IGBjYmluZCgpYCB0byBhIF9saXN0XyBvZiBvYmplY3RzLCB3ZSBuZWVkIHRvIHVzZSBzb21lIHNsaWdodGx5LWduYXJseSBzeW50YXg6IFdlJ2xsIHVzZSB0aGUgZnVuY3Rpb24gYGRvLmNhbGwoKWAsIHdoaWNoIGFsbG93cyB0aGUgYGNiaW5kKClgIGlucHV0IHRvIGJlIGEgbGlzdCBvZiBvYmplY3RzIHRvIGNvbWJpbmUuCgpgYGB7ciBtZXJnZXMgc2NlcywgbGl2ZSA9IFRSVUV9CiMgTWVyZ2UgU0NFIG9iamVjdHMKbWVyZ2VkX3NjZSA8LSBkby5jYWxsKGNiaW5kLCBzY2VfbGlzdF9mb3JtYXR0ZWQpCgojIFByaW50IHRoZSBtZXJnZWRfc2NlIG9iamVjdAptZXJnZWRfc2NlCmBgYAoKV2Ugbm93IGhhdmUgYSBzaW5nbGUgU0NFIG9iamVjdCB0aGF0IGNvbnRhaW5zIGFsbCBjZWxscyBmcm9tIGFsbCBzYW1wbGVzIHdlJ2QgbGlrZSB0byBpbnRlZ3JhdGUuCgpMZXQncyB0YWtlIGEgcGVlayBhdCBzb21lIG9mIHRoZSBpbm5hcmRzIG9mIHRoaXMgbmV3IFNDRSBvYmplY3Q6CgpgYGB7ciBleHBsb3JlIG1lcmdlZF9zY2UsIGxpdmUgPSBUUlVFfQojIEhvdyBtYW55IHNhbXBsZXMsIGFuZCBjZWxscyBwZXIgc2FtcGxlPwp0YWJsZSggY29sRGF0YShtZXJnZWRfc2NlKSRzYW1wbGUgKQoKIyBXaGF0IGFyZSB0aGUgbmV3IGNlbGwgaWRzIChjb2x1bW4gbmFtZXMpPwpoZWFkKCBjb2xuYW1lcyhtZXJnZWRfc2NlKSApCgojIFdoYXQgZG9lcyByb3dEYXRhIGxvb2sgbGlrZT8KaGVhZCggcm93RGF0YShtZXJnZWRfc2NlKSApCmBgYAoKCiMjIEludGVncmF0aW9uCgohW1NpbmdsZS1jZWxsIHJvYWRtYXA6IEludGVncmF0ZV0oZGlhZ3JhbXMvcm9hZG1hcF9tdWx0aV9pbnRlZ3JhdGUucG5nKQoKClNvIGZhciwgd2UndmUgY3JlYXRlZCBhIGBtZXJnZWRfc2NlYCBvYmplY3Qgd2hpY2ggaXMgKGFsbW9zdCEpIHJlYWR5IGZvciBpbnRlZ3JhdGlvbi4KClRoZSBpbnRlZ3JhdGlvbiBtZXRob2RzIHdlJ2xsIGJlIHVzaW5nIGhlcmUgYWN0dWFsbHkgcGVyZm9ybSBiYXRjaCBjb3JyZWN0aW9uIG9uIGEgcmVkdWNlZCBkaW1lbnNpb24gcmVwcmVzZW50YXRpb24gb2YgdGhlIG5vcm1hbGl6ZWQgZ2VuZSBleHByZXNzaW9uIHZhbHVlcywgd2hpY2ggaXMgbW9yZSBlZmZpY2llbnQuCmBmYXN0TU5OYCBhbmQgYGhhcm1vbnlgIHNwZWNpZmljYWxseSB1c2UgUENBIGZvciB0aGlzLCBidXQgYmUgYXdhcmUgdGhhdCBkaWZmZXJlbnQgaW50ZWdyYXRpb24gbWV0aG9kcyBtYXkgdXNlIG90aGVyIGtpbmRzIG9mIHJlZHVjZWQgZGltZW5zaW9ucy4KCllvdSdsbCBub3RpY2UgdGhhdCB0aGUgbWVyZ2VkIFNDRSBvYmplY3Qgb2JqZWN0IGFscmVhZHkgY29udGFpbnMgUENBIGFuZCBVTUFQIHJlZHVjZWQgZGltZW5zaW9ucywgd2hpY2ggd2VyZSBjYWxjdWxhdGVkIGR1cmluZyBvdXIgcHJlLXByb2Nlc3Npbmc6CgpgYGB7ciBtZXJnZWRfc2NlIHJlZGRpbSwgbGl2ZSA9IFRSVUV9CiMgUHJpbnQgdGhlIHJlZHVjZWREaW1OYW1lcyBvZiB0aGUgbWVyZ2VkX3NjZQpyZWR1Y2VkRGltTmFtZXMobWVyZ2VkX3NjZSkKYGBgCgpUaGVzZSByZXByZXNlbnQgdGhlIG9yaWdpbmFsIGRpbWVuc2lvbiByZWR1Y3Rpb25zIHRoYXQgd2VyZSBwZXJmb3JtZWQgb24gX2VhY2ggaW5kaXZpZHVhbCBTQ0VfIGJlZm9yZSBtZXJnaW5nLCBidXQgd2UgYWN0dWFsbHkgbmVlZCB0byBjYWxjdWxhdGUgUENBIChhbmQgVU1BUCBmb3IgdmlzdWFsaXphdGlvbikgZnJvbSB0aGUgbWVyZ2VkIG9iamVjdCBkaXJlY3RseS4KCldoeSBjYW4ndCB3ZSB1c2UgdGhlIHNhbXBsZS1zcGVjaWZpYyBQQ0EgYW5kIFVNQVAgbWF0cmljZXM/ClBhcnQgb2YgdGhlc2UgY2FsY3VsYXRpb25zIHRoZW1zZWx2ZXMgaW52b2x2ZXMgc2NhbGluZyB0aGUgcmF3IGRhdGEgdG8gY2VudGVyIHRoZSBtZWFuLgpXaGVuIHNhbXBsZXMgYXJlIHNlcGFyYXRlbHkgY2VudGVyZWQgYnV0IHBsb3R0aW5nIHRvZ2V0aGVyLCB5b3Ugd2lsbCBzZWUgc2FtcGxlcyAib3ZlcmxhcHBpbmciIGluIHNwYWNlLCBidXQgdGhpcyBwbGFjZW1lbnQgaXMgYWN0dWFsbHkganVzdCBhbiBhcnRpZmFjdCBvZiB0aGUgaW5kaXZpZHVhbCBjZW50ZXJpbmcuCkluIGFkZGl0aW9uLCB0aGUgbWF0aGVtYXRpY2FsIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIHRoZSBvcmlnaW5hbCBleHByZXNzaW9uIGRhdGEgYW5kIHJlZHVjZWQgZGltZW5zaW9uIHZlcnNpb24gb2YgdGhhdCBkYXRhIHdpbGwgZGlmZmVyIGFjcm9zcyBzYW1wbGVzLCBtZWFuaW5nIHdlIGNhbid0IGludGVycHJldCB0aGVtIGFsbCB0b2dldGhlci4KVG8gc2VlIGhvdyB0aGlzIGxvb2tzLCBsZXQncyBsb29rIGF0IHRoZSBVTUFQIHdoZW4gY2FsY3VsYXRlZCBmcm9tIGluZGl2aWR1YWwgc2FtcGxlczoKCmBgYHtyIHBsb3QgaW5kaXZpZHVhbCBVTUFQc30KIyBQbG90IFVNQVAgY2FsY3VsYXRlZCBmcm9tIGluZGl2aWR1YWwgc2FtcGxlcyB3aXRoIHNlcGFyYXRlIHNjYWxpbmcKc2NhdGVyOjpwbG90UmVkdWNlZERpbShtZXJnZWRfc2NlLAogICAgICAgICAgICAgICAgICAgICAgIGRpbXJlZCA9ICJVTUFQIiwKICAgICAgICAgICAgICAgICAgICAgICBjb2xvcl9ieSA9ICJzYW1wbGUiLAogICAgICAgICAgICAgICAgICAgICAgIHBvaW50X3NpemUgPSAwLjUsCiAgICAgICAgICAgICAgICAgICAgICAgcG9pbnRfYWxwaGEgPSAwLjIpICsKICAjIFVzZSBhIENWRC1mcmllbmRseSBjb2xvciBzY2hlbWUgYW5kIHNwZWNpZnkgbGVnZW5kIG5hbWUKICBzY2FsZV9jb2xvcl9icmV3ZXIocGFsZXR0ZSA9ICJEYXJrMiIsIG5hbWUgPSAic2FtcGxlIikgKyAKICAjIE1vZGlmeSB0aGUgbGVnZW5kIGtleSB3aXRoIGxhcmdlciwgZWFzaWVyIHRvIHNlZSBwb2ludHMKICBndWlkZXMoY29sb3IgPSBndWlkZV9sZWdlbmQob3ZlcnJpZGUuYWVzID0gbGlzdChzaXplID0gMywgYWxwaGEgPSAxKSkpICsKICBnZ3RpdGxlKCJVTUFQIGNhbGN1bGF0ZWQgb24gZWFjaCBzYW1wbGUgc2VwYXJhdGVseSIpCmBgYAoKQXMgd2Ugc2VlIGluIHRoaXMgVU1BUCwgYWxsIHNhbXBsZXMgYXJlIGNlbnRlcmVkIGF0IHplcm8gYW5kIGFsbCBvdmVybGFwcGluZy4KVGhpcyB2aXN1YWwgYXJ0aWZhY3QgY2FuIGdpdmUgdGhlIF9pbmNvcnJlY3QgaW1wcmVzc2lvbl8gdGhhdCBkYXRhIGlzIGludGVncmF0ZWQgLSB0byBiZSBjbGVhciwgdGhpcyBkYXRhIGlzIE5PVCBpbnRlZ3JhdGVkIQoKRm9yIGlucHV0IHRvIGludGVncmF0aW9uLCB3ZSdsbCB3YW50IHRoZSByZWR1Y2VkIGRpbWVuc2lvbiBjYWxjdWxhdGlvbnMgdG8gY29uc2lkZXIgbm9ybWFsaXplZCBnZW5lIGV4cHJlc3Npb24gdmFsdWVzIGZyb20gYWxsIHNhbXBsZXMgc2ltdWx0YW5lb3VzbHkuClNvIHdlJ2xsIG5lZWQgdG8gcmVjYWxjdWxhdGUgUENBIChhbmQgVU1BUCBmb3IgdmlzdWFsaXphdGlvbikgb24gdGhlIG1lcmdlZCBvYmplY3QuCldlJ2xsIGFsc28gc2F2ZSB0aGVzZSBuZXcgcmVkdWNlZCBkaW1lbnNpb25zIHdpdGggZGlmZmVyZW50IG5hbWVzLCBgbWVyZ2VkX1BDQWAgYW5kIGBtZXJnZWRfVU1BUGAsIHRvIGRpc3Rpbmd1aXNoIHRoZW0gZnJvbSBhbHJlYWR5LXByZXNlbnQgYFBDQWAgYW5kIGBVTUFQYC4KCkZpcnN0LCBhcyB1c3VhbCwgd2UnbGwgZGV0ZXJtaW5lIHRoZSBoaWdoLXZhcmlhbmNlIGdlbmVzIHRvIHVzZSBmb3IgUENBIGZyb20gdGhlIGBtZXJnZWRfc2NlYCBvYmplY3QuCkZvciB0aGlzLCB3ZSdsbCBuZWVkIHRvIHByb3ZpZGUgdGhlIGFyZ3VtZW50IGBibG9jayA9IG1lcmdlZF9zY2Ukc2FtcGxlYCB3aGVuIG1vZGVsaW5nIGdlbmUgdmFyaWFuY2UsIHdoaWNoIHRlbGxzIGBzY3Jhbjo6bW9kZWxHZW5lVmFyKClgIHRvIGZpcnN0IG1vZGVsIHZhcmlhbmNlIHNlcGFyYXRlbHkgZm9yIGVhY2ggYmF0Y2ggYW5kIHRoZW4gY29tYmluZSB0aG9zZSBtb2RlbGluZyBzdGF0aXN0aWNzLgoKYGBge3IgY2FsYyBtZXJnZWQgaHYgZ2VuZXN9CiMgU3BlY2lmeSB0aGUgbnVtYmVyIG9mIGdlbmVzIHRvIGlkZW50aWZ5Cm51bV9nZW5lcyA8LSAyMDAwCgojIENhbGN1bGF0ZSB2YXJpYXRpb24gZm9yIGVhY2ggZ2VuZQpnZW5lX3ZhcmlhbmNlIDwtIHNjcmFuOjptb2RlbEdlbmVWYXIobWVyZ2VkX3NjZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgc3BlY2lmeSB0aGUgZ3JvdXBpbmcgY29sdW1uOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxvY2sgPSBtZXJnZWRfc2NlJHNhbXBsZSkKCiMgR2V0IHRoZSB0b3AgYG51bV9nZW5lc2AgaGlnaC12YXJpYW5jZSBnZW5lcyB0byB1c2UgZm9yIGRpbWVuc2lvbiByZWR1Y3Rpb24KaHZfZ2VuZXMgPC0gc2NyYW46OmdldFRvcEhWR3MoZ2VuZV92YXJpYW5jZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbiA9IG51bV9nZW5lcykKYGBgCgpUbyBjYWxjdWxhdGUgdGhlIFBDQSBtYXRyaXggaXRzZWxmLCB3ZSdsbCB1c2UgYW4gYXBwcm9hY2ggZnJvbSB0aGUgYGJhdGNoZWxvcmAgcGFja2FnZSwgd2hpY2ggaXMgdGhlIFIgcGFja2FnZSB0aGF0IGNvbnRhaW5zIHRoZSBgZmFzdE1OTmAgbWV0aG9kLgpUaGUgW2BiYXRjaGVsb3I6Om11bHRpQmF0Y2hQQ0EoKWBdKGh0dHBzOi8vcmRyci5pby9iaW9jL2JhdGNoZWxvci9tYW4vbXVsdGlCYXRjaFBDQS5odG1sKSBmdW5jdGlvbiBjYWxjdWxhdGVzIGEgYmF0Y2gtd2VpZ2h0ZWQgUENBIG1hdHJpeC4KVGhpcyB3ZWlnaHRpbmcgZW5zdXJlcyB0aGF0IGFsbCBiYXRjaGVzLCB3aGljaCBtYXkgaGF2ZSB2ZXJ5IGRpZmZlcmVudCBudW1iZXJzIG9mIGNlbGxzLCBjb250cmlidXRlIGVxdWFsbHkgdG8gdGhlIG92ZXJhbGwgc2NhbGluZy4KCmBgYHtyIG1ha2UgbWVyZ2VkX3BjYSwgbGl2ZSA9IFRSVUV9CiMgVXNlIGJhdGNoZWxvciB0byBjYWxjdWxhdGUgUENBIGZvciBtZXJnZWRfc2NlLCBjb25zaWRlcmluZyBvbmx5CiMgIHRoZSBoaWdoLXZhcmlhbmNlIGdlbmVzCiMgV2UnbGwgbmVlZCB0byBpbmNsdWRlIHRoZSBhcmd1bWVudCBgcHJlc2VydmUuc2luZ2xlID0gVFJVRWAgdG8gZ2V0CiMgIGEgc2luZ2xlIG1hdHJpeCB3aXRoIGFsbCBzYW1wbGVzIGFuZCBub3Qgc2VwYXJhdGUgbWF0cmljZXMgZm9yIGVhY2ggc2FtcGxlCm1lcmdlZF9wY2EgPC0gYmF0Y2hlbG9yOjptdWx0aUJhdGNoUENBKG1lcmdlZF9zY2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1YnNldC5yb3cgPSBodl9nZW5lcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmF0Y2ggPSBtZXJnZWRfc2NlJHNhbXBsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlc2VydmUuc2luZ2xlID0gVFJVRSkKYGBgCgpMZXQncyBoYXZlIGEgbG9vayBhdCB0aGUgb3V0cHV0OgpgYGB7ciBwcmludCBtZXJnZWRfcGNhLCBsaXZlID0gVFJVRX0KIyBUaGlzIG91dHB1dCBpcyBub3QgdmVyeSBpbnRlcmVzdGluZyEKbWVyZ2VkX3BjYQpgYGAKCldlIGNhbiB1c2UgaW5kZXhpbmcgYFtbMV1dYCB0byBzZWUgdGhlIFBDQSBtYXRyaXggY2FsY3VsYXRlZCwgbG9va2luZyBhdCBhIHNtYWxsIHN1YnNldCBmb3IgY29udmVuaWVuY2U6CgpgYGB7ciBwcmludCBtZXJnZWRfcGNhIGluZGV4ZWQsIGxpdmUgPSBUUlVFfQptZXJnZWRfcGNhW1sxXV1bMTo1LDE6NV0KYGBgCgpXZSBjYW4gbm93IGluY2x1ZGUgdGhpcyBQQ0EgbWF0cml4IGluIG91ciBgbWVyZ2VkX3NjZWAgb2JqZWN0OgoKYGBge3IgYWRkIG1lcmdlZF9wY2EsIGxpdmUgPSBUUlVFfQojIGFkZCBQQ0EgcmVzdWx0cyB0byBtZXJnZWQgU0NFIG9iamVjdApyZWR1Y2VkRGltKG1lcmdlZF9zY2UsICJtZXJnZWRfUENBIikgPC0gbWVyZ2VkX3BjYVtbMV1dCmBgYAoKTm93IHRoYXQgd2UgaGF2ZSB0aGUgUENBIG1hdHJpeCwgd2UgY2FuIHByb2NlZWQgdG8gY2FsY3VsYXRlIFVNQVAgdG8gdmlzdWFsaXplIHRoZSB1bmNvcnJlY3RlZCBtZXJnZWQgZGF0YS4KCldlJ2xsIGNhbGN1bGF0ZSBVTUFQIGFzICJ1c3VhbCIsIGJ1dCBpbiB0aGlzIGNhc2Ugd2UnbGwgc3BlY2lmeSB0d28gYWRkaXRpb25hbCBhcmd1bWVudHM6CgotIGBkaW1yZWQgPSAibWVyZ2VkX1BDQSJgLCB3aGljaCBzcGVjaWZpZXMgd2hpY2ggZXhpc3RpbmcgcmVkdWNlZCBkaW1lbnNpb24gc2hvdWxkIGJlIHVzZWQgZm9yIHRoZSBjYWxjdWxhdGlvbi4KV2Ugd2FudCB0byB1c2UgdGhlIGJhdGNoLXdlaWdodGVkIFBDQSwgd2hpY2ggd2UgbmFtZWQgYWJvdmUgYXMgYCJtZXJnZWRfUENBImAuCi0gYG5hbWUgPSAibWVyZ2VkX1VNQVAiYCwgd2hpY2ggbmFtZXMgdGhlIGZpbmFsIFVNQVAgdGhhdCB0aGlzIGZ1bmN0aW9uIGNhbGN1bGF0ZXMuClRoaXMgYXJndW1lbnQgd2lsbCBwcmV2ZW50IHVzIGZyb20gb3ZlcndyaXRpbmcgdGhlIGV4aXN0aW5nIFVNQVAgd2hpY2ggaXMgYWxyZWFkeSBuYW1lZCAiVU1BUCIgYW5kIGluc3RlYWQgY3JlYXRlIGEgc2VwYXJhdGUgYCJtZXJnZWRfVU1BUCJgLgoKYGBge3IgY2FsY3VsYXRlIG1lcmdlZCB1bWFwLCBsaXZlID0gVFJVRX0KIyBhZGQgbWVyZ2VkX1VNQVAgZnJvbSBtZXJnZWRfUENBCm1lcmdlZF9zY2UgPC0gc2NhdGVyOjpydW5VTUFQKG1lcmdlZF9zY2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpbXJlZCA9ICJtZXJnZWRfUENBIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSA9ICJtZXJnZWRfVU1BUCIpCmBgYAoKTm93LCBsZXQncyBzZWUgaG93IHRoaXMgbmV3IGBtZXJnZWRfVU1BUGAgbG9va3MgY29tcGFyZWQgdG8gdGhlIGBVTUFQYCBjYWxjdWxhdGVkIGZyb20gaW5kaXZpZHVhbCBzYW1wbGVzOgoKYGBge3IgcGxvdCB1bmNvcnJlY3RlZCBtZXJnZWQgVU1BUH0KIyBVTUFQcyBzY2FsZWQgdG9nZXRoZXIgd2hlbiBjYWxjdWxhdGVkIGZyb20gdGhlIG1lcmdlZCBTQ0UKc2NhdGVyOjpwbG90UmVkdWNlZERpbShtZXJnZWRfc2NlLAogICAgICAgICAgICAgICAgICAgICAgIGRpbXJlZCA9ICJtZXJnZWRfVU1BUCIsCiAgICAgICAgICAgICAgICAgICAgICAgY29sb3JfYnkgPSAic2FtcGxlIiwKICAgICAgICAgICAgICAgICAgICAgICAjIFNvbWUgc3R5bGluZyB0byBoZWxwIHVzIHNlZSB0aGUgcG9pbnRzOgogICAgICAgICAgICAgICAgICAgICAgIHBvaW50X3NpemUgPSAwLjUsCiAgICAgICAgICAgICAgICAgICAgICAgcG9pbnRfYWxwaGEgPSAwLjIpICsKICBzY2FsZV9jb2xvcl9icmV3ZXIocGFsZXR0ZSA9ICJEYXJrMiIsIG5hbWUgPSAic2FtcGxlIikgKwogIGd1aWRlcyhjb2xvciA9IGd1aWRlX2xlZ2VuZChvdmVycmlkZS5hZXMgPSBsaXN0KHNpemUgPSAzLCBhbHBoYSA9IDEpKSkgKwogIGdndGl0bGUoIlVNQVAgY2FsY3VsYXRlZCBvbiBtZXJnZWRfc2NlIikKYGBgCgpTYW1wbGVzIGFyZSBub3cgc2VwYXJhdGVkLCB3aGljaCBtb3JlIHJlYXNvbmFibHkgcmVmbGVjdHMgdGhhdCB0aGlzIGRhdGEgaXMgX25vdCB5ZXQgYmF0Y2gtY29ycmVjdGVkXy4KV2UgY2FuIHRoaW5rIG9mIHRoaXMgVU1BUCBhcyBvdXIgImJlZm9yZSIgVU1BUCwgYW5kIHdlIGNhbiBjb21wYXJlIHRoaXMgdG8gdGhlICJhZnRlciIgVU1BUCB3ZSBzZWUgcG9zdC1pbnRlZ3JhdGlvbi4KCkxldCdzIGRpc2N1c3MgYSBsaXR0bGUgZmlyc3Q6IFdoYXQgdmlzdWFsIGRpZmZlcmVuY2VzIGRvIHlvdSB0aGluayB0aGUgVU1BUCBvbiB0aGUgaW50ZWdyYXRlZCB2ZXJzaW9uIG9mIGRhdGEgd2lsbCBoYXZlPwpXaGF0IHNpbWlsYXJpdGllcyBkbyB5b3UgdGhpbmsgdGhlIGludGVncmF0ZWQgVU1BUCB3aWxsIGhhdmUgdG8gdGhpcyBwbG90PwoKCiMjIyBJbnRlZ3JhdGlvbiB3aXRoIGBmYXN0TU5OYAoKRmluYWxseSwgd2UncmUgcmVhZHkgdG8gaW50ZWdyYXRlIQpUbyBzdGFydCwgd2UnbGwgdXNlIHRoZSBgZmFzdE1OTmAgYXBwcm9hY2ggZnJvbSB0aGUgQmlvY29uZHVjdG9yIFtgYmF0Y2hlbG9yYCBwYWNrYWdlXShodHRwOi8vd3d3LmJpb2NvbmR1Y3Rvci5vcmcvcGFja2FnZXMvcmVsZWFzZS9iaW9jL2h0bWwvYmF0Y2hlbG9yLmh0bWwpLgoKYGZhc3RNTk5gIHRha2VzIGFzIGlucHV0IHRoZSBgbWVyZ2VkX3NjZWAgb2JqZWN0IHRvIGludGVncmF0ZSwgYW5kIHRoZSBmaXJzdCBzdGVwIGl0IHBlcmZvcm1zIGlzIGFjdHVhbGx5IHRvIHJ1biBgYmF0Y2hlbG9yOjptdWx0aUJhdGNoUENBKClgIG9uIHRoYXQgU0NFLgpJdCB0aGVuIHVzZXMgdGhhdCBiYXRjaC13ZWlnaHRlZCBQQ0EgbWF0cml4IHRvIHBlcmZvcm0gdGhlIGFjdHVhbCBiYXRjaCBjb3JyZWN0aW9uLgpUaGUgYGJhdGNoYCBhcmd1bWVudCBpcyB1c2VkIHRvIHNwZWNpZnkgdGhlIGRpZmZlcmVudCBncm91cGluZ3Mgd2l0aGluIHRoZSBgbWVyZ2VkX3NjZWAgKGkuZS4gdGhlIG9yaWdpbmFsIHNhbXBsZSB0aGF0IGVhY2ggY2VsbCBiZWxvbmdzIHRvKSwgYW5kIHRoZSBgc3Vic2V0LnJvd2AgYXJndW1lbnQgY2FuIG9wdGlvbmFsbHkgYmUgdXNlZCB0byBwcm92aWRlIGEgdmVjdG9yIG9mIGhpZ2gtdmFyaWFuY2UgZ2VuZXMgdGhhdCBzaG91bGQgYmUgY29uc2lkZXJlZCBmb3IgdGhpcyBQQ0EgY2FsY3VsYXRpb24uCmBmYXN0TU5OYCB3aWxsIHJldHVybiBhbiBTQ0Ugb2JqZWN0IHRoYXQgY29udGFpbnMgYSBiYXRjaC1jb3JyZWN0ZWQgUENBLgpMZXQncyBydW4gaXQgYW5kIHNhdmUgdGhlIHJlc3VsdCB0byBhIHZhcmlhYmxlIGNhbGxlZCBgaW50ZWdyYXRlZF9zY2VgLgoKCmBgYHtyIHJ1biBmYXN0bW5uLCBsaXZlID0gVFJVRX0KIyBpbnRlZ3JhdGUgd2l0aCBmYXN0TU5OLCBhZ2FpbiBzcGVjaWZ5aW5nIG9ubHkgb3VyIGhpZ2gtdmFyaWFuY2UgZ2VuZXMKaW50ZWdyYXRlZF9zY2UgPC0gYmF0Y2hlbG9yOjpmYXN0TU5OKAogIG1lcmdlZF9zY2UsCiAgYmF0Y2ggPSBtZXJnZWRfc2NlJHNhbXBsZSwKICBzdWJzZXQucm93ID0gaHZfZ2VuZXMKKQpgYGAKCkxldCdzIGhhdmUgYSBsb29rIGF0IHRoZSByZXN1bHQ6CgpgYGB7ciBmYXN0bW5uIHJlc3VsdCwgbGl2ZSA9IFRSVUV9CiMgUHJpbnQgdGhlIGludGVncmF0ZWRfc2NlIG9iamVjdAppbnRlZ3JhdGVkX3NjZQpgYGAKClRoZXJlIGFyZSBjb3VwbGUgcGllY2VzIG9mIGluZm9ybWF0aW9uIGhlcmUgb2YgaW50ZXJlc3Q6CgotIFRoZSBgY29ycmVjdGVkYCByZWR1Y2VkIGRpbWVuc2lvbiByZXByZXNlbnRzIHRoZSBiYXRjaC1jb3JyZWN0ZWQgUENBIHRoYXQgYGZhc3RNTk5gIGNhbGN1bGF0ZWQuCi0gVGhlIGByZWNvbnN0cnVjdGVkYCBhc3NheSByZXByZXNlbnRzIHRoZSBiYXRjaC1jb3JyZWN0ZWQgbm9ybWFsaXplZCBleHByZXNzaW9uIHZhbHVlcywgd2hpY2ggYGZhc3RNTk5gICJiYWNrLWNhbGN1bGF0ZWQiIGZyb20gdGhlIGJhdGNoLWNvcnJlY3RlZCBQQ0EgKGBjb3JyZWN0ZWRgKS4KR2VuZXJhbGx5IHNwZWFraW5nLCB0aGVzZSBleHByZXNzaW9uIHZhbHVlcyBhcmUgbm90IHN0YW5kLWFsb25lIHZhbHVlcyB0aGF0IHlvdSBzaG91bGQgdXNlIGZvciBvdGhlciBhcHBsaWNhdGlvbnMgbGlrZSBkaWZmZXJlbnRpYWwgZ2VuZSBleHByZXNzaW9uLCBhcyBkZXNjcmliZWQgaW4gW19PcmNoZXN0cmF0aW5nIFNpbmdsZSBDZWxsIEFuYWx5c2VzX10oaHR0cDovL2Jpb2NvbmR1Y3Rvci5vcmcvYm9va3MvMy4xOS9PU0NBLm11bHRpc2FtcGxlL3VzaW5nLWNvcnJlY3RlZC12YWx1ZXMuaHRtbCkuCklmIHRoZSBgc3Vic2V0LnJvd2AgYXJndW1lbnQgaXMgcHJvdmlkZWQgKGFzIGl0IHdhcyBoZXJlKSwgb25seSBnZW5lcyBwcmVzZW50IGluIGBzdWJzZXQucm93YCB3aWxsIGJlIGluY2x1ZGVkIGluIHRoZXNlIHJlY29uc3RydWN0ZWQgZXhwcmVzc2lvbiB2YWx1ZXMsIGJ1dCB0aGlzIHNldHRpbmcgY2FuIGJlIG92ZXJyaWRkZW4gc28gdGhhdCBhbGwgZ2VuZXMgaGF2ZSByZWNvbnN0cnVjdGVkIGV4cHJlc3Npb24gd2l0aCB0aGUgYXJndW1lbnQgYGNvcnJlY3QuYWxsID0gVFJVRWAuCgpXZSdyZSBtb3N0bHkgaW50ZXJlc3RlZCBpbiB0aGUgUENBIHRoYXQgYGZhc3RNTk5gIGNhbGN1bGF0ZWQsIHNvIGxldCdzIHNhdmUgdGhhdCBpbmZvcm1hdGlvbiAod2l0aCBhbiBpbmZvcm1hdGl2ZSBhbmQgdW5pcXVlIG5hbWUpIGludG8gb3VyIGBtZXJnZWRfc2NlYCBvYmplY3Q6CgpgYGB7ciBmYXN0bW5uIHBjcywgbGl2ZSA9IFRSVUV9CiMgTWFrZSBhIG5ldyByZWR1Y2VkRGltIG5hbWVkIGZhc3Rtbm5fUENBIGZyb20gdGhlIGNvcnJlY3RlZCByZWR1Y2VkRGltIGluIGludGVncmF0ZWRfc2NlCnJlZHVjZWREaW0obWVyZ2VkX3NjZSwgImZhc3Rtbm5fUENBIikgPC0gcmVkdWNlZERpbShpbnRlZ3JhdGVkX3NjZSwgImNvcnJlY3RlZCIpCmBgYAoKRmluYWxseSwgd2UnbGwgY2FsY3VsYXRlIFVNQVAgZnJvbSB0aGVzZSBjb3JyZWN0ZWQgUENBIG1hdHJpeCBmb3IgdmlzdWFsaXphdGlvbi4KCmBgYHtyIGNhbGN1bGF0ZSBmYXN0bW5uIHVtYXAsIGxpdmUgPSBUUlVFfQojIENhbGN1bGF0ZSBVTUFQCm1lcmdlZF9zY2UgPC0gc2NhdGVyOjpydW5VTUFQKAogIG1lcmdlZF9zY2UsCiAgZGltcmVkID0gImZhc3Rtbm5fUENBIiwKICBuYW1lID0gImZhc3Rtbm5fVU1BUCIKKQpgYGAKCkZpcnN0LCBsZXQncyBwbG90IHRoZSBpbnRlZ3JhdGVkIFVNQVAgaGlnaGxpZ2h0aW5nIHRoZSBkaWZmZXJlbnQgYmF0Y2hlcy4KQSB3ZWxsLWludGVncmF0ZWQgZGF0YXNldCB3aWxsIHNob3cgYmF0Y2ggbWl4aW5nLCBidXQgYSBwb29ybHktaW50ZWdyYXRlZCBkYXRhc2V0IHdpbGwgc2hvdyBtb3JlIHNlcGFyYXRpb24gYW1vbmcgYmF0Y2hlcywgc2ltaWxhciB0byB0aGUgdW5jb3JyZWN0ZWQgVU1BUC4KTm90ZSB0aGF0IHRoaXMgaXMgYSBtb3JlIHF1YWxpdGF0aXZlIHdheSB0byBhc3Nlc3MgdGhlIHN1Y2Nlc3Mgb2YgaW50ZWdyYXRpb24sIGJ1dCB0aGVyZSBhcmUgZm9ybWFsIG1ldHJpY3Mgb25lIGNhbiB1c2UgdG8gYXNzZXNzIGJhdGNoIG1peGluZywgd2hpY2ggeW91IGNhbiByZWFkIG1vcmUgYWJvdXQgaW4gW3RoaXMgY2hhcHRlciBvZiBPU0NBXShodHRwOi8vYmlvY29uZHVjdG9yLm9yZy9ib29rcy8zLjE5L09TQ0EubXVsdGlzYW1wbGUvY29ycmVjdGlvbi1kaWFnbm9zdGljcy5odG1sKS4KCmBgYHtyIHBsb3QgZmFzdG1ubiB1bWFwIGJhdGNoZXN9CnNjYXRlcjo6cGxvdFJlZHVjZWREaW0obWVyZ2VkX3NjZSwKICAgICAgICAgICAgICAgICAgICAgICAjIHBsb3QgdGhlIGZhc3RNTk4gY29vcmRpbmF0ZXMKICAgICAgICAgICAgICAgICAgICAgICBkaW1yZWQgPSAiZmFzdG1ubl9VTUFQIiwKICAgICAgICAgICAgICAgICAgICAgICAjIGNvbG9yIGJ5IHNhbXBsZQogICAgICAgICAgICAgICAgICAgICAgIGNvbG9yX2J5ID0gInNhbXBsZSIsCiAgICAgICAgICAgICAgICAgICAgICAgIyBTb21lIHN0eWxpbmcgdG8gaGVscCB1cyBzZWUgdGhlIHBvaW50czoKICAgICAgICAgICAgICAgICAgICAgICBwb2ludF9zaXplID0gMC41LAogICAgICAgICAgICAgICAgICAgICAgIHBvaW50X2FscGhhID0gMC4yKSArCiAgc2NhbGVfY29sb3JfYnJld2VyKHBhbGV0dGUgPSAiRGFyazIiLCBuYW1lID0gInNhbXBsZSIpICsKICBndWlkZXMoY29sb3IgPSBndWlkZV9sZWdlbmQob3ZlcnJpZGUuYWVzID0gbGlzdChzaXplID0gMywgYWxwaGEgPSAxKSkpICsKICBnZ3RpdGxlKCJVTUFQIGFmdGVyIGludGVncmF0aW9uIHdpdGggZmFzdE1OTiIpCmBgYAoKVGhpcyBgZmFzdG1ubl9VTUFQYCBjZXJ0YWlubHkgbG9va3MgZGlmZmVyZW50IGZyb20gdGhlIG9uZSB3ZSBtYWRlIGZyb20gYG1lcmdlZF9VTUFQYCEKV2hhdCBkaWZmZXJlbnQgdHJlbmRzIGRvIHlvdSBzZWU/CkRvIGFsbCBzYW1wbGVzIGxvb2sgImVxdWFsbHkgd2VsbCIgaW50ZWdyYXRlZCwgZnJvbSBhIGZpcnN0IGxvb2s/CgpJbXBvcnRhbnRseSwgb25lIHJlYXNvbiB0aGF0IGJhdGNoZXMgbWF5IHN0aWxsIGFwcGVhciBzZXBhcmF0ZWQgaW4gdGhlIGNvcnJlY3RlZCBVTUFQIGlzIGlmIHRoZXkgX3Nob3VsZF8gYmUgc2VwYXJhdGVkIC0gZm9yIGV4YW1wbGUsIG1heWJlIHR3byBiYXRjaGVzIGNvbnRhaW4gdmVyeSBkaWZmZXJlbnQgY2VsbCB0eXBlcywgaGF2ZSB2ZXJ5IGRpZmZlcmVudCBkaWFnbm9zZXMsIG9yIG1heSBiZSBmcm9tIGRpZmZlcmVudCBwYXRpZW50cy4KClJlY2FsbCBmcm9tIGVhcmxpZXIgdGhhdCB3ZSBjb252ZW5pZW50bHkgaGF2ZSBjZWxsIHR5cGUgYW5ub3RhdGlvbnMgaW4gb3VyIFNDRXMsIHNvIHdlIGNhbiBleHBsb3JlIHRob3NlIGhlcmUhCkxldCdzIHRha2UgYSBxdWljayBkZXRvdXIgdG8gc2VlIHdoYXQga2luZHMgb2YgY2VsbCB0eXBlcyBhcmUgaW4gdGhpcyBkYXRhIGJ5IG1ha2luZyBhIGJhcnBsb3Qgb2YgdGhlIGNlbGwgdHlwZXMgYWNyb3NzIHNhbXBsZXM6CgpgYGB7ciBleHBsb3JlIGNlbGx0eXBlc30KIyBDZWxsIHR5cGVzIGFyZSBpbiB0aGUgYGNlbGx0eXBlX2Jyb2FkYCBhbmQgYGNlbGx0eXBlX2ZpbmVgIGNvbHVtbnMKbWVyZ2VkX3NjZV9kZiA8LSBhcy5kYXRhLmZyYW1lKGNvbERhdGEobWVyZ2VkX3NjZSkpCgojIFVzZSBnZ3Bsb3QyIHRvIG1ha2UgYSBiYXJwbG90IHRoZSBjZWxsIHR5cGVzIGFjcm9zcyBzYW1wbGVzCmdncGxvdChtZXJnZWRfc2NlX2RmLAogICAgICAgYWVzKHggPSBzYW1wbGUsCiAgICAgICAgICAgZmlsbCA9IGNlbGx0eXBlX2Jyb2FkKSkgKwogICMgQmFycGxvdCBvZiBjZWxsdHlwZSBwcm9wb3J0aW9ucwogIGdlb21fYmFyKHBvc2l0aW9uID0gImZpbGwiKSArCiAgIyBVc2UgYSBDVkQtZnJpZW5kbHkgY29sb3Igc2NoZW1lCiAgc2NhbGVfZmlsbF9icmV3ZXIocGFsZXR0ZSA9ICJEYXJrMiIsIG5hLnZhbHVlID0gImdyZXk4MCIpICsKICAjIGN1c3RvbWl6ZSB5LWF4aXMgbGFiZWwKICBsYWJzKHkgPSAiUHJvcG9ydGlvbiIpICsKICAjIG5pY2VyIHRoZW1lCiAgdGhlbWVfYncoKQpgYGAKCldlIHNlZSB0aGF0IFR1bW9yIGNlbGwgdHlwZXMgYXJlIGJ5IGZhciB0aGUgbW9zdCBwcmV2YWxlbnQgYWNyb3NzIGFsbCBzYW1wbGVzLCBhbmQgbm9ybWFsIHRpc3N1ZSBjZWxsIHR5cGVzIGFyZSBub3QgdmVyeSBjb21tb24uCldlIHNlZSBhbHNvIHRoYXQgYFNDUENMMDAwNDgxYCBoYXMgYSBsYXJnZXIgYFR1bW9yX015b2N5dGVgIHBvcHVsYXRpb24sIHdoaWxlIGFsbCBvdGhlciBzYW1wbGVzIGhhdmUgbGFyZ2VyIGBUdW1vcl9NZXNvZGVybWAgcG9wdWxhdGlvbnMuClRoaXMgZGlmZmVyZW5jZSBfbWF5XyBleHBsYWluIHdoeSB3ZSBvYnNlcnZlIHRoYXQgYFNDUENMMDAwNDgxYCBpcyBzb21ld2hhdCBtb3JlIHNlcGFyYXRlZCBmcm9tIHRoZSBvdGhlciBzYW1wbGVzIGluIHRoZSBgZmFzdE1OTmAgVU1BUC4KCkxldCdzIHJlLXBsb3QgdGhpcyBVTUFQIHRvIGhpZ2hsaWdodCBjZWxsIHR5cGVzOgoKCmBgYHtyIHBsb3QgZmFzdG1ubiB1bWFwIGNlbGx0eXBlc30Kc2NhdGVyOjpwbG90UmVkdWNlZERpbShtZXJnZWRfc2NlLAogICAgICAgICAgICAgICAgICAgICAgIGRpbXJlZCA9ICJmYXN0bW5uX1VNQVAiLAogICAgICAgICAgICAgICAgICAgICAgICMgY29sb3IgYnkgYnJvYWQgY2VsbHR5cGVzCiAgICAgICAgICAgICAgICAgICAgICAgY29sb3JfYnkgPSAiY2VsbHR5cGVfYnJvYWQiLAogICAgICAgICAgICAgICAgICAgICAgIHBvaW50X3NpemUgPSAwLjUsCiAgICAgICAgICAgICAgICAgICAgICAgcG9pbnRfYWxwaGEgPSAwLjIpICsKICAjIGluY2x1ZGUgYXJndW1lbnQgdG8gc3BlY2lmeSBjb2xvciBvZiBOQSB2YWx1ZXMKICBzY2FsZV9jb2xvcl9icmV3ZXIocGFsZXR0ZSA9ICJEYXJrMiIsIG5hbWUgPSAiQnJvYWQgY2VsbHR5cGUiLCBuYS52YWx1ZSA9ICJncmV5ODAiKSArCiAgZ3VpZGVzKGNvbG9yID0gZ3VpZGVfbGVnZW5kKG92ZXJyaWRlLmFlcyA9IGxpc3Qoc2l6ZSA9IDMsIGFscGhhID0gMSkpKSArCiAgZ2d0aXRsZSgiVU1BUCBhZnRlciBpbnRlZ3JhdGlvbiB3aXRoIGZhc3RNTk4iKQpgYGAKClRoaXMgVU1BUCBzaG93cyB0aGF0IHRoZSBub3JtYWwgdGlzc3VlIGNlbGwgdHlwZXMgKG1vc3RseSB2YXNjdWxhciBlbmRvdGhlbGl1bSwgbXVzY2xlIGNlbGxzLCBhbmQgbW9ub2N5dGVzKSB0ZW5kIHRvIGNsdXN0ZXIgdG9nZXRoZXIgYW5kIGFyZSBnZW5lcmFsbHkgc2VwYXJhdGVkIGZyb20gdGhlIHR1bW9yIGNlbGwgdHlwZXMsIHdoaWNoIGlzIGFuIGVuY291cmFnaW5nIHBhdHRlcm4hClR1bW9yIGNlbGwgdHlwZXMgZnJvbSBkaWZmZXJlbnQgc2FtcGxlcyBhcmUgYWxsIGFsc28gY2x1c3RlcmluZyB0b2dldGhlciwgd2hpY2ggaXMgZXZlbiBtb3JlIGVuY291cmFnaW5nIHRoYXQgd2UgaGFkIHN1Y2Nlc3NmdWwgaW50ZWdyYXRpb24uCgpIb3dldmVyLCBpdCdzIGEgYml0IGNoYWxsZW5naW5nIHRvIHNlZSBhbGwgdGhlIHBvaW50cyBnaXZlbiB0aGUgYW1vdW50IG9mIG92ZXJsYXAgaW4gdGhlIHBsb3QuCk9uZSB3YXkgd2UgY2FuIHNlZSBhbGwgdGhlIHBvaW50cyBhIGJpdCBiZXR0ZXIgaXMgdG8gZmFjZXQgdGhlIHBsb3QgYnkgc2FtcGxlLCB1c2luZyBgZmFjZXRfd3JhcCgpYCBmcm9tIHRoZSBgZ2dwbG90MmAgcGFja2FnZSAod2hpY2ggd2UgY2FuIGRvIGJlY2F1c2UgYHNjYXRlcjo6cGxvdFJlZHVjZWREaW0oKWAgcmV0dXJucyBhIGBnZ3Bsb3QyYCBvYmplY3QpOgoKYGBge3IgcGxvdCBmYXN0bW5uIHVtYXAgY2VsbHR5cGVzIGZhY2V0ZWR9CnNjYXRlcjo6cGxvdFJlZHVjZWREaW0obWVyZ2VkX3NjZSwKICAgICAgICAgICAgICAgICAgICAgICBkaW1yZWQgPSAiZmFzdG1ubl9VTUFQIiwKICAgICAgICAgICAgICAgICAgICAgICBjb2xvcl9ieSA9ICJjZWxsdHlwZV9icm9hZCIsCiAgICAgICAgICAgICAgICAgICAgICAgcG9pbnRfc2l6ZSA9IDAuNSwKICAgICAgICAgICAgICAgICAgICAgICBwb2ludF9hbHBoYSA9IDAuMiwKICAgICAgICAgICAgICAgICAgICAgICAjIEFsbG93IGZvciBmYWNldGluZyBieSBhIHZhcmlhYmxlIHVzaW5nIGBvdGhlcl9maWVsZHNgOgogICAgICAgICAgICAgICAgICAgICAgIG90aGVyX2ZpZWxkcyA9ICJzYW1wbGUiKSArCiAgc2NhbGVfY29sb3JfYnJld2VyKHBhbGV0dGUgPSAiRGFyazIiLCBuYW1lID0gIkJyb2FkIGNlbGx0eXBlIiwgbmEudmFsdWUgPSAiZ3JleTgwIikgKwogIGd1aWRlcyhjb2xvciA9IGd1aWRlX2xlZ2VuZChvdmVycmlkZS5hZXMgPSBsaXN0KHNpemUgPSAzLCBhbHBoYSA9IDEpKSkgKwogIGdndGl0bGUoIlVNQVAgYWZ0ZXIgaW50ZWdyYXRpb24gd2l0aCBmYXN0TU5OIikgKwogICMgRmFjZXQgYnkgc2FtcGxlCiAgZmFjZXRfd3JhcCh2YXJzKHNhbXBsZSkpICsKICAjIFVzZSBhIHRoZW1lIHdpdGggYmFja2dyb3VuZCBncmlkIHRvIG1vcmUgZWFzaWx5IGNvbXBhcmUgcGFuZWwgY29vcmRpbmF0ZXMKICB0aGVtZV9idygpCmBgYAoKV2hhdCB0cmVuZHMgZG8geW91IG9ic2VydmUgYmV0d2VlbiB0dW1vciBhbmQgaGVhbHRoeSB0aXNzdWVzIGFtb25nIHRoZXNlIGludGVncmF0ZWQgc2FtcGxlcz8KCgojIyMgSW50ZWdyYXRpb24gd2l0aCBgaGFybW9ueWAKCmBmYXN0TU5OYCBpcyBvbmx5IG9uZSBvZiBtYW55IGFwcHJvYWNoZXMgdG8gcGVyZm9ybSBpbnRlZ3JhdGlvbiwgYW5kIGRpZmZlcmVudCBtZXRob2RzIGhhdmUgZGlmZmVyZW50IGNhcGFiaWxpdGllcyBhbmQgbWF5IGdpdmUgZGlmZmVyZW50IHJlc3VsdHMuCkZvciBleGFtcGxlLCBzb21lIG1ldGhvZHMgY2FuIGFjY29tbW9kYXRlIGFkZGl0aW9uYWwgY292YXJpYXRlcyAoZS5nLiwgdGVjaG5vbG9neSwgcGF0aWVudCwgZGlhZ25vc2lzLCBldGMuKSB0aGF0IGNhbiBpbmZsdWVuY2UgaW50ZWdyYXRpb24uCkluIGZhY3QgdGhlIGRhdGEgd2UgYXJlIHVzaW5nIGhhcyBhIGtub3duIF9wYXRpZW50XyBjb3ZhcmlhdGU7IGBTQ1BDTDAwMDQ3OWAgYW5kIGBTQ1BDTDAwMDQ4MGAgYXJlIGZyb20gdGhlIGZpcnN0IHBhdGllbnQsIGFuZCBgU0NQQ0wwMDA0ODFgIGFuZCBgU0NQQ0wwMDA0ODJgIGFyZSBmcm9tIHRoZSBzZWNvbmQgcGF0aWVudC4KClNvLCBsZXQncyBwZXJmb3JtIGludGVncmF0aW9uIHdpdGggYSBtZXRob2QgdGhhdCBjYW4gdXNlIHRoaXMgaW5mb3JtYXRpb24gLSBbYGhhcm1vbnlgXShodHRwczovL3BvcnRhbHMuYnJvYWRpbnN0aXR1dGUub3JnL2hhcm1vbnkvKSEKClRvIGJlZ2luIHNldHRpbmcgdXAgZm9yIGBoYXJtb255YCBpbnRlZ3JhdGlvbiwgd2UgbmVlZCB0byBhZGQgZXhwbGljaXQgcGF0aWVudCBpbmZvcm1hdGlvbiBpbnRvIG91ciBtZXJnZWQgU0NFLgpXZSdsbCBjcmVhdGUgYSBuZXcgY29sdW1uIGBwYXRpZW50YCB3aG9zZSB2YWx1ZSBpcyBlaXRoZXIgIkEiIG9yICJCIiBkZXBlbmRpbmcgb24gdGhlIGdpdmVuIHNhbXBsZSBuYW1lLCB1c2luZyB0aGUgW2BkcGx5cjo6Y2FzZV93aGVuKClgXShodHRwczovL2RwbHlyLnRpZHl2ZXJzZS5vcmcvcmVmZXJlbmNlL2Nhc2Vfd2hlbi5odG1sKSBmdW5jdGlvbi4KV2UgcHJvdmlkZSB0aGlzIGZ1bmN0aW9uIHdpdGggYSBzZXQgb2YgbG9naWNhbCBleHByZXNzaW9ucyBhbmQgZWFjaCBhc3NpZ25lZCB2YWx1ZSBpcyBkZXNpZ25hdGVkIGJ5IGB+YC4KVGhlIGV4cHJlc3Npb25zIGFyZSBldmFsdWF0ZWQgaW4gb3JkZXIsIHN0b3BwaW5nIGF0IHRoZSBfZmlyc3RfIG9uZSB0aGF0IGV2YWx1YXRlcyBhcyBgVFJVRWAgYW5kIHJldHVybmluZyB0aGUgYXNzb2NpYXRlZCB2YWx1ZS4KCmBgYHtyIGFkZCBwYXRpZW50IGluZm99CiMgQ3JlYXRlIHBhdGllbnQgY29sdW1uIHdpdGggdmFsdWVzICJBIiBvciAiQiIgZm9yIHRoZSB0d28gcGF0aWVudHMKbWVyZ2VkX3NjZSRwYXRpZW50IDwtIGRwbHlyOjpjYXNlX3doZW4oCiAgbWVyZ2VkX3NjZSRzYW1wbGUgJWluJSBjKCJTQ1BDTDAwMDQ3OSIsICJTQ1BDTDAwMDQ4MCIpIH4gIkEiLAogIG1lcmdlZF9zY2Ukc2FtcGxlICVpbiUgYygiU0NQQ0wwMDA0ODEiLCAiU0NQQ0wwMDA0ODIiKSB+ICJCIiwKKQpgYGAKCgpVbmxpa2UgYGZhc3RNTk5gLCBgaGFybW9ueWAgZG9lcyBub3QgY2FsY3VsYXRlIGNvcnJlY3RlZCBleHByZXNzaW9uIHZhbHVlcyBub3IgZG9lcyBpdCByZXR1cm4gYW4gU0NFIG9iamVjdC4KTGlrZSBgZmFzdE1OTmAsIGBoYXJtb255YCBwZXJmb3JtcyBpbnRlZ3JhdGlvbiBvbiBhIG1lcmdlZCBQQ0EgbWF0cml4LgpIb3dldmVyLCB1bmxpa2UgYGZhc3RNTk5gLCBgaGFybW9ueWAgZG9lcyBub3QgImJhY2stY2FsY3VsYXRlIiBjb3JyZWN0ZWQgZXhwcmVzc2lvbiBmcm9tIHRoZSBjb3JyZWN0ZWQgUENBIG1hdHJpeCBhbmQgaXQgb25seSByZXR1cm5zIHRoZSBjb3JyZWN0ZWQgUENBIG1hdHJpeCBpdHNlbGYuCkZvciBpbnB1dCwgYGhhcm1vbnlgIG5lZWRzIGEgY291cGxlIHBpZWNlcyBvZiBpbmZvcm1hdGlvbjoKCi0gRmlyc3QsIGBoYXJtb255YCB0YWtlcyBhIGJhdGNoLXdlaWdodGVkIFBDQSBtYXRyaXggdG8gcGVyZm9ybSBpbnRlZ3JhdGlvbi4KV2UgYWxyZWFkeSBjYWxjdWxhdGVkIGEgYmF0Y2gtd2VpZ2h0ZWQgUENBIG1hdHJpeCAob3VyIGBtZXJnZWRfUENBYCByZWR1Y2VkIGRpbWVuc2lvbiksIHdlJ2xsIHByb3ZpZGUgdGhpcyBhcyB0aGUgdGhlIGlucHV0LgotIFNlY29uZCwgd2UgbmVlZCB0byB0ZWxsIGBoYXJtb255YCBhYm91dCB0aGUgY292YXJpYXRlcyB0byB1c2UgLSBgc2FtcGxlYCBhbmQgYHBhdGllbnRgLgpUbyBkbyB0aGlzLCB3ZSBwcm92aWRlIHR3byBhcmd1bWVudHM6CiAgLSBgbWV0YV9kYXRhYCwgYSBkYXRhIGZyYW1lIHRoYXQgY29udGFpbnMgY292YXJpYXRlcyBhY3Jvc3Mgc2FtcGxlcy4KICBXZSBjYW4gc2ltcGx5IHNwZWNpZnkgdGhlIFNDRSBgY29sRGF0YWAgaGVyZSBzaW5jZSBpdCBjb250YWlucyBgc2FtcGxlYCBhbmQgYHBhdGllbnRgIGNvbHVtbnMuCiAgLSBgdmFyc191c2VgLCBhIHZlY3RvciBvZiB3aGljaCBjb2x1bW4gbmFtZXMgaW4gYG1ldGFfZGF0YWAgc2hvdWxkIGFjdHVhbGx5IGJlIHVzZWQgYXMgY292YXJpYXRlcy4KICBPdGhlciBjb2x1bW5zIGluIGBtZXRhX2RhdGFgIHdoaWNoIGFyZSBub3QgaW4gYHZhcnNfdXNlYCBhcmUgaWdub3JlZC4KCkxldCdzIGdvIQoKYGBge3IgcnVuIGhhcm1vbnksIGxpdmUgPSBUUlVFfQojIFJ1biBoYXJtb255IGludGVncmF0aW9uCmhhcm1vbnlfcGNhIDwtIGhhcm1vbnk6OlJ1bkhhcm1vbnkoCiAgZGF0YV9tYXQgPSByZWR1Y2VkRGltKG1lcmdlZF9zY2UsICJtZXJnZWRfUENBIiksCiAgbWV0YV9kYXRhID0gY29sRGF0YShtZXJnZWRfc2NlKSwKICB2YXJzX3VzZSA9IGMoInNhbXBsZSIsICJwYXRpZW50IikKKQpgYGAKClRoZSByZXN1bHQgaXMgYSBQQ0EgbWF0cml4LgpMZXQncyBwcmludCBhIHN1YnNldCBvZiB0aGlzIG1hdHJpeCB0byBzZWUgaXQ6CgpgYGB7ciBwcmludCBoYXJtb255IHJlc3VsdCwgbGl2ZSA9IFRSVUV9CiMgUHJpbnQgdGhlIGhhcm1vbnkgcmVzdWx0Cmhhcm1vbnlfcGNhWzE6NSwgMTo1XQpgYGAKCkFzIHdlIGRpZCB3aXRoIGBmYXN0TU5OYCByZXN1bHRzLCBsZXQncyBzdG9yZSB0aGlzIFBDQSBtYXRyaXggZGlyZWN0bHkgaW4gb3VyIGBtZXJnZWRfc2NlYCBvYmplY3Qgd2l0aCBhbiBpbmZvcm1hdGl2ZSBuYW1lIHRoYXQgd29uJ3Qgb3ZlcndyaXRlIGFueSBvZiB0aGUgZXhpc3RpbmcgUENBIG1hdHJpY2VzLgpXZSdsbCBhbHNvIGNhbGN1bGF0ZSBVTUFQIGZyb20gaXQuCgpgYGB7ciBzYXZlIGhhcm1vbnksIGxpdmUgPSBUUlVFfQojIFN0b3JlIFBDQSBhcyBgaGFybW9ueV9QQ0FgCnJlZHVjZWREaW0obWVyZ2VkX3NjZSwgImhhcm1vbnlfUENBIikgPC0gaGFybW9ueV9wY2EKCiMgQXMgYmVmb3JlLCBjYWxjdWxhdGUgVU1BUCBvbiB0aGlzIFBDQSBtYXRyaXggd2l0aCBhcHByb3ByaWF0ZSBuYW1lcwptZXJnZWRfc2NlIDwtIHNjYXRlcjo6cnVuVU1BUChtZXJnZWRfc2NlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaW1yZWQgPSAiaGFybW9ueV9QQ0EiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lICAgPSAiaGFybW9ueV9VTUFQIikKYGBgCgoKTGV0J3Mgc2VlIGhvdyB0aGUgYGhhcm1vbnlgIFVNQVAsIGNvbG9yZWQgYnkgc2FtcGxlLCBsb29rcyBjb21wYXJlZCB0byB0aGUgYGZhc3RNTk5gIFVNQVA6CgpgYGB7ciBwbG90IGhhcm1vbnkgdW1hcCBiYXRjaGVzfQpzY2F0ZXI6OnBsb3RSZWR1Y2VkRGltKG1lcmdlZF9zY2UsCiAgICAgICAgICAgICAgICAgICAgICAgZGltcmVkID0gImhhcm1vbnlfVU1BUCIsCiAgICAgICAgICAgICAgICAgICAgICAgY29sb3JfYnkgPSAic2FtcGxlIiwKICAgICAgICAgICAgICAgICAgICAgICBwb2ludF9zaXplID0gMC41LAogICAgICAgICAgICAgICAgICAgICAgIHBvaW50X2FscGhhID0gMC4yKSArCiAgc2NhbGVfY29sb3JfYnJld2VyKHBhbGV0dGUgPSAiRGFyazIiLCBuYW1lID0gInNhbXBsZSIpICsKICBndWlkZXMoY29sb3IgPSBndWlkZV9sZWdlbmQob3ZlcnJpZGUuYWVzID0gbGlzdChzaXplID0gMywgYWxwaGEgPSAxKSkpICsKICBnZ3RpdGxlKCJVTUFQIGFmdGVyIGludGVncmF0aW9uIHdpdGggaGFybW9ueSIpCmBgYAoKSG93IGRvIHlvdSB0aGluayB0aGlzIGBoYXJtb255YCBVTUFQIGNvbXBhcmVzIHRvIHRoYXQgZnJvbSBgZmFzdE1OTmAgaW50ZWdyYXRpb24/CgpMZXQncyBzZWUgaG93IHRoaXMgVU1BUCBsb29rcyBjb2xvcmVkIGJ5IGNlbGwgdHlwZSwgYW5kIGZhY2V0ZWQgZm9yIHZpc2liaWxpdHk6CgpgYGB7ciBwbG90IGhhcm1vbnkgdW1hcCBjZWxsdHlwZXN9CnNjYXRlcjo6cGxvdFJlZHVjZWREaW0obWVyZ2VkX3NjZSwKICAgICAgICAgICAgICAgICAgICAgICBkaW1yZWQgPSAiaGFybW9ueV9VTUFQIiwKICAgICAgICAgICAgICAgICAgICAgICBjb2xvcl9ieSA9ICJjZWxsdHlwZV9icm9hZCIsCiAgICAgICAgICAgICAgICAgICAgICAgcG9pbnRfc2l6ZSA9IDAuNSwKICAgICAgICAgICAgICAgICAgICAgICBwb2ludF9hbHBoYSA9IDAuMiwKICAgICAgICAgICAgICAgICAgICAgICAjIFNwZWNpZnkgdmFyaWFibGUgZm9yIGZhY2V0aW5nCiAgICAgICAgICAgICAgICAgICAgICAgb3RoZXJfZmllbGRzID0gInNhbXBsZSIpICsKICBzY2FsZV9jb2xvcl9icmV3ZXIocGFsZXR0ZSA9ICJEYXJrMiIsIG5hbWUgPSAiQnJvYWQgY2VsbHR5cGUiLCBuYS52YWx1ZSA9ICJncmV5ODAiKSArCiAgZ3VpZGVzKGNvbG9yID0gZ3VpZGVfbGVnZW5kKG92ZXJyaWRlLmFlcyA9IGxpc3Qoc2l6ZSA9IDMpKSkgKwogIGdndGl0bGUoIlVNQVAgYWZ0ZXIgaW50ZWdyYXRpb24gd2l0aCBoYXJtb255IikgKwogIGZhY2V0X3dyYXAodmFycyhzYW1wbGUpKQpgYGAKCldoYXQgZG8geW91IG5vdyBub3RpY2UgaW4gdGhpcyBmYWNldGVkIHZpZXcgdGhhdCB3YXNuJ3QgY2xlYXIgcHJldmlvdXNseT8KQXJlIHRoZXJlIG90aGVyIHBhdHRlcm5zIHlvdSBzZWUgdGhhdCBhcmUgc2ltaWxhciBvciBkaWZmZXJlbnQgZnJvbSB0aGUgYGZhc3RNTk5gIFVNQVA/CkhvdyBkbyB5b3UgdGhpbmsgYGZhc3RNTk5gIHZzLiBgaGFybW9ueWAgcGVyZm9ybWVkIGluIGludGVncmF0aW5nIHRoZXNlIHNhbXBsZXM/CgojIyMgRXhwb3J0CgpGaW5hbGx5LCB3ZSdsbCBleHBvcnQgdGhlIGZpbmFsIFNDRSBvYmplY3Qgd2l0aCBib3RoIGBmYXN0TU5OYCBhbmQgYGhhcm1vbnlgIGludGVncmF0aW9uIHRvIGEgZmlsZS4KU2luY2UgdGhpcyBvYmplY3QgaXMgdmVyeSBsYXJnZSAob3ZlciAxIEdCISksIHdlJ2xsIGV4cG9ydCBpdCB0byBhIGZpbGUgd2l0aCBzb21lIGNvbXByZXNzaW9uLCB3aGljaCwgaW4gdGhpcyBjYXNlLCB3aWxsIHJlZHVjZSB0aGUgZmluYWwgc2l6ZSB0byBhIHNtYWxsZXIgfjM2MCBNQi4KVGhpcyB3aWxsIHRha2UgYSBjb3VwbGUgbWludXRlcyB0byBzYXZlIHdoaWxlIGNvbXByZXNzaW9uIGlzIHBlcmZvcm1lZC4KCmBgYHtyIHNhdmUgaW50ZWdyYXRpb24sIGxpdmUgPSBUUlVFfQojIEV4cG9ydCB0byBSRFMgZmlsZSB3aXRoICJneiIgY29tcHJlc3Npb24KcmVhZHI6OndyaXRlX3JkcyhtZXJnZWRfc2NlLAogICAgICAgICAgICAgICAgIGludGVncmF0ZWRfc2NlX2ZpbGUsCiAgICAgICAgICAgICAgICAgY29tcHJlc3MgPSAiZ3oiKQpgYGAKCgojIyBQcmludCBzZXNzaW9uIGluZm8KCkFzIGFsd2F5cywgd2UnbGwgcHJpbnQgdGhlIHNlc3Npb24gaW5mbyB0byBiZSB0cmFuc3BhcmVudCBhYm91dCB3aGF0IHBhY2thZ2VzLCBhbmQgd2hpY2ggdmVyc2lvbnMsIHdlcmUgdXNlZCBkdXJpbmcgdGhpcyBSIHNlc3Npb24uCgpgYGB7ciBzZXNzaW9uaW5mb30Kc2Vzc2lvbkluZm8oKQpgYGAK
    +
    LS0tCnRpdGxlOiAiSW50ZWdyYXRpbmcgc2NSTkEtc2VxIGRhdGFzZXRzIgphdXRob3I6IERhdGEgTGFiIGZvciBBTFNGCmRhdGU6IDIwMjMKb3V0cHV0OgogIGh0bWxfbm90ZWJvb2s6CiAgICB0b2M6IHRydWUKICAgIHRvY19kZXB0aDogMwogICAgdG9jX2Zsb2F0OiB0cnVlCi0tLQoKIyMgT2JqZWN0aXZlcwoKVGhpcyBub3RlYm9vayB3aWxsIGRlbW9uc3RyYXRlIGhvdyB0bzoKCi0gUHJlcGFyZSBTQ0Ugb2JqZWN0cyBmb3IgaW50ZWdyYXRpb24KLSBBcHBseSBpbnRlZ3JhdGlvbiBtZXRob2RzIGluY2x1ZGluZyBgZmFzdE1OTmAgYW5kIGBoYXJtb255YAotIFZpc3VhbGx5IGV4cGxvcmUgdGhlIHJlc3VsdHMgb2YgaW50ZWdyYXRpb24KLSBVc2UgYHB1cnJyOjptYXAoKWAgZnVuY3Rpb25zIGZvciBpdGVyYXRpbmcgb3ZlciBsaXN0cwoKLS0tCgpJbiB0aGlzIG5vdGVib29rLCB3ZSdsbCBwZXJmb3JtIGludGVncmF0aW9uIG9uIHNjUk5BLXNlcSBkYXRhc2V0cyBmcm9tIHRoZSBbU2luZ2xlLWNlbGwgUGVkaWF0cmljIENhbmNlciBBdGxhcyAoYFNjUENBYCldKGh0dHBzOi8vc2NwY2EuYWxleHNsZW1vbmFkZS5vcmcvKSwgYSBkYXRhYmFzZSBvZiB1bmlmb3JtbHktcHJvY2Vzc2VkIHBlZGlhdHJpYyBzY1JOQS1zZXEgZGF0YSBidWlsdCBhbmQgbWFpbnRhaW5lZCBieSB0aGUgRGF0YSBMYWIuClRoZSBgU2NQQ0FgIGRhdGFiYXNlIGN1cnJlbnRseSBob3N0cyBzaW5nbGUtY2VsbCBwZWRpYXRyaWMgY2FuY2VyIHRyYW5zY3JpcHRvbWljIGRhdGEgZ2VuZXJhdGVkIGJ5IEFMU0YtZnVuZGVkIGxhYnMsIHdpdGggdGhlIGdvYWwgb2YgbWFraW5nIHRoaXMgZGF0YSBlYXNpbHkgYWNjZXNzaWJsZSB0byBpbnZlc3RpZ2F0b3JzIChsaWtlIHlvdSEpLgpUaGUgZXhwcmVzc2lvbiBkYXRhIGluIGBTY1BDQWAgd2VyZSBtYXBwaW5nIGFuZCBxdWFudGlmaWVkIHdpdGggW2BhbGV2aW4tZnJ5YF0oaHR0cHM6Ly9kb2kub3JnLzEwLjEwMzgvczQxNTkyLTAyMi0wMTQwOC0zKSwgZm9sbG93ZWQgYnkgcHJvY2Vzc2luZyB3aXRoIEJpb2NvbmR1Y3RvciB0b29scyB1c2luZyB0aGUgc2FtZSBnZW5lcmFsIHByb2NlZHVyZXMgdGhhdCB3ZSBoYXZlIGNvdmVyZWQgaW4gdGhpcyB3b3Jrc2hvcC4KVGhlIHByb2Nlc3NpbmcgcGlwZWxpbmUgdXNlZCBgZW1wdHlEcm9wc0NlbGxSYW5nZXIoKWAgYW5kIGBtaVFDYCB0byBmaWx0ZXIgdGhlIHJhdyBjb3VudHMgbWF0cml4LCBgc2N1dHRsZWAgdG8gbG9nLW5vcm1hbGl6ZSB0aGUgY291bnRzLCBhbmQgYHNjYXRlcmAgZm9yIGRpbWVuc2lvbiByZWR1Y3Rpb24uClRoZSBwcm9jZXNzZWQgZGF0YSBhcmUgc3RvcmVkIGFzIGAucmRzYCBmaWxlcyBjb250YWluaW5nIGBTaW5nbGVDZWxsRXhwZXJpbWVudGAgb2JqZWN0cy4KWW91IGNhbiByZWFkIG1vcmUgYWJvdXQgaG93IGRhdGEgaW4gdGhlIGBTY1BDQWAgaXMgcHJvY2Vzc2VkIGluIFt0aGUgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uXShodHRwczovL3NjcGNhLnJlYWR0aGVkb2NzLmlvL2VuL2xhdGVzdC8pLgoKCiFbU2luZ2xlLWNlbGwgcm9hZG1hcDogSW50ZWdyYXRpb24gT3ZlcnZpZXddKGRpYWdyYW1zL3JvYWRtYXBfbXVsdGlfbWVyZ2UtaW50ZWdyYXRlLnBuZykKClRvIGxlYXJuIGFib3V0IGludGVncmF0aW9uLCB3ZSdsbCBoYXZlIGEgbG9vayBhdCBmb3VyIHNhbXBsZXMgZnJvbSB0aGUgW2BTQ1BDUDAwMDAwNWAgcHJvamVjdF0oaHR0cHM6Ly9zY3BjYS5hbGV4c2xlbW9uYWRlLm9yZy9wcm9qZWN0cy9TQ1BDUDAwMDAwNSkgKFtQYXRlbCBfZXQgYWwuXyAyMDIyXShodHRwczovL2RvaS5vcmcvMTAuMTAxNi9qLmRldmNlbC4yMDIyLjA0LjAwMykpLCBhbiBpbnZlc3RpZ2F0aW9uIG9mIHBlZGlhdHJpYyBzb2xpZCB0dW1vcnMgbGVkIGJ5IHRoZSBbRHllcl0oaHR0cHM6Ly93d3cuc3RqdWRlLm9yZy9yZXNlYXJjaC9sYWJzL2R5ZXItbGFiLmh0bWwpIGFuZCBbQ2hlbl0oaHR0cHM6Ly93d3cuc3RqdWRlLm9yZy9yZXNlYXJjaC9sYWJzL2NoZW4tbGFiLXRhb3NoZW5nLmh0bWwpIGxhYnMgYXQgU3QuIEp1ZGUgQ2hpbGRyZW4ncyBSZXNlYXJjaCBIb3NwaXRhbC4KVGhlIHBhcnRpY3VsYXIgbGlicmFyaWVzIHdlJ2xsIGludGVncmF0ZSBjb21lIGZyb20gdHdvIHJoYWJkb215b3NhcmNvbWEgKFJNUykgcGF0aWVudHMsIHdpdGggdHdvIHNhbXBsZXMgZnJvbSBlYWNoIG9mIHR3byBwYXRpZW50cywgYWxsIHNlcXVlbmNlZCB3aXRoIDEweCBDaHJvbWl1bSB2MyB0ZWNobm9sb2d5LgpFYWNoIGxpYnJhcnkgaXMgZnJvbSBhIHNlcGFyYXRlIGJpb2xvZ2ljYWwgc2FtcGxlLgoKV2UnbGwgYmUgaW50ZWdyYXRpbmcgdGhlc2Ugc2FtcGxlcyB3aXRoIHR3byBkaWZmZXJlbnQgdG9vbHMsIFtgZmFzdE1OTmBdKGh0dHA6Ly93d3cuYmlvY29uZHVjdG9yLm9yZy9wYWNrYWdlcy9yZWxlYXNlL2Jpb2MvaHRtbC9iYXRjaGVsb3IuaHRtbCkgKFtIYWdodmVyZGkgX2V0IGFsLl8gMjAxOF0oaHR0cHM6Ly9kb2kub3JnLzEwLjEwMzgvbmJ0LjQwOTEpKSBhbmQgW2BoYXJtb255YF0oaHR0cHM6Ly9wb3J0YWxzLmJyb2FkaW5zdGl0dXRlLm9yZy9oYXJtb255LykgKFtLb3JzdW5za3kgX2V0IGFsLl8gMjAxOV0oaHR0cHM6Ly9kb2kub3JnLzEwLjEwMzgvczQxNTkyLTAxOS0wNjE5LTApKS4KSW50ZWdyYXRpb24gY29ycmVjdHMgZm9yIGJhdGNoIGVmZmVjdHMgdGhhdCBhcmlzZSBmcm9tIGRpZmZlcmVudCBsaWJyYXJ5IHByZXBhcmF0aW9ucywgZ2VuZXRpYyBiYWNrZ3JvdW5kcywgYW5kIG90aGVyIHNhbXBsZS1zcGVjaWZpYyBmYWN0b3JzLCBzbyB0aGF0IGRhdGFzZXRzIGNhbiBiZSBqb2ludGx5IGFuYWx5emVkIGF0IHRoZSBjZWxsIGxldmVsLgpgZmFzdE1OTmAgY29ycmVjdHMgZm9yIGJhdGNoIGVmZmVjdHMgdXNpbmcgYSBmYXN0ZXIgdmFyaWFudCBvZiB0aGUgbXV0dWFsLW5lYXJlc3QgbmVpZ2hib3JzIGFsZ29yaXRobSwgdGhlIHRlY2huaWNhbCBkZXRhaWxzIG9mIHdoaWNoIHlvdSBjYW4gbGVhcm4gbW9yZSBhYm91dCBmcm9tIHRoaXMgW3ZpZ25ldHRlIGJ5IEx1biAoMjAxOSldKGh0dHBzOi8vbWFyaW9uaWxhYi5naXRodWIuaW8vRnVydGhlck1OTjIwMTgvdGhlb3J5L2Rlc2NyaXB0aW9uLmh0bWwpLgpgaGFybW9ueWAsIG9uIHRoZSBvdGhlciBoYW5kLCBjb3JyZWN0cyBmb3IgYmF0Y2ggZWZmZWN0cyB1c2luZyBhbiBpdGVyYXRpdmUgY2x1c3RlcmluZyBhcHByb2FjaCwgYW5kIHVubGlrZSBgZmFzdE1OTmAsIGl0IGlzIGFsc28gYWJsZSB0byBjb25zaWRlciBhZGRpdGlvbmFsIGNvdmFyaWF0ZXMgYmV5b25kIGp1c3QgdGhlIGJhdGNoIGdyb3VwaW5ncy4KClJlZ2FyZGxlc3Mgb2Ygd2hpY2ggaW50ZWdyYXRpb24gdG9vbCBpcyB1c2VkLCB0aGUgYFNpbmdsZUNlbGxFeHBlcmltZW50YCAoU0NFKSBvYmplY3RzIGZpcnN0IG5lZWQgdG8gYmUgcmVmb3JtYXR0ZWQgYW5kIG1lcmdlZCBpbnRvIGEgc2luZ2xlICh1bmNvcnJlY3RlZCEpIFNDRSBvYmplY3QgdGhhdCBjb250YWlucyBhbGwgY2VsbHMgZnJvbSBhbGwgc2FtcGxlcy4KVGhpcyBtZXJnZWQgU0NFIGNhbiB0aGVuIGJlIHVzZWQgZm9yIGludGVncmF0aW9uIHRvIG9idGFpbiBhIGZvcm1hbGx5IGJhdGNoLWNvcnJlY3RlZCBTQ0Ugb2JqZWN0LgoKCiMjIFNldCB1cAoKYGBge3Igc2V0dXB9CiMgTG9hZCBsaWJyYXJpZXMKbGlicmFyeShnZ3Bsb3QyKSAgIyBwbG90dGluZyB0b29scwpsaWJyYXJ5KFNpbmdsZUNlbGxFeHBlcmltZW50KSAjIHdvcmsgd2l0aCBTQ0Ugb2JqZWN0cwoKIyBTZXQgdGhlIHNlZWQgZm9yIHJlcHJvZHVjaWJpbGl0eQpzZXQuc2VlZCgxMjM0NSkKYGBgCgoKIyMjIERlZmluZSBkaXJlY3RvcmllcyBhbmQgZmlsZXMKCgpXZSBoYXZlIGFscmVhZHkgcHJlcGFyZWQgY291bnQgZGF0YSBmb3IgdGhlIGZvdXIgc2FtcGxlcyB3ZSdsbCBiZSBpbnRlZ3JhdGluZyAoaS5lLiwgZmlsdGVyZWQgY2VsbHMsIG5vcm1hbGl6ZWQgY291bnRzLCBhbmQgY2FsY3VsYXRlZCBQQ0EgJiBVTUFQKS4KVGhlc2UgU0NFIG9iamVjdHMsIHN0b3JlZCBhcyBSRFMgZmlsZXMsIGFyZSBhdmFpbGFibGUgaW4gdGhlIGBkYXRhL3Jtcy9wcm9jZXNzZWQvYCBkaXJlY3RvcnkgYW5kIGFyZSBuYW1lZCBhY2NvcmRpbmcgdG8gdGhlaXIgYFNjUENBYCBsaWJyYXJ5IGlkcyA6CgotIGBTQ1BDTDAwMDQ3OS5yZHNgIChQYXRpZW50IEEpCi0gYFNDUENMMDAwNDgwLnJkc2AgKFBhdGllbnQgQSkKLSBgU0NQQ0wwMDA0ODEucmRzYCAoUGF0aWVudCBCKQotIGBTQ1BDTDAwMDQ4Mi5yZHNgIChQYXRpZW50IEIpCgpCb3RoIFBhdGllbnQgQSAoMTggeWVhciBvbGQgbWFsZSkgYW5kIFBhdGllbnQgQiAoNCB5ZWFyIG9sZCBmZW1hbGUpIGhhZCByZWN1cnJlbnQgZW1icnlvbmFsIHJoYWJkb215b3NhcmNvbWEgd2hlbiBzYW1wbGVzIHdlcmUgdGFrZW4uCgpUbyBiZWdpbiwgbGV0J3Mgc2V0IHVwIG91ciBkaXJlY3RvcmllcyBhbmQgZmlsZXM6CgpgYGB7ciBkaXJlY3Rvcmllc30KIyBEZWZpbmUgZGlyZWN0b3J5IHdoZXJlIHByb2Nlc3NlZCBTQ0Ugb2JqZWN0cyB0byBiZSBpbnRlZ3JhdGVkIGFyZSBzdG9yZWQKaW5wdXRfZGlyIDwtIGZpbGUucGF0aCgiZGF0YSIsICJybXMiLCAicHJvY2Vzc2VkIikKCiMgRGVmaW5lIGRpcmVjdG9yeSB0byBzYXZlIGludGVncmF0ZWQgU0NFIG9iamVjdCB0bwpvdXRwdXRfZGlyIDwtIGZpbGUucGF0aCgiZGF0YSIsICJybXMiLCAiaW50ZWdyYXRlZCIpCgojIENyZWF0ZSBvdXRwdXQgZGlyZWN0b3J5IGlmIGl0IGRvZXNuJ3QgZXhpc3QKZnM6OmRpcl9jcmVhdGUob3V0cHV0X2RpcikKCiMgRGVmaW5lIG91dHB1dCBmaWxlIG5hbWUgZm9yIHRoZSBpbnRlZ3JhdGVkIG9iamVjdAppbnRlZ3JhdGVkX3NjZV9maWxlIDwtIGZpbGUucGF0aChvdXRwdXRfZGlyLCAicm1zX2ludGVncmF0ZWRfc3Vic2V0LnJkcyIpCmBgYAoKCldlIGNhbiB1c2UgdGhlIGBkaXIoKWAgZnVuY3Rpb24gdG8gbGlzdCBhbGwgY29udGVudHMgb2YgYSBnaXZlbiBkaXJlY3RvcnksIGZvciBleGFtcGxlIHRvIHNlZSBhbGwgdGhlIGZpbGVzIGluIG91ciBgaW5wdXRfZGlyYDoKCmBgYHtyIGlucHV0IGRpciwgbGl2ZSA9IFRSVUV9CmRpcihpbnB1dF9kaXIpCmBgYAoKV2Ugd2FudCB0byByZWFkIGluIGp1c3QgZm91ciBvZiB0aGVzZSBmaWxlcywgYXMgbGlzdGVkIHByZXZpb3VzbHkuClRvIHJlYWQgaW4gdGhlc2UgZmlsZXMsIHdlIGNvdWxkIHVzZSB0aGUgYHJlYWRyOjpyZWFkX3JkcygpYCBmdW5jdGlvbiAob3IgdGhlIGJhc2UgUiBgcmVhZFJEUygpYCkgZm91ciB0aW1lcywgb25jZSBmb3IgZWFjaCBvZiB0aGUgZmlsZXMuCldlIGNvdWxkIGFsc28gdXNlIGEgYGZvcmAgbG9vcCwgd2hpY2ggaXMgdGhlIGFwcHJvYWNoIHRoYXQgbWFueSBwcm9ncmFtbWluZyBsYW5ndWFnZXMgd291bGQgbGVhbiB0b3dhcmQuCkEgZGlmZmVyZW50IGFuZCBtb3JlIG1vZHVsYXIgY29kaW5nIGFwcHJvYWNoIHRvIHJlYWRpbmcgaW4gdGhlc2UgZmlsZXMgKGFuZCBtb3JlISkgaXMgdG8gbGV2ZXJhZ2UgdGhlIFtgcHVycnJgXShodHRwczovL3B1cnJyLnRpZHl2ZXJzZS5vcmcvKSBgdGlkeXZlcnNlYCBwYWNrYWdlLCB3aGljaCBwcm92aWRlcyBhIGNvbnZlbmllbnQgc2V0IG9mIGZ1bmN0aW9ucyBmb3Igb3BlcmF0aW5nIG9uIGxpc3RzLgpZb3UgY2FuIHJlYWQgbW9yZSBhYm91dCB0aGUgYHB1cnJyYCBmdW5jdGlvbnMgYW5kIHRoZWlyIHBvd2VyIGFuZCB1dGlsaXR5IGluIFIgaW4gW3RoZSAiRnVuY3Rpb25hbHMiIGNoYXB0ZXIgb2YgdGhlIF9BZHZhbmNlZCBSXyBlLWJvb2tdKGh0dHBzOi8vYWR2LXIuaGFkbGV5Lm56L2Z1bmN0aW9uYWxzLmh0bWwpLgoKT2YgcGFydGljdWxhciBpbnRlcmVzdCBpcyB0aGUgW2BwdXJycjo6bWFwKClgXShodHRwczovL3B1cnJyLnRpZHl2ZXJzZS5vcmcvcmVmZXJlbmNlL21hcC5odG1sKSBmYW1pbHkgb2YgZnVuY3Rpb25zLCB3aGljaCBjYW4gYmUgdXNlZCB0byBydW4gYSBnaXZlbiBmdW5jdGlvbiBvbiBlYWNoIGVsZW1lbnQgb2YgYSBsaXN0IChvciB2ZWN0b3IpIGluIG9uZSBjYWxsLgpUaGUgZ2VuZXJhbCBzeW50YXggZm9yIGBwdXJycjo6bWFwKClgIGFuZCBmcmllbmRzIGlzOgoKYGBgCiMgU3ludGF4IGZvciB1c2luZyB0aGUgbWFwIGZ1bmN0aW9uOgpwdXJycjo6bWFwKDxpbnB1dCBsaXN0IG9yIHZlY3Rvcj4sCiAgICAgICAgICAgPGZ1bmN0aW9uIHRvIGFwcGx5IHRvIGVhY2ggaXRlbSBpbiB0aGUgaW5wdXQ+LAogICAgICAgICAgIDxhbnkgYWRkaXRpb25hbCBhcmd1bWVudHMgdG8gdGhlIGZ1bmN0aW9uIGNhbiBnbyBoZXJlPiwKICAgICAgICAgICA8YW5kIGFsc28gaGVyZSBpZiB0aGVyZSBhcmUgZXZlbiBtb3JlIGFyZ3VtZW50cywgYW5kIHNvIG9uPikKYGBgCgoKVGhlIG91dHB1dCBmcm9tIHJ1bm5pbmcgYHB1cnJyOjptYXAoKWAgaXMgYWx3YXlzIGEgbGlzdCAoYnV0IG5vdGUgdGhhdCB0aGVyZSBhcmUgb3RoZXIgYHB1cnJyOjptYXAoKWAgcmVsYXRpdmVzIHdoaWNoIHJldHVybiBvdGhlciBvYmplY3QgdHlwZXMsIGFzIHlvdSBjYW4gcmVhZCBhYm91dCBpbiBbdGhlIGBwdXJycjo6bWFwKClgIGRvY3VtZW50YXRpb25dKGh0dHBzOi8vcHVycnIudGlkeXZlcnNlLm9yZy9yZWZlcmVuY2UvaW5kZXguaHRtbCkpLgpJZiB0aGlzIGNvbmNlcHQgc291bmRzIGEgbGl0dGxlIGZhbWlsaWFyIHRvIHlvdSwgdGhhdCdzIGJlY2F1c2UgaXQgcHJvYmFibHkgaXMhCkJhc2UgUidzIGBsYXBwbHkoKWAgZnVuY3Rpb24gY2FuIHByb3ZpZGUgc2ltaWxhciB1dGlsaXR5LCBhbmQgdGhlIGBwdXJycjo6bWFwKClgIGZhbWlseSBvZiBmdW5jdGlvbnMgY2FuIChpbiBwYXJ0KSBiZSB0aG91Z2h0IG9mIGFzIGFuIGFsdGVybmF0aXZlIHRvIHNvbWUgb2YgdGhlIGJhc2UgUiBgYXBwbHlgIGZ1bmN0aW9ucywgd2l0aCBtb3JlIGNvbnNpc3RlbnQgYmVoYXZpb3IuCgpMZXQncyBzZWUgYSB2ZXJ5IHNpbXBsZSBleGFtcGxlIG9mIGBwdXJycjo6bWFwKClgIGluIGFjdGlvbiwgaW5zcGlyZWQgYnkgY2FuY2VyIGdyb3VwcyB0aGUgRGF0YSBMYWIgaGFzIGFuYWx5emVkIHRocm91Z2ggdGhlIFtPcGVuUEJUQV0oaHR0cHM6Ly9naXRodWIuY29tL0FsZXhzTGVtb25hZGUvT3BlblBCVEEtYW5hbHlzaXMvKSBwcm9qZWN0OgoKYGBge3IgbWFwIGV4YW1wbGV9CiMgRGVmaW5lIGEgbGlzdCBvZiBjYW5jZXIgaGlzdG9sb2dpZXMKaGlzdG9sb2dpZXMgPC0gbGlzdCgKICAibG93LWdyYWRlIGdsaW9tYXMiICA9IGMoIlNFR0EiLCAiUEEiLCAiR05HIiwgIlBYQSIpLAogICJoaWdoLWdyYWRlIGdsaW9tYXMiID0gYygiRE1HIiwgIkRJUEciKSwKICAiZW1icnlvbmFsIHR1bW9ycyIgICA9IGMoIk1CIiwgIkFUUlQiLCAiRVRNUiIpCiApCgojIFRoZSBvdmVyYWxsIGxlbmd0aCBvZiB0aGUgbGlzdCBpcyAzCmxlbmd0aChoaXN0b2xvZ2llcykKCiMgSG93IGNhbiB3ZSBydW4gYGxlbmd0aCgpYCBvbiBlYWNoIGl0ZW0gb2YgdGhlIGxpc3Q/CiMgV2UgY2FuIHVzZSBvdXIgbmV3IGZyaWVuZCBwdXJycjo6bWFwKCk6CnB1cnJyOjptYXAoaGlzdG9sb2dpZXMsIGxlbmd0aCkKYGBgCgpMZXQncyB1c2UgYHB1cnJyOjptYXAoKWAgdG8gcmVhZCBpbiBvdXIgU0NFIG9iamVjdHMgc28gdGhhdCB0aGV5IGFyZSBpbW1lZGlhdGVseSBzdG9yZWQgdG9nZXRoZXIgaW4gYSBsaXN0LgoKCldlJ2xsIGZpcnN0IG5lZWQgdG8gZGVmaW5lIGEgdmVjdG9yIG9mIHRoZSBmaWxlIHBhdGhzIHRvIHJlYWQgaW4uCldlJ2xsIHN0YXJ0IGJ5IGNyZWF0aW5nIGEgdmVjdG9yIG9mIHNhbXBsZSBuYW1lcyB0aGVtc2VsdmVzIGFuZCB0aGVuIGZvcm1hdHRpbmcgdGhlbSBpbnRvIHRoZSBjb3JyZWN0IHBhdGhzLgpUaGlzIHdheSAoZm9yZXNoYWRvd2luZyEpIHdlIGFsc28gaGF2ZSBhIHN0YW5kLWFsb25lIHZlY3RvciBvZiBqdXN0IHNhbXBsZSBuYW1lcywgd2hpY2ggd2lsbCBjb21lIGluIGhhbmR5IQoKYGBge3Igc2FtcGxlIG5hbWVzfQojIFZlY3RvciBvZiBhbGwgdGhlIHNhbXBsZXMgdG8gcmVhZCBpbjoKc2FtcGxlX25hbWVzIDwtIGMoIlNDUENMMDAwNDc5IiwKICAgICAgICAgICAgICAgICAgIlNDUENMMDAwNDgwIiwKICAgICAgICAgICAgICAgICAgIlNDUENMMDAwNDgxIiwKICAgICAgICAgICAgICAgICAgIlNDUENMMDAwNDgyIikKYGBgCgoKYGBge3IgZGVmaW5lIHNjZV9wYXRocywgbGl2ZSA9IFRSVUV9CiMgTm93LCBjb252ZXJ0IHRoZXNlIHRvIGZpbGUgcGF0aHM6IDxpbnB1dF9kaXI+LzxzYW1wbGVfbmFtZT4ucmRzCnNjZV9wYXRocyA8LSBmaWxlLnBhdGgoaW5wdXRfZGlyLAogICAgICAgICAgICAgICAgICAgICAgIGdsdWU6OmdsdWUoIntzYW1wbGVfbmFtZXN9LnJkcyIpCikKIyBQcmludCB0aGUgc2NlX3BhdGhzIHZlY3RvcgpzY2VfcGF0aHMKYGBgCgpMZXQncyBtYWtlIHRoaXMgYSBuYW1lZCB2ZWN0b3IgdXNpbmcgdGhlIHNhbXBsZSBuYW1lcy4KVGhpcyB3aWxsIGhlbHAgdXMga2VlcCB0cmFjayBvZiB3aGljaCBvYmplY3RzIGFyZSB3aGljaCBhZnRlciB3ZSByZWFkIHRoZSBTQ0Ugb2JqZWN0cyBpbjoKCmBgYHtyIGFkZCBsaXN0IG5hbWVzLCBsaXZlID0gVFJVRX0KIyBBc3NpZ24gdGhlIHNhbXBsZSBuYW1lcyBhcyB0aGUgbmFtZXMgZm9yIHNjZV9wYXRocwpuYW1lcyhzY2VfcGF0aHMpIDwtIHNhbXBsZV9uYW1lcwpgYGAKCldlIGNhbiBub3cgcmVhZCB0aGVzZSBmaWxlcyBpbiBhbmQgY3JlYXRlIGEgbGlzdCBvZiBmb3VyIFNDRSBvYmplY3RzLiAKU2luY2UgYHJlYWRyOjpyZWFkX3JkcygpYCBjYW4gb25seSBvcGVyYXRlIG9uIG9uZSBpbnB1dCBhdCBhIHRpbWUsIHdlJ2xsIG5lZWQgdG8gdXNlIGBwdXJycjo6bWFwKClgIHRvIHJ1biBpdCBvbiBhbGwgaW5wdXQgZmlsZSBwYXRocyBpbiBvbmUgY29tbWFuZC4KQWx0aG91Z2ggYHNjZV9wYXRoc2AgaXMgYSB2ZWN0b3IgKG5vdCBhIGxpc3QpLCBpdCB3aWxsIHN0aWxsIHdvcmsgYXMgaW5wdXQgdG8gYHB1cnJyOm1hcCgpYC4KVGhlIG91dHB1dCBmcm9tIHRoaXMgY29kZSB3aWxsIHN0aWxsIGJlIGEgbGlzdCwgc2luY2UgdGhhdCdzIHdoYXQgYHB1cnJyOjptYXAoKWAgYWx3YXlzIHJldHVybnMsIGFuZCBpdCB3aWxsIHJldGFpbiB0aGUgc2FtcGxlIG5hbWVzIGFzIHRoZSBsaXN0IG5hbWVzIGZvciBjb252ZW5pZW50IGJvb2trZWVwaW5nOgoKYGBge3IgcmVhZCBzY2UgcGF0aHMsIGxpdmUgPSBUUlVFfQojIFVzZSBwdXJycjo6bWFwKCkgdG8gcmVhZCBhbGwgZmlsZXMgaW50byBhIGxpc3QgYXQgb25jZQpzY2VfbGlzdCA8LSBwdXJycjo6bWFwKAogIHNjZV9wYXRocywKICByZWFkcjo6cmVhZF9yZHMKKQpgYGAKCkxldCdzIGhhdmUgYSBsb29rIGF0IG91ciBuYW1lZCBsaXN0IG9mIFNDRSBvYmplY3RzOgoKYGBge3IgcHJpbnQgc2NlIGxpc3QsIGxpdmU9VFJVRX0KIyBQcmludCBzY2VfbGlzdApzY2VfbGlzdApgYGAKCklmIHlvdSBsb29rIGNsb3NlbHkgYXQgdGhlIHByaW50ZWQgU0NFIG9iamVjdHMsIHlvdSBtYXkgbm90aWNlIHRoYXQgdGhleSBhbGwgY29udGFpbiBgY29sRGF0YWAgdGFibGUgY29sdW1ucyBgY2VsbHR5cGVfZmluZWAgYW5kIGBjZWxsdHlwZV9icm9hZGAuClRoZXNlIGNvbHVtbnMgKHdoaWNoIHdlIGFkZGVkIHRvIFNDRSBvYmplY3RzIGR1cmluZyBbcHJlLXByb2Nlc3NpbmddKGh0dHBzOi8vZ2l0aHViLmNvbS9BbGV4c0xlbW9uYWRlL3RyYWluaW5nLW1vZHVsZXMvdHJlZS9tYXN0ZXIvc2NSTkEtc2VxLWFkdmFuY2VkL3NldHVwL3JtcykpIGNvbnRhaW4gcHV0YXRpdmUgY2VsbCB0eXBlIGFubm90YXRpb25zIGFzIGFzc2lnbmVkIGJ5IFtQYXRlbCBfZXQgYWwuXyAoMjAyMildKGh0dHBzOi8vZG9pLm9yZy8xMC4xMDE2L2ouZGV2Y2VsLjIwMjIuMDQuMDAzKToKCgo+IEZvciBlYWNoIGNlbGwgc3Vic2V0IGlkZW50aWZpZWQgYnkgY2x1c3RlcmluZywgd2UgdXNlZCBhIGNvbWJpbmF0aW9uIG9mIGBTaW5nbGVSYCB2ZXJzaW9uIDEuMC4xIChbQXJhbiBldCBhbC4sIDIwMTldKGh0dHBzOi8vd3d3Lm5hdHVyZS5jb20vYXJ0aWNsZXMvczQxNTkwLTAxOC0wMjc2LXkpKSBhbmQgbWFudWFsIGluc3BlY3Rpb24gb2YgZGlmZmVyZW50aWFsbHkgZXhwcmVzc2VkIGdlbmVzIHRvIGFubm90YXRlIHdoZXRoZXIgYSBjbHVzdGVyIGJlbG9uZ3MgdG8gc3Ryb21hbCwgaW1tdW5lIG9yIG1hbGlnbmFudCBzdWJwb3B1bGF0aW9ucy4gCk1hbGlnbmFudCBjZWxscyB3ZXJlIGNvbmZpcm1lZCBpbiBwYXRpZW50IHR1bW9yIGRhdGEgYnkgaW5mZXJlbmNlIG9mIGNvcHktbnVtYmVyIHZhcmlhdGlvbiB1c2luZyBgaW5mZXJDTlZgIHZlcnNpb24gMS4xLjMgb2YgdGhlIFRyaW5pdHlDVEFUIFByb2plY3QgKGh0dHBzOi8vZ2l0aHViLmNvbS9icm9hZGluc3RpdHV0ZS9pbmZlcmNudikuIAoKV2Ugd2lsbCBlbmQgdXAgbGV2ZXJhZ2luZyB0aGVzZSBjZWxsIHR5cGUgYW5ub3RhdGlvbnMgdG8gZXhwbG9yZSB0aGUgaW50ZWdyYXRpb24gcmVzdWx0czsgYWZ0ZXIgaW50ZWdyYXRpb24sIHdlIGV4cGVjdCBjZWxsIHR5cGVzIGZyb20gZGlmZmVyZW50IHNhbXBsZXMgdG8gZ3JvdXAgdG9nZXRoZXIsIHJhdGhlciB0aGFuIGJlaW5nIHNlcGFyYXRlZCBieSBiYXRjaGVzLiAKClRoYXQgc2FpZCwgdGhlIGludGVncmF0aW9uIG1ldGhvZHMgd2Ugd2lsbCBiZSBhcHBseWluZyBfZG8gbm90IGFjdHVhbGx5IHVzZV8gYW55IGV4aXN0aW5nIGNlbGwgdHlwZSBhbm5vdGF0aW9ucy4KSWYgd2UgaGF2ZSBhbm5vdGF0aW9ucywgdGhleSBhcmUgYSBoZWxwZnVsICJib251cyIgZm9yIGFzc2Vzc2luZyB0aGUgaW50ZWdyYXRpb24ncyBwZXJmb3JtYW5jZSwgYnV0IHRoZXkgYXJlIG5vdCBwYXJ0IG9mIHRoZSBpbnRlZ3JhdGlvbiBpdHNlbGYuCgoKIyMgTWVyZ2UgdGhlIFNDRSBsaXN0IGludG8gb25lIG9iamVjdAoKIVtTaW5nbGUtY2VsbCByb2FkbWFwOiBNZXJnZV0oZGlhZ3JhbXMvcm9hZG1hcF9tdWx0aV9tZXJnZS5wbmcpCgoKTm93IHRoYXQgd2UgaGF2ZSBhIGxpc3Qgb2YgcHJvY2Vzc2VkIFNDRSBvYmplY3RzLCB3ZSBuZWVkIHRvIG1lcmdlIHRoZSBvYmplY3RzIGludG8gb25lIG92ZXJhbGwgU0NFIG9iamVjdCBmb3IgaW5wdXQgdG8gaW50ZWdyYXRpb24uCkEgd29yZCBvZiBjYXV0aW9uIGJlZm9yZSB3ZSBiZWdpbjogKipUaGlzIG1lcmdlZCBTQ0Ugb2JqZWN0IGlzIE5PVCBhbiBpbnRlZ3JhdGVkIFNDRSEqKgpNZXJnaW5nIFNDRXMgZG9lcyBub3QgcGVyZm9ybSBhbnkgYmF0Y2ggY29ycmVjdGlvbiwgYnV0IGp1c3QgcmVvcmdhbml6ZXMgdGhlIGRhdGEgdG8gYWxsb3cgdXMgdG8gcHJvY2VlZCB0byBpbnRlZ3JhdGlvbiBuZXh0LgoKVG8gbWVyZ2UgU0NFIG9iamVjdHMsIHdlIGRvIG5lZWQgdG8gZG8gc29tZSB3cmFuZ2xpbmcgYW5kIGJvb2trZWVwaW5nIHRvIGVuc3VyZSBjb21wYXRpYmlsaXR5IGFuZCB0aGF0IHdlIGRvbid0IGxvc2UgaW1wb3J0YW50IGluZm9ybWF0aW9uLgpPdmVyYWxsLCB3ZSdsbCB3YW50IHRvIG1ha2Ugc3VyZSB0aGF0OgoKMS4gQWxsIG9iamVjdHMgaGF2ZSBjb21wYXRpYmxlIGRpbWVuc2lvbnMuClRoaXMgbWVhbnMgdGhhdCBhbGwgb2JqZWN0cyBzaG91bGQuLi4KICAgICsgSGF2ZSB0aGUgc2FtZSBnZW5lcyAoYWthIHJvdyBuYW1lcyksIGluIHRoZSBzYW1lIG9yZGVyCiAgICArIEhhdmUgdGhlIHNhbWUgYGNvbERhdGFgIHNsb3QgY29sdW1ucywgaW4gdGhlIHNhbWUgb3JkZXIKICAgICsgSGF2ZSB0aGUgc2FtZSBhc3NheXMKMi4gQWZ0ZXIgbWVyZ2luZywgd2UnbGwgc3RpbGwgYmUgYWJsZSB0byBpZGVudGlmeSB3aGljaCBzYW1wbGUgZGlmZmVyZW50IHBpZWNlcyBvZiBpbmZvcm1hdGlvbiBjYW1lIGZyb20KQXMgd2Ugc2F3IGluIHRoZSBzbGlkZXMsIHRoaXMgbWVhbnMgd2UnbGwgaGF2ZSB0by4uLgogICAgKyBBdHRhY2ggc2FtcGxlIG5hbWVzIHRvIHRoZSBiYXJjb2RlcyAoYWthIGNvbHVtbiBuYW1lcykKICAgIFRoaXMgYWxzbyBlbnN1cmVzIHRoYXQgY29sdW1uIG5hbWVzIGFyZSB1bmlxdWU7IHdoaWxlIGEgc2luZ2xlIHNhbXBsZSAobGlicmFyeSkgaXMgZ3VhcmFudGVlZCB0byBoYXZlIHVuaXF1ZSBiYXJjb2RlcywgdGVjaG5pY2FsbHkgdGhleSBjYW4gYmUgcmVwZWF0ZWQgYWNyb3NzIHNhbXBsZXMhCiAgICArIEF0dGFjaCBzYW1wbGUgbmFtZXMgdG8gYHJvd0RhdGFgIHNsb3QgY29sdW1uIG5hbWVzIGFuZCBgbWV0YWRhdGFgIGZpZWxkIG5hbWVzIChpZiB5b3UgY2FyZSB0byBrZWVwIHRoaXMgaW5mb3JtYXRpb24gYXJvdW5kIC0gdG9kYXksIHdlIHdpbGwhKQogICAgKyBBZGQgYSBuZXcgY29sdW1uIGluZGljYXRpbmcgdGhlIHNhbXBsZSB0byB0aGUgYGNvbERhdGFgIHNsb3QKCldlJ2xsIGFwcHJvYWNoIHRoaXMgbWVyZ2UgaW4gdHdvIHBhcnRzOgoKKyBGaXJzdCwgd2UnbGwgdGFrZSBzb21lIHRpbWUgdG8gdGhvcm91Z2hseSBleHBsb3JlIHRoZSBvdXIgU0NFIG9iamVjdHMgdG8gZGV0ZXJtaW5lIHdoYXQgd3JhbmdsaW5nIHdlIG5lZWQgdG8gZG8gdG8gbWFrZSBhbGwgdGhlIG9iamVjdHMgX2NvbXBhdGlibGVfIGZvciBtZXJnaW5nCisgVGhlbiwgd2UnbGwgd3JpdGUgKG9rLCB3ZSd2ZSB3cml0dGVuIGl0IGZvciB5b3UpIGEgX2N1c3RvbSBmdW5jdGlvbl8gdG8gZm9ybWF0IGVhY2ggU0NFIG9iamVjdCBmb3IgbWVyZ2luZywgaW5jbHVkaW5nOgogICAgKyBNYWtpbmcgYW55IGNoYW5nZXMgdG8gZW5zdXJlIG9iamVjdHMgYXJlIGNvbXBhdGlibGUKICAgICsgQWRkaW5nIGluIGlkZW50aWZ5aW5nIGluZm9ybWF0aW9uIHNvIHdlIGtub3cgd2hpY2ggc2FtcGxlIHRoZSBjZWxscyBhbmQgb3RoZXIgbWV0YWRhdGEgY2FtZSBmcm9tIAogICAgKyBSZW1vdmluZyB0aGUgZXhpc3RpbmcgcmVkdWNlZCBkaW1lbnNpb24gbWF0cmljZXMgKFBDQSBhbmQgVU1BUCkuCiAgICBUaGlzIGlzIGJlY2F1c2Ugd2UnbGwgd2FudCB0byByZWNhbGN1bGF0ZSB0aGVzZSBtYXRyaWNlcyBvbiB0aGUgbWVyZ2VkIG9iamVjdHMsIHRha2luZyBiYXRjaCBpbnRvIGFjY291bnQKCldoZW4gbWVyZ2luZyBvYmplY3RzIG9uIHlvdXIgb3duLCBkb24ndCBza2lwIHRoZXNlIGRhdGEgZXhwbG9yYXRpb24gc3RlcHMhClRoZSBzdGVwcyB3ZSB0YWtlIHRvIHByZXBhcmUgb3VyIFNDRXMgd2lsbCBwcm9iYWJseSBiZSBkaWZmZXJlbnQgZnJvbSB0aGUgc3RlcHMgeW91IG5lZWQgdG8gdGFrZSB3aXRoIG90aGVyIFNDRXMsIGFuZCBvbmx5IGJ5IGNhcmVmdWxseSBleHBsb3JpbmcgdGhlIG9iamVjdHMgY2FuIHlvdSBmaWd1cmUgb3V0IHdoYXQgc3RlcHMgeW91J2xsIG5lZWQgdG8gdGFrZSB0byBtZWV0IGFsbCBvZiBvdXIgY29uZGl0aW9ucy4KCgojIyMgUHJlcGFyZSB0byBtZXJnZSBTQ0VzCgojIyMjIENyZWF0ZSB1bmlxdWUgY2VsbCBpZGVudGlmaWVycwoKQXMgcGFydCBvZiB0aGUgY3VzdG9tIGZ1bmN0aW9uIHdlJ2xsIHdyaXRlLCB3ZSdsbCBpbmNsdWRlIGEgc3RlcCB0byBjcmVhdGUgdW5pcXVlIGNlbGwgaWRlbnRpZmllcnMgYnkgYXR0YWNoaW5nIHNhbXBsZSBuYW1lcyB0byB0aGUgU0NFIGNvbHVtbiBuYW1lcyAoY2VsbCBiYXJjb2RlcykuCkZvciBleGFtcGxlLCB3ZSB3b3VsZCB1cGRhdGUgdGhlIGNvbHVtbiBuYW1lIGZvciBhIGNlbGwgZnJvbSBgU2FtcGxlMWAgd2l0aCB0aGUgYmFyY29kZSBgQUNHVGAgdG8gYFNhbXBsZTEtQUNHVGAuCgpXaGVuIG1lcmdpbmcsIHRoZXJlIGNhbid0IGJlIGFueSBkdXBsaWNhdGUgY29sdW1uIG5hbWVzIChiYXJjb2RlcykgYWNyb3NzIF9hbGxfIHRoZSBvYmplY3RzIG9yIFIgd2lsbCB0aHJvdyBhbiBlcnJvci4KV2hpbGUgeW91J3JlIGd1YXJhbnRlZWQgdG8gaGF2ZSB1bmlxdWUgYmFyY29kZXMgaW4gYSBnaXZlbiBTQ0Ugb2JqZWN0LCB0aGVyZSBpcyBfbm8gZ3VhcmFudGVlXyB0aGF0IHRoZXkgYXJlIHVuaXF1ZSBhY3Jvc3MgbXVsdGlwbGUgc2FtcGxlcyAtIGl0IGlzIGFic29sdXRlbHkgcG9zc2libGUgdG8gaGF2ZSBjZWxscyBmcm9tIHR3byBkaWZmZXJlbnQgc2FtcGxlcyBzaGFyZSB0aGUgc2FtZSBiYXJjb2RlIChhbmQgd2UndmUgc2VlbiBpdCBoYXBwZW4hKS4KCkFkZGluZyB0aGUgc2FtcGxlIGlkIHRvIHRoZSBjb2x1bW4gbmFtZXMgKGJhcmNvZGVzKSBpcyB0aGVyZWZvcmUgYSBjcnVjaWFsIHN0ZXAgaW4gb3VyIG1lcmdpbmcgYm9va2tlZXBpbmcuCgoKIyMjIyBFeHBsb3JlIHRoZSBTQ0Ugb2JqZWN0cwoKIyMjIyMgQ2hlY2sgdGhlIGdlbmVzCgpGaXJzdCwgd2UnbGwgY29tcGFyZSB0aGUgb2JqZWN0J3MgZ2VuZXMgKGFrYSwgdGhlaXIgcm93IG5hbWVzKS4KV2UgY2FuIHVzZSBzb21lIGBwdXJycmAgbWFnaWMgdG8gaGVscCB1cyBmaW5kIHRoZSBzZXQgb2Ygc2hhcmVkIGdlbmVzIGFtb25nIGFsbCBvYmplY3RzOgoKYGBge3Igc2hhcmVkIGdlbmVzfQojIERlZmluZSB2ZWN0b3Igb2Ygc2hhcmVkIGdlbmVzCnNoYXJlZF9nZW5lcyA8LSBzY2VfbGlzdCB8PgogICMgZ2V0IHJvd25hbWVzIChnZW5lcykgZm9yIGVhY2ggU0NFIGluIHNjZV9saXN0CiAgcHVycnI6Om1hcChyb3duYW1lcykgfD4KICAjIHJlZHVjZSB0byB0aGUgX2ludGVyc2VjdGlvbl8gYW1vbmcgbGlzdHMKICBwdXJycjo6cmVkdWNlKGludGVyc2VjdCkKCiMgSG93IG1hbnkgc2hhcmVkIGdlbmVzIGFyZSB0aGVyZT8KbGVuZ3RoKHNoYXJlZF9nZW5lcykKYGBgCgpUaGF0J3MgcXVpdGUgYSBsb3QhCkluIGZhY3QsIGJlY2F1c2UgdGhlc2Ugb2JqZWN0cyB3ZXJlIGFsbCB1bmlmb3JtbHkgcHJvY2Vzc2VkIGJ5IHRoZSBzYW1lIHdvcmtmbG93ICh3aGljaCBkaWQgbm90IGZpbHRlciBvdXQgYW55IGdlbmVzISksIHdlIGV4cGVjdCB0aGVtIHRvIGFsbCBoYXZlIHRoZSBzYW1lIGdlbmVzLgpXZSBjYW4gbWFwIG92ZXIgdGhlIGxpc3QgdG8gY29uZmlybSB0aGF0IGluZGVlZCwgdGhleSBoYXZlIHRoZSBzYW1lIG51bWJlciBvZiByb3dzIChnZW5lcyk6CgoKYGBge3IgY2hlY2sgc2hhcmVkIGdlbmVzLCBsaXZlID0gVFJVRX0KIyBUaGUgbnVtYmVyIG9mIGdlbmVzIGluIGFuIFNDRSBjb3JyZXNwb25kcyB0byBpdHMgbnVtYmVyIG9mIHJvd3M6CnNjZV9saXN0IHw+CiAgcHVycnI6Om1hcChucm93KQpgYGAKCkV2ZW4gdGhvdWdoIHdlIGtub3cgdGhlIGdlbmVzIGFscmVhZHkgbWF0Y2gsIHdlIG5lZWQgdG8gYWxzbyBiZSBzdXJlIHRoZXkgYXJlIGluIHRoZSBzYW1lIF9vcmRlcl8gYW1vbmcgYWxsIG9iamVjdHMuClNvLCB3ZSdsbCBob2xkIG9udG8gdGhhdCBgc2hhcmVkX2dlbmVzYCB2YXJpYWJsZSB3ZSBkZWZpbmVkIGFuZCB1c2UgaXQgc29vbiBpbiBvdXIgY3VzdG9tIGZvcm1hdHRpbmcgZnVuY3Rpb24gdG8gbWFrZSBzdXJlIGFsbCBvYmplY3RzIGZ1bGx5IG1hdGNoLgoKSXQncyB3b3J0aCBub3RpbmcgdGhhdCB0aGUgaW50ZXJzZWN0aW9uIGlzbid0IHRoZSBvbmx5IG9wdGlvbiBoZXJlLCB0aG91Z2ghClVzaW5nIHRoZSBpbnRlcnNlY3Rpb24gbWVhbnMgYSBsb3Qgb2YgZ2VuZXMgd2lsbCBnZXQgZGlzY2FyZGVkIGlmIHRoZSBvYmplY3RzIGhhdmUgZGlmZmVyZW50IGdlbmVzLgpXZSBjb3VsZCBpbnN0ZWFkIHRha2UgdGhlIF91bmlvbl8gb2YgZ2VuZXMgc28gbm90aGluZyBnZXRzIHRocm93biBvdXQuCkluIHRoaXMgY2FzZSwgeW91J2QgbmVlZCB0byBjcmVhdGUgImR1bW15IiBhc3NheSByb3dzIGZvciBnZW5lcyB0aGF0IGEgZ2l2ZW4gU0NFIGRvZXNuJ3QgaGF2ZSBhbmQgZmlsbCBpdCB3aXRoIGBOQWAgZXhwcmVzc2lvbiB2YWx1ZXMuCllvdSdsbCBzdGlsbCBoYXZlIHRvIG1ha2Ugc3VyZSB0aGUgU0NFcyBoYXZlIHRoZSBzYW1lIHJvd3MgaW4gdGhlIHNhbWUgb3JkZXIgYmVmb3JlIG1lcmdpbmcsIHNvIHlvdSBtYXkgbmVlZCB0byBkbyBhIGRlY2VudCBiaXQgb2YgbWF0cml4IHdyYW5nbGluZy4KCiMjIyMjIENoZWNrIHRoZSBgY29sRGF0YWAgY29sdW1uIG5hbWVzCgpOZXh0IHVwLCB3ZSdsbCBjaGVjayB0aGUgYGNvbERhdGFgIGNvbHVtbnM6IHdlIG5lZWQgdGhlc2UgdG8gYmUgdGhlIHNhbWUsIGFuZCBpbiB0aGUgc2FtZSBvcmRlci4KTGV0J3MgcHJpbnQgb3V0IGVhY2ggb2JqZWN0J3MgYGNvbERhdGFgIGNvbHVtbiBuYW1lIHRvIHNlZSB3aGVyZSB3ZSBzdGFuZDoKCmBgYHtyIGNvbGRhdGEgY29sbmFtZXN9CnNjZV9saXN0IHw+CiAgcHVycnI6Om1hcCgKICAgIFwoc2NlKSBjb2xuYW1lcyhjb2xEYXRhKHNjZSkpIAogICkgCmBgYApXZSBzZWUgdGhlIHNhbWUgY29sdW1ucyBhbGwgYXJvdW5kIGluIHRoZSBzYW1lIG9yZGVyLCB3aGljaCBpcyBncmVhdCEKCkJ1dCB3aGF0IGlmIHRoZXJlIHdlcmUgZGlmZmVyZW50IGNvbHVtbnMgYWNyb3NzIG9iamVjdHMsIG9yIHRoZXkgd2VyZSBkaWZmZXJlbnRseSBvcmRlcmVkPwpJbiB0aGF0IGNhc2UsIHdlIGNvdWxkIGZpbmQgdGhlIGludGVyc2VjdGlvbiBvZiBjb2x1bW4gbmFtZXMgbGlrZSB3ZSBkaWQgYWJvdmUgZm9yIGdlbmVzLCBhbmQgdXNlIHRoYXQgdG8gcmUtb3JkZXIgYW5kIHN1YnNldCBhbGwgYGNvbERhdGFgIHNsb3RzIGluIG91ciBjdXN0b20gZm9ybWF0dGluZyBmdW5jdGlvbi4KCgojIyMjIyBDaGVjayB0aGUgYXNzYXlzCgpOZXh0LCB3ZSdsbCBtYWtlIHN1cmUgdGhhdCBhbGwgb2JqZWN0cyBzaGFyZSB0aGUgc2FtZSBhc3NheXM6CgpgYGB7ciBhc3NheSBuYW1lcywgbGl2ZSA9IFRSVUV9CiMgcHJpbnQgYWxsIHRoZSBhc3NheSBuYW1lcwpzY2VfbGlzdCB8PgogIHB1cnJyOjptYXAoYXNzYXlOYW1lcykKYGBgCkFnYWluLCBhbGwgb2JqZWN0cyBhcmUgY29tcGF0aWJsZSBhbHJlYWR5IHdpdGggYm90aCBoYXZpbmcgYSBgY291bnRzYCBhbmQgYGxvZ2NvdW50c2AgYXNzYXkuCgpJbiB5b3VyIG93biBkYXRhIGV4cGxvcmF0aW9uLCBpZiB5b3UgZW5jb3VudGVyIFNDRXMgdG8gbWVyZ2UgdGhhdCBoYXZlIGV4dHJhbmVvdXMgYXNzYXlzIHRoYXQgeW91IGRvbid0IG5lZWQsIHlvdSBjYW4gcmVtb3ZlIHRoZW0gYnkgc2V0dGluZyB0aGVtIHRvIGBOVUxMYCBpbiB5b3VyIGN1c3RvbSBmb3JtYXR0aW5nIGZ1bmN0aW9uLCBlLmcuIGBhc3NheShzY2UsICJhc3NheV90b19yZW1vdmUiKSA8LSBOVUxMYC4KCiMjIyMjIENoZWNrIHRoZSBgcm93RGF0YWAgY29udGVudHMKCk9uZSBvZiB0aGUgb3RoZXIgaXRlbXMgd2Ugc2FpZCB3ZSdkIG5lZWQgdG8gdGhpbmsgYWJvdXQgaXMgdGhlIGByb3dEYXRhYCwgd2hpY2ggY29udGFpbnMgZ2VuZSBtZXRhZGF0YS4KVGhpcyBzbG90IGlzIGludGVyZXN0aW5nIGJlY2F1c2Ugc29tZSBvZiBpdHMgY29sdW1ucyBhcmUgc3BlY2lmaWMgdG8gdGhlIGdpdmVuIHNhbXBsZSwgd2hpbGUgb3RoZXJzIGFyZSBnZW5lcmFsOgoKYGBge3IgbGl0dGxlIGhlYWQgcm93ZGF0YX0Kc2NlX2xpc3QgfD4KICBwdXJycjo6bWFwKAogICAgXChzY2UpIGhlYWQocm93RGF0YShzY2UpLCAzKSAjIG9ubHkgcHJpbnQgMyByb3dzIGZvciBzcGFjZSEKICApCmBgYAoKVGhlIGNvbHVtbiBgZ2VuZV9zeW1ib2xgIGlzIG5vdCBzYW1wbGUtc3BlY2lmaWMgLSBpdCBqdXN0IHByb3ZpZGVzIHRoZSBjb3JyZXNwb25kaW5nIGdlbmUgc3ltYm9sIHRvIHRoZSBFbnNlbWJsIGlkcyBzZWVuIGhlcmUgYXMgcm93IG5hbWVzLgpUaGUgY29sdW1ucyBgbWVhbmAgYW5kIGBkZXRlY3RlZGAsIGhvd2V2ZXIsIGFyZSBzYW1wbGUtc3BlY2lmaWMgLSB0aGV5IGNvbnRhaW4gc2FtcGxlLXNwZWNpZmljIHN0YXRpc3RpY3MgYWJvdXQgZ2VuZSBleHByZXNzaW9uLgoKVGhpcyBtZWFucyB3ZSBkZWZpbml0ZWx5IG5lZWQgdG8gdXBkYXRlIHRoZSBjb2x1bW4gbmFtZXMgYG1lYW5gIGFuZCBgZGV0ZWN0ZWRgIHRvIGluY2x1ZGUgdGhlIHNhbXBsZSBpZC4KQnV0LCB3ZSBkb24ndCBuZWVkIGEgc2VwYXJhdGUgYGdlbmVfc3ltYm9sYCBjb2x1bW4gZm9yIGVhY2ggc2FtcGxlLCBzbyB3ZSBjYW4gbGVhdmUgdGhhdCBvbmUgYWxvbmUgYXMganVzdCBgZ2VuZV9zeW1ib2xgLiAKT25jZSB3ZSBldmVudHVhbGx5IG1lcmdlLCBvbmx5IG9uZSBgZ2VuZV9zeW1ib2xgIGNvbHVtbiB3aWxsIGJlIGxlZnQgaW4gdGhlIGZpbmFsIG9iamVjdCBzaW5jZSBpdCBpcyB0aGUgc2FtZSBhY3Jvc3MgYWxsIHRoZSBTQ0VzLgoKV2UnbGwgc2hvdyBvbmUgd2F5IHRvIGRvIHRoaXMgaW4gb3VyIGN1c3RvbSBmdW5jdGlvbiwgYnV0IGl0J3Mgd29ydGggbm90aW5nIHRoZXJlJ3Mgbm90aGluZyBfd3JvbmdfIHdpdGggYWxzbyBhZGRpbmcgdGhlIHNhbXBsZSBpZCB0byB0aGUgYGdlbmVfc3ltYm9sYCBjb2x1bW47IHlvdSdsbCBqdXN0IGVuZCB1cCB3aXRoIGEgYnVuY2ggb2YgcmVkdW5kYW50IGdlbmUgc3ltYm9sIGNvbHVtbnMuCgoKIyMjIyBSZWZvcm1hdCB0aGUgU0NFIG9iamVjdHMKCkFzIHlvdSBjYW4gc2VlLCB0aGVyZSdzIGEgbG90IG9mIG1vdmluZyBwYXJ0cyB0byBjb25zaWRlciEKQWdhaW4sIHRoZXNlIG1vdmluZyBwYXJ0cyBtYXkgKHdpbGwhKSBkaWZmZXIgZm9yIFNDRXMgdGhhdCB5b3UgYXJlIHdvcmtpbmcgd2l0aCwgc28geW91IGhhdmUgdG8gZXhwbG9yZSB5b3VyIG93biBTQ0VzIGluIGRlcHRoIHRvIHByZXBhcmUgZm9yIG1lcmdpbmcuCgpCYXNlZCBvbiBvdXIgZXhwbG9yYXRpb24sIGhlcmUgaXMgYSBzY2hlbWF0aWMgb2YgaG93IG9uZSBvZiB0aGUgU0NFIG9iamVjdHMgd2lsbCB1bHRpbWF0ZWx5IGJlIG1vZGlmaWVkIGludG8gdGhlIGZpbmFsIG1lcmdlZCBTQ0U6CgohW10oZGlhZ3JhbXMvdGVjaG5pY2FsX21lcmdlX3NjZS5wbmcpCgoKV2UnbGwgd3JpdGUgYSBfY3VzdG9tIGZ1bmN0aW9uXyAoc2VlbiBpbiB0aGUgY2h1bmsgYmVsb3cpIHRhaWxvcmVkIHRvIG91ciB3cmFuZ2xpbmcgc3RlcHMgdGhhdCBwcmVwYXJlcyBhIHNpbmdsZSBTQ0Ugb2JqZWN0IGZvciBtZXJnaW5nLgpXZSdsbCB0aGVuIHVzZSBvdXIgbmV3IGBwdXJycjo6bWFwKClgIHByb2dyYW1taW5nIHNraWxscyB0byBydW4gdGhpcyBmdW5jdGlvbiBvdmVyIHRoZSBgc2NlX2xpc3RgLgpUaGlzIHdpbGwgZ2l2ZSB1cyBhIG5ldyBsaXN0IG9mIGZvcm1hdHRlZCBTQ0VzIHRoYXQgd2UgY2FuIHByb2NlZWQgdG8gbWVyZ2UuCkl0J3MgaW1wb3J0YW50IHRvIHJlbWVtYmVyIHRoYXQgdGhlIGBmb3JtYXRfc2NlKClgIGZ1bmN0aW9uIHdyaXR0ZW4gYmVsb3cgaXMgbm90IGEgZnVuY3Rpb24gZm9yIGdlbmVyYWwgdXNlIOKAkyBpdCdzIGJlZW4gcHJlY2lzZWx5IHdyaXR0ZW4gdG8gbWF0Y2ggdGhlIHByb2Nlc3Npbmcgd2UgbmVlZCB0byBkbyBmb3IgX3RoZXNlXyBTQ0VzLCBhbmQgZGlmZmVyZW50IFNDRXMgeW91IHdvcmsgd2l0aCB3aWxsIHJlcXVpcmUgZGlmZmVyZW50IHR5cGVzIG9mIHByb2Nlc3NpbmcuCgpXZSBhbHNvIGluY2x1ZGUgcm94eWdlbi1zdHlsZSBjb21tZW50cyBmb3IgdGhpcyBmdW5jdGlvbiwgd2hpY2ggY2FuIGJlIGEgaGVscGZ1bCBjb25zaXN0ZW50IHdheSB0byBkb2N1bWVudCB5b3VyIGNvZGUgaWYgeW91IGxpa2UgaXQgLSB3ZSd2ZSBldmVuIHdyaXR0ZW4gYSBibG9nIHBvc3QgYWJvdXQgaXQgOikgKDxodHRwczovL3d3dy5jY2RhdGFsYWIub3JnL2Jsb2cvZG9udC1tYWtlLW1lLXdyaXRlLXRpcHMtZm9yLWF2b2lkaW5nLXR5cGluZy1pbi1yc3R1ZGlvPikuCgpgYGB7ciBmb3JtYXRfc2NlIGZ1bmN0aW9ufQojJyBDdXN0b20gZnVuY3Rpb24gdG8gZm9ybWF0IGFuIFNDRSBiZWZvcmUgbWVyZ2luZwojJwojJyBAcGFyYW0gc2NlIFNDRSBvYmplY3QgdG8gZm9ybWF0CiMnIEBwYXJhbSBzYW1wbGVfbmFtZSBOYW1lIG9mIHRoZSBzYW1wbGUKIycgQHBhcmFtIHNoYXJlZF9nZW5lcyBWZWN0b3Igb2Ygc2hhcmVkIGdlbmVzIGFjcm9zcyBhbGwgU0NFIG9iamVjdHMKIycKIycgQHJldHVybnMgQW4gdXBkYXRlZCBTQ0Ugb2JqZWN0IHJlYWR5IGZvciBtZXJnaW5nCmZvcm1hdF9zY2UgPC0gZnVuY3Rpb24oCiAgc2NlLCAKICBzYW1wbGVfbmFtZSwgCiAgc2hhcmVkX2dlbmVzCikgewogIAogICMjIyBSZW1vdmUgdGhlIHNpbmdsZS1zYW1wbGUgcmVkdWNlZCBkaW1lbnNpb25zIAogICMgV2UgZG8gdGhpcyBmaXJzdCBzaW5jZSBpdCBtYWtlcyB0aGUgb2JqZWN0IGEgbG90IHNtYWxsZXIgZm9yIHRoZSByZXN0IG9mIHRoaXMgY29kZSEKICByZWR1Y2VkRGltcyhzY2UpIDwtIE5VTEwKICAKICAjIyMgQWRkIGRlZGljYXRlZCBzYW1wbGUgaW5kaWNhdG9yIGNvbHVtbiB0byB0aGUgY29sRGF0YSBzbG90CiAgIyBSZWNhbGwsIHRoZSBgc2NlJGAgc2hvcnRjdXQgcG9pbnRzIHRvIHRoZSBjb2xEYXRhCiAgc2NlJHNhbXBsZSA8LSBzYW1wbGVfbmFtZQoKICAjIyMgRW5zdXJlIG9iamVjdHMgaGF2ZSB0aGUgc2FtZSBnZW5lcyBpbiB0aGUgc2FtZSBvcmRlcgogICMgVXNlIHRoZSBzaGFyZWRfZ2VuZXMgdmVjdG9yIHRvIGluZGV4IGdlbmVzIHRvIHRoZSBpbnRlcnNlY3Rpb24KICAjIERvaW5nIHRoaXMgYm90aCBzdWJzZXRzIHRvIGp1c3QgdGhvc2UgZ2VuZXMsIGFuZCByZW9yZGVycyEKICBzY2UgPC0gc2NlW3NoYXJlZF9nZW5lcywgXQogIAogICMjIyBUaGVyZSBpcyBubyBhZGRpdGlvbmFsIHdyYW5nbGluZyB0byBkbyBmb3IgdGhlIGNvbERhdGEgY29sdW1uIG5hbWVzIG9yIGFzc2F5cy4KICAjIyMgQnV0IGlmIHRoZXJlIHdlcmUsIHlvdSBjb3VsZCBhZGQgeW91ciBjdXN0b20gY29kZSB0byBkbyBzbyBoZXJlLgogICMjIyBZb3VyIGN1c3RvbSBmdW5jdGlvbiBtYXkgbmVlZCBhZGRpdGlvbmFsIGFyZ3VtZW50cyBmb3IgdGhpcywgdG9vLgoKICAjIyMgRW5zdXJlIGNlbGwgaWRzIGFyZSBpZGVudGlmaWFibGUgYW5kIGZ1bGx5IHVuaXF1ZSAKICAjIFVwZGF0ZSB0aGUgU0NFIG9iamVjdCBjb2x1bW4gbmFtZXMgKGNlbGwgaWRzKSBieSBwcmVwZW5kaW5nIHRoZSBgc2FtcGxlX25hbWVgCiAgY29sbmFtZXMoc2NlKSA8LSBnbHVlOjpnbHVlKCJ7c2FtcGxlX25hbWV9LXtjb2xuYW1lcyhzY2UpfSIpCgogICMjIyBFbnN1cmUgdGhlIHJvd0RhdGEgY29sdW1ucyBjYW4gYmUgaWRlbnRpZmllZAogICMgUmVjYWxsLCB3ZSB3YW50IHRvIGxlYXZlIGBnZW5lX3N5bWJvbGAgYWxvbmUsIGJ1dCBhZGQgdGhlIGBzYW1wbGVfbmFtZWAgdG8gdGhlIHJlc3QKICByb3dkYXRhX25hbWVzIDwtIGNvbG5hbWVzKHJvd0RhdGEoc2NlKSkKICAjIHByZWZpeCByb3dEYXRhIG5hbWVzIHdpdGggdGhlIHNhbXBsZSBuYW1lLCBleGNlcHQgZm9yIGdlbmUgc3ltYm9scwogIG5ld19yb3dkYXRhX25hbWVzIDwtIGlmZWxzZSgKICAgIHJvd2RhdGFfbmFtZXMgPT0gImdlbmVfc3ltYm9sIiwKICAgICJnZW5lX3N5bWJvbCIsCiAgICBnbHVlOjpnbHVlKCJ7c2FtcGxlX25hbWV9LXtyb3dkYXRhX25hbWVzfSIpCiAgKQogIGNvbG5hbWVzKHJvd0RhdGEoc2NlKSkgPC0gbmV3X3Jvd2RhdGFfbmFtZXMKICAKICAjIyMgRW5zdXJlIG1ldGFkYXRhIHNsb3QgZmllbGRzIGNhbiBiZSBpZGVudGlmaWVkCiAgIyBXZSdsbCBzaW1wbHkgcHJlcGVuZCB0aGUgYHNhbXBsZV9uYW1lYCB0byBhbGwgZmllbGRzIGZvciB0aGlzIHNsb3QKICBuYW1lcyhtZXRhZGF0YShzY2UpKSA8LSBnbHVlOjpnbHVlKCJ7c2FtcGxlX25hbWV9LXtuYW1lcyhtZXRhZGF0YShzY2UpKX0iKQogIAogIAogICMjIyBGaW5hbGx5LCB3ZSBjYW4gcmV0dXJuIHRoZSBmb3JtYXR0ZWQgU0NFIG9iamVjdAogIHJldHVybihzY2UpICAKfQpgYGAKClRvIHJ1biB0aGlzIGZ1bmN0aW9uLCB3ZSdsbCB1c2UgdGhlIGBwdXJycjo6bWFwMigpYCBmdW5jdGlvbiwgYSByZWxhdGl2ZSBvZiBgcHVycnI6Om1hcCgpYCB0aGF0IGFsbG93cyB5b3UgdG8gbG9vcCBvdmVyIF90d29fIGlucHV0IGxpc3RzL3ZlY3RvcnMuCkluIG91ciBjYXNlLCB3ZSB3YW50IHRvIHJ1biBgZm9ybWF0X3NjZSgpYCBvdmVyIHBhaXJlZCBgc2NlX2xpc3RgIGl0ZW1zIGFuZCBgc2NlX2xpc3RgIG5hbWVzLgoKYGBge3IgZm9ybWF0IHNjZXMgZm9yIG1lcmdlLCBsaXZlID0gVFJVRX0KIyBXZSBjYW4gdXNlIGBwdXJycjo6bWFwMigpYCB0byBsb29wIG92ZXIgdHdvIGxpc3QvdmVjdG9yIGFyZ3VtZW50cwpzY2VfbGlzdF9mb3JtYXR0ZWQgPC0gcHVycnI6Om1hcDIoCiAgIyBFYWNoICJpdGVyYXRpb24iIHdpbGwgbWFyY2ggZG93biB0aGUgZmlyc3QgdHdvCiAgIyAgYXJndW1lbnRzIGBzY2VfbGlzdGAgYW5kIGBuYW1lcyhzY2VfbGlzdClgIGluIG9yZGVyCiAgc2NlX2xpc3QsCiAgbmFtZXMoc2NlX2xpc3QpLAogIFwoc2NlLCBzYW1wbGVfbmFtZSkgZm9ybWF0X3NjZShzY2UsIHNhbXBsZV9uYW1lLCBzaGFyZWRfZ2VuZXMpIAopCgojIFByaW50IGZvcm1hdHRlZCBTQ0UgbGlzdApzY2VfbGlzdF9mb3JtYXR0ZWQKYGBgCgooUHNzdCwgbGlrZSBgcHVycnJgIGFuZCB3YW50IHRvIGRpdmUgZGVlcGVyPyBDaGVjayBvdXQgW3RoZSBgcHVycnI6OmltYXAoKWAgZnVuY3Rpb25dKGh0dHBzOi8vcHVycnIudGlkeXZlcnNlLm9yZy9yZWZlcmVuY2UvaW1hcC5odG1sKSEpCgoKIyMjIFBlcmZvcm0gdGhlIG1lcmdpbmcKCgpBdCBsb25nIGxhc3QsIHdlIGFyZSByZWFkeSB0byBtZXJnZSB0aGUgU0NFcywgd2hpY2ggd2UnbGwgZG8gdXNpbmcgdGhlIFIgZnVuY3Rpb24gYGNiaW5kKClgLgpUaGUgYGNiaW5kKClgIGZ1bmN0aW9uIGlzIG9mdGVuIHVzZWQgdG8gY29tYmluZSBkYXRhIGZyYW1lcyBvciBtYXRyaWNlcyBieSBjb2x1bW4sIGkuZS4gInN0YWNrIiB0aGVtIG5leHQgdG8gZWFjaCBvdGhlci4KVGhlIHNhbWUgcHJpbmNpcGxlIGFwcGxpZXMgaGVyZSwgYnV0IHdoZW4gcnVuIG9uIFNDRSBvYmplY3RzLCBgY2JpbmQoKWAgd2lsbCBjcmVhdGUgYSBuZXcgU0NFIG9iamVjdCBieSBjb21iaW5pbmcgYGNvdW50c2AgYW5kIGBsb2djb3VudHNgIG1hdHJpY2VzIGJ5IGNvbHVtbi4KRm9sbG93aW5nIHRoYXQgc3RydWN0dXJlLCBvdGhlciBTQ0Ugc2xvdHMgKGBjb2xEYXRhYCwgYHJvd0RhdGFgLCByZWR1Y2VkIGRpbWVuc2lvbnMsIGFuZCBvdGhlciBtZXRhZGF0YSkgYXJlIGNvbWJpbmVkIGFwcHJvcHJpYXRlbHkuCgpTaW5jZSB3ZSBuZWVkIHRvIGFwcGx5IGBjYmluZCgpYCB0byBhIF9saXN0XyBvZiBvYmplY3RzLCB3ZSBuZWVkIHRvIHVzZSBzb21lIHNsaWdodGx5LWduYXJseSBzeW50YXg6IFdlJ2xsIHVzZSB0aGUgZnVuY3Rpb24gYGRvLmNhbGwoKWAsIHdoaWNoIGFsbG93cyB0aGUgYGNiaW5kKClgIGlucHV0IHRvIGJlIGEgbGlzdCBvZiBvYmplY3RzIHRvIGNvbWJpbmUuCgpgYGB7ciBtZXJnZXMgc2NlcywgbGl2ZSA9IFRSVUV9CiMgTWVyZ2UgU0NFIG9iamVjdHMKbWVyZ2VkX3NjZSA8LSBkby5jYWxsKGNiaW5kLCBzY2VfbGlzdF9mb3JtYXR0ZWQpCgojIFByaW50IHRoZSBtZXJnZWRfc2NlIG9iamVjdAptZXJnZWRfc2NlCmBgYAoKV2Ugbm93IGhhdmUgYSBzaW5nbGUgbWVyZ2VkIFNDRSBvYmplY3QgdGhhdCBjb250YWlucyBhbGwgY2VsbHMgZnJvbSBhbGwgc2FtcGxlcyB3ZSdkIGxpa2UgdG8gaW50ZWdyYXRlLgoKTGV0J3MgdGFrZSBhIHBlZWsgYXQgc29tZSBvZiB0aGUgaW5uYXJkcyBvZiB0aGlzIG5ldyBTQ0Ugb2JqZWN0OgoKYGBge3IgZXhwbG9yZSBtZXJnZWRfc2NlLCBsaXZlID0gVFJVRX0KIyBIb3cgbWFueSBzYW1wbGVzLCBhbmQgY2VsbHMgcGVyIHNhbXBsZT8KdGFibGUoY29sRGF0YShtZXJnZWRfc2NlKSRzYW1wbGUpCgojIFdoYXQgYXJlIHRoZSBuZXcgY2VsbCBpZHMgKGNvbHVtbiBuYW1lcyk/CmhlYWQoY29sbmFtZXMobWVyZ2VkX3NjZSkpCnRhaWwoY29sbmFtZXMobWVyZ2VkX3NjZSkpCgojIFdoYXQgZG9lcyByb3dEYXRhIGxvb2sgbGlrZT8KaGVhZChyb3dEYXRhKG1lcmdlZF9zY2UpKQpgYGAKCgojIyBJbnRlZ3JhdGUgc2FtcGxlcwoKIVtTaW5nbGUtY2VsbCByb2FkbWFwOiBJbnRlZ3JhdGVdKGRpYWdyYW1zL3JvYWRtYXBfbXVsdGlfaW50ZWdyYXRlLnBuZykKClNvIGZhciwgd2UndmUgY3JlYXRlZCBhIGBtZXJnZWRfc2NlYCBvYmplY3Qgd2hpY2ggaXMgKGFsbW9zdCEpIHJlYWR5IGZvciBpbnRlZ3JhdGlvbi4KClRoZSBpbnRlZ3JhdGlvbiBtZXRob2RzIHdlJ2xsIGJlIHVzaW5nIGhlcmUgYWN0dWFsbHkgcGVyZm9ybSBiYXRjaCBjb3JyZWN0aW9uIG9uIGEgcmVkdWNlZCBkaW1lbnNpb24gcmVwcmVzZW50YXRpb24gb2YgdGhlIG5vcm1hbGl6ZWQgZ2VuZSBleHByZXNzaW9uIHZhbHVlcywgd2hpY2ggaXMgbW9yZSBlZmZpY2llbnQuCmBmYXN0TU5OYCBhbmQgYGhhcm1vbnlgIHNwZWNpZmljYWxseSB1c2UgUENBIGZvciB0aGlzLCBidXQgYmUgYXdhcmUgdGhhdCBkaWZmZXJlbnQgaW50ZWdyYXRpb24gbWV0aG9kcyBtYXkgdXNlIG90aGVyIGtpbmRzIG9mIHJlZHVjZWQgZGltZW5zaW9ucy4KCkJlZm9yZSBtZXJnaW5nLCBvdXIgb2JqZWN0cyBoYWQgcmVkdWNlZCBkaW1lbnNpb24gcmVwcmVzZW50YXRpb25zIGNhbGN1bGF0ZWQgb24gZWFjaCBpbmRpdmlkdWFsIFNDRSwgYW5kIHdlIHJlbW92ZWQgdGhlbSB3aGVuIHByZXBhcmluZyBmb3IgbWVyZ2UuCldlIHJlbW92ZWQgdGhlbSBiZWNhdXNlIHdlIGRvbid0IGFjdHVhbGx5IHdhbnQgdG8gdXNlIHRoZW0gYW55bW9yZSEKVGhpcyBpcyBiZWNhdXNlIHBhcnQgb2YgdGhlaXIgY2FsY3VsYXRpb24gaW52b2x2ZXMgc2NhbGluZyB0aGUgcmF3IGRhdGEgdG8gY2VudGVyIHRoZSBtZWFuLgpXaGVuIHNhbXBsZXMgYXJlIHNlcGFyYXRlbHkgY2VudGVyZWQsIF9hbGxfIG9mIHRoZW0gd2lsbCBiZSBjZW50ZXJlZCBhdCB6ZXJvLCBtYWtpbmcgaXQgbG9vayBsaWtlIHRoZSBkYXRhc2V0cyBhcmUgYWxyZWFkeSBwcmV0dHkgb3ZlcmxhcHBpbmcgd2hlbiB5b3UgcGxvdCB0aGVpciBVTUFQcyB0b2dldGhlci4KQnV0LCB0aGlzIGlzIGp1c3QgYSBtYXRoZW1hdGljYWwgYXJ0aWZhY3Qgb2YgaG93IGRpbWVuc2lvbiByZWR1Y3Rpb24gaXMgcGVyZm9ybWVkLgoKU28sIHdlJ2xsIGJlZ2luIGJ5IHJlLWNhbGN1bGF0aW5nIFBDQSBhbmQgVU1BUCBvbiB0aGUgbWVyZ2VkIG9iamVjdCBpbiBhIHdheSB0aGF0IHRha2VzIGJhdGNoZXMgaW50byBjb25zaWRlcmF0aW9uLiAKRm9yIGlucHV0IHRvIGludGVncmF0aW9uLCB3ZSdsbCB3YW50IHRoZSByZWR1Y2VkIGRpbWVuc2lvbiBjYWxjdWxhdGlvbnMgdG8gY29uc2lkZXIgbm9ybWFsaXplZCBnZW5lIGV4cHJlc3Npb24gdmFsdWVzIGZyb20gYWxsIHNhbXBsZXMgc2ltdWx0YW5lb3VzbHkuClNvIHdlJ2xsIG5lZWQgdG8gcmVjYWxjdWxhdGUgUENBIChhbmQgVU1BUCBmb3IgdmlzdWFsaXphdGlvbikgb24gdGhlIG1lcmdlZCBvYmplY3QuCgpGaXJzdCwgYXMgdXN1YWwsIHdlJ2xsIGRldGVybWluZSB0aGUgaGlnaC12YXJpYW5jZSBnZW5lcyB0byB1c2UgZm9yIFBDQSBmcm9tIHRoZSBgbWVyZ2VkX3NjZWAgb2JqZWN0LgpGb3IgdGhpcywgd2UnbGwgbmVlZCB0byBwcm92aWRlIHRoZSBhcmd1bWVudCBgYmxvY2sgPSBtZXJnZWRfc2NlJHNhbXBsZWAgd2hlbiBtb2RlbGluZyBnZW5lIHZhcmlhbmNlLCB3aGljaCB0ZWxscyBgc2NyYW46Om1vZGVsR2VuZVZhcigpYCB0byBmaXJzdCBtb2RlbCB2YXJpYW5jZSBzZXBhcmF0ZWx5IGZvciBlYWNoIGJhdGNoIGFuZCB0aGVuIGNvbWJpbmUgdGhvc2UgbW9kZWxpbmcgc3RhdGlzdGljcy4KKFBzc3Q6IGlzbid0IGl0IGhhbmR5IHdlIGNyZWF0ZWQgdGhhdCBgc2FtcGxlYCBjb2x1bW4gd2hlbiBtZXJnaW5nPyEpCgpgYGB7ciBjYWxjIG1lcmdlZCBodiBnZW5lc30KIyBTcGVjaWZ5IHRoZSBudW1iZXIgb2YgZ2VuZXMgdG8gaWRlbnRpZnkKbnVtX2dlbmVzIDwtIDIwMDAKCiMgQ2FsY3VsYXRlIHZhcmlhdGlvbiBmb3IgZWFjaCBnZW5lCmdlbmVfdmFyaWFuY2UgPC0gc2NyYW46Om1vZGVsR2VuZVZhcihtZXJnZWRfc2NlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBzcGVjaWZ5IHRoZSBncm91cGluZyBjb2x1bW46CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibG9jayA9IG1lcmdlZF9zY2Ukc2FtcGxlKQoKIyBHZXQgdGhlIHRvcCBgbnVtX2dlbmVzYCBoaWdoLXZhcmlhbmNlIGdlbmVzIHRvIHVzZSBmb3IgZGltZW5zaW9uIHJlZHVjdGlvbgpodl9nZW5lcyA8LSBzY3Jhbjo6Z2V0VG9wSFZHcyhnZW5lX3ZhcmlhbmNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuID0gbnVtX2dlbmVzKQpgYGAKClRvIGNhbGN1bGF0ZSB0aGUgUENBIG1hdHJpeCBpdHNlbGYsIHdlJ2xsIHVzZSBhbiBhcHByb2FjaCBmcm9tIHRoZSBgYmF0Y2hlbG9yYCBwYWNrYWdlLCB3aGljaCBpcyB0aGUgUiBwYWNrYWdlIHRoYXQgY29udGFpbnMgdGhlIGBmYXN0TU5OYCBtZXRob2QuClRoZSBbYGJhdGNoZWxvcjo6bXVsdGlCYXRjaFBDQSgpYF0oaHR0cHM6Ly9yZHJyLmlvL2Jpb2MvYmF0Y2hlbG9yL21hbi9tdWx0aUJhdGNoUENBLmh0bWwpIGZ1bmN0aW9uIGNhbGN1bGF0ZXMgYSBiYXRjaC13ZWlnaHRlZCBQQ0EgbWF0cml4LgpUaGlzIHdlaWdodGluZyBlbnN1cmVzIHRoYXQgYWxsIGJhdGNoZXMsIHdoaWNoIG1heSBoYXZlIHZlcnkgZGlmZmVyZW50IG51bWJlcnMgb2YgY2VsbHMsIGNvbnRyaWJ1dGUgZXF1YWxseSB0byB0aGUgb3ZlcmFsbCBzY2FsaW5nLgoKYGBge3IgbWFrZSBtZXJnZWRfcGNhLCBsaXZlID0gVFJVRX0KIyBVc2UgYmF0Y2hlbG9yIHRvIGNhbGN1bGF0ZSBQQ0EgZm9yIG1lcmdlZF9zY2UsIGNvbnNpZGVyaW5nIG9ubHkKIyAgdGhlIGhpZ2gtdmFyaWFuY2UgZ2VuZXMKIyBXZSdsbCBuZWVkIHRvIGluY2x1ZGUgdGhlIGFyZ3VtZW50IGBwcmVzZXJ2ZS5zaW5nbGUgPSBUUlVFYCB0byBnZXQKIyAgYSBzaW5nbGUgbWF0cml4IHdpdGggYWxsIHNhbXBsZXMgYW5kIG5vdCBzZXBhcmF0ZSBtYXRyaWNlcyBmb3IgZWFjaCBzYW1wbGUKbWVyZ2VkX3BjYSA8LSBiYXRjaGVsb3I6Om11bHRpQmF0Y2hQQ0EobWVyZ2VkX3NjZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Vic2V0LnJvdyA9IGh2X2dlbmVzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYXRjaCA9IG1lcmdlZF9zY2Ukc2FtcGxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVzZXJ2ZS5zaW5nbGUgPSBUUlVFKQpgYGAKCkxldCdzIGhhdmUgYSBsb29rIGF0IHRoZSBvdXRwdXQ6CmBgYHtyIHByaW50IG1lcmdlZF9wY2EsIGxpdmUgPSBUUlVFfQojIFRoaXMgb3V0cHV0IGlzIG5vdCB2ZXJ5IGludGVyZXN0aW5nIQptZXJnZWRfcGNhCmBgYAoKV2UgY2FuIHVzZSBpbmRleGluZyBgW1sxXV1gIHRvIHNlZSB0aGUgUENBIG1hdHJpeCBjYWxjdWxhdGVkLCBsb29raW5nIGF0IGEgc21hbGwgc3Vic2V0IGZvciBjb252ZW5pZW5jZToKCmBgYHtyIHByaW50IG1lcmdlZF9wY2EgaW5kZXhlZCwgbGl2ZSA9IFRSVUV9Cm1lcmdlZF9wY2FbWzFdXVsxOjUsMTo1XQpgYGAKCldlIGNhbiBub3cgaW5jbHVkZSB0aGlzIFBDQSBtYXRyaXggaW4gb3VyIGBtZXJnZWRfc2NlYCBvYmplY3Q6CgpgYGB7ciBhZGQgbWVyZ2VkX3BjYSwgbGl2ZSA9IFRSVUV9CiMgYWRkIFBDQSByZXN1bHRzIHRvIG1lcmdlZCBTQ0Ugb2JqZWN0CnJlZHVjZWREaW0obWVyZ2VkX3NjZSwgIlBDQSIpIDwtIG1lcmdlZF9wY2FbWzFdXQpgYGAKCk5vdyB0aGF0IHdlIGhhdmUgdGhlIFBDQSBtYXRyaXgsIHdlIGNhbiBwcm9jZWVkIHRvIGNhbGN1bGF0ZSBVTUFQIHRvIHZpc3VhbGl6ZSB0aGUgdW5jb3JyZWN0ZWQgbWVyZ2VkIGRhdGEuCgpgYGB7ciBjYWxjdWxhdGUgbWVyZ2VkIHVtYXAsIGxpdmUgPSBUUlVFfQptZXJnZWRfc2NlIDwtIHNjYXRlcjo6cnVuVU1BUChtZXJnZWRfc2NlKQpgYGAKCmBgYHtyIHBsb3QgdW5jb3JyZWN0ZWQgbWVyZ2VkIFVNQVB9CiMgVU1BUHMgc2NhbGVkIHRvZ2V0aGVyIHdoZW4gY2FsY3VsYXRlZCBmcm9tIHRoZSBtZXJnZWQgU0NFCnNjYXRlcjo6cGxvdFVNQVAoCiAgbWVyZ2VkX3NjZSwKICBjb2xvcl9ieSA9ICJzYW1wbGUiLAogICMgU29tZSBzdHlsaW5nIHRvIGhlbHAgdXMgc2VlIHRoZSBwb2ludHM6CiAgcG9pbnRfc2l6ZSA9IDAuNSwKICBwb2ludF9hbHBoYSA9IDAuMgopICsKICBzY2FsZV9jb2xvcl9icmV3ZXIocGFsZXR0ZSA9ICJEYXJrMiIsIG5hbWUgPSAic2FtcGxlIikgKwogIGd1aWRlcyhjb2xvciA9IGd1aWRlX2xlZ2VuZChvdmVycmlkZS5hZXMgPSBsaXN0KHNpemUgPSAzLCBhbHBoYSA9IDEpKSkgKwogIGdndGl0bGUoIlVNQVAgY2FsY3VsYXRlZCBvbiBtZXJnZWRfc2NlIikKYGBgCgpXZSBzZWUgKG1vc3RseSkgZm91ciBzZXBhcmF0ZSBjbHVtcHMgcmVwcmVzZW50aW5nIHRoZSBmb3VyIGRpZmZlcmVudCBfbWVyZ2VkIGJ1dCBub3QgeWV0IGludGVncmF0ZWRfIHNhbXBsZXMuCldlIGNhbiB0aGluayBvZiB0aGlzIFVNQVAgYXMgb3VyICJiZWZvcmUiIFVNQVAsIGFuZCB3ZSBjYW4gY29tcGFyZSB0aGlzIHRvIHRoZSAiYWZ0ZXIiIFVNQVAgd2Ugc2VlIHBvc3QtaW50ZWdyYXRpb24uCgpMZXQncyBkaXNjdXNzIGEgbGl0dGxlIGZpcnN0OiBXaGF0IHZpc3VhbCBkaWZmZXJlbmNlcyBkbyB5b3UgdGhpbmsgdGhlIFVNQVAgb24gdGhlIGludGVncmF0ZWQgdmVyc2lvbiBvZiBkYXRhIHdpbGwgaGF2ZT8KV2hhdCBzaW1pbGFyaXRpZXMgZG8geW91IHRoaW5rIHRoZSBpbnRlZ3JhdGVkIFVNQVAgd2lsbCBoYXZlIHRvIHRoaXMgcGxvdD8KCgojIyMgSW50ZWdyYXRlIHdpdGggYGZhc3RNTk5gCgpGaW5hbGx5LCB3ZSdyZSByZWFkeSB0byBpbnRlZ3JhdGUhClRvIHN0YXJ0LCB3ZSdsbCB1c2UgdGhlIGBmYXN0TU5OYCBhcHByb2FjaCBmcm9tIHRoZSBCaW9jb25kdWN0b3IgW2BiYXRjaGVsb3JgIHBhY2thZ2VdKGh0dHA6Ly93d3cuYmlvY29uZHVjdG9yLm9yZy9wYWNrYWdlcy9yZWxlYXNlL2Jpb2MvaHRtbC9iYXRjaGVsb3IuaHRtbCkuCgpgZmFzdE1OTmAgdGFrZXMgYXMgaW5wdXQgdGhlIGBtZXJnZWRfc2NlYCBvYmplY3QgdG8gaW50ZWdyYXRlLCBhbmQgdGhlIGZpcnN0IHN0ZXAgaXQgcGVyZm9ybXMgaXMgYWN0dWFsbHkgdG8gcnVuIGBiYXRjaGVsb3I6Om11bHRpQmF0Y2hQQ0EoKWAgb24gdGhhdCBTQ0UuCkl0IHRoZW4gdXNlcyB0aGF0IGJhdGNoLXdlaWdodGVkIFBDQSBtYXRyaXggdG8gcGVyZm9ybSB0aGUgYWN0dWFsIGJhdGNoIGNvcnJlY3Rpb24uClRoZSBgYmF0Y2hgIGFyZ3VtZW50IGlzIHVzZWQgdG8gc3BlY2lmeSB0aGUgZGlmZmVyZW50IGdyb3VwaW5ncyB3aXRoaW4gdGhlIGBtZXJnZWRfc2NlYCAoaS5lLiB0aGUgb3JpZ2luYWwgc2FtcGxlIHRoYXQgZWFjaCBjZWxsIGJlbG9uZ3MgdG8pLCBhbmQgdGhlIGBzdWJzZXQucm93YCBhcmd1bWVudCBjYW4gb3B0aW9uYWxseSBiZSB1c2VkIHRvIHByb3ZpZGUgYSB2ZWN0b3Igb2YgaGlnaC12YXJpYW5jZSBnZW5lcyB0aGF0IHNob3VsZCBiZSBjb25zaWRlcmVkIGZvciB0aGlzIFBDQSBjYWxjdWxhdGlvbi4KYGZhc3RNTk5gIHdpbGwgcmV0dXJuIGFuIFNDRSBvYmplY3QgdGhhdCBjb250YWlucyBhIGJhdGNoLWNvcnJlY3RlZCBQQ0EuCkxldCdzIHJ1biBpdCBhbmQgc2F2ZSB0aGUgcmVzdWx0IHRvIGEgdmFyaWFibGUgY2FsbGVkIGBpbnRlZ3JhdGVkX3NjZWAuCgoKYGBge3IgcnVuIGZhc3Rtbm4sIGxpdmUgPSBUUlVFfQojIGludGVncmF0ZSB3aXRoIGZhc3RNTk4sIGFnYWluIHNwZWNpZnlpbmcgb25seSBvdXIgaGlnaC12YXJpYW5jZSBnZW5lcwppbnRlZ3JhdGVkX3NjZSA8LSBiYXRjaGVsb3I6OmZhc3RNTk4oCiAgbWVyZ2VkX3NjZSwKICBiYXRjaCA9IG1lcmdlZF9zY2Ukc2FtcGxlLAogIHN1YnNldC5yb3cgPSBodl9nZW5lcwopCmBgYAoKTGV0J3MgaGF2ZSBhIGxvb2sgYXQgdGhlIHJlc3VsdDoKCmBgYHtyIGZhc3Rtbm4gcmVzdWx0LCBsaXZlID0gVFJVRX0KIyBQcmludCB0aGUgaW50ZWdyYXRlZF9zY2Ugb2JqZWN0CmludGVncmF0ZWRfc2NlCmBgYAoKVGhlcmUgYXJlIGNvdXBsZSBwaWVjZXMgb2YgaW5mb3JtYXRpb24gaGVyZSBvZiBpbnRlcmVzdDoKCi0gVGhlIGBjb3JyZWN0ZWRgIHJlZHVjZWQgZGltZW5zaW9uIHJlcHJlc2VudHMgdGhlIGJhdGNoLWNvcnJlY3RlZCBQQ0EgdGhhdCBgZmFzdE1OTmAgY2FsY3VsYXRlZC4KLSBUaGUgYHJlY29uc3RydWN0ZWRgIGFzc2F5IHJlcHJlc2VudHMgdGhlIGJhdGNoLWNvcnJlY3RlZCBub3JtYWxpemVkIGV4cHJlc3Npb24gdmFsdWVzLCB3aGljaCBgZmFzdE1OTmAgImJhY2stY2FsY3VsYXRlZCIgZnJvbSB0aGUgYmF0Y2gtY29ycmVjdGVkIFBDQSAoYGNvcnJlY3RlZGApLgpHZW5lcmFsbHkgc3BlYWtpbmcsIHRoZXNlIGV4cHJlc3Npb24gdmFsdWVzIGFyZSBub3Qgc3RhbmQtYWxvbmUgdmFsdWVzIHRoYXQgeW91IHNob3VsZCB1c2UgZm9yIG90aGVyIGFwcGxpY2F0aW9ucyBsaWtlIGRpZmZlcmVudGlhbCBnZW5lIGV4cHJlc3Npb24sIGFzIGRlc2NyaWJlZCBpbiBbX09yY2hlc3RyYXRpbmcgU2luZ2xlIENlbGwgQW5hbHlzZXNfXShodHRwOi8vYmlvY29uZHVjdG9yLm9yZy9ib29rcy8zLjE5L09TQ0EubXVsdGlzYW1wbGUvdXNpbmctY29ycmVjdGVkLXZhbHVlcy5odG1sKS4KSWYgdGhlIGBzdWJzZXQucm93YCBhcmd1bWVudCBpcyBwcm92aWRlZCAoYXMgaXQgd2FzIGhlcmUpLCBvbmx5IGdlbmVzIHByZXNlbnQgaW4gYHN1YnNldC5yb3dgIHdpbGwgYmUgaW5jbHVkZWQgaW4gdGhlc2UgcmVjb25zdHJ1Y3RlZCBleHByZXNzaW9uIHZhbHVlcywgYnV0IHRoaXMgc2V0dGluZyBjYW4gYmUgb3ZlcnJpZGRlbiBzbyB0aGF0IGFsbCBnZW5lcyBoYXZlIHJlY29uc3RydWN0ZWQgZXhwcmVzc2lvbiB3aXRoIHRoZSBhcmd1bWVudCBgY29ycmVjdC5hbGwgPSBUUlVFYC4KCldlJ3JlIG1vc3RseSBpbnRlcmVzdGVkIGluIHRoZSBQQ0EgdGhhdCBgZmFzdE1OTmAgY2FsY3VsYXRlZCwgc28gbGV0J3Mgc2F2ZSB0aGF0IGluZm9ybWF0aW9uICh3aXRoIGFuIGluZm9ybWF0aXZlIGFuZCB1bmlxdWUgbmFtZSkgaW50byBvdXIgYG1lcmdlZF9zY2VgIG9iamVjdDoKCmBgYHtyIGZhc3Rtbm4gcGNzLCBsaXZlID0gVFJVRX0KIyBNYWtlIGEgbmV3IHJlZHVjZWREaW0gbmFtZWQgZmFzdG1ubl9QQ0EgZnJvbSB0aGUgY29ycmVjdGVkIHJlZHVjZWREaW0gaW4gaW50ZWdyYXRlZF9zY2UKcmVkdWNlZERpbShtZXJnZWRfc2NlLCAiZmFzdG1ubl9QQ0EiKSA8LSByZWR1Y2VkRGltKGludGVncmF0ZWRfc2NlLCAiY29ycmVjdGVkIikKYGBgCgpGaW5hbGx5LCB3ZSdsbCBjYWxjdWxhdGUgVU1BUCBmcm9tIHRoZXNlIGNvcnJlY3RlZCBQQ0EgbWF0cml4IGZvciB2aXN1YWxpemF0aW9uLgpJbiB0aGlzIGNhc2Ugd2UgbmVlZCB0byBzcGVjaWZ5IHR3byBhZGRpdGlvbmFsIGFyZ3VtZW50cyBzaW5jZSB3ZSdyZSB3b3JraW5nIHdpdGggbm9uLXN0YW5kYXJkIHJlZHVjZWQgZGltZW5zaW9uIG5hbWVzOgoKKyBgZGltcmVkID0gImZhc3Rtbm5fUENBImAsIHdoaWNoIHNwZWNpZmllcyB0aGUgZXhpc3RpbmcgcmVkdWNlZCBkaW1lbnNpb24gdG8gdXNlIGZvciB0aGUgY2FsY3VsYXRpb24KKyBgbmFtZSA9ICJmYXN0bW5uX1VNQVAiYCwgd2hpY2ggbmFtZXMgdGhlIGZpbmFsIFVNQVAgdGhhdCB0aGlzIGZ1bmN0aW9uIGNhbGN1bGF0ZXMKCmBgYHtyIGNhbGN1bGF0ZSBmYXN0bW5uIHVtYXAsIGxpdmUgPSBUUlVFfQojIENhbGN1bGF0ZSBVTUFQCm1lcmdlZF9zY2UgPC0gc2NhdGVyOjpydW5VTUFQKAogIG1lcmdlZF9zY2UsCiAgZGltcmVkID0gImZhc3Rtbm5fUENBIiwKICBuYW1lID0gImZhc3Rtbm5fVU1BUCIKKQpgYGAKCkZpcnN0LCBsZXQncyBwbG90IHRoZSBpbnRlZ3JhdGVkIFVNQVAgaGlnaGxpZ2h0aW5nIHRoZSBkaWZmZXJlbnQgYmF0Y2hlcy4KQSB3ZWxsLWludGVncmF0ZWQgZGF0YXNldCB3aWxsIHNob3cgYmF0Y2ggbWl4aW5nLCBidXQgYSBwb29ybHktaW50ZWdyYXRlZCBkYXRhc2V0IHdpbGwgc2hvdyBtb3JlIHNlcGFyYXRpb24gYW1vbmcgYmF0Y2hlcywgc2ltaWxhciB0byB0aGUgdW5jb3JyZWN0ZWQgVU1BUC4KTm90ZSB0aGF0IHRoaXMgaXMgYSBtb3JlIHF1YWxpdGF0aXZlIHdheSB0byBhc3Nlc3MgdGhlIHN1Y2Nlc3Mgb2YgaW50ZWdyYXRpb24sIGJ1dCB0aGVyZSBhcmUgZm9ybWFsIG1ldHJpY3Mgb25lIGNhbiB1c2UgdG8gYXNzZXNzIGJhdGNoIG1peGluZywgd2hpY2ggeW91IGNhbiByZWFkIG1vcmUgYWJvdXQgaW4gW3RoaXMgY2hhcHRlciBvZiBPU0NBXShodHRwOi8vYmlvY29uZHVjdG9yLm9yZy9ib29rcy8zLjE5L09TQ0EubXVsdGlzYW1wbGUvY29ycmVjdGlvbi1kaWFnbm9zdGljcy5odG1sKS4KCmBgYHtyIHBsb3QgZmFzdG1ubiB1bWFwIGJhdGNoZXN9CnNjYXRlcjo6cGxvdFJlZHVjZWREaW0obWVyZ2VkX3NjZSwKICAgICAgICAgICAgICAgICAgICAgICAjIHBsb3QgdGhlIGZhc3RNTk4gY29vcmRpbmF0ZXMKICAgICAgICAgICAgICAgICAgICAgICBkaW1yZWQgPSAiZmFzdG1ubl9VTUFQIiwKICAgICAgICAgICAgICAgICAgICAgICAjIGNvbG9yIGJ5IHNhbXBsZQogICAgICAgICAgICAgICAgICAgICAgIGNvbG9yX2J5ID0gInNhbXBsZSIsCiAgICAgICAgICAgICAgICAgICAgICAgIyBTb21lIHN0eWxpbmcgdG8gaGVscCB1cyBzZWUgdGhlIHBvaW50czoKICAgICAgICAgICAgICAgICAgICAgICBwb2ludF9zaXplID0gMC41LAogICAgICAgICAgICAgICAgICAgICAgIHBvaW50X2FscGhhID0gMC4yKSArCiAgc2NhbGVfY29sb3JfYnJld2VyKHBhbGV0dGUgPSAiRGFyazIiLCBuYW1lID0gInNhbXBsZSIpICsKICBndWlkZXMoY29sb3IgPSBndWlkZV9sZWdlbmQob3ZlcnJpZGUuYWVzID0gbGlzdChzaXplID0gMywgYWxwaGEgPSAxKSkpICsKICBnZ3RpdGxlKCJVTUFQIGFmdGVyIGludGVncmF0aW9uIHdpdGggZmFzdE1OTiIpCmBgYAoKVGhpcyBgZmFzdG1ubl9VTUFQYCBjZXJ0YWlubHkgbG9va3MgZGlmZmVyZW50IGZyb20gdGhlIG9uZSB3ZSBtYWRlIGJlZm9yZSBpbnRlZ3JhdGluZyEKV2hhdCBkaWZmZXJlbnQgdHJlbmRzIGRvIHlvdSBzZWU/CkRvIGFsbCBzYW1wbGVzIGxvb2sgImVxdWFsbHkgd2VsbCIgaW50ZWdyYXRlZCwgZnJvbSBhIGZpcnN0IGxvb2s/CgpJbXBvcnRhbnRseSwgb25lIHJlYXNvbiB0aGF0IGJhdGNoZXMgbWF5IHN0aWxsIGFwcGVhciBzZXBhcmF0ZWQgaW4gdGhlIGNvcnJlY3RlZCBVTUFQIGlzIGlmIHRoZXkgX3Nob3VsZF8gYmUgc2VwYXJhdGVkIC0gZm9yIGV4YW1wbGUsIG1heWJlIHR3byBiYXRjaGVzIGNvbnRhaW4gdmVyeSBkaWZmZXJlbnQgY2VsbCB0eXBlcywgaGF2ZSB2ZXJ5IGRpZmZlcmVudCBkaWFnbm9zZXMsIG9yIG1heSBiZSBmcm9tIGRpZmZlcmVudCBwYXRpZW50cy4KClJlY2FsbCBmcm9tIGVhcmxpZXIgdGhhdCB3ZSBjb252ZW5pZW50bHkgaGF2ZSBjZWxsIHR5cGUgYW5ub3RhdGlvbnMgaW4gb3VyIFNDRXMsIHNvIHdlIGNhbiBleHBsb3JlIHRob3NlIGhlcmUhCkxldCdzIHRha2UgYSBxdWljayBkZXRvdXIgdG8gc2VlIHdoYXQga2luZHMgb2YgY2VsbCB0eXBlcyBhcmUgaW4gdGhpcyBkYXRhIGJ5IG1ha2luZyBhIGJhcnBsb3Qgb2YgdGhlIGNlbGwgdHlwZXMgYWNyb3NzIHNhbXBsZXM6CgpgYGB7ciBleHBsb3JlIGNlbGx0eXBlc30KIyBDZWxsIHR5cGVzIGFyZSBpbiB0aGUgYGNlbGx0eXBlX2Jyb2FkYCBhbmQgYGNlbGx0eXBlX2ZpbmVgIGNvbHVtbnMKbWVyZ2VkX3NjZV9kZiA8LSBhcy5kYXRhLmZyYW1lKGNvbERhdGEobWVyZ2VkX3NjZSkpCgojIFVzZSBnZ3Bsb3QyIHRvIG1ha2UgYSBiYXJwbG90IHRoZSBjZWxsIHR5cGVzIGFjcm9zcyBzYW1wbGVzCmdncGxvdChtZXJnZWRfc2NlX2RmLAogICAgICAgYWVzKHggPSBzYW1wbGUsCiAgICAgICAgICAgZmlsbCA9IGNlbGx0eXBlX2Jyb2FkKSkgKwogICMgQmFycGxvdCBvZiBjZWxsdHlwZSBwcm9wb3J0aW9ucwogIGdlb21fYmFyKHBvc2l0aW9uID0gImZpbGwiKSArCiAgIyBVc2UgYSBDVkQtZnJpZW5kbHkgY29sb3Igc2NoZW1lCiAgc2NhbGVfZmlsbF9icmV3ZXIocGFsZXR0ZSA9ICJEYXJrMiIsIG5hLnZhbHVlID0gImdyZXk4MCIpICsKICAjIGN1c3RvbWl6ZSB5LWF4aXMgbGFiZWwKICBsYWJzKHkgPSAiUHJvcG9ydGlvbiIpICsKICAjIG5pY2VyIHRoZW1lCiAgdGhlbWVfYncoKQpgYGAKCldlIHNlZSB0aGF0IFR1bW9yIGNlbGwgdHlwZXMgYXJlIGJ5IGZhciB0aGUgbW9zdCBwcmV2YWxlbnQgYWNyb3NzIGFsbCBzYW1wbGVzLCBhbmQgbm9ybWFsIHRpc3N1ZSBjZWxsIHR5cGVzIGFyZSBub3QgdmVyeSBjb21tb24uCldlIHNlZSBhbHNvIHRoYXQgYFNDUENMMDAwNDgxYCBoYXMgYSBsYXJnZXIgYFR1bW9yX015b2N5dGVgIHBvcHVsYXRpb24sIHdoaWxlIGFsbCBvdGhlciBzYW1wbGVzIGhhdmUgbGFyZ2VyIGBUdW1vcl9NZXNvZGVybWAgcG9wdWxhdGlvbnMuClRoaXMgZGlmZmVyZW5jZSBfbWF5XyBleHBsYWluIHdoeSB3ZSBvYnNlcnZlIHRoYXQgYFNDUENMMDAwNDgxYCBpcyBzb21ld2hhdCBtb3JlIHNlcGFyYXRlZCBmcm9tIHRoZSBvdGhlciBzYW1wbGVzIGluIHRoZSBgZmFzdE1OTmAgVU1BUC4KCkxldCdzIHJlLXBsb3QgdGhpcyBVTUFQIHRvIGhpZ2hsaWdodCBjZWxsIHR5cGVzOgoKCmBgYHtyIHBsb3QgZmFzdG1ubiB1bWFwIGNlbGx0eXBlc30Kc2NhdGVyOjpwbG90UmVkdWNlZERpbShtZXJnZWRfc2NlLAogICAgICAgICAgICAgICAgICAgICAgIGRpbXJlZCA9ICJmYXN0bW5uX1VNQVAiLAogICAgICAgICAgICAgICAgICAgICAgICMgY29sb3IgYnkgYnJvYWQgY2VsbHR5cGVzCiAgICAgICAgICAgICAgICAgICAgICAgY29sb3JfYnkgPSAiY2VsbHR5cGVfYnJvYWQiLAogICAgICAgICAgICAgICAgICAgICAgIHBvaW50X3NpemUgPSAwLjUsCiAgICAgICAgICAgICAgICAgICAgICAgcG9pbnRfYWxwaGEgPSAwLjIpICsKICAjIGluY2x1ZGUgYXJndW1lbnQgdG8gc3BlY2lmeSBjb2xvciBvZiBOQSB2YWx1ZXMKICBzY2FsZV9jb2xvcl9icmV3ZXIocGFsZXR0ZSA9ICJEYXJrMiIsIG5hbWUgPSAiQnJvYWQgY2VsbHR5cGUiLCBuYS52YWx1ZSA9ICJncmV5ODAiKSArCiAgZ3VpZGVzKGNvbG9yID0gZ3VpZGVfbGVnZW5kKG92ZXJyaWRlLmFlcyA9IGxpc3Qoc2l6ZSA9IDMsIGFscGhhID0gMSkpKSArCiAgZ2d0aXRsZSgiVU1BUCBhZnRlciBpbnRlZ3JhdGlvbiB3aXRoIGZhc3RNTk4iKQpgYGAKClRoaXMgVU1BUCBzaG93cyB0aGF0IHRoZSBub3JtYWwgdGlzc3VlIGNlbGwgdHlwZXMgKG1vc3RseSB2YXNjdWxhciBlbmRvdGhlbGl1bSwgbXVzY2xlIGNlbGxzLCBhbmQgbW9ub2N5dGVzKSB0ZW5kIHRvIGNsdXN0ZXIgdG9nZXRoZXIgYW5kIGFyZSBnZW5lcmFsbHkgc2VwYXJhdGVkIGZyb20gdGhlIHR1bW9yIGNlbGwgdHlwZXMsIHdoaWNoIGlzIGFuIGVuY291cmFnaW5nIHBhdHRlcm4hClR1bW9yIGNlbGwgdHlwZXMgZnJvbSBkaWZmZXJlbnQgc2FtcGxlcyBhcmUgYWxsIGFsc28gY2x1c3RlcmluZyB0b2dldGhlciwgd2hpY2ggaXMgZXZlbiBtb3JlIGVuY291cmFnaW5nIHRoYXQgd2UgaGFkIHN1Y2Nlc3NmdWwgaW50ZWdyYXRpb24uCgpIb3dldmVyLCBpdCdzIGEgYml0IGNoYWxsZW5naW5nIHRvIHNlZSBhbGwgdGhlIHBvaW50cyBnaXZlbiB0aGUgYW1vdW50IG9mIG92ZXJsYXAgaW4gdGhlIHBsb3QuCk9uZSB3YXkgd2UgY2FuIHNlZSBhbGwgdGhlIHBvaW50cyBhIGJpdCBiZXR0ZXIgaXMgdG8gZmFjZXQgdGhlIHBsb3QgYnkgc2FtcGxlLCB1c2luZyBgZmFjZXRfd3JhcCgpYCBmcm9tIHRoZSBgZ2dwbG90MmAgcGFja2FnZSAod2hpY2ggd2UgY2FuIGRvIGJlY2F1c2UgYHNjYXRlcjo6cGxvdFJlZHVjZWREaW0oKWAgcmV0dXJucyBhIGBnZ3Bsb3QyYCBvYmplY3QpOgoKYGBge3IgcGxvdCBmYXN0bW5uIHVtYXAgY2VsbHR5cGVzIGZhY2V0ZWR9CnNjYXRlcjo6cGxvdFJlZHVjZWREaW0obWVyZ2VkX3NjZSwKICAgICAgICAgICAgICAgICAgICAgICBkaW1yZWQgPSAiZmFzdG1ubl9VTUFQIiwKICAgICAgICAgICAgICAgICAgICAgICBjb2xvcl9ieSA9ICJjZWxsdHlwZV9icm9hZCIsCiAgICAgICAgICAgICAgICAgICAgICAgcG9pbnRfc2l6ZSA9IDAuNSwKICAgICAgICAgICAgICAgICAgICAgICBwb2ludF9hbHBoYSA9IDAuMiwKICAgICAgICAgICAgICAgICAgICAgICAjIEFsbG93IGZvciBmYWNldGluZyBieSBhIHZhcmlhYmxlIHVzaW5nIGBvdGhlcl9maWVsZHNgOgogICAgICAgICAgICAgICAgICAgICAgIG90aGVyX2ZpZWxkcyA9ICJzYW1wbGUiKSArCiAgc2NhbGVfY29sb3JfYnJld2VyKHBhbGV0dGUgPSAiRGFyazIiLCBuYW1lID0gIkJyb2FkIGNlbGx0eXBlIiwgbmEudmFsdWUgPSAiZ3JleTgwIikgKwogIGd1aWRlcyhjb2xvciA9IGd1aWRlX2xlZ2VuZChvdmVycmlkZS5hZXMgPSBsaXN0KHNpemUgPSAzLCBhbHBoYSA9IDEpKSkgKwogIGdndGl0bGUoIlVNQVAgYWZ0ZXIgaW50ZWdyYXRpb24gd2l0aCBmYXN0TU5OIikgKwogICMgRmFjZXQgYnkgc2FtcGxlCiAgZmFjZXRfd3JhcCh2YXJzKHNhbXBsZSkpICsKICAjIFVzZSBhIHRoZW1lIHdpdGggYmFja2dyb3VuZCBncmlkIHRvIG1vcmUgZWFzaWx5IGNvbXBhcmUgcGFuZWwgY29vcmRpbmF0ZXMKICB0aGVtZV9idygpCmBgYAoKV2hhdCB0cmVuZHMgZG8geW91IG9ic2VydmUgYmV0d2VlbiB0dW1vciBhbmQgaGVhbHRoeSB0aXNzdWVzIGFtb25nIHRoZXNlIGludGVncmF0ZWQgc2FtcGxlcz8KCiMjIyBJbnRlZ3JhdGUgd2l0aCBgaGFybW9ueWAKCmBmYXN0TU5OYCBpcyBvbmx5IG9uZSBvZiBtYW55IGFwcHJvYWNoZXMgdG8gcGVyZm9ybSBpbnRlZ3JhdGlvbiwgYW5kIGRpZmZlcmVudCBtZXRob2RzIGhhdmUgZGlmZmVyZW50IGNhcGFiaWxpdGllcyBhbmQgbWF5IGdpdmUgZGlmZmVyZW50IHJlc3VsdHMuCkZvciBleGFtcGxlLCBzb21lIG1ldGhvZHMgY2FuIGFjY29tbW9kYXRlIGFkZGl0aW9uYWwgY292YXJpYXRlcyAoZS5nLiwgdGVjaG5vbG9neSwgcGF0aWVudCwgZGlhZ25vc2lzLCBldGMuKSB0aGF0IGNhbiBpbmZsdWVuY2UgaW50ZWdyYXRpb24uCkluIGZhY3QgdGhlIGRhdGEgd2UgYXJlIHVzaW5nIGhhcyBhIGtub3duIF9wYXRpZW50XyBjb3ZhcmlhdGU7IGBTQ1BDTDAwMDQ3OWAgYW5kIGBTQ1BDTDAwMDQ4MGAgYXJlIGZyb20gUGF0aWVudCBBLCBhbmQgYFNDUENMMDAwNDgxYCBhbmQgYFNDUENMMDAwNDgyYCBhcmUgZnJvbSBQYXRpZW50IEIuCgpTbywgbGV0J3MgcGVyZm9ybSBpbnRlZ3JhdGlvbiB3aXRoIGEgbWV0aG9kIHRoYXQgY2FuIHVzZSB0aGlzIGluZm9ybWF0aW9uIC0gW2BoYXJtb255YF0oaHR0cHM6Ly9wb3J0YWxzLmJyb2FkaW5zdGl0dXRlLm9yZy9oYXJtb255LykhCgpUbyBiZWdpbiBzZXR0aW5nIHVwIGZvciBgaGFybW9ueWAgaW50ZWdyYXRpb24sIHdlIG5lZWQgdG8gYWRkIGV4cGxpY2l0IHBhdGllbnQgaW5mb3JtYXRpb24gaW50byBvdXIgbWVyZ2VkIFNDRS4KV2UnbGwgY3JlYXRlIGEgbmV3IGNvbHVtbiBgcGF0aWVudGAgd2hvc2UgdmFsdWUgaXMgZWl0aGVyICJBIiBvciAiQiIgZGVwZW5kaW5nIG9uIHRoZSBnaXZlbiBzYW1wbGUgbmFtZSwgdXNpbmcgdGhlIFtgZHBseXI6OmNhc2Vfd2hlbigpYF0oaHR0cHM6Ly9kcGx5ci50aWR5dmVyc2Uub3JnL3JlZmVyZW5jZS9jYXNlX3doZW4uaHRtbCkgZnVuY3Rpb24uCldlIHByb3ZpZGUgdGhpcyBmdW5jdGlvbiB3aXRoIGEgc2V0IG9mIGxvZ2ljYWwgZXhwcmVzc2lvbnMgYW5kIGVhY2ggYXNzaWduZWQgdmFsdWUgaXMgZGVzaWduYXRlZCBieSBgfmAuClRoZSBleHByZXNzaW9ucyBhcmUgZXZhbHVhdGVkIGluIG9yZGVyLCBzdG9wcGluZyBhdCB0aGUgX2ZpcnN0XyBvbmUgdGhhdCBldmFsdWF0ZXMgYXMgYFRSVUVgIGFuZCByZXR1cm5pbmcgdGhlIGFzc29jaWF0ZWQgdmFsdWUuCgpgYGB7ciBhZGQgcGF0aWVudCBpbmZvfQojIENyZWF0ZSBwYXRpZW50IGNvbHVtbiB3aXRoIHZhbHVlcyAiQSIgb3IgIkIiIGZvciB0aGUgdHdvIHBhdGllbnRzCm1lcmdlZF9zY2UkcGF0aWVudCA8LSBkcGx5cjo6Y2FzZV93aGVuKAogIG1lcmdlZF9zY2Ukc2FtcGxlICVpbiUgYygiU0NQQ0wwMDA0NzkiLCAiU0NQQ0wwMDA0ODAiKSB+ICJBIiwKICBtZXJnZWRfc2NlJHNhbXBsZSAlaW4lIGMoIlNDUENMMDAwNDgxIiwgIlNDUENMMDAwNDgyIikgfiAiQiIsCikKYGBgCgoKVW5saWtlIGBmYXN0TU5OYCwgYGhhcm1vbnlgIGRvZXMgbm90IGNhbGN1bGF0ZSBjb3JyZWN0ZWQgZXhwcmVzc2lvbiB2YWx1ZXMgbm9yIGRvZXMgaXQgcmV0dXJuIGFuIFNDRSBvYmplY3QuCkxpa2UgYGZhc3RNTk5gLCBgaGFybW9ueWAgcGVyZm9ybXMgaW50ZWdyYXRpb24gb24gYSBtZXJnZWQgUENBIG1hdHJpeC4KSG93ZXZlciwgdW5saWtlIGBmYXN0TU5OYCwgYGhhcm1vbnlgIGRvZXMgbm90ICJiYWNrLWNhbGN1bGF0ZSIgY29ycmVjdGVkIGV4cHJlc3Npb24gZnJvbSB0aGUgY29ycmVjdGVkIFBDQSBtYXRyaXggYW5kIGl0IG9ubHkgcmV0dXJucyB0aGUgY29ycmVjdGVkIFBDQSBtYXRyaXggaXRzZWxmLgpGb3IgaW5wdXQsIGBoYXJtb255YCBuZWVkcyBhIGNvdXBsZSBwaWVjZXMgb2YgaW5mb3JtYXRpb246CgotIEZpcnN0LCBgaGFybW9ueWAgdGFrZXMgYSBiYXRjaC13ZWlnaHRlZCBQQ0EgbWF0cml4IHRvIHBlcmZvcm0gaW50ZWdyYXRpb24uCldlIGFscmVhZHkgY2FsY3VsYXRlZCBhIGJhdGNoLXdlaWdodGVkIFBDQSBtYXRyaXggc28gd2UnbGwgcHJvdmlkZSB0aGlzIGFzIHRoZSB0aGUgaW5wdXQuCi0gU2Vjb25kLCB3ZSBuZWVkIHRvIHRlbGwgYGhhcm1vbnlgIGFib3V0IHRoZSBjb3ZhcmlhdGVzIHRvIHVzZSAtIGBzYW1wbGVgIGFuZCBgcGF0aWVudGAuClRvIGRvIHRoaXMsIHdlIHByb3ZpZGUgdHdvIGFyZ3VtZW50czoKICAtIGBtZXRhX2RhdGFgLCBhIGRhdGEgZnJhbWUgdGhhdCBjb250YWlucyBjb3ZhcmlhdGVzIGFjcm9zcyBzYW1wbGVzLgogIFdlIGNhbiBzaW1wbHkgc3BlY2lmeSB0aGUgU0NFIGBjb2xEYXRhYCBoZXJlIHNpbmNlIGl0IGNvbnRhaW5zIGBzYW1wbGVgIGFuZCBgcGF0aWVudGAgY29sdW1ucy4KICAtIGB2YXJzX3VzZWAsIGEgdmVjdG9yIG9mIHdoaWNoIGNvbHVtbiBuYW1lcyBpbiBgbWV0YV9kYXRhYCBzaG91bGQgYWN0dWFsbHkgYmUgdXNlZCBhcyBjb3ZhcmlhdGVzLgogIE90aGVyIGNvbHVtbnMgaW4gYG1ldGFfZGF0YWAgd2hpY2ggYXJlIG5vdCBpbiBgdmFyc191c2VgIGFyZSBpZ25vcmVkLgoKTGV0J3MgZ28hCgpgYGB7ciBydW4gaGFybW9ueSwgbGl2ZSA9IFRSVUV9CiMgUnVuIGhhcm1vbnkgaW50ZWdyYXRpb24KaGFybW9ueV9wY2EgPC0gaGFybW9ueTo6UnVuSGFybW9ueSgKICBkYXRhX21hdCA9IHJlZHVjZWREaW0obWVyZ2VkX3NjZSwgIlBDQSIpLAogIG1ldGFfZGF0YSA9IGNvbERhdGEobWVyZ2VkX3NjZSksCiAgdmFyc191c2UgPSBjKCJzYW1wbGUiLCAicGF0aWVudCIpCikKYGBgCgpUaGUgcmVzdWx0IGlzIGEgUENBIG1hdHJpeC4KTGV0J3MgcHJpbnQgYSBzdWJzZXQgb2YgdGhpcyBtYXRyaXggdG8gc2VlIGl0OgoKYGBge3IgcHJpbnQgaGFybW9ueSByZXN1bHQsIGxpdmUgPSBUUlVFfQojIFByaW50IHRoZSBoYXJtb255IHJlc3VsdApoYXJtb255X3BjYVsxOjUsIDE6NV0KYGBgCgpBcyB3ZSBkaWQgd2l0aCBgZmFzdE1OTmAgcmVzdWx0cywgbGV0J3Mgc3RvcmUgdGhpcyBQQ0EgbWF0cml4IGRpcmVjdGx5IGluIG91ciBgbWVyZ2VkX3NjZWAgb2JqZWN0IHdpdGggYW4gaW5mb3JtYXRpdmUgbmFtZSB0aGF0IHdvbid0IG92ZXJ3cml0ZSBhbnkgb2YgdGhlIGV4aXN0aW5nIFBDQSBtYXRyaWNlcy4KV2UnbGwgYWxzbyBjYWxjdWxhdGUgVU1BUCBmcm9tIGl0LgoKYGBge3Igc2F2ZSBoYXJtb255LCBsaXZlID0gVFJVRX0KIyBTdG9yZSBQQ0EgYXMgYGhhcm1vbnlfUENBYApyZWR1Y2VkRGltKG1lcmdlZF9zY2UsICJoYXJtb255X1BDQSIpIDwtIGhhcm1vbnlfcGNhCgojIEFzIGJlZm9yZSwgY2FsY3VsYXRlIFVNQVAgb24gdGhpcyBQQ0EgbWF0cml4IHdpdGggYXBwcm9wcmlhdGUgbmFtZXMKbWVyZ2VkX3NjZSA8LSBzY2F0ZXI6OnJ1blVNQVAobWVyZ2VkX3NjZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGltcmVkID0gImhhcm1vbnlfUENBIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSAgID0gImhhcm1vbnlfVU1BUCIpCmBgYAoKCkxldCdzIHNlZSBob3cgdGhlIGBoYXJtb255YCBVTUFQLCBjb2xvcmVkIGJ5IHNhbXBsZSwgbG9va3MgY29tcGFyZWQgdG8gdGhlIGBmYXN0TU5OYCBVTUFQOgoKYGBge3IgcGxvdCBoYXJtb255IHVtYXAgYmF0Y2hlc30Kc2NhdGVyOjpwbG90UmVkdWNlZERpbShtZXJnZWRfc2NlLAogICAgICAgICAgICAgICAgICAgICAgIGRpbXJlZCA9ICJoYXJtb255X1VNQVAiLAogICAgICAgICAgICAgICAgICAgICAgIGNvbG9yX2J5ID0gInNhbXBsZSIsCiAgICAgICAgICAgICAgICAgICAgICAgcG9pbnRfc2l6ZSA9IDAuNSwKICAgICAgICAgICAgICAgICAgICAgICBwb2ludF9hbHBoYSA9IDAuMikgKwogIHNjYWxlX2NvbG9yX2JyZXdlcihwYWxldHRlID0gIkRhcmsyIiwgbmFtZSA9ICJzYW1wbGUiKSArCiAgZ3VpZGVzKGNvbG9yID0gZ3VpZGVfbGVnZW5kKG92ZXJyaWRlLmFlcyA9IGxpc3Qoc2l6ZSA9IDMsIGFscGhhID0gMSkpKSArCiAgZ2d0aXRsZSgiVU1BUCBhZnRlciBpbnRlZ3JhdGlvbiB3aXRoIGhhcm1vbnkiKQpgYGAKCkhvdyBkbyB5b3UgdGhpbmsgdGhpcyBgaGFybW9ueWAgVU1BUCBjb21wYXJlcyB0byB0aGF0IGZyb20gYGZhc3RNTk5gIGludGVncmF0aW9uPwoKTGV0J3Mgc2VlIGhvdyB0aGlzIFVNQVAgbG9va3MgY29sb3JlZCBieSBjZWxsIHR5cGUsIGFuZCBmYWNldGVkIGZvciB2aXNpYmlsaXR5OgoKYGBge3IgcGxvdCBoYXJtb255IHVtYXAgY2VsbHR5cGVzfQpzY2F0ZXI6OnBsb3RSZWR1Y2VkRGltKG1lcmdlZF9zY2UsCiAgICAgICAgICAgICAgICAgICAgICAgZGltcmVkID0gImhhcm1vbnlfVU1BUCIsCiAgICAgICAgICAgICAgICAgICAgICAgY29sb3JfYnkgPSAiY2VsbHR5cGVfYnJvYWQiLAogICAgICAgICAgICAgICAgICAgICAgIHBvaW50X3NpemUgPSAwLjUsCiAgICAgICAgICAgICAgICAgICAgICAgcG9pbnRfYWxwaGEgPSAwLjIsCiAgICAgICAgICAgICAgICAgICAgICAgIyBTcGVjaWZ5IHZhcmlhYmxlIGZvciBmYWNldGluZwogICAgICAgICAgICAgICAgICAgICAgIG90aGVyX2ZpZWxkcyA9ICJzYW1wbGUiKSArCiAgc2NhbGVfY29sb3JfYnJld2VyKHBhbGV0dGUgPSAiRGFyazIiLCBuYW1lID0gIkJyb2FkIGNlbGx0eXBlIiwgbmEudmFsdWUgPSAiZ3JleTgwIikgKwogIGd1aWRlcyhjb2xvciA9IGd1aWRlX2xlZ2VuZChvdmVycmlkZS5hZXMgPSBsaXN0KHNpemUgPSAzLCBhbHBoYSA9IDEpKSkgKwogIGdndGl0bGUoIlVNQVAgYWZ0ZXIgaW50ZWdyYXRpb24gd2l0aCBoYXJtb255IikgKwogIGZhY2V0X3dyYXAodmFycyhzYW1wbGUpKQpgYGAKCldoYXQgZG8geW91IG5vdyBub3RpY2UgaW4gdGhpcyBmYWNldGVkIHZpZXcgdGhhdCB3YXNuJ3QgY2xlYXIgcHJldmlvdXNseT8KQXJlIHRoZXJlIG90aGVyIHBhdHRlcm5zIHlvdSBzZWUgdGhhdCBhcmUgc2ltaWxhciBvciBkaWZmZXJlbnQgZnJvbSB0aGUgYGZhc3RNTk5gIFVNQVA/CkhvdyBkbyB5b3UgdGhpbmsgYGZhc3RNTk5gIHZzLiBgaGFybW9ueWAgcGVyZm9ybWVkIGluIGludGVncmF0aW5nIHRoZXNlIHNhbXBsZXM/CgojIyBFeHBvcnQKCkZpbmFsbHksIHdlJ2xsIGV4cG9ydCB0aGUgZmluYWwgU0NFIG9iamVjdCB3aXRoIGJvdGggYGZhc3RNTk5gIGFuZCBgaGFybW9ueWAgaW50ZWdyYXRpb24gdG8gYSBmaWxlLgpTaW5jZSB0aGlzIG9iamVjdCBpcyB2ZXJ5IGxhcmdlIChvdmVyIDEgR0IhKSwgd2UnbGwgZXhwb3J0IGl0IHRvIGEgZmlsZSB3aXRoIHNvbWUgY29tcHJlc3Npb24sIHdoaWNoLCBpbiB0aGlzIGNhc2UsIHdpbGwgcmVkdWNlIHRoZSBmaW5hbCBzaXplIHRvIGEgc21hbGxlciB+MzYwIE1CLgpUaGlzIHdpbGwgdGFrZSBhIGNvdXBsZSBtaW51dGVzIHRvIHNhdmUgd2hpbGUgY29tcHJlc3Npb24gaXMgcGVyZm9ybWVkLgoKYGBge3Igc2F2ZSBpbnRlZ3JhdGlvbiwgbGl2ZSA9IFRSVUV9CiMgRXhwb3J0IHRvIFJEUyBmaWxlIHdpdGggImd6IiBjb21wcmVzc2lvbgpyZWFkcjo6d3JpdGVfcmRzKAogIG1lcmdlZF9zY2UsCiAgaW50ZWdyYXRlZF9zY2VfZmlsZSwKICBjb21wcmVzcyA9ICJneiIKKQpgYGAKCgojIyBQcmludCBzZXNzaW9uIGluZm8KCkFzIGFsd2F5cywgd2UnbGwgcHJpbnQgdGhlIHNlc3Npb24gaW5mbyB0byBiZSB0cmFuc3BhcmVudCBhYm91dCB3aGF0IHBhY2thZ2VzLCBhbmQgd2hpY2ggdmVyc2lvbnMsIHdlcmUgdXNlZCBkdXJpbmcgdGhpcyBSIHNlc3Npb24uCgpgYGB7ciBzZXNzaW9uaW5mb30Kc2Vzc2lvbkluZm8oKQpgYGAK
    diff --git a/scRNA-seq-advanced/03-differential_expression-live.Rmd b/scRNA-seq-advanced/03-differential_expression-live.Rmd index 82022af2..fd878bf0 100644 --- a/scRNA-seq-advanced/03-differential_expression-live.Rmd +++ b/scRNA-seq-advanced/03-differential_expression-live.Rmd @@ -68,27 +68,35 @@ To begin, let's set up our directories and files: data_dir <- file.path("data", "rms") # integrated file containing samples to use for DE analysis -integrated_sce_file <- file.path(data_dir, - "integrated", - "rms_all_sce.rds") +integrated_sce_file <- file.path( + data_dir, + "integrated", + "rms_all_sce.rds" +) # sample metadata to set up DE analysis -sample_metadata_file <- file.path(data_dir, - "annotations", - "rms_sample_metadata.tsv") +sample_metadata_file <- file.path( + data_dir, + "annotations", + "rms_sample_metadata.tsv" +) # directory to store output deseq_dir <- file.path("analysis", "rms", "deseq") fs::dir_create(deseq_dir) # results file to output from DE analysis -deseq_output_file <- file.path(deseq_dir, - "rms_myoblast_deseq_results.tsv") +deseq_output_file <- file.path( + deseq_dir, + "rms_myoblast_deseq_results.tsv" +) # output integrated sce object -output_sce_file <- file.path(data_dir, - "integrated", - "rms_subset_sce.rds") +output_sce_file <- file.path( + data_dir, + "integrated", + "rms_subset_sce.rds" +) ``` We can go ahead and read in the SCE object and the metadata file. @@ -172,17 +180,21 @@ coldata_df <- colData(integrated_sce) |> dplyr::left_join(sample_metadata, by = c("sample" = "library_id")) |> # create new columns # cell_id is a combination of barcode and sample - dplyr::mutate(cell_id = glue::glue("{sample}-{barcode}"), - # simplify subdiagnosis - diagnosis_group = forcats::fct_recode( - subdiagnosis, - "ARMS" = "Alveolar rhabdomyosarcoma", - "ERMS" = "Embryonal rhabdomyosarcoma" - )) + dplyr::mutate( + cell_id = glue::glue("{sample}-{barcode}"), + # simplify subdiagnosis + diagnosis_group = forcats::fct_recode( + subdiagnosis, + "ARMS" = "Alveolar rhabdomyosarcoma", + "ERMS" = "Embryonal rhabdomyosarcoma" + ) + ) # add modified data frame back to SCE as DataFrame -colData(integrated_sce) <- DataFrame(coldata_df, - row.names = coldata_df$cell_id) +colData(integrated_sce) <- DataFrame( + coldata_df, + row.names = coldata_df$cell_id +) ``` Now when we look at the `colData` of the SCE object we should see new columns, including the `diagnosis_group` column which indicates if each cell comes from an ERMS or ARMS sample. @@ -218,12 +230,14 @@ The samples which could be further classified have a mix of `Tumor_Mesoderm`, `T ```{r celltype UMAP} # UMAP of all samples labeled by cell type -scater::plotReducedDim(integrated_sce, - dimred = "fastmnn_UMAP", - # color each point by cell type - color_by = "celltype_broad", - point_size = 0.5, - point_alpha = 0.4) + +scater::plotReducedDim( + integrated_sce, + dimred = "fastmnn_UMAP", + # color each point by cell type + color_by = "celltype_broad", + point_size = 0.5, + point_alpha = 0.4 +) + # Modify the legend key with larger, easier to see points guides(color = guide_legend(override.aes = list(size = 3, alpha = 1))) ``` @@ -241,9 +255,9 @@ In the below plot we will color our cells by cell type while also using `facet_g # UMAP of all samples # separating by diagnosis group and labeling cell type - # color each point by cell type + # color each point by cell type - # tell scater to use diagnosis_group for plotting + # tell scater to use diagnosis_group for plotting # include each diagnosis group as its own column @@ -261,20 +275,22 @@ tumor_cells_df <- coldata_df |> # create a stacked barplot ggplot(tumor_cells_df, aes(x = sample, fill = celltype_broad)) + - geom_bar(position = "fill", color = "black", size = 0.2) + - labs( - x = "Sample", - y = "Proportion of cells", - fill = "Cell type" - ) + + geom_bar(position = "fill", color = "black", size = 0.2) + + labs( + x = "Sample", + y = "Proportion of cells", + fill = "Cell type" + ) + scale_fill_brewer(palette = "Dark2") + theme_bw() + - theme(axis.text.x = element_text(angle = 90, vjust = 0.5))+ + theme(axis.text.x = element_text(angle = 90, vjust = 0.5)) + # facet by diagnosis group - facet_grid(cols = vars(diagnosis_group), - # only show non-NA values on x-axis - scales = "free_x", - space = "free_x") + facet_grid( + cols = vars(diagnosis_group), + # only show non-NA values on x-axis + scales = "free_x", + space = "free_x" + ) ``` Similar to the UMAP, this plot shows that ARMS and ERMS share a lot of the same cell types. @@ -366,8 +382,10 @@ We'll start by creating a fake matrix of counts. counts_mtx <- matrix( 1:12, ncol = 4, - dimnames = list(c("geneA", "geneB", "geneC"), - c("A-cell1", "A-cell2", "B-cell1", "B-cell2")) + dimnames = list( + c("geneA", "geneB", "geneC"), + c("A-cell1", "A-cell2", "B-cell1", "B-cell2") + ) ) counts_mtx ``` @@ -401,8 +419,10 @@ pb_groups <- colData(rms_sce)[, c("celltype_broad", "sample")] # create a new SCE object that contains # the pseudo-bulked counts across the provided groups -pb_sce <- scuttle::aggregateAcrossCells(rms_sce, - id = pb_groups) +pb_sce <- scuttle::aggregateAcrossCells( + rms_sce, + id = pb_groups +) # column names aren't automatically added to the pseudo-bulked sce, # so let's add them in @@ -519,8 +539,10 @@ As a reminder, this is NOT required for running `DESeq2` analysis; we are just u deseq_object <- DESeq2::estimateSizeFactors(deseq_object) # normalize and log transform to use for visualization -normalized_object <- DESeq2::rlog(deseq_object, - blind = TRUE) +normalized_object <- DESeq2::rlog( + deseq_object, + blind = TRUE +) normalized_object ``` @@ -632,18 +654,19 @@ This package automatically colors the points by cutoffs for both significance an Even better, it outputs a `ggplot2` object, so if we want to customize the plot further, we can use the same `ggplot2` commands we have used before. ```{r volcano} -EnhancedVolcano::EnhancedVolcano(deseq_results, - x = 'log2FoldChange', # fold change statistic to plot - y = 'pvalue', # significance values - lab = deseq_results$gene_symbol, # labels for points - pCutoff = 1e-05, # p value cutoff (default) - FCcutoff = 1, # fold change cutoff (default) - title = NULL, # no title - subtitle = NULL, # or subtitle - caption = NULL, # or caption - drawConnectors = TRUE, # add some fun arrows - labSize = 3 # smaller labels - ) + +EnhancedVolcano::EnhancedVolcano( + deseq_results, + x = "log2FoldChange", # fold change statistic to plot + y = "pvalue", # significance values + lab = deseq_results$gene_symbol, # labels for points + pCutoff = 1e-05, # p value cutoff (default) + FCcutoff = 1, # fold change cutoff (default) + title = NULL, # no title + subtitle = NULL, # or subtitle + caption = NULL, # or caption + drawConnectors = TRUE, # add some fun arrows + labSize = 3 # smaller labels +) + # change the overall theme theme_bw() + # move the legend to the bottom @@ -669,10 +692,12 @@ However, we might be interested to see the expression of genes that are differen ```{r celltype comparison} # let's compare gene expression across some other cell types # look at all tumor cells and pick one normal cell type -celltypes <- c("Tumor_Myoblast", - "Tumor_Mesoderm", - "Tumor_Myocyte", - "Vascular Endothelium") +celltypes <- c( + "Tumor_Myoblast", + "Tumor_Mesoderm", + "Tumor_Myocyte", + "Vascular Endothelium" +) # subset to just celltypes that we are interested in tumor_sce <- rms_sce[, which(rms_sce$celltype_broad %in% celltypes)] @@ -687,28 +712,37 @@ We can then directly reference that `Feature` column when plotting, instead of u ```{r multi-gene plot} # pick a couple genes to look at -genes_to_plot <- c("ENSG00000196090", #PTPRT - "ENSG00000148935") #GAS2 +genes_to_plot <- c( + "ENSG00000196090", # PTPRT + "ENSG00000148935" +) # GAS2 # create a violin plot -scater::plotExpression(tumor_sce, - # a vector of genes to plot - features = genes_to_plot, - x = "diagnosis_group", - color_by = "diagnosis_group", - other_fields = "celltype_broad", - point_size = 0.1) + +scater::plotExpression( + tumor_sce, + # a vector of genes to plot + features = genes_to_plot, + x = "diagnosis_group", + color_by = "diagnosis_group", + other_fields = "celltype_broad", + point_size = 0.1 +) + # each celltype is its own column - facet_grid(cols = vars(celltype_broad), - # each feature (gene) is its own row - rows = vars(Feature)) + + facet_grid( + cols = vars(celltype_broad), + # each feature (gene) is its own row + rows = vars(Feature) + ) + # change the font size of the facet labels theme(strip.text = element_text(size = 7)) + - guides(color = guide_legend( - title = "Subtype", # update the legend title - # change the size of the legend colors - override.aes = list(size = 3, alpha = 1)) + guides( + color = guide_legend( + # update the legend title + title = "Subtype", + # change the size of the legend colors + override.aes = list(size = 3, alpha = 1) ) + ) ``` How do the expression of these genes change across cell types and RMS subtypes? diff --git a/scRNA-seq-advanced/03-differential_expression.nb.html b/scRNA-seq-advanced/03-differential_expression.nb.html index 4a6d15be..33bb78ec 100644 --- a/scRNA-seq-advanced/03-differential_expression.nb.html +++ b/scRNA-seq-advanced/03-differential_expression.nb.html @@ -2979,33 +2979,41 @@

    Directories and files

    To begin, let’s set up our directories and files:

    - +
    # set up file paths
     # data directory for RMS data
     data_dir <- file.path("data", "rms")
     
     # integrated file containing samples to use for DE analysis
    -integrated_sce_file <- file.path(data_dir,
    -                                 "integrated",
    -                                 "rms_all_sce.rds")
    +integrated_sce_file <- file.path(
    +  data_dir,
    +  "integrated",
    +  "rms_all_sce.rds"
    +)
     
     # sample metadata to set up DE analysis
    -sample_metadata_file <- file.path(data_dir,
    -                                  "annotations",
    -                                  "rms_sample_metadata.tsv")
    +sample_metadata_file <- file.path(
    +  data_dir,
    +  "annotations",
    +  "rms_sample_metadata.tsv"
    +)
     
     # directory to store output
     deseq_dir <- file.path("analysis", "rms", "deseq")
     fs::dir_create(deseq_dir)
     
     # results file to output from DE analysis
    -deseq_output_file <- file.path(deseq_dir,
    -                               "rms_myoblast_deseq_results.tsv")
    +deseq_output_file <- file.path(
    +  deseq_dir,
    +  "rms_myoblast_deseq_results.tsv"
    +)
     
     # output integrated sce object
    -output_sce_file <- file.path(data_dir,
    -                             "integrated",
    -                             "rms_subset_sce.rds")
    +output_sce_file <- file.path( + data_dir, + "integrated", + "rms_subset_sce.rds" +)
    @@ -3178,7 +3186,7 @@

    Cell type annotations

    plotting.

    - +
    # add sample metadata to colData from the integrated SCE object
     coldata_df <- colData(integrated_sce) |>
       # convert from DataFrame to data.frame
    @@ -3187,17 +3195,21 @@ 

    Cell type annotations

    dplyr::left_join(sample_metadata, by = c("sample" = "library_id")) |> # create new columns # cell_id is a combination of barcode and sample - dplyr::mutate(cell_id = glue::glue("{sample}-{barcode}"), - # simplify subdiagnosis - diagnosis_group = forcats::fct_recode( - subdiagnosis, - "ARMS" = "Alveolar rhabdomyosarcoma", - "ERMS" = "Embryonal rhabdomyosarcoma" - )) + dplyr::mutate( + cell_id = glue::glue("{sample}-{barcode}"), + # simplify subdiagnosis + diagnosis_group = forcats::fct_recode( + subdiagnosis, + "ARMS" = "Alveolar rhabdomyosarcoma", + "ERMS" = "Embryonal rhabdomyosarcoma" + ) + ) # add modified data frame back to SCE as DataFrame -colData(integrated_sce) <- DataFrame(coldata_df, - row.names = coldata_df$cell_id)
    +colData(integrated_sce) <- DataFrame( + coldata_df, + row.names = coldata_df$cell_id +) @@ -3230,13 +3242,15 @@

    Plotting with annotations

    multiple libraries or samples.

    - +
    # UMAP of all samples, separating by diagnosis group
    -scater::plotReducedDim(integrated_sce,
    -                       dimred = "fastmnn_UMAP",
    -                       color_by = "diagnosis_group",
    -                       point_size= 0.5,
    -                       point_alpha = 0.2)
    +scater::plotReducedDim( + integrated_sce, + dimred = "fastmnn_UMAP", + color_by = "diagnosis_group", + point_size = 0.5, + point_alpha = 0.2 +)

    @@ -3262,14 +3276,16 @@

    Plotting with annotations

    Tumor_Myocyte.

    - +
    # UMAP of all samples labeled by cell type
    -scater::plotReducedDim(integrated_sce,
    -                       dimred = "fastmnn_UMAP",
    -                       # color each point by cell type
    -                       color_by = "celltype_broad",
    -                       point_size = 0.5,
    -                       point_alpha = 0.4) +
    +scater::plotReducedDim(
    +  integrated_sce,
    +  dimred = "fastmnn_UMAP",
    +  # color each point by cell type
    +  color_by = "celltype_broad",
    +  point_size = 0.5,
    +  point_alpha = 0.4
    +) +
       # Modify the legend key with larger, easier to see points
       guides(color = guide_legend(override.aes = list(size = 3, alpha = 1)))
    @@ -3298,17 +3314,19 @@

    Plotting with annotations

    be in their own plot panel.

    - +
    # UMAP of all samples
     # separating by diagnosis group and labeling cell type
    -scater::plotReducedDim(integrated_sce,
    -                       dimred = "fastmnn_UMAP",
    -                       # color each point by cell type
    -                       color_by = "celltype_broad",
    -                       point_size= 0.5,
    -                       point_alpha = 0.4,
    -                       # tell scater to use diagnosis_group for plotting
    -                       other_fields = "diagnosis_group") +
    +scater::plotReducedDim(
    +  integrated_sce,
    +  dimred = "fastmnn_UMAP",
    +  # color each point by cell type
    +  color_by = "celltype_broad",
    +  point_size = 0.5,
    +  point_alpha = 0.4,
    +  # tell scater to use diagnosis_group for plotting
    +  other_fields = "diagnosis_group"
    +) +
       # include each diagnosis group as its own column
       facet_grid(cols = vars(diagnosis_group))
    @@ -3324,7 +3342,7 @@

    Plotting with annotations

    first.

    - +
    # filter coldata to only include tumor cells
     tumor_cells_df <- coldata_df |>
       # find rows where the cell type name contains the string "Tumor"
    @@ -3332,20 +3350,22 @@ 

    Plotting with annotations

    # create a stacked barplot ggplot(tumor_cells_df, aes(x = sample, fill = celltype_broad)) + - geom_bar(position = "fill", color = "black", size = 0.2) + - labs( - x = "Sample", - y = "Proportion of cells", - fill = "Cell type" - ) + + geom_bar(position = "fill", color = "black", size = 0.2) + + labs( + x = "Sample", + y = "Proportion of cells", + fill = "Cell type" + ) + scale_fill_brewer(palette = "Dark2") + theme_bw() + - theme(axis.text.x = element_text(angle = 90, vjust = 0.5))+ + theme(axis.text.x = element_text(angle = 90, vjust = 0.5)) + # facet by diagnosis group - facet_grid(cols = vars(diagnosis_group), - # only show non-NA values on x-axis - scales = "free_x", - space = "free_x")
    + facet_grid( + cols = vars(diagnosis_group), + # only show non-NA values on x-axis + scales = "free_x", + space = "free_x" + )
    Warning: Using `size` aesthetic for lines was deprecated in ggplot2 3.4.0.
    @@ -3512,13 +3532,15 @@ 

    Pseudo-bulking

    matrix of counts.

    - +
    # create an example counts matrix
     counts_mtx <- matrix(
       1:12,
       ncol = 4,
    -  dimnames = list(c("geneA", "geneB", "geneC"),
    -                  c("A-cell1", "A-cell2", "B-cell1", "B-cell2"))
    +  dimnames = list(
    +    c("geneA", "geneB", "geneC"),
    +    c("A-cell1", "A-cell2", "B-cell1", "B-cell2")
    +  )
     )
     counts_mtx
    @@ -3537,13 +3559,12 @@

    Pseudo-bulking

    columns.

    - +
    # define the group that each column belongs to
     groups <- c("A", "A", "B", "B")
     
     # sum counts across cells (columns) by group label
    -pb_counts <- DelayedArray::colsum(counts_mtx,
    -                                  groups)
    +pb_counts <- DelayedArray::colsum(counts_mtx, groups)
     pb_counts
    @@ -3572,15 +3593,17 @@

    Pseudo-bulking

    type and original sample.

    - +
    # first subset the coldata
     # to only have the columns we care about for pseudo-bulking
     pb_groups <- colData(rms_sce)[, c("celltype_broad", "sample")]
     
     # create a new SCE object that contains
     # the pseudo-bulked counts across the provided groups
    -pb_sce <- scuttle::aggregateAcrossCells(rms_sce,
    -                                        id = pb_groups)
    +pb_sce <- scuttle::aggregateAcrossCells(
    +  rms_sce,
    +  id = pb_groups
    +)
     
     # column names aren't automatically added to the pseudo-bulked sce,
     # so let's add them in
    @@ -3752,10 +3775,12 @@ 

    Create the DESeqDataSet object

    colData in the pseudo-bulked SCE.

    - +
    # set up the deseq object, group by diagnosis
    -deseq_object <- DESeq2::DESeqDataSet(tumor_myoblast_sce,
    -                                     design = ~ diagnosis_group)
    +deseq_object <- DESeq2::DESeqDataSet( + tumor_myoblast_sce, + design = ~diagnosis_group +)
    converting counts to integer mode
    @@ -3782,13 +3807,15 @@

    Create the DESeqDataSet object

    we are just using it to visualize our data prior to DE analysis.

    - +
    # estimate size factors first
     deseq_object <- DESeq2::estimateSizeFactors(deseq_object)
     
     # normalize and log transform to use for visualization
    -normalized_object <- DESeq2::rlog(deseq_object,
    -                                  blind = TRUE)
    +normalized_object <- DESeq2::rlog(
    +  deseq_object,
    +  blind = TRUE
    +)
     normalized_object
    @@ -4028,19 +4055,20 @@

    Exploring the identified differentially expressed genes

    ggplot2 commands we have used before.

    - -
    EnhancedVolcano::EnhancedVolcano(deseq_results,
    -                x = 'log2FoldChange', # fold change statistic to plot
    -                y = 'pvalue', # significance values
    -                lab = deseq_results$gene_symbol, # labels for points
    -                pCutoff = 1e-05, # p value cutoff (default)
    -                FCcutoff = 1, # fold change cutoff (default)
    -                title = NULL, # no title
    -                subtitle = NULL, # or subtitle
    -                caption = NULL, # or caption
    -                drawConnectors = TRUE, # add some fun arrows
    -                labSize = 3  # smaller labels
    -                ) +
    +
    +
    EnhancedVolcano::EnhancedVolcano(
    +  deseq_results,
    +  x = "log2FoldChange", # fold change statistic to plot
    +  y = "pvalue", # significance values
    +  lab = deseq_results$gene_symbol, # labels for points
    +  pCutoff = 1e-05, # p value cutoff (default)
    +  FCcutoff = 1, # fold change cutoff (default)
    +  title = NULL, # no title
    +  subtitle = NULL, # or subtitle
    +  caption = NULL, # or caption
    +  drawConnectors = TRUE, # add some fun arrows
    +  labSize = 3 # smaller labels
    +) +
       # change the overall theme
       theme_bw() +
       # move the legend to the bottom
    @@ -4067,17 +4095,19 @@ 

    Exploring the identified differentially expressed genes

    interest on a single-cell level.

    - +
    # filter to just myoblast cells and remove any NA's before plotting
     myoblast_combined_sce <- rms_sce[, which(rms_sce$celltype_broad == "Tumor_Myoblast")]
     
     # plot PTPRT (ENSG00000196090) expression in ARMS vs. ERMS
    -scater::plotReducedDim(myoblast_combined_sce,
    -                       dimred = "fastmnn_UMAP",
    -                       color_by = "ENSG00000196090", #PTPRT
    -                       point_size= 0.5,
    -                       point_alpha = 0.4,
    -                       other_fields = "diagnosis_group") +
    +scater::plotReducedDim(
    +  myoblast_combined_sce,
    +  dimred = "fastmnn_UMAP",
    +  color_by = "ENSG00000196090", # PTPRT
    +  point_size = 0.5,
    +  point_alpha = 0.4,
    +  other_fields = "diagnosis_group"
    +) +
       facet_grid(cols = vars(diagnosis_group))
    @@ -4091,13 +4121,15 @@

    Exploring the identified differentially expressed genes

    types present in our samples.

    - +
    # let's compare gene expression across some other cell types
     # look at all tumor cells and pick one normal cell type
    -celltypes <- c("Tumor_Myoblast",
    -               "Tumor_Mesoderm",
    -               "Tumor_Myocyte",
    -               "Vascular Endothelium")
    +celltypes <- c(
    +  "Tumor_Myoblast",
    +  "Tumor_Mesoderm",
    +  "Tumor_Myocyte",
    +  "Vascular Endothelium"
    +)
     
     # subset to just celltypes that we are interested in
     tumor_sce <- rms_sce[, which(rms_sce$celltype_broad %in% celltypes)]
    @@ -4121,30 +4153,39 @@

    Exploring the identified differentially expressed genes

    previously.

    - +
    # pick a couple genes to look at
    -genes_to_plot <- c("ENSG00000196090", #PTPRT
    -                   "ENSG00000148935") #GAS2
    +genes_to_plot <- c(
    +  "ENSG00000196090", # PTPRT
    +  "ENSG00000148935"
    +) # GAS2
     
     # create a violin plot
    -scater::plotExpression(tumor_sce,
    -                       # a vector of genes to plot
    -                       features = genes_to_plot,
    -                       x = "diagnosis_group",
    -                       color_by = "diagnosis_group",
    -                       other_fields = "celltype_broad",
    -                       point_size = 0.1) +
    +scater::plotExpression(
    +  tumor_sce,
    +  # a vector of genes to plot
    +  features = genes_to_plot,
    +  x = "diagnosis_group",
    +  color_by = "diagnosis_group",
    +  other_fields = "celltype_broad",
    +  point_size = 0.1
    +) +
       # each celltype is its own column
    -  facet_grid(cols = vars(celltype_broad),
    -             # each feature (gene) is its own row
    -             rows = vars(Feature)) +
    +  facet_grid(
    +    cols = vars(celltype_broad),
    +    # each feature (gene) is its own row
    +    rows = vars(Feature)
    +  ) +
       # change the font size of the facet labels
       theme(strip.text = element_text(size = 7)) +
    -  guides(color = guide_legend(
    -    title = "Subtype", # update the legend title
    -    # change the size of the legend colors
    -    override.aes = list(size = 3, alpha = 1))
    -    )
    + guides( + color = guide_legend( + # update the legend title + title = "Subtype", + # change the size of the legend colors + override.aes = list(size = 3, alpha = 1) + ) + )

    @@ -4263,7 +4304,7 @@

    Print session info

    -
    LS0tCnRpdGxlOiAiRGlmZmVyZW50aWFsIGV4cHJlc3Npb24gYW5hbHlzaXMgZm9yIHNjUk5BLXNlcSBkYXRhIgphdXRob3I6ICJEYXRhIExhYiBmb3IgQUxTRiIKZGF0ZTogMjAyMwpvdXRwdXQ6CiAgaHRtbF9ub3RlYm9vazoKICAgIHRvYzogeWVzCiAgICB0b2NfZmxvYXQ6IHllcwotLS0KCiMjIE9iamVjdGl2ZXMKClRoaXMgbm90ZWJvb2sgd2lsbCBkZW1vbnN0cmF0ZSBob3cgdG86CgotIFVzZSBwc2V1ZG8tYnVsa2luZyB0byBwcmVwYXJlIHNjUk5BLXNlcSBsaWJyYXJpZXMgZm9yIGRpZmZlcmVudGlhbCBleHByZXNzaW9uCi0gUGVyZm9ybSBkaWZmZXJlbnRpYWwgZXhwcmVzc2lvbiB3aXRoIHRoZSBgREVTZXEyYCBwYWNrYWdlCi0gVXNlIGBnZ3Bsb3QyYCBhbmQgYEVuaGFuY2VkVm9sY2Fub2AgdG8gdmlzdWFsaXplIGdlbmUgZXhwcmVzc2lvbiBjaGFuZ2VzIGFjcm9zcyBjZWxsIHR5cGVzIGFuZCBzYW1wbGVzCgotLS0KCkp1c3QgbGlrZSBidWxrIFJOQS1zZXEsIGl0IGlzIGxpa2VseSB0aGF0IG9uZSBvZiB0aGUgZ29hbHMgd2hlbiBwZXJmb3JtaW5nIHNjUk5BLXNlcSB3aWxsIGJlIHRvIGNvbXBhcmUgdGhlIGdlbmUgZXhwcmVzc2lvbiBvZiBtdWx0aXBsZSBzYW1wbGVzIHRvIGVhY2ggb3RoZXIuClVubGlrZSBidWxrIFJOQS1zZXEgYW5hbHlzaXMsIHNjUk5BLXNlcSBhbmFseXNpcyBhbGxvd3MgdXMgdG8gaWRlbnRpZnkgYW5kIGFubm90YXRlIGNlbGwgdHlwZXMgb3Igc3VicG9wdWxhdGlvbnMgb2YgY2VsbHMgcHJlc2VudCBpbiBlYWNoIG9mIG91ciBzYW1wbGVzLgpUaGlzIG1lYW5zIHRoYXQgd2UgY2FuIGFjY291bnQgZm9yIGRpZmZlcmVuY2VzIGluIGNlbGwgdHlwZSBjb21wb3NpdGlvbiBhY3Jvc3Mgc2FtcGxlcyBhbmQgc3BlY2lmaWNhbGx5IGZvY3VzIG9uIGNlbGwgdHlwZXMgb3IgcG9wdWxhdGlvbnMgb2YgaW50ZXJlc3Qgd2hlbiBwZXJmb3JtaW5nIGRpZmZlcmVudGlhbCBleHByZXNzaW9uIChERSkgYW5hbHlzaXMuCkluIHRoaXMgbm90ZWJvb2ssIHdlIHdpbGwgd29yayB3aXRoIG11bHRpcGxlIHNhbXBsZXMgdG8gaWRlbnRpZnkgZGlmZmVyZW50aWFsbHkgZXhwcmVzc2VkIGdlbmVzIGFjcm9zcyBjZWxsIHR5cGVzIG9mIGludGVyZXN0IHVzaW5nIHRoZSBbYERFU2VxMmBdKGh0dHBzOi8vYmlvY29uZHVjdG9yLm9yZy9wYWNrYWdlcy9yZWxlYXNlL2Jpb2MvaHRtbC9ERVNlcTIuaHRtbCkgcGFja2FnZS4KCiFbU2luZ2xlLWNlbGwgcm9hZG1hcDogRGlmZmVyZW50aWFsIGV4cHJlc3Npb25dKGRpYWdyYW1zL3JvYWRtYXBfZGlmZmVyZW50aWFsX2V4cHJlc3Npb24ucG5nKQoKV2Ugd2lsbCBjb250aW51ZSB3b3JraW5nIHdpdGggc2FtcGxlcyBmcm9tIHRoZSBbYFNDUENQMDAwMDA1YCBwcm9qZWN0XShodHRwczovL3NjcGNhLmFsZXhzbGVtb25hZGUub3JnL3Byb2plY3RzL1NDUENQMDAwMDA1KSwgYW4gaW52ZXN0aWdhdGlvbiBvZiBwZWRpYXRyaWMgc29saWQgdHVtb3JzIGxlZCBieSB0aGUgRHllciBhbmQgQ2hlbiBsYWJzIGF0IFN0LiBKdWRlIENoaWxkcmVuJ3MgUmVzZWFyY2ggSG9zcGl0YWwuClRoaXMgcGFydGljdWxhciBkYXRhc2V0IGNvbnRhaW5zIDEwIGRpZmZlcmVudCBzYW1wbGVzIHRoYXQgaGF2ZSBiZWVuIGludGVncmF0ZWQgdXNpbmcgYGZhc3RNTk5gLCBmb2xsb3dpbmcgdGhlIHNhbWUgcHJvY2VkdXJlIHdlIG91dGxpbmVkIGluIGAwMi1kYXRhc2V0X2ludGVncmF0aW9uLlJtZGAuClRoZXNlIDEwIHNhbXBsZXMgcmVwcmVzZW50IHR3byBkaWZmZXJlbnQgdHlwZXMgb2YgcmhhYmRvbXlvc2FyY29tYSAoUk1TKTogZW1icnlvbmFsIHJoYWJkb215b3NhcmNvbWEgKEVSTVMpIGFuZCBhbHZlb2xhciByaGFiZG9teW9zYXJjb21hIChBUk1TKS4KVGhlc2UgdHdvIHN1YnR5cGVzIGFyZSBkaXN0aW5ndWlzaGVkIGJ5IHRoZSBwcmVzZW5jZSBvZiB0aGUgYFBBWDMvUEFYNy1GT1hPMWAgZnVzaW9uIGdlbmUsIHdoaWNoIGlzIHByZXNlbnQgb25seSBpbiBBUk1TIHBhdGllbnRzLgpBZGRpdGlvbmFsbHksIGNlbGxzIGZvdW5kIGluIEFSTVMgdHVtb3JzIHRlbmQgdG8gaGF2ZSBhbiBpbmNyZWFzZWQgbXV0YXRpb25hbCBidXJkZW4gd2l0aCBjZWxscyBpbiBhIG1vcmUgZGlmZmVyZW50aWF0ZWQgc3RhdGUgY29tcGFyZWQgdG8gRVJNUyB0dW1vciBjZWxscyAoW1NoZXJuIF9ldCBhbC5fIDIwMTRdKGh0dHBzOi8vZG9pLm9yZy8xMC4xMTU4LzIxNTktODI5MC5DRC0xMy0wNjM5KTsgW1N0ZXdhcnQgX2V0IGFsLl8gMjAxOF0oaHR0cHM6Ly9kb2kub3JnLzEwLjEwMTYvai5jY2VsbC4yMDE4LjA3LjAxMikpLgpSTVMgdHVtb3JzLCByZWdhcmRsZXNzIG9mIHN1YnR5cGUsIGFyZSBtYWRlIHVwIG9mIGNlbGxzIHR5cGljYWxseSBhc3NvY2lhdGVkIHdpdGggZGV2ZWxvcG1lbnQgb2Ygc2tlbGV0YWwgbXVzY2xlOiBtZXNvZGVybSwgbXlvYmxhc3RzLCBhbmQgbXlvY3l0ZXMgKFtTZWJpcmUgYW5kIE1hbG9uZSAyMDAzXShodHRwczovL2RvaS5vcmcvMTAuMTEzNi9qY3AuNTYuNi40MTIpKS4KW1BhdGVsIF9ldCBhbC5fICgyMDIyKV0oaHR0cHM6Ly9kb2kub3JnLzEwLjEwMTYvai5kZXZjZWwuMjAyMi4wNC4wMDMpIHRlc3RlZCB0aGUgaHlwb3RoZXNpcyB0aGF0IGNlbGwgdHlwZXMgaGF2ZSBkaXN0aW5jdCBnZW5lIGV4cHJlc3Npb24gcGF0dGVybnMgaW4gQVJNUyB2cy4gRVJNUyBzYW1wbGVzLgpIZXJlIHdlIHdpbGwgbG9vayBhdCBhIHN1YnNldCBvZiB0aGUgc2FtcGxlcyB0aGV5IHNlcXVlbmNlZCBhbmQgaWRlbnRpZnkgZGlmZmVyZW50aWFsbHkgZXhwcmVzc2VkIGdlbmVzIGluIHR1bW9yIGNlbGxzIGJldHdlZW4gQVJNUyBhbmQgRVJNUyBzYW1wbGVzLgoKIyMgU2V0IHVwCgpgYGB7ciBzZXR1cCwgbWVzc2FnZT1GQUxTRX0KIyBzZXQgc2VlZCBmb3IgcmVwcm9kdWNpYmlsaXR5CnNldC5zZWVkKDIwMjIpCgojIGxvYWQgbGlicmFyaWVzCmxpYnJhcnkoZ2dwbG90MikgIyBwbG90dGluZyBmdW5jdGlvbnMKbGlicmFyeShTaW5nbGVDZWxsRXhwZXJpbWVudCkKCiMgcGFja2FnZSB1c2VkIGZvciBkaWZmZXJlbnRpYWwgZXhwcmVzc2lvbiBhbmFseXNpcwpsaWJyYXJ5KERFU2VxMikKYGBgCgojIyMgRGlyZWN0b3JpZXMgYW5kIGZpbGVzCgpXZSB3aWxsIHN0YXJ0IGJ5IHJlYWRpbmcgaW4gYSBgU2luZ2xlQ2VsbEV4cGVyaW1lbnRgIChTQ0UpIG9iamVjdCB0aGF0IGNvbnRhaW5zIGJvdGggdGhlIHVuY29ycmVjdGVkIChtZXJnZWQgYnV0IG5vdCBpbnRlZ3JhdGVkKSBhbmQgY29ycmVjdGVkIChpbnRlZ3JhdGVkKSBnZW5lIGV4cHJlc3Npb24gZGF0YSBmb3IgYWxsIDEwIHNhbXBsZXMuCgpQcmlvciB0byBpbnRlZ3JhdGlvbiwgYWxsIDEwIHNhbXBsZXMgd2VudCB0aHJvdWdoIHRoZSBzYW1lIGZpbHRlcmluZywgbm9ybWFsaXphdGlvbiwgYW5kIGRpbWVuc2lvbmFsaXR5IHJlZHVjdGlvbi4KVGhlc2UgMTAgc2FtcGxlcyB3ZXJlIHRoZW4gbWVyZ2VkIGludG8gb25lIGBTaW5nbGVDZWxsRXhwZXJpbWVudGAgb2JqZWN0IGZvbGxvd2luZyB0aGUgc2FtZSBzdGVwcyBvdXRsaW5lZCBpbiBgMDMtZGF0YXNldF9pbnRlZ3JhdGlvbi5SbWRgLgpUaGUgbWVyZ2VkIG9iamVjdCB3YXMgdGhlbiBpbnRlZ3JhdGVkIHdpdGggYGZhc3RNTk5gIHRvIG9idGFpbiBhIGNvcnJlY3RlZCBnZW5lIGV4cHJlc3Npb24gYXNzYXkgYW5kIGNvcnJlY3RlZCByZWR1Y2VkIGRpbWVuc2lvbmFsaXR5IHJlc3VsdHMuClRoZSBmaW5hbCBTQ0Ugb2JqZWN0IHdhcyBzdG9yZWQgaW4gYGRhdGEvcm1zL2ludGVncmF0ZWQvcm1zX2FsbF9zY2UucmRzYC4KCldlIGFsc28gaGF2ZSBwcm92aWRlZCBhIG1ldGFkYXRhIGZpbGUsIGBkYXRhL3Jtcy9hbm5vdGF0aW9ucy9ybXNfc2FtcGxlX21ldGFkYXRhLnRzdmAsIHRoYXQgY29udGFpbnMgaW5mb3JtYXRpb24gZnJvbSBlYWNoIHNhbXBsZSwgc3VjaCBhcyBkaWFnbm9zaXMsIHNleCwgYWdlLCBldGMuCkVhY2ggcm93IGluIHRoaXMgZmlsZSBjb3JyZXNwb25kcyB0byBhIHNhbXBsZSBmb3VuZCBpbiB0aGUgaW50ZWdyYXRlZCBTQ0Ugb2JqZWN0LgoKVG8gYmVnaW4sIGxldCdzIHNldCB1cCBvdXIgZGlyZWN0b3JpZXMgYW5kIGZpbGVzOgoKYGBge3IgZmlsZXBhdGhzfQojIHNldCB1cCBmaWxlIHBhdGhzCiMgZGF0YSBkaXJlY3RvcnkgZm9yIFJNUyBkYXRhCmRhdGFfZGlyIDwtIGZpbGUucGF0aCgiZGF0YSIsICJybXMiKQoKIyBpbnRlZ3JhdGVkIGZpbGUgY29udGFpbmluZyBzYW1wbGVzIHRvIHVzZSBmb3IgREUgYW5hbHlzaXMKaW50ZWdyYXRlZF9zY2VfZmlsZSA8LSBmaWxlLnBhdGgoZGF0YV9kaXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpbnRlZ3JhdGVkIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInJtc19hbGxfc2NlLnJkcyIpCgojIHNhbXBsZSBtZXRhZGF0YSB0byBzZXQgdXAgREUgYW5hbHlzaXMKc2FtcGxlX21ldGFkYXRhX2ZpbGUgPC0gZmlsZS5wYXRoKGRhdGFfZGlyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImFubm90YXRpb25zIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJybXNfc2FtcGxlX21ldGFkYXRhLnRzdiIpCgojIGRpcmVjdG9yeSB0byBzdG9yZSBvdXRwdXQKZGVzZXFfZGlyIDwtIGZpbGUucGF0aCgiYW5hbHlzaXMiLCAicm1zIiwgImRlc2VxIikKZnM6OmRpcl9jcmVhdGUoZGVzZXFfZGlyKQoKIyByZXN1bHRzIGZpbGUgdG8gb3V0cHV0IGZyb20gREUgYW5hbHlzaXMKZGVzZXFfb3V0cHV0X2ZpbGUgPC0gZmlsZS5wYXRoKGRlc2VxX2RpciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJybXNfbXlvYmxhc3RfZGVzZXFfcmVzdWx0cy50c3YiKQoKIyBvdXRwdXQgaW50ZWdyYXRlZCBzY2Ugb2JqZWN0Cm91dHB1dF9zY2VfZmlsZSA8LSBmaWxlLnBhdGgoZGF0YV9kaXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImludGVncmF0ZWQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJybXNfc3Vic2V0X3NjZS5yZHMiKQpgYGAKCldlIGNhbiBnbyBhaGVhZCBhbmQgcmVhZCBpbiB0aGUgU0NFIG9iamVjdCBhbmQgdGhlIG1ldGFkYXRhIGZpbGUuCgpgYGB7ciByZWFkIGZpbGVzLCBsaXZlPVRSVUV9CiMgcmVhZCBpbiB0aGUgU0NFIG9iamVjdCB0aGF0IGhhcyBhbHJlYWR5IGJlZW4gaW50ZWdyYXRlZAppbnRlZ3JhdGVkX3NjZSA8LSByZWFkcjo6cmVhZF9yZHMoaW50ZWdyYXRlZF9zY2VfZmlsZSkKCiMgcmVhZCBpbiBzYW1wbGUgbWV0YWRhdGEgZmlsZQpzYW1wbGVfbWV0YWRhdGEgPC0gcmVhZHI6OnJlYWRfdHN2KHNhbXBsZV9tZXRhZGF0YV9maWxlKQpgYGAKCiMjIERhdGFzZXQgZXhwbG9yYXRpb24KCkJlZm9yZSB3ZSBkaXZlIGludG8gZGlmZmVyZW50aWFsIGV4cHJlc3Npb24sIGxldCdzIGV4cGxvcmUgb3VyIGludGVncmF0ZWQgU0NFIG9iamVjdCBhbmQgdGhlIGRhdGFzZXQgYSBsaXR0bGUgbW9yZS4KCldlJ2xsIHN0YXJ0IGJ5IGxvb2tpbmcgYXQgd2hhdCdzIGluc2lkZSB0aGUgb2JqZWN0LgpIZXJlIHdlIHNob3VsZCBoYXZlIGJvdGggdGhlIG9yaWdpbmFsICh1bmNvcnJlY3RlZCkgZGF0YSBhbmQgdGhlIGludGVncmF0ZWQgKGNvcnJlY3RlZCkgZGF0YSBmb3IgYm90aCB0aGUgZ2VuZSBleHByZXNzaW9uIGFuZCB0aGUgcmVkdWNlZCBkaW1lbnNpb25hbGl0eSByZXN1bHRzLgpIb3cgYXJlIHRob3NlIHN0b3JlZCBpbiBvdXIgb2JqZWN0PwoKYGBge3IgcHJpbnQgc2NlLCBsaXZlPVRSVUV9CiMgcHJpbnQgb3V0IGVudGlyZSBvYmplY3QKaW50ZWdyYXRlZF9zY2UKYGBgCgoKYGBge3IgcHJpbnQgYXNzYXkgbmFtZXMsIGxpdmU9VFJVRX0KIyBsb29rIGF0IHRoZSBhc3NheSBuYW1lcyBpbiBvdXIgb2JqZWN0CmFzc2F5TmFtZXMoaW50ZWdyYXRlZF9zY2UpCmBgYAoKV2hlbiB3ZSBsb29rIGF0IHRoZSBhc3NheSBuYW1lcyB3ZSBzaG91bGQgc2VlIHRoYXQgdGhlcmUgYXJlIDMgbWF0cmljZXMsIGBjb3VudHNgLCBgbG9nY291bnRzYCwgYW5kIGBmYXN0bW5uX2NvcnJlY3RlZGAuClRoZSBgY291bnRzYCBhbmQgYGxvZ2NvdW50c2AgYXNzYXlzIGNvcnJlc3BvbmQgdG8gdGhlIHVuY29ycmVjdGVkIGdlbmUgZXhwcmVzc2lvbiBkYXRhIHRoYXQgaGFzIGJlZW4gbWVyZ2VkIGJ1dCBOT1QgaW50ZWdyYXRlZC4KVGhlIGBmYXN0bW5uX2NvcnJlY3RlZGAgZGF0YSBjb250YWlucyB0aGUgY29ycmVjdGVkIGdlbmUgZXhwcmVzc2lvbiBkYXRhIG9idGFpbmVkIGZyb20gaW50ZWdyYXRpb24uCkZvciB0aGlzIGV4ZXJjaXNlIHdlIHdpbGwgbm90IGJlIHVzaW5nIHRoZSBgZmFzdG1ubl9jb3JyZWN0ZWRgIGRhdGEgKG1vcmUgb24gd2h5IG5vdCBvbmNlIHdlIGdldCB0byBzZXR0aW5nIHVwIHRoZSBkaWZmZXJlbnRpYWwgZXhwcmVzc2lvbiksIGJ1dCB3ZSBuZWVkIHRvIGJlIGF3YXJlIHRoYXQgaXQgaXMgcHJlc2VudCBhbmQgYmUgYWJsZSB0byBkaXN0aW5ndWlzaCBpdCBmcm9tIG91ciB1bmNvcnJlY3RlZCBkYXRhLgoKCmBgYHtyIHByaW50IHJlZHVjZWREaW0gbmFtZXMsIGxpdmU9VFJVRX0KIyBsb29rIGF0IHRoZSBuYW1lcyBvZiB0aGUgZGltZW5zaW9uIHJlZHVjdGlvbnMKcmVkdWNlZERpbU5hbWVzKGludGVncmF0ZWRfc2NlKQpgYGAKCkluIHRoZSBgcmVkdWNlZERpbWAgc2xvdHMgeW91IHNob3VsZCBzZWUgYFBDQWAgYW5kIGBVTUFQYCwgd2hpY2ggd2VyZSBib3RoIGNhbGN1bGF0ZWQgZnJvbSB0aGUgY29tYmluZWQgZGF0YSBfYmVmb3JlXyBpbnRlZ3JhdGlvbi4KWW91IHNob3VsZCBhbHNvIHNlZSBgZmFzdG1ubl9QQ0FgIGFuZCBgZmFzdG1ubl9VTUFQYCByZWR1Y2VkIGRpbWVuc2lvbnMsIHdoaWNoIGNvcnJlc3BvbmQgdG8gdGhlIGludGVncmF0ZWQgcmVzdWx0cy4KCiMjIyBDZWxsIHR5cGUgYW5ub3RhdGlvbnMKCkp1c3QgbGlrZSBpbiB0aGUgaW50ZWdyYXRpb24gbm90ZWJvb2ssIHRoaXMgZGF0YXNldCBhbHNvIGNvbnRhaW5zIHRoZSBjZWxsIHR5cGUgYW5ub3RhdGlvbnMgZm91bmQgaW4gdGhlIGBjZWxsdHlwZV9maW5lYCBhbmQgYGNlbGx0eXBlX2Jyb2FkYCBjb2x1bW5zIG9mIHRoZSBgY29sRGF0YWAuClRoZXNlIGNlbGwgdHlwZXMgd2VyZSBvcmlnaW5hbGx5IGFzc2lnbmVkIGluIFtQYXRlbCBfZXQgYWwuXyAoMjAyMildKGh0dHBzOi8vZG9pLm9yZy8xMC4xMDE2L2ouZGV2Y2VsLjIwMjIuMDQuMDAzKS4KV2Ugd2lsbCB1c2UgdGhlc2UgY2VsbCB0eXBlIGFzc2lnbm1lbnRzIHRvIHNldCB1cCB0aGUgREUgYW5hbHlzaXMgYmVsb3csIGJ1dCB0aGV5IGFyZSBub3QgcmVxdWlyZWQgZm9yIERFIGFuYWx5c2lzIGl0c2VsZi4KSXQncyBpbXBvcnRhbnQgdG8gbm90ZSB0aGF0IERFIGFuYWx5c2lzIGNhbiBiZSBhcHBsaWVkIHRvIGFueSBzdWJwb3B1bGF0aW9uIG9mIGludGVyZXN0IHRoYXQgaXMgc2hhcmVkIGFjcm9zcyBzYW1wbGVzIGJlc2lkZXMganVzdCBjZWxsIHR5cGVzLgoKQmVjYXVzZSB3ZSBhcmUgZ29pbmcgdG8gYmUgZG9pbmcgREUgYW5hbHlzaXMgYmV0d2VlbiBBUk1TIGFuZCBFUk1TIHNhbXBsZXMsIGxldCdzIHN0YXJ0IGJ5IGxhYmVsaW5nIGNlbGxzIGluIHRoZSBpbnRlZ3JhdGVkIGRhdGFzZXQgYmFzZWQgb24gdGhlaXIgUk1TIHN1YnR5cGUuClRvIGRvIHRoaXMgd2Ugd2lsbCBuZWVkIHRvIGJlIHN1cmUgdGhhdCB0aGUgc3VidHlwZSBpcyBwcmVzZW50IGluIHRoZSBgY29sRGF0YWAgb2YgdGhlIGludGVncmF0ZWQgU0NFIG9iamVjdC4KSWYgaXQncyBub3QgdGhlcmUsIHdlIG5lZWQgdG8gYWRkIGl0IGluLgoKYGBge3IgY29sZGF0YSBoZWFkLCBsaXZlPVRSVUV9CiMgbG9vayBhdCB0aGUgaGVhZCBvZiB0aGUgY29sZGF0YQpoZWFkKGNvbERhdGEoaW50ZWdyYXRlZF9zY2UpKSB8PgogIGFzLmRhdGEuZnJhbWUoKQpgYGAKClVoIG9oLCBpdCBsb29rcyBsaWtlIHRoZSBSTVMgc3VidHlwZSBpcyBub3QgZm91bmQgaW4gdGhlIFNDRSBvYmplY3QuCkZvcnR1bmF0ZWx5IHdlIGFsc28gaGF2ZSB0aGUgc2FtcGxlIG1ldGFkYXRhIHRhYmxlIHRoYXQgd2UgcmVhZCBpbiBlYXJsaWVyLCB3aGljaCBjb250YWlucyBpbmZvcm1hdGlvbiBhYm91dCBlYWNoIG9mIHRoZSBzYW1wbGVzIHByZXNlbnQgaW4gdGhlIGRhdGFzZXQuCgpgYGB7ciBzYW1wbGUgbWV0YWRhdGEsIGxpdmU9VFJVRX0KIyBwcmludCBvdXQgc2FtcGxlIG1ldGFkYXRhCmhlYWQoc2FtcGxlX21ldGFkYXRhKQpgYGAKCkxvb2tpbmcgYXQgdGhpcyBzYW1wbGUgdGFibGUsIHdlIHNlZSBhIGNvbHVtbiBuYW1lZCBgc3ViZGlhZ25vc2lzYCB3aGljaCBhY2NvdW50cyBmb3IgdGhlIFJNUyBzdWJ0eXBlLCBBUk1TIG9yIEVSTVMuCldlIGFsc28gc2VlIG90aGVyIGNvbHVtbnMgdGhhdCBjb250YWluIGluZm9ybWF0aW9uIGFib3V0IGVhY2ggc3BlY2lmaWMgc2FtcGxlLgoKV2UgY2FuIGluY29ycG9yYXRlIHRoZSBpbmZvcm1hdGlvbiBpbiB0aGlzIHNhbXBsZSBtZXRhZGF0YSB0YWJsZSBpbnRvIHRoZSBgY29sRGF0YWAgb2YgdGhlIGludGVncmF0ZWQgU0NFIG9iamVjdC4KVGhpcyB3aWxsIGFsbG93IHVzIHRvIG1hdGNoIGVhY2ggb2YgdGhlIHNhbXBsZXMgaW4gdGhlIFNDRSBvYmplY3Qgd2l0aCB0aGUgUk1TIHN1YnR5cGUgYW5kIGFsc28gYWxsb3cgdXMgdG8gdXNlIGFueSBvZiB0aGUgY29sdW1ucyBpbiB0aGUgc2FtcGxlIG1ldGFkYXRhIGZvciBwbG90dGluZy4KCmBgYHtyIG1vZGlmeSBjb2xkYXRhfQojIGFkZCBzYW1wbGUgbWV0YWRhdGEgdG8gY29sRGF0YSBmcm9tIHRoZSBpbnRlZ3JhdGVkIFNDRSBvYmplY3QKY29sZGF0YV9kZiA8LSBjb2xEYXRhKGludGVncmF0ZWRfc2NlKSB8PgogICMgY29udmVydCBmcm9tIERhdGFGcmFtZSB0byBkYXRhLmZyYW1lCiAgYXMuZGF0YS5mcmFtZSgpIHw+CiAgIyBtZXJnZSB3aXRoIHNhbXBsZSBtZXRhZGF0YQogIGRwbHlyOjpsZWZ0X2pvaW4oc2FtcGxlX21ldGFkYXRhLCBieSA9IGMoInNhbXBsZSIgPSAibGlicmFyeV9pZCIpKSB8PgogICMgY3JlYXRlIG5ldyBjb2x1bW5zCiAgIyBjZWxsX2lkIGlzIGEgY29tYmluYXRpb24gb2YgYmFyY29kZSBhbmQgc2FtcGxlCiAgZHBseXI6Om11dGF0ZShjZWxsX2lkID0gZ2x1ZTo6Z2x1ZSgie3NhbXBsZX0te2JhcmNvZGV9IiksCiAgICAgICAgICAgICAgICAjIHNpbXBsaWZ5IHN1YmRpYWdub3NpcwogICAgICAgICAgICAgICAgZGlhZ25vc2lzX2dyb3VwID0gZm9yY2F0czo6ZmN0X3JlY29kZSgKICAgICAgICAgICAgICAgICAgc3ViZGlhZ25vc2lzLAogICAgICAgICAgICAgICAgICAiQVJNUyIgPSAiQWx2ZW9sYXIgcmhhYmRvbXlvc2FyY29tYSIsCiAgICAgICAgICAgICAgICAgICJFUk1TIiA9ICJFbWJyeW9uYWwgcmhhYmRvbXlvc2FyY29tYSIKICAgICAgICAgICAgICAgICkpCgojIGFkZCBtb2RpZmllZCBkYXRhIGZyYW1lIGJhY2sgdG8gU0NFIGFzIERhdGFGcmFtZQpjb2xEYXRhKGludGVncmF0ZWRfc2NlKSA8LSBEYXRhRnJhbWUoY29sZGF0YV9kZiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvdy5uYW1lcyA9IGNvbGRhdGFfZGYkY2VsbF9pZCkKYGBgCgpOb3cgd2hlbiB3ZSBsb29rIGF0IHRoZSBgY29sRGF0YWAgb2YgdGhlIFNDRSBvYmplY3Qgd2Ugc2hvdWxkIHNlZSBuZXcgY29sdW1ucywgaW5jbHVkaW5nIHRoZSBgZGlhZ25vc2lzX2dyb3VwYCBjb2x1bW4gd2hpY2ggaW5kaWNhdGVzIGlmIGVhY2ggY2VsbCBjb21lcyBmcm9tIGFuIEVSTVMgb3IgQVJNUyBzYW1wbGUuCgpgYGB7ciBwcmludCBuZXcgY29sZGF0YSwgbGl2ZT1UUlVFfQojIHRha2UgYSBsb29rIGF0IHRoZSBuZXcgbW9kaWZpZWQgY29sRGF0YQpoZWFkKGNvbERhdGEoaW50ZWdyYXRlZF9zY2UpKSB8PgogIGFzLmRhdGEuZnJhbWUoKQpgYGAKCiMjIyBQbG90dGluZyB3aXRoIGFubm90YXRpb25zCgpXZSBjYW4gbm93IHVzZSB0aGF0IGNvbHVtbiB0byBsYWJlbCBhbnkgVU1BUCBwbG90cyAob3Igb3RoZXIgcGxvdCB0eXBlcykgdGhhdCB3ZSBtYWtlLgpJbiB0aGUgY2h1bmsgYmVsb3cgd2Ugd2lsbCBzdGFydCBieSB0YWtpbmcgYSBsb29rIGF0IG91ciBpbnRlZ3JhdGlvbiByZXN1bHRzIGFuZCBjb2xvciBvdXIgY2VsbHMgYnkgUk1TIHN1YnR5cGUuCgoqKlJlbWluZGVyOiBZb3Ugc2hvdWxkIGFsd2F5cyB1c2UgdGhlIGJhdGNoLWNvcnJlY3RlZCBkaW1lbnNpb25hbGl0eSByZWR1Y3Rpb24gcmVzdWx0cyBmb3IgdmlzdWFsaXppbmcgZGF0YXNldHMgY29udGFpbmluZyBtdWx0aXBsZSBsaWJyYXJpZXMgb3Igc2FtcGxlcy4qKgoKYGBge3IgZGlhZ25vc2lzIGdyb3VwIFVNQVAsIGxpdmU9VFJVRX0KIyBVTUFQIG9mIGFsbCBzYW1wbGVzLCBzZXBhcmF0aW5nIGJ5IGRpYWdub3NpcyBncm91cApzY2F0ZXI6OnBsb3RSZWR1Y2VkRGltKGludGVncmF0ZWRfc2NlLAogICAgICAgICAgICAgICAgICAgICAgIGRpbXJlZCA9ICJmYXN0bW5uX1VNQVAiLAogICAgICAgICAgICAgICAgICAgICAgIGNvbG9yX2J5ID0gImRpYWdub3Npc19ncm91cCIsCiAgICAgICAgICAgICAgICAgICAgICAgcG9pbnRfc2l6ZT0gMC41LAogICAgICAgICAgICAgICAgICAgICAgIHBvaW50X2FscGhhID0gMC4yKQpgYGAKCkludGVyZXN0aW5nbHksIGl0IGxvb2tzIGxpa2Ugc2FtcGxlcyBmcm9tIHRoZSBBUk1TIGFuZCBFUk1TIHN1YnR5cGVzIHRlbmQgdG8gZ3JvdXAgd2l0aCBzYW1wbGVzIG9mIHRoZSBzYW1lIHN1YnR5cGUgcmF0aGVyIHRoYW4gYWxsIHRvZ2V0aGVyLgoKSW4gdGhlIGludGVncmF0aW9uIG5vdGVib29rIHdlIGFsc28gbG9va2VkIGF0IHRoZSBkaXN0cmlidXRpb24gb2YgY2VsbCB0eXBlcyBhZnRlciBpbnRlZ3JhdGlvbi4KSW4gdGhhdCBub3RlYm9vaywgd2UgZGlzY3Vzc2VkIHRoYXQgY2VsbHMgb2YgdGhlIHNhbWUgY2VsbCB0eXBlIGFyZSBleHBlY3RlZCB0byBpbnRlZ3JhdGUgd2l0aCBvdGhlciBjZWxscyBvZiB0aGUgc2FtZSB0eXBlLgpJcyB0aGF0IHRoZSBjYXNlIHdpdGggdGhpcyBkYXRhc2V0PwoKQSB3b3JkIG9mIGNhdXRpb24gd2hlbiBldmFsdWF0aW5nIHRoZSBjZWxsIHR5cGUgcmVzdWx0cyBmb3IgdGhpcyBkYXRhc2V0OiBUaGUgY2VsbCB0eXBlcyBmb3IgdGhpcyBkYXRhc2V0IHdlcmUgYXNzaWduZWQgaW4gYSB0d28gc3RhZ2UgcHJvY2VzcyBhcyBkZXNjcmliZWQgaW4gW1BhdGVsIF9ldCBhbC5fICgyMDIyKV0oaHR0cHM6Ly9kb2kub3JnLzEwLjEwMTYvai5kZXZjZWwuMjAyMi4wNC4wMDMpLgpUaGUgZmlyc3Qgc3RhZ2UgYXNzaWduZWQgY2VsbHMgYXMgdHVtb3Igb3Igbm9uLXR1bW9yLgpUaGUgbmV4dCBzdGFnZSBmdXJ0aGVyIGNsYXNzaWZpZWQgdHVtb3IgY2VsbHMgaW50byBvbmUgb2YgdGhyZWUgdHlwZXMgb2YgdHVtb3IgY2VsbHM6IG15b2JsYXN0LCBteW9jeXRlLCBvciBtZXNvZGVybS4KU29tZSBzYW1wbGVzIGNvdWxkIG5vdCBiZSBmdXJ0aGVyIGNsYXNzaWZpZWQsIHNvIGFsbCBvZiB0aGVpciB0dW1vciBjZWxscyBhcmUgZGVub3RlZCBgVHVtb3JgLgpUaGUgc2FtcGxlcyB3aGljaCBjb3VsZCBiZSBmdXJ0aGVyIGNsYXNzaWZpZWQgaGF2ZSBhIG1peCBvZiBgVHVtb3JfTWVzb2Rlcm1gLCBgVHVtb3JfTXlvYmxhc3RgLCBhbmQgYFR1bW9yX015b2N5dGVgLgoKYGBge3IgY2VsbHR5cGUgVU1BUH0KIyBVTUFQIG9mIGFsbCBzYW1wbGVzIGxhYmVsZWQgYnkgY2VsbCB0eXBlCnNjYXRlcjo6cGxvdFJlZHVjZWREaW0oaW50ZWdyYXRlZF9zY2UsCiAgICAgICAgICAgICAgICAgICAgICAgZGltcmVkID0gImZhc3Rtbm5fVU1BUCIsCiAgICAgICAgICAgICAgICAgICAgICAgIyBjb2xvciBlYWNoIHBvaW50IGJ5IGNlbGwgdHlwZQogICAgICAgICAgICAgICAgICAgICAgIGNvbG9yX2J5ID0gImNlbGx0eXBlX2Jyb2FkIiwKICAgICAgICAgICAgICAgICAgICAgICBwb2ludF9zaXplID0gMC41LAogICAgICAgICAgICAgICAgICAgICAgIHBvaW50X2FscGhhID0gMC40KSArCiAgIyBNb2RpZnkgdGhlIGxlZ2VuZCBrZXkgd2l0aCBsYXJnZXIsIGVhc2llciB0byBzZWUgcG9pbnRzCiAgZ3VpZGVzKGNvbG9yID0gZ3VpZGVfbGVnZW5kKG92ZXJyaWRlLmFlcyA9IGxpc3Qoc2l6ZSA9IDMsIGFscGhhID0gMSkpKQpgYGAKClVubGlrZSB3aXRoIHRoZSBwcmV2aW91cyBkYXRhc2V0cyB3ZSBoYXZlIHNlZW4gd2hlcmUgYWxsIGNlbGxzIG9mIHRoZSBzYW1lIGNlbGwgdHlwZSBhbHdheXMgZ3JvdXBlZCB0b2dldGhlciwgdGhpcyBkYXRhc2V0IHNob3dzIHNvbWUgc2xpZ2h0bHkgZGlmZmVyZW50IHBhdHRlcm5zIGFuZCBub3QgYWxsIGNlbGxzIG9mIHRoZSBzYW1lIGNlbGwgdHlwZSBjbHVzdGVyIHRvZ2V0aGVyLgpPbmUgcmVhc29uIGlzIHRoYXQgdHVtb3IgZGF0YSBjYW4gYmUgaGV0ZXJvZ2VuZW91cyBhbmQgZXZlcnkgdHVtb3IgaXMgdW5pcXVlLgpEZXBlbmRpbmcgb24gdGhlIHR1bW9yIHR5cGUgd2UgbWF5IG5vdCBleHBlY3QgZXZlcnkgc2FtcGxlIHRvIGludGVncmF0ZSBwZXJmZWN0bHkgYW5kIG1vcmUgaGV0ZXJvZ2VuZW91cyB0dW1vciB0eXBlcyB3aWxsIGJlIG1vcmUgZGlmZmljdWx0IHRvIGludGVncmF0ZSB0b2dldGhlci4KSW4gdGhpcyBwYXJ0aWN1bGFyIGNhc2Ugd2UgYXJlIGxvb2tpbmcgYXQgdHdvIHN1YnR5cGVzIG9mIFJNUyB0aGF0IGhhdmUgZGlzdGluY3QgbXV0YXRpb24gYnVyZGVucyBhbmQgZGlmZmVyZW50aWF0aW9uIHN0YXRlcywgc28gaXQncyBsaWtlbHkgdGhhdCB0aG9zZSBkaWZmZXJlbmNlcyBjb250cmlidXRlIHRvIGhvdyB3ZWxsIHRoZXkgaW50ZWdyYXRlLgoKVG8gZXhwbG9yZSB3aGV0aGVyIGNlbGxzIGFyZSBncm91cGluZyB0b2dldGhlciBib3RoIGJ5IGNlbGwgdHlwZSBhbmQgYnkgUk1TIHN1YnR5cGUsIHdlIGNhbiBjcmVhdGUgYSBwbG90IHRoYXQgaW5jb3Jwb3JhdGVzIGJvdGggcGllY2VzIG9mIG1ldGFkYXRhLgpXZSB3aWxsIHRha2UgYWR2YW50YWdlIG9mIHRoZSBgZmFjZXRfZ3JpZCgpYCBmdW5jdGlvbiBmcm9tIGBnZ3Bsb3QyYCB0byBsb29rIGF0IHR3byB2YXJpYWJsZXMgaW4gdGhlIGBjb2xEYXRhYCBhdCBvbmNlIC0gdGhlIGNlbGwgdHlwZSBhbmQgdGhlIHN1YmRpYWdub3Npcy4KSW4gdGhlIGJlbG93IHBsb3Qgd2Ugd2lsbCBjb2xvciBvdXIgY2VsbHMgYnkgY2VsbCB0eXBlIHdoaWxlIGFsc28gdXNpbmcgYGZhY2V0X2dyaWQoKWAgc28gdGhhdCBjZWxscyBmcm9tIGRpZmZlcmVudCBzdWJkaWFnbm9zZXMgd2lsbCBiZSBpbiB0aGVpciBvd24gcGxvdCBwYW5lbC4KCmBgYHtyIGNlbGx0eXBlIHN1YmRpYWdub3NpcyBVTUFQLCBsaXZlPVRSVUV9CiMgVU1BUCBvZiBhbGwgc2FtcGxlcwojIHNlcGFyYXRpbmcgYnkgZGlhZ25vc2lzIGdyb3VwIGFuZCBsYWJlbGluZyBjZWxsIHR5cGUKc2NhdGVyOjpwbG90UmVkdWNlZERpbShpbnRlZ3JhdGVkX3NjZSwKICAgICAgICAgICAgICAgICAgICAgICBkaW1yZWQgPSAiZmFzdG1ubl9VTUFQIiwKICAgICAgICAgICAgICAgICAgICAgICAjIGNvbG9yIGVhY2ggcG9pbnQgYnkgY2VsbCB0eXBlCiAgICAgICAgICAgICAgICAgICAgICAgY29sb3JfYnkgPSAiY2VsbHR5cGVfYnJvYWQiLAogICAgICAgICAgICAgICAgICAgICAgIHBvaW50X3NpemU9IDAuNSwKICAgICAgICAgICAgICAgICAgICAgICBwb2ludF9hbHBoYSA9IDAuNCwKICAgICAgICAgICAgICAgICAgICAgICAjIHRlbGwgc2NhdGVyIHRvIHVzZSBkaWFnbm9zaXNfZ3JvdXAgZm9yIHBsb3R0aW5nCiAgICAgICAgICAgICAgICAgICAgICAgb3RoZXJfZmllbGRzID0gImRpYWdub3Npc19ncm91cCIpICsKICAjIGluY2x1ZGUgZWFjaCBkaWFnbm9zaXMgZ3JvdXAgYXMgaXRzIG93biBjb2x1bW4KICBmYWNldF9ncmlkKGNvbHMgPSB2YXJzKGRpYWdub3Npc19ncm91cCkpCmBgYAoKQXMgZXhwZWN0ZWQsIHdlIHNlZSB0aGF0IGNlbGwgdHlwZXMgYXJlIHNlcGFyYXRlZCwgbW9zdCBsaWtlbHkgZHVlIHRvIGRpZmZlcmVudCBSTVMgc3VidHlwZXMuCgpXZSBjYW4gYWxzbyB1c2UgYSBzdGFja2VkIGJhcnBsb3QgdG8gbG9vayBhdCB0aGUgZGlzdHJpYnV0aW9uIG9mIGNlbGwgdHlwZXMgYWNyb3NzIGVhY2ggc2FtcGxlLCB3aGljaCB3aWxsIHJlcXVpcmUgYSBiaXQgb2Ygd3JhbmdsaW5nIGZpcnN0LgoKYGBge3IgY2VsbHR5cGUgYmFycGxvdH0KIyBmaWx0ZXIgY29sZGF0YSB0byBvbmx5IGluY2x1ZGUgdHVtb3IgY2VsbHMKdHVtb3JfY2VsbHNfZGYgPC0gY29sZGF0YV9kZiB8PgogICMgZmluZCByb3dzIHdoZXJlIHRoZSBjZWxsIHR5cGUgbmFtZSBjb250YWlucyB0aGUgc3RyaW5nICJUdW1vciIKICBkcGx5cjo6ZmlsdGVyKHN0cmluZ3I6OnN0cl9kZXRlY3QoY2VsbHR5cGVfYnJvYWQsICJUdW1vciIpKQoKIyBjcmVhdGUgYSBzdGFja2VkIGJhcnBsb3QKZ2dwbG90KHR1bW9yX2NlbGxzX2RmLCBhZXMoeCA9IHNhbXBsZSwgZmlsbCA9IGNlbGx0eXBlX2Jyb2FkKSkgKwogICAgZ2VvbV9iYXIocG9zaXRpb24gPSAiZmlsbCIsIGNvbG9yID0gImJsYWNrIiwgc2l6ZSA9IDAuMikgKwogICAgbGFicygKICAgICAgeCA9ICJTYW1wbGUiLAogICAgICB5ID0gIlByb3BvcnRpb24gb2YgY2VsbHMiLAogICAgICBmaWxsID0gIkNlbGwgdHlwZSIKICAgICkgKwogIHNjYWxlX2ZpbGxfYnJld2VyKHBhbGV0dGUgPSAiRGFyazIiKSArCiAgdGhlbWVfYncoKSArCiAgdGhlbWUoYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoYW5nbGUgPSA5MCwgdmp1c3QgPSAwLjUpKSsKICAjIGZhY2V0IGJ5IGRpYWdub3NpcyBncm91cAogIGZhY2V0X2dyaWQoY29scyA9IHZhcnMoZGlhZ25vc2lzX2dyb3VwKSwKICAgICAgICAgICAgICMgb25seSBzaG93IG5vbi1OQSB2YWx1ZXMgb24geC1heGlzCiAgICAgICAgICAgICBzY2FsZXMgPSAiZnJlZV94IiwKICAgICAgICAgICAgIHNwYWNlID0gImZyZWVfeCIpCmBgYAoKU2ltaWxhciB0byB0aGUgVU1BUCwgdGhpcyBwbG90IHNob3dzIHRoYXQgQVJNUyBhbmQgRVJNUyBzaGFyZSBhIGxvdCBvZiB0aGUgc2FtZSBjZWxsIHR5cGVzLgoKV2UgYWxzbyBzZWUgdGhhdCBvbmx5IDYgb2YgdGhlc2UgbGlicmFyaWVzIGhhdmUgdHVtb3IgY2VsbHMgdGhhdCBoYXZlIGJlZW4gZnVydGhlciBjbGFzc2lmaWVkIGludG8gbWVzb2Rlcm0sIG15b2JsYXN0LCBhbmQgbXlvY3l0ZS4KMyBsaWJyYXJpZXMgY29udGFpbiBjZWxscyB0aGF0IGFyZSBvbmx5IGNsYXNzaWZpZWQgYXMgdHVtb3Igb3Igbm9uLXR1bW9yLCBhbmQgdHVtb3IgY2VsbHMgYXJlIG5vdCBmdXJ0aGVyIGNsYXNzaWZpZWQsIGFuZCB0aGUgcmVtYWluaW5nIGxpYnJhcnkgaXMgbm90IGV2ZW4gcHJlc2VudCBpbiBvdXIgcGxvdCBiZWNhdXNlIGl0IHdhcyBub3QgYXNzaWduZWQgYW55IGNlbGwgdHlwZXMgKGFsbCBhcmUgYE5BYCkuCldlIHdpbGwgY29udGludWUgb3VyIGFuYWx5c2lzIG9ubHkgdXNpbmcgdGhlIDYgbGlicmFyaWVzIHdpdGggZnVsbHkgY2xhc3NpZmllZCBjZWxsIHR5cGVzLCByZW1vdmluZyB0aGUgb3RoZXIgNCBiZWZvcmUgd2UgcHJvY2VlZCB3aXRoIGRpZmZlcmVudGlhbCBleHByZXNzaW9uLgoKIyMjIEZpbHRlcmluZyBzYW1wbGVzCgpUaGUgcmVhc29uIHdlIHdhbnQgdG8gcGFyZSBkb3duIG91ciBsaXN0IG9mIHNhbXBsZXMgdG8gY29uc2lkZXIgaXMgdGhhdCB3ZSB3YW50IHRvIGVuc3VyZSB0aGF0IHRoZSBjZWxsIHR5cGVzIChvciBzdWJwb3B1bGF0aW9ucykgdGhhdCB3ZSBhcmUgaW50ZXJlc3RlZCBpbiBhcmUgcHJlc2VudCBpbiBhbGwgc2FtcGxlcyBpbmNsdWRlZCBpbiBvdXIgREUgYW5hbHlzaXMuCldlIHdhbnQgdG8gcmVtb3ZlIGFueSBzYW1wbGVzIHRoYXQgZG8gbm90IGNvbnRhaW4gb3VyIGNlbGwgcG9wdWxhdGlvbihzKSBvZiBpbnRlcmVzdCBhcyB0aGV5IGhhdmUgbm8gY291bnRzIHRvIGNvbnRyaWJ1dGUgdG8gdGhlIERFIGFuYWx5c2lzLgoKYGBge3Igc3Vic2V0IHNjZX0KIyBkZWZpbmUgc2FtcGxlcyB0byBrZWVwCmxpYnJhcnlfaWRzIDwtIGMoCiAgIlNDUENMMDAwNDc5IiwKICAiU0NQQ0wwMDA0ODAiLAogICJTQ1BDTDAwMDQ4MSIsCiAgIlNDUENMMDAwNDg0IiwKICAiU0NQQ0wwMDA0ODgiLAogICJTQ1BDTDAwMDQ5MSIKKQoKIyBzdWJzZXQgc2NlIHRvIG9ubHkgY29udGFpbiBzYW1wbGVzIG9mIGludGVyZXN0CnNhbXBsZXNfdG9fa2VlcCA8LSBpbnRlZ3JhdGVkX3NjZSRzYW1wbGUgJWluJSBsaWJyYXJ5X2lkcwpybXNfc2NlIDwtIGludGVncmF0ZWRfc2NlWywgc2FtcGxlc190b19rZWVwXQoKIyBwcmludCBvdXQgb3VyIG5ldyBTQ0UKcm1zX3NjZQpgYGAKCkJlZm9yZSB3ZSBtb3ZlIG9uLCB3ZSdsbCByZW1vdmUgdGhlIG9yaWdpbmFsIGludGVncmF0ZWQgb2JqZWN0IGZyb20gb3VyIGVudmlyb25tZW50IHRvIHNhdmUgc29tZSBtZW1vcnkuCgpgYGB7ciByZW1vdmUgc2NlfQpybShpbnRlZ3JhdGVkX3NjZSkKYGBgCgpXZSB3aWxsIGFsc28gc2F2ZSBvdXIgbmV3IG9iamVjdCBpbiBjYXNlIHdlIHdhbnQgdG8gdXNlIGl0IGZvciBvdGhlciBhbmFseXNpcyBsYXRlciBvbi4KCmBgYHtyIHNhdmUgc2NlfQojIHdyaXRlIFJEUyBmaWxlIHdpdGggY29tcHJlc3Npb24KcmVhZHI6OndyaXRlX3JkcyhybXNfc2NlLCBmaWxlID0gb3V0cHV0X3NjZV9maWxlLCBjb21wcmVzcyA9ICJneiIpCmBgYAoKV2Ugbm93IGhhdmUgYW4gdXBkYXRlZCBTQ0Ugb2JqZWN0IHRoYXQgY29udGFpbnMgNiBzYW1wbGVzIHRoYXQgd2VyZSBvYnRhaW5lZCBmcm9tIGEgbWl4IG9mIEFSTVMgYW5kIEVSTVMgcGF0aWVudHMuCldlIGNhbiB0aGVuIGFzayB0aGUgcXVlc3Rpb24sIGRvIHNwZWNpZmljIHR1bW9yIGNlbGwgdHlwZXMgY29udGFpbiBzZXRzIG9mIGRpZmZlcmVudGlhbGx5IGV4cHJlc3NlZCBnZW5lcyBiZXR3ZWVuIEFSTVMgYW5kIEVSTVMgc2FtcGxlcz8KCldlIHNob3VsZCBtYWtlIHN1cmUgdGhhdCB3ZSBoYXZlIGVub3VnaCBiaW9sb2dpY2FsIHJlcGxpY2F0ZXMgZnJvbSBlYWNoIGdyb3VwIHRvIHNldCB1cCBvdXIgZXhwZXJpbWVudC4KSXQgaXMgaW1wZXJhdGl2ZSB0byBjb25zaWRlciBnb29kIGV4cGVyaW1lbnRhbCBkZXNpZ24gYW5kIGVuc3VyZSB0aGF0IHdlIGhhdmUgZW5vdWdoIGJpb2xvZ2ljYWwgcmVwbGljYXRlcyAoYXQgbGVhc3QgMyBmb3IgZWFjaCBncm91cCkgd2hlbiBwZXJmb3JtaW5nIGRpZmZlcmVudGlhbCBnZW5lIGV4cHJlc3Npb24gYW5hbHlzaXMuCgpJZiB3ZSBsb29rIGJhY2sgYXQgb3VyIHN0YWNrZWQgYmFycGxvdCB3ZSBzZWUgdGhhdCB3ZSBwaWNrZWQgMyBBUk1TIGFuZCAzIEVSTVMgc2FtcGxlcy4KV2UgY2FuIGFsc28gc2VlIHRoYXQgdGhlIG1ham9yaXR5IG9mIGNlbGxzIGFyZSB0dW1vciBjZWxscywgaW4gcGFydGljdWxhciB0aGUgbGFyZ2VzdCBwb3B1bGF0aW9uIG9mIGNlbGxzIGFwcGVhcnMgdG8gYmUgdGhlIGBUdW1vcl9NeW9ibGFzdGAuCkZvciB0aGlzIGV4YW1wbGUgd2Ugd2lsbCBmb2N1cyBvbiBpZGVudGlmeWluZyBERSBnZW5lcyBpbiB0aGVzZSBgVHVtb3JfTXlvYmxhc3RgIGNlbGxzLCBidXQgdGhlIHByaW5jaXBsZXMgYXBwbGllZCBiZWxvdyBjYW4gYmUgYXBwbGllZCB0byBhbnkgY2VsbCB0eXBlcyBvciBzdWJwb3B1bGF0aW9ucyBvZiBpbnRlcmVzdC4KCiMjIERpZmZlcmVudGlhbCBleHByZXNzaW9uIGFuYWx5c2lzCgpOb3cgd2UgYXJlIHJlYWR5IHRvIHN0YXJ0IHByZXBhcmluZyBmb3Igb3VyIERFIGFuYWx5c2lzLCB3aGVyZSB3ZSB3aWxsIGNvbXBhcmUgdGhlIGdlbmUgZXhwcmVzc2lvbiBvZiB0dW1vciBteW9ibGFzdCBjZWxscyBiZXR3ZWVuIEFSTVMgYW5kIEVSTVMgc2FtcGxlcy4KClRocm91Z2hvdXQgdGhlIG5vdGVib29rIHdlIGhhdmUgYmVlbiB3b3JraW5nIHdpdGggYW4gaW50ZWdyYXRlZCBkYXRhc2V0IHRoYXQgY29udGFpbnMgY29ycmVjdGVkIGdlbmUgZXhwcmVzc2lvbiBkYXRhIChgZmFzdG1ubl9jb3JyZWN0ZWRgIGFzc2F5KSBhbmQgYSBjb3JyZWN0ZWQgVU1BUC4KQXMgYSByZW1pbmRlciwgdGhlIHVuY29ycmVjdGVkIGdlbmUgZXhwcmVzc2lvbiBkYXRhLCBmb3VuZCBpbiB0aGUgYGNvdW50c2AgYW5kIGBsb2djb3VudHNgIGFzc2F5cywgY29ycmVzcG9uZCB0byBkYXRhIHRoYXQgaGFzIGJlZW4gbWVyZ2VkICh0aGUgZmlyc3Qgc3RlcCB3ZSB3YWxrZWQgdGhyb3VnaCBwcmlvciB0byBpbnRlZ3JhdGlvbikgaW50byB0aGUgc2FtZSBTQ0UgYnV0IG5vdCB5ZXQgaW50ZWdyYXRlZC4KV2UgZG8gbm90IHdhbnQgdG8gdXNlIGNvcnJlY3RlZCBnZW5lIGV4cHJlc3Npb24gdmFsdWVzIGZvciBkaWZmZXJlbnRpYWwgZXhwcmVzc2lvbjsgYERFU2VxMmAgZXhwZWN0cyB0aGUgb3JpZ2luYWwgcmF3IGNvdW50cyBhcyBpbnB1dCBzbyB3ZSB3aWxsIGJlIHVzaW5nIGRhdGEgZm91bmQgaW4gdGhlIGBjb3VudHNgIGFzc2F5IG9mIHRoZSBgU2luZ2xlQ2VsbEV4cGVyaW1lbnRgIG9iamVjdC4KCkl0IGlzIGFkdmlzZWQgdG8gb25seSB1c2UgdGhlIGNvcnJlY3RlZCB2YWx1ZXMgZm9yIGFueSBhbmFseXNlcyBiZWluZyBwZXJmb3JtZWQgYXQgdGhlIGNlbGwgbGV2ZWwsIGUuZy4sIGRpbWVuc2lvbmFsaXR5IHJlZHVjdGlvbi4KSW4gY29udHJhc3QsIGl0IGlzIG5vdCBhZHZpc2VkIHRvIHVzZSBjb3JyZWN0ZWQgdmFsdWVzIGZvciBhbnkgYW5hbHlzZXMgdGhhdCBhcmUgZ2VuZS1iYXNlZCwgc3VjaCBhcyBkaWZmZXJlbnRpYWwgZXhwcmVzc2lvbiBvciBtYXJrZXIgZ2VuZSBkZXRlY3Rpb24sIGJlY2F1c2Ugd2l0aGluLWJhdGNoIGFuZCBiZXR3ZWVuLWJhdGNoIGdlbmUgZXhwcmVzc2lvbiBkaWZmZXJlbmNlcyBhcmUgbm8gbG9uZ2VyIHByZXNlcnZlZC4KVGhlIHJlYXNvbiBmb3IgdGhpcyBpcyB0d28tZm9sZCDigJMgbWFueSBvZiB0aGUgREUgbW9kZWxzIHdpbGwgZXhwZWN0IHVuY29ycmVjdGVkIGNvdW50cyBiZWNhdXNlIHRoZXkgd2lsbCBhY2NvdW50IGZvciBiZXR3ZWVuLXNhbXBsZSB2YXJpYXRpb24gd2l0aGluIHRoZSBtb2RlbCwgYW5kIHdlIHdhbnQgdG8gZW5zdXJlIHdlIGFyZSBwcmVzZXJ2aW5nIHZhcmlhdGlvbiB0aGF0IGlzIHByZXNlbnQgc28gYXMgbm90IHRvIGFydGlmaWNpYWxseSBpbmZsYXRlIGRpZmZlcmVuY2VzIGJldHdlZW4gcG9wdWxhdGlvbnMuClNlZSB0aGUgW09TQ0EgY2hhcHRlciBvbiBVc2luZyB0aGUgY29ycmVjdGVkIHZhbHVlc10oaHR0cHM6Ly9iaW9jb25kdWN0b3Iub3JnL2Jvb2tzLzMuMTkvT1NDQS5tdWx0aXNhbXBsZS91c2luZy1jb3JyZWN0ZWQtdmFsdWVzLmh0bWwjdXNpbmctY29ycmVjdGVkLXZhbHVlcykgZm9yIG1vcmUgaW5zaWdodC4KCiMjIyBQc2V1ZG8tYnVsa2luZwoKQmVmb3JlIHdlIGNhbiBjb21wYXJlIHRoZSBnZW5lIGV4cHJlc3Npb24gcHJvZmlsZXMgb2YgbXlvYmxhc3RzIGluIEFSTVMgdnMuIEVSTVMgc2FtcGxlcywgd2Ugd2lsbCBuZWVkIHRvICJwc2V1ZG8tYnVsayIgdGhlIGdlbmUgY291bnRzLgpQc2V1ZG8tYnVsa2luZyBjcmVhdGVzIGEgbmV3IGNvdW50cyBtYXRyaXggdGhhdCBjb250YWlucyB0aGUgc3VtIG9mIHRoZSBjb3VudHMgZnJvbSBhbGwgY2VsbHMgd2l0aCBhIGdpdmVuIGxhYmVsIChlLmcuLCBjZWxsIHR5cGUpIGZvciBlYWNoIHNhbXBsZSAoW1R1bmcgX2V0IGFsLl8gMjAxN10oaHR0cHM6Ly9kb2kub3JnLzEwLjEwMzgvc3JlcDM5OTIxKSkuCklmIHdlIHdlcmUgdG8ga2VlcCBlYWNoIGNlbGwncyBjb3VudHMgc2VwYXJhdGUsIHRoZXkgd291bGQgYmUgdHJlYXRlZCBhcyByZXBsaWNhdGVzLCBsZWFkaW5nIHRvIGluZmxhdGVkIHN0YXRpc3RpY3MuCkJ5IHBzZXVkby1idWxraW5nIGZpcnN0LCB3ZSB3aWxsIG5vdyBoYXZlIG9uZSBjb3VudCBmb3IgZWFjaCBnZW5lIGZvciBlYWNoIHNhbXBsZSBhbmQgd2UgY2FuIHRha2UgYWR2YW50YWdlIG9mIHdlbGwtZXN0YWJsaXNoZWQgbWV0aG9kcyBmb3IgZGlmZmVyZW50aWFsIGV4cHJlc3Npb24gd2l0aCBidWxrIFJOQS1zZXEuCgpQc2V1ZG8tYnVsa2luZyBpcyBpbXBsZW1lbnRlZCBwcmlvciB0byBkaWZmZXJlbnRpYWwgZXhwcmVzc2lvbiBhbmFseXNpcyBvbiBzaW5nbGUtY2VsbCBkYXRhIGJlY2F1c2UgaXQ6CgotIFByb2R1Y2VzIGxhcmdlciBhbmQgbGVzcyBzcGFyc2UgY291bnRzLCB3aGljaCBhbGxvd3MgdXMgdG8gdXNlIHN0YW5kYXJkIG5vcm1hbGl6YXRpb24gYW5kIGRpZmZlcmVudGlhbCBleHByZXNzaW9uIG1ldGhvZHMgdXNlZCBieSBidWxrIFJOQS1zZXEuCi0gQ29sbGFwc2VzIGdlbmUgZXhwcmVzc2lvbiBjb3VudHMgYnkgc2FtcGxlLCBzbyB0aGF0IHNhbXBsZXMsIHJhdGhlciB0aGFuIGNlbGxzLCByZXByZXNlbnQgcmVwbGljYXRlcy4KLSBNYXNrcyB2YXJpYW5jZSB3aXRoaW4gYSBzYW1wbGUgdG8gZW1waGFzaXplIHZhcmlhbmNlIGFjcm9zcyBzYW1wbGVzLgpUaGlzIGNhbiBiZSBib3RoIGdvb2QgYW5kIGJhZCEKTWFza2luZyBpbnRyYS1zYW1wbGUgdmFyaWF0aW9uIG1lYW5zIHlvdSBtaWdodCBub3QgaWRlbnRpZnkgZ2VuZXMgd2hlcmUgYXZlcmFnZSBleHByZXNzaW9uIGRvZXNuJ3QgY2hhbmdlIGJldHdlZW4gc2FtcGxlcyBidXQgdGhlIGRlZ3JlZSBvZiBjZWxsLXRvLWNlbGwgdmFyaWF0aW9uIGRvZXMuCgpCZWZvcmUgd2UgYXBwbHkgcHNldWRvLWJ1bGtpbmcgdG8gb3VyIGRhdGFzZXQsIGxldCdzIGxvb2sgYXQgYSBzaW1wbGUgZXhhbXBsZSBvZiBob3cgcHNldWRvLWJ1bGtpbmcgd29ya3MuCldlJ2xsIHN0YXJ0IGJ5IGNyZWF0aW5nIGEgZmFrZSBtYXRyaXggb2YgY291bnRzLgoKYGBge3IgY3JlYXRlIG1hdHJpeH0KIyBjcmVhdGUgYW4gZXhhbXBsZSBjb3VudHMgbWF0cml4CmNvdW50c19tdHggPC0gbWF0cml4KAogIDE6MTIsCiAgbmNvbCA9IDQsCiAgZGltbmFtZXMgPSBsaXN0KGMoImdlbmVBIiwgImdlbmVCIiwgImdlbmVDIiksCiAgICAgICAgICAgICAgICAgIGMoIkEtY2VsbDEiLCAiQS1jZWxsMiIsICJCLWNlbGwxIiwgIkItY2VsbDIiKSkKKQpjb3VudHNfbXR4CmBgYAoKTmV4dCB3ZSB3aWxsIGNyZWF0ZSBhIHBzZXVkby1idWxrZWQgdmVyc2lvbiBvZiB0aGlzIG1hdHJpeCB3aXRoIG9ubHkgMiBjb2x1bW5zOiAxIGZvciBncm91cCBgQWAgYW5kIDEgZm9yIGdyb3VwIGBCYC4KVG8gZG8gdGhpcyB3ZSB3aWxsIHVzZSB0aGUgYERlbGF5ZWRBcnJheTo6Y29sc3VtKClgIGZ1bmN0aW9uLCB3aGljaCBhbGxvd3MgdXMgdG8gc3VtIHRoZSBjb3VudHMgZm9yIGVhY2ggcm93IGFjcm9zcyBncm91cHMgb2YgY29sdW1ucy4KCmBgYHtyIHBzZXVkb2J1bGsgbWF0cml4LCBsaXZlPVRSVUV9CiMgZGVmaW5lIHRoZSBncm91cCB0aGF0IGVhY2ggY29sdW1uIGJlbG9uZ3MgdG8KZ3JvdXBzIDwtIGMoIkEiLCAiQSIsICJCIiwgIkIiKQoKIyBzdW0gY291bnRzIGFjcm9zcyBjZWxscyAoY29sdW1ucykgYnkgZ3JvdXAgbGFiZWwKcGJfY291bnRzIDwtIERlbGF5ZWRBcnJheTo6Y29sc3VtKGNvdW50c19tdHgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncm91cHMpCnBiX2NvdW50cwpgYGAKCkxvb2tpbmcgYXQgdGhpcyBvdXRwdXQsIHlvdSBzaG91bGQgc2VlIHRoYXQgdGhlIG9yaWdpbmFsIDQgY29sdW1ucyBoYXZlIGJlZW4gY29uZGVuc2VkIHRvIG9ubHkgMiBjb2x1bW5zOiAxIGNvbHVtbiB0byByZXByZXNlbnQgYWxsIGNlbGxzIGZyb20gZ3JvdXAgYEFgLCBhbmQgMSBjb2x1bW4gdG8gcmVwcmVzZW50IGFsbCBjZWxscyBmcm9tIGdyb3VwIGBCYC4KCk5vdyB0aGUgYWN0dWFsIHBzZXVkby1idWxraW5nIGZvciBvdXIgZGF0YXNldCEKCldlIHdpbGwgdXNlIHRoZSBbYHNjdXR0bGU6OmFnZ3JlZ2F0ZUFjcm9zc0NlbGxzKClgIGZ1bmN0aW9uXShodHRwczovL3JkcnIuaW8vZ2l0aHViL0xUTEEvc2N1dHRsZS9tYW4vYWdncmVnYXRlQWNyb3NzQ2VsbHMuaHRtbCkgdG8gcHNldWRvLWJ1bGsgb3VyIGRhdGFzZXQuClRoaXMgZnVuY3Rpb24gdGFrZXMgYXMgaW5wdXQgYW4gU0NFIG9iamVjdCBhbmQgdGhlIGdyb3VwaW5nIGFzc2lnbm1lbnRzIGZvciBlYWNoIGNlbGwuClRoZSBvdXRwdXQgd2lsbCBiZSBhbiBTQ0Ugb2JqZWN0IHRoYXQgY29udGFpbnMgb25seSB0aGUgcHNldWRvLWJ1bGtlZCBjb3VudHMgZm9yIGFsbCBnZW5lcyBhY3Jvc3MgYWxsIHNwZWNpZmllZCBncm91cHMsIHJhdGhlciB0aGFuIGFjcm9zcyBhbGwgY2VsbHMuCldlIGNhbiB0aGVuIHN1YnNldCB0aGlzIFNDRSB0byBqdXN0IGluY2x1ZGUgb3VyIGNlbGwgdHlwZSBvZiBpbnRlcmVzdCAodHVtb3IgbXlvYmxhc3RzKSBmb3IgaW5wdXQgdG8gdGhlIERFIGFuYWx5c2lzLgoKV2UgY2FuIHBzZXVkby1idWxrIHVzaW5nIGFueSBncm91cGluZyB0aGF0IHdlIGFyZSBpbnRlcmVzdGVkIGluLgpGb3IgcmlnaHQgbm93LCB3ZSBhcmUgaW50ZXJlc3RlZCBpbiBsb29raW5nIGF0IGdlbmUgZXhwcmVzc2lvbiBhY3Jvc3MgY2VsbCB0eXBlcywgc28gd2Ugd2FudCB0byBncm91cCB0aGUgcHNldWRvLWJ1bGtlZCBjb3VudHMgbWF0cml4IGJ5IGJvdGggY2VsbCB0eXBlIGFuZCBvcmlnaW5hbCBzYW1wbGUuCgpgYGB7ciBwc2V1ZG9idWxrIHNjZX0KIyBmaXJzdCBzdWJzZXQgdGhlIGNvbGRhdGEKIyB0byBvbmx5IGhhdmUgdGhlIGNvbHVtbnMgd2UgY2FyZSBhYm91dCBmb3IgcHNldWRvLWJ1bGtpbmcKcGJfZ3JvdXBzIDwtIGNvbERhdGEocm1zX3NjZSlbLCBjKCJjZWxsdHlwZV9icm9hZCIsICJzYW1wbGUiKV0KCiMgY3JlYXRlIGEgbmV3IFNDRSBvYmplY3QgdGhhdCBjb250YWlucwojIHRoZSBwc2V1ZG8tYnVsa2VkIGNvdW50cyBhY3Jvc3MgdGhlIHByb3ZpZGVkIGdyb3VwcwpwYl9zY2UgPC0gc2N1dHRsZTo6YWdncmVnYXRlQWNyb3NzQ2VsbHMocm1zX3NjZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gcGJfZ3JvdXBzKQoKIyBjb2x1bW4gbmFtZXMgYXJlbid0IGF1dG9tYXRpY2FsbHkgYWRkZWQgdG8gdGhlIHBzZXVkby1idWxrZWQgc2NlLAojIHNvIGxldCdzIGFkZCB0aGVtIGluCmNvbG5hbWVzKHBiX3NjZSkgPC0gZ2x1ZTo6Z2x1ZSgKICAie3BiX3NjZSRjZWxsdHlwZV9icm9hZH1fe3BiX3NjZSRzYW1wbGV9IgopCgpwYl9zY2UKYGBgCgpIb3cgZG9lcyB0aGUgbmV3IHBzZXVkby1idWxrZWQgYFNpbmdsZUNlbGxFeHBlcmltZW50YCBsb29rIGRpZmZlcmVudD8KSG93IG1hbnkgY29sdW1ucyBkb2VzIGl0IGhhdmU/CgpMZXQncyB0YWtlIGEgbG9vayBhdCB3aGF0IHRoZSBgY29sRGF0YWAgbG9va3MgbGlrZSBpbiB0aGUgcHNldWRvLWJ1bGtlZCBTQ0Ugb2JqZWN0LgoKYGBge3IgcHNldWRvYnVsayBjb2xEYXRhLCBsaXZlPVRSVUV9CiMgbm90ZSB0aGUgbmV3IGNvbHVtbiB3aXRoIG51bWJlciBvZiBjZWxscyBwZXIgZ3JvdXAKaGVhZChjb2xEYXRhKHBiX3NjZSkpIHw+CiAgYXMuZGF0YS5mcmFtZSgpCmBgYAoKWW91IHNob3VsZCBzZWUgdGhhdCBjb2x1bW5zIHN1Y2ggYXMgYHN1bWAsIGBkZXRlY3RlZGAsIGBzdWJzZXRzX21pdG9fc3VtYCwgYW5kIG90aGVyIGNvbHVtbnMgdGhhdCB0eXBpY2FsbHkgY29udGFpbiBwZXIgY2VsbCBRQyBzdGF0aXN0aWNzIG5vdyBjb250YWluIGBOQWAgcmF0aGVyIHRoYW4gbnVtZXJpYyB2YWx1ZXMuClRoaXMgaXMgYmVjYXVzZSB0aGVzZSB2YWx1ZXMgd2VyZSBpbml0aWFsbHkgY2FsY3VsYXRlZCBvbiBhIHBlciBjZWxsIGxldmVsICh3ZSBkaWQgdGhpcyB1c2luZyBgc2N1dHRsZTo6YWRkUGVyQ2VsbFFDTWV0cmljcygpYCksIGJ1dCB3ZSBubyBsb25nZXIgaGF2ZSBhIHNpbmdsZSBjb2x1bW4gcGVyIGNlbGwuCkluc3RlYWQsIGVhY2ggY29sdW1uIG5vdyByZXByZXNlbnRzIGEgX2dyb3VwXyBvZiBjZWxscywgaW4gdGhpcyBjYXNlIGNvbXByaXNlZCBvZiBjZWxscyBvZiBhIGdpdmVuIGNlbGwgdHlwZSBhbmQgc2FtcGxlIGNvbWJpbmF0aW9uLgpUaGVyZWZvcmUsIHRoZSB2YWx1ZXMgdGhhdCB3ZSBjYWxjdWxhdGVkIG9uIGEgcGVyLWNlbGwgbGV2ZWwgYXJlIG5vIGxvbmdlciBhcHBsaWNhYmxlIHRvIHRoaXMgcHNldWRvLWJ1bGtlZCBTQ0Ugb2JqZWN0LgoKWW91IHNob3VsZCBhbHNvIHNlZSBhIG5ldyBjb2x1bW4gdGhhdCB3YXNuJ3QgcHJlc2VudCBwcmV2aW91c2x5LCB0aGUgYG5jZWxsc2AgY29sdW1uLgpUaGlzIGNvbHVtbiB3YXMgYWRkZWQgZHVyaW5nIHBzZXVkby1idWxraW5nIGFuZCBpbmRpY2F0ZXMgdGhlIHRvdGFsIG51bWJlciBvZiBjZWxscyB0aGF0IHdlcmUgc3VtbWVkIHRvZ2V0aGVyIHRvIGZvcm0gZWFjaCBjb2x1bW4gb2YgdGhlIFNDRSBvYmplY3QuCgpCZWZvcmUgd2UgcHJvY2VlZCB3ZSB3aWxsIHdhbnQgdG8gZmlsdGVyIG91dCBhbnkgY29sdW1ucyB0aGF0IGhhdmUgYSBsb3cgbnVtYmVyIG9mIGNlbGxzLgpBIGxvdyBudW1iZXIgb2YgY2VsbHMgd2lsbCB1c3VhbGx5IHJlc3VsdCBpbiBzbWFsbCBjb3VudHMgdGhhdCBjYW4gY2F1c2UgaXNzdWVzIHdpdGggdGhlIHN0YXRpc3RpY2FsIGFwcHJveGltYXRpb25zIG1hZGUgZHVyaW5nIGRpZmZlcmVudGlhbCBleHByZXNzaW9uIGFuYWx5c2lzLgpUaGlzIGlzIGVxdWl2YWxlbnQgdG8gZmlsdGVyaW5nIG91dCBhbnkgbGlicmFyaWVzIGluIGJ1bGsgUk5BLXNlcSBhbmFseXNpcyB0aGF0IGhhdmUgbG93IGxpYnJhcnkgc2l6ZXMuCgpXZSBjYW4gc2V0IGEgdGhyZXNob2xkIGZvciB0aGUgbnVtYmVyIG9mIGNlbGxzIHJlcXVpcmVkIHRvIGNvbnRpbnVlIHdpdGggb3VyIGFuYWx5c2lzIGFuZCByZW1vdmUgYW55IGdyb3VwcyB0aGF0IGRvIG5vdCBtZWV0IHRoZSBtaW5pbXVtIHRocmVzaG9sZC4KSGVyZSB3ZSB3aWxsIHVzZSAxMCwgYnV0IHRoZSB0aHJlc2hvbGQgeW91IHVzZSBmb3IgeW91ciBkYXRhc2V0IGNhbiB2YXJ5IGRlcGVuZGluZyBvbiB0aGUgY29tcG9zaXRpb24gb2YgY2VsbCB0eXBlcy4KCmBgYHtyIGZpbHRlciBwc2V1ZG9idWxrLCBsaXZlPVRSVUV9CiMgcmVtb3ZlIGFueSBncm91cHMgd2l0aCBmZXdlciB0aGFuIDEwIGNlbGxzCmZpbHRlcl9wYl9zY2UgPC0gcGJfc2NlWywgcGJfc2NlJG5jZWxscyA+PSAxMF0KYGBgCgpXZSBjYW4gdGhlbiB0YWtlIGEgbG9vayBhbmQgc2VlIGhvdyBtYW55IGNlbGwgdHlwZS1zYW1wbGUgY29sdW1ucyB3ZSByZW1vdmVkLCBpZiBhbnkuCgpgYGB7ciBwcmludCBkaW0sIGxpdmU9VFJVRX0KIyBwcmludCBvdXQgZGltZW5zaW9ucyBvZiB1bmZpbHRlcmVkIHBzZXVkb2J1bGsgc2NlCmRpbShwYl9zY2UpCgojIGRpbWVuc2lvbnMgb2YgZmlsdGVyZWQgcHNldWRvYnVsayBzY2UKZGltKGZpbHRlcl9wYl9zY2UpCmBgYAoKSXQgbG9va3MgbGlrZSB3ZSBvbmx5IGdvdCByaWQgb2Ygb25lIGdyb3VwLgpXZSBjYW4gZG8gYSBxdWljayBjaGVjayB0byBzZWUgd2hpY2ggZ3JvdXAgd2FzIHJlbW92ZWQgYnkgZmluZGluZyB3aGljaCBjb2x1bW4gaXMgbm8gbG9uZ2VyIHByZXNlbnQgaW4gdGhlIGZpbHRlcmVkIG9iamVjdC4KCmBgYHtyIHJlbW92ZWQgY29sdW1ucywgbGl2ZT1UUlVFfQojIGZpbmQgcmVtb3ZlZCBjb2x1bW5zCnJlbW92ZWRfY29scyA8LSAhKGNvbG5hbWVzKHBiX3NjZSkgJWluJSBjb2xuYW1lcyhmaWx0ZXJfcGJfc2NlKSkKCiMgcHJpbnQgb3V0IG1pc3NpbmcgY29sdW1ucwpjb2xuYW1lcyhwYl9zY2UpW3JlbW92ZWRfY29sc10KYGBgCgpUaGUgbGFzdCBzdGVwIHdlIHdhbnQgdG8gZG8gdG8gcHJlcGFyZSBvdXIgZGF0YXNldCBmb3IgREUgaXMgdG8gc3Vic2V0IHRoZSBwc2V1ZG8tYnVsa2VkIFNDRSBvYmplY3QgdG8gY29udGFpbiBvbmx5IHRoZSBjZWxsIHR5cGUgdGhhdCB3ZSBhcmUgaW50ZXJlc3RlZCBpbiBjb21wYXJpbmcgYWNyb3NzIHRoZSB0d28gUk1TIHN1YnR5cGVzLgpBcyBtZW50aW9uZWQgcHJldmlvdXNseSwgd2UgYXJlIHNwZWNpZmljYWxseSBpbnRlcmVzdGVkIGluIHRoZSBgVHVtb3JfTXlvYmxhc3RgIGNlbGwgdHlwZS4KCmBgYHtyIGZpbHRlciBjZWxsdHlwZX0KIyBsb2dpY2FsIHZlY3RvciBpbmRpY2F0aW5nIGlmIGNlbGxzIGFyZSB0dW1vciBteW9ibGFzdCBvciBub3QKbXlvYmxhc3RfY2VsbHMgPC0gZmlsdGVyX3BiX3NjZSRjZWxsdHlwZV9icm9hZCA9PSAiVHVtb3JfTXlvYmxhc3QiCgojIGNyZWF0ZSBhIG5ldyBzY2Ugd2l0aCBvbmx5IHRoZSB0dW1vciBteW9ibGFzdHMKdHVtb3JfbXlvYmxhc3Rfc2NlIDwtIGZpbHRlcl9wYl9zY2VbLCBteW9ibGFzdF9jZWxsc10KYGBgCgpBZnRlciBmaWx0ZXJpbmcgZm9yIG91ciBjZWxsIHR5cGUgb2YgaW50ZXJlc3Qgd2Ugc2hvdWxkIGhhdmUgYSBkYXRhc2V0IHdpdGggNiBjb2x1bW5zLCAxIGZvciBlYWNoIGdyb3VwIG9mIGBUdW1vcl9NeW9ibGFzdGAgY2VsbHMgaW4gZWFjaCBvZiBvdXIgNiBzYW1wbGVzLgoKIyMjIFBlcmZvcm0gZGlmZmVyZW50aWFsIGV4cHJlc3Npb24gd2l0aCBgREVTZXEyYAoKTm93IHdlIHdpbGwgdXNlIHRoZSBgREVTZXEyYCBwYWNrYWdlIHRvIHBlcmZvcm0gZGlmZmVyZW50aWFsIGV4cHJlc3Npb24gKERFKSBhbmFseXNpcyBvbiBvdXIgcHNldWRvLWJ1bGtlZCBTQ0Ugb2JqZWN0LgpGcm9tIHRoaXMgcG9pbnQsIHdlIGNhbiBwcm9jZWVkIGluIHRoZSBzYW1lIHdheSB3ZSB3b3VsZCBpZiB3ZSBoYWQgYSBidWxrIFJOQS1zZXEgZGF0YXNldCB3aXRoIDYgc2FtcGxlcy4KV2Ugd2lsbCBzdGFydCB3aXRoIHRoZSB1bm5vcm1hbGl6ZWQgcmF3IGNvdW50cyBpbiB0aGUgYGNvdW50c2AgYXNzYXkgb2YgdGhlIHBzZXVkby1idWxrZWQgU0NFIGFuZCBkbyB0aGUgZm9sbG93aW5nIHdpdGggYERFU2VxMmA6CgotIENyZWF0ZSBhIGBERVNlcURhdGFTZXRgIG9iamVjdAotIE5vcm1hbGl6ZSBhbmQgbG9nIHRyYW5zZm9ybSB0aGUgY291bnRzIGRhdGEKLSBFc3RpbWF0ZSBkaXNwZXJzaW9ucyBhbmQgc2hyaW5rIGVzdGltYXRlcwotIEZpdCBhIG5lZ2F0aXZlIGJpbm9taWFsIG1vZGVsIGFuZCBwZXJmb3JtIGh5cG90aGVzaXMgdGVzdGluZyB1c2luZyBXYWxkIHN0YXRpc3RpY3MKCllvdSBjYW4gYWxzbyByZWZlciB0byBvdXIgW21hdGVyaWFscyBmcm9tIG91ciBwcmV2aW91cyB3b3Jrc2hvcHMgY292ZXJpbmcgYnVsayBSTkEtc2VxXShodHRwczovL2dpdGh1Yi5jb20vQWxleHNMZW1vbmFkZS90cmFpbmluZy1tb2R1bGVzL3RyZWUvbWFzdGVyL1JOQS1zZXEjcmVhZG1lKSBmb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiB1c2luZyBgREVTZXFgLgoKIyMjIyBDcmVhdGUgdGhlIGBERVNlcURhdGFTZXRgIG9iamVjdAoKVG8gY3JlYXRlIHRoZSBgREVTZXFEYXRhU2V0YCBvYmplY3Qgd2Ugd2lsbCBuZWVkIHRoZSB1bm5vcm1hbGl6ZWQgY291bnRzIG1hdHJpeCwgdGhlIG1ldGFkYXRhIGFzc29jaWF0ZWQgd2l0aCB0aGUgc2FtcGxlcywgYW5kIGEgZGVzaWduIGZvcm11bGEuClRoZSBmaXJzdCB0d28gaXRlbXMgYXJlIGFscmVhZHkgc3RvcmVkIGluIG91ciBTQ0Ugb2JqZWN0LCBzbyB3ZSBjYW4gY3JlYXRlIGEgYERFU2VxRGF0YVNldGAgb2JqZWN0IGRpcmVjdGx5IGZyb20gdGhhdCBvYmplY3QgdXNpbmcgdGhlIGBERVNlcURhdGFTZXQoKWAgZnVuY3Rpb24uClRoZSBkZXNpZ24gZm9ybXVsYSBpcyB1c2VkIHRvIGluZGljYXRlIHdoaWNoIGNvbHVtbnMgb2YgdGhlIG1ldGFkYXRhIG5lZWQgdG8gYmUgY29uc2lkZXJlZCBpbiB0aGUgREUgY29tcGFyaXNvbi4KRm9yIG91ciBleHBlcmltZW50IHdlIGFyZSBjb21wYXJpbmcgZ2VuZSBleHByZXNzaW9uIGJldHdlZW4gZGlmZmVyZW50IFJNUyBzdWJ0eXBlcy4KVGhlIHN1YnR5cGUgaW5mb3JtYXRpb24gaXMgc3RvcmVkIGluIHRoZSBgZGlhZ25vc2lzX2dyb3VwYCBjb2x1bW4gb2YgdGhlIGBjb2xEYXRhYCBpbiB0aGUgcHNldWRvLWJ1bGtlZCBTQ0UuCgpgYGB7ciBkZXNlcSBvYmplY3QsIGxpdmU9VFJVRX0KIyBzZXQgdXAgdGhlIGRlc2VxIG9iamVjdCwgZ3JvdXAgYnkgZGlhZ25vc2lzCmRlc2VxX29iamVjdCA8LSBERVNlcTI6OkRFU2VxRGF0YVNldCh0dW1vcl9teW9ibGFzdF9zY2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNpZ24gPSB+IGRpYWdub3Npc19ncm91cCkKYGBgCgpUaGUgcHNldWRvLWJ1bGtlZCBTQ0Ugb2JqZWN0IGNvbnRhaW5zIG9ubHkgb25lIGFzc2F5OiB0aGUgYGNvdW50c2AgYXNzYXkuClRoaXMgaXMgYmVjYXVzZSBgREVTZXEyYCBleHBlY3RzIHJhdyBjb3VudHMuCldoZW4gd2UgcnVuIGBERVNlcTJgIG9uIG91ciBkYXRhc2V0LCByYXcgY291bnRzIHdpbGwgZmlyc3QgYmUgbm9ybWFsaXplZCB1c2luZyBzaXplIGZhY3RvcnMgdG8gYWNjb3VudCBmb3IgZGlmZmVyZW5jZXMgaW4gdG90YWwgc2FtcGxlIGNvdW50cy4KVGhlcmVmb3JlIHdlIGRvbid0IGhhdmUgdG8gZG8gYW55IG5vcm1hbGl6YXRpb24gb24gb3VyIG93biDigJMgd2UnbGwgbGV0IGBERVNlcTJgIGRvIGFsbCB0aGUgd29yayBmb3IgdXMuCgpIb3dldmVyLCBiZWZvcmUgd2UgZGl2ZSBpbnRvIERFIGFuYWx5c2lzLCB3ZSBjYW4gZG8gc29tZSBpbml0aWFsIGV4cGxvcmF0aW9uIGFuZCB2aXN1YWxpemF0aW9uIG9mIG91ciBkYXRhIHRvIHNlZSBpZiBvdXIgc2FtcGxlcyBzZXBhcmF0ZSBieSBvdXIga25vd24gZmFjdG9yIG9mIGludGVyZXN0LCBSTVMgc3VidHlwZS4KSW4gcGFydGljdWxhciwgd2UgY2FuIHVzZSBwcmluY2lwYWwgY29tcG9uZW50IGFuYWx5c2lzIChQQ0EpIG9mIG91ciBwc2V1ZG8tYnVsa2VkIGRhdGFzZXQgdG8gdmlzdWFsaXplIGFueSB2YXJpYXRpb24gYmV0d2VlbiBzYW1wbGVzLgpJZiB0aGVyZSBpcyB2YXJpYXRpb24gYmV0d2VlbiBSTVMgc3VidHlwZXMsIHdlIGV4cGVjdCB0aGVpciByZXNwZWN0aXZlIHNhbXBsZXMgdG8gc2VwYXJhdGUgaW4gUEMgc3BhY2UsIGxpa2VseSBpbmRpY2F0aW5nIHByZXNlbmNlIG9mIGRpZmZlcmVudGlhbGx5IGV4cHJlc3NlZCBnZW5lcy4KV2UgY2FuIGV2YWx1YXRlIHRoaXMgYnkgcGxvdHRpbmcgUEMxIGFuZCBQQzIuCgpJbiBvcmRlciB0byBjcmVhdGUgb3VyIFBDQSBwbG90LCB3ZSB3aWxsIGZpcnN0IG5lZWQgdG8gbm9ybWFsaXplIG91ciBkYXRhIHRvIGFjY291bnQgZm9yIGFueSB0ZWNobmljYWwgdmFyaWF0aW9ucyBhY3Jvc3Mgc2FtcGxlcy4KQXMgYSByZW1pbmRlciwgdGhpcyBpcyBOT1QgcmVxdWlyZWQgZm9yIHJ1bm5pbmcgYERFU2VxMmAgYW5hbHlzaXM7IHdlIGFyZSBqdXN0IHVzaW5nIGl0IHRvIHZpc3VhbGl6ZSBvdXIgZGF0YSBwcmlvciB0byBERSBhbmFseXNpcy4KCmBgYHtyIG5vcm1hbGl6ZX0KIyBlc3RpbWF0ZSBzaXplIGZhY3RvcnMgZmlyc3QKZGVzZXFfb2JqZWN0IDwtIERFU2VxMjo6ZXN0aW1hdGVTaXplRmFjdG9ycyhkZXNlcV9vYmplY3QpCgojIG5vcm1hbGl6ZSBhbmQgbG9nIHRyYW5zZm9ybSB0byB1c2UgZm9yIHZpc3VhbGl6YXRpb24Kbm9ybWFsaXplZF9vYmplY3QgPC0gREVTZXEyOjpybG9nKGRlc2VxX29iamVjdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsaW5kID0gVFJVRSkKbm9ybWFsaXplZF9vYmplY3QKYGBgCgpXZSBub3cgaGF2ZSBhIG5vcm1hbGl6ZWQgYW5kIHRyYW5zZm9ybWVkIG9iamVjdCB0aGF0IGNhbiBiZSBkaXJlY3RseSBpbnB1dCB0byB0aGUgYERFU2VxMjo6cGxvdFBDQSgpYCBmdW5jdGlvbiwgd2hpY2ggd2lsbCBib3RoIGNhbGN1bGF0ZSBhbmQgcGxvdCB0aGUgUEMgcmVzdWx0cy4KCmBgYHtyIHBsb3RQQ0EsIGxpdmU9VFJVRX0KREVTZXEyOjpwbG90UENBKG5vcm1hbGl6ZWRfb2JqZWN0LCBpbnRncm91cCA9ICJkaWFnbm9zaXNfZ3JvdXAiKQpgYGAKCkFzIGV4cGVjdGVkIHdlIHNlZSB0aGF0IHNhbXBsZXMgZ3JvdXAgdG9nZXRoZXIgYmFzZWQgb24gUk1TIHN1YnR5cGUgYW5kIGFyZSBzZXBhcmF0ZWQgYWxvbmcgdGhlIFBDMSBheGlzLCB0aGUgUEMgY29udHJpYnV0aW5nIHRoZSBoaWdoZXN0IGFtb3VudCBvZiB2YXJpYXRpb24uCgojIyMjIFJ1biBgREVTZXFgCgpXZSdsbCBub3cgdXNlIHRoZSBjb252ZW5pZW5jZSBmdW5jdGlvbiBgREVTZXEoKWAgdG8gcGVyZm9ybSBvdXIgZGlmZmVyZW50aWFsIGV4cHJlc3Npb24gYW5hbHlzaXMuClRoaXMgZnVuY3Rpb24gY2FsY3VsYXRlcyBub3JtYWxpemF0aW9uIGZhY3RvcnMsIGVzdGltYXRlcyBnZW5lLXdpc2UgZGlzcGVyc2lvbnMsIGZpdHMgYSBuZWdhdGl2ZSBiaW5vbWlhbCBtb2RlbCBhbmQgcGVyZm9ybXMgaHlwb3RoZXNpcyB0ZXN0aW5nIHVzaW5nIFdhbGQgc3RhdGlzdGljcy4KCmBgYHtyIGRlc2VxLCBsaXZlPVRSVUV9CiMgcnVuIERFU2VxCmRlc2VxX29iamVjdCA8LSBERVNlcTI6OkRFU2VxKGRlc2VxX29iamVjdCkKYGBgCgpXZSBjYW4gZXZhbHVhdGUgaG93IHdlbGwgdGhlIG1vZGVsIGZpdCBvdXIgZGF0YSBieSBsb29raW5nIGF0IHRoZSBkaXNwZXJzaW9uIGVzdGltYXRlcy4KV2UgZXhwZWN0IHRvIHNlZSB0aGUgZGlzcGVyc2lvbiBlc3RpbWF0ZXMgZGVjcmVhc2UgYXMgbWVhbnMgYXJlIGluY3JlYXNpbmcgYW5kIGZvbGxvdyB0aGUgbGluZSBvZiBiZXN0IGZpdC4KCmBgYHtyIHBsb3QgZGlzcGVyc2lvbiwgbGl2ZT1UUlVFfQpwbG90RGlzcEVzdHMoZGVzZXFfb2JqZWN0KQpgYGAKCk5vdyB3ZSBjYW4gZXh0cmFjdCB0aGUgcmVzdWx0cyBmcm9tIHRoZSBvYmplY3QsIHNwZWNpZnlpbmcgdGhlIHAtdmFsdWUgdGhyZXNob2xkIHRoYXQgd2Ugd291bGQgbGlrZSB0byB1c2UuCgpgYGB7ciByZXN1bHRzLCBsaXZlPVRSVUV9CiMgZXh0cmFjdCB0aGUgcmVzdWx0cyBhcyBhIERhdGFGcmFtZQpkZXNlcV9yZXN1bHRzIDwtIERFU2VxMjo6cmVzdWx0cyhkZXNlcV9vYmplY3QsIGFscGhhID0gMC4wNSkKYGBgCgpCdXQgd2UgYXJlbid0IGRvbmUgeWV0IQoKVGhlIGVzdGltYXRlcyBvZiBsb2cyIGZvbGQgY2hhbmdlIGNhbGN1bGF0ZWQgYnkgYERFU2VxKClgIGFyZSBub3QgY29ycmVjdGVkIGZvciBleHByZXNzaW9uIGxldmVsLgpUaGlzIG1lYW5zIHRoYXQgd2hlbiBjb3VudHMgYXJlIHNtYWxsLCB3ZSBhcmUgbGlrZWx5IHRvIGVuZCB1cCB3aXRoIHNvbWUgbGFyZ2UgZm9sZCBjaGFuZ2UgdmFsdWVzIHRoYXQgb3ZlcmVzdGltYXRlIHRoZSB0cnVlIGV4dGVudCBvZiB0aGUgY2hhbmdlIGJldHdlZW4gY29uZGl0aW9ucy4KCldlIGNhbiBjb3JyZWN0IHRoaXMgYnkgYXBwbHlpbmcgYSAic2hyaW5rYWdlIiBwcm9jZWR1cmUsIHdoaWNoIHdpbGwgYWRqdXN0IGxhcmdlIHZhbHVlcyB3aXRoIHNtYWxsIGNvdW50cyBkb3dud2FyZCwgd2hpbGUgcHJlc2VydmluZyB2YWx1ZXMgd2l0aCBsYXJnZXIgY291bnRzLCB3aGljaCBhcmUgbGlrZWx5IHRvIGJlIG1vcmUgYWNjdXJhdGUuCgpUbyBkbyB0aGlzLCB3ZSB3aWxsIHVzZSB0aGUgYGxmY1NocmluaygpYCBmdW5jdGlvbiwgYnV0IGZpcnN0IHdlIG5lZWQgdG8ga25vdyB0aGUgbmFtZSBhbmQvb3IgcG9zaXRpb24gb2YgdGhlICJjb2VmZmljaWVudCIgdGhhdCB3YXMgY2FsY3VsYXRlZCBieSBgREVTZXEoKWAsIHdoaWNoIHdlIGNhbiBkbyB3aXRoIHRoZSBgcmVzdWx0c05hbWVzKClgIGZ1bmN0aW9uLgoKYGBge3IgY29lZmZpY2llbnQsIGxpdmU9VFJVRX0KIyBpZGVudGlmeSBwb3NpdGlvbiBvZiBjb2VmZmljaWVudApERVNlcTI6OnJlc3VsdHNOYW1lcyhkZXNlcV9vYmplY3QpCmBgYAoKCmBgYHtyIHNocmlua2FnZX0KIyBhcHB5bHkgbG9nRkMgc2hyaW5rYWdlIHVzaW5nIHRoZSBkZWZhdWx0IG1vZGVsCnNocmlua19yZXN1bHRzIDwtIERFU2VxMjo6bGZjU2hyaW5rKAogIGRlc2VxX29iamVjdCwKICByZXMgPSBkZXNlcV9yZXN1bHRzLAogIGNvZWYgPSAyLAogIHR5cGUgPSAiYXBlZ2xtIgopCmhlYWQoc2hyaW5rX3Jlc3VsdHMpCmBgYAoKSWYgeW91IGxvb2sgYXQgb3VyIGBzaHJpbmtfcmVzdWx0c2Agb2JqZWN0LCB3ZSBzZWUgdGhhdCB0aGUgZ2VuZXMgYXJlIGxhYmVsZWQgd2l0aCB0aGUgRW5zZW1ibCBnZW5lIGlkZW50aWZpZXJzLCBhcyB0aG9zZSB3ZXJlIHRoZSByb3cgbmFtZXMgb2YgdGhlIHBzZXVkby1idWxrZWQgU0NFIHdlIHVzZWQgYXMgaW5wdXQgdG8gYnVpbGQgb3VyIGBERVNlcTJgIG9iamVjdC4KQWx0aG91Z2ggc29tZSBvZiB1cyBtYXkgaGF2ZSBhbGwgb2YgdGhlIGlkZW50aWZpZXJzIG1lbW9yaXplZCBieSBoZWFydCwgaXQgY2FuIGJlIHVzZWZ1bCB0byBoYXZlIGEgaHVtYW4gcmVhZGFibGUgc3ltYm9sIGluIG91ciByZXN1bHRzLgpCZWZvcmUgd2Ugc2F2ZSB0aGUgcmVzdWx0cyBhcyBhIGZpbGUsIHdlIHdpbGwgZ3JhYiB0aGUgZ2VuZSBzeW1ib2xzIGZyb20gdGhlIGByb3dEYXRhYCBvZiBvdXIgb3JpZ2luYWwgU0NFIG9iamVjdCBhbmQgYWRkIHRoZW0gYXMgYSBuZXcgY29sdW1uLgoKYGBge3IgYWRkIGdlbmUgc3ltYm9sfQpkZXNlcV9yZXN1bHRzIDwtIHNocmlua19yZXN1bHRzIHw+CiAgIyBkaXJlY3RseSBhZGQgRW5zZW1ibCBpZCBhcyBhIGNvbHVtbgogICMgY29udmVydGluZyByZXN1bHRzIGludG8gYSBkYXRhIGZyYW1lCiAgdGliYmxlOjphc190aWJibGUocm93bmFtZXMgPSAiZW5zZW1ibF9pZCIpCgojIGNvbnZlcnQgcm93ZGF0YSB0byBkYXRhIGZyYW1lCnNjZV9yb3dkYXRhX2RmIDwtIHJvd0RhdGEodHVtb3JfbXlvYmxhc3Rfc2NlKSB8PgogICMgY3JlYXRlIGEgY29sdW1uIHdpdGggcm93bmFtZXMgc3RvcmVkIGFzIGVuc2VtYmwgaWQKICAjIHVzZSBmb3Igam9pbmluZyB3aXRoIGRlc2VxIHJlc3VsdHMKICB0aWJibGU6OmFzX3RpYmJsZShyb3duYW1lcyA9ICJlbnNlbWJsX2lkIikKCiMgY29tYmluZSBkZXNlcSByZXN1bHRzIHdpdGggcm93ZGF0YSBieSBlbnNlbWJsIGlkCmRlc2VxX3Jlc3VsdHMgPC0gZGVzZXFfcmVzdWx0cyB8PgogIGRwbHlyOjpsZWZ0X2pvaW4oc2NlX3Jvd2RhdGFfZGYsIGJ5ID0gImVuc2VtYmxfaWQiKQoKaGVhZChkZXNlcV9yZXN1bHRzKQpgYGAKCldlIGNhbiBzYXZlIHRoZSBuZXcgZGF0YSBmcmFtZSB0aGF0IHdlIGhhdmUgY3JlYXRlZCB3aXRoIHRoZSBFbnNlbWJsIGlkZW50aWZpZXJzLCBnZW5lIHN5bWJvbHMsIGFuZCB0aGUgYERFU2VxMmAgcmVzdWx0cyBhcyBhIHRhYiBzZXBhcmF0ZWQgKGB0c3ZgKSBmaWxlLgoKYGBge3Igc2F2ZSBkZXNlcSwgbGl2ZT1UUlVFfQojIHNhdmUgb3VyIHJlc3VsdHMgYXMgdHN2CnJlYWRyOjp3cml0ZV90c3YoZGVzZXFfcmVzdWx0cywgZGVzZXFfb3V0cHV0X2ZpbGUpCmBgYAoKTmV4dCwgd2Ugd2lsbCB0YWtlIGEgbG9vayBhdCBob3cgbWFueSBnZW5lcyBhcmUgc2lnbmlmaWNhbnQuCkhlcmUgd2Ugd2lsbCB3YW50IHRvIHVzZSB0aGUgYWRqdXN0ZWQgcC12YWx1ZSwgZm91bmQgaW4gdGhlIGBwYWRqYCBjb2x1bW4gb2YgdGhlIHJlc3VsdHMsIGFzIHRoaXMgYWNjb3VudHMgZm9yIG11bHRpcGxlIHRlc3QgY29ycmVjdGlvbi4KCmBgYHtyIHNpZ25pZmljYW50IHJlc3VsdHMsIGxpdmU9VFJVRX0KIyBmaXJzdCBsb29rIGF0IHRoZSBzaWduaWZpY2FudCByZXN1bHRzCmRlc2VxX3Jlc3VsdHNfc2lnIDwtIGRlc2VxX3Jlc3VsdHMgfD4KICAjIGZpbHRlciBiYXNlZCBvbiBhZGp1c3RlZCBwdmFsdWUKICBkcGx5cjo6ZmlsdGVyKHBhZGogPD0gMC4wNSkKCmhlYWQoZGVzZXFfcmVzdWx0c19zaWcpCmBgYAoKCiMjIyBFeHBsb3JpbmcgdGhlIGlkZW50aWZpZWQgZGlmZmVyZW50aWFsbHkgZXhwcmVzc2VkIGdlbmVzCgpOb3cgdGhhdCB3ZSBoYXZlIGlkZW50aWZpZWQgYSBzZXQgb2YgZ2VuZXMgdGhhdCBhcmUgZGlmZmVyZW50aWFsbHkgZXhwcmVzc2VkIGluIHRoZSB0dW1vciBteW9ibGFzdHMgYmV0d2VlbiBBUk1TIGFuZCBFUk1TIHN1YnR5cGVzLCBsZXRzIGFjdHVhbGx5IHRha2UgYSBsb29rIGF0IHRoZW0gYW5kIHNlZSBpZiB3ZSBjYW4gbWFrZSBzb21lIGluZm9ybWF0aXZlIHBsb3RzLgpUaGUgZmlyc3QgcGxvdCB3ZSdsbCBtYWtlIGlzIGEgdm9sY2FubyBwbG90IHVzaW5nIHRoZSBbYEVuaGFuY2VkVm9sY2Fub2AgcGFja2FnZV0oaHR0cHM6Ly9naXRodWIuY29tL2tldmluYmxpZ2hlL0VuaGFuY2VkVm9sY2FubykuClRoaXMgcGFja2FnZSBhdXRvbWF0aWNhbGx5IGNvbG9ycyB0aGUgcG9pbnRzIGJ5IGN1dG9mZnMgZm9yIGJvdGggc2lnbmlmaWNhbmNlIGFuZCBmb2xkIGNoYW5nZSBhbmQgbGFiZWxzIG1hbnkgb2YgdGhlIHNpZ25pZmljYW50IGdlbmVzIChzdWJqZWN0IHRvIHNwYWNpbmcpLgpgRW5oYW5jZWRWb2xjYW5vYCBoYXMgbWFueSwgbWFueSBvcHRpb25zLCB3aGljaCBpcyBhIGdvb2QgdGhpbmcgaWYgeW91IGRvbid0IGxpa2UgYWxsIG9mIGl0cyBkZWZhdWx0IHNldHRpbmdzLgpFdmVuIGJldHRlciwgaXQgb3V0cHV0cyBhIGBnZ3Bsb3QyYCBvYmplY3QsIHNvIGlmIHdlIHdhbnQgdG8gY3VzdG9taXplIHRoZSBwbG90IGZ1cnRoZXIsIHdlIGNhbiB1c2UgdGhlIHNhbWUgYGdncGxvdDJgIGNvbW1hbmRzIHdlIGhhdmUgdXNlZCBiZWZvcmUuCgpgYGB7ciB2b2xjYW5vfQpFbmhhbmNlZFZvbGNhbm86OkVuaGFuY2VkVm9sY2FubyhkZXNlcV9yZXN1bHRzLAogICAgICAgICAgICAgICAgeCA9ICdsb2cyRm9sZENoYW5nZScsICMgZm9sZCBjaGFuZ2Ugc3RhdGlzdGljIHRvIHBsb3QKICAgICAgICAgICAgICAgIHkgPSAncHZhbHVlJywgIyBzaWduaWZpY2FuY2UgdmFsdWVzCiAgICAgICAgICAgICAgICBsYWIgPSBkZXNlcV9yZXN1bHRzJGdlbmVfc3ltYm9sLCAjIGxhYmVscyBmb3IgcG9pbnRzCiAgICAgICAgICAgICAgICBwQ3V0b2ZmID0gMWUtMDUsICMgcCB2YWx1ZSBjdXRvZmYgKGRlZmF1bHQpCiAgICAgICAgICAgICAgICBGQ2N1dG9mZiA9IDEsICMgZm9sZCBjaGFuZ2UgY3V0b2ZmIChkZWZhdWx0KQogICAgICAgICAgICAgICAgdGl0bGUgPSBOVUxMLCAjIG5vIHRpdGxlCiAgICAgICAgICAgICAgICBzdWJ0aXRsZSA9IE5VTEwsICMgb3Igc3VidGl0bGUKICAgICAgICAgICAgICAgIGNhcHRpb24gPSBOVUxMLCAjIG9yIGNhcHRpb24KICAgICAgICAgICAgICAgIGRyYXdDb25uZWN0b3JzID0gVFJVRSwgIyBhZGQgc29tZSBmdW4gYXJyb3dzCiAgICAgICAgICAgICAgICBsYWJTaXplID0gMyAgIyBzbWFsbGVyIGxhYmVscwogICAgICAgICAgICAgICAgKSArCiAgIyBjaGFuZ2UgdGhlIG92ZXJhbGwgdGhlbWUKICB0aGVtZV9idygpICsKICAjIG1vdmUgdGhlIGxlZ2VuZCB0byB0aGUgYm90dG9tCiAgdGhlbWUobGVnZW5kLnBvc2l0aW9uID0gImJvdHRvbSIpCmBgYAoKCldlIGNhbiBhbHNvIHJldHVybiBiYWNrIHRvIHRoZSBTQ0Ugb2JqZWN0IHRoYXQgd2UgdXNlZCB0byBjcmVhdGUgb3VyIHBzZXVkby1idWxrZWQgU0NFIGFuZCBsb29rIGF0IGdlbmUgZXhwcmVzc2lvbiBvZiBzb21lIG9mIHRoZSBzaWduaWZpY2FudCBnZW5lcy4KV2UgY2FuIGNyZWF0ZSBVTUFQIHBsb3RzIGFzIHdlIGRpZCBwcmV2aW91c2x5LCBidXQgaW5zdGVhZCBvZiBsYWJlbGluZyBlYWNoIGNlbGwgd2l0aCBtZXRhZGF0YSwgd2UgY2FuIGNvbG9yIGNlbGxzIGJ5IGEgc3BlY2lmaWVkIGdlbmUncyBleHByZXNzaW9uIGxldmVscy4KV2Ugd2lsbCBhbHNvIHVzZSBzb21lIG9mIHRoZSBgZ2dwbG90MmAgc2tpbGxzIHdlIHBpY2tlZCB1cCBlYXJsaWVyLCBsaWtlIGBmYWNldF9ncmlkKClgIHRvIHBsb3QgY2VsbHMgZnJvbSBkaWZmZXJlbnQgUk1TIHN1YnR5cGVzIHNlcGFyYXRlbHkuClRoaXMgY2FuIGhlbHAgdXMgdmFsaWRhdGUgdGhlIGBERVNlcTJgIHJlc3VsdHMgc28gdGhhdCB3ZSBjYW4gdmlzdWFsaXplIGdlbmUgZXhwcmVzc2lvbiBjaGFuZ2VzIGFjcm9zcyBvdXIgY2VsbCB0eXBlIG9mIGludGVyZXN0IG9uIGEgc2luZ2xlLWNlbGwgbGV2ZWwuCgpgYGB7ciBleHByZXNzaW9uIHVtYXAsIGxpdmU9VFJVRX0KIyBmaWx0ZXIgdG8ganVzdCBteW9ibGFzdCBjZWxscyBhbmQgcmVtb3ZlIGFueSBOQSdzIGJlZm9yZSBwbG90dGluZwpteW9ibGFzdF9jb21iaW5lZF9zY2UgPC0gcm1zX3NjZVssIHdoaWNoKHJtc19zY2UkY2VsbHR5cGVfYnJvYWQgPT0gIlR1bW9yX015b2JsYXN0IildCgojIHBsb3QgUFRQUlQgKEVOU0cwMDAwMDE5NjA5MCkgZXhwcmVzc2lvbiBpbiBBUk1TIHZzLiBFUk1TCnNjYXRlcjo6cGxvdFJlZHVjZWREaW0obXlvYmxhc3RfY29tYmluZWRfc2NlLAogICAgICAgICAgICAgICAgICAgICAgIGRpbXJlZCA9ICJmYXN0bW5uX1VNQVAiLAogICAgICAgICAgICAgICAgICAgICAgIGNvbG9yX2J5ID0gIkVOU0cwMDAwMDE5NjA5MCIsICNQVFBSVAogICAgICAgICAgICAgICAgICAgICAgIHBvaW50X3NpemU9IDAuNSwKICAgICAgICAgICAgICAgICAgICAgICBwb2ludF9hbHBoYSA9IDAuNCwKICAgICAgICAgICAgICAgICAgICAgICBvdGhlcl9maWVsZHMgPSAiZGlhZ25vc2lzX2dyb3VwIikgKwogIGZhY2V0X2dyaWQoY29scyA9IHZhcnMoZGlhZ25vc2lzX2dyb3VwKSkKYGBgCgpJbiB0aGUgYWJvdmUgcGxvdCB3ZSBvbmx5IHBsb3R0ZWQgdGhlIHR1bW9yIG15b2JsYXN0IGNlbGxzIHRoYXQgd2UgdXNlZCBpbiBvdXIgREUgYW5hbHlzaXMuCkhvd2V2ZXIsIHdlIG1pZ2h0IGJlIGludGVyZXN0ZWQgdG8gc2VlIHRoZSBleHByZXNzaW9uIG9mIGdlbmVzIHRoYXQgYXJlIGRpZmZlcmVudGlhbGx5IGV4cHJlc3NlZCBpbiBvdGhlciBjZWxsIHR5cGVzIHByZXNlbnQgaW4gb3VyIHNhbXBsZXMuCgpgYGB7ciBjZWxsdHlwZSBjb21wYXJpc29ufQojIGxldCdzIGNvbXBhcmUgZ2VuZSBleHByZXNzaW9uIGFjcm9zcyBzb21lIG90aGVyIGNlbGwgdHlwZXMKIyBsb29rIGF0IGFsbCB0dW1vciBjZWxscyBhbmQgcGljayBvbmUgbm9ybWFsIGNlbGwgdHlwZQpjZWxsdHlwZXMgPC0gYygiVHVtb3JfTXlvYmxhc3QiLAogICAgICAgICAgICAgICAiVHVtb3JfTWVzb2Rlcm0iLAogICAgICAgICAgICAgICAiVHVtb3JfTXlvY3l0ZSIsCiAgICAgICAgICAgICAgICJWYXNjdWxhciBFbmRvdGhlbGl1bSIpCgojIHN1YnNldCB0byBqdXN0IGNlbGx0eXBlcyB0aGF0IHdlIGFyZSBpbnRlcmVzdGVkIGluCnR1bW9yX3NjZSA8LSBybXNfc2NlWywgd2hpY2gocm1zX3NjZSRjZWxsdHlwZV9icm9hZCAlaW4lIGNlbGx0eXBlcyldCmBgYAoKTmV4dCB3ZSB3aWxsIGxvb2sgYXQgYSBmZXcgREUgZ2VuZXMgdGhhdCB3ZSBpZGVudGlmaWVkLCBvbmUgdXAgcmVndWxhdGVkIGdlbmUgYW5kIG9uZSBkb3duIHJlZ3VsYXRlZCBnZW5lLCBhbmQgY29tcGFyZSB0aGVpciBleHByZXNzaW9uIGluIG15b2JsYXN0cyB0byBvdGhlciBjZWxsIHR5cGVzIGluIEFSTVMgYW5kIEVSTVMgc2FtcGxlcy4KV2Ugd2lsbCB1c2UgdGhlIGBzY2F0ZXI6OnBsb3RFeHByZXNzaW9uKClgIGZ1bmN0aW9uIHRvIGNyZWF0ZSBhIHZpb2xpbiBwbG90IHdpdGggUk1TIHN1YnR5cGUgb24gdGhlIHgtYXhpcyBhbmQgZ2VuZSBleHByZXNzaW9uIG9uIHRoZSB5LWF4aXMuCldlIGNhbiBjb250aW51ZSB1c2luZyBgZmFjZXRfZ3JpZCgpYCB0byBzaG93IHNlcGFyYXRlIHBhbmVscyBmb3IgZWFjaCBjZWxsIHR5cGUuCkJlY2F1c2Ugd2Ugd2FudCB0byBzaG93IG11bHRpcGxlIGdlbmVzIGhlcmUsIHdlIGFyZSBnb2luZyB0byBhZGQgYW4gYWRkaXRpb25hbCBvcHRpb24gdG8gYGZhY2V0X2dyaWQoKWAgdG8gaW5jbHVkZSBtdWx0aXBsZSByb3dzIGluIG91ciBwbG90IGdyaWQsIG9uZSBmb3IgZWFjaCBnZW5lIG9mIGludGVyZXN0LgpPbmUgbmVhdCB0cmljayBvZiB0aGUgYHNjYXRlcjo6cGxvdEV4cHJlc3Npb24oKWAgZnVuY3Rpb24gaXMgdGhhdCBpdCBhY3R1YWxseSBjcmVhdGVzIGEgYEZlYXR1cmVgIGNvbHVtbiB3aGljaCBjb3JyZXNwb25kcyB0byB0aGUgZmVhdHVyZXMgKGluIHRoaXMgY2FzZSBnZW5lcykgYmVpbmcgdXNlZCBpbiBwbG90dGluZy4KV2UgY2FuIHRoZW4gZGlyZWN0bHkgcmVmZXJlbmNlIHRoYXQgYEZlYXR1cmVgIGNvbHVtbiB3aGVuIHBsb3R0aW5nLCBpbnN0ZWFkIG9mIHVzaW5nIHRoZSBgb3RoZXJfZmllbGRzYCBvcHRpb24gd2UgdXNlZCBwcmV2aW91c2x5LgoKYGBge3IgbXVsdGktZ2VuZSBwbG90fQojIHBpY2sgYSBjb3VwbGUgZ2VuZXMgdG8gbG9vayBhdApnZW5lc190b19wbG90IDwtIGMoIkVOU0cwMDAwMDE5NjA5MCIsICNQVFBSVAogICAgICAgICAgICAgICAgICAgIkVOU0cwMDAwMDE0ODkzNSIpICNHQVMyCgojIGNyZWF0ZSBhIHZpb2xpbiBwbG90CnNjYXRlcjo6cGxvdEV4cHJlc3Npb24odHVtb3Jfc2NlLAogICAgICAgICAgICAgICAgICAgICAgICMgYSB2ZWN0b3Igb2YgZ2VuZXMgdG8gcGxvdAogICAgICAgICAgICAgICAgICAgICAgIGZlYXR1cmVzID0gZ2VuZXNfdG9fcGxvdCwKICAgICAgICAgICAgICAgICAgICAgICB4ID0gImRpYWdub3Npc19ncm91cCIsCiAgICAgICAgICAgICAgICAgICAgICAgY29sb3JfYnkgPSAiZGlhZ25vc2lzX2dyb3VwIiwKICAgICAgICAgICAgICAgICAgICAgICBvdGhlcl9maWVsZHMgPSAiY2VsbHR5cGVfYnJvYWQiLAogICAgICAgICAgICAgICAgICAgICAgIHBvaW50X3NpemUgPSAwLjEpICsKICAjIGVhY2ggY2VsbHR5cGUgaXMgaXRzIG93biBjb2x1bW4KICBmYWNldF9ncmlkKGNvbHMgPSB2YXJzKGNlbGx0eXBlX2Jyb2FkKSwKICAgICAgICAgICAgICMgZWFjaCBmZWF0dXJlIChnZW5lKSBpcyBpdHMgb3duIHJvdwogICAgICAgICAgICAgcm93cyA9IHZhcnMoRmVhdHVyZSkpICsKICAjIGNoYW5nZSB0aGUgZm9udCBzaXplIG9mIHRoZSBmYWNldCBsYWJlbHMKICB0aGVtZShzdHJpcC50ZXh0ID0gZWxlbWVudF90ZXh0KHNpemUgPSA3KSkgKwogIGd1aWRlcyhjb2xvciA9IGd1aWRlX2xlZ2VuZCgKICAgIHRpdGxlID0gIlN1YnR5cGUiLCAjIHVwZGF0ZSB0aGUgbGVnZW5kIHRpdGxlCiAgICAjIGNoYW5nZSB0aGUgc2l6ZSBvZiB0aGUgbGVnZW5kIGNvbG9ycwogICAgb3ZlcnJpZGUuYWVzID0gbGlzdChzaXplID0gMywgYWxwaGEgPSAxKSkKICAgICkKYGBgCgpIb3cgZG8gdGhlIGV4cHJlc3Npb24gb2YgdGhlc2UgZ2VuZXMgY2hhbmdlIGFjcm9zcyBjZWxsIHR5cGVzIGFuZCBSTVMgc3VidHlwZXM/CgpHbyBhaGVhZCBhbmQgZXhwbG9yZSBzb21lIGdlbmVzIG9uIHlvdXIgb3duIQpGZWVsIGZyZWUgdG8gcGxvdCBhbnkgb2YgdGhlIGdlbmVzIHRoYXQgYXJlIGlkZW50aWZpZWQgYXMgc2lnbmlmaWNhbnQsIGZvdW5kIGluIHRoZSBERSByZXN1bHRzIHRhYmxlLCBvciB5b3VyIGZhdm9yaXRlIGdlbmUuClJlbWVtYmVyLCB5b3UgbmVlZCB0byB1c2UgdGhlIEVuc2VtYmwgZ2VuZSBpZGVudGlmaWVyIHRvIHJlZmVyIHRvIGVhY2ggZ2VuZS4KCmBgYHtyIGV4cGxvcmV9CiMgbm93IGRvIHNvbWUgZXhwbG9yYXRpb24gb2Ygb3RoZXIgZ2VuZXMgb24geW91ciBvd24hCmBgYAoKIyMgUHJpbnQgc2Vzc2lvbiBpbmZvCgpgYGB7ciBzZXNzaW9uIGluZm99CnNlc3Npb25JbmZvKCkKYGBgCgo=
    +
    LS0tCnRpdGxlOiAiRGlmZmVyZW50aWFsIGV4cHJlc3Npb24gYW5hbHlzaXMgZm9yIHNjUk5BLXNlcSBkYXRhIgphdXRob3I6ICJEYXRhIExhYiBmb3IgQUxTRiIKZGF0ZTogMjAyMwpvdXRwdXQ6CiAgaHRtbF9ub3RlYm9vazoKICAgIHRvYzogeWVzCiAgICB0b2NfZmxvYXQ6IHllcwotLS0KCiMjIE9iamVjdGl2ZXMKClRoaXMgbm90ZWJvb2sgd2lsbCBkZW1vbnN0cmF0ZSBob3cgdG86CgotIFVzZSBwc2V1ZG8tYnVsa2luZyB0byBwcmVwYXJlIHNjUk5BLXNlcSBsaWJyYXJpZXMgZm9yIGRpZmZlcmVudGlhbCBleHByZXNzaW9uCi0gUGVyZm9ybSBkaWZmZXJlbnRpYWwgZXhwcmVzc2lvbiB3aXRoIHRoZSBgREVTZXEyYCBwYWNrYWdlCi0gVXNlIGBnZ3Bsb3QyYCBhbmQgYEVuaGFuY2VkVm9sY2Fub2AgdG8gdmlzdWFsaXplIGdlbmUgZXhwcmVzc2lvbiBjaGFuZ2VzIGFjcm9zcyBjZWxsIHR5cGVzIGFuZCBzYW1wbGVzCgotLS0KCkp1c3QgbGlrZSBidWxrIFJOQS1zZXEsIGl0IGlzIGxpa2VseSB0aGF0IG9uZSBvZiB0aGUgZ29hbHMgd2hlbiBwZXJmb3JtaW5nIHNjUk5BLXNlcSB3aWxsIGJlIHRvIGNvbXBhcmUgdGhlIGdlbmUgZXhwcmVzc2lvbiBvZiBtdWx0aXBsZSBzYW1wbGVzIHRvIGVhY2ggb3RoZXIuClVubGlrZSBidWxrIFJOQS1zZXEgYW5hbHlzaXMsIHNjUk5BLXNlcSBhbmFseXNpcyBhbGxvd3MgdXMgdG8gaWRlbnRpZnkgYW5kIGFubm90YXRlIGNlbGwgdHlwZXMgb3Igc3VicG9wdWxhdGlvbnMgb2YgY2VsbHMgcHJlc2VudCBpbiBlYWNoIG9mIG91ciBzYW1wbGVzLgpUaGlzIG1lYW5zIHRoYXQgd2UgY2FuIGFjY291bnQgZm9yIGRpZmZlcmVuY2VzIGluIGNlbGwgdHlwZSBjb21wb3NpdGlvbiBhY3Jvc3Mgc2FtcGxlcyBhbmQgc3BlY2lmaWNhbGx5IGZvY3VzIG9uIGNlbGwgdHlwZXMgb3IgcG9wdWxhdGlvbnMgb2YgaW50ZXJlc3Qgd2hlbiBwZXJmb3JtaW5nIGRpZmZlcmVudGlhbCBleHByZXNzaW9uIChERSkgYW5hbHlzaXMuCkluIHRoaXMgbm90ZWJvb2ssIHdlIHdpbGwgd29yayB3aXRoIG11bHRpcGxlIHNhbXBsZXMgdG8gaWRlbnRpZnkgZGlmZmVyZW50aWFsbHkgZXhwcmVzc2VkIGdlbmVzIGFjcm9zcyBjZWxsIHR5cGVzIG9mIGludGVyZXN0IHVzaW5nIHRoZSBbYERFU2VxMmBdKGh0dHBzOi8vYmlvY29uZHVjdG9yLm9yZy9wYWNrYWdlcy9yZWxlYXNlL2Jpb2MvaHRtbC9ERVNlcTIuaHRtbCkgcGFja2FnZS4KCiFbU2luZ2xlLWNlbGwgcm9hZG1hcDogRGlmZmVyZW50aWFsIGV4cHJlc3Npb25dKGRpYWdyYW1zL3JvYWRtYXBfZGlmZmVyZW50aWFsX2V4cHJlc3Npb24ucG5nKQoKV2Ugd2lsbCBjb250aW51ZSB3b3JraW5nIHdpdGggc2FtcGxlcyBmcm9tIHRoZSBbYFNDUENQMDAwMDA1YCBwcm9qZWN0XShodHRwczovL3NjcGNhLmFsZXhzbGVtb25hZGUub3JnL3Byb2plY3RzL1NDUENQMDAwMDA1KSwgYW4gaW52ZXN0aWdhdGlvbiBvZiBwZWRpYXRyaWMgc29saWQgdHVtb3JzIGxlZCBieSB0aGUgRHllciBhbmQgQ2hlbiBsYWJzIGF0IFN0LiBKdWRlIENoaWxkcmVuJ3MgUmVzZWFyY2ggSG9zcGl0YWwuClRoaXMgcGFydGljdWxhciBkYXRhc2V0IGNvbnRhaW5zIDEwIGRpZmZlcmVudCBzYW1wbGVzIHRoYXQgaGF2ZSBiZWVuIGludGVncmF0ZWQgdXNpbmcgYGZhc3RNTk5gLCBmb2xsb3dpbmcgdGhlIHNhbWUgcHJvY2VkdXJlIHdlIG91dGxpbmVkIGluIGAwMi1kYXRhc2V0X2ludGVncmF0aW9uLlJtZGAuClRoZXNlIDEwIHNhbXBsZXMgcmVwcmVzZW50IHR3byBkaWZmZXJlbnQgdHlwZXMgb2YgcmhhYmRvbXlvc2FyY29tYSAoUk1TKTogZW1icnlvbmFsIHJoYWJkb215b3NhcmNvbWEgKEVSTVMpIGFuZCBhbHZlb2xhciByaGFiZG9teW9zYXJjb21hIChBUk1TKS4KVGhlc2UgdHdvIHN1YnR5cGVzIGFyZSBkaXN0aW5ndWlzaGVkIGJ5IHRoZSBwcmVzZW5jZSBvZiB0aGUgYFBBWDMvUEFYNy1GT1hPMWAgZnVzaW9uIGdlbmUsIHdoaWNoIGlzIHByZXNlbnQgb25seSBpbiBBUk1TIHBhdGllbnRzLgpBZGRpdGlvbmFsbHksIGNlbGxzIGZvdW5kIGluIEFSTVMgdHVtb3JzIHRlbmQgdG8gaGF2ZSBhbiBpbmNyZWFzZWQgbXV0YXRpb25hbCBidXJkZW4gd2l0aCBjZWxscyBpbiBhIG1vcmUgZGlmZmVyZW50aWF0ZWQgc3RhdGUgY29tcGFyZWQgdG8gRVJNUyB0dW1vciBjZWxscyAoW1NoZXJuIF9ldCBhbC5fIDIwMTRdKGh0dHBzOi8vZG9pLm9yZy8xMC4xMTU4LzIxNTktODI5MC5DRC0xMy0wNjM5KTsgW1N0ZXdhcnQgX2V0IGFsLl8gMjAxOF0oaHR0cHM6Ly9kb2kub3JnLzEwLjEwMTYvai5jY2VsbC4yMDE4LjA3LjAxMikpLgpSTVMgdHVtb3JzLCByZWdhcmRsZXNzIG9mIHN1YnR5cGUsIGFyZSBtYWRlIHVwIG9mIGNlbGxzIHR5cGljYWxseSBhc3NvY2lhdGVkIHdpdGggZGV2ZWxvcG1lbnQgb2Ygc2tlbGV0YWwgbXVzY2xlOiBtZXNvZGVybSwgbXlvYmxhc3RzLCBhbmQgbXlvY3l0ZXMgKFtTZWJpcmUgYW5kIE1hbG9uZSAyMDAzXShodHRwczovL2RvaS5vcmcvMTAuMTEzNi9qY3AuNTYuNi40MTIpKS4KW1BhdGVsIF9ldCBhbC5fICgyMDIyKV0oaHR0cHM6Ly9kb2kub3JnLzEwLjEwMTYvai5kZXZjZWwuMjAyMi4wNC4wMDMpIHRlc3RlZCB0aGUgaHlwb3RoZXNpcyB0aGF0IGNlbGwgdHlwZXMgaGF2ZSBkaXN0aW5jdCBnZW5lIGV4cHJlc3Npb24gcGF0dGVybnMgaW4gQVJNUyB2cy4gRVJNUyBzYW1wbGVzLgpIZXJlIHdlIHdpbGwgbG9vayBhdCBhIHN1YnNldCBvZiB0aGUgc2FtcGxlcyB0aGV5IHNlcXVlbmNlZCBhbmQgaWRlbnRpZnkgZGlmZmVyZW50aWFsbHkgZXhwcmVzc2VkIGdlbmVzIGluIHR1bW9yIGNlbGxzIGJldHdlZW4gQVJNUyBhbmQgRVJNUyBzYW1wbGVzLgoKIyMgU2V0IHVwCgpgYGB7ciBzZXR1cCwgbWVzc2FnZT1GQUxTRX0KIyBzZXQgc2VlZCBmb3IgcmVwcm9kdWNpYmlsaXR5CnNldC5zZWVkKDIwMjIpCgojIGxvYWQgbGlicmFyaWVzCmxpYnJhcnkoZ2dwbG90MikgIyBwbG90dGluZyBmdW5jdGlvbnMKbGlicmFyeShTaW5nbGVDZWxsRXhwZXJpbWVudCkKCiMgcGFja2FnZSB1c2VkIGZvciBkaWZmZXJlbnRpYWwgZXhwcmVzc2lvbiBhbmFseXNpcwpsaWJyYXJ5KERFU2VxMikKYGBgCgojIyMgRGlyZWN0b3JpZXMgYW5kIGZpbGVzCgpXZSB3aWxsIHN0YXJ0IGJ5IHJlYWRpbmcgaW4gYSBgU2luZ2xlQ2VsbEV4cGVyaW1lbnRgIChTQ0UpIG9iamVjdCB0aGF0IGNvbnRhaW5zIGJvdGggdGhlIHVuY29ycmVjdGVkIChtZXJnZWQgYnV0IG5vdCBpbnRlZ3JhdGVkKSBhbmQgY29ycmVjdGVkIChpbnRlZ3JhdGVkKSBnZW5lIGV4cHJlc3Npb24gZGF0YSBmb3IgYWxsIDEwIHNhbXBsZXMuCgpQcmlvciB0byBpbnRlZ3JhdGlvbiwgYWxsIDEwIHNhbXBsZXMgd2VudCB0aHJvdWdoIHRoZSBzYW1lIGZpbHRlcmluZywgbm9ybWFsaXphdGlvbiwgYW5kIGRpbWVuc2lvbmFsaXR5IHJlZHVjdGlvbi4KVGhlc2UgMTAgc2FtcGxlcyB3ZXJlIHRoZW4gbWVyZ2VkIGludG8gb25lIGBTaW5nbGVDZWxsRXhwZXJpbWVudGAgb2JqZWN0IGZvbGxvd2luZyB0aGUgc2FtZSBzdGVwcyBvdXRsaW5lZCBpbiBgMDMtZGF0YXNldF9pbnRlZ3JhdGlvbi5SbWRgLgpUaGUgbWVyZ2VkIG9iamVjdCB3YXMgdGhlbiBpbnRlZ3JhdGVkIHdpdGggYGZhc3RNTk5gIHRvIG9idGFpbiBhIGNvcnJlY3RlZCBnZW5lIGV4cHJlc3Npb24gYXNzYXkgYW5kIGNvcnJlY3RlZCByZWR1Y2VkIGRpbWVuc2lvbmFsaXR5IHJlc3VsdHMuClRoZSBmaW5hbCBTQ0Ugb2JqZWN0IHdhcyBzdG9yZWQgaW4gYGRhdGEvcm1zL2ludGVncmF0ZWQvcm1zX2FsbF9zY2UucmRzYC4KCldlIGFsc28gaGF2ZSBwcm92aWRlZCBhIG1ldGFkYXRhIGZpbGUsIGBkYXRhL3Jtcy9hbm5vdGF0aW9ucy9ybXNfc2FtcGxlX21ldGFkYXRhLnRzdmAsIHRoYXQgY29udGFpbnMgaW5mb3JtYXRpb24gZnJvbSBlYWNoIHNhbXBsZSwgc3VjaCBhcyBkaWFnbm9zaXMsIHNleCwgYWdlLCBldGMuCkVhY2ggcm93IGluIHRoaXMgZmlsZSBjb3JyZXNwb25kcyB0byBhIHNhbXBsZSBmb3VuZCBpbiB0aGUgaW50ZWdyYXRlZCBTQ0Ugb2JqZWN0LgoKVG8gYmVnaW4sIGxldCdzIHNldCB1cCBvdXIgZGlyZWN0b3JpZXMgYW5kIGZpbGVzOgoKYGBge3IgZmlsZXBhdGhzfQojIHNldCB1cCBmaWxlIHBhdGhzCiMgZGF0YSBkaXJlY3RvcnkgZm9yIFJNUyBkYXRhCmRhdGFfZGlyIDwtIGZpbGUucGF0aCgiZGF0YSIsICJybXMiKQoKIyBpbnRlZ3JhdGVkIGZpbGUgY29udGFpbmluZyBzYW1wbGVzIHRvIHVzZSBmb3IgREUgYW5hbHlzaXMKaW50ZWdyYXRlZF9zY2VfZmlsZSA8LSBmaWxlLnBhdGgoCiAgZGF0YV9kaXIsCiAgImludGVncmF0ZWQiLAogICJybXNfYWxsX3NjZS5yZHMiCikKCiMgc2FtcGxlIG1ldGFkYXRhIHRvIHNldCB1cCBERSBhbmFseXNpcwpzYW1wbGVfbWV0YWRhdGFfZmlsZSA8LSBmaWxlLnBhdGgoCiAgZGF0YV9kaXIsCiAgImFubm90YXRpb25zIiwKICAicm1zX3NhbXBsZV9tZXRhZGF0YS50c3YiCikKCiMgZGlyZWN0b3J5IHRvIHN0b3JlIG91dHB1dApkZXNlcV9kaXIgPC0gZmlsZS5wYXRoKCJhbmFseXNpcyIsICJybXMiLCAiZGVzZXEiKQpmczo6ZGlyX2NyZWF0ZShkZXNlcV9kaXIpCgojIHJlc3VsdHMgZmlsZSB0byBvdXRwdXQgZnJvbSBERSBhbmFseXNpcwpkZXNlcV9vdXRwdXRfZmlsZSA8LSBmaWxlLnBhdGgoCiAgZGVzZXFfZGlyLAogICJybXNfbXlvYmxhc3RfZGVzZXFfcmVzdWx0cy50c3YiCikKCiMgb3V0cHV0IGludGVncmF0ZWQgc2NlIG9iamVjdApvdXRwdXRfc2NlX2ZpbGUgPC0gZmlsZS5wYXRoKAogIGRhdGFfZGlyLAogICJpbnRlZ3JhdGVkIiwKICAicm1zX3N1YnNldF9zY2UucmRzIgopCmBgYAoKV2UgY2FuIGdvIGFoZWFkIGFuZCByZWFkIGluIHRoZSBTQ0Ugb2JqZWN0IGFuZCB0aGUgbWV0YWRhdGEgZmlsZS4KCmBgYHtyIHJlYWQgZmlsZXMsIGxpdmU9VFJVRX0KIyByZWFkIGluIHRoZSBTQ0Ugb2JqZWN0IHRoYXQgaGFzIGFscmVhZHkgYmVlbiBpbnRlZ3JhdGVkCmludGVncmF0ZWRfc2NlIDwtIHJlYWRyOjpyZWFkX3JkcyhpbnRlZ3JhdGVkX3NjZV9maWxlKQoKIyByZWFkIGluIHNhbXBsZSBtZXRhZGF0YSBmaWxlCnNhbXBsZV9tZXRhZGF0YSA8LSByZWFkcjo6cmVhZF90c3Yoc2FtcGxlX21ldGFkYXRhX2ZpbGUpCmBgYAoKIyMgRGF0YXNldCBleHBsb3JhdGlvbgoKQmVmb3JlIHdlIGRpdmUgaW50byBkaWZmZXJlbnRpYWwgZXhwcmVzc2lvbiwgbGV0J3MgZXhwbG9yZSBvdXIgaW50ZWdyYXRlZCBTQ0Ugb2JqZWN0IGFuZCB0aGUgZGF0YXNldCBhIGxpdHRsZSBtb3JlLgoKV2UnbGwgc3RhcnQgYnkgbG9va2luZyBhdCB3aGF0J3MgaW5zaWRlIHRoZSBvYmplY3QuCkhlcmUgd2Ugc2hvdWxkIGhhdmUgYm90aCB0aGUgb3JpZ2luYWwgKHVuY29ycmVjdGVkKSBkYXRhIGFuZCB0aGUgaW50ZWdyYXRlZCAoY29ycmVjdGVkKSBkYXRhIGZvciBib3RoIHRoZSBnZW5lIGV4cHJlc3Npb24gYW5kIHRoZSByZWR1Y2VkIGRpbWVuc2lvbmFsaXR5IHJlc3VsdHMuCkhvdyBhcmUgdGhvc2Ugc3RvcmVkIGluIG91ciBvYmplY3Q/CgpgYGB7ciBwcmludCBzY2UsIGxpdmU9VFJVRX0KIyBwcmludCBvdXQgZW50aXJlIG9iamVjdAppbnRlZ3JhdGVkX3NjZQpgYGAKCgpgYGB7ciBwcmludCBhc3NheSBuYW1lcywgbGl2ZT1UUlVFfQojIGxvb2sgYXQgdGhlIGFzc2F5IG5hbWVzIGluIG91ciBvYmplY3QKYXNzYXlOYW1lcyhpbnRlZ3JhdGVkX3NjZSkKYGBgCgpXaGVuIHdlIGxvb2sgYXQgdGhlIGFzc2F5IG5hbWVzIHdlIHNob3VsZCBzZWUgdGhhdCB0aGVyZSBhcmUgMyBtYXRyaWNlcywgYGNvdW50c2AsIGBsb2djb3VudHNgLCBhbmQgYGZhc3Rtbm5fY29ycmVjdGVkYC4KVGhlIGBjb3VudHNgIGFuZCBgbG9nY291bnRzYCBhc3NheXMgY29ycmVzcG9uZCB0byB0aGUgdW5jb3JyZWN0ZWQgZ2VuZSBleHByZXNzaW9uIGRhdGEgdGhhdCBoYXMgYmVlbiBtZXJnZWQgYnV0IE5PVCBpbnRlZ3JhdGVkLgpUaGUgYGZhc3Rtbm5fY29ycmVjdGVkYCBkYXRhIGNvbnRhaW5zIHRoZSBjb3JyZWN0ZWQgZ2VuZSBleHByZXNzaW9uIGRhdGEgb2J0YWluZWQgZnJvbSBpbnRlZ3JhdGlvbi4KRm9yIHRoaXMgZXhlcmNpc2Ugd2Ugd2lsbCBub3QgYmUgdXNpbmcgdGhlIGBmYXN0bW5uX2NvcnJlY3RlZGAgZGF0YSAobW9yZSBvbiB3aHkgbm90IG9uY2Ugd2UgZ2V0IHRvIHNldHRpbmcgdXAgdGhlIGRpZmZlcmVudGlhbCBleHByZXNzaW9uKSwgYnV0IHdlIG5lZWQgdG8gYmUgYXdhcmUgdGhhdCBpdCBpcyBwcmVzZW50IGFuZCBiZSBhYmxlIHRvIGRpc3Rpbmd1aXNoIGl0IGZyb20gb3VyIHVuY29ycmVjdGVkIGRhdGEuCgoKYGBge3IgcHJpbnQgcmVkdWNlZERpbSBuYW1lcywgbGl2ZT1UUlVFfQojIGxvb2sgYXQgdGhlIG5hbWVzIG9mIHRoZSBkaW1lbnNpb24gcmVkdWN0aW9ucwpyZWR1Y2VkRGltTmFtZXMoaW50ZWdyYXRlZF9zY2UpCmBgYAoKSW4gdGhlIGByZWR1Y2VkRGltYCBzbG90cyB5b3Ugc2hvdWxkIHNlZSBgUENBYCBhbmQgYFVNQVBgLCB3aGljaCB3ZXJlIGJvdGggY2FsY3VsYXRlZCBmcm9tIHRoZSBjb21iaW5lZCBkYXRhIF9iZWZvcmVfIGludGVncmF0aW9uLgpZb3Ugc2hvdWxkIGFsc28gc2VlIGBmYXN0bW5uX1BDQWAgYW5kIGBmYXN0bW5uX1VNQVBgIHJlZHVjZWQgZGltZW5zaW9ucywgd2hpY2ggY29ycmVzcG9uZCB0byB0aGUgaW50ZWdyYXRlZCByZXN1bHRzLgoKIyMjIENlbGwgdHlwZSBhbm5vdGF0aW9ucwoKSnVzdCBsaWtlIGluIHRoZSBpbnRlZ3JhdGlvbiBub3RlYm9vaywgdGhpcyBkYXRhc2V0IGFsc28gY29udGFpbnMgdGhlIGNlbGwgdHlwZSBhbm5vdGF0aW9ucyBmb3VuZCBpbiB0aGUgYGNlbGx0eXBlX2ZpbmVgIGFuZCBgY2VsbHR5cGVfYnJvYWRgIGNvbHVtbnMgb2YgdGhlIGBjb2xEYXRhYC4KVGhlc2UgY2VsbCB0eXBlcyB3ZXJlIG9yaWdpbmFsbHkgYXNzaWduZWQgaW4gW1BhdGVsIF9ldCBhbC5fICgyMDIyKV0oaHR0cHM6Ly9kb2kub3JnLzEwLjEwMTYvai5kZXZjZWwuMjAyMi4wNC4wMDMpLgpXZSB3aWxsIHVzZSB0aGVzZSBjZWxsIHR5cGUgYXNzaWdubWVudHMgdG8gc2V0IHVwIHRoZSBERSBhbmFseXNpcyBiZWxvdywgYnV0IHRoZXkgYXJlIG5vdCByZXF1aXJlZCBmb3IgREUgYW5hbHlzaXMgaXRzZWxmLgpJdCdzIGltcG9ydGFudCB0byBub3RlIHRoYXQgREUgYW5hbHlzaXMgY2FuIGJlIGFwcGxpZWQgdG8gYW55IHN1YnBvcHVsYXRpb24gb2YgaW50ZXJlc3QgdGhhdCBpcyBzaGFyZWQgYWNyb3NzIHNhbXBsZXMgYmVzaWRlcyBqdXN0IGNlbGwgdHlwZXMuCgpCZWNhdXNlIHdlIGFyZSBnb2luZyB0byBiZSBkb2luZyBERSBhbmFseXNpcyBiZXR3ZWVuIEFSTVMgYW5kIEVSTVMgc2FtcGxlcywgbGV0J3Mgc3RhcnQgYnkgbGFiZWxpbmcgY2VsbHMgaW4gdGhlIGludGVncmF0ZWQgZGF0YXNldCBiYXNlZCBvbiB0aGVpciBSTVMgc3VidHlwZS4KVG8gZG8gdGhpcyB3ZSB3aWxsIG5lZWQgdG8gYmUgc3VyZSB0aGF0IHRoZSBzdWJ0eXBlIGlzIHByZXNlbnQgaW4gdGhlIGBjb2xEYXRhYCBvZiB0aGUgaW50ZWdyYXRlZCBTQ0Ugb2JqZWN0LgpJZiBpdCdzIG5vdCB0aGVyZSwgd2UgbmVlZCB0byBhZGQgaXQgaW4uCgpgYGB7ciBjb2xkYXRhIGhlYWQsIGxpdmU9VFJVRX0KIyBsb29rIGF0IHRoZSBoZWFkIG9mIHRoZSBjb2xkYXRhCmhlYWQoY29sRGF0YShpbnRlZ3JhdGVkX3NjZSkpIHw+CiAgYXMuZGF0YS5mcmFtZSgpCmBgYAoKVWggb2gsIGl0IGxvb2tzIGxpa2UgdGhlIFJNUyBzdWJ0eXBlIGlzIG5vdCBmb3VuZCBpbiB0aGUgU0NFIG9iamVjdC4KRm9ydHVuYXRlbHkgd2UgYWxzbyBoYXZlIHRoZSBzYW1wbGUgbWV0YWRhdGEgdGFibGUgdGhhdCB3ZSByZWFkIGluIGVhcmxpZXIsIHdoaWNoIGNvbnRhaW5zIGluZm9ybWF0aW9uIGFib3V0IGVhY2ggb2YgdGhlIHNhbXBsZXMgcHJlc2VudCBpbiB0aGUgZGF0YXNldC4KCmBgYHtyIHNhbXBsZSBtZXRhZGF0YSwgbGl2ZT1UUlVFfQojIHByaW50IG91dCBzYW1wbGUgbWV0YWRhdGEKaGVhZChzYW1wbGVfbWV0YWRhdGEpCmBgYAoKTG9va2luZyBhdCB0aGlzIHNhbXBsZSB0YWJsZSwgd2Ugc2VlIGEgY29sdW1uIG5hbWVkIGBzdWJkaWFnbm9zaXNgIHdoaWNoIGFjY291bnRzIGZvciB0aGUgUk1TIHN1YnR5cGUsIEFSTVMgb3IgRVJNUy4KV2UgYWxzbyBzZWUgb3RoZXIgY29sdW1ucyB0aGF0IGNvbnRhaW4gaW5mb3JtYXRpb24gYWJvdXQgZWFjaCBzcGVjaWZpYyBzYW1wbGUuCgpXZSBjYW4gaW5jb3Jwb3JhdGUgdGhlIGluZm9ybWF0aW9uIGluIHRoaXMgc2FtcGxlIG1ldGFkYXRhIHRhYmxlIGludG8gdGhlIGBjb2xEYXRhYCBvZiB0aGUgaW50ZWdyYXRlZCBTQ0Ugb2JqZWN0LgpUaGlzIHdpbGwgYWxsb3cgdXMgdG8gbWF0Y2ggZWFjaCBvZiB0aGUgc2FtcGxlcyBpbiB0aGUgU0NFIG9iamVjdCB3aXRoIHRoZSBSTVMgc3VidHlwZSBhbmQgYWxzbyBhbGxvdyB1cyB0byB1c2UgYW55IG9mIHRoZSBjb2x1bW5zIGluIHRoZSBzYW1wbGUgbWV0YWRhdGEgZm9yIHBsb3R0aW5nLgoKYGBge3IgbW9kaWZ5IGNvbGRhdGF9CiMgYWRkIHNhbXBsZSBtZXRhZGF0YSB0byBjb2xEYXRhIGZyb20gdGhlIGludGVncmF0ZWQgU0NFIG9iamVjdApjb2xkYXRhX2RmIDwtIGNvbERhdGEoaW50ZWdyYXRlZF9zY2UpIHw+CiAgIyBjb252ZXJ0IGZyb20gRGF0YUZyYW1lIHRvIGRhdGEuZnJhbWUKICBhcy5kYXRhLmZyYW1lKCkgfD4KICAjIG1lcmdlIHdpdGggc2FtcGxlIG1ldGFkYXRhCiAgZHBseXI6OmxlZnRfam9pbihzYW1wbGVfbWV0YWRhdGEsIGJ5ID0gYygic2FtcGxlIiA9ICJsaWJyYXJ5X2lkIikpIHw+CiAgIyBjcmVhdGUgbmV3IGNvbHVtbnMKICAjIGNlbGxfaWQgaXMgYSBjb21iaW5hdGlvbiBvZiBiYXJjb2RlIGFuZCBzYW1wbGUKICBkcGx5cjo6bXV0YXRlKAogICAgY2VsbF9pZCA9IGdsdWU6OmdsdWUoIntzYW1wbGV9LXtiYXJjb2RlfSIpLAogICAgIyBzaW1wbGlmeSBzdWJkaWFnbm9zaXMKICAgIGRpYWdub3Npc19ncm91cCA9IGZvcmNhdHM6OmZjdF9yZWNvZGUoCiAgICAgIHN1YmRpYWdub3NpcywKICAgICAgIkFSTVMiID0gIkFsdmVvbGFyIHJoYWJkb215b3NhcmNvbWEiLAogICAgICAiRVJNUyIgPSAiRW1icnlvbmFsIHJoYWJkb215b3NhcmNvbWEiCiAgICApCiAgKQoKIyBhZGQgbW9kaWZpZWQgZGF0YSBmcmFtZSBiYWNrIHRvIFNDRSBhcyBEYXRhRnJhbWUKY29sRGF0YShpbnRlZ3JhdGVkX3NjZSkgPC0gRGF0YUZyYW1lKAogIGNvbGRhdGFfZGYsCiAgcm93Lm5hbWVzID0gY29sZGF0YV9kZiRjZWxsX2lkCikKYGBgCgpOb3cgd2hlbiB3ZSBsb29rIGF0IHRoZSBgY29sRGF0YWAgb2YgdGhlIFNDRSBvYmplY3Qgd2Ugc2hvdWxkIHNlZSBuZXcgY29sdW1ucywgaW5jbHVkaW5nIHRoZSBgZGlhZ25vc2lzX2dyb3VwYCBjb2x1bW4gd2hpY2ggaW5kaWNhdGVzIGlmIGVhY2ggY2VsbCBjb21lcyBmcm9tIGFuIEVSTVMgb3IgQVJNUyBzYW1wbGUuCgpgYGB7ciBwcmludCBuZXcgY29sZGF0YSwgbGl2ZT1UUlVFfQojIHRha2UgYSBsb29rIGF0IHRoZSBuZXcgbW9kaWZpZWQgY29sRGF0YQpoZWFkKGNvbERhdGEoaW50ZWdyYXRlZF9zY2UpKSB8PgogIGFzLmRhdGEuZnJhbWUoKQpgYGAKCiMjIyBQbG90dGluZyB3aXRoIGFubm90YXRpb25zCgpXZSBjYW4gbm93IHVzZSB0aGF0IGNvbHVtbiB0byBsYWJlbCBhbnkgVU1BUCBwbG90cyAob3Igb3RoZXIgcGxvdCB0eXBlcykgdGhhdCB3ZSBtYWtlLgpJbiB0aGUgY2h1bmsgYmVsb3cgd2Ugd2lsbCBzdGFydCBieSB0YWtpbmcgYSBsb29rIGF0IG91ciBpbnRlZ3JhdGlvbiByZXN1bHRzIGFuZCBjb2xvciBvdXIgY2VsbHMgYnkgUk1TIHN1YnR5cGUuCgoqKlJlbWluZGVyOiBZb3Ugc2hvdWxkIGFsd2F5cyB1c2UgdGhlIGJhdGNoLWNvcnJlY3RlZCBkaW1lbnNpb25hbGl0eSByZWR1Y3Rpb24gcmVzdWx0cyBmb3IgdmlzdWFsaXppbmcgZGF0YXNldHMgY29udGFpbmluZyBtdWx0aXBsZSBsaWJyYXJpZXMgb3Igc2FtcGxlcy4qKgoKYGBge3IgZGlhZ25vc2lzIGdyb3VwIFVNQVAsIGxpdmU9VFJVRX0KIyBVTUFQIG9mIGFsbCBzYW1wbGVzLCBzZXBhcmF0aW5nIGJ5IGRpYWdub3NpcyBncm91cApzY2F0ZXI6OnBsb3RSZWR1Y2VkRGltKAogIGludGVncmF0ZWRfc2NlLAogIGRpbXJlZCA9ICJmYXN0bW5uX1VNQVAiLAogIGNvbG9yX2J5ID0gImRpYWdub3Npc19ncm91cCIsCiAgcG9pbnRfc2l6ZSA9IDAuNSwKICBwb2ludF9hbHBoYSA9IDAuMgopCmBgYAoKSW50ZXJlc3RpbmdseSwgaXQgbG9va3MgbGlrZSBzYW1wbGVzIGZyb20gdGhlIEFSTVMgYW5kIEVSTVMgc3VidHlwZXMgdGVuZCB0byBncm91cCB3aXRoIHNhbXBsZXMgb2YgdGhlIHNhbWUgc3VidHlwZSByYXRoZXIgdGhhbiBhbGwgdG9nZXRoZXIuCgpJbiB0aGUgaW50ZWdyYXRpb24gbm90ZWJvb2sgd2UgYWxzbyBsb29rZWQgYXQgdGhlIGRpc3RyaWJ1dGlvbiBvZiBjZWxsIHR5cGVzIGFmdGVyIGludGVncmF0aW9uLgpJbiB0aGF0IG5vdGVib29rLCB3ZSBkaXNjdXNzZWQgdGhhdCBjZWxscyBvZiB0aGUgc2FtZSBjZWxsIHR5cGUgYXJlIGV4cGVjdGVkIHRvIGludGVncmF0ZSB3aXRoIG90aGVyIGNlbGxzIG9mIHRoZSBzYW1lIHR5cGUuCklzIHRoYXQgdGhlIGNhc2Ugd2l0aCB0aGlzIGRhdGFzZXQ/CgpBIHdvcmQgb2YgY2F1dGlvbiB3aGVuIGV2YWx1YXRpbmcgdGhlIGNlbGwgdHlwZSByZXN1bHRzIGZvciB0aGlzIGRhdGFzZXQ6IFRoZSBjZWxsIHR5cGVzIGZvciB0aGlzIGRhdGFzZXQgd2VyZSBhc3NpZ25lZCBpbiBhIHR3byBzdGFnZSBwcm9jZXNzIGFzIGRlc2NyaWJlZCBpbiBbUGF0ZWwgX2V0IGFsLl8gKDIwMjIpXShodHRwczovL2RvaS5vcmcvMTAuMTAxNi9qLmRldmNlbC4yMDIyLjA0LjAwMykuClRoZSBmaXJzdCBzdGFnZSBhc3NpZ25lZCBjZWxscyBhcyB0dW1vciBvciBub24tdHVtb3IuClRoZSBuZXh0IHN0YWdlIGZ1cnRoZXIgY2xhc3NpZmllZCB0dW1vciBjZWxscyBpbnRvIG9uZSBvZiB0aHJlZSB0eXBlcyBvZiB0dW1vciBjZWxsczogbXlvYmxhc3QsIG15b2N5dGUsIG9yIG1lc29kZXJtLgpTb21lIHNhbXBsZXMgY291bGQgbm90IGJlIGZ1cnRoZXIgY2xhc3NpZmllZCwgc28gYWxsIG9mIHRoZWlyIHR1bW9yIGNlbGxzIGFyZSBkZW5vdGVkIGBUdW1vcmAuClRoZSBzYW1wbGVzIHdoaWNoIGNvdWxkIGJlIGZ1cnRoZXIgY2xhc3NpZmllZCBoYXZlIGEgbWl4IG9mIGBUdW1vcl9NZXNvZGVybWAsIGBUdW1vcl9NeW9ibGFzdGAsIGFuZCBgVHVtb3JfTXlvY3l0ZWAuCgpgYGB7ciBjZWxsdHlwZSBVTUFQfQojIFVNQVAgb2YgYWxsIHNhbXBsZXMgbGFiZWxlZCBieSBjZWxsIHR5cGUKc2NhdGVyOjpwbG90UmVkdWNlZERpbSgKICBpbnRlZ3JhdGVkX3NjZSwKICBkaW1yZWQgPSAiZmFzdG1ubl9VTUFQIiwKICAjIGNvbG9yIGVhY2ggcG9pbnQgYnkgY2VsbCB0eXBlCiAgY29sb3JfYnkgPSAiY2VsbHR5cGVfYnJvYWQiLAogIHBvaW50X3NpemUgPSAwLjUsCiAgcG9pbnRfYWxwaGEgPSAwLjQKKSArCiAgIyBNb2RpZnkgdGhlIGxlZ2VuZCBrZXkgd2l0aCBsYXJnZXIsIGVhc2llciB0byBzZWUgcG9pbnRzCiAgZ3VpZGVzKGNvbG9yID0gZ3VpZGVfbGVnZW5kKG92ZXJyaWRlLmFlcyA9IGxpc3Qoc2l6ZSA9IDMsIGFscGhhID0gMSkpKQpgYGAKClVubGlrZSB3aXRoIHRoZSBwcmV2aW91cyBkYXRhc2V0cyB3ZSBoYXZlIHNlZW4gd2hlcmUgYWxsIGNlbGxzIG9mIHRoZSBzYW1lIGNlbGwgdHlwZSBhbHdheXMgZ3JvdXBlZCB0b2dldGhlciwgdGhpcyBkYXRhc2V0IHNob3dzIHNvbWUgc2xpZ2h0bHkgZGlmZmVyZW50IHBhdHRlcm5zIGFuZCBub3QgYWxsIGNlbGxzIG9mIHRoZSBzYW1lIGNlbGwgdHlwZSBjbHVzdGVyIHRvZ2V0aGVyLgpPbmUgcmVhc29uIGlzIHRoYXQgdHVtb3IgZGF0YSBjYW4gYmUgaGV0ZXJvZ2VuZW91cyBhbmQgZXZlcnkgdHVtb3IgaXMgdW5pcXVlLgpEZXBlbmRpbmcgb24gdGhlIHR1bW9yIHR5cGUgd2UgbWF5IG5vdCBleHBlY3QgZXZlcnkgc2FtcGxlIHRvIGludGVncmF0ZSBwZXJmZWN0bHkgYW5kIG1vcmUgaGV0ZXJvZ2VuZW91cyB0dW1vciB0eXBlcyB3aWxsIGJlIG1vcmUgZGlmZmljdWx0IHRvIGludGVncmF0ZSB0b2dldGhlci4KSW4gdGhpcyBwYXJ0aWN1bGFyIGNhc2Ugd2UgYXJlIGxvb2tpbmcgYXQgdHdvIHN1YnR5cGVzIG9mIFJNUyB0aGF0IGhhdmUgZGlzdGluY3QgbXV0YXRpb24gYnVyZGVucyBhbmQgZGlmZmVyZW50aWF0aW9uIHN0YXRlcywgc28gaXQncyBsaWtlbHkgdGhhdCB0aG9zZSBkaWZmZXJlbmNlcyBjb250cmlidXRlIHRvIGhvdyB3ZWxsIHRoZXkgaW50ZWdyYXRlLgoKVG8gZXhwbG9yZSB3aGV0aGVyIGNlbGxzIGFyZSBncm91cGluZyB0b2dldGhlciBib3RoIGJ5IGNlbGwgdHlwZSBhbmQgYnkgUk1TIHN1YnR5cGUsIHdlIGNhbiBjcmVhdGUgYSBwbG90IHRoYXQgaW5jb3Jwb3JhdGVzIGJvdGggcGllY2VzIG9mIG1ldGFkYXRhLgpXZSB3aWxsIHRha2UgYWR2YW50YWdlIG9mIHRoZSBgZmFjZXRfZ3JpZCgpYCBmdW5jdGlvbiBmcm9tIGBnZ3Bsb3QyYCB0byBsb29rIGF0IHR3byB2YXJpYWJsZXMgaW4gdGhlIGBjb2xEYXRhYCBhdCBvbmNlIC0gdGhlIGNlbGwgdHlwZSBhbmQgdGhlIHN1YmRpYWdub3Npcy4KSW4gdGhlIGJlbG93IHBsb3Qgd2Ugd2lsbCBjb2xvciBvdXIgY2VsbHMgYnkgY2VsbCB0eXBlIHdoaWxlIGFsc28gdXNpbmcgYGZhY2V0X2dyaWQoKWAgc28gdGhhdCBjZWxscyBmcm9tIGRpZmZlcmVudCBzdWJkaWFnbm9zZXMgd2lsbCBiZSBpbiB0aGVpciBvd24gcGxvdCBwYW5lbC4KCmBgYHtyIGNlbGx0eXBlIHN1YmRpYWdub3NpcyBVTUFQLCBsaXZlPVRSVUV9CiMgVU1BUCBvZiBhbGwgc2FtcGxlcwojIHNlcGFyYXRpbmcgYnkgZGlhZ25vc2lzIGdyb3VwIGFuZCBsYWJlbGluZyBjZWxsIHR5cGUKc2NhdGVyOjpwbG90UmVkdWNlZERpbSgKICBpbnRlZ3JhdGVkX3NjZSwKICBkaW1yZWQgPSAiZmFzdG1ubl9VTUFQIiwKICAjIGNvbG9yIGVhY2ggcG9pbnQgYnkgY2VsbCB0eXBlCiAgY29sb3JfYnkgPSAiY2VsbHR5cGVfYnJvYWQiLAogIHBvaW50X3NpemUgPSAwLjUsCiAgcG9pbnRfYWxwaGEgPSAwLjQsCiAgIyB0ZWxsIHNjYXRlciB0byB1c2UgZGlhZ25vc2lzX2dyb3VwIGZvciBwbG90dGluZwogIG90aGVyX2ZpZWxkcyA9ICJkaWFnbm9zaXNfZ3JvdXAiCikgKwogICMgaW5jbHVkZSBlYWNoIGRpYWdub3NpcyBncm91cCBhcyBpdHMgb3duIGNvbHVtbgogIGZhY2V0X2dyaWQoY29scyA9IHZhcnMoZGlhZ25vc2lzX2dyb3VwKSkKYGBgCgpBcyBleHBlY3RlZCwgd2Ugc2VlIHRoYXQgY2VsbCB0eXBlcyBhcmUgc2VwYXJhdGVkLCBtb3N0IGxpa2VseSBkdWUgdG8gZGlmZmVyZW50IFJNUyBzdWJ0eXBlcy4KCldlIGNhbiBhbHNvIHVzZSBhIHN0YWNrZWQgYmFycGxvdCB0byBsb29rIGF0IHRoZSBkaXN0cmlidXRpb24gb2YgY2VsbCB0eXBlcyBhY3Jvc3MgZWFjaCBzYW1wbGUsIHdoaWNoIHdpbGwgcmVxdWlyZSBhIGJpdCBvZiB3cmFuZ2xpbmcgZmlyc3QuCgpgYGB7ciBjZWxsdHlwZSBiYXJwbG90fQojIGZpbHRlciBjb2xkYXRhIHRvIG9ubHkgaW5jbHVkZSB0dW1vciBjZWxscwp0dW1vcl9jZWxsc19kZiA8LSBjb2xkYXRhX2RmIHw+CiAgIyBmaW5kIHJvd3Mgd2hlcmUgdGhlIGNlbGwgdHlwZSBuYW1lIGNvbnRhaW5zIHRoZSBzdHJpbmcgIlR1bW9yIgogIGRwbHlyOjpmaWx0ZXIoc3RyaW5ncjo6c3RyX2RldGVjdChjZWxsdHlwZV9icm9hZCwgIlR1bW9yIikpCgojIGNyZWF0ZSBhIHN0YWNrZWQgYmFycGxvdApnZ3Bsb3QodHVtb3JfY2VsbHNfZGYsIGFlcyh4ID0gc2FtcGxlLCBmaWxsID0gY2VsbHR5cGVfYnJvYWQpKSArCiAgZ2VvbV9iYXIocG9zaXRpb24gPSAiZmlsbCIsIGNvbG9yID0gImJsYWNrIiwgc2l6ZSA9IDAuMikgKwogIGxhYnMoCiAgICB4ID0gIlNhbXBsZSIsCiAgICB5ID0gIlByb3BvcnRpb24gb2YgY2VsbHMiLAogICAgZmlsbCA9ICJDZWxsIHR5cGUiCiAgKSArCiAgc2NhbGVfZmlsbF9icmV3ZXIocGFsZXR0ZSA9ICJEYXJrMiIpICsKICB0aGVtZV9idygpICsKICB0aGVtZShheGlzLnRleHQueCA9IGVsZW1lbnRfdGV4dChhbmdsZSA9IDkwLCB2anVzdCA9IDAuNSkpICsKICAjIGZhY2V0IGJ5IGRpYWdub3NpcyBncm91cAogIGZhY2V0X2dyaWQoCiAgICBjb2xzID0gdmFycyhkaWFnbm9zaXNfZ3JvdXApLAogICAgIyBvbmx5IHNob3cgbm9uLU5BIHZhbHVlcyBvbiB4LWF4aXMKICAgIHNjYWxlcyA9ICJmcmVlX3giLAogICAgc3BhY2UgPSAiZnJlZV94IgogICkKYGBgCgpTaW1pbGFyIHRvIHRoZSBVTUFQLCB0aGlzIHBsb3Qgc2hvd3MgdGhhdCBBUk1TIGFuZCBFUk1TIHNoYXJlIGEgbG90IG9mIHRoZSBzYW1lIGNlbGwgdHlwZXMuCgpXZSBhbHNvIHNlZSB0aGF0IG9ubHkgNiBvZiB0aGVzZSBsaWJyYXJpZXMgaGF2ZSB0dW1vciBjZWxscyB0aGF0IGhhdmUgYmVlbiBmdXJ0aGVyIGNsYXNzaWZpZWQgaW50byBtZXNvZGVybSwgbXlvYmxhc3QsIGFuZCBteW9jeXRlLgozIGxpYnJhcmllcyBjb250YWluIGNlbGxzIHRoYXQgYXJlIG9ubHkgY2xhc3NpZmllZCBhcyB0dW1vciBvciBub24tdHVtb3IsIGFuZCB0dW1vciBjZWxscyBhcmUgbm90IGZ1cnRoZXIgY2xhc3NpZmllZCwgYW5kIHRoZSByZW1haW5pbmcgbGlicmFyeSBpcyBub3QgZXZlbiBwcmVzZW50IGluIG91ciBwbG90IGJlY2F1c2UgaXQgd2FzIG5vdCBhc3NpZ25lZCBhbnkgY2VsbCB0eXBlcyAoYWxsIGFyZSBgTkFgKS4KV2Ugd2lsbCBjb250aW51ZSBvdXIgYW5hbHlzaXMgb25seSB1c2luZyB0aGUgNiBsaWJyYXJpZXMgd2l0aCBmdWxseSBjbGFzc2lmaWVkIGNlbGwgdHlwZXMsIHJlbW92aW5nIHRoZSBvdGhlciA0IGJlZm9yZSB3ZSBwcm9jZWVkIHdpdGggZGlmZmVyZW50aWFsIGV4cHJlc3Npb24uCgojIyMgRmlsdGVyaW5nIHNhbXBsZXMKClRoZSByZWFzb24gd2Ugd2FudCB0byBwYXJlIGRvd24gb3VyIGxpc3Qgb2Ygc2FtcGxlcyB0byBjb25zaWRlciBpcyB0aGF0IHdlIHdhbnQgdG8gZW5zdXJlIHRoYXQgdGhlIGNlbGwgdHlwZXMgKG9yIHN1YnBvcHVsYXRpb25zKSB0aGF0IHdlIGFyZSBpbnRlcmVzdGVkIGluIGFyZSBwcmVzZW50IGluIGFsbCBzYW1wbGVzIGluY2x1ZGVkIGluIG91ciBERSBhbmFseXNpcy4KV2Ugd2FudCB0byByZW1vdmUgYW55IHNhbXBsZXMgdGhhdCBkbyBub3QgY29udGFpbiBvdXIgY2VsbCBwb3B1bGF0aW9uKHMpIG9mIGludGVyZXN0IGFzIHRoZXkgaGF2ZSBubyBjb3VudHMgdG8gY29udHJpYnV0ZSB0byB0aGUgREUgYW5hbHlzaXMuCgpgYGB7ciBzdWJzZXQgc2NlfQojIGRlZmluZSBzYW1wbGVzIHRvIGtlZXAKbGlicmFyeV9pZHMgPC0gYygKICAiU0NQQ0wwMDA0NzkiLAogICJTQ1BDTDAwMDQ4MCIsCiAgIlNDUENMMDAwNDgxIiwKICAiU0NQQ0wwMDA0ODQiLAogICJTQ1BDTDAwMDQ4OCIsCiAgIlNDUENMMDAwNDkxIgopCgojIHN1YnNldCBzY2UgdG8gb25seSBjb250YWluIHNhbXBsZXMgb2YgaW50ZXJlc3QKc2FtcGxlc190b19rZWVwIDwtIGludGVncmF0ZWRfc2NlJHNhbXBsZSAlaW4lIGxpYnJhcnlfaWRzCnJtc19zY2UgPC0gaW50ZWdyYXRlZF9zY2VbLCBzYW1wbGVzX3RvX2tlZXBdCgojIHByaW50IG91dCBvdXIgbmV3IFNDRQpybXNfc2NlCmBgYAoKQmVmb3JlIHdlIG1vdmUgb24sIHdlJ2xsIHJlbW92ZSB0aGUgb3JpZ2luYWwgaW50ZWdyYXRlZCBvYmplY3QgZnJvbSBvdXIgZW52aXJvbm1lbnQgdG8gc2F2ZSBzb21lIG1lbW9yeS4KCmBgYHtyIHJlbW92ZSBzY2V9CnJtKGludGVncmF0ZWRfc2NlKQpgYGAKCldlIHdpbGwgYWxzbyBzYXZlIG91ciBuZXcgb2JqZWN0IGluIGNhc2Ugd2Ugd2FudCB0byB1c2UgaXQgZm9yIG90aGVyIGFuYWx5c2lzIGxhdGVyIG9uLgoKYGBge3Igc2F2ZSBzY2V9CiMgd3JpdGUgUkRTIGZpbGUgd2l0aCBjb21wcmVzc2lvbgpyZWFkcjo6d3JpdGVfcmRzKHJtc19zY2UsIGZpbGUgPSBvdXRwdXRfc2NlX2ZpbGUsIGNvbXByZXNzID0gImd6IikKYGBgCgpXZSBub3cgaGF2ZSBhbiB1cGRhdGVkIFNDRSBvYmplY3QgdGhhdCBjb250YWlucyA2IHNhbXBsZXMgdGhhdCB3ZXJlIG9idGFpbmVkIGZyb20gYSBtaXggb2YgQVJNUyBhbmQgRVJNUyBwYXRpZW50cy4KV2UgY2FuIHRoZW4gYXNrIHRoZSBxdWVzdGlvbiwgZG8gc3BlY2lmaWMgdHVtb3IgY2VsbCB0eXBlcyBjb250YWluIHNldHMgb2YgZGlmZmVyZW50aWFsbHkgZXhwcmVzc2VkIGdlbmVzIGJldHdlZW4gQVJNUyBhbmQgRVJNUyBzYW1wbGVzPwoKV2Ugc2hvdWxkIG1ha2Ugc3VyZSB0aGF0IHdlIGhhdmUgZW5vdWdoIGJpb2xvZ2ljYWwgcmVwbGljYXRlcyBmcm9tIGVhY2ggZ3JvdXAgdG8gc2V0IHVwIG91ciBleHBlcmltZW50LgpJdCBpcyBpbXBlcmF0aXZlIHRvIGNvbnNpZGVyIGdvb2QgZXhwZXJpbWVudGFsIGRlc2lnbiBhbmQgZW5zdXJlIHRoYXQgd2UgaGF2ZSBlbm91Z2ggYmlvbG9naWNhbCByZXBsaWNhdGVzIChhdCBsZWFzdCAzIGZvciBlYWNoIGdyb3VwKSB3aGVuIHBlcmZvcm1pbmcgZGlmZmVyZW50aWFsIGdlbmUgZXhwcmVzc2lvbiBhbmFseXNpcy4KCklmIHdlIGxvb2sgYmFjayBhdCBvdXIgc3RhY2tlZCBiYXJwbG90IHdlIHNlZSB0aGF0IHdlIHBpY2tlZCAzIEFSTVMgYW5kIDMgRVJNUyBzYW1wbGVzLgpXZSBjYW4gYWxzbyBzZWUgdGhhdCB0aGUgbWFqb3JpdHkgb2YgY2VsbHMgYXJlIHR1bW9yIGNlbGxzLCBpbiBwYXJ0aWN1bGFyIHRoZSBsYXJnZXN0IHBvcHVsYXRpb24gb2YgY2VsbHMgYXBwZWFycyB0byBiZSB0aGUgYFR1bW9yX015b2JsYXN0YC4KRm9yIHRoaXMgZXhhbXBsZSB3ZSB3aWxsIGZvY3VzIG9uIGlkZW50aWZ5aW5nIERFIGdlbmVzIGluIHRoZXNlIGBUdW1vcl9NeW9ibGFzdGAgY2VsbHMsIGJ1dCB0aGUgcHJpbmNpcGxlcyBhcHBsaWVkIGJlbG93IGNhbiBiZSBhcHBsaWVkIHRvIGFueSBjZWxsIHR5cGVzIG9yIHN1YnBvcHVsYXRpb25zIG9mIGludGVyZXN0LgoKIyMgRGlmZmVyZW50aWFsIGV4cHJlc3Npb24gYW5hbHlzaXMKCk5vdyB3ZSBhcmUgcmVhZHkgdG8gc3RhcnQgcHJlcGFyaW5nIGZvciBvdXIgREUgYW5hbHlzaXMsIHdoZXJlIHdlIHdpbGwgY29tcGFyZSB0aGUgZ2VuZSBleHByZXNzaW9uIG9mIHR1bW9yIG15b2JsYXN0IGNlbGxzIGJldHdlZW4gQVJNUyBhbmQgRVJNUyBzYW1wbGVzLgoKVGhyb3VnaG91dCB0aGUgbm90ZWJvb2sgd2UgaGF2ZSBiZWVuIHdvcmtpbmcgd2l0aCBhbiBpbnRlZ3JhdGVkIGRhdGFzZXQgdGhhdCBjb250YWlucyBjb3JyZWN0ZWQgZ2VuZSBleHByZXNzaW9uIGRhdGEgKGBmYXN0bW5uX2NvcnJlY3RlZGAgYXNzYXkpIGFuZCBhIGNvcnJlY3RlZCBVTUFQLgpBcyBhIHJlbWluZGVyLCB0aGUgdW5jb3JyZWN0ZWQgZ2VuZSBleHByZXNzaW9uIGRhdGEsIGZvdW5kIGluIHRoZSBgY291bnRzYCBhbmQgYGxvZ2NvdW50c2AgYXNzYXlzLCBjb3JyZXNwb25kIHRvIGRhdGEgdGhhdCBoYXMgYmVlbiBtZXJnZWQgKHRoZSBmaXJzdCBzdGVwIHdlIHdhbGtlZCB0aHJvdWdoIHByaW9yIHRvIGludGVncmF0aW9uKSBpbnRvIHRoZSBzYW1lIFNDRSBidXQgbm90IHlldCBpbnRlZ3JhdGVkLgpXZSBkbyBub3Qgd2FudCB0byB1c2UgY29ycmVjdGVkIGdlbmUgZXhwcmVzc2lvbiB2YWx1ZXMgZm9yIGRpZmZlcmVudGlhbCBleHByZXNzaW9uOyBgREVTZXEyYCBleHBlY3RzIHRoZSBvcmlnaW5hbCByYXcgY291bnRzIGFzIGlucHV0IHNvIHdlIHdpbGwgYmUgdXNpbmcgZGF0YSBmb3VuZCBpbiB0aGUgYGNvdW50c2AgYXNzYXkgb2YgdGhlIGBTaW5nbGVDZWxsRXhwZXJpbWVudGAgb2JqZWN0LgoKSXQgaXMgYWR2aXNlZCB0byBvbmx5IHVzZSB0aGUgY29ycmVjdGVkIHZhbHVlcyBmb3IgYW55IGFuYWx5c2VzIGJlaW5nIHBlcmZvcm1lZCBhdCB0aGUgY2VsbCBsZXZlbCwgZS5nLiwgZGltZW5zaW9uYWxpdHkgcmVkdWN0aW9uLgpJbiBjb250cmFzdCwgaXQgaXMgbm90IGFkdmlzZWQgdG8gdXNlIGNvcnJlY3RlZCB2YWx1ZXMgZm9yIGFueSBhbmFseXNlcyB0aGF0IGFyZSBnZW5lLWJhc2VkLCBzdWNoIGFzIGRpZmZlcmVudGlhbCBleHByZXNzaW9uIG9yIG1hcmtlciBnZW5lIGRldGVjdGlvbiwgYmVjYXVzZSB3aXRoaW4tYmF0Y2ggYW5kIGJldHdlZW4tYmF0Y2ggZ2VuZSBleHByZXNzaW9uIGRpZmZlcmVuY2VzIGFyZSBubyBsb25nZXIgcHJlc2VydmVkLgpUaGUgcmVhc29uIGZvciB0aGlzIGlzIHR3by1mb2xkIOKAkyBtYW55IG9mIHRoZSBERSBtb2RlbHMgd2lsbCBleHBlY3QgdW5jb3JyZWN0ZWQgY291bnRzIGJlY2F1c2UgdGhleSB3aWxsIGFjY291bnQgZm9yIGJldHdlZW4tc2FtcGxlIHZhcmlhdGlvbiB3aXRoaW4gdGhlIG1vZGVsLCBhbmQgd2Ugd2FudCB0byBlbnN1cmUgd2UgYXJlIHByZXNlcnZpbmcgdmFyaWF0aW9uIHRoYXQgaXMgcHJlc2VudCBzbyBhcyBub3QgdG8gYXJ0aWZpY2lhbGx5IGluZmxhdGUgZGlmZmVyZW5jZXMgYmV0d2VlbiBwb3B1bGF0aW9ucy4KU2VlIHRoZSBbT1NDQSBjaGFwdGVyIG9uIFVzaW5nIHRoZSBjb3JyZWN0ZWQgdmFsdWVzXShodHRwczovL2Jpb2NvbmR1Y3Rvci5vcmcvYm9va3MvMy4xOS9PU0NBLm11bHRpc2FtcGxlL3VzaW5nLWNvcnJlY3RlZC12YWx1ZXMuaHRtbCN1c2luZy1jb3JyZWN0ZWQtdmFsdWVzKSBmb3IgbW9yZSBpbnNpZ2h0LgoKIyMjIFBzZXVkby1idWxraW5nCgpCZWZvcmUgd2UgY2FuIGNvbXBhcmUgdGhlIGdlbmUgZXhwcmVzc2lvbiBwcm9maWxlcyBvZiBteW9ibGFzdHMgaW4gQVJNUyB2cy4gRVJNUyBzYW1wbGVzLCB3ZSB3aWxsIG5lZWQgdG8gInBzZXVkby1idWxrIiB0aGUgZ2VuZSBjb3VudHMuClBzZXVkby1idWxraW5nIGNyZWF0ZXMgYSBuZXcgY291bnRzIG1hdHJpeCB0aGF0IGNvbnRhaW5zIHRoZSBzdW0gb2YgdGhlIGNvdW50cyBmcm9tIGFsbCBjZWxscyB3aXRoIGEgZ2l2ZW4gbGFiZWwgKGUuZy4sIGNlbGwgdHlwZSkgZm9yIGVhY2ggc2FtcGxlIChbVHVuZyBfZXQgYWwuXyAyMDE3XShodHRwczovL2RvaS5vcmcvMTAuMTAzOC9zcmVwMzk5MjEpKS4KSWYgd2Ugd2VyZSB0byBrZWVwIGVhY2ggY2VsbCdzIGNvdW50cyBzZXBhcmF0ZSwgdGhleSB3b3VsZCBiZSB0cmVhdGVkIGFzIHJlcGxpY2F0ZXMsIGxlYWRpbmcgdG8gaW5mbGF0ZWQgc3RhdGlzdGljcy4KQnkgcHNldWRvLWJ1bGtpbmcgZmlyc3QsIHdlIHdpbGwgbm93IGhhdmUgb25lIGNvdW50IGZvciBlYWNoIGdlbmUgZm9yIGVhY2ggc2FtcGxlIGFuZCB3ZSBjYW4gdGFrZSBhZHZhbnRhZ2Ugb2Ygd2VsbC1lc3RhYmxpc2hlZCBtZXRob2RzIGZvciBkaWZmZXJlbnRpYWwgZXhwcmVzc2lvbiB3aXRoIGJ1bGsgUk5BLXNlcS4KClBzZXVkby1idWxraW5nIGlzIGltcGxlbWVudGVkIHByaW9yIHRvIGRpZmZlcmVudGlhbCBleHByZXNzaW9uIGFuYWx5c2lzIG9uIHNpbmdsZS1jZWxsIGRhdGEgYmVjYXVzZSBpdDoKCi0gUHJvZHVjZXMgbGFyZ2VyIGFuZCBsZXNzIHNwYXJzZSBjb3VudHMsIHdoaWNoIGFsbG93cyB1cyB0byB1c2Ugc3RhbmRhcmQgbm9ybWFsaXphdGlvbiBhbmQgZGlmZmVyZW50aWFsIGV4cHJlc3Npb24gbWV0aG9kcyB1c2VkIGJ5IGJ1bGsgUk5BLXNlcS4KLSBDb2xsYXBzZXMgZ2VuZSBleHByZXNzaW9uIGNvdW50cyBieSBzYW1wbGUsIHNvIHRoYXQgc2FtcGxlcywgcmF0aGVyIHRoYW4gY2VsbHMsIHJlcHJlc2VudCByZXBsaWNhdGVzLgotIE1hc2tzIHZhcmlhbmNlIHdpdGhpbiBhIHNhbXBsZSB0byBlbXBoYXNpemUgdmFyaWFuY2UgYWNyb3NzIHNhbXBsZXMuClRoaXMgY2FuIGJlIGJvdGggZ29vZCBhbmQgYmFkIQpNYXNraW5nIGludHJhLXNhbXBsZSB2YXJpYXRpb24gbWVhbnMgeW91IG1pZ2h0IG5vdCBpZGVudGlmeSBnZW5lcyB3aGVyZSBhdmVyYWdlIGV4cHJlc3Npb24gZG9lc24ndCBjaGFuZ2UgYmV0d2VlbiBzYW1wbGVzIGJ1dCB0aGUgZGVncmVlIG9mIGNlbGwtdG8tY2VsbCB2YXJpYXRpb24gZG9lcy4KCkJlZm9yZSB3ZSBhcHBseSBwc2V1ZG8tYnVsa2luZyB0byBvdXIgZGF0YXNldCwgbGV0J3MgbG9vayBhdCBhIHNpbXBsZSBleGFtcGxlIG9mIGhvdyBwc2V1ZG8tYnVsa2luZyB3b3Jrcy4KV2UnbGwgc3RhcnQgYnkgY3JlYXRpbmcgYSBmYWtlIG1hdHJpeCBvZiBjb3VudHMuCgpgYGB7ciBjcmVhdGUgbWF0cml4fQojIGNyZWF0ZSBhbiBleGFtcGxlIGNvdW50cyBtYXRyaXgKY291bnRzX210eCA8LSBtYXRyaXgoCiAgMToxMiwKICBuY29sID0gNCwKICBkaW1uYW1lcyA9IGxpc3QoCiAgICBjKCJnZW5lQSIsICJnZW5lQiIsICJnZW5lQyIpLAogICAgYygiQS1jZWxsMSIsICJBLWNlbGwyIiwgIkItY2VsbDEiLCAiQi1jZWxsMiIpCiAgKQopCmNvdW50c19tdHgKYGBgCgpOZXh0IHdlIHdpbGwgY3JlYXRlIGEgcHNldWRvLWJ1bGtlZCB2ZXJzaW9uIG9mIHRoaXMgbWF0cml4IHdpdGggb25seSAyIGNvbHVtbnM6IDEgZm9yIGdyb3VwIGBBYCBhbmQgMSBmb3IgZ3JvdXAgYEJgLgpUbyBkbyB0aGlzIHdlIHdpbGwgdXNlIHRoZSBgRGVsYXllZEFycmF5Ojpjb2xzdW0oKWAgZnVuY3Rpb24sIHdoaWNoIGFsbG93cyB1cyB0byBzdW0gdGhlIGNvdW50cyBmb3IgZWFjaCByb3cgYWNyb3NzIGdyb3VwcyBvZiBjb2x1bW5zLgoKYGBge3IgcHNldWRvYnVsayBtYXRyaXgsIGxpdmU9VFJVRX0KIyBkZWZpbmUgdGhlIGdyb3VwIHRoYXQgZWFjaCBjb2x1bW4gYmVsb25ncyB0bwpncm91cHMgPC0gYygiQSIsICJBIiwgIkIiLCAiQiIpCgojIHN1bSBjb3VudHMgYWNyb3NzIGNlbGxzIChjb2x1bW5zKSBieSBncm91cCBsYWJlbApwYl9jb3VudHMgPC0gRGVsYXllZEFycmF5Ojpjb2xzdW0oY291bnRzX210eCwgZ3JvdXBzKQpwYl9jb3VudHMKYGBgCgpMb29raW5nIGF0IHRoaXMgb3V0cHV0LCB5b3Ugc2hvdWxkIHNlZSB0aGF0IHRoZSBvcmlnaW5hbCA0IGNvbHVtbnMgaGF2ZSBiZWVuIGNvbmRlbnNlZCB0byBvbmx5IDIgY29sdW1uczogMSBjb2x1bW4gdG8gcmVwcmVzZW50IGFsbCBjZWxscyBmcm9tIGdyb3VwIGBBYCwgYW5kIDEgY29sdW1uIHRvIHJlcHJlc2VudCBhbGwgY2VsbHMgZnJvbSBncm91cCBgQmAuCgpOb3cgdGhlIGFjdHVhbCBwc2V1ZG8tYnVsa2luZyBmb3Igb3VyIGRhdGFzZXQhCgpXZSB3aWxsIHVzZSB0aGUgW2BzY3V0dGxlOjphZ2dyZWdhdGVBY3Jvc3NDZWxscygpYCBmdW5jdGlvbl0oaHR0cHM6Ly9yZHJyLmlvL2dpdGh1Yi9MVExBL3NjdXR0bGUvbWFuL2FnZ3JlZ2F0ZUFjcm9zc0NlbGxzLmh0bWwpIHRvIHBzZXVkby1idWxrIG91ciBkYXRhc2V0LgpUaGlzIGZ1bmN0aW9uIHRha2VzIGFzIGlucHV0IGFuIFNDRSBvYmplY3QgYW5kIHRoZSBncm91cGluZyBhc3NpZ25tZW50cyBmb3IgZWFjaCBjZWxsLgpUaGUgb3V0cHV0IHdpbGwgYmUgYW4gU0NFIG9iamVjdCB0aGF0IGNvbnRhaW5zIG9ubHkgdGhlIHBzZXVkby1idWxrZWQgY291bnRzIGZvciBhbGwgZ2VuZXMgYWNyb3NzIGFsbCBzcGVjaWZpZWQgZ3JvdXBzLCByYXRoZXIgdGhhbiBhY3Jvc3MgYWxsIGNlbGxzLgpXZSBjYW4gdGhlbiBzdWJzZXQgdGhpcyBTQ0UgdG8ganVzdCBpbmNsdWRlIG91ciBjZWxsIHR5cGUgb2YgaW50ZXJlc3QgKHR1bW9yIG15b2JsYXN0cykgZm9yIGlucHV0IHRvIHRoZSBERSBhbmFseXNpcy4KCldlIGNhbiBwc2V1ZG8tYnVsayB1c2luZyBhbnkgZ3JvdXBpbmcgdGhhdCB3ZSBhcmUgaW50ZXJlc3RlZCBpbi4KRm9yIHJpZ2h0IG5vdywgd2UgYXJlIGludGVyZXN0ZWQgaW4gbG9va2luZyBhdCBnZW5lIGV4cHJlc3Npb24gYWNyb3NzIGNlbGwgdHlwZXMsIHNvIHdlIHdhbnQgdG8gZ3JvdXAgdGhlIHBzZXVkby1idWxrZWQgY291bnRzIG1hdHJpeCBieSBib3RoIGNlbGwgdHlwZSBhbmQgb3JpZ2luYWwgc2FtcGxlLgoKYGBge3IgcHNldWRvYnVsayBzY2V9CiMgZmlyc3Qgc3Vic2V0IHRoZSBjb2xkYXRhCiMgdG8gb25seSBoYXZlIHRoZSBjb2x1bW5zIHdlIGNhcmUgYWJvdXQgZm9yIHBzZXVkby1idWxraW5nCnBiX2dyb3VwcyA8LSBjb2xEYXRhKHJtc19zY2UpWywgYygiY2VsbHR5cGVfYnJvYWQiLCAic2FtcGxlIildCgojIGNyZWF0ZSBhIG5ldyBTQ0Ugb2JqZWN0IHRoYXQgY29udGFpbnMKIyB0aGUgcHNldWRvLWJ1bGtlZCBjb3VudHMgYWNyb3NzIHRoZSBwcm92aWRlZCBncm91cHMKcGJfc2NlIDwtIHNjdXR0bGU6OmFnZ3JlZ2F0ZUFjcm9zc0NlbGxzKAogIHJtc19zY2UsCiAgaWQgPSBwYl9ncm91cHMKKQoKIyBjb2x1bW4gbmFtZXMgYXJlbid0IGF1dG9tYXRpY2FsbHkgYWRkZWQgdG8gdGhlIHBzZXVkby1idWxrZWQgc2NlLAojIHNvIGxldCdzIGFkZCB0aGVtIGluCmNvbG5hbWVzKHBiX3NjZSkgPC0gZ2x1ZTo6Z2x1ZSgKICAie3BiX3NjZSRjZWxsdHlwZV9icm9hZH1fe3BiX3NjZSRzYW1wbGV9IgopCgpwYl9zY2UKYGBgCgpIb3cgZG9lcyB0aGUgbmV3IHBzZXVkby1idWxrZWQgYFNpbmdsZUNlbGxFeHBlcmltZW50YCBsb29rIGRpZmZlcmVudD8KSG93IG1hbnkgY29sdW1ucyBkb2VzIGl0IGhhdmU/CgpMZXQncyB0YWtlIGEgbG9vayBhdCB3aGF0IHRoZSBgY29sRGF0YWAgbG9va3MgbGlrZSBpbiB0aGUgcHNldWRvLWJ1bGtlZCBTQ0Ugb2JqZWN0LgoKYGBge3IgcHNldWRvYnVsayBjb2xEYXRhLCBsaXZlPVRSVUV9CiMgbm90ZSB0aGUgbmV3IGNvbHVtbiB3aXRoIG51bWJlciBvZiBjZWxscyBwZXIgZ3JvdXAKaGVhZChjb2xEYXRhKHBiX3NjZSkpIHw+CiAgYXMuZGF0YS5mcmFtZSgpCmBgYAoKWW91IHNob3VsZCBzZWUgdGhhdCBjb2x1bW5zIHN1Y2ggYXMgYHN1bWAsIGBkZXRlY3RlZGAsIGBzdWJzZXRzX21pdG9fc3VtYCwgYW5kIG90aGVyIGNvbHVtbnMgdGhhdCB0eXBpY2FsbHkgY29udGFpbiBwZXIgY2VsbCBRQyBzdGF0aXN0aWNzIG5vdyBjb250YWluIGBOQWAgcmF0aGVyIHRoYW4gbnVtZXJpYyB2YWx1ZXMuClRoaXMgaXMgYmVjYXVzZSB0aGVzZSB2YWx1ZXMgd2VyZSBpbml0aWFsbHkgY2FsY3VsYXRlZCBvbiBhIHBlciBjZWxsIGxldmVsICh3ZSBkaWQgdGhpcyB1c2luZyBgc2N1dHRsZTo6YWRkUGVyQ2VsbFFDTWV0cmljcygpYCksIGJ1dCB3ZSBubyBsb25nZXIgaGF2ZSBhIHNpbmdsZSBjb2x1bW4gcGVyIGNlbGwuCkluc3RlYWQsIGVhY2ggY29sdW1uIG5vdyByZXByZXNlbnRzIGEgX2dyb3VwXyBvZiBjZWxscywgaW4gdGhpcyBjYXNlIGNvbXByaXNlZCBvZiBjZWxscyBvZiBhIGdpdmVuIGNlbGwgdHlwZSBhbmQgc2FtcGxlIGNvbWJpbmF0aW9uLgpUaGVyZWZvcmUsIHRoZSB2YWx1ZXMgdGhhdCB3ZSBjYWxjdWxhdGVkIG9uIGEgcGVyLWNlbGwgbGV2ZWwgYXJlIG5vIGxvbmdlciBhcHBsaWNhYmxlIHRvIHRoaXMgcHNldWRvLWJ1bGtlZCBTQ0Ugb2JqZWN0LgoKWW91IHNob3VsZCBhbHNvIHNlZSBhIG5ldyBjb2x1bW4gdGhhdCB3YXNuJ3QgcHJlc2VudCBwcmV2aW91c2x5LCB0aGUgYG5jZWxsc2AgY29sdW1uLgpUaGlzIGNvbHVtbiB3YXMgYWRkZWQgZHVyaW5nIHBzZXVkby1idWxraW5nIGFuZCBpbmRpY2F0ZXMgdGhlIHRvdGFsIG51bWJlciBvZiBjZWxscyB0aGF0IHdlcmUgc3VtbWVkIHRvZ2V0aGVyIHRvIGZvcm0gZWFjaCBjb2x1bW4gb2YgdGhlIFNDRSBvYmplY3QuCgpCZWZvcmUgd2UgcHJvY2VlZCB3ZSB3aWxsIHdhbnQgdG8gZmlsdGVyIG91dCBhbnkgY29sdW1ucyB0aGF0IGhhdmUgYSBsb3cgbnVtYmVyIG9mIGNlbGxzLgpBIGxvdyBudW1iZXIgb2YgY2VsbHMgd2lsbCB1c3VhbGx5IHJlc3VsdCBpbiBzbWFsbCBjb3VudHMgdGhhdCBjYW4gY2F1c2UgaXNzdWVzIHdpdGggdGhlIHN0YXRpc3RpY2FsIGFwcHJveGltYXRpb25zIG1hZGUgZHVyaW5nIGRpZmZlcmVudGlhbCBleHByZXNzaW9uIGFuYWx5c2lzLgpUaGlzIGlzIGVxdWl2YWxlbnQgdG8gZmlsdGVyaW5nIG91dCBhbnkgbGlicmFyaWVzIGluIGJ1bGsgUk5BLXNlcSBhbmFseXNpcyB0aGF0IGhhdmUgbG93IGxpYnJhcnkgc2l6ZXMuCgpXZSBjYW4gc2V0IGEgdGhyZXNob2xkIGZvciB0aGUgbnVtYmVyIG9mIGNlbGxzIHJlcXVpcmVkIHRvIGNvbnRpbnVlIHdpdGggb3VyIGFuYWx5c2lzIGFuZCByZW1vdmUgYW55IGdyb3VwcyB0aGF0IGRvIG5vdCBtZWV0IHRoZSBtaW5pbXVtIHRocmVzaG9sZC4KSGVyZSB3ZSB3aWxsIHVzZSAxMCwgYnV0IHRoZSB0aHJlc2hvbGQgeW91IHVzZSBmb3IgeW91ciBkYXRhc2V0IGNhbiB2YXJ5IGRlcGVuZGluZyBvbiB0aGUgY29tcG9zaXRpb24gb2YgY2VsbCB0eXBlcy4KCmBgYHtyIGZpbHRlciBwc2V1ZG9idWxrLCBsaXZlPVRSVUV9CiMgcmVtb3ZlIGFueSBncm91cHMgd2l0aCBmZXdlciB0aGFuIDEwIGNlbGxzCmZpbHRlcl9wYl9zY2UgPC0gcGJfc2NlWywgcGJfc2NlJG5jZWxscyA+PSAxMF0KYGBgCgpXZSBjYW4gdGhlbiB0YWtlIGEgbG9vayBhbmQgc2VlIGhvdyBtYW55IGNlbGwgdHlwZS1zYW1wbGUgY29sdW1ucyB3ZSByZW1vdmVkLCBpZiBhbnkuCgpgYGB7ciBwcmludCBkaW0sIGxpdmU9VFJVRX0KIyBwcmludCBvdXQgZGltZW5zaW9ucyBvZiB1bmZpbHRlcmVkIHBzZXVkb2J1bGsgc2NlCmRpbShwYl9zY2UpCgojIGRpbWVuc2lvbnMgb2YgZmlsdGVyZWQgcHNldWRvYnVsayBzY2UKZGltKGZpbHRlcl9wYl9zY2UpCmBgYAoKSXQgbG9va3MgbGlrZSB3ZSBvbmx5IGdvdCByaWQgb2Ygb25lIGdyb3VwLgpXZSBjYW4gZG8gYSBxdWljayBjaGVjayB0byBzZWUgd2hpY2ggZ3JvdXAgd2FzIHJlbW92ZWQgYnkgZmluZGluZyB3aGljaCBjb2x1bW4gaXMgbm8gbG9uZ2VyIHByZXNlbnQgaW4gdGhlIGZpbHRlcmVkIG9iamVjdC4KCmBgYHtyIHJlbW92ZWQgY29sdW1ucywgbGl2ZT1UUlVFfQojIGZpbmQgcmVtb3ZlZCBjb2x1bW5zCnJlbW92ZWRfY29scyA8LSAhKGNvbG5hbWVzKHBiX3NjZSkgJWluJSBjb2xuYW1lcyhmaWx0ZXJfcGJfc2NlKSkKCiMgcHJpbnQgb3V0IG1pc3NpbmcgY29sdW1ucwpjb2xuYW1lcyhwYl9zY2UpW3JlbW92ZWRfY29sc10KYGBgCgpUaGUgbGFzdCBzdGVwIHdlIHdhbnQgdG8gZG8gdG8gcHJlcGFyZSBvdXIgZGF0YXNldCBmb3IgREUgaXMgdG8gc3Vic2V0IHRoZSBwc2V1ZG8tYnVsa2VkIFNDRSBvYmplY3QgdG8gY29udGFpbiBvbmx5IHRoZSBjZWxsIHR5cGUgdGhhdCB3ZSBhcmUgaW50ZXJlc3RlZCBpbiBjb21wYXJpbmcgYWNyb3NzIHRoZSB0d28gUk1TIHN1YnR5cGVzLgpBcyBtZW50aW9uZWQgcHJldmlvdXNseSwgd2UgYXJlIHNwZWNpZmljYWxseSBpbnRlcmVzdGVkIGluIHRoZSBgVHVtb3JfTXlvYmxhc3RgIGNlbGwgdHlwZS4KCmBgYHtyIGZpbHRlciBjZWxsdHlwZX0KIyBsb2dpY2FsIHZlY3RvciBpbmRpY2F0aW5nIGlmIGNlbGxzIGFyZSB0dW1vciBteW9ibGFzdCBvciBub3QKbXlvYmxhc3RfY2VsbHMgPC0gZmlsdGVyX3BiX3NjZSRjZWxsdHlwZV9icm9hZCA9PSAiVHVtb3JfTXlvYmxhc3QiCgojIGNyZWF0ZSBhIG5ldyBzY2Ugd2l0aCBvbmx5IHRoZSB0dW1vciBteW9ibGFzdHMKdHVtb3JfbXlvYmxhc3Rfc2NlIDwtIGZpbHRlcl9wYl9zY2VbLCBteW9ibGFzdF9jZWxsc10KYGBgCgpBZnRlciBmaWx0ZXJpbmcgZm9yIG91ciBjZWxsIHR5cGUgb2YgaW50ZXJlc3Qgd2Ugc2hvdWxkIGhhdmUgYSBkYXRhc2V0IHdpdGggNiBjb2x1bW5zLCAxIGZvciBlYWNoIGdyb3VwIG9mIGBUdW1vcl9NeW9ibGFzdGAgY2VsbHMgaW4gZWFjaCBvZiBvdXIgNiBzYW1wbGVzLgoKIyMjIFBlcmZvcm0gZGlmZmVyZW50aWFsIGV4cHJlc3Npb24gd2l0aCBgREVTZXEyYAoKTm93IHdlIHdpbGwgdXNlIHRoZSBgREVTZXEyYCBwYWNrYWdlIHRvIHBlcmZvcm0gZGlmZmVyZW50aWFsIGV4cHJlc3Npb24gKERFKSBhbmFseXNpcyBvbiBvdXIgcHNldWRvLWJ1bGtlZCBTQ0Ugb2JqZWN0LgpGcm9tIHRoaXMgcG9pbnQsIHdlIGNhbiBwcm9jZWVkIGluIHRoZSBzYW1lIHdheSB3ZSB3b3VsZCBpZiB3ZSBoYWQgYSBidWxrIFJOQS1zZXEgZGF0YXNldCB3aXRoIDYgc2FtcGxlcy4KV2Ugd2lsbCBzdGFydCB3aXRoIHRoZSB1bm5vcm1hbGl6ZWQgcmF3IGNvdW50cyBpbiB0aGUgYGNvdW50c2AgYXNzYXkgb2YgdGhlIHBzZXVkby1idWxrZWQgU0NFIGFuZCBkbyB0aGUgZm9sbG93aW5nIHdpdGggYERFU2VxMmA6CgotIENyZWF0ZSBhIGBERVNlcURhdGFTZXRgIG9iamVjdAotIE5vcm1hbGl6ZSBhbmQgbG9nIHRyYW5zZm9ybSB0aGUgY291bnRzIGRhdGEKLSBFc3RpbWF0ZSBkaXNwZXJzaW9ucyBhbmQgc2hyaW5rIGVzdGltYXRlcwotIEZpdCBhIG5lZ2F0aXZlIGJpbm9taWFsIG1vZGVsIGFuZCBwZXJmb3JtIGh5cG90aGVzaXMgdGVzdGluZyB1c2luZyBXYWxkIHN0YXRpc3RpY3MKCllvdSBjYW4gYWxzbyByZWZlciB0byBvdXIgW21hdGVyaWFscyBmcm9tIG91ciBwcmV2aW91cyB3b3Jrc2hvcHMgY292ZXJpbmcgYnVsayBSTkEtc2VxXShodHRwczovL2dpdGh1Yi5jb20vQWxleHNMZW1vbmFkZS90cmFpbmluZy1tb2R1bGVzL3RyZWUvbWFzdGVyL1JOQS1zZXEjcmVhZG1lKSBmb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiB1c2luZyBgREVTZXFgLgoKIyMjIyBDcmVhdGUgdGhlIGBERVNlcURhdGFTZXRgIG9iamVjdAoKVG8gY3JlYXRlIHRoZSBgREVTZXFEYXRhU2V0YCBvYmplY3Qgd2Ugd2lsbCBuZWVkIHRoZSB1bm5vcm1hbGl6ZWQgY291bnRzIG1hdHJpeCwgdGhlIG1ldGFkYXRhIGFzc29jaWF0ZWQgd2l0aCB0aGUgc2FtcGxlcywgYW5kIGEgZGVzaWduIGZvcm11bGEuClRoZSBmaXJzdCB0d28gaXRlbXMgYXJlIGFscmVhZHkgc3RvcmVkIGluIG91ciBTQ0Ugb2JqZWN0LCBzbyB3ZSBjYW4gY3JlYXRlIGEgYERFU2VxRGF0YVNldGAgb2JqZWN0IGRpcmVjdGx5IGZyb20gdGhhdCBvYmplY3QgdXNpbmcgdGhlIGBERVNlcURhdGFTZXQoKWAgZnVuY3Rpb24uClRoZSBkZXNpZ24gZm9ybXVsYSBpcyB1c2VkIHRvIGluZGljYXRlIHdoaWNoIGNvbHVtbnMgb2YgdGhlIG1ldGFkYXRhIG5lZWQgdG8gYmUgY29uc2lkZXJlZCBpbiB0aGUgREUgY29tcGFyaXNvbi4KRm9yIG91ciBleHBlcmltZW50IHdlIGFyZSBjb21wYXJpbmcgZ2VuZSBleHByZXNzaW9uIGJldHdlZW4gZGlmZmVyZW50IFJNUyBzdWJ0eXBlcy4KVGhlIHN1YnR5cGUgaW5mb3JtYXRpb24gaXMgc3RvcmVkIGluIHRoZSBgZGlhZ25vc2lzX2dyb3VwYCBjb2x1bW4gb2YgdGhlIGBjb2xEYXRhYCBpbiB0aGUgcHNldWRvLWJ1bGtlZCBTQ0UuCgpgYGB7ciBkZXNlcSBvYmplY3QsIGxpdmU9VFJVRX0KIyBzZXQgdXAgdGhlIGRlc2VxIG9iamVjdCwgZ3JvdXAgYnkgZGlhZ25vc2lzCmRlc2VxX29iamVjdCA8LSBERVNlcTI6OkRFU2VxRGF0YVNldCgKICB0dW1vcl9teW9ibGFzdF9zY2UsCiAgZGVzaWduID0gfmRpYWdub3Npc19ncm91cAopCmBgYAoKVGhlIHBzZXVkby1idWxrZWQgU0NFIG9iamVjdCBjb250YWlucyBvbmx5IG9uZSBhc3NheTogdGhlIGBjb3VudHNgIGFzc2F5LgpUaGlzIGlzIGJlY2F1c2UgYERFU2VxMmAgZXhwZWN0cyByYXcgY291bnRzLgpXaGVuIHdlIHJ1biBgREVTZXEyYCBvbiBvdXIgZGF0YXNldCwgcmF3IGNvdW50cyB3aWxsIGZpcnN0IGJlIG5vcm1hbGl6ZWQgdXNpbmcgc2l6ZSBmYWN0b3JzIHRvIGFjY291bnQgZm9yIGRpZmZlcmVuY2VzIGluIHRvdGFsIHNhbXBsZSBjb3VudHMuClRoZXJlZm9yZSB3ZSBkb24ndCBoYXZlIHRvIGRvIGFueSBub3JtYWxpemF0aW9uIG9uIG91ciBvd24g4oCTIHdlJ2xsIGxldCBgREVTZXEyYCBkbyBhbGwgdGhlIHdvcmsgZm9yIHVzLgoKSG93ZXZlciwgYmVmb3JlIHdlIGRpdmUgaW50byBERSBhbmFseXNpcywgd2UgY2FuIGRvIHNvbWUgaW5pdGlhbCBleHBsb3JhdGlvbiBhbmQgdmlzdWFsaXphdGlvbiBvZiBvdXIgZGF0YSB0byBzZWUgaWYgb3VyIHNhbXBsZXMgc2VwYXJhdGUgYnkgb3VyIGtub3duIGZhY3RvciBvZiBpbnRlcmVzdCwgUk1TIHN1YnR5cGUuCkluIHBhcnRpY3VsYXIsIHdlIGNhbiB1c2UgcHJpbmNpcGFsIGNvbXBvbmVudCBhbmFseXNpcyAoUENBKSBvZiBvdXIgcHNldWRvLWJ1bGtlZCBkYXRhc2V0IHRvIHZpc3VhbGl6ZSBhbnkgdmFyaWF0aW9uIGJldHdlZW4gc2FtcGxlcy4KSWYgdGhlcmUgaXMgdmFyaWF0aW9uIGJldHdlZW4gUk1TIHN1YnR5cGVzLCB3ZSBleHBlY3QgdGhlaXIgcmVzcGVjdGl2ZSBzYW1wbGVzIHRvIHNlcGFyYXRlIGluIFBDIHNwYWNlLCBsaWtlbHkgaW5kaWNhdGluZyBwcmVzZW5jZSBvZiBkaWZmZXJlbnRpYWxseSBleHByZXNzZWQgZ2VuZXMuCldlIGNhbiBldmFsdWF0ZSB0aGlzIGJ5IHBsb3R0aW5nIFBDMSBhbmQgUEMyLgoKSW4gb3JkZXIgdG8gY3JlYXRlIG91ciBQQ0EgcGxvdCwgd2Ugd2lsbCBmaXJzdCBuZWVkIHRvIG5vcm1hbGl6ZSBvdXIgZGF0YSB0byBhY2NvdW50IGZvciBhbnkgdGVjaG5pY2FsIHZhcmlhdGlvbnMgYWNyb3NzIHNhbXBsZXMuCkFzIGEgcmVtaW5kZXIsIHRoaXMgaXMgTk9UIHJlcXVpcmVkIGZvciBydW5uaW5nIGBERVNlcTJgIGFuYWx5c2lzOyB3ZSBhcmUganVzdCB1c2luZyBpdCB0byB2aXN1YWxpemUgb3VyIGRhdGEgcHJpb3IgdG8gREUgYW5hbHlzaXMuCgpgYGB7ciBub3JtYWxpemV9CiMgZXN0aW1hdGUgc2l6ZSBmYWN0b3JzIGZpcnN0CmRlc2VxX29iamVjdCA8LSBERVNlcTI6OmVzdGltYXRlU2l6ZUZhY3RvcnMoZGVzZXFfb2JqZWN0KQoKIyBub3JtYWxpemUgYW5kIGxvZyB0cmFuc2Zvcm0gdG8gdXNlIGZvciB2aXN1YWxpemF0aW9uCm5vcm1hbGl6ZWRfb2JqZWN0IDwtIERFU2VxMjo6cmxvZygKICBkZXNlcV9vYmplY3QsCiAgYmxpbmQgPSBUUlVFCikKbm9ybWFsaXplZF9vYmplY3QKYGBgCgpXZSBub3cgaGF2ZSBhIG5vcm1hbGl6ZWQgYW5kIHRyYW5zZm9ybWVkIG9iamVjdCB0aGF0IGNhbiBiZSBkaXJlY3RseSBpbnB1dCB0byB0aGUgYERFU2VxMjo6cGxvdFBDQSgpYCBmdW5jdGlvbiwgd2hpY2ggd2lsbCBib3RoIGNhbGN1bGF0ZSBhbmQgcGxvdCB0aGUgUEMgcmVzdWx0cy4KCmBgYHtyIHBsb3RQQ0EsIGxpdmU9VFJVRX0KREVTZXEyOjpwbG90UENBKG5vcm1hbGl6ZWRfb2JqZWN0LCBpbnRncm91cCA9ICJkaWFnbm9zaXNfZ3JvdXAiKQpgYGAKCkFzIGV4cGVjdGVkIHdlIHNlZSB0aGF0IHNhbXBsZXMgZ3JvdXAgdG9nZXRoZXIgYmFzZWQgb24gUk1TIHN1YnR5cGUgYW5kIGFyZSBzZXBhcmF0ZWQgYWxvbmcgdGhlIFBDMSBheGlzLCB0aGUgUEMgY29udHJpYnV0aW5nIHRoZSBoaWdoZXN0IGFtb3VudCBvZiB2YXJpYXRpb24uCgojIyMjIFJ1biBgREVTZXFgCgpXZSdsbCBub3cgdXNlIHRoZSBjb252ZW5pZW5jZSBmdW5jdGlvbiBgREVTZXEoKWAgdG8gcGVyZm9ybSBvdXIgZGlmZmVyZW50aWFsIGV4cHJlc3Npb24gYW5hbHlzaXMuClRoaXMgZnVuY3Rpb24gY2FsY3VsYXRlcyBub3JtYWxpemF0aW9uIGZhY3RvcnMsIGVzdGltYXRlcyBnZW5lLXdpc2UgZGlzcGVyc2lvbnMsIGZpdHMgYSBuZWdhdGl2ZSBiaW5vbWlhbCBtb2RlbCBhbmQgcGVyZm9ybXMgaHlwb3RoZXNpcyB0ZXN0aW5nIHVzaW5nIFdhbGQgc3RhdGlzdGljcy4KCmBgYHtyIGRlc2VxLCBsaXZlPVRSVUV9CiMgcnVuIERFU2VxCmRlc2VxX29iamVjdCA8LSBERVNlcTI6OkRFU2VxKGRlc2VxX29iamVjdCkKYGBgCgpXZSBjYW4gZXZhbHVhdGUgaG93IHdlbGwgdGhlIG1vZGVsIGZpdCBvdXIgZGF0YSBieSBsb29raW5nIGF0IHRoZSBkaXNwZXJzaW9uIGVzdGltYXRlcy4KV2UgZXhwZWN0IHRvIHNlZSB0aGUgZGlzcGVyc2lvbiBlc3RpbWF0ZXMgZGVjcmVhc2UgYXMgbWVhbnMgYXJlIGluY3JlYXNpbmcgYW5kIGZvbGxvdyB0aGUgbGluZSBvZiBiZXN0IGZpdC4KCmBgYHtyIHBsb3QgZGlzcGVyc2lvbiwgbGl2ZT1UUlVFfQpwbG90RGlzcEVzdHMoZGVzZXFfb2JqZWN0KQpgYGAKCk5vdyB3ZSBjYW4gZXh0cmFjdCB0aGUgcmVzdWx0cyBmcm9tIHRoZSBvYmplY3QsIHNwZWNpZnlpbmcgdGhlIHAtdmFsdWUgdGhyZXNob2xkIHRoYXQgd2Ugd291bGQgbGlrZSB0byB1c2UuCgpgYGB7ciByZXN1bHRzLCBsaXZlPVRSVUV9CiMgZXh0cmFjdCB0aGUgcmVzdWx0cyBhcyBhIERhdGFGcmFtZQpkZXNlcV9yZXN1bHRzIDwtIERFU2VxMjo6cmVzdWx0cyhkZXNlcV9vYmplY3QsIGFscGhhID0gMC4wNSkKYGBgCgpCdXQgd2UgYXJlbid0IGRvbmUgeWV0IQoKVGhlIGVzdGltYXRlcyBvZiBsb2cyIGZvbGQgY2hhbmdlIGNhbGN1bGF0ZWQgYnkgYERFU2VxKClgIGFyZSBub3QgY29ycmVjdGVkIGZvciBleHByZXNzaW9uIGxldmVsLgpUaGlzIG1lYW5zIHRoYXQgd2hlbiBjb3VudHMgYXJlIHNtYWxsLCB3ZSBhcmUgbGlrZWx5IHRvIGVuZCB1cCB3aXRoIHNvbWUgbGFyZ2UgZm9sZCBjaGFuZ2UgdmFsdWVzIHRoYXQgb3ZlcmVzdGltYXRlIHRoZSB0cnVlIGV4dGVudCBvZiB0aGUgY2hhbmdlIGJldHdlZW4gY29uZGl0aW9ucy4KCldlIGNhbiBjb3JyZWN0IHRoaXMgYnkgYXBwbHlpbmcgYSAic2hyaW5rYWdlIiBwcm9jZWR1cmUsIHdoaWNoIHdpbGwgYWRqdXN0IGxhcmdlIHZhbHVlcyB3aXRoIHNtYWxsIGNvdW50cyBkb3dud2FyZCwgd2hpbGUgcHJlc2VydmluZyB2YWx1ZXMgd2l0aCBsYXJnZXIgY291bnRzLCB3aGljaCBhcmUgbGlrZWx5IHRvIGJlIG1vcmUgYWNjdXJhdGUuCgpUbyBkbyB0aGlzLCB3ZSB3aWxsIHVzZSB0aGUgYGxmY1NocmluaygpYCBmdW5jdGlvbiwgYnV0IGZpcnN0IHdlIG5lZWQgdG8ga25vdyB0aGUgbmFtZSBhbmQvb3IgcG9zaXRpb24gb2YgdGhlICJjb2VmZmljaWVudCIgdGhhdCB3YXMgY2FsY3VsYXRlZCBieSBgREVTZXEoKWAsIHdoaWNoIHdlIGNhbiBkbyB3aXRoIHRoZSBgcmVzdWx0c05hbWVzKClgIGZ1bmN0aW9uLgoKYGBge3IgY29lZmZpY2llbnQsIGxpdmU9VFJVRX0KIyBpZGVudGlmeSBwb3NpdGlvbiBvZiBjb2VmZmljaWVudApERVNlcTI6OnJlc3VsdHNOYW1lcyhkZXNlcV9vYmplY3QpCmBgYAoKCmBgYHtyIHNocmlua2FnZX0KIyBhcHB5bHkgbG9nRkMgc2hyaW5rYWdlIHVzaW5nIHRoZSBkZWZhdWx0IG1vZGVsCnNocmlua19yZXN1bHRzIDwtIERFU2VxMjo6bGZjU2hyaW5rKAogIGRlc2VxX29iamVjdCwKICByZXMgPSBkZXNlcV9yZXN1bHRzLAogIGNvZWYgPSAyLAogIHR5cGUgPSAiYXBlZ2xtIgopCmhlYWQoc2hyaW5rX3Jlc3VsdHMpCmBgYAoKSWYgeW91IGxvb2sgYXQgb3VyIGBzaHJpbmtfcmVzdWx0c2Agb2JqZWN0LCB3ZSBzZWUgdGhhdCB0aGUgZ2VuZXMgYXJlIGxhYmVsZWQgd2l0aCB0aGUgRW5zZW1ibCBnZW5lIGlkZW50aWZpZXJzLCBhcyB0aG9zZSB3ZXJlIHRoZSByb3cgbmFtZXMgb2YgdGhlIHBzZXVkby1idWxrZWQgU0NFIHdlIHVzZWQgYXMgaW5wdXQgdG8gYnVpbGQgb3VyIGBERVNlcTJgIG9iamVjdC4KQWx0aG91Z2ggc29tZSBvZiB1cyBtYXkgaGF2ZSBhbGwgb2YgdGhlIGlkZW50aWZpZXJzIG1lbW9yaXplZCBieSBoZWFydCwgaXQgY2FuIGJlIHVzZWZ1bCB0byBoYXZlIGEgaHVtYW4gcmVhZGFibGUgc3ltYm9sIGluIG91ciByZXN1bHRzLgpCZWZvcmUgd2Ugc2F2ZSB0aGUgcmVzdWx0cyBhcyBhIGZpbGUsIHdlIHdpbGwgZ3JhYiB0aGUgZ2VuZSBzeW1ib2xzIGZyb20gdGhlIGByb3dEYXRhYCBvZiBvdXIgb3JpZ2luYWwgU0NFIG9iamVjdCBhbmQgYWRkIHRoZW0gYXMgYSBuZXcgY29sdW1uLgoKYGBge3IgYWRkIGdlbmUgc3ltYm9sfQpkZXNlcV9yZXN1bHRzIDwtIHNocmlua19yZXN1bHRzIHw+CiAgIyBkaXJlY3RseSBhZGQgRW5zZW1ibCBpZCBhcyBhIGNvbHVtbgogICMgY29udmVydGluZyByZXN1bHRzIGludG8gYSBkYXRhIGZyYW1lCiAgdGliYmxlOjphc190aWJibGUocm93bmFtZXMgPSAiZW5zZW1ibF9pZCIpCgojIGNvbnZlcnQgcm93ZGF0YSB0byBkYXRhIGZyYW1lCnNjZV9yb3dkYXRhX2RmIDwtIHJvd0RhdGEodHVtb3JfbXlvYmxhc3Rfc2NlKSB8PgogICMgY3JlYXRlIGEgY29sdW1uIHdpdGggcm93bmFtZXMgc3RvcmVkIGFzIGVuc2VtYmwgaWQKICAjIHVzZSBmb3Igam9pbmluZyB3aXRoIGRlc2VxIHJlc3VsdHMKICB0aWJibGU6OmFzX3RpYmJsZShyb3duYW1lcyA9ICJlbnNlbWJsX2lkIikKCiMgY29tYmluZSBkZXNlcSByZXN1bHRzIHdpdGggcm93ZGF0YSBieSBlbnNlbWJsIGlkCmRlc2VxX3Jlc3VsdHMgPC0gZGVzZXFfcmVzdWx0cyB8PgogIGRwbHlyOjpsZWZ0X2pvaW4oc2NlX3Jvd2RhdGFfZGYsIGJ5ID0gImVuc2VtYmxfaWQiKQoKaGVhZChkZXNlcV9yZXN1bHRzKQpgYGAKCldlIGNhbiBzYXZlIHRoZSBuZXcgZGF0YSBmcmFtZSB0aGF0IHdlIGhhdmUgY3JlYXRlZCB3aXRoIHRoZSBFbnNlbWJsIGlkZW50aWZpZXJzLCBnZW5lIHN5bWJvbHMsIGFuZCB0aGUgYERFU2VxMmAgcmVzdWx0cyBhcyBhIHRhYiBzZXBhcmF0ZWQgKGB0c3ZgKSBmaWxlLgoKYGBge3Igc2F2ZSBkZXNlcSwgbGl2ZT1UUlVFfQojIHNhdmUgb3VyIHJlc3VsdHMgYXMgdHN2CnJlYWRyOjp3cml0ZV90c3YoZGVzZXFfcmVzdWx0cywgZGVzZXFfb3V0cHV0X2ZpbGUpCmBgYAoKTmV4dCwgd2Ugd2lsbCB0YWtlIGEgbG9vayBhdCBob3cgbWFueSBnZW5lcyBhcmUgc2lnbmlmaWNhbnQuCkhlcmUgd2Ugd2lsbCB3YW50IHRvIHVzZSB0aGUgYWRqdXN0ZWQgcC12YWx1ZSwgZm91bmQgaW4gdGhlIGBwYWRqYCBjb2x1bW4gb2YgdGhlIHJlc3VsdHMsIGFzIHRoaXMgYWNjb3VudHMgZm9yIG11bHRpcGxlIHRlc3QgY29ycmVjdGlvbi4KCmBgYHtyIHNpZ25pZmljYW50IHJlc3VsdHMsIGxpdmU9VFJVRX0KIyBmaXJzdCBsb29rIGF0IHRoZSBzaWduaWZpY2FudCByZXN1bHRzCmRlc2VxX3Jlc3VsdHNfc2lnIDwtIGRlc2VxX3Jlc3VsdHMgfD4KICAjIGZpbHRlciBiYXNlZCBvbiBhZGp1c3RlZCBwdmFsdWUKICBkcGx5cjo6ZmlsdGVyKHBhZGogPD0gMC4wNSkKCmhlYWQoZGVzZXFfcmVzdWx0c19zaWcpCmBgYAoKCiMjIyBFeHBsb3JpbmcgdGhlIGlkZW50aWZpZWQgZGlmZmVyZW50aWFsbHkgZXhwcmVzc2VkIGdlbmVzCgpOb3cgdGhhdCB3ZSBoYXZlIGlkZW50aWZpZWQgYSBzZXQgb2YgZ2VuZXMgdGhhdCBhcmUgZGlmZmVyZW50aWFsbHkgZXhwcmVzc2VkIGluIHRoZSB0dW1vciBteW9ibGFzdHMgYmV0d2VlbiBBUk1TIGFuZCBFUk1TIHN1YnR5cGVzLCBsZXRzIGFjdHVhbGx5IHRha2UgYSBsb29rIGF0IHRoZW0gYW5kIHNlZSBpZiB3ZSBjYW4gbWFrZSBzb21lIGluZm9ybWF0aXZlIHBsb3RzLgpUaGUgZmlyc3QgcGxvdCB3ZSdsbCBtYWtlIGlzIGEgdm9sY2FubyBwbG90IHVzaW5nIHRoZSBbYEVuaGFuY2VkVm9sY2Fub2AgcGFja2FnZV0oaHR0cHM6Ly9naXRodWIuY29tL2tldmluYmxpZ2hlL0VuaGFuY2VkVm9sY2FubykuClRoaXMgcGFja2FnZSBhdXRvbWF0aWNhbGx5IGNvbG9ycyB0aGUgcG9pbnRzIGJ5IGN1dG9mZnMgZm9yIGJvdGggc2lnbmlmaWNhbmNlIGFuZCBmb2xkIGNoYW5nZSBhbmQgbGFiZWxzIG1hbnkgb2YgdGhlIHNpZ25pZmljYW50IGdlbmVzIChzdWJqZWN0IHRvIHNwYWNpbmcpLgpgRW5oYW5jZWRWb2xjYW5vYCBoYXMgbWFueSwgbWFueSBvcHRpb25zLCB3aGljaCBpcyBhIGdvb2QgdGhpbmcgaWYgeW91IGRvbid0IGxpa2UgYWxsIG9mIGl0cyBkZWZhdWx0IHNldHRpbmdzLgpFdmVuIGJldHRlciwgaXQgb3V0cHV0cyBhIGBnZ3Bsb3QyYCBvYmplY3QsIHNvIGlmIHdlIHdhbnQgdG8gY3VzdG9taXplIHRoZSBwbG90IGZ1cnRoZXIsIHdlIGNhbiB1c2UgdGhlIHNhbWUgYGdncGxvdDJgIGNvbW1hbmRzIHdlIGhhdmUgdXNlZCBiZWZvcmUuCgpgYGB7ciB2b2xjYW5vfQpFbmhhbmNlZFZvbGNhbm86OkVuaGFuY2VkVm9sY2FubygKICBkZXNlcV9yZXN1bHRzLAogIHggPSAibG9nMkZvbGRDaGFuZ2UiLCAjIGZvbGQgY2hhbmdlIHN0YXRpc3RpYyB0byBwbG90CiAgeSA9ICJwdmFsdWUiLCAjIHNpZ25pZmljYW5jZSB2YWx1ZXMKICBsYWIgPSBkZXNlcV9yZXN1bHRzJGdlbmVfc3ltYm9sLCAjIGxhYmVscyBmb3IgcG9pbnRzCiAgcEN1dG9mZiA9IDFlLTA1LCAjIHAgdmFsdWUgY3V0b2ZmIChkZWZhdWx0KQogIEZDY3V0b2ZmID0gMSwgIyBmb2xkIGNoYW5nZSBjdXRvZmYgKGRlZmF1bHQpCiAgdGl0bGUgPSBOVUxMLCAjIG5vIHRpdGxlCiAgc3VidGl0bGUgPSBOVUxMLCAjIG9yIHN1YnRpdGxlCiAgY2FwdGlvbiA9IE5VTEwsICMgb3IgY2FwdGlvbgogIGRyYXdDb25uZWN0b3JzID0gVFJVRSwgIyBhZGQgc29tZSBmdW4gYXJyb3dzCiAgbGFiU2l6ZSA9IDMgIyBzbWFsbGVyIGxhYmVscwopICsKICAjIGNoYW5nZSB0aGUgb3ZlcmFsbCB0aGVtZQogIHRoZW1lX2J3KCkgKwogICMgbW92ZSB0aGUgbGVnZW5kIHRvIHRoZSBib3R0b20KICB0aGVtZShsZWdlbmQucG9zaXRpb24gPSAiYm90dG9tIikKYGBgCgoKV2UgY2FuIGFsc28gcmV0dXJuIGJhY2sgdG8gdGhlIFNDRSBvYmplY3QgdGhhdCB3ZSB1c2VkIHRvIGNyZWF0ZSBvdXIgcHNldWRvLWJ1bGtlZCBTQ0UgYW5kIGxvb2sgYXQgZ2VuZSBleHByZXNzaW9uIG9mIHNvbWUgb2YgdGhlIHNpZ25pZmljYW50IGdlbmVzLgpXZSBjYW4gY3JlYXRlIFVNQVAgcGxvdHMgYXMgd2UgZGlkIHByZXZpb3VzbHksIGJ1dCBpbnN0ZWFkIG9mIGxhYmVsaW5nIGVhY2ggY2VsbCB3aXRoIG1ldGFkYXRhLCB3ZSBjYW4gY29sb3IgY2VsbHMgYnkgYSBzcGVjaWZpZWQgZ2VuZSdzIGV4cHJlc3Npb24gbGV2ZWxzLgpXZSB3aWxsIGFsc28gdXNlIHNvbWUgb2YgdGhlIGBnZ3Bsb3QyYCBza2lsbHMgd2UgcGlja2VkIHVwIGVhcmxpZXIsIGxpa2UgYGZhY2V0X2dyaWQoKWAgdG8gcGxvdCBjZWxscyBmcm9tIGRpZmZlcmVudCBSTVMgc3VidHlwZXMgc2VwYXJhdGVseS4KVGhpcyBjYW4gaGVscCB1cyB2YWxpZGF0ZSB0aGUgYERFU2VxMmAgcmVzdWx0cyBzbyB0aGF0IHdlIGNhbiB2aXN1YWxpemUgZ2VuZSBleHByZXNzaW9uIGNoYW5nZXMgYWNyb3NzIG91ciBjZWxsIHR5cGUgb2YgaW50ZXJlc3Qgb24gYSBzaW5nbGUtY2VsbCBsZXZlbC4KCmBgYHtyIGV4cHJlc3Npb24gdW1hcCwgbGl2ZT1UUlVFfQojIGZpbHRlciB0byBqdXN0IG15b2JsYXN0IGNlbGxzIGFuZCByZW1vdmUgYW55IE5BJ3MgYmVmb3JlIHBsb3R0aW5nCm15b2JsYXN0X2NvbWJpbmVkX3NjZSA8LSBybXNfc2NlWywgd2hpY2gocm1zX3NjZSRjZWxsdHlwZV9icm9hZCA9PSAiVHVtb3JfTXlvYmxhc3QiKV0KCiMgcGxvdCBQVFBSVCAoRU5TRzAwMDAwMTk2MDkwKSBleHByZXNzaW9uIGluIEFSTVMgdnMuIEVSTVMKc2NhdGVyOjpwbG90UmVkdWNlZERpbSgKICBteW9ibGFzdF9jb21iaW5lZF9zY2UsCiAgZGltcmVkID0gImZhc3Rtbm5fVU1BUCIsCiAgY29sb3JfYnkgPSAiRU5TRzAwMDAwMTk2MDkwIiwgIyBQVFBSVAogIHBvaW50X3NpemUgPSAwLjUsCiAgcG9pbnRfYWxwaGEgPSAwLjQsCiAgb3RoZXJfZmllbGRzID0gImRpYWdub3Npc19ncm91cCIKKSArCiAgZmFjZXRfZ3JpZChjb2xzID0gdmFycyhkaWFnbm9zaXNfZ3JvdXApKQpgYGAKCkluIHRoZSBhYm92ZSBwbG90IHdlIG9ubHkgcGxvdHRlZCB0aGUgdHVtb3IgbXlvYmxhc3QgY2VsbHMgdGhhdCB3ZSB1c2VkIGluIG91ciBERSBhbmFseXNpcy4KSG93ZXZlciwgd2UgbWlnaHQgYmUgaW50ZXJlc3RlZCB0byBzZWUgdGhlIGV4cHJlc3Npb24gb2YgZ2VuZXMgdGhhdCBhcmUgZGlmZmVyZW50aWFsbHkgZXhwcmVzc2VkIGluIG90aGVyIGNlbGwgdHlwZXMgcHJlc2VudCBpbiBvdXIgc2FtcGxlcy4KCmBgYHtyIGNlbGx0eXBlIGNvbXBhcmlzb259CiMgbGV0J3MgY29tcGFyZSBnZW5lIGV4cHJlc3Npb24gYWNyb3NzIHNvbWUgb3RoZXIgY2VsbCB0eXBlcwojIGxvb2sgYXQgYWxsIHR1bW9yIGNlbGxzIGFuZCBwaWNrIG9uZSBub3JtYWwgY2VsbCB0eXBlCmNlbGx0eXBlcyA8LSBjKAogICJUdW1vcl9NeW9ibGFzdCIsCiAgIlR1bW9yX01lc29kZXJtIiwKICAiVHVtb3JfTXlvY3l0ZSIsCiAgIlZhc2N1bGFyIEVuZG90aGVsaXVtIgopCgojIHN1YnNldCB0byBqdXN0IGNlbGx0eXBlcyB0aGF0IHdlIGFyZSBpbnRlcmVzdGVkIGluCnR1bW9yX3NjZSA8LSBybXNfc2NlWywgd2hpY2gocm1zX3NjZSRjZWxsdHlwZV9icm9hZCAlaW4lIGNlbGx0eXBlcyldCmBgYAoKTmV4dCB3ZSB3aWxsIGxvb2sgYXQgYSBmZXcgREUgZ2VuZXMgdGhhdCB3ZSBpZGVudGlmaWVkLCBvbmUgdXAgcmVndWxhdGVkIGdlbmUgYW5kIG9uZSBkb3duIHJlZ3VsYXRlZCBnZW5lLCBhbmQgY29tcGFyZSB0aGVpciBleHByZXNzaW9uIGluIG15b2JsYXN0cyB0byBvdGhlciBjZWxsIHR5cGVzIGluIEFSTVMgYW5kIEVSTVMgc2FtcGxlcy4KV2Ugd2lsbCB1c2UgdGhlIGBzY2F0ZXI6OnBsb3RFeHByZXNzaW9uKClgIGZ1bmN0aW9uIHRvIGNyZWF0ZSBhIHZpb2xpbiBwbG90IHdpdGggUk1TIHN1YnR5cGUgb24gdGhlIHgtYXhpcyBhbmQgZ2VuZSBleHByZXNzaW9uIG9uIHRoZSB5LWF4aXMuCldlIGNhbiBjb250aW51ZSB1c2luZyBgZmFjZXRfZ3JpZCgpYCB0byBzaG93IHNlcGFyYXRlIHBhbmVscyBmb3IgZWFjaCBjZWxsIHR5cGUuCkJlY2F1c2Ugd2Ugd2FudCB0byBzaG93IG11bHRpcGxlIGdlbmVzIGhlcmUsIHdlIGFyZSBnb2luZyB0byBhZGQgYW4gYWRkaXRpb25hbCBvcHRpb24gdG8gYGZhY2V0X2dyaWQoKWAgdG8gaW5jbHVkZSBtdWx0aXBsZSByb3dzIGluIG91ciBwbG90IGdyaWQsIG9uZSBmb3IgZWFjaCBnZW5lIG9mIGludGVyZXN0LgpPbmUgbmVhdCB0cmljayBvZiB0aGUgYHNjYXRlcjo6cGxvdEV4cHJlc3Npb24oKWAgZnVuY3Rpb24gaXMgdGhhdCBpdCBhY3R1YWxseSBjcmVhdGVzIGEgYEZlYXR1cmVgIGNvbHVtbiB3aGljaCBjb3JyZXNwb25kcyB0byB0aGUgZmVhdHVyZXMgKGluIHRoaXMgY2FzZSBnZW5lcykgYmVpbmcgdXNlZCBpbiBwbG90dGluZy4KV2UgY2FuIHRoZW4gZGlyZWN0bHkgcmVmZXJlbmNlIHRoYXQgYEZlYXR1cmVgIGNvbHVtbiB3aGVuIHBsb3R0aW5nLCBpbnN0ZWFkIG9mIHVzaW5nIHRoZSBgb3RoZXJfZmllbGRzYCBvcHRpb24gd2UgdXNlZCBwcmV2aW91c2x5LgoKYGBge3IgbXVsdGktZ2VuZSBwbG90fQojIHBpY2sgYSBjb3VwbGUgZ2VuZXMgdG8gbG9vayBhdApnZW5lc190b19wbG90IDwtIGMoCiAgIkVOU0cwMDAwMDE5NjA5MCIsICMgUFRQUlQKICAiRU5TRzAwMDAwMTQ4OTM1IgopICMgR0FTMgoKIyBjcmVhdGUgYSB2aW9saW4gcGxvdApzY2F0ZXI6OnBsb3RFeHByZXNzaW9uKAogIHR1bW9yX3NjZSwKICAjIGEgdmVjdG9yIG9mIGdlbmVzIHRvIHBsb3QKICBmZWF0dXJlcyA9IGdlbmVzX3RvX3Bsb3QsCiAgeCA9ICJkaWFnbm9zaXNfZ3JvdXAiLAogIGNvbG9yX2J5ID0gImRpYWdub3Npc19ncm91cCIsCiAgb3RoZXJfZmllbGRzID0gImNlbGx0eXBlX2Jyb2FkIiwKICBwb2ludF9zaXplID0gMC4xCikgKwogICMgZWFjaCBjZWxsdHlwZSBpcyBpdHMgb3duIGNvbHVtbgogIGZhY2V0X2dyaWQoCiAgICBjb2xzID0gdmFycyhjZWxsdHlwZV9icm9hZCksCiAgICAjIGVhY2ggZmVhdHVyZSAoZ2VuZSkgaXMgaXRzIG93biByb3cKICAgIHJvd3MgPSB2YXJzKEZlYXR1cmUpCiAgKSArCiAgIyBjaGFuZ2UgdGhlIGZvbnQgc2l6ZSBvZiB0aGUgZmFjZXQgbGFiZWxzCiAgdGhlbWUoc3RyaXAudGV4dCA9IGVsZW1lbnRfdGV4dChzaXplID0gNykpICsKICBndWlkZXMoCiAgICBjb2xvciA9IGd1aWRlX2xlZ2VuZCgKICAgICAgIyB1cGRhdGUgdGhlIGxlZ2VuZCB0aXRsZQogICAgICB0aXRsZSA9ICJTdWJ0eXBlIiwKICAgICAgIyBjaGFuZ2UgdGhlIHNpemUgb2YgdGhlIGxlZ2VuZCBjb2xvcnMKICAgICAgb3ZlcnJpZGUuYWVzID0gbGlzdChzaXplID0gMywgYWxwaGEgPSAxKQogICAgKQogICkKYGBgCgpIb3cgZG8gdGhlIGV4cHJlc3Npb24gb2YgdGhlc2UgZ2VuZXMgY2hhbmdlIGFjcm9zcyBjZWxsIHR5cGVzIGFuZCBSTVMgc3VidHlwZXM/CgpHbyBhaGVhZCBhbmQgZXhwbG9yZSBzb21lIGdlbmVzIG9uIHlvdXIgb3duIQpGZWVsIGZyZWUgdG8gcGxvdCBhbnkgb2YgdGhlIGdlbmVzIHRoYXQgYXJlIGlkZW50aWZpZWQgYXMgc2lnbmlmaWNhbnQsIGZvdW5kIGluIHRoZSBERSByZXN1bHRzIHRhYmxlLCBvciB5b3VyIGZhdm9yaXRlIGdlbmUuClJlbWVtYmVyLCB5b3UgbmVlZCB0byB1c2UgdGhlIEVuc2VtYmwgZ2VuZSBpZGVudGlmaWVyIHRvIHJlZmVyIHRvIGVhY2ggZ2VuZS4KCmBgYHtyIGV4cGxvcmV9CiMgbm93IGRvIHNvbWUgZXhwbG9yYXRpb24gb2Ygb3RoZXIgZ2VuZXMgb24geW91ciBvd24hCmBgYAoKIyMgUHJpbnQgc2Vzc2lvbiBpbmZvCgpgYGB7ciBzZXNzaW9uIGluZm99CnNlc3Npb25JbmZvKCkKYGBgCgo=
    diff --git a/scRNA-seq-advanced/04-gene_set_enrichment_analysis-live.Rmd b/scRNA-seq-advanced/04-gene_set_enrichment_analysis-live.Rmd index f022ca51..504d97f4 100644 --- a/scRNA-seq-advanced/04-gene_set_enrichment_analysis-live.Rmd +++ b/scRNA-seq-advanced/04-gene_set_enrichment_analysis-live.Rmd @@ -55,12 +55,14 @@ library(msigdbr) #### Directories -```{r create_dir, live = TRUE} +```{r create_dir} # We'll use the differential expression results as GSEA input +rms_analysis_dir <- file.path("analysis", "rms") # We'll create a directory to specifically hold the pathway results if it doesn't # exist yet - +results_dir <- file.path(rms_analysis_dir, "pathway-analysis") +fs::dir_create(results_dir) ``` #### Input files @@ -134,7 +136,7 @@ The enrichment score for a pathway is the running sum's maximum deviation from z GSEA also assesses statistical significance of the scores for each pathway through permutation testing. As a result, each input pathway will have a p-value associated with it that is then corrected for multiple hypothesis testing ([Subramanian _et al._ 2005](https://doi.org/10.1073/pnas.0506580102); [Yu](http://yulab-smu.top/clusterProfiler-book/chapter2.html#gene-set-enrichment-analysis)). -The implementation of GSEA we use in here examples requires a gene list ordered by some statistic and input gene sets. +The implementation of GSEA we use here requires a gene list ordered by some statistic and input gene sets. When you use previously computed gene-level statistics with GSEA, it is called GSEA pre-ranked. ## DESeq2 results @@ -164,7 +166,7 @@ You can see an example in this Harvard Chan Bioinformatics Core Training materia One good thing about Ensembl gene identifiers is that they are less likely to be duplicated than, for example, gene symbols. (Multiple Ensembl gene identifiers can map to the same symbol.) -The GSEA approach requires on discriminating between genes that are in a gene set and those that are not. +The GSEA approach requires discriminating between genes that are in a gene set and those that are not. Practically speaking, gene sets are just collections of gene identifiers! When the function we use for GSEA pre-ranked gets a list with duplicated gene identifiers, it can produce unexpected results. So, let's check for duplicates in the data frame of DESeq2 results. @@ -227,10 +229,11 @@ Normalized enrichment scores (NES) are enrichment scores that are scaled to make Pathways with significant, highly positive NES are enriched in ERMS myoblasts, whereas pathways with significant, highly negative NES are enriched in ARMS myoblasts. -Let's write these results to file. +Let's write these results to a file. ```{r write_gsea} -gsea_results@result |> readr::write_tsv(output_file) +gsea_results@result |> + readr::write_tsv(output_file) ``` ### Visualizing GSEA results diff --git a/scRNA-seq-advanced/04-gene_set_enrichment_analysis.nb.html b/scRNA-seq-advanced/04-gene_set_enrichment_analysis.nb.html index 307ca33d..07e65fd9 100644 --- a/scRNA-seq-advanced/04-gene_set_enrichment_analysis.nb.html +++ b/scRNA-seq-advanced/04-gene_set_enrichment_analysis.nb.html @@ -3090,10 +3090,9 @@

    Gene Set Enrichment Analysis

    input pathway will have a p-value associated with it that is then corrected for multiple hypothesis testing (Subramanian et al. 2005; Yu).

    -

    The implementation of GSEA we use in here examples requires a gene -list ordered by some statistic and input gene sets. When you use -previously computed gene-level statistics with GSEA, it is called GSEA -pre-ranked.

    +

    The implementation of GSEA we use here requires a gene list ordered +by some statistic and input gene sets. When you use previously computed +gene-level statistics with GSEA, it is called GSEA pre-ranked.

    DESeq2 results

    @@ -3152,12 +3151,12 @@

    DESeq2 results

    One good thing about Ensembl gene identifiers is that they are less likely to be duplicated than, for example, gene symbols. (Multiple Ensembl gene identifiers can map to the same symbol.)

    -

    The GSEA approach requires on discriminating between genes that are -in a gene set and those that are not. Practically speaking, gene sets -are just collections of gene identifiers! When the function we use for -GSEA pre-ranked gets a list with duplicated gene identifiers, it can -produce unexpected results. So, let’s check for duplicates in the data -frame of DESeq2 results.

    +

    The GSEA approach requires discriminating between genes that are in a +gene set and those that are not. Practically speaking, gene sets are +just collections of gene identifiers! When the function we use for GSEA +pre-ranked gets a list with duplicated gene identifiers, it can produce +unexpected results. So, let’s check for duplicates in the data frame of +DESeq2 results.

    @@ -3258,9 +3257,10 @@

    Run GSEA

    Let’s take a look at the GSEA results.

    - -
    View(gsea_results@result |>
    -       dplyr::arrange(dplyr::desc(NES))
    +
    +
    View(
    +  gsea_results@result |>
    +    dplyr::arrange(dplyr::desc(NES))
     )
    @@ -3271,11 +3271,12 @@

    Run GSEA

    Pathways with significant, highly positive NES are enriched in ERMS myoblasts, whereas pathways with significant, highly negative NES are enriched in ARMS myoblasts.

    -

    Let’s write these results to file.

    +

    Let’s write these results to a file.

    - -
    gsea_results@result |> readr::write_tsv(output_file)
    + +
    gsea_results@result |> 
    +  readr::write_tsv(output_file)
    @@ -3428,7 +3429,7 @@

    Session Info

    -
    LS0tCnRpdGxlOiAiUGF0aHdheSBhbmFseXNpczogR2VuZSBTZXQgRW5yaWNobWVudCBBbmFseXNpcyAoR1NFQSkiCm91dHB1dDoKICBodG1sX25vdGVib29rOgogICAgdG9jOiB0cnVlCiAgICB0b2NfZmxvYXQ6IHRydWUKYXV0aG9yOiBDQ0RMIGZvciBBTFNGCmRhdGU6IDIwMjQKLS0tCgojIyBPYmplY3RpdmVzCgpUaGlzIG5vdGVib29rIHdpbGwgZGVtb25zdHJhdGUgaG93IHRvOgoKLSBQcmVwYXJlIHRhYnVsYXIgZGF0YSBvZiBnZW5lLWxldmVsIHN0YXRpc3RpY3MgZm9yIHVzZSB3aXRoIEdlbmUgU2V0IEVucmljaG1lbnQgQW5hbHlzaXMgKEdTRUEpCi0gQWNjZXNzIFtNb2xlY3VsYXIgU2lnbmF0dXJlcyBEYXRhYmFzZSBnZW5lIHNldCBjb2xsZWN0aW9uc10oaHR0cHM6Ly93d3cuZ3NlYS1tc2lnZGIub3JnL2dzZWEvbXNpZ2RiL2NvbGxlY3Rpb25zLmpzcCkgdmlhIHRoZSBgbXNpZ2RicmAgcGFja2FnZQotIFBlcmZvcm0gR1NFQSB3aXRoIHRoZSBgY2x1c3RlclByb2ZpbGVyYCBwYWNrYWdlCi0gVmlzdWFsaXplIEdTRUEgcmVzdWx0cyB3aXRoIHRoZSBgZW5yaWNocGxvdGAgcGFja2FnZQoKLS0tCgpJbiB0aGlzIG5vdGVib29rLCB3ZSdsbCBhbmFseXplIHRoZSBkaWZmZXJlbnRpYWwgZXhwcmVzc2lvbiByZXN1bHRzIGZyb20gdGhlIGxhc3Qgbm90ZWJvb2suCgpHU0VBIGlzIGEgZnVuY3Rpb25hbCBjbGFzcyBzY29yaW5nIChGQ1MpIGFwcHJvYWNoIHRvIHBhdGh3YXkgYW5hbHlzaXMgdGhhdCB3YXMgZmlyc3QgaW50cm9kdWNlZCBpbiBbU3VicmFtYW5pYW4gX2V0IGFsLl8gKDIwMDUpXShodHRwczovL2RvaS5vcmcvMTAuMTA3My9wbmFzLjA1MDY1ODAxMDIpLgpUaGUgcmF0aW9uYWxlIGJlaGluZCBGQ1MgYXBwcm9hY2hlcyBpcyB0aGF0IHNtYWxsIGNoYW5nZXMgaW4gaW5kaXZpZHVhbCBnZW5lcyB0aGF0IHBhcnRpY2lwYXRlIGluIHRoZSBzYW1lIGJpb2xvZ2ljYWwgcHJvY2VzcyBvciBwYXRod2F5IGNhbiBiZSBzaWduaWZpY2FudCBhbmQgb2YgYmlvbG9naWNhbCBpbnRlcmVzdC4KClRoZXJlIGFyZSAzIGdlbmVyYWwgc3RlcHMgaW4gRkNTIG1ldGhvZHMgKFtLaGF0cmkgX2V0IGFsLl8gMjAxMl0oaHR0cHM6Ly9kb2kub3JnLzEwLjEzNzEvam91cm5hbC5wY2JpLjEwMDIzNzUpKToKCjEuIENhbGN1bGF0ZSBhIGdlbmUtbGV2ZWwgc3RhdGlzdGljIChoZXJlLCB3ZSdsbCB1c2UgdGhlIHN1bW1hcnkgbG9nIGZvbGQgY2hhbmdlcyBpbiBvdXIgREVTZXEyIHJlc3VsdHMpCjIuIEFnZ3JlZ2F0ZSBnZW5lLWxldmVsIHN0YXRpc3RpY3MgaW50byBhIHBhdGh3YXktbGV2ZWwgc3RhdGlzdGljCjMuIEFzc2VzcyB0aGUgc3RhdGlzdGljYWwgc2lnbmlmaWNhbmNlIG9mIHRoZSBwYXRod2F5LWxldmVsIHN0YXRpc3RpYwoKIyMjIyBPdGhlciByZXNvdXJjZXMKCiogRm9yIGFub3RoZXIgZXhhbXBsZSB1c2luZyBgY2x1c3RlclByb2ZpbGVyYCBmb3IgR1NFQSwgc2VlIFtfSW50cm8gdG8gREdFOiBGdW5jdGlvbmFsIEFuYWx5c2lzLl8gZnJvbSBIYXJ2YXJkIENoYW4gQmlvaW5mb3JtYXRpY3MgQ29yZSBUcmFpbmluZy5dKGh0dHBzOi8vaGJjdHJhaW5pbmcuZ2l0aHViLmlvL1RyYWluaW5nLW1vZHVsZXMvREdFLWZ1bmN0aW9uYWwtYW5hbHlzaXMvbGVzc29ucy8wMl9mdW5jdGlvbmFsX2FuYWx5c2lzLmh0bWwpCiogVGhlIHdheSB3ZSdsbCB1c2UgYGNsdXN0ZXJQcm9maWxlcmAgaGVyZSB1c2VzIGBmZ3NlYWAgKEZhc3QgR2VuZSBTZXQgRW5yaWNobWVudCBBbmFseXNpcykgdW5kZXIgdGhlIGhvb2QuCllvdSBjYW4gcmVhZCBtb3JlIGFib3V0IGBmZ3NlYWAgaW4gW0tvcm90a2V2aWNoIF9ldCBhbC5fICgyMDIxKV0oaHR0cHM6Ly9kb2kub3JnLzEwLjExMDEvMDYwMDEyKS4KKiBTZWUgdGhlIFtyZWZpbmUuYmlvIGV4YW1wbGVzIGZvciAiR2VuZSBzZXQgZW5yaWNobWVudCBhbmFseXNpcyAtIFJOQS1zZXEiXShodHRwczovL2FsZXhzbGVtb25hZGUuZ2l0aHViLmlvL3JlZmluZWJpby1leGFtcGxlcy8wMy1ybmFzZXEvcGF0aHdheS1hbmFseXNpc19ybmFzZXFfMDJfZ3NlYS5odG1sKSBmcm9tIHdoaWNoIHRoaXMgbWF0ZXJpYWwgaGFzIGJlZW4gYWRhcHRlZC4KCiMjIFNldCB1cAoKIyMjIExpYnJhcmllcwoKYGBge3Igc2V0dXB9CiMgc2V0IHNlZWQgZm9yIHJlcHJvZHVjaWJpbGl0eQpzZXQuc2VlZCgyMDI1KQoKIyBQYWNrYWdlIHRvIHJ1biBHU0VBCmxpYnJhcnkoY2x1c3RlclByb2ZpbGVyKQojIFBhY2thZ2UgdGhhdCBjb250YWlucyB0aGUgTVNpZ0RCIGdlbmUgc2V0cyBpbiB0aWR5IGZvcm1hdApsaWJyYXJ5KG1zaWdkYnIpCmBgYAoKIyMjIERpcmVjdG9yaWVzIGFuZCBGaWxlcwoKIyMjIyBEaXJlY3RvcmllcwoKYGBge3IgY3JlYXRlX2RpciwgbGl2ZSA9IFRSVUV9CiMgV2UnbGwgdXNlIHRoZSBkaWZmZXJlbnRpYWwgZXhwcmVzc2lvbiByZXN1bHRzIGFzIEdTRUEgaW5wdXQKcm1zX2FuYWx5c2lzX2RpciA8LSBmaWxlLnBhdGgoImFuYWx5c2lzIiwgInJtcyIpCgojIFdlJ2xsIGNyZWF0ZSBhIGRpcmVjdG9yeSB0byBzcGVjaWZpY2FsbHkgaG9sZCB0aGUgcGF0aHdheSByZXN1bHRzIGlmIGl0IGRvZXNuJ3QKIyBleGlzdCB5ZXQKcmVzdWx0c19kaXIgPC0gZmlsZS5wYXRoKHJtc19hbmFseXNpc19kaXIsICJwYXRod2F5LWFuYWx5c2lzIikKZnM6OmRpcl9jcmVhdGUocmVzdWx0c19kaXIpCmBgYAoKIyMjIyBJbnB1dCBmaWxlcwoKCmBgYHtyIGlucHV0X2ZpbGVzfQppbnB1dF9maWxlIDwtIGZpbGUucGF0aChybXNfYW5hbHlzaXNfZGlyLAogICAgICAgICAgICAgICAgICAgICAgICAiZGVzZXEiLAogICAgICAgICAgICAgICAgICAgICAgICAicm1zX215b2JsYXN0X2Rlc2VxX3Jlc3VsdHMudHN2IikKYGBgCgojIyMjIE91dHB1dCBmaWxlcwoKV2UnbGwgc2F2ZSBvdXIgdGFibGUgb2YgR1NFQSByZXN1bHRzIGFzIGEgVFNWLgoKYGBge3Igb3V0cHV0X2ZpbGVzfQpvdXRwdXRfZmlsZSA8LSBmaWxlLnBhdGgocmVzdWx0c19kaXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAicm1zX215b2JsYXN0X2dzZWFfcmVzdWx0cy50c3YiKQpgYGAKCiMjIEdlbmUgc2V0cwoKV2Ugd2lsbCB1c2UgZ2VuZSBzZXRzIGZyb20gdGhlIFtNb2xlY3VsYXIgU2lnbmF0dXJlcyBEYXRhYmFzZSAoTVNpZ0RCKV0oaHR0cHM6Ly93d3cuZ3NlYS1tc2lnZGIub3JnL2dzZWEvbXNpZ2RiL2luZGV4LmpzcCkgZnJvbSB0aGUgQnJvYWQgSW5zdGl0dXRlIChbU3VicmFtYW5pYW4sIFRhbWF5byAqZXQgYWwuKiAyMDA1XShodHRwczovL2RvaS5vcmcvMTAuMTA3My9wbmFzLjA1MDY1ODAxMDIpKS4KVGhlIFtgbXNpZ2RicmBdKGh0dHBzOi8vY3Jhbi5yLXByb2plY3Qub3JnL3dlYi9wYWNrYWdlcy9tc2lnZGJyL2luZGV4Lmh0bWwpIHBhY2thZ2UgY29udGFpbnMgTVNpZ0RCIGRhdGFzZXRzIGFscmVhZHkgaW4gdGhlIHRpZHkgZm9ybWF0IHJlcXVpcmVkIGJ5IGBjbHVzdGVyUHJvZmlsZXJgIGFuZCBzdXBwb3J0cyBtdWx0aXBsZSBvcmdhbmlzbXMuCgpMZXQncyB0YWtlIGEgbG9vayBhdCB3aGF0IG9yZ2FuaXNtcyB0aGUgcGFja2FnZSBzdXBwb3J0cy4KCmBgYHtyIHNob3dfc3BlY2llc30KbXNpZ2Ricl9zcGVjaWVzKCkKYGBgCgpNU2lnREIgY29udGFpbnMgOCBkaWZmZXJlbnQgZ2VuZSBzZXQgY29sbGVjdGlvbnMuCgogICAgSDogaGFsbG1hcmsgZ2VuZSBzZXRzCiAgICBDMTogcG9zaXRpb25hbCBnZW5lIHNldHMKICAgIEMyOiBjdXJhdGVkIGdlbmUgc2V0cwogICAgQzM6IG1vdGlmIGdlbmUgc2V0cwogICAgQzQ6IGNvbXB1dGF0aW9uYWwgZ2VuZSBzZXRzCiAgICBDNTogR08gZ2VuZSBzZXRzCiAgICBDNjogb25jb2dlbmljIHNpZ25hdHVyZXMKICAgIEM3OiBpbW11bm9sb2dpYyBzaWduYXR1cmVzCgpXZSdsbCB1c2UgdGhlIEhhbGxtYXJrIGNvbGxlY3Rpb24gZm9yIEdTRUEuCkhlcmUncyBhbiBleGNlcnB0IG9mIHRoZSBbY29sbGVjdGlvbiBkZXNjcmlwdGlvbl0oaHR0cHM6Ly93d3cuZ3NlYS1tc2lnZGIub3JnL2dzZWEvbXNpZ2RiL2NvbGxlY3Rpb25fZGV0YWlscy5qc3AjSCk6Cgo+IEhhbGxtYXJrIGdlbmUgc2V0cyBzdW1tYXJpemUgYW5kIHJlcHJlc2VudCBzcGVjaWZpYyB3ZWxsLWRlZmluZWQgYmlvbG9naWNhbCBzdGF0ZXMgb3IgcHJvY2Vzc2VzIGFuZCBkaXNwbGF5IGNvaGVyZW50IGV4cHJlc3Npb24uIFRoZXNlIGdlbmUgc2V0cyB3ZXJlIGdlbmVyYXRlZCBieSBhIGNvbXB1dGF0aW9uYWwgbWV0aG9kb2xvZ3kgYmFzZWQgb24gaWRlbnRpZnlpbmcgZ2VuZSBzZXQgb3ZlcmxhcHMgYW5kIHJldGFpbmluZyBnZW5lcyB0aGF0IGRpc3BsYXkgY29vcmRpbmF0ZSBleHByZXNzaW9uLiBUaGUgaGFsbG1hcmtzIHJlZHVjZSBub2lzZSBhbmQgcmVkdW5kYW5jeSBhbmQgcHJvdmlkZSBhIGJldHRlciBkZWxpbmVhdGVkIGJpb2xvZ2ljYWwgc3BhY2UgZm9yIEdTRUEuCgpOb3RhYmx5LCB0aGVyZSBhcmUgb25seSA1MCBnZW5lIHNldHMgaW5jbHVkZWQgaW4gdGhpcyBjb2xsZWN0aW9uLgpUaGUgZmV3ZXIgZ2VuZSBzZXRzIHdlIHRlc3QsIHRoZSBsb3dlciBvdXIgbXVsdGlwbGUgaHlwb3RoZXNpcyB0ZXN0aW5nIGJ1cmRlbi4KCldlIGNhbiByZXRyaWV2ZSBvbmx5IHRoZSBIYWxsbWFyayBnZW5lIHNldHMgYnkgc3BlY2lmeWluZyBgY2F0ZWdvcnkgPSAiSCJgIHRvIHRoZSBgbXNpZ2RicigpYCBmdW5jdGlvbi4KCmBgYHtyIGltbXVub2xvZ2ljX3NldHMsIGxpdmUgPSBUUlVFfQpoc19oYWxsbWFya3NfZGYgPC0gbXNpZ2RicihzcGVjaWVzID0gIkhvbW8gc2FwaWVucyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhdGVnb3J5ID0gIkgiKQpgYGAKCiMjIEdlbmUgU2V0IEVucmljaG1lbnQgQW5hbHlzaXMKCl9BZGFwdGVkIGZyb20gW3JlZmluZS5iaW8gZXhhbXBsZXNdKGh0dHBzOi8vZ2l0aHViLmNvbS9BbGV4c0xlbW9uYWRlL3JlZmluZWJpby1leGFtcGxlcy9ibG9iLzMzY2RlZmY2NmQ1N2Y5ZmU4ZWU0ZmNiNTE1NmFlYTRhYzJkY2UwN2YvMDMtcm5hc2VxL3BhdGh3YXktYW5hbHlzaXNfcm5hc2VxXzAyX2dzZWEuUm1kKV8KCiFbXShkaWFncmFtcy9zdWJyYW1hbmlhbl9maWcxLmpwZykKCioqRmlndXJlIDEuIFtTdWJyYW1hbmlhbiBfZXQgYWwuXyAoMjAwNSldKGh0dHBzOi8vZG9pLm9yZy8xMC4xMDczL3BuYXMuMDUwNjU4MDEwMikuKioKCkdTRUEgY2FsY3VsYXRlcyBhIHBhdGh3YXktbGV2ZWwgbWV0cmljLCBjYWxsZWQgYW4gZW5yaWNobWVudCBzY29yZSAoc29tZXRpbWVzIGFiYnJldmlhdGVkIGFzIEVTKSwgYnkgcmFua2luZyBnZW5lcyBieSBhIGdlbmUtbGV2ZWwgc3RhdGlzdGljLgpUaGlzIHNjb3JlIHJlZmxlY3RzIHdoZXRoZXIgb3Igbm90IGEgZ2VuZSBzZXQgb3IgcGF0aHdheSBpcyBvdmVyLXJlcHJlc2VudGVkIGF0IHRoZSB0b3Agb3IgYm90dG9tIG9mIHRoZSBnZW5lIHJhbmtpbmdzIChbU3VicmFtYW5pYW4gX2V0IGFsLl8gMjAwNV0oaHR0cHM6Ly9kb2kub3JnLzEwLjEwNzMvcG5hcy4wNTA2NTgwMTAyKTsgW1l1XShodHRwOi8veXVsYWItc211LnRvcC9jbHVzdGVyUHJvZmlsZXItYm9vay9jaGFwdGVyMi5odG1sI2dlbmUtc2V0LWVucmljaG1lbnQtYW5hbHlzaXMpKQoKU3BlY2lmaWNhbGx5LCBhbGwgZ2VuZXMgYXJlIHJhbmtlZCBmcm9tIG1vc3QgcG9zaXRpdmUgdG8gbW9zdCBuZWdhdGl2ZSBiYXNlZCBvbiB0aGVpciBzdGF0aXN0aWMgYW5kIGEgcnVubmluZyBzdW0gaXMgY2FsY3VsYXRlZDoKU3RhcnRpbmcgd2l0aCB0aGUgbW9zdCBoaWdobHkgcmFua2VkIGdlbmVzLCB0aGUgcnVubmluZyBzdW0gaW5jcmVhc2VzIGZvciBlYWNoIGdlbmUgaW4gdGhlIHBhdGh3YXkgYW5kIGRlY3JlYXNlcyBmb3IgZWFjaCBnZW5lIG5vdCBpbiB0aGUgcGF0aHdheS4KVGhlIGVucmljaG1lbnQgc2NvcmUgZm9yIGEgcGF0aHdheSBpcyB0aGUgcnVubmluZyBzdW0ncyBtYXhpbXVtIGRldmlhdGlvbiBmcm9tIHplcm8uCkdTRUEgYWxzbyBhc3Nlc3NlcyBzdGF0aXN0aWNhbCBzaWduaWZpY2FuY2Ugb2YgdGhlIHNjb3JlcyBmb3IgZWFjaCBwYXRod2F5IHRocm91Z2ggcGVybXV0YXRpb24gdGVzdGluZy4KQXMgYSByZXN1bHQsIGVhY2ggaW5wdXQgcGF0aHdheSB3aWxsIGhhdmUgYSBwLXZhbHVlIGFzc29jaWF0ZWQgd2l0aCBpdCB0aGF0IGlzIHRoZW4gY29ycmVjdGVkIGZvciBtdWx0aXBsZSBoeXBvdGhlc2lzIHRlc3RpbmcgKFtTdWJyYW1hbmlhbiBfZXQgYWwuXyAyMDA1XShodHRwczovL2RvaS5vcmcvMTAuMTA3My9wbmFzLjA1MDY1ODAxMDIpOyBbWXVdKGh0dHA6Ly95dWxhYi1zbXUudG9wL2NsdXN0ZXJQcm9maWxlci1ib29rL2NoYXB0ZXIyLmh0bWwjZ2VuZS1zZXQtZW5yaWNobWVudC1hbmFseXNpcykpLgoKVGhlIGltcGxlbWVudGF0aW9uIG9mIEdTRUEgd2UgdXNlIGluIGhlcmUgZXhhbXBsZXMgcmVxdWlyZXMgYSBnZW5lIGxpc3Qgb3JkZXJlZCBieSBzb21lIHN0YXRpc3RpYyBhbmQgaW5wdXQgZ2VuZSBzZXRzLgpXaGVuIHlvdSB1c2UgcHJldmlvdXNseSBjb21wdXRlZCBnZW5lLWxldmVsIHN0YXRpc3RpY3Mgd2l0aCBHU0VBLCBpdCBpcyBjYWxsZWQgR1NFQSBwcmUtcmFua2VkLgoKIyMgREVTZXEyIHJlc3VsdHMKCmBgYHtyIHJlYWRfaW5fbWFya2VycywgbGl2ZSA9IFRSVUV9CmRlc2VxX2RmIDwtIHJlYWRyOjpyZWFkX3RzdihpbnB1dF9maWxlKQpgYGAKCmBgYHtyIGRlc2VxX2hlYWR9CmhlYWQoZGVzZXFfZGYpCmBgYAoKVGhpcyBkYXRhIGZyYW1lIHVzZXMgRW5zZW1ibCBnZW5lIGlkZW50aWZpZXJzLgpXZSdsbCBuZWVkIHRvIG1ha2Ugc3VyZSBvdXIgZ2VuZSBzZXRzIHVzZSB0aGUgc2FtZSBpZGVudGlmaWVycy4KTGV0J3MgdGFrZSBhIGxvb2sgYXQgdGhlIGZpcnN0IGZldyByb3dzIG9mIHRoZSBkYXRhIGZyYW1lIHRoYXQgY29udGFpbnMgdGhlIGhhbGxtYXJrIGdlbmUgc2V0cy4KCmBgYHtyIGhhbGxtYXJrX2hlYWQsIGxpdmUgPSBUUlVFfQpoZWFkKGhzX2hhbGxtYXJrc19kZikKYGBgCgpXZSBjYW4gc2VlIHRoYXQgdGhlIGdlbmUgc2V0cyBmcm9tIGBtc2lnZGJyYCBoYXZlIEVuc2VtYmwgZ2VuZSBpZGVudGlmaWVycyBhc3NvY2lhdGVkIHdpdGggdGhlbSwgc28gd2UgZG9uJ3QgbmVlZCB0byBkbyBhbnkgY29udmVyc2lvbi4KSG93ZXZlciwgd2UnbGwgbmVlZCB0byBwYXNzIHRoZSBjb3JyZWN0IGNvbHVtbiB0byB0aGUgZnVuY3Rpb24gdGhhdCBydW5zIEdTRUEuCgpJZiB3ZSBuZWVkZWQgdG8gZG8gZ2VuZSBpZGVudGlmaWVyIGNvbnZlcnNpb24sIHdlIHdvdWxkIGxpa2VseSB1c2UgdGhlIGBBbm5vdGF0aW9uRGJpYCBwYWNrYWdlLgpZb3UgY2FuIHNlZSBhbiBleGFtcGxlIGluIHRoaXMgSGFydmFyZCBDaGFuIEJpb2luZm9ybWF0aWNzIENvcmUgVHJhaW5pbmcgbWF0ZXJpYWw6IDxodHRwczovL2hiY3RyYWluaW5nLmdpdGh1Yi5pby9ER0Vfd29ya3Nob3Bfc2FsbW9uX29ubGluZS9sZXNzb25zL0Fubm90YXRpb25EYmlfbGVzc29uLmh0bWw+CgpPbmUgZ29vZCB0aGluZyBhYm91dCBFbnNlbWJsIGdlbmUgaWRlbnRpZmllcnMgaXMgdGhhdCB0aGV5IGFyZSBsZXNzIGxpa2VseSB0byBiZSBkdXBsaWNhdGVkIHRoYW4sIGZvciBleGFtcGxlLCBnZW5lIHN5bWJvbHMuCihNdWx0aXBsZSBFbnNlbWJsIGdlbmUgaWRlbnRpZmllcnMgY2FuIG1hcCB0byB0aGUgc2FtZSBzeW1ib2wuKQoKVGhlIEdTRUEgYXBwcm9hY2ggcmVxdWlyZXMgb24gZGlzY3JpbWluYXRpbmcgYmV0d2VlbiBnZW5lcyB0aGF0IGFyZSBpbiBhIGdlbmUgc2V0IGFuZCB0aG9zZSB0aGF0IGFyZSBub3QuClByYWN0aWNhbGx5IHNwZWFraW5nLCBnZW5lIHNldHMgYXJlIGp1c3QgY29sbGVjdGlvbnMgb2YgZ2VuZSBpZGVudGlmaWVycyEKV2hlbiB0aGUgZnVuY3Rpb24gd2UgdXNlIGZvciBHU0VBIHByZS1yYW5rZWQgZ2V0cyBhIGxpc3Qgd2l0aCBkdXBsaWNhdGVkIGdlbmUgaWRlbnRpZmllcnMsIGl0IGNhbiBwcm9kdWNlIHVuZXhwZWN0ZWQgcmVzdWx0cy4KU28sIGxldCdzIGNoZWNrIGZvciBkdXBsaWNhdGVzIGluIHRoZSBkYXRhIGZyYW1lIG9mIERFU2VxMiByZXN1bHRzLgoKYGBge3IgY2hlY2tfZHVwbGljYXRlcywgbGl2ZSA9IFRSVUV9CmFueShkdXBsaWNhdGVkKGRlc2VxX2RmJGVuc2VtYmxfaWQpKQpgYGAKClRoZXJlIGFyZSBubyBkdXBsaWNhdGVzIGZvciB1cyB0byB3b3JyeSBhYm91dCEKCiMjIyBQcmUtcmFua2VkIGxpc3QKClRoZSBgR1NFQSgpYCBmdW5jdGlvbiB0YWtlcyBhIHByZS1yYW5rZWQgKHNvcnRlZCkgbmFtZWQgdmVjdG9yIG9mIHN0YXRpc3RpY3MsIHdoZXJlIHRoZSBuYW1lcyBpbiB0aGUgdmVjdG9yIGFyZSBnZW5lIGlkZW50aWZpZXJzLgpUaGlzIGlzIHN0ZXAgMSAtLSBnZW5lLWxldmVsIHN0YXRpc3RpY3MuCgpgYGB7ciBsZmNfdmVjdG9yfQpsZmNfdmVjdG9yIDwtIGRlc2VxX2RmIHw+CiAgIyBFeHRyYWN0IGEgdmVjdG9yIG9mIGBsb2cyRm9sZENoYW5nZWAgbmFtZWQgYnkgYGVuc2VtYmxfaWRgCiAgZHBseXI6OnB1bGwobG9nMkZvbGRDaGFuZ2UsIG5hbWUgPSBlbnNlbWJsX2lkKQpsZmNfdmVjdG9yIDwtIHNvcnQobGZjX3ZlY3RvciwgZGVjcmVhc2luZyA9IFRSVUUpCmBgYAoKTGV0J3MgbG9vayBhdCB0aGUgdG9wIHJhbmtlZCB2YWx1ZXMuCgpgYGB7ciBoZWFkX2xmYywgbGl2ZSA9IFRSVUV9CiMgTG9vayBhdCBmaXJzdCBlbnRyaWVzIG9mIHRoZSBsb2cgZm9sZCBjaGFuZ2UgdmVjdG9yCmhlYWQobGZjX3ZlY3RvcikKYGBgCgpBbmQgdGhlIGJvdHRvbSBvZiB0aGUgbGlzdC4KCmBgYHtyIHRhaWxfbGZjLCBsaXZlID0gVFJVRX0KIyBMb29rIGF0IHRoZSBsYXN0IGVudHJpZXMgb2YgdGhlIGxvZyBmb2xkIGNoYW5nZSB2ZWN0b3IKdGFpbChsZmNfdmVjdG9yKQpgYGAKCiMjIFJ1biBHU0VBCgpOb3cgZm9yIHRoZSBhbmFseXNpcyEKCldlIGNhbiB1c2UgdGhlIGBHU0VBKClgIGZ1bmN0aW9uIHRvIHBlcmZvcm0gR1NFQSB3aXRoIGFueSBnZW5lcmljIHNldCBvZiBnZW5lIHNldHMsIGJ1dCB0aGVyZSBhcmUgc2V2ZXJhbCBmdW5jdGlvbnMgZm9yIHVzaW5nIHNwZWNpZmljLCBjb21tb25seSB1c2VkIGdlbmUgc2V0cyAoZS5nLiwgYGdzZUtFR0coKWApLgoKYGBge3IgcnVuX2dzZWF9CmdzZWFfcmVzdWx0cyA8LSBHU0VBKGdlbmVMaXN0ID0gbGZjX3ZlY3RvciwgICMgb3JkZXJlZCByYW5rZWQgZ2VuZSBsaXN0CiAgICAgICAgICAgICAgICAgICAgIG1pbkdTU2l6ZSA9IDI1LCAgIyBtaW5pbXVtIGdlbmUgc2V0IHNpemUKICAgICAgICAgICAgICAgICAgICAgbWF4R1NTaXplID0gNTAwLCAgIyBtYXhpbXVtIGdlbmUgc2V0IHNldAogICAgICAgICAgICAgICAgICAgICBwdmFsdWVDdXRvZmYgPSAwLjA1LAogICAgICAgICAgICAgICAgICAgICBwQWRqdXN0TWV0aG9kID0gIkJIIiwgICMgY29ycmVjdGlvbiBmb3IgbXVsdGlwbGUgaHlwb3RoZXNpcyB0ZXN0aW5nCiAgICAgICAgICAgICAgICAgICAgIFRFUk0yR0VORSA9IGRwbHlyOjpzZWxlY3QoaHNfaGFsbG1hcmtzX2RmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdzX25hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5zZW1ibF9nZW5lKSkgICMgcGFzcyB0aGUgY29ycmVjdCBpZGVudGlmaWVyIGNvbHVtbgpgYGAKTGV0J3MgdGFrZSBhIGxvb2sgYXQgdGhlIEdTRUEgcmVzdWx0cy4KCmBgYHtyIHZpZXdfZ3NlYSwgbGl2ZSA9IFRSVUUsIGV2YWwgPSBGQUxTRX0KVmlldyhnc2VhX3Jlc3VsdHNAcmVzdWx0IHw+CiAgICAgICBkcGx5cjo6YXJyYW5nZShkcGx5cjo6ZGVzYyhORVMpKQopCmBgYAoKTm9ybWFsaXplZCBlbnJpY2htZW50IHNjb3JlcyAoTkVTKSBhcmUgZW5yaWNobWVudCBzY29yZXMgdGhhdCBhcmUgc2NhbGVkIHRvIG1ha2UgZ2VuZSBzZXRzIHRoYXQgY29udGFpbiBkaWZmZXJlbnQgbnVtYmVyIG9mIGdlbmVzIGNvbXBhcmFibGUuCgpQYXRod2F5cyB3aXRoIHNpZ25pZmljYW50LCBoaWdobHkgcG9zaXRpdmUgTkVTIGFyZSBlbnJpY2hlZCBpbiBFUk1TIG15b2JsYXN0cywgd2hlcmVhcyBwYXRod2F5cyB3aXRoIHNpZ25pZmljYW50LCBoaWdobHkgbmVnYXRpdmUgTkVTIGFyZSBlbnJpY2hlZCBpbiBBUk1TIG15b2JsYXN0cy4KCkxldCdzIHdyaXRlIHRoZXNlIHJlc3VsdHMgdG8gZmlsZS4KCmBgYHtyIHdyaXRlX2dzZWF9CmdzZWFfcmVzdWx0c0ByZXN1bHQgfD4gcmVhZHI6OndyaXRlX3RzdihvdXRwdXRfZmlsZSkKYGBgCgojIyMgVmlzdWFsaXppbmcgR1NFQSByZXN1bHRzCgpXZSBjYW4gdmlzdWFsaXplIEdTRUEgcmVzdWx0cyBmb3IgaW5kaXZpZHVhbCBwYXRod2F5cyBvciBnZW5lIHNldHMgdXNpbmcgYGVucmljaHBsb3Q6OmdzZWFwbG90KClgLgpMZXQncyB0YWtlIGEgbG9vayBhdCAzIGRpZmZlcmVudCBwYXRod2F5cyAtLSBvbmUgd2l0aCBhIGhpZ2hseSBwb3NpdGl2ZSBORVMsIG9uZSB3aXRoIGEgaGlnaGx5IG5lZ2F0aXZlIE5FUywgYW5kIG9uZSB0aGF0IHdhcyBub3QgYSBzaWduaWZpY2FudCByZXN1bHQgLS0gdG8gZ2V0IG1vcmUgaW5zaWdodCBpbnRvIGhvdyBFUyBhcmUgY2FsY3VsYXRlZC4KCiMjIyMgSGlnaGx5IFBvc2l0aXZlIE5FUwoKTGV0J3MgdGFrZSBsb29rIGF0IGEgcGF0aHdheSB3aXRoIGEgaGlnaGx5IHBvc2l0aXZlIE5FUyAoYEhBTExNQVJLX01ZQ19UQVJHRVRTX1YyYCkgdXNpbmcgYSBHU0VBIHBsb3QuCgpgYGB7ciBoaWdobHlfcG9zfQplbnJpY2hwbG90Ojpnc2VhcGxvdChnc2VhX3Jlc3VsdHMsCiAgICAgICAgICAgICAgICAgICAgIGdlbmVTZXRJRCA9ICJIQUxMTUFSS19NWUNfVEFSR0VUU19WMiIsCiAgICAgICAgICAgICAgICAgICAgIHRpdGxlID0gIkhBTExNQVJLX01ZQ19UQVJHRVRTX1YyIiwKICAgICAgICAgICAgICAgICAgICAgY29sb3IubGluZSA9ICIjMDA2NkZGIikKYGBgCgpOb3RpY2UgaG93IHRoZSBnZW5lcyB0aGF0IGFyZSBpbiB0aGUgZ2VuZSBzZXQsIGluZGljYXRlZCBieSB0aGUgYmxhY2sgYmFycywgdGVuZCB0byBiZSBvbiB0aGUgbGVmdCBzaWRlIG9mIHRoZSBncmFwaCBpbmRpY2F0aW5nIHRoYXQgdGhleSBoYXZlIHBvc2l0aXZlIGdlbmUtbGV2ZWwgc2NvcmVzLgoKIyMjIyBIaWdobHkgTmVnYXRpdmUgTkVTCgpUaGUgZ2VuZSBzZXQgYEhBTExNQVJLX01ZT0dFTkVTSVNgIGhhZCBhIGhpZ2hseSBuZWdhdGl2ZSBORVMuCgpgYGB7ciBoaWdobHlfbmVnfQplbnJpY2hwbG90Ojpnc2VhcGxvdChnc2VhX3Jlc3VsdHMsCiAgICAgICAgICAgICAgICAgICAgIGdlbmVTZXRJRCA9ICJIQUxMTUFSS19NWU9HRU5FU0lTIiwKICAgICAgICAgICAgICAgICAgICAgdGl0bGUgPSAiSEFMTE1BUktfTVlPR0VORVNJUyIsCiAgICAgICAgICAgICAgICAgICAgIGNvbG9yLmxpbmUgPSAiIzAwNjZGRiIpCmBgYAoKVGhpcyBnZW5lIHNldCBzaG93cyB0aGUgb3Bwb3NpdGUgcGF0dGVybiAtLSBnZW5lcyBpbiB0aGUgcGF0aHdheSB0ZW5kIHRvIGJlIG9uIHRoZSByaWdodCBzaWRlIG9mIHRoZSBncmFwaC4KCiMjIyMgQSBub24tc2lnbmlmaWNhbnQgcmVzdWx0CgpUaGUgYEByZXN1bHRzYCBzbG90IHdpbGwgb25seSBzaG93IGdlbmUgc2V0cyB0aGF0IHBhc3MgdGhlIGBwdmFsdWVDdXRvZmZgIHRocmVzaG9sZCB3ZSBzdXBwbGllZCB0byBgR1NFQSgpYCwgYnV0IHdlIGNhbiBwbG90IGFueSBnZW5lIHNldCBzbyBsb25nIGFzIHdlIGtub3cgaXRzIG5hbWUuCkxldCdzIGxvb2sgYXQgYEhBTExNQVJLX1A1M19QQVRIV0FZYCwgd2hpY2ggd2FzIG5vdCBpbiB0aGUgcmVzdWx0cyB3ZSB2aWV3ZWQgZWFybGllci4KCmBgYHtyIHA1MywgbGl2ZSA9IFRSVUV9CmVucmljaHBsb3Q6OmdzZWFwbG90KGdzZWFfcmVzdWx0cywKICAgICAgICAgICAgICAgICAgICAgZ2VuZVNldElEID0gIkhBTExNQVJLX1A1M19QQVRIV0FZIiwKICAgICAgICAgICAgICAgICAgICAgdGl0bGUgPSAiSEFMTE1BUktfUDUzX1BBVEhXQVkiLAogICAgICAgICAgICAgICAgICAgICBjb2xvci5saW5lID0gIiMwMDY2RkYiKQpgYGAKCkdlbmVzIGluIHRoZSBwYXRod2F5IGFyZSBkaXN0cmlidXRlZCBtb3JlIGV2ZW5seSB0aHJvdWdob3V0IHRoZSByYW5rZWQgbGlzdCwgcmVzdWx0aW5nIGluIGEgbW9yZSAibWlkZGxpbmciIHNjb3JlLgoKKk5vdGU6IFRoZSBwbG90cyByZXR1cm5lZCBieSBgZW5yaWNocGxvdDo6Z3NlYXBsb3RgIGFyZSBnZ3Bsb3RzLCBzbyB3ZSBjb3VsZCB1c2UgYGdncGxvdDI6Omdnc2F2ZSgpYCB0byBzYXZlIHRoZW0gdG8gZmlsZSBpZiB3ZSB3YW50ZWQgdG8uKgoKIyMgU2Vzc2lvbiBJbmZvCgpgYGB7ciBzZXNzaW9uX2luZm99CnNlc3Npb25JbmZvKCkKYGBgCg==
    +
    LS0tCnRpdGxlOiAiUGF0aHdheSBhbmFseXNpczogR2VuZSBTZXQgRW5yaWNobWVudCBBbmFseXNpcyAoR1NFQSkiCm91dHB1dDoKICBodG1sX25vdGVib29rOgogICAgdG9jOiB0cnVlCiAgICB0b2NfZmxvYXQ6IHRydWUKYXV0aG9yOiBDQ0RMIGZvciBBTFNGCmRhdGU6IDIwMjQKLS0tCgojIyBPYmplY3RpdmVzCgpUaGlzIG5vdGVib29rIHdpbGwgZGVtb25zdHJhdGUgaG93IHRvOgoKLSBQcmVwYXJlIHRhYnVsYXIgZGF0YSBvZiBnZW5lLWxldmVsIHN0YXRpc3RpY3MgZm9yIHVzZSB3aXRoIEdlbmUgU2V0IEVucmljaG1lbnQgQW5hbHlzaXMgKEdTRUEpCi0gQWNjZXNzIFtNb2xlY3VsYXIgU2lnbmF0dXJlcyBEYXRhYmFzZSBnZW5lIHNldCBjb2xsZWN0aW9uc10oaHR0cHM6Ly93d3cuZ3NlYS1tc2lnZGIub3JnL2dzZWEvbXNpZ2RiL2NvbGxlY3Rpb25zLmpzcCkgdmlhIHRoZSBgbXNpZ2RicmAgcGFja2FnZQotIFBlcmZvcm0gR1NFQSB3aXRoIHRoZSBgY2x1c3RlclByb2ZpbGVyYCBwYWNrYWdlCi0gVmlzdWFsaXplIEdTRUEgcmVzdWx0cyB3aXRoIHRoZSBgZW5yaWNocGxvdGAgcGFja2FnZQoKLS0tCgpJbiB0aGlzIG5vdGVib29rLCB3ZSdsbCBhbmFseXplIHRoZSBkaWZmZXJlbnRpYWwgZXhwcmVzc2lvbiByZXN1bHRzIGZyb20gdGhlIGxhc3Qgbm90ZWJvb2suCgpHU0VBIGlzIGEgZnVuY3Rpb25hbCBjbGFzcyBzY29yaW5nIChGQ1MpIGFwcHJvYWNoIHRvIHBhdGh3YXkgYW5hbHlzaXMgdGhhdCB3YXMgZmlyc3QgaW50cm9kdWNlZCBpbiBbU3VicmFtYW5pYW4gX2V0IGFsLl8gKDIwMDUpXShodHRwczovL2RvaS5vcmcvMTAuMTA3My9wbmFzLjA1MDY1ODAxMDIpLgpUaGUgcmF0aW9uYWxlIGJlaGluZCBGQ1MgYXBwcm9hY2hlcyBpcyB0aGF0IHNtYWxsIGNoYW5nZXMgaW4gaW5kaXZpZHVhbCBnZW5lcyB0aGF0IHBhcnRpY2lwYXRlIGluIHRoZSBzYW1lIGJpb2xvZ2ljYWwgcHJvY2VzcyBvciBwYXRod2F5IGNhbiBiZSBzaWduaWZpY2FudCBhbmQgb2YgYmlvbG9naWNhbCBpbnRlcmVzdC4KClRoZXJlIGFyZSAzIGdlbmVyYWwgc3RlcHMgaW4gRkNTIG1ldGhvZHMgKFtLaGF0cmkgX2V0IGFsLl8gMjAxMl0oaHR0cHM6Ly9kb2kub3JnLzEwLjEzNzEvam91cm5hbC5wY2JpLjEwMDIzNzUpKToKCjEuIENhbGN1bGF0ZSBhIGdlbmUtbGV2ZWwgc3RhdGlzdGljIChoZXJlLCB3ZSdsbCB1c2UgdGhlIHN1bW1hcnkgbG9nIGZvbGQgY2hhbmdlcyBpbiBvdXIgREVTZXEyIHJlc3VsdHMpCjIuIEFnZ3JlZ2F0ZSBnZW5lLWxldmVsIHN0YXRpc3RpY3MgaW50byBhIHBhdGh3YXktbGV2ZWwgc3RhdGlzdGljCjMuIEFzc2VzcyB0aGUgc3RhdGlzdGljYWwgc2lnbmlmaWNhbmNlIG9mIHRoZSBwYXRod2F5LWxldmVsIHN0YXRpc3RpYwoKIyMjIyBPdGhlciByZXNvdXJjZXMKCiogRm9yIGFub3RoZXIgZXhhbXBsZSB1c2luZyBgY2x1c3RlclByb2ZpbGVyYCBmb3IgR1NFQSwgc2VlIFtfSW50cm8gdG8gREdFOiBGdW5jdGlvbmFsIEFuYWx5c2lzLl8gZnJvbSBIYXJ2YXJkIENoYW4gQmlvaW5mb3JtYXRpY3MgQ29yZSBUcmFpbmluZy5dKGh0dHBzOi8vaGJjdHJhaW5pbmcuZ2l0aHViLmlvL1RyYWluaW5nLW1vZHVsZXMvREdFLWZ1bmN0aW9uYWwtYW5hbHlzaXMvbGVzc29ucy8wMl9mdW5jdGlvbmFsX2FuYWx5c2lzLmh0bWwpCiogVGhlIHdheSB3ZSdsbCB1c2UgYGNsdXN0ZXJQcm9maWxlcmAgaGVyZSB1c2VzIGBmZ3NlYWAgKEZhc3QgR2VuZSBTZXQgRW5yaWNobWVudCBBbmFseXNpcykgdW5kZXIgdGhlIGhvb2QuCllvdSBjYW4gcmVhZCBtb3JlIGFib3V0IGBmZ3NlYWAgaW4gW0tvcm90a2V2aWNoIF9ldCBhbC5fICgyMDIxKV0oaHR0cHM6Ly9kb2kub3JnLzEwLjExMDEvMDYwMDEyKS4KKiBTZWUgdGhlIFtyZWZpbmUuYmlvIGV4YW1wbGVzIGZvciAiR2VuZSBzZXQgZW5yaWNobWVudCBhbmFseXNpcyAtIFJOQS1zZXEiXShodHRwczovL2FsZXhzbGVtb25hZGUuZ2l0aHViLmlvL3JlZmluZWJpby1leGFtcGxlcy8wMy1ybmFzZXEvcGF0aHdheS1hbmFseXNpc19ybmFzZXFfMDJfZ3NlYS5odG1sKSBmcm9tIHdoaWNoIHRoaXMgbWF0ZXJpYWwgaGFzIGJlZW4gYWRhcHRlZC4KCiMjIFNldCB1cAoKIyMjIExpYnJhcmllcwoKYGBge3Igc2V0dXB9CiMgc2V0IHNlZWQgZm9yIHJlcHJvZHVjaWJpbGl0eQpzZXQuc2VlZCgyMDI1KQoKIyBQYWNrYWdlIHRvIHJ1biBHU0VBCmxpYnJhcnkoY2x1c3RlclByb2ZpbGVyKQojIFBhY2thZ2UgdGhhdCBjb250YWlucyB0aGUgTVNpZ0RCIGdlbmUgc2V0cyBpbiB0aWR5IGZvcm1hdApsaWJyYXJ5KG1zaWdkYnIpCmBgYAoKIyMjIERpcmVjdG9yaWVzIGFuZCBGaWxlcwoKIyMjIyBEaXJlY3RvcmllcwoKYGBge3IgY3JlYXRlX2Rpcn0KIyBXZSdsbCB1c2UgdGhlIGRpZmZlcmVudGlhbCBleHByZXNzaW9uIHJlc3VsdHMgYXMgR1NFQSBpbnB1dApybXNfYW5hbHlzaXNfZGlyIDwtIGZpbGUucGF0aCgiYW5hbHlzaXMiLCAicm1zIikKCiMgV2UnbGwgY3JlYXRlIGEgZGlyZWN0b3J5IHRvIHNwZWNpZmljYWxseSBob2xkIHRoZSBwYXRod2F5IHJlc3VsdHMgaWYgaXQgZG9lc24ndAojIGV4aXN0IHlldApyZXN1bHRzX2RpciA8LSBmaWxlLnBhdGgocm1zX2FuYWx5c2lzX2RpciwgInBhdGh3YXktYW5hbHlzaXMiKQpmczo6ZGlyX2NyZWF0ZShyZXN1bHRzX2RpcikKYGBgCgojIyMjIElucHV0IGZpbGVzCgoKYGBge3IgaW5wdXRfZmlsZXN9CmlucHV0X2ZpbGUgPC0gZmlsZS5wYXRoKHJtc19hbmFseXNpc19kaXIsCiAgICAgICAgICAgICAgICAgICAgICAgICJkZXNlcSIsCiAgICAgICAgICAgICAgICAgICAgICAgICJybXNfbXlvYmxhc3RfZGVzZXFfcmVzdWx0cy50c3YiKQpgYGAKCiMjIyMgT3V0cHV0IGZpbGVzCgpXZSdsbCBzYXZlIG91ciB0YWJsZSBvZiBHU0VBIHJlc3VsdHMgYXMgYSBUU1YuCgpgYGB7ciBvdXRwdXRfZmlsZXN9Cm91dHB1dF9maWxlIDwtIGZpbGUucGF0aChyZXN1bHRzX2RpciwKICAgICAgICAgICAgICAgICAgICAgICAgICJybXNfbXlvYmxhc3RfZ3NlYV9yZXN1bHRzLnRzdiIpCmBgYAoKIyMgR2VuZSBzZXRzCgpXZSB3aWxsIHVzZSBnZW5lIHNldHMgZnJvbSB0aGUgW01vbGVjdWxhciBTaWduYXR1cmVzIERhdGFiYXNlIChNU2lnREIpXShodHRwczovL3d3dy5nc2VhLW1zaWdkYi5vcmcvZ3NlYS9tc2lnZGIvaW5kZXguanNwKSBmcm9tIHRoZSBCcm9hZCBJbnN0aXR1dGUgKFtTdWJyYW1hbmlhbiwgVGFtYXlvICpldCBhbC4qIDIwMDVdKGh0dHBzOi8vZG9pLm9yZy8xMC4xMDczL3BuYXMuMDUwNjU4MDEwMikpLgpUaGUgW2Btc2lnZGJyYF0oaHR0cHM6Ly9jcmFuLnItcHJvamVjdC5vcmcvd2ViL3BhY2thZ2VzL21zaWdkYnIvaW5kZXguaHRtbCkgcGFja2FnZSBjb250YWlucyBNU2lnREIgZGF0YXNldHMgYWxyZWFkeSBpbiB0aGUgdGlkeSBmb3JtYXQgcmVxdWlyZWQgYnkgYGNsdXN0ZXJQcm9maWxlcmAgYW5kIHN1cHBvcnRzIG11bHRpcGxlIG9yZ2FuaXNtcy4KCkxldCdzIHRha2UgYSBsb29rIGF0IHdoYXQgb3JnYW5pc21zIHRoZSBwYWNrYWdlIHN1cHBvcnRzLgoKYGBge3Igc2hvd19zcGVjaWVzfQptc2lnZGJyX3NwZWNpZXMoKQpgYGAKCk1TaWdEQiBjb250YWlucyA4IGRpZmZlcmVudCBnZW5lIHNldCBjb2xsZWN0aW9ucy4KCiAgICBIOiBoYWxsbWFyayBnZW5lIHNldHMKICAgIEMxOiBwb3NpdGlvbmFsIGdlbmUgc2V0cwogICAgQzI6IGN1cmF0ZWQgZ2VuZSBzZXRzCiAgICBDMzogbW90aWYgZ2VuZSBzZXRzCiAgICBDNDogY29tcHV0YXRpb25hbCBnZW5lIHNldHMKICAgIEM1OiBHTyBnZW5lIHNldHMKICAgIEM2OiBvbmNvZ2VuaWMgc2lnbmF0dXJlcwogICAgQzc6IGltbXVub2xvZ2ljIHNpZ25hdHVyZXMKCldlJ2xsIHVzZSB0aGUgSGFsbG1hcmsgY29sbGVjdGlvbiBmb3IgR1NFQS4KSGVyZSdzIGFuIGV4Y2VycHQgb2YgdGhlIFtjb2xsZWN0aW9uIGRlc2NyaXB0aW9uXShodHRwczovL3d3dy5nc2VhLW1zaWdkYi5vcmcvZ3NlYS9tc2lnZGIvY29sbGVjdGlvbl9kZXRhaWxzLmpzcCNIKToKCj4gSGFsbG1hcmsgZ2VuZSBzZXRzIHN1bW1hcml6ZSBhbmQgcmVwcmVzZW50IHNwZWNpZmljIHdlbGwtZGVmaW5lZCBiaW9sb2dpY2FsIHN0YXRlcyBvciBwcm9jZXNzZXMgYW5kIGRpc3BsYXkgY29oZXJlbnQgZXhwcmVzc2lvbi4gVGhlc2UgZ2VuZSBzZXRzIHdlcmUgZ2VuZXJhdGVkIGJ5IGEgY29tcHV0YXRpb25hbCBtZXRob2RvbG9neSBiYXNlZCBvbiBpZGVudGlmeWluZyBnZW5lIHNldCBvdmVybGFwcyBhbmQgcmV0YWluaW5nIGdlbmVzIHRoYXQgZGlzcGxheSBjb29yZGluYXRlIGV4cHJlc3Npb24uIFRoZSBoYWxsbWFya3MgcmVkdWNlIG5vaXNlIGFuZCByZWR1bmRhbmN5IGFuZCBwcm92aWRlIGEgYmV0dGVyIGRlbGluZWF0ZWQgYmlvbG9naWNhbCBzcGFjZSBmb3IgR1NFQS4KCk5vdGFibHksIHRoZXJlIGFyZSBvbmx5IDUwIGdlbmUgc2V0cyBpbmNsdWRlZCBpbiB0aGlzIGNvbGxlY3Rpb24uClRoZSBmZXdlciBnZW5lIHNldHMgd2UgdGVzdCwgdGhlIGxvd2VyIG91ciBtdWx0aXBsZSBoeXBvdGhlc2lzIHRlc3RpbmcgYnVyZGVuLgoKV2UgY2FuIHJldHJpZXZlIG9ubHkgdGhlIEhhbGxtYXJrIGdlbmUgc2V0cyBieSBzcGVjaWZ5aW5nIGBjYXRlZ29yeSA9ICJIImAgdG8gdGhlIGBtc2lnZGJyKClgIGZ1bmN0aW9uLgoKYGBge3IgaW1tdW5vbG9naWNfc2V0cywgbGl2ZSA9IFRSVUV9CmhzX2hhbGxtYXJrc19kZiA8LSBtc2lnZGJyKHNwZWNpZXMgPSAiSG9tbyBzYXBpZW5zIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgY2F0ZWdvcnkgPSAiSCIpCmBgYAoKIyMgR2VuZSBTZXQgRW5yaWNobWVudCBBbmFseXNpcwoKX0FkYXB0ZWQgZnJvbSBbcmVmaW5lLmJpbyBleGFtcGxlc10oaHR0cHM6Ly9naXRodWIuY29tL0FsZXhzTGVtb25hZGUvcmVmaW5lYmlvLWV4YW1wbGVzL2Jsb2IvMzNjZGVmZjY2ZDU3ZjlmZThlZTRmY2I1MTU2YWVhNGFjMmRjZTA3Zi8wMy1ybmFzZXEvcGF0aHdheS1hbmFseXNpc19ybmFzZXFfMDJfZ3NlYS5SbWQpXwoKIVtdKGRpYWdyYW1zL3N1YnJhbWFuaWFuX2ZpZzEuanBnKQoKKipGaWd1cmUgMS4gW1N1YnJhbWFuaWFuIF9ldCBhbC5fICgyMDA1KV0oaHR0cHM6Ly9kb2kub3JnLzEwLjEwNzMvcG5hcy4wNTA2NTgwMTAyKS4qKgoKR1NFQSBjYWxjdWxhdGVzIGEgcGF0aHdheS1sZXZlbCBtZXRyaWMsIGNhbGxlZCBhbiBlbnJpY2htZW50IHNjb3JlIChzb21ldGltZXMgYWJicmV2aWF0ZWQgYXMgRVMpLCBieSByYW5raW5nIGdlbmVzIGJ5IGEgZ2VuZS1sZXZlbCBzdGF0aXN0aWMuClRoaXMgc2NvcmUgcmVmbGVjdHMgd2hldGhlciBvciBub3QgYSBnZW5lIHNldCBvciBwYXRod2F5IGlzIG92ZXItcmVwcmVzZW50ZWQgYXQgdGhlIHRvcCBvciBib3R0b20gb2YgdGhlIGdlbmUgcmFua2luZ3MgKFtTdWJyYW1hbmlhbiBfZXQgYWwuXyAyMDA1XShodHRwczovL2RvaS5vcmcvMTAuMTA3My9wbmFzLjA1MDY1ODAxMDIpOyBbWXVdKGh0dHA6Ly95dWxhYi1zbXUudG9wL2NsdXN0ZXJQcm9maWxlci1ib29rL2NoYXB0ZXIyLmh0bWwjZ2VuZS1zZXQtZW5yaWNobWVudC1hbmFseXNpcykpCgpTcGVjaWZpY2FsbHksIGFsbCBnZW5lcyBhcmUgcmFua2VkIGZyb20gbW9zdCBwb3NpdGl2ZSB0byBtb3N0IG5lZ2F0aXZlIGJhc2VkIG9uIHRoZWlyIHN0YXRpc3RpYyBhbmQgYSBydW5uaW5nIHN1bSBpcyBjYWxjdWxhdGVkOgpTdGFydGluZyB3aXRoIHRoZSBtb3N0IGhpZ2hseSByYW5rZWQgZ2VuZXMsIHRoZSBydW5uaW5nIHN1bSBpbmNyZWFzZXMgZm9yIGVhY2ggZ2VuZSBpbiB0aGUgcGF0aHdheSBhbmQgZGVjcmVhc2VzIGZvciBlYWNoIGdlbmUgbm90IGluIHRoZSBwYXRod2F5LgpUaGUgZW5yaWNobWVudCBzY29yZSBmb3IgYSBwYXRod2F5IGlzIHRoZSBydW5uaW5nIHN1bSdzIG1heGltdW0gZGV2aWF0aW9uIGZyb20gemVyby4KR1NFQSBhbHNvIGFzc2Vzc2VzIHN0YXRpc3RpY2FsIHNpZ25pZmljYW5jZSBvZiB0aGUgc2NvcmVzIGZvciBlYWNoIHBhdGh3YXkgdGhyb3VnaCBwZXJtdXRhdGlvbiB0ZXN0aW5nLgpBcyBhIHJlc3VsdCwgZWFjaCBpbnB1dCBwYXRod2F5IHdpbGwgaGF2ZSBhIHAtdmFsdWUgYXNzb2NpYXRlZCB3aXRoIGl0IHRoYXQgaXMgdGhlbiBjb3JyZWN0ZWQgZm9yIG11bHRpcGxlIGh5cG90aGVzaXMgdGVzdGluZyAoW1N1YnJhbWFuaWFuIF9ldCBhbC5fIDIwMDVdKGh0dHBzOi8vZG9pLm9yZy8xMC4xMDczL3BuYXMuMDUwNjU4MDEwMik7IFtZdV0oaHR0cDovL3l1bGFiLXNtdS50b3AvY2x1c3RlclByb2ZpbGVyLWJvb2svY2hhcHRlcjIuaHRtbCNnZW5lLXNldC1lbnJpY2htZW50LWFuYWx5c2lzKSkuCgpUaGUgaW1wbGVtZW50YXRpb24gb2YgR1NFQSB3ZSB1c2UgaGVyZSByZXF1aXJlcyBhIGdlbmUgbGlzdCBvcmRlcmVkIGJ5IHNvbWUgc3RhdGlzdGljIGFuZCBpbnB1dCBnZW5lIHNldHMuCldoZW4geW91IHVzZSBwcmV2aW91c2x5IGNvbXB1dGVkIGdlbmUtbGV2ZWwgc3RhdGlzdGljcyB3aXRoIEdTRUEsIGl0IGlzIGNhbGxlZCBHU0VBIHByZS1yYW5rZWQuCgojIyBERVNlcTIgcmVzdWx0cwoKYGBge3IgcmVhZF9pbl9tYXJrZXJzLCBsaXZlID0gVFJVRX0KZGVzZXFfZGYgPC0gcmVhZHI6OnJlYWRfdHN2KGlucHV0X2ZpbGUpCmBgYAoKYGBge3IgZGVzZXFfaGVhZH0KaGVhZChkZXNlcV9kZikKYGBgCgpUaGlzIGRhdGEgZnJhbWUgdXNlcyBFbnNlbWJsIGdlbmUgaWRlbnRpZmllcnMuCldlJ2xsIG5lZWQgdG8gbWFrZSBzdXJlIG91ciBnZW5lIHNldHMgdXNlIHRoZSBzYW1lIGlkZW50aWZpZXJzLgpMZXQncyB0YWtlIGEgbG9vayBhdCB0aGUgZmlyc3QgZmV3IHJvd3Mgb2YgdGhlIGRhdGEgZnJhbWUgdGhhdCBjb250YWlucyB0aGUgaGFsbG1hcmsgZ2VuZSBzZXRzLgoKYGBge3IgaGFsbG1hcmtfaGVhZCwgbGl2ZSA9IFRSVUV9CmhlYWQoaHNfaGFsbG1hcmtzX2RmKQpgYGAKCldlIGNhbiBzZWUgdGhhdCB0aGUgZ2VuZSBzZXRzIGZyb20gYG1zaWdkYnJgIGhhdmUgRW5zZW1ibCBnZW5lIGlkZW50aWZpZXJzIGFzc29jaWF0ZWQgd2l0aCB0aGVtLCBzbyB3ZSBkb24ndCBuZWVkIHRvIGRvIGFueSBjb252ZXJzaW9uLgpIb3dldmVyLCB3ZSdsbCBuZWVkIHRvIHBhc3MgdGhlIGNvcnJlY3QgY29sdW1uIHRvIHRoZSBmdW5jdGlvbiB0aGF0IHJ1bnMgR1NFQS4KCklmIHdlIG5lZWRlZCB0byBkbyBnZW5lIGlkZW50aWZpZXIgY29udmVyc2lvbiwgd2Ugd291bGQgbGlrZWx5IHVzZSB0aGUgYEFubm90YXRpb25EYmlgIHBhY2thZ2UuCllvdSBjYW4gc2VlIGFuIGV4YW1wbGUgaW4gdGhpcyBIYXJ2YXJkIENoYW4gQmlvaW5mb3JtYXRpY3MgQ29yZSBUcmFpbmluZyBtYXRlcmlhbDogPGh0dHBzOi8vaGJjdHJhaW5pbmcuZ2l0aHViLmlvL0RHRV93b3Jrc2hvcF9zYWxtb25fb25saW5lL2xlc3NvbnMvQW5ub3RhdGlvbkRiaV9sZXNzb24uaHRtbD4KCk9uZSBnb29kIHRoaW5nIGFib3V0IEVuc2VtYmwgZ2VuZSBpZGVudGlmaWVycyBpcyB0aGF0IHRoZXkgYXJlIGxlc3MgbGlrZWx5IHRvIGJlIGR1cGxpY2F0ZWQgdGhhbiwgZm9yIGV4YW1wbGUsIGdlbmUgc3ltYm9scy4KKE11bHRpcGxlIEVuc2VtYmwgZ2VuZSBpZGVudGlmaWVycyBjYW4gbWFwIHRvIHRoZSBzYW1lIHN5bWJvbC4pCgpUaGUgR1NFQSBhcHByb2FjaCByZXF1aXJlcyBkaXNjcmltaW5hdGluZyBiZXR3ZWVuIGdlbmVzIHRoYXQgYXJlIGluIGEgZ2VuZSBzZXQgYW5kIHRob3NlIHRoYXQgYXJlIG5vdC4KUHJhY3RpY2FsbHkgc3BlYWtpbmcsIGdlbmUgc2V0cyBhcmUganVzdCBjb2xsZWN0aW9ucyBvZiBnZW5lIGlkZW50aWZpZXJzIQpXaGVuIHRoZSBmdW5jdGlvbiB3ZSB1c2UgZm9yIEdTRUEgcHJlLXJhbmtlZCBnZXRzIGEgbGlzdCB3aXRoIGR1cGxpY2F0ZWQgZ2VuZSBpZGVudGlmaWVycywgaXQgY2FuIHByb2R1Y2UgdW5leHBlY3RlZCByZXN1bHRzLgpTbywgbGV0J3MgY2hlY2sgZm9yIGR1cGxpY2F0ZXMgaW4gdGhlIGRhdGEgZnJhbWUgb2YgREVTZXEyIHJlc3VsdHMuCgpgYGB7ciBjaGVja19kdXBsaWNhdGVzLCBsaXZlID0gVFJVRX0KYW55KGR1cGxpY2F0ZWQoZGVzZXFfZGYkZW5zZW1ibF9pZCkpCmBgYAoKVGhlcmUgYXJlIG5vIGR1cGxpY2F0ZXMgZm9yIHVzIHRvIHdvcnJ5IGFib3V0IQoKIyMjIFByZS1yYW5rZWQgbGlzdAoKVGhlIGBHU0VBKClgIGZ1bmN0aW9uIHRha2VzIGEgcHJlLXJhbmtlZCAoc29ydGVkKSBuYW1lZCB2ZWN0b3Igb2Ygc3RhdGlzdGljcywgd2hlcmUgdGhlIG5hbWVzIGluIHRoZSB2ZWN0b3IgYXJlIGdlbmUgaWRlbnRpZmllcnMuClRoaXMgaXMgc3RlcCAxIC0tIGdlbmUtbGV2ZWwgc3RhdGlzdGljcy4KCmBgYHtyIGxmY192ZWN0b3J9CmxmY192ZWN0b3IgPC0gZGVzZXFfZGYgfD4KICAjIEV4dHJhY3QgYSB2ZWN0b3Igb2YgYGxvZzJGb2xkQ2hhbmdlYCBuYW1lZCBieSBgZW5zZW1ibF9pZGAKICBkcGx5cjo6cHVsbChsb2cyRm9sZENoYW5nZSwgbmFtZSA9IGVuc2VtYmxfaWQpCmxmY192ZWN0b3IgPC0gc29ydChsZmNfdmVjdG9yLCBkZWNyZWFzaW5nID0gVFJVRSkKYGBgCgpMZXQncyBsb29rIGF0IHRoZSB0b3AgcmFua2VkIHZhbHVlcy4KCmBgYHtyIGhlYWRfbGZjLCBsaXZlID0gVFJVRX0KIyBMb29rIGF0IGZpcnN0IGVudHJpZXMgb2YgdGhlIGxvZyBmb2xkIGNoYW5nZSB2ZWN0b3IKaGVhZChsZmNfdmVjdG9yKQpgYGAKCkFuZCB0aGUgYm90dG9tIG9mIHRoZSBsaXN0LgoKYGBge3IgdGFpbF9sZmMsIGxpdmUgPSBUUlVFfQojIExvb2sgYXQgdGhlIGxhc3QgZW50cmllcyBvZiB0aGUgbG9nIGZvbGQgY2hhbmdlIHZlY3Rvcgp0YWlsKGxmY192ZWN0b3IpCmBgYAoKIyMgUnVuIEdTRUEKCk5vdyBmb3IgdGhlIGFuYWx5c2lzIQoKV2UgY2FuIHVzZSB0aGUgYEdTRUEoKWAgZnVuY3Rpb24gdG8gcGVyZm9ybSBHU0VBIHdpdGggYW55IGdlbmVyaWMgc2V0IG9mIGdlbmUgc2V0cywgYnV0IHRoZXJlIGFyZSBzZXZlcmFsIGZ1bmN0aW9ucyBmb3IgdXNpbmcgc3BlY2lmaWMsIGNvbW1vbmx5IHVzZWQgZ2VuZSBzZXRzIChlLmcuLCBgZ3NlS0VHRygpYCkuCgpgYGB7ciBydW5fZ3NlYX0KZ3NlYV9yZXN1bHRzIDwtIEdTRUEoZ2VuZUxpc3QgPSBsZmNfdmVjdG9yLCAgIyBvcmRlcmVkIHJhbmtlZCBnZW5lIGxpc3QKICAgICAgICAgICAgICAgICAgICAgbWluR1NTaXplID0gMjUsICAjIG1pbmltdW0gZ2VuZSBzZXQgc2l6ZQogICAgICAgICAgICAgICAgICAgICBtYXhHU1NpemUgPSA1MDAsICAjIG1heGltdW0gZ2VuZSBzZXQgc2V0CiAgICAgICAgICAgICAgICAgICAgIHB2YWx1ZUN1dG9mZiA9IDAuMDUsCiAgICAgICAgICAgICAgICAgICAgIHBBZGp1c3RNZXRob2QgPSAiQkgiLCAgIyBjb3JyZWN0aW9uIGZvciBtdWx0aXBsZSBoeXBvdGhlc2lzIHRlc3RpbmcKICAgICAgICAgICAgICAgICAgICAgVEVSTTJHRU5FID0gZHBseXI6OnNlbGVjdChoc19oYWxsbWFya3NfZGYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3NfbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnNlbWJsX2dlbmUpKSAgIyBwYXNzIHRoZSBjb3JyZWN0IGlkZW50aWZpZXIgY29sdW1uCmBgYApMZXQncyB0YWtlIGEgbG9vayBhdCB0aGUgR1NFQSByZXN1bHRzLgoKYGBge3Igdmlld19nc2VhLCBsaXZlID0gVFJVRSwgZXZhbCA9IEZBTFNFfQpWaWV3KAogIGdzZWFfcmVzdWx0c0ByZXN1bHQgfD4KICAgIGRwbHlyOjphcnJhbmdlKGRwbHlyOjpkZXNjKE5FUykpCikKYGBgCgpOb3JtYWxpemVkIGVucmljaG1lbnQgc2NvcmVzIChORVMpIGFyZSBlbnJpY2htZW50IHNjb3JlcyB0aGF0IGFyZSBzY2FsZWQgdG8gbWFrZSBnZW5lIHNldHMgdGhhdCBjb250YWluIGRpZmZlcmVudCBudW1iZXIgb2YgZ2VuZXMgY29tcGFyYWJsZS4KClBhdGh3YXlzIHdpdGggc2lnbmlmaWNhbnQsIGhpZ2hseSBwb3NpdGl2ZSBORVMgYXJlIGVucmljaGVkIGluIEVSTVMgbXlvYmxhc3RzLCB3aGVyZWFzIHBhdGh3YXlzIHdpdGggc2lnbmlmaWNhbnQsIGhpZ2hseSBuZWdhdGl2ZSBORVMgYXJlIGVucmljaGVkIGluIEFSTVMgbXlvYmxhc3RzLgoKTGV0J3Mgd3JpdGUgdGhlc2UgcmVzdWx0cyB0byBhIGZpbGUuCgpgYGB7ciB3cml0ZV9nc2VhfQpnc2VhX3Jlc3VsdHNAcmVzdWx0IHw+IAogIHJlYWRyOjp3cml0ZV90c3Yob3V0cHV0X2ZpbGUpCmBgYAoKIyMjIFZpc3VhbGl6aW5nIEdTRUEgcmVzdWx0cwoKV2UgY2FuIHZpc3VhbGl6ZSBHU0VBIHJlc3VsdHMgZm9yIGluZGl2aWR1YWwgcGF0aHdheXMgb3IgZ2VuZSBzZXRzIHVzaW5nIGBlbnJpY2hwbG90Ojpnc2VhcGxvdCgpYC4KTGV0J3MgdGFrZSBhIGxvb2sgYXQgMyBkaWZmZXJlbnQgcGF0aHdheXMgLS0gb25lIHdpdGggYSBoaWdobHkgcG9zaXRpdmUgTkVTLCBvbmUgd2l0aCBhIGhpZ2hseSBuZWdhdGl2ZSBORVMsIGFuZCBvbmUgdGhhdCB3YXMgbm90IGEgc2lnbmlmaWNhbnQgcmVzdWx0IC0tIHRvIGdldCBtb3JlIGluc2lnaHQgaW50byBob3cgRVMgYXJlIGNhbGN1bGF0ZWQuCgojIyMjIEhpZ2hseSBQb3NpdGl2ZSBORVMKCkxldCdzIHRha2UgbG9vayBhdCBhIHBhdGh3YXkgd2l0aCBhIGhpZ2hseSBwb3NpdGl2ZSBORVMgKGBIQUxMTUFSS19NWUNfVEFSR0VUU19WMmApIHVzaW5nIGEgR1NFQSBwbG90LgoKYGBge3IgaGlnaGx5X3Bvc30KZW5yaWNocGxvdDo6Z3NlYXBsb3QoZ3NlYV9yZXN1bHRzLAogICAgICAgICAgICAgICAgICAgICBnZW5lU2V0SUQgPSAiSEFMTE1BUktfTVlDX1RBUkdFVFNfVjIiLAogICAgICAgICAgICAgICAgICAgICB0aXRsZSA9ICJIQUxMTUFSS19NWUNfVEFSR0VUU19WMiIsCiAgICAgICAgICAgICAgICAgICAgIGNvbG9yLmxpbmUgPSAiIzAwNjZGRiIpCmBgYAoKTm90aWNlIGhvdyB0aGUgZ2VuZXMgdGhhdCBhcmUgaW4gdGhlIGdlbmUgc2V0LCBpbmRpY2F0ZWQgYnkgdGhlIGJsYWNrIGJhcnMsIHRlbmQgdG8gYmUgb24gdGhlIGxlZnQgc2lkZSBvZiB0aGUgZ3JhcGggaW5kaWNhdGluZyB0aGF0IHRoZXkgaGF2ZSBwb3NpdGl2ZSBnZW5lLWxldmVsIHNjb3Jlcy4KCiMjIyMgSGlnaGx5IE5lZ2F0aXZlIE5FUwoKVGhlIGdlbmUgc2V0IGBIQUxMTUFSS19NWU9HRU5FU0lTYCBoYWQgYSBoaWdobHkgbmVnYXRpdmUgTkVTLgoKYGBge3IgaGlnaGx5X25lZ30KZW5yaWNocGxvdDo6Z3NlYXBsb3QoZ3NlYV9yZXN1bHRzLAogICAgICAgICAgICAgICAgICAgICBnZW5lU2V0SUQgPSAiSEFMTE1BUktfTVlPR0VORVNJUyIsCiAgICAgICAgICAgICAgICAgICAgIHRpdGxlID0gIkhBTExNQVJLX01ZT0dFTkVTSVMiLAogICAgICAgICAgICAgICAgICAgICBjb2xvci5saW5lID0gIiMwMDY2RkYiKQpgYGAKClRoaXMgZ2VuZSBzZXQgc2hvd3MgdGhlIG9wcG9zaXRlIHBhdHRlcm4gLS0gZ2VuZXMgaW4gdGhlIHBhdGh3YXkgdGVuZCB0byBiZSBvbiB0aGUgcmlnaHQgc2lkZSBvZiB0aGUgZ3JhcGguCgojIyMjIEEgbm9uLXNpZ25pZmljYW50IHJlc3VsdAoKVGhlIGBAcmVzdWx0c2Agc2xvdCB3aWxsIG9ubHkgc2hvdyBnZW5lIHNldHMgdGhhdCBwYXNzIHRoZSBgcHZhbHVlQ3V0b2ZmYCB0aHJlc2hvbGQgd2Ugc3VwcGxpZWQgdG8gYEdTRUEoKWAsIGJ1dCB3ZSBjYW4gcGxvdCBhbnkgZ2VuZSBzZXQgc28gbG9uZyBhcyB3ZSBrbm93IGl0cyBuYW1lLgpMZXQncyBsb29rIGF0IGBIQUxMTUFSS19QNTNfUEFUSFdBWWAsIHdoaWNoIHdhcyBub3QgaW4gdGhlIHJlc3VsdHMgd2Ugdmlld2VkIGVhcmxpZXIuCgpgYGB7ciBwNTMsIGxpdmUgPSBUUlVFfQplbnJpY2hwbG90Ojpnc2VhcGxvdChnc2VhX3Jlc3VsdHMsCiAgICAgICAgICAgICAgICAgICAgIGdlbmVTZXRJRCA9ICJIQUxMTUFSS19QNTNfUEFUSFdBWSIsCiAgICAgICAgICAgICAgICAgICAgIHRpdGxlID0gIkhBTExNQVJLX1A1M19QQVRIV0FZIiwKICAgICAgICAgICAgICAgICAgICAgY29sb3IubGluZSA9ICIjMDA2NkZGIikKYGBgCgpHZW5lcyBpbiB0aGUgcGF0aHdheSBhcmUgZGlzdHJpYnV0ZWQgbW9yZSBldmVubHkgdGhyb3VnaG91dCB0aGUgcmFua2VkIGxpc3QsIHJlc3VsdGluZyBpbiBhIG1vcmUgIm1pZGRsaW5nIiBzY29yZS4KCipOb3RlOiBUaGUgcGxvdHMgcmV0dXJuZWQgYnkgYGVucmljaHBsb3Q6OmdzZWFwbG90YCBhcmUgZ2dwbG90cywgc28gd2UgY291bGQgdXNlIGBnZ3Bsb3QyOjpnZ3NhdmUoKWAgdG8gc2F2ZSB0aGVtIHRvIGZpbGUgaWYgd2Ugd2FudGVkIHRvLioKCiMjIFNlc3Npb24gSW5mbwoKYGBge3Igc2Vzc2lvbl9pbmZvfQpzZXNzaW9uSW5mbygpCmBgYAo=
    diff --git a/scRNA-seq-advanced/05-aucell-live.Rmd b/scRNA-seq-advanced/05-aucell-live.Rmd index 67e7a408..f6280b01 100644 --- a/scRNA-seq-advanced/05-aucell-live.Rmd +++ b/scRNA-seq-advanced/05-aucell-live.Rmd @@ -18,21 +18,21 @@ date: 2024 --- -In this notebook, we'll demonstrate how to use the AUCell method, introduced in [Aibar _et al_. 2017.](https://doi.org/10.1038/nmeth.4463). +In this notebook, we'll demonstrate how to use the `AUCell` method, introduced in [Aibar _et al_. 2017.](https://doi.org/10.1038/nmeth.4463). -We can use AUCell when we are interested in a gene set's relative expression or activity in an individual cell. +We can use `AUCell` when we are interested in a gene set's relative expression or activity in an individual cell. Gene sets can come from a curated collection of prior knowledge, like the Hallmark collection we used in the last notebook, or we can use our own custom gene sets (e.g., a set of marker genes for a cell type of interest). -A nice feature of AUCell is that it is based on ranking genes from highest to lowest expression value in an individual cell, which is helpful in the following ways ([AUCell vignette](https://bioconductor.org/packages/release/bioc/vignettes/AUCell/inst/doc/AUCell.html)): +A nice feature of `AUCell` is that it is based on ranking genes from highest to lowest expression value in an individual cell, which is helpful in the following ways ([`AUCell` vignette](https://bioconductor.org/packages/release/bioc/vignettes/AUCell/inst/doc/AUCell.html)): - It can take a number of different values as input (e.g., raw counts, TPM) - It compensates for differences in library size, where something like averaging raw count values of genes in a gene set would not - It scales to larger datasets, since creating rankings is not as resource-intensive as something like permutation testing, and we could split up the object into subsets of cells if needed -AUCell calculates the area under the recovery curve (AUC), which "represents the proportion of expressed genes in the signature and their relative expression value compared to the other genes within the cell" ([Aibar _et al_. 2017.](https://doi.org/10.1038/nmeth.4463)). +`AUCell` calculates the area under the recovery curve (AUC), which "represents the proportion of expressed genes in the signature and their relative expression value compared to the other genes within the cell" ([Aibar _et al_. 2017.](https://doi.org/10.1038/nmeth.4463)). We will visualize some recovery curves in the notebook to give you a better intuition about the AUC and its meaning. -The AUC values we get out of AUCell can be used in a number of ways ([Aibar _et al_. 2017.](https://doi.org/10.1038/nmeth.4463)): +The AUC values we get out of `AUCell` can be used in a number of ways ([Aibar _et al_. 2017.](https://doi.org/10.1038/nmeth.4463)): - As continuous values we can use for visualization or clustering - For binary assignment (i.e., "on" and "off" or "expressed" and "not expressed") if we pick a threshold either automatically using built-in functionality or manually by inspecting the distribution of scores ourselves @@ -82,7 +82,7 @@ sce_file <- fs::path(processed_dir, "SCPCL000822_processed.rds") ``` -We will save the AUCell results as a table in the analysis directory. +We will save the `AUCell` results as a table in the analysis directory. ```{r setup_output_files, live = TRUE} @@ -98,7 +98,7 @@ source(fs::path("util", "aucell_functions.R")) ``` This loads one custom function, called `plot_recovery_curve()`, into our environment. -This function is adapted from [the AUCell vignette](https://github.com/aertslab/AUCell/blob/91753b327a39dc7a4bbed46408ec2271c485f2f0/vignettes/AUCell.Rmd#L295-L316). +This function is adapted from [the `AUCell` vignette](https://github.com/aertslab/AUCell/blob/91753b327a39dc7a4bbed46408ec2271c485f2f0/vignettes/AUCell.Rmd#L295-L316). ## Set up gene sets @@ -146,21 +146,33 @@ ewing_gene_set_collection <- ewing_gene_set_names |> GeneSetCollection() ``` -## Read in and prepare SingleCellExperiment +## Read in and prepare the `SingleCellExperiment` ```{r read_in_sce, live = TRUE} ``` +Our object includes counts for all genes that were present in the index when quantifying gene expression. +There are a number of genes that are present in the object but not detected in any of the cells. +We don't want genes that are not found in our data set to impact our rankings, so let's remove them. + +```{r, filter_sce} +# remove genes that are not detected in any of the cells from the SCE object +genes_to_keep <- rowData(sce)$detected > 0 +sce <- sce[genes_to_keep, ] +``` + + The `AUCell` functions takes an expression matrix with genes as rows and cells as column. We can extract a counts matrix in sparse format for use with `AUCell`. + ```{r counts_matrix} # Extract counts matrix counts_matrix <- counts(sce) ``` -There may be genes in our gene set that do not appear in the SingleCellExperiment object. +There may be genes in our gene set that do not appear in the `SingleCellExperiment` object. We can remove them using the `subsetGeneSets()` function. ```{r subset_gene_sets, live = TRUE} @@ -168,9 +180,9 @@ We can remove them using the `subsetGeneSets()` function. ``` -## AUCell +## `AUCell` -AUCell relies on ranking genes from highest to lowest expression value to calculate the AUC. +`AUCell` relies on ranking genes from highest to lowest expression value to calculate the AUC. The AUC is the area under the recovery curve, which captures the number of genes in a gene set that are present in the rankings above some threshold (i.e., it is the area under the curve to the left of this gene rank). By default, the top 5% of genes are used as the threshold. @@ -185,16 +197,16 @@ To make our rankings – and therefore results – reproducible, we will set a s ### Cell ranking -The first step in AUCell is to rank genes for each cell from highest to lowest expression value. -We can do this using the `AUCell_buildRankings()` function, which will output a visualization showing the distribution of the number of genes detected in the cells in our SingleCellExperiment object. +The first step in `AUCell` is to rank genes for each cell from highest to lowest expression value. +We can do this using the `AUCell_buildRankings()` function, which will output a visualization showing the distribution of the number of genes detected in the cells in our `SingleCellExperiment` object. ```{r cell_rankings, live = TRUE} ``` -The AUCell authors recommend making sure most cells have at least the number of genes we will use as the max rank to calculate the AUC. +The `AUCell` authors recommend making sure most cells have at least the number of genes we will use as the max rank to calculate the AUC. -The AUC max rank value tells AUCell the cutoff in the gene rankings to use for calculating AUC; we will visualize this curve and max rank in just a moment. +The AUC max rank value tells `AUCell` the cutoff in the gene rankings to use for calculating AUC; we will visualize this curve and max rank in just a moment. If we picked a max rank higher than the number of genes detected in most cells, the non-detected genes that are randomly ordered would play an outsized role in our AUC values. By default, the max rank is the top 5% highest expressed genes. @@ -222,10 +234,10 @@ We can use a function called `ceiling()` to round this and save it to a variable ### Plotting AUC -The AUC values we get out of AUCell are the area under a recovery curve and estimate the proportion of genes in the gene set that are highly expressed (i.e., highly ranked). +The AUC values we get out of `AUCell` are the area under a recovery curve and estimate the proportion of genes in the gene set that are highly expressed (i.e., highly ranked). Let's plot the recovery curve for a cell with high AUC and a cell with low AUC to get a better intuition about AUC values. -Earlier, we loaded a custom function we adapted from [the AUCell vignette](https://github.com/aertslab/AUCell/blob/91753b327a39dc7a4bbed46408ec2271c485f2f0/vignettes/AUCell.Rmd) called `plot_recovery_curve()` with `source()`. +Earlier, we loaded a custom function we adapted from [the `AUCell` vignette](https://github.com/aertslab/AUCell/blob/91753b327a39dc7a4bbed46408ec2271c485f2f0/vignettes/AUCell.Rmd) called `plot_recovery_curve()` with `source()`. First, we'll start with a cell with a high AUC. We picked this barcode ahead of time when we wrote the notebook. @@ -286,7 +298,7 @@ head(auc_df) ### Assignments -AUCell can assign cells as having an active gene set or not by picking a threshold automatically. +`AUCell` can assign cells as having an active gene set or not by picking a threshold automatically. We'll explore these in a later plot, but for now, let's calculate the threshold and assign cells with `AUCell_exploreThresholds()`. ```{r auc_assignments, live = TRUE} @@ -367,7 +379,7 @@ auc_plotting_df |> #### Adding AUC to `colData` -We can also add the AUC values back into the SingleCellExperiment for convenience, e.g., for plotting. +We can also add the AUC values back into the `SingleCellExperiment` for convenience, e.g., for plotting. We'll add it to the existing `colData`. First, let's rename the gene set columns to something more easily typed. diff --git a/scRNA-seq-advanced/05-aucell.nb.html b/scRNA-seq-advanced/05-aucell.nb.html index b10258db..7300e6c4 100644 --- a/scRNA-seq-advanced/05-aucell.nb.html +++ b/scRNA-seq-advanced/05-aucell.nb.html @@ -2898,17 +2898,17 @@

    Objectives

    plotting
    -

    In this notebook, we’ll demonstrate how to use the AUCell method, -introduced in Aibar et -al. 2017..

    -

    We can use AUCell when we are interested in a gene set’s relative -expression or activity in an individual cell. Gene sets can come from a -curated collection of prior knowledge, like the Hallmark collection we -used in the last notebook, or we can use our own custom gene sets (e.g., -a set of marker genes for a cell type of interest).

    -

    A nice feature of AUCell is that it is based on ranking genes from -highest to lowest expression value in an individual cell, which is -helpful in the following ways (AUCell +

    In this notebook, we’ll demonstrate how to use the +AUCell method, introduced in Aibar et al. +2017..

    +

    We can use AUCell when we are interested in a gene set’s +relative expression or activity in an individual cell. Gene sets can +come from a curated collection of prior knowledge, like the Hallmark +collection we used in the last notebook, or we can use our own custom +gene sets (e.g., a set of marker genes for a cell type of interest).

    +

    A nice feature of AUCell is that it is based on ranking +genes from highest to lowest expression value in an individual cell, +which is helpful in the following ways (AUCell vignette):

    • It can take a number of different values as input (e.g., raw counts, @@ -2919,15 +2919,15 @@

      Objectives

      resource-intensive as something like permutation testing, and we could split up the object into subsets of cells if needed
    -

    AUCell calculates the area under the recovery curve (AUC), which -“represents the proportion of expressed genes in the signature and their -relative expression value compared to the other genes within the cell” -(Aibar et al. +

    AUCell calculates the area under the recovery curve +(AUC), which “represents the proportion of expressed genes in the +signature and their relative expression value compared to the other +genes within the cell” (Aibar et al. 2017.). We will visualize some recovery curves in the notebook to give you a better intuition about the AUC and its meaning.

    -

    The AUC values we get out of AUCell can be used in a number of ways -(Aibar et al. -2017.):

    +

    The AUC values we get out of AUCell can be used in a +number of ways (Aibar +et al. 2017.):

    • As continuous values we can use for visualization or clustering
    • For binary assignment (i.e., “on” and “off” or “expressed” and “not @@ -3022,8 +3022,8 @@

      Files

      -

      We will save the AUCell results as a table in the analysis -directory.

      +

      We will save the AUCell results as a table in the +analysis directory.

      @@ -3048,7 +3048,7 @@

      Functions

      This loads one custom function, called plot_recovery_curve(), into our environment. This function is adapted from the -AUCell vignette.

      +AUCell vignette.

    @@ -3121,8 +3121,8 @@

    Set up gene sets

    -
    -

    Read in and prepare SingleCellExperiment

    +
    +

    Read in and prepare the SingleCellExperiment

    @@ -3130,6 +3130,20 @@

    Read in and prepare SingleCellExperiment

    +

    Our object includes counts for all genes that were present in the +index when quantifying gene expression. There are a number of genes that +are present in the object but not detected in any of the cells. We don’t +want genes that are not found in our data set to impact our rankings, so +let’s remove them.

    + + + +
    # remove genes that are not detected in any of the cells from the SCE object
    +genes_to_keep <- rowData(sce)$detected > 0
    +sce <- sce[genes_to_keep, ]
    + + +

    The AUCell functions takes an expression matrix with genes as rows and cells as column. We can extract a counts matrix in sparse format for use with AUCell.

    @@ -3142,7 +3156,7 @@

    Read in and prepare SingleCellExperiment

    There may be genes in our gene set that do not appear in the -SingleCellExperiment object. We can remove them using the +SingleCellExperiment object. We can remove them using the subsetGeneSets() function.

    @@ -3155,13 +3169,13 @@

    Read in and prepare SingleCellExperiment

    -

    AUCell

    -

    AUCell relies on ranking genes from highest to lowest expression -value to calculate the AUC. The AUC is the area under the recovery -curve, which captures the number of genes in a gene set that are present -in the rankings above some threshold (i.e., it is the area under the -curve to the left of this gene rank). By default, the top 5% of genes -are used as the threshold.

    +

    AUCell

    +

    AUCell relies on ranking genes from highest to lowest +expression value to calculate the AUC. The AUC is the area under the +recovery curve, which captures the number of genes in a gene set that +are present in the rankings above some threshold (i.e., it is the area +under the curve to the left of this gene rank). By default, the top 5% +of genes are used as the threshold.

    Some genes will not be detected (i.e., have 0 counts). Genes can also have the same expression level (i.e., ties). These undetected genes and ties will be randomly ordered in our ranking. To make our rankings – and @@ -3175,11 +3189,11 @@

    AUCell

    Cell ranking

    -

    The first step in AUCell is to rank genes for each cell from highest -to lowest expression value. We can do this using the +

    The first step in AUCell is to rank genes for each cell +from highest to lowest expression value. We can do this using the AUCell_buildRankings() function, which will output a visualization showing the distribution of the number of genes detected -in the cells in our SingleCellExperiment object.

    +in the cells in our SingleCellExperiment object.

    @@ -3198,13 +3212,14 @@

    Cell ranking

    -

    The AUCell authors recommend making sure most cells have at least the -number of genes we will use as the max rank to calculate the AUC.

    -

    The AUC max rank value tells AUCell the cutoff in the gene rankings -to use for calculating AUC; we will visualize this curve and max rank in -just a moment. If we picked a max rank higher than the number of genes -detected in most cells, the non-detected genes that are randomly ordered -would play an outsized role in our AUC values.

    +

    The AUCell authors recommend making sure most cells have +at least the number of genes we will use as the max rank to calculate +the AUC.

    +

    The AUC max rank value tells AUCell the cutoff in the +gene rankings to use for calculating AUC; we will visualize this curve +and max rank in just a moment. If we picked a max rank higher than the +number of genes detected in most cells, the non-detected genes that are +randomly ordered would play an outsized role in our AUC values.

    By default, the max rank is the top 5% highest expressed genes. We can calculate the default max rank by taking into account the number of genes.

    @@ -3213,8 +3228,8 @@

    Cell ranking

    nrow(cell_rankings) * 0.05
    - -
    [1] 3015.95
    + +
    [1] 1745.7
    @@ -3227,8 +3242,8 @@

    Cell ranking

    nrow(cell_rankings) * 0.01
    - -
    [1] 603.19
    + +
    [1] 349.14
    @@ -3245,14 +3260,14 @@

    Cell ranking

    Plotting AUC

    -

    The AUC values we get out of AUCell are the area under a recovery -curve and estimate the proportion of genes in the gene set that are -highly expressed (i.e., highly ranked).

    +

    The AUC values we get out of AUCell are the area under a +recovery curve and estimate the proportion of genes in the gene set that +are highly expressed (i.e., highly ranked).

    Let’s plot the recovery curve for a cell with high AUC and a cell with low AUC to get a better intuition about AUC values. Earlier, we loaded a custom function we adapted from the -AUCell vignette called plot_recovery_curve() with -source().

    +AUCell vignette called +plot_recovery_curve() with source().

    First, we’ll start with a cell with a high AUC. We picked this barcode ahead of time when we wrote the notebook.

    @@ -3265,7 +3280,7 @@

    Plotting AUC

    auc_max_rank = auc_max_rank) # 1% threshold
    -

    +

    @@ -3285,7 +3300,7 @@

    Plotting AUC

    auc_max_rank = auc_max_rank) # 1% threshold
    -

    +

    @@ -3312,7 +3327,7 @@

    Calculating the AUC

    str(cell_auc)
    - +
    Formal class 'aucellResults' [package "AUCell"] with 6 slots
       ..@ nGenesDetected : num(0) 
       ..@ colData        :Formal class 'DFrame' [package "S4Vectors"] with 6 slots
    @@ -3325,7 +3340,7 @@ 

    Calculating the AUC

    ..@ assays :Formal class 'SimpleAssays' [package "SummarizedExperiment"] with 1 slot .. .. ..@ data:Formal class 'SimpleList' [package "S4Vectors"] with 4 slots .. .. .. .. ..@ listData :List of 1 - .. .. .. .. .. ..$ AUC: num [1:2, 1:4277] 0.1103 0.1206 0.0352 0.0538 0.1671 ... + .. .. .. .. .. ..$ AUC: num [1:2, 1:4277] 0.0912 0.1544 0.0179 0.051 0.1426 ... .. .. .. .. .. .. ..- attr(*, "dimnames")=List of 2 .. .. .. .. .. .. .. ..$ gene sets: chr [1:2] "ZHANG_TARGETS_OF_EWSR1_FLI1_FUSION" "RIGGI_EWING_SARCOMA_PROGENITOR_UP" .. .. .. .. .. .. .. ..$ cells : chr [1:4277] "AAGCATCTCGTTGCCT" "CTGTATTTCCAAGAGG" "CAGCAGCTCCTCAGAA" "AGGTCTAAGGGACTGT" ... @@ -3363,7 +3378,7 @@

    Calculating the AUC

    @@ -3371,9 +3386,9 @@

    Calculating the AUC

    Assignments

    -

    AUCell can assign cells as having an active gene set or not by -picking a threshold automatically. We’ll explore these in a later plot, -but for now, let’s calculate the threshold and assign cells with +

    AUCell can assign cells as having an active gene set or +not by picking a threshold automatically. We’ll explore these in a later +plot, but for now, let’s calculate the threshold and assign cells with AUCell_exploreThresholds().

    @@ -3414,7 +3429,7 @@

    Assignments

    @@ -3435,7 +3450,7 @@

    Assignments

    @@ -3465,7 +3480,7 @@

    Assignments

    ggplot2::theme_bw()
    -

    +

    @@ -3486,9 +3501,9 @@

    Assignments

    UMAPs

    Adding AUC to colData

    -

    We can also add the AUC values back into the SingleCellExperiment for -convenience, e.g., for plotting. We’ll add it to the existing -colData.

    +

    We can also add the AUC values back into the +SingleCellExperiment for convenience, e.g., for plotting. +We’ll add it to the existing colData.

    First, let’s rename the gene set columns to something more easily typed.

    @@ -3544,7 +3559,7 @@

    Plotting UMAPs

    " ")) -

    +

    @@ -3558,7 +3573,7 @@

    Plotting UMAPs

    " ")) -

    +

    @@ -3665,7 +3680,7 @@

    Session Info

    -
    LS0tCnRpdGxlOiAiUGF0aHdheSBBbmFseXNpczogQVVDZWxsIgpvdXRwdXQ6CiAgaHRtbF9ub3RlYm9vazoKICAgIHRvYzogdHJ1ZQogICAgdG9jX2Zsb2F0OiB0cnVlCmF1dGhvcjogQ0NETCBmb3IgQUxTRgpkYXRlOiAyMDI0Ci0tLQoKKkFkYXB0ZWQgZnJvbSBbdGhlIEFVQ2VsbCB2aWduZXR0ZV0oaHR0cHM6Ly9iaW9jb25kdWN0b3Iub3JnL3BhY2thZ2VzL3JlbGVhc2UvYmlvYy92aWduZXR0ZXMvQVVDZWxsL2luc3QvZG9jL0FVQ2VsbC5odG1sKSBhbmQgW3RoZSBgY2VsbC10eXBlLWV3aW5nc2AgbW9kdWxlXShodHRwczovL2dpdGh1Yi5jb20vQWxleHNMZW1vbmFkZS9PcGVuU2NQQ0EtYW5hbHlzaXMvdHJlZS9tYWluL2FuYWx5c2VzL2NlbGwtdHlwZS1ld2luZ3MpIHRoYXQgaXMgcGFydCBvZiB0aGUgT3BlbiBTaW5nbGUtY2VsbCBQZWRpYXRyaWMgQ2FuY2VyIEF0bGFzIHByb2plY3QuKgoKIyMgT2JqZWN0aXZlcwoKLSBJbnRyb2R1Y2UgdGhlIGBBVUNlbGxgIFIgcGFja2FnZQotIElsbHVzdHJhdGUgaG93IEFVQyB2YWx1ZXMgYXJlIGNhbGN1bGF0ZWQKLSBEZW1vbnN0cmF0ZSBob3cgQVVDIHZhbHVlcyBjYW4gYmUgdXNlZCBmb3IgY2VsbCBhc3NpZ25tZW50IGFuZCBwbG90dGluZwoKLS0tCgpJbiB0aGlzIG5vdGVib29rLCB3ZSdsbCBkZW1vbnN0cmF0ZSBob3cgdG8gdXNlIHRoZSBBVUNlbGwgbWV0aG9kLCBpbnRyb2R1Y2VkIGluIFtBaWJhciBfZXQgYWxfLiAyMDE3Ll0oaHR0cHM6Ly9kb2kub3JnLzEwLjEwMzgvbm1ldGguNDQ2MykuCgpXZSBjYW4gdXNlIEFVQ2VsbCB3aGVuIHdlIGFyZSBpbnRlcmVzdGVkIGluIGEgZ2VuZSBzZXQncyByZWxhdGl2ZSBleHByZXNzaW9uIG9yIGFjdGl2aXR5IGluIGFuIGluZGl2aWR1YWwgY2VsbC4KR2VuZSBzZXRzIGNhbiBjb21lIGZyb20gYSBjdXJhdGVkIGNvbGxlY3Rpb24gb2YgcHJpb3Iga25vd2xlZGdlLCBsaWtlIHRoZSBIYWxsbWFyayBjb2xsZWN0aW9uIHdlIHVzZWQgaW4gdGhlIGxhc3Qgbm90ZWJvb2ssIG9yIHdlIGNhbiB1c2Ugb3VyIG93biBjdXN0b20gZ2VuZSBzZXRzIChlLmcuLCBhIHNldCBvZiBtYXJrZXIgZ2VuZXMgZm9yIGEgY2VsbCB0eXBlIG9mIGludGVyZXN0KS4KCkEgbmljZSBmZWF0dXJlIG9mIEFVQ2VsbCBpcyB0aGF0IGl0IGlzIGJhc2VkIG9uIHJhbmtpbmcgZ2VuZXMgZnJvbSBoaWdoZXN0IHRvIGxvd2VzdCBleHByZXNzaW9uIHZhbHVlIGluIGFuIGluZGl2aWR1YWwgY2VsbCwgd2hpY2ggaXMgaGVscGZ1bCBpbiB0aGUgZm9sbG93aW5nIHdheXMgKFtBVUNlbGwgdmlnbmV0dGVdKGh0dHBzOi8vYmlvY29uZHVjdG9yLm9yZy9wYWNrYWdlcy9yZWxlYXNlL2Jpb2MvdmlnbmV0dGVzL0FVQ2VsbC9pbnN0L2RvYy9BVUNlbGwuaHRtbCkpOgoKLSBJdCBjYW4gdGFrZSBhIG51bWJlciBvZiBkaWZmZXJlbnQgdmFsdWVzIGFzIGlucHV0IChlLmcuLCByYXcgY291bnRzLCBUUE0pIAotIEl0IGNvbXBlbnNhdGVzIGZvciBkaWZmZXJlbmNlcyBpbiBsaWJyYXJ5IHNpemUsIHdoZXJlIHNvbWV0aGluZyBsaWtlIGF2ZXJhZ2luZyByYXcgY291bnQgdmFsdWVzIG9mIGdlbmVzIGluIGEgZ2VuZSBzZXQgd291bGQgbm90IAotIEl0IHNjYWxlcyB0byBsYXJnZXIgZGF0YXNldHMsIHNpbmNlIGNyZWF0aW5nIHJhbmtpbmdzIGlzIG5vdCBhcyByZXNvdXJjZS1pbnRlbnNpdmUgYXMgc29tZXRoaW5nIGxpa2UgcGVybXV0YXRpb24gdGVzdGluZywgYW5kIHdlIGNvdWxkIHNwbGl0IHVwIHRoZSBvYmplY3QgaW50byBzdWJzZXRzIG9mIGNlbGxzIGlmIG5lZWRlZAoKQVVDZWxsIGNhbGN1bGF0ZXMgdGhlIGFyZWEgdW5kZXIgdGhlIHJlY292ZXJ5IGN1cnZlIChBVUMpLCB3aGljaCAicmVwcmVzZW50cyB0aGUgcHJvcG9ydGlvbiBvZiBleHByZXNzZWQgZ2VuZXMgaW4gdGhlIHNpZ25hdHVyZSBhbmQgdGhlaXIgcmVsYXRpdmUgZXhwcmVzc2lvbiB2YWx1ZSBjb21wYXJlZCB0byB0aGUgb3RoZXIgZ2VuZXMgd2l0aGluIHRoZSBjZWxsIiAoW0FpYmFyIF9ldCBhbF8uIDIwMTcuXShodHRwczovL2RvaS5vcmcvMTAuMTAzOC9ubWV0aC40NDYzKSkuCldlIHdpbGwgdmlzdWFsaXplIHNvbWUgcmVjb3ZlcnkgY3VydmVzIGluIHRoZSBub3RlYm9vayB0byBnaXZlIHlvdSBhIGJldHRlciBpbnR1aXRpb24gYWJvdXQgdGhlIEFVQyBhbmQgaXRzIG1lYW5pbmcuCgpUaGUgQVVDIHZhbHVlcyB3ZSBnZXQgb3V0IG9mIEFVQ2VsbCBjYW4gYmUgdXNlZCBpbiBhIG51bWJlciBvZiB3YXlzIChbQWliYXIgX2V0IGFsXy4gMjAxNy5dKGh0dHBzOi8vZG9pLm9yZy8xMC4xMDM4L25tZXRoLjQ0NjMpKToKCi0gQXMgY29udGludW91cyB2YWx1ZXMgd2UgY2FuIHVzZSBmb3IgdmlzdWFsaXphdGlvbiBvciBjbHVzdGVyaW5nCi0gRm9yIGJpbmFyeSBhc3NpZ25tZW50IChpLmUuLCAib24iIGFuZCAib2ZmIiBvciAiZXhwcmVzc2VkIiBhbmQgIm5vdCBleHByZXNzZWQiKSBpZiB3ZSBwaWNrIGEgdGhyZXNob2xkIGVpdGhlciBhdXRvbWF0aWNhbGx5IHVzaW5nIGJ1aWx0LWluIGZ1bmN0aW9uYWxpdHkgb3IgbWFudWFsbHkgYnkgaW5zcGVjdGluZyB0aGUgZGlzdHJpYnV0aW9uIG9mIHNjb3JlcyBvdXJzZWx2ZXMKCldlIHdpbGwgdXNlIGFuIHNuUk5BLXNlcSBvZiBhIEV3aW5nIHNhcmNvbWEgc2FtcGxlIGZyb20gdGhlIFtgU0NQQ1AwMDAwMTVgIHByb2plY3RdKGh0dHBzOi8vc2NwY2EuYWxleHNsZW1vbmFkZS5vcmcvcHJvamVjdHMvU0NQQ1AwMDAwMTUpIG9uIHRoZSBTaW5nbGUtY2VsbCBQZWRpYXRyaWMgQ2FuY2VyIEF0bGFzIFBvcnRhbCBhbmQgdHdvIHJlbGV2YW50IGdlbmUgc2V0cyBmcm9tIHRoZSBNb2xlY3VsYXIgU2lnbmF0dXJlcyBEYXRhYmFzZSAoTVNpZ0RCKSB0byBkZW1vbnN0cmF0ZSB0aGlzIG1ldGhvZC4KCiMjIFNldCB1cAoKIyMjIExpYnJhcmllcwoKYGBge3Igc2V0dXB9CiMgV2Ugd2lsbCBiZSBsb2FkaW5nIGEgU2luZ2xlQ2VsbEV4cGVyaW1lbnQgb2JqZWN0IGludG8gb3VyIGVudmlyb25tZW50IGJ1dCBkb24ndCBuZWVkIHRvIHNlZSB0aGUgc3RhcnR1cCBtZXNzYWdlcwpzdXBwcmVzc1BhY2thZ2VTdGFydHVwTWVzc2FnZXMoewogIGxpYnJhcnkoU2luZ2xlQ2VsbEV4cGVyaW1lbnQpCn0pCgojIExpYnJhcnkgd2UnbGwgdXNlIGZvciB0aGUgZ2VuZSBzZXQgYW5hbHlzaXMgaXRzZWxmCmxpYnJhcnkoQVVDZWxsKQoKIyBMaWJyYXJpZXMgZm9yIGFjY2Vzc2luZyBhbmQgd29ya2luZyB3aXRoIGdlbmUgc2V0cwpsaWJyYXJ5KEdTRUFCYXNlKQpsaWJyYXJ5KG1zaWdkYnIpCmBgYAoKIyMjIERpcmVjdG9yaWVzIGFuZCBmaWxlcwoKIyMjIyBEaXJlY3RvcmllcwoKYGBge3Igc2V0dXBfZGlyZWN0b3JpZXN9CiMgSW5wdXQgZGF0YSAKZXdpbmdfZGF0YV9kaXIgPC0gZnM6OnBhdGgoImRhdGEiLCAiZXdpbmctc2FyY29tYSIpCnByb2Nlc3NlZF9kaXIgPC0gZnM6OnBhdGgoZXdpbmdfZGF0YV9kaXIsICJwcm9jZXNzZWQiKQoKIyBEaXJlY3RvcnkgZm9yIGhvbGRpbmcgcGF0aHdheSBhbmFseXNpcyByZXN1bHRzCmFuYWx5c2lzX2RpciA8LSBmczo6cGF0aCgiYW5hbHlzaXMiLCAiZXdpbmctc2FyY29tYSIsICJwYXRod2F5LWFuYWx5c2lzIikKIyBDcmVhdGUgaWYgaXQgZG9lc24ndCBleGlzdCB5ZXQKZnM6OmRpcl9jcmVhdGUoYW5hbHlzaXNfZGlyKQpgYGAKCiMjIyMgRmlsZXMKClRoZSBpbnB1dCB3aWxsIGJlIGEgYFNpbmdsZUNlbGxFeHBlcmltZW50YCBmb3IgYW4gaW5kaXZpZHVhbCBFd2luZyBzYXJjb21hIGxpYnJhcnkuCgpgYGB7ciBzZXR1cF9pbnB1dF9maWxlc30Kc2NlX2ZpbGUgPC0gZnM6OnBhdGgocHJvY2Vzc2VkX2RpciwgCiAgICAgICAgICAgICAgICAgICAgICJTQ1BDUzAwMDQ5MCIsIAogICAgICAgICAgICAgICAgICAgICAiU0NQQ0wwMDA4MjJfcHJvY2Vzc2VkLnJkcyIpCmBgYAoKV2Ugd2lsbCBzYXZlIHRoZSBBVUNlbGwgcmVzdWx0cyBhcyBhIHRhYmxlIGluIHRoZSBhbmFseXNpcyBkaXJlY3RvcnkuCgpgYGB7ciBzZXR1cF9vdXRwdXRfZmlsZXMsIGxpdmUgPSBUUlVFfQpvdXRwdXRfZmlsZSA8LSBmczo6cGF0aChhbmFseXNpc19kaXIsCiAgICAgICAgICAgICAgICAgICAgICAgICJld2luZ19zYXJjb21hX2F1Y2VsbF9yZXN1bHRzLnRzdiIpCmBgYAoKCiMjIyBGdW5jdGlvbnMKClRoZSBgc291cmNlKClgIGZ1bmN0aW9uIGFsbG93cyB1cyB0byBsb2FkIGluIGN1c3RvbSBmdW5jdGlvbnMgd2Ugc2F2ZWQgaW4gYW4gYC5SYCBmaWxlLgoKYGBge3Igc291cmNlX2Z1bmN0aW9uc30Kc291cmNlKGZzOjpwYXRoKCJ1dGlsIiwgImF1Y2VsbF9mdW5jdGlvbnMuUiIpKQpgYGAKClRoaXMgbG9hZHMgb25lIGN1c3RvbSBmdW5jdGlvbiwgY2FsbGVkIGBwbG90X3JlY292ZXJ5X2N1cnZlKClgLCBpbnRvIG91ciBlbnZpcm9ubWVudC4KVGhpcyBmdW5jdGlvbiBpcyBhZGFwdGVkIGZyb20gW3RoZSBBVUNlbGwgdmlnbmV0dGVdKGh0dHBzOi8vZ2l0aHViLmNvbS9hZXJ0c2xhYi9BVUNlbGwvYmxvYi85MTc1M2IzMjdhMzlkYzdhNGJiZWQ0NjQwOGVjMjI3MWM0ODVmMmYwL3ZpZ25ldHRlcy9BVUNlbGwuUm1kI0wyOTUtTDMxNikuCgojIyBTZXQgdXAgZ2VuZSBzZXRzCgpXZSBhcmUgZ29pbmcgdG8gdXNlIHR3byBnZW5lIHNldHMgcGVydGFpbmluZyB0byBFd2luZyBzYXJjb21hLgoKKiBbYFpIQU5HX1RBUkdFVFNfT0ZfRVdTUjFfRkxJMV9GVVNJT05gXShodHRwczovL3d3dy5nc2VhLW1zaWdkYi5vcmcvZ3NlYS9tc2lnZGIvZ2VuZXNldF9wYWdlLmpzcD9nZW5lU2V0TmFtZT1aSEFOR19UQVJHRVRTX09GX0VXU1IxX0ZMSTFfRlVTSU9OKSwgd2hpY2ggYXJlIGdlbmVzIHRoYXQgd2VyZSBoaWdobHkgZXhwcmVzc2VkIGluIGEgcmhhYmRvbXlvc2FyY29tYSBjZWxsIGxpbmUgZW5naW5lZXJlZCB0byBleHByZXNzIHRoZSBFV1NSMS1GTEkxIGZ1c2lvbi4KKiBbYFJJR0dJX0VXSU5HX1NBUkNPTUFfUFJPR0VOSVRPUl9VUGBdKGh0dHBzOi8vd3d3LmdzZWEtbXNpZ2RiLm9yZy9nc2VhL21zaWdkYi9jYXJkcy9SSUdHSV9FV0lOR19TQVJDT01BX1BST0dFTklUT1JfVVApLCB3aGljaCBhcmUgZ2VuZXMgdGhhdCB3ZXJlIGhpZ2hseSBleHByZXNzZWQgaW4gbWVzZW5jaHltYWwgc3RlbSBjZWxscyBlbmdpbmVlcmVkIHRvIGV4cHJlc3MgdGhlIEVXUy1GTEkxIGZ1c2lvbiBwcm90ZWluLgoKV2Ugd291bGQgZXhwZWN0IGJvdGggb2YgdGhlc2UgZ2VuZSBzZXRzIHRvIGhhdmUgaGlnaCBleHByZXNzaW9uIGluIHR1bW9yIGNlbGxzLgoKYGBge3IgZ2VuZXNldHN9CiMgQ3JlYXRlIGEgbmFtZWQgdmVjdG9yIHdpdGggdGhlIHJlbGV2YW50IGdlbmUgc2V0IG5hbWVzCmV3aW5nX2dlbmVfc2V0X25hbWVzIDwtIGMoemhhbmcgPSAiWkhBTkdfVEFSR0VUU19PRl9FV1NSMV9GTEkxX0ZVU0lPTiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgcmlnZ2kgPSAiUklHR0lfRVdJTkdfU0FSQ09NQV9QUk9HRU5JVE9SX1VQIikKCmV3aW5nX2dlbmVfc2V0X25hbWVzCmBgYAoKVGhlc2UgZ2VuZSBzZXRzIGNvbWUgZnJvbSB0aGUgQzIgZ2VuZSBzZXQgY29sbGVjdGlvbiBmcm9tIE1TaWdEQi4KTGV0J3MgcmV0cmlldmUgdGhlbSB1c2luZyBgbXNpZ2RicigpYC4KCmBgYHtyIGV4dHJhY3RfZ2VuZXNldHMsIGxpdmUgPSBUUlVFfQpld2luZ19nZW5lX3NldHNfZGYgPC0gbXNpZ2RicihzcGVjaWVzID0gIkhvbW8gc2FwaWVucyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhdGVnb3J5ID0gIkMyIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3ViY2F0ZWdvcnkgPSAiQ0dQIikgfD4KICBkcGx5cjo6ZmlsdGVyKGdzX25hbWUgJWluJSBld2luZ19nZW5lX3NldF9uYW1lcykKYGBgCgpgQVVDZWxsYCB1c2VzIGdlbmUgc2V0cyBpbiBhIHBhcnRpY3VsYXIgZm9ybWF0IHRoYXQgY29tZXMgZnJvbSB0aGUgYEdTRUFCYXNlYCBwYWNrYWdlLgpXZSBuZWVkIHRvIGNyZWF0ZSBhIGBHZW5lU2V0Q29sbGVjdGlvbmAuCgpgYGB7ciBnZW5lX3NldF9jb2xsZWN0aW9ufQpld2luZ19nZW5lX3NldF9jb2xsZWN0aW9uIDwtIGV3aW5nX2dlbmVfc2V0X25hbWVzIHw+CiAgcHVycnI6Om1hcCgKICAgICMgRm9yIGVhY2ggZ2VuZSBzZXQKICAgIFwoZ2VuZV9zZXRfbmFtZSkgewogICAgICBld2luZ19nZW5lX3NldHNfZGYgfD4KICAgICAgICAjIFN1YnNldCB0byB0aGUgcm93cyBpbiB0aGF0IGdlbmUgc2V0CiAgICAgICAgZHBseXI6OmZpbHRlcihnc19uYW1lID09IGdlbmVfc2V0X25hbWUpIHw+CiAgICAgICAgIyBHcmFiIHRoZSBFbnNlbWJsIGdlbmUgaWRlbnRpZmllcnMKICAgICAgICBkcGx5cjo6cHVsbChlbnNlbWJsX2dlbmUpIHw+CiAgICAgICAgIyBDcmVhdGUgYSBHZW5lU2V0IG9iamVjdAogICAgICAgIEdlbmVTZXQoc2V0TmFtZSA9IGdlbmVfc2V0X25hbWUsCiAgICAgICAgICAgICAgICBnZW5lSWRUeXBlID0gRU5TRU1CTElkZW50aWZpZXIoKSkKICAgIH0KICApIHw+CiAgIyBUdXJuIHRoZSBsaXN0IG9mIEdlbmVTZXQgb2JqZWN0cyBpbnRvIGEgR2VuZVNldCBjb2xsZWN0aW9uCiAgR2VuZVNldENvbGxlY3Rpb24oKQpgYGAKCiMjIFJlYWQgaW4gYW5kIHByZXBhcmUgU2luZ2xlQ2VsbEV4cGVyaW1lbnQKCmBgYHtyIHJlYWRfaW5fc2NlLCBsaXZlID0gVFJVRX0Kc2NlIDwtIHJlYWRyOjpyZWFkX3JkcyhzY2VfZmlsZSkKYGBgCgpUaGUgYEFVQ2VsbGAgZnVuY3Rpb25zIHRha2VzIGFuIGV4cHJlc3Npb24gbWF0cml4IHdpdGggZ2VuZXMgYXMgcm93cyBhbmQgY2VsbHMgYXMgY29sdW1uLgpXZSBjYW4gZXh0cmFjdCBhIGNvdW50cyBtYXRyaXggaW4gc3BhcnNlIGZvcm1hdCBmb3IgdXNlIHdpdGggYEFVQ2VsbGAuCgpgYGB7ciBjb3VudHNfbWF0cml4fQojIEV4dHJhY3QgY291bnRzIG1hdHJpeApjb3VudHNfbWF0cml4IDwtIGNvdW50cyhzY2UpCmBgYAoKVGhlcmUgbWF5IGJlIGdlbmVzIGluIG91ciBnZW5lIHNldCB0aGF0IGRvIG5vdCBhcHBlYXIgaW4gdGhlIFNpbmdsZUNlbGxFeHBlcmltZW50IG9iamVjdC4KV2UgY2FuIHJlbW92ZSB0aGVtIHVzaW5nIHRoZSBgc3Vic2V0R2VuZVNldHMoKWAgZnVuY3Rpb24uCgpgYGB7ciBzdWJzZXRfZ2VuZV9zZXRzLCBsaXZlID0gVFJVRX0KIyBSZW1vdmUgZ2VuZXMgZnJvbSBnZW5lIHNldHMgaWYgdGhleSBhcmUgbm90IGluIHRoZSBTQ0UKZXdpbmdfZ2VuZV9zZXRfY29sbGVjdGlvbiA8LSBzdWJzZXRHZW5lU2V0cyhld2luZ19nZW5lX3NldF9jb2xsZWN0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd25hbWVzKGNvdW50c19tYXRyaXgpKQpgYGAKCiMjIEFVQ2VsbAoKQVVDZWxsIHJlbGllcyBvbiByYW5raW5nIGdlbmVzIGZyb20gaGlnaGVzdCB0byBsb3dlc3QgZXhwcmVzc2lvbiB2YWx1ZSB0byBjYWxjdWxhdGUgdGhlIEFVQy4KVGhlIEFVQyBpcyB0aGUgYXJlYSB1bmRlciB0aGUgcmVjb3ZlcnkgY3VydmUsIHdoaWNoIGNhcHR1cmVzIHRoZSBudW1iZXIgb2YgZ2VuZXMgaW4gYSBnZW5lIHNldCB0aGF0IGFyZSBwcmVzZW50IGluIHRoZSByYW5raW5ncyBhYm92ZSBzb21lIHRocmVzaG9sZCAoaS5lLiwgaXQgaXMgdGhlIGFyZWEgdW5kZXIgdGhlIGN1cnZlIHRvIHRoZSBsZWZ0IG9mIHRoaXMgZ2VuZSByYW5rKS4KQnkgZGVmYXVsdCwgdGhlIHRvcCA1JSBvZiBnZW5lcyBhcmUgdXNlZCBhcyB0aGUgdGhyZXNob2xkLgoKU29tZSBnZW5lcyB3aWxsIG5vdCBiZSBkZXRlY3RlZCAoaS5lLiwgaGF2ZSAwIGNvdW50cykuCkdlbmVzIGNhbiBhbHNvIGhhdmUgdGhlIHNhbWUgZXhwcmVzc2lvbiBsZXZlbCAoaS5lLiwgdGllcykuClRoZXNlIHVuZGV0ZWN0ZWQgZ2VuZXMgYW5kIHRpZXMgd2lsbCBiZSByYW5kb21seSBvcmRlcmVkIGluIG91ciByYW5raW5nLgpUbyBtYWtlIG91ciByYW5raW5ncyDigJMgYW5kIHRoZXJlZm9yZSByZXN1bHRzIOKAkyByZXByb2R1Y2libGUsIHdlIHdpbGwgc2V0IGEgc2VlZC4KCmBgYHtyIHNldF9zZWVkLCBsaXZlID0gVFJVRX0Kc2V0LnNlZWQoMjAyNCkKYGBgCgojIyMgQ2VsbCByYW5raW5nCgpUaGUgZmlyc3Qgc3RlcCBpbiBBVUNlbGwgaXMgdG8gcmFuayBnZW5lcyBmb3IgZWFjaCBjZWxsIGZyb20gaGlnaGVzdCB0byBsb3dlc3QgZXhwcmVzc2lvbiB2YWx1ZS4KV2UgY2FuIGRvIHRoaXMgdXNpbmcgdGhlIGBBVUNlbGxfYnVpbGRSYW5raW5ncygpYCBmdW5jdGlvbiwgd2hpY2ggd2lsbCBvdXRwdXQgYSB2aXN1YWxpemF0aW9uIHNob3dpbmcgdGhlIGRpc3RyaWJ1dGlvbiBvZiB0aGUgbnVtYmVyIG9mIGdlbmVzIGRldGVjdGVkIGluIHRoZSBjZWxscyBpbiBvdXIgU2luZ2xlQ2VsbEV4cGVyaW1lbnQgb2JqZWN0LgoKYGBge3IgY2VsbF9yYW5raW5ncywgbGl2ZSA9IFRSVUV9CmNlbGxfcmFua2luZ3MgPC0gQVVDZWxsX2J1aWxkUmFua2luZ3MoY291bnRzX21hdHJpeCkKYGBgCgpUaGUgQVVDZWxsIGF1dGhvcnMgcmVjb21tZW5kIG1ha2luZyBzdXJlIG1vc3QgY2VsbHMgaGF2ZSBhdCBsZWFzdCB0aGUgbnVtYmVyIG9mIGdlbmVzIHdlIHdpbGwgdXNlIGFzIHRoZSBtYXggcmFuayB0byBjYWxjdWxhdGUgdGhlIEFVQy4KClRoZSBBVUMgbWF4IHJhbmsgdmFsdWUgdGVsbHMgQVVDZWxsIHRoZSBjdXRvZmYgaW4gdGhlIGdlbmUgcmFua2luZ3MgdG8gdXNlIGZvciBjYWxjdWxhdGluZyBBVUM7IHdlIHdpbGwgdmlzdWFsaXplIHRoaXMgY3VydmUgYW5kIG1heCByYW5rIGluIGp1c3QgYSBtb21lbnQuCklmIHdlIHBpY2tlZCBhIG1heCByYW5rIGhpZ2hlciB0aGFuIHRoZSBudW1iZXIgb2YgZ2VuZXMgZGV0ZWN0ZWQgaW4gbW9zdCBjZWxscywgdGhlIG5vbi1kZXRlY3RlZCBnZW5lcyB0aGF0IGFyZSByYW5kb21seSBvcmRlcmVkIHdvdWxkIHBsYXkgYW4gb3V0c2l6ZWQgcm9sZSBpbiBvdXIgQVVDIHZhbHVlcy4KCkJ5IGRlZmF1bHQsIHRoZSBtYXggcmFuayBpcyB0aGUgdG9wIDUlIGhpZ2hlc3QgZXhwcmVzc2VkIGdlbmVzLgpXZSBjYW4gY2FsY3VsYXRlIHRoZSBkZWZhdWx0IG1heCByYW5rIGJ5IHRha2luZyBpbnRvIGFjY291bnQgdGhlIG51bWJlciBvZiBnZW5lcy4KCmBgYHtyIGV4cGxvcmVfYXVjX21heF9yYW5rfQpucm93KGNlbGxfcmFua2luZ3MpICogMC4wNQpgYGAKClRoaXMgbnVtYmVyIGlzIHByb2JhYmx5IHRvbyBoaWdoLCBnaXZlbiB0aGUgZGlzdHJpYnV0aW9uIG9mIHRoZSBudW1iZXIgb2YgZ2VuZXMgZGV0ZWN0ZWQgYnkgY2VsbCB3ZSB2aXN1YWxpemVkIHdpdGggYEFVQ2VsbF9idWlsZFJhbmtpbmdzKClgLgoKV2hhdCBpZiB3ZSBjaG9zZSBhIDElIHRocmVzaG9sZD8KCmBgYHtyIGxvd2VyX21heF9yYW5rLCBsaXZlID0gVFJVRX0KbnJvdyhjZWxsX3JhbmtpbmdzKSAqIDAuMDEKYGBgCgpUaGF0IGlzIHByb2JhYmx5IGEgbW9yZSByZWFzb25hYmxlIGNob2ljZSBmb3IgdGhpcyBkYXRhc2V0LgoKV2UgY2FuIHVzZSBhIGZ1bmN0aW9uIGNhbGxlZCBgY2VpbGluZygpYCB0byByb3VuZCB0aGlzIGFuZCBzYXZlIGl0IHRvIGEgdmFyaWFibGUgZm9yIGxhdGVyIHVzZS4KCmBgYHtyIGF1Y19tYXhfcmFuaywgbGl2ZSA9IFRSVUV9CmF1Y19tYXhfcmFuayA8LSBjZWlsaW5nKG5yb3coY2VsbF9yYW5raW5ncykgKiAwLjAxKQpgYGAKCiMjIyBQbG90dGluZyBBVUMKClRoZSBBVUMgdmFsdWVzIHdlIGdldCBvdXQgb2YgQVVDZWxsIGFyZSB0aGUgYXJlYSB1bmRlciBhIHJlY292ZXJ5IGN1cnZlIGFuZCBlc3RpbWF0ZSB0aGUgcHJvcG9ydGlvbiBvZiBnZW5lcyBpbiB0aGUgZ2VuZSBzZXQgdGhhdCBhcmUgaGlnaGx5IGV4cHJlc3NlZCAoaS5lLiwgaGlnaGx5IHJhbmtlZCkuCgpMZXQncyBwbG90IHRoZSByZWNvdmVyeSBjdXJ2ZSBmb3IgYSBjZWxsIHdpdGggaGlnaCBBVUMgYW5kIGEgY2VsbCB3aXRoIGxvdyBBVUMgdG8gZ2V0IGEgYmV0dGVyIGludHVpdGlvbiBhYm91dCBBVUMgdmFsdWVzLgpFYXJsaWVyLCB3ZSBsb2FkZWQgYSBjdXN0b20gZnVuY3Rpb24gd2UgYWRhcHRlZCBmcm9tIFt0aGUgQVVDZWxsIHZpZ25ldHRlXShodHRwczovL2dpdGh1Yi5jb20vYWVydHNsYWIvQVVDZWxsL2Jsb2IvOTE3NTNiMzI3YTM5ZGM3YTRiYmVkNDY0MDhlYzIyNzFjNDg1ZjJmMC92aWduZXR0ZXMvQVVDZWxsLlJtZCkgY2FsbGVkIGBwbG90X3JlY292ZXJ5X2N1cnZlKClgIHdpdGggYHNvdXJjZSgpYC4KCkZpcnN0LCB3ZSdsbCBzdGFydCB3aXRoIGEgY2VsbCB3aXRoIGEgaGlnaCBBVUMuCldlIHBpY2tlZCB0aGlzIGJhcmNvZGUgYWhlYWQgb2YgdGltZSB3aGVuIHdlIHdyb3RlIHRoZSBub3RlYm9vay4KCmBgYHtyIGhpZ2hfcmVjb3ZlcnlfY3VydmV9CnBsb3RfcmVjb3ZlcnlfY3VydmUoY2VsbF9yYW5raW5ncywKICAgICAgICAgICAgICAgICAgICBld2luZ19nZW5lX3NldF9jb2xsZWN0aW9uLAogICAgICAgICAgICAgICAgICAgIGdlbmVfc2V0X25hbWUgPSAiWkhBTkdfVEFSR0VUU19PRl9FV1NSMV9GTEkxX0ZVU0lPTiIsCiAgICAgICAgICAgICAgICAgICAgYmFyY29kZSA9ICJDVEdBR0NHR1RDVFRUQVRDIiwKICAgICAgICAgICAgICAgICAgICBhdWNfbWF4X3JhbmsgPSBhdWNfbWF4X3JhbmspICAjIDElIHRocmVzaG9sZCAKYGBgCgpUaGUgeC1heGlzIGlzIHRoZSBnZW5lIHJhbmtzIGZvciBhbGwgZ2VuZXMuClRoZSB5LWF4aXMgaXMgdGhlIG51bWJlciBvZiBnZW5lcyBpbiB0aGUgc2lnbmF0dXJlIGF0IGEgZ2l2ZW4gcG9pbnQgaW4gdGhlIGdlbmUgcmFua2luZyDigJMgdGhlIGxpbmUgd2lsbCByaXNlIHdoZW4gYSBnZW5lIGluIHRoZSBnZW5lIHNldCBpcyBlbmNvdW50ZXJlZCBpbiB0aGUgcmFua2luZyBmcm9tIGhpZ2hlc3QgdG8gbG93ZXN0LgpUaGUgQVVDIGlzIHRoZSBhcmVhIHVuZGVyIHRoaXMgcmVjb3ZlcnkgY3VydmUgYXQgdGhlIG1heCByYW5rIHRocmVzaG9sZCBjaG9zZW4gZm9yIHRoaXMgZGF0YXNldC4KCk5vdywgbGV0J3MgbG9vayBhdCBhbiBleGFtcGxlIHdpdGggYSBsb3cgQVVDLgoKYGBge3IgbG93X3JlY292ZXJ5X2N1cnZlfQpwbG90X3JlY292ZXJ5X2N1cnZlKGNlbGxfcmFua2luZ3MsCiAgICAgICAgICAgICAgICAgICAgZXdpbmdfZ2VuZV9zZXRfY29sbGVjdGlvbiwKICAgICAgICAgICAgICAgICAgICBnZW5lX3NldF9uYW1lID0gIlpIQU5HX1RBUkdFVFNfT0ZfRVdTUjFfRkxJMV9GVVNJT04iLAogICAgICAgICAgICAgICAgICAgIGJhcmNvZGUgPSAiQUdBVEFHQUdUQ0FDQUFUQyIsCiAgICAgICAgICAgICAgICAgICAgYXVjX21heF9yYW5rID0gYXVjX21heF9yYW5rKSAgIyAxJSB0aHJlc2hvbGQKYGBgCgpGYXIgZmV3ZXIgZ2VuZXMgaW4gdGhlIGdlbmUgc2V0IGFyZSByYW5rZWQgYWJvdmUgdGhlIHRocmVzaG9sZCwgeWllbGRpbmcgYSBsb3dlciBBVUMgdmFsdWUuCgojIyMgQ2FsY3VsYXRpbmcgdGhlIEFVQwoKT25jZSB3ZSBoYXZlIHRoZSByYW5raW5ncywgd2UgY2FuIGNhbGN1bGF0ZSB0aGUgQVVDIHNjb3JlcyBmb3IgYm90aCBnZW5lIHNldHMgaW4gYWxsIGNlbGxzIHdpdGggdGhlIGBBVUNlbGxfY2FsY0FVQygpYCBmdW5jdGlvbi4KCmBgYHtyIGNhbGNfYXVjLCBsaXZlID0gVFJVRX0KY2VsbF9hdWMgPC0gQVVDZWxsX2NhbGNBVUMoZ2VuZVNldHMgPSBld2luZ19nZW5lX3NldF9jb2xsZWN0aW9uLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFua2luZ3MgPSBjZWxsX3JhbmtpbmdzLAogICAgICAgICAgICAgICAgICAgICAgICAgICBhdWNNYXhSYW5rID0gYXVjX21heF9yYW5rKQpgYGAKClRoaXMgZnVuY3Rpb24gcmV0dXJucyBhbiBgYXVjZWxsUmVzdWx0c2Agb2JqZWN0LgoKYGBge3IgY2hlY2tfc3RyLCBsaXZlID0gVFJVRX0Kc3RyKGNlbGxfYXVjKQpgYGAKCkl0IGNhbiBiZSBtdWNoIG1vcmUgY29udmVuaWVudCB0byB3b3JrIHdpdGggdGhpcyBpbiBhIHRhYnVsYXIgZm9ybWF0LgoKYGBge3IgYXVjX3RvX3RhYmxlfQojIEV4dHJhY3QgQVVDCmF1Y19kZiA8LSBjZWxsX2F1Y0Bhc3NheXNAZGF0YSRBVUMgfD4KICAjIFRyYW5zcG9zZQogIHQoKSB8PgogICMgQ29udmVydCB0byBkYXRhIGZyYW1lCiAgYXMuZGF0YS5mcmFtZSgpIHw+CiAgIyBNYWtlIHRoZSBiYXJjb2RlcyBhIGNvbHVtbgogIHRpYmJsZTo6cm93bmFtZXNfdG9fY29sdW1uKCJiYXJjb2RlcyIpIAoKIyBMb29rIGF0IGZpcnN0IGZldyByb3dzCmhlYWQoYXVjX2RmKQpgYGAKCiMjIyBBc3NpZ25tZW50cwoKQVVDZWxsIGNhbiBhc3NpZ24gY2VsbHMgYXMgaGF2aW5nIGFuIGFjdGl2ZSBnZW5lIHNldCBvciBub3QgYnkgcGlja2luZyBhIHRocmVzaG9sZCBhdXRvbWF0aWNhbGx5LgpXZSdsbCBleHBsb3JlIHRoZXNlIGluIGEgbGF0ZXIgcGxvdCwgYnV0IGZvciBub3csIGxldCdzIGNhbGN1bGF0ZSB0aGUgdGhyZXNob2xkIGFuZCBhc3NpZ24gY2VsbHMgd2l0aCBgQVVDZWxsX2V4cGxvcmVUaHJlc2hvbGRzKClgLgoKYGBge3IgYXVjX2Fzc2lnbm1lbnRzLCBsaXZlID0gVFJVRX0KYXVjX2Fzc2lnbm1lbnRzIDwtIEFVQ2VsbF9leHBsb3JlVGhyZXNob2xkcyhjZWxsX2F1YywgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxvdEhpc3QgPSBGQUxTRSwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXNzaWduQ2VsbHMgPSBUUlVFKQpgYGAKCldlJ3JlIGdvaW5nIHRvIHBsb3QgdGhlIGRpc3RyaWJ1dGlvbiBvZiBBVUMgdmFsdWVzIHdpdGggYGdncGxvdDJgLCBzbyB3ZSB3aWxsIHdhbnQgdGhlIEFVQyB2YWx1ZXMgaW4gYSBsb25nZXIgZm9ybWF0LgoKYGBge3IgYXVjX3Bsb3R0aW5nX2RmfQphdWNfcGxvdHRpbmdfZGYgPC0gYXVjX2RmIHw+CiAgdGlkeXI6OnBpdm90X2xvbmdlcighYmFyY29kZXMsCiAgICAgICAgICAgICAgICAgICAgICBuYW1lc190byA9ICJnZW5lX3NldCIsCiAgICAgICAgICAgICAgICAgICAgICB2YWx1ZXNfdG8gPSAiYXVjIikgfD4KICBkcGx5cjo6bXV0YXRlKAogICAgIyBDcmVhdGUgYSBuZXcgbG9naWNhbCBjb2x1bW4gY2FsbGVkIGFzc2lnbmVkCiAgICBhc3NpZ25lZCA9IGRwbHlyOjpjYXNlX3doZW4oCiAgICAgICMgRm9yIFpoYW5nIGdlbmUgc2V0IHJvd3MsIHNldCB0byBUUlVFIHdoZW4gdGhlIGJhcmNvZGUgaXMgaW4gdGhlIAogICAgICAjIGFzc2lnbm1lbnQgbGlzdAogICAgICBnZW5lX3NldCA9PSBld2luZ19nZW5lX3NldF9uYW1lc1tbInpoYW5nIl1dICYgCiAgICAgICAgYmFyY29kZXMgJWluJSBhdWNfYXNzaWdubWVudHNbW2V3aW5nX2dlbmVfc2V0X25hbWVzW1siemhhbmciXV1dXSRhc3NpZ25tZW50IH4gVFJVRSwKICAgICAgIyBGb3IgUmlnZ2kgZ2VuZSBzZXQgcm93cywgc2V0IHRvIFRSVUUgd2hlbiB0aGUgYmFyY29kZSBpcyBpbiB0aGUgCiAgICAgICMgYXNzaWdubWVudCBsaXN0CiAgICAgIGdlbmVfc2V0ID09IGV3aW5nX2dlbmVfc2V0X25hbWVzW1sicmlnZ2kiXV0gJiAKICAgICAgICBiYXJjb2RlcyAlaW4lIGF1Y19hc3NpZ25tZW50c1tbZXdpbmdfZ2VuZV9zZXRfbmFtZXNbWyJyaWdnaSJdXV1dJGFzc2lnbm1lbnQgfiBUUlVFLAogICAgICAjIE90aGVyd2lzZSwgc2V0IHRvIEZBTFNFCiAgICAgIC5kZWZhdWx0ID0gRkFMU0UKICAgICkKICApCgphdWNfcGxvdHRpbmdfZGYKYGBgCgpUbyBkcmF3IHZlcnRpY2FsIGxpbmVzIHJlcHJlc2VudGluZyB0aGUgYXV0b21hdGljYWxseSBjaG9zZW4gdGhyZXNob2xkLCB3ZSBjYW4gY3JlYXRlIGEgc2VwYXJhdGUgZGF0YSBmcmFtZS4KCmBgYHtyIGF1Y190aHJlc2hvbGRfZGZ9CmF1Y190aHJlc2hvbGRfZGYgPC0gZGF0YS5mcmFtZSgKICBnZW5lX3NldCA9IGV3aW5nX2dlbmVfc2V0X25hbWVzLAogICMgR3JhYiB0aHJlc2hvbGRzIGFzc29jaWF0ZWQgd2l0aCBlYWNoIGdlbmUgc2V0IGZyb20gYXNzaWduZW1lbnRzIG9iamVjdAogIHRocmVzaG9sZCA9IGMoYXVjX2Fzc2lnbm1lbnRzW1tld2luZ19nZW5lX3NldF9uYW1lc1siemhhbmciXV1dJGF1Y1RociRzZWxlY3RlZCwgCiAgICAgICAgICAgICAgICBhdWNfYXNzaWdubWVudHNbW2V3aW5nX2dlbmVfc2V0X25hbWVzWyJyaWdnaSJdXV0kYXVjVGhyJHNlbGVjdGVkKQopCgphdWNfdGhyZXNob2xkX2RmCmBgYAoKTm93IGxldCdzIG1ha2UgYSBkZW5zaXR5IHBsb3QsIHBsb3R0aW5nIHRoZSBkZW5zaXR5IG9mIHRoZSBhc3NpZ25lZCBhbmQgdW5hc3NpZ25lZCBjZWxscyBzZXBhcmF0ZWx5IGFuZCBkcmF3aW5nIGEgdmVydGljYWwgbGluZSBmb3IgdGhlIHRocmVzaG9sZC4KCmBgYHtyIGF1Y19kZW5zaXR5X3Bsb3R9CmF1Y19wbG90dGluZ19kZiB8PgogIGdncGxvdDI6OmdncGxvdCgKICAgIGdncGxvdDI6OmFlcygKICAgICAgeCA9IGF1YywgICMgQVVDIHZhbHVlcwogICAgICBjb2xvciA9IGFzc2lnbmVkLCAgIyBHcm91cCBieSBhc3NpZ25tZW50CiAgICAgIGZpbGwgPSBhc3NpZ25lZCwgICAjIEdyb3VwIGJ5IGFzc2lnbm1lbnQKICAgICkKICApICsKICBnZ3Bsb3QyOjpnZW9tX2RlbnNpdHkoYWxwaGEgPSAwLjIpICsKICAjIERyYXcgYSB2ZXJ0aWNhbCBkb3R0ZWQgbGluZSBzaG93aW5nIHRoZSB0aHJlc2hvbGQgZm9yIGVhY2ggZ2VuZSBzZXQKICBnZ3Bsb3QyOjpnZW9tX3ZsaW5lKGRhdGEgPSBhdWNfdGhyZXNob2xkX2RmLAogICAgICAgICAgICAgICAgICAgICAgbWFwcGluZyA9IGdncGxvdDI6OmFlcyh4aW50ZXJjZXB0ID0gdGhyZXNob2xkKSwKICAgICAgICAgICAgICAgICAgICAgIGx0eSA9IDIpICsKICAjIFBsb3QgZWFjaCBnZW5lIHNldCBpbiBpdHMgb3duIGZhY2V0CiAgZ2dwbG90Mjo6ZmFjZXRfZ3JpZChjb2xzID0gZ2dwbG90Mjo6dmFycyhnZW5lX3NldCkpICsKICAjIFVzZSBhIGJ1aWx0LWluIHRoZW1lCiAgZ2dwbG90Mjo6dGhlbWVfYncoKQpgYGAKCkZvciB0aGVzZSBwYXJ0aWN1bGFyIGdlbmUgc2V0cywgdGhlIEFVQyB2YWx1ZXMgYXBwZWFyIHRvIGJlIGJpbW9kYWxseSBkaXN0cmlidXRlZCwgYW5kIHdlIGNhbiBlYXNpbHkgaWRlbnRpZnkgY2VsbHMgd2hlcmUgdGhlIGdlbmVzIGFyZSBoaWdobHkgZXhwcmVzc2VkLgoKTGV0J3Mgd3JpdGUgdGhpcyB0YWJsZSB0byB0aGUgb3V0cHV0IGZpbGUuCgpgYGB7ciBzYXZlX2F1Y30KYXVjX3Bsb3R0aW5nX2RmIHw+IAogIHJlYWRyOjp3cml0ZV90c3Yob3V0cHV0X2ZpbGUpCmBgYAoKIyMjIFVNQVBzCgojIyMjIEFkZGluZyBBVUMgdG8gYGNvbERhdGFgCgpXZSBjYW4gYWxzbyBhZGQgdGhlIEFVQyB2YWx1ZXMgYmFjayBpbnRvIHRoZSBTaW5nbGVDZWxsRXhwZXJpbWVudCBmb3IgY29udmVuaWVuY2UsIGUuZy4sIGZvciBwbG90dGluZy4KV2UnbGwgYWRkIGl0IHRvIHRoZSBleGlzdGluZyBgY29sRGF0YWAuCgpGaXJzdCwgbGV0J3MgcmVuYW1lIHRoZSBnZW5lIHNldCBjb2x1bW5zIHRvIHNvbWV0aGluZyBtb3JlIGVhc2lseSB0eXBlZC4KCmBgYHtyIHJlbmFtZV9nZW5lX3NldH0KYXVjX2RmIDwtIGF1Y19kZiB8PgogICMgVXNlIHNob3J0ZXIgbmFtZXMKICBkcGx5cjo6cmVuYW1lKHpoYW5nX2F1YyA9IGV3aW5nX2dlbmVfc2V0X25hbWVzW1siemhhbmciXV0sCiAgICAgICAgICAgICAgICByaWdnaV9hdWMgPSBld2luZ19nZW5lX3NldF9uYW1lc1tbInJpZ2dpIl1dKQoKYGBgCgpBbmQgam9pbiBpdCB0byB0aGUgZXhpc3RpbmcgYGNvbERhdGFgLgoKYGBge3IgY29sZGF0YSwgbGl2ZSA9IFRSVUV9CiMgRXh0cmFjdCB0aGUgZXhpc3RpbmcgY29sRGF0YSwgYW5kIGxlZnQgam9pbiBpdCB3aXRoIHRoZSBBVUMgdmFsdWVzIGJ5IHRoZQojIGJhcmNvZGVzCmNvbGRhdGFfZGYgPC0gY29sRGF0YShzY2UpIHw+CiAgYXMuZGF0YS5mcmFtZSgpIHw+CiAgZHBseXI6OmxlZnRfam9pbigKICAgIGF1Y19kZiwKICAgIGJ5ID0gImJhcmNvZGVzIgogICkKYGBgCgpOb3csIHdlJ3JlIHJlYWR5IHRvIGFkZCBpdCBiYWNrIHRvIHRoZSBvYmplY3QuCgpgYGB7ciBhZGRfYmFja19jb2xEYXRhLCBsaXZlID0gVFJVRX0KIyBXZSBuZWVkIHRvIHNhdmUgdGhpcyBhcyBhIERhdGFGcmFtZQpjb2xEYXRhKHNjZSkgPC0gRGF0YUZyYW1lKAogIGNvbGRhdGFfZGYsCiAgcm93Lm5hbWVzID0gY29sRGF0YShzY2UpJGJhcmNvZGVzCikKYGBgCgojIyMjIFBsb3R0aW5nIFVNQVBzCgpXZSBjYW4gdXNlIHRoZSBgcGxvdFVNQVAoKWAgZnVuY3Rpb24gZnJvbSB0aGUgYHNjYXRlcmAgcGFja2FnZSB0byBwbG90IGEgVU1BUCB3aXRoIHRoZSBwb2ludHMgY29sb3JlZCBieSB0aGUgQVVDIHZhbHVlCgpgYGB7ciBwbG90X3VtYXBfemhhbmd9CnNjYXRlcjo6cGxvdFVNQVAoc2NlLCBjb2xvdXJfYnkgPSAiemhhbmdfYXVjIikgKwogICMgVXNlIHRoZSBnZW5lIHNldCBuYW1lLCByZXBsYWNpbmcgdW5kZXJzY29yZXMgd2l0aCBzcGFjZXMKICBnZ3Bsb3QyOjpnZ3RpdGxlKHN0cmluZ3I6OnN0cl9yZXBsYWNlX2FsbChld2luZ19nZW5lX3NldF9uYW1lc1tbInpoYW5nIl1dLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiXFxfIiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAiKSkKYGBgCgpMZXQncyBjb2xvciB0aGUgcG9pbnRzIGJ5IHRoZSBBVUMgdmFsdWVzIGZvciB0aGUgb3RoZXIgZ2VuZSBzZXQuCgpgYGB7ciBwbG90X3VtYXBfcmlnZ2ksIGxpdmUgPSBUUlVFfQpzY2F0ZXI6OnBsb3RVTUFQKHNjZSwgY29sb3VyX2J5ID0gInJpZ2dpX2F1YyIpICsgCiAgZ2dwbG90Mjo6Z2d0aXRsZShzdHJpbmdyOjpzdHJfcmVwbGFjZV9hbGwoZXdpbmdfZ2VuZV9zZXRfbmFtZXNbWyJyaWdnaSJdXSwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlxcXyIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgIikpCmBgYAoKV2Ugd291bGQgd2FudCB0byBkbyBzb21ldGhpbmcgbW9yZSBmb3JtYWwgdG8gY29uZmlybSwgYnV0IGl0IHNlZW1zIGxpa2UgdGhlIHNhbWUgY2VsbHMgaGF2ZSBoaWdoIEFVQyB2YWx1ZXMgZm9yIGJvdGggZ2VuZSBzZXRzIQoKIyMgU2Vzc2lvbiBJbmZvCgpgYGB7ciBzZXNzaW9uX2luZm99CnNlc3Npb25JbmZvKCkKYGBgCg==
    +
    LS0tCnRpdGxlOiAiUGF0aHdheSBBbmFseXNpczogQVVDZWxsIgpvdXRwdXQ6CiAgaHRtbF9ub3RlYm9vazoKICAgIHRvYzogdHJ1ZQogICAgdG9jX2Zsb2F0OiB0cnVlCmF1dGhvcjogQ0NETCBmb3IgQUxTRgpkYXRlOiAyMDI0Ci0tLQoKKkFkYXB0ZWQgZnJvbSBbdGhlIEFVQ2VsbCB2aWduZXR0ZV0oaHR0cHM6Ly9iaW9jb25kdWN0b3Iub3JnL3BhY2thZ2VzL3JlbGVhc2UvYmlvYy92aWduZXR0ZXMvQVVDZWxsL2luc3QvZG9jL0FVQ2VsbC5odG1sKSBhbmQgW3RoZSBgY2VsbC10eXBlLWV3aW5nc2AgbW9kdWxlXShodHRwczovL2dpdGh1Yi5jb20vQWxleHNMZW1vbmFkZS9PcGVuU2NQQ0EtYW5hbHlzaXMvdHJlZS9tYWluL2FuYWx5c2VzL2NlbGwtdHlwZS1ld2luZ3MpIHRoYXQgaXMgcGFydCBvZiB0aGUgT3BlbiBTaW5nbGUtY2VsbCBQZWRpYXRyaWMgQ2FuY2VyIEF0bGFzIHByb2plY3QuKgoKIyMgT2JqZWN0aXZlcwoKLSBJbnRyb2R1Y2UgdGhlIGBBVUNlbGxgIFIgcGFja2FnZQotIElsbHVzdHJhdGUgaG93IEFVQyB2YWx1ZXMgYXJlIGNhbGN1bGF0ZWQKLSBEZW1vbnN0cmF0ZSBob3cgQVVDIHZhbHVlcyBjYW4gYmUgdXNlZCBmb3IgY2VsbCBhc3NpZ25tZW50IGFuZCBwbG90dGluZwoKLS0tCgpJbiB0aGlzIG5vdGVib29rLCB3ZSdsbCBkZW1vbnN0cmF0ZSBob3cgdG8gdXNlIHRoZSBgQVVDZWxsYCBtZXRob2QsIGludHJvZHVjZWQgaW4gW0FpYmFyIF9ldCBhbF8uIDIwMTcuXShodHRwczovL2RvaS5vcmcvMTAuMTAzOC9ubWV0aC40NDYzKS4KCldlIGNhbiB1c2UgYEFVQ2VsbGAgd2hlbiB3ZSBhcmUgaW50ZXJlc3RlZCBpbiBhIGdlbmUgc2V0J3MgcmVsYXRpdmUgZXhwcmVzc2lvbiBvciBhY3Rpdml0eSBpbiBhbiBpbmRpdmlkdWFsIGNlbGwuCkdlbmUgc2V0cyBjYW4gY29tZSBmcm9tIGEgY3VyYXRlZCBjb2xsZWN0aW9uIG9mIHByaW9yIGtub3dsZWRnZSwgbGlrZSB0aGUgSGFsbG1hcmsgY29sbGVjdGlvbiB3ZSB1c2VkIGluIHRoZSBsYXN0IG5vdGVib29rLCBvciB3ZSBjYW4gdXNlIG91ciBvd24gY3VzdG9tIGdlbmUgc2V0cyAoZS5nLiwgYSBzZXQgb2YgbWFya2VyIGdlbmVzIGZvciBhIGNlbGwgdHlwZSBvZiBpbnRlcmVzdCkuCgpBIG5pY2UgZmVhdHVyZSBvZiBgQVVDZWxsYCBpcyB0aGF0IGl0IGlzIGJhc2VkIG9uIHJhbmtpbmcgZ2VuZXMgZnJvbSBoaWdoZXN0IHRvIGxvd2VzdCBleHByZXNzaW9uIHZhbHVlIGluIGFuIGluZGl2aWR1YWwgY2VsbCwgd2hpY2ggaXMgaGVscGZ1bCBpbiB0aGUgZm9sbG93aW5nIHdheXMgKFtgQVVDZWxsYCB2aWduZXR0ZV0oaHR0cHM6Ly9iaW9jb25kdWN0b3Iub3JnL3BhY2thZ2VzL3JlbGVhc2UvYmlvYy92aWduZXR0ZXMvQVVDZWxsL2luc3QvZG9jL0FVQ2VsbC5odG1sKSk6CgotIEl0IGNhbiB0YWtlIGEgbnVtYmVyIG9mIGRpZmZlcmVudCB2YWx1ZXMgYXMgaW5wdXQgKGUuZy4sIHJhdyBjb3VudHMsIFRQTSkgCi0gSXQgY29tcGVuc2F0ZXMgZm9yIGRpZmZlcmVuY2VzIGluIGxpYnJhcnkgc2l6ZSwgd2hlcmUgc29tZXRoaW5nIGxpa2UgYXZlcmFnaW5nIHJhdyBjb3VudCB2YWx1ZXMgb2YgZ2VuZXMgaW4gYSBnZW5lIHNldCB3b3VsZCBub3QgCi0gSXQgc2NhbGVzIHRvIGxhcmdlciBkYXRhc2V0cywgc2luY2UgY3JlYXRpbmcgcmFua2luZ3MgaXMgbm90IGFzIHJlc291cmNlLWludGVuc2l2ZSBhcyBzb21ldGhpbmcgbGlrZSBwZXJtdXRhdGlvbiB0ZXN0aW5nLCBhbmQgd2UgY291bGQgc3BsaXQgdXAgdGhlIG9iamVjdCBpbnRvIHN1YnNldHMgb2YgY2VsbHMgaWYgbmVlZGVkCgpgQVVDZWxsYCBjYWxjdWxhdGVzIHRoZSBhcmVhIHVuZGVyIHRoZSByZWNvdmVyeSBjdXJ2ZSAoQVVDKSwgd2hpY2ggInJlcHJlc2VudHMgdGhlIHByb3BvcnRpb24gb2YgZXhwcmVzc2VkIGdlbmVzIGluIHRoZSBzaWduYXR1cmUgYW5kIHRoZWlyIHJlbGF0aXZlIGV4cHJlc3Npb24gdmFsdWUgY29tcGFyZWQgdG8gdGhlIG90aGVyIGdlbmVzIHdpdGhpbiB0aGUgY2VsbCIgKFtBaWJhciBfZXQgYWxfLiAyMDE3Ll0oaHR0cHM6Ly9kb2kub3JnLzEwLjEwMzgvbm1ldGguNDQ2MykpLgpXZSB3aWxsIHZpc3VhbGl6ZSBzb21lIHJlY292ZXJ5IGN1cnZlcyBpbiB0aGUgbm90ZWJvb2sgdG8gZ2l2ZSB5b3UgYSBiZXR0ZXIgaW50dWl0aW9uIGFib3V0IHRoZSBBVUMgYW5kIGl0cyBtZWFuaW5nLgoKVGhlIEFVQyB2YWx1ZXMgd2UgZ2V0IG91dCBvZiBgQVVDZWxsYCBjYW4gYmUgdXNlZCBpbiBhIG51bWJlciBvZiB3YXlzIChbQWliYXIgX2V0IGFsXy4gMjAxNy5dKGh0dHBzOi8vZG9pLm9yZy8xMC4xMDM4L25tZXRoLjQ0NjMpKToKCi0gQXMgY29udGludW91cyB2YWx1ZXMgd2UgY2FuIHVzZSBmb3IgdmlzdWFsaXphdGlvbiBvciBjbHVzdGVyaW5nCi0gRm9yIGJpbmFyeSBhc3NpZ25tZW50IChpLmUuLCAib24iIGFuZCAib2ZmIiBvciAiZXhwcmVzc2VkIiBhbmQgIm5vdCBleHByZXNzZWQiKSBpZiB3ZSBwaWNrIGEgdGhyZXNob2xkIGVpdGhlciBhdXRvbWF0aWNhbGx5IHVzaW5nIGJ1aWx0LWluIGZ1bmN0aW9uYWxpdHkgb3IgbWFudWFsbHkgYnkgaW5zcGVjdGluZyB0aGUgZGlzdHJpYnV0aW9uIG9mIHNjb3JlcyBvdXJzZWx2ZXMKCldlIHdpbGwgdXNlIGFuIHNuUk5BLXNlcSBvZiBhIEV3aW5nIHNhcmNvbWEgc2FtcGxlIGZyb20gdGhlIFtgU0NQQ1AwMDAwMTVgIHByb2plY3RdKGh0dHBzOi8vc2NwY2EuYWxleHNsZW1vbmFkZS5vcmcvcHJvamVjdHMvU0NQQ1AwMDAwMTUpIG9uIHRoZSBTaW5nbGUtY2VsbCBQZWRpYXRyaWMgQ2FuY2VyIEF0bGFzIFBvcnRhbCBhbmQgdHdvIHJlbGV2YW50IGdlbmUgc2V0cyBmcm9tIHRoZSBNb2xlY3VsYXIgU2lnbmF0dXJlcyBEYXRhYmFzZSAoTVNpZ0RCKSB0byBkZW1vbnN0cmF0ZSB0aGlzIG1ldGhvZC4KCiMjIFNldCB1cAoKIyMjIExpYnJhcmllcwoKYGBge3Igc2V0dXB9CiMgV2Ugd2lsbCBiZSBsb2FkaW5nIGEgU2luZ2xlQ2VsbEV4cGVyaW1lbnQgb2JqZWN0IGludG8gb3VyIGVudmlyb25tZW50IGJ1dCBkb24ndCBuZWVkIHRvIHNlZSB0aGUgc3RhcnR1cCBtZXNzYWdlcwpzdXBwcmVzc1BhY2thZ2VTdGFydHVwTWVzc2FnZXMoewogIGxpYnJhcnkoU2luZ2xlQ2VsbEV4cGVyaW1lbnQpCn0pCgojIExpYnJhcnkgd2UnbGwgdXNlIGZvciB0aGUgZ2VuZSBzZXQgYW5hbHlzaXMgaXRzZWxmCmxpYnJhcnkoQVVDZWxsKQoKIyBMaWJyYXJpZXMgZm9yIGFjY2Vzc2luZyBhbmQgd29ya2luZyB3aXRoIGdlbmUgc2V0cwpsaWJyYXJ5KEdTRUFCYXNlKQpsaWJyYXJ5KG1zaWdkYnIpCmBgYAoKIyMjIERpcmVjdG9yaWVzIGFuZCBmaWxlcwoKIyMjIyBEaXJlY3RvcmllcwoKYGBge3Igc2V0dXBfZGlyZWN0b3JpZXN9CiMgSW5wdXQgZGF0YSAKZXdpbmdfZGF0YV9kaXIgPC0gZnM6OnBhdGgoImRhdGEiLCAiZXdpbmctc2FyY29tYSIpCnByb2Nlc3NlZF9kaXIgPC0gZnM6OnBhdGgoZXdpbmdfZGF0YV9kaXIsICJwcm9jZXNzZWQiKQoKIyBEaXJlY3RvcnkgZm9yIGhvbGRpbmcgcGF0aHdheSBhbmFseXNpcyByZXN1bHRzCmFuYWx5c2lzX2RpciA8LSBmczo6cGF0aCgiYW5hbHlzaXMiLCAiZXdpbmctc2FyY29tYSIsICJwYXRod2F5LWFuYWx5c2lzIikKIyBDcmVhdGUgaWYgaXQgZG9lc24ndCBleGlzdCB5ZXQKZnM6OmRpcl9jcmVhdGUoYW5hbHlzaXNfZGlyKQpgYGAKCiMjIyMgRmlsZXMKClRoZSBpbnB1dCB3aWxsIGJlIGEgYFNpbmdsZUNlbGxFeHBlcmltZW50YCBmb3IgYW4gaW5kaXZpZHVhbCBFd2luZyBzYXJjb21hIGxpYnJhcnkuCgpgYGB7ciBzZXR1cF9pbnB1dF9maWxlc30Kc2NlX2ZpbGUgPC0gZnM6OnBhdGgocHJvY2Vzc2VkX2RpciwgCiAgICAgICAgICAgICAgICAgICAgICJTQ1BDUzAwMDQ5MCIsIAogICAgICAgICAgICAgICAgICAgICAiU0NQQ0wwMDA4MjJfcHJvY2Vzc2VkLnJkcyIpCmBgYAoKV2Ugd2lsbCBzYXZlIHRoZSBgQVVDZWxsYCByZXN1bHRzIGFzIGEgdGFibGUgaW4gdGhlIGFuYWx5c2lzIGRpcmVjdG9yeS4KCmBgYHtyIHNldHVwX291dHB1dF9maWxlcywgbGl2ZSA9IFRSVUV9Cm91dHB1dF9maWxlIDwtIGZzOjpwYXRoKGFuYWx5c2lzX2RpciwKICAgICAgICAgICAgICAgICAgICAgICAgImV3aW5nX3NhcmNvbWFfYXVjZWxsX3Jlc3VsdHMudHN2IikKYGBgCgoKIyMjIEZ1bmN0aW9ucwoKVGhlIGBzb3VyY2UoKWAgZnVuY3Rpb24gYWxsb3dzIHVzIHRvIGxvYWQgaW4gY3VzdG9tIGZ1bmN0aW9ucyB3ZSBzYXZlZCBpbiBhbiBgLlJgIGZpbGUuCgpgYGB7ciBzb3VyY2VfZnVuY3Rpb25zfQpzb3VyY2UoZnM6OnBhdGgoInV0aWwiLCAiYXVjZWxsX2Z1bmN0aW9ucy5SIikpCmBgYAoKVGhpcyBsb2FkcyBvbmUgY3VzdG9tIGZ1bmN0aW9uLCBjYWxsZWQgYHBsb3RfcmVjb3ZlcnlfY3VydmUoKWAsIGludG8gb3VyIGVudmlyb25tZW50LgpUaGlzIGZ1bmN0aW9uIGlzIGFkYXB0ZWQgZnJvbSBbdGhlIGBBVUNlbGxgIHZpZ25ldHRlXShodHRwczovL2dpdGh1Yi5jb20vYWVydHNsYWIvQVVDZWxsL2Jsb2IvOTE3NTNiMzI3YTM5ZGM3YTRiYmVkNDY0MDhlYzIyNzFjNDg1ZjJmMC92aWduZXR0ZXMvQVVDZWxsLlJtZCNMMjk1LUwzMTYpLgoKIyMgU2V0IHVwIGdlbmUgc2V0cwoKV2UgYXJlIGdvaW5nIHRvIHVzZSB0d28gZ2VuZSBzZXRzIHBlcnRhaW5pbmcgdG8gRXdpbmcgc2FyY29tYS4KCiogW2BaSEFOR19UQVJHRVRTX09GX0VXU1IxX0ZMSTFfRlVTSU9OYF0oaHR0cHM6Ly93d3cuZ3NlYS1tc2lnZGIub3JnL2dzZWEvbXNpZ2RiL2dlbmVzZXRfcGFnZS5qc3A/Z2VuZVNldE5hbWU9WkhBTkdfVEFSR0VUU19PRl9FV1NSMV9GTEkxX0ZVU0lPTiksIHdoaWNoIGFyZSBnZW5lcyB0aGF0IHdlcmUgaGlnaGx5IGV4cHJlc3NlZCBpbiBhIHJoYWJkb215b3NhcmNvbWEgY2VsbCBsaW5lIGVuZ2luZWVyZWQgdG8gZXhwcmVzcyB0aGUgRVdTUjEtRkxJMSBmdXNpb24uCiogW2BSSUdHSV9FV0lOR19TQVJDT01BX1BST0dFTklUT1JfVVBgXShodHRwczovL3d3dy5nc2VhLW1zaWdkYi5vcmcvZ3NlYS9tc2lnZGIvY2FyZHMvUklHR0lfRVdJTkdfU0FSQ09NQV9QUk9HRU5JVE9SX1VQKSwgd2hpY2ggYXJlIGdlbmVzIHRoYXQgd2VyZSBoaWdobHkgZXhwcmVzc2VkIGluIG1lc2VuY2h5bWFsIHN0ZW0gY2VsbHMgZW5naW5lZXJlZCB0byBleHByZXNzIHRoZSBFV1MtRkxJMSBmdXNpb24gcHJvdGVpbi4KCldlIHdvdWxkIGV4cGVjdCBib3RoIG9mIHRoZXNlIGdlbmUgc2V0cyB0byBoYXZlIGhpZ2ggZXhwcmVzc2lvbiBpbiB0dW1vciBjZWxscy4KCmBgYHtyIGdlbmVzZXRzfQojIENyZWF0ZSBhIG5hbWVkIHZlY3RvciB3aXRoIHRoZSByZWxldmFudCBnZW5lIHNldCBuYW1lcwpld2luZ19nZW5lX3NldF9uYW1lcyA8LSBjKHpoYW5nID0gIlpIQU5HX1RBUkdFVFNfT0ZfRVdTUjFfRkxJMV9GVVNJT04iLAogICAgICAgICAgICAgICAgICAgICAgICAgIHJpZ2dpID0gIlJJR0dJX0VXSU5HX1NBUkNPTUFfUFJPR0VOSVRPUl9VUCIpCgpld2luZ19nZW5lX3NldF9uYW1lcwpgYGAKClRoZXNlIGdlbmUgc2V0cyBjb21lIGZyb20gdGhlIEMyIGdlbmUgc2V0IGNvbGxlY3Rpb24gZnJvbSBNU2lnREIuCkxldCdzIHJldHJpZXZlIHRoZW0gdXNpbmcgYG1zaWdkYnIoKWAuCgpgYGB7ciBleHRyYWN0X2dlbmVzZXRzLCBsaXZlID0gVFJVRX0KZXdpbmdfZ2VuZV9zZXRzX2RmIDwtIG1zaWdkYnIoc3BlY2llcyA9ICJIb21vIHNhcGllbnMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXRlZ29yeSA9ICJDMiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1YmNhdGVnb3J5ID0gIkNHUCIpIHw+CiAgZHBseXI6OmZpbHRlcihnc19uYW1lICVpbiUgZXdpbmdfZ2VuZV9zZXRfbmFtZXMpCmBgYAoKYEFVQ2VsbGAgdXNlcyBnZW5lIHNldHMgaW4gYSBwYXJ0aWN1bGFyIGZvcm1hdCB0aGF0IGNvbWVzIGZyb20gdGhlIGBHU0VBQmFzZWAgcGFja2FnZS4KV2UgbmVlZCB0byBjcmVhdGUgYSBgR2VuZVNldENvbGxlY3Rpb25gLgoKYGBge3IgZ2VuZV9zZXRfY29sbGVjdGlvbn0KZXdpbmdfZ2VuZV9zZXRfY29sbGVjdGlvbiA8LSBld2luZ19nZW5lX3NldF9uYW1lcyB8PgogIHB1cnJyOjptYXAoCiAgICAjIEZvciBlYWNoIGdlbmUgc2V0CiAgICBcKGdlbmVfc2V0X25hbWUpIHsKICAgICAgZXdpbmdfZ2VuZV9zZXRzX2RmIHw+CiAgICAgICAgIyBTdWJzZXQgdG8gdGhlIHJvd3MgaW4gdGhhdCBnZW5lIHNldAogICAgICAgIGRwbHlyOjpmaWx0ZXIoZ3NfbmFtZSA9PSBnZW5lX3NldF9uYW1lKSB8PgogICAgICAgICMgR3JhYiB0aGUgRW5zZW1ibCBnZW5lIGlkZW50aWZpZXJzCiAgICAgICAgZHBseXI6OnB1bGwoZW5zZW1ibF9nZW5lKSB8PgogICAgICAgICMgQ3JlYXRlIGEgR2VuZVNldCBvYmplY3QKICAgICAgICBHZW5lU2V0KHNldE5hbWUgPSBnZW5lX3NldF9uYW1lLAogICAgICAgICAgICAgICAgZ2VuZUlkVHlwZSA9IEVOU0VNQkxJZGVudGlmaWVyKCkpCiAgICB9CiAgKSB8PgogICMgVHVybiB0aGUgbGlzdCBvZiBHZW5lU2V0IG9iamVjdHMgaW50byBhIEdlbmVTZXQgY29sbGVjdGlvbgogIEdlbmVTZXRDb2xsZWN0aW9uKCkKYGBgCgojIyBSZWFkIGluIGFuZCBwcmVwYXJlIHRoZSBgU2luZ2xlQ2VsbEV4cGVyaW1lbnRgCgpgYGB7ciByZWFkX2luX3NjZSwgbGl2ZSA9IFRSVUV9CnNjZSA8LSByZWFkcjo6cmVhZF9yZHMoc2NlX2ZpbGUpCmBgYAoKT3VyIG9iamVjdCBpbmNsdWRlcyBjb3VudHMgZm9yIGFsbCBnZW5lcyB0aGF0IHdlcmUgcHJlc2VudCBpbiB0aGUgaW5kZXggd2hlbiBxdWFudGlmeWluZyBnZW5lIGV4cHJlc3Npb24uClRoZXJlIGFyZSBhIG51bWJlciBvZiBnZW5lcyB0aGF0IGFyZSBwcmVzZW50IGluIHRoZSBvYmplY3QgYnV0IG5vdCBkZXRlY3RlZCBpbiBhbnkgb2YgdGhlIGNlbGxzLiAKV2UgZG9uJ3Qgd2FudCBnZW5lcyB0aGF0IGFyZSBub3QgZm91bmQgaW4gb3VyIGRhdGEgc2V0IHRvIGltcGFjdCBvdXIgcmFua2luZ3MsIHNvIGxldCdzIHJlbW92ZSB0aGVtLiAKCmBgYHtyLCBmaWx0ZXJfc2NlfQojIHJlbW92ZSBnZW5lcyB0aGF0IGFyZSBub3QgZGV0ZWN0ZWQgaW4gYW55IG9mIHRoZSBjZWxscyBmcm9tIHRoZSBTQ0Ugb2JqZWN0CmdlbmVzX3RvX2tlZXAgPC0gcm93RGF0YShzY2UpJGRldGVjdGVkID4gMApzY2UgPC0gc2NlW2dlbmVzX3RvX2tlZXAsIF0KYGBgCgoKVGhlIGBBVUNlbGxgIGZ1bmN0aW9ucyB0YWtlcyBhbiBleHByZXNzaW9uIG1hdHJpeCB3aXRoIGdlbmVzIGFzIHJvd3MgYW5kIGNlbGxzIGFzIGNvbHVtbi4KV2UgY2FuIGV4dHJhY3QgYSBjb3VudHMgbWF0cml4IGluIHNwYXJzZSBmb3JtYXQgZm9yIHVzZSB3aXRoIGBBVUNlbGxgLgoKCmBgYHtyIGNvdW50c19tYXRyaXh9CiMgRXh0cmFjdCBjb3VudHMgbWF0cml4CmNvdW50c19tYXRyaXggPC0gY291bnRzKHNjZSkKYGBgCgpUaGVyZSBtYXkgYmUgZ2VuZXMgaW4gb3VyIGdlbmUgc2V0IHRoYXQgZG8gbm90IGFwcGVhciBpbiB0aGUgYFNpbmdsZUNlbGxFeHBlcmltZW50YCBvYmplY3QuCldlIGNhbiByZW1vdmUgdGhlbSB1c2luZyB0aGUgYHN1YnNldEdlbmVTZXRzKClgIGZ1bmN0aW9uLgoKYGBge3Igc3Vic2V0X2dlbmVfc2V0cywgbGl2ZSA9IFRSVUV9CiMgUmVtb3ZlIGdlbmVzIGZyb20gZ2VuZSBzZXRzIGlmIHRoZXkgYXJlIG5vdCBpbiB0aGUgU0NFCmV3aW5nX2dlbmVfc2V0X2NvbGxlY3Rpb24gPC0gc3Vic2V0R2VuZVNldHMoZXdpbmdfZ2VuZV9zZXRfY29sbGVjdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3duYW1lcyhjb3VudHNfbWF0cml4KSkKYGBgCgojIyBgQVVDZWxsYAoKYEFVQ2VsbGAgcmVsaWVzIG9uIHJhbmtpbmcgZ2VuZXMgZnJvbSBoaWdoZXN0IHRvIGxvd2VzdCBleHByZXNzaW9uIHZhbHVlIHRvIGNhbGN1bGF0ZSB0aGUgQVVDLgpUaGUgQVVDIGlzIHRoZSBhcmVhIHVuZGVyIHRoZSByZWNvdmVyeSBjdXJ2ZSwgd2hpY2ggY2FwdHVyZXMgdGhlIG51bWJlciBvZiBnZW5lcyBpbiBhIGdlbmUgc2V0IHRoYXQgYXJlIHByZXNlbnQgaW4gdGhlIHJhbmtpbmdzIGFib3ZlIHNvbWUgdGhyZXNob2xkIChpLmUuLCBpdCBpcyB0aGUgYXJlYSB1bmRlciB0aGUgY3VydmUgdG8gdGhlIGxlZnQgb2YgdGhpcyBnZW5lIHJhbmspLgpCeSBkZWZhdWx0LCB0aGUgdG9wIDUlIG9mIGdlbmVzIGFyZSB1c2VkIGFzIHRoZSB0aHJlc2hvbGQuCgpTb21lIGdlbmVzIHdpbGwgbm90IGJlIGRldGVjdGVkIChpLmUuLCBoYXZlIDAgY291bnRzKS4KR2VuZXMgY2FuIGFsc28gaGF2ZSB0aGUgc2FtZSBleHByZXNzaW9uIGxldmVsIChpLmUuLCB0aWVzKS4KVGhlc2UgdW5kZXRlY3RlZCBnZW5lcyBhbmQgdGllcyB3aWxsIGJlIHJhbmRvbWx5IG9yZGVyZWQgaW4gb3VyIHJhbmtpbmcuClRvIG1ha2Ugb3VyIHJhbmtpbmdzIOKAkyBhbmQgdGhlcmVmb3JlIHJlc3VsdHMg4oCTIHJlcHJvZHVjaWJsZSwgd2Ugd2lsbCBzZXQgYSBzZWVkLgoKYGBge3Igc2V0X3NlZWQsIGxpdmUgPSBUUlVFfQpzZXQuc2VlZCgyMDI0KQpgYGAKCiMjIyBDZWxsIHJhbmtpbmcKClRoZSBmaXJzdCBzdGVwIGluIGBBVUNlbGxgIGlzIHRvIHJhbmsgZ2VuZXMgZm9yIGVhY2ggY2VsbCBmcm9tIGhpZ2hlc3QgdG8gbG93ZXN0IGV4cHJlc3Npb24gdmFsdWUuCldlIGNhbiBkbyB0aGlzIHVzaW5nIHRoZSBgQVVDZWxsX2J1aWxkUmFua2luZ3MoKWAgZnVuY3Rpb24sIHdoaWNoIHdpbGwgb3V0cHV0IGEgdmlzdWFsaXphdGlvbiBzaG93aW5nIHRoZSBkaXN0cmlidXRpb24gb2YgdGhlIG51bWJlciBvZiBnZW5lcyBkZXRlY3RlZCBpbiB0aGUgY2VsbHMgaW4gb3VyIGBTaW5nbGVDZWxsRXhwZXJpbWVudGAgb2JqZWN0LgoKYGBge3IgY2VsbF9yYW5raW5ncywgbGl2ZSA9IFRSVUV9CmNlbGxfcmFua2luZ3MgPC0gQVVDZWxsX2J1aWxkUmFua2luZ3MoY291bnRzX21hdHJpeCkKYGBgCgpUaGUgYEFVQ2VsbGAgYXV0aG9ycyByZWNvbW1lbmQgbWFraW5nIHN1cmUgbW9zdCBjZWxscyBoYXZlIGF0IGxlYXN0IHRoZSBudW1iZXIgb2YgZ2VuZXMgd2Ugd2lsbCB1c2UgYXMgdGhlIG1heCByYW5rIHRvIGNhbGN1bGF0ZSB0aGUgQVVDLgoKVGhlIEFVQyBtYXggcmFuayB2YWx1ZSB0ZWxscyBgQVVDZWxsYCB0aGUgY3V0b2ZmIGluIHRoZSBnZW5lIHJhbmtpbmdzIHRvIHVzZSBmb3IgY2FsY3VsYXRpbmcgQVVDOyB3ZSB3aWxsIHZpc3VhbGl6ZSB0aGlzIGN1cnZlIGFuZCBtYXggcmFuayBpbiBqdXN0IGEgbW9tZW50LgpJZiB3ZSBwaWNrZWQgYSBtYXggcmFuayBoaWdoZXIgdGhhbiB0aGUgbnVtYmVyIG9mIGdlbmVzIGRldGVjdGVkIGluIG1vc3QgY2VsbHMsIHRoZSBub24tZGV0ZWN0ZWQgZ2VuZXMgdGhhdCBhcmUgcmFuZG9tbHkgb3JkZXJlZCB3b3VsZCBwbGF5IGFuIG91dHNpemVkIHJvbGUgaW4gb3VyIEFVQyB2YWx1ZXMuCgpCeSBkZWZhdWx0LCB0aGUgbWF4IHJhbmsgaXMgdGhlIHRvcCA1JSBoaWdoZXN0IGV4cHJlc3NlZCBnZW5lcy4KV2UgY2FuIGNhbGN1bGF0ZSB0aGUgZGVmYXVsdCBtYXggcmFuayBieSB0YWtpbmcgaW50byBhY2NvdW50IHRoZSBudW1iZXIgb2YgZ2VuZXMuCgpgYGB7ciBleHBsb3JlX2F1Y19tYXhfcmFua30KbnJvdyhjZWxsX3JhbmtpbmdzKSAqIDAuMDUKYGBgCgpUaGlzIG51bWJlciBpcyBwcm9iYWJseSB0b28gaGlnaCwgZ2l2ZW4gdGhlIGRpc3RyaWJ1dGlvbiBvZiB0aGUgbnVtYmVyIG9mIGdlbmVzIGRldGVjdGVkIGJ5IGNlbGwgd2UgdmlzdWFsaXplZCB3aXRoIGBBVUNlbGxfYnVpbGRSYW5raW5ncygpYC4KCldoYXQgaWYgd2UgY2hvc2UgYSAxJSB0aHJlc2hvbGQ/CgpgYGB7ciBsb3dlcl9tYXhfcmFuaywgbGl2ZSA9IFRSVUV9Cm5yb3coY2VsbF9yYW5raW5ncykgKiAwLjAxCmBgYAoKVGhhdCBpcyBwcm9iYWJseSBhIG1vcmUgcmVhc29uYWJsZSBjaG9pY2UgZm9yIHRoaXMgZGF0YXNldC4KCldlIGNhbiB1c2UgYSBmdW5jdGlvbiBjYWxsZWQgYGNlaWxpbmcoKWAgdG8gcm91bmQgdGhpcyBhbmQgc2F2ZSBpdCB0byBhIHZhcmlhYmxlIGZvciBsYXRlciB1c2UuCgpgYGB7ciBhdWNfbWF4X3JhbmssIGxpdmUgPSBUUlVFfQphdWNfbWF4X3JhbmsgPC0gY2VpbGluZyhucm93KGNlbGxfcmFua2luZ3MpICogMC4wMSkKYGBgCgojIyMgUGxvdHRpbmcgQVVDCgpUaGUgQVVDIHZhbHVlcyB3ZSBnZXQgb3V0IG9mIGBBVUNlbGxgIGFyZSB0aGUgYXJlYSB1bmRlciBhIHJlY292ZXJ5IGN1cnZlIGFuZCBlc3RpbWF0ZSB0aGUgcHJvcG9ydGlvbiBvZiBnZW5lcyBpbiB0aGUgZ2VuZSBzZXQgdGhhdCBhcmUgaGlnaGx5IGV4cHJlc3NlZCAoaS5lLiwgaGlnaGx5IHJhbmtlZCkuCgpMZXQncyBwbG90IHRoZSByZWNvdmVyeSBjdXJ2ZSBmb3IgYSBjZWxsIHdpdGggaGlnaCBBVUMgYW5kIGEgY2VsbCB3aXRoIGxvdyBBVUMgdG8gZ2V0IGEgYmV0dGVyIGludHVpdGlvbiBhYm91dCBBVUMgdmFsdWVzLgpFYXJsaWVyLCB3ZSBsb2FkZWQgYSBjdXN0b20gZnVuY3Rpb24gd2UgYWRhcHRlZCBmcm9tIFt0aGUgYEFVQ2VsbGAgdmlnbmV0dGVdKGh0dHBzOi8vZ2l0aHViLmNvbS9hZXJ0c2xhYi9BVUNlbGwvYmxvYi85MTc1M2IzMjdhMzlkYzdhNGJiZWQ0NjQwOGVjMjI3MWM0ODVmMmYwL3ZpZ25ldHRlcy9BVUNlbGwuUm1kKSBjYWxsZWQgYHBsb3RfcmVjb3ZlcnlfY3VydmUoKWAgd2l0aCBgc291cmNlKClgLgoKRmlyc3QsIHdlJ2xsIHN0YXJ0IHdpdGggYSBjZWxsIHdpdGggYSBoaWdoIEFVQy4KV2UgcGlja2VkIHRoaXMgYmFyY29kZSBhaGVhZCBvZiB0aW1lIHdoZW4gd2Ugd3JvdGUgdGhlIG5vdGVib29rLgoKYGBge3IgaGlnaF9yZWNvdmVyeV9jdXJ2ZX0KcGxvdF9yZWNvdmVyeV9jdXJ2ZShjZWxsX3JhbmtpbmdzLAogICAgICAgICAgICAgICAgICAgIGV3aW5nX2dlbmVfc2V0X2NvbGxlY3Rpb24sCiAgICAgICAgICAgICAgICAgICAgZ2VuZV9zZXRfbmFtZSA9ICJaSEFOR19UQVJHRVRTX09GX0VXU1IxX0ZMSTFfRlVTSU9OIiwKICAgICAgICAgICAgICAgICAgICBiYXJjb2RlID0gIkNUR0FHQ0dHVENUVFRBVEMiLAogICAgICAgICAgICAgICAgICAgIGF1Y19tYXhfcmFuayA9IGF1Y19tYXhfcmFuaykgICMgMSUgdGhyZXNob2xkIApgYGAKClRoZSB4LWF4aXMgaXMgdGhlIGdlbmUgcmFua3MgZm9yIGFsbCBnZW5lcy4KVGhlIHktYXhpcyBpcyB0aGUgbnVtYmVyIG9mIGdlbmVzIGluIHRoZSBzaWduYXR1cmUgYXQgYSBnaXZlbiBwb2ludCBpbiB0aGUgZ2VuZSByYW5raW5nIOKAkyB0aGUgbGluZSB3aWxsIHJpc2Ugd2hlbiBhIGdlbmUgaW4gdGhlIGdlbmUgc2V0IGlzIGVuY291bnRlcmVkIGluIHRoZSByYW5raW5nIGZyb20gaGlnaGVzdCB0byBsb3dlc3QuClRoZSBBVUMgaXMgdGhlIGFyZWEgdW5kZXIgdGhpcyByZWNvdmVyeSBjdXJ2ZSBhdCB0aGUgbWF4IHJhbmsgdGhyZXNob2xkIGNob3NlbiBmb3IgdGhpcyBkYXRhc2V0LgoKTm93LCBsZXQncyBsb29rIGF0IGFuIGV4YW1wbGUgd2l0aCBhIGxvdyBBVUMuCgpgYGB7ciBsb3dfcmVjb3ZlcnlfY3VydmV9CnBsb3RfcmVjb3ZlcnlfY3VydmUoY2VsbF9yYW5raW5ncywKICAgICAgICAgICAgICAgICAgICBld2luZ19nZW5lX3NldF9jb2xsZWN0aW9uLAogICAgICAgICAgICAgICAgICAgIGdlbmVfc2V0X25hbWUgPSAiWkhBTkdfVEFSR0VUU19PRl9FV1NSMV9GTEkxX0ZVU0lPTiIsCiAgICAgICAgICAgICAgICAgICAgYmFyY29kZSA9ICJBR0FUQUdBR1RDQUNBQVRDIiwKICAgICAgICAgICAgICAgICAgICBhdWNfbWF4X3JhbmsgPSBhdWNfbWF4X3JhbmspICAjIDElIHRocmVzaG9sZApgYGAKCkZhciBmZXdlciBnZW5lcyBpbiB0aGUgZ2VuZSBzZXQgYXJlIHJhbmtlZCBhYm92ZSB0aGUgdGhyZXNob2xkLCB5aWVsZGluZyBhIGxvd2VyIEFVQyB2YWx1ZS4KCiMjIyBDYWxjdWxhdGluZyB0aGUgQVVDCgpPbmNlIHdlIGhhdmUgdGhlIHJhbmtpbmdzLCB3ZSBjYW4gY2FsY3VsYXRlIHRoZSBBVUMgc2NvcmVzIGZvciBib3RoIGdlbmUgc2V0cyBpbiBhbGwgY2VsbHMgd2l0aCB0aGUgYEFVQ2VsbF9jYWxjQVVDKClgIGZ1bmN0aW9uLgoKYGBge3IgY2FsY19hdWMsIGxpdmUgPSBUUlVFfQpjZWxsX2F1YyA8LSBBVUNlbGxfY2FsY0FVQyhnZW5lU2V0cyA9IGV3aW5nX2dlbmVfc2V0X2NvbGxlY3Rpb24sIAogICAgICAgICAgICAgICAgICAgICAgICAgICByYW5raW5ncyA9IGNlbGxfcmFua2luZ3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1Y01heFJhbmsgPSBhdWNfbWF4X3JhbmspCmBgYAoKVGhpcyBmdW5jdGlvbiByZXR1cm5zIGFuIGBhdWNlbGxSZXN1bHRzYCBvYmplY3QuCgpgYGB7ciBjaGVja19zdHIsIGxpdmUgPSBUUlVFfQpzdHIoY2VsbF9hdWMpCmBgYAoKSXQgY2FuIGJlIG11Y2ggbW9yZSBjb252ZW5pZW50IHRvIHdvcmsgd2l0aCB0aGlzIGluIGEgdGFidWxhciBmb3JtYXQuCgpgYGB7ciBhdWNfdG9fdGFibGV9CiMgRXh0cmFjdCBBVUMKYXVjX2RmIDwtIGNlbGxfYXVjQGFzc2F5c0BkYXRhJEFVQyB8PgogICMgVHJhbnNwb3NlCiAgdCgpIHw+CiAgIyBDb252ZXJ0IHRvIGRhdGEgZnJhbWUKICBhcy5kYXRhLmZyYW1lKCkgfD4KICAjIE1ha2UgdGhlIGJhcmNvZGVzIGEgY29sdW1uCiAgdGliYmxlOjpyb3duYW1lc190b19jb2x1bW4oImJhcmNvZGVzIikgCgojIExvb2sgYXQgZmlyc3QgZmV3IHJvd3MKaGVhZChhdWNfZGYpCmBgYAoKIyMjIEFzc2lnbm1lbnRzCgpgQVVDZWxsYCBjYW4gYXNzaWduIGNlbGxzIGFzIGhhdmluZyBhbiBhY3RpdmUgZ2VuZSBzZXQgb3Igbm90IGJ5IHBpY2tpbmcgYSB0aHJlc2hvbGQgYXV0b21hdGljYWxseS4KV2UnbGwgZXhwbG9yZSB0aGVzZSBpbiBhIGxhdGVyIHBsb3QsIGJ1dCBmb3Igbm93LCBsZXQncyBjYWxjdWxhdGUgdGhlIHRocmVzaG9sZCBhbmQgYXNzaWduIGNlbGxzIHdpdGggYEFVQ2VsbF9leHBsb3JlVGhyZXNob2xkcygpYC4KCmBgYHtyIGF1Y19hc3NpZ25tZW50cywgbGl2ZSA9IFRSVUV9CmF1Y19hc3NpZ25tZW50cyA8LSBBVUNlbGxfZXhwbG9yZVRocmVzaG9sZHMoY2VsbF9hdWMsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsb3RIaXN0ID0gRkFMU0UsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzc2lnbkNlbGxzID0gVFJVRSkKYGBgCgpXZSdyZSBnb2luZyB0byBwbG90IHRoZSBkaXN0cmlidXRpb24gb2YgQVVDIHZhbHVlcyB3aXRoIGBnZ3Bsb3QyYCwgc28gd2Ugd2lsbCB3YW50IHRoZSBBVUMgdmFsdWVzIGluIGEgbG9uZ2VyIGZvcm1hdC4KCmBgYHtyIGF1Y19wbG90dGluZ19kZn0KYXVjX3Bsb3R0aW5nX2RmIDwtIGF1Y19kZiB8PgogIHRpZHlyOjpwaXZvdF9sb25nZXIoIWJhcmNvZGVzLAogICAgICAgICAgICAgICAgICAgICAgbmFtZXNfdG8gPSAiZ2VuZV9zZXQiLAogICAgICAgICAgICAgICAgICAgICAgdmFsdWVzX3RvID0gImF1YyIpIHw+CiAgZHBseXI6Om11dGF0ZSgKICAgICMgQ3JlYXRlIGEgbmV3IGxvZ2ljYWwgY29sdW1uIGNhbGxlZCBhc3NpZ25lZAogICAgYXNzaWduZWQgPSBkcGx5cjo6Y2FzZV93aGVuKAogICAgICAjIEZvciBaaGFuZyBnZW5lIHNldCByb3dzLCBzZXQgdG8gVFJVRSB3aGVuIHRoZSBiYXJjb2RlIGlzIGluIHRoZSAKICAgICAgIyBhc3NpZ25tZW50IGxpc3QKICAgICAgZ2VuZV9zZXQgPT0gZXdpbmdfZ2VuZV9zZXRfbmFtZXNbWyJ6aGFuZyJdXSAmIAogICAgICAgIGJhcmNvZGVzICVpbiUgYXVjX2Fzc2lnbm1lbnRzW1tld2luZ19nZW5lX3NldF9uYW1lc1tbInpoYW5nIl1dXV0kYXNzaWdubWVudCB+IFRSVUUsCiAgICAgICMgRm9yIFJpZ2dpIGdlbmUgc2V0IHJvd3MsIHNldCB0byBUUlVFIHdoZW4gdGhlIGJhcmNvZGUgaXMgaW4gdGhlIAogICAgICAjIGFzc2lnbm1lbnQgbGlzdAogICAgICBnZW5lX3NldCA9PSBld2luZ19nZW5lX3NldF9uYW1lc1tbInJpZ2dpIl1dICYgCiAgICAgICAgYmFyY29kZXMgJWluJSBhdWNfYXNzaWdubWVudHNbW2V3aW5nX2dlbmVfc2V0X25hbWVzW1sicmlnZ2kiXV1dXSRhc3NpZ25tZW50IH4gVFJVRSwKICAgICAgIyBPdGhlcndpc2UsIHNldCB0byBGQUxTRQogICAgICAuZGVmYXVsdCA9IEZBTFNFCiAgICApCiAgKQoKYXVjX3Bsb3R0aW5nX2RmCmBgYAoKVG8gZHJhdyB2ZXJ0aWNhbCBsaW5lcyByZXByZXNlbnRpbmcgdGhlIGF1dG9tYXRpY2FsbHkgY2hvc2VuIHRocmVzaG9sZCwgd2UgY2FuIGNyZWF0ZSBhIHNlcGFyYXRlIGRhdGEgZnJhbWUuCgpgYGB7ciBhdWNfdGhyZXNob2xkX2RmfQphdWNfdGhyZXNob2xkX2RmIDwtIGRhdGEuZnJhbWUoCiAgZ2VuZV9zZXQgPSBld2luZ19nZW5lX3NldF9uYW1lcywKICAjIEdyYWIgdGhyZXNob2xkcyBhc3NvY2lhdGVkIHdpdGggZWFjaCBnZW5lIHNldCBmcm9tIGFzc2lnbmVtZW50cyBvYmplY3QKICB0aHJlc2hvbGQgPSBjKGF1Y19hc3NpZ25tZW50c1tbZXdpbmdfZ2VuZV9zZXRfbmFtZXNbInpoYW5nIl1dXSRhdWNUaHIkc2VsZWN0ZWQsIAogICAgICAgICAgICAgICAgYXVjX2Fzc2lnbm1lbnRzW1tld2luZ19nZW5lX3NldF9uYW1lc1sicmlnZ2kiXV1dJGF1Y1RociRzZWxlY3RlZCkKKQoKYXVjX3RocmVzaG9sZF9kZgpgYGAKCk5vdyBsZXQncyBtYWtlIGEgZGVuc2l0eSBwbG90LCBwbG90dGluZyB0aGUgZGVuc2l0eSBvZiB0aGUgYXNzaWduZWQgYW5kIHVuYXNzaWduZWQgY2VsbHMgc2VwYXJhdGVseSBhbmQgZHJhd2luZyBhIHZlcnRpY2FsIGxpbmUgZm9yIHRoZSB0aHJlc2hvbGQuCgpgYGB7ciBhdWNfZGVuc2l0eV9wbG90fQphdWNfcGxvdHRpbmdfZGYgfD4KICBnZ3Bsb3QyOjpnZ3Bsb3QoCiAgICBnZ3Bsb3QyOjphZXMoCiAgICAgIHggPSBhdWMsICAjIEFVQyB2YWx1ZXMKICAgICAgY29sb3IgPSBhc3NpZ25lZCwgICMgR3JvdXAgYnkgYXNzaWdubWVudAogICAgICBmaWxsID0gYXNzaWduZWQsICAgIyBHcm91cCBieSBhc3NpZ25tZW50CiAgICApCiAgKSArCiAgZ2dwbG90Mjo6Z2VvbV9kZW5zaXR5KGFscGhhID0gMC4yKSArCiAgIyBEcmF3IGEgdmVydGljYWwgZG90dGVkIGxpbmUgc2hvd2luZyB0aGUgdGhyZXNob2xkIGZvciBlYWNoIGdlbmUgc2V0CiAgZ2dwbG90Mjo6Z2VvbV92bGluZShkYXRhID0gYXVjX3RocmVzaG9sZF9kZiwKICAgICAgICAgICAgICAgICAgICAgIG1hcHBpbmcgPSBnZ3Bsb3QyOjphZXMoeGludGVyY2VwdCA9IHRocmVzaG9sZCksCiAgICAgICAgICAgICAgICAgICAgICBsdHkgPSAyKSArCiAgIyBQbG90IGVhY2ggZ2VuZSBzZXQgaW4gaXRzIG93biBmYWNldAogIGdncGxvdDI6OmZhY2V0X2dyaWQoY29scyA9IGdncGxvdDI6OnZhcnMoZ2VuZV9zZXQpKSArCiAgIyBVc2UgYSBidWlsdC1pbiB0aGVtZQogIGdncGxvdDI6OnRoZW1lX2J3KCkKYGBgCgpGb3IgdGhlc2UgcGFydGljdWxhciBnZW5lIHNldHMsIHRoZSBBVUMgdmFsdWVzIGFwcGVhciB0byBiZSBiaW1vZGFsbHkgZGlzdHJpYnV0ZWQsIGFuZCB3ZSBjYW4gZWFzaWx5IGlkZW50aWZ5IGNlbGxzIHdoZXJlIHRoZSBnZW5lcyBhcmUgaGlnaGx5IGV4cHJlc3NlZC4KCkxldCdzIHdyaXRlIHRoaXMgdGFibGUgdG8gdGhlIG91dHB1dCBmaWxlLgoKYGBge3Igc2F2ZV9hdWN9CmF1Y19wbG90dGluZ19kZiB8PiAKICByZWFkcjo6d3JpdGVfdHN2KG91dHB1dF9maWxlKQpgYGAKCiMjIyBVTUFQcwoKIyMjIyBBZGRpbmcgQVVDIHRvIGBjb2xEYXRhYAoKV2UgY2FuIGFsc28gYWRkIHRoZSBBVUMgdmFsdWVzIGJhY2sgaW50byB0aGUgYFNpbmdsZUNlbGxFeHBlcmltZW50YCBmb3IgY29udmVuaWVuY2UsIGUuZy4sIGZvciBwbG90dGluZy4KV2UnbGwgYWRkIGl0IHRvIHRoZSBleGlzdGluZyBgY29sRGF0YWAuCgpGaXJzdCwgbGV0J3MgcmVuYW1lIHRoZSBnZW5lIHNldCBjb2x1bW5zIHRvIHNvbWV0aGluZyBtb3JlIGVhc2lseSB0eXBlZC4KCmBgYHtyIHJlbmFtZV9nZW5lX3NldH0KYXVjX2RmIDwtIGF1Y19kZiB8PgogICMgVXNlIHNob3J0ZXIgbmFtZXMKICBkcGx5cjo6cmVuYW1lKHpoYW5nX2F1YyA9IGV3aW5nX2dlbmVfc2V0X25hbWVzW1siemhhbmciXV0sCiAgICAgICAgICAgICAgICByaWdnaV9hdWMgPSBld2luZ19nZW5lX3NldF9uYW1lc1tbInJpZ2dpIl1dKQoKYGBgCgpBbmQgam9pbiBpdCB0byB0aGUgZXhpc3RpbmcgYGNvbERhdGFgLgoKYGBge3IgY29sZGF0YSwgbGl2ZSA9IFRSVUV9CiMgRXh0cmFjdCB0aGUgZXhpc3RpbmcgY29sRGF0YSwgYW5kIGxlZnQgam9pbiBpdCB3aXRoIHRoZSBBVUMgdmFsdWVzIGJ5IHRoZQojIGJhcmNvZGVzCmNvbGRhdGFfZGYgPC0gY29sRGF0YShzY2UpIHw+CiAgYXMuZGF0YS5mcmFtZSgpIHw+CiAgZHBseXI6OmxlZnRfam9pbigKICAgIGF1Y19kZiwKICAgIGJ5ID0gImJhcmNvZGVzIgogICkKYGBgCgpOb3csIHdlJ3JlIHJlYWR5IHRvIGFkZCBpdCBiYWNrIHRvIHRoZSBvYmplY3QuCgpgYGB7ciBhZGRfYmFja19jb2xEYXRhLCBsaXZlID0gVFJVRX0KIyBXZSBuZWVkIHRvIHNhdmUgdGhpcyBhcyBhIERhdGFGcmFtZQpjb2xEYXRhKHNjZSkgPC0gRGF0YUZyYW1lKAogIGNvbGRhdGFfZGYsCiAgcm93Lm5hbWVzID0gY29sRGF0YShzY2UpJGJhcmNvZGVzCikKYGBgCgojIyMjIFBsb3R0aW5nIFVNQVBzCgpXZSBjYW4gdXNlIHRoZSBgcGxvdFVNQVAoKWAgZnVuY3Rpb24gZnJvbSB0aGUgYHNjYXRlcmAgcGFja2FnZSB0byBwbG90IGEgVU1BUCB3aXRoIHRoZSBwb2ludHMgY29sb3JlZCBieSB0aGUgQVVDIHZhbHVlCgpgYGB7ciBwbG90X3VtYXBfemhhbmd9CnNjYXRlcjo6cGxvdFVNQVAoc2NlLCBjb2xvdXJfYnkgPSAiemhhbmdfYXVjIikgKwogICMgVXNlIHRoZSBnZW5lIHNldCBuYW1lLCByZXBsYWNpbmcgdW5kZXJzY29yZXMgd2l0aCBzcGFjZXMKICBnZ3Bsb3QyOjpnZ3RpdGxlKHN0cmluZ3I6OnN0cl9yZXBsYWNlX2FsbChld2luZ19nZW5lX3NldF9uYW1lc1tbInpoYW5nIl1dLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiXFxfIiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAiKSkKYGBgCgpMZXQncyBjb2xvciB0aGUgcG9pbnRzIGJ5IHRoZSBBVUMgdmFsdWVzIGZvciB0aGUgb3RoZXIgZ2VuZSBzZXQuCgpgYGB7ciBwbG90X3VtYXBfcmlnZ2ksIGxpdmUgPSBUUlVFfQpzY2F0ZXI6OnBsb3RVTUFQKHNjZSwgY29sb3VyX2J5ID0gInJpZ2dpX2F1YyIpICsgCiAgZ2dwbG90Mjo6Z2d0aXRsZShzdHJpbmdyOjpzdHJfcmVwbGFjZV9hbGwoZXdpbmdfZ2VuZV9zZXRfbmFtZXNbWyJyaWdnaSJdXSwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlxcXyIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgIikpCmBgYAoKV2Ugd291bGQgd2FudCB0byBkbyBzb21ldGhpbmcgbW9yZSBmb3JtYWwgdG8gY29uZmlybSwgYnV0IGl0IHNlZW1zIGxpa2UgdGhlIHNhbWUgY2VsbHMgaGF2ZSBoaWdoIEFVQyB2YWx1ZXMgZm9yIGJvdGggZ2VuZSBzZXRzIQoKIyMgU2Vzc2lvbiBJbmZvCgpgYGB7ciBzZXNzaW9uX2luZm99CnNlc3Npb25JbmZvKCkKYGBgCg==
    From 77d8ff9365210c24ad7376e0ccf8aebe1d54e830 Mon Sep 17 00:00:00 2001 From: "Stephanie J. Spielman" Date: Mon, 24 Nov 2025 08:53:02 -0500 Subject: [PATCH 034/148] 2025-dec release --- current-modules.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/current-modules.json b/current-modules.json index bb8d68be..afde6a0a 100644 --- a/current-modules.json +++ b/current-modules.json @@ -1,5 +1,5 @@ { - "release-tag": "2025-dev", + "release-tag": "2025-dec", "modules": ["scRNA-seq-advanced"], "reference-modules": ["scRNA-seq"] } From 35e547bce8e2729a51d19af48c57e2d6ecab3b5e Mon Sep 17 00:00:00 2001 From: sjspielman <4701111+sjspielman@users.noreply.github.com> Date: Mon, 24 Nov 2025 17:33:48 +0000 Subject: [PATCH 035/148] Copy exercises from exercise-notebook-answers --- .../exercise_02-integration.Rmd | 7 +-- .../exercise_04-scrna_pathway.Rmd | 44 +++++++++---------- .../exercise_05-cluster_evaluation.Rmd | 35 ++++++++------- 3 files changed, 46 insertions(+), 40 deletions(-) diff --git a/scRNA-seq-advanced/exercise_02-integration.Rmd b/scRNA-seq-advanced/exercise_02-integration.Rmd index 62c67cfe..b4596300 100644 --- a/scRNA-seq-advanced/exercise_02-integration.Rmd +++ b/scRNA-seq-advanced/exercise_02-integration.Rmd @@ -274,9 +274,10 @@ We will use the default clustering parameters for graph-based clustering to star Remember that the clustering results depend only the expression data that was used to generate the PC matrix – the cell labels are not used in the clustering algorithms. ```{r cluster unintegrated} -merged_sce$cluster_unintegrated <- bluster::clusterRows( - reducedDim(merged_sce, "PCA"), - bluster::NNGraphParam() +merged_sce$cluster_unintegrated <- scran::clusterCells( + merged_sce, + use.dimred = "PCA", + BLUSPARAM = bluster::NNGraphParam() ) ``` diff --git a/scRNA-seq-advanced/exercise_04-scrna_pathway.Rmd b/scRNA-seq-advanced/exercise_04-scrna_pathway.Rmd index d1c6266a..8577bf32 100644 --- a/scRNA-seq-advanced/exercise_04-scrna_pathway.Rmd +++ b/scRNA-seq-advanced/exercise_04-scrna_pathway.Rmd @@ -8,8 +8,8 @@ output: toc_float: true --- -In this notebook, we will use AUCell with a custom gene set of tumor marker genes for Ewing sarcoma, as well as a collection from the Molecular Signatures Database (MSigDB) of your choosing. -Because AUCell will assign cells as expressing (or not expressing) a gene set, it can be used as part of a strategy for cell typing or identifying malignant cells when a high quality marker gene set is available. +In this notebook, we will use `AUCell` with a custom gene set of tumor marker genes for Ewing sarcoma, as well as a collection from the Molecular Signatures Database (MSigDB) of your choosing. +Because `AUCell` will assign cells as expressing (or not expressing) a gene set, it can be used as part of a strategy for cell typing or identifying malignant cells when a high quality marker gene set is available. Once tumor cells are identified using an automatically selected threshold, we can visualize that information or even use it in tandem with AUC values from other gene sets. Our goal in this notebook is to explore gene sets from MSigDB that may have different relative expression (i.e., AUC values) between malignant and non-malignant cells. @@ -19,8 +19,8 @@ In practice, if we were to publish these results, we would want to explicitly te In this notebook, you will: - Part A: Read in and prepare the data -- Part B: Run AUCell with tumor marker genes -- Part C: Run AUCell with an MSigDB collection +- Part B: Run `AUCell` with tumor marker genes +- Part C: Run `AUCell` with an MSigDB collection - Part D: Visualize the results There are multiple Ewing sarcoma samples you can choose for your analysis, available in the following directory: @@ -52,7 +52,7 @@ library(msigdbr) ### Set a seed -Some genes sharing expression values or that are not detected will be randomly ordered in the AUCell rankings, so we need to set a seed using `set.seed()`. +Some genes sharing expression values or that are not detected will be randomly ordered in the `AUCell` rankings, so we need to set a seed using `set.seed()`. ```{r set_seed, solution = TRUE} @@ -62,7 +62,7 @@ Some genes sharing expression values or that are not detected will be randomly o #### Directories -Set up the directories to read in a Ewing sarcoma SingleCellExperiment and output pathway analysis results. +Set up the directories to read in a Ewing sarcoma `SingleCellExperiment` and output pathway analysis results. ```{r set_up_directories, solution = TRUE} # Input data @@ -118,12 +118,12 @@ marker_genes_df You can use the information in the `source` column to review the publication a marker gene's inclusion is supported by. -Now we need to get the gene set ready for use with AUCell. +Now we need to get the gene set ready for use with `AUCell`. You're going to save the gene set to a vector called `ensg_tumor_markers`. Here are some things to keep in mind when preparing the gene set: - You are only interested in the _tumor_ gene set -- The SingleCellExperiment object uses Ensembl gene identifiers +- The `SingleCellExperiment` object uses Ensembl gene identifiers - You'll want to remove any duplicate genes in the gene set ```{r format_marker_genes, solution = TRUE} @@ -131,7 +131,7 @@ Here are some things to keep in mind when preparing the gene set: ``` -Next, convert the vector of Ensembl ids to a `GeneSet` object for use with AUCell: +Next, convert the vector of Ensembl ids to a `GeneSet` object for use with `AUCell`: ```{r GeneSet} ensg_tumor_markers <- GeneSet(ensg_tumor_markers, @@ -142,7 +142,7 @@ ensg_tumor_markers <- GeneSet(ensg_tumor_markers, ### Prepare the single-nuclei data Now that we have our gene set prepared, let's prepare the data. -First, we will read in the SingleCellExperiment from the file we chose earlier. +First, we will read in the `SingleCellExperiment` from the file we chose earlier. ```{r read_in_sce} sce <- readr::read_rds(sce_file) @@ -154,7 +154,7 @@ We will mostly be using the raw counts, so save the counts matrix to a separate ``` -## Part B: Run AUCell with tumor marker genes +## Part B: Run `AUCell` with tumor marker genes Calculate the gene rankings for individual cells. @@ -182,7 +182,7 @@ Save the output to `cell_auc`. ``` Automatically calculate a threshold for the AUC values using `AUCell_exploreThresholds()`. -You'll want to set `assignCells = TRUE`, which tells AUCell to assign tumor cell labels to cells above the automatically chosen threshold. +You'll want to set `assignCells = TRUE`, which tells `AUCell` to assign tumor cell labels to cells above the automatically chosen threshold. Save the output to `auc_assignments`. @@ -192,7 +192,7 @@ Save the output to `auc_assignments`. ### Wrangle data for plotting -We will create a data frame that holds the barcodes, AUC values, and a column called `tumor_cell` that indicates whether or not AUCell classified the cell as a tumor cell using the AUC values for the marker gene set. +We will create a data frame that holds the barcodes, AUC values, and a column called `tumor_cell` that indicates whether or not `AUCell` classified the cell as a tumor cell using the AUC values for the marker gene set. ```{r auc_df} auc_df <- cell_auc@assays@data$AUC |> # start with the internal AUC table @@ -226,11 +226,11 @@ Add a vertical line representing the threshold that was automatically selected a ``` -## Part C: Run AUCell with an MSigDB collection +## Part C: Run `AUCell` with an MSigDB collection -Now, let's run AUCell using a collection from the Molecular Signatures Database (MSigDB). +Now, let's run `AUCell` using a collection from the Molecular Signatures Database (MSigDB). -We can use the results to explore if there are gene sets that have different expression in tumor cells vs. other cells in the sample, using the labels from AUCell. +We can use the results to explore if there are gene sets that have different expression in tumor cells vs. other cells in the sample, using the labels from `AUCell`. Let's look at what collections are available as part of the `msigdbr` package: @@ -243,13 +243,13 @@ It may be helpful to cross-reference this with the MSigDB website: @@ -270,7 +270,7 @@ collection_list <- unique(collection_df$gs_name) |> GeneSetCollection() ``` -AUCell provides a wrapper function that runs the ranking and AUC calculation steps called `AUCell_run()`. +`AUCell` provides a wrapper function that runs the ranking and AUC calculation steps called `AUCell_run()`. Because we're using the same sample as we did with the tumor marker genes, we can use the same AUC max rank value we used earlier (`auc_max_rank`). You may need to change the names of the variables passed to the `exprsMat` and `aucMaxRank` arguments below depending on what you used earlier! @@ -315,11 +315,11 @@ Write this data frame to the output file you saved as a variable earlier. ### Plot UMAPs -We can use the data in `auc_df` to make UMAP visualizations once we add it to the SingleCellExperiment object. +We can use the data in `auc_df` to make UMAP visualizations once we add it to the `SingleCellExperiment` object. #### Add AUC values to `colData` -To prepare for use with `scater::plotUMAP`, let's add the `auc_df` to the `colData` of the SingleCellExperiment. +To prepare for use with `scater::plotUMAP`, let's add the `auc_df` to the `colData` of the `SingleCellExperiment` object. Don't forget to provide the `row.names` argument when converting back to a `DataFrame`. ```{r add_to_col_data, solution = TRUE} @@ -331,7 +331,7 @@ Don't forget to provide the `row.names` argument when converting back to a `Data #### Plot tumor cell assignments (UMAP) -First, plot a UMAP, coloring cells by whether or not they are a tumor cell according to AUCell. +First, plot a UMAP, coloring cells by whether or not they are a tumor cell according to `AUCell`. ```{r plot_tumor_cell, solution = TRUE} diff --git a/scRNA-seq-advanced/exercise_05-cluster_evaluation.Rmd b/scRNA-seq-advanced/exercise_05-cluster_evaluation.Rmd index 44b54e73..ec2a192b 100644 --- a/scRNA-seq-advanced/exercise_05-cluster_evaluation.Rmd +++ b/scRNA-seq-advanced/exercise_05-cluster_evaluation.Rmd @@ -29,6 +29,7 @@ These quantities are explained more in depth when they are introduced, but you c - The `bluster` package vignette on cluster evaluation: - The "Clustering Redux" chapter in _Orchestrating Single Cell Analysis_: +We'll specifically run `bluster` using the [`scran::clusterCells()`](https://rdrr.io/github/MarioniLab/scran/man/clusterCells.html) function. Before we dive in, it's important to bear some language caveats in mind: We sometimes use phrasing like "the best clusters" or "the optimal clusters," but the truth is, it's quite hard (if even possible) to know which clustering assignments are truly _the best._ @@ -149,15 +150,6 @@ We will begin by calculating clusters using different values of the `resolution` Then, we'll compare results to one another with the ultimate goal of identifying a reasonable `resolution` parameter to achieve reliable clusters. To specifically explore the effect of different `resolution` parameters, we won't vary any other parameters; we'll also use 20 nearest neighbors and Jaccard weighting for all clusterings. -To begin, extract the PCA matrix from the SCE using the `reducedDim()` function, and save it to a variable called `pca_matrix`. -You'll need to provide two arguments to this function: The SCE object, and the name of the reduced dimension we'd like to pull out; here, it's `"PCA"`. - -We'll need this matrix to both perform and evaluate clusters. - -```{r extract pca matrix, solution = TRUE} - -``` - We'll define our vector of values to try out for the `resolution` parameter. For the `modularity` objective function, `resolution` values around 1 tend to perform well, so we'll explore a range of values around 1: @@ -166,9 +158,12 @@ res_params <- seq(0.25, 1.5, 0.25) res_params ``` -Now, we're going to use `purrr::map()` to perform clustering for each of these values using `bluster::clusterRows()`. +Now, we're going to use `purrr::map()` to perform clustering for each of these values using `scran::clusterCells()` which uses `bluster` to perform clustering. +The `scran::clusterCells()` function takes an SCE object and a specification of which assay or reduced dimension to use for clustering - here, we want to use the PCA reduced dimension, which is a very standard choice for single-cell clustering. +The other argument that `scran::clusterCells()` takes is `BLUSPARAM`, which will specify the algorithm and any additional algorithm parameters for `bluster` to use. +This argument is made with a special `bluster` function, for example `bluster::KMeansParam()` or `bluster::NNGraphParam()` which respectively specify k-means clustering and graph-based clustering. -The result will be a list of vectors containing cluster assignments for each cell. +When we run `purrr::map()` over our different resolution parameters, we'll end up with a list of vectors containing cluster assignments for each cell. Before we do this, we'll name our `res_params` vector with the `resolution` values themselves. This will ensure the output from `purrr::map()` is also named according to these resolution parameters, which will help us keep track of which clustering is which! @@ -178,7 +173,7 @@ names(res_params) <- res_params ``` Time to cluster! -To make this code a bit easier to follow, we'll define our clustering parameters first using `bluster::NNGraphParam()`, and then we'll call `bluster::clusterRows()`. +To make this code a bit easier to follow, we'll define our clustering parameters first using `bluster::NNGraphParam()` for graph-based clustering, and then we'll call `scran::clusterCells()`. ```{r perform clustering} cluster_list <- res_params |> @@ -200,13 +195,17 @@ cluster_list <- res_params |> ) # Perform clustering - bluster::clusterRows(pca_matrix, cluster_params) + scran::clusterCells( + sce, + use.dimred = "PCA", # specify to use the PCA matrix for clustering + BLUSPARAM = cluster_params + ) } ) ``` How many clusters were created for each `resolution` parameter? -The cluster vector created by `bluster::clusterRows()` is a factor, so we can answer this by finding the length of each clustering's levels using `purrr::map()`. +The cluster vector created by `scran::clusterCells()` is a factor, so we can answer this by finding the length of each clustering's levels using `purrr::map()`. In the chunk below, use `purrr::map()` to get, for each clustering, the `length()` of its `levels()`. @@ -270,6 +269,12 @@ How does one choose among these potential results? In this section, we'll walk through several metrics to evaluate cluster quality and their interpretations. +Part of evaluating these clusters will involve working directly with the PCA matrix we clustered, so we'll go ahead and pull that out into its own variable called `pca_matrix` for convenience: + +```{r extract pca matrix, solution = TRUE} + +``` + ### Silhouette width @@ -391,7 +396,7 @@ This function returns a capital-D `DataFrame` with one row per cell and the foll In the chunk below, use `purrr::map()` to calculate the neighborhood purity on each vector of clusters. Just like we did for calculating silhouette width, you'll want to coerce the `bluster::neighborPurity()` output into a small-d `data.frame` with row names moved into a new column `barcodes`. -_Unlike_ for silhouette width though, the `bluster::neighborhoodPurity()` function does not automatically save the cluster assignments to the output data frame, so you'll also want to add a `dplyr::mutate()` statement to ensure there is a `cluster` column in the output. +_Unlike_ for silhouette width though, the `bluster::neighborPurity()` function does not automatically save the cluster assignments to the output data frame, so you'll also want to add a `dplyr::mutate()` statement to ensure there is a `cluster` column in the output. Finally, after the `purrr:map()` statement, bind (hint!) all rows together, specifying `.id = "resolution"`, to create one data frame with all results. Save this result to `cluster_purity_df`, and print the data frame once you have created it (again, remember that R Markdown will only print 1000 rows, even when there are more!) From 19d3dcee908e78c8c901730add04e56a7aea5fb9 Mon Sep 17 00:00:00 2001 From: "Stephanie J. Spielman" Date: Tue, 25 Nov 2025 09:34:47 -0500 Subject: [PATCH 036/148] december not dec --- current-modules.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/current-modules.json b/current-modules.json index afde6a0a..fe8c34c7 100644 --- a/current-modules.json +++ b/current-modules.json @@ -1,5 +1,5 @@ { - "release-tag": "2025-dec", + "release-tag": "2025-december", "modules": ["scRNA-seq-advanced"], "reference-modules": ["scRNA-seq"] } From 1c3d6184d7511342c4cd47139809c8b357b88bf7 Mon Sep 17 00:00:00 2001 From: "Stephanie J. Spielman" Date: Tue, 25 Nov 2025 10:38:58 -0500 Subject: [PATCH 037/148] update syntax --- .github/workflows/build-docker.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build-docker.yml b/.github/workflows/build-docker.yml index 13cfb828..2b5f01e8 100644 --- a/.github/workflows/build-docker.yml +++ b/.github/workflows/build-docker.yml @@ -36,7 +36,7 @@ jobs: if: startsWith(github.ref, 'refs/tags/') run: | GIT_TAG=${GITHUB_REF#refs/tags/} - MODULES_TAG=$(jq -r '.release-tag' current-modules.json) + MODULES_TAG=$(jq -r '.["release-tag"]' current-modules.json) if [ "$GIT_TAG" != "$MODULES_TAG" ]; then echo "Error: current-modules.json release-tag ($MODULES_TAG) does not match git tag ($GIT_TAG)" echo "Please update release-tag in current-modules.json to match the git tag (and modules, if needed), then update the GitHub release accordingly." From 47834f00950835b8e3359077068471f40a5d40a6 Mon Sep 17 00:00:00 2001 From: Stephanie Spielman Date: Tue, 25 Nov 2025 10:44:01 -0500 Subject: [PATCH 038/148] Update .github/workflows/build-docker.yml Co-authored-by: Joshua Shapiro --- .github/workflows/build-docker.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build-docker.yml b/.github/workflows/build-docker.yml index 2b5f01e8..373f72be 100644 --- a/.github/workflows/build-docker.yml +++ b/.github/workflows/build-docker.yml @@ -36,7 +36,7 @@ jobs: if: startsWith(github.ref, 'refs/tags/') run: | GIT_TAG=${GITHUB_REF#refs/tags/} - MODULES_TAG=$(jq -r '.["release-tag"]' current-modules.json) + MODULES_TAG=$(jq -r '."release-tag"' current-modules.json) if [ "$GIT_TAG" != "$MODULES_TAG" ]; then echo "Error: current-modules.json release-tag ($MODULES_TAG) does not match git tag ($GIT_TAG)" echo "Please update release-tag in current-modules.json to match the git tag (and modules, if needed), then update the GitHub release accordingly." From 7d7374ecf0e8062772a8469cd2c85e61329035b1 Mon Sep 17 00:00:00 2001 From: "Stephanie J. Spielman" Date: Wed, 21 Jan 2026 09:10:26 -0500 Subject: [PATCH 039/148] remove old renv environment --- .Rprofile | 26 - renv.lock | 5624 -------------------------------------------- renv/.gitignore | 8 - renv/activate.R | 1305 ---------- renv/settings.json | 19 - 5 files changed, 6982 deletions(-) delete mode 100644 .Rprofile delete mode 100644 renv.lock delete mode 100644 renv/.gitignore delete mode 100644 renv/activate.R delete mode 100644 renv/settings.json diff --git a/.Rprofile b/.Rprofile deleted file mode 100644 index 5b36bc35..00000000 --- a/.Rprofile +++ /dev/null @@ -1,26 +0,0 @@ -source("renv/activate.R") - -# Set the repos using the renv.lock file -renv_json <- jsonlite::read_json("renv.lock") -renv_r_repos <- renv_json$R$Repositories - -# Extract the names -repo_names <- purrr::flatten_chr( - purrr::map(renv_r_repos, - ~ .x$Name) -) - -# Extract the URLs -repo_urls <- purrr::flatten_chr( - purrr::map(renv_r_repos, - ~ .x$URL) -) - -# Set the repo names -names(repo_urls) <- repo_names - -# Set the options -options(repos = repo_urls) - -# Remove all these objects -rm(renv_json, renv_r_repos, repo_names, repo_urls) diff --git a/renv.lock b/renv.lock deleted file mode 100644 index 752ed02d..00000000 --- a/renv.lock +++ /dev/null @@ -1,5624 +0,0 @@ -{ - "R": { - "Version": "4.4.0", - "Repositories": [ - { - "Name": "BioCsoft", - "URL": "https://bioconductor.org/packages/3.19/bioc" - }, - { - "Name": "BioCann", - "URL": "https://bioconductor.org/packages/3.19/data/annotation" - }, - { - "Name": "BioCexp", - "URL": "https://bioconductor.org/packages/3.19/data/experiment" - }, - { - "Name": "BioCworkflows", - "URL": "https://bioconductor.org/packages/3.19/workflows" - }, - { - "Name": "BioCbooks", - "URL": "https://bioconductor.org/packages/3.19/books" - }, - { - "Name": "CRAN", - "URL": "https://p3m.dev/cran/latest" - } - ] - }, - "Bioconductor": { - "Version": "3.19" - }, - "Packages": { - "ALL": { - "Package": "ALL", - "Version": "1.46.0", - "Source": "Bioconductor", - "Repository": "Bioconductor 3.19", - "Requirements": [ - "Biobase", - "R" - ], - "Hash": "dd00b008c7f784712d11015bbd59bd4c" - }, - "AUCell": { - "Package": "AUCell", - "Version": "1.26.0", - "Source": "Bioconductor", - "Repository": "Bioconductor 3.19", - "Requirements": [ - "BiocGenerics", - "DelayedArray", - "DelayedMatrixStats", - "GSEABase", - "Matrix", - "R.utils", - "SummarizedExperiment", - "data.table", - "grDevices", - "graphics", - "methods", - "mixtools", - "stats", - "utils" - ], - "Hash": "40f8fe9c663d117a1486e7716f148891" - }, - "AnnotationDbi": { - "Package": "AnnotationDbi", - "Version": "1.66.0", - "Source": "Bioconductor", - "Repository": "Bioconductor 3.19", - "Requirements": [ - "Biobase", - "BiocGenerics", - "DBI", - "IRanges", - "KEGGREST", - "R", - "RSQLite", - "S4Vectors", - "methods", - "stats", - "stats4" - ], - "Hash": "b7df9c597fb5533fc8248d73b8c703ac" - }, - "AnnotationFilter": { - "Package": "AnnotationFilter", - "Version": "1.28.0", - "Source": "Bioconductor", - "Repository": "Bioconductor 3.19", - "Requirements": [ - "GenomicRanges", - "R", - "lazyeval", - "methods", - "utils" - ], - "Hash": "24e809470aef6d81b25003d775b2fb56" - }, - "AnnotationHub": { - "Package": "AnnotationHub", - "Version": "3.12.0", - "Source": "Bioconductor", - "Repository": "Bioconductor 3.19", - "Requirements": [ - "AnnotationDbi", - "BiocFileCache", - "BiocGenerics", - "BiocManager", - "BiocVersion", - "RSQLite", - "S4Vectors", - "curl", - "dplyr", - "grDevices", - "httr", - "methods", - "rappdirs", - "utils", - "yaml" - ], - "Hash": "346ca347b61989d1da5f655d7bac6a8c" - }, - "BH": { - "Package": "BH", - "Version": "1.84.0-0", - "Source": "Repository", - "Repository": "CRAN", - "Hash": "a8235afbcd6316e6e91433ea47661013" - }, - "Biobase": { - "Package": "Biobase", - "Version": "2.64.0", - "Source": "Bioconductor", - "Repository": "Bioconductor 3.19", - "Requirements": [ - "BiocGenerics", - "R", - "methods", - "utils" - ], - "Hash": "9bc4cabd3bfda461409172213d932813" - }, - "BiocFileCache": { - "Package": "BiocFileCache", - "Version": "2.12.0", - "Source": "Bioconductor", - "Repository": "Bioconductor 3.19", - "Requirements": [ - "DBI", - "R", - "RSQLite", - "curl", - "dbplyr", - "dplyr", - "filelock", - "httr", - "methods", - "stats", - "utils" - ], - "Hash": "9c3414bcfae204d56080dd0f0a220136" - }, - "BiocGenerics": { - "Package": "BiocGenerics", - "Version": "0.50.0", - "Source": "Bioconductor", - "Repository": "Bioconductor 3.19", - "Requirements": [ - "R", - "graphics", - "methods", - "stats", - "utils" - ], - "Hash": "ef32d07aafdd12f24c5827374ae3590d" - }, - "BiocIO": { - "Package": "BiocIO", - "Version": "1.14.0", - "Source": "Bioconductor", - "Repository": "Bioconductor 3.19", - "Requirements": [ - "BiocGenerics", - "R", - "S4Vectors", - "methods", - "tools" - ], - "Hash": "f97a7ef01d364cf20d1946d43a3d526f" - }, - "BiocManager": { - "Package": "BiocManager", - "Version": "1.30.22", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "utils" - ], - "Hash": "d57e43105a1aa9cb54fdb4629725acb1" - }, - "BiocNeighbors": { - "Package": "BiocNeighbors", - "Version": "1.22.0", - "Source": "Bioconductor", - "Repository": "Bioconductor 3.19", - "Requirements": [ - "BiocParallel", - "Matrix", - "Rcpp", - "RcppHNSW", - "S4Vectors", - "methods", - "stats" - ], - "Hash": "da9f332c88453734623406dcca13ee03" - }, - "BiocParallel": { - "Package": "BiocParallel", - "Version": "1.38.0", - "Source": "Bioconductor", - "Repository": "Bioconductor 3.19", - "Requirements": [ - "BH", - "R", - "codetools", - "cpp11", - "futile.logger", - "methods", - "parallel", - "snow", - "stats", - "utils" - ], - "Hash": "7b6e79f86e3d1c23f62c5e2052e848d4" - }, - "BiocSingular": { - "Package": "BiocSingular", - "Version": "1.20.0", - "Source": "Bioconductor", - "Repository": "Bioconductor 3.19", - "Requirements": [ - "BiocGenerics", - "BiocParallel", - "DelayedArray", - "Matrix", - "Rcpp", - "S4Vectors", - "ScaledMatrix", - "beachmat", - "irlba", - "methods", - "rsvd", - "utils" - ], - "Hash": "9d2e9fbd803f4eddfeb307b1ee376aad" - }, - "BiocVersion": { - "Package": "BiocVersion", - "Version": "3.19.1", - "Source": "Bioconductor", - "Repository": "Bioconductor 3.19", - "Requirements": [ - "R" - ], - "Hash": "b892e27fc9659a4c8f8787d34c37b8b2" - }, - "Biostrings": { - "Package": "Biostrings", - "Version": "2.72.0", - "Source": "Bioconductor", - "Repository": "Bioconductor 3.19", - "Requirements": [ - "BiocGenerics", - "GenomeInfoDb", - "IRanges", - "R", - "S4Vectors", - "XVector", - "crayon", - "grDevices", - "methods", - "stats", - "utils" - ], - "Hash": "48618c7c7b90b503837824ebcfee6363" - }, - "Cairo": { - "Package": "Cairo", - "Version": "1.6-2", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R", - "grDevices", - "graphics" - ], - "Hash": "3918e6b40d27984ca4a99c73b92406c3" - }, - "ComplexHeatmap": { - "Package": "ComplexHeatmap", - "Version": "2.20.0", - "Source": "Bioconductor", - "Repository": "Bioconductor 3.19", - "Requirements": [ - "GetoptLong", - "GlobalOptions", - "IRanges", - "R", - "RColorBrewer", - "circlize", - "clue", - "codetools", - "colorspace", - "digest", - "doParallel", - "foreach", - "grDevices", - "graphics", - "grid", - "matrixStats", - "methods", - "png", - "stats" - ], - "Hash": "0308920b8b9315ccfe69bccb66c15485" - }, - "ConsensusClusterPlus": { - "Package": "ConsensusClusterPlus", - "Version": "1.68.0", - "Source": "Bioconductor", - "Repository": "Bioconductor 3.19", - "Requirements": [ - "ALL", - "Biobase", - "cluster", - "graphics", - "stats", - "utils" - ], - "Hash": "ba88e4eb2ca2df69376294de93bdda2f" - }, - "DBI": { - "Package": "DBI", - "Version": "1.2.2", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R", - "methods" - ], - "Hash": "164809cd72e1d5160b4cb3aa57f510fe" - }, - "DESeq2": { - "Package": "DESeq2", - "Version": "1.44.0", - "Source": "Bioconductor", - "Repository": "Bioconductor 3.19", - "Requirements": [ - "Biobase", - "BiocGenerics", - "BiocParallel", - "GenomicRanges", - "IRanges", - "MatrixGenerics", - "Rcpp", - "RcppArmadillo", - "S4Vectors", - "SummarizedExperiment", - "ggplot2", - "locfit", - "matrixStats", - "methods", - "stats4" - ], - "Hash": "a90e0e67215ba95ccb29e93b169caaa4" - }, - "DOSE": { - "Package": "DOSE", - "Version": "3.30.0", - "Source": "Bioconductor", - "Repository": "Bioconductor 3.19", - "Requirements": [ - "AnnotationDbi", - "BiocParallel", - "GOSemSim", - "HDO.db", - "R", - "fgsea", - "ggplot2", - "methods", - "qvalue", - "reshape2", - "stats", - "utils", - "yulab.utils" - ], - "Hash": "48770d6c09181b2e1353650830a2b375" - }, - "DT": { - "Package": "DT", - "Version": "0.33", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "crosstalk", - "htmltools", - "htmlwidgets", - "httpuv", - "jquerylib", - "jsonlite", - "magrittr", - "promises" - ], - "Hash": "64ff3427f559ce3f2597a4fe13255cb6" - }, - "DelayedArray": { - "Package": "DelayedArray", - "Version": "0.30.0", - "Source": "Bioconductor", - "Repository": "Bioconductor 3.19", - "Requirements": [ - "BiocGenerics", - "IRanges", - "Matrix", - "MatrixGenerics", - "R", - "S4Arrays", - "S4Vectors", - "SparseArray", - "methods", - "stats", - "stats4" - ], - "Hash": "9141899d1bb4ce53e036810eb217721f" - }, - "DelayedMatrixStats": { - "Package": "DelayedMatrixStats", - "Version": "1.26.0", - "Source": "Bioconductor", - "Repository": "Bioconductor 3.19", - "Requirements": [ - "DelayedArray", - "IRanges", - "Matrix", - "MatrixGenerics", - "S4Vectors", - "methods", - "sparseMatrixStats" - ], - "Hash": "5d9536664ccddb0eaa68a90afe4ee76e" - }, - "DropletUtils": { - "Package": "DropletUtils", - "Version": "1.24.0", - "Source": "Bioconductor", - "Repository": "Bioconductor 3.19", - "Requirements": [ - "BH", - "BiocGenerics", - "BiocParallel", - "DelayedArray", - "DelayedMatrixStats", - "GenomicRanges", - "HDF5Array", - "IRanges", - "Matrix", - "R.utils", - "Rcpp", - "Rhdf5lib", - "S4Vectors", - "SingleCellExperiment", - "SummarizedExperiment", - "beachmat", - "dqrng", - "edgeR", - "methods", - "rhdf5", - "scuttle", - "stats", - "utils" - ], - "Hash": "77f762ad74d48a0ef578fc81deded039" - }, - "EnhancedVolcano": { - "Package": "EnhancedVolcano", - "Version": "1.22.0", - "Source": "Bioconductor", - "Repository": "Bioconductor 3.19", - "Requirements": [ - "ggplot2", - "ggrepel", - "methods" - ], - "Hash": "5a83fa8aee8e8ef141122053cd398f53" - }, - "ExperimentHub": { - "Package": "ExperimentHub", - "Version": "2.12.0", - "Source": "Bioconductor", - "Repository": "Bioconductor 3.19", - "Requirements": [ - "AnnotationHub", - "BiocFileCache", - "BiocGenerics", - "BiocManager", - "S4Vectors", - "methods", - "rappdirs", - "utils" - ], - "Hash": "988693270e5886a33c536dda6b3c9f98" - }, - "FNN": { - "Package": "FNN", - "Version": "1.1.4", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R" - ], - "Hash": "eaabdc7938aa3632a28273f53a0d226d" - }, - "GEOquery": { - "Package": "GEOquery", - "Version": "2.72.0", - "Source": "Bioconductor", - "Repository": "Bioconductor 3.19", - "Requirements": [ - "Biobase", - "R.utils", - "curl", - "data.table", - "dplyr", - "limma", - "magrittr", - "methods", - "readr", - "tidyr", - "xml2" - ], - "Hash": "b27b8e249f59da9349a482311c603a58" - }, - "GGally": { - "Package": "GGally", - "Version": "2.2.1", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R", - "RColorBrewer", - "dplyr", - "ggplot2", - "ggstats", - "grDevices", - "grid", - "gtable", - "lifecycle", - "magrittr", - "plyr", - "progress", - "rlang", - "scales", - "tidyr", - "utils" - ], - "Hash": "b11ac45c916608b7d1374ff87da053d5" - }, - "GO.db": { - "Package": "GO.db", - "Version": "3.19.1", - "Source": "Bioconductor", - "Requirements": [ - "AnnotationDbi", - "R", - "methods" - ], - "Hash": "46bfc38370acea3503c223347915e43b" - }, - "GOSemSim": { - "Package": "GOSemSim", - "Version": "2.30.0", - "Source": "Bioconductor", - "Repository": "Bioconductor 3.19", - "Requirements": [ - "AnnotationDbi", - "GO.db", - "R", - "Rcpp", - "methods", - "rlang", - "stats", - "utils", - "yulab.utils" - ], - "Hash": "71084bb847242267f84259405c0094b0" - }, - "GSEABase": { - "Package": "GSEABase", - "Version": "1.66.0", - "Source": "Bioconductor", - "Repository": "Bioconductor 3.19", - "Requirements": [ - "AnnotationDbi", - "Biobase", - "BiocGenerics", - "R", - "XML", - "annotate", - "graph", - "methods" - ], - "Hash": "b55026a2047cdc8fbadac8670eb6fd8b" - }, - "GSVA": { - "Package": "GSVA", - "Version": "1.52.0", - "Source": "Bioconductor", - "Repository": "Bioconductor 3.19", - "Requirements": [ - "Biobase", - "BiocParallel", - "BiocSingular", - "DelayedArray", - "DelayedMatrixStats", - "GSEABase", - "HDF5Array", - "IRanges", - "Matrix", - "R", - "S4Vectors", - "SingleCellExperiment", - "SpatialExperiment", - "SummarizedExperiment", - "graphics", - "methods", - "parallel", - "sparseMatrixStats", - "stats", - "utils" - ], - "Hash": "c6d010cbdc01797f5e9249843b7ebff4" - }, - "GenomeInfoDb": { - "Package": "GenomeInfoDb", - "Version": "1.40.0", - "Source": "Bioconductor", - "Repository": "Bioconductor 3.19", - "Requirements": [ - "BiocGenerics", - "GenomeInfoDbData", - "IRanges", - "R", - "S4Vectors", - "UCSC.utils", - "methods", - "stats", - "stats4", - "utils" - ], - "Hash": "614124bc9fb80d222cfa0d2e3e76c339" - }, - "GenomeInfoDbData": { - "Package": "GenomeInfoDbData", - "Version": "1.2.12", - "Source": "Bioconductor", - "Requirements": [ - "R" - ], - "Hash": "c3c792a7b7f2677be56e8632c5b7543d" - }, - "GenomicAlignments": { - "Package": "GenomicAlignments", - "Version": "1.40.0", - "Source": "Bioconductor", - "Repository": "Bioconductor 3.19", - "Requirements": [ - "BiocGenerics", - "BiocParallel", - "Biostrings", - "GenomeInfoDb", - "GenomicRanges", - "IRanges", - "R", - "Rsamtools", - "S4Vectors", - "SummarizedExperiment", - "methods", - "stats", - "utils" - ], - "Hash": "e539709764587c581b31e446dc84d7b8" - }, - "GenomicFeatures": { - "Package": "GenomicFeatures", - "Version": "1.56.0", - "Source": "Bioconductor", - "Repository": "Bioconductor 3.19", - "Requirements": [ - "AnnotationDbi", - "BiocGenerics", - "Biostrings", - "DBI", - "GenomeInfoDb", - "GenomicRanges", - "IRanges", - "R", - "S4Vectors", - "XVector", - "methods", - "rtracklayer", - "stats", - "utils" - ], - "Hash": "0d19619d13b06b9dea85993ce7f09c52" - }, - "GenomicRanges": { - "Package": "GenomicRanges", - "Version": "1.56.0", - "Source": "Bioconductor", - "Repository": "Bioconductor 3.19", - "Requirements": [ - "BiocGenerics", - "GenomeInfoDb", - "IRanges", - "R", - "S4Vectors", - "XVector", - "methods", - "stats", - "stats4", - "utils" - ], - "Hash": "0fab423e3f49e207681eb404d9182a1e" - }, - "GetoptLong": { - "Package": "GetoptLong", - "Version": "1.0.5", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "GlobalOptions", - "R", - "crayon", - "methods", - "rjson" - ], - "Hash": "61fac01c73abf03ac72e88dc3952c1e3" - }, - "GlobalOptions": { - "Package": "GlobalOptions", - "Version": "0.1.2", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R", - "methods", - "utils" - ], - "Hash": "c3f7b221e60c28f5f3533d74c6fef024" - }, - "HDF5Array": { - "Package": "HDF5Array", - "Version": "1.32.0", - "Source": "Bioconductor", - "Repository": "Bioconductor 3.19", - "Requirements": [ - "BiocGenerics", - "DelayedArray", - "IRanges", - "Matrix", - "R", - "Rhdf5lib", - "S4Arrays", - "S4Vectors", - "methods", - "rhdf5", - "rhdf5filters", - "stats", - "tools", - "utils" - ], - "Hash": "b10ddb24baf506cf7b4bc868ae65b984" - }, - "HDO.db": { - "Package": "HDO.db", - "Version": "0.99.1", - "Source": "Bioconductor", - "Requirements": [ - "AnnotationDbi", - "R", - "methods", - "utils" - ], - "Hash": "be08478e9424bbb54a3890d08e01192b" - }, - "IRanges": { - "Package": "IRanges", - "Version": "2.38.0", - "Source": "Bioconductor", - "Repository": "Bioconductor 3.19", - "Requirements": [ - "BiocGenerics", - "R", - "S4Vectors", - "methods", - "stats", - "stats4", - "utils" - ], - "Hash": "836770692f7c8401090519228b93af32" - }, - "KEGGREST": { - "Package": "KEGGREST", - "Version": "1.44.0", - "Source": "Bioconductor", - "Repository": "Bioconductor 3.19", - "Requirements": [ - "Biostrings", - "R", - "httr", - "methods", - "png" - ], - "Hash": "05ef9fd9aa613310e060ddd93a0c8571" - }, - "KernSmooth": { - "Package": "KernSmooth", - "Version": "2.23-22", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R", - "stats" - ], - "Hash": "2fecebc3047322fa5930f74fae5de70f" - }, - "LoomExperiment": { - "Package": "LoomExperiment", - "Version": "1.22.0", - "Source": "Bioconductor", - "Repository": "Bioconductor 3.19", - "Requirements": [ - "BiocIO", - "DelayedArray", - "GenomicRanges", - "HDF5Array", - "Matrix", - "R", - "S4Vectors", - "SingleCellExperiment", - "SummarizedExperiment", - "methods", - "rhdf5", - "stats", - "stringr", - "utils" - ], - "Hash": "69afb3fc64fcd99784133bc69dfe4f5d" - }, - "MASS": { - "Package": "MASS", - "Version": "7.3-60.2", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R", - "grDevices", - "graphics", - "methods", - "stats", - "utils" - ], - "Hash": "2f342c46163b0b54d7b64d1f798e2c78" - }, - "Matrix": { - "Package": "Matrix", - "Version": "1.7-0", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R", - "grDevices", - "graphics", - "grid", - "lattice", - "methods", - "stats", - "utils" - ], - "Hash": "1920b2f11133b12350024297d8a4ff4a" - }, - "MatrixGenerics": { - "Package": "MatrixGenerics", - "Version": "1.16.0", - "Source": "Bioconductor", - "Repository": "Bioconductor 3.19", - "Requirements": [ - "matrixStats", - "methods" - ], - "Hash": "152dbbcde6a9a7c7f3beef79b68cd76a" - }, - "PLIER": { - "Package": "PLIER", - "Version": "0.99.0", - "Source": "GitHub", - "RemoteType": "github", - "RemoteHost": "api.github.com", - "RemoteUsername": "wgmao", - "RemoteRepo": "PLIER", - "RemoteRef": "v0.1.6", - "RemoteSha": "08ed6b54e4efe5249107cb335cd8e169657cbc44", - "Requirements": [ - "RColorBrewer", - "glmnet", - "gplots", - "knitr", - "pheatmap", - "qvalue", - "rsvd" - ], - "Hash": "c239b106e70c572d14ba7366e646b29d" - }, - "ProtGenerics": { - "Package": "ProtGenerics", - "Version": "1.36.0", - "Source": "Bioconductor", - "Repository": "Bioconductor 3.19", - "Requirements": [ - "methods" - ], - "Hash": "a3737c10efc865abfa9d204ca8735b74" - }, - "R.methodsS3": { - "Package": "R.methodsS3", - "Version": "1.8.2", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R", - "utils" - ], - "Hash": "278c286fd6e9e75d0c2e8f731ea445c8" - }, - "R.oo": { - "Package": "R.oo", - "Version": "1.26.0", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R", - "R.methodsS3", - "methods", - "utils" - ], - "Hash": "4fed809e53ddb5407b3da3d0f572e591" - }, - "R.utils": { - "Package": "R.utils", - "Version": "2.12.3", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R", - "R.methodsS3", - "R.oo", - "methods", - "tools", - "utils" - ], - "Hash": "3dc2829b790254bfba21e60965787651" - }, - "R6": { - "Package": "R6", - "Version": "2.5.1", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R" - ], - "Hash": "470851b6d5d0ac559e9d01bb352b4021" - }, - "RColorBrewer": { - "Package": "RColorBrewer", - "Version": "1.1-3", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R" - ], - "Hash": "45f0398006e83a5b10b72a90663d8d8c" - }, - "RCurl": { - "Package": "RCurl", - "Version": "1.98-1.14", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R", - "bitops", - "methods" - ], - "Hash": "47f648d288079d0c696804ad4e55197e" - }, - "RSQLite": { - "Package": "RSQLite", - "Version": "2.3.6", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "DBI", - "R", - "bit64", - "blob", - "cpp11", - "memoise", - "methods", - "pkgconfig", - "plogr", - "rlang" - ], - "Hash": "ae4a925e0f6bb1b7e5fa96b739c5221a" - }, - "RSpectra": { - "Package": "RSpectra", - "Version": "0.16-1", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "Matrix", - "R", - "Rcpp", - "RcppEigen" - ], - "Hash": "6b5ab997fd5ff6d46a5f1d9f8b76961c" - }, - "Rcpp": { - "Package": "Rcpp", - "Version": "1.0.12", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "methods", - "utils" - ], - "Hash": "5ea2700d21e038ace58269ecdbeb9ec0" - }, - "RcppAnnoy": { - "Package": "RcppAnnoy", - "Version": "0.0.22", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R", - "Rcpp", - "methods" - ], - "Hash": "f6baa1e06fb6c3724f601a764266cb0d" - }, - "RcppArmadillo": { - "Package": "RcppArmadillo", - "Version": "0.12.8.2.1", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R", - "Rcpp", - "methods", - "stats", - "utils" - ], - "Hash": "d5448fb24fb114c4da1275a37a571f37" - }, - "RcppEigen": { - "Package": "RcppEigen", - "Version": "0.3.4.0.0", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R", - "Rcpp", - "stats", - "utils" - ], - "Hash": "df49e3306f232ec28f1604e36a202847" - }, - "RcppHNSW": { - "Package": "RcppHNSW", - "Version": "0.6.0", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "Rcpp", - "methods" - ], - "Hash": "1f2dc32c27746a35196aaf95adb357be" - }, - "RcppML": { - "Package": "RcppML", - "Version": "0.3.7", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "Matrix", - "Rcpp", - "RcppEigen", - "methods", - "stats" - ], - "Hash": "225157373f361daf85198a8d1ddaa733" - }, - "RcppNumerical": { - "Package": "RcppNumerical", - "Version": "0.6-0", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "Rcpp", - "RcppEigen" - ], - "Hash": "a008f094e60e88cef2472ef0e057f90e" - }, - "RcppProgress": { - "Package": "RcppProgress", - "Version": "0.4.2", - "Source": "Repository", - "Repository": "CRAN", - "Hash": "1c0aa18b97e6aaa17f93b8b866c0ace5" - }, - "RcppTOML": { - "Package": "RcppTOML", - "Version": "0.2.2", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R", - "Rcpp" - ], - "Hash": "c232938949fcd8126034419cc529333a" - }, - "ResidualMatrix": { - "Package": "ResidualMatrix", - "Version": "1.14.0", - "Source": "Bioconductor", - "Repository": "Bioconductor 3.19", - "Requirements": [ - "DelayedArray", - "Matrix", - "S4Vectors", - "methods" - ], - "Hash": "26b5d104b2d27d7aa3725c4e3aa1b3b9" - }, - "Rhdf5lib": { - "Package": "Rhdf5lib", - "Version": "1.26.0", - "Source": "Bioconductor", - "Repository": "Bioconductor 3.19", - "Requirements": [ - "R" - ], - "Hash": "c92ba8b9a2c5c9ff600a1062a3b7b727" - }, - "RhpcBLASctl": { - "Package": "RhpcBLASctl", - "Version": "0.23-42", - "Source": "Repository", - "Repository": "CRAN", - "Hash": "c966ea2957ff75e77afa5c908dfc89e1" - }, - "Rhtslib": { - "Package": "Rhtslib", - "Version": "3.0.0", - "Source": "Bioconductor", - "Repository": "Bioconductor 3.19", - "Requirements": [ - "tools", - "zlibbioc" - ], - "Hash": "5d6514cd44a0106581e3310f3972a82e" - }, - "Rsamtools": { - "Package": "Rsamtools", - "Version": "2.20.0", - "Source": "Bioconductor", - "Repository": "Bioconductor 3.19", - "Requirements": [ - "BiocGenerics", - "BiocParallel", - "Biostrings", - "GenomeInfoDb", - "GenomicRanges", - "IRanges", - "R", - "Rhtslib", - "S4Vectors", - "XVector", - "bitops", - "methods", - "stats", - "utils", - "zlibbioc" - ], - "Hash": "9762f24dcbdbd1626173c516bb64792c" - }, - "Rtsne": { - "Package": "Rtsne", - "Version": "0.17", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "Rcpp", - "stats" - ], - "Hash": "f81f7764a3c3e310b1d40e1a8acee19e" - }, - "S4Arrays": { - "Package": "S4Arrays", - "Version": "1.4.0", - "Source": "Bioconductor", - "Repository": "Bioconductor 3.19", - "Requirements": [ - "BiocGenerics", - "IRanges", - "Matrix", - "R", - "S4Vectors", - "abind", - "crayon", - "methods", - "stats" - ], - "Hash": "665d1f150ce8a6e7614375eafdbad645" - }, - "S4Vectors": { - "Package": "S4Vectors", - "Version": "0.42.0", - "Source": "Bioconductor", - "Repository": "Bioconductor 3.19", - "Requirements": [ - "BiocGenerics", - "R", - "methods", - "stats", - "stats4", - "utils" - ], - "Hash": "245ac721ca6088200392ea5251db9e3c" - }, - "SQUAREM": { - "Package": "SQUAREM", - "Version": "2021.1", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R" - ], - "Hash": "0cf10dab0d023d5b46a5a14387556891" - }, - "ScaledMatrix": { - "Package": "ScaledMatrix", - "Version": "1.12.0", - "Source": "Bioconductor", - "Repository": "Bioconductor 3.19", - "Requirements": [ - "DelayedArray", - "Matrix", - "S4Vectors", - "methods" - ], - "Hash": "bac1c808a92d9c3f45d05e7a8c1b74f0" - }, - "SingleCellExperiment": { - "Package": "SingleCellExperiment", - "Version": "1.26.0", - "Source": "Bioconductor", - "Repository": "Bioconductor 3.19", - "Requirements": [ - "BiocGenerics", - "DelayedArray", - "GenomicRanges", - "S4Vectors", - "SummarizedExperiment", - "methods", - "stats", - "utils" - ], - "Hash": "4476ad434a5e7887884521417cab3764" - }, - "SingleR": { - "Package": "SingleR", - "Version": "2.6.0", - "Source": "Bioconductor", - "Repository": "Bioconductor 3.19", - "Requirements": [ - "BiocNeighbors", - "BiocParallel", - "BiocSingular", - "DelayedArray", - "DelayedMatrixStats", - "Matrix", - "Rcpp", - "S4Vectors", - "SummarizedExperiment", - "beachmat", - "methods", - "parallel", - "stats", - "utils" - ], - "Hash": "754516444a16b2616e35e9c8767d1110" - }, - "SparseArray": { - "Package": "SparseArray", - "Version": "1.4.0", - "Source": "Bioconductor", - "Repository": "Bioconductor 3.19", - "Requirements": [ - "BiocGenerics", - "IRanges", - "Matrix", - "MatrixGenerics", - "R", - "S4Arrays", - "S4Vectors", - "XVector", - "matrixStats", - "methods", - "stats" - ], - "Hash": "84697af365cd2a6367fa5d2c1086298c" - }, - "SpatialExperiment": { - "Package": "SpatialExperiment", - "Version": "1.14.0", - "Source": "Bioconductor", - "Repository": "Bioconductor 3.19", - "Requirements": [ - "BiocFileCache", - "BiocGenerics", - "S4Vectors", - "SingleCellExperiment", - "SummarizedExperiment", - "grDevices", - "magick", - "methods", - "rjson", - "utils" - ], - "Hash": "f27e097dbca623953cff5694733e2c39" - }, - "SummarizedExperiment": { - "Package": "SummarizedExperiment", - "Version": "1.34.0", - "Source": "Bioconductor", - "Repository": "Bioconductor 3.19", - "Requirements": [ - "Biobase", - "BiocGenerics", - "DelayedArray", - "GenomeInfoDb", - "GenomicRanges", - "IRanges", - "Matrix", - "MatrixGenerics", - "R", - "S4Arrays", - "S4Vectors", - "methods", - "stats", - "tools", - "utils" - ], - "Hash": "2f6c8cc972ed6aee07c96e3dff729d15" - }, - "UCSC.utils": { - "Package": "UCSC.utils", - "Version": "1.0.0", - "Source": "Bioconductor", - "Repository": "Bioconductor 3.19", - "Requirements": [ - "S4Vectors", - "httr", - "jsonlite", - "methods", - "stats" - ], - "Hash": "83d45b690bffd09d1980c224ef329f5b" - }, - "V8": { - "Package": "V8", - "Version": "4.4.2", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "Rcpp", - "curl", - "jsonlite", - "utils" - ], - "Hash": "ca98390ad1cef2a5a609597b49d3d042" - }, - "XML": { - "Package": "XML", - "Version": "3.99-0.16.1", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R", - "methods", - "utils" - ], - "Hash": "da3098169c887914551b607c66fe2a28" - }, - "XVector": { - "Package": "XVector", - "Version": "0.44.0", - "Source": "Bioconductor", - "Repository": "Bioconductor 3.19", - "Requirements": [ - "BiocGenerics", - "IRanges", - "R", - "S4Vectors", - "methods", - "tools", - "utils", - "zlibbioc" - ], - "Hash": "4245b9938ac74c0dbddbebbec6036ab4" - }, - "abind": { - "Package": "abind", - "Version": "1.4-5", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R", - "methods", - "utils" - ], - "Hash": "4f57884290cc75ab22f4af9e9d4ca862" - }, - "affy": { - "Package": "affy", - "Version": "1.82.0", - "Source": "Bioconductor", - "Repository": "Bioconductor 3.19", - "Requirements": [ - "Biobase", - "BiocGenerics", - "BiocManager", - "R", - "affyio", - "grDevices", - "graphics", - "methods", - "preprocessCore", - "stats", - "utils", - "zlibbioc" - ], - "Hash": "de30a31c7d837db23467d5cbfcf88de0" - }, - "affyio": { - "Package": "affyio", - "Version": "1.74.0", - "Source": "Bioconductor", - "Repository": "Bioconductor 3.19", - "Requirements": [ - "R", - "methods", - "zlibbioc" - ], - "Hash": "88e77a7f8571a173db7d4f6d9bf46a64" - }, - "alabaster.base": { - "Package": "alabaster.base", - "Version": "1.4.0", - "Source": "Bioconductor", - "Repository": "Bioconductor 3.19", - "Requirements": [ - "Rcpp", - "Rhdf5lib", - "S4Vectors", - "alabaster.schemas", - "jsonlite", - "jsonvalidate", - "methods", - "rhdf5", - "utils" - ], - "Hash": "dff0dcd23d2ca7ce1d90e513cb6a6c63" - }, - "alabaster.matrix": { - "Package": "alabaster.matrix", - "Version": "1.4.0", - "Source": "Bioconductor", - "Repository": "Bioconductor 3.19", - "Requirements": [ - "BiocGenerics", - "DelayedArray", - "HDF5Array", - "Matrix", - "Rcpp", - "S4Arrays", - "S4Vectors", - "SparseArray", - "alabaster.base", - "methods", - "rhdf5" - ], - "Hash": "22b09ff731438f649f7a6bfe25dccde1" - }, - "alabaster.ranges": { - "Package": "alabaster.ranges", - "Version": "1.4.0", - "Source": "Bioconductor", - "Repository": "Bioconductor 3.19", - "Requirements": [ - "BiocGenerics", - "GenomeInfoDb", - "GenomicRanges", - "IRanges", - "S4Vectors", - "alabaster.base", - "methods", - "rhdf5" - ], - "Hash": "74b3fe9e2e18d0f10e25af0278f5452a" - }, - "alabaster.sce": { - "Package": "alabaster.sce", - "Version": "1.4.0", - "Source": "Bioconductor", - "Repository": "Bioconductor 3.19", - "Requirements": [ - "SingleCellExperiment", - "alabaster.base", - "alabaster.se", - "jsonlite", - "methods" - ], - "Hash": "fa41c555dd420c8f19cfddeb74da75b3" - }, - "alabaster.schemas": { - "Package": "alabaster.schemas", - "Version": "1.4.0", - "Source": "Bioconductor", - "Repository": "Bioconductor 3.19", - "Hash": "e58b4124478c9f912c7c4a21d9adca6c" - }, - "alabaster.se": { - "Package": "alabaster.se", - "Version": "1.4.0", - "Source": "Bioconductor", - "Repository": "Bioconductor 3.19", - "Requirements": [ - "BiocGenerics", - "GenomicRanges", - "IRanges", - "S4Vectors", - "SummarizedExperiment", - "alabaster.base", - "alabaster.matrix", - "alabaster.ranges", - "jsonlite", - "methods" - ], - "Hash": "507cafb86c69a5f04a5ad0eb7f05fcf1" - }, - "alevinQC": { - "Package": "alevinQC", - "Version": "1.20.0", - "Source": "Bioconductor", - "Repository": "Bioconductor 3.19", - "Requirements": [ - "DT", - "GGally", - "R", - "Rcpp", - "cowplot", - "dplyr", - "ggplot2", - "methods", - "rjson", - "rlang", - "rmarkdown", - "shiny", - "shinydashboard", - "stats", - "tools", - "tximport", - "utils" - ], - "Hash": "6eeae7ae41bf79ffb8137fdd0360b9cf" - }, - "annotate": { - "Package": "annotate", - "Version": "1.82.0", - "Source": "Bioconductor", - "Repository": "Bioconductor 3.19", - "Requirements": [ - "AnnotationDbi", - "Biobase", - "BiocGenerics", - "DBI", - "R", - "XML", - "graphics", - "httr", - "methods", - "stats", - "utils", - "xtable" - ], - "Hash": "659c0a3bfad51dc798e4b4eb0f2cdedc" - }, - "ape": { - "Package": "ape", - "Version": "5.8", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R", - "Rcpp", - "digest", - "graphics", - "lattice", - "methods", - "nlme", - "parallel", - "stats", - "utils" - ], - "Hash": "16b5ff4dff0ead9ea955f62f794b1535" - }, - "apeglm": { - "Package": "apeglm", - "Version": "1.26.0", - "Source": "Bioconductor", - "Repository": "Bioconductor 3.19", - "Requirements": [ - "GenomicRanges", - "Rcpp", - "RcppEigen", - "RcppNumerical", - "SummarizedExperiment", - "emdbook", - "methods", - "stats", - "utils" - ], - "Hash": "db0445903cb0274f9b99abc410768df1" - }, - "aplot": { - "Package": "aplot", - "Version": "0.2.2", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R", - "ggfun", - "ggplot2", - "ggplotify", - "magrittr", - "methods", - "patchwork", - "utils" - ], - "Hash": "869a35e6d38fe9936eb578e09091842b" - }, - "ashr": { - "Package": "ashr", - "Version": "2.2-63", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "Matrix", - "R", - "Rcpp", - "SQUAREM", - "etrunct", - "graphics", - "invgamma", - "mixsqp", - "stats", - "truncnorm" - ], - "Hash": "d5b252e570ccffbc8fec77827c585635" - }, - "askpass": { - "Package": "askpass", - "Version": "1.2.0", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "sys" - ], - "Hash": "cad6cf7f1d5f6e906700b9d3e718c796" - }, - "babelgene": { - "Package": "babelgene", - "Version": "22.9", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R", - "dplyr", - "methods", - "rlang" - ], - "Hash": "8288e81d0c2c3272603f6ef394ffa6fd" - }, - "backports": { - "Package": "backports", - "Version": "1.4.1", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R" - ], - "Hash": "c39fbec8a30d23e721980b8afb31984c" - }, - "base64enc": { - "Package": "base64enc", - "Version": "0.1-3", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R" - ], - "Hash": "543776ae6848fde2f48ff3816d0628bc" - }, - "batchelor": { - "Package": "batchelor", - "Version": "1.20.0", - "Source": "Bioconductor", - "Repository": "Bioconductor 3.19", - "Requirements": [ - "BiocGenerics", - "BiocNeighbors", - "BiocParallel", - "BiocSingular", - "DelayedArray", - "DelayedMatrixStats", - "Matrix", - "Rcpp", - "ResidualMatrix", - "S4Vectors", - "ScaledMatrix", - "SingleCellExperiment", - "SummarizedExperiment", - "beachmat", - "igraph", - "methods", - "scuttle", - "stats", - "utils" - ], - "Hash": "ec5dcf85cdf644b078d02deaf27a3bfd" - }, - "bbmle": { - "Package": "bbmle", - "Version": "1.0.25.1", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "MASS", - "Matrix", - "R", - "bdsmatrix", - "lattice", - "methods", - "mvtnorm", - "numDeriv", - "stats", - "stats4" - ], - "Hash": "f32b6a1dfc5c80504326aa3474b10fe6" - }, - "bdsmatrix": { - "Package": "bdsmatrix", - "Version": "1.3-7", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R", - "methods" - ], - "Hash": "d36e416e5a8f91cf90b5edeb3306703a" - }, - "beachmat": { - "Package": "beachmat", - "Version": "2.20.0", - "Source": "Bioconductor", - "Repository": "Bioconductor 3.19", - "Requirements": [ - "BiocGenerics", - "DelayedArray", - "Matrix", - "Rcpp", - "SparseArray", - "methods" - ], - "Hash": "10e94b1bce9070632a40c6b873f8b2d4" - }, - "beeswarm": { - "Package": "beeswarm", - "Version": "0.4.0", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "grDevices", - "graphics", - "stats", - "utils" - ], - "Hash": "0f4e9d8caa6feaa7e409ae6c30f2ca66" - }, - "biomaRt": { - "Package": "biomaRt", - "Version": "2.60.0", - "Source": "Bioconductor", - "Repository": "Bioconductor 3.19", - "Requirements": [ - "AnnotationDbi", - "BiocFileCache", - "digest", - "httr2", - "methods", - "progress", - "rappdirs", - "stringr", - "utils", - "xml2" - ], - "Hash": "8bce67ed479b1d54e1627598edd9db30" - }, - "bit": { - "Package": "bit", - "Version": "4.0.5", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R" - ], - "Hash": "d242abec29412ce988848d0294b208fd" - }, - "bit64": { - "Package": "bit64", - "Version": "4.0.5", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R", - "bit", - "methods", - "stats", - "utils" - ], - "Hash": "9fe98599ca456d6552421db0d6772d8f" - }, - "bitops": { - "Package": "bitops", - "Version": "1.0-7", - "Source": "Repository", - "Repository": "CRAN", - "Hash": "b7d8d8ee39869c18d8846a184dd8a1af" - }, - "blob": { - "Package": "blob", - "Version": "1.2.4", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "methods", - "rlang", - "vctrs" - ], - "Hash": "40415719b5a479b87949f3aa0aee737c" - }, - "bluster": { - "Package": "bluster", - "Version": "1.14.0", - "Source": "Bioconductor", - "Repository": "Bioconductor 3.19", - "Requirements": [ - "BiocNeighbors", - "BiocParallel", - "Matrix", - "Rcpp", - "S4Vectors", - "cluster", - "igraph", - "methods", - "stats", - "utils" - ], - "Hash": "ed9597168d850071aa9abbbef7be7204" - }, - "broom": { - "Package": "broom", - "Version": "1.0.5", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R", - "backports", - "dplyr", - "ellipsis", - "generics", - "glue", - "lifecycle", - "purrr", - "rlang", - "stringr", - "tibble", - "tidyr" - ], - "Hash": "fd25391c3c4f6ecf0fa95f1e6d15378c" - }, - "broom.helpers": { - "Package": "broom.helpers", - "Version": "1.15.0", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R", - "broom", - "cli", - "dplyr", - "labelled", - "lifecycle", - "purrr", - "rlang", - "stats", - "stringr", - "tibble", - "tidyr" - ], - "Hash": "768cae43c3da698d6b11763777301e43" - }, - "bslib": { - "Package": "bslib", - "Version": "0.7.0", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R", - "base64enc", - "cachem", - "fastmap", - "grDevices", - "htmltools", - "jquerylib", - "jsonlite", - "lifecycle", - "memoise", - "mime", - "rlang", - "sass" - ], - "Hash": "8644cc53f43828f19133548195d7e59e" - }, - "caTools": { - "Package": "caTools", - "Version": "1.18.2", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R", - "bitops" - ], - "Hash": "34d90fa5845004236b9eacafc51d07b2" - }, - "cachem": { - "Package": "cachem", - "Version": "1.0.8", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "fastmap", - "rlang" - ], - "Hash": "c35768291560ce302c0a6589f92e837d" - }, - "callr": { - "Package": "callr", - "Version": "3.7.6", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R", - "R6", - "processx", - "utils" - ], - "Hash": "d7e13f49c19103ece9e58ad2d83a7354" - }, - "celldex": { - "Package": "celldex", - "Version": "1.14.0", - "Source": "Bioconductor", - "Repository": "Bioconductor 3.19", - "Requirements": [ - "AnnotationDbi", - "AnnotationHub", - "DBI", - "DelayedArray", - "DelayedMatrixStats", - "ExperimentHub", - "Matrix", - "RSQLite", - "S4Vectors", - "SummarizedExperiment", - "alabaster.base", - "alabaster.matrix", - "alabaster.se", - "gypsum", - "jsonlite", - "methods", - "utils" - ], - "Hash": "23893b3ebc5833e56319d1136a154531" - }, - "cellranger": { - "Package": "cellranger", - "Version": "1.1.0", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R", - "rematch", - "tibble" - ], - "Hash": "f61dbaec772ccd2e17705c1e872e9e7c" - }, - "circlize": { - "Package": "circlize", - "Version": "0.4.16", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "GlobalOptions", - "R", - "colorspace", - "grDevices", - "graphics", - "grid", - "methods", - "shape", - "stats", - "utils" - ], - "Hash": "bf366c80e2b55a5383b4af8fa2a10b74" - }, - "cli": { - "Package": "cli", - "Version": "3.6.2", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R", - "utils" - ], - "Hash": "1216ac65ac55ec0058a6f75d7ca0fd52" - }, - "clipr": { - "Package": "clipr", - "Version": "0.8.0", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "utils" - ], - "Hash": "3f038e5ac7f41d4ac41ce658c85e3042" - }, - "clue": { - "Package": "clue", - "Version": "0.3-65", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R", - "cluster", - "graphics", - "methods", - "stats" - ], - "Hash": "d6b53853800595408a776900bcc0c23f" - }, - "cluster": { - "Package": "cluster", - "Version": "2.1.6", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R", - "grDevices", - "graphics", - "stats", - "utils" - ], - "Hash": "0aaa05204035dc43ea0004b9c76611dd" - }, - "clusterProfiler": { - "Package": "clusterProfiler", - "Version": "4.12.0", - "Source": "Bioconductor", - "Repository": "Bioconductor 3.19", - "Requirements": [ - "AnnotationDbi", - "DOSE", - "GO.db", - "GOSemSim", - "R", - "downloader", - "dplyr", - "enrichplot", - "gson", - "httr", - "igraph", - "magrittr", - "methods", - "plyr", - "qvalue", - "rlang", - "stats", - "tidyr", - "utils", - "yulab.utils" - ], - "Hash": "4dcafdc7266ccabdde011cbab04b1730" - }, - "coda": { - "Package": "coda", - "Version": "0.19-4.1", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R", - "lattice" - ], - "Hash": "af436915c590afc6fffc3ce3a5be1569" - }, - "codetools": { - "Package": "codetools", - "Version": "0.2-20", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R" - ], - "Hash": "61e097f35917d342622f21cdc79c256e" - }, - "colorspace": { - "Package": "colorspace", - "Version": "2.1-0", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R", - "grDevices", - "graphics", - "methods", - "stats" - ], - "Hash": "f20c47fd52fae58b4e377c37bb8c335b" - }, - "commonmark": { - "Package": "commonmark", - "Version": "1.9.1", - "Source": "Repository", - "Repository": "CRAN", - "Hash": "5d8225445acb167abf7797de48b2ee3c" - }, - "conflicted": { - "Package": "conflicted", - "Version": "1.2.0", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R", - "cli", - "memoise", - "rlang" - ], - "Hash": "bb097fccb22d156624fd07cd2894ddb6" - }, - "cowplot": { - "Package": "cowplot", - "Version": "1.1.3", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R", - "ggplot2", - "grDevices", - "grid", - "gtable", - "methods", - "rlang", - "scales" - ], - "Hash": "8ef2084dd7d28847b374e55440e4f8cb" - }, - "cpp11": { - "Package": "cpp11", - "Version": "0.4.7", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R" - ], - "Hash": "5a295d7d963cc5035284dcdbaf334f4e" - }, - "crayon": { - "Package": "crayon", - "Version": "1.5.2", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "grDevices", - "methods", - "utils" - ], - "Hash": "e8a1e41acf02548751f45c718d55aa6a" - }, - "crosstalk": { - "Package": "crosstalk", - "Version": "1.2.1", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R6", - "htmltools", - "jsonlite", - "lazyeval" - ], - "Hash": "ab12c7b080a57475248a30f4db6298c0" - }, - "curl": { - "Package": "curl", - "Version": "5.2.1", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R" - ], - "Hash": "411ca2c03b1ce5f548345d2fc2685f7a" - }, - "data.table": { - "Package": "data.table", - "Version": "1.15.4", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R", - "methods" - ], - "Hash": "8ee9ac56ef633d0c7cab8b2ca87d683e" - }, - "dbplyr": { - "Package": "dbplyr", - "Version": "2.5.0", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "DBI", - "R", - "R6", - "blob", - "cli", - "dplyr", - "glue", - "lifecycle", - "magrittr", - "methods", - "pillar", - "purrr", - "rlang", - "tibble", - "tidyr", - "tidyselect", - "utils", - "vctrs", - "withr" - ], - "Hash": "39b2e002522bfd258039ee4e889e0fd1" - }, - "digest": { - "Package": "digest", - "Version": "0.6.35", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R", - "utils" - ], - "Hash": "698ece7ba5a4fa4559e3d537e7ec3d31" - }, - "doParallel": { - "Package": "doParallel", - "Version": "1.0.17", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R", - "foreach", - "iterators", - "parallel", - "utils" - ], - "Hash": "451e5edf411987991ab6a5410c45011f" - }, - "downloader": { - "Package": "downloader", - "Version": "0.4", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "digest", - "utils" - ], - "Hash": "f4f2a915e0dedbdf016a83b63477349f" - }, - "dplyr": { - "Package": "dplyr", - "Version": "1.1.4", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R", - "R6", - "cli", - "generics", - "glue", - "lifecycle", - "magrittr", - "methods", - "pillar", - "rlang", - "tibble", - "tidyselect", - "utils", - "vctrs" - ], - "Hash": "fedd9d00c2944ff00a0e2696ccf048ec" - }, - "dqrng": { - "Package": "dqrng", - "Version": "0.3.2", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "BH", - "R", - "Rcpp", - "sitmo" - ], - "Hash": "824df2aeba88d701df5e79018b35b815" - }, - "dtplyr": { - "Package": "dtplyr", - "Version": "1.3.1", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R", - "cli", - "data.table", - "dplyr", - "glue", - "lifecycle", - "rlang", - "tibble", - "tidyselect", - "vctrs" - ], - "Hash": "54ed3ea01b11e81a86544faaecfef8e2" - }, - "edgeR": { - "Package": "edgeR", - "Version": "4.2.0", - "Source": "Bioconductor", - "Repository": "Bioconductor 3.19", - "Requirements": [ - "R", - "Rcpp", - "graphics", - "limma", - "locfit", - "methods", - "stats", - "utils" - ], - "Hash": "20783ecb7e7cea3f351e8b21153e3eb8" - }, - "eds": { - "Package": "eds", - "Version": "1.6.0", - "Source": "Bioconductor", - "Repository": "Bioconductor 3.19", - "Requirements": [ - "Matrix", - "Rcpp" - ], - "Hash": "ab19d02b3418e44d6f32ffb8060427d2" - }, - "ellipsis": { - "Package": "ellipsis", - "Version": "0.3.2", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R", - "rlang" - ], - "Hash": "bb0eec2fe32e88d9e2836c2f73ea2077" - }, - "emdbook": { - "Package": "emdbook", - "Version": "1.3.13", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "MASS", - "bbmle", - "coda", - "lattice", - "plyr" - ], - "Hash": "ed650db9168aeca46d35aa373b12e056" - }, - "emmeans": { - "Package": "emmeans", - "Version": "1.10.1", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R", - "estimability", - "graphics", - "methods", - "mvtnorm", - "numDeriv", - "stats", - "utils" - ], - "Hash": "4445298c65c50bcb7d33b687e69bb0bd" - }, - "enrichplot": { - "Package": "enrichplot", - "Version": "1.24.0", - "Source": "Bioconductor", - "Repository": "Bioconductor 3.19", - "Requirements": [ - "DOSE", - "GOSemSim", - "R", - "RColorBrewer", - "aplot", - "ggfun", - "ggnewscale", - "ggplot2", - "ggraph", - "ggtree", - "graphics", - "grid", - "igraph", - "magrittr", - "methods", - "plyr", - "purrr", - "reshape2", - "rlang", - "scatterpie", - "shadowtext", - "stats", - "utils", - "yulab.utils" - ], - "Hash": "19039e8a7075c61615d6f1459fb13ec6" - }, - "ensembldb": { - "Package": "ensembldb", - "Version": "2.28.0", - "Source": "Bioconductor", - "Repository": "Bioconductor 3.19", - "Requirements": [ - "AnnotationDbi", - "AnnotationFilter", - "Biobase", - "BiocGenerics", - "Biostrings", - "DBI", - "GenomeInfoDb", - "GenomicFeatures", - "GenomicRanges", - "IRanges", - "ProtGenerics", - "R", - "RSQLite", - "Rsamtools", - "S4Vectors", - "curl", - "methods", - "rtracklayer" - ], - "Hash": "f9a5e52468ec832a839c012e15c41c15" - }, - "estimability": { - "Package": "estimability", - "Version": "1.5", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R", - "stats" - ], - "Hash": "0d5f495f1edc281fca2510d8dabcba0f" - }, - "etrunct": { - "Package": "etrunct", - "Version": "0.1", - "Source": "Repository", - "Repository": "CRAN", - "Hash": "d1cdcd7d3ee4de411b7a29877a5e322a" - }, - "evaluate": { - "Package": "evaluate", - "Version": "0.23", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R", - "methods" - ], - "Hash": "daf4a1246be12c1fa8c7705a0935c1a0" - }, - "exrcise": { - "Package": "exrcise", - "Version": "0.1.0", - "Source": "GitHub", - "RemoteType": "github", - "RemoteHost": "api.github.com", - "RemoteUsername": "AlexsLemonade", - "RemoteRepo": "exrcise", - "RemoteRef": "main", - "RemoteSha": "a496662f8a8a2294366cae4d2f3547c50ac341f1", - "Requirements": [ - "knitr", - "magrittr", - "purrr", - "readr", - "stringr" - ], - "Hash": "ba726351afff6ca2957a801ee977f295" - }, - "fansi": { - "Package": "fansi", - "Version": "1.0.6", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R", - "grDevices", - "utils" - ], - "Hash": "962174cf2aeb5b9eea581522286a911f" - }, - "farver": { - "Package": "farver", - "Version": "2.1.1", - "Source": "Repository", - "Repository": "CRAN", - "Hash": "8106d78941f34855c440ddb946b8f7a5" - }, - "fastmap": { - "Package": "fastmap", - "Version": "1.1.1", - "Source": "Repository", - "Repository": "CRAN", - "Hash": "f7736a18de97dea803bde0a2daaafb27" - }, - "fastmatch": { - "Package": "fastmatch", - "Version": "1.1-4", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R" - ], - "Hash": "8c406b7284bbaef08e01c6687367f195" - }, - "fastqcr": { - "Package": "fastqcr", - "Version": "0.1.3", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R", - "dplyr", - "ggplot2", - "grid", - "gridExtra", - "magrittr", - "readr", - "rlang", - "rmarkdown", - "rvest", - "scales", - "stats", - "tibble", - "tidyr", - "utils", - "xml2" - ], - "Hash": "f7800223e02992c148f627e7f476deff" - }, - "fftw": { - "Package": "fftw", - "Version": "1.0-8", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R" - ], - "Hash": "b3d25ec6e091228e863adc3e672772e4" - }, - "fgsea": { - "Package": "fgsea", - "Version": "1.30.0", - "Source": "Bioconductor", - "Repository": "Bioconductor 3.19", - "Requirements": [ - "BH", - "BiocParallel", - "Matrix", - "R", - "Rcpp", - "cowplot", - "data.table", - "fastmatch", - "ggplot2", - "grid", - "scales", - "stats", - "utils" - ], - "Hash": "ead409e5a973cd285681c3bb0ade49a7" - }, - "filelock": { - "Package": "filelock", - "Version": "1.0.3", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R" - ], - "Hash": "192053c276525c8495ccfd523aa8f2d1" - }, - "flexmix": { - "Package": "flexmix", - "Version": "2.3-19", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R", - "grDevices", - "graphics", - "grid", - "lattice", - "methods", - "modeltools", - "nnet", - "stats", - "stats4", - "utils" - ], - "Hash": "0cb3c4b251c2d3fd5923d3e7e6021ee2" - }, - "fontawesome": { - "Package": "fontawesome", - "Version": "0.5.2", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R", - "htmltools", - "rlang" - ], - "Hash": "c2efdd5f0bcd1ea861c2d4e2a883a67d" - }, - "forcats": { - "Package": "forcats", - "Version": "1.0.0", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R", - "cli", - "glue", - "lifecycle", - "magrittr", - "rlang", - "tibble" - ], - "Hash": "1a0a9a3d5083d0d573c4214576f1e690" - }, - "foreach": { - "Package": "foreach", - "Version": "1.5.2", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R", - "codetools", - "iterators", - "utils" - ], - "Hash": "618609b42c9406731ead03adf5379850" - }, - "formatR": { - "Package": "formatR", - "Version": "1.14", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R" - ], - "Hash": "63cb26d12517c7863f5abb006c5e0f25" - }, - "fs": { - "Package": "fs", - "Version": "1.6.4", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R", - "methods" - ], - "Hash": "15aeb8c27f5ea5161f9f6a641fafd93a" - }, - "futile.logger": { - "Package": "futile.logger", - "Version": "1.4.3", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R", - "futile.options", - "lambda.r", - "utils" - ], - "Hash": "99f0ace8c05ec7d3683d27083c4f1e7e" - }, - "futile.options": { - "Package": "futile.options", - "Version": "1.0.1", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R" - ], - "Hash": "0d9bf02413ddc2bbe8da9ce369dcdd2b" - }, - "gargle": { - "Package": "gargle", - "Version": "1.5.2", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R", - "cli", - "fs", - "glue", - "httr", - "jsonlite", - "lifecycle", - "openssl", - "rappdirs", - "rlang", - "stats", - "utils", - "withr" - ], - "Hash": "fc0b272e5847c58cd5da9b20eedbd026" - }, - "generics": { - "Package": "generics", - "Version": "0.1.3", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R", - "methods" - ], - "Hash": "15e9634c0fcd294799e9b2e929ed1b86" - }, - "getopt": { - "Package": "getopt", - "Version": "1.20.4", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "stats" - ], - "Hash": "ed33b16c6d24f7ced1d68877ac2509ee" - }, - "ggbeeswarm": { - "Package": "ggbeeswarm", - "Version": "0.7.2", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R", - "beeswarm", - "cli", - "ggplot2", - "lifecycle", - "vipor" - ], - "Hash": "899f28fe0388b7f687d7453429c2474d" - }, - "ggforce": { - "Package": "ggforce", - "Version": "0.4.2", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "MASS", - "R", - "Rcpp", - "RcppEigen", - "cli", - "ggplot2", - "grDevices", - "grid", - "gtable", - "lifecycle", - "polyclip", - "rlang", - "scales", - "stats", - "systemfonts", - "tidyselect", - "tweenr", - "utils", - "vctrs", - "withr" - ], - "Hash": "384b388bd9155468d2c851846ee69f9f" - }, - "ggfun": { - "Package": "ggfun", - "Version": "0.1.4", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R", - "cli", - "ggplot2", - "grid", - "rlang", - "utils" - ], - "Hash": "91780e07f1d631a1152835b4e25c66b9" - }, - "ggnewscale": { - "Package": "ggnewscale", - "Version": "0.4.10", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "ggplot2" - ], - "Hash": "2fb8808f9b9b750371b6bfc4cc9f2939" - }, - "ggplot2": { - "Package": "ggplot2", - "Version": "3.5.1", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "MASS", - "R", - "cli", - "glue", - "grDevices", - "grid", - "gtable", - "isoband", - "lifecycle", - "mgcv", - "rlang", - "scales", - "stats", - "tibble", - "vctrs", - "withr" - ], - "Hash": "44c6a2f8202d5b7e878ea274b1092426" - }, - "ggplotify": { - "Package": "ggplotify", - "Version": "0.1.2", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R", - "ggplot2", - "grDevices", - "graphics", - "grid", - "gridGraphics", - "yulab.utils" - ], - "Hash": "1547863db3b472cf7181973acf649f1a" - }, - "ggraph": { - "Package": "ggraph", - "Version": "2.2.1", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "MASS", - "R", - "cli", - "cpp11", - "dplyr", - "ggforce", - "ggplot2", - "ggrepel", - "graphlayouts", - "grid", - "igraph", - "lifecycle", - "memoise", - "rlang", - "scales", - "stats", - "tidygraph", - "utils", - "vctrs", - "viridis", - "withr" - ], - "Hash": "1f5d21a9e1f84b4a81ddacb8f052ca61" - }, - "ggrastr": { - "Package": "ggrastr", - "Version": "1.0.2", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "Cairo", - "R", - "ggbeeswarm", - "ggplot2", - "grid", - "png", - "ragg" - ], - "Hash": "7c8178842114bfcd44e688e7fd84c52a" - }, - "ggrepel": { - "Package": "ggrepel", - "Version": "0.9.5", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R", - "Rcpp", - "ggplot2", - "grid", - "rlang", - "scales", - "withr" - ], - "Hash": "cc3361e234c4a5050e29697d675764aa" - }, - "ggsignif": { - "Package": "ggsignif", - "Version": "0.6.4", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "ggplot2" - ], - "Hash": "a57f0f5dbcfd0d77ad4ff33032f5dc79" - }, - "ggstats": { - "Package": "ggstats", - "Version": "0.6.0", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "broom.helpers", - "cli", - "dplyr", - "forcats", - "ggplot2", - "lifecycle", - "magrittr", - "patchwork", - "purrr", - "rlang", - "scales", - "stats", - "stringr", - "tidyr" - ], - "Hash": "02cdab34154e9e70dac279afbb20d34b" - }, - "ggtree": { - "Package": "ggtree", - "Version": "3.12.0", - "Source": "Bioconductor", - "Repository": "Bioconductor 3.19", - "Requirements": [ - "R", - "ape", - "aplot", - "cli", - "dplyr", - "ggfun", - "ggplot2", - "grid", - "magrittr", - "methods", - "purrr", - "rlang", - "scales", - "stats", - "tidyr", - "tidytree", - "treeio", - "utils", - "yulab.utils" - ], - "Hash": "6c4748308cbe296a022cba26e118075a" - }, - "ggupset": { - "Package": "ggupset", - "Version": "0.3.0", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R", - "ggplot2", - "grid", - "gtable", - "rlang", - "scales", - "tibble" - ], - "Hash": "8e9eb92bf465601c07d17c5e8b75dce1" - }, - "glmnet": { - "Package": "glmnet", - "Version": "4.1-8", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "Matrix", - "R", - "Rcpp", - "RcppEigen", - "foreach", - "methods", - "shape", - "survival", - "utils" - ], - "Hash": "eb6fc70e561aae41d5911a6726188f71" - }, - "glue": { - "Package": "glue", - "Version": "1.7.0", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R", - "methods" - ], - "Hash": "e0b3a53876554bd45879e596cdb10a52" - }, - "googledrive": { - "Package": "googledrive", - "Version": "2.1.1", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R", - "cli", - "gargle", - "glue", - "httr", - "jsonlite", - "lifecycle", - "magrittr", - "pillar", - "purrr", - "rlang", - "tibble", - "utils", - "uuid", - "vctrs", - "withr" - ], - "Hash": "e99641edef03e2a5e87f0a0b1fcc97f4" - }, - "googlesheets4": { - "Package": "googlesheets4", - "Version": "1.1.1", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R", - "cellranger", - "cli", - "curl", - "gargle", - "glue", - "googledrive", - "httr", - "ids", - "lifecycle", - "magrittr", - "methods", - "purrr", - "rematch2", - "rlang", - "tibble", - "utils", - "vctrs", - "withr" - ], - "Hash": "d6db1667059d027da730decdc214b959" - }, - "gplots": { - "Package": "gplots", - "Version": "3.1.3.1", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "KernSmooth", - "R", - "caTools", - "gtools", - "methods", - "stats" - ], - "Hash": "f72b5d1ed587f8905e38ee7295e88d80" - }, - "graph": { - "Package": "graph", - "Version": "1.82.0", - "Source": "Bioconductor", - "Repository": "Bioconductor 3.19", - "Requirements": [ - "BiocGenerics", - "R", - "methods", - "stats", - "stats4", - "utils" - ], - "Hash": "096137dd6d37588451a82658aa94ecbd" - }, - "graphlayouts": { - "Package": "graphlayouts", - "Version": "1.1.1", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R", - "Rcpp", - "RcppArmadillo", - "igraph" - ], - "Hash": "d329345a6a37666ca3f18f3b3c1347b7" - }, - "gridExtra": { - "Package": "gridExtra", - "Version": "2.3", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "grDevices", - "graphics", - "grid", - "gtable", - "utils" - ], - "Hash": "7d7f283939f563670a697165b2cf5560" - }, - "gridGraphics": { - "Package": "gridGraphics", - "Version": "0.5-1", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "grDevices", - "graphics", - "grid" - ], - "Hash": "5b79228594f02385d4df4979284879ae" - }, - "gson": { - "Package": "gson", - "Version": "0.1.0", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "jsonlite", - "methods", - "rlang", - "stats", - "tidyr", - "utils" - ], - "Hash": "d37d82cf043b679dd802e91d0b2ef6a1" - }, - "gtable": { - "Package": "gtable", - "Version": "0.3.5", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R", - "cli", - "glue", - "grid", - "lifecycle", - "rlang" - ], - "Hash": "e18861963cbc65a27736e02b3cd3c4a0" - }, - "gtools": { - "Package": "gtools", - "Version": "3.9.5", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "methods", - "stats", - "utils" - ], - "Hash": "588d091c35389f1f4a9d533c8d709b35" - }, - "gypsum": { - "Package": "gypsum", - "Version": "1.0.0", - "Source": "Bioconductor", - "Repository": "Bioconductor 3.19", - "Requirements": [ - "filelock", - "httr2", - "jsonlite", - "parallel", - "paws.storage", - "tools", - "utils" - ], - "Hash": "380fad913349a0834d73a49c312155b9" - }, - "harmony": { - "Package": "harmony", - "Version": "1.2.0", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "Matrix", - "R", - "Rcpp", - "RcppArmadillo", - "RcppProgress", - "RhpcBLASctl", - "cowplot", - "dplyr", - "ggplot2", - "methods", - "rlang", - "tibble" - ], - "Hash": "4f3b181961712ff4127a8634c1367f89" - }, - "haven": { - "Package": "haven", - "Version": "2.5.4", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R", - "cli", - "cpp11", - "forcats", - "hms", - "lifecycle", - "methods", - "readr", - "rlang", - "tibble", - "tidyselect", - "vctrs" - ], - "Hash": "9171f898db9d9c4c1b2c745adc2c1ef1" - }, - "here": { - "Package": "here", - "Version": "1.0.1", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "rprojroot" - ], - "Hash": "24b224366f9c2e7534d2344d10d59211" - }, - "hexbin": { - "Package": "hexbin", - "Version": "1.28.3", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R", - "grDevices", - "graphics", - "grid", - "lattice", - "methods", - "stats", - "utils" - ], - "Hash": "124e384c01d8746f1c12f9dc1b80a161" - }, - "highr": { - "Package": "highr", - "Version": "0.10", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R", - "xfun" - ], - "Hash": "06230136b2d2b9ba5805e1963fa6e890" - }, - "hms": { - "Package": "hms", - "Version": "1.1.3", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "lifecycle", - "methods", - "pkgconfig", - "rlang", - "vctrs" - ], - "Hash": "b59377caa7ed00fa41808342002138f9" - }, - "htmltools": { - "Package": "htmltools", - "Version": "0.5.8.1", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R", - "base64enc", - "digest", - "fastmap", - "grDevices", - "rlang", - "utils" - ], - "Hash": "81d371a9cc60640e74e4ab6ac46dcedc" - }, - "htmlwidgets": { - "Package": "htmlwidgets", - "Version": "1.6.4", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "grDevices", - "htmltools", - "jsonlite", - "knitr", - "rmarkdown", - "yaml" - ], - "Hash": "04291cc45198225444a397606810ac37" - }, - "httpuv": { - "Package": "httpuv", - "Version": "1.6.15", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R", - "R6", - "Rcpp", - "later", - "promises", - "utils" - ], - "Hash": "d55aa087c47a63ead0f6fc10f8fa1ee0" - }, - "httr": { - "Package": "httr", - "Version": "1.4.7", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R", - "R6", - "curl", - "jsonlite", - "mime", - "openssl" - ], - "Hash": "ac107251d9d9fd72f0ca8049988f1d7f" - }, - "httr2": { - "Package": "httr2", - "Version": "1.0.1", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R", - "R6", - "cli", - "curl", - "glue", - "lifecycle", - "magrittr", - "openssl", - "rappdirs", - "rlang", - "vctrs", - "withr" - ], - "Hash": "03d741c92fda96d98c3a3f22494e3b4a" - }, - "hunspell": { - "Package": "hunspell", - "Version": "3.0.3", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R", - "Rcpp", - "digest" - ], - "Hash": "e957e989ea17f937964f0d46b0f0bca0" - }, - "ids": { - "Package": "ids", - "Version": "1.0.1", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "openssl", - "uuid" - ], - "Hash": "99df65cfef20e525ed38c3d2577f7190" - }, - "igraph": { - "Package": "igraph", - "Version": "2.0.3", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "Matrix", - "R", - "cli", - "cpp11", - "grDevices", - "graphics", - "lifecycle", - "magrittr", - "methods", - "pkgconfig", - "rlang", - "stats", - "utils", - "vctrs" - ], - "Hash": "c3b7d801d722e26e4cd888e042bf9af5" - }, - "invgamma": { - "Package": "invgamma", - "Version": "1.1", - "Source": "Repository", - "Repository": "CRAN", - "Hash": "d124cd1623454d8aeaaec5d67cf1d146" - }, - "irlba": { - "Package": "irlba", - "Version": "2.3.5.1", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "Matrix", - "R", - "methods", - "stats" - ], - "Hash": "acb06a47b732c6251afd16e19c3201ff" - }, - "isoband": { - "Package": "isoband", - "Version": "0.2.7", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "grid", - "utils" - ], - "Hash": "0080607b4a1a7b28979aecef976d8bc2" - }, - "iterators": { - "Package": "iterators", - "Version": "1.0.14", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R", - "utils" - ], - "Hash": "8954069286b4b2b0d023d1b288dce978" - }, - "jquerylib": { - "Package": "jquerylib", - "Version": "0.1.4", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "htmltools" - ], - "Hash": "5aab57a3bd297eee1c1d862735972182" - }, - "jsonlite": { - "Package": "jsonlite", - "Version": "1.8.8", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "methods" - ], - "Hash": "e1b9c55281c5adc4dd113652d9e26768" - }, - "jsonvalidate": { - "Package": "jsonvalidate", - "Version": "1.3.2", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "V8" - ], - "Hash": "cdc2843ef7f44f157198bb99aea7552d" - }, - "kernlab": { - "Package": "kernlab", - "Version": "0.9-33", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R", - "grDevices", - "graphics", - "methods", - "stats" - ], - "Hash": "97d266249d6c3b4f40e34e1ceaf9c558" - }, - "knitr": { - "Package": "knitr", - "Version": "1.46", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R", - "evaluate", - "highr", - "methods", - "tools", - "xfun", - "yaml" - ], - "Hash": "6e008ab1d696a5283c79765fa7b56b47" - }, - "labeling": { - "Package": "labeling", - "Version": "0.4.3", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "graphics", - "stats" - ], - "Hash": "b64ec208ac5bc1852b285f665d6368b3" - }, - "labelled": { - "Package": "labelled", - "Version": "2.13.0", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R", - "dplyr", - "haven", - "lifecycle", - "rlang", - "stringr", - "tidyr", - "tidyselect", - "vctrs" - ], - "Hash": "ad4b6d757624221aec6220b8c78defeb" - }, - "lambda.r": { - "Package": "lambda.r", - "Version": "1.2.4", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R", - "formatR" - ], - "Hash": "b1e925c4b9ffeb901bacf812cbe9a6ad" - }, - "later": { - "Package": "later", - "Version": "1.3.2", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "Rcpp", - "rlang" - ], - "Hash": "a3e051d405326b8b0012377434c62b37" - }, - "lattice": { - "Package": "lattice", - "Version": "0.22-6", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R", - "grDevices", - "graphics", - "grid", - "stats", - "utils" - ], - "Hash": "cc5ac1ba4c238c7ca9fa6a87ca11a7e2" - }, - "lazyeval": { - "Package": "lazyeval", - "Version": "0.2.2", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R" - ], - "Hash": "d908914ae53b04d4c0c0fd72ecc35370" - }, - "lifecycle": { - "Package": "lifecycle", - "Version": "1.0.4", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R", - "cli", - "glue", - "rlang" - ], - "Hash": "b8552d117e1b808b09a832f589b79035" - }, - "limma": { - "Package": "limma", - "Version": "3.60.0", - "Source": "Bioconductor", - "Repository": "Bioconductor 3.19", - "Requirements": [ - "R", - "grDevices", - "graphics", - "methods", - "statmod", - "stats", - "utils" - ], - "Hash": "eb9369d11da98acc7f7ca4cdab0ee3d8" - }, - "locfit": { - "Package": "locfit", - "Version": "1.5-9.9", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R", - "lattice" - ], - "Hash": "3885127e04b35dafded049075057ad83" - }, - "lubridate": { - "Package": "lubridate", - "Version": "1.9.3", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R", - "generics", - "methods", - "timechange" - ], - "Hash": "680ad542fbcf801442c83a6ac5a2126c" - }, - "magick": { - "Package": "magick", - "Version": "2.8.3", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "Rcpp", - "curl", - "magrittr" - ], - "Hash": "3f6bcbb8a0c1c9365b2f02d5d04ad7bc" - }, - "magrittr": { - "Package": "magrittr", - "Version": "2.0.3", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R" - ], - "Hash": "7ce2733a9826b3aeb1775d56fd305472" - }, - "markdown": { - "Package": "markdown", - "Version": "1.12", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R", - "commonmark", - "utils", - "xfun" - ], - "Hash": "765cf53992401b3b6c297b69e1edb8bd" - }, - "matrixStats": { - "Package": "matrixStats", - "Version": "1.3.0", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R" - ], - "Hash": "4b3ea27a19d669c0405b38134d89a9d1" - }, - "memoise": { - "Package": "memoise", - "Version": "2.0.1", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "cachem", - "rlang" - ], - "Hash": "e2817ccf4a065c5d9d7f2cfbe7c1d78c" - }, - "metapod": { - "Package": "metapod", - "Version": "1.12.0", - "Source": "Bioconductor", - "Repository": "Bioconductor 3.19", - "Requirements": [ - "Rcpp" - ], - "Hash": "026552a86c3aa0d92d4d8b12d80010cc" - }, - "mgcv": { - "Package": "mgcv", - "Version": "1.9-1", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "Matrix", - "R", - "graphics", - "methods", - "nlme", - "splines", - "stats", - "utils" - ], - "Hash": "110ee9d83b496279960e162ac97764ce" - }, - "miQC": { - "Package": "miQC", - "Version": "1.12.0", - "Source": "Bioconductor", - "Repository": "Bioconductor 3.19", - "Requirements": [ - "R", - "SingleCellExperiment", - "flexmix", - "ggplot2", - "splines" - ], - "Hash": "86a3469aee260ac4094af5302291d57a" - }, - "mime": { - "Package": "mime", - "Version": "0.12", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "tools" - ], - "Hash": "18e9c28c1d3ca1560ce30658b22ce104" - }, - "mixsqp": { - "Package": "mixsqp", - "Version": "0.3-54", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R", - "Rcpp", - "RcppArmadillo", - "irlba", - "stats", - "utils" - ], - "Hash": "62896dd832ccbf1091e7f13324c24160" - }, - "mixtools": { - "Package": "mixtools", - "Version": "2.0.0", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "MASS", - "R", - "kernlab", - "plotly", - "scales", - "segmented", - "stats", - "survival" - ], - "Hash": "2b9414057d7f3725130e2f743ea05a2f" - }, - "modelr": { - "Package": "modelr", - "Version": "0.1.11", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R", - "broom", - "magrittr", - "purrr", - "rlang", - "tibble", - "tidyr", - "tidyselect", - "vctrs" - ], - "Hash": "4f50122dc256b1b6996a4703fecea821" - }, - "modeltools": { - "Package": "modeltools", - "Version": "0.2-23", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "methods", - "stats", - "stats4" - ], - "Hash": "f5a957c02222589bdf625a67be68b2a9" - }, - "msigdbr": { - "Package": "msigdbr", - "Version": "7.5.1", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R", - "babelgene", - "dplyr", - "magrittr", - "rlang", - "tibble", - "tidyselect" - ], - "Hash": "2def1d52dfe1044f82e75d25fb5dd2e5" - }, - "munsell": { - "Package": "munsell", - "Version": "0.5.1", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "colorspace", - "methods" - ], - "Hash": "4fd8900853b746af55b81fda99da7695" - }, - "mvtnorm": { - "Package": "mvtnorm", - "Version": "1.2-4", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R", - "stats" - ], - "Hash": "17e96668f44a28aef0981d9e17c49b59" - }, - "nlme": { - "Package": "nlme", - "Version": "3.1-164", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R", - "graphics", - "lattice", - "stats", - "utils" - ], - "Hash": "a623a2239e642806158bc4dc3f51565d" - }, - "nnet": { - "Package": "nnet", - "Version": "7.3-19", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R", - "stats", - "utils" - ], - "Hash": "2c797b46eea7fb58ede195bc0b1f1138" - }, - "numDeriv": { - "Package": "numDeriv", - "Version": "2016.8-1.1", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R" - ], - "Hash": "df58958f293b166e4ab885ebcad90e02" - }, - "openssl": { - "Package": "openssl", - "Version": "2.1.2", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "askpass" - ], - "Hash": "ea2475b073243d9d338aa8f086ce973e" - }, - "optparse": { - "Package": "optparse", - "Version": "1.7.5", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R", - "getopt", - "methods" - ], - "Hash": "ce5f8381cd2c38d1fc14c83d8b21efd0" - }, - "org.Cf.eg.db": { - "Package": "org.Cf.eg.db", - "Version": "3.19.1", - "Source": "Bioconductor", - "Requirements": [ - "AnnotationDbi", - "R", - "methods" - ], - "Hash": "683c948128f3c35766e9f71e35b52606" - }, - "org.Dr.eg.db": { - "Package": "org.Dr.eg.db", - "Version": "3.19.1", - "Source": "Bioconductor", - "Requirements": [ - "AnnotationDbi", - "R", - "methods" - ], - "Hash": "1e6893b6ea27551fa2fd8d13644486e7" - }, - "org.Hs.eg.db": { - "Package": "org.Hs.eg.db", - "Version": "3.19.1", - "Source": "Bioconductor", - "Requirements": [ - "AnnotationDbi", - "R", - "methods" - ], - "Hash": "1ac8a004ad2e4f6489dadf3a2ffeb638" - }, - "org.Mm.eg.db": { - "Package": "org.Mm.eg.db", - "Version": "3.19.1", - "Source": "Bioconductor", - "Requirements": [ - "AnnotationDbi", - "R", - "methods" - ], - "Hash": "3798992dbae16046c472adb1b5fcd04b" - }, - "palmerpenguins": { - "Package": "palmerpenguins", - "Version": "0.1.1", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R" - ], - "Hash": "6c6861efbc13c1d543749e9c7be4a592" - }, - "patchwork": { - "Package": "patchwork", - "Version": "1.2.0", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "cli", - "ggplot2", - "grDevices", - "graphics", - "grid", - "gtable", - "rlang", - "stats", - "utils" - ], - "Hash": "9c8ab14c00ac07e9e04d1664c0b74486" - }, - "paws.common": { - "Package": "paws.common", - "Version": "0.7.2", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "Rcpp", - "base64enc", - "curl", - "digest", - "httr", - "jsonlite", - "methods", - "stats", - "utils", - "xml2" - ], - "Hash": "c66dfa46eb607d3171f89596d7529446" - }, - "paws.storage": { - "Package": "paws.storage", - "Version": "0.5.0", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "paws.common" - ], - "Hash": "e4a5655c4172112449f7f501c60ed671" - }, - "pheatmap": { - "Package": "pheatmap", - "Version": "1.0.12", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R", - "RColorBrewer", - "grDevices", - "graphics", - "grid", - "gtable", - "scales", - "stats" - ], - "Hash": "db1fb0021811b6693741325bbe916e58" - }, - "pillar": { - "Package": "pillar", - "Version": "1.9.0", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "cli", - "fansi", - "glue", - "lifecycle", - "rlang", - "utf8", - "utils", - "vctrs" - ], - "Hash": "15da5a8412f317beeee6175fbc76f4bb" - }, - "pkgconfig": { - "Package": "pkgconfig", - "Version": "2.0.3", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "utils" - ], - "Hash": "01f28d4278f15c76cddbea05899c5d6f" - }, - "plogr": { - "Package": "plogr", - "Version": "0.2.0", - "Source": "Repository", - "Repository": "CRAN", - "Hash": "09eb987710984fc2905c7129c7d85e65" - }, - "plotly": { - "Package": "plotly", - "Version": "4.10.4", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R", - "RColorBrewer", - "base64enc", - "crosstalk", - "data.table", - "digest", - "dplyr", - "ggplot2", - "htmltools", - "htmlwidgets", - "httr", - "jsonlite", - "lazyeval", - "magrittr", - "promises", - "purrr", - "rlang", - "scales", - "tibble", - "tidyr", - "tools", - "vctrs", - "viridisLite" - ], - "Hash": "a1ac5c03ad5ad12b9d1597e00e23c3dd" - }, - "plyr": { - "Package": "plyr", - "Version": "1.8.9", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R", - "Rcpp" - ], - "Hash": "6b8177fd19982f0020743fadbfdbd933" - }, - "png": { - "Package": "png", - "Version": "0.1-8", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R" - ], - "Hash": "bd54ba8a0a5faded999a7aab6e46b374" - }, - "polyclip": { - "Package": "polyclip", - "Version": "1.10-6", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R" - ], - "Hash": "436542aadb70675e361cf359285af7c7" - }, - "preprocessCore": { - "Package": "preprocessCore", - "Version": "1.66.0", - "Source": "Bioconductor", - "Repository": "Bioconductor 3.19", - "Requirements": [ - "stats" - ], - "Hash": "d188d81b219bbf395f3281d3edb6328c" - }, - "prettyunits": { - "Package": "prettyunits", - "Version": "1.2.0", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R" - ], - "Hash": "6b01fc98b1e86c4f705ce9dcfd2f57c7" - }, - "processx": { - "Package": "processx", - "Version": "3.8.4", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R", - "R6", - "ps", - "utils" - ], - "Hash": "0c90a7d71988856bad2a2a45dd871bb9" - }, - "progress": { - "Package": "progress", - "Version": "1.2.3", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R", - "R6", - "crayon", - "hms", - "prettyunits" - ], - "Hash": "f4625e061cb2865f111b47ff163a5ca6" - }, - "promises": { - "Package": "promises", - "Version": "1.3.0", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R6", - "Rcpp", - "fastmap", - "later", - "magrittr", - "rlang", - "stats" - ], - "Hash": "434cd5388a3979e74be5c219bcd6e77d" - }, - "ps": { - "Package": "ps", - "Version": "1.7.6", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R", - "utils" - ], - "Hash": "dd2b9319ee0656c8acf45c7f40c59de7" - }, - "purrr": { - "Package": "purrr", - "Version": "1.0.2", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R", - "cli", - "lifecycle", - "magrittr", - "rlang", - "vctrs" - ], - "Hash": "1cba04a4e9414bdefc9dcaa99649a8dc" - }, - "qusage": { - "Package": "qusage", - "Version": "2.38.0", - "Source": "Bioconductor", - "Repository": "Bioconductor 3.19", - "Requirements": [ - "Biobase", - "R", - "emmeans", - "fftw", - "limma", - "methods", - "nlme", - "utils" - ], - "Hash": "f62c4ffeadb75c4b129350116258ac1f" - }, - "qvalue": { - "Package": "qvalue", - "Version": "2.36.0", - "Source": "Bioconductor", - "Repository": "Bioconductor 3.19", - "Requirements": [ - "R", - "ggplot2", - "grid", - "reshape2", - "splines" - ], - "Hash": "16f095487215acf101cdc3ed3da237cf" - }, - "ragg": { - "Package": "ragg", - "Version": "1.3.0", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "systemfonts", - "textshaping" - ], - "Hash": "082e1a198e3329d571f4448ef0ede4bc" - }, - "rappdirs": { - "Package": "rappdirs", - "Version": "0.3.3", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R" - ], - "Hash": "5e3c5dc0b071b21fa128676560dbe94d" - }, - "readr": { - "Package": "readr", - "Version": "2.1.5", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R", - "R6", - "cli", - "clipr", - "cpp11", - "crayon", - "hms", - "lifecycle", - "methods", - "rlang", - "tibble", - "tzdb", - "utils", - "vroom" - ], - "Hash": "9de96463d2117f6ac49980577939dfb3" - }, - "readxl": { - "Package": "readxl", - "Version": "1.4.3", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R", - "cellranger", - "cpp11", - "progress", - "tibble", - "utils" - ], - "Hash": "8cf9c239b96df1bbb133b74aef77ad0a" - }, - "rematch": { - "Package": "rematch", - "Version": "2.0.0", - "Source": "Repository", - "Repository": "CRAN", - "Hash": "cbff1b666c6fa6d21202f07e2318d4f1" - }, - "rematch2": { - "Package": "rematch2", - "Version": "2.1.2", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "tibble" - ], - "Hash": "76c9e04c712a05848ae7a23d2f170a40" - }, - "remotes": { - "Package": "remotes", - "Version": "2.5.0", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R", - "methods", - "stats", - "tools", - "utils" - ], - "Hash": "3ee025083e66f18db6cf27b56e23e141" - }, - "renv": { - "Package": "renv", - "Version": "1.0.11", - "Source": "Repository", - "Repository": "RSPM", - "Requirements": [ - "utils" - ], - "Hash": "47623f66b4e80b3b0587bc5d7b309888" - }, - "reprex": { - "Package": "reprex", - "Version": "2.1.0", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R", - "callr", - "cli", - "clipr", - "fs", - "glue", - "knitr", - "lifecycle", - "rlang", - "rmarkdown", - "rstudioapi", - "utils", - "withr" - ], - "Hash": "1425f91b4d5d9a8f25352c44a3d914ed" - }, - "reshape2": { - "Package": "reshape2", - "Version": "1.4.4", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R", - "Rcpp", - "plyr", - "stringr" - ], - "Hash": "bb5996d0bd962d214a11140d77589917" - }, - "restfulr": { - "Package": "restfulr", - "Version": "0.0.15", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R", - "RCurl", - "S4Vectors", - "XML", - "methods", - "rjson", - "yaml" - ], - "Hash": "44651c1e68eda9d462610aca9f15a815" - }, - "reticulate": { - "Package": "reticulate", - "Version": "1.36.1", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "Matrix", - "R", - "Rcpp", - "RcppTOML", - "graphics", - "here", - "jsonlite", - "methods", - "png", - "rappdirs", - "rlang", - "utils", - "withr" - ], - "Hash": "e037fb5dc364efdaf616eb6bc05aaca2" - }, - "rhdf5": { - "Package": "rhdf5", - "Version": "2.48.0", - "Source": "Bioconductor", - "Repository": "Bioconductor 3.19", - "Requirements": [ - "R", - "Rhdf5lib", - "methods", - "rhdf5filters" - ], - "Hash": "74d8c5aeb96d090ce8efc9ffd16afa2b" - }, - "rhdf5filters": { - "Package": "rhdf5filters", - "Version": "1.16.0", - "Source": "Bioconductor", - "Repository": "Bioconductor 3.19", - "Requirements": [ - "Rhdf5lib" - ], - "Hash": "99e15369f8fb17dc188377234de13fc6" - }, - "rjson": { - "Package": "rjson", - "Version": "0.2.21", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R" - ], - "Hash": "f9da75e6444e95a1baf8ca24909d63b9" - }, - "rlang": { - "Package": "rlang", - "Version": "1.1.3", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R", - "utils" - ], - "Hash": "42548638fae05fd9a9b5f3f437fbbbe2" - }, - "rmarkdown": { - "Package": "rmarkdown", - "Version": "2.26", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R", - "bslib", - "evaluate", - "fontawesome", - "htmltools", - "jquerylib", - "jsonlite", - "knitr", - "methods", - "tinytex", - "tools", - "utils", - "xfun", - "yaml" - ], - "Hash": "9b148e7f95d33aac01f31282d49e4f44" - }, - "rprojroot": { - "Package": "rprojroot", - "Version": "2.0.4", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R" - ], - "Hash": "4c8415e0ec1e29f3f4f6fc108bef0144" - }, - "rstudioapi": { - "Package": "rstudioapi", - "Version": "0.16.0", - "Source": "Repository", - "Repository": "CRAN", - "Hash": "96710351d642b70e8f02ddeb237c46a7" - }, - "rsvd": { - "Package": "rsvd", - "Version": "1.0.5", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "Matrix", - "R" - ], - "Hash": "b462187d887abc519894874486dbd6fd" - }, - "rtracklayer": { - "Package": "rtracklayer", - "Version": "1.64.0", - "Source": "Bioconductor", - "Repository": "Bioconductor 3.19", - "Requirements": [ - "BiocGenerics", - "BiocIO", - "Biostrings", - "GenomeInfoDb", - "GenomicAlignments", - "GenomicRanges", - "IRanges", - "R", - "Rsamtools", - "S4Vectors", - "XML", - "XVector", - "curl", - "httr", - "methods", - "restfulr", - "tools", - "zlibbioc" - ], - "Hash": "3d6f004fce582bd7d68e2e18d44abbc1" - }, - "rvest": { - "Package": "rvest", - "Version": "1.0.4", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R", - "cli", - "glue", - "httr", - "lifecycle", - "magrittr", - "rlang", - "selectr", - "tibble", - "xml2" - ], - "Hash": "0bcf0c6f274e90ea314b812a6d19a519" - }, - "sass": { - "Package": "sass", - "Version": "0.4.9", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R6", - "fs", - "htmltools", - "rappdirs", - "rlang" - ], - "Hash": "d53dbfddf695303ea4ad66f86e99b95d" - }, - "scDblFinder": { - "Package": "scDblFinder", - "Version": "1.18.0", - "Source": "Bioconductor", - "Repository": "Bioconductor 3.19", - "Requirements": [ - "BiocGenerics", - "BiocNeighbors", - "BiocParallel", - "BiocSingular", - "DelayedArray", - "GenomeInfoDb", - "GenomicRanges", - "IRanges", - "MASS", - "Matrix", - "R", - "Rsamtools", - "S4Vectors", - "SingleCellExperiment", - "SummarizedExperiment", - "bluster", - "igraph", - "methods", - "rtracklayer", - "scater", - "scran", - "scuttle", - "stats", - "utils", - "xgboost" - ], - "Hash": "3a998cfc42e06628628c320c904ffdaf" - }, - "scRNAseq": { - "Package": "scRNAseq", - "Version": "2.18.0", - "Source": "Bioconductor", - "Repository": "Bioconductor 3.19", - "Requirements": [ - "AnnotationDbi", - "AnnotationHub", - "BiocGenerics", - "DBI", - "DelayedArray", - "ExperimentHub", - "GenomicFeatures", - "GenomicRanges", - "Matrix", - "RSQLite", - "S4Vectors", - "SingleCellExperiment", - "SparseArray", - "SummarizedExperiment", - "alabaster.base", - "alabaster.matrix", - "alabaster.sce", - "ensembldb", - "gypsum", - "jsonlite", - "methods", - "utils" - ], - "Hash": "83fde673a4bb12d7ab50d4684a115363" - }, - "scales": { - "Package": "scales", - "Version": "1.3.0", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R", - "R6", - "RColorBrewer", - "cli", - "farver", - "glue", - "labeling", - "lifecycle", - "munsell", - "rlang", - "viridisLite" - ], - "Hash": "c19df082ba346b0ffa6f833e92de34d1" - }, - "scater": { - "Package": "scater", - "Version": "1.32.0", - "Source": "Bioconductor", - "Repository": "Bioconductor 3.19", - "Requirements": [ - "BiocGenerics", - "BiocNeighbors", - "BiocParallel", - "BiocSingular", - "DelayedArray", - "Matrix", - "MatrixGenerics", - "RColorBrewer", - "RcppML", - "Rtsne", - "S4Vectors", - "SingleCellExperiment", - "SummarizedExperiment", - "beachmat", - "ggbeeswarm", - "ggplot2", - "ggrastr", - "ggrepel", - "methods", - "pheatmap", - "rlang", - "scuttle", - "stats", - "utils", - "uwot", - "viridis" - ], - "Hash": "4a6eb8ab8a2b926fe67cf83aa731a3df" - }, - "scatterpie": { - "Package": "scatterpie", - "Version": "0.2.2", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R", - "dplyr", - "ggforce", - "ggfun", - "ggplot2", - "rlang", - "stats", - "tidyr", - "utils" - ], - "Hash": "5a6b2f02c942e71a06690a99cb51c060" - }, - "scran": { - "Package": "scran", - "Version": "1.32.0", - "Source": "Bioconductor", - "Repository": "Bioconductor 3.19", - "Requirements": [ - "BH", - "BiocGenerics", - "BiocParallel", - "BiocSingular", - "DelayedArray", - "DelayedMatrixStats", - "Matrix", - "Rcpp", - "S4Vectors", - "SingleCellExperiment", - "SummarizedExperiment", - "beachmat", - "bluster", - "dqrng", - "edgeR", - "igraph", - "limma", - "metapod", - "methods", - "scuttle", - "statmod", - "stats", - "utils" - ], - "Hash": "5b11173a6b49f06dda0db31e80caa561" - }, - "scuttle": { - "Package": "scuttle", - "Version": "1.14.0", - "Source": "Bioconductor", - "Repository": "Bioconductor 3.19", - "Requirements": [ - "BiocGenerics", - "BiocParallel", - "DelayedArray", - "DelayedMatrixStats", - "GenomicRanges", - "Matrix", - "Rcpp", - "S4Vectors", - "SingleCellExperiment", - "SummarizedExperiment", - "beachmat", - "methods", - "stats", - "utils" - ], - "Hash": "6d94b72071aefd6e8b041c34ee83ebd0" - }, - "segmented": { - "Package": "segmented", - "Version": "2.1-3", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "MASS", - "R", - "nlme" - ], - "Hash": "3994f48217792f0bb363f0c52167dada" - }, - "selectr": { - "Package": "selectr", - "Version": "0.4-2", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R", - "R6", - "methods", - "stringr" - ], - "Hash": "3838071b66e0c566d55cc26bd6e27bf4" - }, - "shadowtext": { - "Package": "shadowtext", - "Version": "0.1.3", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R", - "ggplot2", - "grid", - "scales" - ], - "Hash": "a6d0947671b22116358e2fa6595abdc4" - }, - "shape": { - "Package": "shape", - "Version": "1.4.6.1", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R", - "grDevices", - "graphics", - "stats" - ], - "Hash": "5c47e84dc0a3ca761ae1d307889e796d" - }, - "shiny": { - "Package": "shiny", - "Version": "1.8.1.1", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R", - "R6", - "bslib", - "cachem", - "commonmark", - "crayon", - "fastmap", - "fontawesome", - "glue", - "grDevices", - "htmltools", - "httpuv", - "jsonlite", - "later", - "lifecycle", - "methods", - "mime", - "promises", - "rlang", - "sourcetools", - "tools", - "utils", - "withr", - "xtable" - ], - "Hash": "54b26646816af9960a4c64d8ceec75d6" - }, - "shinydashboard": { - "Package": "shinydashboard", - "Version": "0.7.2", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R", - "htmltools", - "promises", - "shiny", - "utils" - ], - "Hash": "e418b532e9bb4eb22a714b9a9f1acee7" - }, - "sitmo": { - "Package": "sitmo", - "Version": "2.0.2", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R", - "Rcpp" - ], - "Hash": "c956d93f6768a9789edbc13072b70c78" - }, - "snow": { - "Package": "snow", - "Version": "0.4-4", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R", - "utils" - ], - "Hash": "40b74690debd20c57d93d8c246b305d4" - }, - "sourcetools": { - "Package": "sourcetools", - "Version": "0.1.7-1", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R" - ], - "Hash": "5f5a7629f956619d519205ec475fe647" - }, - "sparseMatrixStats": { - "Package": "sparseMatrixStats", - "Version": "1.16.0", - "Source": "Bioconductor", - "Repository": "Bioconductor 3.19", - "Requirements": [ - "Matrix", - "MatrixGenerics", - "Rcpp", - "matrixStats", - "methods" - ], - "Hash": "7e500a5a527460ca0406473bdcade286" - }, - "spelling": { - "Package": "spelling", - "Version": "2.3.0", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "commonmark", - "hunspell", - "knitr", - "xml2" - ], - "Hash": "632e9e83d3dc774d361b9415b15642bb" - }, - "statmod": { - "Package": "statmod", - "Version": "1.5.0", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R", - "graphics", - "stats" - ], - "Hash": "26e158d12052c279bdd4ba858b80fb1f" - }, - "stringi": { - "Package": "stringi", - "Version": "1.8.3", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R", - "stats", - "tools", - "utils" - ], - "Hash": "058aebddea264f4c99401515182e656a" - }, - "stringr": { - "Package": "stringr", - "Version": "1.5.1", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R", - "cli", - "glue", - "lifecycle", - "magrittr", - "rlang", - "stringi", - "vctrs" - ], - "Hash": "960e2ae9e09656611e0b8214ad543207" - }, - "survival": { - "Package": "survival", - "Version": "3.5-8", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "Matrix", - "R", - "graphics", - "methods", - "splines", - "stats", - "utils" - ], - "Hash": "184d7799bca4ba8c3be72ea396f4b9a3" - }, - "sys": { - "Package": "sys", - "Version": "3.4.2", - "Source": "Repository", - "Repository": "CRAN", - "Hash": "3a1be13d68d47a8cd0bfd74739ca1555" - }, - "systemfonts": { - "Package": "systemfonts", - "Version": "1.0.6", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R", - "cpp11" - ], - "Hash": "6d538cff441f0f1f36db2209ac7495ac" - }, - "textshaping": { - "Package": "textshaping", - "Version": "0.3.7", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R", - "cpp11", - "systemfonts" - ], - "Hash": "997aac9ad649e0ef3b97f96cddd5622b" - }, - "tibble": { - "Package": "tibble", - "Version": "3.2.1", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R", - "fansi", - "lifecycle", - "magrittr", - "methods", - "pillar", - "pkgconfig", - "rlang", - "utils", - "vctrs" - ], - "Hash": "a84e2cc86d07289b3b6f5069df7a004c" - }, - "tidygraph": { - "Package": "tidygraph", - "Version": "1.3.1", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R6", - "cli", - "cpp11", - "dplyr", - "igraph", - "lifecycle", - "magrittr", - "pillar", - "rlang", - "stats", - "tibble", - "tidyr", - "tools", - "utils" - ], - "Hash": "2149824d406f233b57b087be72c5f163" - }, - "tidyr": { - "Package": "tidyr", - "Version": "1.3.1", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R", - "cli", - "cpp11", - "dplyr", - "glue", - "lifecycle", - "magrittr", - "purrr", - "rlang", - "stringr", - "tibble", - "tidyselect", - "utils", - "vctrs" - ], - "Hash": "915fb7ce036c22a6a33b5a8adb712eb1" - }, - "tidyselect": { - "Package": "tidyselect", - "Version": "1.2.1", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R", - "cli", - "glue", - "lifecycle", - "rlang", - "vctrs", - "withr" - ], - "Hash": "829f27b9c4919c16b593794a6344d6c0" - }, - "tidytree": { - "Package": "tidytree", - "Version": "0.4.6", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R", - "ape", - "cli", - "dplyr", - "lazyeval", - "magrittr", - "methods", - "pillar", - "rlang", - "tibble", - "tidyr", - "tidyselect", - "yulab.utils" - ], - "Hash": "a700d295c0eff82fbce42eac067bb89d" - }, - "tidyverse": { - "Package": "tidyverse", - "Version": "2.0.0", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R", - "broom", - "cli", - "conflicted", - "dbplyr", - "dplyr", - "dtplyr", - "forcats", - "ggplot2", - "googledrive", - "googlesheets4", - "haven", - "hms", - "httr", - "jsonlite", - "lubridate", - "magrittr", - "modelr", - "pillar", - "purrr", - "ragg", - "readr", - "readxl", - "reprex", - "rlang", - "rstudioapi", - "rvest", - "stringr", - "tibble", - "tidyr", - "xml2" - ], - "Hash": "c328568cd14ea89a83bd4ca7f54ae07e" - }, - "timechange": { - "Package": "timechange", - "Version": "0.3.0", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R", - "cpp11" - ], - "Hash": "c5f3c201b931cd6474d17d8700ccb1c8" - }, - "tinytex": { - "Package": "tinytex", - "Version": "0.50", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "xfun" - ], - "Hash": "be7a76845222ad20adb761f462eed3ea" - }, - "treeio": { - "Package": "treeio", - "Version": "1.28.0", - "Source": "Bioconductor", - "Repository": "Bioconductor 3.19", - "Requirements": [ - "R", - "ape", - "dplyr", - "jsonlite", - "magrittr", - "methods", - "rlang", - "stats", - "tibble", - "tidytree", - "utils", - "yulab.utils" - ], - "Hash": "9e0a0b700763836cd36cb3a49be5a15d" - }, - "truncnorm": { - "Package": "truncnorm", - "Version": "1.0-9", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R" - ], - "Hash": "ef5b32c5194351ff409dfb37ca9468f1" - }, - "tweenr": { - "Package": "tweenr", - "Version": "2.0.3", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R", - "cpp11", - "farver", - "magrittr", - "rlang", - "vctrs" - ], - "Hash": "82fac2b73e6a1f3874fc000aaf96d8bc" - }, - "txdbmaker": { - "Package": "txdbmaker", - "Version": "1.0.0", - "Source": "Bioconductor", - "Repository": "Bioconductor 3.19", - "Requirements": [ - "AnnotationDbi", - "Biobase", - "BiocGenerics", - "BiocIO", - "DBI", - "GenomeInfoDb", - "GenomicFeatures", - "GenomicRanges", - "IRanges", - "RSQLite", - "S4Vectors", - "UCSC.utils", - "biomaRt", - "httr", - "methods", - "rjson", - "rtracklayer", - "stats", - "tools", - "utils" - ], - "Hash": "6daec4674f5198f4d3b7db2c8a3a9508" - }, - "tximeta": { - "Package": "tximeta", - "Version": "1.22.0", - "Source": "Bioconductor", - "Repository": "Bioconductor 3.19", - "Requirements": [ - "AnnotationDbi", - "AnnotationHub", - "BiocFileCache", - "Biostrings", - "GenomeInfoDb", - "GenomicFeatures", - "GenomicRanges", - "IRanges", - "Matrix", - "S4Vectors", - "SummarizedExperiment", - "ensembldb", - "jsonlite", - "methods", - "tibble", - "tools", - "txdbmaker", - "tximport", - "utils" - ], - "Hash": "8871a89e79fd3e419b5a5869efb68158" - }, - "tximport": { - "Package": "tximport", - "Version": "1.32.0", - "Source": "Bioconductor", - "Repository": "Bioconductor 3.19", - "Requirements": [ - "methods", - "stats", - "utils" - ], - "Hash": "de83dfc887cf6205591b70500c987e43" - }, - "tzdb": { - "Package": "tzdb", - "Version": "0.4.0", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R", - "cpp11" - ], - "Hash": "f561504ec2897f4d46f0c7657e488ae1" - }, - "umap": { - "Package": "umap", - "Version": "0.2.10.0", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "Matrix", - "R", - "RSpectra", - "Rcpp", - "methods", - "openssl", - "reticulate", - "stats" - ], - "Hash": "249dae2d91909b98bc93086d82cd7c7f" - }, - "utf8": { - "Package": "utf8", - "Version": "1.2.4", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R" - ], - "Hash": "62b65c52671e6665f803ff02954446e9" - }, - "uuid": { - "Package": "uuid", - "Version": "1.2-0", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R" - ], - "Hash": "303c19bfd970bece872f93a824e323d9" - }, - "uwot": { - "Package": "uwot", - "Version": "0.2.2", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "FNN", - "Matrix", - "RSpectra", - "Rcpp", - "RcppAnnoy", - "RcppProgress", - "dqrng", - "irlba", - "methods" - ], - "Hash": "f693a0ca6d34b02eb432326388021805" - }, - "vctrs": { - "Package": "vctrs", - "Version": "0.6.5", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R", - "cli", - "glue", - "lifecycle", - "rlang" - ], - "Hash": "c03fa420630029418f7e6da3667aac4a" - }, - "vipor": { - "Package": "vipor", - "Version": "0.4.7", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R", - "graphics", - "stats" - ], - "Hash": "86493c62c14eb78140f1725003958a77" - }, - "viridis": { - "Package": "viridis", - "Version": "0.6.5", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R", - "ggplot2", - "gridExtra", - "viridisLite" - ], - "Hash": "acd96d9fa70adeea4a5a1150609b9745" - }, - "viridisLite": { - "Package": "viridisLite", - "Version": "0.4.2", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R" - ], - "Hash": "c826c7c4241b6fc89ff55aaea3fa7491" - }, - "vroom": { - "Package": "vroom", - "Version": "1.6.5", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R", - "bit64", - "cli", - "cpp11", - "crayon", - "glue", - "hms", - "lifecycle", - "methods", - "progress", - "rlang", - "stats", - "tibble", - "tidyselect", - "tzdb", - "vctrs", - "withr" - ], - "Hash": "390f9315bc0025be03012054103d227c" - }, - "vsn": { - "Package": "vsn", - "Version": "3.72.0", - "Source": "Bioconductor", - "Repository": "Bioconductor 3.19", - "Requirements": [ - "Biobase", - "R", - "affy", - "ggplot2", - "lattice", - "limma", - "methods" - ], - "Hash": "72603bed69ebcf4fe1e81de3587e9624" - }, - "withr": { - "Package": "withr", - "Version": "3.0.0", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R", - "grDevices", - "graphics" - ], - "Hash": "d31b6c62c10dcf11ec530ca6b0dd5d35" - }, - "xfun": { - "Package": "xfun", - "Version": "0.43", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "grDevices", - "stats", - "tools" - ], - "Hash": "ab6371d8653ce5f2f9290f4ec7b42a8e" - }, - "xgboost": { - "Package": "xgboost", - "Version": "1.7.7.1", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "Matrix", - "R", - "data.table", - "jsonlite", - "methods" - ], - "Hash": "6303e61eac62aef7bd2b396ef7e24386" - }, - "xml2": { - "Package": "xml2", - "Version": "1.3.6", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R", - "cli", - "methods", - "rlang" - ], - "Hash": "1d0336142f4cd25d8d23cd3ba7a8fb61" - }, - "xtable": { - "Package": "xtable", - "Version": "1.8-4", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R", - "stats", - "utils" - ], - "Hash": "b8acdf8af494d9ec19ccb2481a9b11c2" - }, - "yaml": { - "Package": "yaml", - "Version": "2.3.8", - "Source": "Repository", - "Repository": "CRAN", - "Hash": "29240487a071f535f5e5d5a323b7afbd" - }, - "yulab.utils": { - "Package": "yulab.utils", - "Version": "0.1.4", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "cli", - "digest", - "fs", - "memoise", - "rlang", - "stats", - "tools", - "utils" - ], - "Hash": "60ee2aaa179dc282e9fa7367bad76e89" - }, - "zlibbioc": { - "Package": "zlibbioc", - "Version": "1.50.0", - "Source": "Bioconductor", - "Repository": "Bioconductor 3.19", - "Hash": "3db02e3c460e1c852365df117a2b441b" - } - } -} diff --git a/renv/.gitignore b/renv/.gitignore deleted file mode 100644 index 7c1c770d..00000000 --- a/renv/.gitignore +++ /dev/null @@ -1,8 +0,0 @@ -sandbox/ -cellar/ -local/ -library/ -lock/ -python/ -staging/ - diff --git a/renv/activate.R b/renv/activate.R deleted file mode 100644 index 0eb51088..00000000 --- a/renv/activate.R +++ /dev/null @@ -1,1305 +0,0 @@ - -local({ - - # the requested version of renv - version <- "1.0.11" - attr(version, "sha") <- NULL - - # the project directory - project <- Sys.getenv("RENV_PROJECT") - if (!nzchar(project)) - project <- getwd() - - # use start-up diagnostics if enabled - diagnostics <- Sys.getenv("RENV_STARTUP_DIAGNOSTICS", unset = "FALSE") - if (diagnostics) { - start <- Sys.time() - profile <- tempfile("renv-startup-", fileext = ".Rprof") - utils::Rprof(profile) - on.exit({ - utils::Rprof(NULL) - elapsed <- signif(difftime(Sys.time(), start, units = "auto"), digits = 2L) - writeLines(sprintf("- renv took %s to run the autoloader.", format(elapsed))) - writeLines(sprintf("- Profile: %s", profile)) - print(utils::summaryRprof(profile)) - }, add = TRUE) - } - - # figure out whether the autoloader is enabled - enabled <- local({ - - # first, check config option - override <- getOption("renv.config.autoloader.enabled") - if (!is.null(override)) - return(override) - - # if we're being run in a context where R_LIBS is already set, - # don't load -- presumably we're being run as a sub-process and - # the parent process has already set up library paths for us - rcmd <- Sys.getenv("R_CMD", unset = NA) - rlibs <- Sys.getenv("R_LIBS", unset = NA) - if (!is.na(rlibs) && !is.na(rcmd)) - return(FALSE) - - # next, check environment variables - # TODO: prefer using the configuration one in the future - envvars <- c( - "RENV_CONFIG_AUTOLOADER_ENABLED", - "RENV_AUTOLOADER_ENABLED", - "RENV_ACTIVATE_PROJECT" - ) - - for (envvar in envvars) { - envval <- Sys.getenv(envvar, unset = NA) - if (!is.na(envval)) - return(tolower(envval) %in% c("true", "t", "1")) - } - - # enable by default - TRUE - - }) - - # bail if we're not enabled - if (!enabled) { - - # if we're not enabled, we might still need to manually load - # the user profile here - profile <- Sys.getenv("R_PROFILE_USER", unset = "~/.Rprofile") - if (file.exists(profile)) { - cfg <- Sys.getenv("RENV_CONFIG_USER_PROFILE", unset = "TRUE") - if (tolower(cfg) %in% c("true", "t", "1")) - sys.source(profile, envir = globalenv()) - } - - return(FALSE) - - } - - # avoid recursion - if (identical(getOption("renv.autoloader.running"), TRUE)) { - warning("ignoring recursive attempt to run renv autoloader") - return(invisible(TRUE)) - } - - # signal that we're loading renv during R startup - options(renv.autoloader.running = TRUE) - on.exit(options(renv.autoloader.running = NULL), add = TRUE) - - # signal that we've consented to use renv - options(renv.consent = TRUE) - - # load the 'utils' package eagerly -- this ensures that renv shims, which - # mask 'utils' packages, will come first on the search path - library(utils, lib.loc = .Library) - - # unload renv if it's already been loaded - if ("renv" %in% loadedNamespaces()) - unloadNamespace("renv") - - # load bootstrap tools - ansify <- function(text) { - if (renv_ansify_enabled()) - renv_ansify_enhanced(text) - else - renv_ansify_default(text) - } - - renv_ansify_enabled <- function() { - - override <- Sys.getenv("RENV_ANSIFY_ENABLED", unset = NA) - if (!is.na(override)) - return(as.logical(override)) - - pane <- Sys.getenv("RSTUDIO_CHILD_PROCESS_PANE", unset = NA) - if (identical(pane, "build")) - return(FALSE) - - testthat <- Sys.getenv("TESTTHAT", unset = "false") - if (tolower(testthat) %in% "true") - return(FALSE) - - iderun <- Sys.getenv("R_CLI_HAS_HYPERLINK_IDE_RUN", unset = "false") - if (tolower(iderun) %in% "false") - return(FALSE) - - TRUE - - } - - renv_ansify_default <- function(text) { - text - } - - renv_ansify_enhanced <- function(text) { - - # R help links - pattern <- "`\\?(renv::(?:[^`])+)`" - replacement <- "`\033]8;;ide:help:\\1\a?\\1\033]8;;\a`" - text <- gsub(pattern, replacement, text, perl = TRUE) - - # runnable code - pattern <- "`(renv::(?:[^`])+)`" - replacement <- "`\033]8;;ide:run:\\1\a\\1\033]8;;\a`" - text <- gsub(pattern, replacement, text, perl = TRUE) - - # return ansified text - text - - } - - renv_ansify_init <- function() { - - envir <- renv_envir_self() - if (renv_ansify_enabled()) - assign("ansify", renv_ansify_enhanced, envir = envir) - else - assign("ansify", renv_ansify_default, envir = envir) - - } - - `%||%` <- function(x, y) { - if (is.null(x)) y else x - } - - catf <- function(fmt, ..., appendLF = TRUE) { - - quiet <- getOption("renv.bootstrap.quiet", default = FALSE) - if (quiet) - return(invisible()) - - msg <- sprintf(fmt, ...) - cat(msg, file = stdout(), sep = if (appendLF) "\n" else "") - - invisible(msg) - - } - - header <- function(label, - ..., - prefix = "#", - suffix = "-", - n = min(getOption("width"), 78)) - { - label <- sprintf(label, ...) - n <- max(n - nchar(label) - nchar(prefix) - 2L, 8L) - if (n <= 0) - return(paste(prefix, label)) - - tail <- paste(rep.int(suffix, n), collapse = "") - paste0(prefix, " ", label, " ", tail) - - } - - heredoc <- function(text, leave = 0) { - - # remove leading, trailing whitespace - trimmed <- gsub("^\\s*\\n|\\n\\s*$", "", text) - - # split into lines - lines <- strsplit(trimmed, "\n", fixed = TRUE)[[1L]] - - # compute common indent - indent <- regexpr("[^[:space:]]", lines) - common <- min(setdiff(indent, -1L)) - leave - text <- paste(substring(lines, common), collapse = "\n") - - # substitute in ANSI links for executable renv code - ansify(text) - - } - - startswith <- function(string, prefix) { - substring(string, 1, nchar(prefix)) == prefix - } - - bootstrap <- function(version, library) { - - friendly <- renv_bootstrap_version_friendly(version) - section <- header(sprintf("Bootstrapping renv %s", friendly)) - catf(section) - - # attempt to download renv - catf("- Downloading renv ... ", appendLF = FALSE) - withCallingHandlers( - tarball <- renv_bootstrap_download(version), - error = function(err) { - catf("FAILED") - stop("failed to download:\n", conditionMessage(err)) - } - ) - catf("OK") - on.exit(unlink(tarball), add = TRUE) - - # now attempt to install - catf("- Installing renv ... ", appendLF = FALSE) - withCallingHandlers( - status <- renv_bootstrap_install(version, tarball, library), - error = function(err) { - catf("FAILED") - stop("failed to install:\n", conditionMessage(err)) - } - ) - catf("OK") - - # add empty line to break up bootstrapping from normal output - catf("") - - return(invisible()) - } - - renv_bootstrap_tests_running <- function() { - getOption("renv.tests.running", default = FALSE) - } - - renv_bootstrap_repos <- function() { - - # get CRAN repository - cran <- getOption("renv.repos.cran", "https://cloud.r-project.org") - - # check for repos override - repos <- Sys.getenv("RENV_CONFIG_REPOS_OVERRIDE", unset = NA) - if (!is.na(repos)) { - - # check for RSPM; if set, use a fallback repository for renv - rspm <- Sys.getenv("RSPM", unset = NA) - if (identical(rspm, repos)) - repos <- c(RSPM = rspm, CRAN = cran) - - return(repos) - - } - - # check for lockfile repositories - repos <- tryCatch(renv_bootstrap_repos_lockfile(), error = identity) - if (!inherits(repos, "error") && length(repos)) - return(repos) - - # retrieve current repos - repos <- getOption("repos") - - # ensure @CRAN@ entries are resolved - repos[repos == "@CRAN@"] <- cran - - # add in renv.bootstrap.repos if set - default <- c(FALLBACK = "https://cloud.r-project.org") - extra <- getOption("renv.bootstrap.repos", default = default) - repos <- c(repos, extra) - - # remove duplicates that might've snuck in - dupes <- duplicated(repos) | duplicated(names(repos)) - repos[!dupes] - - } - - renv_bootstrap_repos_lockfile <- function() { - - lockpath <- Sys.getenv("RENV_PATHS_LOCKFILE", unset = "renv.lock") - if (!file.exists(lockpath)) - return(NULL) - - lockfile <- tryCatch(renv_json_read(lockpath), error = identity) - if (inherits(lockfile, "error")) { - warning(lockfile) - return(NULL) - } - - repos <- lockfile$R$Repositories - if (length(repos) == 0) - return(NULL) - - keys <- vapply(repos, `[[`, "Name", FUN.VALUE = character(1)) - vals <- vapply(repos, `[[`, "URL", FUN.VALUE = character(1)) - names(vals) <- keys - - return(vals) - - } - - renv_bootstrap_download <- function(version) { - - sha <- attr(version, "sha", exact = TRUE) - - methods <- if (!is.null(sha)) { - - # attempting to bootstrap a development version of renv - c( - function() renv_bootstrap_download_tarball(sha), - function() renv_bootstrap_download_github(sha) - ) - - } else { - - # attempting to bootstrap a release version of renv - c( - function() renv_bootstrap_download_tarball(version), - function() renv_bootstrap_download_cran_latest(version), - function() renv_bootstrap_download_cran_archive(version) - ) - - } - - for (method in methods) { - path <- tryCatch(method(), error = identity) - if (is.character(path) && file.exists(path)) - return(path) - } - - stop("All download methods failed") - - } - - renv_bootstrap_download_impl <- function(url, destfile) { - - mode <- "wb" - - # https://bugs.r-project.org/bugzilla/show_bug.cgi?id=17715 - fixup <- - Sys.info()[["sysname"]] == "Windows" && - substring(url, 1L, 5L) == "file:" - - if (fixup) - mode <- "w+b" - - args <- list( - url = url, - destfile = destfile, - mode = mode, - quiet = TRUE - ) - - if ("headers" %in% names(formals(utils::download.file))) { - headers <- renv_bootstrap_download_custom_headers(url) - if (length(headers) && is.character(headers)) - args$headers <- headers - } - - do.call(utils::download.file, args) - - } - - renv_bootstrap_download_custom_headers <- function(url) { - - headers <- getOption("renv.download.headers") - if (is.null(headers)) - return(character()) - - if (!is.function(headers)) - stopf("'renv.download.headers' is not a function") - - headers <- headers(url) - if (length(headers) == 0L) - return(character()) - - if (is.list(headers)) - headers <- unlist(headers, recursive = FALSE, use.names = TRUE) - - ok <- - is.character(headers) && - is.character(names(headers)) && - all(nzchar(names(headers))) - - if (!ok) - stop("invocation of 'renv.download.headers' did not return a named character vector") - - headers - - } - - renv_bootstrap_download_cran_latest <- function(version) { - - spec <- renv_bootstrap_download_cran_latest_find(version) - type <- spec$type - repos <- spec$repos - - baseurl <- utils::contrib.url(repos = repos, type = type) - ext <- if (identical(type, "source")) - ".tar.gz" - else if (Sys.info()[["sysname"]] == "Windows") - ".zip" - else - ".tgz" - name <- sprintf("renv_%s%s", version, ext) - url <- paste(baseurl, name, sep = "/") - - destfile <- file.path(tempdir(), name) - status <- tryCatch( - renv_bootstrap_download_impl(url, destfile), - condition = identity - ) - - if (inherits(status, "condition")) - return(FALSE) - - # report success and return - destfile - - } - - renv_bootstrap_download_cran_latest_find <- function(version) { - - # check whether binaries are supported on this system - binary <- - getOption("renv.bootstrap.binary", default = TRUE) && - !identical(.Platform$pkgType, "source") && - !identical(getOption("pkgType"), "source") && - Sys.info()[["sysname"]] %in% c("Darwin", "Windows") - - types <- c(if (binary) "binary", "source") - - # iterate over types + repositories - for (type in types) { - for (repos in renv_bootstrap_repos()) { - - # build arguments for utils::available.packages() call - args <- list(type = type, repos = repos) - - # add custom headers if available -- note that - # utils::available.packages() will pass this to download.file() - if ("headers" %in% names(formals(utils::download.file))) { - headers <- renv_bootstrap_download_custom_headers(repos) - if (length(headers) && is.character(headers)) - args$headers <- headers - } - - # retrieve package database - db <- tryCatch( - as.data.frame( - do.call(utils::available.packages, args), - stringsAsFactors = FALSE - ), - error = identity - ) - - if (inherits(db, "error")) - next - - # check for compatible entry - entry <- db[db$Package %in% "renv" & db$Version %in% version, ] - if (nrow(entry) == 0) - next - - # found it; return spec to caller - spec <- list(entry = entry, type = type, repos = repos) - return(spec) - - } - } - - # if we got here, we failed to find renv - fmt <- "renv %s is not available from your declared package repositories" - stop(sprintf(fmt, version)) - - } - - renv_bootstrap_download_cran_archive <- function(version) { - - name <- sprintf("renv_%s.tar.gz", version) - repos <- renv_bootstrap_repos() - urls <- file.path(repos, "src/contrib/Archive/renv", name) - destfile <- file.path(tempdir(), name) - - for (url in urls) { - - status <- tryCatch( - renv_bootstrap_download_impl(url, destfile), - condition = identity - ) - - if (identical(status, 0L)) - return(destfile) - - } - - return(FALSE) - - } - - renv_bootstrap_download_tarball <- function(version) { - - # if the user has provided the path to a tarball via - # an environment variable, then use it - tarball <- Sys.getenv("RENV_BOOTSTRAP_TARBALL", unset = NA) - if (is.na(tarball)) - return() - - # allow directories - if (dir.exists(tarball)) { - name <- sprintf("renv_%s.tar.gz", version) - tarball <- file.path(tarball, name) - } - - # bail if it doesn't exist - if (!file.exists(tarball)) { - - # let the user know we weren't able to honour their request - fmt <- "- RENV_BOOTSTRAP_TARBALL is set (%s) but does not exist." - msg <- sprintf(fmt, tarball) - warning(msg) - - # bail - return() - - } - - catf("- Using local tarball '%s'.", tarball) - tarball - - } - - renv_bootstrap_github_token <- function() { - for (envvar in c("GITHUB_TOKEN", "GITHUB_PAT", "GH_TOKEN")) { - envval <- Sys.getenv(envvar, unset = NA) - if (!is.na(envval)) - return(envval) - } - } - - renv_bootstrap_download_github <- function(version) { - - enabled <- Sys.getenv("RENV_BOOTSTRAP_FROM_GITHUB", unset = "TRUE") - if (!identical(enabled, "TRUE")) - return(FALSE) - - # prepare download options - token <- renv_bootstrap_github_token() - if (nzchar(Sys.which("curl")) && nzchar(token)) { - fmt <- "--location --fail --header \"Authorization: token %s\"" - extra <- sprintf(fmt, token) - saved <- options("download.file.method", "download.file.extra") - options(download.file.method = "curl", download.file.extra = extra) - on.exit(do.call(base::options, saved), add = TRUE) - } else if (nzchar(Sys.which("wget")) && nzchar(token)) { - fmt <- "--header=\"Authorization: token %s\"" - extra <- sprintf(fmt, token) - saved <- options("download.file.method", "download.file.extra") - options(download.file.method = "wget", download.file.extra = extra) - on.exit(do.call(base::options, saved), add = TRUE) - } - - url <- file.path("https://api.github.com/repos/rstudio/renv/tarball", version) - name <- sprintf("renv_%s.tar.gz", version) - destfile <- file.path(tempdir(), name) - - status <- tryCatch( - renv_bootstrap_download_impl(url, destfile), - condition = identity - ) - - if (!identical(status, 0L)) - return(FALSE) - - renv_bootstrap_download_augment(destfile) - - return(destfile) - - } - - # Add Sha to DESCRIPTION. This is stop gap until #890, after which we - # can use renv::install() to fully capture metadata. - renv_bootstrap_download_augment <- function(destfile) { - sha <- renv_bootstrap_git_extract_sha1_tar(destfile) - if (is.null(sha)) { - return() - } - - # Untar - tempdir <- tempfile("renv-github-") - on.exit(unlink(tempdir, recursive = TRUE), add = TRUE) - untar(destfile, exdir = tempdir) - pkgdir <- dir(tempdir, full.names = TRUE)[[1]] - - # Modify description - desc_path <- file.path(pkgdir, "DESCRIPTION") - desc_lines <- readLines(desc_path) - remotes_fields <- c( - "RemoteType: github", - "RemoteHost: api.github.com", - "RemoteRepo: renv", - "RemoteUsername: rstudio", - "RemotePkgRef: rstudio/renv", - paste("RemoteRef: ", sha), - paste("RemoteSha: ", sha) - ) - writeLines(c(desc_lines[desc_lines != ""], remotes_fields), con = desc_path) - - # Re-tar - local({ - old <- setwd(tempdir) - on.exit(setwd(old), add = TRUE) - - tar(destfile, compression = "gzip") - }) - invisible() - } - - # Extract the commit hash from a git archive. Git archives include the SHA1 - # hash as the comment field of the tarball pax extended header - # (see https://www.kernel.org/pub/software/scm/git/docs/git-archive.html) - # For GitHub archives this should be the first header after the default one - # (512 byte) header. - renv_bootstrap_git_extract_sha1_tar <- function(bundle) { - - # open the bundle for reading - # We use gzcon for everything because (from ?gzcon) - # > Reading from a connection which does not supply a 'gzip' magic - # > header is equivalent to reading from the original connection - conn <- gzcon(file(bundle, open = "rb", raw = TRUE)) - on.exit(close(conn)) - - # The default pax header is 512 bytes long and the first pax extended header - # with the comment should be 51 bytes long - # `52 comment=` (11 chars) + 40 byte SHA1 hash - len <- 0x200 + 0x33 - res <- rawToChar(readBin(conn, "raw", n = len)[0x201:len]) - - if (grepl("^52 comment=", res)) { - sub("52 comment=", "", res) - } else { - NULL - } - } - - renv_bootstrap_install <- function(version, tarball, library) { - - # attempt to install it into project library - dir.create(library, showWarnings = FALSE, recursive = TRUE) - output <- renv_bootstrap_install_impl(library, tarball) - - # check for successful install - status <- attr(output, "status") - if (is.null(status) || identical(status, 0L)) - return(status) - - # an error occurred; report it - header <- "installation of renv failed" - lines <- paste(rep.int("=", nchar(header)), collapse = "") - text <- paste(c(header, lines, output), collapse = "\n") - stop(text) - - } - - renv_bootstrap_install_impl <- function(library, tarball) { - - # invoke using system2 so we can capture and report output - bin <- R.home("bin") - exe <- if (Sys.info()[["sysname"]] == "Windows") "R.exe" else "R" - R <- file.path(bin, exe) - - args <- c( - "--vanilla", "CMD", "INSTALL", "--no-multiarch", - "-l", shQuote(path.expand(library)), - shQuote(path.expand(tarball)) - ) - - system2(R, args, stdout = TRUE, stderr = TRUE) - - } - - renv_bootstrap_platform_prefix <- function() { - - # construct version prefix - version <- paste(R.version$major, R.version$minor, sep = ".") - prefix <- paste("R", numeric_version(version)[1, 1:2], sep = "-") - - # include SVN revision for development versions of R - # (to avoid sharing platform-specific artefacts with released versions of R) - devel <- - identical(R.version[["status"]], "Under development (unstable)") || - identical(R.version[["nickname"]], "Unsuffered Consequences") - - if (devel) - prefix <- paste(prefix, R.version[["svn rev"]], sep = "-r") - - # build list of path components - components <- c(prefix, R.version$platform) - - # include prefix if provided by user - prefix <- renv_bootstrap_platform_prefix_impl() - if (!is.na(prefix) && nzchar(prefix)) - components <- c(prefix, components) - - # build prefix - paste(components, collapse = "/") - - } - - renv_bootstrap_platform_prefix_impl <- function() { - - # if an explicit prefix has been supplied, use it - prefix <- Sys.getenv("RENV_PATHS_PREFIX", unset = NA) - if (!is.na(prefix)) - return(prefix) - - # if the user has requested an automatic prefix, generate it - auto <- Sys.getenv("RENV_PATHS_PREFIX_AUTO", unset = NA) - if (is.na(auto) && getRversion() >= "4.4.0") - auto <- "TRUE" - - if (auto %in% c("TRUE", "True", "true", "1")) - return(renv_bootstrap_platform_prefix_auto()) - - # empty string on failure - "" - - } - - renv_bootstrap_platform_prefix_auto <- function() { - - prefix <- tryCatch(renv_bootstrap_platform_os(), error = identity) - if (inherits(prefix, "error") || prefix %in% "unknown") { - - msg <- paste( - "failed to infer current operating system", - "please file a bug report at https://github.com/rstudio/renv/issues", - sep = "; " - ) - - warning(msg) - - } - - prefix - - } - - renv_bootstrap_platform_os <- function() { - - sysinfo <- Sys.info() - sysname <- sysinfo[["sysname"]] - - # handle Windows + macOS up front - if (sysname == "Windows") - return("windows") - else if (sysname == "Darwin") - return("macos") - - # check for os-release files - for (file in c("/etc/os-release", "/usr/lib/os-release")) - if (file.exists(file)) - return(renv_bootstrap_platform_os_via_os_release(file, sysinfo)) - - # check for redhat-release files - if (file.exists("/etc/redhat-release")) - return(renv_bootstrap_platform_os_via_redhat_release()) - - "unknown" - - } - - renv_bootstrap_platform_os_via_os_release <- function(file, sysinfo) { - - # read /etc/os-release - release <- utils::read.table( - file = file, - sep = "=", - quote = c("\"", "'"), - col.names = c("Key", "Value"), - comment.char = "#", - stringsAsFactors = FALSE - ) - - vars <- as.list(release$Value) - names(vars) <- release$Key - - # get os name - os <- tolower(sysinfo[["sysname"]]) - - # read id - id <- "unknown" - for (field in c("ID", "ID_LIKE")) { - if (field %in% names(vars) && nzchar(vars[[field]])) { - id <- vars[[field]] - break - } - } - - # read version - version <- "unknown" - for (field in c("UBUNTU_CODENAME", "VERSION_CODENAME", "VERSION_ID", "BUILD_ID")) { - if (field %in% names(vars) && nzchar(vars[[field]])) { - version <- vars[[field]] - break - } - } - - # join together - paste(c(os, id, version), collapse = "-") - - } - - renv_bootstrap_platform_os_via_redhat_release <- function() { - - # read /etc/redhat-release - contents <- readLines("/etc/redhat-release", warn = FALSE) - - # infer id - id <- if (grepl("centos", contents, ignore.case = TRUE)) - "centos" - else if (grepl("redhat", contents, ignore.case = TRUE)) - "redhat" - else - "unknown" - - # try to find a version component (very hacky) - version <- "unknown" - - parts <- strsplit(contents, "[[:space:]]")[[1L]] - for (part in parts) { - - nv <- tryCatch(numeric_version(part), error = identity) - if (inherits(nv, "error")) - next - - version <- nv[1, 1] - break - - } - - paste(c("linux", id, version), collapse = "-") - - } - - renv_bootstrap_library_root_name <- function(project) { - - # use project name as-is if requested - asis <- Sys.getenv("RENV_PATHS_LIBRARY_ROOT_ASIS", unset = "FALSE") - if (asis) - return(basename(project)) - - # otherwise, disambiguate based on project's path - id <- substring(renv_bootstrap_hash_text(project), 1L, 8L) - paste(basename(project), id, sep = "-") - - } - - renv_bootstrap_library_root <- function(project) { - - prefix <- renv_bootstrap_profile_prefix() - - path <- Sys.getenv("RENV_PATHS_LIBRARY", unset = NA) - if (!is.na(path)) - return(paste(c(path, prefix), collapse = "/")) - - path <- renv_bootstrap_library_root_impl(project) - if (!is.null(path)) { - name <- renv_bootstrap_library_root_name(project) - return(paste(c(path, prefix, name), collapse = "/")) - } - - renv_bootstrap_paths_renv("library", project = project) - - } - - renv_bootstrap_library_root_impl <- function(project) { - - root <- Sys.getenv("RENV_PATHS_LIBRARY_ROOT", unset = NA) - if (!is.na(root)) - return(root) - - type <- renv_bootstrap_project_type(project) - if (identical(type, "package")) { - userdir <- renv_bootstrap_user_dir() - return(file.path(userdir, "library")) - } - - } - - renv_bootstrap_validate_version <- function(version, description = NULL) { - - # resolve description file - # - # avoid passing lib.loc to `packageDescription()` below, since R will - # use the loaded version of the package by default anyhow. note that - # this function should only be called after 'renv' is loaded - # https://github.com/rstudio/renv/issues/1625 - description <- description %||% packageDescription("renv") - - # check whether requested version 'version' matches loaded version of renv - sha <- attr(version, "sha", exact = TRUE) - valid <- if (!is.null(sha)) - renv_bootstrap_validate_version_dev(sha, description) - else - renv_bootstrap_validate_version_release(version, description) - - if (valid) - return(TRUE) - - # the loaded version of renv doesn't match the requested version; - # give the user instructions on how to proceed - dev <- identical(description[["RemoteType"]], "github") - remote <- if (dev) - paste("rstudio/renv", description[["RemoteSha"]], sep = "@") - else - paste("renv", description[["Version"]], sep = "@") - - # display both loaded version + sha if available - friendly <- renv_bootstrap_version_friendly( - version = description[["Version"]], - sha = if (dev) description[["RemoteSha"]] - ) - - fmt <- heredoc(" - renv %1$s was loaded from project library, but this project is configured to use renv %2$s. - - Use `renv::record(\"%3$s\")` to record renv %1$s in the lockfile. - - Use `renv::restore(packages = \"renv\")` to install renv %2$s into the project library. - ") - catf(fmt, friendly, renv_bootstrap_version_friendly(version), remote) - - FALSE - - } - - renv_bootstrap_validate_version_dev <- function(version, description) { - expected <- description[["RemoteSha"]] - is.character(expected) && startswith(expected, version) - } - - renv_bootstrap_validate_version_release <- function(version, description) { - expected <- description[["Version"]] - is.character(expected) && identical(expected, version) - } - - renv_bootstrap_hash_text <- function(text) { - - hashfile <- tempfile("renv-hash-") - on.exit(unlink(hashfile), add = TRUE) - - writeLines(text, con = hashfile) - tools::md5sum(hashfile) - - } - - renv_bootstrap_load <- function(project, libpath, version) { - - # try to load renv from the project library - if (!requireNamespace("renv", lib.loc = libpath, quietly = TRUE)) - return(FALSE) - - # warn if the version of renv loaded does not match - renv_bootstrap_validate_version(version) - - # execute renv load hooks, if any - hooks <- getHook("renv::autoload") - for (hook in hooks) - if (is.function(hook)) - tryCatch(hook(), error = warnify) - - # load the project - renv::load(project) - - TRUE - - } - - renv_bootstrap_profile_load <- function(project) { - - # if RENV_PROFILE is already set, just use that - profile <- Sys.getenv("RENV_PROFILE", unset = NA) - if (!is.na(profile) && nzchar(profile)) - return(profile) - - # check for a profile file (nothing to do if it doesn't exist) - path <- renv_bootstrap_paths_renv("profile", profile = FALSE, project = project) - if (!file.exists(path)) - return(NULL) - - # read the profile, and set it if it exists - contents <- readLines(path, warn = FALSE) - if (length(contents) == 0L) - return(NULL) - - # set RENV_PROFILE - profile <- contents[[1L]] - if (!profile %in% c("", "default")) - Sys.setenv(RENV_PROFILE = profile) - - profile - - } - - renv_bootstrap_profile_prefix <- function() { - profile <- renv_bootstrap_profile_get() - if (!is.null(profile)) - return(file.path("profiles", profile, "renv")) - } - - renv_bootstrap_profile_get <- function() { - profile <- Sys.getenv("RENV_PROFILE", unset = "") - renv_bootstrap_profile_normalize(profile) - } - - renv_bootstrap_profile_set <- function(profile) { - profile <- renv_bootstrap_profile_normalize(profile) - if (is.null(profile)) - Sys.unsetenv("RENV_PROFILE") - else - Sys.setenv(RENV_PROFILE = profile) - } - - renv_bootstrap_profile_normalize <- function(profile) { - - if (is.null(profile) || profile %in% c("", "default")) - return(NULL) - - profile - - } - - renv_bootstrap_path_absolute <- function(path) { - - substr(path, 1L, 1L) %in% c("~", "/", "\\") || ( - substr(path, 1L, 1L) %in% c(letters, LETTERS) && - substr(path, 2L, 3L) %in% c(":/", ":\\") - ) - - } - - renv_bootstrap_paths_renv <- function(..., profile = TRUE, project = NULL) { - renv <- Sys.getenv("RENV_PATHS_RENV", unset = "renv") - root <- if (renv_bootstrap_path_absolute(renv)) NULL else project - prefix <- if (profile) renv_bootstrap_profile_prefix() - components <- c(root, renv, prefix, ...) - paste(components, collapse = "/") - } - - renv_bootstrap_project_type <- function(path) { - - descpath <- file.path(path, "DESCRIPTION") - if (!file.exists(descpath)) - return("unknown") - - desc <- tryCatch( - read.dcf(descpath, all = TRUE), - error = identity - ) - - if (inherits(desc, "error")) - return("unknown") - - type <- desc$Type - if (!is.null(type)) - return(tolower(type)) - - package <- desc$Package - if (!is.null(package)) - return("package") - - "unknown" - - } - - renv_bootstrap_user_dir <- function() { - dir <- renv_bootstrap_user_dir_impl() - path.expand(chartr("\\", "/", dir)) - } - - renv_bootstrap_user_dir_impl <- function() { - - # use local override if set - override <- getOption("renv.userdir.override") - if (!is.null(override)) - return(override) - - # use R_user_dir if available - tools <- asNamespace("tools") - if (is.function(tools$R_user_dir)) - return(tools$R_user_dir("renv", "cache")) - - # try using our own backfill for older versions of R - envvars <- c("R_USER_CACHE_DIR", "XDG_CACHE_HOME") - for (envvar in envvars) { - root <- Sys.getenv(envvar, unset = NA) - if (!is.na(root)) - return(file.path(root, "R/renv")) - } - - # use platform-specific default fallbacks - if (Sys.info()[["sysname"]] == "Windows") - file.path(Sys.getenv("LOCALAPPDATA"), "R/cache/R/renv") - else if (Sys.info()[["sysname"]] == "Darwin") - "~/Library/Caches/org.R-project.R/R/renv" - else - "~/.cache/R/renv" - - } - - renv_bootstrap_version_friendly <- function(version, shafmt = NULL, sha = NULL) { - sha <- sha %||% attr(version, "sha", exact = TRUE) - parts <- c(version, sprintf(shafmt %||% " [sha: %s]", substring(sha, 1L, 7L))) - paste(parts, collapse = "") - } - - renv_bootstrap_exec <- function(project, libpath, version) { - if (!renv_bootstrap_load(project, libpath, version)) - renv_bootstrap_run(version, libpath) - } - - renv_bootstrap_run <- function(version, libpath) { - - # perform bootstrap - bootstrap(version, libpath) - - # exit early if we're just testing bootstrap - if (!is.na(Sys.getenv("RENV_BOOTSTRAP_INSTALL_ONLY", unset = NA))) - return(TRUE) - - # try again to load - if (requireNamespace("renv", lib.loc = libpath, quietly = TRUE)) { - return(renv::load(project = getwd())) - } - - # failed to download or load renv; warn the user - msg <- c( - "Failed to find an renv installation: the project will not be loaded.", - "Use `renv::activate()` to re-initialize the project." - ) - - warning(paste(msg, collapse = "\n"), call. = FALSE) - - } - - renv_json_read <- function(file = NULL, text = NULL) { - - jlerr <- NULL - - # if jsonlite is loaded, use that instead - if ("jsonlite" %in% loadedNamespaces()) { - - json <- tryCatch(renv_json_read_jsonlite(file, text), error = identity) - if (!inherits(json, "error")) - return(json) - - jlerr <- json - - } - - # otherwise, fall back to the default JSON reader - json <- tryCatch(renv_json_read_default(file, text), error = identity) - if (!inherits(json, "error")) - return(json) - - # report an error - if (!is.null(jlerr)) - stop(jlerr) - else - stop(json) - - } - - renv_json_read_jsonlite <- function(file = NULL, text = NULL) { - text <- paste(text %||% readLines(file, warn = FALSE), collapse = "\n") - jsonlite::fromJSON(txt = text, simplifyVector = FALSE) - } - - renv_json_read_default <- function(file = NULL, text = NULL) { - - # find strings in the JSON - text <- paste(text %||% readLines(file, warn = FALSE), collapse = "\n") - pattern <- '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]' - locs <- gregexpr(pattern, text, perl = TRUE)[[1]] - - # if any are found, replace them with placeholders - replaced <- text - strings <- character() - replacements <- character() - - if (!identical(c(locs), -1L)) { - - # get the string values - starts <- locs - ends <- locs + attr(locs, "match.length") - 1L - strings <- substring(text, starts, ends) - - # only keep those requiring escaping - strings <- grep("[[\\]{}:]", strings, perl = TRUE, value = TRUE) - - # compute replacements - replacements <- sprintf('"\032%i\032"', seq_along(strings)) - - # replace the strings - mapply(function(string, replacement) { - replaced <<- sub(string, replacement, replaced, fixed = TRUE) - }, strings, replacements) - - } - - # transform the JSON into something the R parser understands - transformed <- replaced - transformed <- gsub("{}", "`names<-`(list(), character())", transformed, fixed = TRUE) - transformed <- gsub("[[{]", "list(", transformed, perl = TRUE) - transformed <- gsub("[]}]", ")", transformed, perl = TRUE) - transformed <- gsub(":", "=", transformed, fixed = TRUE) - text <- paste(transformed, collapse = "\n") - - # parse it - json <- parse(text = text, keep.source = FALSE, srcfile = NULL)[[1L]] - - # construct map between source strings, replaced strings - map <- as.character(parse(text = strings)) - names(map) <- as.character(parse(text = replacements)) - - # convert to list - map <- as.list(map) - - # remap strings in object - remapped <- renv_json_read_remap(json, map) - - # evaluate - eval(remapped, envir = baseenv()) - - } - - renv_json_read_remap <- function(json, map) { - - # fix names - if (!is.null(names(json))) { - lhs <- match(names(json), names(map), nomatch = 0L) - rhs <- match(names(map), names(json), nomatch = 0L) - names(json)[rhs] <- map[lhs] - } - - # fix values - if (is.character(json)) - return(map[[json]] %||% json) - - # handle true, false, null - if (is.name(json)) { - text <- as.character(json) - if (text == "true") - return(TRUE) - else if (text == "false") - return(FALSE) - else if (text == "null") - return(NULL) - } - - # recurse - if (is.recursive(json)) { - for (i in seq_along(json)) { - json[i] <- list(renv_json_read_remap(json[[i]], map)) - } - } - - json - - } - - # load the renv profile, if any - renv_bootstrap_profile_load(project) - - # construct path to library root - root <- renv_bootstrap_library_root(project) - - # construct library prefix for platform - prefix <- renv_bootstrap_platform_prefix() - - # construct full libpath - libpath <- file.path(root, prefix) - - # run bootstrap code - renv_bootstrap_exec(project, libpath, version) - - invisible() - -}) diff --git a/renv/settings.json b/renv/settings.json deleted file mode 100644 index 0470d923..00000000 --- a/renv/settings.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "bioconductor.version": "3.19", - "external.libraries": [], - "ignored.packages": [], - "package.dependency.fields": [ - "Imports", - "Depends", - "LinkingTo" - ], - "ppm.enabled": true, - "ppm.ignored.urls": [], - "r.version": "4.4.0", - "snapshot.type": "implicit", - "use.cache": true, - "vcs.ignore.cellar": true, - "vcs.ignore.library": true, - "vcs.ignore.local": true, - "vcs.manage.ignores": true -} From 2880ab9c87dd9b0fe5296aa8b52c9c4a9d57d95e Mon Sep 17 00:00:00 2001 From: "Stephanie J. Spielman" Date: Wed, 21 Jan 2026 09:37:17 -0500 Subject: [PATCH 040/148] bump renv --- renv.lock | 14535 +++++++++++++++++++++++++++++++++++++++++++ renv/.gitignore | 7 + renv/activate.R | 1403 +++++ renv/settings.json | 20 + 4 files changed, 15965 insertions(+) create mode 100644 renv.lock create mode 100644 renv/.gitignore create mode 100644 renv/activate.R create mode 100644 renv/settings.json diff --git a/renv.lock b/renv.lock new file mode 100644 index 00000000..efe55106 --- /dev/null +++ b/renv.lock @@ -0,0 +1,14535 @@ +{ + "R": { + "Version": "4.5.2", + "Repositories": [ + { + "Name": "CRAN", + "URL": "https://cloud.r-project.org" + }, + { + "Name": "BioCsoft", + "URL": "https://bioconductor.org/packages/3.22/bioc" + }, + { + "Name": "BioCann", + "URL": "https://bioconductor.org/packages/3.22/data/annotation" + }, + { + "Name": "BioCexp", + "URL": "https://bioconductor.org/packages/3.22/data/experiment" + }, + { + "Name": "BioCworkflows", + "URL": "https://bioconductor.org/packages/3.22/workflows" + }, + { + "Name": "BioCbooks", + "URL": "https://bioconductor.org/packages/3.22/books" + } + ] + }, + "Bioconductor": { + "Version": "3.22" + }, + "Packages": { + "ALL": { + "Package": "ALL", + "Version": "1.52.0", + "Source": "Bioconductor", + "Title": "A data package", + "Date": "2009-07-22", + "Author": "Xiaochun Li", + "Description": "Data of T- and B-cell Acute Lymphocytic Leukemia from the Ritz Laboratory at the DFCI (includes Apr 2004 versions)", + "Maintainer": "Robert Gentleman ", + "License": "Artistic-2.0", + "Depends": [ + "R (>= 2.10)", + "Biobase (>= 2.5.5)" + ], + "Suggests": [ + "rpart" + ], + "biocViews": "ExperimentData, CancerData, LeukemiaCancerData", + "git_url": "https://git.bioconductor.org/packages/ALL", + "git_branch": "RELEASE_3_22", + "git_last_commit": "0bc53bb", + "git_last_commit_date": "2025-10-29", + "Repository": "Bioconductor 3.22", + "NeedsCompilation": "no" + }, + "AUCell": { + "Package": "AUCell", + "Version": "1.32.0", + "Source": "Bioconductor", + "Type": "Package", + "Title": "AUCell: Analysis of 'gene set' activity in single-cell RNA-seq data (e.g. identify cells with specific gene signatures)", + "Date": "2024-03-09", + "Author": "Sara Aibar, Stein Aerts. Laboratory of Computational Biology. VIB-KU Leuven Center for Brain & Disease Research. Leuven, Belgium.", + "Maintainer": "Gert Hulselmans ", + "Description": "AUCell allows to identify cells with active gene sets (e.g. signatures, gene modules...) in single-cell RNA-seq data. AUCell uses the \"Area Under the Curve\" (AUC) to calculate whether a critical subset of the input gene set is enriched within the expressed genes for each cell. The distribution of AUC scores across all the cells allows exploring the relative expression of the signature. Since the scoring method is ranking-based, AUCell is independent of the gene expression units and the normalization procedure. In addition, since the cells are evaluated individually, it can easily be applied to bigger datasets, subsetting the expression matrix if needed.", + "URL": "http://scenic.aertslab.org", + "Imports": [ + "DelayedArray", + "DelayedMatrixStats", + "data.table", + "graphics", + "grDevices", + "GSEABase", + "Matrix", + "methods", + "mixtools", + "R.utils", + "stats", + "SummarizedExperiment", + "BiocGenerics", + "utils" + ], + "Enhances": [ + "doMC", + "doRNG", + "doParallel", + "foreach" + ], + "Suggests": [ + "Biobase", + "BiocStyle", + "doSNOW", + "dynamicTreeCut", + "DT", + "GEOquery", + "knitr", + "NMF", + "plyr", + "R2HTML", + "rmarkdown", + "reshape2", + "plotly", + "Rtsne", + "testthat", + "zoo" + ], + "License": "GPL-3", + "biocViews": "SingleCell, GeneSetEnrichment, Transcriptomics, Transcription, GeneExpression, WorkflowStep, Normalization", + "VignetteBuilder": "knitr", + "RoxygenNote": "7.2.0", + "git_url": "https://git.bioconductor.org/packages/AUCell", + "git_branch": "RELEASE_3_22", + "git_last_commit": "a57f250", + "git_last_commit_date": "2025-10-29", + "Repository": "Bioconductor 3.22", + "NeedsCompilation": "no" + }, + "AnnotationDbi": { + "Package": "AnnotationDbi", + "Version": "1.72.0", + "Source": "Bioconductor", + "Title": "Manipulation of SQLite-based annotations in Bioconductor", + "Description": "Implements a user-friendly interface for querying SQLite-based annotation data packages.", + "biocViews": "Annotation, Microarray, Sequencing, GenomeAnnotation", + "URL": "https://bioconductor.org/packages/AnnotationDbi", + "Video": "https://www.youtube.com/watch?v=8qvGNTVz3Ik", + "BugReports": "https://github.com/Bioconductor/AnnotationDbi/issues", + "License": "Artistic-2.0", + "Encoding": "UTF-8", + "Author": "Hervé Pagès, Marc Carlson, Seth Falcon, Nianhua Li", + "Maintainer": "Bioconductor Package Maintainer ", + "Depends": [ + "R (>= 2.7.0)", + "methods", + "stats4", + "BiocGenerics (>= 0.29.2)", + "Biobase (>= 1.17.0)", + "IRanges" + ], + "Imports": [ + "DBI", + "RSQLite", + "S4Vectors (>= 0.9.25)", + "stats", + "KEGGREST" + ], + "Suggests": [ + "utils", + "hgu95av2.db", + "GO.db", + "org.Sc.sgd.db", + "org.At.tair.db", + "RUnit", + "TxDb.Hsapiens.UCSC.hg19.knownGene", + "org.Hs.eg.db", + "reactome.db", + "AnnotationForge", + "graph", + "EnsDb.Hsapiens.v75", + "BiocStyle", + "knitr" + ], + "VignetteBuilder": "knitr", + "Collate": "00RTobjs.R AllGenerics.R AllClasses.R unlist2.R utils.R SQL.R FlatBimap.R AnnDbObj-lowAPI.R Bimap.R GOTerms.R BimapFormatting.R Bimap-envirAPI.R flatten.R methods-AnnotationDb.R methods-SQLiteConnection.R methods-geneCentricDbs.R methods-geneCentricDbs-keys.R methods-ReactomeDb.R methods-OrthologyDb.R loadDb.R createAnnObjs-utils.R createAnnObjs.NCBIORG_DBs.R createAnnObjs.NCBICHIP_DBs.R createAnnObjs.ORGANISM_DB.R createAnnObjs.YEASTCHIP_DB.R createAnnObjs.COELICOLOR_DB.R createAnnObjs.ARABIDOPSISCHIP_DB.R createAnnObjs.MALARIA_DB.R createAnnObjs.YEAST_DB.R createAnnObjs.YEASTNCBI_DB.R createAnnObjs.ARABIDOPSIS_DB.R createAnnObjs.GO_DB.R createAnnObjs.KEGG_DB.R createAnnObjs.PFAM_DB.R AnnDbPkg-templates-common.R AnnDbPkg-checker.R print.probetable.R makeMap.R inpIDMapper.R test_AnnotationDbi_package.R", + "git_url": "https://git.bioconductor.org/packages/AnnotationDbi", + "git_branch": "RELEASE_3_22", + "git_last_commit": "ffdaf5d", + "git_last_commit_date": "2025-10-29", + "Repository": "Bioconductor 3.22", + "NeedsCompilation": "no" + }, + "AnnotationFilter": { + "Package": "AnnotationFilter", + "Version": "1.34.0", + "Source": "Bioconductor", + "Title": "Facilities for Filtering Bioconductor Annotation Resources", + "Authors@R": "c( person(\"Martin\", \"Morgan\", email = \"martin.morgan@roswellpark.org\", role = \"aut\"), person(\"Johannes\", \"Rainer\", email = \"johannes.rainer@eurac.edu\", role = \"aut\"), person(\"Joachim\", \"Bargsten\", email = \"jw@bargsten.org\", role = \"ctb\"), person(\"Daniel\", \"Van Twisk\", email = \"daniel.vantwisk@roswellpark.org\", role = \"ctb\"), person(\"Bioconductor Package\", \"Maintainer\", email=\"maintainer@bioconductor.org\", role = \"cre\"))", + "URL": "https://github.com/Bioconductor/AnnotationFilter", + "BugReports": "https://github.com/Bioconductor/AnnotationFilter/issues", + "Description": "This package provides class and other infrastructure to implement filters for manipulating Bioconductor annotation resources. The filters will be used by ensembldb, Organism.dplyr, and other packages.", + "Depends": [ + "R (>= 3.4.0)" + ], + "Imports": [ + "utils", + "methods", + "GenomicRanges", + "lazyeval" + ], + "Suggests": [ + "BiocStyle", + "knitr", + "testthat", + "RSQLite", + "org.Hs.eg.db", + "rmarkdown" + ], + "VignetteBuilder": "knitr", + "License": "Artistic-2.0", + "biocViews": "Annotation, Infrastructure, Software", + "Encoding": "UTF-8", + "RoxygenNote": "6.0.1", + "Collate": "'AllGenerics.R' 'AnnotationFilter.R' 'AnnotationFilterList.R' 'translate-utils.R'", + "git_url": "https://git.bioconductor.org/packages/AnnotationFilter", + "git_branch": "RELEASE_3_22", + "git_last_commit": "730457f", + "git_last_commit_date": "2025-10-29", + "Repository": "Bioconductor 3.22", + "NeedsCompilation": "no", + "Author": "Martin Morgan [aut], Johannes Rainer [aut], Joachim Bargsten [ctb], Daniel Van Twisk [ctb], Bioconductor Package Maintainer [cre]", + "Maintainer": "Bioconductor Package Maintainer " + }, + "AnnotationHub": { + "Package": "AnnotationHub", + "Version": "4.0.0", + "Source": "Bioconductor", + "Type": "Package", + "Title": "Client to access AnnotationHub resources", + "Authors@R": "c(person(\"Bioconductor Package\", \"Maintainer\", email=\"maintainer@bioconductor.org\", role=\"cre\"), person(\"Martin\", \"Morgan\", role=\"aut\"), person(\"Marc\", \"Carlson\", role=\"ctb\"), person(\"Dan\", \"Tenenbaum\", role=\"ctb\"), person(\"Sonali\", \"Arora\", role=\"ctb\"), person(\"Valerie\", \"Oberchain\", role=\"ctb\"), person(\"Kayla\", \"Morrell\", role=\"ctb\"), person(\"Lori\", \"Shepherd\", role=\"aut\"))", + "biocViews": "Infrastructure, DataImport, GUI, ThirdPartyClient", + "Description": "This package provides a client for the Bioconductor AnnotationHub web resource. The AnnotationHub web resource provides a central location where genomic files (e.g., VCF, bed, wig) and other resources from standard locations (e.g., UCSC, Ensembl) can be discovered. The resource includes metadata about each resource, e.g., a textual description, tags, and date of modification. The client creates and manages a local cache of files retrieved by the user, helping with quick and reproducible access.", + "License": "Artistic-2.0", + "Depends": [ + "BiocGenerics (>= 0.15.10)", + "BiocFileCache (>= 2.99.3)" + ], + "Imports": [ + "utils", + "methods", + "grDevices", + "RSQLite", + "BiocManager", + "BiocVersion", + "curl", + "rappdirs", + "AnnotationDbi (>= 1.31.19)", + "S4Vectors", + "httr2", + "yaml", + "dplyr", + "BiocBaseUtils" + ], + "Suggests": [ + "IRanges", + "Seqinfo", + "GenomeInfoDb", + "GenomicRanges", + "VariantAnnotation", + "Rsamtools", + "rtracklayer", + "BiocStyle", + "knitr", + "AnnotationForge", + "rBiopaxParser", + "RUnit", + "txdbmaker", + "MSnbase", + "mzR", + "Biostrings", + "CompoundDb", + "keras", + "ensembldb", + "SummarizedExperiment", + "ExperimentHub", + "gdsfmt", + "rmarkdown", + "HubPub" + ], + "Enhances": [ + "AnnotationHubData" + ], + "Collate": "AnnotationHubOption.R AllGenerics.R Hub-class.R db-utils.R AnnotationHub-class.R AnnotationHubResource-class.R BEDResource-class.R ProteomicsResource-class.R EpigenomeResource-class.R EnsDbResource-class.R utilities.R sql-utils.R Hub-utils.R cache-utils.R zzz.R", + "VignetteBuilder": "knitr", + "BugReports": "https://github.com/Bioconductor/AnnotationHub/issues", + "NeedsCompilation": "yes", + "RoxygenNote": "7.3.2", + "git_url": "https://git.bioconductor.org/packages/AnnotationHub", + "git_branch": "RELEASE_3_22", + "git_last_commit": "e27e804", + "git_last_commit_date": "2025-10-29", + "Repository": "Bioconductor 3.22", + "Author": "Bioconductor Package Maintainer [cre], Martin Morgan [aut], Marc Carlson [ctb], Dan Tenenbaum [ctb], Sonali Arora [ctb], Valerie Oberchain [ctb], Kayla Morrell [ctb], Lori Shepherd [aut]", + "Maintainer": "Bioconductor Package Maintainer " + }, + "BH": { + "Package": "BH", + "Version": "1.90.0-1", + "Source": "Repository", + "Type": "Package", + "Title": "Boost C++ Header Files", + "Date": "2025-12-13", + "Authors@R": "c(person(\"Dirk\", \"Eddelbuettel\", role = c(\"aut\", \"cre\"), email = \"edd@debian.org\", comment = c(ORCID = \"0000-0001-6419-907X\")), person(\"John W.\", \"Emerson\", role = \"aut\"), person(\"Michael J.\", \"Kane\", role = \"aut\", comment = c(ORCID = \"0000-0003-1899-6662\")))", + "Description": "Boost provides free peer-reviewed portable C++ source libraries. A large part of Boost is provided as C++ template code which is resolved entirely at compile-time without linking. This package aims to provide the most useful subset of Boost libraries for template use among CRAN packages. By placing these libraries in this package, we offer a more efficient distribution system for CRAN as replication of this code in the sources of other packages is avoided. As of release 1.84.0-0, the following Boost libraries are included: 'accumulators' 'algorithm' 'align' 'any' 'atomic' 'beast' 'bimap' 'bind' 'circular_buffer' 'compute' 'concept' 'config' 'container' 'date_time' 'detail' 'dynamic_bitset' 'exception' 'flyweight' 'foreach' 'functional' 'fusion' 'geometry' 'graph' 'heap' 'icl' 'integer' 'interprocess' 'intrusive' 'io' 'iostreams' 'iterator' 'lambda2' 'math' 'move' 'mp11' 'mpl' 'multiprecision' 'numeric' 'pending' 'phoenix' 'polygon' 'preprocessor' 'process' 'propery_tree' 'qvm' 'random' 'range' 'scope_exit' 'smart_ptr' 'sort' 'spirit' 'tuple' 'type_traits' 'typeof' 'unordered' 'url' 'utility' 'uuid'.", + "License": "BSL-1.0", + "URL": "https://github.com/eddelbuettel/bh, https://dirk.eddelbuettel.com/code/bh.html", + "BugReports": "https://github.com/eddelbuettel/bh/issues", + "NeedsCompilation": "no", + "Author": "Dirk Eddelbuettel [aut, cre] (ORCID: ), John W. Emerson [aut], Michael J. Kane [aut] (ORCID: )", + "Maintainer": "Dirk Eddelbuettel ", + "Repository": "CRAN" + }, + "Biobase": { + "Package": "Biobase", + "Version": "2.70.0", + "Source": "Bioconductor", + "Title": "Biobase: Base functions for Bioconductor", + "Description": "Functions that are needed by many other packages or which replace R functions.", + "biocViews": "Infrastructure", + "URL": "https://bioconductor.org/packages/Biobase", + "BugReports": "https://github.com/Bioconductor/Biobase/issues", + "License": "Artistic-2.0", + "Authors@R": "c( person(\"R.\", \"Gentleman\", role=\"aut\"), person(\"V.\", \"Carey\", role = \"aut\"), person(\"M.\", \"Morgan\", role=\"aut\"), person(\"S.\", \"Falcon\", role=\"aut\"), person(\"Haleema\", \"Khan\", role = \"ctb\", comment = \"'esApply' and 'BiobaseDevelopment' vignette translation from Sweave to Rmarkdown / HTML\" ), person(\"Bioconductor Package Maintainer\", role = \"cre\", email = \"maintainer@bioconductor.org\" ))", + "Suggests": [ + "tools", + "tkWidgets", + "ALL", + "RUnit", + "golubEsets", + "BiocStyle", + "knitr", + "limma" + ], + "Depends": [ + "R (>= 2.10)", + "BiocGenerics (>= 0.27.1)", + "utils" + ], + "Imports": [ + "methods" + ], + "VignetteBuilder": "knitr", + "LazyLoad": "yes", + "Collate": "tools.R strings.R environment.R vignettes.R packages.R AllGenerics.R VersionsClass.R VersionedClasses.R methods-VersionsNull.R methods-VersionedClass.R DataClasses.R methods-aggregator.R methods-container.R methods-MIAxE.R methods-MIAME.R methods-AssayData.R methods-AnnotatedDataFrame.R methods-eSet.R methods-ExpressionSet.R methods-MultiSet.R methods-SnpSet.R methods-NChannelSet.R anyMissing.R rowOp-methods.R updateObjectTo.R methods-ScalarObject.R zzz.R", + "git_url": "https://git.bioconductor.org/packages/Biobase", + "git_branch": "RELEASE_3_22", + "git_last_commit": "9964e15", + "git_last_commit_date": "2025-10-29", + "Repository": "Bioconductor 3.22", + "NeedsCompilation": "yes", + "Author": "R. Gentleman [aut], V. Carey [aut], M. Morgan [aut], S. Falcon [aut], Haleema Khan [ctb] ('esApply' and 'BiobaseDevelopment' vignette translation from Sweave to Rmarkdown / HTML), Bioconductor Package Maintainer [cre]", + "Maintainer": "Bioconductor Package Maintainer " + }, + "BiocBaseUtils": { + "Package": "BiocBaseUtils", + "Version": "1.12.0", + "Source": "Bioconductor", + "Title": "General utility functions for developing Bioconductor packages", + "Authors@R": "c( person(\"Marcel\", \"Ramos\", , \"marcel.ramos@sph.cuny.edu\", c(\"aut\", \"cre\"), c(ORCID = \"0000-0002-3242-0582\") ), person(\"Martin\", \"Morgan\", , \"martin.morgan@roswellpark.org\", \"ctb\" ), person(\"Hervé\", \"Pagès\", , \"hpages.on.github@gmail.com\", \"ctb\") )", + "Description": "The package provides utility functions related to package development. These include functions that replace slots, and selectors for show methods. It aims to coalesce the various helper functions often re-used throughout the Bioconductor ecosystem.", + "Imports": [ + "methods", + "utils" + ], + "Depends": [ + "R (>= 4.2.0)" + ], + "Suggests": [ + "knitr", + "rmarkdown", + "BiocStyle", + "tinytest" + ], + "License": "Artistic-2.0", + "Encoding": "UTF-8", + "biocViews": "Software, Infrastructure", + "BugReports": "https://www.github.com/Bioconductor/BiocBaseUtils/issues", + "Roxygen": "list(markdown = TRUE)", + "RoxygenNote": "7.3.2", + "VignetteBuilder": "knitr", + "Date": "2025-07-14", + "git_url": "https://git.bioconductor.org/packages/BiocBaseUtils", + "git_branch": "RELEASE_3_22", + "git_last_commit": "756163a", + "git_last_commit_date": "2025-10-29", + "Repository": "Bioconductor 3.22", + "NeedsCompilation": "no", + "Author": "Marcel Ramos [aut, cre] (ORCID: ), Martin Morgan [ctb], Hervé Pagès [ctb]", + "Maintainer": "Marcel Ramos " + }, + "BiocFileCache": { + "Package": "BiocFileCache", + "Version": "3.0.0", + "Source": "Bioconductor", + "Title": "Manage Files Across Sessions", + "Authors@R": "c(person(\"Lori\", \"Shepherd\", email = \"lori.shepherd@roswellpark.org\", role = c(\"aut\", \"cre\")), person(\"Martin\", \"Morgan\", email = \"martin.morgan@roswellpark.org\", role = \"aut\"))", + "Description": "This package creates a persistent on-disk cache of files that the user can add, update, and retrieve. It is useful for managing resources (such as custom Txdb objects) that are costly or difficult to create, web resources, and data files used across sessions.", + "Depends": [ + "R (>= 3.4.0)", + "dbplyr (>= 1.0.0)" + ], + "Imports": [ + "methods", + "stats", + "utils", + "dplyr", + "RSQLite", + "DBI", + "filelock", + "curl", + "httr2" + ], + "BugReports": "https://github.com/Bioconductor/BiocFileCache/issues", + "DevelopmentURL": "https://github.com/Bioconductor/BiocFileCache", + "License": "Artistic-2.0", + "Encoding": "UTF-8", + "RoxygenNote": "7.3.2", + "biocViews": "DataImport", + "VignetteBuilder": "knitr", + "Suggests": [ + "testthat", + "knitr", + "BiocStyle", + "rmarkdown", + "rtracklayer" + ], + "git_url": "https://git.bioconductor.org/packages/BiocFileCache", + "git_branch": "RELEASE_3_22", + "git_last_commit": "81fd6e0", + "git_last_commit_date": "2025-10-29", + "Repository": "Bioconductor 3.22", + "NeedsCompilation": "no", + "Author": "Lori Shepherd [aut, cre], Martin Morgan [aut]", + "Maintainer": "Lori Shepherd " + }, + "BiocGenerics": { + "Package": "BiocGenerics", + "Version": "0.56.0", + "Source": "Bioconductor", + "Title": "S4 generic functions used in Bioconductor", + "Description": "The package defines many S4 generic functions used in Bioconductor.", + "biocViews": "Infrastructure", + "URL": "https://bioconductor.org/packages/BiocGenerics", + "BugReports": "https://github.com/Bioconductor/BiocGenerics/issues", + "License": "Artistic-2.0", + "Encoding": "UTF-8", + "Authors@R": "c( person(\"The Bioconductor Dev Team\", role=\"aut\"), person(\"Hervé\", \"Pagès\", role=c(\"aut\", \"cre\"), email=\"hpages.on.github@gmail.com\", comment=c(ORCID=\"0009-0002-8272-4522\")), person(\"Laurent\", \"Gatto\", role=\"ctb\", email=\"laurent.gatto@uclouvain.be\", comment=c(ORCID=\"0000-0002-1520-2268\")), person(\"Nathaniel\", \"Hayden\", role=\"ctb\"), person(\"James\", \"Hester\", role=\"ctb\"), person(\"Wolfgang\", \"Huber\", role=\"ctb\"), person(\"Michael\", \"Lawrence\", role=\"ctb\"), person(\"Martin\", \"Morgan\", role=\"ctb\", email=\"mtmorgan.xyz@gmail.com\", comment=c(ORCID=\"0000-0002-5874-8148\")), person(\"Valerie\", \"Obenchain\", role=\"ctb\"))", + "Depends": [ + "R (>= 4.0.0)", + "methods", + "utils", + "graphics", + "stats", + "generics" + ], + "Imports": [ + "methods", + "utils", + "graphics", + "stats" + ], + "Suggests": [ + "Biobase", + "S4Vectors", + "IRanges", + "S4Arrays", + "SparseArray", + "DelayedArray", + "HDF5Array", + "GenomicRanges", + "pwalign", + "Rsamtools", + "AnnotationDbi", + "affy", + "affyPLM", + "DESeq2", + "flowClust", + "MSnbase", + "annotate", + "MultiAssayExperiment", + "RUnit" + ], + "Collate": "S3-classes-as-S4-classes.R utils.R normarg-utils.R replaceSlots.R aperm.R append.R as.data.frame.R as.list.R as.vector.R cbind.R do.call.R duplicated.R eval.R Extremes.R format.R funprog.R get.R grep.R is.unsorted.R lapply.R mapply.R match.R mean.R nrow.R order.R paste.R rank.R rep.R row_colnames.R saveRDS.R sort.R start.R subset.R t.R table.R tapply.R unique.R unlist.R unsplit.R which.R which.min.R relist.R boxplot.R image.R density.R IQR.R mad.R residuals.R var.R weights.R xtabs.R setops.R annotation.R combine.R containsOutOfMemoryData.R dbconn.R dge.R dims.R fileName.R longForm.R normalize.R Ontology.R organism_species.R paste2.R path.R plotMA.R plotPCA.R score.R strand.R toTable.R type.R updateObject.R testPackage.R zzz.R", + "git_url": "https://git.bioconductor.org/packages/BiocGenerics", + "git_branch": "RELEASE_3_22", + "git_last_commit": "16cf16d", + "git_last_commit_date": "2025-10-29", + "Repository": "Bioconductor 3.22", + "NeedsCompilation": "no", + "Author": "The Bioconductor Dev Team [aut], Hervé Pagès [aut, cre] (ORCID: ), Laurent Gatto [ctb] (ORCID: ), Nathaniel Hayden [ctb], James Hester [ctb], Wolfgang Huber [ctb], Michael Lawrence [ctb], Martin Morgan [ctb] (ORCID: ), Valerie Obenchain [ctb]", + "Maintainer": "Hervé Pagès " + }, + "BiocIO": { + "Package": "BiocIO", + "Version": "1.20.0", + "Source": "Bioconductor", + "Title": "Standard Input and Output for Bioconductor Packages", + "Authors@R": "c( person(\"Martin\", \"Morgan\", role = \"aut\"), person(\"Michael\", \"Lawrence\", role = \"aut\"), person(\"Daniel\", \"Van Twisk\", role = \"aut\"), person(\"Marcel\", \"Ramos\", , \"marcel.ramos@sph.cuny.edu\", \"cre\", c(ORCID = \"0000-0002-3242-0582\") ))", + "Description": "The `BiocIO` package contains high-level abstract classes and generics used by developers to build IO funcionality within the Bioconductor suite of packages. Implements `import()` and `export()` standard generics for importing and exporting biological data formats. `import()` supports whole-file as well as chunk-wise iterative import. The `import()` interface optionally provides a standard mechanism for 'lazy' access via `filter()` (on row or element-like components of the file resource), `select()` (on column-like components of the file resource) and `collect()`. The `import()` interface optionally provides transparent access to remote (e.g. via https) as well as local access. Developers can register a file extension, e.g., `.loom` for dispatch from character-based URIs to specific `import()` / `export()` methods based on classes representing file types, e.g., `LoomFile()`.", + "License": "Artistic-2.0", + "Encoding": "UTF-8", + "Roxygen": "list(markdown = TRUE)", + "RoxygenNote": "7.3.2", + "Depends": [ + "R (>= 4.3.0)" + ], + "Imports": [ + "BiocGenerics", + "S4Vectors", + "methods", + "tools" + ], + "Suggests": [ + "testthat", + "knitr", + "rmarkdown", + "BiocStyle" + ], + "Collate": "'BiocFile.R' 'import_export.R' 'compression.R' 'utils.R'", + "VignetteBuilder": "knitr", + "biocViews": "Annotation,DataImport", + "BugReports": "https://github.com/Bioconductor/BiocIO/issues", + "Date": "2024-11-21", + "git_url": "https://git.bioconductor.org/packages/BiocIO", + "git_branch": "RELEASE_3_22", + "git_last_commit": "2810f6a", + "git_last_commit_date": "2025-10-29", + "Repository": "Bioconductor 3.22", + "NeedsCompilation": "no", + "Author": "Martin Morgan [aut], Michael Lawrence [aut], Daniel Van Twisk [aut], Marcel Ramos [cre] (ORCID: )", + "Maintainer": "Marcel Ramos " + }, + "BiocManager": { + "Package": "BiocManager", + "Version": "1.30.27", + "Source": "Repository", + "Title": "Access the Bioconductor Project Package Repository", + "Description": "A convenient tool to install and update Bioconductor packages.", + "Authors@R": "c( person(\"Martin\", \"Morgan\", email = \"martin.morgan@roswellpark.org\", role = \"aut\", comment = c(ORCID = \"0000-0002-5874-8148\")), person(\"Marcel\", \"Ramos\", email = \"marcel.ramos@sph.cuny.edu\", role = c(\"aut\", \"cre\"), comment = c(ORCID = \"0000-0002-3242-0582\")))", + "Imports": [ + "utils" + ], + "Suggests": [ + "BiocVersion", + "BiocStyle", + "remotes", + "rmarkdown", + "testthat", + "withr", + "curl", + "knitr" + ], + "URL": "https://bioconductor.github.io/BiocManager/", + "BugReports": "https://github.com/Bioconductor/BiocManager/issues", + "VignetteBuilder": "knitr", + "License": "Artistic-2.0", + "Encoding": "UTF-8", + "RoxygenNote": "7.3.2", + "NeedsCompilation": "no", + "Author": "Martin Morgan [aut] (ORCID: ), Marcel Ramos [aut, cre] (ORCID: )", + "Maintainer": "Marcel Ramos ", + "Repository": "CRAN" + }, + "BiocNeighbors": { + "Package": "BiocNeighbors", + "Version": "2.4.0", + "Source": "Bioconductor", + "Date": "2025-05-22", + "Title": "Nearest Neighbor Detection for Bioconductor Packages", + "Authors@R": "c(person(\"Aaron\", \"Lun\", role=c(\"aut\", \"cre\", \"cph\"), email=\"infinite.monkeys.with.keyboards@gmail.com\"))", + "Imports": [ + "Rcpp", + "methods" + ], + "Suggests": [ + "BiocParallel", + "testthat", + "BiocStyle", + "knitr", + "rmarkdown" + ], + "biocViews": "Clustering, Classification", + "Description": "Implements exact and approximate methods for nearest neighbor detection, in a framework that allows them to be easily switched within Bioconductor packages or workflows. Exact searches can be performed using the k-means for k-nearest neighbors algorithm or with vantage point trees. Approximate searches can be performed using the Annoy or HNSW libraries. Searching on either Euclidean or Manhattan distances is supported. Parallelization is achieved for all methods by using BiocParallel. Functions are also provided to search for all neighbors within a given distance.", + "License": "GPL-3", + "LinkingTo": [ + "Rcpp", + "assorthead" + ], + "VignetteBuilder": "knitr", + "SystemRequirements": "C++17", + "RoxygenNote": "7.3.2", + "Encoding": "UTF-8", + "git_url": "https://git.bioconductor.org/packages/BiocNeighbors", + "git_branch": "RELEASE_3_22", + "git_last_commit": "c2ff286", + "git_last_commit_date": "2025-10-29", + "Repository": "Bioconductor 3.22", + "NeedsCompilation": "yes", + "Author": "Aaron Lun [aut, cre, cph]", + "Maintainer": "Aaron Lun " + }, + "BiocParallel": { + "Package": "BiocParallel", + "Version": "1.44.0", + "Source": "Bioconductor", + "Type": "Package", + "Title": "Bioconductor facilities for parallel evaluation", + "Authors@R": "c( person(\"Jiefei\", \"Wang\", email = \"jiefei0804@gmail.com\", role = c(\"aut\", \"cre\")), person(\"Martin\", \"Morgan\", email = \"mtmorgan.bioc@gmail.com\", role=\"aut\"), person(\"Valerie\", \"Obenchain\", role=\"aut\"), person(\"Michel\", \"Lang\", email=\"michellang@gmail.com\", role=\"aut\"), person(\"Ryan\", \"Thompson\", email=\"rct@thompsonclan.org\", role=\"aut\"), person(\"Nitesh\", \"Turaga\", role=\"aut\"), person(\"Aaron\", \"Lun\", role = \"ctb\"), person(\"Henrik\", \"Bengtsson\", role = \"ctb\"), person(\"Madelyn\", \"Carlson\", role = \"ctb\", comment = \"Translated 'Random Numbers' vignette from Sweave to RMarkdown / HTML.\" ), person(\"Phylis\", \"Atieno\", role = \"ctb\", comment = \"Translated 'Introduction to BiocParallel' vignette from Sweave to Rmarkdown / HTML.\" ), person( \"Sergio\", \"Oller\", role = \"ctb\", comment = c( \"Improved bpmapply() efficiency.\", \"ORCID\" = \"0000-0002-8994-1549\" ) ))", + "Description": "This package provides modified versions and novel implementation of functions for parallel evaluation, tailored to use with Bioconductor objects.", + "URL": "https://github.com/Bioconductor/BiocParallel", + "BugReports": "https://github.com/Bioconductor/BiocParallel/issues", + "biocViews": "Infrastructure", + "License": "GPL-2 | GPL-3 | BSL-1.0", + "SystemRequirements": "C++11", + "Depends": [ + "methods", + "R (>= 4.1.0)" + ], + "Imports": [ + "stats", + "utils", + "futile.logger", + "parallel", + "snow", + "codetools" + ], + "Suggests": [ + "BiocGenerics", + "tools", + "foreach", + "BBmisc", + "doParallel", + "GenomicRanges", + "RNAseqData.HNRNPC.bam.chr14", + "TxDb.Hsapiens.UCSC.hg19.knownGene", + "VariantAnnotation", + "Rsamtools", + "GenomicAlignments", + "ShortRead", + "RUnit", + "BiocStyle", + "knitr", + "batchtools", + "data.table" + ], + "Enhances": [ + "Rmpi" + ], + "Collate": "AllGenerics.R DeveloperInterface.R prototype.R bploop.R ErrorHandling.R log.R bpbackend-methods.R bpisup-methods.R bplapply-methods.R bpiterate-methods.R bpstart-methods.R bpstop-methods.R BiocParallelParam-class.R bpmapply-methods.R bpschedule-methods.R bpvec-methods.R bpvectorize-methods.R bpworkers-methods.R bpaggregate-methods.R bpvalidate.R SnowParam-class.R MulticoreParam-class.R TransientMulticoreParam-class.R register.R SerialParam-class.R DoparParam-class.R SnowParam-utils.R BatchtoolsParam-class.R progress.R ipcmutex.R worker-number.R utilities.R rng.R bpinit.R reducer.R worker.R bpoptions.R cpp11.R BiocParallel-defunct.R", + "LinkingTo": [ + "BH (>= 1.87.0)", + "cpp11" + ], + "VignetteBuilder": "knitr", + "RoxygenNote": "7.1.2", + "git_url": "https://git.bioconductor.org/packages/BiocParallel", + "git_branch": "RELEASE_3_22", + "git_last_commit": "3d6f2f6", + "git_last_commit_date": "2025-10-29", + "Repository": "Bioconductor 3.22", + "NeedsCompilation": "yes", + "Author": "Jiefei Wang [aut, cre], Martin Morgan [aut], Valerie Obenchain [aut], Michel Lang [aut], Ryan Thompson [aut], Nitesh Turaga [aut], Aaron Lun [ctb], Henrik Bengtsson [ctb], Madelyn Carlson [ctb] (Translated 'Random Numbers' vignette from Sweave to RMarkdown / HTML.), Phylis Atieno [ctb] (Translated 'Introduction to BiocParallel' vignette from Sweave to Rmarkdown / HTML.), Sergio Oller [ctb] (Improved bpmapply() efficiency., ORCID: )", + "Maintainer": "Jiefei Wang " + }, + "BiocSingular": { + "Package": "BiocSingular", + "Version": "1.26.1", + "Source": "Bioconductor", + "Date": "2025-11-17", + "Title": "Singular Value Decomposition for Bioconductor Packages", + "Authors@R": "c(person(\"Aaron\", \"Lun\", role=c(\"aut\", \"cre\", \"cph\"), email=\"infinite.monkeys.with.keyboards@gmail.com\"))", + "Imports": [ + "BiocGenerics", + "S4Vectors", + "Matrix", + "methods", + "utils", + "DelayedArray", + "BiocParallel", + "ScaledMatrix", + "irlba", + "rsvd", + "Rcpp", + "beachmat (>= 2.25.1)" + ], + "Suggests": [ + "testthat", + "BiocStyle", + "knitr", + "rmarkdown", + "ResidualMatrix" + ], + "biocViews": "Software, DimensionReduction, PrincipalComponent", + "Description": "Implements exact and approximate methods for singular value decomposition and principal components analysis, in a framework that allows them to be easily switched within Bioconductor packages or workflows. Where possible, parallelization is achieved using the BiocParallel framework.", + "License": "GPL-3", + "LinkingTo": [ + "Rcpp", + "beachmat", + "assorthead" + ], + "VignetteBuilder": "knitr", + "SystemRequirements": "C++17", + "RoxygenNote": "7.3.3", + "Encoding": "UTF-8", + "BugReports": "https://github.com/LTLA/BiocSingular/issues", + "URL": "https://github.com/LTLA/BiocSingular", + "git_url": "https://git.bioconductor.org/packages/BiocSingular", + "git_branch": "RELEASE_3_22", + "git_last_commit": "d110898", + "git_last_commit_date": "2025-11-16", + "Repository": "Bioconductor 3.22", + "NeedsCompilation": "yes", + "Author": "Aaron Lun [aut, cre, cph]", + "Maintainer": "Aaron Lun " + }, + "BiocVersion": { + "Package": "BiocVersion", + "Version": "3.22.0", + "Source": "Bioconductor", + "Title": "Set the appropriate version of Bioconductor packages", + "Description": "This package provides repository information for the appropriate version of Bioconductor.", + "Authors@R": "c( person(\"Martin\", \"Morgan\", email = \"martin.morgan@roswellpark.org\", role = \"aut\"), person(\"Marcel\", \"Ramos\", email = \"marcel.ramos@sph.cuny.edu\", role = \"ctb\"), person(\"Bioconductor\", \"Package Maintainer\", email = \"maintainer@bioconductor.org\", role = c(\"ctb\", \"cre\")))", + "biocViews": "Infrastructure", + "Depends": [ + "R (>= 4.5.0)" + ], + "License": "Artistic-2.0", + "Encoding": "UTF-8", + "RoxygenNote": "6.0.1", + "git_url": "https://git.bioconductor.org/packages/BiocVersion", + "git_branch": "devel", + "git_last_commit": "fea53ac", + "git_last_commit_date": "2025-04-15", + "Repository": "Bioconductor 3.22", + "NeedsCompilation": "no", + "Author": "Martin Morgan [aut], Marcel Ramos [ctb], Bioconductor Package Maintainer [ctb, cre]", + "Maintainer": "Bioconductor Package Maintainer " + }, + "Biostrings": { + "Package": "Biostrings", + "Version": "2.78.0", + "Source": "Bioconductor", + "Title": "Efficient manipulation of biological strings", + "Description": "Memory efficient string containers, string matching algorithms, and other utilities, for fast manipulation of large biological sequences or sets of sequences.", + "biocViews": "SequenceMatching, Alignment, Sequencing, Genetics, DataImport, DataRepresentation, Infrastructure", + "URL": "https://bioconductor.org/packages/Biostrings", + "BugReports": "https://github.com/Bioconductor/Biostrings/issues", + "License": "Artistic-2.0", + "Encoding": "UTF-8", + "Authors@R": "c( person(\"Hervé\", \"Pagès\", role=c(\"aut\", \"cre\"), email=\"hpages.on.github@gmail.com\"), person(\"Patrick\", \"Aboyoun\", role=\"aut\"), person(\"Robert\", \"Gentleman\", role=\"aut\"), person(\"Saikat\", \"DebRoy\", role=\"aut\"), person(\"Vince\", \"Carey\", role=\"ctb\"), person(\"Nicolas\", \"Delhomme\", role=\"ctb\"), person(\"Felix\", \"Ernst\", role=\"ctb\"), person(\"Wolfgang\", \"Huber\", role=\"ctb\", comment=\"'matchprobes' vignette\"), person(\"Beryl\", \"Kanali\", role=\"ctb\", comment=\"Converted 'MultipleAlignments' vignette from Sweave to RMarkdown\"), person(\"Haleema\", \"Khan\", role=\"ctb\", comment=\"Converted 'matchprobes' vignette from Sweave to RMarkdown\"), person(\"Aidan\", \"Lakshman\", role=\"ctb\"), person(\"Kieran\", \"O'Neill\", role=\"ctb\"), person(\"Valerie\", \"Obenchain\", role=\"ctb\"), person(\"Marcel\", \"Ramos\", role=\"ctb\"), person(\"Albert\", \"Vill\", role=\"ctb\"), person(\"Jen\", \"Wokaty\", role=\"ctb\", comment=\"Converted 'matchprobes' vignette from Sweave to RMarkdown\"), person(\"Erik\", \"Wright\", role=\"ctb\"))", + "Depends": [ + "R (>= 4.1.0)", + "BiocGenerics (>= 0.37.0)", + "S4Vectors (>= 0.27.12)", + "IRanges (>= 2.31.2)", + "XVector (>= 0.37.1)", + "Seqinfo" + ], + "Imports": [ + "methods", + "utils", + "grDevices", + "stats", + "crayon" + ], + "LinkingTo": [ + "S4Vectors", + "IRanges", + "XVector" + ], + "Suggests": [ + "graphics", + "pwalign", + "BSgenome (>= 1.13.14)", + "BSgenome.Celegans.UCSC.ce2 (>= 1.3.11)", + "BSgenome.Dmelanogaster.UCSC.dm3 (>= 1.3.11)", + "BSgenome.Hsapiens.UCSC.hg18", + "drosophila2probe", + "hgu95av2probe", + "hgu133aprobe", + "GenomicFeatures (>= 1.3.14)", + "hgu95av2cdf", + "affy (>= 1.41.3)", + "affydata (>= 1.11.5)", + "RUnit", + "BiocStyle", + "knitr", + "testthat (>= 3.0.0)", + "covr" + ], + "VignetteBuilder": "knitr", + "Collate": "utils.R IUPAC_CODE_MAP.R AMINO_ACID_CODE.R GENETIC_CODE.R XStringCodec-class.R seqtype.R coloring.R XString-class.R XStringSet-class.R XStringSet-comparison.R XStringViews-class.R MaskedXString-class.R XStringSetList-class.R seqinfo-methods.R xscat.R XStringSet-io.R letter.R getSeq.R letterFrequency.R dinucleotideFrequencyTest.R chartr.R reverseComplement.R translate.R toComplex.R replaceAt.R replaceLetterAt.R injectHardMask.R padAndClip.R strsplit-methods.R misc.R SparseList-class.R MIndex-class.R lowlevel-matching.R match-utils.R matchPattern.R maskMotif.R matchLRPatterns.R trimLRPatterns.R matchProbePair.R matchPWM.R findPalindromes.R PDict-class.R matchPDict.R XStringPartialMatches-class.R XStringQuality-class.R QualityScaledXStringSet.R pmatchPattern.R MultipleAlignment.R matchprobes.R moved_to_pwalign.R zzz.R", + "git_url": "https://git.bioconductor.org/packages/Biostrings", + "git_branch": "RELEASE_3_22", + "git_last_commit": "eda5d66", + "git_last_commit_date": "2025-10-29", + "Repository": "Bioconductor 3.22", + "NeedsCompilation": "yes", + "Author": "Hervé Pagès [aut, cre], Patrick Aboyoun [aut], Robert Gentleman [aut], Saikat DebRoy [aut], Vince Carey [ctb], Nicolas Delhomme [ctb], Felix Ernst [ctb], Wolfgang Huber [ctb] ('matchprobes' vignette), Beryl Kanali [ctb] (Converted 'MultipleAlignments' vignette from Sweave to RMarkdown), Haleema Khan [ctb] (Converted 'matchprobes' vignette from Sweave to RMarkdown), Aidan Lakshman [ctb], Kieran O'Neill [ctb], Valerie Obenchain [ctb], Marcel Ramos [ctb], Albert Vill [ctb], Jen Wokaty [ctb] (Converted 'matchprobes' vignette from Sweave to RMarkdown), Erik Wright [ctb]", + "Maintainer": "Hervé Pagès " + }, + "Cairo": { + "Package": "Cairo", + "Version": "1.7-0", + "Source": "Repository", + "Title": "R Graphics Device using Cairo Graphics Library for Creating High-Quality Bitmap (PNG, JPEG, TIFF), Vector (PDF, SVG, PostScript) and Display (X11 and Win32) Output", + "Author": "Simon Urbanek [aut, cre, cph] (https://urbanek.org, ORCID: ), Jeffrey Horner [aut]", + "Maintainer": "Simon Urbanek ", + "Authors@R": "c(person(\"Simon\", \"Urbanek\", role=c(\"aut\",\"cre\",\"cph\"), email=\"Simon.Urbanek@r-project.org\", comment=c(\"https://urbanek.org\", ORCID=\"0000-0003-2297-1732\")), person(\"Jeffrey\", \"Horner\", role=\"aut\", email=\"jeff.horner@vanderbilt.edu\"))", + "Depends": [ + "R (>= 2.7.0)" + ], + "Imports": [ + "grDevices", + "graphics" + ], + "Suggests": [ + "png" + ], + "Enhances": [ + "FastRWeb" + ], + "Description": "R graphics device using cairographics library that can be used to create high-quality vector (PDF, PostScript and SVG) and bitmap output (PNG,JPEG,TIFF), and high-quality rendering in displays (X11 and Win32). Since it uses the same back-end for all output, copying across formats is WYSIWYG. Files are created without the dependence on X11 or other external programs. This device supports alpha channel (semi-transparent drawing) and resulting images can contain transparent and semi-transparent regions. It is ideal for use in server environments (file output) and as a replacement for other devices that don't have Cairo's capabilities such as alpha support or anti-aliasing. Backends are modular such that any subset of backends is supported.", + "License": "GPL-2 | GPL-3", + "SystemRequirements": "cairo (>= 1.2 http://www.cairographics.org/)", + "URL": "http://www.rforge.net/Cairo/", + "NeedsCompilation": "yes", + "Repository": "https://packagemanager.posit.co/cran/latest", + "Encoding": "UTF-8" + }, + "ComplexHeatmap": { + "Package": "ComplexHeatmap", + "Version": "2.26.0", + "Source": "Bioconductor", + "Type": "Package", + "Title": "Make Complex Heatmaps", + "Date": "2025-06-23", + "Authors@R": "person(\"Zuguang\", \"Gu\", email = \"z.gu@dkfz.de\", role = c(\"aut\", \"cre\"), comment = c('ORCID'=\"0000-0002-7395-8709\"))", + "Depends": [ + "R (>= 4.0.0)", + "methods", + "grid", + "graphics", + "stats", + "grDevices" + ], + "Imports": [ + "circlize (>= 0.4.14)", + "GetoptLong", + "colorspace", + "clue", + "RColorBrewer", + "GlobalOptions (>= 0.1.0)", + "png", + "digest", + "IRanges", + "matrixStats", + "foreach", + "doParallel", + "codetools" + ], + "Suggests": [ + "testthat (>= 1.0.0)", + "knitr", + "markdown", + "dendsort", + "jpeg", + "tiff", + "fastcluster", + "EnrichedHeatmap", + "dendextend (>= 1.0.1)", + "grImport", + "grImport2", + "glue", + "GenomicRanges", + "gridtext", + "pheatmap (>= 1.0.12)", + "gridGraphics", + "gplots", + "rmarkdown", + "Cairo", + "magick" + ], + "VignetteBuilder": "knitr", + "Description": "Complex heatmaps are efficient to visualize associations between different sources of data sets and reveal potential patterns. Here the ComplexHeatmap package provides a highly flexible way to arrange multiple heatmaps and supports various annotation graphics.", + "biocViews": "Software, Visualization, Sequencing", + "URL": "https://github.com/jokergoo/ComplexHeatmap, https://jokergoo.github.io/ComplexHeatmap-reference/book/", + "License": "MIT + file LICENSE", + "RoxygenNote": "7.2.3", + "git_url": "https://git.bioconductor.org/packages/ComplexHeatmap", + "git_branch": "RELEASE_3_22", + "git_last_commit": "4803c6d", + "git_last_commit_date": "2025-10-29", + "Repository": "Bioconductor 3.22", + "NeedsCompilation": "no", + "Author": "Zuguang Gu [aut, cre] (ORCID: )", + "Maintainer": "Zuguang Gu " + }, + "ConsensusClusterPlus": { + "Package": "ConsensusClusterPlus", + "Version": "1.74.0", + "Source": "Bioconductor", + "Type": "Package", + "Imports": [ + "Biobase", + "ALL", + "graphics", + "stats", + "utils", + "cluster" + ], + "Title": "ConsensusClusterPlus", + "Date": "2020-4-24", + "Author": "Matt Wilkerson , Peter Waltman ", + "Maintainer": "Matt Wilkerson ", + "Description": "algorithm for determining cluster count and membership by stability evidence in unsupervised analysis", + "License": "GPL version 2", + "biocViews": "Software, Clustering", + "git_url": "https://git.bioconductor.org/packages/ConsensusClusterPlus", + "git_branch": "RELEASE_3_22", + "git_last_commit": "4015c97", + "git_last_commit_date": "2025-10-29", + "Repository": "Bioconductor 3.22", + "NeedsCompilation": "no" + }, + "DBI": { + "Package": "DBI", + "Version": "1.2.3", + "Source": "Repository", + "Title": "R Database Interface", + "Date": "2024-06-02", + "Authors@R": "c( person(\"R Special Interest Group on Databases (R-SIG-DB)\", role = \"aut\"), person(\"Hadley\", \"Wickham\", role = \"aut\"), person(\"Kirill\", \"Müller\", , \"kirill@cynkra.com\", role = c(\"aut\", \"cre\"), comment = c(ORCID = \"0000-0002-1416-3412\")), person(\"R Consortium\", role = \"fnd\") )", + "Description": "A database interface definition for communication between R and relational database management systems. All classes in this package are virtual and need to be extended by the various R/DBMS implementations.", + "License": "LGPL (>= 2.1)", + "URL": "https://dbi.r-dbi.org, https://github.com/r-dbi/DBI", + "BugReports": "https://github.com/r-dbi/DBI/issues", + "Depends": [ + "methods", + "R (>= 3.0.0)" + ], + "Suggests": [ + "arrow", + "blob", + "covr", + "DBItest", + "dbplyr", + "downlit", + "dplyr", + "glue", + "hms", + "knitr", + "magrittr", + "nanoarrow (>= 0.3.0.1)", + "RMariaDB", + "rmarkdown", + "rprojroot", + "RSQLite (>= 1.1-2)", + "testthat (>= 3.0.0)", + "vctrs", + "xml2" + ], + "VignetteBuilder": "knitr", + "Config/autostyle/scope": "line_breaks", + "Config/autostyle/strict": "false", + "Config/Needs/check": "r-dbi/DBItest", + "Encoding": "UTF-8", + "RoxygenNote": "7.3.1", + "Config/Needs/website": "r-dbi/DBItest, r-dbi/dbitemplate, adbi, AzureKusto, bigrquery, DatabaseConnector, dittodb, duckdb, implyr, lazysf, odbc, pool, RAthena, IMSMWU/RClickhouse, RH2, RJDBC, RMariaDB, RMySQL, RPostgres, RPostgreSQL, RPresto, RSQLite, sergeant, sparklyr, withr", + "Config/testthat/edition": "3", + "NeedsCompilation": "no", + "Author": "R Special Interest Group on Databases (R-SIG-DB) [aut], Hadley Wickham [aut], Kirill Müller [aut, cre] (), R Consortium [fnd]", + "Maintainer": "Kirill Müller ", + "Repository": "https://packagemanager.posit.co/cran/latest" + }, + "DESeq2": { + "Package": "DESeq2", + "Version": "1.50.2", + "Source": "Bioconductor", + "Type": "Package", + "Title": "Differential gene expression analysis based on the negative binomial distribution", + "Authors@R": "c( person(\"Michael\", \"Love\", email=\"michaelisaiahlove@gmail.com\", role = c(\"aut\",\"cre\")), person(\"Constantin\", \"Ahlmann-Eltze\", role = c(\"ctb\")), person(\"Kwame\", \"Forbes\", role = c(\"ctb\")), person(\"Simon\", \"Anders\", role = c(\"aut\",\"ctb\")), person(\"Wolfgang\", \"Huber\", role = c(\"aut\",\"ctb\")), person(\"RADIANT EU FP7\", role=\"fnd\"), person(\"NIH NHGRI\", role=\"fnd\"), person(\"CZI\", role=\"fnd\"))", + "Maintainer": "Michael Love ", + "Description": "Estimate variance-mean dependence in count data from high-throughput sequencing assays and test for differential expression based on a model using the negative binomial distribution.", + "License": "LGPL (>= 3)", + "VignetteBuilder": "knitr, rmarkdown", + "Imports": [ + "BiocGenerics (>= 0.7.5)", + "Biobase", + "BiocParallel", + "matrixStats", + "methods", + "stats4", + "locfit", + "ggplot2 (>= 3.4.0)", + "Rcpp (>= 0.11.0)", + "MatrixGenerics" + ], + "Depends": [ + "S4Vectors (>= 0.23.18)", + "IRanges", + "GenomicRanges", + "SummarizedExperiment (>= 1.1.6)" + ], + "Suggests": [ + "testthat", + "knitr", + "rmarkdown", + "vsn", + "pheatmap", + "RColorBrewer", + "apeglm", + "ashr", + "tximport", + "tximeta", + "tximportData", + "readr", + "pbapply", + "airway", + "glmGamPoi", + "BiocManager" + ], + "LinkingTo": [ + "Rcpp", + "RcppArmadillo" + ], + "URL": "https://github.com/thelovelab/DESeq2", + "biocViews": "Sequencing, RNASeq, ChIPSeq, GeneExpression, Transcription, Normalization, DifferentialExpression, Bayesian, Regression, PrincipalComponent, Clustering, ImmunoOncology", + "RoxygenNote": "7.3.3", + "Encoding": "UTF-8", + "git_url": "https://git.bioconductor.org/packages/DESeq2", + "git_branch": "RELEASE_3_22", + "git_last_commit": "d90821a", + "git_last_commit_date": "2025-11-11", + "Repository": "Bioconductor 3.22", + "NeedsCompilation": "yes", + "Author": "Michael Love [aut, cre], Constantin Ahlmann-Eltze [ctb], Kwame Forbes [ctb], Simon Anders [aut, ctb], Wolfgang Huber [aut, ctb], RADIANT EU FP7 [fnd], NIH NHGRI [fnd], CZI [fnd]" + }, + "DOSE": { + "Package": "DOSE", + "Version": "4.4.0", + "Source": "Bioconductor", + "Type": "Package", + "Title": "Disease Ontology Semantic and Enrichment analysis", + "Authors@R": "c( person(given = \"Guangchuang\", family = \"Yu\", email = \"guangchuangyu@gmail.com\", role = c(\"aut\", \"cre\")), person(given = \"Li-Gen\", family = \"Wang\", email = \"reeganwang020@gmail.com\", role = \"ctb\"), person(given = \"Vladislav\", family = \"Petyuk\", email = \"petyuk@gmail.com\", role = \"ctb\"), person(given = \"Giovanni\", family = \"Dall'Olio\", email = \"giovanni.dallolio@upf.edu\", role = \"ctb\"))", + "Maintainer": "Guangchuang Yu ", + "Description": "This package implements five methods proposed by Resnik, Schlicker, Jiang, Lin and Wang respectively for measuring semantic similarities among DO terms and gene products. Enrichment analyses including hypergeometric model and gene set enrichment analysis are also implemented for discovering disease associations of high-throughput biological data.", + "Depends": [ + "R (>= 3.5.0)" + ], + "Imports": [ + "AnnotationDbi", + "BiocParallel", + "fgsea", + "ggplot2", + "GOSemSim (>= 2.31.2)", + "methods", + "qvalue", + "reshape2", + "stats", + "utils", + "yulab.utils (>= 0.1.6)" + ], + "Suggests": [ + "prettydoc", + "clusterProfiler", + "gson (>= 0.0.5)", + "knitr", + "memoise", + "org.Hs.eg.db", + "rmarkdown", + "testthat" + ], + "VignetteBuilder": "knitr", + "ByteCompile": "true", + "License": "Artistic-2.0", + "Encoding": "UTF-8", + "URL": "https://yulab-smu.top/contribution-knowledge-mining/", + "BugReports": "https://github.com/GuangchuangYu/DOSE/issues", + "biocViews": "Annotation, Visualization, MultipleComparison, GeneSetEnrichment, Pathways, Software", + "RoxygenNote": "7.3.2", + "git_url": "https://git.bioconductor.org/packages/DOSE", + "git_branch": "RELEASE_3_22", + "git_last_commit": "963047a", + "git_last_commit_date": "2025-10-29", + "Repository": "Bioconductor 3.22", + "NeedsCompilation": "no", + "Author": "Guangchuang Yu [aut, cre], Li-Gen Wang [ctb], Vladislav Petyuk [ctb], Giovanni Dall'Olio [ctb]" + }, + "DT": { + "Package": "DT", + "Version": "0.34.0", + "Source": "Repository", + "Type": "Package", + "Title": "A Wrapper of the JavaScript Library 'DataTables'", + "Authors@R": "c( person(\"Yihui\", \"Xie\", role = \"aut\"), person(\"Joe\", \"Cheng\", , \"joe@posit.co\", role = \"aut\"), person(\"Xianying\", \"Tan\", role = \"aut\"), person(\"Garrick\", \"Aden-Buie\", , \"garrick@posit.co\", role = c(\"aut\", \"cre\"), comment = c(ORCID = \"0000-0002-7111-0077\")), person(\"JJ\", \"Allaire\", role = \"ctb\"), person(\"Maximilian\", \"Girlich\", role = \"ctb\"), person(\"Greg\", \"Freedman Ellis\", role = \"ctb\"), person(\"Johannes\", \"Rauh\", role = \"ctb\"), person(\"SpryMedia Limited\", role = c(\"ctb\", \"cph\"), comment = \"DataTables in htmlwidgets/lib\"), person(\"Brian\", \"Reavis\", role = c(\"ctb\", \"cph\"), comment = \"selectize.js in htmlwidgets/lib\"), person(\"Leon\", \"Gersen\", role = c(\"ctb\", \"cph\"), comment = \"noUiSlider in htmlwidgets/lib\"), person(\"Bartek\", \"Szopka\", role = c(\"ctb\", \"cph\"), comment = \"jquery.highlight.js in htmlwidgets/lib\"), person(\"Alex\", \"Pickering\", role = \"ctb\"), person(\"William\", \"Holmes\", role = \"ctb\"), person(\"Mikko\", \"Marttila\", role = \"ctb\"), person(\"Andres\", \"Quintero\", role = \"ctb\"), person(\"Stéphane\", \"Laurent\", role = \"ctb\"), person(\"Posit Software, PBC\", role = c(\"cph\", \"fnd\")) )", + "Description": "Data objects in R can be rendered as HTML tables using the JavaScript library 'DataTables' (typically via R Markdown or Shiny). The 'DataTables' library has been included in this R package. The package name 'DT' is an abbreviation of 'DataTables'.", + "License": "MIT + file LICENSE", + "URL": "https://github.com/rstudio/DT", + "BugReports": "https://github.com/rstudio/DT/issues", + "Imports": [ + "crosstalk", + "htmltools (>= 0.3.6)", + "htmlwidgets (>= 1.3)", + "jquerylib", + "jsonlite (>= 0.9.16)", + "magrittr", + "promises" + ], + "Suggests": [ + "bslib", + "future", + "httpuv", + "knitr (>= 1.8)", + "rmarkdown", + "shiny (>= 1.6)", + "testit", + "tibble" + ], + "VignetteBuilder": "knitr", + "Encoding": "UTF-8", + "RoxygenNote": "7.3.2", + "NeedsCompilation": "no", + "Author": "Yihui Xie [aut], Joe Cheng [aut], Xianying Tan [aut], Garrick Aden-Buie [aut, cre] (ORCID: ), JJ Allaire [ctb], Maximilian Girlich [ctb], Greg Freedman Ellis [ctb], Johannes Rauh [ctb], SpryMedia Limited [ctb, cph] (DataTables in htmlwidgets/lib), Brian Reavis [ctb, cph] (selectize.js in htmlwidgets/lib), Leon Gersen [ctb, cph] (noUiSlider in htmlwidgets/lib), Bartek Szopka [ctb, cph] (jquery.highlight.js in htmlwidgets/lib), Alex Pickering [ctb], William Holmes [ctb], Mikko Marttila [ctb], Andres Quintero [ctb], Stéphane Laurent [ctb], Posit Software, PBC [cph, fnd]", + "Maintainer": "Garrick Aden-Buie ", + "Repository": "CRAN" + }, + "DelayedArray": { + "Package": "DelayedArray", + "Version": "0.36.0", + "Source": "Bioconductor", + "Title": "A unified framework for working transparently with on-disk and in-memory array-like datasets", + "Description": "Wrapping an array-like object (typically an on-disk object) in a DelayedArray object allows one to perform common array operations on it without loading the object in memory. In order to reduce memory usage and optimize performance, operations on the object are either delayed or executed using a block processing mechanism. Note that this also works on in-memory array-like objects like DataFrame objects (typically with Rle columns), Matrix objects, ordinary arrays and, data frames.", + "biocViews": "Infrastructure, DataRepresentation, Annotation, GenomeAnnotation", + "URL": "https://bioconductor.org/packages/DelayedArray", + "BugReports": "https://github.com/Bioconductor/DelayedArray/issues", + "License": "Artistic-2.0", + "Encoding": "UTF-8", + "Authors@R": "c( person(\"Hervé\", \"Pagès\", role=c(\"aut\", \"cre\"), email=\"hpages.on.github@gmail.com\"), person(\"Aaron\", \"Lun\", role=\"ctb\", email=\"infinite.monkeys.with.keyboards@gmail.com\"), person(\"Peter\", \"Hickey\", role=\"ctb\", email=\"peter.hickey@gmail.com\"))", + "Maintainer": "Hervé Pagès ", + "Depends": [ + "R (>= 4.0.0)", + "methods", + "stats4", + "Matrix", + "BiocGenerics (>= 0.53.3)", + "MatrixGenerics (>= 1.1.3)", + "S4Vectors (>= 0.47.6)", + "IRanges (>= 2.17.3)", + "S4Arrays (>= 1.9.3)", + "SparseArray (>= 1.7.5)" + ], + "Imports": [ + "stats" + ], + "LinkingTo": [ + "S4Vectors" + ], + "Suggests": [ + "BiocParallel", + "HDF5Array (>= 1.17.12)", + "genefilter", + "SummarizedExperiment", + "airway", + "lobstr", + "DelayedMatrixStats", + "knitr", + "rmarkdown", + "BiocStyle", + "RUnit" + ], + "VignetteBuilder": "knitr", + "Collate": "compress_atomic_vector.R makeCappedVolumeBox.R AutoBlock-global-settings.R AutoGrid.R blockApply.R DelayedOp-class.R DelayedSubset-class.R DelayedAperm-class.R DelayedUnaryIsoOpStack-class.R DelayedUnaryIsoOpWithArgs-class.R DelayedSubassign-class.R DelayedSetDimnames-class.R DelayedNaryIsoOp-class.R DelayedAbind-class.R showtree.R simplify.R DelayedArray-class.R DelayedArray-subsetting.R chunkGrid.R RealizationSink-class.R realize.R DelayedArray-utils.R DelayedArray-stats.R matrixStats-methods.R DelayedMatrix-rowsum.R DelayedMatrix-mult.R ConstantArray-class.R RleArraySeed-class.R RleArray-class.R compat.R zzz.R", + "git_url": "https://git.bioconductor.org/packages/DelayedArray", + "git_branch": "RELEASE_3_22", + "git_last_commit": "adde054", + "git_last_commit_date": "2025-10-29", + "Repository": "Bioconductor 3.22", + "NeedsCompilation": "yes", + "Author": "Hervé Pagès [aut, cre], Aaron Lun [ctb], Peter Hickey [ctb]" + }, + "DelayedMatrixStats": { + "Package": "DelayedMatrixStats", + "Version": "1.32.0", + "Source": "Bioconductor", + "Type": "Package", + "Title": "Functions that Apply to Rows and Columns of 'DelayedMatrix' Objects", + "Date": "2025-01-09", + "Authors@R": "c(person(\"Peter\", \"Hickey\", role = c(\"aut\", \"cre\"), email = \"peter.hickey@gmail.com\", comment = c(ORCID = \"0000-0002-8153-6258\")), person(\"Hervé\", \"Pagès\", role = \"ctb\", email = \"hpages.on.github@gmail.com\"), person(\"Aaron\", \"Lun\", role = \"ctb\", email = \"infinite.monkeys.with.keyboards@gmail.com\"))", + "Description": "A port of the 'matrixStats' API for use with DelayedMatrix objects from the 'DelayedArray' package. High-performing functions operating on rows and columns of DelayedMatrix objects, e.g. col / rowMedians(), col / rowRanks(), and col / rowSds(). Functions optimized per data type and for subsetted calculations such that both memory usage and processing time is minimized.", + "License": "MIT + file LICENSE", + "Encoding": "UTF-8", + "Roxygen": "list(markdown = TRUE)", + "RoxygenNote": "7.3.2", + "Depends": [ + "MatrixGenerics (>= 1.15.1)", + "DelayedArray (>= 0.31.7)" + ], + "Imports": [ + "methods", + "sparseMatrixStats (>= 1.13.2)", + "Matrix (>= 1.5-0)", + "S4Vectors (>= 0.17.5)", + "IRanges (>= 2.25.10)", + "SparseArray (>= 1.5.19)" + ], + "Suggests": [ + "testthat", + "knitr", + "rmarkdown", + "BiocStyle", + "microbenchmark", + "profmem", + "HDF5Array", + "matrixStats (>= 1.0.0)" + ], + "VignetteBuilder": "knitr", + "URL": "https://github.com/PeteHaitch/DelayedMatrixStats", + "BugReports": "https://github.com/PeteHaitch/DelayedMatrixStats/issues", + "biocViews": "Infrastructure, DataRepresentation, Software", + "git_url": "https://git.bioconductor.org/packages/DelayedMatrixStats", + "git_branch": "RELEASE_3_22", + "git_last_commit": "cbf7d75", + "git_last_commit_date": "2025-10-29", + "Repository": "Bioconductor 3.22", + "NeedsCompilation": "no", + "Author": "Peter Hickey [aut, cre] (ORCID: ), Hervé Pagès [ctb], Aaron Lun [ctb]", + "Maintainer": "Peter Hickey " + }, + "DropletUtils": { + "Package": "DropletUtils", + "Version": "1.30.0", + "Source": "Bioconductor", + "Date": "2025-08-27", + "Title": "Utilities for Handling Single-Cell Droplet Data", + "Authors@R": "c( person(\"Aaron\", \"Lun\", role = \"aut\"), person(\"Jonathan\", \"Griffiths\", role=c(\"ctb\", \"cre\"), email = \"jonathan.griffiths.94@gmail.com\"), person(\"Davis\", \"McCarthy\", role=\"ctb\"), person(\"Dongze\", \"He\", role=\"ctb\"), person(\"Rob\", \"Patro\", role=\"ctb\"))", + "Depends": [ + "SingleCellExperiment" + ], + "Imports": [ + "utils", + "stats", + "methods", + "Matrix", + "Rcpp", + "BiocGenerics", + "S4Vectors", + "IRanges", + "GenomicRanges", + "SummarizedExperiment", + "BiocParallel", + "SparseArray (>= 1.5.18)", + "DelayedArray (>= 0.31.9)", + "DelayedMatrixStats", + "HDF5Array", + "rhdf5", + "edgeR", + "R.utils", + "dqrng", + "beachmat", + "scuttle" + ], + "Suggests": [ + "testthat", + "knitr", + "BiocStyle", + "rmarkdown", + "jsonlite", + "DropletTestFiles" + ], + "biocViews": "ImmunoOncology, SingleCell, Sequencing, RNASeq, GeneExpression, Transcriptomics, DataImport, Coverage", + "Description": "Provides a number of utility functions for handling single-cell (RNA-seq) data from droplet technologies such as 10X Genomics. This includes data loading from count matrices or molecule information files, identification of cells from empty droplets, removal of barcode-swapped pseudo-cells, and downsampling of the count matrix.", + "License": "GPL-3", + "NeedsCompilation": "yes", + "VignetteBuilder": "knitr", + "LinkingTo": [ + "Rcpp", + "beachmat", + "assorthead", + "Rhdf5lib", + "BH", + "dqrng", + "scuttle" + ], + "SystemRequirements": "C++17, GNU make", + "RoxygenNote": "7.3.2", + "Encoding": "UTF-8", + "git_url": "https://git.bioconductor.org/packages/DropletUtils", + "git_branch": "RELEASE_3_22", + "git_last_commit": "6ef5eaa", + "git_last_commit_date": "2025-10-29", + "Repository": "Bioconductor 3.22", + "Author": "Aaron Lun [aut], Jonathan Griffiths [ctb, cre], Davis McCarthy [ctb], Dongze He [ctb], Rob Patro [ctb]", + "Maintainer": "Jonathan Griffiths " + }, + "EnhancedVolcano": { + "Package": "EnhancedVolcano", + "Version": "1.28.2", + "Source": "Bioconductor", + "Type": "Package", + "Title": "Publication-ready volcano plots with enhanced colouring and labeling", + "Authors@R": "c( person(\"Kevin\", \"Blighe\", role = c(\"aut\")), person(\"Jared\", \"Andrews\", email = \"jared.andrews07@gmail.com\", role = c(\"cre\", \"ctb\"), comment = c(ORCID = \"0000-0002-0780-6248\")), person(\"Sharmila\", \"Rana\", role = c(\"aut\")), person(\"Emir\", \"Turkes\", role = c(\"ctb\")), person(\"Benjamin\", \"Ostendorf\", role = c(\"ctb\")), person(\"Andrea\", \"Grioni\", role = c(\"ctb\")), person(\"Myles\", \"Lewis\", role = c(\"aut\")))", + "Maintainer": "Jared Andrews ", + "Description": "Volcano plots represent a useful way to visualise the results of differential expression analyses. Here, we present a highly-configurable function that produces publication-ready volcano plots. EnhancedVolcano will attempt to fit as many point labels in the plot window as possible, thus avoiding 'clogging' up the plot with labels that could not otherwise have been read. Other functionality allows the user to identify up to 4 different types of attributes in the same plot space via colour, shape, size, and shade parameter configurations.", + "License": "GPL-3", + "Encoding": "UTF-8", + "Depends": [ + "ggplot2", + "ggrepel" + ], + "Imports": [ + "methods", + "scales", + "grid", + "grDevices" + ], + "Suggests": [ + "RUnit", + "ggrastr", + "BiocGenerics", + "knitr", + "DESeq2", + "pasilla", + "airway", + "org.Hs.eg.db", + "gridExtra", + "magrittr", + "rmarkdown" + ], + "URL": "https://github.com/kevinblighe/EnhancedVolcano", + "biocViews": "RNASeq, GeneExpression, Transcription, DifferentialExpression, ImmunoOncology", + "VignetteBuilder": "knitr", + "RoxygenNote": "7.3.2", + "git_url": "https://git.bioconductor.org/packages/EnhancedVolcano", + "git_branch": "RELEASE_3_22", + "git_last_commit": "dae20c7", + "git_last_commit_date": "2025-12-03", + "Repository": "Bioconductor 3.22", + "NeedsCompilation": "no", + "Author": "Kevin Blighe [aut], Jared Andrews [cre, ctb] (ORCID: ), Sharmila Rana [aut], Emir Turkes [ctb], Benjamin Ostendorf [ctb], Andrea Grioni [ctb], Myles Lewis [aut]" + }, + "ExperimentHub": { + "Package": "ExperimentHub", + "Version": "3.0.0", + "Source": "Bioconductor", + "Type": "Package", + "Title": "Client to access ExperimentHub resources", + "Authors@R": "c(person(\"Bioconductor Package\", \"Maintainer\", email=\"maintainer@bioconductor.org\", role=\"cre\"), person(\"Martin\", \"Morgan\", role=\"aut\"), person(\"Marc\", \"Carlson\", role=\"ctb\"), person(\"Dan\", \"Tenenbaum\", role=\"ctb\"), person(\"Sonali\", \"Arora\", role=\"ctb\"), person(\"Valerie\", \"Oberchain\", role=\"ctb\"), person(\"Kayla\", \"Morrell\", role=\"ctb\"), person(\"Lori\", \"Shepherd\", role=\"aut\"))", + "Description": "This package provides a client for the Bioconductor ExperimentHub web resource. ExperimentHub provides a central location where curated data from experiments, publications or training courses can be accessed. Each resource has associated metadata, tags and date of modification. The client creates and manages a local cache of files retrieved enabling quick and reproducible access.", + "License": "Artistic-2.0", + "biocViews": "Infrastructure, DataImport, GUI, ThirdPartyClient", + "Depends": [ + "methods", + "BiocGenerics (>= 0.15.10)", + "AnnotationHub (>= 3.99.3)", + "BiocFileCache (>= 2.99.3)" + ], + "Imports": [ + "utils", + "S4Vectors", + "BiocManager", + "rappdirs" + ], + "Suggests": [ + "knitr", + "BiocStyle", + "rmarkdown", + "HubPub", + "GenomicAlignments" + ], + "Enhances": [ + "ExperimentHubData" + ], + "URL": "https://github.com/Bioconductor/ExperimentHub", + "BugReports": "https://github.com/Bioconductor/ExperimentHub/issues", + "VignetteBuilder": "knitr", + "RoxygenNote": "7.0.0", + "git_url": "https://git.bioconductor.org/packages/ExperimentHub", + "git_branch": "RELEASE_3_22", + "git_last_commit": "b1013ec", + "git_last_commit_date": "2025-10-29", + "Repository": "Bioconductor 3.22", + "NeedsCompilation": "no", + "Author": "Bioconductor Package Maintainer [cre], Martin Morgan [aut], Marc Carlson [ctb], Dan Tenenbaum [ctb], Sonali Arora [ctb], Valerie Oberchain [ctb], Kayla Morrell [ctb], Lori Shepherd [aut]", + "Maintainer": "Bioconductor Package Maintainer " + }, + "FNN": { + "Package": "FNN", + "Version": "1.1.4.1", + "Source": "Repository", + "Date": "2023-12-31", + "Title": "Fast Nearest Neighbor Search Algorithms and Applications", + "Authors@R": "c(person(\"Alina\", \"Beygelzimer\", role = \"aut\", comment = \"cover tree library\"), person(\"Sham\", \"Kakadet\", role = \"aut\", comment = \"cover tree library\"), person(\"John\", \"Langford\", role = \"aut\", comment = \"cover tree library\"), person(\"Sunil\", \"Arya\", role = \"aut\", comment = \"ANN library 1.1.2 for the kd-tree approach\"), person(\"David\", \"Mount\", role = \"aut\", comment = \"ANN library 1.1.2 for the kd-tree approach\"), person(\"Shengqiao\", \"Li\", role = c(\"aut\", \"cre\"), email = \"lishengqiao@yahoo.com\"))", + "Copyright": "ANN Copyright (c) 1997-2010 University of Maryland and Sunil Arya and David Mount. All Rights Reserved.", + "Depends": [ + "R (>= 4.0.0)" + ], + "Suggests": [ + "chemometrics", + "mvtnorm" + ], + "Description": "Cover-tree and kd-tree fast k-nearest neighbor search algorithms and related applications including KNN classification, regression and information measures are implemented.", + "License": "GPL (>= 2)", + "NeedsCompilation": "yes", + "Repository": "https://packagemanager.posit.co/cran/latest", + "Author": "Alina Beygelzimer [aut] (cover tree library), Sham Kakadet [aut] (cover tree library), John Langford [aut] (cover tree library), Sunil Arya [aut] (ANN library 1.1.2 for the kd-tree approach), David Mount [aut] (ANN library 1.1.2 for the kd-tree approach), Shengqiao Li [aut, cre]", + "Maintainer": "Shengqiao Li ", + "Encoding": "UTF-8" + }, + "GEOquery": { + "Package": "GEOquery", + "Version": "2.78.0", + "Source": "Bioconductor", + "Type": "Package", + "Title": "Get data from NCBI Gene Expression Omnibus (GEO)", + "Date": "2025-09-03", + "Authors@R": "c(person(given = \"Sean\", family = \"Davis\", role = c(\"aut\", \"cre\"), email = \"seandavi@gmail.com\", comment = c(ORCID = \"0000-0002-8991-6458\")))", + "BugReports": "https://github.com/seandavi/GEOquery/issues/new", + "Depends": [ + "R (>= 4.1.0)", + "methods", + "Biobase" + ], + "Imports": [ + "readr (>= 1.3.1)", + "xml2", + "dplyr", + "data.table", + "tidyr", + "magrittr", + "limma", + "curl", + "rentrez", + "R.utils", + "stringr", + "SummarizedExperiment", + "S4Vectors", + "rvest", + "httr2" + ], + "Suggests": [ + "knitr", + "rmarkdown", + "BiocGenerics", + "testthat", + "covr", + "markdown", + "quarto", + "DropletUtils", + "SingleCellExperiment" + ], + "VignetteBuilder": "quarto", + "URL": "https://github.com/seandavi/GEOquery, http://seandavi.github.io/GEOquery, http://seandavi.github.io/GEOquery/", + "biocViews": "Microarray, DataImport, OneChannel, TwoChannel, SAGE", + "Description": "The NCBI Gene Expression Omnibus (GEO) is a public repository of microarray data. Given the rich and varied nature of this resource, it is only natural to want to apply BioConductor tools to these data. GEOquery is the bridge between GEO and BioConductor.", + "License": "MIT + file LICENSE", + "Encoding": "UTF-8", + "RoxygenNote": "7.3.2", + "Roxygen": "list(markdown = TRUE)", + "git_url": "https://git.bioconductor.org/packages/GEOquery", + "git_branch": "RELEASE_3_22", + "git_last_commit": "3a4b52d", + "git_last_commit_date": "2025-10-29", + "Repository": "Bioconductor 3.22", + "NeedsCompilation": "no", + "Author": "Sean Davis [aut, cre] (ORCID: )", + "Maintainer": "Sean Davis " + }, + "GGally": { + "Package": "GGally", + "Version": "2.4.0", + "Source": "Repository", + "Type": "Package", + "Title": "Extension to 'ggplot2'", + "Authors@R": "c( person(\"Barret\", \"Schloerke\", , \"schloerke@gmail.com\", role = c(\"aut\", \"cre\"), comment = c(ORCID = \"0000-0001-9986-114X\")), person(\"Di\", \"Cook\", , \"dicook@monash.edu\", role = c(\"aut\", \"ths\"), comment = c(ORCID = \"0000-0002-3813-7155\")), person(\"Joseph\", \"Larmarange\", , \"joseph@larmarange.net\", role = \"aut\", comment = c(ORCID = \"0000-0001-7097-700X\")), person(\"Francois\", \"Briatte\", , \"f.briatte@gmail.com\", role = \"aut\"), person(\"Moritz\", \"Marbach\", , \"mmarbach@mail.uni-mannheim.de\", role = \"aut\"), person(\"Edwin\", \"Thoen\", , \"edwinthoen@gmail.com\", role = \"aut\"), person(\"Amos\", \"Elberg\", , \"amos.elberg@gmail.com\", role = \"aut\"), person(\"Ott\", \"Toomet\", , \"otoomet@gmail.com\", role = \"ctb\"), person(\"Jason\", \"Crowley\", , \"crowley.jason.s@gmail.com\", role = \"aut\"), person(\"Heike\", \"Hofmann\", , \"hhofmann4@unl.edu\", role = \"ths\", comment = c(ORCID = \"0000-0001-6216-5183\")), person(\"Hadley\", \"Wickham\", , \"h.wickham@gmail.com\", role = \"ths\", comment = c(ORCID = \"0000-0003-4757-117X\")) )", + "Description": "The R package 'ggplot2' is a plotting system based on the grammar of graphics. 'GGally' extends 'ggplot2' by adding several functions to reduce the complexity of combining geometric objects with transformed data. Some of these functions include a pairwise plot matrix, a two group pairwise plot matrix, a parallel coordinates plot, a survival plot, and several functions to plot networks.", + "License": "GPL (>= 2.0)", + "URL": "https://ggobi.github.io/ggally/, https://github.com/ggobi/ggally", + "BugReports": "https://github.com/ggobi/ggally/issues", + "Depends": [ + "ggplot2 (>= 3.5.2)", + "R (>= 4.3)" + ], + "Imports": [ + "cli", + "dplyr (>= 1.1.0)", + "ggstats (>= 0.9.0)", + "grDevices", + "grid", + "gtable (>= 0.2.0)", + "lifecycle", + "magrittr", + "progress", + "RColorBrewer", + "rlang", + "S7 (>= 0.2.0)", + "scales (>= 1.3.0)", + "tidyr (>= 1.3.0)", + "utils" + ], + "Suggests": [ + "airports", + "broom (>= 0.7.0)", + "broom.helpers (>= 1.3.0)", + "chemometrics", + "crosstalk", + "emmeans", + "geosphere (>= 1.5-1)", + "ggforce", + "Hmisc", + "igraph (>= 1.0.1)", + "intergraph (>= 2.0-2)", + "knitr", + "labelled", + "mapproj", + "maps (>= 3.1.0)", + "network (>= 1.17.1)", + "nnet", + "rmarkdown", + "scagnostics", + "sna (>= 2.3-2)", + "spelling", + "survival", + "testthat (>= 3.0.0)", + "vdiffr" + ], + "RdMacros": "lifecycle", + "Config/Needs/website": "tidyverse/tidytemplate", + "Config/testthat/edition": "3", + "Config/usethis/last-upkeep": "2025-06-13", + "Encoding": "UTF-8", + "Language": "en-US", + "LazyData": "true", + "LazyLoad": "yes", + "RoxygenNote": "7.3.2", + "SystemRequirements": "openssl", + "Collate": "'GGally-package.R' 'data-australia-pisa-2012.R' 'data-baseball.R' 'data-flea.R' 'data-happy.R' 'data-nasa.R' 'data-nba_ppg_2008.R' 'data-pigs.R' 'data-psychademic.R' 'data-tips.R' 'data-twitter_spambots.R' 'deprecated.R' 'find-combo.R' 'gg-plots.R' 'ggally_colbar.R' 'ggally_cross.R' 'ggaly_trends.R' 'ggbivariate.R' 'ggcoef.R' 'ggcorr.R' 'ggfacet.R' 'gglyph.R' 'ggpairs_getput.R' 'ggmatrix.R' 'ggmatrix_gtable.R' 'ggmatrix_gtable_helpers.R' 'ggmatrix_legend.R' 'ggmatrix_make_plot.R' 'ggmatrix_print.R' 'ggmatrix_progress.R' 'ggnet.R' 'ggnet2.R' 'ggnetworkmap.R' 'ggnostic.R' 'ggpairs.R' 'ggpairs_add.R' 'ggpairs_internal_plots.R' 'ggparcoord.R' 'ggsave.R' 'ggscatmat.R' 'ggsurv.R' 'ggtable.R' 'reexports.R' 'utils-pipe.R' 'utils.R' 'vig_ggally.R' 'zzz.R'", + "NeedsCompilation": "no", + "Author": "Barret Schloerke [aut, cre] (ORCID: ), Di Cook [aut, ths] (ORCID: ), Joseph Larmarange [aut] (ORCID: ), Francois Briatte [aut], Moritz Marbach [aut], Edwin Thoen [aut], Amos Elberg [aut], Ott Toomet [ctb], Jason Crowley [aut], Heike Hofmann [ths] (ORCID: ), Hadley Wickham [ths] (ORCID: )", + "Maintainer": "Barret Schloerke ", + "Repository": "CRAN" + }, + "GO.db": { + "Package": "GO.db", + "Version": "3.22.0", + "Source": "Bioconductor", + "Title": "A set of annotation maps describing the entire Gene Ontology", + "Description": "A set of annotation maps describing the entire Gene Ontology assembled using data from GO", + "Author": "Marc Carlson", + "Maintainer": "Bioconductor Package Maintainer ", + "Depends": [ + "R (>= 2.7.0)", + "methods", + "AnnotationDbi (>= 1.71.1)" + ], + "Suggests": [ + "DBI" + ], + "License": "Artistic-2.0", + "biocViews": "AnnotationData, FunctionalAnnotation", + "NeedsCompilation": "no" + }, + "GOSemSim": { + "Package": "GOSemSim", + "Version": "2.36.0", + "Source": "Bioconductor", + "Type": "Package", + "Title": "GO-terms Semantic Similarity Measures", + "Authors@R": "c( person(given = \"Guangchuang\", family = \"Yu\", email = \"guangchuangyu@gmail.com\", role = c(\"aut\", \"cre\")), person(given = \"Alexey\", family = \"Stukalov\", email = \"astukalov@gmail.com\", role = \"ctb\"), person(given= \"Pingfan\", family = \"Guo\", email = \"1178431277@qq.com\", role = \"ctb\"), person(given = \"Chuanle\", family = \"Xiao\", email = \"xiaochuanle@126.com\", role = \"ctb\"), person(given = \"Lluís\", family = \"Revilla Sancho\", email = \"lluis.revilla@gmail.com\", role = \"ctb\") )", + "Maintainer": "Guangchuang Yu ", + "Description": "The semantic comparisons of Gene Ontology (GO) annotations provide quantitative ways to compute similarities between genes and gene groups, and have became important basis for many bioinformatics analysis approaches. GOSemSim is an R package for semantic similarity computation among GO terms, sets of GO terms, gene products and gene clusters. GOSemSim implemented five methods proposed by Resnik, Schlicker, Jiang, Lin and Wang respectively.", + "Depends": [ + "R (>= 4.2.0)" + ], + "LinkingTo": [ + "Rcpp" + ], + "Imports": [ + "AnnotationDbi", + "DBI", + "digest", + "GO.db", + "methods", + "rlang", + "R.utils", + "stats", + "utils", + "yulab.utils (>= 0.2.1)" + ], + "Suggests": [ + "AnnotationHub", + "BiocManager", + "clusterProfiler", + "DOSE", + "knitr", + "org.Hs.eg.db", + "prettydoc", + "readr", + "rmarkdown", + "testthat", + "tidyr", + "tidyselect", + "ROCR" + ], + "VignetteBuilder": "knitr", + "ByteCompile": "true", + "License": "Artistic-2.0", + "Encoding": "UTF-8", + "URL": "https://yulab-smu.top/biomedical-knowledge-mining-book/", + "BugReports": "https://github.com/YuLab-SMU/GOSemSim/issues", + "biocViews": "Annotation, GO, Clustering, Pathways, Network, Software", + "RoxygenNote": "7.3.2", + "git_url": "https://git.bioconductor.org/packages/GOSemSim", + "git_branch": "RELEASE_3_22", + "git_last_commit": "c1bf5c5", + "git_last_commit_date": "2025-10-29", + "Repository": "Bioconductor 3.22", + "NeedsCompilation": "yes", + "Author": "Guangchuang Yu [aut, cre], Alexey Stukalov [ctb], Pingfan Guo [ctb], Chuanle Xiao [ctb], Lluís Revilla Sancho [ctb]" + }, + "GSEABase": { + "Package": "GSEABase", + "Version": "1.72.0", + "Source": "Bioconductor", + "Type": "Package", + "Title": "Gene set enrichment data structures and methods", + "Authors@R": "c( person(\"Martin\", \"Morgan\", role = \"aut\"), person(\"Seth\", \"Falcon\", role = \"aut\"), person(\"Robert\", \"Gentleman\", role = \"aut\"), person(\"Paul\", \"Villafuerte\", role = \"ctb\", comment = \"'GSEABase' vignette translation from Sweave to Rmarkdown / HTML\"), person(\"Bioconductor Package Maintainer\", role = \"cre\", email = \"maintainer@bioconductor.org\" ))", + "Description": "This package provides classes and methods to support Gene Set Enrichment Analysis (GSEA).", + "License": "Artistic-2.0", + "Depends": [ + "R (>= 2.6.0)", + "BiocGenerics (>= 0.13.8)", + "Biobase (>= 2.17.8)", + "annotate (>= 1.45.3)", + "methods", + "graph (>= 1.37.2)" + ], + "Suggests": [ + "hgu95av2.db", + "GO.db", + "org.Hs.eg.db", + "Rgraphviz", + "ReportingTools", + "testthat", + "BiocStyle", + "knitr", + "RUnit" + ], + "Imports": [ + "AnnotationDbi", + "XML" + ], + "LazyLoad": "yes", + "Collate": "utilities.R AAA.R AllClasses.R AllGenerics.R getObjects.R methods-CollectionType.R methods-ExpressionSet.R methods-GeneColorSet.R methods-GeneIdentifierType.R methods-GeneSet.R methods-GeneSetCollection.R methods-OBOCollection.R", + "VignetteBuilder": "knitr", + "biocViews": "GeneExpression, GeneSetEnrichment, GraphAndNetwork, GO, KEGG", + "git_url": "https://git.bioconductor.org/packages/GSEABase", + "git_branch": "RELEASE_3_22", + "git_last_commit": "8f4e176", + "git_last_commit_date": "2025-10-29", + "Repository": "Bioconductor 3.22", + "NeedsCompilation": "no", + "Author": "Martin Morgan [aut], Seth Falcon [aut], Robert Gentleman [aut], Paul Villafuerte [ctb] ('GSEABase' vignette translation from Sweave to Rmarkdown / HTML), Bioconductor Package Maintainer [cre]", + "Maintainer": "Bioconductor Package Maintainer " + }, + "GSVA": { + "Package": "GSVA", + "Version": "2.4.4", + "Source": "Bioconductor", + "Title": "Gene Set Variation Analysis for Microarray and RNA-Seq Data", + "Authors@R": "c(person(\"Robert\", \"Castelo\", role=c(\"aut\", \"cre\"), comment=c(ORCID=\"0000-0003-2229-4508\"), email=\"robert.castelo@upf.edu\"), person(\"Justin\", \"Guinney\", role=\"aut\", email=\"jguinney@gmail.com\"), person(\"Alexey\", \"Sergushichev\", role=\"ctb\", email=\"alsergbox@gmail.com\"), person(\"Pablo Sebastian\", \"Rodriguez\", role=\"ctb\", email=\"pablo.rodriguez.bio2@gmail.com\"), person(\"Axel\", \"Klenk\", role=\"ctb\", email=\"axel.klenk@gmail.com\"), person(\"Chan Zuckerberg Initiative (CZI)\", role=\"fnd\"), person(\"Spanish Ministry of Science, Innovation and Universities (MCIU)\", role=\"fnd\"))", + "Depends": [ + "R (>= 4.0.0)" + ], + "Imports": [ + "methods", + "stats", + "utils", + "graphics", + "parallel", + "BiocGenerics", + "MatrixGenerics", + "S4Vectors", + "S4Arrays", + "HDF5Array", + "SparseArray", + "DelayedArray", + "IRanges", + "Biobase", + "SummarizedExperiment", + "GSEABase", + "Matrix (>= 1.5-0)", + "BiocParallel", + "SingleCellExperiment", + "BiocSingular", + "SpatialExperiment", + "sparseMatrixStats", + "cli", + "memuse" + ], + "Suggests": [ + "RUnit", + "BiocStyle", + "knitr", + "rmarkdown", + "limma", + "RColorBrewer", + "org.Hs.eg.db", + "genefilter", + "edgeR", + "GSVAdata", + "sva", + "TENxPBMCData", + "TENxVisiumData", + "scuttle", + "scran", + "igraph", + "shiny", + "shinydashboard", + "ggplot2", + "data.table", + "plotly", + "future", + "promises", + "shinybusy", + "shinyjs" + ], + "LinkingTo": [ + "cli" + ], + "Description": "Gene Set Variation Analysis (GSVA) is a non-parametric, unsupervised method for estimating variation of gene set enrichment through the samples of a expression data set. GSVA performs a change in coordinate systems, transforming the data from a gene by sample matrix to a gene-set by sample matrix, thereby allowing the evaluation of pathway enrichment for each sample. This new matrix of GSVA enrichment scores facilitates applying standard analytical methods like functional enrichment, survival analysis, clustering, CNV-pathway analysis or cross-tissue pathway analysis, in a pathway-centric manner.", + "License": "Artistic-2.0", + "VignetteBuilder": "knitr", + "URL": "https://github.com/rcastelo/GSVA", + "BugReports": "https://github.com/rcastelo/GSVA/issues", + "Encoding": "UTF-8", + "biocViews": "FunctionalGenomics, Microarray, RNASeq, Pathways, GeneSetEnrichment", + "Roxygen": "list(markdown = TRUE)", + "RoxygenNote": "7.3.3", + "git_url": "https://git.bioconductor.org/packages/GSVA", + "git_branch": "RELEASE_3_22", + "git_last_commit": "e48e822", + "git_last_commit_date": "2025-12-14", + "Repository": "Bioconductor 3.22", + "NeedsCompilation": "yes", + "Author": "Robert Castelo [aut, cre] (ORCID: ), Justin Guinney [aut], Alexey Sergushichev [ctb], Pablo Sebastian Rodriguez [ctb], Axel Klenk [ctb], Chan Zuckerberg Initiative (CZI) [fnd], Spanish Ministry of Science, Innovation and Universities (MCIU) [fnd]", + "Maintainer": "Robert Castelo " + }, + "GenomeInfoDb": { + "Package": "GenomeInfoDb", + "Version": "1.46.2", + "Source": "Bioconductor", + "Title": "Utilities for manipulating chromosome names, including modifying them to follow a particular naming style", + "Description": "Contains data and functions that define and allow translation between different chromosome sequence naming conventions (e.g., \"chr1\" versus \"1\"), including a function that attempts to place sequence names in their natural, rather than lexicographic, order.", + "biocViews": "Genetics, DataRepresentation, Annotation, GenomeAnnotation", + "URL": "https://bioconductor.org/packages/GenomeInfoDb", + "Video": "http://youtu.be/wdEjCYSXa7w", + "BugReports": "https://github.com/Bioconductor/GenomeInfoDb/issues", + "License": "Artistic-2.0", + "Encoding": "UTF-8", + "Authors@R": "c( person(\"Sonali\", \"Arora\", role=\"aut\"), person(\"Martin\", \"Morgan\", role=\"aut\"), person(\"Marc\", \"Carlson\", role=\"aut\"), person(\"Hervé\", \"Pagès\", role=c(\"aut\", \"cre\"), email=\"hpages.on.github@gmail.com\"), person(\"Prisca Chidimma\", \"Maduka\", role=\"ctb\"), person(\"Atuhurira Kirabo\", \"Kakopo\", role=\"ctb\"), person(\"Haleema\", \"Khan\", role=\"ctb\", comment=\"vignette translation from Sweave to Rmarkdown / HTML\"), person(\"Emmanuel Chigozie\", \"Elendu\", role=\"ctb\"))", + "Depends": [ + "R (>= 4.0.0)", + "methods", + "BiocGenerics (>= 0.53.2)", + "S4Vectors (>= 0.47.6)", + "IRanges (>= 2.41.1)", + "Seqinfo (>= 0.99.2)" + ], + "Imports": [ + "stats", + "utils", + "UCSC.utils" + ], + "Suggests": [ + "GenomeInfoDbData", + "R.utils", + "data.table", + "GenomicRanges", + "Rsamtools", + "GenomicAlignments", + "BSgenome", + "GenomicFeatures", + "TxDb.Dmelanogaster.UCSC.dm3.ensGene", + "BSgenome.Scerevisiae.UCSC.sacCer2", + "BSgenome.Celegans.UCSC.ce2", + "BSgenome.Hsapiens.NCBI.GRCh38", + "RUnit", + "BiocStyle", + "knitr" + ], + "VignetteBuilder": "knitr", + "Collate": "utils.R fetch_table_dump_from_Ensembl_FTP.R list_ftp_dir.R NCBI-utils.R UCSC-utils.R Ensembl-utils.R getChromInfoFromNCBI.R getChromInfoFromUCSC.R getChromInfoFromEnsembl.R loadTaxonomyDb.R mapGenomeBuilds.R seqlevelsStyle.R seqlevels-wrappers.R zzz.R", + "git_url": "https://git.bioconductor.org/packages/GenomeInfoDb", + "git_branch": "RELEASE_3_22", + "git_last_commit": "149c9ca", + "git_last_commit_date": "2025-12-03", + "Repository": "Bioconductor 3.22", + "NeedsCompilation": "no", + "Author": "Sonali Arora [aut], Martin Morgan [aut], Marc Carlson [aut], Hervé Pagès [aut, cre], Prisca Chidimma Maduka [ctb], Atuhurira Kirabo Kakopo [ctb], Haleema Khan [ctb] (vignette translation from Sweave to Rmarkdown / HTML), Emmanuel Chigozie Elendu [ctb]", + "Maintainer": "Hervé Pagès " + }, + "GenomicAlignments": { + "Package": "GenomicAlignments", + "Version": "1.46.0", + "Source": "Bioconductor", + "Title": "Representation and manipulation of short genomic alignments", + "Description": "Provides efficient containers for storing and manipulating short genomic alignments (typically obtained by aligning short reads to a reference genome). This includes read counting, computing the coverage, junction detection, and working with the nucleotide content of the alignments.", + "biocViews": "Infrastructure, DataImport, Genetics, Sequencing, RNASeq, SNP, Coverage, Alignment, ImmunoOncology", + "URL": "https://bioconductor.org/packages/GenomicAlignments", + "Video": "https://www.youtube.com/watch?v=2KqBSbkfhRo , https://www.youtube.com/watch?v=3PK_jx44QTs", + "BugReports": "https://github.com/Bioconductor/GenomicAlignments/issues", + "License": "Artistic-2.0", + "Encoding": "UTF-8", + "Authors@R": "c( person(\"Hervé\", \"Pagès\", role=c(\"aut\", \"cre\"), email=\"hpages.on.github@gmail.com\"), person(\"Valerie\", \"Obenchain\", role=\"aut\"), person(\"Martin\", \"Morgan\", role=\"aut\"), person(\"Fedor\", \"Bezrukov\", role=\"ctb\"), person(\"Robert\", \"Castelo\", role=\"ctb\"), person(\"Halimat C.\", \"Atanda\", role=\"ctb\", comment=\"Translated 'WorkingWithAlignedNucleotides' vignette from Sweave to RMarkdown / HTML.\" ))", + "Depends": [ + "R (>= 4.0.0)", + "methods", + "BiocGenerics (>= 0.37.0)", + "S4Vectors (>= 0.47.6)", + "IRanges (>= 2.23.9)", + "Seqinfo", + "GenomicRanges (>= 1.61.1)", + "SummarizedExperiment (>= 1.39.1)", + "Biostrings (>= 2.77.2)", + "Rsamtools (>= 2.25.1)" + ], + "Imports": [ + "methods", + "utils", + "stats", + "BiocGenerics", + "S4Vectors", + "IRanges", + "GenomicRanges", + "Biostrings", + "Rsamtools", + "BiocParallel", + "cigarillo (>= 0.99.2)" + ], + "LinkingTo": [ + "S4Vectors", + "IRanges" + ], + "Suggests": [ + "ShortRead", + "rtracklayer", + "BSgenome", + "GenomicFeatures", + "RNAseqData.HNRNPC.bam.chr14", + "pasillaBamSubset", + "TxDb.Hsapiens.UCSC.hg19.knownGene", + "TxDb.Dmelanogaster.UCSC.dm3.ensGene", + "BSgenome.Dmelanogaster.UCSC.dm3", + "BSgenome.Hsapiens.UCSC.hg19", + "DESeq2", + "edgeR", + "RUnit", + "knitr", + "BiocStyle" + ], + "Collate": "utils.R cigar-utils.R GAlignments-class.R GAlignmentPairs-class.R GAlignmentsList-class.R GappedReads-class.R OverlapEncodings-class.R findMateAlignment.R readGAlignments.R junctions-methods.R sequenceLayer.R pileLettersAt.R stackStringsFromGAlignments.R intra-range-methods.R coverage-methods.R setops-methods.R findOverlaps-methods.R coordinate-mapping-methods.R encodeOverlaps-methods.R findCompatibleOverlaps-methods.R summarizeOverlaps-methods.R findSpliceOverlaps-methods.R zzz.R", + "VignetteBuilder": "knitr", + "git_url": "https://git.bioconductor.org/packages/GenomicAlignments", + "git_branch": "RELEASE_3_22", + "git_last_commit": "4bd0167", + "git_last_commit_date": "2025-10-29", + "Repository": "Bioconductor 3.22", + "NeedsCompilation": "yes", + "Author": "Hervé Pagès [aut, cre], Valerie Obenchain [aut], Martin Morgan [aut], Fedor Bezrukov [ctb], Robert Castelo [ctb], Halimat C. Atanda [ctb] (Translated 'WorkingWithAlignedNucleotides' vignette from Sweave to RMarkdown / HTML.)", + "Maintainer": "Hervé Pagès " + }, + "GenomicFeatures": { + "Package": "GenomicFeatures", + "Version": "1.62.0", + "Source": "Bioconductor", + "Title": "Query the gene models of a given organism/assembly", + "Description": "Extract the genomic locations of genes, transcripts, exons, introns, and CDS, for the gene models stored in a TxDb object. A TxDb object is a small database that contains the gene models of a given organism/assembly. Bioconductor provides a small collection of TxDb objects in the form of ready-to-install TxDb packages for the most commonly studied organisms. Additionally, the user can easily make a TxDb object (or package) for the organism/assembly of their choice by using the tools from the txdbmaker package.", + "biocViews": "Genetics, Infrastructure, Annotation, Sequencing, GenomeAnnotation", + "URL": "https://bioconductor.org/packages/GenomicFeatures", + "BugReports": "https://github.com/Bioconductor/GenomicFeatures/issues", + "License": "Artistic-2.0", + "Encoding": "UTF-8", + "Authors@R": "c( person(\"H.\", \"Pagès\", role=c(\"aut\", \"cre\"), email=\"hpages.on.github@gmail.com\"), person(\"M.\", \"Carlson\", role=\"aut\"), person(\"P.\", \"Aboyoun\", role=\"aut\"), person(\"S.\", \"Falcon\", role=\"aut\"), person(\"M.\", \"Morgan\", role=\"aut\"), person(\"D.\", \"Sarkar\", role=\"aut\"), person(\"M.\", \"Lawrence\", role=\"aut\"), person(\"V.\", \"Obenchain\", role=\"aut\"), person(\"S.\", \"Arora\", role=\"ctb\"), person(\"J.\", \"MacDonald\", role=\"ctb\"), person(\"M.\", \"Ramos\", role=\"ctb\"), person(\"S.\", \"Saini\", role=\"ctb\"), person(\"P.\", \"Shannon\", role=\"ctb\"), person(\"L.\", \"Shepherd\", role=\"ctb\"), person(\"D.\", \"Tenenbaum\", role=\"ctb\"), person(\"D.\", \"Van Twisk\", role=\"ctb\"))", + "Depends": [ + "R (>= 3.5.0)", + "BiocGenerics (>= 0.51.2)", + "S4Vectors (>= 0.47.6)", + "IRanges (>= 2.37.1)", + "Seqinfo (>= 0.99.2)", + "GenomicRanges (>= 1.61.1)", + "AnnotationDbi (>= 1.41.4)" + ], + "Imports": [ + "methods", + "utils", + "stats", + "DBI", + "XVector", + "Biostrings (>= 2.77.2)", + "rtracklayer (>= 1.69.1)" + ], + "Suggests": [ + "GenomeInfoDb", + "txdbmaker", + "org.Mm.eg.db", + "org.Hs.eg.db", + "BSgenome", + "BSgenome.Hsapiens.UCSC.hg19 (>= 1.3.17)", + "BSgenome.Celegans.UCSC.ce11", + "BSgenome.Dmelanogaster.UCSC.dm3 (>= 1.3.17)", + "FDb.UCSC.tRNAs", + "TxDb.Hsapiens.UCSC.hg19.knownGene", + "TxDb.Celegans.UCSC.ce11.ensGene", + "TxDb.Dmelanogaster.UCSC.dm3.ensGene (>= 2.7.1)", + "TxDb.Mmusculus.UCSC.mm10.knownGene (>= 3.4.7)", + "TxDb.Hsapiens.UCSC.hg19.lincRNAsTranscripts", + "TxDb.Hsapiens.UCSC.hg38.knownGene (>= 3.4.6)", + "SNPlocs.Hsapiens.dbSNP144.GRCh38", + "Rsamtools", + "pasillaBamSubset (>= 0.0.5)", + "GenomicAlignments (>= 1.15.7)", + "ensembldb", + "AnnotationFilter", + "RUnit", + "BiocStyle", + "knitr", + "markdown" + ], + "VignetteBuilder": "knitr", + "Collate": "utils.R TxDb-schema.R TxDb-SELECT-helpers.R TxDb-class.R FeatureDb-class.R mapIdsToRanges.R id2name.R transcripts.R transcriptsBy.R transcriptsByOverlaps.R transcriptLengths.R exonicParts.R extendExonsIntoIntrons.R features.R tRNAs.R extractTranscriptSeqs.R extractUpstreamSeqs.R getPromoterSeq-methods.R select-methods.R nearest-methods.R transcriptLocs2refLocs.R coordinate-mapping-methods.R proteinToGenome.R coverageByTranscript.R makeTxDb.R makeTxDbFromUCSC.R makeTxDbFromBiomart.R makeTxDbFromEnsembl.R makeTxDbFromGRanges.R makeTxDbFromGFF.R makeFeatureDbFromUCSC.R makeTxDbPackage.R zzz.R", + "git_url": "https://git.bioconductor.org/packages/GenomicFeatures", + "git_branch": "RELEASE_3_22", + "git_last_commit": "f4dfd41", + "git_last_commit_date": "2025-10-29", + "Repository": "Bioconductor 3.22", + "NeedsCompilation": "no", + "Author": "H. Pagès [aut, cre], M. Carlson [aut], P. Aboyoun [aut], S. Falcon [aut], M. Morgan [aut], D. Sarkar [aut], M. Lawrence [aut], V. Obenchain [aut], S. Arora [ctb], J. MacDonald [ctb], M. Ramos [ctb], S. Saini [ctb], P. Shannon [ctb], L. Shepherd [ctb], D. Tenenbaum [ctb], D. Van Twisk [ctb]", + "Maintainer": "H. Pagès " + }, + "GenomicRanges": { + "Package": "GenomicRanges", + "Version": "1.62.1", + "Source": "Bioconductor", + "Title": "Representation and manipulation of genomic intervals", + "Description": "The ability to efficiently represent and manipulate genomic annotations and alignments is playing a central role when it comes to analyzing high-throughput sequencing data (a.k.a. NGS data). The GenomicRanges package defines general purpose containers for storing and manipulating genomic intervals and variables defined along a genome. More specialized containers for representing and manipulating short alignments against a reference genome, or a matrix-like summarization of an experiment, are defined in the GenomicAlignments and SummarizedExperiment packages, respectively. Both packages build on top of the GenomicRanges infrastructure.", + "biocViews": "Genetics, Infrastructure, DataRepresentation, Sequencing, Annotation, GenomeAnnotation, Coverage", + "URL": "https://bioconductor.org/packages/GenomicRanges", + "BugReports": "https://github.com/Bioconductor/GenomicRanges/issues", + "License": "Artistic-2.0", + "Encoding": "UTF-8", + "Authors@R": "c( person(\"Patrick\", \"Aboyoun\", role=\"aut\"), person(\"Hervé\", \"Pagès\", role=c(\"aut\", \"cre\"), email=\"hpages.on.github@gmail.com\"), person(\"Michael\", \"Lawrence\", role=\"aut\"), person(\"Sonali\", \"Arora\", role=\"ctb\"), person(\"Martin\", \"Morgan\", role=\"ctb\"), person(\"Kayla\", \"Morrell\", role=\"ctb\"), person(\"Valerie\", \"Obenchain\", role=\"ctb\"), person(\"Marcel\", \"Ramos\", role=\"ctb\"), person(\"Lori\", \"Shepherd\", role=\"ctb\"), person(\"Dan\", \"Tenenbaum\", role=\"ctb\"), person(\"Daniel\", \"van Twisk\", role=\"ctb\"))", + "Depends": [ + "R (>= 4.0.0)", + "methods", + "stats4", + "BiocGenerics (>= 0.53.2)", + "S4Vectors (>= 0.45.2)", + "IRanges (>= 2.43.6)", + "Seqinfo (>= 0.99.3)" + ], + "Imports": [ + "utils", + "stats" + ], + "LinkingTo": [ + "S4Vectors", + "IRanges" + ], + "Suggests": [ + "GenomeInfoDb", + "Biobase", + "AnnotationDbi", + "annotate", + "Biostrings (>= 2.77.2)", + "SummarizedExperiment (>= 1.39.1)", + "Rsamtools", + "GenomicAlignments", + "BSgenome", + "GenomicFeatures", + "UCSC.utils", + "txdbmaker", + "Gviz", + "VariantAnnotation", + "AnnotationHub", + "DESeq2", + "DEXSeq", + "edgeR", + "KEGGgraph", + "RNAseqData.HNRNPC.bam.chr14", + "pasillaBamSubset", + "KEGGREST", + "hgu95av2.db", + "hgu95av2probe", + "BSgenome.Scerevisiae.UCSC.sacCer2", + "BSgenome.Hsapiens.UCSC.hg38", + "BSgenome.Mmusculus.UCSC.mm10", + "TxDb.Athaliana.BioMart.plantsmart22", + "TxDb.Dmelanogaster.UCSC.dm3.ensGene", + "TxDb.Hsapiens.UCSC.hg38.knownGene", + "TxDb.Mmusculus.UCSC.mm10.knownGene", + "RUnit", + "digest", + "knitr", + "rmarkdown", + "BiocStyle" + ], + "VignetteBuilder": "knitr", + "Collate": "normarg-utils.R utils.R phicoef.R transcript-utils.R constraint.R strand-utils.R genomic-range-squeezers.R GenomicRanges-class.R GenomicRanges-comparison.R GRanges-class.R GPos-class.R GRangesFactor-class.R DelegatingGenomicRanges-class.R GNCList-class.R GenomicRangesList-class.R GRangesList-class.R makeGRangesFromDataFrame.R makeGRangesListFromDataFrame.R RangedData-methods.R findOverlaps-methods.R intra-range-methods.R inter-range-methods.R coverage-methods.R setops-methods.R subtract-methods.R nearest-methods.R absoluteRanges.R tileGenome.R tile-methods.R genomicvars.R zzz.R", + "git_url": "https://git.bioconductor.org/packages/GenomicRanges", + "git_branch": "RELEASE_3_22", + "git_last_commit": "efdd1c3", + "git_last_commit_date": "2025-12-08", + "Repository": "Bioconductor 3.22", + "NeedsCompilation": "yes", + "Author": "Patrick Aboyoun [aut], Hervé Pagès [aut, cre], Michael Lawrence [aut], Sonali Arora [ctb], Martin Morgan [ctb], Kayla Morrell [ctb], Valerie Obenchain [ctb], Marcel Ramos [ctb], Lori Shepherd [ctb], Dan Tenenbaum [ctb], Daniel van Twisk [ctb]", + "Maintainer": "Hervé Pagès " + }, + "GetoptLong": { + "Package": "GetoptLong", + "Version": "1.1.0", + "Source": "Repository", + "Type": "Package", + "Title": "Parsing Command-Line Arguments and Simple Variable Interpolation", + "Date": "2025-11-28", + "Authors@R": "person(\"Zuguang\", \"Gu\", email = \"z.gu@dkfz.de\", role = c(\"aut\", \"cre\"), comment = c('ORCID'=\"0000-0002-7395-8709\"))", + "Depends": [ + "R (>= 4.0.0)" + ], + "Imports": [ + "rjson", + "GlobalOptions (>= 0.1.0)", + "methods", + "crayon" + ], + "Suggests": [ + "testthat (>= 1.0.0)", + "knitr", + "markdown", + "rmarkdown" + ], + "VignetteBuilder": "knitr", + "Description": "This is a command-line argument parser which wraps the powerful Perl module Getopt::Long and with some adaptations for easier use in R. It also provides a simple way for variable interpolation in R.", + "URL": "https://github.com/jokergoo/GetoptLong", + "SystemRequirements": "Perl, Getopt::Long", + "License": "MIT + file LICENSE", + "NeedsCompilation": "no", + "Author": "Zuguang Gu [aut, cre] (ORCID: )", + "Maintainer": "Zuguang Gu ", + "Repository": "CRAN" + }, + "GlobalOptions": { + "Package": "GlobalOptions", + "Version": "0.1.3", + "Source": "Repository", + "Type": "Package", + "Title": "Generate Functions to Get or Set Global Options", + "Date": "2025-11-28", + "Authors@R": "person(\"Zuguang\", \"Gu\", email = \"z.gu@dkfz.de\", role = c(\"aut\", \"cre\"), comment = c('ORCID'=\"0000-0002-7395-8709\"))", + "Depends": [ + "R (>= 4.0.0)", + "methods" + ], + "Imports": [ + "utils" + ], + "Suggests": [ + "testthat (>= 1.0.0)", + "knitr", + "markdown", + "GetoptLong", + "rmarkdown" + ], + "VignetteBuilder": "knitr", + "Description": "It provides more configurations on the option values such as validation and filtering on the values, making options invisible or private.", + "URL": "https://github.com/jokergoo/GlobalOptions", + "License": "MIT + file LICENSE", + "NeedsCompilation": "no", + "Author": "Zuguang Gu [aut, cre] (ORCID: )", + "Maintainer": "Zuguang Gu ", + "Repository": "CRAN" + }, + "HDF5Array": { + "Package": "HDF5Array", + "Version": "1.38.0", + "Source": "Bioconductor", + "Title": "HDF5 datasets as array-like objects in R", + "Description": "The HDF5Array package is an HDF5 backend for DelayedArray objects. It implements the HDF5Array, H5SparseMatrix, H5ADMatrix, and TENxMatrix classes, 4 convenient and memory-efficient array-like containers for representing and manipulating either: (1) a conventional (a.k.a. dense) HDF5 dataset, (2) an HDF5 sparse matrix (stored in CSR/CSC/Yale format), (3) the central matrix of an h5ad file (or any matrix in the /layers group), or (4) a 10x Genomics sparse matrix. All these containers are DelayedArray extensions and thus support all operations (delayed or block-processed) supported by DelayedArray objects.", + "biocViews": "Infrastructure, DataRepresentation, DataImport, Sequencing, RNASeq, Coverage, Annotation, GenomeAnnotation, SingleCell, ImmunoOncology", + "URL": "https://bioconductor.org/packages/HDF5Array", + "BugReports": "https://github.com/Bioconductor/HDF5Array/issues", + "License": "Artistic-2.0", + "Encoding": "UTF-8", + "Authors@R": "person(\"Hervé\", \"Pagès\", role=c(\"aut\", \"cre\"), email=\"hpages.on.github@gmail.com\", comment=c(ORCID=\"0009-0002-8272-4522\"))", + "Depends": [ + "R (>= 3.4)", + "methods", + "SparseArray (>= 1.7.5)", + "DelayedArray (>= 0.33.5)", + "h5mread (>= 0.99.4)" + ], + "Imports": [ + "utils", + "stats", + "tools", + "Matrix", + "BiocGenerics (>= 0.51.2)", + "S4Vectors", + "IRanges", + "S4Arrays (>= 1.1.1)", + "rhdf5" + ], + "Suggests": [ + "BiocParallel", + "GenomicRanges", + "SummarizedExperiment (>= 1.15.1)", + "h5vcData", + "ExperimentHub", + "TENxBrainData", + "zellkonverter", + "GenomicFeatures", + "SingleCellExperiment", + "DelayedMatrixStats", + "genefilter", + "RSpectra", + "RUnit", + "knitr", + "rmarkdown", + "BiocStyle" + ], + "VignetteBuilder": "knitr", + "Collate": "utils.R h5utils.R HDF5ArraySeed-class.R HDF5Array-class.R ReshapedHDF5ArraySeed-class.R ReshapedHDF5Array-class.R dump-management.R writeHDF5Array.R saveHDF5SummarizedExperiment.R H5SparseMatrixSeed-class.R H5SparseMatrix-class.R H5ADMatrixSeed-class.R H5ADMatrix-class.R TENxMatrixSeed-class.R TENxMatrix-class.R writeTENxMatrix.R zzz.R", + "git_url": "https://git.bioconductor.org/packages/HDF5Array", + "git_branch": "RELEASE_3_22", + "git_last_commit": "9bca08f", + "git_last_commit_date": "2025-10-29", + "Repository": "Bioconductor 3.22", + "NeedsCompilation": "no", + "Author": "Hervé Pagès [aut, cre] (ORCID: )", + "Maintainer": "Hervé Pagès " + }, + "IRanges": { + "Package": "IRanges", + "Version": "2.44.0", + "Source": "Bioconductor", + "Title": "Foundation of integer range manipulation in Bioconductor", + "Description": "Provides efficient low-level and highly reusable S4 classes for storing, manipulating and aggregating over annotated ranges of integers. Implements an algebra of range operations, including efficient algorithms for finding overlaps and nearest neighbors. Defines efficient list-like classes for storing, transforming and aggregating large grouped data, i.e., collections of atomic vectors and DataFrames.", + "biocViews": "Infrastructure, DataRepresentation", + "URL": "https://bioconductor.org/packages/IRanges", + "BugReports": "https://github.com/Bioconductor/IRanges/issues", + "License": "Artistic-2.0", + "Encoding": "UTF-8", + "Authors@R": "c( person(\"Hervé\", \"Pagès\", role=c(\"aut\", \"cre\"), email=\"hpages.on.github@gmail.com\"), person(\"Patrick\", \"Aboyoun\", role=\"aut\"), person(\"Michael\", \"Lawrence\", role=\"aut\"))", + "Depends": [ + "R (>= 4.0.0)", + "methods", + "utils", + "stats", + "BiocGenerics (>= 0.53.2)", + "S4Vectors (>= 0.47.6)" + ], + "Imports": [ + "stats4" + ], + "LinkingTo": [ + "S4Vectors" + ], + "Suggests": [ + "XVector", + "GenomicRanges", + "Rsamtools", + "GenomicAlignments", + "GenomicFeatures", + "BSgenome.Celegans.UCSC.ce2", + "pasillaBamSubset", + "RUnit", + "BiocStyle" + ], + "Collate": "thread-control.R range-squeezers.R Vector-class-leftovers.R DataFrameList-class.R DataFrameList-utils.R AtomicList-class.R AtomicList-utils.R Ranges-and-RangesList-classes.R IPosRanges-class.R IPosRanges-comparison.R IntegerRangesList-class.R IRanges-class.R IRanges-constructor.R makeIRangesFromDataFrame.R IRanges-utils.R Rle-class-leftovers.R IPos-class.R subsetting-utils.R Grouping-class.R Views-class.R RleViews-class.R RleViews-summarization.R extractList.R seqapply.R multisplit.R SimpleGrouping-class.R IRangesList-class.R IPosList-class.R ViewsList-class.R RleViewsList-class.R RleViewsList-utils.R RangedSelection-class.R MaskCollection-class.R read.Mask.R CompressedList-class.R CompressedList-comparison.R CompressedHitsList-class.R CompressedDataFrameList-class.R CompressedAtomicList-class.R CompressedAtomicList-summarization.R CompressedGrouping-class.R CompressedRangesList-class.R Hits-class-leftovers.R NCList-class.R findOverlaps-methods.R windows-methods.R intra-range-methods.R inter-range-methods.R reverse-methods.R coverage-methods.R cvg-methods.R slice-methods.R setops-methods.R nearest-methods.R cbind-Rle-methods.R tile-methods.R extractListFragments.R zzz.R", + "git_url": "https://git.bioconductor.org/packages/IRanges", + "git_branch": "RELEASE_3_22", + "git_last_commit": "964a290", + "git_last_commit_date": "2025-10-29", + "Repository": "Bioconductor 3.22", + "NeedsCompilation": "yes", + "Author": "Hervé Pagès [aut, cre], Patrick Aboyoun [aut], Michael Lawrence [aut]", + "Maintainer": "Hervé Pagès " + }, + "KEGGREST": { + "Package": "KEGGREST", + "Version": "1.50.0", + "Source": "Bioconductor", + "Title": "Client-side REST access to the Kyoto Encyclopedia of Genes and Genomes (KEGG)", + "Authors@R": "c( person(\"Dan\", \"Tenenbaum\", role = \"aut\"), person(\"Bioconductor Package\", \"Maintainer\", role = c(\"aut\", \"cre\"), email = \"maintainer@bioconductor.org\"), person(\"Martin\", \"Morgan\", role = \"ctb\"), person(\"Kozo\", \"Nishida\", role = \"ctb\"), person(\"Marcel\", \"Ramos\", role = \"ctb\"), person(\"Kristina\", \"Riemer\", role = \"ctb\"), person(\"Lori\", \"Shepherd\", role = \"ctb\"), person(\"Jeremy\", \"Volkening\", role = \"ctb\") )", + "Depends": [ + "R (>= 3.5.0)" + ], + "Imports": [ + "methods", + "httr", + "png", + "Biostrings" + ], + "Suggests": [ + "RUnit", + "BiocGenerics", + "BiocStyle", + "knitr", + "markdown" + ], + "Description": "A package that provides a client interface to the Kyoto Encyclopedia of Genes and Genomes (KEGG) REST API. Only for academic use by academic users belonging to academic institutions (see ). Note that KEGGREST is based on KEGGSOAP by J. Zhang, R. Gentleman, and Marc Carlson, and KEGG (python package) by Aurelien Mazurie.", + "URL": "https://bioconductor.org/packages/KEGGREST", + "BugReports": "https://github.com/Bioconductor/KEGGREST/issues", + "License": "Artistic-2.0", + "VignetteBuilder": "knitr", + "biocViews": "Annotation, Pathways, ThirdPartyClient, KEGG", + "RoxygenNote": "7.1.1", + "Date": "2025-06-18", + "git_url": "https://git.bioconductor.org/packages/KEGGREST", + "git_branch": "RELEASE_3_22", + "git_last_commit": "bb924dc", + "git_last_commit_date": "2025-10-29", + "Repository": "Bioconductor 3.22", + "NeedsCompilation": "no", + "Author": "Dan Tenenbaum [aut], Bioconductor Package Maintainer [aut, cre], Martin Morgan [ctb], Kozo Nishida [ctb], Marcel Ramos [ctb], Kristina Riemer [ctb], Lori Shepherd [ctb], Jeremy Volkening [ctb]", + "Maintainer": "Bioconductor Package Maintainer " + }, + "KernSmooth": { + "Package": "KernSmooth", + "Version": "2.23-26", + "Source": "Repository", + "Priority": "recommended", + "Date": "2024-12-10", + "Title": "Functions for Kernel Smoothing Supporting Wand & Jones (1995)", + "Authors@R": "c(person(\"Matt\", \"Wand\", role = \"aut\", email = \"Matt.Wand@uts.edu.au\"), person(\"Cleve\", \"Moler\", role = \"ctb\", comment = \"LINPACK routines in src/d*\"), person(\"Brian\", \"Ripley\", role = c(\"trl\", \"cre\", \"ctb\"), email = \"Brian.Ripley@R-project.org\", comment = \"R port and updates\"))", + "Note": "Maintainers are not available to give advice on using a package they did not author.", + "Depends": [ + "R (>= 2.5.0)", + "stats" + ], + "Suggests": [ + "MASS", + "carData" + ], + "Description": "Functions for kernel smoothing (and density estimation) corresponding to the book: Wand, M.P. and Jones, M.C. (1995) \"Kernel Smoothing\".", + "License": "Unlimited", + "ByteCompile": "yes", + "NeedsCompilation": "yes", + "Author": "Matt Wand [aut], Cleve Moler [ctb] (LINPACK routines in src/d*), Brian Ripley [trl, cre, ctb] (R port and updates)", + "Maintainer": "Brian Ripley ", + "Repository": "CRAN" + }, + "LoomExperiment": { + "Package": "LoomExperiment", + "Version": "1.28.0", + "Source": "Bioconductor", + "Title": "LoomExperiment container", + "Description": "The LoomExperiment package provide a means to easily convert the Bioconductor \"Experiment\" classes to loom files and vice versa.", + "Encoding": "UTF-8", + "Author": "Martin Morgan, Daniel Van Twisk", + "Maintainer": "Bioconductor Package Maintainer ", + "Depends": [ + "R (>= 3.5.0)", + "S4Vectors", + "SingleCellExperiment", + "SummarizedExperiment", + "methods", + "rhdf5", + "BiocIO" + ], + "Imports": [ + "DelayedArray", + "GenomicRanges", + "HDF5Array", + "Matrix", + "stats", + "stringr", + "utils" + ], + "Suggests": [ + "testthat", + "BiocStyle", + "knitr", + "rmarkdown", + "reticulate" + ], + "Collate": "AllGenerics.R utils.R SharedMethods.R LoomGraph-class.R LoomExperiment-class.R RangedLoomExperiment-class.R SingleCellLoomExperiment-class.R LoomFile-class.R export-method.R import-method.R", + "License": "Artistic-2.0", + "VignetteBuilder": "knitr", + "biocViews": "ImmunoOncology, DataRepresentation, DataImport, Infrastructure, SingleCell", + "RoxygenNote": "7.1.1", + "git_url": "https://git.bioconductor.org/packages/LoomExperiment", + "git_branch": "RELEASE_3_22", + "git_last_commit": "4b227ef", + "git_last_commit_date": "2025-10-29", + "Repository": "Bioconductor 3.22", + "NeedsCompilation": "no" + }, + "MASS": { + "Package": "MASS", + "Version": "7.3-65", + "Source": "Repository", + "Priority": "recommended", + "Date": "2025-02-19", + "Revision": "$Rev: 3681 $", + "Depends": [ + "R (>= 4.4.0)", + "grDevices", + "graphics", + "stats", + "utils" + ], + "Imports": [ + "methods" + ], + "Suggests": [ + "lattice", + "nlme", + "nnet", + "survival" + ], + "Authors@R": "c(person(\"Brian\", \"Ripley\", role = c(\"aut\", \"cre\", \"cph\"), email = \"Brian.Ripley@R-project.org\"), person(\"Bill\", \"Venables\", role = c(\"aut\", \"cph\")), person(c(\"Douglas\", \"M.\"), \"Bates\", role = \"ctb\"), person(\"Kurt\", \"Hornik\", role = \"trl\", comment = \"partial port ca 1998\"), person(\"Albrecht\", \"Gebhardt\", role = \"trl\", comment = \"partial port ca 1998\"), person(\"David\", \"Firth\", role = \"ctb\", comment = \"support functions for polr\"))", + "Description": "Functions and datasets to support Venables and Ripley, \"Modern Applied Statistics with S\" (4th edition, 2002).", + "Title": "Support Functions and Datasets for Venables and Ripley's MASS", + "LazyData": "yes", + "ByteCompile": "yes", + "License": "GPL-2 | GPL-3", + "URL": "http://www.stats.ox.ac.uk/pub/MASS4/", + "Contact": "", + "NeedsCompilation": "yes", + "Author": "Brian Ripley [aut, cre, cph], Bill Venables [aut, cph], Douglas M. Bates [ctb], Kurt Hornik [trl] (partial port ca 1998), Albrecht Gebhardt [trl] (partial port ca 1998), David Firth [ctb] (support functions for polr)", + "Maintainer": "Brian Ripley ", + "Repository": "CRAN" + }, + "Matrix": { + "Package": "Matrix", + "Version": "1.7-4", + "Source": "Repository", + "VersionNote": "do also bump src/version.h, inst/include/Matrix/version.h", + "Date": "2025-08-27", + "Priority": "recommended", + "Title": "Sparse and Dense Matrix Classes and Methods", + "Description": "A rich hierarchy of sparse and dense matrix classes, including general, symmetric, triangular, and diagonal matrices with numeric, logical, or pattern entries. Efficient methods for operating on such matrices, often wrapping the 'BLAS', 'LAPACK', and 'SuiteSparse' libraries.", + "License": "GPL (>= 2) | file LICENCE", + "URL": "https://Matrix.R-forge.R-project.org", + "BugReports": "https://R-forge.R-project.org/tracker/?atid=294&group_id=61", + "Contact": "Matrix-authors@R-project.org", + "Authors@R": "c(person(\"Douglas\", \"Bates\", role = \"aut\", comment = c(ORCID = \"0000-0001-8316-9503\")), person(\"Martin\", \"Maechler\", role = c(\"aut\", \"cre\"), email = \"mmaechler+Matrix@gmail.com\", comment = c(ORCID = \"0000-0002-8685-9910\")), person(\"Mikael\", \"Jagan\", role = \"aut\", comment = c(ORCID = \"0000-0002-3542-2938\")), person(\"Timothy A.\", \"Davis\", role = \"ctb\", comment = c(ORCID = \"0000-0001-7614-6899\", \"SuiteSparse libraries\", \"collaborators listed in dir(system.file(\\\"doc\\\", \\\"SuiteSparse\\\", package=\\\"Matrix\\\"), pattern=\\\"License\\\", full.names=TRUE, recursive=TRUE)\")), person(\"George\", \"Karypis\", role = \"ctb\", comment = c(ORCID = \"0000-0003-2753-1437\", \"METIS library\", \"Copyright: Regents of the University of Minnesota\")), person(\"Jason\", \"Riedy\", role = \"ctb\", comment = c(ORCID = \"0000-0002-4345-4200\", \"GNU Octave's condest() and onenormest()\", \"Copyright: Regents of the University of California\")), person(\"Jens\", \"Oehlschlägel\", role = \"ctb\", comment = \"initial nearPD()\"), person(\"R Core Team\", role = \"ctb\", comment = c(ROR = \"02zz1nj61\", \"base R's matrix implementation\")))", + "Depends": [ + "R (>= 4.4)", + "methods" + ], + "Imports": [ + "grDevices", + "graphics", + "grid", + "lattice", + "stats", + "utils" + ], + "Suggests": [ + "MASS", + "datasets", + "sfsmisc", + "tools" + ], + "Enhances": [ + "SparseM", + "graph" + ], + "LazyData": "no", + "LazyDataNote": "not possible, since we use data/*.R and our S4 classes", + "BuildResaveData": "no", + "Encoding": "UTF-8", + "NeedsCompilation": "yes", + "Author": "Douglas Bates [aut] (ORCID: ), Martin Maechler [aut, cre] (ORCID: ), Mikael Jagan [aut] (ORCID: ), Timothy A. Davis [ctb] (ORCID: , SuiteSparse libraries, collaborators listed in dir(system.file(\"doc\", \"SuiteSparse\", package=\"Matrix\"), pattern=\"License\", full.names=TRUE, recursive=TRUE)), George Karypis [ctb] (ORCID: , METIS library, Copyright: Regents of the University of Minnesota), Jason Riedy [ctb] (ORCID: , GNU Octave's condest() and onenormest(), Copyright: Regents of the University of California), Jens Oehlschlägel [ctb] (initial nearPD()), R Core Team [ctb] (ROR: , base R's matrix implementation)", + "Maintainer": "Martin Maechler ", + "Repository": "CRAN" + }, + "MatrixGenerics": { + "Package": "MatrixGenerics", + "Version": "1.22.0", + "Source": "Bioconductor", + "Title": "S4 Generic Summary Statistic Functions that Operate on Matrix-Like Objects", + "Description": "S4 generic functions modeled after the 'matrixStats' API for alternative matrix implementations. Packages with alternative matrix implementation can depend on this package and implement the generic functions that are defined here for a useful set of row and column summary statistics. Other package developers can import this package and handle a different matrix implementations without worrying about incompatibilities.", + "biocViews": "Infrastructure, Software", + "URL": "https://bioconductor.org/packages/MatrixGenerics", + "BugReports": "https://github.com/Bioconductor/MatrixGenerics/issues", + "License": "Artistic-2.0", + "Encoding": "UTF-8", + "Authors@R": "c(person(\"Constantin\", \"Ahlmann-Eltze\", email = \"artjom31415@googlemail.com\", role = c(\"aut\"), comment = c(ORCID = \"0000-0002-3762-068X\")), person(\"Peter\", \"Hickey\", role = c(\"aut\", \"cre\"), email = \"peter.hickey@gmail.com\", comment = c(ORCID = \"0000-0002-8153-6258\")), person(\"Hervé\", \"Pagès\", email = \"hpages.on.github@gmail.com\", role = \"aut\"))", + "Depends": [ + "matrixStats (>= 1.4.1)" + ], + "Imports": [ + "methods" + ], + "Suggests": [ + "Matrix", + "sparseMatrixStats", + "SparseArray", + "DelayedArray", + "DelayedMatrixStats", + "SummarizedExperiment", + "testthat (>= 2.1.0)" + ], + "RoxygenNote": "7.3.2", + "Roxygen": "list(markdown = TRUE, old_usage = TRUE)", + "Collate": "'MatrixGenerics-package.R' 'rowAlls.R' 'rowAnyNAs.R' 'rowAnys.R' 'rowAvgsPerColSet.R' 'rowCollapse.R' 'rowCounts.R' 'rowCummaxs.R' 'rowCummins.R' 'rowCumprods.R' 'rowCumsums.R' 'rowDiffs.R' 'rowIQRDiffs.R' 'rowIQRs.R' 'rowLogSumExps.R' 'rowMadDiffs.R' 'rowMads.R' 'rowMaxs.R' 'rowMeans.R' 'rowMeans2.R' 'rowMedians.R' 'rowMins.R' 'rowOrderStats.R' 'rowProds.R' 'rowQuantiles.R' 'rowRanges.R' 'rowRanks.R' 'rowSdDiffs.R' 'rowSds.R' 'rowSums.R' 'rowSums2.R' 'rowTabulates.R' 'rowVarDiffs.R' 'rowVars.R' 'rowWeightedMads.R' 'rowWeightedMeans.R' 'rowWeightedMedians.R' 'rowWeightedSds.R' 'rowWeightedVars.R'", + "git_url": "https://git.bioconductor.org/packages/MatrixGenerics", + "git_branch": "RELEASE_3_22", + "git_last_commit": "75d9a54", + "git_last_commit_date": "2025-10-29", + "Repository": "Bioconductor 3.22", + "NeedsCompilation": "no", + "Author": "Constantin Ahlmann-Eltze [aut] (ORCID: ), Peter Hickey [aut, cre] (ORCID: ), Hervé Pagès [aut]", + "Maintainer": "Peter Hickey " + }, + "PLIER": { + "Package": "PLIER", + "Version": "0.99.0", + "Source": "GitHub", + "Type": "Package", + "Title": "Pathway-Level Information Extractor (PLIER): a generative model for gene expression data", + "Date": "2019-12-31", + "Author": "Maria Chikina, Weiguang Mao", + "Maintainer": "", + "Description": "Prior information", + "License": "GPL (>=2)", + "RoxygenNote": "6.0.1", + "VignetteBuilder": "knitr", + "biocViews": "qvalue", + "Depends": [ + "RColorBrewer", + "gplots", + "pheatmap", + "glmnet", + "knitr", + "rsvd", + "qvalue" + ], + "RemoteType": "github", + "RemoteHost": "api.github.com", + "RemoteRepo": "PLIER", + "RemoteUsername": "wgmao", + "RemoteRef": "v0.1.6", + "RemoteSha": "08ed6b54e4efe5249107cb335cd8e169657cbc44", + "NeedsCompilation": "no" + }, + "ProtGenerics": { + "Package": "ProtGenerics", + "Version": "1.42.0", + "Source": "Bioconductor", + "Title": "Generic infrastructure for Bioconductor mass spectrometry packages", + "Description": "S4 generic functions and classes needed by Bioconductor proteomics packages.", + "Author": "Laurent Gatto , Johannes Rainer ", + "Maintainer": "Laurent Gatto ", + "biocViews": "Infrastructure, Proteomics, MassSpectrometry", + "URL": "https://github.com/RforMassSpectrometry/ProtGenerics", + "Depends": [ + "methods" + ], + "Suggests": [ + "testthat" + ], + "License": "Artistic-2.0", + "NeedsCompilation": "no", + "RoxygenNote": "7.3.2", + "git_url": "https://git.bioconductor.org/packages/ProtGenerics", + "git_branch": "RELEASE_3_22", + "git_last_commit": "672cf15", + "git_last_commit_date": "2025-10-29", + "Repository": "Bioconductor 3.22" + }, + "R.methodsS3": { + "Package": "R.methodsS3", + "Version": "1.8.2", + "Source": "Repository", + "Depends": [ + "R (>= 2.13.0)" + ], + "Imports": [ + "utils" + ], + "Suggests": [ + "codetools" + ], + "Title": "S3 Methods Simplified", + "Authors@R": "c(person(\"Henrik\", \"Bengtsson\", role=c(\"aut\", \"cre\", \"cph\"), email = \"henrikb@braju.com\"))", + "Author": "Henrik Bengtsson [aut, cre, cph]", + "Maintainer": "Henrik Bengtsson ", + "Description": "Methods that simplify the setup of S3 generic functions and S3 methods. Major effort has been made in making definition of methods as simple as possible with a minimum of maintenance for package developers. For example, generic functions are created automatically, if missing, and naming conflict are automatically solved, if possible. The method setMethodS3() is a good start for those who in the future may want to migrate to S4. This is a cross-platform package implemented in pure R that generates standard S3 methods.", + "License": "LGPL (>= 2.1)", + "LazyLoad": "TRUE", + "URL": "https://github.com/HenrikBengtsson/R.methodsS3", + "BugReports": "https://github.com/HenrikBengtsson/R.methodsS3/issues", + "NeedsCompilation": "no", + "Repository": "https://packagemanager.posit.co/cran/latest", + "Encoding": "UTF-8" + }, + "R.oo": { + "Package": "R.oo", + "Version": "1.27.1", + "Source": "Repository", + "Depends": [ + "R (>= 2.13.0)", + "R.methodsS3 (>= 1.8.2)" + ], + "Imports": [ + "methods", + "utils" + ], + "Suggests": [ + "tools" + ], + "Title": "R Object-Oriented Programming with or without References", + "Authors@R": "c(person(\"Henrik\", \"Bengtsson\", role=c(\"aut\", \"cre\", \"cph\"), email = \"henrikb@braju.com\"))", + "Author": "Henrik Bengtsson [aut, cre, cph]", + "Maintainer": "Henrik Bengtsson ", + "Description": "Methods and classes for object-oriented programming in R with or without references. Large effort has been made on making definition of methods as simple as possible with a minimum of maintenance for package developers. The package has been developed since 2001 and is now considered very stable. This is a cross-platform package implemented in pure R that defines standard S3 classes without any tricks.", + "License": "LGPL (>= 2.1)", + "LazyLoad": "TRUE", + "URL": "https://henrikbengtsson.github.io/R.oo/, https://github.com/HenrikBengtsson/R.oo", + "BugReports": "https://github.com/HenrikBengtsson/R.oo/issues", + "NeedsCompilation": "no", + "Repository": "https://packagemanager.posit.co/cran/latest", + "Encoding": "UTF-8" + }, + "R.utils": { + "Package": "R.utils", + "Version": "2.13.0", + "Source": "Repository", + "Depends": [ + "R (>= 2.14.0)", + "R.oo" + ], + "Imports": [ + "methods", + "utils", + "tools", + "R.methodsS3" + ], + "Suggests": [ + "datasets", + "digest (>= 0.6.10)" + ], + "Title": "Various Programming Utilities", + "Authors@R": "c(person(\"Henrik\", \"Bengtsson\", role=c(\"aut\", \"cre\", \"cph\"), email = \"henrikb@braju.com\"))", + "Author": "Henrik Bengtsson [aut, cre, cph]", + "Maintainer": "Henrik Bengtsson ", + "Description": "Utility functions useful when programming and developing R packages.", + "License": "LGPL (>= 2.1)", + "LazyLoad": "TRUE", + "URL": "https://henrikbengtsson.github.io/R.utils/, https://github.com/HenrikBengtsson/R.utils", + "BugReports": "https://github.com/HenrikBengtsson/R.utils/issues", + "NeedsCompilation": "no", + "Repository": "https://packagemanager.posit.co/cran/latest", + "Encoding": "UTF-8" + }, + "R6": { + "Package": "R6", + "Version": "2.6.1", + "Source": "Repository", + "Title": "Encapsulated Classes with Reference Semantics", + "Authors@R": "c( person(\"Winston\", \"Chang\", , \"winston@posit.co\", role = c(\"aut\", \"cre\")), person(\"Posit Software, PBC\", role = c(\"cph\", \"fnd\")) )", + "Description": "Creates classes with reference semantics, similar to R's built-in reference classes. Compared to reference classes, R6 classes are simpler and lighter-weight, and they are not built on S4 classes so they do not require the methods package. These classes allow public and private members, and they support inheritance, even when the classes are defined in different packages.", + "License": "MIT + file LICENSE", + "URL": "https://r6.r-lib.org, https://github.com/r-lib/R6", + "BugReports": "https://github.com/r-lib/R6/issues", + "Depends": [ + "R (>= 3.6)" + ], + "Suggests": [ + "lobstr", + "testthat (>= 3.0.0)" + ], + "Config/Needs/website": "tidyverse/tidytemplate, ggplot2, microbenchmark, scales", + "Config/testthat/edition": "3", + "Encoding": "UTF-8", + "RoxygenNote": "7.3.2", + "NeedsCompilation": "no", + "Author": "Winston Chang [aut, cre], Posit Software, PBC [cph, fnd]", + "Maintainer": "Winston Chang ", + "Repository": "https://packagemanager.posit.co/cran/latest" + }, + "RColorBrewer": { + "Package": "RColorBrewer", + "Version": "1.1-3", + "Source": "Repository", + "Date": "2022-04-03", + "Title": "ColorBrewer Palettes", + "Authors@R": "c(person(given = \"Erich\", family = \"Neuwirth\", role = c(\"aut\", \"cre\"), email = \"erich.neuwirth@univie.ac.at\"))", + "Author": "Erich Neuwirth [aut, cre]", + "Maintainer": "Erich Neuwirth ", + "Depends": [ + "R (>= 2.0.0)" + ], + "Description": "Provides color schemes for maps (and other graphics) designed by Cynthia Brewer as described at http://colorbrewer2.org.", + "License": "Apache License 2.0", + "NeedsCompilation": "no", + "Repository": "https://packagemanager.posit.co/cran/latest", + "Encoding": "UTF-8" + }, + "RCurl": { + "Package": "RCurl", + "Version": "1.98-1.17", + "Source": "Repository", + "Title": "General Network (HTTP/FTP/...) Client Interface for R", + "Authors@R": "c(person(\"CRAN Team\", role = c('ctb', 'cre'), email = \"CRAN@r-project.org\", comment = \"de facto maintainer since 2013\"), person(\"Duncan\", \"Temple Lang\", role = \"aut\", email = \"duncan@r-project.org\", comment = c(ORCID = \"0000-0003-0159-1546\")))", + "SystemRequirements": "GNU make, libcurl", + "Description": "A wrapper for 'libcurl' Provides functions to allow one to compose general HTTP requests and provides convenient functions to fetch URIs, get & post forms, etc. and process the results returned by the Web server. This provides a great deal of control over the HTTP/FTP/... connection and the form of the request while providing a higher-level interface than is available just using R socket connections. Additionally, the underlying implementation is robust and extensive, supporting FTP/FTPS/TFTP (uploads and downloads), SSL/HTTPS, telnet, dict, ldap, and also supports cookies, redirects, authentication, etc.", + "License": "BSD_3_clause + file LICENSE", + "Depends": [ + "R (>= 3.4.0)", + "methods" + ], + "Imports": [ + "bitops" + ], + "Suggests": [ + "XML" + ], + "Collate": "aclassesEnums.R bitClasses.R xbits.R base64.R binary.S classes.S curl.S curlAuthConstants.R curlEnums.R curlError.R curlInfo.S dynamic.R form.S getFormParams.R getURLContent.R header.R http.R httpError.R httpErrors.R iconv.R info.S mime.R multi.S options.S scp.R support.S upload.R urlExists.R zclone.R zzz.R", + "NeedsCompilation": "yes", + "Author": "CRAN Team [ctb, cre] (de facto maintainer since 2013), Duncan Temple Lang [aut] ()", + "Maintainer": "CRAN Team ", + "Repository": "https://packagemanager.posit.co/cran/latest", + "Encoding": "UTF-8" + }, + "RSQLite": { + "Package": "RSQLite", + "Version": "2.4.5", + "Source": "Repository", + "Title": "SQLite Interface for R", + "Date": "2025-11-30", + "Authors@R": "c( person(\"Kirill\", \"Müller\", , \"kirill@cynkra.com\", role = c(\"aut\", \"cre\"), comment = c(ORCID = \"0000-0002-1416-3412\")), person(\"Hadley\", \"Wickham\", role = \"aut\"), person(c(\"David\", \"A.\"), \"James\", role = \"aut\"), person(\"Seth\", \"Falcon\", role = \"aut\"), person(\"D. Richard\", \"Hipp\", role = \"ctb\", comment = \"for the included SQLite sources\"), person(\"Dan\", \"Kennedy\", role = \"ctb\", comment = \"for the included SQLite sources\"), person(\"Joe\", \"Mistachkin\", role = \"ctb\", comment = \"for the included SQLite sources\"), person(, \"SQLite Authors\", role = \"ctb\", comment = \"for the included SQLite sources\"), person(\"Liam\", \"Healy\", role = \"ctb\", comment = \"for the included SQLite sources\"), person(\"R Consortium\", role = \"fnd\"), person(, \"RStudio\", role = \"cph\") )", + "Description": "Embeds the SQLite database engine in R and provides an interface compliant with the DBI package. The source for the SQLite engine (version 3.51.1) and for various extensions is included. System libraries will never be consulted because this package relies on static linking for the plugins it includes; this also ensures a consistent experience across all installations.", + "License": "LGPL (>= 2.1)", + "URL": "https://rsqlite.r-dbi.org, https://github.com/r-dbi/RSQLite", + "BugReports": "https://github.com/r-dbi/RSQLite/issues", + "Depends": [ + "R (>= 3.1.0)" + ], + "Imports": [ + "bit64", + "blob (>= 1.2.0)", + "DBI (>= 1.2.0)", + "memoise", + "methods", + "pkgconfig", + "rlang" + ], + "Suggests": [ + "callr", + "cli", + "DBItest (>= 1.8.0)", + "decor", + "gert", + "gh", + "hms", + "knitr", + "magrittr", + "rmarkdown", + "rvest", + "testthat (>= 3.0.0)", + "withr", + "xml2" + ], + "LinkingTo": [ + "plogr (>= 0.2.0)", + "cpp11 (>= 0.4.0)" + ], + "VignetteBuilder": "knitr", + "Config/Needs/website": "r-dbi/dbitemplate", + "Config/autostyle/scope": "line_breaks", + "Config/autostyle/strict": "false", + "Config/testthat/edition": "3", + "Encoding": "UTF-8", + "RoxygenNote": "7.3.3.9000", + "Collate": "'SQLiteConnection.R' 'SQLKeywords_SQLiteConnection.R' 'SQLiteDriver.R' 'SQLite.R' 'SQLiteResult.R' 'coerce.R' 'compatRowNames.R' 'copy.R' 'cpp11.R' 'datasetsDb.R' 'dbAppendTable_SQLiteConnection.R' 'dbBeginTransaction.R' 'dbBegin_SQLiteConnection.R' 'dbBind_SQLiteResult.R' 'dbClearResult_SQLiteResult.R' 'dbColumnInfo_SQLiteResult.R' 'dbCommit_SQLiteConnection.R' 'dbConnect_SQLiteConnection.R' 'dbConnect_SQLiteDriver.R' 'dbDataType_SQLiteConnection.R' 'dbDataType_SQLiteDriver.R' 'dbDisconnect_SQLiteConnection.R' 'dbExistsTable_SQLiteConnection_Id.R' 'dbExistsTable_SQLiteConnection_character.R' 'dbFetch_SQLiteResult.R' 'dbGetException_SQLiteConnection.R' 'dbGetInfo_SQLiteConnection.R' 'dbGetInfo_SQLiteDriver.R' 'dbGetPreparedQuery.R' 'dbGetPreparedQuery_SQLiteConnection_character_data.frame.R' 'dbGetRowCount_SQLiteResult.R' 'dbGetRowsAffected_SQLiteResult.R' 'dbGetStatement_SQLiteResult.R' 'dbHasCompleted_SQLiteResult.R' 'dbIsValid_SQLiteConnection.R' 'dbIsValid_SQLiteDriver.R' 'dbIsValid_SQLiteResult.R' 'dbListResults_SQLiteConnection.R' 'dbListTables_SQLiteConnection.R' 'dbQuoteIdentifier_SQLiteConnection_SQL.R' 'dbQuoteIdentifier_SQLiteConnection_character.R' 'dbReadTable_SQLiteConnection_character.R' 'dbRemoveTable_SQLiteConnection_character.R' 'dbRollback_SQLiteConnection.R' 'dbSendPreparedQuery.R' 'dbSendPreparedQuery_SQLiteConnection_character_data.frame.R' 'dbSendQuery_SQLiteConnection_character.R' 'dbUnloadDriver_SQLiteDriver.R' 'dbUnquoteIdentifier_SQLiteConnection_SQL.R' 'dbWriteTable_SQLiteConnection_character_character.R' 'dbWriteTable_SQLiteConnection_character_data.frame.R' 'db_bind.R' 'deprecated.R' 'export.R' 'fetch_SQLiteResult.R' 'import-standalone-check_suggested.R' 'import-standalone-purrr.R' 'initExtension.R' 'initRegExp.R' 'isSQLKeyword_SQLiteConnection_character.R' 'make.db.names_SQLiteConnection_character.R' 'pkgconfig.R' 'show_SQLiteConnection.R' 'sqlData_SQLiteConnection.R' 'table.R' 'transactions.R' 'utils.R' 'version.R' 'zzz.R'", + "NeedsCompilation": "yes", + "Author": "Kirill Müller [aut, cre] (ORCID: ), Hadley Wickham [aut], David A. James [aut], Seth Falcon [aut], D. Richard Hipp [ctb] (for the included SQLite sources), Dan Kennedy [ctb] (for the included SQLite sources), Joe Mistachkin [ctb] (for the included SQLite sources), SQLite Authors [ctb] (for the included SQLite sources), Liam Healy [ctb] (for the included SQLite sources), R Consortium [fnd], RStudio [cph]", + "Maintainer": "Kirill Müller ", + "Repository": "CRAN" + }, + "RSpectra": { + "Package": "RSpectra", + "Version": "0.16-2", + "Source": "Repository", + "Type": "Package", + "Title": "Solvers for Large-Scale Eigenvalue and SVD Problems", + "Date": "2024-07-18", + "Authors@R": "c( person(\"Yixuan\", \"Qiu\", , \"yixuan.qiu@cos.name\", c(\"aut\", \"cre\")), person(\"Jiali\", \"Mei\", , \"vermouthmjl@gmail.com\", \"aut\", comment = \"Function interface of matrix operation\"), person(\"Gael\", \"Guennebaud\", , \"gael.guennebaud@inria.fr\", \"ctb\", comment = \"Eigenvalue solvers from the 'Eigen' library\"), person(\"Jitse\", \"Niesen\", , \"jitse@maths.leeds.ac.uk\", \"ctb\", comment = \"Eigenvalue solvers from the 'Eigen' library\") )", + "Description": "R interface to the 'Spectra' library for large-scale eigenvalue and SVD problems. It is typically used to compute a few eigenvalues/vectors of an n by n matrix, e.g., the k largest eigenvalues, which is usually more efficient than eigen() if k << n. This package provides the 'eigs()' function that does the similar job as in 'Matlab', 'Octave', 'Python SciPy' and 'Julia'. It also provides the 'svds()' function to calculate the largest k singular values and corresponding singular vectors of a real matrix. The matrix to be computed on can be dense, sparse, or in the form of an operator defined by the user.", + "License": "MPL (>= 2)", + "URL": "https://github.com/yixuan/RSpectra", + "BugReports": "https://github.com/yixuan/RSpectra/issues", + "Depends": [ + "R (>= 3.0.2)" + ], + "Imports": [ + "Matrix (>= 1.1-0)", + "Rcpp (>= 0.11.5)" + ], + "Suggests": [ + "knitr", + "rmarkdown", + "prettydoc" + ], + "LinkingTo": [ + "Rcpp", + "RcppEigen (>= 0.3.3.3.0)" + ], + "VignetteBuilder": "knitr, rmarkdown", + "RoxygenNote": "7.1.2", + "NeedsCompilation": "yes", + "Author": "Yixuan Qiu [aut, cre], Jiali Mei [aut] (Function interface of matrix operation), Gael Guennebaud [ctb] (Eigenvalue solvers from the 'Eigen' library), Jitse Niesen [ctb] (Eigenvalue solvers from the 'Eigen' library)", + "Maintainer": "Yixuan Qiu ", + "Repository": "https://packagemanager.posit.co/cran/latest", + "Encoding": "UTF-8" + }, + "Rcpp": { + "Package": "Rcpp", + "Version": "1.1.1", + "Source": "Repository", + "Title": "Seamless R and C++ Integration", + "Date": "2026-01-07", + "Authors@R": "c(person(\"Dirk\", \"Eddelbuettel\", role = c(\"aut\", \"cre\"), email = \"edd@debian.org\", comment = c(ORCID = \"0000-0001-6419-907X\")), person(\"Romain\", \"Francois\", role = \"aut\", comment = c(ORCID = \"0000-0002-2444-4226\")), person(\"JJ\", \"Allaire\", role = \"aut\", comment = c(ORCID = \"0000-0003-0174-9868\")), person(\"Kevin\", \"Ushey\", role = \"aut\", comment = c(ORCID = \"0000-0003-2880-7407\")), person(\"Qiang\", \"Kou\", role = \"aut\", comment = c(ORCID = \"0000-0001-6786-5453\")), person(\"Nathan\", \"Russell\", role = \"aut\"), person(\"Iñaki\", \"Ucar\", role = \"aut\", comment = c(ORCID = \"0000-0001-6403-5550\")), person(\"Doug\", \"Bates\", role = \"aut\", comment = c(ORCID = \"0000-0001-8316-9503\")), person(\"John\", \"Chambers\", role = \"aut\"))", + "Description": "The 'Rcpp' package provides R functions as well as C++ classes which offer a seamless integration of R and C++. Many R data types and objects can be mapped back and forth to C++ equivalents which facilitates both writing of new code as well as easier integration of third-party libraries. Documentation about 'Rcpp' is provided by several vignettes included in this package, via the 'Rcpp Gallery' site at , the paper by Eddelbuettel and Francois (2011, ), the book by Eddelbuettel (2013, ) and the paper by Eddelbuettel and Balamuta (2018, ); see 'citation(\"Rcpp\")' for details.", + "Depends": [ + "R (>= 3.5.0)" + ], + "Imports": [ + "methods", + "utils" + ], + "Suggests": [ + "tinytest", + "inline", + "rbenchmark", + "pkgKitten (>= 0.1.2)" + ], + "URL": "https://www.rcpp.org, https://dirk.eddelbuettel.com/code/rcpp.html, https://github.com/RcppCore/Rcpp", + "License": "GPL (>= 2)", + "BugReports": "https://github.com/RcppCore/Rcpp/issues", + "MailingList": "rcpp-devel@lists.r-forge.r-project.org", + "RoxygenNote": "6.1.1", + "Encoding": "UTF-8", + "VignetteBuilder": "Rcpp", + "NeedsCompilation": "yes", + "Author": "Dirk Eddelbuettel [aut, cre] (ORCID: ), Romain Francois [aut] (ORCID: ), JJ Allaire [aut] (ORCID: ), Kevin Ushey [aut] (ORCID: ), Qiang Kou [aut] (ORCID: ), Nathan Russell [aut], Iñaki Ucar [aut] (ORCID: ), Doug Bates [aut] (ORCID: ), John Chambers [aut]", + "Maintainer": "Dirk Eddelbuettel ", + "Repository": "CRAN" + }, + "RcppAnnoy": { + "Package": "RcppAnnoy", + "Version": "0.0.23", + "Source": "Repository", + "Type": "Package", + "Title": "'Rcpp' Bindings for 'Annoy', a Library for Approximate Nearest Neighbors", + "Date": "2026-01-12", + "Authors@R": "c(person(\"Dirk\", \"Eddelbuettel\", role = c(\"aut\", \"cre\"), email = \"edd@debian.org\", comment = c(ORCID = \"0000-0001-6419-907X\")), person(\"Erik\", \"Bernhardsson\", role = c(\"aut\"), comment = \"Principal author of Annoy\"))", + "Description": "'Annoy' is a small C++ library for Approximate Nearest Neighbors written for efficient memory usage as well an ability to load from / save to disk. This package provides an R interface by relying on the 'Rcpp' package, exposing the same interface as the original Python wrapper to 'Annoy'. See for more on 'Annoy'. 'Annoy' is released under Version 2.0 of the Apache License. Also included is a small Windows port of 'mmap' which is released under the MIT license.", + "License": "GPL (>= 2)", + "Depends": [ + "R (>= 3.1)" + ], + "Imports": [ + "methods", + "Rcpp" + ], + "LinkingTo": [ + "Rcpp" + ], + "Suggests": [ + "tinytest" + ], + "URL": "https://github.com/eddelbuettel/rcppannoy, https://dirk.eddelbuettel.com/code/rcpp.annoy.html", + "BugReports": "https://github.com/eddelbuettel/rcppannoy/issues", + "NeedsCompilation": "yes", + "RoxygenNote": "7.3.2", + "Encoding": "UTF-8", + "VignetteBuilder": "Rcpp", + "Author": "Dirk Eddelbuettel [aut, cre] (ORCID: ), Erik Bernhardsson [aut] (Principal author of Annoy)", + "Maintainer": "Dirk Eddelbuettel ", + "Repository": "CRAN" + }, + "RcppArmadillo": { + "Package": "RcppArmadillo", + "Version": "15.2.3-1", + "Source": "Repository", + "Type": "Package", + "Title": "'Rcpp' Integration for the 'Armadillo' Templated Linear Algebra Library", + "Date": "2025-12-16", + "Authors@R": "c(person(\"Dirk\", \"Eddelbuettel\", role = c(\"aut\", \"cre\"), email = \"edd@debian.org\", comment = c(ORCID = \"0000-0001-6419-907X\")), person(\"Romain\", \"Francois\", role = \"aut\", comment = c(ORCID = \"0000-0002-2444-4226\")), person(\"Doug\", \"Bates\", role = \"aut\", comment = c(ORCID = \"0000-0001-8316-9503\")), person(\"Binxiang\", \"Ni\", role = \"aut\"), person(\"Conrad\", \"Sanderson\", role = \"aut\", comment = c(ORCID = \"0000-0002-0049-4501\")))", + "Description": "'Armadillo' is a templated C++ linear algebra library aiming towards a good balance between speed and ease of use. It provides high-level syntax and functionality deliberately similar to Matlab. It is useful for algorithm development directly in C++, or quick conversion of research code into production environments. It provides efficient classes for vectors, matrices and cubes where dense and sparse matrices are supported. Integer, floating point and complex numbers are supported. A sophisticated expression evaluator (based on template meta-programming) automatically combines several operations to increase speed and efficiency. Dynamic evaluation automatically chooses optimal code paths based on detected matrix structures. Matrix decompositions are provided through integration with LAPACK, or one of its high performance drop-in replacements (such as 'MKL' or 'OpenBLAS'). It can automatically use 'OpenMP' multi-threading (parallelisation) to speed up computationally expensive operations. . The 'RcppArmadillo' package includes the header files from the 'Armadillo' library; users do not need to install 'Armadillo' itself in order to use 'RcppArmadillo'. Starting from release 15.0.0, the minimum compilation standard is C++14 so 'Armadillo' version 14.6.3 is included as a fallback when an R package forces the C++11 standard. Package authors should set a '#define' to select the 'current' version, or select the 'legacy' version (also chosen as default) if they must. See 'GitHub issue #475' for details. . Since release 7.800.0, 'Armadillo' is licensed under Apache License 2; previous releases were under licensed as MPL 2.0 from version 3.800.0 onwards and LGPL-3 prior to that; 'RcppArmadillo' (the 'Rcpp' bindings/bridge to Armadillo) is licensed under the GNU GPL version 2 or later, as is the rest of 'Rcpp'.", + "License": "GPL (>= 2)", + "LazyLoad": "yes", + "Depends": [ + "R (>= 3.3.0)" + ], + "LinkingTo": [ + "Rcpp" + ], + "Imports": [ + "Rcpp (>= 1.0.12)", + "stats", + "utils", + "methods" + ], + "Suggests": [ + "tinytest", + "Matrix (>= 1.3.0)", + "pkgKitten", + "reticulate", + "slam" + ], + "URL": "https://github.com/RcppCore/RcppArmadillo, https://dirk.eddelbuettel.com/code/rcpp.armadillo.html", + "BugReports": "https://github.com/RcppCore/RcppArmadillo/issues", + "RoxygenNote": "6.0.1", + "NeedsCompilation": "yes", + "Author": "Dirk Eddelbuettel [aut, cre] (ORCID: ), Romain Francois [aut] (ORCID: ), Doug Bates [aut] (ORCID: ), Binxiang Ni [aut], Conrad Sanderson [aut] (ORCID: )", + "Maintainer": "Dirk Eddelbuettel ", + "Repository": "CRAN" + }, + "RcppEigen": { + "Package": "RcppEigen", + "Version": "0.3.4.0.2", + "Source": "Repository", + "Type": "Package", + "Title": "'Rcpp' Integration for the 'Eigen' Templated Linear Algebra Library", + "Date": "2024-08-23", + "Authors@R": "c(person(\"Doug\", \"Bates\", role = \"aut\", comment = c(ORCID = \"0000-0001-8316-9503\")), person(\"Dirk\", \"Eddelbuettel\", role = c(\"aut\", \"cre\"), email = \"edd@debian.org\", comment = c(ORCID = \"0000-0001-6419-907X\")), person(\"Romain\", \"Francois\", role = \"aut\", comment = c(ORCID = \"0000-0002-2444-4226\")), person(\"Yixuan\", \"Qiu\", role = \"aut\", comment = c(ORCID = \"0000-0003-0109-6692\")), person(\"Authors of\", \"Eigen\", role = \"cph\", comment = \"Authorship and copyright in included Eigen library as detailed in inst/COPYRIGHTS\"))", + "Copyright": "See the file COPYRIGHTS for various Eigen copyright details", + "Description": "R and 'Eigen' integration using 'Rcpp'. 'Eigen' is a C++ template library for linear algebra: matrices, vectors, numerical solvers and related algorithms. It supports dense and sparse matrices on integer, floating point and complex numbers, decompositions of such matrices, and solutions of linear systems. Its performance on many algorithms is comparable with some of the best implementations based on 'Lapack' and level-3 'BLAS'. The 'RcppEigen' package includes the header files from the 'Eigen' C++ template library. Thus users do not need to install 'Eigen' itself in order to use 'RcppEigen'. Since version 3.1.1, 'Eigen' is licensed under the Mozilla Public License (version 2); earlier version were licensed under the GNU LGPL version 3 or later. 'RcppEigen' (the 'Rcpp' bindings/bridge to 'Eigen') is licensed under the GNU GPL version 2 or later, as is the rest of 'Rcpp'.", + "License": "GPL (>= 2) | file LICENSE", + "LazyLoad": "yes", + "Depends": [ + "R (>= 3.6.0)" + ], + "LinkingTo": [ + "Rcpp" + ], + "Imports": [ + "Rcpp (>= 0.11.0)", + "stats", + "utils" + ], + "Suggests": [ + "Matrix", + "inline", + "tinytest", + "pkgKitten", + "microbenchmark" + ], + "URL": "https://github.com/RcppCore/RcppEigen, https://dirk.eddelbuettel.com/code/rcpp.eigen.html", + "BugReports": "https://github.com/RcppCore/RcppEigen/issues", + "NeedsCompilation": "yes", + "Author": "Doug Bates [aut] (), Dirk Eddelbuettel [aut, cre] (), Romain Francois [aut] (), Yixuan Qiu [aut] (), Authors of Eigen [cph] (Authorship and copyright in included Eigen library as detailed in inst/COPYRIGHTS)", + "Maintainer": "Dirk Eddelbuettel ", + "Repository": "https://packagemanager.posit.co/cran/latest", + "Encoding": "UTF-8" + }, + "RcppML": { + "Package": "RcppML", + "Version": "0.3.7", + "Source": "Repository", + "Type": "Package", + "Title": "Rcpp Machine Learning Library", + "Date": "2021-09-21", + "Authors@R": "person(\"Zachary\", \"DeBruine\", email = \"zacharydebruine@gmail.com\", role = c(\"aut\", \"cre\"), comment = c(ORCID = \"0000-0003-2234-4827\"))", + "Description": "Fast machine learning algorithms including matrix factorization and divisive clustering for large sparse and dense matrices.", + "License": "GPL (>= 2)", + "Imports": [ + "Rcpp", + "Matrix", + "methods", + "stats" + ], + "LinkingTo": [ + "Rcpp", + "RcppEigen" + ], + "VignetteBuilder": "knitr", + "RoxygenNote": "7.1.1", + "Suggests": [ + "knitr", + "rmarkdown", + "testthat (>= 3.0.0)" + ], + "Config/testthat/edition": "3", + "URL": "https://github.com/zdebruine/RcppML", + "BugReports": "https://github.com/zdebruine/RcppML/issues", + "NeedsCompilation": "yes", + "Author": "Zachary DeBruine [aut, cre] ()", + "Maintainer": "Zachary DeBruine ", + "Repository": "https://packagemanager.posit.co/cran/latest", + "Encoding": "UTF-8" + }, + "RcppNumerical": { + "Package": "RcppNumerical", + "Version": "0.6-0", + "Source": "Repository", + "Type": "Package", + "Title": "'Rcpp' Integration for Numerical Computing Libraries", + "Date": "2023-09-06", + "Authors@R": "c( person(\"Yixuan\", \"Qiu\", email = \"yixuan.qiu@cos.name\", role = c(\"aut\", \"cre\")), person(\"Ralf\", \"Stubner\", email = \"ralf.stubner@gmail.com\", role = \"ctb\", comment = \"Integration on infinite intervals\"), person(\"Sreekumar\", \"Balan\", role = \"aut\", comment = \"Numerical integration library\"), person(\"Matt\", \"Beall\", role = \"aut\", comment = \"Numerical integration library\"), person(\"Mark\", \"Sauder\", role = \"aut\", comment = \"Numerical integration library\"), person(\"Naoaki\", \"Okazaki\", role = \"aut\", comment = \"The libLBFGS library\"), person(\"Thomas\", \"Hahn\", role = \"aut\", comment = \"The Cuba library\") )", + "Maintainer": "Yixuan Qiu ", + "Description": "A collection of open source libraries for numerical computing (numerical integration, optimization, etc.) and their integration with 'Rcpp'.", + "License": "GPL (>= 2)", + "Copyright": "See file COPYRIGHTS", + "URL": "https://github.com/yixuan/RcppNumerical", + "BugReports": "https://github.com/yixuan/RcppNumerical/issues", + "Imports": [ + "Rcpp" + ], + "LinkingTo": [ + "Rcpp", + "RcppEigen" + ], + "Suggests": [ + "knitr", + "rmarkdown", + "prettydoc", + "mvtnorm", + "RcppEigen" + ], + "VignetteBuilder": "knitr, rmarkdown", + "RoxygenNote": "7.2.3", + "NeedsCompilation": "yes", + "Author": "Yixuan Qiu [aut, cre], Ralf Stubner [ctb] (Integration on infinite intervals), Sreekumar Balan [aut] (Numerical integration library), Matt Beall [aut] (Numerical integration library), Mark Sauder [aut] (Numerical integration library), Naoaki Okazaki [aut] (The libLBFGS library), Thomas Hahn [aut] (The Cuba library)", + "Repository": "CRAN" + }, + "RcppProgress": { + "Package": "RcppProgress", + "Version": "0.4.2", + "Source": "Repository", + "Maintainer": "Karl Forner ", + "License": "GPL (>= 3)", + "Title": "An Interruptible Progress Bar with OpenMP Support for C++ in R Packages", + "Type": "Package", + "LazyLoad": "yes", + "Author": "Karl Forner ", + "Description": "Allows to display a progress bar in the R console for long running computations taking place in c++ code, and support for interrupting those computations even in multithreaded code, typically using OpenMP.", + "URL": "https://github.com/kforner/rcpp_progress", + "BugReports": "https://github.com/kforner/rcpp_progress/issues", + "Date": "2020-02-06", + "Suggests": [ + "RcppArmadillo", + "devtools", + "roxygen2", + "testthat" + ], + "RoxygenNote": "6.1.1", + "Encoding": "UTF-8", + "NeedsCompilation": "no", + "Repository": "https://packagemanager.posit.co/cran/latest" + }, + "RcppTOML": { + "Package": "RcppTOML", + "Version": "0.2.3", + "Source": "Repository", + "Type": "Package", + "Title": "'Rcpp' Bindings to Parser for \"Tom's Obvious Markup Language\"", + "Date": "2025-03-08", + "Authors@R": "c(person(\"Dirk\", \"Eddelbuettel\", role = c(\"aut\", \"cre\"), email = \"edd@debian.org\", comment = c(ORCID = \"0000-0001-6419-907X\")), person(\"Mark\", \"Gillard\", role = \"aut\", comment = \"Author of 'toml++' header library\"))", + "Description": "The configuration format defined by 'TOML' (which expands to \"Tom's Obvious Markup Language\") specifies an excellent format (described at ) suitable for both human editing as well as the common uses of a machine-readable format. This package uses 'Rcpp' to connect to the 'toml++' parser written by Mark Gillard to R.", + "SystemRequirements": "A C++17 compiler", + "BugReports": "https://github.com/eddelbuettel/rcpptoml/issues", + "URL": "http://dirk.eddelbuettel.com/code/rcpp.toml.html", + "Imports": [ + "Rcpp (>= 1.0.8)" + ], + "Depends": [ + "R (>= 3.3.0)" + ], + "LinkingTo": [ + "Rcpp" + ], + "Suggests": [ + "tinytest" + ], + "License": "GPL (>= 2)", + "NeedsCompilation": "yes", + "Author": "Dirk Eddelbuettel [aut, cre] (), Mark Gillard [aut] (Author of 'toml++' header library)", + "Maintainer": "Dirk Eddelbuettel ", + "Repository": "https://packagemanager.posit.co/cran/latest", + "Encoding": "UTF-8" + }, + "ResidualMatrix": { + "Package": "ResidualMatrix", + "Version": "1.20.0", + "Source": "Bioconductor", + "Date": "2025-04-08", + "Title": "Creating a DelayedMatrix of Regression Residuals", + "Authors@R": "person(\"Aaron\", \"Lun\", role=c(\"aut\", \"cre\", \"cph\"), email=\"infinite.monkeys.with.keyboards@gmail.com\")", + "Imports": [ + "methods", + "Matrix", + "S4Vectors", + "DelayedArray" + ], + "Suggests": [ + "testthat", + "BiocStyle", + "knitr", + "rmarkdown", + "BiocSingular" + ], + "biocViews": "Software, DataRepresentation, Regression, BatchEffect, ExperimentalDesign", + "Description": "Provides delayed computation of a matrix of residuals after fitting a linear model to each column of an input matrix. Also supports partial computation of residuals where selected factors are to be preserved in the output matrix. Implements a number of efficient methods for operating on the delayed matrix of residuals, most notably matrix multiplication and calculation of row/column sums or means.", + "License": "GPL-3", + "VignetteBuilder": "knitr", + "RoxygenNote": "7.3.1", + "BugReports": "https://github.com/LTLA/ResidualMatrix/issues", + "URL": "https://github.com/LTLA/ResidualMatrix", + "git_url": "https://git.bioconductor.org/packages/ResidualMatrix", + "git_branch": "RELEASE_3_22", + "git_last_commit": "87f8d9c", + "git_last_commit_date": "2025-10-29", + "Repository": "Bioconductor 3.22", + "NeedsCompilation": "no", + "Author": "Aaron Lun [aut, cre, cph]", + "Maintainer": "Aaron Lun " + }, + "Rhdf5lib": { + "Package": "Rhdf5lib", + "Version": "1.32.0", + "Source": "Bioconductor", + "Type": "Package", + "Title": "hdf5 library as an R package", + "Authors@R": "c( person( \"Mike\", \"Smith\", role = \"ctb\", comment = c(ORCID = \"0000-0002-7800-3848\") ), person( \"Hugo\", \"Gruson\", role = \"cre\", email = \"hugo.gruson@embl.de\", comment = c(ORCID = \"0000-0002-4094-1476\")) , person( given = \"The HDF Group\", role = \"cph\" ) )", + "Description": "Provides C and C++ hdf5 libraries.", + "License": "Artistic-2.0", + "Copyright": "src/hdf5/COPYING", + "LazyLoad": "true", + "VignetteBuilder": "knitr", + "Depends": [ + "R (>= 4.2.0)" + ], + "Suggests": [ + "BiocStyle", + "knitr", + "rmarkdown", + "tinytest", + "mockery" + ], + "URL": "https://github.com/Huber-group-EMBL/Rhdf5lib", + "BugReports": "https://github.com/Huber-group-EMBL/Rhdf5lib/issues", + "SystemRequirements": "GNU make", + "Encoding": "UTF-8", + "biocViews": "Infrastructure", + "RoxygenNote": "7.1.2", + "git_url": "https://git.bioconductor.org/packages/Rhdf5lib", + "git_branch": "RELEASE_3_22", + "git_last_commit": "f62ae28", + "git_last_commit_date": "2025-10-29", + "Repository": "Bioconductor 3.22", + "NeedsCompilation": "yes", + "Author": "Mike Smith [ctb] (ORCID: ), Hugo Gruson [cre] (ORCID: ), The HDF Group [cph]", + "Maintainer": "Hugo Gruson " + }, + "RhpcBLASctl": { + "Package": "RhpcBLASctl", + "Version": "0.23-42", + "Source": "Repository", + "Date": "2023-02-11", + "Title": "Control the Number of Threads on 'BLAS'", + "Author": "Junji NAKANO and Ei-ji Nakama ", + "Maintainer": "Ei-ji Nakama ", + "Description": "Control the number of threads on 'BLAS' (Aka 'GotoBLAS', 'OpenBLAS', 'ACML', 'BLIS' and 'MKL'). And possible to control the number of threads in 'OpenMP'. Get a number of logical cores and physical cores if feasible.", + "License": "AGPL-3", + "URL": "https://prs.ism.ac.jp/~nakama/Rhpc/", + "ByteCompile": "true", + "NeedsCompilation": "yes", + "Repository": "CRAN" + }, + "Rhtslib": { + "Package": "Rhtslib", + "Version": "3.6.0", + "Source": "Bioconductor", + "Title": "HTSlib high-throughput sequencing library as an R package", + "Description": "This package provides version 1.18 of the 'HTSlib' C library for high-throughput sequence analysis. The package is primarily useful to developers of other R packages who wish to make use of HTSlib. Motivation and instructions for use of this package are in the vignette, vignette(package=\"Rhtslib\", \"Rhtslib\").", + "biocViews": "DataImport, Sequencing", + "URL": "https://bioconductor.org/packages/Rhtslib, http://www.htslib.org/", + "BugReports": "https://github.com/Bioconductor/Rhtslib/issues", + "License": "LGPL (>= 2)", + "Copyright": "Unless otherwise noted in the file, all files outside src/htslib-1.18 or inst/include copyright Bioconductor; for files inside src/htslib-1.18 or inst/include, see file src/htslib-1.18/LICENSE.", + "Encoding": "UTF-8", + "Authors@R": "c( person(\"Nathaniel\", \"Hayden\", role=c(\"led\", \"aut\"), email=\"nhayden@fredhutch.org\"), person(\"Martin\", \"Morgan\", role=\"aut\", email=\"martin.morgan@roswellpark.org\"), person(\"Hervé\", \"Pagès\", role=c(\"aut\", \"cre\"), email=\"hpages.on.github@gmail.com\"), person(\"Tomas\", \"Kalibera\", role=\"ctb\"), person(\"Jeroen\", \"Ooms\", role=\"ctb\"))", + "Imports": [ + "tools" + ], + "Suggests": [ + "knitr", + "rmarkdown", + "BiocStyle" + ], + "SystemRequirements": "libbz2 & liblzma & libcurl (with header files), GNU make", + "StagedInstall": "no", + "VignetteBuilder": "knitr", + "git_url": "https://git.bioconductor.org/packages/Rhtslib", + "git_branch": "RELEASE_3_22", + "git_last_commit": "c4b7268", + "git_last_commit_date": "2025-10-29", + "Repository": "Bioconductor 3.22", + "NeedsCompilation": "yes", + "Author": "Nathaniel Hayden [led, aut], Martin Morgan [aut], Hervé Pagès [aut, cre], Tomas Kalibera [ctb], Jeroen Ooms [ctb]", + "Maintainer": "Hervé Pagès " + }, + "Rsamtools": { + "Package": "Rsamtools", + "Version": "2.26.0", + "Source": "Bioconductor", + "Type": "Package", + "Title": "Binary alignment (BAM), FASTA, variant call (BCF), and tabix file import", + "Description": "This package provides an interface to the 'samtools', 'bcftools', and 'tabix' utilities for manipulating SAM (Sequence Alignment / Map), FASTA, binary variant call (BCF) and compressed indexed tab-delimited (tabix) files.", + "biocViews": "DataImport, Sequencing, Coverage, Alignment, QualityControl", + "URL": "https://bioconductor.org/packages/Rsamtools", + "Video": "https://www.youtube.com/watch?v=Rfon-DQYbWA&list=UUqaMSQd_h-2EDGsU6WDiX0Q", + "BugReports": "https://github.com/Bioconductor/Rsamtools/issues", + "License": "Artistic-2.0 | file LICENSE", + "Encoding": "UTF-8", + "Authors@R": "c( person(\"Martin\", \"Morgan\", role = \"aut\"), person(\"Hervé\", \"Pagès\", role = \"aut\"), person(\"Valerie\", \"Obenchain\", role = \"aut\"), person(\"Nathaniel\", \"Hayden\", role = \"aut\"), person(\"Busayo\", \"Samuel\", role = \"ctb\", comment = \"Converted Rsamtools vignette from Sweave to RMarkdown / HTML.\"), person(\"Bioconductor Package Maintainer\", email = \"maintainer@bioconductor.org\", role = \"cre\"))", + "Depends": [ + "R (>= 3.5.0)", + "methods", + "Seqinfo", + "GenomicRanges (>= 1.61.1)", + "Biostrings (>= 2.77.2)" + ], + "Imports": [ + "utils", + "BiocGenerics (>= 0.25.1)", + "S4Vectors (>= 0.17.25)", + "IRanges (>= 2.13.12)", + "XVector (>= 0.19.7)", + "bitops", + "BiocParallel", + "stats" + ], + "Suggests": [ + "GenomicAlignments", + "ShortRead (>= 1.19.10)", + "GenomicFeatures", + "VariantAnnotation", + "TxDb.Dmelanogaster.UCSC.dm3.ensGene", + "TxDb.Hsapiens.UCSC.hg18.knownGene", + "RNAseqData.HNRNPC.bam.chr14", + "BSgenome.Hsapiens.UCSC.hg19", + "RUnit", + "BiocStyle", + "knitr" + ], + "LinkingTo": [ + "Rhtslib (>= 3.3.1)", + "S4Vectors", + "IRanges", + "XVector", + "Biostrings" + ], + "LazyLoad": "yes", + "SystemRequirements": "GNU make", + "VignetteBuilder": "knitr", + "git_url": "https://git.bioconductor.org/packages/Rsamtools", + "git_branch": "RELEASE_3_22", + "git_last_commit": "ea99fb0", + "git_last_commit_date": "2025-10-29", + "Repository": "Bioconductor 3.22", + "NeedsCompilation": "yes", + "Author": "Martin Morgan [aut], Hervé Pagès [aut], Valerie Obenchain [aut], Nathaniel Hayden [aut], Busayo Samuel [ctb] (Converted Rsamtools vignette from Sweave to RMarkdown / HTML.), Bioconductor Package Maintainer [cre]", + "Maintainer": "Bioconductor Package Maintainer " + }, + "Rtsne": { + "Package": "Rtsne", + "Version": "0.17", + "Source": "Repository", + "Type": "Package", + "Title": "T-Distributed Stochastic Neighbor Embedding using a Barnes-Hut Implementation", + "Authors@R": "c( person(\"Jesse\", \"Krijthe\", ,\"jkrijthe@gmail.com\", role = c(\"aut\", \"cre\")), person(\"Laurens\", \"van der Maaten\", role = c(\"cph\"), comment = \"Author of original C++ code\") )", + "Description": "An R wrapper around the fast T-distributed Stochastic Neighbor Embedding implementation by Van der Maaten (see for more information on the original implementation).", + "License": "file LICENSE", + "URL": "https://github.com/jkrijthe/Rtsne", + "Encoding": "UTF-8", + "Imports": [ + "Rcpp (>= 0.11.0)", + "stats" + ], + "LinkingTo": [ + "Rcpp" + ], + "Suggests": [ + "irlba", + "testthat" + ], + "RoxygenNote": "7.2.3", + "NeedsCompilation": "yes", + "Author": "Jesse Krijthe [aut, cre], Laurens van der Maaten [cph] (Author of original C++ code)", + "Maintainer": "Jesse Krijthe ", + "License_is_FOSS": "yes", + "Repository": "https://packagemanager.posit.co/cran/latest" + }, + "S4Arrays": { + "Package": "S4Arrays", + "Version": "1.10.1", + "Source": "Bioconductor", + "Title": "Foundation of array-like containers in Bioconductor", + "Description": "The S4Arrays package defines the Array virtual class to be extended by other S4 classes that wish to implement a container with an array-like semantic. It also provides: (1) low-level functionality meant to help the developer of such container to implement basic operations like display, subsetting, or coercion of their array-like objects to an ordinary matrix or array, and (2) a framework that facilitates block processing of array-like objects (typically on-disk objects).", + "biocViews": "Infrastructure, DataRepresentation", + "URL": "https://bioconductor.org/packages/S4Arrays", + "BugReports": "https://github.com/Bioconductor/S4Arrays/issues", + "License": "Artistic-2.0", + "Encoding": "UTF-8", + "Authors@R": "c( person(\"Hervé\", \"Pagès\", role=c(\"aut\", \"cre\"), email=\"hpages.on.github@gmail.com\", comment=c(ORCID=\"0009-0002-8272-4522\")), person(\"Jacques\", \"Serizay\", role=\"ctb\"))", + "Depends": [ + "R (>= 4.3.0)", + "methods", + "Matrix", + "abind", + "BiocGenerics (>= 0.45.2)", + "S4Vectors (>= 0.47.6)", + "IRanges" + ], + "Imports": [ + "stats" + ], + "LinkingTo": [ + "S4Vectors" + ], + "Suggests": [ + "BiocParallel", + "SparseArray (>= 0.0.4)", + "DelayedArray", + "HDF5Array", + "testthat", + "knitr", + "rmarkdown", + "BiocStyle" + ], + "VignetteBuilder": "knitr", + "Collate": "utils.R rowsum.R abind.R aperm2.R array_selection.R Nindex-utils.R arep.R array_recycling.R Array-class.R dim-tuning-utils.R Array-subsetting.R Array-subassignment.R ArrayGrid-class.R mapToGrid.R extract_array.R type.R is_sparse.R read_block.R write_block.R show-utils.R Array-kronecker-methods.R zzz.R", + "git_url": "https://git.bioconductor.org/packages/S4Arrays", + "git_branch": "RELEASE_3_22", + "git_last_commit": "a4cccba", + "git_last_commit_date": "2025-11-24", + "Repository": "Bioconductor 3.22", + "NeedsCompilation": "yes", + "Author": "Hervé Pagès [aut, cre] (ORCID: ), Jacques Serizay [ctb]", + "Maintainer": "Hervé Pagès " + }, + "S4Vectors": { + "Package": "S4Vectors", + "Version": "0.48.0", + "Source": "Bioconductor", + "Title": "Foundation of vector-like and list-like containers in Bioconductor", + "Description": "The S4Vectors package defines the Vector and List virtual classes and a set of generic functions that extend the semantic of ordinary vectors and lists in R. Package developers can easily implement vector-like or list-like objects as concrete subclasses of Vector or List. In addition, a few low-level concrete subclasses of general interest (e.g. DataFrame, Rle, Factor, and Hits) are implemented in the S4Vectors package itself (many more are implemented in the IRanges package and in other Bioconductor infrastructure packages).", + "biocViews": "Infrastructure, DataRepresentation", + "URL": "https://bioconductor.org/packages/S4Vectors", + "BugReports": "https://github.com/Bioconductor/S4Vectors/issues", + "License": "Artistic-2.0", + "Encoding": "UTF-8", + "Authors@R": "c( person(\"Hervé\", \"Pagès\", role=c(\"aut\", \"cre\"), email=\"hpages.on.github@gmail.com\"), person(\"Michael\", \"Lawrence\", role=\"aut\"), person(\"Patrick\", \"Aboyoun\", role=\"aut\"), person(\"Aaron\", \"Lun\", role=\"ctb\"), person(\"Beryl\", \"Kanali\", role=\"ctb\", comment=\"Converted vignettes from Sweave to RMarkdown\"))", + "Depends": [ + "R (>= 4.0.0)", + "methods", + "utils", + "stats", + "stats4", + "BiocGenerics (>= 0.53.2)" + ], + "Suggests": [ + "IRanges", + "GenomicRanges", + "SummarizedExperiment", + "Matrix", + "DelayedArray", + "ShortRead", + "graph", + "data.table", + "RUnit", + "BiocStyle", + "knitr" + ], + "VignetteBuilder": "knitr", + "Collate": "S4-utils.R show-utils.R utils.R normarg-utils.R bindROWS.R LLint-class.R isSorted.R subsetting-utils.R vector-utils.R integer-utils.R character-utils.R raw-utils.R eval-utils.R map_ranges_to_runs.R RectangularData-class.R Annotated-class.R DataFrame_OR_NULL-class.R Vector-class.R Vector-comparison.R Vector-setops.R Vector-merge.R Hits-class.R Hits-comparison.R Hits-setops.R Rle-class.R Rle-utils.R Factor-class.R List-class.R List-comparison.R splitAsList.R List-utils.R SimpleList-class.R HitsList-class.R DataFrame-class.R DataFrame-combine.R DataFrame-comparison.R DataFrame-utils.R DataFrameFactor-class.R TransposedDataFrame-class.R Pairs-class.R FilterRules-class.R stack-methods.R expand-methods.R aggregate-methods.R shiftApply-methods.R zzz.R", + "git_url": "https://git.bioconductor.org/packages/S4Vectors", + "git_branch": "RELEASE_3_22", + "git_last_commit": "c4f37f0", + "git_last_commit_date": "2025-10-29", + "Repository": "Bioconductor 3.22", + "NeedsCompilation": "yes", + "Author": "Hervé Pagès [aut, cre], Michael Lawrence [aut], Patrick Aboyoun [aut], Aaron Lun [ctb], Beryl Kanali [ctb] (Converted vignettes from Sweave to RMarkdown)", + "Maintainer": "Hervé Pagès " + }, + "S7": { + "Package": "S7", + "Version": "0.2.1", + "Source": "Repository", + "Title": "An Object Oriented System Meant to Become a Successor to S3 and S4", + "Authors@R": "c( person(\"Object-Oriented Programming Working Group\", role = \"cph\"), person(\"Davis\", \"Vaughan\", role = \"aut\"), person(\"Jim\", \"Hester\", role = \"aut\", comment = c(ORCID = \"0000-0002-2739-7082\")), person(\"Tomasz\", \"Kalinowski\", role = \"aut\"), person(\"Will\", \"Landau\", role = \"aut\"), person(\"Michael\", \"Lawrence\", role = \"aut\"), person(\"Martin\", \"Maechler\", role = \"aut\", comment = c(ORCID = \"0000-0002-8685-9910\")), person(\"Luke\", \"Tierney\", role = \"aut\"), person(\"Hadley\", \"Wickham\", , \"hadley@posit.co\", role = c(\"aut\", \"cre\"), comment = c(ORCID = \"0000-0003-4757-117X\")) )", + "Description": "A new object oriented programming system designed to be a successor to S3 and S4. It includes formal class, generic, and method specification, and a limited form of multiple dispatch. It has been designed and implemented collaboratively by the R Consortium Object-Oriented Programming Working Group, which includes representatives from R-Core, 'Bioconductor', 'Posit'/'tidyverse', and the wider R community.", + "License": "MIT + file LICENSE", + "URL": "https://rconsortium.github.io/S7/, https://github.com/RConsortium/S7", + "BugReports": "https://github.com/RConsortium/S7/issues", + "Depends": [ + "R (>= 3.5.0)" + ], + "Imports": [ + "utils" + ], + "Suggests": [ + "bench", + "callr", + "covr", + "knitr", + "methods", + "rmarkdown", + "testthat (>= 3.2.0)", + "tibble" + ], + "VignetteBuilder": "knitr", + "Config/build/compilation-database": "true", + "Config/Needs/website": "sloop", + "Config/testthat/edition": "3", + "Config/testthat/parallel": "TRUE", + "Config/testthat/start-first": "external-generic", + "Encoding": "UTF-8", + "RoxygenNote": "7.3.3", + "NeedsCompilation": "yes", + "Author": "Object-Oriented Programming Working Group [cph], Davis Vaughan [aut], Jim Hester [aut] (ORCID: ), Tomasz Kalinowski [aut], Will Landau [aut], Michael Lawrence [aut], Martin Maechler [aut] (ORCID: ), Luke Tierney [aut], Hadley Wickham [aut, cre] (ORCID: )", + "Maintainer": "Hadley Wickham ", + "Repository": "https://packagemanager.posit.co/cran/latest" + }, + "SQUAREM": { + "Package": "SQUAREM", + "Version": "2021.1", + "Source": "Repository", + "Date": "2021-01-12", + "Title": "Squared Extrapolation Methods for Accelerating EM-Like Monotone Algorithms", + "Description": "Algorithms for accelerating the convergence of slow, monotone sequences from smooth, contraction mapping such as the EM algorithm. It can be used to accelerate any smooth, linearly convergent acceleration scheme. A tutorial style introduction to this package is available in a vignette on the CRAN download page or, when the package is loaded in an R session, with vignette(\"SQUAREM\"). Refer to the J Stat Software article: .", + "Depends": [ + "R (>= 3.0)" + ], + "Suggests": [ + "setRNG" + ], + "LazyLoad": "yes", + "License": "GPL (>= 2)", + "Author": "Ravi Varadhan", + "Maintainer": "Ravi Varadhan ", + "URL": "https://coah.jhu.edu/people/Faculty_personal_Pages/Varadhan.html", + "Repository": "CRAN", + "NeedsCompilation": "no" + }, + "ScaledMatrix": { + "Package": "ScaledMatrix", + "Version": "1.18.0", + "Source": "Bioconductor", + "Date": "2024-02-29", + "Title": "Creating a DelayedMatrix of Scaled and Centered Values", + "Authors@R": "person(\"Aaron\", \"Lun\", role=c(\"aut\", \"cre\", \"cph\"), email=\"infinite.monkeys.with.keyboards@gmail.com\")", + "Imports": [ + "methods", + "Matrix", + "S4Vectors", + "DelayedArray" + ], + "Suggests": [ + "testthat", + "BiocStyle", + "knitr", + "rmarkdown", + "BiocSingular", + "DelayedMatrixStats" + ], + "biocViews": "Software, DataRepresentation", + "Description": "Provides delayed computation of a matrix of scaled and centered values. The result is equivalent to using the scale() function but avoids explicit realization of a dense matrix during block processing. This permits greater efficiency in common operations, most notably matrix multiplication.", + "License": "GPL-3", + "VignetteBuilder": "knitr", + "RoxygenNote": "7.3.1", + "BugReports": "https://github.com/LTLA/ScaledMatrix/issues", + "URL": "https://github.com/LTLA/ScaledMatrix", + "git_url": "https://git.bioconductor.org/packages/ScaledMatrix", + "git_branch": "RELEASE_3_22", + "git_last_commit": "2bcf86d", + "git_last_commit_date": "2025-10-29", + "Repository": "Bioconductor 3.22", + "NeedsCompilation": "no", + "Author": "Aaron Lun [aut, cre, cph]", + "Maintainer": "Aaron Lun " + }, + "Seqinfo": { + "Package": "Seqinfo", + "Version": "1.0.0", + "Source": "Bioconductor", + "Title": "A simple S4 class for storing basic information about a collection of genomic sequences", + "Description": "The Seqinfo class stores the names, lengths, circularity flags, and genomes for a particular collection of sequences. These sequences are typically the chromosomes and/or scaffolds of a specific genome assembly of a given organism. Seqinfo objects are rarely used as standalone objects. Instead, they are used as part of higher-level objects to represent their seqinfo() component. Examples of such higher-level objects are GRanges, RangedSummarizedExperiment, VCF, GAlignments, etc... defined in other Bioconductor infrastructure packages.", + "biocViews": "Infrastructure, DataRepresentation, GenomeAssembly, Annotation, GenomeAnnotation", + "URL": "https://bioconductor.org/packages/Seqinfo", + "BugReports": "https://github.com/Bioconductor/Seqinfo/issues", + "License": "Artistic-2.0", + "Encoding": "UTF-8", + "Authors@R": "person(\"Hervé\", \"Pagès\", role=c(\"aut\", \"cre\"), email=\"hpages.on.github@gmail.com\", comment=c(ORCID=\"0009-0002-8272-4522\"))", + "Depends": [ + "methods", + "BiocGenerics" + ], + "Imports": [ + "stats", + "S4Vectors (>= 0.47.6)", + "IRanges" + ], + "Suggests": [ + "GenomeInfoDb", + "GenomicRanges", + "BSgenome", + "GenomicFeatures", + "TxDb.Hsapiens.UCSC.hg38.knownGene", + "TxDb.Dmelanogaster.UCSC.dm3.ensGene", + "BSgenome.Hsapiens.UCSC.hg38", + "BSgenome.Celegans.UCSC.ce2", + "RUnit", + "knitr", + "rmarkdown", + "BiocStyle" + ], + "VignetteBuilder": "knitr", + "Collate": "utils.R rankSeqlevels.R seqinfo.R sortSeqlevels.R Seqinfo-class.R seqlevelsInUse.R GenomeDescription-class.R zzz.R", + "git_url": "https://git.bioconductor.org/packages/Seqinfo", + "git_branch": "RELEASE_3_22", + "git_last_commit": "9fc5a61", + "git_last_commit_date": "2025-10-29", + "Repository": "Bioconductor 3.22", + "NeedsCompilation": "no", + "Author": "Hervé Pagès [aut, cre] (ORCID: )", + "Maintainer": "Hervé Pagès " + }, + "SingleCellExperiment": { + "Package": "SingleCellExperiment", + "Version": "1.32.0", + "Source": "Bioconductor", + "Date": "2025-06-27", + "Title": "S4 Classes for Single Cell Data", + "Authors@R": "c( person(\"Aaron\", \"Lun\", role=c(\"aut\", \"cph\"), email=\"infinite.monkeys.with.keyboards@gmail.com\"), person(\"Davide\",\"Risso\", role=c(\"aut\",\"cre\", \"cph\"), email=\"risso.davide@gmail.com\"), person(\"Keegan\", \"Korthauer\", role=\"ctb\"), person(\"Kevin\", \"Rue-Albrecht\", role=\"ctb\"), person(\"Luke\", \"Zappia\", role = \"ctb\", comment = c(ORCID = \"0000-0001-7744-8565\", github = \"lazappi\")))", + "Depends": [ + "SummarizedExperiment" + ], + "Imports": [ + "methods", + "utils", + "stats", + "S4Vectors", + "BiocGenerics", + "GenomicRanges", + "DelayedArray" + ], + "Suggests": [ + "testthat", + "BiocStyle", + "knitr", + "rmarkdown", + "Matrix", + "scRNAseq (>= 2.9.1)", + "Rtsne" + ], + "biocViews": "ImmunoOncology, DataRepresentation, DataImport, Infrastructure, SingleCell", + "Description": "Defines a S4 class for storing data from single-cell experiments. This includes specialized methods to store and retrieve spike-in information, dimensionality reduction coordinates and size factors for each cell, along with the usual metadata for genes and libraries.", + "License": "GPL-3", + "VignetteBuilder": "knitr", + "RoxygenNote": "7.3.2", + "git_url": "https://git.bioconductor.org/packages/SingleCellExperiment", + "git_branch": "RELEASE_3_22", + "git_last_commit": "db7133e", + "git_last_commit_date": "2025-10-29", + "Repository": "Bioconductor 3.22", + "NeedsCompilation": "no", + "Author": "Aaron Lun [aut, cph], Davide Risso [aut, cre, cph], Keegan Korthauer [ctb], Kevin Rue-Albrecht [ctb], Luke Zappia [ctb] (ORCID: , github: lazappi)", + "Maintainer": "Davide Risso " + }, + "SingleR": { + "Package": "SingleR", + "Version": "2.12.0", + "Source": "Bioconductor", + "Title": "Reference-Based Single-Cell RNA-Seq Annotation", + "Date": "2025-10-16", + "Authors@R": "c(person(\"Dvir\", \"Aran\", email=\"dvir.aran@ucsf.edu\", role=c(\"aut\", \"cph\")), person(\"Aaron\", \"Lun\", email=\"infinite.monkeys.with.keyboards@gmail.com\", role=c(\"ctb\", \"cre\")), person(\"Daniel\", \"Bunis\", role=\"ctb\"), person(\"Jared\", \"Andrews\", email = \"jared.andrews07@gmail.com\", role=\"ctb\"), person(\"Friederike\", \"Dündar\", email = \"frd2007@med.cornell.edu\", role=\"ctb\"))", + "Description": "Performs unbiased cell type recognition from single-cell RNA sequencing data, by leveraging reference transcriptomic datasets of pure cell types to infer the cell of origin of each single cell independently.", + "License": "GPL-3", + "Depends": [ + "SummarizedExperiment" + ], + "Imports": [ + "methods", + "Matrix", + "S4Vectors", + "DelayedArray", + "DelayedMatrixStats", + "BiocParallel", + "BiocNeighbors", + "stats", + "utils", + "Rcpp", + "beachmat (>= 2.25.1)" + ], + "LinkingTo": [ + "Rcpp", + "beachmat", + "assorthead (>= 1.3.5)", + "BiocNeighbors" + ], + "Suggests": [ + "testthat", + "knitr", + "rmarkdown", + "BiocStyle", + "BiocGenerics", + "SingleCellExperiment", + "scuttle", + "scrapper (>= 1.3.14)", + "scRNAseq", + "ggplot2", + "pheatmap", + "grDevices", + "gridExtra", + "viridis", + "celldex" + ], + "biocViews": "Software, SingleCell, GeneExpression, Transcriptomics, Classification, Clustering, Annotation", + "SystemRequirements": "C++17", + "VignetteBuilder": "knitr", + "Encoding": "UTF-8", + "RoxygenNote": "7.3.3", + "URL": "https://github.com/SingleR-inc/SingleR", + "BugReports": "https://github.com/SingleR-inc/SingleR/issues", + "git_url": "https://git.bioconductor.org/packages/SingleR", + "git_branch": "RELEASE_3_22", + "git_last_commit": "39ca8d4", + "git_last_commit_date": "2025-10-29", + "Repository": "Bioconductor 3.22", + "NeedsCompilation": "yes", + "Author": "Dvir Aran [aut, cph], Aaron Lun [ctb, cre], Daniel Bunis [ctb], Jared Andrews [ctb], Friederike Dündar [ctb]", + "Maintainer": "Aaron Lun " + }, + "SparseArray": { + "Package": "SparseArray", + "Version": "1.10.8", + "Source": "Bioconductor", + "Title": "High-performance sparse data representation and manipulation in R", + "Description": "The SparseArray package provides array-like containers for efficient in-memory representation of multidimensional sparse data in R (arrays and matrices). The package defines the SparseArray virtual class and two concrete subclasses: COO_SparseArray and SVT_SparseArray. Each subclass uses its own internal representation of the nonzero multidimensional data: the \"COO layout\" and the \"SVT layout\", respectively. SVT_SparseArray objects mimic as much as possible the behavior of ordinary matrix and array objects in base R. In particular, they suppport most of the \"standard matrix and array API\" defined in base R and in the matrixStats package from CRAN.", + "biocViews": "Infrastructure, DataRepresentation", + "URL": "https://bioconductor.org/packages/SparseArray", + "BugReports": "https://github.com/Bioconductor/SparseArray/issues", + "License": "Artistic-2.0", + "Encoding": "UTF-8", + "Authors@R": "c( person(\"Hervé\", \"Pagès\", role=c(\"aut\", \"cre\"), email=\"hpages.on.github@gmail.com\", comment=c(ORCID=\"0009-0002-8272-4522\")), person(\"Vince\", \"Carey\", role=\"fnd\", email=\"stvjc@channing.harvard.edu\", comment=c(ORCID=\"0000-0003-4046-0063\")), person(\"Rafael A.\", \"Irizarry\", role=\"fnd\", email=\"rafa@ds.harvard.edu\", comment=c(ORCID=\"0000-0002-3944-4309\")), person(\"Jacques\", \"Serizay\", role=\"ctb\", comment=c(ORCID=\"0000-0002-4295-0624\")))", + "Depends": [ + "R (>= 4.3.0)", + "methods", + "Matrix", + "BiocGenerics (>= 0.43.1)", + "MatrixGenerics (>= 1.11.1)", + "S4Vectors (>= 0.43.2)", + "S4Arrays (>= 1.10.1)" + ], + "Imports": [ + "utils", + "stats", + "matrixStats", + "IRanges", + "XVector" + ], + "LinkingTo": [ + "S4Vectors", + "IRanges", + "XVector" + ], + "Suggests": [ + "HDF5Array", + "ExperimentHub", + "testthat", + "knitr", + "rmarkdown", + "BiocStyle" + ], + "VignetteBuilder": "knitr", + "Collate": "utils.R options.R OPBufTree.R thread-control.R sparseMatrix-utils.R is_nonzero.R SparseArray-class.R COO_SparseArray-class.R SVT_SparseArray-class.R extract_sparse_array.R read_block_as_sparse.R SparseArray-dim-tuning.R SparseArray-aperm.R SparseArray-subsetting.R SparseArray-subassignment.R SparseArray-abind.R SparseArray-summarization.R SparseArray-Arith-methods.R SparseArray-Compare-methods.R SparseArray-Logic-methods.R SparseArray-Math-methods.R SparseArray-Complex-methods.R SparseArray-misc-methods.R SparseArray-matrixStats.R rowsum-methods.R SparseMatrix-mult.R randomSparseArray.R readSparseCSV.R is_nonna.R NaArray-class.R NaArray-aperm.R NaArray-subsetting.R NaArray-subassignment.R NaArray-abind.R NaArray-summarization.R NaArray-Arith-methods.R NaArray-Compare-methods.R NaArray-Logic-methods.R NaArray-Math-methods.R NaArray-misc-methods.R NaArray-matrixStats.R zzz.R", + "git_url": "https://git.bioconductor.org/packages/SparseArray", + "git_branch": "RELEASE_3_22", + "git_last_commit": "c0de8d4", + "git_last_commit_date": "2025-12-15", + "Repository": "Bioconductor 3.22", + "NeedsCompilation": "yes", + "Author": "Hervé Pagès [aut, cre] (ORCID: ), Vince Carey [fnd] (ORCID: ), Rafael A. Irizarry [fnd] (ORCID: ), Jacques Serizay [ctb] (ORCID: )", + "Maintainer": "Hervé Pagès " + }, + "SpatialExperiment": { + "Package": "SpatialExperiment", + "Version": "1.20.0", + "Source": "Bioconductor", + "Title": "S4 Class for Spatially Resolved -omics Data", + "Description": "Defines an S4 class for storing data from spatial -omics experiments. The class extends SingleCellExperiment to support storage and retrieval of additional information from spot-based and molecule-based platforms, including spatial coordinates, images, and image metadata. A specialized constructor function is included for data from the 10x Genomics Visium platform.", + "Authors@R": "c( person(\"Dario\", \"Righelli\", role=c(\"aut\", \"cre\"), email=\"dario.righelli@gmail.com\", comment=c(ORCID=\"0000-0003-1504-3583\")), person(\"Davide\", \"Risso\", role=c(\"aut\"), email=\"risso.davide@gmail.com\", comment=c(ORCID=\"0000-0001-8508-5012\")), person(\"Helena L.\", \"Crowell\", role=c(\"aut\"), email=\"helena.crowell@cnag.eu\", comment=c(ORCID=\"0000-0002-4801-1767\")), person(\"Lukas M.\", \"Weber\", role=c(\"aut\"), email=\"lmweb012@gmail.com\", comment=c(ORCID=\"0000-0002-3282-1730\")), person(\"Nicholas J.\", \"Eagles\", role=c(\"ctb\"), email=\"nickeagles77@gmail.com\"))", + "URL": "https://github.com/drighelli/SpatialExperiment", + "BugReports": "https://github.com/drighelli/SpatialExperiment/issues", + "License": "GPL-3", + "Encoding": "UTF-8", + "biocViews": "DataRepresentation, DataImport, Infrastructure, ImmunoOncology, GeneExpression, Transcriptomics, SingleCell, Spatial", + "Depends": [ + "R (>= 4.1.0)", + "methods", + "SingleCellExperiment" + ], + "Imports": [ + "rjson", + "grDevices", + "magick", + "utils", + "S4Vectors", + "SummarizedExperiment", + "BiocGenerics", + "BiocFileCache" + ], + "Suggests": [ + "knitr", + "rmarkdown", + "testthat", + "BiocStyle", + "BumpyMatrix", + "DropletUtils", + "VisiumIO" + ], + "VignetteBuilder": "knitr", + "RoxygenNote": "7.3.1", + "git_url": "https://git.bioconductor.org/packages/SpatialExperiment", + "git_branch": "RELEASE_3_22", + "git_last_commit": "dfdda19", + "git_last_commit_date": "2025-10-29", + "Repository": "Bioconductor 3.22", + "NeedsCompilation": "no", + "Author": "Dario Righelli [aut, cre] (ORCID: ), Davide Risso [aut] (ORCID: ), Helena L. Crowell [aut] (ORCID: ), Lukas M. Weber [aut] (ORCID: ), Nicholas J. Eagles [ctb]", + "Maintainer": "Dario Righelli " + }, + "SummarizedExperiment": { + "Package": "SummarizedExperiment", + "Version": "1.40.0", + "Source": "Bioconductor", + "Title": "A container (S4 class) for matrix-like assays", + "Description": "The SummarizedExperiment container contains one or more assays, each represented by a matrix-like object of numeric or other mode. The rows typically represent genomic ranges of interest and the columns represent samples.", + "biocViews": "Genetics, Infrastructure, Sequencing, Annotation, Coverage, GenomeAnnotation", + "URL": "https://bioconductor.org/packages/SummarizedExperiment", + "BugReports": "https://github.com/Bioconductor/SummarizedExperiment/issues", + "License": "Artistic-2.0", + "Encoding": "UTF-8", + "Authors@R": "c( person(\"Martin\", \"Morgan\", role=\"aut\"), person(\"Valerie\", \"Obenchain\", role=\"aut\"), person(\"Jim\", \"Hester\", role=\"aut\"), person(\"Hervé\", \"Pagès\", role=c(\"aut\", \"cre\"), email=\"hpages.on.github@gmail.com\"))", + "Depends": [ + "R (>= 4.0.0)", + "methods", + "MatrixGenerics (>= 1.1.3)", + "GenomicRanges (>= 1.61.4)", + "Biobase" + ], + "Imports": [ + "utils", + "stats", + "tools", + "Matrix", + "BiocGenerics (>= 0.51.3)", + "S4Vectors (>= 0.33.7)", + "IRanges (>= 2.23.9)", + "Seqinfo", + "S4Arrays (>= 1.1.1)", + "DelayedArray (>= 0.31.12)" + ], + "Suggests": [ + "GenomeInfoDb (>= 1.45.5)", + "rhdf5", + "HDF5Array (>= 1.7.5)", + "annotate", + "AnnotationDbi", + "GenomicFeatures", + "SparseArray", + "SingleCellExperiment", + "TxDb.Hsapiens.UCSC.hg19.knownGene", + "hgu95av2.db", + "airway (>= 1.15.1)", + "BiocStyle", + "knitr", + "rmarkdown", + "RUnit", + "testthat", + "digest" + ], + "VignetteBuilder": "knitr", + "Collate": "Assays-class.R SummarizedExperiment-class.R RangedSummarizedExperiment-class.R intra-range-methods.R inter-range-methods.R coverage-methods.R combine-methods.R findOverlaps-methods.R nearest-methods.R makeSummarizedExperimentFromExpressionSet.R makeSummarizedExperimentFromDataFrame.R makeSummarizedExperimentFromLoom.R zzz.R", + "git_url": "https://git.bioconductor.org/packages/SummarizedExperiment", + "git_branch": "RELEASE_3_22", + "git_last_commit": "469a2de", + "git_last_commit_date": "2025-10-29", + "Repository": "Bioconductor 3.22", + "NeedsCompilation": "no", + "Author": "Martin Morgan [aut], Valerie Obenchain [aut], Jim Hester [aut], Hervé Pagès [aut, cre]", + "Maintainer": "Hervé Pagès " + }, + "UCSC.utils": { + "Package": "UCSC.utils", + "Version": "1.6.1", + "Source": "Bioconductor", + "Title": "Low-level utilities to retrieve data from the UCSC Genome Browser", + "Description": "A set of low-level utilities to retrieve data from the UCSC Genome Browser. Most functions in the package access the data via the UCSC REST API but some of them query the UCSC MySQL server directly. Note that the primary purpose of the package is to support higher-level functionalities implemented in downstream packages like GenomeInfoDb or txdbmaker.", + "biocViews": "Infrastructure, GenomeAssembly, Annotation, GenomeAnnotation, DataImport", + "URL": "https://bioconductor.org/packages/UCSC.utils", + "BugReports": "https://github.com/Bioconductor/UCSC.utils/issues", + "License": "Artistic-2.0", + "Encoding": "UTF-8", + "Authors@R": "person(\"Hervé\", \"Pagès\", role=c(\"aut\", \"cre\"), email=\"hpages.on.github@gmail.com\")", + "Imports": [ + "methods", + "stats", + "httr", + "jsonlite", + "S4Vectors (>= 0.47.6)" + ], + "Suggests": [ + "DBI", + "RMariaDB", + "GenomeInfoDb", + "testthat", + "knitr", + "rmarkdown", + "BiocStyle" + ], + "VignetteBuilder": "knitr", + "Collate": "00utils.R UCSC.api.url.R REST_API.R list_UCSC_genomes.R get_UCSC_chrom_sizes.R list_UCSC_tracks.R fetch_UCSC_track_data.R UCSC_dbselect.R zzz.R", + "git_url": "https://git.bioconductor.org/packages/UCSC.utils", + "git_branch": "RELEASE_3_22", + "git_last_commit": "625d554", + "git_last_commit_date": "2025-12-08", + "Repository": "Bioconductor 3.22", + "NeedsCompilation": "no", + "Author": "Hervé Pagès [aut, cre]", + "Maintainer": "Hervé Pagès " + }, + "V8": { + "Package": "V8", + "Version": "8.0.1", + "Source": "Repository", + "Type": "Package", + "Title": "Embedded JavaScript and WebAssembly Engine for R", + "Authors@R": "c( person(\"Jeroen\", \"Ooms\", role = c(\"aut\", \"cre\"), email = \"jeroenooms@gmail.com\", comment = c(ORCID = \"0000-0002-4035-0289\")), person(\"George\", \"Stagg\", role = \"ctb\", comment = c(ORCID = \"0009-0006-3173-9846\")), person(\"Jan Marvin\", \"Garbuszus\", role = \"ctb\"))", + "Description": "An R interface to V8 : Google's open source JavaScript and WebAssembly engine. This package can be compiled either with V8 or NodeJS when built as a shared library.", + "License": "MIT + file LICENSE", + "URL": "https://jeroen.r-universe.dev/V8", + "BugReports": "https://github.com/jeroen/v8/issues", + "SystemRequirements": "On Linux you can build against libv8-dev (Debian) or v8-devel (Fedora). We also provide static libv8 binaries for most platforms, see the README for details.", + "NeedsCompilation": "yes", + "VignetteBuilder": "knitr", + "Imports": [ + "Rcpp (>= 0.12.12)", + "jsonlite (>= 1.0)", + "curl (>= 1.0)", + "utils" + ], + "LinkingTo": [ + "Rcpp" + ], + "Suggests": [ + "testthat", + "knitr", + "rmarkdown" + ], + "RoxygenNote": "7.3.1", + "Language": "en-US", + "Encoding": "UTF-8", + "Biarch": "true", + "Author": "Jeroen Ooms [aut, cre] (ORCID: ), George Stagg [ctb] (ORCID: ), Jan Marvin Garbuszus [ctb]", + "Maintainer": "Jeroen Ooms ", + "Repository": "https://packagemanager.posit.co/cran/latest" + }, + "XML": { + "Package": "XML", + "Version": "3.99-0.20", + "Source": "Repository", + "Authors@R": "c(person(\"CRAN Team\", role = c('ctb', 'cre'), email = \"CRAN@r-project.org\", comment = \"de facto maintainer since 2013\"), person(\"Duncan\", \"Temple Lang\", role = c(\"aut\"), email = \"duncan@r-project.org\", comment = c(ORCID = \"0000-0003-0159-1546\")), person(\"Tomas\", \"Kalibera\", role = \"ctb\"), person(\"Ivan\", \"Krylov\", role = \"ctb\"))", + "Title": "Tools for Parsing and Generating XML Within R and S-Plus", + "Depends": [ + "R (>= 4.0.0)", + "methods", + "utils" + ], + "Suggests": [ + "bitops", + "RCurl" + ], + "SystemRequirements": "libxml2 (>= 2.6.3)", + "Description": "Many approaches for both reading and creating XML (and HTML) documents (including DTDs), both local and accessible via HTTP or FTP. Also offers access to an 'XPath' \"interpreter\".", + "URL": "https://www.omegahat.net/RSXML/", + "License": "BSD_3_clause + file LICENSE", + "Collate": "AAA.R DTD.R DTDClasses.R DTDRef.R SAXMethods.R XMLClasses.R applyDOM.R assignChild.R catalog.R createNode.R dynSupports.R error.R flatTree.R nodeAccessors.R parseDTD.R schema.R summary.R tangle.R toString.R tree.R version.R xmlErrorEnums.R xmlEventHandler.R xmlEventParse.R xmlHandler.R xmlInternalSource.R xmlOutputDOM.R xmlNodes.R xmlOutputBuffer.R xmlTree.R xmlTreeParse.R htmlParse.R hashTree.R zzz.R supports.R parser.R libxmlFeatures.R xmlString.R saveXML.R namespaces.R readHTMLTable.R reflection.R xmlToDataFrame.R bitList.R compare.R encoding.R fixNS.R xmlRoot.R serialize.R xmlMemoryMgmt.R keyValueDB.R solrDocs.R XMLRErrorInfo.R xincludes.R namespaceHandlers.R tangle1.R htmlLinks.R htmlLists.R getDependencies.R getRelativeURL.R xmlIncludes.R simplifyPath.R", + "NeedsCompilation": "yes", + "Author": "CRAN Team [ctb, cre] (de facto maintainer since 2013), Duncan Temple Lang [aut] (ORCID: ), Tomas Kalibera [ctb], Ivan Krylov [ctb]", + "Maintainer": "CRAN Team ", + "Repository": "https://packagemanager.posit.co/cran/latest", + "Encoding": "UTF-8" + }, + "XVector": { + "Package": "XVector", + "Version": "0.50.0", + "Source": "Bioconductor", + "Title": "Foundation of external vector representation and manipulation in Bioconductor", + "Description": "Provides memory efficient S4 classes for storing sequences \"externally\" (e.g. behind an R external pointer, or on disk).", + "biocViews": "Infrastructure, DataRepresentation", + "URL": "https://bioconductor.org/packages/XVector", + "BugReports": "https://github.com/Bioconductor/XVector/issues", + "License": "Artistic-2.0", + "Encoding": "UTF-8", + "Author": "Hervé Pagès and Patrick Aboyoun", + "Maintainer": "Hervé Pagès ", + "Depends": [ + "R (>= 4.0.0)", + "methods", + "BiocGenerics (>= 0.37.0)", + "S4Vectors (>= 0.27.12)", + "IRanges (>= 2.43.8)" + ], + "Imports": [ + "methods", + "utils", + "stats", + "tools", + "BiocGenerics", + "S4Vectors", + "IRanges" + ], + "LinkingTo": [ + "S4Vectors", + "IRanges" + ], + "Suggests": [ + "Biostrings", + "drosophila2probe", + "RUnit" + ], + "Collate": "io-utils.R RDS-random-access.R SharedVector-class.R SharedRaw-class.R SharedInteger-class.R SharedDouble-class.R XVector-class.R XRaw-class.R XInteger-class.R XDouble-class.R XVectorList-class.R XRawList-class.R XRawList-comparison.R XIntegerViews-class.R XDoubleViews-class.R OnDiskRaw-class.R RdaCollection-class.R RdsCollection-class.R intra-range-methods.R compact-methods.R reverse-methods.R slice-methods.R view-summarization-methods.R updateObject-methods.R zzz.R", + "git_url": "https://git.bioconductor.org/packages/XVector", + "git_branch": "RELEASE_3_22", + "git_last_commit": "6b7e2a1", + "git_last_commit_date": "2025-10-29", + "Repository": "Bioconductor 3.22", + "NeedsCompilation": "yes" + }, + "abind": { + "Package": "abind", + "Version": "1.4-8", + "Source": "Repository", + "Date": "2024-09-08", + "Title": "Combine Multidimensional Arrays", + "Authors@R": "c(person(\"Tony\", \"Plate\", email = \"tplate@acm.org\", role = c(\"aut\", \"cre\")), person(\"Richard\", \"Heiberger\", role = c(\"aut\")))", + "Maintainer": "Tony Plate ", + "Description": "Combine multidimensional arrays into a single array. This is a generalization of 'cbind' and 'rbind'. Works with vectors, matrices, and higher-dimensional arrays (aka tensors). Also provides functions 'adrop', 'asub', and 'afill' for manipulating, extracting and replacing data in arrays.", + "Depends": [ + "R (>= 1.5.0)" + ], + "Imports": [ + "methods", + "utils" + ], + "License": "MIT + file LICENSE", + "NeedsCompilation": "no", + "Author": "Tony Plate [aut, cre], Richard Heiberger [aut]", + "Repository": "https://packagemanager.posit.co/cran/latest", + "Encoding": "UTF-8" + }, + "affy": { + "Package": "affy", + "Version": "1.88.0", + "Source": "Bioconductor", + "Title": "Methods for Affymetrix Oligonucleotide Arrays", + "Author": "Rafael A. Irizarry , Laurent Gautier , Benjamin Milo Bolstad , and Crispin Miller with contributions from Magnus Astrand , Leslie M. Cope , Robert Gentleman, Jeff Gentry, Conrad Halling , Wolfgang Huber, James MacDonald , Benjamin I. P. Rubinstein, Christopher Workman , John Zhang", + "Maintainer": "Robert D. Shear ", + "URL": "https://bioconductor.org/packages/affy", + "BugReports": "https://github.com/rafalab/affy/issues", + "Depends": [ + "R (>= 2.8.0)", + "BiocGenerics (>= 0.1.12)", + "Biobase (>= 2.5.5)" + ], + "Imports": [ + "affyio (>= 1.13.3)", + "BiocManager", + "graphics", + "grDevices", + "methods", + "preprocessCore", + "stats", + "utils" + ], + "Suggests": [ + "tkWidgets (>= 1.19.0)", + "affydata", + "widgetTools", + "hgu95av2cdf" + ], + "LinkingTo": [ + "preprocessCore" + ], + "Description": "The package contains functions for exploratory oligonucleotide array analysis. The dependence on tkWidgets only concerns few convenience functions. 'affy' is fully functional without it.", + "License": "LGPL (>= 2.0)", + "Collate": "ProgressBarText.R ppset.ttest.R ppsetApply.R expressoWidget.R getCDFenv.R AffyRNAdeg.R avdiff.R barplot.ProbeSet.R bg.Affy.chipwide.R bg.R expresso.R fit.li.wong.R generateExprVal.method.avgdiff.R generateExprVal.method.liwong.R generateExprVal.method.mas.R generateExprVal.method.medianpolish.R generateExprVal.method.playerout.R hlog.R justrma.R loess.normalize.R maffy.R mas5.R merge.AffyBatch.R normalize.constant.R normalize.contrasts.R normalize.invariantset.R normalize.loess.R normalize.qspline.R normalize.quantiles.R pairs.AffyBatch.R plot.density.R plotLocation.R plot.ProbeSet.R pmcorrect.mas.R AffyBatch.R mva.pairs.R ProbeSet.R read.affybatch.R rma.R summary.R tukey.biweight.R whatcdf.R xy2indices.R zzz.R", + "biocViews": "Microarray, OneChannel, Preprocessing", + "LazyLoad": "yes", + "git_url": "https://git.bioconductor.org/packages/affy", + "git_branch": "RELEASE_3_22", + "git_last_commit": "229aef4", + "git_last_commit_date": "2025-10-29", + "Repository": "Bioconductor 3.22", + "NeedsCompilation": "yes" + }, + "affyio": { + "Package": "affyio", + "Version": "1.80.0", + "Source": "Bioconductor", + "Title": "Tools for parsing Affymetrix data files", + "Author": "Ben Bolstad ", + "Maintainer": "Ben Bolstad ", + "Depends": [ + "R (>= 2.6.0)" + ], + "Imports": [ + "methods" + ], + "Description": "Routines for parsing Affymetrix data files based upon file format information. Primary focus is on accessing the CEL and CDF file formats.", + "License": "LGPL (>= 2)", + "URL": "https://github.com/bmbolstad/affyio", + "biocViews": "Microarray, DataImport, Infrastructure", + "LazyLoad": "yes", + "git_url": "https://git.bioconductor.org/packages/affyio", + "git_branch": "RELEASE_3_22", + "git_last_commit": "eb747bb", + "git_last_commit_date": "2025-10-29", + "Repository": "Bioconductor 3.22", + "NeedsCompilation": "yes" + }, + "alabaster.base": { + "Package": "alabaster.base", + "Version": "1.10.0", + "Source": "Bioconductor", + "Title": "Save Bioconductor Objects to File", + "Date": "2025-07-25", + "Authors@R": "person(\"Aaron\", \"Lun\", role=c(\"aut\", \"cre\"), email=\"infinite.monkeys.with.keyboards@gmail.com\")", + "License": "MIT + file LICENSE", + "Description": "Save Bioconductor data structures into file artifacts, and load them back into memory. This is a more robust and portable alternative to serialization of such objects into RDS files. Each artifact is associated with metadata for further interpretation; downstream applications can enrich this metadata with context-specific properties.", + "Imports": [ + "alabaster.schemas", + "methods", + "utils", + "S4Vectors", + "rhdf5 (>= 2.47.6)", + "jsonlite", + "jsonvalidate", + "Rcpp" + ], + "Suggests": [ + "BiocStyle", + "rmarkdown", + "knitr", + "testthat", + "digest", + "Matrix", + "alabaster.matrix" + ], + "LinkingTo": [ + "Rcpp", + "assorthead (>= 1.1.2)", + "Rhdf5lib" + ], + "VignetteBuilder": "knitr", + "SystemRequirements": "C++17, GNU make", + "RoxygenNote": "7.3.2", + "Encoding": "UTF-8", + "biocViews": "DataRepresentation, DataImport", + "URL": "https://github.com/ArtifactDB/alabaster.base", + "BugReports": "https://github.com/ArtifactDB/alabaster.base/issues", + "git_url": "https://git.bioconductor.org/packages/alabaster.base", + "git_branch": "RELEASE_3_22", + "git_last_commit": "6b49bcc", + "git_last_commit_date": "2025-10-29", + "Repository": "Bioconductor 3.22", + "NeedsCompilation": "yes", + "Author": "Aaron Lun [aut, cre]", + "Maintainer": "Aaron Lun " + }, + "alabaster.matrix": { + "Package": "alabaster.matrix", + "Version": "1.10.0", + "Source": "Bioconductor", + "Title": "Load and Save Artifacts from File", + "Date": "2025-03-04", + "Authors@R": "person(\"Aaron\", \"Lun\", role=c(\"aut\", \"cre\"), email=\"infinite.monkeys.with.keyboards@gmail.com\")", + "License": "MIT + file LICENSE", + "Description": "Save matrices, arrays and similar objects into file artifacts, and load them back into memory. This is a more portable alternative to serialization of such objects into RDS files. Each artifact is associated with metadata for further interpretation; downstream applications can enrich this metadata with context-specific properties.", + "Depends": [ + "alabaster.base" + ], + "Imports": [ + "methods", + "BiocGenerics", + "S4Vectors", + "DelayedArray (>= 0.33.3)", + "S4Arrays", + "SparseArray (>= 1.5.22)", + "rhdf5 (>= 2.47.1)", + "HDF5Array", + "Matrix", + "Rcpp" + ], + "Suggests": [ + "testthat", + "knitr", + "BiocStyle", + "chihaya", + "BiocSingular", + "ResidualMatrix" + ], + "LinkingTo": [ + "Rcpp" + ], + "VignetteBuilder": "knitr", + "RoxygenNote": "7.3.2", + "Encoding": "UTF-8", + "biocViews": "DataImport, DataRepresentation", + "git_url": "https://git.bioconductor.org/packages/alabaster.matrix", + "git_branch": "RELEASE_3_22", + "git_last_commit": "8892772", + "git_last_commit_date": "2025-10-29", + "Repository": "Bioconductor 3.22", + "NeedsCompilation": "yes", + "Author": "Aaron Lun [aut, cre]", + "Maintainer": "Aaron Lun " + }, + "alabaster.ranges": { + "Package": "alabaster.ranges", + "Version": "1.10.0", + "Source": "Bioconductor", + "Title": "Load and Save Ranges-related Artifacts from File", + "Date": "2025-07-22", + "Authors@R": "person(\"Aaron\", \"Lun\", role=c(\"aut\", \"cre\"), email=\"infinite.monkeys.with.keyboards@gmail.com\")", + "License": "MIT + file LICENSE", + "Description": "Save GenomicRanges, IRanges and related data structures into file artifacts, and load them back into memory. This is a more portable alternative to serialization of such objects into RDS files. Each artifact is associated with metadata for further interpretation; downstream applications can enrich this metadata with context-specific properties.", + "Depends": [ + "GenomicRanges", + "alabaster.base" + ], + "Imports": [ + "methods", + "S4Vectors", + "BiocGenerics", + "IRanges", + "Seqinfo", + "rhdf5" + ], + "Suggests": [ + "testthat", + "knitr", + "BiocStyle", + "jsonlite" + ], + "VignetteBuilder": "knitr", + "RoxygenNote": "7.2.3", + "biocViews": "DataImport, DataRepresentation", + "git_url": "https://git.bioconductor.org/packages/alabaster.ranges", + "git_branch": "RELEASE_3_22", + "git_last_commit": "e35375b", + "git_last_commit_date": "2025-10-29", + "Repository": "Bioconductor 3.22", + "NeedsCompilation": "no", + "Author": "Aaron Lun [aut, cre]", + "Maintainer": "Aaron Lun " + }, + "alabaster.sce": { + "Package": "alabaster.sce", + "Version": "1.10.0", + "Source": "Bioconductor", + "Title": "Load and Save SingleCellExperiment from File", + "Date": "2024-10-16", + "Authors@R": "person(\"Aaron\", \"Lun\", role=c(\"aut\", \"cre\"), email=\"infinite.monkeys.with.keyboards@gmail.com\")", + "License": "MIT + file LICENSE", + "Description": "Save SingleCellExperiment into file artifacts, and load them back into memory. This is a more portable alternative to serialization of such objects into RDS files. Each artifact is associated with metadata for further interpretation; downstream applications can enrich this metadata with context-specific properties.", + "Depends": [ + "SingleCellExperiment", + "alabaster.base" + ], + "Imports": [ + "methods", + "alabaster.se", + "jsonlite" + ], + "Suggests": [ + "knitr", + "testthat", + "BiocStyle", + "rmarkdown" + ], + "VignetteBuilder": "knitr", + "RoxygenNote": "7.2.3", + "biocViews": "DataImport, DataRepresentation", + "git_url": "https://git.bioconductor.org/packages/alabaster.sce", + "git_branch": "RELEASE_3_22", + "git_last_commit": "a6eed09", + "git_last_commit_date": "2025-10-29", + "Repository": "Bioconductor 3.22", + "NeedsCompilation": "no", + "Author": "Aaron Lun [aut, cre]", + "Maintainer": "Aaron Lun " + }, + "alabaster.schemas": { + "Package": "alabaster.schemas", + "Version": "1.10.0", + "Source": "Bioconductor", + "Title": "Schemas for the Alabaster Framework", + "Date": "2023-11-09", + "License": "MIT + file LICENSE", + "Description": "Stores all schemas required by various alabaster.* packages. No computation should be performed by this package, as that is handled by alabaster.base. We use a separate package instead of storing the schemas in alabaster.base itself, to avoid conflating management of the schemas with code maintenence.", + "Authors@R": "person(\"Aaron\", \"Lun\", role=c(\"cre\", \"aut\"), email=\"infinite.monkeys.with.keyboards@gmail.com\")", + "RoxygenNote": "7.2.3", + "biocViews": "DataRepresentation, DataImport", + "Suggests": [ + "knitr", + "rmarkdown", + "BiocStyle" + ], + "VignetteBuilder": "knitr", + "git_url": "https://git.bioconductor.org/packages/alabaster.schemas", + "git_branch": "RELEASE_3_22", + "git_last_commit": "f89d374", + "git_last_commit_date": "2025-10-29", + "Repository": "Bioconductor 3.22", + "NeedsCompilation": "no", + "Author": "Aaron Lun [cre, aut]", + "Maintainer": "Aaron Lun " + }, + "alabaster.se": { + "Package": "alabaster.se", + "Version": "1.10.0", + "Source": "Bioconductor", + "Title": "Load and Save SummarizedExperiments from File", + "Date": "2024-10-16", + "Authors@R": "person(\"Aaron\", \"Lun\", role=c(\"aut\", \"cre\"), email=\"infinite.monkeys.with.keyboards@gmail.com\")", + "License": "MIT + file LICENSE", + "Description": "Save SummarizedExperiments into file artifacts, and load them back into memory. This is a more portable alternative to serialization of such objects into RDS files. Each artifact is associated with metadata for further interpretation; downstream applications can enrich this metadata with context-specific properties.", + "Depends": [ + "SummarizedExperiment", + "alabaster.base" + ], + "Imports": [ + "methods", + "alabaster.ranges", + "alabaster.matrix", + "BiocGenerics", + "S4Vectors", + "IRanges", + "GenomicRanges", + "jsonlite" + ], + "Suggests": [ + "rmarkdown", + "knitr", + "testthat", + "BiocStyle" + ], + "VignetteBuilder": "knitr", + "RoxygenNote": "7.3.1", + "biocViews": "DataImport, DataRepresentation", + "git_url": "https://git.bioconductor.org/packages/alabaster.se", + "git_branch": "RELEASE_3_22", + "git_last_commit": "9f5dc20", + "git_last_commit_date": "2025-10-29", + "Repository": "Bioconductor 3.22", + "NeedsCompilation": "no", + "Author": "Aaron Lun [aut, cre]", + "Maintainer": "Aaron Lun " + }, + "alevinQC": { + "Package": "alevinQC", + "Version": "1.26.0", + "Source": "Bioconductor", + "Type": "Package", + "Title": "Generate QC Reports For Alevin Output", + "Date": "2025-07-17", + "Authors@R": "c(person(\"Charlotte\", \"Soneson\", role = c(\"aut\", \"cre\"), email = \"charlottesoneson@gmail.com\", comment = c(ORCID = \"0000-0003-3833-2169\")), person(\"Avi\", \"Srivastava\", role = \"aut\"), person(\"Rob\", \"Patro\", role = \"aut\"), person(\"Dongze\", \"He\", role = \"aut\"))", + "Description": "Generate QC reports summarizing the output from an alevin, alevin-fry, or simpleaf run. Reports can be generated as html or pdf files, or as shiny applications.", + "Encoding": "UTF-8", + "SystemRequirements": "C++11", + "Depends": [ + "R (>= 4.0)" + ], + "Imports": [ + "rmarkdown (>= 2.5)", + "tools", + "methods", + "ggplot2 (>= 3.4.0)", + "GGally", + "dplyr", + "rjson", + "shiny", + "shinydashboard", + "DT", + "stats", + "utils", + "tximport (>= 1.17.4)", + "cowplot", + "rlang", + "Rcpp" + ], + "RoxygenNote": "7.3.2", + "Suggests": [ + "knitr", + "BiocStyle", + "testthat (>= 3.0.0)", + "BiocManager" + ], + "VignetteBuilder": "knitr", + "biocViews": "QualityControl, SingleCell", + "URL": "https://github.com/csoneson/alevinQC", + "BugReports": "https://github.com/csoneson/alevinQC/issues", + "License": "MIT + file LICENSE", + "Config/testthat/edition": "3", + "LinkingTo": [ + "Rcpp" + ], + "git_url": "https://git.bioconductor.org/packages/alevinQC", + "git_branch": "RELEASE_3_22", + "git_last_commit": "e9f801e", + "git_last_commit_date": "2025-10-29", + "Repository": "Bioconductor 3.22", + "NeedsCompilation": "yes", + "Author": "Charlotte Soneson [aut, cre] (ORCID: ), Avi Srivastava [aut], Rob Patro [aut], Dongze He [aut]", + "Maintainer": "Charlotte Soneson " + }, + "annotate": { + "Package": "annotate", + "Version": "1.88.0", + "Source": "Bioconductor", + "Title": "Annotation for microarrays", + "Author": "R. Gentleman", + "Authors@R": "c( person(\"Jeff\", \"Gentry\", role = \"aut\"), person(\"Kritika\", \"Verma\", role = \"ctb\", comment = \"Converted chromLOC vignette from Sweave to RMarkdown / HTML.\"), person(\"Manvi\", \"Yaduvanshi\", role = \"ctb\", comment = \"Converted useDataPkgs vignette from Sweave to RMarkdown / HTML.\"), person(\"Bioconductor Package Maintainer\", email = \"maintainer@bioconductor.org\", role = \"cre\"))", + "Description": "Using R enviroments for annotation.", + "Depends": [ + "R (>= 2.10)", + "AnnotationDbi (>= 1.27.5)", + "XML" + ], + "Imports": [ + "Biobase", + "DBI", + "xtable", + "graphics", + "utils", + "stats", + "methods", + "BiocGenerics (>= 0.13.8)", + "httr" + ], + "Suggests": [ + "hgu95av2.db", + "genefilter", + "Biostrings (>= 2.25.10)", + "IRanges", + "rae230a.db", + "rae230aprobe", + "tkWidgets", + "GO.db", + "org.Hs.eg.db", + "org.Mm.eg.db", + "humanCHRLOC", + "Rgraphviz", + "RUnit", + "BiocStyle", + "knitr" + ], + "VignetteBuilder": "knitr", + "License": "Artistic-2.0", + "LazyLoad": "yes", + "Collate": "AllGenerics.R ACCNUMStats.R Amat.R AnnMaps.R chromLocation.R compatipleVersions.R findNeighbors.R getData.R getPMInfo.R getSeq4ACC.R GOhelpers.R homoData.R html.R isValidKey.R LL2homology.R pmid2MIAME.R pubMedAbst.R query.R readGEOAnn.R serializeEnv.R blastSequences.R zzz.R test_annotate_package.R", + "biocViews": "Annotation, Pathways, GO", + "git_url": "https://git.bioconductor.org/packages/annotate", + "git_branch": "RELEASE_3_22", + "git_last_commit": "bc0d5a0", + "git_last_commit_date": "2025-10-29", + "Repository": "Bioconductor 3.22", + "NeedsCompilation": "no", + "Maintainer": "Bioconductor Package Maintainer " + }, + "ape": { + "Package": "ape", + "Version": "5.8-1", + "Source": "Repository", + "Date": "2024-12-10", + "Title": "Analyses of Phylogenetics and Evolution", + "Authors@R": "c(person(\"Emmanuel\", \"Paradis\", role = c(\"aut\", \"cre\", \"cph\"), email = \"Emmanuel.Paradis@ird.fr\", comment = c(ORCID = \"0000-0003-3092-2199\")), person(\"Simon\", \"Blomberg\", role = c(\"aut\", \"cph\"), comment = c(ORCID = \"0000-0003-1062-0839\")), person(\"Ben\", \"Bolker\", role = c(\"aut\", \"cph\"), comment = c(ORCID = \"0000-0002-2127-0443\")), person(\"Joseph\", \"Brown\", role = c(\"aut\", \"cph\"), comment = c(ORCID = \"0000-0002-3835-8062\")), person(\"Santiago\", \"Claramunt\", role = c(\"aut\", \"cph\"), comment = c(ORCID = \"0000-0002-8926-5974\")), person(\"Julien\", \"Claude\", role = c(\"aut\", \"cph\"), , comment = c(ORCID = \"0000-0002-9267-1228\")), person(\"Hoa Sien\", \"Cuong\", role = c(\"aut\", \"cph\")), person(\"Richard\", \"Desper\", role = c(\"aut\", \"cph\")), person(\"Gilles\", \"Didier\", role = c(\"aut\", \"cph\"), comment = c(ORCID = \"0000-0003-0596-9112\")), person(\"Benoit\", \"Durand\", role = c(\"aut\", \"cph\")), person(\"Julien\", \"Dutheil\", role = c(\"aut\", \"cph\"), comment = c(ORCID = \"0000-0001-7753-4121\")), person(\"RJ\", \"Ewing\", role = c(\"aut\", \"cph\")), person(\"Olivier\", \"Gascuel\", role = c(\"aut\", \"cph\")), person(\"Thomas\", \"Guillerme\", role = c(\"aut\", \"cph\"), comment = c(ORCID = \"0000-0003-4325-1275\")), person(\"Christoph\", \"Heibl\", role = c(\"aut\", \"cph\"), comment = c(ORCID = \"0000-0002-7655-3299\")), person(\"Anthony\", \"Ives\", role = c(\"aut\", \"cph\"), comment = c(ORCID = \"0000-0001-9375-9523\")), person(\"Bradley\", \"Jones\", role = c(\"aut\", \"cph\"), comment = c(ORCID = \"0000-0003-4498-1069\")), person(\"Franz\", \"Krah\", role = c(\"aut\", \"cph\"), comment = c(ORCID = \"0000-0001-7866-7508\")), person(\"Daniel\", \"Lawson\", role = c(\"aut\", \"cph\"), comment = c(ORCID = \"0000-0002-5311-6213\")), person(\"Vincent\", \"Lefort\", role = c(\"aut\", \"cph\")), person(\"Pierre\", \"Legendre\", role = c(\"aut\", \"cph\"), comment = c(ORCID = \"0000-0002-3838-3305\")), person(\"Jim\", \"Lemon\", role = c(\"aut\", \"cph\")), person(\"Guillaume\", \"Louvel\", role = c(\"aut\", \"cph\"), comment = c(ORCID = \"0000-0002-7745-0785\")), person(\"Federico\", \"Marotta\", role = c(\"aut\", \"cph\")), person(\"Eric\", \"Marcon\", role = c(\"aut\", \"cph\"), comment = c(ORCID = \"0000-0002-5249-321X\")), person(\"Rosemary\", \"McCloskey\", role = c(\"aut\", \"cph\"), comment = c(ORCID = \"0000-0002-9772-8553\")), person(\"Johan\", \"Nylander\", role = c(\"aut\", \"cph\")), person(\"Rainer\", \"Opgen-Rhein\", role = c(\"aut\", \"cph\")), person(\"Andrei-Alin\", \"Popescu\", role = c(\"aut\", \"cph\")), person(\"Manuela\", \"Royer-Carenzi\", role = c(\"aut\", \"cph\")), person(\"Klaus\", \"Schliep\", role = c(\"aut\", \"cph\"), comment = c(ORCID = \"0000-0003-2941-0161\")), person(\"Korbinian\", \"Strimmer\", role = c(\"aut\", \"cph\"), comment = c(ORCID = \"0000-0001-7917-2056\")), person(\"Damien\", \"de Vienne\", role = c(\"aut\", \"cph\"), comment = c(ORCID = \"0000-0001-9532-5251\")))", + "Depends": [ + "R (>= 3.2.0)" + ], + "Suggests": [ + "gee", + "expm", + "igraph", + "phangorn", + "xml2" + ], + "Imports": [ + "nlme", + "lattice", + "graphics", + "methods", + "stats", + "utils", + "parallel", + "Rcpp (>= 0.12.0)", + "digest" + ], + "LinkingTo": [ + "Rcpp" + ], + "ZipData": "no", + "Description": "Functions for reading, writing, plotting, and manipulating phylogenetic trees, analyses of comparative data in a phylogenetic framework, ancestral character analyses, analyses of diversification and macroevolution, computing distances from DNA sequences, reading and writing nucleotide sequences as well as importing from BioConductor, and several tools such as Mantel's test, generalized skyline plots, graphical exploration of phylogenetic data (alex, trex, kronoviz), estimation of absolute evolutionary rates and clock-like trees using mean path lengths and penalized likelihood, dating trees with non-contemporaneous sequences, translating DNA into AA sequences, and assessing sequence alignments. Phylogeny estimation can be done with the NJ, BIONJ, ME, MVR, SDM, and triangle methods, and several methods handling incomplete distance matrices (NJ*, BIONJ*, MVR*, and the corresponding triangle method). Some functions call external applications (PhyML, Clustal, T-Coffee, Muscle) whose results are returned into R.", + "License": "GPL-2 | GPL-3", + "URL": "https://github.com/emmanuelparadis/ape", + "BugReports": "https://github.com/emmanuelparadis/ape/issues", + "Encoding": "UTF-8", + "NeedsCompilation": "yes", + "Author": "Emmanuel Paradis [aut, cre, cph] (), Simon Blomberg [aut, cph] (), Ben Bolker [aut, cph] (), Joseph Brown [aut, cph] (), Santiago Claramunt [aut, cph] (), Julien Claude [aut, cph] (), Hoa Sien Cuong [aut, cph], Richard Desper [aut, cph], Gilles Didier [aut, cph] (), Benoit Durand [aut, cph], Julien Dutheil [aut, cph] (), RJ Ewing [aut, cph], Olivier Gascuel [aut, cph], Thomas Guillerme [aut, cph] (), Christoph Heibl [aut, cph] (), Anthony Ives [aut, cph] (), Bradley Jones [aut, cph] (), Franz Krah [aut, cph] (), Daniel Lawson [aut, cph] (), Vincent Lefort [aut, cph], Pierre Legendre [aut, cph] (), Jim Lemon [aut, cph], Guillaume Louvel [aut, cph] (), Federico Marotta [aut, cph], Eric Marcon [aut, cph] (), Rosemary McCloskey [aut, cph] (), Johan Nylander [aut, cph], Rainer Opgen-Rhein [aut, cph], Andrei-Alin Popescu [aut, cph], Manuela Royer-Carenzi [aut, cph], Klaus Schliep [aut, cph] (), Korbinian Strimmer [aut, cph] (), Damien de Vienne [aut, cph] ()", + "Maintainer": "Emmanuel Paradis ", + "Repository": "RSPM" + }, + "apeglm": { + "Package": "apeglm", + "Version": "1.32.0", + "Source": "Bioconductor", + "Title": "Approximate posterior estimation for GLM coefficients", + "Authors@R": "c( person(\"Anqi\", \"Zhu\", email = \"anqizhu@live.unc.edu\", role = c(\"aut\",\"cre\")), person(\"Joshua\", \"Zitovsky\", role = \"ctb\"), person(\"Joseph\", \"Ibrahim\", role = \"aut\"), person(\"Michael\", \"Love\", role = \"aut\"))", + "Maintainer": "Anqi Zhu ", + "Description": "apeglm provides Bayesian shrinkage estimators for effect sizes for a variety of GLM models, using approximation of the posterior for individual coefficients.", + "VignetteBuilder": "knitr, rmarkdown", + "Imports": [ + "emdbook", + "SummarizedExperiment", + "GenomicRanges", + "methods", + "stats", + "utils", + "Rcpp" + ], + "Suggests": [ + "DESeq2", + "airway", + "knitr", + "rmarkdown", + "testthat" + ], + "LinkingTo": [ + "Rcpp", + "RcppEigen", + "RcppNumerical" + ], + "License": "GPL-2", + "Encoding": "UTF-8", + "biocViews": "ImmunoOncology, Sequencing, RNASeq, DifferentialExpression, GeneExpression, Bayesian", + "RoxygenNote": "7.1.1", + "git_url": "https://git.bioconductor.org/packages/apeglm", + "git_branch": "RELEASE_3_22", + "git_last_commit": "8940580", + "git_last_commit_date": "2025-10-29", + "Repository": "Bioconductor 3.22", + "NeedsCompilation": "yes", + "Author": "Anqi Zhu [aut, cre], Joshua Zitovsky [ctb], Joseph Ibrahim [aut], Michael Love [aut]" + }, + "aplot": { + "Package": "aplot", + "Version": "0.2.9", + "Source": "Repository", + "Title": "Decorate a 'ggplot' with Associated Information", + "Authors@R": "c( person(given = \"Guangchuang\", family = \"Yu\", email = \"guangchuangyu@gmail.com\", role = c(\"aut\", \"cre\"), comment = c(ORCID = \"0000-0002-6485-8781\")), person(\"Shuangbin\", \"Xu\", email = \"xshuangbin@163.com\", role = \"ctb\", comment = c(ORCID=\"0000-0003-3513-5362\")), person(given = \"Thomas\", family = \"Hackl\", email = \"thackl@mit.edu\", role = \"ctb\") )", + "Description": "For many times, we are not just aligning plots as what 'cowplot' and 'patchwork' did. Users would like to align associated information that requires axes to be exactly matched in subplots, e.g. hierarchical clustering with a heatmap. Inspired by the 'Method 2' in 'ggtree' (G Yu (2018) ), 'aplot' provides utilities to aligns associated subplots to a main plot at different sides (left, right, top and bottom) with axes exactly matched.", + "Depends": [ + "R (>= 4.1.0)" + ], + "Imports": [ + "ggfun (>= 0.1.3)", + "ggplot2", + "ggplotify", + "patchwork", + "magrittr", + "methods", + "utils", + "yulab.utils (>= 0.1.9)", + "pillar" + ], + "Suggests": [ + "ggtree" + ], + "URL": "https://github.com/YuLab-SMU/aplot, https://yulab-smu.top/aplot/", + "License": "Artistic-2.0", + "Encoding": "UTF-8", + "RoxygenNote": "7.3.2", + "NeedsCompilation": "no", + "Author": "Guangchuang Yu [aut, cre] (ORCID: ), Shuangbin Xu [ctb] (ORCID: ), Thomas Hackl [ctb]", + "Maintainer": "Guangchuang Yu ", + "Repository": "CRAN" + }, + "ashr": { + "Package": "ashr", + "Version": "2.2-63", + "Source": "Repository", + "Encoding": "UTF-8", + "Type": "Package", + "Maintainer": "Peter Carbonetto ", + "Authors@R": "c(person(\"Matthew\",\"Stephens\",role=\"aut\", email=\"mstephens@uchicago.edu\"), person(\"Peter\",\"Carbonetto\",role=c(\"aut\",\"cre\"), email=\"pcarbo@uchicago.edu\"), person(\"Chaoxing\",\"Dai\",role=\"ctb\"), person(\"David\",\"Gerard\",role=\"aut\"), person(\"Mengyin\",\"Lu\",role=\"aut\"), person(\"Lei\",\"Sun\",role=\"aut\"), person(\"Jason\",\"Willwerscheid\",role=\"aut\"), person(\"Nan\",\"Xiao\",role=\"aut\"), person(\"Mazon\",\"Zeng\",role=\"ctb\"))", + "Date": "2023-08-21", + "Title": "Methods for Adaptive Shrinkage, using Empirical Bayes", + "Description": "The R package 'ashr' implements an Empirical Bayes approach for large-scale hypothesis testing and false discovery rate (FDR) estimation based on the methods proposed in M. Stephens, 2016, \"False discovery rates: a new deal\", . These methods can be applied whenever two sets of summary statistics---estimated effects and standard errors---are available, just as 'qvalue' can be applied to previously computed p-values. Two main interfaces are provided: ash(), which is more user-friendly; and ash.workhorse(), which has more options and is geared toward advanced users. The ash() and ash.workhorse() also provides a flexible modeling interface that can accommodate a variety of likelihoods (e.g., normal, Poisson) and mixture priors (e.g., uniform, normal).", + "Depends": [ + "R (>= 3.1.0)" + ], + "Imports": [ + "Matrix", + "stats", + "graphics", + "Rcpp (>= 0.10.5)", + "truncnorm", + "mixsqp", + "SQUAREM", + "etrunct", + "invgamma" + ], + "Suggests": [ + "testthat", + "knitr", + "rmarkdown", + "ggplot2", + "REBayes" + ], + "LinkingTo": [ + "Rcpp" + ], + "License": "GPL (>= 3)", + "NeedsCompilation": "yes", + "URL": "https://github.com/stephens999/ashr", + "BugReports": "https://github.com/stephens999/ashr/issues", + "VignetteBuilder": "knitr", + "RoxygenNote": "7.1.2", + "Author": "Matthew Stephens [aut], Peter Carbonetto [aut, cre], Chaoxing Dai [ctb], David Gerard [aut], Mengyin Lu [aut], Lei Sun [aut], Jason Willwerscheid [aut], Nan Xiao [aut], Mazon Zeng [ctb]", + "Repository": "CRAN" + }, + "askpass": { + "Package": "askpass", + "Version": "1.2.1", + "Source": "Repository", + "Type": "Package", + "Title": "Password Entry Utilities for R, Git, and SSH", + "Authors@R": "person(\"Jeroen\", \"Ooms\", role = c(\"aut\", \"cre\"), email = \"jeroenooms@gmail.com\", comment = c(ORCID = \"0000-0002-4035-0289\"))", + "Description": "Cross-platform utilities for prompting the user for credentials or a passphrase, for example to authenticate with a server or read a protected key. Includes native programs for MacOS and Windows, hence no 'tcltk' is required. Password entry can be invoked in two different ways: directly from R via the askpass() function, or indirectly as password-entry back-end for 'ssh-agent' or 'git-credential' via the SSH_ASKPASS and GIT_ASKPASS environment variables. Thereby the user can be prompted for credentials or a passphrase if needed when R calls out to git or ssh.", + "License": "MIT + file LICENSE", + "URL": "https://r-lib.r-universe.dev/askpass", + "BugReports": "https://github.com/r-lib/askpass/issues", + "Encoding": "UTF-8", + "Imports": [ + "sys (>= 2.1)" + ], + "RoxygenNote": "7.2.3", + "Suggests": [ + "testthat" + ], + "Language": "en-US", + "NeedsCompilation": "yes", + "Author": "Jeroen Ooms [aut, cre] ()", + "Maintainer": "Jeroen Ooms ", + "Repository": "https://packagemanager.posit.co/cran/latest" + }, + "assertthat": { + "Package": "assertthat", + "Version": "0.2.1", + "Source": "Repository", + "Title": "Easy Pre and Post Assertions", + "Authors@R": "person(\"Hadley\", \"Wickham\", , \"hadley@rstudio.com\", c(\"aut\", \"cre\"))", + "Description": "An extension to stopifnot() that makes it easy to declare the pre and post conditions that you code should satisfy, while also producing friendly error messages so that your users know what's gone wrong.", + "License": "GPL-3", + "Imports": [ + "tools" + ], + "Suggests": [ + "testthat", + "covr" + ], + "RoxygenNote": "6.0.1", + "Collate": "'assert-that.r' 'on-failure.r' 'assertions-file.r' 'assertions-scalar.R' 'assertions.r' 'base.r' 'base-comparison.r' 'base-is.r' 'base-logical.r' 'base-misc.r' 'utils.r' 'validate-that.R'", + "NeedsCompilation": "no", + "Author": "Hadley Wickham [aut, cre]", + "Maintainer": "Hadley Wickham ", + "Repository": "https://packagemanager.posit.co/cran/latest", + "Encoding": "UTF-8" + }, + "assorthead": { + "Package": "assorthead", + "Version": "1.4.0", + "Source": "Bioconductor", + "Date": "2025-10-27", + "Title": "Assorted Header-Only C++ Libraries", + "Authors@R": "person(\"Aaron\", \"Lun\", role=c(\"cre\", \"aut\"), email=\"infinite.monkeys.with.keyboards@gmail.com\")", + "Description": "Vendors an assortment of useful header-only C++ libraries. Bioconductor packages can use these libraries in their own C++ code by LinkingTo this package without introducing any additional dependencies. The use of a central repository avoids duplicate vendoring of libraries across multiple R packages, and enables better coordination of version updates across cohorts of interdependent C++ libraries.", + "License": "MIT + file LICENSE", + "Suggests": [ + "knitr", + "rmarkdown", + "BiocStyle" + ], + "VignetteBuilder": "knitr", + "URL": "https://github.com/LTLA/assorthead", + "BugReports": "https://github.com/LTLA/assorthead/issues", + "Encoding": "UTF-8", + "biocViews": "SingleCell, QualityControl, Normalization, DataRepresentation, DataImport, DifferentialExpression, Alignment", + "git_url": "https://git.bioconductor.org/packages/assorthead", + "git_branch": "RELEASE_3_22", + "git_last_commit": "9255f2f", + "git_last_commit_date": "2025-10-29", + "Repository": "Bioconductor 3.22", + "NeedsCompilation": "no", + "Author": "Aaron Lun [cre, aut]", + "Maintainer": "Aaron Lun " + }, + "babelgene": { + "Package": "babelgene", + "Version": "22.9", + "Source": "Repository", + "Type": "Package", + "Title": "Gene Orthologs for Model Organisms in a Tidy Data Format", + "Authors@R": "person(\"Igor\", \"Dolgalev\", , \"igor.dolgalev@nyumc.org\", role = c(\"aut\", \"cre\"), comment = c(ORCID = \"0000-0003-4451-126X\"))", + "Description": "Genomic analysis of model organisms frequently requires the use of databases based on human data or making comparisons to patient-derived resources. This requires harmonization of gene names into the same gene space. The 'babelgene' R package converts between human and non-human gene orthologs/homologs. The package integrates orthology assertion predictions sourced from multiple databases as compiled by the HGNC Comparison of Orthology Predictions (HCOP) (Wright et al. 2005 , Eyre et al. 2007 , Seal et al. 2011 ).", + "License": "MIT + file LICENSE", + "URL": "https://igordot.github.io/babelgene/", + "BugReports": "https://github.com/igordot/babelgene/issues", + "Depends": [ + "R (>= 3.4)" + ], + "Imports": [ + "dplyr", + "methods", + "rlang" + ], + "Suggests": [ + "covr", + "knitr", + "rmarkdown", + "testthat (>= 3.0.0)" + ], + "VignetteBuilder": "knitr", + "Config/testthat/edition": "3", + "Encoding": "UTF-8", + "RoxygenNote": "7.2.1", + "NeedsCompilation": "no", + "Author": "Igor Dolgalev [aut, cre] ()", + "Maintainer": "Igor Dolgalev ", + "Repository": "https://packagemanager.posit.co/cran/latest" + }, + "backports": { + "Package": "backports", + "Version": "1.5.0", + "Source": "Repository", + "Type": "Package", + "Title": "Reimplementations of Functions Introduced Since R-3.0.0", + "Authors@R": "c( person(\"Michel\", \"Lang\", NULL, \"michellang@gmail.com\", role = c(\"cre\", \"aut\"), comment = c(ORCID = \"0000-0001-9754-0393\")), person(\"Duncan\", \"Murdoch\", NULL, \"murdoch.duncan@gmail.com\", role = c(\"aut\")), person(\"R Core Team\", role = \"aut\"))", + "Maintainer": "Michel Lang ", + "Description": "Functions introduced or changed since R v3.0.0 are re-implemented in this package. The backports are conditionally exported in order to let R resolve the function name to either the implemented backport, or the respective base version, if available. Package developers can make use of new functions or arguments by selectively importing specific backports to support older installations.", + "URL": "https://github.com/r-lib/backports", + "BugReports": "https://github.com/r-lib/backports/issues", + "License": "GPL-2 | GPL-3", + "NeedsCompilation": "yes", + "ByteCompile": "yes", + "Depends": [ + "R (>= 3.0.0)" + ], + "Encoding": "UTF-8", + "RoxygenNote": "7.3.1", + "Author": "Michel Lang [cre, aut] (), Duncan Murdoch [aut], R Core Team [aut]", + "Repository": "RSPM" + }, + "base64enc": { + "Package": "base64enc", + "Version": "0.1-3", + "Source": "Repository", + "Title": "Tools for base64 encoding", + "Author": "Simon Urbanek ", + "Maintainer": "Simon Urbanek ", + "Depends": [ + "R (>= 2.9.0)" + ], + "Enhances": [ + "png" + ], + "Description": "This package provides tools for handling base64 encoding. It is more flexible than the orphaned base64 package.", + "License": "GPL-2 | GPL-3", + "URL": "http://www.rforge.net/base64enc", + "NeedsCompilation": "yes", + "Repository": "https://packagemanager.posit.co/cran/latest", + "Encoding": "UTF-8" + }, + "batchelor": { + "Package": "batchelor", + "Version": "1.26.0", + "Source": "Bioconductor", + "Date": "2025-03-13", + "Title": "Single-Cell Batch Correction Methods", + "Authors@R": "c(person(\"Aaron\", \"Lun\", role = c(\"aut\", \"cre\"), email = \"infinite.monkeys.with.keyboards@gmail.com\"), person(\"Laleh\", \"Haghverdi\", role=\"ctb\"))", + "Depends": [ + "SingleCellExperiment" + ], + "Imports": [ + "SummarizedExperiment", + "S4Vectors", + "BiocGenerics", + "Rcpp", + "stats", + "methods", + "utils", + "igraph", + "BiocNeighbors", + "BiocSingular", + "Matrix", + "SparseArray", + "DelayedArray (>= 0.31.5)", + "DelayedMatrixStats", + "BiocParallel", + "scuttle", + "ResidualMatrix", + "ScaledMatrix", + "beachmat" + ], + "Suggests": [ + "testthat", + "BiocStyle", + "knitr", + "rmarkdown", + "scran", + "scater", + "bluster", + "scRNAseq" + ], + "biocViews": "Sequencing, RNASeq, Software, GeneExpression, Transcriptomics, SingleCell, BatchEffect, Normalization", + "LinkingTo": [ + "Rcpp" + ], + "Description": "Implements a variety of methods for batch correction of single-cell (RNA sequencing) data. This includes methods based on detecting mutually nearest neighbors, as well as several efficient variants of linear regression of the log-expression values. Functions are also provided to perform global rescaling to remove differences in depth between batches, and to perform a principal components analysis that is robust to differences in the numbers of cells across batches.", + "License": "GPL-3", + "NeedsCompilation": "yes", + "VignetteBuilder": "knitr", + "SystemRequirements": "C++11", + "RoxygenNote": "7.3.2", + "git_url": "https://git.bioconductor.org/packages/batchelor", + "git_branch": "RELEASE_3_22", + "git_last_commit": "8a9df0d", + "git_last_commit_date": "2025-10-29", + "Repository": "Bioconductor 3.22", + "Author": "Aaron Lun [aut, cre], Laleh Haghverdi [ctb]", + "Maintainer": "Aaron Lun " + }, + "bbmle": { + "Package": "bbmle", + "Version": "1.0.25.1", + "Source": "Repository", + "Title": "Tools for General Maximum Likelihood Estimation", + "Description": "Methods and functions for fitting maximum likelihood models in R. This package modifies and extends the 'mle' classes in the 'stats4' package.", + "Authors@R": "c(person(\"Ben\",\"Bolker\",email=\"bolker@mcmaster.ca\",role=c(\"aut\",\"cre\"), comment=c(ORCID=\"0000-0002-2127-0443\")), person(\"R Development Core Team\",role=c(\"aut\")), person(\"Iago Giné-Vázquez\", role=c(\"ctb\")) )", + "Depends": [ + "R (>= 3.0.0)", + "stats4" + ], + "Imports": [ + "stats", + "numDeriv", + "lattice", + "MASS", + "methods", + "bdsmatrix", + "Matrix", + "mvtnorm" + ], + "Suggests": [ + "emdbook", + "rms", + "ggplot2", + "RUnit", + "MuMIn", + "AICcmodavg", + "Hmisc", + "optimx (>= 2013.8.6)", + "knitr", + "testthat" + ], + "VignetteBuilder": "knitr", + "BuildVignettes": "yes", + "License": "GPL", + "URL": "https://github.com/bbolker/bbmle", + "Collate": "'mle2-class.R' 'mle2-methods.R' 'mle.R' 'confint.R' 'predict.R' 'profile.R' 'update.R' 'dists.R' 'IC.R' 'slice.R' 'impsamp.R' 'TMB.R'", + "RoxygenNote": "7.1.0", + "Encoding": "UTF-8", + "NeedsCompilation": "no", + "Author": "Ben Bolker [aut, cre] (), R Development Core Team [aut], Iago Giné-Vázquez [ctb]", + "Maintainer": "Ben Bolker ", + "Repository": "CRAN" + }, + "bdsmatrix": { + "Package": "bdsmatrix", + "Version": "1.3-7", + "Source": "Repository", + "Title": "Routines for Block Diagonal Symmetric Matrices", + "Maintainer": "Terry Therneau ", + "Date": "2024-03-01", + "Depends": [ + "methods", + "R (>= 2.0.0)" + ], + "LazyLoad": "Yes", + "Author": "Terry Therneau", + "Description": "This is a special case of sparse matrices, used by coxme.", + "License": "LGPL-2", + "Collate": "bdsmatrix.R gchol.R gchol.bdsmatrix.R as.matrix.bdsmatrix.R bdsBlock.R bdsI.R bdsmatrix.ibd.R bdsmatrix.reconcile.R diag.bdsmatrix.R listbdsmatrix.R multiply.bdsmatrix.R solve.bdsmatrix.R solve.gchol.R solve.gchol.bdsmatrix.R backsolve.R", + "NeedsCompilation": "yes", + "Repository": "CRAN" + }, + "beachmat": { + "Package": "beachmat", + "Version": "2.26.0", + "Source": "Bioconductor", + "Date": "2025-08-19", + "Title": "Compiling Bioconductor to Handle Each Matrix Type", + "Authors@R": "c(person(\"Aaron\", \"Lun\", role = c(\"aut\", \"cre\"), email = \"infinite.monkeys.with.keyboards@gmail.com\"), person(\"Hervé\", \"Pagès\", role=\"aut\"), person(\"Mike\", \"Smith\", role=\"aut\"))", + "Imports": [ + "methods", + "DelayedArray (>= 0.27.2)", + "SparseArray", + "BiocGenerics", + "Matrix", + "Rcpp" + ], + "Suggests": [ + "testthat", + "BiocStyle", + "knitr", + "rmarkdown", + "rcmdcheck", + "BiocParallel", + "HDF5Array", + "beachmat.hdf5" + ], + "LinkingTo": [ + "Rcpp", + "assorthead (>= 1.3.3)" + ], + "biocViews": "DataRepresentation, DataImport, Infrastructure", + "Description": "Provides a consistent C++ class interface for reading from a variety of commonly used matrix types. Ordinary matrices and several sparse/dense Matrix classes are directly supported, along with a subset of the delayed operations implemented in the DelayedArray package. All other matrix-like objects are supported by calling back into R.", + "License": "GPL-3", + "NeedsCompilation": "yes", + "VignetteBuilder": "knitr", + "SystemRequirements": "C++17", + "URL": "https://github.com/tatami-inc/beachmat", + "BugReports": "https://github.com/tatami-inc/beachmat/issues", + "RoxygenNote": "7.3.2", + "Encoding": "UTF-8", + "git_url": "https://git.bioconductor.org/packages/beachmat", + "git_branch": "RELEASE_3_22", + "git_last_commit": "016c55e", + "git_last_commit_date": "2025-10-29", + "Repository": "Bioconductor 3.22", + "Author": "Aaron Lun [aut, cre], Hervé Pagès [aut], Mike Smith [aut]", + "Maintainer": "Aaron Lun " + }, + "beeswarm": { + "Package": "beeswarm", + "Version": "0.4.0", + "Source": "Repository", + "Title": "The Bee Swarm Plot, an Alternative to Stripchart", + "Description": "The bee swarm plot is a one-dimensional scatter plot like \"stripchart\", but with closely-packed, non-overlapping points.", + "Date": "2021-05-07", + "Authors@R": "c( person(\"Aron\", \"Eklund\", , \"aroneklund@gmail.com\", role = c(\"aut\", \"cre\"), comment = c(ORCID = \"0000-0003-0861-1001\")), person(\"James\", \"Trimble\", role = \"aut\", comment = c(ORCID = \"0000-0001-7282-8745\")) )", + "Imports": [ + "stats", + "graphics", + "grDevices", + "utils" + ], + "NeedsCompilation": "yes", + "License": "Artistic-2.0", + "URL": "https://github.com/aroneklund/beeswarm", + "BugReports": "https://github.com/aroneklund/beeswarm/issues", + "Author": "Aron Eklund [aut, cre] (), James Trimble [aut] ()", + "Maintainer": "Aron Eklund ", + "Repository": "https://packagemanager.posit.co/cran/latest", + "Encoding": "UTF-8" + }, + "biomaRt": { + "Package": "biomaRt", + "Version": "2.66.0", + "Source": "Bioconductor", + "Title": "Interface to BioMart databases (i.e. Ensembl)", + "Authors@R": "c( person(\"Steffen\", \"Durinck\", , \"biomartdev@gmail.com\", role = \"aut\"), person(\"Wolfgang\", \"Huber\", role = \"aut\"), person(\"Sean\", \"Davis\", , \"sdavis2@mail.nih.gov\", role = \"ctb\"), person(\"Francois\", \"Pepin\", role = \"ctb\"), person(\"Vince S\", \"Buffalo\", role = \"ctb\"), person(\"Mike\", \"Smith\", , \"grimbough@gmail.com\", role = \"ctb\", comment = c(ORCID = \"0000-0002-7800-3848\")), person(\"Hugo\", \"Gruson\", , \"hugo.gruson@embl.de\", role = c(\"ctb\", \"cre\"), comment = c(ORCID = \"0000-0002-4094-1476\")), person(\"German Network for Bioinformatics Infrastructure - de.NBI\", role = \"fnd\") )", + "Description": "In recent years a wealth of biological data has become available in public data repositories. Easy access to these valuable data resources and firm integration with data analysis is needed for comprehensive bioinformatics data analysis. biomaRt provides an interface to a growing collection of databases implementing the BioMart software suite (). The package enables retrieval of large amounts of data in a uniform way without the need to know the underlying database schemas or write complex SQL queries. The most prominent examples of BioMart databases are maintained by Ensembl, which provides biomaRt users direct access to a diverse set of data and enables a wide range of powerful online queries from gene annotation to database mining.", + "License": "Artistic-2.0", + "URL": "https://github.com/Huber-group-EMBL/biomaRt, https://huber-group-embl.github.io/biomaRt/", + "BugReports": "https://github.com/Huber-group-EMBL/biomaRt/issues", + "Depends": [ + "methods", + "R (>= 4.5.0)" + ], + "Imports": [ + "AnnotationDbi", + "BiocFileCache", + "curl", + "httr2", + "progress", + "stringr", + "utils", + "xml2" + ], + "Suggests": [ + "BiocStyle", + "httptest2", + "knitr", + "mockery", + "rmarkdown", + "testthat (>= 3.0.0)" + ], + "VignetteBuilder": "knitr", + "biocViews": "Annotation", + "Config/Needs/website": "xfun", + "Config/testthat/edition": "3", + "Encoding": "UTF-8", + "LazyLoad": "yes", + "NeedsCompilation": "no", + "Roxygen": "list(markdown = TRUE)", + "RoxygenNote": "7.3.3", + "Collate": "'biomaRt-package.R' 'biomaRtClasses.R' 'methods-Mart.R' 'biomaRt.R' 'caching.R' 'ensembl.R' 'ensembl_wrappers.R' 'ensembl_ssl_settings.R' 'utilityFunctions.R' 'non-biomart-utils.R' 'exportFASTA.R' 'NP2009code.R'", + "git_url": "https://git.bioconductor.org/packages/biomaRt", + "git_branch": "RELEASE_3_22", + "git_last_commit": "6757ed1", + "git_last_commit_date": "2025-10-29", + "Repository": "Bioconductor 3.22", + "Author": "Steffen Durinck [aut], Wolfgang Huber [aut], Sean Davis [ctb], Francois Pepin [ctb], Vince S Buffalo [ctb], Mike Smith [ctb] (ORCID: ), Hugo Gruson [ctb, cre] (ORCID: ), German Network for Bioinformatics Infrastructure - de.NBI [fnd]", + "Maintainer": "Hugo Gruson " + }, + "bit": { + "Package": "bit", + "Version": "4.6.0", + "Source": "Repository", + "Title": "Classes and Methods for Fast Memory-Efficient Boolean Selections", + "Authors@R": "c( person(\"Michael\", \"Chirico\", email = \"MichaelChirico4@gmail.com\", role = c(\"aut\", \"cre\")), person(\"Jens\", \"Oehlschlägel\", role = \"aut\"), person(\"Brian\", \"Ripley\", role = \"ctb\") )", + "Depends": [ + "R (>= 3.4.0)" + ], + "Suggests": [ + "testthat (>= 3.0.0)", + "roxygen2", + "knitr", + "markdown", + "rmarkdown", + "microbenchmark", + "bit64 (>= 4.0.0)", + "ff (>= 4.0.0)" + ], + "Description": "Provided are classes for boolean and skewed boolean vectors, fast boolean methods, fast unique and non-unique integer sorting, fast set operations on sorted and unsorted sets of integers, and foundations for ff (range index, compression, chunked processing).", + "License": "GPL-2 | GPL-3", + "LazyLoad": "yes", + "ByteCompile": "yes", + "Encoding": "UTF-8", + "URL": "https://github.com/r-lib/bit", + "VignetteBuilder": "knitr, rmarkdown", + "RoxygenNote": "7.3.2", + "Config/testthat/edition": "3", + "NeedsCompilation": "yes", + "Author": "Michael Chirico [aut, cre], Jens Oehlschlägel [aut], Brian Ripley [ctb]", + "Maintainer": "Michael Chirico ", + "Repository": "https://packagemanager.posit.co/cran/latest" + }, + "bit64": { + "Package": "bit64", + "Version": "4.6.0-1", + "Source": "Repository", + "Title": "A S3 Class for Vectors of 64bit Integers", + "Authors@R": "c( person(\"Michael\", \"Chirico\", email = \"michaelchirico4@gmail.com\", role = c(\"aut\", \"cre\")), person(\"Jens\", \"Oehlschlägel\", role = \"aut\"), person(\"Leonardo\", \"Silvestri\", role = \"ctb\"), person(\"Ofek\", \"Shilon\", role = \"ctb\") )", + "Depends": [ + "R (>= 3.4.0)", + "bit (>= 4.0.0)" + ], + "Description": "Package 'bit64' provides serializable S3 atomic 64bit (signed) integers. These are useful for handling database keys and exact counting in +-2^63. WARNING: do not use them as replacement for 32bit integers, integer64 are not supported for subscripting by R-core and they have different semantics when combined with double, e.g. integer64 + double => integer64. Class integer64 can be used in vectors, matrices, arrays and data.frames. Methods are available for coercion from and to logicals, integers, doubles, characters and factors as well as many elementwise and summary functions. Many fast algorithmic operations such as 'match' and 'order' support inter- active data exploration and manipulation and optionally leverage caching.", + "License": "GPL-2 | GPL-3", + "LazyLoad": "yes", + "ByteCompile": "yes", + "URL": "https://github.com/r-lib/bit64", + "Encoding": "UTF-8", + "Imports": [ + "graphics", + "methods", + "stats", + "utils" + ], + "Suggests": [ + "testthat (>= 3.0.3)", + "withr" + ], + "Config/testthat/edition": "3", + "Config/needs/development": "testthat", + "RoxygenNote": "7.3.2", + "NeedsCompilation": "yes", + "Author": "Michael Chirico [aut, cre], Jens Oehlschlägel [aut], Leonardo Silvestri [ctb], Ofek Shilon [ctb]", + "Maintainer": "Michael Chirico ", + "Repository": "https://packagemanager.posit.co/cran/latest" + }, + "bitops": { + "Package": "bitops", + "Version": "1.0-9", + "Source": "Repository", + "Date": "2024-10-03", + "Authors@R": "c( person(\"Steve\", \"Dutky\", role = \"aut\", email = \"sdutky@terpalum.umd.edu\", comment = \"S original; then (after MM's port) revised and modified\"), person(\"Martin\", \"Maechler\", role = c(\"cre\", \"aut\"), email = \"maechler@stat.math.ethz.ch\", comment = c(\"Initial R port; tweaks\", ORCID = \"0000-0002-8685-9910\")))", + "Title": "Bitwise Operations", + "Description": "Functions for bitwise operations on integer vectors.", + "License": "GPL (>= 2)", + "URL": "https://github.com/mmaechler/R-bitops", + "BugReports": "https://github.com/mmaechler/R-bitops/issues", + "NeedsCompilation": "yes", + "Author": "Steve Dutky [aut] (S original; then (after MM's port) revised and modified), Martin Maechler [cre, aut] (Initial R port; tweaks, )", + "Maintainer": "Martin Maechler ", + "Repository": "https://packagemanager.posit.co/cran/latest", + "Encoding": "UTF-8" + }, + "blob": { + "Package": "blob", + "Version": "1.3.0", + "Source": "Repository", + "Title": "A Simple S3 Class for Representing Vectors of Binary Data ('BLOBS')", + "Authors@R": "c( person(\"Hadley\", \"Wickham\", role = \"aut\"), person(\"Kirill\", \"Müller\", , \"kirill@cynkra.com\", role = \"cre\"), person(\"RStudio\", role = c(\"cph\", \"fnd\")) )", + "Description": "R's raw vector is useful for storing a single binary object. What if you want to put a vector of them in a data frame? The 'blob' package provides the blob object, a list of raw vectors, suitable for use as a column in data frame.", + "License": "MIT + file LICENSE", + "URL": "https://blob.tidyverse.org, https://github.com/tidyverse/blob", + "BugReports": "https://github.com/tidyverse/blob/issues", + "Imports": [ + "methods", + "rlang", + "vctrs (>= 0.2.1)" + ], + "Suggests": [ + "covr", + "crayon", + "pillar (>= 1.2.1)", + "testthat (>= 3.0.0)" + ], + "Config/autostyle/scope": "line_breaks", + "Config/autostyle/strict": "false", + "Config/Needs/website": "tidyverse/tidytemplate", + "Config/testthat/edition": "3", + "Encoding": "UTF-8", + "RoxygenNote": "7.3.3.9000", + "NeedsCompilation": "no", + "Author": "Hadley Wickham [aut], Kirill Müller [cre], RStudio [cph, fnd]", + "Maintainer": "Kirill Müller ", + "Repository": "CRAN" + }, + "bluster": { + "Package": "bluster", + "Version": "1.20.0", + "Source": "Bioconductor", + "Date": "2025-10-22", + "Title": "Clustering Algorithms for Bioconductor", + "Description": "Wraps common clustering algorithms in an easily extended S4 framework. Backends are implemented for hierarchical, k-means and graph-based clustering. Several utilities are also provided to compare and evaluate clustering results.", + "Authors@R": "c( person(\"Aaron\", \"Lun\", role = c(\"aut\", \"cre\"), email = \"infinite.monkeys.with.keyboards@gmail.com\"), person(\"Stephanie\", \"Hicks\", role=\"ctb\"), person(\"Basil\", \"Courbayre\", role=\"ctb\"), person(\"Tuomas\", \"Borman\", role=\"ctb\"), person(\"Leo\", \"Lahti\", role=\"ctb\") )", + "Imports": [ + "stats", + "methods", + "utils", + "cluster", + "Matrix", + "Rcpp", + "igraph", + "S4Vectors", + "BiocParallel", + "BiocNeighbors" + ], + "Suggests": [ + "knitr", + "rmarkdown", + "testthat", + "BiocStyle", + "dynamicTreeCut", + "scRNAseq", + "scuttle", + "scater", + "scran", + "pheatmap", + "viridis", + "mbkmeans", + "kohonen", + "apcluster", + "DirichletMultinomial", + "vegan", + "fastcluster" + ], + "biocViews": "ImmunoOncology, Software, GeneExpression, Transcriptomics, SingleCell, Clustering", + "LinkingTo": [ + "Rcpp", + "assorthead" + ], + "Collate": "AllClasses.R AllGenerics.R AgnesParam.R approxSilhouette.R bluster-package.R DbscanParam.R DianaParam.R AffinityParam.R BlusterParam.R bootstrapStability.R ClaraParam.R clusterRMSD.R clusterSweep.R compareClusterings.R DmmParam.R FixedNumberParam.R HclustParam.R HierarchicalParam.R KmeansParam.R linkClusters.R makeSNNGraph.R MbkmeansParam.R mergeCommunities.R neighborPurity.R nestedClusters.R NNGraphParam.R pairwiseModularity.R pairwiseRand.R PamParam.R RcppExports.R SomParam.R TwoStepParam.R utils.R", + "License": "GPL-3", + "NeedsCompilation": "yes", + "VignetteBuilder": "knitr", + "SystemRequirements": "C++17", + "RoxygenNote": "7.3.3", + "Encoding": "UTF-8", + "git_url": "https://git.bioconductor.org/packages/bluster", + "git_branch": "RELEASE_3_22", + "git_last_commit": "b47a2df", + "git_last_commit_date": "2025-10-29", + "Repository": "Bioconductor 3.22", + "Author": "Aaron Lun [aut, cre], Stephanie Hicks [ctb], Basil Courbayre [ctb], Tuomas Borman [ctb], Leo Lahti [ctb]", + "Maintainer": "Aaron Lun " + }, + "broom": { + "Package": "broom", + "Version": "1.0.11", + "Source": "Repository", + "Type": "Package", + "Title": "Convert Statistical Objects into Tidy Tibbles", + "Authors@R": "c( person(\"David\", \"Robinson\", , \"admiral.david@gmail.com\", role = \"aut\"), person(\"Alex\", \"Hayes\", , \"alexpghayes@gmail.com\", role = \"aut\", comment = c(ORCID = \"0000-0002-4985-5160\")), person(\"Simon\", \"Couch\", , \"simon.couch@posit.co\", role = c(\"aut\"), comment = c(ORCID = \"0000-0001-5676-5107\")), person(\"Emil\", \"Hvitfeldt\", , \"emil.hvitfeldt@posit.co\", role = c(\"aut\", \"cre\"), comment = c(ORCID = \"0000-0002-0679-1945\")), person(\"Posit Software, PBC\", role = c(\"cph\", \"fnd\"), comment = c(ROR = \"03wc8by49\")), person(\"Indrajeet\", \"Patil\", , \"patilindrajeet.science@gmail.com\", role = \"ctb\", comment = c(ORCID = \"0000-0003-1995-6531\")), person(\"Derek\", \"Chiu\", , \"dchiu@bccrc.ca\", role = \"ctb\"), person(\"Matthieu\", \"Gomez\", , \"mattg@princeton.edu\", role = \"ctb\"), person(\"Boris\", \"Demeshev\", , \"boris.demeshev@gmail.com\", role = \"ctb\"), person(\"Dieter\", \"Menne\", , \"dieter.menne@menne-biomed.de\", role = \"ctb\"), person(\"Benjamin\", \"Nutter\", , \"nutter@battelle.org\", role = \"ctb\"), person(\"Luke\", \"Johnston\", , \"luke.johnston@mail.utoronto.ca\", role = \"ctb\"), person(\"Ben\", \"Bolker\", , \"bolker@mcmaster.ca\", role = \"ctb\"), person(\"Francois\", \"Briatte\", , \"f.briatte@gmail.com\", role = \"ctb\"), person(\"Jeffrey\", \"Arnold\", , \"jeffrey.arnold@gmail.com\", role = \"ctb\"), person(\"Jonah\", \"Gabry\", , \"jsg2201@columbia.edu\", role = \"ctb\"), person(\"Luciano\", \"Selzer\", , \"luciano.selzer@gmail.com\", role = \"ctb\"), person(\"Gavin\", \"Simpson\", , \"ucfagls@gmail.com\", role = \"ctb\"), person(\"Jens\", \"Preussner\", , \"jens.preussner@mpi-bn.mpg.de\", role = \"ctb\"), person(\"Jay\", \"Hesselberth\", , \"jay.hesselberth@gmail.com\", role = \"ctb\"), person(\"Hadley\", \"Wickham\", , \"hadley@posit.co\", role = \"ctb\"), person(\"Matthew\", \"Lincoln\", , \"matthew.d.lincoln@gmail.com\", role = \"ctb\"), person(\"Alessandro\", \"Gasparini\", , \"ag475@leicester.ac.uk\", role = \"ctb\"), person(\"Lukasz\", \"Komsta\", , \"lukasz.komsta@umlub.pl\", role = \"ctb\"), person(\"Frederick\", \"Novometsky\", role = \"ctb\"), person(\"Wilson\", \"Freitas\", role = \"ctb\"), person(\"Michelle\", \"Evans\", role = \"ctb\"), person(\"Jason Cory\", \"Brunson\", , \"cornelioid@gmail.com\", role = \"ctb\"), person(\"Simon\", \"Jackson\", , \"drsimonjackson@gmail.com\", role = \"ctb\"), person(\"Ben\", \"Whalley\", , \"ben.whalley@plymouth.ac.uk\", role = \"ctb\"), person(\"Karissa\", \"Whiting\", , \"karissa.whiting@gmail.com\", role = \"ctb\"), person(\"Yves\", \"Rosseel\", , \"yrosseel@gmail.com\", role = \"ctb\"), person(\"Michael\", \"Kuehn\", , \"mkuehn10@gmail.com\", role = \"ctb\"), person(\"Jorge\", \"Cimentada\", , \"cimentadaj@gmail.com\", role = \"ctb\"), person(\"Erle\", \"Holgersen\", , \"erle.holgersen@gmail.com\", role = \"ctb\"), person(\"Karl\", \"Dunkle Werner\", role = \"ctb\", comment = c(ORCID = \"0000-0003-0523-7309\")), person(\"Ethan\", \"Christensen\", , \"christensen.ej@gmail.com\", role = \"ctb\"), person(\"Steven\", \"Pav\", , \"shabbychef@gmail.com\", role = \"ctb\"), person(\"Paul\", \"PJ\", , \"pjpaul.stephens@gmail.com\", role = \"ctb\"), person(\"Ben\", \"Schneider\", , \"benjamin.julius.schneider@gmail.com\", role = \"ctb\"), person(\"Patrick\", \"Kennedy\", , \"pkqstr@protonmail.com\", role = \"ctb\"), person(\"Lily\", \"Medina\", , \"lilymiru@gmail.com\", role = \"ctb\"), person(\"Brian\", \"Fannin\", , \"captain@pirategrunt.com\", role = \"ctb\"), person(\"Jason\", \"Muhlenkamp\", , \"jason.muhlenkamp@gmail.com\", role = \"ctb\"), person(\"Matt\", \"Lehman\", role = \"ctb\"), person(\"Bill\", \"Denney\", , \"wdenney@humanpredictions.com\", role = \"ctb\", comment = c(ORCID = \"0000-0002-5759-428X\")), person(\"Nic\", \"Crane\", role = \"ctb\"), person(\"Andrew\", \"Bates\", role = \"ctb\"), person(\"Vincent\", \"Arel-Bundock\", , \"vincent.arel-bundock@umontreal.ca\", role = \"ctb\", comment = c(ORCID = \"0000-0003-2042-7063\")), person(\"Hideaki\", \"Hayashi\", role = \"ctb\"), person(\"Luis\", \"Tobalina\", role = \"ctb\"), person(\"Annie\", \"Wang\", , \"anniewang.uc@gmail.com\", role = \"ctb\"), person(\"Wei Yang\", \"Tham\", , \"weiyang.tham@gmail.com\", role = \"ctb\"), person(\"Clara\", \"Wang\", , \"clara.wang.94@gmail.com\", role = \"ctb\"), person(\"Abby\", \"Smith\", , \"als1@u.northwestern.edu\", role = \"ctb\", comment = c(ORCID = \"0000-0002-3207-0375\")), person(\"Jasper\", \"Cooper\", , \"jaspercooper@gmail.com\", role = \"ctb\", comment = c(ORCID = \"0000-0002-8639-3188\")), person(\"E Auden\", \"Krauska\", , \"krauskae@gmail.com\", role = \"ctb\", comment = c(ORCID = \"0000-0002-1466-5850\")), person(\"Alex\", \"Wang\", , \"x249wang@uwaterloo.ca\", role = \"ctb\"), person(\"Malcolm\", \"Barrett\", , \"malcolmbarrett@gmail.com\", role = \"ctb\", comment = c(ORCID = \"0000-0003-0299-5825\")), person(\"Charles\", \"Gray\", , \"charlestigray@gmail.com\", role = \"ctb\", comment = c(ORCID = \"0000-0002-9978-011X\")), person(\"Jared\", \"Wilber\", role = \"ctb\"), person(\"Vilmantas\", \"Gegzna\", , \"GegznaV@gmail.com\", role = \"ctb\", comment = c(ORCID = \"0000-0002-9500-5167\")), person(\"Eduard\", \"Szoecs\", , \"eduardszoecs@gmail.com\", role = \"ctb\"), person(\"Frederik\", \"Aust\", , \"frederik.aust@uni-koeln.de\", role = \"ctb\", comment = c(ORCID = \"0000-0003-4900-788X\")), person(\"Angus\", \"Moore\", , \"angusmoore9@gmail.com\", role = \"ctb\"), person(\"Nick\", \"Williams\", , \"ntwilliams.personal@gmail.com\", role = \"ctb\"), person(\"Marius\", \"Barth\", , \"marius.barth.uni.koeln@gmail.com\", role = \"ctb\", comment = c(ORCID = \"0000-0002-3421-6665\")), person(\"Bruna\", \"Wundervald\", , \"brunadaviesw@gmail.com\", role = \"ctb\", comment = c(ORCID = \"0000-0001-8163-220X\")), person(\"Joyce\", \"Cahoon\", , \"joyceyu48@gmail.com\", role = \"ctb\", comment = c(ORCID = \"0000-0001-7217-4702\")), person(\"Grant\", \"McDermott\", , \"grantmcd@uoregon.edu\", role = \"ctb\", comment = c(ORCID = \"0000-0001-7883-8573\")), person(\"Kevin\", \"Zarca\", , \"kevin.zarca@gmail.com\", role = \"ctb\"), person(\"Shiro\", \"Kuriwaki\", , \"shirokuriwaki@gmail.com\", role = \"ctb\", comment = c(ORCID = \"0000-0002-5687-2647\")), person(\"Lukas\", \"Wallrich\", , \"lukas.wallrich@gmail.com\", role = \"ctb\", comment = c(ORCID = \"0000-0003-2121-5177\")), person(\"James\", \"Martherus\", , \"james@martherus.com\", role = \"ctb\", comment = c(ORCID = \"0000-0002-8285-3300\")), person(\"Chuliang\", \"Xiao\", , \"cxiao@umich.edu\", role = \"ctb\", comment = c(ORCID = \"0000-0002-8466-9398\")), person(\"Joseph\", \"Larmarange\", , \"joseph@larmarange.net\", role = \"ctb\"), person(\"Max\", \"Kuhn\", , \"max@posit.co\", role = \"ctb\"), person(\"Michal\", \"Bojanowski\", , \"michal2992@gmail.com\", role = \"ctb\"), person(\"Hakon\", \"Malmedal\", , \"hmalmedal@gmail.com\", role = \"ctb\"), person(\"Clara\", \"Wang\", role = \"ctb\"), person(\"Sergio\", \"Oller\", , \"sergioller@gmail.com\", role = \"ctb\"), person(\"Luke\", \"Sonnet\", , \"luke.sonnet@gmail.com\", role = \"ctb\"), person(\"Jim\", \"Hester\", , \"jim.hester@posit.co\", role = \"ctb\"), person(\"Ben\", \"Schneider\", , \"benjamin.julius.schneider@gmail.com\", role = \"ctb\"), person(\"Bernie\", \"Gray\", , \"bfgray3@gmail.com\", role = \"ctb\", comment = c(ORCID = \"0000-0001-9190-6032\")), person(\"Mara\", \"Averick\", , \"mara@posit.co\", role = \"ctb\"), person(\"Aaron\", \"Jacobs\", , \"atheriel@gmail.com\", role = \"ctb\"), person(\"Andreas\", \"Bender\", , \"bender.at.R@gmail.com\", role = \"ctb\"), person(\"Sven\", \"Templer\", , \"sven.templer@gmail.com\", role = \"ctb\"), person(\"Paul-Christian\", \"Buerkner\", , \"paul.buerkner@gmail.com\", role = \"ctb\"), person(\"Matthew\", \"Kay\", , \"mjskay@umich.edu\", role = \"ctb\"), person(\"Erwan\", \"Le Pennec\", , \"lepennec@gmail.com\", role = \"ctb\"), person(\"Johan\", \"Junkka\", , \"johan.junkka@umu.se\", role = \"ctb\"), person(\"Hao\", \"Zhu\", , \"haozhu233@gmail.com\", role = \"ctb\"), person(\"Benjamin\", \"Soltoff\", , \"soltoffbc@uchicago.edu\", role = \"ctb\"), person(\"Zoe\", \"Wilkinson Saldana\", , \"zoewsaldana@gmail.com\", role = \"ctb\"), person(\"Tyler\", \"Littlefield\", , \"tylurp1@gmail.com\", role = \"ctb\"), person(\"Charles T.\", \"Gray\", , \"charlestigray@gmail.com\", role = \"ctb\"), person(\"Shabbh E.\", \"Banks\", role = \"ctb\"), person(\"Serina\", \"Robinson\", , \"robi0916@umn.edu\", role = \"ctb\"), person(\"Roger\", \"Bivand\", , \"Roger.Bivand@nhh.no\", role = \"ctb\"), person(\"Riinu\", \"Ots\", , \"riinuots@gmail.com\", role = \"ctb\"), person(\"Nicholas\", \"Williams\", , \"ntwilliams.personal@gmail.com\", role = \"ctb\"), person(\"Nina\", \"Jakobsen\", role = \"ctb\"), person(\"Michael\", \"Weylandt\", , \"michael.weylandt@gmail.com\", role = \"ctb\"), person(\"Lisa\", \"Lendway\", , \"llendway@macalester.edu\", role = \"ctb\"), person(\"Karl\", \"Hailperin\", , \"khailper@gmail.com\", role = \"ctb\"), person(\"Josue\", \"Rodriguez\", , \"jerrodriguez@ucdavis.edu\", role = \"ctb\"), person(\"Jenny\", \"Bryan\", , \"jenny@posit.co\", role = \"ctb\"), person(\"Chris\", \"Jarvis\", , \"Christopher1.jarvis@gmail.com\", role = \"ctb\"), person(\"Greg\", \"Macfarlane\", , \"gregmacfarlane@gmail.com\", role = \"ctb\"), person(\"Brian\", \"Mannakee\", , \"bmannakee@gmail.com\", role = \"ctb\"), person(\"Drew\", \"Tyre\", , \"atyre2@unl.edu\", role = \"ctb\"), person(\"Shreyas\", \"Singh\", , \"shreyas.singh.298@gmail.com\", role = \"ctb\"), person(\"Laurens\", \"Geffert\", , \"laurensgeffert@gmail.com\", role = \"ctb\"), person(\"Hong\", \"Ooi\", , \"hongooi@microsoft.com\", role = \"ctb\"), person(\"Henrik\", \"Bengtsson\", , \"henrikb@braju.com\", role = \"ctb\"), person(\"Eduard\", \"Szocs\", , \"eduardszoecs@gmail.com\", role = \"ctb\"), person(\"David\", \"Hugh-Jones\", , \"davidhughjones@gmail.com\", role = \"ctb\"), person(\"Matthieu\", \"Stigler\", , \"Matthieu.Stigler@gmail.com\", role = \"ctb\"), person(\"Hugo\", \"Tavares\", , \"hm533@cam.ac.uk\", role = \"ctb\", comment = c(ORCID = \"0000-0001-9373-2726\")), person(\"R. Willem\", \"Vervoort\", , \"Willemvervoort@gmail.com\", role = \"ctb\"), person(\"Brenton M.\", \"Wiernik\", , \"brenton@wiernik.org\", role = \"ctb\"), person(\"Josh\", \"Yamamoto\", , \"joshuayamamoto5@gmail.com\", role = \"ctb\"), person(\"Jasme\", \"Lee\", role = \"ctb\"), person(\"Taren\", \"Sanders\", , \"taren.sanders@acu.edu.au\", role = \"ctb\", comment = c(ORCID = \"0000-0002-4504-6008\")), person(\"Ilaria\", \"Prosdocimi\", , \"prosdocimi.ilaria@gmail.com\", role = \"ctb\", comment = c(ORCID = \"0000-0001-8565-094X\")), person(\"Daniel D.\", \"Sjoberg\", , \"danield.sjoberg@gmail.com\", role = \"ctb\", comment = c(ORCID = \"0000-0003-0862-2018\")), person(\"Alex\", \"Reinhart\", , \"areinhar@stat.cmu.edu\", role = \"ctb\", comment = c(ORCID = \"0000-0002-6658-514X\")) )", + "Description": "Summarizes key information about statistical objects in tidy tibbles. This makes it easy to report results, create plots and consistently work with large numbers of models at once. Broom provides three verbs that each provide different types of information about a model. tidy() summarizes information about model components such as coefficients of a regression. glance() reports information about an entire model, such as goodness of fit measures like AIC and BIC. augment() adds information about individual observations to a dataset, such as fitted values or influence measures.", + "License": "MIT + file LICENSE", + "URL": "https://broom.tidymodels.org/, https://github.com/tidymodels/broom", + "BugReports": "https://github.com/tidymodels/broom/issues", + "Depends": [ + "R (>= 4.1)" + ], + "Imports": [ + "backports", + "cli", + "dplyr (>= 1.0.0)", + "generics (>= 0.0.2)", + "glue", + "lifecycle", + "purrr", + "rlang (>= 1.1.0)", + "stringr", + "tibble (>= 3.0.0)", + "tidyr (>= 1.0.0)" + ], + "Suggests": [ + "AER", + "AUC", + "bbmle", + "betareg (>= 3.2-1)", + "biglm", + "binGroup", + "boot", + "btergm (>= 1.10.6)", + "car (>= 3.1-2)", + "carData", + "caret", + "cluster", + "cmprsk", + "coda", + "covr", + "drc", + "e1071", + "emmeans", + "epiR (>= 2.0.85)", + "ergm (>= 3.10.4)", + "fixest (>= 0.9.0)", + "gam (>= 1.15)", + "gee", + "geepack", + "ggplot2", + "glmnet", + "glmnetUtils", + "gmm", + "Hmisc", + "interp", + "irlba", + "joineRML", + "Kendall", + "knitr", + "ks", + "Lahman", + "lavaan (>= 0.6.18)", + "leaps", + "lfe", + "lm.beta", + "lme4", + "lmodel2", + "lmtest (>= 0.9.38)", + "lsmeans", + "maps", + "margins", + "MASS", + "mclust", + "mediation", + "metafor", + "mfx", + "mgcv", + "mlogit", + "modeldata", + "modeltests (>= 0.1.6)", + "muhaz", + "multcomp", + "network", + "nnet", + "ordinal", + "plm", + "poLCA", + "psych", + "quantreg", + "rmarkdown", + "robust", + "robustbase", + "rsample", + "sandwich", + "spatialreg", + "spdep (>= 1.1)", + "speedglm", + "spelling", + "stats4", + "survey", + "survival (>= 3.6-4)", + "systemfit", + "testthat (>= 3.0.0)", + "tseries", + "vars", + "zoo" + ], + "VignetteBuilder": "knitr", + "Config/Needs/website": "tidyverse/tidytemplate", + "Config/testthat/edition": "3", + "Config/usethis/last-upkeep": "2025-04-25", + "Encoding": "UTF-8", + "Language": "en-US", + "RoxygenNote": "7.3.3", + "Collate": "'aaa-documentation-helper.R' 'null-and-default.R' 'aer.R' 'auc.R' 'base.R' 'bbmle.R' 'betareg.R' 'biglm.R' 'bingroup.R' 'boot.R' 'broom-package.R' 'broom.R' 'btergm.R' 'car.R' 'caret.R' 'cluster.R' 'cmprsk.R' 'data-frame.R' 'deprecated-0-7-0.R' 'drc.R' 'emmeans.R' 'epiR.R' 'ergm.R' 'fixest.R' 'gam.R' 'geepack.R' 'glmnet-cv-glmnet.R' 'glmnet-glmnet.R' 'gmm.R' 'hmisc.R' 'import-standalone-obj-type.R' 'import-standalone-types-check.R' 'joinerml.R' 'kendall.R' 'ks.R' 'lavaan.R' 'leaps.R' 'lfe.R' 'list-irlba.R' 'list-optim.R' 'list-svd.R' 'list-xyz.R' 'list.R' 'lm-beta.R' 'lmodel2.R' 'lmtest.R' 'maps.R' 'margins.R' 'mass-fitdistr.R' 'mass-negbin.R' 'mass-polr.R' 'mass-ridgelm.R' 'stats-lm.R' 'mass-rlm.R' 'mclust.R' 'mediation.R' 'metafor.R' 'mfx.R' 'mgcv.R' 'mlogit.R' 'muhaz.R' 'multcomp.R' 'nnet.R' 'nobs.R' 'ordinal-clm.R' 'ordinal-clmm.R' 'plm.R' 'polca.R' 'psych.R' 'stats-nls.R' 'quantreg-nlrq.R' 'quantreg-rq.R' 'quantreg-rqs.R' 'robust-glmrob.R' 'robust-lmrob.R' 'robustbase-glmrob.R' 'robustbase-lmrob.R' 'sp.R' 'spdep.R' 'speedglm-speedglm.R' 'speedglm-speedlm.R' 'stats-anova.R' 'stats-arima.R' 'stats-decompose.R' 'stats-factanal.R' 'stats-glm.R' 'stats-htest.R' 'stats-kmeans.R' 'stats-loess.R' 'stats-mlm.R' 'stats-prcomp.R' 'stats-smooth.spline.R' 'stats-summary-lm.R' 'stats-time-series.R' 'survey.R' 'survival-aareg.R' 'survival-cch.R' 'survival-coxph.R' 'survival-pyears.R' 'survival-survdiff.R' 'survival-survexp.R' 'survival-survfit.R' 'survival-survreg.R' 'systemfit.R' 'tseries.R' 'utilities.R' 'vars.R' 'zoo.R' 'zzz.R'", + "NeedsCompilation": "no", + "Author": "David Robinson [aut], Alex Hayes [aut] (ORCID: ), Simon Couch [aut] (ORCID: ), Emil Hvitfeldt [aut, cre] (ORCID: ), Posit Software, PBC [cph, fnd] (ROR: ), Indrajeet Patil [ctb] (ORCID: ), Derek Chiu [ctb], Matthieu Gomez [ctb], Boris Demeshev [ctb], Dieter Menne [ctb], Benjamin Nutter [ctb], Luke Johnston [ctb], Ben Bolker [ctb], Francois Briatte [ctb], Jeffrey Arnold [ctb], Jonah Gabry [ctb], Luciano Selzer [ctb], Gavin Simpson [ctb], Jens Preussner [ctb], Jay Hesselberth [ctb], Hadley Wickham [ctb], Matthew Lincoln [ctb], Alessandro Gasparini [ctb], Lukasz Komsta [ctb], Frederick Novometsky [ctb], Wilson Freitas [ctb], Michelle Evans [ctb], Jason Cory Brunson [ctb], Simon Jackson [ctb], Ben Whalley [ctb], Karissa Whiting [ctb], Yves Rosseel [ctb], Michael Kuehn [ctb], Jorge Cimentada [ctb], Erle Holgersen [ctb], Karl Dunkle Werner [ctb] (ORCID: ), Ethan Christensen [ctb], Steven Pav [ctb], Paul PJ [ctb], Ben Schneider [ctb], Patrick Kennedy [ctb], Lily Medina [ctb], Brian Fannin [ctb], Jason Muhlenkamp [ctb], Matt Lehman [ctb], Bill Denney [ctb] (ORCID: ), Nic Crane [ctb], Andrew Bates [ctb], Vincent Arel-Bundock [ctb] (ORCID: ), Hideaki Hayashi [ctb], Luis Tobalina [ctb], Annie Wang [ctb], Wei Yang Tham [ctb], Clara Wang [ctb], Abby Smith [ctb] (ORCID: ), Jasper Cooper [ctb] (ORCID: ), E Auden Krauska [ctb] (ORCID: ), Alex Wang [ctb], Malcolm Barrett [ctb] (ORCID: ), Charles Gray [ctb] (ORCID: ), Jared Wilber [ctb], Vilmantas Gegzna [ctb] (ORCID: ), Eduard Szoecs [ctb], Frederik Aust [ctb] (ORCID: ), Angus Moore [ctb], Nick Williams [ctb], Marius Barth [ctb] (ORCID: ), Bruna Wundervald [ctb] (ORCID: ), Joyce Cahoon [ctb] (ORCID: ), Grant McDermott [ctb] (ORCID: ), Kevin Zarca [ctb], Shiro Kuriwaki [ctb] (ORCID: ), Lukas Wallrich [ctb] (ORCID: ), James Martherus [ctb] (ORCID: ), Chuliang Xiao [ctb] (ORCID: ), Joseph Larmarange [ctb], Max Kuhn [ctb], Michal Bojanowski [ctb], Hakon Malmedal [ctb], Clara Wang [ctb], Sergio Oller [ctb], Luke Sonnet [ctb], Jim Hester [ctb], Ben Schneider [ctb], Bernie Gray [ctb] (ORCID: ), Mara Averick [ctb], Aaron Jacobs [ctb], Andreas Bender [ctb], Sven Templer [ctb], Paul-Christian Buerkner [ctb], Matthew Kay [ctb], Erwan Le Pennec [ctb], Johan Junkka [ctb], Hao Zhu [ctb], Benjamin Soltoff [ctb], Zoe Wilkinson Saldana [ctb], Tyler Littlefield [ctb], Charles T. Gray [ctb], Shabbh E. Banks [ctb], Serina Robinson [ctb], Roger Bivand [ctb], Riinu Ots [ctb], Nicholas Williams [ctb], Nina Jakobsen [ctb], Michael Weylandt [ctb], Lisa Lendway [ctb], Karl Hailperin [ctb], Josue Rodriguez [ctb], Jenny Bryan [ctb], Chris Jarvis [ctb], Greg Macfarlane [ctb], Brian Mannakee [ctb], Drew Tyre [ctb], Shreyas Singh [ctb], Laurens Geffert [ctb], Hong Ooi [ctb], Henrik Bengtsson [ctb], Eduard Szocs [ctb], David Hugh-Jones [ctb], Matthieu Stigler [ctb], Hugo Tavares [ctb] (ORCID: ), R. Willem Vervoort [ctb], Brenton M. Wiernik [ctb], Josh Yamamoto [ctb], Jasme Lee [ctb], Taren Sanders [ctb] (ORCID: ), Ilaria Prosdocimi [ctb] (ORCID: ), Daniel D. Sjoberg [ctb] (ORCID: ), Alex Reinhart [ctb] (ORCID: )", + "Maintainer": "Emil Hvitfeldt ", + "Repository": "CRAN" + }, + "bslib": { + "Package": "bslib", + "Version": "0.9.0", + "Source": "Repository", + "Title": "Custom 'Bootstrap' 'Sass' Themes for 'shiny' and 'rmarkdown'", + "Authors@R": "c( person(\"Carson\", \"Sievert\", , \"carson@posit.co\", role = c(\"aut\", \"cre\"), comment = c(ORCID = \"0000-0002-4958-2844\")), person(\"Joe\", \"Cheng\", , \"joe@posit.co\", role = \"aut\"), person(\"Garrick\", \"Aden-Buie\", , \"garrick@posit.co\", role = \"aut\", comment = c(ORCID = \"0000-0002-7111-0077\")), person(\"Posit Software, PBC\", role = c(\"cph\", \"fnd\")), person(, \"Bootstrap contributors\", role = \"ctb\", comment = \"Bootstrap library\"), person(, \"Twitter, Inc\", role = \"cph\", comment = \"Bootstrap library\"), person(\"Javi\", \"Aguilar\", role = c(\"ctb\", \"cph\"), comment = \"Bootstrap colorpicker library\"), person(\"Thomas\", \"Park\", role = c(\"ctb\", \"cph\"), comment = \"Bootswatch library\"), person(, \"PayPal\", role = c(\"ctb\", \"cph\"), comment = \"Bootstrap accessibility plugin\") )", + "Description": "Simplifies custom 'CSS' styling of both 'shiny' and 'rmarkdown' via 'Bootstrap' 'Sass'. Supports 'Bootstrap' 3, 4 and 5 as well as their various 'Bootswatch' themes. An interactive widget is also provided for previewing themes in real time.", + "License": "MIT + file LICENSE", + "URL": "https://rstudio.github.io/bslib/, https://github.com/rstudio/bslib", + "BugReports": "https://github.com/rstudio/bslib/issues", + "Depends": [ + "R (>= 2.10)" + ], + "Imports": [ + "base64enc", + "cachem", + "fastmap (>= 1.1.1)", + "grDevices", + "htmltools (>= 0.5.8)", + "jquerylib (>= 0.1.3)", + "jsonlite", + "lifecycle", + "memoise (>= 2.0.1)", + "mime", + "rlang", + "sass (>= 0.4.9)" + ], + "Suggests": [ + "bsicons", + "curl", + "fontawesome", + "future", + "ggplot2", + "knitr", + "magrittr", + "rappdirs", + "rmarkdown (>= 2.7)", + "shiny (> 1.8.1)", + "testthat", + "thematic", + "tools", + "utils", + "withr", + "yaml" + ], + "Config/Needs/deploy": "BH, chiflights22, colourpicker, commonmark, cpp11, cpsievert/chiflights22, cpsievert/histoslider, dplyr, DT, ggplot2, ggridges, gt, hexbin, histoslider, htmlwidgets, lattice, leaflet, lubridate, markdown, modelr, plotly, reactable, reshape2, rprojroot, rsconnect, rstudio/shiny, scales, styler, tibble", + "Config/Needs/routine": "chromote, desc, renv", + "Config/Needs/website": "brio, crosstalk, dplyr, DT, ggplot2, glue, htmlwidgets, leaflet, lorem, palmerpenguins, plotly, purrr, rprojroot, rstudio/htmltools, scales, stringr, tidyr, webshot2", + "Config/testthat/edition": "3", + "Config/testthat/parallel": "true", + "Config/testthat/start-first": "zzzz-bs-sass, fonts, zzz-precompile, theme-*, rmd-*", + "Encoding": "UTF-8", + "RoxygenNote": "7.3.2", + "Collate": "'accordion.R' 'breakpoints.R' 'bs-current-theme.R' 'bs-dependencies.R' 'bs-global.R' 'bs-remove.R' 'bs-theme-layers.R' 'bs-theme-preset-bootswatch.R' 'bs-theme-preset-brand.R' 'bs-theme-preset-builtin.R' 'bs-theme-preset.R' 'utils.R' 'bs-theme-preview.R' 'bs-theme-update.R' 'bs-theme.R' 'bslib-package.R' 'buttons.R' 'card.R' 'deprecated.R' 'files.R' 'fill.R' 'imports.R' 'input-dark-mode.R' 'input-switch.R' 'layout.R' 'nav-items.R' 'nav-update.R' 'navbar_options.R' 'navs-legacy.R' 'navs.R' 'onLoad.R' 'page.R' 'popover.R' 'precompiled.R' 'print.R' 'shiny-devmode.R' 'sidebar.R' 'staticimports.R' 'tooltip.R' 'utils-deps.R' 'utils-shiny.R' 'utils-tags.R' 'value-box.R' 'version-default.R' 'versions.R'", + "NeedsCompilation": "no", + "Author": "Carson Sievert [aut, cre] (), Joe Cheng [aut], Garrick Aden-Buie [aut] (), Posit Software, PBC [cph, fnd], Bootstrap contributors [ctb] (Bootstrap library), Twitter, Inc [cph] (Bootstrap library), Javi Aguilar [ctb, cph] (Bootstrap colorpicker library), Thomas Park [ctb, cph] (Bootswatch library), PayPal [ctb, cph] (Bootstrap accessibility plugin)", + "Maintainer": "Carson Sievert ", + "Repository": "https://packagemanager.posit.co/cran/latest" + }, + "caTools": { + "Package": "caTools", + "Version": "1.18.3", + "Source": "Repository", + "Type": "Package", + "Title": "Tools: Moving Window Statistics, GIF, Base64, ROC AUC, etc", + "Date": "2024-09-04", + "Authors@R": "c(person(given = \"Jarek\", family = \"Tuszynski\", role = \"aut\", email = \"jaroslaw.w.tuszynski@saic.com\"), person(given = \"Michael\", family = \"Dietze\", role = \"cre\", email = \"michael.dietze@uni-goettingen.de\"))", + "Maintainer": "Michael Dietze ", + "Depends": [ + "R (>= 3.6.0)" + ], + "Imports": [ + "bitops" + ], + "Suggests": [ + "MASS", + "rpart" + ], + "Description": "Contains several basic utility functions including: moving (rolling, running) window statistic functions, read/write for GIF and ENVI binary files, fast calculation of AUC, LogitBoost classifier, base64 encoder/decoder, round-off-error-free sum and cumsum, etc.", + "License": "GPL-3", + "NeedsCompilation": "yes", + "Repository": "CRAN", + "Author": "Jarek Tuszynski [aut], Michael Dietze [cre]" + }, + "cachem": { + "Package": "cachem", + "Version": "1.1.0", + "Source": "Repository", + "Title": "Cache R Objects with Automatic Pruning", + "Description": "Key-value stores with automatic pruning. Caches can limit either their total size or the age of the oldest object (or both), automatically pruning objects to maintain the constraints.", + "Authors@R": "c( person(\"Winston\", \"Chang\", , \"winston@posit.co\", c(\"aut\", \"cre\")), person(family = \"Posit Software, PBC\", role = c(\"cph\", \"fnd\")))", + "License": "MIT + file LICENSE", + "Encoding": "UTF-8", + "ByteCompile": "true", + "URL": "https://cachem.r-lib.org/, https://github.com/r-lib/cachem", + "Imports": [ + "rlang", + "fastmap (>= 1.2.0)" + ], + "Suggests": [ + "testthat" + ], + "RoxygenNote": "7.2.3", + "Config/Needs/routine": "lobstr", + "Config/Needs/website": "pkgdown", + "NeedsCompilation": "yes", + "Author": "Winston Chang [aut, cre], Posit Software, PBC [cph, fnd]", + "Maintainer": "Winston Chang ", + "Repository": "https://packagemanager.posit.co/cran/latest" + }, + "callr": { + "Package": "callr", + "Version": "3.7.6", + "Source": "Repository", + "Title": "Call R from R", + "Authors@R": "c( person(\"Gábor\", \"Csárdi\", , \"csardi.gabor@gmail.com\", role = c(\"aut\", \"cre\", \"cph\"), comment = c(ORCID = \"0000-0001-7098-9676\")), person(\"Winston\", \"Chang\", role = \"aut\"), person(\"Posit Software, PBC\", role = c(\"cph\", \"fnd\")), person(\"Ascent Digital Services\", role = c(\"cph\", \"fnd\")) )", + "Description": "It is sometimes useful to perform a computation in a separate R process, without affecting the current R process at all. This packages does exactly that.", + "License": "MIT + file LICENSE", + "URL": "https://callr.r-lib.org, https://github.com/r-lib/callr", + "BugReports": "https://github.com/r-lib/callr/issues", + "Depends": [ + "R (>= 3.4)" + ], + "Imports": [ + "processx (>= 3.6.1)", + "R6", + "utils" + ], + "Suggests": [ + "asciicast (>= 2.3.1)", + "cli (>= 1.1.0)", + "mockery", + "ps", + "rprojroot", + "spelling", + "testthat (>= 3.2.0)", + "withr (>= 2.3.0)" + ], + "Config/Needs/website": "r-lib/asciicast, glue, htmlwidgets, igraph, tibble, tidyverse/tidytemplate", + "Config/testthat/edition": "3", + "Encoding": "UTF-8", + "Language": "en-US", + "RoxygenNote": "7.3.1.9000", + "NeedsCompilation": "no", + "Author": "Gábor Csárdi [aut, cre, cph] (), Winston Chang [aut], Posit Software, PBC [cph, fnd], Ascent Digital Services [cph, fnd]", + "Maintainer": "Gábor Csárdi ", + "Repository": "CRAN" + }, + "celldex": { + "Package": "celldex", + "Version": "1.20.0", + "Source": "Bioconductor", + "Title": "Index of Reference Cell Type Datasets", + "Date": "2024-04-25", + "Authors@R": "c(person(\"Dvir\", \"Aran\", email=\"dvir.aran@ucsf.edu\", role=c(\"aut\")), person(\"Aaron\", \"Lun\", email=\"infinite.monkeys.with.keyboards@gmail.com\", role=c(\"aut\", \"cre\", \"cph\")), person(\"Daniel\", \"Bunis\", role=\"aut\"), person(\"Jared\", \"Andrews\", email = \"jared.andrews07@gmail.com\", role=\"aut\"), person(\"Friederike\", \"Dündar\", email = \"frd2007@med.cornell.edu\", role=\"aut\"))", + "Description": "Provides a collection of reference expression datasets with curated cell type labels, for use in procedures like automated annotation of single-cell data or deconvolution of bulk RNA-seq.", + "License": "GPL-3", + "Depends": [ + "SummarizedExperiment" + ], + "Imports": [ + "utils", + "methods", + "Matrix", + "ExperimentHub", + "AnnotationHub", + "AnnotationDbi", + "S4Vectors", + "DelayedArray", + "DelayedMatrixStats", + "gypsum", + "alabaster.base", + "alabaster.matrix", + "alabaster.se", + "DBI", + "RSQLite", + "jsonlite" + ], + "Suggests": [ + "testthat", + "knitr", + "rmarkdown", + "BiocStyle", + "DT", + "jsonvalidate", + "BiocManager", + "ensembldb" + ], + "biocViews": "ExperimentHub, ExperimentData, ExpressionData, SequencingData, RNASeqData", + "VignetteBuilder": "knitr", + "Encoding": "UTF-8", + "URL": "https://github.com/LTLA/celldex", + "BugReports": "https://support.bioconductor.org/", + "RoxygenNote": "7.3.1", + "git_url": "https://git.bioconductor.org/packages/celldex", + "git_branch": "RELEASE_3_22", + "git_last_commit": "4db42c8", + "git_last_commit_date": "2025-10-29", + "Repository": "Bioconductor 3.22", + "NeedsCompilation": "no", + "Author": "Dvir Aran [aut], Aaron Lun [aut, cre, cph], Daniel Bunis [aut], Jared Andrews [aut], Friederike Dündar [aut]", + "Maintainer": "Aaron Lun " + }, + "cellranger": { + "Package": "cellranger", + "Version": "1.1.0", + "Source": "Repository", + "Title": "Translate Spreadsheet Cell Ranges to Rows and Columns", + "Authors@R": "c( person(\"Jennifer\", \"Bryan\", , \"jenny@stat.ubc.ca\", c(\"cre\", \"aut\")), person(\"Hadley\", \"Wickham\", , \"hadley@rstudio.com\", \"ctb\") )", + "Description": "Helper functions to work with spreadsheets and the \"A1:D10\" style of cell range specification.", + "Depends": [ + "R (>= 3.0.0)" + ], + "License": "MIT + file LICENSE", + "LazyData": "true", + "URL": "https://github.com/rsheets/cellranger", + "BugReports": "https://github.com/rsheets/cellranger/issues", + "Suggests": [ + "covr", + "testthat (>= 1.0.0)", + "knitr", + "rmarkdown" + ], + "RoxygenNote": "5.0.1.9000", + "VignetteBuilder": "knitr", + "Imports": [ + "rematch", + "tibble" + ], + "NeedsCompilation": "no", + "Author": "Jennifer Bryan [cre, aut], Hadley Wickham [ctb]", + "Maintainer": "Jennifer Bryan ", + "Repository": "CRAN" + }, + "cigarillo": { + "Package": "cigarillo", + "Version": "1.0.0", + "Source": "Bioconductor", + "Title": "Efficient manipulation of CIGAR strings", + "Description": "CIGAR stands for Concise Idiosyncratic Gapped Alignment Report. CIGAR strings are found in the BAM files produced by most aligners and in the AIRR-formatted output produced by IgBLAST. The cigarillo package provides functions to parse and inspect CIGAR strings, trim them, turn them into ranges of positions relative to the \"query space\" or \"reference space\", and project positions or sequences from one space to the other. Note that these operations are low-level operations that the user rarely needs to perform directly. More typically, they are performed behind the scene by higher-level functionality implemented in other packages like Bioconductor packages GenomicAlignments and igblastr.", + "biocViews": "Infrastructure, Alignment, SequenceMatching, Sequencing", + "URL": "https://bioconductor.org/packages/cigarillo", + "BugReports": "https://github.com/Bioconductor/cigarillo/issues", + "License": "Artistic-2.0", + "Encoding": "UTF-8", + "Authors@R": "c( person(\"Hervé\", \"Pagès\", role=c(\"aut\", \"cre\"), email=\"hpages.on.github@gmail.com\", comment=c(ORCID=\"0009-0002-8272-4522\")), person(\"Valerie\", \"Obenchain\", role=\"aut\"), person(\"Michael\", \"Lawrence\", role=\"aut\", email=\"lawremi@gmail.com\"), person(\"Patrick\", \"Aboyoun\", role=\"ctb\"), person(\"Fedor\", \"Bezrukov\", role=\"ctb\"), person(\"Martin\", \"Morgan\", role=\"ctb\"))", + "Depends": [ + "methods", + "BiocGenerics", + "S4Vectors (>= 0.47.2)", + "IRanges", + "Biostrings" + ], + "Imports": [ + "stats" + ], + "LinkingTo": [ + "S4Vectors", + "IRanges" + ], + "Suggests": [ + "Rsamtools", + "GenomicAlignments", + "RNAseqData.HNRNPC.bam.chr14", + "BSgenome.Hsapiens.UCSC.hg19", + "testthat", + "knitr", + "rmarkdown", + "BiocStyle" + ], + "VignetteBuilder": "knitr", + "Collate": "utils.R cigar_ops_visibility.R explode_cigars.R tabulate_cigar_ops.R cigar_extent.R trim_cigars.R cigars_as_ranges.R project_positions.R project_sequences.R map_ref_ranges_to_query.R", + "git_url": "https://git.bioconductor.org/packages/cigarillo", + "git_branch": "RELEASE_3_22", + "git_last_commit": "8775adf", + "git_last_commit_date": "2025-10-29", + "Repository": "Bioconductor 3.22", + "NeedsCompilation": "yes", + "Author": "Hervé Pagès [aut, cre] (ORCID: ), Valerie Obenchain [aut], Michael Lawrence [aut], Patrick Aboyoun [ctb], Fedor Bezrukov [ctb], Martin Morgan [ctb]", + "Maintainer": "Hervé Pagès " + }, + "circlize": { + "Package": "circlize", + "Version": "0.4.17", + "Source": "Repository", + "Type": "Package", + "Title": "Circular Visualization", + "Date": "2025-12-08", + "Authors@R": "person(\"Zuguang\", \"Gu\", email = \"z.gu@dkfz.de\", role = c(\"aut\", \"cre\"), comment = c('ORCID'=\"0000-0002-7395-8709\"))", + "Depends": [ + "R (>= 3.0.0)", + "graphics" + ], + "Imports": [ + "GlobalOptions (>= 0.1.2)", + "shape", + "grDevices", + "utils", + "stats", + "colorspace", + "methods", + "grid" + ], + "Suggests": [ + "knitr", + "dendextend (>= 1.0.1)", + "ComplexHeatmap (>= 2.0.0)", + "gridBase", + "png", + "markdown", + "bezier", + "rmarkdown" + ], + "VignetteBuilder": "knitr", + "Description": "Circular layout is an efficient way for the visualization of huge amounts of information. Here this package provides an implementation of circular layout generation in R as well as an enhancement of available software. The flexibility of the package is based on the usage of low-level graphics functions such that self-defined high-level graphics can be easily implemented by users for specific purposes. Together with the seamless connection between the powerful computational and visual environment in R, it gives users more convenience and freedom to design figures for better understanding complex patterns behind multiple dimensional data. The package is described in Gu et al. 2014 .", + "URL": "https://github.com/jokergoo/circlize, https://jokergoo.github.io/circlize_book/book/", + "License": "MIT + file LICENSE", + "NeedsCompilation": "no", + "Author": "Zuguang Gu [aut, cre] (ORCID: )", + "Maintainer": "Zuguang Gu ", + "Repository": "CRAN" + }, + "cli": { + "Package": "cli", + "Version": "3.6.5", + "Source": "Repository", + "Title": "Helpers for Developing Command Line Interfaces", + "Authors@R": "c( person(\"Gábor\", \"Csárdi\", , \"gabor@posit.co\", role = c(\"aut\", \"cre\")), person(\"Hadley\", \"Wickham\", role = \"ctb\"), person(\"Kirill\", \"Müller\", role = \"ctb\"), person(\"Salim\", \"Brüggemann\", , \"salim-b@pm.me\", role = \"ctb\", comment = c(ORCID = \"0000-0002-5329-5987\")), person(\"Posit Software, PBC\", role = c(\"cph\", \"fnd\")) )", + "Description": "A suite of tools to build attractive command line interfaces ('CLIs'), from semantic elements: headings, lists, alerts, paragraphs, etc. Supports custom themes via a 'CSS'-like language. It also contains a number of lower level 'CLI' elements: rules, boxes, trees, and 'Unicode' symbols with 'ASCII' alternatives. It support ANSI colors and text styles as well.", + "License": "MIT + file LICENSE", + "URL": "https://cli.r-lib.org, https://github.com/r-lib/cli", + "BugReports": "https://github.com/r-lib/cli/issues", + "Depends": [ + "R (>= 3.4)" + ], + "Imports": [ + "utils" + ], + "Suggests": [ + "callr", + "covr", + "crayon", + "digest", + "glue (>= 1.6.0)", + "grDevices", + "htmltools", + "htmlwidgets", + "knitr", + "methods", + "processx", + "ps (>= 1.3.4.9000)", + "rlang (>= 1.0.2.9003)", + "rmarkdown", + "rprojroot", + "rstudioapi", + "testthat (>= 3.2.0)", + "tibble", + "whoami", + "withr" + ], + "Config/Needs/website": "r-lib/asciicast, bench, brio, cpp11, decor, desc, fansi, prettyunits, sessioninfo, tidyverse/tidytemplate, usethis, vctrs", + "Config/testthat/edition": "3", + "Encoding": "UTF-8", + "RoxygenNote": "7.3.2", + "NeedsCompilation": "yes", + "Author": "Gábor Csárdi [aut, cre], Hadley Wickham [ctb], Kirill Müller [ctb], Salim Brüggemann [ctb] (), Posit Software, PBC [cph, fnd]", + "Maintainer": "Gábor Csárdi ", + "Repository": "https://packagemanager.posit.co/cran/latest" + }, + "clipr": { + "Package": "clipr", + "Version": "0.8.0", + "Source": "Repository", + "Type": "Package", + "Title": "Read and Write from the System Clipboard", + "Authors@R": "c( person(\"Matthew\", \"Lincoln\", , \"matthew.d.lincoln@gmail.com\", role = c(\"aut\", \"cre\"), comment = c(ORCID = \"0000-0002-4387-3384\")), person(\"Louis\", \"Maddox\", role = \"ctb\"), person(\"Steve\", \"Simpson\", role = \"ctb\"), person(\"Jennifer\", \"Bryan\", role = \"ctb\") )", + "Description": "Simple utility functions to read from and write to the Windows, OS X, and X11 clipboards.", + "License": "GPL-3", + "URL": "https://github.com/mdlincoln/clipr, http://matthewlincoln.net/clipr/", + "BugReports": "https://github.com/mdlincoln/clipr/issues", + "Imports": [ + "utils" + ], + "Suggests": [ + "covr", + "knitr", + "rmarkdown", + "rstudioapi (>= 0.5)", + "testthat (>= 2.0.0)" + ], + "VignetteBuilder": "knitr", + "Encoding": "UTF-8", + "Language": "en-US", + "RoxygenNote": "7.1.2", + "SystemRequirements": "xclip (https://github.com/astrand/xclip) or xsel (http://www.vergenet.net/~conrad/software/xsel/) for accessing the X11 clipboard, or wl-clipboard (https://github.com/bugaevc/wl-clipboard) for systems using Wayland.", + "NeedsCompilation": "no", + "Author": "Matthew Lincoln [aut, cre] (), Louis Maddox [ctb], Steve Simpson [ctb], Jennifer Bryan [ctb]", + "Maintainer": "Matthew Lincoln ", + "Repository": "https://packagemanager.posit.co/cran/latest" + }, + "clue": { + "Package": "clue", + "Version": "0.3-66", + "Source": "Repository", + "Encoding": "UTF-8", + "Title": "Cluster Ensembles", + "Description": "CLUster Ensembles.", + "Authors@R": "c(person(\"Kurt\", \"Hornik\", role = c(\"aut\", \"cre\"), email = \"Kurt.Hornik@R-project.org\", comment = c(ORCID = \"0000-0003-4198-9911\")), person(\"Walter\", \"Böhm\", role = \"ctb\"))", + "License": "GPL-2", + "Depends": [ + "R (>= 3.2.0)" + ], + "Imports": [ + "stats", + "cluster", + "graphics", + "methods" + ], + "Suggests": [ + "e1071", + "lpSolve (>= 5.5.7)", + "quadprog (>= 1.4-8)", + "relations" + ], + "Enhances": [ + "RWeka", + "ape", + "cba", + "cclust", + "flexclust", + "flexmix", + "kernlab", + "mclust", + "movMF", + "modeltools" + ], + "NeedsCompilation": "yes", + "Author": "Kurt Hornik [aut, cre] (), Walter Böhm [ctb]", + "Maintainer": "Kurt Hornik ", + "Repository": "RSPM" + }, + "cluster": { + "Package": "cluster", + "Version": "2.1.8.1", + "Source": "Repository", + "VersionNote": "Last CRAN: 2.1.8 on 2024-12-10; 2.1.7 on 2024-12-06; 2.1.6 on 2023-11-30; 2.1.5 on 2023-11-27", + "Date": "2025-03-11", + "Priority": "recommended", + "Title": "\"Finding Groups in Data\": Cluster Analysis Extended Rousseeuw et al.", + "Description": "Methods for Cluster analysis. Much extended the original from Peter Rousseeuw, Anja Struyf and Mia Hubert, based on Kaufman and Rousseeuw (1990) \"Finding Groups in Data\".", + "Maintainer": "Martin Maechler ", + "Authors@R": "c(person(\"Martin\",\"Maechler\", role = c(\"aut\",\"cre\"), email=\"maechler@stat.math.ethz.ch\", comment = c(ORCID = \"0000-0002-8685-9910\")) ,person(\"Peter\", \"Rousseeuw\", role=\"aut\", email=\"peter.rousseeuw@kuleuven.be\", comment = c(\"Fortran original\", ORCID = \"0000-0002-3807-5353\")) ,person(\"Anja\", \"Struyf\", role=\"aut\", comment= \"S original\") ,person(\"Mia\", \"Hubert\", role=\"aut\", email= \"Mia.Hubert@uia.ua.ac.be\", comment = c(\"S original\", ORCID = \"0000-0001-6398-4850\")) ,person(\"Kurt\", \"Hornik\", role=c(\"trl\", \"ctb\"), email=\"Kurt.Hornik@R-project.org\", comment=c(\"port to R; maintenance(1999-2000)\", ORCID=\"0000-0003-4198-9911\")) ,person(\"Matthias\", \"Studer\", role=\"ctb\") ,person(\"Pierre\", \"Roudier\", role=\"ctb\") ,person(\"Juan\", \"Gonzalez\", role=\"ctb\") ,person(\"Kamil\", \"Kozlowski\", role=\"ctb\") ,person(\"Erich\", \"Schubert\", role=\"ctb\", comment = c(\"fastpam options for pam()\", ORCID = \"0000-0001-9143-4880\")) ,person(\"Keefe\", \"Murphy\", role=\"ctb\", comment = \"volume.ellipsoid({d >= 3})\") #not yet ,person(\"Fischer-Rasmussen\", \"Kasper\", role = \"ctb\", comment = \"Gower distance for CLARA\") )", + "Depends": [ + "R (>= 3.5.0)" + ], + "Imports": [ + "graphics", + "grDevices", + "stats", + "utils" + ], + "Suggests": [ + "MASS", + "Matrix" + ], + "SuggestsNote": "MASS: two examples using cov.rob() and mvrnorm(); Matrix tools for testing", + "Enhances": [ + "mvoutlier", + "fpc", + "ellipse", + "sfsmisc" + ], + "EnhancesNote": "xref-ed in man/*.Rd", + "LazyLoad": "yes", + "LazyData": "yes", + "ByteCompile": "yes", + "BuildResaveData": "no", + "License": "GPL (>= 2)", + "URL": "https://svn.r-project.org/R-packages/trunk/cluster/", + "NeedsCompilation": "yes", + "Author": "Martin Maechler [aut, cre] (), Peter Rousseeuw [aut] (Fortran original, ), Anja Struyf [aut] (S original), Mia Hubert [aut] (S original, ), Kurt Hornik [trl, ctb] (port to R; maintenance(1999-2000), ), Matthias Studer [ctb], Pierre Roudier [ctb], Juan Gonzalez [ctb], Kamil Kozlowski [ctb], Erich Schubert [ctb] (fastpam options for pam(), ), Keefe Murphy [ctb] (volume.ellipsoid({d >= 3}))", + "Repository": "CRAN" + }, + "clusterProfiler": { + "Package": "clusterProfiler", + "Version": "4.18.4", + "Source": "Bioconductor", + "Type": "Package", + "Title": "A universal enrichment tool for interpreting omics data", + "Authors@R": "c( person(given = \"Guangchuang\", family = \"Yu\", email = \"guangchuangyu@gmail.com\", role = c(\"aut\", \"cre\", \"cph\"), comment = c(ORCID = \"0000-0002-6485-8781\")), person(given = \"Li-Gen\", family = \"Wang\", email = \"reeganwang020@gmail.com\", role = \"ctb\"), person(given = \"Xiao\", family = \"Luo\", email = \"l77880853349@163.com\", role = \"ctb\"), person(given = \"Meijun\", family = \"Chen\", email = \"mjchen1996@outlook.com\", role = \"ctb\"), person(given = \"Giovanni\", family = \"Dall'Olio\", email = \"giovanni.dallolio@upf.edu\", role = \"ctb\"), person(given = \"Wanqian\", family = \"Wei\", email = \"altair_wei@outlook.com\", role = \"ctb\"), person(given = \"Chun-Hui\", family = \"Gao\", email = \"gaospecial@gmail.com\", role = \"ctb\", comment = c(ORCID = \"0000-0002-1445-7939\")) )", + "Maintainer": "Guangchuang Yu ", + "Description": "This package supports functional characteristics of both coding and non-coding genomics data for thousands of species with up-to-date gene annotation. It provides a universal interface for gene functional annotation from a variety of sources and thus can be applied in diverse scenarios. It provides a tidy interface to access, manipulate, and visualize enrichment results to help users achieve efficient data interpretation. Datasets obtained from multiple treatments and time points can be analyzed and compared in a single run, easily revealing functional consensus and differences among distinct gene clusters.", + "Depends": [ + "R (>= 4.2.0)" + ], + "Imports": [ + "AnnotationDbi", + "DOSE (>= 3.23.2)", + "dplyr", + "enrichplot (>= 1.9.3)", + "GO.db", + "GOSemSim (>= 2.27.2)", + "gson (>= 0.0.7)", + "httr", + "igraph", + "magrittr", + "methods", + "plyr", + "qvalue", + "rlang", + "stats", + "tidyr", + "utils", + "yulab.utils (>= 0.2.3)" + ], + "Suggests": [ + "AnnotationHub", + "BiocManager", + "jsonlite", + "readr", + "org.Hs.eg.db", + "quarto", + "testthat" + ], + "VignetteBuilder": "quarto", + "ByteCompile": "true", + "License": "Artistic-2.0", + "URL": "https://yulab-smu.top/contribution-knowledge-mining/", + "BugReports": "https://github.com/YuLab-SMU/clusterProfiler/issues", + "biocViews": "Annotation, Clustering, GeneSetEnrichment, GO, KEGG, MultipleComparison, Pathways, Reactome, Visualization", + "Encoding": "UTF-8", + "RoxygenNote": "7.3.3", + "git_url": "https://git.bioconductor.org/packages/clusterProfiler", + "git_branch": "RELEASE_3_22", + "git_last_commit": "16e6517", + "git_last_commit_date": "2025-12-15", + "Repository": "Bioconductor 3.22", + "NeedsCompilation": "no", + "Author": "Guangchuang Yu [aut, cre, cph] (ORCID: ), Li-Gen Wang [ctb], Xiao Luo [ctb], Meijun Chen [ctb], Giovanni Dall'Olio [ctb], Wanqian Wei [ctb], Chun-Hui Gao [ctb] (ORCID: )" + }, + "coda": { + "Package": "coda", + "Version": "0.19-4.1", + "Source": "Repository", + "Date": "2020-09-30", + "Title": "Output Analysis and Diagnostics for MCMC", + "Authors@R": "c(person(\"Martyn\", \"Plummer\", role=c(\"aut\",\"cre\",\"trl\"), email=\"martyn.plummer@gmail.com\"), person(\"Nicky\", \"Best\", role=\"aut\"), person(\"Kate\", \"Cowles\", role=\"aut\"), person(\"Karen\", \"Vines\", role=\"aut\"), person(\"Deepayan\", \"Sarkar\", role=\"aut\"), person(\"Douglas\", \"Bates\", role=\"aut\"), person(\"Russell\", \"Almond\", role=\"aut\"), person(\"Arni\", \"Magnusson\", role=\"aut\"))", + "Depends": [ + "R (>= 2.14.0)" + ], + "Imports": [ + "lattice" + ], + "Description": "Provides functions for summarizing and plotting the output from Markov Chain Monte Carlo (MCMC) simulations, as well as diagnostic tests of convergence to the equilibrium distribution of the Markov chain.", + "License": "GPL (>= 2)", + "NeedsCompilation": "no", + "Author": "Martyn Plummer [aut, cre, trl], Nicky Best [aut], Kate Cowles [aut], Karen Vines [aut], Deepayan Sarkar [aut], Douglas Bates [aut], Russell Almond [aut], Arni Magnusson [aut]", + "Maintainer": "Martyn Plummer ", + "Repository": "https://packagemanager.posit.co/cran/latest", + "Encoding": "UTF-8" + }, + "codetools": { + "Package": "codetools", + "Version": "0.2-20", + "Source": "Repository", + "Priority": "recommended", + "Author": "Luke Tierney ", + "Description": "Code analysis tools for R.", + "Title": "Code Analysis Tools for R", + "Depends": [ + "R (>= 2.1)" + ], + "Maintainer": "Luke Tierney ", + "URL": "https://gitlab.com/luke-tierney/codetools", + "License": "GPL", + "NeedsCompilation": "no", + "Repository": "CRAN" + }, + "colorspace": { + "Package": "colorspace", + "Version": "2.1-2", + "Source": "Repository", + "Date": "2025-09-22", + "Title": "A Toolbox for Manipulating and Assessing Colors and Palettes", + "Authors@R": "c(person(given = \"Ross\", family = \"Ihaka\", role = \"aut\", email = \"ihaka@stat.auckland.ac.nz\"), person(given = \"Paul\", family = \"Murrell\", role = \"aut\", email = \"paul@stat.auckland.ac.nz\", comment = c(ORCID = \"0000-0002-3224-8858\")), person(given = \"Kurt\", family = \"Hornik\", role = \"aut\", email = \"Kurt.Hornik@R-project.org\", comment = c(ORCID = \"0000-0003-4198-9911\")), person(given = c(\"Jason\", \"C.\"), family = \"Fisher\", role = \"aut\", email = \"jfisher@usgs.gov\", comment = c(ORCID = \"0000-0001-9032-8912\")), person(given = \"Reto\", family = \"Stauffer\", role = \"aut\", email = \"Reto.Stauffer@uibk.ac.at\", comment = c(ORCID = \"0000-0002-3798-5507\")), person(given = c(\"Claus\", \"O.\"), family = \"Wilke\", role = \"aut\", email = \"wilke@austin.utexas.edu\", comment = c(ORCID = \"0000-0002-7470-9261\")), person(given = c(\"Claire\", \"D.\"), family = \"McWhite\", role = \"aut\", email = \"claire.mcwhite@utmail.utexas.edu\", comment = c(ORCID = \"0000-0001-7346-3047\")), person(given = \"Achim\", family = \"Zeileis\", role = c(\"aut\", \"cre\"), email = \"Achim.Zeileis@R-project.org\", comment = c(ORCID = \"0000-0003-0918-3766\")))", + "Description": "Carries out mapping between assorted color spaces including RGB, HSV, HLS, CIEXYZ, CIELUV, HCL (polar CIELUV), CIELAB, and polar CIELAB. Qualitative, sequential, and diverging color palettes based on HCL colors are provided along with corresponding ggplot2 color scales. Color palette choice is aided by an interactive app (with either a Tcl/Tk or a shiny graphical user interface) and shiny apps with an HCL color picker and a color vision deficiency emulator. Plotting functions for displaying and assessing palettes include color swatches, visualizations of the HCL space, and trajectories in HCL and/or RGB spectrum. Color manipulation functions include: desaturation, lightening/darkening, mixing, and simulation of color vision deficiencies (deutanomaly, protanomaly, tritanomaly). Details can be found on the project web page at and in the accompanying scientific paper: Zeileis et al. (2020, Journal of Statistical Software, ).", + "Depends": [ + "R (>= 3.0.0)", + "methods" + ], + "Imports": [ + "graphics", + "grDevices", + "stats" + ], + "Suggests": [ + "datasets", + "utils", + "KernSmooth", + "MASS", + "kernlab", + "mvtnorm", + "vcd", + "tcltk", + "shiny", + "shinyjs", + "ggplot2", + "dplyr", + "scales", + "grid", + "png", + "jpeg", + "knitr", + "rmarkdown", + "RColorBrewer", + "rcartocolor", + "scico", + "viridis", + "wesanderson" + ], + "VignetteBuilder": "knitr", + "License": "BSD_3_clause + file LICENSE", + "URL": "https://colorspace.R-Forge.R-project.org/, https://hclwizard.org/", + "BugReports": "https://colorspace.R-Forge.R-project.org/contact.html", + "LazyData": "yes", + "Encoding": "UTF-8", + "RoxygenNote": "7.3.2", + "NeedsCompilation": "yes", + "Author": "Ross Ihaka [aut], Paul Murrell [aut] (ORCID: ), Kurt Hornik [aut] (ORCID: ), Jason C. Fisher [aut] (ORCID: ), Reto Stauffer [aut] (ORCID: ), Claus O. Wilke [aut] (ORCID: ), Claire D. McWhite [aut] (ORCID: ), Achim Zeileis [aut, cre] (ORCID: )", + "Maintainer": "Achim Zeileis ", + "Repository": "https://packagemanager.posit.co/cran/latest" + }, + "commonmark": { + "Package": "commonmark", + "Version": "2.0.0", + "Source": "Repository", + "Type": "Package", + "Title": "High Performance CommonMark and Github Markdown Rendering in R", + "Authors@R": "c( person(\"Jeroen\", \"Ooms\", ,\"jeroenooms@gmail.com\", role = c(\"aut\", \"cre\"), comment = c(ORCID = \"0000-0002-4035-0289\")), person(\"John MacFarlane\", role = \"cph\", comment = \"Author of cmark\"))", + "Description": "The CommonMark specification defines a rationalized version of markdown syntax. This package uses the 'cmark' reference implementation for converting markdown text into various formats including html, latex and groff man. In addition it exposes the markdown parse tree in xml format. Also includes opt-in support for GFM extensions including tables, autolinks, and strikethrough text.", + "License": "BSD_2_clause + file LICENSE", + "URL": "https://docs.ropensci.org/commonmark/ https://ropensci.r-universe.dev/commonmark", + "BugReports": "https://github.com/r-lib/commonmark/issues", + "Suggests": [ + "curl", + "testthat", + "xml2" + ], + "RoxygenNote": "7.3.2", + "Language": "en-US", + "Encoding": "UTF-8", + "NeedsCompilation": "yes", + "Author": "Jeroen Ooms [aut, cre] (ORCID: ), John MacFarlane [cph] (Author of cmark)", + "Maintainer": "Jeroen Ooms ", + "Repository": "https://packagemanager.posit.co/cran/latest" + }, + "conflicted": { + "Package": "conflicted", + "Version": "1.2.0", + "Source": "Repository", + "Title": "An Alternative Conflict Resolution Strategy", + "Authors@R": "c( person(\"Hadley\", \"Wickham\", , \"hadley@rstudio.com\", role = c(\"aut\", \"cre\")), person(\"RStudio\", role = c(\"cph\", \"fnd\")) )", + "Description": "R's default conflict management system gives the most recently loaded package precedence. This can make it hard to detect conflicts, particularly when they arise because a package update creates ambiguity that did not previously exist. 'conflicted' takes a different approach, making every conflict an error and forcing you to choose which function to use.", + "License": "MIT + file LICENSE", + "URL": "https://conflicted.r-lib.org/, https://github.com/r-lib/conflicted", + "BugReports": "https://github.com/r-lib/conflicted/issues", + "Depends": [ + "R (>= 3.2)" + ], + "Imports": [ + "cli (>= 3.4.0)", + "memoise", + "rlang (>= 1.0.0)" + ], + "Suggests": [ + "callr", + "covr", + "dplyr", + "Matrix", + "methods", + "pkgload", + "testthat (>= 3.0.0)", + "withr" + ], + "Config/Needs/website": "tidyverse/tidytemplate", + "Config/testthat/edition": "3", + "Encoding": "UTF-8", + "RoxygenNote": "7.2.3", + "NeedsCompilation": "no", + "Author": "Hadley Wickham [aut, cre], RStudio [cph, fnd]", + "Maintainer": "Hadley Wickham ", + "Repository": "CRAN" + }, + "cowplot": { + "Package": "cowplot", + "Version": "1.2.0", + "Source": "Repository", + "Title": "Streamlined Plot Theme and Plot Annotations for 'ggplot2'", + "Authors@R": "person( given = \"Claus O.\", family = \"Wilke\", role = c(\"aut\", \"cre\"), email = \"wilke@austin.utexas.edu\", comment = c(ORCID = \"0000-0002-7470-9261\") )", + "Description": "Provides various features that help with creating publication-quality figures with 'ggplot2', such as a set of themes, functions to align plots and arrange them into complex compound figures, and functions that make it easy to annotate plots and or mix plots with images. The package was originally written for internal use in the Wilke lab, hence the name (Claus O. Wilke's plot package). It has also been used extensively in the book Fundamentals of Data Visualization.", + "URL": "https://wilkelab.org/cowplot/", + "BugReports": "https://github.com/wilkelab/cowplot/issues", + "Depends": [ + "R (>= 3.5.0)" + ], + "Imports": [ + "ggplot2 (>= 3.5.2)", + "grid", + "gtable", + "grDevices", + "methods", + "rlang", + "scales" + ], + "License": "GPL-2", + "Suggests": [ + "Cairo", + "covr", + "dplyr", + "forcats", + "gridGraphics (>= 0.4-0)", + "knitr", + "lattice", + "magick", + "maps", + "PASWR", + "patchwork", + "rmarkdown", + "ragg", + "testthat (>= 1.0.0)", + "tidyr", + "vdiffr (>= 0.3.0)", + "VennDiagram" + ], + "VignetteBuilder": "knitr", + "Collate": "'add_sub.R' 'align_plots.R' 'as_grob.R' 'as_gtable.R' 'axis_canvas.R' 'cowplot.R' 'draw.R' 'get_plot_component.R' 'get_axes.R' 'get_titles.R' 'get_legend.R' 'get_panel.R' 'gtable.R' 'key_glyph.R' 'plot_grid.R' 'save.R' 'set_null_device.R' 'setup.R' 'stamp.R' 'themes.R' 'utils_ggplot2.R'", + "RoxygenNote": "7.3.2", + "Encoding": "UTF-8", + "NeedsCompilation": "no", + "Author": "Claus O. Wilke [aut, cre] (ORCID: )", + "Maintainer": "Claus O. Wilke ", + "Repository": "https://packagemanager.posit.co/cran/latest" + }, + "cpp11": { + "Package": "cpp11", + "Version": "0.5.3", + "Source": "Repository", + "Title": "A C++11 Interface for R's C Interface", + "Authors@R": "c( person(\"Davis\", \"Vaughan\", email = \"davis@posit.co\", role = c(\"aut\", \"cre\"), comment = c(ORCID = \"0000-0003-4777-038X\")), person(\"Jim\",\"Hester\", role = \"aut\", comment = c(ORCID = \"0000-0002-2739-7082\")), person(\"Romain\", \"François\", role = \"aut\", comment = c(ORCID = \"0000-0002-2444-4226\")), person(\"Benjamin\", \"Kietzman\", role = \"ctb\"), person(\"Posit Software, PBC\", role = c(\"cph\", \"fnd\")) )", + "Description": "Provides a header only, C++11 interface to R's C interface. Compared to other approaches 'cpp11' strives to be safe against long jumps from the C API as well as C++ exceptions, conform to normal R function semantics and supports interaction with 'ALTREP' vectors.", + "License": "MIT + file LICENSE", + "URL": "https://cpp11.r-lib.org, https://github.com/r-lib/cpp11", + "BugReports": "https://github.com/r-lib/cpp11/issues", + "Depends": [ + "R (>= 4.0.0)" + ], + "Suggests": [ + "bench", + "brio", + "callr", + "cli", + "covr", + "decor", + "desc", + "ggplot2", + "glue", + "knitr", + "lobstr", + "mockery", + "progress", + "rmarkdown", + "scales", + "Rcpp", + "testthat (>= 3.2.0)", + "tibble", + "utils", + "vctrs", + "withr" + ], + "VignetteBuilder": "knitr", + "Config/Needs/website": "tidyverse/tidytemplate", + "Config/testthat/edition": "3", + "Config/Needs/cpp11/cpp_register": "brio, cli, decor, desc, glue, tibble, vctrs", + "Encoding": "UTF-8", + "RoxygenNote": "7.3.2", + "NeedsCompilation": "no", + "Author": "Davis Vaughan [aut, cre] (ORCID: ), Jim Hester [aut] (ORCID: ), Romain François [aut] (ORCID: ), Benjamin Kietzman [ctb], Posit Software, PBC [cph, fnd]", + "Maintainer": "Davis Vaughan ", + "Repository": "CRAN" + }, + "crayon": { + "Package": "crayon", + "Version": "1.5.3", + "Source": "Repository", + "Title": "Colored Terminal Output", + "Authors@R": "c( person(\"Gábor\", \"Csárdi\", , \"csardi.gabor@gmail.com\", role = c(\"aut\", \"cre\")), person(\"Brodie\", \"Gaslam\", , \"brodie.gaslam@yahoo.com\", role = \"ctb\"), person(\"Posit Software, PBC\", role = c(\"cph\", \"fnd\")) )", + "Description": "The crayon package is now superseded. Please use the 'cli' package for new projects. Colored terminal output on terminals that support 'ANSI' color and highlight codes. It also works in 'Emacs' 'ESS'. 'ANSI' color support is automatically detected. Colors and highlighting can be combined and nested. New styles can also be created easily. This package was inspired by the 'chalk' 'JavaScript' project.", + "License": "MIT + file LICENSE", + "URL": "https://r-lib.github.io/crayon/, https://github.com/r-lib/crayon", + "BugReports": "https://github.com/r-lib/crayon/issues", + "Imports": [ + "grDevices", + "methods", + "utils" + ], + "Suggests": [ + "mockery", + "rstudioapi", + "testthat", + "withr" + ], + "Config/Needs/website": "tidyverse/tidytemplate", + "Encoding": "UTF-8", + "RoxygenNote": "7.3.1", + "Collate": "'aaa-rstudio-detect.R' 'aaaa-rematch2.R' 'aab-num-ansi-colors.R' 'aac-num-ansi-colors.R' 'ansi-256.R' 'ansi-palette.R' 'combine.R' 'string.R' 'utils.R' 'crayon-package.R' 'disposable.R' 'enc-utils.R' 'has_ansi.R' 'has_color.R' 'link.R' 'styles.R' 'machinery.R' 'parts.R' 'print.R' 'style-var.R' 'show.R' 'string_operations.R'", + "NeedsCompilation": "no", + "Author": "Gábor Csárdi [aut, cre], Brodie Gaslam [ctb], Posit Software, PBC [cph, fnd]", + "Maintainer": "Gábor Csárdi ", + "Repository": "https://packagemanager.posit.co/cran/latest" + }, + "crosstalk": { + "Package": "crosstalk", + "Version": "1.2.2", + "Source": "Repository", + "Type": "Package", + "Title": "Inter-Widget Interactivity for HTML Widgets", + "Authors@R": "c( person(\"Joe\", \"Cheng\", , \"joe@posit.co\", role = \"aut\"), person(\"Carson\", \"Sievert\", , \"carson@posit.co\", role = c(\"aut\", \"cre\"), comment = c(ORCID = \"0000-0002-4958-2844\")), person(\"Posit Software, PBC\", role = c(\"cph\", \"fnd\")), person(, \"jQuery Foundation\", role = \"cph\", comment = \"jQuery library and jQuery UI library\"), person(, \"jQuery contributors\", role = c(\"ctb\", \"cph\"), comment = \"jQuery library; authors listed in inst/www/shared/jquery-AUTHORS.txt\"), person(\"Mark\", \"Otto\", role = \"ctb\", comment = \"Bootstrap library\"), person(\"Jacob\", \"Thornton\", role = \"ctb\", comment = \"Bootstrap library\"), person(, \"Bootstrap contributors\", role = \"ctb\", comment = \"Bootstrap library\"), person(, \"Twitter, Inc\", role = \"cph\", comment = \"Bootstrap library\"), person(\"Brian\", \"Reavis\", role = c(\"ctb\", \"cph\"), comment = \"selectize.js library\"), person(\"Kristopher Michael\", \"Kowal\", role = c(\"ctb\", \"cph\"), comment = \"es5-shim library\"), person(, \"es5-shim contributors\", role = c(\"ctb\", \"cph\"), comment = \"es5-shim library\"), person(\"Denis\", \"Ineshin\", role = c(\"ctb\", \"cph\"), comment = \"ion.rangeSlider library\"), person(\"Sami\", \"Samhuri\", role = c(\"ctb\", \"cph\"), comment = \"Javascript strftime library\") )", + "Description": "Provides building blocks for allowing HTML widgets to communicate with each other, with Shiny or without (i.e. static .html files). Currently supports linked brushing and filtering.", + "License": "MIT + file LICENSE", + "URL": "https://rstudio.github.io/crosstalk/, https://github.com/rstudio/crosstalk", + "BugReports": "https://github.com/rstudio/crosstalk/issues", + "Imports": [ + "htmltools (>= 0.3.6)", + "jsonlite", + "lazyeval", + "R6" + ], + "Suggests": [ + "bslib", + "ggplot2", + "sass", + "shiny", + "testthat (>= 2.1.0)" + ], + "Config/Needs/website": "jcheng5/d3scatter, DT, leaflet, rmarkdown", + "Encoding": "UTF-8", + "RoxygenNote": "7.3.2", + "NeedsCompilation": "no", + "Author": "Joe Cheng [aut], Carson Sievert [aut, cre] (ORCID: ), Posit Software, PBC [cph, fnd], jQuery Foundation [cph] (jQuery library and jQuery UI library), jQuery contributors [ctb, cph] (jQuery library; authors listed in inst/www/shared/jquery-AUTHORS.txt), Mark Otto [ctb] (Bootstrap library), Jacob Thornton [ctb] (Bootstrap library), Bootstrap contributors [ctb] (Bootstrap library), Twitter, Inc [cph] (Bootstrap library), Brian Reavis [ctb, cph] (selectize.js library), Kristopher Michael Kowal [ctb, cph] (es5-shim library), es5-shim contributors [ctb, cph] (es5-shim library), Denis Ineshin [ctb, cph] (ion.rangeSlider library), Sami Samhuri [ctb, cph] (Javascript strftime library)", + "Maintainer": "Carson Sievert ", + "Repository": "https://packagemanager.posit.co/cran/latest" + }, + "curl": { + "Package": "curl", + "Version": "7.0.0", + "Source": "Repository", + "Type": "Package", + "Title": "A Modern and Flexible Web Client for R", + "Authors@R": "c( person(\"Jeroen\", \"Ooms\", role = c(\"aut\", \"cre\"), email = \"jeroenooms@gmail.com\", comment = c(ORCID = \"0000-0002-4035-0289\")), person(\"Hadley\", \"Wickham\", role = \"ctb\"), person(\"Posit Software, PBC\", role = \"cph\"))", + "Description": "Bindings to 'libcurl' for performing fully configurable HTTP/FTP requests where responses can be processed in memory, on disk, or streaming via the callback or connection interfaces. Some knowledge of 'libcurl' is recommended; for a more-user-friendly web client see the 'httr2' package which builds on this package with http specific tools and logic.", + "License": "MIT + file LICENSE", + "SystemRequirements": "libcurl (>= 7.73): libcurl-devel (rpm) or libcurl4-openssl-dev (deb)", + "URL": "https://jeroen.r-universe.dev/curl", + "BugReports": "https://github.com/jeroen/curl/issues", + "Suggests": [ + "spelling", + "testthat (>= 1.0.0)", + "knitr", + "jsonlite", + "later", + "rmarkdown", + "httpuv (>= 1.4.4)", + "webutils" + ], + "VignetteBuilder": "knitr", + "Depends": [ + "R (>= 3.0.0)" + ], + "RoxygenNote": "7.3.2", + "Encoding": "UTF-8", + "Language": "en-US", + "NeedsCompilation": "yes", + "Author": "Jeroen Ooms [aut, cre] (ORCID: ), Hadley Wickham [ctb], Posit Software, PBC [cph]", + "Maintainer": "Jeroen Ooms ", + "Repository": "https://packagemanager.posit.co/cran/latest" + }, + "data.table": { + "Package": "data.table", + "Version": "1.18.0", + "Source": "Repository", + "Title": "Extension of `data.frame`", + "Depends": [ + "R (>= 3.4.0)" + ], + "Imports": [ + "methods" + ], + "Suggests": [ + "bit64 (>= 4.0.0)", + "bit (>= 4.0.4)", + "R.utils (>= 2.13.0)", + "xts", + "zoo (>= 1.8-1)", + "yaml", + "knitr", + "markdown" + ], + "Description": "Fast aggregation of large data (e.g. 100GB in RAM), fast ordered joins, fast add/modify/delete of columns by group using no copies at all, list columns, friendly and fast character-separated-value read/write. Offers a natural and flexible syntax, for faster development.", + "License": "MPL-2.0 | file LICENSE", + "URL": "https://r-datatable.com, https://Rdatatable.gitlab.io/data.table, https://github.com/Rdatatable/data.table", + "BugReports": "https://github.com/Rdatatable/data.table/issues", + "VignetteBuilder": "knitr", + "Encoding": "UTF-8", + "ByteCompile": "TRUE", + "Authors@R": "c( person(\"Tyson\",\"Barrett\", role=c(\"aut\",\"cre\"), email=\"t.barrett88@gmail.com\", comment = c(ORCID=\"0000-0002-2137-1391\")), person(\"Matt\",\"Dowle\", role=\"aut\", email=\"mattjdowle@gmail.com\"), person(\"Arun\",\"Srinivasan\", role=\"aut\", email=\"asrini@pm.me\"), person(\"Jan\",\"Gorecki\", role=\"aut\", email=\"j.gorecki@wit.edu.pl\"), person(\"Michael\",\"Chirico\", role=\"aut\", email=\"michaelchirico4@gmail.com\", comment = c(ORCID=\"0000-0003-0787-087X\")), person(\"Toby\",\"Hocking\", role=\"aut\", email=\"toby.hocking@r-project.org\", comment = c(ORCID=\"0000-0002-3146-0865\")), person(\"Benjamin\",\"Schwendinger\",role=\"aut\", comment = c(ORCID=\"0000-0003-3315-8114\")), person(\"Ivan\", \"Krylov\", role=\"aut\", email=\"ikrylov@disroot.org\", comment = c(ORCID=\"0000-0002-0172-3812\")), person(\"Pasha\",\"Stetsenko\", role=\"ctb\"), person(\"Tom\",\"Short\", role=\"ctb\"), person(\"Steve\",\"Lianoglou\", role=\"ctb\"), person(\"Eduard\",\"Antonyan\", role=\"ctb\"), person(\"Markus\",\"Bonsch\", role=\"ctb\"), person(\"Hugh\",\"Parsonage\", role=\"ctb\"), person(\"Scott\",\"Ritchie\", role=\"ctb\"), person(\"Kun\",\"Ren\", role=\"ctb\"), person(\"Xianying\",\"Tan\", role=\"ctb\"), person(\"Rick\",\"Saporta\", role=\"ctb\"), person(\"Otto\",\"Seiskari\", role=\"ctb\"), person(\"Xianghui\",\"Dong\", role=\"ctb\"), person(\"Michel\",\"Lang\", role=\"ctb\"), person(\"Watal\",\"Iwasaki\", role=\"ctb\"), person(\"Seth\",\"Wenchel\", role=\"ctb\"), person(\"Karl\",\"Broman\", role=\"ctb\"), person(\"Tobias\",\"Schmidt\", role=\"ctb\"), person(\"David\",\"Arenburg\", role=\"ctb\"), person(\"Ethan\",\"Smith\", role=\"ctb\"), person(\"Francois\",\"Cocquemas\", role=\"ctb\"), person(\"Matthieu\",\"Gomez\", role=\"ctb\"), person(\"Philippe\",\"Chataignon\", role=\"ctb\"), person(\"Nello\",\"Blaser\", role=\"ctb\"), person(\"Dmitry\",\"Selivanov\", role=\"ctb\"), person(\"Andrey\",\"Riabushenko\", role=\"ctb\"), person(\"Cheng\",\"Lee\", role=\"ctb\"), person(\"Declan\",\"Groves\", role=\"ctb\"), person(\"Daniel\",\"Possenriede\", role=\"ctb\"), person(\"Felipe\",\"Parages\", role=\"ctb\"), person(\"Denes\",\"Toth\", role=\"ctb\"), person(\"Mus\",\"Yaramaz-David\", role=\"ctb\"), person(\"Ayappan\",\"Perumal\", role=\"ctb\"), person(\"James\",\"Sams\", role=\"ctb\"), person(\"Martin\",\"Morgan\", role=\"ctb\"), person(\"Michael\",\"Quinn\", role=\"ctb\"), person(given=\"@javrucebo\", role=\"ctb\", comment=\"GitHub user\"), person(\"Marc\",\"Halperin\", role=\"ctb\"), person(\"Roy\",\"Storey\", role=\"ctb\"), person(\"Manish\",\"Saraswat\", role=\"ctb\"), person(\"Morgan\",\"Jacob\", role=\"ctb\"), person(\"Michael\",\"Schubmehl\", role=\"ctb\"), person(\"Davis\",\"Vaughan\", role=\"ctb\"), person(\"Leonardo\",\"Silvestri\", role=\"ctb\"), person(\"Jim\",\"Hester\", role=\"ctb\"), person(\"Anthony\",\"Damico\", role=\"ctb\"), person(\"Sebastian\",\"Freundt\", role=\"ctb\"), person(\"David\",\"Simons\", role=\"ctb\"), person(\"Elliott\",\"Sales de Andrade\", role=\"ctb\"), person(\"Cole\",\"Miller\", role=\"ctb\"), person(\"Jens Peder\",\"Meldgaard\", role=\"ctb\"), person(\"Vaclav\",\"Tlapak\", role=\"ctb\"), person(\"Kevin\",\"Ushey\", role=\"ctb\"), person(\"Dirk\",\"Eddelbuettel\", role=\"ctb\"), person(\"Tony\",\"Fischetti\", role=\"ctb\"), person(\"Ofek\",\"Shilon\", role=\"ctb\"), person(\"Vadim\",\"Khotilovich\", role=\"ctb\"), person(\"Hadley\",\"Wickham\", role=\"ctb\"), person(\"Bennet\",\"Becker\", role=\"ctb\"), person(\"Kyle\",\"Haynes\", role=\"ctb\"), person(\"Boniface Christian\",\"Kamgang\", role=\"ctb\"), person(\"Olivier\",\"Delmarcell\", role=\"ctb\"), person(\"Josh\",\"O'Brien\", role=\"ctb\"), person(\"Dereck\",\"de Mezquita\", role=\"ctb\"), person(\"Michael\",\"Czekanski\", role=\"ctb\"), person(\"Dmitry\", \"Shemetov\", role=\"ctb\"), person(\"Nitish\", \"Jha\", role=\"ctb\"), person(\"Joshua\", \"Wu\", role=\"ctb\"), person(\"Iago\", \"Giné-Vázquez\", role=\"ctb\"), person(\"Anirban\", \"Chetia\", role=\"ctb\"), person(\"Doris\", \"Amoakohene\", role=\"ctb\"), person(\"Angel\", \"Feliz\", role=\"ctb\"), person(\"Michael\",\"Young\", role=\"ctb\"), person(\"Mark\", \"Seeto\", role=\"ctb\"), person(\"Philippe\", \"Grosjean\", role=\"ctb\"), person(\"Vincent\", \"Runge\", role=\"ctb\"), person(\"Christian\", \"Wia\", role=\"ctb\"), person(\"Elise\", \"Maigné\", role=\"ctb\"), person(\"Vincent\", \"Rocher\", role=\"ctb\"), person(\"Vijay\", \"Lulla\", role=\"ctb\"), person(\"Aljaž\", \"Sluga\", role=\"ctb\"), person(\"Bill\", \"Evans\", role=\"ctb\"), person(\"Reino\", \"Bruner\", role=\"ctb\"), person(given=\"@badasahog\", role=\"ctb\", comment=\"GitHub user\"), person(\"Vinit\", \"Thakur\", role=\"ctb\"), person(\"Mukul\", \"Kumar\", role=\"ctb\"), person(\"Ildikó\", \"Czeller\", role=\"ctb\") )", + "NeedsCompilation": "yes", + "Author": "Tyson Barrett [aut, cre] (ORCID: ), Matt Dowle [aut], Arun Srinivasan [aut], Jan Gorecki [aut], Michael Chirico [aut] (ORCID: ), Toby Hocking [aut] (ORCID: ), Benjamin Schwendinger [aut] (ORCID: ), Ivan Krylov [aut] (ORCID: ), Pasha Stetsenko [ctb], Tom Short [ctb], Steve Lianoglou [ctb], Eduard Antonyan [ctb], Markus Bonsch [ctb], Hugh Parsonage [ctb], Scott Ritchie [ctb], Kun Ren [ctb], Xianying Tan [ctb], Rick Saporta [ctb], Otto Seiskari [ctb], Xianghui Dong [ctb], Michel Lang [ctb], Watal Iwasaki [ctb], Seth Wenchel [ctb], Karl Broman [ctb], Tobias Schmidt [ctb], David Arenburg [ctb], Ethan Smith [ctb], Francois Cocquemas [ctb], Matthieu Gomez [ctb], Philippe Chataignon [ctb], Nello Blaser [ctb], Dmitry Selivanov [ctb], Andrey Riabushenko [ctb], Cheng Lee [ctb], Declan Groves [ctb], Daniel Possenriede [ctb], Felipe Parages [ctb], Denes Toth [ctb], Mus Yaramaz-David [ctb], Ayappan Perumal [ctb], James Sams [ctb], Martin Morgan [ctb], Michael Quinn [ctb], @javrucebo [ctb] (GitHub user), Marc Halperin [ctb], Roy Storey [ctb], Manish Saraswat [ctb], Morgan Jacob [ctb], Michael Schubmehl [ctb], Davis Vaughan [ctb], Leonardo Silvestri [ctb], Jim Hester [ctb], Anthony Damico [ctb], Sebastian Freundt [ctb], David Simons [ctb], Elliott Sales de Andrade [ctb], Cole Miller [ctb], Jens Peder Meldgaard [ctb], Vaclav Tlapak [ctb], Kevin Ushey [ctb], Dirk Eddelbuettel [ctb], Tony Fischetti [ctb], Ofek Shilon [ctb], Vadim Khotilovich [ctb], Hadley Wickham [ctb], Bennet Becker [ctb], Kyle Haynes [ctb], Boniface Christian Kamgang [ctb], Olivier Delmarcell [ctb], Josh O'Brien [ctb], Dereck de Mezquita [ctb], Michael Czekanski [ctb], Dmitry Shemetov [ctb], Nitish Jha [ctb], Joshua Wu [ctb], Iago Giné-Vázquez [ctb], Anirban Chetia [ctb], Doris Amoakohene [ctb], Angel Feliz [ctb], Michael Young [ctb], Mark Seeto [ctb], Philippe Grosjean [ctb], Vincent Runge [ctb], Christian Wia [ctb], Elise Maigné [ctb], Vincent Rocher [ctb], Vijay Lulla [ctb], Aljaž Sluga [ctb], Bill Evans [ctb], Reino Bruner [ctb], @badasahog [ctb] (GitHub user), Vinit Thakur [ctb], Mukul Kumar [ctb], Ildikó Czeller [ctb]", + "Maintainer": "Tyson Barrett ", + "Repository": "CRAN" + }, + "dbplyr": { + "Package": "dbplyr", + "Version": "2.5.1", + "Source": "Repository", + "Type": "Package", + "Title": "A 'dplyr' Back End for Databases", + "Authors@R": "c( person(\"Hadley\", \"Wickham\", , \"hadley@posit.co\", role = c(\"aut\", \"cre\")), person(\"Maximilian\", \"Girlich\", role = \"aut\"), person(\"Edgar\", \"Ruiz\", role = \"aut\"), person(\"Posit Software, PBC\", role = c(\"cph\", \"fnd\")) )", + "Description": "A 'dplyr' back end for databases that allows you to work with remote database tables as if they are in-memory data frames. Basic features works with any database that has a 'DBI' back end; more advanced features require 'SQL' translation to be provided by the package author.", + "License": "MIT + file LICENSE", + "URL": "https://dbplyr.tidyverse.org/, https://github.com/tidyverse/dbplyr", + "BugReports": "https://github.com/tidyverse/dbplyr/issues", + "Depends": [ + "R (>= 3.6)" + ], + "Imports": [ + "blob (>= 1.2.0)", + "cli (>= 3.6.1)", + "DBI (>= 1.1.3)", + "dplyr (>= 1.1.2)", + "glue (>= 1.6.2)", + "lifecycle (>= 1.0.3)", + "magrittr", + "methods", + "pillar (>= 1.9.0)", + "purrr (>= 1.0.1)", + "R6 (>= 2.2.2)", + "rlang (>= 1.1.1)", + "tibble (>= 3.2.1)", + "tidyr (>= 1.3.0)", + "tidyselect (>= 1.2.1)", + "utils", + "vctrs (>= 0.6.3)", + "withr (>= 2.5.0)" + ], + "Suggests": [ + "bit64", + "covr", + "knitr", + "Lahman", + "nycflights13", + "odbc (>= 1.4.2)", + "RMariaDB (>= 1.2.2)", + "rmarkdown", + "RPostgres (>= 1.4.5)", + "RPostgreSQL", + "RSQLite (>= 2.3.8)", + "testthat (>= 3.1.10)" + ], + "VignetteBuilder": "knitr", + "Config/Needs/website": "tidyverse/tidytemplate", + "Config/testthat/edition": "3", + "Config/testthat/parallel": "TRUE", + "Encoding": "UTF-8", + "Language": "en-gb", + "RoxygenNote": "7.3.3", + "Collate": "'db-sql.R' 'utils-check.R' 'import-standalone-types-check.R' 'import-standalone-obj-type.R' 'utils.R' 'sql.R' 'escape.R' 'translate-sql-cut.R' 'translate-sql-quantile.R' 'translate-sql-string.R' 'translate-sql-paste.R' 'translate-sql-helpers.R' 'translate-sql-window.R' 'translate-sql-conditional.R' 'backend-.R' 'backend-access.R' 'backend-hana.R' 'backend-hive.R' 'backend-impala.R' 'verb-copy-to.R' 'backend-mssql.R' 'backend-mysql.R' 'backend-odbc.R' 'backend-oracle.R' 'backend-postgres.R' 'backend-postgres-old.R' 'backend-redshift.R' 'backend-snowflake.R' 'backend-spark-sql.R' 'backend-sqlite.R' 'backend-teradata.R' 'build-sql.R' 'data-cache.R' 'data-lahman.R' 'data-nycflights13.R' 'db-escape.R' 'db-io.R' 'db.R' 'dbplyr.R' 'explain.R' 'ident.R' 'import-standalone-s3-register.R' 'join-by-compat.R' 'join-cols-compat.R' 'lazy-join-query.R' 'lazy-ops.R' 'lazy-query.R' 'lazy-select-query.R' 'lazy-set-op-query.R' 'memdb.R' 'optimise-utils.R' 'pillar.R' 'progress.R' 'sql-build.R' 'query-join.R' 'query-select.R' 'query-semi-join.R' 'query-set-op.R' 'query.R' 'reexport.R' 'remote.R' 'rows.R' 'schema.R' 'simulate.R' 'sql-clause.R' 'sql-expr.R' 'src-sql.R' 'src_dbi.R' 'table-name.R' 'tbl-lazy.R' 'tbl-sql.R' 'test-frame.R' 'testthat.R' 'tidyeval-across.R' 'tidyeval.R' 'translate-sql.R' 'utils-format.R' 'verb-arrange.R' 'verb-compute.R' 'verb-count.R' 'verb-distinct.R' 'verb-do-query.R' 'verb-do.R' 'verb-expand.R' 'verb-fill.R' 'verb-filter.R' 'verb-group_by.R' 'verb-head.R' 'verb-joins.R' 'verb-mutate.R' 'verb-pivot-longer.R' 'verb-pivot-wider.R' 'verb-pull.R' 'verb-select.R' 'verb-set-ops.R' 'verb-slice.R' 'verb-summarise.R' 'verb-uncount.R' 'verb-window.R' 'zzz.R'", + "NeedsCompilation": "no", + "Author": "Hadley Wickham [aut, cre], Maximilian Girlich [aut], Edgar Ruiz [aut], Posit Software, PBC [cph, fnd]", + "Maintainer": "Hadley Wickham ", + "Repository": "https://packagemanager.posit.co/cran/latest" + }, + "digest": { + "Package": "digest", + "Version": "0.6.39", + "Source": "Repository", + "Authors@R": "c(person(\"Dirk\", \"Eddelbuettel\", role = c(\"aut\", \"cre\"), email = \"edd@debian.org\", comment = c(ORCID = \"0000-0001-6419-907X\")), person(\"Antoine\", \"Lucas\", role=\"ctb\", comment = c(ORCID = \"0000-0002-8059-9767\")), person(\"Jarek\", \"Tuszynski\", role=\"ctb\"), person(\"Henrik\", \"Bengtsson\", role=\"ctb\", comment = c(ORCID = \"0000-0002-7579-5165\")), person(\"Simon\", \"Urbanek\", role=\"ctb\", comment = c(ORCID = \"0000-0003-2297-1732\")), person(\"Mario\", \"Frasca\", role=\"ctb\"), person(\"Bryan\", \"Lewis\", role=\"ctb\"), person(\"Murray\", \"Stokely\", role=\"ctb\"), person(\"Hannes\", \"Muehleisen\", role=\"ctb\", comment = c(ORCID = \"0000-0001-8552-0029\")), person(\"Duncan\", \"Murdoch\", role=\"ctb\"), person(\"Jim\", \"Hester\", role=\"ctb\", comment = c(ORCID = \"0000-0002-2739-7082\")), person(\"Wush\", \"Wu\", role=\"ctb\", comment = c(ORCID = \"0000-0001-5180-0567\")), person(\"Qiang\", \"Kou\", role=\"ctb\", comment = c(ORCID = \"0000-0001-6786-5453\")), person(\"Thierry\", \"Onkelinx\", role=\"ctb\", comment = c(ORCID = \"0000-0001-8804-4216\")), person(\"Michel\", \"Lang\", role=\"ctb\", comment = c(ORCID = \"0000-0001-9754-0393\")), person(\"Viliam\", \"Simko\", role=\"ctb\"), person(\"Kurt\", \"Hornik\", role=\"ctb\", comment = c(ORCID = \"0000-0003-4198-9911\")), person(\"Radford\", \"Neal\", role=\"ctb\", comment = c(ORCID = \"0000-0002-2473-3407\")), person(\"Kendon\", \"Bell\", role=\"ctb\", comment = c(ORCID = \"0000-0002-9093-8312\")), person(\"Matthew\", \"de Queljoe\", role=\"ctb\"), person(\"Dmitry\", \"Selivanov\", role=\"ctb\", comment = c(ORCID = \"0000-0003-0492-6647\")), person(\"Ion\", \"Suruceanu\", role=\"ctb\", comment = c(ORCID = \"0009-0005-6446-4909\")), person(\"Bill\", \"Denney\", role=\"ctb\", comment = c(ORCID = \"0000-0002-5759-428X\")), person(\"Dirk\", \"Schumacher\", role=\"ctb\"), person(\"András\", \"Svraka\", role=\"ctb\", comment = c(ORCID = \"0009-0008-8480-1329\")), person(\"Sergey\", \"Fedorov\", role=\"ctb\", comment = c(ORCID = \"0000-0002-5970-7233\")), person(\"Will\", \"Landau\", role=\"ctb\", comment = c(ORCID = \"0000-0003-1878-3253\")), person(\"Floris\", \"Vanderhaeghe\", role=\"ctb\", comment = c(ORCID = \"0000-0002-6378-6229\")), person(\"Kevin\", \"Tappe\", role=\"ctb\"), person(\"Harris\", \"McGehee\", role=\"ctb\"), person(\"Tim\", \"Mastny\", role=\"ctb\"), person(\"Aaron\", \"Peikert\", role=\"ctb\", comment = c(ORCID = \"0000-0001-7813-818X\")), person(\"Mark\", \"van der Loo\", role=\"ctb\", comment = c(ORCID = \"0000-0002-9807-4686\")), person(\"Chris\", \"Muir\", role=\"ctb\", comment = c(ORCID = \"0000-0003-2555-3878\")), person(\"Moritz\", \"Beller\", role=\"ctb\", comment = c(ORCID = \"0000-0003-4852-0526\")), person(\"Sebastian\", \"Campbell\", role=\"ctb\", comment = c(ORCID = \"0009-0000-5948-4503\")), person(\"Winston\", \"Chang\", role=\"ctb\", comment = c(ORCID = \"0000-0002-1576-2126\")), person(\"Dean\", \"Attali\", role=\"ctb\", comment = c(ORCID = \"0000-0002-5645-3493\")), person(\"Michael\", \"Chirico\", role=\"ctb\", comment = c(ORCID = \"0000-0003-0787-087X\")), person(\"Kevin\", \"Ushey\", role=\"ctb\", comment = c(ORCID = \"0000-0003-2880-7407\")), person(\"Carl\", \"Pearson\", role=\"ctb\", comment = c(ORCID = \"0000-0003-0701-7860\")))", + "Date": "2025-11-19", + "Title": "Create Compact Hash Digests of R Objects", + "Description": "Implementation of a function 'digest()' for the creation of hash digests of arbitrary R objects (using the 'md5', 'sha-1', 'sha-256', 'crc32', 'xxhash', 'murmurhash', 'spookyhash', 'blake3', 'crc32c', 'xxh3_64', and 'xxh3_128' algorithms) permitting easy comparison of R language objects, as well as functions such as 'hmac()' to create hash-based message authentication code. Please note that this package is not meant to be deployed for cryptographic purposes for which more comprehensive (and widely tested) libraries such as 'OpenSSL' should be used.", + "URL": "https://github.com/eddelbuettel/digest, https://eddelbuettel.github.io/digest/, https://dirk.eddelbuettel.com/code/digest.html", + "BugReports": "https://github.com/eddelbuettel/digest/issues", + "Depends": [ + "R (>= 3.3.0)" + ], + "Imports": [ + "utils" + ], + "License": "GPL (>= 2)", + "Suggests": [ + "tinytest", + "simplermarkdown", + "rbenchmark" + ], + "VignetteBuilder": "simplermarkdown", + "Encoding": "UTF-8", + "NeedsCompilation": "yes", + "Author": "Dirk Eddelbuettel [aut, cre] (ORCID: ), Antoine Lucas [ctb] (ORCID: ), Jarek Tuszynski [ctb], Henrik Bengtsson [ctb] (ORCID: ), Simon Urbanek [ctb] (ORCID: ), Mario Frasca [ctb], Bryan Lewis [ctb], Murray Stokely [ctb], Hannes Muehleisen [ctb] (ORCID: ), Duncan Murdoch [ctb], Jim Hester [ctb] (ORCID: ), Wush Wu [ctb] (ORCID: ), Qiang Kou [ctb] (ORCID: ), Thierry Onkelinx [ctb] (ORCID: ), Michel Lang [ctb] (ORCID: ), Viliam Simko [ctb], Kurt Hornik [ctb] (ORCID: ), Radford Neal [ctb] (ORCID: ), Kendon Bell [ctb] (ORCID: ), Matthew de Queljoe [ctb], Dmitry Selivanov [ctb] (ORCID: ), Ion Suruceanu [ctb] (ORCID: ), Bill Denney [ctb] (ORCID: ), Dirk Schumacher [ctb], András Svraka [ctb] (ORCID: ), Sergey Fedorov [ctb] (ORCID: ), Will Landau [ctb] (ORCID: ), Floris Vanderhaeghe [ctb] (ORCID: ), Kevin Tappe [ctb], Harris McGehee [ctb], Tim Mastny [ctb], Aaron Peikert [ctb] (ORCID: ), Mark van der Loo [ctb] (ORCID: ), Chris Muir [ctb] (ORCID: ), Moritz Beller [ctb] (ORCID: ), Sebastian Campbell [ctb] (ORCID: ), Winston Chang [ctb] (ORCID: ), Dean Attali [ctb] (ORCID: ), Michael Chirico [ctb] (ORCID: ), Kevin Ushey [ctb] (ORCID: ), Carl Pearson [ctb] (ORCID: )", + "Maintainer": "Dirk Eddelbuettel ", + "Repository": "CRAN" + }, + "doParallel": { + "Package": "doParallel", + "Version": "1.0.17", + "Source": "Repository", + "Type": "Package", + "Title": "Foreach Parallel Adaptor for the 'parallel' Package", + "Authors@R": "c(person(\"Folashade\", \"Daniel\", role=\"cre\", email=\"fdaniel@microsoft.com\"), person(\"Microsoft\", \"Corporation\", role=c(\"aut\", \"cph\")), person(\"Steve\", \"Weston\", role=\"aut\"), person(\"Dan\", \"Tenenbaum\", role=\"ctb\"))", + "Description": "Provides a parallel backend for the %dopar% function using the parallel package.", + "Depends": [ + "R (>= 2.14.0)", + "foreach (>= 1.2.0)", + "iterators (>= 1.0.0)", + "parallel", + "utils" + ], + "Suggests": [ + "caret", + "mlbench", + "rpart", + "RUnit" + ], + "Enhances": [ + "compiler" + ], + "License": "GPL-2", + "URL": "https://github.com/RevolutionAnalytics/doparallel", + "BugReports": "https://github.com/RevolutionAnalytics/doparallel/issues", + "NeedsCompilation": "no", + "Author": "Folashade Daniel [cre], Microsoft Corporation [aut, cph], Steve Weston [aut], Dan Tenenbaum [ctb]", + "Maintainer": "Folashade Daniel ", + "Repository": "RSPM", + "Encoding": "UTF-8" + }, + "dplyr": { + "Package": "dplyr", + "Version": "1.1.4", + "Source": "Repository", + "Type": "Package", + "Title": "A Grammar of Data Manipulation", + "Authors@R": "c( person(\"Hadley\", \"Wickham\", , \"hadley@posit.co\", role = c(\"aut\", \"cre\"), comment = c(ORCID = \"0000-0003-4757-117X\")), person(\"Romain\", \"François\", role = \"aut\", comment = c(ORCID = \"0000-0002-2444-4226\")), person(\"Lionel\", \"Henry\", role = \"aut\"), person(\"Kirill\", \"Müller\", role = \"aut\", comment = c(ORCID = \"0000-0002-1416-3412\")), person(\"Davis\", \"Vaughan\", , \"davis@posit.co\", role = \"aut\", comment = c(ORCID = \"0000-0003-4777-038X\")), person(\"Posit Software, PBC\", role = c(\"cph\", \"fnd\")) )", + "Description": "A fast, consistent tool for working with data frame like objects, both in memory and out of memory.", + "License": "MIT + file LICENSE", + "URL": "https://dplyr.tidyverse.org, https://github.com/tidyverse/dplyr", + "BugReports": "https://github.com/tidyverse/dplyr/issues", + "Depends": [ + "R (>= 3.5.0)" + ], + "Imports": [ + "cli (>= 3.4.0)", + "generics", + "glue (>= 1.3.2)", + "lifecycle (>= 1.0.3)", + "magrittr (>= 1.5)", + "methods", + "pillar (>= 1.9.0)", + "R6", + "rlang (>= 1.1.0)", + "tibble (>= 3.2.0)", + "tidyselect (>= 1.2.0)", + "utils", + "vctrs (>= 0.6.4)" + ], + "Suggests": [ + "bench", + "broom", + "callr", + "covr", + "DBI", + "dbplyr (>= 2.2.1)", + "ggplot2", + "knitr", + "Lahman", + "lobstr", + "microbenchmark", + "nycflights13", + "purrr", + "rmarkdown", + "RMySQL", + "RPostgreSQL", + "RSQLite", + "stringi (>= 1.7.6)", + "testthat (>= 3.1.5)", + "tidyr (>= 1.3.0)", + "withr" + ], + "VignetteBuilder": "knitr", + "Config/Needs/website": "tidyverse, shiny, pkgdown, tidyverse/tidytemplate", + "Config/testthat/edition": "3", + "Encoding": "UTF-8", + "LazyData": "true", + "RoxygenNote": "7.2.3", + "NeedsCompilation": "yes", + "Author": "Hadley Wickham [aut, cre] (), Romain François [aut] (), Lionel Henry [aut], Kirill Müller [aut] (), Davis Vaughan [aut] (), Posit Software, PBC [cph, fnd]", + "Maintainer": "Hadley Wickham ", + "Repository": "https://packagemanager.posit.co/cran/latest" + }, + "dqrng": { + "Package": "dqrng", + "Version": "0.4.1", + "Source": "Repository", + "Type": "Package", + "Title": "Fast Pseudo Random Number Generators", + "Authors@R": "c( person(\"Ralf\", \"Stubner\", email = \"ralf.stubner@gmail.com\", role = c(\"aut\", \"cre\"), comment = c(ORCID = \"0009-0009-1908-106X\")), person(\"daqana GmbH\", role = \"cph\"), person(\"David Blackman\", role = \"cph\", comment = \"Xoroshiro / Xoshiro family\"), person(\"Melissa O'Neill\", email = \"oneill@pcg-random.org\", role = \"cph\", comment = \"PCG family\"), person(\"Sebastiano Vigna\", email = \"vigna@acm.org\", role = \"cph\", comment = \"Xoroshiro / Xoshiro family\"), person(\"Aaron\", \"Lun\", role=\"ctb\"), person(\"Kyle\", \"Butts\", role = \"ctb\", email = \"kyle.butts@colorado.edu\"), person(\"Henrik\", \"Sloot\", role = \"ctb\"), person(\"Philippe\", \"Grosjean\", role = c(\"ctb\"), comment = c(ORCID = \"0000-0002-2694-9471\")) )", + "Description": "Several fast random number generators are provided as C++ header only libraries: The PCG family by O'Neill (2014 ) as well as the Xoroshiro / Xoshiro family by Blackman and Vigna (2021 ). In addition fast functions for generating random numbers according to a uniform, normal and exponential distribution are included. The latter two use the Ziggurat algorithm originally proposed by Marsaglia and Tsang (2000, ). The fast sampling methods support unweighted sampling both with and without replacement. These functions are exported to R and as a C++ interface and are enabled for use with the default 64 bit generator from the PCG family, Xoroshiro128+/++/** and Xoshiro256+/++/** as well as the 64 bit version of the 20 rounds Threefry engine (Salmon et al., 2011, ) as provided by the package 'sitmo'.", + "License": "AGPL-3", + "Depends": [ + "R (>= 3.5.0)" + ], + "Imports": [ + "Rcpp (>= 0.12.16)" + ], + "LinkingTo": [ + "Rcpp", + "BH (>= 1.64.0-1)", + "sitmo (>= 2.0.0)" + ], + "RoxygenNote": "7.3.1", + "Suggests": [ + "BH", + "testthat", + "knitr", + "rmarkdown", + "mvtnorm (>= 1.2-3)", + "bench", + "sitmo" + ], + "VignetteBuilder": "knitr", + "URL": "https://daqana.github.io/dqrng/, https://github.com/daqana/dqrng", + "BugReports": "https://github.com/daqana/dqrng/issues", + "Encoding": "UTF-8", + "NeedsCompilation": "yes", + "Author": "Ralf Stubner [aut, cre] (), daqana GmbH [cph], David Blackman [cph] (Xoroshiro / Xoshiro family), Melissa O'Neill [cph] (PCG family), Sebastiano Vigna [cph] (Xoroshiro / Xoshiro family), Aaron Lun [ctb], Kyle Butts [ctb], Henrik Sloot [ctb], Philippe Grosjean [ctb] ()", + "Maintainer": "Ralf Stubner ", + "Repository": "https://packagemanager.posit.co/cran/latest" + }, + "dtplyr": { + "Package": "dtplyr", + "Version": "1.3.2", + "Source": "Repository", + "Title": "Data Table Back-End for 'dplyr'", + "Authors@R": "c( person(\"Hadley\", \"Wickham\", , \"hadley@posit.co\", role = c(\"cre\", \"aut\")), person(\"Maximilian\", \"Girlich\", role = \"aut\"), person(\"Mark\", \"Fairbanks\", role = \"aut\"), person(\"Ryan\", \"Dickerson\", role = \"aut\"), person(\"Posit Software, PBC\", role = c(\"cph\", \"fnd\")) )", + "Description": "Provides a data.table backend for 'dplyr'. The goal of 'dtplyr' is to allow you to write 'dplyr' code that is automatically translated to the equivalent, but usually much faster, data.table code.", + "License": "MIT + file LICENSE", + "URL": "https://dtplyr.tidyverse.org, https://github.com/tidyverse/dtplyr", + "BugReports": "https://github.com/tidyverse/dtplyr/issues", + "Depends": [ + "R (>= 4.0)" + ], + "Imports": [ + "cli (>= 3.4.0)", + "data.table (>= 1.13.0)", + "dplyr (>= 1.1.0)", + "glue", + "lifecycle", + "rlang (>= 1.0.4)", + "tibble", + "tidyselect (>= 1.2.0)", + "vctrs (>= 0.4.1)" + ], + "Suggests": [ + "bench", + "covr", + "knitr", + "rmarkdown", + "testthat (>= 3.1.2)", + "tidyr (>= 1.1.0)", + "waldo (>= 0.3.1)" + ], + "VignetteBuilder": "knitr", + "Config/Needs/website": "tidyverse/tidytemplate", + "Config/testthat/edition": "3", + "Encoding": "UTF-8", + "RoxygenNote": "7.3.2.9000", + "NeedsCompilation": "no", + "Author": "Hadley Wickham [cre, aut], Maximilian Girlich [aut], Mark Fairbanks [aut], Ryan Dickerson [aut], Posit Software, PBC [cph, fnd]", + "Maintainer": "Hadley Wickham ", + "Repository": "CRAN" + }, + "edgeR": { + "Package": "edgeR", + "Version": "4.8.2", + "Source": "Bioconductor", + "Date": "2025-12-23", + "Title": "Empirical Analysis of Digital Gene Expression Data in R", + "Description": "Differential expression analysis of sequence count data. Implements a range of statistical methodology based on the negative binomial distributions, including empirical Bayes estimation, exact tests, generalized linear models, quasi-likelihood, and gene set enrichment. Can perform differential analyses of any type of omics data that produces read counts, including RNA-seq, ChIP-seq, ATAC-seq, Bisulfite-seq, SAGE, CAGE, metabolomics, or proteomics spectral counts. RNA-seq analyses can be conducted at the gene or isoform level, and tests can be conducted for differential exon or transcript usage.", + "Author": "Yunshun Chen, Lizhong Chen, Aaron TL Lun, Davis J McCarthy, Pedro Baldoni, Matthew E Ritchie, Belinda Phipson, Yifang Hu, Xiaobei Zhou, Mark D Robinson, Gordon K Smyth", + "Maintainer": "Yunshun Chen , Gordon Smyth , Aaron Lun , Mark Robinson ", + "License": "GPL (>=2)", + "Depends": [ + "R (>= 3.6.0)", + "limma (>= 3.63.6)" + ], + "Imports": [ + "methods", + "graphics", + "stats", + "utils", + "locfit" + ], + "Suggests": [ + "arrow", + "jsonlite", + "knitr", + "Matrix", + "readr", + "rhdf5", + "SeuratObject", + "splines", + "AnnotationDbi", + "Biobase", + "BiocStyle", + "org.Hs.eg.db", + "SummarizedExperiment" + ], + "VignetteBuilder": "knitr", + "URL": "https://bioinf.wehi.edu.au/edgeR/, https://bioconductor.org/packages/edgeR", + "biocViews": "AlternativeSplicing, BatchEffect, Bayesian, BiomedicalInformatics, CellBiology, ChIPSeq, Clustering, Coverage, DifferentialExpression, DifferentialMethylation, DifferentialSplicing, DNAMethylation, Epigenetics, FunctionalGenomics, GeneExpression, GeneSetEnrichment, Genetics, Genetics, ImmunoOncology, MultipleComparison, Normalization, Pathways, Proteomics, QualityControl, Regression, RNASeq, SAGE, Sequencing, SingleCell, SystemsBiology, TimeCourse, Transcription, Transcriptomics", + "NeedsCompilation": "yes", + "Repository": "https://bioc-release.r-universe.dev", + "RemoteUrl": "https://github.com/bioc/edgeR", + "RemoteRef": "RELEASE_3_22", + "RemoteSha": "af0343acbb3998d2d2bb3e3d259bbee17a2c8a7e" + }, + "eds": { + "Package": "eds", + "Version": "1.12.0", + "Source": "Bioconductor", + "Title": "eds: Low-level reader for Alevin EDS format", + "Authors@R": "c( person(\"Avi\", \"Srivastava\", role=c(\"aut\",\"cre\"), email=\"asrivastava@cs.stonybrook.edu\"), person(\"Michael\", \"Love\", role=c(\"aut\",\"ctb\")))", + "Description": "This packages provides a single function, readEDS. This is a low-level utility for reading in Alevin EDS format into R. This function is not designed for end-users but instead the package is predominantly for simplifying package dependency graph for other Bioconductor packages.", + "Depends": [ + "Matrix" + ], + "Imports": [ + "Rcpp" + ], + "Suggests": [ + "knitr", + "tximportData", + "testthat (>= 3.0.0)" + ], + "LinkingTo": [ + "Rcpp" + ], + "SystemRequirements": "C++11", + "License": "GPL-2", + "Encoding": "UTF-8", + "URL": "https://github.com/mikelove/eds", + "biocViews": "Sequencing, RNASeq, GeneExpression, SingleCell", + "VignetteBuilder": "knitr", + "RoxygenNote": "7.1.2", + "Config/testthat/edition": "3", + "git_url": "https://git.bioconductor.org/packages/eds", + "git_branch": "RELEASE_3_22", + "git_last_commit": "d2b8448", + "git_last_commit_date": "2025-10-29", + "Repository": "Bioconductor 3.22", + "NeedsCompilation": "yes", + "Author": "Avi Srivastava [aut, cre], Michael Love [aut, ctb]", + "Maintainer": "Avi Srivastava " + }, + "emdbook": { + "Package": "emdbook", + "Version": "1.3.14", + "Source": "Repository", + "Type": "Package", + "Title": "Support Functions and Data for \"Ecological Models and Data\"", + "LazyData": "yes", + "Authors@R": "c(person(\"Ben\",\"Bolker\",email=\"bolker@mcmaster.ca\", role=c(\"aut\",\"cre\")), person(\"Sang Woo\",\"Park\",role=\"ctb\"), person(\"James\",\"Vonesh\",role=\"dtc\"), person(\"Jacqueline\",\"Wilson\",role=\"dtc\"), person(\"Russ\",\"Schmitt\",role=\"dtc\"), person(\"Sally\",\"Holbrook\",role=\"dtc\"), person(\"James D.\",\"Thomson\",role=\"dtc\"), person(\"R. Scot\",\"Duncan\",role=\"dtc\") )", + "Description": "Auxiliary functions and data sets for \"Ecological Models and Data\", a book presenting maximum likelihood estimation and related topics for ecologists (ISBN 978-0-691-12522-0).", + "Suggests": [ + "R2jags", + "ellipse", + "SuppDists", + "numDeriv", + "testthat", + "rgl" + ], + "Imports": [ + "MASS", + "lattice", + "plyr", + "coda", + "bbmle" + ], + "License": "GPL", + "URL": "https://math.mcmaster.ca/bolker/emdbook", + "NeedsCompilation": "no", + "Author": "Ben Bolker [aut, cre], Sang Woo Park [ctb], James Vonesh [dtc], Jacqueline Wilson [dtc], Russ Schmitt [dtc], Sally Holbrook [dtc], James D. Thomson [dtc], R. Scot Duncan [dtc]", + "Maintainer": "Ben Bolker ", + "Repository": "CRAN" + }, + "emmeans": { + "Package": "emmeans", + "Version": "2.0.1", + "Source": "Repository", + "Type": "Package", + "Title": "Estimated Marginal Means, aka Least-Squares Means", + "Date": "2025-12-10", + "Authors@R": "c(person(\"Russell V.\", \"Lenth\", role = c(\"aut\", \"cph\"), email = \"russell-lenth@uiowa.edu\"), person(\"Julia\", \"Piaskowski\", role = c(\"cre\", \"aut\"), email = \"julia.piask@gmail.com\"), person(\"Balazs\", \"Banfai\", role = \"ctb\"), person(\"Ben\", \"Bolker\", role = \"ctb\"), person(\"Paul\", \"Buerkner\", role = \"ctb\"), person(\"Iago\", \"Giné-Vázquez\", role = \"ctb\"), person(\"Maxime\", \"Hervé\", role = \"ctb\"), person(\"Maarten\", \"Jung\", role = \"ctb\"), person(\"Jonathon\", \"Love\", role = \"ctb\"), person(\"Fernando\", \"Miguez\", role = \"ctb\"), person(\"Hannes\", \"Riebl\", role = \"ctb\"), person(\"Henrik\", \"Singmann\", role = \"ctb\"))", + "Maintainer": "Julia Piaskowski ", + "Depends": [ + "R (>= 4.1.0)" + ], + "Imports": [ + "estimability (>= 1.4.1)", + "graphics", + "methods", + "mvtnorm", + "numDeriv", + "rlang", + "stats", + "utils" + ], + "Suggests": [ + "bayesplot", + "bayestestR", + "biglm", + "brms", + "car", + "coda (>= 0.17)", + "compositions", + "ggplot2", + "knitr", + "lattice", + "lme4", + "lmerTest (>= 2.0.32)", + "logspline", + "MASS", + "mediation", + "mgcv", + "multcomp", + "multcompView", + "MuMIn", + "nlme", + "ordinal (>= 2014.11-12)", + "pbkrtest (>= 0.4-1)", + "rmarkdown", + "robmixglm", + "rsm", + "sandwich", + "scales", + "splines", + "testthat", + "tibble", + "xtable (>= 1.8-2)" + ], + "Enhances": [ + "CARBayes", + "coxme", + "gee", + "geepack", + "MCMCglmm", + "MCMCpack", + "mice", + "nnet", + "pscl", + "rstanarm", + "sommer", + "survival" + ], + "URL": "https://rvlenth.github.io/emmeans/,https://rvlenth.github.io/emmeans/", + "BugReports": "https://github.com/rvlenth/emmeans/issues", + "LazyData": "yes", + "ByteCompile": "yes", + "Description": "Obtain estimated marginal means (EMMs) for many linear, generalized linear, and mixed models. Compute contrasts or linear functions of EMMs, trends, and comparisons of slopes. Plots and other displays. Least-squares means are discussed, and the term \"estimated marginal means\" is suggested, in Searle, Speed, and Milliken (1980) Population marginal means in the linear model: An alternative to least squares means, The American Statistician 34(4), 216-221 .", + "License": "GPL-2 | GPL-3", + "Encoding": "UTF-8", + "RoxygenNote": "7.3.3", + "VignetteBuilder": "knitr", + "NeedsCompilation": "no", + "Author": "Russell V. Lenth [aut, cph], Julia Piaskowski [cre, aut], Balazs Banfai [ctb], Ben Bolker [ctb], Paul Buerkner [ctb], Iago Giné-Vázquez [ctb], Maxime Hervé [ctb], Maarten Jung [ctb], Jonathon Love [ctb], Fernando Miguez [ctb], Hannes Riebl [ctb], Henrik Singmann [ctb]", + "Repository": "CRAN" + }, + "enrichplot": { + "Package": "enrichplot", + "Version": "1.30.4", + "Source": "Bioconductor", + "Title": "Visualization of Functional Enrichment Result", + "Authors@R": "c( person(given = \"Guangchuang\", family = \"Yu\", email = \"guangchuangyu@gmail.com\", role = c(\"aut\", \"cre\"), comment = c(ORCID = \"0000-0002-6485-8781\")), person(given = \"Chun-Hui\", family = \"Gao\", email = \"gaospecial@gmail.com\", role = \"ctb\", comment = c(ORCID = \"0000-0002-1445-7939\")))", + "Description": "The 'enrichplot' package implements several visualization methods for interpreting functional enrichment results obtained from ORA or GSEA analysis. It is mainly designed to work with the 'clusterProfiler' package suite. All the visualization methods are developed based on 'ggplot2' graphics.", + "Depends": [ + "R (>= 4.2.0)" + ], + "Imports": [ + "aplot (>= 0.2.1)", + "DOSE (>= 3.31.2)", + "ggfun (>= 0.1.7)", + "ggnewscale", + "ggplot2 (>= 3.5.0)", + "ggrepel (>= 0.9.0)", + "ggtangle (>= 0.0.9)", + "graphics", + "grid", + "igraph", + "methods", + "plyr", + "purrr", + "RColorBrewer", + "reshape2", + "rlang", + "stats", + "tidydr", + "utils", + "scatterpie", + "GOSemSim (>= 2.31.2)", + "ggtree", + "yulab.utils (>= 0.1.6)" + ], + "Suggests": [ + "clusterProfiler", + "dplyr", + "europepmc", + "ggarchery", + "ggupset", + "glue", + "knitr", + "rmarkdown", + "org.Hs.eg.db", + "prettydoc", + "tibble", + "tidyr", + "ggforce", + "ggHoriPlot", + "AnnotationDbi", + "ggplotify", + "ggridges", + "grDevices", + "gridExtra", + "ggstar", + "scales", + "ggtreeExtra" + ], + "VignetteBuilder": "knitr", + "License": "Artistic-2.0", + "URL": "https://yulab-smu.top/contribution-knowledge-mining/", + "BugReports": "https://github.com/GuangchuangYu/enrichplot/issues", + "biocViews": "Annotation, GeneSetEnrichment, GO, KEGG, Pathways, Software, Visualization", + "Encoding": "UTF-8", + "RoxygenNote": "7.3.3", + "git_url": "https://git.bioconductor.org/packages/enrichplot", + "git_branch": "RELEASE_3_22", + "git_last_commit": "920c1db", + "git_last_commit_date": "2025-11-30", + "Repository": "Bioconductor 3.22", + "NeedsCompilation": "no", + "Author": "Guangchuang Yu [aut, cre] (ORCID: ), Chun-Hui Gao [ctb] (ORCID: )", + "Maintainer": "Guangchuang Yu " + }, + "ensembldb": { + "Package": "ensembldb", + "Version": "2.34.0", + "Source": "Bioconductor", + "Type": "Package", + "Title": "Utilities to create and use Ensembl-based annotation databases", + "Authors@R": "c(person(given = \"Johannes\", family = \"Rainer\", email = \"johannes.rainer@eurac.edu\", role = c(\"aut\", \"cre\"), comment = c(ORCID = \"0000-0002-6977-7147\")), person(given = \"Tim\", family = \"Triche\", email = \"tim.triche@usc.edu\", role = \"ctb\"), person(given = \"Christian\", family = \"Weichenberger\", email = \"christian.weichenberger@eurac.edu\", role = \"ctb\", comment = c(ORCID = \"0000-0002-2176-0274\")), person(given = \"Sebastian\", family = \"Gibb\", email = \"mail@sebastiangibb.de\", role = \"ctb\", comment = c(ORCID = \"0000-0001-7406-4443\")), person(given = \"Laurent\", family = \"Gatto\", email = \"lg390@cam.ac.uk\", role = \"ctb\", comment = c(ORCID = \"0000-0002-1520-2268\")), person(given = \"Boyu\", family = \"Yu\", email = \"boyu.yu.tim@gmail.com\", role = \"ctb\"))", + "Author": "Johannes Rainer with contributions from Tim Triche, Sebastian Gibb, Laurent Gatto Christian Weichenberger and Boyu Yu.", + "Maintainer": "Johannes Rainer ", + "URL": "https://github.com/jorainer/ensembldb", + "BugReports": "https://github.com/jorainer/ensembldb/issues", + "Imports": [ + "methods", + "RSQLite (>= 1.1)", + "DBI", + "Biobase", + "Seqinfo", + "GenomeInfoDb (>= 1.45.5)", + "AnnotationDbi (>= 1.31.19)", + "rtracklayer (>= 1.69.1)", + "S4Vectors (>= 0.23.10)", + "Rsamtools", + "IRanges (>= 2.13.24)", + "ProtGenerics", + "Biostrings (>= 2.77.2)", + "curl" + ], + "Depends": [ + "R (>= 3.5.0)", + "BiocGenerics (>= 0.15.10)", + "GenomicRanges (>= 1.61.1)", + "GenomicFeatures (>= 1.61.4)", + "AnnotationFilter (>= 1.5.2)" + ], + "Suggests": [ + "BiocStyle", + "knitr", + "EnsDb.Hsapiens.v86 (>= 0.99.8)", + "testthat", + "BSgenome.Hsapiens.NCBI.GRCh38", + "ggbio (>= 1.24.0)", + "Gviz (>= 1.20.0)", + "rmarkdown", + "AnnotationHub" + ], + "Enhances": [ + "RMariaDB", + "shiny" + ], + "VignetteBuilder": "knitr", + "Description": "The package provides functions to create and use transcript centric annotation databases/packages. The annotation for the databases are directly fetched from Ensembl using their Perl API. The functionality and data is similar to that of the TxDb packages from the GenomicFeatures package, but, in addition to retrieve all gene/transcript models and annotations from the database, ensembldb provides a filter framework allowing to retrieve annotations for specific entries like genes encoded on a chromosome region or transcript models of lincRNA genes. EnsDb databases built with ensembldb contain also protein annotations and mappings between proteins and their encoding transcripts. Finally, ensembldb provides functions to map between genomic, transcript and protein coordinates.", + "Collate": "'Classes.R' 'Deprecated.R' 'Generics.R' 'Methods-Filter.R' 'Methods.R' 'dbhelpers.R' 'functions-EnsDb.R' 'functions-Filter.R' 'functions-create-EnsDb.R' 'functions-utils.R' 'proteinToX.R' 'transcriptToX.R' 'genomeToX.R' 'select-methods.R' 'seqname-utils.R' 'zzz.R'", + "biocViews": "Genetics, AnnotationData, Sequencing, Coverage", + "License": "LGPL", + "RoxygenNote": "7.3.2", + "git_url": "https://git.bioconductor.org/packages/ensembldb", + "git_branch": "RELEASE_3_22", + "git_last_commit": "a13967b", + "git_last_commit_date": "2025-10-29", + "Repository": "Bioconductor 3.22", + "NeedsCompilation": "no" + }, + "estimability": { + "Package": "estimability", + "Version": "1.5.1", + "Source": "Repository", + "Type": "Package", + "Title": "Tools for Assessing Estimability of Linear Predictions", + "Date": "2024-05-12", + "Authors@R": "c(person(\"Russell\", \"Lenth\", role = c(\"aut\", \"cre\", \"cph\"), email = \"russell-lenth@uiowa.edu\"))", + "Depends": [ + "stats", + "R(>= 4.1.0)" + ], + "Suggests": [ + "knitr", + "rmarkdown" + ], + "Description": "Provides tools for determining estimability of linear functions of regression coefficients, and 'epredict' methods that handle non-estimable cases correctly. Estimability theory is discussed in many linear-models textbooks including Chapter 3 of Monahan, JF (2008), \"A Primer on Linear Models\", Chapman and Hall (ISBN 978-1-4200-6201-4).", + "URL": "https://github.com/rvlenth/estimability, https://rvlenth.github.io/estimability/", + "BugReports": "https://github.com/rvlenth/estimability/issues", + "ByteCompile": "yes", + "License": "GPL (>= 3)", + "VignetteBuilder": "knitr", + "NeedsCompilation": "no", + "Author": "Russell Lenth [aut, cre, cph]", + "Maintainer": "Russell Lenth ", + "Repository": "CRAN" + }, + "etrunct": { + "Package": "etrunct", + "Version": "0.1", + "Source": "Repository", + "Type": "Package", + "Title": "Computes Moments of Univariate Truncated t Distribution", + "Author": "Matthew Stephens", + "Maintainer": "Matthew Stephens ", + "Description": "Computes moments of univariate truncated t distribution. There is only one exported function, e_trunct(), which should be seen for details.", + "License": "MIT + file LICENSE", + "Encoding": "UTF-8", + "LazyData": "true", + "RoxygenNote": "5.0.1", + "Suggests": [ + "testthat" + ], + "NeedsCompilation": "no", + "Repository": "CRAN" + }, + "evaluate": { + "Package": "evaluate", + "Version": "1.0.5", + "Source": "Repository", + "Type": "Package", + "Title": "Parsing and Evaluation Tools that Provide More Details than the Default", + "Authors@R": "c( person(\"Hadley\", \"Wickham\", , \"hadley@posit.co\", role = c(\"aut\", \"cre\")), person(\"Yihui\", \"Xie\", role = \"aut\", comment = c(ORCID = \"0000-0003-0645-5666\")), person(\"Michael\", \"Lawrence\", role = \"ctb\"), person(\"Thomas\", \"Kluyver\", role = \"ctb\"), person(\"Jeroen\", \"Ooms\", role = \"ctb\"), person(\"Barret\", \"Schloerke\", role = \"ctb\"), person(\"Adam\", \"Ryczkowski\", role = \"ctb\"), person(\"Hiroaki\", \"Yutani\", role = \"ctb\"), person(\"Michel\", \"Lang\", role = \"ctb\"), person(\"Karolis\", \"Koncevičius\", role = \"ctb\"), person(\"Posit Software, PBC\", role = c(\"cph\", \"fnd\")) )", + "Description": "Parsing and evaluation tools that make it easy to recreate the command line behaviour of R.", + "License": "MIT + file LICENSE", + "URL": "https://evaluate.r-lib.org/, https://github.com/r-lib/evaluate", + "BugReports": "https://github.com/r-lib/evaluate/issues", + "Depends": [ + "R (>= 3.6.0)" + ], + "Suggests": [ + "callr", + "covr", + "ggplot2 (>= 3.3.6)", + "lattice", + "methods", + "pkgload", + "ragg (>= 1.4.0)", + "rlang (>= 1.1.5)", + "knitr", + "testthat (>= 3.0.0)", + "withr" + ], + "Config/Needs/website": "tidyverse/tidytemplate", + "Config/testthat/edition": "3", + "Encoding": "UTF-8", + "RoxygenNote": "7.3.2", + "NeedsCompilation": "no", + "Author": "Hadley Wickham [aut, cre], Yihui Xie [aut] (ORCID: ), Michael Lawrence [ctb], Thomas Kluyver [ctb], Jeroen Ooms [ctb], Barret Schloerke [ctb], Adam Ryczkowski [ctb], Hiroaki Yutani [ctb], Michel Lang [ctb], Karolis Koncevičius [ctb], Posit Software, PBC [cph, fnd]", + "Maintainer": "Hadley Wickham ", + "Repository": "https://packagemanager.posit.co/cran/latest" + }, + "exrcise": { + "Package": "exrcise", + "Version": "0.1.0", + "Source": "GitHub", + "Type": "Package", + "Title": "Selectively Excise Code Chunks for Exercises", + "Authors@R": "person(c(\"Joshua\", \"A.\"), \"Shapiro\", email = \"josh.shapiro@ccdatalab.org\", comment = list(ORCID = \"0000-0002-6224-0347\"), role = c(\"aut\", \"cre\"))", + "Maintainer": "Joshua Shapiro ", + "Description": "This package selectively removes the contents of code chunks from Rmarkdown files to produce new notebooks suitable for live coding instruction or exercises, while preserving the original file as a reference or answer key.", + "License": "BSD_3_clause + file LICENSE", + "Encoding": "UTF-8", + "Imports": [ + "knitr", + "stringr", + "magrittr", + "purrr", + "readr" + ], + "RoxygenNote": "7.1.0", + "Suggests": [ + "testthat" + ], + "RemoteType": "github", + "RemoteHost": "api.github.com", + "RemoteRepo": "exrcise", + "RemoteUsername": "AlexsLemonade", + "RemoteRef": "HEAD", + "RemoteSha": "a496662f8a8a2294366cae4d2f3547c50ac341f1", + "NeedsCompilation": "no", + "Author": "Joshua A. Shapiro [aut, cre] (0000-0002-6224-0347)" + }, + "farver": { + "Package": "farver", + "Version": "2.1.2", + "Source": "Repository", + "Type": "Package", + "Title": "High Performance Colour Space Manipulation", + "Authors@R": "c( person(\"Thomas Lin\", \"Pedersen\", , \"thomas.pedersen@posit.co\", role = c(\"cre\", \"aut\"), comment = c(ORCID = \"0000-0002-5147-4711\")), person(\"Berendea\", \"Nicolae\", role = \"aut\", comment = \"Author of the ColorSpace C++ library\"), person(\"Romain\", \"François\", , \"romain@purrple.cat\", role = \"aut\", comment = c(ORCID = \"0000-0002-2444-4226\")), person(\"Posit, PBC\", role = c(\"cph\", \"fnd\")) )", + "Description": "The encoding of colour can be handled in many different ways, using different colour spaces. As different colour spaces have different uses, efficient conversion between these representations are important. The 'farver' package provides a set of functions that gives access to very fast colour space conversion and comparisons implemented in C++, and offers speed improvements over the 'convertColor' function in the 'grDevices' package.", + "License": "MIT + file LICENSE", + "URL": "https://farver.data-imaginist.com, https://github.com/thomasp85/farver", + "BugReports": "https://github.com/thomasp85/farver/issues", + "Suggests": [ + "covr", + "testthat (>= 3.0.0)" + ], + "Config/testthat/edition": "3", + "Encoding": "UTF-8", + "RoxygenNote": "7.3.1", + "NeedsCompilation": "yes", + "Author": "Thomas Lin Pedersen [cre, aut] (), Berendea Nicolae [aut] (Author of the ColorSpace C++ library), Romain François [aut] (), Posit, PBC [cph, fnd]", + "Maintainer": "Thomas Lin Pedersen ", + "Repository": "https://packagemanager.posit.co/cran/latest" + }, + "fastmap": { + "Package": "fastmap", + "Version": "1.2.0", + "Source": "Repository", + "Title": "Fast Data Structures", + "Authors@R": "c( person(\"Winston\", \"Chang\", email = \"winston@posit.co\", role = c(\"aut\", \"cre\")), person(given = \"Posit Software, PBC\", role = c(\"cph\", \"fnd\")), person(given = \"Tessil\", role = \"cph\", comment = \"hopscotch_map library\") )", + "Description": "Fast implementation of data structures, including a key-value store, stack, and queue. Environments are commonly used as key-value stores in R, but every time a new key is used, it is added to R's global symbol table, causing a small amount of memory leakage. This can be problematic in cases where many different keys are used. Fastmap avoids this memory leak issue by implementing the map using data structures in C++.", + "License": "MIT + file LICENSE", + "Encoding": "UTF-8", + "RoxygenNote": "7.2.3", + "Suggests": [ + "testthat (>= 2.1.1)" + ], + "URL": "https://r-lib.github.io/fastmap/, https://github.com/r-lib/fastmap", + "BugReports": "https://github.com/r-lib/fastmap/issues", + "NeedsCompilation": "yes", + "Author": "Winston Chang [aut, cre], Posit Software, PBC [cph, fnd], Tessil [cph] (hopscotch_map library)", + "Maintainer": "Winston Chang ", + "Repository": "https://packagemanager.posit.co/cran/latest" + }, + "fastmatch": { + "Package": "fastmatch", + "Version": "1.1-8", + "Source": "Repository", + "Title": "Fast 'match()' Function", + "Author": "Simon Urbanek [aut, cre, cph] (https://urbanek.nz, ORCID: )", + "Authors@R": "person(\"Simon\", \"Urbanek\", role=c(\"aut\",\"cre\",\"cph\"), email=\"Simon.Urbanek@r-project.org\", comment=c(\"https://urbanek.nz\", ORCID=\"0000-0003-2297-1732\"))", + "Maintainer": "Simon Urbanek ", + "Description": "Package providing a fast match() replacement for cases that require repeated look-ups. It is slightly faster that R's built-in match() function on first match against a table, but extremely fast on any subsequent lookup as it keeps the hash table in memory.", + "License": "GPL-2", + "Depends": [ + "R (>= 2.3.0)" + ], + "URL": "https://www.rforge.net/fastmatch", + "BugReports": "https://github.com/s-u/fastmatch/issues/", + "NeedsCompilation": "yes", + "Repository": "CRAN" + }, + "fastqcr": { + "Package": "fastqcr", + "Version": "0.1.3", + "Source": "Repository", + "Type": "Package", + "Title": "Quality Control of Sequencing Data", + "Date": "2023-02-18", + "Authors@R": "c( person(\"Alboukadel\", \"Kassambara\", role = c(\"aut\", \"cre\"), email = \"alboukadel.kassambara@gmail.com\") )", + "Description": "'FASTQC' is the most widely used tool for evaluating the quality of high throughput sequencing data. It produces, for each sample, an html report and a compressed file containing the raw data. If you have hundreds of samples, you are not going to open up each 'HTML' page. You need some way of looking at these data in aggregate. 'fastqcr' Provides helper functions to easily parse, aggregate and analyze 'FastQC' reports for large numbers of samples. It provides a convenient solution for building a 'Multi-QC' report, as well as, a 'one-sample' report with result interpretations.", + "License": "GPL-2", + "Encoding": "UTF-8", + "Depends": [ + "R (>= 3.1.2)" + ], + "Imports": [ + "dplyr", + "grid", + "gridExtra", + "ggplot2", + "magrittr", + "readr (>= 1.3.0)", + "rmarkdown (>= 1.4)", + "rvest", + "tibble", + "tidyr", + "scales", + "stats", + "utils", + "xml2", + "rlang" + ], + "Suggests": [ + "knitr" + ], + "URL": "https://rpkgs.datanovia.com/fastqcr/index.html", + "BugReports": "https://github.com/kassambara/fastqcr/issues", + "RoxygenNote": "7.2.3", + "Collate": "'utilities.R' 'fastqc.R' 'fastqc_install.R' 'qc_aggregate.R' 'qc_plot.R' 'qc_plot_collection.R' 'qc_problems.R' 'qc_read.R' 'qc_read_collection.R' 'qc_report.R' 'qc_unzip.R'", + "NeedsCompilation": "no", + "Author": "Alboukadel Kassambara [aut, cre]", + "Maintainer": "Alboukadel Kassambara ", + "Repository": "CRAN" + }, + "fftw": { + "Package": "fftw", + "Version": "1.0-9", + "Source": "Repository", + "Title": "Fast FFT and DCT Based on the FFTW Library", + "Description": "Provides a simple and efficient wrapper around the fastest Fourier transform in the west (FFTW) library .", + "Authors@R": "c( person(\"Olaf\", \"Mersmann\", email=\"olafm@p-value.net\", role=c(\"aut\")), person(\"Sebastian\", \"Krey\", email=\"skrey@statistik.tu-dortmund.de\", role=c(\"ctb\")), person(\"Uwe\", \"Ligges\", email=\"ligges@statistik.tu-dortmund.de\", role=c(\"ctb\", \"cre\")) )", + "Depends": [ + "R (>= 3.0.0)" + ], + "SystemRequirements": "fftw3 (>= 3.1.2)", + "License": "GPL-2", + "RoxygenNote": "6.0.1", + "NeedsCompilation": "yes", + "Author": "Olaf Mersmann [aut], Sebastian Krey [ctb], Uwe Ligges [ctb, cre]", + "Maintainer": "Uwe Ligges ", + "Repository": "CRAN" + }, + "fgsea": { + "Package": "fgsea", + "Version": "1.36.2", + "Source": "Bioconductor", + "Title": "Fast Gene Set Enrichment Analysis", + "Authors@R": "c(person(\"Gennady\", \"Korotkevich\", role = \"aut\"), person(\"Vladimir\", \"Sukhov\", role = \"aut\"), person(\"Nikolay\", \"Budin\", role = \"ctb\"), person(\"Nikita\", \"Gusak\", role = \"ctb\"), person(\"Zieman\", \"Mark\", role = \"ctb\"), person(\"Alexey\", \"Sergushichev\", email = \"alsergbox@gmail.com\", role = c(\"aut\", \"cre\")))", + "Description": "The package implements an algorithm for fast gene set enrichment analysis. Using the fast algorithm allows to make more permutations and get more fine grained p-values, which allows to use accurate stantard approaches to multiple hypothesis correction.", + "biocViews": "GeneExpression, DifferentialExpression, GeneSetEnrichment, Pathways", + "Depends": [ + "R (>= 4.1)" + ], + "Imports": [ + "Rcpp", + "data.table", + "BiocParallel", + "stats", + "ggplot2 (>= 2.2.0)", + "cowplot", + "grid", + "fastmatch", + "Matrix", + "scales", + "utils" + ], + "Suggests": [ + "testthat", + "knitr", + "rmarkdown", + "reactome.db", + "AnnotationDbi", + "parallel", + "org.Mm.eg.db", + "limma", + "GEOquery", + "msigdbr", + "aggregation", + "Seurat" + ], + "License": "MIT + file LICENCE", + "LazyData": "true", + "LinkingTo": [ + "Rcpp", + "BH" + ], + "RoxygenNote": "7.3.2", + "Encoding": "UTF-8", + "VignetteBuilder": "knitr", + "URL": "https://github.com/ctlab/fgsea/", + "BugReports": "https://github.com/ctlab/fgsea/issues", + "Repository": "https://bioc-release.r-universe.dev", + "RemoteUrl": "https://github.com/bioc/fgsea", + "RemoteRef": "RELEASE_3_22", + "RemoteSha": "b7862b78985f52670a13ca46abacb7831e33d5e1", + "NeedsCompilation": "yes", + "Author": "Gennady Korotkevich [aut], Vladimir Sukhov [aut], Nikolay Budin [ctb], Nikita Gusak [ctb], Zieman Mark [ctb], Alexey Sergushichev [aut, cre]", + "Maintainer": "Alexey Sergushichev " + }, + "filelock": { + "Package": "filelock", + "Version": "1.0.3", + "Source": "Repository", + "Title": "Portable File Locking", + "Authors@R": "c( person(\"Gábor\", \"Csárdi\", , \"csardi.gabor@gmail.com\", role = c(\"aut\", \"cre\")), person(\"Posit Software, PBC\", role = c(\"cph\", \"fnd\")) )", + "Description": "Place an exclusive or shared lock on a file. It uses 'LockFile' on Windows and 'fcntl' locks on Unix-like systems.", + "License": "MIT + file LICENSE", + "URL": "https://r-lib.github.io/filelock/, https://github.com/r-lib/filelock", + "BugReports": "https://github.com/r-lib/filelock/issues", + "Depends": [ + "R (>= 3.4)" + ], + "Suggests": [ + "callr (>= 2.0.0)", + "covr", + "testthat (>= 3.0.0)" + ], + "Config/Needs/website": "tidyverse/tidytemplate", + "Config/testthat/edition": "3", + "Encoding": "UTF-8", + "RoxygenNote": "7.2.3", + "NeedsCompilation": "yes", + "Author": "Gábor Csárdi [aut, cre], Posit Software, PBC [cph, fnd]", + "Maintainer": "Gábor Csárdi ", + "Repository": "https://packagemanager.posit.co/cran/latest" + }, + "flexmix": { + "Package": "flexmix", + "Version": "2.3-20", + "Source": "Repository", + "Type": "Package", + "Title": "Flexible Mixture Modeling", + "Authors@R": "c(person(\"Bettina\", \"Gruen\", role = c(\"aut\", \"cre\"), email = \"Bettina.Gruen@R-project.org\", comment = c(ORCID = \"0000-0001-7265-4773\")), person(\"Friedrich\", \"Leisch\", role = \"aut\", comment = c(ORCID = \"0000-0001-7278-1983\")), person(\"Deepayan\", \"Sarkar\", role = \"ctb\", comment = c(ORCID = \"0000-0003-4107-1553\")), person(\"Frederic\", \"Mortier\", role = \"ctb\"), person(\"Nicolas\", \"Picard\", role = \"ctb\", comment = c(ORCID = \"0000-0001-5548-9171\")))", + "Description": "A general framework for finite mixtures of regression models using the EM algorithm is implemented. The E-step and all data handling are provided, while the M-step can be supplied by the user to easily define new models. Existing drivers implement mixtures of standard linear models, generalized linear models and model-based clustering.", + "Depends": [ + "R (>= 2.15.0)", + "lattice" + ], + "Imports": [ + "graphics", + "grid", + "grDevices", + "methods", + "modeltools (>= 0.2-16)", + "nnet", + "stats", + "stats4", + "utils" + ], + "Suggests": [ + "actuar", + "codetools", + "diptest", + "Ecdat", + "ellipse", + "gclus", + "glmnet", + "lme4 (>= 1.1)", + "MASS", + "mgcv (>= 1.8-0)", + "mlbench", + "multcomp", + "mvtnorm", + "SuppDists", + "survival" + ], + "License": "GPL (>= 2)", + "LazyLoad": "yes", + "NeedsCompilation": "no", + "Author": "Bettina Gruen [aut, cre] (), Friedrich Leisch [aut] (), Deepayan Sarkar [ctb] (), Frederic Mortier [ctb], Nicolas Picard [ctb] ()", + "Maintainer": "Bettina Gruen ", + "Repository": "CRAN" + }, + "fontBitstreamVera": { + "Package": "fontBitstreamVera", + "Version": "0.1.1", + "Source": "Repository", + "Title": "Fonts with 'Bitstream Vera Fonts' License", + "Authors@R": "c( person(\"Lionel\", \"Henry\", , \"lionel.hry@gmail.com\", c(\"cre\", \"aut\")), person(\"Bitstream\", role = \"cph\"))", + "Description": "Provides fonts licensed under the 'Bitstream Vera Fonts' license for the 'fontquiver' package.", + "Depends": [ + "R (>= 3.0.0)" + ], + "License": "file LICENCE", + "Encoding": "UTF-8", + "LazyData": "true", + "RoxygenNote": "5.0.1", + "NeedsCompilation": "no", + "Author": "Lionel Henry [cre, aut], Bitstream [cph]", + "Maintainer": "Lionel Henry ", + "License_is_FOSS": "yes", + "Repository": "https://packagemanager.posit.co/cran/latest" + }, + "fontLiberation": { + "Package": "fontLiberation", + "Version": "0.1.0", + "Source": "Repository", + "Title": "Liberation Fonts", + "Authors@R": "c( person(\"Lionel\", \"Henry\", , \"lionel@rstudio.com\", \"cre\"), person(\"Pravin Satpute\", role = \"aut\"), person(\"Steve Matteson\", role = \"aut\"), person(\"Red Hat, Inc\", role = \"cph\"), person(\"Google Corporation\", role = \"cph\"))", + "Description": "A placeholder for the Liberation fontset intended for the `fontquiver` package. This fontset covers the 12 combinations of families (sans, serif, mono) and faces (plain, bold, italic, bold italic) supported in R graphics devices.", + "Depends": [ + "R (>= 3.0)" + ], + "License": "file LICENSE", + "Encoding": "UTF-8", + "LazyData": "true", + "RoxygenNote": "5.0.1", + "NeedsCompilation": "no", + "Author": "Lionel Henry [cre], Pravin Satpute [aut], Steve Matteson [aut], Red Hat, Inc [cph], Google Corporation [cph]", + "Maintainer": "Lionel Henry ", + "Repository": "https://packagemanager.posit.co/cran/latest", + "License_is_FOSS": "yes" + }, + "fontawesome": { + "Package": "fontawesome", + "Version": "0.5.3", + "Source": "Repository", + "Type": "Package", + "Title": "Easily Work with 'Font Awesome' Icons", + "Description": "Easily and flexibly insert 'Font Awesome' icons into 'R Markdown' documents and 'Shiny' apps. These icons can be inserted into HTML content through inline 'SVG' tags or 'i' tags. There is also a utility function for exporting 'Font Awesome' icons as 'PNG' images for those situations where raster graphics are needed.", + "Authors@R": "c( person(\"Richard\", \"Iannone\", , \"rich@posit.co\", c(\"aut\", \"cre\"), comment = c(ORCID = \"0000-0003-3925-190X\")), person(\"Christophe\", \"Dervieux\", , \"cderv@posit.co\", role = \"ctb\", comment = c(ORCID = \"0000-0003-4474-2498\")), person(\"Winston\", \"Chang\", , \"winston@posit.co\", role = \"ctb\"), person(\"Dave\", \"Gandy\", role = c(\"ctb\", \"cph\"), comment = \"Font-Awesome font\"), person(\"Posit Software, PBC\", role = c(\"cph\", \"fnd\")) )", + "License": "MIT + file LICENSE", + "URL": "https://github.com/rstudio/fontawesome, https://rstudio.github.io/fontawesome/", + "BugReports": "https://github.com/rstudio/fontawesome/issues", + "Encoding": "UTF-8", + "ByteCompile": "true", + "RoxygenNote": "7.3.2", + "Depends": [ + "R (>= 3.3.0)" + ], + "Imports": [ + "rlang (>= 1.0.6)", + "htmltools (>= 0.5.1.1)" + ], + "Suggests": [ + "covr", + "dplyr (>= 1.0.8)", + "gt (>= 0.9.0)", + "knitr (>= 1.31)", + "testthat (>= 3.0.0)", + "rsvg" + ], + "Config/testthat/edition": "3", + "NeedsCompilation": "no", + "Author": "Richard Iannone [aut, cre] (), Christophe Dervieux [ctb] (), Winston Chang [ctb], Dave Gandy [ctb, cph] (Font-Awesome font), Posit Software, PBC [cph, fnd]", + "Maintainer": "Richard Iannone ", + "Repository": "https://packagemanager.posit.co/cran/latest" + }, + "fontquiver": { + "Package": "fontquiver", + "Version": "0.2.1", + "Source": "Repository", + "Title": "Set of Installed Fonts", + "Authors@R": "c( person(\"Lionel\", \"Henry\", , \"lionel@rstudio.com\", c(\"cre\", \"aut\")), person(\"RStudio\", role = \"cph\"), person(\"George Douros\", role = \"cph\", comment = \"Symbola font\"))", + "Description": "Provides a set of fonts with permissive licences. This is useful when you want to avoid system fonts to make sure your outputs are reproducible.", + "Depends": [ + "R (>= 3.0.0)" + ], + "Imports": [ + "fontBitstreamVera (>= 0.1.0)", + "fontLiberation (>= 0.1.0)" + ], + "Suggests": [ + "testthat", + "htmltools" + ], + "License": "GPL-3 | file LICENSE", + "Encoding": "UTF-8", + "LazyData": "true", + "RoxygenNote": "5.0.1", + "Collate": "'font-getters.R' 'fontset.R' 'fontset-bitstream-vera.R' 'fontset-dejavu.R' 'fontset-liberation.R' 'fontset-symbola.R' 'html-dependency.R' 'utils.R'", + "NeedsCompilation": "no", + "Author": "Lionel Henry [cre, aut], RStudio [cph], George Douros [cph] (Symbola font)", + "Maintainer": "Lionel Henry ", + "Repository": "https://packagemanager.posit.co/cran/latest" + }, + "forcats": { + "Package": "forcats", + "Version": "1.0.1", + "Source": "Repository", + "Title": "Tools for Working with Categorical Variables (Factors)", + "Authors@R": "c( person(\"Hadley\", \"Wickham\", , \"hadley@posit.co\", role = c(\"aut\", \"cre\")), person(\"Posit Software, PBC\", role = c(\"cph\", \"fnd\"), comment = c(ROR = \"03wc8by49\")) )", + "Description": "Helpers for reordering factor levels (including moving specified levels to front, ordering by first appearance, reversing, and randomly shuffling), and tools for modifying factor levels (including collapsing rare levels into other, 'anonymising', and manually 'recoding').", + "License": "MIT + file LICENSE", + "URL": "https://forcats.tidyverse.org/, https://github.com/tidyverse/forcats", + "BugReports": "https://github.com/tidyverse/forcats/issues", + "Depends": [ + "R (>= 4.1)" + ], + "Imports": [ + "cli (>= 3.4.0)", + "glue", + "lifecycle", + "magrittr", + "rlang (>= 1.0.0)", + "tibble" + ], + "Suggests": [ + "covr", + "dplyr", + "ggplot2", + "knitr", + "readr", + "rmarkdown", + "testthat (>= 3.0.0)", + "withr" + ], + "VignetteBuilder": "knitr", + "Config/Needs/website": "tidyverse/tidytemplate", + "Config/testthat/edition": "3", + "Encoding": "UTF-8", + "LazyData": "true", + "RoxygenNote": "7.3.3", + "NeedsCompilation": "no", + "Author": "Hadley Wickham [aut, cre], Posit Software, PBC [cph, fnd] (ROR: )", + "Maintainer": "Hadley Wickham ", + "Repository": "CRAN" + }, + "foreach": { + "Package": "foreach", + "Version": "1.5.2", + "Source": "Repository", + "Type": "Package", + "Title": "Provides Foreach Looping Construct", + "Authors@R": "c(person(\"Folashade\", \"Daniel\", role=\"cre\", email=\"fdaniel@microsoft.com\"), person(\"Hong\", \"Ooi\", role=\"ctb\"), person(\"Rich\", \"Calaway\", role=\"ctb\"), person(\"Microsoft\", role=c(\"aut\", \"cph\")), person(\"Steve\", \"Weston\", role=\"aut\"))", + "Description": "Support for the foreach looping construct. Foreach is an idiom that allows for iterating over elements in a collection, without the use of an explicit loop counter. This package in particular is intended to be used for its return value, rather than for its side effects. In that sense, it is similar to the standard lapply function, but doesn't require the evaluation of a function. Using foreach without side effects also facilitates executing the loop in parallel.", + "License": "Apache License (== 2.0)", + "URL": "https://github.com/RevolutionAnalytics/foreach", + "BugReports": "https://github.com/RevolutionAnalytics/foreach/issues", + "Depends": [ + "R (>= 2.5.0)" + ], + "Imports": [ + "codetools", + "utils", + "iterators" + ], + "Suggests": [ + "randomForest", + "doMC", + "doParallel", + "testthat", + "knitr", + "rmarkdown" + ], + "VignetteBuilder": "knitr", + "RoxygenNote": "7.1.1", + "Collate": "'callCombine.R' 'foreach.R' 'do.R' 'foreach-ext.R' 'foreach-pkg.R' 'getDoPar.R' 'getDoSeq.R' 'getsyms.R' 'iter.R' 'nextElem.R' 'onLoad.R' 'setDoPar.R' 'setDoSeq.R' 'times.R' 'utils.R'", + "NeedsCompilation": "no", + "Author": "Folashade Daniel [cre], Hong Ooi [ctb], Rich Calaway [ctb], Microsoft [aut, cph], Steve Weston [aut]", + "Maintainer": "Folashade Daniel ", + "Repository": "RSPM", + "Encoding": "UTF-8" + }, + "formatR": { + "Package": "formatR", + "Version": "1.14", + "Source": "Repository", + "Type": "Package", + "Title": "Format R Code Automatically", + "Authors@R": "c( person(\"Yihui\", \"Xie\", role = c(\"aut\", \"cre\"), email = \"xie@yihui.name\", comment = c(ORCID = \"0000-0003-0645-5666\")), person(\"Ed\", \"Lee\", role = \"ctb\"), person(\"Eugene\", \"Ha\", role = \"ctb\"), person(\"Kohske\", \"Takahashi\", role = \"ctb\"), person(\"Pavel\", \"Krivitsky\", role = \"ctb\"), person() )", + "Description": "Provides a function tidy_source() to format R source code. Spaces and indent will be added to the code automatically, and comments will be preserved under certain conditions, so that R code will be more human-readable and tidy. There is also a Shiny app as a user interface in this package (see tidy_app()).", + "Depends": [ + "R (>= 3.2.3)" + ], + "Suggests": [ + "rstudioapi", + "shiny", + "testit", + "rmarkdown", + "knitr" + ], + "License": "GPL", + "URL": "https://github.com/yihui/formatR", + "BugReports": "https://github.com/yihui/formatR/issues", + "VignetteBuilder": "knitr", + "RoxygenNote": "7.2.3", + "Encoding": "UTF-8", + "NeedsCompilation": "no", + "Author": "Yihui Xie [aut, cre] (), Ed Lee [ctb], Eugene Ha [ctb], Kohske Takahashi [ctb], Pavel Krivitsky [ctb]", + "Maintainer": "Yihui Xie ", + "Repository": "https://packagemanager.posit.co/cran/latest" + }, + "fs": { + "Package": "fs", + "Version": "1.6.6", + "Source": "Repository", + "Title": "Cross-Platform File System Operations Based on 'libuv'", + "Authors@R": "c( person(\"Jim\", \"Hester\", role = \"aut\"), person(\"Hadley\", \"Wickham\", , \"hadley@posit.co\", role = \"aut\"), person(\"Gábor\", \"Csárdi\", , \"csardi.gabor@gmail.com\", role = c(\"aut\", \"cre\")), person(\"libuv project contributors\", role = \"cph\", comment = \"libuv library\"), person(\"Joyent, Inc. and other Node contributors\", role = \"cph\", comment = \"libuv library\"), person(\"Posit Software, PBC\", role = c(\"cph\", \"fnd\")) )", + "Description": "A cross-platform interface to file system operations, built on top of the 'libuv' C library.", + "License": "MIT + file LICENSE", + "URL": "https://fs.r-lib.org, https://github.com/r-lib/fs", + "BugReports": "https://github.com/r-lib/fs/issues", + "Depends": [ + "R (>= 3.6)" + ], + "Imports": [ + "methods" + ], + "Suggests": [ + "covr", + "crayon", + "knitr", + "pillar (>= 1.0.0)", + "rmarkdown", + "spelling", + "testthat (>= 3.0.0)", + "tibble (>= 1.1.0)", + "vctrs (>= 0.3.0)", + "withr" + ], + "VignetteBuilder": "knitr", + "ByteCompile": "true", + "Config/Needs/website": "tidyverse/tidytemplate", + "Config/testthat/edition": "3", + "Copyright": "file COPYRIGHTS", + "Encoding": "UTF-8", + "Language": "en-US", + "RoxygenNote": "7.2.3", + "SystemRequirements": "GNU make", + "NeedsCompilation": "yes", + "Author": "Jim Hester [aut], Hadley Wickham [aut], Gábor Csárdi [aut, cre], libuv project contributors [cph] (libuv library), Joyent, Inc. and other Node contributors [cph] (libuv library), Posit Software, PBC [cph, fnd]", + "Maintainer": "Gábor Csárdi ", + "Repository": "https://packagemanager.posit.co/cran/latest" + }, + "futile.logger": { + "Package": "futile.logger", + "Version": "1.4.9", + "Source": "Repository", + "Type": "Package", + "Title": "A Logging Utility for R", + "Date": "2025-12-22", + "Maintainer": "Brian Lee Yung Rowe ", + "Authors@R": "person(given=c(\"Brian\", \"Lee\", \"Yung\"), family=\"Rowe\", role=c(\"aut\", \"cre\"), email=\"r@zatonovo.com\")", + "Depends": [ + "R (>= 3.0.0)" + ], + "Imports": [ + "utils", + "lambda.r (>= 1.1.0)", + "futile.options" + ], + "Suggests": [ + "testit", + "jsonlite", + "httr", + "crayon", + "rsyslog", + "glue" + ], + "Description": "Provides a simple yet powerful logging utility. Based loosely on log4j, futile.logger takes advantage of R idioms to make logging a convenient and easy to use replacement for cat and print statements.", + "License": "LGPL-3", + "LazyLoad": "yes", + "NeedsCompilation": "no", + "ByteCompile": "yes", + "Collate": "'options.R' 'appender.R' 'constants.R' 'layout.R' 'logger.R' 'scat.R' 'util.R' 'futile.logger-package.R'", + "RoxygenNote": "7.1.2", + "URL": "https://github.com/zatonovo/futile.logger", + "Author": "Brian Lee Yung Rowe [aut, cre]", + "Repository": "CRAN" + }, + "futile.options": { + "Package": "futile.options", + "Version": "1.0.1", + "Source": "Repository", + "Type": "Package", + "Title": "Futile Options Management", + "Date": "2018-04-20", + "Author": "Brian Lee Yung Rowe", + "Maintainer": "Brian Lee Yung Rowe ", + "Depends": [ + "R (>= 2.8.0)" + ], + "Description": "A scoped options management framework. Used in other packages.", + "License": "LGPL-3", + "LazyLoad": "yes", + "NeedsCompilation": "no", + "Repository": "https://packagemanager.posit.co/cran/latest", + "Encoding": "UTF-8" + }, + "gargle": { + "Package": "gargle", + "Version": "1.6.0", + "Source": "Repository", + "Title": "Utilities for Working with Google APIs", + "Authors@R": "c( person(\"Jennifer\", \"Bryan\", , \"jenny@posit.co\", role = c(\"aut\", \"cre\"), comment = c(ORCID = \"0000-0002-6983-2759\")), person(\"Craig\", \"Citro\", , \"craigcitro@google.com\", role = \"aut\"), person(\"Hadley\", \"Wickham\", , \"hadley@posit.co\", role = \"aut\", comment = c(ORCID = \"0000-0003-4757-117X\")), person(\"Google Inc\", role = \"cph\"), person(\"Posit Software, PBC\", role = c(\"cph\", \"fnd\")) )", + "Description": "Provides utilities for working with Google APIs . This includes functions and classes for handling common credential types and for preparing, executing, and processing HTTP requests.", + "License": "MIT + file LICENSE", + "URL": "https://gargle.r-lib.org, https://github.com/r-lib/gargle", + "BugReports": "https://github.com/r-lib/gargle/issues", + "Depends": [ + "R (>= 3.6)" + ], + "Imports": [ + "cli (>= 3.0.1)", + "fs (>= 1.3.1)", + "glue (>= 1.3.0)", + "httr (>= 1.4.5)", + "jsonlite", + "lifecycle (>= 0.2.0)", + "openssl", + "rappdirs", + "rlang (>= 1.1.0)", + "stats", + "utils", + "withr" + ], + "Suggests": [ + "aws.ec2metadata", + "aws.signature", + "covr", + "httpuv", + "knitr", + "rmarkdown", + "sodium", + "spelling", + "testthat (>= 3.1.7)" + ], + "VignetteBuilder": "knitr", + "Config/Needs/website": "tidyverse/tidytemplate", + "Config/testthat/edition": "3", + "Encoding": "UTF-8", + "Language": "en-US", + "RoxygenNote": "7.3.2.9000", + "NeedsCompilation": "no", + "Author": "Jennifer Bryan [aut, cre] (ORCID: ), Craig Citro [aut], Hadley Wickham [aut] (ORCID: ), Google Inc [cph], Posit Software, PBC [cph, fnd]", + "Maintainer": "Jennifer Bryan ", + "Repository": "CRAN" + }, + "gdtools": { + "Package": "gdtools", + "Version": "0.4.4", + "Source": "Repository", + "Title": "Utilities for Graphical Rendering and Fonts Management", + "Authors@R": "c( person(\"David\", \"Gohel\", , \"david.gohel@ardata.fr\", role = c(\"aut\", \"cre\")), person(\"Hadley\", \"Wickham\", , \"hadley@rstudio.com\", role = \"aut\"), person(\"Lionel\", \"Henry\", , \"lionel@rstudio.com\", role = \"aut\"), person(\"Jeroen\", \"Ooms\", , \"jeroen@berkeley.edu\", role = \"aut\", comment = c(ORCID = \"0000-0002-4035-0289\")), person(\"Yixuan\", \"Qiu\", role = \"ctb\"), person(\"R Core Team\", role = \"cph\", comment = \"Cairo code from X11 device\"), person(\"ArData\", role = \"cph\"), person(\"RStudio\", role = \"cph\") )", + "Description": "Tools are provided to compute metrics of formatted strings and to check the availability of a font. Another set of functions is provided to support the collection of fonts from 'Google Fonts' in a cache. Their use is simple within 'R Markdown' documents and 'shiny' applications but also with graphic productions generated with the 'ggiraph', 'ragg' and 'svglite' packages or with tabular productions from the 'flextable' package.", + "License": "GPL-3 | file LICENSE", + "URL": "https://davidgohel.github.io/gdtools/", + "BugReports": "https://github.com/davidgohel/gdtools/issues", + "Depends": [ + "R (>= 4.0.0)" + ], + "Imports": [ + "fontquiver (>= 0.2.0)", + "htmltools", + "Rcpp (>= 0.12.12)", + "systemfonts (>= 1.3.1)", + "tools" + ], + "Suggests": [ + "curl", + "gfonts", + "methods", + "testthat" + ], + "LinkingTo": [ + "Rcpp" + ], + "Encoding": "UTF-8", + "RoxygenNote": "7.3.3", + "SystemRequirements": "cairo, freetype2, fontconfig", + "NeedsCompilation": "yes", + "Author": "David Gohel [aut, cre], Hadley Wickham [aut], Lionel Henry [aut], Jeroen Ooms [aut] (ORCID: ), Yixuan Qiu [ctb], R Core Team [cph] (Cairo code from X11 device), ArData [cph], RStudio [cph]", + "Maintainer": "David Gohel ", + "Repository": "CRAN" + }, + "generics": { + "Package": "generics", + "Version": "0.1.4", + "Source": "Repository", + "Title": "Common S3 Generics not Provided by Base R Methods Related to Model Fitting", + "Authors@R": "c( person(\"Hadley\", \"Wickham\", , \"hadley@posit.co\", role = c(\"aut\", \"cre\"), comment = c(ORCID = \"0000-0003-4757-117X\")), person(\"Max\", \"Kuhn\", , \"max@posit.co\", role = \"aut\"), person(\"Davis\", \"Vaughan\", , \"davis@posit.co\", role = \"aut\"), person(\"Posit Software, PBC\", role = c(\"cph\", \"fnd\"), comment = c(ROR = \"https://ror.org/03wc8by49\")) )", + "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.6)" + ], + "Imports": [ + "methods" + ], + "Suggests": [ + "covr", + "pkgload", + "testthat (>= 3.0.0)", + "tibble", + "withr" + ], + "Config/Needs/website": "tidyverse/tidytemplate", + "Config/testthat/edition": "3", + "Encoding": "UTF-8", + "RoxygenNote": "7.3.2", + "NeedsCompilation": "no", + "Author": "Hadley Wickham [aut, cre] (ORCID: ), Max Kuhn [aut], Davis Vaughan [aut], Posit Software, PBC [cph, fnd] (ROR: )", + "Maintainer": "Hadley Wickham ", + "Repository": "https://packagemanager.posit.co/cran/latest" + }, + "getopt": { + "Package": "getopt", + "Version": "1.20.4", + "Source": "Repository", + "Encoding": "UTF-8", + "Type": "Package", + "Title": "C-Like 'getopt' Behavior", + "Authors@R": "c(person(\"Trevor L\", \"Davis\", role=c(\"aut\", \"cre\"), email=\"trevor.l.davis@gmail.com\", comment = c(ORCID = \"0000-0001-6341-4639\")), person(\"Allen\", \"Day\", role=\"aut\", comment=\"Original package author\"), person(\"Roman\", \"Zenka\", role=\"ctb\"))", + "URL": "https://github.com/trevorld/r-getopt", + "Imports": [ + "stats" + ], + "BugReports": "https://github.com/trevorld/r-getopt/issues", + "Description": "Package designed to be used with Rscript to write '#!' shebang scripts that accept short and long flags/options. Many users will prefer using instead the packages optparse or argparse which add extra features like automatically generated help option and usage, support for default values, positional argument support, etc.", + "License": "GPL (>= 2)", + "Suggests": [ + "testthat" + ], + "RoxygenNote": "7.2.3", + "Config/testthat/edition": "3", + "NeedsCompilation": "no", + "Author": "Trevor L Davis [aut, cre] (), Allen Day [aut] (Original package author), Roman Zenka [ctb]", + "Maintainer": "Trevor L Davis ", + "Repository": "CRAN" + }, + "ggbeeswarm": { + "Package": "ggbeeswarm", + "Version": "0.7.3", + "Source": "Repository", + "Type": "Package", + "Title": "Categorical Scatter (Violin Point) Plots", + "Date": "2025-11-28", + "Authors@R": "c( person(given=\"Erik\", family=\"Clarke\", role=c(\"aut\", \"cre\"), email=\"erikclarke@gmail.com\"), person(given=\"Scott\", family=\"Sherrill-Mix\", role=c(\"aut\"), email=\"sherrillmix@gmail.com\"), person(given=\"Charlotte\", family=\"Dawson\", role=c(\"aut\"), email=\"csdaw@outlook.com\"))", + "Description": "Provides two methods of plotting categorical scatter plots such that the arrangement of points within a category reflects the density of data at that region, and avoids over-plotting.", + "URL": "https://github.com/eclarke/ggbeeswarm", + "BugReports": "https://github.com/eclarke/ggbeeswarm/issues", + "Encoding": "UTF-8", + "License": "GPL (>= 3)", + "Depends": [ + "R (>= 3.5.0)", + "ggplot2 (>= 3.3.0)" + ], + "Imports": [ + "beeswarm", + "lifecycle", + "vipor", + "cli" + ], + "Suggests": [ + "gridExtra" + ], + "RoxygenNote": "7.3.3", + "NeedsCompilation": "no", + "Author": "Erik Clarke [aut, cre], Scott Sherrill-Mix [aut], Charlotte Dawson [aut]", + "Maintainer": "Erik Clarke ", + "Repository": "CRAN" + }, + "ggforce": { + "Package": "ggforce", + "Version": "0.5.0", + "Source": "Repository", + "Type": "Package", + "Title": "Accelerating 'ggplot2'", + "Authors@R": "c(person(given = \"Thomas Lin\", family = \"Pedersen\", role = c(\"cre\", \"aut\"), email = \"thomasp85@gmail.com\", comment = c(ORCID = \"0000-0002-5147-4711\")), person(\"RStudio\", role = \"cph\"))", + "Maintainer": "Thomas Lin Pedersen ", + "Description": "The aim of 'ggplot2' is to aid in visual data investigations. This focus has led to a lack of facilities for composing specialised plots. 'ggforce' aims to be a collection of mainly new stats and geoms that fills this gap. All additional functionality is aimed to come through the official extension system so using 'ggforce' should be a stable experience.", + "URL": "https://ggforce.data-imaginist.com, https://github.com/thomasp85/ggforce", + "BugReports": "https://github.com/thomasp85/ggforce/issues", + "License": "MIT + file LICENSE", + "Encoding": "UTF-8", + "Depends": [ + "ggplot2 (>= 3.5.0)", + "R (>= 3.3.0)" + ], + "Imports": [ + "grid", + "scales", + "MASS", + "tweenr (>= 0.1.5)", + "gtable", + "rlang", + "polyclip", + "stats", + "grDevices", + "tidyselect", + "withr", + "utils", + "lifecycle", + "cli", + "vctrs", + "systemfonts" + ], + "RoxygenNote": "7.3.2", + "LinkingTo": [ + "cpp11" + ], + "Suggests": [ + "sessioninfo", + "deldir", + "latex2exp", + "reshape2", + "units (>= 0.8.0)", + "covr" + ], + "Collate": "'aaa.R' 'shape.R' 'arc_bar.R' 'arc.R' 'autodensity.R' 'autohistogram.R' 'autopoint.R' 'bezier.R' 'bspline.R' 'bspline_closed.R' 'circle.R' 'concaveman.R' 'cpp11.R' 'diagonal.R' 'diagonal_wide.R' 'ellipse.R' 'errorbar.R' 'facet_grid_paginate.R' 'facet_matrix.R' 'facet_row.R' 'facet_stereo.R' 'facet_wrap_paginate.R' 'facet_zoom.R' 'ggforce-package.R' 'ggproto-classes.R' 'interpolate.R' 'labeller.R' 'link.R' 'mark_circle.R' 'mark_ellipse.R' 'mark_hull.R' 'mark_label.R' 'mark_rect.R' 'parallel_sets.R' 'position-jitternormal.R' 'position_auto.R' 'position_floatstack.R' 'regon.R' 'scale-depth.R' 'scale-unit.R' 'sina.R' 'spiro.R' 'themes.R' 'trans.R' 'trans_linear.R' 'utilities.R' 'voronoi.R' 'zzz.R'", + "NeedsCompilation": "yes", + "Author": "Thomas Lin Pedersen [cre, aut] (ORCID: ), RStudio [cph]", + "Repository": "https://packagemanager.posit.co/cran/latest" + }, + "ggfun": { + "Package": "ggfun", + "Version": "0.2.0", + "Source": "Repository", + "Title": "Miscellaneous Functions for 'ggplot2'", + "Authors@R": "c( person(\"Guangchuang\", \"Yu\", email = \"guangchuangyu@gmail.com\", role = c(\"aut\", \"cre\", \"cph\"), comment = c(ORCID = \"0000-0002-6485-8781\")), person(\"Shuangbin\", \"Xu\", email = \"xshuangbin@163.com\", role = \"aut\", comment = c(ORCID=\"0000-0003-3513-5362\")) )", + "Description": "Useful functions and utilities for 'ggplot' object (e.g., geometric layers, themes, and utilities to edit the object).", + "Depends": [ + "R (>= 4.2.0)" + ], + "Imports": [ + "cli", + "dplyr", + "ggplot2", + "grid", + "rlang", + "scales", + "utils", + "yulab.utils (>= 0.1.6)" + ], + "Suggests": [ + "ggplotify", + "knitr", + "rmarkdown", + "prettydoc", + "tidyr", + "ggnewscale" + ], + "VignetteBuilder": "knitr", + "ByteCompile": "true", + "License": "Artistic-2.0", + "Encoding": "UTF-8", + "URL": "https://github.com/YuLab-SMU/ggfun", + "BugReports": "https://github.com/YuLab-SMU/ggfun/issues", + "RoxygenNote": "7.3.2", + "NeedsCompilation": "no", + "Author": "Guangchuang Yu [aut, cre, cph] (ORCID: ), Shuangbin Xu [aut] (ORCID: )", + "Maintainer": "Guangchuang Yu ", + "Repository": "https://packagemanager.posit.co/cran/latest" + }, + "ggiraph": { + "Package": "ggiraph", + "Version": "0.9.3", + "Source": "Repository", + "Type": "Package", + "Title": "Make 'ggplot2' Graphics Interactive", + "Authors@R": "c( person(\"David\", \"Gohel\", , \"david.gohel@ardata.fr\", role = c(\"aut\", \"cre\")), person(\"Panagiotis\", \"Skintzos\", , \"sigmapi@posteo.net\", role = \"aut\"), person(\"Mike\", \"Bostock\", role = \"cph\", comment = \"d3.js\"), person(\"Speros\", \"Kokenes\", role = \"cph\", comment = \"d3-lasso\"), person(\"Eric\", \"Shull\", role = \"cph\", comment = \"saveSvgAsPng js library\"), person(\"Lee\", \"Thomason\", role = \"cph\", comment = \"TinyXML2\"), person(\"Vladimir\", \"Agafonkin\", role = \"cph\", comment = \"Flatbush\"), person(\"Eric\", \"Book\", role = \"ctb\", comment = \"hline and vline geoms\") )", + "Description": "Create interactive 'ggplot2' graphics using 'htmlwidgets'.", + "License": "GPL-3", + "URL": "https://davidgohel.github.io/ggiraph/", + "BugReports": "https://github.com/davidgohel/ggiraph/issues", + "Imports": [ + "cli", + "dplyr", + "gdtools (>= 0.4.4)", + "ggplot2 (>= 4.0.0)", + "grid", + "htmltools", + "htmlwidgets (>= 1.5)", + "purrr", + "Rcpp (>= 1.1.0)", + "rlang", + "S7 (>= 0.2.0)", + "stats", + "systemfonts (>= 1.3.1)", + "vctrs" + ], + "Suggests": [ + "ggbeeswarm", + "ggrepel (>= 0.9.1)", + "hexbin", + "knitr", + "maps", + "quantreg", + "rmarkdown", + "sf (>= 1.0)", + "shiny", + "tinytest", + "xml2 (>= 1.0)" + ], + "LinkingTo": [ + "Rcpp", + "systemfonts" + ], + "VignetteBuilder": "knitr", + "Copyright": "See file COPYRIGHTS.", + "Encoding": "UTF-8", + "RoxygenNote": "7.3.3", + "SystemRequirements": "libpng", + "Collate": "'RcppExports.R' 'ipar.R' 'utils_ggplot2_performance.R' 'utils_ggplot2.R' 'utils.R' 'annotate_interactive.R' 'annotation_raster_interactive.R' 'utils_css.R' 'fonts.R' 'girafe_options.R' 'default.R' 'dsvg.R' 'dsvg_view.R' 'element_interactive.R' 'facet_interactive.R' 'geom_abline_interactive.R' 'geom_path_interactive.R' 'geom_polygon_interactive.R' 'geom_rect_interactive.R' 'geom_bar_interactive.R' 'geom_bin_2d_interactive.R' 'geom_boxplot_interactive.R' 'geom_col_interactive.R' 'geom_contour_interactive.R' 'geom_count_interactive.R' 'geom_crossbar_interactive.R' 'geom_curve_interactive.R' 'geom_density_2d_interactive.R' 'geom_density_interactive.R' 'geom_dotplot_interactive.R' 'geom_errorbar_interactive.R' 'geom_errorbarh_interactive.R' 'geom_freqpoly_interactive.R' 'geom_hex_interactive.R' 'geom_histogram_interactive.R' 'geom_hline_interactive.R' 'geom_jitter_interactive.R' 'geom_label_interactive.R' 'geom_linerange_interactive.R' 'geom_map_interactive.R' 'geom_point_interactive.R' 'geom_pointrange_interactive.R' 'geom_quantile_interactive.R' 'geom_quasirandom_interactive.R' 'geom_raster_interactive.R' 'geom_ribbon_interactive.R' 'geom_segment_interactive.R' 'geom_sf_interactive.R' 'geom_smooth_interactive.R' 'geom_spoke_interactive.R' 'geom_text_interactive.R' 'geom_text_repel_interactive.R' 'geom_tile_interactive.R' 'geom_violin_interactive.R' 'geom_vline_interactive.R' 'ggiraph.R' 'girafe.R' 'grob_interactive.R' 'guide_bins_interactive.R' 'guide_colourbar_interactive.R' 'guide_coloursteps_interactive.R' 'guide_interactive.R' 'guide_legend_interactive.R' 'interactive_circle_grob.R' 'interactive_curve_grob.R' 'interactive_path_grob.R' 'interactive_points_grob.R' 'interactive_polygon_grob.R' 'interactive_polyline_grob.R' 'interactive_raster_grob.R' 'interactive_rect_grob.R' 'interactive_roundrect_grob.R' 'interactive_segments_grob.R' 'interactive_text_grob.R' 'labeller_interactive.R' 'layer_interactive.R' 'scale_alpha_interactive.R' 'scale_brewer_interactive.R' 'scale_colour_interactive.R' 'scale_gradient_interactive.R' 'scale_interactive.R' 'scale_linetype_interactive.R' 'scale_manual_interactive.R' 'scale_shape_interactive.R' 'scale_size_interactive.R' 'scale_steps_interactive.R' 'scale_viridis_interactive.R' 'tracers.R' 'utils_data.r'", + "NeedsCompilation": "yes", + "Author": "David Gohel [aut, cre], Panagiotis Skintzos [aut], Mike Bostock [cph] (d3.js), Speros Kokenes [cph] (d3-lasso), Eric Shull [cph] (saveSvgAsPng js library), Lee Thomason [cph] (TinyXML2), Vladimir Agafonkin [cph] (Flatbush), Eric Book [ctb] (hline and vline geoms)", + "Maintainer": "David Gohel ", + "Repository": "CRAN" + }, + "ggnewscale": { + "Package": "ggnewscale", + "Version": "0.5.2", + "Source": "Repository", + "Language": "en-GB", + "Title": "Multiple Fill and Colour Scales in 'ggplot2'", + "Authors@R": "person(given = \"Elio\", family = \"Campitelli\", role = c(\"cre\", \"aut\"), email = \"eliocampitelli@gmail.com\", comment = c(ORCID = \"0000-0002-7742-9230\"))", + "Description": "Use multiple fill and colour scales in 'ggplot2'.", + "License": "GPL-3", + "URL": "https://eliocamp.github.io/ggnewscale/, https://github.com/eliocamp/ggnewscale", + "BugReports": "https://github.com/eliocamp/ggnewscale/issues", + "Encoding": "UTF-8", + "Imports": [ + "ggplot2 (>= 3.5.0)" + ], + "RoxygenNote": "7.3.2", + "Suggests": [ + "testthat", + "vdiffr", + "covr" + ], + "NeedsCompilation": "no", + "Author": "Elio Campitelli [cre, aut] (ORCID: )", + "Maintainer": "Elio Campitelli ", + "Repository": "RSPM" + }, + "ggplot2": { + "Package": "ggplot2", + "Version": "4.0.1", + "Source": "Repository", + "Title": "Create Elegant Data Visualisations Using the Grammar of Graphics", + "Authors@R": "c( person(\"Hadley\", \"Wickham\", , \"hadley@posit.co\", role = \"aut\", comment = c(ORCID = \"0000-0003-4757-117X\")), person(\"Winston\", \"Chang\", role = \"aut\", comment = c(ORCID = \"0000-0002-1576-2126\")), person(\"Lionel\", \"Henry\", role = \"aut\"), person(\"Thomas Lin\", \"Pedersen\", , \"thomas.pedersen@posit.co\", role = c(\"aut\", \"cre\"), comment = c(ORCID = \"0000-0002-5147-4711\")), person(\"Kohske\", \"Takahashi\", role = \"aut\"), person(\"Claus\", \"Wilke\", role = \"aut\", comment = c(ORCID = \"0000-0002-7470-9261\")), person(\"Kara\", \"Woo\", role = \"aut\", comment = c(ORCID = \"0000-0002-5125-4188\")), person(\"Hiroaki\", \"Yutani\", role = \"aut\", comment = c(ORCID = \"0000-0002-3385-7233\")), person(\"Dewey\", \"Dunnington\", role = \"aut\", comment = c(ORCID = \"0000-0002-9415-4582\")), person(\"Teun\", \"van den Brand\", role = \"aut\", comment = c(ORCID = \"0000-0002-9335-7468\")), person(\"Posit, PBC\", role = c(\"cph\", \"fnd\"), comment = c(ROR = \"03wc8by49\")) )", + "Description": "A system for 'declaratively' creating graphics, based on \"The Grammar of Graphics\". You provide the data, tell 'ggplot2' how to map variables to aesthetics, what graphical primitives to use, and it takes care of the details.", + "License": "MIT + file LICENSE", + "URL": "https://ggplot2.tidyverse.org, https://github.com/tidyverse/ggplot2", + "BugReports": "https://github.com/tidyverse/ggplot2/issues", + "Depends": [ + "R (>= 4.1)" + ], + "Imports": [ + "cli", + "grDevices", + "grid", + "gtable (>= 0.3.6)", + "isoband", + "lifecycle (> 1.0.1)", + "rlang (>= 1.1.0)", + "S7", + "scales (>= 1.4.0)", + "stats", + "vctrs (>= 0.6.0)", + "withr (>= 2.5.0)" + ], + "Suggests": [ + "broom", + "covr", + "dplyr", + "ggplot2movies", + "hexbin", + "Hmisc", + "hms", + "knitr", + "mapproj", + "maps", + "MASS", + "mgcv", + "multcomp", + "munsell", + "nlme", + "profvis", + "quantreg", + "quarto", + "ragg (>= 1.2.6)", + "RColorBrewer", + "roxygen2", + "rpart", + "sf (>= 0.7-3)", + "svglite (>= 2.1.2)", + "testthat (>= 3.1.5)", + "tibble", + "vdiffr (>= 1.0.6)", + "xml2" + ], + "Enhances": [ + "sp" + ], + "VignetteBuilder": "quarto", + "Config/Needs/website": "ggtext, tidyr, forcats, tidyverse/tidytemplate", + "Config/testthat/edition": "3", + "Config/usethis/last-upkeep": "2025-04-23", + "Encoding": "UTF-8", + "LazyData": "true", + "RoxygenNote": "7.3.3", + "Collate": "'ggproto.R' 'ggplot-global.R' 'aaa-.R' 'aes-colour-fill-alpha.R' 'aes-evaluation.R' 'aes-group-order.R' 'aes-linetype-size-shape.R' 'aes-position.R' 'all-classes.R' 'compat-plyr.R' 'utilities.R' 'aes.R' 'annotation-borders.R' 'utilities-checks.R' 'legend-draw.R' 'geom-.R' 'annotation-custom.R' 'annotation-logticks.R' 'scale-type.R' 'layer.R' 'make-constructor.R' 'geom-polygon.R' 'geom-map.R' 'annotation-map.R' 'geom-raster.R' 'annotation-raster.R' 'annotation.R' 'autolayer.R' 'autoplot.R' 'axis-secondary.R' 'backports.R' 'bench.R' 'bin.R' 'coord-.R' 'coord-cartesian-.R' 'coord-fixed.R' 'coord-flip.R' 'coord-map.R' 'coord-munch.R' 'coord-polar.R' 'coord-quickmap.R' 'coord-radial.R' 'coord-sf.R' 'coord-transform.R' 'data.R' 'docs_layer.R' 'facet-.R' 'facet-grid-.R' 'facet-null.R' 'facet-wrap.R' 'fortify-map.R' 'fortify-models.R' 'fortify-spatial.R' 'fortify.R' 'stat-.R' 'geom-abline.R' 'geom-rect.R' 'geom-bar.R' 'geom-tile.R' 'geom-bin2d.R' 'geom-blank.R' 'geom-boxplot.R' 'geom-col.R' 'geom-path.R' 'geom-contour.R' 'geom-point.R' 'geom-count.R' 'geom-crossbar.R' 'geom-segment.R' 'geom-curve.R' 'geom-defaults.R' 'geom-ribbon.R' 'geom-density.R' 'geom-density2d.R' 'geom-dotplot.R' 'geom-errorbar.R' 'geom-freqpoly.R' 'geom-function.R' 'geom-hex.R' 'geom-histogram.R' 'geom-hline.R' 'geom-jitter.R' 'geom-label.R' 'geom-linerange.R' 'geom-pointrange.R' 'geom-quantile.R' 'geom-rug.R' 'geom-sf.R' 'geom-smooth.R' 'geom-spoke.R' 'geom-text.R' 'geom-violin.R' 'geom-vline.R' 'ggplot2-package.R' 'grob-absolute.R' 'grob-dotstack.R' 'grob-null.R' 'grouping.R' 'properties.R' 'margins.R' 'theme-elements.R' 'guide-.R' 'guide-axis.R' 'guide-axis-logticks.R' 'guide-axis-stack.R' 'guide-axis-theta.R' 'guide-legend.R' 'guide-bins.R' 'guide-colorbar.R' 'guide-colorsteps.R' 'guide-custom.R' 'guide-none.R' 'guide-old.R' 'guides-.R' 'guides-grid.R' 'hexbin.R' 'import-standalone-obj-type.R' 'import-standalone-types-check.R' 'labeller.R' 'labels.R' 'layer-sf.R' 'layout.R' 'limits.R' 'performance.R' 'plot-build.R' 'plot-construction.R' 'plot-last.R' 'plot.R' 'position-.R' 'position-collide.R' 'position-dodge.R' 'position-dodge2.R' 'position-identity.R' 'position-jitter.R' 'position-jitterdodge.R' 'position-nudge.R' 'position-stack.R' 'quick-plot.R' 'reshape-add-margins.R' 'save.R' 'scale-.R' 'scale-alpha.R' 'scale-binned.R' 'scale-brewer.R' 'scale-colour.R' 'scale-continuous.R' 'scale-date.R' 'scale-discrete-.R' 'scale-expansion.R' 'scale-gradient.R' 'scale-grey.R' 'scale-hue.R' 'scale-identity.R' 'scale-linetype.R' 'scale-linewidth.R' 'scale-manual.R' 'scale-shape.R' 'scale-size.R' 'scale-steps.R' 'scale-view.R' 'scale-viridis.R' 'scales-.R' 'stat-align.R' 'stat-bin.R' 'stat-summary-2d.R' 'stat-bin2d.R' 'stat-bindot.R' 'stat-binhex.R' 'stat-boxplot.R' 'stat-connect.R' 'stat-contour.R' 'stat-count.R' 'stat-density-2d.R' 'stat-density.R' 'stat-ecdf.R' 'stat-ellipse.R' 'stat-function.R' 'stat-identity.R' 'stat-manual.R' 'stat-qq-line.R' 'stat-qq.R' 'stat-quantilemethods.R' 'stat-sf-coordinates.R' 'stat-sf.R' 'stat-smooth-methods.R' 'stat-smooth.R' 'stat-sum.R' 'stat-summary-bin.R' 'stat-summary-hex.R' 'stat-summary.R' 'stat-unique.R' 'stat-ydensity.R' 'summarise-plot.R' 'summary.R' 'theme.R' 'theme-defaults.R' 'theme-current.R' 'theme-sub.R' 'utilities-break.R' 'utilities-grid.R' 'utilities-help.R' 'utilities-patterns.R' 'utilities-resolution.R' 'utilities-tidy-eval.R' 'zxx.R' 'zzz.R'", + "NeedsCompilation": "no", + "Author": "Hadley Wickham [aut] (ORCID: ), Winston Chang [aut] (ORCID: ), Lionel Henry [aut], Thomas Lin Pedersen [aut, cre] (ORCID: ), Kohske Takahashi [aut], Claus Wilke [aut] (ORCID: ), Kara Woo [aut] (ORCID: ), Hiroaki Yutani [aut] (ORCID: ), Dewey Dunnington [aut] (ORCID: ), Teun van den Brand [aut] (ORCID: ), Posit, PBC [cph, fnd] (ROR: )", + "Maintainer": "Thomas Lin Pedersen ", + "Repository": "https://packagemanager.posit.co/cran/latest" + }, + "ggplotify": { + "Package": "ggplotify", + "Version": "0.1.3", + "Source": "Repository", + "Title": "Convert Plot to 'grob' or 'ggplot' Object", + "Authors@R": "c(person(\"Guangchuang\", \"Yu\", email = \"guangchuangyu@gmail.com\", role = c(\"aut\", \"cre\"), comment = c(ORCID = \"0000-0002-6485-8781\")))", + "Description": "Convert plot function call (using expression or formula) to 'grob' or 'ggplot' object that compatible to the 'grid' and 'ggplot2' ecosystem. With this package, we are able to e.g. using 'cowplot' to align plots produced by 'base' graphics, 'ComplexHeatmap', 'eulerr', 'grid', 'lattice', 'magick', 'pheatmap', 'vcd' etc. by converting them to 'ggplot' objects.", + "Depends": [ + "R (>= 3.4.0)" + ], + "Imports": [ + "ggplot2", + "graphics", + "grDevices", + "grid", + "gridGraphics", + "rlang", + "yulab.utils" + ], + "Suggests": [ + "aplot", + "colorspace", + "cowplot", + "ggimage", + "knitr", + "rmarkdown", + "lattice", + "prettydoc", + "vcd", + "utils" + ], + "VignetteBuilder": "knitr", + "ByteCompile": "true", + "License": "Artistic-2.0", + "URL": "https://github.com/GuangchuangYu/ggplotify", + "BugReports": "https://github.com/GuangchuangYu/ggplotify/issues", + "Encoding": "UTF-8", + "RoxygenNote": "7.3.3", + "NeedsCompilation": "no", + "Author": "Guangchuang Yu [aut, cre] (ORCID: )", + "Maintainer": "Guangchuang Yu ", + "Repository": "CRAN" + }, + "ggrastr": { + "Package": "ggrastr", + "Version": "1.0.2", + "Source": "Repository", + "Type": "Package", + "Title": "Rasterize Layers for 'ggplot2'", + "Authors@R": "c(person(\"Viktor\", \"Petukhov\", email = \"viktor.s.petukhov@ya.ru\", role = c(\"aut\", \"cph\")), person(\"Teun\", \"van den Brand\", email = \"t.vd.brand@nki.nl\", role=c(\"aut\")), person(\"Evan\", \"Biederstedt\", email = \"evan.biederstedt@gmail.com\", role=c(\"cre\", \"aut\")))", + "Description": "Rasterize only specific layers of a 'ggplot2' plot while simultaneously keeping all labels and text in vector format. This allows users to keep plots within the reasonable size limit without loosing vector properties of the scale-sensitive information.", + "License": "MIT + file LICENSE", + "Encoding": "UTF-8", + "Imports": [ + "ggplot2 (>= 2.1.0)", + "Cairo (>= 1.5.9)", + "ggbeeswarm", + "grid", + "png", + "ragg" + ], + "Depends": [ + "R (>= 3.2.2)" + ], + "RoxygenNote": "7.2.3", + "Suggests": [ + "knitr", + "maps", + "rmarkdown", + "sf" + ], + "VignetteBuilder": "knitr", + "URL": "https://github.com/VPetukhov/ggrastr", + "BugReports": "https://github.com/VPetukhov/ggrastr/issues", + "NeedsCompilation": "no", + "Author": "Viktor Petukhov [aut, cph], Teun van den Brand [aut], Evan Biederstedt [cre, aut]", + "Maintainer": "Evan Biederstedt ", + "Repository": "https://packagemanager.posit.co/cran/latest" + }, + "ggrepel": { + "Package": "ggrepel", + "Version": "0.9.6", + "Source": "Repository", + "Authors@R": "c( person(\"Kamil\", \"Slowikowski\", email = \"kslowikowski@gmail.com\", role = c(\"aut\", \"cre\"), comment = c(ORCID = \"0000-0002-2843-6370\")), person(\"Alicia\", \"Schep\", role = \"ctb\", comment = c(ORCID = \"0000-0002-3915-0618\")), person(\"Sean\", \"Hughes\", role = \"ctb\", comment = c(ORCID = \"0000-0002-9409-9405\")), person(\"Trung Kien\", \"Dang\", role = \"ctb\", comment = c(ORCID = \"0000-0001-7562-6495\")), person(\"Saulius\", \"Lukauskas\", role = \"ctb\"), person(\"Jean-Olivier\", \"Irisson\", role = \"ctb\", comment = c(ORCID = \"0000-0003-4920-3880\")), person(\"Zhian N\", \"Kamvar\", role = \"ctb\", comment = c(ORCID = \"0000-0003-1458-7108\")), person(\"Thompson\", \"Ryan\", role = \"ctb\", comment = c(ORCID = \"0000-0002-0450-8181\")), person(\"Dervieux\", \"Christophe\", role = \"ctb\", comment = c(ORCID = \"0000-0003-4474-2498\")), person(\"Yutani\", \"Hiroaki\", role = \"ctb\"), person(\"Pierre\", \"Gramme\", role = \"ctb\"), person(\"Amir Masoud\", \"Abdol\", role = \"ctb\"), person(\"Malcolm\", \"Barrett\", role = \"ctb\", comment = c(ORCID = \"0000-0003-0299-5825\")), person(\"Robrecht\", \"Cannoodt\", role = \"ctb\", comment = c(ORCID = \"0000-0003-3641-729X\")), person(\"Michał\", \"Krassowski\", role = \"ctb\", comment = c(ORCID = \"0000-0002-9638-7785\")), person(\"Michael\", \"Chirico\", role = \"ctb\", comment = c(ORCID = \"0000-0003-0787-087X\")), person(\"Pedro\", \"Aphalo\", role = \"ctb\", comment = c(ORCID = \"0000-0003-3385-972X\")), person(\"Francis\", \"Barton\", role = \"ctb\") )", + "Title": "Automatically Position Non-Overlapping Text Labels with 'ggplot2'", + "Description": "Provides text and label geoms for 'ggplot2' that help to avoid overlapping text labels. Labels repel away from each other and away from the data points.", + "Depends": [ + "R (>= 3.0.0)", + "ggplot2 (>= 2.2.0)" + ], + "Imports": [ + "grid", + "Rcpp", + "rlang (>= 0.3.0)", + "scales (>= 0.5.0)", + "withr (>= 2.5.0)" + ], + "Suggests": [ + "knitr", + "rmarkdown", + "testthat", + "svglite", + "vdiffr", + "gridExtra", + "ggpp", + "patchwork", + "devtools", + "prettydoc", + "ggbeeswarm", + "dplyr", + "magrittr", + "readr", + "stringr" + ], + "VignetteBuilder": "knitr", + "License": "GPL-3 | file LICENSE", + "URL": "https://ggrepel.slowkow.com/, https://github.com/slowkow/ggrepel", + "BugReports": "https://github.com/slowkow/ggrepel/issues", + "RoxygenNote": "7.3.1", + "LinkingTo": [ + "Rcpp" + ], + "Encoding": "UTF-8", + "NeedsCompilation": "yes", + "Author": "Kamil Slowikowski [aut, cre] (), Alicia Schep [ctb] (), Sean Hughes [ctb] (), Trung Kien Dang [ctb] (), Saulius Lukauskas [ctb], Jean-Olivier Irisson [ctb] (), Zhian N Kamvar [ctb] (), Thompson Ryan [ctb] (), Dervieux Christophe [ctb] (), Yutani Hiroaki [ctb], Pierre Gramme [ctb], Amir Masoud Abdol [ctb], Malcolm Barrett [ctb] (), Robrecht Cannoodt [ctb] (), Michał Krassowski [ctb] (), Michael Chirico [ctb] (), Pedro Aphalo [ctb] (), Francis Barton [ctb]", + "Maintainer": "Kamil Slowikowski ", + "Repository": "https://packagemanager.posit.co/cran/latest" + }, + "ggsignif": { + "Package": "ggsignif", + "Version": "0.6.4", + "Source": "Repository", + "Type": "Package", + "Title": "Significance Brackets for 'ggplot2'", + "Authors@R": "c( person(given = \"Constantin\", family = \"Ahlmann-Eltze\", role = c(\"aut\", \"cre\", \"ctb\"), email = \"artjom31415@googlemail.com\", comment = c(ORCID = \"0000-0002-3762-068X\", Twitter = \"@const_ae\")), person(given = \"Indrajeet\", family = \"Patil\", role = c(\"aut\", \"ctb\"), email = \"patilindrajeet.science@gmail.com\", comment = c(ORCID = \"0000-0003-1995-6531\", Twitter = \"@patilindrajeets\")) )", + "Description": "Enrich your 'ggplots' with group-wise comparisons. This package provides an easy way to indicate if two groups are significantly different. Commonly this is shown by a bracket on top connecting the groups of interest which itself is annotated with the level of significance (NS, *, **, ***). The package provides a single layer (geom_signif()) that takes the groups for comparison and the test (t.test(), wilcox.text() etc.) as arguments and adds the annotation to the plot.", + "License": "GPL-3 | file LICENSE", + "URL": "https://const-ae.github.io/ggsignif/, https://github.com/const-ae/ggsignif", + "VignetteBuilder": "knitr", + "Encoding": "UTF-8", + "Language": "en-US", + "Imports": [ + "ggplot2 (>= 3.3.5)" + ], + "Suggests": [ + "knitr", + "rmarkdown", + "testthat", + "vdiffr (>= 1.0.2)" + ], + "RoxygenNote": "7.2.1", + "Config/testthat/edition": "3", + "Config/testthat/parallel": "true", + "NeedsCompilation": "no", + "Author": "Constantin Ahlmann-Eltze [aut, cre, ctb] (, @const_ae), Indrajeet Patil [aut, ctb] (, @patilindrajeets)", + "Maintainer": "Constantin Ahlmann-Eltze ", + "Repository": "RSPM" + }, + "ggstats": { + "Package": "ggstats", + "Version": "0.12.0", + "Source": "Repository", + "Type": "Package", + "Title": "Extension to 'ggplot2' for Plotting Stats", + "Authors@R": "c( person( \"Joseph\", \"Larmarange\", , \"joseph@larmarange.net\", role = c(\"aut\", \"cre\"), comment = c(ORCID = \"0000-0001-7097-700X\") ) )", + "Description": "Provides new statistics, new geometries and new positions for 'ggplot2' and a suite of functions to facilitate the creation of statistical plots.", + "License": "GPL (>= 3)", + "URL": "https://larmarange.github.io/ggstats/, https://github.com/larmarange/ggstats", + "BugReports": "https://github.com/larmarange/ggstats/issues", + "Depends": [ + "R (>= 4.2)" + ], + "Imports": [ + "cli", + "dplyr", + "forcats", + "ggplot2 (>= 4.0.0)", + "lifecycle", + "patchwork", + "purrr", + "rlang", + "scales", + "stats", + "stringr", + "utils", + "tidyr" + ], + "Suggests": [ + "betareg", + "broom", + "broom.helpers (>= 1.20.0)", + "emmeans", + "glue", + "gtsummary", + "knitr", + "labelled (>= 2.11.0)", + "reshape", + "rmarkdown", + "nnet", + "parameters", + "pscl", + "testthat (>= 3.0.0)", + "spelling", + "survey", + "survival", + "vdiffr" + ], + "Encoding": "UTF-8", + "RoxygenNote": "7.3.3", + "Config/testthat/edition": "3", + "Language": "en-US", + "VignetteBuilder": "knitr", + "NeedsCompilation": "no", + "Author": "Joseph Larmarange [aut, cre] (ORCID: )", + "Maintainer": "Joseph Larmarange ", + "Repository": "CRAN" + }, + "ggtangle": { + "Package": "ggtangle", + "Version": "0.1.1", + "Source": "Repository", + "Title": "Draw Network with Data", + "Authors@R": "c( person(given = \"Guangchuang\", family = \"Yu\", email = \"guangchuangyu@gmail.com\", role = c(\"aut\", \"cre\"), comment = c(ORCID = \"0000-0002-6485-8781\")))", + "Description": "Extends the 'ggplot2' plotting system to support network visualization. Inspired by the 'Method 1' in 'ggtree' (G Yu (2018) ), 'ggtangle' is designed to work with network associated data.", + "Depends": [ + "R (>= 4.1.0)" + ], + "Imports": [ + "ggfun (>= 0.1.7)", + "ggplot2", + "ggrepel", + "igraph", + "rlang", + "yulab.utils (>= 0.2.2)" + ], + "Suggests": [ + "aplot", + "cli", + "ggiraph", + "ggnewscale", + "ggtree", + "quarto", + "scatterpie (>= 0.2.4)" + ], + "VignetteBuilder": "quarto", + "License": "Artistic-2.0", + "Encoding": "UTF-8", + "RoxygenNote": "7.3.3", + "NeedsCompilation": "no", + "Author": "Guangchuang Yu [aut, cre] (ORCID: )", + "Maintainer": "Guangchuang Yu ", + "Repository": "CRAN" + }, + "ggtree": { + "Package": "ggtree", + "Version": "4.0.4", + "Source": "Bioconductor", + "Type": "Package", + "Title": "an R package for visualization of tree and annotation data", + "Authors@R": "c( person(\"Guangchuang\", \"Yu\", email = \"guangchuangyu@gmail.com\", role = c(\"aut\", \"cre\", \"cph\"), comment = c(ORCID = \"0000-0002-6485-8781\")), person(\"Tommy Tsan-Yuk\", \"Lam\", email = \"tylam.tommy@gmail.com\", role = c(\"aut\", \"ths\")), person(\"Shuangbin\", \"Xu\", email = \"xshuangbin@163.com\", role = \"aut\", comment = c(ORCID=\"0000-0003-3513-5362\")), person(\"Lin\", \" Li\", email = \"williamlee2220@qq.com\", role = \"ctb\"), person(\"Bradley\", \"Jones\", email = \"bjones@cfenet.ubc.ca\", role = \"ctb\"), person(\"Justin\", \"Silverman\", email = \"jsilve24@gmail.com\", role = \"ctb\"), person(\"Watal M.\", \"Iwasaki\", email = \"heavy.watal@gmail.com\", role = \"ctb\"), person(\"Yonghe\", \"Xia\", email = \"xiayh17@gmail.com\", role = \"ctb\"), person(\"Ruizhu\", \"Huang\", email = \"ruizhuRH@gmail.com\", role = \"ctb\") )", + "Maintainer": "Guangchuang Yu ", + "Description": "'ggtree' extends the 'ggplot2' plotting system which implemented the grammar of graphics. 'ggtree' is designed for visualization and annotation of phylogenetic trees and other tree-like structures with their annotation data.", + "Depends": [ + "R (>= 4.2.0)" + ], + "Imports": [ + "ape", + "aplot", + "dplyr", + "ggplot2 (>= 4.0.0)", + "grid", + "magrittr", + "methods", + "purrr", + "rlang", + "ggfun (>= 0.1.7)", + "yulab.utils (>= 0.1.6)", + "tidyr", + "tidytree (>= 0.4.5)", + "treeio (>= 1.8.0)", + "utils", + "scales", + "stats", + "cli", + "ggiraph (>= 0.9.1)" + ], + "Suggests": [ + "emojifont", + "ggimage", + "ggplotify", + "shadowtext", + "grDevices", + "knitr", + "prettydoc", + "rmarkdown", + "testthat", + "tibble", + "glue", + "Biostrings" + ], + "VignetteBuilder": "knitr", + "ByteCompile": "true", + "Encoding": "UTF-8", + "License": "Artistic-2.0", + "URL": "https://www.amazon.com/Integration-Manipulation-Visualization-Phylogenetic-Computational-ebook/dp/B0B5NLZR1Z/ (book), http://onlinelibrary.wiley.com/doi/10.1111/2041-210X.12628 (paper)", + "BugReports": "https://github.com/YuLab-SMU/ggtree/issues", + "biocViews": "Alignment, Annotation, Clustering, DataImport, MultipleSequenceAlignment, Phylogenetics, ReproducibleResearch, Software, Visualization", + "RoxygenNote": "7.3.3", + "Roxygen": "list(markdown = TRUE)", + "Config/pak/sysreqs": "libcairo2-dev libfontconfig1-dev libfreetype6-dev make libicu-dev libpng-dev", + "Repository": "https://bioc-release.r-universe.dev", + "RemoteUrl": "https://github.com/bioc/ggtree", + "RemoteRef": "RELEASE_3_22", + "RemoteSha": "8e25254da5a9aa23db9e2f58acd14cc4e58a2893", + "NeedsCompilation": "no", + "Author": "Guangchuang Yu [aut, cre, cph] (ORCID: ), Tommy Tsan-Yuk Lam [aut, ths], Shuangbin Xu [aut] (ORCID: ), Lin Li [ctb], Bradley Jones [ctb], Justin Silverman [ctb], Watal M. Iwasaki [ctb], Yonghe Xia [ctb], Ruizhu Huang [ctb]" + }, + "ggupset": { + "Package": "ggupset", + "Version": "0.4.1", + "Source": "Repository", + "Type": "Package", + "Title": "Combination Matrix Axis for 'ggplot2' to Create 'UpSet' Plots", + "URL": "https://github.com/const-ae/ggupset", + "BugReports": "https://github.com/const-ae/ggupset/issues", + "Authors@R": "person(\"Constantin\", \"Ahlmann-Eltze\", email = \"artjom31415@googlemail.com\", role = c(\"aut\", \"cre\"), comment = c(ORCID = \"0000-0002-3762-068X\"))", + "Description": "Replace the standard x-axis in 'ggplots' with a combination matrix to visualize complex set overlaps. 'UpSet' has introduced a new way to visualize the overlap of sets as an alternative to Venn diagrams. This package provides a simple way to produce such plots using 'ggplot2'. In addition it can convert any categorical axis into a combination matrix axis.", + "License": "GPL-3", + "Encoding": "UTF-8", + "LazyData": "true", + "RoxygenNote": "7.3.1", + "Depends": [ + "R (>= 2.10)" + ], + "Suggests": [ + "testthat" + ], + "Imports": [ + "ggplot2 (>= 3.3.0)", + "gtable", + "grid", + "tibble", + "rlang", + "scales" + ], + "NeedsCompilation": "no", + "Author": "Constantin Ahlmann-Eltze [aut, cre] ()", + "Maintainer": "Constantin Ahlmann-Eltze ", + "Repository": "CRAN" + }, + "glmnet": { + "Package": "glmnet", + "Version": "4.1-10", + "Source": "Repository", + "Type": "Package", + "Title": "Lasso and Elastic-Net Regularized Generalized Linear Models", + "Date": "2025-07-15", + "Authors@R": "c(person(\"Jerome\", \"Friedman\", role=c(\"aut\")), person(\"Trevor\", \"Hastie\", role=c(\"aut\", \"cre\"), email = \"hastie@stanford.edu\"), person(\"Rob\", \"Tibshirani\", role=c(\"aut\")), person(\"Balasubramanian\", \"Narasimhan\", role=c(\"aut\")), person(\"Kenneth\",\"Tay\",role=c(\"aut\")), person(\"Noah\", \"Simon\", role=c(\"aut\")), person(\"Junyang\", \"Qian\", role=c(\"ctb\")), person(\"James\", \"Yang\", role=c(\"aut\")))", + "Depends": [ + "R (>= 3.6.0)", + "Matrix (>= 1.0-6)" + ], + "Imports": [ + "methods", + "utils", + "foreach", + "shape", + "survival", + "Rcpp" + ], + "Suggests": [ + "knitr", + "lars", + "testthat", + "xfun", + "rmarkdown" + ], + "SystemRequirements": "C++17", + "Description": "Extremely efficient procedures for fitting the entire lasso or elastic-net regularization path for linear regression, logistic and multinomial regression models, Poisson regression, Cox model, multiple-response Gaussian, and the grouped multinomial regression; see and . There are two new and important additions. The family argument can be a GLM family object, which opens the door to any programmed family (). This comes with a modest computational cost, so when the built-in families suffice, they should be used instead. The other novelty is the relax option, which refits each of the active sets in the path unpenalized. The algorithm uses cyclical coordinate descent in a path-wise fashion, as described in the papers cited.", + "License": "GPL-2", + "VignetteBuilder": "knitr", + "Encoding": "UTF-8", + "URL": "https://glmnet.stanford.edu", + "RoxygenNote": "7.3.2", + "LinkingTo": [ + "RcppEigen", + "Rcpp" + ], + "NeedsCompilation": "yes", + "Author": "Jerome Friedman [aut], Trevor Hastie [aut, cre], Rob Tibshirani [aut], Balasubramanian Narasimhan [aut], Kenneth Tay [aut], Noah Simon [aut], Junyang Qian [ctb], James Yang [aut]", + "Maintainer": "Trevor Hastie ", + "Repository": "CRAN" + }, + "glue": { + "Package": "glue", + "Version": "1.8.0", + "Source": "Repository", + "Title": "Interpreted String Literals", + "Authors@R": "c( person(\"Jim\", \"Hester\", role = \"aut\", comment = c(ORCID = \"0000-0002-2739-7082\")), person(\"Jennifer\", \"Bryan\", , \"jenny@posit.co\", role = c(\"aut\", \"cre\"), comment = c(ORCID = \"0000-0002-6983-2759\")), person(\"Posit Software, PBC\", role = c(\"cph\", \"fnd\")) )", + "Description": "An implementation of interpreted string literals, inspired by Python's Literal String Interpolation and Docstrings and Julia's Triple-Quoted String Literals .", + "License": "MIT + file LICENSE", + "URL": "https://glue.tidyverse.org/, https://github.com/tidyverse/glue", + "BugReports": "https://github.com/tidyverse/glue/issues", + "Depends": [ + "R (>= 3.6)" + ], + "Imports": [ + "methods" + ], + "Suggests": [ + "crayon", + "DBI (>= 1.2.0)", + "dplyr", + "knitr", + "magrittr", + "rlang", + "rmarkdown", + "RSQLite", + "testthat (>= 3.2.0)", + "vctrs (>= 0.3.0)", + "waldo (>= 0.5.3)", + "withr" + ], + "VignetteBuilder": "knitr", + "ByteCompile": "true", + "Config/Needs/website": "bench, forcats, ggbeeswarm, ggplot2, R.utils, rprintf, tidyr, tidyverse/tidytemplate", + "Config/testthat/edition": "3", + "Encoding": "UTF-8", + "RoxygenNote": "7.3.2", + "NeedsCompilation": "yes", + "Author": "Jim Hester [aut] (), Jennifer Bryan [aut, cre] (), Posit Software, PBC [cph, fnd]", + "Maintainer": "Jennifer Bryan ", + "Repository": "https://packagemanager.posit.co/cran/latest" + }, + "googledrive": { + "Package": "googledrive", + "Version": "2.1.2", + "Source": "Repository", + "Title": "An Interface to Google Drive", + "Authors@R": "c( person(\"Lucy\", \"D'Agostino McGowan\", , role = \"aut\"), person(\"Jennifer\", \"Bryan\", , \"jenny@posit.co\", role = c(\"aut\", \"cre\"), comment = c(ORCID = \"0000-0002-6983-2759\")), person(\"Posit Software, PBC\", role = c(\"cph\", \"fnd\")) )", + "Description": "Manage Google Drive files from R.", + "License": "MIT + file LICENSE", + "URL": "https://googledrive.tidyverse.org, https://github.com/tidyverse/googledrive", + "BugReports": "https://github.com/tidyverse/googledrive/issues", + "Depends": [ + "R (>= 4.1)" + ], + "Imports": [ + "cli (>= 3.0.0)", + "gargle (>= 1.6.0)", + "glue (>= 1.4.2)", + "httr", + "jsonlite", + "lifecycle", + "magrittr", + "pillar (>= 1.9.0)", + "purrr (>= 1.0.1)", + "rlang (>= 1.0.2)", + "tibble (>= 2.0.0)", + "utils", + "uuid", + "vctrs (>= 0.3.0)", + "withr" + ], + "Suggests": [ + "curl", + "dplyr (>= 1.0.0)", + "knitr", + "rmarkdown", + "spelling", + "testthat (>= 3.1.5)" + ], + "VignetteBuilder": "knitr", + "Config/Needs/website": "tidyverse, tidyverse/tidytemplate", + "Config/testthat/edition": "3", + "Encoding": "UTF-8", + "Language": "en-US", + "RoxygenNote": "7.3.3", + "NeedsCompilation": "no", + "Author": "Lucy D'Agostino McGowan [aut], Jennifer Bryan [aut, cre] (ORCID: ), Posit Software, PBC [cph, fnd]", + "Maintainer": "Jennifer Bryan ", + "Repository": "CRAN" + }, + "googlesheets4": { + "Package": "googlesheets4", + "Version": "1.1.2", + "Source": "Repository", + "Title": "Access Google Sheets using the Sheets API V4", + "Authors@R": "c( person(\"Jennifer\", \"Bryan\", , \"jenny@posit.co\", role = c(\"cre\", \"aut\"), comment = c(ORCID = \"0000-0002-6983-2759\")), person(\"Posit Software, PBC\", role = c(\"cph\", \"fnd\")) )", + "Description": "Interact with Google Sheets through the Sheets API v4 . \"API\" is an acronym for \"application programming interface\"; the Sheets API allows users to interact with Google Sheets programmatically, instead of via a web browser. The \"v4\" refers to the fact that the Sheets API is currently at version 4. This package can read and write both the metadata and the cell data in a Sheet.", + "License": "MIT + file LICENSE", + "URL": "https://googlesheets4.tidyverse.org, https://github.com/tidyverse/googlesheets4", + "BugReports": "https://github.com/tidyverse/googlesheets4/issues", + "Depends": [ + "R (>= 3.6)" + ], + "Imports": [ + "cellranger", + "cli (>= 3.0.0)", + "curl", + "gargle (>= 1.6.0)", + "glue (>= 1.3.0)", + "googledrive (>= 2.1.0)", + "httr", + "ids", + "lifecycle", + "magrittr", + "methods", + "purrr", + "rematch2", + "rlang (>= 1.0.2)", + "tibble (>= 2.1.1)", + "utils", + "vctrs (>= 0.2.3)", + "withr" + ], + "Suggests": [ + "readr", + "rmarkdown", + "spelling", + "testthat (>= 3.1.7)" + ], + "ByteCompile": "true", + "Config/Needs/website": "tidyverse, tidyverse/tidytemplate", + "Config/testthat/edition": "3", + "Encoding": "UTF-8", + "Language": "en-US", + "RoxygenNote": "7.3.2.9000", + "NeedsCompilation": "no", + "Author": "Jennifer Bryan [cre, aut] (ORCID: ), Posit Software, PBC [cph, fnd]", + "Maintainer": "Jennifer Bryan ", + "Repository": "CRAN" + }, + "gplots": { + "Package": "gplots", + "Version": "3.3.0", + "Source": "Repository", + "Title": "Various R Programming Tools for Plotting Data", + "Description": "Various R programming tools for plotting data, including: - calculating and plotting locally smoothed summary function as ('bandplot', 'wapply'), - enhanced versions of standard plots ('barplot2', 'boxplot2', 'heatmap.2', 'smartlegend'), - manipulating colors ('col2hex', 'colorpanel', 'redgreen', 'greenred', 'bluered', 'redblue', 'rich.colors'), - calculating and plotting two-dimensional data summaries ('ci2d', 'hist2d'), - enhanced regression diagnostic plots ('lmplot2', 'residplot'), - formula-enabled interface to 'stats::lowess' function ('lowess'), - displaying textual data in plots ('textplot', 'sinkplot'), - plotting dots whose size reflects the relative magnitude of the elements ('balloonplot', 'bubbleplot'), - plotting \"Venn\" diagrams ('venn'), - displaying Open-Office style plots ('ooplot'), - plotting multiple data on same region, with separate axes ('overplot'), - plotting means and confidence intervals ('plotCI', 'plotmeans'), - spacing points in an x-y plot so they don't overlap ('space').", + "Depends": [ + "R (>= 3.0)" + ], + "Imports": [ + "gtools", + "stats", + "caTools", + "KernSmooth", + "methods" + ], + "Suggests": [ + "grid", + "MASS", + "knitr", + "rmarkdown", + "r2d2", + "nlme", + "dendextend", + "heatmaply", + "RColorBrewer" + ], + "LazyData": "yes", + "VignetteBuilder": "knitr", + "Date": "2025-11-29", + "Authors@R": "c( person(\"Gregory R.\", \"Warnes\", , role = \"aut\"), person(\"Ben\", \"Bolker\", , role = \"aut\"), person(\"Lodewijk\", \"Bonebakker\", , role = \"aut\"), person(\"Robert\", \"Gentleman\", role = \"aut\"), person(\"Wolfgang\", \"Huber\", role = \"aut\"), person(\"Andy\", \"Liaw\", role = \"aut\"), person(\"Thomas\", \"Lumley\", role = \"aut\"), person(\"Martin\", \"Maechler\", role = \"aut\"), person(\"Arni\", \"Magnusson\", role = \"aut\"), person(\"Steffen\", \"Moeller\", role = \"aut\"), person(\"Marc\", \"Schwartz\", role = \"aut\"), person(\"Bill\", \"Venables\", role = \"aut\"), person(\"Tal\", \"Galili\", , \"tal.galili@gmail.com\", c(\"aut\", \"cre\")) )", + "License": "GPL-2", + "URL": "https://github.com/talgalili/gplots, https://talgalili.github.io/gplots/", + "BugReports": "https://github.com/talgalili/gplots/issues", + "NeedsCompilation": "no", + "Author": "Gregory R. Warnes [aut], Ben Bolker [aut], Lodewijk Bonebakker [aut], Robert Gentleman [aut], Wolfgang Huber [aut], Andy Liaw [aut], Thomas Lumley [aut], Martin Maechler [aut], Arni Magnusson [aut], Steffen Moeller [aut], Marc Schwartz [aut], Bill Venables [aut], Tal Galili [aut, cre]", + "Maintainer": "Tal Galili ", + "Repository": "CRAN" + }, + "graph": { + "Package": "graph", + "Version": "1.88.1", + "Source": "Bioconductor", + "Title": "graph: A package to handle graph data structures", + "Authors@R": "c( person(\"R\", \"Gentleman\", role = \"aut\"), person(\"Elizabeth\", \"Whalen\", role=\"aut\"), person(\"W\", \"Huber\", role=\"aut\"), person(\"S\", \"Falcon\", role=\"aut\"), person(\"Jeff\", \"Gentry\", role=\"aut\"), person(\"Paul\", \"Shannon\", role=\"aut\"), person(\"Halimat C.\", \"Atanda\", role = \"ctb\", comment = \"Converted 'MultiGraphClass' and 'GraphClass' vignettes from Sweave to RMarkdown / HTML.\" ), person(\"Paul\", \"Villafuerte\", role = \"ctb\", comment = \"Converted vignettes from Sweave to RMarkdown / HTML.\" ), person(\"Aliyu Atiku\", \"Mustapha\", role = \"ctb\", comment = \"Converted 'Graph' vignette from Sweave to RMarkdown / HTML.\" ), person(\"Bioconductor Package Maintainer\", role = \"cre\", email = \"maintainer@bioconductor.org\" ))", + "Description": "A package that implements some simple graph handling capabilities.", + "License": "Artistic-2.0", + "Depends": [ + "R (>= 2.10)", + "methods", + "BiocGenerics (>= 0.13.11)" + ], + "Imports": [ + "stats", + "stats4", + "utils" + ], + "Suggests": [ + "SparseM (>= 0.36)", + "XML", + "RBGL", + "RUnit", + "cluster", + "BiocStyle", + "knitr" + ], + "Enhances": [ + "Rgraphviz" + ], + "Collate": "AllClasses.R AllGenerics.R bitarray.R buildDepGraph.R methods-graph.R graphNEL.R clustergraph.R NELhandler.R edgefunctions.R graphfunctions.R GXLformals.R gxlReader.R random.R write.tlp.R mat2graph.R settings.R zzz.R standardLabeling.R TODOT.R toDotWithRI.R methods-graphAM.R attrData.R reverseEdgeDirections.R nodes-methods.R methods-multiGraph.R MultiGraph.R methods-graphBAM.R graph-constructors.R", + "LazyLoad": "yes", + "biocViews": "GraphAndNetwork", + "RoxygenNote": "7.2.3", + "VignetteBuilder": "knitr", + "git_url": "https://git.bioconductor.org/packages/graph", + "git_branch": "RELEASE_3_22", + "git_last_commit": "1834660", + "git_last_commit_date": "2025-12-07", + "Repository": "Bioconductor 3.22", + "NeedsCompilation": "yes", + "Author": "R Gentleman [aut], Elizabeth Whalen [aut], W Huber [aut], S Falcon [aut], Jeff Gentry [aut], Paul Shannon [aut], Halimat C. Atanda [ctb] (Converted 'MultiGraphClass' and 'GraphClass' vignettes from Sweave to RMarkdown / HTML.), Paul Villafuerte [ctb] (Converted vignettes from Sweave to RMarkdown / HTML.), Aliyu Atiku Mustapha [ctb] (Converted 'Graph' vignette from Sweave to RMarkdown / HTML.), Bioconductor Package Maintainer [cre]", + "Maintainer": "Bioconductor Package Maintainer " + }, + "gridExtra": { + "Package": "gridExtra", + "Version": "2.3", + "Source": "Repository", + "Authors@R": "c(person(\"Baptiste\", \"Auguie\", email = \"baptiste.auguie@gmail.com\", role = c(\"aut\", \"cre\")), person(\"Anton\", \"Antonov\", email = \"tonytonov@gmail.com\", role = c(\"ctb\")))", + "License": "GPL (>= 2)", + "Title": "Miscellaneous Functions for \"Grid\" Graphics", + "Type": "Package", + "Description": "Provides a number of user-level functions to work with \"grid\" graphics, notably to arrange multiple grid-based plots on a page, and draw tables.", + "VignetteBuilder": "knitr", + "Imports": [ + "gtable", + "grid", + "grDevices", + "graphics", + "utils" + ], + "Suggests": [ + "ggplot2", + "egg", + "lattice", + "knitr", + "testthat" + ], + "RoxygenNote": "6.0.1", + "NeedsCompilation": "no", + "Author": "Baptiste Auguie [aut, cre], Anton Antonov [ctb]", + "Maintainer": "Baptiste Auguie ", + "Repository": "https://packagemanager.posit.co/cran/latest", + "Encoding": "UTF-8" + }, + "gridGraphics": { + "Package": "gridGraphics", + "Version": "0.5-1", + "Source": "Repository", + "Title": "Redraw Base Graphics Using 'grid' Graphics", + "Authors@R": "c(person(\"Paul\", \"Murrell\", role = c(\"cre\", \"aut\"), email = \"paul@stat.auckland.ac.nz\"), person(\"Zhijian\", \"Wen\", role = \"aut\", email = \"jwen246@aucklanduni.ac.nz\"))", + "Description": "Functions to convert a page of plots drawn with the 'graphics' package into identical output drawn with the 'grid' package. The result looks like the original 'graphics'-based plot, but consists of 'grid' grobs and viewports that can then be manipulated with 'grid' functions (e.g., edit grobs and revisit viewports).", + "Depends": [ + "grid", + "graphics" + ], + "Imports": [ + "grDevices" + ], + "Suggests": [ + "magick (>= 1.3)", + "pdftools (>= 1.6)" + ], + "License": "GPL (>= 2)", + "URL": "https://github.com/pmur002/gridgraphics", + "NeedsCompilation": "no", + "Author": "Paul Murrell [cre, aut], Zhijian Wen [aut]", + "Maintainer": "Paul Murrell ", + "Repository": "RSPM", + "Encoding": "UTF-8" + }, + "gson": { + "Package": "gson", + "Version": "0.1.0", + "Source": "Repository", + "Title": "Base Class and Methods for 'gson' Format", + "Authors@R": "c( person(\"Guangchuang\", \"Yu\", email = \"guangchuangyu@gmail.com\", role = c(\"aut\", \"cre\", \"cph\"), comment = c(ORCID = \"0000-0002-6485-8781\")) )", + "Description": "Proposes a new file format ('gson') for storing gene set and related information, and provides read, write and other utilities to process this file format.", + "Imports": [ + "jsonlite", + "methods", + "rlang", + "stats", + "tidyr", + "utils" + ], + "ByteCompile": "true", + "License": "Artistic-2.0", + "Encoding": "UTF-8", + "RoxygenNote": "7.2.3", + "NeedsCompilation": "no", + "Author": "Guangchuang Yu [aut, cre, cph] ()", + "Maintainer": "Guangchuang Yu ", + "Repository": "CRAN" + }, + "gtable": { + "Package": "gtable", + "Version": "0.3.6", + "Source": "Repository", + "Title": "Arrange 'Grobs' in Tables", + "Authors@R": "c( person(\"Hadley\", \"Wickham\", , \"hadley@posit.co\", role = \"aut\"), person(\"Thomas Lin\", \"Pedersen\", , \"thomas.pedersen@posit.co\", role = c(\"aut\", \"cre\")), person(\"Posit Software, PBC\", role = c(\"cph\", \"fnd\")) )", + "Description": "Tools to make it easier to work with \"tables\" of 'grobs'. The 'gtable' package defines a 'gtable' grob class that specifies a grid along with a list of grobs and their placement in the grid. Further the package makes it easy to manipulate and combine 'gtable' objects so that complex compositions can be built up sequentially.", + "License": "MIT + file LICENSE", + "URL": "https://gtable.r-lib.org, https://github.com/r-lib/gtable", + "BugReports": "https://github.com/r-lib/gtable/issues", + "Depends": [ + "R (>= 4.0)" + ], + "Imports": [ + "cli", + "glue", + "grid", + "lifecycle", + "rlang (>= 1.1.0)", + "stats" + ], + "Suggests": [ + "covr", + "ggplot2", + "knitr", + "profvis", + "rmarkdown", + "testthat (>= 3.0.0)" + ], + "VignetteBuilder": "knitr", + "Config/Needs/website": "tidyverse/tidytemplate", + "Config/testthat/edition": "3", + "Config/usethis/last-upkeep": "2024-10-25", + "Encoding": "UTF-8", + "RoxygenNote": "7.3.2", + "NeedsCompilation": "no", + "Author": "Hadley Wickham [aut], Thomas Lin Pedersen [aut, cre], Posit Software, PBC [cph, fnd]", + "Maintainer": "Thomas Lin Pedersen ", + "Repository": "https://packagemanager.posit.co/cran/latest" + }, + "gtools": { + "Package": "gtools", + "Version": "3.9.5", + "Source": "Repository", + "Title": "Various R Programming Tools", + "Description": "Functions to assist in R programming, including: - assist in developing, updating, and maintaining R and R packages ('ask', 'checkRVersion', 'getDependencies', 'keywords', 'scat'), - calculate the logit and inverse logit transformations ('logit', 'inv.logit'), - test if a value is missing, empty or contains only NA and NULL values ('invalid'), - manipulate R's .Last function ('addLast'), - define macros ('defmacro'), - detect odd and even integers ('odd', 'even'), - convert strings containing non-ASCII characters (like single quotes) to plain ASCII ('ASCIIfy'), - perform a binary search ('binsearch'), - sort strings containing both numeric and character components ('mixedsort'), - create a factor variable from the quantiles of a continuous variable ('quantcut'), - enumerate permutations and combinations ('combinations', 'permutation'), - calculate and convert between fold-change and log-ratio ('foldchange', 'logratio2foldchange', 'foldchange2logratio'), - calculate probabilities and generate random numbers from Dirichlet distributions ('rdirichlet', 'ddirichlet'), - apply a function over adjacent subsets of a vector ('running'), - modify the TCP_NODELAY ('de-Nagle') flag for socket objects, - efficient 'rbind' of data frames, even if the column names don't match ('smartbind'), - generate significance stars from p-values ('stars.pval'), - convert characters to/from ASCII codes ('asc', 'chr'), - convert character vector to ASCII representation ('ASCIIfy'), - apply title capitalization rules to a character vector ('capwords').", + "Authors@R": "c(person(\"Gregory R.\", \"Warnes\", role = \"aut\"), person(\"Ben\", \"Bolker\", role = c(\"aut\", \"cre\"), email = \"bolker@mcmaster.ca\", comment=c(ORCID=\"0000-0002-2127-0443\")), person(\"Thomas\", \"Lumley\", role = \"aut\"), person(\"Arni\", \"Magnusson\", role = \"aut\"), person(\"Bill\", \"Venables\", role = \"aut\"), person(\"Genei\", \"Ryodan\", role = \"aut\"), person(\"Steffen\", \"Moeller\", role = \"aut\"), person(\"Ian\", \"Wilson\", role = \"ctb\"), person(\"Mark\", \"Davis\", role = \"ctb\"), person(\"Nitin\", \"Jain\", role=\"ctb\"), person(\"Scott\", \"Chamberlain\", role = \"ctb\"))", + "License": "GPL-2", + "Depends": [ + "methods", + "stats", + "utils" + ], + "URL": "https://github.com/r-gregmisc/gtools", + "BugReports": "https://github.com/r-gregmisc/gtools/issues", + "Language": "en-US", + "Suggests": [ + "car", + "gplots", + "knitr", + "rstudioapi", + "SGP", + "taxize" + ], + "RoxygenNote": "7.2.3", + "Encoding": "UTF-8", + "NeedsCompilation": "yes", + "Author": "Gregory R. Warnes [aut], Ben Bolker [aut, cre] (), Thomas Lumley [aut], Arni Magnusson [aut], Bill Venables [aut], Genei Ryodan [aut], Steffen Moeller [aut], Ian Wilson [ctb], Mark Davis [ctb], Nitin Jain [ctb], Scott Chamberlain [ctb]", + "Maintainer": "Ben Bolker ", + "Repository": "CRAN" + }, + "gypsum": { + "Package": "gypsum", + "Version": "1.6.0", + "Source": "Bioconductor", + "Date": "2024-06-20", + "Title": "Interface to the gypsum REST API", + "Description": "Client for the gypsum REST API (https://gypsum.artifactdb.com), a cloud-based file store in the ArtifactDB ecosystem. This package provides functions for uploads, downloads, and various adminstrative and management tasks. Check out the documentation at https://github.com/ArtifactDB/gypsum-worker for more details.", + "Authors@R": "person(\"Aaron\", \"Lun\", role=c(\"aut\", \"cre\"), email=\"infinite.monkeys.with.keyboards@gmail.com\")", + "License": "MIT + file LICENSE", + "Imports": [ + "utils", + "httr2", + "jsonlite", + "parallel", + "filelock", + "rappdirs" + ], + "Suggests": [ + "knitr", + "rmarkdown", + "testthat", + "BiocStyle", + "digest", + "jsonvalidate", + "DBI", + "RSQLite", + "S4Vectors", + "methods" + ], + "RoxygenNote": "7.3.1", + "VignetteBuilder": "knitr", + "URL": "https://github.com/ArtifactDB/gypsum-R", + "BugReports": "https://github.com/ArtifactDB/gypsum-R/issues", + "biocViews": "DataImport", + "git_url": "https://git.bioconductor.org/packages/gypsum", + "git_branch": "RELEASE_3_22", + "git_last_commit": "ff6acdc", + "git_last_commit_date": "2025-10-29", + "Repository": "Bioconductor 3.22", + "NeedsCompilation": "no", + "Author": "Aaron Lun [aut, cre]", + "Maintainer": "Aaron Lun " + }, + "h5mread": { + "Package": "h5mread", + "Version": "1.2.1", + "Source": "Bioconductor", + "Title": "A fast HDF5 reader", + "Description": "The main function in the h5mread package is h5mread(), which allows reading arbitrary data from an HDF5 dataset into R, similarly to what the h5read() function from the rhdf5 package does. In the case of h5mread(), the implementation has been optimized to make it as fast and memory-efficient as possible.", + "biocViews": "Infrastructure, DataRepresentation, DataImport", + "URL": "https://bioconductor.org/packages/h5mread", + "BugReports": "https://github.com/Bioconductor/h5mread/issues", + "License": "Artistic-2.0", + "Encoding": "UTF-8", + "Authors@R": "person(\"Hervé\", \"Pagès\", role=c(\"aut\", \"cre\"), email=\"hpages.on.github@gmail.com\", comment=c(ORCID=\"0009-0002-8272-4522\"))", + "Depends": [ + "R (>= 4.5)", + "methods", + "rhdf5", + "BiocGenerics", + "SparseArray" + ], + "Imports": [ + "stats", + "tools", + "rhdf5filters", + "S4Vectors", + "IRanges", + "S4Arrays" + ], + "LinkingTo": [ + "Rhdf5lib", + "S4Vectors" + ], + "SystemRequirements": "GNU make", + "Suggests": [ + "BiocParallel", + "ExperimentHub", + "TENxBrainData", + "HDF5Array", + "testthat", + "knitr", + "rmarkdown", + "BiocStyle" + ], + "VignetteBuilder": "knitr", + "Collate": "utils.R h5dim.R H5File-class.R h5ls.R H5DSetDescriptor-class.R uaselection.R h5mread.R h5summarize.R h5mread_from_reshaped.R h5dimscales.R h5writeDimnames.R zzz.R", + "git_url": "https://git.bioconductor.org/packages/h5mread", + "git_branch": "RELEASE_3_22", + "git_last_commit": "b377076", + "git_last_commit_date": "2025-11-21", + "Repository": "Bioconductor 3.22", + "NeedsCompilation": "yes", + "Author": "Hervé Pagès [aut, cre] (ORCID: )", + "Maintainer": "Hervé Pagès " + }, + "harmony": { + "Package": "harmony", + "Version": "1.2.4", + "Source": "Repository", + "Title": "Fast, Sensitive, and Accurate Integration of Single Cell Data", + "Authors@R": "c( person(\"Ilya\", \"Korsunsky\", email = \"ilya.korsunsky@gmail.com\", role = c(\"cre\", \"aut\"), comment = c(ORCID = \"0000-0003-4848-3948\")), person(\"Martin\", \"Hemberg\", email = \"mhemberg@bwh.harvard.edu\", role = c(\"aut\"), comment = c(ORCID = \"0000-0001-8895-5239\")), person(\"Nikolaos\", \"Patikas\", email = \"nik.patik@gmail.com\", role = c(\"aut\", \"ctb\"), comment = c(ORCID = \"0000-0002-3978-0134\")), person(\"Hongcheng\", \"Yao\", email = \"hongchengyaonk@gmail.com\", role = c(\"aut\", \"ctb\"), comment = c(ORCID = \"0000-0002-0743-4835\")), person(\"Nghia\", \"Millard\", email = \"nmillard@g.harvard.edu\", role = \"aut\", comment = c(ORCID = \"0000-0002-0518-7674\")), person(\"Jean\", \"Fan\", email = \"jeanfan@fas.harvard.edu\", role = c(\"aut\", \"ctb\"), comment = c(ORCID = \"0000-0002-0212-5451\")), person(\"Kamil\", \"Slowikowski\", email = \"kslowikowski@gmail.com\", role = c(\"aut\", \"ctb\"), comment = c(ORCID = \"0000-0002-2843-6370\")), person(\"Miles\", \"Smith\", role = c(\"ctb\")), person(\"Soumya\", \"Raychaudhuri\", role = c(\"aut\"), comment = c(ORCID = \"0000-0002-1901-8265\")) )", + "Description": "Implementation of the Harmony algorithm for single cell integration, described in Korsunsky et al . Package includes a standalone Harmony function and interfaces to external frameworks.", + "URL": "https://github.com/immunogenomics/harmony", + "License": "GPL-3", + "Encoding": "UTF-8", + "RoxygenNote": "7.2.3", + "Depends": [ + "R(>= 3.5.0)", + "Rcpp" + ], + "LazyData": "true", + "LazyDataCompression": "gzip", + "LinkingTo": [ + "Rcpp", + "RcppArmadillo", + "RcppProgress" + ], + "Imports": [ + "dplyr", + "cowplot", + "ggplot2", + "Matrix", + "methods", + "tibble", + "rlang", + "RhpcBLASctl" + ], + "Suggests": [ + "SingleCellExperiment", + "Seurat (>= 4.1.1)", + "testthat", + "knitr", + "rmarkdown", + "ggthemes", + "ggrepel", + "patchwork", + "tidyverse", + "tidyr", + "data.table" + ], + "VignetteBuilder": "knitr", + "NeedsCompilation": "yes", + "Author": "Ilya Korsunsky [cre, aut] (ORCID: ), Martin Hemberg [aut] (ORCID: ), Nikolaos Patikas [aut, ctb] (ORCID: ), Hongcheng Yao [aut, ctb] (ORCID: ), Nghia Millard [aut] (ORCID: ), Jean Fan [aut, ctb] (ORCID: ), Kamil Slowikowski [aut, ctb] (ORCID: ), Miles Smith [ctb], Soumya Raychaudhuri [aut] (ORCID: )", + "Maintainer": "Ilya Korsunsky ", + "Repository": "CRAN" + }, + "haven": { + "Package": "haven", + "Version": "2.5.5", + "Source": "Repository", + "Title": "Import and Export 'SPSS', 'Stata' and 'SAS' Files", + "Authors@R": "c( person(\"Hadley\", \"Wickham\", , \"hadley@posit.co\", role = c(\"aut\", \"cre\")), person(\"Evan\", \"Miller\", role = c(\"aut\", \"cph\"), comment = \"Author of included ReadStat code\"), person(\"Danny\", \"Smith\", role = \"aut\"), person(\"Posit Software, PBC\", role = c(\"cph\", \"fnd\")) )", + "Description": "Import foreign statistical formats into R via the embedded 'ReadStat' C library, .", + "License": "MIT + file LICENSE", + "URL": "https://haven.tidyverse.org, https://github.com/tidyverse/haven, https://github.com/WizardMac/ReadStat", + "BugReports": "https://github.com/tidyverse/haven/issues", + "Depends": [ + "R (>= 3.6)" + ], + "Imports": [ + "cli (>= 3.0.0)", + "forcats (>= 0.2.0)", + "hms", + "lifecycle", + "methods", + "readr (>= 0.1.0)", + "rlang (>= 0.4.0)", + "tibble", + "tidyselect", + "vctrs (>= 0.3.0)" + ], + "Suggests": [ + "covr", + "crayon", + "fs", + "knitr", + "pillar (>= 1.4.0)", + "rmarkdown", + "testthat (>= 3.0.0)", + "utf8" + ], + "LinkingTo": [ + "cpp11" + ], + "VignetteBuilder": "knitr", + "Config/Needs/website": "tidyverse/tidytemplate", + "Config/testthat/edition": "3", + "Encoding": "UTF-8", + "RoxygenNote": "7.3.2", + "SystemRequirements": "GNU make, zlib: zlib1g-dev (deb), zlib-devel (rpm)", + "NeedsCompilation": "yes", + "Author": "Hadley Wickham [aut, cre], Evan Miller [aut, cph] (Author of included ReadStat code), Danny Smith [aut], Posit Software, PBC [cph, fnd]", + "Maintainer": "Hadley Wickham ", + "Repository": "CRAN" + }, + "here": { + "Package": "here", + "Version": "1.0.2", + "Source": "Repository", + "Title": "A Simpler Way to Find Your Files", + "Date": "2025-09-06", + "Authors@R": "c(person(given = \"Kirill\", family = \"M\\u00fcller\", role = c(\"aut\", \"cre\"), email = \"kirill@cynkra.com\", comment = c(ORCID = \"0000-0002-1416-3412\")), person(given = \"Jennifer\", family = \"Bryan\", role = \"ctb\", email = \"jenny@rstudio.com\", comment = c(ORCID = \"0000-0002-6983-2759\")))", + "Description": "Constructs paths to your project's files. Declare the relative path of a file within your project with 'i_am()'. Use the 'here()' function as a drop-in replacement for 'file.path()', it will always locate the files relative to your project root.", + "License": "MIT + file LICENSE", + "URL": "https://here.r-lib.org/, https://github.com/r-lib/here", + "BugReports": "https://github.com/r-lib/here/issues", + "Imports": [ + "rprojroot (>= 2.1.0)" + ], + "Suggests": [ + "conflicted", + "covr", + "fs", + "knitr", + "palmerpenguins", + "plyr", + "readr", + "rlang", + "rmarkdown", + "testthat", + "uuid", + "withr" + ], + "VignetteBuilder": "knitr", + "Encoding": "UTF-8", + "RoxygenNote": "7.3.3.9000", + "Config/testthat/edition": "3", + "Config/Needs/website": "tidyverse/tidytemplate", + "NeedsCompilation": "no", + "Author": "Kirill Müller [aut, cre] (ORCID: ), Jennifer Bryan [ctb] (ORCID: )", + "Maintainer": "Kirill Müller ", + "Repository": "https://packagemanager.posit.co/cran/latest" + }, + "hexbin": { + "Package": "hexbin", + "Version": "1.28.5", + "Source": "Repository", + "Title": "Hexagonal Binning Routines", + "Authors@R": "c(person(given = \"Dan\", family = \"Carr\", role = \"aut\", email = \"dcarr@voxel.galaxy.gmu.edu\"), person(given = c(\"Nicholas\"), family = \"Lewin-Koh\", role = \"aut\"), person(given = \"Martin\", family = \"Maechler\", role = \"aut\", email = \"maechler@stat.math.ethz.ch\"), person(given = \"Deepayan\", family = \"Sarkar\", role = \"aut\", email = \"deepayan.sarkar@r-project.org\"), person(given = \"Edzer\", family = \"Pebesma\", role = \"cre\", comment = c(ORCID = \"0000-0001-8049-7069\"), email = \"edzer.pebesma@uni-muenster.de\"))", + "Depends": [ + "R (>= 2.0.1)", + "methods" + ], + "Imports": [ + "lattice", + "grid", + "graphics", + "grDevices", + "stats", + "utils" + ], + "Suggests": [ + "marray", + "affy", + "Biobase", + "limma", + "knitr" + ], + "Description": "Binning and plotting functions for hexagonal bins.", + "Collate": "lattice.R BTC.R BTY.R grid.hexagons.R grid.hexlegend.R hbox.R hdiffplot.R hexbinList.R hexbinplot.R hexbin.s4.R hexpanel.R hexplom.R hexPlotMA.R hexutil.R hexViewport.R HO.R LINGRAY.R LOCS.R MAG.R RB.R smoothHexbin.R", + "License": "GPL-2", + "VignetteBuilder": "knitr", + "NeedsCompilation": "yes", + "URL": "https://github.com/edzer/hexbin", + "Author": "Dan Carr [aut], Nicholas Lewin-Koh [aut], Martin Maechler [aut], Deepayan Sarkar [aut], Edzer Pebesma [cre] ()", + "Maintainer": "Edzer Pebesma ", + "Repository": "CRAN" + }, + "highr": { + "Package": "highr", + "Version": "0.11", + "Source": "Repository", + "Type": "Package", + "Title": "Syntax Highlighting for R Source Code", + "Authors@R": "c( person(\"Yihui\", \"Xie\", role = c(\"aut\", \"cre\"), email = \"xie@yihui.name\", comment = c(ORCID = \"0000-0003-0645-5666\")), person(\"Yixuan\", \"Qiu\", role = \"aut\"), person(\"Christopher\", \"Gandrud\", role = \"ctb\"), person(\"Qiang\", \"Li\", role = \"ctb\") )", + "Description": "Provides syntax highlighting for R source code. Currently it supports LaTeX and HTML output. Source code of other languages is supported via Andre Simon's highlight package ().", + "Depends": [ + "R (>= 3.3.0)" + ], + "Imports": [ + "xfun (>= 0.18)" + ], + "Suggests": [ + "knitr", + "markdown", + "testit" + ], + "License": "GPL", + "URL": "https://github.com/yihui/highr", + "BugReports": "https://github.com/yihui/highr/issues", + "VignetteBuilder": "knitr", + "Encoding": "UTF-8", + "RoxygenNote": "7.3.1", + "NeedsCompilation": "no", + "Author": "Yihui Xie [aut, cre] (), Yixuan Qiu [aut], Christopher Gandrud [ctb], Qiang Li [ctb]", + "Maintainer": "Yihui Xie ", + "Repository": "https://packagemanager.posit.co/cran/latest" + }, + "hms": { + "Package": "hms", + "Version": "1.1.4", + "Source": "Repository", + "Title": "Pretty Time of Day", + "Date": "2025-10-11", + "Authors@R": "c( person(\"Kirill\", \"Müller\", , \"kirill@cynkra.com\", role = c(\"aut\", \"cre\"), comment = c(ORCID = \"0000-0002-1416-3412\")), person(\"R Consortium\", role = \"fnd\"), person(\"Posit Software, PBC\", role = \"fnd\", comment = c(ROR = \"03wc8by49\")) )", + "Description": "Implements an S3 class for storing and formatting time-of-day values, based on the 'difftime' class.", + "License": "MIT + file LICENSE", + "URL": "https://hms.tidyverse.org/, https://github.com/tidyverse/hms", + "BugReports": "https://github.com/tidyverse/hms/issues", + "Imports": [ + "cli", + "lifecycle", + "methods", + "pkgconfig", + "rlang (>= 1.0.2)", + "vctrs (>= 0.3.8)" + ], + "Suggests": [ + "crayon", + "lubridate", + "pillar (>= 1.1.0)", + "testthat (>= 3.0.0)" + ], + "Config/Needs/website": "tidyverse/tidytemplate", + "Config/testthat/edition": "3", + "Encoding": "UTF-8", + "RoxygenNote": "7.3.3.9000", + "NeedsCompilation": "no", + "Author": "Kirill Müller [aut, cre] (ORCID: ), R Consortium [fnd], Posit Software, PBC [fnd] (ROR: )", + "Maintainer": "Kirill Müller ", + "Repository": "https://packagemanager.posit.co/cran/latest" + }, + "htmltools": { + "Package": "htmltools", + "Version": "0.5.9", + "Source": "Repository", + "Type": "Package", + "Title": "Tools for HTML", + "Authors@R": "c( person(\"Joe\", \"Cheng\", , \"joe@posit.co\", role = \"aut\"), person(\"Carson\", \"Sievert\", , \"carson@posit.co\", role = c(\"aut\", \"cre\"), comment = c(ORCID = \"0000-0002-4958-2844\")), person(\"Barret\", \"Schloerke\", , \"barret@posit.co\", role = \"aut\", comment = c(ORCID = \"0000-0001-9986-114X\")), person(\"Winston\", \"Chang\", , \"winston@posit.co\", role = \"aut\", comment = c(ORCID = \"0000-0002-1576-2126\")), person(\"Yihui\", \"Xie\", , \"yihui@posit.co\", role = \"aut\"), person(\"Jeff\", \"Allen\", role = \"aut\"), person(\"Posit Software, PBC\", role = c(\"cph\", \"fnd\")) )", + "Description": "Tools for HTML generation and output.", + "License": "GPL (>= 2)", + "URL": "https://github.com/rstudio/htmltools, https://rstudio.github.io/htmltools/", + "BugReports": "https://github.com/rstudio/htmltools/issues", + "Depends": [ + "R (>= 2.14.1)" + ], + "Imports": [ + "base64enc", + "digest", + "fastmap (>= 1.1.0)", + "grDevices", + "rlang (>= 1.0.0)", + "utils" + ], + "Suggests": [ + "Cairo", + "markdown", + "ragg", + "shiny", + "testthat", + "withr" + ], + "Enhances": [ + "knitr" + ], + "Config/Needs/check": "knitr", + "Config/Needs/website": "rstudio/quillt, bench", + "Encoding": "UTF-8", + "RoxygenNote": "7.3.3", + "Collate": "'colors.R' 'fill.R' 'html_dependency.R' 'html_escape.R' 'html_print.R' 'htmltools-package.R' 'images.R' 'known_tags.R' 'selector.R' 'staticimports.R' 'tag_query.R' 'utils.R' 'tags.R' 'template.R'", + "NeedsCompilation": "yes", + "Author": "Joe Cheng [aut], Carson Sievert [aut, cre] (ORCID: ), Barret Schloerke [aut] (ORCID: ), Winston Chang [aut] (ORCID: ), Yihui Xie [aut], Jeff Allen [aut], Posit Software, PBC [cph, fnd]", + "Maintainer": "Carson Sievert ", + "Repository": "CRAN" + }, + "htmlwidgets": { + "Package": "htmlwidgets", + "Version": "1.6.4", + "Source": "Repository", + "Type": "Package", + "Title": "HTML Widgets for R", + "Authors@R": "c( person(\"Ramnath\", \"Vaidyanathan\", role = c(\"aut\", \"cph\")), person(\"Yihui\", \"Xie\", role = \"aut\"), person(\"JJ\", \"Allaire\", role = \"aut\"), person(\"Joe\", \"Cheng\", , \"joe@posit.co\", role = \"aut\"), person(\"Carson\", \"Sievert\", , \"carson@posit.co\", role = c(\"aut\", \"cre\"), comment = c(ORCID = \"0000-0002-4958-2844\")), person(\"Kenton\", \"Russell\", role = c(\"aut\", \"cph\")), person(\"Ellis\", \"Hughes\", role = \"ctb\"), person(\"Posit Software, PBC\", role = c(\"cph\", \"fnd\")) )", + "Description": "A framework for creating HTML widgets that render in various contexts including the R console, 'R Markdown' documents, and 'Shiny' web applications.", + "License": "MIT + file LICENSE", + "URL": "https://github.com/ramnathv/htmlwidgets", + "BugReports": "https://github.com/ramnathv/htmlwidgets/issues", + "Imports": [ + "grDevices", + "htmltools (>= 0.5.7)", + "jsonlite (>= 0.9.16)", + "knitr (>= 1.8)", + "rmarkdown", + "yaml" + ], + "Suggests": [ + "testthat" + ], + "Enhances": [ + "shiny (>= 1.1)" + ], + "VignetteBuilder": "knitr", + "Encoding": "UTF-8", + "RoxygenNote": "7.2.3", + "NeedsCompilation": "no", + "Author": "Ramnath Vaidyanathan [aut, cph], Yihui Xie [aut], JJ Allaire [aut], Joe Cheng [aut], Carson Sievert [aut, cre] (), Kenton Russell [aut, cph], Ellis Hughes [ctb], Posit Software, PBC [cph, fnd]", + "Maintainer": "Carson Sievert ", + "Repository": "https://packagemanager.posit.co/cran/latest" + }, + "httpuv": { + "Package": "httpuv", + "Version": "1.6.16", + "Source": "Repository", + "Type": "Package", + "Title": "HTTP and WebSocket Server Library", + "Authors@R": "c( person(\"Joe\", \"Cheng\", , \"joe@posit.co\", role = \"aut\"), person(\"Winston\", \"Chang\", , \"winston@posit.co\", role = c(\"aut\", \"cre\")), person(\"Posit, PBC\", \"fnd\", role = \"cph\"), person(\"Hector\", \"Corrada Bravo\", role = \"ctb\"), person(\"Jeroen\", \"Ooms\", role = \"ctb\"), person(\"Andrzej\", \"Krzemienski\", role = \"cph\", comment = \"optional.hpp\"), person(\"libuv project contributors\", role = \"cph\", comment = \"libuv library, see src/libuv/AUTHORS file\"), person(\"Joyent, Inc. and other Node contributors\", role = \"cph\", comment = \"libuv library, see src/libuv/AUTHORS file; and http-parser library, see src/http-parser/AUTHORS file\"), person(\"Niels\", \"Provos\", role = \"cph\", comment = \"libuv subcomponent: tree.h\"), person(\"Internet Systems Consortium, Inc.\", role = \"cph\", comment = \"libuv subcomponent: inet_pton and inet_ntop, contained in src/libuv/src/inet.c\"), person(\"Alexander\", \"Chemeris\", role = \"cph\", comment = \"libuv subcomponent: stdint-msvc2008.h (from msinttypes)\"), person(\"Google, Inc.\", role = \"cph\", comment = \"libuv subcomponent: pthread-fixes.c\"), person(\"Sony Mobile Communcations AB\", role = \"cph\", comment = \"libuv subcomponent: pthread-fixes.c\"), person(\"Berkeley Software Design Inc.\", role = \"cph\", comment = \"libuv subcomponent: android-ifaddrs.h, android-ifaddrs.c\"), person(\"Kenneth\", \"MacKay\", role = \"cph\", comment = \"libuv subcomponent: android-ifaddrs.h, android-ifaddrs.c\"), person(\"Emergya (Cloud4all, FP7/2007-2013, grant agreement no 289016)\", role = \"cph\", comment = \"libuv subcomponent: android-ifaddrs.h, android-ifaddrs.c\"), person(\"Steve\", \"Reid\", role = \"aut\", comment = \"SHA-1 implementation\"), person(\"James\", \"Brown\", role = \"aut\", comment = \"SHA-1 implementation\"), person(\"Bob\", \"Trower\", role = \"aut\", comment = \"base64 implementation\"), person(\"Alexander\", \"Peslyak\", role = \"aut\", comment = \"MD5 implementation\"), person(\"Trantor Standard Systems\", role = \"cph\", comment = \"base64 implementation\"), person(\"Igor\", \"Sysoev\", role = \"cph\", comment = \"http-parser\") )", + "Description": "Provides low-level socket and protocol support for handling HTTP and WebSocket requests directly from within R. It is primarily intended as a building block for other packages, rather than making it particularly easy to create complete web applications using httpuv alone. httpuv is built on top of the libuv and http-parser C libraries, both of which were developed by Joyent, Inc. (See LICENSE file for libuv and http-parser license information.)", + "License": "GPL (>= 2) | file LICENSE", + "URL": "https://github.com/rstudio/httpuv", + "BugReports": "https://github.com/rstudio/httpuv/issues", + "Depends": [ + "R (>= 2.15.1)" + ], + "Imports": [ + "later (>= 0.8.0)", + "promises", + "R6", + "Rcpp (>= 1.0.7)", + "utils" + ], + "Suggests": [ + "callr", + "curl", + "jsonlite", + "testthat", + "websocket" + ], + "LinkingTo": [ + "later", + "Rcpp" + ], + "Encoding": "UTF-8", + "RoxygenNote": "7.3.2", + "SystemRequirements": "GNU make, zlib", + "Collate": "'RcppExports.R' 'httpuv.R' 'random_port.R' 'server.R' 'staticServer.R' 'static_paths.R' 'utils.R'", + "NeedsCompilation": "yes", + "Author": "Joe Cheng [aut], Winston Chang [aut, cre], Posit, PBC fnd [cph], Hector Corrada Bravo [ctb], Jeroen Ooms [ctb], Andrzej Krzemienski [cph] (optional.hpp), libuv project contributors [cph] (libuv library, see src/libuv/AUTHORS file), Joyent, Inc. and other Node contributors [cph] (libuv library, see src/libuv/AUTHORS file; and http-parser library, see src/http-parser/AUTHORS file), Niels Provos [cph] (libuv subcomponent: tree.h), Internet Systems Consortium, Inc. [cph] (libuv subcomponent: inet_pton and inet_ntop, contained in src/libuv/src/inet.c), Alexander Chemeris [cph] (libuv subcomponent: stdint-msvc2008.h (from msinttypes)), Google, Inc. [cph] (libuv subcomponent: pthread-fixes.c), Sony Mobile Communcations AB [cph] (libuv subcomponent: pthread-fixes.c), Berkeley Software Design Inc. [cph] (libuv subcomponent: android-ifaddrs.h, android-ifaddrs.c), Kenneth MacKay [cph] (libuv subcomponent: android-ifaddrs.h, android-ifaddrs.c), Emergya (Cloud4all, FP7/2007-2013, grant agreement no 289016) [cph] (libuv subcomponent: android-ifaddrs.h, android-ifaddrs.c), Steve Reid [aut] (SHA-1 implementation), James Brown [aut] (SHA-1 implementation), Bob Trower [aut] (base64 implementation), Alexander Peslyak [aut] (MD5 implementation), Trantor Standard Systems [cph] (base64 implementation), Igor Sysoev [cph] (http-parser)", + "Maintainer": "Winston Chang ", + "Repository": "https://packagemanager.posit.co/cran/latest" + }, + "httr": { + "Package": "httr", + "Version": "1.4.7", + "Source": "Repository", + "Title": "Tools for Working with URLs and HTTP", + "Authors@R": "c( person(\"Hadley\", \"Wickham\", , \"hadley@posit.co\", role = c(\"aut\", \"cre\")), person(\"Posit, PBC\", role = c(\"cph\", \"fnd\")) )", + "Description": "Useful tools for working with HTTP organised by HTTP verbs (GET(), POST(), etc). Configuration functions make it easy to control additional request components (authenticate(), add_headers() and so on).", + "License": "MIT + file LICENSE", + "URL": "https://httr.r-lib.org/, https://github.com/r-lib/httr", + "BugReports": "https://github.com/r-lib/httr/issues", + "Depends": [ + "R (>= 3.5)" + ], + "Imports": [ + "curl (>= 5.0.2)", + "jsonlite", + "mime", + "openssl (>= 0.8)", + "R6" + ], + "Suggests": [ + "covr", + "httpuv", + "jpeg", + "knitr", + "png", + "readr", + "rmarkdown", + "testthat (>= 0.8.0)", + "xml2" + ], + "VignetteBuilder": "knitr", + "Config/Needs/website": "tidyverse/tidytemplate", + "Encoding": "UTF-8", + "RoxygenNote": "7.2.3", + "NeedsCompilation": "no", + "Author": "Hadley Wickham [aut, cre], Posit, PBC [cph, fnd]", + "Maintainer": "Hadley Wickham ", + "Repository": "https://packagemanager.posit.co/cran/latest" + }, + "httr2": { + "Package": "httr2", + "Version": "1.2.2", + "Source": "Repository", + "Title": "Perform HTTP Requests and Process the Responses", + "Authors@R": "c( person(\"Hadley\", \"Wickham\", , \"hadley@posit.co\", role = c(\"aut\", \"cre\")), person(\"Posit Software, PBC\", role = c(\"cph\", \"fnd\")), person(\"Maximilian\", \"Girlich\", role = \"ctb\") )", + "Description": "Tools for creating and modifying HTTP requests, then performing them and processing the results. 'httr2' is a modern re-imagining of 'httr' that uses a pipe-based interface and solves more of the problems that API wrapping packages face.", + "License": "MIT + file LICENSE", + "URL": "https://httr2.r-lib.org, https://github.com/r-lib/httr2", + "BugReports": "https://github.com/r-lib/httr2/issues", + "Depends": [ + "R (>= 4.1)" + ], + "Imports": [ + "cli (>= 3.0.0)", + "curl (>= 6.4.0)", + "glue", + "lifecycle", + "magrittr", + "openssl", + "R6", + "rappdirs", + "rlang (>= 1.1.0)", + "vctrs (>= 0.6.3)", + "withr" + ], + "Suggests": [ + "askpass", + "bench", + "clipr", + "covr", + "docopt", + "httpuv", + "jose", + "jsonlite", + "knitr", + "later (>= 1.4.0)", + "nanonext", + "otel (>= 0.2.0)", + "otelsdk (>= 0.2.0)", + "paws.common (>= 0.8.0)", + "promises", + "rmarkdown", + "testthat (>= 3.1.8)", + "tibble", + "webfakes (>= 1.4.0)", + "xml2" + ], + "VignetteBuilder": "knitr", + "Config/Needs/website": "tidyverse/tidytemplate", + "Config/testthat/edition": "3", + "Config/testthat/parallel": "true", + "Config/testthat/start-first": "resp-stream, req-perform", + "Encoding": "UTF-8", + "RoxygenNote": "7.3.3", + "NeedsCompilation": "no", + "Author": "Hadley Wickham [aut, cre], Posit Software, PBC [cph, fnd], Maximilian Girlich [ctb]", + "Maintainer": "Hadley Wickham ", + "Repository": "CRAN" + }, + "hunspell": { + "Package": "hunspell", + "Version": "3.0.6", + "Source": "Repository", + "Type": "Package", + "Title": "High-Performance Stemmer, Tokenizer, and Spell Checker", + "Depends": [ + "R (>= 3.0.2)" + ], + "Encoding": "UTF-8", + "Authors@R": "c( person(\"Jeroen\", \"Ooms\", ,\"jeroenooms@gmail.com\", role = c(\"aut\", \"cre\")), person(\"Authors of libhunspell\", role = \"cph\", comment = \"see AUTHORS file\"))", + "Description": "Low level spell checker and morphological analyzer based on the famous 'hunspell' library . The package can analyze or check individual words as well as parse text, latex, html or xml documents. For a more user-friendly interface use the 'spelling' package which builds on this package to automate checking of files, documentation and vignettes in all common formats.", + "License": "GPL-2 | LGPL-2.1 | MPL-1.1", + "URL": "https://docs.ropensci.org/hunspell/ https://ropensci.r-universe.dev/hunspell", + "BugReports": "https://github.com/ropensci/hunspell/issues", + "Imports": [ + "Rcpp", + "digest" + ], + "LinkingTo": [ + "Rcpp (>= 0.12.12)" + ], + "Suggests": [ + "spelling", + "testthat", + "knitr", + "rmarkdown" + ], + "VignetteBuilder": "knitr", + "RoxygenNote": "7.2.3", + "Language": "en-US", + "NeedsCompilation": "yes", + "Author": "Jeroen Ooms [aut, cre], Authors of libhunspell [cph] (see AUTHORS file)", + "Maintainer": "Jeroen Ooms ", + "Repository": "CRAN" + }, + "ids": { + "Package": "ids", + "Version": "1.0.1", + "Source": "Repository", + "Title": "Generate Random Identifiers", + "Authors@R": "person(\"Rich\", \"FitzJohn\", role = c(\"aut\", \"cre\"), email = \"rich.fitzjohn@gmail.com\")", + "Description": "Generate random or human readable and pronounceable identifiers.", + "License": "MIT + file LICENSE", + "URL": "https://github.com/richfitz/ids", + "BugReports": "https://github.com/richfitz/ids/issues", + "Imports": [ + "openssl", + "uuid" + ], + "Suggests": [ + "knitr", + "rcorpora", + "rmarkdown", + "testthat" + ], + "RoxygenNote": "6.0.1", + "VignetteBuilder": "knitr", + "NeedsCompilation": "no", + "Author": "Rich FitzJohn [aut, cre]", + "Maintainer": "Rich FitzJohn ", + "Repository": "CRAN" + }, + "igraph": { + "Package": "igraph", + "Version": "2.2.1", + "Source": "Repository", + "Title": "Network Analysis and Visualization", + "Authors@R": "c( person(\"Gábor\", \"Csárdi\", , \"csardi.gabor@gmail.com\", role = \"aut\", comment = c(ORCID = \"0000-0001-7098-9676\")), person(\"Tamás\", \"Nepusz\", , \"ntamas@gmail.com\", role = \"aut\", comment = c(ORCID = \"0000-0002-1451-338X\")), person(\"Vincent\", \"Traag\", role = \"aut\", comment = c(ORCID = \"0000-0003-3170-3879\")), person(\"Szabolcs\", \"Horvát\", , \"szhorvat@gmail.com\", role = \"aut\", comment = c(ORCID = \"0000-0002-3100-523X\")), person(\"Fabio\", \"Zanini\", , \"fabio.zanini@unsw.edu.au\", role = \"aut\", comment = c(ORCID = \"0000-0001-7097-8539\")), person(\"Daniel\", \"Noom\", role = \"aut\"), person(\"Kirill\", \"Müller\", , \"kirill@cynkra.com\", role = c(\"aut\", \"cre\"), comment = c(ORCID = \"0000-0002-1416-3412\")), person(\"Michael\", \"Antonov\", role = \"ctb\"), person(\"Chan Zuckerberg Initiative\", role = \"fnd\", comment = c(ROR = \"02qenvm24\")), person(\"David\", \"Schoch\", , \"david.schoch@cynkra.com\", role = \"aut\", comment = c(ORCID = \"0000-0003-2952-4812\")), person(\"Maëlle\", \"Salmon\", , \"maelle@cynkra.com\", role = \"aut\", comment = c(ORCID = \"0000-0002-2815-0399\")) )", + "Description": "Routines for simple graphs and network analysis. It can handle large graphs very well and provides functions for generating random and regular graphs, graph visualization, centrality methods and much more.", + "License": "GPL (>= 2)", + "URL": "https://r.igraph.org/, https://igraph.org/, https://igraph.discourse.group/", + "BugReports": "https://github.com/igraph/rigraph/issues", + "Depends": [ + "methods", + "R (>= 3.5.0)" + ], + "Imports": [ + "cli", + "graphics", + "grDevices", + "lifecycle", + "magrittr", + "Matrix", + "pkgconfig (>= 2.0.0)", + "rlang (>= 1.1.0)", + "stats", + "utils", + "vctrs" + ], + "Suggests": [ + "ape (>= 5.7-0.1)", + "callr", + "decor", + "digest", + "igraphdata", + "knitr", + "rgl (>= 1.3.14)", + "rmarkdown", + "scales", + "stats4", + "tcltk", + "testthat", + "vdiffr", + "withr" + ], + "Enhances": [ + "graph" + ], + "LinkingTo": [ + "cpp11 (>= 0.5.0)" + ], + "VignetteBuilder": "knitr", + "Config/build/compilation-database": "false", + "Config/build/never-clean": "true", + "Config/comment/compilation-database": "Generate manually with pkgload:::generate_db() for faster pkgload::load_all()", + "Config/Needs/build": "r-lib/roxygen2, devtools, irlba, pkgconfig, igraph/igraph.r2cdocs, moodymudskipper/devtag", + "Config/Needs/coverage": "covr", + "Config/Needs/website": "here, readr, tibble, xmlparsedata, xml2", + "Config/testthat/edition": "3", + "Config/testthat/parallel": "true", + "Config/testthat/start-first": "aaa-auto, vs-es, scan, vs-operators, weakref, watts.strogatz.game", + "Encoding": "UTF-8", + "RoxygenNote": "7.3.3.9000", + "SystemRequirements": "libxml2 (optional), glpk (>= 4.57, optional)", + "NeedsCompilation": "yes", + "Author": "Gábor Csárdi [aut] (ORCID: ), Tamás Nepusz [aut] (ORCID: ), Vincent Traag [aut] (ORCID: ), Szabolcs Horvát [aut] (ORCID: ), Fabio Zanini [aut] (ORCID: ), Daniel Noom [aut], Kirill Müller [aut, cre] (ORCID: ), Michael Antonov [ctb], Chan Zuckerberg Initiative [fnd] (ROR: ), David Schoch [aut] (ORCID: ), Maëlle Salmon [aut] (ORCID: )", + "Maintainer": "Kirill Müller ", + "Repository": "https://packagemanager.posit.co/cran/latest" + }, + "invgamma": { + "Package": "invgamma", + "Version": "1.2", + "Source": "Repository", + "Type": "Package", + "Title": "The Inverse Gamma Distribution", + "URL": "https://github.com/dkahle/invgamma, https://www.kahle.io/invgamma/", + "BugReports": "https://github.com/dkahle/invgamma/issues", + "Authors@R": "c( person(\"David\", \"Kahle\", email = \"david.kahle@gmail.com\", role = c(\"aut\", \"cre\", \"cph\")), person(\"James\", \"Stamey\", email = \"james_stamey@baylor.edu\", role = c(\"aut\", \"cph\")) )", + "Description": "Light weight implementation of the standard distribution functions for the inverse gamma distribution, wrapping those for the gamma distribution in the stats package.", + "License": "MIT + file LICENSE", + "RoxygenNote": "7.3.2", + "Encoding": "UTF-8", + "Suggests": [ + "testthat (>= 3.0.0)" + ], + "Config/testthat/edition": "3", + "NeedsCompilation": "no", + "Author": "David Kahle [aut, cre, cph], James Stamey [aut, cph]", + "Maintainer": "David Kahle ", + "Repository": "CRAN" + }, + "irlba": { + "Package": "irlba", + "Version": "2.3.5.1", + "Source": "Repository", + "Type": "Package", + "Title": "Fast Truncated Singular Value Decomposition and Principal Components Analysis for Large Dense and Sparse Matrices", + "Date": "2021-12-05", + "Authors@R": "c( person(\"Jim\", \"Baglama\", role=c(\"aut\", \"cph\"), email=\"jbaglama@uri.edu\"), person(\"Lothar\", \"Reichel\", role=c(\"aut\", \"cph\"), email=\"reichel@math.kent.edu\"), person(\"B. W.\", \"Lewis\", role=c(\"aut\",\"cre\",\"cph\"), email=\"blewis@illposed.net\"))", + "Description": "Fast and memory efficient methods for truncated singular value decomposition and principal components analysis of large sparse and dense matrices.", + "Depends": [ + "R (>= 3.6.2)", + "Matrix" + ], + "LinkingTo": [ + "Matrix" + ], + "Imports": [ + "stats", + "methods" + ], + "License": "GPL-3", + "BugReports": "https://github.com/bwlewis/irlba/issues", + "RoxygenNote": "5.0.1", + "NeedsCompilation": "yes", + "Author": "Jim Baglama [aut, cph], Lothar Reichel [aut, cph], B. W. Lewis [aut, cre, cph]", + "Maintainer": "B. W. Lewis ", + "Repository": "https://packagemanager.posit.co/cran/latest", + "Encoding": "UTF-8" + }, + "isoband": { + "Package": "isoband", + "Version": "0.3.0", + "Source": "Repository", + "Title": "Generate Isolines and Isobands from Regularly Spaced Elevation Grids", + "Authors@R": "c( person(\"Hadley\", \"Wickham\", , \"hadley@posit.co\", role = \"aut\", comment = c(ORCID = \"0000-0003-4757-117X\")), person(\"Claus O.\", \"Wilke\", , \"wilke@austin.utexas.edu\", role = \"aut\", comment = c(\"Original author\", ORCID = \"0000-0002-7470-9261\")), person(\"Thomas Lin\", \"Pedersen\", , \"thomas.pedersen@posit.co\", role = c(\"aut\", \"cre\"), comment = c(ORCID = \"0000-0002-5147-4711\")), person(\"Posit, PBC\", role = c(\"cph\", \"fnd\"), comment = c(ROR = \"03wc8by49\")) )", + "Description": "A fast C++ implementation to generate contour lines (isolines) and contour polygons (isobands) from regularly spaced grids containing elevation data.", + "License": "MIT + file LICENSE", + "URL": "https://isoband.r-lib.org, https://github.com/r-lib/isoband", + "BugReports": "https://github.com/r-lib/isoband/issues", + "Imports": [ + "cli", + "grid", + "rlang", + "utils" + ], + "Suggests": [ + "covr", + "ggplot2", + "knitr", + "magick", + "bench", + "rmarkdown", + "sf", + "testthat (>= 3.0.0)", + "xml2" + ], + "VignetteBuilder": "knitr", + "Config/Needs/website": "tidyverse/tidytemplate", + "Config/testthat/edition": "3", + "Config/usethis/last-upkeep": "2025-12-05", + "Encoding": "UTF-8", + "RoxygenNote": "7.3.3", + "Config/build/compilation-database": "true", + "LinkingTo": [ + "cpp11" + ], + "NeedsCompilation": "yes", + "Author": "Hadley Wickham [aut] (ORCID: ), Claus O. Wilke [aut] (Original author, ORCID: ), Thomas Lin Pedersen [aut, cre] (ORCID: ), Posit, PBC [cph, fnd] (ROR: )", + "Maintainer": "Thomas Lin Pedersen ", + "Repository": "CRAN" + }, + "iterators": { + "Package": "iterators", + "Version": "1.0.14", + "Source": "Repository", + "Type": "Package", + "Title": "Provides Iterator Construct", + "Authors@R": "c(person(\"Folashade\", \"Daniel\", role=\"cre\", email=\"fdaniel@microsoft.com\"), person(\"Revolution\", \"Analytics\", role=c(\"aut\", \"cph\")), person(\"Steve\", \"Weston\", role=\"aut\"))", + "Description": "Support for iterators, which allow a programmer to traverse through all the elements of a vector, list, or other collection of data.", + "URL": "https://github.com/RevolutionAnalytics/iterators", + "Depends": [ + "R (>= 2.5.0)", + "utils" + ], + "Suggests": [ + "RUnit", + "foreach" + ], + "License": "Apache License (== 2.0)", + "NeedsCompilation": "no", + "Author": "Folashade Daniel [cre], Revolution Analytics [aut, cph], Steve Weston [aut]", + "Maintainer": "Folashade Daniel ", + "Repository": "RSPM", + "Encoding": "UTF-8" + }, + "jquerylib": { + "Package": "jquerylib", + "Version": "0.1.4", + "Source": "Repository", + "Title": "Obtain 'jQuery' as an HTML Dependency Object", + "Authors@R": "c( person(\"Carson\", \"Sievert\", role = c(\"aut\", \"cre\"), email = \"carson@rstudio.com\", comment = c(ORCID = \"0000-0002-4958-2844\")), person(\"Joe\", \"Cheng\", role = \"aut\", email = \"joe@rstudio.com\"), person(family = \"RStudio\", role = \"cph\"), person(family = \"jQuery Foundation\", role = \"cph\", comment = \"jQuery library and jQuery UI library\"), person(family = \"jQuery contributors\", role = c(\"ctb\", \"cph\"), comment = \"jQuery library; authors listed in inst/lib/jquery-AUTHORS.txt\") )", + "Description": "Obtain any major version of 'jQuery' () and use it in any webpage generated by 'htmltools' (e.g. 'shiny', 'htmlwidgets', and 'rmarkdown'). Most R users don't need to use this package directly, but other R packages (e.g. 'shiny', 'rmarkdown', etc.) depend on this package to avoid bundling redundant copies of 'jQuery'.", + "License": "MIT + file LICENSE", + "Encoding": "UTF-8", + "Config/testthat/edition": "3", + "RoxygenNote": "7.0.2", + "Imports": [ + "htmltools" + ], + "Suggests": [ + "testthat" + ], + "NeedsCompilation": "no", + "Author": "Carson Sievert [aut, cre] (), Joe Cheng [aut], RStudio [cph], jQuery Foundation [cph] (jQuery library and jQuery UI library), jQuery contributors [ctb, cph] (jQuery library; authors listed in inst/lib/jquery-AUTHORS.txt)", + "Maintainer": "Carson Sievert ", + "Repository": "https://packagemanager.posit.co/cran/latest" + }, + "jsonlite": { + "Package": "jsonlite", + "Version": "2.0.0", + "Source": "Repository", + "Title": "A Simple and Robust JSON Parser and Generator for R", + "License": "MIT + file LICENSE", + "Depends": [ + "methods" + ], + "Authors@R": "c( person(\"Jeroen\", \"Ooms\", role = c(\"aut\", \"cre\"), email = \"jeroenooms@gmail.com\", comment = c(ORCID = \"0000-0002-4035-0289\")), person(\"Duncan\", \"Temple Lang\", role = \"ctb\"), person(\"Lloyd\", \"Hilaiel\", role = \"cph\", comment=\"author of bundled libyajl\"))", + "URL": "https://jeroen.r-universe.dev/jsonlite https://arxiv.org/abs/1403.2805", + "BugReports": "https://github.com/jeroen/jsonlite/issues", + "Maintainer": "Jeroen Ooms ", + "VignetteBuilder": "knitr, R.rsp", + "Description": "A reasonably fast JSON parser and generator, optimized for statistical data and the web. Offers simple, flexible tools for working with JSON in R, and is particularly powerful for building pipelines and interacting with a web API. The implementation is based on the mapping described in the vignette (Ooms, 2014). In addition to converting JSON data from/to R objects, 'jsonlite' contains functions to stream, validate, and prettify JSON data. The unit tests included with the package verify that all edge cases are encoded and decoded consistently for use with dynamic data in systems and applications.", + "Suggests": [ + "httr", + "vctrs", + "testthat", + "knitr", + "rmarkdown", + "R.rsp", + "sf" + ], + "RoxygenNote": "7.3.2", + "Encoding": "UTF-8", + "NeedsCompilation": "yes", + "Author": "Jeroen Ooms [aut, cre] (), Duncan Temple Lang [ctb], Lloyd Hilaiel [cph] (author of bundled libyajl)", + "Repository": "https://packagemanager.posit.co/cran/latest" + }, + "jsonvalidate": { + "Package": "jsonvalidate", + "Version": "1.5.0", + "Source": "Repository", + "Title": "Validate 'JSON' Schema", + "Authors@R": "c(person(\"Rich\", \"FitzJohn\", role = c(\"aut\", \"cre\"), email = \"rich.fitzjohn@gmail.com\"), person(\"Rob\", \"Ashton\", role = \"aut\"), person(\"Alex\", \"Hill\", role = \"ctb\"), person(\"Alicia\", \"Schep\", role = \"ctb\"), person(\"Ian\", \"Lyttle\", role = \"ctb\"), person(\"Kara\", \"Woo\", role = \"ctb\"), person(\"Mathias\", \"Buus\", role = c(\"aut\", \"cph\"), comment = \"Author of bundled imjv library\"), person(\"Evgeny\", \"Poberezkin\", role = c(\"aut\", \"cph\"), comment = \"Author of bundled Ajv library\"))", + "Maintainer": "Rich FitzJohn ", + "Description": "Uses the node library 'is-my-json-valid' or 'ajv' to validate 'JSON' against a 'JSON' schema. Drafts 04, 06 and 07 of 'JSON' schema are supported.", + "License": "MIT + file LICENSE", + "URL": "https://docs.ropensci.org/jsonvalidate/, https://github.com/ropensci/jsonvalidate", + "BugReports": "https://github.com/ropensci/jsonvalidate/issues", + "Imports": [ + "R6", + "V8" + ], + "Suggests": [ + "knitr", + "jsonlite", + "rmarkdown", + "testthat", + "withr" + ], + "RoxygenNote": "7.3.2", + "VignetteBuilder": "knitr", + "Encoding": "UTF-8", + "Language": "en-GB", + "Config/testthat/edition": "3", + "NeedsCompilation": "no", + "Author": "Rich FitzJohn [aut, cre], Rob Ashton [aut], Alex Hill [ctb], Alicia Schep [ctb], Ian Lyttle [ctb], Kara Woo [ctb], Mathias Buus [aut, cph] (Author of bundled imjv library), Evgeny Poberezkin [aut, cph] (Author of bundled Ajv library)", + "Repository": "RSPM" + }, + "kernlab": { + "Package": "kernlab", + "Version": "0.9-33", + "Source": "Repository", + "Title": "Kernel-Based Machine Learning Lab", + "Authors@R": "c(person(\"Alexandros\", \"Karatzoglou\", role = c(\"aut\", \"cre\"), email = \"alexandros.karatzoglou@gmail.com\"), person(\"Alex\", \"Smola\", role = \"aut\"), person(\"Kurt\", \"Hornik\", role = \"aut\", email = \"Kurt.Hornik@R-project.org\", comment = c(ORCID = \"0000-0003-4198-9911\")), person(\"National ICT Australia (NICTA)\", role = \"cph\"), person(c(\"Michael\", \"A.\"), \"Maniscalco\", role = c(\"ctb\", \"cph\")), person(c(\"Choon\", \"Hui\"), \"Teo\", role = \"ctb\"))", + "Description": "Kernel-based machine learning methods for classification, regression, clustering, novelty detection, quantile regression and dimensionality reduction. Among other methods 'kernlab' includes Support Vector Machines, Spectral Clustering, Kernel PCA, Gaussian Processes and a QP solver.", + "Depends": [ + "R (>= 2.10)" + ], + "Imports": [ + "methods", + "stats", + "grDevices", + "graphics" + ], + "LazyLoad": "Yes", + "License": "GPL-2", + "NeedsCompilation": "yes", + "Author": "Alexandros Karatzoglou [aut, cre], Alex Smola [aut], Kurt Hornik [aut] (), National ICT Australia (NICTA) [cph], Michael A. Maniscalco [ctb, cph], Choon Hui Teo [ctb]", + "Maintainer": "Alexandros Karatzoglou ", + "Repository": "https://packagemanager.posit.co/cran/latest", + "Encoding": "UTF-8" + }, + "knitr": { + "Package": "knitr", + "Version": "1.51", + "Source": "Repository", + "Type": "Package", + "Title": "A General-Purpose Package for Dynamic Report Generation in R", + "Authors@R": "c( person(\"Yihui\", \"Xie\", role = c(\"aut\", \"cre\"), email = \"xie@yihui.name\", comment = c(ORCID = \"0000-0003-0645-5666\", URL = \"https://yihui.org\")), person(\"Abhraneel\", \"Sarma\", role = \"ctb\"), person(\"Adam\", \"Vogt\", role = \"ctb\"), person(\"Alastair\", \"Andrew\", role = \"ctb\"), person(\"Alex\", \"Zvoleff\", role = \"ctb\"), person(\"Amar\", \"Al-Zubaidi\", role = \"ctb\"), person(\"Andre\", \"Simon\", role = \"ctb\", comment = \"the CSS files under inst/themes/ were derived from the Highlight package http://www.andre-simon.de\"), person(\"Aron\", \"Atkins\", role = \"ctb\"), person(\"Aaron\", \"Wolen\", role = \"ctb\"), person(\"Ashley\", \"Manton\", role = \"ctb\"), person(\"Atsushi\", \"Yasumoto\", role = \"ctb\", comment = c(ORCID = \"0000-0002-8335-495X\")), person(\"Ben\", \"Baumer\", role = \"ctb\"), person(\"Brian\", \"Diggs\", role = \"ctb\"), person(\"Brian\", \"Zhang\", role = \"ctb\"), person(\"Bulat\", \"Yapparov\", role = \"ctb\"), person(\"Cassio\", \"Pereira\", role = \"ctb\"), person(\"Christophe\", \"Dervieux\", role = \"ctb\"), person(\"David\", \"Hall\", role = \"ctb\"), person(\"David\", \"Hugh-Jones\", role = \"ctb\"), person(\"David\", \"Robinson\", role = \"ctb\"), person(\"Doug\", \"Hemken\", role = \"ctb\"), person(\"Duncan\", \"Murdoch\", role = \"ctb\"), person(\"Elio\", \"Campitelli\", role = \"ctb\"), person(\"Ellis\", \"Hughes\", role = \"ctb\"), person(\"Emily\", \"Riederer\", role = \"ctb\"), person(\"Fabian\", \"Hirschmann\", role = \"ctb\"), person(\"Fitch\", \"Simeon\", role = \"ctb\"), person(\"Forest\", \"Fang\", role = \"ctb\"), person(c(\"Frank\", \"E\", \"Harrell\", \"Jr\"), role = \"ctb\", comment = \"the Sweavel package at inst/misc/Sweavel.sty\"), person(\"Garrick\", \"Aden-Buie\", role = \"ctb\"), person(\"Gregoire\", \"Detrez\", role = \"ctb\"), person(\"Hadley\", \"Wickham\", role = \"ctb\"), person(\"Hao\", \"Zhu\", role = \"ctb\"), person(\"Heewon\", \"Jeon\", role = \"ctb\"), person(\"Henrik\", \"Bengtsson\", role = \"ctb\"), person(\"Hiroaki\", \"Yutani\", role = \"ctb\"), person(\"Ian\", \"Lyttle\", role = \"ctb\"), person(\"Hodges\", \"Daniel\", role = \"ctb\"), person(\"Jacob\", \"Bien\", role = \"ctb\"), person(\"Jake\", \"Burkhead\", role = \"ctb\"), person(\"James\", \"Manton\", role = \"ctb\"), person(\"Jared\", \"Lander\", role = \"ctb\"), person(\"Jason\", \"Punyon\", role = \"ctb\"), person(\"Javier\", \"Luraschi\", role = \"ctb\"), person(\"Jeff\", \"Arnold\", role = \"ctb\"), person(\"Jenny\", \"Bryan\", role = \"ctb\"), person(\"Jeremy\", \"Ashkenas\", role = c(\"ctb\", \"cph\"), comment = \"the CSS file at inst/misc/docco-classic.css\"), person(\"Jeremy\", \"Stephens\", role = \"ctb\"), person(\"Jim\", \"Hester\", role = \"ctb\"), person(\"Joe\", \"Cheng\", role = \"ctb\"), person(\"Johannes\", \"Ranke\", role = \"ctb\"), person(\"John\", \"Honaker\", role = \"ctb\"), person(\"John\", \"Muschelli\", role = \"ctb\"), person(\"Jonathan\", \"Keane\", role = \"ctb\"), person(\"JJ\", \"Allaire\", role = \"ctb\"), person(\"Johan\", \"Toloe\", role = \"ctb\"), person(\"Jonathan\", \"Sidi\", role = \"ctb\"), person(\"Joseph\", \"Larmarange\", role = \"ctb\"), person(\"Julien\", \"Barnier\", role = \"ctb\"), person(\"Kaiyin\", \"Zhong\", role = \"ctb\"), person(\"Kamil\", \"Slowikowski\", role = \"ctb\"), person(\"Karl\", \"Forner\", role = \"ctb\"), person(c(\"Kevin\", \"K.\"), \"Smith\", role = \"ctb\"), person(\"Kirill\", \"Mueller\", role = \"ctb\"), person(\"Kohske\", \"Takahashi\", role = \"ctb\"), person(\"Lorenz\", \"Walthert\", role = \"ctb\"), person(\"Lucas\", \"Gallindo\", role = \"ctb\"), person(\"Marius\", \"Hofert\", role = \"ctb\"), person(\"Martin\", \"Modrák\", role = \"ctb\"), person(\"Michael\", \"Chirico\", role = \"ctb\"), person(\"Michael\", \"Friendly\", role = \"ctb\"), person(\"Michal\", \"Bojanowski\", role = \"ctb\"), person(\"Michel\", \"Kuhlmann\", role = \"ctb\"), person(\"Miller\", \"Patrick\", role = \"ctb\"), person(\"Nacho\", \"Caballero\", role = \"ctb\"), person(\"Nick\", \"Salkowski\", role = \"ctb\"), person(\"Niels Richard\", \"Hansen\", role = \"ctb\"), person(\"Noam\", \"Ross\", role = \"ctb\"), person(\"Obada\", \"Mahdi\", role = \"ctb\"), person(\"Pavel N.\", \"Krivitsky\", role = \"ctb\", comment=c(ORCID = \"0000-0002-9101-3362\")), person(\"Pedro\", \"Faria\", role = \"ctb\"), person(\"Qiang\", \"Li\", role = \"ctb\"), person(\"Ramnath\", \"Vaidyanathan\", role = \"ctb\"), person(\"Richard\", \"Cotton\", role = \"ctb\"), person(\"Robert\", \"Krzyzanowski\", role = \"ctb\"), person(\"Rodrigo\", \"Copetti\", role = \"ctb\"), person(\"Romain\", \"Francois\", role = \"ctb\"), person(\"Ruaridh\", \"Williamson\", role = \"ctb\"), person(\"Sagiru\", \"Mati\", role = \"ctb\", comment = c(ORCID = \"0000-0003-1413-3974\")), person(\"Scott\", \"Kostyshak\", role = \"ctb\"), person(\"Sebastian\", \"Meyer\", role = \"ctb\"), person(\"Sietse\", \"Brouwer\", role = \"ctb\"), person(c(\"Simon\", \"de\"), \"Bernard\", role = \"ctb\"), person(\"Sylvain\", \"Rousseau\", role = \"ctb\"), person(\"Taiyun\", \"Wei\", role = \"ctb\"), person(\"Thibaut\", \"Assus\", role = \"ctb\"), person(\"Thibaut\", \"Lamadon\", role = \"ctb\"), person(\"Thomas\", \"Leeper\", role = \"ctb\"), person(\"Tim\", \"Mastny\", role = \"ctb\"), person(\"Tom\", \"Torsney-Weir\", role = \"ctb\"), person(\"Trevor\", \"Davis\", role = \"ctb\"), person(\"Viktoras\", \"Veitas\", role = \"ctb\"), person(\"Weicheng\", \"Zhu\", role = \"ctb\"), person(\"Wush\", \"Wu\", role = \"ctb\"), person(\"Zachary\", \"Foster\", role = \"ctb\"), person(\"Zhian N.\", \"Kamvar\", role = \"ctb\", comment = c(ORCID = \"0000-0003-1458-7108\")), person(given = \"Posit Software, PBC\", role = c(\"cph\", \"fnd\")) )", + "Description": "Provides a general-purpose tool for dynamic report generation in R using Literate Programming techniques.", + "Depends": [ + "R (>= 3.6.0)" + ], + "Imports": [ + "evaluate (>= 0.15)", + "highr (>= 0.11)", + "methods", + "tools", + "xfun (>= 0.52)", + "yaml (>= 2.1.19)" + ], + "Suggests": [ + "bslib", + "DBI (>= 0.4-1)", + "digest", + "formatR", + "gifski", + "gridSVG", + "htmlwidgets (>= 0.7)", + "jpeg", + "JuliaCall (>= 0.11.1)", + "magick", + "litedown", + "markdown (>= 1.3)", + "otel", + "otelsdk", + "png", + "ragg", + "reticulate (>= 1.4)", + "rgl (>= 0.95.1201)", + "rlang", + "rmarkdown", + "sass", + "showtext", + "styler (>= 1.2.0)", + "targets (>= 0.6.0)", + "testit", + "tibble", + "tikzDevice (>= 0.10)", + "tinytex (>= 0.56)", + "webshot", + "rstudioapi", + "svglite" + ], + "License": "GPL", + "URL": "https://yihui.org/knitr/", + "BugReports": "https://github.com/yihui/knitr/issues", + "Encoding": "UTF-8", + "VignetteBuilder": "litedown, knitr", + "SystemRequirements": "Package vignettes based on R Markdown v2 or reStructuredText require Pandoc (http://pandoc.org). The function rst2pdf() requires rst2pdf (https://github.com/rst2pdf/rst2pdf).", + "Collate": "'block.R' 'cache.R' 'citation.R' 'hooks-html.R' 'plot.R' 'utils.R' 'defaults.R' 'concordance.R' 'engine.R' 'highlight.R' 'themes.R' 'header.R' 'hooks-asciidoc.R' 'hooks-chunk.R' 'hooks-extra.R' 'hooks-latex.R' 'hooks-md.R' 'hooks-rst.R' 'hooks-textile.R' 'hooks.R' 'otel.R' 'output.R' 'package.R' 'pandoc.R' 'params.R' 'parser.R' 'pattern.R' 'rocco.R' 'spin.R' 'table.R' 'template.R' 'utils-conversion.R' 'utils-rd2html.R' 'utils-string.R' 'utils-sweave.R' 'utils-upload.R' 'utils-vignettes.R' 'zzz.R'", + "RoxygenNote": "7.3.3", + "NeedsCompilation": "no", + "Author": "Yihui Xie [aut, cre] (ORCID: , URL: https://yihui.org), Abhraneel Sarma [ctb], Adam Vogt [ctb], Alastair Andrew [ctb], Alex Zvoleff [ctb], Amar Al-Zubaidi [ctb], Andre Simon [ctb] (the CSS files under inst/themes/ were derived from the Highlight package http://www.andre-simon.de), Aron Atkins [ctb], Aaron Wolen [ctb], Ashley Manton [ctb], Atsushi Yasumoto [ctb] (ORCID: ), Ben Baumer [ctb], Brian Diggs [ctb], Brian Zhang [ctb], Bulat Yapparov [ctb], Cassio Pereira [ctb], Christophe Dervieux [ctb], David Hall [ctb], David Hugh-Jones [ctb], David Robinson [ctb], Doug Hemken [ctb], Duncan Murdoch [ctb], Elio Campitelli [ctb], Ellis Hughes [ctb], Emily Riederer [ctb], Fabian Hirschmann [ctb], Fitch Simeon [ctb], Forest Fang [ctb], Frank E Harrell Jr [ctb] (the Sweavel package at inst/misc/Sweavel.sty), Garrick Aden-Buie [ctb], Gregoire Detrez [ctb], Hadley Wickham [ctb], Hao Zhu [ctb], Heewon Jeon [ctb], Henrik Bengtsson [ctb], Hiroaki Yutani [ctb], Ian Lyttle [ctb], Hodges Daniel [ctb], Jacob Bien [ctb], Jake Burkhead [ctb], James Manton [ctb], Jared Lander [ctb], Jason Punyon [ctb], Javier Luraschi [ctb], Jeff Arnold [ctb], Jenny Bryan [ctb], Jeremy Ashkenas [ctb, cph] (the CSS file at inst/misc/docco-classic.css), Jeremy Stephens [ctb], Jim Hester [ctb], Joe Cheng [ctb], Johannes Ranke [ctb], John Honaker [ctb], John Muschelli [ctb], Jonathan Keane [ctb], JJ Allaire [ctb], Johan Toloe [ctb], Jonathan Sidi [ctb], Joseph Larmarange [ctb], Julien Barnier [ctb], Kaiyin Zhong [ctb], Kamil Slowikowski [ctb], Karl Forner [ctb], Kevin K. Smith [ctb], Kirill Mueller [ctb], Kohske Takahashi [ctb], Lorenz Walthert [ctb], Lucas Gallindo [ctb], Marius Hofert [ctb], Martin Modrák [ctb], Michael Chirico [ctb], Michael Friendly [ctb], Michal Bojanowski [ctb], Michel Kuhlmann [ctb], Miller Patrick [ctb], Nacho Caballero [ctb], Nick Salkowski [ctb], Niels Richard Hansen [ctb], Noam Ross [ctb], Obada Mahdi [ctb], Pavel N. Krivitsky [ctb] (ORCID: ), Pedro Faria [ctb], Qiang Li [ctb], Ramnath Vaidyanathan [ctb], Richard Cotton [ctb], Robert Krzyzanowski [ctb], Rodrigo Copetti [ctb], Romain Francois [ctb], Ruaridh Williamson [ctb], Sagiru Mati [ctb] (ORCID: ), Scott Kostyshak [ctb], Sebastian Meyer [ctb], Sietse Brouwer [ctb], Simon de Bernard [ctb], Sylvain Rousseau [ctb], Taiyun Wei [ctb], Thibaut Assus [ctb], Thibaut Lamadon [ctb], Thomas Leeper [ctb], Tim Mastny [ctb], Tom Torsney-Weir [ctb], Trevor Davis [ctb], Viktoras Veitas [ctb], Weicheng Zhu [ctb], Wush Wu [ctb], Zachary Foster [ctb], Zhian N. Kamvar [ctb] (ORCID: ), Posit Software, PBC [cph, fnd]", + "Maintainer": "Yihui Xie ", + "Repository": "CRAN" + }, + "labeling": { + "Package": "labeling", + "Version": "0.4.3", + "Source": "Repository", + "Type": "Package", + "Title": "Axis Labeling", + "Date": "2023-08-29", + "Author": "Justin Talbot,", + "Maintainer": "Nuno Sempere ", + "Description": "Functions which provide a range of axis labeling algorithms.", + "License": "MIT + file LICENSE | Unlimited", + "Collate": "'labeling.R'", + "NeedsCompilation": "no", + "Imports": [ + "stats", + "graphics" + ], + "Repository": "https://packagemanager.posit.co/cran/latest", + "Encoding": "UTF-8" + }, + "lambda.r": { + "Package": "lambda.r", + "Version": "1.2.4", + "Source": "Repository", + "Type": "Package", + "Title": "Modeling Data with Functional Programming", + "Date": "2019-09-15", + "Depends": [ + "R (>= 3.0.0)" + ], + "Imports": [ + "formatR" + ], + "Suggests": [ + "testit" + ], + "Author": "Brian Lee Yung Rowe", + "Maintainer": "Brian Lee Yung Rowe ", + "Description": "A language extension to efficiently write functional programs in R. Syntax extensions include multi-part function definitions, pattern matching, guard statements, built-in (optional) type safety.", + "License": "LGPL-3", + "LazyLoad": "yes", + "NeedsCompilation": "no", + "Repository": "https://packagemanager.posit.co/cran/latest", + "Encoding": "UTF-8" + }, + "later": { + "Package": "later", + "Version": "1.4.5", + "Source": "Repository", + "Type": "Package", + "Title": "Utilities for Scheduling Functions to Execute Later with Event Loops", + "Authors@R": "c( person(\"Winston\", \"Chang\", , \"winston@posit.co\", role = \"aut\", comment = c(ORCID = \"0000-0002-1576-2126\")), person(\"Joe\", \"Cheng\", , \"joe@posit.co\", role = \"aut\"), person(\"Charlie\", \"Gao\", , \"charlie.gao@posit.co\", role = c(\"aut\", \"cre\"), comment = c(ORCID = \"0000-0002-0750-061X\")), person(\"Posit Software, PBC\", role = c(\"cph\", \"fnd\"), comment = c(ROR = \"03wc8by49\")), person(\"Marcus\", \"Geelnard\", role = c(\"ctb\", \"cph\"), comment = \"TinyCThread library, https://tinycthread.github.io/\"), person(\"Evan\", \"Nemerson\", role = c(\"ctb\", \"cph\"), comment = \"TinyCThread library, https://tinycthread.github.io/\") )", + "Description": "Executes arbitrary R or C functions some time after the current time, after the R execution stack has emptied. The functions are scheduled in an event loop.", + "License": "MIT + file LICENSE", + "URL": "https://later.r-lib.org, https://github.com/r-lib/later", + "BugReports": "https://github.com/r-lib/later/issues", + "Depends": [ + "R (>= 3.5)" + ], + "Imports": [ + "Rcpp (>= 1.0.10)", + "rlang" + ], + "Suggests": [ + "knitr", + "nanonext", + "promises", + "rmarkdown", + "testthat (>= 3.0.0)" + ], + "LinkingTo": [ + "Rcpp" + ], + "VignetteBuilder": "knitr", + "Config/build/compilation-database": "true", + "Config/Needs/website": "tidyverse/tidytemplate", + "Config/testthat/edition": "3", + "Config/usethis/last-upkeep": "2025-07-18", + "Encoding": "UTF-8", + "RoxygenNote": "7.3.3", + "NeedsCompilation": "yes", + "Author": "Winston Chang [aut] (ORCID: ), Joe Cheng [aut], Charlie Gao [aut, cre] (ORCID: ), Posit Software, PBC [cph, fnd] (ROR: ), Marcus Geelnard [ctb, cph] (TinyCThread library, https://tinycthread.github.io/), Evan Nemerson [ctb, cph] (TinyCThread library, https://tinycthread.github.io/)", + "Maintainer": "Charlie Gao ", + "Repository": "CRAN" + }, + "lattice": { + "Package": "lattice", + "Version": "0.22-7", + "Source": "Repository", + "Date": "2025-03-31", + "Priority": "recommended", + "Title": "Trellis Graphics for R", + "Authors@R": "c(person(\"Deepayan\", \"Sarkar\", role = c(\"aut\", \"cre\"), email = \"deepayan.sarkar@r-project.org\", comment = c(ORCID = \"0000-0003-4107-1553\")), person(\"Felix\", \"Andrews\", role = \"ctb\"), person(\"Kevin\", \"Wright\", role = \"ctb\", comment = \"documentation\"), person(\"Neil\", \"Klepeis\", role = \"ctb\"), person(\"Johan\", \"Larsson\", role = \"ctb\", comment = \"miscellaneous improvements\"), person(\"Zhijian (Jason)\", \"Wen\", role = \"cph\", comment = \"filled contour code\"), person(\"Paul\", \"Murrell\", role = \"ctb\", email = \"paul@stat.auckland.ac.nz\"), person(\"Stefan\", \"Eng\", role = \"ctb\", comment = \"violin plot improvements\"), person(\"Achim\", \"Zeileis\", role = \"ctb\", comment = \"modern colors\"), person(\"Alexandre\", \"Courtiol\", role = \"ctb\", comment = \"generics for larrows, lpolygon, lrect and lsegments\") )", + "Description": "A powerful and elegant high-level data visualization system inspired by Trellis graphics, with an emphasis on multivariate data. Lattice is sufficient for typical graphics needs, and is also flexible enough to handle most nonstandard requirements. See ?Lattice for an introduction.", + "Depends": [ + "R (>= 4.0.0)" + ], + "Suggests": [ + "KernSmooth", + "MASS", + "latticeExtra", + "colorspace" + ], + "Imports": [ + "grid", + "grDevices", + "graphics", + "stats", + "utils" + ], + "Enhances": [ + "chron", + "zoo" + ], + "LazyLoad": "yes", + "LazyData": "yes", + "License": "GPL (>= 2)", + "URL": "https://lattice.r-forge.r-project.org/", + "BugReports": "https://github.com/deepayan/lattice/issues", + "NeedsCompilation": "yes", + "Author": "Deepayan Sarkar [aut, cre] (), Felix Andrews [ctb], Kevin Wright [ctb] (documentation), Neil Klepeis [ctb], Johan Larsson [ctb] (miscellaneous improvements), Zhijian (Jason) Wen [cph] (filled contour code), Paul Murrell [ctb], Stefan Eng [ctb] (violin plot improvements), Achim Zeileis [ctb] (modern colors), Alexandre Courtiol [ctb] (generics for larrows, lpolygon, lrect and lsegments)", + "Maintainer": "Deepayan Sarkar ", + "Repository": "CRAN" + }, + "lazyeval": { + "Package": "lazyeval", + "Version": "0.2.2", + "Source": "Repository", + "Title": "Lazy (Non-Standard) Evaluation", + "Description": "An alternative approach to non-standard evaluation using formulas. Provides a full implementation of LISP style 'quasiquotation', making it easier to generate code with other code.", + "Authors@R": "c( person(\"Hadley\", \"Wickham\", ,\"hadley@rstudio.com\", c(\"aut\", \"cre\")), person(\"RStudio\", role = \"cph\") )", + "License": "GPL-3", + "LazyData": "true", + "Depends": [ + "R (>= 3.1.0)" + ], + "Suggests": [ + "knitr", + "rmarkdown (>= 0.2.65)", + "testthat", + "covr" + ], + "VignetteBuilder": "knitr", + "RoxygenNote": "6.1.1", + "NeedsCompilation": "yes", + "Author": "Hadley Wickham [aut, cre], RStudio [cph]", + "Maintainer": "Hadley Wickham ", + "Repository": "https://packagemanager.posit.co/cran/latest", + "Encoding": "UTF-8" + }, + "lifecycle": { + "Package": "lifecycle", + "Version": "1.0.5", + "Source": "Repository", + "Title": "Manage the Life Cycle of your Package Functions", + "Authors@R": "c( person(\"Lionel\", \"Henry\", , \"lionel@posit.co\", role = c(\"aut\", \"cre\")), person(\"Hadley\", \"Wickham\", , \"hadley@posit.co\", role = \"aut\", comment = c(ORCID = \"0000-0003-4757-117X\")), person(\"Posit Software, PBC\", role = c(\"cph\", \"fnd\")) )", + "Description": "Manage the life cycle of your exported functions with shared conventions, documentation badges, and user-friendly deprecation warnings.", + "License": "MIT + file LICENSE", + "URL": "https://lifecycle.r-lib.org/, https://github.com/r-lib/lifecycle", + "BugReports": "https://github.com/r-lib/lifecycle/issues", + "Depends": [ + "R (>= 3.6)" + ], + "Imports": [ + "cli (>= 3.4.0)", + "rlang (>= 1.1.0)" + ], + "Suggests": [ + "covr", + "knitr", + "lintr (>= 3.1.0)", + "rmarkdown", + "testthat (>= 3.0.1)", + "tibble", + "tidyverse", + "tools", + "vctrs", + "withr", + "xml2" + ], + "VignetteBuilder": "knitr", + "Config/Needs/website": "tidyverse/tidytemplate, usethis", + "Config/testthat/edition": "3", + "Encoding": "UTF-8", + "RoxygenNote": "7.3.3", + "NeedsCompilation": "no", + "Author": "Lionel Henry [aut, cre], Hadley Wickham [aut] (ORCID: ), Posit Software, PBC [cph, fnd]", + "Maintainer": "Lionel Henry ", + "Repository": "CRAN" + }, + "limma": { + "Package": "limma", + "Version": "3.66.0", + "Source": "Bioconductor", + "Date": "2025-10-21", + "Title": "Linear Models for Microarray and Omics Data", + "Description": "Data analysis, linear models and differential expression for omics data.", + "Author": "Gordon Smyth [cre,aut], Yifang Hu [ctb], Matthew Ritchie [ctb], Jeremy Silver [ctb], James Wettenhall [ctb], Davis McCarthy [ctb], Di Wu [ctb], Wei Shi [ctb], Belinda Phipson [ctb], Aaron Lun [ctb], Natalie Thorne [ctb], Alicia Oshlack [ctb], Carolyn de Graaf [ctb], Yunshun Chen [ctb], Goknur Giner [ctb], Mette Langaas [ctb], Egil Ferkingstad [ctb], Marcus Davy [ctb], Francois Pepin [ctb], Dongseok Choi [ctb], Charity Law [ctb], Mengbo Li [ctb], Lizhong Chen [ctb]", + "Maintainer": "Gordon Smyth ", + "License": "GPL (>=2)", + "Depends": [ + "R (>= 3.6.0)" + ], + "Imports": [ + "grDevices", + "graphics", + "stats", + "utils", + "methods", + "statmod" + ], + "Suggests": [ + "BiasedUrn", + "ellipse", + "gplots", + "knitr", + "locfit", + "MASS", + "splines", + "affy", + "AnnotationDbi", + "Biobase", + "BiocStyle", + "GO.db", + "illuminaio", + "org.Hs.eg.db", + "vsn" + ], + "VignetteBuilder": "knitr", + "URL": "https://bioinf.wehi.edu.au/limma/", + "biocViews": "ExonArray, GeneExpression, Transcription, AlternativeSplicing, DifferentialExpression, DifferentialSplicing, GeneSetEnrichment, DataImport, Bayesian, Clustering, Regression, TimeCourse, Microarray, MicroRNAArray, mRNAMicroarray, OneChannel, ProprietaryPlatforms, TwoChannel, Sequencing, RNASeq, BatchEffect, MultipleComparison, Normalization, Preprocessing, QualityControl, BiomedicalInformatics, CellBiology, Cheminformatics, Epigenetics, FunctionalGenomics, Genetics, ImmunoOncology, Metabolomics, Proteomics, SystemsBiology, Transcriptomics", + "git_url": "https://git.bioconductor.org/packages/limma", + "git_branch": "RELEASE_3_22", + "git_last_commit": "1c4b971", + "git_last_commit_date": "2025-10-29", + "Repository": "Bioconductor 3.22", + "NeedsCompilation": "yes" + }, + "litedown": { + "Package": "litedown", + "Version": "0.9", + "Source": "Repository", + "Type": "Package", + "Title": "A Lightweight Version of R Markdown", + "Authors@R": "c( person(\"Yihui\", \"Xie\", role = c(\"aut\", \"cre\"), email = \"xie@yihui.name\", comment = c(ORCID = \"0000-0003-0645-5666\", URL = \"https://yihui.org\")), person(\"Tim\", \"Taylor\", role = \"ctb\", comment = c(ORCID = \"0000-0002-8587-7113\")), person() )", + "Description": "Render R Markdown to Markdown (without using 'knitr'), and Markdown to lightweight HTML or 'LaTeX' documents with the 'commonmark' package (instead of 'Pandoc'). Some missing Markdown features in 'commonmark' are also supported, such as raw HTML or 'LaTeX' blocks, 'LaTeX' math, superscripts, subscripts, footnotes, element attributes, and appendices, but not all 'Pandoc' Markdown features are (or will be) supported. With additional JavaScript and CSS, you can also create HTML slides and articles. This package can be viewed as a trimmed-down version of R Markdown and 'knitr'. It does not aim at rich Markdown features or a large variety of output formats (the primary formats are HTML and 'LaTeX'). Book and website projects of multiple input documents are also supported.", + "Depends": [ + "R (>= 3.2.0)" + ], + "Imports": [ + "utils", + "commonmark (>= 2.0.0)", + "xfun (>= 0.55)" + ], + "Suggests": [ + "rbibutils", + "rstudioapi", + "tinytex" + ], + "License": "MIT + file LICENSE", + "URL": "https://github.com/yihui/litedown", + "BugReports": "https://github.com/yihui/litedown/issues", + "VignetteBuilder": "litedown", + "RoxygenNote": "7.3.3", + "Encoding": "UTF-8", + "NeedsCompilation": "no", + "Author": "Yihui Xie [aut, cre] (ORCID: , URL: https://yihui.org), Tim Taylor [ctb] (ORCID: )", + "Maintainer": "Yihui Xie ", + "Repository": "CRAN" + }, + "locfit": { + "Package": "locfit", + "Version": "1.5-9.12", + "Source": "Repository", + "Title": "Local Regression, Likelihood and Density Estimation", + "Date": "2025-03-05", + "Authors@R": "c(person(\"Catherine\", \"Loader\", role = \"aut\"), person(\"Jiayang\", \"Sun\", role = \"ctb\"), person(\"Lucent Technologies\", role = \"cph\"), person(\"Andy\", \"Liaw\", role = \"cre\", email=\"andy_liaw@merck.com\"))", + "Author": "Catherine Loader [aut], Jiayang Sun [ctb], Lucent Technologies [cph], Andy Liaw [cre]", + "Maintainer": "Andy Liaw ", + "Description": "Local regression, likelihood and density estimation methods as described in the 1999 book by Loader.", + "Depends": [ + "R (>= 4.1.0)" + ], + "Imports": [ + "lattice" + ], + "Suggests": [ + "interp", + "gam" + ], + "License": "GPL (>= 2)", + "SystemRequirements": "USE_C17", + "NeedsCompilation": "yes", + "Repository": "https://packagemanager.posit.co/cran/latest", + "Encoding": "UTF-8" + }, + "lubridate": { + "Package": "lubridate", + "Version": "1.9.4", + "Source": "Repository", + "Type": "Package", + "Title": "Make Dealing with Dates a Little Easier", + "Authors@R": "c( person(\"Vitalie\", \"Spinu\", , \"spinuvit@gmail.com\", role = c(\"aut\", \"cre\")), person(\"Garrett\", \"Grolemund\", role = \"aut\"), person(\"Hadley\", \"Wickham\", role = \"aut\"), person(\"Davis\", \"Vaughan\", role = \"ctb\"), person(\"Ian\", \"Lyttle\", role = \"ctb\"), person(\"Imanuel\", \"Costigan\", role = \"ctb\"), person(\"Jason\", \"Law\", role = \"ctb\"), person(\"Doug\", \"Mitarotonda\", role = \"ctb\"), person(\"Joseph\", \"Larmarange\", role = \"ctb\"), person(\"Jonathan\", \"Boiser\", role = \"ctb\"), person(\"Chel Hee\", \"Lee\", role = \"ctb\") )", + "Maintainer": "Vitalie Spinu ", + "Description": "Functions to work with date-times and time-spans: fast and user friendly parsing of date-time data, extraction and updating of components of a date-time (years, months, days, hours, minutes, and seconds), algebraic manipulation on date-time and time-span objects. The 'lubridate' package has a consistent and memorable syntax that makes working with dates easy and fun.", + "License": "GPL (>= 2)", + "URL": "https://lubridate.tidyverse.org, https://github.com/tidyverse/lubridate", + "BugReports": "https://github.com/tidyverse/lubridate/issues", + "Depends": [ + "methods", + "R (>= 3.2)" + ], + "Imports": [ + "generics", + "timechange (>= 0.3.0)" + ], + "Suggests": [ + "covr", + "knitr", + "rmarkdown", + "testthat (>= 2.1.0)", + "vctrs (>= 0.6.5)" + ], + "Enhances": [ + "chron", + "data.table", + "timeDate", + "tis", + "zoo" + ], + "VignetteBuilder": "knitr", + "Config/Needs/website": "tidyverse/tidytemplate", + "Config/testthat/edition": "3", + "Encoding": "UTF-8", + "LazyData": "true", + "RoxygenNote": "7.2.3", + "SystemRequirements": "C++11, A system with zoneinfo data (e.g. /usr/share/zoneinfo). On Windows the zoneinfo included with R is used.", + "Collate": "'Dates.r' 'POSIXt.r' 'util.r' 'parse.r' 'timespans.r' 'intervals.r' 'difftimes.r' 'durations.r' 'periods.r' 'accessors-date.R' 'accessors-day.r' 'accessors-dst.r' 'accessors-hour.r' 'accessors-minute.r' 'accessors-month.r' 'accessors-quarter.r' 'accessors-second.r' 'accessors-tz.r' 'accessors-week.r' 'accessors-year.r' 'am-pm.r' 'time-zones.r' 'numeric.r' 'coercion.r' 'constants.r' 'cyclic_encoding.r' 'data.r' 'decimal-dates.r' 'deprecated.r' 'format_ISO8601.r' 'guess.r' 'hidden.r' 'instants.r' 'leap-years.r' 'ops-addition.r' 'ops-compare.r' 'ops-division.r' 'ops-integer-division.r' 'ops-m+.r' 'ops-modulo.r' 'ops-multiplication.r' 'ops-subtraction.r' 'package.r' 'pretty.r' 'round.r' 'stamp.r' 'tzdir.R' 'update.r' 'vctrs.R' 'zzz.R'", + "NeedsCompilation": "yes", + "Author": "Vitalie Spinu [aut, cre], Garrett Grolemund [aut], Hadley Wickham [aut], Davis Vaughan [ctb], Ian Lyttle [ctb], Imanuel Costigan [ctb], Jason Law [ctb], Doug Mitarotonda [ctb], Joseph Larmarange [ctb], Jonathan Boiser [ctb], Chel Hee Lee [ctb]", + "Repository": "CRAN" + }, + "magick": { + "Package": "magick", + "Version": "2.9.0", + "Source": "Repository", + "Type": "Package", + "Title": "Advanced Graphics and Image-Processing in R", + "Authors@R": "person(\"Jeroen\", \"Ooms\", role = c(\"aut\", \"cre\"), email = \"jeroenooms@gmail.com\", comment = c(ORCID = \"0000-0002-4035-0289\"))", + "Description": "Bindings to 'ImageMagick': the most comprehensive open-source image processing library available. Supports many common formats (png, jpeg, tiff, pdf, etc) and manipulations (rotate, scale, crop, trim, flip, blur, etc). All operations are vectorized via the Magick++ STL meaning they operate either on a single frame or a series of frames for working with layers, collages, or animation. In RStudio images are automatically previewed when printed to the console, resulting in an interactive editing environment. Also includes a graphics device for creating drawing onto images using pixel coordinates.", + "License": "MIT + file LICENSE", + "URL": "https://docs.ropensci.org/magick/ https://ropensci.r-universe.dev/magick", + "BugReports": "https://github.com/ropensci/magick/issues", + "SystemRequirements": "ImageMagick++: ImageMagick-c++-devel (rpm) or libmagick++-dev (deb)", + "VignetteBuilder": "knitr", + "Depends": [ + "R (>= 4.1.0)" + ], + "Imports": [ + "Rcpp (>= 0.12.12)", + "magrittr", + "curl" + ], + "LinkingTo": [ + "Rcpp" + ], + "Suggests": [ + "av", + "spelling", + "jsonlite", + "methods", + "knitr", + "rmarkdown", + "rsvg", + "webp", + "pdftools", + "ggplot2", + "gapminder", + "IRdisplay", + "tesseract", + "gifski" + ], + "Encoding": "UTF-8", + "RoxygenNote": "7.3.2", + "Language": "en-US", + "NeedsCompilation": "yes", + "Author": "Jeroen Ooms [aut, cre] (ORCID: )", + "Maintainer": "Jeroen Ooms ", + "Repository": "https://packagemanager.posit.co/cran/latest" + }, + "magrittr": { + "Package": "magrittr", + "Version": "2.0.4", + "Source": "Repository", + "Type": "Package", + "Title": "A Forward-Pipe Operator for R", + "Authors@R": "c( person(\"Stefan Milton\", \"Bache\", , \"stefan@stefanbache.dk\", role = c(\"aut\", \"cph\"), comment = \"Original author and creator of magrittr\"), person(\"Hadley\", \"Wickham\", , \"hadley@posit.co\", role = \"aut\"), person(\"Lionel\", \"Henry\", , \"lionel@posit.co\", role = \"cre\"), person(\"Posit Software, PBC\", role = c(\"cph\", \"fnd\"), comment = c(ROR = \"03wc8by49\")) )", + "Description": "Provides a mechanism for chaining commands with a new forward-pipe operator, %>%. This operator will forward a value, or the result of an expression, into the next function call/expression. There is flexible support for the type of right-hand side expressions. For more information, see package vignette. To quote Rene Magritte, \"Ceci n'est pas un pipe.\"", + "License": "MIT + file LICENSE", + "URL": "https://magrittr.tidyverse.org, https://github.com/tidyverse/magrittr", + "BugReports": "https://github.com/tidyverse/magrittr/issues", + "Depends": [ + "R (>= 3.4.0)" + ], + "Suggests": [ + "covr", + "knitr", + "rlang", + "rmarkdown", + "testthat" + ], + "VignetteBuilder": "knitr", + "ByteCompile": "Yes", + "Config/Needs/website": "tidyverse/tidytemplate", + "Encoding": "UTF-8", + "RoxygenNote": "7.3.3", + "NeedsCompilation": "yes", + "Author": "Stefan Milton Bache [aut, cph] (Original author and creator of magrittr), Hadley Wickham [aut], Lionel Henry [cre], Posit Software, PBC [cph, fnd] (ROR: )", + "Maintainer": "Lionel Henry ", + "Repository": "https://packagemanager.posit.co/cran/latest" + }, + "markdown": { + "Package": "markdown", + "Version": "2.0", + "Source": "Repository", + "Type": "Package", + "Title": "Render Markdown with 'commonmark'", + "Authors@R": "c( person(\"Yihui\", \"Xie\", role = c(\"aut\", \"cre\"), email = \"xie@yihui.name\", comment = c(ORCID = \"0000-0003-0645-5666\")), person(\"JJ\", \"Allaire\", role = \"aut\"), person(\"Jeffrey\", \"Horner\", role = \"aut\"), person(\"Henrik\", \"Bengtsson\", role = \"ctb\"), person(\"Jim\", \"Hester\", role = \"ctb\"), person(\"Yixuan\", \"Qiu\", role = \"ctb\"), person(\"Kohske\", \"Takahashi\", role = \"ctb\"), person(\"Adam\", \"November\", role = \"ctb\"), person(\"Nacho\", \"Caballero\", role = \"ctb\"), person(\"Jeroen\", \"Ooms\", role = \"ctb\"), person(\"Thomas\", \"Leeper\", role = \"ctb\"), person(\"Joe\", \"Cheng\", role = \"ctb\"), person(\"Andrzej\", \"Oles\", role = \"ctb\"), person(given = \"Posit Software, PBC\", role = c(\"cph\", \"fnd\")) )", + "Description": "Render Markdown to full and lightweight HTML/LaTeX documents with the 'commonmark' package. This package has been superseded by 'litedown'.", + "Depends": [ + "R (>= 2.11.1)" + ], + "Imports": [ + "utils", + "xfun", + "litedown (>= 0.6)" + ], + "Suggests": [ + "knitr", + "rmarkdown (>= 2.18)", + "yaml", + "RCurl" + ], + "License": "MIT + file LICENSE", + "URL": "https://github.com/rstudio/markdown", + "BugReports": "https://github.com/rstudio/markdown/issues", + "RoxygenNote": "7.3.2", + "Encoding": "UTF-8", + "NeedsCompilation": "no", + "Author": "Yihui Xie [aut, cre] (), JJ Allaire [aut], Jeffrey Horner [aut], Henrik Bengtsson [ctb], Jim Hester [ctb], Yixuan Qiu [ctb], Kohske Takahashi [ctb], Adam November [ctb], Nacho Caballero [ctb], Jeroen Ooms [ctb], Thomas Leeper [ctb], Joe Cheng [ctb], Andrzej Oles [ctb], Posit Software, PBC [cph, fnd]", + "Maintainer": "Yihui Xie ", + "Repository": "CRAN" + }, + "matrixStats": { + "Package": "matrixStats", + "Version": "1.5.0", + "Source": "Repository", + "Depends": [ + "R (>= 3.4.0)" + ], + "Suggests": [ + "utils", + "base64enc", + "ggplot2", + "knitr", + "markdown", + "microbenchmark", + "R.devices", + "R.rsp" + ], + "VignetteBuilder": "R.rsp", + "Title": "Functions that Apply to Rows and Columns of Matrices (and to Vectors)", + "Authors@R": "c( person(\"Henrik\", \"Bengtsson\", role=c(\"aut\", \"cre\", \"cph\"), email=\"henrikb@braju.com\"), person(\"Constantin\", \"Ahlmann-Eltze\", role = \"ctb\"), person(\"Hector\", \"Corrada Bravo\", role=\"ctb\"), person(\"Robert\", \"Gentleman\", role=\"ctb\"), person(\"Jan\", \"Gleixner\", role=\"ctb\"), person(\"Peter\", \"Hickey\", role=\"ctb\"), person(\"Ola\", \"Hossjer\", role=\"ctb\"), person(\"Harris\", \"Jaffee\", role=\"ctb\"), person(\"Dongcan\", \"Jiang\", role=\"ctb\"), person(\"Peter\", \"Langfelder\", role=\"ctb\"), person(\"Brian\", \"Montgomery\", role=\"ctb\"), person(\"Angelina\", \"Panagopoulou\", role=\"ctb\"), person(\"Hugh\", \"Parsonage\", role=\"ctb\"), person(\"Jakob Peder\", \"Pettersen\", role=\"ctb\"))", + "Author": "Henrik Bengtsson [aut, cre, cph], Constantin Ahlmann-Eltze [ctb], Hector Corrada Bravo [ctb], Robert Gentleman [ctb], Jan Gleixner [ctb], Peter Hickey [ctb], Ola Hossjer [ctb], Harris Jaffee [ctb], Dongcan Jiang [ctb], Peter Langfelder [ctb], Brian Montgomery [ctb], Angelina Panagopoulou [ctb], Hugh Parsonage [ctb], Jakob Peder Pettersen [ctb]", + "Maintainer": "Henrik Bengtsson ", + "Description": "High-performing functions operating on rows and columns of matrices, e.g. col / rowMedians(), col / rowRanks(), and col / rowSds(). Functions optimized per data type and for subsetted calculations such that both memory usage and processing time is minimized. There are also optimized vector-based methods, e.g. binMeans(), madDiff() and weightedMedian().", + "License": "Artistic-2.0", + "LazyLoad": "TRUE", + "NeedsCompilation": "yes", + "ByteCompile": "TRUE", + "URL": "https://github.com/HenrikBengtsson/matrixStats", + "BugReports": "https://github.com/HenrikBengtsson/matrixStats/issues", + "RoxygenNote": "7.3.2", + "Repository": "https://packagemanager.posit.co/cran/latest", + "Encoding": "UTF-8" + }, + "memoise": { + "Package": "memoise", + "Version": "2.0.1", + "Source": "Repository", + "Title": "'Memoisation' of Functions", + "Authors@R": "c(person(given = \"Hadley\", family = \"Wickham\", role = \"aut\", email = \"hadley@rstudio.com\"), person(given = \"Jim\", family = \"Hester\", role = \"aut\"), person(given = \"Winston\", family = \"Chang\", role = c(\"aut\", \"cre\"), email = \"winston@rstudio.com\"), person(given = \"Kirill\", family = \"Müller\", role = \"aut\", email = \"krlmlr+r@mailbox.org\"), person(given = \"Daniel\", family = \"Cook\", role = \"aut\", email = \"danielecook@gmail.com\"), person(given = \"Mark\", family = \"Edmondson\", role = \"ctb\", email = \"r@sunholo.com\"))", + "Description": "Cache the results of a function so that when you call it again with the same arguments it returns the previously computed value.", + "License": "MIT + file LICENSE", + "URL": "https://memoise.r-lib.org, https://github.com/r-lib/memoise", + "BugReports": "https://github.com/r-lib/memoise/issues", + "Imports": [ + "rlang (>= 0.4.10)", + "cachem" + ], + "Suggests": [ + "digest", + "aws.s3", + "covr", + "googleAuthR", + "googleCloudStorageR", + "httr", + "testthat" + ], + "Encoding": "UTF-8", + "RoxygenNote": "7.1.2", + "NeedsCompilation": "no", + "Author": "Hadley Wickham [aut], Jim Hester [aut], Winston Chang [aut, cre], Kirill Müller [aut], Daniel Cook [aut], Mark Edmondson [ctb]", + "Maintainer": "Winston Chang ", + "Repository": "https://packagemanager.posit.co/cran/latest" + }, + "memuse": { + "Package": "memuse", + "Version": "4.2-3", + "Source": "Repository", + "Title": "Memory Estimation Utilities", + "Description": "How much ram do you need to store a 100,000 by 100,000 matrix? How much ram is your current R session using? How much ram do you even have? Learn the scintillating answer to these and many more such questions with the 'memuse' package.", + "License": "BSD 2-clause License + file LICENSE", + "Depends": [ + "R (>= 3.0.0)" + ], + "Imports": [ + "methods", + "utils" + ], + "NeedsCompilation": "yes", + "ByteCompile": "yes", + "Authors@R": "c( person(\"Drew\", \"Schmidt\", email=\"wrathematics@gmail.com\", role=c(\"aut\", \"cre\")), person(\"Christian\", \"Heckendorf\", role=\"ctb\", comment=\"FreeBSD improvements to meminfo\"), person(\"Wei-Chen\", \"Chen\", role=\"ctb\", comment=\"Windows build fixes\"), person(\"Dan\", \"Burgess\", role=\"ctb\", comment=\"donation of a Mac for development and testing\"))", + "Maintainer": "Drew Schmidt ", + "URL": "https://github.com/shinra-dev/memuse", + "BugReports": "https://github.com/shinra-dev/memuse/issues", + "RoxygenNote": "7.1.2", + "Author": "Drew Schmidt [aut, cre], Christian Heckendorf [ctb] (FreeBSD improvements to meminfo), Wei-Chen Chen [ctb] (Windows build fixes), Dan Burgess [ctb] (donation of a Mac for development and testing)", + "Repository": "CRAN" + }, + "metapod": { + "Package": "metapod", + "Version": "1.18.0", + "Source": "Bioconductor", + "Date": "2023-12-22", + "Title": "Meta-Analyses on P-Values of Differential Analyses", + "Authors@R": "person(\"Aaron\", \"Lun\", role=c(\"aut\", \"cre\"), email = \"infinite.monkeys.with.keyboards@gmail.com\")", + "Imports": [ + "Rcpp" + ], + "Suggests": [ + "testthat", + "knitr", + "BiocStyle", + "rmarkdown" + ], + "LinkingTo": [ + "Rcpp" + ], + "biocViews": "MultipleComparison, DifferentialPeakCalling", + "Description": "Implements a variety of methods for combining p-values in differential analyses of genome-scale datasets. Functions can combine p-values across different tests in the same analysis (e.g., genomic windows in ChIP-seq, exons in RNA-seq) or for corresponding tests across separate analyses (e.g., replicated comparisons, effect of different treatment conditions). Support is provided for handling log-transformed input p-values, missing values and weighting where appropriate.", + "License": "GPL-3", + "NeedsCompilation": "yes", + "SystemRequirements": "C++11", + "VignetteBuilder": "knitr", + "RoxygenNote": "7.1.1", + "git_url": "https://git.bioconductor.org/packages/metapod", + "git_branch": "RELEASE_3_22", + "git_last_commit": "6552a64", + "git_last_commit_date": "2025-10-29", + "Repository": "Bioconductor 3.22", + "Author": "Aaron Lun [aut, cre]", + "Maintainer": "Aaron Lun " + }, + "miQC": { + "Package": "miQC", + "Version": "1.18.0", + "Source": "Bioconductor", + "Type": "Package", + "Title": "Flexible, probabilistic metrics for quality control of scRNA-seq data", + "Authors@R": "c(person(\"Ariel\", \"Hippen\", role = c(\"aut\", \"cre\"), email = \"ariel.hippen@gmail.com\"), person(\"Stephanie\", \"Hicks\", role = c(\"aut\"), email = \"shicks19@jhu.edu\"))", + "Description": "Single-cell RNA-sequencing (scRNA-seq) has made it possible to profile gene expression in tissues at high resolution. An important preprocessing step prior to performing downstream analyses is to identify and remove cells with poor or degraded sample quality using quality control (QC) metrics. Two widely used QC metrics to identify a ‘low-quality’ cell are (i) if the cell includes a high proportion of reads that map to mitochondrial DNA encoded genes (mtDNA) and (ii) if a small number of genes are detected. miQC is data-driven QC metric that jointly models both the proportion of reads mapping to mtDNA and the number of detected genes with mixture models in a probabilistic framework to predict the low-quality cells in a given dataset.", + "URL": "https://github.com/greenelab/miQC", + "BugReports": "https://github.com/greenelab/miQC/issues", + "License": "BSD_3_clause + file LICENSE", + "Imports": [ + "SingleCellExperiment", + "flexmix", + "ggplot2", + "splines" + ], + "Suggests": [ + "scRNAseq", + "scater", + "BiocStyle", + "knitr", + "rmarkdown" + ], + "biocViews": "SingleCell, QualityControl, GeneExpression, Preprocessing, Sequencing", + "VignetteBuilder": "knitr", + "Encoding": "UTF-8", + "RoxygenNote": "7.2.1", + "LazyData": "TRUE", + "git_url": "https://git.bioconductor.org/packages/miQC", + "git_branch": "RELEASE_3_22", + "git_last_commit": "3ec5429", + "git_last_commit_date": "2025-10-29", + "Repository": "Bioconductor 3.22", + "NeedsCompilation": "no", + "Author": "Ariel Hippen [aut, cre], Stephanie Hicks [aut]", + "Maintainer": "Ariel Hippen ", + "Depends": [ + "R (>= 3.5.0)" + ] + }, + "mime": { + "Package": "mime", + "Version": "0.13", + "Source": "Repository", + "Type": "Package", + "Title": "Map Filenames to MIME Types", + "Authors@R": "c( person(\"Yihui\", \"Xie\", role = c(\"aut\", \"cre\"), email = \"xie@yihui.name\", comment = c(ORCID = \"0000-0003-0645-5666\", URL = \"https://yihui.org\")), person(\"Jeffrey\", \"Horner\", role = \"ctb\"), person(\"Beilei\", \"Bian\", role = \"ctb\") )", + "Description": "Guesses the MIME type from a filename extension using the data derived from /etc/mime.types in UNIX-type systems.", + "Imports": [ + "tools" + ], + "License": "GPL", + "URL": "https://github.com/yihui/mime", + "BugReports": "https://github.com/yihui/mime/issues", + "RoxygenNote": "7.3.2", + "Encoding": "UTF-8", + "NeedsCompilation": "yes", + "Author": "Yihui Xie [aut, cre] (, https://yihui.org), Jeffrey Horner [ctb], Beilei Bian [ctb]", + "Maintainer": "Yihui Xie ", + "Repository": "https://packagemanager.posit.co/cran/latest" + }, + "mixsqp": { + "Package": "mixsqp", + "Version": "0.3-54", + "Source": "Repository", + "Encoding": "UTF-8", + "Type": "Package", + "Date": "2023-12-20", + "Title": "Sequential Quadratic Programming for Fast Maximum-Likelihood Estimation of Mixture Proportions", + "Authors@R": "c(person(\"Youngseok\",\"Kim\",role=\"aut\", email=\"youngseok@uchicago.edu\"), person(\"Peter\",\"Carbonetto\",role=c(\"aut\",\"cre\"), email=\"peter.carbonetto@gmail.com\"), person(\"Mihai\",\"Anitescu\",role=\"aut\"), person(\"Matthew\",\"Stephens\",role=\"aut\"), person(\"Jason\",\"Willwerscheid\",role=\"ctb\"), person(\"Jean\",\"Morrison\",role=\"ctb\"))", + "URL": "https://github.com/stephenslab/mixsqp", + "BugReports": "https://github.com/stephenslab/mixsqp/issues", + "Depends": [ + "R (>= 3.3.0)" + ], + "Description": "Provides an optimization method based on sequential quadratic programming (SQP) for maximum likelihood estimation of the mixture proportions in a finite mixture model where the component densities are known. The algorithm is expected to obtain solutions that are at least as accurate as the state-of-the-art MOSEK interior-point solver (called by function \"KWDual\" in the 'REBayes' package), and they are expected to arrive at solutions more quickly when the number of samples is large and the number of mixture components is not too large. This implements the \"mix-SQP\" algorithm, with some improvements, described in Y. Kim, P. Carbonetto, M. Stephens & M. Anitescu (2020) .", + "License": "MIT + file LICENSE", + "Imports": [ + "utils", + "stats", + "irlba", + "Rcpp (>= 0.12.15)" + ], + "Suggests": [ + "testthat", + "knitr", + "rmarkdown" + ], + "LinkingTo": [ + "Rcpp", + "RcppArmadillo" + ], + "LazyData": "true", + "NeedsCompilation": "yes", + "VignetteBuilder": "knitr", + "RoxygenNote": "7.1.2", + "Author": "Youngseok Kim [aut], Peter Carbonetto [aut, cre], Mihai Anitescu [aut], Matthew Stephens [aut], Jason Willwerscheid [ctb], Jean Morrison [ctb]", + "Maintainer": "Peter Carbonetto ", + "Repository": "CRAN" + }, + "mixtools": { + "Package": "mixtools", + "Version": "2.0.0.1", + "Source": "Repository", + "Date": "2022-12-04", + "Title": "Tools for Analyzing Finite Mixture Models", + "Authors@R": "c(person(\"Derek\", \"Young\", role = c(\"aut\", \"cre\"), email = \"derek.young@uky.edu\", comment = c(ORCID = \"0000-0002-3048-3803\")), person(\"Tatiana\", \"Benaglia\", role = \"aut\"), person(\"Didier\", \"Chauveau\", role = \"aut\"), person(\"David\", \"Hunter\", role = \"aut\"), person(\"Kedai\", \"Cheng\", role = \"aut\"), person(\"Ryan\", \"Elmore\", role = \"ctb\"), person(\"Thomas\", \"Hettmansperger\", role = \"ctb\"), person(\"Hoben\", \"Thomas\", role = \"ctb\"), person(\"Fengjuan\", \"Xuan\", role = \"ctb\"))", + "Depends": [ + "R (>= 4.0.0)" + ], + "Imports": [ + "kernlab", + "MASS", + "plotly", + "scales", + "segmented", + "stats", + "survival" + ], + "URL": "https://github.com/dsy109/mixtools", + "Description": "Analyzes finite mixture models for various parametric and semiparametric settings. This includes mixtures of parametric distributions (normal, multivariate normal, multinomial, gamma), various Reliability Mixture Models (RMMs), mixtures-of-regressions settings (linear regression, logistic regression, Poisson regression, linear regression with changepoints, predictor-dependent mixing proportions, random effects regressions, hierarchical mixtures-of-experts), and tools for selecting the number of components (bootstrapping the likelihood ratio test statistic, mixturegrams, and model selection criteria). Bayesian estimation of mixtures-of-linear-regressions models is available as well as a novel data depth method for obtaining credible bands. This package is based upon work supported by the National Science Foundation under Grant No. SES-0518772 and the Chan Zuckerberg Initiative: Essential Open Source Software for Science (Grant No. 2020-255193).", + "License": "GPL (>= 2)", + "NeedsCompilation": "yes", + "Author": "Derek Young [aut, cre] (), Tatiana Benaglia [aut], Didier Chauveau [aut], David Hunter [aut], Kedai Cheng [aut], Ryan Elmore [ctb], Thomas Hettmansperger [ctb], Hoben Thomas [ctb], Fengjuan Xuan [ctb]", + "Maintainer": "Derek Young ", + "Repository": "https://packagemanager.posit.co/cran/latest", + "Encoding": "UTF-8" + }, + "modelr": { + "Package": "modelr", + "Version": "0.1.11", + "Source": "Repository", + "Title": "Modelling Functions that Work with the Pipe", + "Authors@R": "c( person(\"Hadley\", \"Wickham\", , \"hadley@posit.co\", role = c(\"aut\", \"cre\")), person(\"Posit Software, PBC\", role = c(\"cph\", \"fnd\")) )", + "Description": "Functions for modelling that help you seamlessly integrate modelling into a pipeline of data manipulation and visualisation.", + "License": "GPL-3", + "URL": "https://modelr.tidyverse.org, https://github.com/tidyverse/modelr", + "BugReports": "https://github.com/tidyverse/modelr/issues", + "Depends": [ + "R (>= 3.2)" + ], + "Imports": [ + "broom", + "magrittr", + "purrr (>= 0.2.2)", + "rlang (>= 1.0.6)", + "tibble", + "tidyr (>= 0.8.0)", + "tidyselect", + "vctrs" + ], + "Suggests": [ + "compiler", + "covr", + "ggplot2", + "testthat (>= 3.0.0)" + ], + "Config/Needs/website": "tidyverse/tidytemplate", + "Encoding": "UTF-8", + "LazyData": "true", + "RoxygenNote": "7.2.3", + "Config/testthat/edition": "3", + "NeedsCompilation": "no", + "Author": "Hadley Wickham [aut, cre], Posit Software, PBC [cph, fnd]", + "Maintainer": "Hadley Wickham ", + "Repository": "RSPM" + }, + "modeltools": { + "Package": "modeltools", + "Version": "0.2-24", + "Source": "Repository", + "Title": "Tools and Classes for Statistical Models", + "Date": "2025-05-02", + "Authors@R": "c(person(given = \"Torsten\", family = \"Hothorn\", role = c(\"aut\", \"cre\"), email = \"Torsten.Hothorn@R-project.org\", comment = c(ORCID = \"0000-0001-8301-0471\")), person(given = \"Friedrich\", family = \"Leisch\", role = \"aut\", comment = c(ORCID = \"0000-0001-7278-1983\")), person(given = \"Achim\", family = \"Zeileis\", role = \"aut\", comment = c(ORCID = \"0000-0003-0918-3766\")))", + "Description": "A collection of tools to deal with statistical models. The functionality is experimental and the user interface is likely to change in the future. The documentation is rather terse, but packages `coin' and `party' have some working examples. However, if you find the implemented ideas interesting we would be very interested in a discussion of this proposal. Contributions are more than welcome!", + "Depends": [ + "stats", + "stats4" + ], + "Imports": [ + "methods" + ], + "LazyLoad": "yes", + "License": "GPL-2", + "NeedsCompilation": "no", + "Author": "Torsten Hothorn [aut, cre] (ORCID: ), Friedrich Leisch [aut] (ORCID: ), Achim Zeileis [aut] (ORCID: )", + "Maintainer": "Torsten Hothorn ", + "Repository": "CRAN" + }, + "msigdbr": { + "Package": "msigdbr", + "Version": "25.1.1", + "Source": "Repository", + "Type": "Package", + "Title": "MSigDB Gene Sets for Multiple Organisms in a Tidy Data Format", + "Authors@R": "person(\"Igor\", \"Dolgalev\", , \"igor.dolgalev@nyumc.org\", role = c(\"aut\", \"cre\"), comment = c(ORCID = \"0000-0003-4451-126X\"))", + "Description": "Provides the 'Molecular Signatures Database' (MSigDB) gene sets typically used with the 'Gene Set Enrichment Analysis' (GSEA) software (Subramanian et al. 2005 , Liberzon et al. 2015 , Castanza et al. 2023 ) as an R data frame. The package includes the human genes as listed in MSigDB as well as the corresponding symbols and IDs for frequently studied model organisms such as mouse, rat, pig, fly, and yeast.", + "License": "MIT + file LICENSE", + "URL": "https://igordot.github.io/msigdbr/", + "BugReports": "https://github.com/igordot/msigdbr/issues", + "Depends": [ + "R (>= 4.1)" + ], + "Imports": [ + "assertthat", + "babelgene (>= 22.9)", + "curl", + "dplyr (>= 1.1.1)", + "lifecycle", + "methods", + "rlang", + "tibble", + "tidyselect (>= 1.2.0)", + "tools" + ], + "Suggests": [ + "knitr", + "rmarkdown", + "roxygen2", + "testthat" + ], + "Config/Needs/website": "rmarkdown", + "Encoding": "UTF-8", + "RoxygenNote": "7.3.2", + "NeedsCompilation": "no", + "Author": "Igor Dolgalev [aut, cre] (ORCID: )", + "Maintainer": "Igor Dolgalev ", + "Repository": "https://packagemanager.posit.co/cran/latest" + }, + "mvtnorm": { + "Package": "mvtnorm", + "Version": "1.3-3", + "Source": "Repository", + "Title": "Multivariate Normal and t Distributions", + "Date": "2025-01-09", + "Authors@R": "c(person(\"Alan\", \"Genz\", role = \"aut\"), person(\"Frank\", \"Bretz\", role = \"aut\"), person(\"Tetsuhisa\", \"Miwa\", role = \"aut\"), person(\"Xuefei\", \"Mi\", role = \"aut\"), person(\"Friedrich\", \"Leisch\", role = \"ctb\"), person(\"Fabian\", \"Scheipl\", role = \"ctb\"), person(\"Bjoern\", \"Bornkamp\", role = \"ctb\", comment = c(ORCID = \"0000-0002-6294-8185\")), person(\"Martin\", \"Maechler\", role = \"ctb\", comment = c(ORCID = \"0000-0002-8685-9910\")), person(\"Torsten\", \"Hothorn\", role = c(\"aut\", \"cre\"), email = \"Torsten.Hothorn@R-project.org\", comment = c(ORCID = \"0000-0001-8301-0471\")))", + "Description": "Computes multivariate normal and t probabilities, quantiles, random deviates, and densities. Log-likelihoods for multivariate Gaussian models and Gaussian copulae parameterised by Cholesky factors of covariance or precision matrices are implemented for interval-censored and exact data, or a mix thereof. Score functions for these log-likelihoods are available. A class representing multiple lower triangular matrices and corresponding methods are part of this package.", + "Imports": [ + "stats" + ], + "Depends": [ + "R(>= 3.5.0)" + ], + "Suggests": [ + "qrng", + "numDeriv" + ], + "License": "GPL-2", + "URL": "http://mvtnorm.R-forge.R-project.org", + "NeedsCompilation": "yes", + "Author": "Alan Genz [aut], Frank Bretz [aut], Tetsuhisa Miwa [aut], Xuefei Mi [aut], Friedrich Leisch [ctb], Fabian Scheipl [ctb], Bjoern Bornkamp [ctb] (), Martin Maechler [ctb] (), Torsten Hothorn [aut, cre] ()", + "Maintainer": "Torsten Hothorn ", + "Repository": "RSPM", + "Encoding": "UTF-8" + }, + "nlme": { + "Package": "nlme", + "Version": "3.1-168", + "Source": "Repository", + "Date": "2025-03-31", + "Priority": "recommended", + "Title": "Linear and Nonlinear Mixed Effects Models", + "Authors@R": "c(person(\"José\", \"Pinheiro\", role = \"aut\", comment = \"S version\"), person(\"Douglas\", \"Bates\", role = \"aut\", comment = \"up to 2007\"), person(\"Saikat\", \"DebRoy\", role = \"ctb\", comment = \"up to 2002\"), person(\"Deepayan\", \"Sarkar\", role = \"ctb\", comment = \"up to 2005\"), person(\"EISPACK authors\", role = \"ctb\", comment = \"src/rs.f\"), person(\"Siem\", \"Heisterkamp\", role = \"ctb\", comment = \"Author fixed sigma\"), person(\"Bert\", \"Van Willigen\",role = \"ctb\", comment = \"Programmer fixed sigma\"), person(\"Johannes\", \"Ranke\", role = \"ctb\", comment = \"varConstProp()\"), person(\"R Core Team\", email = \"R-core@R-project.org\", role = c(\"aut\", \"cre\"), comment = c(ROR = \"02zz1nj61\")))", + "Contact": "see 'MailingList'", + "Description": "Fit and compare Gaussian linear and nonlinear mixed-effects models.", + "Depends": [ + "R (>= 3.6.0)" + ], + "Imports": [ + "graphics", + "stats", + "utils", + "lattice" + ], + "Suggests": [ + "MASS", + "SASmixed" + ], + "LazyData": "yes", + "Encoding": "UTF-8", + "License": "GPL (>= 2)", + "BugReports": "https://bugs.r-project.org", + "MailingList": "R-help@r-project.org", + "URL": "https://svn.r-project.org/R-packages/trunk/nlme/", + "NeedsCompilation": "yes", + "Author": "José Pinheiro [aut] (S version), Douglas Bates [aut] (up to 2007), Saikat DebRoy [ctb] (up to 2002), Deepayan Sarkar [ctb] (up to 2005), EISPACK authors [ctb] (src/rs.f), Siem Heisterkamp [ctb] (Author fixed sigma), Bert Van Willigen [ctb] (Programmer fixed sigma), Johannes Ranke [ctb] (varConstProp()), R Core Team [aut, cre] (02zz1nj61)", + "Maintainer": "R Core Team ", + "Repository": "CRAN" + }, + "nnet": { + "Package": "nnet", + "Version": "7.3-20", + "Source": "Repository", + "Priority": "recommended", + "Date": "2025-01-01", + "Depends": [ + "R (>= 3.0.0)", + "stats", + "utils" + ], + "Suggests": [ + "MASS" + ], + "Authors@R": "c(person(\"Brian\", \"Ripley\", role = c(\"aut\", \"cre\", \"cph\"), email = \"Brian.Ripley@R-project.org\"), person(\"William\", \"Venables\", role = \"cph\"))", + "Description": "Software for feed-forward neural networks with a single hidden layer, and for multinomial log-linear models.", + "Title": "Feed-Forward Neural Networks and Multinomial Log-Linear Models", + "ByteCompile": "yes", + "License": "GPL-2 | GPL-3", + "URL": "http://www.stats.ox.ac.uk/pub/MASS4/", + "NeedsCompilation": "yes", + "Author": "Brian Ripley [aut, cre, cph], William Venables [cph]", + "Maintainer": "Brian Ripley ", + "Repository": "CRAN" + }, + "numDeriv": { + "Package": "numDeriv", + "Version": "2016.8-1.1", + "Source": "Repository", + "Title": "Accurate Numerical Derivatives", + "Description": "Methods for calculating (usually) accurate numerical first and second order derivatives. Accurate calculations are done using 'Richardson''s' extrapolation or, when applicable, a complex step derivative is available. A simple difference method is also provided. Simple difference is (usually) less accurate but is much quicker than 'Richardson''s' extrapolation and provides a useful cross-check. Methods are provided for real scalar and vector valued functions.", + "Depends": [ + "R (>= 2.11.1)" + ], + "LazyLoad": "yes", + "ByteCompile": "yes", + "License": "GPL-2", + "Copyright": "2006-2011, Bank of Canada. 2012-2016, Paul Gilbert", + "Author": "Paul Gilbert and Ravi Varadhan", + "Maintainer": "Paul Gilbert ", + "URL": "http://optimizer.r-forge.r-project.org/", + "NeedsCompilation": "no", + "Repository": "RSPM", + "Encoding": "UTF-8" + }, + "openssl": { + "Package": "openssl", + "Version": "2.3.4", + "Source": "Repository", + "Type": "Package", + "Title": "Toolkit for Encryption, Signatures and Certificates Based on OpenSSL", + "Authors@R": "c(person(\"Jeroen\", \"Ooms\", role = c(\"aut\", \"cre\"), email = \"jeroenooms@gmail.com\", comment = c(ORCID = \"0000-0002-4035-0289\")), person(\"Oliver\", \"Keyes\", role = \"ctb\"))", + "Description": "Bindings to OpenSSL libssl and libcrypto, plus custom SSH key parsers. Supports RSA, DSA and EC curves P-256, P-384, P-521, and curve25519. Cryptographic signatures can either be created and verified manually or via x509 certificates. AES can be used in cbc, ctr or gcm mode for symmetric encryption; RSA for asymmetric (public key) encryption or EC for Diffie Hellman. High-level envelope functions combine RSA and AES for encrypting arbitrary sized data. Other utilities include key generators, hash functions (md5, sha1, sha256, etc), base64 encoder, a secure random number generator, and 'bignum' math methods for manually performing crypto calculations on large multibyte integers.", + "License": "MIT + file LICENSE", + "URL": "https://jeroen.r-universe.dev/openssl", + "BugReports": "https://github.com/jeroen/openssl/issues", + "SystemRequirements": "OpenSSL >= 1.0.2", + "VignetteBuilder": "knitr", + "Imports": [ + "askpass" + ], + "Suggests": [ + "curl", + "testthat (>= 2.1.0)", + "digest", + "knitr", + "rmarkdown", + "jsonlite", + "jose", + "sodium" + ], + "RoxygenNote": "7.3.2", + "Encoding": "UTF-8", + "NeedsCompilation": "yes", + "Author": "Jeroen Ooms [aut, cre] (ORCID: ), Oliver Keyes [ctb]", + "Maintainer": "Jeroen Ooms ", + "Repository": "https://packagemanager.posit.co/cran/latest" + }, + "optparse": { + "Package": "optparse", + "Version": "1.7.5", + "Source": "Repository", + "Encoding": "UTF-8", + "Type": "Package", + "Title": "Command Line Option Parser", + "Authors@R": "c(person(\"Trevor L.\", \"Davis\", role=c(\"aut\", \"cre\"), email=\"trevor.l.davis@gmail.com\", comment = c(ORCID = \"0000-0001-6341-4639\")), person(\"Allen\", \"Day\", role=\"ctb\", comment=\"Some documentation and examples ported from the getopt package.\"), person(\"Python Software Foundation\", role=\"ctb\", comment=\"Some documentation from the optparse Python module.\"), person(\"Steve\", \"Lianoglou\", role=\"ctb\"), person(\"Jim\", \"Nikelski\", role=\"ctb\"), person(\"Kirill\", \"Müller\", role=\"ctb\"), person(\"Peter\", \"Humburg\", role=\"ctb\"), person(\"Rich\", \"FitzJohn\", role=\"ctb\"), person(\"Gyu Jin\", \"Choi\", role=\"ctb\"))", + "Description": "A command line parser inspired by Python's 'optparse' library to be used with Rscript to write \"#!\" shebang scripts that accept short and long flag/options.", + "License": "GPL (>= 2)", + "Copyright": "See file (inst/)COPYRIGHTS.", + "URL": "https://github.com/trevorld/r-optparse", + "BugReports": "https://github.com/trevorld/r-optparse/issues", + "LazyLoad": "yes", + "Depends": [ + "R (>= 3.6.0)" + ], + "Imports": [ + "methods", + "getopt (>= 1.20.2)" + ], + "Suggests": [ + "knitr (>= 1.15.19)", + "stringr", + "testthat" + ], + "VignetteBuilder": "knitr", + "RoxygenNote": "7.3.1", + "NeedsCompilation": "no", + "Author": "Trevor L. Davis [aut, cre] (), Allen Day [ctb] (Some documentation and examples ported from the getopt package.), Python Software Foundation [ctb] (Some documentation from the optparse Python module.), Steve Lianoglou [ctb], Jim Nikelski [ctb], Kirill Müller [ctb], Peter Humburg [ctb], Rich FitzJohn [ctb], Gyu Jin Choi [ctb]", + "Maintainer": "Trevor L. Davis ", + "Repository": "CRAN" + }, + "org.Cf.eg.db": { + "Package": "org.Cf.eg.db", + "Version": "3.22.0", + "Source": "Bioconductor", + "Title": "Genome wide annotation for Canine", + "Description": "Genome wide annotation for Canine, primarily based on mapping using Entrez Gene identifiers.", + "Author": "Marc Carlson", + "Maintainer": "Bioconductor Package Maintainer ", + "Depends": [ + "R (>= 2.7.0)", + "methods", + "AnnotationDbi (>= 1.71.1)" + ], + "Suggests": [ + "DBI", + "annotate", + "RUnit" + ], + "License": "Artistic-2.0", + "organism": "Canis familiaris", + "species": "Canine", + "biocViews": "OrgDb, AnnotationData, Canis_familiaris", + "NeedsCompilation": "no" + }, + "org.Dr.eg.db": { + "Package": "org.Dr.eg.db", + "Version": "3.22.0", + "Source": "Bioconductor", + "Title": "Genome wide annotation for Zebrafish", + "Description": "Genome wide annotation for Zebrafish, primarily based on mapping using Entrez Gene identifiers.", + "Author": "Marc Carlson", + "Maintainer": "Bioconductor Package Maintainer ", + "Depends": [ + "R (>= 2.7.0)", + "methods", + "AnnotationDbi (>= 1.71.1)" + ], + "Suggests": [ + "DBI", + "annotate", + "RUnit" + ], + "License": "Artistic-2.0", + "organism": "Danio rerio", + "species": "Zebrafish", + "biocViews": "OrgDb, AnnotationData, Danio_rerio", + "NeedsCompilation": "no" + }, + "org.Hs.eg.db": { + "Package": "org.Hs.eg.db", + "Version": "3.22.0", + "Source": "Bioconductor", + "Title": "Genome wide annotation for Human", + "Description": "Genome wide annotation for Human, primarily based on mapping using Entrez Gene identifiers.", + "Author": "Marc Carlson", + "Maintainer": "Bioconductor Package Maintainer ", + "Depends": [ + "R (>= 2.7.0)", + "methods", + "AnnotationDbi (>= 1.71.1)" + ], + "Suggests": [ + "DBI", + "annotate", + "RUnit" + ], + "License": "Artistic-2.0", + "organism": "Homo sapiens", + "species": "Human", + "biocViews": "OrgDb, AnnotationData, Homo_sapiens, humanLLMappings", + "NeedsCompilation": "no" + }, + "org.Mm.eg.db": { + "Package": "org.Mm.eg.db", + "Version": "3.22.0", + "Source": "Bioconductor", + "Title": "Genome wide annotation for Mouse", + "Description": "Genome wide annotation for Mouse, primarily based on mapping using Entrez Gene identifiers.", + "Author": "Marc Carlson", + "Maintainer": "Bioconductor Package Maintainer ", + "Depends": [ + "R (>= 2.7.0)", + "methods", + "AnnotationDbi (>= 1.71.1)" + ], + "Suggests": [ + "DBI", + "annotate", + "RUnit" + ], + "License": "Artistic-2.0", + "organism": "Mus musculus", + "species": "Mouse", + "biocViews": "OrgDb, AnnotationData, Mus_musculus, mouseLLMappings", + "NeedsCompilation": "no" + }, + "otel": { + "Package": "otel", + "Version": "0.2.0", + "Source": "Repository", + "Title": "OpenTelemetry R API", + "Authors@R": "person(\"Gábor\", \"Csárdi\", , \"csardi.gabor@gmail.com\", role = c(\"aut\", \"cre\"))", + "Description": "High-quality, ubiquitous, and portable telemetry to enable effective observability. OpenTelemetry is a collection of tools, APIs, and SDKs used to instrument, generate, collect, and export telemetry data (metrics, logs, and traces) for analysis in order to understand your software's performance and behavior. This package implements the OpenTelemetry API: . Use this package as a dependency if you want to instrument your R package for OpenTelemetry.", + "License": "MIT + file LICENSE", + "Encoding": "UTF-8", + "RoxygenNote": "7.3.2.9000", + "Depends": [ + "R (>= 3.6.0)" + ], + "Suggests": [ + "callr", + "cli", + "glue", + "jsonlite", + "otelsdk", + "processx", + "shiny", + "spelling", + "testthat (>= 3.0.0)", + "utils", + "withr" + ], + "Config/Needs/website": "tidyverse/tidytemplate", + "Config/testthat/edition": "3", + "URL": "https://otel.r-lib.org, https://github.com/r-lib/otel", + "Additional_repositories": "https://github.com/r-lib/otelsdk/releases/download/devel", + "BugReports": "https://github.com/r-lib/otel/issues", + "NeedsCompilation": "no", + "Author": "Gábor Csárdi [aut, cre]", + "Maintainer": "Gábor Csárdi ", + "Repository": "https://packagemanager.posit.co/cran/latest" + }, + "palmerpenguins": { + "Package": "palmerpenguins", + "Version": "0.1.1", + "Source": "Repository", + "Title": "Palmer Archipelago (Antarctica) Penguin Data", + "Date": "2022-08-12", + "Authors@R": "c( person(given = \"Allison\", family = \"Horst\", role = c(\"aut\", \"cre\"), email = \"ahorst@ucsb.edu\", comment = c(ORCID = \"0000-0002-6047-5564\")), person(given = \"Alison\", family = \"Hill\", role = c(\"aut\"), email = \"apresstats@gmail.com\", comment = c(ORCID = \"0000-0002-8082-1890\")), person(given = \"Kristen\", family = \"Gorman\", role = c(\"aut\"), email = \"kbgorman@alaska.edu\", comment = c(ORCID = \"0000-0002-0258-9264\")) )", + "Description": "Size measurements, clutch observations, and blood isotope ratios for adult foraging Adélie, Chinstrap, and Gentoo penguins observed on islands in the Palmer Archipelago near Palmer Station, Antarctica. Data were collected and made available by Dr. Kristen Gorman and the Palmer Station Long Term Ecological Research (LTER) Program.", + "License": "CC0", + "Encoding": "UTF-8", + "LazyData": "true", + "RoxygenNote": "7.2.1.9000", + "Depends": [ + "R (>= 2.10)" + ], + "Suggests": [ + "knitr", + "rmarkdown", + "tibble", + "ggplot2", + "dplyr", + "tidyr", + "recipes" + ], + "URL": "https://allisonhorst.github.io/palmerpenguins/, https://github.com/allisonhorst/palmerpenguins", + "BugReports": "https://github.com/allisonhorst/palmerpenguins/issues", + "NeedsCompilation": "no", + "Author": "Allison Horst [aut, cre] (), Alison Hill [aut] (), Kristen Gorman [aut] ()", + "Maintainer": "Allison Horst ", + "Repository": "CRAN" + }, + "patchwork": { + "Package": "patchwork", + "Version": "1.3.2", + "Source": "Repository", + "Type": "Package", + "Title": "The Composer of Plots", + "Authors@R": "person(given = \"Thomas Lin\", family = \"Pedersen\", role = c(\"cre\", \"aut\"), email = \"thomasp85@gmail.com\", comment = c(ORCID = \"0000-0002-5147-4711\"))", + "Maintainer": "Thomas Lin Pedersen ", + "Description": "The 'ggplot2' package provides a strong API for sequentially building up a plot, but does not concern itself with composition of multiple plots. 'patchwork' is a package that expands the API to allow for arbitrarily complex composition of plots by, among others, providing mathematical operators for combining multiple plots. Other packages that try to address this need (but with a different approach) are 'gridExtra' and 'cowplot'.", + "License": "MIT + file LICENSE", + "Encoding": "UTF-8", + "Imports": [ + "ggplot2 (>= 3.0.0)", + "gtable (>= 0.3.6)", + "grid", + "stats", + "grDevices", + "utils", + "graphics", + "rlang (>= 1.0.0)", + "cli", + "farver" + ], + "RoxygenNote": "7.3.2", + "URL": "https://patchwork.data-imaginist.com, https://github.com/thomasp85/patchwork", + "BugReports": "https://github.com/thomasp85/patchwork/issues", + "Suggests": [ + "knitr", + "rmarkdown", + "gridGraphics", + "gridExtra", + "ragg", + "testthat (>= 2.1.0)", + "vdiffr", + "covr", + "png", + "gt (>= 0.11.0)" + ], + "VignetteBuilder": "knitr", + "Config/Needs/website": "gifski", + "NeedsCompilation": "no", + "Author": "Thomas Lin Pedersen [cre, aut] (ORCID: )", + "Repository": "https://packagemanager.posit.co/cran/latest" + }, + "pheatmap": { + "Package": "pheatmap", + "Version": "1.0.13", + "Source": "Repository", + "Type": "Package", + "Title": "Pretty Heatmaps", + "Date": "2025-06-05", + "Authors@R": "person(given = \"Raivo\", family = \"Kolde\", role = c(\"aut\", \"cre\"), email = \"rkolde@gmail.com\")", + "Depends": [ + "R (>= 2.0)" + ], + "Description": "Implementation of heatmaps that offers more control over dimensions and appearance.", + "Imports": [ + "grid", + "RColorBrewer", + "scales", + "gtable", + "stats", + "grDevices", + "graphics" + ], + "License": "GPL-2", + "Encoding": "UTF-8", + "LazyLoad": "yes", + "RoxygenNote": "7.3.2", + "NeedsCompilation": "no", + "Author": "Raivo Kolde [aut, cre]", + "Maintainer": "Raivo Kolde ", + "Repository": "https://packagemanager.posit.co/cran/latest" + }, + "pillar": { + "Package": "pillar", + "Version": "1.11.1", + "Source": "Repository", + "Title": "Coloured Formatting for Columns", + "Authors@R": "c(person(given = \"Kirill\", family = \"M\\u00fcller\", role = c(\"aut\", \"cre\"), email = \"kirill@cynkra.com\", comment = c(ORCID = \"0000-0002-1416-3412\")), person(given = \"Hadley\", family = \"Wickham\", role = \"aut\"), person(given = \"RStudio\", role = \"cph\"))", + "Description": "Provides 'pillar' and 'colonnade' generics designed for formatting columns of data using the full range of colours provided by modern terminals.", + "License": "MIT + file LICENSE", + "URL": "https://pillar.r-lib.org/, https://github.com/r-lib/pillar", + "BugReports": "https://github.com/r-lib/pillar/issues", + "Imports": [ + "cli (>= 2.3.0)", + "glue", + "lifecycle", + "rlang (>= 1.0.2)", + "utf8 (>= 1.1.0)", + "utils", + "vctrs (>= 0.5.0)" + ], + "Suggests": [ + "bit64", + "DBI", + "debugme", + "DiagrammeR", + "dplyr", + "formattable", + "ggplot2", + "knitr", + "lubridate", + "nanotime", + "nycflights13", + "palmerpenguins", + "rmarkdown", + "scales", + "stringi", + "survival", + "testthat (>= 3.1.1)", + "tibble", + "units (>= 0.7.2)", + "vdiffr", + "withr" + ], + "VignetteBuilder": "knitr", + "Encoding": "UTF-8", + "RoxygenNote": "7.3.3.9000", + "Config/testthat/edition": "3", + "Config/testthat/parallel": "true", + "Config/testthat/start-first": "format_multi_fuzz, format_multi_fuzz_2, format_multi, ctl_colonnade, ctl_colonnade_1, ctl_colonnade_2", + "Config/autostyle/scope": "line_breaks", + "Config/autostyle/strict": "true", + "Config/gha/extra-packages": "units=?ignore-before-r=4.3.0", + "Config/Needs/website": "tidyverse/tidytemplate", + "NeedsCompilation": "no", + "Author": "Kirill Müller [aut, cre] (ORCID: ), Hadley Wickham [aut], RStudio [cph]", + "Maintainer": "Kirill Müller ", + "Repository": "https://packagemanager.posit.co/cran/latest" + }, + "pkgconfig": { + "Package": "pkgconfig", + "Version": "2.0.3", + "Source": "Repository", + "Title": "Private Configuration for 'R' Packages", + "Author": "Gábor Csárdi", + "Maintainer": "Gábor Csárdi ", + "Description": "Set configuration options on a per-package basis. Options set by a given package only apply to that package, other packages are unaffected.", + "License": "MIT + file LICENSE", + "LazyData": "true", + "Imports": [ + "utils" + ], + "Suggests": [ + "covr", + "testthat", + "disposables (>= 1.0.3)" + ], + "URL": "https://github.com/r-lib/pkgconfig#readme", + "BugReports": "https://github.com/r-lib/pkgconfig/issues", + "Encoding": "UTF-8", + "NeedsCompilation": "no", + "Repository": "https://packagemanager.posit.co/cran/latest" + }, + "plogr": { + "Package": "plogr", + "Version": "0.2.0", + "Source": "Repository", + "Title": "The 'plog' C++ Logging Library", + "Date": "2018-03-24", + "Authors@R": "c( person(\"Kirill\", \"Müller\", role = c(\"aut\", \"cre\"), email = \"krlmlr+r@mailbox.org\"), person(\"Sergey\", \"Podobry\", role = \"cph\", comment = \"Author of the bundled plog library\"))", + "Description": "A simple header-only logging library for C++. Add 'LinkingTo: plogr' to 'DESCRIPTION', and '#include ' in your C++ modules to use it.", + "Suggests": [ + "Rcpp" + ], + "License": "MIT + file LICENSE", + "Encoding": "UTF-8", + "LazyData": "true", + "URL": "https://github.com/krlmlr/plogr#readme", + "BugReports": "https://github.com/krlmlr/plogr/issues", + "RoxygenNote": "6.0.1.9000", + "NeedsCompilation": "no", + "Author": "Kirill Müller [aut, cre], Sergey Podobry [cph] (Author of the bundled plog library)", + "Maintainer": "Kirill Müller ", + "Repository": "https://packagemanager.posit.co/cran/latest" + }, + "plotly": { + "Package": "plotly", + "Version": "4.11.0", + "Source": "Repository", + "Title": "Create Interactive Web Graphics via 'plotly.js'", + "Authors@R": "c(person(\"Carson\", \"Sievert\", role = c(\"aut\", \"cre\"), email = \"cpsievert1@gmail.com\", comment = c(ORCID = \"0000-0002-4958-2844\")), person(\"Chris\", \"Parmer\", role = \"aut\", email = \"chris@plot.ly\"), person(\"Toby\", \"Hocking\", role = \"aut\", email = \"tdhock5@gmail.com\"), person(\"Scott\", \"Chamberlain\", role = \"aut\", email = \"myrmecocystus@gmail.com\"), person(\"Karthik\", \"Ram\", role = \"aut\", email = \"karthik.ram@gmail.com\"), person(\"Marianne\", \"Corvellec\", role = \"aut\", email = \"marianne.corvellec@igdore.org\", comment = c(ORCID = \"0000-0002-1994-3581\")), person(\"Pedro\", \"Despouy\", role = \"aut\", email = \"pedro@plot.ly\"), person(\"Salim\", \"Brüggemann\", role = \"ctb\", email = \"salim-b@pm.me\", comment = c(ORCID = \"0000-0002-5329-5987\")), person(\"Plotly Technologies Inc.\", role = \"cph\"))", + "License": "MIT + file LICENSE", + "Description": "Create interactive web graphics from 'ggplot2' graphs and/or a custom interface to the (MIT-licensed) JavaScript library 'plotly.js' inspired by the grammar of graphics.", + "URL": "https://plotly-r.com, https://github.com/plotly/plotly.R, https://plotly.com/r/", + "BugReports": "https://github.com/plotly/plotly.R/issues", + "Depends": [ + "R (>= 3.2.0)", + "ggplot2 (>= 3.0.0)" + ], + "Imports": [ + "tools", + "scales", + "httr (>= 1.3.0)", + "jsonlite (>= 1.6)", + "magrittr", + "digest", + "viridisLite", + "base64enc", + "htmltools (>= 0.3.6)", + "htmlwidgets (>= 1.5.2.9001)", + "tidyr (>= 1.0.0)", + "RColorBrewer", + "dplyr", + "vctrs", + "tibble", + "lazyeval (>= 0.2.0)", + "rlang (>= 1.0.0)", + "crosstalk", + "purrr", + "data.table", + "promises" + ], + "Suggests": [ + "MASS", + "maps", + "hexbin", + "ggthemes", + "GGally", + "ggalluvial", + "testthat", + "knitr", + "shiny (>= 1.1.0)", + "shinytest2", + "curl", + "rmarkdown", + "Cairo", + "broom", + "webshot", + "listviewer", + "dendextend", + "sf", + "png", + "IRdisplay", + "processx", + "plotlyGeoAssets", + "forcats", + "withr", + "palmerpenguins", + "rversions", + "reticulate", + "rsvg", + "ggridges" + ], + "LazyData": "true", + "RoxygenNote": "7.3.2", + "Encoding": "UTF-8", + "Config/Needs/check": "tidyverse/ggplot2, ggobi/GGally, rcmdcheck, devtools, reshape2, s2", + "NeedsCompilation": "no", + "Author": "Carson Sievert [aut, cre] (ORCID: ), Chris Parmer [aut], Toby Hocking [aut], Scott Chamberlain [aut], Karthik Ram [aut], Marianne Corvellec [aut] (ORCID: ), Pedro Despouy [aut], Salim Brüggemann [ctb] (ORCID: ), Plotly Technologies Inc. [cph]", + "Maintainer": "Carson Sievert ", + "Repository": "https://packagemanager.posit.co/cran/latest" + }, + "plyr": { + "Package": "plyr", + "Version": "1.8.9", + "Source": "Repository", + "Title": "Tools for Splitting, Applying and Combining Data", + "Authors@R": "person(\"Hadley\", \"Wickham\", , \"hadley@rstudio.com\", role = c(\"aut\", \"cre\"))", + "Description": "A set of tools that solves a common set of problems: you need to break a big problem down into manageable pieces, operate on each piece and then put all the pieces back together. For example, you might want to fit a model to each spatial location or time point in your study, summarise data by panels or collapse high-dimensional arrays to simpler summary statistics. The development of 'plyr' has been generously supported by 'Becton Dickinson'.", + "License": "MIT + file LICENSE", + "URL": "http://had.co.nz/plyr, https://github.com/hadley/plyr", + "BugReports": "https://github.com/hadley/plyr/issues", + "Depends": [ + "R (>= 3.1.0)" + ], + "Imports": [ + "Rcpp (>= 0.11.0)" + ], + "Suggests": [ + "abind", + "covr", + "doParallel", + "foreach", + "iterators", + "itertools", + "tcltk", + "testthat" + ], + "LinkingTo": [ + "Rcpp" + ], + "Encoding": "UTF-8", + "LazyData": "true", + "RoxygenNote": "7.2.3", + "NeedsCompilation": "yes", + "Author": "Hadley Wickham [aut, cre]", + "Maintainer": "Hadley Wickham ", + "Repository": "https://packagemanager.posit.co/cran/latest" + }, + "png": { + "Package": "png", + "Version": "0.1-8", + "Source": "Repository", + "Title": "Read and write PNG images", + "Author": "Simon Urbanek ", + "Maintainer": "Simon Urbanek ", + "Depends": [ + "R (>= 2.9.0)" + ], + "Description": "This package provides an easy and simple way to read, write and display bitmap images stored in the PNG format. It can read and write both files and in-memory raw vectors.", + "License": "GPL-2 | GPL-3", + "SystemRequirements": "libpng", + "URL": "http://www.rforge.net/png/", + "NeedsCompilation": "yes", + "Repository": "https://packagemanager.posit.co/cran/latest", + "Encoding": "UTF-8" + }, + "polyclip": { + "Package": "polyclip", + "Version": "1.10-7", + "Source": "Repository", + "Date": "2024-07-23", + "Title": "Polygon Clipping", + "Authors@R": "c(person(\"Angus\", \"Johnson\", role = \"aut\", comment=\"C++ original, http://www.angusj.com/delphi/clipper.php\"), person(\"Adrian\", \"Baddeley\", role = c(\"aut\", \"trl\", \"cre\"), email = \"Adrian.Baddeley@curtin.edu.au\"), person(\"Kurt\", \"Hornik\", role = \"ctb\"), person(c(\"Brian\", \"D.\"), \"Ripley\", role = \"ctb\"), person(\"Elliott\", \"Sales de Andrade\", role=\"ctb\"), person(\"Paul\", \"Murrell\", role = \"ctb\"), person(\"Ege\", \"Rubak\", role=\"ctb\"), person(\"Mark\", \"Padgham\", role=\"ctb\"))", + "Maintainer": "Adrian Baddeley ", + "Depends": [ + "R (>= 3.5.0)" + ], + "Description": "R port of Angus Johnson's open source library 'Clipper'. Performs polygon clipping operations (intersection, union, set minus, set difference) for polygonal regions of arbitrary complexity, including holes. Computes offset polygons (spatial buffer zones, morphological dilations, Minkowski dilations) for polygonal regions and polygonal lines. Computes Minkowski Sum of general polygons. There is a function for removing self-intersections from polygon data.", + "License": "BSL", + "URL": "https://www.angusj.com, https://sourceforge.net/projects/polyclipping, https://github.com/baddstats/polyclip", + "BugReports": "https://github.com/baddstats/polyclip/issues", + "ByteCompile": "true", + "Note": "built from Clipper C++ version 6.4.0", + "NeedsCompilation": "yes", + "Author": "Angus Johnson [aut] (C++ original, http://www.angusj.com/delphi/clipper.php), Adrian Baddeley [aut, trl, cre], Kurt Hornik [ctb], Brian D. Ripley [ctb], Elliott Sales de Andrade [ctb], Paul Murrell [ctb], Ege Rubak [ctb], Mark Padgham [ctb]", + "Repository": "https://packagemanager.posit.co/cran/latest", + "Encoding": "UTF-8" + }, + "preprocessCore": { + "Package": "preprocessCore", + "Version": "1.72.0", + "Source": "Bioconductor", + "Title": "A collection of pre-processing functions", + "Author": "Ben Bolstad ", + "Maintainer": "Ben Bolstad ", + "Imports": [ + "stats" + ], + "Description": "A library of core preprocessing routines.", + "License": "LGPL (>= 2)", + "URL": "https://github.com/bmbolstad/preprocessCore", + "Collate": "normalize.quantiles.R quantile_extensions.R rma.background.correct.R rcModel.R colSummarize.R subColSummarize.R plmr.R plmd.R", + "LazyLoad": "yes", + "biocViews": "Infrastructure", + "git_url": "https://git.bioconductor.org/packages/preprocessCore", + "git_branch": "RELEASE_3_22", + "git_last_commit": "f8fc99a", + "git_last_commit_date": "2025-10-29", + "Repository": "Bioconductor 3.22", + "NeedsCompilation": "yes" + }, + "prettyunits": { + "Package": "prettyunits", + "Version": "1.2.0", + "Source": "Repository", + "Title": "Pretty, Human Readable Formatting of Quantities", + "Authors@R": "c( person(\"Gabor\", \"Csardi\", email=\"csardi.gabor@gmail.com\", role=c(\"aut\", \"cre\")), person(\"Bill\", \"Denney\", email=\"wdenney@humanpredictions.com\", role=c(\"ctb\"), comment=c(ORCID=\"0000-0002-5759-428X\")), person(\"Christophe\", \"Regouby\", email=\"christophe.regouby@free.fr\", role=c(\"ctb\")) )", + "Description": "Pretty, human readable formatting of quantities. Time intervals: '1337000' -> '15d 11h 23m 20s'. Vague time intervals: '2674000' -> 'about a month ago'. Bytes: '1337' -> '1.34 kB'. Rounding: '99' with 3 significant digits -> '99.0' p-values: '0.00001' -> '<0.0001'. Colors: '#FF0000' -> 'red'. Quantities: '1239437' -> '1.24 M'.", + "License": "MIT + file LICENSE", + "URL": "https://github.com/r-lib/prettyunits", + "BugReports": "https://github.com/r-lib/prettyunits/issues", + "Depends": [ + "R(>= 2.10)" + ], + "Suggests": [ + "codetools", + "covr", + "testthat" + ], + "RoxygenNote": "7.2.3", + "Encoding": "UTF-8", + "NeedsCompilation": "no", + "Author": "Gabor Csardi [aut, cre], Bill Denney [ctb] (), Christophe Regouby [ctb]", + "Maintainer": "Gabor Csardi ", + "Repository": "https://packagemanager.posit.co/cran/latest" + }, + "processx": { + "Package": "processx", + "Version": "3.8.6", + "Source": "Repository", + "Title": "Execute and Control System Processes", + "Authors@R": "c( person(\"Gábor\", \"Csárdi\", , \"csardi.gabor@gmail.com\", role = c(\"aut\", \"cre\", \"cph\"), comment = c(ORCID = \"0000-0001-7098-9676\")), person(\"Winston\", \"Chang\", role = \"aut\"), person(\"Posit Software, PBC\", role = c(\"cph\", \"fnd\")), person(\"Ascent Digital Services\", role = c(\"cph\", \"fnd\")) )", + "Description": "Tools to run system processes in the background. It can check if a background process is running; wait on a background process to finish; get the exit status of finished processes; kill background processes. It can read the standard output and error of the processes, using non-blocking connections. 'processx' can poll a process for standard output or error, with a timeout. It can also poll several processes at once.", + "License": "MIT + file LICENSE", + "URL": "https://processx.r-lib.org, https://github.com/r-lib/processx", + "BugReports": "https://github.com/r-lib/processx/issues", + "Depends": [ + "R (>= 3.4.0)" + ], + "Imports": [ + "ps (>= 1.2.0)", + "R6", + "utils" + ], + "Suggests": [ + "callr (>= 3.7.3)", + "cli (>= 3.3.0)", + "codetools", + "covr", + "curl", + "debugme", + "parallel", + "rlang (>= 1.0.2)", + "testthat (>= 3.0.0)", + "webfakes", + "withr" + ], + "Config/Needs/website": "tidyverse/tidytemplate", + "Config/testthat/edition": "3", + "Encoding": "UTF-8", + "RoxygenNote": "7.3.1.9000", + "NeedsCompilation": "yes", + "Author": "Gábor Csárdi [aut, cre, cph] (), Winston Chang [aut], Posit Software, PBC [cph, fnd], Ascent Digital Services [cph, fnd]", + "Maintainer": "Gábor Csárdi ", + "Repository": "CRAN" + }, + "progress": { + "Package": "progress", + "Version": "1.2.3", + "Source": "Repository", + "Title": "Terminal Progress Bars", + "Authors@R": "c( person(\"Gábor\", \"Csárdi\", , \"csardi.gabor@gmail.com\", role = c(\"aut\", \"cre\")), person(\"Rich\", \"FitzJohn\", role = \"aut\"), person(\"Posit Software, PBC\", role = c(\"cph\", \"fnd\")) )", + "Description": "Configurable Progress bars, they may include percentage, elapsed time, and/or the estimated completion time. They work in terminals, in 'Emacs' 'ESS', 'RStudio', 'Windows' 'Rgui' and the 'macOS' 'R.app'. The package also provides a 'C++' 'API', that works with or without 'Rcpp'.", + "License": "MIT + file LICENSE", + "URL": "https://github.com/r-lib/progress#readme, http://r-lib.github.io/progress/", + "BugReports": "https://github.com/r-lib/progress/issues", + "Depends": [ + "R (>= 3.6)" + ], + "Imports": [ + "crayon", + "hms", + "prettyunits", + "R6" + ], + "Suggests": [ + "Rcpp", + "testthat (>= 3.0.0)", + "withr" + ], + "Config/Needs/website": "tidyverse/tidytemplate", + "Config/testthat/edition": "3", + "Encoding": "UTF-8", + "RoxygenNote": "7.2.3", + "NeedsCompilation": "no", + "Author": "Gábor Csárdi [aut, cre], Rich FitzJohn [aut], Posit Software, PBC [cph, fnd]", + "Maintainer": "Gábor Csárdi ", + "Repository": "https://packagemanager.posit.co/cran/latest" + }, + "promises": { + "Package": "promises", + "Version": "1.5.0", + "Source": "Repository", + "Type": "Package", + "Title": "Abstractions for Promise-Based Asynchronous Programming", + "Authors@R": "c( person(\"Joe\", \"Cheng\", , \"joe@posit.co\", role = \"aut\"), person(\"Barret\", \"Schloerke\", , \"barret@posit.co\", role = c(\"aut\", \"cre\"), comment = c(ORCID = \"0000-0001-9986-114X\")), person(\"Winston\", \"Chang\", , \"winston@posit.co\", role = \"aut\", comment = c(ORCID = \"0000-0002-1576-2126\")), person(\"Charlie\", \"Gao\", , \"charlie.gao@posit.co\", role = \"aut\", comment = c(ORCID = \"0000-0002-0750-061X\")), person(\"Posit Software, PBC\", role = c(\"cph\", \"fnd\"), comment = c(ROR = \"03wc8by49\")) )", + "Description": "Provides fundamental abstractions for doing asynchronous programming in R using promises. Asynchronous programming is useful for allowing a single R process to orchestrate multiple tasks in the background while also attending to something else. Semantics are similar to 'JavaScript' promises, but with a syntax that is idiomatic R.", + "License": "MIT + file LICENSE", + "URL": "https://rstudio.github.io/promises/, https://github.com/rstudio/promises", + "BugReports": "https://github.com/rstudio/promises/issues", + "Depends": [ + "R (>= 4.1.0)" + ], + "Imports": [ + "fastmap (>= 1.1.0)", + "later", + "lifecycle", + "magrittr (>= 1.5)", + "otel (>= 0.2.0)", + "R6", + "rlang" + ], + "Suggests": [ + "future (>= 1.21.0)", + "knitr", + "mirai", + "otelsdk (>= 0.2.0)", + "purrr", + "Rcpp", + "rmarkdown", + "spelling", + "testthat (>= 3.0.0)", + "vembedr" + ], + "VignetteBuilder": "knitr", + "Config/Needs/website": "rsconnect, tidyverse/tidytemplate", + "Config/testthat/edition": "3", + "Config/usethis/last-upkeep": "2025-05-27", + "Encoding": "UTF-8", + "Language": "en-US", + "RoxygenNote": "7.3.3", + "NeedsCompilation": "no", + "Author": "Joe Cheng [aut], Barret Schloerke [aut, cre] (ORCID: ), Winston Chang [aut] (ORCID: ), Charlie Gao [aut] (ORCID: ), Posit Software, PBC [cph, fnd] (ROR: )", + "Maintainer": "Barret Schloerke ", + "Repository": "https://packagemanager.posit.co/cran/latest" + }, + "ps": { + "Package": "ps", + "Version": "1.9.1", + "Source": "Repository", + "Title": "List, Query, Manipulate System Processes", + "Authors@R": "c( person(\"Jay\", \"Loden\", role = \"aut\"), person(\"Dave\", \"Daeschler\", role = \"aut\"), person(\"Giampaolo\", \"Rodola'\", role = \"aut\"), person(\"Gábor\", \"Csárdi\", , \"csardi.gabor@gmail.com\", role = c(\"aut\", \"cre\")), person(\"Posit Software, PBC\", role = c(\"cph\", \"fnd\")) )", + "Description": "List, query and manipulate all system processes, on 'Windows', 'Linux' and 'macOS'.", + "License": "MIT + file LICENSE", + "URL": "https://github.com/r-lib/ps, https://ps.r-lib.org/", + "BugReports": "https://github.com/r-lib/ps/issues", + "Depends": [ + "R (>= 3.4)" + ], + "Imports": [ + "utils" + ], + "Suggests": [ + "callr", + "covr", + "curl", + "pillar", + "pingr", + "processx (>= 3.1.0)", + "R6", + "rlang", + "testthat (>= 3.0.0)", + "webfakes", + "withr" + ], + "Biarch": "true", + "Config/Needs/website": "tidyverse/tidytemplate", + "Config/testthat/edition": "3", + "Encoding": "UTF-8", + "RoxygenNote": "7.3.2", + "NeedsCompilation": "yes", + "Author": "Jay Loden [aut], Dave Daeschler [aut], Giampaolo Rodola' [aut], Gábor Csárdi [aut, cre], Posit Software, PBC [cph, fnd]", + "Maintainer": "Gábor Csárdi ", + "Repository": "CRAN" + }, + "purrr": { + "Package": "purrr", + "Version": "1.2.1", + "Source": "Repository", + "Title": "Functional Programming Tools", + "Authors@R": "c( person(\"Hadley\", \"Wickham\", , \"hadley@posit.co\", role = c(\"aut\", \"cre\"), comment = c(ORCID = \"0000-0003-4757-117X\")), person(\"Lionel\", \"Henry\", , \"lionel@posit.co\", role = \"aut\"), person(\"Posit Software, PBC\", role = c(\"cph\", \"fnd\"), comment = c(ROR = \"https://ror.org/03wc8by49\")) )", + "Description": "A complete and consistent functional programming toolkit for R.", + "License": "MIT + file LICENSE", + "URL": "https://purrr.tidyverse.org/, https://github.com/tidyverse/purrr", + "BugReports": "https://github.com/tidyverse/purrr/issues", + "Depends": [ + "R (>= 4.1)" + ], + "Imports": [ + "cli (>= 3.6.1)", + "lifecycle (>= 1.0.3)", + "magrittr (>= 1.5.0)", + "rlang (>= 1.1.1)", + "vctrs (>= 0.6.3)" + ], + "Suggests": [ + "carrier (>= 0.3.0)", + "covr", + "dplyr (>= 0.7.8)", + "httr", + "knitr", + "lubridate", + "mirai (>= 2.5.1)", + "rmarkdown", + "testthat (>= 3.0.0)", + "tibble", + "tidyselect" + ], + "LinkingTo": [ + "cli" + ], + "VignetteBuilder": "knitr", + "Biarch": "true", + "Config/build/compilation-database": "true", + "Config/Needs/website": "tidyverse/tidytemplate, tidyr", + "Config/testthat/edition": "3", + "Config/testthat/parallel": "TRUE", + "Encoding": "UTF-8", + "RoxygenNote": "7.3.3", + "NeedsCompilation": "yes", + "Author": "Hadley Wickham [aut, cre] (ORCID: ), Lionel Henry [aut], Posit Software, PBC [cph, fnd] (ROR: )", + "Maintainer": "Hadley Wickham ", + "Repository": "CRAN" + }, + "qusage": { + "Package": "qusage", + "Version": "2.44.0", + "Source": "Bioconductor", + "Date": "2013-01-20", + "Title": "qusage: Quantitative Set Analysis for Gene Expression", + "Authors@R": "c(person(\"Christopher Bolen\", \"Developer\", role = c(\"aut\", \"cre\"), email = \"cbolen1@gmail.com\"), person(\"Gur Yaari\", \"Developer\", role = \"aut\"), person(\"Juilee Thakar\", \"Developer\", role = \"aut\"), person(\"Hailong Meng\", \"Developer\", role = \"aut\"), person(\"Jacob Turner\", \"Developer\", role = \"aut\"), person(\"Derek Blankenship\", \"Developer\", role = \"aut\"), person(\"Steven Kleinstein\", \"Developer\", role = \"aut\"))", + "Author": "Christopher Bolen and Gur Yaari, with contributions from Juilee Thakar, Hailong Meng, Jacob Turner, Derek Blankenship, and Steven Kleinstein", + "Maintainer": "Christopher Bolen ", + "Depends": [ + "R (>= 2.10)", + "limma (>= 3.14)", + "methods" + ], + "Imports": [ + "utils", + "Biobase", + "nlme", + "emmeans", + "fftw" + ], + "Description": "This package is an implementation the Quantitative Set Analysis for Gene Expression (QuSAGE) method described in (Yaari G. et al, Nucl Acids Res, 2013). This is a novel Gene Set Enrichment-type test, which is designed to provide a faster, more accurate, and easier to understand test for gene expression studies. qusage accounts for inter-gene correlations using the Variance Inflation Factor technique proposed by Wu et al. (Nucleic Acids Res, 2012). In addition, rather than simply evaluating the deviation from a null hypothesis with a single number (a P value), qusage quantifies gene set activity with a complete probability density function (PDF). From this PDF, P values and confidence intervals can be easily extracted. Preserving the PDF also allows for post-hoc analysis (e.g., pair-wise comparisons of gene set activity) while maintaining statistical traceability. Finally, while qusage is compatible with individual gene statistics from existing methods (e.g., LIMMA), a Welch-based method is implemented that is shown to improve specificity. The QuSAGE package also includes a mixed effects model implementation, as described in (Turner JA et al, BMC Bioinformatics, 2015), and a meta-analysis framework as described in (Meng H, et al. PLoS Comput Biol. 2019). For questions, contact Chris Bolen (cbolen1@gmail.com) or Steven Kleinstein (steven.kleinstein@yale.edu)", + "License": "GPL (>= 2)", + "URL": "http://clip.med.yale.edu/qusage", + "biocViews": "GeneSetEnrichment, Microarray, RNASeq, Software, ImmunoOncology", + "git_url": "https://git.bioconductor.org/packages/qusage", + "git_branch": "RELEASE_3_22", + "git_last_commit": "123902b", + "git_last_commit_date": "2025-10-29", + "Repository": "Bioconductor 3.22", + "NeedsCompilation": "no" + }, + "qvalue": { + "Package": "qvalue", + "Version": "2.42.0", + "Source": "Bioconductor", + "Type": "Package", + "Title": "Q-value estimation for false discovery rate control", + "Date": "2015-03-24", + "Authors@R": "as.person(c( \"John D. Storey [aut, cre]\", \"Andrew J. Bass [aut]\", \"Alan Dabney [aut]\", \"David Robinson [aut]\", \"Gregory Warnes [ctb]\" ))", + "Maintainer": "John D. Storey , Andrew J. Bass ", + "biocViews": "MultipleComparisons", + "Description": "This package takes a list of p-values resulting from the simultaneous testing of many hypotheses and estimates their q-values and local FDR values. The q-value of a test measures the proportion of false positives incurred (called the false discovery rate) when that particular test is called significant. The local FDR measures the posterior probability the null hypothesis is true given the test's p-value. Various plots are automatically generated, allowing one to make sensible significance cut-offs. Several mathematical results have recently been shown on the conservative accuracy of the estimated q-values from this software. The software can be applied to problems in genomics, brain imaging, astrophysics, and data mining.", + "VignetteBuilder": "knitr", + "Imports": [ + "splines", + "ggplot2", + "grid", + "reshape2" + ], + "Suggests": [ + "knitr" + ], + "Depends": [ + "R(>= 2.10)" + ], + "URL": "http://github.com/jdstorey/qvalue", + "License": "LGPL", + "RoxygenNote": "5.0.1", + "git_url": "https://git.bioconductor.org/packages/qvalue", + "git_branch": "RELEASE_3_22", + "git_last_commit": "6527d7b", + "git_last_commit_date": "2025-10-29", + "Repository": "Bioconductor 3.22", + "NeedsCompilation": "no", + "Author": "John D. Storey [aut, cre], Andrew J. Bass [aut], Alan Dabney [aut], David Robinson [aut], Gregory Warnes [ctb]" + }, + "ragg": { + "Package": "ragg", + "Version": "1.5.0", + "Source": "Repository", + "Type": "Package", + "Title": "Graphic Devices Based on AGG", + "Authors@R": "c( person(\"Thomas Lin\", \"Pedersen\", , \"thomas.pedersen@posit.co\", role = c(\"cre\", \"aut\"), comment = c(ORCID = \"0000-0002-5147-4711\")), person(\"Maxim\", \"Shemanarev\", role = c(\"aut\", \"cph\"), comment = \"Author of AGG\"), person(\"Tony\", \"Juricic\", , \"tonygeek@yahoo.com\", role = c(\"ctb\", \"cph\"), comment = \"Contributor to AGG\"), person(\"Milan\", \"Marusinec\", , \"milan@marusinec.sk\", role = c(\"ctb\", \"cph\"), comment = \"Contributor to AGG\"), person(\"Spencer\", \"Garrett\", role = \"ctb\", comment = \"Contributor to AGG\"), person(\"Posit Software, PBC\", role = c(\"cph\", \"fnd\"), comment = c(ROR = \"03wc8by49\")) )", + "Maintainer": "Thomas Lin Pedersen ", + "Description": "Anti-Grain Geometry (AGG) is a high-quality and high-performance 2D drawing library. The 'ragg' package provides a set of graphic devices based on AGG to use as alternative to the raster devices provided through the 'grDevices' package.", + "License": "MIT + file LICENSE", + "URL": "https://ragg.r-lib.org, https://github.com/r-lib/ragg", + "BugReports": "https://github.com/r-lib/ragg/issues", + "Imports": [ + "systemfonts (>= 1.0.3)", + "textshaping (>= 0.3.0)" + ], + "Suggests": [ + "covr", + "graphics", + "grid", + "testthat (>= 3.0.0)" + ], + "LinkingTo": [ + "systemfonts", + "textshaping" + ], + "Config/build/compilation-database": "true", + "Config/Needs/website": "ggplot2, devoid, magick, bench, tidyr, ggridges, hexbin, sessioninfo, pkgdown, tidyverse/tidytemplate", + "Config/testthat/edition": "3", + "Config/usethis/last-upkeep": "2025-04-25", + "Encoding": "UTF-8", + "RoxygenNote": "7.3.2", + "SystemRequirements": "freetype2, libpng, libtiff, libjpeg, libwebp, libwebpmux", + "NeedsCompilation": "yes", + "Author": "Thomas Lin Pedersen [cre, aut] (ORCID: ), Maxim Shemanarev [aut, cph] (Author of AGG), Tony Juricic [ctb, cph] (Contributor to AGG), Milan Marusinec [ctb, cph] (Contributor to AGG), Spencer Garrett [ctb] (Contributor to AGG), Posit Software, PBC [cph, fnd] (ROR: )", + "Repository": "https://packagemanager.posit.co/cran/latest" + }, + "rappdirs": { + "Package": "rappdirs", + "Version": "0.3.4", + "Source": "Repository", + "Type": "Package", + "Title": "Application Directories: Determine Where to Save Data, Caches, and Logs", + "Authors@R": "c( person(\"Hadley\", \"Wickham\", , \"hadley@posit.co\", role = c(\"trl\", \"cre\", \"cph\")), person(\"Sridhar\", \"Ratnakumar\", role = \"aut\"), person(\"Trent\", \"Mick\", role = \"aut\"), person(\"ActiveState\", role = \"cph\", comment = \"R/appdir.r, R/cache.r, R/data.r, R/log.r translated from appdirs\"), person(\"Eddy\", \"Petrisor\", role = \"ctb\"), person(\"Trevor\", \"Davis\", role = c(\"trl\", \"aut\"), comment = c(ORCID = \"0000-0001-6341-4639\")), person(\"Gabor\", \"Csardi\", role = \"ctb\"), person(\"Gregory\", \"Jefferis\", role = \"ctb\"), person(\"Posit Software, PBC\", role = c(\"cph\", \"fnd\"), comment = c(ROR = \"03wc8by49\")) )", + "Description": "An easy way to determine which directories on the users computer you should use to save data, caches and logs. A port of Python's 'Appdirs' () to R.", + "License": "MIT + file LICENSE", + "URL": "https://rappdirs.r-lib.org, https://github.com/r-lib/rappdirs", + "BugReports": "https://github.com/r-lib/rappdirs/issues", + "Depends": [ + "R (>= 4.1)" + ], + "Suggests": [ + "covr", + "roxygen2", + "testthat (>= 3.2.0)", + "withr" + ], + "Config/Needs/website": "tidyverse/tidytemplate", + "Config/testthat/edition": "3", + "Config/usethis/last-upkeep": "2025-05-05", + "Copyright": "Original python appdirs module copyright (c) 2010 ActiveState Software Inc. R port copyright Hadley Wickham, Posit, PBC. See file LICENSE for details.", + "Encoding": "UTF-8", + "RoxygenNote": "7.3.3", + "NeedsCompilation": "yes", + "Author": "Hadley Wickham [trl, cre, cph], Sridhar Ratnakumar [aut], Trent Mick [aut], ActiveState [cph] (R/appdir.r, R/cache.r, R/data.r, R/log.r translated from appdirs), Eddy Petrisor [ctb], Trevor Davis [trl, aut] (ORCID: ), Gabor Csardi [ctb], Gregory Jefferis [ctb], Posit Software, PBC [cph, fnd] (ROR: )", + "Maintainer": "Hadley Wickham ", + "Repository": "CRAN" + }, + "readr": { + "Package": "readr", + "Version": "2.1.6", + "Source": "Repository", + "Title": "Read Rectangular Text Data", + "Authors@R": "c( person(\"Hadley\", \"Wickham\", , \"hadley@posit.co\", role = \"aut\"), person(\"Jim\", \"Hester\", role = \"aut\"), person(\"Romain\", \"Francois\", role = \"ctb\"), person(\"Jennifer\", \"Bryan\", , \"jenny@posit.co\", role = c(\"aut\", \"cre\"), comment = c(ORCID = \"0000-0002-6983-2759\")), person(\"Shelby\", \"Bearrows\", role = \"ctb\"), person(\"Posit Software, PBC\", role = c(\"cph\", \"fnd\")), person(\"https://github.com/mandreyel/\", role = \"cph\", comment = \"mio library\"), person(\"Jukka\", \"Jylänki\", role = c(\"ctb\", \"cph\"), comment = \"grisu3 implementation\"), person(\"Mikkel\", \"Jørgensen\", role = c(\"ctb\", \"cph\"), comment = \"grisu3 implementation\") )", + "Description": "The goal of 'readr' is to provide a fast and friendly way to read rectangular data (like 'csv', 'tsv', and 'fwf'). It is designed to flexibly parse many types of data found in the wild, while still cleanly failing when data unexpectedly changes.", + "License": "MIT + file LICENSE", + "URL": "https://readr.tidyverse.org, https://github.com/tidyverse/readr", + "BugReports": "https://github.com/tidyverse/readr/issues", + "Depends": [ + "R (>= 3.6)" + ], + "Imports": [ + "cli (>= 3.2.0)", + "clipr", + "crayon", + "hms (>= 0.4.1)", + "lifecycle (>= 0.2.0)", + "methods", + "R6", + "rlang", + "tibble", + "utils", + "vroom (>= 1.6.0)" + ], + "Suggests": [ + "covr", + "curl", + "datasets", + "knitr", + "rmarkdown", + "spelling", + "stringi", + "testthat (>= 3.2.0)", + "tzdb (>= 0.1.1)", + "waldo", + "withr", + "xml2" + ], + "LinkingTo": [ + "cpp11", + "tzdb (>= 0.1.1)" + ], + "VignetteBuilder": "knitr", + "Config/Needs/website": "tidyverse, tidyverse/tidytemplate", + "Config/testthat/edition": "3", + "Config/testthat/parallel": "false", + "Encoding": "UTF-8", + "Language": "en-US", + "RoxygenNote": "7.3.3", + "NeedsCompilation": "yes", + "Author": "Hadley Wickham [aut], Jim Hester [aut], Romain Francois [ctb], Jennifer Bryan [aut, cre] (ORCID: ), Shelby Bearrows [ctb], Posit Software, PBC [cph, fnd], https://github.com/mandreyel/ [cph] (mio library), Jukka Jylänki [ctb, cph] (grisu3 implementation), Mikkel Jørgensen [ctb, cph] (grisu3 implementation)", + "Maintainer": "Jennifer Bryan ", + "Repository": "https://packagemanager.posit.co/cran/latest" + }, + "readxl": { + "Package": "readxl", + "Version": "1.4.5", + "Source": "Repository", + "Title": "Read Excel Files", + "Authors@R": "c( person(\"Hadley\", \"Wickham\", , \"hadley@posit.co\", role = \"aut\", comment = c(ORCID = \"0000-0003-4757-117X\")), person(\"Jennifer\", \"Bryan\", , \"jenny@posit.co\", role = c(\"aut\", \"cre\"), comment = c(ORCID = \"0000-0002-6983-2759\")), person(\"Posit, PBC\", role = c(\"cph\", \"fnd\"), comment = \"Copyright holder of all R code and all C/C++ code without explicit copyright attribution\"), person(\"Marcin\", \"Kalicinski\", role = c(\"ctb\", \"cph\"), comment = \"Author of included RapidXML code\"), person(\"Komarov Valery\", role = c(\"ctb\", \"cph\"), comment = \"Author of included libxls code\"), person(\"Christophe Leitienne\", role = c(\"ctb\", \"cph\"), comment = \"Author of included libxls code\"), person(\"Bob Colbert\", role = c(\"ctb\", \"cph\"), comment = \"Author of included libxls code\"), person(\"David Hoerl\", role = c(\"ctb\", \"cph\"), comment = \"Author of included libxls code\"), person(\"Evan Miller\", role = c(\"ctb\", \"cph\"), comment = \"Author of included libxls code\") )", + "Description": "Import excel files into R. Supports '.xls' via the embedded 'libxls' C library and '.xlsx' via the embedded 'RapidXML' C++ library . Works on Windows, Mac and Linux without external dependencies.", + "License": "MIT + file LICENSE", + "URL": "https://readxl.tidyverse.org, https://github.com/tidyverse/readxl", + "BugReports": "https://github.com/tidyverse/readxl/issues", + "Depends": [ + "R (>= 3.6)" + ], + "Imports": [ + "cellranger", + "tibble (>= 2.0.1)", + "utils" + ], + "Suggests": [ + "covr", + "knitr", + "rmarkdown", + "testthat (>= 3.1.6)", + "withr" + ], + "LinkingTo": [ + "cpp11 (>= 0.4.0)", + "progress" + ], + "VignetteBuilder": "knitr", + "Config/Needs/website": "tidyverse/tidytemplate, tidyverse", + "Config/testthat/edition": "3", + "Encoding": "UTF-8", + "Note": "libxls v1.6.3 c199d13", + "RoxygenNote": "7.3.2", + "NeedsCompilation": "yes", + "Author": "Hadley Wickham [aut] (), Jennifer Bryan [aut, cre] (), Posit, PBC [cph, fnd] (Copyright holder of all R code and all C/C++ code without explicit copyright attribution), Marcin Kalicinski [ctb, cph] (Author of included RapidXML code), Komarov Valery [ctb, cph] (Author of included libxls code), Christophe Leitienne [ctb, cph] (Author of included libxls code), Bob Colbert [ctb, cph] (Author of included libxls code), David Hoerl [ctb, cph] (Author of included libxls code), Evan Miller [ctb, cph] (Author of included libxls code)", + "Maintainer": "Jennifer Bryan ", + "Repository": "CRAN" + }, + "rematch": { + "Package": "rematch", + "Version": "2.0.0", + "Source": "Repository", + "Title": "Match Regular Expressions with a Nicer 'API'", + "Author": "Gabor Csardi", + "Maintainer": "Gabor Csardi ", + "Description": "A small wrapper on 'regexpr' to extract the matches and captured groups from the match of a regular expression to a character vector.", + "License": "MIT + file LICENSE", + "URL": "https://github.com/gaborcsardi/rematch", + "BugReports": "https://github.com/gaborcsardi/rematch/issues", + "RoxygenNote": "5.0.1.9000", + "Suggests": [ + "covr", + "testthat" + ], + "Encoding": "UTF-8", + "NeedsCompilation": "no", + "Repository": "CRAN" + }, + "rematch2": { + "Package": "rematch2", + "Version": "2.1.2", + "Source": "Repository", + "Title": "Tidy Output from Regular Expression Matching", + "Authors@R": "c( person(\"Gábor\", \"Csárdi\", email = \"csardi.gabor@gmail.com\", role = c(\"aut\", \"cre\")), person(\"Matthew\", \"Lincoln\", email = \"matthew.d.lincoln@gmail.com\", role = c(\"ctb\")))", + "Description": "Wrappers on 'regexpr' and 'gregexpr' to return the match results in tidy data frames.", + "License": "MIT + file LICENSE", + "LazyData": "true", + "URL": "https://github.com/r-lib/rematch2#readme", + "BugReports": "https://github.com/r-lib/rematch2/issues", + "RoxygenNote": "7.1.0", + "Imports": [ + "tibble" + ], + "Suggests": [ + "covr", + "testthat" + ], + "Encoding": "UTF-8", + "NeedsCompilation": "no", + "Author": "Gábor Csárdi [aut, cre], Matthew Lincoln [ctb]", + "Maintainer": "Gábor Csárdi ", + "Repository": "CRAN" + }, + "remotes": { + "Package": "remotes", + "Version": "2.5.0", + "Source": "Repository", + "Title": "R Package Installation from Remote Repositories, Including 'GitHub'", + "Authors@R": "c( person(\"Gábor\", \"Csárdi\", , \"csardi.gabor@gmail.com\", role = c(\"aut\", \"cre\")), person(\"Jim\", \"Hester\", role = \"aut\"), person(\"Hadley\", \"Wickham\", role = \"aut\"), person(\"Winston\", \"Chang\", role = \"aut\"), person(\"Martin\", \"Morgan\", role = \"aut\"), person(\"Dan\", \"Tenenbaum\", role = \"aut\"), person(\"Posit Software, PBC\", role = c(\"cph\", \"fnd\")), person(\"Ascent Digital Services\", role = \"cph\") )", + "Description": "Download and install R packages stored in 'GitHub', 'GitLab', 'Bitbucket', 'Bioconductor', or plain 'subversion' or 'git' repositories. This package provides the 'install_*' functions in 'devtools'. Indeed most of the code was copied over from 'devtools'.", + "License": "MIT + file LICENSE", + "URL": "https://remotes.r-lib.org, https://github.com/r-lib/remotes#readme", + "BugReports": "https://github.com/r-lib/remotes/issues", + "Depends": [ + "R (>= 3.0.0)" + ], + "Imports": [ + "methods", + "stats", + "tools", + "utils" + ], + "Suggests": [ + "brew", + "callr", + "codetools", + "covr", + "curl", + "git2r (>= 0.23.0)", + "knitr", + "mockery", + "pingr", + "pkgbuild (>= 1.0.1)", + "rmarkdown", + "rprojroot", + "testthat (>= 3.0.0)", + "webfakes", + "withr" + ], + "VignetteBuilder": "knitr", + "Config/Needs/website": "tidyverse/tidytemplate", + "Config/testthat/edition": "3", + "Encoding": "UTF-8", + "RoxygenNote": "7.2.3", + "SystemRequirements": "Subversion for install_svn, git for install_git", + "NeedsCompilation": "no", + "Author": "Gábor Csárdi [aut, cre], Jim Hester [aut], Hadley Wickham [aut], Winston Chang [aut], Martin Morgan [aut], Dan Tenenbaum [aut], Posit Software, PBC [cph, fnd], Ascent Digital Services [cph]", + "Maintainer": "Gábor Csárdi ", + "Repository": "https://packagemanager.posit.co/cran/latest" + }, + "rentrez": { + "Package": "rentrez", + "Version": "1.2.4", + "Source": "Repository", + "Date": "2025-06-11", + "Title": "'Entrez' in R", + "Authors@R": "c( person(\"David\", \"Winter\", role=c(\"aut\", \"cre\"), email = \"david.winter@gmail.com\", comment = c(ORCID = \"0000-0002-6165-0029\")), person(\"Scott\", \"Chamberlain\", role=\"ctb\", email = \"myrmecocystus@gmail.com\", comment = c(ORCID = \"0000-0003-1444-9135\")), person(\"Han\",\"Guangchun\", role=c(\"ctb\"),email=\"hanguangchun@gmail.com\", comment = c(ORCID = \"0000-0001-9277-2507\")) )", + "Depends": [ + "R (>= 2.6.0)" + ], + "Imports": [ + "XML", + "httr (>= 0.5)", + "jsonlite (>= 0.9)" + ], + "Suggests": [ + "testthat", + "knitr", + "rmarkdown" + ], + "URL": "https://github.com/ropensci/rentrez/", + "BugReports": "https://github.com/ropensci/rentrez/issues/", + "Description": "Provides an R interface to the NCBI's 'EUtils' API, allowing users to search databases like 'GenBank' and 'PubMed' , process the results of those searches and pull data into their R sessions.", + "VignetteBuilder": "knitr", + "License": "MIT + file LICENSE", + "Encoding": "UTF-8", + "RoxygenNote": "7.3.2", + "NeedsCompilation": "no", + "Author": "David Winter [aut, cre] (ORCID: ), Scott Chamberlain [ctb] (ORCID: ), Han Guangchun [ctb] (ORCID: )", + "Maintainer": "David Winter ", + "Repository": "CRAN" + }, + "renv": { + "Package": "renv", + "Version": "1.1.6", + "Source": "Repository", + "Type": "Package", + "Title": "Project Environments", + "Authors@R": "c( person(\"Kevin\", \"Ushey\", role = c(\"aut\", \"cre\"), email = \"kevin@rstudio.com\", comment = c(ORCID = \"0000-0003-2880-7407\")), person(\"Hadley\", \"Wickham\", role = c(\"aut\"), email = \"hadley@rstudio.com\", comment = c(ORCID = \"0000-0003-4757-117X\")), person(\"Posit Software, PBC\", role = c(\"cph\", \"fnd\")) )", + "Description": "A dependency management toolkit for R. Using 'renv', you can create and manage project-local R libraries, save the state of these libraries to a 'lockfile', and later restore your library as required. Together, these tools can help make your projects more isolated, portable, and reproducible.", + "License": "MIT + file LICENSE", + "URL": "https://rstudio.github.io/renv/, https://github.com/rstudio/renv", + "BugReports": "https://github.com/rstudio/renv/issues", + "Imports": [ + "utils" + ], + "Suggests": [ + "BiocManager", + "cli", + "compiler", + "covr", + "cpp11", + "curl", + "devtools", + "generics", + "gitcreds", + "jsonlite", + "jsonvalidate", + "knitr", + "miniUI", + "modules", + "packrat", + "pak", + "R6", + "remotes", + "reticulate", + "rmarkdown", + "rstudioapi", + "shiny", + "testthat", + "uuid", + "waldo", + "yaml", + "webfakes" + ], + "Encoding": "UTF-8", + "RoxygenNote": "7.3.3", + "VignetteBuilder": "knitr", + "Config/Needs/website": "tidyverse/tidytemplate", + "Config/testthat/edition": "3", + "Config/testthat/parallel": "true", + "Config/testthat/start-first": "bioconductor,python,install,restore,snapshot,retrieve,remotes", + "NeedsCompilation": "no", + "Author": "Kevin Ushey [aut, cre] (ORCID: ), Hadley Wickham [aut] (ORCID: ), Posit Software, PBC [cph, fnd]", + "Maintainer": "Kevin Ushey ", + "Repository": "CRAN" + }, + "reprex": { + "Package": "reprex", + "Version": "2.1.1", + "Source": "Repository", + "Title": "Prepare Reproducible Example Code via the Clipboard", + "Authors@R": "c( person(\"Jennifer\", \"Bryan\", , \"jenny@posit.co\", role = c(\"aut\", \"cre\"), comment = c(ORCID = \"0000-0002-6983-2759\")), person(\"Jim\", \"Hester\", role = \"aut\", comment = c(ORCID = \"0000-0002-2739-7082\")), person(\"David\", \"Robinson\", , \"admiral.david@gmail.com\", role = \"aut\"), person(\"Hadley\", \"Wickham\", , \"hadley@posit.co\", role = \"aut\", comment = c(ORCID = \"0000-0003-4757-117X\")), person(\"Christophe\", \"Dervieux\", , \"cderv@posit.co\", role = \"aut\", comment = c(ORCID = \"0000-0003-4474-2498\")), person(\"Posit Software, PBC\", role = c(\"cph\", \"fnd\")) )", + "Description": "Convenience wrapper that uses the 'rmarkdown' package to render small snippets of code to target formats that include both code and output. The goal is to encourage the sharing of small, reproducible, and runnable examples on code-oriented websites, such as and , or in email. The user's clipboard is the default source of input code and the default target for rendered output. 'reprex' also extracts clean, runnable R code from various common formats, such as copy/paste from an R session.", + "License": "MIT + file LICENSE", + "URL": "https://reprex.tidyverse.org, https://github.com/tidyverse/reprex", + "BugReports": "https://github.com/tidyverse/reprex/issues", + "Depends": [ + "R (>= 3.6)" + ], + "Imports": [ + "callr (>= 3.6.0)", + "cli (>= 3.2.0)", + "clipr (>= 0.4.0)", + "fs", + "glue", + "knitr (>= 1.23)", + "lifecycle", + "rlang (>= 1.0.0)", + "rmarkdown", + "rstudioapi", + "utils", + "withr (>= 2.3.0)" + ], + "Suggests": [ + "covr", + "fortunes", + "miniUI", + "rprojroot", + "sessioninfo", + "shiny", + "spelling", + "styler (>= 1.2.0)", + "testthat (>= 3.2.1)" + ], + "VignetteBuilder": "knitr", + "Config/Needs/website": "dplyr, tidyverse/tidytemplate", + "Config/testthat/edition": "3", + "Config/testthat/parallel": "TRUE", + "Config/testthat/start-first": "knitr-options, venues, reprex", + "Encoding": "UTF-8", + "Language": "en-US", + "RoxygenNote": "7.3.2", + "SystemRequirements": "pandoc (>= 2.0) - https://pandoc.org/", + "NeedsCompilation": "no", + "Author": "Jennifer Bryan [aut, cre] (), Jim Hester [aut] (), David Robinson [aut], Hadley Wickham [aut] (), Christophe Dervieux [aut] (), Posit Software, PBC [cph, fnd]", + "Maintainer": "Jennifer Bryan ", + "Repository": "CRAN" + }, + "reshape2": { + "Package": "reshape2", + "Version": "1.4.5", + "Source": "Repository", + "Title": "Flexibly Reshape Data: A Reboot of the Reshape Package", + "Authors@R": "person(\"Hadley\", \"Wickham\", , \"hadley@posit.co\", role = c(\"aut\", \"cre\"))", + "Description": "Flexibly restructure and aggregate data using just two functions: melt and 'dcast' (or 'acast').", + "License": "MIT + file LICENSE", + "URL": "https://github.com/hadley/reshape", + "BugReports": "https://github.com/hadley/reshape/issues", + "Depends": [ + "R (>= 3.1)" + ], + "Imports": [ + "plyr (>= 1.8.1)", + "Rcpp", + "stringr" + ], + "Suggests": [ + "covr", + "lattice", + "testthat (>= 3.0.0)" + ], + "LinkingTo": [ + "Rcpp" + ], + "Config/testthat/edition": "3", + "Encoding": "UTF-8", + "LazyData": "true", + "RoxygenNote": "7.3.3", + "NeedsCompilation": "yes", + "Author": "Hadley Wickham [aut, cre]", + "Maintainer": "Hadley Wickham ", + "Repository": "https://packagemanager.posit.co/cran/latest" + }, + "restfulr": { + "Package": "restfulr", + "Version": "0.0.16", + "Source": "Repository", + "Type": "Package", + "Title": "R Interface to RESTful Web Services", + "Authors@R": "person(given = \"Michael\", family = \"Lawrence\", role = c(\"aut\", \"cre\"), email = \"michafla@gene.com\")", + "Description": "Models a RESTful service as if it were a nested R list.", + "License": "Artistic-2.0", + "Imports": [ + "XML", + "RCurl", + "rjson", + "S4Vectors (>= 0.13.15)", + "yaml" + ], + "Depends": [ + "R (>= 3.4.0)", + "methods" + ], + "Suggests": [ + "getPass", + "rsolr", + "RUnit" + ], + "Collate": "CRUDProtocol-class.R CacheInfo-class.R Credentials-class.R HTTP-class.R Media-class.R MediaCache-class.R RestUri-class.R RestContainer-class.R test_restfulr_package.R utils.R", + "NeedsCompilation": "yes", + "Author": "Michael Lawrence [aut, cre]", + "Maintainer": "Michael Lawrence ", + "Repository": "RSPM", + "Encoding": "UTF-8" + }, + "reticulate": { + "Package": "reticulate", + "Version": "1.44.1", + "Source": "Repository", + "Type": "Package", + "Title": "Interface to 'Python'", + "Authors@R": "c( person(\"Tomasz\", \"Kalinowski\", role = c(\"ctb\", \"cre\"), email = \"tomasz@posit.co\"), person(\"Kevin\", \"Ushey\", role = c(\"aut\"), email = \"kevin@posit.co\"), person(\"JJ\", \"Allaire\", role = c(\"aut\"), email = \"jj@posit.co\"), person(\"RStudio\", role = c(\"cph\", \"fnd\")), person(\"Yuan\", \"Tang\", role = c(\"aut\", \"cph\"), email = \"terrytangyuan@gmail.com\", comment = c(ORCID = \"0000-0001-5243-233X\")), person(\"Dirk\", \"Eddelbuettel\", role = c(\"ctb\", \"cph\"), email = \"edd@debian.org\"), person(\"Bryan\", \"Lewis\", role = c(\"ctb\", \"cph\"), email = \"blewis@illposed.net\"), person(\"Sigrid\", \"Keydana\", role = c(\"ctb\"), email = \"sigrid@posit.co\"), person(\"Ryan\", \"Hafen\", role = c(\"ctb\", \"cph\"), email = \"rhafen@gmail.com\"), person(\"Marcus\", \"Geelnard\", role = c(\"ctb\", \"cph\"), comment = \"TinyThread library, http://tinythreadpp.bitsnbites.eu/\") )", + "Description": "Interface to 'Python' modules, classes, and functions. When calling into 'Python', R data types are automatically converted to their equivalent 'Python' types. When values are returned from 'Python' to R they are converted back to R types. Compatible with all versions of 'Python' >= 2.7.", + "License": "Apache License 2.0", + "URL": "https://rstudio.github.io/reticulate/, https://github.com/rstudio/reticulate", + "BugReports": "https://github.com/rstudio/reticulate/issues", + "SystemRequirements": "Python (>= 2.7.0)", + "Encoding": "UTF-8", + "Depends": [ + "R (>= 3.5)" + ], + "Imports": [ + "Matrix", + "Rcpp (>= 1.0.7)", + "RcppTOML", + "graphics", + "here", + "jsonlite", + "methods", + "png", + "rappdirs", + "utils", + "rlang", + "withr" + ], + "Suggests": [ + "callr", + "knitr", + "glue", + "cli", + "rmarkdown", + "pillar", + "testthat" + ], + "LinkingTo": [ + "Rcpp" + ], + "RoxygenNote": "7.3.3", + "VignetteBuilder": "knitr", + "Config/build/compilation-database": "true", + "NeedsCompilation": "yes", + "Author": "Tomasz Kalinowski [ctb, cre], Kevin Ushey [aut], JJ Allaire [aut], RStudio [cph, fnd], Yuan Tang [aut, cph] (ORCID: ), Dirk Eddelbuettel [ctb, cph], Bryan Lewis [ctb, cph], Sigrid Keydana [ctb], Ryan Hafen [ctb, cph], Marcus Geelnard [ctb, cph] (TinyThread library, http://tinythreadpp.bitsnbites.eu/)", + "Maintainer": "Tomasz Kalinowski ", + "Repository": "https://packagemanager.posit.co/cran/latest" + }, + "rhdf5": { + "Package": "rhdf5", + "Version": "2.54.1", + "Source": "Bioconductor", + "Type": "Package", + "Title": "R Interface to HDF5", + "Authors@R": "c( person(\"Bernd\", \"Fischer\", role = \"aut\"), person( \"Mike\", \"Smith\", role= \"aut\", comment = c(ORCID = \"0000-0002-7800-3848\", \"Maintainer from 2017 to 2025\") ), person(\"Gregoire\", \"Pau\", role=\"aut\"), person(\"Martin\", \"Morgan\", role = \"ctb\"), person(\"Daniel\", \"van Twisk\", role = \"ctb\"), person( \"Hugo\", \"Gruson\", role = \"cre\", email = \"hugo.gruson@embl.de\", comment = c(ORCID = \"0000-0002-4094-1476\") ) )", + "Description": "This package provides an interface between HDF5 and R. HDF5's main features are the ability to store and access very large and/or complex datasets and a wide variety of metadata on mass storage (disk) through a completely portable file format. The rhdf5 package is thus suited for the exchange of large and/or complex datasets between R and other software package, and for letting R applications work on datasets that are larger than the available RAM.", + "License": "Artistic-2.0", + "URL": "https://github.com/Huber-group-EMBL/rhdf5", + "BugReports": "https://github.com/Huber-group-EMBL/rhdf5/issues", + "LazyLoad": "true", + "VignetteBuilder": "knitr", + "Imports": [ + "Rhdf5lib (>= 1.13.4)", + "rhdf5filters (>= 1.15.5)" + ], + "Depends": [ + "R (>= 4.0.0)", + "methods" + ], + "Suggests": [ + "bit64", + "BiocStyle", + "knitr", + "rmarkdown", + "testthat", + "bench", + "dplyr", + "ggplot2", + "mockery", + "BiocParallel" + ], + "LinkingTo": [ + "Rhdf5lib" + ], + "SystemRequirements": "GNU make", + "biocViews": "Infrastructure, DataImport", + "Encoding": "UTF-8", + "Roxygen": "list(markdown = TRUE)", + "RoxygenNote": "7.3.3", + "git_url": "https://git.bioconductor.org/packages/rhdf5", + "git_branch": "RELEASE_3_22", + "git_last_commit": "7f691e4", + "git_last_commit_date": "2025-12-02", + "Repository": "Bioconductor 3.22", + "NeedsCompilation": "yes", + "Author": "Bernd Fischer [aut], Mike Smith [aut] (ORCID: , Maintainer from 2017 to 2025), Gregoire Pau [aut], Martin Morgan [ctb], Daniel van Twisk [ctb], Hugo Gruson [cre] (ORCID: )", + "Maintainer": "Hugo Gruson " + }, + "rhdf5filters": { + "Package": "rhdf5filters", + "Version": "1.22.0", + "Source": "Bioconductor", + "Type": "Package", + "Title": "HDF5 Compression Filters", + "Authors@R": "c( person(\"Mike\", \"Smith\", role = c(\"aut\", \"ccp\"), comment = c(ORCID = \"0000-0002-7800-3848\") ), person(\"Hugo\", \"Gruson\", role = \"cre\", email = \"hugo.gruson@embl.de\", comment = c(ORCID = \"0000-0002-4094-1476\") ) )", + "Description": "Provides a collection of additional compression filters for HDF5 datasets. The package is intended to provide seemless integration with rhdf5, however the compiled filters can also be used with external applications.", + "License": "BSD_2_clause + file LICENSE", + "LazyLoad": "true", + "VignetteBuilder": "knitr", + "Suggests": [ + "BiocStyle", + "knitr", + "rmarkdown", + "tinytest", + "rhdf5 (>= 2.47.7)" + ], + "SystemRequirements": "GNU make", + "URL": "https://github.com/Huber-group-EMBL/rhdf5filters", + "BugReports": "https://github.com/Huber-group-EMBL/rhdf5filters/issues", + "LinkingTo": [ + "Rhdf5lib" + ], + "RoxygenNote": "7.3.2", + "Encoding": "UTF-8", + "biocViews": "Infrastructure, DataImport", + "git_url": "https://git.bioconductor.org/packages/rhdf5filters", + "git_branch": "RELEASE_3_22", + "git_last_commit": "3465c24", + "git_last_commit_date": "2025-10-29", + "Repository": "Bioconductor 3.22", + "NeedsCompilation": "yes", + "Author": "Mike Smith [aut, ccp] (ORCID: ), Hugo Gruson [cre] (ORCID: )", + "Maintainer": "Hugo Gruson " + }, + "rjson": { + "Package": "rjson", + "Version": "0.2.23", + "Source": "Repository", + "Title": "JSON for R", + "Author": "Alex Couture-Beil [aut, cre]", + "Authors@R": "person(given = \"Alex\", family = \"Couture-Beil\", role = c(\"aut\", \"cre\"), email = \"rjson_pkg@mofo.ca\")", + "Maintainer": "Alex Couture-Beil ", + "Depends": [ + "R (>= 4.0.0)" + ], + "Description": "Converts R object into JSON objects and vice-versa.", + "URL": "https://github.com/alexcb/rjson", + "License": "GPL-2", + "Repository": "https://packagemanager.posit.co/cran/latest", + "NeedsCompilation": "yes", + "Encoding": "UTF-8" + }, + "rlang": { + "Package": "rlang", + "Version": "1.1.7", + "Source": "Repository", + "Title": "Functions for Base Types and Core R and 'Tidyverse' Features", + "Description": "A toolbox for working with base types, core R features like the condition system, and core 'Tidyverse' features like tidy evaluation.", + "Authors@R": "c( person(\"Lionel\", \"Henry\", ,\"lionel@posit.co\", c(\"aut\", \"cre\")), person(\"Hadley\", \"Wickham\", ,\"hadley@posit.co\", \"aut\"), person(given = \"mikefc\", email = \"mikefc@coolbutuseless.com\", role = \"cph\", comment = \"Hash implementation based on Mike's xxhashlite\"), person(given = \"Yann\", family = \"Collet\", role = \"cph\", comment = \"Author of the embedded xxHash library\"), person(given = \"Posit, PBC\", role = c(\"cph\", \"fnd\")) )", + "License": "MIT + file LICENSE", + "ByteCompile": "true", + "Biarch": "true", + "Depends": [ + "R (>= 4.0.0)" + ], + "Imports": [ + "utils" + ], + "Suggests": [ + "cli (>= 3.1.0)", + "covr", + "crayon", + "desc", + "fs", + "glue", + "knitr", + "magrittr", + "methods", + "pillar", + "pkgload", + "rmarkdown", + "stats", + "testthat (>= 3.2.0)", + "tibble", + "usethis", + "vctrs (>= 0.2.3)", + "withr" + ], + "Enhances": [ + "winch" + ], + "Encoding": "UTF-8", + "RoxygenNote": "7.3.3", + "URL": "https://rlang.r-lib.org, https://github.com/r-lib/rlang", + "BugReports": "https://github.com/r-lib/rlang/issues", + "Config/build/compilation-database": "true", + "Config/testthat/edition": "3", + "Config/Needs/website": "dplyr, tidyverse/tidytemplate", + "NeedsCompilation": "yes", + "Author": "Lionel Henry [aut, cre], Hadley Wickham [aut], mikefc [cph] (Hash implementation based on Mike's xxhashlite), Yann Collet [cph] (Author of the embedded xxHash library), Posit, PBC [cph, fnd]", + "Maintainer": "Lionel Henry ", + "Repository": "CRAN" + }, + "rmarkdown": { + "Package": "rmarkdown", + "Version": "2.30", + "Source": "Repository", + "Type": "Package", + "Title": "Dynamic Documents for R", + "Authors@R": "c( person(\"JJ\", \"Allaire\", , \"jj@posit.co\", role = \"aut\"), person(\"Yihui\", \"Xie\", , \"xie@yihui.name\", role = c(\"aut\", \"cre\"), comment = c(ORCID = \"0000-0003-0645-5666\")), person(\"Christophe\", \"Dervieux\", , \"cderv@posit.co\", role = \"aut\", comment = c(ORCID = \"0000-0003-4474-2498\")), person(\"Jonathan\", \"McPherson\", , \"jonathan@posit.co\", role = \"aut\"), person(\"Javier\", \"Luraschi\", role = \"aut\"), person(\"Kevin\", \"Ushey\", , \"kevin@posit.co\", role = \"aut\"), person(\"Aron\", \"Atkins\", , \"aron@posit.co\", role = \"aut\"), person(\"Hadley\", \"Wickham\", , \"hadley@posit.co\", role = \"aut\"), person(\"Joe\", \"Cheng\", , \"joe@posit.co\", role = \"aut\"), person(\"Winston\", \"Chang\", , \"winston@posit.co\", role = \"aut\"), person(\"Richard\", \"Iannone\", , \"rich@posit.co\", role = \"aut\", comment = c(ORCID = \"0000-0003-3925-190X\")), person(\"Andrew\", \"Dunning\", role = \"ctb\", comment = c(ORCID = \"0000-0003-0464-5036\")), person(\"Atsushi\", \"Yasumoto\", role = c(\"ctb\", \"cph\"), comment = c(ORCID = \"0000-0002-8335-495X\", cph = \"Number sections Lua filter\")), person(\"Barret\", \"Schloerke\", role = \"ctb\"), person(\"Carson\", \"Sievert\", role = \"ctb\", comment = c(ORCID = \"0000-0002-4958-2844\")), person(\"Devon\", \"Ryan\", , \"dpryan79@gmail.com\", role = \"ctb\", comment = c(ORCID = \"0000-0002-8549-0971\")), person(\"Frederik\", \"Aust\", , \"frederik.aust@uni-koeln.de\", role = \"ctb\", comment = c(ORCID = \"0000-0003-4900-788X\")), person(\"Jeff\", \"Allen\", , \"jeff@posit.co\", role = \"ctb\"), person(\"JooYoung\", \"Seo\", role = \"ctb\", comment = c(ORCID = \"0000-0002-4064-6012\")), person(\"Malcolm\", \"Barrett\", role = \"ctb\"), person(\"Rob\", \"Hyndman\", , \"Rob.Hyndman@monash.edu\", role = \"ctb\"), person(\"Romain\", \"Lesur\", role = \"ctb\"), person(\"Roy\", \"Storey\", role = \"ctb\"), person(\"Ruben\", \"Arslan\", , \"ruben.arslan@uni-goettingen.de\", role = \"ctb\"), person(\"Sergio\", \"Oller\", role = \"ctb\"), person(given = \"Posit Software, PBC\", role = c(\"cph\", \"fnd\")), person(, \"jQuery UI contributors\", role = c(\"ctb\", \"cph\"), comment = \"jQuery UI library; authors listed in inst/rmd/h/jqueryui/AUTHORS.txt\"), person(\"Mark\", \"Otto\", role = \"ctb\", comment = \"Bootstrap library\"), person(\"Jacob\", \"Thornton\", role = \"ctb\", comment = \"Bootstrap library\"), person(, \"Bootstrap contributors\", role = \"ctb\", comment = \"Bootstrap library\"), person(, \"Twitter, Inc\", role = \"cph\", comment = \"Bootstrap library\"), person(\"Alexander\", \"Farkas\", role = c(\"ctb\", \"cph\"), comment = \"html5shiv library\"), person(\"Scott\", \"Jehl\", role = c(\"ctb\", \"cph\"), comment = \"Respond.js library\"), person(\"Ivan\", \"Sagalaev\", role = c(\"ctb\", \"cph\"), comment = \"highlight.js library\"), person(\"Greg\", \"Franko\", role = c(\"ctb\", \"cph\"), comment = \"tocify library\"), person(\"John\", \"MacFarlane\", role = c(\"ctb\", \"cph\"), comment = \"Pandoc templates\"), person(, \"Google, Inc.\", role = c(\"ctb\", \"cph\"), comment = \"ioslides library\"), person(\"Dave\", \"Raggett\", role = \"ctb\", comment = \"slidy library\"), person(, \"W3C\", role = \"cph\", comment = \"slidy library\"), person(\"Dave\", \"Gandy\", role = c(\"ctb\", \"cph\"), comment = \"Font-Awesome\"), person(\"Ben\", \"Sperry\", role = \"ctb\", comment = \"Ionicons\"), person(, \"Drifty\", role = \"cph\", comment = \"Ionicons\"), person(\"Aidan\", \"Lister\", role = c(\"ctb\", \"cph\"), comment = \"jQuery StickyTabs\"), person(\"Benct Philip\", \"Jonsson\", role = c(\"ctb\", \"cph\"), comment = \"pagebreak Lua filter\"), person(\"Albert\", \"Krewinkel\", role = c(\"ctb\", \"cph\"), comment = \"pagebreak Lua filter\") )", + "Description": "Convert R Markdown documents into a variety of formats.", + "License": "GPL-3", + "URL": "https://github.com/rstudio/rmarkdown, https://pkgs.rstudio.com/rmarkdown/", + "BugReports": "https://github.com/rstudio/rmarkdown/issues", + "Depends": [ + "R (>= 3.0)" + ], + "Imports": [ + "bslib (>= 0.2.5.1)", + "evaluate (>= 0.13)", + "fontawesome (>= 0.5.0)", + "htmltools (>= 0.5.1)", + "jquerylib", + "jsonlite", + "knitr (>= 1.43)", + "methods", + "tinytex (>= 0.31)", + "tools", + "utils", + "xfun (>= 0.36)", + "yaml (>= 2.1.19)" + ], + "Suggests": [ + "digest", + "dygraphs", + "fs", + "rsconnect", + "downlit (>= 0.4.0)", + "katex (>= 1.4.0)", + "sass (>= 0.4.0)", + "shiny (>= 1.6.0)", + "testthat (>= 3.0.3)", + "tibble", + "vctrs", + "cleanrmd", + "withr (>= 2.4.2)", + "xml2" + ], + "VignetteBuilder": "knitr", + "Config/Needs/website": "rstudio/quillt, pkgdown", + "Config/testthat/edition": "3", + "Encoding": "UTF-8", + "RoxygenNote": "7.3.2", + "SystemRequirements": "pandoc (>= 1.14) - http://pandoc.org", + "NeedsCompilation": "no", + "Author": "JJ Allaire [aut], Yihui Xie [aut, cre] (ORCID: ), Christophe Dervieux [aut] (ORCID: ), Jonathan McPherson [aut], Javier Luraschi [aut], Kevin Ushey [aut], Aron Atkins [aut], Hadley Wickham [aut], Joe Cheng [aut], Winston Chang [aut], Richard Iannone [aut] (ORCID: ), Andrew Dunning [ctb] (ORCID: ), Atsushi Yasumoto [ctb, cph] (ORCID: , cph: Number sections Lua filter), Barret Schloerke [ctb], Carson Sievert [ctb] (ORCID: ), Devon Ryan [ctb] (ORCID: ), Frederik Aust [ctb] (ORCID: ), Jeff Allen [ctb], JooYoung Seo [ctb] (ORCID: ), Malcolm Barrett [ctb], Rob Hyndman [ctb], Romain Lesur [ctb], Roy Storey [ctb], Ruben Arslan [ctb], Sergio Oller [ctb], Posit Software, PBC [cph, fnd], jQuery UI contributors [ctb, cph] (jQuery UI library; authors listed in inst/rmd/h/jqueryui/AUTHORS.txt), Mark Otto [ctb] (Bootstrap library), Jacob Thornton [ctb] (Bootstrap library), Bootstrap contributors [ctb] (Bootstrap library), Twitter, Inc [cph] (Bootstrap library), Alexander Farkas [ctb, cph] (html5shiv library), Scott Jehl [ctb, cph] (Respond.js library), Ivan Sagalaev [ctb, cph] (highlight.js library), Greg Franko [ctb, cph] (tocify library), John MacFarlane [ctb, cph] (Pandoc templates), Google, Inc. [ctb, cph] (ioslides library), Dave Raggett [ctb] (slidy library), W3C [cph] (slidy library), Dave Gandy [ctb, cph] (Font-Awesome), Ben Sperry [ctb] (Ionicons), Drifty [cph] (Ionicons), Aidan Lister [ctb, cph] (jQuery StickyTabs), Benct Philip Jonsson [ctb, cph] (pagebreak Lua filter), Albert Krewinkel [ctb, cph] (pagebreak Lua filter)", + "Maintainer": "Yihui Xie ", + "Repository": "https://packagemanager.posit.co/cran/latest" + }, + "rprojroot": { + "Package": "rprojroot", + "Version": "2.1.1", + "Source": "Repository", + "Title": "Finding Files in Project Subdirectories", + "Authors@R": "person(given = \"Kirill\", family = \"M\\u00fcller\", role = c(\"aut\", \"cre\"), email = \"kirill@cynkra.com\", comment = c(ORCID = \"0000-0002-1416-3412\"))", + "Description": "Robust, reliable and flexible paths to files below a project root. The 'root' of a project is defined as a directory that matches a certain criterion, e.g., it contains a certain regular file.", + "License": "MIT + file LICENSE", + "URL": "https://rprojroot.r-lib.org/, https://github.com/r-lib/rprojroot", + "BugReports": "https://github.com/r-lib/rprojroot/issues", + "Depends": [ + "R (>= 3.0.0)" + ], + "Suggests": [ + "covr", + "knitr", + "lifecycle", + "rlang", + "rmarkdown", + "testthat (>= 3.2.0)", + "withr" + ], + "VignetteBuilder": "knitr", + "Config/testthat/edition": "3", + "Encoding": "UTF-8", + "RoxygenNote": "7.3.2.9000", + "Config/autostyle/scope": "line_breaks", + "Config/autostyle/strict": "true", + "Config/Needs/website": "tidyverse/tidytemplate", + "NeedsCompilation": "no", + "Author": "Kirill Müller [aut, cre] (ORCID: )", + "Maintainer": "Kirill Müller ", + "Repository": "https://packagemanager.posit.co/cran/latest" + }, + "rstudioapi": { + "Package": "rstudioapi", + "Version": "0.18.0", + "Source": "Repository", + "Title": "Safely Access the RStudio API", + "Description": "Access the RStudio API (if available) and provide informative error messages when it's not.", + "Authors@R": "c( person(\"Kevin\", \"Ushey\", role = c(\"aut\", \"cre\"), email = \"kevin@rstudio.com\"), person(\"JJ\", \"Allaire\", role = c(\"aut\"), email = \"jj@posit.co\"), person(\"Hadley\", \"Wickham\", role = c(\"aut\"), email = \"hadley@posit.co\"), person(\"Gary\", \"Ritchie\", role = c(\"aut\"), email = \"gary@posit.co\"), person(family = \"RStudio\", role = \"cph\") )", + "Maintainer": "Kevin Ushey ", + "License": "MIT + file LICENSE", + "URL": "https://rstudio.github.io/rstudioapi/, https://github.com/rstudio/rstudioapi", + "BugReports": "https://github.com/rstudio/rstudioapi/issues", + "RoxygenNote": "7.3.3", + "Suggests": [ + "testthat", + "knitr", + "rmarkdown", + "clipr", + "covr", + "curl", + "jsonlite", + "withr" + ], + "VignetteBuilder": "knitr", + "Encoding": "UTF-8", + "NeedsCompilation": "no", + "Author": "Kevin Ushey [aut, cre], JJ Allaire [aut], Hadley Wickham [aut], Gary Ritchie [aut], RStudio [cph]", + "Repository": "CRAN" + }, + "rsvd": { + "Package": "rsvd", + "Version": "1.0.5", + "Source": "Repository", + "Type": "Package", + "Title": "Randomized Singular Value Decomposition", + "Date": "2021-04-11", + "Authors@R": "c(person(\"N. Benjamin\", \"Erichson\", role = c(\"aut\", \"cre\"), email = \"erichson@berkeley.edu\"))", + "Author": "N. Benjamin Erichson [aut, cre]", + "Maintainer": "N. Benjamin Erichson ", + "Description": "Low-rank matrix decompositions are fundamental tools and widely used for data analysis, dimension reduction, and data compression. Classically, highly accurate deterministic matrix algorithms are used for this task. However, the emergence of large-scale data has severely challenged our computational ability to analyze big data. The concept of randomness has been demonstrated as an effective strategy to quickly produce approximate answers to familiar problems such as the singular value decomposition (SVD). The rsvd package provides several randomized matrix algorithms such as the randomized singular value decomposition (rsvd), randomized principal component analysis (rpca), randomized robust principal component analysis (rrpca), randomized interpolative decomposition (rid), and the randomized CUR decomposition (rcur). In addition several plot functions are provided.", + "Depends": [ + "R (>= 4.0.0)" + ], + "Imports": [ + "Matrix" + ], + "License": "GPL (>= 3)", + "LazyData": "TRUE", + "LazyDataCompression": "xz", + "URL": "https://github.com/erichson/rSVD", + "BugReports": "https://github.com/erichson/rSVD/issues", + "Suggests": [ + "ggplot2", + "testthat" + ], + "RoxygenNote": "7.1.1", + "NeedsCompilation": "no", + "Encoding": "UTF-8", + "Repository": "https://packagemanager.posit.co/cran/latest" + }, + "rtracklayer": { + "Package": "rtracklayer", + "Version": "1.70.1", + "Source": "Bioconductor", + "Title": "R interface to genome annotation files and the UCSC genome browser", + "Author": "Michael Lawrence, Vince Carey, Robert Gentleman", + "Depends": [ + "R (>= 3.5)", + "methods", + "GenomicRanges (>= 1.37.2)" + ], + "Imports": [ + "XML (>= 1.98-0)", + "BiocGenerics (>= 0.35.3)", + "S4Vectors (>= 0.23.18)", + "IRanges (>= 2.13.13)", + "XVector (>= 0.19.7)", + "Seqinfo", + "Biostrings (>= 2.77.2)", + "curl", + "httr", + "Rsamtools (>= 1.31.2)", + "GenomicAlignments (>= 1.15.6)", + "BiocIO", + "tools", + "restfulr (>= 0.0.13)" + ], + "Suggests": [ + "GenomeInfoDb", + "BSgenome (>= 1.33.4)", + "humanStemCell", + "microRNA (>= 1.1.1)", + "genefilter", + "limma", + "org.Hs.eg.db", + "hgu133plus2.db", + "GenomicFeatures", + "BSgenome.Hsapiens.UCSC.hg19", + "TxDb.Hsapiens.UCSC.hg19.knownGene", + "RUnit" + ], + "LinkingTo": [ + "S4Vectors", + "IRanges", + "XVector" + ], + "Description": "Extensible framework for interacting with multiple genome browsers (currently UCSC built-in) and manipulating annotation tracks in various formats (currently GFF, BED, bedGraph, BED15, WIG, BigWig and 2bit built-in). The user may export/import tracks to/from the supported browsers, as well as query and modify the browser state, such as the current viewport.", + "Maintainer": "Michael Lawrence ", + "License": "Artistic-2.0 + file LICENSE", + "Collate": "io.R web.R ranges.R trackDb.R browser.R ucsc.R readGFF.R gff.R bed.R wig.R utils.R bigWig.R bigBed.R chain.R quickload.R trackhub.R twobit.R fasta.R tabix.R bam.R trackTable.R index.R test_rtracklayer_package.R ncbi.R igv.R zzz.R", + "biocViews": "Annotation,Visualization,DataImport", + "Config/pak/sysreqs": "make libbz2-dev liblzma-dev libxml2-dev libssl-dev xz-utils zlib1g-dev", + "Repository": "https://bioc-release.r-universe.dev", + "RemoteUrl": "https://github.com/bioc/rtracklayer", + "RemoteRef": "RELEASE_3_22", + "RemoteSha": "873c7111e8befb0e5761618280100a4de0cc5f3e", + "NeedsCompilation": "yes" + }, + "rvest": { + "Package": "rvest", + "Version": "1.0.5", + "Source": "Repository", + "Title": "Easily Harvest (Scrape) Web Pages", + "Authors@R": "c( person(\"Hadley\", \"Wickham\", , \"hadley@posit.co\", role = c(\"aut\", \"cre\")), person(\"Posit Software, PBC\", role = c(\"cph\", \"fnd\"), comment = c(ROR = \"03wc8by49\")) )", + "Description": "Wrappers around the 'xml2' and 'httr' packages to make it easy to download, then manipulate, HTML and XML.", + "License": "MIT + file LICENSE", + "URL": "https://rvest.tidyverse.org/, https://github.com/tidyverse/rvest", + "BugReports": "https://github.com/tidyverse/rvest/issues", + "Depends": [ + "R (>= 4.1)" + ], + "Imports": [ + "cli", + "glue", + "httr (>= 0.5)", + "lifecycle (>= 1.0.3)", + "magrittr", + "rlang (>= 1.1.0)", + "selectr", + "tibble", + "xml2 (>= 1.4.0)" + ], + "Suggests": [ + "chromote", + "covr", + "knitr", + "purrr", + "R6", + "readr", + "repurrrsive", + "rmarkdown", + "spelling", + "stringi (>= 0.3.1)", + "testthat (>= 3.0.2)", + "tidyr", + "webfakes" + ], + "VignetteBuilder": "knitr", + "Config/Needs/website": "tidyverse/tidytemplate", + "Config/testthat/edition": "3", + "Config/testthat/parallel": "true", + "Encoding": "UTF-8", + "Language": "en-US", + "RoxygenNote": "7.3.2", + "NeedsCompilation": "no", + "Author": "Hadley Wickham [aut, cre], Posit Software, PBC [cph, fnd] (ROR: )", + "Maintainer": "Hadley Wickham ", + "Repository": "CRAN" + }, + "sass": { + "Package": "sass", + "Version": "0.4.10", + "Source": "Repository", + "Type": "Package", + "Title": "Syntactically Awesome Style Sheets ('Sass')", + "Description": "An 'SCSS' compiler, powered by the 'LibSass' library. With this, R developers can use variables, inheritance, and functions to generate dynamic style sheets. The package uses the 'Sass CSS' extension language, which is stable, powerful, and CSS compatible.", + "Authors@R": "c( person(\"Joe\", \"Cheng\", , \"joe@rstudio.com\", \"aut\"), person(\"Timothy\", \"Mastny\", , \"tim.mastny@gmail.com\", \"aut\"), person(\"Richard\", \"Iannone\", , \"rich@rstudio.com\", \"aut\", comment = c(ORCID = \"0000-0003-3925-190X\")), person(\"Barret\", \"Schloerke\", , \"barret@rstudio.com\", \"aut\", comment = c(ORCID = \"0000-0001-9986-114X\")), person(\"Carson\", \"Sievert\", , \"carson@rstudio.com\", c(\"aut\", \"cre\"), comment = c(ORCID = \"0000-0002-4958-2844\")), person(\"Christophe\", \"Dervieux\", , \"cderv@rstudio.com\", c(\"ctb\"), comment = c(ORCID = \"0000-0003-4474-2498\")), person(family = \"RStudio\", role = c(\"cph\", \"fnd\")), person(family = \"Sass Open Source Foundation\", role = c(\"ctb\", \"cph\"), comment = \"LibSass library\"), person(\"Greter\", \"Marcel\", role = c(\"ctb\", \"cph\"), comment = \"LibSass library\"), person(\"Mifsud\", \"Michael\", role = c(\"ctb\", \"cph\"), comment = \"LibSass library\"), person(\"Hampton\", \"Catlin\", role = c(\"ctb\", \"cph\"), comment = \"LibSass library\"), person(\"Natalie\", \"Weizenbaum\", role = c(\"ctb\", \"cph\"), comment = \"LibSass library\"), person(\"Chris\", \"Eppstein\", role = c(\"ctb\", \"cph\"), comment = \"LibSass library\"), person(\"Adams\", \"Joseph\", role = c(\"ctb\", \"cph\"), comment = \"json.cpp\"), person(\"Trifunovic\", \"Nemanja\", role = c(\"ctb\", \"cph\"), comment = \"utf8.h\") )", + "License": "MIT + file LICENSE", + "URL": "https://rstudio.github.io/sass/, https://github.com/rstudio/sass", + "BugReports": "https://github.com/rstudio/sass/issues", + "Encoding": "UTF-8", + "RoxygenNote": "7.3.2", + "SystemRequirements": "GNU make", + "Imports": [ + "fs (>= 1.2.4)", + "rlang (>= 0.4.10)", + "htmltools (>= 0.5.1)", + "R6", + "rappdirs" + ], + "Suggests": [ + "testthat", + "knitr", + "rmarkdown", + "withr", + "shiny", + "curl" + ], + "VignetteBuilder": "knitr", + "Config/testthat/edition": "3", + "NeedsCompilation": "yes", + "Author": "Joe Cheng [aut], Timothy Mastny [aut], Richard Iannone [aut] (), Barret Schloerke [aut] (), Carson Sievert [aut, cre] (), Christophe Dervieux [ctb] (), RStudio [cph, fnd], Sass Open Source Foundation [ctb, cph] (LibSass library), Greter Marcel [ctb, cph] (LibSass library), Mifsud Michael [ctb, cph] (LibSass library), Hampton Catlin [ctb, cph] (LibSass library), Natalie Weizenbaum [ctb, cph] (LibSass library), Chris Eppstein [ctb, cph] (LibSass library), Adams Joseph [ctb, cph] (json.cpp), Trifunovic Nemanja [ctb, cph] (utf8.h)", + "Maintainer": "Carson Sievert ", + "Repository": "https://packagemanager.posit.co/cran/latest" + }, + "scDblFinder": { + "Package": "scDblFinder", + "Version": "1.24.0", + "Source": "Bioconductor", + "Type": "Package", + "Title": "scDblFinder", + "Authors@R": "c( person(\"Pierre-Luc\", \"Germain\", email=\"pierre-luc.germain@hest.ethz.ch\", role=c(\"cre\",\"aut\"), comment=c(ORCID=\"0000-0003-3418-4218\")), person(\"Aaron\", \"Lun\", email=\"infinite.monkeys.with.keyboards@gmail.com\", role=\"ctb\"))", + "URL": "https://github.com/plger/scDblFinder, https://plger.github.io/scDblFinder/", + "BugReports": "https://github.com/plger/scDblFinder/issues", + "Description": "The scDblFinder package gathers various methods for the detection and handling of doublets/multiplets in single-cell sequencing data (i.e. multiple cells captured within the same droplet or reaction volume). It includes methods formerly found in the scran package, the new fast and comprehensive scDblFinder method, and a reimplementation of the Amulet detection method for single-cell ATAC-seq.", + "License": "GPL-3 + file LICENSE", + "Depends": [ + "R (>= 4.0)", + "SingleCellExperiment" + ], + "Imports": [ + "igraph", + "Matrix", + "BiocGenerics", + "BiocParallel", + "BiocNeighbors", + "BiocSingular", + "S4Vectors", + "SummarizedExperiment", + "scran", + "scater", + "scuttle", + "bluster", + "methods", + "DelayedArray", + "xgboost", + "stats", + "utils", + "MASS", + "IRanges", + "GenomicRanges", + "GenomeInfoDb", + "Rsamtools", + "rtracklayer" + ], + "Suggests": [ + "BiocStyle", + "knitr", + "rmarkdown", + "testthat", + "scRNAseq", + "circlize", + "ComplexHeatmap", + "ggplot2", + "dplyr", + "viridisLite", + "mbkmeans" + ], + "VignetteBuilder": "knitr", + "Encoding": "UTF-8", + "RoxygenNote": "7.3.2", + "biocViews": "Preprocessing, SingleCell, RNASeq, ATACSeq", + "git_url": "https://git.bioconductor.org/packages/scDblFinder", + "git_branch": "RELEASE_3_22", + "git_last_commit": "0336756", + "git_last_commit_date": "2025-10-29", + "Repository": "Bioconductor 3.22", + "NeedsCompilation": "no", + "Author": "Pierre-Luc Germain [cre, aut] (ORCID: ), Aaron Lun [ctb]", + "Maintainer": "Pierre-Luc Germain " + }, + "scRNAseq": { + "Package": "scRNAseq", + "Version": "2.24.0", + "Source": "Bioconductor", + "Title": "Collection of Public Single-Cell RNA-Seq Datasets", + "Date": "2025-10-10", + "Authors@R": "c( person(\"Davide\", \"Risso\", email = \"risso.davide@gmail.com\", role = c(\"aut\", \"cph\")), person(\"Michael\", \"Cole\", role=\"aut\"), person(\"Aaron\", \"Lun\", role=c(\"ctb\", \"cre\"), email=\"infinite.monkeys.with.keyboards@gmail.com\"), person(\"Alan\", \"O'Callaghan\", role=\"ctb\"), person(\"Jens\", \"Preussner\", role=\"ctb\"), person(\"Charlotte\", \"Soneson\", role=\"ctb\"), person(\"Stephany\", \"Orjuela\", role=\"ctb\"), person(\"Daniel\", \"Bunis\", role=\"ctb\"), person(\"Milan\", \"Malfait\", role=\"ctb\"))", + "Description": "Gene-level counts for a collection of public scRNA-seq datasets, provided as SingleCellExperiment objects with cell- and gene-level metadata.", + "License": "CC0", + "NeedsCompilation": "no", + "Depends": [ + "SingleCellExperiment" + ], + "Imports": [ + "utils", + "methods", + "Matrix", + "BiocGenerics", + "S4Vectors", + "SparseArray", + "DelayedArray", + "GenomicRanges", + "SummarizedExperiment", + "ExperimentHub (>= 2.3.4)", + "AnnotationHub (>= 3.3.6)", + "AnnotationDbi", + "ensembldb", + "GenomicFeatures", + "alabaster.base", + "alabaster.matrix", + "alabaster.sce", + "gypsum", + "jsonlite", + "DBI", + "RSQLite" + ], + "Suggests": [ + "BiocStyle", + "knitr", + "rmarkdown", + "testthat", + "jsonvalidate", + "BiocManager" + ], + "VignetteBuilder": "knitr", + "Encoding": "UTF-8", + "biocViews": "ExperimentHub, ExperimentData, ExpressionData, SequencingData, RNASeqData, SingleCellData", + "BuildResaveData": "no", + "RoxygenNote": "7.3.2", + "git_url": "https://git.bioconductor.org/packages/scRNAseq", + "git_branch": "RELEASE_3_22", + "git_last_commit": "111920c", + "git_last_commit_date": "2025-10-29", + "Repository": "Bioconductor 3.22", + "Author": "Davide Risso [aut, cph], Michael Cole [aut], Aaron Lun [ctb, cre], Alan O'Callaghan [ctb], Jens Preussner [ctb], Charlotte Soneson [ctb], Stephany Orjuela [ctb], Daniel Bunis [ctb], Milan Malfait [ctb]", + "Maintainer": "Aaron Lun " + }, + "scales": { + "Package": "scales", + "Version": "1.4.0", + "Source": "Repository", + "Title": "Scale Functions for Visualization", + "Authors@R": "c( person(\"Hadley\", \"Wickham\", , \"hadley@posit.co\", role = \"aut\"), person(\"Thomas Lin\", \"Pedersen\", , \"thomas.pedersen@posit.co\", role = c(\"cre\", \"aut\"), comment = c(ORCID = \"0000-0002-5147-4711\")), person(\"Dana\", \"Seidel\", role = \"aut\"), person(\"Posit Software, PBC\", role = c(\"cph\", \"fnd\"), comment = c(ROR = \"03wc8by49\")) )", + "Description": "Graphical scales map data to aesthetics, and provide methods for automatically determining breaks and labels for axes and legends.", + "License": "MIT + file LICENSE", + "URL": "https://scales.r-lib.org, https://github.com/r-lib/scales", + "BugReports": "https://github.com/r-lib/scales/issues", + "Depends": [ + "R (>= 4.1)" + ], + "Imports": [ + "cli", + "farver (>= 2.0.3)", + "glue", + "labeling", + "lifecycle", + "R6", + "RColorBrewer", + "rlang (>= 1.1.0)", + "viridisLite" + ], + "Suggests": [ + "bit64", + "covr", + "dichromat", + "ggplot2", + "hms (>= 0.5.0)", + "stringi", + "testthat (>= 3.0.0)" + ], + "Config/Needs/website": "tidyverse/tidytemplate", + "Config/testthat/edition": "3", + "Config/usethis/last-upkeep": "2025-04-23", + "Encoding": "UTF-8", + "LazyLoad": "yes", + "RoxygenNote": "7.3.2", + "NeedsCompilation": "no", + "Author": "Hadley Wickham [aut], Thomas Lin Pedersen [cre, aut] (), Dana Seidel [aut], Posit Software, PBC [cph, fnd] (03wc8by49)", + "Maintainer": "Thomas Lin Pedersen ", + "Repository": "https://packagemanager.posit.co/cran/latest" + }, + "scater": { + "Package": "scater", + "Version": "1.38.0", + "Source": "Bioconductor", + "Type": "Package", + "Authors@R": "c( person(\"Davis\", \"McCarthy\", role=c(\"aut\"), email=\"davis@ebi.ac.uk\"), person(\"Kieran\", \"Campbell\", role=c(\"aut\"), email=\"kieran.campbell@sjc.ox.ac.uk\"), person(\"Aaron\", \"Lun\", role = c(\"aut\", \"ctb\"), email=\"infinite.monkeys.with.keyboards@gmail.com\"), person(\"Quin\", \"Wills\", role=c(\"aut\"), email=\"qilin@quinwills.net\"), person(\"Vladimir\", \"Kiselev\", role=c(\"ctb\"), email=\"vk6@sanger.ac.uk\"), person(\"Felix G.M.\", \"Ernst\", role=c(\"ctb\"), email=\"felix.gm.ernst@outlook.com\"), person(\"Alan\", \"O'Callaghan\", role=c(\"ctb\", \"cre\"), email=\"alan.ocallaghan@outlook.com\"), person(\"Yun\", \"Peng\", role=c(\"ctb\"), email=\"yunyunp96@gmail.com\"), person(\"Leo\", \"Lahti\", role=c(\"ctb\"), email=\"leo.lahti@utu.fi\", comment = c(ORCID = \"0000-0001-5537-637X\")), person(\"Tuomas\", \"Borman\", role = c(\"ctb\"), comment = c(ORCID = \"0000-0002-8563-8884\")) )", + "Date": "2025-03-07", + "License": "GPL-3", + "Title": "Single-Cell Analysis Toolkit for Gene Expression Data in R", + "Description": "A collection of tools for doing various analyses of single-cell RNA-seq gene expression data, with a focus on quality control and visualization.", + "Depends": [ + "SingleCellExperiment", + "scuttle", + "ggplot2" + ], + "Imports": [ + "stats", + "utils", + "methods", + "Matrix", + "BiocGenerics", + "S4Vectors", + "SummarizedExperiment", + "MatrixGenerics", + "SparseArray", + "DelayedArray", + "beachmat", + "BiocNeighbors", + "BiocSingular", + "BiocParallel", + "rlang", + "ggbeeswarm", + "viridis", + "Rtsne", + "RColorBrewer", + "RcppML", + "uwot", + "pheatmap", + "ggrepel", + "ggrastr" + ], + "Suggests": [ + "BiocStyle", + "DelayedMatrixStats", + "snifter", + "densvis", + "cowplot", + "biomaRt", + "knitr", + "scRNAseq", + "robustbase", + "rmarkdown", + "testthat", + "Biobase", + "scattermore" + ], + "VignetteBuilder": "knitr", + "biocViews": "ImmunoOncology, SingleCell, RNASeq, QualityControl, Preprocessing, Normalization, Visualization, DimensionReduction, Transcriptomics, GeneExpression, Sequencing, Software, DataImport, DataRepresentation, Infrastructure, Coverage", + "Encoding": "UTF-8", + "RoxygenNote": "7.3.2", + "URL": "http://bioconductor.org/packages/scater/", + "BugReports": "https://support.bioconductor.org/", + "git_url": "https://git.bioconductor.org/packages/scater", + "git_branch": "RELEASE_3_22", + "git_last_commit": "64e2b5e", + "git_last_commit_date": "2025-10-29", + "Repository": "Bioconductor 3.22", + "NeedsCompilation": "no", + "Author": "Davis McCarthy [aut], Kieran Campbell [aut], Aaron Lun [aut, ctb], Quin Wills [aut], Vladimir Kiselev [ctb], Felix G.M. Ernst [ctb], Alan O'Callaghan [ctb, cre], Yun Peng [ctb], Leo Lahti [ctb] (ORCID: ), Tuomas Borman [ctb] (ORCID: )", + "Maintainer": "Alan O'Callaghan " + }, + "scatterpie": { + "Package": "scatterpie", + "Version": "0.2.6", + "Source": "Repository", + "Title": "Scatter Pie Plot", + "Authors@R": "c( person(given = \"Guangchuang\", family = \"Yu\", email = \"guangchuangyu@gmail.com\", role = c(\"aut\", \"cre\"), comment = c(ORCID = \"0000-0002-6485-8781\")), person(given = \"Shuangbin\", family = \"Xu\", email = \"xshuangbin@163.com\", role = \"ctb\", comment = c(ORCID=\"0000-0003-3513-5362\")) )", + "Description": "Creates scatterpie plots, especially useful for plotting pies on a map.", + "Depends": [ + "R (>= 4.1.0)", + "ggplot2" + ], + "Imports": [ + "ggforce", + "rlang", + "ggfun", + "stats", + "tidyr", + "dplyr", + "utils", + "yulab.utils (>= 0.1.6)" + ], + "Suggests": [ + "knitr", + "rmarkdown", + "prettydoc", + "maps", + "scales", + "cli" + ], + "VignetteBuilder": "knitr", + "License": "Artistic-2.0", + "Encoding": "UTF-8", + "RoxygenNote": "7.3.3", + "NeedsCompilation": "no", + "Author": "Guangchuang Yu [aut, cre] (ORCID: ), Shuangbin Xu [ctb] (ORCID: )", + "Maintainer": "Guangchuang Yu ", + "Repository": "https://packagemanager.posit.co/cran/latest" + }, + "scran": { + "Package": "scran", + "Version": "1.38.0", + "Source": "Bioconductor", + "Date": "2024-09-05", + "Title": "Methods for Single-Cell RNA-Seq Data Analysis", + "Description": "Implements miscellaneous functions for interpretation of single-cell RNA-seq data. Methods are provided for assignment of cell cycle phase, detection of highly variable and significantly correlated genes, identification of marker genes, and other common tasks in routine single-cell analysis workflows.", + "Authors@R": "c(person(\"Aaron\", \"Lun\", role = c(\"aut\", \"cre\"), email = \"infinite.monkeys.with.keyboards@gmail.com\"), person(\"Karsten\", \"Bach\", role = \"aut\"), person(\"Jong Kyoung\", \"Kim\", role = \"ctb\"), person(\"Antonio\", \"Scialdone\", role=\"ctb\"))", + "Depends": [ + "SingleCellExperiment", + "scuttle" + ], + "Imports": [ + "SummarizedExperiment", + "S4Vectors", + "BiocGenerics", + "BiocParallel", + "Rcpp", + "stats", + "methods", + "utils", + "Matrix", + "edgeR", + "limma", + "igraph", + "statmod", + "MatrixGenerics", + "S4Arrays", + "DelayedArray", + "BiocSingular", + "bluster", + "metapod", + "dqrng", + "beachmat" + ], + "Suggests": [ + "testthat", + "BiocStyle", + "knitr", + "rmarkdown", + "DelayedMatrixStats", + "HDF5Array", + "scRNAseq", + "dynamicTreeCut", + "ResidualMatrix", + "ScaledMatrix", + "DESeq2", + "pheatmap", + "scater" + ], + "biocViews": "ImmunoOncology, Normalization, Sequencing, RNASeq, Software, GeneExpression, Transcriptomics, SingleCell, Clustering", + "LinkingTo": [ + "Rcpp", + "beachmat", + "BH", + "dqrng", + "scuttle" + ], + "License": "GPL-3", + "NeedsCompilation": "yes", + "VignetteBuilder": "knitr", + "SystemRequirements": "C++11", + "RoxygenNote": "7.3.2", + "URL": "https://github.com/MarioniLab/scran/", + "BugReports": "https://github.com/MarioniLab/scran/issues", + "git_url": "https://git.bioconductor.org/packages/scran", + "git_branch": "RELEASE_3_22", + "git_last_commit": "50cb1ba", + "git_last_commit_date": "2025-10-29", + "Repository": "Bioconductor 3.22", + "Author": "Aaron Lun [aut, cre], Karsten Bach [aut], Jong Kyoung Kim [ctb], Antonio Scialdone [ctb]", + "Maintainer": "Aaron Lun " + }, + "scuttle": { + "Package": "scuttle", + "Version": "1.20.0", + "Source": "Bioconductor", + "Type": "Package", + "Authors@R": "c( person(\"Aaron\", \"Lun\", role = c(\"aut\", \"cre\"), email=\"infinite.monkeys.with.keyboards@gmail.com\"), person(\"Davis\", \"McCarthy\", role=\"aut\") )", + "Date": "2024-10-26", + "License": "GPL-3", + "Title": "Single-Cell RNA-Seq Analysis Utilities", + "Description": "Provides basic utility functions for performing single-cell analyses, focusing on simple normalization, quality control and data transformations. Also provides some helper functions to assist development of other packages.", + "Depends": [ + "SingleCellExperiment" + ], + "Imports": [ + "methods", + "utils", + "stats", + "Matrix", + "Rcpp", + "BiocGenerics", + "S4Vectors", + "BiocParallel", + "GenomicRanges", + "SummarizedExperiment", + "S4Arrays", + "MatrixGenerics", + "SparseArray", + "DelayedArray", + "beachmat" + ], + "Suggests": [ + "BiocStyle", + "knitr", + "scRNAseq", + "rmarkdown", + "testthat", + "sparseMatrixStats", + "DelayedMatrixStats", + "scran" + ], + "VignetteBuilder": "knitr", + "biocViews": "ImmunoOncology, SingleCell, RNASeq, QualityControl, Preprocessing, Normalization, Transcriptomics, GeneExpression, Sequencing, Software, DataImport", + "LinkingTo": [ + "Rcpp", + "beachmat" + ], + "SystemRequirements": "C++11", + "RoxygenNote": "7.3.2", + "Encoding": "UTF-8", + "NeedsCompilation": "yes", + "git_url": "https://git.bioconductor.org/packages/scuttle", + "git_branch": "RELEASE_3_22", + "git_last_commit": "2796dbd", + "git_last_commit_date": "2025-10-29", + "Repository": "Bioconductor 3.22", + "Author": "Aaron Lun [aut, cre], Davis McCarthy [aut]", + "Maintainer": "Aaron Lun " + }, + "segmented": { + "Package": "segmented", + "Version": "2.2-0", + "Source": "Repository", + "Type": "Package", + "Title": "Regression Models with Break-Points / Change-Points Estimation (with Possibly Random Effects)", + "Date": "2026-01-15", + "Authors@R": "c(person(given = c(\"Vito\",\"M.\",\"R.\"), family = \"Muggeo\", role = c(\"aut\", \"cre\"), email = \"vito.muggeo@unipa.it\", comment=c(ORCID=\"0000-0002-3386-4054\")))", + "Maintainer": "Vito M. R. Muggeo ", + "Description": "Fitting regression models where, in addition to possible linear terms, one or more covariates have segmented (i.e., broken-line or piece-wise linear) or stepmented (i.e. piece-wise constant) effects. Multiple breakpoints for the same variable are allowed. The estimation method is discussed in Muggeo (2003, ) and illustrated in Muggeo (2008, ). An approach for hypothesis testing is presented in Muggeo (2016, ), and interval estimation for the breakpoint is discussed in Muggeo (2017, ). Segmented mixed models, i.e. random effects in the change point, are discussed in Muggeo (2014, ). Estimation of piecewise-constant relationships and changepoints (mean-shift models) is discussed in Fasola et al. (2018, ).", + "Depends": [ + "R (>= 3.5.0)", + "MASS", + "nlme" + ], + "License": "GPL", + "NeedsCompilation": "no", + "Author": "Vito M. R. Muggeo [aut, cre] (ORCID: )", + "RoxygenNote": "7.3.1", + "Repository": "CRAN" + }, + "selectr": { + "Package": "selectr", + "Version": "0.5-1", + "Source": "Repository", + "Type": "Package", + "Title": "Translate CSS Selectors to XPath Expressions", + "Authors@R": "c(person(\"Simon\", \"Potter\", role = c(\"aut\", \"trl\", \"cre\"), email = \"simon@sjp.co.nz\"), person(\"Simon\", \"Sapin\", role = \"aut\"), person(\"Ian\", \"Bicking\", role = \"aut\"))", + "License": "BSD_3_clause + file LICENCE", + "Depends": [ + "R (>= 3.0)" + ], + "Imports": [ + "methods", + "stringr", + "R6" + ], + "Suggests": [ + "testthat", + "XML", + "xml2" + ], + "URL": "https://sjp.co.nz/projects/selectr/", + "BugReports": "https://github.com/sjp/selectr/issues", + "Description": "Translates a CSS selector into an equivalent XPath expression. This allows us to use CSS selectors when working with the XML package as it can only evaluate XPath expressions. Also provided are convenience functions useful for using CSS selectors on XML nodes. This package is a port of the Python package 'cssselect' ().", + "NeedsCompilation": "no", + "Author": "Simon Potter [aut, trl, cre], Simon Sapin [aut], Ian Bicking [aut]", + "Maintainer": "Simon Potter ", + "Repository": "CRAN" + }, + "shape": { + "Package": "shape", + "Version": "1.4.6.1", + "Source": "Repository", + "Title": "Functions for Plotting Graphical Shapes, Colors", + "Author": "Karline Soetaert ", + "Maintainer": "Karline Soetaert ", + "Depends": [ + "R (>= 2.01)" + ], + "Imports": [ + "stats", + "graphics", + "grDevices" + ], + "Description": "Functions for plotting graphical shapes such as ellipses, circles, cylinders, arrows, ...", + "License": "GPL (>= 3)", + "NeedsCompilation": "no", + "Repository": "RSPM", + "Encoding": "UTF-8" + }, + "shiny": { + "Package": "shiny", + "Version": "1.12.1", + "Source": "Repository", + "Type": "Package", + "Title": "Web Application Framework for R", + "Authors@R": "c( person(\"Winston\", \"Chang\", , \"winston@posit.co\", role = \"aut\", comment = c(ORCID = \"0000-0002-1576-2126\")), person(\"Joe\", \"Cheng\", , \"joe@posit.co\", role = \"aut\"), person(\"JJ\", \"Allaire\", , \"jj@posit.co\", role = \"aut\"), person(\"Carson\", \"Sievert\", , \"carson@posit.co\", role = c(\"aut\", \"cre\"), comment = c(ORCID = \"0000-0002-4958-2844\")), person(\"Barret\", \"Schloerke\", , \"barret@posit.co\", role = \"aut\", comment = c(ORCID = \"0000-0001-9986-114X\")), person(\"Garrick\", \"Aden-Buie\", , \"garrick@adenbuie.com\", role = \"aut\", comment = c(ORCID = \"0000-0002-7111-0077\")), person(\"Yihui\", \"Xie\", , \"yihui@posit.co\", role = \"aut\"), person(\"Jeff\", \"Allen\", role = \"aut\"), person(\"Jonathan\", \"McPherson\", , \"jonathan@posit.co\", role = \"aut\"), person(\"Alan\", \"Dipert\", role = \"aut\"), person(\"Barbara\", \"Borges\", role = \"aut\"), person(\"Posit Software, PBC\", role = c(\"cph\", \"fnd\"), comment = c(ROR = \"03wc8by49\")), person(, \"jQuery Foundation\", role = \"cph\", comment = \"jQuery library and jQuery UI library\"), person(, \"jQuery contributors\", role = c(\"ctb\", \"cph\"), comment = \"jQuery library; authors listed in inst/www/shared/jquery-AUTHORS.txt\"), person(, \"jQuery UI contributors\", role = c(\"ctb\", \"cph\"), comment = \"jQuery UI library; authors listed in inst/www/shared/jqueryui/AUTHORS.txt\"), person(\"Mark\", \"Otto\", role = \"ctb\", comment = \"Bootstrap library\"), person(\"Jacob\", \"Thornton\", role = \"ctb\", comment = \"Bootstrap library\"), person(, \"Bootstrap contributors\", role = \"ctb\", comment = \"Bootstrap library\"), person(, \"Twitter, Inc\", role = \"cph\", comment = \"Bootstrap library\"), person(\"Prem Nawaz\", \"Khan\", role = \"ctb\", comment = \"Bootstrap accessibility plugin\"), person(\"Victor\", \"Tsaran\", role = \"ctb\", comment = \"Bootstrap accessibility plugin\"), person(\"Dennis\", \"Lembree\", role = \"ctb\", comment = \"Bootstrap accessibility plugin\"), person(\"Srinivasu\", \"Chakravarthula\", role = \"ctb\", comment = \"Bootstrap accessibility plugin\"), person(\"Cathy\", \"O'Connor\", role = \"ctb\", comment = \"Bootstrap accessibility plugin\"), person(, \"PayPal, Inc\", role = \"cph\", comment = \"Bootstrap accessibility plugin\"), person(\"Stefan\", \"Petre\", role = c(\"ctb\", \"cph\"), comment = \"Bootstrap-datepicker library\"), person(\"Andrew\", \"Rowls\", role = c(\"ctb\", \"cph\"), comment = \"Bootstrap-datepicker library\"), person(\"Brian\", \"Reavis\", role = c(\"ctb\", \"cph\"), comment = \"selectize.js library\"), person(\"Salmen\", \"Bejaoui\", role = c(\"ctb\", \"cph\"), comment = \"selectize-plugin-a11y library\"), person(\"Denis\", \"Ineshin\", role = c(\"ctb\", \"cph\"), comment = \"ion.rangeSlider library\"), person(\"Sami\", \"Samhuri\", role = c(\"ctb\", \"cph\"), comment = \"Javascript strftime library\"), person(, \"SpryMedia Limited\", role = c(\"ctb\", \"cph\"), comment = \"DataTables library\"), person(\"Ivan\", \"Sagalaev\", role = c(\"ctb\", \"cph\"), comment = \"highlight.js library\"), person(\"R Core Team\", role = c(\"ctb\", \"cph\"), comment = \"tar implementation from R\") )", + "Description": "Makes it incredibly easy to build interactive web applications with R. Automatic \"reactive\" binding between inputs and outputs and extensive prebuilt widgets make it possible to build beautiful, responsive, and powerful applications with minimal effort.", + "License": "GPL-3 | file LICENSE", + "URL": "https://shiny.posit.co/, https://github.com/rstudio/shiny", + "BugReports": "https://github.com/rstudio/shiny/issues", + "Depends": [ + "methods", + "R (>= 3.0.2)" + ], + "Imports": [ + "bslib (>= 0.6.0)", + "cachem (>= 1.1.0)", + "cli", + "commonmark (>= 2.0.0)", + "fastmap (>= 1.1.1)", + "fontawesome (>= 0.4.0)", + "glue (>= 1.3.2)", + "grDevices", + "htmltools (>= 0.5.4)", + "httpuv (>= 1.5.2)", + "jsonlite (>= 0.9.16)", + "later (>= 1.0.0)", + "lifecycle (>= 0.2.0)", + "mime (>= 0.3)", + "otel", + "promises (>= 1.5.0)", + "R6 (>= 2.0)", + "rlang (>= 0.4.10)", + "sourcetools", + "tools", + "utils", + "withr", + "xtable" + ], + "Suggests": [ + "Cairo (>= 1.5-5)", + "coro (>= 1.1.0)", + "datasets", + "DT", + "dygraphs", + "future", + "ggplot2", + "knitr (>= 1.6)", + "magrittr", + "markdown", + "mirai", + "otelsdk (>= 0.2.0)", + "ragg", + "reactlog (>= 1.0.0)", + "rmarkdown", + "sass", + "showtext", + "testthat (>= 3.2.1)", + "watcher", + "yaml" + ], + "Config/Needs/check": "shinytest2", + "Config/testthat/edition": "3", + "Encoding": "UTF-8", + "RoxygenNote": "7.3.3", + "Collate": "'globals.R' 'app-state.R' 'app_template.R' 'bind-cache.R' 'bind-event.R' 'bookmark-state-local.R' 'bookmark-state.R' 'bootstrap-deprecated.R' 'bootstrap-layout.R' 'conditions.R' 'map.R' 'utils.R' 'bootstrap.R' 'busy-indicators-spinners.R' 'busy-indicators.R' 'cache-utils.R' 'deprecated.R' 'devmode.R' 'diagnose.R' 'extended-task.R' 'fileupload.R' 'graph.R' 'reactives.R' 'reactive-domains.R' 'history.R' 'hooks.R' 'html-deps.R' 'image-interact-opts.R' 'image-interact.R' 'imageutils.R' 'input-action.R' 'input-checkbox.R' 'input-checkboxgroup.R' 'input-date.R' 'input-daterange.R' 'input-file.R' 'input-numeric.R' 'input-password.R' 'input-radiobuttons.R' 'input-select.R' 'input-slider.R' 'input-submit.R' 'input-text.R' 'input-textarea.R' 'input-utils.R' 'insert-tab.R' 'insert-ui.R' 'jqueryui.R' 'knitr.R' 'middleware-shiny.R' 'middleware.R' 'timer.R' 'shiny.R' 'mock-session.R' 'modal.R' 'modules.R' 'notifications.R' 'otel-attr-srcref.R' 'otel-collect.R' 'otel-enable.R' 'otel-error.R' 'otel-label.R' 'otel-reactive-update.R' 'otel-session.R' 'otel-shiny.R' 'otel-with.R' 'priorityqueue.R' 'progress.R' 'react.R' 'reexports.R' 'render-cached-plot.R' 'render-plot.R' 'render-table.R' 'run-url.R' 'runapp.R' 'serializers.R' 'server-input-handlers.R' 'server-resource-paths.R' 'server.R' 'shiny-options.R' 'shiny-package.R' 'shinyapp.R' 'shinyui.R' 'shinywrappers.R' 'showcase.R' 'snapshot.R' 'staticimports.R' 'tar.R' 'test-export.R' 'test-server.R' 'test.R' 'update-input.R' 'utils-lang.R' 'utils-tags.R' 'version_bs_date_picker.R' 'version_ion_range_slider.R' 'version_jquery.R' 'version_jqueryui.R' 'version_selectize.R' 'version_strftime.R' 'viewer.R'", + "NeedsCompilation": "no", + "Author": "Winston Chang [aut] (ORCID: ), Joe Cheng [aut], JJ Allaire [aut], Carson Sievert [aut, cre] (ORCID: ), Barret Schloerke [aut] (ORCID: ), Garrick Aden-Buie [aut] (ORCID: ), Yihui Xie [aut], Jeff Allen [aut], Jonathan McPherson [aut], Alan Dipert [aut], Barbara Borges [aut], Posit Software, PBC [cph, fnd] (ROR: ), jQuery Foundation [cph] (jQuery library and jQuery UI library), jQuery contributors [ctb, cph] (jQuery library; authors listed in inst/www/shared/jquery-AUTHORS.txt), jQuery UI contributors [ctb, cph] (jQuery UI library; authors listed in inst/www/shared/jqueryui/AUTHORS.txt), Mark Otto [ctb] (Bootstrap library), Jacob Thornton [ctb] (Bootstrap library), Bootstrap contributors [ctb] (Bootstrap library), Twitter, Inc [cph] (Bootstrap library), Prem Nawaz Khan [ctb] (Bootstrap accessibility plugin), Victor Tsaran [ctb] (Bootstrap accessibility plugin), Dennis Lembree [ctb] (Bootstrap accessibility plugin), Srinivasu Chakravarthula [ctb] (Bootstrap accessibility plugin), Cathy O'Connor [ctb] (Bootstrap accessibility plugin), PayPal, Inc [cph] (Bootstrap accessibility plugin), Stefan Petre [ctb, cph] (Bootstrap-datepicker library), Andrew Rowls [ctb, cph] (Bootstrap-datepicker library), Brian Reavis [ctb, cph] (selectize.js library), Salmen Bejaoui [ctb, cph] (selectize-plugin-a11y library), Denis Ineshin [ctb, cph] (ion.rangeSlider library), Sami Samhuri [ctb, cph] (Javascript strftime library), SpryMedia Limited [ctb, cph] (DataTables library), Ivan Sagalaev [ctb, cph] (highlight.js library), R Core Team [ctb, cph] (tar implementation from R)", + "Maintainer": "Carson Sievert ", + "Repository": "CRAN" + }, + "shinydashboard": { + "Package": "shinydashboard", + "Version": "0.7.3", + "Source": "Repository", + "Title": "Create Dashboards with 'Shiny'", + "Authors@R": "c( person(\"Winston\", \"Chang\", , \"winston@posit.co\", role = c(\"aut\", \"cre\")), person(\"Barbara\", \"Borges Ribeiro\", role = \"aut\"), person(, \"Posit Software, PBC\", role = \"cph\"), person(, \"Almasaeed Studio\", role = c(\"ctb\", \"cph\"), comment = \"AdminLTE theme for Bootstrap\"), person(, \"Adobe Systems Incorporated\", role = c(\"ctb\", \"cph\"), comment = \"Source Sans Pro font\") )", + "Description": "Create dashboards with 'Shiny'. This package provides a theme on top of 'Shiny', making it easy to create attractive dashboards.", + "License": "MIT + file LICENSE", + "URL": "https://rstudio.github.io/shinydashboard/, https://github.com/rstudio/shinydashboard", + "BugReports": "https://github.com/rstudio/shinydashboard/issues", + "Depends": [ + "R (>= 3.0)" + ], + "Imports": [ + "htmltools (>= 0.2.6)", + "promises", + "shiny (>= 1.0.0)", + "utils" + ], + "Encoding": "UTF-8", + "RoxygenNote": "7.3.2", + "NeedsCompilation": "no", + "Author": "Winston Chang [aut, cre], Barbara Borges Ribeiro [aut], Posit Software, PBC [cph], Almasaeed Studio [ctb, cph] (AdminLTE theme for Bootstrap), Adobe Systems Incorporated [ctb, cph] (Source Sans Pro font)", + "Maintainer": "Winston Chang ", + "Repository": "CRAN" + }, + "sitmo": { + "Package": "sitmo", + "Version": "2.0.2", + "Source": "Repository", + "Title": "Parallel Pseudo Random Number Generator (PPRNG) 'sitmo' Header Files", + "Authors@R": "c(person(\"James\", \"Balamuta\", email = \"balamut2@illinois.edu\", role = c(\"aut\", \"cre\", \"cph\"), comment = c(ORCID = \"0000-0003-2826-8458\")), person(\"Thijs\",\"van den Berg\", email = \"thijs@sitmo.com\", role = c(\"aut\", \"cph\")), person(\"Ralf\", \"Stubner\", email = \"ralf.stubner@daqana.com\", role = c(\"ctb\")))", + "Description": "Provided within are two high quality and fast PPRNGs that may be used in an 'OpenMP' parallel environment. In addition, there is a generator for one dimensional low-discrepancy sequence. The objective of this library to consolidate the distribution of the 'sitmo' (C++98 & C++11), 'threefry' and 'vandercorput' (C++11-only) engines on CRAN by enabling others to link to the header files inside of 'sitmo' instead of including a copy of each engine within their individual package. Lastly, the package contains example implementations using the 'sitmo' package and three accompanying vignette that provide additional information.", + "Depends": [ + "R (>= 3.2.0)" + ], + "URL": "https://github.com/coatless/sitmo, http://thecoatlessprofessor.com/projects/sitmo/, https://github.com/stdfin/random/", + "BugReports": "https://github.com/coatless/sitmo/issues", + "License": "MIT + file LICENSE", + "LinkingTo": [ + "Rcpp" + ], + "Imports": [ + "Rcpp (>= 0.12.13)" + ], + "RoxygenNote": "7.1.1", + "Suggests": [ + "knitr", + "rmarkdown", + "ggplot2" + ], + "VignetteBuilder": "knitr", + "Encoding": "UTF-8", + "NeedsCompilation": "yes", + "Author": "James Balamuta [aut, cre, cph] (), Thijs van den Berg [aut, cph], Ralf Stubner [ctb]", + "Maintainer": "James Balamuta ", + "Repository": "https://packagemanager.posit.co/cran/latest" + }, + "snow": { + "Package": "snow", + "Version": "0.4-4", + "Source": "Repository", + "Title": "Simple Network of Workstations", + "Author": "Luke Tierney, A. J. Rossini, Na Li, H. Sevcikova", + "Description": "Support for simple parallel computing in R.", + "Maintainer": "Luke Tierney ", + "Suggests": [ + "rlecuyer" + ], + "Enhances": [ + "Rmpi" + ], + "License": "GPL", + "Depends": [ + "R (>= 2.13.1)", + "utils" + ], + "NeedsCompilation": "no", + "Repository": "https://packagemanager.posit.co/cran/latest", + "Encoding": "UTF-8" + }, + "sourcetools": { + "Package": "sourcetools", + "Version": "0.1.7-1", + "Source": "Repository", + "Type": "Package", + "Title": "Tools for Reading, Tokenizing and Parsing R Code", + "Author": "Kevin Ushey", + "Maintainer": "Kevin Ushey ", + "Description": "Tools for the reading and tokenization of R code. The 'sourcetools' package provides both an R and C++ interface for the tokenization of R code, and helpers for interacting with the tokenized representation of R code.", + "License": "MIT + file LICENSE", + "Depends": [ + "R (>= 3.0.2)" + ], + "Suggests": [ + "testthat" + ], + "RoxygenNote": "5.0.1", + "BugReports": "https://github.com/kevinushey/sourcetools/issues", + "Encoding": "UTF-8", + "NeedsCompilation": "yes", + "Repository": "https://packagemanager.posit.co/cran/latest" + }, + "sparseMatrixStats": { + "Package": "sparseMatrixStats", + "Version": "1.22.0", + "Source": "Bioconductor", + "Type": "Package", + "Title": "Summary Statistics for Rows and Columns of Sparse Matrices", + "Authors@R": "person(\"Constantin\", \"Ahlmann-Eltze\", email = \"artjom31415@googlemail.com\", role = c(\"aut\", \"cre\"), comment = c(ORCID = \"0000-0002-3762-068X\"))", + "Description": "High performance functions for row and column operations on sparse matrices. For example: col / rowMeans2, col / rowMedians, col / rowVars etc. Currently, the optimizations are limited to data in the column sparse format. This package is inspired by the matrixStats package by Henrik Bengtsson.", + "License": "MIT + file LICENSE", + "Encoding": "UTF-8", + "RoxygenNote": "7.3.1", + "LinkingTo": [ + "Rcpp" + ], + "Imports": [ + "Rcpp", + "Matrix", + "matrixStats (>= 0.60.0)", + "methods" + ], + "Depends": [ + "MatrixGenerics (>= 1.5.3)" + ], + "Suggests": [ + "testthat (>= 2.1.0)", + "knitr", + "bench", + "rmarkdown", + "BiocStyle" + ], + "SystemRequirements": "C++11", + "VignetteBuilder": "knitr", + "URL": "https://github.com/const-ae/sparseMatrixStats", + "BugReports": "https://github.com/const-ae/sparseMatrixStats/issues", + "biocViews": "Infrastructure, Software, DataRepresentation", + "git_url": "https://git.bioconductor.org/packages/sparseMatrixStats", + "git_branch": "RELEASE_3_22", + "git_last_commit": "3acf348", + "git_last_commit_date": "2025-10-29", + "Repository": "Bioconductor 3.22", + "NeedsCompilation": "yes", + "Author": "Constantin Ahlmann-Eltze [aut, cre] (ORCID: )", + "Maintainer": "Constantin Ahlmann-Eltze " + }, + "spelling": { + "Package": "spelling", + "Version": "2.3.2", + "Source": "Repository", + "Title": "Tools for Spell Checking in R", + "Authors@R": "c( person(\"Jeroen\", \"Ooms\", , \"jeroenooms@gmail.com\", role = c(\"cre\", \"aut\"), comment = c(ORCID = \"0000-0002-4035-0289\")), person(\"Jim\", \"Hester\", , \"james.hester@rstudio.com\", role = \"aut\"))", + "Description": "Spell checking common document formats including latex, markdown, manual pages, and description files. Includes utilities to automate checking of documentation and vignettes as a unit test during 'R CMD check'. Both British and American English are supported out of the box and other languages can be added. In addition, packages may define a 'wordlist' to allow custom terminology without having to abuse punctuation.", + "License": "MIT + file LICENSE", + "Encoding": "UTF-8", + "URL": "https://ropensci.r-universe.dev/spelling https://docs.ropensci.org/spelling/", + "BugReports": "https://github.com/ropensci/spelling/issues", + "Imports": [ + "commonmark", + "xml2", + "hunspell (>= 3.0)", + "knitr" + ], + "Suggests": [ + "pdftools" + ], + "RoxygenNote": "7.3.1", + "Language": "en-GB", + "NeedsCompilation": "no", + "Author": "Jeroen Ooms [cre, aut] (ORCID: ), Jim Hester [aut]", + "Maintainer": "Jeroen Ooms ", + "Repository": "CRAN" + }, + "statmod": { + "Package": "statmod", + "Version": "1.5.1", + "Source": "Repository", + "Date": "2025-10-08", + "Title": "Statistical Modeling", + "Authors@R": "c(person(given = \"Gordon\", family = \"Smyth\", role = c(\"cre\", \"aut\"), email = \"smyth@wehi.edu.au\"), person(given = \"Lizhong\", family = \"Chen\", role = \"aut\"), person(given = \"Yifang\", family = \"Hu\", role = \"ctb\"), person(given = \"Peter\", family = \"Dunn\", role = \"ctb\"), person(given = \"Belinda\", family = \"Phipson\", role = \"ctb\"), person(given = \"Yunshun\", family = \"Chen\", role = \"ctb\"))", + "Maintainer": "Gordon Smyth ", + "Depends": [ + "R (>= 3.0.0)" + ], + "Imports": [ + "stats", + "graphics" + ], + "Suggests": [ + "MASS", + "tweedie" + ], + "Description": "A collection of algorithms and functions to aid statistical modeling. Includes limiting dilution analysis (aka ELDA), growth curve comparisons, mixed linear models, heteroscedastic regression, inverse-Gaussian probability calculations, Gauss quadrature and a secure convergence algorithm for nonlinear models. Also includes advanced generalized linear model functions including Tweedie and Digamma distributional families, secure convergence and exact distributional calculations for unit deviances.", + "License": "GPL-2 | GPL-3", + "NeedsCompilation": "yes", + "Author": "Gordon Smyth [cre, aut], Lizhong Chen [aut], Yifang Hu [ctb], Peter Dunn [ctb], Belinda Phipson [ctb], Yunshun Chen [ctb]", + "Repository": "https://packagemanager.posit.co/cran/latest", + "Encoding": "UTF-8" + }, + "stringi": { + "Package": "stringi", + "Version": "1.8.7", + "Source": "Repository", + "Date": "2025-03-27", + "Title": "Fast and Portable Character String Processing Facilities", + "Description": "A collection of character string/text/natural language processing tools for pattern searching (e.g., with 'Java'-like regular expressions or the 'Unicode' collation algorithm), random string generation, case mapping, string transliteration, concatenation, sorting, padding, wrapping, Unicode normalisation, date-time formatting and parsing, and many more. They are fast, consistent, convenient, and - thanks to 'ICU' (International Components for Unicode) - portable across all locales and platforms. Documentation about 'stringi' is provided via its website at and the paper by Gagolewski (2022, ).", + "URL": "https://stringi.gagolewski.com/, https://github.com/gagolews/stringi, https://icu.unicode.org/", + "BugReports": "https://github.com/gagolews/stringi/issues", + "SystemRequirements": "ICU4C (>= 61, optional)", + "Type": "Package", + "Depends": [ + "R (>= 3.4)" + ], + "Imports": [ + "tools", + "utils", + "stats" + ], + "Biarch": "TRUE", + "License": "file LICENSE", + "Authors@R": "c(person(given = \"Marek\", family = \"Gagolewski\", role = c(\"aut\", \"cre\", \"cph\"), email = \"marek@gagolewski.com\", comment = c(ORCID = \"0000-0003-0637-6028\")), person(given = \"Bartek\", family = \"Tartanus\", role = \"ctb\"), person(\"Unicode, Inc. and others\", role=\"ctb\", comment = \"ICU4C source code, Unicode Character Database\") )", + "RoxygenNote": "7.3.2", + "Encoding": "UTF-8", + "NeedsCompilation": "yes", + "Author": "Marek Gagolewski [aut, cre, cph] (), Bartek Tartanus [ctb], Unicode, Inc. and others [ctb] (ICU4C source code, Unicode Character Database)", + "Maintainer": "Marek Gagolewski ", + "License_is_FOSS": "yes", + "Repository": "https://packagemanager.posit.co/cran/latest" + }, + "stringr": { + "Package": "stringr", + "Version": "1.6.0", + "Source": "Repository", + "Title": "Simple, Consistent Wrappers for Common String Operations", + "Authors@R": "c( person(\"Hadley\", \"Wickham\", , \"hadley@posit.co\", role = c(\"aut\", \"cre\", \"cph\")), person(\"Posit Software, PBC\", role = c(\"cph\", \"fnd\")) )", + "Description": "A consistent, simple and easy to use set of wrappers around the fantastic 'stringi' package. All function and argument names (and positions) are consistent, all functions deal with \"NA\"'s and zero length vectors in the same way, and the output from one function is easy to feed into the input of another.", + "License": "MIT + file LICENSE", + "URL": "https://stringr.tidyverse.org, https://github.com/tidyverse/stringr", + "BugReports": "https://github.com/tidyverse/stringr/issues", + "Depends": [ + "R (>= 4.1.0)" + ], + "Imports": [ + "cli", + "glue (>= 1.6.1)", + "lifecycle (>= 1.0.3)", + "magrittr", + "rlang (>= 1.0.0)", + "stringi (>= 1.5.3)", + "vctrs (>= 0.4.0)" + ], + "Suggests": [ + "covr", + "dplyr", + "gt", + "htmltools", + "htmlwidgets", + "knitr", + "rmarkdown", + "testthat (>= 3.0.0)", + "tibble" + ], + "VignetteBuilder": "knitr", + "Config/Needs/website": "tidyverse/tidytemplate", + "Config/potools/style": "explicit", + "Config/testthat/edition": "3", + "Encoding": "UTF-8", + "LazyData": "true", + "RoxygenNote": "7.3.3", + "NeedsCompilation": "no", + "Author": "Hadley Wickham [aut, cre, cph], Posit Software, PBC [cph, fnd]", + "Maintainer": "Hadley Wickham ", + "Repository": "https://packagemanager.posit.co/cran/latest" + }, + "survival": { + "Package": "survival", + "Version": "3.8-3", + "Source": "Repository", + "Title": "Survival Analysis", + "Priority": "recommended", + "Date": "2024-12-17", + "Depends": [ + "R (>= 3.5.0)" + ], + "Imports": [ + "graphics", + "Matrix", + "methods", + "splines", + "stats", + "utils" + ], + "LazyData": "Yes", + "LazyDataCompression": "xz", + "ByteCompile": "Yes", + "Authors@R": "c(person(c(\"Terry\", \"M\"), \"Therneau\", email=\"therneau.terry@mayo.edu\", role=c(\"aut\", \"cre\")), person(\"Thomas\", \"Lumley\", role=c(\"ctb\", \"trl\"), comment=\"original S->R port and R maintainer until 2009\"), person(\"Atkinson\", \"Elizabeth\", role=\"ctb\"), person(\"Crowson\", \"Cynthia\", role=\"ctb\"))", + "Description": "Contains the core survival analysis routines, including definition of Surv objects, Kaplan-Meier and Aalen-Johansen (multi-state) curves, Cox models, and parametric accelerated failure time models.", + "License": "LGPL (>= 2)", + "URL": "https://github.com/therneau/survival", + "NeedsCompilation": "yes", + "Author": "Terry M Therneau [aut, cre], Thomas Lumley [ctb, trl] (original S->R port and R maintainer until 2009), Atkinson Elizabeth [ctb], Crowson Cynthia [ctb]", + "Maintainer": "Terry M Therneau ", + "Repository": "CRAN" + }, + "sys": { + "Package": "sys", + "Version": "3.4.3", + "Source": "Repository", + "Type": "Package", + "Title": "Powerful and Reliable Tools for Running System Commands in R", + "Authors@R": "c(person(\"Jeroen\", \"Ooms\", role = c(\"aut\", \"cre\"), email = \"jeroenooms@gmail.com\", comment = c(ORCID = \"0000-0002-4035-0289\")), person(\"Gábor\", \"Csárdi\", , \"csardi.gabor@gmail.com\", role = \"ctb\"))", + "Description": "Drop-in replacements for the base system2() function with fine control and consistent behavior across platforms. Supports clean interruption, timeout, background tasks, and streaming STDIN / STDOUT / STDERR over binary or text connections. Arguments on Windows automatically get encoded and quoted to work on different locales.", + "License": "MIT + file LICENSE", + "URL": "https://jeroen.r-universe.dev/sys", + "BugReports": "https://github.com/jeroen/sys/issues", + "Encoding": "UTF-8", + "RoxygenNote": "7.1.1", + "Suggests": [ + "unix (>= 1.4)", + "spelling", + "testthat" + ], + "Language": "en-US", + "NeedsCompilation": "yes", + "Author": "Jeroen Ooms [aut, cre] (), Gábor Csárdi [ctb]", + "Maintainer": "Jeroen Ooms ", + "Repository": "https://packagemanager.posit.co/cran/latest" + }, + "systemfonts": { + "Package": "systemfonts", + "Version": "1.3.1", + "Source": "Repository", + "Type": "Package", + "Title": "System Native Font Finding", + "Authors@R": "c( person(\"Thomas Lin\", \"Pedersen\", , \"thomas.pedersen@posit.co\", role = c(\"aut\", \"cre\"), comment = c(ORCID = \"0000-0002-5147-4711\")), person(\"Jeroen\", \"Ooms\", , \"jeroen@berkeley.edu\", role = \"aut\", comment = c(ORCID = \"0000-0002-4035-0289\")), person(\"Devon\", \"Govett\", role = \"aut\", comment = \"Author of font-manager\"), person(\"Posit Software, PBC\", role = c(\"cph\", \"fnd\"), comment = c(ROR = \"03wc8by49\")) )", + "Description": "Provides system native access to the font catalogue. As font handling varies between systems it is difficult to correctly locate installed fonts across different operating systems. The 'systemfonts' package provides bindings to the native libraries on Windows, macOS and Linux for finding font files that can then be used further by e.g. graphic devices. The main use is intended to be from compiled code but 'systemfonts' also provides access from R.", + "License": "MIT + file LICENSE", + "URL": "https://github.com/r-lib/systemfonts, https://systemfonts.r-lib.org", + "BugReports": "https://github.com/r-lib/systemfonts/issues", + "Depends": [ + "R (>= 3.2.0)" + ], + "Imports": [ + "base64enc", + "grid", + "jsonlite", + "lifecycle", + "tools", + "utils" + ], + "Suggests": [ + "covr", + "farver", + "ggplot2", + "graphics", + "knitr", + "ragg", + "rmarkdown", + "svglite", + "testthat (>= 2.1.0)" + ], + "LinkingTo": [ + "cpp11 (>= 0.2.1)" + ], + "VignetteBuilder": "knitr", + "Config/build/compilation-database": "true", + "Config/Needs/website": "tidyverse/tidytemplate", + "Config/usethis/last-upkeep": "2025-04-23", + "Encoding": "UTF-8", + "RoxygenNote": "7.3.2", + "SystemRequirements": "fontconfig, freetype2", + "NeedsCompilation": "yes", + "Author": "Thomas Lin Pedersen [aut, cre] (ORCID: ), Jeroen Ooms [aut] (ORCID: ), Devon Govett [aut] (Author of font-manager), Posit Software, PBC [cph, fnd] (ROR: )", + "Maintainer": "Thomas Lin Pedersen ", + "Repository": "https://packagemanager.posit.co/cran/latest" + }, + "textshaping": { + "Package": "textshaping", + "Version": "1.0.4", + "Source": "Repository", + "Title": "Bindings to the 'HarfBuzz' and 'Fribidi' Libraries for Text Shaping", + "Authors@R": "c( person(\"Thomas Lin\", \"Pedersen\", , \"thomas.pedersen@posit.co\", role = c(\"cre\", \"aut\"), comment = c(ORCID = \"0000-0002-5147-4711\")), person(\"Posit Software, PBC\", role = c(\"cph\", \"fnd\"), comment = c(ROR = \"03wc8by49\")) )", + "Description": "Provides access to the text shaping functionality in the 'HarfBuzz' library and the bidirectional algorithm in the 'Fribidi' library. 'textshaping' is a low-level utility package mainly for graphic devices that expands upon the font tool-set provided by the 'systemfonts' package.", + "License": "MIT + file LICENSE", + "URL": "https://github.com/r-lib/textshaping", + "BugReports": "https://github.com/r-lib/textshaping/issues", + "Depends": [ + "R (>= 3.2.0)" + ], + "Imports": [ + "lifecycle", + "stats", + "stringi", + "systemfonts (>= 1.3.0)", + "utils" + ], + "Suggests": [ + "covr", + "grDevices", + "grid", + "knitr", + "rmarkdown", + "testthat (>= 3.0.0)" + ], + "LinkingTo": [ + "cpp11 (>= 0.2.1)", + "systemfonts (>= 1.0.0)" + ], + "VignetteBuilder": "knitr", + "Config/build/compilation-database": "true", + "Config/testthat/edition": "3", + "Config/usethis/last-upkeep": "2025-04-23", + "Encoding": "UTF-8", + "RoxygenNote": "7.3.2", + "SystemRequirements": "freetype2, harfbuzz, fribidi", + "NeedsCompilation": "yes", + "Author": "Thomas Lin Pedersen [cre, aut] (ORCID: ), Posit Software, PBC [cph, fnd] (ROR: )", + "Maintainer": "Thomas Lin Pedersen ", + "Repository": "https://packagemanager.posit.co/cran/latest" + }, + "tibble": { + "Package": "tibble", + "Version": "3.3.1", + "Source": "Repository", + "Title": "Simple Data Frames", + "Authors@R": "c( person(\"Kirill\", \"Müller\", , \"kirill@cynkra.com\", role = c(\"aut\", \"cre\"), comment = c(ORCID = \"0000-0002-1416-3412\")), person(\"Hadley\", \"Wickham\", , \"hadley@rstudio.com\", role = \"aut\"), person(\"Romain\", \"Francois\", , \"romain@r-enthusiasts.com\", role = \"ctb\"), person(\"Jennifer\", \"Bryan\", , \"jenny@rstudio.com\", role = \"ctb\"), person(\"Posit Software, PBC\", role = c(\"cph\", \"fnd\"), comment = c(ROR = \"03wc8by49\")) )", + "Description": "Provides a 'tbl_df' class (the 'tibble') with stricter checking and better formatting than the traditional data frame.", + "License": "MIT + file LICENSE", + "URL": "https://tibble.tidyverse.org/, https://github.com/tidyverse/tibble", + "BugReports": "https://github.com/tidyverse/tibble/issues", + "Depends": [ + "R (>= 3.4.0)" + ], + "Imports": [ + "cli", + "lifecycle (>= 1.0.0)", + "magrittr", + "methods", + "pillar (>= 1.8.1)", + "pkgconfig", + "rlang (>= 1.0.2)", + "utils", + "vctrs (>= 0.5.0)" + ], + "Suggests": [ + "bench", + "bit64", + "blob", + "brio", + "callr", + "DiagrammeR", + "dplyr", + "evaluate", + "formattable", + "ggplot2", + "here", + "hms", + "htmltools", + "knitr", + "lubridate", + "nycflights13", + "pkgload", + "purrr", + "rmarkdown", + "stringi", + "testthat (>= 3.0.2)", + "tidyr", + "withr" + ], + "VignetteBuilder": "knitr", + "Config/autostyle/rmd": "false", + "Config/autostyle/scope": "line_breaks", + "Config/autostyle/strict": "true", + "Config/Needs/website": "tidyverse/tidytemplate", + "Config/testthat/edition": "3", + "Config/testthat/parallel": "true", + "Config/testthat/start-first": "vignette-formats, as_tibble, add, invariants", + "Config/usethis/last-upkeep": "2025-06-07", + "Encoding": "UTF-8", + "RoxygenNote": "7.3.3.9000", + "NeedsCompilation": "yes", + "Author": "Kirill Müller [aut, cre] (ORCID: ), Hadley Wickham [aut], Romain Francois [ctb], Jennifer Bryan [ctb], Posit Software, PBC [cph, fnd] (ROR: )", + "Maintainer": "Kirill Müller ", + "Repository": "CRAN" + }, + "tidydr": { + "Package": "tidydr", + "Version": "0.0.6", + "Source": "Repository", + "Title": "Unify Dimensionality Reduction Results", + "Authors@R": "c( person(\"Guangchuang\", \"Yu\", , \"guangchuangyu@gmail.com\", role = c(\"aut\", \"cre\", \"cph\"), comment = c(ORCID = \"0000-0002-6485-8781\")), person(\"Shuangbin\", \"Xu\", , \"xshuangbin@163.com\", role = \"aut\", comment = c(ORCID = \"0000-0003-3513-5362\")), person(\"Erqiang\", \"Hu\", , \"13766876214@163.com\", role = \"ctb\") )", + "Description": "Dimensionality reduction (DR) is widely used in many domain for analyzing and visualizing high-dimensional data. 'tidydr' provides uniform output and is compatible with multiple methods, including 'prcomp', 'mds', 'Rtsne'. etc.", + "Imports": [ + "cluster", + "ggfun", + "ggplot2", + "grid", + "rlang", + "stats", + "utils" + ], + "Suggests": [ + "knitr", + "rmarkdown", + "prettydoc", + "SingleCellExperiment", + "SummarizedExperiment" + ], + "VignetteBuilder": "knitr", + "ByteCompile": "true", + "License": "Artistic-2.0", + "URL": "https://github.com/YuLab-SMU/tidydr/", + "BugReports": "https://github.com/YuLab-SMU/tidydr/issues", + "Encoding": "UTF-8", + "RoxygenNote": "7.3.2", + "NeedsCompilation": "no", + "Author": "Guangchuang Yu [aut, cre, cph] (ORCID: ), Shuangbin Xu [aut] (ORCID: ), Erqiang Hu [ctb]", + "Maintainer": "Guangchuang Yu ", + "Repository": "CRAN" + }, + "tidyr": { + "Package": "tidyr", + "Version": "1.3.2", + "Source": "Repository", + "Title": "Tidy Messy Data", + "Authors@R": "c( person(\"Hadley\", \"Wickham\", , \"hadley@posit.co\", role = c(\"aut\", \"cre\")), person(\"Davis\", \"Vaughan\", , \"davis@posit.co\", role = \"aut\"), person(\"Maximilian\", \"Girlich\", role = \"aut\"), person(\"Kevin\", \"Ushey\", , \"kevin@posit.co\", role = \"ctb\"), person(\"Posit Software, PBC\", role = c(\"cph\", \"fnd\")) )", + "Description": "Tools to help to create tidy data, where each column is a variable, each row is an observation, and each cell contains a single value. 'tidyr' contains tools for changing the shape (pivoting) and hierarchy (nesting and 'unnesting') of a dataset, turning deeply nested lists into rectangular data frames ('rectangling'), and extracting values out of string columns. It also includes tools for working with missing values (both implicit and explicit).", + "License": "MIT + file LICENSE", + "URL": "https://tidyr.tidyverse.org, https://github.com/tidyverse/tidyr", + "BugReports": "https://github.com/tidyverse/tidyr/issues", + "Depends": [ + "R (>= 4.1.0)" + ], + "Imports": [ + "cli (>= 3.4.1)", + "dplyr (>= 1.1.0)", + "glue", + "lifecycle (>= 1.0.3)", + "magrittr", + "purrr (>= 1.0.1)", + "rlang (>= 1.1.1)", + "stringr (>= 1.5.0)", + "tibble (>= 2.1.1)", + "tidyselect (>= 1.2.1)", + "utils", + "vctrs (>= 0.5.2)" + ], + "Suggests": [ + "covr", + "data.table", + "knitr", + "readr", + "repurrrsive (>= 1.1.0)", + "rmarkdown", + "testthat (>= 3.0.0)" + ], + "LinkingTo": [ + "cpp11 (>= 0.4.0)" + ], + "VignetteBuilder": "knitr", + "Config/build/compilation-database": "true", + "Config/Needs/website": "tidyverse/tidytemplate", + "Config/testthat/edition": "3", + "Encoding": "UTF-8", + "LazyData": "true", + "RoxygenNote": "7.3.3", + "NeedsCompilation": "yes", + "Author": "Hadley Wickham [aut, cre], Davis Vaughan [aut], Maximilian Girlich [aut], Kevin Ushey [ctb], Posit Software, PBC [cph, fnd]", + "Maintainer": "Hadley Wickham ", + "Repository": "CRAN" + }, + "tidyselect": { + "Package": "tidyselect", + "Version": "1.2.1", + "Source": "Repository", + "Title": "Select from a Set of Strings", + "Authors@R": "c( person(\"Lionel\", \"Henry\", , \"lionel@posit.co\", role = c(\"aut\", \"cre\")), person(\"Hadley\", \"Wickham\", , \"hadley@posit.co\", role = \"aut\"), person(\"Posit Software, PBC\", role = c(\"cph\", \"fnd\")) )", + "Description": "A backend for the selecting functions of the 'tidyverse'. It makes it easy to implement select-like functions in your own packages in a way that is consistent with other 'tidyverse' interfaces for selection.", + "License": "MIT + file LICENSE", + "URL": "https://tidyselect.r-lib.org, https://github.com/r-lib/tidyselect", + "BugReports": "https://github.com/r-lib/tidyselect/issues", + "Depends": [ + "R (>= 3.4)" + ], + "Imports": [ + "cli (>= 3.3.0)", + "glue (>= 1.3.0)", + "lifecycle (>= 1.0.3)", + "rlang (>= 1.0.4)", + "vctrs (>= 0.5.2)", + "withr" + ], + "Suggests": [ + "covr", + "crayon", + "dplyr", + "knitr", + "magrittr", + "rmarkdown", + "stringr", + "testthat (>= 3.1.1)", + "tibble (>= 2.1.3)" + ], + "VignetteBuilder": "knitr", + "ByteCompile": "true", + "Config/testthat/edition": "3", + "Config/Needs/website": "tidyverse/tidytemplate", + "Encoding": "UTF-8", + "RoxygenNote": "7.3.0.9000", + "NeedsCompilation": "yes", + "Author": "Lionel Henry [aut, cre], Hadley Wickham [aut], Posit Software, PBC [cph, fnd]", + "Maintainer": "Lionel Henry ", + "Repository": "https://packagemanager.posit.co/cran/latest" + }, + "tidytree": { + "Package": "tidytree", + "Version": "0.4.7", + "Source": "Repository", + "Title": "A Tidy Tool for Phylogenetic Tree Data Manipulation", + "Authors@R": "c( person(\"Guangchuang\", \"Yu\", email = \"guangchuangyu@gmail.com\", role = c(\"aut\", \"cre\", \"cph\"), comment = c(ORCID = \"0000-0002-6485-8781\")), person(\"Bradley\", \"Jones\", email = \"brj1@sfu.ca\", role = \"ctb\"), person(\"Zebulun\", \"Arendsee\", email = \"zbwrnz@gmail.com\", role = \"ctb\") )", + "Description": "Phylogenetic tree generally contains multiple components including node, edge, branch and associated data. 'tidytree' provides an approach to convert tree object to tidy data frame as well as provides tidy interfaces to manipulate tree data.", + "Depends": [ + "R (>= 3.4.0)" + ], + "Imports": [ + "ape", + "dplyr", + "lazyeval", + "magrittr", + "methods", + "rlang", + "tibble", + "tidyr", + "tidyselect", + "yulab.utils (>= 0.1.5)", + "pillar", + "cli" + ], + "Suggests": [ + "testthat", + "utils" + ], + "ByteCompile": "true", + "License": "Artistic-2.0", + "URL": "https://yulab-smu.top/contribution-tree-data/", + "BugReports": "https://github.com/YuLab-SMU/tidytree/issues", + "Encoding": "UTF-8", + "RoxygenNote": "7.3.3", + "NeedsCompilation": "no", + "Author": "Guangchuang Yu [aut, cre, cph] (ORCID: ), Bradley Jones [ctb], Zebulun Arendsee [ctb]", + "Maintainer": "Guangchuang Yu ", + "Repository": "CRAN" + }, + "tidyverse": { + "Package": "tidyverse", + "Version": "2.0.0", + "Source": "Repository", + "Title": "Easily Install and Load the 'Tidyverse'", + "Authors@R": "c( person(\"Hadley\", \"Wickham\", , \"hadley@rstudio.com\", role = c(\"aut\", \"cre\")), person(\"RStudio\", role = c(\"cph\", \"fnd\")) )", + "Description": "The 'tidyverse' is a set of packages that work in harmony because they share common data representations and 'API' design. This package is designed to make it easy to install and load multiple 'tidyverse' packages in a single step. Learn more about the 'tidyverse' at .", + "License": "MIT + file LICENSE", + "URL": "https://tidyverse.tidyverse.org, https://github.com/tidyverse/tidyverse", + "BugReports": "https://github.com/tidyverse/tidyverse/issues", + "Depends": [ + "R (>= 3.3)" + ], + "Imports": [ + "broom (>= 1.0.3)", + "conflicted (>= 1.2.0)", + "cli (>= 3.6.0)", + "dbplyr (>= 2.3.0)", + "dplyr (>= 1.1.0)", + "dtplyr (>= 1.2.2)", + "forcats (>= 1.0.0)", + "ggplot2 (>= 3.4.1)", + "googledrive (>= 2.0.0)", + "googlesheets4 (>= 1.0.1)", + "haven (>= 2.5.1)", + "hms (>= 1.1.2)", + "httr (>= 1.4.4)", + "jsonlite (>= 1.8.4)", + "lubridate (>= 1.9.2)", + "magrittr (>= 2.0.3)", + "modelr (>= 0.1.10)", + "pillar (>= 1.8.1)", + "purrr (>= 1.0.1)", + "ragg (>= 1.2.5)", + "readr (>= 2.1.4)", + "readxl (>= 1.4.2)", + "reprex (>= 2.0.2)", + "rlang (>= 1.0.6)", + "rstudioapi (>= 0.14)", + "rvest (>= 1.0.3)", + "stringr (>= 1.5.0)", + "tibble (>= 3.1.8)", + "tidyr (>= 1.3.0)", + "xml2 (>= 1.3.3)" + ], + "Suggests": [ + "covr (>= 3.6.1)", + "feather (>= 0.3.5)", + "glue (>= 1.6.2)", + "mockr (>= 0.2.0)", + "knitr (>= 1.41)", + "rmarkdown (>= 2.20)", + "testthat (>= 3.1.6)" + ], + "VignetteBuilder": "knitr", + "Config/Needs/website": "tidyverse/tidytemplate", + "Config/testthat/edition": "3", + "Encoding": "UTF-8", + "RoxygenNote": "7.2.3", + "NeedsCompilation": "no", + "Author": "Hadley Wickham [aut, cre], RStudio [cph, fnd]", + "Maintainer": "Hadley Wickham ", + "Repository": "CRAN" + }, + "timechange": { + "Package": "timechange", + "Version": "0.3.0", + "Source": "Repository", + "Title": "Efficient Manipulation of Date-Times", + "Authors@R": "c(person(\"Vitalie\", \"Spinu\", email = \"spinuvit@gmail.com\", role = c(\"aut\", \"cre\")), person(\"Google Inc.\", role = c(\"ctb\", \"cph\")))", + "Description": "Efficient routines for manipulation of date-time objects while accounting for time-zones and daylight saving times. The package includes utilities for updating of date-time components (year, month, day etc.), modification of time-zones, rounding of date-times, period addition and subtraction etc. Parts of the 'CCTZ' source code, released under the Apache 2.0 License, are included in this package. See for more details.", + "Depends": [ + "R (>= 3.3)" + ], + "License": "GPL (>= 3)", + "Encoding": "UTF-8", + "LinkingTo": [ + "cpp11 (>= 0.2.7)" + ], + "Suggests": [ + "testthat (>= 0.7.1.99)", + "knitr" + ], + "SystemRequirements": "A system with zoneinfo data (e.g. /usr/share/zoneinfo) as well as a recent-enough C++11 compiler (such as g++-4.8 or later). On Windows the zoneinfo included with R is used.", + "BugReports": "https://github.com/vspinu/timechange/issues", + "URL": "https://github.com/vspinu/timechange/", + "RoxygenNote": "7.2.1", + "NeedsCompilation": "yes", + "Author": "Vitalie Spinu [aut, cre], Google Inc. [ctb, cph]", + "Maintainer": "Vitalie Spinu ", + "Repository": "CRAN" + }, + "tinytex": { + "Package": "tinytex", + "Version": "0.58", + "Source": "Repository", + "Type": "Package", + "Title": "Helper Functions to Install and Maintain TeX Live, and Compile LaTeX Documents", + "Authors@R": "c( person(\"Yihui\", \"Xie\", role = c(\"aut\", \"cre\", \"cph\"), email = \"xie@yihui.name\", comment = c(ORCID = \"0000-0003-0645-5666\")), person(given = \"Posit Software, PBC\", role = c(\"cph\", \"fnd\")), person(\"Christophe\", \"Dervieux\", role = \"ctb\", comment = c(ORCID = \"0000-0003-4474-2498\")), person(\"Devon\", \"Ryan\", role = \"ctb\", email = \"dpryan79@gmail.com\", comment = c(ORCID = \"0000-0002-8549-0971\")), person(\"Ethan\", \"Heinzen\", role = \"ctb\"), person(\"Fernando\", \"Cagua\", role = \"ctb\"), person() )", + "Description": "Helper functions to install and maintain the 'LaTeX' distribution named 'TinyTeX' (), a lightweight, cross-platform, portable, and easy-to-maintain version of 'TeX Live'. This package also contains helper functions to compile 'LaTeX' documents, and install missing 'LaTeX' packages automatically.", + "Imports": [ + "xfun (>= 0.48)" + ], + "Suggests": [ + "testit", + "rstudioapi" + ], + "License": "MIT + file LICENSE", + "URL": "https://github.com/rstudio/tinytex", + "BugReports": "https://github.com/rstudio/tinytex/issues", + "Encoding": "UTF-8", + "RoxygenNote": "7.3.3", + "NeedsCompilation": "no", + "Author": "Yihui Xie [aut, cre, cph] (ORCID: ), Posit Software, PBC [cph, fnd], Christophe Dervieux [ctb] (ORCID: ), Devon Ryan [ctb] (ORCID: ), Ethan Heinzen [ctb], Fernando Cagua [ctb]", + "Maintainer": "Yihui Xie ", + "Repository": "CRAN" + }, + "treeio": { + "Package": "treeio", + "Version": "1.34.0", + "Source": "Bioconductor", + "Title": "Base Classes and Functions for Phylogenetic Tree Input and Output", + "Authors@R": "c( person(\"Guangchuang\", \"Yu\", email = \"guangchuangyu@gmail.com\", role = c(\"aut\", \"cre\"), comment = c(ORCID = \"0000-0002-6485-8781\")), person(\"Tommy Tsan-Yuk\", \"Lam\", email = \"tylam.tommy@gmail.com\", role = c(\"ctb\", \"ths\")), person(\"Shuangbin\", \"Xu\", email = \"xshuangbin@163.com\", role = \"ctb\", comment = c(ORCID=\"0000-0003-3513-5362\")), person(\"Bradley\", \"Jones\", email = \"brj1@sfu.ca\", role = \"ctb\"), person(\"Casey\", \"Dunn\", email = \"casey_dunn@brown.edu\", role = \"ctb\"), person(\"Tyler\", \"Bradley\", email = \"tcb85@drexel.edu\", role = \"ctb\"), person(\"Konstantinos\", \"Geles\", email = \"konstantinos.geles@studenti.unicz.it\", role = \"ctb\") )", + "Description": "'treeio' is an R package to make it easier to import and store phylogenetic tree with associated data; and to link external data from different sources to phylogeny. It also supports exporting phylogenetic tree with heterogeneous associated data to a single tree file and can be served as a platform for merging tree with associated data and converting file formats.", + "Depends": [ + "R (>= 4.1.0)" + ], + "Imports": [ + "ape", + "dplyr", + "jsonlite", + "magrittr", + "methods", + "rlang", + "stats", + "tibble", + "tidytree (>= 0.4.5)", + "utils", + "yulab.utils (>= 0.1.6)" + ], + "Suggests": [ + "Biostrings", + "cli", + "ggplot2", + "ggtree", + "igraph", + "knitr", + "rmarkdown", + "phangorn", + "prettydoc", + "purrr", + "testthat", + "tidyr", + "vroom", + "xml2", + "yaml" + ], + "VignetteBuilder": "knitr", + "ByteCompile": "true", + "License": "Artistic-2.0", + "Encoding": "UTF-8", + "URL": "https://yulab-smu.top/contribution-tree-data/", + "BugReports": "https://github.com/YuLab-SMU/treeio/issues", + "biocViews": "Software, Annotation, Clustering, DataImport, DataRepresentation, Alignment, MultipleSequenceAlignment, Phylogenetics", + "RoxygenNote": "7.3.2", + "git_url": "https://git.bioconductor.org/packages/treeio", + "git_branch": "RELEASE_3_22", + "git_last_commit": "68b1d91", + "git_last_commit_date": "2025-10-29", + "Repository": "Bioconductor 3.22", + "NeedsCompilation": "no", + "Author": "Guangchuang Yu [aut, cre] (ORCID: ), Tommy Tsan-Yuk Lam [ctb, ths], Shuangbin Xu [ctb] (ORCID: ), Bradley Jones [ctb], Casey Dunn [ctb], Tyler Bradley [ctb], Konstantinos Geles [ctb]", + "Maintainer": "Guangchuang Yu " + }, + "truncnorm": { + "Package": "truncnorm", + "Version": "1.0-9", + "Source": "Repository", + "Title": "Truncated Normal Distribution", + "Description": "Density, probability, quantile and random number generation functions for the truncated normal distribution.", + "Authors@R": "c(person(\"Olaf\", \"Mersmann\", role=c(\"aut\", \"cre\"), email=\"olafm@p-value.net\"), person(\"Heike\", \"Trautmann\", role=c(\"aut\")), person(\"Detlef\", \"Steuer\", role=c(\"aut\")), person(\"Björn\", \"Bornkamp\", role=c(\"aut\")))", + "URL": "https://github.com/olafmersmann/truncnorm", + "BugReports": "https://github.com/olafmersmann/truncnorm/issues", + "Depends": [ + "R (>= 3.4.0)" + ], + "Suggests": [ + "testthat" + ], + "License": "GPL (>= 2)", + "Encoding": "UTF-8", + "NeedsCompilation": "yes", + "Author": "Olaf Mersmann [aut, cre], Heike Trautmann [aut], Detlef Steuer [aut], Björn Bornkamp [aut]", + "Maintainer": "Olaf Mersmann ", + "Repository": "CRAN" + }, + "tweenr": { + "Package": "tweenr", + "Version": "2.0.3", + "Source": "Repository", + "Type": "Package", + "Title": "Interpolate Data for Smooth Animations", + "Authors@R": "c(person(given = \"Thomas Lin\", family = \"Pedersen\", role = c(\"aut\", \"cre\"), email = \"thomasp85@gmail.com\", comment = c(ORCID = \"0000-0002-5147-4711\")))", + "Maintainer": "Thomas Lin Pedersen ", + "Description": "In order to create smooth animation between states of data, tweening is necessary. This package provides a range of functions for creating tweened data that can be used as basis for animation. Furthermore it adds a number of vectorized interpolaters for common R data types such as numeric, date and colour.", + "URL": "https://github.com/thomasp85/tweenr", + "BugReports": "https://github.com/thomasp85/tweenr/issues", + "License": "MIT + file LICENSE", + "Encoding": "UTF-8", + "Depends": [ + "R (>= 3.2.0)" + ], + "Imports": [ + "farver", + "magrittr", + "rlang", + "vctrs" + ], + "LinkingTo": [ + "cpp11 (>= 0.4.2)" + ], + "RoxygenNote": "7.2.3", + "Suggests": [ + "testthat", + "covr" + ], + "NeedsCompilation": "yes", + "Author": "Thomas Lin Pedersen [aut, cre] ()", + "Repository": "https://packagemanager.posit.co/cran/latest" + }, + "txdbmaker": { + "Package": "txdbmaker", + "Version": "1.6.2", + "Source": "Bioconductor", + "Title": "Tools for making TxDb objects from genomic annotations", + "Description": "A set of tools for making TxDb objects from genomic annotations from various sources (e.g. UCSC, Ensembl, and GFF files). These tools allow the user to download the genomic locations of transcripts, exons, and CDS, for a given assembly, and to import them in a TxDb object. TxDb objects are implemented in the GenomicFeatures package, together with flexible methods for extracting the desired features in convenient formats.", + "biocViews": "Infrastructure, DataImport, Annotation, GenomeAnnotation, GenomeAssembly, Genetics, Sequencing", + "URL": "https://bioconductor.org/packages/txdbmaker", + "BugReports": "https://github.com/Bioconductor/txdbmaker/issues", + "License": "Artistic-2.0", + "Encoding": "UTF-8", + "Authors@R": "c( person(\"H.\", \"Pagès\", role=c(\"aut\", \"cre\"), email=\"hpages.on.github@gmail.com\"), person(\"M.\", \"Carlson\", role=\"aut\"), person(\"P.\", \"Aboyoun\", role=\"aut\"), person(\"S.\", \"Falcon\", role=\"aut\"), person(\"M.\", \"Morgan\", role=\"aut\"), person(\"R.\", \"Castelo\", role=\"ctb\"), person(\"M.\", \"Lawrence\", role=\"ctb\"), person(\"I-Hsuan\", \"Lin\", role=\"ctb\"), person(\"J.\", \"MacDonald\", role=\"ctb\"), person(\"M.\", \"Ramos\", role=\"ctb\"), person(\"S.\", \"Saini\", role=\"ctb\"), person(\"L.\", \"Shepherd\", role=\"ctb\"))", + "Depends": [ + "BiocGenerics", + "S4Vectors (>= 0.47.6)", + "Seqinfo", + "GenomicRanges (>= 1.61.1)", + "GenomicFeatures (>= 1.61.4)" + ], + "Imports": [ + "methods", + "utils", + "stats", + "tools", + "httr", + "rjson", + "DBI", + "RSQLite (>= 2.0)", + "IRanges", + "UCSC.utils (>= 1.6.1)", + "GenomeInfoDb", + "AnnotationDbi", + "Biobase", + "BiocIO", + "rtracklayer", + "biomaRt (>= 2.59.1)" + ], + "Suggests": [ + "RMariaDB", + "ensembldb", + "GenomeInfoDbData", + "RUnit", + "BiocStyle", + "knitr" + ], + "VignetteBuilder": "knitr", + "Collate": "utils.R Ensembl-utils.R findCompatibleMarts.R TxDb-schema.R TxDb-CREATE-TABLE-helpers.R makeTxDb.R makeTxDbFromUCSC.R makeTxDbFromBiomart.R makeTxDbFromEnsembl.R makeTxDbFromGRanges.R makeTxDbFromGFF.R makeFeatureDbFromUCSC.R makeTxDbPackage.R zzz.R", + "git_url": "https://git.bioconductor.org/packages/txdbmaker", + "git_branch": "RELEASE_3_22", + "git_last_commit": "75a238d", + "git_last_commit_date": "2025-12-08", + "Repository": "Bioconductor 3.22", + "NeedsCompilation": "no", + "Author": "H. Pagès [aut, cre], M. Carlson [aut], P. Aboyoun [aut], S. Falcon [aut], M. Morgan [aut], R. Castelo [ctb], M. Lawrence [ctb], I-Hsuan Lin [ctb], J. MacDonald [ctb], M. Ramos [ctb], S. Saini [ctb], L. Shepherd [ctb]", + "Maintainer": "H. Pagès " + }, + "tximeta": { + "Package": "tximeta", + "Version": "1.28.1", + "Source": "Bioconductor", + "Title": "Transcript Quantification Import with Automatic Metadata", + "Description": "Transcript quantification import from Salmon and other quantifiers with automatic attachment of transcript ranges and release information, and other associated metadata. De novo transcriptomes can be linked to the appropriate sources with linkedTxomes and shared for computational reproducibility.", + "Authors@R": "c( person(\"Michael\", \"Love\", email=\"michaelisaiahlove@gmail.com\", role = c(\"aut\",\"cre\")), person(\"Charlotte\", \"Soneson\", role = c(\"aut\",\"ctb\")), person(\"Peter\", \"Hickey\", role = c(\"aut\",\"ctb\")), person(\"Rob\", \"Patro\", role = c(\"aut\",\"ctb\")), person(\"NIH NHGRI\", role=\"fnd\"), person(\"CZI\", role=\"fnd\") )", + "Maintainer": "Michael Love ", + "License": "GPL-2", + "VignetteBuilder": "knitr, rmarkdown", + "Depends": [ + "R (>= 4.1.0)" + ], + "Imports": [ + "SummarizedExperiment (>= 1.39.1)", + "tximport", + "jsonlite", + "S4Vectors", + "IRanges", + "GenomicRanges (>= 1.61.1)", + "AnnotationDbi", + "GenomicFeatures", + "txdbmaker", + "ensembldb", + "BiocFileCache", + "AnnotationHub", + "Biostrings", + "tibble", + "Seqinfo", + "tools", + "utils", + "methods", + "Matrix" + ], + "Suggests": [ + "knitr", + "rmarkdown", + "testthat", + "tximportData (>= 1.37.5)", + "org.Dm.eg.db", + "DESeq2", + "edgeR", + "limma", + "devtools", + "macrophage" + ], + "URL": "https://github.com/thelovelab/tximeta", + "biocViews": "Annotation, GenomeAnnotation, DataImport, Preprocessing, RNASeq, SingleCell, Transcriptomics, Transcription, GeneExpression, FunctionalGenomics, ReproducibleResearch, ReportWriting, ImmunoOncology", + "Roxygen": "list(markdown = TRUE)", + "RoxygenNote": "7.3.3", + "Encoding": "UTF-8", + "Config/pak/sysreqs": "make libbz2-dev libicu-dev liblzma-dev libpng-dev libxml2-dev libssl-dev xz-utils zlib1g-dev", + "Repository": "https://bioc-release.r-universe.dev", + "RemoteUrl": "https://github.com/bioc/tximeta", + "RemoteRef": "RELEASE_3_22", + "RemoteSha": "3f6ef540b9da5f7ac57404cd932c07d6432ca2bf", + "NeedsCompilation": "no", + "Author": "Michael Love [aut, cre], Charlotte Soneson [aut, ctb], Peter Hickey [aut, ctb], Rob Patro [aut, ctb], NIH NHGRI [fnd], CZI [fnd]" + }, + "tximport": { + "Package": "tximport", + "Version": "1.38.2", + "Source": "Bioconductor", + "Title": "Import and summarize transcript-level estimates for transcript- and gene-level analysis", + "Description": "Imports transcript-level abundance, estimated counts and transcript lengths, and summarizes into matrices for use with downstream gene-level analysis packages. Average transcript length, weighted by sample-specific transcript abundance estimates, is provided as a matrix which can be used as an offset for different expression of gene-level counts.", + "Author": "Michael Love [cre,aut], Charlotte Soneson [aut], Mark Robinson [aut], Rob Patro [ctb], Andrew Parker Morgan [ctb], Ryan C. Thompson [ctb], Matt Shirley [ctb], Avi Srivastava [ctb]", + "Maintainer": "Michael Love ", + "License": "LGPL (>=2)", + "VignetteBuilder": "knitr", + "Imports": [ + "utils", + "stats", + "methods" + ], + "Suggests": [ + "knitr", + "rmarkdown", + "testthat", + "tximportData", + "TxDb.Hsapiens.UCSC.hg19.knownGene", + "readr (>= 0.2.2)", + "arrow", + "limma", + "edgeR", + "DESeq2 (>= 1.11.6)", + "rhdf5", + "jsonlite", + "matrixStats", + "Matrix", + "eds" + ], + "URL": "https://github.com/thelovelab/tximport", + "biocViews": "DataImport, Preprocessing, RNASeq, Transcriptomics, Transcription, GeneExpression, ImmunoOncology", + "RoxygenNote": "7.2.3", + "NeedsCompilation": "no", + "Encoding": "UTF-8", + "Repository": "https://bioc-release.r-universe.dev", + "RemoteUrl": "https://github.com/bioc/tximport", + "RemoteRef": "RELEASE_3_22", + "RemoteSha": "1c6a0bb7ba89727d227946700dffe2c436b6e11e" + }, + "tzdb": { + "Package": "tzdb", + "Version": "0.5.0", + "Source": "Repository", + "Title": "Time Zone Database Information", + "Authors@R": "c( person(\"Davis\", \"Vaughan\", , \"davis@posit.co\", role = c(\"aut\", \"cre\")), person(\"Howard\", \"Hinnant\", role = \"cph\", comment = \"Author of the included date library\"), person(\"Posit Software, PBC\", role = c(\"cph\", \"fnd\")) )", + "Description": "Provides an up-to-date copy of the Internet Assigned Numbers Authority (IANA) Time Zone Database. It is updated periodically to reflect changes made by political bodies to time zone boundaries, UTC offsets, and daylight saving time rules. Additionally, this package provides a C++ interface for working with the 'date' library. 'date' provides comprehensive support for working with dates and date-times, which this package exposes to make it easier for other R packages to utilize. Headers are provided for calendar specific calculations, along with a limited interface for time zone manipulations.", + "License": "MIT + file LICENSE", + "URL": "https://tzdb.r-lib.org, https://github.com/r-lib/tzdb", + "BugReports": "https://github.com/r-lib/tzdb/issues", + "Depends": [ + "R (>= 4.0.0)" + ], + "Suggests": [ + "covr", + "testthat (>= 3.0.0)" + ], + "LinkingTo": [ + "cpp11 (>= 0.5.2)" + ], + "Biarch": "yes", + "Config/Needs/website": "tidyverse/tidytemplate", + "Config/testthat/edition": "3", + "Encoding": "UTF-8", + "RoxygenNote": "7.3.2", + "NeedsCompilation": "yes", + "Author": "Davis Vaughan [aut, cre], Howard Hinnant [cph] (Author of the included date library), Posit Software, PBC [cph, fnd]", + "Maintainer": "Davis Vaughan ", + "Repository": "https://packagemanager.posit.co/cran/latest" + }, + "umap": { + "Package": "umap", + "Version": "0.2.10.0", + "Source": "Repository", + "Title": "Uniform Manifold Approximation and Projection", + "Authors@R": "person(\"Tomasz\", \"Konopka\", , \"tokonopka@gmail.com\", role = c(\"aut\", \"cre\"))", + "Author": "Tomasz Konopka [aut, cre]", + "Maintainer": "Tomasz Konopka ", + "Description": "Uniform manifold approximation and projection is a technique for dimension reduction. The algorithm was described by McInnes and Healy (2018) in . This package provides an interface for two implementations. One is written from scratch, including components for nearest-neighbor search and for embedding. The second implementation is a wrapper for 'python' package 'umap-learn' (requires separate installation, see vignette for more details).", + "Depends": [ + "R (>= 3.6.0)" + ], + "Imports": [ + "Matrix", + "methods", + "openssl", + "reticulate", + "Rcpp (>= 0.12.6)", + "RSpectra", + "stats" + ], + "License": "MIT + file LICENSE", + "URL": "https://github.com/tkonopka/umap", + "BugReports": "https://github.com/tkonopka/umap/issues", + "LinkingTo": [ + "Rcpp" + ], + "Suggests": [ + "knitr", + "rmarkdown", + "testthat" + ], + "VignetteBuilder": "knitr", + "Encoding": "UTF-8", + "RoxygenNote": "7.1.2", + "NeedsCompilation": "yes", + "Repository": "CRAN" + }, + "utf8": { + "Package": "utf8", + "Version": "1.2.6", + "Source": "Repository", + "Title": "Unicode Text Processing", + "Authors@R": "c(person(given = c(\"Patrick\", \"O.\"), family = \"Perry\", role = c(\"aut\", \"cph\")), person(given = \"Kirill\", family = \"M\\u00fcller\", role = \"cre\", email = \"kirill@cynkra.com\", comment = c(ORCID = \"0000-0002-1416-3412\")), person(given = \"Unicode, Inc.\", role = c(\"cph\", \"dtc\"), comment = \"Unicode Character Database\"))", + "Description": "Process and print 'UTF-8' encoded international text (Unicode). Input, validate, normalize, encode, format, and display.", + "License": "Apache License (== 2.0) | file LICENSE", + "URL": "https://krlmlr.github.io/utf8/, https://github.com/krlmlr/utf8", + "BugReports": "https://github.com/krlmlr/utf8/issues", + "Depends": [ + "R (>= 2.10)" + ], + "Suggests": [ + "cli", + "covr", + "knitr", + "rlang", + "rmarkdown", + "testthat (>= 3.0.0)", + "withr" + ], + "VignetteBuilder": "knitr, rmarkdown", + "Config/testthat/edition": "3", + "Encoding": "UTF-8", + "RoxygenNote": "7.3.2.9000", + "NeedsCompilation": "yes", + "Author": "Patrick O. Perry [aut, cph], Kirill Müller [cre] (ORCID: ), Unicode, Inc. [cph, dtc] (Unicode Character Database)", + "Maintainer": "Kirill Müller ", + "Repository": "https://packagemanager.posit.co/cran/latest" + }, + "uuid": { + "Package": "uuid", + "Version": "1.2-1", + "Source": "Repository", + "Title": "Tools for Generating and Handling of UUIDs", + "Author": "Simon Urbanek [aut, cre, cph] (https://urbanek.org, ), Theodore Ts'o [aut, cph] (libuuid)", + "Maintainer": "Simon Urbanek ", + "Authors@R": "c(person(\"Simon\", \"Urbanek\", role=c(\"aut\",\"cre\",\"cph\"), email=\"Simon.Urbanek@r-project.org\", comment=c(\"https://urbanek.org\", ORCID=\"0000-0003-2297-1732\")), person(\"Theodore\",\"Ts'o\", email=\"tytso@thunk.org\", role=c(\"aut\",\"cph\"), comment=\"libuuid\"))", + "Depends": [ + "R (>= 2.9.0)" + ], + "Description": "Tools for generating and handling of UUIDs (Universally Unique Identifiers).", + "License": "MIT + file LICENSE", + "URL": "https://www.rforge.net/uuid", + "BugReports": "https://github.com/s-u/uuid/issues", + "NeedsCompilation": "yes", + "Repository": "RSPM", + "Encoding": "UTF-8" + }, + "uwot": { + "Package": "uwot", + "Version": "0.2.4", + "Source": "Repository", + "Title": "The Uniform Manifold Approximation and Projection (UMAP) Method for Dimensionality Reduction", + "Authors@R": "c( person(\"James\", \"Melville\", , \"jlmelville@gmail.com\", role = c(\"aut\", \"cre\", \"cph\")), person(\"Aaron\", \"Lun\", role = \"ctb\"), person(\"Mohamed Nadhir\", \"Djekidel\", role = \"ctb\"), person(\"Yuhan\", \"Hao\", role = \"ctb\"), person(\"Dirk\", \"Eddelbuettel\", role = \"ctb\"), person(\"Wouter\", \"van der Bijl\", role = \"ctb\"), person(\"Hugo\", \"Gruson\", role = \"ctb\") )", + "Description": "An implementation of the Uniform Manifold Approximation and Projection dimensionality reduction by McInnes et al. (2018) . It also provides means to transform new data and to carry out supervised dimensionality reduction. An implementation of the related LargeVis method of Tang et al. (2016) is also provided. This is a complete re-implementation in R (and C++, via the 'Rcpp' package): no Python installation is required. See the uwot website () for more documentation and examples.", + "License": "GPL (>= 3)", + "URL": "https://github.com/jlmelville/uwot, https://jlmelville.github.io/uwot/", + "BugReports": "https://github.com/jlmelville/uwot/issues", + "Depends": [ + "Matrix" + ], + "Imports": [ + "FNN", + "irlba", + "methods", + "Rcpp", + "RcppAnnoy (>= 0.0.17)", + "RSpectra" + ], + "Suggests": [ + "bigstatsr", + "covr", + "knitr", + "RcppHNSW", + "rmarkdown", + "rnndescent", + "testthat" + ], + "LinkingTo": [ + "dqrng", + "Rcpp", + "RcppAnnoy", + "RcppProgress" + ], + "VignetteBuilder": "knitr", + "Config/Needs/website": "rmarkdown", + "Encoding": "UTF-8", + "RoxygenNote": "7.3.3", + "NeedsCompilation": "yes", + "Author": "James Melville [aut, cre, cph], Aaron Lun [ctb], Mohamed Nadhir Djekidel [ctb], Yuhan Hao [ctb], Dirk Eddelbuettel [ctb], Wouter van der Bijl [ctb], Hugo Gruson [ctb]", + "Maintainer": "James Melville ", + "Repository": "https://packagemanager.posit.co/cran/latest" + }, + "vctrs": { + "Package": "vctrs", + "Version": "0.7.0", + "Source": "Repository", + "Title": "Vector Helpers", + "Authors@R": "c( person(\"Hadley\", \"Wickham\", , \"hadley@posit.co\", role = \"aut\"), person(\"Lionel\", \"Henry\", , \"lionel@posit.co\", role = \"aut\"), person(\"Davis\", \"Vaughan\", , \"davis@posit.co\", role = c(\"aut\", \"cre\")), person(\"data.table team\", role = \"cph\", comment = \"Radix sort based on data.table's forder() and their contribution to R's order()\"), person(\"Posit Software, PBC\", role = c(\"cph\", \"fnd\")) )", + "Description": "Defines new notions of prototype and size that are used to provide tools for consistent and well-founded type-coercion and size-recycling, and are in turn connected to ideas of type- and size-stability useful for analysing function interfaces.", + "License": "MIT + file LICENSE", + "URL": "https://vctrs.r-lib.org/, https://github.com/r-lib/vctrs", + "BugReports": "https://github.com/r-lib/vctrs/issues", + "Depends": [ + "R (>= 4.0.0)" + ], + "Imports": [ + "cli (>= 3.4.0)", + "glue", + "lifecycle (>= 1.0.3)", + "rlang (>= 1.1.7)" + ], + "Suggests": [ + "bit64", + "covr", + "crayon", + "dplyr (>= 0.8.5)", + "generics", + "knitr", + "pillar (>= 1.4.4)", + "pkgdown (>= 2.0.1)", + "rmarkdown", + "testthat (>= 3.0.0)", + "tibble (>= 3.1.3)", + "waldo (>= 0.2.0)", + "withr", + "xml2", + "zeallot" + ], + "VignetteBuilder": "knitr", + "Config/build/compilation-database": "true", + "Config/Needs/website": "tidyverse/tidytemplate", + "Config/testthat/edition": "3", + "Config/testthat/parallel": "true", + "Encoding": "UTF-8", + "Language": "en-GB", + "RoxygenNote": "7.3.3", + "NeedsCompilation": "yes", + "Author": "Hadley Wickham [aut], Lionel Henry [aut], Davis Vaughan [aut, cre], data.table team [cph] (Radix sort based on data.table's forder() and their contribution to R's order()), Posit Software, PBC [cph, fnd]", + "Maintainer": "Davis Vaughan ", + "Repository": "CRAN" + }, + "vipor": { + "Package": "vipor", + "Version": "0.4.7", + "Source": "Repository", + "Type": "Package", + "Title": "Plot Categorical Data Using Quasirandom Noise and Density Estimates", + "Date": "2023-12-15", + "Author": "Scott Sherrill-Mix, Erik Clarke", + "Maintainer": "Scott Sherrill-Mix ", + "Description": "Generate a violin point plot, a combination of a violin/histogram plot and a scatter plot by offsetting points within a category based on their density using quasirandom noise.", + "License": "GPL (>= 2)", + "LazyData": "True", + "Depends": [ + "R (>= 3.5.0)" + ], + "Imports": [ + "stats", + "graphics" + ], + "Suggests": [ + "testthat", + "beeswarm", + "lattice", + "ggplot2", + "beanplot", + "vioplot", + "ggbeeswarm" + ], + "RoxygenNote": "7.2.3", + "NeedsCompilation": "no", + "Repository": "https://packagemanager.posit.co/cran/latest", + "Encoding": "UTF-8" + }, + "viridis": { + "Package": "viridis", + "Version": "0.6.5", + "Source": "Repository", + "Type": "Package", + "Title": "Colorblind-Friendly Color Maps for R", + "Date": "2024-01-28", + "Authors@R": "c( person(\"Simon\", \"Garnier\", email = \"garnier@njit.edu\", role = c(\"aut\", \"cre\")), person(\"Noam\", \"Ross\", email = \"noam.ross@gmail.com\", role = c(\"ctb\", \"cph\")), person(\"Bob\", \"Rudis\", email = \"bob@rud.is\", role = c(\"ctb\", \"cph\")), person(\"Marco\", \"Sciaini\", email = \"sciaini.marco@gmail.com\", role = c(\"ctb\", \"cph\")), person(\"Antônio Pedro\", \"Camargo\", role = c(\"ctb\", \"cph\")), person(\"Cédric\", \"Scherer\", email = \"scherer@izw-berlin.de\", role = c(\"ctb\", \"cph\")) )", + "Maintainer": "Simon Garnier ", + "Description": "Color maps designed to improve graph readability for readers with common forms of color blindness and/or color vision deficiency. The color maps are also perceptually-uniform, both in regular form and also when converted to black-and-white for printing. This package also contains 'ggplot2' bindings for discrete and continuous color and fill scales. A lean version of the package called 'viridisLite' that does not include the 'ggplot2' bindings can be found at .", + "License": "MIT + file LICENSE", + "Encoding": "UTF-8", + "Depends": [ + "R (>= 2.10)", + "viridisLite (>= 0.4.0)" + ], + "Imports": [ + "ggplot2 (>= 1.0.1)", + "gridExtra" + ], + "Suggests": [ + "hexbin (>= 1.27.0)", + "scales", + "MASS", + "knitr", + "dichromat", + "colorspace", + "httr", + "mapproj", + "vdiffr", + "svglite (>= 1.2.0)", + "testthat", + "covr", + "rmarkdown", + "maps", + "terra" + ], + "LazyData": "true", + "VignetteBuilder": "knitr", + "URL": "https://sjmgarnier.github.io/viridis/, https://github.com/sjmgarnier/viridis/", + "BugReports": "https://github.com/sjmgarnier/viridis/issues", + "RoxygenNote": "7.3.1", + "NeedsCompilation": "no", + "Author": "Simon Garnier [aut, cre], Noam Ross [ctb, cph], Bob Rudis [ctb, cph], Marco Sciaini [ctb, cph], Antônio Pedro Camargo [ctb, cph], Cédric Scherer [ctb, cph]", + "Repository": "https://packagemanager.posit.co/cran/latest" + }, + "viridisLite": { + "Package": "viridisLite", + "Version": "0.4.2", + "Source": "Repository", + "Type": "Package", + "Title": "Colorblind-Friendly Color Maps (Lite Version)", + "Date": "2023-05-02", + "Authors@R": "c( person(\"Simon\", \"Garnier\", email = \"garnier@njit.edu\", role = c(\"aut\", \"cre\")), person(\"Noam\", \"Ross\", email = \"noam.ross@gmail.com\", role = c(\"ctb\", \"cph\")), person(\"Bob\", \"Rudis\", email = \"bob@rud.is\", role = c(\"ctb\", \"cph\")), person(\"Marco\", \"Sciaini\", email = \"sciaini.marco@gmail.com\", role = c(\"ctb\", \"cph\")), person(\"Antônio Pedro\", \"Camargo\", role = c(\"ctb\", \"cph\")), person(\"Cédric\", \"Scherer\", email = \"scherer@izw-berlin.de\", role = c(\"ctb\", \"cph\")) )", + "Maintainer": "Simon Garnier ", + "Description": "Color maps designed to improve graph readability for readers with common forms of color blindness and/or color vision deficiency. The color maps are also perceptually-uniform, both in regular form and also when converted to black-and-white for printing. This is the 'lite' version of the 'viridis' package that also contains 'ggplot2' bindings for discrete and continuous color and fill scales and can be found at .", + "License": "MIT + file LICENSE", + "Encoding": "UTF-8", + "Depends": [ + "R (>= 2.10)" + ], + "Suggests": [ + "hexbin (>= 1.27.0)", + "ggplot2 (>= 1.0.1)", + "testthat", + "covr" + ], + "URL": "https://sjmgarnier.github.io/viridisLite/, https://github.com/sjmgarnier/viridisLite/", + "BugReports": "https://github.com/sjmgarnier/viridisLite/issues/", + "RoxygenNote": "7.2.3", + "NeedsCompilation": "no", + "Author": "Simon Garnier [aut, cre], Noam Ross [ctb, cph], Bob Rudis [ctb, cph], Marco Sciaini [ctb, cph], Antônio Pedro Camargo [ctb, cph], Cédric Scherer [ctb, cph]", + "Repository": "https://packagemanager.posit.co/cran/latest" + }, + "vroom": { + "Package": "vroom", + "Version": "1.6.7", + "Source": "Repository", + "Title": "Read and Write Rectangular Text Data Quickly", + "Authors@R": "c( person(\"Jim\", \"Hester\", role = \"aut\", comment = c(ORCID = \"0000-0002-2739-7082\")), person(\"Hadley\", \"Wickham\", , \"hadley@posit.co\", role = \"aut\", comment = c(ORCID = \"0000-0003-4757-117X\")), person(\"Jennifer\", \"Bryan\", , \"jenny@posit.co\", role = c(\"aut\", \"cre\"), comment = c(ORCID = \"0000-0002-6983-2759\")), person(\"Shelby\", \"Bearrows\", role = \"ctb\"), person(\"https://github.com/mandreyel/\", role = \"cph\", comment = \"mio library\"), person(\"Jukka\", \"Jylänki\", role = \"cph\", comment = \"grisu3 implementation\"), person(\"Mikkel\", \"Jørgensen\", role = \"cph\", comment = \"grisu3 implementation\"), person(\"Posit Software, PBC\", role = c(\"cph\", \"fnd\"), comment = c(ROR = \"03wc8by49\")) )", + "Description": "The goal of 'vroom' is to read and write data (like 'csv', 'tsv' and 'fwf') quickly. When reading it uses a quick initial indexing step, then reads the values lazily , so only the data you actually use needs to be read. The writer formats the data in parallel and writes to disk asynchronously from formatting.", + "License": "MIT + file LICENSE", + "URL": "https://vroom.r-lib.org, https://github.com/tidyverse/vroom", + "BugReports": "https://github.com/tidyverse/vroom/issues", + "Depends": [ + "R (>= 4.1)" + ], + "Imports": [ + "bit64", + "cli (>= 3.2.0)", + "crayon", + "glue", + "hms", + "lifecycle (>= 1.0.3)", + "methods", + "rlang (>= 0.4.2)", + "stats", + "tibble (>= 2.0.0)", + "tidyselect", + "tzdb (>= 0.1.1)", + "vctrs (>= 0.2.0)", + "withr" + ], + "Suggests": [ + "archive", + "bench (>= 1.1.0)", + "covr", + "curl", + "dplyr", + "forcats", + "fs", + "ggplot2", + "knitr", + "patchwork", + "prettyunits", + "purrr", + "rmarkdown", + "rstudioapi", + "scales", + "spelling", + "testthat (>= 2.1.0)", + "tidyr", + "utils", + "waldo", + "xml2" + ], + "LinkingTo": [ + "cpp11 (>= 0.2.0)", + "progress (>= 1.2.3)", + "tzdb (>= 0.1.1)" + ], + "VignetteBuilder": "knitr", + "Config/Needs/website": "nycflights13, tidyverse/tidytemplate", + "Config/testthat/edition": "3", + "Config/testthat/parallel": "false", + "Config/usethis/last-upkeep": "2025-11-25", + "Copyright": "file COPYRIGHTS", + "Encoding": "UTF-8", + "Language": "en-US", + "RoxygenNote": "7.3.3", + "NeedsCompilation": "yes", + "Author": "Jim Hester [aut] (ORCID: ), Hadley Wickham [aut] (ORCID: ), Jennifer Bryan [aut, cre] (ORCID: ), Shelby Bearrows [ctb], https://github.com/mandreyel/ [cph] (mio library), Jukka Jylänki [cph] (grisu3 implementation), Mikkel Jørgensen [cph] (grisu3 implementation), Posit Software, PBC [cph, fnd] (ROR: )", + "Maintainer": "Jennifer Bryan ", + "Repository": "CRAN" + }, + "vsn": { + "Package": "vsn", + "Version": "3.78.1", + "Source": "Bioconductor", + "Title": "Variance stabilization and calibration for microarray data", + "Author": "Wolfgang Huber, with contributions from Anja von Heydebreck. Many comments and suggestions by users are acknowledged, among them Dennis Kostka, David Kreil, Hans-Ulrich Klein, Robert Gentleman, Deepayan Sarkar and Gordon Smyth", + "Maintainer": "Wolfgang Huber ", + "Depends": [ + "R (>= 4.0.0)", + "methods", + "Biobase" + ], + "Imports": [ + "affy", + "limma", + "lattice", + "ggplot2" + ], + "Suggests": [ + "affydata", + "hgu95av2cdf", + "BiocStyle", + "knitr", + "rmarkdown", + "dplyr", + "testthat" + ], + "Description": "The package implements a method for normalising microarray intensities from single- and multiple-color arrays. It can also be used for data from other technologies, as long as they have similar format. The method uses a robust variant of the maximum-likelihood estimator for an additive-multiplicative error model and affine calibration. The model incorporates data calibration step (a.k.a. normalization), a model for the dependence of the variance on the mean intensity and a variance stabilizing data transformation. Differences between transformed intensities are analogous to \"normalized log-ratios\". However, in contrast to the latter, their variance is independent of the mean, and they are usually more sensitive and specific in detecting differential transcription.", + "Reference": "[1] Variance stabilization applied to microarray data calibration and to the quantification of differential expression, Wolfgang Huber, Anja von Heydebreck, Holger Sueltmann, Annemarie Poustka, Martin Vingron; Bioinformatics (2002) 18 Suppl1 S96-S104. [2] Parameter estimation for the calibration and variance stabilization of microarray data, Wolfgang Huber, Anja von Heydebreck, Holger Sueltmann, Annemarie Poustka, and Martin Vingron; Statistical Applications in Genetics and Molecular Biology (2003) Vol. 2 No. 1, Article 3; http://www.bepress.com/sagmb/vol2/iss1/art3.", + "License": "Artistic-2.0", + "URL": "http://www.r-project.org, http://www.ebi.ac.uk/huber", + "biocViews": "Microarray, OneChannel, TwoChannel, Preprocessing", + "VignetteBuilder": "knitr", + "Collate": "AllClasses.R AllGenerics.R vsn2.R vsnLogLik.R justvsn.R methods-vsnInput.R methods-vsn.R methods-vsn2.R methods-predict.R RGList_to_NChannelSet.R meanSdPlot-methods.R plotLikelihood.R normalize.AffyBatch.vsn.R sagmbSimulateData.R zzz.R", + "git_url": "https://git.bioconductor.org/packages/vsn", + "git_branch": "RELEASE_3_22", + "git_last_commit": "3f3cc16", + "git_last_commit_date": "2026-01-13", + "Repository": "Bioconductor 3.22", + "NeedsCompilation": "yes" + }, + "withr": { + "Package": "withr", + "Version": "3.0.2", + "Source": "Repository", + "Title": "Run Code 'With' Temporarily Modified Global State", + "Authors@R": "c( person(\"Jim\", \"Hester\", role = \"aut\"), person(\"Lionel\", \"Henry\", , \"lionel@posit.co\", role = c(\"aut\", \"cre\")), person(\"Kirill\", \"Müller\", , \"krlmlr+r@mailbox.org\", role = \"aut\"), person(\"Kevin\", \"Ushey\", , \"kevinushey@gmail.com\", role = \"aut\"), person(\"Hadley\", \"Wickham\", , \"hadley@posit.co\", role = \"aut\"), person(\"Winston\", \"Chang\", role = \"aut\"), person(\"Jennifer\", \"Bryan\", role = \"ctb\"), person(\"Richard\", \"Cotton\", role = \"ctb\"), person(\"Posit Software, PBC\", role = c(\"cph\", \"fnd\")) )", + "Description": "A set of functions to run code 'with' safely and temporarily modified global state. Many of these functions were originally a part of the 'devtools' package, this provides a simple package with limited dependencies to provide access to these functions.", + "License": "MIT + file LICENSE", + "URL": "https://withr.r-lib.org, https://github.com/r-lib/withr#readme", + "BugReports": "https://github.com/r-lib/withr/issues", + "Depends": [ + "R (>= 3.6.0)" + ], + "Imports": [ + "graphics", + "grDevices" + ], + "Suggests": [ + "callr", + "DBI", + "knitr", + "methods", + "rlang", + "rmarkdown (>= 2.12)", + "RSQLite", + "testthat (>= 3.0.0)" + ], + "VignetteBuilder": "knitr", + "Config/Needs/website": "tidyverse/tidytemplate", + "Config/testthat/edition": "3", + "Encoding": "UTF-8", + "RoxygenNote": "7.3.2", + "Collate": "'aaa.R' 'collate.R' 'connection.R' 'db.R' 'defer-exit.R' 'standalone-defer.R' 'defer.R' 'devices.R' 'local_.R' 'with_.R' 'dir.R' 'env.R' 'file.R' 'language.R' 'libpaths.R' 'locale.R' 'makevars.R' 'namespace.R' 'options.R' 'par.R' 'path.R' 'rng.R' 'seed.R' 'wrap.R' 'sink.R' 'tempfile.R' 'timezone.R' 'torture.R' 'utils.R' 'with.R'", + "NeedsCompilation": "no", + "Author": "Jim Hester [aut], Lionel Henry [aut, cre], Kirill Müller [aut], Kevin Ushey [aut], Hadley Wickham [aut], Winston Chang [aut], Jennifer Bryan [ctb], Richard Cotton [ctb], Posit Software, PBC [cph, fnd]", + "Maintainer": "Lionel Henry ", + "Repository": "https://packagemanager.posit.co/cran/latest" + }, + "xfun": { + "Package": "xfun", + "Version": "0.56", + "Source": "Repository", + "Type": "Package", + "Title": "Supporting Functions for Packages Maintained by 'Yihui Xie'", + "Authors@R": "c( person(\"Yihui\", \"Xie\", role = c(\"aut\", \"cre\", \"cph\"), email = \"xie@yihui.name\", comment = c(ORCID = \"0000-0003-0645-5666\", URL = \"https://yihui.org\")), person(\"Wush\", \"Wu\", role = \"ctb\"), person(\"Daijiang\", \"Li\", role = \"ctb\"), person(\"Xianying\", \"Tan\", role = \"ctb\"), person(\"Salim\", \"Brüggemann\", role = \"ctb\", email = \"salim-b@pm.me\", comment = c(ORCID = \"0000-0002-5329-5987\")), person(\"Christophe\", \"Dervieux\", role = \"ctb\"), person() )", + "Description": "Miscellaneous functions commonly used in other packages maintained by 'Yihui Xie'.", + "Depends": [ + "R (>= 3.2.0)" + ], + "Imports": [ + "grDevices", + "stats", + "tools" + ], + "Suggests": [ + "testit", + "parallel", + "codetools", + "methods", + "rstudioapi", + "tinytex (>= 0.30)", + "mime", + "litedown (>= 0.6)", + "commonmark", + "knitr (>= 1.50)", + "remotes", + "pak", + "curl", + "xml2", + "jsonlite", + "magick", + "yaml", + "data.table", + "qs2" + ], + "License": "MIT + file LICENSE", + "URL": "https://github.com/yihui/xfun", + "BugReports": "https://github.com/yihui/xfun/issues", + "Encoding": "UTF-8", + "RoxygenNote": "7.3.3", + "VignetteBuilder": "litedown", + "NeedsCompilation": "yes", + "Author": "Yihui Xie [aut, cre, cph] (ORCID: , URL: https://yihui.org), Wush Wu [ctb], Daijiang Li [ctb], Xianying Tan [ctb], Salim Brüggemann [ctb] (ORCID: ), Christophe Dervieux [ctb]", + "Maintainer": "Yihui Xie ", + "Repository": "CRAN" + }, + "xgboost": { + "Package": "xgboost", + "Version": "3.1.3.1", + "Source": "Repository", + "Type": "Package", + "Title": "Extreme Gradient Boosting", + "Date": "2026-01-05", + "Authors@R": "c( person(\"Tianqi\", \"Chen\", role = c(\"aut\"), email = \"tianqi.tchen@gmail.com\"), person(\"Tong\", \"He\", role = c(\"aut\"), email = \"hetong007@gmail.com\"), person(\"Michael\", \"Benesty\", role = c(\"aut\"), email = \"michael@benesty.fr\"), person(\"Vadim\", \"Khotilovich\", role = c(\"aut\"), email = \"khotilovich@gmail.com\"), person(\"Yuan\", \"Tang\", role = c(\"aut\"), email = \"terrytangyuan@gmail.com\", comment = c(ORCID = \"0000-0001-5243-233X\")), person(\"Hyunsu\", \"Cho\", role = c(\"aut\"), email = \"chohyu01@cs.washington.edu\"), person(\"Kailong\", \"Chen\", role = c(\"aut\")), person(\"Rory\", \"Mitchell\", role = c(\"aut\")), person(\"Ignacio\", \"Cano\", role = c(\"aut\")), person(\"Tianyi\", \"Zhou\", role = c(\"aut\")), person(\"Mu\", \"Li\", role = c(\"aut\")), person(\"Junyuan\", \"Xie\", role = c(\"aut\")), person(\"Min\", \"Lin\", role = c(\"aut\")), person(\"Yifeng\", \"Geng\", role = c(\"aut\")), person(\"Yutian\", \"Li\", role = c(\"aut\")), person(\"Jiaming\", \"Yuan\", role = c(\"aut\", \"cre\"), email = \"jm.yuan@outlook.com\"), person(\"David\", \"Cortes\", role = c(\"aut\")), person(\"XGBoost contributors\", role = c(\"cph\"), comment = \"base XGBoost implementation\") )", + "Maintainer": "Jiaming Yuan ", + "Description": "Extreme Gradient Boosting, which is an efficient implementation of the gradient boosting framework from Chen & Guestrin (2016) . This package is its R interface. The package includes efficient linear model solver and tree learning algorithms. The package can automatically do parallel computation on a single machine which could be more than 10 times faster than existing gradient boosting packages. It supports various objective functions, including regression, classification and ranking. The package is made to be extensible, so that users are also allowed to define their own objectives easily.", + "License": "Apache License (== 2.0) | file LICENSE", + "URL": "https://github.com/dmlc/xgboost", + "BugReports": "https://github.com/dmlc/xgboost/issues", + "NeedsCompilation": "yes", + "VignetteBuilder": "knitr", + "Suggests": [ + "knitr", + "rmarkdown", + "ggplot2 (>= 1.0.1)", + "DiagrammeR (>= 0.9.0)", + "DiagrammeRsvg", + "rsvg", + "htmlwidgets", + "Ckmeans.1d.dp (>= 3.3.1)", + "vcd (>= 1.3)", + "testthat", + "igraph (>= 1.0.1)", + "float", + "titanic", + "RhpcBLASctl", + "survival" + ], + "Depends": [ + "R (>= 4.3.0)" + ], + "Imports": [ + "Matrix (>= 1.1-0)", + "methods", + "data.table (>= 1.9.6)", + "jsonlite (>= 1.0)" + ], + "RoxygenNote": "7.3.3", + "Encoding": "UTF-8", + "SystemRequirements": "GNU make, C++17", + "Author": "Tianqi Chen [aut], Tong He [aut], Michael Benesty [aut], Vadim Khotilovich [aut], Yuan Tang [aut] (ORCID: ), Hyunsu Cho [aut], Kailong Chen [aut], Rory Mitchell [aut], Ignacio Cano [aut], Tianyi Zhou [aut], Mu Li [aut], Junyuan Xie [aut], Min Lin [aut], Yifeng Geng [aut], Yutian Li [aut], Jiaming Yuan [aut, cre], David Cortes [aut], XGBoost contributors [cph] (base XGBoost implementation)", + "Repository": "CRAN" + }, + "xml2": { + "Package": "xml2", + "Version": "1.5.2", + "Source": "Repository", + "Title": "Parse XML", + "Authors@R": "c( person(\"Hadley\", \"Wickham\", role = \"aut\"), person(\"Jim\", \"Hester\", role = \"aut\"), person(\"Jeroen\", \"Ooms\", email = \"jeroenooms@gmail.com\", role = c(\"aut\", \"cre\")), person(\"Posit Software, PBC\", role = c(\"cph\", \"fnd\")), person(\"R Foundation\", role = \"ctb\", comment = \"Copy of R-project homepage cached as example\") )", + "Description": "Bindings to 'libxml2' for working with XML data using a simple, consistent interface based on 'XPath' expressions. Also supports XML schema validation; for 'XSLT' transformations see the 'xslt' package.", + "License": "MIT + file LICENSE", + "URL": "https://xml2.r-lib.org, https://r-lib.r-universe.dev/xml2", + "BugReports": "https://github.com/r-lib/xml2/issues", + "Depends": [ + "R (>= 3.6.0)" + ], + "Imports": [ + "cli", + "methods", + "rlang (>= 1.1.0)" + ], + "Suggests": [ + "covr", + "curl", + "httr", + "knitr", + "mockery", + "rmarkdown", + "testthat (>= 3.2.0)", + "xslt" + ], + "VignetteBuilder": "knitr", + "Config/Needs/website": "tidyverse/tidytemplate", + "Encoding": "UTF-8", + "RoxygenNote": "7.3.3", + "SystemRequirements": "libxml2: libxml2-dev (deb), libxml2-devel (rpm)", + "Collate": "'S4.R' 'as_list.R' 'xml_parse.R' 'as_xml_document.R' 'classes.R' 'format.R' 'import-standalone-obj-type.R' 'import-standalone-purrr.R' 'import-standalone-types-check.R' 'init.R' 'nodeset_apply.R' 'paths.R' 'utils.R' 'xml2-package.R' 'xml_attr.R' 'xml_children.R' 'xml_document.R' 'xml_find.R' 'xml_missing.R' 'xml_modify.R' 'xml_name.R' 'xml_namespaces.R' 'xml_node.R' 'xml_nodeset.R' 'xml_path.R' 'xml_schema.R' 'xml_serialize.R' 'xml_structure.R' 'xml_text.R' 'xml_type.R' 'xml_url.R' 'xml_write.R' 'zzz.R'", + "Config/testthat/edition": "3", + "NeedsCompilation": "yes", + "Author": "Hadley Wickham [aut], Jim Hester [aut], Jeroen Ooms [aut, cre], Posit Software, PBC [cph, fnd], R Foundation [ctb] (Copy of R-project homepage cached as example)", + "Maintainer": "Jeroen Ooms ", + "Repository": "CRAN" + }, + "xtable": { + "Package": "xtable", + "Version": "1.8-4", + "Source": "Repository", + "Date": "2019-04-08", + "Title": "Export Tables to LaTeX or HTML", + "Authors@R": "c(person(\"David B.\", \"Dahl\", role=\"aut\"), person(\"David\", \"Scott\", role=c(\"aut\",\"cre\"), email=\"d.scott@auckland.ac.nz\"), person(\"Charles\", \"Roosen\", role=\"aut\"), person(\"Arni\", \"Magnusson\", role=\"aut\"), person(\"Jonathan\", \"Swinton\", role=\"aut\"), person(\"Ajay\", \"Shah\", role=\"ctb\"), person(\"Arne\", \"Henningsen\", role=\"ctb\"), person(\"Benno\", \"Puetz\", role=\"ctb\"), person(\"Bernhard\", \"Pfaff\", role=\"ctb\"), person(\"Claudio\", \"Agostinelli\", role=\"ctb\"), person(\"Claudius\", \"Loehnert\", role=\"ctb\"), person(\"David\", \"Mitchell\", role=\"ctb\"), person(\"David\", \"Whiting\", role=\"ctb\"), person(\"Fernando da\", \"Rosa\", role=\"ctb\"), person(\"Guido\", \"Gay\", role=\"ctb\"), person(\"Guido\", \"Schulz\", role=\"ctb\"), person(\"Ian\", \"Fellows\", role=\"ctb\"), person(\"Jeff\", \"Laake\", role=\"ctb\"), person(\"John\", \"Walker\", role=\"ctb\"), person(\"Jun\", \"Yan\", role=\"ctb\"), person(\"Liviu\", \"Andronic\", role=\"ctb\"), person(\"Markus\", \"Loecher\", role=\"ctb\"), person(\"Martin\", \"Gubri\", role=\"ctb\"), person(\"Matthieu\", \"Stigler\", role=\"ctb\"), person(\"Robert\", \"Castelo\", role=\"ctb\"), person(\"Seth\", \"Falcon\", role=\"ctb\"), person(\"Stefan\", \"Edwards\", role=\"ctb\"), person(\"Sven\", \"Garbade\", role=\"ctb\"), person(\"Uwe\", \"Ligges\", role=\"ctb\"))", + "Maintainer": "David Scott ", + "Imports": [ + "stats", + "utils" + ], + "Suggests": [ + "knitr", + "plm", + "zoo", + "survival" + ], + "VignetteBuilder": "knitr", + "Description": "Coerce data to LaTeX and HTML tables.", + "URL": "http://xtable.r-forge.r-project.org/", + "Depends": [ + "R (>= 2.10.0)" + ], + "License": "GPL (>= 2)", + "Repository": "https://packagemanager.posit.co/cran/latest", + "NeedsCompilation": "no", + "Author": "David B. Dahl [aut], David Scott [aut, cre], Charles Roosen [aut], Arni Magnusson [aut], Jonathan Swinton [aut], Ajay Shah [ctb], Arne Henningsen [ctb], Benno Puetz [ctb], Bernhard Pfaff [ctb], Claudio Agostinelli [ctb], Claudius Loehnert [ctb], David Mitchell [ctb], David Whiting [ctb], Fernando da Rosa [ctb], Guido Gay [ctb], Guido Schulz [ctb], Ian Fellows [ctb], Jeff Laake [ctb], John Walker [ctb], Jun Yan [ctb], Liviu Andronic [ctb], Markus Loecher [ctb], Martin Gubri [ctb], Matthieu Stigler [ctb], Robert Castelo [ctb], Seth Falcon [ctb], Stefan Edwards [ctb], Sven Garbade [ctb], Uwe Ligges [ctb]", + "Encoding": "UTF-8" + }, + "yaml": { + "Package": "yaml", + "Version": "2.3.12", + "Source": "Repository", + "Type": "Package", + "Title": "Methods to Convert R Data to YAML and Back", + "Authors@R": "c( person(\"Hadley\", \"Wickham\", , \"hadley@posit.co\", role = \"cre\", comment = c(ORCID = \"0000-0003-4757-117X\")), person(\"Shawn\", \"Garbett\", , \"shawn.garbett@vumc.org\", role = \"ctb\", comment = c(ORCID = \"0000-0003-4079-5621\")), person(\"Jeremy\", \"Stephens\", role = c(\"aut\", \"ctb\")), person(\"Kirill\", \"Simonov\", role = \"aut\"), person(\"Yihui\", \"Xie\", role = \"ctb\", comment = c(ORCID = \"0000-0003-0645-5666\")), person(\"Zhuoer\", \"Dong\", role = \"ctb\"), person(\"Jeffrey\", \"Horner\", role = \"ctb\"), person(\"reikoch\", role = \"ctb\"), person(\"Will\", \"Beasley\", role = \"ctb\", comment = c(ORCID = \"0000-0002-5613-5006\")), person(\"Brendan\", \"O'Connor\", role = \"ctb\"), person(\"Michael\", \"Quinn\", role = \"ctb\"), person(\"Charlie\", \"Gao\", role = \"ctb\"), person(c(\"Gregory\", \"R.\"), \"Warnes\", role = \"ctb\"), person(c(\"Zhian\", \"N.\"), \"Kamvar\", role = \"ctb\") )", + "Description": "Implements the 'libyaml' 'YAML' 1.1 parser and emitter () for R.", + "License": "BSD_3_clause + file LICENSE", + "URL": "https://yaml.r-lib.org, https://github.com/r-lib/yaml/", + "BugReports": "https://github.com/r-lib/yaml/issues", + "Suggests": [ + "knitr", + "rmarkdown", + "testthat (>= 3.0.0)" + ], + "Config/testthat/edition": "3", + "Config/Needs/website": "tidyverse/tidytemplate", + "Encoding": "UTF-8", + "RoxygenNote": "7.3.3", + "VignetteBuilder": "knitr", + "NeedsCompilation": "yes", + "Author": "Hadley Wickham [cre] (ORCID: ), Shawn Garbett [ctb] (ORCID: ), Jeremy Stephens [aut, ctb], Kirill Simonov [aut], Yihui Xie [ctb] (ORCID: ), Zhuoer Dong [ctb], Jeffrey Horner [ctb], reikoch [ctb], Will Beasley [ctb] (ORCID: ), Brendan O'Connor [ctb], Michael Quinn [ctb], Charlie Gao [ctb], Gregory R. Warnes [ctb], Zhian N. Kamvar [ctb]", + "Maintainer": "Hadley Wickham ", + "Repository": "CRAN" + }, + "yulab.utils": { + "Package": "yulab.utils", + "Version": "0.2.3", + "Source": "Repository", + "Title": "Supporting Functions for Packages Maintained by 'YuLab-SMU'", + "Authors@R": "c(person(\"Guangchuang\", \"Yu\", email = \"guangchuangyu@gmail.com\", role = c(\"aut\", \"cre\"), comment = c(ORCID = \"0000-0002-6485-8781\")))", + "Description": "Miscellaneous functions commonly used by 'YuLab-SMU'.", + "Depends": [ + "R (>= 4.2.0)" + ], + "Imports": [ + "cli", + "digest", + "fs", + "methods", + "rappdirs", + "rlang", + "tools", + "utils" + ], + "Suggests": [ + "httr2", + "jsonlite", + "openssl", + "R.utils", + "testthat (>= 3.0.0)" + ], + "ByteCompile": "true", + "License": "Artistic-2.0", + "URL": "https://yulab-smu.top/", + "BugReports": "https://github.com/YuLab-SMU/yulab.utils/issues", + "Encoding": "UTF-8", + "RoxygenNote": "7.3.3", + "Config/testthat/edition": "3", + "NeedsCompilation": "no", + "Author": "Guangchuang Yu [aut, cre] (ORCID: )", + "Maintainer": "Guangchuang Yu ", + "Repository": "CRAN" + } + } +} diff --git a/renv/.gitignore b/renv/.gitignore new file mode 100644 index 00000000..0ec0cbba --- /dev/null +++ b/renv/.gitignore @@ -0,0 +1,7 @@ +library/ +local/ +cellar/ +lock/ +python/ +sandbox/ +staging/ diff --git a/renv/activate.R b/renv/activate.R new file mode 100644 index 00000000..4eba67cf --- /dev/null +++ b/renv/activate.R @@ -0,0 +1,1403 @@ + +local({ + + # the requested version of renv + version <- "1.1.6" + attr(version, "md5") <- "3036c4b273d882c56e8cdd660ebaf6f0" + attr(version, "sha") <- NULL + + # the project directory + project <- Sys.getenv("RENV_PROJECT") + if (!nzchar(project)) + project <- getwd() + + # use start-up diagnostics if enabled + diagnostics <- Sys.getenv("RENV_STARTUP_DIAGNOSTICS", unset = "FALSE") + if (diagnostics) { + start <- Sys.time() + profile <- tempfile("renv-startup-", fileext = ".Rprof") + utils::Rprof(profile) + on.exit({ + utils::Rprof(NULL) + elapsed <- signif(difftime(Sys.time(), start, units = "auto"), digits = 2L) + writeLines(sprintf("- renv took %s to run the autoloader.", format(elapsed))) + writeLines(sprintf("- Profile: %s", profile)) + print(utils::summaryRprof(profile)) + }, add = TRUE) + } + + # figure out whether the autoloader is enabled + enabled <- local({ + + # first, check config option + override <- getOption("renv.config.autoloader.enabled") + if (!is.null(override)) + return(override) + + # if we're being run in a context where R_LIBS is already set, + # don't load -- presumably we're being run as a sub-process and + # the parent process has already set up library paths for us + rcmd <- Sys.getenv("R_CMD", unset = NA) + rlibs <- Sys.getenv("R_LIBS", unset = NA) + if (!is.na(rlibs) && !is.na(rcmd)) + return(FALSE) + + # next, check environment variables + # prefer using the configuration one in the future + envvars <- c( + "RENV_CONFIG_AUTOLOADER_ENABLED", + "RENV_AUTOLOADER_ENABLED", + "RENV_ACTIVATE_PROJECT" + ) + + for (envvar in envvars) { + envval <- Sys.getenv(envvar, unset = NA) + if (!is.na(envval)) + return(tolower(envval) %in% c("true", "t", "1")) + } + + # enable by default + TRUE + + }) + + # bail if we're not enabled + if (!enabled) { + + # if we're not enabled, we might still need to manually load + # the user profile here + profile <- Sys.getenv("R_PROFILE_USER", unset = "~/.Rprofile") + if (file.exists(profile)) { + cfg <- Sys.getenv("RENV_CONFIG_USER_PROFILE", unset = "TRUE") + if (tolower(cfg) %in% c("true", "t", "1")) + sys.source(profile, envir = globalenv()) + } + + return(FALSE) + + } + + # avoid recursion + if (identical(getOption("renv.autoloader.running"), TRUE)) { + warning("ignoring recursive attempt to run renv autoloader") + return(invisible(TRUE)) + } + + # signal that we're loading renv during R startup + options(renv.autoloader.running = TRUE) + on.exit(options(renv.autoloader.running = NULL), add = TRUE) + + # signal that we've consented to use renv + options(renv.consent = TRUE) + + # load the 'utils' package eagerly -- this ensures that renv shims, which + # mask 'utils' packages, will come first on the search path + library(utils, lib.loc = .Library) + + # unload renv if it's already been loaded + if ("renv" %in% loadedNamespaces()) + unloadNamespace("renv") + + # load bootstrap tools + ansify <- function(text) { + if (renv_ansify_enabled()) + renv_ansify_enhanced(text) + else + renv_ansify_default(text) + } + + renv_ansify_enabled <- function() { + + override <- Sys.getenv("RENV_ANSIFY_ENABLED", unset = NA) + if (!is.na(override)) + return(as.logical(override)) + + pane <- Sys.getenv("RSTUDIO_CHILD_PROCESS_PANE", unset = NA) + if (identical(pane, "build")) + return(FALSE) + + testthat <- Sys.getenv("TESTTHAT", unset = "false") + if (tolower(testthat) %in% "true") + return(FALSE) + + iderun <- Sys.getenv("R_CLI_HAS_HYPERLINK_IDE_RUN", unset = "false") + if (tolower(iderun) %in% "false") + return(FALSE) + + TRUE + + } + + renv_ansify_default <- function(text) { + text + } + + renv_ansify_enhanced <- function(text) { + + # R help links + pattern <- "`\\?(renv::(?:[^`])+)`" + replacement <- "`\033]8;;x-r-help:\\1\a?\\1\033]8;;\a`" + text <- gsub(pattern, replacement, text, perl = TRUE) + + # runnable code + pattern <- "`(renv::(?:[^`])+)`" + replacement <- "`\033]8;;x-r-run:\\1\a\\1\033]8;;\a`" + text <- gsub(pattern, replacement, text, perl = TRUE) + + # return ansified text + text + + } + + renv_ansify_init <- function() { + + envir <- renv_envir_self() + if (renv_ansify_enabled()) + assign("ansify", renv_ansify_enhanced, envir = envir) + else + assign("ansify", renv_ansify_default, envir = envir) + + } + + `%||%` <- function(x, y) { + if (is.null(x)) y else x + } + + catf <- function(fmt, ..., appendLF = TRUE) { + + quiet <- getOption("renv.bootstrap.quiet", default = FALSE) + if (quiet) + return(invisible()) + + msg <- sprintf(fmt, ...) + cat(msg, file = stdout(), sep = if (appendLF) "\n" else "") + + invisible(msg) + + } + + header <- function(label, + ..., + prefix = "#", + suffix = "-", + n = min(getOption("width"), 78)) + { + label <- sprintf(label, ...) + n <- max(n - nchar(label) - nchar(prefix) - 2L, 8L) + if (n <= 0) + return(paste(prefix, label)) + + tail <- paste(rep.int(suffix, n), collapse = "") + paste0(prefix, " ", label, " ", tail) + + } + + heredoc <- function(text, leave = 0) { + + # remove leading, trailing whitespace + trimmed <- gsub("^\\s*\\n|\\n\\s*$", "", text) + + # split into lines + lines <- strsplit(trimmed, "\n", fixed = TRUE)[[1L]] + + # compute common indent + indent <- regexpr("[^[:space:]]", lines) + common <- min(setdiff(indent, -1L)) - leave + text <- paste(substring(lines, common), collapse = "\n") + + # substitute in ANSI links for executable renv code + ansify(text) + + } + + bootstrap <- function(version, library) { + + friendly <- renv_bootstrap_version_friendly(version) + section <- header(sprintf("Bootstrapping renv %s", friendly)) + catf(section) + + # try to install renv from cache + md5 <- attr(version, "md5", exact = TRUE) + if (length(md5)) { + pkgpath <- renv_bootstrap_find(version) + if (length(pkgpath) && file.exists(pkgpath)) { + file.copy(pkgpath, library, recursive = TRUE) + return(invisible()) + } + } + + # attempt to download renv + catf("- Downloading renv ... ", appendLF = FALSE) + withCallingHandlers( + tarball <- renv_bootstrap_download(version), + error = function(err) { + catf("FAILED") + stop("failed to download:\n", conditionMessage(err)) + } + ) + catf("OK") + on.exit(unlink(tarball), add = TRUE) + + # now attempt to install + catf("- Installing renv ... ", appendLF = FALSE) + withCallingHandlers( + status <- renv_bootstrap_install(version, tarball, library), + error = function(err) { + catf("FAILED") + stop("failed to install:\n", conditionMessage(err)) + } + ) + catf("OK") + + # add empty line to break up bootstrapping from normal output + catf("") + return(invisible()) + } + + renv_bootstrap_tests_running <- function() { + getOption("renv.tests.running", default = FALSE) + } + + renv_bootstrap_repos <- function() { + + # get CRAN repository + cran <- getOption("renv.repos.cran", "https://cloud.r-project.org") + + # check for repos override + repos <- Sys.getenv("RENV_CONFIG_REPOS_OVERRIDE", unset = NA) + if (!is.na(repos)) { + + # split on ';' if present + parts <- strsplit(repos, ";", fixed = TRUE)[[1L]] + + # split into named repositories if present + idx <- regexpr("=", parts, fixed = TRUE) + keys <- substring(parts, 1L, idx - 1L) + vals <- substring(parts, idx + 1L) + names(vals) <- keys + + # if we have a single unnamed repository, call it CRAN + if (length(vals) == 1L && identical(keys, "")) + names(vals) <- "CRAN" + + return(vals) + + } + + # check for lockfile repositories + repos <- tryCatch(renv_bootstrap_repos_lockfile(), error = identity) + if (!inherits(repos, "error") && length(repos)) + return(repos) + + # retrieve current repos + repos <- getOption("repos") + + # ensure @CRAN@ entries are resolved + repos[repos == "@CRAN@"] <- cran + + # add in renv.bootstrap.repos if set + default <- c(FALLBACK = "https://cloud.r-project.org") + extra <- getOption("renv.bootstrap.repos", default = default) + repos <- c(repos, extra) + + # remove duplicates that might've snuck in + dupes <- duplicated(repos) | duplicated(names(repos)) + repos[!dupes] + + } + + renv_bootstrap_repos_lockfile <- function() { + + lockpath <- Sys.getenv("RENV_PATHS_LOCKFILE", unset = "renv.lock") + if (!file.exists(lockpath)) + return(NULL) + + lockfile <- tryCatch(renv_json_read(lockpath), error = identity) + if (inherits(lockfile, "error")) { + warning(lockfile) + return(NULL) + } + + repos <- lockfile$R$Repositories + if (length(repos) == 0) + return(NULL) + + keys <- vapply(repos, `[[`, "Name", FUN.VALUE = character(1)) + vals <- vapply(repos, `[[`, "URL", FUN.VALUE = character(1)) + names(vals) <- keys + + return(vals) + + } + + renv_bootstrap_download <- function(version) { + + sha <- attr(version, "sha", exact = TRUE) + + methods <- if (!is.null(sha)) { + + # attempting to bootstrap a development version of renv + c( + function() renv_bootstrap_download_tarball(sha), + function() renv_bootstrap_download_github(sha) + ) + + } else { + + # attempting to bootstrap a release version of renv + c( + function() renv_bootstrap_download_tarball(version), + function() renv_bootstrap_download_cran_latest(version), + function() renv_bootstrap_download_cran_archive(version) + ) + + } + + for (method in methods) { + path <- tryCatch(method(), error = identity) + if (is.character(path) && file.exists(path)) + return(path) + } + + stop("All download methods failed") + + } + + renv_bootstrap_download_impl <- function(url, destfile) { + + mode <- "wb" + + # https://bugs.r-project.org/bugzilla/show_bug.cgi?id=17715 + fixup <- + Sys.info()[["sysname"]] == "Windows" && + substring(url, 1L, 5L) == "file:" + + if (fixup) + mode <- "w+b" + + args <- list( + url = url, + destfile = destfile, + mode = mode, + quiet = TRUE + ) + + if ("headers" %in% names(formals(utils::download.file))) { + headers <- renv_bootstrap_download_custom_headers(url) + if (length(headers) && is.character(headers)) + args$headers <- headers + } + + do.call(utils::download.file, args) + + } + + renv_bootstrap_download_custom_headers <- function(url) { + + headers <- getOption("renv.download.headers") + if (is.null(headers)) + return(character()) + + if (!is.function(headers)) + stopf("'renv.download.headers' is not a function") + + headers <- headers(url) + if (length(headers) == 0L) + return(character()) + + if (is.list(headers)) + headers <- unlist(headers, recursive = FALSE, use.names = TRUE) + + ok <- + is.character(headers) && + is.character(names(headers)) && + all(nzchar(names(headers))) + + if (!ok) + stop("invocation of 'renv.download.headers' did not return a named character vector") + + headers + + } + + renv_bootstrap_download_cran_latest <- function(version) { + + spec <- renv_bootstrap_download_cran_latest_find(version) + type <- spec$type + repos <- spec$repos + + baseurl <- utils::contrib.url(repos = repos, type = type) + ext <- if (identical(type, "source")) + ".tar.gz" + else if (Sys.info()[["sysname"]] == "Windows") + ".zip" + else + ".tgz" + name <- sprintf("renv_%s%s", version, ext) + url <- paste(baseurl, name, sep = "/") + + destfile <- file.path(tempdir(), name) + status <- tryCatch( + renv_bootstrap_download_impl(url, destfile), + condition = identity + ) + + if (inherits(status, "condition")) + return(FALSE) + + # report success and return + destfile + + } + + renv_bootstrap_download_cran_latest_find <- function(version) { + + # check whether binaries are supported on this system + binary <- + getOption("renv.bootstrap.binary", default = TRUE) && + !identical(.Platform$pkgType, "source") && + !identical(getOption("pkgType"), "source") && + Sys.info()[["sysname"]] %in% c("Darwin", "Windows") + + types <- c(if (binary) "binary", "source") + + # iterate over types + repositories + for (type in types) { + for (repos in renv_bootstrap_repos()) { + + # build arguments for utils::available.packages() call + args <- list(type = type, repos = repos) + + # add custom headers if available -- note that + # utils::available.packages() will pass this to download.file() + if ("headers" %in% names(formals(utils::download.file))) { + headers <- renv_bootstrap_download_custom_headers(repos) + if (length(headers) && is.character(headers)) + args$headers <- headers + } + + # retrieve package database + db <- tryCatch( + as.data.frame( + do.call(utils::available.packages, args), + stringsAsFactors = FALSE + ), + error = identity + ) + + if (inherits(db, "error")) + next + + # check for compatible entry + entry <- db[db$Package %in% "renv" & db$Version %in% version, ] + if (nrow(entry) == 0) + next + + # found it; return spec to caller + spec <- list(entry = entry, type = type, repos = repos) + return(spec) + + } + } + + # if we got here, we failed to find renv + fmt <- "renv %s is not available from your declared package repositories" + stop(sprintf(fmt, version)) + + } + + renv_bootstrap_download_cran_archive <- function(version) { + + name <- sprintf("renv_%s.tar.gz", version) + repos <- renv_bootstrap_repos() + urls <- file.path(repos, "src/contrib/Archive/renv", name) + destfile <- file.path(tempdir(), name) + + for (url in urls) { + + status <- tryCatch( + renv_bootstrap_download_impl(url, destfile), + condition = identity + ) + + if (identical(status, 0L)) + return(destfile) + + } + + return(FALSE) + + } + + renv_bootstrap_find <- function(version) { + + path <- renv_bootstrap_find_cache(version) + if (length(path) && file.exists(path)) { + catf("- Using renv %s from global package cache", version) + return(path) + } + + } + + renv_bootstrap_find_cache <- function(version) { + + md5 <- attr(version, "md5", exact = TRUE) + if (is.null(md5)) + return() + + # infer path to renv cache + cache <- Sys.getenv("RENV_PATHS_CACHE", unset = "") + if (!nzchar(cache)) { + tools <- asNamespace("tools") + if (is.function(tools$R_user_dir)) { + root <- tools$R_user_dir("renv", "cache") + cache <- file.path(root, "cache") + } + } + + # start completing path to cache + file.path( + cache, + renv_bootstrap_cache_version(), + renv_bootstrap_platform_prefix(), + "renv", + version, + md5, + "renv" + ) + + } + + renv_bootstrap_download_tarball <- function(version) { + + # if the user has provided the path to a tarball via + # an environment variable, then use it + tarball <- Sys.getenv("RENV_BOOTSTRAP_TARBALL", unset = NA) + if (is.na(tarball)) + return() + + # allow directories + if (dir.exists(tarball)) { + name <- sprintf("renv_%s.tar.gz", version) + tarball <- file.path(tarball, name) + } + + # bail if it doesn't exist + if (!file.exists(tarball)) { + + # let the user know we weren't able to honour their request + fmt <- "- RENV_BOOTSTRAP_TARBALL is set (%s) but does not exist." + msg <- sprintf(fmt, tarball) + warning(msg) + + # bail + return() + + } + + catf("- Using local tarball '%s'.", tarball) + tarball + + } + + renv_bootstrap_github_token <- function() { + for (envvar in c("GITHUB_TOKEN", "GITHUB_PAT", "GH_TOKEN")) { + envval <- Sys.getenv(envvar, unset = NA) + if (!is.na(envval)) + return(envval) + } + } + + renv_bootstrap_download_github <- function(version) { + + enabled <- Sys.getenv("RENV_BOOTSTRAP_FROM_GITHUB", unset = "TRUE") + if (!identical(enabled, "TRUE")) + return(FALSE) + + # prepare download options + token <- renv_bootstrap_github_token() + if (is.null(token)) + token <- "" + + if (nzchar(Sys.which("curl")) && nzchar(token)) { + fmt <- "--location --fail --header \"Authorization: token %s\"" + extra <- sprintf(fmt, token) + saved <- options("download.file.method", "download.file.extra") + options(download.file.method = "curl", download.file.extra = extra) + on.exit(do.call(base::options, saved), add = TRUE) + } else if (nzchar(Sys.which("wget")) && nzchar(token)) { + fmt <- "--header=\"Authorization: token %s\"" + extra <- sprintf(fmt, token) + saved <- options("download.file.method", "download.file.extra") + options(download.file.method = "wget", download.file.extra = extra) + on.exit(do.call(base::options, saved), add = TRUE) + } + + url <- file.path("https://api.github.com/repos/rstudio/renv/tarball", version) + name <- sprintf("renv_%s.tar.gz", version) + destfile <- file.path(tempdir(), name) + + status <- tryCatch( + renv_bootstrap_download_impl(url, destfile), + condition = identity + ) + + if (!identical(status, 0L)) + return(FALSE) + + renv_bootstrap_download_augment(destfile) + + return(destfile) + + } + + # Add Sha to DESCRIPTION. This is stop gap until #890, after which we + # can use renv::install() to fully capture metadata. + renv_bootstrap_download_augment <- function(destfile) { + sha <- renv_bootstrap_git_extract_sha1_tar(destfile) + if (is.null(sha)) { + return() + } + + # Untar + tempdir <- tempfile("renv-github-") + on.exit(unlink(tempdir, recursive = TRUE), add = TRUE) + untar(destfile, exdir = tempdir) + pkgdir <- dir(tempdir, full.names = TRUE)[[1]] + + # Modify description + desc_path <- file.path(pkgdir, "DESCRIPTION") + desc_lines <- readLines(desc_path) + remotes_fields <- c( + "RemoteType: github", + "RemoteHost: api.github.com", + "RemoteRepo: renv", + "RemoteUsername: rstudio", + "RemotePkgRef: rstudio/renv", + paste("RemoteRef: ", sha), + paste("RemoteSha: ", sha) + ) + writeLines(c(desc_lines[desc_lines != ""], remotes_fields), con = desc_path) + + # Re-tar + local({ + old <- setwd(tempdir) + on.exit(setwd(old), add = TRUE) + + tar(destfile, compression = "gzip") + }) + invisible() + } + + # Extract the commit hash from a git archive. Git archives include the SHA1 + # hash as the comment field of the tarball pax extended header + # (see https://www.kernel.org/pub/software/scm/git/docs/git-archive.html) + # For GitHub archives this should be the first header after the default one + # (512 byte) header. + renv_bootstrap_git_extract_sha1_tar <- function(bundle) { + + # open the bundle for reading + # We use gzcon for everything because (from ?gzcon) + # > Reading from a connection which does not supply a 'gzip' magic + # > header is equivalent to reading from the original connection + conn <- gzcon(file(bundle, open = "rb", raw = TRUE)) + on.exit(close(conn)) + + # The default pax header is 512 bytes long and the first pax extended header + # with the comment should be 51 bytes long + # `52 comment=` (11 chars) + 40 byte SHA1 hash + len <- 0x200 + 0x33 + res <- rawToChar(readBin(conn, "raw", n = len)[0x201:len]) + + if (grepl("^52 comment=", res)) { + sub("52 comment=", "", res) + } else { + NULL + } + } + + renv_bootstrap_install <- function(version, tarball, library) { + + # attempt to install it into project library + dir.create(library, showWarnings = FALSE, recursive = TRUE) + output <- renv_bootstrap_install_impl(library, tarball) + + # check for successful install + status <- attr(output, "status") + if (is.null(status) || identical(status, 0L)) + return(status) + + # an error occurred; report it + header <- "installation of renv failed" + lines <- paste(rep.int("=", nchar(header)), collapse = "") + text <- paste(c(header, lines, output), collapse = "\n") + stop(text) + + } + + renv_bootstrap_install_impl <- function(library, tarball) { + + # invoke using system2 so we can capture and report output + bin <- R.home("bin") + exe <- if (Sys.info()[["sysname"]] == "Windows") "R.exe" else "R" + R <- file.path(bin, exe) + + args <- c( + "--vanilla", "CMD", "INSTALL", "--no-multiarch", + "-l", shQuote(path.expand(library)), + shQuote(path.expand(tarball)) + ) + + system2(R, args, stdout = TRUE, stderr = TRUE) + + } + + renv_bootstrap_platform_prefix_default <- function() { + + # read version component + version <- Sys.getenv("RENV_PATHS_VERSION", unset = "R-%v") + + # expand placeholders + placeholders <- list( + list("%v", format(getRversion()[1, 1:2])), + list("%V", format(getRversion()[1, 1:3])) + ) + + for (placeholder in placeholders) + version <- gsub(placeholder[[1L]], placeholder[[2L]], version, fixed = TRUE) + + # include SVN revision for development versions of R + # (to avoid sharing platform-specific artefacts with released versions of R) + devel <- + identical(R.version[["status"]], "Under development (unstable)") || + identical(R.version[["nickname"]], "Unsuffered Consequences") + + if (devel) + version <- paste(version, R.version[["svn rev"]], sep = "-r") + + version + + } + + renv_bootstrap_platform_prefix <- function() { + + # construct version prefix + version <- renv_bootstrap_platform_prefix_default() + + # build list of path components + components <- c(version, R.version$platform) + + # include prefix if provided by user + prefix <- renv_bootstrap_platform_prefix_impl() + if (!is.na(prefix) && nzchar(prefix)) + components <- c(prefix, components) + + # build prefix + paste(components, collapse = "/") + + } + + renv_bootstrap_platform_prefix_impl <- function() { + + # if an explicit prefix has been supplied, use it + prefix <- Sys.getenv("RENV_PATHS_PREFIX", unset = NA) + if (!is.na(prefix)) + return(prefix) + + # if the user has requested an automatic prefix, generate it + auto <- Sys.getenv("RENV_PATHS_PREFIX_AUTO", unset = NA) + if (is.na(auto) && getRversion() >= "4.4.0") + auto <- "TRUE" + + if (auto %in% c("TRUE", "True", "true", "1")) + return(renv_bootstrap_platform_prefix_auto()) + + # empty string on failure + "" + + } + + renv_bootstrap_platform_prefix_auto <- function() { + + prefix <- tryCatch(renv_bootstrap_platform_os(), error = identity) + if (inherits(prefix, "error") || prefix %in% "unknown") { + + msg <- paste( + "failed to infer current operating system", + "please file a bug report at https://github.com/rstudio/renv/issues", + sep = "; " + ) + + warning(msg) + + } + + prefix + + } + + renv_bootstrap_platform_os <- function() { + + sysinfo <- Sys.info() + sysname <- sysinfo[["sysname"]] + + # handle Windows + macOS up front + if (sysname == "Windows") + return("windows") + else if (sysname == "Darwin") + return("macos") + + # check for os-release files + for (file in c("/etc/os-release", "/usr/lib/os-release")) + if (file.exists(file)) + return(renv_bootstrap_platform_os_via_os_release(file, sysinfo)) + + # check for redhat-release files + if (file.exists("/etc/redhat-release")) + return(renv_bootstrap_platform_os_via_redhat_release()) + + "unknown" + + } + + renv_bootstrap_platform_os_via_os_release <- function(file, sysinfo) { + + # read /etc/os-release + release <- utils::read.table( + file = file, + sep = "=", + quote = c("\"", "'"), + col.names = c("Key", "Value"), + comment.char = "#", + stringsAsFactors = FALSE + ) + + vars <- as.list(release$Value) + names(vars) <- release$Key + + # get os name + os <- tolower(sysinfo[["sysname"]]) + + # read id + id <- "unknown" + for (field in c("ID", "ID_LIKE")) { + if (field %in% names(vars) && nzchar(vars[[field]])) { + id <- vars[[field]] + break + } + } + + # read version + version <- "unknown" + for (field in c("UBUNTU_CODENAME", "VERSION_CODENAME", "VERSION_ID", "BUILD_ID")) { + if (field %in% names(vars) && nzchar(vars[[field]])) { + version <- vars[[field]] + break + } + } + + # join together + paste(c(os, id, version), collapse = "-") + + } + + renv_bootstrap_platform_os_via_redhat_release <- function() { + + # read /etc/redhat-release + contents <- readLines("/etc/redhat-release", warn = FALSE) + + # infer id + id <- if (grepl("centos", contents, ignore.case = TRUE)) + "centos" + else if (grepl("redhat", contents, ignore.case = TRUE)) + "redhat" + else + "unknown" + + # try to find a version component (very hacky) + version <- "unknown" + + parts <- strsplit(contents, "[[:space:]]")[[1L]] + for (part in parts) { + + nv <- tryCatch(numeric_version(part), error = identity) + if (inherits(nv, "error")) + next + + version <- nv[1, 1] + break + + } + + paste(c("linux", id, version), collapse = "-") + + } + + renv_bootstrap_library_root_name <- function(project) { + + # use project name as-is if requested + asis <- Sys.getenv("RENV_PATHS_LIBRARY_ROOT_ASIS", unset = "FALSE") + if (asis) + return(basename(project)) + + # otherwise, disambiguate based on project's path + id <- substring(renv_bootstrap_hash_text(project), 1L, 8L) + paste(basename(project), id, sep = "-") + + } + + renv_bootstrap_library_root <- function(project) { + + prefix <- renv_bootstrap_profile_prefix() + + path <- Sys.getenv("RENV_PATHS_LIBRARY", unset = NA) + if (!is.na(path)) + return(paste(c(path, prefix), collapse = "/")) + + path <- renv_bootstrap_library_root_impl(project) + if (!is.null(path)) { + name <- renv_bootstrap_library_root_name(project) + return(paste(c(path, prefix, name), collapse = "/")) + } + + renv_bootstrap_paths_renv("library", project = project) + + } + + renv_bootstrap_library_root_impl <- function(project) { + + root <- Sys.getenv("RENV_PATHS_LIBRARY_ROOT", unset = NA) + if (!is.na(root)) + return(root) + + type <- renv_bootstrap_project_type(project) + if (identical(type, "package")) { + userdir <- renv_bootstrap_user_dir() + return(file.path(userdir, "library")) + } + + } + + renv_bootstrap_validate_version <- function(version, description = NULL) { + + # resolve description file + # + # avoid passing lib.loc to `packageDescription()` below, since R will + # use the loaded version of the package by default anyhow. note that + # this function should only be called after 'renv' is loaded + # https://github.com/rstudio/renv/issues/1625 + description <- description %||% packageDescription("renv") + + # check whether requested version 'version' matches loaded version of renv + sha <- attr(version, "sha", exact = TRUE) + valid <- if (!is.null(sha)) + renv_bootstrap_validate_version_dev(sha, description) + else + renv_bootstrap_validate_version_release(version, description) + + if (valid) + return(TRUE) + + # the loaded version of renv doesn't match the requested version; + # give the user instructions on how to proceed + dev <- identical(description[["RemoteType"]], "github") + remote <- if (dev) + paste("rstudio/renv", description[["RemoteSha"]], sep = "@") + else + paste("renv", description[["Version"]], sep = "@") + + # display both loaded version + sha if available + friendly <- renv_bootstrap_version_friendly( + version = description[["Version"]], + sha = if (dev) description[["RemoteSha"]] + ) + + fmt <- heredoc(" + renv %1$s was loaded from project library, but this project is configured to use renv %2$s. + - Use `renv::record(\"%3$s\")` to record renv %1$s in the lockfile. + - Use `renv::restore(packages = \"renv\")` to install renv %2$s into the project library. + ") + catf(fmt, friendly, renv_bootstrap_version_friendly(version), remote) + + FALSE + + } + + renv_bootstrap_validate_version_dev <- function(version, description) { + + expected <- description[["RemoteSha"]] + if (!is.character(expected)) + return(FALSE) + + pattern <- sprintf("^\\Q%s\\E", version) + grepl(pattern, expected, perl = TRUE) + + } + + renv_bootstrap_validate_version_release <- function(version, description) { + expected <- description[["Version"]] + is.character(expected) && identical(expected, version) + } + + renv_bootstrap_hash_text <- function(text) { + + hashfile <- tempfile("renv-hash-") + on.exit(unlink(hashfile), add = TRUE) + + writeLines(text, con = hashfile) + tools::md5sum(hashfile) + + } + + renv_bootstrap_load <- function(project, libpath, version) { + + # try to load renv from the project library + if (!requireNamespace("renv", lib.loc = libpath, quietly = TRUE)) + return(FALSE) + + # warn if the version of renv loaded does not match + renv_bootstrap_validate_version(version) + + # execute renv load hooks, if any + hooks <- getHook("renv::autoload") + for (hook in hooks) + if (is.function(hook)) + tryCatch(hook(), error = warnify) + + # load the project + renv::load(project) + + TRUE + + } + + renv_bootstrap_profile_load <- function(project) { + + # if RENV_PROFILE is already set, just use that + profile <- Sys.getenv("RENV_PROFILE", unset = NA) + if (!is.na(profile) && nzchar(profile)) + return(profile) + + # check for a profile file (nothing to do if it doesn't exist) + path <- renv_bootstrap_paths_renv("profile", profile = FALSE, project = project) + if (!file.exists(path)) + return(NULL) + + # read the profile, and set it if it exists + contents <- readLines(path, warn = FALSE) + if (length(contents) == 0L) + return(NULL) + + # set RENV_PROFILE + profile <- contents[[1L]] + if (!profile %in% c("", "default")) + Sys.setenv(RENV_PROFILE = profile) + + profile + + } + + renv_bootstrap_profile_prefix <- function() { + profile <- renv_bootstrap_profile_get() + if (!is.null(profile)) + return(file.path("profiles", profile, "renv")) + } + + renv_bootstrap_profile_get <- function() { + profile <- Sys.getenv("RENV_PROFILE", unset = "") + renv_bootstrap_profile_normalize(profile) + } + + renv_bootstrap_profile_set <- function(profile) { + profile <- renv_bootstrap_profile_normalize(profile) + if (is.null(profile)) + Sys.unsetenv("RENV_PROFILE") + else + Sys.setenv(RENV_PROFILE = profile) + } + + renv_bootstrap_profile_normalize <- function(profile) { + + if (is.null(profile) || profile %in% c("", "default")) + return(NULL) + + profile + + } + + renv_bootstrap_path_absolute <- function(path) { + + substr(path, 1L, 1L) %in% c("~", "/", "\\") || ( + substr(path, 1L, 1L) %in% c(letters, LETTERS) && + substr(path, 2L, 3L) %in% c(":/", ":\\") + ) + + } + + renv_bootstrap_paths_renv <- function(..., profile = TRUE, project = NULL) { + renv <- Sys.getenv("RENV_PATHS_RENV", unset = "renv") + root <- if (renv_bootstrap_path_absolute(renv)) NULL else project + prefix <- if (profile) renv_bootstrap_profile_prefix() + components <- c(root, renv, prefix, ...) + paste(components, collapse = "/") + } + + renv_bootstrap_project_type <- function(path) { + + descpath <- file.path(path, "DESCRIPTION") + if (!file.exists(descpath)) + return("unknown") + + desc <- tryCatch( + read.dcf(descpath, all = TRUE), + error = identity + ) + + if (inherits(desc, "error")) + return("unknown") + + type <- desc$Type + if (!is.null(type)) + return(tolower(type)) + + package <- desc$Package + if (!is.null(package)) + return("package") + + "unknown" + + } + + renv_bootstrap_user_dir <- function() { + dir <- renv_bootstrap_user_dir_impl() + path.expand(chartr("\\", "/", dir)) + } + + renv_bootstrap_user_dir_impl <- function() { + + # use local override if set + override <- getOption("renv.userdir.override") + if (!is.null(override)) + return(override) + + # use R_user_dir if available + tools <- asNamespace("tools") + if (is.function(tools$R_user_dir)) + return(tools$R_user_dir("renv", "cache")) + + # try using our own backfill for older versions of R + envvars <- c("R_USER_CACHE_DIR", "XDG_CACHE_HOME") + for (envvar in envvars) { + root <- Sys.getenv(envvar, unset = NA) + if (!is.na(root)) + return(file.path(root, "R/renv")) + } + + # use platform-specific default fallbacks + if (Sys.info()[["sysname"]] == "Windows") + file.path(Sys.getenv("LOCALAPPDATA"), "R/cache/R/renv") + else if (Sys.info()[["sysname"]] == "Darwin") + "~/Library/Caches/org.R-project.R/R/renv" + else + "~/.cache/R/renv" + + } + + renv_bootstrap_version_friendly <- function(version, shafmt = NULL, sha = NULL) { + sha <- sha %||% attr(version, "sha", exact = TRUE) + parts <- c(version, sprintf(shafmt %||% " [sha: %s]", substring(sha, 1L, 7L))) + paste(parts, collapse = "") + } + + renv_bootstrap_exec <- function(project, libpath, version) { + if (!renv_bootstrap_load(project, libpath, version)) + renv_bootstrap_run(project, libpath, version) + } + + renv_bootstrap_run <- function(project, libpath, version) { + + # perform bootstrap + bootstrap(version, libpath) + + # exit early if we're just testing bootstrap + if (!is.na(Sys.getenv("RENV_BOOTSTRAP_INSTALL_ONLY", unset = NA))) + return(TRUE) + + # try again to load + if (requireNamespace("renv", lib.loc = libpath, quietly = TRUE)) { + return(renv::load(project = project)) + } + + # failed to download or load renv; warn the user + msg <- c( + "Failed to find an renv installation: the project will not be loaded.", + "Use `renv::activate()` to re-initialize the project." + ) + + warning(paste(msg, collapse = "\n"), call. = FALSE) + + } + + renv_bootstrap_cache_version <- function() { + # NOTE: users should normally not override the cache version; + # this is provided just to make testing easier + Sys.getenv("RENV_CACHE_VERSION", unset = "v5") + } + + renv_bootstrap_cache_version_previous <- function() { + version <- renv_bootstrap_cache_version() + number <- as.integer(substring(version, 2L)) + paste("v", number - 1L, sep = "") + } + + renv_json_read <- function(file = NULL, text = NULL) { + + jlerr <- NULL + + # if jsonlite is loaded, use that instead + if ("jsonlite" %in% loadedNamespaces()) { + + json <- tryCatch(renv_json_read_jsonlite(file, text), error = identity) + if (!inherits(json, "error")) + return(json) + + jlerr <- json + + } + + # otherwise, fall back to the default JSON reader + json <- tryCatch(renv_json_read_default(file, text), error = identity) + if (!inherits(json, "error")) + return(json) + + # report an error + if (!is.null(jlerr)) + stop(jlerr) + else + stop(json) + + } + + renv_json_read_jsonlite <- function(file = NULL, text = NULL) { + text <- paste(text %||% readLines(file, warn = FALSE), collapse = "\n") + jsonlite::fromJSON(txt = text, simplifyVector = FALSE) + } + + renv_json_read_patterns <- function() { + + list( + + # objects + list("{", "\t\n\tobject(\t\n\t", TRUE), + list("}", "\t\n\t)\t\n\t", TRUE), + + # arrays + list("[", "\t\n\tarray(\t\n\t", TRUE), + list("]", "\n\t\n)\n\t\n", TRUE), + + # maps + list(":", "\t\n\t=\t\n\t", TRUE), + + # newlines + list("\\u000a", "\n", FALSE) + + ) + + } + + renv_json_read_envir <- function() { + + envir <- new.env(parent = emptyenv()) + + envir[["+"]] <- `+` + envir[["-"]] <- `-` + + envir[["object"]] <- function(...) { + result <- list(...) + names(result) <- as.character(names(result)) + result + } + + envir[["array"]] <- list + + envir[["true"]] <- TRUE + envir[["false"]] <- FALSE + envir[["null"]] <- NULL + + envir + + } + + renv_json_read_remap <- function(object, patterns) { + + # repair names if necessary + if (!is.null(names(object))) { + + nms <- names(object) + for (pattern in patterns) + nms <- gsub(pattern[[2L]], pattern[[1L]], nms, fixed = TRUE) + names(object) <- nms + + } + + # repair strings if necessary + if (is.character(object)) { + for (pattern in patterns) + object <- gsub(pattern[[2L]], pattern[[1L]], object, fixed = TRUE) + } + + # recurse for other objects + if (is.recursive(object)) + for (i in seq_along(object)) + object[i] <- list(renv_json_read_remap(object[[i]], patterns)) + + # return remapped object + object + + } + + renv_json_read_default <- function(file = NULL, text = NULL) { + + # read json text + text <- paste(text %||% readLines(file, warn = FALSE), collapse = "\n") + + # convert into something the R parser will understand + patterns <- renv_json_read_patterns() + transformed <- text + for (pattern in patterns) + transformed <- gsub(pattern[[1L]], pattern[[2L]], transformed, fixed = TRUE) + + # parse it + rfile <- tempfile("renv-json-", fileext = ".R") + on.exit(unlink(rfile), add = TRUE) + writeLines(transformed, con = rfile) + json <- parse(rfile, keep.source = FALSE, srcfile = NULL)[[1L]] + + # evaluate in safe environment + result <- eval(json, envir = renv_json_read_envir()) + + # fix up strings if necessary -- do so only with reversible patterns + patterns <- Filter(function(pattern) pattern[[3L]], patterns) + renv_json_read_remap(result, patterns) + + } + + + # load the renv profile, if any + renv_bootstrap_profile_load(project) + + # construct path to library root + root <- renv_bootstrap_library_root(project) + + # construct library prefix for platform + prefix <- renv_bootstrap_platform_prefix() + + # construct full libpath + libpath <- file.path(root, prefix) + + # run bootstrap code + renv_bootstrap_exec(project, libpath, version) + + invisible() + +}) diff --git a/renv/settings.json b/renv/settings.json new file mode 100644 index 00000000..4aa54416 --- /dev/null +++ b/renv/settings.json @@ -0,0 +1,20 @@ +{ + "bioconductor.version": null, + "external.libraries": [], + "ignored.packages": [], + "package.dependency.fields": [ + "Imports", + "Depends", + "LinkingTo" + ], + "ppm.enabled": null, + "ppm.ignored.urls": [], + "r.version": null, + "snapshot.dev": false, + "snapshot.type": "implicit", + "use.cache": true, + "vcs.ignore.cellar": true, + "vcs.ignore.library": true, + "vcs.ignore.local": true, + "vcs.manage.ignores": true +} From bae48ff73ca39c253c00f2bc997b2aa8a70911a2 Mon Sep 17 00:00:00 2001 From: "Stephanie J. Spielman" Date: Wed, 21 Jan 2026 09:37:35 -0500 Subject: [PATCH 041/148] restore the .Rprofile file now that we're bumped --- .Rprofile | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 .Rprofile diff --git a/.Rprofile b/.Rprofile new file mode 100644 index 00000000..7b0c92de --- /dev/null +++ b/.Rprofile @@ -0,0 +1,30 @@ +source("renv/activate.R") + +# Set the repos using the renv.lock file +renv_json <- jsonlite::read_json("renv.lock") +renv_r_repos <- renv_json$R$Repositories + +# Extract the names +repo_names <- purrr::flatten_chr( + purrr::map( + renv_r_repos, + ~ .x$Name + ) +) + +# Extract the URLs +repo_urls <- purrr::flatten_chr( + purrr::map( + renv_r_repos, + ~ .x$URL + ) +) + +# Set the repo names +names(repo_urls) <- repo_names + +# Set the options +options(repos = repo_urls) + +# Remove all these objects +rm(renv_json, renv_r_repos, repo_names, repo_urls) From 3e8aaf483a3daf65062c55f5a0a12674ad5858dd Mon Sep 17 00:00:00 2001 From: "Stephanie J. Spielman" Date: Wed, 21 Jan 2026 10:57:05 -0500 Subject: [PATCH 042/148] verions to json --- renv/settings.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/renv/settings.json b/renv/settings.json index 4aa54416..9566b6ff 100644 --- a/renv/settings.json +++ b/renv/settings.json @@ -1,5 +1,5 @@ { - "bioconductor.version": null, + "bioconductor.version": "3.22", "external.libraries": [], "ignored.packages": [], "package.dependency.fields": [ @@ -7,9 +7,9 @@ "Depends", "LinkingTo" ], - "ppm.enabled": null, + "ppm.enabled": true, "ppm.ignored.urls": [], - "r.version": null, + "r.version": "4.5.2", "snapshot.dev": false, "snapshot.type": "implicit", "use.cache": true, From 7db65b4d487fc1c8c6943763f2c17903699b4488 Mon Sep 17 00:00:00 2001 From: "Stephanie J. Spielman" Date: Wed, 21 Jan 2026 10:59:11 -0500 Subject: [PATCH 043/148] psm --- renv.lock | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/renv.lock b/renv.lock index efe55106..f6ce034e 100644 --- a/renv.lock +++ b/renv.lock @@ -2,10 +2,6 @@ "R": { "Version": "4.5.2", "Repositories": [ - { - "Name": "CRAN", - "URL": "https://cloud.r-project.org" - }, { "Name": "BioCsoft", "URL": "https://bioconductor.org/packages/3.22/bioc" @@ -25,6 +21,10 @@ { "Name": "BioCbooks", "URL": "https://bioconductor.org/packages/3.22/books" + }, + { + "Name": "CRAN", + "URL": "https://p3m.dev/cran/latest" } ] }, From fbbcfa6f73e0ba2eb2669f2776ffaa0ab26daca1 Mon Sep 17 00:00:00 2001 From: "Stephanie J. Spielman" Date: Wed, 21 Jan 2026 11:29:11 -0500 Subject: [PATCH 044/148] 3.19 -> 3.22 --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index e551636f..010a6581 100644 --- a/Dockerfile +++ b/Dockerfile @@ -45,7 +45,7 @@ RUN cd fastp-${FASTP_VERSION} && \ make && make install # Main image with Biocconductor and other tools -FROM bioconductor/bioconductor_docker:3.19 AS final +FROM bioconductor/bioconductor_docker:3.22 AS final LABEL maintainer="ccdl@alexslemonade.org" WORKDIR /rocker-build/ From f5f4e9484dee2e7ab28912346435fbc148a90631 Mon Sep 17 00:00:00 2001 From: "Stephanie J. Spielman" Date: Wed, 21 Jan 2026 11:29:44 -0500 Subject: [PATCH 045/148] remove the temp fix for Rsamtools, to see if it works now --- Dockerfile | 2 -- 1 file changed, 2 deletions(-) diff --git a/Dockerfile b/Dockerfile index 010a6581..045a49f9 100644 --- a/Dockerfile +++ b/Dockerfile @@ -73,8 +73,6 @@ WORKDIR /usr/local/renv ENV RENV_CONFIG_CACHE_ENABLED=FALSE RUN Rscript -e "install.packages('renv')" -# Temporary fix for broken(?) RSamtools package -RUN Rscript -e "install.packages('BiocManager'); BiocManager::install('Rsamtools')" COPY renv.lock renv.lock RUN Rscript -e "renv::restore()" \ From 36b0b51b3a1ad4019371b648c709db0e723bcdc0 Mon Sep 17 00:00:00 2001 From: "Stephanie J. Spielman" Date: Wed, 21 Jan 2026 18:03:30 -0500 Subject: [PATCH 046/148] Apply suggestions from code review Co-authored-by: Joshua Shapiro --- Dockerfile | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/Dockerfile b/Dockerfile index 045a49f9..f4871b96 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,5 +1,6 @@ # Build salmon from source in a separate image -FROM ubuntu:22.04 AS build +# matching base image from https://github.com/rocker-org/rocker-versioned2/blob/master/dockerfiles/r-ver_4.5.2.Dockerfile +FROM docker.io/library/ubuntu:noble AS build # Build dependencies RUN apt-get update -qq @@ -66,7 +67,7 @@ RUN DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \ # Python packages COPY requirements.txt requirements.txt -RUN pip install -r requirements.txt +RUN pip install -r requirements.txt --break-system-packages # Use renv for R packages WORKDIR /usr/local/renv From ddc3090f0edc0180114caf500b50f2699a4cf262 Mon Sep 17 00:00:00 2001 From: "Stephanie J. Spielman" Date: Wed, 21 Jan 2026 19:14:00 -0500 Subject: [PATCH 047/148] Apply suggestions from code review Co-authored-by: Joshua Shapiro --- Dockerfile | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index f4871b96..ea4593bd 100644 --- a/Dockerfile +++ b/Dockerfile @@ -16,6 +16,7 @@ RUN DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \ libdeflate-dev \ libisal-dev \ liblzma-dev \ + libzstd-dev \ make \ pkg-config \ unzip \ @@ -30,7 +31,7 @@ RUN unzip awscliv2.zip RUN ./aws/install # Build salmon -ARG SALMON_VERSION=1.10.1 +ARG SALMON_VERSION=1.10.3 RUN curl -LO https://github.com/COMBINE-lab/salmon/archive/refs/tags/v${SALMON_VERSION}.tar.gz RUN tar xzf v${SALMON_VERSION}.tar.gz RUN mkdir salmon-${SALMON_VERSION}/build From 3a2e4d9410ad0f0198347d90b88571260a130e20 Mon Sep 17 00:00:00 2001 From: Joshua Shapiro Date: Wed, 28 Jan 2026 13:31:02 -0500 Subject: [PATCH 048/148] bump renv --- renv.lock | 58 +++++-------------------------------------------- renv/activate.R | 32 ++++++++++++++++++++------- 2 files changed, 29 insertions(+), 61 deletions(-) diff --git a/renv.lock b/renv.lock index f6ce034e..21d93af3 100644 --- a/renv.lock +++ b/renv.lock @@ -21,7 +21,7 @@ { "Name": "BioCbooks", "URL": "https://bioconductor.org/packages/3.22/books" - }, + }, { "Name": "CRAN", "URL": "https://p3m.dev/cran/latest" @@ -11570,58 +11570,10 @@ }, "renv": { "Package": "renv", - "Version": "1.1.6", - "Source": "Repository", - "Type": "Package", - "Title": "Project Environments", - "Authors@R": "c( person(\"Kevin\", \"Ushey\", role = c(\"aut\", \"cre\"), email = \"kevin@rstudio.com\", comment = c(ORCID = \"0000-0003-2880-7407\")), person(\"Hadley\", \"Wickham\", role = c(\"aut\"), email = \"hadley@rstudio.com\", comment = c(ORCID = \"0000-0003-4757-117X\")), person(\"Posit Software, PBC\", role = c(\"cph\", \"fnd\")) )", - "Description": "A dependency management toolkit for R. Using 'renv', you can create and manage project-local R libraries, save the state of these libraries to a 'lockfile', and later restore your library as required. Together, these tools can help make your projects more isolated, portable, and reproducible.", - "License": "MIT + file LICENSE", - "URL": "https://rstudio.github.io/renv/, https://github.com/rstudio/renv", - "BugReports": "https://github.com/rstudio/renv/issues", - "Imports": [ - "utils" - ], - "Suggests": [ - "BiocManager", - "cli", - "compiler", - "covr", - "cpp11", - "curl", - "devtools", - "generics", - "gitcreds", - "jsonlite", - "jsonvalidate", - "knitr", - "miniUI", - "modules", - "packrat", - "pak", - "R6", - "remotes", - "reticulate", - "rmarkdown", - "rstudioapi", - "shiny", - "testthat", - "uuid", - "waldo", - "yaml", - "webfakes" - ], - "Encoding": "UTF-8", - "RoxygenNote": "7.3.3", - "VignetteBuilder": "knitr", - "Config/Needs/website": "tidyverse/tidytemplate", - "Config/testthat/edition": "3", - "Config/testthat/parallel": "true", - "Config/testthat/start-first": "bioconductor,python,install,restore,snapshot,retrieve,remotes", - "NeedsCompilation": "no", - "Author": "Kevin Ushey [aut, cre] (ORCID: ), Hadley Wickham [aut] (ORCID: ), Posit Software, PBC [cph, fnd]", - "Maintainer": "Kevin Ushey ", - "Repository": "CRAN" + "Version": "1.1.7", + "OS_type": null, + "Repository": "CRAN", + "Source": "Repository" }, "reprex": { "Package": "reprex", diff --git a/renv/activate.R b/renv/activate.R index 4eba67cf..f9b62be9 100644 --- a/renv/activate.R +++ b/renv/activate.R @@ -2,8 +2,8 @@ local({ # the requested version of renv - version <- "1.1.6" - attr(version, "md5") <- "3036c4b273d882c56e8cdd660ebaf6f0" + version <- "1.1.7" + attr(version, "md5") <- "37efb9ddbcd335186ff96ba8dedfd19e" attr(version, "sha") <- NULL # the project directory @@ -169,6 +169,16 @@ local({ if (quiet) return(invisible()) + # also check for config environment variables that should suppress messages + # https://github.com/rstudio/renv/issues/2214 + enabled <- Sys.getenv("RENV_CONFIG_STARTUP_QUIET", unset = NA) + if (!is.na(enabled) && tolower(enabled) %in% c("true", "1")) + return(invisible()) + + enabled <- Sys.getenv("RENV_CONFIG_SYNCHRONIZED_CHECK", unset = NA) + if (!is.na(enabled) && tolower(enabled) %in% c("false", "0")) + return(invisible()) + msg <- sprintf(fmt, ...) cat(msg, file = stdout(), sep = if (appendLF) "\n" else "") @@ -266,22 +276,22 @@ local({ # check for repos override repos <- Sys.getenv("RENV_CONFIG_REPOS_OVERRIDE", unset = NA) if (!is.na(repos)) { - + # split on ';' if present parts <- strsplit(repos, ";", fixed = TRUE)[[1L]] - + # split into named repositories if present idx <- regexpr("=", parts, fixed = TRUE) keys <- substring(parts, 1L, idx - 1L) vals <- substring(parts, idx + 1L) names(vals) <- keys - + # if we have a single unnamed repository, call it CRAN if (length(vals) == 1L && identical(keys, "")) names(vals) <- "CRAN" - + return(vals) - + } # check for lockfile repositories @@ -547,6 +557,12 @@ local({ # infer path to renv cache cache <- Sys.getenv("RENV_PATHS_CACHE", unset = "") + if (!nzchar(cache)) { + root <- Sys.getenv("RENV_PATHS_ROOT", unset = NA) + if (!is.na(root)) + cache <- file.path(root, "cache") + } + if (!nzchar(cache)) { tools <- asNamespace("tools") if (is.function(tools$R_user_dir)) { @@ -1036,7 +1052,7 @@ local({ renv_bootstrap_validate_version_release <- function(version, description) { expected <- description[["Version"]] - is.character(expected) && identical(expected, version) + is.character(expected) && identical(c(expected), c(version)) } renv_bootstrap_hash_text <- function(text) { From 3ff1afb0578419bc8a6fbb466ea5a83d6da1d2b2 Mon Sep 17 00:00:00 2001 From: Joshua Shapiro Date: Wed, 28 Jan 2026 19:38:17 -0500 Subject: [PATCH 049/148] Update snapshot --- renv.lock | 450 ++++++++++++++++++++++++++++-------------------- renv/activate.R | 2 +- 2 files changed, 264 insertions(+), 188 deletions(-) diff --git a/renv.lock b/renv.lock index 21d93af3..a2b17e1e 100644 --- a/renv.lock +++ b/renv.lock @@ -301,7 +301,8 @@ "NeedsCompilation": "no", "Author": "Dirk Eddelbuettel [aut, cre] (ORCID: ), John W. Emerson [aut], Michael J. Kane [aut] (ORCID: )", "Maintainer": "Dirk Eddelbuettel ", - "Repository": "CRAN" + "Repository": "CRAN", + "Encoding": "UTF-8" }, "Biobase": { "Package": "Biobase", @@ -818,7 +819,7 @@ "SystemRequirements": "cairo (>= 1.2 http://www.cairographics.org/)", "URL": "http://www.rforge.net/Cairo/", "NeedsCompilation": "yes", - "Repository": "https://packagemanager.posit.co/cran/latest", + "Repository": "CRAN", "Encoding": "UTF-8" }, "ComplexHeatmap": { @@ -963,7 +964,7 @@ "NeedsCompilation": "no", "Author": "R Special Interest Group on Databases (R-SIG-DB) [aut], Hadley Wickham [aut], Kirill Müller [aut, cre] (), R Consortium [fnd]", "Maintainer": "Kirill Müller ", - "Repository": "https://packagemanager.posit.co/cran/latest" + "Repository": "CRAN" }, "DESeq2": { "Package": "DESeq2", @@ -1394,7 +1395,7 @@ "Description": "Cover-tree and kd-tree fast k-nearest neighbor search algorithms and related applications including KNN classification, regression and information measures are implemented.", "License": "GPL (>= 2)", "NeedsCompilation": "yes", - "Repository": "https://packagemanager.posit.co/cran/latest", + "Repository": "CRAN", "Author": "Alina Beygelzimer [aut] (cover tree library), Sham Kakadet [aut] (cover tree library), John Langford [aut] (cover tree library), Sunil Arya [aut] (ANN library 1.1.2 for the kd-tree approach), David Mount [aut] (ANN library 1.1.2 for the kd-tree approach), Shengqiao Li [aut, cre]", "Maintainer": "Shengqiao Li ", "Encoding": "UTF-8" @@ -2039,7 +2040,8 @@ "NeedsCompilation": "no", "Author": "Zuguang Gu [aut, cre] (ORCID: )", "Maintainer": "Zuguang Gu ", - "Repository": "CRAN" + "Repository": "CRAN", + "Encoding": "UTF-8" }, "GlobalOptions": { "Package": "GlobalOptions", @@ -2070,7 +2072,8 @@ "NeedsCompilation": "no", "Author": "Zuguang Gu [aut, cre] (ORCID: )", "Maintainer": "Zuguang Gu ", - "Repository": "CRAN" + "Repository": "CRAN", + "Encoding": "UTF-8" }, "HDF5Array": { "Package": "HDF5Array", @@ -2436,8 +2439,7 @@ "RemoteRepo": "PLIER", "RemoteUsername": "wgmao", "RemoteRef": "v0.1.6", - "RemoteSha": "08ed6b54e4efe5249107cb335cd8e169657cbc44", - "NeedsCompilation": "no" + "RemoteSha": "08ed6b54e4efe5249107cb335cd8e169657cbc44" }, "ProtGenerics": { "Package": "ProtGenerics", @@ -2487,7 +2489,7 @@ "URL": "https://github.com/HenrikBengtsson/R.methodsS3", "BugReports": "https://github.com/HenrikBengtsson/R.methodsS3/issues", "NeedsCompilation": "no", - "Repository": "https://packagemanager.posit.co/cran/latest", + "Repository": "CRAN", "Encoding": "UTF-8" }, "R.oo": { @@ -2515,7 +2517,7 @@ "URL": "https://henrikbengtsson.github.io/R.oo/, https://github.com/HenrikBengtsson/R.oo", "BugReports": "https://github.com/HenrikBengtsson/R.oo/issues", "NeedsCompilation": "no", - "Repository": "https://packagemanager.posit.co/cran/latest", + "Repository": "CRAN", "Encoding": "UTF-8" }, "R.utils": { @@ -2546,7 +2548,7 @@ "URL": "https://henrikbengtsson.github.io/R.utils/, https://github.com/HenrikBengtsson/R.utils", "BugReports": "https://github.com/HenrikBengtsson/R.utils/issues", "NeedsCompilation": "no", - "Repository": "https://packagemanager.posit.co/cran/latest", + "Repository": "CRAN", "Encoding": "UTF-8" }, "R6": { @@ -2573,7 +2575,7 @@ "NeedsCompilation": "no", "Author": "Winston Chang [aut, cre], Posit Software, PBC [cph, fnd]", "Maintainer": "Winston Chang ", - "Repository": "https://packagemanager.posit.co/cran/latest" + "Repository": "CRAN" }, "RColorBrewer": { "Package": "RColorBrewer", @@ -2590,7 +2592,7 @@ "Description": "Provides color schemes for maps (and other graphics) designed by Cynthia Brewer as described at http://colorbrewer2.org.", "License": "Apache License 2.0", "NeedsCompilation": "no", - "Repository": "https://packagemanager.posit.co/cran/latest", + "Repository": "CRAN", "Encoding": "UTF-8" }, "RCurl": { @@ -2616,7 +2618,7 @@ "NeedsCompilation": "yes", "Author": "CRAN Team [ctb, cre] (de facto maintainer since 2013), Duncan Temple Lang [aut] ()", "Maintainer": "CRAN Team ", - "Repository": "https://packagemanager.posit.co/cran/latest", + "Repository": "CRAN", "Encoding": "UTF-8" }, "RSQLite": { @@ -2708,7 +2710,7 @@ "NeedsCompilation": "yes", "Author": "Yixuan Qiu [aut, cre], Jiali Mei [aut] (Function interface of matrix operation), Gael Guennebaud [ctb] (Eigenvalue solvers from the 'Eigen' library), Jitse Niesen [ctb] (Eigenvalue solvers from the 'Eigen' library)", "Maintainer": "Yixuan Qiu ", - "Repository": "https://packagemanager.posit.co/cran/latest", + "Repository": "CRAN", "Encoding": "UTF-8" }, "Rcpp": { @@ -2813,7 +2815,8 @@ "NeedsCompilation": "yes", "Author": "Dirk Eddelbuettel [aut, cre] (ORCID: ), Romain Francois [aut] (ORCID: ), Doug Bates [aut] (ORCID: ), Binxiang Ni [aut], Conrad Sanderson [aut] (ORCID: )", "Maintainer": "Dirk Eddelbuettel ", - "Repository": "CRAN" + "Repository": "CRAN", + "Encoding": "UTF-8" }, "RcppEigen": { "Package": "RcppEigen", @@ -2850,7 +2853,7 @@ "NeedsCompilation": "yes", "Author": "Doug Bates [aut] (), Dirk Eddelbuettel [aut, cre] (), Romain Francois [aut] (), Yixuan Qiu [aut] (), Authors of Eigen [cph] (Authorship and copyright in included Eigen library as detailed in inst/COPYRIGHTS)", "Maintainer": "Dirk Eddelbuettel ", - "Repository": "https://packagemanager.posit.co/cran/latest", + "Repository": "CRAN", "Encoding": "UTF-8" }, "RcppML": { @@ -2886,7 +2889,7 @@ "NeedsCompilation": "yes", "Author": "Zachary DeBruine [aut, cre] ()", "Maintainer": "Zachary DeBruine ", - "Repository": "https://packagemanager.posit.co/cran/latest", + "Repository": "CRAN", "Encoding": "UTF-8" }, "RcppNumerical": { @@ -2921,7 +2924,8 @@ "RoxygenNote": "7.2.3", "NeedsCompilation": "yes", "Author": "Yixuan Qiu [aut, cre], Ralf Stubner [ctb] (Integration on infinite intervals), Sreekumar Balan [aut] (Numerical integration library), Matt Beall [aut] (Numerical integration library), Mark Sauder [aut] (Numerical integration library), Naoaki Okazaki [aut] (The libLBFGS library), Thomas Hahn [aut] (The Cuba library)", - "Repository": "CRAN" + "Repository": "CRAN", + "Encoding": "UTF-8" }, "RcppProgress": { "Package": "RcppProgress", @@ -2946,7 +2950,7 @@ "RoxygenNote": "6.1.1", "Encoding": "UTF-8", "NeedsCompilation": "no", - "Repository": "https://packagemanager.posit.co/cran/latest" + "Repository": "CRAN" }, "RcppTOML": { "Package": "RcppTOML", @@ -2976,7 +2980,7 @@ "NeedsCompilation": "yes", "Author": "Dirk Eddelbuettel [aut, cre] (), Mark Gillard [aut] (Author of 'toml++' header library)", "Maintainer": "Dirk Eddelbuettel ", - "Repository": "https://packagemanager.posit.co/cran/latest", + "Repository": "CRAN", "Encoding": "UTF-8" }, "ResidualMatrix": { @@ -3065,7 +3069,8 @@ "URL": "https://prs.ism.ac.jp/~nakama/Rhpc/", "ByteCompile": "true", "NeedsCompilation": "yes", - "Repository": "CRAN" + "Repository": "CRAN", + "Encoding": "UTF-8" }, "Rhtslib": { "Package": "Rhtslib", @@ -3190,7 +3195,7 @@ "Author": "Jesse Krijthe [aut, cre], Laurens van der Maaten [cph] (Author of original C++ code)", "Maintainer": "Jesse Krijthe ", "License_is_FOSS": "yes", - "Repository": "https://packagemanager.posit.co/cran/latest" + "Repository": "CRAN" }, "S4Arrays": { "Package": "S4Arrays", @@ -3321,7 +3326,7 @@ "NeedsCompilation": "yes", "Author": "Object-Oriented Programming Working Group [cph], Davis Vaughan [aut], Jim Hester [aut] (ORCID: ), Tomasz Kalinowski [aut], Will Landau [aut], Michael Lawrence [aut], Martin Maechler [aut] (ORCID: ), Luke Tierney [aut], Hadley Wickham [aut, cre] (ORCID: )", "Maintainer": "Hadley Wickham ", - "Repository": "https://packagemanager.posit.co/cran/latest" + "Repository": "CRAN" }, "SQUAREM": { "Package": "SQUAREM", @@ -3342,7 +3347,8 @@ "Maintainer": "Ravi Varadhan ", "URL": "https://coah.jhu.edu/people/Faculty_personal_Pages/Varadhan.html", "Repository": "CRAN", - "NeedsCompilation": "no" + "NeedsCompilation": "no", + "Encoding": "UTF-8" }, "ScaledMatrix": { "Package": "ScaledMatrix", @@ -3766,7 +3772,7 @@ "Biarch": "true", "Author": "Jeroen Ooms [aut, cre] (ORCID: ), George Stagg [ctb] (ORCID: ), Jan Marvin Garbuszus [ctb]", "Maintainer": "Jeroen Ooms ", - "Repository": "https://packagemanager.posit.co/cran/latest" + "Repository": "CRAN" }, "XML": { "Package": "XML", @@ -3791,7 +3797,7 @@ "NeedsCompilation": "yes", "Author": "CRAN Team [ctb, cre] (de facto maintainer since 2013), Duncan Temple Lang [aut] (ORCID: ), Tomas Kalibera [ctb], Ivan Krylov [ctb]", "Maintainer": "CRAN Team ", - "Repository": "https://packagemanager.posit.co/cran/latest", + "Repository": "CRAN", "Encoding": "UTF-8" }, "XVector": { @@ -3859,7 +3865,7 @@ "License": "MIT + file LICENSE", "NeedsCompilation": "no", "Author": "Tony Plate [aut, cre], Richard Heiberger [aut]", - "Repository": "https://packagemanager.posit.co/cran/latest", + "Repository": "CRAN", "Encoding": "UTF-8" }, "affy": { @@ -4322,7 +4328,7 @@ "NeedsCompilation": "yes", "Author": "Emmanuel Paradis [aut, cre, cph] (), Simon Blomberg [aut, cph] (), Ben Bolker [aut, cph] (), Joseph Brown [aut, cph] (), Santiago Claramunt [aut, cph] (), Julien Claude [aut, cph] (), Hoa Sien Cuong [aut, cph], Richard Desper [aut, cph], Gilles Didier [aut, cph] (), Benoit Durand [aut, cph], Julien Dutheil [aut, cph] (), RJ Ewing [aut, cph], Olivier Gascuel [aut, cph], Thomas Guillerme [aut, cph] (), Christoph Heibl [aut, cph] (), Anthony Ives [aut, cph] (), Bradley Jones [aut, cph] (), Franz Krah [aut, cph] (), Daniel Lawson [aut, cph] (), Vincent Lefort [aut, cph], Pierre Legendre [aut, cph] (), Jim Lemon [aut, cph], Guillaume Louvel [aut, cph] (), Federico Marotta [aut, cph], Eric Marcon [aut, cph] (), Rosemary McCloskey [aut, cph] (), Johan Nylander [aut, cph], Rainer Opgen-Rhein [aut, cph], Andrei-Alin Popescu [aut, cph], Manuela Royer-Carenzi [aut, cph], Klaus Schliep [aut, cph] (), Korbinian Strimmer [aut, cph] (), Damien de Vienne [aut, cph] ()", "Maintainer": "Emmanuel Paradis ", - "Repository": "RSPM" + "Repository": "CRAN" }, "apeglm": { "Package": "apeglm", @@ -4466,7 +4472,7 @@ "NeedsCompilation": "yes", "Author": "Jeroen Ooms [aut, cre] ()", "Maintainer": "Jeroen Ooms ", - "Repository": "https://packagemanager.posit.co/cran/latest" + "Repository": "CRAN" }, "assertthat": { "Package": "assertthat", @@ -4488,7 +4494,7 @@ "NeedsCompilation": "no", "Author": "Hadley Wickham [aut, cre]", "Maintainer": "Hadley Wickham ", - "Repository": "https://packagemanager.posit.co/cran/latest", + "Repository": "CRAN", "Encoding": "UTF-8" }, "assorthead": { @@ -4551,7 +4557,7 @@ "NeedsCompilation": "no", "Author": "Igor Dolgalev [aut, cre] ()", "Maintainer": "Igor Dolgalev ", - "Repository": "https://packagemanager.posit.co/cran/latest" + "Repository": "CRAN" }, "backports": { "Package": "backports", @@ -4573,7 +4579,7 @@ "Encoding": "UTF-8", "RoxygenNote": "7.3.1", "Author": "Michel Lang [cre, aut] (), Duncan Murdoch [aut], R Core Team [aut]", - "Repository": "RSPM" + "Repository": "CRAN" }, "base64enc": { "Package": "base64enc", @@ -4592,7 +4598,7 @@ "License": "GPL-2 | GPL-3", "URL": "http://www.rforge.net/base64enc", "NeedsCompilation": "yes", - "Repository": "https://packagemanager.posit.co/cran/latest", + "Repository": "CRAN", "Encoding": "UTF-8" }, "batchelor": { @@ -4716,7 +4722,8 @@ "License": "LGPL-2", "Collate": "bdsmatrix.R gchol.R gchol.bdsmatrix.R as.matrix.bdsmatrix.R bdsBlock.R bdsI.R bdsmatrix.ibd.R bdsmatrix.reconcile.R diag.bdsmatrix.R listbdsmatrix.R multiply.bdsmatrix.R solve.bdsmatrix.R solve.gchol.R solve.gchol.bdsmatrix.R backsolve.R", "NeedsCompilation": "yes", - "Repository": "CRAN" + "Repository": "CRAN", + "Encoding": "UTF-8" }, "beachmat": { "Package": "beachmat", @@ -4785,7 +4792,7 @@ "BugReports": "https://github.com/aroneklund/beeswarm/issues", "Author": "Aron Eklund [aut, cre] (), James Trimble [aut] ()", "Maintainer": "Aron Eklund ", - "Repository": "https://packagemanager.posit.co/cran/latest", + "Repository": "CRAN", "Encoding": "UTF-8" }, "biomaRt": { @@ -4869,7 +4876,7 @@ "NeedsCompilation": "yes", "Author": "Michael Chirico [aut, cre], Jens Oehlschlägel [aut], Brian Ripley [ctb]", "Maintainer": "Michael Chirico ", - "Repository": "https://packagemanager.posit.co/cran/latest" + "Repository": "CRAN" }, "bit64": { "Package": "bit64", @@ -4903,7 +4910,7 @@ "NeedsCompilation": "yes", "Author": "Michael Chirico [aut, cre], Jens Oehlschlägel [aut], Leonardo Silvestri [ctb], Ofek Shilon [ctb]", "Maintainer": "Michael Chirico ", - "Repository": "https://packagemanager.posit.co/cran/latest" + "Repository": "CRAN" }, "bitops": { "Package": "bitops", @@ -4919,7 +4926,7 @@ "NeedsCompilation": "yes", "Author": "Steve Dutky [aut] (S original; then (after MM's port) revised and modified), Martin Maechler [cre, aut] (Initial R port; tweaks, )", "Maintainer": "Martin Maechler ", - "Repository": "https://packagemanager.posit.co/cran/latest", + "Repository": "CRAN", "Encoding": "UTF-8" }, "blob": { @@ -5193,7 +5200,7 @@ "NeedsCompilation": "no", "Author": "Carson Sievert [aut, cre] (), Joe Cheng [aut], Garrick Aden-Buie [aut] (), Posit Software, PBC [cph, fnd], Bootstrap contributors [ctb] (Bootstrap library), Twitter, Inc [cph] (Bootstrap library), Javi Aguilar [ctb, cph] (Bootstrap colorpicker library), Thomas Park [ctb, cph] (Bootswatch library), PayPal [ctb, cph] (Bootstrap accessibility plugin)", "Maintainer": "Carson Sievert ", - "Repository": "https://packagemanager.posit.co/cran/latest" + "Repository": "CRAN" }, "caTools": { "Package": "caTools", @@ -5218,7 +5225,8 @@ "License": "GPL-3", "NeedsCompilation": "yes", "Repository": "CRAN", - "Author": "Jarek Tuszynski [aut], Michael Dietze [cre]" + "Author": "Jarek Tuszynski [aut], Michael Dietze [cre]", + "Encoding": "UTF-8" }, "cachem": { "Package": "cachem", @@ -5244,7 +5252,7 @@ "NeedsCompilation": "yes", "Author": "Winston Chang [aut, cre], Posit Software, PBC [cph, fnd]", "Maintainer": "Winston Chang ", - "Repository": "https://packagemanager.posit.co/cran/latest" + "Repository": "CRAN" }, "callr": { "Package": "callr", @@ -5368,7 +5376,8 @@ "NeedsCompilation": "no", "Author": "Jennifer Bryan [cre, aut], Hadley Wickham [ctb]", "Maintainer": "Jennifer Bryan ", - "Repository": "CRAN" + "Repository": "CRAN", + "Encoding": "UTF-8" }, "cigarillo": { "Package": "cigarillo", @@ -5456,7 +5465,8 @@ "NeedsCompilation": "no", "Author": "Zuguang Gu [aut, cre] (ORCID: )", "Maintainer": "Zuguang Gu ", - "Repository": "CRAN" + "Repository": "CRAN", + "Encoding": "UTF-8" }, "cli": { "Package": "cli", @@ -5503,7 +5513,7 @@ "NeedsCompilation": "yes", "Author": "Gábor Csárdi [aut, cre], Hadley Wickham [ctb], Kirill Müller [ctb], Salim Brüggemann [ctb] (), Posit Software, PBC [cph, fnd]", "Maintainer": "Gábor Csárdi ", - "Repository": "https://packagemanager.posit.co/cran/latest" + "Repository": "CRAN" }, "clipr": { "Package": "clipr", @@ -5534,7 +5544,7 @@ "NeedsCompilation": "no", "Author": "Matthew Lincoln [aut, cre] (), Louis Maddox [ctb], Steve Simpson [ctb], Jennifer Bryan [ctb]", "Maintainer": "Matthew Lincoln ", - "Repository": "https://packagemanager.posit.co/cran/latest" + "Repository": "CRAN" }, "clue": { "Package": "clue", @@ -5575,7 +5585,7 @@ "NeedsCompilation": "yes", "Author": "Kurt Hornik [aut, cre] (), Walter Böhm [ctb]", "Maintainer": "Kurt Hornik ", - "Repository": "RSPM" + "Repository": "CRAN" }, "cluster": { "Package": "cluster", @@ -5694,7 +5704,7 @@ "NeedsCompilation": "no", "Author": "Martyn Plummer [aut, cre, trl], Nicky Best [aut], Kate Cowles [aut], Karen Vines [aut], Deepayan Sarkar [aut], Douglas Bates [aut], Russell Almond [aut], Arni Magnusson [aut]", "Maintainer": "Martyn Plummer ", - "Repository": "https://packagemanager.posit.co/cran/latest", + "Repository": "CRAN", "Encoding": "UTF-8" }, "codetools": { @@ -5766,7 +5776,7 @@ "NeedsCompilation": "yes", "Author": "Ross Ihaka [aut], Paul Murrell [aut] (ORCID: ), Kurt Hornik [aut] (ORCID: ), Jason C. Fisher [aut] (ORCID: ), Reto Stauffer [aut] (ORCID: ), Claus O. Wilke [aut] (ORCID: ), Claire D. McWhite [aut] (ORCID: ), Achim Zeileis [aut, cre] (ORCID: )", "Maintainer": "Achim Zeileis ", - "Repository": "https://packagemanager.posit.co/cran/latest" + "Repository": "CRAN" }, "commonmark": { "Package": "commonmark", @@ -5790,7 +5800,7 @@ "NeedsCompilation": "yes", "Author": "Jeroen Ooms [aut, cre] (ORCID: ), John MacFarlane [cph] (Author of cmark)", "Maintainer": "Jeroen Ooms ", - "Repository": "https://packagemanager.posit.co/cran/latest" + "Repository": "CRAN" }, "conflicted": { "Package": "conflicted", @@ -5877,7 +5887,7 @@ "NeedsCompilation": "no", "Author": "Claus O. Wilke [aut, cre] (ORCID: )", "Maintainer": "Claus O. Wilke ", - "Repository": "https://packagemanager.posit.co/cran/latest" + "Repository": "CRAN" }, "cpp11": { "Package": "cpp11", @@ -5954,7 +5964,7 @@ "NeedsCompilation": "no", "Author": "Gábor Csárdi [aut, cre], Brodie Gaslam [ctb], Posit Software, PBC [cph, fnd]", "Maintainer": "Gábor Csárdi ", - "Repository": "https://packagemanager.posit.co/cran/latest" + "Repository": "CRAN" }, "crosstalk": { "Package": "crosstalk", @@ -5986,7 +5996,7 @@ "NeedsCompilation": "no", "Author": "Joe Cheng [aut], Carson Sievert [aut, cre] (ORCID: ), Posit Software, PBC [cph, fnd], jQuery Foundation [cph] (jQuery library and jQuery UI library), jQuery contributors [ctb, cph] (jQuery library; authors listed in inst/www/shared/jquery-AUTHORS.txt), Mark Otto [ctb] (Bootstrap library), Jacob Thornton [ctb] (Bootstrap library), Bootstrap contributors [ctb] (Bootstrap library), Twitter, Inc [cph] (Bootstrap library), Brian Reavis [ctb, cph] (selectize.js library), Kristopher Michael Kowal [ctb, cph] (es5-shim library), es5-shim contributors [ctb, cph] (es5-shim library), Denis Ineshin [ctb, cph] (ion.rangeSlider library), Sami Samhuri [ctb, cph] (Javascript strftime library)", "Maintainer": "Carson Sievert ", - "Repository": "https://packagemanager.posit.co/cran/latest" + "Repository": "CRAN" }, "curl": { "Package": "curl", @@ -6020,7 +6030,7 @@ "NeedsCompilation": "yes", "Author": "Jeroen Ooms [aut, cre] (ORCID: ), Hadley Wickham [ctb], Posit Software, PBC [cph]", "Maintainer": "Jeroen Ooms ", - "Repository": "https://packagemanager.posit.co/cran/latest" + "Repository": "CRAN" }, "data.table": { "Package": "data.table", @@ -6115,7 +6125,7 @@ "NeedsCompilation": "no", "Author": "Hadley Wickham [aut, cre], Maximilian Girlich [aut], Edgar Ruiz [aut], Posit Software, PBC [cph, fnd]", "Maintainer": "Hadley Wickham ", - "Repository": "https://packagemanager.posit.co/cran/latest" + "Repository": "CRAN" }, "digest": { "Package": "digest", @@ -6176,7 +6186,7 @@ "NeedsCompilation": "no", "Author": "Folashade Daniel [cre], Microsoft Corporation [aut, cph], Steve Weston [aut], Dan Tenenbaum [ctb]", "Maintainer": "Folashade Daniel ", - "Repository": "RSPM", + "Repository": "CRAN", "Encoding": "UTF-8" }, "dplyr": { @@ -6240,7 +6250,7 @@ "NeedsCompilation": "yes", "Author": "Hadley Wickham [aut, cre] (), Romain François [aut] (), Lionel Henry [aut], Kirill Müller [aut] (), Davis Vaughan [aut] (), Posit Software, PBC [cph, fnd]", "Maintainer": "Hadley Wickham ", - "Repository": "https://packagemanager.posit.co/cran/latest" + "Repository": "CRAN" }, "dqrng": { "Package": "dqrng", @@ -6279,7 +6289,7 @@ "NeedsCompilation": "yes", "Author": "Ralf Stubner [aut, cre] (), daqana GmbH [cph], David Blackman [cph] (Xoroshiro / Xoshiro family), Melissa O'Neill [cph] (PCG family), Sebastiano Vigna [cph] (Xoroshiro / Xoshiro family), Aaron Lun [ctb], Kyle Butts [ctb], Henrik Sloot [ctb], Philippe Grosjean [ctb] ()", "Maintainer": "Ralf Stubner ", - "Repository": "https://packagemanager.posit.co/cran/latest" + "Repository": "CRAN" }, "dtplyr": { "Package": "dtplyr", @@ -6365,6 +6375,7 @@ "biocViews": "AlternativeSplicing, BatchEffect, Bayesian, BiomedicalInformatics, CellBiology, ChIPSeq, Clustering, Coverage, DifferentialExpression, DifferentialMethylation, DifferentialSplicing, DNAMethylation, Epigenetics, FunctionalGenomics, GeneExpression, GeneSetEnrichment, Genetics, Genetics, ImmunoOncology, MultipleComparison, Normalization, Pathways, Proteomics, QualityControl, Regression, RNASeq, SAGE, Sequencing, SingleCell, SystemsBiology, TimeCourse, Transcription, Transcriptomics", "NeedsCompilation": "yes", "Repository": "https://bioc-release.r-universe.dev", + "RemoteType": "bioconductor", "RemoteUrl": "https://github.com/bioc/edgeR", "RemoteRef": "RELEASE_3_22", "RemoteSha": "af0343acbb3998d2d2bb3e3d259bbee17a2c8a7e" @@ -6436,7 +6447,8 @@ "NeedsCompilation": "no", "Author": "Ben Bolker [aut, cre], Sang Woo Park [ctb], James Vonesh [dtc], Jacqueline Wilson [dtc], Russ Schmitt [dtc], Sally Holbrook [dtc], James D. Thomson [dtc], R. Scot Duncan [dtc]", "Maintainer": "Ben Bolker ", - "Repository": "CRAN" + "Repository": "CRAN", + "Encoding": "UTF-8" }, "emmeans": { "Package": "emmeans", @@ -6682,7 +6694,8 @@ "NeedsCompilation": "no", "Author": "Russell Lenth [aut, cre, cph]", "Maintainer": "Russell Lenth ", - "Repository": "CRAN" + "Repository": "CRAN", + "Encoding": "UTF-8" }, "etrunct": { "Package": "etrunct", @@ -6737,7 +6750,7 @@ "NeedsCompilation": "no", "Author": "Hadley Wickham [aut, cre], Yihui Xie [aut] (ORCID: ), Michael Lawrence [ctb], Thomas Kluyver [ctb], Jeroen Ooms [ctb], Barret Schloerke [ctb], Adam Ryczkowski [ctb], Hiroaki Yutani [ctb], Michel Lang [ctb], Karolis Koncevičius [ctb], Posit Software, PBC [cph, fnd]", "Maintainer": "Hadley Wickham ", - "Repository": "https://packagemanager.posit.co/cran/latest" + "Repository": "CRAN" }, "exrcise": { "Package": "exrcise", @@ -6750,6 +6763,7 @@ "Description": "This package selectively removes the contents of code chunks from Rmarkdown files to produce new notebooks suitable for live coding instruction or exercises, while preserving the original file as a reference or answer key.", "License": "BSD_3_clause + file LICENSE", "Encoding": "UTF-8", + "LazyData": "true", "Imports": [ "knitr", "stringr", @@ -6761,14 +6775,13 @@ "Suggests": [ "testthat" ], + "Author": "Joshua A. Shapiro [aut, cre] (0000-0002-6224-0347)", "RemoteType": "github", "RemoteHost": "api.github.com", "RemoteRepo": "exrcise", "RemoteUsername": "AlexsLemonade", "RemoteRef": "HEAD", - "RemoteSha": "a496662f8a8a2294366cae4d2f3547c50ac341f1", - "NeedsCompilation": "no", - "Author": "Joshua A. Shapiro [aut, cre] (0000-0002-6224-0347)" + "RemoteSha": "a496662f8a8a2294366cae4d2f3547c50ac341f1" }, "farver": { "Package": "farver", @@ -6791,7 +6804,7 @@ "NeedsCompilation": "yes", "Author": "Thomas Lin Pedersen [cre, aut] (), Berendea Nicolae [aut] (Author of the ColorSpace C++ library), Romain François [aut] (), Posit, PBC [cph, fnd]", "Maintainer": "Thomas Lin Pedersen ", - "Repository": "https://packagemanager.posit.co/cran/latest" + "Repository": "CRAN" }, "fastmap": { "Package": "fastmap", @@ -6811,7 +6824,7 @@ "NeedsCompilation": "yes", "Author": "Winston Chang [aut, cre], Posit Software, PBC [cph, fnd], Tessil [cph] (hopscotch_map library)", "Maintainer": "Winston Chang ", - "Repository": "https://packagemanager.posit.co/cran/latest" + "Repository": "CRAN" }, "fastmatch": { "Package": "fastmatch", @@ -6829,7 +6842,8 @@ "URL": "https://www.rforge.net/fastmatch", "BugReports": "https://github.com/s-u/fastmatch/issues/", "NeedsCompilation": "yes", - "Repository": "CRAN" + "Repository": "CRAN", + "Encoding": "UTF-8" }, "fastqcr": { "Package": "fastqcr", @@ -6942,12 +6956,13 @@ "URL": "https://github.com/ctlab/fgsea/", "BugReports": "https://github.com/ctlab/fgsea/issues", "Repository": "https://bioc-release.r-universe.dev", - "RemoteUrl": "https://github.com/bioc/fgsea", - "RemoteRef": "RELEASE_3_22", - "RemoteSha": "b7862b78985f52670a13ca46abacb7831e33d5e1", "NeedsCompilation": "yes", "Author": "Gennady Korotkevich [aut], Vladimir Sukhov [aut], Nikolay Budin [ctb], Nikita Gusak [ctb], Zieman Mark [ctb], Alexey Sergushichev [aut, cre]", - "Maintainer": "Alexey Sergushichev " + "Maintainer": "Alexey Sergushichev ", + "RemoteType": "bioconductor", + "RemoteUrl": "https://github.com/bioc/fgsea", + "RemoteRef": "RELEASE_3_22", + "RemoteSha": "b7862b78985f52670a13ca46abacb7831e33d5e1" }, "filelock": { "Package": "filelock", @@ -6974,7 +6989,7 @@ "NeedsCompilation": "yes", "Author": "Gábor Csárdi [aut, cre], Posit Software, PBC [cph, fnd]", "Maintainer": "Gábor Csárdi ", - "Repository": "https://packagemanager.posit.co/cran/latest" + "Repository": "CRAN" }, "flexmix": { "Package": "flexmix", @@ -7021,7 +7036,8 @@ "NeedsCompilation": "no", "Author": "Bettina Gruen [aut, cre] (), Friedrich Leisch [aut] (), Deepayan Sarkar [ctb] (), Frederic Mortier [ctb], Nicolas Picard [ctb] ()", "Maintainer": "Bettina Gruen ", - "Repository": "CRAN" + "Repository": "CRAN", + "Encoding": "UTF-8" }, "fontBitstreamVera": { "Package": "fontBitstreamVera", @@ -7041,7 +7057,7 @@ "Author": "Lionel Henry [cre, aut], Bitstream [cph]", "Maintainer": "Lionel Henry ", "License_is_FOSS": "yes", - "Repository": "https://packagemanager.posit.co/cran/latest" + "Repository": "CRAN" }, "fontLiberation": { "Package": "fontLiberation", @@ -7060,7 +7076,7 @@ "NeedsCompilation": "no", "Author": "Lionel Henry [cre], Pravin Satpute [aut], Steve Matteson [aut], Red Hat, Inc [cph], Google Corporation [cph]", "Maintainer": "Lionel Henry ", - "Repository": "https://packagemanager.posit.co/cran/latest", + "Repository": "CRAN", "License_is_FOSS": "yes" }, "fontawesome": { @@ -7096,7 +7112,7 @@ "NeedsCompilation": "no", "Author": "Richard Iannone [aut, cre] (), Christophe Dervieux [ctb] (), Winston Chang [ctb], Dave Gandy [ctb, cph] (Font-Awesome font), Posit Software, PBC [cph, fnd]", "Maintainer": "Richard Iannone ", - "Repository": "https://packagemanager.posit.co/cran/latest" + "Repository": "CRAN" }, "fontquiver": { "Package": "fontquiver", @@ -7124,7 +7140,7 @@ "NeedsCompilation": "no", "Author": "Lionel Henry [cre, aut], RStudio [cph], George Douros [cph] (Symbola font)", "Maintainer": "Lionel Henry ", - "Repository": "https://packagemanager.posit.co/cran/latest" + "Repository": "CRAN" }, "forcats": { "Package": "forcats", @@ -7201,7 +7217,7 @@ "NeedsCompilation": "no", "Author": "Folashade Daniel [cre], Hong Ooi [ctb], Rich Calaway [ctb], Microsoft [aut, cph], Steve Weston [aut]", "Maintainer": "Folashade Daniel ", - "Repository": "RSPM", + "Repository": "CRAN", "Encoding": "UTF-8" }, "formatR": { @@ -7231,7 +7247,7 @@ "NeedsCompilation": "no", "Author": "Yihui Xie [aut, cre] (), Ed Lee [ctb], Eugene Ha [ctb], Kohske Takahashi [ctb], Pavel Krivitsky [ctb]", "Maintainer": "Yihui Xie ", - "Repository": "https://packagemanager.posit.co/cran/latest" + "Repository": "CRAN" }, "fs": { "Package": "fs", @@ -7273,7 +7289,7 @@ "NeedsCompilation": "yes", "Author": "Jim Hester [aut], Hadley Wickham [aut], Gábor Csárdi [aut, cre], libuv project contributors [cph] (libuv library), Joyent, Inc. and other Node contributors [cph] (libuv library), Posit Software, PBC [cph, fnd]", "Maintainer": "Gábor Csárdi ", - "Repository": "https://packagemanager.posit.co/cran/latest" + "Repository": "CRAN" }, "futile.logger": { "Package": "futile.logger", @@ -7309,7 +7325,8 @@ "RoxygenNote": "7.1.2", "URL": "https://github.com/zatonovo/futile.logger", "Author": "Brian Lee Yung Rowe [aut, cre]", - "Repository": "CRAN" + "Repository": "CRAN", + "Encoding": "UTF-8" }, "futile.options": { "Package": "futile.options", @@ -7327,7 +7344,7 @@ "License": "LGPL-3", "LazyLoad": "yes", "NeedsCompilation": "no", - "Repository": "https://packagemanager.posit.co/cran/latest", + "Repository": "CRAN", "Encoding": "UTF-8" }, "gargle": { @@ -7446,7 +7463,7 @@ "NeedsCompilation": "no", "Author": "Hadley Wickham [aut, cre] (ORCID: ), Max Kuhn [aut], Davis Vaughan [aut], Posit Software, PBC [cph, fnd] (ROR: )", "Maintainer": "Hadley Wickham ", - "Repository": "https://packagemanager.posit.co/cran/latest" + "Repository": "CRAN" }, "getopt": { "Package": "getopt", @@ -7555,7 +7572,7 @@ "Collate": "'aaa.R' 'shape.R' 'arc_bar.R' 'arc.R' 'autodensity.R' 'autohistogram.R' 'autopoint.R' 'bezier.R' 'bspline.R' 'bspline_closed.R' 'circle.R' 'concaveman.R' 'cpp11.R' 'diagonal.R' 'diagonal_wide.R' 'ellipse.R' 'errorbar.R' 'facet_grid_paginate.R' 'facet_matrix.R' 'facet_row.R' 'facet_stereo.R' 'facet_wrap_paginate.R' 'facet_zoom.R' 'ggforce-package.R' 'ggproto-classes.R' 'interpolate.R' 'labeller.R' 'link.R' 'mark_circle.R' 'mark_ellipse.R' 'mark_hull.R' 'mark_label.R' 'mark_rect.R' 'parallel_sets.R' 'position-jitternormal.R' 'position_auto.R' 'position_floatstack.R' 'regon.R' 'scale-depth.R' 'scale-unit.R' 'sina.R' 'spiro.R' 'themes.R' 'trans.R' 'trans_linear.R' 'utilities.R' 'voronoi.R' 'zzz.R'", "NeedsCompilation": "yes", "Author": "Thomas Lin Pedersen [cre, aut] (ORCID: ), RStudio [cph]", - "Repository": "https://packagemanager.posit.co/cran/latest" + "Repository": "CRAN" }, "ggfun": { "Package": "ggfun", @@ -7595,7 +7612,7 @@ "NeedsCompilation": "no", "Author": "Guangchuang Yu [aut, cre, cph] (ORCID: ), Shuangbin Xu [aut] (ORCID: )", "Maintainer": "Guangchuang Yu ", - "Repository": "https://packagemanager.posit.co/cran/latest" + "Repository": "CRAN" }, "ggiraph": { "Package": "ggiraph", @@ -7676,7 +7693,7 @@ "NeedsCompilation": "no", "Author": "Elio Campitelli [cre, aut] (ORCID: )", "Maintainer": "Elio Campitelli ", - "Repository": "RSPM" + "Repository": "CRAN" }, "ggplot2": { "Package": "ggplot2", @@ -7749,7 +7766,7 @@ "NeedsCompilation": "no", "Author": "Hadley Wickham [aut] (ORCID: ), Winston Chang [aut] (ORCID: ), Lionel Henry [aut], Thomas Lin Pedersen [aut, cre] (ORCID: ), Kohske Takahashi [aut], Claus Wilke [aut] (ORCID: ), Kara Woo [aut] (ORCID: ), Hiroaki Yutani [aut] (ORCID: ), Dewey Dunnington [aut] (ORCID: ), Teun van den Brand [aut] (ORCID: ), Posit, PBC [cph, fnd] (ROR: )", "Maintainer": "Thomas Lin Pedersen ", - "Repository": "https://packagemanager.posit.co/cran/latest" + "Repository": "CRAN" }, "ggplotify": { "Package": "ggplotify", @@ -7828,7 +7845,7 @@ "NeedsCompilation": "no", "Author": "Viktor Petukhov [aut, cph], Teun van den Brand [aut], Evan Biederstedt [cre, aut]", "Maintainer": "Evan Biederstedt ", - "Repository": "https://packagemanager.posit.co/cran/latest" + "Repository": "CRAN" }, "ggrepel": { "Package": "ggrepel", @@ -7877,7 +7894,7 @@ "NeedsCompilation": "yes", "Author": "Kamil Slowikowski [aut, cre] (), Alicia Schep [ctb] (), Sean Hughes [ctb] (), Trung Kien Dang [ctb] (), Saulius Lukauskas [ctb], Jean-Olivier Irisson [ctb] (), Zhian N Kamvar [ctb] (), Thompson Ryan [ctb] (), Dervieux Christophe [ctb] (), Yutani Hiroaki [ctb], Pierre Gramme [ctb], Amir Masoud Abdol [ctb], Malcolm Barrett [ctb] (), Robrecht Cannoodt [ctb] (), Michał Krassowski [ctb] (), Michael Chirico [ctb] (), Pedro Aphalo [ctb] (), Francis Barton [ctb]", "Maintainer": "Kamil Slowikowski ", - "Repository": "https://packagemanager.posit.co/cran/latest" + "Repository": "CRAN" }, "ggsignif": { "Package": "ggsignif", @@ -7907,7 +7924,7 @@ "NeedsCompilation": "no", "Author": "Constantin Ahlmann-Eltze [aut, cre, ctb] (, @const_ae), Indrajeet Patil [aut, ctb] (, @patilindrajeets)", "Maintainer": "Constantin Ahlmann-Eltze ", - "Repository": "RSPM" + "Repository": "CRAN" }, "ggstats": { "Package": "ggstats", @@ -8062,11 +8079,12 @@ "Roxygen": "list(markdown = TRUE)", "Config/pak/sysreqs": "libcairo2-dev libfontconfig1-dev libfreetype6-dev make libicu-dev libpng-dev", "Repository": "https://bioc-release.r-universe.dev", + "NeedsCompilation": "no", + "Author": "Guangchuang Yu [aut, cre, cph] (ORCID: ), Tommy Tsan-Yuk Lam [aut, ths], Shuangbin Xu [aut] (ORCID: ), Lin Li [ctb], Bradley Jones [ctb], Justin Silverman [ctb], Watal M. Iwasaki [ctb], Yonghe Xia [ctb], Ruizhu Huang [ctb]", + "RemoteType": "bioconductor", "RemoteUrl": "https://github.com/bioc/ggtree", "RemoteRef": "RELEASE_3_22", - "RemoteSha": "8e25254da5a9aa23db9e2f58acd14cc4e58a2893", - "NeedsCompilation": "no", - "Author": "Guangchuang Yu [aut, cre, cph] (ORCID: ), Tommy Tsan-Yuk Lam [aut, ths], Shuangbin Xu [aut] (ORCID: ), Lin Li [ctb], Bradley Jones [ctb], Justin Silverman [ctb], Watal M. Iwasaki [ctb], Yonghe Xia [ctb], Ruizhu Huang [ctb]" + "RemoteSha": "8e25254da5a9aa23db9e2f58acd14cc4e58a2893" }, "ggupset": { "Package": "ggupset", @@ -8183,7 +8201,7 @@ "NeedsCompilation": "yes", "Author": "Jim Hester [aut] (), Jennifer Bryan [aut, cre] (), Posit Software, PBC [cph, fnd]", "Maintainer": "Jennifer Bryan ", - "Repository": "https://packagemanager.posit.co/cran/latest" + "Repository": "CRAN" }, "googledrive": { "Package": "googledrive", @@ -8321,7 +8339,8 @@ "NeedsCompilation": "no", "Author": "Gregory R. Warnes [aut], Ben Bolker [aut], Lodewijk Bonebakker [aut], Robert Gentleman [aut], Wolfgang Huber [aut], Andy Liaw [aut], Thomas Lumley [aut], Martin Maechler [aut], Arni Magnusson [aut], Steffen Moeller [aut], Marc Schwartz [aut], Bill Venables [aut], Tal Galili [aut, cre]", "Maintainer": "Tal Galili ", - "Repository": "CRAN" + "Repository": "CRAN", + "Encoding": "UTF-8" }, "graph": { "Package": "graph", @@ -8395,7 +8414,7 @@ "NeedsCompilation": "no", "Author": "Baptiste Auguie [aut, cre], Anton Antonov [ctb]", "Maintainer": "Baptiste Auguie ", - "Repository": "https://packagemanager.posit.co/cran/latest", + "Repository": "CRAN", "Encoding": "UTF-8" }, "gridGraphics": { @@ -8421,7 +8440,7 @@ "NeedsCompilation": "no", "Author": "Paul Murrell [cre, aut], Zhijian Wen [aut]", "Maintainer": "Paul Murrell ", - "Repository": "RSPM", + "Repository": "CRAN", "Encoding": "UTF-8" }, "gson": { @@ -8486,7 +8505,7 @@ "NeedsCompilation": "no", "Author": "Hadley Wickham [aut], Thomas Lin Pedersen [aut, cre], Posit Software, PBC [cph, fnd]", "Maintainer": "Thomas Lin Pedersen ", - "Repository": "https://packagemanager.posit.co/cran/latest" + "Repository": "CRAN" }, "gtools": { "Package": "gtools", @@ -8751,7 +8770,7 @@ "NeedsCompilation": "no", "Author": "Kirill Müller [aut, cre] (ORCID: ), Jennifer Bryan [ctb] (ORCID: )", "Maintainer": "Kirill Müller ", - "Repository": "https://packagemanager.posit.co/cran/latest" + "Repository": "CRAN" }, "hexbin": { "Package": "hexbin", @@ -8786,7 +8805,8 @@ "URL": "https://github.com/edzer/hexbin", "Author": "Dan Carr [aut], Nicholas Lewin-Koh [aut], Martin Maechler [aut], Deepayan Sarkar [aut], Edzer Pebesma [cre] ()", "Maintainer": "Edzer Pebesma ", - "Repository": "CRAN" + "Repository": "CRAN", + "Encoding": "UTF-8" }, "highr": { "Package": "highr", @@ -8816,7 +8836,7 @@ "NeedsCompilation": "no", "Author": "Yihui Xie [aut, cre] (), Yixuan Qiu [aut], Christopher Gandrud [ctb], Qiang Li [ctb]", "Maintainer": "Yihui Xie ", - "Repository": "https://packagemanager.posit.co/cran/latest" + "Repository": "CRAN" }, "hms": { "Package": "hms", @@ -8850,7 +8870,7 @@ "NeedsCompilation": "no", "Author": "Kirill Müller [aut, cre] (ORCID: ), R Consortium [fnd], Posit Software, PBC [fnd] (ROR: )", "Maintainer": "Kirill Müller ", - "Repository": "https://packagemanager.posit.co/cran/latest" + "Repository": "CRAN" }, "htmltools": { "Package": "htmltools", @@ -8926,7 +8946,7 @@ "NeedsCompilation": "no", "Author": "Ramnath Vaidyanathan [aut, cph], Yihui Xie [aut], JJ Allaire [aut], Joe Cheng [aut], Carson Sievert [aut, cre] (), Kenton Russell [aut, cph], Ellis Hughes [ctb], Posit Software, PBC [cph, fnd]", "Maintainer": "Carson Sievert ", - "Repository": "https://packagemanager.posit.co/cran/latest" + "Repository": "CRAN" }, "httpuv": { "Package": "httpuv", @@ -8967,7 +8987,7 @@ "NeedsCompilation": "yes", "Author": "Joe Cheng [aut], Winston Chang [aut, cre], Posit, PBC fnd [cph], Hector Corrada Bravo [ctb], Jeroen Ooms [ctb], Andrzej Krzemienski [cph] (optional.hpp), libuv project contributors [cph] (libuv library, see src/libuv/AUTHORS file), Joyent, Inc. and other Node contributors [cph] (libuv library, see src/libuv/AUTHORS file; and http-parser library, see src/http-parser/AUTHORS file), Niels Provos [cph] (libuv subcomponent: tree.h), Internet Systems Consortium, Inc. [cph] (libuv subcomponent: inet_pton and inet_ntop, contained in src/libuv/src/inet.c), Alexander Chemeris [cph] (libuv subcomponent: stdint-msvc2008.h (from msinttypes)), Google, Inc. [cph] (libuv subcomponent: pthread-fixes.c), Sony Mobile Communcations AB [cph] (libuv subcomponent: pthread-fixes.c), Berkeley Software Design Inc. [cph] (libuv subcomponent: android-ifaddrs.h, android-ifaddrs.c), Kenneth MacKay [cph] (libuv subcomponent: android-ifaddrs.h, android-ifaddrs.c), Emergya (Cloud4all, FP7/2007-2013, grant agreement no 289016) [cph] (libuv subcomponent: android-ifaddrs.h, android-ifaddrs.c), Steve Reid [aut] (SHA-1 implementation), James Brown [aut] (SHA-1 implementation), Bob Trower [aut] (base64 implementation), Alexander Peslyak [aut] (MD5 implementation), Trantor Standard Systems [cph] (base64 implementation), Igor Sysoev [cph] (http-parser)", "Maintainer": "Winston Chang ", - "Repository": "https://packagemanager.posit.co/cran/latest" + "Repository": "CRAN" }, "httr": { "Package": "httr", @@ -9007,7 +9027,7 @@ "NeedsCompilation": "no", "Author": "Hadley Wickham [aut, cre], Posit, PBC [cph, fnd]", "Maintainer": "Hadley Wickham ", - "Repository": "https://packagemanager.posit.co/cran/latest" + "Repository": "CRAN" }, "httr2": { "Package": "httr2", @@ -9130,7 +9150,8 @@ "NeedsCompilation": "no", "Author": "Rich FitzJohn [aut, cre]", "Maintainer": "Rich FitzJohn ", - "Repository": "CRAN" + "Repository": "CRAN", + "Encoding": "UTF-8" }, "igraph": { "Package": "igraph", @@ -9197,7 +9218,7 @@ "NeedsCompilation": "yes", "Author": "Gábor Csárdi [aut] (ORCID: ), Tamás Nepusz [aut] (ORCID: ), Vincent Traag [aut] (ORCID: ), Szabolcs Horvát [aut] (ORCID: ), Fabio Zanini [aut] (ORCID: ), Daniel Noom [aut], Kirill Müller [aut, cre] (ORCID: ), Michael Antonov [ctb], Chan Zuckerberg Initiative [fnd] (ROR: ), David Schoch [aut] (ORCID: ), Maëlle Salmon [aut] (ORCID: )", "Maintainer": "Kirill Müller ", - "Repository": "https://packagemanager.posit.co/cran/latest" + "Repository": "CRAN" }, "invgamma": { "Package": "invgamma", @@ -9247,7 +9268,7 @@ "NeedsCompilation": "yes", "Author": "Jim Baglama [aut, cph], Lothar Reichel [aut, cph], B. W. Lewis [aut, cre, cph]", "Maintainer": "B. W. Lewis ", - "Repository": "https://packagemanager.posit.co/cran/latest", + "Repository": "CRAN", "Encoding": "UTF-8" }, "isoband": { @@ -9313,7 +9334,7 @@ "NeedsCompilation": "no", "Author": "Folashade Daniel [cre], Revolution Analytics [aut, cph], Steve Weston [aut]", "Maintainer": "Folashade Daniel ", - "Repository": "RSPM", + "Repository": "CRAN", "Encoding": "UTF-8" }, "jquerylib": { @@ -9336,7 +9357,7 @@ "NeedsCompilation": "no", "Author": "Carson Sievert [aut, cre] (), Joe Cheng [aut], RStudio [cph], jQuery Foundation [cph] (jQuery library and jQuery UI library), jQuery contributors [ctb, cph] (jQuery library; authors listed in inst/lib/jquery-AUTHORS.txt)", "Maintainer": "Carson Sievert ", - "Repository": "https://packagemanager.posit.co/cran/latest" + "Repository": "CRAN" }, "jsonlite": { "Package": "jsonlite", @@ -9366,7 +9387,7 @@ "Encoding": "UTF-8", "NeedsCompilation": "yes", "Author": "Jeroen Ooms [aut, cre] (), Duncan Temple Lang [ctb], Lloyd Hilaiel [cph] (author of bundled libyajl)", - "Repository": "https://packagemanager.posit.co/cran/latest" + "Repository": "CRAN" }, "jsonvalidate": { "Package": "jsonvalidate", @@ -9397,7 +9418,7 @@ "Config/testthat/edition": "3", "NeedsCompilation": "no", "Author": "Rich FitzJohn [aut, cre], Rob Ashton [aut], Alex Hill [ctb], Alicia Schep [ctb], Ian Lyttle [ctb], Kara Woo [ctb], Mathias Buus [aut, cph] (Author of bundled imjv library), Evgeny Poberezkin [aut, cph] (Author of bundled Ajv library)", - "Repository": "RSPM" + "Repository": "CRAN" }, "kernlab": { "Package": "kernlab", @@ -9420,7 +9441,7 @@ "NeedsCompilation": "yes", "Author": "Alexandros Karatzoglou [aut, cre], Alex Smola [aut], Kurt Hornik [aut] (), National ICT Australia (NICTA) [cph], Michael A. Maniscalco [ctb, cph], Choon Hui Teo [ctb]", "Maintainer": "Alexandros Karatzoglou ", - "Repository": "https://packagemanager.posit.co/cran/latest", + "Repository": "CRAN", "Encoding": "UTF-8" }, "knitr": { @@ -9505,7 +9526,7 @@ "stats", "graphics" ], - "Repository": "https://packagemanager.posit.co/cran/latest", + "Repository": "CRAN", "Encoding": "UTF-8" }, "lambda.r": { @@ -9530,7 +9551,7 @@ "License": "LGPL-3", "LazyLoad": "yes", "NeedsCompilation": "no", - "Repository": "https://packagemanager.posit.co/cran/latest", + "Repository": "CRAN", "Encoding": "UTF-8" }, "later": { @@ -9635,7 +9656,7 @@ "NeedsCompilation": "yes", "Author": "Hadley Wickham [aut, cre], RStudio [cph]", "Maintainer": "Hadley Wickham ", - "Repository": "https://packagemanager.posit.co/cran/latest", + "Repository": "CRAN", "Encoding": "UTF-8" }, "lifecycle": { @@ -9781,7 +9802,7 @@ "License": "GPL (>= 2)", "SystemRequirements": "USE_C17", "NeedsCompilation": "yes", - "Repository": "https://packagemanager.posit.co/cran/latest", + "Repository": "CRAN", "Encoding": "UTF-8" }, "lubridate": { @@ -9876,7 +9897,7 @@ "NeedsCompilation": "yes", "Author": "Jeroen Ooms [aut, cre] (ORCID: )", "Maintainer": "Jeroen Ooms ", - "Repository": "https://packagemanager.posit.co/cran/latest" + "Repository": "CRAN" }, "magrittr": { "Package": "magrittr", @@ -9907,7 +9928,7 @@ "NeedsCompilation": "yes", "Author": "Stefan Milton Bache [aut, cph] (Original author and creator of magrittr), Hadley Wickham [aut], Lionel Henry [cre], Posit Software, PBC [cph, fnd] (ROR: )", "Maintainer": "Lionel Henry ", - "Repository": "https://packagemanager.posit.co/cran/latest" + "Repository": "CRAN" }, "markdown": { "Package": "markdown", @@ -9971,7 +9992,7 @@ "URL": "https://github.com/HenrikBengtsson/matrixStats", "BugReports": "https://github.com/HenrikBengtsson/matrixStats/issues", "RoxygenNote": "7.3.2", - "Repository": "https://packagemanager.posit.co/cran/latest", + "Repository": "CRAN", "Encoding": "UTF-8" }, "memoise": { @@ -10002,7 +10023,7 @@ "NeedsCompilation": "no", "Author": "Hadley Wickham [aut], Jim Hester [aut], Winston Chang [aut, cre], Kirill Müller [aut], Daniel Cook [aut], Mark Edmondson [ctb]", "Maintainer": "Winston Chang ", - "Repository": "https://packagemanager.posit.co/cran/latest" + "Repository": "CRAN" }, "memuse": { "Package": "memuse", @@ -10026,7 +10047,8 @@ "BugReports": "https://github.com/shinra-dev/memuse/issues", "RoxygenNote": "7.1.2", "Author": "Drew Schmidt [aut, cre], Christian Heckendorf [ctb] (FreeBSD improvements to meminfo), Wei-Chen Chen [ctb] (Windows build fixes), Dan Burgess [ctb] (donation of a Mac for development and testing)", - "Repository": "CRAN" + "Repository": "CRAN", + "Encoding": "UTF-8" }, "metapod": { "Package": "metapod", @@ -10122,7 +10144,7 @@ "NeedsCompilation": "yes", "Author": "Yihui Xie [aut, cre] (, https://yihui.org), Jeffrey Horner [ctb], Beilei Bian [ctb]", "Maintainer": "Yihui Xie ", - "Repository": "https://packagemanager.posit.co/cran/latest" + "Repository": "CRAN" }, "mixsqp": { "Package": "mixsqp", @@ -10188,7 +10210,7 @@ "NeedsCompilation": "yes", "Author": "Derek Young [aut, cre] (), Tatiana Benaglia [aut], Didier Chauveau [aut], David Hunter [aut], Kedai Cheng [aut], Ryan Elmore [ctb], Thomas Hettmansperger [ctb], Hoben Thomas [ctb], Fengjuan Xuan [ctb]", "Maintainer": "Derek Young ", - "Repository": "https://packagemanager.posit.co/cran/latest", + "Repository": "CRAN", "Encoding": "UTF-8" }, "modelr": { @@ -10228,7 +10250,7 @@ "NeedsCompilation": "no", "Author": "Hadley Wickham [aut, cre], Posit Software, PBC [cph, fnd]", "Maintainer": "Hadley Wickham ", - "Repository": "RSPM" + "Repository": "CRAN" }, "modeltools": { "Package": "modeltools", @@ -10250,7 +10272,8 @@ "NeedsCompilation": "no", "Author": "Torsten Hothorn [aut, cre] (ORCID: ), Friedrich Leisch [aut] (ORCID: ), Achim Zeileis [aut] (ORCID: )", "Maintainer": "Torsten Hothorn ", - "Repository": "CRAN" + "Repository": "CRAN", + "Encoding": "UTF-8" }, "msigdbr": { "Package": "msigdbr", @@ -10290,7 +10313,7 @@ "NeedsCompilation": "no", "Author": "Igor Dolgalev [aut, cre] (ORCID: )", "Maintainer": "Igor Dolgalev ", - "Repository": "https://packagemanager.posit.co/cran/latest" + "Repository": "CRAN" }, "mvtnorm": { "Package": "mvtnorm", @@ -10315,7 +10338,7 @@ "NeedsCompilation": "yes", "Author": "Alan Genz [aut], Frank Bretz [aut], Tetsuhisa Miwa [aut], Xuefei Mi [aut], Friedrich Leisch [ctb], Fabian Scheipl [ctb], Bjoern Bornkamp [ctb] (), Martin Maechler [ctb] (), Torsten Hothorn [aut, cre] ()", "Maintainer": "Torsten Hothorn ", - "Repository": "RSPM", + "Repository": "CRAN", "Encoding": "UTF-8" }, "nlme": { @@ -10394,7 +10417,7 @@ "Maintainer": "Paul Gilbert ", "URL": "http://optimizer.r-forge.r-project.org/", "NeedsCompilation": "no", - "Repository": "RSPM", + "Repository": "CRAN", "Encoding": "UTF-8" }, "openssl": { @@ -10428,7 +10451,7 @@ "NeedsCompilation": "yes", "Author": "Jeroen Ooms [aut, cre] (ORCID: ), Oliver Keyes [ctb]", "Maintainer": "Jeroen Ooms ", - "Repository": "https://packagemanager.posit.co/cran/latest" + "Repository": "CRAN" }, "optparse": { "Package": "optparse", @@ -10593,7 +10616,7 @@ "NeedsCompilation": "no", "Author": "Gábor Csárdi [aut, cre]", "Maintainer": "Gábor Csárdi ", - "Repository": "https://packagemanager.posit.co/cran/latest" + "Repository": "CRAN" }, "palmerpenguins": { "Package": "palmerpenguins", @@ -10668,7 +10691,7 @@ "Config/Needs/website": "gifski", "NeedsCompilation": "no", "Author": "Thomas Lin Pedersen [cre, aut] (ORCID: )", - "Repository": "https://packagemanager.posit.co/cran/latest" + "Repository": "CRAN" }, "pheatmap": { "Package": "pheatmap", @@ -10698,7 +10721,7 @@ "NeedsCompilation": "no", "Author": "Raivo Kolde [aut, cre]", "Maintainer": "Raivo Kolde ", - "Repository": "https://packagemanager.posit.co/cran/latest" + "Repository": "CRAN" }, "pillar": { "Package": "pillar", @@ -10755,7 +10778,7 @@ "NeedsCompilation": "no", "Author": "Kirill Müller [aut, cre] (ORCID: ), Hadley Wickham [aut], RStudio [cph]", "Maintainer": "Kirill Müller ", - "Repository": "https://packagemanager.posit.co/cran/latest" + "Repository": "CRAN" }, "pkgconfig": { "Package": "pkgconfig", @@ -10779,7 +10802,7 @@ "BugReports": "https://github.com/r-lib/pkgconfig/issues", "Encoding": "UTF-8", "NeedsCompilation": "no", - "Repository": "https://packagemanager.posit.co/cran/latest" + "Repository": "CRAN" }, "plogr": { "Package": "plogr", @@ -10801,7 +10824,7 @@ "NeedsCompilation": "no", "Author": "Kirill Müller [aut, cre], Sergey Podobry [cph] (Author of the bundled plog library)", "Maintainer": "Kirill Müller ", - "Repository": "https://packagemanager.posit.co/cran/latest" + "Repository": "CRAN" }, "plotly": { "Package": "plotly", @@ -10878,7 +10901,7 @@ "NeedsCompilation": "no", "Author": "Carson Sievert [aut, cre] (ORCID: ), Chris Parmer [aut], Toby Hocking [aut], Scott Chamberlain [aut], Karthik Ram [aut], Marianne Corvellec [aut] (ORCID: ), Pedro Despouy [aut], Salim Brüggemann [ctb] (ORCID: ), Plotly Technologies Inc. [cph]", "Maintainer": "Carson Sievert ", - "Repository": "https://packagemanager.posit.co/cran/latest" + "Repository": "CRAN" }, "plyr": { "Package": "plyr", @@ -10915,7 +10938,7 @@ "NeedsCompilation": "yes", "Author": "Hadley Wickham [aut, cre]", "Maintainer": "Hadley Wickham ", - "Repository": "https://packagemanager.posit.co/cran/latest" + "Repository": "CRAN" }, "png": { "Package": "png", @@ -10932,7 +10955,7 @@ "SystemRequirements": "libpng", "URL": "http://www.rforge.net/png/", "NeedsCompilation": "yes", - "Repository": "https://packagemanager.posit.co/cran/latest", + "Repository": "CRAN", "Encoding": "UTF-8" }, "polyclip": { @@ -10954,7 +10977,7 @@ "Note": "built from Clipper C++ version 6.4.0", "NeedsCompilation": "yes", "Author": "Angus Johnson [aut] (C++ original, http://www.angusj.com/delphi/clipper.php), Adrian Baddeley [aut, trl, cre], Kurt Hornik [ctb], Brian D. Ripley [ctb], Elliott Sales de Andrade [ctb], Paul Murrell [ctb], Ege Rubak [ctb], Mark Padgham [ctb]", - "Repository": "https://packagemanager.posit.co/cran/latest", + "Repository": "CRAN", "Encoding": "UTF-8" }, "preprocessCore": { @@ -11003,7 +11026,7 @@ "NeedsCompilation": "no", "Author": "Gabor Csardi [aut, cre], Bill Denney [ctb] (), Christophe Regouby [ctb]", "Maintainer": "Gabor Csardi ", - "Repository": "https://packagemanager.posit.co/cran/latest" + "Repository": "CRAN" }, "processx": { "Package": "processx", @@ -11076,7 +11099,7 @@ "NeedsCompilation": "no", "Author": "Gábor Csárdi [aut, cre], Rich FitzJohn [aut], Posit Software, PBC [cph, fnd]", "Maintainer": "Gábor Csárdi ", - "Repository": "https://packagemanager.posit.co/cran/latest" + "Repository": "CRAN" }, "promises": { "Package": "promises", @@ -11123,7 +11146,7 @@ "NeedsCompilation": "no", "Author": "Joe Cheng [aut], Barret Schloerke [aut, cre] (ORCID: ), Winston Chang [aut] (ORCID: ), Charlie Gao [aut] (ORCID: ), Posit Software, PBC [cph, fnd] (ROR: )", "Maintainer": "Barret Schloerke ", - "Repository": "https://packagemanager.posit.co/cran/latest" + "Repository": "CRAN" }, "ps": { "Package": "ps", @@ -11315,7 +11338,7 @@ "SystemRequirements": "freetype2, libpng, libtiff, libjpeg, libwebp, libwebpmux", "NeedsCompilation": "yes", "Author": "Thomas Lin Pedersen [cre, aut] (ORCID: ), Maxim Shemanarev [aut, cph] (Author of AGG), Tony Juricic [ctb, cph] (Contributor to AGG), Milan Marusinec [ctb, cph] (Contributor to AGG), Spencer Garrett [ctb] (Contributor to AGG), Posit Software, PBC [cph, fnd] (ROR: )", - "Repository": "https://packagemanager.posit.co/cran/latest" + "Repository": "CRAN" }, "rappdirs": { "Package": "rappdirs", @@ -11402,7 +11425,7 @@ "NeedsCompilation": "yes", "Author": "Hadley Wickham [aut], Jim Hester [aut], Romain Francois [ctb], Jennifer Bryan [aut, cre] (ORCID: ), Shelby Bearrows [ctb], Posit Software, PBC [cph, fnd], https://github.com/mandreyel/ [cph] (mio library), Jukka Jylänki [ctb, cph] (grisu3 implementation), Mikkel Jørgensen [ctb, cph] (grisu3 implementation)", "Maintainer": "Jennifer Bryan ", - "Repository": "https://packagemanager.posit.co/cran/latest" + "Repository": "CRAN" }, "readxl": { "Package": "readxl", @@ -11534,7 +11557,7 @@ "NeedsCompilation": "no", "Author": "Gábor Csárdi [aut, cre], Jim Hester [aut], Hadley Wickham [aut], Winston Chang [aut], Martin Morgan [aut], Dan Tenenbaum [aut], Posit Software, PBC [cph, fnd], Ascent Digital Services [cph]", "Maintainer": "Gábor Csárdi ", - "Repository": "https://packagemanager.posit.co/cran/latest" + "Repository": "CRAN" }, "rentrez": { "Package": "rentrez", @@ -11571,9 +11594,57 @@ "renv": { "Package": "renv", "Version": "1.1.7", - "OS_type": null, - "Repository": "CRAN", - "Source": "Repository" + "Source": "Repository", + "Type": "Package", + "Title": "Project Environments", + "Authors@R": "c( person(\"Kevin\", \"Ushey\", role = c(\"aut\", \"cre\"), email = \"kevin@rstudio.com\", comment = c(ORCID = \"0000-0003-2880-7407\")), person(\"Hadley\", \"Wickham\", role = c(\"aut\"), email = \"hadley@rstudio.com\", comment = c(ORCID = \"0000-0003-4757-117X\")), person(\"Posit Software, PBC\", role = c(\"cph\", \"fnd\")) )", + "Description": "A dependency management toolkit for R. Using 'renv', you can create and manage project-local R libraries, save the state of these libraries to a 'lockfile', and later restore your library as required. Together, these tools can help make your projects more isolated, portable, and reproducible.", + "License": "MIT + file LICENSE", + "URL": "https://rstudio.github.io/renv/, https://github.com/rstudio/renv", + "BugReports": "https://github.com/rstudio/renv/issues", + "Imports": [ + "utils" + ], + "Suggests": [ + "BiocManager", + "cli", + "compiler", + "covr", + "cpp11", + "curl", + "devtools", + "generics", + "gitcreds", + "jsonlite", + "jsonvalidate", + "knitr", + "miniUI", + "modules", + "packrat", + "pak", + "R6", + "remotes", + "reticulate", + "rmarkdown", + "rstudioapi", + "shiny", + "testthat", + "uuid", + "waldo", + "yaml", + "webfakes" + ], + "Encoding": "UTF-8", + "RoxygenNote": "7.3.3", + "VignetteBuilder": "knitr", + "Config/Needs/website": "tidyverse/tidytemplate", + "Config/testthat/edition": "3", + "Config/testthat/parallel": "true", + "Config/testthat/start-first": "bioconductor,python,install,restore,snapshot,retrieve,remotes", + "NeedsCompilation": "no", + "Author": "Kevin Ushey [aut, cre] (ORCID: ), Hadley Wickham [aut] (ORCID: ), Posit Software, PBC [cph, fnd]", + "Maintainer": "Kevin Ushey ", + "Repository": "CRAN" }, "reprex": { "Package": "reprex", @@ -11660,7 +11731,7 @@ "NeedsCompilation": "yes", "Author": "Hadley Wickham [aut, cre]", "Maintainer": "Hadley Wickham ", - "Repository": "https://packagemanager.posit.co/cran/latest" + "Repository": "CRAN" }, "restfulr": { "Package": "restfulr", @@ -11691,7 +11762,7 @@ "NeedsCompilation": "yes", "Author": "Michael Lawrence [aut, cre]", "Maintainer": "Michael Lawrence ", - "Repository": "RSPM", + "Repository": "CRAN", "Encoding": "UTF-8" }, "reticulate": { @@ -11742,7 +11813,7 @@ "NeedsCompilation": "yes", "Author": "Tomasz Kalinowski [ctb, cre], Kevin Ushey [aut], JJ Allaire [aut], RStudio [cph, fnd], Yuan Tang [aut, cph] (ORCID: ), Dirk Eddelbuettel [ctb, cph], Bryan Lewis [ctb, cph], Sigrid Keydana [ctb], Ryan Hafen [ctb, cph], Marcus Geelnard [ctb, cph] (TinyThread library, http://tinythreadpp.bitsnbites.eu/)", "Maintainer": "Tomasz Kalinowski ", - "Repository": "https://packagemanager.posit.co/cran/latest" + "Repository": "CRAN" }, "rhdf5": { "Package": "rhdf5", @@ -11844,7 +11915,7 @@ "Description": "Converts R object into JSON objects and vice-versa.", "URL": "https://github.com/alexcb/rjson", "License": "GPL-2", - "Repository": "https://packagemanager.posit.co/cran/latest", + "Repository": "CRAN", "NeedsCompilation": "yes", "Encoding": "UTF-8" }, @@ -11953,7 +12024,7 @@ "NeedsCompilation": "no", "Author": "JJ Allaire [aut], Yihui Xie [aut, cre] (ORCID: ), Christophe Dervieux [aut] (ORCID: ), Jonathan McPherson [aut], Javier Luraschi [aut], Kevin Ushey [aut], Aron Atkins [aut], Hadley Wickham [aut], Joe Cheng [aut], Winston Chang [aut], Richard Iannone [aut] (ORCID: ), Andrew Dunning [ctb] (ORCID: ), Atsushi Yasumoto [ctb, cph] (ORCID: , cph: Number sections Lua filter), Barret Schloerke [ctb], Carson Sievert [ctb] (ORCID: ), Devon Ryan [ctb] (ORCID: ), Frederik Aust [ctb] (ORCID: ), Jeff Allen [ctb], JooYoung Seo [ctb] (ORCID: ), Malcolm Barrett [ctb], Rob Hyndman [ctb], Romain Lesur [ctb], Roy Storey [ctb], Ruben Arslan [ctb], Sergio Oller [ctb], Posit Software, PBC [cph, fnd], jQuery UI contributors [ctb, cph] (jQuery UI library; authors listed in inst/rmd/h/jqueryui/AUTHORS.txt), Mark Otto [ctb] (Bootstrap library), Jacob Thornton [ctb] (Bootstrap library), Bootstrap contributors [ctb] (Bootstrap library), Twitter, Inc [cph] (Bootstrap library), Alexander Farkas [ctb, cph] (html5shiv library), Scott Jehl [ctb, cph] (Respond.js library), Ivan Sagalaev [ctb, cph] (highlight.js library), Greg Franko [ctb, cph] (tocify library), John MacFarlane [ctb, cph] (Pandoc templates), Google, Inc. [ctb, cph] (ioslides library), Dave Raggett [ctb] (slidy library), W3C [cph] (slidy library), Dave Gandy [ctb, cph] (Font-Awesome), Ben Sperry [ctb] (Ionicons), Drifty [cph] (Ionicons), Aidan Lister [ctb, cph] (jQuery StickyTabs), Benct Philip Jonsson [ctb, cph] (pagebreak Lua filter), Albert Krewinkel [ctb, cph] (pagebreak Lua filter)", "Maintainer": "Yihui Xie ", - "Repository": "https://packagemanager.posit.co/cran/latest" + "Repository": "CRAN" }, "rprojroot": { "Package": "rprojroot", @@ -11987,7 +12058,7 @@ "NeedsCompilation": "no", "Author": "Kirill Müller [aut, cre] (ORCID: )", "Maintainer": "Kirill Müller ", - "Repository": "https://packagemanager.posit.co/cran/latest" + "Repository": "CRAN" }, "rstudioapi": { "Package": "rstudioapi", @@ -12046,7 +12117,7 @@ "RoxygenNote": "7.1.1", "NeedsCompilation": "no", "Encoding": "UTF-8", - "Repository": "https://packagemanager.posit.co/cran/latest" + "Repository": "CRAN" }, "rtracklayer": { "Package": "rtracklayer", @@ -12101,10 +12172,11 @@ "biocViews": "Annotation,Visualization,DataImport", "Config/pak/sysreqs": "make libbz2-dev liblzma-dev libxml2-dev libssl-dev xz-utils zlib1g-dev", "Repository": "https://bioc-release.r-universe.dev", + "NeedsCompilation": "yes", + "RemoteType": "bioconductor", "RemoteUrl": "https://github.com/bioc/rtracklayer", "RemoteRef": "RELEASE_3_22", - "RemoteSha": "873c7111e8befb0e5761618280100a4de0cc5f3e", - "NeedsCompilation": "yes" + "RemoteSha": "873c7111e8befb0e5761618280100a4de0cc5f3e" }, "rvest": { "Package": "rvest", @@ -12191,7 +12263,7 @@ "NeedsCompilation": "yes", "Author": "Joe Cheng [aut], Timothy Mastny [aut], Richard Iannone [aut] (), Barret Schloerke [aut] (), Carson Sievert [aut, cre] (), Christophe Dervieux [ctb] (), RStudio [cph, fnd], Sass Open Source Foundation [ctb, cph] (LibSass library), Greter Marcel [ctb, cph] (LibSass library), Mifsud Michael [ctb, cph] (LibSass library), Hampton Catlin [ctb, cph] (LibSass library), Natalie Weizenbaum [ctb, cph] (LibSass library), Chris Eppstein [ctb, cph] (LibSass library), Adams Joseph [ctb, cph] (json.cpp), Trifunovic Nemanja [ctb, cph] (utf8.h)", "Maintainer": "Carson Sievert ", - "Repository": "https://packagemanager.posit.co/cran/latest" + "Repository": "CRAN" }, "scDblFinder": { "Package": "scDblFinder", @@ -12358,7 +12430,7 @@ "NeedsCompilation": "no", "Author": "Hadley Wickham [aut], Thomas Lin Pedersen [cre, aut] (), Dana Seidel [aut], Posit Software, PBC [cph, fnd] (03wc8by49)", "Maintainer": "Thomas Lin Pedersen ", - "Repository": "https://packagemanager.posit.co/cran/latest" + "Repository": "CRAN" }, "scater": { "Package": "scater", @@ -12467,7 +12539,7 @@ "NeedsCompilation": "no", "Author": "Guangchuang Yu [aut, cre] (ORCID: ), Shuangbin Xu [ctb] (ORCID: )", "Maintainer": "Guangchuang Yu ", - "Repository": "https://packagemanager.posit.co/cran/latest" + "Repository": "CRAN" }, "scran": { "Package": "scran", @@ -12619,7 +12691,8 @@ "NeedsCompilation": "no", "Author": "Vito M. R. Muggeo [aut, cre] (ORCID: )", "RoxygenNote": "7.3.1", - "Repository": "CRAN" + "Repository": "CRAN", + "Encoding": "UTF-8" }, "selectr": { "Package": "selectr", @@ -12648,7 +12721,8 @@ "NeedsCompilation": "no", "Author": "Simon Potter [aut, trl, cre], Simon Sapin [aut], Ian Bicking [aut]", "Maintainer": "Simon Potter ", - "Repository": "CRAN" + "Repository": "CRAN", + "Encoding": "UTF-8" }, "shape": { "Package": "shape", @@ -12668,7 +12742,7 @@ "Description": "Functions for plotting graphical shapes such as ellipses, circles, cylinders, arrows, ...", "License": "GPL (>= 3)", "NeedsCompilation": "no", - "Repository": "RSPM", + "Repository": "CRAN", "Encoding": "UTF-8" }, "shiny": { @@ -12799,7 +12873,7 @@ "NeedsCompilation": "yes", "Author": "James Balamuta [aut, cre, cph] (), Thijs van den Berg [aut, cph], Ralf Stubner [ctb]", "Maintainer": "James Balamuta ", - "Repository": "https://packagemanager.posit.co/cran/latest" + "Repository": "CRAN" }, "snow": { "Package": "snow", @@ -12821,7 +12895,7 @@ "utils" ], "NeedsCompilation": "no", - "Repository": "https://packagemanager.posit.co/cran/latest", + "Repository": "CRAN", "Encoding": "UTF-8" }, "sourcetools": { @@ -12844,7 +12918,7 @@ "BugReports": "https://github.com/kevinushey/sourcetools/issues", "Encoding": "UTF-8", "NeedsCompilation": "yes", - "Repository": "https://packagemanager.posit.co/cran/latest" + "Repository": "CRAN" }, "sparseMatrixStats": { "Package": "sparseMatrixStats", @@ -12940,7 +13014,7 @@ "License": "GPL-2 | GPL-3", "NeedsCompilation": "yes", "Author": "Gordon Smyth [cre, aut], Lizhong Chen [aut], Yifang Hu [ctb], Peter Dunn [ctb], Belinda Phipson [ctb], Yunshun Chen [ctb]", - "Repository": "https://packagemanager.posit.co/cran/latest", + "Repository": "CRAN", "Encoding": "UTF-8" }, "stringi": { @@ -12971,7 +13045,7 @@ "Author": "Marek Gagolewski [aut, cre, cph] (), Bartek Tartanus [ctb], Unicode, Inc. and others [ctb] (ICU4C source code, Unicode Character Database)", "Maintainer": "Marek Gagolewski ", "License_is_FOSS": "yes", - "Repository": "https://packagemanager.posit.co/cran/latest" + "Repository": "CRAN" }, "stringr": { "Package": "stringr", @@ -13016,7 +13090,7 @@ "NeedsCompilation": "no", "Author": "Hadley Wickham [aut, cre, cph], Posit Software, PBC [cph, fnd]", "Maintainer": "Hadley Wickham ", - "Repository": "https://packagemanager.posit.co/cran/latest" + "Repository": "CRAN" }, "survival": { "Package": "survival", @@ -13070,7 +13144,7 @@ "NeedsCompilation": "yes", "Author": "Jeroen Ooms [aut, cre] (), Gábor Csárdi [ctb]", "Maintainer": "Jeroen Ooms ", - "Repository": "https://packagemanager.posit.co/cran/latest" + "Repository": "CRAN" }, "systemfonts": { "Package": "systemfonts", @@ -13118,7 +13192,7 @@ "NeedsCompilation": "yes", "Author": "Thomas Lin Pedersen [aut, cre] (ORCID: ), Jeroen Ooms [aut] (ORCID: ), Devon Govett [aut] (Author of font-manager), Posit Software, PBC [cph, fnd] (ROR: )", "Maintainer": "Thomas Lin Pedersen ", - "Repository": "https://packagemanager.posit.co/cran/latest" + "Repository": "CRAN" }, "textshaping": { "Package": "textshaping", @@ -13162,7 +13236,7 @@ "NeedsCompilation": "yes", "Author": "Thomas Lin Pedersen [cre, aut] (ORCID: ), Posit Software, PBC [cph, fnd] (ROR: )", "Maintainer": "Thomas Lin Pedersen ", - "Repository": "https://packagemanager.posit.co/cran/latest" + "Repository": "CRAN" }, "tibble": { "Package": "tibble", @@ -13356,7 +13430,7 @@ "NeedsCompilation": "yes", "Author": "Lionel Henry [aut, cre], Hadley Wickham [aut], Posit Software, PBC [cph, fnd]", "Maintainer": "Lionel Henry ", - "Repository": "https://packagemanager.posit.co/cran/latest" + "Repository": "CRAN" }, "tidytree": { "Package": "tidytree", @@ -13625,7 +13699,7 @@ ], "NeedsCompilation": "yes", "Author": "Thomas Lin Pedersen [aut, cre] ()", - "Repository": "https://packagemanager.posit.co/cran/latest" + "Repository": "CRAN" }, "txdbmaker": { "Package": "txdbmaker", @@ -13736,11 +13810,12 @@ "Encoding": "UTF-8", "Config/pak/sysreqs": "make libbz2-dev libicu-dev liblzma-dev libpng-dev libxml2-dev libssl-dev xz-utils zlib1g-dev", "Repository": "https://bioc-release.r-universe.dev", + "NeedsCompilation": "no", + "Author": "Michael Love [aut, cre], Charlotte Soneson [aut, ctb], Peter Hickey [aut, ctb], Rob Patro [aut, ctb], NIH NHGRI [fnd], CZI [fnd]", + "RemoteType": "bioconductor", "RemoteUrl": "https://github.com/bioc/tximeta", "RemoteRef": "RELEASE_3_22", - "RemoteSha": "3f6ef540b9da5f7ac57404cd932c07d6432ca2bf", - "NeedsCompilation": "no", - "Author": "Michael Love [aut, cre], Charlotte Soneson [aut, ctb], Peter Hickey [aut, ctb], Rob Patro [aut, ctb], NIH NHGRI [fnd], CZI [fnd]" + "RemoteSha": "3f6ef540b9da5f7ac57404cd932c07d6432ca2bf" }, "tximport": { "Package": "tximport", @@ -13780,6 +13855,7 @@ "NeedsCompilation": "no", "Encoding": "UTF-8", "Repository": "https://bioc-release.r-universe.dev", + "RemoteType": "bioconductor", "RemoteUrl": "https://github.com/bioc/tximport", "RemoteRef": "RELEASE_3_22", "RemoteSha": "1c6a0bb7ba89727d227946700dffe2c436b6e11e" @@ -13812,7 +13888,7 @@ "NeedsCompilation": "yes", "Author": "Davis Vaughan [aut, cre], Howard Hinnant [cph] (Author of the included date library), Posit Software, PBC [cph, fnd]", "Maintainer": "Davis Vaughan ", - "Repository": "https://packagemanager.posit.co/cran/latest" + "Repository": "CRAN" }, "umap": { "Package": "umap", @@ -13881,7 +13957,7 @@ "NeedsCompilation": "yes", "Author": "Patrick O. Perry [aut, cph], Kirill Müller [cre] (ORCID: ), Unicode, Inc. [cph, dtc] (Unicode Character Database)", "Maintainer": "Kirill Müller ", - "Repository": "https://packagemanager.posit.co/cran/latest" + "Repository": "CRAN" }, "uuid": { "Package": "uuid", @@ -13899,7 +13975,7 @@ "URL": "https://www.rforge.net/uuid", "BugReports": "https://github.com/s-u/uuid/issues", "NeedsCompilation": "yes", - "Repository": "RSPM", + "Repository": "CRAN", "Encoding": "UTF-8" }, "uwot": { @@ -13945,7 +14021,7 @@ "NeedsCompilation": "yes", "Author": "James Melville [aut, cre, cph], Aaron Lun [ctb], Mohamed Nadhir Djekidel [ctb], Yuhan Hao [ctb], Dirk Eddelbuettel [ctb], Wouter van der Bijl [ctb], Hugo Gruson [ctb]", "Maintainer": "James Melville ", - "Repository": "https://packagemanager.posit.co/cran/latest" + "Repository": "CRAN" }, "vctrs": { "Package": "vctrs", @@ -14026,7 +14102,7 @@ ], "RoxygenNote": "7.2.3", "NeedsCompilation": "no", - "Repository": "https://packagemanager.posit.co/cran/latest", + "Repository": "CRAN", "Encoding": "UTF-8" }, "viridis": { @@ -14073,7 +14149,7 @@ "RoxygenNote": "7.3.1", "NeedsCompilation": "no", "Author": "Simon Garnier [aut, cre], Noam Ross [ctb, cph], Bob Rudis [ctb, cph], Marco Sciaini [ctb, cph], Antônio Pedro Camargo [ctb, cph], Cédric Scherer [ctb, cph]", - "Repository": "https://packagemanager.posit.co/cran/latest" + "Repository": "CRAN" }, "viridisLite": { "Package": "viridisLite", @@ -14101,7 +14177,7 @@ "RoxygenNote": "7.2.3", "NeedsCompilation": "no", "Author": "Simon Garnier [aut, cre], Noam Ross [ctb, cph], Bob Rudis [ctb, cph], Marco Sciaini [ctb, cph], Antônio Pedro Camargo [ctb, cph], Cédric Scherer [ctb, cph]", - "Repository": "https://packagemanager.posit.co/cran/latest" + "Repository": "CRAN" }, "vroom": { "Package": "vroom", @@ -14251,7 +14327,7 @@ "NeedsCompilation": "no", "Author": "Jim Hester [aut], Lionel Henry [aut, cre], Kirill Müller [aut], Kevin Ushey [aut], Hadley Wickham [aut], Winston Chang [aut], Jennifer Bryan [ctb], Richard Cotton [ctb], Posit Software, PBC [cph, fnd]", "Maintainer": "Lionel Henry ", - "Repository": "https://packagemanager.posit.co/cran/latest" + "Repository": "CRAN" }, "xfun": { "Package": "xfun", @@ -14413,7 +14489,7 @@ "R (>= 2.10.0)" ], "License": "GPL (>= 2)", - "Repository": "https://packagemanager.posit.co/cran/latest", + "Repository": "CRAN", "NeedsCompilation": "no", "Author": "David B. Dahl [aut], David Scott [aut, cre], Charles Roosen [aut], Arni Magnusson [aut], Jonathan Swinton [aut], Ajay Shah [ctb], Arne Henningsen [ctb], Benno Puetz [ctb], Bernhard Pfaff [ctb], Claudio Agostinelli [ctb], Claudius Loehnert [ctb], David Mitchell [ctb], David Whiting [ctb], Fernando da Rosa [ctb], Guido Gay [ctb], Guido Schulz [ctb], Ian Fellows [ctb], Jeff Laake [ctb], John Walker [ctb], Jun Yan [ctb], Liviu Andronic [ctb], Markus Loecher [ctb], Martin Gubri [ctb], Matthieu Stigler [ctb], Robert Castelo [ctb], Seth Falcon [ctb], Stefan Edwards [ctb], Sven Garbade [ctb], Uwe Ligges [ctb]", "Encoding": "UTF-8" diff --git a/renv/activate.R b/renv/activate.R index f9b62be9..ef25ef83 100644 --- a/renv/activate.R +++ b/renv/activate.R @@ -3,7 +3,7 @@ local({ # the requested version of renv version <- "1.1.7" - attr(version, "md5") <- "37efb9ddbcd335186ff96ba8dedfd19e" + attr(version, "md5") <- "dd5d60f155dadff4c88c2fc6680504b4" attr(version, "sha") <- NULL # the project directory From fd00552bbd136b147ade0190364d38c87cc997b5 Mon Sep 17 00:00:00 2001 From: Joshua Shapiro Date: Thu, 29 Jan 2026 10:26:16 -0500 Subject: [PATCH 050/148] Make lockfile consistent --- .Rprofile | 29 ----------------------------- renv.lock | 16 ++++++++-------- 2 files changed, 8 insertions(+), 37 deletions(-) diff --git a/.Rprofile b/.Rprofile index 7b0c92de..81b960f5 100644 --- a/.Rprofile +++ b/.Rprofile @@ -1,30 +1 @@ source("renv/activate.R") - -# Set the repos using the renv.lock file -renv_json <- jsonlite::read_json("renv.lock") -renv_r_repos <- renv_json$R$Repositories - -# Extract the names -repo_names <- purrr::flatten_chr( - purrr::map( - renv_r_repos, - ~ .x$Name - ) -) - -# Extract the URLs -repo_urls <- purrr::flatten_chr( - purrr::map( - renv_r_repos, - ~ .x$URL - ) -) - -# Set the repo names -names(repo_urls) <- repo_names - -# Set the options -options(repos = repo_urls) - -# Remove all these objects -rm(renv_json, renv_r_repos, repo_names, repo_urls) diff --git a/renv.lock b/renv.lock index a2b17e1e..ccf2a7df 100644 --- a/renv.lock +++ b/renv.lock @@ -6034,7 +6034,7 @@ }, "data.table": { "Package": "data.table", - "Version": "1.18.0", + "Version": "1.18.2.1", "Source": "Repository", "Title": "Extension of `data.frame`", "Depends": [ @@ -6060,9 +6060,9 @@ "VignetteBuilder": "knitr", "Encoding": "UTF-8", "ByteCompile": "TRUE", - "Authors@R": "c( person(\"Tyson\",\"Barrett\", role=c(\"aut\",\"cre\"), email=\"t.barrett88@gmail.com\", comment = c(ORCID=\"0000-0002-2137-1391\")), person(\"Matt\",\"Dowle\", role=\"aut\", email=\"mattjdowle@gmail.com\"), person(\"Arun\",\"Srinivasan\", role=\"aut\", email=\"asrini@pm.me\"), person(\"Jan\",\"Gorecki\", role=\"aut\", email=\"j.gorecki@wit.edu.pl\"), person(\"Michael\",\"Chirico\", role=\"aut\", email=\"michaelchirico4@gmail.com\", comment = c(ORCID=\"0000-0003-0787-087X\")), person(\"Toby\",\"Hocking\", role=\"aut\", email=\"toby.hocking@r-project.org\", comment = c(ORCID=\"0000-0002-3146-0865\")), person(\"Benjamin\",\"Schwendinger\",role=\"aut\", comment = c(ORCID=\"0000-0003-3315-8114\")), person(\"Ivan\", \"Krylov\", role=\"aut\", email=\"ikrylov@disroot.org\", comment = c(ORCID=\"0000-0002-0172-3812\")), person(\"Pasha\",\"Stetsenko\", role=\"ctb\"), person(\"Tom\",\"Short\", role=\"ctb\"), person(\"Steve\",\"Lianoglou\", role=\"ctb\"), person(\"Eduard\",\"Antonyan\", role=\"ctb\"), person(\"Markus\",\"Bonsch\", role=\"ctb\"), person(\"Hugh\",\"Parsonage\", role=\"ctb\"), person(\"Scott\",\"Ritchie\", role=\"ctb\"), person(\"Kun\",\"Ren\", role=\"ctb\"), person(\"Xianying\",\"Tan\", role=\"ctb\"), person(\"Rick\",\"Saporta\", role=\"ctb\"), person(\"Otto\",\"Seiskari\", role=\"ctb\"), person(\"Xianghui\",\"Dong\", role=\"ctb\"), person(\"Michel\",\"Lang\", role=\"ctb\"), person(\"Watal\",\"Iwasaki\", role=\"ctb\"), person(\"Seth\",\"Wenchel\", role=\"ctb\"), person(\"Karl\",\"Broman\", role=\"ctb\"), person(\"Tobias\",\"Schmidt\", role=\"ctb\"), person(\"David\",\"Arenburg\", role=\"ctb\"), person(\"Ethan\",\"Smith\", role=\"ctb\"), person(\"Francois\",\"Cocquemas\", role=\"ctb\"), person(\"Matthieu\",\"Gomez\", role=\"ctb\"), person(\"Philippe\",\"Chataignon\", role=\"ctb\"), person(\"Nello\",\"Blaser\", role=\"ctb\"), person(\"Dmitry\",\"Selivanov\", role=\"ctb\"), person(\"Andrey\",\"Riabushenko\", role=\"ctb\"), person(\"Cheng\",\"Lee\", role=\"ctb\"), person(\"Declan\",\"Groves\", role=\"ctb\"), person(\"Daniel\",\"Possenriede\", role=\"ctb\"), person(\"Felipe\",\"Parages\", role=\"ctb\"), person(\"Denes\",\"Toth\", role=\"ctb\"), person(\"Mus\",\"Yaramaz-David\", role=\"ctb\"), person(\"Ayappan\",\"Perumal\", role=\"ctb\"), person(\"James\",\"Sams\", role=\"ctb\"), person(\"Martin\",\"Morgan\", role=\"ctb\"), person(\"Michael\",\"Quinn\", role=\"ctb\"), person(given=\"@javrucebo\", role=\"ctb\", comment=\"GitHub user\"), person(\"Marc\",\"Halperin\", role=\"ctb\"), person(\"Roy\",\"Storey\", role=\"ctb\"), person(\"Manish\",\"Saraswat\", role=\"ctb\"), person(\"Morgan\",\"Jacob\", role=\"ctb\"), person(\"Michael\",\"Schubmehl\", role=\"ctb\"), person(\"Davis\",\"Vaughan\", role=\"ctb\"), person(\"Leonardo\",\"Silvestri\", role=\"ctb\"), person(\"Jim\",\"Hester\", role=\"ctb\"), person(\"Anthony\",\"Damico\", role=\"ctb\"), person(\"Sebastian\",\"Freundt\", role=\"ctb\"), person(\"David\",\"Simons\", role=\"ctb\"), person(\"Elliott\",\"Sales de Andrade\", role=\"ctb\"), person(\"Cole\",\"Miller\", role=\"ctb\"), person(\"Jens Peder\",\"Meldgaard\", role=\"ctb\"), person(\"Vaclav\",\"Tlapak\", role=\"ctb\"), person(\"Kevin\",\"Ushey\", role=\"ctb\"), person(\"Dirk\",\"Eddelbuettel\", role=\"ctb\"), person(\"Tony\",\"Fischetti\", role=\"ctb\"), person(\"Ofek\",\"Shilon\", role=\"ctb\"), person(\"Vadim\",\"Khotilovich\", role=\"ctb\"), person(\"Hadley\",\"Wickham\", role=\"ctb\"), person(\"Bennet\",\"Becker\", role=\"ctb\"), person(\"Kyle\",\"Haynes\", role=\"ctb\"), person(\"Boniface Christian\",\"Kamgang\", role=\"ctb\"), person(\"Olivier\",\"Delmarcell\", role=\"ctb\"), person(\"Josh\",\"O'Brien\", role=\"ctb\"), person(\"Dereck\",\"de Mezquita\", role=\"ctb\"), person(\"Michael\",\"Czekanski\", role=\"ctb\"), person(\"Dmitry\", \"Shemetov\", role=\"ctb\"), person(\"Nitish\", \"Jha\", role=\"ctb\"), person(\"Joshua\", \"Wu\", role=\"ctb\"), person(\"Iago\", \"Giné-Vázquez\", role=\"ctb\"), person(\"Anirban\", \"Chetia\", role=\"ctb\"), person(\"Doris\", \"Amoakohene\", role=\"ctb\"), person(\"Angel\", \"Feliz\", role=\"ctb\"), person(\"Michael\",\"Young\", role=\"ctb\"), person(\"Mark\", \"Seeto\", role=\"ctb\"), person(\"Philippe\", \"Grosjean\", role=\"ctb\"), person(\"Vincent\", \"Runge\", role=\"ctb\"), person(\"Christian\", \"Wia\", role=\"ctb\"), person(\"Elise\", \"Maigné\", role=\"ctb\"), person(\"Vincent\", \"Rocher\", role=\"ctb\"), person(\"Vijay\", \"Lulla\", role=\"ctb\"), person(\"Aljaž\", \"Sluga\", role=\"ctb\"), person(\"Bill\", \"Evans\", role=\"ctb\"), person(\"Reino\", \"Bruner\", role=\"ctb\"), person(given=\"@badasahog\", role=\"ctb\", comment=\"GitHub user\"), person(\"Vinit\", \"Thakur\", role=\"ctb\"), person(\"Mukul\", \"Kumar\", role=\"ctb\"), person(\"Ildikó\", \"Czeller\", role=\"ctb\") )", + "Authors@R": "c( person(\"Tyson\",\"Barrett\", role=c(\"aut\",\"cre\"), email=\"t.barrett88@gmail.com\", comment = c(ORCID=\"0000-0002-2137-1391\")), person(\"Matt\",\"Dowle\", role=\"aut\", email=\"mattjdowle@gmail.com\"), person(\"Arun\",\"Srinivasan\", role=\"aut\", email=\"asrini@pm.me\"), person(\"Jan\",\"Gorecki\", role=\"aut\", email=\"j.gorecki@wit.edu.pl\"), person(\"Michael\",\"Chirico\", role=\"aut\", email=\"michaelchirico4@gmail.com\", comment = c(ORCID=\"0000-0003-0787-087X\")), person(\"Toby\",\"Hocking\", role=\"aut\", email=\"toby.hocking@r-project.org\", comment = c(ORCID=\"0000-0002-3146-0865\")), person(\"Benjamin\",\"Schwendinger\",role=\"aut\", comment = c(ORCID=\"0000-0003-3315-8114\")), person(\"Ivan\", \"Krylov\", role=\"aut\", email=\"ikrylov@disroot.org\", comment = c(ORCID=\"0000-0002-0172-3812\")), person(\"Pasha\",\"Stetsenko\", role=\"ctb\"), person(\"Tom\",\"Short\", role=\"ctb\"), person(\"Steve\",\"Lianoglou\", role=\"ctb\"), person(\"Eduard\",\"Antonyan\", role=\"ctb\"), person(\"Markus\",\"Bonsch\", role=\"ctb\"), person(\"Hugh\",\"Parsonage\", role=\"ctb\"), person(\"Scott\",\"Ritchie\", role=\"ctb\"), person(\"Kun\",\"Ren\", role=\"ctb\"), person(\"Xianying\",\"Tan\", role=\"ctb\"), person(\"Rick\",\"Saporta\", role=\"ctb\"), person(\"Otto\",\"Seiskari\", role=\"ctb\"), person(\"Xianghui\",\"Dong\", role=\"ctb\"), person(\"Michel\",\"Lang\", role=\"ctb\"), person(\"Watal\",\"Iwasaki\", role=\"ctb\"), person(\"Seth\",\"Wenchel\", role=\"ctb\"), person(\"Karl\",\"Broman\", role=\"ctb\"), person(\"Tobias\",\"Schmidt\", role=\"ctb\"), person(\"David\",\"Arenburg\", role=\"ctb\"), person(\"Ethan\",\"Smith\", role=\"ctb\"), person(\"Francois\",\"Cocquemas\", role=\"ctb\"), person(\"Matthieu\",\"Gomez\", role=\"ctb\"), person(\"Philippe\",\"Chataignon\", role=\"ctb\"), person(\"Nello\",\"Blaser\", role=\"ctb\"), person(\"Dmitry\",\"Selivanov\", role=\"ctb\"), person(\"Andrey\",\"Riabushenko\", role=\"ctb\"), person(\"Cheng\",\"Lee\", role=\"ctb\"), person(\"Declan\",\"Groves\", role=\"ctb\"), person(\"Daniel\",\"Possenriede\", role=\"ctb\"), person(\"Felipe\",\"Parages\", role=\"ctb\"), person(\"Denes\",\"Toth\", role=\"ctb\"), person(\"Mus\",\"Yaramaz-David\", role=\"ctb\"), person(\"Ayappan\",\"Perumal\", role=\"ctb\"), person(\"James\",\"Sams\", role=\"ctb\"), person(\"Martin\",\"Morgan\", role=\"ctb\"), person(\"Michael\",\"Quinn\", role=\"ctb\"), person(given=\"@javrucebo\", role=\"ctb\", comment=\"GitHub user\"), person(\"Marc\",\"Halperin\", role=\"ctb\"), person(\"Roy\",\"Storey\", role=\"ctb\"), person(\"Manish\",\"Saraswat\", role=\"ctb\"), person(\"Morgan\",\"Jacob\", role=\"ctb\"), person(\"Michael\",\"Schubmehl\", role=\"ctb\"), person(\"Davis\",\"Vaughan\", role=\"ctb\"), person(\"Leonardo\",\"Silvestri\", role=\"ctb\"), person(\"Jim\",\"Hester\", role=\"ctb\"), person(\"Anthony\",\"Damico\", role=\"ctb\"), person(\"Sebastian\",\"Freundt\", role=\"ctb\"), person(\"David\",\"Simons\", role=\"ctb\"), person(\"Elliott\",\"Sales de Andrade\", role=\"ctb\"), person(\"Cole\",\"Miller\", role=\"ctb\"), person(\"Jens Peder\",\"Meldgaard\", role=\"ctb\"), person(\"Vaclav\",\"Tlapak\", role=\"ctb\"), person(\"Kevin\",\"Ushey\", role=\"ctb\"), person(\"Dirk\",\"Eddelbuettel\", role=\"ctb\"), person(\"Tony\",\"Fischetti\", role=\"ctb\"), person(\"Ofek\",\"Shilon\", role=\"ctb\"), person(\"Vadim\",\"Khotilovich\", role=\"ctb\"), person(\"Hadley\",\"Wickham\", role=\"ctb\"), person(\"Bennet\",\"Becker\", role=\"ctb\"), person(\"Kyle\",\"Haynes\", role=\"ctb\"), person(\"Boniface Christian\",\"Kamgang\", role=\"ctb\"), person(\"Olivier\",\"Delmarcell\", role=\"ctb\"), person(\"Josh\",\"O'Brien\", role=\"ctb\"), person(\"Dereck\",\"de Mezquita\", role=\"ctb\"), person(\"Michael\",\"Czekanski\", role=\"ctb\"), person(\"Dmitry\", \"Shemetov\", role=\"ctb\"), person(\"Nitish\", \"Jha\", role=\"ctb\"), person(\"Joshua\", \"Wu\", role=\"ctb\"), person(\"Iago\", \"Giné-Vázquez\", role=\"ctb\"), person(\"Anirban\", \"Chetia\", role=\"ctb\"), person(\"Doris\", \"Amoakohene\", role=\"ctb\"), person(\"Angel\", \"Feliz\", role=\"ctb\"), person(\"Michael\",\"Young\", role=\"ctb\"), person(\"Mark\", \"Seeto\", role=\"ctb\"), person(\"Philippe\", \"Grosjean\", role=\"ctb\"), person(\"Vincent\", \"Runge\", role=\"ctb\"), person(\"Christian\", \"Wia\", role=\"ctb\"), person(\"Elise\", \"Maigné\", role=\"ctb\"), person(\"Vincent\", \"Rocher\", role=\"ctb\"), person(\"Vijay\", \"Lulla\", role=\"ctb\"), person(\"Aljaž\", \"Sluga\", role=\"ctb\"), person(\"Bill\", \"Evans\", role=\"ctb\"), person(\"Reino\", \"Bruner\", role=\"ctb\"), person(given=\"@badasahog\", role=\"ctb\", comment=\"GitHub user\"), person(\"Vinit\", \"Thakur\", role=\"ctb\"), person(\"Mukul\", \"Kumar\", role=\"ctb\"), person(\"Ildikó\", \"Czeller\", role=\"ctb\"), person(\"Manmita\", \"Das\", role=\"ctb\") )", "NeedsCompilation": "yes", - "Author": "Tyson Barrett [aut, cre] (ORCID: ), Matt Dowle [aut], Arun Srinivasan [aut], Jan Gorecki [aut], Michael Chirico [aut] (ORCID: ), Toby Hocking [aut] (ORCID: ), Benjamin Schwendinger [aut] (ORCID: ), Ivan Krylov [aut] (ORCID: ), Pasha Stetsenko [ctb], Tom Short [ctb], Steve Lianoglou [ctb], Eduard Antonyan [ctb], Markus Bonsch [ctb], Hugh Parsonage [ctb], Scott Ritchie [ctb], Kun Ren [ctb], Xianying Tan [ctb], Rick Saporta [ctb], Otto Seiskari [ctb], Xianghui Dong [ctb], Michel Lang [ctb], Watal Iwasaki [ctb], Seth Wenchel [ctb], Karl Broman [ctb], Tobias Schmidt [ctb], David Arenburg [ctb], Ethan Smith [ctb], Francois Cocquemas [ctb], Matthieu Gomez [ctb], Philippe Chataignon [ctb], Nello Blaser [ctb], Dmitry Selivanov [ctb], Andrey Riabushenko [ctb], Cheng Lee [ctb], Declan Groves [ctb], Daniel Possenriede [ctb], Felipe Parages [ctb], Denes Toth [ctb], Mus Yaramaz-David [ctb], Ayappan Perumal [ctb], James Sams [ctb], Martin Morgan [ctb], Michael Quinn [ctb], @javrucebo [ctb] (GitHub user), Marc Halperin [ctb], Roy Storey [ctb], Manish Saraswat [ctb], Morgan Jacob [ctb], Michael Schubmehl [ctb], Davis Vaughan [ctb], Leonardo Silvestri [ctb], Jim Hester [ctb], Anthony Damico [ctb], Sebastian Freundt [ctb], David Simons [ctb], Elliott Sales de Andrade [ctb], Cole Miller [ctb], Jens Peder Meldgaard [ctb], Vaclav Tlapak [ctb], Kevin Ushey [ctb], Dirk Eddelbuettel [ctb], Tony Fischetti [ctb], Ofek Shilon [ctb], Vadim Khotilovich [ctb], Hadley Wickham [ctb], Bennet Becker [ctb], Kyle Haynes [ctb], Boniface Christian Kamgang [ctb], Olivier Delmarcell [ctb], Josh O'Brien [ctb], Dereck de Mezquita [ctb], Michael Czekanski [ctb], Dmitry Shemetov [ctb], Nitish Jha [ctb], Joshua Wu [ctb], Iago Giné-Vázquez [ctb], Anirban Chetia [ctb], Doris Amoakohene [ctb], Angel Feliz [ctb], Michael Young [ctb], Mark Seeto [ctb], Philippe Grosjean [ctb], Vincent Runge [ctb], Christian Wia [ctb], Elise Maigné [ctb], Vincent Rocher [ctb], Vijay Lulla [ctb], Aljaž Sluga [ctb], Bill Evans [ctb], Reino Bruner [ctb], @badasahog [ctb] (GitHub user), Vinit Thakur [ctb], Mukul Kumar [ctb], Ildikó Czeller [ctb]", + "Author": "Tyson Barrett [aut, cre] (ORCID: ), Matt Dowle [aut], Arun Srinivasan [aut], Jan Gorecki [aut], Michael Chirico [aut] (ORCID: ), Toby Hocking [aut] (ORCID: ), Benjamin Schwendinger [aut] (ORCID: ), Ivan Krylov [aut] (ORCID: ), Pasha Stetsenko [ctb], Tom Short [ctb], Steve Lianoglou [ctb], Eduard Antonyan [ctb], Markus Bonsch [ctb], Hugh Parsonage [ctb], Scott Ritchie [ctb], Kun Ren [ctb], Xianying Tan [ctb], Rick Saporta [ctb], Otto Seiskari [ctb], Xianghui Dong [ctb], Michel Lang [ctb], Watal Iwasaki [ctb], Seth Wenchel [ctb], Karl Broman [ctb], Tobias Schmidt [ctb], David Arenburg [ctb], Ethan Smith [ctb], Francois Cocquemas [ctb], Matthieu Gomez [ctb], Philippe Chataignon [ctb], Nello Blaser [ctb], Dmitry Selivanov [ctb], Andrey Riabushenko [ctb], Cheng Lee [ctb], Declan Groves [ctb], Daniel Possenriede [ctb], Felipe Parages [ctb], Denes Toth [ctb], Mus Yaramaz-David [ctb], Ayappan Perumal [ctb], James Sams [ctb], Martin Morgan [ctb], Michael Quinn [ctb], @javrucebo [ctb] (GitHub user), Marc Halperin [ctb], Roy Storey [ctb], Manish Saraswat [ctb], Morgan Jacob [ctb], Michael Schubmehl [ctb], Davis Vaughan [ctb], Leonardo Silvestri [ctb], Jim Hester [ctb], Anthony Damico [ctb], Sebastian Freundt [ctb], David Simons [ctb], Elliott Sales de Andrade [ctb], Cole Miller [ctb], Jens Peder Meldgaard [ctb], Vaclav Tlapak [ctb], Kevin Ushey [ctb], Dirk Eddelbuettel [ctb], Tony Fischetti [ctb], Ofek Shilon [ctb], Vadim Khotilovich [ctb], Hadley Wickham [ctb], Bennet Becker [ctb], Kyle Haynes [ctb], Boniface Christian Kamgang [ctb], Olivier Delmarcell [ctb], Josh O'Brien [ctb], Dereck de Mezquita [ctb], Michael Czekanski [ctb], Dmitry Shemetov [ctb], Nitish Jha [ctb], Joshua Wu [ctb], Iago Giné-Vázquez [ctb], Anirban Chetia [ctb], Doris Amoakohene [ctb], Angel Feliz [ctb], Michael Young [ctb], Mark Seeto [ctb], Philippe Grosjean [ctb], Vincent Runge [ctb], Christian Wia [ctb], Elise Maigné [ctb], Vincent Rocher [ctb], Vijay Lulla [ctb], Aljaž Sluga [ctb], Bill Evans [ctb], Reino Bruner [ctb], @badasahog [ctb] (GitHub user), Vinit Thakur [ctb], Mukul Kumar [ctb], Ildikó Czeller [ctb], Manmita Das [ctb]", "Maintainer": "Tyson Barrett ", "Repository": "CRAN" }, @@ -6374,7 +6374,7 @@ "URL": "https://bioinf.wehi.edu.au/edgeR/, https://bioconductor.org/packages/edgeR", "biocViews": "AlternativeSplicing, BatchEffect, Bayesian, BiomedicalInformatics, CellBiology, ChIPSeq, Clustering, Coverage, DifferentialExpression, DifferentialMethylation, DifferentialSplicing, DNAMethylation, Epigenetics, FunctionalGenomics, GeneExpression, GeneSetEnrichment, Genetics, Genetics, ImmunoOncology, MultipleComparison, Normalization, Pathways, Proteomics, QualityControl, Regression, RNASeq, SAGE, Sequencing, SingleCell, SystemsBiology, TimeCourse, Transcription, Transcriptomics", "NeedsCompilation": "yes", - "Repository": "https://bioc-release.r-universe.dev", + "Repository": "Bioconductor 3.22", "RemoteType": "bioconductor", "RemoteUrl": "https://github.com/bioc/edgeR", "RemoteRef": "RELEASE_3_22", @@ -6955,7 +6955,7 @@ "VignetteBuilder": "knitr", "URL": "https://github.com/ctlab/fgsea/", "BugReports": "https://github.com/ctlab/fgsea/issues", - "Repository": "https://bioc-release.r-universe.dev", + "Repository": "Bioconductor 3.22", "NeedsCompilation": "yes", "Author": "Gennady Korotkevich [aut], Vladimir Sukhov [aut], Nikolay Budin [ctb], Nikita Gusak [ctb], Zieman Mark [ctb], Alexey Sergushichev [aut, cre]", "Maintainer": "Alexey Sergushichev ", @@ -8078,7 +8078,7 @@ "RoxygenNote": "7.3.3", "Roxygen": "list(markdown = TRUE)", "Config/pak/sysreqs": "libcairo2-dev libfontconfig1-dev libfreetype6-dev make libicu-dev libpng-dev", - "Repository": "https://bioc-release.r-universe.dev", + "Repository": "Bioconductor 3.22", "NeedsCompilation": "no", "Author": "Guangchuang Yu [aut, cre, cph] (ORCID: ), Tommy Tsan-Yuk Lam [aut, ths], Shuangbin Xu [aut] (ORCID: ), Lin Li [ctb], Bradley Jones [ctb], Justin Silverman [ctb], Watal M. Iwasaki [ctb], Yonghe Xia [ctb], Ruizhu Huang [ctb]", "RemoteType": "bioconductor", @@ -12171,7 +12171,7 @@ "Collate": "io.R web.R ranges.R trackDb.R browser.R ucsc.R readGFF.R gff.R bed.R wig.R utils.R bigWig.R bigBed.R chain.R quickload.R trackhub.R twobit.R fasta.R tabix.R bam.R trackTable.R index.R test_rtracklayer_package.R ncbi.R igv.R zzz.R", "biocViews": "Annotation,Visualization,DataImport", "Config/pak/sysreqs": "make libbz2-dev liblzma-dev libxml2-dev libssl-dev xz-utils zlib1g-dev", - "Repository": "https://bioc-release.r-universe.dev", + "Repository": "Bioconductor 3.22", "NeedsCompilation": "yes", "RemoteType": "bioconductor", "RemoteUrl": "https://github.com/bioc/rtracklayer", @@ -13809,7 +13809,7 @@ "RoxygenNote": "7.3.3", "Encoding": "UTF-8", "Config/pak/sysreqs": "make libbz2-dev libicu-dev liblzma-dev libpng-dev libxml2-dev libssl-dev xz-utils zlib1g-dev", - "Repository": "https://bioc-release.r-universe.dev", + "Repository": "Bioconductor 3.22", "NeedsCompilation": "no", "Author": "Michael Love [aut, cre], Charlotte Soneson [aut, ctb], Peter Hickey [aut, ctb], Rob Patro [aut, ctb], NIH NHGRI [fnd], CZI [fnd]", "RemoteType": "bioconductor", From 786f6cc72d3d01240b0151c39b65c7ae58da1112 Mon Sep 17 00:00:00 2001 From: Joshua Shapiro Date: Thu, 29 Jan 2026 17:11:24 -0500 Subject: [PATCH 051/148] Try to create a dual-platform build --- .github/workflows/build-docker.yml | 116 ++++++++++++++++++++++++----- 1 file changed, 97 insertions(+), 19 deletions(-) diff --git a/.github/workflows/build-docker.yml b/.github/workflows/build-docker.yml index 373f72be..22feafa8 100644 --- a/.github/workflows/build-docker.yml +++ b/.github/workflows/build-docker.yml @@ -19,16 +19,27 @@ on: - renv.lock - requirements.txt - current-modules.json + - .github/workflows/build-docker.yml -# A workflow run is made up of one or more jobs that can run sequentially or in parallel +env: + REGISTRY_IMAGE: ccdl/training_rstudio jobs: - # This workflow contains a single job called "build" build: - # The type of runner that the job will run on - runs-on: ubuntu-latest + strategy: + fail-fast: false + matrix: + include: + - platform: linux/amd64 + runner: ubuntu-latest + - platform: linux/arm64 + runner: ubuntu-24.04-arm + runs-on: ${{ matrix.runner }} - # Steps represent a sequence of tasks that will be executed as part of the job steps: + - name: Prepare env variables + run: | + platform=${{ matrix.platform }} + echo "PLATFORM_PAIR=${platform//\//-}" >> $GITHUB_ENV - name: Check out the repo uses: actions/checkout@v5 @@ -44,23 +55,22 @@ jobs: fi - name: Load 1Password secrets - uses: 1password/load-secrets-action@v2 + uses: 1password/load-secrets-action@v3 with: export-env: true env: OP_SERVICE_ACCOUNT_TOKEN: ${{ secrets.TRAINING_OP_SERVICE_ACCOUNT_TOKEN }} DOCKER_USER: ${{ secrets.OP_DOCKER_USERNAME }} DOCKER_PASSWORD: ${{ secrets.OP_DOCKER_PASSWORD }} - ACTION_MONITORING_SLACK: ${{ secrets.OP_ACTION_MONITORING_SLACK }} - # Login to Dockerhub - name: Login to DockerHub uses: docker/login-action@v3 with: username: ${{ env.DOCKER_USER }} password: ${{ env.DOCKER_PASSWORD }} - # set up Docker build + - name: Set up QEMU + uses: docker/setup-qemu-action@v3 - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 @@ -68,7 +78,74 @@ jobs: id: meta uses: docker/metadata-action@v5 with: - images: ccdl/training_rstudio + images: ${{ env.REGISTRY_IMAGE }} + + # Build Docker image, push only on push events + - name: Build Docker image + id: build + uses: docker/build-push-action@v6 + with: + push: ${{ github.event_name == 'push' }} + platforms: ${{ matrix.platform }} + outputs: type=image,push-by-digest=true,name-canonical=true + labels: ${{ steps.meta.outputs.labels }} + tags: ${{ env.REGISTRY_IMAGE }} + cache-from: type=registry,ref=${{ env.REGISTRY_IMAGE }}:buildcache-${{ env.PLATFORM_PAIR }} + cache-to: type=registry,ref=${{ env.REGISTRY_IMAGE }}:buildcache-${{ env.PLATFORM_PAIR }},mode=max + + - name: Export digest + if: github.event_name == 'push' + run: | + mkdir -p ${{ runner.temp }}/digests + digest="${{ steps.build.outputs.digest }}" + touch "${{ runner.temp }}/digests/${digest#sha256:}" + + - name: Upload digest + if: github.event_name == 'push' + uses: actions/upload-artifact@v4 + with: + name: digests-${{ env.PLATFORM_PAIR }} + path: ${{ runner.temp }}/digests/* + if-no-files-found: error + retention-days: 1 + + merge: + runs-on: ubuntu-latest + needs: + - build + # only merge the manifests and push on push events + if: github.event_name == 'push' + steps: + - name: Load 1Password secrets + uses: 1password/load-secrets-action@v3 + with: + export-env: true + env: + OP_SERVICE_ACCOUNT_TOKEN: ${{ secrets.TRAINING_OP_SERVICE_ACCOUNT_TOKEN }} + DOCKER_USER: ${{ secrets.OP_DOCKER_USERNAME }} + DOCKER_PASSWORD: ${{ secrets.OP_DOCKER_PASSWORD }} + ACTION_MONITORING_SLACK: ${{ secrets.OP_ACTION_MONITORING_SLACK }} + + - name: Download digests + uses: actions/download-artifact@v4 + with: + path: ${{ runner.temp }}/digests + pattern: digests-* + merge-multiple: true + - name: Login to DockerHub + uses: docker/login-action@v3 + with: + username: ${{ env.DOCKER_USER }} + password: ${{ env.DOCKER_PASSWORD }} + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + + - name: Docker meta + id: meta + uses: docker/metadata-action@v5 + with: + images: ${{ env.REGISTRY_IMAGE }} # each github tag will create a matching tag on dockerhub, # with the most recent given the "latest" tag # the most recent push to master will get an "edge" tag @@ -76,18 +153,19 @@ jobs: type=ref,event=tag type=edge,branch=master - # Build Docker image, push only on push events - - name: Build Docker image - uses: docker/build-push-action@v5 - with: - push: ${{ github.event_name == 'push' }} - tags: ${{ steps.meta.outputs.tags }} - cache-from: type=registry,ref=ccdl/training_rstudio:buildcache - cache-to: type=registry,ref=ccdl/training_rstudio:buildcache,mode=max + - name: Create manifest list and push + working-directory: ${{ runner.temp }}/digests + run: | + docker buildx imagetools create $(jq -cr '.tags | map("-t " + .) | join(" ")' <<< "$DOCKER_METADATA_OUTPUT_JSON") \ + $(printf '${{ env.REGISTRY_IMAGE }}@sha256:%s ' *) + + - name: Inspect image + run: | + docker buildx imagetools inspect ${{ env.REGISTRY_IMAGE }}:${{ steps.meta.outputs.version }} # If we have a failure, Slack us - name: Report failure to Slack - if: ${{ github.event_name == 'push' }} + if: ${{ failure() }} uses: ravsamhq/notify-slack-action@v2 with: status: ${{ job.status }} From e1676bbae9790c3dfd22747f4108c033d754f326 Mon Sep 17 00:00:00 2001 From: Joshua Shapiro Date: Fri, 30 Jan 2026 10:08:43 -0500 Subject: [PATCH 052/148] remove platform flags now that we have multi-platform builds --- CONTRIBUTING.md | 2 +- workshop-releases.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 15b2b996..34b25a16 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -215,7 +215,7 @@ In practice, this means that you will not need to add individual R packages to t To use the Docker image for development, pull from Docker Hub with: ``` -docker pull --platform linux/amd64 ccdl/training_rstudio:edge +docker pull ccdl/training_rstudio:edge ``` To run the container and mount a local volume, use the following from the root of this repository: diff --git a/workshop-releases.md b/workshop-releases.md index 043037d3..48695a35 100644 --- a/workshop-releases.md +++ b/workshop-releases.md @@ -76,7 +76,7 @@ You can also test the Docker image locally, which may be more convenient for tes To test the Docker image locally, you can use the following commands to pull the Docker image and run launch the container with an RStudio server session: ```bash -docker pull --platform linux/amd64 ccdl/training_rstudio:edge +docker pull ccdl/training_rstudio:edge docker run \ -e PASSWORD={PASSWORD} \ -p 8787:8787 \ From 8b88b370d7bd8489b2c857683d1587beb9ff3702 Mon Sep 17 00:00:00 2001 From: "Stephanie J. Spielman" Date: Mon, 9 Feb 2026 16:24:02 -0500 Subject: [PATCH 053/148] snapshot tximeta 1.28.3 --- renv.lock | 33 +++++++++++++++++++++++---------- 1 file changed, 23 insertions(+), 10 deletions(-) diff --git a/renv.lock b/renv.lock index ccf2a7df..9321ee20 100644 --- a/renv.lock +++ b/renv.lock @@ -6374,6 +6374,10 @@ "URL": "https://bioinf.wehi.edu.au/edgeR/, https://bioconductor.org/packages/edgeR", "biocViews": "AlternativeSplicing, BatchEffect, Bayesian, BiomedicalInformatics, CellBiology, ChIPSeq, Clustering, Coverage, DifferentialExpression, DifferentialMethylation, DifferentialSplicing, DNAMethylation, Epigenetics, FunctionalGenomics, GeneExpression, GeneSetEnrichment, Genetics, Genetics, ImmunoOncology, MultipleComparison, Normalization, Pathways, Proteomics, QualityControl, Regression, RNASeq, SAGE, Sequencing, SingleCell, SystemsBiology, TimeCourse, Transcription, Transcriptomics", "NeedsCompilation": "yes", + "git_url": "https://git.bioconductor.org/packages/edgeR", + "git_branch": "RELEASE_3_22", + "git_last_commit": "af0343a", + "git_last_commit_date": "2025-12-23", "Repository": "Bioconductor 3.22", "RemoteType": "bioconductor", "RemoteUrl": "https://github.com/bioc/edgeR", @@ -6955,6 +6959,10 @@ "VignetteBuilder": "knitr", "URL": "https://github.com/ctlab/fgsea/", "BugReports": "https://github.com/ctlab/fgsea/issues", + "git_url": "https://git.bioconductor.org/packages/fgsea", + "git_branch": "RELEASE_3_22", + "git_last_commit": "b7862b7", + "git_last_commit_date": "2026-01-05", "Repository": "Bioconductor 3.22", "NeedsCompilation": "yes", "Author": "Gennady Korotkevich [aut], Vladimir Sukhov [aut], Nikolay Budin [ctb], Nikita Gusak [ctb], Zieman Mark [ctb], Alexey Sergushichev [aut, cre]", @@ -8077,7 +8085,10 @@ "biocViews": "Alignment, Annotation, Clustering, DataImport, MultipleSequenceAlignment, Phylogenetics, ReproducibleResearch, Software, Visualization", "RoxygenNote": "7.3.3", "Roxygen": "list(markdown = TRUE)", - "Config/pak/sysreqs": "libcairo2-dev libfontconfig1-dev libfreetype6-dev make libicu-dev libpng-dev", + "git_url": "https://git.bioconductor.org/packages/ggtree", + "git_branch": "RELEASE_3_22", + "git_last_commit": "8e25254", + "git_last_commit_date": "2026-01-04", "Repository": "Bioconductor 3.22", "NeedsCompilation": "no", "Author": "Guangchuang Yu [aut, cre, cph] (ORCID: ), Tommy Tsan-Yuk Lam [aut, ths], Shuangbin Xu [aut] (ORCID: ), Lin Li [ctb], Bradley Jones [ctb], Justin Silverman [ctb], Watal M. Iwasaki [ctb], Yonghe Xia [ctb], Ruizhu Huang [ctb]", @@ -12165,12 +12176,15 @@ "IRanges", "XVector" ], - "Description": "Extensible framework for interacting with multiple genome browsers (currently UCSC built-in) and manipulating annotation tracks in various formats (currently GFF, BED, bedGraph, BED15, WIG, BigWig and 2bit built-in). The user may export/import tracks to/from the supported browsers, as well as query and modify the browser state, such as the current viewport.", + "Description": "Extensible framework for interacting with multiple genome browsers (currently UCSC built-in) and manipulating annotation tracks in various formats (currently GFF, BED, bedGraph, BED15, WIG, BigWig and 2bit built-in). The user may export/import tracks to/from the supported browsers, as well as query and modify the browser state, such as the current viewport.", "Maintainer": "Michael Lawrence ", "License": "Artistic-2.0 + file LICENSE", "Collate": "io.R web.R ranges.R trackDb.R browser.R ucsc.R readGFF.R gff.R bed.R wig.R utils.R bigWig.R bigBed.R chain.R quickload.R trackhub.R twobit.R fasta.R tabix.R bam.R trackTable.R index.R test_rtracklayer_package.R ncbi.R igv.R zzz.R", "biocViews": "Annotation,Visualization,DataImport", - "Config/pak/sysreqs": "make libbz2-dev liblzma-dev libxml2-dev libssl-dev xz-utils zlib1g-dev", + "git_url": "https://git.bioconductor.org/packages/rtracklayer", + "git_branch": "RELEASE_3_22", + "git_last_commit": "873c711", + "git_last_commit_date": "2025-12-16", "Repository": "Bioconductor 3.22", "NeedsCompilation": "yes", "RemoteType": "bioconductor", @@ -13759,7 +13773,7 @@ }, "tximeta": { "Package": "tximeta", - "Version": "1.28.1", + "Version": "1.28.3", "Source": "Bioconductor", "Title": "Transcript Quantification Import with Automatic Metadata", "Description": "Transcript quantification import from Salmon and other quantifiers with automatic attachment of transcript ranges and release information, and other associated metadata. De novo transcriptomes can be linked to the appropriate sources with linkedTxomes and shared for computational reproducibility.", @@ -13808,14 +13822,13 @@ "Roxygen": "list(markdown = TRUE)", "RoxygenNote": "7.3.3", "Encoding": "UTF-8", - "Config/pak/sysreqs": "make libbz2-dev libicu-dev liblzma-dev libpng-dev libxml2-dev libssl-dev xz-utils zlib1g-dev", + "git_url": "https://git.bioconductor.org/packages/tximeta", + "git_branch": "RELEASE_3_22", + "git_last_commit": "2b35811", + "git_last_commit_date": "2026-02-03", "Repository": "Bioconductor 3.22", "NeedsCompilation": "no", - "Author": "Michael Love [aut, cre], Charlotte Soneson [aut, ctb], Peter Hickey [aut, ctb], Rob Patro [aut, ctb], NIH NHGRI [fnd], CZI [fnd]", - "RemoteType": "bioconductor", - "RemoteUrl": "https://github.com/bioc/tximeta", - "RemoteRef": "RELEASE_3_22", - "RemoteSha": "3f6ef540b9da5f7ac57404cd932c07d6432ca2bf" + "Author": "Michael Love [aut, cre], Charlotte Soneson [aut, ctb], Peter Hickey [aut, ctb], Rob Patro [aut, ctb], NIH NHGRI [fnd], CZI [fnd]" }, "tximport": { "Package": "tximport", From f31f72bf2757dae3ef5e291a6ea10ff0fc8ad1f4 Mon Sep 17 00:00:00 2001 From: "Stephanie J. Spielman" Date: Mon, 9 Feb 2026 16:31:35 -0500 Subject: [PATCH 054/148] add scrapper to dependencies --- components/dependencies.R | 3 +++ 1 file changed, 3 insertions(+) diff --git a/components/dependencies.R b/components/dependencies.R index fe381a4e..e9b114de 100644 --- a/components/dependencies.R +++ b/components/dependencies.R @@ -36,3 +36,6 @@ library(scDblFinder) # Loom file format functions for Single Cell data library(LoomExperiment) + +# Needed for SingleR to run de with wilcox, for cell type exercises +library(scrapper) \ No newline at end of file From b04d684921e21241c11d2b542b8208cf8fab7fa1 Mon Sep 17 00:00:00 2001 From: "Stephanie J. Spielman" Date: Mon, 9 Feb 2026 16:32:57 -0500 Subject: [PATCH 055/148] snapshot scrapper and its dependencies --- renv.lock | 153 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 153 insertions(+) diff --git a/renv.lock b/renv.lock index 9321ee20..619899c2 100644 --- a/renv.lock +++ b/renv.lock @@ -3105,6 +3105,40 @@ "Author": "Nathaniel Hayden [led, aut], Martin Morgan [aut], Hervé Pagès [aut, cre], Tomas Kalibera [ctb], Jeroen Ooms [ctb]", "Maintainer": "Hervé Pagès " }, + "Rigraphlib": { + "Package": "Rigraphlib", + "Version": "1.2.0", + "Source": "Bioconductor", + "Type": "Package", + "Date": "2025-08-21", + "Title": "igraph library as an R package", + "License": "GPL-3", + "Authors@R": "person(\"Aaron\", \"Lun\", role=c(\"cre\", \"aut\"), email=\"infinite.monkeys.with.keyboards@gmail.com\")", + "Description": "Vendors the igraph C source code and builds it into a static library. Other Bioconductor packages can link to libigraph.a in their own C/C++ code. This is intended for packages wrapping C/C++ libraries that depend on the igraph C library and cannot be easily adapted to use the igraph R package.", + "LinkingTo": [ + "biocmake" + ], + "Suggests": [ + "BiocStyle", + "knitr", + "rmarkdown", + "testthat" + ], + "VignetteBuilder": "knitr", + "biocViews": "Clustering, GraphAndNetwork", + "NeedsCompilation": "yes", + "URL": "https://github.com/libscran/Rigraphlib", + "BugReports": "https://github.com/libscran/Rigraphlib/issues", + "Encoding": "UTF-8", + "RoxygenNote": "7.3.2", + "git_url": "https://git.bioconductor.org/packages/Rigraphlib", + "git_branch": "RELEASE_3_22", + "git_last_commit": "e14ac37", + "git_last_commit_date": "2025-10-29", + "Repository": "Bioconductor 3.22", + "Author": "Aaron Lun [cre, aut]", + "Maintainer": "Aaron Lun " + }, "Rsamtools": { "Package": "Rsamtools", "Version": "2.26.0", @@ -4795,6 +4829,41 @@ "Repository": "CRAN", "Encoding": "UTF-8" }, + "biocmake": { + "Package": "biocmake", + "Version": "1.2.0", + "Source": "Bioconductor", + "Date": "2025-08-21", + "Title": "CMake for Bioconductor", + "Description": "Manages the installation of CMake for building Bioconductor packages. This avoids the need for end-users to manually install CMake on their system. No action is performed if a suitable version of CMake is already available.", + "Authors@R": "person(\"Aaron\", \"Lun\", role=c(\"cre\", \"aut\"), email=\"infinite.monkeys.with.keyboards@gmail.com\")", + "License": "MIT + file LICENSE", + "Encoding": "UTF-8", + "VignetteBuilder": "knitr", + "Imports": [ + "utils", + "tools", + "dir.expiry" + ], + "Suggests": [ + "knitr", + "rmarkdown", + "BiocStyle", + "testthat" + ], + "biocViews": "Infrastructure", + "URL": "https://github.com/LTLA/biocmake", + "BugReports": "https://github.com/LTLA/biocmake/issues", + "RoxygenNote": "7.3.2", + "git_url": "https://git.bioconductor.org/packages/biocmake", + "git_branch": "RELEASE_3_22", + "git_last_commit": "ee210d0", + "git_last_commit_date": "2025-10-29", + "Repository": "Bioconductor 3.22", + "NeedsCompilation": "no", + "Author": "Aaron Lun [cre, aut]", + "Maintainer": "Aaron Lun " + }, "biomaRt": { "Package": "biomaRt", "Version": "2.66.0", @@ -6156,6 +6225,38 @@ "Maintainer": "Dirk Eddelbuettel ", "Repository": "CRAN" }, + "dir.expiry": { + "Package": "dir.expiry", + "Version": "1.18.0", + "Source": "Bioconductor", + "Date": "2024-10-17", + "Title": "Managing Expiration for Cache Directories", + "Description": "Implements an expiration system for access to versioned directories. Directories that have not been accessed by a registered function within a certain time frame are deleted. This aims to reduce disk usage by eliminating obsolete caches generated by old versions of packages.", + "Authors@R": "person(\"Aaron\", \"Lun\", role=c(\"aut\", \"cre\"), email=\"infinite.monkeys.with.keyboards@gmail.com\")", + "License": "GPL-3", + "Imports": [ + "utils", + "filelock" + ], + "Suggests": [ + "rmarkdown", + "knitr", + "testthat", + "BiocStyle" + ], + "biocViews": "Software, Infrastructure", + "VignetteBuilder": "knitr", + "RoxygenNote": "7.3.2", + "Encoding": "UTF-8", + "git_url": "https://git.bioconductor.org/packages/dir.expiry", + "git_branch": "RELEASE_3_22", + "git_last_commit": "6d768b3", + "git_last_commit_date": "2025-10-29", + "Repository": "Bioconductor 3.22", + "NeedsCompilation": "no", + "Author": "Aaron Lun [aut, cre]", + "Maintainer": "Aaron Lun " + }, "doParallel": { "Package": "doParallel", "Version": "1.0.17", @@ -12628,6 +12729,58 @@ "Author": "Aaron Lun [aut, cre], Karsten Bach [aut], Jong Kyoung Kim [ctb], Antonio Scialdone [ctb]", "Maintainer": "Aaron Lun " }, + "scrapper": { + "Package": "scrapper", + "Version": "1.4.0", + "Source": "Bioconductor", + "Date": "2025-10-27", + "Authors@R": "person(\"Aaron\", \"Lun\", role=c(\"cre\", \"aut\"), email=\"infinite.monkeys.with.keyboards@gmail.com\")", + "Title": "Bindings to C++ Libraries for Single-Cell Analysis", + "Description": "Implements R bindings to C++ code for analyzing single-cell (expression) data, mostly from various libscran libraries. Each function performs an individual step in the single-cell analysis workflow, ranging from quality control to clustering and marker detection. It is mostly intended for other Bioconductor package developers to build more user-friendly end-to-end workflows.", + "License": "MIT + file LICENSE", + "Imports": [ + "methods", + "Rcpp", + "beachmat (>= 2.25.1)", + "DelayedArray", + "BiocNeighbors (>= 1.99.0)", + "Rigraphlib", + "parallel" + ], + "Suggests": [ + "testthat", + "knitr", + "rmarkdown", + "BiocStyle", + "MatrixGenerics", + "sparseMatrixStats", + "Matrix", + "S4Vectors", + "SummarizedExperiment", + "SingleCellExperiment", + "scRNAseq", + "igraph" + ], + "LinkingTo": [ + "Rcpp", + "assorthead (>= 1.3.10)", + "beachmat", + "BiocNeighbors" + ], + "biocViews": "Normalization, RNASeq, Software, GeneExpression, Transcriptomics, SingleCell, BatchEffect, QualityControl, DifferentialExpression, FeatureExtraction, PrincipalComponent, Clustering", + "SystemRequirements": "C++17, GNU make", + "VignetteBuilder": "knitr", + "Encoding": "UTF-8", + "RoxygenNote": "7.3.3", + "git_url": "https://git.bioconductor.org/packages/scrapper", + "git_branch": "RELEASE_3_22", + "git_last_commit": "4de467a", + "git_last_commit_date": "2025-10-29", + "Repository": "Bioconductor 3.22", + "NeedsCompilation": "yes", + "Author": "Aaron Lun [cre, aut]", + "Maintainer": "Aaron Lun " + }, "scuttle": { "Package": "scuttle", "Version": "1.20.0", From e8d71d84e7296524a90011356335307b4b165ca1 Mon Sep 17 00:00:00 2001 From: "Stephanie J. Spielman" Date: Mon, 9 Feb 2026 16:35:02 -0500 Subject: [PATCH 056/148] new line --- components/dependencies.R | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/components/dependencies.R b/components/dependencies.R index e9b114de..358fe6d8 100644 --- a/components/dependencies.R +++ b/components/dependencies.R @@ -38,4 +38,4 @@ library(scDblFinder) library(LoomExperiment) # Needed for SingleR to run de with wilcox, for cell type exercises -library(scrapper) \ No newline at end of file +library(scrapper) From b8f67c3457cb546045cc10fc75475df1e0c36a53 Mon Sep 17 00:00:00 2001 From: "Stephanie J. Spielman" Date: Tue, 3 Feb 2026 11:34:47 -0500 Subject: [PATCH 057/148] scRNA-seq celltype notebook: update from restrict -> test.genes, including text --- scRNA-seq/06-celltype_annotation.Rmd | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/scRNA-seq/06-celltype_annotation.Rmd b/scRNA-seq/06-celltype_annotation.Rmd index 82219b58..256d55e4 100644 --- a/scRNA-seq/06-celltype_annotation.Rmd +++ b/scRNA-seq/06-celltype_annotation.Rmd @@ -490,12 +490,12 @@ We will also take this time to dive a bit deeper into the steps that `SingleR` p As mentioned, the first step is training the model, during which we identify the genes that will be used for the correlation analysis later. While this step is not particularly slow, if we were classifying multiple samples, we would not want to have to repeat it for every sample. -To do the training, we will use the `trainSingleR()` function. +To do the training, we will use the `SingleR::trainSingleR()` function. For this we will start with our reference and the labels we want to train the model with. We can then specify the method used to select the genes that will be used for classification. The default method is `"de"`, which performs a differential expression analysis for each pair of labels, but we could also use `"sd"` to select the genes which are most variable across labels, or `"all"` to use all genes. -If we want to get really fancy, we could even provide a specific list of genes to use. +If we wanted to get really fancy, we could even provide a specific list of genes to use with the `restrict` argument. We should note here that the reference dataset for `SingleR` does not need to be from a compendium like `celldex`! If you have any well-classified dataset that you want to use as a reference, you can, as long as you can create a gene by sample expression matrix and a vector of cell types for each sample. @@ -503,7 +503,8 @@ You will want to ensure that the cell types you expect to see in your sample are You can even use a previously-annotated `SingleCellExperiment` as a reference for a new dataset. For more details about custom references, see the [OSCA chapter on cell type annotation](http://bioconductor.org/books/3.19/OSCA.basic/cell-type-annotation.html#using-custom-references) -We do want to be sure that the genes selected for the model will be among those present in our SCE object, so we will use the `restrict` argument with a vector of the genes in our SCE. +We do want to be sure that the genes included in the model will be among those present in our SCE object, so we will use the `test.genes` argument with a vector of the genes in our SCE. +Otherwise, the function will assume that both the reference and test data set have the same genes in the same order (which they don't!), and the next step of actually classifying cell types wouldn't work. This step would happen automatically with the `SingleR::SingleR()` function, but we need to add it manually for this use case. @@ -512,10 +513,10 @@ This step would happen automatically with the `SingleR::SingleR()` function, but singler_finemodel <- SingleR::trainSingleR( monaco_ref, # reference dataset labels = monaco_ref$label.fine, # labels for training dataset + # consider only genes in the sce object + test.genes = rownames(sce), # use DE to select genes (default) genes = "de", - # only use genes in the sce object - restrict = rownames(sce), # parallel processing BPPARAM = BiocParallel::MulticoreParam(4) ) From 4652281847c7db29e6773e4b72e66cacda87459a Mon Sep 17 00:00:00 2001 From: "Stephanie J. Spielman" Date: Wed, 11 Feb 2026 09:20:33 -0500 Subject: [PATCH 058/148] some spacing while we're here --- scRNA-seq/06-celltype_annotation.Rmd | 41 ++++++++++++++++------------ 1 file changed, 24 insertions(+), 17 deletions(-) diff --git a/scRNA-seq/06-celltype_annotation.Rmd b/scRNA-seq/06-celltype_annotation.Rmd index 256d55e4..76bb8a61 100644 --- a/scRNA-seq/06-celltype_annotation.Rmd +++ b/scRNA-seq/06-celltype_annotation.Rmd @@ -61,24 +61,32 @@ We aren't planning any significant modifications of the underlying data, so we w ```{r filepaths, live=TRUE} # directory for the input data -data_dir <- file.path("data", - "PBMC-TotalSeqB", - "normalized") +data_dir <- file.path( + "data", + "PBMC-TotalSeqB", + "normalized" +) # the input file itself -sce_file <- file.path(data_dir, - "PBMC_TotalSeqB_normalized_sce.rds") +sce_file <- file.path( + data_dir, + "PBMC_TotalSeqB_normalized_sce.rds" +) # A directory to store outputs -analysis_dir <- file.path("analysis", - "PBMC-TotalSeqB") +analysis_dir <- file.path( + "analysis", + "PBMC-TotalSeqB" +) # Create directory if it doesn't exist fs::dir_create(analysis_dir) # output table path -cellinfo_file <- file.path(analysis_dir, - "PBMC_TotalSeqB_cellinfo.tsv") +cellinfo_file <- file.path( + analysis_dir, + "PBMC_TotalSeqB_cellinfo.tsv" +) ``` @@ -198,14 +206,12 @@ Let's plot the ADT results for those two markers as well below: ```{r plot CD4, live=TRUE} # plot CD4 marker -scater::plotUMAP(sce, - color_by = "CD4") +scater::plotUMAP(sce, color_by = "CD4") ``` ```{r plot CD8, live=TRUE} # plot CD8 marker -scater::plotUMAP(sce, - color_by = "CD8") +scater::plotUMAP(sce, color_by = "CD8") ``` @@ -306,8 +312,7 @@ Creating and assigning values to this column can be done with the `$` shortcut, ```{r plot thresholds} sce$threshold_celltype <- adt_df$celltype -scater::plotUMAP(sce, - color_by = "threshold_celltype") + +scater::plotUMAP(sce, color_by = "threshold_celltype") + guides(color = guide_legend(title = "Cell type")) ``` @@ -612,8 +617,10 @@ Now that we have that set up, we can plot using our collapsed and ordered cell t ```{r plot collapsed, live=TRUE} sce$celltype_collapsed <- collapsed_labels -scater::plotUMAP(sce, - color_by = "celltype_collapsed") +scater::plotUMAP( + sce, + color_by = "celltype_collapsed" +) ``` From 16c114bd8fb8c14ee81cb584c4614053dcc4c52d Mon Sep 17 00:00:00 2001 From: "Stephanie J. Spielman" Date: Wed, 11 Feb 2026 11:40:49 -0500 Subject: [PATCH 059/148] update irlba record --- renv.lock | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/renv.lock b/renv.lock index 619899c2..096fdd6e 100644 --- a/renv.lock +++ b/renv.lock @@ -25,6 +25,10 @@ { "Name": "CRAN", "URL": "https://p3m.dev/cran/latest" + }, + { + "Name": "BioCcontainers", + "URL": "https://bioconductor.org/packages/3.22/container-binaries/bioconductor_docker" } ] }, @@ -7009,7 +7013,8 @@ "NeedsCompilation": "yes", "Author": "Olaf Mersmann [aut], Sebastian Krey [ctb], Uwe Ligges [ctb, cre]", "Maintainer": "Uwe Ligges ", - "Repository": "CRAN" + "Repository": "RSPM", + "Encoding": "UTF-8" }, "fgsea": { "Package": "fgsea", @@ -9356,11 +9361,11 @@ }, "irlba": { "Package": "irlba", - "Version": "2.3.5.1", + "Version": "2.3.7", "Source": "Repository", "Type": "Package", "Title": "Fast Truncated Singular Value Decomposition and Principal Components Analysis for Large Dense and Sparse Matrices", - "Date": "2021-12-05", + "Date": "2026-1-26", "Authors@R": "c( person(\"Jim\", \"Baglama\", role=c(\"aut\", \"cph\"), email=\"jbaglama@uri.edu\"), person(\"Lothar\", \"Reichel\", role=c(\"aut\", \"cph\"), email=\"reichel@math.kent.edu\"), person(\"B. W.\", \"Lewis\", role=c(\"aut\",\"cre\",\"cph\"), email=\"blewis@illposed.net\"))", "Description": "Fast and memory efficient methods for truncated singular value decomposition and principal components analysis of large sparse and dense matrices.", "Depends": [ @@ -9376,7 +9381,7 @@ ], "License": "GPL-3", "BugReports": "https://github.com/bwlewis/irlba/issues", - "RoxygenNote": "5.0.1", + "RoxygenNote": "7.3.3", "NeedsCompilation": "yes", "Author": "Jim Baglama [aut, cph], Lothar Reichel [aut, cph], B. W. Lewis [aut, cre, cph]", "Maintainer": "B. W. Lewis ", From 603abb231d114cf05cae375eba8b77a6cb439c1a Mon Sep 17 00:00:00 2001 From: "Stephanie J. Spielman" Date: Wed, 11 Feb 2026 12:13:52 -0500 Subject: [PATCH 060/148] try adding libsqlite3-dev to docker install --- Dockerfile | 1 + 1 file changed, 1 insertion(+) diff --git a/Dockerfile b/Dockerfile index ea4593bd..fd59b7d2 100644 --- a/Dockerfile +++ b/Dockerfile @@ -17,6 +17,7 @@ RUN DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \ libisal-dev \ liblzma-dev \ libzstd-dev \ + libsqlite3-dev \ make \ pkg-config \ unzip \ From a8d73046d88f575e8dca111aa59c28260b73c55e Mon Sep 17 00:00:00 2001 From: "Stephanie J. Spielman" Date: Wed, 11 Feb 2026 13:19:59 -0500 Subject: [PATCH 061/148] move to r section --- Dockerfile | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/Dockerfile b/Dockerfile index fd59b7d2..5f74585f 100644 --- a/Dockerfile +++ b/Dockerfile @@ -17,7 +17,6 @@ RUN DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \ libisal-dev \ liblzma-dev \ libzstd-dev \ - libsqlite3-dev \ make \ pkg-config \ unzip \ @@ -53,13 +52,14 @@ LABEL maintainer="ccdl@alexslemonade.org" WORKDIR /rocker-build/ -# Additonal dependencies for AWS runtime +# Additonal dependencies for AWS runtime and R dependencies RUN apt-get update -qq RUN DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \ glibc-source \ groff \ less \ libisal2 \ + libsqlite3-dev \ && apt-get clean # FastQC @@ -67,6 +67,7 @@ RUN DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \ fastqc \ && apt-get clean + # Python packages COPY requirements.txt requirements.txt RUN pip install -r requirements.txt --break-system-packages From e4ef5131c94e33f216e272c4c2c87e8af411b930 Mon Sep 17 00:00:00 2001 From: "Stephanie J. Spielman" Date: Wed, 11 Feb 2026 13:26:53 -0500 Subject: [PATCH 062/148] take it back out, seems like it's already there --- Dockerfile | 1 - 1 file changed, 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 5f74585f..e2e501c1 100644 --- a/Dockerfile +++ b/Dockerfile @@ -59,7 +59,6 @@ RUN DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \ groff \ less \ libisal2 \ - libsqlite3-dev \ && apt-get clean # FastQC From a59d30dcd0f90b8ff44923338edabd4c7b734d9c Mon Sep 17 00:00:00 2001 From: "Stephanie J. Spielman" Date: Wed, 11 Feb 2026 13:43:23 -0500 Subject: [PATCH 063/148] try for standalone install --- Dockerfile | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Dockerfile b/Dockerfile index e2e501c1..c7d5235a 100644 --- a/Dockerfile +++ b/Dockerfile @@ -76,6 +76,8 @@ WORKDIR /usr/local/renv ENV RENV_CONFIG_CACHE_ENABLED=FALSE RUN Rscript -e "install.packages('renv')" +# Install problematic package on its own first +RUN Rscript -e "install.packages('RSQLite')" COPY renv.lock renv.lock RUN Rscript -e "renv::restore()" \ From 77f71b9b3210cf57665104e3763acee11bf428d8 Mon Sep 17 00:00:00 2001 From: "Stephanie J. Spielman" Date: Wed, 11 Feb 2026 20:35:53 +0000 Subject: [PATCH 064/148] revert a59d30d --- Dockerfile | 2 -- 1 file changed, 2 deletions(-) diff --git a/Dockerfile b/Dockerfile index c7d5235a..e2e501c1 100644 --- a/Dockerfile +++ b/Dockerfile @@ -76,8 +76,6 @@ WORKDIR /usr/local/renv ENV RENV_CONFIG_CACHE_ENABLED=FALSE RUN Rscript -e "install.packages('renv')" -# Install problematic package on its own first -RUN Rscript -e "install.packages('RSQLite')" COPY renv.lock renv.lock RUN Rscript -e "renv::restore()" \ From 3bb8287859f6daf0169198dec24d5e154c5ba21b Mon Sep 17 00:00:00 2001 From: "Stephanie J. Spielman" Date: Wed, 11 Feb 2026 20:37:00 +0000 Subject: [PATCH 065/148] renv update --- renv.lock | 166 +++++++++++++++++++++++------------------------------- 1 file changed, 72 insertions(+), 94 deletions(-) diff --git a/renv.lock b/renv.lock index 096fdd6e..84ca3465 100644 --- a/renv.lock +++ b/renv.lock @@ -828,12 +828,12 @@ }, "ComplexHeatmap": { "Package": "ComplexHeatmap", - "Version": "2.26.0", + "Version": "2.26.1", "Source": "Bioconductor", "Type": "Package", "Title": "Make Complex Heatmaps", - "Date": "2025-06-23", - "Authors@R": "person(\"Zuguang\", \"Gu\", email = \"z.gu@dkfz.de\", role = c(\"aut\", \"cre\"), comment = c('ORCID'=\"0000-0002-7395-8709\"))", + "Date": "2026-01-30", + "Authors@R": "person(\"Zuguang\", \"Gu\", email = \"guzuguang@suat-sz.edu.cn\", role = c(\"aut\", \"cre\"), comment = c('ORCID'=\"0000-0002-7395-8709\"))", "Depends": [ "R (>= 4.0.0)", "methods", @@ -887,12 +887,12 @@ "RoxygenNote": "7.2.3", "git_url": "https://git.bioconductor.org/packages/ComplexHeatmap", "git_branch": "RELEASE_3_22", - "git_last_commit": "4803c6d", - "git_last_commit_date": "2025-10-29", + "git_last_commit": "880562b", + "git_last_commit_date": "2026-01-30", "Repository": "Bioconductor 3.22", "NeedsCompilation": "no", "Author": "Zuguang Gu [aut, cre] (ORCID: )", - "Maintainer": "Zuguang Gu " + "Maintainer": "Zuguang Gu " }, "ConsensusClusterPlus": { "Package": "ConsensusClusterPlus", @@ -2627,12 +2627,12 @@ }, "RSQLite": { "Package": "RSQLite", - "Version": "2.4.5", + "Version": "2.4.6", "Source": "Repository", "Title": "SQLite Interface for R", - "Date": "2025-11-30", + "Date": "2026-02-05", "Authors@R": "c( person(\"Kirill\", \"Müller\", , \"kirill@cynkra.com\", role = c(\"aut\", \"cre\"), comment = c(ORCID = \"0000-0002-1416-3412\")), person(\"Hadley\", \"Wickham\", role = \"aut\"), person(c(\"David\", \"A.\"), \"James\", role = \"aut\"), person(\"Seth\", \"Falcon\", role = \"aut\"), person(\"D. Richard\", \"Hipp\", role = \"ctb\", comment = \"for the included SQLite sources\"), person(\"Dan\", \"Kennedy\", role = \"ctb\", comment = \"for the included SQLite sources\"), person(\"Joe\", \"Mistachkin\", role = \"ctb\", comment = \"for the included SQLite sources\"), person(, \"SQLite Authors\", role = \"ctb\", comment = \"for the included SQLite sources\"), person(\"Liam\", \"Healy\", role = \"ctb\", comment = \"for the included SQLite sources\"), person(\"R Consortium\", role = \"fnd\"), person(, \"RStudio\", role = \"cph\") )", - "Description": "Embeds the SQLite database engine in R and provides an interface compliant with the DBI package. The source for the SQLite engine (version 3.51.1) and for various extensions is included. System libraries will never be consulted because this package relies on static linking for the plugins it includes; this also ensures a consistent experience across all installations.", + "Description": "Embeds the SQLite database engine in R and provides an interface compliant with the DBI package. The source for the SQLite engine (version 3.51.2) and for various extensions is included. System libraries will never be consulted because this package relies on static linking for the plugins it includes; this also ensures a consistent experience across all installations.", "License": "LGPL (>= 2.1)", "URL": "https://rsqlite.r-dbi.org, https://github.com/r-dbi/RSQLite", "BugReports": "https://github.com/r-dbi/RSQLite/issues", @@ -2665,7 +2665,6 @@ "xml2" ], "LinkingTo": [ - "plogr (>= 0.2.0)", "cpp11 (>= 0.4.0)" ], "VignetteBuilder": "knitr", @@ -3814,9 +3813,9 @@ }, "XML": { "Package": "XML", - "Version": "3.99-0.20", + "Version": "3.99-0.22", "Source": "Repository", - "Authors@R": "c(person(\"CRAN Team\", role = c('ctb', 'cre'), email = \"CRAN@r-project.org\", comment = \"de facto maintainer since 2013\"), person(\"Duncan\", \"Temple Lang\", role = c(\"aut\"), email = \"duncan@r-project.org\", comment = c(ORCID = \"0000-0003-0159-1546\")), person(\"Tomas\", \"Kalibera\", role = \"ctb\"), person(\"Ivan\", \"Krylov\", role = \"ctb\"))", + "Authors@R": "c(person(\"CRAN Team\", role = \"ctb\", email = \"CRAN@r-project.org\", comment = \"de facto maintainer in 2013-2026\"), person(\"Duncan\", \"Temple Lang\", role = \"aut\", email = \"duncan@r-project.org\", comment = c(ORCID = \"0000-0003-0159-1546\")), person(\"Tomas\", \"Kalibera\", role = \"ctb\"), person(\"Ivan\", \"Krylov\", email = \"ikrylov@disroot.org\", role = \"cre\"))", "Title": "Tools for Parsing and Generating XML Within R and S-Plus", "Depends": [ "R (>= 4.0.0)", @@ -3829,12 +3828,12 @@ ], "SystemRequirements": "libxml2 (>= 2.6.3)", "Description": "Many approaches for both reading and creating XML (and HTML) documents (including DTDs), both local and accessible via HTTP or FTP. Also offers access to an 'XPath' \"interpreter\".", - "URL": "https://www.omegahat.net/RSXML/", + "BugReports": "https://codeberg.org/aitap/XML/issues", "License": "BSD_3_clause + file LICENSE", "Collate": "AAA.R DTD.R DTDClasses.R DTDRef.R SAXMethods.R XMLClasses.R applyDOM.R assignChild.R catalog.R createNode.R dynSupports.R error.R flatTree.R nodeAccessors.R parseDTD.R schema.R summary.R tangle.R toString.R tree.R version.R xmlErrorEnums.R xmlEventHandler.R xmlEventParse.R xmlHandler.R xmlInternalSource.R xmlOutputDOM.R xmlNodes.R xmlOutputBuffer.R xmlTree.R xmlTreeParse.R htmlParse.R hashTree.R zzz.R supports.R parser.R libxmlFeatures.R xmlString.R saveXML.R namespaces.R readHTMLTable.R reflection.R xmlToDataFrame.R bitList.R compare.R encoding.R fixNS.R xmlRoot.R serialize.R xmlMemoryMgmt.R keyValueDB.R solrDocs.R XMLRErrorInfo.R xincludes.R namespaceHandlers.R tangle1.R htmlLinks.R htmlLists.R getDependencies.R getRelativeURL.R xmlIncludes.R simplifyPath.R", "NeedsCompilation": "yes", - "Author": "CRAN Team [ctb, cre] (de facto maintainer since 2013), Duncan Temple Lang [aut] (ORCID: ), Tomas Kalibera [ctb], Ivan Krylov [ctb]", - "Maintainer": "CRAN Team ", + "Author": "CRAN Team [ctb] (de facto maintainer in 2013-2026), Duncan Temple Lang [aut] (ORCID: ), Tomas Kalibera [ctb], Ivan Krylov [cre]", + "Maintainer": "Ivan Krylov ", "Repository": "CRAN", "Encoding": "UTF-8" }, @@ -4621,10 +4620,11 @@ }, "base64enc": { "Package": "base64enc", - "Version": "0.1-3", + "Version": "0.1-6", "Source": "Repository", - "Title": "Tools for base64 encoding", - "Author": "Simon Urbanek ", + "Title": "Tools for 'base64' Encoding", + "Author": "Simon Urbanek [aut, cre, cph] (https://urbanek.nz, ORCID: )", + "Authors@R": "person(\"Simon\", \"Urbanek\", role=c(\"aut\",\"cre\",\"cph\"), email=\"Simon.Urbanek@r-project.org\", comment=c(\"https://urbanek.nz\", ORCID=\"0000-0003-2297-1732\"))", "Maintainer": "Simon Urbanek ", "Depends": [ "R (>= 2.9.0)" @@ -4632,9 +4632,10 @@ "Enhances": [ "png" ], - "Description": "This package provides tools for handling base64 encoding. It is more flexible than the orphaned base64 package.", + "Description": "Tools for handling 'base64' encoding. It is more flexible than the orphaned 'base64' package.", "License": "GPL-2 | GPL-3", - "URL": "http://www.rforge.net/base64enc", + "URL": "https://www.rforge.net/base64enc", + "BugReports": "https://github.com/s-u/base64enc/issues", "NeedsCompilation": "yes", "Repository": "CRAN", "Encoding": "UTF-8" @@ -5095,7 +5096,7 @@ }, "broom": { "Package": "broom", - "Version": "1.0.11", + "Version": "1.0.12", "Source": "Repository", "Type": "Package", "Title": "Convert Statistical Objects into Tidy Tibbles", @@ -5218,7 +5219,7 @@ }, "bslib": { "Package": "bslib", - "Version": "0.9.0", + "Version": "0.10.0", "Source": "Repository", "Title": "Custom 'Bootstrap' 'Sass' Themes for 'shiny' and 'rmarkdown'", "Authors@R": "c( person(\"Carson\", \"Sievert\", , \"carson@posit.co\", role = c(\"aut\", \"cre\"), comment = c(ORCID = \"0000-0002-4958-2844\")), person(\"Joe\", \"Cheng\", , \"joe@posit.co\", role = \"aut\"), person(\"Garrick\", \"Aden-Buie\", , \"garrick@posit.co\", role = \"aut\", comment = c(ORCID = \"0000-0002-7111-0077\")), person(\"Posit Software, PBC\", role = c(\"cph\", \"fnd\")), person(, \"Bootstrap contributors\", role = \"ctb\", comment = \"Bootstrap library\"), person(, \"Twitter, Inc\", role = \"cph\", comment = \"Bootstrap library\"), person(\"Javi\", \"Aguilar\", role = c(\"ctb\", \"cph\"), comment = \"Bootstrap colorpicker library\"), person(\"Thomas\", \"Park\", role = c(\"ctb\", \"cph\"), comment = \"Bootswatch library\"), person(, \"PayPal\", role = c(\"ctb\", \"cph\"), comment = \"Bootstrap accessibility plugin\") )", @@ -5244,16 +5245,18 @@ "sass (>= 0.4.9)" ], "Suggests": [ + "brand.yml", "bsicons", "curl", "fontawesome", "future", "ggplot2", "knitr", + "lattice", "magrittr", "rappdirs", "rmarkdown (>= 2.7)", - "shiny (> 1.8.1)", + "shiny (>= 1.11.1)", "testthat", "thematic", "tools", @@ -5268,10 +5271,10 @@ "Config/testthat/parallel": "true", "Config/testthat/start-first": "zzzz-bs-sass, fonts, zzz-precompile, theme-*, rmd-*", "Encoding": "UTF-8", - "RoxygenNote": "7.3.2", - "Collate": "'accordion.R' 'breakpoints.R' 'bs-current-theme.R' 'bs-dependencies.R' 'bs-global.R' 'bs-remove.R' 'bs-theme-layers.R' 'bs-theme-preset-bootswatch.R' 'bs-theme-preset-brand.R' 'bs-theme-preset-builtin.R' 'bs-theme-preset.R' 'utils.R' 'bs-theme-preview.R' 'bs-theme-update.R' 'bs-theme.R' 'bslib-package.R' 'buttons.R' 'card.R' 'deprecated.R' 'files.R' 'fill.R' 'imports.R' 'input-dark-mode.R' 'input-switch.R' 'layout.R' 'nav-items.R' 'nav-update.R' 'navbar_options.R' 'navs-legacy.R' 'navs.R' 'onLoad.R' 'page.R' 'popover.R' 'precompiled.R' 'print.R' 'shiny-devmode.R' 'sidebar.R' 'staticimports.R' 'tooltip.R' 'utils-deps.R' 'utils-shiny.R' 'utils-tags.R' 'value-box.R' 'version-default.R' 'versions.R'", + "RoxygenNote": "7.3.3", + "Collate": "'accordion.R' 'breakpoints.R' 'bs-current-theme.R' 'bs-dependencies.R' 'bs-global.R' 'bs-remove.R' 'bs-theme-layers.R' 'bs-theme-preset-bootswatch.R' 'bs-theme-preset-brand.R' 'bs-theme-preset-builtin.R' 'bs-theme-preset.R' 'utils.R' 'bs-theme-preview.R' 'bs-theme-update.R' 'bs-theme.R' 'bslib-package.R' 'buttons.R' 'card.R' 'deprecated.R' 'files.R' 'fill.R' 'imports.R' 'input-code-editor.R' 'input-dark-mode.R' 'input-submit.R' 'input-switch.R' 'layout.R' 'nav-items.R' 'nav-update.R' 'navbar_options.R' 'navs-legacy.R' 'navs.R' 'onLoad.R' 'page.R' 'popover.R' 'precompiled.R' 'print.R' 'shiny-devmode.R' 'sidebar.R' 'staticimports.R' 'toast.R' 'tooltip.R' 'utils-deps.R' 'utils-shiny.R' 'utils-tags.R' 'value-box.R' 'version-default.R' 'versions.R'", "NeedsCompilation": "no", - "Author": "Carson Sievert [aut, cre] (), Joe Cheng [aut], Garrick Aden-Buie [aut] (), Posit Software, PBC [cph, fnd], Bootstrap contributors [ctb] (Bootstrap library), Twitter, Inc [cph] (Bootstrap library), Javi Aguilar [ctb, cph] (Bootstrap colorpicker library), Thomas Park [ctb, cph] (Bootswatch library), PayPal [ctb, cph] (Bootstrap accessibility plugin)", + "Author": "Carson Sievert [aut, cre] (ORCID: ), Joe Cheng [aut], Garrick Aden-Buie [aut] (ORCID: ), Posit Software, PBC [cph, fnd], Bootstrap contributors [ctb] (Bootstrap library), Twitter, Inc [cph] (Bootstrap library), Javi Aguilar [ctb, cph] (Bootstrap colorpicker library), Thomas Park [ctb, cph] (Bootswatch library), PayPal [ctb, cph] (Bootstrap accessibility plugin)", "Maintainer": "Carson Sievert ", "Repository": "CRAN" }, @@ -6296,7 +6299,7 @@ }, "dplyr": { "Package": "dplyr", - "Version": "1.1.4", + "Version": "1.2.0", "Source": "Repository", "Type": "Package", "Title": "A Grammar of Data Manipulation", @@ -6306,27 +6309,25 @@ "URL": "https://dplyr.tidyverse.org, https://github.com/tidyverse/dplyr", "BugReports": "https://github.com/tidyverse/dplyr/issues", "Depends": [ - "R (>= 3.5.0)" + "R (>= 4.1.0)" ], "Imports": [ - "cli (>= 3.4.0)", + "cli (>= 3.6.2)", "generics", "glue (>= 1.3.2)", - "lifecycle (>= 1.0.3)", + "lifecycle (>= 1.0.5)", "magrittr (>= 1.5)", "methods", "pillar (>= 1.9.0)", "R6", - "rlang (>= 1.1.0)", + "rlang (>= 1.1.7)", "tibble (>= 3.2.0)", "tidyselect (>= 1.2.0)", "utils", - "vctrs (>= 0.6.4)" + "vctrs (>= 0.7.1)" ], "Suggests": [ - "bench", "broom", - "callr", "covr", "DBI", "dbplyr (>= 2.2.1)", @@ -6334,12 +6335,9 @@ "knitr", "Lahman", "lobstr", - "microbenchmark", "nycflights13", "purrr", "rmarkdown", - "RMySQL", - "RPostgreSQL", "RSQLite", "stringi (>= 1.7.6)", "testthat (>= 3.1.5)", @@ -6347,13 +6345,14 @@ "withr" ], "VignetteBuilder": "knitr", - "Config/Needs/website": "tidyverse, shiny, pkgdown, tidyverse/tidytemplate", + "Config/build/compilation-database": "true", + "Config/Needs/website": "tidyverse/tidytemplate", "Config/testthat/edition": "3", "Encoding": "UTF-8", "LazyData": "true", - "RoxygenNote": "7.2.3", + "RoxygenNote": "7.3.3", "NeedsCompilation": "yes", - "Author": "Hadley Wickham [aut, cre] (), Romain François [aut] (), Lionel Henry [aut], Kirill Müller [aut] (), Davis Vaughan [aut] (), Posit Software, PBC [cph, fnd]", + "Author": "Hadley Wickham [aut, cre] (ORCID: ), Romain François [aut] (ORCID: ), Lionel Henry [aut], Kirill Müller [aut] (ORCID: ), Davis Vaughan [aut] (ORCID: ), Posit Software, PBC [cph, fnd]", "Maintainer": "Hadley Wickham ", "Repository": "CRAN" }, @@ -7463,7 +7462,7 @@ }, "gargle": { "Package": "gargle", - "Version": "1.6.0", + "Version": "1.6.1", "Source": "Repository", "Title": "Utilities for Working with Google APIs", "Authors@R": "c( person(\"Jennifer\", \"Bryan\", , \"jenny@posit.co\", role = c(\"aut\", \"cre\"), comment = c(ORCID = \"0000-0002-6983-2759\")), person(\"Craig\", \"Citro\", , \"craigcitro@google.com\", role = \"aut\"), person(\"Hadley\", \"Wickham\", , \"hadley@posit.co\", role = \"aut\", comment = c(ORCID = \"0000-0003-4757-117X\")), person(\"Google Inc\", role = \"cph\"), person(\"Posit Software, PBC\", role = c(\"cph\", \"fnd\")) )", @@ -7472,7 +7471,7 @@ "URL": "https://gargle.r-lib.org, https://github.com/r-lib/gargle", "BugReports": "https://github.com/r-lib/gargle/issues", "Depends": [ - "R (>= 3.6)" + "R (>= 4.1)" ], "Imports": [ "cli (>= 3.0.1)", @@ -7504,7 +7503,7 @@ "Config/testthat/edition": "3", "Encoding": "UTF-8", "Language": "en-US", - "RoxygenNote": "7.3.2.9000", + "RoxygenNote": "7.3.3", "NeedsCompilation": "no", "Author": "Jennifer Bryan [aut, cre] (ORCID: ), Craig Citro [aut], Hadley Wickham [aut] (ORCID: ), Google Inc [cph], Posit Software, PBC [cph, fnd]", "Maintainer": "Jennifer Bryan ", @@ -7512,11 +7511,11 @@ }, "gdtools": { "Package": "gdtools", - "Version": "0.4.4", + "Version": "0.5.0", "Source": "Repository", - "Title": "Utilities for Graphical Rendering and Fonts Management", + "Title": "Font Metrics and Font Management Utilities for R Graphics", "Authors@R": "c( person(\"David\", \"Gohel\", , \"david.gohel@ardata.fr\", role = c(\"aut\", \"cre\")), person(\"Hadley\", \"Wickham\", , \"hadley@rstudio.com\", role = \"aut\"), person(\"Lionel\", \"Henry\", , \"lionel@rstudio.com\", role = \"aut\"), person(\"Jeroen\", \"Ooms\", , \"jeroen@berkeley.edu\", role = \"aut\", comment = c(ORCID = \"0000-0002-4035-0289\")), person(\"Yixuan\", \"Qiu\", role = \"ctb\"), person(\"R Core Team\", role = \"cph\", comment = \"Cairo code from X11 device\"), person(\"ArData\", role = \"cph\"), person(\"RStudio\", role = \"cph\") )", - "Description": "Tools are provided to compute metrics of formatted strings and to check the availability of a font. Another set of functions is provided to support the collection of fonts from 'Google Fonts' in a cache. Their use is simple within 'R Markdown' documents and 'shiny' applications but also with graphic productions generated with the 'ggiraph', 'ragg' and 'svglite' packages or with tabular productions from the 'flextable' package.", + "Description": "Compute text metrics (width, ascent, descent) using 'Cairo' and 'FreeType', independently of the active graphic device. Font lookup is delegated to 'systemfonts'. Additional utilities let users register 'Google Fonts' or bundled 'Liberation' fonts, check font availability, and assemble 'htmlDependency' objects so that fonts are correctly embedded in 'Shiny' applications, 'R Markdown' documents, and 'htmlwidgets' outputs such as 'ggiraph'.", "License": "GPL-3 | file LICENSE", "URL": "https://davidgohel.github.io/gdtools/", "BugReports": "https://github.com/davidgohel/gdtools/issues", @@ -7730,7 +7729,7 @@ }, "ggiraph": { "Package": "ggiraph", - "Version": "0.9.3", + "Version": "0.9.4", "Source": "Repository", "Type": "Package", "Title": "Make 'ggplot2' Graphics Interactive", @@ -7811,7 +7810,7 @@ }, "ggplot2": { "Package": "ggplot2", - "Version": "4.0.1", + "Version": "4.0.2", "Source": "Repository", "Title": "Create Elegant Data Visualisations Using the Grammar of Graphics", "Authors@R": "c( person(\"Hadley\", \"Wickham\", , \"hadley@posit.co\", role = \"aut\", comment = c(ORCID = \"0000-0003-4757-117X\")), person(\"Winston\", \"Chang\", role = \"aut\", comment = c(ORCID = \"0000-0002-1576-2126\")), person(\"Lionel\", \"Henry\", role = \"aut\"), person(\"Thomas Lin\", \"Pedersen\", , \"thomas.pedersen@posit.co\", role = c(\"aut\", \"cre\"), comment = c(ORCID = \"0000-0002-5147-4711\")), person(\"Kohske\", \"Takahashi\", role = \"aut\"), person(\"Claus\", \"Wilke\", role = \"aut\", comment = c(ORCID = \"0000-0002-7470-9261\")), person(\"Kara\", \"Woo\", role = \"aut\", comment = c(ORCID = \"0000-0002-5125-4188\")), person(\"Hiroaki\", \"Yutani\", role = \"aut\", comment = c(ORCID = \"0000-0002-3385-7233\")), person(\"Dewey\", \"Dunnington\", role = \"aut\", comment = c(ORCID = \"0000-0002-9415-4582\")), person(\"Teun\", \"van den Brand\", role = \"aut\", comment = c(ORCID = \"0000-0002-9335-7468\")), person(\"Posit, PBC\", role = c(\"cph\", \"fnd\"), comment = c(ROR = \"03wc8by49\")) )", @@ -9924,14 +9923,14 @@ }, "lubridate": { "Package": "lubridate", - "Version": "1.9.4", + "Version": "1.9.5", "Source": "Repository", "Type": "Package", "Title": "Make Dealing with Dates a Little Easier", "Authors@R": "c( person(\"Vitalie\", \"Spinu\", , \"spinuvit@gmail.com\", role = c(\"aut\", \"cre\")), person(\"Garrett\", \"Grolemund\", role = \"aut\"), person(\"Hadley\", \"Wickham\", role = \"aut\"), person(\"Davis\", \"Vaughan\", role = \"ctb\"), person(\"Ian\", \"Lyttle\", role = \"ctb\"), person(\"Imanuel\", \"Costigan\", role = \"ctb\"), person(\"Jason\", \"Law\", role = \"ctb\"), person(\"Doug\", \"Mitarotonda\", role = \"ctb\"), person(\"Joseph\", \"Larmarange\", role = \"ctb\"), person(\"Jonathan\", \"Boiser\", role = \"ctb\"), person(\"Chel Hee\", \"Lee\", role = \"ctb\") )", "Maintainer": "Vitalie Spinu ", "Description": "Functions to work with date-times and time-spans: fast and user friendly parsing of date-time data, extraction and updating of components of a date-time (years, months, days, hours, minutes, and seconds), algebraic manipulation on date-time and time-span objects. The 'lubridate' package has a consistent and memorable syntax that makes working with dates easy and fun.", - "License": "GPL (>= 2)", + "License": "MIT + file LICENSE", "URL": "https://lubridate.tidyverse.org, https://github.com/tidyverse/lubridate", "BugReports": "https://github.com/tidyverse/lubridate/issues", "Depends": [ @@ -9940,7 +9939,7 @@ ], "Imports": [ "generics", - "timechange (>= 0.3.0)" + "timechange (>= 0.4.0)" ], "Suggests": [ "covr", @@ -9961,8 +9960,8 @@ "Config/testthat/edition": "3", "Encoding": "UTF-8", "LazyData": "true", - "RoxygenNote": "7.2.3", - "SystemRequirements": "C++11, A system with zoneinfo data (e.g. /usr/share/zoneinfo). On Windows the zoneinfo included with R is used.", + "RoxygenNote": "7.3.3", + "SystemRequirements": "A system with zoneinfo data (e.g. /usr/share/zoneinfo). On Windows the zoneinfo included with R is used.", "Collate": "'Dates.r' 'POSIXt.r' 'util.r' 'parse.r' 'timespans.r' 'intervals.r' 'difftimes.r' 'durations.r' 'periods.r' 'accessors-date.R' 'accessors-day.r' 'accessors-dst.r' 'accessors-hour.r' 'accessors-minute.r' 'accessors-month.r' 'accessors-quarter.r' 'accessors-second.r' 'accessors-tz.r' 'accessors-week.r' 'accessors-year.r' 'am-pm.r' 'time-zones.r' 'numeric.r' 'coercion.r' 'constants.r' 'cyclic_encoding.r' 'data.r' 'decimal-dates.r' 'deprecated.r' 'format_ISO8601.r' 'guess.r' 'hidden.r' 'instants.r' 'leap-years.r' 'ops-addition.r' 'ops-compare.r' 'ops-division.r' 'ops-integer-division.r' 'ops-m+.r' 'ops-modulo.r' 'ops-multiplication.r' 'ops-subtraction.r' 'package.r' 'pretty.r' 'round.r' 'stamp.r' 'tzdir.R' 'update.r' 'vctrs.R' 'zzz.R'", "NeedsCompilation": "yes", "Author": "Vitalie Spinu [aut, cre], Garrett Grolemund [aut], Hadley Wickham [aut], Davis Vaughan [ctb], Ian Lyttle [ctb], Imanuel Costigan [ctb], Jason Law [ctb], Doug Mitarotonda [ctb], Joseph Larmarange [ctb], Jonathan Boiser [ctb], Chel Hee Lee [ctb]", @@ -10921,31 +10920,9 @@ "NeedsCompilation": "no", "Repository": "CRAN" }, - "plogr": { - "Package": "plogr", - "Version": "0.2.0", - "Source": "Repository", - "Title": "The 'plog' C++ Logging Library", - "Date": "2018-03-24", - "Authors@R": "c( person(\"Kirill\", \"Müller\", role = c(\"aut\", \"cre\"), email = \"krlmlr+r@mailbox.org\"), person(\"Sergey\", \"Podobry\", role = \"cph\", comment = \"Author of the bundled plog library\"))", - "Description": "A simple header-only logging library for C++. Add 'LinkingTo: plogr' to 'DESCRIPTION', and '#include ' in your C++ modules to use it.", - "Suggests": [ - "Rcpp" - ], - "License": "MIT + file LICENSE", - "Encoding": "UTF-8", - "LazyData": "true", - "URL": "https://github.com/krlmlr/plogr#readme", - "BugReports": "https://github.com/krlmlr/plogr/issues", - "RoxygenNote": "6.0.1.9000", - "NeedsCompilation": "no", - "Author": "Kirill Müller [aut, cre], Sergey Podobry [cph] (Author of the bundled plog library)", - "Maintainer": "Kirill Müller ", - "Repository": "CRAN" - }, "plotly": { "Package": "plotly", - "Version": "4.11.0", + "Version": "4.12.0", "Source": "Repository", "Title": "Create Interactive Web Graphics via 'plotly.js'", "Authors@R": "c(person(\"Carson\", \"Sievert\", role = c(\"aut\", \"cre\"), email = \"cpsievert1@gmail.com\", comment = c(ORCID = \"0000-0002-4958-2844\")), person(\"Chris\", \"Parmer\", role = \"aut\", email = \"chris@plot.ly\"), person(\"Toby\", \"Hocking\", role = \"aut\", email = \"tdhock5@gmail.com\"), person(\"Scott\", \"Chamberlain\", role = \"aut\", email = \"myrmecocystus@gmail.com\"), person(\"Karthik\", \"Ram\", role = \"aut\", email = \"karthik.ram@gmail.com\"), person(\"Marianne\", \"Corvellec\", role = \"aut\", email = \"marianne.corvellec@igdore.org\", comment = c(ORCID = \"0000-0002-1994-3581\")), person(\"Pedro\", \"Despouy\", role = \"aut\", email = \"pedro@plot.ly\"), person(\"Salim\", \"Brüggemann\", role = \"ctb\", email = \"salim-b@pm.me\", comment = c(ORCID = \"0000-0002-5329-5987\")), person(\"Plotly Technologies Inc.\", role = \"cph\"))", @@ -10954,7 +10931,7 @@ "URL": "https://plotly-r.com, https://github.com/plotly/plotly.R, https://plotly.com/r/", "BugReports": "https://github.com/plotly/plotly.R/issues", "Depends": [ - "R (>= 3.2.0)", + "R (>= 3.5.0)", "ggplot2 (>= 3.0.0)" ], "Imports": [ @@ -11012,7 +10989,7 @@ "ggridges" ], "LazyData": "true", - "RoxygenNote": "7.3.2", + "RoxygenNote": "7.3.3", "Encoding": "UTF-8", "Config/Needs/check": "tidyverse/ggplot2, ggobi/GGally, rcmdcheck, devtools, reshape2, s2", "NeedsCompilation": "no", @@ -12846,11 +12823,11 @@ }, "segmented": { "Package": "segmented", - "Version": "2.2-0", + "Version": "2.2-1", "Source": "Repository", "Type": "Package", "Title": "Regression Models with Break-Points / Change-Points Estimation (with Possibly Random Effects)", - "Date": "2026-01-15", + "Date": "2026-01-29", "Authors@R": "c(person(given = c(\"Vito\",\"M.\",\"R.\"), family = \"Muggeo\", role = c(\"aut\", \"cre\"), email = \"vito.muggeo@unipa.it\", comment=c(ORCID=\"0000-0002-3386-4054\")))", "Maintainer": "Vito M. R. Muggeo ", "Description": "Fitting regression models where, in addition to possible linear terms, one or more covariates have segmented (i.e., broken-line or piece-wise linear) or stepmented (i.e. piece-wise constant) effects. Multiple breakpoints for the same variable are allowed. The estimation method is discussed in Muggeo (2003, ) and illustrated in Muggeo (2008, ). An approach for hypothesis testing is presented in Muggeo (2016, ), and interval estimation for the breakpoint is discussed in Muggeo (2017, ). Segmented mixed models, i.e. random effects in the change point, are discussed in Muggeo (2014, ). Estimation of piecewise-constant relationships and changepoints (mean-shift models) is discussed in Fasola et al. (2018, ).", @@ -13709,7 +13686,7 @@ }, "timechange": { "Package": "timechange", - "Version": "0.3.0", + "Version": "0.4.0", "Source": "Repository", "Title": "Efficient Manipulation of Date-Times", "Authors@R": "c(person(\"Vitalie\", \"Spinu\", email = \"spinuvit@gmail.com\", role = c(\"aut\", \"cre\")), person(\"Google Inc.\", role = c(\"ctb\", \"cph\")))", @@ -13726,7 +13703,7 @@ "testthat (>= 0.7.1.99)", "knitr" ], - "SystemRequirements": "A system with zoneinfo data (e.g. /usr/share/zoneinfo) as well as a recent-enough C++11 compiler (such as g++-4.8 or later). On Windows the zoneinfo included with R is used.", + "SystemRequirements": "A system with zoneinfo data (e.g. /usr/share/zoneinfo). On Windows the zoneinfo included with R is used.", "BugReports": "https://github.com/vspinu/timechange/issues", "URL": "https://github.com/vspinu/timechange/", "RoxygenNote": "7.2.1", @@ -14132,10 +14109,10 @@ }, "uuid": { "Package": "uuid", - "Version": "1.2-1", + "Version": "1.2-2", "Source": "Repository", "Title": "Tools for Generating and Handling of UUIDs", - "Author": "Simon Urbanek [aut, cre, cph] (https://urbanek.org, ), Theodore Ts'o [aut, cph] (libuuid)", + "Author": "Simon Urbanek [aut, cre, cph] (https://urbanek.org, ORCID: ), Theodore Ts'o [aut, cph] (libuuid)", "Maintainer": "Simon Urbanek ", "Authors@R": "c(person(\"Simon\", \"Urbanek\", role=c(\"aut\",\"cre\",\"cph\"), email=\"Simon.Urbanek@r-project.org\", comment=c(\"https://urbanek.org\", ORCID=\"0000-0003-2297-1732\")), person(\"Theodore\",\"Ts'o\", email=\"tytso@thunk.org\", role=c(\"aut\",\"cph\"), comment=\"libuuid\"))", "Depends": [ @@ -14196,7 +14173,7 @@ }, "vctrs": { "Package": "vctrs", - "Version": "0.7.0", + "Version": "0.7.1", "Source": "Repository", "Title": "Vector Helpers", "Authors@R": "c( person(\"Hadley\", \"Wickham\", , \"hadley@posit.co\", role = \"aut\"), person(\"Lionel\", \"Henry\", , \"lionel@posit.co\", role = \"aut\"), person(\"Davis\", \"Vaughan\", , \"davis@posit.co\", role = c(\"aut\", \"cre\")), person(\"data.table team\", role = \"cph\", comment = \"Radix sort based on data.table's forder() and their contribution to R's order()\"), person(\"Posit Software, PBC\", role = c(\"cph\", \"fnd\")) )", @@ -14324,11 +14301,11 @@ }, "viridisLite": { "Package": "viridisLite", - "Version": "0.4.2", + "Version": "0.4.3", "Source": "Repository", "Type": "Package", "Title": "Colorblind-Friendly Color Maps (Lite Version)", - "Date": "2023-05-02", + "Date": "2026-02-03", "Authors@R": "c( person(\"Simon\", \"Garnier\", email = \"garnier@njit.edu\", role = c(\"aut\", \"cre\")), person(\"Noam\", \"Ross\", email = \"noam.ross@gmail.com\", role = c(\"ctb\", \"cph\")), person(\"Bob\", \"Rudis\", email = \"bob@rud.is\", role = c(\"ctb\", \"cph\")), person(\"Marco\", \"Sciaini\", email = \"sciaini.marco@gmail.com\", role = c(\"ctb\", \"cph\")), person(\"Antônio Pedro\", \"Camargo\", role = c(\"ctb\", \"cph\")), person(\"Cédric\", \"Scherer\", email = \"scherer@izw-berlin.de\", role = c(\"ctb\", \"cph\")) )", "Maintainer": "Simon Garnier ", "Description": "Color maps designed to improve graph readability for readers with common forms of color blindness and/or color vision deficiency. The color maps are also perceptually-uniform, both in regular form and also when converted to black-and-white for printing. This is the 'lite' version of the 'viridis' package that also contains 'ggplot2' bindings for discrete and continuous color and fill scales and can be found at .", @@ -14345,20 +14322,20 @@ ], "URL": "https://sjmgarnier.github.io/viridisLite/, https://github.com/sjmgarnier/viridisLite/", "BugReports": "https://github.com/sjmgarnier/viridisLite/issues/", - "RoxygenNote": "7.2.3", + "RoxygenNote": "7.3.3", "NeedsCompilation": "no", "Author": "Simon Garnier [aut, cre], Noam Ross [ctb, cph], Bob Rudis [ctb, cph], Marco Sciaini [ctb, cph], Antônio Pedro Camargo [ctb, cph], Cédric Scherer [ctb, cph]", "Repository": "CRAN" }, "vroom": { "Package": "vroom", - "Version": "1.6.7", + "Version": "1.7.0", "Source": "Repository", "Title": "Read and Write Rectangular Text Data Quickly", "Authors@R": "c( person(\"Jim\", \"Hester\", role = \"aut\", comment = c(ORCID = \"0000-0002-2739-7082\")), person(\"Hadley\", \"Wickham\", , \"hadley@posit.co\", role = \"aut\", comment = c(ORCID = \"0000-0003-4757-117X\")), person(\"Jennifer\", \"Bryan\", , \"jenny@posit.co\", role = c(\"aut\", \"cre\"), comment = c(ORCID = \"0000-0002-6983-2759\")), person(\"Shelby\", \"Bearrows\", role = \"ctb\"), person(\"https://github.com/mandreyel/\", role = \"cph\", comment = \"mio library\"), person(\"Jukka\", \"Jylänki\", role = \"cph\", comment = \"grisu3 implementation\"), person(\"Mikkel\", \"Jørgensen\", role = \"cph\", comment = \"grisu3 implementation\"), person(\"Posit Software, PBC\", role = c(\"cph\", \"fnd\"), comment = c(ROR = \"03wc8by49\")) )", "Description": "The goal of 'vroom' is to read and write data (like 'csv', 'tsv' and 'fwf') quickly. When reading it uses a quick initial indexing step, then reads the values lazily , so only the data you actually use needs to be read. The writer formats the data in parallel and writes to disk asynchronously from formatting.", "License": "MIT + file LICENSE", - "URL": "https://vroom.r-lib.org, https://github.com/tidyverse/vroom", + "URL": "https://vroom.tidyverse.org, https://github.com/tidyverse/vroom", "BugReports": "https://github.com/tidyverse/vroom/issues", "Depends": [ "R (>= 4.1)" @@ -14371,7 +14348,7 @@ "hms", "lifecycle (>= 1.0.3)", "methods", - "rlang (>= 0.4.2)", + "rlang (>= 1.1.0)", "stats", "tibble (>= 2.0.0)", "tidyselect", @@ -14416,6 +14393,7 @@ "Encoding": "UTF-8", "Language": "en-US", "RoxygenNote": "7.3.3", + "Config/build/compilation-database": "true", "NeedsCompilation": "yes", "Author": "Jim Hester [aut] (ORCID: ), Hadley Wickham [aut] (ORCID: ), Jennifer Bryan [aut, cre] (ORCID: ), Shelby Bearrows [ctb], https://github.com/mandreyel/ [cph] (mio library), Jukka Jylänki [cph] (grisu3 implementation), Mikkel Jørgensen [cph] (grisu3 implementation), Posit Software, PBC [cph, fnd] (ROR: )", "Maintainer": "Jennifer Bryan ", @@ -14550,11 +14528,11 @@ }, "xgboost": { "Package": "xgboost", - "Version": "3.1.3.1", + "Version": "3.2.0.1", "Source": "Repository", "Type": "Package", "Title": "Extreme Gradient Boosting", - "Date": "2026-01-05", + "Date": "2026-02-10", "Authors@R": "c( person(\"Tianqi\", \"Chen\", role = c(\"aut\"), email = \"tianqi.tchen@gmail.com\"), person(\"Tong\", \"He\", role = c(\"aut\"), email = \"hetong007@gmail.com\"), person(\"Michael\", \"Benesty\", role = c(\"aut\"), email = \"michael@benesty.fr\"), person(\"Vadim\", \"Khotilovich\", role = c(\"aut\"), email = \"khotilovich@gmail.com\"), person(\"Yuan\", \"Tang\", role = c(\"aut\"), email = \"terrytangyuan@gmail.com\", comment = c(ORCID = \"0000-0001-5243-233X\")), person(\"Hyunsu\", \"Cho\", role = c(\"aut\"), email = \"chohyu01@cs.washington.edu\"), person(\"Kailong\", \"Chen\", role = c(\"aut\")), person(\"Rory\", \"Mitchell\", role = c(\"aut\")), person(\"Ignacio\", \"Cano\", role = c(\"aut\")), person(\"Tianyi\", \"Zhou\", role = c(\"aut\")), person(\"Mu\", \"Li\", role = c(\"aut\")), person(\"Junyuan\", \"Xie\", role = c(\"aut\")), person(\"Min\", \"Lin\", role = c(\"aut\")), person(\"Yifeng\", \"Geng\", role = c(\"aut\")), person(\"Yutian\", \"Li\", role = c(\"aut\")), person(\"Jiaming\", \"Yuan\", role = c(\"aut\", \"cre\"), email = \"jm.yuan@outlook.com\"), person(\"David\", \"Cortes\", role = c(\"aut\")), person(\"XGBoost contributors\", role = c(\"cph\"), comment = \"base XGBoost implementation\") )", "Maintainer": "Jiaming Yuan ", "Description": "Extreme Gradient Boosting, which is an efficient implementation of the gradient boosting framework from Chen & Guestrin (2016) . This package is its R interface. The package includes efficient linear model solver and tree learning algorithms. The package can automatically do parallel computation on a single machine which could be more than 10 times faster than existing gradient boosting packages. It supports various objective functions, including regression, classification and ranking. The package is made to be extensible, so that users are also allowed to define their own objectives easily.", @@ -14693,7 +14671,7 @@ }, "yulab.utils": { "Package": "yulab.utils", - "Version": "0.2.3", + "Version": "0.2.4", "Source": "Repository", "Title": "Supporting Functions for Packages Maintained by 'YuLab-SMU'", "Authors@R": "c(person(\"Guangchuang\", \"Yu\", email = \"guangchuangyu@gmail.com\", role = c(\"aut\", \"cre\"), comment = c(ORCID = \"0000-0002-6485-8781\")))", From 3973df7d558c88c1ff59f8210959ba12ff64adb8 Mon Sep 17 00:00:00 2001 From: "Stephanie J. Spielman" Date: Wed, 11 Feb 2026 15:39:46 -0500 Subject: [PATCH 066/148] Apply suggestions from code review --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index e2e501c1..d38de2a5 100644 --- a/Dockerfile +++ b/Dockerfile @@ -52,7 +52,7 @@ LABEL maintainer="ccdl@alexslemonade.org" WORKDIR /rocker-build/ -# Additonal dependencies for AWS runtime and R dependencies +# Additonal dependencies for AWS runtime RUN apt-get update -qq RUN DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \ glibc-source \ From 6b74ab9b4cd9123f8836129df3df0cc76a1e3cc0 Mon Sep 17 00:00:00 2001 From: "Stephanie J. Spielman" Date: Wed, 11 Feb 2026 15:40:11 -0500 Subject: [PATCH 067/148] Apply suggestion from @sjspielman --- Dockerfile | 1 - 1 file changed, 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index d38de2a5..ea4593bd 100644 --- a/Dockerfile +++ b/Dockerfile @@ -66,7 +66,6 @@ RUN DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \ fastqc \ && apt-get clean - # Python packages COPY requirements.txt requirements.txt RUN pip install -r requirements.txt --break-system-packages From e8952da4800c6b24763fb802b599754ff3cfe922 Mon Sep 17 00:00:00 2001 From: "Stephanie J. Spielman" Date: Tue, 3 Feb 2026 12:46:18 -0500 Subject: [PATCH 068/148] advanced GSEA notebook: spacing in general, and update the msigdbr argument to collection instead of category --- .../04-gene_set_enrichment_analysis.Rmd | 68 +++++++++++-------- 1 file changed, 41 insertions(+), 27 deletions(-) diff --git a/scRNA-seq-advanced/04-gene_set_enrichment_analysis.Rmd b/scRNA-seq-advanced/04-gene_set_enrichment_analysis.Rmd index e22afb81..531bd5fe 100644 --- a/scRNA-seq-advanced/04-gene_set_enrichment_analysis.Rmd +++ b/scRNA-seq-advanced/04-gene_set_enrichment_analysis.Rmd @@ -69,9 +69,11 @@ fs::dir_create(results_dir) ```{r input_files} -input_file <- file.path(rms_analysis_dir, - "deseq", - "rms_myoblast_deseq_results.tsv") +input_file <- file.path( + rms_analysis_dir, + "deseq", + "rms_myoblast_deseq_results.tsv" +) ``` #### Output files @@ -79,8 +81,10 @@ input_file <- file.path(rms_analysis_dir, We'll save our table of GSEA results as a TSV. ```{r output_files} -output_file <- file.path(results_dir, - "rms_myoblast_gsea_results.tsv") +output_file <- file.path( + results_dir, + "rms_myoblast_gsea_results.tsv" +) ``` ## Gene sets @@ -116,8 +120,10 @@ The fewer gene sets we test, the lower our multiple hypothesis testing burden. We can retrieve only the Hallmark gene sets by specifying `category = "H"` to the `msigdbr()` function. ```{r immunologic_sets, live = TRUE} -hs_hallmarks_df <- msigdbr(species = "Homo sapiens", - category = "H") +hs_hallmarks_df <- msigdbr( + species = "Homo sapiens", + collection = "H" +) ``` ## Gene Set Enrichment Analysis @@ -211,14 +217,16 @@ Now for the analysis! We can use the `GSEA()` function to perform GSEA with any generic set of gene sets, but there are several functions for using specific, commonly used gene sets (e.g., `gseKEGG()`). ```{r run_gsea} -gsea_results <- GSEA(geneList = lfc_vector, # ordered ranked gene list - minGSSize = 25, # minimum gene set size - maxGSSize = 500, # maximum gene set set - pvalueCutoff = 0.05, - pAdjustMethod = "BH", # correction for multiple hypothesis testing - TERM2GENE = dplyr::select(hs_hallmarks_df, - gs_name, - ensembl_gene)) # pass the correct identifier column +gsea_results <- GSEA( + geneList = lfc_vector, # ordered ranked gene list + minGSSize = 25, # minimum gene set size + maxGSSize = 500, # maximum gene set set + palueCutoff = 0.05, + pAdjustMethod = "BH", # correction for multiple hypothesis testing + TERM2GENE = dplyr::select(hs_hallmarks_df, + gs_name, + ensembl_gene) # pass the correct identifier column +) ``` Let's take a look at the GSEA results. @@ -250,10 +258,12 @@ Let's take a look at 3 different pathways -- one with a highly positive NES, one Let's take look at a pathway with a highly positive NES (`HALLMARK_MYC_TARGETS_V2`) using a GSEA plot. ```{r highly_pos} -enrichplot::gseaplot(gsea_results, - geneSetID = "HALLMARK_MYC_TARGETS_V2", - title = "HALLMARK_MYC_TARGETS_V2", - color.line = "#0066FF") +enrichplot::gseaplot( + gsea_results, + geneSetID = "HALLMARK_MYC_TARGETS_V2", + title = "HALLMARK_MYC_TARGETS_V2", + color.line = "#0066FF" +) ``` Notice how the genes that are in the gene set, indicated by the black bars, tend to be on the left side of the graph indicating that they have positive gene-level scores. @@ -263,10 +273,12 @@ Notice how the genes that are in the gene set, indicated by the black bars, tend The gene set `HALLMARK_MYOGENESIS` had a highly negative NES. ```{r highly_neg} -enrichplot::gseaplot(gsea_results, - geneSetID = "HALLMARK_MYOGENESIS", - title = "HALLMARK_MYOGENESIS", - color.line = "#0066FF") +enrichplot::gseaplot( + gsea_results, + geneSetID = "HALLMARK_MYOGENESIS", + title = "HALLMARK_MYOGENESIS", + color.line = "#0066FF" +) ``` This gene set shows the opposite pattern -- genes in the pathway tend to be on the right side of the graph. @@ -277,10 +289,12 @@ The `@results` slot will only show gene sets that pass the `pvalueCutoff` thresh Let's look at `HALLMARK_P53_PATHWAY`, which was not in the results we viewed earlier. ```{r p53, live = TRUE} -enrichplot::gseaplot(gsea_results, - geneSetID = "HALLMARK_P53_PATHWAY", - title = "HALLMARK_P53_PATHWAY", - color.line = "#0066FF") +enrichplot::gseaplot( + gsea_results, + geneSetID = "HALLMARK_P53_PATHWAY", + title = "HALLMARK_P53_PATHWAY", + color.line = "#0066FF" +) ``` Genes in the pathway are distributed more evenly throughout the ranked list, resulting in a more "middling" score. From 0a6ee2b4e4d1f6ef563467ce339301304008d2f2 Mon Sep 17 00:00:00 2001 From: "Stephanie J. Spielman" Date: Thu, 12 Feb 2026 11:04:41 -0500 Subject: [PATCH 069/148] fix typo and one more wording spot --- scRNA-seq-advanced/04-gene_set_enrichment_analysis.Rmd | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/scRNA-seq-advanced/04-gene_set_enrichment_analysis.Rmd b/scRNA-seq-advanced/04-gene_set_enrichment_analysis.Rmd index 531bd5fe..513c4ea7 100644 --- a/scRNA-seq-advanced/04-gene_set_enrichment_analysis.Rmd +++ b/scRNA-seq-advanced/04-gene_set_enrichment_analysis.Rmd @@ -117,7 +117,7 @@ Here's an excerpt of the [collection description](https://www.gsea-msigdb.org/gs Notably, there are only 50 gene sets included in this collection. The fewer gene sets we test, the lower our multiple hypothesis testing burden. -We can retrieve only the Hallmark gene sets by specifying `category = "H"` to the `msigdbr()` function. +We can retrieve only the Hallmark gene sets by specifying `collection = "H"` to the `msigdbr()` function. ```{r immunologic_sets, live = TRUE} hs_hallmarks_df <- msigdbr( @@ -221,7 +221,7 @@ gsea_results <- GSEA( geneList = lfc_vector, # ordered ranked gene list minGSSize = 25, # minimum gene set size maxGSSize = 500, # maximum gene set set - palueCutoff = 0.05, + pvalueCutoff = 0.05, pAdjustMethod = "BH", # correction for multiple hypothesis testing TERM2GENE = dplyr::select(hs_hallmarks_df, gs_name, From 686bcdd0f8e82ab61c67740d2c390f849b92fa15 Mon Sep 17 00:00:00 2001 From: "Stephanie J. Spielman" Date: Tue, 3 Feb 2026 13:06:24 -0500 Subject: [PATCH 070/148] advanced AUCell notebook: spacing all around, update AUCell to use a gene list instead of genesetcollection, and update msigdbr arguments --- scRNA-seq-advanced/05-aucell.Rmd | 147 ++++++++++++++++++------------- 1 file changed, 84 insertions(+), 63 deletions(-) diff --git a/scRNA-seq-advanced/05-aucell.Rmd b/scRNA-seq-advanced/05-aucell.Rmd index 4f185439..94a46700 100644 --- a/scRNA-seq-advanced/05-aucell.Rmd +++ b/scRNA-seq-advanced/05-aucell.Rmd @@ -77,16 +77,20 @@ fs::dir_create(analysis_dir) The input will be a `SingleCellExperiment` for an individual Ewing sarcoma library. ```{r setup_input_files} -sce_file <- fs::path(processed_dir, - "SCPCS000490", - "SCPCL000822_processed.rds") +sce_file <- fs::path( + processed_dir, + "SCPCS000490", + "SCPCL000822_processed.rds" +) ``` We will save the `AUCell` results as a table in the analysis directory. ```{r setup_output_files, live = TRUE} -output_file <- fs::path(analysis_dir, - "ewing_sarcoma_aucell_results.tsv") +output_file <- fs::path( + analysis_dir, + "ewing_sarcoma_aucell_results.tsv" +) ``` @@ -112,8 +116,10 @@ We would expect both of these gene sets to have high expression in tumor cells. ```{r genesets} # Create a named vector with the relevant gene set names -ewing_gene_set_names <- c(zhang = "ZHANG_TARGETS_OF_EWSR1_FLI1_FUSION", - riggi = "RIGGI_EWING_SARCOMA_PROGENITOR_UP") +ewing_gene_set_names <- c( + zhang = "ZHANG_TARGETS_OF_EWSR1_FLI1_FUSION", + riggi = "RIGGI_EWING_SARCOMA_PROGENITOR_UP" +) ewing_gene_set_names ``` @@ -122,32 +128,25 @@ These gene sets come from the C2 gene set collection from MSigDB. Let's retrieve them using `msigdbr()`. ```{r extract_genesets, live = TRUE} -ewing_gene_sets_df <- msigdbr(species = "Homo sapiens", - category = "C2", - subcategory = "CGP") |> - dplyr::filter(gs_name %in% ewing_gene_set_names) +ewing_gene_sets_df <- msigdbr( + species = "Homo sapiens", + collection = "C2", + subcollection = "CGP" +) |> + dplyr::filter(gs_name %in% ewing_gene_set_names) |> + dplyr::select(gs_name, ensembl_gene) ``` -`AUCell` uses gene sets in a particular format that comes from the `GSEABase` package. -We need to create a `GeneSetCollection`. +We can provide these gene sets as a named list to `AUCell`, so let's create that now. -```{r gene_set_collection} -ewing_gene_set_collection <- ewing_gene_set_names |> - purrr::map( - # For each gene set - \(gene_set_name) { - ewing_gene_sets_df |> - # Subset to the rows in that gene set - dplyr::filter(gs_name == gene_set_name) |> - # Grab the Ensembl gene identifiers - dplyr::pull(ensembl_gene) |> - # Create a GeneSet object - GeneSet(setName = gene_set_name, - geneIdType = ENSEMBLIdentifier()) - } - ) |> - # Turn the list of GeneSet objects into a GeneSet collection - GeneSetCollection() +```{r create_gene_list} +ewing_gene_set_list <- split( + ewing_gene_sets_df$ensembl_gene, + ewing_gene_sets_df$gs_name +) + +# briefly, show the resulting list +purrr::map(ewing_gene_set_list, head) ``` ## Read in and prepare the `SingleCellExperiment` @@ -176,13 +175,16 @@ We can extract a counts matrix in sparse format for use with `AUCell`. counts_matrix <- counts(sce) ``` -There may be genes in our gene set that do not appear in the `SingleCellExperiment` object. -We can remove them using the `subsetGeneSets()` function. +There may be genes in our gene set that do not appear in the `SingleCellExperiment` object which we should remove before proceeding. ```{r subset_gene_sets, live = TRUE} -# Remove genes from gene sets if they are not in the SCE -ewing_gene_set_collection <- subsetGeneSets(ewing_gene_set_collection, - rownames(counts_matrix)) +# Remove genes from list if they are not in the SCE +ewing_gene_set_list <- ewing_gene_set_list |> + purrr::map( + \(gene_list) { + intersect(gene_list, rownames(sce)) # keep only the intersection with our genes + } +) ``` ## `AUCell` @@ -248,11 +250,13 @@ First, we'll start with a cell with a high AUC. We picked this barcode ahead of time when we wrote the notebook. ```{r high_recovery_curve} -plot_recovery_curve(cell_rankings, - ewing_gene_set_collection, - gene_set_name = "ZHANG_TARGETS_OF_EWSR1_FLI1_FUSION", - barcode = "CTGAGCGGTCTTTATC", - auc_max_rank = auc_max_rank) # 1% threshold +plot_recovery_curve( + cell_rankings, + ewing_gene_set_list, + gene_set_name = "ZHANG_TARGETS_OF_EWSR1_FLI1_FUSION", + barcode = "CTGAGCGGTCTTTATC", + auc_max_rank = auc_max_rank # 1% threshold +) ``` The x-axis is the gene ranks for all genes. @@ -262,11 +266,13 @@ The AUC is the area under this recovery curve at the max rank threshold chosen f Now, let's look at an example with a low AUC. ```{r low_recovery_curve} -plot_recovery_curve(cell_rankings, - ewing_gene_set_collection, - gene_set_name = "ZHANG_TARGETS_OF_EWSR1_FLI1_FUSION", - barcode = "AGATAGAGTCACAATC", - auc_max_rank = auc_max_rank) # 1% threshold +plot_recovery_curve( + cell_rankings, + ewing_gene_set_list, + gene_set_name = "ZHANG_TARGETS_OF_EWSR1_FLI1_FUSION", + barcode = "AGATAGAGTCACAATC", + auc_max_rank = auc_max_rank # 1% threshold +) ``` Far fewer genes in the gene set are ranked above the threshold, yielding a lower AUC value. @@ -276,9 +282,11 @@ Far fewer genes in the gene set are ranked above the threshold, yielding a lower Once we have the rankings, we can calculate the AUC scores for both gene sets in all cells with the `AUCell_calcAUC()` function. ```{r calc_auc, live = TRUE} -cell_auc <- AUCell_calcAUC(geneSets = ewing_gene_set_collection, - rankings = cell_rankings, - aucMaxRank = auc_max_rank) +cell_auc <- AUCell_calcAUC( + geneSets = ewing_gene_set_list, + rankings = cell_rankings, + aucMaxRank = auc_max_rank +) ``` This function returns an `aucellResults` object. @@ -309,18 +317,22 @@ head(auc_df) We'll explore these in a later plot, but for now, let's calculate the threshold and assign cells with `AUCell_exploreThresholds()`. ```{r auc_assignments, live = TRUE} -auc_assignments <- AUCell_exploreThresholds(cell_auc, - plotHist = FALSE, - assignCells = TRUE) +auc_assignments <- AUCell_exploreThresholds( + cell_auc, + plotHist = FALSE, + assignCells = TRUE +) ``` We're going to plot the distribution of AUC values with `ggplot2`, so we will want the AUC values in a longer format. ```{r auc_plotting_df} auc_plotting_df <- auc_df |> - tidyr::pivot_longer(!barcodes, - names_to = "gene_set", - values_to = "auc") |> + tidyr::pivot_longer( + !barcodes, + names_to = "gene_set", + values_to = "auc" + ) |> dplyr::mutate( # Create a new logical column called assigned assigned = dplyr::case_when( @@ -396,9 +408,10 @@ First, let's rename the gene set columns to something more easily typed. ```{r rename_gene_set} auc_df <- auc_df |> # Use shorter names - dplyr::rename(zhang_auc = ewing_gene_set_names[["zhang"]], - riggi_auc = ewing_gene_set_names[["riggi"]]) - + dplyr::rename( + zhang_auc = ewing_gene_set_names[["zhang"]], + riggi_auc = ewing_gene_set_names[["riggi"]] + ) ``` And join it to the existing `colData`. @@ -431,18 +444,26 @@ We can use the `plotUMAP()` function from the `scater` package to plot a UMAP wi ```{r plot_umap_zhang} scater::plotUMAP(sce, colour_by = "zhang_auc") + # Use the gene set name, replacing underscores with spaces - ggplot2::ggtitle(stringr::str_replace_all(ewing_gene_set_names[["zhang"]], - "\\_", - " ")) + ggplot2::ggtitle( + stringr::str_replace_all( + ewing_gene_set_names[["zhang"]], + "\\_", + " " + ) + ) ``` Let's color the points by the AUC values for the other gene set. ```{r plot_umap_riggi, live = TRUE} scater::plotUMAP(sce, colour_by = "riggi_auc") + - ggplot2::ggtitle(stringr::str_replace_all(ewing_gene_set_names[["riggi"]], - "\\_", - " ")) + ggplot2::ggtitle( + stringr::str_replace_all( + ewing_gene_set_names[["riggi"]], + "\\_", + " " + ) + ) ``` We would want to do something more formal to confirm, but it seems like the same cells have high AUC values for both gene sets! From 015fb8f0b2f6ae3384af4b18e49e0ee11600101c Mon Sep 17 00:00:00 2001 From: "Stephanie J. Spielman" Date: Tue, 3 Feb 2026 13:06:51 -0500 Subject: [PATCH 071/148] advanced aucell util: update plot_recovery_curve function to use list instead of genesetcollection --- scRNA-seq-advanced/util/aucell_functions.R | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/scRNA-seq-advanced/util/aucell_functions.R b/scRNA-seq-advanced/util/aucell_functions.R index 16f3482f..44dc2db1 100644 --- a/scRNA-seq-advanced/util/aucell_functions.R +++ b/scRNA-seq-advanced/util/aucell_functions.R @@ -3,8 +3,8 @@ #' Adapted from https://github.com/aertslab/AUCell/blob/91753b327a39dc7a4bbed46408ec2271c485f2f0/vignettes/AUCell.Rmd#L295-L316 #' #' @param cell_rankings Cell rankings; the output of AUCell::AUCell_buildRankings() -#' @param gene_set_collection A GSEABase GeneSetCollection object -#' @param gene_set_name The name of the gene set from the GeneSetCollection +#' @param gene_set_list A list of gene sets +#' @param gene_set_name The name of the gene set the gene_set_list #' that you would like to plot a recovery curve for #' @param barcode The cell barcode that you would like to plot a recovery #' curve for @@ -14,7 +14,7 @@ #' #' @return Outputs a recovery curve plot with the plot_recovery_curve <- function(cell_rankings, - gene_set_collection, + gene_set_list, gene_set_name, barcode, auc_max_rank, @@ -24,8 +24,8 @@ plot_recovery_curve <- function(cell_rankings, # Pull out the gene set and identify where in the cell ranks those genes # lie - gene_set <- gene_set_collection[[gene_set_name]] - gene_set_ranks <- cell_rankings[geneIds(gene_set), ] + gene_set <- ewing_gene_set_list[[gene_set_name]] + gene_set_ranks <- cell_rankings[gene_set, ] # Index of the cell with the barcode barcode_index <- which(colnames(gene_set_ranks) == barcode) @@ -35,7 +35,7 @@ plot_recovery_curve <- function(cell_rankings, plot(aucCurve, type="s", col="darkblue", lwd=1, xlab="Gene rank", ylab="# genes in the gene set", - xlim=c(0, auc_max_rank*3), ylim=c(0, nGenes(gene_set)), + xlim=c(0, auc_max_rank*3), ylim=c(0, length(gene_set)), main="Recovery curve", sub=paste("Cell:", colnames(gene_set_ranks)[barcode_index])) aucShade <- aucCurve[which(aucCurve[,1] < auc_max_rank),] From 17fba6107ab4c3d4130e1440b65b2f954fa6f065 Mon Sep 17 00:00:00 2001 From: "Stephanie J. Spielman" Date: Thu, 12 Feb 2026 11:27:00 -0500 Subject: [PATCH 072/148] fix typo --- scRNA-seq-advanced/util/aucell_functions.R | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scRNA-seq-advanced/util/aucell_functions.R b/scRNA-seq-advanced/util/aucell_functions.R index 44dc2db1..e4bbfa98 100644 --- a/scRNA-seq-advanced/util/aucell_functions.R +++ b/scRNA-seq-advanced/util/aucell_functions.R @@ -24,7 +24,7 @@ plot_recovery_curve <- function(cell_rankings, # Pull out the gene set and identify where in the cell ranks those genes # lie - gene_set <- ewing_gene_set_list[[gene_set_name]] + gene_set <- gene_set_list[[gene_set_name]] gene_set_ranks <- cell_rankings[gene_set, ] # Index of the cell with the barcode From 265a4d383068e39a28c624e57c6b0adf83380c47 Mon Sep 17 00:00:00 2001 From: "Stephanie J. Spielman" Date: Thu, 12 Feb 2026 12:23:04 -0500 Subject: [PATCH 073/148] comment out unfixed notebooks with TODO linking #911 --- scripts/render-live.sh | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/scripts/render-live.sh b/scripts/render-live.sh index 88c54a40..bc09ea7d 100644 --- a/scripts/render-live.sh +++ b/scripts/render-live.sh @@ -31,7 +31,7 @@ files=( scRNA-seq/03-normalizing_scRNA.Rmd scRNA-seq/04-dimension_reduction_scRNA.Rmd scRNA-seq/05-clustering_markers_scRNA.Rmd - scRNA-seq/06-celltype_annotation.Rmd + # scRNA-seq/06-celltype_annotation.Rmd # TODO: Uncomment for https://github.com/AlexsLemonade/training-modules/issues/911 scRNA-seq-advanced/01-read_filter_normalize_scRNA.Rmd scRNA-seq-advanced/02-dataset_integration.Rmd scRNA-seq-advanced/03-differential_expression.Rmd @@ -41,9 +41,9 @@ files=( # machine-learning/02-openpbta_consensus_clustering.Rmd # machine-learning/03-openpbta_PLIER.Rmd # machine-learning/04-openpbta_plot_LV.Rmd - pathway-analysis/01-overrepresentation_analysis.Rmd - pathway-analysis/02-gene_set_enrichment_analysis.Rmd - pathway-analysis/03-gene_set_variation_analysis.Rmd + # pathway-analysis/01-overrepresentation_analysis.Rmd # TODO: Uncomment for https://github.com/AlexsLemonade/training-modules/issues/911 + # pathway-analysis/02-gene_set_enrichment_analysis.Rmd # TODO: Uncomment for https://github.com/AlexsLemonade/training-modules/issues/911 + # pathway-analysis/03-gene_set_variation_analysis.Rmd # TODO: Uncomment for https://github.com/AlexsLemonade/training-modules/issues/911 ) for file in ${files[@]} do From a76a4191fa9f790d5d8cffac70e3f35b45755431 Mon Sep 17 00:00:00 2001 From: "Stephanie J. Spielman" Date: Thu, 12 Feb 2026 12:28:55 -0500 Subject: [PATCH 074/148] #902: update ORA notebook --- .../01-overrepresentation_analysis.Rmd | 71 +++++++++++-------- 1 file changed, 42 insertions(+), 29 deletions(-) diff --git a/pathway-analysis/01-overrepresentation_analysis.Rmd b/pathway-analysis/01-overrepresentation_analysis.Rmd index 8e7a62f1..3320c676 100644 --- a/pathway-analysis/01-overrepresentation_analysis.Rmd +++ b/pathway-analysis/01-overrepresentation_analysis.Rmd @@ -107,7 +107,7 @@ The results we're interested in here come from mouse samples, so we can obtain j mm_msigdb_df <- msigdbr(species = "Mus musculus") ``` -MSigDB contains 8 different gene set collections. +MSigDB contains 9 different gene set collections. H: hallmark gene sets C1: positional gene sets @@ -117,23 +117,26 @@ MSigDB contains 8 different gene set collections. C5: GO gene sets C6: oncogenic signatures C7: immunologic signatures + C8: cell type signatures In this example, we will use canonical pathways which are ([ref](https://www.gsea-msigdb.org/gsea/msigdb/collections.jsp)): > Gene sets from pathway databases. Usually, these gene sets are canonical representations of a biological process compiled by domain experts. And are a subset of `C2: curated gene sets`. -Specifically, we will use the [KEGG (Kyoto Encyclopedia of Genes and Genomes)](https://www.genome.jp/kegg/) pathways. +Specifically, we will use the [KEGG (Kyoto Encyclopedia of Genes and Genomes)](https://www.genome.jp/kegg/) pathways, which is denoted as `CP:KEGG_MEDICUS` in this version of `msigdbr`. ```{r filter_to_kegg} # Filter the mouse data frame to the KEGG pathways that are included in the # curated gene sets mm_kegg_df <- mm_msigdb_df |> - dplyr::filter(gs_cat == "C2", # curated gene sets - gs_subcat == "CP:KEGG") # KEGG pathways + dplyr::filter( + gs_collection == "C2", # curated gene set + gs_subcollection == "CP:KEGG_MEDICUS" # KEGG pathways + ) ``` -*Note: We could specified that we wanted the KEGG gene sets using the `category` and `subcategory` arguments of `msigdbr()`, but we're going for general steps!* +*Note: We could specified that we wanted the KEGG gene sets using the `collection` and `subcollection` arguments of `msigdbr()`, but we're going for general steps!* ```{r mm_kegg_columns} colnames(mm_kegg_df) @@ -179,18 +182,20 @@ The function we will use to map from Ensembl gene IDs to gene symbols is called ```{r map_to_symbol} # This returns a named vector which we can convert to a data frame, where # the keys (Ensembl IDs) are the names -symbols_vector <- mapIds(org.Mm.eg.db, # Specify the annotation package - # The vector of gene identifiers we want to - # map - keys = vs_low_df$Gene, - # What type of gene identifiers we're starting - # with - keytype = "ENSEMBL", - # The type of gene identifier we want returned - column = "SYMBOL", - # In the case of 1:many mappings, return the - # first one. This is default behavior! - multiVals = "first") +symbols_vector <- mapIds( + org.Mm.eg.db, # Specify the annotation package + # The vector of gene identifiers we want to + # map + keys = vs_low_df$Gene, + # What type of gene identifiers we're starting + # with + keytype = "ENSEMBL", + # The type of gene identifier we want returned + column = "SYMBOL", + # In the case of 1:many mappings, return the + # first one. This is default behavior! + multiVals = "first" +) # We would like a data frame we can join to the DGE results symbols_df <- data.frame( @@ -210,10 +215,12 @@ Let's do this first for the comparison to the low stem cell capacity population. ```{r add_symbols, live = TRUE} vs_low_df <- symbols_df |> # An *inner* join will only return rows that are in both data frames - dplyr::inner_join(vs_low_df, - # The name of the column that contains the Ensembl gene IDs - # in the left data frame and right data frame - by = c("ensembl_id" = "Gene")) + dplyr::inner_join( + vs_low_df, + # The name of the column that contains the Ensembl gene IDs + # in the left data frame and right data frame + by = c("ensembl_id" = "Gene") + ) ``` ### Drop `NA` values @@ -292,8 +299,10 @@ Genes with positive log2 fold-changes (LFC) will be more highly expressed in the ```{r high_capacity_genes} vs_low_genes <- vs_low_df |> # Filter to the positive LFC and filter based on significance too (padj) - dplyr::filter(log2FoldChange > 0, - padj < 0.05) |> + dplyr::filter( + log2FoldChange > 0, + padj < 0.05 + ) |> # Return a vector of gene symbols dplyr::pull(gene_symbol) ``` @@ -306,8 +315,10 @@ Now, we'll take the same steps for our other results. ```{r unsorted_genes_to_remove, live = TRUE} vs_unsorted_genes <- vs_unsorted_df |> - dplyr::filter(log2FoldChange > 0, - padj < 0.05) |> + dplyr::filter( + log2FoldChange > 0, + padj < 0.05 + ) |> dplyr::pull(gene_symbol) ``` @@ -335,8 +346,10 @@ We can use another function for set operations, `intersect()`, to get our backgr ```{r get_background_set} # intersect() will return the genes in both sets - we are using the entire data # frame here (complete cases), not just the significant genes -background_set <- intersect(vs_low_df$gene_symbol, - vs_unsorted_df$gene_symbol) +background_set <- intersect( + vs_low_df$gene_symbol, + vs_unsorted_df$gene_symbol +) # Remove anything that couldn't reliably be measured/assessed in both from the # genes of interest list - using intersect() will drop anything in the first set @@ -381,13 +394,13 @@ kegg_result_df <- data.frame(kegg_ora_results@result) We can use a dot plot to visualize our significant enrichment results. -```{r dotplot, live = TRUE} +```{r dotplot, fig.width = 10, live = TRUE} enrichplot::dotplot(kegg_ora_results) ``` We can use an [UpSet plot](https://www.ncbi.nlm.nih.gov/pmc/articles/PMC4720993/) to visualize the **overlap** between the gene sets that were returned as significant. -```{r upsetplot, live = TRUE} +```{r upsetplot, fig.width = 10, live = TRUE} enrichplot::upsetplot(kegg_ora_results) ``` From b1cce45304d7bb6debd1e77b90c4a3c2d205eb10 Mon Sep 17 00:00:00 2001 From: "Stephanie J. Spielman" Date: Thu, 12 Feb 2026 12:34:13 -0500 Subject: [PATCH 075/148] #903: update GSEA notebook --- .../02-gene_set_enrichment_analysis.Rmd | 25 +++++++++++-------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/pathway-analysis/02-gene_set_enrichment_analysis.Rmd b/pathway-analysis/02-gene_set_enrichment_analysis.Rmd index 3c79f68b..a3781b74 100644 --- a/pathway-analysis/02-gene_set_enrichment_analysis.Rmd +++ b/pathway-analysis/02-gene_set_enrichment_analysis.Rmd @@ -119,11 +119,13 @@ We'll use the Hallmark collection for GSEA. Notably, there are only 50 gene sets included in this collection. The fewer gene sets we test, the lower our multiple hypothesis testing burden. -We can retrieve only the Hallmark gene sets by specifying `category = "H"` to the `msigdbr()` function. +We can retrieve only the Hallmark gene sets by specifying `collection = "H"` to the `msigdbr()` function. ```{r hallmark_sets, live = TRUE} -hs_hallmark_df <- msigdbr(species = "Homo sapiens", - category = "H") +hs_hallmark_df <- msigdbr( + species = "Homo sapiens", + collection = "H" +) ``` ## Differential gene expression results @@ -238,14 +240,15 @@ Now for the analysis! We can use the `GSEA()` function to perform GSEA with any generic set of gene sets, but there are several functions for using specific, commonly used gene sets (e.g., `gseKEGG()`). ```{r run_gsea} -gsea_results <- GSEA(geneList = lfc_vector, # ordered ranked gene list - minGSSize = 25, # minimum gene set size - maxGSSize = 500, # maximum gene set set - pvalueCutoff = 0.05, - pAdjustMethod = "BH", # correction for multiple hypothesis testing - TERM2GENE = dplyr::select(hs_hallmark_df, - gs_name, - gene_symbol)) +gsea_results <- GSEA( + geneList = lfc_vector, # ordered ranked gene list + minGSSize = 25, # minimum gene set size + maxGSSize = 500, # maximum gene set set + pvalueCutoff = 0.05, + pAdjustMethod = "BH", # correction for multiple hypothesis testing + TERM2GENE = dplyr::select(hs_hallmark_df, + gs_name, + gene_symbol)) ``` The warning about ties means that there are multiple genes that have the same log2 fold change value. From 09328dc4fa9e0774eb8acbdcbf7b3dab4373d229 Mon Sep 17 00:00:00 2001 From: "Stephanie J. Spielman" Date: Thu, 12 Feb 2026 12:41:39 -0500 Subject: [PATCH 076/148] #904: update GSVA notebook --- pathway-analysis/03-gene_set_variation_analysis.Rmd | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/pathway-analysis/03-gene_set_variation_analysis.Rmd b/pathway-analysis/03-gene_set_variation_analysis.Rmd index abcbb998..ad2e8480 100644 --- a/pathway-analysis/03-gene_set_variation_analysis.Rmd +++ b/pathway-analysis/03-gene_set_variation_analysis.Rmd @@ -164,9 +164,7 @@ gsva_results <- gsva( kcdf = "Gaussian", # enrichment score is the difference between largest positive and negative maxDiff = TRUE - ), - # Use 4 cores for multiprocessing - BPPARAM = BiocParallel::MulticoreParam(4) + ) ) ``` @@ -211,8 +209,9 @@ random_gene_sets <- rep(gene_set_size, nreps) |> # Repeat gene sizes so we run purrr::map( # Sample the vector of all genes, choosing the number of items specified # in the element of gene set size - ~ base::sample(x = all_genes, - size = .x) + \(geneset_size) { + base::sample(x = all_genes, size = geneset_size) + } ) ``` @@ -247,9 +246,7 @@ random_gsva_results <- gsva( maxSize = 500, kcdf = "Gaussian", maxDiff = TRUE - ), - # Use 4 cores for multiprocessing - BPPARAM = BiocParallel::MulticoreParam(4) + ) ) ``` From 1737eee9d58aed301c67f8fb8f5dff0d5adf7f6a Mon Sep 17 00:00:00 2001 From: "Stephanie J. Spielman" Date: Thu, 12 Feb 2026 12:43:41 -0500 Subject: [PATCH 077/148] a couple more purrr spots in GSVA --- pathway-analysis/03-gene_set_variation_analysis.Rmd | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/pathway-analysis/03-gene_set_variation_analysis.Rmd b/pathway-analysis/03-gene_set_variation_analysis.Rmd index ad2e8480..c697680f 100644 --- a/pathway-analysis/03-gene_set_variation_analysis.Rmd +++ b/pathway-analysis/03-gene_set_variation_analysis.Rmd @@ -223,9 +223,13 @@ The Hallmarks list we used earlier stored the gene set names as the name of the # number lengths_vector <- random_gene_sets |> # Get the length of each gene set (number of genes) - purrr::map(~ length(.x)) |> + purrr::map(length) |> # Make it "pathway_" - purrr::map(~ paste0("pathway_", .x)) |> + purrr::map( + \(geneset_size) { + paste0("pathway_", geneset_size) + } + ) |> # Return a vector purrr::flatten_chr() From 2f913e72cc5a26e3f0a2a9e5596b77230aafe6a9 Mon Sep 17 00:00:00 2001 From: "Stephanie J. Spielman" Date: Thu, 12 Feb 2026 14:09:03 -0500 Subject: [PATCH 078/148] temp comment out notebooks not to render, see if this one makes it through disk-space wise --- scripts/render-live.sh | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/scripts/render-live.sh b/scripts/render-live.sh index 88c54a40..4149f84a 100644 --- a/scripts/render-live.sh +++ b/scripts/render-live.sh @@ -35,15 +35,15 @@ files=( scRNA-seq-advanced/01-read_filter_normalize_scRNA.Rmd scRNA-seq-advanced/02-dataset_integration.Rmd scRNA-seq-advanced/03-differential_expression.Rmd - scRNA-seq-advanced/04-gene_set_enrichment_analysis.Rmd - scRNA-seq-advanced/05-aucell.Rmd + # scRNA-seq-advanced/04-gene_set_enrichment_analysis.Rmd # TEMPORARY + # scRNA-seq-advanced/05-aucell.Rmd # TEMPORARY # machine-learning/01-openpbta_heatmap.Rmd # machine-learning/02-openpbta_consensus_clustering.Rmd # machine-learning/03-openpbta_PLIER.Rmd # machine-learning/04-openpbta_plot_LV.Rmd - pathway-analysis/01-overrepresentation_analysis.Rmd - pathway-analysis/02-gene_set_enrichment_analysis.Rmd - pathway-analysis/03-gene_set_variation_analysis.Rmd + # pathway-analysis/01-overrepresentation_analysis.Rmd # TEMPORARY + # pathway-analysis/02-gene_set_enrichment_analysis.Rmd # TEMPORARY + # pathway-analysis/03-gene_set_variation_analysis.Rmd # TEMPORARY ) for file in ${files[@]} do From 88e347170ca639e584897c88f31ccaae69ddd34b Mon Sep 17 00:00:00 2001 From: "Stephanie J. Spielman" Date: Thu, 12 Feb 2026 14:44:54 -0500 Subject: [PATCH 079/148] might as well try same step we use in exercises repo --- .github/workflows/render-rmds.yml | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/.github/workflows/render-rmds.yml b/.github/workflows/render-rmds.yml index 3b3cd56c..a234e62d 100644 --- a/.github/workflows/render-rmds.yml +++ b/.github/workflows/render-rmds.yml @@ -19,10 +19,22 @@ jobs: container: image: ccdl/training_rstudio:edge + steps: - name: Checkout code uses: actions/checkout@v4 + # As in: https://github.com/AlexsLemonade/exercise-notebook-answers/blob/2139d011b0aaf0a7ff0cdfc96e89c55bf6bb9215/.github/workflows/render-exercises.yml#L17 + - name: Clear disk space + id: clear-space + run: | + sudo rm -rf /usr/share/dotnet + sudo rm -rf /opt/ghc + sudo rm -rf /usr/local/lib/android + sudo rm -rf /usr/local/share/boost + sudo rm -rf "$AGENT_TOOLSDIRECTORY" + df -h + - name: Load 1Password secrets uses: 1password/load-secrets-action@v2 with: From c3deda25a4b01b75fdf93e4c41ebff6b80d8e95c Mon Sep 17 00:00:00 2001 From: "Stephanie J. Spielman" Date: Thu, 12 Feb 2026 14:52:30 -0500 Subject: [PATCH 080/148] Revert "might as well try same step we use in exercises repo" This reverts commit 88e347170ca639e584897c88f31ccaae69ddd34b. --- .github/workflows/render-rmds.yml | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/.github/workflows/render-rmds.yml b/.github/workflows/render-rmds.yml index a234e62d..3b3cd56c 100644 --- a/.github/workflows/render-rmds.yml +++ b/.github/workflows/render-rmds.yml @@ -19,22 +19,10 @@ jobs: container: image: ccdl/training_rstudio:edge - steps: - name: Checkout code uses: actions/checkout@v4 - # As in: https://github.com/AlexsLemonade/exercise-notebook-answers/blob/2139d011b0aaf0a7ff0cdfc96e89c55bf6bb9215/.github/workflows/render-exercises.yml#L17 - - name: Clear disk space - id: clear-space - run: | - sudo rm -rf /usr/share/dotnet - sudo rm -rf /opt/ghc - sudo rm -rf /usr/local/lib/android - sudo rm -rf /usr/local/share/boost - sudo rm -rf "$AGENT_TOOLSDIRECTORY" - df -h - - name: Load 1Password secrets uses: 1password/load-secrets-action@v2 with: From 2fafb08b3d5021d1e3342ec477eb1379ea5edef6 Mon Sep 17 00:00:00 2001 From: Joshua Shapiro Date: Thu, 12 Feb 2026 14:55:35 -0500 Subject: [PATCH 081/148] Make sure that rm steps execute --- Dockerfile | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Dockerfile b/Dockerfile index ea4593bd..d5619a04 100644 --- a/Dockerfile +++ b/Dockerfile @@ -78,9 +78,9 @@ RUN Rscript -e "install.packages('renv')" COPY renv.lock renv.lock RUN Rscript -e "renv::restore()" \ - rm -rf ~/.cache/R/renv && \ - rm -rf /tmp/downloaded_packages && \ - rm -rf /tmp/Rtmp* + && rm -rf ~/.cache/R/renv \ + && rm -rf /tmp/downloaded_packages \ + && rm -rf /tmp/Rtmp* # copy aws, salmon, and fastp binaries from the build image COPY --from=build /usr/local/aws-cli/ /usr/local/aws-cli/ From 40cbf57abb0d257b8ebf9fd55b5d1184c981ee9e Mon Sep 17 00:00:00 2001 From: "Stephanie J. Spielman" Date: Thu, 12 Feb 2026 17:18:08 -0500 Subject: [PATCH 082/148] fix the bad merge --- scripts/render-live.sh | 6 ------ 1 file changed, 6 deletions(-) diff --git a/scripts/render-live.sh b/scripts/render-live.sh index 9188b287..fe0cd425 100644 --- a/scripts/render-live.sh +++ b/scripts/render-live.sh @@ -41,15 +41,9 @@ files=( # machine-learning/02-openpbta_consensus_clustering.Rmd # machine-learning/03-openpbta_PLIER.Rmd # machine-learning/04-openpbta_plot_LV.Rmd -<<<<<<< HEAD # pathway-analysis/01-overrepresentation_analysis.Rmd # TODO: Uncomment for https://github.com/AlexsLemonade/training-modules/issues/911 # pathway-analysis/02-gene_set_enrichment_analysis.Rmd # TODO: Uncomment for https://github.com/AlexsLemonade/training-modules/issues/911 # pathway-analysis/03-gene_set_variation_analysis.Rmd # TODO: Uncomment for https://github.com/AlexsLemonade/training-modules/issues/911 -======= - # pathway-analysis/01-overrepresentation_analysis.Rmd # TEMPORARY - # pathway-analysis/02-gene_set_enrichment_analysis.Rmd # TEMPORARY - # pathway-analysis/03-gene_set_variation_analysis.Rmd # TEMPORARY ->>>>>>> master ) for file in ${files[@]} do From b78715869bcf4084ae2d1e1bef1de4e5774689ab Mon Sep 17 00:00:00 2001 From: "Stephanie J. Spielman" Date: Fri, 13 Feb 2026 09:13:07 -0500 Subject: [PATCH 083/148] remove extra period --- scRNA-seq-advanced/05-aucell.Rmd | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scRNA-seq-advanced/05-aucell.Rmd b/scRNA-seq-advanced/05-aucell.Rmd index 94a46700..55d3891b 100644 --- a/scRNA-seq-advanced/05-aucell.Rmd +++ b/scRNA-seq-advanced/05-aucell.Rmd @@ -18,7 +18,7 @@ date: 2024 --- -In this notebook, we'll demonstrate how to use the `AUCell` method, introduced in [Aibar _et al_. 2017.](https://doi.org/10.1038/nmeth.4463). +In this notebook, we'll demonstrate how to use the `AUCell` method, introduced in [Aibar _et al_. 2017](https://doi.org/10.1038/nmeth.4463). We can use `AUCell` when we are interested in a gene set's relative expression or activity in an individual cell. Gene sets can come from a curated collection of prior knowledge, like the Hallmark collection we used in the last notebook, or we can use our own custom gene sets (e.g., a set of marker genes for a cell type of interest). From dcb48c55b5350e28e77bfb2bac6eb9be80e1ebfb Mon Sep 17 00:00:00 2001 From: "Stephanie J. Spielman" Date: Fri, 13 Feb 2026 09:20:35 -0500 Subject: [PATCH 084/148] update roadmap to close out #881 while I'm here --- .../diagrams/roadmap_multi_integrate.png | Bin 583210 -> 231841 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/scRNA-seq-advanced/diagrams/roadmap_multi_integrate.png b/scRNA-seq-advanced/diagrams/roadmap_multi_integrate.png index 6fc50c849f54c706d1a1e8830efba54303d25993..cc519690d720f480f148e77e471e90a7ac1460e4 100644 GIT binary patch literal 231841 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

    Z*<-dEuK?%-S}9!ybzkXTLeer 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

    !pKr#_=; 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∋P1CE~`3zePerN?r1zsQhmf$RO-(2_8F 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

    lKp|Xv^PJn>7K*`G&Vhxh~RB2XJKN<{S`K}`a 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μ4)D`X%~>r(H-EV4@?E(Hl3-`1UV5tZR)$o0pJBI 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 z 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

    4V3V_K5^!EFPKpFO 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 From b3733e38f933d341e13ba3d725400bf5eb316ffc Mon Sep 17 00:00:00 2001 From: "Stephanie J. Spielman" Date: Fri, 13 Feb 2026 09:21:34 -0500 Subject: [PATCH 085/148] all uncommented now --- scripts/render-live.sh | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/scripts/render-live.sh b/scripts/render-live.sh index 4149f84a..88c54a40 100644 --- a/scripts/render-live.sh +++ b/scripts/render-live.sh @@ -35,15 +35,15 @@ files=( scRNA-seq-advanced/01-read_filter_normalize_scRNA.Rmd scRNA-seq-advanced/02-dataset_integration.Rmd scRNA-seq-advanced/03-differential_expression.Rmd - # scRNA-seq-advanced/04-gene_set_enrichment_analysis.Rmd # TEMPORARY - # scRNA-seq-advanced/05-aucell.Rmd # TEMPORARY + scRNA-seq-advanced/04-gene_set_enrichment_analysis.Rmd + scRNA-seq-advanced/05-aucell.Rmd # machine-learning/01-openpbta_heatmap.Rmd # machine-learning/02-openpbta_consensus_clustering.Rmd # machine-learning/03-openpbta_PLIER.Rmd # machine-learning/04-openpbta_plot_LV.Rmd - # pathway-analysis/01-overrepresentation_analysis.Rmd # TEMPORARY - # pathway-analysis/02-gene_set_enrichment_analysis.Rmd # TEMPORARY - # pathway-analysis/03-gene_set_variation_analysis.Rmd # TEMPORARY + pathway-analysis/01-overrepresentation_analysis.Rmd + pathway-analysis/02-gene_set_enrichment_analysis.Rmd + pathway-analysis/03-gene_set_variation_analysis.Rmd ) for file in ${files[@]} do From 4ebbdd34ed408dac9a425e9dc54333c62f4d43f2 Mon Sep 17 00:00:00 2001 From: "Stephanie J. Spielman" Date: Fri, 13 Feb 2026 09:33:26 -0500 Subject: [PATCH 086/148] from #798, use dir_create and set a seed in gsea notebook --- pathway-analysis/01-overrepresentation_analysis.Rmd | 4 +--- pathway-analysis/02-gene_set_enrichment_analysis.Rmd | 8 +++++--- pathway-analysis/03-gene_set_variation_analysis.Rmd | 4 +--- 3 files changed, 7 insertions(+), 9 deletions(-) diff --git a/pathway-analysis/01-overrepresentation_analysis.Rmd b/pathway-analysis/01-overrepresentation_analysis.Rmd index 3320c676..cbf53b39 100644 --- a/pathway-analysis/01-overrepresentation_analysis.Rmd +++ b/pathway-analysis/01-overrepresentation_analysis.Rmd @@ -59,9 +59,7 @@ library(org.Mm.eg.db) # We'll create a directory to specifically hold the ORA results if it doesn't # exist yet results_dir <- file.path("results", "leukemia") -if (!dir.exists(results_dir)) { - dir.create(results_dir, recursive = TRUE) -} +fs::dir_create(results_dir) ``` #### Input files diff --git a/pathway-analysis/02-gene_set_enrichment_analysis.Rmd b/pathway-analysis/02-gene_set_enrichment_analysis.Rmd index a3781b74..7644bb9a 100644 --- a/pathway-analysis/02-gene_set_enrichment_analysis.Rmd +++ b/pathway-analysis/02-gene_set_enrichment_analysis.Rmd @@ -52,6 +52,10 @@ library(clusterProfiler) library(msigdbr) ``` +```{r set seed} +set.seed(2020) +``` + ### Directories and Files #### Directories @@ -63,9 +67,7 @@ input_dir <- file.path("..", "RNA-seq", "results", "NB-cell") # We will create a directory to specifically hold our GSEA results if it does # not yet exist output_dir <- file.path("results", "NB-cell") -if (!dir.exists(output_dir)) { - dir.create(output_dir, recursive = TRUE) -} +fs::dir_create(output_dir) ``` #### Input files diff --git a/pathway-analysis/03-gene_set_variation_analysis.Rmd b/pathway-analysis/03-gene_set_variation_analysis.Rmd index c697680f..6e8862c1 100644 --- a/pathway-analysis/03-gene_set_variation_analysis.Rmd +++ b/pathway-analysis/03-gene_set_variation_analysis.Rmd @@ -57,9 +57,7 @@ input_dir <- file.path("data", "open-pbta") # Create a directory specifically for the results using this dataset output_dir <- file.path("results", "open-pbta") -if (!dir.exists(output_dir)) { - dir.create(output_dir, recursive = TRUE) -} +fs::dir_create(output_dir) ``` #### Input From 28ed7a3046f5a21bfb5cbc5d8fb71ef84d84c3e7 Mon Sep 17 00:00:00 2001 From: "Stephanie J. Spielman" Date: Fri, 13 Feb 2026 09:34:46 -0500 Subject: [PATCH 087/148] woops this isnt stacked so need to comment out the other notebooks being PRd now --- scripts/render-live.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/scripts/render-live.sh b/scripts/render-live.sh index 88c54a40..2df6b7f8 100644 --- a/scripts/render-live.sh +++ b/scripts/render-live.sh @@ -35,8 +35,8 @@ files=( scRNA-seq-advanced/01-read_filter_normalize_scRNA.Rmd scRNA-seq-advanced/02-dataset_integration.Rmd scRNA-seq-advanced/03-differential_expression.Rmd - scRNA-seq-advanced/04-gene_set_enrichment_analysis.Rmd - scRNA-seq-advanced/05-aucell.Rmd + # scRNA-seq-advanced/04-gene_set_enrichment_analysis.Rmd # TEMPORARY + # scRNA-seq-advanced/05-aucell.Rmd # TEMPORARY # machine-learning/01-openpbta_heatmap.Rmd # machine-learning/02-openpbta_consensus_clustering.Rmd # machine-learning/03-openpbta_PLIER.Rmd From bbb1f295b71fda120a58be0dd2269ee896c72c90 Mon Sep 17 00:00:00 2001 From: "Stephanie J. Spielman" Date: Fri, 13 Feb 2026 09:56:55 -0500 Subject: [PATCH 088/148] separate coldata_joined variable to avoid bugs during instruction --- RNA-seq/02-gastric_cancer_tximeta.Rmd | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/RNA-seq/02-gastric_cancer_tximeta.Rmd b/RNA-seq/02-gastric_cancer_tximeta.Rmd index 0738a6c5..a8fe752e 100644 --- a/RNA-seq/02-gastric_cancer_tximeta.Rmd +++ b/RNA-seq/02-gastric_cancer_tximeta.Rmd @@ -120,24 +120,24 @@ sample_meta_df <- readr::read_tsv(meta_file) sample_meta_df ``` -We'll want this information to be added to the `coldata`, which we can do by using a join function to match up the rows between the two data frames and combine them. +We'll want this information to be added to the `coldata`, which we can do by using a join function to match up the rows between the two data frames and combine them to create a new data frame `coldata_joined`. ```{r join-sample_meta_df} -coldata <- coldata |> +coldata_joined <- coldata |> dplyr::inner_join(sample_meta_df, by = c("names" = "srr_accession")) -coldata +coldata_joined ``` ## Import expression data with `tximeta` -Using the `coldata` data frame that we set up, we can now run the `tximeta()` to import our expression data while automatically finding and associating the transcript annotations that were used when we performed the quantification. +Using the `coldata_joined` data frame that we set up, we can now run the `tximeta()` to import our expression data while automatically finding and associating the transcript annotations that were used when we performed the quantification. The first time you run `tximeta()` you may get a message about storing downloaded transcriptome data in a cache directory so that it can retrieve the data more quickly the next time. We recommend you use the cache, and accept the default location. ```{r tximeta, live = TRUE} -txi_data <- tximeta(coldata) +txi_data <- tximeta(coldata_joined) ``` *tximeta currently works easily for most human and mouse datasets, but requires a [few more steps for other species](https://bioconductor.org/packages/release/bioc/vignettes/tximeta/inst/doc/tximeta.html#What_if_checksum_isn%E2%80%99t_known). From 4a24421419b5b1c9216c5fa56e3bff027f92cff6 Mon Sep 17 00:00:00 2001 From: "Stephanie J. Spielman" Date: Fri, 13 Feb 2026 10:00:01 -0500 Subject: [PATCH 089/148] fix a couple spots where we have typos for sample ids --- RNA-seq/01-qc_trim_quant.Rmd | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/RNA-seq/01-qc_trim_quant.Rmd b/RNA-seq/01-qc_trim_quant.Rmd index aa6ca7ac..1c26b528 100644 --- a/RNA-seq/01-qc_trim_quant.Rmd +++ b/RNA-seq/01-qc_trim_quant.Rmd @@ -112,7 +112,7 @@ The `-o` flag allows us to specify where the output of FastQC is saved. Note that this is saved in a separate place than the raw data files and in a directory specifically for quality control information. For comparison to the report for `SRR585570_1.fastq.gz` we generate with our script, we've prepared a FastQC report for one of the sets of reads for another sample in the experiment. -It can be found at `QC/gastric-cancer/fastqc/SRR585574/SRR585574_1_fastqc.html`. +It can be found at `QC/gastric-cancer/fastqc/SRR585571/SRR585571_1_fastqc.html`. **Let's look at the reports for both samples.** @@ -285,5 +285,5 @@ The `--threads` argument controls the number of threads that are available to Sa This in essence controls how much of the mapping can occur in parallel. If you had access to a computer with many cores, you could increase the number of threads to make quantification go faster. -**Navigate to** `data/gastric-cancer/salmon_quant/SRR585571/aux_info` **and open** `meta_info.json`**. +**Navigate to** `data/gastric-cancer/salmon_quant/SRR585570/aux_info` **and open** `meta_info.json`**. Look for a field called** `percent_mapped` **-- what value does this sample have?** From 29bf2712bfdf0fbae6da6742322d2a48706f075a Mon Sep 17 00:00:00 2001 From: "Stephanie J. Spielman" Date: Fri, 13 Feb 2026 10:07:03 -0500 Subject: [PATCH 090/148] get the other data frame naming in ORA --- pathway-analysis/01-overrepresentation_analysis.Rmd | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pathway-analysis/01-overrepresentation_analysis.Rmd b/pathway-analysis/01-overrepresentation_analysis.Rmd index cbf53b39..afc79f52 100644 --- a/pathway-analysis/01-overrepresentation_analysis.Rmd +++ b/pathway-analysis/01-overrepresentation_analysis.Rmd @@ -231,7 +231,7 @@ This will also drop genes that have an Ensembl gene identifier but no gene symbo ```{r complete_cases} # Remove rows that are not complete (e.g., contain NAs) by filtering to only # complete rows -vs_low_df <- vs_low_df |> +vs_low_complete_df <- vs_low_df |> tidyr::drop_na() ``` @@ -295,7 +295,7 @@ We'll start with the high stem cell capacity vs. low stem cell capacity populati Genes with positive log2 fold-changes (LFC) will be more highly expressed in the high stem cell capacity cells based on how we set up the analysis. ```{r high_capacity_genes} -vs_low_genes <- vs_low_df |> +vs_low_genes <- vs_low_complete_df |> # Filter to the positive LFC and filter based on significance too (padj) dplyr::filter( log2FoldChange > 0, @@ -345,7 +345,7 @@ We can use another function for set operations, `intersect()`, to get our backgr # intersect() will return the genes in both sets - we are using the entire data # frame here (complete cases), not just the significant genes background_set <- intersect( - vs_low_df$gene_symbol, + vs_low_complete_df$gene_symbol, vs_unsorted_df$gene_symbol ) From fa3f2546053c6542ee2b8fc46e153ae9090ee67c Mon Sep 17 00:00:00 2001 From: "Stephanie J. Spielman" Date: Fri, 13 Feb 2026 10:13:01 -0500 Subject: [PATCH 091/148] update the salmon link since the note of interest is just above the linked section --- RNA-seq/01-qc_trim_quant.Rmd | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/RNA-seq/01-qc_trim_quant.Rmd b/RNA-seq/01-qc_trim_quant.Rmd index 1c26b528..1e6e7ed2 100644 --- a/RNA-seq/01-qc_trim_quant.Rmd +++ b/RNA-seq/01-qc_trim_quant.Rmd @@ -247,7 +247,7 @@ The index we used was built with `-k 23` and can be found here: index/Homo_sapiens/short_index ``` -Using a smaller value for _k_ than the default (_k_ = 31) is appropriate for shorter reads and may improve sensitivity when using `--validateMappings` according to the [Salmon documentation](https://salmon.readthedocs.io/en/latest/salmon.html#preparing-transcriptome-indices-mapping-based-mode). +Using a smaller value for _k_ than the default (_k_ = 31) is appropriate for shorter reads and may improve sensitivity when using `--validateMappings` according to the [Salmon documentation](https://salmon.readthedocs.io/en/latest/salmon.html#salmon). #### `-l` From 56daea98883fb22cff54ca7438eeba8b29734624 Mon Sep 17 00:00:00 2001 From: "Stephanie J. Spielman" Date: Fri, 13 Feb 2026 10:47:05 -0500 Subject: [PATCH 092/148] all notebooks can run through ci now --- scripts/render-live.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/scripts/render-live.sh b/scripts/render-live.sh index 2df6b7f8..88c54a40 100644 --- a/scripts/render-live.sh +++ b/scripts/render-live.sh @@ -35,8 +35,8 @@ files=( scRNA-seq-advanced/01-read_filter_normalize_scRNA.Rmd scRNA-seq-advanced/02-dataset_integration.Rmd scRNA-seq-advanced/03-differential_expression.Rmd - # scRNA-seq-advanced/04-gene_set_enrichment_analysis.Rmd # TEMPORARY - # scRNA-seq-advanced/05-aucell.Rmd # TEMPORARY + scRNA-seq-advanced/04-gene_set_enrichment_analysis.Rmd + scRNA-seq-advanced/05-aucell.Rmd # machine-learning/01-openpbta_heatmap.Rmd # machine-learning/02-openpbta_consensus_clustering.Rmd # machine-learning/03-openpbta_PLIER.Rmd From ae6159ff9b7b82260569088a4d413c4f71b5cb12 Mon Sep 17 00:00:00 2001 From: Joshua Shapiro Date: Sun, 15 Feb 2026 13:54:44 -0500 Subject: [PATCH 093/148] Clear space and render in docker container --- .github/workflows/render-rmds.yml | 32 +++++++++++++++++++++---------- 1 file changed, 22 insertions(+), 10 deletions(-) diff --git a/.github/workflows/render-rmds.yml b/.github/workflows/render-rmds.yml index 3b3cd56c..83e66e62 100644 --- a/.github/workflows/render-rmds.yml +++ b/.github/workflows/render-rmds.yml @@ -6,20 +6,27 @@ on: branches: - master paths: - - '**.Rmd' - - '!**-live.Rmd' # don't trigger for live-only changes - - '!**/exercise*.Rmd' # or exercise notebooks - - '!**/setup/**.Rmd' # or setup notebooks - - 'scripts/make-live.R' - - 'scripts/render-live.sh' + - ".github/workflows/render-rmds.yml" + - "**.Rmd" + - "!**-live.Rmd" # don't trigger for live-only changes + - "!**/exercise*.Rmd" # or exercise notebooks + - "!**/setup/**.Rmd" # or setup notebooks + - "scripts/make-live.R" + - "scripts/render-live.sh" jobs: test-render: runs-on: ubuntu-latest - container: - image: ccdl/training_rstudio:edge steps: + - name: Free disk space + run: | + sudo rm -rf /usr/local/lib/android + sudo rm -rf /usr/share/dotnet + sudo rm -rf /opt/ghc + sudo rm -rf /usr/local/share/boost + sudo rm -rf "$AGENT_TOOLSDIRECTORY" + - name: Checkout code uses: actions/checkout@v4 @@ -38,6 +45,11 @@ jobs: run: | aws s3 sync s3://ccdl-training-data/training-modules/ . - - name: Render notebooks - run: bash scripts/render-live.sh + run: | + docker run --rm \ + -v "$GITHUB_WORKSPACE":"$GITHUB_WORKSPACE" \ + -w "$GITHUB_WORKSPACE" \ + --user "$(id -u):$(id -g)" \ + ccdl/training_rstudio:edge \ + bash scripts/render-live.sh From 5baa9a0b5e34dd902db9b5bbc9eb7add2eec66a9 Mon Sep 17 00:00:00 2001 From: Joshua Shapiro Date: Sun, 15 Feb 2026 13:55:38 -0500 Subject: [PATCH 094/148] Update make-live workflow --- .github/workflows/make-live.yml | 25 ++++++++++++++++--------- 1 file changed, 16 insertions(+), 9 deletions(-) diff --git a/.github/workflows/make-live.yml b/.github/workflows/make-live.yml index d10d0a2c..19129401 100644 --- a/.github/workflows/make-live.yml +++ b/.github/workflows/make-live.yml @@ -14,20 +14,20 @@ jobs: make-live: # The type of runner that the job will run on runs-on: ubuntu-latest - container: - image: ccdl/training_rstudio:edge steps: + - name: Free disk space + run: | + sudo rm -rf /usr/local/lib/android + sudo rm -rf /usr/share/dotnet + sudo rm -rf /opt/ghc + sudo rm -rf /usr/local/share/boost + sudo rm -rf "$AGENT_TOOLSDIRECTORY" + # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it - name: Checkout code uses: actions/checkout@v4 - - name: Configure git - run: | - git config --global --add safe.directory "$GITHUB_WORKSPACE" - git config --local user.email "actions@github.com" - git config --local user.name "GitHub Actions" - - name: Load 1Password secrets uses: 1password/load-secrets-action@v2 with: @@ -48,7 +48,14 @@ jobs: - name: Render notebooks env: RENDER_RMD: ${{ github.event.inputs.rendering }} - run: bash scripts/render-live.sh + run: | + docker run --rm \ + -v "$GITHUB_WORKSPACE":"$GITHUB_WORKSPACE" \ + -w "$GITHUB_WORKSPACE" \ + -e RENDER_RMD \ + --user "$(id -u):$(id -g)" \ + ccdl/training_rstudio:edge \ + bash scripts/render-live.sh # Make changes to pull request here - name: Create PR with rendered notebooks From 4bfdc2642585520579a5605c8c2174d019c75efe Mon Sep 17 00:00:00 2001 From: "Stephanie J. Spielman" Date: Tue, 17 Feb 2026 09:29:05 -0500 Subject: [PATCH 095/148] update 01 tidyverse notebook to use built-in penguins --- intro-to-R-tidyverse/01-intro_to_base_R.Rmd | 24 +++++++++------------ 1 file changed, 10 insertions(+), 14 deletions(-) diff --git a/intro-to-R-tidyverse/01-intro_to_base_R.Rmd b/intro-to-R-tidyverse/01-intro_to_base_R.Rmd index 79a9ec9d..34b9214e 100644 --- a/intro-to-R-tidyverse/01-intro_to_base_R.Rmd +++ b/intro-to-R-tidyverse/01-intro_to_base_R.Rmd @@ -418,13 +418,9 @@ question_values %in% values_1_to_20 _Data frames are one of the most useful tools for data analysis in R._ They are tables which consist of rows and columns, much like a _spreadsheet_. Each column is a variable which behaves as a _vector_, and each row is an observation. -We will begin our exploration with dataset of measurements from three penguin species measured, which we can find in the [`palmerpenguins` package](https://allisonhorst.github.io/palmerpenguins/). -We'll talk more about packages soon! -To use this dataset, we will load it from the `palmerpenguins` package using a `::` (more on this later) and assign it to a variable named `penguins` in our current environment. - -```{r penguin-library} -penguins <- palmerpenguins::penguins -``` +We will begin our exploration with dataset of measurements from three penguin species measured using the built-in R dataset `penguins`. +(By the way, this dataset was added as a built-in dataset to R version `4.5.0`! +Previously, it was only available via the [`palmerpenguins` package](https://allisonhorst.github.io/palmerpenguins/) - we'll talk more about packages soon!) ![drawings of penguin species](diagrams/lter_penguins.png) Artwork by [@allison_horst](https://twitter.com/allison_horst) @@ -462,26 +458,26 @@ We might want to explore individual columns of the data frame more in-depth. We can examine individual columns using the dollar sign `$` to select one by name: ```{r penguins-subset} -# Extract bill_length_mm as a vector -penguins$bill_length_mm +# Extract bill_len as a vector +penguins$bill_len # indexing operators can be used on these vectors too -penguins$bill_length_mm[1:10] +penguins$bill_len[1:10] ``` We can perform our regular vector operations on columns directly. ```{r penguins-col-mean, live = TRUE} -# calculate the mean of the bill_length_mm column -mean(penguins$bill_length_mm, +# calculate the mean of the bill_len column +mean(penguins$bill_len, na.rm = TRUE) # remove missing values before calculating the mean ``` We can also calculate the full summary statistics for a single column directly. ```{r penguins-col-summary, live = TRUE} -# show a summary of the bill_length_mm column -summary(penguins$bill_length_mm) +# show a summary of the bill_len column +summary(penguins$bill_len) ``` Extract `species` as a vector and subset it to see a preview. From 10cf1f5cfce90f39e4e425b4ab8f3c7ff5625ab1 Mon Sep 17 00:00:00 2001 From: "Stephanie J. Spielman" Date: Tue, 17 Feb 2026 09:32:20 -0500 Subject: [PATCH 096/148] remove palmerpenguins from renv --- renv.lock | 31 ------------------------------- 1 file changed, 31 deletions(-) diff --git a/renv.lock b/renv.lock index 84ca3465..09bc1ada 100644 --- a/renv.lock +++ b/renv.lock @@ -10734,37 +10734,6 @@ "Maintainer": "Gábor Csárdi ", "Repository": "CRAN" }, - "palmerpenguins": { - "Package": "palmerpenguins", - "Version": "0.1.1", - "Source": "Repository", - "Title": "Palmer Archipelago (Antarctica) Penguin Data", - "Date": "2022-08-12", - "Authors@R": "c( person(given = \"Allison\", family = \"Horst\", role = c(\"aut\", \"cre\"), email = \"ahorst@ucsb.edu\", comment = c(ORCID = \"0000-0002-6047-5564\")), person(given = \"Alison\", family = \"Hill\", role = c(\"aut\"), email = \"apresstats@gmail.com\", comment = c(ORCID = \"0000-0002-8082-1890\")), person(given = \"Kristen\", family = \"Gorman\", role = c(\"aut\"), email = \"kbgorman@alaska.edu\", comment = c(ORCID = \"0000-0002-0258-9264\")) )", - "Description": "Size measurements, clutch observations, and blood isotope ratios for adult foraging Adélie, Chinstrap, and Gentoo penguins observed on islands in the Palmer Archipelago near Palmer Station, Antarctica. Data were collected and made available by Dr. Kristen Gorman and the Palmer Station Long Term Ecological Research (LTER) Program.", - "License": "CC0", - "Encoding": "UTF-8", - "LazyData": "true", - "RoxygenNote": "7.2.1.9000", - "Depends": [ - "R (>= 2.10)" - ], - "Suggests": [ - "knitr", - "rmarkdown", - "tibble", - "ggplot2", - "dplyr", - "tidyr", - "recipes" - ], - "URL": "https://allisonhorst.github.io/palmerpenguins/, https://github.com/allisonhorst/palmerpenguins", - "BugReports": "https://github.com/allisonhorst/palmerpenguins/issues", - "NeedsCompilation": "no", - "Author": "Allison Horst [aut, cre] (), Alison Hill [aut] (), Kristen Gorman [aut] ()", - "Maintainer": "Allison Horst ", - "Repository": "CRAN" - }, "patchwork": { "Package": "patchwork", "Version": "1.3.2", From 75218e26a53074abd48f38b0391afe7e8a2a9c34 Mon Sep 17 00:00:00 2001 From: "Stephanie J. Spielman" Date: Tue, 17 Feb 2026 09:40:25 -0500 Subject: [PATCH 097/148] spacing and use :: all around --- .../03-intro_to_tidyverse.Rmd | 88 +++++++++++-------- 1 file changed, 49 insertions(+), 39 deletions(-) diff --git a/intro-to-R-tidyverse/03-intro_to_tidyverse.Rmd b/intro-to-R-tidyverse/03-intro_to_tidyverse.Rmd index b3d3d915..87dd41d4 100644 --- a/intro-to-R-tidyverse/03-intro_to_tidyverse.Rmd +++ b/intro-to-R-tidyverse/03-intro_to_tidyverse.Rmd @@ -52,7 +52,7 @@ library(tidyverse) Note that if we had not imported the tidyverse set of packages using `library()` like above, and we wanted to use a tidyverse function like `read_tsv()`, we would need to tell R what package to find this function in. To do this, we would use `::` to tell R to load in this function from the `readr` package by using `readr::read_tsv()`. You will see this `::` method of referencing libraries within packages throughout the course. -We like to use it in part to remove any ambiguity in which version of a function we are using; it is not too uncommon for different packages to use the same name for very different functions! +We like to use it in part to remove any ambiguity in which version of a function we are using, even if the package was imported; it is not too uncommon for different packages to use the same name for very different functions! ## Managing directories @@ -92,6 +92,7 @@ But we've also seen that this function will throw an error if you try to create A different option is to use the [`fs`](https://fs.r-lib.org/) package, which provides functions for you to interact with your computer's file system with a more consistent behavior than the base R functions. One function from this package is `fs::dir_create()` (note that it has an _underscore_, not a period), and much like the base R `dir.create()`, it creates directories. It has some other helpful features too: + - It will simply do nothing if that directory already exists; no errors, and nothing will get overwritten - It allows creating _nested_ directories by default, i.e. in one call make directories inside of other directories @@ -142,16 +143,15 @@ data_dir <- "data" ``` Although base R has functions to read in data files, the functions in the `readr` package (part of the tidyverse) are faster and more straightforward to use so we are going to use those here. -Because the file we are reading in is a TSV (tab separated values) file we will be using the `read_tsv` function. -There are analogous functions for CSV (comma separated values) files (`read_csv()`) and other files types. +Because the file we are reading in is a TSV (tab separated values) file we will be using the `readr::read_tsv` function. +There are analogous functions for CSV (comma separated values) files (`readr::read_csv()`) and other files types. ## Read in the differential expression analysis results file ```{r read-results} stats_df <- readr::read_tsv( - file.path(data_dir, - "gene_results_GSE44971.tsv") - ) + file.path(data_dir, "gene_results_GSE44971.tsv") +) ``` Following the template of the previous chunk, use this chunk to read in the file `GSE44971.tsv` that is in the `data` folder and save it in the variable `gene_df`. @@ -159,9 +159,8 @@ Following the template of the previous chunk, use this chunk to read in the file ```{r read-expr, live = TRUE} # Use this chunk to read in data from the file `GSE44971.tsv` gene_df <- readr::read_tsv( - file.path(data_dir, - "GSE44971.tsv") - ) + file.path(data_dir, "GSE44971.tsv") +) ``` Use this chunk to explore what `gene_df` looks like. @@ -182,16 +181,18 @@ _Note:_ If you are using a version of `R` prior to 4.1 (or looking at older code That pipe was the inspiration for the native R pipe we are using here. While there are some minor differences, you can mostly treat them interchangeably as long as you load the `magrittr` package or `dplyr`, which also loads that version of the pipe. -For example, the output from this: +We'll being our journey into pipes using some core functions from the `dplyr` package (a core tidyverse package that offers _pliers_ for your _d_ata). + +As our first example, the output from this: ```{r filter} -filter(stats_df, contrast == "male_female") +dplyr::filter(stats_df, contrast == "male_female") ``` ...is the same as the output from this: ```{r filter-pipe} -stats_df |> filter(contrast == "male_female") +stats_df |> dplyr::filter(contrast == "male_female") ``` This can make your code cleaner and easier to follow a series of related commands. @@ -200,9 +201,9 @@ Let's look at an example with our stats of of how the same functions look with o *Example 1:* without pipes: ```{r steps-nopipe} -stats_arranged <- arrange(stats_df, t_statistic) -stats_filtered <- filter(stats_arranged, avg_expression > 50) -stats_nopipe <- select(stats_filtered, contrast, log_fold_change, p_value) +stats_arranged <- dplyr::arrange(stats_df, t_statistic) +stats_filtered <- dplyr::filter(stats_arranged, avg_expression > 50) +stats_nopipe <- dplyr::select(stats_filtered, contrast, log_fold_change, p_value) ``` UGH, we have to keep track of all of those different intermediate data frames and type their names so many times here! @@ -213,15 +214,15 @@ It's annoying and makes it harder for people to read. ```{r steps-pipe, live = TRUE} # Example of the same modifications as above but with pipes! -stats_pipe <- stats_df |> - arrange(t_statistic) |> - filter(avg_expression > 50) |> - select(contrast, log_fold_change, p_value) +stats_pipe <- stats_df |> + dplyr::arrange(t_statistic) |> + dplyr::filter(avg_expression > 50) |> + dplyr::select(contrast, log_fold_change, p_value) ``` What the `|>` (pipe) is doing here is feeding the result of the expression on its left into the first argument of the next function (to its right, or on the next line here). We can then skip that first argument (the data in these cases), and move right on to the part we care about at that step: what we are arranging, filtering, or selecting in this case. -The key insight that makes the pipe work here is to recognize that each of these functions (`arrange`, `filter`, and `select`) are fundamental `dplyr` (a tidyverse package) functions which work as "data in, data out." +The key insight that makes the pipe work here is to recognize that each of these functions (`dplyr::arrange`, `dplyr::filter`, and `dplyr::select`) are fundamental `dplyr` functions which work as "data in, data out." In other words, these functions operate on data frames, and return data frames; you give them a data frame, and they give you back a data frame. Because these functions all follow a "data in, data out" framework, we can chain them together with pipe and send data all the way through the...pipeline! @@ -239,12 +240,12 @@ Now that hopefully you are convinced that the tidyverse can help you make your c ## Common tidyverse functions Let's say we wanted to filter this gene expression dataset to particular sample groups. -In order to do this, we would use the function `filter()` as well as a logic statement (usually one that refers to a column or columns in the data frame). +In order to do this, we would use the function `dplyr::filter()` as well as a logic statement (usually one that refers to a column or columns in the data frame). ```{r filter-gene} # Here let's filter stats_df to only keep the gene_symbol "SNCA" stats_df |> - filter(gene_symbol == "SNCA") + dplyr::filter(gene_symbol == "SNCA") ``` We can use `filter()` similarly for numeric statements. @@ -252,7 +253,7 @@ We can use `filter()` similarly for numeric statements. ```{r filter-numeric, live = TRUE} # Here let's filter the data to rows with average expression values above 50 stats_df |> - filter(avg_expression > 50) + dplyr::filter(avg_expression > 50) ``` We can apply multiple filters at once, which will require all of them to be satisfied for every row in the results: @@ -260,8 +261,10 @@ We can apply multiple filters at once, which will require all of them to be sati ```{r filter-2, live = TRUE} # filter to highly expressed genes with contrast "male_female" stats_df |> - filter(contrast == "male_female", - avg_expression > 50) + dplyr::filter( + contrast == "male_female", + avg_expression > 50 + ) ``` When we are filtering, the `%in%` operator can come in handy if we have multiple items we would like to match. @@ -278,7 +281,7 @@ stats_df$gene_symbol %in% genes_of_interest ```{r filter-in, live = TRUE} # filter to keep only genes of interest stats_df |> - filter(gene_symbol %in% c("SNCA", "CDKN1A")) + dplyr::filter(gene_symbol %in% c("SNCA", "CDKN1A")) ``` Let's return to our first `filter()` and build on to it. @@ -290,9 +293,11 @@ Let's also save this as a new data frame called `stats_filtered_df`. # filter to highly expressed "male_female" # and select gene_symbol, log_fold_change and t_statistic stats_filtered_df <- stats_df |> - filter(contrast == "male_female", - avg_expression > 50) |> - select(log_fold_change, t_statistic) + dplyr::filter( + contrast == "male_female", + avg_expression > 50 + ) |> + dplyr::select(log_fold_change, t_statistic) ``` Let's say we wanted to arrange this dataset so that the genes are arranged by the smallest p values to the largest. @@ -300,7 +305,7 @@ In order to do this, we would use the function `arrange()` as well as the column ```{r arrange} stats_df |> - arrange(p_value) + dplyr::arrange(p_value) ``` What if we want to sort from largest to smallest? @@ -310,15 +315,15 @@ We can use the same function, but instead use the `desc()` function and now we a ```{r arrange-desc} # arrange descending by avg_expression stats_df |> - arrange(desc(avg_expression)) + dplyr::arrange(desc(avg_expression)) ``` What if we would like to create a new column of values? -For that we use `mutate()` function. +For that we use `dplyr::mutate()` function. ```{r mutate} stats_df |> - mutate(log10_p_value = -log10(p_value)) + dplyr::mutate(log10_p_value = -log10(p_value)) ``` What if we want to obtain summary statistics for a column or columns? @@ -327,8 +332,11 @@ Here we will use summarize to calculate two summary statistics of log-fold chang ```{r summarize} stats_df |> - summarize(mean(log_fold_change), - sd(log_fold_change)) + dplyr::summarize( + # name the columns mean_lfc an sd_lfc + mean_lfc = mean(log_fold_change), + sd_lfc = sd(log_fold_change) + ) ``` What if we'd like to obtain a summary statistics but have them for various groups? @@ -337,9 +345,11 @@ Also note that `group_by()` allows us to group by multiple variables at a time i ```{r summarize-groups, live = TRUE} stats_summary_df <- stats_df |> - group_by(contrast) |> - summarize(mean(log_fold_change), - sd(log_fold_change)) + dplyr::group_by(contrast) |> + dplyr::summarize( + mean_lfc = mean(log_fold_change), + sd_lfc = sd(log_fold_change) + ) ``` Let's look at a preview of what we made: @@ -454,7 +464,7 @@ In this case we want to match the gene information between the two, so we will s stats_df |> # Join based on their shared column # Called ensembl_id in stats_df and called Gene in gene_df - inner_join(gene_df, by = c('ensembl_id' = 'Gene')) + dplyr::inner_join(gene_df, by = c('ensembl_id' = 'Gene')) ``` ## Save data to files From fa24aeff3c7cb11b66040f774d09096f1ca9841c Mon Sep 17 00:00:00 2001 From: "Stephanie J. Spielman" Date: Tue, 17 Feb 2026 09:42:01 -0500 Subject: [PATCH 098/148] add sentence --- intro-to-R-tidyverse/03-intro_to_tidyverse.Rmd | 1 + 1 file changed, 1 insertion(+) diff --git a/intro-to-R-tidyverse/03-intro_to_tidyverse.Rmd b/intro-to-R-tidyverse/03-intro_to_tidyverse.Rmd index 87dd41d4..3aebe8c3 100644 --- a/intro-to-R-tidyverse/03-intro_to_tidyverse.Rmd +++ b/intro-to-R-tidyverse/03-intro_to_tidyverse.Rmd @@ -53,6 +53,7 @@ Note that if we had not imported the tidyverse set of packages using `library()` To do this, we would use `::` to tell R to load in this function from the `readr` package by using `readr::read_tsv()`. You will see this `::` method of referencing libraries within packages throughout the course. We like to use it in part to remove any ambiguity in which version of a function we are using, even if the package was imported; it is not too uncommon for different packages to use the same name for very different functions! +We'll use `::` syntax for external functions throughout this notebook. ## Managing directories From ba2499badb7751f38d5abe611e84f9b69177f09b Mon Sep 17 00:00:00 2001 From: "Stephanie J. Spielman" Date: Tue, 17 Feb 2026 09:42:23 -0500 Subject: [PATCH 099/148] get rid of socviz link and add ggplot2 book --- intro-to-R-tidyverse/02-intro_to_ggplot2.Rmd | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/intro-to-R-tidyverse/02-intro_to_ggplot2.Rmd b/intro-to-R-tidyverse/02-intro_to_ggplot2.Rmd index fbbd2ae0..0cb33754 100644 --- a/intro-to-R-tidyverse/02-intro_to_ggplot2.Rmd +++ b/intro-to-R-tidyverse/02-intro_to_ggplot2.Rmd @@ -32,8 +32,8 @@ We performed three sets of contrasts: **More ggplot2 resources:** - [ggplot2 website](https://ggplot2.tidyverse.org/) +- [ggplot2 book](https://ggplot2-book.org/) - [Handy cheatsheet for ggplot2 (pdf)](https://github.com/rstudio/cheatsheets/raw/main/data-visualization.pdf) -- [_Data Visualization, A practical introduction_](https://socviz.co/) - [Data visualization chapter of _R for Data Science_](https://r4ds.hadley.nz/data-visualize.html) - [ggplot2 online tutorial](http://r-statistics.co/Complete-Ggplot2-Tutorial-Part1-With-R-Code.html) From 75829ed4a6afd13a62a7c6f29ba7d7fdf38147ca Mon Sep 17 00:00:00 2001 From: "Stephanie J. Spielman" Date: Tue, 17 Feb 2026 09:43:42 -0500 Subject: [PATCH 100/148] add sentence to save to variable --- intro-to-R-tidyverse/03-intro_to_tidyverse.Rmd | 2 ++ 1 file changed, 2 insertions(+) diff --git a/intro-to-R-tidyverse/03-intro_to_tidyverse.Rmd b/intro-to-R-tidyverse/03-intro_to_tidyverse.Rmd index 3aebe8c3..baa44bed 100644 --- a/intro-to-R-tidyverse/03-intro_to_tidyverse.Rmd +++ b/intro-to-R-tidyverse/03-intro_to_tidyverse.Rmd @@ -344,6 +344,8 @@ What if we'd like to obtain a summary statistics but have them for various group Conveniently named, there's a function called `group_by()` that seamlessly allows us to do this. Also note that `group_by()` allows us to group by multiple variables at a time if you want to. +We'll use this function to create a grouped summary data frame and save it to a variable `stats_summary_df`. + ```{r summarize-groups, live = TRUE} stats_summary_df <- stats_df |> dplyr::group_by(contrast) |> From a6ecff6f21ed2e19c4a40e7b76103dbeb9349c24 Mon Sep 17 00:00:00 2001 From: "Stephanie J. Spielman" Date: Tue, 17 Feb 2026 10:46:53 -0500 Subject: [PATCH 101/148] Update pathway-analysis/02-gene_set_enrichment_analysis.Rmd Co-authored-by: Joshua Shapiro --- pathway-analysis/02-gene_set_enrichment_analysis.Rmd | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/pathway-analysis/02-gene_set_enrichment_analysis.Rmd b/pathway-analysis/02-gene_set_enrichment_analysis.Rmd index 7644bb9a..1d6dd544 100644 --- a/pathway-analysis/02-gene_set_enrichment_analysis.Rmd +++ b/pathway-analysis/02-gene_set_enrichment_analysis.Rmd @@ -248,9 +248,12 @@ gsea_results <- GSEA( maxGSSize = 500, # maximum gene set set pvalueCutoff = 0.05, pAdjustMethod = "BH", # correction for multiple hypothesis testing - TERM2GENE = dplyr::select(hs_hallmark_df, - gs_name, - gene_symbol)) + TERM2GENE = dplyr::select( + hs_hallmark_df, + gs_name, + gene_symbol + ) +) ``` The warning about ties means that there are multiple genes that have the same log2 fold change value. From bcc8f145281881ec550da2cf30192b45bbc119ba Mon Sep 17 00:00:00 2001 From: "Stephanie J. Spielman" Date: Tue, 17 Feb 2026 11:31:11 -0500 Subject: [PATCH 102/148] add core spatial packages and their deps to renv --- renv.lock | 724 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 724 insertions(+) diff --git a/renv.lock b/renv.lock index 84ca3465..31cff46b 100644 --- a/renv.lock +++ b/renv.lock @@ -3675,6 +3675,59 @@ "Author": "Dario Righelli [aut, cre] (ORCID: ), Davide Risso [aut] (ORCID: ), Helena L. Crowell [aut] (ORCID: ), Lukas M. Weber [aut] (ORCID: ), Nicholas J. Eagles [ctb]", "Maintainer": "Dario Righelli " }, + "SpotSweeper": { + "Package": "SpotSweeper", + "Version": "1.6.0", + "Source": "Bioconductor", + "Title": "Spatially-aware quality control for spatial transcriptomics", + "Date": "2025-10-14", + "Authors@R": "c( person(\"Michael\", \"Totty\", ,\"mictott@gmail.com\", role = c(\"aut\", \"cre\"), comment = c(ORCID = \"0000-0002-9292-8556\")), person(\"Stephanie\", \"Hicks\", ,email = \"shicks19@jhu.edu\", role = c(\"aut\"), comment = c(ORCID = \"0000-0002-7858-0231\")), person(\"Boyi\", \"Guo\", ,email = \"boyi.guo.work@gmail.com\", role = c(\"aut\"), comment = c(ORCID = \"0000-0003-2950-2349\")))", + "Description": "Spatially-aware quality control (QC) software for both spot-level and artifact-level QC in spot-based spatial transcripomics, such as 10x Visium. These methods calculate local (nearest-neighbors) mean and variance of standard QC metrics (library size, unique genes, and mitochondrial percentage) to identify outliers spot and large technical artifacts.", + "License": "MIT + file LICENSE", + "URL": "https://github.com/MicTott/SpotSweeper", + "BugReports": "https://support.bioconductor.org/tag/SpotSweeper", + "biocViews": "Software, Spatial, Transcriptomics, QualityControl, GeneExpression,", + "Encoding": "UTF-8", + "Roxygen": "list(markdown = TRUE)", + "RoxygenNote": "7.3.1", + "Depends": [ + "R (>= 4.4.0)" + ], + "Imports": [ + "SpatialExperiment", + "SummarizedExperiment", + "BiocNeighbors", + "SingleCellExperiment", + "stats", + "escheR", + "MASS", + "ggplot2", + "spatialEco", + "grDevices", + "BiocParallel" + ], + "Suggests": [ + "knitr", + "BiocStyle", + "rmarkdown", + "scuttle", + "STexampleData", + "ggpubr", + "testthat (>= 3.0.0)" + ], + "Config/testthat/edition": "3", + "VignetteBuilder": "knitr", + "LazyData": "False", + "News": "NEWS.md", + "git_url": "https://git.bioconductor.org/packages/SpotSweeper", + "git_branch": "RELEASE_3_22", + "git_last_commit": "2a9e4a7", + "git_last_commit_date": "2025-10-29", + "Repository": "Bioconductor 3.22", + "NeedsCompilation": "no", + "Author": "Michael Totty [aut, cre] (ORCID: ), Stephanie Hicks [aut] (ORCID: ), Boyi Guo [aut] (ORCID: )", + "Maintainer": "Michael Totty " + }, "SummarizedExperiment": { "Package": "SummarizedExperiment", "Version": "1.40.0", @@ -3736,6 +3789,65 @@ "Author": "Martin Morgan [aut], Valerie Obenchain [aut], Jim Hester [aut], Hervé Pagès [aut, cre]", "Maintainer": "Hervé Pagès " }, + "TENxIO": { + "Package": "TENxIO", + "Version": "1.12.1", + "Source": "Bioconductor", + "Type": "Package", + "Title": "Import methods for 10X Genomics files", + "Authors@R": "person( \"Marcel\", \"Ramos\", , \"marcel.ramos@sph.cuny.edu\", c(\"aut\", \"cre\"), c(ORCID = \"0000-0002-3242-0582\") )", + "Depends": [ + "R (>= 4.5.0)", + "SingleCellExperiment", + "SummarizedExperiment" + ], + "Imports": [ + "BiocBaseUtils", + "BiocGenerics", + "BiocIO", + "Seqinfo", + "GenomicRanges", + "HDF5Array", + "Matrix", + "MatrixGenerics", + "methods", + "RCurl", + "readr", + "rhdf5", + "R.utils", + "S4Vectors", + "utils" + ], + "Suggests": [ + "BiocStyle", + "DropletTestFiles", + "ExperimentHub", + "knitr", + "RaggedExperiment (>= 1.33.3)", + "rmarkdown", + "Rsamtools", + "tinytest" + ], + "Description": "Provides a structured S4 approach to importing data files from the 10X pipelines. It mainly supports Single Cell Multiome ATAC + Gene Expression data among other data types. The main Bioconductor data representations used are SingleCellExperiment and RaggedExperiment.", + "biocViews": "Software, Infrastructure, DataImport, SingleCell", + "VignetteBuilder": "knitr", + "License": "Artistic-2.0", + "Encoding": "UTF-8", + "Roxygen": "list(markdown = TRUE)", + "RoxygenNote": "7.3.2", + "BugReports": "https://github.com/waldronlab/TENxIO/issues", + "URL": "https://github.com/waldronlab/TENxIO", + "Collate": "'TENxFile-class.R' 'TENxFileList-class.R' 'TENxFragments-class.R' 'TENxH5-class.R' 'TENxIO-package.R' 'TENxMTX-class.R' 'TENxPeaks-class.R' 'TENxTSV-class.R' 'utils.R'", + "Date": "2025-12-05", + "git_url": "https://git.bioconductor.org/packages/TENxIO", + "git_branch": "RELEASE_3_22", + "git_last_commit": "3c95124", + "git_last_commit_date": "2025-12-05", + "Repository": "Bioconductor 3.22", + "NeedsCompilation": "no", + "Author": "Marcel Ramos [aut, cre] (ORCID: )", + "Maintainer": "Marcel Ramos " + }, "UCSC.utils": { "Package": "UCSC.utils", "Version": "1.6.1", @@ -3811,6 +3923,57 @@ "Maintainer": "Jeroen Ooms ", "Repository": "CRAN" }, + "VisiumIO": { + "Package": "VisiumIO", + "Version": "1.6.3", + "Source": "Bioconductor", + "Title": "Import Visium data from the 10X Space Ranger pipeline", + "Authors@R": "c( person(\"Marcel\", \"Ramos\", , \"marcel.ramos@sph.cuny.edu\", c(\"aut\", \"cre\"), c(ORCID = \"0000-0002-3242-0582\") ), person(\"Estella YiXing\", \"Dong\", role = c(\"aut\", \"ctb\")), person(\"Dario\", \"Righelli\", role = c(\"aut\", \"ctb\")), person(\"Helena\", \"Crowell\", role = c(\"aut\", \"ctb\")) )", + "Description": "The package allows users to readily import spatial data obtained from either the 10X website or from the Space Ranger pipeline. Supported formats include tar.gz, h5, and mtx files. Multiple files can be imported at once with *List type of functions. The package represents data mainly as SpatialExperiment objects.", + "License": "Artistic-2.0", + "Depends": [ + "R (>= 4.5.0)", + "TENxIO" + ], + "Imports": [ + "BiocBaseUtils", + "BiocGenerics", + "BiocIO (>= 1.15.1)", + "jsonlite", + "methods", + "S4Vectors", + "SingleCellExperiment", + "SpatialExperiment", + "SummarizedExperiment" + ], + "Suggests": [ + "arrow", + "BiocStyle", + "data.table", + "knitr", + "readr", + "rmarkdown", + "sf", + "tinytest" + ], + "biocViews": "Software, Infrastructure, DataImport, SingleCell, Spatial", + "VignetteBuilder": "knitr", + "Encoding": "UTF-8", + "Roxygen": "list(markdown = TRUE)", + "RoxygenNote": "7.3.3", + "BugReports": "https://github.com/waldronlab/VisiumIO/issues", + "URL": "https://github.com/waldronlab/VisiumIO", + "Collate": "'TENxGeoJSON.R' 'TENxSpatialCSV.R' 'TENxSpatialList-class.R' 'TENxSpatialParquet.R' 'TENxVisium-class.R' 'TENxVisiumList-class.R' 'TENxVisiumHD-class.R' 'VisiumIO-package.R' 'utilities.R'", + "Date": "2025-11-21", + "git_url": "https://git.bioconductor.org/packages/VisiumIO", + "git_branch": "RELEASE_3_22", + "git_last_commit": "1a42895", + "git_last_commit_date": "2025-11-21", + "Repository": "Bioconductor 3.22", + "NeedsCompilation": "no", + "Author": "Marcel Ramos [aut, cre] (ORCID: ), Estella YiXing Dong [aut, ctb], Dario Righelli [aut, ctb], Helena Crowell [aut, ctb]", + "Maintainer": "Marcel Ramos " + }, "XML": { "Package": "XML", "Version": "3.99-0.22", @@ -5544,6 +5707,68 @@ "Repository": "CRAN", "Encoding": "UTF-8" }, + "class": { + "Package": "class", + "Version": "7.3-23", + "Source": "Repository", + "Priority": "recommended", + "Date": "2025-01-01", + "Depends": [ + "R (>= 3.0.0)", + "stats", + "utils" + ], + "Imports": [ + "MASS" + ], + "Authors@R": "c(person(\"Brian\", \"Ripley\", role = c(\"aut\", \"cre\", \"cph\"), email = \"Brian.Ripley@R-project.org\"), person(\"William\", \"Venables\", role = \"cph\"))", + "Description": "Various functions for classification, including k-nearest neighbour, Learning Vector Quantization and Self-Organizing Maps.", + "Title": "Functions for Classification", + "ByteCompile": "yes", + "License": "GPL-2 | GPL-3", + "URL": "http://www.stats.ox.ac.uk/pub/MASS4/", + "NeedsCompilation": "yes", + "Author": "Brian Ripley [aut, cre, cph], William Venables [cph]", + "Maintainer": "Brian Ripley ", + "Repository": "CRAN" + }, + "classInt": { + "Package": "classInt", + "Version": "0.4-11", + "Source": "Repository", + "Date": "2025-01-06", + "Title": "Choose Univariate Class Intervals", + "Authors@R": "c( person(\"Roger\", \"Bivand\", role=c(\"aut\", \"cre\"), email=\"Roger.Bivand@nhh.no\", comment=c(ORCID=\"0000-0003-2392-6140\")), person(\"Bill\", \"Denney\", role=\"ctb\", comment=c(ORCID=\"0000-0002-5759-428X\")), person(\"Richard\", \"Dunlap\", role=\"ctb\"), person(\"Diego\", \"Hernangómez\", role=\"ctb\", comment=c(ORCID=\"0000-0001-8457-4658\")), person(\"Hisaji\", \"Ono\", role=\"ctb\"), person(\"Josiah\", \"Parry\", role = \"ctb\", comment = c(ORCID = \"0000-0001-9910-865X\")), person(\"Matthieu\", \"Stigler\", role=\"ctb\", comment =c(ORCID=\"0000-0002-6802-4290\")))", + "Depends": [ + "R (>= 2.2)" + ], + "Imports": [ + "grDevices", + "stats", + "graphics", + "e1071", + "class", + "KernSmooth" + ], + "Suggests": [ + "spData (>= 0.2.6.2)", + "units", + "knitr", + "rmarkdown", + "tinytest" + ], + "NeedsCompilation": "yes", + "Description": "Selected commonly used methods for choosing univariate class intervals for mapping or other graphics purposes.", + "License": "GPL (>= 2)", + "URL": "https://r-spatial.github.io/classInt/, https://github.com/r-spatial/classInt/", + "BugReports": "https://github.com/r-spatial/classInt/issues/", + "RoxygenNote": "6.1.1", + "Encoding": "UTF-8", + "VignetteBuilder": "knitr", + "Author": "Roger Bivand [aut, cre] (), Bill Denney [ctb] (), Richard Dunlap [ctb], Diego Hernangómez [ctb] (), Hisaji Ono [ctb], Josiah Parry [ctb] (), Matthieu Stigler [ctb] ()", + "Maintainer": "Roger Bivand ", + "Repository": "CRAN" + }, "cli": { "Package": "cli", "Version": "3.6.5", @@ -6438,6 +6663,42 @@ "Maintainer": "Hadley Wickham ", "Repository": "CRAN" }, + "e1071": { + "Package": "e1071", + "Version": "1.7-17", + "Source": "Repository", + "Title": "Misc Functions of the Department of Statistics, Probability Theory Group (Formerly: E1071), TU Wien", + "Imports": [ + "graphics", + "grDevices", + "class", + "stats", + "methods", + "utils", + "proxy" + ], + "Suggests": [ + "cluster", + "mlbench", + "nnet", + "randomForest", + "rpart", + "SparseM", + "xtable", + "Matrix", + "MASS", + "slam" + ], + "Authors@R": "c(person(given = \"David\", family = \"Meyer\", role = c(\"aut\", \"cre\"), email = \"David.Meyer@R-project.org\", comment = c(ORCID = \"0000-0002-5196-3048\")), person(given = \"Evgenia\", family = \"Dimitriadou\", role = c(\"aut\",\"cph\")), person(given = \"Kurt\", family = \"Hornik\", role = \"aut\", email = \"Kurt.Hornik@R-project.org\", comment = c(ORCID = \"0000-0003-4198-9911\")), person(given = \"Andreas\", family = \"Weingessel\", role = \"aut\"), person(given = \"Friedrich\", family = \"Leisch\", role = \"aut\"), person(given = \"Chih-Chung\", family = \"Chang\", role = c(\"ctb\",\"cph\"), comment = \"libsvm C++-code\"), person(given = \"Chih-Chen\", family = \"Lin\", role = c(\"ctb\",\"cph\"), comment = \"libsvm C++-code\"))", + "Description": "Functions for latent class analysis, short time Fourier transform, fuzzy clustering, support vector machines, shortest path computation, bagged clustering, naive Bayes classifier, generalized k-nearest neighbour ...", + "License": "GPL-2 | GPL-3", + "LazyLoad": "yes", + "NeedsCompilation": "yes", + "Author": "David Meyer [aut, cre] (ORCID: ), Evgenia Dimitriadou [aut, cph], Kurt Hornik [aut] (ORCID: ), Andreas Weingessel [aut], Friedrich Leisch [aut], Chih-Chung Chang [ctb, cph] (libsvm C++-code), Chih-Chen Lin [ctb, cph] (libsvm C++-code)", + "Maintainer": "David Meyer ", + "Repository": "CRAN", + "Encoding": "UTF-8" + }, "edgeR": { "Package": "edgeR", "Version": "4.8.2", @@ -6777,6 +7038,53 @@ "Repository": "Bioconductor 3.22", "NeedsCompilation": "no" }, + "escheR": { + "Package": "escheR", + "Version": "1.10.0", + "Source": "Bioconductor", + "Title": "Unified multi-dimensional visualizations with Gestalt principles", + "Authors@R": "c( person(\"Boyi\", \"Guo\", email = \"boyi.guo.work@gmail.com\", role = c(\"aut\", \"cre\"), comment = c(ORCID = \"0000-0003-2950-2349\")), person(c(\"Stephanie\", \"C.\"), \"Hicks\", role = c(\"aut\"), email = \"shicks19@jhu.edu\", comment = c(ORCID = \"0000-0002-7858-0231\")), person(c(\"Erik\", \"D.\"), \"Nelson\", email = \"erik.nelson116@gmail.com\", role = c(\"ctb\"), comment = c(ORCID = \"0000-0001-8477-0982\")) )", + "Description": "The creation of effective visualizations is a fundamental component of data analysis. In biomedical research, new challenges are emerging to visualize multi-dimensional data in a 2D space, but current data visualization tools have limited capabilities. To address this problem, we leverage Gestalt principles to improve the design and interpretability of multi-dimensional data in 2D data visualizations, layering aesthetics to display multiple variables. The proposed visualization can be applied to spatially-resolved transcriptomics data, but also broadly to data visualized in 2D space, such as embedding visualizations. We provide this open source R package escheR, which is built off of the state-of-the-art ggplot2 visualization framework and can be seamlessly integrated into genomics toolboxes and workflows.", + "License": "MIT + file LICENSE", + "Encoding": "UTF-8", + "Roxygen": "list(markdown = TRUE)", + "RoxygenNote": "7.2.3", + "biocViews": "Spatial, SingleCell, Transcriptomics, Visualization, Software", + "Depends": [ + "ggplot2", + "R (>= 4.3)" + ], + "Imports": [ + "SpatialExperiment (>= 1.6.1)", + "SingleCellExperiment", + "rlang", + "SummarizedExperiment" + ], + "BugReports": "https://github.com/boyiguo1/escheR/issues", + "URL": "https://github.com/boyiguo1/escheR", + "Suggests": [ + "STexampleData", + "BumpyMatrix", + "knitr", + "rmarkdown", + "BiocStyle", + "ggpubr", + "scran", + "scater", + "scuttle", + "Seurat", + "hexbin" + ], + "VignetteBuilder": "knitr", + "git_url": "https://git.bioconductor.org/packages/escheR", + "git_branch": "RELEASE_3_22", + "git_last_commit": "3f79e54", + "git_last_commit_date": "2025-10-29", + "Repository": "Bioconductor 3.22", + "NeedsCompilation": "no", + "Author": "Boyi Guo [aut, cre] (ORCID: ), Stephanie C. Hicks [aut] (ORCID: ), Erik D. Nelson [ctb] (ORCID: )", + "Maintainer": "Boyi Guo " + }, "estimability": { "Package": "estimability", "Version": "1.5.1", @@ -8009,6 +8317,57 @@ "Maintainer": "Kamil Slowikowski ", "Repository": "CRAN" }, + "ggside": { + "Package": "ggside", + "Version": "0.4.1", + "Source": "Repository", + "Type": "Package", + "Title": "Side Grammar Graphics", + "Authors@R": "person(given = \"Justin\", family = \"Landis\", role = c(\"aut\", \"cre\"), email = \"jtlandis314@gmail.com\", comment = c(ORCID = \"0000-0001-5501-4934\"))", + "Maintainer": "Justin Landis ", + "Description": "The grammar of graphics as shown in 'ggplot2' has provided an expressive API for users to build plots. 'ggside' extends 'ggplot2' by allowing users to add graphical information about one of the main panel's axis using a familiar 'ggplot2' style API with tidy data. This package is particularly useful for visualizing metadata on a discrete axis, or summary graphics on a continuous axis such as a boxplot or a density distribution.", + "License": "MIT + file LICENSE", + "URL": "https://github.com/jtlandis/ggside", + "BugReports": "https://github.com/jtlandis/ggside/issues", + "Encoding": "UTF-8", + "RoxygenNote": "7.3.3", + "VignetteBuilder": "knitr", + "Depends": [ + "R (>= 4.1)", + "ggplot2 (>= 4.0.0)" + ], + "Imports": [ + "grid", + "gtable", + "rlang", + "scales (>= 1.3.0)", + "cli", + "glue", + "stats", + "tibble", + "vctrs", + "S7", + "lifecycle" + ], + "Suggests": [ + "tidyr", + "dplyr", + "testthat (>= 3.0.3)", + "knitr", + "rmarkdown", + "vdiffr (>= 1.0.0)", + "ggdendro", + "viridis", + "waldo" + ], + "Config/testthat/edition": "3", + "Config/testthat/parallel": "true", + "Config/testthat/start-first": "all_ggside_layers, *themes", + "Collate": "'utils-ggproto.R' 'utils-calls.R' 'utils-ggplot2-reimpl-.R' 'utils-constructors.R' 'side-layer.R' 'constructor-.R' 'utils-.R' 'ggside.R' 'utils-side-facet.R' 'side-facet_.R' 'utils-side-coord.R' 'side-coord-cartesian.R' 'add_gg.R' 'ggplot_add.R' 'side-layout-.r' 'all_classes.r' 'geom-sideabline.r' 'geom-sidebar.r' 'geom-sideboxplot.r' 'geom-sidecol.r' 'geom-sidedensity.r' 'geom-sidefreqpoly.r' 'geom-sidefunction.r' 'geom-sidehistogram.r' 'geom-sidehline.r' 'geom-sidelabel.r' 'geom-sideline.r' 'geom-sidepath.r' 'geom-sidepoint.r' 'geom-sidesegment.r' 'geom-sidetext.r' 'geom-sidetile.r' 'geom-sideviolin.r' 'geom-sidevline.r' 'ggside-ggproto.r' 'ggside-package.r' 'ggside-themes.R' 'plot-construction.R' 'position_rescale.r' 'scales-sides-.R' 'scales-xycolour.R' 'scales-xyfill.R' 'utils-ggplot2-reimpl-facet.R' 'side-facet-wrap.R' 'side-facet-grid.R' 'side-facet-null.R' 'stats.r' 'update_ggplot.R' 'z-depricated.R' 'zzz.R'", + "NeedsCompilation": "no", + "Author": "Justin Landis [aut, cre] (ORCID: )", + "Repository": "CRAN" + }, "ggsignif": { "Package": "ggsignif", "Version": "0.6.4", @@ -8039,6 +8398,60 @@ "Maintainer": "Constantin Ahlmann-Eltze ", "Repository": "CRAN" }, + "ggspavis": { + "Package": "ggspavis", + "Version": "1.16.0", + "Source": "Bioconductor", + "Title": "Visualization functions for spatial transcriptomics data", + "Description": "Visualization functions for spatial transcriptomics data. Includes functions to generate several types of plots, including spot plots, feature (molecule) plots, reduced dimension plots, spot-level quality control (QC) plots, and feature-level QC plots, for datasets from the 10x Genomics Visium and other technological platforms. Datasets are assumed to be in either SpatialExperiment or SingleCellExperiment format.", + "Authors@R": "c( person(\"Lukas M.\", \"Weber\", email = \"lmweb012@gmail.com\", role = c(\"aut\", \"cre\"), comment = c(ORCID = \"0000-0002-3282-1730\")), person(\"Helena L.\", \"Crowell\", email = \"helena.crowell@uzh.ch\", role = c(\"aut\"), comment = c(ORCID = \"0000-0002-4801-1767\")), person(\"Yixing E.\", \"Dong\", email = \"estelladong729@gmail.com\", role = c(\"aut\"), comment = c(ORCID = \"0009-0003-5115-5686\")))", + "URL": "https://github.com/lmweber/ggspavis", + "BugReports": "https://github.com/lmweber/ggspavis/issues", + "License": "MIT + file LICENSE", + "Encoding": "UTF-8", + "biocViews": "Spatial, SingleCell, Transcriptomics, GeneExpression, QualityControl, DimensionReduction", + "Depends": [ + "ggplot2" + ], + "Imports": [ + "SpatialExperiment", + "SingleCellExperiment", + "SummarizedExperiment", + "ggside", + "grid", + "ggrepel", + "RColorBrewer", + "scales", + "grDevices", + "methods", + "stats" + ], + "VignetteBuilder": "knitr", + "Suggests": [ + "BiocStyle", + "rmarkdown", + "knitr", + "OSTA.data", + "VisiumIO", + "arrow", + "STexampleData", + "BumpyMatrix", + "scater", + "scran", + "uwot", + "testthat", + "patchwork" + ], + "RoxygenNote": "7.3.3", + "git_url": "https://git.bioconductor.org/packages/ggspavis", + "git_branch": "RELEASE_3_22", + "git_last_commit": "9ea2f70", + "git_last_commit_date": "2025-10-29", + "Repository": "Bioconductor 3.22", + "NeedsCompilation": "no", + "Author": "Lukas M. Weber [aut, cre] (ORCID: ), Helena L. Crowell [aut] (ORCID: ), Yixing E. Dong [aut] (ORCID: )", + "Maintainer": "Lukas M. Weber " + }, "ggstats": { "Package": "ggstats", "Version": "0.12.0", @@ -11242,6 +11655,32 @@ "Maintainer": "Barret Schloerke ", "Repository": "CRAN" }, + "proxy": { + "Package": "proxy", + "Version": "0.4-29", + "Source": "Repository", + "Type": "Package", + "Title": "Distance and Similarity Measures", + "Authors@R": "c(person(given = \"David\", family = \"Meyer\", role = c(\"aut\", \"cre\"), email = \"David.Meyer@R-project.org\", comment = c(ORCID = \"0000-0002-5196-3048\")),\t person(given = \"Christian\", family = \"Buchta\", role = \"aut\"))", + "Description": "Provides an extensible framework for the efficient calculation of auto- and cross-proximities, along with implementations of the most popular ones.", + "Depends": [ + "R (>= 3.4.0)" + ], + "Imports": [ + "stats", + "utils" + ], + "Suggests": [ + "cba" + ], + "Collate": "registry.R database.R dist.R similarities.R dissimilarities.R util.R seal.R", + "License": "GPL-2 | GPL-3", + "NeedsCompilation": "yes", + "Author": "David Meyer [aut, cre] (ORCID: ), Christian Buchta [aut]", + "Maintainer": "David Meyer ", + "Repository": "CRAN", + "Encoding": "UTF-8" + }, "ps": { "Package": "ps", "Version": "1.9.1", @@ -12326,6 +12765,42 @@ "Maintainer": "Hadley Wickham ", "Repository": "CRAN" }, + "s2": { + "Package": "s2", + "Version": "1.1.9", + "Source": "Repository", + "Title": "Spherical Geometry Operators Using the S2 Geometry Library", + "Authors@R": "c( person(given = \"Dewey\", family = \"Dunnington\", role = c(\"aut\"), email = \"dewey@fishandwhistle.net\", comment = c(ORCID = \"0000-0002-9415-4582\")), person(given = \"Edzer\", family = \"Pebesma\", role = c(\"aut\", \"cre\"), email = \"edzer.pebesma@uni-muenster.de\", comment = c(ORCID = \"0000-0001-8049-7069\")), person(\"Ege\", \"Rubak\", email=\"rubak@math.aau.dk\", role = c(\"aut\")), person(\"Jeroen\", \"Ooms\", , \"jeroen.ooms@stat.ucla.edu\", role = \"ctb\", comment = \"configure script\"), person(family = \"Google, Inc.\", role = \"cph\", comment = \"Original s2geometry.io source code\") )", + "Description": "Provides R bindings for Google's s2 library for geometric calculations on the sphere. High-performance constructors and exporters provide high compatibility with existing spatial packages, transformers construct new geometries from existing geometries, predicates provide a means to select geometries based on spatial relationships, and accessors extract information about geometries.", + "License": "Apache License (== 2.0)", + "Encoding": "UTF-8", + "LazyData": "true", + "RoxygenNote": "7.3.2", + "SystemRequirements": "cmake, OpenSSL >= 1.0.1, Abseil >= 20230802.0", + "LinkingTo": [ + "Rcpp", + "wk" + ], + "Imports": [ + "Rcpp", + "wk (>= 0.6.0)" + ], + "Suggests": [ + "bit64", + "testthat (>= 3.0.0)", + "vctrs" + ], + "URL": "https://r-spatial.github.io/s2/, https://github.com/r-spatial/s2, http://s2geometry.io/", + "BugReports": "https://github.com/r-spatial/s2/issues", + "Depends": [ + "R (>= 3.0.0)" + ], + "Config/testthat/edition": "3", + "NeedsCompilation": "yes", + "Author": "Dewey Dunnington [aut] (ORCID: ), Edzer Pebesma [aut, cre] (ORCID: ), Ege Rubak [aut], Jeroen Ooms [ctb] (configure script), Google, Inc. [cph] (Original s2geometry.io source code)", + "Maintainer": "Edzer Pebesma ", + "Repository": "CRAN" + }, "sass": { "Package": "sass", "Version": "0.4.10", @@ -12873,6 +13348,86 @@ "Repository": "CRAN", "Encoding": "UTF-8" }, + "sf": { + "Package": "sf", + "Version": "1.0-24", + "Source": "Repository", + "Title": "Simple Features for R", + "Authors@R": "c(person(given = \"Edzer\", family = \"Pebesma\", role = c(\"aut\", \"cre\"), email = \"edzer.pebesma@uni-muenster.de\", comment = c(ORCID = \"0000-0001-8049-7069\")), person(given = \"Roger\", family = \"Bivand\", role = \"ctb\", comment = c(ORCID = \"0000-0003-2392-6140\")), person(given = \"Etienne\", family = \"Racine\", role = \"ctb\"), person(given = \"Michael\", family = \"Sumner\", role = \"ctb\"), person(given = \"Ian\", family = \"Cook\", role = \"ctb\"), person(given = \"Tim\", family = \"Keitt\", role = \"ctb\"), person(given = \"Robin\", family = \"Lovelace\", role = \"ctb\"), person(given = \"Hadley\", family = \"Wickham\", role = \"ctb\"), person(given = \"Jeroen\", family = \"Ooms\", role = \"ctb\", comment = c(ORCID = \"0000-0002-4035-0289\")), person(given = \"Kirill\", family = \"M\\u00fcller\", role = \"ctb\"), person(given = \"Thomas Lin\", family = \"Pedersen\", role = \"ctb\"), person(given = \"Dan\", family = \"Baston\", role = \"ctb\"), person(given = \"Dewey\", family = \"Dunnington\", role = \"ctb\", comment = c(ORCID = \"0000-0002-9415-4582\")) )", + "Description": "Support for simple feature access, a standardized way to encode and analyze spatial vector data. Binds to 'GDAL' for reading and writing data, to 'GEOS' for geometrical operations, and to 'PROJ' for projection conversions and datum transformations. Uses by default the 's2' package for geometry operations on geodetic (long/lat degree) coordinates.", + "License": "GPL-2 | MIT + file LICENSE", + "URL": "https://r-spatial.github.io/sf/, https://github.com/r-spatial/sf", + "BugReports": "https://github.com/r-spatial/sf/issues", + "Depends": [ + "methods", + "R (>= 3.3.0)" + ], + "Imports": [ + "classInt (>= 0.4-1)", + "DBI (>= 0.8)", + "graphics", + "grDevices", + "grid", + "magrittr", + "s2 (>= 1.1.0)", + "stats", + "tools", + "units (>= 0.7-0)", + "utils" + ], + "Suggests": [ + "blob", + "nanoarrow", + "covr", + "dplyr (>= 1.0.0)", + "ggplot2", + "knitr", + "lwgeom (>= 0.2-14)", + "maps", + "mapview", + "Matrix", + "microbenchmark", + "odbc", + "pbapply", + "pillar", + "pool", + "raster", + "rlang", + "rmarkdown", + "RPostgres (>= 1.1.0)", + "RPostgreSQL", + "RSQLite", + "sp (>= 1.2-4)", + "spatstat (>= 2.0-1)", + "spatstat.geom", + "spatstat.random", + "spatstat.linnet", + "spatstat.utils", + "stars (>= 0.6-0)", + "terra", + "testthat (>= 3.0.0)", + "tibble (>= 1.4.1)", + "tidyr (>= 1.2.0)", + "tidyselect (>= 1.0.0)", + "tmap (>= 2.0)", + "vctrs", + "wk (>= 0.9.0)" + ], + "LinkingTo": [ + "Rcpp" + ], + "VignetteBuilder": "knitr", + "Encoding": "UTF-8", + "RoxygenNote": "7.3.3", + "Config/testthat/edition": "2", + "Config/needs/coverage": "XML", + "SystemRequirements": "GDAL (>= 2.0.1), GEOS (>= 3.4.0), PROJ (>= 4.8.0), sqlite3", + "Collate": "'RcppExports.R' 'init.R' 'import-standalone-s3-register.R' 'crs.R' 'bbox.R' 'read.R' 'db.R' 'sfc.R' 'sfg.R' 'sf.R' 'bind.R' 'wkb.R' 'wkt.R' 'plot.R' 'geom-measures.R' 'geom-predicates.R' 'geom-transformers.R' 'transform.R' 'proj.R' 'sp.R' 'grid.R' 'arith.R' 'tidyverse.R' 'tidyverse-vctrs.R' 'cast_sfg.R' 'cast_sfc.R' 'graticule.R' 'datasets.R' 'aggregate.R' 'agr.R' 'maps.R' 'join.R' 'sample.R' 'valid.R' 'collection_extract.R' 'jitter.R' 'sgbp.R' 'spatstat.R' 'stars.R' 'crop.R' 'gdal_utils.R' 'nearest.R' 'normalize.R' 'sf-package.R' 'defunct.R' 'z_range.R' 'm_range.R' 'shift_longitude.R' 'make_grid.R' 's2.R' 'terra.R' 'geos-overlayng.R' 'break_antimeridian.R'", + "NeedsCompilation": "yes", + "Author": "Edzer Pebesma [aut, cre] (ORCID: ), Roger Bivand [ctb] (ORCID: ), Etienne Racine [ctb], Michael Sumner [ctb], Ian Cook [ctb], Tim Keitt [ctb], Robin Lovelace [ctb], Hadley Wickham [ctb], Jeroen Ooms [ctb] (ORCID: ), Kirill Müller [ctb], Thomas Lin Pedersen [ctb], Dan Baston [ctb], Dewey Dunnington [ctb] (ORCID: )", + "Maintainer": "Edzer Pebesma ", + "Repository": "CRAN" + }, "shape": { "Package": "shape", "Version": "1.4.6.1", @@ -13113,6 +13668,61 @@ "Author": "Constantin Ahlmann-Eltze [aut, cre] (ORCID: )", "Maintainer": "Constantin Ahlmann-Eltze " }, + "spatialEco": { + "Package": "spatialEco", + "Version": "2.0-3", + "Source": "Repository", + "Type": "Package", + "Title": "Spatial Analysis and Modelling Utilities", + "Date": "2025-09-29", + "Authors@R": "c( person(family=\"Evans\", given=\"Jeffrey S.\", email = \"jeffrey_evans@tnc.org\", role = c(\"aut\", \"cre\"), comment = c(ORCID = \"0000-0002-5533-7044\")), person(family=\"Murphy\", given=\"Melanie A.\", role = \"ctb\"),\t\t\t person(family=\"Ram\", given=\"Karthik\", role = \"ctb\") )", + "Description": "Utilities to support spatial data manipulation, query, sampling and modelling in ecological applications. Functions include models for species population density, spatial smoothing, multivariate separability, point process model for creating pseudo- absences and sub-sampling, Quadrant-based sampling and analysis, auto-logistic modeling, sampling models, cluster optimization, statistical exploratory tools and raster-based metrics.", + "Depends": [ + "R (>= 4.2)" + ], + "Imports": [ + "sf", + "terra" + ], + "Suggests": [ + "spatstat.geom (>= 3.0-3)", + "spatstat.explore", + "spdep", + "ks", + "cluster", + "readr", + "RCurl", + "RANN", + "rms", + "yaImpute", + "mgcv", + "zyp", + "SpatialPack (>= 0.3)", + "MASS", + "caret", + "dplyr", + "earth", + "Matrix", + "gstat", + "spatstat.data", + "methods", + "units", + "sp", + "stringr", + "lwgeom", + "geodata" + ], + "Maintainer": "Jeffrey S. Evans ", + "License": "GPL-3", + "URL": "https://github.com/jeffreyevans/spatialEco, https://jeffreyevans.github.io/spatialEco/", + "BugReports": "https://github.com/jeffreyevans/spatialEco/issues", + "NeedsCompilation": "no", + "Repository": "CRAN", + "LazyData": "true", + "Encoding": "UTF-8", + "RoxygenNote": "7.3.3", + "Author": "Jeffrey S. Evans [aut, cre] (ORCID: ), Melanie A. Murphy [ctb], Karthik Ram [ctb]" + }, "spelling": { "Package": "spelling", "Version": "2.3.2", @@ -13343,6 +13953,47 @@ "Maintainer": "Thomas Lin Pedersen ", "Repository": "CRAN" }, + "terra": { + "Package": "terra", + "Version": "1.8-93", + "Source": "Repository", + "Type": "Package", + "Title": "Spatial Data Analysis", + "Date": "2026-01-11", + "Depends": [ + "R (>= 3.5.0)", + "methods" + ], + "Suggests": [ + "parallel", + "tinytest", + "ncdf4", + "sf (>= 0.9-8)", + "deldir", + "XML", + "leaflet (>= 2.2.1)", + "htmlwidgets" + ], + "LinkingTo": [ + "Rcpp" + ], + "Imports": [ + "Rcpp (>= 1.0-10)" + ], + "SystemRequirements": "C++17, GDAL (>= 2.2.3), GEOS (>= 3.4.0), PROJ (>= 4.9.3), TBB, sqlite3", + "Encoding": "UTF-8", + "Language": "en-US", + "Maintainer": "Robert J. Hijmans ", + "Description": "Methods for spatial data analysis with vector (points, lines, polygons) and raster (grid) data. Methods for vector data include geometric operations such as intersect and buffer. Raster methods include local, focal, global, zonal and geometric operations. The predict and interpolate methods facilitate the use of regression type (interpolation, machine learning) models for spatial prediction, including with satellite remote sensing data. Processing of very large files is supported. See the manual and tutorials on to get started.", + "License": "GPL (>= 3)", + "URL": "https://rspatial.org/, https://rspatial.github.io/terra/", + "BugReports": "https://github.com/rspatial/terra/issues", + "LazyLoad": "yes", + "Authors@R": "c( person(\"Robert J.\", \"Hijmans\", role=c(\"cre\", \"aut\"), email=\"r.hijmans@gmail.com\", comment=c(ORCID=\"0000-0001-5872-2872\")),\t\t\t person(\"Márcia\", \"Barbosa\", role=\"ctb\", comment=c(ORCID=\"0000-0001-8972-7713\")), person(\"Roger\", \"Bivand\", role=\"ctb\", comment=c(ORCID=\"0000-0003-2392-6140\")), person(\"Andrew\", \"Brown\", role=\"ctb\", comment=c(ORCID=\"0000-0002-4565-533X\")), person(\"Michael\", \"Chirico\", role=\"ctb\", comment=c(ORCID=\"0000-0003-0787-087X\")), person(\"Emanuele\", \"Cordano\", role=\"ctb\",comment=c(ORCID=\"0000-0002-3508-5898\")), person(\"Krzysztof\", \"Dyba\", role=\"ctb\", comment=c(ORCID=\"0000-0002-8614-3816\")), person(\"Edzer\", \"Pebesma\", role=\"ctb\", comment=c(ORCID=\"0000-0001-8049-7069\")), person(\"Barry\", \"Rowlingson\", role=\"ctb\", comment=c(ORCID=\"0000-0002-8586-6625\")), person(\"Michael D.\", \"Sumner\", role=\"ctb\", comment=c(ORCID=\"0000-0002-2471-7511\")))", + "NeedsCompilation": "yes", + "Author": "Robert J. Hijmans [cre, aut] (ORCID: ), Márcia Barbosa [ctb] (ORCID: ), Roger Bivand [ctb] (ORCID: ), Andrew Brown [ctb] (ORCID: ), Michael Chirico [ctb] (ORCID: ), Emanuele Cordano [ctb] (ORCID: ), Krzysztof Dyba [ctb] (ORCID: ), Edzer Pebesma [ctb] (ORCID: ), Barry Rowlingson [ctb] (ORCID: ), Michael D. Sumner [ctb] (ORCID: )", + "Repository": "CRAN" + }, "textshaping": { "Package": "textshaping", "Version": "1.0.4", @@ -14076,6 +14727,50 @@ "NeedsCompilation": "yes", "Repository": "CRAN" }, + "units": { + "Package": "units", + "Version": "1.0-0", + "Source": "Repository", + "Title": "Measurement Units for R Vectors", + "Authors@R": "c(person(\"Edzer\", \"Pebesma\", role = c(\"aut\", \"cre\"), email = \"edzer.pebesma@uni-muenster.de\", comment = c(ORCID = \"0000-0001-8049-7069\")), person(\"Thomas\", \"Mailund\", role = \"aut\", email = \"mailund@birc.au.dk\"), person(\"Tomasz\", \"Kalinowski\", role = \"aut\"), person(\"James\", \"Hiebert\", role = \"ctb\"), person(\"Iñaki\", \"Ucar\", role = \"aut\", email = \"iucar@fedoraproject.org\", comment = c(ORCID = \"0000-0001-6403-5550\")), person(\"Thomas Lin\", \"Pedersen\", role = \"ctb\") )", + "Depends": [ + "R (>= 3.5.0)" + ], + "Imports": [ + "Rcpp" + ], + "LinkingTo": [ + "Rcpp (>= 0.12.10)" + ], + "Suggests": [ + "NISTunits", + "measurements", + "xml2", + "magrittr", + "pillar (>= 1.3.0)", + "dplyr (>= 1.0.0)", + "vctrs (>= 0.3.1)", + "ggplot2 (> 3.2.1)", + "testthat (>= 3.0.0)", + "vdiffr", + "knitr", + "rvest", + "rmarkdown" + ], + "VignetteBuilder": "knitr", + "Description": "Support for measurement units in R vectors, matrices and arrays: automatic propagation, conversion, derivation and simplification of units; raising errors in case of unit incompatibility. Compatible with the POSIXct, Date and difftime classes. Uses the UNIDATA udunits library and unit database for unit compatibility checking and conversion. Documentation about 'units' is provided in the paper by Pebesma, Mailund & Hiebert (2016, ), included in this package as a vignette; see 'citation(\"units\")' for details.", + "SystemRequirements": "udunits-2", + "License": "GPL-2", + "URL": "https://r-quantities.github.io/units/, https://github.com/r-quantities/units", + "BugReports": "https://github.com/r-quantities/units/issues", + "RoxygenNote": "7.3.3", + "Encoding": "UTF-8", + "Config/testthat/edition": "3", + "NeedsCompilation": "yes", + "Author": "Edzer Pebesma [aut, cre] (ORCID: ), Thomas Mailund [aut], Tomasz Kalinowski [aut], James Hiebert [ctb], Iñaki Ucar [aut] (ORCID: ), Thomas Lin Pedersen [ctb]", + "Maintainer": "Edzer Pebesma ", + "Repository": "CRAN" + }, "utf8": { "Package": "utf8", "Version": "1.2.6", @@ -14478,6 +15173,35 @@ "Maintainer": "Lionel Henry ", "Repository": "CRAN" }, + "wk": { + "Package": "wk", + "Version": "0.9.5", + "Source": "Repository", + "Title": "Lightweight Well-Known Geometry Parsing", + "Authors@R": "c( person(given = \"Dewey\", family = \"Dunnington\", role = c(\"aut\", \"cre\"), email = \"dewey@fishandwhistle.net\", comment = c(ORCID = \"0000-0002-9415-4582\")), person(given = \"Edzer\", family = \"Pebesma\", role = c(\"aut\"), email = \"edzer.pebesma@uni-muenster.de\", comment = c(ORCID = \"0000-0001-8049-7069\")), person(given = \"Anthony\", family = \"North\", email = \"anthony.jl.north@gmail.com\", role = c(\"ctb\")) )", + "Maintainer": "Dewey Dunnington ", + "Description": "Provides a minimal R and C++ API for parsing well-known binary and well-known text representation of geometries to and from R-native formats. Well-known binary is compact and fast to parse; well-known text is human-readable and is useful for writing tests. These formats are useful in R only if the information they contain can be accessed in R, for which high-performance functions are provided here.", + "License": "MIT + file LICENSE", + "Encoding": "UTF-8", + "RoxygenNote": "7.3.2", + "Suggests": [ + "testthat (>= 3.0.0)", + "vctrs (>= 0.3.0)", + "sf", + "tibble", + "readr" + ], + "URL": "https://paleolimbot.github.io/wk/, https://github.com/paleolimbot/wk", + "BugReports": "https://github.com/paleolimbot/wk/issues", + "Config/testthat/edition": "3", + "Depends": [ + "R (>= 2.10)" + ], + "LazyData": "true", + "NeedsCompilation": "yes", + "Author": "Dewey Dunnington [aut, cre] (ORCID: ), Edzer Pebesma [aut] (ORCID: ), Anthony North [ctb]", + "Repository": "CRAN" + }, "xfun": { "Package": "xfun", "Version": "0.56", From bf8ab7e9570fb858951d21b835ca04ce235b1b96 Mon Sep 17 00:00:00 2001 From: Joshua Shapiro Date: Tue, 17 Feb 2026 11:44:55 -0500 Subject: [PATCH 103/148] use fixed path --- .github/workflows/make-live.yml | 8 ++++++-- .github/workflows/render-rmds.yml | 8 ++++++-- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/.github/workflows/make-live.yml b/.github/workflows/make-live.yml index 19129401..fc77c1df 100644 --- a/.github/workflows/make-live.yml +++ b/.github/workflows/make-live.yml @@ -45,13 +45,17 @@ jobs: run: | aws s3 sync s3://ccdl-training-data/training-modules/ . + - name: Pull latest Docker image + run: | + docker pull ccdl/training_rstudio:edge + - name: Render notebooks env: RENDER_RMD: ${{ github.event.inputs.rendering }} run: | docker run --rm \ - -v "$GITHUB_WORKSPACE":"$GITHUB_WORKSPACE" \ - -w "$GITHUB_WORKSPACE" \ + --mount type=bind,source="$GITHUB_WORKSPACE",target=/training-modules \ + -w /training-modules \ -e RENDER_RMD \ --user "$(id -u):$(id -g)" \ ccdl/training_rstudio:edge \ diff --git a/.github/workflows/render-rmds.yml b/.github/workflows/render-rmds.yml index 83e66e62..3b12e99e 100644 --- a/.github/workflows/render-rmds.yml +++ b/.github/workflows/render-rmds.yml @@ -45,11 +45,15 @@ jobs: run: | aws s3 sync s3://ccdl-training-data/training-modules/ . + - name: Pull latest Docker image + run: | + docker pull ccdl/training_rstudio:edge + - name: Render notebooks run: | docker run --rm \ - -v "$GITHUB_WORKSPACE":"$GITHUB_WORKSPACE" \ - -w "$GITHUB_WORKSPACE" \ + --mount type=bind,source="$GITHUB_WORKSPACE",target=/training-modules \ + -w /training-modules \ --user "$(id -u):$(id -g)" \ ccdl/training_rstudio:edge \ bash scripts/render-live.sh From abf8cba8251980afedde7ef4ff8af6ef3acfe128 Mon Sep 17 00:00:00 2001 From: Joshua Shapiro Date: Tue, 17 Feb 2026 11:56:48 -0500 Subject: [PATCH 104/148] Try no user setting --- .github/workflows/make-live.yml | 3 +-- .github/workflows/render-rmds.yml | 3 +-- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/.github/workflows/make-live.yml b/.github/workflows/make-live.yml index fc77c1df..01127d08 100644 --- a/.github/workflows/make-live.yml +++ b/.github/workflows/make-live.yml @@ -43,7 +43,7 @@ jobs: env: AWS_DEFAULT_REGION: us-east-1 run: | - aws s3 sync s3://ccdl-training-data/training-modules/ . + aws s3 sync s3://ccdl-training-data/training-modules/ . --no-progress - name: Pull latest Docker image run: | @@ -57,7 +57,6 @@ jobs: --mount type=bind,source="$GITHUB_WORKSPACE",target=/training-modules \ -w /training-modules \ -e RENDER_RMD \ - --user "$(id -u):$(id -g)" \ ccdl/training_rstudio:edge \ bash scripts/render-live.sh diff --git a/.github/workflows/render-rmds.yml b/.github/workflows/render-rmds.yml index 3b12e99e..24e6b112 100644 --- a/.github/workflows/render-rmds.yml +++ b/.github/workflows/render-rmds.yml @@ -43,7 +43,7 @@ jobs: env: AWS_DEFAULT_REGION: us-east-1 run: | - aws s3 sync s3://ccdl-training-data/training-modules/ . + aws s3 sync s3://ccdl-training-data/training-modules/ . --no-progress - name: Pull latest Docker image run: | @@ -54,6 +54,5 @@ jobs: docker run --rm \ --mount type=bind,source="$GITHUB_WORKSPACE",target=/training-modules \ -w /training-modules \ - --user "$(id -u):$(id -g)" \ ccdl/training_rstudio:edge \ bash scripts/render-live.sh From b0d94996683636fd58eb04db2b3c572bb0e3c9cc Mon Sep 17 00:00:00 2001 From: Joshua Shapiro Date: Tue, 17 Feb 2026 12:02:42 -0500 Subject: [PATCH 105/148] add free space reporting --- .github/workflows/make-live.yml | 2 ++ .github/workflows/render-rmds.yml | 2 ++ 2 files changed, 4 insertions(+) diff --git a/.github/workflows/make-live.yml b/.github/workflows/make-live.yml index 01127d08..98cbc999 100644 --- a/.github/workflows/make-live.yml +++ b/.github/workflows/make-live.yml @@ -23,6 +23,8 @@ jobs: sudo rm -rf /opt/ghc sudo rm -rf /usr/local/share/boost sudo rm -rf "$AGENT_TOOLSDIRECTORY" + # Print free disk space + df -h # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it - name: Checkout code diff --git a/.github/workflows/render-rmds.yml b/.github/workflows/render-rmds.yml index 24e6b112..14271387 100644 --- a/.github/workflows/render-rmds.yml +++ b/.github/workflows/render-rmds.yml @@ -26,6 +26,8 @@ jobs: sudo rm -rf /opt/ghc sudo rm -rf /usr/local/share/boost sudo rm -rf "$AGENT_TOOLSDIRECTORY" + # Print free disk space + df -h - name: Checkout code uses: actions/checkout@v4 From 528c2026a29247bd0fff34c41ba0872c03dbd5c9 Mon Sep 17 00:00:00 2001 From: "Stephanie J. Spielman" Date: Tue, 17 Feb 2026 17:10:12 +0000 Subject: [PATCH 106/148] add spatial directory and start off notebook in a project --- spatial/01-spatial_intro.Rmd | 35 +++++++++++++++++++++++++++++++++++ spatial/spatial.Rproj | 16 ++++++++++++++++ 2 files changed, 51 insertions(+) create mode 100644 spatial/01-spatial_intro.Rmd create mode 100644 spatial/spatial.Rproj diff --git a/spatial/01-spatial_intro.Rmd b/spatial/01-spatial_intro.Rmd new file mode 100644 index 00000000..1e555396 --- /dev/null +++ b/spatial/01-spatial_intro.Rmd @@ -0,0 +1,35 @@ +--- +title: "Importing, processing, and exploring Visium data" +author: Data Lab for ALSF +date: 2026 +output: + html_notebook: + toc: true + toc_float: true +--- + +## Objectives + +- Read Visium data into R +- Filter to spots overlapping tissue +- Calculate quality control measures on spatial transcriptomic data +- Remove likely low-quality spots with `SpotSweeper()` +- Normalize expression data across spots +- Visualize spatial transcriptomic data + +## Introduction + +In this notebook, we'll learn some basic import, processing, and visualization of a Visium data set, starting with the Space Ranger output. + +The data we'll use in this notebook is from an anaplastic Wilms Tumor sample in the [Single-cell Pediatric Cancer Atlas](https://scpca.alexslemonade.org/projects/SCPCP000006). +This sample was processed using first-generation 3' Visium technology, and it was quantified with `Space ranger 1.3.1`. + + +## Session info + +To conclude, we'll run the `sessionInfo()` command to print out exactly what system setting and R package versions were used to run this code. + +```{r} +sessionInfo() +``` + diff --git a/spatial/spatial.Rproj b/spatial/spatial.Rproj new file mode 100644 index 00000000..98df0873 --- /dev/null +++ b/spatial/spatial.Rproj @@ -0,0 +1,16 @@ +Version: 1.0 + +RestoreWorkspace: No +SaveWorkspace: No +AlwaysSaveHistory: No + +EnableCodeIndexing: Yes +UseSpacesForTab: Yes +NumSpacesForTab: 2 +Encoding: UTF-8 + +RnwWeave: Sweave +LaTeX: pdfLaTeX + +AutoAppendNewline: Yes +StripTrailingWhitespace: Yes From 3131b1d4381d4a7578ce6dc4772d72d224102457 Mon Sep 17 00:00:00 2001 From: "Stephanie J. Spielman" Date: Tue, 17 Feb 2026 17:58:36 +0000 Subject: [PATCH 107/148] draft import section with smidge of viz --- spatial/01-spatial_intro.Rmd | 218 ++++++++++++++++++++++++++++++++++- 1 file changed, 217 insertions(+), 1 deletion(-) diff --git a/spatial/01-spatial_intro.Rmd b/spatial/01-spatial_intro.Rmd index 1e555396..ff22f18c 100644 --- a/spatial/01-spatial_intro.Rmd +++ b/spatial/01-spatial_intro.Rmd @@ -22,7 +22,223 @@ output: In this notebook, we'll learn some basic import, processing, and visualization of a Visium data set, starting with the Space Ranger output. The data we'll use in this notebook is from an anaplastic Wilms Tumor sample in the [Single-cell Pediatric Cancer Atlas](https://scpca.alexslemonade.org/projects/SCPCP000006). -This sample was processed using first-generation 3' Visium technology, and it was quantified with `Space ranger 1.3.1`. +This sample was processed using first-generation 3' Visium technology, and it was quantified with `Space Ranger 1.3.1`. + +## Set up + +To begin, we'll load some of the libraries we'll use in this notebook. +We won't be doing any calculations involving random numbers here, so we don't need to set a seed. + +```{r libraries} +# Load libraries + +# The main class we use for spatial transcriptomic data +library(SpatialExperiment) + +# Functions to import Visium data +library(VisiumIO) + +# Plotting functions +library(ggspavis) + +# Frameworks for processing (filtering, normalizing) Visium data +library(scran) +library(SpotSweeper) +``` + +### Directories and files + +Next we'll define paths and files. + +```{r inputs, live=TRUE} +# main data directory +data_dir <- file.path("data", "wilms-tumor", "SCPCS000190") + +# Path to Space Ranger output +raw_spaceranger_dir <- file.path(data_dir, "outs") + +# reference data directory +ref_dir <- file.path("data", "reference") + +# Path to mitochondrial genes table +mito_file <- file.path(ref_dir, "hs_mitochondrial_genes.tsv") +``` + + +```{r outputs} +# Directory and file to save output +normalized_dir <- file.path(data_dir, "normalized") + +# create the directory if it does not exist +fs::dir_create(normalized_dir) + +# output RDS file for normalized SPE (SPatial Experiment) object +output_spe_file <- file.path( + normalized_dir, + "SCPCS000190_normalized.rds" +) +``` + + + +## Reading Space Ranger data + +We'll use the `VisiumIO` package to read this data in. +The directory structure typically looks something like this, with differences for different technology versions. + +```markdown +_add file tree here with standard visium output_ +``` + +Let's see what we have: + +```{r dir-spaceranger, live = TRUE} +dir(raw_spaceranger_dir) +``` + +The filtered/raw matrix directories are what we'd get from Cell Ranger for single-cell sequencing, but the `spatial` directory is what makes this data _spatial_. +Let's have a closer look at what's in the `spatial` directory: + +```{r dir-spatial, live = TRUE} +dir( + file.path(raw_spaceranger_dir, "spatial") +) +``` + +Placeholder to describe each image file: +- "aligned_fiducials.jpg" +- "detected_tissue_image.jpg" +- "tissue_hires_image.png" +- "tissue_lowres_image.png" +- "tissue_positions_list.csv" +- "scalefactors_json.json" + +Potentially point out there is no cytaimage, because this is from an older technology than `CytAssist`, but this may be a confusing detail for so early in the game! + + +We'll import the raw, not filtered, version of the data here so that we can see full processing steps. +We do this in two steps: + +- Define a `TENxVisium` object with all the file information for this sample +- Import the data into R + + +```{r define-tenx-object, live = TRUE} +tenx_object_raw_matrix <- VisiumIO::TENxVisium( + # path that contains the sequencing data + resources = file.path(data_path, "raw_feature_bc_matrix"), + # path that contains the spatial data + spatialResource = file.path(data_path, "spatial"), + # which image(s) to import - use lowres to save some memory/space + images = "lowres" +) + +# print the TENxVisium object +tenx_object_raw_matrix +``` + +We'll formally import the data as a variable called `spe`, which stands for **sp**atial **e**xperiment. +Generally, we'll call these objects `SPE`'s. + +```{r import, live = TRUE} +# import the object +spe <- VisiumIO::import(tenx_object_raw_matrix) +``` + +Let's get to know our `SPE` object! + +```{r explore-spe, live = TRUE} +spe +``` + +It's essentially an `SCE`, but with a few more bells and whistles. + +Note that we have 4992 spots - this is not a random value! +It's the number of spots on Visium's 6.5 x 6.5 slide. + +Unlike `SCE`s, we have spatial information in a dedicated `spatialCoords` slot which contains the x/y coordinates on the slide: + + +```{r spe-spatialcoords, live = TRUE} +# handy function from our code package SpatialExperiment +# literally is giving x/y coordinates +spatialCoords(spe) +``` + +We also have a slot that just holds the images, `imgData`, although looking at it directly isn't very interesting. +But, this stored information will help us make figures! + +```{r spe-imgdata, live = TRUE} +imgData(spe) +``` + +We should also point out what's in `colData`. +Unlike an `SCE`, this isn't cell metadata. +In this `SPE` from a Visium experiment, it's _spot_ metadata; recall that each spot may contain multiple cells, which can even include partial cells! + +```{r spe-coldata, live = TRUE} +colData(spe) +``` + +Hmmm, check out that `in_tissue` column! +It contains 0/1 because we read in the raw `Space Ranger` output, which includes all spots including those which don't actually overlap tissue. +Ultimately, we won't want to analyze the spots that are not on top of tissue, so we'll have to deal with that. + +### Introduction to spatial data visualization + +Before we get further, let's go ahead and actually look at our data. +Because the spatial and image information is contained in the object, we can plot directly from this object using the viz package `ggspavis`. + + +```{r plot-visium, live = TRUE} +ggspavis::plotVisium(spe) +``` + +Here, we see the spots overlaid on the slide as well as slide boundaries. +You'll notice that every single spot is shown, including ones that don't overlap tissue directly - indeed, all 4992 spots are present int he `SPE` right now! + +By default this shows the spots, but we can hide them and zoom into the tissue on the slide. +This is a helpful way to pop up the H&E for side-by-side comparisons with other plots you might make. + +```{r plot-visium-zoom, live = TRUE} +ggspavis::plotVisium( + spe, + spots = FALSE, # don't show the spots + zoom = TRUE # zoom into the slide area +) +``` + +TODO: save this text for when we actually plot genes? +Let's take a moment to chat about Wilm's Tumor - these tumors in the developing kidney are often composed of a couple histologic compartments, blastemal, stromal (with mesenchymal biology), and sometimes epithelial components. +In this tissue section, we can see two major components: the bluer indicating densely cellular, ECM-poor regions consistent with blastema, and paler pink regions consistent with stromal tissue. + +Let's actually go ahead and save this plot to a variable; it will be a convenient way for us to quickly pop up the H&E for side-by-side comparison with other plots we'll make later. + +```{r save-visium-plot} +he_plot <- ggspavis::plotVisium( + spe, + spots = FALSE, + zoom = TRUE +) +``` + + +There's another function in `ggspavis` called `plotCoords` which hides the H&E to just show the spots; this plot is not currently very compelling without any colors, but we'll add those soon! + +```{r plot-coords, live = TRUE} +# plot just the spots +ggspavis::plotCoords(spe) +``` +Hm, the spot layout looks a bit different. +By default, this function will only plot spots that overlay tissue, even if those spots are still in the `SPE`. + +We can override this if we want, but really what we want to do is actually remove those spots since they are entirely uninformative - we'll do this in the next section. +We'll also make the spots a little bigger. + +```{r plot-coords-all-spots, live = TRUE} +ggspavis::plotCoords(spe, in_tissue = NULL, point_size = 1) +``` + ## Session info From b79f8fcc80b447ad2e69e1f2a5a8c6efc020d7d0 Mon Sep 17 00:00:00 2001 From: "Stephanie J. Spielman" Date: Tue, 17 Feb 2026 13:05:22 -0500 Subject: [PATCH 108/148] restore sample id --- RNA-seq/01-qc_trim_quant.Rmd | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/RNA-seq/01-qc_trim_quant.Rmd b/RNA-seq/01-qc_trim_quant.Rmd index 1e6e7ed2..f5299c1c 100644 --- a/RNA-seq/01-qc_trim_quant.Rmd +++ b/RNA-seq/01-qc_trim_quant.Rmd @@ -112,7 +112,7 @@ The `-o` flag allows us to specify where the output of FastQC is saved. Note that this is saved in a separate place than the raw data files and in a directory specifically for quality control information. For comparison to the report for `SRR585570_1.fastq.gz` we generate with our script, we've prepared a FastQC report for one of the sets of reads for another sample in the experiment. -It can be found at `QC/gastric-cancer/fastqc/SRR585571/SRR585571_1_fastqc.html`. +It can be found at `QC/gastric-cancer/fastqc/SRR585574/SRR585574_1_fastqc.html`. **Let's look at the reports for both samples.** From 6647e304a216f8cf3a43822ebb0385102726e098 Mon Sep 17 00:00:00 2001 From: "Stephanie J. Spielman" Date: Tue, 17 Feb 2026 13:07:17 -0500 Subject: [PATCH 109/148] link the other samples fastqc --- scripts/link-data.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/scripts/link-data.sh b/scripts/link-data.sh index dee88474..94abe0b1 100644 --- a/scripts/link-data.sh +++ b/scripts/link-data.sh @@ -63,6 +63,7 @@ link_locs=( RNA-seq/data/gastric-cancer/salmon_quant/SRR585577 RNA-seq/QC/gastric-cancer/fastp/SRR585571 RNA-seq/QC/gastric-cancer/fastqc/SRR585571 + RNA-seq/QC/gastric-cancer/fastqc/SRR585574 RNA-seq/data/NB-cell/NB-cell_metadata.tsv RNA-seq/data/NB-cell/salmon_quant RNA-seq/data/leukemia/SRP049821_metadata.tsv From 5ddb76ff57ae5de35e8bba2028dbbff123c04b11 Mon Sep 17 00:00:00 2001 From: "Stephanie J. Spielman" Date: Tue, 17 Feb 2026 13:55:21 -0500 Subject: [PATCH 110/148] Update scripts/link-data.sh Co-authored-by: Joshua Shapiro --- scripts/link-data.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/scripts/link-data.sh b/scripts/link-data.sh index 94abe0b1..7fde6ea4 100644 --- a/scripts/link-data.sh +++ b/scripts/link-data.sh @@ -63,6 +63,7 @@ link_locs=( RNA-seq/data/gastric-cancer/salmon_quant/SRR585577 RNA-seq/QC/gastric-cancer/fastp/SRR585571 RNA-seq/QC/gastric-cancer/fastqc/SRR585571 + RNA-seq/QC/gastric-cancer/fastp/SRR585574 RNA-seq/QC/gastric-cancer/fastqc/SRR585574 RNA-seq/data/NB-cell/NB-cell_metadata.tsv RNA-seq/data/NB-cell/salmon_quant From 7b1c75e0beea2878acd1528bc1856a41bd18168e Mon Sep 17 00:00:00 2001 From: "Stephanie J. Spielman" Date: Tue, 17 Feb 2026 19:24:07 +0000 Subject: [PATCH 111/148] update igraph - there was a new patch release --- renv.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/renv.lock b/renv.lock index 31cff46b..64dcea4a 100644 --- a/renv.lock +++ b/renv.lock @@ -9684,7 +9684,7 @@ }, "igraph": { "Package": "igraph", - "Version": "2.2.1", + "Version": "2.2.2", "Source": "Repository", "Title": "Network Analysis and Visualization", "Authors@R": "c( person(\"Gábor\", \"Csárdi\", , \"csardi.gabor@gmail.com\", role = \"aut\", comment = c(ORCID = \"0000-0001-7098-9676\")), person(\"Tamás\", \"Nepusz\", , \"ntamas@gmail.com\", role = \"aut\", comment = c(ORCID = \"0000-0002-1451-338X\")), person(\"Vincent\", \"Traag\", role = \"aut\", comment = c(ORCID = \"0000-0003-3170-3879\")), person(\"Szabolcs\", \"Horvát\", , \"szhorvat@gmail.com\", role = \"aut\", comment = c(ORCID = \"0000-0002-3100-523X\")), person(\"Fabio\", \"Zanini\", , \"fabio.zanini@unsw.edu.au\", role = \"aut\", comment = c(ORCID = \"0000-0001-7097-8539\")), person(\"Daniel\", \"Noom\", role = \"aut\"), person(\"Kirill\", \"Müller\", , \"kirill@cynkra.com\", role = c(\"aut\", \"cre\"), comment = c(ORCID = \"0000-0002-1416-3412\")), person(\"Michael\", \"Antonov\", role = \"ctb\"), person(\"Chan Zuckerberg Initiative\", role = \"fnd\", comment = c(ROR = \"02qenvm24\")), person(\"David\", \"Schoch\", , \"david.schoch@cynkra.com\", role = \"aut\", comment = c(ORCID = \"0000-0003-2952-4812\")), person(\"Maëlle\", \"Salmon\", , \"maelle@cynkra.com\", role = \"aut\", comment = c(ORCID = \"0000-0002-2815-0399\")) )", From a5236bc10060cca681984b3659d11ad3ef4a7755 Mon Sep 17 00:00:00 2001 From: "Stephanie J. Spielman" Date: Tue, 17 Feb 2026 20:55:08 +0000 Subject: [PATCH 112/148] run renv::update, which notably updates reticulate too which is now failing in arm --- renv.lock | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/renv.lock b/renv.lock index 64dcea4a..664f7069 100644 --- a/renv.lock +++ b/renv.lock @@ -5034,7 +5034,7 @@ }, "biomaRt": { "Package": "biomaRt", - "Version": "2.66.0", + "Version": "2.66.1", "Source": "Bioconductor", "Title": "Interface to BioMart databases (i.e. Ensembl)", "Authors@R": "c( person(\"Steffen\", \"Durinck\", , \"biomartdev@gmail.com\", role = \"aut\"), person(\"Wolfgang\", \"Huber\", role = \"aut\"), person(\"Sean\", \"Davis\", , \"sdavis2@mail.nih.gov\", role = \"ctb\"), person(\"Francois\", \"Pepin\", role = \"ctb\"), person(\"Vince S\", \"Buffalo\", role = \"ctb\"), person(\"Mike\", \"Smith\", , \"grimbough@gmail.com\", role = \"ctb\", comment = c(ORCID = \"0000-0002-7800-3848\")), person(\"Hugo\", \"Gruson\", , \"hugo.gruson@embl.de\", role = c(\"ctb\", \"cre\"), comment = c(ORCID = \"0000-0002-4094-1476\")), person(\"German Network for Bioinformatics Infrastructure - de.NBI\", role = \"fnd\") )", @@ -5076,8 +5076,8 @@ "Collate": "'biomaRt-package.R' 'biomaRtClasses.R' 'methods-Mart.R' 'biomaRt.R' 'caching.R' 'ensembl.R' 'ensembl_wrappers.R' 'ensembl_ssl_settings.R' 'utilityFunctions.R' 'non-biomart-utils.R' 'exportFASTA.R' 'NP2009code.R'", "git_url": "https://git.bioconductor.org/packages/biomaRt", "git_branch": "RELEASE_3_22", - "git_last_commit": "6757ed1", - "git_last_commit_date": "2025-10-29", + "git_last_commit": "13281c5", + "git_last_commit_date": "2026-02-12", "Repository": "Bioconductor 3.22", "Author": "Steffen Durinck [aut], Wolfgang Huber [aut], Sean Davis [ctb], Francois Pepin [ctb], Vince S Buffalo [ctb], Mike Smith [ctb] (ORCID: ), Hugo Gruson [ctb, cre] (ORCID: ), German Network for Bioinformatics Infrastructure - de.NBI [fnd]", "Maintainer": "Hugo Gruson " @@ -6369,7 +6369,7 @@ }, "dbplyr": { "Package": "dbplyr", - "Version": "2.5.1", + "Version": "2.5.2", "Source": "Repository", "Type": "Package", "Title": "A 'dplyr' Back End for Databases", @@ -6622,7 +6622,7 @@ }, "dtplyr": { "Package": "dtplyr", - "Version": "1.3.2", + "Version": "1.3.3", "Source": "Repository", "Title": "Data Table Back-End for 'dplyr'", "Authors@R": "c( person(\"Hadley\", \"Wickham\", , \"hadley@posit.co\", role = c(\"cre\", \"aut\")), person(\"Maximilian\", \"Girlich\", role = \"aut\"), person(\"Mark\", \"Fairbanks\", role = \"aut\"), person(\"Ryan\", \"Dickerson\", role = \"aut\"), person(\"Posit Software, PBC\", role = c(\"cph\", \"fnd\")) )", @@ -6657,7 +6657,7 @@ "Config/Needs/website": "tidyverse/tidytemplate", "Config/testthat/edition": "3", "Encoding": "UTF-8", - "RoxygenNote": "7.3.2.9000", + "RoxygenNote": "7.3.3", "NeedsCompilation": "no", "Author": "Hadley Wickham [cre, aut], Maximilian Girlich [aut], Mark Fairbanks [aut], Ryan Dickerson [aut], Posit Software, PBC [cph, fnd]", "Maintainer": "Hadley Wickham ", @@ -9520,19 +9520,19 @@ }, "httr": { "Package": "httr", - "Version": "1.4.7", + "Version": "1.4.8", "Source": "Repository", "Title": "Tools for Working with URLs and HTTP", - "Authors@R": "c( person(\"Hadley\", \"Wickham\", , \"hadley@posit.co\", role = c(\"aut\", \"cre\")), person(\"Posit, PBC\", role = c(\"cph\", \"fnd\")) )", + "Authors@R": "c( person(\"Hadley\", \"Wickham\", , \"hadley@posit.co\", role = c(\"aut\", \"cre\")), person(\"Posit Software, PBC\", role = c(\"cph\", \"fnd\")) )", "Description": "Useful tools for working with HTTP organised by HTTP verbs (GET(), POST(), etc). Configuration functions make it easy to control additional request components (authenticate(), add_headers() and so on).", "License": "MIT + file LICENSE", "URL": "https://httr.r-lib.org/, https://github.com/r-lib/httr", "BugReports": "https://github.com/r-lib/httr/issues", "Depends": [ - "R (>= 3.5)" + "R (>= 3.6)" ], "Imports": [ - "curl (>= 5.0.2)", + "curl (>= 5.1.0)", "jsonlite", "mime", "openssl (>= 0.8)", @@ -9552,9 +9552,9 @@ "VignetteBuilder": "knitr", "Config/Needs/website": "tidyverse/tidytemplate", "Encoding": "UTF-8", - "RoxygenNote": "7.2.3", + "RoxygenNote": "7.3.3", "NeedsCompilation": "no", - "Author": "Hadley Wickham [aut, cre], Posit, PBC [cph, fnd]", + "Author": "Hadley Wickham [aut, cre], Posit Software, PBC [cph, fnd]", "Maintainer": "Hadley Wickham ", "Repository": "CRAN" }, @@ -10085,7 +10085,7 @@ }, "later": { "Package": "later", - "Version": "1.4.5", + "Version": "1.4.6", "Source": "Repository", "Type": "Package", "Title": "Utilities for Scheduling Functions to Execute Later with Event Loops", @@ -12300,7 +12300,7 @@ }, "reticulate": { "Package": "reticulate", - "Version": "1.44.1", + "Version": "1.45.0", "Source": "Repository", "Type": "Package", "Title": "Interface to 'Python'", From 5e97285bd334d792318f2f9cf3fe3439a7735fd4 Mon Sep 17 00:00:00 2001 From: "Stephanie J. Spielman" Date: Wed, 18 Feb 2026 10:28:11 -0500 Subject: [PATCH 113/148] ignore data --- spatial/.gitignore | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 spatial/.gitignore diff --git a/spatial/.gitignore b/spatial/.gitignore new file mode 100644 index 00000000..a5e65c23 --- /dev/null +++ b/spatial/.gitignore @@ -0,0 +1,4 @@ +# ignore data directory +data + + From d524083fae96f6bedcc9dac865717878bfb0b876 Mon Sep 17 00:00:00 2001 From: "Stephanie J. Spielman" Date: Wed, 18 Feb 2026 10:28:28 -0500 Subject: [PATCH 114/148] fix a couple spots and stub out next sections --- spatial/01-spatial_intro.Rmd | 24 ++++++++++++++---------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/spatial/01-spatial_intro.Rmd b/spatial/01-spatial_intro.Rmd index ff22f18c..4c826126 100644 --- a/spatial/01-spatial_intro.Rmd +++ b/spatial/01-spatial_intro.Rmd @@ -14,7 +14,7 @@ output: - Filter to spots overlapping tissue - Calculate quality control measures on spatial transcriptomic data - Remove likely low-quality spots with `SpotSweeper()` -- Normalize expression data across spots +- Normalize spatial expression data - Visualize spatial transcriptomic data ## Introduction @@ -126,9 +126,9 @@ We do this in two steps: ```{r define-tenx-object, live = TRUE} tenx_object_raw_matrix <- VisiumIO::TENxVisium( # path that contains the sequencing data - resources = file.path(data_path, "raw_feature_bc_matrix"), + resources = file.path(raw_spaceranger_dir, "raw_feature_bc_matrix"), # path that contains the spatial data - spatialResource = file.path(data_path, "spatial"), + spatialResource = file.path(raw_spaceranger_dir, "spatial"), # which image(s) to import - use lowres to save some memory/space images = "lowres" ) @@ -153,7 +153,7 @@ spe It's essentially an `SCE`, but with a few more bells and whistles. -Note that we have 4992 spots - this is not a random value! +Note that we have 4992 spots - this is not a random value. It's the number of spots on Visium's 6.5 x 6.5 slide. Unlike `SCE`s, we have spatial information in a dedicated `spatialCoords` slot which contains the x/y coordinates on the slide: @@ -162,7 +162,7 @@ Unlike `SCE`s, we have spatial information in a dedicated `spatialCoords` slot w ```{r spe-spatialcoords, live = TRUE} # handy function from our code package SpatialExperiment # literally is giving x/y coordinates -spatialCoords(spe) +spatialCoords(spe) |> head() ``` We also have a slot that just holds the images, `imgData`, although looking at it directly isn't very interesting. @@ -229,16 +229,20 @@ There's another function in `ggspavis` called `plotCoords` which hides the H&E t # plot just the spots ggspavis::plotCoords(spe) ``` -Hm, the spot layout looks a bit different. + +The spot layout looks a bit different. By default, this function will only plot spots that overlay tissue, even if those spots are still in the `SPE`. We can override this if we want, but really what we want to do is actually remove those spots since they are entirely uninformative - we'll do this in the next section. -We'll also make the spots a little bigger. -```{r plot-coords-all-spots, live = TRUE} -ggspavis::plotCoords(spe, in_tissue = NULL, point_size = 1) -``` +## Filtering empty spots + +## Filtering low-quality spots + +## Normalization + +## Exploring marker gene expression ## Session info From 57e4245a7402d36f9145fa02dc90307095959171 Mon Sep 17 00:00:00 2001 From: "Stephanie J. Spielman" Date: Wed, 18 Feb 2026 10:39:14 -0500 Subject: [PATCH 115/148] add to render live script --- scripts/render-live.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/scripts/render-live.sh b/scripts/render-live.sh index 88c54a40..95502bc1 100644 --- a/scripts/render-live.sh +++ b/scripts/render-live.sh @@ -37,6 +37,7 @@ files=( scRNA-seq-advanced/03-differential_expression.Rmd scRNA-seq-advanced/04-gene_set_enrichment_analysis.Rmd scRNA-seq-advanced/05-aucell.Rmd + spatial/01-spatial_intro.Rmd # machine-learning/01-openpbta_heatmap.Rmd # machine-learning/02-openpbta_consensus_clustering.Rmd # machine-learning/03-openpbta_PLIER.Rmd From 5f6891eb0a572f8aa35017af4dac832a9a739531 Mon Sep 17 00:00:00 2001 From: "Stephanie J. Spielman" Date: Wed, 18 Feb 2026 10:43:06 -0500 Subject: [PATCH 116/148] typos --- components/dictionary.txt | 8 ++++++++ spatial/01-spatial_intro.Rmd | 22 +++++++++++----------- 2 files changed, 19 insertions(+), 11 deletions(-) diff --git a/components/dictionary.txt b/components/dictionary.txt index 9886d72f..768afa1b 100644 --- a/components/dictionary.txt +++ b/components/dictionary.txt @@ -15,6 +15,7 @@ AllCells ALSF Amezquita AML +anaplastic Anders Angerer AnnotationDbi @@ -46,6 +47,8 @@ biomolecular bioRxiv biospecimen Blasi +blastema +blastemal BMC Bonferroni bp @@ -80,6 +83,7 @@ curation customizable customization customizations +cytaimage cytometry cytotoxic cytotoxicity @@ -110,6 +114,7 @@ dplyr dropdown DropSeq dumpFeatures +ECM effector eigengene embeddings @@ -145,6 +150,7 @@ FCS FDR fgsea fibrotic +fiducials Figshare FLI FN @@ -191,6 +197,7 @@ hematopoietic Hemberg hexamer Hippen +histologic histologies Hm Homebrew @@ -491,6 +498,7 @@ vectorization vectorized versicolor virginica +Visium vitro VST Wattenberg diff --git a/spatial/01-spatial_intro.Rmd b/spatial/01-spatial_intro.Rmd index 4c826126..92868a65 100644 --- a/spatial/01-spatial_intro.Rmd +++ b/spatial/01-spatial_intro.Rmd @@ -106,14 +106,14 @@ dir( ``` Placeholder to describe each image file: -- "aligned_fiducials.jpg" -- "detected_tissue_image.jpg" -- "tissue_hires_image.png" -- "tissue_lowres_image.png" -- "tissue_positions_list.csv" -- "scalefactors_json.json" +- `"aligned_fiducials.jpg"` +- `"detected_tissue_image.jpg"` +- `"tissue_hires_image.png"` +- `"tissue_lowres_image.png"` +- `"tissue_positions_list.csv"` +- `"scalefactors_json.json"` -Potentially point out there is no cytaimage, because this is from an older technology than `CytAssist`, but this may be a confusing detail for so early in the game! +TODO potentially point out there is no cytaimage, because this is from an older technology than `CytAssist`, but I feel like this may be a confusing detail for so early in the game! We'll import the raw, not filtered, version of the data here so that we can see full processing steps. @@ -137,7 +137,7 @@ tenx_object_raw_matrix <- VisiumIO::TENxVisium( tenx_object_raw_matrix ``` -We'll formally import the data as a variable called `spe`, which stands for **sp**atial **e**xperiment. +We'll formally import the data as a variable called `spe`, for SPatial Experiment. Generally, we'll call these objects `SPE`'s. ```{r import, live = TRUE} @@ -154,7 +154,7 @@ spe It's essentially an `SCE`, but with a few more bells and whistles. Note that we have 4992 spots - this is not a random value. -It's the number of spots on Visium's 6.5 x 6.5 slide. +It's the number of spots on a Visium 6.5 x 6.5 slide. Unlike `SCE`s, we have spatial information in a dedicated `spatialCoords` slot which contains the x/y coordinates on the slide: @@ -180,7 +180,7 @@ In this `SPE` from a Visium experiment, it's _spot_ metadata; recall that each s colData(spe) ``` -Hmmm, check out that `in_tissue` column! +Check out that `in_tissue` column. It contains 0/1 because we read in the raw `Space Ranger` output, which includes all spots including those which don't actually overlap tissue. Ultimately, we won't want to analyze the spots that are not on top of tissue, so we'll have to deal with that. @@ -209,7 +209,7 @@ ggspavis::plotVisium( ``` TODO: save this text for when we actually plot genes? -Let's take a moment to chat about Wilm's Tumor - these tumors in the developing kidney are often composed of a couple histologic compartments, blastemal, stromal (with mesenchymal biology), and sometimes epithelial components. +Let's take a moment to chat about Wilms Tumor - these tumors in the developing kidney are often composed of a couple histologic compartments, blastemal, stromal (with mesenchymal biology), and sometimes epithelial components. In this tissue section, we can see two major components: the bluer indicating densely cellular, ECM-poor regions consistent with blastema, and paler pink regions consistent with stromal tissue. Let's actually go ahead and save this plot to a variable; it will be a convenient way for us to quickly pop up the H&E for side-by-side comparison with other plots we'll make later. From 5ca0a5a3f21c7ef1ae826074c254ed89db085126 Mon Sep 17 00:00:00 2001 From: "Stephanie J. Spielman" Date: Wed, 18 Feb 2026 11:26:07 -0500 Subject: [PATCH 117/148] temporarily, test faster --- scripts/render-live.sh | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/scripts/render-live.sh b/scripts/render-live.sh index 95502bc1..93f208fe 100644 --- a/scripts/render-live.sh +++ b/scripts/render-live.sh @@ -15,7 +15,12 @@ cd .. render="${RENDER_RMD:-TRUE}" # array of files to transform + +## TEMPORARY FOR DEBUGGING!!!!!! files=( + spatial/01-spatial_intro.Rmd +) +xfiles=( intro-to-R-tidyverse/01-intro_to_base_R.Rmd intro-to-R-tidyverse/02-intro_to_ggplot2.Rmd intro-to-R-tidyverse/03-intro_to_tidyverse.Rmd From f1f48bbd796262d0010a81b51f056bbdc5e9d062 Mon Sep 17 00:00:00 2001 From: "Stephanie J. Spielman" Date: Wed, 18 Feb 2026 11:37:08 -0500 Subject: [PATCH 118/148] revert temp script change as I flew too close to the sun --- scripts/render-live.sh | 5 ----- 1 file changed, 5 deletions(-) diff --git a/scripts/render-live.sh b/scripts/render-live.sh index 93f208fe..95502bc1 100644 --- a/scripts/render-live.sh +++ b/scripts/render-live.sh @@ -15,12 +15,7 @@ cd .. render="${RENDER_RMD:-TRUE}" # array of files to transform - -## TEMPORARY FOR DEBUGGING!!!!!! files=( - spatial/01-spatial_intro.Rmd -) -xfiles=( intro-to-R-tidyverse/01-intro_to_base_R.Rmd intro-to-R-tidyverse/02-intro_to_ggplot2.Rmd intro-to-R-tidyverse/03-intro_to_tidyverse.Rmd From dd574dd07e82278ba38657a9fc2695eef32f5bb6 Mon Sep 17 00:00:00 2001 From: "Stephanie J. Spielman" Date: Wed, 18 Feb 2026 15:47:58 -0500 Subject: [PATCH 119/148] Apply suggestions from code review Co-authored-by: Joshua Shapiro --- spatial/01-spatial_intro.Rmd | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/spatial/01-spatial_intro.Rmd b/spatial/01-spatial_intro.Rmd index 92868a65..1f84fdc5 100644 --- a/spatial/01-spatial_intro.Rmd +++ b/spatial/01-spatial_intro.Rmd @@ -72,7 +72,7 @@ normalized_dir <- file.path(data_dir, "normalized") # create the directory if it does not exist fs::dir_create(normalized_dir) -# output RDS file for normalized SPE (SPatial Experiment) object +# output RDS file for normalized Spatial Experiment (SPE) object output_spe_file <- file.path( normalized_dir, "SCPCS000190_normalized.rds" @@ -141,7 +141,7 @@ We'll formally import the data as a variable called `spe`, for SPatial Experimen Generally, we'll call these objects `SPE`'s. ```{r import, live = TRUE} -# import the object +# import the Visium data to an SPE object spe <- VisiumIO::import(tenx_object_raw_matrix) ``` From afea9d34c12686a36ba627ba09ae87ea693591fd Mon Sep 17 00:00:00 2001 From: "Stephanie J. Spielman" Date: Wed, 18 Feb 2026 15:49:15 -0500 Subject: [PATCH 120/148] dont save the h&e at this time --- spatial/01-spatial_intro.Rmd | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/spatial/01-spatial_intro.Rmd b/spatial/01-spatial_intro.Rmd index 1f84fdc5..0a7fd4f7 100644 --- a/spatial/01-spatial_intro.Rmd +++ b/spatial/01-spatial_intro.Rmd @@ -212,16 +212,6 @@ TODO: save this text for when we actually plot genes? Let's take a moment to chat about Wilms Tumor - these tumors in the developing kidney are often composed of a couple histologic compartments, blastemal, stromal (with mesenchymal biology), and sometimes epithelial components. In this tissue section, we can see two major components: the bluer indicating densely cellular, ECM-poor regions consistent with blastema, and paler pink regions consistent with stromal tissue. -Let's actually go ahead and save this plot to a variable; it will be a convenient way for us to quickly pop up the H&E for side-by-side comparison with other plots we'll make later. - -```{r save-visium-plot} -he_plot <- ggspavis::plotVisium( - spe, - spots = FALSE, - zoom = TRUE -) -``` - There's another function in `ggspavis` called `plotCoords` which hides the H&E to just show the spots; this plot is not currently very compelling without any colors, but we'll add those soon! From c40c315b3af165fd82dcbdfc2913ef8d88c591b2 Mon Sep 17 00:00:00 2001 From: "Stephanie J. Spielman" Date: Wed, 18 Feb 2026 15:54:23 -0500 Subject: [PATCH 121/148] definitely mention no cytassist image since it affects import, and update import to happen everywhere all at once --- spatial/01-spatial_intro.Rmd | 56 ++++++++++++++---------------------- 1 file changed, 21 insertions(+), 35 deletions(-) diff --git a/spatial/01-spatial_intro.Rmd b/spatial/01-spatial_intro.Rmd index 0a7fd4f7..f8a984ee 100644 --- a/spatial/01-spatial_intro.Rmd +++ b/spatial/01-spatial_intro.Rmd @@ -113,47 +113,33 @@ Placeholder to describe each image file: - `"tissue_positions_list.csv"` - `"scalefactors_json.json"` -TODO potentially point out there is no cytaimage, because this is from an older technology than `CytAssist`, but I feel like this may be a confusing detail for so early in the game! - - -We'll import the raw, not filtered, version of the data here so that we can see full processing steps. -We do this in two steps: - -- Define a `TENxVisium` object with all the file information for this sample -- Import the data into R - - -```{r define-tenx-object, live = TRUE} -tenx_object_raw_matrix <- VisiumIO::TENxVisium( - # path that contains the sequencing data - resources = file.path(raw_spaceranger_dir, "raw_feature_bc_matrix"), - # path that contains the spatial data - spatialResource = file.path(raw_spaceranger_dir, "spatial"), - # which image(s) to import - use lowres to save some memory/space - images = "lowres" +It's worth mentioning that this is a slightly older technology than the current Visium `CytAssist` image, which means there is no specific `Cytassist` image. +This won't affect our analysis, but worth noting when reading in since by default the functions assume that image is present. + + +We'll import the raw, not filtered, version of the data here so that we can see full processing steps and save it to a variable called `spe`. + +```{r import-visium, live = TRUE} +spe <- import( + VisiumIO::TENxVisium( + # path that contains the sequencing data + resources = file.path(raw_spaceranger_dir, "raw_feature_bc_matrix"), + # path that contains the spatial data + spatialResource = file.path(raw_spaceranger_dir, "spatial"), + # which image(s) to import - use lowres to save some memory/space + # we also need to override the default since it assumes there is a CytAssist image + images = "lowres" + ) ) -# print the TENxVisium object -tenx_object_raw_matrix -``` - -We'll formally import the data as a variable called `spe`, for SPatial Experiment. -Generally, we'll call these objects `SPE`'s. - -```{r import, live = TRUE} -# import the Visium data to an SPE object -spe <- VisiumIO::import(tenx_object_raw_matrix) -``` - -Let's get to know our `SPE` object! - -```{r explore-spe, live = TRUE} +# print the spe spe ``` - +Let's get to know our `SPE` object! It's essentially an `SCE`, but with a few more bells and whistles. +This means there are some functions we'll use to explore it that you might recognize, but there will also be some new ones only used for `SPE` objects. -Note that we have 4992 spots - this is not a random value. +First, note that we have 4992 spots - this is not a random value. It's the number of spots on a Visium 6.5 x 6.5 slide. Unlike `SCE`s, we have spatial information in a dedicated `spatialCoords` slot which contains the x/y coordinates on the slide: From 0e51c2ca8d9c9fb78230e3a40b73b0cc0e98058e Mon Sep 17 00:00:00 2001 From: "Stephanie J. Spielman" Date: Wed, 18 Feb 2026 15:57:12 -0500 Subject: [PATCH 122/148] lil rephrasing now, of course much more to come --- spatial/01-spatial_intro.Rmd | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/spatial/01-spatial_intro.Rmd b/spatial/01-spatial_intro.Rmd index f8a984ee..b41d337a 100644 --- a/spatial/01-spatial_intro.Rmd +++ b/spatial/01-spatial_intro.Rmd @@ -96,8 +96,10 @@ Let's see what we have: dir(raw_spaceranger_dir) ``` -The filtered/raw matrix directories are what we'd get from Cell Ranger for single-cell sequencing, but the `spatial` directory is what makes this data _spatial_. -Let's have a closer look at what's in the `spatial` directory: +The filtered/raw matrix directories are analogous to we'd get from `Cell Ranger` for single-cell sequencing, but the `spatial` directory contains spatial information, including images, that augment the data with its full spatial context. +Without this directory, we could still read in the filtered/raw and make an `SCE`, but you wouldn't have the spatial info. + +Along those lines, let's have a closer look at what's in the `spatial` directory: ```{r dir-spatial, live = TRUE} dir( From 129d5a16cfbe065495a7b608e09c5f0fd09d556c Mon Sep 17 00:00:00 2001 From: "Stephanie J. Spielman" Date: Wed, 18 Feb 2026 15:59:17 -0500 Subject: [PATCH 123/148] just load spatialexperiment, rest :: only --- spatial/01-spatial_intro.Rmd | 18 ++++-------------- 1 file changed, 4 insertions(+), 14 deletions(-) diff --git a/spatial/01-spatial_intro.Rmd b/spatial/01-spatial_intro.Rmd index b41d337a..1667e721 100644 --- a/spatial/01-spatial_intro.Rmd +++ b/spatial/01-spatial_intro.Rmd @@ -26,7 +26,7 @@ This sample was processed using first-generation 3' Visium technology, and it wa ## Set up -To begin, we'll load some of the libraries we'll use in this notebook. +To begin, we'll load the core library for spatial transcriptomic objects in Bioconductor, `SpatialExperiment`. We won't be doing any calculations involving random numbers here, so we don't need to set a seed. ```{r libraries} @@ -34,16 +34,6 @@ We won't be doing any calculations involving random numbers here, so we don't ne # The main class we use for spatial transcriptomic data library(SpatialExperiment) - -# Functions to import Visium data -library(VisiumIO) - -# Plotting functions -library(ggspavis) - -# Frameworks for processing (filtering, normalizing) Visium data -library(scran) -library(SpotSweeper) ``` ### Directories and files @@ -70,7 +60,7 @@ mito_file <- file.path(ref_dir, "hs_mitochondrial_genes.tsv") normalized_dir <- file.path(data_dir, "normalized") # create the directory if it does not exist -fs::dir_create(normalized_dir) +#fs::dir_create(normalized_dir) # output RDS file for normalized Spatial Experiment (SPE) object output_spe_file <- file.path( @@ -119,10 +109,10 @@ It's worth mentioning that this is a slightly older technology than the current This won't affect our analysis, but worth noting when reading in since by default the functions assume that image is present. -We'll import the raw, not filtered, version of the data here so that we can see full processing steps and save it to a variable called `spe`. +We'll import the raw, not filtered, version of the data here so that we can see full processing steps and save it to a variable called `spe`, using the package `VisiumIO`. ```{r import-visium, live = TRUE} -spe <- import( +spe <- VisiumIO::import( VisiumIO::TENxVisium( # path that contains the sequencing data resources = file.path(raw_spaceranger_dir, "raw_feature_bc_matrix"), From c21d837de852448a0fd2bc6b86df8b1225a508a9 Mon Sep 17 00:00:00 2001 From: "Stephanie J. Spielman" Date: Wed, 18 Feb 2026 16:00:31 -0500 Subject: [PATCH 124/148] cytaimage out of dictionary --- components/dictionary.txt | 1 - 1 file changed, 1 deletion(-) diff --git a/components/dictionary.txt b/components/dictionary.txt index 768afa1b..d214129f 100644 --- a/components/dictionary.txt +++ b/components/dictionary.txt @@ -83,7 +83,6 @@ curation customizable customization customizations -cytaimage cytometry cytotoxic cytotoxicity From 18d37779632fa7d129d20ba06dc87da35e3be690 Mon Sep 17 00:00:00 2001 From: "Stephanie J. Spielman" Date: Wed, 18 Feb 2026 16:02:58 -0500 Subject: [PATCH 125/148] slashes --- spatial/01-spatial_intro.Rmd | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/spatial/01-spatial_intro.Rmd b/spatial/01-spatial_intro.Rmd index 1667e721..db5c3cd1 100644 --- a/spatial/01-spatial_intro.Rmd +++ b/spatial/01-spatial_intro.Rmd @@ -42,13 +42,13 @@ Next we'll define paths and files. ```{r inputs, live=TRUE} # main data directory -data_dir <- file.path("data", "wilms-tumor", "SCPCS000190") +data_dir <- file.path("data/wilms-tumor/SCPCS000190") # Path to Space Ranger output raw_spaceranger_dir <- file.path(data_dir, "outs") # reference data directory -ref_dir <- file.path("data", "reference") +ref_dir <- file.path("data/reference") # Path to mitochondrial genes table mito_file <- file.path(ref_dir, "hs_mitochondrial_genes.tsv") @@ -60,7 +60,7 @@ mito_file <- file.path(ref_dir, "hs_mitochondrial_genes.tsv") normalized_dir <- file.path(data_dir, "normalized") # create the directory if it does not exist -#fs::dir_create(normalized_dir) +fs::dir_create(normalized_dir) # output RDS file for normalized Spatial Experiment (SPE) object output_spe_file <- file.path( From 8ff315eee0da864bcf26a784cf45834167e52067 Mon Sep 17 00:00:00 2001 From: "Stephanie J. Spielman" Date: Thu, 19 Feb 2026 09:23:07 -0500 Subject: [PATCH 126/148] Update spatial/01-spatial_intro.Rmd Co-authored-by: Ally Hawkins <54039191+allyhawkins@users.noreply.github.com> --- spatial/01-spatial_intro.Rmd | 1 + 1 file changed, 1 insertion(+) diff --git a/spatial/01-spatial_intro.Rmd b/spatial/01-spatial_intro.Rmd index db5c3cd1..d80853de 100644 --- a/spatial/01-spatial_intro.Rmd +++ b/spatial/01-spatial_intro.Rmd @@ -98,6 +98,7 @@ dir( ``` Placeholder to describe each image file: + - `"aligned_fiducials.jpg"` - `"detected_tissue_image.jpg"` - `"tissue_hires_image.png"` From aa2b02facb71cf4a2e870381f30e40caee0a6783 Mon Sep 17 00:00:00 2001 From: "Stephanie J. Spielman" Date: Thu, 19 Feb 2026 10:07:07 -0500 Subject: [PATCH 127/148] pull out path defs being given to visiumio, and show sce-esque slots before spe-esque --- spatial/01-spatial_intro.Rmd | 43 +++++++++++++++++++++++------------- 1 file changed, 28 insertions(+), 15 deletions(-) diff --git a/spatial/01-spatial_intro.Rmd b/spatial/01-spatial_intro.Rmd index d80853de..b036a720 100644 --- a/spatial/01-spatial_intro.Rmd +++ b/spatial/01-spatial_intro.Rmd @@ -113,12 +113,18 @@ This won't affect our analysis, but worth noting when reading in since by defaul We'll import the raw, not filtered, version of the data here so that we can see full processing steps and save it to a variable called `spe`, using the package `VisiumIO`. ```{r import-visium, live = TRUE} +# path to quantified RNA 10X output +rna_dir <- file.path(raw_spaceranger_dir, "raw_feature_bc_matrix") + +# path to spatial 10X output +spatial_dir <- file.path(raw_spaceranger_dir, "spatial") + spe <- VisiumIO::import( VisiumIO::TENxVisium( # path that contains the sequencing data - resources = file.path(raw_spaceranger_dir, "raw_feature_bc_matrix"), + resources = rna_dir, # path that contains the spatial data - spatialResource = file.path(raw_spaceranger_dir, "spatial"), + spatialResource = spatial_dir, # which image(s) to import - use lowres to save some memory/space # we also need to override the default since it assumes there is a CytAssist image images = "lowres" @@ -128,6 +134,7 @@ spe <- VisiumIO::import( # print the spe spe ``` + Let's get to know our `SPE` object! It's essentially an `SCE`, but with a few more bells and whistles. This means there are some functions we'll use to explore it that you might recognize, but there will also be some new ones only used for `SPE` objects. @@ -135,9 +142,27 @@ This means there are some functions we'll use to explore it that you might recog First, note that we have 4992 spots - this is not a random value. It's the number of spots on a Visium 6.5 x 6.5 slide. -Unlike `SCE`s, we have spatial information in a dedicated `spatialCoords` slot which contains the x/y coordinates on the slide: +Like `SCE`s, we have slots like `assays` for count matrices, `rowData` for feature metadata, and `colData` for _spot_ metadata - recall, our experimental units are not individual cells in spatial transcriptomics. +Let's take a tour: + +```{r spe-rowdata} +rowData(spe) +``` +```{r spe-assays} +counts(spe)[1:10, 1:10] +``` +Again, for the colData`, we're looking at spots and not cells. +With this technology where each spot is 55 `um`, we can expect there's somewhere between 1-10 cells per spot. + +```{r spe-coldata, live = TRUE} +colData(spe) +``` +Check out that `in_tissue` column. +It contains 0/1 because we read in the raw `Space Ranger` output, which includes all spots including those which don't actually overlap tissue. +Ultimately, we won't want to analyze the spots that are not on top of tissue, so we'll have to deal with that. +Unlike `SCE`s, we have spatial information in a dedicated `spatialCoords` slot which contains the x/y coordinates on the slide: ```{r spe-spatialcoords, live = TRUE} # handy function from our code package SpatialExperiment # literally is giving x/y coordinates @@ -151,18 +176,6 @@ But, this stored information will help us make figures! imgData(spe) ``` -We should also point out what's in `colData`. -Unlike an `SCE`, this isn't cell metadata. -In this `SPE` from a Visium experiment, it's _spot_ metadata; recall that each spot may contain multiple cells, which can even include partial cells! - -```{r spe-coldata, live = TRUE} -colData(spe) -``` - -Check out that `in_tissue` column. -It contains 0/1 because we read in the raw `Space Ranger` output, which includes all spots including those which don't actually overlap tissue. -Ultimately, we won't want to analyze the spots that are not on top of tissue, so we'll have to deal with that. - ### Introduction to spatial data visualization Before we get further, let's go ahead and actually look at our data. From 1959e5f4a960ced21e616d3ca6f0c8c61a19b94b Mon Sep 17 00:00:00 2001 From: "Stephanie J. Spielman" Date: Thu, 19 Feb 2026 11:44:15 -0500 Subject: [PATCH 128/148] Update spatial/01-spatial_intro.Rmd Co-authored-by: Joshua Shapiro --- spatial/01-spatial_intro.Rmd | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spatial/01-spatial_intro.Rmd b/spatial/01-spatial_intro.Rmd index b036a720..0475eb6c 100644 --- a/spatial/01-spatial_intro.Rmd +++ b/spatial/01-spatial_intro.Rmd @@ -153,7 +153,7 @@ rowData(spe) counts(spe)[1:10, 1:10] ``` Again, for the colData`, we're looking at spots and not cells. -With this technology where each spot is 55 `um`, we can expect there's somewhere between 1-10 cells per spot. +With this technology, where each spot is 55 µm, we can expect there's somewhere between 1-10 cells per spot. ```{r spe-coldata, live = TRUE} colData(spe) From 7ae5960ce33652ab3575874c3f35687482cf7f3b Mon Sep 17 00:00:00 2001 From: "Stephanie J. Spielman" Date: Thu, 19 Feb 2026 11:45:30 -0500 Subject: [PATCH 129/148] define sample id separately for typing --- spatial/01-spatial_intro.Rmd | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/spatial/01-spatial_intro.Rmd b/spatial/01-spatial_intro.Rmd index 0475eb6c..eb1c9bd8 100644 --- a/spatial/01-spatial_intro.Rmd +++ b/spatial/01-spatial_intro.Rmd @@ -41,8 +41,11 @@ library(SpatialExperiment) Next we'll define paths and files. ```{r inputs, live=TRUE} -# main data directory -data_dir <- file.path("data/wilms-tumor/SCPCS000190") +# define sample id we'll be analyzing +sample_id <- "SCPCS000190" + +# main data directory for this sample +data_dir <- file.path("data/wilms-tumor", sample_id) # Path to Space Ranger output raw_spaceranger_dir <- file.path(data_dir, "outs") From 409b22e2e6e45dcd3c42d02902fedd19be9ea9d2 Mon Sep 17 00:00:00 2001 From: "Stephanie J. Spielman" Date: Thu, 19 Feb 2026 11:47:02 -0500 Subject: [PATCH 130/148] micro --- components/dictionary.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/components/dictionary.txt b/components/dictionary.txt index d214129f..997667aa 100644 --- a/components/dictionary.txt +++ b/components/dictionary.txt @@ -1,5 +1,6 @@ ʹ ⚠️ +µm Adelie ADT ADTs From ad0bdbdf9a82d7a87554b97b86a49c45dd175837 Mon Sep 17 00:00:00 2001 From: "Stephanie J. Spielman" Date: Thu, 19 Feb 2026 12:17:22 -0500 Subject: [PATCH 131/148] Apply suggestion from @sjspielman --- intro-to-R-tidyverse/03-intro_to_tidyverse.Rmd | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/intro-to-R-tidyverse/03-intro_to_tidyverse.Rmd b/intro-to-R-tidyverse/03-intro_to_tidyverse.Rmd index baa44bed..9b3f098b 100644 --- a/intro-to-R-tidyverse/03-intro_to_tidyverse.Rmd +++ b/intro-to-R-tidyverse/03-intro_to_tidyverse.Rmd @@ -182,7 +182,7 @@ _Note:_ If you are using a version of `R` prior to 4.1 (or looking at older code That pipe was the inspiration for the native R pipe we are using here. While there are some minor differences, you can mostly treat them interchangeably as long as you load the `magrittr` package or `dplyr`, which also loads that version of the pipe. -We'll being our journey into pipes using some core functions from the `dplyr` package (a core tidyverse package that offers _pliers_ for your _d_ata). +We'll being our journey into pipes using some core functions from the `dplyr` package (a core tidyverse package that offers "pliers" for your data). As our first example, the output from this: From d4af33f76a3f68bf839b1da8b1096cbf5b10cd5d Mon Sep 17 00:00:00 2001 From: "Stephanie J. Spielman" Date: Thu, 19 Feb 2026 13:59:28 -0500 Subject: [PATCH 132/148] add section to filter empty spots --- spatial/01-spatial_intro.Rmd | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/spatial/01-spatial_intro.Rmd b/spatial/01-spatial_intro.Rmd index eb1c9bd8..a0bddd6f 100644 --- a/spatial/01-spatial_intro.Rmd +++ b/spatial/01-spatial_intro.Rmd @@ -223,6 +223,40 @@ We can override this if we want, but really what we want to do is actually remov ## Filtering empty spots +We only care about spots on top of tissue, so let's begin by removing the `in_tissue = 0` spots. +Note that if we had read in the `filtered_feature_bc_matrix` instead, the data would already be filtered to only `1` in this column, but we need to take this step because we read in the `raw`. +We can make a rough analogy, that this analysis step is like filtering empty droplets to retain only droplets with cells in scRNA-seq, but here we're retaining only spots over tissue. + +We can visualize which spots those are, and we'll do it over the H&E to clearly see the relationship. +We'll use the `annotate` argument, but `plotVisium` sees that this column is an integer and forces it to use a continuous color scale; we'll go ahead and make it a factor for plotting. + +```{r plot_in_tissue} +# make a factor version of this column to plot with +spe$in_tissue_factor <- as.factor(spe$in_tissue) + +ggspavis::plotVisium( + spe, + annotate = "in_tissue_factor", + # custom palette so we can see clearly + pal = c("red", "lightblue") +) +``` + +- The purple tissue overhang on the left isn't colored at all - indeed, there aren't spots at those coordinates outside the slide +- Red points are those to filter out - they are uninformative since they don't overlap tissue. + +```{r filter_in_tissue, live = TRUE} +# keep only spots that are in the tissue +spe <- spe[, spe$in_tissue == 1] + +# print resulting spe +spe +``` + + +Now, we're down to 4120 spots from the original 4992, but that's still a pretty good amount. +But not all of these spots are necessarily good quality, so we'll want to do some additional QC filtering next. + ## Filtering low-quality spots ## Normalization From 5333548435a07a66d89e36322bdc08e3b484c389 Mon Sep 17 00:00:00 2001 From: "Stephanie J. Spielman" Date: Thu, 19 Feb 2026 14:44:17 -0500 Subject: [PATCH 133/148] add global filtering section --- spatial/01-spatial_intro.Rmd | 116 +++++++++++++++++++++++++++++++++-- 1 file changed, 112 insertions(+), 4 deletions(-) diff --git a/spatial/01-spatial_intro.Rmd b/spatial/01-spatial_intro.Rmd index a0bddd6f..a105f325 100644 --- a/spatial/01-spatial_intro.Rmd +++ b/spatial/01-spatial_intro.Rmd @@ -34,6 +34,9 @@ We won't be doing any calculations involving random numbers here, so we don't ne # The main class we use for spatial transcriptomic data library(SpatialExperiment) + +# For combining plots +library(patchwork) ``` ### Directories and files @@ -246,11 +249,11 @@ ggspavis::plotVisium( - Red points are those to filter out - they are uninformative since they don't overlap tissue. ```{r filter_in_tissue, live = TRUE} -# keep only spots that are in the tissue -spe <- spe[, spe$in_tissue == 1] +# keep only spots that are in the tissue and save to filtered_spe +filtered_spe <- spe[, spe$in_tissue == 1] -# print resulting spe -spe +# print resulting filtered_spe +filtered_spe ``` @@ -259,6 +262,111 @@ But not all of these spots are necessarily good quality, so we'll want to do som ## Filtering low-quality spots +### Filtering with global QC thresholds + +As a first step towards filtering, we can borrow some approaches from scRNA-seq and calculate some quality-control measures. +Let's do that and have a look - we'll get our mito genes for QC calculations and we'll use `scran::addPerCellQC()` like we might for single-cell. + +```{r get mitochondrial genes} +# read in a table of mitochondrial genes and extract ids +mito_genes <- readr::read_tsv(mito_file) |> + # filter to only the genes that are found in our dataset + dplyr::filter(gene_id %in% rownames(filtered_spe)) |> + # create a vector from the gene_id column + dplyr::pull(gene_id) +``` + +```{r calculate qc, live = TRUE} +filtered_spe <- scuttle::addPerCellQC( + filtered_spe, + subsets = list(mito = mito_genes) +) + +# print resulting colData to see QC stats +colData(filtered_spe) |> head() +``` + +`ggspavis` comes with a helpful QC plotter (makes histograms by default but has a couple more options!). +These are `ggplot2` objects, so we can use `ggplot2` code with them like add a title to each. + +```{r global qc distributions, fig.width = 12, fig.height = 4} +p1 <- ggspavis::plotObsQC(filtered_spe, x_metric = "sum") + ggplot2::ggtitle("sum") +p2 <- ggspavis::plotObsQC(filtered_spe, x_metric = "detected") + ggplot2::ggtitle("detected") +p3 <- ggspavis::plotObsQC(filtered_spe, x_metric = "subsets_mito_percent") + ggplot2::ggtitle("mito %") + +# Add plots together with patchwork +p1 + p2 + p3 +``` + +These distributions all look unimodal without too much skew, which is different from how distributions from single-cell data might look. With single-cell data, we might typically see long right tails reflecting differences in cell biology or cell quality. +Here, QC stats are calculated per spot aka for aggregates of cells, extremes end up getting smoothed out. + +Let's plot the same stats on the slide: + +```{r global qc coords, fig.width = 10} +p1 <- ggspavis::plotCoords(filtered_spe, annotate="sum", point_size = 1) + ggplot2::ggtitle("sum") +p2 <- ggspavis::plotCoords(filtered_spe, annotate="detected", point_size = 1) + ggplot2::ggtitle("detected") +p3 <- ggspavis::plotCoords(filtered_spe, annotate="subsets_mito_percent", point_size = 1) + ggplot2::ggtitle("mito %") + +p1 + p2 + p3 +``` + +Now, we start to see there's more to the story. +There is spatial heterogeneity in these QC stats. + +Let's plot the H&E again to see any correlation: + +```{r show he for qc, fig.width = 5} +ggspavis::plotVisium(filtered_spe, spots = FALSE, zoom = TRUE) +``` + +We see that: + +- the likely stromal regions have distinctly higher mitochondrial percentages (although these values are pretty low all around!) and fewer detected genes/UMIs +- the likely blastema regions tend to have more detected genes + +This tells us that there is local structure in the data that we might like our QC approach to take into consideration. + +Still, let's try to pick some global thresholds and see what would be removed, trying to infer reasonable thresholds from the histograms. +We'll choose some thresholds around the distribution's tails. + + +```{r global filter spe, live = TRUE} +# create a logical vector of QC filters +filter_spot <- filtered_spe$sum < 5000 | + filtered_spe$detected < 4000 | + filtered_spe$subsets_mito_percent > 4 + +# how many spots would be removed? +sum(filter_spot) +``` + +Let's have a look at which spots these would be: + +```{r plot global filter} +# add filter_spot to object +# make it a factor to use custom discrete colors +filtered_spe$filter_spot <- as.factor(filter_spot) + +# plot which spots would be removed +ggspavis::plotCoords( + filtered_spe, + annotate="filter_spot", + point_size = 1.5, + # custom palette: red spots flagged for removal + pal = c("gray", "red") +) +``` + +Using these global thresholds, we can see that QC is confounded by biology. +If we filter these spots, we'll be removing spots associated with a particular tissue region. +This shows that global thresholds may not be suitable for data with this kind of heterogeneity, so a different approach could be warranted. +Worth noting, this is not strictly a spatial transcriptomics issue; there can be quite a bit of heterogeneity in scRNA-seq data too depending on what was sequenced! +Always plot your data! + +### Filtering with local QC thresholds + + ## Normalization ## Exploring marker gene expression From 8818287909fa58d8b494a98d7603cfefb46ecaaf Mon Sep 17 00:00:00 2001 From: "Stephanie J. Spielman" Date: Thu, 19 Feb 2026 14:45:39 -0500 Subject: [PATCH 134/148] dont let figures get too big, we need to keep the html small --- spatial/01-spatial_intro.Rmd | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/spatial/01-spatial_intro.Rmd b/spatial/01-spatial_intro.Rmd index a105f325..823f34f8 100644 --- a/spatial/01-spatial_intro.Rmd +++ b/spatial/01-spatial_intro.Rmd @@ -188,7 +188,7 @@ Before we get further, let's go ahead and actually look at our data. Because the spatial and image information is contained in the object, we can plot directly from this object using the viz package `ggspavis`. -```{r plot-visium, live = TRUE} +```{r plot-visium, live = TRUE, fig.width = 5} ggspavis::plotVisium(spe) ``` @@ -198,7 +198,7 @@ You'll notice that every single spot is shown, including ones that don't overlap By default this shows the spots, but we can hide them and zoom into the tissue on the slide. This is a helpful way to pop up the H&E for side-by-side comparisons with other plots you might make. -```{r plot-visium-zoom, live = TRUE} +```{r plot-visium-zoom, live = TRUE, fig.width = 5} ggspavis::plotVisium( spe, spots = FALSE, # don't show the spots @@ -213,7 +213,7 @@ In this tissue section, we can see two major components: the bluer indicating de There's another function in `ggspavis` called `plotCoords` which hides the H&E to just show the spots; this plot is not currently very compelling without any colors, but we'll add those soon! -```{r plot-coords, live = TRUE} +```{r plot-coords, live = TRUE, fig.width = 5} # plot just the spots ggspavis::plotCoords(spe) ``` @@ -233,7 +233,7 @@ We can make a rough analogy, that this analysis step is like filtering empty dro We can visualize which spots those are, and we'll do it over the H&E to clearly see the relationship. We'll use the `annotate` argument, but `plotVisium` sees that this column is an integer and forces it to use a continuous color scale; we'll go ahead and make it a factor for plotting. -```{r plot_in_tissue} +```{r plot_in_tissue, fig.width = 5} # make a factor version of this column to plot with spe$in_tissue_factor <- as.factor(spe$in_tissue) @@ -343,7 +343,7 @@ sum(filter_spot) Let's have a look at which spots these would be: -```{r plot global filter} +```{r plot global filter, fig.width = 5} # add filter_spot to object # make it a factor to use custom discrete colors filtered_spe$filter_spot <- as.factor(filter_spot) From f6008ba007b02bb3d78ab59535e468cf0d077c81 Mon Sep 17 00:00:00 2001 From: "Stephanie J. Spielman" Date: Thu, 19 Feb 2026 14:48:10 -0500 Subject: [PATCH 135/148] a little bigger --- spatial/01-spatial_intro.Rmd | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/spatial/01-spatial_intro.Rmd b/spatial/01-spatial_intro.Rmd index 823f34f8..74cecccd 100644 --- a/spatial/01-spatial_intro.Rmd +++ b/spatial/01-spatial_intro.Rmd @@ -188,12 +188,12 @@ Before we get further, let's go ahead and actually look at our data. Because the spatial and image information is contained in the object, we can plot directly from this object using the viz package `ggspavis`. -```{r plot-visium, live = TRUE, fig.width = 5} +```{r plot-visium, live = TRUE, fig.width = 7} ggspavis::plotVisium(spe) ``` Here, we see the spots overlaid on the slide as well as slide boundaries. -You'll notice that every single spot is shown, including ones that don't overlap tissue directly - indeed, all 4992 spots are present int he `SPE` right now! +You'll notice that every single spot is shown, including ones that don't overlap tissue directly - indeed, all 4992 spots are present in the `SPE` right now! By default this shows the spots, but we can hide them and zoom into the tissue on the slide. This is a helpful way to pop up the H&E for side-by-side comparisons with other plots you might make. @@ -213,7 +213,7 @@ In this tissue section, we can see two major components: the bluer indicating de There's another function in `ggspavis` called `plotCoords` which hides the H&E to just show the spots; this plot is not currently very compelling without any colors, but we'll add those soon! -```{r plot-coords, live = TRUE, fig.width = 5} +```{r plot-coords, live = TRUE, fig.width = 7} # plot just the spots ggspavis::plotCoords(spe) ``` @@ -233,15 +233,15 @@ We can make a rough analogy, that this analysis step is like filtering empty dro We can visualize which spots those are, and we'll do it over the H&E to clearly see the relationship. We'll use the `annotate` argument, but `plotVisium` sees that this column is an integer and forces it to use a continuous color scale; we'll go ahead and make it a factor for plotting. -```{r plot_in_tissue, fig.width = 5} +```{r plot_in_tissue, fig.width = 7} # make a factor version of this column to plot with spe$in_tissue_factor <- as.factor(spe$in_tissue) ggspavis::plotVisium( spe, annotate = "in_tissue_factor", - # custom palette so we can see clearly - pal = c("red", "lightblue") + # custom palette: red spots are not over tissue + pal = c("red", "gray") ) ``` @@ -343,7 +343,7 @@ sum(filter_spot) Let's have a look at which spots these would be: -```{r plot global filter, fig.width = 5} +```{r plot global filter, fig.width = 7} # add filter_spot to object # make it a factor to use custom discrete colors filtered_spe$filter_spot <- as.factor(filter_spot) From 35f0c3d02d862df4d8c382a9667b3ee660e3345c Mon Sep 17 00:00:00 2001 From: "Stephanie J. Spielman" Date: Thu, 19 Feb 2026 15:27:46 -0500 Subject: [PATCH 136/148] fix typo and add mito list to S3 in parallel --- spatial/01-spatial_intro.Rmd | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spatial/01-spatial_intro.Rmd b/spatial/01-spatial_intro.Rmd index 74cecccd..d8ce5b26 100644 --- a/spatial/01-spatial_intro.Rmd +++ b/spatial/01-spatial_intro.Rmd @@ -265,7 +265,7 @@ But not all of these spots are necessarily good quality, so we'll want to do som ### Filtering with global QC thresholds As a first step towards filtering, we can borrow some approaches from scRNA-seq and calculate some quality-control measures. -Let's do that and have a look - we'll get our mito genes for QC calculations and we'll use `scran::addPerCellQC()` like we might for single-cell. +Let's do that and have a look - we'll get our mitochondrial genes for QC calculations and we'll use `scran::addPerCellQC()` like we might for single-cell. ```{r get mitochondrial genes} # read in a table of mitochondrial genes and extract ids From c2055dab16238413d918d8055bfa7735cd1424c7 Mon Sep 17 00:00:00 2001 From: Joshua Shapiro Date: Thu, 19 Feb 2026 16:01:37 -0500 Subject: [PATCH 137/148] Use binaries for renv restore --- Dockerfile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Dockerfile b/Dockerfile index d5619a04..9d08dc91 100644 --- a/Dockerfile +++ b/Dockerfile @@ -52,7 +52,7 @@ LABEL maintainer="ccdl@alexslemonade.org" WORKDIR /rocker-build/ -# Additonal dependencies for AWS runtime +# Additional dependencies for AWS runtime RUN apt-get update -qq RUN DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \ glibc-source \ @@ -77,7 +77,7 @@ RUN Rscript -e "install.packages('renv')" COPY renv.lock renv.lock -RUN Rscript -e "renv::restore()" \ +RUN Rscript -e "options(pkgType='binary'); renv::restore(repos = c(CRAN = 'https://packagemanager.posit.co/cran/__linux__/noble/latest'))" \ && rm -rf ~/.cache/R/renv \ && rm -rf /tmp/downloaded_packages \ && rm -rf /tmp/Rtmp* From 7e20878174db54e6f355745ef80fc79cbe9a7ace Mon Sep 17 00:00:00 2001 From: Joshua Shapiro Date: Thu, 19 Feb 2026 16:02:11 -0500 Subject: [PATCH 138/148] minor bugfix and formatting --- .github/workflows/make-live.yml | 1 + scripts/make-live.R | 24 ++++++++++++++++-------- 2 files changed, 17 insertions(+), 8 deletions(-) diff --git a/.github/workflows/make-live.yml b/.github/workflows/make-live.yml index 98cbc999..c37b4f6f 100644 --- a/.github/workflows/make-live.yml +++ b/.github/workflows/make-live.yml @@ -64,6 +64,7 @@ jobs: # Make changes to pull request here - name: Create PR with rendered notebooks + id: cpr uses: peter-evans/create-pull-request@v6 with: token: ${{ env.DOCS_BOT_GITHUB_TOKEN }} diff --git a/scripts/make-live.R b/scripts/make-live.R index 14cee77a..322c2819 100644 --- a/scripts/make-live.R +++ b/scripts/make-live.R @@ -14,11 +14,15 @@ library(optparse) # Set up optparse options option_list <- list( make_option( - opt_str = "--notebook", type = "character", - help = "The notebook file to process."), + opt_str = "--notebook", + type = "character", + help = "The notebook file to process." + ), make_option( - opt_str = "--render", type = "character", - default = "TRUE", help = "Needs a 'TRUE/FALSE' to determine whether the markdown::render() step will be run." + opt_str = "--render", + type = "character", + default = "TRUE", + help = "Needs a 'TRUE/FALSE' to determine whether the markdown::render() step will be run." ) ) @@ -26,7 +30,7 @@ option_list <- list( opt <- parse_args(OptionParser(option_list = option_list)) # Check that render is TRUE or FALSE (or an obvious variant) -if (! tolower(opt$render) %in% c("true", "false", "t", "f")){ +if (!tolower(opt$render) %in% c("true", "false", "t", "f")) { stop("`--render` option must be TRUE or FALSE") } @@ -34,13 +38,17 @@ if (! tolower(opt$render) %in% c("true", "false", "t", "f")){ render <- as.logical(opt$render) # Check that the file is an Rmarkdown file: -if (! stringr::str_detect(opt$notebook, "\\.Rmd$")){ +if (!stringr::str_detect(opt$notebook, "\\.Rmd$")) { stop(opt$notebook, " is not a `.Rmd` notebook") } # Install exrcise package if needed. -if (!"exrcise" %in% installed.packages()){ - remotes::install_github("AlexsLemonade/exrcise", dependencies = TRUE, upgrade = "never") +if (!"exrcise" %in% installed.packages()) { + remotes::install_github( + "AlexsLemonade/exrcise", + dependencies = TRUE, + upgrade = "never" + ) } From b041c465d718a2353b7cc9df5fe4903c705449fc Mon Sep 17 00:00:00 2001 From: "Stephanie J. Spielman" Date: Mon, 23 Feb 2026 09:58:05 -0500 Subject: [PATCH 139/148] Apply suggestions from code review Co-authored-by: Joshua Shapiro --- intro-to-R-tidyverse/01-intro_to_base_R.Rmd | 6 +++--- intro-to-R-tidyverse/03-intro_to_tidyverse.Rmd | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/intro-to-R-tidyverse/01-intro_to_base_R.Rmd b/intro-to-R-tidyverse/01-intro_to_base_R.Rmd index 34b9214e..5dd1129f 100644 --- a/intro-to-R-tidyverse/01-intro_to_base_R.Rmd +++ b/intro-to-R-tidyverse/01-intro_to_base_R.Rmd @@ -419,8 +419,8 @@ _Data frames are one of the most useful tools for data analysis in R._ They are tables which consist of rows and columns, much like a _spreadsheet_. Each column is a variable which behaves as a _vector_, and each row is an observation. We will begin our exploration with dataset of measurements from three penguin species measured using the built-in R dataset `penguins`. -(By the way, this dataset was added as a built-in dataset to R version `4.5.0`! -Previously, it was only available via the [`palmerpenguins` package](https://allisonhorst.github.io/palmerpenguins/) - we'll talk more about packages soon!) +(This dataset was added as a built-in dataset to R version `4.5.0`; +if you are working with an earlier version of R, it is available via the [`palmerpenguins` package](https://allisonhorst.github.io/palmerpenguins/) - we'll talk more about packages soon!) ![drawings of penguin species](diagrams/lter_penguins.png) Artwork by [@allison_horst](https://twitter.com/allison_horst) @@ -452,7 +452,7 @@ This provides a short view of the **str**ucture and contents of the data frame. str(penguins) ``` -You'll notice that the column `species` is a _factor_: This is a special type of character variable that represents distinct categories known as "levels". +You'll notice that the columns `species`, `island`, and `sex` are labelled as _factor_: This is a special type of character variable that represents distinct categories known as "levels". We have learned here that there are three levels in the `species` column: Adelie, Chinstrap, and Gentoo. We might want to explore individual columns of the data frame more in-depth. We can examine individual columns using the dollar sign `$` to select one by name: diff --git a/intro-to-R-tidyverse/03-intro_to_tidyverse.Rmd b/intro-to-R-tidyverse/03-intro_to_tidyverse.Rmd index 9b3f098b..bc58746c 100644 --- a/intro-to-R-tidyverse/03-intro_to_tidyverse.Rmd +++ b/intro-to-R-tidyverse/03-intro_to_tidyverse.Rmd @@ -144,7 +144,7 @@ data_dir <- "data" ``` Although base R has functions to read in data files, the functions in the `readr` package (part of the tidyverse) are faster and more straightforward to use so we are going to use those here. -Because the file we are reading in is a TSV (tab separated values) file we will be using the `readr::read_tsv` function. +Because the file we are reading in is a TSV (tab separated values) file we will be using the `readr::read_tsv()` function. There are analogous functions for CSV (comma separated values) files (`readr::read_csv()`) and other files types. ## Read in the differential expression analysis results file From a785e36ad10734dd3bcade5b10a6dd8ea323d652 Mon Sep 17 00:00:00 2001 From: "Stephanie J. Spielman" Date: Mon, 23 Feb 2026 10:05:12 -0500 Subject: [PATCH 140/148] modify levels sentence since we actually cant see these 3 levels in the str output; it's truncated --- intro-to-R-tidyverse/01-intro_to_base_R.Rmd | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/intro-to-R-tidyverse/01-intro_to_base_R.Rmd b/intro-to-R-tidyverse/01-intro_to_base_R.Rmd index 5dd1129f..5240f597 100644 --- a/intro-to-R-tidyverse/01-intro_to_base_R.Rmd +++ b/intro-to-R-tidyverse/01-intro_to_base_R.Rmd @@ -453,7 +453,8 @@ str(penguins) ``` You'll notice that the columns `species`, `island`, and `sex` are labelled as _factor_: This is a special type of character variable that represents distinct categories known as "levels". -We have learned here that there are three levels in the `species` column: Adelie, Chinstrap, and Gentoo. +Other columns are labelled as _num_ for numeric (with decimals), or _int_ for integer (numeric without decimals). + We might want to explore individual columns of the data frame more in-depth. We can examine individual columns using the dollar sign `$` to select one by name: From ed254beaa8a31fc1fdc057cfdf1acd5838648858 Mon Sep 17 00:00:00 2001 From: "Stephanie J. Spielman" Date: Mon, 23 Feb 2026 10:07:56 -0500 Subject: [PATCH 141/148] add num to dict --- components/dictionary.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/components/dictionary.txt b/components/dictionary.txt index 997667aa..e8d2b4c6 100644 --- a/components/dictionary.txt +++ b/components/dictionary.txt @@ -321,6 +321,7 @@ Novia NPC NRAS NRASG +num octothorps OkabeIto oligodendrocyte From 063b562ca74b3efa4ff4e7280b2387e2f8cb911f Mon Sep 17 00:00:00 2001 From: "Stephanie J. Spielman" Date: Mon, 23 Feb 2026 11:38:44 -0500 Subject: [PATCH 142/148] new fig sizing style --- spatial/01-spatial_intro.Rmd | 25 +++++++++++++++++-------- 1 file changed, 17 insertions(+), 8 deletions(-) diff --git a/spatial/01-spatial_intro.Rmd b/spatial/01-spatial_intro.Rmd index d8ce5b26..b7ddcbf9 100644 --- a/spatial/01-spatial_intro.Rmd +++ b/spatial/01-spatial_intro.Rmd @@ -188,7 +188,8 @@ Before we get further, let's go ahead and actually look at our data. Because the spatial and image information is contained in the object, we can plot directly from this object using the viz package `ggspavis`. -```{r plot-visium, live = TRUE, fig.width = 7} +```{r plot-visium, live = TRUE} +#| fig.width: 7 ggspavis::plotVisium(spe) ``` @@ -198,7 +199,8 @@ You'll notice that every single spot is shown, including ones that don't overlap By default this shows the spots, but we can hide them and zoom into the tissue on the slide. This is a helpful way to pop up the H&E for side-by-side comparisons with other plots you might make. -```{r plot-visium-zoom, live = TRUE, fig.width = 5} +```{r plot-visium-zoom, live = TRUE} +#| fig.width: 5 ggspavis::plotVisium( spe, spots = FALSE, # don't show the spots @@ -213,7 +215,8 @@ In this tissue section, we can see two major components: the bluer indicating de There's another function in `ggspavis` called `plotCoords` which hides the H&E to just show the spots; this plot is not currently very compelling without any colors, but we'll add those soon! -```{r plot-coords, live = TRUE, fig.width = 7} +```{r plot-coords, live = TRUE} +#| fig.width: 7 # plot just the spots ggspavis::plotCoords(spe) ``` @@ -233,7 +236,8 @@ We can make a rough analogy, that this analysis step is like filtering empty dro We can visualize which spots those are, and we'll do it over the H&E to clearly see the relationship. We'll use the `annotate` argument, but `plotVisium` sees that this column is an integer and forces it to use a continuous color scale; we'll go ahead and make it a factor for plotting. -```{r plot_in_tissue, fig.width = 7} +```{r plot_in_tissue} +#| fig.width: 7 # make a factor version of this column to plot with spe$in_tissue_factor <- as.factor(spe$in_tissue) @@ -289,7 +293,9 @@ colData(filtered_spe) |> head() `ggspavis` comes with a helpful QC plotter (makes histograms by default but has a couple more options!). These are `ggplot2` objects, so we can use `ggplot2` code with them like add a title to each. -```{r global qc distributions, fig.width = 12, fig.height = 4} +```{r global qc distributions} +#| fig.width: 12 +#| fig.height: 4 p1 <- ggspavis::plotObsQC(filtered_spe, x_metric = "sum") + ggplot2::ggtitle("sum") p2 <- ggspavis::plotObsQC(filtered_spe, x_metric = "detected") + ggplot2::ggtitle("detected") p3 <- ggspavis::plotObsQC(filtered_spe, x_metric = "subsets_mito_percent") + ggplot2::ggtitle("mito %") @@ -303,7 +309,8 @@ Here, QC stats are calculated per spot aka for aggregates of cells, extremes end Let's plot the same stats on the slide: -```{r global qc coords, fig.width = 10} +```{r global qc coords} +#| fig.width: 10 p1 <- ggspavis::plotCoords(filtered_spe, annotate="sum", point_size = 1) + ggplot2::ggtitle("sum") p2 <- ggspavis::plotCoords(filtered_spe, annotate="detected", point_size = 1) + ggplot2::ggtitle("detected") p3 <- ggspavis::plotCoords(filtered_spe, annotate="subsets_mito_percent", point_size = 1) + ggplot2::ggtitle("mito %") @@ -316,7 +323,8 @@ There is spatial heterogeneity in these QC stats. Let's plot the H&E again to see any correlation: -```{r show he for qc, fig.width = 5} +```{r show he for qc} +#| fig.width: 5 ggspavis::plotVisium(filtered_spe, spots = FALSE, zoom = TRUE) ``` @@ -343,7 +351,8 @@ sum(filter_spot) Let's have a look at which spots these would be: -```{r plot global filter, fig.width = 7} +```{r plot global filter} +#| fig.width: 7 # add filter_spot to object # make it a factor to use custom discrete colors filtered_spe$filter_spot <- as.factor(filter_spot) From 2b3f02b17f5bd1e0b2f33c2231f584debe7f1a0e Mon Sep 17 00:00:00 2001 From: "Stephanie J. Spielman" Date: Mon, 23 Feb 2026 12:25:06 -0500 Subject: [PATCH 143/148] respond to PR reviews --- spatial/01-spatial_intro.Rmd | 133 +++++++++++++++++++---------------- 1 file changed, 74 insertions(+), 59 deletions(-) diff --git a/spatial/01-spatial_intro.Rmd b/spatial/01-spatial_intro.Rmd index b7ddcbf9..7a28cc25 100644 --- a/spatial/01-spatial_intro.Rmd +++ b/spatial/01-spatial_intro.Rmd @@ -35,8 +35,11 @@ We won't be doing any calculations involving random numbers here, so we don't ne # The main class we use for spatial transcriptomic data library(SpatialExperiment) -# For combining plots +# To support plotting library(patchwork) + +# Set ggplot2 theme +ggplot2::theme_set(ggplot2::theme_bw()) ``` ### Directories and files @@ -185,7 +188,7 @@ imgData(spe) ### Introduction to spatial data visualization Before we get further, let's go ahead and actually look at our data. -Because the spatial and image information is contained in the object, we can plot directly from this object using the viz package `ggspavis`. +Because the spatial and image information is contained in the object, we can plot directly from this object using the viz package [`ggspavis`](https://bioconductor.posit.co/packages/release/bioc/vignettes/ggspavis/inst/doc/ggspavis_overview.html). ```{r plot-visium, live = TRUE} @@ -234,19 +237,26 @@ Note that if we had read in the `filtered_feature_bc_matrix` instead, the data w We can make a rough analogy, that this analysis step is like filtering empty droplets to retain only droplets with cells in scRNA-seq, but here we're retaining only spots over tissue. We can visualize which spots those are, and we'll do it over the H&E to clearly see the relationship. -We'll use the `annotate` argument, but `plotVisium` sees that this column is an integer and forces it to use a continuous color scale; we'll go ahead and make it a factor for plotting. +We'll use the `annotate` argument, but `plotVisium` sees that this column is an integer and forces it to use a continuous color scale; we'll go ahead and make it a factor version of it to plot with. ```{r plot_in_tissue} #| fig.width: 7 -# make a factor version of this column to plot with -spe$in_tissue_factor <- as.factor(spe$in_tissue) +# make a factor version of this column to plot with, specifying "No" and "Yes" plot labels +spe$in_tissue_factor <- factor(spe$in_tissue, levels = c(0, 1), labels = c("No", "Yes")) ggspavis::plotVisium( spe, annotate = "in_tissue_factor", - # custom palette: red spots are not over tissue - pal = c("red", "gray") -) + # specify a custom palette + pal = c("Yes" = "yellow", "No" = "red") +) + + # use ggplot2::guides() to override legend titles in ggspavis + ggplot2::guides( + fill = ggplot2::guide_legend( + title = "Spot overlaps tissue", + override.aes = list(size = 2) + ) + ) ``` - The purple tissue overhang on the left isn't colored at all - indeed, there aren't spots at those coordinates outside the slide @@ -296,77 +306,82 @@ These are `ggplot2` objects, so we can use `ggplot2` code with them like add a t ```{r global qc distributions} #| fig.width: 12 #| fig.height: 4 -p1 <- ggspavis::plotObsQC(filtered_spe, x_metric = "sum") + ggplot2::ggtitle("sum") -p2 <- ggspavis::plotObsQC(filtered_spe, x_metric = "detected") + ggplot2::ggtitle("detected") -p3 <- ggspavis::plotObsQC(filtered_spe, x_metric = "subsets_mito_percent") + ggplot2::ggtitle("mito %") -# Add plots together with patchwork -p1 + p2 + p3 -``` +# Extract the colData into a data frame for plotting +coldata_df <- colData(filtered_spe) |> + as.data.frame() |> + # relocate barcodes to an actual column instead of rownames + tibble::rownames_to_column("barcode") -These distributions all look unimodal without too much skew, which is different from how distributions from single-cell data might look. With single-cell data, we might typically see long right tails reflecting differences in cell biology or cell quality. -Here, QC stats are calculated per spot aka for aggregates of cells, extremes end up getting smoothed out. +# Define density plots for each statistic +qc_plot_sum <- ggplot2::ggplot(coldata_df) + + ggplot2::aes(x = sum) + + ggplot2::geom_density(fill = "lightblue") + + ggplot2::labs(title = "Total unique UMIs") -Let's plot the same stats on the slide: +qc_plot_detected <- ggplot2::ggplot(coldata_df) + + ggplot2::aes(x = detected) + + ggplot2::geom_density(fill = "steelblue") + + ggplot2::labs(title = "Total detected genes") -```{r global qc coords} -#| fig.width: 10 -p1 <- ggspavis::plotCoords(filtered_spe, annotate="sum", point_size = 1) + ggplot2::ggtitle("sum") -p2 <- ggspavis::plotCoords(filtered_spe, annotate="detected", point_size = 1) + ggplot2::ggtitle("detected") -p3 <- ggspavis::plotCoords(filtered_spe, annotate="subsets_mito_percent", point_size = 1) + ggplot2::ggtitle("mito %") +qc_plot_mito <- ggplot2::ggplot(coldata_df) + + ggplot2::aes(x = subsets_mito_percent) + + ggplot2::geom_density(fill = "slateblue") + + ggplot2::labs(title = "Mitochondrial %") -p1 + p2 + p3 + +# Plot together with patchwork +qc_plot_sum + qc_plot_detected + qc_plot_mito ``` -Now, we start to see there's more to the story. -There is spatial heterogeneity in these QC stats. +These distributions all look unimodal without too much skew, which is different from how distributions from single-cell data might look. -Let's plot the H&E again to see any correlation: +Placeholder for discussion about differences/similarities in technical artifacts between data types: -```{r show he for qc} -#| fig.width: 5 -ggspavis::plotVisium(filtered_spe, spots = FALSE, zoom = TRUE) -``` +- One of the reasons we filter on these metrics in single cell is due to potential differences in cell capture across droplets +- This isn't a factor in spatial where QC stats are calculated per spot aka for aggregates of cells, extremes end up getting smoothed out + - Differences in capture aren't due to heterogeneity from droplet capture but because of tissue biology/prep: + - We have distinct regions of tissue or groups of cells that have less genes detected than other ones (biology) or because the tissue didn't lay on the slide completely flat or wasn't completely permeabilized in all spots equally -We see that: +For example, let's consider the mitochondria percent distribution: -- the likely stromal regions have distinctly higher mitochondrial percentages (although these values are pretty low all around!) and fewer detected genes/UMIs -- the likely blastema regions tend to have more detected genes +- We do see a long right-tail for mitochondrial percentages, but the values are all really low which doesn't suggest any major quality issues. +- The lower values here vs in single-cell data make sense because cells weren't stressed in the same way they would be for single-cell library prep; more likely to tell you about the tissue quality itself (biology) and not spot quality (technical) -This tells us that there is local structure in the data that we might like our QC approach to take into consideration. +Let's plot the same stats on the slide. +We'll include the H&E plot here as well for an immediate comparison. -Still, let's try to pick some global thresholds and see what would be removed, trying to infer reasonable thresholds from the histograms. -We'll choose some thresholds around the distribution's tails. +```{r global qc coords} +#| fig.width: 10 +he_plot <- ggspavis::plotVisium(filtered_spe, spots = FALSE, zoom = TRUE) -```{r global filter spe, live = TRUE} -# create a logical vector of QC filters -filter_spot <- filtered_spe$sum < 5000 | - filtered_spe$detected < 4000 | - filtered_spe$subsets_mito_percent > 4 +qc_spots_sum <- ggspavis::plotCoords(filtered_spe, annotate="sum", point_size = 1) + + ggplot2::ggtitle("Total unique UMIs") -# how many spots would be removed? -sum(filter_spot) -``` +qc_spots_detected <- ggspavis::plotCoords(filtered_spe, annotate="detected", point_size = 1) + + ggplot2::ggtitle("Total detected genes") -Let's have a look at which spots these would be: +qc_spots_mito <- ggspavis::plotCoords(filtered_spe, annotate="subsets_mito_percent", point_size = 1) + + ggplot2::ggtitle("Mitochondrial %") -```{r plot global filter} -#| fig.width: 7 -# add filter_spot to object -# make it a factor to use custom discrete colors -filtered_spe$filter_spot <- as.factor(filter_spot) - -# plot which spots would be removed -ggspavis::plotCoords( - filtered_spe, - annotate="filter_spot", - point_size = 1.5, - # custom palette: red spots flagged for removal - pal = c("gray", "red") -) +# wrap plots with patchwork into 2x2 grid +wrap_plots( + he_plot, + qc_spots_sum, + qc_spots_detected, + qc_spots_mito, + nrow = 2 +) ``` +Now, we start to see there's more to the story. +There is spatial heterogeneity in these QC stats: + +- the likely stromal regions have distinctly higher mitochondrial percentages (although again, these values are pretty low all around!) and fewer detected UMIs/genes +- the likely blastema regions tend to have more detected UMIs/genes + +This tells us that there is local structure in the data that we might like our QC approach to take into consideration. Using these global thresholds, we can see that QC is confounded by biology. If we filter these spots, we'll be removing spots associated with a particular tissue region. This shows that global thresholds may not be suitable for data with this kind of heterogeneity, so a different approach could be warranted. From 0c4d0ce8f3fbb2a9e3b4e2f7c7505973f5566700 Mon Sep 17 00:00:00 2001 From: "Stephanie J. Spielman" Date: Mon, 23 Feb 2026 12:26:56 -0500 Subject: [PATCH 144/148] permeabilized is indeed a word --- components/dictionary.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/components/dictionary.txt b/components/dictionary.txt index e8d2b4c6..0387b616 100644 --- a/components/dictionary.txt +++ b/components/dictionary.txt @@ -351,6 +351,7 @@ pDC PDX ped permalink +permeabilized phenotypes Phred Picelli From 336142379df63c5d8d8ac7916a9e1dfd55348870 Mon Sep 17 00:00:00 2001 From: "Stephanie J. Spielman" Date: Tue, 24 Feb 2026 09:37:10 -0500 Subject: [PATCH 145/148] new line after #| --- spatial/01-spatial_intro.Rmd | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/spatial/01-spatial_intro.Rmd b/spatial/01-spatial_intro.Rmd index 7a28cc25..0ea87bd8 100644 --- a/spatial/01-spatial_intro.Rmd +++ b/spatial/01-spatial_intro.Rmd @@ -193,6 +193,7 @@ Because the spatial and image information is contained in the object, we can plo ```{r plot-visium, live = TRUE} #| fig.width: 7 + ggspavis::plotVisium(spe) ``` @@ -204,6 +205,7 @@ This is a helpful way to pop up the H&E for side-by-side comparisons with other ```{r plot-visium-zoom, live = TRUE} #| fig.width: 5 + ggspavis::plotVisium( spe, spots = FALSE, # don't show the spots @@ -220,6 +222,7 @@ There's another function in `ggspavis` called `plotCoords` which hides the H&E t ```{r plot-coords, live = TRUE} #| fig.width: 7 + # plot just the spots ggspavis::plotCoords(spe) ``` @@ -241,6 +244,7 @@ We'll use the `annotate` argument, but `plotVisium` sees that this column is an ```{r plot_in_tissue} #| fig.width: 7 + # make a factor version of this column to plot with, specifying "No" and "Yes" plot labels spe$in_tissue_factor <- factor(spe$in_tissue, levels = c(0, 1), labels = c("No", "Yes")) From 36ad2d5d5459b3664eb0a1477507e24c578cc862 Mon Sep 17 00:00:00 2001 From: "Stephanie J. Spielman" Date: Tue, 24 Feb 2026 09:44:18 -0500 Subject: [PATCH 146/148] patchwork:: and distinct colors for spot qc plots, avoiding orange for mito because of nightmares --- spatial/01-spatial_intro.Rmd | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/spatial/01-spatial_intro.Rmd b/spatial/01-spatial_intro.Rmd index 0ea87bd8..c29de65f 100644 --- a/spatial/01-spatial_intro.Rmd +++ b/spatial/01-spatial_intro.Rmd @@ -356,21 +356,28 @@ Let's plot the same stats on the slide. We'll include the H&E plot here as well for an immediate comparison. ```{r global qc coords} +#| message: FALSE #| fig.width: 10 he_plot <- ggspavis::plotVisium(filtered_spe, spots = FALSE, zoom = TRUE) qc_spots_sum <- ggspavis::plotCoords(filtered_spe, annotate="sum", point_size = 1) + + # use distinct palette + ggplot2::scale_color_distiller(palette = "Blues", direction = 1) + ggplot2::ggtitle("Total unique UMIs") qc_spots_detected <- ggspavis::plotCoords(filtered_spe, annotate="detected", point_size = 1) + + # use distinct palette + ggplot2::scale_color_distiller(palette = "YlOrRd", direction = 1) + ggplot2::ggtitle("Total detected genes") qc_spots_mito <- ggspavis::plotCoords(filtered_spe, annotate="subsets_mito_percent", point_size = 1) + + # use distinct palette + ggplot2::scale_color_distiller(palette = "Greens", direction = 1) + ggplot2::ggtitle("Mitochondrial %") # wrap plots with patchwork into 2x2 grid -wrap_plots( +patchwork::wrap_plots( he_plot, qc_spots_sum, qc_spots_detected, From 1e9308e8cef798385ada07e010093d19535bd261 Mon Sep 17 00:00:00 2001 From: "Stephanie J. Spielman" Date: Tue, 24 Feb 2026 09:48:36 -0500 Subject: [PATCH 147/148] border around H&E --- spatial/01-spatial_intro.Rmd | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/spatial/01-spatial_intro.Rmd b/spatial/01-spatial_intro.Rmd index c29de65f..52d47639 100644 --- a/spatial/01-spatial_intro.Rmd +++ b/spatial/01-spatial_intro.Rmd @@ -359,7 +359,9 @@ We'll include the H&E plot here as well for an immediate comparison. #| message: FALSE #| fig.width: 10 -he_plot <- ggspavis::plotVisium(filtered_spe, spots = FALSE, zoom = TRUE) +he_plot <- ggspavis::plotVisium(filtered_spe, spots = FALSE, zoom = TRUE) + + # add border around plot to match other panels + ggplot2::theme(panel.border = ggplot2::element_rect(color = "black", linewidth = 0.25)) qc_spots_sum <- ggspavis::plotCoords(filtered_spe, annotate="sum", point_size = 1) + # use distinct palette From d8510f8db9e0b611c6aafebb2181c440bd15c027 Mon Sep 17 00:00:00 2001 From: "Stephanie J. Spielman" Date: Tue, 24 Feb 2026 09:52:04 -0500 Subject: [PATCH 148/148] more ggplot theme more better --- spatial/01-spatial_intro.Rmd | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/spatial/01-spatial_intro.Rmd b/spatial/01-spatial_intro.Rmd index 52d47639..d6e67cfd 100644 --- a/spatial/01-spatial_intro.Rmd +++ b/spatial/01-spatial_intro.Rmd @@ -360,8 +360,15 @@ We'll include the H&E plot here as well for an immediate comparison. #| fig.width: 10 he_plot <- ggspavis::plotVisium(filtered_spe, spots = FALSE, zoom = TRUE) + - # add border around plot to match other panels - ggplot2::theme(panel.border = ggplot2::element_rect(color = "black", linewidth = 0.25)) + ggplot2::ggtitle("H&E") + + # add styling to match other panels + ggplot2::theme( + plot.title = ggplot2::element_text( + hjust = 0.5, + margin = ggplot2::margin(0, 0, 0.1, 0) + ), + panel.border = ggplot2::element_rect(color = "black", linewidth = 0.25) + ) qc_spots_sum <- ggspavis::plotCoords(filtered_spe, annotate="sum", point_size = 1) + # use distinct palette

    R6Y4OLgLJDx2pp+~#KI_G)W+%`i9{mhJ~K4! z`(bsI@P(MNWL|g?ItZVd2|s0Mz3KG6FDh6v6{}|qC5%6$z~nravXn>_K-21KdIG_p*9mz-LuyWY_BkIC6=Qd6B+uo2!iP?^E z0-(@BszvoDsNvV&LRsQOd@0ZNRl8p0zKB>PA}0_1m#L#2liFN*TTJ#1m~QYJAI-bTqTw{*oS!k{qAiI8n!Z$S?B|hO#aQ`ss)H9?lM4{ji`1l z*t}Tz3*OrQI&h3V&yqs?fZ}k@8s*r_H40YY=}R;DQKSWhqH$yr{ukba3LegETpO|X zPDklz*?%zWwFkPH;Q=QHmZVZD0q7sI1+Wg$0X$|nPa^#Iq>(($gw^9hF2*ZoWOE9H^t$rkh)#*H|F6=BY?ym@slS`D& zd~|wUo*ARswLvZwLa@NT_Jv5ch7FUV2{7Ut=!rGU`m>rt^Nhtwz zcwkY4JAN=TI1D{NqUIiB?}8a{dK3C=^(`~eI}J>yPT%b&v|tJ=&H2v%KDDZ~KI?Q~ zF;tgzzTL9Vo83*rux%Mrh^$Cudsp+IHUicR)zw%d6)paG%|p&sRB}xnD34&d3lp>^ zdGd~i!jr|`ebPIZpKT5Q=dOwqdCBjbz(Z-MJf^#wRY`3{JOAMTY4mWhKfwb+dWOm-O zq4F!&l*gXe?&zPkFC1=7Gc?-O)Cm)+T7ni)uK6jIYP?2;>_m7kK|u<8e+1opxVy@s zI}s2P?^RAY>;UgsXF0dVEf-k1*p7O2xeZ#clE5Fvj>9}6rdH9E8=c=iHlF7_u9-%K zql-#T5>AKEYqoRC#WL$XD%Qsgv>WCs5ph%}@s_Vc-|I+sH$JU>9AB(^6@#7dH;xKS z1Z_gSKMO|Dq)tLS)!JFV5c>K^H%@xo$fb(?Y30f*bFAqSh!xfj`c@HuFa(#o(j@%)u<+A0>Q8-{X&vKOOlY*G z(v2v@AOA3E;HXjOt!_-^ir5tN83S6^1)!fPb)ea_H^K@(tG|7pN!F$^wjCLspRfWW z1e~KC zgTYE+J*E0sP`nTn2!7C~o`^fu@Bw~Pb}5_!cl1On>gS@Yf{0`7qHOHqLBdm?lQ8ADCH;mV4ZhsI@WI%cliB938!oxAH*vuS z_D;YTZGW3-9?)gZ_&wO`TBUNOuDo+yu3JhNYO0>9dIJfvZef?Yoc#Qq0UqiCBP#s- z#^0bEN|Mjvtaq1PwawV=_He#^UrtKKeQ-@VsvbG8g0=`eZFgQU1{z>J!raDJT}2w5h%R(o%{&@~1ij~4h(v!l6XmeTuy!0YowlY4R>U zSQp@+;>w~;Gl;(((;X`cC8VF@Gq2|jZ|HAB>%)`G4BME@#1q<|epIqKjv%RNSk`Q~ zP30d4LJNc;QLEOeFuSd90FOLTqI9_?u#5gzRs=Ex`%C2|7cGl14?`d}(~F3v0ZUK^{P`V3V5 z`Sad&*@TA7>OqbJ^AT@66;3s5!*U(SivgBBx21{XT~L5sMsVzpE}!2{tUv;MG?DU^ z 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≠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