par2224 <- read_csv("par2224.csv")
## Rows: 90 Columns: 17
## ── Column specification ────────────────────────────────────────────────────────
## Delimiter: ","
## chr (1): colony_id
## dbl (16): year, gh, crith_pos_b, crith_neg_b, api_pos_b, api_neg_b, sum_ bee...
##
## ℹ Use `spec()` to retrieve the full column specification for this data.
## ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
par2224$year <- as.factor(par2224$year)
par2224$colony_id <- as.factor(par2224$colony_id)
par2224$gh <- as.factor(par2224$gh)
ms2224 <- read_csv("ms2224.csv")
## Rows: 1500 Columns: 4
## ── Column specification ────────────────────────────────────────────────────────
## Delimiter: ","
## chr (2): colony_id, pesticide
## dbl (2): detected, ppm
##
## ℹ Use `spec()` to retrieve the full column specification for this data.
## ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
ms2224$colony_id <- as.factor(ms2224$colony_id)
ms2224$pesticide <- as.factor(ms2224$pesticide)
ms_par <- merge(par2224, ms2224, by = "colony_id", all = TRUE)
ms_pardet <- ms_par %>%
filter(!is.na(detected) & detected != 0)
ms_chem <- read_csv("ms_chem.csv")
## Rows: 39 Columns: 7
## ── Column specification ────────────────────────────────────────────────────────
## Delimiter: ","
## chr (7): pesticide, target, mode, scope, longevity, family, method
##
## ℹ Use `spec()` to retrieve the full column specification for this data.
## ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
ms_par_chem <- merge(ms_par, ms_chem, by = "pesticide", all = TRUE)
ms_par_chem <- ms_par_chem %>%
filter(!is.na(pesticide) & pesticide != 0)
ms_par_chem <- ms_par_chem %>%
filter(!is.na(detected) & detected != 0)
ms_par_chem$family <- as.factor(ms_par_chem$family)
ms_par_chem$target <- as.factor(ms_par_chem$target)
hist(ms_pardet$prop_crith_b)

ms_pardet <- ms_pardet %>%
mutate(prop_crith_b_logit = log((prop_crith_b + 0.001) / (1 - prop_crith_b + 0.001)))
hist(ms_pardet$prop_crith_b_logit)

# Fit mixed model
model_a <- lmer(prop_crith_b ~ pesticide + (1 | gh) + year, data = ms_par_chem)
model <- lmer(prop_crith_b ~ pesticide + (1|gh), data = ms_par_chem)
summary(model)
## Linear mixed model fit by REML ['lmerMod']
## Formula: prop_crith_b ~ pesticide + (1 | gh)
## Data: ms_par_chem
##
## REML criterion at convergence: 138.3
##
## Scaled residuals:
## Min 1Q Median 3Q Max
## -2.2239 -0.7767 0.0071 0.6190 2.8877
##
## Random effects:
## Groups Name Variance Std.Dev.
## gh (Intercept) 0.05317 0.2306
## Residual 0.06597 0.2569
## Number of obs: 566, groups: gh, 3
##
## Fixed effects:
## Estimate Std. Error t value
## (Intercept) 0.425432 0.154492 2.754
## pesticidebifenazate 0.004694 0.091347 0.051
## pesticideboscalid 0.142605 0.151215 0.943
## pesticidechlorantraniliprole 0.084959 0.086760 0.979
## pesticidechlorfenapyr 0.062199 0.090313 0.689
## pesticidechlozolinate 0.314065 0.130438 2.408
## pesticidedifenoconazole 0.184521 0.088553 2.084
## pesticidediphenylamine -0.196085 0.198740 -0.987
## pesticidefenpyroximate 0.004694 0.091347 0.051
## pesticideflonicamid 0.215684 0.130455 1.653
## pesticidefluopyram 0.131331 0.085389 1.538
## pesticidehexythiazox 0.102091 0.086903 1.175
## pesticidemyclobutanil 0.163637 0.168661 0.970
## pesticidepicoxystrobin 0.223921 0.112275 1.994
## pesticidepropamocarb 0.102091 0.086903 1.175
## pesticidepyraclostrobin 0.146540 0.085879 1.706
## pesticidepyrimethanil 0.198545 0.095901 2.070
## pesticidepyriproxyfen 0.118301 0.085578 1.382
## pesticidespinetoram 0.246268 0.115557 2.131
## pesticidespinosyn a 0.256088 0.112340 2.280
## pesticidespinosyn d 0.246268 0.115557 2.131
## pesticidespirotetramat 0.003867 0.093030 0.042
## pesticidetrifloxystrobin 0.227705 0.138628 1.643
##
## Correlation matrix not shown by default, as p = 23 > 12.
## Use print(value, correlation=TRUE) or
## vcov(value) if you need it
Anova(model)
## Analysis of Deviance Table (Type II Wald chisquare tests)
##
## Response: prop_crith_b
## Chisq Df Pr(>Chisq)
## pesticide 41.993 22 0.006264 **
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
drop1(model, test = "Chisq")
## Single term deletions
##
## Model:
## prop_crith_b ~ pesticide + (1 | gh)
## npar AIC LRT Pr(Chi)
## <none> 108.98
## pesticide 22 107.20 42.226 0.005869 **
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
plot(model)

