Setup

Loading packages and custom functions

To run the script, some of packages need to be installed from Github.

# loading packages
# devtools::install_github("thomasp85/patchwork")
# if (!requireNamespace("BiocManager", quietly = TRUE))
#     install.packages("BiocManager")
# 
# BiocManager::install("ggtree")
# install.packages("devtools")
# install.packages("tidyverse")
# install.packages("metafor")
# install.packages("patchwork")
# install.packages("R.rsp")

#install.packages("devtools")
#library(devtools)
#install_github("daniel1noble/metaAidR")

#devtools::install_github("daniel1noble/orchaRd", force = TRUE)

#install.packages("pacman")
#> Installing package into '/Users/danielnoble/Library/R/3.6/library'
#> (as 'lib' is unspecified)
#pacman::p_load(devtools, tidyverse, metafor, patchwork, R.rsp)
# Install orchaRd
#> Downloading GitHub repo itchyshin/orchard_plot@master
#> Installing package into '/Users/danielnoble/Library/R/3.6/library'
#> (as 'lib' is unspecified)
#library(orchaRd)

pacman::p_load(
  tidyverse, # tidy family and related packages below
  kableExtra,
  gridExtra, # may not use this
  purrr,
  magrittr, # extending piping
  pander, # nice tables
  metafor, # package for meta-analysis
  #ggbeeswarm, # making bee-swarm plots possible
  ape,     # pfor hylogenetic comparative methods
  MuMIn, # multi-model inference
  performance, # getting R2 from lmer + glmer objects
  #png, # reading png files
  grid, # graphic layout manipulation
  patchwork, # putting ggplots together - you need to install via devtool
  here, # gives a path
  #brms,  # Bayesian mixed model
  orchaRd, # drawing orchard and caterpillars plot
  MCMCglmm, # Bayesin mixed model
  DIZtools
  #metaAidR # some helper functions for meta-analysis
)
#options(mc.cores = parallel::detectCores())
#rstan_options(auto_write = TRUE)

Custom functions

We have 5 custom functions named : cont_gen(), get_pred1, get_pred2, mr_results, and make_VCV_matrix all of which are used later (see below for their functionality) and the code are included here.

# custom functions

#' Title: Contrast name generator
#'
#' @param name: a vector of character strings
cont_gen <- function(name) {
  combination <- combn(name, 2)
  name_dat <- t(combination)
  names <- paste(name_dat[, 1], name_dat[, 2], sep = "-")
  return(names)
}

#' @title get_pred1: intercept-less model
#' @description Function to get CIs (confidence intervals) and PIs (prediction intervals) from rma objects (metafor)
#' @param model: rma.mv object 
#' @param mod: the name of a moderator 
get_pred1 <- function (model, mod = " ") {
  name <- name <- firstup(as.character(stringr::str_replace(row.names(model$beta), mod, "")))
  len <- length(name)
  
   if (len != 1) {
        newdata <- matrix(NA, ncol = len, nrow = len)
        for (i in 1:len) {
            pos <- which(model$X[, i] == 1)[[1]]
            newdata[, i] <- model$X[pos, ]
        }
        pred <- metafor::predict.rma(model, newmods = newdata)
    }
    else {
        pred <- metafor::predict.rma(model)
  }
  estimate <- pred$pred
  lowerCL <- pred$ci.lb
  upperCL <- pred$ci.ub 
  lowerPR <- pred$cr.lb
  upperPR <- pred$cr.ub 
  
  table <- tibble(name = factor(name, levels = name, labels = name), estimate = estimate,
                  lowerCL = lowerCL, upperCL = upperCL,
                  pval = model$pval,
                  lowerPR = lowerPR, upperPR = upperPR)
}

#' @title get_pred2: normal model
#' @description Function to get CIs (confidence intervals) and PIs (prediction intervals) from rma objects (metafor)
#' @param model: rma.mv object 
#' @param mod: the name of a moderator 
get_pred2 <- function (model, mod = " ") {
  name <- as.factor(str_replace(row.names(model$beta), 
                                paste0("relevel", "\\(", mod,", ref = name", "\\)"),
                                ""))
  len <- length(name)
  
  if(len != 1){
  newdata <- diag(len)
  pred <- predict.rma(model, intercept = FALSE, newmods = newdata[,-1])
  }
  else {
    pred <- predict.rma(model)
  }
  estimate <- pred$pred
  lowerCL <- pred$ci.lb
  upperCL <- pred$ci.ub 
  lowerPR <- pred$cr.lb
  upperPR <- pred$cr.ub 
  
  table <- tibble(name = factor(name, levels = name, labels = name), estimate = estimate,
                  lowerCL = lowerCL, upperCL = upperCL,
                  pval = model$pval,
                  lowerPR = lowerPR, upperPR = upperPR)
}

#' @title mr_results
#' @description Function to put results of meta-regression and its contrasts
#' @param res1: data frame 1
#' @param res1: data frame 2
mr_results <- function(res1, res2) {
  restuls <-tibble(
    `Fixed effect` = c(as.character(res1$name), cont_gen(res1$name)),
    Estimate = c(res1$estimate, res2$estimate),
    `Lower CI [0.025]` = c(res1$lowerCL, res2$lowerCL),
    `Upper CI  [0.975]` = c(res1$upperCL, res2$upperCL),
    `P value` = c(res1$pval, res2$pval),
    `Lower PI [0.025]` = c(res1$lowerPR, res2$lowerPR),
    `Upper PI  [0.975]` = c(res1$upperPR, res2$upperPR),
  )
}
# from metaAidR - https://protect-au.mimecast.com/s/8aMMC71RQMcG993psQ4RGW?domain=github.com  
#' @title Covariance and correlation matrix function basing on shared level ID
#' @description Function for generating simple covariance and correlation matrices 
#' @param data Dataframe object containing effect sizes, their variance, unique IDs and clustering variable
#' @param V Name of the variable (as a string – e.g, "V1") containing effect size variances variances
#' @param cluster Name of the variable (as a string – e.g, "V1") indicating which effects belong to the same cluster. Same value of 'cluster' are assumed to be nonindependent (correlated).
#' @param obs Name of the variable (as a string – e.g, "V1") containing individual IDs for each value in the V (Vector of variances). If this parameter is missing, label will be labelled with consecutive integers starting from 1.
#' @param rho Known or assumed correlation value among effect sizes sharing same 'cluster' value. Default value is 0.5.
#' @param type Optional logical parameter indicating whether a full variance-covariance matrix (default or "vcv") is needed or a correlation matrix ("cor") for the non-independent blocks of variance values.
#' @export

make_VCV_matrix <- function(data, V, cluster, obs, type=c("vcv", "cor"), rho=0.5){
  type <- match.arg(type)
  if (missing(data)) {
    stop("Must specify dataframe via 'data' argument.")
  }
  if (missing(V)) {
    stop("Must specify name of the variance variable via 'V' argument.")
  }
  if (missing(cluster)) {
    stop("Must specify name of the clustering variable via 'cluster' argument.")
  }
  if (missing(obs)) {
    obs <- 1:length(V)   
  }
  if (missing(type)) {
    type <- "vcv" 
  }
  
  new_matrix <- matrix(0,nrow = dim(data)[1],ncol = dim(data)[1]) #make empty matrix of the same size as data length
  rownames(new_matrix) <- data[ ,obs]
  colnames(new_matrix) <- data[ ,obs]
  # find start and end coordinates for the subsets
  shared_coord <- which(data[ ,cluster] %in% data[duplicated(data[ ,cluster]), cluster]==TRUE)
  # matrix of combinations of coordinates for each experiment with shared control
  combinations <- do.call("rbind", tapply(shared_coord, data[shared_coord,cluster], function(x) t(utils::combn(x,2))))
  
  if(type == "vcv"){
    # calculate covariance values between  values at the positions in shared_list and place them on the matrix
    for (i in 1:dim(combinations)[1]){
      p1 <- combinations[i,1]
      p2 <- combinations[i,2]
      p1_p2_cov <- rho * sqrt(data[p1,V]) * sqrt(data[p2,V])
      new_matrix[p1,p2] <- p1_p2_cov
      new_matrix[p2,p1] <- p1_p2_cov
    }
    diag(new_matrix) <- data[ ,V]   #add the diagonal
  }
  
  if(type == "cor"){
    # calculate covariance values between  values at the positions in shared_list and place them on the matrix
    for (i in 1:dim(combinations)[1]){
      p1 <- combinations[i,1]
      p2 <- combinations[i,2]
      p1_p2_cov <- rho
      new_matrix[p1,p2] <- p1_p2_cov
      new_matrix[p2,p1] <- p1_p2_cov
    }
    diag(new_matrix) <- 1   #add the diagonal of 1
  }
  
  return(new_matrix)
}  

The Silicon Herbivore Dataset

Table of the dataset

The dataset used for our meta-analysis is below, followed by explanations of 10 variables extracted from the papers included (not all variables were used for our analyses; variables not directly used in our analyses are indicated by *).

Extended Data Table 1: The meta-analytic dataset of this study.

# getting the data and formatting some variables (turning character vectors to factors)
full_data <- read_csv(here("data", "data_01_Oct_2023.csv")) %>%
  mutate_if(is.character, as.factor)

full_data<-subset(full_data, Xc > 0 & full_data$Xe > 0)

#full_data[full_data$Xc < 0, ][,'Xc']<-0.1
#full_data[full_data$Xe < 0, ][,'Xe']<-0.1

#determine whether value is negative
#full_data[full_data$Xe > full_data$Xc, ][,'Negative']<--1
#full_data[full_data$Xe < full_data$Xc, ][,'Negative']<-1
# making a scrollable table
kable(full_data, "html") %>%
  kable_styling("striped", position = "left") %>%
  scroll_box(width = "100%", height = "500px")
Effect Study Author Year Journal Plant_Species Plant_Phylogeny Plant_lifespan Poaceae_or_Non Herbivore_common_name Herbivore_Latin_name Herbivore_Phylogeny Herbivore_diet_breadth Feeding_guild Performance_parameter Nc Ne Xc Xe Dev_c Dev_e Negative Si_Nc Si_Ne Si_Xc Si_Xe Si_Dev_c Si_Dev_e
1 1 Abbasi 2020 INTERNATIONAL JOURNAL OF PEST MANAGEMENT Gossypium hirsutum Gossypium_hirsutum Perennial Non-Poaceae Whitefly Bemisia tabaci Bemisia_tabaci Generalist Fluid-feeding arthropods Reproduction 3.00 3.00 103.2500000 52.1300000 1.0220000 1.5430000 1 NA NA NA NA NA NA
2 1 Abbasi 2020 INTERNATIONAL JOURNAL OF PEST MANAGEMENT Gossypium hirsutum Gossypium_hirsutum Perennial Non-Poaceae Whitefly Bemisia tabaci Bemisia_tabaci Generalist Fluid-feeding arthropods Growth / Development 3.00 3.00 1.8540000 2.9600000 1.0220000 1.5430000 -1 NA NA NA NA NA NA
3 1 Abbasi 2020 INTERNATIONAL JOURNAL OF PEST MANAGEMENT Gossypium hirsutum Gossypium_hirsutum Perennial Non-Poaceae Whitefly Bemisia tabaci Bemisia_tabaci Generalist Fluid-feeding arthropods Growth / Development 3.00 3.00 1.8170000 3.3990000 1.0220000 1.5430000 -1 NA NA NA NA NA NA
4 1 Abbasi 2020 INTERNATIONAL JOURNAL OF PEST MANAGEMENT Gossypium hirsutum Gossypium_hirsutum Perennial Non-Poaceae Whitefly Bemisia tabaci Bemisia_tabaci Generalist Fluid-feeding arthropods Growth / Development 3.00 3.00 2.1230000 3.5190000 1.0220000 1.5430000 -1 NA NA NA NA NA NA
5 1 Abbasi 2020 INTERNATIONAL JOURNAL OF PEST MANAGEMENT Gossypium hirsutum Gossypium_hirsutum Perennial Non-Poaceae Whitefly Bemisia tabaci Bemisia_tabaci Generalist Fluid-feeding arthropods Growth / Development 3.00 3.00 2.5820000 3.6120000 1.0220000 1.5430000 -1 NA NA NA NA NA NA
6 2 Faraone 2020 Scientific Reports Solanum lycopersicum Solanum_lycopersicum Perennial Non-Poaceae Two spotted spider mite Tetranychus urticae Tetranychus_urticae Generalist Cell-feeding arthropods Mortality / Survivability 20.00 20.00 7.5000000 33.0000000 7.6026311 15.6524758 -1 5 5.000 1350.0000000 913.300000 489.6988871 5.366563e+01
7 3 Assis 2013 International Journal of Pest Management Helianthus annuus Helianthus_annuus Annual Non-Poaceae Sunflower caterpillar Chlosyne lacinia saundersii Chlosyne_lacinia_saundersii Specialist Chewing arthropods Feeding efficiency 10.00 10.00 31.9000000 20.7000000 11.0047263 15.7481427 1 10 10.000 0.1000000 0.510000 0.1581139 2.213594e-01
8 3 Assis 2013 International Journal of Pest Management Helianthus annuus Helianthus_annuus Annual Non-Poaceae Sunflower caterpillar Chlosyne lacinia saundersii Chlosyne_lacinia_saundersii Specialist Chewing arthropods Feeding efficiency 10.00 10.00 15.3000000 7.5000000 6.8621425 7.2732386 1 10 10.000 0.1000000 1.400000 0.1581139 1.581139e-01
9 3 Assis 2013 International Journal of Pest Management Helianthus annuus Helianthus_annuus Annual Non-Poaceae Sunflower caterpillar Chlosyne lacinia saundersii Chlosyne_lacinia_saundersii Specialist Chewing arthropods Growth / Development 10.00 10.00 5.6000000 2.4000000 2.4033310 1.3914022 1 10 10.000 0.1000000 0.510000 0.1581139 2.213594e-01
10 3 Assis 2013 International Journal of Pest Management Helianthus annuus Helianthus_annuus Annual Non-Poaceae Sunflower caterpillar Chlosyne lacinia saundersii Chlosyne_lacinia_saundersii Specialist Chewing arthropods Mortality / Survivability 10.00 10.00 16.0000000 27.0000000 13.5029256 17.6771321 -1 10 10.000 0.1000000 0.510000 0.1581139 2.213594e-01
11 4 Assis 2015 Journal of Agricultural Science & Technology Helianthus annuus Helianthus_annuus Annual Non-Poaceae Sunflower caterpillar Chlosyne lacinia saundersii Chlosyne_lacinia_saundersii Specialist Chewing arthropods Mortality / Survivability 10.00 10.00 72.9000000 40.8000000 31.4962855 44.1770189 1 10 10.000 0.6000000 1.000000 0.1264911 9.486830e-02
12 4 Assis 2015 Journal of Agricultural Science & Technology Helianthus annuus Helianthus_annuus Annual Non-Poaceae Sunflower caterpillar Chlosyne lacinia saundersii Chlosyne_lacinia_saundersii Specialist Chewing arthropods Feeding efficiency 10.00 10.00 50.0000000 62.0000000 9.9295519 12.0166551 1 10 10.000 0.6000000 1.000000 0.1264911 9.486830e-02
13 4 Assis 2015 Journal of Agricultural Science & Technology Helianthus annuus Helianthus_annuus Annual Non-Poaceae Sunflower caterpillar Chlosyne lacinia saundersii Chlosyne_lacinia_saundersii Specialist Chewing arthropods Growth / Development 10.00 10.00 132.0000000 152.7000000 25.7409402 16.0011250 1 10 10.000 0.6000000 1.000000 0.1264911 9.486830e-02
14 4 Assis 2015 Journal of Agricultural Science & Technology Helianthus annuus Helianthus_annuus Annual Non-Poaceae Sunflower caterpillar Chlosyne lacinia saundersii Chlosyne_lacinia_saundersii Specialist Chewing arthropods Growth / Development 10.00 10.00 21.7000000 22.8000000 3.1622777 2.3400855 -1 10 10.000 0.6000000 1.000000 0.1264911 9.486830e-02
15 4 Assis 2015 Journal of Agricultural Science & Technology Helianthus annuus Helianthus_annuus Annual Non-Poaceae Sunflower caterpillar Chlosyne lacinia saundersii Chlosyne_lacinia_saundersii Specialist Chewing arthropods Growth / Development 10.00 10.00 4.8000000 3.6000000 1.2965338 1.7708755 -1 10 10.000 0.6000000 1.000000 0.1264911 9.486830e-02
16 4 Assis 2015 Journal of Agricultural Science & Technology Helianthus annuus Helianthus_annuus Annual Non-Poaceae Sunflower caterpillar Chlosyne lacinia saundersii Chlosyne_lacinia_saundersii Specialist Chewing arthropods Growth / Development 10.00 10.00 8.7000000 9.0000000 4.6485482 5.3442492 1 10 10.000 0.6000000 1.000000 0.1264911 9.486830e-02
17 4 Assis 2015 Journal of Agricultural Science & Technology Helianthus annuus Helianthus_annuus Annual Non-Poaceae Sunflower caterpillar Chlosyne lacinia saundersii Chlosyne_lacinia_saundersii Specialist Chewing arthropods Growth / Development 10.00 10.00 49.8000000 21.5000000 12.3012601 4.9015304 1 10 10.000 0.6000000 1.000000 0.1264911 9.486830e-02
18 5 Barker 1989 Journal of Economic Entomology Lolium multiflorum Lolium_multiflorum Perennial Poaceae Weevil Listronotus bonariensis Listronotus_bonariensis Specialist Chewing arthropods Feeding efficiency 10.00 10.00 8.4000000 4.9000000 2.8460499 2.8460499 1 10 10.000 32.0000000 186.000000 34.7850543 7.273239e+01
19 5 Barker 1989 Journal of Economic Entomology Lolium multiflorum Lolium_multiflorum Perennial Poaceae Weevil Listronotus bonariensis Listronotus_bonariensis Specialist Chewing arthropods Feeding efficiency 5.00 5.00 12.3000000 7.8000000 3.3541020 3.3541020 1 10 10.000 32.0000000 186.000000 34.7850543 7.273239e+01
20 5 Barker 1989 Journal of Economic Entomology Lolium multiflorum Lolium_multiflorum Perennial Poaceae Weevil Listronotus bonariensis Listronotus_bonariensis Specialist Chewing arthropods Reproduction 5.00 5.00 3.7000000 0.9000000 1.3416408 1.3416408 1 10 10.000 32.0000000 186.000000 34.7850543 7.273239e+01
21 5 Barker 1989 Journal of Economic Entomology Lolium multiflorum Lolium_multiflorum Perennial Poaceae Weevil Listronotus bonariensis Listronotus_bonariensis Specialist Chewing arthropods Reproduction 10.00 10.00 4.4000000 2.0000000 2.2135944 2.2135944 1 10 10.000 32.0000000 186.000000 34.7850543 7.273239e+01
22 5 Barker 1989 Journal of Economic Entomology Lolium perenne Lolium_perenne Perennial Poaceae Weevil Listronotus bonariensis Listronotus_bonariensis Specialist Chewing arthropods Feeding efficiency 10.00 10.00 5.1000000 3.1000000 2.5298221 2.5298221 1 10 10.000 51.0000000 293.000000 82.2192192 1.170043e+02
23 5 Barker 1989 Journal of Economic Entomology Lolium perenne Lolium_perenne Perennial Poaceae Weevil Listronotus bonariensis Listronotus_bonariensis Specialist Chewing arthropods Feeding efficiency 5.00 5.00 7.5000000 3.4000000 3.8013156 3.8013156 1 10 10.000 51.0000000 293.000000 82.2192192 1.170043e+02
24 5 Barker 1989 Journal of Economic Entomology Lolium perenne Lolium_perenne Perennial Poaceae Weevil Listronotus bonariensis Listronotus_bonariensis Specialist Chewing arthropods Reproduction 5.00 5.00 2.6000000 0.4000000 1.1180340 1.1180340 1 10 10.000 51.0000000 293.000000 82.2192192 1.170043e+02
25 5 Barker 1989 Journal of Economic Entomology Lolium perenne Lolium_perenne Perennial Poaceae Weevil Listronotus bonariensis Listronotus_bonariensis Specialist Chewing arthropods Reproduction 10.00 10.00 3.1000000 0.5000000 2.5298221 2.5298221 1 10 10.000 51.0000000 293.000000 82.2192192 1.170043e+02
26 6 Basagli 2003 Neotropical Entomology Triticum aestivum Triticum_aestivum Annual Poaceae Greenbug (aphid) Schizaphis graminum Schizaphis_graminum Specialist Fluid-feeding arthropods Growth / Development 10.00 10.00 5.2000000 5.4000000 0.6324555 0.9803061 -1 NA NA NA NA NA NA
27 6 Basagli 2003 Neotropical Entomology Triticum aestivum Triticum_aestivum Annual Poaceae Greenbug (aphid) Schizaphis graminum Schizaphis_graminum Specialist Fluid-feeding arthropods Reproduction 10.00 10.00 21.1000000 17.0000000 2.3084627 4.7750393 1 NA NA NA NA NA NA
28 6 Basagli 2003 Neotropical Entomology Triticum aestivum Triticum_aestivum Annual Poaceae Greenbug (aphid) Schizaphis graminum Schizaphis_graminum Specialist Fluid-feeding arthropods Mortality / Survivability 10.00 10.00 71.0000000 68.0000000 12.1431462 29.4091822 1 NA NA NA NA NA NA
29 6 Basagli 2003 Neotropical Entomology Triticum aestivum Triticum_aestivum Annual Poaceae Greenbug (aphid) Schizaphis graminum Schizaphis_graminum Specialist Fluid-feeding arthropods Growth / Development 10.00 10.00 24.1000000 19.0000000 2.8776727 5.7553453 1 NA NA NA NA NA NA
30 6 Basagli 2003 Neotropical Entomology Triticum aestivum Triticum_aestivum Annual Poaceae Greenbug (aphid) Schizaphis graminum Schizaphis_graminum Specialist Fluid-feeding arthropods Growth / Development 10.00 10.00 5.2000000 5.4000000 0.6324555 0.9803061 -1 NA NA NA NA NA NA
31 6 Basagli 2003 Neotropical Entomology Triticum aestivum Triticum_aestivum Annual Poaceae Greenbug (aphid) Schizaphis graminum Schizaphis_graminum Specialist Fluid-feeding arthropods Reproduction 10.00 10.00 21.1000000 17.0000000 2.3084627 4.7750393 1 NA NA NA NA NA NA
32 6 Basagli 2003 Neotropical Entomology Triticum aestivum Triticum_aestivum Annual Poaceae Greenbug (aphid) Schizaphis graminum Schizaphis_graminum Specialist Fluid-feeding arthropods Reproduction 10.00 10.00 15.8000000 8.5000000 2.4981994 1.4546477 1 NA NA NA NA NA NA
33 6 Basgali 2003 Neotropical Entomology Triticum aestivum Triticum_aestivum Annual Poaceae Greenbug (aphid) Schizaphis graminum Schizaphis_graminum Specialist Fluid-feeding arthropods Reproduction 10.00 10.00 13.1000000 6.5000000 1.5178933 1.8341210 1 NA NA NA NA NA NA
34 7 Carvalho 1999 Anais da Sociedade Entomologica do Brasil Sorghum bicolor Sorghum_bicolor Annual Poaceae Greenbug (aphid) Schizaphis graminum Schizaphis_graminum Specialist Fluid-feeding arthropods Abundance / Preference 10.00 10.00 5.8000000 3.7666667 57.6588627 7.6948756 1 10 10.000 0.4000000 0.600000 0.3162278 3.162278e-01
35 7 Carvalho 1999 Anais da Sociedade Entomologica do Brasil Sorghum bicolor Sorghum_bicolor Annual Poaceae Greenbug (aphid) Schizaphis graminum Schizaphis_graminum Specialist Fluid-feeding arthropods Growth / Development 10.00 10.00 5.9000000 5.4000000 3.1622777 7.5894664 -1 10 10.000 0.4000000 0.600000 0.3162278 3.162278e-01
36 7 Carvalho 1999 Anais da Sociedade Entomologica do Brasil Sorghum bicolor Sorghum_bicolor Annual Poaceae Greenbug (aphid) Schizaphis graminum Schizaphis_graminum Specialist Fluid-feeding arthropods Reproduction 10.00 10.00 26.0000000 15.8000000 38.8960152 33.8363710 1 10 10.000 0.4000000 0.600000 0.3162278 3.162278e-01
37 7 Carvalho 1999 Anais da Sociedade Entomologica do Brasil Sorghum bicolor Sorghum_bicolor Annual Poaceae Greenbug (aphid) Schizaphis graminum Schizaphis_graminum Specialist Fluid-feeding arthropods Growth / Development 10.00 10.00 31.9000000 21.2000000 38.8960152 38.2635597 1 10 10.000 0.4000000 0.600000 0.3162278 3.162278e-01
38 7 Carvalho 1999 Anais da Sociedade Entomologica do Brasil Sorghum bicolor Sorghum_bicolor Annual Poaceae Greenbug (aphid) Schizaphis graminum Schizaphis_graminum Specialist Fluid-feeding arthropods Reproduction 10.00 10.00 219.3000000 121.5000000 418.3693344 332.3553821 1 10 10.000 0.4000000 0.600000 0.3162278 3.162278e-01
39 8 Cherry 2012 Journal of Entomological Sciences Stenotaphrum secundatum Stenotaphrum_secundatum Perennial Poaceae Southern chinch bug Blissus insularis Blissus_insularis Specialist Fluid-feeding arthropods Mortality / Survivability 5.00 5.00 3.8666667 3.8000000 1.9000000 2.6700000 1 NA NA NA NA NA NA
40 9 Correa 2005 Neotropical Entomology Cucumis sativus Cucumis_sativus Annual Non-Poaceae Whitefly Bemisia tabaci Bemisia_tabaci Generalist Fluid-feeding arthropods Reproduction 10.00 10.00 487.0000000 317.2000000 88.8916250 107.2644582 1 NA NA NA NA NA NA
41 9 Correa 2005 Neotropical Entomology Cucumis sativus Cucumis_sativus Annual Non-Poaceae Whitefly Bemisia tabaci Bemisia_tabaci Generalist Fluid-feeding arthropods Mortality / Survivability 10.00 10.00 87.5000000 70.5000000 4.1109610 11.0047263 1 NA NA NA NA NA NA
42 9 Correa 2005 Neotropical Entomology Cucumis sativus Cucumis_sativus Annual Non-Poaceae Whitefly Bemisia tabaci Bemisia_tabaci Generalist Fluid-feeding arthropods Reproduction 10.00 10.00 476.2000000 393.0000000 102.2996823 131.8669784 1 NA NA NA NA NA NA
43 9 Correa 2005 Neotropical Entomology Cucumis sativus Cucumis_sativus Annual Non-Poaceae Whitefly Bemisia tabaci Bemisia_tabaci Generalist Fluid-feeding arthropods Mortality / Survivability 10.00 10.00 86.8000000 81.6000000 4.0793382 7.4629753 1 NA NA NA NA NA NA
44 9 Correa 2005 Neotropical Entomology Cucumis sativus Cucumis_sativus Annual Non-Poaceae Whitefly Bemisia tabaci Bemisia_tabaci Generalist Fluid-feeding arthropods Growth / Development 4.00 4.00 19.2000000 24.3000000 0.6200000 0.5800000 -1 NA NA NA NA NA NA
45 9 Correa 2005 Neotropical Entomology Cucumis sativus Cucumis_sativus Annual Non-Poaceae Whitefly Bemisia tabaci Bemisia_tabaci Generalist Fluid-feeding arthropods Mortality / Survivability 4.00 4.00 91.7000000 90.3000000 3.2000000 2.7800000 1 NA NA NA NA NA NA
46 9 Correa 2005 Neotropical Entomology Cucumis sativus Cucumis_sativus Annual Non-Poaceae Whitefly Bemisia tabaci Bemisia_tabaci Generalist Fluid-feeding arthropods Mortality / Survivability 4.00 4.00 13.6000000 33.8000000 2.7200000 7.1200000 -1 NA NA NA NA NA NA
47 10 Costa 2006 Neotropical Entomology Triticum aestivum Triticum_aestivum Annual Poaceae Greenbug (aphid) Schizaphis graminum Schizaphis_graminum Specialist Fluid-feeding arthropods Growth / Development 10.00 10.00 0.3400000 0.2430000 0.0379473 0.0537587 1 NA NA NA NA NA NA
48 10 Costa 2006 Neotropical Entomology Triticum aestivum Triticum_aestivum Annual Poaceae Greenbug (aphid) Schizaphis graminum Schizaphis_graminum Specialist Fluid-feeding arthropods Reproduction 10.00 10.00 109.7000000 26.9000000 25.3298441 16.6335805 1 NA NA NA NA NA NA
49 10 Costa 2006 Neotropical Entomology Triticum aestivum Triticum_aestivum Annual Poaceae Greenbug (aphid) Schizaphis graminum Schizaphis_graminum Specialist Fluid-feeding arthropods Growth / Development 10.00 10.00 8.5000000 2.8000000 2.1187260 3.9528471 1 NA NA NA NA NA NA
50 10 Costa 2006 Neotropical Entomology Triticum aestivum Triticum_aestivum Annual Poaceae Greenbug (aphid) Schizaphis graminum Schizaphis_graminum Specialist Fluid-feeding arthropods Growth / Development 10.00 10.00 36.8000000 23.0000000 8.6013952 8.6962636 1 NA NA NA NA NA NA
51 10 Costa 2006 Neotropical Entomology Triticum aestivum Triticum_aestivum Annual Poaceae Greenbug (aphid) Schizaphis graminum Schizaphis_graminum Specialist Fluid-feeding arthropods Abundance / Preference 10.00 10.00 197.1900000 189.4100000 79.4996604 79.4996604 1 NA NA NA NA NA NA
52 10 Costa 2006 Neotropical Entomology Triticum aestivum Triticum_aestivum Annual Poaceae Greenbug (aphid) Schizaphis graminum Schizaphis_graminum Specialist Fluid-feeding arthropods Abundance / Preference 10.00 10.00 486.4500000 289.6200000 223.6362761 223.6362761 1 NA NA NA NA NA NA
53 11 Pereira 2010 Sci. Agric. Triticum aestivum Triticum_aestivum Annual Poaceae Greenbug (aphid) Schizaphis graminum Schizaphis_graminum Specialist Fluid-feeding arthropods Growth / Development 10.00 10.00 7.4000000 8.1000000 0.4743416 0.9803061 -1 NA NA NA NA NA NA
54 11 Pereira 2010 Sci. Agric. Triticum aestivum Triticum_aestivum Annual Poaceae Greenbug (aphid) Schizaphis graminum Schizaphis_graminum Specialist Fluid-feeding arthropods Reproduction 10.00 10.00 14.1000000 11.0000000 9.6765696 8.6330180 1 NA NA NA NA NA NA
55 11 Pereira 2010 Sci. Agric. Triticum aestivum Triticum_aestivum Annual Poaceae Greenbug (aphid) Schizaphis graminum Schizaphis_graminum Specialist Fluid-feeding arthropods Growth / Development 10.00 10.00 4.1000000 3.4000000 3.7947332 5.3126265 1 NA NA NA NA NA NA
56 11 Pereira 2010 Sci. Agric. Triticum aestivum Triticum_aestivum Annual Poaceae Greenbug (aphid) Schizaphis graminum Schizaphis_graminum Specialist Fluid-feeding arthropods Abundance / Preference 10.00 10.00 27.9000000 14.7000000 27.5118156 13.8507762 1 NA NA NA NA NA NA
57 11 Pereira 2010 Sci. Agric. Triticum aestivum Triticum_aestivum Annual Poaceae Greenbug (aphid) Schizaphis graminum Schizaphis_graminum Specialist Fluid-feeding arthropods Growth / Development 10.00 10.00 25.5000000 22.5000000 11.2893312 11.9534096 1 NA NA NA NA NA NA
58 11 Pereira 2010 Sci. Agric. Triticum aestivum Triticum_aestivum Annual Poaceae Greenbug (aphid) Schizaphis graminum Schizaphis_graminum Specialist Fluid-feeding arthropods Reproduction 10.00 10.00 0.3000000 0.2000000 0.0948683 0.0948683 1 NA NA NA NA NA NA
59 11 Pereira 2010 Sci. Agric. Triticum aestivum Triticum_aestivum Annual Poaceae Greenbug (aphid) Schizaphis graminum Schizaphis_graminum Specialist Fluid-feeding arthropods Feeding efficiency 10.00 10.00 13.4000000 5.0000000 4.7434165 4.4271887 1 NA NA NA NA NA NA
60 11 Pereira 2010 Sci. Agric. Triticum aestivum Triticum_aestivum Annual Poaceae Greenbug (aphid) Schizaphis graminum Schizaphis_graminum Specialist Fluid-feeding arthropods Feeding efficiency 25.00 25.00 90.5000000 67.2000000 59.0000000 52.5000000 1 NA NA NA NA NA NA
61 11 Pereira 2010 Sci. Agric. Triticum aestivum Triticum_aestivum Annual Poaceae Greenbug (aphid) Schizaphis graminum Schizaphis_graminum Specialist Fluid-feeding arthropods Feeding efficiency 24.00 17.00 222.2000000 92.2000000 116.5957118 136.8871068 1 NA NA NA NA NA NA
62 12 Costa 2011 Journal of Applied Entomology Triticum aestivum Triticum_aestivum Annual Poaceae Greenbug (aphid) Schizaphis graminum Schizaphis_graminum Specialist Fluid-feeding arthropods Feeding efficiency 25.00 25.00 105.1000000 170.4000000 78.6666666 146.5000000 -1 NA NA NA NA NA NA
63 12 Costa 2011 Journal of Applied Entomology Triticum aestivum Triticum_aestivum Annual Poaceae Greenbug (aphid) Schizaphis graminum Schizaphis_graminum Specialist Fluid-feeding arthropods Feeding efficiency 25.00 25.00 159.6000000 114.3333333 95.8333334 148.5000000 1 NA NA NA NA NA NA
64 12 Costa 2011 Journal of Applied Entomology Triticum aestivum Triticum_aestivum Annual Poaceae Greenbug (aphid) Schizaphis graminum Schizaphis_graminum Specialist Fluid-feeding arthropods Feeding efficiency 25.00 25.00 88.0000000 44.0000000 33.3333333 50.0000000 1 NA NA NA NA NA NA
65 13 Dias 2014 Environmental Entomology Triticum aestivum Triticum_aestivum Annual Poaceae Green aphid Sitobion avenae Sitobion_avenae Specialist Fluid-feeding arthropods Growth / Development 33.00 33.00 8.2000000 8.0000000 3.3318463 1.0340213 -1 NA NA NA NA NA NA
66 13 Dias 2014 Environmental Entomology Triticum aestivum Triticum_aestivum Annual Poaceae Green aphid Sitobion avenae Sitobion_avenae Specialist Fluid-feeding arthropods Growth / Development 30.00 30.00 9.4000000 11.6000000 1.3693064 1.7527122 -1 NA NA NA NA NA NA
67 13 Dias 2014 Environmental Entomology Triticum aestivum Triticum_aestivum Annual Poaceae Green aphid Sitobion avenae Sitobion_avenae Specialist Fluid-feeding arthropods Reproduction 33.00 33.00 9.1000000 5.2000000 2.1829338 4.4233132 1 NA NA NA NA NA NA
68 13 Dias 2014 Environmental Entomology Triticum aestivum Triticum_aestivum Annual Poaceae Green aphid Sitobion avenae Sitobion_avenae Specialist Fluid-feeding arthropods Reproduction 30.00 30.00 12.2000000 10.0000000 14.7885091 10.5710454 1 NA NA NA NA NA NA
69 13 Dias 2014 Environmental Entomology Triticum aestivum Triticum_aestivum Annual Poaceae Green aphid Sitobion avenae Sitobion_avenae Specialist Fluid-feeding arthropods Growth / Development 33.00 33.00 10.2000000 6.3000000 3.2744007 5.1126608 1 NA NA NA NA NA NA
70 13 Dias 2014 Environmental Entomology Triticum aestivum Triticum_aestivum Annual Poaceae Green aphid Sitobion avenae Sitobion_avenae Specialist Fluid-feeding arthropods Growth / Development 30.00 30.00 14.3000000 11.0000000 14.9528258 10.8449066 1 NA NA NA NA NA NA
71 13 Dias 2014 Environmental Entomology Triticum aestivum Triticum_aestivum Annual Poaceae Green aphid Sitobion avenae Sitobion_avenae Specialist Fluid-feeding arthropods Reproduction 33.00 33.00 26.8000000 14.8000000 16.7166773 10.8572234 1 NA NA NA NA NA NA
72 13 Dias 2014 Environmental Entomology Triticum aestivum Triticum_aestivum Annual Poaceae Green aphid Sitobion avenae Sitobion_avenae Specialist Fluid-feeding arthropods Reproduction 30.00 30.00 29.3000000 23.6000000 37.5189952 27.0574943 1 NA NA NA NA NA NA
73 13 Dias 2014 Environmental Entomology Triticum aestivum Triticum_aestivum Annual Poaceae Green aphid Sitobion avenae Sitobion_avenae Specialist Fluid-feeding arthropods Reproduction 33.00 33.00 3.1000000 3.2000000 1.3212494 1.0340213 1 NA NA NA NA NA NA
74 13 Dias 2014 Environmental Entomology Triticum aestivum Triticum_aestivum Annual Poaceae Green aphid Sitobion avenae Sitobion_avenae Specialist Fluid-feeding arthropods Reproduction 30.00 30.00 2.5000000 2.6000000 0.9859006 1.3145341 1 NA NA NA NA NA NA
75 13 Dias 2014 Environmental Entomology Triticum aestivum Triticum_aestivum Annual Poaceae Green aphid Sitobion avenae Sitobion_avenae Specialist Fluid-feeding arthropods Mortality / Survivability 33.00 33.00 0.6300000 0.7000000 0.5744563 0.2872281 1 NA NA NA NA NA NA
76 13 Dias 2014 Environmental Entomology Triticum aestivum Triticum_aestivum Annual Poaceae Green aphid Sitobion avenae Sitobion_avenae Specialist Fluid-feeding arthropods Mortality / Survivability 30.00 30.00 0.6700000 0.7000000 2.9029296 0.5477226 1 NA NA NA NA NA NA
77 13 Dias 2014 Environmental Entomology Triticum aestivum Triticum_aestivum Annual Poaceae Green aphid Sitobion avenae Sitobion_avenae Specialist Fluid-feeding arthropods Abundance / Preference 33.00 33.00 0.2500000 0.2200000 0.0574456 0.1148913 1 NA NA NA NA NA NA
78 13 Dias 2014 Environmental Entomology Triticum aestivum Triticum_aestivum Annual Poaceae Green aphid Sitobion avenae Sitobion_avenae Specialist Fluid-feeding arthropods Reproduction 33.00 33.00 19.6000000 10.6000000 17.1762423 9.2487459 1 NA NA NA NA NA NA
79 13 Dias 2014 Environmental Entomology Triticum aestivum Triticum_aestivum Annual Poaceae Green aphid Sitobion avenae Sitobion_avenae Specialist Fluid-feeding arthropods Growth / Development 33.00 33.00 11.8000000 10.9000000 2.7573901 3.8488570 -1 NA NA NA NA NA NA
80 13 Dias 2014 Environmental Entomology Triticum aestivum Triticum_aestivum Annual Poaceae Green aphid Sitobion avenae Sitobion_avenae Specialist Fluid-feeding arthropods Abundance / Preference 33.00 33.00 2.7400000 3.1900000 0.9191300 0.8042388 -1 NA NA NA NA NA NA
81 13 Dias 2014 Environmental Entomology Triticum aestivum Triticum_aestivum Annual Poaceae Green aphid Sitobion avenae Sitobion_avenae Specialist Fluid-feeding arthropods Reproduction 33.00 33.00 1.2900000 1.2400000 0.1148913 0.0574456 1 NA NA NA NA NA NA
82 13 Dias 2014 Environmental Entomology Triticum aestivum Triticum_aestivum Annual Poaceae Green aphid Sitobion avenae Sitobion_avenae Specialist Fluid-feeding arthropods Abundance / Preference 30.00 30.00 0.2100000 0.1600000 0.0547723 0.0547723 1 NA NA NA NA NA NA
83 13 Dias 2014 Environmental Entomology Triticum aestivum Triticum_aestivum Annual Poaceae Green aphid Sitobion avenae Sitobion_avenae Specialist Fluid-feeding arthropods Reproduction 30.00 30.00 21.4000000 13.4000000 23.9354758 12.7071633 1 NA NA NA NA NA NA
84 13 Dias 2014 Environmental Entomology Triticum aestivum Triticum_aestivum Annual Poaceae Green aphid Sitobion avenae Sitobion_avenae Specialist Fluid-feeding arthropods Growth / Development 30.00 30.00 14.9000000 15.8000000 3.5054244 3.2315631 -1 NA NA NA NA NA NA
85 13 Dias 2014 Environmental Entomology Triticum aestivum Triticum_aestivum Annual Poaceae Green aphid Sitobion avenae Sitobion_avenae Specialist Fluid-feeding arthropods Abundance / Preference 30.00 30.00 3.3500000 4.1800000 0.9859006 1.4240786 -1 NA NA NA NA NA NA
86 13 Dias 2014 Environmental Entomology Triticum aestivum Triticum_aestivum Annual Poaceae Green aphid Sitobion avenae Sitobion_avenae Specialist Fluid-feeding arthropods Reproduction 30.00 30.00 1.2300000 1.1800000 0.0547723 0.0547723 1 NA NA NA NA NA NA
87 14 Gomes 2005 Scientia Agricola Triticum aestivum Triticum_aestivum Annual Poaceae Greenbug (aphid) Schizaphis graminum Schizaphis_graminum Specialist Fluid-feeding arthropods Reproduction 10.00 10.00 0.3700000 0.2500000 0.0316228 0.0316228 1 NA NA NA NA NA NA
88 14 Gomes 2005 Scientia Agricola Triticum aestivum Triticum_aestivum Annual Poaceae Greenbug (aphid) Schizaphis graminum Schizaphis_graminum Specialist Fluid-feeding arthropods Abundance / Preference 10.00 10.00 30.3000000 11.7000000 11.1206764 6.2296870 1 NA NA NA NA NA NA
89 15 Gomes 2008 Ciencia Rural Solanum tuberosum Solanum_tuberosum Perennial Non-Poaceae Potato aphid Myzus persicae Myzus_persicae Generalist Fluid-feeding arthropods Abundance / Preference 7.00 7.00 31.1000000 26.1000000 7.6726788 11.8794234 1 NA NA NA NA NA NA
90 15 Gomes 2008 Ciencia Rural Solanum tuberosum Solanum_tuberosum Perennial Non-Poaceae Potato aphid Myzus persicae Myzus_persicae Generalist Fluid-feeding arthropods Reproduction 7.00 7.00 220.9000000 94.6000000 72.4671284 24.3938271 1 NA NA NA NA NA NA
91 16 Gomes 2008 Neotropical Entomology Solanum tuberosum Solanum_tuberosum Perennial Non-Poaceae Potato aphid Myzus persicae Myzus_persicae Generalist Fluid-feeding arthropods Abundance / Preference 8.00 8.00 2.0666667 2.1000000 0.6788225 0.7731034 1 NA NA NA NA NA NA
92 16 Gomes 2008 Neotropical Entomology Solanum tuberosum Solanum_tuberosum Perennial Non-Poaceae Potato aphid Myzus persicae Myzus_persicae Generalist Fluid-feeding arthropods Abundance / Preference 8.00 8.00 4.0333333 4.5000000 1.0276619 1.2067956 1 NA NA NA NA NA NA
93 16 Gomes 2008 Neotropical Entomology Solanum tuberosum Solanum_tuberosum Perennial Non-Poaceae Potato aphid Myzus persicae Myzus_persicae Generalist Fluid-feeding arthropods Growth / Development 8.00 8.00 6.5000000 7.3000000 0.2545584 0.4242641 -1 NA NA NA NA NA NA
94 16 Gomes 2008 Neotropical Entomology Solanum tuberosum Solanum_tuberosum Perennial Non-Poaceae Potato aphid Myzus persicae Myzus_persicae Generalist Fluid-feeding arthropods Reproduction 8.00 8.00 10.8000000 10.9000000 0.9616652 0.9899495 1 NA NA NA NA NA NA
95 16 Gomes 2008 Neotropical Entomology Solanum tuberosum Solanum_tuberosum Perennial Non-Poaceae Potato aphid Myzus persicae Myzus_persicae Generalist Fluid-feeding arthropods Reproduction 8.00 8.00 0.4000000 0.3000000 0.0282843 0.0282843 1 NA NA NA NA NA NA
96 16 Gomes 2008 Neotropical Entomology Solanum tuberosum Solanum_tuberosum Perennial Non-Poaceae Potato aphid Myzus persicae Myzus_persicae Generalist Fluid-feeding arthropods Reproduction 8.00 8.00 4.7000000 2.4000000 0.9899495 0.3394113 1 NA NA NA NA NA NA
97 16 Gomes 2008 Neotropical Entomology Solanum tuberosum Solanum_tuberosum Perennial Non-Poaceae Potato aphid Myzus persicae Myzus_persicae Generalist Fluid-feeding arthropods Reproduction 8.00 8.00 43.4000000 23.9000000 7.2973420 3.4789654 1 NA NA NA NA NA NA
98 16 Gomes 2008 Neotropical Entomology Solanum tuberosum Solanum_tuberosum Perennial Non-Poaceae Potato aphid Myzus persicae Myzus_persicae Generalist Fluid-feeding arthropods Growth / Development 8.00 8.00 17.3000000 19.4000000 0.9050967 2.1496046 1 NA NA NA NA NA NA
99 17 Goussain 2002 Neotropical Entomology Zea mays Zea_mays Annual Poaceae Armyworm Spodoptera frugiperda Spodoptera_frugiperda Generalist Chewing arthropods Mortality / Survivability 20.00 20.00 3.2505000 6.7701000 4.4444087 5.7408809 -1 20 20.000 1.0000000 1.400000 0.0894427 1.341641e-01
100 17 Goussain 2002 Neotropical Entomology Zea mays Zea_mays Annual Poaceae Armyworm Spodoptera frugiperda Spodoptera_frugiperda Generalist Chewing arthropods Mortality / Survivability 20.00 20.00 5.2153000 44.2692000 52.1728325 411.4150416 -1 20 20.000 1.0000000 1.400000 0.0894427 1.341641e-01
101 17 Goussain 2002 Neotropical Entomology Zea mays Zea_mays Annual Poaceae Armyworm Spodoptera frugiperda Spodoptera_frugiperda Generalist Chewing arthropods Growth / Development 20.00 20.00 16.6000000 17.4000000 1.3416408 1.3863621 -1 20 20.000 1.0000000 1.400000 0.0894427 1.341641e-01
102 17 Goussain 2002 Neotropical Entomology Zea mays Zea_mays Annual Poaceae Armyworm Spodoptera frugiperda Spodoptera_frugiperda Generalist Chewing arthropods Growth / Development 20.00 20.00 9.9000000 10.3000000 0.9838699 0.8944272 -1 20 20.000 1.0000000 1.400000 0.0894427 1.341641e-01
103 17 Goussain 2002 Neotropical Entomology Zea mays Zea_mays Annual Poaceae Armyworm Spodoptera frugiperda Spodoptera_frugiperda Generalist Chewing arthropods Mortality / Survivability 20.00 20.00 35.0000000 39.2000000 33.3174129 38.4603692 -1 20 20.000 1.0000000 1.400000 0.0894427 1.341641e-01
104 17 Goussain 2002 Neotropical Entomology Zea mays Zea_mays Annual Poaceae Armyworm Spodoptera frugiperda Spodoptera_frugiperda Generalist Chewing arthropods Growth / Development 20.00 20.00 0.3000000 0.3000000 0.0447214 0.0447214 1 20 20.000 1.0000000 1.400000 0.0894427 1.341641e-01
105 17 Goussain 2002 Neotropical Entomology Zea mays Zea_mays Annual Poaceae Armyworm Spodoptera frugiperda Spodoptera_frugiperda Generalist Chewing arthropods Mortality / Survivability 20.00 20.00 32.9000000 7.8000000 29.1136051 10.9567331 -1 20 20.000 1.0000000 1.400000 0.0894427 1.341641e-01
106 17 Goussain 2002 Neotropical Entomology Zea mays Zea_mays Annual Poaceae Armyworm Spodoptera frugiperda Spodoptera_frugiperda Generalist Chewing arthropods Mortality / Survivability 20.00 20.00 14.5000000 36.3000000 23.7023206 21.4662526 -1 20 20.000 1.0000000 1.400000 0.0894427 1.341641e-01
107 17 Goussain 2002 Neotropical Entomology Zea mays Zea_mays Annual Poaceae Armyworm Spodoptera frugiperda Spodoptera_frugiperda Generalist Chewing arthropods Mortality / Survivability 20.00 20.00 5.4000000 4.1000000 13.8636215 10.2859127 -1 20 20.000 1.0000000 1.400000 0.0894427 1.341641e-01
108 17 Goussain 2002 Neotropical Entomology Zea mays Zea_mays Annual Poaceae Armyworm Spodoptera frugiperda Spodoptera_frugiperda Generalist Chewing arthropods Mortality / Survivability 20.00 20.00 4.2000000 10.8000000 13.0586370 20.5718254 -1 20 20.000 1.0000000 1.400000 0.0894427 1.341641e-01
109 17 Goussain 2002 Neotropical Entomology Zea mays Zea_mays Annual Poaceae Armyworm Spodoptera frugiperda Spodoptera_frugiperda Generalist Chewing arthropods Mortality / Survivability 20.00 20.00 7.9000000 20.9000000 14.3108351 22.8526147 -1 20 20.000 1.0000000 1.400000 0.0894427 1.341641e-01
110 18 Goussain 2005 Neotropical Entomology Triticum aestivum Triticum_aestivum Annual Poaceae Greenbug (aphid) Schizaphis graminum Schizaphis_graminum Specialist Fluid-feeding arthropods Growth / Development 10.00 10.00 6.4000000 6.6000000 0.6324555 0.3162278 -1 NA NA NA NA NA NA
111 18 Goussain 2005 Neotropical Entomology Triticum aestivum Triticum_aestivum Annual Poaceae Greenbug (aphid) Schizaphis graminum Schizaphis_graminum Specialist Fluid-feeding arthropods Reproduction 10.00 10.00 21.7000000 22.1000000 5.0596443 4.1109610 1 NA NA NA NA NA NA
112 18 Goussain 2005 Neotropical Entomology Triticum aestivum Triticum_aestivum Annual Poaceae Greenbug (aphid) Schizaphis graminum Schizaphis_graminum Specialist Fluid-feeding arthropods Growth / Development 10.00 10.00 9.5000000 9.1000000 4.1109610 4.4271887 1 NA NA NA NA NA NA
113 18 Goussain 2005 Neotropical Entomology Triticum aestivum Triticum_aestivum Annual Poaceae Greenbug (aphid) Schizaphis graminum Schizaphis_graminum Specialist Fluid-feeding arthropods Growth / Development 10.00 10.00 37.6000000 37.6000000 2.5298221 5.3758720 1 NA NA NA NA NA NA
114 18 Goussain 2005 Neotropical Entomology Triticum aestivum Triticum_aestivum Annual Poaceae Greenbug (aphid) Schizaphis graminum Schizaphis_graminum Specialist Fluid-feeding arthropods Reproduction 10.00 10.00 89.4000000 72.2000000 20.5548048 21.1872603 1 NA NA NA NA NA NA
115 18 Goussain 2005 Neotropical Entomology Triticum aestivum Triticum_aestivum Annual Poaceae Greenbug (aphid) Schizaphis graminum Schizaphis_graminum Specialist Fluid-feeding arthropods Feeding efficiency 14.00 14.00 28.1000000 19.7000000 16.8374582 11.5991379 1 NA NA NA NA NA NA
116 19 Griffin 2015 Journal of Pest Science Triticum aestivum Triticum_aestivum Annual Poaceae Field slug Deroceras reticulatrum Deroceras_reticulatrum Generalist Rasping / grazing invertebrates Feeding efficiency 9.00 9.00 27.9186000 12.6447000 26.2911000 15.7746000 1 3 3.000 4.9900000 18.360000 1.2643971 3.256255e+00
117 19 Griffin 2015 Journal of Pest Science Triticum aestivum Triticum_aestivum Annual Poaceae Field slug Deroceras reticulatrum Deroceras_reticulatrum Generalist Rasping / grazing invertebrates Feeding efficiency 5.00 5.00 66.9700000 17.1100000 36.5373508 20.3705793 1 3 3.000 4.9900000 18.360000 1.2643971 3.256255e+00
118 20 He 2015 Crop Protection Oryza sativa Oryza_sativa Annual Poaceae Brown planthopper Nilaparvata lugens Nilaparvata_lugens Specialist Fluid-feeding arthropods Reproduction 10.00 10.00 109.9056000 65.5660000 73.0909885 55.3257869 1 NA NA NA NA NA NA
119 20 He 2015 Crop Protection Oryza sativa Oryza_sativa Annual Poaceae Brown planthopper Nilaparvata lugens Nilaparvata_lugens Specialist Fluid-feeding arthropods Mortality / Survivability 10.00 10.00 3.4340000 2.7155000 1.0957292 2.2864849 1 NA NA NA NA NA NA
120 20 He 2015 Crop Protection Oryza sativa Oryza_sativa Annual Poaceae Brown planthopper Nilaparvata lugens Nilaparvata_lugens Specialist Fluid-feeding arthropods Growth / Development 7.00 7.00 48.2820500 42.8571000 42.5807216 48.8004861 1 NA NA NA NA NA NA
121 20 He 2015 Crop Protection Oryza sativa Oryza_sativa Annual Poaceae Brown planthopper Nilaparvata lugens Nilaparvata_lugens Specialist Fluid-feeding arthropods Mortality / Survivability 7.00 7.00 37.1950000 25.7545000 35.7758492 42.5238379 1 NA NA NA NA NA NA
122 20 He 2015 Crop Protection Oryza sativa Oryza_sativa Annual Poaceae Brown planthopper Nilaparvata lugens Nilaparvata_lugens Specialist Fluid-feeding arthropods Feeding efficiency 15.00 15.00 12.0527500 3.8013500 18.3645251 6.2103288 1 NA NA NA NA NA NA
123 20 He 2015 Crop Protection Oryza sativa Oryza_sativa Annual Poaceae Brown planthopper Nilaparvata lugens Nilaparvata_lugens Specialist Fluid-feeding arthropods Abundance / Preference 10.00 10.00 5.5950000 3.8050000 11.0047263 9.4646970 1 NA NA NA NA NA NA
124 21 Hogendorp 2009 Journal of Economic Entomology Solenostemon scutellarioides Solenostemon_scutellarioides Perennial Non-Poaceae Citrus mealybug Planococcus citri Planococcus_citri Generalist Fluid-feeding arthropods Reproduction 15.00 15.00 206.8000000 199.5000000 22.4633034 23.2379001 1 12 12.000 1180.0000000 1046.000000 303.4553015 1.368320e+02
125 21 Hogendorp 2009 Journal of Economic Entomology Solenostemon scutellarioides Solenostemon_scutellarioides Perennial Non-Poaceae Citrus mealybug Planococcus citri Planococcus_citri Generalist Fluid-feeding arthropods Growth / Development 15.00 15.00 3.0000000 2.9000000 0.1161895 0.1161895 1 12 12.000 1180.0000000 1046.000000 303.4553015 1.368320e+02
126 21 Hogendorp 2009 Journal of Economic Entomology Solenostemon scutellarioides Solenostemon_scutellarioides Perennial Non-Poaceae Citrus mealybug Planococcus citri Planococcus_citri Generalist Fluid-feeding arthropods Growth / Development 15.00 15.00 34.5000000 35.7000000 0.7745967 1.1618950 -1 12 12.000 1180.0000000 1046.000000 303.4553015 1.368320e+02
127 21 Hogendorp 2009 Journal of Economic Entomology Solenostemon scutellarioides Solenostemon_scutellarioides Perennial Non-Poaceae Citrus mealybug Planococcus citri Planococcus_citri Generalist Fluid-feeding arthropods Reproduction 12.00 12.00 244.8000000 223.1000000 19.7453792 19.3989690 1 12 12.000 1180.0000000 1046.000000 303.4553015 1.368320e+02
128 21 Hogendorp 2009 Journal of Economic Entomology Solenostemon scutellarioides Solenostemon_scutellarioides Perennial Non-Poaceae Citrus mealybug Planococcus citri Planococcus_citri Generalist Fluid-feeding arthropods Growth / Development 12.00 12.00 3.2000000 3.0000000 0.1732051 0.1732051 1 12 12.000 1180.0000000 1046.000000 303.4553015 1.368320e+02
129 21 Hogendorp 2009 Journal of Economic Entomology Solenostemon scutellarioides Solenostemon_scutellarioides Perennial Non-Poaceae Citrus mealybug Planococcus citri Planococcus_citri Generalist Fluid-feeding arthropods Growth / Development 12.00 12.00 35.7000000 35.3000000 0.6928203 0.6928203 -1 12 12.000 1180.0000000 1046.000000 303.4553015 1.368320e+02
130 22 Hogendorp 2009 HortScience Ficus lyrata Ficus_lyrata Perennial Non-Poaceae Citrus mealybug Planococcus citri Planococcus_citri Generalist Fluid-feeding arthropods Reproduction 43.00 41.00 132.3000000 152.0000000 76.5908820 76.8374908 1 5 5.000 3774.9000000 6117.400000 296.0330395 2.028561e+02
131 22 Hogendorp 2009 HortScience Ficus lyrata Ficus_lyrata Perennial Non-Poaceae Citrus mealybug Planococcus citri Planococcus_citri Generalist Fluid-feeding arthropods Growth / Development 43.00 41.00 2.3000000 2.2000000 0.6557439 0.7043437 1 5 5.000 3774.9000000 6117.400000 296.0330395 2.028561e+02
132 22 Hogendorp 2009 HortScience Ficus lyrata Ficus_lyrata Perennial Non-Poaceae Citrus mealybug Planococcus citri Planococcus_citri Generalist Fluid-feeding arthropods Growth / Development 43.00 41.00 67.8000000 68.0000000 4.0656119 3.9699370 -1 5 5.000 3774.9000000 6117.400000 296.0330395 2.028561e+02
133 23 Hogendorp 2010 Journal of Entomological Sciences Euphorbia pulcherrima Euphorbia_pulcherrima Perennial Non-Poaceae Greenhouse whitefly Trialeurodes vaporariorum Trialeurodes_vaporariorum Generalist Fluid-feeding arthropods Abundance / Preference 6.66 6.66 57.3333333 63.8666667 19.0498493 17.4498168 1 15 4.666 803.8000000 1073.750000 148.2190727 8.404920e+01
134 23 Hogendorp 2010 Journal of Entomological Sciences Euphorbia pulcherrima Euphorbia_pulcherrima Perennial Non-Poaceae Greenhouse whitefly Trialeurodes vaporariorum Trialeurodes_vaporariorum Generalist Fluid-feeding arthropods Mortality / Survivability 6.66 6.66 38.5333333 40.8666667 17.7508982 17.6653051 1 15 4.666 803.8000000 1073.500000 148.2190727 8.404920e+01
135 24 Hou 2010 Journal of Economic Entomology Oryza sativa Oryza_sativa Annual Poaceae Asiatic rice borer Chilo suppressalis Chilo_suppressalis Generalist Boring arthropods Feeding efficiency 25.00 25.00 20.2300000 33.1450000 25.0750000 36.6500000 -1 3 3.000 51.9900000 65.450000 1.6454483 2.736640e+00
136 24 Hou 2010 Journal of Economic Entomology Oryza sativa Oryza_sativa Annual Poaceae Asiatic rice borer Chilo suppressalis Chilo_suppressalis Generalist Boring arthropods Growth / Development 25.00 25.00 5.4350000 3.3900000 3.6500000 2.7250000 1 3 3.000 51.9900000 65.450000 1.6454483 2.736640e+00
137 24 Hou 2010 Journal of Economic Entomology Oryza sativa Oryza_sativa Annual Poaceae Asiatic rice borer Chilo suppressalis Chilo_suppressalis Generalist Boring arthropods Feeding efficiency 25.00 25.00 46.2450000 27.3700000 27.5500000 17.3500000 1 3 3.000 51.9900000 65.450000 1.6454483 2.736640e+00
138 24 Hou 2010 Journal of Economic Entomology Oryza sativa Oryza_sativa Annual Poaceae Asiatic rice borer Chilo suppressalis Chilo_suppressalis Generalist Boring arthropods Growth / Development 6.00 6.00 41.0450000 17.3000000 6.4421580 5.6950637 1 3 3.000 51.9900000 65.450000 1.6454483 2.736640e+00
139 25 Keeping 2002 Agriculturaland Forest Entomology Saccharum spp. Saccharum_spp. Perennial Poaceae African stalk borer Eldana saccharina Eldana_saccharina Specialist Boring arthropods Feeding efficiency 8.00 8.00 113.9100000 86.6100000 28.0297128 28.8782409 1 6 6.000 0.1450000 0.305000 0.0367423 8.573210e-02
140 25 Keeping 2002 Agriculturaland Forest Entomology Saccharum spp. Saccharum_spp. Perennial Poaceae African stalk borer Eldana saccharina Eldana_saccharina Specialist Boring arthropods Feeding efficiency 8.00 8.00 111.6300000 87.8800000 22.7405541 21.8637417 1 6 6.000 0.1450000 0.305000 0.0367423 8.573210e-02
141 25 Keeping 2002 Agriculturaland Forest Entomology Saccharum spp. Saccharum_spp. Perennial Poaceae African stalk borer Eldana saccharina Eldana_saccharina Specialist Boring arthropods Abundance / Preference 8.00 8.00 109.6400000 7.8900000 259.1122089 22.7688384 1 6 6.000 0.1450000 0.305000 0.0367423 8.573210e-02
142 25 Keeping 2002 Agriculturaland Forest Entomology Saccharum spp. Saccharum_spp. Perennial Poaceae African stalk borer Eldana saccharina Eldana_saccharina Specialist Boring arthropods Growth / Development 8.00 8.00 114.6300000 91.8100000 24.9467272 24.4941789 1 6 6.000 0.1450000 0.305000 0.0367423 8.573210e-02
143 26 Keeping 2006 Journal of Applied Entomology Saccharum spp. Saccharum_spp. Perennial Poaceae African stalk borer Eldana saccharina Eldana_saccharina Specialist Boring arthropods Feeding efficiency 6.00 6.00 169.9825000 94.9950000 155.8304137 152.7073143 1 3 3.000 0.1700000 0.360000 0.0692820 1.039230e-01
144 26 Keeping 2006 Journal of Applied Entomology Saccharum spp. Saccharum_spp. Perennial Poaceae African stalk borer Eldana saccharina Eldana_saccharina Specialist Boring arthropods Mortality / Survivability 6.00 6.00 40.5800000 26.5450000 34.7460120 34.9848373 1 3 3.000 0.1700000 0.360000 0.0692820 1.039230e-01
145 26 Keeping 2006 Journal of Applied Entomology Saccharum spp. Saccharum_spp. Perennial Poaceae African stalk borer Eldana saccharina Eldana_saccharina Specialist Boring arthropods Growth / Development 6.00 6.00 2.4825000 1.5450000 2.4372423 2.4188711 1 3 3.000 0.1700000 0.360000 0.0692820 1.039230e-01
146 27 Keeping 2013 Plant and Soil Saccharum spp. Saccharum_spp. Perennial Poaceae African stalk borer Eldana saccharina Eldana_saccharina Specialist Boring arthropods Feeding efficiency 6.00 6.00 12.5026738 9.8823529 1.1614336 1.7727145 1 6 6.000 0.1155000 0.145300 0.0156767 1.935100e-02
147 27 Keeping 2013 Plant and Soil Saccharum spp. Saccharum_spp. Perennial Poaceae African stalk borer Eldana saccharina Eldana_saccharina Specialist Boring arthropods Feeding efficiency 6.00 6.00 2.8974937 2.2026106 0.5021609 0.5021220 1 6 6.000 0.1155000 0.145300 0.0156767 1.935100e-02
148 27 Keeping 2013 Plant and Soil Saccharum spp. Saccharum_spp. Perennial Poaceae African stalk borer Eldana saccharina Eldana_saccharina Specialist Boring arthropods Abundance / Preference 6.00 6.00 3.9052720 2.8003603 1.6809781 0.9823736 1 6 6.000 0.1155000 0.145300 0.0156767 1.935100e-02
149 28 Keeping 2014 Frontiers in Plant Science Saccharum spp. Saccharum_spp. Perennial Poaceae African stalk borer Eldana saccharina Eldana_saccharina Specialist Boring arthropods Mortality / Survivability 8.00 8.00 2.5225000 1.1060000 1.4467405 0.8499424 1 8 8.000 1.9000000 5.800000 0.2828427 3.111270e+00
150 28 Keeping 2014 Frontiers in Plant Science Saccharum spp. Saccharum_spp. Perennial Poaceae African stalk borer Eldana saccharina Eldana_saccharina Specialist Boring arthropods Feeding efficiency 8.00 8.00 6.9930000 2.7940000 4.2709250 1.4919953 1 8 8.000 1.9000000 5.800000 0.2828427 3.111270e+00
151 28 Keeping 2014 Frontiers in Plant Science Saccharum spp. Saccharum_spp. Perennial Poaceae Sugarcane thrips Fulmekiola serrata Fulmekiola_serrata Specialist Cell-feeding arthropods Abundance / Preference 8.00 8.00 23.9300000 22.2750000 7.2124892 6.7882251 1 8 8.000 1.9000000 5.800000 0.2828427 3.111270e+00
152 29 Korndorfer 2004 Florida Entomologist Oryza sativa Oryza_sativa Perennial Poaceae Tropical sod webworm Herpetogramma phaeopteralis Herpetogramma_phaeopteralis Generalist Chewing arthropods Growth / Development 10.00 10.00 30.9200000 30.0800000 33.6466343 33.4568976 1 15 15.000 0.6400000 1.160000 0.7513588 1.704113e+00
153 29 Korndorfer 2004 Florida Entomologist Oryza sativa Oryza_sativa Perennial Poaceae Tropical sod webworm Herpetogramma phaeopteralis Herpetogramma_phaeopteralis Generalist Chewing arthropods Growth / Development 15.00 15.00 27.6800000 24.1800000 51.8205172 54.6865248 1 15 15.000 0.6400000 1.160000 0.7513588 1.704113e+00
154 29 Korndorfer 2004 Florida Entomologist Oryza sativa Oryza_sativa Perennial Poaceae Tropical sod webworm Herpetogramma phaeopteralis Herpetogramma_phaeopteralis Generalist Chewing arthropods Growth / Development 15.00 15.00 11.4000000 11.8800000 4.4152010 6.1193137 -1 15 15.000 0.6400000 1.160000 0.7513588 1.704113e+00
155 29 Korndorfer 2004 Florida Entomologist Oryza sativa Oryza_sativa Perennial Poaceae Tropical sod webworm Herpetogramma phaeopteralis Herpetogramma_phaeopteralis Generalist Chewing arthropods Growth / Development 15.00 15.00 17.4000000 17.6200000 4.4152010 6.4291524 -1 15 15.000 0.6400000 1.160000 0.7513588 1.704113e+00
156 30 Korndorfer 2011 Neotropical Entomology Saccharum spp. Saccharum_spp. Perennial Poaceae Spittlebug Mahanarva fimbriolata Mahanarva_fimbriolata Specialist Fluid-feeding arthropods Mortality / Survivability 10.00 10.00 41.0000000 59.5000000 6.7356514 6.7356514 -1 10 10.000 1.0500000 2.600000 4.0160926 4.016093e+00
157 30 Korndorfer 2011 Neotropical Entomology Saccharum spp. Saccharum_spp. Perennial Poaceae Spittlebug Mahanarva fimbriolata Mahanarva_fimbriolata Specialist Fluid-feeding arthropods Growth / Development 10.00 10.00 48.5000000 49.6000000 1.8341210 1.8341210 -1 10 10.000 1.0500000 2.600000 4.0160926 4.016093e+00
158 30 Korndorfer 2011 Neotropical Entomology Saccharum spp. Saccharum_spp. Perennial Poaceae Spittlebug Mahanarva fimbriolata Mahanarva_fimbriolata Specialist Fluid-feeding arthropods Growth / Development 10.00 10.00 3.9000000 3.7000000 0.4427189 0.4427189 -1 10 10.000 1.1000000 2.600000 4.0160926 4.016093e+00
159 30 Korndorfer 2011 Neotropical Entomology Saccharum spp. Saccharum_spp. Perennial Poaceae Spittlebug Mahanarva fimbriolata Mahanarva_fimbriolata Specialist Fluid-feeding arthropods Reproduction 10.00 10.00 376.0000000 18.4200000 1143.1633742 58.2491545 1 10 10.000 1.1000000 2.600000 4.0160926 4.016093e+00
160 30 Korndorfer 2011 Neotropical Entomology Saccharum spp. Saccharum_spp. Perennial Poaceae Spittlebug Mahanarva fimbriolata Mahanarva_fimbriolata Specialist Fluid-feeding arthropods Mortality / Survivability 10.00 10.00 88.2000000 5.2200000 243.4953798 16.5070894 1 10 10.000 1.1000000 2.600000 4.0160926 4.016093e+00
161 30 Korndorfer 2011 Neotropical Entomology Saccharum spp. Saccharum_spp. Perennial Poaceae Spittlebug Mahanarva fimbriolata Mahanarva_fimbriolata Specialist Fluid-feeding arthropods Growth / Development 10.00 10.00 13.9000000 12.5000000 1.0751744 1.0751744 1 10 10.000 1.1000000 2.600000 4.0160926 4.016093e+00
162 30 Korndorfer 2011 Neotropical Entomology Saccharum spp. Saccharum_spp. Perennial Poaceae Spittlebug Mahanarva fimbriolata Mahanarva_fimbriolata Specialist Fluid-feeding arthropods Growth / Development 10.00 10.00 15.2000000 13.2000000 1.0435516 1.0435516 1 10 10.000 1.1000000 2.600000 4.0160926 4.016093e+00
163 31 Kvedaras 2007 Entomologia Experimentalis et Applicata Saccharum spp. Saccharum_spp. Perennial Poaceae African stalk borer Eldana saccharina Eldana_saccharina Specialist Boring arthropods Growth / Development 6.00 6.00 0.0024380 0.0011000 0.0018518 0.0011023 1 6 6.000 0.1750000 0.330000 0.0379671 4.164130e-02
164 31 Kvedaras 2007 Entomologia Experimentalis et Applicata Saccharum spp. Saccharum_spp. Perennial Poaceae African stalk borer Eldana saccharina Eldana_saccharina Specialist Boring arthropods Feeding efficiency 6.00 6.00 0.6398750 0.3670750 0.2359471 0.2087578 1 6 6.000 0.1750000 0.330000 0.0379671 4.164130e-02
165 32 Kvedaras 2007 Bulletinof Entomological Research Saccharum spp. Saccharum_spp. Perennial Poaceae African stalk borer Eldana saccharina Eldana_saccharina Specialist Boring arthropods Mortality / Survivability 6.00 6.00 5.9891900 3.6465000 4.5070611 2.5359567 1 6 6.000 0.1540000 0.287000 0.0531539 5.339890e-02
166 32 Kvedaras 2007 Bulletinof Entomological Research Saccharum spp. Saccharum_spp. Perennial Poaceae African stalk borer Eldana saccharina Eldana_saccharina Specialist Boring arthropods Feeding efficiency 6.00 6.00 10.3626000 3.4994000 5.2066354 2.2988461 1 6 6.000 0.1540000 0.287000 0.5315393 5.339890e-02
167 33 Kvedaras 2007 International Journal of Pest Management Saccharum spp. Saccharum_spp. Perennial Poaceae African stalk borer Eldana saccharina Eldana_saccharina Specialist Boring arthropods Growth / Development 6.00 6.00 0.0589625 0.0503450 0.0542256 0.0423639 1 6 6.000 0.1809000 0.343400 0.0602574 6.221700e-02
168 33 Kvedaras 2007 International Journal of Pest Management Saccharum spp. Saccharum_spp. Perennial Poaceae African stalk borer Eldana saccharina Eldana_saccharina Specialist Boring arthropods Feeding efficiency 6.00 6.00 4.3358250 3.9231500 3.3697018 2.8055231 1 6 6.000 0.1809000 0.343400 0.0602574 6.221700e-02
169 34 Massey 2006 Journal of AnimalEcology Poa annua Poa_annua Annual Poaceae African army worm Spodoptera exempta Spodoptera_exempta Specialist Chewing arthropods Feeding efficiency 10.00 10.00 0.6800000 0.3200000 0.1581139 0.1581139 1 10 10.000 0.8100000 1.950000 0.4743416 6.957011e-01
170 34 Massey 2006 Journal of AnimalEcology Lolium perenne Lolium_perenne Perennial Poaceae African army worm Spodoptera exempta Spodoptera_exempta Specialist Chewing arthropods Feeding efficiency 10.00 10.00 0.6800000 0.3300000 0.1264911 0.1264911 1 10 10.000 0.5400000 4.680000 0.3162278 1.075174e+00
171 34 Massey 2006 Journal of AnimalEcology Festuca ovina Festuca_ovina Perennial Poaceae African army worm Spodoptera exempta Spodoptera_exempta Specialist Chewing arthropods Feeding efficiency 10.00 10.00 0.8300000 0.1800000 0.0632456 0.0948683 1 10 10.000 0.5200000 2.440000 0.1264911 5.059644e-01
172 34 Massey 2006 Journal of AnimalEcology Agrostis capillaris Agrostis_capillaris Perennial Poaceae African army worm Spodoptera exempta Spodoptera_exempta Specialist Chewing arthropods Feeding efficiency 10.00 10.00 0.7100000 0.2900000 0.0948683 0.0948683 1 10 10.000 0.4600000 2.510000 0.0948683 4.427189e-01
173 34 Massey 2006 Journal of AnimalEcology Brachypodium pinnatum Brachypodium_pinnatum Perennial Poaceae African army worm Spodoptera exempta Spodoptera_exempta Specialist Chewing arthropods Feeding efficiency 10.00 10.00 0.7400000 0.2700000 0.0948683 0.0948683 1 10 10.000 0.4700000 2.870000 0.0948683 4.427189e-01
174 34 Massey 2006 Journal of AnimalEcology Poa annua Poa_annua Annual Poaceae Desert locust Schistocerca gregaria Schistocerca_gregaria Generalist Chewing arthropods Feeding efficiency 10.00 10.00 0.6400000 0.3700000 0.1581139 0.1581139 1 10 10.000 0.8100000 1.950000 0.4743416 6.957011e-01
175 34 Massey 2006 Journal of AnimalEcology Lolium perenne Lolium_perenne Perennial Poaceae Desert locust Schistocerca gregaria Schistocerca_gregaria Generalist Chewing arthropods Feeding efficiency 10.00 10.00 0.6900000 0.3100000 0.0948683 0.1264911 1 10 10.000 0.5400000 4.680000 0.3162278 1.075174e+00
176 34 Massey 2006 Journal of AnimalEcology Festuca ovina Festuca_ovina Perennial Poaceae Desert locust Schistocerca gregaria Schistocerca_gregaria Generalist Chewing arthropods Feeding efficiency 10.00 10.00 0.7500000 0.2500000 0.1264911 0.1264911 1 10 10.000 0.5200000 2.440000 0.1264911 5.059644e-01
177 34 Massey 2006 Journal of AnimalEcology Agrostis capillaris Agrostis_capillaris Perennial Poaceae Desert locust Schistocerca gregaria Schistocerca_gregaria Generalist Chewing arthropods Feeding efficiency 10.00 10.00 0.6500000 0.3600000 0.0632456 0.0948683 1 10 10.000 0.4600000 2.510000 0.0948683 4.427189e-01
178 34 Massey 2006 Journal of AnimalEcology Brachypodium pinnatum Brachypodium_pinnatum Perennial Poaceae Desert locust Schistocerca gregaria Schistocerca_gregaria Generalist Chewing arthropods Feeding efficiency 10.00 10.00 0.8400000 0.1700000 0.1581139 0.1581139 1 10 10.000 0.4700000 2.870000 0.0948683 4.427189e-01
179 34 Massey 2006 Journal of AnimalEcology Poa annua Poa_annua Annual Poaceae Grain aphid Sitobion avenae Sitobion_avenae Specialist Fluid-feeding arthropods Abundance / Preference 10.00 10.00 12.7200000 20.2600000 7.4945981 16.1908616 1 10 10.000 0.8100000 1.950000 0.4743416 6.957011e-01
180 34 Massey 2006 Journal of AnimalEcology Lolium perenne Lolium_perenne Perennial Poaceae Grain aphid Sitobion avenae Sitobion_avenae Specialist Fluid-feeding arthropods Abundance / Preference 10.00 10.00 8.9200000 15.7200000 8.0954308 6.6407831 1 10 10.000 0.5400000 4.680000 0.3162278 1.075174e+00
181 34 Massey 2006 Journal of AnimalEcology Festuca ovina Festuca_ovina Perennial Poaceae Grain aphid Sitobion avenae Sitobion_avenae Specialist Fluid-feeding arthropods Abundance / Preference 10.00 10.00 5.7400000 4.0400000 2.2135944 2.4665766 1 10 10.000 0.5200000 2.440000 0.1264911 5.059644e-01
182 34 Massey 2006 Journal of AnimalEcology Agrostis capillaris Agrostis_capillaris Perennial Poaceae Grain aphid Sitobion avenae Sitobion_avenae Specialist Fluid-feeding arthropods Abundance / Preference 10.00 10.00 10.7800000 12.3900000 6.5142920 3.1939004 1 10 10.000 0.4600000 2.510000 0.0948683 4.427189e-01
183 34 Massey 2006 Journal of AnimalEcology Poa annua Poa_annua Annual Poaceae African army worm Spodoptera exempta Spodoptera_exempta Specialist Chewing arthropods Growth / Development 10.00 10.00 15.2000000 5.1100000 8.4432814 2.2135944 1 10 10.000 0.8100000 1.950000 0.4743416 6.957011e-01
184 34 Massey 2006 Journal of AnimalEcology Festuca ovina Festuca_ovina Perennial Poaceae African army worm Spodoptera exempta Spodoptera_exempta Specialist Chewing arthropods Growth / Development 10.00 10.00 13.5500000 6.0100000 6.4510464 1.4546477 1 10 10.000 0.5200000 2.440000 0.1264911 5.059644e-01
185 34 Massey 2006 Journal of AnimalEcology Agrostis capillaris Agrostis_capillaris Perennial Poaceae African army worm Spodoptera exempta Spodoptera_exempta Specialist Chewing arthropods Growth / Development 10.00 10.00 10.0700000 6.0900000 3.2255232 2.2135944 1 10 10.000 0.4600000 2.510000 0.0948683 4.427189e-01
186 34 Massey 2006 Journal of AnimalEcology Brachypodium pinnatum Brachypodium_pinnatum Perennial Poaceae African army worm Spodoptera exempta Spodoptera_exempta Specialist Chewing arthropods Growth / Development 10.00 10.00 6.2000000 3.0500000 1.9289894 1.2965338 1 10 10.000 0.4700000 2.870000 0.0948683 4.427189e-01
187 34 Massey 2006 Journal of AnimalEcology Poa annua Poa_annua Annual Poaceae Desert locust Schistocerca gregaria Schistocerca_gregaria Generalist Chewing arthropods Growth / Development 10.00 10.00 0.3600000 0.2500000 0.0948683 0.0632456 1 10 10.000 0.8100000 1.950000 0.4743416 6.957011e-01
188 34 Massey 2006 Journal of AnimalEcology Lolium perenne Lolium_perenne Perennial Poaceae Desert locust Schistocerca gregaria Schistocerca_gregaria Generalist Chewing arthropods Growth / Development 10.00 10.00 0.1500000 0.1000000 0.0316228 0.0316228 1 10 10.000 0.5400000 4.680000 0.3162278 1.075174e+00
189 34 Massey 2006 Journal of AnimalEcology Festuca ovina Festuca_ovina Perennial Poaceae Desert locust Schistocerca gregaria Schistocerca_gregaria Generalist Chewing arthropods Growth / Development 10.00 10.00 0.1200000 0.0900000 0.0316228 0.0316228 1 10 10.000 0.5200000 2.440000 0.1264911 5.059644e-01
190 34 Massey 2006 Journal of AnimalEcology Agrostis capillaris Agrostis_capillaris Perennial Poaceae Desert locust Schistocerca gregaria Schistocerca_gregaria Generalist Chewing arthropods Growth / Development 10.00 10.00 0.1100000 0.0900000 0.0316228 0.0316228 1 10 10.000 0.4600000 2.510000 0.0948683 4.427189e-01
191 34 Massey 2006 Journal of AnimalEcology Brachypodium pinnatum Brachypodium_pinnatum Perennial Poaceae Desert locust Schistocerca gregaria Schistocerca_gregaria Generalist Chewing arthropods Growth / Development 10.00 10.00 0.0900000 0.0700000 0.0316228 0.0316228 1 10 10.000 0.4700000 2.870000 0.0948683 4.427189e-01
192 34 Massey 2006 Journal of AnimalEcology Poa annua Poa_annua Annual Poaceae Grain aphid Sitobion avenae Sitobion_avenae Specialist Fluid-feeding arthropods Abundance / Preference 10.00 10.00 2.0000000 1.6300000 1.4546477 0.7589466 1 10 10.000 0.8100000 1.950000 0.4743416 6.957011e-01
193 34 Massey 2006 Journal of AnimalEcology Lolium perenne Lolium_perenne Perennial Poaceae Grain aphid Sitobion avenae Sitobion_avenae Specialist Fluid-feeding arthropods Abundance / Preference 10.00 10.00 0.4200000 0.5000000 0.1897367 0.2213594 1 10 10.000 0.5400000 4.680000 0.3162278 1.075174e+00
194 34 Massey 2006 Journal of AnimalEcology Festuca ovina Festuca_ovina Perennial Poaceae Grain aphid Sitobion avenae Sitobion_avenae Specialist Fluid-feeding arthropods Abundance / Preference 10.00 10.00 0.1000000 0.0900000 0.0632456 0.0632456 1 10 10.000 0.5200000 2.440000 0.1264911 5.059644e-01
195 34 Massey 2006 Journal of AnimalEcology Agrostis capillaris Agrostis_capillaris Perennial Poaceae Grain aphid Sitobion avenae Sitobion_avenae Specialist Fluid-feeding arthropods Abundance / Preference 10.00 10.00 0.1400000 0.1300000 0.0948683 0.1264911 1 10 10.000 0.4600000 2.510000 0.0948683 4.427189e-01
196 34 Massey 2006 Journal of AnimalEcology Brachypodium pinnatum Brachypodium_pinnatum Perennial Poaceae Grain aphid Sitobion avenae Sitobion_avenae Specialist Fluid-feeding arthropods Abundance / Preference 10.00 10.00 0.0600000 0.0500000 0.0632456 0.0316228 1 10 10.000 0.4700000 2.870000 0.0948683 4.427189e-01
197 34 Massey 2006 Journal of AnimalEcology Poa annua Poa_annua Annual Poaceae African army worm Spodoptera exempta Spodoptera_exempta Specialist Chewing arthropods Feeding efficiency 10.00 10.00 0.7300000 0.9800000 0.2213594 0.2213594 1 10 10.000 0.8100000 1.950000 0.4743416 6.957011e-01
198 34 Massey 2006 Journal of AnimalEcology Lolium perenne Lolium_perenne Perennial Poaceae African army worm Spodoptera exempta Spodoptera_exempta Specialist Chewing arthropods Feeding efficiency 10.00 10.00 0.4800000 0.9700000 0.3162278 0.2846050 1 10 10.000 0.5400000 4.680000 0.3162278 1.075174e+00
199 34 Massey 2006 Journal of AnimalEcology Festuca ovina Festuca_ovina Perennial Poaceae African army worm Spodoptera exempta Spodoptera_exempta Specialist Chewing arthropods Feeding efficiency 10.00 10.00 0.6100000 0.6300000 0.3162278 0.3478505 1 10 10.000 0.5200000 2.440000 0.1264911 5.059644e-01
200 34 Massey 2006 Journal of AnimalEcology Agrostis capillaris Agrostis_capillaris Perennial Poaceae African army worm Spodoptera exempta Spodoptera_exempta Specialist Chewing arthropods Feeding efficiency 10.00 10.00 1.2300000 1.0100000 0.4427189 0.4110961 1 10 10.000 0.4600000 2.510000 0.0948683 4.427189e-01
201 34 Massey 2006 Journal of AnimalEcology Brachypodium pinnatum Brachypodium_pinnatum Perennial Poaceae African army worm Spodoptera exempta Spodoptera_exempta Specialist Chewing arthropods Feeding efficiency 10.00 10.00 1.1500000 1.6000000 0.6640783 0.9170605 1 10 10.000 0.4700000 2.870000 0.0948683 4.427189e-01
202 34 Massey 2006 Journal of AnimalEcology Poa annua Poa_annua Annual Poaceae African army worm Spodoptera exempta Spodoptera_exempta Specialist Chewing arthropods Feeding efficiency 10.00 10.00 92.2300000 82.6200000 32.6030827 36.8721575 1 10 10.000 0.8100000 1.950000 0.4743416 6.957011e-01
203 34 Massey 2006 Journal of AnimalEcology Lolium perenne Lolium_perenne Perennial Poaceae African army worm Spodoptera exempta Spodoptera_exempta Specialist Chewing arthropods Feeding efficiency 10.00 10.00 71.3100000 34.6500000 40.6352679 29.3143139 1 10 10.000 0.5400000 4.680000 0.3162278 1.075174e+00
204 34 Massey 2006 Journal of AnimalEcology Festuca ovina Festuca_ovina Perennial Poaceae African army worm Spodoptera exempta Spodoptera_exempta Specialist Chewing arthropods Feeding efficiency 10.00 10.00 62.9400000 19.8600000 32.1287410 28.8083495 1 10 10.000 0.5200000 2.440000 0.1264911 5.059644e-01
205 34 Massey 2006 Journal of AnimalEcology Agrostis capillaris Agrostis_capillaris Perennial Poaceae African army worm Spodoptera exempta Spodoptera_exempta Specialist Chewing arthropods Feeding efficiency 10.00 10.00 48.9000000 43.4700000 19.3847621 17.4873955 1 10 10.000 0.4600000 2.510000 0.0948683 4.427189e-01
206 34 Massey 2006 Journal of AnimalEcology Brachypodium pinnatum Brachypodium_pinnatum Perennial Poaceae African army worm Spodoptera exempta Spodoptera_exempta Specialist Chewing arthropods Feeding efficiency 10.00 10.00 22.6000000 3.5800000 26.9426057 9.9295519 1 10 10.000 0.4700000 2.870000 0.0948683 4.427189e-01
207 34 Massey 2006 Journal of AnimalEcology Poa annua Poa_annua Annual Poaceae Desert locust Schistocerca gregaria Schistocerca_gregaria Generalist Chewing arthropods Feeding efficiency 10.00 10.00 0.6600000 1.0100000 0.2213594 0.6324555 1 10 10.000 0.8100000 1.950000 0.4743416 6.957011e-01
208 34 Massey 2006 Journal of AnimalEcology Lolium perenne Lolium_perenne Perennial Poaceae Desert locust Schistocerca gregaria Schistocerca_gregaria Generalist Chewing arthropods Feeding efficiency 10.00 10.00 1.2600000 2.2200000 0.7905694 0.8221922 1 10 10.000 0.5400000 4.680000 0.3162278 1.075174e+00
209 34 Massey 2006 Journal of AnimalEcology Festuca ovina Festuca_ovina Perennial Poaceae Desert locust Schistocerca gregaria Schistocerca_gregaria Generalist Chewing arthropods Feeding efficiency 10.00 10.00 0.7700000 1.1000000 0.3478505 0.6008328 1 10 10.000 0.5200000 2.440000 0.1264911 5.059644e-01
210 34 Massey 2006 Journal of AnimalEcology Agrostis capillaris Agrostis_capillaris Perennial Poaceae Desert locust Schistocerca gregaria Schistocerca_gregaria Generalist Chewing arthropods Feeding efficiency 10.00 10.00 0.6300000 1.5300000 0.2529822 0.5692100 1 10 10.000 0.4600000 2.510000 0.0948683 4.427189e-01
211 34 Massey 2006 Journal of AnimalEcology Brachypodium pinnatum Brachypodium_pinnatum Perennial Poaceae Desert locust Schistocerca gregaria Schistocerca_gregaria Generalist Chewing arthropods Feeding efficiency 10.00 10.00 0.8800000 1.5400000 0.3162278 0.6324555 1 10 10.000 0.4700000 2.870000 0.0948683 4.427189e-01
212 34 Massey 2006 Journal of AnimalEcology Poa annua Poa_annua Annual Poaceae Desert locust Schistocerca gregaria Schistocerca_gregaria Generalist Chewing arthropods Feeding efficiency 10.00 10.00 79.1800000 65.2800000 47.6555243 35.0380365 1 10 10.000 0.8100000 1.950000 0.4743416 6.957011e-01
213 34 Massey 2006 Journal of AnimalEcology Lolium perenne Lolium_perenne Perennial Poaceae Desert locust Schistocerca gregaria Schistocerca_gregaria Generalist Chewing arthropods Feeding efficiency 10.00 10.00 60.9700000 18.8400000 36.4610614 9.8030607 1 10 10.000 0.5400000 4.680000 0.3162278 1.075174e+00
214 34 Massey 2006 Journal of AnimalEcology Festuca ovina Festuca_ovina Perennial Poaceae Desert locust Schistocerca gregaria Schistocerca_gregaria Generalist Chewing arthropods Feeding efficiency 10.00 10.00 26.9400000 12.4400000 15.4319150 10.7517440 1 10 10.000 0.5200000 2.440000 0.1264911 5.059644e-01
215 34 Massey 2006 Journal of AnimalEcology Agrostis capillaris Agrostis_capillaris Perennial Poaceae Desert locust Schistocerca gregaria Schistocerca_gregaria Generalist Chewing arthropods Feeding efficiency 10.00 10.00 90.0100000 33.6900000 53.2843786 15.8746339 1 10 10.000 0.4600000 2.510000 0.0948683 4.427189e-01
216 34 Massey 2006 Journal of AnimalEcology Brachypodium pinnatum Brachypodium_pinnatum Perennial Poaceae Desert locust Schistocerca gregaria Schistocerca_gregaria Generalist Chewing arthropods Feeding efficiency 10.00 10.00 26.1300000 25.2300000 16.3489755 9.8030607 1 10 10.000 0.4700000 2.870000 0.0948683 4.427189e-01
217 34 Massey 2006 Journal of AnimalEcology Agrostis capillaris Agrostis_capillaris Perennial Poaceae African army worm Spodoptera exempta Spodoptera_exempta Specialist Chewing arthropods Growth / Development 5.00 3.50 22.8500000 26.1500000 1.3416408 1.4031215 -1 10 10.000 0.4600000 2.510000 0.0948683 4.427189e-01
218 34 Massey 2006 Journal of AnimalEcology Brachypodium pinnatum Brachypodium_pinnatum Perennial Poaceae African army worm Spodoptera exempta Spodoptera_exempta Specialist Chewing arthropods Growth / Development 4.50 4.50 21.8000000 23.9000000 1.1667262 1.9091883 -1 10 10.000 0.4700000 2.870000 0.0948683 4.427189e-01
219 34 Massey 2006 Journal of AnimalEcology Festuca ovina Festuca_ovina Perennial Poaceae African army worm Spodoptera exempta Spodoptera_exempta Specialist Chewing arthropods Growth / Development 4.00 4.00 22.1500000 24.5000000 2.8000000 2.2000000 -1 10 10.000 0.5200000 2.440000 0.1264911 5.059644e-01
220 34 Massey 2006 Journal of AnimalEcology Poa annua Poa_annua Annual Poaceae African army worm Spodoptera exempta Spodoptera_exempta Specialist Chewing arthropods Growth / Development 5.00 5.00 18.6000000 18.7000000 2.0124612 4.0249224 -1 10 10.000 0.8100000 1.950000 0.4743416 6.957011e-01
221 34 Massey 2006 Journal of AnimalEcology Brachypodium pinnatum Brachypodium_pinnatum Perennial Poaceae African army worm Spodoptera exempta Spodoptera_exempta Specialist Chewing arthropods Growth / Development 4.50 4.50 175.7500000 155.3000000 13.3643182 11.9854599 1 10 10.000 0.4700000 2.870000 0.0948683 4.427189e-01
222 34 Massey 2006 Journal of AnimalEcology Festuca ovina Festuca_ovina Perennial Poaceae African army worm Spodoptera exempta Spodoptera_exempta Specialist Chewing arthropods Growth / Development 4.00 4.00 215.7000000 191.7500000 15.6000000 33.2000000 1 10 10.000 0.5200000 2.440000 0.1264911 5.059644e-01
223 34 Massey 2006 Journal of AnimalEcology Poa annua Poa_annua Annual Poaceae African army worm Spodoptera exempta Spodoptera_exempta Specialist Chewing arthropods Growth / Development 5.00 5.00 223.4000000 136.2000000 33.5410197 27.7272429 1 10 10.000 0.8100000 1.950000 0.4743416 6.957011e-01
224 35 Massey 2009 Journal of Animal Ecology Deschampsia cespitosa Deschampsia_cespitosa Perennial Poaceae African army worm Spodoptera exempta Spodoptera_exempta Specialist Chewing arthropods Growth / Development 12.00 12.00 0.4000000 0.3200000 0.1385641 0.1732051 1 12 12.000 1.7900000 6.620000 0.7967434 1.524205e+00
225 35 Massey 2009 Journal of Animal Ecology Festuca ovina Festuca_ovina Perennial Poaceae African army worm Spodoptera exempta Spodoptera_exempta Specialist Chewing arthropods Growth / Development 12.00 12.00 0.4200000 0.3000000 0.0692820 0.1385641 1 12 12.000 0.5200000 2.440000 0.1385641 5.542563e-01
226 35 Massey 2009 Journal of Animal Ecology Lolium perenne Lolium_perenne Perennial Poaceae African army worm Spodoptera exempta Spodoptera_exempta Specialist Chewing arthropods Growth / Development 12.00 12.00 0.5400000 0.3600000 0.1039230 0.1039230 1 12 12.000 0.5400000 4.680000 0.3464102 1.177795e+00
227 35 Massey 2009 Journal of Animal Ecology Deschampsia cespitosa Deschampsia_cespitosa Perennial Poaceae African army worm Spodoptera exempta Spodoptera_exempta Specialist Chewing arthropods Feeding efficiency 12.00 12.00 78.7700000 34.9500000 64.1551619 90.2398471 1 12 12.000 1.7900000 6.620000 0.7967434 1.524205e+00
228 35 Massey 2009 Journal of Animal Ecology Festuca ovina Festuca_ovina Perennial Poaceae African army worm Spodoptera exempta Spodoptera_exempta Specialist Chewing arthropods Feeding efficiency 12.00 12.00 103.2800000 65.5600000 26.0846852 52.8968317 1 12 12.000 0.5200000 2.440000 0.1385641 5.542563e-01
229 35 Massey 2009 Journal of Animal Ecology Lolium perenne Lolium_perenne Perennial Poaceae African army worm Spodoptera exempta Spodoptera_exempta Specialist Chewing arthropods Feeding efficiency 12.00 12.00 128.8000000 60.7600000 38.7632971 73.3350312 1 12 12.000 0.5400000 4.680000 0.3464102 1.177795e+00
230 35 Massey 2009 Journal of Animal Ecology Deschampsia cespitosa Deschampsia_cespitosa Perennial Poaceae African army worm Spodoptera exempta Spodoptera_exempta Specialist Chewing arthropods Feeding efficiency 12.00 12.00 266.8300000 582.2800000 433.9826503 1993.9368897 1 12 12.000 1.7900000 6.620000 0.7967434 1.524205e+00
231 35 Massey 2009 Journal of Animal Ecology Festuca ovina Festuca_ovina Perennial Poaceae African army worm Spodoptera exempta Spodoptera_exempta Specialist Chewing arthropods Feeding efficiency 12.00 12.00 265.7400000 247.0700000 88.1267451 301.9310968 1 12 12.000 0.5200000 2.440000 0.1385641 5.542563e-01
232 35 Massey 2009 Journal of Animal Ecology Lolium perenne Lolium_perenne Perennial Poaceae African army worm Spodoptera exempta Spodoptera_exempta Specialist Chewing arthropods Feeding efficiency 12.00 12.00 507.9600000 225.9900000 559.9027441 534.6840843 1 12 12.000 0.5400000 4.680000 0.3464102 1.177795e+00
233 35 Massey 2009 Journal of Animal Ecology Deschampsia cespitosa Deschampsia_cespitosa Perennial Poaceae African army worm Spodoptera exempta Spodoptera_exempta Specialist Chewing arthropods Feeding efficiency 12.00 12.00 0.3400000 0.0600000 0.3117691 0.9006664 1 12 12.000 1.7900000 6.620000 0.7967434 1.524205e+00
234 35 Massey 2009 Journal of Animal Ecology Festuca ovina Festuca_ovina Perennial Poaceae African army worm Spodoptera exempta Spodoptera_exempta Specialist Chewing arthropods Feeding efficiency 12.00 12.00 0.3800000 0.3700000 0.0692820 0.2771281 1 12 12.000 0.5200000 2.440000 0.1385641 5.542563e-01
235 35 Massey 2009 Journal of Animal Ecology Lolium perenne Lolium_perenne Perennial Poaceae African army worm Spodoptera exempta Spodoptera_exempta Specialist Chewing arthropods Feeding efficiency 12.00 12.00 0.2300000 0.2000000 0.1732051 0.1385641 1 12 12.000 0.5400000 4.680000 0.3464102 1.177795e+00
236 35 Massey 2009 Journal of Animal Ecology Deschampsia cespitosa Deschampsia_cespitosa Perennial Poaceae African army worm Spodoptera exempta Spodoptera_exempta Specialist Chewing arthropods Feeding efficiency 12.00 12.00 0.1700000 0.2900000 0.1385641 0.3117691 1 12 12.000 1.7900000 6.620000 0.7967434 1.524205e+00
237 35 Massey 2009 Journal of Animal Ecology Festuca ovina Festuca_ovina Perennial Poaceae African army worm Spodoptera exempta Spodoptera_exempta Specialist Chewing arthropods Feeding efficiency 12.00 12.00 0.4400000 0.2300000 0.1039230 0.1385641 1 12 12.000 0.5200000 2.440000 0.1385641 5.542563e-01
238 35 Massey 2009 Journal of Animal Ecology Lolium perenne Lolium_perenne Perennial Poaceae African army worm Spodoptera exempta Spodoptera_exempta Specialist Chewing arthropods Feeding efficiency 12.00 12.00 0.1800000 0.2400000 0.1385641 0.1385641 1 12 12.000 0.5400000 4.680000 0.3464102 1.177795e+00
239 35 Massey 2009 Journal of Animal Ecology Deschampsia cespitosa Deschampsia_cespitosa Perennial Poaceae African army worm Spodoptera exempta Spodoptera_exempta Specialist Chewing arthropods Feeding efficiency 5.00 5.00 0.5100000 0.3300000 0.0223607 0.0670820 1 12 12.000 1.7900000 6.620000 0.7967434 1.524205e+00
240 35 Massey 2009 Journal of Animal Ecology Festuca ovina Festuca_ovina Perennial Poaceae African army worm Spodoptera exempta Spodoptera_exempta Specialist Chewing arthropods Feeding efficiency 5.00 5.00 0.5900000 0.5100000 0.0447214 0.0894427 1 12 12.000 0.5200000 2.440000 0.1385641 5.542563e-01
241 35 Massey 2009 Journal of Animal Ecology Lolium perenne Lolium_perenne Perennial Poaceae African army worm Spodoptera exempta Spodoptera_exempta Specialist Chewing arthropods Feeding efficiency 5.00 5.00 0.6500000 0.5600000 0.0223607 0.0447214 1 12 12.000 0.5400000 4.680000 0.3464102 1.177795e+00
242 35 Massey 2009 Journal of Animal Ecology Deschampsia cespitosa Deschampsia_cespitosa Perennial Poaceae African army worm Spodoptera exempta Spodoptera_exempta Specialist Chewing arthropods Growth / Development 10.00 10.00 3.4700000 4.2200000 0.5692100 0.3478505 -1 12 12.000 1.7900000 6.620000 0.7967434 1.524205e+00
243 35 Massey 2009 Journal of Animal Ecology Festuca ovina Festuca_ovina Perennial Poaceae African army worm Spodoptera exempta Spodoptera_exempta Specialist Chewing arthropods Growth / Development 10.00 10.00 3.1700000 3.8300000 0.3794733 0.4110961 -1 12 12.000 0.5200000 2.440000 0.1385641 5.542563e-01
244 35 Massey 2009 Journal of Animal Ecology Lolium perenne Lolium_perenne Perennial Poaceae African army worm Spodoptera exempta Spodoptera_exempta Specialist Chewing arthropods Growth / Development 10.00 10.00 2.8400000 3.4200000 0.2213594 0.3478505 -1 12 12.000 0.5400000 4.680000 0.3464102 1.177795e+00
245 36 Moraes 2004 Neotropical Entomology Triticum aestivum Triticum_aestivum Annual Poaceae Greenbug (aphid) Schizaphis graminum Schizaphis_graminum Specialist Fluid-feeding arthropods Abundance / Preference 8.00 8.00 5.4333333 2.3000000 0.8485281 0.7542472 1 NA NA NA NA NA NA
246 36 Moraes 2004 Neotropical Entomology Triticum aestivum Triticum_aestivum Annual Poaceae Greenbug (aphid) Schizaphis graminum Schizaphis_graminum Specialist Fluid-feeding arthropods Abundance / Preference 8.00 8.00 13.6000000 7.9000000 1.9798990 2.0647518 1 NA NA NA NA NA NA
247 36 Moraes 2004 Neotropical Entomology Triticum aestivum Triticum_aestivum Annual Poaceae Greenbug (aphid) Schizaphis graminum Schizaphis_graminum Specialist Fluid-feeding arthropods Growth / Development 8.00 8.00 9.6000000 9.5000000 3.6769553 2.8284271 -1 NA NA NA NA NA NA
248 36 Moraes 2004 Neotropical Entomology Triticum aestivum Triticum_aestivum Annual Poaceae Greenbug (aphid) Schizaphis graminum Schizaphis_graminum Specialist Fluid-feeding arthropods Growth / Development 8.00 8.00 10.0000000 10.0000000 4.2426407 2.5455844 -1 NA NA NA NA NA NA
249 37 Moraes 2005 Ci_encia e Agrotecnologia Zea mays Zea_mays Annual Poaceae Corn leaf aphid Rhopalosiphum maidis Rhopalosiphum_maidis Specialist Fluid-feeding arthropods Abundance / Preference 12.00 12.00 3.0000000 3.8000000 1.0392305 1.3856406 1 6 6.000 1.0000000 2.500000 0.1714643 2.939388e-01
250 37 Moraes 2005 Ci_encia e Agrotecnologia Zea mays Zea_mays Annual Poaceae Corn leaf aphid Rhopalosiphum maidis Rhopalosiphum_maidis Specialist Fluid-feeding arthropods Abundance / Preference 6.00 6.00 3.1666667 3.5666667 2.2045408 1.5513435 1 6 6.000 1.0000000 2.500000 0.1714643 2.939388e-01
251 38 Nabity 2012 Journal of Economic Entomology Panicum virgatum Panicum_virgatum Perennial Poaceae Fall armyworm Spodoptera frugiperda Spodoptera_frugiperda Generalist Chewing arthropods Feeding efficiency 15.00 15.00 0.0560000 0.0640000 0.0154919 0.0116190 1 10 10.000 0.9000000 2.800000 0.3162278 6.324555e-01
252 38 Nabity 2012 Journal of Economic Entomology Panicum virgatum Panicum_virgatum Perennial Poaceae American grasshopper Schistocerca americana Schistocerca_americana Generalist Chewing arthropods Feeding efficiency 10.00 10.00 0.0650000 0.0800000 0.0022136 0.0442719 1 10 10.000 0.9000000 2.800000 0.3162278 6.324555e-01
253 38 Nabity 2012 Journal of Economic Entomology Panicum virgatum Panicum_virgatum Perennial Poaceae Fall armyworm Spodoptera frugiperda Spodoptera_frugiperda Generalist Chewing arthropods Feeding efficiency 15.00 15.00 10.2000000 9.5000000 6.9713700 6.5840717 1 10 10.000 0.9000000 2.800000 0.3162278 6.324555e-01
254 38 Nabity 2012 Journal of Economic Entomology Panicum virgatum Panicum_virgatum Perennial Poaceae American grasshopper Schistocerca americana Schistocerca_americana Generalist Chewing arthropods Feeding efficiency 10.00 10.00 30.7000000 19.1000000 15.8113883 11.3841996 1 10 10.000 0.9000000 2.800000 0.3162278 6.324555e-01
255 38 Nabity 2012 Journal of Economic Entomology Zea mays Zea_mays Annual Poaceae Fall armyworm Spodoptera frugiperda Spodoptera_frugiperda Generalist Chewing arthropods Feeding efficiency 15.00 15.00 0.0560000 0.0690000 0.0116190 0.0271109 1 8 9.000 0.6000000 2.500000 0.2828427 6.000000e-01
256 38 Nabity 2012 Journal of Economic Entomology Zea mays Zea_mays Annual Poaceae American grasshopper Schistocerca americana Schistocerca_americana Generalist Chewing arthropods Feeding efficiency 10.00 10.00 0.8800000 0.8500000 0.0284605 0.0221359 1 8 9.000 0.6000000 2.500000 0.2828427 6.000000e-01
257 38 Nabity 2012 Journal of Economic Entomology Miscanthus giganteus Miscanthus_giganteus Annual Poaceae Fall armyworm Spodoptera frugiperda Spodoptera_frugiperda Generalist Chewing arthropods Feeding efficiency 15.00 10.00 0.1010000 0.1460000 0.0542218 0.0948683 1 9 10.000 0.9000000 3.500000 0.3000000 1.581139e+00
258 38 Nabity 2012 Journal of Economic Entomology Miscanthus giganteus Miscanthus_giganteus Annual Poaceae American grasshopper Schistocerca americana Schistocerca_americana Generalist Chewing arthropods Feeding efficiency 15.00 10.00 0.0390000 0.0560000 0.0193649 0.0221359 1 9 10.000 0.9000000 3.500000 0.3000000 1.581139e+00
259 39 Neri 2005 Cienciae Agrotecnologia Zea mays Zea_mays Annual Poaceae Armyworm Spodoptera frugiperda Spodoptera_frugiperda Generalist Chewing arthropods Abundance / Preference 5.00 5.00 2.1000000 1.7000000 1.0062306 0.7826238 1 NA NA NA NA NA NA
260 39 Neri 2005 Cienciae Agrotecnologia Zea mays Zea_mays Annual Poaceae Armyworm Spodoptera frugiperda Spodoptera_frugiperda Generalist Chewing arthropods Mortality / Survivability 5.00 5.00 23.0000000 9.0000000 12.0747671 4.2485292 -1 NA NA NA NA NA NA
261 39 Neri 2005 Cienciae Agrotecnologia Zea mays Zea_mays Annual Poaceae Armyworm Spodoptera frugiperda Spodoptera_frugiperda Generalist Chewing arthropods Feeding efficiency 5.00 5.00 0.3000000 0.5000000 0.1341641 0.0670820 1 NA NA NA NA NA NA
262 39 Neri 2005 Cienciae Agrotecnologia Zea mays Zea_mays Annual Poaceae Armyworm Spodoptera frugiperda Spodoptera_frugiperda Generalist Chewing arthropods Feeding efficiency 5.00 5.00 6.7000000 7.9000000 0.2236068 1.1180340 1 NA NA NA NA NA NA
263 39 Neri 2005 Cienciae Agrotecnologia Zea mays Zea_mays Annual Poaceae Armyworm Spodoptera frugiperda Spodoptera_frugiperda Generalist Chewing arthropods Abundance / Preference 5.00 5.00 3.0000000 2.8000000 0.2236068 0.4472136 1 NA NA NA NA NA NA
264 39 Neri 2005 Cienciae Agrotecnologia Zea mays Zea_mays Annual Poaceae Armyworm Spodoptera frugiperda Spodoptera_frugiperda Generalist Chewing arthropods Growth / Development 5.00 5.00 0.0450000 0.0350000 0.0134164 0.0156525 1 NA NA NA NA NA NA
265 40 Jeer 2020 Silicon Triticum aestivum Triticum_aestivum Annual Poaceae Pink stem borer Sesamia inferens Sesamia_inferens Generalist Boring arthropods Feeding efficiency 3.00 3.00 22.7500000 17.8300000 2.1650635 0.1732051 1 3 3.000 1.5600000 2.350000 0.0519615 1.732051e-01
266 40 Jeer 2020 Silicon Triticum aestivum Triticum_aestivum Annual Poaceae Pink stem borer Sesamia inferens Sesamia_inferens Generalist Boring arthropods Feeding efficiency 3.00 3.00 7.4500000 8.2300000 2.1823840 0.1905256 1 3 3.000 1.5600000 2.350000 0.0519615 1.732051e-01
267 41 Nikpay 2015 Neotropical Entomology Saccharum spp. Saccharum_spp. Perennial Poaceae Stalk borers Sesamia spp. Sesamia_spp. Generalist Boring arthropods Feeding efficiency 4.00 4.00 41.2000000 21.2000000 5.7800000 2.5000000 1 NA NA NA NA NA NA
268 41 Nikpay 2015 Neotropical Entomology Saccharum spp. Saccharum_spp. Perennial Poaceae Stalk borers Sesamia spp. Sesamia_spp. Generalist Boring arthropods Feeding efficiency 4.00 4.00 6.4000000 1.6000000 1.6600000 0.4400000 1 NA NA NA NA NA NA
269 41 Nikpay 2015 Neotropical Entomology Saccharum spp. Saccharum_spp. Perennial Poaceae Stalk borers Sesamia spp. Sesamia_spp. Generalist Boring arthropods Feeding efficiency 4.00 4.00 106.5000000 29.8000000 7.6800000 3.3200000 1 NA NA NA NA NA NA
270 41 Nikpay 2015 Neotropical Entomology Saccharum spp. Saccharum_spp. Perennial Poaceae Stalk borers Sesamia spp. Sesamia_spp. Generalist Boring arthropods Abundance / Preference 4.00 4.00 37.9000000 20.8000000 3.7800000 2.0600000 1 NA NA NA NA NA NA
271 41 Nikpay 2015 Neotropical Entomology Saccharum spp. Saccharum_spp. Perennial Poaceae Stalk borers Sesamia spp. Sesamia_spp. Generalist Boring arthropods Mortality / Survivability 4.00 4.00 1.0800000 0.1500000 0.1800000 0.0400000 1 NA NA NA NA NA NA
272 42 Ranganathan 2006 Biologia Plantarum Oryza sativa Oryza_sativa Annual Poaceae Yellow stem borer Scirpophaga incertulas Scirpophaga_incertulas Specialist Boring arthropods Feeding efficiency 10.00 10.00 84.8000000 59.3000000 4.7434165 27.5118156 1 NA NA NA NA NA NA
273 43 Sidhu 2013 Bulletin of Entomological Research Oryza sativa Oryza_sativa Annual Poaceae Sugarcane borer Diatraea saccharalis Diatraea_saccharalis Specialist Boring arthropods Feeding efficiency 5.00 5.00 64.3340000 40.6320000 17.4122613 28.5165749 1 5 5.000 1.9400000 1.440000 0.1565248 2.459675e-01
274 43 Sidhu 2013 Bulletin of Entomological Research Oryza sativa Oryza_sativa Annual Poaceae Sugarcane borer Diatraea saccharalis Diatraea_saccharalis Specialist Boring arthropods Growth / Development 5.00 5.00 0.2568000 0.2343000 0.0038013 0.0190066 1 5 5.000 1.9400000 1.440000 0.1565248 2.459675e-01
275 43 Sidhu 2013 Bulletin of Entomological Research Oryza sativa Oryza_sativa Annual Poaceae Sugarcane borer Diatraea saccharalis Diatraea_saccharalis Specialist Boring arthropods Feeding efficiency 5.00 5.00 76.9600000 47.9500000 9.5256496 9.6799383 1 5 5.000 1.9400000 1.440000 0.1565248 2.459675e-01
276 43 Sidhu 2013 Bulletin of Entomological Research Oryza sativa Oryza_sativa Annual Poaceae Sugarcane borer Diatraea saccharalis Diatraea_saccharalis Specialist Boring arthropods Growth / Development 5.00 5.00 0.2850000 0.2089000 0.0422617 0.0447214 1 5 5.000 1.9400000 1.440000 0.1565248 2.459675e-01
277 44 Ye 2013 PNAS Oryza sativa Oryza_sativa Annual Poaceae Rice leaffolder Cnaphalocrocis medinalis Cnaphalocrocis_medinalis Specialist Chewing arthropods Growth / Development 20.00 20.00 167.2000000 84.0000000 57.2433402 39.3547964 1 NA NA NA NA NA NA
278 45 Johnson 2017 Functional Ecology Medicago sativa Medicago_sativa Perennial Non-Poaceae Pea aphid Acyrthosiphon pisum Acyrthosiphon_pisum Specialist Fluid-feeding arthropods Abundance / Preference 14.00 16.00 7.2100000 15.3100000 5.2757369 14.2400000 1 9 9.000 3.5077700 2.584440 1.1886000 1.422990e+00
279 46 Frew 2016 Journal of Applied Ecology Saccharum spp. Saccharum_spp. Perennial Poaceae Canegrub Dermolepida albohirtum Dermolepida_albohirtum Specialist Chewing arthropods Growth / Development 28.00 25.00 0.1088059 0.0481399 0.0583624 0.0608853 1 28 25.000 0.8008642 1.401641 0.4675534 4.565045e+00
280 46 Frew 2016 Journal of Applied Ecology Saccharum spp. Saccharum_spp. Perennial Poaceae Canegrub Dermolepida albohirtum Dermolepida_albohirtum Specialist Chewing arthropods Feeding efficiency 28.00 25.00 0.1323972 0.0461391 0.0916747 0.0589224 1 28 25.000 0.8008642 1.401641 0.4675534 4.565045e+00
281 46 Frew 2016 Journal of Applied Ecology Saccharum spp. Saccharum_spp. Perennial Poaceae Canegrub Dermolepida albohirtum Dermolepida_albohirtum Specialist Chewing arthropods Growth / Development 13.00 13.00 0.8227205 0.4877462 0.4043423 0.2871691 1 28 25.000 0.8008642 1.401641 0.4675534 4.565045e+00
282 47 Dogramaci 2013 Florida Entomologist Capsicum annum Capsicum_annum Perennial Non-Poaceae chilli thrip Scirtothrips dorsalis Scirtothrips_dorsalis Generalist Cell-feeding arthropods Feeding efficiency 5.00 5.00 85.3300000 82.3300000 17.5978550 16.0102467 1 3 3.000 0.1500000 0.440000 0.0692820 2.251666e-01
283 47 Dogramaci 2013 Florida Entomologist Capsicum annum Capsicum_annum Perennial Non-Poaceae chilli thrip Scirtothrips dorsalis Scirtothrips_dorsalis Generalist Cell-feeding arthropods Abundance / Preference 8.00 8.00 6.8700000 4.6100000 9.3055252 7.2124892 1 3 3.000 0.1500000 0.440000 0.0692820 2.251666e-01
284 47 Dogramaci 2013 Florida Entomologist Capsicum annum Capsicum_annum Perennial Non-Poaceae chilli thrip Scirtothrips dorsalis Scirtothrips_dorsalis Generalist Cell-feeding arthropods Abundance / Preference 8.00 8.00 10.8400000 6.3700000 14.2835570 10.2106219 1 3 3.000 0.1500000 0.440000 0.0692820 2.251666e-01
285 48 Alvarenga 2017 Bulletin of Entomological Research Zea mays Zea_mays Annual Poaceae fall armyworm Spodoptera frugiperda Spodoptera_frugiperda Generalist Chewing arthropods Reproduction 10.00 10.00 1593.0000000 1232.0000000 379.8844153 379.8844153 1 10 10.000 0.6700000 0.780000 0.1581139 9.486830e-02
286 48 Alvarenga 2017 Bulletin of Entomological Research Zea mays Zea_mays Annual Poaceae fall armyworm Spodoptera frugiperda Spodoptera_frugiperda Generalist Chewing arthropods Feeding efficiency 10.00 10.00 227.0000000 200.1000000 84.6541730 90.1565361 1 10 10.000 0.6700000 0.780000 0.1581139 9.486830e-02
287 48 Alvarenga 2017 Bulletin of Entomological Research Zea mays Zea_mays Annual Poaceae fall armyworm Spodoptera frugiperda Spodoptera_frugiperda Generalist Chewing arthropods Growth / Development 10.00 10.00 18.8800000 19.0800000 1.8024983 2.4665766 -1 10 10.000 0.6700000 0.780000 0.1581139 9.486830e-02
288 48 Alvarenga 2017 Bulletin of Entomological Research Zea mays Zea_mays Annual Poaceae fall armyworm Spodoptera frugiperda Spodoptera_frugiperda Generalist Chewing arthropods Growth / Development 10.00 10.00 0.2010000 0.2000000 0.0316228 0.0316228 1 10 10.000 0.6700000 0.780000 0.1581139 9.486830e-02
289 48 Alvarenga 2017 Bulletin of Entomological Research Zea mays Zea_mays Annual Poaceae fall armyworm Spodoptera frugiperda Spodoptera_frugiperda Generalist Chewing arthropods Mortality / Survivability 10.00 10.00 76.0000000 76.0000000 15.7797655 15.7797655 1 10 10.000 0.6700000 0.780000 0.1581139 9.486830e-02
290 48 Alvarenga 2017 Bulletin of Entomological Research Zea mays Zea_mays Annual Poaceae fall armyworm Spodoptera frugiperda Spodoptera_frugiperda Generalist Chewing arthropods Feeding efficiency 10.00 10.00 180.5300000 186.6600000 32.9825560 35.0380365 1 10 10.000 0.6700000 0.780000 0.1581139 9.486830e-02
291 48 Alvarenga 2017 Bulletin of Entomological Research Zea mays Zea_mays Annual Poaceae fall armyworm Spodoptera frugiperda Spodoptera_frugiperda Generalist Chewing arthropods Growth / Development 10.00 10.00 10.7300000 10.3700000 0.5375872 0.6957011 -1 10 10.000 0.6700000 0.780000 0.1581139 9.486830e-02
292 48 Alvarenga 2017 Bulletin of Entomological Research Zea mays Zea_mays Annual Poaceae fall armyworm Spodoptera frugiperda Spodoptera_frugiperda Generalist Chewing arthropods Growth / Development 10.00 10.00 0.2000000 0.1900000 0.0316228 0.0316228 1 10 10.000 0.6700000 0.780000 0.1581139 9.486830e-02
293 48 Alvarenga 2017 Bulletin of Entomological Research Zea mays Zea_mays Annual Poaceae fall armyworm Spodoptera frugiperda Spodoptera_frugiperda Generalist Chewing arthropods Mortality / Survivability 10.00 10.00 83.5000000 77.3300000 17.7403777 17.7403777 1 10 10.000 0.6700000 0.780000 0.1581139 9.486830e-02
294 48 Alvarenga 2017 Bulletin of Entomological Research Zea mays Zea_mays Annual Poaceae fall armyworm Spodoptera frugiperda Spodoptera_frugiperda Generalist Chewing arthropods Growth / Development 10.00 10.00 9.0600000 9.5400000 1.6443844 2.2768399 1 10 10.000 0.6700000 0.780000 0.1581139 9.486830e-02
295 48 Alvarenga 2017 Bulletin of Entomological Research Zea mays Zea_mays Annual Poaceae fall armyworm Spodoptera frugiperda Spodoptera_frugiperda Generalist Chewing arthropods Growth / Development 10.00 10.00 21.6600000 25.8300000 25.8041857 24.9819935 -1 10 10.000 0.6700000 0.780000 0.1581139 9.486830e-02
296 48 Alvarenga 2017 Bulletin of Entomological Research Zea mays Zea_mays Annual Poaceae fall armyworm Spodoptera frugiperda Spodoptera_frugiperda Generalist Chewing arthropods Reproduction 10.00 10.00 1843.6000000 1306.2000000 966.5817896 1899.7699271 1 10 10.000 0.6700000 0.780000 0.1581139 9.486830e-02
297 49 Jeer 2017 Journal of Applied Entomology Oryza sativa Oryza_sativa Annual Poaceae Yellow stem borer Scirpophaga incertulas Scirpophaga_incertulas Specialist Boring arthropods Mortality / Survivability 4.00 4.00 14.1000000 14.3000000 9.4000000 8.6000000 -1 4 4.000 29.8000000 45.000000 1.0200000 1.020000e+00
298 49 Jeer 2017 Journal of Applied Entomology Oryza sativa Oryza_sativa Annual Poaceae Yellow stem borer Scirpophaga incertulas Scirpophaga_incertulas Specialist Boring arthropods Mortality / Survivability 4.00 4.00 15.6000000 17.5000000 7.4000000 8.2000000 -1 4 4.000 29.9000000 46.800000 1.1600000 1.160000e+00
299 49 Jeer 2017 Journal of Applied Entomology Oryza sativa Oryza_sativa Annual Poaceae Yellow stem borer Scirpophaga incertulas Scirpophaga_incertulas Specialist Boring arthropods Growth / Development 4.00 4.00 44.8600000 24.8200000 7.7600000 3.6800000 1 4 4.000 29.8000000 45.000000 1.0200000 1.020000e+00
300 49 Jeer 2017 Journal of Applied Entomology Oryza sativa Oryza_sativa Annual Poaceae Yellow stem borer Scirpophaga incertulas Scirpophaga_incertulas Specialist Boring arthropods Growth / Development 4.00 4.00 41.9800000 28.5800000 5.5600000 4.5600000 1 4 4.000 29.9000000 46.800000 1.1600000 1.160000e+00
301 49 Jeer 2017 Journal of Applied Entomology Oryza sativa Oryza_sativa Annual Poaceae Yellow stem borer Scirpophaga incertulas Scirpophaga_incertulas Specialist Boring arthropods Growth / Development 4.00 4.00 285.3000000 248.6000000 16.2000000 17.0000000 1 4 4.000 29.8000000 45.000000 1.0200000 1.020000e+00
302 49 Jeer 2017 Journal of Applied Entomology Oryza sativa Oryza_sativa Annual Poaceae Yellow stem borer Scirpophaga incertulas Scirpophaga_incertulas Specialist Boring arthropods Growth / Development 4.00 4.00 285.5000000 246.7000000 14.6000000 12.8000000 1 4 4.000 29.9000000 46.800000 1.1600000 1.160000e+00
303 50 Almeida/Melo 2016 Revista De Cinencias Agroambientais Dendranthema grandiflorum Dendranthema_grandiflorum Perennial Non-Poaceae Whitefly Bemisia tabaci Bemisia_tabaci Generalist Fluid-feeding arthropods Reproduction 10.00 10.00 18.8000000 11.8000000 34.1525987 15.8113883 1 10 10.000 0.2400000 0.210000 0.0664078 2.846050e-02
304 50 Almeida/Melo 2016 Revista De Cinencias Agroambientais Dendranthema grandiflorum Dendranthema_grandiflorum Perennial Non-Poaceae Whitefly Bemisia tabaci Bemisia_tabaci Generalist Fluid-feeding arthropods Abundance / Preference 10.00 10.00 4.8000000 2.9000000 6.1980642 4.3323204 1 10 10.000 0.2400000 0.210000 0.0664078 2.846050e-02
305 50 Almeida/Melo 2016 Revista De Cinencias Agroambientais Dendranthema grandiflorum Dendranthema_grandiflorum Perennial Non-Poaceae Whitefly Bemisia tabaci Bemisia_tabaci Generalist Fluid-feeding arthropods Reproduction 10.00 10.00 28.0000000 14.8000000 48.7306987 26.2469046 1 10 10.000 0.2400000 0.210000 0.0664078 2.846050e-02
306 50 Almeida/Melo 2016 Revista De Cinencias Agroambientais Dendranthema grandiflorum Dendranthema_grandiflorum Perennial Non-Poaceae Whitefly Bemisia tabaci Bemisia_tabaci Generalist Fluid-feeding arthropods Abundance / Preference 10.00 10.00 4.0000000 6.2000000 8.7911319 7.9056942 1 10 10.000 0.2400000 0.210000 0.0664078 2.846050e-02
307 50 Almeida/Melo 2016 Revista De Cinencias Agroambientais Dendranthema grandiflorum Dendranthema_grandiflorum Perennial Non-Poaceae Whitefly Bemisia tabaci Bemisia_tabaci Generalist Fluid-feeding arthropods Mortality / Survivability 10.00 10.00 93.0000000 91.6000000 16.0011250 22.3256803 1 10 10.000 0.2400000 0.210000 0.0664078 2.846050e-02
308 50 Almeida/Melo 2016 Revista De Cinencias Agroambientais Dendranthema grandiflorum Dendranthema_grandiflorum Perennial Non-Poaceae Whitefly Bemisia tabaci Bemisia_tabaci Generalist Fluid-feeding arthropods Mortality / Survivability 10.00 10.00 14.6000000 22.9000000 29.7254100 72.5110267 1 10 10.000 0.2400000 0.210000 0.0664078 2.846050e-02
309 50 Almeida/Melo 2016 Revista De Cinencias Agroambientais Dendranthema grandiflorum Dendranthema_grandiflorum Perennial Non-Poaceae Whitefly Bemisia tabaci Bemisia_tabaci Generalist Fluid-feeding arthropods Mortality / Survivability 10.00 10.00 37.5000000 43.7000000 61.2216955 10.6884985 1 10 10.000 0.2400000 0.210000 0.0664078 2.846050e-02
310 50 Almeida/Melo 2016 Revista De Cinencias Agroambientais Dendranthema grandiflorum Dendranthema_grandiflorum Perennial Non-Poaceae Whitefly Bemisia tabaci Bemisia_tabaci Generalist Fluid-feeding arthropods Mortality / Survivability 10.00 10.00 47.9000000 33.3000000 68.0838380 85.3814968 1 10 10.000 0.2400000 0.210000 0.0664078 2.846050e-02
311 51 Vieira 2016 Fruitis Citrus reticulata Citrus_reticulata Perennial Non-Poaceae Blackfly Aleurocanthus woglumi Aleurocanthus_woglumi Generalist Fluid-feeding arthropods Growth / Development 80.00 80.00 84.7500000 73.5000000 94.9881677 105.9001794 -1 NA NA NA NA NA NA
312 52 Han 2016 Plos One Oryza sativa Oryza_sativa Annual Poaceae Rice leaffolder Cnaphalocrocis medinalis Cnaphalocrocis_medinalis Specialist Chewing arthropods Mortality / Survivability 12.00 12.00 89.5400000 76.6100000 7.8635107 4.0529989 1 3 3.000 7.6777790 9.133750 0.0090933 3.971593e-01
313 52 Han 2016 Plos One Oryza sativa Oryza_sativa Annual Poaceae Rice leaffolder Cnaphalocrocis medinalis Cnaphalocrocis_medinalis Specialist Chewing arthropods Mortality / Survivability 12.00 12.00 77.7300000 76.4700000 7.8635107 3.0830504 1 3 3.000 7.6777790 9.133750 0.0090933 3.971593e-01
314 52 Han 2016 Plos One Oryza sativa Oryza_sativa Annual Poaceae Rice leaffolder Cnaphalocrocis medinalis Cnaphalocrocis_medinalis Specialist Chewing arthropods Mortality / Survivability 12.00 12.00 94.2100000 56.3500000 2.6327172 11.4315353 1 3 3.000 7.6777790 9.133750 0.0090933 3.971593e-01
315 52 Han 2016 Plos One Oryza sativa Oryza_sativa Annual Poaceae Rice leaffolder Cnaphalocrocis medinalis Cnaphalocrocis_medinalis Specialist Chewing arthropods Mortality / Survivability 12.00 12.00 76.0200000 70.5700000 3.3255376 9.0413052 1 3 3.000 7.6777790 9.133750 0.0090933 3.971593e-01
316 52 Han 2016 Plos One Oryza sativa Oryza_sativa Annual Poaceae Rice leaffolder Cnaphalocrocis medinalis Cnaphalocrocis_medinalis Specialist Chewing arthropods Mortality / Survivability 12.00 12.00 80.0700000 74.3500000 14.2720987 7.6210236 1 3 3.000 7.6777790 9.133750 0.0090933 3.971593e-01
317 53 Ryalls 2017 Biology Letters Phalaris aquatica Phalaris_aquatica Perennial Poaceae House cricket Acheta domesticus Acheta_domesticus Generalist Chewing arthropods Feeding efficiency 11.00 11.00 446.0364000 332.6636000 143.6897841 154.4031455 1 11 11.000 1.0016000 1.349800 0.2169073 3.635021e-01
318 53 Ryalls 2017 Biology Letters Phalaris aquatica Phalaris_aquatica Perennial Poaceae House cricket Acheta domesticus Acheta_domesticus Generalist Chewing arthropods Feeding efficiency 11.00 11.00 98.4000000 98.0500000 1.0281537 1.4593149 1 11 11.000 1.0016000 1.349800 0.2169073 3.635021e-01
319 53 Ryalls 2017 Biology Letters Phalaris aquatica Phalaris_aquatica Perennial Poaceae House cricket Acheta domesticus Acheta_domesticus Generalist Chewing arthropods Growth / Development 11.00 11.00 5.4636000 10.2000000 8.1370073 6.9198060 -1 11 11.000 1.0016000 1.349800 0.2169073 3.635021e-01
320 53 Ryalls 2017 Biology Letters Phalaris aquatica Phalaris_aquatica Perennial Poaceae House cricket Acheta domesticus Acheta_domesticus Generalist Chewing arthropods Feeding efficiency 11.00 11.00 3.3727000 1.3364000 3.4904159 1.9355822 1 11 11.000 1.0016000 1.349800 0.2169073 3.635021e-01
321 54 Frew 2016 Journal of Chemical Ecology Saccharum spp. Saccharum_spp. Perennial Poaceae Canegrub Dermolepida albohirtum Dermolepida_albohirtum Specialist Chewing arthropods Growth / Development 14.00 12.00 0.0825071 0.3867500 0.2231366 0.1668286 -1 14 12.000 0.7845714 1.360861 0.5490493 4.840788e-01
322 54 Frew 2016 Journal of Chemical Ecology Saccharum spp. Saccharum_spp. Perennial Poaceae Canegrub Dermolepida albohirtum Dermolepida_albohirtum Specialist Chewing arthropods Feeding efficiency 14.00 12.00 0.5004929 0.1741417 0.4169014 0.2598006 1 14 12.000 0.7845714 1.360861 0.5490493 4.840788e-01
323 55 Frew 2017 Soil Biology & Biochemistry Saccharum spp. Saccharum_spp. Perennial Poaceae Canegrub Dermolepida albohirtum Dermolepida_albohirtum Specialist Chewing arthropods Growth / Development 80.00 80.00 0.0015633 0.0740212 0.0474085 0.0614056 -1 80 80.000 1.9778750 2.416663 1.3914818 6.361551e-01
324 55 Frew 2017 Soil Biology & Biochemistry Saccharum spp. Saccharum_spp. Perennial Poaceae Canegrub Dermolepida albohirtum Dermolepida_albohirtum Specialist Chewing arthropods Feeding efficiency 80.00 80.00 0.1163513 0.0336511 0.0927262 0.0283963 1 80 80.000 1.9778750 2.416663 1.3914818 6.361551e-01
325 55 Frew 2017 Soil Biology & Biochemistry Saccharum spp. Saccharum_spp. Perennial Poaceae Canegrub Dermolepida albohirtum Dermolepida_albohirtum Specialist Chewing arthropods Growth / Development 80.00 80.00 0.0084250 0.3024625 0.1855265 0.2403992 -1 80 80.000 1.9778750 2.416663 1.3914818 6.361551e-01
326 55 Frew 2017 Soil Biology & Biochemistry Saccharum spp. Saccharum_spp. Perennial Poaceae Canegrub Dermolepida albohirtum Dermolepida_albohirtum Specialist Chewing arthropods Growth / Development 34.00 34.00 0.0709118 0.4265588 0.3367911 0.4664700 -1 80 80.000 1.9778750 2.416663 1.3914818 6.361551e-01
327 56 Han 2015 Plos One Oryza sativa Oryza_sativa Annual Poaceae Rice leaffolder Cnaphalocrocis medinalis Cnaphalocrocis_medinalis Specialist Chewing arthropods Growth / Development 3.00 3.00 16.2000000 17.8400000 0.5022947 0.5022947 -1 3 3.000 15.1000000 19.180000 0.7967434 1.558846e+00
328 56 Han 2015 Plos One Oryza sativa Oryza_sativa Annual Poaceae Rice leaffolder Cnaphalocrocis medinalis Cnaphalocrocis_medinalis Specialist Chewing arthropods Growth / Development 88.00 83.00 6.0200000 4.3000000 4.5027991 2.0042954 1 3 3.000 15.1000000 19.180000 0.7967434 1.558846e+00
329 56 Han 2015 Plos One Oryza sativa Oryza_sativa Annual Poaceae Rice leaffolder Cnaphalocrocis medinalis Cnaphalocrocis_medinalis Specialist Chewing arthropods Mortality / Survivability 3.00 3.00 40.1100000 16.8400000 6.0275368 2.3209481 1 3 3.000 15.1000000 19.180000 0.7967434 1.558846e+00
330 56 Han 2015 Plos One Oryza sativa Oryza_sativa Annual Poaceae Rice leaffolder Cnaphalocrocis medinalis Cnaphalocrocis_medinalis Specialist Chewing arthropods Growth / Development 121.00 59.00 5.3300000 5.3500000 0.9900000 0.6913031 -1 3 3.000 15.1000000 19.180000 0.7967434 1.558846e+00
331 56 Han 2015 Plos One Oryza sativa Oryza_sativa Annual Poaceae Rice leaffolder Cnaphalocrocis medinalis Cnaphalocrocis_medinalis Specialist Chewing arthropods Growth / Development 21.00 22.00 22.4500000 16.6300000 3.2994545 3.0956744 1 3 3.000 15.1000000 19.180000 0.7967434 1.558846e+00
332 56 Han 2015 Plos One Oryza sativa Oryza_sativa Annual Poaceae Rice leaffolder Cnaphalocrocis medinalis Cnaphalocrocis_medinalis Specialist Chewing arthropods Growth / Development 3.00 3.00 32.6600000 15.6400000 7.5517415 2.2170250 1 3 3.000 15.1000000 19.180000 0.7967434 1.558846e+00
333 56 Han 2015 Plos One Oryza sativa Oryza_sativa Annual Poaceae Rice leaffolder Cnaphalocrocis medinalis Cnaphalocrocis_medinalis Specialist Chewing arthropods Mortality / Survivability 3.00 3.00 94.2800000 87.2800000 2.4248711 5.7677292 1 3 3.000 15.1000000 19.180000 0.7967434 1.558846e+00
334 56 Han 2015 Plos One Oryza sativa Oryza_sativa Annual Poaceae Rice leaffolder Cnaphalocrocis medinalis Cnaphalocrocis_medinalis Specialist Chewing arthropods Reproduction 26.00 13.00 118.2400000 95.4800000 35.9990778 31.0798520 1 3 3.000 15.1000000 19.180000 0.7967434 1.558846e+00
335 56 Han 2015 Plos One Oryza sativa Oryza_sativa Annual Poaceae Rice leaffolder Cnaphalocrocis medinalis Cnaphalocrocis_medinalis Specialist Chewing arthropods Mortality / Survivability 3.00 3.00 78.8900000 80.6800000 3.8105118 8.2792029 1 3 3.000 15.1000000 19.180000 0.7967434 1.558846e+00
336 56 Han 2015 Plos One Oryza sativa Oryza_sativa Annual Poaceae Rice leaffolder Cnaphalocrocis medinalis Cnaphalocrocis_medinalis Specialist Chewing arthropods Feeding efficiency 15.00 17.00 12.8400000 26.0100000 10.8443534 11.5446958 1 3 3.000 15.1000000 19.180000 0.7967434 1.558846e+00
337 56 Han 2015 Plos One Oryza sativa Oryza_sativa Annual Poaceae Rice leaffolder Cnaphalocrocis medinalis Cnaphalocrocis_medinalis Specialist Chewing arthropods Feeding efficiency 15.00 17.00 1.0000000 2.3400000 0.6971370 0.9070832 1 3 3.000 15.1000000 19.180000 0.7967434 1.558846e+00
338 56 Han 2015 Plos One Oryza sativa Oryza_sativa Annual Poaceae Rice leaffolder Cnaphalocrocis medinalis Cnaphalocrocis_medinalis Specialist Chewing arthropods Growth / Development 15.00 17.00 0.3500000 0.2700000 0.1936492 0.1649242 1 3 3.000 15.1000000 19.180000 0.7967434 1.558846e+00
339 56 Han 2015 Plos One Oryza sativa Oryza_sativa Annual Poaceae Rice leaffolder Cnaphalocrocis medinalis Cnaphalocrocis_medinalis Specialist Chewing arthropods Feeding efficiency 15.00 17.00 56.6500000 48.6300000 17.1573162 18.2653579 1 3 3.000 15.1000000 19.180000 0.7967434 1.558846e+00
340 56 Han 2015 Plos One Oryza sativa Oryza_sativa Annual Poaceae Rice leaffolder Cnaphalocrocis medinalis Cnaphalocrocis_medinalis Specialist Chewing arthropods Feeding efficiency 15.00 17.00 28.1300000 9.6800000 14.2913085 10.7200746 1 3 3.000 15.1000000 19.180000 0.7967434 1.558846e+00
341 56 Han 2015 Plos One Oryza sativa Oryza_sativa Annual Poaceae Rice leaffolder Cnaphalocrocis medinalis Cnaphalocrocis_medinalis Specialist Chewing arthropods Feeding efficiency 13.00 16.00 56.5400000 27.8300000 39.9855636 39.8400000 1 3 3.000 15.1000000 19.180000 0.7967434 1.558846e+00
342 57 Wang 2020 Ecology and Evolution Oryza sativa Oryza_sativa Annual Poaceae Rice striped stem borer Chilo suppressalis Chilo_suppressalis Generalist Boring arthropods Feeding efficiency 3.00 3.00 63.8500000 35.7060000 13.2467246 8.0575004 1 9 9.000 17.1690000 68.036000 10.0590000 9.714000e+00
343 57 Wang 2020 Ecology and Evolution Oryza sativa Oryza_sativa Annual Poaceae Rice striped stem borer Chilo suppressalis Chilo_suppressalis Generalist Boring arthropods Growth / Development 17.50 17.50 38.6810000 29.4590000 6.3753494 3.9448520 1 9 9.000 17.1690000 68.036000 10.0590000 9.714000e+00
344 58 Gatarayiha 2010 International Journal of Pest Management Solanum melongena Solanum_melongena Annual Non-Poaceae Two spotted spider mite Tetranychus urticae Tetranychus_urticae Generalist Cell-feeding arthropods Mortality / Survivability 15.00 15.00 1.3000000 3.7000000 0.3872983 1.5491933 -1 NA NA NA NA NA NA
345 58 Gatarayiha 2010 International Journal of Pest Management Phaseolus vulgaris Phaseolus_vulgaris Perennial Non-Poaceae Two spotted spider mite Tetranychus urticae Tetranychus_urticae Generalist Cell-feeding arthropods Mortality / Survivability 15.00 15.00 7.2000000 8.9000000 1.5491933 4.2602817 -1 NA NA NA NA NA NA
346 58 Gatarayiha 2010 International Journal of Pest Management Cucumis sativus Cucumis_sativus Annual Non-Poaceae Two spotted spider mite Tetranychus urticae Tetranychus_urticae Generalist Cell-feeding arthropods Mortality / Survivability 15.00 15.00 6.8000000 11.3000000 7.3586684 11.6189500 -1 NA NA NA NA NA NA
347 58 Gatarayiha 2010 International Journal of Pest Management Zea mays Zea_mays Annual Poaceae Two spotted spider mite Tetranychus urticae Tetranychus_urticae Generalist Cell-feeding arthropods Mortality / Survivability 15.00 15.00 2.6000000 3.1000000 2.3237900 3.4856850 -1 NA NA NA NA NA NA
348 59 Ranger 2009 Environmental Entomology Zinnia elegans Zinnia_elegans Annual Non-Poaceae Green peach aphid Myzus persicae Myzus_persicae Generalist Fluid-feeding arthropods Growth / Development 24.00 24.00 9.3900000 9.3800000 45.2665704 1.2247449 -1 3 3.000 2.2400000 12.640000 0.4156922 2.875204e+00
349 59 Ranger 2009 Environmental Entomology Zinnia elegans Zinnia_elegans Annual Non-Poaceae Green peach aphid Myzus persicae Myzus_persicae Generalist Fluid-feeding arthropods Abundance / Preference 24.00 24.00 38.0000000 29.3000000 8.3282651 7.3484692 1 3 3.000 2.2400000 12.640000 0.4156922 2.875204e+00
350 60 Teixeira 2017 Entomologia Experimentalis et Applicata Brassica oleracea Brassica_oleracea Annual Non-Poaceae Diamondback moth Plutella xylostella Plutella_xylostella Specialist Chewing arthropods Growth / Development 10.00 10.00 7.9800000 7.2200000 1.2965338 1.8973666 1 10 10.000 0.0700000 0.080000 0.0100000 1.000000e-02
351 60 Teixeira 2017 Entomologia Experimentalis et Applicata Brassica oleracea Brassica_oleracea Annual Non-Poaceae Diamondback moth Plutella xylostella Plutella_xylostella Specialist Chewing arthropods Reproduction 10.00 10.00 141.3700000 100.3100000 68.8111619 58.6286278 1 10 10.000 0.0700000 0.080000 0.0100000 1.000000e-02
352 60 Teixeira 2017 Entomologia Experimentalis et Applicata Brassica oleracea Brassica_oleracea Annual Non-Poaceae Diamondback moth Plutella xylostella Plutella_xylostella Specialist Chewing arthropods Reproduction 10.00 10.00 54.0900000 38.6800000 31.6860222 38.7379013 1 10 10.000 0.0700000 0.080000 0.0100000 1.000000e-02
353 60 Teixeira 2017 Entomologia Experimentalis et Applicata Brassica oleracea Brassica_oleracea Annual Non-Poaceae Diamondback moth Plutella xylostella Plutella_xylostella Specialist Chewing arthropods Abundance / Preference 10.00 10.00 2.8000000 2.0800000 1.7708755 2.0554805 1 10 10.000 0.0700000 0.080000 0.0100000 1.000000e-02
354 60 Teixeira 2017 Entomologia Experimentalis et Applicata Brassica oleracea Brassica_oleracea Annual Non-Poaceae Diamondback moth Plutella xylostella Plutella_xylostella Specialist Chewing arthropods Growth / Development 9.00 9.00 10.4500000 10.1500000 0.2291400 0.3171000 -1 10 10.000 0.0700000 0.080000 0.0100000 1.000000e-02
355 60 Teixeira 2017 Entomologia Experimentalis et Applicata Brassica oleracea Brassica_oleracea Annual Non-Poaceae Diamondback moth Plutella xylostella Plutella_xylostella Specialist Chewing arthropods Mortality / Survivability 9.00 9.00 76.4400000 76.3300000 9.3150000 12.4890000 1 10 10.000 0.0700000 0.080000 0.0100000 1.000000e-02
356 60 Teixeira 2017 Entomologia Experimentalis et Applicata Brassica oleracea Brassica_oleracea Annual Non-Poaceae Diamondback moth Plutella xylostella Plutella_xylostella Specialist Chewing arthropods Growth / Development 9.00 9.00 5.6890000 5.5780000 0.5733000 0.4236000 1 10 10.000 0.0700000 0.080000 0.0100000 1.000000e-02
357 60 Teixeira 2017 Entomologia Experimentalis et Applicata Brassica oleracea Brassica_oleracea Annual Non-Poaceae Diamondback moth Plutella xylostella Plutella_xylostella Specialist Chewing arthropods Growth / Development 9.00 9.00 19.3100000 18.8700000 0.3990000 0.4227000 -1 10 10.000 0.0700000 0.080000 0.0100000 1.000000e-02
358 60 Teixeira 2017 Entomologia Experimentalis et Applicata Brassica oleracea Brassica_oleracea Annual Non-Poaceae Diamondback moth Plutella xylostella Plutella_xylostella Specialist Chewing arthropods Reproduction 10.00 10.00 38.5500000 60.4000000 56.3517879 56.3517879 1 10 10.000 0.0700000 0.080000 0.0100000 1.000000e-02
359 60 Teixeira 2017 Entomologia Experimentalis et Applicata Brassica oleracea Brassica_oleracea Annual Non-Poaceae Cabbage aphid Brevicoryne brassicae Brevicoryne_brassicae Specialist Fluid-feeding arthropods Abundance / Preference 8.00 8.00 0.2931000 0.2955000 0.0329300 0.0113400 1 10 10.000 0.0700000 0.080000 0.0100000 1.000000e-02
360 60 Teixeira 2017 Entomologia Experimentalis et Applicata Brassica oleracea Brassica_oleracea Annual Non-Poaceae Cabbage aphid Brevicoryne brassicae Brevicoryne_brassicae Specialist Fluid-feeding arthropods Reproduction 8.00 8.00 22.8300000 25.8300000 2.0190000 3.5020000 1 10 10.000 0.0700000 0.080000 0.0100000 1.000000e-02
361 60 Teixeira 2017 Entomologia Experimentalis et Applicata Brassica oleracea Brassica_oleracea Annual Non-Poaceae Cabbage aphid Brevicoryne brassicae Brevicoryne_brassicae Specialist Fluid-feeding arthropods Abundance / Preference 8.00 8.00 8.0950000 8.0560000 0.6299000 1.4460000 -1 10 10.000 0.0700000 0.080000 0.0100000 1.000000e-02
362 60 Teixeira 2017 Entomologia Experimentalis et Applicata Brassica oleracea Brassica_oleracea Annual Non-Poaceae Cabbage aphid Brevicoryne brassicae Brevicoryne_brassicae Specialist Fluid-feeding arthropods Abundance / Preference 8.00 8.00 2.5000000 3.5000000 1.3780000 1.5120000 1 10 10.000 0.0700000 0.080000 0.0100000 1.000000e-02
363 61 Yang 2017 Scientific Reports Oryza sativa Oryza_sativa Annual Poaceae Brown planthopper Nilaparvata lugens Nilaparvata_lugens Specialist Fluid-feeding arthropods Feeding efficiency 13.00 13.00 54.3000000 26.2000000 24.8783038 19.8305320 1 3 3.000 14.0000000 20.000000 1.2817176 8.833459e-01
364 61 Yang 2017 Scientific Reports Oryza sativa Oryza_sativa Annual Poaceae Brown planthopper Nilaparvata lugens Nilaparvata_lugens Specialist Fluid-feeding arthropods Feeding efficiency 27.00 24.00 49.7500000 30.4800000 30.6053378 18.0282445 1 3 3.000 14.0000000 20.000000 1.2817176 8.833459e-01
365 61 Yang 2017 Scientific Reports Oryza sativa Oryza_sativa Annual Poaceae Brown planthopper Nilaparvata lugens Nilaparvata_lugens Specialist Fluid-feeding arthropods Abundance / Preference 30.00 30.00 37.8600000 18.9800000 13.4192027 9.4756002 1 3 3.000 14.0000000 20.000000 1.2817176 8.833459e-01
366 61 Yang 2017 Scientific Reports Oryza sativa Oryza_sativa Annual Poaceae Brown planthopper Nilaparvata lugens Nilaparvata_lugens Specialist Fluid-feeding arthropods Growth / Development 3.00 3.00 36.2000000 34.2000000 0.4849742 0.9526279 -1 3 3.000 14.0000000 20.000000 1.2817176 8.833459e-01
367 62 Wu 2017 Frontiers in Plant Science Oryza sativa Oryza_sativa Annual Poaceae Brown planthopper Nilaparvata lugens Nilaparvata_lugens Specialist Fluid-feeding arthropods Feeding efficiency 20.00 20.00 64.8100000 46.5100000 17.1730021 13.5505719 1 6 6.000 7.2000000 29.160000 1.6166632 2.351510e+00
368 62 Wu 2017 Frontiers in Plant Science Oryza sativa Oryza_sativa Annual Poaceae Brown planthopper Nilaparvata lugens Nilaparvata_lugens Specialist Fluid-feeding arthropods Mortality / Survivability 20.00 20.00 1.6700000 3.4400000 7.3790243 7.1554175 -1 6 6.000 7.2000000 29.160000 1.6166632 2.351510e+00
369 63 Juma 2015 Bulletin of Entomological Research Zea mays Zea_mays Annual Poaceae stem borer Busseola fusca Busseola_fusca Specialist Boring arthropods Mortality / Survivability 12.00 12.00 37.5000000 38.5000000 31.6618888 31.5579657 1 12 12.000 0.8500000 1.000000 0.1385641 1.385641e-01
370 63 Juma 2015 Bulletin of Entomological Research Zea mays Zea_mays Annual Poaceae stem borer Busseola fusca Busseola_fusca Specialist Boring arthropods Growth / Development 12.00 12.00 1.1000000 0.5000000 0.3810512 0.3117691 1 12 12.000 0.8500000 1.000000 0.1385641 1.385641e-01
371 64 Vilela 2014 Revista Colombiana de Entomología Saccharum spp. Saccharum_spp. Perennial Poaceae Sugarcane borer Diatraea saccharalis Diatraea_saccharalis Specialist Boring arthropods Feeding efficiency 10.00 10.00 14.0000000 9.2500000 32.2236094 20.9026553 1 6 6.000 0.1750000 0.190000 0.0122474 2.449490e-02
372 64 Vilela 2014 Revista Colombiana de Entomología Saccharum spp. Saccharum_spp. Perennial Poaceae Sugarcane borer Diatraea saccharalis Diatraea_saccharalis Specialist Boring arthropods Feeding efficiency 10.00 10.00 0.6000000 0.6000000 0.3952847 0.3478505 1 6 6.000 0.1750000 0.190000 0.0122474 2.449490e-02
373 64 Vilela 2014 Revista Colombiana de Entomología Saccharum spp. Saccharum_spp. Perennial Poaceae Sugarcane borer Diatraea saccharalis Diatraea_saccharalis Specialist Boring arthropods Abundance / Preference 10.00 10.00 32.0500000 36.0000000 28.2707623 30.1997517 1 6 6.000 0.1750000 0.190000 0.0122474 2.449490e-02
374 65 Connick 2011 Mphil Thesis Vitis vinifera Vitis_vinifera Perennial Non-Poaceae Light brown apple moth Epiphyas postvittana Epiphyas_postvittana Generalist Chewing arthropods Feeding efficiency 10.00 10.00 2.5370000 9.4900000 8.5128515 8.6330180 1 NA NA NA NA NA NA
375 65 Connick 2011 Mphil Thesis Vitis vinifera Vitis_vinifera Perennial Non-Poaceae Light brown apple moth Epiphyas postvittana Epiphyas_postvittana Generalist Chewing arthropods Growth / Development 10.00 10.00 11.3130000 1.2590000 7.9689397 8.0606458 -1 NA NA NA NA NA NA
376 66 Costa 2009 Ciênc. agrotec., Lavras Triticum aestivum Triticum_aestivum Annual Poaceae Greenbug (aphid) Schizaphis graminum Schizaphis_graminum Specialist Fluid-feeding arthropods Reproduction 10.00 10.00 14.8900000 10.3300000 6.3561781 2.7828043 1 NA NA NA NA NA NA
377 66 Costa 2009 Ciênc. agrotec., Lavras Triticum aestivum Triticum_aestivum Annual Poaceae Greenbug (aphid) Schizaphis graminum Schizaphis_graminum Specialist Fluid-feeding arthropods Abundance / Preference 10.00 10.00 23.6700000 17.0000000 15.0524417 10.0876657 1 NA NA NA NA NA NA
378 66 Costa 2009 Ciênc. agrotec., Lavras Triticum aestivum Triticum_aestivum Annual Poaceae Greenbug (aphid) Schizaphis graminum Schizaphis_graminum Specialist Fluid-feeding arthropods Abundance / Preference 10.00 10.00 0.2200000 0.2000000 0.0316228 0.0316228 1 NA NA NA NA NA NA
379 66 Costa 2009 Ciênc. agrotec., Lavras Triticum aestivum Triticum_aestivum Annual Poaceae Greenbug (aphid) Schizaphis graminum Schizaphis_graminum Specialist Fluid-feeding arthropods Growth / Development 10.00 10.00 28.4400000 20.0000000 6.3245553 7.5578436 1 NA NA NA NA NA NA
380 66 Costa 2009 Ciênc. agrotec., Lavras Triticum aestivum Triticum_aestivum Annual Poaceae Greenbug (aphid) Schizaphis graminum Schizaphis_graminum Specialist Fluid-feeding arthropods Feeding efficiency 10.00 10.00 7.3400000 4.8000000 2.3717082 3.3203915 1 NA NA NA NA NA NA
381 67 Gomes 2009 Ciênc. agrotec., Lavras Solanum tuberosum Solanum_tuberosum Perennial Non-Poaceae Cucurbit beetle Diabrotica speciosa Diabrotica_speciosa Generalist Chewing arthropods Feeding efficiency 4.00 4.00 5.0000000 2.6000000 0.3400000 0.3400000 1 NA NA NA NA NA NA
382 67 Gomes 2009 Ciênc. agrotec., Lavras Solanum tuberosum Solanum_tuberosum Perennial Non-Poaceae Sepentine leaf miner Liriomyza spp. Liriomyza_spp. Generalist Leaf-mining arthropods Feeding efficiency 4.00 4.00 1.7500000 0.5000000 0.2600000 0.2800000 1 NA NA NA NA NA NA
383 68 Johnson 2018 Frontiers in Plant Science Medicago sativa Medicago_sativa Perennial Non-Poaceae Pea aphid Acyrthosiphon pisum Acyrthosiphon_pisum Specialist Fluid-feeding arthropods Abundance / Preference 20.00 20.00 4.9000000 9.1500000 5.5901699 13.7392961 1 9 9.000 3.4360000 2.605000 1.3161000 2.064900e+00
384 69 Massey 2008 Biology Letters Deschampsia cespitosa Deschampsia_cespitosa Perennial Poaceae Field vole Microtus agrestis Microtus_agrestis Generalist Mammalian chewers Growth / Development 5.00 5.00 0.2610000 0.1070000 0.0402492 0.0581378 1 10 10.000 1.7900000 6.620000 0.2846050 3.162278e-01
385 70 Massey 2007 Oecologia Festuca ovina Festuca_ovina Perennial Poaceae Locusts Schistocerca gregaria Schistocerca_gregaria Generalist Chewing arthropods Feeding efficiency 10.00 10.00 1595.8000000 1078.0100000 625.0874251 551.5644695 1 10 10.000 0.7260000 1.695000 0.2055480 6.798897e-01
386 70 Massey 2007 Oecologia Lolium perenne Lolium_perenne Perennial Poaceae Locusts Schistocerca gregaria Schistocerca_gregaria Generalist Chewing arthropods Feeding efficiency 10.00 10.00 779.3400000 373.1000000 190.3311678 206.7813362 1 10 10.000 1.0550000 1.616000 0.2940918 4.300698e-01
387 70 Massey 2007 Oecologia Festuca ovina Festuca_ovina Perennial Poaceae Field vole Microtus agrestis Microtus_agrestis Generalist Mammalian chewers Feeding efficiency 10.00 10.00 1032.7900000 622.4000000 248.2071735 284.9465154 1 10 10.000 0.7260000 1.695000 0.2055480 6.798897e-01
388 70 Massey 2007 Oecologia Lolium perenne Lolium_perenne Perennial Poaceae Field vole Microtus agrestis Microtus_agrestis Generalist Mammalian chewers Feeding efficiency 10.00 10.00 1235.6700000 441.8570000 314.4252678 188.4085030 1 10 10.000 1.0550000 1.616000 0.2940918 4.300698e-01
389 71 Massey 2009 Basic and Applied Ecology Agrostis capillaris Agrostis_capillaris Perennial Poaceae Sheep Ovis aries Ovis_aries Generalist Mammalian chewers Feeding efficiency 10.00 10.00 1.0310000 0.8760000 0.1328157 0.0790569 1 12 12.000 0.4700000 1.820000 0.0692820 1.732051e-01
390 71 Massey 2009 Basic and Applied Ecology Brachypodium pinnatum Brachypodium_pinnatum Perennial Poaceae Sheep Ovis aries Ovis_aries Generalist Mammalian chewers Feeding efficiency 10.00 10.00 0.7780000 0.5960000 0.1581139 0.2055480 1 12 12.000 1.2900000 3.120000 0.4849742 1.108513e+00
391 71 Massey 2009 Basic and Applied Ecology Festuca ovina Festuca_ovina Perennial Poaceae Sheep Ovis aries Ovis_aries Generalist Mammalian chewers Feeding efficiency 10.00 10.00 1.1550000 0.9410000 0.1897367 0.2213594 1 12 12.000 0.2700000 1.740000 0.0692820 1.732051e-01
392 71 Massey 2009 Basic and Applied Ecology Lolium perenne Lolium_perenne Perennial Poaceae Sheep Ovis aries Ovis_aries Generalist Mammalian chewers Feeding efficiency 10.00 10.00 1.0150000 0.8680000 0.2403331 0.2181972 1 12 12.000 0.6300000 2.970000 0.0692820 3.117691e-01
393 71 Massey 2009 Basic and Applied Ecology Poa annua Poa_annua Annual Poaceae Sheep Ovis aries Ovis_aries Generalist Mammalian chewers Feeding efficiency 10.00 10.00 1.0840000 1.1320000 0.1454648 0.1075174 1 12 12.000 0.4300000 1.050000 0.1385641 1.732051e-01
394 72 Massey 2006 Proceedings of the Royal Society Festuca ovina Festuca_ovina Perennial Poaceae Field vole Microtus agrestis Microtus_agrestis Generalist Mammalian chewers Feeding efficiency 10.00 10.00 0.7980000 0.2020000 0.1075174 0.0885438 1 10 10.000 0.5200000 2.440000 0.1264911 5.375872e-01
395 72 Massey 2006 Proceedings of the Royal Society Lolium perenne Lolium_perenne Perennial Poaceae Field vole Microtus agrestis Microtus_agrestis Generalist Mammalian chewers Feeding efficiency 10.00 10.00 0.7300000 0.2700000 0.0632456 0.0758947 1 10 10.000 0.5400000 4.680000 0.3162278 1.075174e+00
396 72 Massey 2006 Proceedings of the Royal Society Festuca ovina Festuca_ovina Perennial Poaceae Field vole Microtus agrestis Microtus_agrestis Generalist Mammalian chewers Growth / Development 6.00 6.00 0.2300000 0.1300000 0.0416413 0.0416413 1 10 10.000 0.5200000 2.440000 0.1264911 5.375872e-01
397 72 Massey 2006 Proceedings of the Royal Society Lolium perenne Lolium_perenne Perennial Poaceae Field vole Microtus agrestis Microtus_agrestis Generalist Mammalian chewers Growth / Development 6.00 6.00 0.2800000 0.1800000 0.0391918 0.0538888 1 10 10.000 0.5400000 4.680000 0.3162278 1.075174e+00
398 72 Massey 2006 Proceedings of the Royal Society Festuca ovina Festuca_ovina Perennial Poaceae Field vole Microtus agrestis Microtus_agrestis Generalist Mammalian chewers Growth / Development 10.00 10.00 0.0080000 0.0030000 0.0063246 0.0094868 1 10 10.000 0.5200000 2.440000 0.1264911 5.375872e-01
399 72 Massey 2006 Proceedings of the Royal Society Lolium perenne Lolium_perenne Perennial Poaceae Field vole Microtus agrestis Microtus_agrestis Generalist Mammalian chewers Growth / Development 10.00 10.00 0.0110000 0.0060000 0.0031623 0.0094868 1 10 10.000 0.5400000 4.680000 0.3162278 1.075174e+00
400 72 Massey 2006 Proceedings of the Royal Society Festuca ovina Festuca_ovina Perennial Poaceae Field vole Microtus agrestis Microtus_agrestis Generalist Mammalian chewers Feeding efficiency 6.00 6.00 0.2020000 0.1490000 0.0538888 0.0563383 1 10 10.000 0.5200000 2.440000 0.1264911 5.375872e-01
401 72 Massey 2006 Proceedings of the Royal Society Lolium perenne Lolium_perenne Perennial Poaceae Field vole Microtus agrestis Microtus_agrestis Generalist Mammalian chewers Feeding efficiency 6.00 6.00 0.4360000 0.3650000 0.0440908 0.0440908 1 10 10.000 0.5400000 4.680000 0.3162278 1.075174e+00
402 72 Massey 2006 Proceedings of the Royal Society Festuca ovina Festuca_ovina Perennial Poaceae Field vole Microtus agrestis Microtus_agrestis Generalist Mammalian chewers Feeding efficiency 10.00 10.00 0.3230000 0.1990000 0.0695701 0.0758947 1 10 10.000 0.5200000 2.440000 0.1264911 5.375872e-01
403 72 Massey 2006 Proceedings of the Royal Society Lolium perenne Lolium_perenne Perennial Poaceae Field vole Microtus agrestis Microtus_agrestis Generalist Mammalian chewers Feeding efficiency 10.00 10.00 0.4130000 0.3380000 0.0664078 0.0664078 1 10 10.000 0.5400000 4.680000 0.3162278 1.075174e+00
404 73 Peixoto 2011 Ciênc. agrotec., Lavras Phaseolus vulgaris Phaseolus_vulgaris Perennial Non-Poaceae Whitefly Bemisia tabaci Bemisia_tabaci Generalist Fluid-feeding arthropods Reproduction 6.00 6.00 73.7000000 39.0000000 34.9297237 34.2928564 1 NA NA NA NA NA NA
405 73 Peixoto 2011 Ciênc. agrotec., Lavras Phaseolus vulgaris Phaseolus_vulgaris Perennial Non-Poaceae Whitefly Bemisia tabaci Bemisia_tabaci Generalist Fluid-feeding arthropods Reproduction 6.00 6.00 28.3000000 10.4000000 9.4550304 7.5689233 1 NA NA NA NA NA NA
406 73 Peixoto 2011 Ciênc. agrotec., Lavras Phaseolus vulgaris Phaseolus_vulgaris Perennial Non-Poaceae Whitefly Bemisia tabaci Bemisia_tabaci Generalist Fluid-feeding arthropods Reproduction 6.00 6.00 13.7000000 10.1000000 6.8340764 6.9320560 1 NA NA NA NA NA NA
407 73 Peixoto 2011 Ciênc. agrotec., Lavras Phaseolus vulgaris Phaseolus_vulgaris Perennial Non-Poaceae Whitefly Bemisia tabaci Bemisia_tabaci Generalist Fluid-feeding arthropods Reproduction 6.00 6.00 4.7000000 6.7000000 3.1108520 7.3239743 1 NA NA NA NA NA NA
408 74 Frew 2019 Austral Ecology Brassica napus Brassica_napus Annual Non-Poaceae Australian bollworm Helicoverpa punctigera Helicoverpa_punctigera Generalist Chewing arthropods Growth / Development 7.00 7.00 0.2869796 0.0908044 0.1568944 0.1443594 1 7 7.000 2619.0000000 3815.714000 1304.1992970 1.009543e+04
409 74 Frew 2019 Austral Ecology Brassica napus Brassica_napus Annual Non-Poaceae Australian bollworm Helicoverpa punctigera Helicoverpa_punctigera Generalist Chewing arthropods Feeding efficiency 7.00 7.00 1.4134760 2.8848400 0.6029016 3.2579128 1 7 7.000 2619.0000000 3815.714000 1304.1992970 1.009543e+04
410 74 Frew 2019 Austral Ecology Brassica napus Brassica_napus Annual Non-Poaceae Australian bollworm Helicoverpa punctigera Helicoverpa_punctigera Generalist Chewing arthropods Growth / Development 7.00 7.00 0.1384243 0.0111986 0.1206175 0.1243957 1 7 7.000 2619.0000000 3815.714000 1304.1992970 1.009543e+04
411 74 Frew 2019 Austral Ecology Cucumis sativus Cucumis_sativus Annual Non-Poaceae Australian bollworm Helicoverpa punctigera Helicoverpa_punctigera Generalist Chewing arthropods Growth / Development 7.00 7.00 0.5078855 0.1863805 0.2237721 0.2326654 1 7 7.000 2591.8570000 5640.857000 1153.3692480 1.014195e+03
412 74 Frew 2019 Austral Ecology Cucumis sativus Cucumis_sativus Annual Non-Poaceae Australian bollworm Helicoverpa punctigera Helicoverpa_punctigera Generalist Chewing arthropods Feeding efficiency 7.00 7.00 1.2495890 1.6857030 0.7707883 0.4717039 1 7 7.000 2591.8570000 5640.857000 1153.3692480 1.014195e+03
413 74 Frew 2019 Austral Ecology Cucumis sativus Cucumis_sativus Annual Non-Poaceae Australian bollworm Helicoverpa punctigera Helicoverpa_punctigera Generalist Chewing arthropods Growth / Development 7.00 7.00 0.1680929 0.0333586 0.0933402 0.1438153 1 7 7.000 2591.8570000 5640.857000 1153.3692480 1.014195e+03
414 74 Frew 2019 Austral Ecology Sorghum bicolor Sorghum_bicolor Annual Poaceae Australian bollworm Helicoverpa punctigera Helicoverpa_punctigera Generalist Chewing arthropods Growth / Development 7.00 7.00 0.0044018 0.1559319 0.0769214 0.0973747 -1 7 7.000 4052.7140000 5752.429000 1345.2909898 8.253554e+02
415 74 Frew 2019 Austral Ecology Sorghum bicolor Sorghum_bicolor Annual Poaceae Australian bollworm Helicoverpa punctigera Helicoverpa_punctigera Generalist Chewing arthropods Feeding efficiency 7.00 7.00 0.8403215 1.5730069 0.5059383 0.4346001 1 7 7.000 4052.7140000 5752.429000 1345.2909898 8.253554e+02
416 74 Frew 2019 Austral Ecology Sorghum bicolor Sorghum_bicolor Annual Poaceae Australian bollworm Helicoverpa punctigera Helicoverpa_punctigera Generalist Chewing arthropods Growth / Development 7.00 7.00 0.2158557 0.0768957 0.1356176 0.1301313 1 7 7.000 4052.7140000 5752.429000 1345.2909898 8.253554e+02
417 75 Alcanta 2011 Revista Brasileira De Entomologia Gossypium hirsutum Gossypium_hirsutum Perennial Non-Poaceae Cotton aphid Aphis gossypii Aphis_gossypii Generalist Fluid-feeding arthropods Abundance / Preference 10.00 10.00 45.9300000 45.2700000 11.9534096 11.9850323 -1 NA NA NA NA NA NA
418 76 Camargo 2008 Ciencia E Agrotecnologia Pinus taeda Pinus_taeda Perennial Non-Poaceae Giant conifer aphid Cinara atlantica Cinara_atlantica Specialist Fluid-feeding arthropods Growth / Development 20.00 20.00 10.5500000 15.8300000 1.7441330 5.9926622 -1 NA NA NA NA NA NA
419 76 Camargo 2008 Ciencia E Agrotecnologia Pinus taeda Pinus_taeda Perennial Non-Poaceae Giant conifer aphid Cinara atlantica Cinara_atlantica Specialist Fluid-feeding arthropods Growth / Development 20.00 20.00 4.3500000 1.8300000 2.1466253 3.2646592 -1 NA NA NA NA NA NA
420 76 Camargo 2008 Ciencia E Agrotecnologia Pinus taeda Pinus_taeda Perennial Non-Poaceae Giant conifer aphid Cinara atlantica Cinara_atlantica Specialist Fluid-feeding arthropods Reproduction 20.00 20.00 21.3500000 3.4100000 9.0784360 8.4970583 1 NA NA NA NA NA NA
421 76 Camargo 2008 Ciencia E Agrotecnologia Pinus taeda Pinus_taeda Perennial Non-Poaceae Giant conifer aphid Cinara atlantica Cinara_atlantica Specialist Fluid-feeding arthropods Growth / Development 20.00 20.00 10.2500000 4.2500000 6.0821049 10.0623059 1 NA NA NA NA NA NA
422 76 Camargo 2008 Ciencia E Agrotecnologia Pinus taeda Pinus_taeda Perennial Non-Poaceae Giant conifer aphid Cinara atlantica Cinara_atlantica Specialist Fluid-feeding arthropods Growth / Development 20.00 20.00 36.4000000 9.5000000 13.9977855 18.5146429 1 NA NA NA NA NA NA
423 76 Camargo 2008 Ciencia E Agrotecnologia Pinus taeda Pinus_taeda Perennial Non-Poaceae Giant conifer aphid Cinara atlantica Cinara_atlantica Specialist Fluid-feeding arthropods Mortality / Survivability 20.00 20.00 80.0000000 70.0000000 3.5777088 4.6957428 1 NA NA NA NA NA NA
424 76 Camargo 2008 Ciencia E Agrotecnologia Pinus taeda Pinus_taeda Perennial Non-Poaceae Giant conifer aphid Cinara atlantica Cinara_atlantica Specialist Fluid-feeding arthropods Reproduction 20.00 20.00 1.1400000 0.7000000 0.5813777 1.4310835 1 NA NA NA NA NA NA
425 76 Camargo 2008 Ciencia E Agrotecnologia Pinus taeda Pinus_taeda Perennial Non-Poaceae Giant conifer aphid Cinara atlantica Cinara_atlantica Specialist Fluid-feeding arthropods Mortality / Survivability 20.00 20.00 91.0000000 62.0000000 1.7888544 5.2323991 1 NA NA NA NA NA NA
426 76 Camargo 2008 Ciencia E Agrotecnologia Pinus taeda Pinus_taeda Perennial Non-Poaceae Giant conifer aphid Cinara atlantica Cinara_atlantica Specialist Fluid-feeding arthropods Mortality / Survivability 20.00 20.00 90.0000000 73.0000000 2.0124612 4.3826932 1 NA NA NA NA NA NA
427 76 Camargo 2008 Ciencia E Agrotecnologia Pinus taeda Pinus_taeda Perennial Non-Poaceae Giant conifer aphid Cinara atlantica Cinara_atlantica Specialist Fluid-feeding arthropods Mortality / Survivability 20.00 20.00 90.0000000 64.0000000 2.0124612 5.1429563 1 NA NA NA NA NA NA
428 77 Ferreira 2011 Neotropical Entomology Glycine max Glycine_max Annual Non-Poaceae Silverleaf whitefly Bemisia tabaci Bemisia_tabaci Generalist Fluid-feeding arthropods Reproduction 10.00 10.00 142.6000000 125.6000000 120.8938749 86.8361445 1 NA NA NA NA NA NA
429 77 Ferreira 2011 Neotropical Entomology Glycine max Glycine_max Annual Non-Poaceae Silverleaf whitefly Bemisia tabaci Bemisia_tabaci Generalist Fluid-feeding arthropods Abundance / Preference 10.00 10.00 101.0000000 74.2000000 76.7484788 56.2885424 1 NA NA NA NA NA NA
430 77 Ferreira 2011 Neotropical Entomology Glycine max Glycine_max Annual Non-Poaceae Silverleaf whitefly Bemisia tabaci Bemisia_tabaci Generalist Fluid-feeding arthropods Reproduction 8.00 8.00 75.3000000 55.3000000 30.3207388 24.1547676 1 NA NA NA NA NA NA
431 77 Ferreira 2011 Neotropical Entomology Glycine max Glycine_max Annual Non-Poaceae Silverleaf whitefly Bemisia tabaci Bemisia_tabaci Generalist Fluid-feeding arthropods Abundance / Preference 8.00 8.00 49.6000000 32.4000000 18.3564920 16.0654661 1 NA NA NA NA NA NA
432 77 Ferreira 2011 Neotropical Entomology Glycine max Glycine_max Annual Non-Poaceae Silverleaf whitefly Bemisia tabaci Bemisia_tabaci Generalist Fluid-feeding arthropods Mortality / Survivability 18.00 18.00 71.1000000 57.3000000 17.2675476 24.0769859 1 NA NA NA NA NA NA
433 78 Fornoff 2014 Oecologia Myriophyllum spicatum Myriophyllum_spicatum Perennial Non-Poaceae watermilfoil moth Acentria ephemerella Acentria_ephemerella Generalist Chewing arthropods Growth / Development 16.00 16.00 0.1930000 0.1430000 0.2800000 0.2400000 1 10 10.000 0.7700000 0.800000 0.4743416 6.008328e-01
434 79 Villegas 2017 Plants Oryza sativa Oryza_sativa Annual Poaceae rice water weevil Lissorhoptrus oryzophilus Lissorhoptrus_oryzophilus Specialist Chewing arthropods Abundance / Preference 4.00 4.00 13.2650000 13.4200000 6.4700000 5.8100000 1 NA NA NA NA NA NA
435 79 Villegas 2017 Plants Oryza sativa Oryza_sativa Annual Poaceae rice water weevil Lissorhoptrus oryzophilus Lissorhoptrus_oryzophilus Specialist Chewing arthropods Feeding efficiency 4.00 4.00 3.4000000 3.8800000 2.4000000 3.1800000 1 NA NA NA NA NA NA
436 80 Ramachandran 1991 Journal of Chemical Ecology Oryza sativa Oryza_sativa Annual Poaceae rice leafroller Cnaphalocrocis medinalis Cnaphalocrocis_medinalis Specialist Chewing arthropods Feeding efficiency 6.00 6.00 16.0000000 32.0000000 4.8989795 14.6969385 1 3 3.000 4.4800000 5.210000 0.2424871 1.160474e+00
437 80 Ramachandran 1991 Journal of Chemical Ecology Oryza sativa Oryza_sativa Annual Poaceae rice leafroller Cnaphalocrocis medinalis Cnaphalocrocis_medinalis Specialist Chewing arthropods Growth / Development 10.00 10.00 1.3000000 21.1000000 12.0166551 12.6491106 1 3 3.000 4.4800000 5.210000 0.2424871 1.160474e+00
438 80 Ramachandran 1991 Journal of Chemical Ecology Oryza sativa Oryza_sativa Annual Poaceae rice leafroller Cnaphalocrocis medinalis Cnaphalocrocis_medinalis Specialist Chewing arthropods Mortality / Survivability 10.00 10.00 12.0000000 40.0000000 9.4868330 18.9736660 1 3 3.000 4.4800000 5.210000 0.2424871 1.160474e+00
439 81 Teixeira 2020 Journal of Agronomy and Crop Science Brassica oleracea Brassica_oleracea Annual Non-Poaceae Diamondback moth Plutella xylostella Plutella_xylostella Specialist Chewing arthropods Mortality / Survivability 10.00 10.00 88.8500000 80.4900000 12.2380145 23.2427408 1 10 10.000 0.0900000 0.120000 0.0632456 3.162280e-02
440 81 Teixeira 2020 Journal of Agronomy and Crop Science Brassica oleracea Brassica_oleracea Annual Non-Poaceae Diamondback moth Plutella xylostella Plutella_xylostella Specialist Chewing arthropods Growth / Development 10.00 10.00 8.6800000 8.8400000 1.7076299 1.1384200 -1 10 10.000 0.0900000 0.120000 0.0632456 3.162280e-02
441 81 Teixeira 2020 Journal of Agronomy and Crop Science Brassica oleracea Brassica_oleracea Annual Non-Poaceae Diamondback moth Plutella xylostella Plutella_xylostella Specialist Chewing arthropods Growth / Development 10.00 10.00 6.8000000 6.2900000 0.9170605 0.8854377 1 10 10.000 0.0900000 0.120000 0.0632456 3.162280e-02
442 81 Teixeira 2020 Journal of Agronomy and Crop Science Brassica oleracea Brassica_oleracea Annual Non-Poaceae Diamondback moth Plutella xylostella Plutella_xylostella Specialist Chewing arthropods Reproduction 10.00 10.00 117.0900000 98.1400000 46.0427627 68.7479163 1 10 10.000 0.0900000 0.120000 0.0632456 3.162280e-02
443 81 Teixeira 2020 Journal of Agronomy and Crop Science Brassica oleracea Brassica_oleracea Annual Non-Poaceae Diamondback moth Plutella xylostella Plutella_xylostella Specialist Chewing arthropods Reproduction 10.00 10.00 47.7200000 34.4200000 7.5262208 11.9534096 1 10 10.000 0.0900000 0.120000 0.0632456 3.162280e-02
444 81 Teixeira 2020 Journal of Agronomy and Crop Science Brassica oleracea Brassica_oleracea Annual Non-Poaceae Diamondback moth Plutella xylostella Plutella_xylostella Specialist Chewing arthropods Abundance / Preference 10.00 10.00 3.3300000 2.3300000 0.8221922 0.6957011 1 10 10.000 0.0900000 0.120000 0.0632456 3.162280e-02
445 82 Hall 2019 Functional Ecology Brachypodium distachyon Brachypodium_distachyon Annual Poaceae Cotton bollworm Helicoverpa armigera Helicoverpa_armigera Generalist Chewing arthropods Feeding efficiency 10.00 10.00 0.1140000 0.0510000 0.0790569 0.0316228 1 NA NA NA NA NA NA
446 82 Hall 2019 Functional Ecology Brachypodium distachyon Brachypodium_distachyon Annual Poaceae Cotton bollworm Helicoverpa armigera Helicoverpa_armigera Generalist Chewing arthropods Growth / Development 10.00 10.00 0.1370000 0.0400000 0.0917061 0.0284605 1 NA NA NA NA NA NA
447 83 Johnson 2019 Functional Ecology Phalaris aquatica Phalaris_aquatica Perennial Poaceae Cotton bollworm Helicoverpa armigera Helicoverpa_armigera Generalist Chewing arthropods Growth / Development 12.00 12.00 0.0900000 0.0500000 0.0346410 0.0346410 1 12 12.000 1.2820000 1.353000 0.2217025 1.420282e-01
448 84 Johnson 2019 Biology Letters Triticum aestivum Triticum_aestivum Annual Poaceae Cotton bollworm Helicoverpa armigera Helicoverpa_armigera Generalist Chewing arthropods Growth / Development 9.00 9.00 0.0548000 0.1413900 0.0834000 0.1179000 1 10 8.000 0.0876200 0.335375 0.2504524 2.548413e-01
449 84 Johnson 2019 Biology Letters Triticum aestivum Triticum_aestivum Annual Poaceae Cotton bollworm Helicoverpa armigera Helicoverpa_armigera Generalist Chewing arthropods Feeding efficiency 10.00 10.00 0.4600000 0.5000000 0.2213594 0.2529822 1 10 8.000 0.0876200 0.335375 0.2504524 2.548413e-01
450 84 Johnson 2019 Biology Letters Triticum aestivum Triticum_aestivum Annual Poaceae Pruinose Scarab Sericesthis geminata Sericesthis_geminata Generalist Chewing arthropods Growth / Development 10.00 10.00 6.9600000 2.8700000 10.4355163 16.7600716 -1 10 8.000 0.0876200 0.335375 0.2504524 2.548413e-01
451 85 Mir 2019 Frontiers in Plant Science Bromus catharticus Bromus_catharticus Annual Poaceae Common grasshopper Oxya grandis Oxya_grandis Generalist Chewing arthropods Feeding efficiency 25.00 25.00 1.4000000 0.5400000 1.2000000 0.6000000 1 25 25.000 0.1300000 1.180000 0.2500000 3.000000e-01
452 86 Jeong 2012 Korean Journal of Horticultural Science & Technology Dendranthema grandiflorum Dendranthema_grandiflorum Annual Non-Poaceae Chrysanthemum aphid Macrosiphoniellas anborni Macrosiphoniellas_anborni Specialist Fluid-feeding arthropods Abundance / Preference 3.00 3.00 49.3500000 29.6800000 5.8716522 9.1971898 1 3 3.000 3.3600000 7.020000 0.0866025 1.922576e+00
453 87 Rowe 2019 Journal of Pest Science Triticum aestivum Triticum_aestivum Annual Poaceae Corn leaf aphid Rhopalosiphum maidis Rhopalosiphum_maidis Specialist Fluid-feeding arthropods Growth / Development 18.00 19.00 20.8300000 17.3700000 6.9452028 4.6640219 1 10 10.000 0.5426000 2.145600 0.1454648 5.663639e-01
454 87 Rowe 2019 Journal of Pest Science Triticum aestivum Triticum_aestivum Annual Poaceae Corn leaf aphid Rhopalosiphum maidis Rhopalosiphum_maidis Specialist Fluid-feeding arthropods Reproduction 20.00 13.00 3.6000000 2.6150000 2.7995571 1.3232373 1 10 10.000 0.5426000 2.145600 0.1454648 5.663639e-01
455 87 Rowe 2019 Journal of Pest Science Triticum aestivum Triticum_aestivum Annual Poaceae Corn leaf aphid Rhopalosiphum maidis Rhopalosiphum_maidis Specialist Fluid-feeding arthropods Abundance / Preference 13.00 17.00 0.1055000 0.0712000 0.0594916 0.0577235 1 10 10.000 0.5426000 2.145600 0.1454648 5.663639e-01
456 87 Rowe 2019 Journal of Pest Science Triticum aestivum Triticum_aestivum Annual Poaceae Corn leaf aphid Rhopalosiphum maidis Rhopalosiphum_maidis Specialist Fluid-feeding arthropods Growth / Development 18.00 19.00 15.1700000 15.9100000 2.1849600 3.3297629 -1 10 10.000 0.5426000 2.145600 0.1454648 5.663639e-01
457 87 Rowe 2019 Journal of Pest Science Triticum aestivum Triticum_aestivum Annual Poaceae Corn leaf aphid Rhopalosiphum maidis Rhopalosiphum_maidis Specialist Fluid-feeding arthropods Feeding efficiency 13.00 15.00 5.9300000 7.5400000 2.8123300 4.2602817 -1 10 10.000 0.5426000 2.145600 0.1454648 5.663639e-01
458 87 Rowe 2019 Journal of Pest Science Triticum aestivum Triticum_aestivum Annual Poaceae Corn leaf aphid Rhopalosiphum maidis Rhopalosiphum_maidis Specialist Fluid-feeding arthropods Feeding efficiency 13.00 15.00 280.2000000 268.1400000 57.2561543 63.0521689 -1 10 10.000 0.5426000 2.145600 0.1454648 5.663639e-01
459 87 Rowe 2019 Journal of Pest Science Triticum aestivum Triticum_aestivum Annual Poaceae Corn leaf aphid Rhopalosiphum maidis Rhopalosiphum_maidis Specialist Fluid-feeding arthropods Feeding efficiency 13.00 15.00 5.0700000 6.6900000 2.8844410 4.3764712 -1 10 10.000 0.5426000 2.145600 0.1454648 5.663639e-01
460 87 Rowe 2019 Journal of Pest Science Triticum aestivum Triticum_aestivum Annual Poaceae Corn leaf aphid Rhopalosiphum maidis Rhopalosiphum_maidis Specialist Fluid-feeding arthropods Feeding efficiency 4.00 3.00 31.8400000 24.7400000 36.7600000 21.4254685 1 10 10.000 0.5426000 2.145600 0.1454648 5.663639e-01
461 87 Rowe 2019 Journal of Pest Science Triticum aestivum Triticum_aestivum Annual Poaceae Russian aphid Diuraphis noxia Diuraphis_noxia Specialist Fluid-feeding arthropods Growth / Development 20.00 20.00 32.7500000 24.6000000 5.5901699 9.7492564 1 10 10.000 0.5426000 2.145600 0.1454648 5.663639e-01
462 87 Rowe 2019 Journal of Pest Science Triticum aestivum Triticum_aestivum Annual Poaceae Russian aphid Diuraphis noxia Diuraphis_noxia Specialist Fluid-feeding arthropods Reproduction 20.00 18.00 18.7500000 15.0560000 3.8370926 7.4398947 1 10 10.000 0.5426000 2.145600 0.1454648 5.663639e-01
463 87 Rowe 2019 Journal of Pest Science Triticum aestivum Triticum_aestivum Annual Poaceae Russian aphid Diuraphis noxia Diuraphis_noxia Specialist Fluid-feeding arthropods Abundance / Preference 18.00 20.00 0.3564000 0.3080000 0.0585484 0.4092004 1 10 10.000 0.5426000 2.145600 0.1454648 5.663639e-01
464 87 Rowe 2019 Journal of Pest Science Triticum aestivum Triticum_aestivum Annual Poaceae Russian aphid Diuraphis noxia Diuraphis_noxia Specialist Fluid-feeding arthropods Growth / Development 20.00 19.00 10.7300000 11.2600000 1.3997786 1.0722891 -1 10 10.000 0.5426000 2.145600 0.1454648 5.663639e-01
465 87 Rowe 2019 Journal of Pest Science Triticum aestivum Triticum_aestivum Annual Poaceae Russian aphid Diuraphis noxia Diuraphis_noxia Specialist Fluid-feeding arthropods Feeding efficiency 15.00 14.00 3.1400000 3.5300000 2.5174392 2.7688265 -1 10 10.000 0.5426000 2.145600 0.1454648 5.663639e-01
466 87 Rowe 2019 Journal of Pest Science Triticum aestivum Triticum_aestivum Annual Poaceae Russian aphid Diuraphis noxia Diuraphis_noxia Specialist Fluid-feeding arthropods Feeding efficiency 15.00 14.00 328.5700000 343.3500000 44.4618488 14.7795467 -1 10 10.000 0.5426000 2.145600 0.1454648 5.663639e-01
467 87 Rowe 2019 Journal of Pest Science Triticum aestivum Triticum_aestivum Annual Poaceae Russian aphid Diuraphis noxia Diuraphis_noxia Specialist Fluid-feeding arthropods Feeding efficiency 15.00 14.00 2.1400000 2.5300000 2.5174392 2.7688265 -1 10 10.000 0.5426000 2.145600 0.1454648 5.663639e-01
468 87 Rowe 2019 Journal of Pest Science Triticum aestivum Triticum_aestivum Annual Poaceae Russian aphid Diuraphis noxia Diuraphis_noxia Specialist Fluid-feeding arthropods Feeding efficiency 15.00 14.00 192.3600000 185.9100000 199.1100738 179.5995546 1 10 10.000 0.5426000 2.145600 0.1454648 5.663639e-01
469 88 Johnson 2019 Bulletin of Entomological Research Glycine max Glycine_max Annual Non-Poaceae Australian bollworm Helicoverpa punctigera Helicoverpa_punctigera Generalist Chewing arthropods Growth / Development 10.00 10.00 0.2099100 0.1236700 0.0575851 0.0810176 1 10 10.000 0.3472000 0.462000 0.0316228 6.324560e-02
470 88 Johnson 2019 Bulletin of Entomological Research Glycine max Glycine_max Annual Non-Poaceae Australian bollworm Helicoverpa punctigera Helicoverpa_punctigera Generalist Chewing arthropods Growth / Development 10.00 10.00 0.1696613 0.1138064 0.0972027 0.0957203 1 10 10.000 0.3473000 0.465400 0.0632456 3.162280e-02
471 88 Johnson 2019 Bulletin of Entomological Research Glycine max Glycine_max Annual Non-Poaceae Australian bollworm Helicoverpa punctigera Helicoverpa_punctigera Generalist Chewing arthropods Growth / Development 10.00 10.00 0.5164295 0.3490563 0.1800358 0.1895065 1 10 10.000 0.2494000 0.445000 0.0632456 6.324560e-02
472 89 Rowe 2019 Mres Thesis Brachypodium distachyon Brachypodium_distachyon Annual Poaceae Corn leaf aphid Rhopalosiphum maidis Rhopalosiphum_maidis Specialist Fluid-feeding arthropods Growth / Development 16.00 17.00 24.0600000 23.2900000 11.8280000 9.7181600 1 10 10.000 1.0377000 2.102200 0.2087103 3.364663e-01
473 89 Rowe 2019 Mres Thesis Brachypodium distachyon Brachypodium_distachyon Annual Poaceae Corn leaf aphid Rhopalosiphum maidis Rhopalosiphum_maidis Specialist Fluid-feeding arthropods Reproduction 14.00 15.00 11.9290000 13.2670000 8.3813125 8.6367529 1 10 10.000 1.0377000 2.102200 0.2087103 3.364663e-01
474 89 Rowe 2019 Mres Thesis Brachypodium distachyon Brachypodium_distachyon Annual Poaceae Corn leaf aphid Rhopalosiphum maidis Rhopalosiphum_maidis Specialist Fluid-feeding arthropods Abundance / Preference 14.00 14.00 0.1798000 0.1929000 0.0931673 0.0969089 1 10 10.000 1.0377000 2.102200 0.2087103 3.364663e-01
475 89 Rowe 2019 Mres Thesis Brachypodium distachyon Brachypodium_distachyon Annual Poaceae Corn leaf aphid Rhopalosiphum maidis Rhopalosiphum_maidis Specialist Fluid-feeding arthropods Growth / Development 15.00 16.00 13.1556000 12.6670000 1.8783969 1.8216000 -1 10 10.000 1.0377000 2.102200 0.2087103 3.364663e-01
476 89 Rowe 2019 Mres Thesis Brachypodium distachyon Brachypodium_distachyon Annual Poaceae Corn leaf aphid Rhopalosiphum maidis Rhopalosiphum_maidis Specialist Fluid-feeding arthropods Feeding efficiency 17.00 18.00 7.7100000 7.3300000 5.8135789 4.7517576 -1 10 10.000 1.0377000 2.102200 0.2087103 3.364663e-01
477 89 Rowe 2019 Mres Thesis Brachypodium distachyon Brachypodium_distachyon Annual Poaceae Corn leaf aphid Rhopalosiphum maidis Rhopalosiphum_maidis Specialist Fluid-feeding arthropods Feeding efficiency 17.00 18.00 321.1600000 280.3800000 32.2014549 85.0225194 -1 10 10.000 1.0377000 2.102200 0.2087103 3.364663e-01
478 89 Rowe 2019 Mres Thesis Brachypodium distachyon Brachypodium_distachyon Annual Poaceae Corn leaf aphid Rhopalosiphum maidis Rhopalosiphum_maidis Specialist Fluid-feeding arthropods Feeding efficiency 15.00 17.00 6.7600000 6.8800000 5.5770960 4.5766472 -1 10 10.000 1.0377000 2.102200 0.2087103 3.364663e-01
479 89 Rowe 2019 Mres Thesis Brachypodium distachyon Brachypodium_distachyon Annual Poaceae Corn leaf aphid Rhopalosiphum maidis Rhopalosiphum_maidis Specialist Fluid-feeding arthropods Feeding efficiency 7.00 10.00 186.0500000 86.7500000 46.4064780 61.3481866 1 10 10.000 1.0377000 2.102200 0.2087103 3.364663e-01
480 89 Rowe 2019 Mres Thesis Brachypodium distachyon Brachypodium_distachyon Annual Poaceae Corn leaf aphid Rhopalosiphum maidis Rhopalosiphum_maidis Specialist Fluid-feeding arthropods Feeding efficiency 9.00 8.00 106.0900000 54.9800000 104.9700000 45.3396868 -1 10 10.000 1.0377000 2.102200 0.2087103 3.364663e-01
481 89 Rowe 2019 Mres Thesis Brachypodium distachyon Brachypodium_distachyon Annual Poaceae Russian aphid Diuraphis noxia Diuraphis_noxia Specialist Fluid-feeding arthropods Growth / Development 15.00 19.00 17.2000000 15.3700000 11.6189500 10.4177685 1 10 10.000 1.0377000 2.102200 0.2087103 3.364663e-01
482 89 Rowe 2019 Mres Thesis Brachypodium distachyon Brachypodium_distachyon Annual Poaceae Russian aphid Diuraphis noxia Diuraphis_noxia Specialist Fluid-feeding arthropods Reproduction 9.00 12.00 12.1100000 9.3300000 6.9180000 8.2826670 1 10 10.000 1.0377000 2.102200 0.2087103 3.364663e-01
483 89 Rowe 2019 Mres Thesis Brachypodium distachyon Brachypodium_distachyon Annual Poaceae Russian aphid Diuraphis noxia Diuraphis_noxia Specialist Fluid-feeding arthropods Abundance / Preference 9.00 10.00 0.1401000 0.1420000 0.0597000 0.7621089 1 10 10.000 1.0377000 2.102200 0.2087103 3.364663e-01
484 89 Rowe 2019 Mres Thesis Brachypodium distachyon Brachypodium_distachyon Annual Poaceae Russian aphid Diuraphis noxia Diuraphis_noxia Specialist Fluid-feeding arthropods Growth / Development 10.00 13.00 15.2000000 13.9487000 2.6066655 1.0351538 -1 10 10.000 1.0377000 2.102200 0.2087103 3.364663e-01
485 89 Rowe 2019 Mres Thesis Brachypodium distachyon Brachypodium_distachyon Annual Poaceae Russian aphid Diuraphis noxia Diuraphis_noxia Specialist Fluid-feeding arthropods Feeding efficiency 15.00 19.00 11.6000000 9.1100000 3.8342535 6.8434713 -1 10 10.000 1.0377000 2.102200 0.2087103 3.364663e-01
486 89 Rowe 2019 Mres Thesis Brachypodium distachyon Brachypodium_distachyon Annual Poaceae Russian aphid Diuraphis noxia Diuraphis_noxia Specialist Fluid-feeding arthropods Feeding efficiency 15.00 19.00 273.4800000 285.9900000 47.1729372 53.6144570 -1 10 10.000 1.0377000 2.102200 0.2087103 3.364663e-01
487 89 Rowe 2019 Mres Thesis Brachypodium distachyon Brachypodium_distachyon Annual Poaceae Russian aphid Diuraphis noxia Diuraphis_noxia Specialist Fluid-feeding arthropods Feeding efficiency 15.00 19.00 11.6000000 9.1100000 3.8342535 6.8434713 -1 10 10.000 1.0377000 2.102200 0.2087103 3.364663e-01
488 89 Rowe 2019 Mres Thesis Brachypodium distachyon Brachypodium_distachyon Annual Poaceae Russian aphid Diuraphis noxia Diuraphis_noxia Specialist Fluid-feeding arthropods Feeding efficiency 14.00 16.00 36.8100000 89.1600000 25.2936039 79.4400000 -1 10 10.000 1.0377000 2.102200 0.2087103 3.364663e-01
489 90 Johnson 2020 Ecology Brachypodium distachyon Brachypodium_distachyon Annual Poaceae Bird cherry oat aphid Rhopalosiphum padi Rhopalosiphum_padi Specialist Fluid-feeding arthropods Abundance / Preference 10.00 10.00 15.4000000 12.9000000 6.1136314 4.3576186 1 NA NA NA NA NA NA
490 90 Johnson 2020 Ecology Brachypodium distachyon Brachypodium_distachyon Annual Poaceae Cotton bollworm Helicoverpa armigera Helicoverpa_armigera Generalist Chewing arthropods Growth / Development 10.00 10.00 0.3172900 0.0728100 0.1382548 0.0445249 1 NA NA NA NA NA NA
491 91 Cahenzli 2012 Animal Behaviour Festuca rubra Festuca_rubra Annual Poaceae Small heath butterfly Coenonympha pamphilus Coenonympha_pamphilus Specialist Chewing arthropods Growth / Development 35.00 35.00 27.7100000 32.0000000 3.4313263 5.4132130 -1 9 9.000 0.9100000 3.170000 0.1800000 3.600000e-01
492 91 Cahenzli 2012 Animal Behaviour Festuca rubra Festuca_rubra Annual Poaceae Small heath butterfly Coenonympha pamphilus Coenonympha_pamphilus Specialist Chewing arthropods Growth / Development 35.00 35.00 68.8500000 66.3200000 7.4542605 1.0353140 1 9 9.000 0.9100000 3.170000 0.1800000 3.600000e-01
493 91 Cahenzli 2012 Animal Behaviour Festuca rubra Festuca_rubra Annual Poaceae Small heath butterfly Coenonympha pamphilus Coenonympha_pamphilus Specialist Chewing arthropods Growth / Development 35.00 35.00 13.1900000 12.7150000 0.7690904 0.7395100 1 9 9.000 0.9100000 3.170000 0.1800000 3.600000e-01
494 92 Calatayud 2016 Agriculture Ecosystems & Environment Zea mays Zea_mays Annual Poaceae Spotted stalk borer Chilo partellus Chilo_partellus Generalist Boring arthropods Mortality / Survivability 10.00 10.00 52.2000000 25.6000000 25.2982213 9.4868330 1 10 10.000 0.5400000 0.923000 0.1264911 1.264911e-01
495 92 Calatayud 2016 Agriculture Ecosystems & Environment Zea mays Zea_mays Annual Poaceae Spotted stalk borer Chilo partellus Chilo_partellus Generalist Boring arthropods Growth / Development 10.00 10.00 0.1000000 0.1200000 0.0031623 0.0632456 1 10 10.000 0.5400000 0.923000 0.1264911 1.264911e-01
496 92 Calatayud 2016 Agriculture Ecosystems & Environment Zea mays Zea_mays Annual Poaceae African maize stalkborer Busseola fusca Busseola_fusca Specialist Boring arthropods Mortality / Survivability 10.00 10.00 16.3000000 6.7000000 6.6407831 4.1109610 1 10 10.000 0.5400000 0.923000 0.1264911 1.264911e-01
497 92 Calatayud 2016 Agriculture Ecosystems & Environment Zea mays Zea_mays Annual Poaceae African maize stalkborer Busseola fusca Busseola_fusca Specialist Boring arthropods Growth / Development 10.00 10.00 0.2200000 0.0600000 0.0948683 0.0316228 1 10 10.000 0.5400000 0.923000 0.1264911 1.264911e-01
498 93 Cotterill 2007 Pest Management Science Triticum aestivum Triticum_aestivum Annual Poaceae European Rabbit Oryctolagus cuniculus Oryctolagus_cuniculus Generalist Mammalian chewers Feeding efficiency 3.00 3.00 46.9100000 20.8800000 11.8472275 7.4478185 1 NA NA NA NA NA NA
499 94 Han 2018 Journal of Integrative Agriculture Oryza sativa Oryza_sativa Annual Poaceae Rice stem borer Chilo suppressalis Chilo_suppressalis Generalist Boring arthropods Growth / Development 3.00 3.00 64.9600000 49.2000000 4.1049604 3.4121401 1 NA NA NA NA NA NA
500 94 Han 2018 Journal of Integrative Agriculture Oryza sativa Oryza_sativa Annual Poaceae Rice stem borer Chilo suppressalis Chilo_suppressalis Generalist Boring arthropods Growth / Development 3.00 3.00 56.0800000 39.7100000 5.2134729 4.6592167 1 NA NA NA NA NA NA
501 95 Hogan 2018 Scandinavian Journal of Forest Research Picea sitchensis Picea_sitchensis Perennial Non-Poaceae Large pine weevil Hylobius abietis Hylobius_abietis Generalist Chewing arthropods Feeding efficiency 6.00 6.00 711.1000000 672.8600000 495.6500000 443.8500000 1 15 15.000 593.9500000 714.050000 283.8400000 4.344200e+02
502 96 Nascimento 2018 Journal of Applied Entomology Oryza sativa Oryza_sativa Annual Poaceae fall armyworm Spodoptera frugiperda Spodoptera_frugiperda Generalist Chewing arthropods Growth / Development 10.00 10.00 32.7000000 32.7000000 1.2649111 2.4033310 -1 10 10.000 0.7500000 1.540000 0.5059644 6.324555e-01
503 96 Nascimento 2018 Journal of Applied Entomology Oryza sativa Oryza_sativa Annual Poaceae fall armyworm Spodoptera frugiperda Spodoptera_frugiperda Generalist Chewing arthropods Mortality / Survivability 10.00 10.00 76.0000000 52.0000000 18.3728332 23.4641002 1 10 10.000 0.7500000 1.540000 0.5059644 6.324555e-01
504 96 Nascimento 2018 Journal of Applied Entomology Oryza sativa Oryza_sativa Annual Poaceae fall armyworm Spodoptera frugiperda Spodoptera_frugiperda Generalist Chewing arthropods Feeding efficiency 10.00 10.00 180.1000000 159.8000000 12.4909968 22.1359436 1 10 10.000 0.7500000 1.540000 0.5059644 6.324555e-01
505 96 Nascimento 2018 Journal of Applied Entomology Oryza sativa Oryza_sativa Annual Poaceae fall armyworm Spodoptera frugiperda Spodoptera_frugiperda Generalist Chewing arthropods Growth / Development 10.00 10.00 10.5000000 10.5000000 0.6008328 0.3478505 -1 10 10.000 0.7500000 1.540000 0.5059644 6.324555e-01
506 96 Nascimento 2018 Journal of Applied Entomology Oryza sativa Oryza_sativa Annual Poaceae fall armyworm Spodoptera frugiperda Spodoptera_frugiperda Generalist Chewing arthropods Growth / Development 10.00 10.00 12.7000000 8.0750000 1.2332883 4.2690748 1 10 10.000 0.7500000 1.540000 0.5059644 6.324555e-01
507 96 Nascimento 2018 Journal of Applied Entomology Oryza sativa Oryza_sativa Annual Poaceae fall armyworm Spodoptera frugiperda Spodoptera_frugiperda Generalist Chewing arthropods Reproduction 10.00 10.00 600.6000000 212.7000000 52.7151686 93.6350415 1 10 10.000 0.7500000 1.540000 0.5059644 6.324555e-01
508 96 Nascimento 2018 Journal of Applied Entomology Oryza sativa Oryza_sativa Annual Poaceae fall armyworm Spodoptera frugiperda Spodoptera_frugiperda Generalist Chewing arthropods Mortality / Survivability 10.00 10.00 80.0000000 38.7500000 10.7517440 34.2474671 1 10 10.000 0.7500000 1.540000 0.5059644 6.324555e-01
509 97 Ramirez-Godoy 2018 Notulae Botanicae Horti Agrobotanici Cluj-Napoca Citrus latifolia Citrus_latifolia Perennial Non-Poaceae Asian citrus psyllid Diaphorina citri Diaphorina_citri Specialist Fluid-feeding arthropods Abundance / Preference 3.00 3.00 1.3600000 0.7200000 0.6062178 0.3637307 1 NA NA NA NA NA NA
510 97 Ramirez-Godoy 2018 Notulae Botanicae Horti Agrobotanici Cluj-Napoca Citrus latifolia Citrus_latifolia Perennial Non-Poaceae Asian citrus psyllid Diaphorina citri Diaphorina_citri Specialist Fluid-feeding arthropods Abundance / Preference 3.00 3.00 7.7200000 3.3300000 2.9444864 1.5242047 1 NA NA NA NA NA NA
511 97 Ramirez-Godoy 2018 Notulae Botanicae Horti Agrobotanici Cluj-Napoca Citrus latifolia Citrus_latifolia Perennial Non-Poaceae Asian citrus psyllid Diaphorina citri Diaphorina_citri Specialist Fluid-feeding arthropods Abundance / Preference 3.00 3.00 11.6100000 4.8500000 3.1176915 1.2817176 1 NA NA NA NA NA NA
512 98 Yang 2018 Ecology and Evolution Oryza sativa Oryza_sativa Annual Poaceae Brown planthopper Nilaparvata lugens Nilaparvata_lugens Specialist Fluid-feeding arthropods Feeding efficiency 20.00 20.00 29.9500000 26.8400000 10.0175845 7.8262379 1 NA NA NA NA NA NA
513 99 Jeer 2019 Field Crops Research Oryza sativa Oryza_sativa Annual Poaceae Yellow Stem Borer Scirpophaga incertulas Scirpophaga_incertulas Specialist Boring arthropods Feeding efficiency 4.00 4.00 39.4000000 30.7000000 1.8000000 1.6000000 1 NA NA NA NA NA NA
514 99 Jeer 2019 Field Crops Research Oryza sativa Oryza_sativa Annual Poaceae Yellow Stem Borer Scirpophaga incertulas Scirpophaga_incertulas Specialist Boring arthropods Abundance / Preference 4.00 4.00 12.1000000 11.8000000 1.5000000 2.3000000 1 NA NA NA NA NA NA
515 99 Jeer 2019 Field Crops Research Oryza sativa Oryza_sativa Annual Poaceae Yellow Stem Borer Scirpophaga incertulas Scirpophaga_incertulas Specialist Boring arthropods Growth / Development 8.00 8.00 291.8000000 251.2000000 3.0000000 2.0000000 1 NA NA NA NA NA NA
516 100 Ramirez-Godoy 2018 Horttechnology Citrus latifolia Citrus_latifolia Perennial Non-Poaceae Asian Citris Psyllid Diaphorina citri Diaphorina_citri Specialist Fluid-feeding arthropods Reproduction 6.00 6.00 6.6000000 3.2000000 1.8371173 1.4207041 1 5 5.000 1.2200000 2.470000 0.7379024 4.695743e-01
517 100 Ramirez-Godoy 2018 Horttechnology Citrus latifolia Citrus_latifolia Perennial Non-Poaceae Asian Citris Psyllid Diaphorina citri Diaphorina_citri Specialist Fluid-feeding arthropods Abundance / Preference 5.00 5.00 1.5000000 0.7500000 0.6260990 1.1180340 1 4 4.000 1.8100000 1.740000 4.6600000 6.800000e-01
518 100 Ramirez-Godoy 2018 Horttechnology Citrus latifolia Citrus_latifolia Perennial Non-Poaceae Asian Citris Psyllid Diaphorina citri Diaphorina_citri Specialist Fluid-feeding arthropods Abundance / Preference 5.00 5.00 4.2500000 1.0000000 2.4596748 0.8944272 1 4 4.000 1.8100000 1.740000 4.6600000 6.800000e-01
519 100 Ramirez-Godoy 2018 Horttechnology Citrus latifolia Citrus_latifolia Perennial Non-Poaceae Asian Citris Psyllid Diaphorina citri Diaphorina_citri Specialist Fluid-feeding arthropods Reproduction 5.00 5.00 11.7500000 6.2500000 1.6770510 2.4596748 1 4 4.000 1.8100000 1.740000 4.6600000 6.800000e-01
520 101 Ruffino 2017 Ecology and Evolution Deschampsia cespitosa Deschampsia_cespitosa Perennial Poaceae NA Microtus agrestis Microtus_agrestis Generalist Mammalian chewers Growth / Development 38.00 12.00 23.0600000 23.3800000 5.0548195 5.4732806 1 NA NA NA NA NA NA
521 101 Ruffino 2017 Ecology and Evolution Deschampsia cespitosa Deschampsia_cespitosa Perennial Poaceae NA Microtus agrestis Microtus_agrestis Generalist Mammalian chewers Growth / Development 76.00 40.00 28.1400000 32.6800000 5.4050347 5.9450820 1 NA NA NA NA NA NA
522 102 Chen 2019 Pest Management Science Triticum aestivum Triticum_aestivum Annual Poaceae Green aphid Sitobion avenae Sitobion_avenae Specialist Fluid-feeding arthropods Reproduction 30.00 30.00 37.5000000 21.9400000 7.8214781 8.5937669 1 5 5.000 0.4780000 0.669000 0.1341641 4.472140e-02
523 102 Chen 2019 Pest Management Science Triticum aestivum Triticum_aestivum Annual Poaceae Green aphid Sitobion avenae Sitobion_avenae Specialist Fluid-feeding arthropods Abundance / Preference 20.00 20.00 37.5000000 21.9400000 6.3862101 7.0167813 1 5 5.000 0.4780000 0.669000 0.1341641 4.472140e-02
524 103 Chen 2019 Crop Protection Triticum aestivum Triticum_aestivum Annual Poaceae Green aphid Sitobion avenae Sitobion_avenae Specialist Fluid-feeding arthropods Abundance / Preference 20.00 20.00 407.5000000 274.5000000 145.7916321 65.7403985 1 NA NA NA NA NA NA
525 103 Chen 2019 Crop Protection Triticum aestivum Triticum_aestivum Annual Poaceae Green aphid Sitobion avenae Sitobion_avenae Specialist Fluid-feeding arthropods Abundance / Preference 20.00 20.00 407.5000000 290.3000000 145.7916321 99.8627959 1 NA NA NA NA NA NA
526 103 Chen 2019 Crop Protection Triticum aestivum Triticum_aestivum Annual Poaceae Green aphid Sitobion avenae Sitobion_avenae Specialist Fluid-feeding arthropods Abundance / Preference 20.00 20.00 407.5000000 293.8000000 145.7916321 113.1003183 1 NA NA NA NA NA NA
527 103 Chen 2019 Crop Protection Triticum aestivum Triticum_aestivum Annual Poaceae Green aphid Sitobion avenae Sitobion_avenae Specialist Fluid-feeding arthropods Abundance / Preference 3.00 3.00 3.8400000 7.6010000 2.4508519 7.5413492 1 NA NA NA NA NA NA
528 103 Chen 2019 Crop Protection Triticum aestivum Triticum_aestivum Annual Poaceae Green aphid Sitobion avenae Sitobion_avenae Specialist Fluid-feeding arthropods Abundance / Preference 3.00 3.00 8.2110000 10.0080000 7.8496543 8.4056426 1 NA NA NA NA NA NA
529 103 Chen 2019 Crop Protection Triticum aestivum Triticum_aestivum Annual Poaceae Green aphid Sitobion avenae Sitobion_avenae Specialist Fluid-feeding arthropods Abundance / Preference 3.00 3.00 108.7410000 46.6750000 44.4167109 25.3849366 1 NA NA NA NA NA NA
530 103 Chen 2019 Crop Protection Triticum aestivum Triticum_aestivum Annual Poaceae Green aphid Sitobion avenae Sitobion_avenae Specialist Fluid-feeding arthropods Reproduction 20.00 20.00 27.5000000 24.6500000 5.5901699 6.7082039 1 NA NA NA NA NA NA
531 103 Chen 2019 Crop Protection Triticum aestivum Triticum_aestivum Annual Poaceae Green aphid Sitobion avenae Sitobion_avenae Specialist Fluid-feeding arthropods Reproduction 20.00 20.00 27.5000000 21.9400000 5.5901699 5.8137767 1 NA NA NA NA NA NA
532 103 Chen 2019 Crop Protection Triticum aestivum Triticum_aestivum Annual Poaceae Green aphid Sitobion avenae Sitobion_avenae Specialist Fluid-feeding arthropods Reproduction 20.00 20.00 27.5000000 22.7600000 5.5901699 7.8262379 1 NA NA NA NA NA NA
533 104 Lin 2019 Frontiers in Plant Science Oryza sativa Oryza_sativa Annual Poaceae Leaf folder Cnaphalocrocis medinalis Cnaphalocrocis_medinalis Specialist Chewing arthropods Growth / Development 20.00 20.00 6.2840000 3.4140000 2.1063760 1.8425200 1 NA NA NA NA NA NA
534 105 Martin 2019 Proceedings of the Royal Society Phyllostachys aureosulcata Phyllostachys_aureosulcata Perennial Poaceae Guinea pig Cavia porcellus Cavia_porcellus Generalist Mammalian chewers Growth / Development 6.00 6.00 353.0000000 292.0000000 66.1362231 31.8433667 1 NA NA NA NA NA NA
535 105 Martin 2019 Proceedings of the Royal Society Phyllostachys aureosulcata Phyllostachys_aureosulcata Perennial Poaceae Guinea pig Cavia porcellus Cavia_porcellus Generalist Mammalian chewers Growth / Development 6.00 6.00 349.0000000 274.0000000 51.4392846 51.4392846 1 NA NA NA NA NA NA
536 106 Moise 2019 Entomologia Experimentalis et Applicata Zea mays Zea_mays Annual Poaceae True armyworm Pseudaletia unipuncta Pseudaletia_unipuncta Generalist Chewing arthropods Mortality / Survivability 10.00 10.00 34.9040000 23.5290000 18.4993243 15.4129413 1 8 8.000 0.3310000 0.857000 0.1272792 4.525483e-01
537 106 Moise 2019 Entomologia Experimentalis et Applicata Zea mays Zea_mays Annual Poaceae True armyworm Pseudaletia unipuncta Pseudaletia_unipuncta Generalist Chewing arthropods Growth / Development 10.00 10.00 21.5560000 20.2020000 1.1668805 1.1415822 -1 8 8.000 0.3310000 0.857000 0.1272792 4.525483e-01
538 106 Moise 2019 Entomologia Experimentalis et Applicata Zea mays Zea_mays Annual Poaceae True armyworm Pseudaletia unipuncta Pseudaletia_unipuncta Generalist Chewing arthropods Growth / Development 10.00 10.00 373.0750000 364.3300000 28.5205822 51.3838497 1 8 8.000 0.3310000 0.857000 0.1272792 4.525483e-01
539 106 Moise 2019 Entomologia Experimentalis et Applicata Zea mays Zea_mays Annual Poaceae True armyworm Pseudaletia unipuncta Pseudaletia_unipuncta Generalist Chewing arthropods Feeding efficiency 20.00 20.00 0.4040000 0.2950000 0.1654690 0.3443545 1 8 8.000 0.3310000 0.857000 0.1272792 4.525483e-01
540 106 Moise 2019 Entomologia Experimentalis et Applicata Zea mays Zea_mays Annual Poaceae True armyworm Pseudaletia unipuncta Pseudaletia_unipuncta Generalist Chewing arthropods Feeding efficiency 20.00 20.00 10.9890000 39.4780000 52.0914396 53.9160711 1 8 8.000 0.3310000 0.857000 0.1272792 4.525483e-01
541 106 Moise 2019 Entomologia Experimentalis et Applicata Zea mays Zea_mays Annual Poaceae True armyworm Pseudaletia unipuncta Pseudaletia_unipuncta Generalist Chewing arthropods Feeding efficiency 20.00 20.00 21.6530000 50.8510000 28.6082537 40.4012762 1 8 8.000 0.3310000 0.857000 0.1272792 4.525483e-01
542 107 Villalba 2019 Applied Animal Behaviour Science Taeniatherum caput-medusae Taeniatherum_caput-medusae Annual Poaceae Sheep Ovis aries Ovis_aries Generalist Mammalian chewers Feeding efficiency 3.00 3.00 5.2480000 0.5160000 0.9474318 0.0571577 1 NA NA NA NA NA NA
543 107 Villalba 2019 Applied Animal Behaviour Science Taeniatherum caput-medusae Taeniatherum_caput-medusae Annual Poaceae Sheep Ovis aries Ovis_aries Generalist Mammalian chewers Feeding efficiency 3.00 3.00 6.2010000 0.7670000 2.5201339 0.3238935 1 NA NA NA NA NA NA
544 107 Villalba 2019 Applied Animal Behaviour Science Taeniatherum caput-medusae Taeniatherum_caput-medusae Annual Poaceae Sheep Ovis aries Ovis_aries Generalist Mammalian chewers Feeding efficiency 3.00 3.00 3.8010000 0.6040000 2.5080096 0.3827832 1 NA NA NA NA NA NA
545 107 Villalba 2019 Applied Animal Behaviour Science Taeniatherum caput-medusae Taeniatherum_caput-medusae Annual Poaceae Sheep Ovis aries Ovis_aries Generalist Mammalian chewers Feeding efficiency 3.00 3.00 9.5370000 0.1500000 2.5010814 0.1177795 1 NA NA NA NA NA NA
546 107 Villalba 2019 Applied Animal Behaviour Science Taeniatherum caput-medusae Taeniatherum_caput-medusae Annual Poaceae Sheep Ovis aries Ovis_aries Generalist Mammalian chewers Feeding efficiency 3.00 3.00 24.2480000 0.3420000 3.0345530 0.3533384 1 NA NA NA NA NA NA
547 108 Islam 2020 Ecological Entomology Cucumis sativus Cucumis_sativus Annual Non-Poaceae Cotton bollworm Helicoverpa armigera Helicoverpa_armigera Generalist Chewing arthropods Growth / Development 30.00 30.00 0.5710000 0.4310000 0.2629068 0.2902930 1 NA NA NA NA NA NA
548 108 Islam 2020 Ecological Entomology Cucumis sativus Cucumis_sativus Annual Non-Poaceae Cotton bollworm Helicoverpa armigera Helicoverpa_armigera Generalist Chewing arthropods Feeding efficiency 30.00 30.00 0.8950000 0.8220000 0.4491325 0.2464752 1 NA NA NA NA NA NA
549 108 Islam 2020 Ecological Entomology Cucumis sativus Cucumis_sativus Annual Non-Poaceae Cotton bollworm Helicoverpa armigera Helicoverpa_armigera Generalist Chewing arthropods Growth / Development 30.00 30.00 1.0560000 0.4030000 1.2433302 0.4327008 1 NA NA NA NA NA NA
550 108 Islam 2020 Ecological Entomology Cucumis sativus Cucumis_sativus Annual Non-Poaceae Cotton bollworm Helicoverpa armigera Helicoverpa_armigera Generalist Chewing arthropods Feeding efficiency 30.00 30.00 2.5290000 1.4760000 2.3716387 1.2214213 1 NA NA NA NA NA NA
551 109 Hall 2020 Oecologia (in review) Phalaris aquatica Phalaris_aquatica Perennial Poaceae Rhopalosiphum Rhopalosiphum padi Rhopalosiphum_padi Specialist Fluid-feeding arthropods Abundance / Preference 9.00 9.00 345.7000000 278.6000000 204.5000000 154.2000000 1 NA NA NA NA NA NA
552 109 Hall 2020 Oecologia (in review) Phalaris aquatica Phalaris_aquatica Perennial Poaceae Rhopalosiphum Rhopalosiphum padi Rhopalosiphum_padi Specialist Fluid-feeding arthropods Growth / Development 8.00 8.00 0.6140000 0.5790000 0.0197990 0.0593970 1 NA NA NA NA NA NA
553 110 Hall 2020 TBC Phalaris aquatica Phalaris_aquatica Perennial Poaceae Cotton bollworm Helicoverpa armigera Helicoverpa_armigera Generalist Chewing arthropods Growth / Development 9.00 9.00 0.7270000 0.0720000 0.3160000 0.1610000 1 NA NA NA NA NA NA
554 111 Brown 2019 MSc Thesis Zea mays Zea_mays Annual Poaceae fall armyworm Spodoptera frugiperda Spodoptera_frugiperda Generalist Chewing arthropods Feeding efficiency 51.00 51.00 87.3340000 90.7500000 29.5797966 28.7156837 1 5 5.000 0.3080000 0.841000 0.0760263 2.012461e-01
555 111 Brown 2019 MSc Thesis Zea mays Zea_mays Annual Poaceae fall armyworm Spodoptera frugiperda Spodoptera_frugiperda Generalist Chewing arthropods Growth / Development 51.00 51.00 227.2710000 251.0410000 86.8683354 77.2345485 1 5 5.000 0.3080000 0.841000 0.0760263 2.012461e-01
556 111 Brown 2019 MSc Thesis Zea mays Zea_mays Annual Poaceae fall armyworm Spodoptera frugiperda Spodoptera_frugiperda Generalist Chewing arthropods Growth / Development 51.00 51.00 2.6810000 2.6870000 0.3070814 0.3356471 1 5 5.000 0.3080000 0.841000 0.0760263 2.012461e-01
557 111 Brown 2019 MSc Thesis Zea mays Zea_mays Annual Poaceae fall armyworm Spodoptera frugiperda Spodoptera_frugiperda Generalist Chewing arthropods Growth / Development 33.00 32.00 172.5840000 151.2820000 35.7311797 24.0190031 1 5 5.000 0.3080000 0.841000 0.0760263 2.012461e-01
558 112 Vandegeer 2020 Functional Ecology Festuca arundinacea Festuca_arundinacea Perennial Poaceae Cotton bollworm Helicoverpa armigera Helicoverpa_armigera Generalist Chewing arthropods Growth / Development 11.00 12.00 0.2620000 0.0510000 0.1127652 0.0623538 1 NA NA NA NA NA NA
559 113 Jadhao 2020 Scientific Reports Eleusine coracana Eleusine_coracana Annual Poaceae Pink stem borer Sesamia inferens Sesamia_inferens Generalist Boring arthropods Feeding efficiency 5.00 5.00 13.4050000 5.4160000 0.2280000 0.2960000 1 3 3.000 6.6640000 16.106000 0.3160000 4.210000e-01
560 113 Jadhao 2020 Scientific Reports Eleusine coracana Eleusine_coracana Annual Poaceae Pink stem borer Sesamia inferens Sesamia_inferens Generalist Boring arthropods Feeding efficiency 5.00 5.00 82.2540000 37.0680000 1.9700000 1.9700000 1 3 3.000 6.6640000 16.106000 0.3160000 4.210000e-01
561 113 Jadhao 2020 Scientific Reports Eleusine coracana Eleusine_coracana Annual Poaceae Pink stem borer Sesamia inferens Sesamia_inferens Generalist Boring arthropods Feeding efficiency 5.00 5.00 75.6830000 33.7320000 4.2200000 2.3910000 1 3 3.000 6.6640000 16.106000 0.3160000 4.210000e-01
562 114 Cougnon 2017 Grass and Forage Science Festuca arundinacea Festuca_arundinacea Perennial Poaceae Sheep Ovis aries Ovis_aries Generalist Mammalian chewers Feeding efficiency 3.00 3.00 6.2470000 3.9480000 1.0220000 1.5430000 1 3 3.000 4.1060000 7.475000 0.7230000 1.173000e+00
563 115 de Oliveira 2020 Plos One Triticum aestivum Triticum_aestivum Annual Poaceae Bird cherry oat aphid Rhopalosiphum padi Rhopalosiphum_padi Specialist Fluid-feeding arthropods Abundance / Preference 8.00 8.00 1.5090000 0.2820000 1.3519882 0.4497199 1 NA NA NA NA NA NA
564 115 de Oliveira 2020 Plos One Triticum aestivum Triticum_aestivum Annual Poaceae Bird cherry oat aphid Rhopalosiphum padi Rhopalosiphum_padi Specialist Fluid-feeding arthropods Abundance / Preference 12.00 12.00 97.5200000 89.5140000 33.9932291 24.3595626 1 NA NA NA NA NA NA
565 116 Andama 2020 Plant, Cell and Environment Oryza sativa Oryza_sativa Annual Poaceae Rice skipper Parnara guttata Parnara_guttata Specialist Chewing arthropods Feeding efficiency 40.00 40.00 14.4900000 1.1890000 21.4465671 3.0231374 1 NA NA NA NA NA NA
566 117 Sampaio 2020 Neotropical Entomology Sorghum bicolor Sorghum_bicolor Annual Poaceae Greenbug (aphid) Schizaphis graminum Schizaphis_graminum Specialist Fluid-feeding arthropods Reproduction 6.00 6.00 9.5000000 8.5000000 1.2982296 0.5388877 1 6 6.000 0.8000000 1.300000 0.0734847 1.469694e-01
567 117 Sampaio 2020 Neotropical Entomology Sorghum bicolor Sorghum_bicolor Annual Poaceae Greenbug (aphid) Schizaphis graminum Schizaphis_graminum Specialist Fluid-feeding arthropods Abundance / Preference 6.00 6.00 67.7000000 61.7000000 27.2383259 27.3363055 1 NA NA NA NA NA NA
568 117 Sampaio 2020 Neotropical Entomology Sorghum bicolor Sorghum_bicolor Annual Poaceae Greenbug (aphid) Schizaphis graminum Schizaphis_graminum Specialist Fluid-feeding arthropods Abundance / Preference 6.00 6.00 419.2000000 374.4000000 73.7541362 66.9690496 1 NA NA NA NA NA NA
569 117 Sampaio 2020 Neotropical Entomology Sorghum bicolor Sorghum_bicolor Annual Poaceae Greenbug (aphid) Schizaphis graminum Schizaphis_graminum Specialist Fluid-feeding arthropods Growth / Development 15.00 15.00 0.6500000 0.6500000 0.0232379 0.0348569 1 15 15.000 0.5000000 1.100000 0.1936492 1.161895e-01
570 117 Sampaio 2020 Neotropical Entomology Sorghum bicolor Sorghum_bicolor Annual Poaceae Greenbug (aphid) Schizaphis graminum Schizaphis_graminum Specialist Fluid-feeding arthropods Growth / Development 15.00 15.00 0.3400000 0.3500000 0.0348569 0.0426028 1 15 15.000 0.5000000 1.100000 0.1936492 1.161895e-01
571 117 Sampaio 2020 Neotropical Entomology Sorghum bicolor Sorghum_bicolor Annual Poaceae Greenbug (aphid) Schizaphis graminum Schizaphis_graminum Specialist Fluid-feeding arthropods Growth / Development 10.00 10.00 0.1400000 0.1200000 0.0189737 0.0126491 1 10 10.000 0.3000000 1.500000 0.0316228 1.264911e-01
572 118 Hall 2020 Plants Brachypodium distachyon Brachypodium_distachyon Annual Poaceae House cricket Acheta domesticus Acheta_domesticus Generalist Chewing arthropods Growth / Development 12.00 12.00 14.2550000 6.5450000 13.0527349 3.9386835 1 NA NA NA NA NA NA
573 118 Hall 2020 Plants Brachypodium distachyon Brachypodium_distachyon Annual Poaceae Cotton bollworm Helicoverpa armigera Helicoverpa_armigera Generalist Chewing arthropods Growth / Development 12.00 12.00 26.8330000 149.5410000 30.0046625 21.0814832 -1 NA NA NA NA NA NA
574 119 Boer 2019 Bulletin of Entomological Research Zea mays Zea_mays Annual Poaceae Corn leaf aphid Rhopalosiphum maidis Rhopalosiphum_maidis Specialist Fluid-feeding arthropods Abundance / Preference 9.00 9.00 122.4000000 92.3000000 132.9600000 57.8100000 1 5 5.000 2.3000000 2.900000 0.2906888 3.130495e-01
575 119 Boer 2019 Bulletin of Entomological Research Zea mays Zea_mays Annual Poaceae Corn leaf aphid Rhopalosiphum maidis Rhopalosiphum_maidis Specialist Fluid-feeding arthropods Abundance / Preference 9.00 9.00 17.4000000 15.3000000 12.3600000 9.9000000 1 5 5.000 2.3000000 2.900000 0.2906888 3.130495e-01
576 119 Boer 2019 Bulletin of Entomological Research Zea mays Zea_mays Annual Poaceae Corn leaf aphid Rhopalosiphum maidis Rhopalosiphum_maidis Specialist Fluid-feeding arthropods Abundance / Preference 9.00 9.00 109.9000000 54.0000000 111.5400000 47.3100000 1 5 5.000 2.3000000 2.900000 0.2906888 3.130495e-01
577 120 Cibils-Stewart 2021 PHD Thesis Festuca arundinacea Festuca_arundinacea Perennial Poaceae bird-cherry oat aphid Rhopalosiphum padi Rhopalosiphum_padi Specialist Fluid-feeding arthropods Abundance / Preference 8.00 11.00 236.0000000 183.6666667 49.1133892 121.5993421 1 10 10.000 0.4206667 1.355000 0.1637946 6.033200e-02
578 120 Cibils-Stewart 2021 PHD Thesis Festuca arundinacea Festuca_arundinacea Perennial Poaceae bird-cherry oat aphid Rhopalosiphum padi Rhopalosiphum_padi Specialist Fluid-feeding arthropods Abundance / Preference 15.00 15.00 0.0258795 0.0319543 0.0025370 0.0054717 1 10 10.000 0.4206667 1.355000 0.1637946 6.033200e-02
579 120 Cibils-Stewart 2021 PHD Thesis Festuca arundinacea Festuca_arundinacea Perennial Poaceae bird-cherry oat aphid Rhopalosiphum padi Rhopalosiphum_padi Specialist Fluid-feeding arthropods Growth / Development 15.00 15.00 0.1774250 0.1684303 0.0197077 0.0179334 -1 10 10.000 0.4206667 1.355000 0.1637946 6.033200e-02
580 121 Oliva 2021 Journal of Soil Science and Plant Nutrition Saccharum officinarum Saccharum_officinarum Perennial Poaceae stalkborer Diatraea saccharalis Diatraea_saccharalis Specialist Boring arthropods Feeding efficiency 10.00 10.00 15.4411765 10.5882353 1.9411765 1.1470588 1 12 12.000 0.9292035 2.044248 0.3716814 4.026549e-01
581 121 Oliva 2021 Journal of Soil Science and Plant Nutrition Saccharum officinarum Saccharum_officinarum Perennial Poaceae stalkborer Diatraea saccharalis Diatraea_saccharalis Specialist Boring arthropods Feeding efficiency 10.00 10.00 15.4411765 7.9411765 1.9411765 0.8823529 1 12 12.000 0.9292035 3.128319 0.3716814 3.716814e-01
582 121 Oliva 2021 Journal of Soil Science and Plant Nutrition Saccharum officinarum Saccharum_officinarum Perennial Poaceae stalkborer Diatraea saccharalis Diatraea_saccharalis Specialist Boring arthropods Feeding efficiency 10.00 10.00 15.4411765 5.3823529 1.9411765 0.9705882 1 12 12.000 0.9292035 4.738938 0.3716814 3.716814e-01
583 121 Oliva 2021 Journal of Soil Science and Plant Nutrition Saccharum officinarum Saccharum_officinarum Perennial Poaceae stalkborer Diatraea saccharalis Diatraea_saccharalis Specialist Boring arthropods Feeding efficiency 10.00 10.00 15.4411765 4.3235294 1.9411765 1.3235294 1 12 12.000 0.9292035 5.792035 0.3716814 3.716814e-01
584 122 Acevedo 2021 Frontiers in Plant Science Zea mays Zea_mays Annual Poaceae fall armyworm Spodoptera frugiperda Spodoptera_frugiperda Generalist Chewing arthropods Growth / Development 29.00 29.00 20.4081633 10.4591837 11.6770155 6.8688327 1 29 29.000 189.6373057 450.777202 33.4828900 1.171901e+02
585 122 Acevedo 2021 Frontiers in Plant Science Zea mays Zea_mays Annual Poaceae fall armyworm Spodoptera frugiperda Spodoptera_frugiperda Generalist Chewing arthropods Growth / Development 29.00 29.00 24.0277778 19.5833333 9.7232142 11.2190933 1 29 29.000 189.6373057 450.777202 33.4828900 1.171901e+02
586 122 Acevedo 2021 Frontiers in Plant Science Glycine max Glycine_max Annual Non-Poaceae fall armyworm Spodoptera frugiperda Spodoptera_frugiperda Generalist Chewing arthropods Growth / Development 29.00 29.00 108.5714286 84.2857143 50.0051018 50.0051018 1 29 29.000 156.1403509 287.719298 47.2382878 2.834297e+01
587 122 Acevedo 2021 Frontiers in Plant Science Glycine max Glycine_max Annual Non-Poaceae fall armyworm Spodoptera frugiperda Spodoptera_frugiperda Generalist Chewing arthropods Growth / Development 29.00 29.00 19.1666667 18.4722222 7.4793956 8.9752747 1 29 29.000 156.1403509 287.719298 47.2382878 2.834297e+01
588 122 Acevedo 2021 Frontiers in Plant Science Solanum lycopersicum Solanum_lycopersicum Perennial Non-Poaceae fall armyworm Spodoptera frugiperda Spodoptera_frugiperda Generalist Chewing arthropods Growth / Development 29.00 29.00 39.6373057 36.2694301 15.3463246 18.1365654 1 29 29.000 55.1724138 72.183908 22.2834406 9.903751e+00
589 122 Acevedo 2021 Frontiers in Plant Science Solanum lycopersicum Solanum_lycopersicum Perennial Non-Poaceae fall armyworm Spodoptera frugiperda Spodoptera_frugiperda Generalist Chewing arthropods Growth / Development 29.00 29.00 6.6168224 5.8691589 5.2341789 4.0262914 1 29 29.000 55.1724138 72.183908 22.2834406 9.903751e+00
590 122 Acevedo 2021 Frontiers in Plant Science Zea mays Zea_mays Annual Poaceae fall armyworm Spodoptera frugiperda Spodoptera_frugiperda Generalist Chewing arthropods Growth / Development 29.00 29.00 14.6683673 6.1224490 6.8688327 2.7475331 1 29 29.000 220.7253886 506.735751 33.4828900 1.339316e+02
591 122 Acevedo 2021 Frontiers in Plant Science Zea mays Zea_mays Annual Poaceae fall armyworm Spodoptera frugiperda Spodoptera_frugiperda Generalist Chewing arthropods Growth / Development 29.00 29.00 26.3888889 18.8888889 11.2190933 14.9587911 1 29 29.000 220.7253886 506.735751 33.4828900 1.339316e+02
592 122 Acevedo 2021 Frontiers in Plant Science Glycine max Glycine_max Annual Non-Poaceae fall armyworm Spodoptera frugiperda Spodoptera_frugiperda Generalist Chewing arthropods Growth / Development 29.00 29.00 69.2857143 56.4285714 53.8516481 26.9258240 1 29 29.000 129.8245614 236.842105 18.8953151 6.613360e+01
593 122 Acevedo 2021 Frontiers in Plant Science Glycine max Glycine_max Annual Non-Poaceae fall armyworm Spodoptera frugiperda Spodoptera_frugiperda Generalist Chewing arthropods Growth / Development 29.00 29.00 23.8888889 26.8055556 9.7232142 9.7232142 1 29 29.000 129.8245614 236.842105 18.8953151 6.613360e+01
594 122 Acevedo 2021 Frontiers in Plant Science Solanum lycopersicum Solanum_lycopersicum Perennial Non-Poaceae fall armyworm Spodoptera frugiperda Spodoptera_frugiperda Generalist Chewing arthropods Growth / Development 29.00 29.00 4.4041451 4.9222798 2.7902408 2.7902408 1 29 29.000 49.1954023 71.724138 14.8556271 2.475938e+00
595 122 Acevedo 2021 Frontiers in Plant Science Solanum lycopersicum Solanum_lycopersicum Perennial Non-Poaceae fall armyworm Spodoptera frugiperda Spodoptera_frugiperda Generalist Chewing arthropods Growth / Development 29.00 29.00 3.3271028 3.1775701 3.6236623 2.4157749 1 29 29.000 49.1954023 71.724138 14.8556271 2.475938e+00
596 123 Haq 2022 Silicon Zea mays Zea_mays Annual Poaceae fall armyworm Spodoptera frugiperda Spodoptera_frugiperda Generalist Chewing arthropods Abundance / Preference 50.00 50.00 0.1250000 0.1050000 0.0353553 0.0424264 1 15 15.000 2621.8300000 3198.330000 14.8556271 2.475938e+00
597 123 Haq 2022 Silicon Zea mays Zea_mays Annual Poaceae fall armyworm Spodoptera frugiperda Spodoptera_frugiperda Generalist Chewing arthropods Reproduction 50.00 50.00 1.1300000 1.1100000 0.0353553 0.0424264 1 15 15.000 2621.8300000 3198.330000 14.8556271 2.475938e+00
598 123 Haq 2022 Silicon Zea mays Zea_mays Annual Poaceae fall armyworm Spodoptera frugiperda Spodoptera_frugiperda Generalist Chewing arthropods Reproduction 50.00 50.00 83.5600000 49.6400000 102.9547473 75.9432683 1 15 15.000 2621.8300000 3198.330000 14.8556271 2.475938e+00
599 123 Haq 2022 Silicon Zea mays Zea_mays Annual Poaceae fall armyworm Spodoptera frugiperda Spodoptera_frugiperda Generalist Chewing arthropods Growth / Development 50.00 50.00 35.3400000 36.9900000 1.9091883 1.2727922 1 15 15.000 2621.8300000 3198.330000 14.8556271 2.475938e+00
600 123 Haq 2022 Silicon Zea mays Zea_mays Annual Poaceae fall armyworm Spodoptera frugiperda Spodoptera_frugiperda Generalist Chewing arthropods Reproduction 50.00 50.00 91.3000000 71.4300000 108.6823123 99.6313455 1 15 15.000 2621.8300000 3198.330000 14.8556271 2.475938e+00
601 123 Haq 2022 Silicon Zea mays Zea_mays Annual Poaceae fall armyworm Spodoptera frugiperda Spodoptera_frugiperda Generalist Chewing arthropods Reproduction 50.00 50.00 208.9000000 165.4700000 28.8499567 18.6676190 1 15 15.000 2621.8300000 3198.330000 14.8556271 2.475938e+00
602 123 Haq 2022 Silicon Zea mays Zea_mays Annual Poaceae fall armyworm Spodoptera frugiperda Spodoptera_frugiperda Generalist Chewing arthropods Abundance / Preference 50.00 50.00 0.1250000 0.0900000 0.0353553 0.0353553 1 15 15.000 2621.8300000 3183.660000 14.8556271 2.475938e+00
603 123 Haq 2022 Silicon Zea mays Zea_mays Annual Poaceae fall armyworm Spodoptera frugiperda Spodoptera_frugiperda Generalist Chewing arthropods Reproduction 50.00 50.00 1.1300000 1.1000000 0.0353553 0.0424264 1 15 15.000 2621.8300000 3183.660000 14.8556271 2.475938e+00
604 123 Haq 2022 Silicon Zea mays Zea_mays Annual Poaceae fall armyworm Spodoptera frugiperda Spodoptera_frugiperda Generalist Chewing arthropods Reproduction 50.00 50.00 83.5600000 46.0400000 102.9547473 71.2056529 1 15 15.000 2621.8300000 3183.660000 14.8556271 2.475938e+00
605 123 Haq 2022 Silicon Zea mays Zea_mays Annual Poaceae fall armyworm Spodoptera frugiperda Spodoptera_frugiperda Generalist Chewing arthropods Growth / Development 50.00 50.00 35.3400000 39.4600000 1.9091883 2.1920310 1 15 15.000 2621.8300000 3183.660000 14.8556271 2.475938e+00
606 123 Haq 2022 Silicon Zea mays Zea_mays Annual Poaceae fall armyworm Spodoptera frugiperda Spodoptera_frugiperda Generalist Chewing arthropods Reproduction 50.00 50.00 91.3000000 75.1500000 108.6823123 102.0355085 1 15 15.000 2621.8300000 3183.660000 14.8556271 2.475938e+00
607 123 Haq 2022 Silicon Zea mays Zea_mays Annual Poaceae fall armyworm Spodoptera frugiperda Spodoptera_frugiperda Generalist Chewing arthropods Reproduction 50.00 50.00 208.9000000 153.4700000 28.8499567 31.4662518 1 15 15.000 2621.8300000 3183.660000 14.8556271 2.475938e+00
608 124 Haq 2022 JOURNAL OF KING SAUD UNIVERSITY SCIENCE Zea mays Zea_mays Annual Poaceae fall armyworm Spodoptera frugiperda Spodoptera_frugiperda Generalist Chewing arthropods Mortality / Survivability 3.00 3.00 3.6700000 11.7800000 1.4202817 11.5527789 -1 NA NA NA NA NA NA
609 124 Haq 2022 JOURNAL OF KING SAUD UNIVERSITY SCIENCE Zea mays Zea_mays Annual Poaceae fall armyworm Spodoptera frugiperda Spodoptera_frugiperda Generalist Chewing arthropods Mortality / Survivability 3.00 3.00 1.0000000 7.3300000 1.8879354 8.2965234 -1 NA NA NA NA NA NA
610 124 Haq 2022 JOURNAL OF KING SAUD UNIVERSITY SCIENCE Zea mays Zea_mays Annual Poaceae fall armyworm Spodoptera frugiperda Spodoptera_frugiperda Generalist Chewing arthropods Mortality / Survivability 3.00 3.00 4.6700000 22.8900000 1.7840123 25.0454547 -1 NA NA NA NA NA NA
611 124 Haq 2022 JOURNAL OF KING SAUD UNIVERSITY SCIENCE Zea mays Zea_mays Annual Poaceae fall armyworm Spodoptera frugiperda Spodoptera_frugiperda Generalist Chewing arthropods Growth / Development 3.00 3.00 95.3300000 77.1100000 1.7840123 25.0454547 1 NA NA NA NA NA NA
612 124 Haq 2022 JOURNAL OF KING SAUD UNIVERSITY SCIENCE Zea mays Zea_mays Annual Poaceae fall armyworm Spodoptera frugiperda Spodoptera_frugiperda Generalist Chewing arthropods Reproduction 3.00 3.00 192.5000000 175.0000000 4.9883063 24.7336855 1 NA NA NA NA NA NA
613 124 Haq 2022 JOURNAL OF KING SAUD UNIVERSITY SCIENCE Zea mays Zea_mays Annual Poaceae fall armyworm Spodoptera frugiperda Spodoptera_frugiperda Generalist Chewing arthropods Growth / Development 3.00 3.00 3.8300000 3.6700000 0.6928203 0.8660254 -1 NA NA NA NA NA NA
614 125 Leroy 2022 JOURNAL OF CHEMICAL ECOLOGY Zea mays Zea_mays Annual Poaceae beet armyworm Spodoptera exigua Spodoptera_exigua Generalist Chewing arthropods Reproduction 15.00 15.00 152.0000000 140.0000000 104.5705503 116.1895004 1 3 3.000 0.3100000 9.560000 0.0692820 5.196152e-01
615 126 Pelosi 2022 Arthropod-Plant Interactions Oryza sativa Oryza_sativa Annual Poaceae Sugarcane borer Diatraea saccharalis Diatraea_saccharalis Specialist Chewing arthropods Mortality / Survivability 5.00 5.00 2.7533333 2.0800000 0.5888312 1.4161764 1 5 5.000 1.1900000 1.890000 0.1788854 2.906888e-01
616 126 Pelosi 2022 Arthropod-Plant Interactions Oryza sativa Oryza_sativa Annual Poaceae Sugarcane borer Diatraea saccharalis Diatraea_saccharalis Specialist Chewing arthropods Growth / Development 5.00 5.00 0.0443333 0.0163333 0.0216153 0.0104350 1 5 5.000 1.1900000 1.890000 0.1788854 2.906888e-01
617 126 Pelosi 2022 Arthropod-Plant Interactions Oryza sativa Oryza_sativa Annual Poaceae Sugarcane borer Diatraea saccharalis Diatraea_saccharalis Specialist Chewing arthropods Growth / Development 5.00 5.00 1.4933333 1.3133333 0.0372678 0.1863390 1 5 5.000 1.1900000 1.890000 0.1788854 2.906888e-01
618 126 Pelosi 2022 Arthropod-Plant Interactions Oryza sativa Oryza_sativa Annual Poaceae Sugarcane borer Diatraea saccharalis Diatraea_saccharalis Specialist Chewing arthropods Feeding efficiency 5.00 5.00 67.1100000 60.9766667 22.7184507 31.3794873 1 5 5.000 1.1900000 1.890000 0.1788854 2.906888e-01
619 126 Pelosi 2022 Arthropod-Plant Interactions Oryza sativa Oryza_sativa Annual Poaceae Sugarcane borer Diatraea saccharalis Diatraea_saccharalis Specialist Chewing arthropods Feeding efficiency 5.00 5.00 35.7500000 28.9100000 5.9479408 6.3951544 1 5 5.000 1.1900000 1.890000 0.1788854 2.906888e-01
620 127 Abbasi 2022 Sustainability Gossypium hirsutum Gossypium_hirsutum Perennial Non-Poaceae Whitefly Bemisia tabaci Bemisia_tabaci Generalist Fluid-feeding arthropods Reproduction 9.00 9.00 119.7900000 71.4700000 14.3100000 6.7800000 1 9 9.000 85.3500000 793.830000 53.6400000 1.106400e+02
621 127 Abbasi 2022 Sustainability Gossypium hirsutum Gossypium_hirsutum Perennial Non-Poaceae Whitefly Bemisia tabaci Bemisia_tabaci Generalist Fluid-feeding arthropods Growth / Development 9.00 9.00 1.8700000 2.8500000 0.3000000 0.3600000 -1 9 9.000 85.3500000 793.830000 53.6400000 1.106400e+02
622 127 Abbasi 2022 Sustainability Gossypium hirsutum Gossypium_hirsutum Perennial Non-Poaceae Whitefly Bemisia tabaci Bemisia_tabaci Generalist Fluid-feeding arthropods Growth / Development 9.00 9.00 2.0600000 3.0000000 0.3000000 0.3000000 -1 9 9.000 85.3500000 793.830000 53.6400000 1.106400e+02
623 127 Abbasi 2022 Sustainability Gossypium hirsutum Gossypium_hirsutum Perennial Non-Poaceae Whitefly Bemisia tabaci Bemisia_tabaci Generalist Fluid-feeding arthropods Growth / Development 9.00 9.00 2.1700000 2.8300000 0.3900000 0.1500000 -1 9 9.000 85.3500000 793.830000 53.6400000 1.106400e+02
624 127 Abbasi 2022 Sustainability Gossypium hirsutum Gossypium_hirsutum Perennial Non-Poaceae Whitefly Bemisia tabaci Bemisia_tabaci Generalist Fluid-feeding arthropods Growth / Development 9.00 9.00 9.8800000 14.0200000 0.5700000 1.0200000 -1 9 9.000 85.3500000 793.830000 53.6400000 1.106400e+02
625 128 Nuambote-Yobila 2022 PHYTOPARASITICA Zea mays Zea_mays Annual Poaceae fall armyworm Spodoptera frugiperda Spodoptera_frugiperda Generalist Chewing arthropods Growth / Development 12.00 12.00 1.4900000 1.5700000 0.7274613 1.7320508 1 12 12.000 0.6820000 1.157000 0.2424871 2.771281e-01
626 128 Nuambote-Yobila 2022 PHYTOPARASITICA Zea mays Zea_mays Annual Poaceae fall armyworm Spodoptera frugiperda Spodoptera_frugiperda Generalist Chewing arthropods Growth / Development 12.00 12.00 7.1900000 5.4900000 3.2908965 2.3902301 1 12 12.000 0.6820000 1.157000 0.2424871 2.771281e-01
627 128 Nuambote-Yobila 2022 PHYTOPARASITICA Zea mays Zea_mays Annual Poaceae fall armyworm Spodoptera frugiperda Spodoptera_frugiperda Generalist Chewing arthropods Mortality / Survivability 12.00 12.00 7.9900000 4.5700000 7.9674337 6.0275368 -1 12 12.000 0.6820000 1.157000 0.2424871 2.771281e-01
628 128 Nuambote-Yobila 2022 PHYTOPARASITICA Zea mays Zea_mays Annual Poaceae fall armyworm Spodoptera frugiperda Spodoptera_frugiperda Generalist Chewing arthropods Mortality / Survivability 12.00 12.00 6.7200000 5.6900000 5.8889727 3.1176915 -1 12 12.000 0.6820000 1.157000 0.2424871 2.771281e-01
629 129 Vu 2022 Insects Oryza sativa Oryza_sativa Annual Poaceae Brown planthopper Nilaparvata lugens Nilaparvata_lugens Specialist Fluid-feeding arthropods Mortality / Survivability 6.00 6.00 0.8900000 0.7300000 0.1224745 0.1714643 1 NA NA NA NA NA NA
630 129 Vu 2022 Insects Oryza sativa Oryza_sativa Annual Poaceae Brown planthopper Nilaparvata lugens Nilaparvata_lugens Specialist Fluid-feeding arthropods Growth / Development 6.00 6.00 6.6100000 5.1300000 2.2045408 1.2982296 1 NA NA NA NA NA NA
631 129 Vu 2022 Insects Oryza sativa Oryza_sativa Annual Poaceae Brown planthopper Nilaparvata lugens Nilaparvata_lugens Specialist Fluid-feeding arthropods Reproduction 6.00 6.00 120.9300000 94.5900000 38.9468869 36.5218921 1 NA NA NA NA NA NA
632 129 Vu 2022 Insects Oryza sativa Oryza_sativa Annual Poaceae Brown planthopper Nilaparvata lugens Nilaparvata_lugens Specialist Fluid-feeding arthropods Feeding efficiency 6.00 6.00 0.9000000 0.3000000 0.0244949 0.0244949 1 NA NA NA NA NA NA
633 129 Vu 2022 Insects Oryza sativa Oryza_sativa Annual Poaceae Brown planthopper Nilaparvata lugens Nilaparvata_lugens Specialist Fluid-feeding arthropods Abundance / Preference 6.00 6.00 0.0900000 0.0700000 0.0734847 0.0489898 1 NA NA NA NA NA NA
634 129 Vu 2022 Insects Oryza sativa Oryza_sativa Annual Poaceae Brown planthopper Nilaparvata lugens Nilaparvata_lugens Specialist Fluid-feeding arthropods Growth / Development 6.00 6.00 2.0600000 1.7800000 1.3717143 0.7838367 1 NA NA NA NA NA NA
635 129 Vu 2022 Insects Oryza sativa Oryza_sativa Annual Poaceae Brown planthopper Nilaparvata lugens Nilaparvata_lugens Specialist Fluid-feeding arthropods Mortality / Survivability 6.00 6.00 0.6700000 0.0300000 0.5143928 0.1224745 1 NA NA NA NA NA NA
636 129 Vu 2022 Insects Oryza sativa Oryza_sativa Annual Poaceae Brown planthopper Nilaparvata lugens Nilaparvata_lugens Specialist Fluid-feeding arthropods Reproduction 6.00 6.00 30.3200000 51.1400000 30.4716524 32.2352850 1 NA NA NA NA NA NA
637 129 Vu 2022 Insects Oryza sativa Oryza_sativa Annual Poaceae Brown planthopper Nilaparvata lugens Nilaparvata_lugens Specialist Fluid-feeding arthropods Abundance / Preference 6.00 6.00 0.4100000 0.1400000 0.0979796 0.1714643 1 NA NA NA NA NA NA
638 129 Vu 2022 Insects Oryza sativa Oryza_sativa Annual Poaceae Whitebacked plant hopper Sogatella furcifera Sogatella_furcifera Specialist Fluid-feeding arthropods Mortality / Survivability 6.00 6.00 0.5200000 0.5400000 0.3184337 0.2939388 1 NA NA NA NA NA NA
639 129 Vu 2022 Insects Oryza sativa Oryza_sativa Annual Poaceae Whitebacked plant hopper Sogatella furcifera Sogatella_furcifera Specialist Fluid-feeding arthropods Growth / Development 6.00 6.00 0.6150000 0.6700000 0.3551760 0.1347219 1 NA NA NA NA NA NA
640 129 Vu 2022 Insects Oryza sativa Oryza_sativa Annual Poaceae Whitebacked plant hopper Sogatella furcifera Sogatella_furcifera Specialist Fluid-feeding arthropods Reproduction 6.00 6.00 68.0000000 28.3350000 74.5012305 50.6064581 1 NA NA NA NA NA NA
641 129 Vu 2022 Insects Oryza sativa Oryza_sativa Annual Poaceae Whitebacked plant hopper Sogatella furcifera Sogatella_furcifera Specialist Fluid-feeding arthropods Abundance / Preference 6.00 6.00 3.7500000 5.0000000 1.7758801 3.1475943 1 NA NA NA NA NA NA
642 129 Vu 2022 Insects Oryza sativa Oryza_sativa Annual Poaceae Whitebacked plant hopper Sogatella furcifera Sogatella_furcifera Specialist Fluid-feeding arthropods Abundance / Preference 6.00 6.00 0.0450000 0.0550000 0.0244949 0.0367423 1 NA NA NA NA NA NA
643 129 Vu 2022 Insects Oryza sativa Oryza_sativa Annual Poaceae Whitebacked plant hopper Sogatella furcifera Sogatella_furcifera Specialist Fluid-feeding arthropods Reproduction 6.00 6.00 44.1650000 11.6650000 56.8771518 28.6957723 1 NA NA NA NA NA NA
644 129 Vu 2022 Insects Oryza sativa Oryza_sativa Annual Poaceae Green leaf hopper Nephotettix virescens Nephotettix_virescens Specialist Fluid-feeding arthropods Mortality / Survivability 6.00 6.00 0.3500000 0.3700000 0.1224745 0.2327015 1 NA NA NA NA NA NA
645 129 Vu 2022 Insects Oryza sativa Oryza_sativa Annual Poaceae Green leaf hopper Nephotettix virescens Nephotettix_virescens Specialist Fluid-feeding arthropods Growth / Development 6.00 6.00 1.8350000 1.6600000 0.6736097 0.5388877 1 NA NA NA NA NA NA
646 129 Vu 2022 Insects Oryza sativa Oryza_sativa Annual Poaceae Green leaf hopper Nephotettix virescens Nephotettix_virescens Specialist Fluid-feeding arthropods Abundance / Preference 6.00 6.00 5.7500000 6.0000000 2.0943137 2.1433035 1 NA NA NA NA NA NA
647 130 Annamalai 2022 Silicon Oryza sativa Oryza_sativa Annual Poaceae Yellow stem borer Scirpophaga incertulas Scirpophaga_incertulas Specialist Boring arthropods Feeding efficiency 3.00 3.00 86.9700000 53.1300000 14.2547781 15.5884573 1 5 5.000 228.0500000 370.770000 23.7470419 1.826868e+01
648 130 Annamalai 2022 Silicon Oryza sativa Oryza_sativa Annual Poaceae Yellow stem borer Scirpophaga incertulas Scirpophaga_incertulas Specialist Boring arthropods Feeding efficiency 3.00 3.00 86.9700000 47.0000000 14.5838678 14.5838678 1 5 5.000 225.5800000 347.900000 25.5582570 1.462388e+01
649 130 Annamalai 2022 Silicon Oryza sativa Oryza_sativa Annual Poaceae Yellow stem borer Scirpophaga incertulas Scirpophaga_incertulas Specialist Boring arthropods Feeding efficiency 10.00 10.00 86.7300000 46.5000000 26.0571679 27.2904562 1 5 5.000 228.0500000 370.770000 23.7470419 1.826868e+01
650 130 Annamalai 2022 Silicon Oryza sativa Oryza_sativa Annual Poaceae Yellow stem borer Scirpophaga incertulas Scirpophaga_incertulas Specialist Boring arthropods Feeding efficiency 10.00 10.00 86.7300000 33.4700000 27.2904562 27.2588334 1 5 5.000 225.5800000 347.900000 25.5582570 1.462388e+01
651 130 Annamalai 2022 Silicon Oryza sativa Oryza_sativa Annual Poaceae Yellow stem borer Scirpophaga incertulas Scirpophaga_incertulas Specialist Boring arthropods Growth / Development 5.00 5.00 0.0900000 0.0200000 0.0447214 0.0223607 1 5 5.000 228.0500000 370.770000 23.7470419 1.826868e+01
652 130 Annamalai 2022 Silicon Oryza sativa Oryza_sativa Annual Poaceae Yellow stem borer Scirpophaga incertulas Scirpophaga_incertulas Specialist Boring arthropods Growth / Development 5.00 5.00 0.1900000 0.0500000 0.0447214 0.0223607 1 5 5.000 225.5800000 347.900000 25.5582570 1.462388e+01
653 130 Annamalai 2022 Silicon Oryza sativa Oryza_sativa Annual Poaceae Yellow stem borer Scirpophaga incertulas Scirpophaga_incertulas Specialist Boring arthropods Mortality / Survivability 3.00 3.00 11.2000000 77.8500000 17.7535208 17.7535208 -1 5 5.000 228.0500000 370.770000 23.7470419 1.826868e+01
654 130 Annamalai 2022 Silicon Oryza sativa Oryza_sativa Annual Poaceae Yellow stem borer Scirpophaga incertulas Scirpophaga_incertulas Specialist Boring arthropods Mortality / Survivability 3.00 3.00 11.2000000 88.8600000 17.7535208 17.7535208 -1 5 5.000 225.5800000 347.900000 25.5582570 1.462388e+01
655 131 Rizwan 2022 Pakistan Journal of Zoology Oryza sativa Oryza_sativa Annual Poaceae Rice leaffolder Cnaphalocrocis medinalis Cnaphalocrocis_medinalis Specialist Chewing arthropods Growth / Development 3.00 3.00 18.0900000 15.1500000 26.2405697 1.5934867 -1 NA NA NA NA NA NA
656 131 Rizwan 2022 Pakistan Journal of Zoology Oryza sativa Oryza_sativa Annual Poaceae Rice leaffolder Cnaphalocrocis medinalis Cnaphalocrocis_medinalis Specialist Chewing arthropods Mortality / Survivability 3.00 3.00 39.5200000 23.1700000 5.9928958 2.9964479 1 NA NA NA NA NA NA
657 131 Rizwan 2022 Pakistan Journal of Zoology Oryza sativa Oryza_sativa Annual Poaceae Rice leaffolder Cnaphalocrocis medinalis Cnaphalocrocis_medinalis Specialist Chewing arthropods Growth / Development 3.00 3.00 55.0500000 21.5800000 0.9006664 1.1951151 1 NA NA NA NA NA NA
658 131 Rizwan 2022 Pakistan Journal of Zoology Oryza sativa Oryza_sativa Annual Poaceae Rice leaffolder Cnaphalocrocis medinalis Cnaphalocrocis_medinalis Specialist Chewing arthropods Growth / Development 3.00 3.00 5.0000000 5.1100000 0.0692820 0.0692820 -1 NA NA NA NA NA NA
659 131 Rizwan 2022 Pakistan Journal of Zoology Oryza sativa Oryza_sativa Annual Poaceae Rice leaffolder Cnaphalocrocis medinalis Cnaphalocrocis_medinalis Specialist Chewing arthropods Growth / Development 3.00 3.00 55.0900000 32.9400000 9.1105872 4.1915630 1 NA NA NA NA NA NA
660 131 Rizwan 2022 Pakistan Journal of Zoology Oryza sativa Oryza_sativa Annual Poaceae Rice leaffolder Cnaphalocrocis medinalis Cnaphalocrocis_medinalis Specialist Chewing arthropods Growth / Development 3.00 3.00 21.5600000 17.5700000 0.3810512 1.0045895 1 NA NA NA NA NA NA
661 131 Rizwan 2022 Pakistan Journal of Zoology Oryza sativa Oryza_sativa Annual Poaceae Rice leaffolder Cnaphalocrocis medinalis Cnaphalocrocis_medinalis Specialist Chewing arthropods Feeding efficiency 3.00 3.00 10.0900000 24.8200000 4.0183579 4.0183579 1 NA NA NA NA NA NA
662 132 Leroy 2022 Entomologia Generalis Zea mays Zea_mays Annual Poaceae fall armyworm Spodoptera frugiperda Spodoptera_frugiperda Generalist Chewing arthropods Feeding efficiency 50.00 50.00 0.8600000 0.8000000 0.7071068 0.6363961 1 NA NA NA NA NA NA
663 132 Leroy 2022 Entomologia Generalis Zea mays Zea_mays Annual Poaceae fall armyworm Spodoptera frugiperda Spodoptera_frugiperda Generalist Chewing arthropods Feeding efficiency 50.00 50.00 7.3300000 4.9800000 3.4648232 2.4041631 1 5 5.000 0.2130000 8.459000 0.0670820 1.366237e+00
664 132 Leroy 2022 Entomologia Generalis Zea mays Zea_mays Annual Poaceae fall armyworm Spodoptera frugiperda Spodoptera_frugiperda Generalist Chewing arthropods Growth / Development 50.00 50.00 0.5700000 0.3800000 0.2828427 0.2828427 1 5 5.000 0.2130000 8.459000 0.0670820 1.366237e+00
665 132 Leroy 2022 Entomologia Generalis Zea mays Zea_mays Annual Poaceae fall armyworm Spodoptera frugiperda Spodoptera_frugiperda Generalist Chewing arthropods Feeding efficiency 50.00 50.00 0.8900000 0.8900000 0.0707107 0.0707107 1 5 5.000 0.2130000 8.459000 0.0670820 1.366237e+00
666 132 Leroy 2022 Entomologia Generalis Zea mays Zea_mays Annual Poaceae fall armyworm Spodoptera frugiperda Spodoptera_frugiperda Generalist Chewing arthropods Growth / Development 29.00 20.00 18.0700000 21.3900000 1.5616978 0.9391486 -1 5 5.000 0.2130000 8.459000 0.0670820 1.366237e+00
667 132 Leroy 2022 Entomologia Generalis Zea mays Zea_mays Annual Poaceae fall armyworm Spodoptera frugiperda Spodoptera_frugiperda Generalist Chewing arthropods Growth / Development 38.00 39.00 75.5400000 60.8900000 9.9863507 16.7990446 1 5 5.000 0.2130000 8.459000 0.0670820 1.366237e+00
668 132 Leroy 2022 Entomologia Generalis Zea mays Zea_mays Annual Poaceae fall armyworm Spodoptera frugiperda Spodoptera_frugiperda Generalist Chewing arthropods Growth / Development 38.00 39.00 9.4100000 9.5700000 0.8630180 1.6861495 -1 5 5.000 0.2130000 8.459000 0.0670820 1.366237e+00
669 132 Leroy 2022 Entomologia Generalis Zea mays Zea_mays Annual Poaceae fall armyworm Spodoptera frugiperda Spodoptera_frugiperda Generalist Chewing arthropods Growth / Development 29.00 20.00 23.6000000 19.4200000 3.2310989 2.5043961 1 5 5.000 0.2130000 8.459000 0.0670820 1.366237e+00
670 133 Sousa 2022 Journal of Pest Science Zea mays Zea_mays Annual Poaceae fall armyworm Spodoptera frugiperda Spodoptera_frugiperda Generalist Chewing arthropods Feeding efficiency 20.00 20.00 7.1600000 5.9500000 6.1715476 7.3790243 1 3 3.000 1.4000000 1.900000 0.1039230 1.039230e-01
671 133 Sousa 2022 Journal of Pest Science Zea mays Zea_mays Annual Poaceae fall armyworm Spodoptera frugiperda Spodoptera_frugiperda Generalist Chewing arthropods Feeding efficiency 20.00 20.00 5.6700000 5.7500000 1.6994117 2.1913466 1 NA NA NA NA NA NA
672 134 Lin 2022 Journal of Pest Science Oryza sativa Oryza_sativa Annual Poaceae Brown planthopper Nilaparvata lugens Nilaparvata_lugens Specialist Fluid-feeding arthropods Abundance / Preference 20.00 20.00 9.3400000 5.9100000 2.6385602 3.2199379 1 6 6.000 9.3500000 30.600000 0.8573214 1.347219e+00
673 134 Lin 2022 Journal of Pest Science Oryza sativa Oryza_sativa Annual Poaceae Brown planthopper Nilaparvata lugens Nilaparvata_lugens Specialist Fluid-feeding arthropods Feeding efficiency 10.00 10.00 9.5300000 5.2700000 3.5733738 1.2649111 1 6 6.000 9.3500000 30.600000 0.8573214 1.347219e+00
674 134 Lin 2022 Journal of Pest Science Oryza sativa Oryza_sativa Annual Poaceae Brown planthopper Nilaparvata lugens Nilaparvata_lugens Specialist Fluid-feeding arthropods Reproduction 5.00 5.00 85.8300000 34.4800000 7.3119423 6.1939083 1 6 6.000 9.3500000 30.600000 0.8573214 1.347219e+00
675 135 Perdomo 2022 BRAGANTIA Zea mays Zea_mays Annual Poaceae fall armyworm Spodoptera frugiperda Spodoptera_frugiperda Generalist Chewing arthropods Feeding efficiency 4.00 4.00 1.7000000 0.6700000 0.5000000 0.2400000 1 NA NA NA NA NA NA
676 135 Perdomo 2022 BRAGANTIA Zea mays Zea_mays Annual Poaceae fall armyworm Spodoptera frugiperda Spodoptera_frugiperda Generalist Chewing arthropods Feeding efficiency 4.00 4.00 0.8900000 1.0500000 0.6000000 0.2800000 1 NA NA NA NA NA NA
677 135 Perdomo 2022 BRAGANTIA Zea mays Zea_mays Annual Poaceae fall armyworm Spodoptera frugiperda Spodoptera_frugiperda Generalist Chewing arthropods Feeding efficiency 4.00 4.00 3.8800000 1.8400000 0.2200000 0.1200000 1 NA NA NA NA NA NA
678 135 Perdomo 2022 BRAGANTIA Zea mays Zea_mays Annual Poaceae fall armyworm Spodoptera frugiperda Spodoptera_frugiperda Generalist Chewing arthropods Feeding efficiency 4.00 4.00 2.0300000 1.4500000 1.4400000 0.3600000 1 NA NA NA NA NA NA
679 136 Bhavanam 2021 Plants Oryza sativa Oryza_sativa Annual Poaceae fall armyworm Spodoptera frugiperda Spodoptera_frugiperda Generalist Chewing arthropods Growth / Development 8.00 8.00 119.6100000 89.1200000 46.8953217 41.4081731 1 NA NA NA NA NA NA
680 136 Bhavanam 2021 Plants Oryza sativa Oryza_sativa Annual Poaceae fall armyworm Spodoptera frugiperda Spodoptera_frugiperda Generalist Chewing arthropods Growth / Development 8.00 8.00 81.8100000 48.8500000 19.9121270 7.3256263 1 NA NA NA NA NA NA
681 137 Santos-Cividanes 2022 Journal of Pest Science Saccharum spp. Saccharum_spp. Perennial Poaceae Sugarcane borer Diatraea saccharalis Diatraea_saccharalis Specialist Boring arthropods Feeding efficiency 5.00 5.00 6.0000000 4.3800000 1.5205262 1.0285913 1 12 12.000 0.2300000 0.280000 0.0346410 3.464100e-02
682 137 Santos-Cividanes 2022 Journal of Pest Science Saccharum spp. Saccharum_spp. Perennial Poaceae Sugarcane borer Diatraea saccharalis Diatraea_saccharalis Specialist Boring arthropods Feeding efficiency 5.00 5.00 6.3200000 5.0100000 1.6099689 1.2298374 1 12 12.000 0.2200000 0.210000 0.0692820 6.928200e-02
683 137 Santos-Cividanes 2022 Journal of Pest Science Saccharum spp. Saccharum_spp. Perennial Poaceae Sugarcane borer Diatraea saccharalis Diatraea_saccharalis Specialist Boring arthropods Feeding efficiency 5.00 5.00 18.1800000 13.6200000 2.9963311 2.1242646 1 12 12.000 0.2300000 0.280000 0.0346410 3.464100e-02
684 137 Santos-Cividanes 2022 Journal of Pest Science Saccharum spp. Saccharum_spp. Perennial Poaceae Sugarcane borer Diatraea saccharalis Diatraea_saccharalis Specialist Boring arthropods Feeding efficiency 5.00 5.00 16.5100000 13.6500000 2.3031500 1.7217723 1 12 12.000 0.2200000 0.210000 0.0692820 6.928200e-02
685 137 Santos-Cividanes 2022 Journal of Pest Science Saccharum spp. Saccharum_spp. Perennial Poaceae Sugarcane borer Diatraea saccharalis Diatraea_saccharalis Specialist Boring arthropods Growth / Development 5.00 5.00 49.9000000 57.1100000 15.5183118 9.8163384 1 NA NA NA NA NA NA
686 137 Santos-Cividanes 2022 Journal of Pest Science Saccharum spp. Saccharum_spp. Perennial Poaceae Sugarcane borer Diatraea saccharalis Diatraea_saccharalis Specialist Boring arthropods Growth / Development 5.00 5.00 16.6000000 16.4500000 1.4310835 1.4534442 1 NA NA NA NA NA NA
687 138 Javvaji 2021 Entomologia Experimentalis et Applicata Oryza sativa Oryza_sativa Annual Poaceae Rice leaffolder Cnaphalocrocis medinalis Cnaphalocrocis_medinalis Specialist Chewing arthropods Feeding efficiency 3.00 3.00 465.2100000 107.2200000 2.7712813 2.1131020 1 NA NA NA NA NA NA
688 138 Javvaji 2021 Entomologia Experimentalis et Applicata Oryza sativa Oryza_sativa Annual Poaceae Rice leaffolder Cnaphalocrocis medinalis Cnaphalocrocis_medinalis Specialist Chewing arthropods Reproduction 3.00 3.00 157.6100000 62.0500000 8.1233183 3.2562555 1 NA NA NA NA NA NA
689 138 Javvaji 2021 Entomologia Experimentalis et Applicata Oryza sativa Oryza_sativa Annual Poaceae Rice leaffolder Cnaphalocrocis medinalis Cnaphalocrocis_medinalis Specialist Chewing arthropods Reproduction 3.00 3.00 178.0100000 92.3600000 20.5940841 5.4213190 1 NA NA NA NA NA NA
690 138 Javvaji 2021 Entomologia Experimentalis et Applicata Oryza sativa Oryza_sativa Annual Poaceae Rice leaffolder Cnaphalocrocis medinalis Cnaphalocrocis_medinalis Specialist Chewing arthropods Abundance / Preference 5.00 5.00 33.7400000 19.7600000 0.8049845 1.2521981 1 NA NA NA NA NA NA
691 138 Javvaji 2021 Entomologia Experimentalis et Applicata Oryza sativa Oryza_sativa Annual Poaceae Rice leaffolder Cnaphalocrocis medinalis Cnaphalocrocis_medinalis Specialist Chewing arthropods Feeding efficiency 3.00 3.00 1.2000000 3.1300000 0.0866025 0.0346410 -1 NA NA NA NA NA NA
692 138 Javvaji 2021 Entomologia Experimentalis et Applicata Oryza sativa Oryza_sativa Annual Poaceae Rice leaffolder Cnaphalocrocis medinalis Cnaphalocrocis_medinalis Specialist Chewing arthropods Feeding efficiency 3.00 3.00 3.7200000 2.2800000 0.1212436 0.1558846 1 NA NA NA NA NA NA
693 138 Javvaji 2021 Entomologia Experimentalis et Applicata Oryza sativa Oryza_sativa Annual Poaceae Rice leaffolder Cnaphalocrocis medinalis Cnaphalocrocis_medinalis Specialist Chewing arthropods Feeding efficiency 3.00 3.00 26.7100000 41.5300000 1.8879354 1.1258330 -1 NA NA NA NA NA NA
694 138 Javvaji 2021 Entomologia Experimentalis et Applicata Oryza sativa Oryza_sativa Annual Poaceae Rice leaffolder Cnaphalocrocis medinalis Cnaphalocrocis_medinalis Specialist Chewing arthropods Growth / Development 3.00 3.00 32.0800000 35.1500000 3.4814221 4.3128065 -1 NA NA NA NA NA NA
695 139 Pereira 2021 Neotropical Entomology Zea mays Zea_mays Annual Poaceae fall armyworm Spodoptera frugiperda Spodoptera_frugiperda Generalist Chewing arthropods Reproduction 15.00 15.00 307.3700000 124.0700000 308.4831235 97.3668013 1 NA NA NA NA NA NA
696 139 Pereira 2021 Neotropical Entomology Zea mays Zea_mays Annual Poaceae fall armyworm Spodoptera frugiperda Spodoptera_frugiperda Generalist Chewing arthropods Mortality / Survivability 13.00 13.00 5.3400000 30.6800000 5.6246600 12.8357625 -1 NA NA NA NA NA NA
697 139 Pereira 2021 Neotropical Entomology Zea mays Zea_mays Annual Poaceae fall armyworm Spodoptera frugiperda Spodoptera_frugiperda Generalist Chewing arthropods Feeding efficiency 10.00 10.00 0.4700000 0.4100000 0.3162278 0.1897367 1 NA NA NA NA NA NA
698 139 Pereira 2021 Neotropical Entomology Zea mays Zea_mays Annual Poaceae fall armyworm Spodoptera frugiperda Spodoptera_frugiperda Generalist Chewing arthropods Growth / Development 13.00 13.00 0.8100000 0.3700000 0.2884441 0.3605551 1 NA NA NA NA NA NA
699 140 Johnson 2022 PROCEEDINGS OF THE ROYAL SOCIETY B-BIOLOGICAL SCIENCES Triticum aestivum Triticum_aestivum Annual Poaceae Cotton bollworm Helicoverpa armigera Helicoverpa_armigera Generalist Chewing arthropods Growth / Development 9.50 9.50 0.6400000 0.3400000 0.2773986 0.2465766 1 NA NA NA NA NA NA
700 140 Johnson 2022 PROCEEDINGS OF THE ROYAL SOCIETY B-BIOLOGICAL SCIENCES Triticum aestivum Triticum_aestivum Annual Poaceae Cotton bollworm Helicoverpa armigera Helicoverpa_armigera Generalist Chewing arthropods Feeding efficiency 7.50 7.50 0.1420000 0.1840000 0.0273861 0.0328634 -1 NA NA NA NA NA NA
701 141 Johnson 2022 Journal of Ecology Brachypodium distachyon Brachypodium_distachyon Annual Poaceae Cotton bollworm Helicoverpa armigera Helicoverpa_armigera Generalist Chewing arthropods Growth / Development 8.00 8.00 0.1670000 0.0490000 0.0644011 0.0446197 1 8 8.000 0.5765000 3.785250 0.1253464 3.800127e-01
702 142 Waterman 2021 Ecology Brachypodium distachyon Brachypodium_distachyon Annual Poaceae Cotton bollworm Helicoverpa armigera Helicoverpa_armigera Generalist Chewing arthropods Feeding efficiency 8.00 9.00 1.6076005 0.3865872 1.1624400 0.3199000 1 8 9.000 0.6171250 2.899667 0.0833124 6.890093e-01
703 142 Waterman 2021 Ecology Brachypodium distachyon Brachypodium_distachyon Annual Poaceae Cotton bollworm Helicoverpa armigera Helicoverpa_armigera Generalist Chewing arthropods Growth / Development 8.00 8.00 0.4062986 0.1885370 0.2449772 0.1784583 1 8 9.000 0.6171250 2.899667 0.0833124 6.890093e-01
704 142 Waterman 2021 Ecology Brachypodium distachyon Brachypodium_distachyon Annual Poaceae Cotton bollworm Helicoverpa armigera Helicoverpa_armigera Generalist Chewing arthropods Feeding efficiency 8.00 8.00 0.0412514 0.0178748 0.0306089 0.0189307 1 8 9.000 0.6171250 2.899667 0.0833124 6.890093e-01
705 142 Waterman 2021 Ecology Brachypodium distachyon Brachypodium_distachyon Annual Poaceae Cotton bollworm Helicoverpa armigera Helicoverpa_armigera Generalist Chewing arthropods Feeding efficiency 4.00 4.00 0.7500000 3.1250000 0.8660254 1.1086779 -1 8 9.000 0.6171250 2.899667 0.0833124 6.890093e-01
706 143 Cibils-Stewart 2021 Functional Ecology Festuca arundinacea Festuca_arundinacea Perennial Poaceae Cotton bollworm Helicoverpa armigera Helicoverpa_armigera Generalist Chewing arthropods Growth / Development 11.00 8.00 1.0030560 0.1512610 0.3172710 0.1739660 1 24 27.000 0.4550000 0.836800 0.2206170 1.361070e-01
707 143 Cibils-Stewart 2021 Functional Ecology Lolium perenne Lolium_perenne Perennial Poaceae Cotton bollworm Helicoverpa armigera Helicoverpa_armigera Generalist Chewing arthropods Growth / Development 11.00 14.00 0.8961040 0.5654260 0.4104300 0.3173730 1 28 31.000 0.6860000 0.675000 0.8523350 1.100070e-01
708 144 Biru 2022 Entomologia Experimentalis et Applicata Brachypodium distachyon Brachypodium_distachyon Annual Poaceae House cricket Acheta domesticus Acheta_domesticus Generalist Chewing arthropods Growth / Development 8.00 10.00 12.6000000 5.7777778 12.1307690 6.7040618 1 NA NA NA NA NA NA
709 144 Biru 2022 Entomologia Experimentalis et Applicata Brachypodium distachyon Brachypodium_distachyon Annual Poaceae House cricket Acheta domesticus Acheta_domesticus Generalist Chewing arthropods Feeding efficiency 10.00 9.00 0.7410000 0.5444444 0.6659238 0.2603897 1 NA NA NA NA NA NA
710 145 Biru 2021 Global Change Biology Brachypodium distachyon Brachypodium_distachyon Annual Poaceae Cotton bollworm Helicoverpa armigera Helicoverpa_armigera Generalist Chewing arthropods Growth / Development 8.00 8.00 2.2519701 1.4111300 0.5786732 0.5361999 1 NA NA NA NA NA NA
711 146 Islam 2022 Ecological Entomology Brachypodium distachyon Brachypodium_distachyon Annual Poaceae Cotton bollworm Helicoverpa armigera Helicoverpa_armigera Generalist Chewing arthropods Growth / Development 10.00 10.00 0.8900000 0.4200000 0.4110961 0.1264911 1 NA NA NA NA NA NA
712 146 Islam 2022 Ecological Entomology Brachypodium distachyon Brachypodium_distachyon Annual Poaceae Bird cherry oat aphid Rhopalosiphum padi Rhopalosiphum_padi Specialist Fluid-feeding arthropods Abundance / Preference 10.00 10.00 126.0000000 173.0000000 27.1007195 61.6644144 1 NA NA NA NA NA NA
713 147 Islam 2023 Journal of Pest Science Brachypodium distachyon Brachypodium_distachyon Annual Poaceae Cotton bollworm Helicoverpa armigera Helicoverpa_armigera Generalist Chewing arthropods Growth / Development 40.00 40.00 1.4400000 0.4600000 0.4427189 0.3162278 1 NA NA NA NA NA NA
714 147 Islam 2023 Journal of Pest Science Brachypodium distachyon Brachypodium_distachyon Annual Poaceae Cotton bollworm Helicoverpa armigera Helicoverpa_armigera Generalist Chewing arthropods Feeding efficiency 20.00 20.00 36.1000000 5.3500000 19.1407419 2.9963311 1 NA NA NA NA NA NA
715 147 Islam 2023 Journal of Pest Science Brachypodium distachyon Brachypodium_distachyon Annual Poaceae Cotton bollworm Helicoverpa armigera Helicoverpa_armigera Generalist Chewing arthropods Growth / Development 20.00 20.00 390.6000000 100.2000000 170.2989372 49.7748732 1 NA NA NA NA NA NA
716 147 Islam 2023 Journal of Pest Science Brachypodium distachyon Brachypodium_distachyon Annual Poaceae Cotton bollworm Helicoverpa armigera Helicoverpa_armigera Generalist Chewing arthropods Growth / Development 20.00 20.00 4.4300000 4.2000000 0.9838699 0.8944272 1 NA NA NA NA NA NA
717 148 Islam 2022 Journal of Pest Science Phaseolus vulgaris Phaseolus_vulgaris Perennial Non-Poaceae Two spotted spider mite Tetranychus urticae Tetranychus_urticae Generalist Cell-feeding arthropods Reproduction 10.00 10.00 277.3000000 183.0000000 79.6577743 36.5243070 1 NA NA NA NA NA NA
718 148 Islam 2022 Journal of Pest Science Phaseolus vulgaris Phaseolus_vulgaris Perennial Non-Poaceae Two spotted spider mite Tetranychus urticae Tetranychus_urticae Generalist Cell-feeding arthropods Abundance / Preference 10.00 10.00 334.9000000 202.8000000 89.3659667 65.3010337 1 NA NA NA NA NA NA
719 148 Islam 2022 Journal of Pest Science Phaseolus vulgaris Phaseolus_vulgaris Perennial Non-Poaceae Two spotted spider mite Tetranychus urticae Tetranychus_urticae Generalist Cell-feeding arthropods Feeding efficiency 10.00 10.00 355.8600000 287.1900000 34.0893532 14.5781000 1 NA NA NA NA NA NA
720 149 Malik 2023 Plant Physiology and Biochemistry Triticum aestivum Triticum_aestivum Annual Poaceae Common grasshopper Oxya grandis Oxya_grandis Generalist Chewing arthropods Feeding efficiency 5.00 5.00 51.0700000 11.8300000 7.8709593 2.9068884 1 5 5.000 4.0800000 12.410000 0.2012461 2.236068e-01
721 150 Abbasi 2020 Arthropod-Plant Interactions Gossypium hirsutum Gossypium_hirsutum Perennial Non-Poaceae Whitefly Bemisia tabaci Bemisia_tabaci Generalist Fluid-feeding arthropods Abundance / Preference 9.00 9.00 76.6300000 56.7300000 11.8200000 11.8200000 1 NA NA NA NA NA NA

A. Effect: ID for effect sizes

B. Study: ID for publications (studies)

C. Author*: First author’s family name

D. Year: The year of publication of the study.

E. Journal*: Journal name

F. Plant_Species: Plant species name

G. Plant_Phylogeny: Plant Latin name for constructing phylogeny

H. Plant_lifespan: Whether the plant is annual or perennial

I. Poaceae_or_Non: Whether the plant is a Poaceae species or not

J. Herbivore_common_name*: Common names for herbivore species

K. Herbivore_Latin_name: Herbivore species’ Latin names

L. Herbivore_Phylogeny: Herbivore Latin name for constructing phylogeny

M. Herbivore_diet_breadth: : Whether a focal herbivore is a generalist or a specialist feeder

N. Feeding_guild: How the herbivore feeds on the plant

O. Performance_parameter*: Broad classification of herbivore performance parameter

P. Nc: Sample size for the control group

Q. Ne: Sample size for the experimental group

R. Xc: Mean value for the control group

S. Xe: Mean value for the experimental group

T. Dev_c: Standard deviation for the control group

U. Dev_e: Standard deviation for the experimental group

V. Negative: the vector of 1 or -1 which indicate if corresponding effect sizes should be reverse in its sign

W. Si_Nc: Sample size for the control group (for silicon uptake)

X. Si_Ne: Sample size for the experimental group (for silicon uptake)

Y. Si_Xc: Mean value for the control group (for silicon uptake)

Z. Si_Xe: Mean value for the experimental group (for silicon uptake)

AA. Si_Dev_c: Standard deviation for the control group (for silicon uptake)

AB. Si_Dev_e: Standard deviation for the experimental group (for silicon uptake)

Table of sample sizes

# selecting out variables, which we used for our analysis
dat <- full_data %>% select(-Author, -Journal, -Herbivore_common_name, -Performance_parameter)


# making a table of sample sizes for different variables
dat %>%
  summarise(
    `Effect sizes` = n_distinct(Effect),
    Studies = n_distinct(Study),
    `Plant species` = n_distinct(Plant_Species),
    `Herbivore species` = n_distinct(Herbivore_Latin_name),
    `Effect sizes (Silicon uptake)` = n_distinct(Effect[!is.na(Si_Nc)]),
    `Studies (Silicon uptake)` = n_distinct(Study[!is.na(Si_Nc)]),
    `Annual plants (Plant_lifespan)` = sum(Plant_lifespan == "Annual", na.rm = T), # na.rm is important when NA exists
    `Perennial plants (Plant_lifespan)` = sum(Plant_lifespan == "Perennial", na.rm = T),
    `Poaceae (Poaceae_or_Non)` = sum(Poaceae_or_Non == "Poaceae", na.rm = T),
    `Non-Poaceae (Poaceae_or_Non)` = sum(Poaceae_or_Non == "Non-Poaceae", na.rm = T),
    `Specialist (Herbivore_diet_breadth)` = sum(Herbivore_diet_breadth == "Specialist", na.rm = T),
    `Generalist (Herbivore_diet_breadth)` = sum(Herbivore_diet_breadth == "Generalist", na.rm = T),
    `Boring arthropods (Feeding_guild)` = sum(Feeding_guild == "Boring arthropods", na.rm = T),
    `Cell-feeding arthropods (Feeding_guild)` = sum(Feeding_guild == "Cell-feeding arthropods", na.rm = T),
    `Chewing arthropods (Feeding_guild)` = sum(Feeding_guild == "Chewing arthropods", na.rm = T),
    `Fluid-feeding arthropods (Feeding_guild)` = sum(Feeding_guild == "Fluid-feeding arthropods", na.rm = T),
    `Leaf-mining arthropods (Feeding_guild)` = sum(Feeding_guild == "Leaf-mining arthropods", na.rm = T),
    `Mammalian chewers (Feeding_guild)` = sum(Feeding_guild == "Mammalian chewers", na.rm = T),
    `Rasping/grazing invertebrates (Feeding_guild)` = sum(Feeding_guild == "Rasping / grazing invertebrates", na.rm = T)
  ) -> n_table1

# transposing the table and creating that table and adding a correct number of the papers for `Combined`
# n_authors <- n_distinct(dat$authors) # the total number of papers
n_table2 <- t(n_table1)
colnames(n_table2) <- "n (sample size)"
n_table2 %>%
  as_tibble(rownames = "Number") %>%
  rename("Number of" = "Number") %>%
  kable() %>% kable_styling("striped", position = "left") %>%
  scroll_box(width = "60%", height = "300px")
Number of n (sample size)
Effect sizes 721
Studies 150
Plant species 47
Herbivore species 62
Effect sizes (Silicon uptake) 467
Studies (Silicon uptake) 89
Annual plants (Plant_lifespan) 466
Perennial plants (Plant_lifespan) 255
Poaceae (Poaceae_or_Non) 574
Non-Poaceae (Poaceae_or_Non) 147
Specialist (Herbivore_diet_breadth) 408
Generalist (Herbivore_diet_breadth) 313
Boring arthropods (Feeding_guild) 77
Cell-feeding arthropods (Feeding_guild) 12
Chewing arthropods (Feeding_guild) 331
Fluid-feeding arthropods (Feeding_guild) 269
Leaf-mining arthropods (Feeding_guild) 1
Mammalian chewers (Feeding_guild) 29
Rasping/grazing invertebrates (Feeding_guild) 2
#pander(split.cell = 40, split.table = Inf) # not as nice as kable

Missing data patterns

The only missing values were studies that reported herbivore performance without quantifying plant silicon content.

# summering missingness in our dataset
# funs(sum(is.na(.))) needs to be in funs as is.na has "." = each column
dat %>% summarise_all(~sum(is.na(.))) %>% # map(~sum(is.na(.)) # this is an alterantive way 
  t() %>% as_tibble(rownames = "Variable") %>% 
  rename("Number of missing data (n)" = "V1") %>% 
  #pander(split.cell = 40, split.table = Inf)
  kable() %>% kable_styling("striped", position = "left") %>%
  scroll_box(width = "60%", height = "300px")
Variable Number of missing data (n)
Effect 0
Study 0
Year 0
Plant_Species 0
Plant_Phylogeny 0
Plant_lifespan 0
Poaceae_or_Non 0
Herbivore_Latin_name 0
Herbivore_Phylogeny 0
Herbivore_diet_breadth 0
Feeding_guild 0
Nc 0
Ne 0
Xc 0
Xe 0
Dev_c 0
Dev_e 0
Negative 0
Si_Nc 254
Si_Ne 254
Si_Xc 254
Si_Xe 254
Si_Dev_c 254
Si_Dev_e 254

Meta-analysis: the Effect of Silicon on Herbivores

Choosing effect size statistics: checking the mean-variance relationship

We checked the mean-variance relationship in our data. If there is such a relationship, it is preferable to use the logarithm of response ratio, lnRR (Hedges, Gurevitch, and Curtis 1999) rather than standardized mean difference, SMD (often known as Cohen’s d or Hedges’ g) because the latter assumes the homogeneity of variance (see below).

Figure E1
# A)

cor_1 <- round(with(dat,cor(log(Xe), log(Dev_e))), 3)
mod_1 <- lm(log(Dev_e) ~ log(Xe), data = dat)

plot_exp <- ggplot(dat, aes(log(Xe), log(Dev_e))) + geom_point() +
  geom_smooth(method = "lm") + 
  labs(x = "ln(mean[experiment])", 
       y = "ln(SD[experiment])", 
       title = "Herbivore performance (experimental)") +
  xlim(-9, 9) + ylim(-9, 9) + 
  annotate('text',x = 7.5, y = -8, label = paste("r = ", cor_1)) + 
  annotate('text',x = 7.5, y = -6, label = paste("b = ", round(mod_1$coefficients[[2]],3)))

# B)
cor_2 <- round(with(dat,cor(log(Xc), log(Dev_c))), 3)
mod_2 <- lm(log(Dev_c) ~ log(Xc), data = dat)

plot_con <- ggplot(dat, aes(log(Xc), log(Dev_c))) + geom_point() +
  geom_smooth(method = "lm") + 
  labs(x = "ln(mean[control])", 
       y = "ln(SD[control])",
       title = "Herbivore performance (control)")+
  xlim(-9, 9) + ylim(-9, 9) + 
  annotate('text',x = 7.5, y = -8, label = paste("r = ", cor_2)) + 
  annotate('text',x = 7.5, y = -6, label = paste("b = ", round(mod_2$coefficients[[2]],3)))

# c)
cor_3 <- round(with(dat,cor.test(log(Si_Xe), log(Si_Dev_e)))$estimate[[1]], 3)
mod_3 <- lm(log(Si_Dev_e) ~ log(Si_Xe), data = dat)

Si_plot_exp <- ggplot(dat, aes(log(Si_Xe), log(Si_Dev_e))) + geom_point() +
  geom_smooth(method = "lm") + 
  labs(x = "ln(mean[experiment])", 
       y = "ln(SD[experiment])",
       title = "Silicon content (experimental)") +
  xlim(-9, 9) + ylim(-9, 9) + 
  annotate('text',x = 7.5, y = -8, label = paste("r = ", cor_3)) + 
  annotate('text',x = 7.5, y = -6, label = paste("b = ", round(mod_3$coefficients[[2]],3)))

# D)
cor_4 <- round(with(dat,cor.test(log(Si_Xc), log(Si_Dev_c)))$estimate[[1]], 3)
mod_4 <- lm(log(Si_Dev_c) ~ log(Si_Xc), data = dat)

Si_plot_con <- ggplot(dat, aes(log(Si_Xc), log(Si_Dev_c))) + geom_point() +
  geom_smooth(method = "lm") + 
  labs(x = "ln(mean[control])", 
       y = "ln(SD[control])",
       title = "Silicon content (control)")+
  xlim(-9, 9) + ylim(-9, 9) + 
  annotate('text',x = 7.5, y = -8, label = paste("r = ", cor_4)) +
  annotate('text',x = 7.5, y = -6, label = paste("b = ", round(mod_4$coefficients[[2]],3)))

Si_mean_SD <- Si_plot_exp + Si_plot_con +
  plot_annotation(tag_levels = "A", tag_suffix = ")")

mean_SD <- (plot_exp | plot_con) / (Si_plot_exp | Si_plot_con) +
  plot_annotation(tag_levels = "A", tag_suffix = ")")

mean_SD

# saving the figure for Scott
# ggsave(here("fig", "mean_SD.png"),
#        width = 20,
#        height = 20,
#        units = "cm")

# getting correlations

# Checking the slopes 

Figure E1: Mean-variance relationships for (A and B) herbivore performance and (C and D) silicon content in experimental (i.e. Si supplemented) and control plants.

Calculating effect sizes

# calculating effect size - think about turning into function
dat <- escalc(measure = "ROM", m1i = Xe, m2i = Xc, sd1i = Dev_e, sd2i = Dev_c, n1i = Nc, n2i = Ne, data = dat, var.names = c("lnRR", "varlnRR"))

dat <- escalc(measure = "VR", m1i = Xe, m2i = Xc, sd1i = Dev_e, sd2i = Dev_c, n1i = Nc, n2i = Ne, data = dat, var.names = c("lnVR", "varlnVR"))


# for Silicon accumulation
dat <- escalc(
  measure = "ROM", m1i = Si_Xe, m2i = Si_Xc, sd1i = Si_Dev_c, sd2i = Si_Dev_c, n1i = Si_Nc, n2i = Si_Ne,
  data = dat, var.names = c("Si_lnRR", "Si_varlnRR")
)

dat <- escalc(
  measure = "VR", m1i = Si_Xe, m2i = Si_Xc, sd1i = Si_Dev_e, sd2i = Si_Dev_c, n1i = Si_Nc, n2i = Si_Ne,
  data = dat, var.names = c("Si_lnVR", "Si_varlnVR")
)


# flipping the sign for effect sizes (lnRR not lnVR) when small means improvement (better)
dat %>%
  mutate(lnRR = Negative * lnRR) %>%
  as_tibble() %>% data.frame -> dat

Phylogenetic tree and correlation matrix

Figure E2
herbiv_tree <- read.tree(file = here("phylo/plants_herbivtree_binary_JMW.tre"))
plant_tree <- read.tree(file = here("phylo/plants_planttree_binary.tre"))
#plot(herbiv_tree)
#plot(plant_tree)
htree <- compute.brlen(herbiv_tree)
ptree <- compute.brlen(plant_tree)
#is.ultrametric(htree) 
#is.ultrametric(ptree) 

par(mfrow = c(1,2))
plot(ptree)
mtext("Plant phylogeny", side = 1, cex = 1.5, line = 1)
plot(htree)
mtext("Herbivore phylogeny", side = 1,  cex = 1.5, line =1)

cor_htree <- vcv(htree,corr=T) # correlation matrix for Herbivores
cor_ptree <- vcv(ptree,corr=T) # correlation matrix for Plants
# saving for Scott 
# pdf(here("fig", "tree.pdf"), height=15, width=12)
# plot(tree)
# dev.off()  

Figure E2: Phylogenetic trees for plants (left panel) and herbviores (right panel).

Meta-analytic models: lnRR and lnVR

levels(dat$Plant_Phylogeny)[levels(dat$Plant_Phylogeny) == "Saccharum_officinarum"] <- "Saccharum_spp."
levels(dat$Herbivore_Phylogeny)[levels(dat$Herbivore_Phylogeny) == "Sesamia_spp."] <- "Sesamia_inferens"
levels(dat$Herbivore_Phylogeny)[levels(dat$Herbivore_Phylogeny) == "Liriomyza_spp."] <- "Liriomyza_puella"
levels(dat$Herbivore_Phylogeny)[levels(dat$Herbivore_Phylogeny) == "Chlosyne_lacinia_saundersii"] <- "Chlosyne_lacinia"
levels(dat$Herbivore_Phylogeny)[levels(dat$Herbivore_Phylogeny) == "Deroceras_reticulatrum"] <- "Deroceras_reticulatum"
levels(dat$Herbivore_Phylogeny)[levels(dat$Herbivore_Phylogeny) == "Macrosiphoniellas_anborni"] <- "Macrosiphoniella_sanborni"
levels(dat$Herbivore_Phylogeny)[levels(dat$Herbivore_Phylogeny) == "Pseudaletia_unipuncta"] <- "Mythimna_unipuncta"

#lnRR
# matrix for controlling for correlated errors
VCV_lnRR <- make_VCV_matrix(dat, V = "varlnRR", cluster = "Study", obs = "Effect")

ma_lnRR <- rma.mv(
  yi = lnRR,
  V = VCV_lnRR,
  random = list(~1|Plant_Phylogeny, ~1|Plant_Species, 
                ~1|Herbivore_Phylogeny, ~1|Herbivore_Latin_name, 
                ~1|Study, ~1|Effect),
  R= list(Plant_Phylogeny = cor_ptree, Herbivore_Phylogeny = cor_htree),
  test = "t",
  data = dat)
 
# lnVR
# matrix for controlling for correlated errors
VCV_lnVR <- make_VCV_matrix(dat, V = "varlnVR", cluster = "Study", obs = "Effect")

ma_lnVR <- rma.mv(
  yi = lnVR,
  V = VCV_lnVR,
  random = list(~1|Plant_Phylogeny, ~1|Plant_Species, 
                ~1|Herbivore_Phylogeny, ~1|Herbivore_Latin_name, 
                ~1|Study, ~1|Effect),
  R= list(Plant_Phylogeny = cor_ptree, Herbivore_Phylogeny = cor_htree),
  test = "t",
  data = dat,
  control=list(optimizer="optim", optmethod="BFGS"))

# control=list(optimizer="optim", optmethod="Nelder-Mead")
Table E1

Table E1: Overall effects (meta-analytic means), 95% confidence intervals (CIs) and 95% prediction intervals (95%) (Nakagawa et al. 2020).

# getting a table of CI and PI
tma_lnRR <- get_pred1(ma_lnRR, mod = "Int")
tma_lnVR <- get_pred1(ma_lnVR, mod = "Int")

# Drawing a table for meta-analyses
tibble(`Effect size` = c("lnRR","lnVR"), 
       `Overall mean` = c(tma_lnRR$estimate, tma_lnVR$estimate), 
       `Lower CI [0.025]` = c(tma_lnRR$lowerCL, tma_lnVR$lowerCL), 
       `Upper CI [0.975]` = c(tma_lnRR$upperCL,tma_lnVR$upperCL),
       `P value`          = c(tma_lnRR$pval, tma_lnVR$pval),
       `Lower PI [0.025]` = c(tma_lnRR$lowerPR, tma_lnVR$lowerPR), 
       `Upper PI [0.975]` = c(tma_lnRR$upperPR, tma_lnVR$upperPR)) %>% 
  kable("html", digits = 3) %>% 
  kable_styling("striped", position = "left")
Effect size Overall mean Lower CI [0.025] Upper CI [0.975] P value Lower PI [0.025] Upper PI [0.975]
lnRR -0.402 -0.593 -0.210 0.000 -1.325 0.521
lnVR -0.081 -0.175 0.012 0.088 -1.235 1.072
Table E2

Table E2: Variance components (V) and heterogeneity, I2 (I2) (Higgins et al. 2003) from the metafor model Note that in these models, I2[total] is the sum of variance components of Plant_Phylogeny, Plant_Species, Herbivore_Phylogeny, Study and Effect – [see (Nakagawa and Santos 2012; Senior et al. 2016)].

# getting I2
I2_lnRR <- i2_ml(ma_lnRR)
I2_lnVR <- i2_ml(ma_lnVR)

# getting sigma2 = V 
V_lnRR <- c(sum(ma_lnRR$sigma2), ma_lnRR$sigma2)
V_lnVR <-c(sum(ma_lnVR$sigma2), ma_lnVR$sigma2)

# Drawing a table for variance components V and I2
tibble(`Effect size` = c("lnRR (*I*^2^)","lnVR (*I*^2^)", "lnRR (*V*)", "lnVR (*V*)"), 
       Total     = c(I2_lnRR[1], I2_lnVR[1], V_lnRR[1], V_lnVR[1]), 
       `Plant phylogeny` = c(I2_lnRR[2], I2_lnVR[2],V_lnRR[2], V_lnVR[2]), 
       `Plant species`   = c(I2_lnRR[3], I2_lnVR[3], V_lnRR[3],V_lnVR[3]),
       `Herbivore phylogeny` = c(I2_lnRR[4], I2_lnVR[4], V_lnRR[4], V_lnVR[4]), 
       `Herbivore species`   = c(I2_lnRR[5], I2_lnVR[5], V_lnRR[5], V_lnVR[5]),
       Study     = c(I2_lnRR[6], I2_lnVR[6], V_lnRR[6],  V_lnVR[6]), 
       `Effect (within-study)` = c(I2_lnRR[7], I2_lnVR[7], V_lnRR[7],  V_lnVR[7]),
       ) %>% 
  kable("html", digits = 3) %>% 
  kable_styling("striped", position = "left")
Effect size Total Plant phylogeny Plant species Herbivore phylogeny Herbivore species Study Effect (within-study)
lnRR (I2) 99.042 1.652 0 11.219 13.415 25.283 47.473
lnVR (I2) 80.838 0.000 0 0.000 10.109 0.001 70.728
lnRR (V) 0.212 0.004 0 0.024 0.029 0.054 0.101
lnVR (V) 0.343 0.000 0 0.000 0.043 0.000 0.300
Figure 2A-B
## Figure 1A
p1 <- orchard_plot(ma_lnRR, data = dat, mod="1",group= 'Study', xlab = "log(Response Ratio) (lnRR)", alpha = 0.2, angle = 45) +
    scale_fill_manual(values="blue") +
  scale_colour_manual(values="blue") +
  annotate(geom="text", x=0.8, y=1.5, label="p < 0.001",
              color="black")


## Figure 1B
p2 <- orchard_plot(ma_lnVR, data = dat, mod="1",group= 'Study', xlab = "log(Variability Ratio) (lnVR)", alpha = 0.2, angle = 45) +
    scale_fill_manual(values="green") +
  scale_colour_manual(values="green") +
  annotate(geom="text", x=0.8, y=1.5, label="p = 0.106",
              color="black")


#ggsave(here("fig", "Overall.png"))

Selecting random effects for meta-regression

#lnRR

ma_lnRR2 <- rma.mv(
  yi = lnRR,
  V = VCV_lnRR,
  random = list( ~1|Plant_Species, 
                ~1|Herbivore_Phylogeny, ~1|Herbivore_Latin_name, 
                ~1|Study, ~1|Effect),
  R= list(Herbivore_Phylogeny = cor_htree),
  method = "ML",
  test = "t",
  data = dat)

# we take this model
ma_lnRR3 <- rma.mv(
  yi = lnRR,
  V = VCV_lnRR,
  random = list(~1|Herbivore_Phylogeny, ~1|Herbivore_Latin_name, 
                ~1|Study, ~1|Effect),
  R= list(Herbivore_Phylogeny = cor_htree),
  method = "ML",
  test = "t",
  data = dat)

ma_lnRR4 <- rma.mv(
  yi = lnRR,
  V = VCV_lnRR,
  random = list(~1|Herbivore_Phylogeny,
                ~1|Study, ~1|Effect),
  R= list(Herbivore_Phylogeny = cor_htree),
  method = "ML",
  test = "t",
  data = dat)

# TODO - these arent running due to estimation differences between models, do we need to fix?
#pval_lnRR1 <- round(anova(ma_lnRR, ma_lnRR2)$pval, 3)
#pval_lnRR2 <- round(anova(ma_lnRR2, ma_lnRR3)$pval, 3)
#pval_lnRR3 <- round(anova(ma_lnRR3, ma_lnRR4)$pval, 3)


#lnVR

ma_lnVR2 <- rma.mv(
  yi = lnVR,
  V = VCV_lnVR,
  random = list( ~1|Plant_Species, 
                ~1|Herbivore_Phylogeny, ~1|Herbivore_Latin_name, 
                ~1|Study, ~1|Effect),
  R= list(Herbivore_Phylogeny = cor_htree),
  method = "ML",
  test = "t",
  data = dat)

# we take this model
ma_lnVR3 <- rma.mv(
  yi = lnVR,
  V = VCV_lnVR,
  random = list(~1|Herbivore_Phylogeny, ~1|Herbivore_Latin_name, 
                ~1|Study, ~1|Effect),
  R= list(Herbivore_Phylogeny = cor_htree),
  method = "ML",
  test = "t",
  data = dat)

ma_lnVR4 <- rma.mv(
  yi = lnVR,
  V = VCV_lnVR,
  random = list(~1|Herbivore_Phylogeny,
                ~1|Study, ~1|Effect),
  R= list(Herbivore_Phylogeny = cor_htree),
  method = "ML",
  test = "t",
  data = dat)

#pval_lnVR1 <- round(anova(ma_lnVR, ma_lnVR2)$pval, 3)
#pval_lnVR2 <- round(anova(ma_lnVR2, ma_lnVR3)$pval, 3)
#pval_lnVR3 <- round(anova(ma_lnVR3, ma_lnVR4)$pval, 3)

Based on 3 criteria: 1) the amounts of variance each random effects explain, 2) the results of log-likelihood ratio tests, and 3) retaining some clustering factor(s) regardless of its effect, we decided to keep Herbivore_Phylogeny, Herbivore_Latin_name, Study, Effect for lnRR and lnVR.

Meta-analysis of Silicon Content

# creating the smaller dataset - only one value per 
sdat <- dat %>% group_by(Study) %>% 
  summarise(Si_lnRR = first(Si_lnRR), 
            Si_varlnRR = first(Si_varlnRR), 
            Si_lnVR = first(Si_lnVR), 
            Si_varlnVR = first(Si_varlnVR),
            Plant_Phylogeny = first(Plant_Phylogeny),
            Plant_Species = first(Plant_Species)
  )

#lnRR
ma_lnRR_Si <- rma.mv(
  yi = Si_lnRR,
  V = Si_varlnRR,
  random = list(~1|Plant_Phylogeny, ~1|Plant_Species, ~1|Study),
  R= list(Phylogeny = cor_ptree),
  test = "t",
  data = sdat)
#summary(ma_lnRR_Si)

#lnVR 
ma_lnVR_Si <- rma.mv(
  yi = Si_lnVR,
  V = Si_varlnVR,
  random = list(~1|Plant_Phylogeny, ~1|Plant_Species, ~1|Study),
  R= list(Phylogeny = cor_ptree),
  est = "t",
  data = sdat)
#summary(ma_lnCVR_Si)
Table E3

Table E3: Overall effects (meta-analytic means), 95% confidence intervals (CIs) and 95% prediction intervals (95%).

# getting a table of CI and PI
tma_lnRR_Si <- get_pred1(ma_lnRR_Si, mod = "Int")
tma_lnVR_Si <- get_pred1(ma_lnVR_Si, mod = "Int")

# Drawing a table for meta-analyses
tibble(`Effect size` = c("lnRR", "lnVR"), 
       `Overall mean` = c(tma_lnRR_Si$estimate, tma_lnVR_Si$estimate), 
       `Lower CI [0.025]` = c(tma_lnRR_Si$lowerCL, tma_lnVR_Si$lowerCL), 
       `Upper CI [0.975]` = c(tma_lnRR_Si$upperCL, tma_lnVR_Si$upperCL),
       `P value`         = c(tma_lnRR_Si$pval, tma_lnVR_Si$pval),
       `Lower PI [0.025]` = c(tma_lnRR_Si$lowerPR, tma_lnVR_Si$lowerPR), 
       `Upper PI [0.975]` = c(tma_lnRR_Si$upperPR, tma_lnVR_Si$upperPR)
       ) %>% 
  kable("html", digits = 3) %>% 
  kable_styling("striped", position = "left")
Effect size Overall mean Lower CI [0.025] Upper CI [0.975] P value Lower PI [0.025] Upper PI [0.975]
lnRR 0.727 0.557 0.898 0 -0.514 1.969
lnVR 0.386 0.198 0.573 0 -1.178 1.949
Table E4

Table E4: Variance components (V) and heterogeneity, I2 (I2) (Higgins et al. 2003) from the metafor model Note that in these models, I2[total] is the sum of variance components of Plant phylogeny, Plant species and Study.

# getting I2
I2_lnRR_Si <- i2_ml(ma_lnRR_Si)
I2_lnVR_Si <- i2_ml(ma_lnVR_Si)

# getting sigma2 = V 
V_lnRR_Si <- c(sum(ma_lnRR_Si$sigma2), ma_lnRR_Si$sigma2)
V_lnVR_Si <-c(sum(ma_lnVR_Si$sigma2), ma_lnVR_Si$sigma2)
# Drawing a table for variance components V and I2
tibble(`Effect size` = c("lnRR (*I*^2^)", "lnVR (*I*^2^)", "lnRR (*V*)", "lnVR (*V*)"), 
       Total     = c(I2_lnRR_Si[1],I2_lnVR_Si[1],  V_lnRR_Si[1],  V_lnVR_Si[1]), 
       `Plant phylogeny` = c(I2_lnRR_Si[2],  I2_lnVR_Si[2], V_lnRR_Si[2], V_lnVR_Si[2]), 
       `Plant species`   = c(I2_lnRR_Si[3], I2_lnVR_Si[3], V_lnRR_Si[3],  V_lnVR_Si[3]), 
       Study     = c(I2_lnRR_Si[4], I2_lnVR_Si[4], V_lnRR_Si[4], V_lnVR_Si[4])
       ) %>% 
  kable("html", digits = 3) %>% 
  kable_styling("striped", position = "left")
Effect size Total Plant phylogeny Plant species Study
lnRR (I2) 99.955 14.732 0 85.223
lnVR (I2) 84.092 0.000 0 84.092
lnRR (V) 0.383 0.056 0 0.326
lnVR (V) 0.627 0.000 0 0.627
Figure 2C-D
## Remove NAs for orchardplot to work
sdat2<-na.omit(sdat)

## Figure 1C
p4 <- orchard_plot(ma_lnRR_Si, data = sdat2, mod="1",group= 'Study', xlab = "log(Response Ratio) (lnRR)", alpha = 0.2, angle = 45) +
    scale_fill_manual(values="blue") +
  scale_colour_manual(values="blue") +
  annotate(geom="text", x=0.8, y=1.5, label="p < 0.001",
              color="black")
## Figure 1D
p5 <- orchard_plot(ma_lnVR_Si, data = sdat2, mod="1",group= 'Study', xlab = "log(Variability Ratio) (lnVR)", alpha = 0.2, angle = 45) +
    scale_fill_manual(values="green") +
  scale_colour_manual(values="green") +
  annotate(geom="text", x=0.8, y=1.5, label="p < 0.001",
              color="black")

#ggsave(here("fig", "Overall_Silicon.png"))

Bivariate Meta-analysis: Testing for Correlations Between Silicon Content and Herbivore Performance

We conducted bivariate meta-analytic models for lnRR (mean effect size) and lnVR (absolute variance) to determine any relationship between silicon content and herbivore performance. We expected that these two effects will be negatively correlated (i.e. more plant silicon results in worse herbivore performance); we did not have any expectation for the corresponding lnVR pairings.

For this complex model, we only considered Study as a random effect, excluding Species and Phylogeny.

# turning data into a long format to ran bivariate models
dat %>%
  select(Effect, Study, Year, Feeding_guild,
         lnRR, varlnRR,
         lnVR, varlnVR) -> dat2 # main effects
dat %>%
  select(Effect, Study, Year, Feeding_guild,
         lnRR = Si_lnRR, varlnRR = Si_varlnRR, 
         lnVR = Si_lnVR, varlnVR = Si_varlnVR) -> dat3 # silicon uptakes

# long format
ldat <- rbind(dat2, dat3) %>% 
  mutate(Number = 1:(2*nrow(dat)), 
         RR = rep(c("lnRR", "Si_lnRR"), each = nrow(dat)), 
         VR = rep(c("lnVR", "Si_lnVR"), each = nrow(dat)))

# lnRR
bi_ma_lnRR <- rma.mv(yi = lnRR, V = varlnRR, 
               mods = ~ RR - 1, 
               random =list(~ RR | Study), struct="UN", data=ldat) # only takes 2 random factor
#summary(bi_ma_lnRR)

#cor_lnRR <- round(bi_ma_lnRR$rho, 3)
#saveRDS(bi_ma_lnRR, file = here("Rdata", "bi_ma_lnRR.rds"))

# takes very long to run
ci_cor_lnRR <- confint(bi_ma_lnRR)
saveRDS(ci_cor_lnRR, file = here("Rdata", "ci_cor_lnRR.rds"))

# lnVR
bi_ma_lnVR <- rma.mv(yi = lnVR, V = varlnVR, 
               mods = ~ VR - 1, 
               random =list(~ VR | Study), struct="UN", data=ldat) # only takes 2 random factor
#summary(bi_ma_lnVR)
#cor_lnRR <- round(bi_ma_lnRR$rho, 3)
#saveRDS(bi_ma_lnVR, file = here("Rdata", "bi_ma_lnVR.rds"))

ci_cor_lnVR <- confint(bi_ma_lnVR)
saveRDS(ci_cor_lnVR, file = here("Rdata", "ci_cor_lnVR.rds"))
# we probably rewrite here 

# bivariate correlations
ci_cor_lnRR <- readRDS(file = here("Rdata", "ci_cor_lnRR.rds"))
ci_cor_lnVR <- readRDS(file = here("Rdata", "ci_cor_lnVR.rds"))

We found a correlation of -0.14 (95% CI = [-0.371 , 0.109]) between the two lnRRs, and a correlation of -0.129 (95% CI = [-0.389 , 0.154]) between the two lnVRs.

Run above correlations but only with chewing arthropods

chew_ldat<-subset(ldat, Feeding_guild == 'Chewing arthropods')

# lnRR
bi_ma_lnRR_chew <- rma.mv(yi = lnRR, V = varlnRR, 
               mods = ~ RR - 1, 
               random =list(~ RR | Study), struct="UN", data=chew_ldat) # only takes 2 random factor

# takes very long to run
ci_cor_lnRR_chew <- confint(bi_ma_lnRR_chew)
saveRDS(ci_cor_lnRR_chew, file = here("Rdata", "ci_cor_lnRR_chew.rds"))

#lnVR
bi_ma_lnVR_chew <- rma.mv(yi = lnVR, V = varlnVR, 
               mods = ~ VR - 1, 
               random =list(~ VR | Study), struct="UN", data=chew_ldat) # only takes 2 random factor
#summary(bi_ma_lnVR)
#cor_lnRR <- round(bi_ma_lnRR$rho, 3)
#saveRDS(bi_ma_lnVR, file = here("Rdata", "bi_ma_lnVR.rds"))

ci_cor_lnVR_chew <- confint(bi_ma_lnVR_chew)
saveRDS(ci_cor_lnVR_chew, file = here("Rdata", "ci_cor_lnVR_chew.rds"))
# bivariate correlations chewing arthropods only
ci_cor_lnRR_chew <- readRDS(file = here("Rdata", "ci_cor_lnRR_chew.rds"))
ci_cor_lnVR_chew <- readRDS(file = here("Rdata", "ci_cor_lnVR_chew.rds"))

We found a correlation of -0.175 (95% CI = [-0.5 , 0.199]) between the two lnRRs, and a correlation of 0.113 (95% CI = [-0.374 , 0.543]) between the two lnVRs.

Meta-regression: the Effect of Silicon and Herbivore Performance

Univariate (uni-predictor) analyses

We ran a univariate meta-regression model for each of the following moderators: 1) Poaceae_or_Non, 2) Plant_lifespan, 3) Herbivore_diet_breadth, and 4) Feeding_guild (see the meta-data above).

Plant groups: Poaceae vs. Non-Poaceae

Mean change: lnRR

# reordering
dat$Poaceae_or_Non <- factor(dat$Poaceae_or_Non,
                            levels = rev(c("Poaceae", "Non-Poaceae")),
                            labels = rev(c("Poaceae", "Non-Poaceae")))

# meta-regression: multiple intercepts
mr_mdcot_lnRR1 <- rma.mv(
  yi = lnRR,
  V = VCV_lnRR,
  mods = ~ Poaceae_or_Non - 1,
  test = "t",
  random = list(~1|Herbivore_Phylogeny, ~1|Herbivore_Latin_name, 
                ~1|Study, ~1|Effect),
  data = dat
)

# getting marginal R2
r2_mr_mdcot_lnRR1 <- r2_ml(mr_mdcot_lnRR1)

# getting the level names out
level_names <- levels(dat$Poaceae_or_Non)

# helper function to run metafor meta-regression
run_rma <- function(name) {
  rma.mv(yi = lnRR, 
         V = VCV_lnRR,
         mods = ~ relevel(Poaceae_or_Non, ref = name), 
         test = "t",
         random = list(~1|Herbivore_Phylogeny, ~1|Herbivore_Latin_name, 
                       ~1|Study, ~1|Effect),
         data = dat)
}

# results of meta-regression including all contrast results; taking the last level out ([-length(level_names)])
mr_mdcot_lnRR <- map(level_names[-length(level_names)], run_rma)
Table E5

Table E5: Regression coefficients (estimate), 95% confidence intervals (CIs), P values, and variance explained, R2[marginal] (R2) = 2.06% from the meta-regression of lnRR with Poaceae_or_Non_Poaceae.

# getting estimates
res_mr_mdcot_lnRR1 <- get_pred1(mr_mdcot_lnRR1, mod = "Poaceae_or_Non")
#res_mr_annuality_lnRR2 <- map(mr_annuality_lnRR, ~ get_est2(.x, mod = "Annuality"))
res_mr_mdcot_lnRR <- map(mr_mdcot_lnRR, ~ get_pred2(.x, mod = "Poaceae_or_Non"))

# a list of the numbers to take out unnecessary contrasts
contra_list <- Map(seq, from=1, to=1:1)

# you need to flatten twice: first to make it a list and make it a vector
# I guess we can make it a loop (or vectorise)
res_mr_mdcot_lnRR2 <- map2_dfr(res_mr_mdcot_lnRR, contra_list, ~.x[-(.y), ]) 

# creating a table
mr_results(res_mr_mdcot_lnRR1, res_mr_mdcot_lnRR2) %>% 
  kable("html",  digits = 3) %>%
  kable_styling("striped", position = "left") %>%
  scroll_box(width = "100%")
Fixed effect Estimate Lower CI [0.025] Upper CI [0.975] P value Lower PI [0.025] Upper PI [0.975]
Non-Poaceae -0.219 -0.363 -0.076 0.003 -1.113 0.674
Poaceae -0.381 -0.479 -0.283 0.000 -1.268 0.506
Non-Poaceae-Poaceae -0.162 -0.322 -0.001 0.049 -1.058 0.735

Change in SD: lnVR

# meta-regression: multiple intercepts
mr_mdcot_lnVR1 <- rma.mv(
  yi = lnVR,
  V = VCV_lnVR,
  mods = ~ Poaceae_or_Non - 1,
  test = "t",
  random = list(~1|Herbivore_Phylogeny, ~1|Herbivore_Latin_name, 
                ~1|Study, ~1|Effect),
  data = dat
)

# getting marginal R2
r2_mr_mdcot_lnVR1 <- r2_ml(mr_mdcot_lnVR1)

# getting the level names out
level_names <- levels(dat$Poaceae_or_Non)

# helper function to run metafor meta-regression
run_rma <- function(name) {
  rma.mv(yi = lnVR, 
         V = VCV_lnVR,
         mods = ~ relevel(Poaceae_or_Non, ref = name), 
         test = "t",
         random = list(~1|Herbivore_Phylogeny, ~1|Herbivore_Latin_name, 
                       ~1|Study, ~1|Effect),
         data = dat)
}

# results of meta-regression including all contrast results; taking the last level out ([-length(level_names)])
mr_mdcot_lnVR <- map(level_names[-length(level_names)], run_rma)
Table E6

Table E6: Regression coefficients (estimate), 95% confidence intervals (CIs), P values, and variance explained, R2[marginal] (R2) = 0.78% from the meta-regression of lnVR with Poaceae_or_Non_Poaceae.

# getting estimates
res_mr_mdcot_lnVR1 <- get_pred1(mr_mdcot_lnVR1, mod = "Poaceae_or_Non")
#res_mr_annuality_lnRR2 <- map(mr_annuality_lnRR, ~ get_est2(.x, mod = "Annuality"))
res_mr_mdcot_lnVR <- map(mr_mdcot_lnVR, ~ get_pred2(.x, mod = "Poaceae_or_Non"))

# a list of the numbers to take out unnecessary contrasts
contra_list <- Map(seq, from=1, to=1:1)

# you need to flatten twice: first to make it a list and make it a vector
# I guess we can make it a loop (or vectorise)
res_mr_mdcot_lnVR2 <- map2_dfr(res_mr_mdcot_lnVR, contra_list, ~.x[-(.y), ]) 

# creating a table
mr_results(res_mr_mdcot_lnVR1, res_mr_mdcot_lnVR2) %>% 
  kable("html",  digits = 3) %>%
  kable_styling("striped", position = "left") %>%
  scroll_box(width = "100%")
Fixed effect Estimate Lower CI [0.025] Upper CI [0.975] P value Lower PI [0.025] Upper PI [0.975]
Non-Poaceae 0.014 -0.149 0.176 0.868 -1.147 1.174
Poaceae -0.115 -0.221 -0.008 0.035 -1.269 1.039
Non-Poaceae-Poaceae -0.129 -0.312 0.055 0.169 -1.292 1.035
Figure E3
p10 <- orchard_plot(mr_mdcot_lnRR1, data = dat, mod="Poaceae_or_Non",group= 'Study', xlab = "log(Response Ratio) (lnRR)", alpha = 0.2, angle = 45) 


p11 <- orchard_plot(mr_mdcot_lnVR1, data = dat, mod="Poaceae_or_Non",group= 'Study', xlab = "log(Variabilty Ratio) (lnVR)", alpha = 0.2, angle = 45) 

p10/p11

#ggsave(here("fig", "Monocot_Dicot.png"))

Figure E3: Mean change (lnRR) and change in SD (lnVR) in herbivore performance when feeding on Poaceae and non-Poaceae plants. The orchard plot shows the meta-analytic mean (mean effect size) with its 95% confidence interval (thick line) and 95% prediction interval (thin line), with observed effect sizes based on sample sizes.

Plant lifespan: annual vs. perennial

Mean change: lnRR

# getting the level names out
level_names <- levels(dat$Plant_lifespan)

# lnRR
# meta-regression: multiple intercepts
mr_annuality_lnRR1 <- rma.mv(
  yi = lnRR,
  V = VCV_lnRR,
  mods = ~ Plant_lifespan - 1,
  test = "t",
  random = list(~1|Herbivore_Phylogeny, ~1|Herbivore_Latin_name, 
                ~1|Study, ~1|Effect),
  data = dat
)

# getting marginal R2
r2_mr_annuality_lnRR1 <- r2_ml(mr_annuality_lnRR1)

# meta-regression: contrasts 
# helper function to run metafor meta-regression
run_rma <- function(name) {
  rma.mv(yi = lnRR, 
         V = VCV_lnRR, 
         mods = ~ relevel(Plant_lifespan, ref = name), 
         test = "t",
        random = list(~1|Herbivore_Phylogeny, ~1|Herbivore_Latin_name, 
                      ~1|Study, ~1|Effect),
         data = dat)
}

# results of meta-regression including all contrast results; taking the last level out ([-length(level_names)])
mr_annuality_lnRR <- map(level_names[-length(level_names)], run_rma)
Table E7

Table E7: Regression coefficients (estimate), 95% confidence intervals (CIs), and variance explained, R2[marginal] (R2) = 0% from the meta-regression of lnRR with Plant_lifespan.

# getting estimates
res_mr_annuality_lnRR1 <- get_pred1(mr_annuality_lnRR1, mod = "Plant_lifespan")
res_mr_annuality_lnRR <- map(mr_annuality_lnRR, ~ get_pred2(.x, mod = "Plant_lifespan"))

# a list of the numbers to take out unnecessary contrasts
contra_list <- Map(seq, from=1, to=1:1)

# you need to flatten twice: first to make it a list and make it a vector
# I guess we can make it a loop (or vectorise)
res_mr_annuality_lnRR2 <- map2_dfr(res_mr_annuality_lnRR, contra_list, ~.x[-(.y), ]) 

# creating a table
mr_results(res_mr_annuality_lnRR1, res_mr_annuality_lnRR2) %>% 
  kable("html",  digits = 3) %>%
  kable_styling("striped", position = "left") %>%
  scroll_box(width = "100%")
Fixed effect Estimate Lower CI [0.025] Upper CI [0.975] P value Lower PI [0.025] Upper PI [0.975]
Annual -0.336 -0.436 -0.237 0.000 -1.227 0.555
Perennial -0.332 -0.441 -0.224 0.000 -1.224 0.560
Annual-Perennial 0.004 -0.109 0.117 0.949 -0.889 0.896

Change in SD: lnVR

# getting the level names out
level_names <- levels(dat$Plant_lifespan)

# lnRR
# meta-regression: multiple intercepts
mr_annuality_lnVR1 <- rma.mv(
  yi = lnVR,
  V = VCV_lnVR,
  mods = ~ Plant_lifespan - 1,
  test = "t",
  random = list(~1|Herbivore_Phylogeny, ~1|Herbivore_Latin_name, 
                ~1|Study, ~1|Effect),
  data = dat
)

# getting marginal R2
r2_mr_annuality_lnVR1 <- r2_ml(mr_annuality_lnVR1)

# meta-regression: contrasts 
# helper function to run metafor meta-regression
run_rma <- function(name) {
  rma.mv(yi = lnVR, 
         V = VCV_lnVR, 
         mods = ~ relevel(Plant_lifespan, ref = name), 
         test = "t",
        random = list(~1|Herbivore_Phylogeny, ~1|Herbivore_Latin_name, 
                      ~1|Study, ~1|Effect),
         data = dat)
}

# results of meta-regression including all contrast results; taking the last level out ([-length(level_names)])
mr_annuality_lnVR <- map(level_names[-length(level_names)], run_rma)
Table E8

Table E8: Regression coefficients (estimate), 95% confidence intervals (CIs), and variance explained, R2[marginal] (R2) = 0.39% from the meta-regression of lnVR with Plant_lifespan.

# getting estimates
res_mr_annuality_lnVR1 <- get_pred1(mr_annuality_lnVR1, mod = "Plant_lifespan")
res_mr_annuality_lnVR <- map(mr_annuality_lnVR, ~ get_pred2(.x, mod = "Plant_lifespan"))

# a list of the numbers to take out unnecessary contrasts
contra_list <- Map(seq, from=1, to=1:1)

# you need to flatten twice: first to make it a list and make it a vector
# I guess we can make it a loop (or vectorise)
res_mr_annuality_lnVR2 <- map2_dfr(res_mr_annuality_lnVR, contra_list, ~.x[-(.y), ]) 

# creating a table
mr_results(res_mr_annuality_lnVR1, res_mr_annuality_lnVR2) %>% 
  kable("html",  digits = 3) %>%
  kable_styling("striped", position = "left") %>%
  scroll_box(width = "100%")
Fixed effect Estimate Lower CI [0.025] Upper CI [0.975] P value Lower PI [0.025] Upper PI [0.975]
Annual -0.112 -0.227 0.003 0.057 -1.274 1.051
Perennial -0.035 -0.164 0.094 0.594 -1.199 1.129
Annual-Perennial 0.077 -0.072 0.226 0.311 -1.089 1.243
Figure E4
p7 <- orchard_plot(mr_annuality_lnRR1, data = dat, mod="Plant_lifespan",group= 'Study', xlab = "log(Response Ratio) (lnRR)", alpha = 0.2, angle = 45) 
p8 <- orchard_plot(mr_annuality_lnVR1, data = dat, mod="Plant_lifespan",group= 'Study', xlab = "log(Variability Ratio) (lnVR)", alpha = 0.2, angle = 45) 
p7/p8

#ggsave(here("fig", "Annuality.png"))

Figure E4: Mean change (lnRR), and change in SD (lnVR) in herbivore performance when feeding on annual or perennial plants. The orchard plot shows the meta-analytic mean (mean effect size) with its 95% confidence interval (thick line) and 95% prediction interval (thin line), with observed effect sizes based on sample sizes.

Herbivore distinction: generalists vs. specialists

Mean change: lnRR

# meta-regression: multiple intercepts
mr_specgen_lnRR1 <- rma.mv(
  yi = lnRR,
  V = VCV_lnRR,
  mods = ~ Herbivore_diet_breadth - 1,
  test = "t",
  random = list(~1|Herbivore_Phylogeny, ~1|Herbivore_Latin_name, 
                ~1|Study, ~1|Effect),
  data = dat
)


# getting marginal R2
r2_mr_specgen_lnRR1 <- r2_ml(mr_specgen_lnRR1)

# getting the level names out
level_names <- levels(dat$Herbivore_diet_breadth)

# helper function to run metafor meta-regression
run_rma <- function(name) {
  rma.mv(yi = lnRR, 
         V = VCV_lnRR,
         mods = ~ relevel(Herbivore_diet_breadth, ref = name), 
         test = "t",
         random = list(~1|Herbivore_Phylogeny, ~1|Herbivore_Latin_name, 
                ~1|Study, ~1|Effect),
         data = dat)
}

# results of meta-regression including all contrast results; taking the last level out ([-length(level_names)])
mr_specgen_lnRR <- map(level_names[-length(level_names)], run_rma)
Table E9

Table E9: Regression coefficients (estimate), 95% confidence intervals (CIs), P values and variance explained, R2[marginal] (R2) = 1.25% from the meta-regression of lnRR with Herbivore_diet_breadth.

# getting estimates
res_mr_specgen_lnRR1 <- get_pred1(mr_specgen_lnRR1, mod = "Herbivore_diet_breadth")
#res_mr_annuality_lnRR2 <- map(mr_annuality_lnRR, ~ get_est2(.x, mod = "Annuality"))
res_mr_specgen_lnRR <- map(mr_specgen_lnRR, ~ get_pred2(.x, mod = "Herbivore_diet_breadth"))

# a list of the numbers to take out unnecessary contrasts
contra_list <- Map(seq, from=1, to=1:1)

# you need to flatten twice: first to make it a list and make it a vector
# I guess we can make it a loop (or vectorise)
res_mr_specgen_lnRR2 <- map2_dfr(res_mr_specgen_lnRR, contra_list, ~.x[-(.y), ]) 

# creating a table
mr_results(res_mr_specgen_lnRR1, res_mr_specgen_lnRR2) %>% 
  kable("html",  digits = 3) %>%
  kable_styling("striped", position = "left") %>%
  scroll_box(width = "100%")
Fixed effect Estimate Lower CI [0.025] Upper CI [0.975] P value Lower PI [0.025] Upper PI [0.975]
Generalist -0.388 -0.509 -0.266 0.000 -1.277 0.502
Specialist -0.286 -0.404 -0.167 0.000 -1.175 0.603
Generalist-Specialist 0.102 -0.065 0.269 0.232 -0.795 0.999

####Change in SD: lnVR

# meta-regression: multiple intercepts
mr_specgen_lnVR1 <- rma.mv(
  yi = lnVR,
  V = VCV_lnVR,
  mods = ~ Herbivore_diet_breadth - 1,
  test = "t",
  random = list(~1|Herbivore_Phylogeny, ~1|Herbivore_Latin_name, 
                ~1|Study, ~1|Effect),
  data = dat
)


# getting marginal R2
r2_mr_specgen_lnVR1 <- r2_ml(mr_specgen_lnVR1)

# getting the level names out
level_names <- levels(dat$Herbivore_diet_breadth)

# helper function to run metafor meta-regression
run_rma <- function(name) {
  rma.mv(yi = lnVR, 
         V = VCV_lnVR,
         mods = ~ relevel(Herbivore_diet_breadth, ref = name), 
         test = "t",
         random = list(~1|Herbivore_Phylogeny, ~1|Herbivore_Latin_name, 
                ~1|Study, ~1|Effect),
         data = dat)
}

# results of meta-regression including all contrast results; taking the last level out ([-length(level_names)])
mr_specgen_lnVR <- map(level_names[-length(level_names)], run_rma)
Table E10

Table E10: Regression coefficients (estimate), 95% confidence intervals (CIs), P values and variance explained, R2[marginal] (R2) = 0.14% from the meta-regression of lnVR with Herbivore_diet_breadth.

# getting estimates
res_mr_specgen_lnVR1 <- get_pred1(mr_specgen_lnVR1, mod = "Herbivore_diet_breadth")
#res_mr_annuality_lnVR2 <- map(mr_annuality_lnVR, ~ get_est2(.x, mod = "Annuality"))
res_mr_specgen_lnVR <- map(mr_specgen_lnVR, ~ get_pred2(.x, mod = "Herbivore_diet_breadth"))

# a list of the numbers to take out unnecessary contrasts
contra_list <- Map(seq, from=1, to=1:1)

# you need to flatten twice: first to make it a list and make it a vector
# I guess we can make it a loop (or vectorise)
res_mr_specgen_lnVR2 <- map2_dfr(res_mr_specgen_lnVR, contra_list, ~.x[-(.y), ]) 

# creating a table
mr_results(res_mr_specgen_lnVR1, res_mr_specgen_lnVR2) %>% 
  kable("html",  digits = 3) %>%
  kable_styling("striped", position = "left") %>%
  scroll_box(width = "100%")
Fixed effect Estimate Lower CI [0.025] Upper CI [0.975] P value Lower PI [0.025] Upper PI [0.975]
Generalist -0.103 -0.242 0.037 0.149 -1.269 1.063
Specialist -0.059 -0.189 0.072 0.379 -1.224 1.106
Generalist-Specialist 0.044 -0.145 0.233 0.646 -1.129 1.217
Figure E5
p13 <- orchard_plot(mr_specgen_lnRR1, data = dat, mod="Herbivore_diet_breadth",group= 'Study', xlab = "log(Response Ratio) (lnRR)", alpha = 0.2, angle = 45) 

p14 <- orchard_plot(mr_specgen_lnVR1, data = dat, mod="Herbivore_diet_breadth",group= 'Study', xlab = "log(Variability Ratio) (lnVR)", alpha = 0.2, angle = 45) 

  
p13/p14

#ggsave(here("fig", "SpecGen.png"))

Figure E5: Mean change (lnRR) and change in SD (lnVR) in herbivore performance comparing herbivore diet breadth (generalist or specialist). The orchard plot shows the meta-analytic mean (mean effect size) with its 95% confidence interval (thick line) and 95% prediction interval (thin line), with observed effect sizes based on sample sizes.

Feeding guilds (7 groups)

Mean change: lnRR

# reordering
dat$Feeding_guild <- factor(dat$Feeding_guild,
                            levels = rev(c("Fluid-feeding arthropods",
                                       "Chewing arthropods", "Boring arthropods",
                                       "Mammalian chewers", "Cell-feeding arthropods",
                                       "Leaf-mining arthropods", "Rasping / grazing invertebrates")),
                            labels =  rev(c("Fluid-feeding arthropods",
                                       "Chewing arthropods", "Boring arthropods",
                                       "Mammalian chewers", "Cell-feeding arthropods",
                                       "Leaf-mining arthropods", "Rasping / grazing invertebrates")))

# meta-regression: multiple intercepts
mr_feeding_lnRR1 <- rma.mv(
  yi = lnRR,
  V = VCV_lnRR,
  mods = ~ Feeding_guild - 1,
  test = "t",
  random = list(~1|Herbivore_Phylogeny, ~1|Herbivore_Latin_name, 
                ~1|Study, ~1|Effect),
  data = dat
)

# getting marginal R2
r2_mr_feeding_lnRR1 <- r2_ml(mr_feeding_lnRR1)

# # meta-regression: contrasts x 7
# getting the level names out
level_names <- levels(dat$Feeding_guild)

# helper function to run metafor meta-regression
run_feeding_lnRR <- function(name) {
  rma.mv(yi = lnRR, 
         V = VCV_lnRR,
         mods = ~ relevel(Feeding_guild, ref = name), 
         test = "t",
         random = list(~1|Herbivore_Phylogeny, ~1|Herbivore_Latin_name, 
                ~1|Study, ~1|Effect),
         data = dat)
}

# results of meta-regression including all contrast results; taking the last level out ([-length(level_names)])
mr_feeding_lnRR <- map(level_names[-length(level_names)], run_feeding_lnRR)
Table E11

Table E11: Regression coefficients (estimate), 95% confidence intervals (CIs), and variance explained, R2[marginal] (R2) = 10.04% from the meta-regression of lnRR with Feeding_guild.

# getting estimates
res_mr_feeding_lnRR1 <- get_pred1(mr_feeding_lnRR1, mod = "Feeding_guild")
res_mr_feeding_lnRR <- map(mr_feeding_lnRR, ~ get_pred2(.x, mod = "Feeding_guild"))

# a list of the numbers to take out unnecessary contrasts
contra_list <- Map(seq, from=1, to=1:6)

# I guess we can make it a loop (or vectorise)
res_mr_feeding_lnRR2 <- map2_dfr(res_mr_feeding_lnRR, contra_list, ~.x[-(.y), ]) 

# creating a table
mr_results(res_mr_feeding_lnRR1, res_mr_feeding_lnRR2) %>% 
  kable("html",  digits = 3) %>%
  kable_styling("striped", position = "left") %>%
  scroll_box(width = "100%", height = "300px")
Fixed effect Estimate Lower CI [0.025] Upper CI [0.975] P value Lower PI [0.025] Upper PI [0.975]
Rasping / grazing invertebrates -1.038 -2.225 0.148 0.086 -2.500 0.423
Leaf-mining arthropods -1.165 -2.152 -0.178 0.021 -2.470 0.140
Cell-feeding arthropods -0.358 -0.759 0.043 0.080 -1.301 0.585
Mammalian chewers -0.602 -0.908 -0.295 0.000 -1.508 0.305
Boring arthropods -0.495 -0.691 -0.299 0.000 -1.371 0.380
Chewing arthropods -0.385 -0.513 -0.257 0.000 -1.248 0.478
Fluid-feeding arthropods -0.155 -0.285 -0.025 0.020 -1.018 0.708
Rasping / grazing invertebrates-Leaf-mining arthropods -0.127 -1.670 1.417 0.872 -1.890 1.637
Rasping / grazing invertebrates-Cell-feeding arthropods 0.681 -0.572 1.933 0.286 -0.835 2.196
Rasping / grazing invertebrates-Mammalian chewers 0.437 -0.789 1.663 0.484 -1.057 1.930
Rasping / grazing invertebrates-Boring arthropods 0.543 -0.660 1.746 0.376 -0.932 2.018
Rasping / grazing invertebrates-Chewing arthropods 0.653 -0.541 1.847 0.283 -0.814 2.121
Rasping / grazing invertebrates-Fluid-feeding arthropods 0.884 -0.310 2.078 0.147 -0.584 2.351
Leaf-mining arthropods-Cell-feeding arthropods 0.807 -0.258 1.872 0.137 -0.557 2.172
Leaf-mining arthropods-Mammalian chewers 0.564 -0.470 1.597 0.285 -0.776 1.904
Leaf-mining arthropods-Boring arthropods 0.670 -0.336 1.676 0.191 -0.649 1.989
Leaf-mining arthropods-Chewing arthropods 0.780 -0.210 1.769 0.122 -0.527 2.087
Leaf-mining arthropods-Fluid-feeding arthropods 1.010 0.015 2.005 0.047 -0.301 2.321
Cell-feeding arthropods-Mammalian chewers -0.244 -0.748 0.261 0.343 -1.235 0.748
Cell-feeding arthropods-Boring arthropods -0.138 -0.580 0.305 0.542 -1.099 0.824
Cell-feeding arthropods-Chewing arthropods -0.028 -0.448 0.393 0.898 -0.979 0.924
Cell-feeding arthropods-Fluid-feeding arthropods 0.203 -0.219 0.624 0.345 -0.749 1.155
Mammalian chewers-Boring arthropods 0.106 -0.258 0.470 0.566 -0.821 1.034
Mammalian chewers-Chewing arthropods 0.216 -0.114 0.547 0.200 -0.699 1.132
Mammalian chewers-Fluid-feeding arthropods 0.447 0.114 0.779 0.009 -0.469 1.363
Boring arthropods-Chewing arthropods 0.110 -0.121 0.340 0.349 -0.774 0.994
Boring arthropods-Fluid-feeding arthropods 0.340 0.105 0.576 0.005 -0.545 1.226
Chewing arthropods-Fluid-feeding arthropods 0.230 0.052 0.409 0.011 -0.641 1.102

Change in SD: lnVR

# meta-regression: multiple intercepts
mr_feeding_lnVR1 <- rma.mv(
  yi = lnVR,
  V = VCV_lnVR,
  mods = ~ Feeding_guild - 1,
  test = "t",
  random = list(~1|Herbivore_Phylogeny, ~1|Herbivore_Latin_name, 
                ~1|Study, ~1|Effect),
  data = dat
)

# getting marginal R2
r2_mr_feeding_lnVR1 <- r2_ml(mr_feeding_lnVR1)

# # meta-regression: contrasts x 7
# getting the level names out
level_names <- levels(dat$Feeding_guild)

# helper function to run metafor meta-regression
run_feeding_lnVR <- function(name) {
  rma.mv(yi = lnVR, 
         V = VCV_lnVR,
         mods = ~ relevel(Feeding_guild, ref = name), 
         test = "t",
         random = list(~1|Herbivore_Phylogeny, ~1|Herbivore_Latin_name, 
                ~1|Study, ~1|Effect),
         data = dat)
}

# results of meta-regression including all contrast results; taking the last level out ([-length(level_names)])
mr_feeding_lnVR <- map(level_names[-length(level_names)], run_feeding_lnVR)
Table E12

Table E12: Regression coefficients (estimate), 95% confidence intervals (CIs), and variance explained, R2[marginal] (R2) = 2.04% from the meta-regression of lnVR with Feeding_guild.

# getting estimates
res_mr_feeding_lnVR1 <- get_pred1(mr_feeding_lnVR1, mod = "Feeding_guild")
res_mr_feeding_lnVR <- map(mr_feeding_lnVR, ~ get_pred2(.x, mod = "Feeding_guild"))

# a list of the numbers to take out unnecessary contrasts
contra_list <- Map(seq, from=1, to=1:6)

# I guess we can make it a loop (or vectorise)
res_mr_feeding_lnVR2 <- map2_dfr(res_mr_feeding_lnVR, contra_list, ~.x[-(.y), ]) 

# creating a table
mr_results(res_mr_feeding_lnVR1, res_mr_feeding_lnVR2) %>% 
  kable("html",  digits = 3) %>%
  kable_styling("striped", position = "left") %>%
  scroll_box(width = "100%", height = "300px")
Fixed effect Estimate Lower CI [0.025] Upper CI [0.975] P value Lower PI [0.025] Upper PI [0.975]
Rasping / grazing invertebrates -0.542 -1.674 0.590 0.348 -2.163 1.080
Leaf-mining arthropods 0.053 -1.520 1.627 0.947 -1.902 2.009
Cell-feeding arthropods 0.134 -0.372 0.639 0.604 -1.132 1.399
Mammalian chewers -0.219 -0.638 0.200 0.305 -1.453 1.015
Boring arthropods -0.248 -0.510 0.014 0.064 -1.438 0.942
Chewing arthropods -0.086 -0.236 0.064 0.263 -1.256 1.085
Fluid-feeding arthropods -0.005 -0.163 0.152 0.949 -1.176 1.166
Rasping / grazing invertebrates-Leaf-mining arthropods 0.595 -1.344 2.534 0.547 -1.664 2.854
Rasping / grazing invertebrates-Cell-feeding arthropods 0.675 -0.565 1.915 0.285 -1.023 2.374
Rasping / grazing invertebrates-Mammalian chewers 0.323 -0.885 1.530 0.600 -1.352 1.998
Rasping / grazing invertebrates-Boring arthropods 0.294 -0.868 1.456 0.620 -1.349 1.936
Rasping / grazing invertebrates-Chewing arthropods 0.456 -0.686 1.598 0.433 -1.172 2.085
Rasping / grazing invertebrates-Fluid-feeding arthropods 0.537 -0.607 1.680 0.357 -1.092 2.166
Leaf-mining arthropods-Cell-feeding arthropods 0.080 -1.572 1.733 0.924 -1.939 2.100
Leaf-mining arthropods-Mammalian chewers -0.272 -1.901 1.356 0.743 -2.272 1.727
Leaf-mining arthropods-Boring arthropods -0.301 -1.896 1.294 0.711 -2.274 1.672
Leaf-mining arthropods-Chewing arthropods -0.139 -1.716 1.438 0.863 -2.097 1.819
Leaf-mining arthropods-Fluid-feeding arthropods -0.058 -1.640 1.523 0.942 -2.020 1.903
Cell-feeding arthropods-Mammalian chewers -0.353 -1.009 0.304 0.292 -1.686 0.981
Cell-feeding arthropods-Boring arthropods -0.382 -0.949 0.186 0.187 -1.673 0.910
Cell-feeding arthropods-Chewing arthropods -0.219 -0.746 0.308 0.415 -1.494 1.056
Cell-feeding arthropods-Fluid-feeding arthropods -0.139 -0.668 0.391 0.607 -1.414 1.137
Mammalian chewers-Boring arthropods -0.029 -0.524 0.466 0.908 -1.291 1.233
Mammalian chewers-Chewing arthropods 0.133 -0.311 0.578 0.556 -1.109 1.376
Mammalian chewers-Fluid-feeding arthropods 0.214 -0.234 0.662 0.349 -1.030 1.458
Boring arthropods-Chewing arthropods 0.162 -0.137 0.462 0.287 -1.036 1.361
Boring arthropods-Fluid-feeding arthropods 0.243 -0.063 0.549 0.120 -0.957 1.443
Chewing arthropods-Fluid-feeding arthropods 0.080 -0.135 0.296 0.463 -1.100 1.261
Figure E6
p17 <- orchard_plot(mr_feeding_lnRR1, data = dat, mod="Feeding_guild",group= 'Study', xlab = "log(Response Ratio) (lnRR)", alpha = 0.2, angle = 45) 

p18 <- orchard_plot(mr_feeding_lnVR1, data = dat, mod="Feeding_guild",group= 'Study', xlab = "log(Variability Ratio) (lnVR)", alpha = 0.2, angle = 45) 

# p11|p12 
# ggsave(here("fig", "Feeding_guild.png"))

p17/p18

#ggsave(here("fig", "Feeding_guild2.png"))

Figure E6: Mean change (lnRR), and change in SD (lnVR) in herbivore performance comparing herbivore feeding guild. The orchard plot shows the meta-analytic mean (mean effect size) with its 95% confidence interval (thick line) and 95% prediction interval (thin line), with observed effect sizes based on sample sizes.

Figure 3A-B (N < 10 taken out)
# TODO the esiest to jsut run models without these groups

# TODO - I cannot subset the data properly, I have tried a few alternative techniques, they work, but as the dataset from the model is has more 'Feeding_guild' levels than  the subset dataframe so there is an NA row in the figure.

datlowrm<-dat[!(dat$Feeding_guild=="Rasping / grazing invertebrates" | dat$Feeding_guild=="Leaf-mining arthropods" | dat$Feeding_guild=="Cell-feeding arthropods"),]


# matrix for controlling for correlated errors
VCV_lnRR_lrem <- make_VCV_matrix(datlowrm, V = "varlnRR", cluster = "Study", obs = "Effect")
#lnRR - run models removing groups with low effect sizes
# meta-regression: multiple intercepts
mr_feeding_lnRR1_1 <- rma.mv(
  yi = lnRR,
  V = VCV_lnRR_lrem,
  mods = ~ Feeding_guild - 1,
  test = "t",
  random = list(~1|Herbivore_Phylogeny, ~1|Herbivore_Latin_name, 
                ~1|Study, ~1|Effect),
  data = datlowrm
)

# getting marginal R2
r2_mr_feeding_lnRR1_1 <- r2_ml(mr_feeding_lnRR1_1)

# # meta-regression: contrasts x 7


# helper function to run metafor meta-regression
run_feeding_lnRR1 <- function(name) {
  rma.mv(yi = lnRR, 
         V = VCV_lnRR_lrem,
         mods = ~ relevel(Feeding_guild, ref = name), 
         test = "t",
         random = list(~1|Herbivore_Phylogeny, ~1|Herbivore_Latin_name, 
                ~1|Study, ~1|Effect),
         data = datlowrm)
}

# results of meta-regression including all contrast results; taking the last level out ([-length(level_names)])

#op_feeding_lnRR <- orchaRd::mod_results(mr_feeding_lnRR1, mod = "Feeding_guild", data = dat, group = "Study",
   # at = list(Feeding_guild = c("Fluid-feeding arthropods", 'Chewing arthropods','Boring arthropods','Mammalian chewers'), subset = TRUE))

#<- mod_results(mr_feeding_lnRR1, data = dat,mod = "Feeding_guild", group = 'Study')

# taking out some groups N < 10
#op_feeding_lnRR$mod_table <- op_feeding_lnRR$mod_table[-which(op_feeding_lnRR$mod_table$name == "Leaf-mining arthropods" | #op_feeding_lnRR$mod_table$name == "Rasping / grazing invertebrates" | op_feeding_lnRR$mod_table$name == "Cell-feeding arthropods"), ]

#op_feeding_lnRR$data <- op_feeding_lnRR$data[-which(op_feeding_lnRR$data$moderator == "Leaf-mining arthropods" | op_feeding_lnRR$data$moderator == "Rasping / grazing invertebrates" | op_feeding_lnRR$data$moderator ==  "Cell-feeding arthropods"), ]

m1 <- orchard_plot(mr_feeding_lnRR1_1 , data= datlowrm,mod="Feeding_guild", group= 'Study', xlab = "log(Response Ratio) (lnRR)", alpha = 0.2,  angle = 45) 





#lnVR
# matrix for controlling for correlated errors
VCV_lnVR_lrem <- make_VCV_matrix(datlowrm, V = "varlnVR", cluster = "Study", obs = "Effect")
#lnRR - run models removing groups with low effect sizes
# meta-regression: multiple intercepts
mr_feeding_lnVR1_1 <- rma.mv(
  yi = lnVR,
  V = VCV_lnVR_lrem,
  mods = ~ Feeding_guild - 1,
  test = "t",
  random = list(~1|Herbivore_Phylogeny, ~1|Herbivore_Latin_name, 
                ~1|Study, ~1|Effect),
  data = datlowrm
)

# getting marginal R2
r2_mr_feeding_lnVR1_1 <- r2_ml(mr_feeding_lnVR1_1)


# helper function to run metafor meta-regression
run_feeding_lnRR1 <- function(name) {
  rma.mv(yi = lnRR, 
         V = VCV_lnRR_lrem,
         mods = ~ relevel(Feeding_guild, ref = name), 
         test = "t",
         random = list(~1|Herbivore_Phylogeny, ~1|Herbivore_Latin_name, 
                ~1|Study, ~1|Effect),
         data = datlowrm)
}


#op_feeding_lnVR <- mod_results(mr_feeding_lnVR1, mod = "Feeding_guild")

# taking out some groups N < 10
#op_feeding_lnVR$mod_table <- op_feeding_lnVR$mod_table[-which(op_feeding_lnVR$mod_table$name == "Leaf-mining arthropods" | op_feeding_lnVR$mod_table$name == "Rasping / grazing invertebrates" | op_feeding_lnVR$mod_table$name == "Cell-feeding arthropods"), ]

#op_feeding_lnVR$data <- op_feeding_lnVR$data[-which(op_feeding_lnVR$data$moderator == "Leaf-mining arthropods" | op_feeding_lnVR$data$moderator == "Rasping / grazing invertebrates" | op_feeding_lnVR$data$moderator ==  "Cell-feeding arthropods"), ]

m2 <- orchard_plot(mr_feeding_lnVR1_1 , data= datlowrm,mod="Feeding_guild", group= 'Study', xlab = "log(Response Ratio) (lnVR)", alpha = 0.2,  angle = 45) 


#ggsave(here("fig", "Feeding_guild2m.png"))

Interaction effects (subset of guilds with “Chewing arthropods” and “Fluid-feeding arthropods”)

We ran a univariate meta-regression model for each of the following moderators:: 1) Lifespan_guild, 2) Poaceae_guild, and 3) Diet_guild (see the meta-data above).

We with the 3 other categorical variables:

#
dat %>% filter(Feeding_guild == "Chewing arthropods" | Feeding_guild == "Fluid-feeding arthropods") %>%
  mutate(Lifespan_guild = factor(str_c(Plant_lifespan, Feeding_guild, sep = ":")),
         Poaceae_guild = factor(str_c(Poaceae_or_Non, Feeding_guild, sep = ":")),
         Diet_guild = factor(str_c(Herbivore_diet_breadth, Feeding_guild, sep = ":")) ) -> gdat

The combined effect of plant lifespan and guilds (Chewing arthropods/ Fluid-feeding arthropods)

Mean change: lnRR

# reordering
gdat$Lifespan_guild <- factor(gdat$Lifespan_guild,
                            levels = c("Annual:Chewing arthropods","Perennial:Chewing arthropods", "Annual:Fluid-feeding arthropods", "Perennial:Fluid-feeding arthropods"),
                            labels = c("Annual:Chewing arthropods","Perennial:Chewing arthropods", "Annual:Fluid-feeding arthropods", "Perennial:Fluid-feeding arthropods"))

# vcv matrix 
VCV_lnRR2 <- make_VCV_matrix(gdat, V = "varlnRR", cluster = "Study", obs = "Effect")

# meta-regression: multiple intercepts
mr_Annuality_guild_lnRR1 <- rma.mv(
  yi = lnRR,
  V = VCV_lnRR2,
  mods = ~ Lifespan_guild - 1,
  test = "t",
  random = list(~1|Herbivore_Phylogeny, ~1|Herbivore_Latin_name, 
                ~1|Study, ~1|Effect),
  data = gdat
)

# getting marginal R2
r2_mr_Annuality_guild_lnRR1 <- r2_ml(mr_Annuality_guild_lnRR1)

# # meta-regression: contrasts x 7
# getting the level names out
level_names <- levels(gdat$Lifespan_guild)

# helper function to run metafor meta-regression
run_Annuality_guild_lnRR <- function(name) {
  rma.mv(yi = lnRR, 
         V = VCV_lnRR2,
         mods = ~ relevel(Lifespan_guild, ref = name), 
         test = "t",
         random = list(~1|Herbivore_Phylogeny, ~1|Herbivore_Latin_name, 
                       ~1|Study, ~1|Effect),
         data = gdat)
}

# results of meta-regression including all contrast results; taking the last level out ([-length(level_names)])
mr_Annuality_guild_lnRR <- map(level_names[-length(level_names)], run_Annuality_guild_lnRR)
Table E13

Table E13: Regression coefficients (estimate), 95% confidence intervals (CIs), and variance explained, R2[marginal] (R2) = 6.06% from the meta-regression of lnRR with Lifespan_guild.

# getting estimates
res_mr_Annuality_guild_lnRR1 <- get_pred1(mr_Annuality_guild_lnRR1, mod = "Lifespan_guild")
res_mr_Annuality_guild_lnRR <- map(mr_Annuality_guild_lnRR, ~ get_pred2(.x, mod = "Lifespan_guild"))

# a list of the numbers to take out unnecessary contrasts
contra_list <- Map(seq, from=1, to=1:3)

res_mr_Annuality_guild_lnRR2 <- map2_dfr(res_mr_Annuality_guild_lnRR, contra_list, ~.x[-(.y), ]) 

# creating a table
mr_results(res_mr_Annuality_guild_lnRR1, res_mr_Annuality_guild_lnRR2) %>% 
  kable("html",  digits = 3) %>%
  kable_styling("striped", position = "left") %>%
  scroll_box(width = "100%", height = "300px")
Fixed effect Estimate Lower CI [0.025] Upper CI [0.975] P value Lower PI [0.025] Upper PI [0.975]
Annual:Chewing arthropods -0.336 -0.468 -0.204 0.000 -1.145 0.473
Perennial:Chewing arthropods -0.404 -0.563 -0.245 0.000 -1.218 0.410
Annual:Fluid-feeding arthropods -0.170 -0.320 -0.019 0.027 -0.982 0.643
Perennial:Fluid-feeding arthropods -0.129 -0.286 0.029 0.109 -0.942 0.685
Annual:Chewing arthropods-Perennial:Chewing arthropods -0.068 -0.218 0.082 0.372 -0.880 0.744
Annual:Chewing arthropods-Annual:Fluid-feeding arthropods 0.166 -0.034 0.366 0.103 -0.656 0.989
Annual:Chewing arthropods-Perennial:Fluid-feeding arthropods 0.207 0.005 0.410 0.045 -0.616 1.031
Perennial:Chewing arthropods-Annual:Fluid-feeding arthropods 0.235 0.015 0.454 0.036 -0.593 1.062
Perennial:Chewing arthropods-Perennial:Fluid-feeding arthropods 0.275 0.056 0.495 0.014 -0.552 1.103
Annual:Fluid-feeding arthropods-Perennial:Fluid-feeding arthropods 0.041 -0.143 0.224 0.662 -0.778 0.860

Change in SD: lnVR

# vcv matrix 
VCV_lnVR2 <- make_VCV_matrix(gdat, V = "varlnVR", cluster = "Study", obs = "Effect")

# meta-regression: multiple intercepts
mr_Annuality_guild_lnVR1 <- rma.mv(
  yi = lnVR,
  V = VCV_lnVR2,
  mods = ~ Lifespan_guild - 1,
  test = "t",
  random = list(~1|Herbivore_Phylogeny, ~1|Herbivore_Latin_name, 
                ~1|Study, ~1|Effect),
  data = gdat
)

# getting marginal R2
r2_mr_Annuality_guild_lnVR1 <- r2_ml(mr_Annuality_guild_lnVR1)

# # meta-regression: contrasts x 7
# getting the level names out
level_names <- levels(gdat$Lifespan_guild)

# helper function to run metafor meta-regression
run_Annuality_guild_lnVR <- function(name) {
  rma.mv(yi = lnVR, 
         V = VCV_lnVR2,
         mods = ~ relevel(Lifespan_guild, ref = name), 
         test = "t",
         random = list(~1|Herbivore_Phylogeny, ~1|Herbivore_Latin_name, 
                       ~1|Study, ~1|Effect),
         data = gdat)
}

# results of meta-regression including all contrast results; taking the last level out ([-length(level_names)])
mr_Annuality_guild_lnVR <- map(level_names[-length(level_names)], run_Annuality_guild_lnVR)
Table E14

Table E14: Regression coefficients (estimate), 95% confidence intervals (CIs), and variance explained, R2[marginal] (R2) = 1.24% from the meta-regression of lnVR with Lifespan_guild.

# getting estimates
res_mr_Annuality_guild_lnVR1 <- get_pred1(mr_Annuality_guild_lnVR1, mod = "Lifespan_guild")
res_mr_Annuality_guild_lnVR <- map(mr_Annuality_guild_lnVR, ~ get_pred2(.x, mod = "Lifespan_guild"))

# a list of the numbers to take out unnecessary contrasts
contra_list <- Map(seq, from=1, to=1:3)

res_mr_Annuality_guild_lnVR2 <- map2_dfr(res_mr_Annuality_guild_lnVR, contra_list, ~.x[-(.y), ]) 

# creating a table
mr_results(res_mr_Annuality_guild_lnVR1, res_mr_Annuality_guild_lnVR2) %>% 
  kable("html",  digits = 3) %>%
  kable_styling("striped", position = "left") %>%
  scroll_box(width = "100%", height = "300px")
Fixed effect Estimate Lower CI [0.025] Upper CI [0.975] P value Lower PI [0.025] Upper PI [0.975]
Annual:Chewing arthropods -0.121 -0.287 0.045 0.152 -1.292 1.049
Perennial:Chewing arthropods -0.016 -0.219 0.186 0.874 -1.193 1.160
Annual:Fluid-feeding arthropods -0.069 -0.259 0.121 0.475 -1.243 1.105
Perennial:Fluid-feeding arthropods 0.075 -0.135 0.286 0.483 -1.102 1.253
Annual:Chewing arthropods-Perennial:Chewing arthropods 0.105 -0.110 0.320 0.339 -1.074 1.283
Annual:Chewing arthropods-Annual:Fluid-feeding arthropods 0.052 -0.199 0.303 0.685 -1.134 1.238
Annual:Chewing arthropods-Perennial:Fluid-feeding arthropods 0.196 -0.068 0.461 0.145 -0.992 1.385
Perennial:Chewing arthropods-Annual:Fluid-feeding arthropods -0.053 -0.332 0.226 0.710 -1.245 1.139
Perennial:Chewing arthropods-Perennial:Fluid-feeding arthropods 0.092 -0.195 0.378 0.530 -1.102 1.285
Annual:Fluid-feeding arthropods-Perennial:Fluid-feeding arthropods 0.144 -0.109 0.398 0.264 -1.042 1.331
Figure 4C-D
## Figure 3C
p20 <- orchard_plot(mr_Annuality_guild_lnRR1, data= gdat, group = 'Study',mod="Lifespan_guild", xlab = "log(Response Ratio) (lnRR)", alpha = 0.2,  angle = 45) 
## Figure 3D
p21 <- orchard_plot(mr_Annuality_guild_lnVR1, data= gdat, group = 'Study',mod="Lifespan_guild", xlab = "log(Variability Ratio) (lnVR)", alpha = 0.2,  angle = 45) 
## Figure 3D

#ggsave(here("fig", "Annuality_guild.png"))

The combined effect of flowering divisions (Poaceae vs Non-Poaceae) and guilds (Chewing arthropods / Fluid-feeding arthropods)

Mean change: lnRR

# reordering
gdat$Poaceae_guild <- factor(gdat$Poaceae_guild,
                            levels = c("Non-Poaceae:Chewing arthropods","Poaceae:Chewing arthropods", "Non-Poaceae:Fluid-feeding arthropods", "Poaceae:Fluid-feeding arthropods"),
                            labels = c("Non-Poaceae:Chewing arthropods","Poaceae:Chewing arthropods", "Non-Poaceae:Fluid-feeding arthropods", "Poaceae:Fluid-feeding arthropods"))

# meta-regression: multiple intercepts
mr_Monocot_Dicot_guild_lnRR1 <- rma.mv(
  yi = lnRR,
  V = VCV_lnRR2,
  mods = ~ Poaceae_guild - 1,
  test = "t",
  random = list(~1|Herbivore_Phylogeny, ~1|Herbivore_Latin_name, 
                       ~1|Study, ~1|Effect),
  data = gdat
)

# getting marginal R2
r2_mr_Monocot_Dicot_guild_lnRR1 <- r2_ml(mr_Monocot_Dicot_guild_lnRR1)

# # meta-regression: contrasts x 7
# getting the level names out
level_names <- levels(gdat$Poaceae_guild)

# helper function to run metafor meta-regression
run_Monocot_Dicot_guild_lnRR <- function(name) {
  rma.mv(yi = lnRR, 
         V = VCV_lnRR2,
         mods = ~ relevel(Poaceae_guild, ref = name), 
         test = "t",
         random = list(~1|Herbivore_Phylogeny, ~1|Herbivore_Latin_name, 
                       ~1|Study, ~1|Effect),
         data = gdat)
}

# results of meta-regression including all contrast results; taking the last level out ([-length(level_names)])
mr_Monocot_Dicot_guild_lnRR <- map(level_names[-length(level_names)], run_Monocot_Dicot_guild_lnRR)
Table E15

Table E15: Regression coefficients (estimate), 95% confidence intervals (CIs), and variance explained, R2[marginal] (R2) = 9.44% from the meta-regression of lnRR with Poaceae_guild.

# getting estimates
res_mr_Monocot_Dicot_guild_lnRR1 <- get_pred1(mr_Monocot_Dicot_guild_lnRR1, mod = "Poaceae_guild")
#res_mr_annuality_lnRR2 <- map(mr_annuality_lnRR, ~ get_est2(.x, mod = "Annuality"))
res_mr_Monocot_Dicot_guild_lnRR <- map(mr_Monocot_Dicot_guild_lnRR, ~ get_pred2(.x, mod = "Poaceae_guild"))

# a list of the numbers to take out unnecessary contrasts
contra_list <- Map(seq, from=1, to=1:3)

# you need to flatten twice: first to make it a list and make it a vector
# I guess we can make it a loop (or vectorise)
res_mr_Monocot_Dicot_guild_lnRR2 <- map2_dfr(res_mr_Monocot_Dicot_guild_lnRR, contra_list, ~.x[-(.y), ]) 

# creating a table
mr_results(res_mr_Monocot_Dicot_guild_lnRR1, res_mr_Monocot_Dicot_guild_lnRR2) %>% 
  kable("html",  digits = 3) %>%
  kable_styling("striped", position = "left") %>%
  scroll_box(width = "100%", height = "300px")
Fixed effect Estimate Lower CI [0.025] Upper CI [0.975] P value Lower PI [0.025] Upper PI [0.975]
Non-Poaceae:Chewing arthropods -0.185 -0.388 0.018 0.073 -1.011 0.641
Poaceae:Chewing arthropods -0.410 -0.543 -0.277 0.000 -1.222 0.401
Non-Poaceae:Fluid-feeding arthropods -0.170 -0.354 0.014 0.071 -0.991 0.652
Poaceae:Fluid-feeding arthropods -0.129 -0.301 0.042 0.140 -0.948 0.690
Non-Poaceae:Chewing arthropods-Poaceae:Chewing arthropods -0.225 -0.432 -0.018 0.033 -1.052 0.602
Non-Poaceae:Chewing arthropods-Non-Poaceae:Fluid-feeding arthropods 0.016 -0.255 0.286 0.910 -0.830 0.861
Non-Poaceae:Chewing arthropods-Poaceae:Fluid-feeding arthropods 0.056 -0.209 0.321 0.677 -0.787 0.900
Poaceae:Chewing arthropods-Non-Poaceae:Fluid-feeding arthropods 0.241 0.014 0.467 0.037 -0.592 1.073
Poaceae:Chewing arthropods-Poaceae:Fluid-feeding arthropods 0.281 0.066 0.496 0.011 -0.548 1.110
Non-Poaceae:Fluid-feeding arthropods-Poaceae:Fluid-feeding arthropods 0.041 -0.211 0.292 0.751 -0.799 0.880

Change in SD: lnVR

# meta-regression: multiple intercepts
mr_Monocot_Dicot_guild_lnVR1 <- rma.mv(
  yi = lnVR,
  V = VCV_lnVR2,
  mods = ~ Poaceae_guild - 1,
  test = "t",
  random = list(~1|Herbivore_Phylogeny, ~1|Herbivore_Latin_name, 
                       ~1|Study, ~1|Effect),
  data = gdat
)

# getting marginal R2
r2_mr_Monocot_Dicot_guild_lnVR1 <- r2_ml(mr_Monocot_Dicot_guild_lnVR1)

# # meta-regression: contrasts x 7
# getting the level names out
level_names <- levels(gdat$Poaceae_guild)

# helper function to run metafor meta-regression
run_Monocot_Dicot_guild_lnVR <- function(name) {
  rma.mv(yi = lnVR, 
         V = VCV_lnVR2,
         mods = ~ relevel(Poaceae_guild, ref = name), 
         test = "t",
         random = list(~1|Herbivore_Phylogeny, ~1|Herbivore_Latin_name, 
                       ~1|Study, ~1|Effect),
         data = gdat)
}

# results of meta-regression including all contrast results; taking the last level out ([-length(level_names)])
mr_Monocot_Dicot_guild_lnVR <- map(level_names[-length(level_names)], run_Monocot_Dicot_guild_lnVR)
Table E16

Table E16: Regression coefficients (estimate), 95% confidence intervals (CIs), and variance explained, R2[marginal] (R2) = 0.75% from the meta-regression of lnVR with Poaceae_guild.

# getting estimates
res_mr_Monocot_Dicot_guild_lnVR1 <- get_pred1(mr_Monocot_Dicot_guild_lnVR1, mod = "Poaceae_guild")
#res_mr_annuality_lnVR2 <- map(mr_annuality_lnVR, ~ get_est2(.x, mod = "Annuality"))
res_mr_Monocot_Dicot_guild_lnVR <- map(mr_Monocot_Dicot_guild_lnVR, ~ get_pred2(.x, mod = "Poaceae_guild"))

# a list of the numbers to take out unnecessary contrasts
contra_list <- Map(seq, from=1, to=1:3)

# you need to flatten twice: first to make it a list and make it a vector
# I guess we can make it a loop (or vectorise)
res_mr_Monocot_Dicot_guild_lnVR2 <- map2_dfr(res_mr_Monocot_Dicot_guild_lnVR, contra_list, ~.x[-(.y), ]) 

# creating a table
mr_results(res_mr_Monocot_Dicot_guild_lnVR1, res_mr_Monocot_Dicot_guild_lnVR2) %>% 
  kable("html",  digits = 3) %>%
  kable_styling("striped", position = "left") %>%
  scroll_box(width = "100%", height = "300px")
Fixed effect Estimate Lower CI [0.025] Upper CI [0.975] P value Lower PI [0.025] Upper PI [0.975]
Non-Poaceae:Chewing arthropods -0.049 -0.297 0.200 0.701 -1.235 1.138
Poaceae:Chewing arthropods -0.097 -0.256 0.061 0.229 -1.268 1.073
Non-Poaceae:Fluid-feeding arthropods 0.058 -0.180 0.296 0.632 -1.126 1.242
Poaceae:Fluid-feeding arthropods -0.052 -0.255 0.150 0.611 -1.230 1.125
Non-Poaceae:Chewing arthropods-Poaceae:Chewing arthropods -0.049 -0.309 0.211 0.712 -1.238 1.140
Non-Poaceae:Chewing arthropods-Non-Poaceae:Fluid-feeding arthropods 0.107 -0.232 0.445 0.537 -1.102 1.315
Non-Poaceae:Chewing arthropods-Poaceae:Fluid-feeding arthropods -0.004 -0.324 0.316 0.981 -1.207 1.199
Poaceae:Chewing arthropods-Non-Poaceae:Fluid-feeding arthropods 0.155 -0.129 0.440 0.284 -1.039 1.350
Poaceae:Chewing arthropods-Poaceae:Fluid-feeding arthropods 0.045 -0.210 0.300 0.730 -1.143 1.233
Non-Poaceae:Fluid-feeding arthropods-Poaceae:Fluid-feeding arthropods -0.110 -0.423 0.202 0.487 -1.312 1.091
Figure 4A-B
## Figure 3A
p23 <- orchard_plot(mr_Monocot_Dicot_guild_lnRR1, data= gdat, group = 'Study',mod="Poaceae_guild", xlab = "log(Response Ratio) (lnRR)", alpha = 0.2,  angle = 45) 

## Figure 3B
p24 <- orchard_plot(mr_Monocot_Dicot_guild_lnVR1, data= gdat, group = 'Study',mod="Poaceae_guild", xlab = "log(Variability Ratio) (lnVR)", alpha = 0.2,  angle = 45) 

#ggsave(here("fig", "Monocot_Dicot_guild.png"))

The combined effect of herbivore distinctions (specialists vs generalist) and guilds (Chewing arthropods / Fluid-feeding arthropods)

Mean change: lnRR

# reordering
gdat$Diet_guild <- factor(gdat$Diet_guild,
                            levels = c("Generalist:Chewing arthropods", "Specialist:Chewing arthropods", "Generalist:Fluid-feeding arthropods", "Specialist:Fluid-feeding arthropods"),
                            labels = c("Generalist:Chewing arthropods", "Specialist:Chewing arthropods", "Generalist:Fluid-feeding arthropods", "Specialist:Fluid-feeding arthropods"))

# meta-regression: multiple intercepts
mr_SpecGen_guild_lnRR1 <- rma.mv(
  yi = lnRR,
  V = VCV_lnRR2,
  mods = ~ Diet_guild - 1,
  test = "t",
  random = list(~1|Herbivore_Phylogeny, ~1|Herbivore_Latin_name, 
                       ~1|Study, ~1|Effect),
  data = gdat
)

# getting marginal R2
r2_mr_SpecGen_guild_lnRR1 <- r2_ml(mr_SpecGen_guild_lnRR1)

# # meta-regression: contrasts x 7
# getting the level names out
level_names <- levels(gdat$Diet_guild)

# helper function to run metafor meta-regression
run_SpecGen_guild_lnRR <- function(name) {
  rma.mv(yi = lnRR, 
         V = VCV_lnRR2,
         mods = ~ relevel(Diet_guild, ref = name), 
         test = "t",
         random = list(~1|Herbivore_Phylogeny, ~1|Herbivore_Latin_name, 
                       ~1|Study, ~1|Effect),
         data = gdat)
}

# results of meta-regression including all contrast results; taking the last level out ([-length(level_names)])
mr_SpecGen_guild_lnRR <- map(level_names[-length(level_names)], run_SpecGen_guild_lnRR)
Table E17

Table E17: Regression coefficients (estimate), 95% confidence intervals (CIs), and variance explained, R2[marginal] (R2) = 6.15% from the meta-regression of lnRR with Diet_guild.

# getting estimates
res_mr_SpecGen_guild_lnRR1 <- get_pred1(mr_SpecGen_guild_lnRR1, mod = "Diet_guild")
res_mr_SpecGen_guild_lnRR <- map(mr_SpecGen_guild_lnRR, ~ get_pred2(.x, mod = "Diet_guild"))

# a list of the numbers to take out unnecessary contrasts
contra_list <- Map(seq, from=1, to=1:3)

# you need to flatten twice: first to make it a list and make it a vector
# I guess we can make it a loop (or vectorise)
res_mr_SpecGen_guild_lnRR2 <- map2_dfr(res_mr_SpecGen_guild_lnRR, contra_list, ~.x[-(.y), ]) 

# creating a table
mr_results(res_mr_SpecGen_guild_lnRR1, res_mr_SpecGen_guild_lnRR2) %>% 
  kable("html",  digits = 3) %>%
  kable_styling("striped", position = "left") %>%
  scroll_box(width = "100%", height = "300px")
Fixed effect Estimate Lower CI [0.025] Upper CI [0.975] P value Lower PI [0.025] Upper PI [0.975]
Generalist:Chewing arthropods -0.339 -0.513 -0.165 0.000 -1.170 0.492
Specialist:Chewing arthropods -0.382 -0.571 -0.194 0.000 -1.217 0.452
Generalist:Fluid-feeding arthropods -0.141 -0.387 0.105 0.261 -0.990 0.708
Specialist:Fluid-feeding arthropods -0.149 -0.302 0.004 0.056 -0.976 0.678
Generalist:Chewing arthropods-Specialist:Chewing arthropods -0.044 -0.297 0.210 0.737 -0.895 0.808
Generalist:Chewing arthropods-Generalist:Fluid-feeding arthropods 0.198 -0.103 0.499 0.197 -0.669 1.065
Generalist:Chewing arthropods-Specialist:Fluid-feeding arthropods 0.190 -0.040 0.420 0.105 -0.655 1.035
Specialist:Chewing arthropods-Generalist:Fluid-feeding arthropods 0.242 -0.068 0.551 0.126 -0.629 1.112
Specialist:Chewing arthropods-Specialist:Fluid-feeding arthropods 0.234 -0.006 0.473 0.056 -0.614 1.081
Generalist:Fluid-feeding arthropods-Specialist:Fluid-feeding arthropods -0.008 -0.298 0.282 0.957 -0.871 0.855

Change in SD: lnVR

# meta-regression: multiple intercepts
mr_SpecGen_guild_lnVR1 <- rma.mv(
  yi = lnVR,
  V = VCV_lnVR2,
  mods = ~ Diet_guild - 1,
  test = "t",
  random = list(~1|Herbivore_Phylogeny, ~1|Herbivore_Latin_name, 
                       ~1|Study, ~1|Effect),
  data = gdat
)

# getting marginal R2
r2_mr_SpecGen_guild_lnVR1 <- r2_ml(mr_SpecGen_guild_lnVR1)

# # meta-regression: contrasts x 7
# getting the level names out
level_names <- levels(gdat$Diet_guild)

# helper function to run metafor meta-regression
run_SpecGen_guild_lnVR <- function(name) {
  rma.mv(yi = lnVR, 
         V = VCV_lnVR2,
         mods = ~ relevel(Diet_guild, ref = name), 
         test = "t",
         random = list(~1|Herbivore_Phylogeny, ~1|Herbivore_Latin_name, 
                       ~1|Study, ~1|Effect),
         data = gdat)
}

# results of meta-regression including all contrast results; taking the last level out ([-length(level_names)])
mr_SpecGen_guild_lnVR <- map(level_names[-length(level_names)], run_SpecGen_guild_lnVR)
Table E18

Table E18: Regression coefficients (estimate), 95% confidence intervals (CIs), and variance explained, R2[marginal] (R2) = 1.2% from the meta-regression of lnVR with Diet_guild.

# getting estimates
res_mr_SpecGen_guild_lnVR1 <- get_pred1(mr_SpecGen_guild_lnVR1, mod = "Diet_guild")
res_mr_SpecGen_guild_lnVR <- map(mr_SpecGen_guild_lnVR, ~ get_pred2(.x, mod = "Diet_guild"))

# a list of the numbers to take out unnecessary contrasts
contra_list <- Map(seq, from=1, to=1:3)

# you need to flatten twice: first to make it a list and make it a vector
# I guess we can make it a loop (or vectorise)
res_mr_SpecGen_guild_lnVR2 <- map2_dfr(res_mr_SpecGen_guild_lnVR, contra_list, ~.x[-(.y), ]) 

# creating a table
mr_results(res_mr_SpecGen_guild_lnVR1, res_mr_SpecGen_guild_lnVR2) %>% 
  kable("html",  digits = 3) %>%
  kable_styling("striped", position = "left") %>%
  scroll_box(width = "100%", height = "300px")
Fixed effect Estimate Lower CI [0.025] Upper CI [0.975] P value Lower PI [0.025] Upper PI [0.975]
Generalist:Chewing arthropods -0.068 -0.266 0.129 0.497 -1.249 1.112
Specialist:Chewing arthropods -0.107 -0.328 0.115 0.344 -1.291 1.078
Generalist:Fluid-feeding arthropods -0.132 -0.438 0.174 0.399 -1.335 1.071
Specialist:Fluid-feeding arthropods 0.039 -0.144 0.222 0.675 -1.139 1.217
Generalist:Chewing arthropods-Specialist:Chewing arthropods -0.038 -0.331 0.254 0.798 -1.238 1.161
Generalist:Chewing arthropods-Generalist:Fluid-feeding arthropods -0.063 -0.428 0.301 0.733 -1.282 1.156
Generalist:Chewing arthropods-Specialist:Fluid-feeding arthropods 0.107 -0.160 0.375 0.431 -1.086 1.301
Specialist:Chewing arthropods-Generalist:Fluid-feeding arthropods -0.025 -0.403 0.353 0.896 -1.248 1.198
Specialist:Chewing arthropods-Specialist:Fluid-feeding arthropods 0.146 -0.137 0.428 0.312 -1.052 1.343
Generalist:Fluid-feeding arthropods-Specialist:Fluid-feeding arthropods 0.171 -0.186 0.527 0.347 -1.046 1.387
Figure 4E-F
## Figure 3E
p26 <- orchard_plot(mr_SpecGen_guild_lnRR1, data= gdat, group = 'Study',mod="Diet_guild", xlab = "log(Response Ratio) (lnRR)", alpha = 0.2,  angle = 45) 

## Figure 3F
p27 <- orchard_plot(mr_SpecGen_guild_lnVR1, data= gdat, group = 'Study',mod="Diet_guild", xlab = "log(Response Ratio) (lnVR)", alpha = 0.2,  angle = 45) 

#ggsave(here("fig", "SpecGen_guild.png"))

Model selection: multi-predictor model

Here we build the best model via an AICc based model selection method implemented in the R package MuMin(Barton 2009). For the full model, we had 4 variables: Plant_lifespan, Poaceae_or_Non, Herbivore_diet_breadth, and Feeding_guild. We conducted with the full dataset (dat); therefore, we did not include any interaction terms (e.g. Lifespan_guild).

Model selection: lnRR

# making metafor talk to MuMIn
eval(metafor:::.MuMIn)
# use method = "ML" so that we can compare AIC
mr_full_lnRR <- rma.mv(
  yi = lnRR,
  V = VCV_lnRR,
  mods = ~ Plant_lifespan +
    Poaceae_or_Non +
    Herbivore_diet_breadth +
    Feeding_guild,
  test = "t",
  random = list(~1|Herbivore_Phylogeny, ~1|Herbivore_Latin_name, 
                       ~1|Study, ~1|Effect),
  method = "ML", # for model selection
  data = dat
)
# calling required functions
#getCall(mr_full_lnRR)
# dredge(full.model, evaluate=F) # show all candidate models
# n = 32 model exist
candidates_lnRR <- dredge(mr_full_lnRR, trace = 2)
## 
  |                                                                            
  |                                                                      |   0%
  |                                                                            
  |====                                                                  |   6%
  |                                                                            
  |=========                                                             |  12%
  |                                                                            
  |=============                                                         |  19%
  |                                                                            
  |==================                                                    |  25%
  |                                                                            
  |======================                                                |  31%
  |                                                                            
  |==========================                                            |  38%
  |                                                                            
  |===============================                                       |  44%
  |                                                                            
  |===================================                                   |  50%
  |                                                                            
  |=======================================                               |  56%
  |                                                                            
  |============================================                          |  62%
  |                                                                            
  |================================================                      |  69%
  |                                                                            
  |====================================================                  |  75%
  |                                                                            
  |=========================================================             |  81%
  |                                                                            
  |=============================================================         |  88%
  |                                                                            
  |==================================================================    |  94%
saveRDS(candidates_lnRR, file = here("Rdata", "candidates_lnRR.rds"))
# making metafor talk to MuMIn
eval(metafor:::.MuMIn)
candidates_lnRR <- readRDS(file = here("Rdata", "candidates_lnRR.rds"))
# displays delta AICc <2
candidates_aic2_lnRR <- subset(candidates_lnRR, delta < 2) 
# model averaging
# it seems like models are using z values rather than t values (which will be OK)
mr_averaged_aic2_lnRR <- summary(model.avg(candidates_lnRR, delta < 2)) 
# relative importance of each predictor for all the models
importance_lnRR <- sw(candidates_lnRR)

# use REML if not for model comparison
model1_lnRR <- rma.mv(
  yi = lnRR,
  V = VCV_lnRR, 
  mods = ~ Feeding_guild,
  test = "t",
  random = list(~1|Herbivore_Phylogeny, ~1|Herbivore_Latin_name, 
                       ~1|Study, ~1|Effect),
  method = "REML", 
  data = dat
)

model2_lnRR <- rma.mv(
  yi = lnRR,
  V = VCV_lnRR, 
  mods = ~ Feeding_guild + Poaceae_or_Non,
  test = "t",
  random = list(~1|Herbivore_Phylogeny, ~1|Herbivore_Latin_name, 
                       ~1|Study, ~1|Effect),
  method = "REML", 
  data = dat
)
Table E19

Table E19: The top 2 models (out of 16 possible models) within the \(\Delta\)AIC difference of 2, and which 4 variables: Plant_lifespan, Poaceae_or_Non, Herbivore_diet_breadth, and Feeding_guild were included (indicated by \(+\)); model weights (for the 4 models) and the sum of weights for each of the variables (from the 16 models) are included.

# creating a table

tibble(
  `Model (variable weight)` = c("Model1", "Model2", "(Sum of weights)"),
  Feeding_guild = c(if_else(candidates_aic2_lnRR$Feeding_guild == "+", "$+$", "NA"), round(importance_lnRR[1], 3)),
  Poaceae_or_Non = c(if_else(candidates_aic2_lnRR$Poaceae_or_Non == "+", "$+$", "NA"), round(importance_lnRR[2], 3)),
  Herbivore_diet_breadth = c(if_else(candidates_aic2_lnRR$Herbivore_diet_breadth == "+", "$+$", "NA"), round(importance_lnRR[3], 3)),
  Plant_lifespan = c(if_else(candidates_aic2_lnRR$Plant_lifespan == "+", "$+$", "NA"), round(importance_lnRR[4], 3)),
  delta_AICc = c(candidates_aic2_lnRR$delta, NA),
  Weight = c(candidates_aic2_lnRR$weight, NA)
) %>%
  kable("html", digits = 3) %>%
  kable_styling("striped", position = "left") 
Model (variable weight) Feeding_guild Poaceae_or_Non Herbivore_diet_breadth Plant_lifespan delta_AICc Weight
Model1 \(+\) NA NA NA 0.000 0.629
Model2 \(+\) \(+\) NA NA 1.057 0.371
(Sum of weights) 0.78 0.462 0.326 0.265 NA NA

Model averaging: lnRR

Table E20

Table E20: The average estimates for regression coefficients (Estimate), 95% confidence intervals (CIs), and variance explained, R2[marginal] (R2) from the 4 best meta-regression models.

# getting averaged R2 and variance components not provided by the MuMIn package
#average_sigma2 <- weighted.mean(x = c(model1_lnRR$sigma2, model2_lnRR$sigma2), w = candidates_aic2_lnRR$weight)
average_R2_lnRR <- weighted.mean(x = c(r2_ml(model1_lnRR)[1], r2_ml(model2_lnRR)[1]), w = candidates_aic2_lnRR$weight)
# creating a table
tibble(
  `Fixed effect` = row.names(mr_averaged_aic2_lnRR$coefmat.full),
  Estimate = mr_averaged_aic2_lnRR$coefmat.full[, 1],
  `Lower CI [0.025]` = mr_averaged_aic2_lnRR$coefmat.full[, 1] - mr_averaged_aic2_lnRR$coefmat.full[, 2] * qnorm(0.975),
  `Upper CI  [0.975]` = mr_averaged_aic2_lnRR$coefmat.full[, 1] + mr_averaged_aic2_lnRR$coefmat.full[, 2] * qnorm(0.975),
  `P value` = as.numeric(mr_averaged_aic2_lnRR$coefmat.full[,4]),
  `R2` = c(average_R2_lnRR, rep(NA, 7))
) %>%
  kable("html", digits = 3) %>%
  kable_styling("striped", position = "left") %>% scroll_box(width = "100%", 
    height = "300px")
Fixed effect Estimate Lower CI [0.025] Upper CI [0.975] P value R2
intrcpt -1.008 -2.183 0.168 0.093 0.1
Feeding_guildLeaf-mining arthropods -0.148 -1.668 1.372 0.849 NA
Feeding_guildCell-feeding arthropods 0.647 -0.586 1.881 0.304 NA
Feeding_guildMammalian chewers 0.438 -0.766 1.642 0.476 NA
Feeding_guildBoring arthropods 0.543 -0.640 1.726 0.368 NA
Feeding_guildChewing arthropods 0.648 -0.528 1.823 0.280 NA
Feeding_guildFluid-feeding arthropods 0.865 -0.311 2.042 0.149 NA
Poaceae_or_NonPoaceae -0.031 -0.155 0.094 0.632 NA

Model selection: lnVR

# making metafor talk to MuMIn
eval(metafor:::.MuMIn)
# use method = "ML" so that we can compare AIC
mr_full_lnVR <- rma.mv(
  yi = lnVR,
  V = VCV_lnVR,
  mods = ~ Plant_lifespan +
    Poaceae_or_Non +
    Herbivore_diet_breadth +
    Feeding_guild,
  test = "t",
  random = list(~1|Herbivore_Phylogeny, ~1|Herbivore_Latin_name, 
                       ~1|Study, ~1|Effect),
  method = "ML", # for model selection
  data = dat
)
# calling required functions
#getCall(mr_full_lnVR)
# dredge(full.model, evaluate=F) # show all candidate models
# n = 32 model exist
candidates_lnVR <- dredge(mr_full_lnVR, trace = 2)
## 
  |                                                                            
  |                                                                      |   0%
  |                                                                            
  |====                                                                  |   6%
  |                                                                            
  |=========                                                             |  12%
  |                                                                            
  |=============                                                         |  19%
  |                                                                            
  |==================                                                    |  25%
  |                                                                            
  |======================                                                |  31%
  |                                                                            
  |==========================                                            |  38%
  |                                                                            
  |===============================                                       |  44%
  |                                                                            
  |===================================                                   |  50%
  |                                                                            
  |=======================================                               |  56%
  |                                                                            
  |============================================                          |  62%
  |                                                                            
  |================================================                      |  69%
  |                                                                            
  |====================================================                  |  75%
  |                                                                            
  |=========================================================             |  81%
  |                                                                            
  |=============================================================         |  88%
  |                                                                            
  |==================================================================    |  94%
saveRDS(candidates_lnVR, file = here("Rdata", "candidates_lnVR.rds"))
# making metafor talk to MuMIn
eval(metafor:::.MuMIn)
candidates_lnVR <- readRDS(file = here("Rdata", "candidates_lnVR.rds"))
# displays delta AICc <2
candidates_aic2_lnVR <- subset(candidates_lnVR, delta < 2) 
# model averaging
# it seems like models are using z values rather than t values (which will be OK)
mr_averaged_aic2_lnVR <- summary(model.avg(candidates_lnVR, delta < 2)) 

# relative importance of each predictor
importance_lnVR <- sw(candidates_lnVR)
# use REML if not for model comparison
model1_lnVR <- rma.mv(
  yi = lnVR,
  V = VCV_lnVR, 
  #mods = ~ 1,
  test = "t",
  random = list(~1|Herbivore_Phylogeny, ~1|Herbivore_Latin_name, 
                       ~1|Study, ~1|Effect),
  method = "REML", 
  data = dat
)
model2_lnVR <- rma.mv(
  yi = lnVR,
  V = VCV_lnVR, 
  mods = ~ Poaceae_or_Non, 
  test = "t",
  random = list(~1|Herbivore_Phylogeny, ~1|Herbivore_Latin_name, 
                       ~1|Study, ~1|Effect),
  method = "REML", 
  data = dat
)
model3_lnVR <- rma.mv(
  yi = lnVR,
  V = VCV_lnVR, 
  mods = ~ Plant_lifespan,
  test = "t",
  random = list(~1|Herbivore_Phylogeny, ~1|Herbivore_Latin_name, 
                       ~1|Study, ~1|Effect),
  method = "REML", 
  data = dat
)
model4_lnVR <- rma.mv(
  yi = lnVR,
  V = VCV_lnVR, 
  mods = ~ Herbivore_diet_breadth + Poaceae_or_Non,
  test = "t",
  random = list(~1|Herbivore_Phylogeny, ~1|Herbivore_Latin_name, 
                       ~1|Study, ~1|Effect),
  method = "REML", 
  data = dat
)
model5_lnVR <- rma.mv(
  yi = lnVR,
  V = VCV_lnVR, 
  mods = ~ Plant_lifespan + Poaceae_or_Non,
  test = "t",
  random = list(~1|Herbivore_Phylogeny, ~1|Herbivore_Latin_name, 
                       ~1|Study, ~1|Effect),
  method = "REML", 
  data = dat
)
model6_lnVR <- rma.mv(
  yi = lnVR,
  V = VCV_lnVR, 
  mods = ~ Herbivore_diet_breadth,
  test = "t",
  random = list(~1|Herbivore_Phylogeny, ~1|Herbivore_Latin_name, 
                       ~1|Study, ~1|Effect),
  method = "REML", 
  data = dat
)
Table E21

Table E21: The top 6 models (out of 16 possible models) within the \(\Delta\)AIC difference of 2, and which 4 variables: Plant_lifespan, Poaceae_or_Non, Herbivore_diet_breadth, and Feeding_guild were included (indicated by \(+\)); model weights (for the 5 models) and the sum of weights for each of the variables (from the 16 models) are included.

# creating a table
tibble(
  `Model (variable weight)` = c("Model1", "Model2", "Model3", "Model4", "Model5", "Model6", "(Sum of weights)"),
  Poaceae_or_Non = c(if_else(candidates_aic2_lnVR$Poaceae_or_Non == "+", "$+$", "NA"), round(importance_lnVR[1], 3)),
  Plant_lifespan = c(if_else(candidates_aic2_lnVR$Plant_lifespan == "+", "$+$", "NA"), round(importance_lnVR[2], 3)),
  Herbivore_diet_breadth = c(if_else(candidates_aic2_lnVR$Herbivore_diet_breadth == "+", "$+$", "NA"), round(importance_lnVR[3], 3)),
  Feeding_guild = c(if_else(candidates_aic2_lnVR$Feeding_guild == "+", "$+$", "NA"), round(importance_lnVR[4], 3)),
  delta_AICc = c(candidates_aic2_lnVR$delta, NA),
  Weight = c(candidates_aic2_lnVR$weight, NA)
) %>%
  kable("html", digits = 3) %>%
  kable_styling("striped", position = "left") 
Model (variable weight) Poaceae_or_Non Plant_lifespan Herbivore_diet_breadth Feeding_guild delta_AICc Weight
Model1 NA NA NA NA 0.000 0.259
Model2 \(+\) NA NA NA 0.101 0.246
Model3 NA \(+\) NA NA 1.020 0.155
Model4 \(+\) NA \(+\) NA 1.509 0.122
Model5 \(+\) \(+\) NA NA 1.640 0.114
Model6 NA NA \(+\) NA 1.803 0.105
(Sum of weights) 0.477 0.35 0.312 0.015 NA NA

Model averaging: lnVR

Table E22

Table E22: The average estimates for regression coefficients (Estimate), 95% confidence intervals (CIs), and variance explained, R2[marginal] (R2) from the 4 best meta-regression models.

# getting averaged R2 and variance components not provided by the MuMIn package
#average_sigma2 <- weighted.mean(x = c(model1_lnVR$sigma2, model2_lnVR$sigma2), w = candidates_aic2_lnVR$weight)
average_R2_lnVR <- weighted.mean(x = c(r2_ml(model1_lnVR)[1], r2_ml(model2_lnVR)[1], r2_ml(model3_lnVR)[1], 
                                       r2_ml(model4_lnVR)[1],  r2_ml(model5_lnVR)[1],  r2_ml(model6_lnVR)[1]), 
                                 w = candidates_aic2_lnVR$weight)
# creating a table
tibble(
  `Fixed effect` = row.names(mr_averaged_aic2_lnVR$coefmat.full),
  Estimate = mr_averaged_aic2_lnVR$coefmat.full[, 1],
  `Lower CI [0.025]` = mr_averaged_aic2_lnVR$coefmat.full[, 1] - mr_averaged_aic2_lnVR$coefmat.full[, 2] * qnorm(0.975),
  `Upper CI  [0.975]` = mr_averaged_aic2_lnVR$coefmat.full[, 1] + mr_averaged_aic2_lnVR$coefmat.full[, 2] * qnorm(0.975),
  `P value` = as.numeric(mr_averaged_aic2_lnVR$coefmat.full[,4]),
  `R2` = c(average_R2_lnVR, rep(NA, 3))
) %>%
  kable("html", digits = 3) %>%
  kable_styling("striped", position = "left") %>% scroll_box(width = "100%")
Fixed effect Estimate Lower CI [0.025] Upper CI [0.975] P value R2
intrcpt -0.049 -0.220 0.122 0.574 0.005
Poaceae_or_NonPoaceae -0.062 -0.242 0.117 0.496 NA
Plant_lifespanPerennial 0.018 -0.079 0.115 0.717 NA
Herbivore_diet_breadthSpecialist 0.014 -0.087 0.114 0.789 NA

Publication Bias Analysis

Funnel plot

Residual funnel plot: lnRR

Figure E7
#
res_funnel_plot_lnRR <- rma.mv(
  yi = lnRR,
  V = VCV_lnRR, 
  mods = ~ Poaceae_or_Non +
    Feeding_guild,
  test = "t",
  random = list(~1|Herbivore_Phylogeny, ~1|Herbivore_Latin_name, 
                       ~1|Study, ~1|Effect),
  method = "REML", 
  data = dat
)
funnel(res_funnel_plot_lnRR, 
       yaxis = "seinv", 
       level = c(90, 95, 99), 
       shade = c("white", "gray55", "gray75"), 
       refline = 0, legend = TRUE)

Figure E7: A residual funnel plot from the meta-regression model with Plant_lifespan, Poaceae_or_Non, & Feeding_guild; ‘residual value’ is on lnRR and ‘inverse standard error’ is precision 1/sqrt(varlnRR).

Egger regression

Univariate Egger regression: lnRR

#
# the use of effective sampling size - more than varlnRR
#  effective sample size
dat$Effective_N <- 1/dat$Nc + 1/dat$Ne


egger_regression_uni_lnRR <- rma.mv(
  yi = lnRR,
  V = VCV_lnRR, 
  mods = ~ sqrt(Effective_N),
  test = "t",
  random = list(~1|Herbivore_Phylogeny, ~1|Herbivore_Latin_name, 
                       ~1|Study, ~1|Effect),
  method = "REML", 
  data = dat
)
Table E23

Table E23: Regression coefficients (Estimate), 95% confidence intervals (CIs), P values, variance explained, R2[marginal] (R2) from the meta-regression with sqrt(Effective_N).

# getting marginal R2
r2_egger_regression_uni_lnRR <- r2_ml(egger_regression_uni_lnRR)
# getting estimates: name does not work for slopes

res_egger_regression_uni_lnRR <- get_pred2(egger_regression_uni_lnRR, mod = "sqrt(varlnRR)")
# creating a table
tibble(
  `Fixed effect` = row.names(egger_regression_uni_lnRR$beta),
  Estimate = c(res_egger_regression_uni_lnRR$estimate),
  `Lower CI [0.025]` = c(res_egger_regression_uni_lnRR$lowerCL),
  `Upper CI  [0.975]` = c(res_egger_regression_uni_lnRR$upperCL),
  `P value` = c(egger_regression_uni_lnRR$pval),
  `R2` = c(r2_egger_regression_uni_lnRR[1], NA)
) %>%
  kable("html", digits = 3) %>%
  kable_styling("striped", position = "left")
Fixed effect Estimate Lower CI [0.025] Upper CI [0.975] P value R2
intrcpt 0.000 0.000 0.000 0.010 0.008
sqrt(Effective_N) -0.257 -0.547 0.034 0.084 NA
Figure E8
pred_egger_regression_uni_lnRR <- predict.rma(egger_regression_uni_lnRR)
# plotting
fit_egger_regression_uni_lnRR <- dat %>%
  mutate(
    ymin = pred_egger_regression_uni_lnRR$ci.lb,
    ymax = pred_egger_regression_uni_lnRR$ci.ub,
    ymin2 = pred_egger_regression_uni_lnRR$cr.lb,
    ymax2 = pred_egger_regression_uni_lnRR$cr.ub,
    pred = pred_egger_regression_uni_lnRR$pred
  ) %>%
  ggplot(aes(x = sqrt(varlnRR), y = lnRR, size = sqrt(1/varlnRR))) +
  geom_point(shape = 21, fill = "grey90") +
  # geom_ribbon(aes(ymin = ymin, ymax = ymax), fill = "#0072B2")  + # not quite sure why this does not work
  geom_smooth(aes(y = ymin2), method = "loess", se = FALSE, lty = "dotted", lwd = 0.25, colour = "#0072B2") +
  geom_smooth(aes(y = ymax2), method = "loess", se = FALSE, lty = "dotted", lwd = 0.25, colour = "#0072B2") +
  geom_smooth(aes(y = ymin), method = "loess", se = FALSE, lty = "dotted", lwd = 0.25, colour = "#D55E00") +
  geom_smooth(aes(y = ymax), method = "loess", se = FALSE, lty = "dotted", lwd = 0.25, colour = "#D55E00") +
  geom_smooth(aes(y = pred), method = "loess", se = FALSE, lty = "dashed", lwd = 0.5, colour = "black") +
  ylim(-5, 3) + xlim(0.05, 7) +
  labs(x = "sqrt(effective sample size)", y = "lnRR (effect size)", size = "Precision (1/SE)") +
  guides(fill = "none", colour = "none") +
  # themes
  theme_bw() +
  theme(legend.position = c(0, 1), legend.justification = c(0, 1)) +
  theme(legend.direction = "horizontal") +
  # theme(legend.background = element_rect(fill = "white", colour = "black")) +
  theme(legend.background = element_blank()) +
  theme(axis.text.y = element_text(size = 10, colour = "black", hjust = 0.5, angle = 90))
fit_egger_regression_uni_lnRR

Figure E8: A bubble plot showing a predicted regression line for the contentious variable sqrt(Effective_N), indicating 95% confidence regions (orange dotted lines) and 95% prediction regions (blue dotted lines), with observed effect sizes based on various sample sizes.

Multivariate Egger regression: lnRR

#
egger_regression_mul_lnRR <- rma.mv(
  yi = lnRR,
  V = VCV_lnRR, 
  mods = ~ sqrt(Effective_N) +
    Poaceae_or_Non +
    Feeding_guild,
  test = "t",
  random = list(~1|Herbivore_Phylogeny, ~1|Herbivore_Latin_name, 
                       ~1|Study, ~1|Effect),
  method = "REML", 
  data = dat
)
Table E24

Table E24: Regression coefficients (Estimate), 95% confidence intervals (CIs), and variance explained, R2[marginal] (R2) from the meta-regression with sqrt(Effective_N), Poaceae_or_Non, & Feeding_guild.

# getting marginal R2
r2_egger_regression_mul_lnRR <- r2_ml(egger_regression_mul_lnRR)
# creating a table
tibble(
  `Fixed effect` = row.names(egger_regression_mul_lnRR$beta),
  Estimate = c(egger_regression_mul_lnRR$b),
  `Lower CI [0.025]` = c(egger_regression_mul_lnRR$ci.lb),
  `Upper CI  [0.975]` = c(egger_regression_mul_lnRR$ci.ub),
  `P value` = c(egger_regression_mul_lnRR$pval),
  `R2` = c(r2_egger_regression_mul_lnRR[1], rep(NA, 8))
) %>%
  kable("html", digits = 3) %>%
  kable_styling("striped", position = "left") %>% scroll_box(width = "100%", 
    height = "300px")
Fixed effect Estimate Lower CI [0.025] Upper CI [0.975] P value R2
intrcpt -0.846 -2.055 0.363 0.170 0.105
sqrt(Effective_N) -0.191 -0.484 0.102 0.201 NA
Poaceae_or_NonPoaceae -0.089 -0.256 0.077 0.292 NA
Feeding_guildLeaf-mining arthropods -0.180 -1.729 1.370 0.820 NA
Feeding_guildCell-feeding arthropods 0.602 -0.657 1.862 0.348 NA
Feeding_guildMammalian chewers 0.442 -0.785 1.668 0.480 NA
Feeding_guildBoring arthropods 0.543 -0.660 1.745 0.376 NA
Feeding_guildChewing arthropods 0.617 -0.577 1.812 0.311 NA
Feeding_guildFluid-feeding arthropods 0.826 -0.370 2.023 0.176 NA
Figure E9
pred_egger_regress_mul_lnRR <- predict.rma(egger_regression_mul_lnRR)
# plotting
fit_egger_regression_mul_lnRR <- dat %>% filter(!is.na(Plant_lifespan)) %>% 
  mutate(
    ymin = pred_egger_regress_mul_lnRR$ci.lb,
    ymax = pred_egger_regress_mul_lnRR$ci.ub,
    ymin2 = pred_egger_regress_mul_lnRR$cr.lb,
    ymax2 = pred_egger_regress_mul_lnRR$cr.ub,
    pred = pred_egger_regress_mul_lnRR$pred
  ) %>%
  ggplot(aes(x = sqrt(varlnRR), y = lnRR, size = sqrt(1/varlnRR))) +
  geom_point(shape = 21, fill = "grey90") +
  # geom_ribbon(aes(ymin = ymin, ymax = ymax), fill = "#0072B2")  + # not quite sure why this does not work
  geom_smooth(aes(y = ymin2), method = "loess", se = FALSE, lty = "dotted", lwd = 0.25, colour = "#0072B2") +
  geom_smooth(aes(y = ymax2), method = "loess", se = FALSE, lty = "dotted", lwd = 0.25, colour = "#0072B2") +
  geom_smooth(aes(y = ymin), method = "loess", se = FALSE, lty = "dotted", lwd = 0.25, colour = "#D55E00") +
  geom_smooth(aes(y = ymax), method = "loess", se = FALSE, lty = "dotted", lwd = 0.25, colour = "#D55E00") +
  geom_smooth(aes(y = pred), method = "loess", se = FALSE, lty = "dashed", lwd = 0.5, colour = "black") +
  ylim(-5, 3) + xlim(0.05, 7) +
  labs(x = "sqrt(effective sample size)", y = "lnRR (effect size)", size = "Precision (1/SE)") +
  guides(fill = "none", colour = "none") +
  # themes
  theme_bw() +
  theme(legend.position = c(0, 1), legend.justification = c(0, 1)) +
  theme(legend.direction = "horizontal") +
  # theme(legend.background = element_rect(fill = "white", colour = "black")) +
  theme(legend.background = element_blank()) +
  theme(axis.text.y = element_text(size = 10, colour = "black", hjust = 0.5, angle = 90))
fit_egger_regression_mul_lnRR

Figure E9: A bubble plot showing a predicted loess line for the contentious variable sqrt(Effective_N) (given the values of the other 3 variables in the model), with their 95% confidence regions (orange dotted lines) and 95% prediction regions (blue dotted lines) with observed effect sizes based on various sample sizes. Note that the lines are not linear as these are based on multivariate predictions of the data points.

PEESE (precision-effect estimation with standard error)

#
peese_lnRR <- rma.mv(
  yi = lnRR,
  V = VCV_lnRR, 
  mods = ~ Effective_N,
  test = "t",
  random = list(~1|Herbivore_Phylogeny, ~1|Herbivore_Latin_name, 
                       ~1|Study, ~1|Effect),
  method = "REML", 
  data = dat
)
Table E25

Table E25: Regression coefficients (Estimate), 95% confidence intervals (CIs), and variance explained, R2[marginal] (R2) from the meta-regression with .

# getting marginal R2
r2_peese_lnRR <- r2_ml(peese_lnRR)
# getting estimates: name does not work for slopes
res_epeese_lnRR <- get_pred2(peese_lnRR, mod = "varlnRR")
# creating a table
tibble(
  `Fixed effect` = row.names(peese_lnRR$beta),
  Estimate = c(res_epeese_lnRR$estimate),
  `Lower CI [0.025]` = c(res_epeese_lnRR$lowerCL),
  `Upper CI  [0.975]` = c(res_epeese_lnRR$upperCL),
  `P value` = c(peese_lnRR$pval),
  `R2` = c(r2_peese_lnRR[1], NA)
) %>%
  kable("html", digits = 3) %>%
    kable_styling("striped", position = "left")
Fixed effect Estimate Lower CI [0.025] Upper CI [0.975] P value R2
intrcpt 0.000 0.000 0.000 0.000 0.01
Effective_N -0.276 -0.549 -0.003 0.048 NA

Time-lag bias

Univariate time-lag bias: lnRR

#
time_lag_effect_uni_lnRR <- rma.mv(
  yi = lnRR,
  V = VCV_lnRR, 
  mods = ~ Year,
  test = "t",
  random = list(~1|Herbivore_Phylogeny, ~1|Herbivore_Latin_name, 
                       ~1|Study, ~1|Effect),
  method = "REML", 
  data = dat
)
Table26

Table E26: Regression coefficients (Estimate), 95% confidence intervals (CIs), P value and variance explained, R2[marginal] (R2) from the meta-regression with Year.

# getting marginal R2
r2_time_lag_effect_uni_lnRR <- r2_ml(time_lag_effect_uni_lnRR)
# getting estimates: name does not work for slopes

res_time_lag_effect_uni_lnRR <- get_pred2(time_lag_effect_uni_lnRR, mod = "Year")
# creating a table
tibble(
  `Fixed effect` = row.names(time_lag_effect_uni_lnRR$beta),
  Estimate = c(res_time_lag_effect_uni_lnRR$estimate),
  `Lower CI [0.025]` = c(res_time_lag_effect_uni_lnRR$lowerCL),
  `Upper CI  [0.975]` = c(res_time_lag_effect_uni_lnRR$upperCL),
  `P value` = time_lag_effect_uni_lnRR$pval,
  `R2` = c(r2_time_lag_effect_uni_lnRR[1], NA)
) %>%
  kable("html", digits = 3) %>%
  kable_styling("striped", position = "left")
Fixed effect Estimate Lower CI [0.025] Upper CI [0.975] P value R2
intrcpt 0.000 0.000 0.000 0.004 0.048
Year -0.015 -0.024 -0.005 0.003 NA
Figure E10
pred_time_lag_effect_uni_lnRR <- predict.rma(time_lag_effect_uni_lnRR)
# plotting
fit_time_lag_effect_uni_lnRR <- dat %>%
  mutate(
    ymin = pred_time_lag_effect_uni_lnRR$ci.lb,
    ymax = pred_time_lag_effect_uni_lnRR$ci.ub,
    ymin2 = pred_time_lag_effect_uni_lnRR$cr.lb,
    ymax2 = pred_time_lag_effect_uni_lnRR$cr.ub,
    pred = pred_time_lag_effect_uni_lnRR$pred
  ) %>%
  ggplot(aes(x = Year, y = lnRR, size = sqrt(1/varlnRR))) +
  geom_point(shape = 21, fill = "grey90") +
  # geom_ribbon(aes(ymin = ymin, ymax = ymax), fill = "#0072B2")  + # not quite sure why this does not work
  geom_smooth(aes(y = ymin2), method = "loess", se = FALSE, lty = "dotted", lwd = 0.25, colour = "#0072B2") +
  geom_smooth(aes(y = ymax2), method = "loess", se = FALSE, lty = "dotted", lwd = 0.25, colour = "#0072B2") +
  geom_smooth(aes(y = ymin), method = "loess", se = FALSE, lty = "dotted", lwd = 0.25, colour = "#D55E00") +
  geom_smooth(aes(y = ymax), method = "loess", se = FALSE, lty = "dotted", lwd = 0.25, colour = "#D55E00") +
  geom_smooth(aes(y = pred), method = "loess", se = FALSE, lty = "dashed", lwd = 0.5, colour = "black") +
  ylim(-4, 3.5) + xlim(1989, 2020) +
  #scale_x_continuous(breaks = c(1995, 2000, 2005, 2010, 2015, 2020)) +
  labs(x = "Year", y = "lnRR (effect size)", size ="Precision (1/SE)") +
  guides(fill = "none", colour = "none") +
  # themes
  theme_bw() +
  theme(legend.position = c(0, 1), legend.justification = c(0, 1)) +
  theme(legend.direction = "horizontal") +
  # theme(legend.background = element_rect(fill = "white", colour = "black")) +
  theme(legend.background = element_blank()) +
  theme(axis.text.y = element_text(size = 10, colour = "black", hjust = 0.5, angle = 90))

fit_time_lag_effect_uni_lnRR

Figure E10: A bubble plot showing a predicted regression line for the contentious variable Year, indicating 95% confidence regions (orange dotted lines) and 95% prediction regions (blue dotted lines), with observed effect sizes based on various precisions (1/SE).

Multivariate time-lag bias: lnRR

# 
time_lag_effect_mul_lnRR <- rma.mv(
  yi = lnRR,
  V = VCV_lnRR, 
  mods = ~ Year +
      Poaceae_or_Non +
    Feeding_guild,
  test = "t",
  random = list(~1|Herbivore_Phylogeny, ~1|Herbivore_Latin_name, 
                       ~1|Study, ~1|Effect),
  method = "REML", 
  data = dat
)
Table E27

Table E27: Regression coefficients (Estimate), 95% confidence intervals (CIs), P values, and variance explained, R2[marginal] (R2) from the meta-regression with Year, `Plant_lifespan, Poaceae_or_Non, & Feeding_guild.

# getting marginal R2
r2_time_lag_effect_mul_lnRR <- r2_ml(time_lag_effect_mul_lnRR)
# creating a table
tibble(
  `Fixed effect` = row.names(time_lag_effect_mul_lnRR$beta),
  Estimate = c(time_lag_effect_mul_lnRR$b),
  `Lower CI [0.025]` = c(time_lag_effect_mul_lnRR$ci.lb),
  `Upper CI  [0.975]` = c(time_lag_effect_mul_lnRR$ci.ub),
  `P value` = time_lag_effect_mul_lnRR$pval,
  `R2` = c(r2_time_lag_effect_mul_lnRR[1], rep(NA, 8))
) %>%
  kable("html", digits = 3) %>%
  kable_styling("striped", position = "left") %>% scroll_box(width = "100%", 
    height = "300px")
Fixed effect Estimate Lower CI [0.025] Upper CI [0.975] P value R2
intrcpt 27.866 8.785 46.947 0.004 0.139
Year -0.014 -0.024 -0.005 0.003 NA
Poaceae_or_NonPoaceae -0.086 -0.254 0.082 0.317 NA
Feeding_guildLeaf-mining arthropods -0.263 -1.820 1.294 0.740 NA
Feeding_guildCell-feeding arthropods 0.630 -0.634 1.893 0.328 NA
Feeding_guildMammalian chewers 0.406 -0.824 1.636 0.517 NA
Feeding_guildBoring arthropods 0.536 -0.669 1.741 0.383 NA
Feeding_guildChewing arthropods 0.642 -0.554 1.838 0.293 NA
Feeding_guildFluid-feeding arthropods 0.836 -0.362 2.035 0.171 NA
Figure E11
pred_time_lag_effect_mul_lnRR <- predict.rma(time_lag_effect_mul_lnRR)
# plotting
fit_time_lag_effect_mul_lnRR <- dat %>% filter(!is.na(Plant_lifespan)) %>%
  mutate(ymin = pred_time_lag_effect_mul_lnRR$ci.lb,
    ymax = pred_time_lag_effect_mul_lnRR$ci.ub,
    ymin2 = pred_time_lag_effect_mul_lnRR$cr.lb,
    ymax2 = pred_time_lag_effect_mul_lnRR$cr.ub,
    pred = pred_time_lag_effect_mul_lnRR$pred
  ) %>%
  ggplot(aes(x = Year, y = lnRR, size = sqrt(1/varlnRR))) +
  geom_point(shape = 21, fill = "grey90") +
  # geom_ribbon(aes(ymin = ymin, ymax = ymax), fill = "#0072B2")  + # not quite sure why this does not work
  geom_smooth(aes(y = ymin2), method = "loess", se = FALSE, lty = "dotted", lwd = 0.25, colour = "#0072B2") +
  geom_smooth(aes(y = ymax2), method = "loess", se = FALSE, lty = "dotted", lwd = 0.25, colour = "#0072B2") +
  geom_smooth(aes(y = ymin), method = "loess", se = FALSE, lty = "dotted", lwd = 0.25, colour = "#D55E00") +
  geom_smooth(aes(y = ymax), method = "loess", se = FALSE, lty = "dotted", lwd = 0.25, colour = "#D55E00") +
  geom_smooth(aes(y = pred), method = "loess", se = FALSE, lty = "dashed", lwd = 0.5, colour = "black") +
  ylim(-4, 3.5) + xlim(1989, 2020) +
  #scale_x_continuous(breaks = c(1995, 2000, 2005, 2010, 2015, 2020)) +
  labs(x = "Year", y = "lnRR (effect size)", size ="Precision (1/SE)") +
  guides(fill = "none", colour = "none") +
  # themes
  theme_bw() +
  theme(legend.position = c(0, 1), legend.justification = c(0, 1)) +
  theme(legend.direction = "horizontal") +
  # theme(legend.background = element_rect(fill = "white", colour = "black")) +
  theme(legend.background = element_blank()) +
  theme(axis.text.y = element_text(size = 10, colour = "black", hjust = 0.5, angle = 90))

fit_time_lag_effect_mul_lnRR

Figure E11: A bubble plot showing a predicted loess line for the contentious variable Year (given the values of the other 3 variables in the model), with their 95% confidence regions (orange dotted lines) and 95% prediction regions (blue dotted lines) with observed effect sizes based on various sample sizes. Note that the lines are not linear as these are based on multivariate predictions of the data points.

R Session Information

sessionInfo() %>% pander()

R version 4.2.2 (2022-10-31)

Platform: aarch64-apple-darwin20 (64-bit)

locale: en_US.UTF-8||en_US.UTF-8||en_US.UTF-8||C||en_US.UTF-8||en_US.UTF-8

attached base packages: grid, stats, graphics, grDevices, utils, datasets, methods and base

other attached packages: DIZtools(v.0.0.7), MCMCglmm(v.2.34), coda(v.0.19-4), orchaRd(v.2.0), here(v.1.0.1), patchwork(v.1.1.2), performance(v.0.10.2), MuMIn(v.1.47.1), ape(v.5.7-1), metafor(v.3.8-1), metadat(v.1.2-0), Matrix(v.1.5-1), pander(v.0.6.5), magrittr(v.2.0.3), gridExtra(v.2.3), kableExtra(v.1.3.4), lubridate(v.1.9.2), forcats(v.1.0.0), stringr(v.1.5.0), dplyr(v.1.1.0), purrr(v.1.0.1), readr(v.2.1.4), tidyr(v.1.3.0), tibble(v.3.1.8), ggplot2(v.3.4.1) and tidyverse(v.2.0.0)

loaded via a namespace (and not attached): nlme(v.3.1-160), bit64(v.4.0.5), insight(v.0.19.0), webshot(v.0.5.4), httr(v.1.4.4), rprojroot(v.2.0.3), latex2exp(v.0.9.6), tensorA(v.0.36.2), tools(v.4.2.2), bslib(v.0.4.2), utf8(v.1.2.3), R6(v.2.5.1), vipor(v.0.4.5), mgcv(v.1.8-41), colorspace(v.2.1-0), withr(v.2.5.0), tidyselect(v.1.2.0), emmeans(v.1.8.4-1), bit(v.4.0.5), compiler(v.4.2.2), cli(v.3.6.0), rvest(v.1.0.3), pacman(v.0.5.1), xml2(v.1.3.3), labeling(v.0.4.2), sass(v.0.4.5), scales(v.1.2.1), mvtnorm(v.1.1-3), systemfonts(v.1.0.4), digest(v.0.6.31), rmarkdown(v.2.20), svglite(v.2.1.1), pkgconfig(v.2.0.3), htmltools(v.0.5.4), fastmap(v.1.1.0), highr(v.0.10), rlang(v.1.0.6), rstudioapi(v.0.14), jquerylib(v.0.1.4), generics(v.0.1.3), farver(v.2.1.1), jsonlite(v.1.8.4), vroom(v.1.6.1), ggbeeswarm(v.0.7.1), Rcpp(v.1.0.10), munsell(v.0.5.0), fansi(v.1.0.4), lifecycle(v.1.0.3), stringi(v.1.7.12), yaml(v.2.3.7), mathjaxr(v.1.6-0), parallel(v.4.2.2), crayon(v.1.5.2), lattice(v.0.20-45), splines(v.4.2.2), hms(v.1.1.2), knitr(v.1.42), pillar(v.1.8.1), cubature(v.2.0.4.6), estimability(v.1.4.1), corpcor(v.1.6.10), stats4(v.4.2.2), glue(v.1.6.2), evaluate(v.0.20), data.table(v.1.14.8), vctrs(v.0.5.2), tzdb(v.0.3.0), gtable(v.0.3.1), cachem(v.1.0.6), xfun(v.0.37), xtable(v.1.8-4), viridisLite(v.0.4.1), beeswarm(v.0.4.0), timechange(v.0.2.0) and ellipsis(v.0.3.2)

References

Barton, Kamil. 2009. “MuMIn: Multi-Model Inference.” Http://r-Forge. R-Project. Org/Projects/Mumin/.
Hedges, Larry V, Jessica Gurevitch, and Peter S Curtis. 1999. “The Meta-Analysis of Response Ratios in Experimental Ecology.” Ecology 80 (4): 1150–56.
Higgins, Julian PT, Simon G Thompson, Jonathan J Deeks, and Douglas G Altman. 2003. “Measuring Inconsistency in Meta-Analyses.” Bmj 327 (7414): 557–60.
Nakagawa, Shinichi, Malgorzata Lagisz, Rose E O’Dea, Joanna Rutkowska, Yefeng Yang, Daniel Noble, and Alistair M Senior. 2020. “The Orchard Plot: Cultivating a Forest Plot for Use in Ecology, Evolution and Beyond.” Research Synthesis Methods. https://protect-au.mimecast.com/s/lmCzC81VRgcNxxnvS6aDRG?domain=doi.org.
Nakagawa, Shinichi, and Eduardo SA Santos. 2012. “Methodological Issues and Advances in Biological Meta-Analysis.” Evolutionary Ecology 26 (5): 1253–74.
Senior, Alistair M, Catherine E Grueber, Tsukushi Kamiya, Malgorzata Lagisz, Katie O’dwyer, Eduardo SA Santos, and Shinichi Nakagawa. 2016. “Heterogeneity in Ecological and Evolutionary Meta-Analyses: Its Magnitude and Implications.” Ecology 97 (12): 3293–99.
LS0tCnRpdGxlOiAiVmFyaWFibGUgcGxhbnQgc2lsaWNvbiBkZWZlbmNlcyBzdXBwcmVzc2UgaGVyYml2b3JlIHBlcmZvcm1hbmNlIGdsb2JhbGx5IGJ1dCBmZWVkaW5nIHN0cmF0ZWd5IGlzIGtleSIKYXV0aG9yOiAiU2NvdHQgTi4gSm9obnNvbiwgSmFtaWUgTS4gV2F0ZXJtYW4sIFN1c2FuIEUuIEhhcnRsZXksIEp1bGlhIENvb2tlLCBKYW1lcyBNLlcuIFJ5YWxscywgQWRhbSBGcmV3LCBNYWxnb3J6YXRhIExhZ2lzeiBhbmQgU2hpbmljaGkgTmFrYWdhd2EiCmRhdGU6ICJgciBmb3JtYXQoU3lzLnRpbWUoKSwgJyVkICVCICVZJylgIgpvdXRwdXQ6CiAgaHRtbF9kb2N1bWVudDoKICAgIGNvZGVfZG93bmxvYWQ6IHRydWUKICAgIGNvZGVfZm9sZGluZzogaGlkZQogICAgZGVwdGg6IDQKICAgIG51bWJlcl9zZWN0aW9uczogbm8KICAgIHRoZW1lOiAgY29zbW8gIyDigJxkZWZhdWx04oCdLCDigJxjZXJ1bGVhbuKAnSwg4oCcam91cm5hbOKAnSwg4oCcZmxhdGx54oCdLCDigJxkYXJrbHnigJ0sIOKAnHJlYWRhYmxl4oCdLCDigJxzcGFjZWxhYuKAnSwg4oCcdW5pdGVk4oCdLCDigJxjb3Ntb+KAnSwg4oCcbHVtZW7igJ0sIOKAnHBhcGVy4oCdLCDigJxzYW5kc3RvbmXigJ0sIOKAnHNpbXBsZXjigJ0sIOKAnHlldGnigJ0KICAgIHRvYzogeWVzCiAgICB0b2NfZmxvYXQ6IHllcwogICAgdG9jX2RlcHRoOiA0CiAgcGRmX2RvY3VtZW50OgogICAgdG9jOiB5ZXMKc3VidGl0bGU6IEVsZWN0cm9uaWMgU3VwcGxlbWVudGFyeSBNYXRlcmlhbApiaWJsaW9ncmFwaHk6IHJlZmVyZW5jZXMuYmliCmJpYmxpby1zdHlsZTogImFwYWxpa2UiCiNjc2w6IHByb2NlZWRpbmdzLW9mLXRoZS1yb3lhbC1zb2NpZXR5LWIuY3NsCmxpbmstY2l0YXRpb25zOiB5ZXMKLS0tCgpgYGB7ciBzZXR1cCwgaW5jbHVkZSA9IEZBTFNFfQojIGtuaXRyIHNldHRpbmcKa25pdHI6Om9wdHNfY2h1bmskc2V0KAogIG1lc3NhZ2UgPSBGQUxTRSwKICB3YXJuaW5nID0gRkFMU0UsICMgbm8gd2FybmluZ3MKICB0aWR5ID0gVFJVRQogICMjY2FjaGUgPSBUcnVlCikKCiMgY2xlYXJpbmcgdXAKcm0obGlzdCA9IGxzKCkpCmBgYAoKIyMgU2V0dXAKCiMjIyBMb2FkaW5nIHBhY2thZ2VzIGFuZCBjdXN0b20gZnVuY3Rpb25zCgpUbyBydW4gdGhlIHNjcmlwdCwgc29tZSBvZiBwYWNrYWdlcyBuZWVkIHRvIGJlIGluc3RhbGxlZCBmcm9tIGBHaXRodWJgLgoKYGBge3J9CiMgbG9hZGluZyBwYWNrYWdlcwojIGRldnRvb2xzOjppbnN0YWxsX2dpdGh1YigidGhvbWFzcDg1L3BhdGNod29yayIpCiMgaWYgKCFyZXF1aXJlTmFtZXNwYWNlKCJCaW9jTWFuYWdlciIsIHF1aWV0bHkgPSBUUlVFKSkKIyAgICAgaW5zdGFsbC5wYWNrYWdlcygiQmlvY01hbmFnZXIiKQojIAojIEJpb2NNYW5hZ2VyOjppbnN0YWxsKCJnZ3RyZWUiKQojIGluc3RhbGwucGFja2FnZXMoImRldnRvb2xzIikKIyBpbnN0YWxsLnBhY2thZ2VzKCJ0aWR5dmVyc2UiKQojIGluc3RhbGwucGFja2FnZXMoIm1ldGFmb3IiKQojIGluc3RhbGwucGFja2FnZXMoInBhdGNod29yayIpCiMgaW5zdGFsbC5wYWNrYWdlcygiUi5yc3AiKQoKI2luc3RhbGwucGFja2FnZXMoImRldnRvb2xzIikKI2xpYnJhcnkoZGV2dG9vbHMpCiNpbnN0YWxsX2dpdGh1YigiZGFuaWVsMW5vYmxlL21ldGFBaWRSIikKCiNkZXZ0b29sczo6aW5zdGFsbF9naXRodWIoImRhbmllbDFub2JsZS9vcmNoYVJkIiwgZm9yY2UgPSBUUlVFKQoKI2luc3RhbGwucGFja2FnZXMoInBhY21hbiIpCiM+IEluc3RhbGxpbmcgcGFja2FnZSBpbnRvICcvVXNlcnMvZGFuaWVsbm9ibGUvTGlicmFyeS9SLzMuNi9saWJyYXJ5JwojPiAoYXMgJ2xpYicgaXMgdW5zcGVjaWZpZWQpCiNwYWNtYW46OnBfbG9hZChkZXZ0b29scywgdGlkeXZlcnNlLCBtZXRhZm9yLCBwYXRjaHdvcmssIFIucnNwKQojIEluc3RhbGwgb3JjaGFSZAojPiBEb3dubG9hZGluZyBHaXRIdWIgcmVwbyBpdGNoeXNoaW4vb3JjaGFyZF9wbG90QG1hc3RlcgojPiBJbnN0YWxsaW5nIHBhY2thZ2UgaW50byAnL1VzZXJzL2RhbmllbG5vYmxlL0xpYnJhcnkvUi8zLjYvbGlicmFyeScKIz4gKGFzICdsaWInIGlzIHVuc3BlY2lmaWVkKQojbGlicmFyeShvcmNoYVJkKQoKcGFjbWFuOjpwX2xvYWQoCiAgdGlkeXZlcnNlLCAjIHRpZHkgZmFtaWx5IGFuZCByZWxhdGVkIHBhY2thZ2VzIGJlbG93CiAga2FibGVFeHRyYSwKICBncmlkRXh0cmEsICMgbWF5IG5vdCB1c2UgdGhpcwogIHB1cnJyLAogIG1hZ3JpdHRyLCAjIGV4dGVuZGluZyBwaXBpbmcKICBwYW5kZXIsICMgbmljZSB0YWJsZXMKICBtZXRhZm9yLCAjIHBhY2thZ2UgZm9yIG1ldGEtYW5hbHlzaXMKICAjZ2diZWVzd2FybSwgIyBtYWtpbmcgYmVlLXN3YXJtIHBsb3RzIHBvc3NpYmxlCiAgYXBlLCAgICAgIyBwZm9yIGh5bG9nZW5ldGljIGNvbXBhcmF0aXZlIG1ldGhvZHMKICBNdU1JbiwgIyBtdWx0aS1tb2RlbCBpbmZlcmVuY2UKICBwZXJmb3JtYW5jZSwgIyBnZXR0aW5nIFIyIGZyb20gbG1lciArIGdsbWVyIG9iamVjdHMKICAjcG5nLCAjIHJlYWRpbmcgcG5nIGZpbGVzCiAgZ3JpZCwgIyBncmFwaGljIGxheW91dCBtYW5pcHVsYXRpb24KICBwYXRjaHdvcmssICMgcHV0dGluZyBnZ3Bsb3RzIHRvZ2V0aGVyIC0geW91IG5lZWQgdG8gaW5zdGFsbCB2aWEgZGV2dG9vbAogIGhlcmUsICMgZ2l2ZXMgYSBwYXRoCiAgI2JybXMsICAjIEJheWVzaWFuIG1peGVkIG1vZGVsCiAgb3JjaGFSZCwgIyBkcmF3aW5nIG9yY2hhcmQgYW5kIGNhdGVycGlsbGFycyBwbG90CiAgTUNNQ2dsbW0sICMgQmF5ZXNpbiBtaXhlZCBtb2RlbAogIERJWnRvb2xzCiAgI21ldGFBaWRSICMgc29tZSBoZWxwZXIgZnVuY3Rpb25zIGZvciBtZXRhLWFuYWx5c2lzCikKI29wdGlvbnMobWMuY29yZXMgPSBwYXJhbGxlbDo6ZGV0ZWN0Q29yZXMoKSkKI3JzdGFuX29wdGlvbnMoYXV0b193cml0ZSA9IFRSVUUpCmBgYAoKIyMjIEN1c3RvbSBmdW5jdGlvbnMKCldlIGhhdmUgNSBjdXN0b20gZnVuY3Rpb25zIG5hbWVkIDogYGNvbnRfZ2VuKClgLCBgZ2V0X3ByZWQxYCwgYGdldF9wcmVkMmAsIGBtcl9yZXN1bHRzYCwgYW5kIGBtYWtlX1ZDVl9tYXRyaXhgIGFsbCBvZiB3aGljaCBhcmUgdXNlZCBsYXRlciAoc2VlIGJlbG93IGZvciB0aGVpciBmdW5jdGlvbmFsaXR5KSBhbmQgdGhlIGNvZGUgYXJlIGluY2x1ZGVkIGhlcmUuIAoKYGBge3J9CiMgY3VzdG9tIGZ1bmN0aW9ucwoKIycgVGl0bGU6IENvbnRyYXN0IG5hbWUgZ2VuZXJhdG9yCiMnCiMnIEBwYXJhbSBuYW1lOiBhIHZlY3RvciBvZiBjaGFyYWN0ZXIgc3RyaW5ncwpjb250X2dlbiA8LSBmdW5jdGlvbihuYW1lKSB7CiAgY29tYmluYXRpb24gPC0gY29tYm4obmFtZSwgMikKICBuYW1lX2RhdCA8LSB0KGNvbWJpbmF0aW9uKQogIG5hbWVzIDwtIHBhc3RlKG5hbWVfZGF0WywgMV0sIG5hbWVfZGF0WywgMl0sIHNlcCA9ICItIikKICByZXR1cm4obmFtZXMpCn0KCiMnIEB0aXRsZSBnZXRfcHJlZDE6IGludGVyY2VwdC1sZXNzIG1vZGVsCiMnIEBkZXNjcmlwdGlvbiBGdW5jdGlvbiB0byBnZXQgQ0lzIChjb25maWRlbmNlIGludGVydmFscykgYW5kIFBJcyAocHJlZGljdGlvbiBpbnRlcnZhbHMpIGZyb20gcm1hIG9iamVjdHMgKG1ldGFmb3IpCiMnIEBwYXJhbSBtb2RlbDogcm1hLm12IG9iamVjdCAKIycgQHBhcmFtIG1vZDogdGhlIG5hbWUgb2YgYSBtb2RlcmF0b3IgCmdldF9wcmVkMSA8LSBmdW5jdGlvbiAobW9kZWwsIG1vZCA9ICIgIikgewogIG5hbWUgPC0gbmFtZSA8LSBmaXJzdHVwKGFzLmNoYXJhY3RlcihzdHJpbmdyOjpzdHJfcmVwbGFjZShyb3cubmFtZXMobW9kZWwkYmV0YSksIG1vZCwgIiIpKSkKICBsZW4gPC0gbGVuZ3RoKG5hbWUpCiAgCiAgIGlmIChsZW4gIT0gMSkgewogICAgICAgIG5ld2RhdGEgPC0gbWF0cml4KE5BLCBuY29sID0gbGVuLCBucm93ID0gbGVuKQogICAgICAgIGZvciAoaSBpbiAxOmxlbikgewogICAgICAgICAgICBwb3MgPC0gd2hpY2gobW9kZWwkWFssIGldID09IDEpW1sxXV0KICAgICAgICAgICAgbmV3ZGF0YVssIGldIDwtIG1vZGVsJFhbcG9zLCBdCiAgICAgICAgfQogICAgICAgIHByZWQgPC0gbWV0YWZvcjo6cHJlZGljdC5ybWEobW9kZWwsIG5ld21vZHMgPSBuZXdkYXRhKQogICAgfQogICAgZWxzZSB7CiAgICAgICAgcHJlZCA8LSBtZXRhZm9yOjpwcmVkaWN0LnJtYShtb2RlbCkKICB9CiAgZXN0aW1hdGUgPC0gcHJlZCRwcmVkCiAgbG93ZXJDTCA8LSBwcmVkJGNpLmxiCiAgdXBwZXJDTCA8LSBwcmVkJGNpLnViIAogIGxvd2VyUFIgPC0gcHJlZCRjci5sYgogIHVwcGVyUFIgPC0gcHJlZCRjci51YiAKICAKICB0YWJsZSA8LSB0aWJibGUobmFtZSA9IGZhY3RvcihuYW1lLCBsZXZlbHMgPSBuYW1lLCBsYWJlbHMgPSBuYW1lKSwgZXN0aW1hdGUgPSBlc3RpbWF0ZSwKICAgICAgICAgICAgICAgICAgbG93ZXJDTCA9IGxvd2VyQ0wsIHVwcGVyQ0wgPSB1cHBlckNMLAogICAgICAgICAgICAgICAgICBwdmFsID0gbW9kZWwkcHZhbCwKICAgICAgICAgICAgICAgICAgbG93ZXJQUiA9IGxvd2VyUFIsIHVwcGVyUFIgPSB1cHBlclBSKQp9CgojJyBAdGl0bGUgZ2V0X3ByZWQyOiBub3JtYWwgbW9kZWwKIycgQGRlc2NyaXB0aW9uIEZ1bmN0aW9uIHRvIGdldCBDSXMgKGNvbmZpZGVuY2UgaW50ZXJ2YWxzKSBhbmQgUElzIChwcmVkaWN0aW9uIGludGVydmFscykgZnJvbSBybWEgb2JqZWN0cyAobWV0YWZvcikKIycgQHBhcmFtIG1vZGVsOiBybWEubXYgb2JqZWN0IAojJyBAcGFyYW0gbW9kOiB0aGUgbmFtZSBvZiBhIG1vZGVyYXRvciAKZ2V0X3ByZWQyIDwtIGZ1bmN0aW9uIChtb2RlbCwgbW9kID0gIiAiKSB7CiAgbmFtZSA8LSBhcy5mYWN0b3Ioc3RyX3JlcGxhY2Uocm93Lm5hbWVzKG1vZGVsJGJldGEpLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXN0ZTAoInJlbGV2ZWwiLCAiXFwoIiwgbW9kLCIsIHJlZiA9IG5hbWUiLCAiXFwpIiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiIpKQogIGxlbiA8LSBsZW5ndGgobmFtZSkKICAKICBpZihsZW4gIT0gMSl7CiAgbmV3ZGF0YSA8LSBkaWFnKGxlbikKICBwcmVkIDwtIHByZWRpY3Qucm1hKG1vZGVsLCBpbnRlcmNlcHQgPSBGQUxTRSwgbmV3bW9kcyA9IG5ld2RhdGFbLC0xXSkKICB9CiAgZWxzZSB7CiAgICBwcmVkIDwtIHByZWRpY3Qucm1hKG1vZGVsKQogIH0KICBlc3RpbWF0ZSA8LSBwcmVkJHByZWQKICBsb3dlckNMIDwtIHByZWQkY2kubGIKICB1cHBlckNMIDwtIHByZWQkY2kudWIgCiAgbG93ZXJQUiA8LSBwcmVkJGNyLmxiCiAgdXBwZXJQUiA8LSBwcmVkJGNyLnViIAogIAogIHRhYmxlIDwtIHRpYmJsZShuYW1lID0gZmFjdG9yKG5hbWUsIGxldmVscyA9IG5hbWUsIGxhYmVscyA9IG5hbWUpLCBlc3RpbWF0ZSA9IGVzdGltYXRlLAogICAgICAgICAgICAgICAgICBsb3dlckNMID0gbG93ZXJDTCwgdXBwZXJDTCA9IHVwcGVyQ0wsCiAgICAgICAgICAgICAgICAgIHB2YWwgPSBtb2RlbCRwdmFsLAogICAgICAgICAgICAgICAgICBsb3dlclBSID0gbG93ZXJQUiwgdXBwZXJQUiA9IHVwcGVyUFIpCn0KCiMnIEB0aXRsZSBtcl9yZXN1bHRzCiMnIEBkZXNjcmlwdGlvbiBGdW5jdGlvbiB0byBwdXQgcmVzdWx0cyBvZiBtZXRhLXJlZ3Jlc3Npb24gYW5kIGl0cyBjb250cmFzdHMKIycgQHBhcmFtIHJlczE6IGRhdGEgZnJhbWUgMQojJyBAcGFyYW0gcmVzMTogZGF0YSBmcmFtZSAyCm1yX3Jlc3VsdHMgPC0gZnVuY3Rpb24ocmVzMSwgcmVzMikgewogIHJlc3R1bHMgPC10aWJibGUoCiAgICBgRml4ZWQgZWZmZWN0YCA9IGMoYXMuY2hhcmFjdGVyKHJlczEkbmFtZSksIGNvbnRfZ2VuKHJlczEkbmFtZSkpLAogICAgRXN0aW1hdGUgPSBjKHJlczEkZXN0aW1hdGUsIHJlczIkZXN0aW1hdGUpLAogICAgYExvd2VyIENJIFswLjAyNV1gID0gYyhyZXMxJGxvd2VyQ0wsIHJlczIkbG93ZXJDTCksCiAgICBgVXBwZXIgQ0kgIFswLjk3NV1gID0gYyhyZXMxJHVwcGVyQ0wsIHJlczIkdXBwZXJDTCksCiAgICBgUCB2YWx1ZWAgPSBjKHJlczEkcHZhbCwgcmVzMiRwdmFsKSwKICAgIGBMb3dlciBQSSBbMC4wMjVdYCA9IGMocmVzMSRsb3dlclBSLCByZXMyJGxvd2VyUFIpLAogICAgYFVwcGVyIFBJICBbMC45NzVdYCA9IGMocmVzMSR1cHBlclBSLCByZXMyJHVwcGVyUFIpLAogICkKfQojIGZyb20gbWV0YUFpZFIgLSBodHRwczovL2dpdGh1Yi5jb20vZGFuaWVsMW5vYmxlL21ldGFBaWRSL2Jsb2IvbWFzdGVyL1IvbWFrZV9WQ1ZfbWF0cml4LlIgIAojJyBAdGl0bGUgQ292YXJpYW5jZSBhbmQgY29ycmVsYXRpb24gbWF0cml4IGZ1bmN0aW9uIGJhc2luZyBvbiBzaGFyZWQgbGV2ZWwgSUQKIycgQGRlc2NyaXB0aW9uIEZ1bmN0aW9uIGZvciBnZW5lcmF0aW5nIHNpbXBsZSBjb3ZhcmlhbmNlIGFuZCBjb3JyZWxhdGlvbiBtYXRyaWNlcyAKIycgQHBhcmFtIGRhdGEgRGF0YWZyYW1lIG9iamVjdCBjb250YWluaW5nIGVmZmVjdCBzaXplcywgdGhlaXIgdmFyaWFuY2UsIHVuaXF1ZSBJRHMgYW5kIGNsdXN0ZXJpbmcgdmFyaWFibGUKIycgQHBhcmFtIFYgTmFtZSBvZiB0aGUgdmFyaWFibGUgKGFzIGEgc3RyaW5nIOKAkyBlLmcsICJWMSIpIGNvbnRhaW5pbmcgZWZmZWN0IHNpemUgdmFyaWFuY2VzIHZhcmlhbmNlcwojJyBAcGFyYW0gY2x1c3RlciBOYW1lIG9mIHRoZSB2YXJpYWJsZSAoYXMgYSBzdHJpbmcg4oCTIGUuZywgIlYxIikgaW5kaWNhdGluZyB3aGljaCBlZmZlY3RzIGJlbG9uZyB0byB0aGUgc2FtZSBjbHVzdGVyLiBTYW1lIHZhbHVlIG9mICdjbHVzdGVyJyBhcmUgYXNzdW1lZCB0byBiZSBub25pbmRlcGVuZGVudCAoY29ycmVsYXRlZCkuCiMnIEBwYXJhbSBvYnMgTmFtZSBvZiB0aGUgdmFyaWFibGUgKGFzIGEgc3RyaW5nIOKAkyBlLmcsICJWMSIpIGNvbnRhaW5pbmcgaW5kaXZpZHVhbCBJRHMgZm9yIGVhY2ggdmFsdWUgaW4gdGhlIFYgKFZlY3RvciBvZiB2YXJpYW5jZXMpLiBJZiB0aGlzIHBhcmFtZXRlciBpcyBtaXNzaW5nLCBsYWJlbCB3aWxsIGJlIGxhYmVsbGVkIHdpdGggY29uc2VjdXRpdmUgaW50ZWdlcnMgc3RhcnRpbmcgZnJvbSAxLgojJyBAcGFyYW0gcmhvIEtub3duIG9yIGFzc3VtZWQgY29ycmVsYXRpb24gdmFsdWUgYW1vbmcgZWZmZWN0IHNpemVzIHNoYXJpbmcgc2FtZSAnY2x1c3RlcicgdmFsdWUuIERlZmF1bHQgdmFsdWUgaXMgMC41LgojJyBAcGFyYW0gdHlwZSBPcHRpb25hbCBsb2dpY2FsIHBhcmFtZXRlciBpbmRpY2F0aW5nIHdoZXRoZXIgYSBmdWxsIHZhcmlhbmNlLWNvdmFyaWFuY2UgbWF0cml4IChkZWZhdWx0IG9yICJ2Y3YiKSBpcyBuZWVkZWQgb3IgYSBjb3JyZWxhdGlvbiBtYXRyaXggKCJjb3IiKSBmb3IgdGhlIG5vbi1pbmRlcGVuZGVudCBibG9ja3Mgb2YgdmFyaWFuY2UgdmFsdWVzLgojJyBAZXhwb3J0CgptYWtlX1ZDVl9tYXRyaXggPC0gZnVuY3Rpb24oZGF0YSwgViwgY2x1c3Rlciwgb2JzLCB0eXBlPWMoInZjdiIsICJjb3IiKSwgcmhvPTAuNSl7CiAgdHlwZSA8LSBtYXRjaC5hcmcodHlwZSkKICBpZiAobWlzc2luZyhkYXRhKSkgewogICAgc3RvcCgiTXVzdCBzcGVjaWZ5IGRhdGFmcmFtZSB2aWEgJ2RhdGEnIGFyZ3VtZW50LiIpCiAgfQogIGlmIChtaXNzaW5nKFYpKSB7CiAgICBzdG9wKCJNdXN0IHNwZWNpZnkgbmFtZSBvZiB0aGUgdmFyaWFuY2UgdmFyaWFibGUgdmlhICdWJyBhcmd1bWVudC4iKQogIH0KICBpZiAobWlzc2luZyhjbHVzdGVyKSkgewogICAgc3RvcCgiTXVzdCBzcGVjaWZ5IG5hbWUgb2YgdGhlIGNsdXN0ZXJpbmcgdmFyaWFibGUgdmlhICdjbHVzdGVyJyBhcmd1bWVudC4iKQogIH0KICBpZiAobWlzc2luZyhvYnMpKSB7CiAgICBvYnMgPC0gMTpsZW5ndGgoVikgICAKICB9CiAgaWYgKG1pc3NpbmcodHlwZSkpIHsKICAgIHR5cGUgPC0gInZjdiIgCiAgfQogIAogIG5ld19tYXRyaXggPC0gbWF0cml4KDAsbnJvdyA9IGRpbShkYXRhKVsxXSxuY29sID0gZGltKGRhdGEpWzFdKSAjbWFrZSBlbXB0eSBtYXRyaXggb2YgdGhlIHNhbWUgc2l6ZSBhcyBkYXRhIGxlbmd0aAogIHJvd25hbWVzKG5ld19tYXRyaXgpIDwtIGRhdGFbICxvYnNdCiAgY29sbmFtZXMobmV3X21hdHJpeCkgPC0gZGF0YVsgLG9ic10KICAjIGZpbmQgc3RhcnQgYW5kIGVuZCBjb29yZGluYXRlcyBmb3IgdGhlIHN1YnNldHMKICBzaGFyZWRfY29vcmQgPC0gd2hpY2goZGF0YVsgLGNsdXN0ZXJdICVpbiUgZGF0YVtkdXBsaWNhdGVkKGRhdGFbICxjbHVzdGVyXSksIGNsdXN0ZXJdPT1UUlVFKQogICMgbWF0cml4IG9mIGNvbWJpbmF0aW9ucyBvZiBjb29yZGluYXRlcyBmb3IgZWFjaCBleHBlcmltZW50IHdpdGggc2hhcmVkIGNvbnRyb2wKICBjb21iaW5hdGlvbnMgPC0gZG8uY2FsbCgicmJpbmQiLCB0YXBwbHkoc2hhcmVkX2Nvb3JkLCBkYXRhW3NoYXJlZF9jb29yZCxjbHVzdGVyXSwgZnVuY3Rpb24oeCkgdCh1dGlsczo6Y29tYm4oeCwyKSkpKQogIAogIGlmKHR5cGUgPT0gInZjdiIpewogICAgIyBjYWxjdWxhdGUgY292YXJpYW5jZSB2YWx1ZXMgYmV0d2VlbiAgdmFsdWVzIGF0IHRoZSBwb3NpdGlvbnMgaW4gc2hhcmVkX2xpc3QgYW5kIHBsYWNlIHRoZW0gb24gdGhlIG1hdHJpeAogICAgZm9yIChpIGluIDE6ZGltKGNvbWJpbmF0aW9ucylbMV0pewogICAgICBwMSA8LSBjb21iaW5hdGlvbnNbaSwxXQogICAgICBwMiA8LSBjb21iaW5hdGlvbnNbaSwyXQogICAgICBwMV9wMl9jb3YgPC0gcmhvICogc3FydChkYXRhW3AxLFZdKSAqIHNxcnQoZGF0YVtwMixWXSkKICAgICAgbmV3X21hdHJpeFtwMSxwMl0gPC0gcDFfcDJfY292CiAgICAgIG5ld19tYXRyaXhbcDIscDFdIDwtIHAxX3AyX2NvdgogICAgfQogICAgZGlhZyhuZXdfbWF0cml4KSA8LSBkYXRhWyAsVl0gICAjYWRkIHRoZSBkaWFnb25hbAogIH0KICAKICBpZih0eXBlID09ICJjb3IiKXsKICAgICMgY2FsY3VsYXRlIGNvdmFyaWFuY2UgdmFsdWVzIGJldHdlZW4gIHZhbHVlcyBhdCB0aGUgcG9zaXRpb25zIGluIHNoYXJlZF9saXN0IGFuZCBwbGFjZSB0aGVtIG9uIHRoZSBtYXRyaXgKICAgIGZvciAoaSBpbiAxOmRpbShjb21iaW5hdGlvbnMpWzFdKXsKICAgICAgcDEgPC0gY29tYmluYXRpb25zW2ksMV0KICAgICAgcDIgPC0gY29tYmluYXRpb25zW2ksMl0KICAgICAgcDFfcDJfY292IDwtIHJobwogICAgICBuZXdfbWF0cml4W3AxLHAyXSA8LSBwMV9wMl9jb3YKICAgICAgbmV3X21hdHJpeFtwMixwMV0gPC0gcDFfcDJfY292CiAgICB9CiAgICBkaWFnKG5ld19tYXRyaXgpIDwtIDEgICAjYWRkIHRoZSBkaWFnb25hbCBvZiAxCiAgfQogIAogIHJldHVybihuZXdfbWF0cml4KQp9ICAKCmBgYAoKCiMjIFRoZSBTaWxpY29uIEhlcmJpdm9yZSBEYXRhc2V0CgojIyMgVGFibGUgb2YgdGhlIGRhdGFzZXQKClRoZSBkYXRhc2V0IHVzZWQgZm9yIG91ciBtZXRhLWFuYWx5c2lzIGlzIGJlbG93LCBmb2xsb3dlZCBieSBleHBsYW5hdGlvbnMgb2YgMTAgdmFyaWFibGVzIGV4dHJhY3RlZCBmcm9tIHRoZSBwYXBlcnMgaW5jbHVkZWQgKG5vdCBhbGwgdmFyaWFibGVzIHdlcmUgdXNlZCBmb3Igb3VyIGFuYWx5c2VzOyB2YXJpYWJsZXMgbm90IGRpcmVjdGx5IHVzZWQgaW4gb3VyIGFuYWx5c2VzIGFyZSBpbmRpY2F0ZWQgYnkgKikuCgoqKkV4dGVuZGVkIERhdGEgVGFibGUgMToqKiAKVGhlIG1ldGEtYW5hbHl0aWMgZGF0YXNldCBvZiB0aGlzIHN0dWR5LgoKYGBge3J9CiMgZ2V0dGluZyB0aGUgZGF0YSBhbmQgZm9ybWF0dGluZyBzb21lIHZhcmlhYmxlcyAodHVybmluZyBjaGFyYWN0ZXIgdmVjdG9ycyB0byBmYWN0b3JzKQpmdWxsX2RhdGEgPC0gcmVhZF9jc3YoaGVyZSgiZGF0YSIsICJkYXRhXzAxX09jdF8yMDIzLmNzdiIpKSAlPiUKICBtdXRhdGVfaWYoaXMuY2hhcmFjdGVyLCBhcy5mYWN0b3IpCgpmdWxsX2RhdGE8LXN1YnNldChmdWxsX2RhdGEsIFhjID4gMCAmIGZ1bGxfZGF0YSRYZSA+IDApCgojZnVsbF9kYXRhW2Z1bGxfZGF0YSRYYyA8IDAsIF1bLCdYYyddPC0wLjEKI2Z1bGxfZGF0YVtmdWxsX2RhdGEkWGUgPCAwLCBdWywnWGUnXTwtMC4xCgojZGV0ZXJtaW5lIHdoZXRoZXIgdmFsdWUgaXMgbmVnYXRpdmUKI2Z1bGxfZGF0YVtmdWxsX2RhdGEkWGUgPiBmdWxsX2RhdGEkWGMsIF1bLCdOZWdhdGl2ZSddPC0tMQojZnVsbF9kYXRhW2Z1bGxfZGF0YSRYZSA8IGZ1bGxfZGF0YSRYYywgXVssJ05lZ2F0aXZlJ108LTEKIyBtYWtpbmcgYSBzY3JvbGxhYmxlIHRhYmxlCmthYmxlKGZ1bGxfZGF0YSwgImh0bWwiKSAlPiUKICBrYWJsZV9zdHlsaW5nKCJzdHJpcGVkIiwgcG9zaXRpb24gPSAibGVmdCIpICU+JQogIHNjcm9sbF9ib3god2lkdGggPSAiMTAwJSIsIGhlaWdodCA9ICI1MDBweCIpCmBgYAoKQS4gX19FZmZlY3RfXzogSUQgZm9yIGVmZmVjdCBzaXplcwoKQi4gX19TdHVkeV9fOiBJRCBmb3IgcHVibGljYXRpb25zIChzdHVkaWVzKQoKQy4gX19BdXRob3JfXyo6IEZpcnN0IGF1dGhvcidzIGZhbWlseSBuYW1lCgpELiBfX1llYXJfXzoJVGhlIHllYXIgb2YgcHVibGljYXRpb24gb2YgdGhlIHN0dWR5LgoKRS4gX19Kb3VybmFsX18qOglKb3VybmFsIG5hbWUKCkYuIF9fUGxhbnRfU3BlY2llc19fOglQbGFudCBzcGVjaWVzIG5hbWUKCkcuIF9fUGxhbnRfUGh5bG9nZW55X186IFBsYW50IExhdGluIG5hbWUgZm9yIGNvbnN0cnVjdGluZyBwaHlsb2dlbnkKCkguIF9fUGxhbnRfbGlmZXNwYW5fXzogV2hldGhlciB0aGUgcGxhbnQgaXMgYW5udWFsIG9yIHBlcmVubmlhbAoKSS4gX19Qb2FjZWFlX29yX05vbl9fOiBXaGV0aGVyIHRoZSBwbGFudCBpcyBhIFBvYWNlYWUgc3BlY2llcyBvciBub3QgCgpKLiBfX0hlcmJpdm9yZV9jb21tb25fbmFtZV9fKjogQ29tbW9uIG5hbWVzIGZvciBoZXJiaXZvcmUgc3BlY2llcwoKSy4gX19IZXJiaXZvcmVfTGF0aW5fbmFtZV9fOiBIZXJiaXZvcmUgc3BlY2llcycgTGF0aW4gbmFtZXMKCkwuIF9fSGVyYml2b3JlX1BoeWxvZ2VueV9fOiBIZXJiaXZvcmUgTGF0aW4gbmFtZSBmb3IgY29uc3RydWN0aW5nIHBoeWxvZ2VueQoKTS4gX19IZXJiaXZvcmVfZGlldF9icmVhZHRoX186IDogV2hldGhlciBhIGZvY2FsIGhlcmJpdm9yZSBpcyBhIGdlbmVyYWxpc3Qgb3IgYSBzcGVjaWFsaXN0IGZlZWRlcgoKTi4gKipGZWVkaW5nX2d1aWxkKio6IEhvdyB0aGUgaGVyYml2b3JlIGZlZWRzIG9uIHRoZSBwbGFudCAKCk8uICoqUGVyZm9ybWFuY2VfcGFyYW1ldGVyKioqOiBCcm9hZCBjbGFzc2lmaWNhdGlvbiBvZiBoZXJiaXZvcmUgcGVyZm9ybWFuY2UgcGFyYW1ldGVyIAoKUC4gKipOYyoqOiBTYW1wbGUgc2l6ZSBmb3IgdGhlIGNvbnRyb2wgZ3JvdXAKClEuICoqTmUqKjogU2FtcGxlIHNpemUgZm9yIHRoZSBleHBlcmltZW50YWwgZ3JvdXAKClIuICoqWGMqKjogTWVhbiB2YWx1ZSBmb3IgdGhlIGNvbnRyb2wgZ3JvdXAgCgpTLiAqKlhlKio6IE1lYW4gdmFsdWUgZm9yIHRoZSBleHBlcmltZW50YWwgZ3JvdXAKClQuICoqRGV2X2MqKjogU3RhbmRhcmQgZGV2aWF0aW9uIGZvciB0aGUgY29udHJvbCBncm91cAoKVS4gKipEZXZfZSoqOiBTdGFuZGFyZCBkZXZpYXRpb24gZm9yIHRoZSBleHBlcmltZW50YWwgZ3JvdXAKClYuICoqTmVnYXRpdmUqKjogdGhlIHZlY3RvciBvZiAxIG9yIC0xIHdoaWNoIGluZGljYXRlIGlmIGNvcnJlc3BvbmRpbmcgZWZmZWN0IHNpemVzIHNob3VsZCBiZSByZXZlcnNlIGluIGl0cyBzaWduCgpXLiAqKlNpX05jKio6IFNhbXBsZSBzaXplIGZvciB0aGUgY29udHJvbCBncm91cCAoZm9yIHNpbGljb24gdXB0YWtlKQoKWC4gKipTaV9OZSoqOiBTYW1wbGUgc2l6ZSBmb3IgdGhlIGV4cGVyaW1lbnRhbCBncm91cCAoZm9yIHNpbGljb24gdXB0YWtlKQoKWS4gKipTaV9YYyoqOiBNZWFuIHZhbHVlIGZvciB0aGUgY29udHJvbCBncm91cCAoZm9yIHNpbGljb24gdXB0YWtlKQoKWi4gKipTaV9YZSoqOiBNZWFuIHZhbHVlIGZvciB0aGUgZXhwZXJpbWVudGFsIGdyb3VwIChmb3Igc2lsaWNvbiB1cHRha2UpCgpBQS4gKipTaV9EZXZfYyoqOiBTdGFuZGFyZCBkZXZpYXRpb24gZm9yIHRoZSBjb250cm9sIGdyb3VwIChmb3Igc2lsaWNvbiB1cHRha2UpCgpBQi4gKipTaV9EZXZfZSoqOiBTdGFuZGFyZCBkZXZpYXRpb24gZm9yIHRoZSBleHBlcmltZW50YWwgZ3JvdXAgKGZvciBzaWxpY29uIHVwdGFrZSkKCiMjIyBUYWJsZSBvZiBzYW1wbGUgc2l6ZXMKCmBgYHtyfQojIHNlbGVjdGluZyBvdXQgdmFyaWFibGVzLCB3aGljaCB3ZSB1c2VkIGZvciBvdXIgYW5hbHlzaXMKZGF0IDwtIGZ1bGxfZGF0YSAlPiUgc2VsZWN0KC1BdXRob3IsIC1Kb3VybmFsLCAtSGVyYml2b3JlX2NvbW1vbl9uYW1lLCAtUGVyZm9ybWFuY2VfcGFyYW1ldGVyKQoKCiMgbWFraW5nIGEgdGFibGUgb2Ygc2FtcGxlIHNpemVzIGZvciBkaWZmZXJlbnQgdmFyaWFibGVzCmRhdCAlPiUKICBzdW1tYXJpc2UoCiAgICBgRWZmZWN0IHNpemVzYCA9IG5fZGlzdGluY3QoRWZmZWN0KSwKICAgIFN0dWRpZXMgPSBuX2Rpc3RpbmN0KFN0dWR5KSwKICAgIGBQbGFudCBzcGVjaWVzYCA9IG5fZGlzdGluY3QoUGxhbnRfU3BlY2llcyksCiAgICBgSGVyYml2b3JlIHNwZWNpZXNgID0gbl9kaXN0aW5jdChIZXJiaXZvcmVfTGF0aW5fbmFtZSksCiAgICBgRWZmZWN0IHNpemVzIChTaWxpY29uIHVwdGFrZSlgID0gbl9kaXN0aW5jdChFZmZlY3RbIWlzLm5hKFNpX05jKV0pLAogICAgYFN0dWRpZXMgKFNpbGljb24gdXB0YWtlKWAgPSBuX2Rpc3RpbmN0KFN0dWR5WyFpcy5uYShTaV9OYyldKSwKICAgIGBBbm51YWwgcGxhbnRzIChQbGFudF9saWZlc3BhbilgID0gc3VtKFBsYW50X2xpZmVzcGFuID09ICJBbm51YWwiLCBuYS5ybSA9IFQpLCAjIG5hLnJtIGlzIGltcG9ydGFudCB3aGVuIE5BIGV4aXN0cwogICAgYFBlcmVubmlhbCBwbGFudHMgKFBsYW50X2xpZmVzcGFuKWAgPSBzdW0oUGxhbnRfbGlmZXNwYW4gPT0gIlBlcmVubmlhbCIsIG5hLnJtID0gVCksCiAgICBgUG9hY2VhZSAoUG9hY2VhZV9vcl9Ob24pYCA9IHN1bShQb2FjZWFlX29yX05vbiA9PSAiUG9hY2VhZSIsIG5hLnJtID0gVCksCiAgICBgTm9uLVBvYWNlYWUgKFBvYWNlYWVfb3JfTm9uKWAgPSBzdW0oUG9hY2VhZV9vcl9Ob24gPT0gIk5vbi1Qb2FjZWFlIiwgbmEucm0gPSBUKSwKICAgIGBTcGVjaWFsaXN0IChIZXJiaXZvcmVfZGlldF9icmVhZHRoKWAgPSBzdW0oSGVyYml2b3JlX2RpZXRfYnJlYWR0aCA9PSAiU3BlY2lhbGlzdCIsIG5hLnJtID0gVCksCiAgICBgR2VuZXJhbGlzdCAoSGVyYml2b3JlX2RpZXRfYnJlYWR0aClgID0gc3VtKEhlcmJpdm9yZV9kaWV0X2JyZWFkdGggPT0gIkdlbmVyYWxpc3QiLCBuYS5ybSA9IFQpLAogICAgYEJvcmluZyBhcnRocm9wb2RzIChGZWVkaW5nX2d1aWxkKWAgPSBzdW0oRmVlZGluZ19ndWlsZCA9PSAiQm9yaW5nIGFydGhyb3BvZHMiLCBuYS5ybSA9IFQpLAogICAgYENlbGwtZmVlZGluZyBhcnRocm9wb2RzIChGZWVkaW5nX2d1aWxkKWAgPSBzdW0oRmVlZGluZ19ndWlsZCA9PSAiQ2VsbC1mZWVkaW5nIGFydGhyb3BvZHMiLCBuYS5ybSA9IFQpLAogICAgYENoZXdpbmcgYXJ0aHJvcG9kcyAoRmVlZGluZ19ndWlsZClgID0gc3VtKEZlZWRpbmdfZ3VpbGQgPT0gIkNoZXdpbmcgYXJ0aHJvcG9kcyIsIG5hLnJtID0gVCksCiAgICBgRmx1aWQtZmVlZGluZyBhcnRocm9wb2RzIChGZWVkaW5nX2d1aWxkKWAgPSBzdW0oRmVlZGluZ19ndWlsZCA9PSAiRmx1aWQtZmVlZGluZyBhcnRocm9wb2RzIiwgbmEucm0gPSBUKSwKICAgIGBMZWFmLW1pbmluZyBhcnRocm9wb2RzIChGZWVkaW5nX2d1aWxkKWAgPSBzdW0oRmVlZGluZ19ndWlsZCA9PSAiTGVhZi1taW5pbmcgYXJ0aHJvcG9kcyIsIG5hLnJtID0gVCksCiAgICBgTWFtbWFsaWFuIGNoZXdlcnMgKEZlZWRpbmdfZ3VpbGQpYCA9IHN1bShGZWVkaW5nX2d1aWxkID09ICJNYW1tYWxpYW4gY2hld2VycyIsIG5hLnJtID0gVCksCiAgICBgUmFzcGluZy9ncmF6aW5nIGludmVydGVicmF0ZXMgKEZlZWRpbmdfZ3VpbGQpYCA9IHN1bShGZWVkaW5nX2d1aWxkID09ICJSYXNwaW5nIC8gZ3JhemluZyBpbnZlcnRlYnJhdGVzIiwgbmEucm0gPSBUKQogICkgLT4gbl90YWJsZTEKCiMgdHJhbnNwb3NpbmcgdGhlIHRhYmxlIGFuZCBjcmVhdGluZyB0aGF0IHRhYmxlIGFuZCBhZGRpbmcgYSBjb3JyZWN0IG51bWJlciBvZiB0aGUgcGFwZXJzIGZvciBgQ29tYmluZWRgCiMgbl9hdXRob3JzIDwtIG5fZGlzdGluY3QoZGF0JGF1dGhvcnMpICMgdGhlIHRvdGFsIG51bWJlciBvZiBwYXBlcnMKbl90YWJsZTIgPC0gdChuX3RhYmxlMSkKY29sbmFtZXMobl90YWJsZTIpIDwtICJuIChzYW1wbGUgc2l6ZSkiCm5fdGFibGUyICU+JQogIGFzX3RpYmJsZShyb3duYW1lcyA9ICJOdW1iZXIiKSAlPiUKICByZW5hbWUoIk51bWJlciBvZiIgPSAiTnVtYmVyIikgJT4lCiAga2FibGUoKSAlPiUga2FibGVfc3R5bGluZygic3RyaXBlZCIsIHBvc2l0aW9uID0gImxlZnQiKSAlPiUKICBzY3JvbGxfYm94KHdpZHRoID0gIjYwJSIsIGhlaWdodCA9ICIzMDBweCIpCiNwYW5kZXIoc3BsaXQuY2VsbCA9IDQwLCBzcGxpdC50YWJsZSA9IEluZikgIyBub3QgYXMgbmljZSBhcyBrYWJsZQoKYGBgCgojIyMgTWlzc2luZyBkYXRhIHBhdHRlcm5zIAoKVGhlIG9ubHkgbWlzc2luZyB2YWx1ZXMgd2VyZSBzdHVkaWVzIHRoYXQgcmVwb3J0ZWQgaGVyYml2b3JlIHBlcmZvcm1hbmNlIHdpdGhvdXQgcXVhbnRpZnlpbmcgcGxhbnQgc2lsaWNvbiBjb250ZW50LgoKYGBge3J9CiMgc3VtbWVyaW5nIG1pc3NpbmduZXNzIGluIG91ciBkYXRhc2V0CiMgZnVucyhzdW0oaXMubmEoLikpKSBuZWVkcyB0byBiZSBpbiBmdW5zIGFzIGlzLm5hIGhhcyAiLiIgPSBlYWNoIGNvbHVtbgpkYXQgJT4lIHN1bW1hcmlzZV9hbGwofnN1bShpcy5uYSguKSkpICU+JSAjIG1hcCh+c3VtKGlzLm5hKC4pKSAjIHRoaXMgaXMgYW4gYWx0ZXJhbnRpdmUgd2F5IAogIHQoKSAlPiUgYXNfdGliYmxlKHJvd25hbWVzID0gIlZhcmlhYmxlIikgJT4lIAogIHJlbmFtZSgiTnVtYmVyIG9mIG1pc3NpbmcgZGF0YSAobikiID0gIlYxIikgJT4lIAogICNwYW5kZXIoc3BsaXQuY2VsbCA9IDQwLCBzcGxpdC50YWJsZSA9IEluZikKICBrYWJsZSgpICU+JSBrYWJsZV9zdHlsaW5nKCJzdHJpcGVkIiwgcG9zaXRpb24gPSAibGVmdCIpICU+JQogIHNjcm9sbF9ib3god2lkdGggPSAiNjAlIiwgaGVpZ2h0ID0gIjMwMHB4IikKYGBgCgojIyBNZXRhLWFuYWx5c2lzOiB0aGUgRWZmZWN0IG9mIFNpbGljb24gb24gSGVyYml2b3JlcwoKIyMjIENob29zaW5nIGVmZmVjdCBzaXplIHN0YXRpc3RpY3M6IGNoZWNraW5nIHRoZSBtZWFuLXZhcmlhbmNlIHJlbGF0aW9uc2hpcAoKV2UgY2hlY2tlZCB0aGUgbWVhbi12YXJpYW5jZSByZWxhdGlvbnNoaXAgaW4gb3VyIGRhdGEuIElmIHRoZXJlIGlzIHN1Y2ggYSByZWxhdGlvbnNoaXAsIGl0IGlzIHByZWZlcmFibGUgdG8gdXNlIHRoZSBsb2dhcml0aG0gb2YgcmVzcG9uc2UgcmF0aW8sIGxuUlIgW0BoZWRnZXMxOTk5bWV0YV0gcmF0aGVyIHRoYW4gc3RhbmRhcmRpemVkIG1lYW4gZGlmZmVyZW5jZSwgU01EIChvZnRlbiBrbm93biBhcyBDb2hlbuKAmXMgKmQqIG9yIEhlZGdlc+KAmSAqZyopIGJlY2F1c2UgdGhlIGxhdHRlciBhc3N1bWVzIHRoZSBob21vZ2VuZWl0eSBvZiB2YXJpYW5jZSAoc2VlIGJlbG93KS4KCiMjIyMjIEZpZ3VyZSBFMQpgYGB7ciBmaWcud2lkdGg9NywgZmlnLmhlaWdodD02LCB9CgojIEEpCgpjb3JfMSA8LSByb3VuZCh3aXRoKGRhdCxjb3IobG9nKFhlKSwgbG9nKERldl9lKSkpLCAzKQptb2RfMSA8LSBsbShsb2coRGV2X2UpIH4gbG9nKFhlKSwgZGF0YSA9IGRhdCkKCnBsb3RfZXhwIDwtIGdncGxvdChkYXQsIGFlcyhsb2coWGUpLCBsb2coRGV2X2UpKSkgKyBnZW9tX3BvaW50KCkgKwogIGdlb21fc21vb3RoKG1ldGhvZCA9ICJsbSIpICsgCiAgbGFicyh4ID0gImxuKG1lYW5bZXhwZXJpbWVudF0pIiwgCiAgICAgICB5ID0gImxuKFNEW2V4cGVyaW1lbnRdKSIsIAogICAgICAgdGl0bGUgPSAiSGVyYml2b3JlIHBlcmZvcm1hbmNlIChleHBlcmltZW50YWwpIikgKwogIHhsaW0oLTksIDkpICsgeWxpbSgtOSwgOSkgKyAKICBhbm5vdGF0ZSgndGV4dCcseCA9IDcuNSwgeSA9IC04LCBsYWJlbCA9IHBhc3RlKCJyID0gIiwgY29yXzEpKSArIAogIGFubm90YXRlKCd0ZXh0Jyx4ID0gNy41LCB5ID0gLTYsIGxhYmVsID0gcGFzdGUoImIgPSAiLCByb3VuZChtb2RfMSRjb2VmZmljaWVudHNbWzJdXSwzKSkpCgojIEIpCmNvcl8yIDwtIHJvdW5kKHdpdGgoZGF0LGNvcihsb2coWGMpLCBsb2coRGV2X2MpKSksIDMpCm1vZF8yIDwtIGxtKGxvZyhEZXZfYykgfiBsb2coWGMpLCBkYXRhID0gZGF0KQoKcGxvdF9jb24gPC0gZ2dwbG90KGRhdCwgYWVzKGxvZyhYYyksIGxvZyhEZXZfYykpKSArIGdlb21fcG9pbnQoKSArCiAgZ2VvbV9zbW9vdGgobWV0aG9kID0gImxtIikgKyAKICBsYWJzKHggPSAibG4obWVhbltjb250cm9sXSkiLCAKICAgICAgIHkgPSAibG4oU0RbY29udHJvbF0pIiwKICAgICAgIHRpdGxlID0gIkhlcmJpdm9yZSBwZXJmb3JtYW5jZSAoY29udHJvbCkiKSsKICB4bGltKC05LCA5KSArIHlsaW0oLTksIDkpICsgCiAgYW5ub3RhdGUoJ3RleHQnLHggPSA3LjUsIHkgPSAtOCwgbGFiZWwgPSBwYXN0ZSgiciA9ICIsIGNvcl8yKSkgKyAKICBhbm5vdGF0ZSgndGV4dCcseCA9IDcuNSwgeSA9IC02LCBsYWJlbCA9IHBhc3RlKCJiID0gIiwgcm91bmQobW9kXzIkY29lZmZpY2llbnRzW1syXV0sMykpKQoKIyBjKQpjb3JfMyA8LSByb3VuZCh3aXRoKGRhdCxjb3IudGVzdChsb2coU2lfWGUpLCBsb2coU2lfRGV2X2UpKSkkZXN0aW1hdGVbWzFdXSwgMykKbW9kXzMgPC0gbG0obG9nKFNpX0Rldl9lKSB+IGxvZyhTaV9YZSksIGRhdGEgPSBkYXQpCgpTaV9wbG90X2V4cCA8LSBnZ3Bsb3QoZGF0LCBhZXMobG9nKFNpX1hlKSwgbG9nKFNpX0Rldl9lKSkpICsgZ2VvbV9wb2ludCgpICsKICBnZW9tX3Ntb290aChtZXRob2QgPSAibG0iKSArIAogIGxhYnMoeCA9ICJsbihtZWFuW2V4cGVyaW1lbnRdKSIsIAogICAgICAgeSA9ICJsbihTRFtleHBlcmltZW50XSkiLAogICAgICAgdGl0bGUgPSAiU2lsaWNvbiBjb250ZW50IChleHBlcmltZW50YWwpIikgKwogIHhsaW0oLTksIDkpICsgeWxpbSgtOSwgOSkgKyAKICBhbm5vdGF0ZSgndGV4dCcseCA9IDcuNSwgeSA9IC04LCBsYWJlbCA9IHBhc3RlKCJyID0gIiwgY29yXzMpKSArIAogIGFubm90YXRlKCd0ZXh0Jyx4ID0gNy41LCB5ID0gLTYsIGxhYmVsID0gcGFzdGUoImIgPSAiLCByb3VuZChtb2RfMyRjb2VmZmljaWVudHNbWzJdXSwzKSkpCgojIEQpCmNvcl80IDwtIHJvdW5kKHdpdGgoZGF0LGNvci50ZXN0KGxvZyhTaV9YYyksIGxvZyhTaV9EZXZfYykpKSRlc3RpbWF0ZVtbMV1dLCAzKQptb2RfNCA8LSBsbShsb2coU2lfRGV2X2MpIH4gbG9nKFNpX1hjKSwgZGF0YSA9IGRhdCkKClNpX3Bsb3RfY29uIDwtIGdncGxvdChkYXQsIGFlcyhsb2coU2lfWGMpLCBsb2coU2lfRGV2X2MpKSkgKyBnZW9tX3BvaW50KCkgKwogIGdlb21fc21vb3RoKG1ldGhvZCA9ICJsbSIpICsgCiAgbGFicyh4ID0gImxuKG1lYW5bY29udHJvbF0pIiwgCiAgICAgICB5ID0gImxuKFNEW2NvbnRyb2xdKSIsCiAgICAgICB0aXRsZSA9ICJTaWxpY29uIGNvbnRlbnQgKGNvbnRyb2wpIikrCiAgeGxpbSgtOSwgOSkgKyB5bGltKC05LCA5KSArIAogIGFubm90YXRlKCd0ZXh0Jyx4ID0gNy41LCB5ID0gLTgsIGxhYmVsID0gcGFzdGUoInIgPSAiLCBjb3JfNCkpICsKICBhbm5vdGF0ZSgndGV4dCcseCA9IDcuNSwgeSA9IC02LCBsYWJlbCA9IHBhc3RlKCJiID0gIiwgcm91bmQobW9kXzQkY29lZmZpY2llbnRzW1syXV0sMykpKQoKU2lfbWVhbl9TRCA8LSBTaV9wbG90X2V4cCArIFNpX3Bsb3RfY29uICsKICBwbG90X2Fubm90YXRpb24odGFnX2xldmVscyA9ICJBIiwgdGFnX3N1ZmZpeCA9ICIpIikKCm1lYW5fU0QgPC0gKHBsb3RfZXhwIHwgcGxvdF9jb24pIC8gKFNpX3Bsb3RfZXhwIHwgU2lfcGxvdF9jb24pICsKICBwbG90X2Fubm90YXRpb24odGFnX2xldmVscyA9ICJBIiwgdGFnX3N1ZmZpeCA9ICIpIikKCm1lYW5fU0QKCiMgc2F2aW5nIHRoZSBmaWd1cmUgZm9yIFNjb3R0CiMgZ2dzYXZlKGhlcmUoImZpZyIsICJtZWFuX1NELnBuZyIpLAojICAgICAgICB3aWR0aCA9IDIwLAojICAgICAgICBoZWlnaHQgPSAyMCwKIyAgICAgICAgdW5pdHMgPSAiY20iKQoKIyBnZXR0aW5nIGNvcnJlbGF0aW9ucwoKIyBDaGVja2luZyB0aGUgc2xvcGVzIAoKCmBgYAoKKipGaWd1cmUgRTE6KiogCk1lYW4tdmFyaWFuY2UgcmVsYXRpb25zaGlwcyBmb3IgKEEgYW5kIEIpIGhlcmJpdm9yZSBwZXJmb3JtYW5jZSBhbmQgKEMgYW5kIEQpIHNpbGljb24gY29udGVudCBpbiBleHBlcmltZW50YWwgKGkuZS4gU2kgc3VwcGxlbWVudGVkKSBhbmQgY29udHJvbCBwbGFudHMuIAoKCiMjIyBDYWxjdWxhdGluZyBlZmZlY3Qgc2l6ZXMKCmBgYHtyLCB9CgojIGNhbGN1bGF0aW5nIGVmZmVjdCBzaXplIC0gdGhpbmsgYWJvdXQgdHVybmluZyBpbnRvIGZ1bmN0aW9uCmRhdCA8LSBlc2NhbGMobWVhc3VyZSA9ICJST00iLCBtMWkgPSBYZSwgbTJpID0gWGMsIHNkMWkgPSBEZXZfZSwgc2QyaSA9IERldl9jLCBuMWkgPSBOYywgbjJpID0gTmUsIGRhdGEgPSBkYXQsIHZhci5uYW1lcyA9IGMoImxuUlIiLCAidmFybG5SUiIpKQoKZGF0IDwtIGVzY2FsYyhtZWFzdXJlID0gIlZSIiwgbTFpID0gWGUsIG0yaSA9IFhjLCBzZDFpID0gRGV2X2UsIHNkMmkgPSBEZXZfYywgbjFpID0gTmMsIG4yaSA9IE5lLCBkYXRhID0gZGF0LCB2YXIubmFtZXMgPSBjKCJsblZSIiwgInZhcmxuVlIiKSkKCgojIGZvciBTaWxpY29uIGFjY3VtdWxhdGlvbgpkYXQgPC0gZXNjYWxjKAogIG1lYXN1cmUgPSAiUk9NIiwgbTFpID0gU2lfWGUsIG0yaSA9IFNpX1hjLCBzZDFpID0gU2lfRGV2X2MsIHNkMmkgPSBTaV9EZXZfYywgbjFpID0gU2lfTmMsIG4yaSA9IFNpX05lLAogIGRhdGEgPSBkYXQsIHZhci5uYW1lcyA9IGMoIlNpX2xuUlIiLCAiU2lfdmFybG5SUiIpCikKCmRhdCA8LSBlc2NhbGMoCiAgbWVhc3VyZSA9ICJWUiIsIG0xaSA9IFNpX1hlLCBtMmkgPSBTaV9YYywgc2QxaSA9IFNpX0Rldl9lLCBzZDJpID0gU2lfRGV2X2MsIG4xaSA9IFNpX05jLCBuMmkgPSBTaV9OZSwKICBkYXRhID0gZGF0LCB2YXIubmFtZXMgPSBjKCJTaV9sblZSIiwgIlNpX3ZhcmxuVlIiKQopCgoKIyBmbGlwcGluZyB0aGUgc2lnbiBmb3IgZWZmZWN0IHNpemVzIChsblJSIG5vdCBsblZSKSB3aGVuIHNtYWxsIG1lYW5zIGltcHJvdmVtZW50IChiZXR0ZXIpCmRhdCAlPiUKICBtdXRhdGUobG5SUiA9IE5lZ2F0aXZlICogbG5SUikgJT4lCiAgYXNfdGliYmxlKCkgJT4lIGRhdGEuZnJhbWUgLT4gZGF0CgpgYGAKCgojIyMgUGh5bG9nZW5ldGljIHRyZWUgYW5kIGNvcnJlbGF0aW9uIG1hdHJpeAoKIyMjIyMgRmlndXJlIEUyCmBgYHtyLCBmaWcud2lkdGg9OSwgZmlnLmhlaWdodD0gMTB9CmhlcmJpdl90cmVlIDwtIHJlYWQudHJlZShmaWxlID0gaGVyZSgicGh5bG8vcGxhbnRzX2hlcmJpdnRyZWVfYmluYXJ5X0pNVy50cmUiKSkKcGxhbnRfdHJlZSA8LSByZWFkLnRyZWUoZmlsZSA9IGhlcmUoInBoeWxvL3BsYW50c19wbGFudHRyZWVfYmluYXJ5LnRyZSIpKQojcGxvdChoZXJiaXZfdHJlZSkKI3Bsb3QocGxhbnRfdHJlZSkKaHRyZWUgPC0gY29tcHV0ZS5icmxlbihoZXJiaXZfdHJlZSkKcHRyZWUgPC0gY29tcHV0ZS5icmxlbihwbGFudF90cmVlKQojaXMudWx0cmFtZXRyaWMoaHRyZWUpIAojaXMudWx0cmFtZXRyaWMocHRyZWUpIAoKcGFyKG1mcm93ID0gYygxLDIpKQpwbG90KHB0cmVlKQptdGV4dCgiUGxhbnQgcGh5bG9nZW55Iiwgc2lkZSA9IDEsIGNleCA9IDEuNSwgbGluZSA9IDEpCnBsb3QoaHRyZWUpCm10ZXh0KCJIZXJiaXZvcmUgcGh5bG9nZW55Iiwgc2lkZSA9IDEsICBjZXggPSAxLjUsIGxpbmUgPTEpCgpjb3JfaHRyZWUgPC0gdmN2KGh0cmVlLGNvcnI9VCkgIyBjb3JyZWxhdGlvbiBtYXRyaXggZm9yIEhlcmJpdm9yZXMKY29yX3B0cmVlIDwtIHZjdihwdHJlZSxjb3JyPVQpICMgY29ycmVsYXRpb24gbWF0cml4IGZvciBQbGFudHMKIyBzYXZpbmcgZm9yIFNjb3R0IAojIHBkZihoZXJlKCJmaWciLCAidHJlZS5wZGYiKSwgaGVpZ2h0PTE1LCB3aWR0aD0xMikKIyBwbG90KHRyZWUpCiMgZGV2Lm9mZigpICAKCmBgYAoKKipGaWd1cmUgRTI6KiogClBoeWxvZ2VuZXRpYyB0cmVlcyBmb3IgIHBsYW50cyAobGVmdCBwYW5lbCkgYW5kIGhlcmJ2aW9yZXMgKHJpZ2h0IHBhbmVsKS4gCgoKIyMgTWV0YS1hbmFseXRpYyBtb2RlbHM6IGxuUlIgYW5kIGxuVlIKCmBgYHtyLCB9CgoKbGV2ZWxzKGRhdCRQbGFudF9QaHlsb2dlbnkpW2xldmVscyhkYXQkUGxhbnRfUGh5bG9nZW55KSA9PSAiU2FjY2hhcnVtX29mZmljaW5hcnVtIl0gPC0gIlNhY2NoYXJ1bV9zcHAuIgpsZXZlbHMoZGF0JEhlcmJpdm9yZV9QaHlsb2dlbnkpW2xldmVscyhkYXQkSGVyYml2b3JlX1BoeWxvZ2VueSkgPT0gIlNlc2FtaWFfc3BwLiJdIDwtICJTZXNhbWlhX2luZmVyZW5zIgpsZXZlbHMoZGF0JEhlcmJpdm9yZV9QaHlsb2dlbnkpW2xldmVscyhkYXQkSGVyYml2b3JlX1BoeWxvZ2VueSkgPT0gIkxpcmlvbXl6YV9zcHAuIl0gPC0gIkxpcmlvbXl6YV9wdWVsbGEiCmxldmVscyhkYXQkSGVyYml2b3JlX1BoeWxvZ2VueSlbbGV2ZWxzKGRhdCRIZXJiaXZvcmVfUGh5bG9nZW55KSA9PSAiQ2hsb3N5bmVfbGFjaW5pYV9zYXVuZGVyc2lpIl0gPC0gIkNobG9zeW5lX2xhY2luaWEiCmxldmVscyhkYXQkSGVyYml2b3JlX1BoeWxvZ2VueSlbbGV2ZWxzKGRhdCRIZXJiaXZvcmVfUGh5bG9nZW55KSA9PSAiRGVyb2NlcmFzX3JldGljdWxhdHJ1bSJdIDwtICJEZXJvY2VyYXNfcmV0aWN1bGF0dW0iCmxldmVscyhkYXQkSGVyYml2b3JlX1BoeWxvZ2VueSlbbGV2ZWxzKGRhdCRIZXJiaXZvcmVfUGh5bG9nZW55KSA9PSAiTWFjcm9zaXBob25pZWxsYXNfYW5ib3JuaSJdIDwtICJNYWNyb3NpcGhvbmllbGxhX3NhbmJvcm5pIgpsZXZlbHMoZGF0JEhlcmJpdm9yZV9QaHlsb2dlbnkpW2xldmVscyhkYXQkSGVyYml2b3JlX1BoeWxvZ2VueSkgPT0gIlBzZXVkYWxldGlhX3VuaXB1bmN0YSJdIDwtICJNeXRoaW1uYV91bmlwdW5jdGEiCgojbG5SUgojIG1hdHJpeCBmb3IgY29udHJvbGxpbmcgZm9yIGNvcnJlbGF0ZWQgZXJyb3JzClZDVl9sblJSIDwtIG1ha2VfVkNWX21hdHJpeChkYXQsIFYgPSAidmFybG5SUiIsIGNsdXN0ZXIgPSAiU3R1ZHkiLCBvYnMgPSAiRWZmZWN0IikKCm1hX2xuUlIgPC0gcm1hLm12KAogIHlpID0gbG5SUiwKICBWID0gVkNWX2xuUlIsCiAgcmFuZG9tID0gbGlzdCh+MXxQbGFudF9QaHlsb2dlbnksIH4xfFBsYW50X1NwZWNpZXMsIAogICAgICAgICAgICAgICAgfjF8SGVyYml2b3JlX1BoeWxvZ2VueSwgfjF8SGVyYml2b3JlX0xhdGluX25hbWUsIAogICAgICAgICAgICAgICAgfjF8U3R1ZHksIH4xfEVmZmVjdCksCiAgUj0gbGlzdChQbGFudF9QaHlsb2dlbnkgPSBjb3JfcHRyZWUsIEhlcmJpdm9yZV9QaHlsb2dlbnkgPSBjb3JfaHRyZWUpLAogIHRlc3QgPSAidCIsCiAgZGF0YSA9IGRhdCkKIAojIGxuVlIKIyBtYXRyaXggZm9yIGNvbnRyb2xsaW5nIGZvciBjb3JyZWxhdGVkIGVycm9ycwpWQ1ZfbG5WUiA8LSBtYWtlX1ZDVl9tYXRyaXgoZGF0LCBWID0gInZhcmxuVlIiLCBjbHVzdGVyID0gIlN0dWR5Iiwgb2JzID0gIkVmZmVjdCIpCgptYV9sblZSIDwtIHJtYS5tdigKICB5aSA9IGxuVlIsCiAgViA9IFZDVl9sblZSLAogIHJhbmRvbSA9IGxpc3QofjF8UGxhbnRfUGh5bG9nZW55LCB+MXxQbGFudF9TcGVjaWVzLCAKICAgICAgICAgICAgICAgIH4xfEhlcmJpdm9yZV9QaHlsb2dlbnksIH4xfEhlcmJpdm9yZV9MYXRpbl9uYW1lLCAKICAgICAgICAgICAgICAgIH4xfFN0dWR5LCB+MXxFZmZlY3QpLAogIFI9IGxpc3QoUGxhbnRfUGh5bG9nZW55ID0gY29yX3B0cmVlLCBIZXJiaXZvcmVfUGh5bG9nZW55ID0gY29yX2h0cmVlKSwKICB0ZXN0ID0gInQiLAogIGRhdGEgPSBkYXQsCiAgY29udHJvbD1saXN0KG9wdGltaXplcj0ib3B0aW0iLCBvcHRtZXRob2Q9IkJGR1MiKSkKCiMgY29udHJvbD1saXN0KG9wdGltaXplcj0ib3B0aW0iLCBvcHRtZXRob2Q9Ik5lbGRlci1NZWFkIikKCmBgYAoKIyMjIyMgVGFibGUgRTEKKipUYWJsZSBFMToqKgpPdmVyYWxsIGVmZmVjdHMgKG1ldGEtYW5hbHl0aWMgbWVhbnMpLCA5NSUgY29uZmlkZW5jZSBpbnRlcnZhbHMgKENJcykgYW5kIDk1JSBwcmVkaWN0aW9uIGludGVydmFscyAoOTUlKSBbQG5ha2FnYXdhMjAxOW9yY2hhcmRdLgoKCmBgYHtyLCB9CiMgZ2V0dGluZyBhIHRhYmxlIG9mIENJIGFuZCBQSQp0bWFfbG5SUiA8LSBnZXRfcHJlZDEobWFfbG5SUiwgbW9kID0gIkludCIpCnRtYV9sblZSIDwtIGdldF9wcmVkMShtYV9sblZSLCBtb2QgPSAiSW50IikKCiMgRHJhd2luZyBhIHRhYmxlIGZvciBtZXRhLWFuYWx5c2VzCnRpYmJsZShgRWZmZWN0IHNpemVgID0gYygibG5SUiIsImxuVlIiKSwgCiAgICAgICBgT3ZlcmFsbCBtZWFuYCA9IGModG1hX2xuUlIkZXN0aW1hdGUsIHRtYV9sblZSJGVzdGltYXRlKSwgCiAgICAgICBgTG93ZXIgQ0kgWzAuMDI1XWAgPSBjKHRtYV9sblJSJGxvd2VyQ0wsIHRtYV9sblZSJGxvd2VyQ0wpLCAKICAgICAgIGBVcHBlciBDSSBbMC45NzVdYCA9IGModG1hX2xuUlIkdXBwZXJDTCx0bWFfbG5WUiR1cHBlckNMKSwKICAgICAgIGBQIHZhbHVlYCAgICAgICAgICA9IGModG1hX2xuUlIkcHZhbCwgdG1hX2xuVlIkcHZhbCksCiAgICAgICBgTG93ZXIgUEkgWzAuMDI1XWAgPSBjKHRtYV9sblJSJGxvd2VyUFIsIHRtYV9sblZSJGxvd2VyUFIpLCAKICAgICAgIGBVcHBlciBQSSBbMC45NzVdYCA9IGModG1hX2xuUlIkdXBwZXJQUiwgdG1hX2xuVlIkdXBwZXJQUikpICU+JSAKICBrYWJsZSgiaHRtbCIsIGRpZ2l0cyA9IDMpICU+JSAKICBrYWJsZV9zdHlsaW5nKCJzdHJpcGVkIiwgcG9zaXRpb24gPSAibGVmdCIpCmBgYAojIyMjIyBUYWJsZSBFMgoqKlRhYmxlIEUyOioqClZhcmlhbmNlIGNvbXBvbmVudHMgKFYpIGFuZCBoZXRlcm9nZW5laXR5LCAqSSpeMl4gKEkyKSBbQGhpZ2dpbnMyMDAzbWVhc3VyaW5nXSBmcm9tIHRoZSBgbWV0YWZvcmAgbW9kZWwgTm90ZSB0aGF0IGluIHRoZXNlIG1vZGVscywgKkkqXjJeflt0b3RhbF1+IGlzIHRoZSBzdW0gb2YgdmFyaWFuY2UgY29tcG9uZW50cyBvZiBgUGxhbnRfUGh5bG9nZW55YCwgYFBsYW50X1NwZWNpZXNgLCBgSGVyYml2b3JlX1BoeWxvZ2VueWAsIGBTdHVkeWAgYW5kIGBFZmZlY3RgIC0tIFtzZWUgW0BuYWthZ2F3YTIwMTJtZXRob2RvbG9naWNhbDtAc2VuaW9yMjAxNmhldGVyb2dlbmVpdHldXS4KCmBgYHtyLCB9CiMgZ2V0dGluZyBJMgpJMl9sblJSIDwtIGkyX21sKG1hX2xuUlIpCkkyX2xuVlIgPC0gaTJfbWwobWFfbG5WUikKCiMgZ2V0dGluZyBzaWdtYTIgPSBWIApWX2xuUlIgPC0gYyhzdW0obWFfbG5SUiRzaWdtYTIpLCBtYV9sblJSJHNpZ21hMikKVl9sblZSIDwtYyhzdW0obWFfbG5WUiRzaWdtYTIpLCBtYV9sblZSJHNpZ21hMikKCiMgRHJhd2luZyBhIHRhYmxlIGZvciB2YXJpYW5jZSBjb21wb25lbnRzIFYgYW5kIEkyCnRpYmJsZShgRWZmZWN0IHNpemVgID0gYygibG5SUiAoKkkqXjJeKSIsImxuVlIgKCpJKl4yXikiLCAibG5SUiAoKlYqKSIsICJsblZSICgqViopIiksIAogICAgICAgVG90YWwgICAgID0gYyhJMl9sblJSWzFdLCBJMl9sblZSWzFdLCBWX2xuUlJbMV0sIFZfbG5WUlsxXSksIAogICAgICAgYFBsYW50IHBoeWxvZ2VueWAgPSBjKEkyX2xuUlJbMl0sIEkyX2xuVlJbMl0sVl9sblJSWzJdLCBWX2xuVlJbMl0pLCAKICAgICAgIGBQbGFudCBzcGVjaWVzYCAgID0gYyhJMl9sblJSWzNdLCBJMl9sblZSWzNdLCBWX2xuUlJbM10sVl9sblZSWzNdKSwKICAgICAgIGBIZXJiaXZvcmUgcGh5bG9nZW55YCA9IGMoSTJfbG5SUls0XSwgSTJfbG5WUls0XSwgVl9sblJSWzRdLCBWX2xuVlJbNF0pLCAKICAgICAgIGBIZXJiaXZvcmUgc3BlY2llc2AgICA9IGMoSTJfbG5SUls1XSwgSTJfbG5WUls1XSwgVl9sblJSWzVdLCBWX2xuVlJbNV0pLAogICAgICAgU3R1ZHkgICAgID0gYyhJMl9sblJSWzZdLCBJMl9sblZSWzZdLCBWX2xuUlJbNl0sICBWX2xuVlJbNl0pLCAKICAgICAgIGBFZmZlY3QgKHdpdGhpbi1zdHVkeSlgID0gYyhJMl9sblJSWzddLCBJMl9sblZSWzddLCBWX2xuUlJbN10sICBWX2xuVlJbN10pLAogICAgICAgKSAlPiUgCiAga2FibGUoImh0bWwiLCBkaWdpdHMgPSAzKSAlPiUgCiAga2FibGVfc3R5bGluZygic3RyaXBlZCIsIHBvc2l0aW9uID0gImxlZnQiKQoKYGBgCgojIyMjIyBGaWd1cmUgMkEtQgoKYGBge3IsICBmaWcud2lkdGg9NywgZmlnLmhlaWdodD02LCB9CgojIyBGaWd1cmUgMUEKcDEgPC0gb3JjaGFyZF9wbG90KG1hX2xuUlIsIGRhdGEgPSBkYXQsIG1vZD0iMSIsZ3JvdXA9ICdTdHVkeScsIHhsYWIgPSAibG9nKFJlc3BvbnNlIFJhdGlvKSAobG5SUikiLCBhbHBoYSA9IDAuMiwgYW5nbGUgPSA0NSkgKwogICAgc2NhbGVfZmlsbF9tYW51YWwodmFsdWVzPSJibHVlIikgKwogIHNjYWxlX2NvbG91cl9tYW51YWwodmFsdWVzPSJibHVlIikgKwogIGFubm90YXRlKGdlb209InRleHQiLCB4PTAuOCwgeT0xLjUsIGxhYmVsPSJwIDwgMC4wMDEiLAogICAgICAgICAgICAgIGNvbG9yPSJibGFjayIpCgoKIyMgRmlndXJlIDFCCnAyIDwtIG9yY2hhcmRfcGxvdChtYV9sblZSLCBkYXRhID0gZGF0LCBtb2Q9IjEiLGdyb3VwPSAnU3R1ZHknLCB4bGFiID0gImxvZyhWYXJpYWJpbGl0eSBSYXRpbykgKGxuVlIpIiwgYWxwaGEgPSAwLjIsIGFuZ2xlID0gNDUpICsKICAgIHNjYWxlX2ZpbGxfbWFudWFsKHZhbHVlcz0iZ3JlZW4iKSArCiAgc2NhbGVfY29sb3VyX21hbnVhbCh2YWx1ZXM9ImdyZWVuIikgKwogIGFubm90YXRlKGdlb209InRleHQiLCB4PTAuOCwgeT0xLjUsIGxhYmVsPSJwID0gMC4xMDYiLAogICAgICAgICAgICAgIGNvbG9yPSJibGFjayIpCgoKI2dnc2F2ZShoZXJlKCJmaWciLCAiT3ZlcmFsbC5wbmciKSkKYGBgCgojIyMgU2VsZWN0aW5nIHJhbmRvbSBlZmZlY3RzIGZvciBtZXRhLXJlZ3Jlc3Npb24KCmBgYHtyfQojbG5SUgoKbWFfbG5SUjIgPC0gcm1hLm12KAogIHlpID0gbG5SUiwKICBWID0gVkNWX2xuUlIsCiAgcmFuZG9tID0gbGlzdCggfjF8UGxhbnRfU3BlY2llcywgCiAgICAgICAgICAgICAgICB+MXxIZXJiaXZvcmVfUGh5bG9nZW55LCB+MXxIZXJiaXZvcmVfTGF0aW5fbmFtZSwgCiAgICAgICAgICAgICAgICB+MXxTdHVkeSwgfjF8RWZmZWN0KSwKICBSPSBsaXN0KEhlcmJpdm9yZV9QaHlsb2dlbnkgPSBjb3JfaHRyZWUpLAogIG1ldGhvZCA9ICJNTCIsCiAgdGVzdCA9ICJ0IiwKICBkYXRhID0gZGF0KQoKIyB3ZSB0YWtlIHRoaXMgbW9kZWwKbWFfbG5SUjMgPC0gcm1hLm12KAogIHlpID0gbG5SUiwKICBWID0gVkNWX2xuUlIsCiAgcmFuZG9tID0gbGlzdCh+MXxIZXJiaXZvcmVfUGh5bG9nZW55LCB+MXxIZXJiaXZvcmVfTGF0aW5fbmFtZSwgCiAgICAgICAgICAgICAgICB+MXxTdHVkeSwgfjF8RWZmZWN0KSwKICBSPSBsaXN0KEhlcmJpdm9yZV9QaHlsb2dlbnkgPSBjb3JfaHRyZWUpLAogIG1ldGhvZCA9ICJNTCIsCiAgdGVzdCA9ICJ0IiwKICBkYXRhID0gZGF0KQoKbWFfbG5SUjQgPC0gcm1hLm12KAogIHlpID0gbG5SUiwKICBWID0gVkNWX2xuUlIsCiAgcmFuZG9tID0gbGlzdCh+MXxIZXJiaXZvcmVfUGh5bG9nZW55LAogICAgICAgICAgICAgICAgfjF8U3R1ZHksIH4xfEVmZmVjdCksCiAgUj0gbGlzdChIZXJiaXZvcmVfUGh5bG9nZW55ID0gY29yX2h0cmVlKSwKICBtZXRob2QgPSAiTUwiLAogIHRlc3QgPSAidCIsCiAgZGF0YSA9IGRhdCkKCiMgVE9ETyAtIHRoZXNlIGFyZW50IHJ1bm5pbmcgZHVlIHRvIGVzdGltYXRpb24gZGlmZmVyZW5jZXMgYmV0d2VlbiBtb2RlbHMsIGRvIHdlIG5lZWQgdG8gZml4PwojcHZhbF9sblJSMSA8LSByb3VuZChhbm92YShtYV9sblJSLCBtYV9sblJSMikkcHZhbCwgMykKI3B2YWxfbG5SUjIgPC0gcm91bmQoYW5vdmEobWFfbG5SUjIsIG1hX2xuUlIzKSRwdmFsLCAzKQojcHZhbF9sblJSMyA8LSByb3VuZChhbm92YShtYV9sblJSMywgbWFfbG5SUjQpJHB2YWwsIDMpCgoKI2xuVlIKCm1hX2xuVlIyIDwtIHJtYS5tdigKICB5aSA9IGxuVlIsCiAgViA9IFZDVl9sblZSLAogIHJhbmRvbSA9IGxpc3QoIH4xfFBsYW50X1NwZWNpZXMsIAogICAgICAgICAgICAgICAgfjF8SGVyYml2b3JlX1BoeWxvZ2VueSwgfjF8SGVyYml2b3JlX0xhdGluX25hbWUsIAogICAgICAgICAgICAgICAgfjF8U3R1ZHksIH4xfEVmZmVjdCksCiAgUj0gbGlzdChIZXJiaXZvcmVfUGh5bG9nZW55ID0gY29yX2h0cmVlKSwKICBtZXRob2QgPSAiTUwiLAogIHRlc3QgPSAidCIsCiAgZGF0YSA9IGRhdCkKCiMgd2UgdGFrZSB0aGlzIG1vZGVsCm1hX2xuVlIzIDwtIHJtYS5tdigKICB5aSA9IGxuVlIsCiAgViA9IFZDVl9sblZSLAogIHJhbmRvbSA9IGxpc3QofjF8SGVyYml2b3JlX1BoeWxvZ2VueSwgfjF8SGVyYml2b3JlX0xhdGluX25hbWUsIAogICAgICAgICAgICAgICAgfjF8U3R1ZHksIH4xfEVmZmVjdCksCiAgUj0gbGlzdChIZXJiaXZvcmVfUGh5bG9nZW55ID0gY29yX2h0cmVlKSwKICBtZXRob2QgPSAiTUwiLAogIHRlc3QgPSAidCIsCiAgZGF0YSA9IGRhdCkKCm1hX2xuVlI0IDwtIHJtYS5tdigKICB5aSA9IGxuVlIsCiAgViA9IFZDVl9sblZSLAogIHJhbmRvbSA9IGxpc3QofjF8SGVyYml2b3JlX1BoeWxvZ2VueSwKICAgICAgICAgICAgICAgIH4xfFN0dWR5LCB+MXxFZmZlY3QpLAogIFI9IGxpc3QoSGVyYml2b3JlX1BoeWxvZ2VueSA9IGNvcl9odHJlZSksCiAgbWV0aG9kID0gIk1MIiwKICB0ZXN0ID0gInQiLAogIGRhdGEgPSBkYXQpCgojcHZhbF9sblZSMSA8LSByb3VuZChhbm92YShtYV9sblZSLCBtYV9sblZSMikkcHZhbCwgMykKI3B2YWxfbG5WUjIgPC0gcm91bmQoYW5vdmEobWFfbG5WUjIsIG1hX2xuVlIzKSRwdmFsLCAzKQojcHZhbF9sblZSMyA8LSByb3VuZChhbm92YShtYV9sblZSMywgbWFfbG5WUjQpJHB2YWwsIDMpCmBgYAoKQmFzZWQgb24gMyBjcml0ZXJpYTogMSkgdGhlIGFtb3VudHMgb2YgdmFyaWFuY2UgZWFjaCByYW5kb20gZWZmZWN0cyBleHBsYWluLCAyKSB0aGUgcmVzdWx0cyBvZiBsb2ctbGlrZWxpaG9vZCByYXRpbyB0ZXN0cywgYW5kIDMpIHJldGFpbmluZyBzb21lIGNsdXN0ZXJpbmcgZmFjdG9yKHMpIHJlZ2FyZGxlc3Mgb2YgaXRzIGVmZmVjdCwgd2UgZGVjaWRlZCB0byBrZWVwIGBIZXJiaXZvcmVfUGh5bG9nZW55YCwgYEhlcmJpdm9yZV9MYXRpbl9uYW1lYCwgYFN0dWR5YCwgYEVmZmVjdGAgZm9yIGxuUlIgYW5kIGxuVlIuCgojIyBNZXRhLWFuYWx5c2lzIG9mIFNpbGljb24gQ29udGVudAoKYGBge3IsIH0KIyBjcmVhdGluZyB0aGUgc21hbGxlciBkYXRhc2V0IC0gb25seSBvbmUgdmFsdWUgcGVyIApzZGF0IDwtIGRhdCAlPiUgZ3JvdXBfYnkoU3R1ZHkpICU+JSAKICBzdW1tYXJpc2UoU2lfbG5SUiA9IGZpcnN0KFNpX2xuUlIpLCAKICAgICAgICAgICAgU2lfdmFybG5SUiA9IGZpcnN0KFNpX3ZhcmxuUlIpLCAKICAgICAgICAgICAgU2lfbG5WUiA9IGZpcnN0KFNpX2xuVlIpLCAKICAgICAgICAgICAgU2lfdmFybG5WUiA9IGZpcnN0KFNpX3ZhcmxuVlIpLAogICAgICAgICAgICBQbGFudF9QaHlsb2dlbnkgPSBmaXJzdChQbGFudF9QaHlsb2dlbnkpLAogICAgICAgICAgICBQbGFudF9TcGVjaWVzID0gZmlyc3QoUGxhbnRfU3BlY2llcykKICApCgojbG5SUgptYV9sblJSX1NpIDwtIHJtYS5tdigKICB5aSA9IFNpX2xuUlIsCiAgViA9IFNpX3ZhcmxuUlIsCiAgcmFuZG9tID0gbGlzdCh+MXxQbGFudF9QaHlsb2dlbnksIH4xfFBsYW50X1NwZWNpZXMsIH4xfFN0dWR5KSwKICBSPSBsaXN0KFBoeWxvZ2VueSA9IGNvcl9wdHJlZSksCiAgdGVzdCA9ICJ0IiwKICBkYXRhID0gc2RhdCkKI3N1bW1hcnkobWFfbG5SUl9TaSkKCiNsblZSIAptYV9sblZSX1NpIDwtIHJtYS5tdigKICB5aSA9IFNpX2xuVlIsCiAgViA9IFNpX3ZhcmxuVlIsCiAgcmFuZG9tID0gbGlzdCh+MXxQbGFudF9QaHlsb2dlbnksIH4xfFBsYW50X1NwZWNpZXMsIH4xfFN0dWR5KSwKICBSPSBsaXN0KFBoeWxvZ2VueSA9IGNvcl9wdHJlZSksCiAgZXN0ID0gInQiLAogIGRhdGEgPSBzZGF0KQojc3VtbWFyeShtYV9sbkNWUl9TaSkKCmBgYAoKIyMjIyMgVGFibGUgRTMKKipUYWJsZSBFMzoqKgpPdmVyYWxsIGVmZmVjdHMgKG1ldGEtYW5hbHl0aWMgbWVhbnMpLCA5NSUgY29uZmlkZW5jZSBpbnRlcnZhbHMgKENJcykgYW5kIDk1JSBwcmVkaWN0aW9uIGludGVydmFscyAoOTUlKS4KCmBgYHtyLCB9CiMgZ2V0dGluZyBhIHRhYmxlIG9mIENJIGFuZCBQSQp0bWFfbG5SUl9TaSA8LSBnZXRfcHJlZDEobWFfbG5SUl9TaSwgbW9kID0gIkludCIpCnRtYV9sblZSX1NpIDwtIGdldF9wcmVkMShtYV9sblZSX1NpLCBtb2QgPSAiSW50IikKCiMgRHJhd2luZyBhIHRhYmxlIGZvciBtZXRhLWFuYWx5c2VzCnRpYmJsZShgRWZmZWN0IHNpemVgID0gYygibG5SUiIsICJsblZSIiksIAogICAgICAgYE92ZXJhbGwgbWVhbmAgPSBjKHRtYV9sblJSX1NpJGVzdGltYXRlLCB0bWFfbG5WUl9TaSRlc3RpbWF0ZSksIAogICAgICAgYExvd2VyIENJIFswLjAyNV1gID0gYyh0bWFfbG5SUl9TaSRsb3dlckNMLCB0bWFfbG5WUl9TaSRsb3dlckNMKSwgCiAgICAgICBgVXBwZXIgQ0kgWzAuOTc1XWAgPSBjKHRtYV9sblJSX1NpJHVwcGVyQ0wsIHRtYV9sblZSX1NpJHVwcGVyQ0wpLAogICAgICAgYFAgdmFsdWVgICAgICAgICAgPSBjKHRtYV9sblJSX1NpJHB2YWwsIHRtYV9sblZSX1NpJHB2YWwpLAogICAgICAgYExvd2VyIFBJIFswLjAyNV1gID0gYyh0bWFfbG5SUl9TaSRsb3dlclBSLCB0bWFfbG5WUl9TaSRsb3dlclBSKSwgCiAgICAgICBgVXBwZXIgUEkgWzAuOTc1XWAgPSBjKHRtYV9sblJSX1NpJHVwcGVyUFIsIHRtYV9sblZSX1NpJHVwcGVyUFIpCiAgICAgICApICU+JSAKICBrYWJsZSgiaHRtbCIsIGRpZ2l0cyA9IDMpICU+JSAKICBrYWJsZV9zdHlsaW5nKCJzdHJpcGVkIiwgcG9zaXRpb24gPSAibGVmdCIpCgpgYGAKIyMjIyMgVGFibGUgRTQKKipUYWJsZSBFNDoqKgpWYXJpYW5jZSBjb21wb25lbnRzIChWKSBhbmQgaGV0ZXJvZ2VuZWl0eSwgKkkqXjJeIChJMikgW0BoaWdnaW5zMjAwM21lYXN1cmluZ10gZnJvbSB0aGUgYG1ldGFmb3JgIG1vZGVsIE5vdGUgdGhhdCBpbiB0aGVzZSBtb2RlbHMsICpJKl4yXn5bdG90YWxdfiBpcyB0aGUgc3VtIG9mIHZhcmlhbmNlIGNvbXBvbmVudHMgb2YgYFBsYW50IHBoeWxvZ2VueWAsIGBQbGFudCBzcGVjaWVzYCBhbmQgYFN0dWR5YC4KCmBgYHtyLCB9CiMgZ2V0dGluZyBJMgpJMl9sblJSX1NpIDwtIGkyX21sKG1hX2xuUlJfU2kpCkkyX2xuVlJfU2kgPC0gaTJfbWwobWFfbG5WUl9TaSkKCiMgZ2V0dGluZyBzaWdtYTIgPSBWIApWX2xuUlJfU2kgPC0gYyhzdW0obWFfbG5SUl9TaSRzaWdtYTIpLCBtYV9sblJSX1NpJHNpZ21hMikKVl9sblZSX1NpIDwtYyhzdW0obWFfbG5WUl9TaSRzaWdtYTIpLCBtYV9sblZSX1NpJHNpZ21hMikKIyBEcmF3aW5nIGEgdGFibGUgZm9yIHZhcmlhbmNlIGNvbXBvbmVudHMgViBhbmQgSTIKdGliYmxlKGBFZmZlY3Qgc2l6ZWAgPSBjKCJsblJSICgqSSpeMl4pIiwgImxuVlIgKCpJKl4yXikiLCAibG5SUiAoKlYqKSIsICJsblZSICgqViopIiksIAogICAgICAgVG90YWwgICAgID0gYyhJMl9sblJSX1NpWzFdLEkyX2xuVlJfU2lbMV0sICBWX2xuUlJfU2lbMV0sICBWX2xuVlJfU2lbMV0pLCAKICAgICAgIGBQbGFudCBwaHlsb2dlbnlgID0gYyhJMl9sblJSX1NpWzJdLCAgSTJfbG5WUl9TaVsyXSwgVl9sblJSX1NpWzJdLCBWX2xuVlJfU2lbMl0pLCAKICAgICAgIGBQbGFudCBzcGVjaWVzYCAgID0gYyhJMl9sblJSX1NpWzNdLCBJMl9sblZSX1NpWzNdLCBWX2xuUlJfU2lbM10sICBWX2xuVlJfU2lbM10pLCAKICAgICAgIFN0dWR5ICAgICA9IGMoSTJfbG5SUl9TaVs0XSwgSTJfbG5WUl9TaVs0XSwgVl9sblJSX1NpWzRdLCBWX2xuVlJfU2lbNF0pCiAgICAgICApICU+JSAKICBrYWJsZSgiaHRtbCIsIGRpZ2l0cyA9IDMpICU+JSAKICBrYWJsZV9zdHlsaW5nKCJzdHJpcGVkIiwgcG9zaXRpb24gPSAibGVmdCIpCgpgYGAKCgojIyMjIyBGaWd1cmUgMkMtRAoKYGBge3IsICBmaWcud2lkdGg9NywgZmlnLmhlaWdodD02LCB9CgojIyBSZW1vdmUgTkFzIGZvciBvcmNoYXJkcGxvdCB0byB3b3JrCnNkYXQyPC1uYS5vbWl0KHNkYXQpCgojIyBGaWd1cmUgMUMKcDQgPC0gb3JjaGFyZF9wbG90KG1hX2xuUlJfU2ksIGRhdGEgPSBzZGF0MiwgbW9kPSIxIixncm91cD0gJ1N0dWR5JywgeGxhYiA9ICJsb2coUmVzcG9uc2UgUmF0aW8pIChsblJSKSIsIGFscGhhID0gMC4yLCBhbmdsZSA9IDQ1KSArCiAgICBzY2FsZV9maWxsX21hbnVhbCh2YWx1ZXM9ImJsdWUiKSArCiAgc2NhbGVfY29sb3VyX21hbnVhbCh2YWx1ZXM9ImJsdWUiKSArCiAgYW5ub3RhdGUoZ2VvbT0idGV4dCIsIHg9MC44LCB5PTEuNSwgbGFiZWw9InAgPCAwLjAwMSIsCiAgICAgICAgICAgICAgY29sb3I9ImJsYWNrIikKIyMgRmlndXJlIDFECnA1IDwtIG9yY2hhcmRfcGxvdChtYV9sblZSX1NpLCBkYXRhID0gc2RhdDIsIG1vZD0iMSIsZ3JvdXA9ICdTdHVkeScsIHhsYWIgPSAibG9nKFZhcmlhYmlsaXR5IFJhdGlvKSAobG5WUikiLCBhbHBoYSA9IDAuMiwgYW5nbGUgPSA0NSkgKwogICAgc2NhbGVfZmlsbF9tYW51YWwodmFsdWVzPSJncmVlbiIpICsKICBzY2FsZV9jb2xvdXJfbWFudWFsKHZhbHVlcz0iZ3JlZW4iKSArCiAgYW5ub3RhdGUoZ2VvbT0idGV4dCIsIHg9MC44LCB5PTEuNSwgbGFiZWw9InAgPCAwLjAwMSIsCiAgICAgICAgICAgICAgY29sb3I9ImJsYWNrIikKCiNnZ3NhdmUoaGVyZSgiZmlnIiwgIk92ZXJhbGxfU2lsaWNvbi5wbmciKSkKYGBgCgojIyBCaXZhcmlhdGUgTWV0YS1hbmFseXNpczogVGVzdGluZyBmb3IgQ29ycmVsYXRpb25zIEJldHdlZW4gU2lsaWNvbiBDb250ZW50IGFuZCBIZXJiaXZvcmUgUGVyZm9ybWFuY2UgCgpXZSBjb25kdWN0ZWQgYml2YXJpYXRlIG1ldGEtYW5hbHl0aWMgbW9kZWxzIGZvciBsblJSIChtZWFuIGVmZmVjdCBzaXplKSBhbmQgbG5WUiAoYWJzb2x1dGUgdmFyaWFuY2UpIHRvIGRldGVybWluZSBhbnkgcmVsYXRpb25zaGlwIGJldHdlZW4gc2lsaWNvbiBjb250ZW50IGFuZCBoZXJiaXZvcmUgcGVyZm9ybWFuY2UuIFdlIGV4cGVjdGVkIHRoYXQgdGhlc2UgdHdvIGVmZmVjdHMgd2lsbCBiZSBuZWdhdGl2ZWx5IGNvcnJlbGF0ZWQgKGkuZS4gbW9yZSBwbGFudCBzaWxpY29uIHJlc3VsdHMgaW4gd29yc2UgaGVyYml2b3JlIHBlcmZvcm1hbmNlKTsgd2UgZGlkIG5vdCBoYXZlIGFueSBleHBlY3RhdGlvbiBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgbG5WUiBwYWlyaW5ncy4KCkZvciB0aGlzIGNvbXBsZXggbW9kZWwsIHdlIG9ubHkgY29uc2lkZXJlZCBgU3R1ZHlgIGFzIGEgcmFuZG9tIGVmZmVjdCwgZXhjbHVkaW5nIGBTcGVjaWVzYCBhbmQgYFBoeWxvZ2VueWAuIAoKYGBge3IsICwgZXZhbCA9IEZBTFNFfQojIHR1cm5pbmcgZGF0YSBpbnRvIGEgbG9uZyBmb3JtYXQgdG8gcmFuIGJpdmFyaWF0ZSBtb2RlbHMKZGF0ICU+JQogIHNlbGVjdChFZmZlY3QsIFN0dWR5LCBZZWFyLCBGZWVkaW5nX2d1aWxkLAogICAgICAgICBsblJSLCB2YXJsblJSLAogICAgICAgICBsblZSLCB2YXJsblZSKSAtPiBkYXQyICMgbWFpbiBlZmZlY3RzCmRhdCAlPiUKICBzZWxlY3QoRWZmZWN0LCBTdHVkeSwgWWVhciwgRmVlZGluZ19ndWlsZCwKICAgICAgICAgbG5SUiA9IFNpX2xuUlIsIHZhcmxuUlIgPSBTaV92YXJsblJSLCAKICAgICAgICAgbG5WUiA9IFNpX2xuVlIsIHZhcmxuVlIgPSBTaV92YXJsblZSKSAtPiBkYXQzICMgc2lsaWNvbiB1cHRha2VzCgojIGxvbmcgZm9ybWF0CmxkYXQgPC0gcmJpbmQoZGF0MiwgZGF0MykgJT4lIAogIG11dGF0ZShOdW1iZXIgPSAxOigyKm5yb3coZGF0KSksIAogICAgICAgICBSUiA9IHJlcChjKCJsblJSIiwgIlNpX2xuUlIiKSwgZWFjaCA9IG5yb3coZGF0KSksIAogICAgICAgICBWUiA9IHJlcChjKCJsblZSIiwgIlNpX2xuVlIiKSwgZWFjaCA9IG5yb3coZGF0KSkpCgojIGxuUlIKYmlfbWFfbG5SUiA8LSBybWEubXYoeWkgPSBsblJSLCBWID0gdmFybG5SUiwgCiAgICAgICAgICAgICAgIG1vZHMgPSB+IFJSIC0gMSwgCiAgICAgICAgICAgICAgIHJhbmRvbSA9bGlzdCh+IFJSIHwgU3R1ZHkpLCBzdHJ1Y3Q9IlVOIiwgZGF0YT1sZGF0KSAjIG9ubHkgdGFrZXMgMiByYW5kb20gZmFjdG9yCiNzdW1tYXJ5KGJpX21hX2xuUlIpCgojY29yX2xuUlIgPC0gcm91bmQoYmlfbWFfbG5SUiRyaG8sIDMpCiNzYXZlUkRTKGJpX21hX2xuUlIsIGZpbGUgPSBoZXJlKCJSZGF0YSIsICJiaV9tYV9sblJSLnJkcyIpKQoKIyB0YWtlcyB2ZXJ5IGxvbmcgdG8gcnVuCmNpX2Nvcl9sblJSIDwtIGNvbmZpbnQoYmlfbWFfbG5SUikKc2F2ZVJEUyhjaV9jb3JfbG5SUiwgZmlsZSA9IGhlcmUoIlJkYXRhIiwgImNpX2Nvcl9sblJSLnJkcyIpKQoKIyBsblZSCmJpX21hX2xuVlIgPC0gcm1hLm12KHlpID0gbG5WUiwgViA9IHZhcmxuVlIsIAogICAgICAgICAgICAgICBtb2RzID0gfiBWUiAtIDEsIAogICAgICAgICAgICAgICByYW5kb20gPWxpc3QofiBWUiB8IFN0dWR5KSwgc3RydWN0PSJVTiIsIGRhdGE9bGRhdCkgIyBvbmx5IHRha2VzIDIgcmFuZG9tIGZhY3Rvcgojc3VtbWFyeShiaV9tYV9sblZSKQojY29yX2xuUlIgPC0gcm91bmQoYmlfbWFfbG5SUiRyaG8sIDMpCiNzYXZlUkRTKGJpX21hX2xuVlIsIGZpbGUgPSBoZXJlKCJSZGF0YSIsICJiaV9tYV9sblZSLnJkcyIpKQoKY2lfY29yX2xuVlIgPC0gY29uZmludChiaV9tYV9sblZSKQpzYXZlUkRTKGNpX2Nvcl9sblZSLCBmaWxlID0gaGVyZSgiUmRhdGEiLCAiY2lfY29yX2xuVlIucmRzIikpCgpgYGAKCgpgYGB7cn0KIyB3ZSBwcm9iYWJseSByZXdyaXRlIGhlcmUgCgojIGJpdmFyaWF0ZSBjb3JyZWxhdGlvbnMKY2lfY29yX2xuUlIgPC0gcmVhZFJEUyhmaWxlID0gaGVyZSgiUmRhdGEiLCAiY2lfY29yX2xuUlIucmRzIikpCmNpX2Nvcl9sblZSIDwtIHJlYWRSRFMoZmlsZSA9IGhlcmUoIlJkYXRhIiwgImNpX2Nvcl9sblZSLnJkcyIpKQoKYGBgCgpXZSBmb3VuZCBhIGNvcnJlbGF0aW9uIG9mIGByIHJvdW5kKGNpX2Nvcl9sblJSW1szXV0kcmFuZG9tWzFdLDMpYCAoOTUlIENJID0gW2ByIHJvdW5kKGNpX2Nvcl9sblJSW1szXV0kcmFuZG9tWzJdLDMpYCAsIGByIHJvdW5kKGNpX2Nvcl9sblJSW1szXV0kcmFuZG9tWzNdLDMpYF0pIGJldHdlZW4gdGhlIHR3byBsblJScywgYW5kIGEgY29ycmVsYXRpb24gb2YgYHIgcm91bmQoY2lfY29yX2xuVlJbWzNdXSRyYW5kb21bMV0sMylgICg5NSUgQ0kgPSBbYHIgcm91bmQoY2lfY29yX2xuVlJbWzNdXSRyYW5kb21bMl0sMylgICwgYHIgcm91bmQoY2lfY29yX2xuVlJbWzNdXSRyYW5kb21bM10sMylgXSkgYmV0d2VlbiB0aGUgdHdvIGxuVlJzLgoKIyMgUnVuIGFib3ZlIGNvcnJlbGF0aW9ucyBidXQgb25seSB3aXRoIGNoZXdpbmcgYXJ0aHJvcG9kcwpgYGB7ciwgLCBldmFsID0gRkFMU0V9CmNoZXdfbGRhdDwtc3Vic2V0KGxkYXQsIEZlZWRpbmdfZ3VpbGQgPT0gJ0NoZXdpbmcgYXJ0aHJvcG9kcycpCgojIGxuUlIKYmlfbWFfbG5SUl9jaGV3IDwtIHJtYS5tdih5aSA9IGxuUlIsIFYgPSB2YXJsblJSLCAKICAgICAgICAgICAgICAgbW9kcyA9IH4gUlIgLSAxLCAKICAgICAgICAgICAgICAgcmFuZG9tID1saXN0KH4gUlIgfCBTdHVkeSksIHN0cnVjdD0iVU4iLCBkYXRhPWNoZXdfbGRhdCkgIyBvbmx5IHRha2VzIDIgcmFuZG9tIGZhY3RvcgoKIyB0YWtlcyB2ZXJ5IGxvbmcgdG8gcnVuCmNpX2Nvcl9sblJSX2NoZXcgPC0gY29uZmludChiaV9tYV9sblJSX2NoZXcpCnNhdmVSRFMoY2lfY29yX2xuUlJfY2hldywgZmlsZSA9IGhlcmUoIlJkYXRhIiwgImNpX2Nvcl9sblJSX2NoZXcucmRzIikpCgojbG5WUgpiaV9tYV9sblZSX2NoZXcgPC0gcm1hLm12KHlpID0gbG5WUiwgViA9IHZhcmxuVlIsIAogICAgICAgICAgICAgICBtb2RzID0gfiBWUiAtIDEsIAogICAgICAgICAgICAgICByYW5kb20gPWxpc3QofiBWUiB8IFN0dWR5KSwgc3RydWN0PSJVTiIsIGRhdGE9Y2hld19sZGF0KSAjIG9ubHkgdGFrZXMgMiByYW5kb20gZmFjdG9yCiNzdW1tYXJ5KGJpX21hX2xuVlIpCiNjb3JfbG5SUiA8LSByb3VuZChiaV9tYV9sblJSJHJobywgMykKI3NhdmVSRFMoYmlfbWFfbG5WUiwgZmlsZSA9IGhlcmUoIlJkYXRhIiwgImJpX21hX2xuVlIucmRzIikpCgpjaV9jb3JfbG5WUl9jaGV3IDwtIGNvbmZpbnQoYmlfbWFfbG5WUl9jaGV3KQpzYXZlUkRTKGNpX2Nvcl9sblZSX2NoZXcsIGZpbGUgPSBoZXJlKCJSZGF0YSIsICJjaV9jb3JfbG5WUl9jaGV3LnJkcyIpKQoKYGBgCgpgYGB7cn0KCiMgYml2YXJpYXRlIGNvcnJlbGF0aW9ucyBjaGV3aW5nIGFydGhyb3BvZHMgb25seQpjaV9jb3JfbG5SUl9jaGV3IDwtIHJlYWRSRFMoZmlsZSA9IGhlcmUoIlJkYXRhIiwgImNpX2Nvcl9sblJSX2NoZXcucmRzIikpCmNpX2Nvcl9sblZSX2NoZXcgPC0gcmVhZFJEUyhmaWxlID0gaGVyZSgiUmRhdGEiLCAiY2lfY29yX2xuVlJfY2hldy5yZHMiKSkKCmBgYAoKV2UgZm91bmQgYSBjb3JyZWxhdGlvbiBvZiBgciByb3VuZChjaV9jb3JfbG5SUl9jaGV3W1szXV0kcmFuZG9tWzFdLDMpYCAoOTUlIENJID0gW2ByIHJvdW5kKGNpX2Nvcl9sblJSX2NoZXdbWzNdXSRyYW5kb21bMl0sMylgICwgYHIgcm91bmQoY2lfY29yX2xuUlJfY2hld1tbM11dJHJhbmRvbVszXSwzKWBdKSBiZXR3ZWVuIHRoZSB0d28gbG5SUnMsIGFuZCBhIGNvcnJlbGF0aW9uIG9mIGByIHJvdW5kKGNpX2Nvcl9sblZSX2NoZXdbWzNdXSRyYW5kb21bMV0sMylgICg5NSUgQ0kgPSBbYHIgcm91bmQoY2lfY29yX2xuVlJfY2hld1tbM11dJHJhbmRvbVsyXSwzKWAgLCBgciByb3VuZChjaV9jb3JfbG5WUl9jaGV3W1szXV0kcmFuZG9tWzNdLDMpYF0pIGJldHdlZW4gdGhlIHR3byBsblZScy4KCgojIyBNZXRhLXJlZ3Jlc3Npb246IHRoZSBFZmZlY3Qgb2YgU2lsaWNvbiBhbmQgSGVyYml2b3JlIFBlcmZvcm1hbmNlCgojIyMgVW5pdmFyaWF0ZSAodW5pLXByZWRpY3RvcikgYW5hbHlzZXMKCldlIHJhbiBhIHVuaXZhcmlhdGUgbWV0YS1yZWdyZXNzaW9uIG1vZGVsIGZvciBlYWNoIG9mIHRoZSBmb2xsb3dpbmcgbW9kZXJhdG9yczogMSkgYFBvYWNlYWVfb3JfTm9uYCwgMikgYFBsYW50X2xpZmVzcGFuYCwgMykgYEhlcmJpdm9yZV9kaWV0X2JyZWFkdGhgLCBhbmQgNCkgYEZlZWRpbmdfZ3VpbGRgIChzZWUgdGhlIG1ldGEtZGF0YSBhYm92ZSkuIAoKCiMjIyBQbGFudCBncm91cHM6IFBvYWNlYWUgdnMuIE5vbi1Qb2FjZWFlCgojIyMjIE1lYW4gY2hhbmdlOiBsblJSCgpgYGB7ciwgfQojIHJlb3JkZXJpbmcKZGF0JFBvYWNlYWVfb3JfTm9uIDwtIGZhY3RvcihkYXQkUG9hY2VhZV9vcl9Ob24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXZlbHMgPSByZXYoYygiUG9hY2VhZSIsICJOb24tUG9hY2VhZSIpKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVscyA9IHJldihjKCJQb2FjZWFlIiwgIk5vbi1Qb2FjZWFlIikpKQoKIyBtZXRhLXJlZ3Jlc3Npb246IG11bHRpcGxlIGludGVyY2VwdHMKbXJfbWRjb3RfbG5SUjEgPC0gcm1hLm12KAogIHlpID0gbG5SUiwKICBWID0gVkNWX2xuUlIsCiAgbW9kcyA9IH4gUG9hY2VhZV9vcl9Ob24gLSAxLAogIHRlc3QgPSAidCIsCiAgcmFuZG9tID0gbGlzdCh+MXxIZXJiaXZvcmVfUGh5bG9nZW55LCB+MXxIZXJiaXZvcmVfTGF0aW5fbmFtZSwgCiAgICAgICAgICAgICAgICB+MXxTdHVkeSwgfjF8RWZmZWN0KSwKICBkYXRhID0gZGF0CikKCiMgZ2V0dGluZyBtYXJnaW5hbCBSMgpyMl9tcl9tZGNvdF9sblJSMSA8LSByMl9tbChtcl9tZGNvdF9sblJSMSkKCiMgZ2V0dGluZyB0aGUgbGV2ZWwgbmFtZXMgb3V0CmxldmVsX25hbWVzIDwtIGxldmVscyhkYXQkUG9hY2VhZV9vcl9Ob24pCgojIGhlbHBlciBmdW5jdGlvbiB0byBydW4gbWV0YWZvciBtZXRhLXJlZ3Jlc3Npb24KcnVuX3JtYSA8LSBmdW5jdGlvbihuYW1lKSB7CiAgcm1hLm12KHlpID0gbG5SUiwgCiAgICAgICAgIFYgPSBWQ1ZfbG5SUiwKICAgICAgICAgbW9kcyA9IH4gcmVsZXZlbChQb2FjZWFlX29yX05vbiwgcmVmID0gbmFtZSksIAogICAgICAgICB0ZXN0ID0gInQiLAogICAgICAgICByYW5kb20gPSBsaXN0KH4xfEhlcmJpdm9yZV9QaHlsb2dlbnksIH4xfEhlcmJpdm9yZV9MYXRpbl9uYW1lLCAKICAgICAgICAgICAgICAgICAgICAgICB+MXxTdHVkeSwgfjF8RWZmZWN0KSwKICAgICAgICAgZGF0YSA9IGRhdCkKfQoKIyByZXN1bHRzIG9mIG1ldGEtcmVncmVzc2lvbiBpbmNsdWRpbmcgYWxsIGNvbnRyYXN0IHJlc3VsdHM7IHRha2luZyB0aGUgbGFzdCBsZXZlbCBvdXQgKFstbGVuZ3RoKGxldmVsX25hbWVzKV0pCm1yX21kY290X2xuUlIgPC0gbWFwKGxldmVsX25hbWVzWy1sZW5ndGgobGV2ZWxfbmFtZXMpXSwgcnVuX3JtYSkKYGBgCgojIyMjIyBUYWJsZSBFNQoqKlRhYmxlIEU1OioqClJlZ3Jlc3Npb24gY29lZmZpY2llbnRzIChlc3RpbWF0ZSksIDk1JSBjb25maWRlbmNlIGludGVydmFscyAoQ0lzKSwgUCB2YWx1ZXMsIGFuZCB2YXJpYW5jZSBleHBsYWluZWQsICAqUipeMl5+W21hcmdpbmFsXX4gKFIyKSA9IGByIGFzLm51bWVyaWMocm91bmQocjJfbXJfbWRjb3RfbG5SUjFbMV0sIDQpKjEwMClgJSBmcm9tIHRoZSBtZXRhLXJlZ3Jlc3Npb24gb2YgbG5SUiB3aXRoIGBQb2FjZWFlX29yX05vbl9Qb2FjZWFlYC4gCmBgYHtyLCB9CiMgZ2V0dGluZyBlc3RpbWF0ZXMKcmVzX21yX21kY290X2xuUlIxIDwtIGdldF9wcmVkMShtcl9tZGNvdF9sblJSMSwgbW9kID0gIlBvYWNlYWVfb3JfTm9uIikKI3Jlc19tcl9hbm51YWxpdHlfbG5SUjIgPC0gbWFwKG1yX2FubnVhbGl0eV9sblJSLCB+IGdldF9lc3QyKC54LCBtb2QgPSAiQW5udWFsaXR5IikpCnJlc19tcl9tZGNvdF9sblJSIDwtIG1hcChtcl9tZGNvdF9sblJSLCB+IGdldF9wcmVkMigueCwgbW9kID0gIlBvYWNlYWVfb3JfTm9uIikpCgojIGEgbGlzdCBvZiB0aGUgbnVtYmVycyB0byB0YWtlIG91dCB1bm5lY2Vzc2FyeSBjb250cmFzdHMKY29udHJhX2xpc3QgPC0gTWFwKHNlcSwgZnJvbT0xLCB0bz0xOjEpCgojIHlvdSBuZWVkIHRvIGZsYXR0ZW4gdHdpY2U6IGZpcnN0IHRvIG1ha2UgaXQgYSBsaXN0IGFuZCBtYWtlIGl0IGEgdmVjdG9yCiMgSSBndWVzcyB3ZSBjYW4gbWFrZSBpdCBhIGxvb3AgKG9yIHZlY3RvcmlzZSkKcmVzX21yX21kY290X2xuUlIyIDwtIG1hcDJfZGZyKHJlc19tcl9tZGNvdF9sblJSLCBjb250cmFfbGlzdCwgfi54Wy0oLnkpLCBdKSAKCiMgY3JlYXRpbmcgYSB0YWJsZQptcl9yZXN1bHRzKHJlc19tcl9tZGNvdF9sblJSMSwgcmVzX21yX21kY290X2xuUlIyKSAlPiUgCiAga2FibGUoImh0bWwiLCAgZGlnaXRzID0gMykgJT4lCiAga2FibGVfc3R5bGluZygic3RyaXBlZCIsIHBvc2l0aW9uID0gImxlZnQiKSAlPiUKICBzY3JvbGxfYm94KHdpZHRoID0gIjEwMCUiKQpgYGAKCiMjIyMgQ2hhbmdlIGluIFNEOiBsblZSCgpgYGB7ciwgfQoKIyBtZXRhLXJlZ3Jlc3Npb246IG11bHRpcGxlIGludGVyY2VwdHMKbXJfbWRjb3RfbG5WUjEgPC0gcm1hLm12KAogIHlpID0gbG5WUiwKICBWID0gVkNWX2xuVlIsCiAgbW9kcyA9IH4gUG9hY2VhZV9vcl9Ob24gLSAxLAogIHRlc3QgPSAidCIsCiAgcmFuZG9tID0gbGlzdCh+MXxIZXJiaXZvcmVfUGh5bG9nZW55LCB+MXxIZXJiaXZvcmVfTGF0aW5fbmFtZSwgCiAgICAgICAgICAgICAgICB+MXxTdHVkeSwgfjF8RWZmZWN0KSwKICBkYXRhID0gZGF0CikKCiMgZ2V0dGluZyBtYXJnaW5hbCBSMgpyMl9tcl9tZGNvdF9sblZSMSA8LSByMl9tbChtcl9tZGNvdF9sblZSMSkKCiMgZ2V0dGluZyB0aGUgbGV2ZWwgbmFtZXMgb3V0CmxldmVsX25hbWVzIDwtIGxldmVscyhkYXQkUG9hY2VhZV9vcl9Ob24pCgojIGhlbHBlciBmdW5jdGlvbiB0byBydW4gbWV0YWZvciBtZXRhLXJlZ3Jlc3Npb24KcnVuX3JtYSA8LSBmdW5jdGlvbihuYW1lKSB7CiAgcm1hLm12KHlpID0gbG5WUiwgCiAgICAgICAgIFYgPSBWQ1ZfbG5WUiwKICAgICAgICAgbW9kcyA9IH4gcmVsZXZlbChQb2FjZWFlX29yX05vbiwgcmVmID0gbmFtZSksIAogICAgICAgICB0ZXN0ID0gInQiLAogICAgICAgICByYW5kb20gPSBsaXN0KH4xfEhlcmJpdm9yZV9QaHlsb2dlbnksIH4xfEhlcmJpdm9yZV9MYXRpbl9uYW1lLCAKICAgICAgICAgICAgICAgICAgICAgICB+MXxTdHVkeSwgfjF8RWZmZWN0KSwKICAgICAgICAgZGF0YSA9IGRhdCkKfQoKIyByZXN1bHRzIG9mIG1ldGEtcmVncmVzc2lvbiBpbmNsdWRpbmcgYWxsIGNvbnRyYXN0IHJlc3VsdHM7IHRha2luZyB0aGUgbGFzdCBsZXZlbCBvdXQgKFstbGVuZ3RoKGxldmVsX25hbWVzKV0pCm1yX21kY290X2xuVlIgPC0gbWFwKGxldmVsX25hbWVzWy1sZW5ndGgobGV2ZWxfbmFtZXMpXSwgcnVuX3JtYSkKYGBgCgojIyMjIyBUYWJsZSBFNgoqKlRhYmxlIEU2OioqClJlZ3Jlc3Npb24gY29lZmZpY2llbnRzIChlc3RpbWF0ZSksIDk1JSBjb25maWRlbmNlIGludGVydmFscyAoQ0lzKSwgUCB2YWx1ZXMsIGFuZCB2YXJpYW5jZSBleHBsYWluZWQsICAqUipeMl5+W21hcmdpbmFsXX4gKFIyKSA9IGByIGFzLm51bWVyaWMocm91bmQocjJfbXJfbWRjb3RfbG5WUjFbMV0sIDQpKjEwMClgJSBmcm9tIHRoZSBtZXRhLXJlZ3Jlc3Npb24gb2YgbG5WUiB3aXRoIGBQb2FjZWFlX29yX05vbl9Qb2FjZWFlYC4gCmBgYHtyLCB9CiMgZ2V0dGluZyBlc3RpbWF0ZXMKcmVzX21yX21kY290X2xuVlIxIDwtIGdldF9wcmVkMShtcl9tZGNvdF9sblZSMSwgbW9kID0gIlBvYWNlYWVfb3JfTm9uIikKI3Jlc19tcl9hbm51YWxpdHlfbG5SUjIgPC0gbWFwKG1yX2FubnVhbGl0eV9sblJSLCB+IGdldF9lc3QyKC54LCBtb2QgPSAiQW5udWFsaXR5IikpCnJlc19tcl9tZGNvdF9sblZSIDwtIG1hcChtcl9tZGNvdF9sblZSLCB+IGdldF9wcmVkMigueCwgbW9kID0gIlBvYWNlYWVfb3JfTm9uIikpCgojIGEgbGlzdCBvZiB0aGUgbnVtYmVycyB0byB0YWtlIG91dCB1bm5lY2Vzc2FyeSBjb250cmFzdHMKY29udHJhX2xpc3QgPC0gTWFwKHNlcSwgZnJvbT0xLCB0bz0xOjEpCgojIHlvdSBuZWVkIHRvIGZsYXR0ZW4gdHdpY2U6IGZpcnN0IHRvIG1ha2UgaXQgYSBsaXN0IGFuZCBtYWtlIGl0IGEgdmVjdG9yCiMgSSBndWVzcyB3ZSBjYW4gbWFrZSBpdCBhIGxvb3AgKG9yIHZlY3RvcmlzZSkKcmVzX21yX21kY290X2xuVlIyIDwtIG1hcDJfZGZyKHJlc19tcl9tZGNvdF9sblZSLCBjb250cmFfbGlzdCwgfi54Wy0oLnkpLCBdKSAKCiMgY3JlYXRpbmcgYSB0YWJsZQptcl9yZXN1bHRzKHJlc19tcl9tZGNvdF9sblZSMSwgcmVzX21yX21kY290X2xuVlIyKSAlPiUgCiAga2FibGUoImh0bWwiLCAgZGlnaXRzID0gMykgJT4lCiAga2FibGVfc3R5bGluZygic3RyaXBlZCIsIHBvc2l0aW9uID0gImxlZnQiKSAlPiUKICBzY3JvbGxfYm94KHdpZHRoID0gIjEwMCUiKQpgYGAKCiMjIyMjIEZpZ3VyZSBFMwpgYGB7ciwgIGZpZy53aWR0aD03LCBmaWcuaGVpZ2h0PTgsIH0KCnAxMCA8LSBvcmNoYXJkX3Bsb3QobXJfbWRjb3RfbG5SUjEsIGRhdGEgPSBkYXQsIG1vZD0iUG9hY2VhZV9vcl9Ob24iLGdyb3VwPSAnU3R1ZHknLCB4bGFiID0gImxvZyhSZXNwb25zZSBSYXRpbykgKGxuUlIpIiwgYWxwaGEgPSAwLjIsIGFuZ2xlID0gNDUpIAoKCnAxMSA8LSBvcmNoYXJkX3Bsb3QobXJfbWRjb3RfbG5WUjEsIGRhdGEgPSBkYXQsIG1vZD0iUG9hY2VhZV9vcl9Ob24iLGdyb3VwPSAnU3R1ZHknLCB4bGFiID0gImxvZyhWYXJpYWJpbHR5IFJhdGlvKSAobG5WUikiLCBhbHBoYSA9IDAuMiwgYW5nbGUgPSA0NSkgCgpwMTAvcDExCgojZ2dzYXZlKGhlcmUoImZpZyIsICJNb25vY290X0RpY290LnBuZyIpKQpgYGAKCioqRmlndXJlIEUzOioqIApNZWFuIGNoYW5nZSAobG5SUikgYW5kIGNoYW5nZSBpbiBTRCAgKGxuVlIpIGluIGhlcmJpdm9yZSBwZXJmb3JtYW5jZSB3aGVuIGZlZWRpbmcgb24gUG9hY2VhZSBhbmQgbm9uLVBvYWNlYWUgcGxhbnRzLiBUaGUgb3JjaGFyZCBwbG90IHNob3dzIHRoZSBtZXRhLWFuYWx5dGljIG1lYW4gKG1lYW4gZWZmZWN0IHNpemUpIHdpdGggaXRzIDk1JSBjb25maWRlbmNlIGludGVydmFsICh0aGljayBsaW5lKSBhbmQgOTUlIHByZWRpY3Rpb24gaW50ZXJ2YWwgKHRoaW4gbGluZSksIHdpdGggb2JzZXJ2ZWQgZWZmZWN0IHNpemVzIGJhc2VkIG9uIHNhbXBsZSBzaXplcy4KCiMjIyBQbGFudCBsaWZlc3BhbjogYW5udWFsIHZzLiBwZXJlbm5pYWwKCiMjIyMgTWVhbiBjaGFuZ2U6IGxuUlIKYGBge3IsIH0KCiMgZ2V0dGluZyB0aGUgbGV2ZWwgbmFtZXMgb3V0CmxldmVsX25hbWVzIDwtIGxldmVscyhkYXQkUGxhbnRfbGlmZXNwYW4pCgojIGxuUlIKIyBtZXRhLXJlZ3Jlc3Npb246IG11bHRpcGxlIGludGVyY2VwdHMKbXJfYW5udWFsaXR5X2xuUlIxIDwtIHJtYS5tdigKICB5aSA9IGxuUlIsCiAgViA9IFZDVl9sblJSLAogIG1vZHMgPSB+IFBsYW50X2xpZmVzcGFuIC0gMSwKICB0ZXN0ID0gInQiLAogIHJhbmRvbSA9IGxpc3QofjF8SGVyYml2b3JlX1BoeWxvZ2VueSwgfjF8SGVyYml2b3JlX0xhdGluX25hbWUsIAogICAgICAgICAgICAgICAgfjF8U3R1ZHksIH4xfEVmZmVjdCksCiAgZGF0YSA9IGRhdAopCgojIGdldHRpbmcgbWFyZ2luYWwgUjIKcjJfbXJfYW5udWFsaXR5X2xuUlIxIDwtIHIyX21sKG1yX2FubnVhbGl0eV9sblJSMSkKCiMgbWV0YS1yZWdyZXNzaW9uOiBjb250cmFzdHMgCiMgaGVscGVyIGZ1bmN0aW9uIHRvIHJ1biBtZXRhZm9yIG1ldGEtcmVncmVzc2lvbgpydW5fcm1hIDwtIGZ1bmN0aW9uKG5hbWUpIHsKICBybWEubXYoeWkgPSBsblJSLCAKICAgICAgICAgViA9IFZDVl9sblJSLCAKICAgICAgICAgbW9kcyA9IH4gcmVsZXZlbChQbGFudF9saWZlc3BhbiwgcmVmID0gbmFtZSksIAogICAgICAgICB0ZXN0ID0gInQiLAogICAgICAgIHJhbmRvbSA9IGxpc3QofjF8SGVyYml2b3JlX1BoeWxvZ2VueSwgfjF8SGVyYml2b3JlX0xhdGluX25hbWUsIAogICAgICAgICAgICAgICAgICAgICAgfjF8U3R1ZHksIH4xfEVmZmVjdCksCiAgICAgICAgIGRhdGEgPSBkYXQpCn0KCiMgcmVzdWx0cyBvZiBtZXRhLXJlZ3Jlc3Npb24gaW5jbHVkaW5nIGFsbCBjb250cmFzdCByZXN1bHRzOyB0YWtpbmcgdGhlIGxhc3QgbGV2ZWwgb3V0IChbLWxlbmd0aChsZXZlbF9uYW1lcyldKQptcl9hbm51YWxpdHlfbG5SUiA8LSBtYXAobGV2ZWxfbmFtZXNbLWxlbmd0aChsZXZlbF9uYW1lcyldLCBydW5fcm1hKQpgYGAKIyMjIyMgVGFibGUgRTcKKipUYWJsZSBFNzoqKgpSZWdyZXNzaW9uIGNvZWZmaWNpZW50cyAoZXN0aW1hdGUpLCA5NSUgY29uZmlkZW5jZSBpbnRlcnZhbHMgKENJcyksIGFuZCB2YXJpYW5jZSBleHBsYWluZWQsICAqUipeMl5+W21hcmdpbmFsXX4gKFIyKSA9IGByIGFzLm51bWVyaWMocm91bmQocjJfbXJfYW5udWFsaXR5X2xuUlIxWzFdLCA0KSoxMDApYCUgZnJvbSB0aGUgbWV0YS1yZWdyZXNzaW9uIG9mIGxuUlIgd2l0aCBgUGxhbnRfbGlmZXNwYW5gLiAKCmBgYHtyLCB9CiMgZ2V0dGluZyBlc3RpbWF0ZXMKcmVzX21yX2FubnVhbGl0eV9sblJSMSA8LSBnZXRfcHJlZDEobXJfYW5udWFsaXR5X2xuUlIxLCBtb2QgPSAiUGxhbnRfbGlmZXNwYW4iKQpyZXNfbXJfYW5udWFsaXR5X2xuUlIgPC0gbWFwKG1yX2FubnVhbGl0eV9sblJSLCB+IGdldF9wcmVkMigueCwgbW9kID0gIlBsYW50X2xpZmVzcGFuIikpCgojIGEgbGlzdCBvZiB0aGUgbnVtYmVycyB0byB0YWtlIG91dCB1bm5lY2Vzc2FyeSBjb250cmFzdHMKY29udHJhX2xpc3QgPC0gTWFwKHNlcSwgZnJvbT0xLCB0bz0xOjEpCgojIHlvdSBuZWVkIHRvIGZsYXR0ZW4gdHdpY2U6IGZpcnN0IHRvIG1ha2UgaXQgYSBsaXN0IGFuZCBtYWtlIGl0IGEgdmVjdG9yCiMgSSBndWVzcyB3ZSBjYW4gbWFrZSBpdCBhIGxvb3AgKG9yIHZlY3RvcmlzZSkKcmVzX21yX2FubnVhbGl0eV9sblJSMiA8LSBtYXAyX2RmcihyZXNfbXJfYW5udWFsaXR5X2xuUlIsIGNvbnRyYV9saXN0LCB+LnhbLSgueSksIF0pIAoKIyBjcmVhdGluZyBhIHRhYmxlCm1yX3Jlc3VsdHMocmVzX21yX2FubnVhbGl0eV9sblJSMSwgcmVzX21yX2FubnVhbGl0eV9sblJSMikgJT4lIAogIGthYmxlKCJodG1sIiwgIGRpZ2l0cyA9IDMpICU+JQogIGthYmxlX3N0eWxpbmcoInN0cmlwZWQiLCBwb3NpdGlvbiA9ICJsZWZ0IikgJT4lCiAgc2Nyb2xsX2JveCh3aWR0aCA9ICIxMDAlIikKYGBgCgojIyMjIENoYW5nZSBpbiBTRDogbG5WUgpgYGB7ciwgfQoKIyBnZXR0aW5nIHRoZSBsZXZlbCBuYW1lcyBvdXQKbGV2ZWxfbmFtZXMgPC0gbGV2ZWxzKGRhdCRQbGFudF9saWZlc3BhbikKCiMgbG5SUgojIG1ldGEtcmVncmVzc2lvbjogbXVsdGlwbGUgaW50ZXJjZXB0cwptcl9hbm51YWxpdHlfbG5WUjEgPC0gcm1hLm12KAogIHlpID0gbG5WUiwKICBWID0gVkNWX2xuVlIsCiAgbW9kcyA9IH4gUGxhbnRfbGlmZXNwYW4gLSAxLAogIHRlc3QgPSAidCIsCiAgcmFuZG9tID0gbGlzdCh+MXxIZXJiaXZvcmVfUGh5bG9nZW55LCB+MXxIZXJiaXZvcmVfTGF0aW5fbmFtZSwgCiAgICAgICAgICAgICAgICB+MXxTdHVkeSwgfjF8RWZmZWN0KSwKICBkYXRhID0gZGF0CikKCiMgZ2V0dGluZyBtYXJnaW5hbCBSMgpyMl9tcl9hbm51YWxpdHlfbG5WUjEgPC0gcjJfbWwobXJfYW5udWFsaXR5X2xuVlIxKQoKIyBtZXRhLXJlZ3Jlc3Npb246IGNvbnRyYXN0cyAKIyBoZWxwZXIgZnVuY3Rpb24gdG8gcnVuIG1ldGFmb3IgbWV0YS1yZWdyZXNzaW9uCnJ1bl9ybWEgPC0gZnVuY3Rpb24obmFtZSkgewogIHJtYS5tdih5aSA9IGxuVlIsIAogICAgICAgICBWID0gVkNWX2xuVlIsIAogICAgICAgICBtb2RzID0gfiByZWxldmVsKFBsYW50X2xpZmVzcGFuLCByZWYgPSBuYW1lKSwgCiAgICAgICAgIHRlc3QgPSAidCIsCiAgICAgICAgcmFuZG9tID0gbGlzdCh+MXxIZXJiaXZvcmVfUGh5bG9nZW55LCB+MXxIZXJiaXZvcmVfTGF0aW5fbmFtZSwgCiAgICAgICAgICAgICAgICAgICAgICB+MXxTdHVkeSwgfjF8RWZmZWN0KSwKICAgICAgICAgZGF0YSA9IGRhdCkKfQoKIyByZXN1bHRzIG9mIG1ldGEtcmVncmVzc2lvbiBpbmNsdWRpbmcgYWxsIGNvbnRyYXN0IHJlc3VsdHM7IHRha2luZyB0aGUgbGFzdCBsZXZlbCBvdXQgKFstbGVuZ3RoKGxldmVsX25hbWVzKV0pCm1yX2FubnVhbGl0eV9sblZSIDwtIG1hcChsZXZlbF9uYW1lc1stbGVuZ3RoKGxldmVsX25hbWVzKV0sIHJ1bl9ybWEpCmBgYAoKIyMjIyMgVGFibGUgRTgKKipUYWJsZSBFODoqKgpSZWdyZXNzaW9uIGNvZWZmaWNpZW50cyAoZXN0aW1hdGUpLCA5NSUgY29uZmlkZW5jZSBpbnRlcnZhbHMgKENJcyksIGFuZCB2YXJpYW5jZSBleHBsYWluZWQsICAqUipeMl5+W21hcmdpbmFsXX4gKFIyKSA9IGByIGFzLm51bWVyaWMocm91bmQocjJfbXJfYW5udWFsaXR5X2xuVlIxWzFdLCA0KSoxMDApYCUgZnJvbSB0aGUgbWV0YS1yZWdyZXNzaW9uIG9mIGxuVlIgd2l0aCBgUGxhbnRfbGlmZXNwYW5gLiAKCmBgYHtyLCB9CiMgZ2V0dGluZyBlc3RpbWF0ZXMKcmVzX21yX2FubnVhbGl0eV9sblZSMSA8LSBnZXRfcHJlZDEobXJfYW5udWFsaXR5X2xuVlIxLCBtb2QgPSAiUGxhbnRfbGlmZXNwYW4iKQpyZXNfbXJfYW5udWFsaXR5X2xuVlIgPC0gbWFwKG1yX2FubnVhbGl0eV9sblZSLCB+IGdldF9wcmVkMigueCwgbW9kID0gIlBsYW50X2xpZmVzcGFuIikpCgojIGEgbGlzdCBvZiB0aGUgbnVtYmVycyB0byB0YWtlIG91dCB1bm5lY2Vzc2FyeSBjb250cmFzdHMKY29udHJhX2xpc3QgPC0gTWFwKHNlcSwgZnJvbT0xLCB0bz0xOjEpCgojIHlvdSBuZWVkIHRvIGZsYXR0ZW4gdHdpY2U6IGZpcnN0IHRvIG1ha2UgaXQgYSBsaXN0IGFuZCBtYWtlIGl0IGEgdmVjdG9yCiMgSSBndWVzcyB3ZSBjYW4gbWFrZSBpdCBhIGxvb3AgKG9yIHZlY3RvcmlzZSkKcmVzX21yX2FubnVhbGl0eV9sblZSMiA8LSBtYXAyX2RmcihyZXNfbXJfYW5udWFsaXR5X2xuVlIsIGNvbnRyYV9saXN0LCB+LnhbLSgueSksIF0pIAoKIyBjcmVhdGluZyBhIHRhYmxlCm1yX3Jlc3VsdHMocmVzX21yX2FubnVhbGl0eV9sblZSMSwgcmVzX21yX2FubnVhbGl0eV9sblZSMikgJT4lIAogIGthYmxlKCJodG1sIiwgIGRpZ2l0cyA9IDMpICU+JQogIGthYmxlX3N0eWxpbmcoInN0cmlwZWQiLCBwb3NpdGlvbiA9ICJsZWZ0IikgJT4lCiAgc2Nyb2xsX2JveCh3aWR0aCA9ICIxMDAlIikKYGBgCgojIyMjIyBGaWd1cmUgRTQKYGBge3IsICBmaWcud2lkdGg9NywgZmlnLmhlaWdodD04LCB9CgpwNyA8LSBvcmNoYXJkX3Bsb3QobXJfYW5udWFsaXR5X2xuUlIxLCBkYXRhID0gZGF0LCBtb2Q9IlBsYW50X2xpZmVzcGFuIixncm91cD0gJ1N0dWR5JywgeGxhYiA9ICJsb2coUmVzcG9uc2UgUmF0aW8pIChsblJSKSIsIGFscGhhID0gMC4yLCBhbmdsZSA9IDQ1KSAKcDggPC0gb3JjaGFyZF9wbG90KG1yX2FubnVhbGl0eV9sblZSMSwgZGF0YSA9IGRhdCwgbW9kPSJQbGFudF9saWZlc3BhbiIsZ3JvdXA9ICdTdHVkeScsIHhsYWIgPSAibG9nKFZhcmlhYmlsaXR5IFJhdGlvKSAobG5WUikiLCBhbHBoYSA9IDAuMiwgYW5nbGUgPSA0NSkgCnA3L3A4CgojZ2dzYXZlKGhlcmUoImZpZyIsICJBbm51YWxpdHkucG5nIikpCmBgYAoKKipGaWd1cmUgRTQ6KiogTWVhbiBjaGFuZ2UgKGxuUlIpLCBhbmQgY2hhbmdlIGluIFNEICAobG5WUikgaW4gaGVyYml2b3JlIHBlcmZvcm1hbmNlIHdoZW4gZmVlZGluZyBvbiBhbm51YWwgb3IgcGVyZW5uaWFsIHBsYW50cy4gVGhlIG9yY2hhcmQgcGxvdCBzaG93cyB0aGUgbWV0YS1hbmFseXRpYyBtZWFuIChtZWFuIGVmZmVjdCBzaXplKSB3aXRoIGl0cyA5NSUgY29uZmlkZW5jZSBpbnRlcnZhbCAodGhpY2sgbGluZSkgYW5kIDk1JSBwcmVkaWN0aW9uIGludGVydmFsICh0aGluIGxpbmUpLCB3aXRoIG9ic2VydmVkIGVmZmVjdCBzaXplcyBiYXNlZCBvbiBzYW1wbGUgc2l6ZXMuCgoKCiMjIyBIZXJiaXZvcmUgZGlzdGluY3Rpb246IGdlbmVyYWxpc3RzIHZzLiBzcGVjaWFsaXN0cwoKIyMjIyBNZWFuIGNoYW5nZTogbG5SUgoKYGBge3IsIH0KIyBtZXRhLXJlZ3Jlc3Npb246IG11bHRpcGxlIGludGVyY2VwdHMKbXJfc3BlY2dlbl9sblJSMSA8LSBybWEubXYoCiAgeWkgPSBsblJSLAogIFYgPSBWQ1ZfbG5SUiwKICBtb2RzID0gfiBIZXJiaXZvcmVfZGlldF9icmVhZHRoIC0gMSwKICB0ZXN0ID0gInQiLAogIHJhbmRvbSA9IGxpc3QofjF8SGVyYml2b3JlX1BoeWxvZ2VueSwgfjF8SGVyYml2b3JlX0xhdGluX25hbWUsIAogICAgICAgICAgICAgICAgfjF8U3R1ZHksIH4xfEVmZmVjdCksCiAgZGF0YSA9IGRhdAopCgoKIyBnZXR0aW5nIG1hcmdpbmFsIFIyCnIyX21yX3NwZWNnZW5fbG5SUjEgPC0gcjJfbWwobXJfc3BlY2dlbl9sblJSMSkKCiMgZ2V0dGluZyB0aGUgbGV2ZWwgbmFtZXMgb3V0CmxldmVsX25hbWVzIDwtIGxldmVscyhkYXQkSGVyYml2b3JlX2RpZXRfYnJlYWR0aCkKCiMgaGVscGVyIGZ1bmN0aW9uIHRvIHJ1biBtZXRhZm9yIG1ldGEtcmVncmVzc2lvbgpydW5fcm1hIDwtIGZ1bmN0aW9uKG5hbWUpIHsKICBybWEubXYoeWkgPSBsblJSLCAKICAgICAgICAgViA9IFZDVl9sblJSLAogICAgICAgICBtb2RzID0gfiByZWxldmVsKEhlcmJpdm9yZV9kaWV0X2JyZWFkdGgsIHJlZiA9IG5hbWUpLCAKICAgICAgICAgdGVzdCA9ICJ0IiwKICAgICAgICAgcmFuZG9tID0gbGlzdCh+MXxIZXJiaXZvcmVfUGh5bG9nZW55LCB+MXxIZXJiaXZvcmVfTGF0aW5fbmFtZSwgCiAgICAgICAgICAgICAgICB+MXxTdHVkeSwgfjF8RWZmZWN0KSwKICAgICAgICAgZGF0YSA9IGRhdCkKfQoKIyByZXN1bHRzIG9mIG1ldGEtcmVncmVzc2lvbiBpbmNsdWRpbmcgYWxsIGNvbnRyYXN0IHJlc3VsdHM7IHRha2luZyB0aGUgbGFzdCBsZXZlbCBvdXQgKFstbGVuZ3RoKGxldmVsX25hbWVzKV0pCm1yX3NwZWNnZW5fbG5SUiA8LSBtYXAobGV2ZWxfbmFtZXNbLWxlbmd0aChsZXZlbF9uYW1lcyldLCBydW5fcm1hKQpgYGAKCiMjIyMjIFRhYmxlIEU5CioqVGFibGUgRTk6KioKUmVncmVzc2lvbiBjb2VmZmljaWVudHMgKGVzdGltYXRlKSwgOTUlIGNvbmZpZGVuY2UgaW50ZXJ2YWxzIChDSXMpLCBQIHZhbHVlcyBhbmQgdmFyaWFuY2UgZXhwbGFpbmVkLCAgKlIqXjJeflttYXJnaW5hbF1+IChSMikgPSBgciBhcy5udW1lcmljKHJvdW5kKHIyX21yX3NwZWNnZW5fbG5SUjFbMV0sIDQpKjEwMClgJSBmcm9tIHRoZSBtZXRhLXJlZ3Jlc3Npb24gb2YgbG5SUiB3aXRoIGBIZXJiaXZvcmVfZGlldF9icmVhZHRoYC4gCgpgYGB7cn0KIyBnZXR0aW5nIGVzdGltYXRlcwpyZXNfbXJfc3BlY2dlbl9sblJSMSA8LSBnZXRfcHJlZDEobXJfc3BlY2dlbl9sblJSMSwgbW9kID0gIkhlcmJpdm9yZV9kaWV0X2JyZWFkdGgiKQojcmVzX21yX2FubnVhbGl0eV9sblJSMiA8LSBtYXAobXJfYW5udWFsaXR5X2xuUlIsIH4gZ2V0X2VzdDIoLngsIG1vZCA9ICJBbm51YWxpdHkiKSkKcmVzX21yX3NwZWNnZW5fbG5SUiA8LSBtYXAobXJfc3BlY2dlbl9sblJSLCB+IGdldF9wcmVkMigueCwgbW9kID0gIkhlcmJpdm9yZV9kaWV0X2JyZWFkdGgiKSkKCiMgYSBsaXN0IG9mIHRoZSBudW1iZXJzIHRvIHRha2Ugb3V0IHVubmVjZXNzYXJ5IGNvbnRyYXN0cwpjb250cmFfbGlzdCA8LSBNYXAoc2VxLCBmcm9tPTEsIHRvPTE6MSkKCiMgeW91IG5lZWQgdG8gZmxhdHRlbiB0d2ljZTogZmlyc3QgdG8gbWFrZSBpdCBhIGxpc3QgYW5kIG1ha2UgaXQgYSB2ZWN0b3IKIyBJIGd1ZXNzIHdlIGNhbiBtYWtlIGl0IGEgbG9vcCAob3IgdmVjdG9yaXNlKQpyZXNfbXJfc3BlY2dlbl9sblJSMiA8LSBtYXAyX2RmcihyZXNfbXJfc3BlY2dlbl9sblJSLCBjb250cmFfbGlzdCwgfi54Wy0oLnkpLCBdKSAKCiMgY3JlYXRpbmcgYSB0YWJsZQptcl9yZXN1bHRzKHJlc19tcl9zcGVjZ2VuX2xuUlIxLCByZXNfbXJfc3BlY2dlbl9sblJSMikgJT4lIAogIGthYmxlKCJodG1sIiwgIGRpZ2l0cyA9IDMpICU+JQogIGthYmxlX3N0eWxpbmcoInN0cmlwZWQiLCBwb3NpdGlvbiA9ICJsZWZ0IikgJT4lCiAgc2Nyb2xsX2JveCh3aWR0aCA9ICIxMDAlIikKYGBgCgojIyMjQ2hhbmdlIGluIFNEOiBsblZSCgpgYGB7ciwgfQojIG1ldGEtcmVncmVzc2lvbjogbXVsdGlwbGUgaW50ZXJjZXB0cwptcl9zcGVjZ2VuX2xuVlIxIDwtIHJtYS5tdigKICB5aSA9IGxuVlIsCiAgViA9IFZDVl9sblZSLAogIG1vZHMgPSB+IEhlcmJpdm9yZV9kaWV0X2JyZWFkdGggLSAxLAogIHRlc3QgPSAidCIsCiAgcmFuZG9tID0gbGlzdCh+MXxIZXJiaXZvcmVfUGh5bG9nZW55LCB+MXxIZXJiaXZvcmVfTGF0aW5fbmFtZSwgCiAgICAgICAgICAgICAgICB+MXxTdHVkeSwgfjF8RWZmZWN0KSwKICBkYXRhID0gZGF0CikKCgojIGdldHRpbmcgbWFyZ2luYWwgUjIKcjJfbXJfc3BlY2dlbl9sblZSMSA8LSByMl9tbChtcl9zcGVjZ2VuX2xuVlIxKQoKIyBnZXR0aW5nIHRoZSBsZXZlbCBuYW1lcyBvdXQKbGV2ZWxfbmFtZXMgPC0gbGV2ZWxzKGRhdCRIZXJiaXZvcmVfZGlldF9icmVhZHRoKQoKIyBoZWxwZXIgZnVuY3Rpb24gdG8gcnVuIG1ldGFmb3IgbWV0YS1yZWdyZXNzaW9uCnJ1bl9ybWEgPC0gZnVuY3Rpb24obmFtZSkgewogIHJtYS5tdih5aSA9IGxuVlIsIAogICAgICAgICBWID0gVkNWX2xuVlIsCiAgICAgICAgIG1vZHMgPSB+IHJlbGV2ZWwoSGVyYml2b3JlX2RpZXRfYnJlYWR0aCwgcmVmID0gbmFtZSksIAogICAgICAgICB0ZXN0ID0gInQiLAogICAgICAgICByYW5kb20gPSBsaXN0KH4xfEhlcmJpdm9yZV9QaHlsb2dlbnksIH4xfEhlcmJpdm9yZV9MYXRpbl9uYW1lLCAKICAgICAgICAgICAgICAgIH4xfFN0dWR5LCB+MXxFZmZlY3QpLAogICAgICAgICBkYXRhID0gZGF0KQp9CgojIHJlc3VsdHMgb2YgbWV0YS1yZWdyZXNzaW9uIGluY2x1ZGluZyBhbGwgY29udHJhc3QgcmVzdWx0czsgdGFraW5nIHRoZSBsYXN0IGxldmVsIG91dCAoWy1sZW5ndGgobGV2ZWxfbmFtZXMpXSkKbXJfc3BlY2dlbl9sblZSIDwtIG1hcChsZXZlbF9uYW1lc1stbGVuZ3RoKGxldmVsX25hbWVzKV0sIHJ1bl9ybWEpCmBgYAoKIyMjIyMgVGFibGUgRTEwCioqVGFibGUgRTEwOioqClJlZ3Jlc3Npb24gY29lZmZpY2llbnRzIChlc3RpbWF0ZSksIDk1JSBjb25maWRlbmNlIGludGVydmFscyAoQ0lzKSwgUCB2YWx1ZXMgYW5kIHZhcmlhbmNlIGV4cGxhaW5lZCwgICpSKl4yXn5bbWFyZ2luYWxdfiAoUjIpID0gYHIgYXMubnVtZXJpYyhyb3VuZChyMl9tcl9zcGVjZ2VuX2xuVlIxWzFdLCA0KSoxMDApYCUgZnJvbSB0aGUgbWV0YS1yZWdyZXNzaW9uIG9mIGxuVlIgd2l0aCBgSGVyYml2b3JlX2RpZXRfYnJlYWR0aGAuIAoKYGBge3J9CiMgZ2V0dGluZyBlc3RpbWF0ZXMKcmVzX21yX3NwZWNnZW5fbG5WUjEgPC0gZ2V0X3ByZWQxKG1yX3NwZWNnZW5fbG5WUjEsIG1vZCA9ICJIZXJiaXZvcmVfZGlldF9icmVhZHRoIikKI3Jlc19tcl9hbm51YWxpdHlfbG5WUjIgPC0gbWFwKG1yX2FubnVhbGl0eV9sblZSLCB+IGdldF9lc3QyKC54LCBtb2QgPSAiQW5udWFsaXR5IikpCnJlc19tcl9zcGVjZ2VuX2xuVlIgPC0gbWFwKG1yX3NwZWNnZW5fbG5WUiwgfiBnZXRfcHJlZDIoLngsIG1vZCA9ICJIZXJiaXZvcmVfZGlldF9icmVhZHRoIikpCgojIGEgbGlzdCBvZiB0aGUgbnVtYmVycyB0byB0YWtlIG91dCB1bm5lY2Vzc2FyeSBjb250cmFzdHMKY29udHJhX2xpc3QgPC0gTWFwKHNlcSwgZnJvbT0xLCB0bz0xOjEpCgojIHlvdSBuZWVkIHRvIGZsYXR0ZW4gdHdpY2U6IGZpcnN0IHRvIG1ha2UgaXQgYSBsaXN0IGFuZCBtYWtlIGl0IGEgdmVjdG9yCiMgSSBndWVzcyB3ZSBjYW4gbWFrZSBpdCBhIGxvb3AgKG9yIHZlY3RvcmlzZSkKcmVzX21yX3NwZWNnZW5fbG5WUjIgPC0gbWFwMl9kZnIocmVzX21yX3NwZWNnZW5fbG5WUiwgY29udHJhX2xpc3QsIH4ueFstKC55KSwgXSkgCgojIGNyZWF0aW5nIGEgdGFibGUKbXJfcmVzdWx0cyhyZXNfbXJfc3BlY2dlbl9sblZSMSwgcmVzX21yX3NwZWNnZW5fbG5WUjIpICU+JSAKICBrYWJsZSgiaHRtbCIsICBkaWdpdHMgPSAzKSAlPiUKICBrYWJsZV9zdHlsaW5nKCJzdHJpcGVkIiwgcG9zaXRpb24gPSAibGVmdCIpICU+JQogIHNjcm9sbF9ib3god2lkdGggPSAiMTAwJSIpCmBgYAoKIyMjIyMgRmlndXJlIEU1CmBgYHtyLCAgZmlnLndpZHRoPTcsIGZpZy5oZWlnaHQ9OCwgfQoKcDEzIDwtIG9yY2hhcmRfcGxvdChtcl9zcGVjZ2VuX2xuUlIxLCBkYXRhID0gZGF0LCBtb2Q9IkhlcmJpdm9yZV9kaWV0X2JyZWFkdGgiLGdyb3VwPSAnU3R1ZHknLCB4bGFiID0gImxvZyhSZXNwb25zZSBSYXRpbykgKGxuUlIpIiwgYWxwaGEgPSAwLjIsIGFuZ2xlID0gNDUpIAoKcDE0IDwtIG9yY2hhcmRfcGxvdChtcl9zcGVjZ2VuX2xuVlIxLCBkYXRhID0gZGF0LCBtb2Q9IkhlcmJpdm9yZV9kaWV0X2JyZWFkdGgiLGdyb3VwPSAnU3R1ZHknLCB4bGFiID0gImxvZyhWYXJpYWJpbGl0eSBSYXRpbykgKGxuVlIpIiwgYWxwaGEgPSAwLjIsIGFuZ2xlID0gNDUpIAoKICAKcDEzL3AxNAoKI2dnc2F2ZShoZXJlKCJmaWciLCAiU3BlY0dlbi5wbmciKSkKYGBgCioqRmlndXJlIEU1OioqIApNZWFuIGNoYW5nZSAobG5SUikgYW5kIGNoYW5nZSBpbiBTRCAgKGxuVlIpIGluIGhlcmJpdm9yZSBwZXJmb3JtYW5jZSBjb21wYXJpbmcgaGVyYml2b3JlIGRpZXQgYnJlYWR0aCAoZ2VuZXJhbGlzdCBvciBzcGVjaWFsaXN0KS4gVGhlIG9yY2hhcmQgcGxvdCBzaG93cyB0aGUgbWV0YS1hbmFseXRpYyBtZWFuIChtZWFuIGVmZmVjdCBzaXplKSB3aXRoIGl0cyA5NSUgY29uZmlkZW5jZSBpbnRlcnZhbCAodGhpY2sgbGluZSkgYW5kIDk1JSBwcmVkaWN0aW9uIGludGVydmFsICh0aGluIGxpbmUpLCB3aXRoIG9ic2VydmVkIGVmZmVjdCBzaXplcyBiYXNlZCBvbiBzYW1wbGUgc2l6ZXMuCgoKIyMjIEZlZWRpbmcgZ3VpbGRzICg3IGdyb3VwcykKCiMjIyMgTWVhbiBjaGFuZ2U6IGxuUlIKCmBgYHtyLCB9CiMgcmVvcmRlcmluZwpkYXQkRmVlZGluZ19ndWlsZCA8LSBmYWN0b3IoZGF0JEZlZWRpbmdfZ3VpbGQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXZlbHMgPSByZXYoYygiRmx1aWQtZmVlZGluZyBhcnRocm9wb2RzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkNoZXdpbmcgYXJ0aHJvcG9kcyIsICJCb3JpbmcgYXJ0aHJvcG9kcyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJNYW1tYWxpYW4gY2hld2VycyIsICJDZWxsLWZlZWRpbmcgYXJ0aHJvcG9kcyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJMZWFmLW1pbmluZyBhcnRocm9wb2RzIiwgIlJhc3BpbmcgLyBncmF6aW5nIGludmVydGVicmF0ZXMiKSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbHMgPSAgcmV2KGMoIkZsdWlkLWZlZWRpbmcgYXJ0aHJvcG9kcyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDaGV3aW5nIGFydGhyb3BvZHMiLCAiQm9yaW5nIGFydGhyb3BvZHMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTWFtbWFsaWFuIGNoZXdlcnMiLCAiQ2VsbC1mZWVkaW5nIGFydGhyb3BvZHMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTGVhZi1taW5pbmcgYXJ0aHJvcG9kcyIsICJSYXNwaW5nIC8gZ3JhemluZyBpbnZlcnRlYnJhdGVzIikpKQoKIyBtZXRhLXJlZ3Jlc3Npb246IG11bHRpcGxlIGludGVyY2VwdHMKbXJfZmVlZGluZ19sblJSMSA8LSBybWEubXYoCiAgeWkgPSBsblJSLAogIFYgPSBWQ1ZfbG5SUiwKICBtb2RzID0gfiBGZWVkaW5nX2d1aWxkIC0gMSwKICB0ZXN0ID0gInQiLAogIHJhbmRvbSA9IGxpc3QofjF8SGVyYml2b3JlX1BoeWxvZ2VueSwgfjF8SGVyYml2b3JlX0xhdGluX25hbWUsIAogICAgICAgICAgICAgICAgfjF8U3R1ZHksIH4xfEVmZmVjdCksCiAgZGF0YSA9IGRhdAopCgojIGdldHRpbmcgbWFyZ2luYWwgUjIKcjJfbXJfZmVlZGluZ19sblJSMSA8LSByMl9tbChtcl9mZWVkaW5nX2xuUlIxKQoKIyAjIG1ldGEtcmVncmVzc2lvbjogY29udHJhc3RzIHggNwojIGdldHRpbmcgdGhlIGxldmVsIG5hbWVzIG91dApsZXZlbF9uYW1lcyA8LSBsZXZlbHMoZGF0JEZlZWRpbmdfZ3VpbGQpCgojIGhlbHBlciBmdW5jdGlvbiB0byBydW4gbWV0YWZvciBtZXRhLXJlZ3Jlc3Npb24KcnVuX2ZlZWRpbmdfbG5SUiA8LSBmdW5jdGlvbihuYW1lKSB7CiAgcm1hLm12KHlpID0gbG5SUiwgCiAgICAgICAgIFYgPSBWQ1ZfbG5SUiwKICAgICAgICAgbW9kcyA9IH4gcmVsZXZlbChGZWVkaW5nX2d1aWxkLCByZWYgPSBuYW1lKSwgCiAgICAgICAgIHRlc3QgPSAidCIsCiAgICAgICAgIHJhbmRvbSA9IGxpc3QofjF8SGVyYml2b3JlX1BoeWxvZ2VueSwgfjF8SGVyYml2b3JlX0xhdGluX25hbWUsIAogICAgICAgICAgICAgICAgfjF8U3R1ZHksIH4xfEVmZmVjdCksCiAgICAgICAgIGRhdGEgPSBkYXQpCn0KCiMgcmVzdWx0cyBvZiBtZXRhLXJlZ3Jlc3Npb24gaW5jbHVkaW5nIGFsbCBjb250cmFzdCByZXN1bHRzOyB0YWtpbmcgdGhlIGxhc3QgbGV2ZWwgb3V0IChbLWxlbmd0aChsZXZlbF9uYW1lcyldKQptcl9mZWVkaW5nX2xuUlIgPC0gbWFwKGxldmVsX25hbWVzWy1sZW5ndGgobGV2ZWxfbmFtZXMpXSwgcnVuX2ZlZWRpbmdfbG5SUikKCmBgYAoKIyMjIyMgVGFibGUgRTExCioqVGFibGUgRTExOioqClJlZ3Jlc3Npb24gY29lZmZpY2llbnRzIChlc3RpbWF0ZSksIDk1JSBjb25maWRlbmNlIGludGVydmFscyAoQ0lzKSwgYW5kIHZhcmlhbmNlIGV4cGxhaW5lZCwgICpSKl4yXn5bbWFyZ2luYWxdfiAoUjIpID0gYHIgYXMubnVtZXJpYyhyb3VuZChyMl9tcl9mZWVkaW5nX2xuUlIxWzFdLCA0KSoxMDApYCUgZnJvbSB0aGUgbWV0YS1yZWdyZXNzaW9uIG9mIGxuUlIgd2l0aCBgRmVlZGluZ19ndWlsZGAuIApgYGB7ciwgfQojIGdldHRpbmcgZXN0aW1hdGVzCnJlc19tcl9mZWVkaW5nX2xuUlIxIDwtIGdldF9wcmVkMShtcl9mZWVkaW5nX2xuUlIxLCBtb2QgPSAiRmVlZGluZ19ndWlsZCIpCnJlc19tcl9mZWVkaW5nX2xuUlIgPC0gbWFwKG1yX2ZlZWRpbmdfbG5SUiwgfiBnZXRfcHJlZDIoLngsIG1vZCA9ICJGZWVkaW5nX2d1aWxkIikpCgojIGEgbGlzdCBvZiB0aGUgbnVtYmVycyB0byB0YWtlIG91dCB1bm5lY2Vzc2FyeSBjb250cmFzdHMKY29udHJhX2xpc3QgPC0gTWFwKHNlcSwgZnJvbT0xLCB0bz0xOjYpCgojIEkgZ3Vlc3Mgd2UgY2FuIG1ha2UgaXQgYSBsb29wIChvciB2ZWN0b3Jpc2UpCnJlc19tcl9mZWVkaW5nX2xuUlIyIDwtIG1hcDJfZGZyKHJlc19tcl9mZWVkaW5nX2xuUlIsIGNvbnRyYV9saXN0LCB+LnhbLSgueSksIF0pIAoKIyBjcmVhdGluZyBhIHRhYmxlCm1yX3Jlc3VsdHMocmVzX21yX2ZlZWRpbmdfbG5SUjEsIHJlc19tcl9mZWVkaW5nX2xuUlIyKSAlPiUgCiAga2FibGUoImh0bWwiLCAgZGlnaXRzID0gMykgJT4lCiAga2FibGVfc3R5bGluZygic3RyaXBlZCIsIHBvc2l0aW9uID0gImxlZnQiKSAlPiUKICBzY3JvbGxfYm94KHdpZHRoID0gIjEwMCUiLCBoZWlnaHQgPSAiMzAwcHgiKQpgYGAKCiMjIyMgQ2hhbmdlIGluIFNEOiBsblZSCgpgYGB7ciwgfQojIG1ldGEtcmVncmVzc2lvbjogbXVsdGlwbGUgaW50ZXJjZXB0cwptcl9mZWVkaW5nX2xuVlIxIDwtIHJtYS5tdigKICB5aSA9IGxuVlIsCiAgViA9IFZDVl9sblZSLAogIG1vZHMgPSB+IEZlZWRpbmdfZ3VpbGQgLSAxLAogIHRlc3QgPSAidCIsCiAgcmFuZG9tID0gbGlzdCh+MXxIZXJiaXZvcmVfUGh5bG9nZW55LCB+MXxIZXJiaXZvcmVfTGF0aW5fbmFtZSwgCiAgICAgICAgICAgICAgICB+MXxTdHVkeSwgfjF8RWZmZWN0KSwKICBkYXRhID0gZGF0CikKCiMgZ2V0dGluZyBtYXJnaW5hbCBSMgpyMl9tcl9mZWVkaW5nX2xuVlIxIDwtIHIyX21sKG1yX2ZlZWRpbmdfbG5WUjEpCgojICMgbWV0YS1yZWdyZXNzaW9uOiBjb250cmFzdHMgeCA3CiMgZ2V0dGluZyB0aGUgbGV2ZWwgbmFtZXMgb3V0CmxldmVsX25hbWVzIDwtIGxldmVscyhkYXQkRmVlZGluZ19ndWlsZCkKCiMgaGVscGVyIGZ1bmN0aW9uIHRvIHJ1biBtZXRhZm9yIG1ldGEtcmVncmVzc2lvbgpydW5fZmVlZGluZ19sblZSIDwtIGZ1bmN0aW9uKG5hbWUpIHsKICBybWEubXYoeWkgPSBsblZSLCAKICAgICAgICAgViA9IFZDVl9sblZSLAogICAgICAgICBtb2RzID0gfiByZWxldmVsKEZlZWRpbmdfZ3VpbGQsIHJlZiA9IG5hbWUpLCAKICAgICAgICAgdGVzdCA9ICJ0IiwKICAgICAgICAgcmFuZG9tID0gbGlzdCh+MXxIZXJiaXZvcmVfUGh5bG9nZW55LCB+MXxIZXJiaXZvcmVfTGF0aW5fbmFtZSwgCiAgICAgICAgICAgICAgICB+MXxTdHVkeSwgfjF8RWZmZWN0KSwKICAgICAgICAgZGF0YSA9IGRhdCkKfQoKIyByZXN1bHRzIG9mIG1ldGEtcmVncmVzc2lvbiBpbmNsdWRpbmcgYWxsIGNvbnRyYXN0IHJlc3VsdHM7IHRha2luZyB0aGUgbGFzdCBsZXZlbCBvdXQgKFstbGVuZ3RoKGxldmVsX25hbWVzKV0pCm1yX2ZlZWRpbmdfbG5WUiA8LSBtYXAobGV2ZWxfbmFtZXNbLWxlbmd0aChsZXZlbF9uYW1lcyldLCBydW5fZmVlZGluZ19sblZSKQoKYGBgCgojIyMjIyBUYWJsZSBFMTIKKipUYWJsZSBFMTI6KioKUmVncmVzc2lvbiBjb2VmZmljaWVudHMgKGVzdGltYXRlKSwgOTUlIGNvbmZpZGVuY2UgaW50ZXJ2YWxzIChDSXMpLCBhbmQgdmFyaWFuY2UgZXhwbGFpbmVkLCAgKlIqXjJeflttYXJnaW5hbF1+IChSMikgPSBgciBhcy5udW1lcmljKHJvdW5kKHIyX21yX2ZlZWRpbmdfbG5WUjFbMV0sIDQpKjEwMClgJSBmcm9tIHRoZSBtZXRhLXJlZ3Jlc3Npb24gb2YgbG5WUiB3aXRoIGBGZWVkaW5nX2d1aWxkYC4gCmBgYHtyLCB9CiMgZ2V0dGluZyBlc3RpbWF0ZXMKcmVzX21yX2ZlZWRpbmdfbG5WUjEgPC0gZ2V0X3ByZWQxKG1yX2ZlZWRpbmdfbG5WUjEsIG1vZCA9ICJGZWVkaW5nX2d1aWxkIikKcmVzX21yX2ZlZWRpbmdfbG5WUiA8LSBtYXAobXJfZmVlZGluZ19sblZSLCB+IGdldF9wcmVkMigueCwgbW9kID0gIkZlZWRpbmdfZ3VpbGQiKSkKCiMgYSBsaXN0IG9mIHRoZSBudW1iZXJzIHRvIHRha2Ugb3V0IHVubmVjZXNzYXJ5IGNvbnRyYXN0cwpjb250cmFfbGlzdCA8LSBNYXAoc2VxLCBmcm9tPTEsIHRvPTE6NikKCiMgSSBndWVzcyB3ZSBjYW4gbWFrZSBpdCBhIGxvb3AgKG9yIHZlY3RvcmlzZSkKcmVzX21yX2ZlZWRpbmdfbG5WUjIgPC0gbWFwMl9kZnIocmVzX21yX2ZlZWRpbmdfbG5WUiwgY29udHJhX2xpc3QsIH4ueFstKC55KSwgXSkgCgojIGNyZWF0aW5nIGEgdGFibGUKbXJfcmVzdWx0cyhyZXNfbXJfZmVlZGluZ19sblZSMSwgcmVzX21yX2ZlZWRpbmdfbG5WUjIpICU+JSAKICBrYWJsZSgiaHRtbCIsICBkaWdpdHMgPSAzKSAlPiUKICBrYWJsZV9zdHlsaW5nKCJzdHJpcGVkIiwgcG9zaXRpb24gPSAibGVmdCIpICU+JQogIHNjcm9sbF9ib3god2lkdGggPSAiMTAwJSIsIGhlaWdodCA9ICIzMDBweCIpCmBgYAoKIyMjIyMgRmlndXJlIEU2CmBgYHtyLCAgZmlnLndpZHRoPTcsIGZpZy5oZWlnaHQ9MTQsIH0KCnAxNyA8LSBvcmNoYXJkX3Bsb3QobXJfZmVlZGluZ19sblJSMSwgZGF0YSA9IGRhdCwgbW9kPSJGZWVkaW5nX2d1aWxkIixncm91cD0gJ1N0dWR5JywgeGxhYiA9ICJsb2coUmVzcG9uc2UgUmF0aW8pIChsblJSKSIsIGFscGhhID0gMC4yLCBhbmdsZSA9IDQ1KSAKCnAxOCA8LSBvcmNoYXJkX3Bsb3QobXJfZmVlZGluZ19sblZSMSwgZGF0YSA9IGRhdCwgbW9kPSJGZWVkaW5nX2d1aWxkIixncm91cD0gJ1N0dWR5JywgeGxhYiA9ICJsb2coVmFyaWFiaWxpdHkgUmF0aW8pIChsblZSKSIsIGFscGhhID0gMC4yLCBhbmdsZSA9IDQ1KSAKCiMgcDExfHAxMiAKIyBnZ3NhdmUoaGVyZSgiZmlnIiwgIkZlZWRpbmdfZ3VpbGQucG5nIikpCgpwMTcvcDE4CiNnZ3NhdmUoaGVyZSgiZmlnIiwgIkZlZWRpbmdfZ3VpbGQyLnBuZyIpKQpgYGAKKipGaWd1cmUgRTY6KiogCk1lYW4gY2hhbmdlIChsblJSKSwgYW5kIGNoYW5nZSBpbiBTRCAgKGxuVlIpIGluIGhlcmJpdm9yZSBwZXJmb3JtYW5jZSBjb21wYXJpbmcgaGVyYml2b3JlIGZlZWRpbmcgZ3VpbGQuIFRoZSBvcmNoYXJkIHBsb3Qgc2hvd3MgdGhlIG1ldGEtYW5hbHl0aWMgbWVhbiAobWVhbiBlZmZlY3Qgc2l6ZSkgd2l0aCBpdHMgOTUlIGNvbmZpZGVuY2UgaW50ZXJ2YWwgKHRoaWNrIGxpbmUpIGFuZCA5NSUgcHJlZGljdGlvbiBpbnRlcnZhbCAodGhpbiBsaW5lKSwgd2l0aCBvYnNlcnZlZCBlZmZlY3Qgc2l6ZXMgYmFzZWQgb24gc2FtcGxlIHNpemVzLgoKCgojIyMjIyBGaWd1cmUgM0EtQiAoTiA8IDEwIHRha2VuIG91dCkKCmBgYHtyLCAgZmlnLndpZHRoPTcsIGZpZy5oZWlnaHQ9MTAsIH0KIyBUT0RPIHRoZSBlc2llc3QgdG8ganN1dCBydW4gbW9kZWxzIHdpdGhvdXQgdGhlc2UgZ3JvdXBzCgojIFRPRE8gLSBJIGNhbm5vdCBzdWJzZXQgdGhlIGRhdGEgcHJvcGVybHksIEkgaGF2ZSB0cmllZCBhIGZldyBhbHRlcm5hdGl2ZSB0ZWNobmlxdWVzLCB0aGV5IHdvcmssIGJ1dCBhcyB0aGUgZGF0YXNldCBmcm9tIHRoZSBtb2RlbCBpcyBoYXMgbW9yZSAnRmVlZGluZ19ndWlsZCcgbGV2ZWxzIHRoYW4gIHRoZSBzdWJzZXQgZGF0YWZyYW1lIHNvIHRoZXJlIGlzIGFuIE5BIHJvdyBpbiB0aGUgZmlndXJlLgoKZGF0bG93cm08LWRhdFshKGRhdCRGZWVkaW5nX2d1aWxkPT0iUmFzcGluZyAvIGdyYXppbmcgaW52ZXJ0ZWJyYXRlcyIgfCBkYXQkRmVlZGluZ19ndWlsZD09IkxlYWYtbWluaW5nIGFydGhyb3BvZHMiIHwgZGF0JEZlZWRpbmdfZ3VpbGQ9PSJDZWxsLWZlZWRpbmcgYXJ0aHJvcG9kcyIpLF0KCgojIG1hdHJpeCBmb3IgY29udHJvbGxpbmcgZm9yIGNvcnJlbGF0ZWQgZXJyb3JzClZDVl9sblJSX2xyZW0gPC0gbWFrZV9WQ1ZfbWF0cml4KGRhdGxvd3JtLCBWID0gInZhcmxuUlIiLCBjbHVzdGVyID0gIlN0dWR5Iiwgb2JzID0gIkVmZmVjdCIpCiNsblJSIC0gcnVuIG1vZGVscyByZW1vdmluZyBncm91cHMgd2l0aCBsb3cgZWZmZWN0IHNpemVzCiMgbWV0YS1yZWdyZXNzaW9uOiBtdWx0aXBsZSBpbnRlcmNlcHRzCm1yX2ZlZWRpbmdfbG5SUjFfMSA8LSBybWEubXYoCiAgeWkgPSBsblJSLAogIFYgPSBWQ1ZfbG5SUl9scmVtLAogIG1vZHMgPSB+IEZlZWRpbmdfZ3VpbGQgLSAxLAogIHRlc3QgPSAidCIsCiAgcmFuZG9tID0gbGlzdCh+MXxIZXJiaXZvcmVfUGh5bG9nZW55LCB+MXxIZXJiaXZvcmVfTGF0aW5fbmFtZSwgCiAgICAgICAgICAgICAgICB+MXxTdHVkeSwgfjF8RWZmZWN0KSwKICBkYXRhID0gZGF0bG93cm0KKQoKIyBnZXR0aW5nIG1hcmdpbmFsIFIyCnIyX21yX2ZlZWRpbmdfbG5SUjFfMSA8LSByMl9tbChtcl9mZWVkaW5nX2xuUlIxXzEpCgojICMgbWV0YS1yZWdyZXNzaW9uOiBjb250cmFzdHMgeCA3CgoKIyBoZWxwZXIgZnVuY3Rpb24gdG8gcnVuIG1ldGFmb3IgbWV0YS1yZWdyZXNzaW9uCnJ1bl9mZWVkaW5nX2xuUlIxIDwtIGZ1bmN0aW9uKG5hbWUpIHsKICBybWEubXYoeWkgPSBsblJSLCAKICAgICAgICAgViA9IFZDVl9sblJSX2xyZW0sCiAgICAgICAgIG1vZHMgPSB+IHJlbGV2ZWwoRmVlZGluZ19ndWlsZCwgcmVmID0gbmFtZSksIAogICAgICAgICB0ZXN0ID0gInQiLAogICAgICAgICByYW5kb20gPSBsaXN0KH4xfEhlcmJpdm9yZV9QaHlsb2dlbnksIH4xfEhlcmJpdm9yZV9MYXRpbl9uYW1lLCAKICAgICAgICAgICAgICAgIH4xfFN0dWR5LCB+MXxFZmZlY3QpLAogICAgICAgICBkYXRhID0gZGF0bG93cm0pCn0KCiMgcmVzdWx0cyBvZiBtZXRhLXJlZ3Jlc3Npb24gaW5jbHVkaW5nIGFsbCBjb250cmFzdCByZXN1bHRzOyB0YWtpbmcgdGhlIGxhc3QgbGV2ZWwgb3V0IChbLWxlbmd0aChsZXZlbF9uYW1lcyldKQoKI29wX2ZlZWRpbmdfbG5SUiA8LSBvcmNoYVJkOjptb2RfcmVzdWx0cyhtcl9mZWVkaW5nX2xuUlIxLCBtb2QgPSAiRmVlZGluZ19ndWlsZCIsIGRhdGEgPSBkYXQsIGdyb3VwID0gIlN0dWR5IiwKICAgIyBhdCA9IGxpc3QoRmVlZGluZ19ndWlsZCA9IGMoIkZsdWlkLWZlZWRpbmcgYXJ0aHJvcG9kcyIsICdDaGV3aW5nIGFydGhyb3BvZHMnLCdCb3JpbmcgYXJ0aHJvcG9kcycsJ01hbW1hbGlhbiBjaGV3ZXJzJyksIHN1YnNldCA9IFRSVUUpKQoKIzwtIG1vZF9yZXN1bHRzKG1yX2ZlZWRpbmdfbG5SUjEsIGRhdGEgPSBkYXQsbW9kID0gIkZlZWRpbmdfZ3VpbGQiLCBncm91cCA9ICdTdHVkeScpCgojIHRha2luZyBvdXQgc29tZSBncm91cHMgTiA8IDEwCiNvcF9mZWVkaW5nX2xuUlIkbW9kX3RhYmxlIDwtIG9wX2ZlZWRpbmdfbG5SUiRtb2RfdGFibGVbLXdoaWNoKG9wX2ZlZWRpbmdfbG5SUiRtb2RfdGFibGUkbmFtZSA9PSAiTGVhZi1taW5pbmcgYXJ0aHJvcG9kcyIgfCAjb3BfZmVlZGluZ19sblJSJG1vZF90YWJsZSRuYW1lID09ICJSYXNwaW5nIC8gZ3JhemluZyBpbnZlcnRlYnJhdGVzIiB8IG9wX2ZlZWRpbmdfbG5SUiRtb2RfdGFibGUkbmFtZSA9PSAiQ2VsbC1mZWVkaW5nIGFydGhyb3BvZHMiKSwgXQoKI29wX2ZlZWRpbmdfbG5SUiRkYXRhIDwtIG9wX2ZlZWRpbmdfbG5SUiRkYXRhWy13aGljaChvcF9mZWVkaW5nX2xuUlIkZGF0YSRtb2RlcmF0b3IgPT0gIkxlYWYtbWluaW5nIGFydGhyb3BvZHMiIHwgb3BfZmVlZGluZ19sblJSJGRhdGEkbW9kZXJhdG9yID09ICJSYXNwaW5nIC8gZ3JhemluZyBpbnZlcnRlYnJhdGVzIiB8IG9wX2ZlZWRpbmdfbG5SUiRkYXRhJG1vZGVyYXRvciA9PSAgIkNlbGwtZmVlZGluZyBhcnRocm9wb2RzIiksIF0KCm0xIDwtIG9yY2hhcmRfcGxvdChtcl9mZWVkaW5nX2xuUlIxXzEgLCBkYXRhPSBkYXRsb3dybSxtb2Q9IkZlZWRpbmdfZ3VpbGQiLCBncm91cD0gJ1N0dWR5JywgeGxhYiA9ICJsb2coUmVzcG9uc2UgUmF0aW8pIChsblJSKSIsIGFscGhhID0gMC4yLCAgYW5nbGUgPSA0NSkgCgoKCgoKI2xuVlIKIyBtYXRyaXggZm9yIGNvbnRyb2xsaW5nIGZvciBjb3JyZWxhdGVkIGVycm9ycwpWQ1ZfbG5WUl9scmVtIDwtIG1ha2VfVkNWX21hdHJpeChkYXRsb3dybSwgViA9ICJ2YXJsblZSIiwgY2x1c3RlciA9ICJTdHVkeSIsIG9icyA9ICJFZmZlY3QiKQojbG5SUiAtIHJ1biBtb2RlbHMgcmVtb3ZpbmcgZ3JvdXBzIHdpdGggbG93IGVmZmVjdCBzaXplcwojIG1ldGEtcmVncmVzc2lvbjogbXVsdGlwbGUgaW50ZXJjZXB0cwptcl9mZWVkaW5nX2xuVlIxXzEgPC0gcm1hLm12KAogIHlpID0gbG5WUiwKICBWID0gVkNWX2xuVlJfbHJlbSwKICBtb2RzID0gfiBGZWVkaW5nX2d1aWxkIC0gMSwKICB0ZXN0ID0gInQiLAogIHJhbmRvbSA9IGxpc3QofjF8SGVyYml2b3JlX1BoeWxvZ2VueSwgfjF8SGVyYml2b3JlX0xhdGluX25hbWUsIAogICAgICAgICAgICAgICAgfjF8U3R1ZHksIH4xfEVmZmVjdCksCiAgZGF0YSA9IGRhdGxvd3JtCikKCiMgZ2V0dGluZyBtYXJnaW5hbCBSMgpyMl9tcl9mZWVkaW5nX2xuVlIxXzEgPC0gcjJfbWwobXJfZmVlZGluZ19sblZSMV8xKQoKCiMgaGVscGVyIGZ1bmN0aW9uIHRvIHJ1biBtZXRhZm9yIG1ldGEtcmVncmVzc2lvbgpydW5fZmVlZGluZ19sblJSMSA8LSBmdW5jdGlvbihuYW1lKSB7CiAgcm1hLm12KHlpID0gbG5SUiwgCiAgICAgICAgIFYgPSBWQ1ZfbG5SUl9scmVtLAogICAgICAgICBtb2RzID0gfiByZWxldmVsKEZlZWRpbmdfZ3VpbGQsIHJlZiA9IG5hbWUpLCAKICAgICAgICAgdGVzdCA9ICJ0IiwKICAgICAgICAgcmFuZG9tID0gbGlzdCh+MXxIZXJiaXZvcmVfUGh5bG9nZW55LCB+MXxIZXJiaXZvcmVfTGF0aW5fbmFtZSwgCiAgICAgICAgICAgICAgICB+MXxTdHVkeSwgfjF8RWZmZWN0KSwKICAgICAgICAgZGF0YSA9IGRhdGxvd3JtKQp9CgoKI29wX2ZlZWRpbmdfbG5WUiA8LSBtb2RfcmVzdWx0cyhtcl9mZWVkaW5nX2xuVlIxLCBtb2QgPSAiRmVlZGluZ19ndWlsZCIpCgojIHRha2luZyBvdXQgc29tZSBncm91cHMgTiA8IDEwCiNvcF9mZWVkaW5nX2xuVlIkbW9kX3RhYmxlIDwtIG9wX2ZlZWRpbmdfbG5WUiRtb2RfdGFibGVbLXdoaWNoKG9wX2ZlZWRpbmdfbG5WUiRtb2RfdGFibGUkbmFtZSA9PSAiTGVhZi1taW5pbmcgYXJ0aHJvcG9kcyIgfCBvcF9mZWVkaW5nX2xuVlIkbW9kX3RhYmxlJG5hbWUgPT0gIlJhc3BpbmcgLyBncmF6aW5nIGludmVydGVicmF0ZXMiIHwgb3BfZmVlZGluZ19sblZSJG1vZF90YWJsZSRuYW1lID09ICJDZWxsLWZlZWRpbmcgYXJ0aHJvcG9kcyIpLCBdCgojb3BfZmVlZGluZ19sblZSJGRhdGEgPC0gb3BfZmVlZGluZ19sblZSJGRhdGFbLXdoaWNoKG9wX2ZlZWRpbmdfbG5WUiRkYXRhJG1vZGVyYXRvciA9PSAiTGVhZi1taW5pbmcgYXJ0aHJvcG9kcyIgfCBvcF9mZWVkaW5nX2xuVlIkZGF0YSRtb2RlcmF0b3IgPT0gIlJhc3BpbmcgLyBncmF6aW5nIGludmVydGVicmF0ZXMiIHwgb3BfZmVlZGluZ19sblZSJGRhdGEkbW9kZXJhdG9yID09ICAiQ2VsbC1mZWVkaW5nIGFydGhyb3BvZHMiKSwgXQoKbTIgPC0gb3JjaGFyZF9wbG90KG1yX2ZlZWRpbmdfbG5WUjFfMSAsIGRhdGE9IGRhdGxvd3JtLG1vZD0iRmVlZGluZ19ndWlsZCIsIGdyb3VwPSAnU3R1ZHknLCB4bGFiID0gImxvZyhSZXNwb25zZSBSYXRpbykgKGxuVlIpIiwgYWxwaGEgPSAwLjIsICBhbmdsZSA9IDQ1KSAKCgojZ2dzYXZlKGhlcmUoImZpZyIsICJGZWVkaW5nX2d1aWxkMm0ucG5nIikpCgpgYGAKCgoKIyMjIEludGVyYWN0aW9uIGVmZmVjdHMgKHN1YnNldCBvZiBndWlsZHMgd2l0aCAiQ2hld2luZyBhcnRocm9wb2RzIiBhbmQgIkZsdWlkLWZlZWRpbmcgYXJ0aHJvcG9kcyIpCgpXZSByYW4gYSB1bml2YXJpYXRlIG1ldGEtcmVncmVzc2lvbiBtb2RlbCBmb3IgZWFjaCBvZiB0aGUgZm9sbG93aW5nIG1vZGVyYXRvcnM6OiAxKSBgTGlmZXNwYW5fZ3VpbGRgLCAyKSBgUG9hY2VhZV9ndWlsZGAsIGFuZCAzKSBgRGlldF9ndWlsZGAgKHNlZSB0aGUgbWV0YS1kYXRhIGFib3ZlKS4gCgpXZSB3aXRoIHRoZSAzIG90aGVyIGNhdGVnb3JpY2FsIHZhcmlhYmxlczogCgpgYGB7cn0KIwpkYXQgJT4lIGZpbHRlcihGZWVkaW5nX2d1aWxkID09ICJDaGV3aW5nIGFydGhyb3BvZHMiIHwgRmVlZGluZ19ndWlsZCA9PSAiRmx1aWQtZmVlZGluZyBhcnRocm9wb2RzIikgJT4lCiAgbXV0YXRlKExpZmVzcGFuX2d1aWxkID0gZmFjdG9yKHN0cl9jKFBsYW50X2xpZmVzcGFuLCBGZWVkaW5nX2d1aWxkLCBzZXAgPSAiOiIpKSwKICAgICAgICAgUG9hY2VhZV9ndWlsZCA9IGZhY3RvcihzdHJfYyhQb2FjZWFlX29yX05vbiwgRmVlZGluZ19ndWlsZCwgc2VwID0gIjoiKSksCiAgICAgICAgIERpZXRfZ3VpbGQgPSBmYWN0b3Ioc3RyX2MoSGVyYml2b3JlX2RpZXRfYnJlYWR0aCwgRmVlZGluZ19ndWlsZCwgc2VwID0gIjoiKSkgKSAtPiBnZGF0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIApgYGAKCiMjIyBUaGUgY29tYmluZWQgZWZmZWN0IG9mIHBsYW50IGxpZmVzcGFuIGFuZCBndWlsZHMgKENoZXdpbmcgYXJ0aHJvcG9kcy8gRmx1aWQtZmVlZGluZyBhcnRocm9wb2RzKQoKIyMjIyBNZWFuIGNoYW5nZTogbG5SUgoKYGBge3IsIH0KIyByZW9yZGVyaW5nCmdkYXQkTGlmZXNwYW5fZ3VpbGQgPC0gZmFjdG9yKGdkYXQkTGlmZXNwYW5fZ3VpbGQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXZlbHMgPSBjKCJBbm51YWw6Q2hld2luZyBhcnRocm9wb2RzIiwiUGVyZW5uaWFsOkNoZXdpbmcgYXJ0aHJvcG9kcyIsICJBbm51YWw6Rmx1aWQtZmVlZGluZyBhcnRocm9wb2RzIiwgIlBlcmVubmlhbDpGbHVpZC1mZWVkaW5nIGFydGhyb3BvZHMiKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVscyA9IGMoIkFubnVhbDpDaGV3aW5nIGFydGhyb3BvZHMiLCJQZXJlbm5pYWw6Q2hld2luZyBhcnRocm9wb2RzIiwgIkFubnVhbDpGbHVpZC1mZWVkaW5nIGFydGhyb3BvZHMiLCAiUGVyZW5uaWFsOkZsdWlkLWZlZWRpbmcgYXJ0aHJvcG9kcyIpKQoKIyB2Y3YgbWF0cml4IApWQ1ZfbG5SUjIgPC0gbWFrZV9WQ1ZfbWF0cml4KGdkYXQsIFYgPSAidmFybG5SUiIsIGNsdXN0ZXIgPSAiU3R1ZHkiLCBvYnMgPSAiRWZmZWN0IikKCiMgbWV0YS1yZWdyZXNzaW9uOiBtdWx0aXBsZSBpbnRlcmNlcHRzCm1yX0FubnVhbGl0eV9ndWlsZF9sblJSMSA8LSBybWEubXYoCiAgeWkgPSBsblJSLAogIFYgPSBWQ1ZfbG5SUjIsCiAgbW9kcyA9IH4gTGlmZXNwYW5fZ3VpbGQgLSAxLAogIHRlc3QgPSAidCIsCiAgcmFuZG9tID0gbGlzdCh+MXxIZXJiaXZvcmVfUGh5bG9nZW55LCB+MXxIZXJiaXZvcmVfTGF0aW5fbmFtZSwgCiAgICAgICAgICAgICAgICB+MXxTdHVkeSwgfjF8RWZmZWN0KSwKICBkYXRhID0gZ2RhdAopCgojIGdldHRpbmcgbWFyZ2luYWwgUjIKcjJfbXJfQW5udWFsaXR5X2d1aWxkX2xuUlIxIDwtIHIyX21sKG1yX0FubnVhbGl0eV9ndWlsZF9sblJSMSkKCiMgIyBtZXRhLXJlZ3Jlc3Npb246IGNvbnRyYXN0cyB4IDcKIyBnZXR0aW5nIHRoZSBsZXZlbCBuYW1lcyBvdXQKbGV2ZWxfbmFtZXMgPC0gbGV2ZWxzKGdkYXQkTGlmZXNwYW5fZ3VpbGQpCgojIGhlbHBlciBmdW5jdGlvbiB0byBydW4gbWV0YWZvciBtZXRhLXJlZ3Jlc3Npb24KcnVuX0FubnVhbGl0eV9ndWlsZF9sblJSIDwtIGZ1bmN0aW9uKG5hbWUpIHsKICBybWEubXYoeWkgPSBsblJSLCAKICAgICAgICAgViA9IFZDVl9sblJSMiwKICAgICAgICAgbW9kcyA9IH4gcmVsZXZlbChMaWZlc3Bhbl9ndWlsZCwgcmVmID0gbmFtZSksIAogICAgICAgICB0ZXN0ID0gInQiLAogICAgICAgICByYW5kb20gPSBsaXN0KH4xfEhlcmJpdm9yZV9QaHlsb2dlbnksIH4xfEhlcmJpdm9yZV9MYXRpbl9uYW1lLCAKICAgICAgICAgICAgICAgICAgICAgICB+MXxTdHVkeSwgfjF8RWZmZWN0KSwKICAgICAgICAgZGF0YSA9IGdkYXQpCn0KCiMgcmVzdWx0cyBvZiBtZXRhLXJlZ3Jlc3Npb24gaW5jbHVkaW5nIGFsbCBjb250cmFzdCByZXN1bHRzOyB0YWtpbmcgdGhlIGxhc3QgbGV2ZWwgb3V0IChbLWxlbmd0aChsZXZlbF9uYW1lcyldKQptcl9Bbm51YWxpdHlfZ3VpbGRfbG5SUiA8LSBtYXAobGV2ZWxfbmFtZXNbLWxlbmd0aChsZXZlbF9uYW1lcyldLCBydW5fQW5udWFsaXR5X2d1aWxkX2xuUlIpCgpgYGAKCiMjIyMjIFRhYmxlIEUxMwoqKlRhYmxlIEUxMzoqKgpSZWdyZXNzaW9uIGNvZWZmaWNpZW50cyAoZXN0aW1hdGUpLCA5NSUgY29uZmlkZW5jZSBpbnRlcnZhbHMgKENJcyksIGFuZCB2YXJpYW5jZSBleHBsYWluZWQsICAqUipeMl5+W21hcmdpbmFsXX4gKFIyKSA9IGByIGFzLm51bWVyaWMocm91bmQocjJfbXJfQW5udWFsaXR5X2d1aWxkX2xuUlIxWzFdLCA0KSoxMDApYCUgZnJvbSB0aGUgbWV0YS1yZWdyZXNzaW9uIG9mIGxuUlIgd2l0aCBgTGlmZXNwYW5fZ3VpbGRgLiAKYGBge3IsIH0KIyBnZXR0aW5nIGVzdGltYXRlcwpyZXNfbXJfQW5udWFsaXR5X2d1aWxkX2xuUlIxIDwtIGdldF9wcmVkMShtcl9Bbm51YWxpdHlfZ3VpbGRfbG5SUjEsIG1vZCA9ICJMaWZlc3Bhbl9ndWlsZCIpCnJlc19tcl9Bbm51YWxpdHlfZ3VpbGRfbG5SUiA8LSBtYXAobXJfQW5udWFsaXR5X2d1aWxkX2xuUlIsIH4gZ2V0X3ByZWQyKC54LCBtb2QgPSAiTGlmZXNwYW5fZ3VpbGQiKSkKCiMgYSBsaXN0IG9mIHRoZSBudW1iZXJzIHRvIHRha2Ugb3V0IHVubmVjZXNzYXJ5IGNvbnRyYXN0cwpjb250cmFfbGlzdCA8LSBNYXAoc2VxLCBmcm9tPTEsIHRvPTE6MykKCnJlc19tcl9Bbm51YWxpdHlfZ3VpbGRfbG5SUjIgPC0gbWFwMl9kZnIocmVzX21yX0FubnVhbGl0eV9ndWlsZF9sblJSLCBjb250cmFfbGlzdCwgfi54Wy0oLnkpLCBdKSAKCiMgY3JlYXRpbmcgYSB0YWJsZQptcl9yZXN1bHRzKHJlc19tcl9Bbm51YWxpdHlfZ3VpbGRfbG5SUjEsIHJlc19tcl9Bbm51YWxpdHlfZ3VpbGRfbG5SUjIpICU+JSAKICBrYWJsZSgiaHRtbCIsICBkaWdpdHMgPSAzKSAlPiUKICBrYWJsZV9zdHlsaW5nKCJzdHJpcGVkIiwgcG9zaXRpb24gPSAibGVmdCIpICU+JQogIHNjcm9sbF9ib3god2lkdGggPSAiMTAwJSIsIGhlaWdodCA9ICIzMDBweCIpCmBgYAoKIyMjIyBDaGFuZ2UgaW4gU0Q6IGxuVlIKCmBgYHtyLCB9CgojIHZjdiBtYXRyaXggClZDVl9sblZSMiA8LSBtYWtlX1ZDVl9tYXRyaXgoZ2RhdCwgViA9ICJ2YXJsblZSIiwgY2x1c3RlciA9ICJTdHVkeSIsIG9icyA9ICJFZmZlY3QiKQoKIyBtZXRhLXJlZ3Jlc3Npb246IG11bHRpcGxlIGludGVyY2VwdHMKbXJfQW5udWFsaXR5X2d1aWxkX2xuVlIxIDwtIHJtYS5tdigKICB5aSA9IGxuVlIsCiAgViA9IFZDVl9sblZSMiwKICBtb2RzID0gfiBMaWZlc3Bhbl9ndWlsZCAtIDEsCiAgdGVzdCA9ICJ0IiwKICByYW5kb20gPSBsaXN0KH4xfEhlcmJpdm9yZV9QaHlsb2dlbnksIH4xfEhlcmJpdm9yZV9MYXRpbl9uYW1lLCAKICAgICAgICAgICAgICAgIH4xfFN0dWR5LCB+MXxFZmZlY3QpLAogIGRhdGEgPSBnZGF0CikKCiMgZ2V0dGluZyBtYXJnaW5hbCBSMgpyMl9tcl9Bbm51YWxpdHlfZ3VpbGRfbG5WUjEgPC0gcjJfbWwobXJfQW5udWFsaXR5X2d1aWxkX2xuVlIxKQoKIyAjIG1ldGEtcmVncmVzc2lvbjogY29udHJhc3RzIHggNwojIGdldHRpbmcgdGhlIGxldmVsIG5hbWVzIG91dApsZXZlbF9uYW1lcyA8LSBsZXZlbHMoZ2RhdCRMaWZlc3Bhbl9ndWlsZCkKCiMgaGVscGVyIGZ1bmN0aW9uIHRvIHJ1biBtZXRhZm9yIG1ldGEtcmVncmVzc2lvbgpydW5fQW5udWFsaXR5X2d1aWxkX2xuVlIgPC0gZnVuY3Rpb24obmFtZSkgewogIHJtYS5tdih5aSA9IGxuVlIsIAogICAgICAgICBWID0gVkNWX2xuVlIyLAogICAgICAgICBtb2RzID0gfiByZWxldmVsKExpZmVzcGFuX2d1aWxkLCByZWYgPSBuYW1lKSwgCiAgICAgICAgIHRlc3QgPSAidCIsCiAgICAgICAgIHJhbmRvbSA9IGxpc3QofjF8SGVyYml2b3JlX1BoeWxvZ2VueSwgfjF8SGVyYml2b3JlX0xhdGluX25hbWUsIAogICAgICAgICAgICAgICAgICAgICAgIH4xfFN0dWR5LCB+MXxFZmZlY3QpLAogICAgICAgICBkYXRhID0gZ2RhdCkKfQoKIyByZXN1bHRzIG9mIG1ldGEtcmVncmVzc2lvbiBpbmNsdWRpbmcgYWxsIGNvbnRyYXN0IHJlc3VsdHM7IHRha2luZyB0aGUgbGFzdCBsZXZlbCBvdXQgKFstbGVuZ3RoKGxldmVsX25hbWVzKV0pCm1yX0FubnVhbGl0eV9ndWlsZF9sblZSIDwtIG1hcChsZXZlbF9uYW1lc1stbGVuZ3RoKGxldmVsX25hbWVzKV0sIHJ1bl9Bbm51YWxpdHlfZ3VpbGRfbG5WUikKCmBgYAoKIyMjIyMgVGFibGUgRTE0CioqVGFibGUgRTE0OioqClJlZ3Jlc3Npb24gY29lZmZpY2llbnRzIChlc3RpbWF0ZSksIDk1JSBjb25maWRlbmNlIGludGVydmFscyAoQ0lzKSwgYW5kIHZhcmlhbmNlIGV4cGxhaW5lZCwgICpSKl4yXn5bbWFyZ2luYWxdfiAoUjIpID0gYHIgYXMubnVtZXJpYyhyb3VuZChyMl9tcl9Bbm51YWxpdHlfZ3VpbGRfbG5WUjFbMV0sIDQpKjEwMClgJSBmcm9tIHRoZSBtZXRhLXJlZ3Jlc3Npb24gb2YgbG5WUiB3aXRoIGBMaWZlc3Bhbl9ndWlsZGAuIApgYGB7ciwgfQojIGdldHRpbmcgZXN0aW1hdGVzCnJlc19tcl9Bbm51YWxpdHlfZ3VpbGRfbG5WUjEgPC0gZ2V0X3ByZWQxKG1yX0FubnVhbGl0eV9ndWlsZF9sblZSMSwgbW9kID0gIkxpZmVzcGFuX2d1aWxkIikKcmVzX21yX0FubnVhbGl0eV9ndWlsZF9sblZSIDwtIG1hcChtcl9Bbm51YWxpdHlfZ3VpbGRfbG5WUiwgfiBnZXRfcHJlZDIoLngsIG1vZCA9ICJMaWZlc3Bhbl9ndWlsZCIpKQoKIyBhIGxpc3Qgb2YgdGhlIG51bWJlcnMgdG8gdGFrZSBvdXQgdW5uZWNlc3NhcnkgY29udHJhc3RzCmNvbnRyYV9saXN0IDwtIE1hcChzZXEsIGZyb209MSwgdG89MTozKQoKcmVzX21yX0FubnVhbGl0eV9ndWlsZF9sblZSMiA8LSBtYXAyX2RmcihyZXNfbXJfQW5udWFsaXR5X2d1aWxkX2xuVlIsIGNvbnRyYV9saXN0LCB+LnhbLSgueSksIF0pIAoKIyBjcmVhdGluZyBhIHRhYmxlCm1yX3Jlc3VsdHMocmVzX21yX0FubnVhbGl0eV9ndWlsZF9sblZSMSwgcmVzX21yX0FubnVhbGl0eV9ndWlsZF9sblZSMikgJT4lIAogIGthYmxlKCJodG1sIiwgIGRpZ2l0cyA9IDMpICU+JQogIGthYmxlX3N0eWxpbmcoInN0cmlwZWQiLCBwb3NpdGlvbiA9ICJsZWZ0IikgJT4lCiAgc2Nyb2xsX2JveCh3aWR0aCA9ICIxMDAlIiwgaGVpZ2h0ID0gIjMwMHB4IikKYGBgCgojIyMjIyBGaWd1cmUgNEMtRApgYGB7ciwgIGZpZy53aWR0aD03LCBmaWcuaGVpZ2h0PTEwLCB9CgojIyBGaWd1cmUgM0MKcDIwIDwtIG9yY2hhcmRfcGxvdChtcl9Bbm51YWxpdHlfZ3VpbGRfbG5SUjEsIGRhdGE9IGdkYXQsIGdyb3VwID0gJ1N0dWR5Jyxtb2Q9IkxpZmVzcGFuX2d1aWxkIiwgeGxhYiA9ICJsb2coUmVzcG9uc2UgUmF0aW8pIChsblJSKSIsIGFscGhhID0gMC4yLCAgYW5nbGUgPSA0NSkgCiMjIEZpZ3VyZSAzRApwMjEgPC0gb3JjaGFyZF9wbG90KG1yX0FubnVhbGl0eV9ndWlsZF9sblZSMSwgZGF0YT0gZ2RhdCwgZ3JvdXAgPSAnU3R1ZHknLG1vZD0iTGlmZXNwYW5fZ3VpbGQiLCB4bGFiID0gImxvZyhWYXJpYWJpbGl0eSBSYXRpbykgKGxuVlIpIiwgYWxwaGEgPSAwLjIsICBhbmdsZSA9IDQ1KSAKIyMgRmlndXJlIDNECgojZ2dzYXZlKGhlcmUoImZpZyIsICJBbm51YWxpdHlfZ3VpbGQucG5nIikpCmBgYAoKCiMjIyBUaGUgY29tYmluZWQgZWZmZWN0IG9mIGZsb3dlcmluZyBkaXZpc2lvbnMgKFBvYWNlYWUgdnMgTm9uLVBvYWNlYWUpIGFuZCBndWlsZHMgKENoZXdpbmcgYXJ0aHJvcG9kcyAvIEZsdWlkLWZlZWRpbmcgYXJ0aHJvcG9kcykKCiMjIyMgTWVhbiBjaGFuZ2U6IGxuUlIKCmBgYHtyLCB9CiMgcmVvcmRlcmluZwpnZGF0JFBvYWNlYWVfZ3VpbGQgPC0gZmFjdG9yKGdkYXQkUG9hY2VhZV9ndWlsZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldmVscyA9IGMoIk5vbi1Qb2FjZWFlOkNoZXdpbmcgYXJ0aHJvcG9kcyIsIlBvYWNlYWU6Q2hld2luZyBhcnRocm9wb2RzIiwgIk5vbi1Qb2FjZWFlOkZsdWlkLWZlZWRpbmcgYXJ0aHJvcG9kcyIsICJQb2FjZWFlOkZsdWlkLWZlZWRpbmcgYXJ0aHJvcG9kcyIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWxzID0gYygiTm9uLVBvYWNlYWU6Q2hld2luZyBhcnRocm9wb2RzIiwiUG9hY2VhZTpDaGV3aW5nIGFydGhyb3BvZHMiLCAiTm9uLVBvYWNlYWU6Rmx1aWQtZmVlZGluZyBhcnRocm9wb2RzIiwgIlBvYWNlYWU6Rmx1aWQtZmVlZGluZyBhcnRocm9wb2RzIikpCgojIG1ldGEtcmVncmVzc2lvbjogbXVsdGlwbGUgaW50ZXJjZXB0cwptcl9Nb25vY290X0RpY290X2d1aWxkX2xuUlIxIDwtIHJtYS5tdigKICB5aSA9IGxuUlIsCiAgViA9IFZDVl9sblJSMiwKICBtb2RzID0gfiBQb2FjZWFlX2d1aWxkIC0gMSwKICB0ZXN0ID0gInQiLAogIHJhbmRvbSA9IGxpc3QofjF8SGVyYml2b3JlX1BoeWxvZ2VueSwgfjF8SGVyYml2b3JlX0xhdGluX25hbWUsIAogICAgICAgICAgICAgICAgICAgICAgIH4xfFN0dWR5LCB+MXxFZmZlY3QpLAogIGRhdGEgPSBnZGF0CikKCiMgZ2V0dGluZyBtYXJnaW5hbCBSMgpyMl9tcl9Nb25vY290X0RpY290X2d1aWxkX2xuUlIxIDwtIHIyX21sKG1yX01vbm9jb3RfRGljb3RfZ3VpbGRfbG5SUjEpCgojICMgbWV0YS1yZWdyZXNzaW9uOiBjb250cmFzdHMgeCA3CiMgZ2V0dGluZyB0aGUgbGV2ZWwgbmFtZXMgb3V0CmxldmVsX25hbWVzIDwtIGxldmVscyhnZGF0JFBvYWNlYWVfZ3VpbGQpCgojIGhlbHBlciBmdW5jdGlvbiB0byBydW4gbWV0YWZvciBtZXRhLXJlZ3Jlc3Npb24KcnVuX01vbm9jb3RfRGljb3RfZ3VpbGRfbG5SUiA8LSBmdW5jdGlvbihuYW1lKSB7CiAgcm1hLm12KHlpID0gbG5SUiwgCiAgICAgICAgIFYgPSBWQ1ZfbG5SUjIsCiAgICAgICAgIG1vZHMgPSB+IHJlbGV2ZWwoUG9hY2VhZV9ndWlsZCwgcmVmID0gbmFtZSksIAogICAgICAgICB0ZXN0ID0gInQiLAogICAgICAgICByYW5kb20gPSBsaXN0KH4xfEhlcmJpdm9yZV9QaHlsb2dlbnksIH4xfEhlcmJpdm9yZV9MYXRpbl9uYW1lLCAKICAgICAgICAgICAgICAgICAgICAgICB+MXxTdHVkeSwgfjF8RWZmZWN0KSwKICAgICAgICAgZGF0YSA9IGdkYXQpCn0KCiMgcmVzdWx0cyBvZiBtZXRhLXJlZ3Jlc3Npb24gaW5jbHVkaW5nIGFsbCBjb250cmFzdCByZXN1bHRzOyB0YWtpbmcgdGhlIGxhc3QgbGV2ZWwgb3V0IChbLWxlbmd0aChsZXZlbF9uYW1lcyldKQptcl9Nb25vY290X0RpY290X2d1aWxkX2xuUlIgPC0gbWFwKGxldmVsX25hbWVzWy1sZW5ndGgobGV2ZWxfbmFtZXMpXSwgcnVuX01vbm9jb3RfRGljb3RfZ3VpbGRfbG5SUikKCmBgYAoKIyMjIyMgVGFibGUgRTE1CioqVGFibGUgRTE1OioqClJlZ3Jlc3Npb24gY29lZmZpY2llbnRzIChlc3RpbWF0ZSksIDk1JSBjb25maWRlbmNlIGludGVydmFscyAoQ0lzKSwgYW5kIHZhcmlhbmNlIGV4cGxhaW5lZCwgICpSKl4yXn5bbWFyZ2luYWxdfiAoUjIpID0gYHIgYXMubnVtZXJpYyhyb3VuZChyMl9tcl9Nb25vY290X0RpY290X2d1aWxkX2xuUlIxWzFdLCA0KSoxMDApYCUgZnJvbSB0aGUgbWV0YS1yZWdyZXNzaW9uIG9mIGxuUlIgd2l0aCBgUG9hY2VhZV9ndWlsZGAuIApgYGB7ciwgfQojIGdldHRpbmcgZXN0aW1hdGVzCnJlc19tcl9Nb25vY290X0RpY290X2d1aWxkX2xuUlIxIDwtIGdldF9wcmVkMShtcl9Nb25vY290X0RpY290X2d1aWxkX2xuUlIxLCBtb2QgPSAiUG9hY2VhZV9ndWlsZCIpCiNyZXNfbXJfYW5udWFsaXR5X2xuUlIyIDwtIG1hcChtcl9hbm51YWxpdHlfbG5SUiwgfiBnZXRfZXN0MigueCwgbW9kID0gIkFubnVhbGl0eSIpKQpyZXNfbXJfTW9ub2NvdF9EaWNvdF9ndWlsZF9sblJSIDwtIG1hcChtcl9Nb25vY290X0RpY290X2d1aWxkX2xuUlIsIH4gZ2V0X3ByZWQyKC54LCBtb2QgPSAiUG9hY2VhZV9ndWlsZCIpKQoKIyBhIGxpc3Qgb2YgdGhlIG51bWJlcnMgdG8gdGFrZSBvdXQgdW5uZWNlc3NhcnkgY29udHJhc3RzCmNvbnRyYV9saXN0IDwtIE1hcChzZXEsIGZyb209MSwgdG89MTozKQoKIyB5b3UgbmVlZCB0byBmbGF0dGVuIHR3aWNlOiBmaXJzdCB0byBtYWtlIGl0IGEgbGlzdCBhbmQgbWFrZSBpdCBhIHZlY3RvcgojIEkgZ3Vlc3Mgd2UgY2FuIG1ha2UgaXQgYSBsb29wIChvciB2ZWN0b3Jpc2UpCnJlc19tcl9Nb25vY290X0RpY290X2d1aWxkX2xuUlIyIDwtIG1hcDJfZGZyKHJlc19tcl9Nb25vY290X0RpY290X2d1aWxkX2xuUlIsIGNvbnRyYV9saXN0LCB+LnhbLSgueSksIF0pIAoKIyBjcmVhdGluZyBhIHRhYmxlCm1yX3Jlc3VsdHMocmVzX21yX01vbm9jb3RfRGljb3RfZ3VpbGRfbG5SUjEsIHJlc19tcl9Nb25vY290X0RpY290X2d1aWxkX2xuUlIyKSAlPiUgCiAga2FibGUoImh0bWwiLCAgZGlnaXRzID0gMykgJT4lCiAga2FibGVfc3R5bGluZygic3RyaXBlZCIsIHBvc2l0aW9uID0gImxlZnQiKSAlPiUKICBzY3JvbGxfYm94KHdpZHRoID0gIjEwMCUiLCBoZWlnaHQgPSAiMzAwcHgiKQpgYGAKCiMjIyMgQ2hhbmdlIGluIFNEOiBsblZSCgpgYGB7ciwgfQojIG1ldGEtcmVncmVzc2lvbjogbXVsdGlwbGUgaW50ZXJjZXB0cwptcl9Nb25vY290X0RpY290X2d1aWxkX2xuVlIxIDwtIHJtYS5tdigKICB5aSA9IGxuVlIsCiAgViA9IFZDVl9sblZSMiwKICBtb2RzID0gfiBQb2FjZWFlX2d1aWxkIC0gMSwKICB0ZXN0ID0gInQiLAogIHJhbmRvbSA9IGxpc3QofjF8SGVyYml2b3JlX1BoeWxvZ2VueSwgfjF8SGVyYml2b3JlX0xhdGluX25hbWUsIAogICAgICAgICAgICAgICAgICAgICAgIH4xfFN0dWR5LCB+MXxFZmZlY3QpLAogIGRhdGEgPSBnZGF0CikKCiMgZ2V0dGluZyBtYXJnaW5hbCBSMgpyMl9tcl9Nb25vY290X0RpY290X2d1aWxkX2xuVlIxIDwtIHIyX21sKG1yX01vbm9jb3RfRGljb3RfZ3VpbGRfbG5WUjEpCgojICMgbWV0YS1yZWdyZXNzaW9uOiBjb250cmFzdHMgeCA3CiMgZ2V0dGluZyB0aGUgbGV2ZWwgbmFtZXMgb3V0CmxldmVsX25hbWVzIDwtIGxldmVscyhnZGF0JFBvYWNlYWVfZ3VpbGQpCgojIGhlbHBlciBmdW5jdGlvbiB0byBydW4gbWV0YWZvciBtZXRhLXJlZ3Jlc3Npb24KcnVuX01vbm9jb3RfRGljb3RfZ3VpbGRfbG5WUiA8LSBmdW5jdGlvbihuYW1lKSB7CiAgcm1hLm12KHlpID0gbG5WUiwgCiAgICAgICAgIFYgPSBWQ1ZfbG5WUjIsCiAgICAgICAgIG1vZHMgPSB+IHJlbGV2ZWwoUG9hY2VhZV9ndWlsZCwgcmVmID0gbmFtZSksIAogICAgICAgICB0ZXN0ID0gInQiLAogICAgICAgICByYW5kb20gPSBsaXN0KH4xfEhlcmJpdm9yZV9QaHlsb2dlbnksIH4xfEhlcmJpdm9yZV9MYXRpbl9uYW1lLCAKICAgICAgICAgICAgICAgICAgICAgICB+MXxTdHVkeSwgfjF8RWZmZWN0KSwKICAgICAgICAgZGF0YSA9IGdkYXQpCn0KCiMgcmVzdWx0cyBvZiBtZXRhLXJlZ3Jlc3Npb24gaW5jbHVkaW5nIGFsbCBjb250cmFzdCByZXN1bHRzOyB0YWtpbmcgdGhlIGxhc3QgbGV2ZWwgb3V0IChbLWxlbmd0aChsZXZlbF9uYW1lcyldKQptcl9Nb25vY290X0RpY290X2d1aWxkX2xuVlIgPC0gbWFwKGxldmVsX25hbWVzWy1sZW5ndGgobGV2ZWxfbmFtZXMpXSwgcnVuX01vbm9jb3RfRGljb3RfZ3VpbGRfbG5WUikKCmBgYAoKIyMjIyMgVGFibGUgRTE2CioqVGFibGUgRTE2OioqClJlZ3Jlc3Npb24gY29lZmZpY2llbnRzIChlc3RpbWF0ZSksIDk1JSBjb25maWRlbmNlIGludGVydmFscyAoQ0lzKSwgYW5kIHZhcmlhbmNlIGV4cGxhaW5lZCwgICpSKl4yXn5bbWFyZ2luYWxdfiAoUjIpID0gYHIgYXMubnVtZXJpYyhyb3VuZChyMl9tcl9Nb25vY290X0RpY290X2d1aWxkX2xuVlIxWzFdLCA0KSoxMDApYCUgZnJvbSB0aGUgbWV0YS1yZWdyZXNzaW9uIG9mIGxuVlIgd2l0aCBgUG9hY2VhZV9ndWlsZGAuIApgYGB7ciwgfQojIGdldHRpbmcgZXN0aW1hdGVzCnJlc19tcl9Nb25vY290X0RpY290X2d1aWxkX2xuVlIxIDwtIGdldF9wcmVkMShtcl9Nb25vY290X0RpY290X2d1aWxkX2xuVlIxLCBtb2QgPSAiUG9hY2VhZV9ndWlsZCIpCiNyZXNfbXJfYW5udWFsaXR5X2xuVlIyIDwtIG1hcChtcl9hbm51YWxpdHlfbG5WUiwgfiBnZXRfZXN0MigueCwgbW9kID0gIkFubnVhbGl0eSIpKQpyZXNfbXJfTW9ub2NvdF9EaWNvdF9ndWlsZF9sblZSIDwtIG1hcChtcl9Nb25vY290X0RpY290X2d1aWxkX2xuVlIsIH4gZ2V0X3ByZWQyKC54LCBtb2QgPSAiUG9hY2VhZV9ndWlsZCIpKQoKIyBhIGxpc3Qgb2YgdGhlIG51bWJlcnMgdG8gdGFrZSBvdXQgdW5uZWNlc3NhcnkgY29udHJhc3RzCmNvbnRyYV9saXN0IDwtIE1hcChzZXEsIGZyb209MSwgdG89MTozKQoKIyB5b3UgbmVlZCB0byBmbGF0dGVuIHR3aWNlOiBmaXJzdCB0byBtYWtlIGl0IGEgbGlzdCBhbmQgbWFrZSBpdCBhIHZlY3RvcgojIEkgZ3Vlc3Mgd2UgY2FuIG1ha2UgaXQgYSBsb29wIChvciB2ZWN0b3Jpc2UpCnJlc19tcl9Nb25vY290X0RpY290X2d1aWxkX2xuVlIyIDwtIG1hcDJfZGZyKHJlc19tcl9Nb25vY290X0RpY290X2d1aWxkX2xuVlIsIGNvbnRyYV9saXN0LCB+LnhbLSgueSksIF0pIAoKIyBjcmVhdGluZyBhIHRhYmxlCm1yX3Jlc3VsdHMocmVzX21yX01vbm9jb3RfRGljb3RfZ3VpbGRfbG5WUjEsIHJlc19tcl9Nb25vY290X0RpY290X2d1aWxkX2xuVlIyKSAlPiUgCiAga2FibGUoImh0bWwiLCAgZGlnaXRzID0gMykgJT4lCiAga2FibGVfc3R5bGluZygic3RyaXBlZCIsIHBvc2l0aW9uID0gImxlZnQiKSAlPiUKICBzY3JvbGxfYm94KHdpZHRoID0gIjEwMCUiLCBoZWlnaHQgPSAiMzAwcHgiKQpgYGAKCiMjIyMjIEZpZ3VyZSA0QS1CCmBgYHtyLCAgZmlnLndpZHRoPTcsIGZpZy5oZWlnaHQ9MTAsIH0KCiMjIEZpZ3VyZSAzQQpwMjMgPC0gb3JjaGFyZF9wbG90KG1yX01vbm9jb3RfRGljb3RfZ3VpbGRfbG5SUjEsIGRhdGE9IGdkYXQsIGdyb3VwID0gJ1N0dWR5Jyxtb2Q9IlBvYWNlYWVfZ3VpbGQiLCB4bGFiID0gImxvZyhSZXNwb25zZSBSYXRpbykgKGxuUlIpIiwgYWxwaGEgPSAwLjIsICBhbmdsZSA9IDQ1KSAKCiMjIEZpZ3VyZSAzQgpwMjQgPC0gb3JjaGFyZF9wbG90KG1yX01vbm9jb3RfRGljb3RfZ3VpbGRfbG5WUjEsIGRhdGE9IGdkYXQsIGdyb3VwID0gJ1N0dWR5Jyxtb2Q9IlBvYWNlYWVfZ3VpbGQiLCB4bGFiID0gImxvZyhWYXJpYWJpbGl0eSBSYXRpbykgKGxuVlIpIiwgYWxwaGEgPSAwLjIsICBhbmdsZSA9IDQ1KSAKCiNnZ3NhdmUoaGVyZSgiZmlnIiwgIk1vbm9jb3RfRGljb3RfZ3VpbGQucG5nIikpCmBgYAoKCiMjIyBUaGUgY29tYmluZWQgZWZmZWN0IG9mIGhlcmJpdm9yZSBkaXN0aW5jdGlvbnMgKHNwZWNpYWxpc3RzIHZzIGdlbmVyYWxpc3QpIGFuZCBndWlsZHMgKENoZXdpbmcgYXJ0aHJvcG9kcyAvIEZsdWlkLWZlZWRpbmcgYXJ0aHJvcG9kcykKCiMjIyMgTWVhbiBjaGFuZ2U6IGxuUlIKCmBgYHtyLCB9CiMgcmVvcmRlcmluZwpnZGF0JERpZXRfZ3VpbGQgPC0gZmFjdG9yKGdkYXQkRGlldF9ndWlsZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldmVscyA9IGMoIkdlbmVyYWxpc3Q6Q2hld2luZyBhcnRocm9wb2RzIiwgIlNwZWNpYWxpc3Q6Q2hld2luZyBhcnRocm9wb2RzIiwgIkdlbmVyYWxpc3Q6Rmx1aWQtZmVlZGluZyBhcnRocm9wb2RzIiwgIlNwZWNpYWxpc3Q6Rmx1aWQtZmVlZGluZyBhcnRocm9wb2RzIiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbHMgPSBjKCJHZW5lcmFsaXN0OkNoZXdpbmcgYXJ0aHJvcG9kcyIsICJTcGVjaWFsaXN0OkNoZXdpbmcgYXJ0aHJvcG9kcyIsICJHZW5lcmFsaXN0OkZsdWlkLWZlZWRpbmcgYXJ0aHJvcG9kcyIsICJTcGVjaWFsaXN0OkZsdWlkLWZlZWRpbmcgYXJ0aHJvcG9kcyIpKQoKIyBtZXRhLXJlZ3Jlc3Npb246IG11bHRpcGxlIGludGVyY2VwdHMKbXJfU3BlY0dlbl9ndWlsZF9sblJSMSA8LSBybWEubXYoCiAgeWkgPSBsblJSLAogIFYgPSBWQ1ZfbG5SUjIsCiAgbW9kcyA9IH4gRGlldF9ndWlsZCAtIDEsCiAgdGVzdCA9ICJ0IiwKICByYW5kb20gPSBsaXN0KH4xfEhlcmJpdm9yZV9QaHlsb2dlbnksIH4xfEhlcmJpdm9yZV9MYXRpbl9uYW1lLCAKICAgICAgICAgICAgICAgICAgICAgICB+MXxTdHVkeSwgfjF8RWZmZWN0KSwKICBkYXRhID0gZ2RhdAopCgojIGdldHRpbmcgbWFyZ2luYWwgUjIKcjJfbXJfU3BlY0dlbl9ndWlsZF9sblJSMSA8LSByMl9tbChtcl9TcGVjR2VuX2d1aWxkX2xuUlIxKQoKIyAjIG1ldGEtcmVncmVzc2lvbjogY29udHJhc3RzIHggNwojIGdldHRpbmcgdGhlIGxldmVsIG5hbWVzIG91dApsZXZlbF9uYW1lcyA8LSBsZXZlbHMoZ2RhdCREaWV0X2d1aWxkKQoKIyBoZWxwZXIgZnVuY3Rpb24gdG8gcnVuIG1ldGFmb3IgbWV0YS1yZWdyZXNzaW9uCnJ1bl9TcGVjR2VuX2d1aWxkX2xuUlIgPC0gZnVuY3Rpb24obmFtZSkgewogIHJtYS5tdih5aSA9IGxuUlIsIAogICAgICAgICBWID0gVkNWX2xuUlIyLAogICAgICAgICBtb2RzID0gfiByZWxldmVsKERpZXRfZ3VpbGQsIHJlZiA9IG5hbWUpLCAKICAgICAgICAgdGVzdCA9ICJ0IiwKICAgICAgICAgcmFuZG9tID0gbGlzdCh+MXxIZXJiaXZvcmVfUGh5bG9nZW55LCB+MXxIZXJiaXZvcmVfTGF0aW5fbmFtZSwgCiAgICAgICAgICAgICAgICAgICAgICAgfjF8U3R1ZHksIH4xfEVmZmVjdCksCiAgICAgICAgIGRhdGEgPSBnZGF0KQp9CgojIHJlc3VsdHMgb2YgbWV0YS1yZWdyZXNzaW9uIGluY2x1ZGluZyBhbGwgY29udHJhc3QgcmVzdWx0czsgdGFraW5nIHRoZSBsYXN0IGxldmVsIG91dCAoWy1sZW5ndGgobGV2ZWxfbmFtZXMpXSkKbXJfU3BlY0dlbl9ndWlsZF9sblJSIDwtIG1hcChsZXZlbF9uYW1lc1stbGVuZ3RoKGxldmVsX25hbWVzKV0sIHJ1bl9TcGVjR2VuX2d1aWxkX2xuUlIpCgpgYGAKCiMjIyMjIFRhYmxlIEUxNwoqKlRhYmxlIEUxNzoqKgpSZWdyZXNzaW9uIGNvZWZmaWNpZW50cyAoZXN0aW1hdGUpLCA5NSUgY29uZmlkZW5jZSBpbnRlcnZhbHMgKENJcyksIGFuZCB2YXJpYW5jZSBleHBsYWluZWQsICAqUipeMl5+W21hcmdpbmFsXX4gKFIyKSA9IGByIGFzLm51bWVyaWMocm91bmQocjJfbXJfU3BlY0dlbl9ndWlsZF9sblJSMVsxXSwgNCkqMTAwKWAlIGZyb20gdGhlIG1ldGEtcmVncmVzc2lvbiBvZiBsblJSIHdpdGggYERpZXRfZ3VpbGRgLiAKYGBge3IsIH0KIyBnZXR0aW5nIGVzdGltYXRlcwpyZXNfbXJfU3BlY0dlbl9ndWlsZF9sblJSMSA8LSBnZXRfcHJlZDEobXJfU3BlY0dlbl9ndWlsZF9sblJSMSwgbW9kID0gIkRpZXRfZ3VpbGQiKQpyZXNfbXJfU3BlY0dlbl9ndWlsZF9sblJSIDwtIG1hcChtcl9TcGVjR2VuX2d1aWxkX2xuUlIsIH4gZ2V0X3ByZWQyKC54LCBtb2QgPSAiRGlldF9ndWlsZCIpKQoKIyBhIGxpc3Qgb2YgdGhlIG51bWJlcnMgdG8gdGFrZSBvdXQgdW5uZWNlc3NhcnkgY29udHJhc3RzCmNvbnRyYV9saXN0IDwtIE1hcChzZXEsIGZyb209MSwgdG89MTozKQoKIyB5b3UgbmVlZCB0byBmbGF0dGVuIHR3aWNlOiBmaXJzdCB0byBtYWtlIGl0IGEgbGlzdCBhbmQgbWFrZSBpdCBhIHZlY3RvcgojIEkgZ3Vlc3Mgd2UgY2FuIG1ha2UgaXQgYSBsb29wIChvciB2ZWN0b3Jpc2UpCnJlc19tcl9TcGVjR2VuX2d1aWxkX2xuUlIyIDwtIG1hcDJfZGZyKHJlc19tcl9TcGVjR2VuX2d1aWxkX2xuUlIsIGNvbnRyYV9saXN0LCB+LnhbLSgueSksIF0pIAoKIyBjcmVhdGluZyBhIHRhYmxlCm1yX3Jlc3VsdHMocmVzX21yX1NwZWNHZW5fZ3VpbGRfbG5SUjEsIHJlc19tcl9TcGVjR2VuX2d1aWxkX2xuUlIyKSAlPiUgCiAga2FibGUoImh0bWwiLCAgZGlnaXRzID0gMykgJT4lCiAga2FibGVfc3R5bGluZygic3RyaXBlZCIsIHBvc2l0aW9uID0gImxlZnQiKSAlPiUKICBzY3JvbGxfYm94KHdpZHRoID0gIjEwMCUiLCBoZWlnaHQgPSAiMzAwcHgiKQpgYGAKCiMjIyMgQ2hhbmdlIGluIFNEOiBsblZSCgpgYGB7ciwgfQoKIyBtZXRhLXJlZ3Jlc3Npb246IG11bHRpcGxlIGludGVyY2VwdHMKbXJfU3BlY0dlbl9ndWlsZF9sblZSMSA8LSBybWEubXYoCiAgeWkgPSBsblZSLAogIFYgPSBWQ1ZfbG5WUjIsCiAgbW9kcyA9IH4gRGlldF9ndWlsZCAtIDEsCiAgdGVzdCA9ICJ0IiwKICByYW5kb20gPSBsaXN0KH4xfEhlcmJpdm9yZV9QaHlsb2dlbnksIH4xfEhlcmJpdm9yZV9MYXRpbl9uYW1lLCAKICAgICAgICAgICAgICAgICAgICAgICB+MXxTdHVkeSwgfjF8RWZmZWN0KSwKICBkYXRhID0gZ2RhdAopCgojIGdldHRpbmcgbWFyZ2luYWwgUjIKcjJfbXJfU3BlY0dlbl9ndWlsZF9sblZSMSA8LSByMl9tbChtcl9TcGVjR2VuX2d1aWxkX2xuVlIxKQoKIyAjIG1ldGEtcmVncmVzc2lvbjogY29udHJhc3RzIHggNwojIGdldHRpbmcgdGhlIGxldmVsIG5hbWVzIG91dApsZXZlbF9uYW1lcyA8LSBsZXZlbHMoZ2RhdCREaWV0X2d1aWxkKQoKIyBoZWxwZXIgZnVuY3Rpb24gdG8gcnVuIG1ldGFmb3IgbWV0YS1yZWdyZXNzaW9uCnJ1bl9TcGVjR2VuX2d1aWxkX2xuVlIgPC0gZnVuY3Rpb24obmFtZSkgewogIHJtYS5tdih5aSA9IGxuVlIsIAogICAgICAgICBWID0gVkNWX2xuVlIyLAogICAgICAgICBtb2RzID0gfiByZWxldmVsKERpZXRfZ3VpbGQsIHJlZiA9IG5hbWUpLCAKICAgICAgICAgdGVzdCA9ICJ0IiwKICAgICAgICAgcmFuZG9tID0gbGlzdCh+MXxIZXJiaXZvcmVfUGh5bG9nZW55LCB+MXxIZXJiaXZvcmVfTGF0aW5fbmFtZSwgCiAgICAgICAgICAgICAgICAgICAgICAgfjF8U3R1ZHksIH4xfEVmZmVjdCksCiAgICAgICAgIGRhdGEgPSBnZGF0KQp9CgojIHJlc3VsdHMgb2YgbWV0YS1yZWdyZXNzaW9uIGluY2x1ZGluZyBhbGwgY29udHJhc3QgcmVzdWx0czsgdGFraW5nIHRoZSBsYXN0IGxldmVsIG91dCAoWy1sZW5ndGgobGV2ZWxfbmFtZXMpXSkKbXJfU3BlY0dlbl9ndWlsZF9sblZSIDwtIG1hcChsZXZlbF9uYW1lc1stbGVuZ3RoKGxldmVsX25hbWVzKV0sIHJ1bl9TcGVjR2VuX2d1aWxkX2xuVlIpCgpgYGAKCiMjIyMjIFRhYmxlIEUxOAoqKlRhYmxlIEUxODoqKgpSZWdyZXNzaW9uIGNvZWZmaWNpZW50cyAoZXN0aW1hdGUpLCA5NSUgY29uZmlkZW5jZSBpbnRlcnZhbHMgKENJcyksIGFuZCB2YXJpYW5jZSBleHBsYWluZWQsICAqUipeMl5+W21hcmdpbmFsXX4gKFIyKSA9IGByIGFzLm51bWVyaWMocm91bmQocjJfbXJfU3BlY0dlbl9ndWlsZF9sblZSMVsxXSwgNCkqMTAwKWAlIGZyb20gdGhlIG1ldGEtcmVncmVzc2lvbiBvZiBsblZSIHdpdGggYERpZXRfZ3VpbGRgLiAKYGBge3IsIH0KIyBnZXR0aW5nIGVzdGltYXRlcwpyZXNfbXJfU3BlY0dlbl9ndWlsZF9sblZSMSA8LSBnZXRfcHJlZDEobXJfU3BlY0dlbl9ndWlsZF9sblZSMSwgbW9kID0gIkRpZXRfZ3VpbGQiKQpyZXNfbXJfU3BlY0dlbl9ndWlsZF9sblZSIDwtIG1hcChtcl9TcGVjR2VuX2d1aWxkX2xuVlIsIH4gZ2V0X3ByZWQyKC54LCBtb2QgPSAiRGlldF9ndWlsZCIpKQoKIyBhIGxpc3Qgb2YgdGhlIG51bWJlcnMgdG8gdGFrZSBvdXQgdW5uZWNlc3NhcnkgY29udHJhc3RzCmNvbnRyYV9saXN0IDwtIE1hcChzZXEsIGZyb209MSwgdG89MTozKQoKIyB5b3UgbmVlZCB0byBmbGF0dGVuIHR3aWNlOiBmaXJzdCB0byBtYWtlIGl0IGEgbGlzdCBhbmQgbWFrZSBpdCBhIHZlY3RvcgojIEkgZ3Vlc3Mgd2UgY2FuIG1ha2UgaXQgYSBsb29wIChvciB2ZWN0b3Jpc2UpCnJlc19tcl9TcGVjR2VuX2d1aWxkX2xuVlIyIDwtIG1hcDJfZGZyKHJlc19tcl9TcGVjR2VuX2d1aWxkX2xuVlIsIGNvbnRyYV9saXN0LCB+LnhbLSgueSksIF0pIAoKIyBjcmVhdGluZyBhIHRhYmxlCm1yX3Jlc3VsdHMocmVzX21yX1NwZWNHZW5fZ3VpbGRfbG5WUjEsIHJlc19tcl9TcGVjR2VuX2d1aWxkX2xuVlIyKSAlPiUgCiAga2FibGUoImh0bWwiLCAgZGlnaXRzID0gMykgJT4lCiAga2FibGVfc3R5bGluZygic3RyaXBlZCIsIHBvc2l0aW9uID0gImxlZnQiKSAlPiUKICBzY3JvbGxfYm94KHdpZHRoID0gIjEwMCUiLCBoZWlnaHQgPSAiMzAwcHgiKQpgYGAKCiMjIyMjIEZpZ3VyZSA0RS1GCmBgYHtyLCAgZmlnLndpZHRoPTcsIGZpZy5oZWlnaHQ9MTAsIH0KCiMjIEZpZ3VyZSAzRQpwMjYgPC0gb3JjaGFyZF9wbG90KG1yX1NwZWNHZW5fZ3VpbGRfbG5SUjEsIGRhdGE9IGdkYXQsIGdyb3VwID0gJ1N0dWR5Jyxtb2Q9IkRpZXRfZ3VpbGQiLCB4bGFiID0gImxvZyhSZXNwb25zZSBSYXRpbykgKGxuUlIpIiwgYWxwaGEgPSAwLjIsICBhbmdsZSA9IDQ1KSAKCiMjIEZpZ3VyZSAzRgpwMjcgPC0gb3JjaGFyZF9wbG90KG1yX1NwZWNHZW5fZ3VpbGRfbG5WUjEsIGRhdGE9IGdkYXQsIGdyb3VwID0gJ1N0dWR5Jyxtb2Q9IkRpZXRfZ3VpbGQiLCB4bGFiID0gImxvZyhSZXNwb25zZSBSYXRpbykgKGxuVlIpIiwgYWxwaGEgPSAwLjIsICBhbmdsZSA9IDQ1KSAKCiNnZ3NhdmUoaGVyZSgiZmlnIiwgIlNwZWNHZW5fZ3VpbGQucG5nIikpCmBgYAoKCgoKIyMjIE1vZGVsIHNlbGVjdGlvbjogbXVsdGktcHJlZGljdG9yIG1vZGVsCgpIZXJlIHdlIGJ1aWxkIHRoZSBiZXN0IG1vZGVsIHZpYSBhbiBBSUNjIGJhc2VkIG1vZGVsIHNlbGVjdGlvbiBtZXRob2QgaW1wbGVtZW50ZWQgaW4gdGhlIFIgcGFja2FnZSBgTXVNaW5gW0BiYXJ0b24yMDA5bXVtaW5dLiBGb3IgdGhlIGZ1bGwgbW9kZWwsIHdlIGhhZCA0IHZhcmlhYmxlczogYFBsYW50X2xpZmVzcGFuYCwgYFBvYWNlYWVfb3JfTm9uYCwgYEhlcmJpdm9yZV9kaWV0X2JyZWFkdGhgLCBhbmQgYEZlZWRpbmdfZ3VpbGRgLiBXZSBjb25kdWN0ZWQgd2l0aCB0aGUgZnVsbCBkYXRhc2V0IChgZGF0YCk7IHRoZXJlZm9yZSwgd2UgZGlkIG5vdCBpbmNsdWRlIGFueSBpbnRlcmFjdGlvbiB0ZXJtcyAoZS5nLiBgTGlmZXNwYW5fZ3VpbGRgKS4gCgojIyMjIE1vZGVsIHNlbGVjdGlvbjogbG5SUgoKYGBge3J9CiMgbWFraW5nIG1ldGFmb3IgdGFsayB0byBNdU1JbgpldmFsKG1ldGFmb3I6OjouTXVNSW4pCiMgdXNlIG1ldGhvZCA9ICJNTCIgc28gdGhhdCB3ZSBjYW4gY29tcGFyZSBBSUMKbXJfZnVsbF9sblJSIDwtIHJtYS5tdigKICB5aSA9IGxuUlIsCiAgViA9IFZDVl9sblJSLAogIG1vZHMgPSB+IFBsYW50X2xpZmVzcGFuICsKICAgIFBvYWNlYWVfb3JfTm9uICsKICAgIEhlcmJpdm9yZV9kaWV0X2JyZWFkdGggKwogICAgRmVlZGluZ19ndWlsZCwKICB0ZXN0ID0gInQiLAogIHJhbmRvbSA9IGxpc3QofjF8SGVyYml2b3JlX1BoeWxvZ2VueSwgfjF8SGVyYml2b3JlX0xhdGluX25hbWUsIAogICAgICAgICAgICAgICAgICAgICAgIH4xfFN0dWR5LCB+MXxFZmZlY3QpLAogIG1ldGhvZCA9ICJNTCIsICMgZm9yIG1vZGVsIHNlbGVjdGlvbgogIGRhdGEgPSBkYXQKKQojIGNhbGxpbmcgcmVxdWlyZWQgZnVuY3Rpb25zCiNnZXRDYWxsKG1yX2Z1bGxfbG5SUikKIyBkcmVkZ2UoZnVsbC5tb2RlbCwgZXZhbHVhdGU9RikgIyBzaG93IGFsbCBjYW5kaWRhdGUgbW9kZWxzCiMgbiA9IDMyIG1vZGVsIGV4aXN0CmNhbmRpZGF0ZXNfbG5SUiA8LSBkcmVkZ2UobXJfZnVsbF9sblJSLCB0cmFjZSA9IDIpCnNhdmVSRFMoY2FuZGlkYXRlc19sblJSLCBmaWxlID0gaGVyZSgiUmRhdGEiLCAiY2FuZGlkYXRlc19sblJSLnJkcyIpKQpgYGAKCmBgYHtyfQojIG1ha2luZyBtZXRhZm9yIHRhbGsgdG8gTXVNSW4KZXZhbChtZXRhZm9yOjo6Lk11TUluKQpjYW5kaWRhdGVzX2xuUlIgPC0gcmVhZFJEUyhmaWxlID0gaGVyZSgiUmRhdGEiLCAiY2FuZGlkYXRlc19sblJSLnJkcyIpKQojIGRpc3BsYXlzIGRlbHRhIEFJQ2MgPDIKY2FuZGlkYXRlc19haWMyX2xuUlIgPC0gc3Vic2V0KGNhbmRpZGF0ZXNfbG5SUiwgZGVsdGEgPCAyKSAKIyBtb2RlbCBhdmVyYWdpbmcKIyBpdCBzZWVtcyBsaWtlIG1vZGVscyBhcmUgdXNpbmcgeiB2YWx1ZXMgcmF0aGVyIHRoYW4gdCB2YWx1ZXMgKHdoaWNoIHdpbGwgYmUgT0spCm1yX2F2ZXJhZ2VkX2FpYzJfbG5SUiA8LSBzdW1tYXJ5KG1vZGVsLmF2ZyhjYW5kaWRhdGVzX2xuUlIsIGRlbHRhIDwgMikpIAojIHJlbGF0aXZlIGltcG9ydGFuY2Ugb2YgZWFjaCBwcmVkaWN0b3IgZm9yIGFsbCB0aGUgbW9kZWxzCmltcG9ydGFuY2VfbG5SUiA8LSBzdyhjYW5kaWRhdGVzX2xuUlIpCgojIHVzZSBSRU1MIGlmIG5vdCBmb3IgbW9kZWwgY29tcGFyaXNvbgptb2RlbDFfbG5SUiA8LSBybWEubXYoCiAgeWkgPSBsblJSLAogIFYgPSBWQ1ZfbG5SUiwgCiAgbW9kcyA9IH4gRmVlZGluZ19ndWlsZCwKICB0ZXN0ID0gInQiLAogIHJhbmRvbSA9IGxpc3QofjF8SGVyYml2b3JlX1BoeWxvZ2VueSwgfjF8SGVyYml2b3JlX0xhdGluX25hbWUsIAogICAgICAgICAgICAgICAgICAgICAgIH4xfFN0dWR5LCB+MXxFZmZlY3QpLAogIG1ldGhvZCA9ICJSRU1MIiwgCiAgZGF0YSA9IGRhdAopCgptb2RlbDJfbG5SUiA8LSBybWEubXYoCiAgeWkgPSBsblJSLAogIFYgPSBWQ1ZfbG5SUiwgCiAgbW9kcyA9IH4gRmVlZGluZ19ndWlsZCArIFBvYWNlYWVfb3JfTm9uLAogIHRlc3QgPSAidCIsCiAgcmFuZG9tID0gbGlzdCh+MXxIZXJiaXZvcmVfUGh5bG9nZW55LCB+MXxIZXJiaXZvcmVfTGF0aW5fbmFtZSwgCiAgICAgICAgICAgICAgICAgICAgICAgfjF8U3R1ZHksIH4xfEVmZmVjdCksCiAgbWV0aG9kID0gIlJFTUwiLCAKICBkYXRhID0gZGF0CikKCgpgYGAKIyMjIyMgVGFibGUgRTE5CioqVGFibGUgRTE5OioqClRoZSB0b3AgMiBtb2RlbHMgKG91dCBvZiAxNiBwb3NzaWJsZSBtb2RlbHMpIHdpdGhpbiB0aGUgJFxEZWx0YSRBSUMgZGlmZmVyZW5jZSBvZiAyLCBhbmQgd2hpY2ggNCB2YXJpYWJsZXM6IGBQbGFudF9saWZlc3BhbmAsIGBQb2FjZWFlX29yX05vbmAsIGBIZXJiaXZvcmVfZGlldF9icmVhZHRoYCwgYW5kIGBGZWVkaW5nX2d1aWxkYCB3ZXJlIGluY2x1ZGVkIChpbmRpY2F0ZWQgYnkgJCskKTsgbW9kZWwgd2VpZ2h0cyAoZm9yIHRoZSA0IG1vZGVscykgYW5kIHRoZSBzdW0gb2Ygd2VpZ2h0cyBmb3IgZWFjaCBvZiB0aGUgdmFyaWFibGVzIChmcm9tIHRoZSAxNiBtb2RlbHMpIGFyZSBpbmNsdWRlZC4gCgpgYGB7cn0KIyBjcmVhdGluZyBhIHRhYmxlCgp0aWJibGUoCiAgYE1vZGVsICh2YXJpYWJsZSB3ZWlnaHQpYCA9IGMoIk1vZGVsMSIsICJNb2RlbDIiLCAiKFN1bSBvZiB3ZWlnaHRzKSIpLAogIEZlZWRpbmdfZ3VpbGQgPSBjKGlmX2Vsc2UoY2FuZGlkYXRlc19haWMyX2xuUlIkRmVlZGluZ19ndWlsZCA9PSAiKyIsICIkKyQiLCAiTkEiKSwgcm91bmQoaW1wb3J0YW5jZV9sblJSWzFdLCAzKSksCiAgUG9hY2VhZV9vcl9Ob24gPSBjKGlmX2Vsc2UoY2FuZGlkYXRlc19haWMyX2xuUlIkUG9hY2VhZV9vcl9Ob24gPT0gIisiLCAiJCskIiwgIk5BIiksIHJvdW5kKGltcG9ydGFuY2VfbG5SUlsyXSwgMykpLAogIEhlcmJpdm9yZV9kaWV0X2JyZWFkdGggPSBjKGlmX2Vsc2UoY2FuZGlkYXRlc19haWMyX2xuUlIkSGVyYml2b3JlX2RpZXRfYnJlYWR0aCA9PSAiKyIsICIkKyQiLCAiTkEiKSwgcm91bmQoaW1wb3J0YW5jZV9sblJSWzNdLCAzKSksCiAgUGxhbnRfbGlmZXNwYW4gPSBjKGlmX2Vsc2UoY2FuZGlkYXRlc19haWMyX2xuUlIkUGxhbnRfbGlmZXNwYW4gPT0gIisiLCAiJCskIiwgIk5BIiksIHJvdW5kKGltcG9ydGFuY2VfbG5SUls0XSwgMykpLAogIGRlbHRhX0FJQ2MgPSBjKGNhbmRpZGF0ZXNfYWljMl9sblJSJGRlbHRhLCBOQSksCiAgV2VpZ2h0ID0gYyhjYW5kaWRhdGVzX2FpYzJfbG5SUiR3ZWlnaHQsIE5BKQopICU+JQogIGthYmxlKCJodG1sIiwgZGlnaXRzID0gMykgJT4lCiAga2FibGVfc3R5bGluZygic3RyaXBlZCIsIHBvc2l0aW9uID0gImxlZnQiKSAKYGBgCgojIyMjIE1vZGVsIGF2ZXJhZ2luZzogbG5SUgojIyMjIyBUYWJsZSBFMjAKKipUYWJsZSBFMjA6KioKVGhlIGF2ZXJhZ2UgZXN0aW1hdGVzIGZvciByZWdyZXNzaW9uIGNvZWZmaWNpZW50cyAoRXN0aW1hdGUpLCA5NSUgY29uZmlkZW5jZSBpbnRlcnZhbHMgKENJcyksIGFuZCB2YXJpYW5jZSBleHBsYWluZWQsICpSKl4yXn5bbWFyZ2luYWxdfiAoUjIpIGZyb20gdGhlIDQgYmVzdCBtZXRhLXJlZ3Jlc3Npb24gbW9kZWxzLgpgYGB7cn0KIyBnZXR0aW5nIGF2ZXJhZ2VkIFIyIGFuZCB2YXJpYW5jZSBjb21wb25lbnRzIG5vdCBwcm92aWRlZCBieSB0aGUgTXVNSW4gcGFja2FnZQojYXZlcmFnZV9zaWdtYTIgPC0gd2VpZ2h0ZWQubWVhbih4ID0gYyhtb2RlbDFfbG5SUiRzaWdtYTIsIG1vZGVsMl9sblJSJHNpZ21hMiksIHcgPSBjYW5kaWRhdGVzX2FpYzJfbG5SUiR3ZWlnaHQpCmF2ZXJhZ2VfUjJfbG5SUiA8LSB3ZWlnaHRlZC5tZWFuKHggPSBjKHIyX21sKG1vZGVsMV9sblJSKVsxXSwgcjJfbWwobW9kZWwyX2xuUlIpWzFdKSwgdyA9IGNhbmRpZGF0ZXNfYWljMl9sblJSJHdlaWdodCkKIyBjcmVhdGluZyBhIHRhYmxlCnRpYmJsZSgKICBgRml4ZWQgZWZmZWN0YCA9IHJvdy5uYW1lcyhtcl9hdmVyYWdlZF9haWMyX2xuUlIkY29lZm1hdC5mdWxsKSwKICBFc3RpbWF0ZSA9IG1yX2F2ZXJhZ2VkX2FpYzJfbG5SUiRjb2VmbWF0LmZ1bGxbLCAxXSwKICBgTG93ZXIgQ0kgWzAuMDI1XWAgPSBtcl9hdmVyYWdlZF9haWMyX2xuUlIkY29lZm1hdC5mdWxsWywgMV0gLSBtcl9hdmVyYWdlZF9haWMyX2xuUlIkY29lZm1hdC5mdWxsWywgMl0gKiBxbm9ybSgwLjk3NSksCiAgYFVwcGVyIENJICBbMC45NzVdYCA9IG1yX2F2ZXJhZ2VkX2FpYzJfbG5SUiRjb2VmbWF0LmZ1bGxbLCAxXSArIG1yX2F2ZXJhZ2VkX2FpYzJfbG5SUiRjb2VmbWF0LmZ1bGxbLCAyXSAqIHFub3JtKDAuOTc1KSwKICBgUCB2YWx1ZWAgPSBhcy5udW1lcmljKG1yX2F2ZXJhZ2VkX2FpYzJfbG5SUiRjb2VmbWF0LmZ1bGxbLDRdKSwKICBgUjJgID0gYyhhdmVyYWdlX1IyX2xuUlIsIHJlcChOQSwgNykpCikgJT4lCiAga2FibGUoImh0bWwiLCBkaWdpdHMgPSAzKSAlPiUKICBrYWJsZV9zdHlsaW5nKCJzdHJpcGVkIiwgcG9zaXRpb24gPSAibGVmdCIpICU+JSBzY3JvbGxfYm94KHdpZHRoID0gIjEwMCUiLCAKICAgIGhlaWdodCA9ICIzMDBweCIpCmBgYAoKCiMjIyMgTW9kZWwgc2VsZWN0aW9uOiBsblZSCgpgYGB7cn0KIyBtYWtpbmcgbWV0YWZvciB0YWxrIHRvIE11TUluCmV2YWwobWV0YWZvcjo6Oi5NdU1JbikKIyB1c2UgbWV0aG9kID0gIk1MIiBzbyB0aGF0IHdlIGNhbiBjb21wYXJlIEFJQwptcl9mdWxsX2xuVlIgPC0gcm1hLm12KAogIHlpID0gbG5WUiwKICBWID0gVkNWX2xuVlIsCiAgbW9kcyA9IH4gUGxhbnRfbGlmZXNwYW4gKwogICAgUG9hY2VhZV9vcl9Ob24gKwogICAgSGVyYml2b3JlX2RpZXRfYnJlYWR0aCArCiAgICBGZWVkaW5nX2d1aWxkLAogIHRlc3QgPSAidCIsCiAgcmFuZG9tID0gbGlzdCh+MXxIZXJiaXZvcmVfUGh5bG9nZW55LCB+MXxIZXJiaXZvcmVfTGF0aW5fbmFtZSwgCiAgICAgICAgICAgICAgICAgICAgICAgfjF8U3R1ZHksIH4xfEVmZmVjdCksCiAgbWV0aG9kID0gIk1MIiwgIyBmb3IgbW9kZWwgc2VsZWN0aW9uCiAgZGF0YSA9IGRhdAopCiMgY2FsbGluZyByZXF1aXJlZCBmdW5jdGlvbnMKI2dldENhbGwobXJfZnVsbF9sblZSKQojIGRyZWRnZShmdWxsLm1vZGVsLCBldmFsdWF0ZT1GKSAjIHNob3cgYWxsIGNhbmRpZGF0ZSBtb2RlbHMKIyBuID0gMzIgbW9kZWwgZXhpc3QKY2FuZGlkYXRlc19sblZSIDwtIGRyZWRnZShtcl9mdWxsX2xuVlIsIHRyYWNlID0gMikKc2F2ZVJEUyhjYW5kaWRhdGVzX2xuVlIsIGZpbGUgPSBoZXJlKCJSZGF0YSIsICJjYW5kaWRhdGVzX2xuVlIucmRzIikpCmBgYAoKYGBge3J9CiMgbWFraW5nIG1ldGFmb3IgdGFsayB0byBNdU1JbgpldmFsKG1ldGFmb3I6OjouTXVNSW4pCmNhbmRpZGF0ZXNfbG5WUiA8LSByZWFkUkRTKGZpbGUgPSBoZXJlKCJSZGF0YSIsICJjYW5kaWRhdGVzX2xuVlIucmRzIikpCiMgZGlzcGxheXMgZGVsdGEgQUlDYyA8MgpjYW5kaWRhdGVzX2FpYzJfbG5WUiA8LSBzdWJzZXQoY2FuZGlkYXRlc19sblZSLCBkZWx0YSA8IDIpIAojIG1vZGVsIGF2ZXJhZ2luZwojIGl0IHNlZW1zIGxpa2UgbW9kZWxzIGFyZSB1c2luZyB6IHZhbHVlcyByYXRoZXIgdGhhbiB0IHZhbHVlcyAod2hpY2ggd2lsbCBiZSBPSykKbXJfYXZlcmFnZWRfYWljMl9sblZSIDwtIHN1bW1hcnkobW9kZWwuYXZnKGNhbmRpZGF0ZXNfbG5WUiwgZGVsdGEgPCAyKSkgCgojIHJlbGF0aXZlIGltcG9ydGFuY2Ugb2YgZWFjaCBwcmVkaWN0b3IKaW1wb3J0YW5jZV9sblZSIDwtIHN3KGNhbmRpZGF0ZXNfbG5WUikKIyB1c2UgUkVNTCBpZiBub3QgZm9yIG1vZGVsIGNvbXBhcmlzb24KbW9kZWwxX2xuVlIgPC0gcm1hLm12KAogIHlpID0gbG5WUiwKICBWID0gVkNWX2xuVlIsIAogICNtb2RzID0gfiAxLAogIHRlc3QgPSAidCIsCiAgcmFuZG9tID0gbGlzdCh+MXxIZXJiaXZvcmVfUGh5bG9nZW55LCB+MXxIZXJiaXZvcmVfTGF0aW5fbmFtZSwgCiAgICAgICAgICAgICAgICAgICAgICAgfjF8U3R1ZHksIH4xfEVmZmVjdCksCiAgbWV0aG9kID0gIlJFTUwiLCAKICBkYXRhID0gZGF0CikKbW9kZWwyX2xuVlIgPC0gcm1hLm12KAogIHlpID0gbG5WUiwKICBWID0gVkNWX2xuVlIsIAogIG1vZHMgPSB+IFBvYWNlYWVfb3JfTm9uLCAKICB0ZXN0ID0gInQiLAogIHJhbmRvbSA9IGxpc3QofjF8SGVyYml2b3JlX1BoeWxvZ2VueSwgfjF8SGVyYml2b3JlX0xhdGluX25hbWUsIAogICAgICAgICAgICAgICAgICAgICAgIH4xfFN0dWR5LCB+MXxFZmZlY3QpLAogIG1ldGhvZCA9ICJSRU1MIiwgCiAgZGF0YSA9IGRhdAopCm1vZGVsM19sblZSIDwtIHJtYS5tdigKICB5aSA9IGxuVlIsCiAgViA9IFZDVl9sblZSLCAKICBtb2RzID0gfiBQbGFudF9saWZlc3BhbiwKICB0ZXN0ID0gInQiLAogIHJhbmRvbSA9IGxpc3QofjF8SGVyYml2b3JlX1BoeWxvZ2VueSwgfjF8SGVyYml2b3JlX0xhdGluX25hbWUsIAogICAgICAgICAgICAgICAgICAgICAgIH4xfFN0dWR5LCB+MXxFZmZlY3QpLAogIG1ldGhvZCA9ICJSRU1MIiwgCiAgZGF0YSA9IGRhdAopCm1vZGVsNF9sblZSIDwtIHJtYS5tdigKICB5aSA9IGxuVlIsCiAgViA9IFZDVl9sblZSLCAKICBtb2RzID0gfiBIZXJiaXZvcmVfZGlldF9icmVhZHRoICsgUG9hY2VhZV9vcl9Ob24sCiAgdGVzdCA9ICJ0IiwKICByYW5kb20gPSBsaXN0KH4xfEhlcmJpdm9yZV9QaHlsb2dlbnksIH4xfEhlcmJpdm9yZV9MYXRpbl9uYW1lLCAKICAgICAgICAgICAgICAgICAgICAgICB+MXxTdHVkeSwgfjF8RWZmZWN0KSwKICBtZXRob2QgPSAiUkVNTCIsIAogIGRhdGEgPSBkYXQKKQptb2RlbDVfbG5WUiA8LSBybWEubXYoCiAgeWkgPSBsblZSLAogIFYgPSBWQ1ZfbG5WUiwgCiAgbW9kcyA9IH4gUGxhbnRfbGlmZXNwYW4gKyBQb2FjZWFlX29yX05vbiwKICB0ZXN0ID0gInQiLAogIHJhbmRvbSA9IGxpc3QofjF8SGVyYml2b3JlX1BoeWxvZ2VueSwgfjF8SGVyYml2b3JlX0xhdGluX25hbWUsIAogICAgICAgICAgICAgICAgICAgICAgIH4xfFN0dWR5LCB+MXxFZmZlY3QpLAogIG1ldGhvZCA9ICJSRU1MIiwgCiAgZGF0YSA9IGRhdAopCm1vZGVsNl9sblZSIDwtIHJtYS5tdigKICB5aSA9IGxuVlIsCiAgViA9IFZDVl9sblZSLCAKICBtb2RzID0gfiBIZXJiaXZvcmVfZGlldF9icmVhZHRoLAogIHRlc3QgPSAidCIsCiAgcmFuZG9tID0gbGlzdCh+MXxIZXJiaXZvcmVfUGh5bG9nZW55LCB+MXxIZXJiaXZvcmVfTGF0aW5fbmFtZSwgCiAgICAgICAgICAgICAgICAgICAgICAgfjF8U3R1ZHksIH4xfEVmZmVjdCksCiAgbWV0aG9kID0gIlJFTUwiLCAKICBkYXRhID0gZGF0CikKYGBgCiMjIyMjIFRhYmxlIEUyMQoqKlRhYmxlIEUyMToqKgpUaGUgdG9wIDYgbW9kZWxzIChvdXQgb2YgMTYgcG9zc2libGUgbW9kZWxzKSB3aXRoaW4gdGhlICRcRGVsdGEkQUlDIGRpZmZlcmVuY2Ugb2YgMiwgYW5kIHdoaWNoIDQgdmFyaWFibGVzOiBgUGxhbnRfbGlmZXNwYW5gLCBgUG9hY2VhZV9vcl9Ob25gLCBgSGVyYml2b3JlX2RpZXRfYnJlYWR0aGAsIGFuZCBgRmVlZGluZ19ndWlsZGAgd2VyZSBpbmNsdWRlZCAoaW5kaWNhdGVkIGJ5ICQrJCk7IG1vZGVsIHdlaWdodHMgKGZvciB0aGUgNSBtb2RlbHMpIGFuZCB0aGUgc3VtIG9mIHdlaWdodHMgZm9yIGVhY2ggb2YgdGhlIHZhcmlhYmxlcyAoZnJvbSB0aGUgMTYgbW9kZWxzKSBhcmUgaW5jbHVkZWQuIAoKYGBge3J9CiMgY3JlYXRpbmcgYSB0YWJsZQp0aWJibGUoCiAgYE1vZGVsICh2YXJpYWJsZSB3ZWlnaHQpYCA9IGMoIk1vZGVsMSIsICJNb2RlbDIiLCAiTW9kZWwzIiwgIk1vZGVsNCIsICJNb2RlbDUiLCAiTW9kZWw2IiwgIihTdW0gb2Ygd2VpZ2h0cykiKSwKICBQb2FjZWFlX29yX05vbiA9IGMoaWZfZWxzZShjYW5kaWRhdGVzX2FpYzJfbG5WUiRQb2FjZWFlX29yX05vbiA9PSAiKyIsICIkKyQiLCAiTkEiKSwgcm91bmQoaW1wb3J0YW5jZV9sblZSWzFdLCAzKSksCiAgUGxhbnRfbGlmZXNwYW4gPSBjKGlmX2Vsc2UoY2FuZGlkYXRlc19haWMyX2xuVlIkUGxhbnRfbGlmZXNwYW4gPT0gIisiLCAiJCskIiwgIk5BIiksIHJvdW5kKGltcG9ydGFuY2VfbG5WUlsyXSwgMykpLAogIEhlcmJpdm9yZV9kaWV0X2JyZWFkdGggPSBjKGlmX2Vsc2UoY2FuZGlkYXRlc19haWMyX2xuVlIkSGVyYml2b3JlX2RpZXRfYnJlYWR0aCA9PSAiKyIsICIkKyQiLCAiTkEiKSwgcm91bmQoaW1wb3J0YW5jZV9sblZSWzNdLCAzKSksCiAgRmVlZGluZ19ndWlsZCA9IGMoaWZfZWxzZShjYW5kaWRhdGVzX2FpYzJfbG5WUiRGZWVkaW5nX2d1aWxkID09ICIrIiwgIiQrJCIsICJOQSIpLCByb3VuZChpbXBvcnRhbmNlX2xuVlJbNF0sIDMpKSwKICBkZWx0YV9BSUNjID0gYyhjYW5kaWRhdGVzX2FpYzJfbG5WUiRkZWx0YSwgTkEpLAogIFdlaWdodCA9IGMoY2FuZGlkYXRlc19haWMyX2xuVlIkd2VpZ2h0LCBOQSkKKSAlPiUKICBrYWJsZSgiaHRtbCIsIGRpZ2l0cyA9IDMpICU+JQogIGthYmxlX3N0eWxpbmcoInN0cmlwZWQiLCBwb3NpdGlvbiA9ICJsZWZ0IikgCmBgYAoKIyMjIyBNb2RlbCBhdmVyYWdpbmc6IGxuVlIKIyMjIyMgVGFibGUgRTIyCioqVGFibGUgRTIyOioqClRoZSBhdmVyYWdlIGVzdGltYXRlcyBmb3IgcmVncmVzc2lvbiBjb2VmZmljaWVudHMgKEVzdGltYXRlKSwgOTUlIGNvbmZpZGVuY2UgaW50ZXJ2YWxzIChDSXMpLCBhbmQgdmFyaWFuY2UgZXhwbGFpbmVkLCAqUipeMl5+W21hcmdpbmFsXX4gKFIyKSBmcm9tIHRoZSA0IGJlc3QgbWV0YS1yZWdyZXNzaW9uIG1vZGVscy4KYGBge3J9CiMgZ2V0dGluZyBhdmVyYWdlZCBSMiBhbmQgdmFyaWFuY2UgY29tcG9uZW50cyBub3QgcHJvdmlkZWQgYnkgdGhlIE11TUluIHBhY2thZ2UKI2F2ZXJhZ2Vfc2lnbWEyIDwtIHdlaWdodGVkLm1lYW4oeCA9IGMobW9kZWwxX2xuVlIkc2lnbWEyLCBtb2RlbDJfbG5WUiRzaWdtYTIpLCB3ID0gY2FuZGlkYXRlc19haWMyX2xuVlIkd2VpZ2h0KQphdmVyYWdlX1IyX2xuVlIgPC0gd2VpZ2h0ZWQubWVhbih4ID0gYyhyMl9tbChtb2RlbDFfbG5WUilbMV0sIHIyX21sKG1vZGVsMl9sblZSKVsxXSwgcjJfbWwobW9kZWwzX2xuVlIpWzFdLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcjJfbWwobW9kZWw0X2xuVlIpWzFdLCAgcjJfbWwobW9kZWw1X2xuVlIpWzFdLCAgcjJfbWwobW9kZWw2X2xuVlIpWzFdKSwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHcgPSBjYW5kaWRhdGVzX2FpYzJfbG5WUiR3ZWlnaHQpCiMgY3JlYXRpbmcgYSB0YWJsZQp0aWJibGUoCiAgYEZpeGVkIGVmZmVjdGAgPSByb3cubmFtZXMobXJfYXZlcmFnZWRfYWljMl9sblZSJGNvZWZtYXQuZnVsbCksCiAgRXN0aW1hdGUgPSBtcl9hdmVyYWdlZF9haWMyX2xuVlIkY29lZm1hdC5mdWxsWywgMV0sCiAgYExvd2VyIENJIFswLjAyNV1gID0gbXJfYXZlcmFnZWRfYWljMl9sblZSJGNvZWZtYXQuZnVsbFssIDFdIC0gbXJfYXZlcmFnZWRfYWljMl9sblZSJGNvZWZtYXQuZnVsbFssIDJdICogcW5vcm0oMC45NzUpLAogIGBVcHBlciBDSSAgWzAuOTc1XWAgPSBtcl9hdmVyYWdlZF9haWMyX2xuVlIkY29lZm1hdC5mdWxsWywgMV0gKyBtcl9hdmVyYWdlZF9haWMyX2xuVlIkY29lZm1hdC5mdWxsWywgMl0gKiBxbm9ybSgwLjk3NSksCiAgYFAgdmFsdWVgID0gYXMubnVtZXJpYyhtcl9hdmVyYWdlZF9haWMyX2xuVlIkY29lZm1hdC5mdWxsWyw0XSksCiAgYFIyYCA9IGMoYXZlcmFnZV9SMl9sblZSLCByZXAoTkEsIDMpKQopICU+JQogIGthYmxlKCJodG1sIiwgZGlnaXRzID0gMykgJT4lCiAga2FibGVfc3R5bGluZygic3RyaXBlZCIsIHBvc2l0aW9uID0gImxlZnQiKSAlPiUgc2Nyb2xsX2JveCh3aWR0aCA9ICIxMDAlIikKYGBgCgoKIyMgUHVibGljYXRpb24gQmlhcyBBbmFseXNpcwogCiMjIyBGdW5uZWwgcGxvdAoKIyMjIyBSZXNpZHVhbCBmdW5uZWwgcGxvdDogbG5SUgogCiMjIyMjIEZpZ3VyZSBFNwoKYGBge3IsfQojCnJlc19mdW5uZWxfcGxvdF9sblJSIDwtIHJtYS5tdigKICB5aSA9IGxuUlIsCiAgViA9IFZDVl9sblJSLCAKICBtb2RzID0gfiBQb2FjZWFlX29yX05vbiArCiAgICBGZWVkaW5nX2d1aWxkLAogIHRlc3QgPSAidCIsCiAgcmFuZG9tID0gbGlzdCh+MXxIZXJiaXZvcmVfUGh5bG9nZW55LCB+MXxIZXJiaXZvcmVfTGF0aW5fbmFtZSwgCiAgICAgICAgICAgICAgICAgICAgICAgfjF8U3R1ZHksIH4xfEVmZmVjdCksCiAgbWV0aG9kID0gIlJFTUwiLCAKICBkYXRhID0gZGF0CikKZnVubmVsKHJlc19mdW5uZWxfcGxvdF9sblJSLCAKICAgICAgIHlheGlzID0gInNlaW52IiwgCiAgICAgICBsZXZlbCA9IGMoOTAsIDk1LCA5OSksIAogICAgICAgc2hhZGUgPSBjKCJ3aGl0ZSIsICJncmF5NTUiLCAiZ3JheTc1IiksIAogICAgICAgcmVmbGluZSA9IDAsIGxlZ2VuZCA9IFRSVUUpCmBgYAoKKipGaWd1cmUgRTc6KiogQSByZXNpZHVhbCBmdW5uZWwgcGxvdCBmcm9tIHRoZSBtZXRhLXJlZ3Jlc3Npb24gbW9kZWwgd2l0aCBgUGxhbnRfbGlmZXNwYW5gLCBgUG9hY2VhZV9vcl9Ob25gLCAmIGBGZWVkaW5nX2d1aWxkYDsgJ3Jlc2lkdWFsIHZhbHVlJyBpcyBvbiBsblJSIGFuZCAnaW52ZXJzZSBzdGFuZGFyZCBlcnJvcicgaXMgcHJlY2lzaW9uIGAxL3NxcnQodmFybG5SUilgLgoKIyMjIEVnZ2VyIHJlZ3Jlc3Npb24KCgojIyMjIFVuaXZhcmlhdGUgRWdnZXIgcmVncmVzc2lvbjogbG5SUgoKCmBgYHtyfQojCiMgdGhlIHVzZSBvZiBlZmZlY3RpdmUgc2FtcGxpbmcgc2l6ZSAtIG1vcmUgdGhhbiB2YXJsblJSCiMgIGVmZmVjdGl2ZSBzYW1wbGUgc2l6ZQpkYXQkRWZmZWN0aXZlX04gPC0gMS9kYXQkTmMgKyAxL2RhdCROZQoKCmVnZ2VyX3JlZ3Jlc3Npb25fdW5pX2xuUlIgPC0gcm1hLm12KAogIHlpID0gbG5SUiwKICBWID0gVkNWX2xuUlIsIAogIG1vZHMgPSB+IHNxcnQoRWZmZWN0aXZlX04pLAogIHRlc3QgPSAidCIsCiAgcmFuZG9tID0gbGlzdCh+MXxIZXJiaXZvcmVfUGh5bG9nZW55LCB+MXxIZXJiaXZvcmVfTGF0aW5fbmFtZSwgCiAgICAgICAgICAgICAgICAgICAgICAgfjF8U3R1ZHksIH4xfEVmZmVjdCksCiAgbWV0aG9kID0gIlJFTUwiLCAKICBkYXRhID0gZGF0CikKYGBgCiMjIyMjIFRhYmxlIEUyMwoqKlRhYmxlIEUyMzoqKgpSZWdyZXNzaW9uIGNvZWZmaWNpZW50cyAoRXN0aW1hdGUpLCA5NSUgY29uZmlkZW5jZSBpbnRlcnZhbHMgKENJcyksIFAgdmFsdWVzLCB2YXJpYW5jZSBleHBsYWluZWQsICpSKl4yXn5bbWFyZ2luYWxdfiAoUjIpIGZyb20gdGhlIG1ldGEtcmVncmVzc2lvbiB3aXRoIGBzcXJ0KEVmZmVjdGl2ZV9OKWAuIAoKYGBge3J9CiMgZ2V0dGluZyBtYXJnaW5hbCBSMgpyMl9lZ2dlcl9yZWdyZXNzaW9uX3VuaV9sblJSIDwtIHIyX21sKGVnZ2VyX3JlZ3Jlc3Npb25fdW5pX2xuUlIpCiMgZ2V0dGluZyBlc3RpbWF0ZXM6IG5hbWUgZG9lcyBub3Qgd29yayBmb3Igc2xvcGVzCgpyZXNfZWdnZXJfcmVncmVzc2lvbl91bmlfbG5SUiA8LSBnZXRfcHJlZDIoZWdnZXJfcmVncmVzc2lvbl91bmlfbG5SUiwgbW9kID0gInNxcnQodmFybG5SUikiKQojIGNyZWF0aW5nIGEgdGFibGUKdGliYmxlKAogIGBGaXhlZCBlZmZlY3RgID0gcm93Lm5hbWVzKGVnZ2VyX3JlZ3Jlc3Npb25fdW5pX2xuUlIkYmV0YSksCiAgRXN0aW1hdGUgPSBjKHJlc19lZ2dlcl9yZWdyZXNzaW9uX3VuaV9sblJSJGVzdGltYXRlKSwKICBgTG93ZXIgQ0kgWzAuMDI1XWAgPSBjKHJlc19lZ2dlcl9yZWdyZXNzaW9uX3VuaV9sblJSJGxvd2VyQ0wpLAogIGBVcHBlciBDSSAgWzAuOTc1XWAgPSBjKHJlc19lZ2dlcl9yZWdyZXNzaW9uX3VuaV9sblJSJHVwcGVyQ0wpLAogIGBQIHZhbHVlYCA9IGMoZWdnZXJfcmVncmVzc2lvbl91bmlfbG5SUiRwdmFsKSwKICBgUjJgID0gYyhyMl9lZ2dlcl9yZWdyZXNzaW9uX3VuaV9sblJSWzFdLCBOQSkKKSAlPiUKICBrYWJsZSgiaHRtbCIsIGRpZ2l0cyA9IDMpICU+JQogIGthYmxlX3N0eWxpbmcoInN0cmlwZWQiLCBwb3NpdGlvbiA9ICJsZWZ0IikKYGBgCgojIyMjIyBGaWd1cmUgRTgKCmBgYHtyLCBmaWcud2lkdGg9NywgZmlnLmhlaWdodD0gNH0KcHJlZF9lZ2dlcl9yZWdyZXNzaW9uX3VuaV9sblJSIDwtIHByZWRpY3Qucm1hKGVnZ2VyX3JlZ3Jlc3Npb25fdW5pX2xuUlIpCiMgcGxvdHRpbmcKZml0X2VnZ2VyX3JlZ3Jlc3Npb25fdW5pX2xuUlIgPC0gZGF0ICU+JQogIG11dGF0ZSgKICAgIHltaW4gPSBwcmVkX2VnZ2VyX3JlZ3Jlc3Npb25fdW5pX2xuUlIkY2kubGIsCiAgICB5bWF4ID0gcHJlZF9lZ2dlcl9yZWdyZXNzaW9uX3VuaV9sblJSJGNpLnViLAogICAgeW1pbjIgPSBwcmVkX2VnZ2VyX3JlZ3Jlc3Npb25fdW5pX2xuUlIkY3IubGIsCiAgICB5bWF4MiA9IHByZWRfZWdnZXJfcmVncmVzc2lvbl91bmlfbG5SUiRjci51YiwKICAgIHByZWQgPSBwcmVkX2VnZ2VyX3JlZ3Jlc3Npb25fdW5pX2xuUlIkcHJlZAogICkgJT4lCiAgZ2dwbG90KGFlcyh4ID0gc3FydCh2YXJsblJSKSwgeSA9IGxuUlIsIHNpemUgPSBzcXJ0KDEvdmFybG5SUikpKSArCiAgZ2VvbV9wb2ludChzaGFwZSA9IDIxLCBmaWxsID0gImdyZXk5MCIpICsKICAjIGdlb21fcmliYm9uKGFlcyh5bWluID0geW1pbiwgeW1heCA9IHltYXgpLCBmaWxsID0gIiMwMDcyQjIiKSAgKyAjIG5vdCBxdWl0ZSBzdXJlIHdoeSB0aGlzIGRvZXMgbm90IHdvcmsKICBnZW9tX3Ntb290aChhZXMoeSA9IHltaW4yKSwgbWV0aG9kID0gImxvZXNzIiwgc2UgPSBGQUxTRSwgbHR5ID0gImRvdHRlZCIsIGx3ZCA9IDAuMjUsIGNvbG91ciA9ICIjMDA3MkIyIikgKwogIGdlb21fc21vb3RoKGFlcyh5ID0geW1heDIpLCBtZXRob2QgPSAibG9lc3MiLCBzZSA9IEZBTFNFLCBsdHkgPSAiZG90dGVkIiwgbHdkID0gMC4yNSwgY29sb3VyID0gIiMwMDcyQjIiKSArCiAgZ2VvbV9zbW9vdGgoYWVzKHkgPSB5bWluKSwgbWV0aG9kID0gImxvZXNzIiwgc2UgPSBGQUxTRSwgbHR5ID0gImRvdHRlZCIsIGx3ZCA9IDAuMjUsIGNvbG91ciA9ICIjRDU1RTAwIikgKwogIGdlb21fc21vb3RoKGFlcyh5ID0geW1heCksIG1ldGhvZCA9ICJsb2VzcyIsIHNlID0gRkFMU0UsIGx0eSA9ICJkb3R0ZWQiLCBsd2QgPSAwLjI1LCBjb2xvdXIgPSAiI0Q1NUUwMCIpICsKICBnZW9tX3Ntb290aChhZXMoeSA9IHByZWQpLCBtZXRob2QgPSAibG9lc3MiLCBzZSA9IEZBTFNFLCBsdHkgPSAiZGFzaGVkIiwgbHdkID0gMC41LCBjb2xvdXIgPSAiYmxhY2siKSArCiAgeWxpbSgtNSwgMykgKyB4bGltKDAuMDUsIDcpICsKICBsYWJzKHggPSAic3FydChlZmZlY3RpdmUgc2FtcGxlIHNpemUpIiwgeSA9ICJsblJSIChlZmZlY3Qgc2l6ZSkiLCBzaXplID0gIlByZWNpc2lvbiAoMS9TRSkiKSArCiAgZ3VpZGVzKGZpbGwgPSAibm9uZSIsIGNvbG91ciA9ICJub25lIikgKwogICMgdGhlbWVzCiAgdGhlbWVfYncoKSArCiAgdGhlbWUobGVnZW5kLnBvc2l0aW9uID0gYygwLCAxKSwgbGVnZW5kLmp1c3RpZmljYXRpb24gPSBjKDAsIDEpKSArCiAgdGhlbWUobGVnZW5kLmRpcmVjdGlvbiA9ICJob3Jpem9udGFsIikgKwogICMgdGhlbWUobGVnZW5kLmJhY2tncm91bmQgPSBlbGVtZW50X3JlY3QoZmlsbCA9ICJ3aGl0ZSIsIGNvbG91ciA9ICJibGFjayIpKSArCiAgdGhlbWUobGVnZW5kLmJhY2tncm91bmQgPSBlbGVtZW50X2JsYW5rKCkpICsKICB0aGVtZShheGlzLnRleHQueSA9IGVsZW1lbnRfdGV4dChzaXplID0gMTAsIGNvbG91ciA9ICJibGFjayIsIGhqdXN0ID0gMC41LCBhbmdsZSA9IDkwKSkKZml0X2VnZ2VyX3JlZ3Jlc3Npb25fdW5pX2xuUlIKYGBgCgoqKkZpZ3VyZSBFODoqKgpBIGJ1YmJsZSBwbG90IHNob3dpbmcgYSBwcmVkaWN0ZWQgcmVncmVzc2lvbiBsaW5lIGZvciB0aGUgY29udGVudGlvdXMgdmFyaWFibGUgYHNxcnQoRWZmZWN0aXZlX04pYCwgaW5kaWNhdGluZyA5NSUgY29uZmlkZW5jZSByZWdpb25zIChvcmFuZ2UgZG90dGVkIGxpbmVzKSBhbmQgOTUlIHByZWRpY3Rpb24gcmVnaW9ucyAoYmx1ZSBkb3R0ZWQgbGluZXMpLCB3aXRoIG9ic2VydmVkIGVmZmVjdCBzaXplcyBiYXNlZCBvbiB2YXJpb3VzIHNhbXBsZSBzaXplcy4gCgoKIyMjIyBNdWx0aXZhcmlhdGUgRWdnZXIgcmVncmVzc2lvbjogbG5SUgoKCmBgYHtyfQojCmVnZ2VyX3JlZ3Jlc3Npb25fbXVsX2xuUlIgPC0gcm1hLm12KAogIHlpID0gbG5SUiwKICBWID0gVkNWX2xuUlIsIAogIG1vZHMgPSB+IHNxcnQoRWZmZWN0aXZlX04pICsKICAgIFBvYWNlYWVfb3JfTm9uICsKICAgIEZlZWRpbmdfZ3VpbGQsCiAgdGVzdCA9ICJ0IiwKICByYW5kb20gPSBsaXN0KH4xfEhlcmJpdm9yZV9QaHlsb2dlbnksIH4xfEhlcmJpdm9yZV9MYXRpbl9uYW1lLCAKICAgICAgICAgICAgICAgICAgICAgICB+MXxTdHVkeSwgfjF8RWZmZWN0KSwKICBtZXRob2QgPSAiUkVNTCIsIAogIGRhdGEgPSBkYXQKKQpgYGAKCiMjIyMjIFRhYmxlIEUyNAoqKlRhYmxlIEUyNDoqKgpSZWdyZXNzaW9uIGNvZWZmaWNpZW50cyAoRXN0aW1hdGUpLCA5NSUgY29uZmlkZW5jZSBpbnRlcnZhbHMgKENJcyksIGFuZCB2YXJpYW5jZSBleHBsYWluZWQsICpSKl4yXn5bbWFyZ2luYWxdfiAoUjIpIGZyb20gdGhlIG1ldGEtcmVncmVzc2lvbiB3aXRoIGBzcXJ0KEVmZmVjdGl2ZV9OKWAsIGBQb2FjZWFlX29yX05vbmAsICYgYEZlZWRpbmdfZ3VpbGRgLiAKCmBgYHtyfQojIGdldHRpbmcgbWFyZ2luYWwgUjIKcjJfZWdnZXJfcmVncmVzc2lvbl9tdWxfbG5SUiA8LSByMl9tbChlZ2dlcl9yZWdyZXNzaW9uX211bF9sblJSKQojIGNyZWF0aW5nIGEgdGFibGUKdGliYmxlKAogIGBGaXhlZCBlZmZlY3RgID0gcm93Lm5hbWVzKGVnZ2VyX3JlZ3Jlc3Npb25fbXVsX2xuUlIkYmV0YSksCiAgRXN0aW1hdGUgPSBjKGVnZ2VyX3JlZ3Jlc3Npb25fbXVsX2xuUlIkYiksCiAgYExvd2VyIENJIFswLjAyNV1gID0gYyhlZ2dlcl9yZWdyZXNzaW9uX211bF9sblJSJGNpLmxiKSwKICBgVXBwZXIgQ0kgIFswLjk3NV1gID0gYyhlZ2dlcl9yZWdyZXNzaW9uX211bF9sblJSJGNpLnViKSwKICBgUCB2YWx1ZWAgPSBjKGVnZ2VyX3JlZ3Jlc3Npb25fbXVsX2xuUlIkcHZhbCksCiAgYFIyYCA9IGMocjJfZWdnZXJfcmVncmVzc2lvbl9tdWxfbG5SUlsxXSwgcmVwKE5BLCA4KSkKKSAlPiUKICBrYWJsZSgiaHRtbCIsIGRpZ2l0cyA9IDMpICU+JQogIGthYmxlX3N0eWxpbmcoInN0cmlwZWQiLCBwb3NpdGlvbiA9ICJsZWZ0IikgJT4lIHNjcm9sbF9ib3god2lkdGggPSAiMTAwJSIsIAogICAgaGVpZ2h0ID0gIjMwMHB4IikKYGBgCgoKIyMjIyMgRmlndXJlIEU5CmBgYHtyLCBmaWcud2lkdGg9NywgZmlnLmhlaWdodD0gNH0KcHJlZF9lZ2dlcl9yZWdyZXNzX211bF9sblJSIDwtIHByZWRpY3Qucm1hKGVnZ2VyX3JlZ3Jlc3Npb25fbXVsX2xuUlIpCiMgcGxvdHRpbmcKZml0X2VnZ2VyX3JlZ3Jlc3Npb25fbXVsX2xuUlIgPC0gZGF0ICU+JSBmaWx0ZXIoIWlzLm5hKFBsYW50X2xpZmVzcGFuKSkgJT4lIAogIG11dGF0ZSgKICAgIHltaW4gPSBwcmVkX2VnZ2VyX3JlZ3Jlc3NfbXVsX2xuUlIkY2kubGIsCiAgICB5bWF4ID0gcHJlZF9lZ2dlcl9yZWdyZXNzX211bF9sblJSJGNpLnViLAogICAgeW1pbjIgPSBwcmVkX2VnZ2VyX3JlZ3Jlc3NfbXVsX2xuUlIkY3IubGIsCiAgICB5bWF4MiA9IHByZWRfZWdnZXJfcmVncmVzc19tdWxfbG5SUiRjci51YiwKICAgIHByZWQgPSBwcmVkX2VnZ2VyX3JlZ3Jlc3NfbXVsX2xuUlIkcHJlZAogICkgJT4lCiAgZ2dwbG90KGFlcyh4ID0gc3FydCh2YXJsblJSKSwgeSA9IGxuUlIsIHNpemUgPSBzcXJ0KDEvdmFybG5SUikpKSArCiAgZ2VvbV9wb2ludChzaGFwZSA9IDIxLCBmaWxsID0gImdyZXk5MCIpICsKICAjIGdlb21fcmliYm9uKGFlcyh5bWluID0geW1pbiwgeW1heCA9IHltYXgpLCBmaWxsID0gIiMwMDcyQjIiKSAgKyAjIG5vdCBxdWl0ZSBzdXJlIHdoeSB0aGlzIGRvZXMgbm90IHdvcmsKICBnZW9tX3Ntb290aChhZXMoeSA9IHltaW4yKSwgbWV0aG9kID0gImxvZXNzIiwgc2UgPSBGQUxTRSwgbHR5ID0gImRvdHRlZCIsIGx3ZCA9IDAuMjUsIGNvbG91ciA9ICIjMDA3MkIyIikgKwogIGdlb21fc21vb3RoKGFlcyh5ID0geW1heDIpLCBtZXRob2QgPSAibG9lc3MiLCBzZSA9IEZBTFNFLCBsdHkgPSAiZG90dGVkIiwgbHdkID0gMC4yNSwgY29sb3VyID0gIiMwMDcyQjIiKSArCiAgZ2VvbV9zbW9vdGgoYWVzKHkgPSB5bWluKSwgbWV0aG9kID0gImxvZXNzIiwgc2UgPSBGQUxTRSwgbHR5ID0gImRvdHRlZCIsIGx3ZCA9IDAuMjUsIGNvbG91ciA9ICIjRDU1RTAwIikgKwogIGdlb21fc21vb3RoKGFlcyh5ID0geW1heCksIG1ldGhvZCA9ICJsb2VzcyIsIHNlID0gRkFMU0UsIGx0eSA9ICJkb3R0ZWQiLCBsd2QgPSAwLjI1LCBjb2xvdXIgPSAiI0Q1NUUwMCIpICsKICBnZW9tX3Ntb290aChhZXMoeSA9IHByZWQpLCBtZXRob2QgPSAibG9lc3MiLCBzZSA9IEZBTFNFLCBsdHkgPSAiZGFzaGVkIiwgbHdkID0gMC41LCBjb2xvdXIgPSAiYmxhY2siKSArCiAgeWxpbSgtNSwgMykgKyB4bGltKDAuMDUsIDcpICsKICBsYWJzKHggPSAic3FydChlZmZlY3RpdmUgc2FtcGxlIHNpemUpIiwgeSA9ICJsblJSIChlZmZlY3Qgc2l6ZSkiLCBzaXplID0gIlByZWNpc2lvbiAoMS9TRSkiKSArCiAgZ3VpZGVzKGZpbGwgPSAibm9uZSIsIGNvbG91ciA9ICJub25lIikgKwogICMgdGhlbWVzCiAgdGhlbWVfYncoKSArCiAgdGhlbWUobGVnZW5kLnBvc2l0aW9uID0gYygwLCAxKSwgbGVnZW5kLmp1c3RpZmljYXRpb24gPSBjKDAsIDEpKSArCiAgdGhlbWUobGVnZW5kLmRpcmVjdGlvbiA9ICJob3Jpem9udGFsIikgKwogICMgdGhlbWUobGVnZW5kLmJhY2tncm91bmQgPSBlbGVtZW50X3JlY3QoZmlsbCA9ICJ3aGl0ZSIsIGNvbG91ciA9ICJibGFjayIpKSArCiAgdGhlbWUobGVnZW5kLmJhY2tncm91bmQgPSBlbGVtZW50X2JsYW5rKCkpICsKICB0aGVtZShheGlzLnRleHQueSA9IGVsZW1lbnRfdGV4dChzaXplID0gMTAsIGNvbG91ciA9ICJibGFjayIsIGhqdXN0ID0gMC41LCBhbmdsZSA9IDkwKSkKZml0X2VnZ2VyX3JlZ3Jlc3Npb25fbXVsX2xuUlIKYGBgCgoqKkZpZ3VyZSBFOToqKgpBIGJ1YmJsZSBwbG90IHNob3dpbmcgYSBwcmVkaWN0ZWQgbG9lc3MgbGluZSBmb3IgdGhlIGNvbnRlbnRpb3VzIHZhcmlhYmxlIGBzcXJ0KEVmZmVjdGl2ZV9OKWAgKGdpdmVuIHRoZSB2YWx1ZXMgb2YgdGhlIG90aGVyIDMgdmFyaWFibGVzIGluIHRoZSBtb2RlbCksIHdpdGggdGhlaXIgOTUlIGNvbmZpZGVuY2UgcmVnaW9ucyAob3JhbmdlIGRvdHRlZCBsaW5lcykgYW5kIDk1JSBwcmVkaWN0aW9uIHJlZ2lvbnMgKGJsdWUgZG90dGVkIGxpbmVzKSB3aXRoIG9ic2VydmVkIGVmZmVjdCBzaXplcyBiYXNlZCBvbiB2YXJpb3VzIHNhbXBsZSBzaXplcy4gTm90ZSB0aGF0IHRoZSBsaW5lcyBhcmUgbm90IGxpbmVhciBhcyB0aGVzZSBhcmUgYmFzZWQgb24gbXVsdGl2YXJpYXRlIHByZWRpY3Rpb25zIG9mIHRoZSBkYXRhIHBvaW50cy4gCgojIyMjIFBFRVNFIChwcmVjaXNpb24tZWZmZWN0IGVzdGltYXRpb24gd2l0aCBzdGFuZGFyZCBlcnJvcikKCmBgYHtyLCB9CiMKcGVlc2VfbG5SUiA8LSBybWEubXYoCiAgeWkgPSBsblJSLAogIFYgPSBWQ1ZfbG5SUiwgCiAgbW9kcyA9IH4gRWZmZWN0aXZlX04sCiAgdGVzdCA9ICJ0IiwKICByYW5kb20gPSBsaXN0KH4xfEhlcmJpdm9yZV9QaHlsb2dlbnksIH4xfEhlcmJpdm9yZV9MYXRpbl9uYW1lLCAKICAgICAgICAgICAgICAgICAgICAgICB+MXxTdHVkeSwgfjF8RWZmZWN0KSwKICBtZXRob2QgPSAiUkVNTCIsIAogIGRhdGEgPSBkYXQKKQpgYGAKCiMjIyMjIFRhYmxlIEUyNQoqKlRhYmxlIEUyNToqKgpSZWdyZXNzaW9uIGNvZWZmaWNpZW50cyAoRXN0aW1hdGUpLCA5NSUgY29uZmlkZW5jZSBpbnRlcnZhbHMgKENJcyksIGFuZCB2YXJpYW5jZSBleHBsYWluZWQsICpSKl4yXn5bbWFyZ2luYWxdfiAoUjIpIGZyb20gdGhlIG1ldGEtcmVncmVzc2lvbiB3aXRoIC4gCmBgYHtyfQojIGdldHRpbmcgbWFyZ2luYWwgUjIKcjJfcGVlc2VfbG5SUiA8LSByMl9tbChwZWVzZV9sblJSKQojIGdldHRpbmcgZXN0aW1hdGVzOiBuYW1lIGRvZXMgbm90IHdvcmsgZm9yIHNsb3BlcwpyZXNfZXBlZXNlX2xuUlIgPC0gZ2V0X3ByZWQyKHBlZXNlX2xuUlIsIG1vZCA9ICJ2YXJsblJSIikKIyBjcmVhdGluZyBhIHRhYmxlCnRpYmJsZSgKICBgRml4ZWQgZWZmZWN0YCA9IHJvdy5uYW1lcyhwZWVzZV9sblJSJGJldGEpLAogIEVzdGltYXRlID0gYyhyZXNfZXBlZXNlX2xuUlIkZXN0aW1hdGUpLAogIGBMb3dlciBDSSBbMC4wMjVdYCA9IGMocmVzX2VwZWVzZV9sblJSJGxvd2VyQ0wpLAogIGBVcHBlciBDSSAgWzAuOTc1XWAgPSBjKHJlc19lcGVlc2VfbG5SUiR1cHBlckNMKSwKICBgUCB2YWx1ZWAgPSBjKHBlZXNlX2xuUlIkcHZhbCksCiAgYFIyYCA9IGMocjJfcGVlc2VfbG5SUlsxXSwgTkEpCikgJT4lCiAga2FibGUoImh0bWwiLCBkaWdpdHMgPSAzKSAlPiUKICAgIGthYmxlX3N0eWxpbmcoInN0cmlwZWQiLCBwb3NpdGlvbiA9ICJsZWZ0IikKYGBgCgoKIyMjIFRpbWUtbGFnIGJpYXMKCiMjIyMgVW5pdmFyaWF0ZSB0aW1lLWxhZyBiaWFzOiBsblJSCmBgYHtyLCB9CiMKdGltZV9sYWdfZWZmZWN0X3VuaV9sblJSIDwtIHJtYS5tdigKICB5aSA9IGxuUlIsCiAgViA9IFZDVl9sblJSLCAKICBtb2RzID0gfiBZZWFyLAogIHRlc3QgPSAidCIsCiAgcmFuZG9tID0gbGlzdCh+MXxIZXJiaXZvcmVfUGh5bG9nZW55LCB+MXxIZXJiaXZvcmVfTGF0aW5fbmFtZSwgCiAgICAgICAgICAgICAgICAgICAgICAgfjF8U3R1ZHksIH4xfEVmZmVjdCksCiAgbWV0aG9kID0gIlJFTUwiLCAKICBkYXRhID0gZGF0CikKYGBgCiMjIyMjIFRhYmxlMjYKKipUYWJsZSBFMjY6KioKUmVncmVzc2lvbiBjb2VmZmljaWVudHMgKEVzdGltYXRlKSwgOTUlIGNvbmZpZGVuY2UgaW50ZXJ2YWxzIChDSXMpLCBQIHZhbHVlIGFuZCB2YXJpYW5jZSBleHBsYWluZWQsICpSKl4yXn5bbWFyZ2luYWxdfiAoUjIpIGZyb20gdGhlIG1ldGEtcmVncmVzc2lvbiB3aXRoIGBZZWFyYC4gCgpgYGB7cn0KIyBnZXR0aW5nIG1hcmdpbmFsIFIyCnIyX3RpbWVfbGFnX2VmZmVjdF91bmlfbG5SUiA8LSByMl9tbCh0aW1lX2xhZ19lZmZlY3RfdW5pX2xuUlIpCiMgZ2V0dGluZyBlc3RpbWF0ZXM6IG5hbWUgZG9lcyBub3Qgd29yayBmb3Igc2xvcGVzCgpyZXNfdGltZV9sYWdfZWZmZWN0X3VuaV9sblJSIDwtIGdldF9wcmVkMih0aW1lX2xhZ19lZmZlY3RfdW5pX2xuUlIsIG1vZCA9ICJZZWFyIikKIyBjcmVhdGluZyBhIHRhYmxlCnRpYmJsZSgKICBgRml4ZWQgZWZmZWN0YCA9IHJvdy5uYW1lcyh0aW1lX2xhZ19lZmZlY3RfdW5pX2xuUlIkYmV0YSksCiAgRXN0aW1hdGUgPSBjKHJlc190aW1lX2xhZ19lZmZlY3RfdW5pX2xuUlIkZXN0aW1hdGUpLAogIGBMb3dlciBDSSBbMC4wMjVdYCA9IGMocmVzX3RpbWVfbGFnX2VmZmVjdF91bmlfbG5SUiRsb3dlckNMKSwKICBgVXBwZXIgQ0kgIFswLjk3NV1gID0gYyhyZXNfdGltZV9sYWdfZWZmZWN0X3VuaV9sblJSJHVwcGVyQ0wpLAogIGBQIHZhbHVlYCA9IHRpbWVfbGFnX2VmZmVjdF91bmlfbG5SUiRwdmFsLAogIGBSMmAgPSBjKHIyX3RpbWVfbGFnX2VmZmVjdF91bmlfbG5SUlsxXSwgTkEpCikgJT4lCiAga2FibGUoImh0bWwiLCBkaWdpdHMgPSAzKSAlPiUKICBrYWJsZV9zdHlsaW5nKCJzdHJpcGVkIiwgcG9zaXRpb24gPSAibGVmdCIpCmBgYAoKIyMjIyMgRmlndXJlIEUxMAoKYGBge3IsIGZpZy53aWR0aD03LCBmaWcuaGVpZ2h0PSA0fQpwcmVkX3RpbWVfbGFnX2VmZmVjdF91bmlfbG5SUiA8LSBwcmVkaWN0LnJtYSh0aW1lX2xhZ19lZmZlY3RfdW5pX2xuUlIpCiMgcGxvdHRpbmcKZml0X3RpbWVfbGFnX2VmZmVjdF91bmlfbG5SUiA8LSBkYXQgJT4lCiAgbXV0YXRlKAogICAgeW1pbiA9IHByZWRfdGltZV9sYWdfZWZmZWN0X3VuaV9sblJSJGNpLmxiLAogICAgeW1heCA9IHByZWRfdGltZV9sYWdfZWZmZWN0X3VuaV9sblJSJGNpLnViLAogICAgeW1pbjIgPSBwcmVkX3RpbWVfbGFnX2VmZmVjdF91bmlfbG5SUiRjci5sYiwKICAgIHltYXgyID0gcHJlZF90aW1lX2xhZ19lZmZlY3RfdW5pX2xuUlIkY3IudWIsCiAgICBwcmVkID0gcHJlZF90aW1lX2xhZ19lZmZlY3RfdW5pX2xuUlIkcHJlZAogICkgJT4lCiAgZ2dwbG90KGFlcyh4ID0gWWVhciwgeSA9IGxuUlIsIHNpemUgPSBzcXJ0KDEvdmFybG5SUikpKSArCiAgZ2VvbV9wb2ludChzaGFwZSA9IDIxLCBmaWxsID0gImdyZXk5MCIpICsKICAjIGdlb21fcmliYm9uKGFlcyh5bWluID0geW1pbiwgeW1heCA9IHltYXgpLCBmaWxsID0gIiMwMDcyQjIiKSAgKyAjIG5vdCBxdWl0ZSBzdXJlIHdoeSB0aGlzIGRvZXMgbm90IHdvcmsKICBnZW9tX3Ntb290aChhZXMoeSA9IHltaW4yKSwgbWV0aG9kID0gImxvZXNzIiwgc2UgPSBGQUxTRSwgbHR5ID0gImRvdHRlZCIsIGx3ZCA9IDAuMjUsIGNvbG91ciA9ICIjMDA3MkIyIikgKwogIGdlb21fc21vb3RoKGFlcyh5ID0geW1heDIpLCBtZXRob2QgPSAibG9lc3MiLCBzZSA9IEZBTFNFLCBsdHkgPSAiZG90dGVkIiwgbHdkID0gMC4yNSwgY29sb3VyID0gIiMwMDcyQjIiKSArCiAgZ2VvbV9zbW9vdGgoYWVzKHkgPSB5bWluKSwgbWV0aG9kID0gImxvZXNzIiwgc2UgPSBGQUxTRSwgbHR5ID0gImRvdHRlZCIsIGx3ZCA9IDAuMjUsIGNvbG91ciA9ICIjRDU1RTAwIikgKwogIGdlb21fc21vb3RoKGFlcyh5ID0geW1heCksIG1ldGhvZCA9ICJsb2VzcyIsIHNlID0gRkFMU0UsIGx0eSA9ICJkb3R0ZWQiLCBsd2QgPSAwLjI1LCBjb2xvdXIgPSAiI0Q1NUUwMCIpICsKICBnZW9tX3Ntb290aChhZXMoeSA9IHByZWQpLCBtZXRob2QgPSAibG9lc3MiLCBzZSA9IEZBTFNFLCBsdHkgPSAiZGFzaGVkIiwgbHdkID0gMC41LCBjb2xvdXIgPSAiYmxhY2siKSArCiAgeWxpbSgtNCwgMy41KSArIHhsaW0oMTk4OSwgMjAyMCkgKwogICNzY2FsZV94X2NvbnRpbnVvdXMoYnJlYWtzID0gYygxOTk1LCAyMDAwLCAyMDA1LCAyMDEwLCAyMDE1LCAyMDIwKSkgKwogIGxhYnMoeCA9ICJZZWFyIiwgeSA9ICJsblJSIChlZmZlY3Qgc2l6ZSkiLCBzaXplID0iUHJlY2lzaW9uICgxL1NFKSIpICsKICBndWlkZXMoZmlsbCA9ICJub25lIiwgY29sb3VyID0gIm5vbmUiKSArCiAgIyB0aGVtZXMKICB0aGVtZV9idygpICsKICB0aGVtZShsZWdlbmQucG9zaXRpb24gPSBjKDAsIDEpLCBsZWdlbmQuanVzdGlmaWNhdGlvbiA9IGMoMCwgMSkpICsKICB0aGVtZShsZWdlbmQuZGlyZWN0aW9uID0gImhvcml6b250YWwiKSArCiAgIyB0aGVtZShsZWdlbmQuYmFja2dyb3VuZCA9IGVsZW1lbnRfcmVjdChmaWxsID0gIndoaXRlIiwgY29sb3VyID0gImJsYWNrIikpICsKICB0aGVtZShsZWdlbmQuYmFja2dyb3VuZCA9IGVsZW1lbnRfYmxhbmsoKSkgKwogIHRoZW1lKGF4aXMudGV4dC55ID0gZWxlbWVudF90ZXh0KHNpemUgPSAxMCwgY29sb3VyID0gImJsYWNrIiwgaGp1c3QgPSAwLjUsIGFuZ2xlID0gOTApKQoKZml0X3RpbWVfbGFnX2VmZmVjdF91bmlfbG5SUgpgYGAKCioqRmlndXJlIEUxMDoqKiBBIGJ1YmJsZSBwbG90IHNob3dpbmcgYSBwcmVkaWN0ZWQgcmVncmVzc2lvbiBsaW5lIGZvciB0aGUgY29udGVudGlvdXMgdmFyaWFibGUgYFllYXJgLCBpbmRpY2F0aW5nIDk1JSBjb25maWRlbmNlIHJlZ2lvbnMgKG9yYW5nZSBkb3R0ZWQgbGluZXMpIGFuZCA5NSUgcHJlZGljdGlvbiByZWdpb25zIChibHVlIGRvdHRlZCBsaW5lcyksIHdpdGggb2JzZXJ2ZWQgZWZmZWN0IHNpemVzIGJhc2VkIG9uIHZhcmlvdXMgcHJlY2lzaW9ucyAoMS9TRSkuIAoKIyMjIyBNdWx0aXZhcmlhdGUgdGltZS1sYWcgYmlhczogbG5SUgpgYGB7cn0KIyAKdGltZV9sYWdfZWZmZWN0X211bF9sblJSIDwtIHJtYS5tdigKICB5aSA9IGxuUlIsCiAgViA9IFZDVl9sblJSLCAKICBtb2RzID0gfiBZZWFyICsKICAgICAgUG9hY2VhZV9vcl9Ob24gKwogICAgRmVlZGluZ19ndWlsZCwKICB0ZXN0ID0gInQiLAogIHJhbmRvbSA9IGxpc3QofjF8SGVyYml2b3JlX1BoeWxvZ2VueSwgfjF8SGVyYml2b3JlX0xhdGluX25hbWUsIAogICAgICAgICAgICAgICAgICAgICAgIH4xfFN0dWR5LCB+MXxFZmZlY3QpLAogIG1ldGhvZCA9ICJSRU1MIiwgCiAgZGF0YSA9IGRhdAopCmBgYAojIyMjIyBUYWJsZSBFMjcKKipUYWJsZSBFMjc6KioKUmVncmVzc2lvbiBjb2VmZmljaWVudHMgKEVzdGltYXRlKSwgOTUlIGNvbmZpZGVuY2UgaW50ZXJ2YWxzIChDSXMpLCBQIHZhbHVlcywgYW5kIHZhcmlhbmNlIGV4cGxhaW5lZCwgKlIqXjJeflttYXJnaW5hbF1+IChSMikgZnJvbSB0aGUgbWV0YS1yZWdyZXNzaW9uIHdpdGggYFllYXJgLCBgYFBsYW50X2xpZmVzcGFuYCwgYFBvYWNlYWVfb3JfTm9uYCwgJiBgRmVlZGluZ19ndWlsZGAuICAKCmBgYHtyfQojIGdldHRpbmcgbWFyZ2luYWwgUjIKcjJfdGltZV9sYWdfZWZmZWN0X211bF9sblJSIDwtIHIyX21sKHRpbWVfbGFnX2VmZmVjdF9tdWxfbG5SUikKIyBjcmVhdGluZyBhIHRhYmxlCnRpYmJsZSgKICBgRml4ZWQgZWZmZWN0YCA9IHJvdy5uYW1lcyh0aW1lX2xhZ19lZmZlY3RfbXVsX2xuUlIkYmV0YSksCiAgRXN0aW1hdGUgPSBjKHRpbWVfbGFnX2VmZmVjdF9tdWxfbG5SUiRiKSwKICBgTG93ZXIgQ0kgWzAuMDI1XWAgPSBjKHRpbWVfbGFnX2VmZmVjdF9tdWxfbG5SUiRjaS5sYiksCiAgYFVwcGVyIENJICBbMC45NzVdYCA9IGModGltZV9sYWdfZWZmZWN0X211bF9sblJSJGNpLnViKSwKICBgUCB2YWx1ZWAgPSB0aW1lX2xhZ19lZmZlY3RfbXVsX2xuUlIkcHZhbCwKICBgUjJgID0gYyhyMl90aW1lX2xhZ19lZmZlY3RfbXVsX2xuUlJbMV0sIHJlcChOQSwgOCkpCikgJT4lCiAga2FibGUoImh0bWwiLCBkaWdpdHMgPSAzKSAlPiUKICBrYWJsZV9zdHlsaW5nKCJzdHJpcGVkIiwgcG9zaXRpb24gPSAibGVmdCIpICU+JSBzY3JvbGxfYm94KHdpZHRoID0gIjEwMCUiLCAKICAgIGhlaWdodCA9ICIzMDBweCIpCmBgYAoKIyMjIyMgRmlndXJlIEUxMQoKYGBge3IsIGZpZy53aWR0aD03LCBmaWcuaGVpZ2h0PSA0fQpwcmVkX3RpbWVfbGFnX2VmZmVjdF9tdWxfbG5SUiA8LSBwcmVkaWN0LnJtYSh0aW1lX2xhZ19lZmZlY3RfbXVsX2xuUlIpCiMgcGxvdHRpbmcKZml0X3RpbWVfbGFnX2VmZmVjdF9tdWxfbG5SUiA8LSBkYXQgJT4lIGZpbHRlcighaXMubmEoUGxhbnRfbGlmZXNwYW4pKSAlPiUKICBtdXRhdGUoeW1pbiA9IHByZWRfdGltZV9sYWdfZWZmZWN0X211bF9sblJSJGNpLmxiLAogICAgeW1heCA9IHByZWRfdGltZV9sYWdfZWZmZWN0X211bF9sblJSJGNpLnViLAogICAgeW1pbjIgPSBwcmVkX3RpbWVfbGFnX2VmZmVjdF9tdWxfbG5SUiRjci5sYiwKICAgIHltYXgyID0gcHJlZF90aW1lX2xhZ19lZmZlY3RfbXVsX2xuUlIkY3IudWIsCiAgICBwcmVkID0gcHJlZF90aW1lX2xhZ19lZmZlY3RfbXVsX2xuUlIkcHJlZAogICkgJT4lCiAgZ2dwbG90KGFlcyh4ID0gWWVhciwgeSA9IGxuUlIsIHNpemUgPSBzcXJ0KDEvdmFybG5SUikpKSArCiAgZ2VvbV9wb2ludChzaGFwZSA9IDIxLCBmaWxsID0gImdyZXk5MCIpICsKICAjIGdlb21fcmliYm9uKGFlcyh5bWluID0geW1pbiwgeW1heCA9IHltYXgpLCBmaWxsID0gIiMwMDcyQjIiKSAgKyAjIG5vdCBxdWl0ZSBzdXJlIHdoeSB0aGlzIGRvZXMgbm90IHdvcmsKICBnZW9tX3Ntb290aChhZXMoeSA9IHltaW4yKSwgbWV0aG9kID0gImxvZXNzIiwgc2UgPSBGQUxTRSwgbHR5ID0gImRvdHRlZCIsIGx3ZCA9IDAuMjUsIGNvbG91ciA9ICIjMDA3MkIyIikgKwogIGdlb21fc21vb3RoKGFlcyh5ID0geW1heDIpLCBtZXRob2QgPSAibG9lc3MiLCBzZSA9IEZBTFNFLCBsdHkgPSAiZG90dGVkIiwgbHdkID0gMC4yNSwgY29sb3VyID0gIiMwMDcyQjIiKSArCiAgZ2VvbV9zbW9vdGgoYWVzKHkgPSB5bWluKSwgbWV0aG9kID0gImxvZXNzIiwgc2UgPSBGQUxTRSwgbHR5ID0gImRvdHRlZCIsIGx3ZCA9IDAuMjUsIGNvbG91ciA9ICIjRDU1RTAwIikgKwogIGdlb21fc21vb3RoKGFlcyh5ID0geW1heCksIG1ldGhvZCA9ICJsb2VzcyIsIHNlID0gRkFMU0UsIGx0eSA9ICJkb3R0ZWQiLCBsd2QgPSAwLjI1LCBjb2xvdXIgPSAiI0Q1NUUwMCIpICsKICBnZW9tX3Ntb290aChhZXMoeSA9IHByZWQpLCBtZXRob2QgPSAibG9lc3MiLCBzZSA9IEZBTFNFLCBsdHkgPSAiZGFzaGVkIiwgbHdkID0gMC41LCBjb2xvdXIgPSAiYmxhY2siKSArCiAgeWxpbSgtNCwgMy41KSArIHhsaW0oMTk4OSwgMjAyMCkgKwogICNzY2FsZV94X2NvbnRpbnVvdXMoYnJlYWtzID0gYygxOTk1LCAyMDAwLCAyMDA1LCAyMDEwLCAyMDE1LCAyMDIwKSkgKwogIGxhYnMoeCA9ICJZZWFyIiwgeSA9ICJsblJSIChlZmZlY3Qgc2l6ZSkiLCBzaXplID0iUHJlY2lzaW9uICgxL1NFKSIpICsKICBndWlkZXMoZmlsbCA9ICJub25lIiwgY29sb3VyID0gIm5vbmUiKSArCiAgIyB0aGVtZXMKICB0aGVtZV9idygpICsKICB0aGVtZShsZWdlbmQucG9zaXRpb24gPSBjKDAsIDEpLCBsZWdlbmQuanVzdGlmaWNhdGlvbiA9IGMoMCwgMSkpICsKICB0aGVtZShsZWdlbmQuZGlyZWN0aW9uID0gImhvcml6b250YWwiKSArCiAgIyB0aGVtZShsZWdlbmQuYmFja2dyb3VuZCA9IGVsZW1lbnRfcmVjdChmaWxsID0gIndoaXRlIiwgY29sb3VyID0gImJsYWNrIikpICsKICB0aGVtZShsZWdlbmQuYmFja2dyb3VuZCA9IGVsZW1lbnRfYmxhbmsoKSkgKwogIHRoZW1lKGF4aXMudGV4dC55ID0gZWxlbWVudF90ZXh0KHNpemUgPSAxMCwgY29sb3VyID0gImJsYWNrIiwgaGp1c3QgPSAwLjUsIGFuZ2xlID0gOTApKQoKZml0X3RpbWVfbGFnX2VmZmVjdF9tdWxfbG5SUgpgYGAKCioqRmlndXJlIEUxMToqKgpBIGJ1YmJsZSBwbG90IHNob3dpbmcgYSBwcmVkaWN0ZWQgbG9lc3MgbGluZSBmb3IgdGhlIGNvbnRlbnRpb3VzIHZhcmlhYmxlIGBZZWFyYCAoZ2l2ZW4gdGhlIHZhbHVlcyBvZiB0aGUgb3RoZXIgMyB2YXJpYWJsZXMgaW4gdGhlIG1vZGVsKSwgd2l0aCB0aGVpciA5NSUgY29uZmlkZW5jZSByZWdpb25zIChvcmFuZ2UgZG90dGVkIGxpbmVzKSBhbmQgOTUlIHByZWRpY3Rpb24gcmVnaW9ucyAoYmx1ZSBkb3R0ZWQgbGluZXMpIHdpdGggb2JzZXJ2ZWQgZWZmZWN0IHNpemVzIGJhc2VkIG9uIHZhcmlvdXMgc2FtcGxlIHNpemVzLiBOb3RlIHRoYXQgdGhlIGxpbmVzIGFyZSBub3QgbGluZWFyIGFzIHRoZXNlIGFyZSBiYXNlZCBvbiBtdWx0aXZhcmlhdGUgcHJlZGljdGlvbnMgb2YgdGhlIGRhdGEgcG9pbnRzLiAKCiMjIFIgU2Vzc2lvbiBJbmZvcm1hdGlvbgoKYGBge3J9CnNlc3Npb25JbmZvKCkgJT4lIHBhbmRlcigpCmBgYAoKIyMgUmVmZXJlbmNlcw==