anova(model_a, model)
## refitting model(s) with ML (instead of REML)
## Data: ms_par_chem
## Models:
## model: prop_crith_b ~ pesticide + (1 | gh)
## model_a: prop_crith_b ~ pesticide + (1 | gh) + year
## npar AIC BIC logLik deviance Chisq Df Pr(>Chisq)
## model 25 108.98 217.44 -29.488 58.976
## model_a 26 13.82 126.62 19.090 -38.180 97.156 1 < 2.2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
emmeans(model, "pesticide")
## pesticide emmean SE df lower.CL upper.CL
## azoxystrobin 0.425 0.154 3.57 -0.02459 0.875
## bifenazate 0.430 0.141 2.49 -0.07593 0.936
## boscalid 0.568 0.185 7.37 0.13431 1.002
## chlorantraniliprole 0.510 0.138 2.30 -0.01702 1.038
## chlorfenapyr 0.488 0.140 2.44 -0.02328 0.999
## chlozolinate 0.739 0.170 5.19 0.30813 1.171
## difenoconazole 0.610 0.140 2.39 0.09403 1.126
## diphenylamine 0.229 0.226 16.09 -0.24904 0.708
## fenpyroximate 0.430 0.141 2.49 -0.07593 0.936
## flonicamid 0.641 0.170 5.26 0.20991 1.072
## fluopyram 0.557 0.137 2.24 0.02154 1.092
## hexythiazox 0.528 0.138 2.28 -0.00222 1.057
## myclobutanil 0.589 0.200 9.88 0.14381 1.034
## picoxystrobin 0.649 0.156 3.74 0.20325 1.095
## propamocarb 0.528 0.138 2.28 -0.00222 1.057
## pyraclostrobin 0.572 0.138 2.26 0.03965 1.104
## pyrimethanil 0.624 0.145 2.74 0.13844 1.110
## pyriproxyfen 0.544 0.137 2.24 0.00852 1.079
## spinetoram 0.672 0.159 4.02 0.23064 1.113
## spinosyn a 0.682 0.157 3.79 0.23640 1.127
## spinosyn d 0.672 0.159 4.02 0.23064 1.113
## spirotetramat 0.429 0.142 2.58 -0.06905 0.928
## trifloxystrobin 0.653 0.177 6.08 0.22250 1.084
##
## Degrees-of-freedom method: kenward-roger
## Confidence level used: 0.95
mod1 <- glm(cbind(crith_pos_b, crith_neg_b) ~ pesticide + year + gh, data = ms_pardet, family = binomial("logit"))
summary(mod1)
##
## Call:
## glm(formula = cbind(crith_pos_b, crith_neg_b) ~ pesticide + year +
## gh, family = binomial("logit"), data = ms_pardet)
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) -1.78094 0.22500 -7.915 2.46e-15 ***
## pesticidebifenazate 0.20548 0.25161 0.817 0.4141
## pesticideboscalid -0.44278 0.40765 -1.086 0.2774
## pesticidechlorantraniliprole 0.17196 0.24044 0.715 0.4745
## pesticidechlorfenapyr 0.30899 0.24699 1.251 0.2109
## pesticidechlozolinate 0.72134 0.45253 1.594 0.1109
## pesticidedifenoconazole 0.11431 0.24949 0.458 0.6468
## pesticidediphenylamine -14.33744 428.94310 -0.033 0.9733
## pesticidefenpyroximate 0.20548 0.25161 0.817 0.4141
## pesticideflonicamid -0.08996 0.44201 -0.204 0.8387
## pesticidefluopyram 0.20576 0.23776 0.865 0.3868
## pesticidehexythiazox 0.19215 0.23874 0.805 0.4209
## pesticidemyclobutanil 1.04133 0.43382 2.400 0.0164 *
## pesticidepicoxystrobin 0.06429 0.34793 0.185 0.8534
## pesticidepropamocarb 0.19215 0.23874 0.805 0.4209
## pesticidepyraclostrobin 0.19391 0.23897 0.811 0.4171
## pesticidepyrimethanil 0.49865 0.26397 1.889 0.0589 .
## pesticidepyriproxyfen 0.18537 0.23718 0.782 0.4345
## pesticidespinetoram 0.19141 0.41866 0.457 0.6475
## pesticidespinosyn a 0.31060 0.41695 0.745 0.4563
## pesticidespinosyn d 0.19141 0.41866 0.457 0.6475
## pesticidespirotetramat 0.08299 0.25457 0.326 0.7444
## pesticidetrifloxystrobin 0.01162 0.49081 0.024 0.9811
## year2024 1.28184 0.07897 16.231 < 2e-16 ***
## gh2 1.17875 0.07875 14.968 < 2e-16 ***
## gh3 2.47991 0.08732 28.401 < 2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 3193.5 on 565 degrees of freedom
## Residual deviance: 1717.0 on 540 degrees of freedom
## AIC: 2808.1
##
## Number of Fisher Scoring iterations: 13
Anova(mod1)
## Analysis of Deviance Table (Type II tests)
##
## Response: cbind(crith_pos_b, crith_neg_b)
## LR Chisq Df Pr(>Chisq)
## pesticide 25.82 22 0.2593
## year 282.52 1 <2e-16 ***
## gh 979.11 2 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
mod2 <- glm(cbind(crith_pos_b, crith_neg_b) ~ target + year + gh, data = ms_par_chem, family = binomial("logit"))
summary(mod2)
##
## Call:
## glm(formula = cbind(crith_pos_b, crith_neg_b) ~ target + year +
## gh, family = binomial("logit"), data = ms_par_chem)
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) -1.563270 0.075632 -20.669 <2e-16 ***
## targetinsecticide -0.002483 0.062917 -0.039 0.969
## year2024 1.265886 0.066797 18.951 <2e-16 ***
## gh2 1.163627 0.076808 15.150 <2e-16 ***
## gh3 2.455902 0.079651 30.833 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 3193.5 on 565 degrees of freedom
## Residual deviance: 1742.8 on 561 degrees of freedom
## AIC: 2791.9
##
## Number of Fisher Scoring iterations: 4
Anova(mod2)
## Analysis of Deviance Table (Type II tests)
##
## Response: cbind(crith_pos_b, crith_neg_b)
## LR Chisq Df Pr(>Chisq)
## target 0.00 1 0.9685
## year 391.63 1 <2e-16 ***
## gh 1157.57 2 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
mod3 <- glm(cbind(api_pos_b, api_neg_b) ~ pesticide + year + gh, data = ms_pardet, family = binomial("logit"))
summary(mod3)
##
## Call:
## glm(formula = cbind(api_pos_b, api_neg_b) ~ pesticide + year +
## gh, family = binomial("logit"), data = ms_pardet)
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) -1.52057 0.48256 -3.151 0.00163 **
## pesticidebifenazate 0.68173 0.51122 1.334 0.18235
## pesticideboscalid -16.18179 1286.38300 -0.013 0.98996
## pesticidechlorantraniliprole 0.79633 0.50018 1.592 0.11137
## pesticidechlorfenapyr 0.77204 0.50586 1.526 0.12696
## pesticidechlozolinate -1.31448 1.13320 -1.160 0.24606
## pesticidedifenoconazole 0.50759 0.52330 0.970 0.33205
## pesticidediphenylamine 0.42196 0.70678 0.597 0.55049
## pesticidefenpyroximate 0.68173 0.51122 1.334 0.18235
## pesticideflonicamid -15.10049 1108.62348 -0.014 0.98913
## pesticidefluopyram 0.59325 0.50010 1.186 0.23552
## pesticidehexythiazox 0.68600 0.49940 1.374 0.16955
## pesticidemyclobutanil 0.57681 0.69648 0.828 0.40757
## pesticidepicoxystrobin 1.09018 0.57840 1.885 0.05945 .
## pesticidepropamocarb 0.68600 0.49940 1.374 0.16955
## pesticidepyraclostrobin 0.80511 0.50225 1.603 0.10893
## pesticidepyrimethanil 1.14692 0.52100 2.201 0.02771 *
## pesticidepyriproxyfen 0.65092 0.49904 1.304 0.19212
## pesticidespinetoram -15.06459 906.59541 -0.017 0.98674
## pesticidespinosyn a -15.06677 860.02979 -0.018 0.98602
## pesticidespinosyn d -15.06459 906.59541 -0.017 0.98674
## pesticidespirotetramat 1.13062 0.51064 2.214 0.02682 *
## pesticidetrifloxystrobin -15.08512 1215.14242 -0.012 0.99010
## year2024 0.10653 0.09506 1.121 0.26246
## gh2 -1.20235 0.09349 -12.860 < 2e-16 ***
## gh3 -2.61809 0.14459 -18.107 < 2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 2601.4 on 565 degrees of freedom
## Residual deviance: 1819.4 on 540 degrees of freedom
## AIC: 2323
##
## Number of Fisher Scoring iterations: 16
Anova(mod3)
## Analysis of Deviance Table (Type II tests)
##
## Response: cbind(api_pos_b, api_neg_b)
## LR Chisq Df Pr(>Chisq)
## pesticide 59.43 22 2.712e-05 ***
## year 1.26 1 0.2626
## gh 548.59 2 < 2.2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
mod4 <- glm(cbind(api_pos_b, api_neg_b) ~ target + year + gh, data = ms_par_chem, family = binomial("logit"))
summary(mod4)
##
## Call:
## glm(formula = cbind(api_pos_b, api_neg_b) ~ target + year + gh,
## family = binomial("logit"), data = ms_par_chem)
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) -0.75192 0.07961 -9.445 <2e-16 ***
## targetinsecticide -0.01109 0.08324 -0.133 0.894
## year2024 0.03398 0.08355 0.407 0.684
## gh2 -1.24797 0.09174 -13.604 <2e-16 ***
## gh3 -2.84449 0.14045 -20.252 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 2601.4 on 565 degrees of freedom
## Residual deviance: 1878.8 on 561 degrees of freedom
## AIC: 2340.4
##
## Number of Fisher Scoring iterations: 5
Anova(mod4)
## Analysis of Deviance Table (Type II tests)
##
## Response: cbind(api_pos_b, api_neg_b)
## LR Chisq Df Pr(>Chisq)
## target 0.02 1 0.8940
## year 0.17 1 0.6843
## gh 720.18 2 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
summary(model)
## Linear mixed model fit by REML ['lmerMod']
## Formula: prop_crith_b ~ pesticide + (1 | gh)
## Data: ms_par_chem
##
## REML criterion at convergence: 138.3
##
## Scaled residuals:
## Min 1Q Median 3Q Max
## -2.2239 -0.7767 0.0071 0.6190 2.8877
##
## Random effects:
## Groups Name Variance Std.Dev.
## gh (Intercept) 0.05317 0.2306
## Residual 0.06597 0.2569
## Number of obs: 566, groups: gh, 3
##
## Fixed effects:
## Estimate Std. Error t value
## (Intercept) 0.425432 0.154492 2.754
## pesticidebifenazate 0.004694 0.091347 0.051
## pesticideboscalid 0.142605 0.151215 0.943
## pesticidechlorantraniliprole 0.084959 0.086760 0.979
## pesticidechlorfenapyr 0.062199 0.090313 0.689
## pesticidechlozolinate 0.314065 0.130438 2.408
## pesticidedifenoconazole 0.184521 0.088553 2.084
## pesticidediphenylamine -0.196085 0.198740 -0.987
## pesticidefenpyroximate 0.004694 0.091347 0.051
## pesticideflonicamid 0.215684 0.130455 1.653
## pesticidefluopyram 0.131331 0.085389 1.538
## pesticidehexythiazox 0.102091 0.086903 1.175
## pesticidemyclobutanil 0.163637 0.168661 0.970
## pesticidepicoxystrobin 0.223921 0.112275 1.994
## pesticidepropamocarb 0.102091 0.086903 1.175
## pesticidepyraclostrobin 0.146540 0.085879 1.706
## pesticidepyrimethanil 0.198545 0.095901 2.070
## pesticidepyriproxyfen 0.118301 0.085578 1.382
## pesticidespinetoram 0.246268 0.115557 2.131
## pesticidespinosyn a 0.256088 0.112340 2.280
## pesticidespinosyn d 0.246268 0.115557 2.131
## pesticidespirotetramat 0.003867 0.093030 0.042
## pesticidetrifloxystrobin 0.227705 0.138628 1.643
##
## Correlation matrix not shown by default, as p = 23 > 12.
## Use print(value, correlation=TRUE) or
## vcov(value) if you need it
Anova(model)
## Analysis of Deviance Table (Type II Wald chisquare tests)
##
## Response: prop_crith_b
## Chisq Df Pr(>Chisq)
## pesticide 41.993 22 0.006264 **
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
ms_par_chem$ppm[is.na(ms_par_chem$ppm)] <- 0
df_ppm <- ms_par_chem %>%
group_by(colony_id) %>%
summarise(total_colony_ppm = sum(ppm))
df_ppm
## # A tibble: 60 × 2
## colony_id total_colony_ppm
## <fct> <dbl>
## 1 2022_P1-01 0.0213
## 2 2022_P1-02 0.01
## 3 2022_P1-03 0.0817
## 4 2022_P1-04 0.0328
## 5 2022_P1-05 0.09
## 6 2022_P1-06 0.0491
## 7 2022_P1-07 0.0305
## 8 2022_P1-08 0.0146
## 9 2022_P1-09 0.0411
## 10 2022_P1-10 0.0167
## # ℹ 50 more rows
df_ppm <- as.data.frame(df_ppm)
ms_par_chem_ppm <- merge(ms_par_chem, df_ppm, by = "colony_id", all = TRUE)
summary(ms_par_chem_ppm)
## colony_id pesticide year gh crith_pos_b
## 2022_P1-05: 13 fluopyram : 57 2022:320 1:176 Min. : 0.000
## 2022_P3-01: 13 pyriproxyfen : 57 2024:246 2:165 1st Qu.: 3.000
## 2022_P3-02: 13 pyraclostrobin : 53 3:225 Median : 7.000
## 2022_P3-03: 13 hexythiazox : 50 Mean : 5.519
## 2022_P3-04: 13 propamocarb : 50 3rd Qu.: 8.000
## 2022_P3-05: 13 chlorantraniliprole: 47 Max. :10.000
## (Other) :488 (Other) :252
## crith_neg_b api_pos_b api_neg_b sum_ bees
## Min. : 0.000 Min. :0.000 Min. : 2.000 Min. : 7.000
## 1st Qu.: 1.000 1st Qu.:0.000 1st Qu.: 7.000 1st Qu.:10.000
## Median : 4.000 Median :0.000 Median :10.000 Median :10.000
## Mean : 4.424 Mean :1.461 Mean : 8.482 Mean : 9.943
## 3rd Qu.: 7.000 3rd Qu.:3.000 3rd Qu.:10.000 3rd Qu.:10.000
## Max. :10.000 Max. :9.000 Max. :11.000 Max. :11.000
##
## prop_crith_b prop_api_b sum_queens crith_pos_q
## Min. :0.0000 Min. :0.0000 Min. :0.00 Min. :0.000
## 1st Qu.:0.3000 1st Qu.:0.0000 1st Qu.:1.00 1st Qu.:0.000
## Median :0.6364 Median :0.0000 Median :1.00 Median :1.000
## Mean :0.5582 Mean :0.1454 Mean :1.63 Mean :1.057
## 3rd Qu.:0.8889 3rd Qu.:0.2727 3rd Qu.:2.00 3rd Qu.:2.000
## Max. :1.0000 Max. :0.8182 Max. :4.00 Max. :3.000
## NA's :320 NA's :320
## crith_neg_q api_pos_q api_neg_q prop_crith_q
## Min. :0.0000 Min. :0.0000 Min. :0.000 Min. :0.0000
## 1st Qu.:0.0000 1st Qu.:0.0000 1st Qu.:0.000 1st Qu.:0.0000
## Median :0.0000 Median :0.0000 Median :1.000 Median :0.7083
## Mean :0.6016 Mean :0.2154 Mean :1.415 Mean :0.6348
## 3rd Qu.:1.0000 3rd Qu.:0.0000 3rd Qu.:2.000 3rd Qu.:1.0000
## Max. :2.0000 Max. :2.0000 Max. :4.000 Max. :2.0000
## NA's :320 NA's :320 NA's :320 NA's :320
## prop_api_q detected ppm target
## Min. :0.0000 Min. :1 Min. :0.000000 fungicide :306
## 1st Qu.:0.0000 1st Qu.:1 1st Qu.:0.000000 insecticide:260
## Median :0.0000 Median :1 Median :0.000041
## Mean :0.1789 Mean :1 Mean :0.012889
## 3rd Qu.:0.0000 3rd Qu.:1 3rd Qu.:0.006975
## Max. :1.0000 Max. :1 Max. :0.650000
## NA's :320
## mode scope longevity
## Length:566 Length:566 Length:566
## Class :character Class :character Class :character
## Mode :character Mode :character Mode :character
##
##
##
##
## family method total_colony_ppm
## strobilurin : 79 Length:566 Min. :0.0000
## benzamide : 57 Class :character 1st Qu.:0.0229
## insect growth regulator: 57 Mode :character Median :0.0663
## carbamate : 50 Mean :0.1525
## thiozolidine : 50 3rd Qu.:0.1612
## benzimidazole : 47 Max. :1.0215
## (Other) :226
model_ppm <- lmer(prop_crith_b ~ total_colony_ppm + year + (1|gh),
data = ms_par_chem_ppm)
Anova(model_ppm)
## Analysis of Deviance Table (Type II Wald chisquare tests)
##
## Response: prop_crith_b
## Chisq Df Pr(>Chisq)
## total_colony_ppm 2.0721 1 0.15
## year 138.0167 1 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
plot(ms_par_chem_ppm$total_colony_ppm, ms_par_chem_ppm$prop_crith_b)

df_sum <- ms_pardet %>%
group_by(pesticide, year, gh) %>%
summarise(mean = mean(prop_crith_b))
## `summarise()` has grouped output by 'pesticide', 'year'. You can override using
## the `.groups` argument.
df_sum
## # A tibble: 73 × 4
## # Groups: pesticide, year [33]
## pesticide year gh mean
## <fct> <fct> <fct> <dbl>
## 1 azoxystrobin 2022 1 0
## 2 azoxystrobin 2022 3 0.699
## 3 bifenazate 2022 1 0.0882
## 4 bifenazate 2022 2 0.495
## 5 bifenazate 2022 3 0.707
## 6 boscalid 2024 2 0.5
## 7 boscalid 2024 3 1
## 8 chlorantraniliprole 2022 1 0.0882
## 9 chlorantraniliprole 2022 2 0.495
## 10 chlorantraniliprole 2022 3 0.707
## # ℹ 63 more rows
ggplot(df_sum, aes(x = year, y = mean, fill = pesticide)) +
geom_col(position = position_dodge()) +
theme(axis.text.x = element_text(angle = 45, hjust = 1))

df_sum <- ms_pardet %>%
group_by(pesticide, year, gh) %>%
summarise(mean = mean(prop_api_b))
## `summarise()` has grouped output by 'pesticide', 'year'. You can override using
## the `.groups` argument.
df_sum
## # A tibble: 73 × 4
## # Groups: pesticide, year [33]
## pesticide year gh mean
## <fct> <fct> <fct> <dbl>
## 1 azoxystrobin 2022 1 0.25
## 2 azoxystrobin 2022 3 0
## 3 bifenazate 2022 1 0.197
## 4 bifenazate 2022 2 0.192
## 5 bifenazate 2022 3 0.0556
## 6 boscalid 2024 2 0
## 7 boscalid 2024 3 0
## 8 chlorantraniliprole 2022 1 0.197
## 9 chlorantraniliprole 2022 2 0.192
## 10 chlorantraniliprole 2022 3 0.0556
## # ℹ 63 more rows
ggplot(df_sum, aes(x = year, y = mean, fill = pesticide)) +
geom_col(position = position_dodge()) +
theme(axis.text.x = element_text(angle = 45, hjust = 1))

df_sum <- ms_par_chem %>%
group_by(target, year, gh) %>%
summarise(mean = mean(prop_crith_b))
## `summarise()` has grouped output by 'target', 'year'. You can override using
## the `.groups` argument.
df_sum
## # A tibble: 12 × 4
## # Groups: target, year [4]
## target year gh mean
## <fct> <fct> <fct> <dbl>
## 1 fungicide 2022 1 0.0751
## 2 fungicide 2022 2 0.511
## 3 fungicide 2022 3 0.706
## 4 fungicide 2024 1 0.529
## 5 fungicide 2024 2 0.565
## 6 fungicide 2024 3 0.908
## 7 insecticide 2022 1 0.0835
## 8 insecticide 2022 2 0.488
## 9 insecticide 2022 3 0.707
## 10 insecticide 2024 1 0.533
## 11 insecticide 2024 2 0.567
## 12 insecticide 2024 3 0.898
ggplot(df_sum, aes(x = year, y = mean, fill = target)) +
geom_col(position = position_dodge()) +
theme(axis.text.x = element_text(angle = 45, hjust = 1))

df_sum <- ms_par_chem %>%
group_by(target, year, gh) %>%
summarise(mean = mean(prop_api_b))
## `summarise()` has grouped output by 'target', 'year'. You can override using
## the `.groups` argument.
df_sum
## # A tibble: 12 × 4
## # Groups: target, year [4]
## target year gh mean
## <fct> <fct> <fct> <dbl>
## 1 fungicide 2022 1 0.218
## 2 fungicide 2022 2 0.182
## 3 fungicide 2022 3 0.0483
## 4 fungicide 2024 1 0.455
## 5 fungicide 2024 2 0
## 6 fungicide 2024 3 0
## 7 insecticide 2022 1 0.197
## 8 insecticide 2022 2 0.198
## 9 insecticide 2022 3 0.0556
## 10 insecticide 2024 1 0.452
## 11 insecticide 2024 2 0
## 12 insecticide 2024 3 0
ggplot(df_sum, aes(x = target, y = mean)) +
geom_col() +
theme(axis.text.x = element_text(angle = 45, hjust = 1))

df24 <- ms_par_chem_ppm %>%
filter(year == 2024)
plot(df24$total_colony_ppm, df24$prop_crith_b)

model_ppm24 <- lmer(prop_crith_b ~ total_colony_ppm +(1|gh),
data = df24)
Anova(model_ppm24)
## Analysis of Deviance Table (Type II Wald chisquare tests)
##
## Response: prop_crith_b
## Chisq Df Pr(>Chisq)
## total_colony_ppm 1.3191 1 0.2508
df22 <- ms_par_chem_ppm %>%
filter(year == 2022)
plot(df22$total_colony_ppm, df22$prop_crith_b)

model_ppm22 <- lmer(prop_crith_b ~ total_colony_ppm +(1|gh),
data = df22)
Anova(model_ppm22)
## Analysis of Deviance Table (Type II Wald chisquare tests)
##
## Response: prop_crith_b
## Chisq Df Pr(>Chisq)
## total_colony_ppm 3.297 1 0.0694 .
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
model_ppm22 <- lmer(prop_crith_b ~ pesticide +(1|gh),
data = df22)
Anova(model_ppm22)
## Analysis of Deviance Table (Type II Wald chisquare tests)
##
## Response: prop_crith_b
## Chisq Df Pr(>Chisq)
## pesticide 2.6062 14 0.9996
model_ppm24 <- lmer(prop_crith_b ~ pesticide +(1|gh),
data = df24)
Anova(model_ppm24)
## Analysis of Deviance Table (Type II Wald chisquare tests)
##
## Response: prop_crith_b
## Chisq Df Pr(>Chisq)
## pesticide 3.6662 17 0.9997
par_sum <- par2224 %>%
group_by(year, gh) %>%
summarise(crith_avg = mean(prop_crith_b),
api_avg = mean(prop_api_b),
total_bee = sum(`sum_ bees`),
total_crith= sum(crith_pos_b),
total_api=sum(api_pos_b))
## `summarise()` has grouped output by 'year'. You can override using the
## `.groups` argument.
par_sum
## # A tibble: 6 × 7
## # Groups: year [2]
## year gh crith_avg api_avg total_bee total_crith total_api
## <fct> <fct> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 2022 1 0.0882 0.197 101 9 20
## 2 2022 2 0.495 0.192 100 49 20
## 3 2022 3 0.707 0.0556 99 70 5
## 4 2024 1 0.52 0.4 200 104 80
## 5 2024 2 0.492 0 195 96 0
## 6 2024 3 0.921 0 198 182 0
data <- data.frame(
year = c(2022, 2022, 2022, 2024, 2024, 2024),
gh = c(1, 2, 3, 1, 2, 3),
total_bee = c(101, 100, 99, 200, 195, 198),
total_crith = c(9, 49, 70, 104, 96, 182),
crith_prop = c(0.089, 0.490, 0.707, 0.520, 0.492, 0.919),
total_api = c(20, 20, 5, 80, 0, 0),
api_prop = c(0.198, 0.200, 0.051, 0.400, 0.000, 0.000),
total_application = c(11, 17, 23, 22, 22, 25),
Sum_of_total_applied = c(27377.972, 37155.201, 97326.010, 95703.599, 139129.980, 177403.662)
)
data$year <- as.factor(data$year)
data$gh <- as.factor(data$gh)
data$crith_neg <- data$total_bee - data$total_crith
data$api_neg <- data$total_bee - data$total_api
mod_crith_apps <- glm(cbind(total_crith, crith_neg) ~ total_application + year + gh, data = data, family = binomial("logit"))
Anova(mod_crith_apps)
## Analysis of Deviance Table (Type II tests)
##
## Response: cbind(total_crith, crith_neg)
## LR Chisq Df Pr(>Chisq)
## total_application 9.6250 1 0.00192 **
## year 0.2664 1 0.60576
## gh 19.3872 2 6.168e-05 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
plot(data$total_application, data$crith_prop)

mod_crith_total <- glm(cbind(total_crith, crith_neg) ~ Sum_of_total_applied + year + gh, data = data, family = binomial("logit"))
Anova(mod_crith_total)
## Analysis of Deviance Table (Type II tests)
##
## Response: cbind(total_crith, crith_neg)
## LR Chisq Df Pr(>Chisq)
## Sum_of_total_applied 36.348 1 1.651e-09 ***
## year 49.908 1 1.612e-12 ***
## gh 80.535 2 < 2.2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
plot(data$Sum_of_total_applied, data$crith_prop)

mod_api <- glm(cbind(total_api, api_neg) ~ total_application + year + gh, data = data, family = binomial("logit"))
## Warning: glm.fit: fitted probabilities numerically 0 or 1 occurred
Anova(mod_api)
## Analysis of Deviance Table (Type II tests)
##
## Response: cbind(total_api, api_neg)
## LR Chisq Df Pr(>Chisq)
## total_application 69.886 1 < 2.2e-16 ***
## year 67.217 1 2.432e-16 ***
## gh 184.838 2 < 2.2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
plot(data$total_application, data$api_prop)

mod_crith_by_api <- glm(cbind(total_crith, crith_neg) ~ api_prop + year + gh, data = data, family = binomial("logit"))
Anova(mod_crith_by_api)
## Analysis of Deviance Table (Type II tests)
##
## Response: cbind(total_crith, crith_neg)
## LR Chisq Df Pr(>Chisq)
## api_prop 33.649 1 6.602e-09 ***
## year 59.807 1 1.047e-14 ***
## gh 164.339 2 < 2.2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
plot(data$api_prop, data$crith_prop)

data1 <- data.frame(
year = c(2022, 2022, 2022, 2024, 2024, 2024),
gh = c(1, 2, 3, 1, 2, 3),
total_bee = c(101, 100, 99, 200, 195, 198),
total_crith = c(9, 49, 70, 104, 96, 182),
crith_prop = c(0.089, 0.490, 0.707, 0.520, 0.492, 0.919),
total_api = c(20, 20, 5, 80, 0, 0),
api_prop = c(0.198, 0.200, 0.051, 0.400, 0.000, 0.000),
total_application = c(11, 17, 23, 22, 22, 25),
total_applied = c(27377.972, 37155.201, 97326.010, 95703.599, 139129.980, 177403.662),
coragen = c(3288.425333, 3288.425333, 3288.425333, 0, 3288.48093, 3288.48093),
lalstop_k61 = c(3000, 3000, 0, 0, 0, 0),
previcurflex = c(21000, 21000, 21000, 0, 0, 0),
pylon = c(89.54623998, 130.5953257, 69.49439118, 0, 0, 0),
lunatranquility = c(0, 0, 0, 4910.720078, 0, 0),
rootshielplus = c(0, 9736.18056, 4868.09028, 0, 0, 0),
milstop = c(0, 0, 68100, 0, 0, 0),
quadristop = c(0, 0, 0, 3507.657199, 0, 0),
azaguard = c(0, 0, 0, 9865.275998, 29595.82799, 29595.82799),
botanigard22wp = c(0, 0, 0, 8172, 10896, 16344),
botanigardes = c(0, 0, 0, 17028, 17028, 0),
captivaprime = c(0, 0, 0, 249.98679, 249.98679, 249.98679),
fontelis = c(0, 0, 0, 21045.94319, 0, 0),
m_pede = c(0, 0, 0, 4000, 4000, 4000),
nofly = c(0, 0, 0, 26924.016, 17949.344, 13462.008),
veneratecg = c(0, 0, 0, 0, 56122.3404, 56122.3404),
beleaf50sg = c(0, 0, 0, 0, 0, 3597.787465),
entrustsc = c(0, 0, 0, 0, 0, 5323.23),
grotto = c(0, 0, 0, 0, 0, 45420),
insecticide = c(3377.971572, 419.020658, 3357.919724, 66239.27879, 139129.9801, 131983.6616),
fungicide = c(24000.000, 33736.181, 93968.090, 29464.320, 0.000, 45420.000),
biological = c(3000.000, 12736.181, 4868.090, 62239.279, 131841.499, 115774.163)
)
data1$year <- as.factor(data1$year)
data1$gh <- as.factor(data1$gh)
data1$crith_neg <- data1$total_bee - data1$total_crith
data1$api_neg <- data1$total_bee - data1$total_api
mod_crith_total <- glm(cbind(total_crith, crith_neg) ~ total_application + year + gh,
data = data1,
family = binomial("logit"))
Anova(mod_crith_total)
## Analysis of Deviance Table (Type II tests)
##
## Response: cbind(total_crith, crith_neg)
## LR Chisq Df Pr(>Chisq)
## total_application 9.6250 1 0.00192 **
## year 0.2664 1 0.60576
## gh 19.3872 2 6.168e-05 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
plot(data1$total_application, data1$crith_prop)

plot(data1$total_applied, data1$crith_prop)

plot(data1$fungicide, data1$crith_prop)

plot(data1$insecticide, data1$crith_prop)

plot(data1$biological, data1$crith_prop)

plot(data1$total_application, data1$api_prop)

plot(data1$total_applied, data1$api_prop)

plot(data1$fungicide, data1$api_prop)

plot(data1$insecticide, data1$api_prop)

plot(data1$biological, data1$api_prop)

plot(data1$crith_prop, data1$api_prop)

greenhouse_analysis <- read_csv("greenhouse_analysis.csv",
col_types = cols(year = col_factor(levels = c("2022",
"2024")), gh = col_factor(levels = c("1",
"2", "3")), coragen = col_double(),
lalstop_k61 = col_double(), coragen_L = col_logical(),
lalstop_k61_L = col_logical(), previcurflex_L = col_logical(),
pylon_L = col_logical(), lunatranquility_L = col_logical(),
rootshielplus_L = col_logical(),
milstop_L = col_logical(), quadristop_L = col_logical(),
azaguard_L = col_logical(), botanigard22wp_L = col_logical(),
botanigardes_L = col_logical(), captivaprime_L = col_logical(),
fontelis_L = col_logical(), mpede_L = col_logical(),
nofly_L = col_logical(), veneratecg_L = col_logical(),
beleaf50sg_L = col_logical(), entrustsc_L = col_logical(),
grotto_L = col_logical()))
mod_crith_log <- glm(cbind(total_crith, crith_neg) ~ insecticide_b + gh, data = greenhouse_analysis, family = binomial("logit"))
Anova(mod_crith_log)
## Analysis of Deviance Table (Type II tests)
##
## Response: cbind(total_crith, crith_neg)
## LR Chisq Df Pr(>Chisq)
## insecticide_b 22.622 1 1.972e-06 ***
## gh 46.170 2 9.425e-11 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
summary(mod_crith_log)
##
## Call:
## glm(formula = cbind(total_crith, crith_neg) ~ insecticide_b +
## gh, family = binomial("logit"), data = greenhouse_analysis)
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) -9.399e-01 1.506e-01 -6.239 4.40e-10 ***
## insecticide_b 1.136e-04 2.433e-05 4.669 3.03e-06 ***
## gh2 2.261e-01 1.754e-01 1.290 0.197
## gh3 1.478e+00 2.405e-01 6.146 7.93e-10 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 242.420 on 5 degrees of freedom
## Residual deviance: 59.865 on 2 degrees of freedom
## AIC: 97.766
##
## Number of Fisher Scoring iterations: 4
mod_crith_log
##
## Call: glm(formula = cbind(total_crith, crith_neg) ~ insecticide_b +
## gh, family = binomial("logit"), data = greenhouse_analysis)
##
## Coefficients:
## (Intercept) insecticide_b gh2 gh3
## -0.9398792 0.0001136 0.2261434 1.4779931
##
## Degrees of Freedom: 5 Total (i.e. Null); 2 Residual
## Null Deviance: 242.4
## Residual Deviance: 59.87 AIC: 97.77
anova(mod_crith_log)
## Analysis of Deviance Table
##
## Model: binomial, link: logit
##
## Response: cbind(total_crith, crith_neg)
##
## Terms added sequentially (first to last)
##
##
## Df Deviance Resid. Df Resid. Dev Pr(>Chi)
## NULL 5 242.420
## insecticide_b 1 136.38 4 106.035 < 2.2e-16 ***
## gh 2 46.17 2 59.865 9.425e-11 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
plot(greenhouse_analysis$insecticide_b, greenhouse_analysis$crith_prop)

# Scatterplot of observed proportions
plot(greenhouse_analysis$insecticide_b, greenhouse_analysis$crith_prop,
xlab = "Insecticide_b", ylab = "Crithidia Proportion",
main = "Infection Probability",
pch = 16, col = "black", ylim = c(0, 1))
# Sequence of insecticide values
insect_seq <- seq(min(greenhouse_analysis$insecticide_b),
max(greenhouse_analysis$insecticide_b),
length.out = 100)
# Use baseline greenhouse (gh1) for predicted line
pred_data <- data.frame(
insecticide_b = insect_seq,
gh = factor(rep(levels(greenhouse_analysis$gh)[1], 100),
levels = levels(greenhouse_analysis$gh))
)
# Get predicted probabilities
pred_data$pred_prob <- predict(mod_crith_log, newdata = pred_data, type = "response")
# Add predicted line
lines(pred_data$insecticide_b, pred_data$pred_prob, col = "red", lwd = 2)

mod_crith_log <- glm(cbind(total_crith, crith_neg) ~ total_applied + gh, data = greenhouse_analysis, family = binomial("logit"))
Anova(mod_crith_log)
## Analysis of Deviance Table (Type II tests)
##
## Response: cbind(total_crith, crith_neg)
## LR Chisq Df Pr(>Chisq)
## total_applied 32.578 1 1.145e-08 ***
## gh 51.748 2 5.794e-12 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
summary(mod_crith_log)
##
## Call:
## glm(formula = cbind(total_crith, crith_neg) ~ total_applied +
## gh, family = binomial("logit"), data = greenhouse_analysis)
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) -1.296e+00 1.875e-01 -6.911 4.82e-12 ***
## total_applied 1.058e-05 1.888e-06 5.605 2.09e-08 ***
## gh2 1.454e-01 1.800e-01 0.807 0.419
## gh3 1.480e+00 2.364e-01 6.262 3.80e-10 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 242.420 on 5 degrees of freedom
## Residual deviance: 49.909 on 2 degrees of freedom
## AIC: 87.81
##
## Number of Fisher Scoring iterations: 4
mod_crith_log
##
## Call: glm(formula = cbind(total_crith, crith_neg) ~ total_applied +
## gh, family = binomial("logit"), data = greenhouse_analysis)
##
## Coefficients:
## (Intercept) total_applied gh2 gh3
## -1.296e+00 1.058e-05 1.454e-01 1.480e+00
##
## Degrees of Freedom: 5 Total (i.e. Null); 2 Residual
## Null Deviance: 242.4
## Residual Deviance: 49.91 AIC: 87.81
anova(mod_crith_log)
## Analysis of Deviance Table
##
## Model: binomial, link: logit
##
## Response: cbind(total_crith, crith_neg)
##
## Terms added sequentially (first to last)
##
##
## Df Deviance Resid. Df Resid. Dev Pr(>Chi)
## NULL 5 242.420
## total_applied 1 140.762 4 101.658 < 2.2e-16 ***
## gh 2 51.748 2 49.909 5.794e-12 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
plot(greenhouse_analysis$total_applied, greenhouse_analysis$crith_prop)

# Scatterplot of observed proportions
plot(greenhouse_analysis$total_applied, greenhouse_analysis$crith_prop,
xlab = "Total Applied", ylab = "Crithidia Proportion",
main = "Infection Probability",
pch = 16, col = "black", ylim = c(0, 1))
# Sequence of insecticide values
insect_seq <- seq(min(greenhouse_analysis$total_applied),
max(greenhouse_analysis$total_applied),
length.out = 100)
# Use baseline greenhouse (gh1) for predicted line
pred_data <- data.frame(
total_applied = insect_seq,
gh = factor(rep(levels(greenhouse_analysis$gh)[1], 100),
levels = levels(greenhouse_analysis$gh))
)
# Get predicted probabilities
pred_data$pred_prob <- predict(mod_crith_log, newdata = pred_data, type = "response")
# Add predicted line
lines(pred_data$total_applied, pred_data$pred_prob, col = "red", lwd = 2)

mod_crith_log <- glm(cbind(total_crith, crith_neg) ~ total_application + gh, data = greenhouse_analysis, family = binomial("logit"))
Anova(mod_crith_log)
## Analysis of Deviance Table (Type II tests)
##
## Response: cbind(total_crith, crith_neg)
## LR Chisq Df Pr(>Chisq)
## total_application 55.496 1 9.363e-14 ***
## gh 36.530 2 1.168e-08 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
summary(mod_crith_log)
##
## Call:
## glm(formula = cbind(total_crith, crith_neg) ~ total_application +
## gh, family = binomial("logit"), data = greenhouse_analysis)
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) -3.77936 0.52170 -7.244 4.35e-13 ***
## total_application 0.17158 0.02537 6.764 1.34e-11 ***
## gh2 0.25637 0.17466 1.468 0.142
## gh3 1.33629 0.23312 5.732 9.91e-09 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 242.420 on 5 degrees of freedom
## Residual deviance: 26.991 on 2 degrees of freedom
## AIC: 64.892
##
## Number of Fisher Scoring iterations: 4
mod_crith_log
##
## Call: glm(formula = cbind(total_crith, crith_neg) ~ total_application +
## gh, family = binomial("logit"), data = greenhouse_analysis)
##
## Coefficients:
## (Intercept) total_application gh2 gh3
## -3.7794 0.1716 0.2564 1.3363
##
## Degrees of Freedom: 5 Total (i.e. Null); 2 Residual
## Null Deviance: 242.4
## Residual Deviance: 26.99 AIC: 64.89
anova(mod_crith_log)
## Analysis of Deviance Table
##
## Model: binomial, link: logit
##
## Response: cbind(total_crith, crith_neg)
##
## Terms added sequentially (first to last)
##
##
## Df Deviance Resid. Df Resid. Dev Pr(>Chi)
## NULL 5 242.420
## total_application 1 178.90 4 63.521 < 2.2e-16 ***
## gh 2 36.53 2 26.991 1.168e-08 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
plot(greenhouse_analysis$total_application, greenhouse_analysis$crith_prop)

# Scatterplot of observed proportions
plot(greenhouse_analysis$total_application, greenhouse_analysis$crith_prop,
xlab = "Total Applications", ylab = "Crithidia Proportion",
main = "Infection Probability",
pch = 16, col = "black", ylim = c(0, 1))
# Sequence of insecticide values
insect_seq <- seq(min(greenhouse_analysis$total_application),
max(greenhouse_analysis$total_application),
length.out = 100)
# Use baseline greenhouse (gh1) for predicted line
pred_data <- data.frame(
total_application = insect_seq,
gh = factor(rep(levels(greenhouse_analysis$gh)[1], 100),
levels = levels(greenhouse_analysis$gh))
)
# Get predicted probabilities
pred_data$pred_prob <- predict(mod_crith_log, newdata = pred_data, type = "response")
# Add predicted line
lines(pred_data$total_application, pred_data$pred_prob, col = "red", lwd = 2)

mod_crith_log <- glm(cbind(total_crith, crith_neg) ~ fungicide_b + gh, data = greenhouse_analysis, family = binomial("logit"))
Anova(mod_crith_log)
## Analysis of Deviance Table (Type II tests)
##
## Response: cbind(total_crith, crith_neg)
## LR Chisq Df Pr(>Chisq)
## fungicide_b 5.422 1 0.01988 *
## gh 105.430 2 < 2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
summary(mod_crith_log)
##
## Call:
## glm(formula = cbind(total_crith, crith_neg) ~ fungicide_b + gh,
## family = binomial("logit"), data = greenhouse_analysis)
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) -1.229e-01 2.032e-01 -0.605 0.5454
## fungicide_b -1.452e-05 6.199e-06 -2.342 0.0192 *
## gh2 1.920e-01 2.060e-01 0.932 0.3514
## gh3 2.748e+00 3.093e-01 8.886 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 242.420 on 5 degrees of freedom
## Residual deviance: 77.065 on 2 degrees of freedom
## AIC: 114.97
##
## Number of Fisher Scoring iterations: 4
mod_crith_log
##
## Call: glm(formula = cbind(total_crith, crith_neg) ~ fungicide_b + gh,
## family = binomial("logit"), data = greenhouse_analysis)
##
## Coefficients:
## (Intercept) fungicide_b gh2 gh3
## -1.229e-01 -1.452e-05 1.920e-01 2.748e+00
##
## Degrees of Freedom: 5 Total (i.e. Null); 2 Residual
## Null Deviance: 242.4
## Residual Deviance: 77.07 AIC: 115
anova(mod_crith_log)
## Analysis of Deviance Table
##
## Model: binomial, link: logit
##
## Response: cbind(total_crith, crith_neg)
##
## Terms added sequentially (first to last)
##
##
## Df Deviance Resid. Df Resid. Dev Pr(>Chi)
## NULL 5 242.420
## fungicide_b 1 59.925 4 182.495 9.857e-15 ***
## gh 2 105.430 2 77.065 < 2.2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
plot(greenhouse_analysis$fungicide_b, greenhouse_analysis$crith_prop)

# Scatterplot of observed proportions
plot(greenhouse_analysis$fungicide_b, greenhouse_analysis$crith_prop,
xlab = "fungicide_b", ylab = "Crithidia Proportion",
main = "Infection Probability",
pch = 16, col = "black", ylim = c(0, 1))
# Sequence of insecticide values
insect_seq <- seq(min(greenhouse_analysis$fungicide_b),
max(greenhouse_analysis$fungicide_b),
length.out = 100)
# Use baseline greenhouse (gh1) for predicted line
pred_data <- data.frame(
fungicide_b = insect_seq,
gh = factor(rep(levels(greenhouse_analysis$gh)[1], 100),
levels = levels(greenhouse_analysis$gh))
)
# Get predicted probabilities
pred_data$pred_prob <- predict(mod_crith_log, newdata = pred_data, type = "response")
# Add predicted line
lines(pred_data$fungicide_b, pred_data$pred_prob, col = "red", lwd = 2)

LS0tDQp0aXRsZTogIlRvbWF0byBBbmFseXNpcyINCmF1dGhvcjogIkVtaWx5IFJ1bm5pb24iDQpkYXRlOiAiMjAyNS0wMS0yNCINCm91dHB1dDoNCiAgaHRtbF9kb2N1bWVudDoNCiAgICB0b2M6IHRydWUNCiAgICB0b2NfZGVwdGg6IDQNCiAgICBudW1iZXJfc2VjdGlvbnM6IGZhbHNlDQogICAgdG9jX2Zsb2F0OiB0cnVlDQogICAgdGhlbWU6IGpvdXJuYWwNCiAgICBjb2RlX2Rvd25sb2FkOiB0cnVlDQotLS0NCg0KYGBge3Igc2V0dXAsIGluY2x1ZGU9RkFMU0V9DQprbml0cjo6b3B0c19jaHVuayRzZXQoZWNobyA9IFRSVUUpDQpgYGANCg0KDQpgYGB7ciBsb2FkIGxpYnJhcmllcywgaW5jbHVkZT1GQUxTRX0NCmxpYnJhcnkodmlyaWRpc0xpdGUpDQpsaWJyYXJ5KHN0YXRzKQ0KbGlicmFyeShnZ3Bsb3QyKQ0KbGlicmFyeShjYXIpDQpsaWJyYXJ5KGVtbWVhbnMpDQpsaWJyYXJ5KE1BU1MpDQpsaWJyYXJ5KGxtZTQpDQpsaWJyYXJ5KHRpZHl2ZXJzZSkNCmxpYnJhcnkoZHBseXIpDQpsaWJyYXJ5KHJlYWRyKQ0KbGlicmFyeSh2aXJpZGlzTGl0ZSkNCmxpYnJhcnkoc3RhdHMpDQoNCmxpYnJhcnkoZ2dwYXR0ZXJuKQ0KbGlicmFyeShrYWJsZUV4dHJhKQ0KbGlicmFyeShibG1lY28pDQoNCmxpYnJhcnkoY293cGxvdCkNCmxpYnJhcnkocGxvdGx5KQ0KbGlicmFyeShhZ3JpY29sYWUpIA0KbGlicmFyeShnZ3B1YnIpDQpsaWJyYXJ5KGdsdWUpDQpsaWJyYXJ5KG11bHRjb21wKQ0KbGlicmFyeShtdWx0Y29tcFZpZXcpDQpsaWJyYXJ5KGdsbW1UTUIpDQpsaWJyYXJ5KHJzdGF0aXgpDQpsaWJyYXJ5KGZpdGRpc3RycGx1cykNCmxpYnJhcnkobG9nc3BsaW5lKQ0KbGlicmFyeShHR2FsbHkpDQpsaWJyYXJ5KGRhdGEudGFibGUpDQoNCmBgYA0KDQoNCg0KDQpgYGB7cn0NCnBhcjIyMjQgPC0gcmVhZF9jc3YoInBhcjIyMjQuY3N2IikNCg0KcGFyMjIyNCR5ZWFyIDwtIGFzLmZhY3RvcihwYXIyMjI0JHllYXIpDQpwYXIyMjI0JGNvbG9ueV9pZCA8LSBhcy5mYWN0b3IocGFyMjIyNCRjb2xvbnlfaWQpDQpwYXIyMjI0JGdoIDwtIGFzLmZhY3RvcihwYXIyMjI0JGdoKQ0KDQptczIyMjQgPC0gcmVhZF9jc3YoIm1zMjIyNC5jc3YiKQ0KbXMyMjI0JGNvbG9ueV9pZCA8LSBhcy5mYWN0b3IobXMyMjI0JGNvbG9ueV9pZCkNCm1zMjIyNCRwZXN0aWNpZGUgPC0gYXMuZmFjdG9yKG1zMjIyNCRwZXN0aWNpZGUpDQoNCg0KbXNfcGFyIDwtIG1lcmdlKHBhcjIyMjQsIG1zMjIyNCwgYnkgPSAiY29sb255X2lkIiwgYWxsID0gVFJVRSkNCm1zX3BhcmRldCA8LSBtc19wYXIgJT4lDQogIGZpbHRlcighaXMubmEoZGV0ZWN0ZWQpICYgZGV0ZWN0ZWQgIT0gMCkNCg0KbXNfY2hlbSA8LSByZWFkX2NzdigibXNfY2hlbS5jc3YiKQ0KDQptc19wYXJfY2hlbSA8LSBtZXJnZShtc19wYXIsIG1zX2NoZW0sIGJ5ID0gInBlc3RpY2lkZSIsIGFsbCA9IFRSVUUpDQptc19wYXJfY2hlbSA8LSBtc19wYXJfY2hlbSAlPiUNCiAgZmlsdGVyKCFpcy5uYShwZXN0aWNpZGUpICYgcGVzdGljaWRlICE9IDApDQptc19wYXJfY2hlbSA8LSBtc19wYXJfY2hlbSAlPiUNCiAgZmlsdGVyKCFpcy5uYShkZXRlY3RlZCkgJiBkZXRlY3RlZCAhPSAwKQ0KDQptc19wYXJfY2hlbSRmYW1pbHkgPC0gYXMuZmFjdG9yKG1zX3Bhcl9jaGVtJGZhbWlseSkNCg0KbXNfcGFyX2NoZW0kdGFyZ2V0IDwtIGFzLmZhY3Rvcihtc19wYXJfY2hlbSR0YXJnZXQpDQoNCmBgYA0KDQoNCg0KYGBge3IsIGZpZy53aWR0aD0xMn0NCmhpc3QobXNfcGFyZGV0JHByb3BfY3JpdGhfYikNCm1zX3BhcmRldCA8LSBtc19wYXJkZXQgJT4lDQogIG11dGF0ZShwcm9wX2NyaXRoX2JfbG9naXQgPSBsb2coKHByb3BfY3JpdGhfYiArIDAuMDAxKSAvICgxIC0gcHJvcF9jcml0aF9iICsgMC4wMDEpKSkNCg0KaGlzdChtc19wYXJkZXQkcHJvcF9jcml0aF9iX2xvZ2l0KQ0KDQojIEZpdCBtaXhlZCBtb2RlbA0KbW9kZWxfYSA8LSBsbWVyKHByb3BfY3JpdGhfYiB+IHBlc3RpY2lkZSArICgxIHwgZ2gpICsgeWVhciwgZGF0YSA9IG1zX3Bhcl9jaGVtKQ0KDQptb2RlbCA8LSBsbWVyKHByb3BfY3JpdGhfYiB+IHBlc3RpY2lkZSArICgxfGdoKSwgZGF0YSA9IG1zX3Bhcl9jaGVtKQ0Kc3VtbWFyeShtb2RlbCkNCkFub3ZhKG1vZGVsKQ0KZHJvcDEobW9kZWwsIHRlc3QgPSAiQ2hpc3EiKQ0KcGxvdChtb2RlbCkNCg0KYW5vdmEobW9kZWxfYSwgbW9kZWwpDQoNCmVtbWVhbnMobW9kZWwsICJwZXN0aWNpZGUiKQ0KDQoNCm1vZDEgPC0gZ2xtKGNiaW5kKGNyaXRoX3Bvc19iLCBjcml0aF9uZWdfYikgfiBwZXN0aWNpZGUgKyB5ZWFyICsgZ2gsIGRhdGEgPSBtc19wYXJkZXQsIGZhbWlseSA9IGJpbm9taWFsKCJsb2dpdCIpKQ0Kc3VtbWFyeShtb2QxKQ0KQW5vdmEobW9kMSkNCg0KbW9kMiA8LSBnbG0oY2JpbmQoY3JpdGhfcG9zX2IsIGNyaXRoX25lZ19iKSB+IHRhcmdldCArIHllYXIgKyBnaCwgZGF0YSA9IG1zX3Bhcl9jaGVtLCBmYW1pbHkgPSBiaW5vbWlhbCgibG9naXQiKSkNCnN1bW1hcnkobW9kMikNCkFub3ZhKG1vZDIpDQoNCm1vZDMgPC0gZ2xtKGNiaW5kKGFwaV9wb3NfYiwgYXBpX25lZ19iKSB+IHBlc3RpY2lkZSArIHllYXIgKyBnaCwgZGF0YSA9IG1zX3BhcmRldCwgZmFtaWx5ID0gYmlub21pYWwoImxvZ2l0IikpDQpzdW1tYXJ5KG1vZDMpDQpBbm92YShtb2QzKQ0KDQptb2Q0IDwtIGdsbShjYmluZChhcGlfcG9zX2IsIGFwaV9uZWdfYikgfiB0YXJnZXQgKyB5ZWFyICsgZ2gsIGRhdGEgPSBtc19wYXJfY2hlbSwgZmFtaWx5ID0gYmlub21pYWwoImxvZ2l0IikpDQpzdW1tYXJ5KG1vZDQpDQpBbm92YShtb2Q0KQ0KDQpzdW1tYXJ5KG1vZGVsKQ0KQW5vdmEobW9kZWwpDQoNCm1zX3Bhcl9jaGVtJHBwbVtpcy5uYShtc19wYXJfY2hlbSRwcG0pXSA8LSAwDQpkZl9wcG0gPC0gbXNfcGFyX2NoZW0gJT4lDQogIGdyb3VwX2J5KGNvbG9ueV9pZCkgJT4lDQogIHN1bW1hcmlzZSh0b3RhbF9jb2xvbnlfcHBtID0gc3VtKHBwbSkpDQpkZl9wcG0gIA0KDQoNCmRmX3BwbSA8LSBhcy5kYXRhLmZyYW1lKGRmX3BwbSkNCg0KbXNfcGFyX2NoZW1fcHBtIDwtIG1lcmdlKG1zX3Bhcl9jaGVtLCBkZl9wcG0sIGJ5ID0gImNvbG9ueV9pZCIsIGFsbCA9IFRSVUUpIA0KDQpzdW1tYXJ5KG1zX3Bhcl9jaGVtX3BwbSkNCm1vZGVsX3BwbSA8LSBsbWVyKHByb3BfY3JpdGhfYiB+IHRvdGFsX2NvbG9ueV9wcG0gKyB5ZWFyICsgKDF8Z2gpLA0KICAgICAgICAgICAgICAgICAgZGF0YSA9IG1zX3Bhcl9jaGVtX3BwbSkNCkFub3ZhKG1vZGVsX3BwbSkNCg0KcGxvdChtc19wYXJfY2hlbV9wcG0kdG90YWxfY29sb255X3BwbSwgbXNfcGFyX2NoZW1fcHBtJHByb3BfY3JpdGhfYikNCg0KZGZfc3VtIDwtIG1zX3BhcmRldCAlPiUNCiAgZ3JvdXBfYnkocGVzdGljaWRlLCB5ZWFyLCBnaCkgJT4lDQogIHN1bW1hcmlzZShtZWFuID0gbWVhbihwcm9wX2NyaXRoX2IpKQ0KZGZfc3VtDQoNCmdncGxvdChkZl9zdW0sIGFlcyh4ID0geWVhciwgeSA9IG1lYW4sIGZpbGwgPSBwZXN0aWNpZGUpKSArDQogIGdlb21fY29sKHBvc2l0aW9uID0gcG9zaXRpb25fZG9kZ2UoKSkgKw0KICAgIHRoZW1lKGF4aXMudGV4dC54ID0gZWxlbWVudF90ZXh0KGFuZ2xlID0gNDUsIGhqdXN0ID0gMSkpDQoNCg0KZGZfc3VtIDwtIG1zX3BhcmRldCAlPiUNCiAgZ3JvdXBfYnkocGVzdGljaWRlLCB5ZWFyLCBnaCkgJT4lDQogIHN1bW1hcmlzZShtZWFuID0gbWVhbihwcm9wX2FwaV9iKSkNCmRmX3N1bQ0KDQpnZ3Bsb3QoZGZfc3VtLCBhZXMoeCA9IHllYXIsIHkgPSBtZWFuLCBmaWxsID0gcGVzdGljaWRlKSkgKw0KICBnZW9tX2NvbChwb3NpdGlvbiA9IHBvc2l0aW9uX2RvZGdlKCkpICsNCiAgICB0aGVtZShheGlzLnRleHQueCA9IGVsZW1lbnRfdGV4dChhbmdsZSA9IDQ1LCBoanVzdCA9IDEpKQ0KDQoNCg0KZGZfc3VtIDwtIG1zX3Bhcl9jaGVtICU+JQ0KICBncm91cF9ieSh0YXJnZXQsIHllYXIsIGdoKSAlPiUNCiAgc3VtbWFyaXNlKG1lYW4gPSBtZWFuKHByb3BfY3JpdGhfYikpDQpkZl9zdW0NCg0KZ2dwbG90KGRmX3N1bSwgYWVzKHggPSB5ZWFyLCB5ID0gbWVhbiwgZmlsbCA9IHRhcmdldCkpICsNCiAgZ2VvbV9jb2wocG9zaXRpb24gPSBwb3NpdGlvbl9kb2RnZSgpKSArDQogICAgdGhlbWUoYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoYW5nbGUgPSA0NSwgaGp1c3QgPSAxKSkNCg0KDQpkZl9zdW0gPC0gbXNfcGFyX2NoZW0gJT4lDQogIGdyb3VwX2J5KHRhcmdldCwgeWVhciwgZ2gpICU+JQ0KICBzdW1tYXJpc2UobWVhbiA9IG1lYW4ocHJvcF9hcGlfYikpDQpkZl9zdW0NCg0KZ2dwbG90KGRmX3N1bSwgYWVzKHggPSB0YXJnZXQsIHkgPSBtZWFuKSkgKw0KICBnZW9tX2NvbCgpICsNCiAgICB0aGVtZShheGlzLnRleHQueCA9IGVsZW1lbnRfdGV4dChhbmdsZSA9IDQ1LCBoanVzdCA9IDEpKQ0KICANCg0KYGBgDQoNCg0KDQpgYGB7cn0NCg0KZGYyNCA8LSBtc19wYXJfY2hlbV9wcG0gJT4lDQogIGZpbHRlcih5ZWFyID09IDIwMjQpDQoNCg0KcGxvdChkZjI0JHRvdGFsX2NvbG9ueV9wcG0sIGRmMjQkcHJvcF9jcml0aF9iKQ0KDQptb2RlbF9wcG0yNCA8LSBsbWVyKHByb3BfY3JpdGhfYiB+IHRvdGFsX2NvbG9ueV9wcG0gKygxfGdoKSwNCiAgICAgICAgICAgICAgICAgIGRhdGEgPSBkZjI0KQ0KQW5vdmEobW9kZWxfcHBtMjQpDQoNCmRmMjIgPC0gbXNfcGFyX2NoZW1fcHBtICU+JQ0KICBmaWx0ZXIoeWVhciA9PSAyMDIyKQ0KDQpwbG90KGRmMjIkdG90YWxfY29sb255X3BwbSwgZGYyMiRwcm9wX2NyaXRoX2IpDQoNCm1vZGVsX3BwbTIyIDwtIGxtZXIocHJvcF9jcml0aF9iIH4gdG90YWxfY29sb255X3BwbSArKDF8Z2gpLA0KICAgICAgICAgICAgICAgICAgZGF0YSA9IGRmMjIpDQpBbm92YShtb2RlbF9wcG0yMikNCg0KDQptb2RlbF9wcG0yMiA8LSBsbWVyKHByb3BfY3JpdGhfYiB+IHBlc3RpY2lkZSArKDF8Z2gpLA0KICAgICAgICAgICAgICAgICAgZGF0YSA9IGRmMjIpDQpBbm92YShtb2RlbF9wcG0yMikNCg0KDQptb2RlbF9wcG0yNCA8LSBsbWVyKHByb3BfY3JpdGhfYiB+IHBlc3RpY2lkZSArKDF8Z2gpLA0KICAgICAgICAgICAgICAgICAgZGF0YSA9IGRmMjQpDQpBbm92YShtb2RlbF9wcG0yNCkNCg0KYGBgDQoNCg0KYGBge3J9DQoNCnBhcl9zdW0gPC0gcGFyMjIyNCAlPiUNCiAgZ3JvdXBfYnkoeWVhciwgZ2gpICU+JQ0KICBzdW1tYXJpc2UoY3JpdGhfYXZnID0gbWVhbihwcm9wX2NyaXRoX2IpLA0KICAgICAgICAgICAgYXBpX2F2ZyA9IG1lYW4ocHJvcF9hcGlfYiksIA0KICAgICAgICAgICAgdG90YWxfYmVlID0gc3VtKGBzdW1fIGJlZXNgKSwNCiAgICAgICAgICAgIHRvdGFsX2NyaXRoPSBzdW0oY3JpdGhfcG9zX2IpLA0KICAgICAgICAgICAgdG90YWxfYXBpPXN1bShhcGlfcG9zX2IpKQ0KDQoNCnBhcl9zdW0NCmBgYA0KDQoNCg0KYGBge3J9DQpkYXRhIDwtIGRhdGEuZnJhbWUoDQogIHllYXIgPSBjKDIwMjIsIDIwMjIsIDIwMjIsIDIwMjQsIDIwMjQsIDIwMjQpLA0KICBnaCA9IGMoMSwgMiwgMywgMSwgMiwgMyksDQogIHRvdGFsX2JlZSA9IGMoMTAxLCAxMDAsIDk5LCAyMDAsIDE5NSwgMTk4KSwNCiAgdG90YWxfY3JpdGggPSBjKDksIDQ5LCA3MCwgMTA0LCA5NiwgMTgyKSwNCiAgY3JpdGhfcHJvcCA9IGMoMC4wODksIDAuNDkwLCAwLjcwNywgMC41MjAsIDAuNDkyLCAwLjkxOSksDQogIHRvdGFsX2FwaSA9IGMoMjAsIDIwLCA1LCA4MCwgMCwgMCksDQogIGFwaV9wcm9wID0gYygwLjE5OCwgMC4yMDAsIDAuMDUxLCAwLjQwMCwgMC4wMDAsIDAuMDAwKSwNCiB0b3RhbF9hcHBsaWNhdGlvbiA9IGMoMTEsIDE3LCAyMywgMjIsIDIyLCAyNSksDQogIFN1bV9vZl90b3RhbF9hcHBsaWVkID0gYygyNzM3Ny45NzIsIDM3MTU1LjIwMSwgOTczMjYuMDEwLCA5NTcwMy41OTksIDEzOTEyOS45ODAsIDE3NzQwMy42NjIpDQopDQoNCg0KZGF0YSR5ZWFyIDwtIGFzLmZhY3RvcihkYXRhJHllYXIpDQpkYXRhJGdoIDwtIGFzLmZhY3RvcihkYXRhJGdoKQ0KDQpkYXRhJGNyaXRoX25lZyA8LSBkYXRhJHRvdGFsX2JlZSAtIGRhdGEkdG90YWxfY3JpdGgNCmRhdGEkYXBpX25lZyA8LSBkYXRhJHRvdGFsX2JlZSAtIGRhdGEkdG90YWxfYXBpDQoNCm1vZF9jcml0aF9hcHBzIDwtIGdsbShjYmluZCh0b3RhbF9jcml0aCwgY3JpdGhfbmVnKSB+ICB0b3RhbF9hcHBsaWNhdGlvbiArIHllYXIgKyBnaCwgZGF0YSA9IGRhdGEsIGZhbWlseSA9IGJpbm9taWFsKCJsb2dpdCIpKQ0KQW5vdmEobW9kX2NyaXRoX2FwcHMpDQpwbG90KGRhdGEkdG90YWxfYXBwbGljYXRpb24sIGRhdGEkY3JpdGhfcHJvcCkNCg0KDQptb2RfY3JpdGhfdG90YWwgPC0gZ2xtKGNiaW5kKHRvdGFsX2NyaXRoLCBjcml0aF9uZWcpIH4gIFN1bV9vZl90b3RhbF9hcHBsaWVkICsgeWVhciArIGdoLCBkYXRhID0gZGF0YSwgZmFtaWx5ID0gYmlub21pYWwoImxvZ2l0IikpDQpBbm92YShtb2RfY3JpdGhfdG90YWwpDQoNCnBsb3QoZGF0YSRTdW1fb2ZfdG90YWxfYXBwbGllZCwgZGF0YSRjcml0aF9wcm9wKQ0KDQoNCm1vZF9hcGkgPC0gZ2xtKGNiaW5kKHRvdGFsX2FwaSwgYXBpX25lZykgfiAgdG90YWxfYXBwbGljYXRpb24gKyB5ZWFyICsgZ2gsIGRhdGEgPSBkYXRhLCBmYW1pbHkgPSBiaW5vbWlhbCgibG9naXQiKSkNCkFub3ZhKG1vZF9hcGkpDQoNCnBsb3QoZGF0YSR0b3RhbF9hcHBsaWNhdGlvbiwgZGF0YSRhcGlfcHJvcCkNCg0KDQptb2RfY3JpdGhfYnlfYXBpIDwtIGdsbShjYmluZCh0b3RhbF9jcml0aCwgY3JpdGhfbmVnKSB+ICBhcGlfcHJvcCArIHllYXIgKyBnaCwgZGF0YSA9IGRhdGEsIGZhbWlseSA9IGJpbm9taWFsKCJsb2dpdCIpKQ0KQW5vdmEobW9kX2NyaXRoX2J5X2FwaSkNCg0KcGxvdChkYXRhJGFwaV9wcm9wLCBkYXRhJGNyaXRoX3Byb3ApDQoNCg0KDQpgYGANCg0KDQoNCmBgYHtyfQ0KZGF0YTEgPC0gZGF0YS5mcmFtZSgNCiAgeWVhciA9IGMoMjAyMiwgMjAyMiwgMjAyMiwgMjAyNCwgMjAyNCwgMjAyNCksDQogIGdoID0gYygxLCAyLCAzLCAxLCAyLCAzKSwNCiAgdG90YWxfYmVlID0gYygxMDEsIDEwMCwgOTksIDIwMCwgMTk1LCAxOTgpLA0KICB0b3RhbF9jcml0aCA9IGMoOSwgNDksIDcwLCAxMDQsIDk2LCAxODIpLA0KICBjcml0aF9wcm9wID0gYygwLjA4OSwgMC40OTAsIDAuNzA3LCAwLjUyMCwgMC40OTIsIDAuOTE5KSwNCiAgdG90YWxfYXBpID0gYygyMCwgMjAsIDUsIDgwLCAwLCAwKSwNCiAgYXBpX3Byb3AgPSBjKDAuMTk4LCAwLjIwMCwgMC4wNTEsIDAuNDAwLCAwLjAwMCwgMC4wMDApLA0KICB0b3RhbF9hcHBsaWNhdGlvbiA9IGMoMTEsIDE3LCAyMywgMjIsIDIyLCAyNSksDQogIHRvdGFsX2FwcGxpZWQgPSBjKDI3Mzc3Ljk3MiwgMzcxNTUuMjAxLCA5NzMyNi4wMTAsIDk1NzAzLjU5OSwgMTM5MTI5Ljk4MCwgMTc3NDAzLjY2MiksDQogIGNvcmFnZW4gPSBjKDMyODguNDI1MzMzLCAzMjg4LjQyNTMzMywgMzI4OC40MjUzMzMsIDAsIDMyODguNDgwOTMsIDMyODguNDgwOTMpLA0KICBsYWxzdG9wX2s2MSA9IGMoMzAwMCwgMzAwMCwgMCwgMCwgMCwgMCksDQogIHByZXZpY3VyZmxleCA9IGMoMjEwMDAsIDIxMDAwLCAyMTAwMCwgMCwgMCwgMCksDQogIHB5bG9uID0gYyg4OS41NDYyMzk5OCwgMTMwLjU5NTMyNTcsIDY5LjQ5NDM5MTE4LCAwLCAwLCAwKSwNCiAgbHVuYXRyYW5xdWlsaXR5ID0gYygwLCAwLCAwLCA0OTEwLjcyMDA3OCwgMCwgMCksDQogIHJvb3RzaGllbHBsdXMgPSBjKDAsIDk3MzYuMTgwNTYsIDQ4NjguMDkwMjgsIDAsIDAsIDApLA0KICBtaWxzdG9wID0gYygwLCAwLCA2ODEwMCwgMCwgMCwgMCksDQogIHF1YWRyaXN0b3AgPSBjKDAsIDAsIDAsIDM1MDcuNjU3MTk5LCAwLCAwKSwNCiAgYXphZ3VhcmQgPSBjKDAsIDAsIDAsIDk4NjUuMjc1OTk4LCAyOTU5NS44Mjc5OSwgMjk1OTUuODI3OTkpLA0KICBib3RhbmlnYXJkMjJ3cCA9IGMoMCwgMCwgMCwgODE3MiwgMTA4OTYsIDE2MzQ0KSwNCiAgYm90YW5pZ2FyZGVzID0gYygwLCAwLCAwLCAxNzAyOCwgMTcwMjgsIDApLA0KICBjYXB0aXZhcHJpbWUgPSBjKDAsIDAsIDAsIDI0OS45ODY3OSwgMjQ5Ljk4Njc5LCAyNDkuOTg2NzkpLA0KICBmb250ZWxpcyA9IGMoMCwgMCwgMCwgMjEwNDUuOTQzMTksIDAsIDApLA0KICBtX3BlZGUgPSBjKDAsIDAsIDAsIDQwMDAsIDQwMDAsIDQwMDApLA0KICBub2ZseSA9IGMoMCwgMCwgMCwgMjY5MjQuMDE2LCAxNzk0OS4zNDQsIDEzNDYyLjAwOCksDQogIHZlbmVyYXRlY2cgPSBjKDAsIDAsIDAsIDAsIDU2MTIyLjM0MDQsIDU2MTIyLjM0MDQpLA0KICBiZWxlYWY1MHNnID0gYygwLCAwLCAwLCAwLCAwLCAzNTk3Ljc4NzQ2NSksDQogIGVudHJ1c3RzYyA9IGMoMCwgMCwgMCwgMCwgMCwgNTMyMy4yMyksDQogIGdyb3R0byA9IGMoMCwgMCwgMCwgMCwgMCwgNDU0MjApLA0KICBpbnNlY3RpY2lkZSA9IGMoMzM3Ny45NzE1NzIsIDQxOS4wMjA2NTgsCTMzNTcuOTE5NzI0LAk2NjIzOS4yNzg3OSwJMTM5MTI5Ljk4MDEsCTEzMTk4My42NjE2KSwNCiAgZnVuZ2ljaWRlID0gYygyNDAwMC4wMDAsCTMzNzM2LjE4MSwJOTM5NjguMDkwLAkyOTQ2NC4zMjAsCTAuMDAwLAk0NTQyMC4wMDApLA0KICBiaW9sb2dpY2FsID0gYygzMDAwLjAwMCwJMTI3MzYuMTgxLAk0ODY4LjA5MCwJNjIyMzkuMjc5LAkxMzE4NDEuNDk5LAkxMTU3NzQuMTYzKQ0KKQ0KDQpkYXRhMSR5ZWFyIDwtIGFzLmZhY3RvcihkYXRhMSR5ZWFyKQ0KZGF0YTEkZ2ggPC0gYXMuZmFjdG9yKGRhdGExJGdoKQ0KDQoNCmRhdGExJGNyaXRoX25lZyA8LSBkYXRhMSR0b3RhbF9iZWUgLSBkYXRhMSR0b3RhbF9jcml0aA0KZGF0YTEkYXBpX25lZyA8LSBkYXRhMSR0b3RhbF9iZWUgLSBkYXRhMSR0b3RhbF9hcGkNCg0KbW9kX2NyaXRoX3RvdGFsIDwtIGdsbShjYmluZCh0b3RhbF9jcml0aCwgY3JpdGhfbmVnKSB+ICB0b3RhbF9hcHBsaWNhdGlvbiArIHllYXIgKyBnaCwNCiAgZGF0YSA9IGRhdGExLA0KICBmYW1pbHkgPSBiaW5vbWlhbCgibG9naXQiKSkNCg0KQW5vdmEobW9kX2NyaXRoX3RvdGFsKQ0KDQpwbG90KGRhdGExJHRvdGFsX2FwcGxpY2F0aW9uLCBkYXRhMSRjcml0aF9wcm9wKQ0KDQpwbG90KGRhdGExJHRvdGFsX2FwcGxpZWQsIGRhdGExJGNyaXRoX3Byb3ApDQoNCnBsb3QoZGF0YTEkZnVuZ2ljaWRlLCBkYXRhMSRjcml0aF9wcm9wKQ0KDQpwbG90KGRhdGExJGluc2VjdGljaWRlLCBkYXRhMSRjcml0aF9wcm9wKSAgDQoNCnBsb3QoZGF0YTEkYmlvbG9naWNhbCwgZGF0YTEkY3JpdGhfcHJvcCkNCg0KDQoNCg0KcGxvdChkYXRhMSR0b3RhbF9hcHBsaWNhdGlvbiwgZGF0YTEkYXBpX3Byb3ApDQoNCnBsb3QoZGF0YTEkdG90YWxfYXBwbGllZCwgZGF0YTEkYXBpX3Byb3ApDQoNCnBsb3QoZGF0YTEkZnVuZ2ljaWRlLCBkYXRhMSRhcGlfcHJvcCkNCg0KcGxvdChkYXRhMSRpbnNlY3RpY2lkZSwgZGF0YTEkYXBpX3Byb3ApICANCg0KcGxvdChkYXRhMSRiaW9sb2dpY2FsLCBkYXRhMSRhcGlfcHJvcCkNCg0KDQoNCnBsb3QoZGF0YTEkY3JpdGhfcHJvcCwgZGF0YTEkYXBpX3Byb3ApDQogDQpgYGANCg0KDQoNCmBgYHtyfQ0KDQpncmVlbmhvdXNlX2FuYWx5c2lzIDwtIHJlYWRfY3N2KCJncmVlbmhvdXNlX2FuYWx5c2lzLmNzdiIsIA0KICAgIGNvbF90eXBlcyA9IGNvbHMoeWVhciA9IGNvbF9mYWN0b3IobGV2ZWxzID0gYygiMjAyMiIsIA0KICAgICAgICAiMjAyNCIpKSwgZ2ggPSBjb2xfZmFjdG9yKGxldmVscyA9IGMoIjEiLCANCiAgICAgICAgIjIiLCAiMyIpKSwgY29yYWdlbiA9IGNvbF9kb3VibGUoKSwgDQogICAgICAgIGxhbHN0b3BfazYxID0gY29sX2RvdWJsZSgpLCBjb3JhZ2VuX0wgPSBjb2xfbG9naWNhbCgpLCANCiAgICAgICAgbGFsc3RvcF9rNjFfTCA9IGNvbF9sb2dpY2FsKCksIHByZXZpY3VyZmxleF9MID0gY29sX2xvZ2ljYWwoKSwgDQogICAgICAgIHB5bG9uX0wgPSBjb2xfbG9naWNhbCgpLCBsdW5hdHJhbnF1aWxpdHlfTCA9IGNvbF9sb2dpY2FsKCksIA0KICAgICAgICByb290c2hpZWxwbHVzX0wgPSBjb2xfbG9naWNhbCgpLCANCiAgICAgICAgbWlsc3RvcF9MID0gY29sX2xvZ2ljYWwoKSwgcXVhZHJpc3RvcF9MID0gY29sX2xvZ2ljYWwoKSwgDQogICAgICAgIGF6YWd1YXJkX0wgPSBjb2xfbG9naWNhbCgpLCBib3RhbmlnYXJkMjJ3cF9MID0gY29sX2xvZ2ljYWwoKSwgDQogICAgICAgIGJvdGFuaWdhcmRlc19MID0gY29sX2xvZ2ljYWwoKSwgY2FwdGl2YXByaW1lX0wgPSBjb2xfbG9naWNhbCgpLCANCiAgICAgICAgZm9udGVsaXNfTCA9IGNvbF9sb2dpY2FsKCksIG1wZWRlX0wgPSBjb2xfbG9naWNhbCgpLCANCiAgICAgICAgbm9mbHlfTCA9IGNvbF9sb2dpY2FsKCksIHZlbmVyYXRlY2dfTCA9IGNvbF9sb2dpY2FsKCksIA0KICAgICAgICBiZWxlYWY1MHNnX0wgPSBjb2xfbG9naWNhbCgpLCBlbnRydXN0c2NfTCA9IGNvbF9sb2dpY2FsKCksIA0KICAgICAgICBncm90dG9fTCA9IGNvbF9sb2dpY2FsKCkpKQ0KDQoNCm1vZF9jcml0aF9sb2cgPC0gZ2xtKGNiaW5kKHRvdGFsX2NyaXRoLCBjcml0aF9uZWcpIH4gaW5zZWN0aWNpZGVfYiArIGdoLCBkYXRhID0gZ3JlZW5ob3VzZV9hbmFseXNpcywgZmFtaWx5ID0gYmlub21pYWwoImxvZ2l0IikpDQpBbm92YShtb2RfY3JpdGhfbG9nKQ0KDQpzdW1tYXJ5KG1vZF9jcml0aF9sb2cpDQoNCm1vZF9jcml0aF9sb2cNCmFub3ZhKG1vZF9jcml0aF9sb2cpDQoNCnBsb3QoZ3JlZW5ob3VzZV9hbmFseXNpcyRpbnNlY3RpY2lkZV9iLCBncmVlbmhvdXNlX2FuYWx5c2lzJGNyaXRoX3Byb3ApDQoNCiMgU2NhdHRlcnBsb3Qgb2Ygb2JzZXJ2ZWQgcHJvcG9ydGlvbnMNCnBsb3QoZ3JlZW5ob3VzZV9hbmFseXNpcyRpbnNlY3RpY2lkZV9iLCBncmVlbmhvdXNlX2FuYWx5c2lzJGNyaXRoX3Byb3AsDQogICAgIHhsYWIgPSAiSW5zZWN0aWNpZGVfYiIsIHlsYWIgPSAiQ3JpdGhpZGlhIFByb3BvcnRpb24iLA0KICAgICBtYWluID0gIkluZmVjdGlvbiBQcm9iYWJpbGl0eSIsDQogICAgIHBjaCA9IDE2LCBjb2wgPSAiYmxhY2siLCB5bGltID0gYygwLCAxKSkNCg0KIyBTZXF1ZW5jZSBvZiBpbnNlY3RpY2lkZSB2YWx1ZXMNCmluc2VjdF9zZXEgPC0gc2VxKG1pbihncmVlbmhvdXNlX2FuYWx5c2lzJGluc2VjdGljaWRlX2IpLA0KICAgICAgICAgICAgICAgICAgbWF4KGdyZWVuaG91c2VfYW5hbHlzaXMkaW5zZWN0aWNpZGVfYiksDQogICAgICAgICAgICAgICAgICBsZW5ndGgub3V0ID0gMTAwKQ0KDQojIFVzZSBiYXNlbGluZSBncmVlbmhvdXNlIChnaDEpIGZvciBwcmVkaWN0ZWQgbGluZQ0KcHJlZF9kYXRhIDwtIGRhdGEuZnJhbWUoDQogIGluc2VjdGljaWRlX2IgPSBpbnNlY3Rfc2VxLA0KICBnaCA9IGZhY3RvcihyZXAobGV2ZWxzKGdyZWVuaG91c2VfYW5hbHlzaXMkZ2gpWzFdLCAxMDApLCANCiAgICAgICAgICAgICAgbGV2ZWxzID0gbGV2ZWxzKGdyZWVuaG91c2VfYW5hbHlzaXMkZ2gpKQ0KKQ0KDQojIEdldCBwcmVkaWN0ZWQgcHJvYmFiaWxpdGllcw0KcHJlZF9kYXRhJHByZWRfcHJvYiA8LSBwcmVkaWN0KG1vZF9jcml0aF9sb2csIG5ld2RhdGEgPSBwcmVkX2RhdGEsIHR5cGUgPSAicmVzcG9uc2UiKQ0KDQojIEFkZCBwcmVkaWN0ZWQgbGluZQ0KbGluZXMocHJlZF9kYXRhJGluc2VjdGljaWRlX2IsIHByZWRfZGF0YSRwcmVkX3Byb2IsIGNvbCA9ICJyZWQiLCBsd2QgPSAyKQ0KDQoNCmBgYA0KDQoNCmBgYHtyfQ0KbW9kX2NyaXRoX2xvZyA8LSBnbG0oY2JpbmQodG90YWxfY3JpdGgsIGNyaXRoX25lZykgfiB0b3RhbF9hcHBsaWVkICsgZ2gsIGRhdGEgPSBncmVlbmhvdXNlX2FuYWx5c2lzLCBmYW1pbHkgPSBiaW5vbWlhbCgibG9naXQiKSkNCkFub3ZhKG1vZF9jcml0aF9sb2cpDQoNCnN1bW1hcnkobW9kX2NyaXRoX2xvZykNCg0KbW9kX2NyaXRoX2xvZw0KYW5vdmEobW9kX2NyaXRoX2xvZykNCg0KcGxvdChncmVlbmhvdXNlX2FuYWx5c2lzJHRvdGFsX2FwcGxpZWQsIGdyZWVuaG91c2VfYW5hbHlzaXMkY3JpdGhfcHJvcCkNCg0KIyBTY2F0dGVycGxvdCBvZiBvYnNlcnZlZCBwcm9wb3J0aW9ucw0KcGxvdChncmVlbmhvdXNlX2FuYWx5c2lzJHRvdGFsX2FwcGxpZWQsIGdyZWVuaG91c2VfYW5hbHlzaXMkY3JpdGhfcHJvcCwNCiAgICAgeGxhYiA9ICJUb3RhbCBBcHBsaWVkIiwgeWxhYiA9ICJDcml0aGlkaWEgUHJvcG9ydGlvbiIsDQogICAgIG1haW4gPSAiSW5mZWN0aW9uIFByb2JhYmlsaXR5IiwNCiAgICAgcGNoID0gMTYsIGNvbCA9ICJibGFjayIsIHlsaW0gPSBjKDAsIDEpKQ0KDQojIFNlcXVlbmNlIG9mIGluc2VjdGljaWRlIHZhbHVlcw0KaW5zZWN0X3NlcSA8LSBzZXEobWluKGdyZWVuaG91c2VfYW5hbHlzaXMkdG90YWxfYXBwbGllZCksDQogICAgICAgICAgICAgICAgICBtYXgoZ3JlZW5ob3VzZV9hbmFseXNpcyR0b3RhbF9hcHBsaWVkKSwNCiAgICAgICAgICAgICAgICAgIGxlbmd0aC5vdXQgPSAxMDApDQoNCiMgVXNlIGJhc2VsaW5lIGdyZWVuaG91c2UgKGdoMSkgZm9yIHByZWRpY3RlZCBsaW5lDQpwcmVkX2RhdGEgPC0gZGF0YS5mcmFtZSgNCiAgdG90YWxfYXBwbGllZCA9IGluc2VjdF9zZXEsDQogIGdoID0gZmFjdG9yKHJlcChsZXZlbHMoZ3JlZW5ob3VzZV9hbmFseXNpcyRnaClbMV0sIDEwMCksIA0KICAgICAgICAgICAgICBsZXZlbHMgPSBsZXZlbHMoZ3JlZW5ob3VzZV9hbmFseXNpcyRnaCkpDQopDQoNCiMgR2V0IHByZWRpY3RlZCBwcm9iYWJpbGl0aWVzDQpwcmVkX2RhdGEkcHJlZF9wcm9iIDwtIHByZWRpY3QobW9kX2NyaXRoX2xvZywgbmV3ZGF0YSA9IHByZWRfZGF0YSwgdHlwZSA9ICJyZXNwb25zZSIpDQoNCiMgQWRkIHByZWRpY3RlZCBsaW5lDQpsaW5lcyhwcmVkX2RhdGEkdG90YWxfYXBwbGllZCwgcHJlZF9kYXRhJHByZWRfcHJvYiwgY29sID0gInJlZCIsIGx3ZCA9IDIpDQoNCmBgYA0KDQoNCmBgYHtyfQ0KDQptb2RfY3JpdGhfbG9nIDwtIGdsbShjYmluZCh0b3RhbF9jcml0aCwgY3JpdGhfbmVnKSB+IHRvdGFsX2FwcGxpY2F0aW9uICsgZ2gsIGRhdGEgPSBncmVlbmhvdXNlX2FuYWx5c2lzLCBmYW1pbHkgPSBiaW5vbWlhbCgibG9naXQiKSkNCkFub3ZhKG1vZF9jcml0aF9sb2cpDQoNCnN1bW1hcnkobW9kX2NyaXRoX2xvZykNCg0KbW9kX2NyaXRoX2xvZw0KYW5vdmEobW9kX2NyaXRoX2xvZykNCg0KcGxvdChncmVlbmhvdXNlX2FuYWx5c2lzJHRvdGFsX2FwcGxpY2F0aW9uLCBncmVlbmhvdXNlX2FuYWx5c2lzJGNyaXRoX3Byb3ApDQoNCiMgU2NhdHRlcnBsb3Qgb2Ygb2JzZXJ2ZWQgcHJvcG9ydGlvbnMNCnBsb3QoZ3JlZW5ob3VzZV9hbmFseXNpcyR0b3RhbF9hcHBsaWNhdGlvbiwgZ3JlZW5ob3VzZV9hbmFseXNpcyRjcml0aF9wcm9wLA0KICAgICB4bGFiID0gIlRvdGFsIEFwcGxpY2F0aW9ucyIsIHlsYWIgPSAiQ3JpdGhpZGlhIFByb3BvcnRpb24iLA0KICAgICBtYWluID0gIkluZmVjdGlvbiBQcm9iYWJpbGl0eSIsDQogICAgIHBjaCA9IDE2LCBjb2wgPSAiYmxhY2siLCB5bGltID0gYygwLCAxKSkNCg0KIyBTZXF1ZW5jZSBvZiBpbnNlY3RpY2lkZSB2YWx1ZXMNCmluc2VjdF9zZXEgPC0gc2VxKG1pbihncmVlbmhvdXNlX2FuYWx5c2lzJHRvdGFsX2FwcGxpY2F0aW9uKSwNCiAgICAgICAgICAgICAgICAgIG1heChncmVlbmhvdXNlX2FuYWx5c2lzJHRvdGFsX2FwcGxpY2F0aW9uKSwNCiAgICAgICAgICAgICAgICAgIGxlbmd0aC5vdXQgPSAxMDApDQoNCiMgVXNlIGJhc2VsaW5lIGdyZWVuaG91c2UgKGdoMSkgZm9yIHByZWRpY3RlZCBsaW5lDQpwcmVkX2RhdGEgPC0gZGF0YS5mcmFtZSgNCiAgdG90YWxfYXBwbGljYXRpb24gPSBpbnNlY3Rfc2VxLA0KICBnaCA9IGZhY3RvcihyZXAobGV2ZWxzKGdyZWVuaG91c2VfYW5hbHlzaXMkZ2gpWzFdLCAxMDApLCANCiAgICAgICAgICAgICAgbGV2ZWxzID0gbGV2ZWxzKGdyZWVuaG91c2VfYW5hbHlzaXMkZ2gpKQ0KKQ0KDQojIEdldCBwcmVkaWN0ZWQgcHJvYmFiaWxpdGllcw0KcHJlZF9kYXRhJHByZWRfcHJvYiA8LSBwcmVkaWN0KG1vZF9jcml0aF9sb2csIG5ld2RhdGEgPSBwcmVkX2RhdGEsIHR5cGUgPSAicmVzcG9uc2UiKQ0KDQojIEFkZCBwcmVkaWN0ZWQgbGluZQ0KbGluZXMocHJlZF9kYXRhJHRvdGFsX2FwcGxpY2F0aW9uLCBwcmVkX2RhdGEkcHJlZF9wcm9iLCBjb2wgPSAicmVkIiwgbHdkID0gMikNCg0KDQpgYGANCg0KYGBge3J9DQptb2RfY3JpdGhfbG9nIDwtIGdsbShjYmluZCh0b3RhbF9jcml0aCwgY3JpdGhfbmVnKSB+IGZ1bmdpY2lkZV9iICsgZ2gsIGRhdGEgPSBncmVlbmhvdXNlX2FuYWx5c2lzLCBmYW1pbHkgPSBiaW5vbWlhbCgibG9naXQiKSkNCkFub3ZhKG1vZF9jcml0aF9sb2cpDQoNCnN1bW1hcnkobW9kX2NyaXRoX2xvZykNCg0KbW9kX2NyaXRoX2xvZw0KYW5vdmEobW9kX2NyaXRoX2xvZykNCg0KcGxvdChncmVlbmhvdXNlX2FuYWx5c2lzJGZ1bmdpY2lkZV9iLCBncmVlbmhvdXNlX2FuYWx5c2lzJGNyaXRoX3Byb3ApDQoNCiMgU2NhdHRlcnBsb3Qgb2Ygb2JzZXJ2ZWQgcHJvcG9ydGlvbnMNCnBsb3QoZ3JlZW5ob3VzZV9hbmFseXNpcyRmdW5naWNpZGVfYiwgZ3JlZW5ob3VzZV9hbmFseXNpcyRjcml0aF9wcm9wLA0KICAgICB4bGFiID0gImZ1bmdpY2lkZV9iIiwgeWxhYiA9ICJDcml0aGlkaWEgUHJvcG9ydGlvbiIsDQogICAgIG1haW4gPSAiSW5mZWN0aW9uIFByb2JhYmlsaXR5IiwNCiAgICAgcGNoID0gMTYsIGNvbCA9ICJibGFjayIsIHlsaW0gPSBjKDAsIDEpKQ0KDQojIFNlcXVlbmNlIG9mIGluc2VjdGljaWRlIHZhbHVlcw0KaW5zZWN0X3NlcSA8LSBzZXEobWluKGdyZWVuaG91c2VfYW5hbHlzaXMkZnVuZ2ljaWRlX2IpLA0KICAgICAgICAgICAgICAgICAgbWF4KGdyZWVuaG91c2VfYW5hbHlzaXMkZnVuZ2ljaWRlX2IpLA0KICAgICAgICAgICAgICAgICAgbGVuZ3RoLm91dCA9IDEwMCkNCg0KIyBVc2UgYmFzZWxpbmUgZ3JlZW5ob3VzZSAoZ2gxKSBmb3IgcHJlZGljdGVkIGxpbmUNCnByZWRfZGF0YSA8LSBkYXRhLmZyYW1lKA0KICBmdW5naWNpZGVfYiA9IGluc2VjdF9zZXEsDQogIGdoID0gZmFjdG9yKHJlcChsZXZlbHMoZ3JlZW5ob3VzZV9hbmFseXNpcyRnaClbMV0sIDEwMCksIA0KICAgICAgICAgICAgICBsZXZlbHMgPSBsZXZlbHMoZ3JlZW5ob3VzZV9hbmFseXNpcyRnaCkpDQopDQoNCiMgR2V0IHByZWRpY3RlZCBwcm9iYWJpbGl0aWVzDQpwcmVkX2RhdGEkcHJlZF9wcm9iIDwtIHByZWRpY3QobW9kX2NyaXRoX2xvZywgbmV3ZGF0YSA9IHByZWRfZGF0YSwgdHlwZSA9ICJyZXNwb25zZSIpDQoNCiMgQWRkIHByZWRpY3RlZCBsaW5lDQpsaW5lcyhwcmVkX2RhdGEkZnVuZ2ljaWRlX2IsIHByZWRfZGF0YSRwcmVkX3Byb2IsIGNvbCA9ICJyZWQiLCBsd2QgPSAyKQ0KYGBgDQoNCg==