Part 1
I will be completing a data analysis on the two variables Anx(Anxiety) and Opt(Optimism).
Histogram for Anx(Anxiety):
histogram(Data3350$Anx,
width = 1,
type = "count",
main = "Histogram: Students' Anxiety Level",
xlab = "Anxiety Level",
ylab = "Number of Students")

Box plot for Anx(Anxiety):
boxplot(Data3350$Anx, horizontal = TRUE,
main = "Box plot: Students' Anxiety Level",
xlab = "Anxiety Level")

Density plot for Anx(Anxiety):
densityplot(Data3350$Anx,
#type = "count",
main = "Density plot: Students' Anxiety Levels",
xlab = "Anxiety Levels")

The shape of the data for students’ anxiety levels show a normal distribution that is skewed to the right. The histogram and density plot both show the shape well. There is a bell shaped curve with a longer tail on the right-hand side. That longer tail is due to an outlier in the data set. The box plot very easily shows the outlier past the upper tail. Even the right tail is unequal (longer) in length to the left tail, indicating a right skewed data set. The outlier tells us that the particular student has much higher levels of anxiety than the average population. The graphs indicate that the average student has an anxiety level around the mid 30’s.
Histogram for Opt(Optimism):
histogram(Data3350$Opt,
width = 1,
type = "count",
main = "Histogram: Students' Optimism Level",
xlab = "Optimism Level",
ylab = "Number of Students")

Box plot for Opt(Optimism):
boxplot(Data3350$Opt, horizontal = TRUE,
main = "Box plot: Students' Optimism Level",
xlab = "Optimism Level")

Density plot for Opt(Optimism):
densityplot(Data3350$Opt,
main = "Density plot: Students' Optimsim Levels",
xlab = "Optimism Levels")

The data for students’ optimism levels shows a normal distribution as seen in the histogram and density plots. There is a distinct bell-shaped curve that is skewed to the left. The box plot shows that there is an outlier on the left hand side of the data, below the lower tail. The left tail is a bit longer than the right, indicating a left-handed skew. The outlier tells us that the specific student is much less optimistic than the general population. The graphs indicate that the average student’s optimism level is around 20.
Part 2
Independent Samples t-test of Anx(Anxiety) and age, older vs younger students (G21). The G21 variable indicates whether the student is greater than or equal to 21 years old. So y = greater than or equal to 21. u = under 21.
H0: μy = μu
Ha: μy ≠ μu
Verification:
favstats(~ Anx, data = Data3350)
So, n (which is the total number of students) is 144, and 144 ≥ 40. Therefore, no data checks are required because of the large sample size. The t-test is robust and will guarantee accurate p-values.
The table below shows the frequency table comparisons.
tally(Anx ~ G21, data = Data3350)
G21
Anx N Y
23 1 0
24 2 1
25 3 2
26 4 1
27 4 3
28 5 5
29 2 1
30 4 4
31 0 2
32 6 2
33 6 2
34 1 1
35 4 2
36 5 4
37 3 0
38 1 1
39 4 0
40 2 2
41 5 2
42 2 1
43 3 1
44 3 2
45 6 1
46 4 2
47 2 0
48 1 0
50 3 0
51 0 2
52 1 1
53 3 2
54 1 0
57 1 0
58 0 1
59 2 1
69 1 0
<NA> 11 10
Here are the summary statistics.
favstats(Anx ~ G21, data = Data3350)
Homogeneity Check: 95 : 45 –> 1.93 : 1. The ratio between the two groups is less than 2 : 1. We do not have sharply unequal group sizes, therefore we have no issues with the homogeneity assumption. We may proceed.
Run Test: (α = 0.05)
t.test(Anx ~ G21, data = Data3350,
alternative = "two.sided")
Welch Two Sample t-test
data: Anx by G21
t = 0.80338, df = 97.922, p-value = 0.4237
alternative hypothesis: true difference in means is not equal to 0
95 percent confidence interval:
-1.950232 4.603293
sample estimates:
mean in group N mean in group Y
38.00000 36.67347
p = 0.4237 which is greater than α = 0.05. We fail to reject the null.
Conclusion:
Evidence suggests that age (whether a student is younger or older than 21) does not play a factor into levels of anxiety for this population of students.
Independent Samples t-test of Opt(Optimism) and biological sex. m = male, f = female
H0: μm = μf
Ha: μm ≠ μf
Verification:
favstats(~ Opt, data = Data3350)
So, n (which is the total number of students) is 146, and 146 ≥ 40. Therefore, no data checks are required because of the large sample size. The t-test is robust and will guarantee accurate p-values.
The table below shows the frequency table comparisons.
tally(Opt ~ Sex, data = Data3350)
Sex
Opt F M
6 1 0
8 1 0
9 1 0
10 1 2
12 2 0
13 5 1
14 2 2
15 2 4
16 5 4
17 7 6
18 7 6
19 9 2
20 7 5
21 6 8
22 5 8
23 7 4
24 5 1
25 4 0
26 3 3
27 1 3
28 1 2
29 2 1
<NA> 12 7
Here are the summary statistics.
favstats(Opt ~ Sex, data = Data3350)
Homogeneity Check: 84 : 62 –> 1.35 : 1. The ratio between the two groups is less than 2 : 1. We do not have sharply unequal group sizes, therefore we have no issues with the homogeneity assumption. We may proceed.
Run Test: (α = 0.05)
t.test(Opt ~ Sex, data = Data3350,
alternative = "two.sided")
Welch Two Sample t-test
data: Opt by Sex
t = -0.82488, df = 137.9, p-value = 0.4109
alternative hypothesis: true difference in means is not equal to 0
95 percent confidence interval:
-2.1003546 0.8637954
sample estimates:
mean in group F mean in group M
19.33333 19.95161
p = 0.4109 which is greater than α = 0.05.We fail to reject the null.
Conclusion:
Evidence suggests that biological sex does not play a factor into levels of optimism for this population of students.
Part 3
Chi-Square test of independence comparing the variable SitClass (a person’s seating preference in class) to whether they are older students or younger ones (G21).
H0: Seating preference is independent of students’ age
Ha: Seating preference is dependent of students’ age
Verification:
We require that there be no more than 20% low Expected cell counts where a “low cell count” is defined to be strictly less than 5.
xSqr = xchisq.test(SitClass ~ G21, data = Data3350)
xSqr$expected
G21
SitClass N Y
B 22.48485 12.51515
F 37.26061 20.73939
M 46.25455 25.74545
Since none of the cells less are than 5, it is OK to proceed.
Mosaic Plot
mosaicplot(SitClass ~ G21 , data = Data3350,
color = TRUE,
main = "Mosaic Plot: SitClass by Age")

B, F, M, refer to Back, Middle, and Front of the classroom. Since the Back is narrower than Front, which is narrower than the Middle, overall, more participants choose to sit in Middle than the Front. The back has the least amount of responses of the three choices. In the 21 or older category (Y), the responses seem to be approximately distributed evely among B, F, M. However, for the Under 21 group (N), there seems to be a larger portion of students who choose M and F over B. This plot indicates that an age based difference seems to exist. However, a statistical analysis (Chi-squared) is needed to test whether is it statistically significant.
Run Test: α = 0.05
xSqr = xchisq.test(SitClass ~ G21, data = Data3350)
Pearson's Chi-squared test
data: x
X-squared = 1.2288, df = 2, p-value = 0.541
20 15
(22.48) (12.52)
[0.2746] [0.4934]
<-0.524> < 0.702>
37 21
(37.26) (20.74)
[0.0018] [0.0033]
<-0.043> < 0.057>
49 23
(46.25) (25.75)
[0.1630] [0.2928]
< 0.404> <-0.541>
key:
observed
(expected)
[contribution to X-squared]
<Pearson residual>
The Chi-Squared value is 1.2288, and the p-value is 0.541 which is less than α = 0.05. Therefore we fail to reject the null.
Conclusion:
Evidence suggests that where a student sits in class (SitClass) does not depend on the students’ age (G21).
Part 4
ANOVA Test
I will be conducting an ANOVA test using the variables Play(adult playfulness) and the grouping variable PHS (primary humor style).
H0: μAF = μAG = μSE = μSD
Ha: At least one is different
Verification
favstats(Play ~ PHS, data = Data3350)
The overall sample size is more than 20. 135 > 20. Also the ratio of the largest to smallest group size is to be 2 : 1 or less. 39 : 29 –> 1.34 : 1. We also do not have sharply unequal group sizes. Data is appropriate for ANOVA procedures. We can guarantee accurate p-values and may proceed.
Run Test α = 0.05
ANOVA
mod = lm(Play ~ PHS , data = Data3350)
anova(mod)
Analysis of Variance Table
Response: Play
Df Sum Sq Mean Sq F value Pr(>F)
PHS 3 5242 1747.30 5.6889 0.00108 **
Residuals 131 40236 307.14
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Since p = 0.00108 we reject the null. We have strong evidence for a difference in at least some of the group means, but we don’t know for sure where those differences lie. Since we have rejected the null, we need to run a post hoc Tukey HSD test.
post hoc Tukey HSD
TukeyHSD(mod, conf.level = 0.95)
Tukey multiple comparisons of means
95% family-wise confidence level
Fit: aov(formula = x)
$PHS
diff lwr upr p adj
AG-AF -14.5022104 -25.6850758 -3.319345 0.0053138
SD-AF -14.1475096 -25.5273552 -2.767664 0.0082794
SE-AF -4.0489433 -15.8311251 7.733239 0.8078253
SD-AG 0.3547009 -10.1861828 10.895584 0.9997582
SE-AG 10.4532672 -0.5207544 21.427289 0.0679879
SE-SD 10.0985663 -1.0761175 21.273250 0.0918200
mplot
mplot(TukeyHSD(mod, conf.level = 0.95))

The mplot makes it easier to inspect the confidence intervals. We find two significant intervals:
AG-AF –> Significance: p = 0.0053138 –> AG < AF
SD-AF –> Significance: p = 0.0082794 –> SD < AF
Conclusion
Evidence suggests that subjects with aggressive humor traits (AF) scored significantly lower on the adult playfulness measure than those with affiliative humor traits (AF). Subjects with self-defeating (SD) humor scored significantly lower on the adult playfulness measure than those with affiliative humor traits (AF) as well.
Part 5
Verifiying Linearity Assumption
xyplot of Neuroticism vs. Thrill Seeking
xyplot(Thrill ~ Neuro, data = Data3350 , type = c("p","r"),
main = "Neurotisism vs. Thrill Seeking",
xlab = "Neurotisism",
ylab = "Thrill Seeking")

The pattern in the scatter plot provides evidence of a linear pattern between the variables Neuroticism and Thrill Seeking. As the Neuroticism score increases, generally the Thrill Seeking scores decrease.
Linear model for Neuroticism vs. Thrill Seeking
lm(Thrill ~ Neuro, data = Data3350)
Call:
lm(formula = Thrill ~ Neuro, data = Data3350)
Coefficients:
(Intercept) Neuro
24.2539 -0.1102
Created an object called mod
mod = lm(Thrill ~ Neuro, data = Data3350)
Verifying Normality Assumption
We will evaluate the normality assumption which says that the residuals should be normally distributed.
Histogram of the residuals.
histogram (~ resid (mod))

The histogram shows a normal distribution with a skew to the left.
qplot to test normality assumption
qqmath( ~ resid(mod))

With the qplot, we should see a straight line if the residuals meet the model assumptions. There doesn’t seem to be any sharp drop-offs or any points that jump too far out of line. Therefore, the data appears to meet the normality assumption.
Analysis Statements for Linear Regression
summary(mod)
Call:
lm(formula = Thrill ~ Neuro, data = Data3350)
Residuals:
Min 1Q Median 3Q Max
-11.7262 -3.8521 0.5888 3.8250 11.2581
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 24.25385 1.44049 16.837 < 2e-16 ***
Neuro -0.11024 0.03201 -3.444 0.000753 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 5.304 on 143 degrees of freedom
(20 observations deleted due to missingness)
Multiple R-squared: 0.07657, Adjusted R-squared: 0.07012
F-statistic: 11.86 on 1 and 143 DF, p-value: 0.0007535
The \(R^{2}\) value is 0.07657. \(\sqrt{0.07657}\) ≈ 0.2767 = r.
In this example, we find that there is a weak, negative correlation between Neuroticism and Thrill Seeking.
Analyzing \(R^{2}\)
\(R^{2}\) indicates the coefficient of determination. Since \(R^{2}\) = 0.07657, 7.66% of the Thrill Seeking scores are accounted for how the Neuroticism scores change.
Prediction Equation
f = makeFun(mod)
f
function (Neuro, ..., transformation = function (x)
x)
return(transformation(predict(model, newdata = data.frame(Neuro = Neuro),
...)))
<environment: 0x7f943c9725e0>
attr(,"coefficients")
(Intercept) Neuro
24.2538528 -0.1102396
Equation = f(x) = 24.254 - 0.1102x
We can predict out the level of Neuroticism based on a Thrill Seeking score of 21, by substituting f(x) with 21 and solving for x.
If someone has a Thrill Seeking score of 21, we expect their Neuroticism score to be about 29.5 ≈ 30.
Conclusion
We verified the linearity and normality assumptions and constructed a linear model, and analyzed three of the model outputs: correlation, \(R^{2}\) and the slope coefficient. Evidence suggests that there is a weak, negative correlation and that Neuroticim appears to account for about 7.66% of the variance in Thrill Seeking. We also understand from the slope how changes in the predictor variable influences the dependent variable.
LS0tCnRpdGxlOiAiU3Jpbml2YXNhbkRpdnlhLnJtZCIKb3V0cHV0OiBodG1sX25vdGVib29rCi0tLQoKYGBge3J9CmxpYnJhcnkobW9zYWljKQpgYGAKIyMgUGFydCAxCgpJIHdpbGwgYmUgY29tcGxldGluZyBhIGRhdGEgYW5hbHlzaXMgb24gdGhlIHR3byB2YXJpYWJsZXMgKipBbngoQW54aWV0eSkqKiBhbmQgKipPcHQoT3B0aW1pc20pKiouIAoKCiMjIyBIaXN0b2dyYW0gZm9yIEFueChBbnhpZXR5KToKCmBgYHtyfQpoaXN0b2dyYW0oRGF0YTMzNTAkQW54LAogICAgICAgICAgd2lkdGggPSAxLAogICAgICAgICAgdHlwZSA9ICJjb3VudCIsCiAgICAgICAgICBtYWluID0gIkhpc3RvZ3JhbTogU3R1ZGVudHMnIEFueGlldHkgTGV2ZWwiLAogICAgICAgICAgeGxhYiA9ICJBbnhpZXR5IExldmVsIiwKICAgICAgICAgIHlsYWIgPSAiTnVtYmVyIG9mIFN0dWRlbnRzIikKYGBgCiMjIyBCb3ggcGxvdCBmb3IgQW54KEFueGlldHkpOgoKYGBge3J9CmJveHBsb3QoRGF0YTMzNTAkQW54LCBob3Jpem9udGFsID0gVFJVRSwKICAgICBtYWluID0gIkJveCBwbG90OiBTdHVkZW50cycgQW54aWV0eSBMZXZlbCIsCiAgICAgeGxhYiA9ICJBbnhpZXR5IExldmVsIikKYGBgCiMjIyBEZW5zaXR5IHBsb3QgZm9yIEFueChBbnhpZXR5KToKYGBge3J9CmRlbnNpdHlwbG90KERhdGEzMzUwJEFueCwKICAgICAgbWFpbiA9ICJEZW5zaXR5IHBsb3Q6IFN0dWRlbnRzJyBBbnhpZXR5IExldmVscyIsCiAgICAgIHhsYWIgPSAiQW54aWV0eSBMZXZlbHMiKQpgYGAKVGhlIHNoYXBlIG9mIHRoZSBkYXRhIGZvciBzdHVkZW50cycgYW54aWV0eSBsZXZlbHMgc2hvdyBhICoqbm9ybWFsIGRpc3RyaWJ1dGlvbioqIHRoYXQgaXMgKipza2V3ZWQqKiB0byB0aGUgKipyaWdodCoqLiBUaGUgaGlzdG9ncmFtIGFuZCBkZW5zaXR5IHBsb3QgYm90aCBzaG93IHRoZSBzaGFwZSB3ZWxsLiBUaGVyZSBpcyBhIGJlbGwgc2hhcGVkIGN1cnZlIHdpdGggYSBsb25nZXIgdGFpbCBvbiB0aGUgcmlnaHQtaGFuZCBzaWRlLiBUaGF0IGxvbmdlciB0YWlsIGlzIGR1ZSB0byBhbiAqKm91dGxpZXIqKiBpbiB0aGUgZGF0YSBzZXQuIFRoZSBib3ggcGxvdCB2ZXJ5IGVhc2lseSBzaG93cyB0aGUgb3V0bGllciBwYXN0IHRoZSB1cHBlciB0YWlsLiBFdmVuIHRoZSByaWdodCB0YWlsIGlzIHVuZXF1YWwgKGxvbmdlcikgaW4gbGVuZ3RoIHRvIHRoZSBsZWZ0IHRhaWwsIGluZGljYXRpbmcgYSByaWdodCBza2V3ZWQgZGF0YSBzZXQuIFRoZSBvdXRsaWVyIHRlbGxzIHVzIHRoYXQgdGhlIHBhcnRpY3VsYXIgc3R1ZGVudCBoYXMgbXVjaCBoaWdoZXIgbGV2ZWxzIG9mIGFueGlldHkgdGhhbiB0aGUgYXZlcmFnZSBwb3B1bGF0aW9uLiBUaGUgZ3JhcGhzIGluZGljYXRlIHRoYXQgdGhlIGF2ZXJhZ2Ugc3R1ZGVudCBoYXMgYW4gYW54aWV0eSBsZXZlbCBhcm91bmQgdGhlIG1pZCAzMCdzLiAgCgojIyMgSGlzdG9ncmFtIGZvciBPcHQoT3B0aW1pc20pOgpgYGB7cn0KaGlzdG9ncmFtKERhdGEzMzUwJE9wdCwKICAgICAgICAgIHdpZHRoID0gMSwKICAgICAgICAgIHR5cGUgPSAiY291bnQiLAogICAgICAgICAgbWFpbiA9ICJIaXN0b2dyYW06IFN0dWRlbnRzJyBPcHRpbWlzbSBMZXZlbCIsCiAgICAgICAgICB4bGFiID0gIk9wdGltaXNtIExldmVsIiwKICAgICAgICAgIHlsYWIgPSAiTnVtYmVyIG9mIFN0dWRlbnRzIikKYGBgCgojIyMgQm94IHBsb3QgZm9yIE9wdChPcHRpbWlzbSk6CmBgYHtyfQpib3hwbG90KERhdGEzMzUwJE9wdCwgaG9yaXpvbnRhbCA9IFRSVUUsCiAgICAgbWFpbiA9ICJCb3ggcGxvdDogU3R1ZGVudHMnIE9wdGltaXNtIExldmVsIiwKICAgICB4bGFiID0gIk9wdGltaXNtIExldmVsIikKYGBgCiMjIyBEZW5zaXR5IHBsb3QgZm9yIE9wdChPcHRpbWlzbSk6CmBgYHtyfQpkZW5zaXR5cGxvdChEYXRhMzM1MCRPcHQsCiAgICAgIG1haW4gPSAiRGVuc2l0eSBwbG90OiBTdHVkZW50cycgT3B0aW1zaW0gTGV2ZWxzIiwKICAgICAgeGxhYiA9ICJPcHRpbWlzbSBMZXZlbHMiKQpgYGAKVGhlIGRhdGEgZm9yIHN0dWRlbnRzJyBvcHRpbWlzbSBsZXZlbHMgc2hvd3MgYSAqKm5vcm1hbCBkaXN0cmlidXRpb24qKiBhcyBzZWVuIGluIHRoZSBoaXN0b2dyYW0gYW5kIGRlbnNpdHkgcGxvdHMuIFRoZXJlIGlzIGEgZGlzdGluY3QgYmVsbC1zaGFwZWQgY3VydmUgdGhhdCBpcyAqKnNrZXdlZCoqIHRvIHRoZSAqKmxlZnQqKi4gVGhlIGJveCBwbG90IHNob3dzIHRoYXQgdGhlcmUgaXMgYW4gKipvdXRsaWVyKiogb24gdGhlIGxlZnQgaGFuZCBzaWRlIG9mIHRoZSBkYXRhLCBiZWxvdyB0aGUgbG93ZXIgdGFpbC4gVGhlIGxlZnQgdGFpbCBpcyBhIGJpdCBsb25nZXIgdGhhbiB0aGUgcmlnaHQsIGluZGljYXRpbmcgYSBsZWZ0LWhhbmRlZCBza2V3LiBUaGUgb3V0bGllciB0ZWxscyB1cyB0aGF0IHRoZSBzcGVjaWZpYyBzdHVkZW50IGlzIG11Y2ggbGVzcyBvcHRpbWlzdGljIHRoYW4gdGhlIGdlbmVyYWwgcG9wdWxhdGlvbi4gVGhlIGdyYXBocyBpbmRpY2F0ZSB0aGF0IHRoZSBhdmVyYWdlIHN0dWRlbnQncyBvcHRpbWlzbSBsZXZlbCBpcyBhcm91bmQgMjAuCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KIyMgUGFydCAyCgoqKkluZGVwZW5kZW50IFNhbXBsZXMgdC10ZXN0Kiogb2YgKipBbngoQW54aWV0eSkqKiBhbmQgYWdlLCBvbGRlciB2cyB5b3VuZ2VyIHN0dWRlbnRzICoqKEcyMSkqKi4gVGhlIEcyMSB2YXJpYWJsZSBpbmRpY2F0ZXMgd2hldGhlciB0aGUgc3R1ZGVudCBpcyBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gMjEgeWVhcnMgb2xkLiBTbyB5ID0gZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIDIxLiB1ID0gdW5kZXIgMjEuCgoqKkgwOiDOvHkgPSDOvHUqKgoKKipIYTogzrx5IOKJoCDOvHUqKgoKIyMjIFZlcmlmaWNhdGlvbjogCgpgYGB7cn0KZmF2c3RhdHMofiBBbngsIGRhdGEgPSBEYXRhMzM1MCkKYGBgClNvLCBuICh3aGljaCBpcyB0aGUgdG90YWwgbnVtYmVyIG9mIHN0dWRlbnRzKSBpcyAxNDQsIGFuZCAqKjE0NCDiiaUgNDAqKi4gVGhlcmVmb3JlLCBubyBkYXRhIGNoZWNrcyBhcmUgcmVxdWlyZWQgYmVjYXVzZSBvZiB0aGUgbGFyZ2Ugc2FtcGxlIHNpemUuIFRoZSB0LXRlc3QgaXMgcm9idXN0IGFuZCB3aWxsIGd1YXJhbnRlZSBhY2N1cmF0ZSBwLXZhbHVlcy4gCgpUaGUgdGFibGUgYmVsb3cgc2hvd3MgdGhlIGZyZXF1ZW5jeSB0YWJsZSBjb21wYXJpc29ucy4KCmBgYHtyfQp0YWxseShBbnggfiBHMjEsIGRhdGEgPSBEYXRhMzM1MCkKYGBgCgpIZXJlIGFyZSB0aGUgc3VtbWFyeSBzdGF0aXN0aWNzLgoKYGBge3J9CmZhdnN0YXRzKEFueCB+IEcyMSwgZGF0YSA9IERhdGEzMzUwKQpgYGAKKipIb21vZ2VuZWl0eSBDaGVjayoqOiA5NSA6IDQ1IC0tPiAxLjkzIDogMS4gVGhlIHJhdGlvIGJldHdlZW4gdGhlIHR3byBncm91cHMgaXMgbGVzcyB0aGFuIDIgOiAxLiBXZSBkbyBub3QgaGF2ZSBzaGFycGx5IHVuZXF1YWwgZ3JvdXAgc2l6ZXMsIHRoZXJlZm9yZSB3ZSBoYXZlIG5vIGlzc3VlcyB3aXRoIHRoZSBob21vZ2VuZWl0eSBhc3N1bXB0aW9uLiAqKldlIG1heSBwcm9jZWVkKiouIAoKIyMjIFJ1biBUZXN0OiAozrEgPSAwLjA1KQoKYGBge3J9CnQudGVzdChBbnggfiBHMjEsIGRhdGEgPSBEYXRhMzM1MCwKICAgICAgIGFsdGVybmF0aXZlICA9ICJ0d28uc2lkZWQiKQpgYGAKCnAgPSAwLjQyMzcgd2hpY2ggaXMgZ3JlYXRlciB0aGFuIM6xID0gMC4wNS4gKipXZSBmYWlsIHRvIHJlamVjdCB0aGUgbnVsbCoqLiAKCiMjIyBDb25jbHVzaW9uOgoKRXZpZGVuY2Ugc3VnZ2VzdHMgdGhhdCBhZ2UgKHdoZXRoZXIgYSBzdHVkZW50IGlzIHlvdW5nZXIgb3Igb2xkZXIgdGhhbiAyMSkgZG9lcyBub3QgcGxheSBhIGZhY3RvciBpbnRvIGxldmVscyBvZiBhbnhpZXR5IGZvciB0aGlzIHBvcHVsYXRpb24gb2Ygc3R1ZGVudHMuIAoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KCioqSW5kZXBlbmRlbnQgU2FtcGxlcyB0LXRlc3QqKiBvZiAqKk9wdChPcHRpbWlzbSkqKiBhbmQgKipiaW9sb2dpY2FsIHNleCoqLiBtID0gbWFsZSwgZiA9IGZlbWFsZQoKKipIMDogzrxtID0gzrxmKioKCioqSGE6IM68bSDiiaAgzrxmKioKCiMjIyBWZXJpZmljYXRpb246IAoKYGBge3J9CmZhdnN0YXRzKH4gT3B0LCBkYXRhID0gRGF0YTMzNTApCmBgYAoKU28sIG4gKHdoaWNoIGlzIHRoZSB0b3RhbCBudW1iZXIgb2Ygc3R1ZGVudHMpIGlzIDE0NiwgYW5kICoqMTQ2IOKJpSA0MCoqLiBUaGVyZWZvcmUsIG5vIGRhdGEgY2hlY2tzIGFyZSByZXF1aXJlZCBiZWNhdXNlIG9mIHRoZSBsYXJnZSBzYW1wbGUgc2l6ZS4gVGhlIHQtdGVzdCBpcyByb2J1c3QgYW5kIHdpbGwgZ3VhcmFudGVlIGFjY3VyYXRlIHAtdmFsdWVzLiAKClRoZSB0YWJsZSBiZWxvdyBzaG93cyB0aGUgZnJlcXVlbmN5IHRhYmxlIGNvbXBhcmlzb25zLgoKYGBge3J9CnRhbGx5KE9wdCB+IFNleCwgZGF0YSA9IERhdGEzMzUwKQpgYGAKCkhlcmUgYXJlIHRoZSBzdW1tYXJ5IHN0YXRpc3RpY3MuCgpgYGB7cn0KZmF2c3RhdHMoT3B0IH4gU2V4LCBkYXRhID0gRGF0YTMzNTApCmBgYAoqKkhvbW9nZW5laXR5IENoZWNrKio6IDg0IDogNjIgLS0+IDEuMzUgOiAxLiBUaGUgcmF0aW8gYmV0d2VlbiB0aGUgdHdvIGdyb3VwcyBpcyBsZXNzIHRoYW4gMiA6IDEuIFdlIGRvIG5vdCBoYXZlIHNoYXJwbHkgdW5lcXVhbCBncm91cCBzaXplcywgdGhlcmVmb3JlIHdlIGhhdmUgbm8gaXNzdWVzIHdpdGggdGhlIGhvbW9nZW5laXR5IGFzc3VtcHRpb24uICoqV2UgbWF5IHByb2NlZWQqKi4gCgojIyMgUnVuIFRlc3Q6ICjOsSA9IDAuMDUpCgpgYGB7cn0KdC50ZXN0KE9wdCB+IFNleCwgZGF0YSA9IERhdGEzMzUwLAogICAgICAgYWx0ZXJuYXRpdmUgID0gInR3by5zaWRlZCIpCmBgYAoKcCA9IDAuNDEwOSB3aGljaCBpcyBncmVhdGVyIHRoYW4gzrEgPSAwLjA1LioqV2UgZmFpbCB0byByZWplY3QgdGhlIG51bGwqKi4gCgojIyMgQ29uY2x1c2lvbjoKCkV2aWRlbmNlIHN1Z2dlc3RzIHRoYXQgYmlvbG9naWNhbCBzZXggZG9lcyBub3QgcGxheSBhIGZhY3RvciBpbnRvIGxldmVscyBvZiBvcHRpbWlzbSBmb3IgdGhpcyBwb3B1bGF0aW9uIG9mIHN0dWRlbnRzLiAKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwoKIyMgUGFydCAzCgoqKkNoaS1TcXVhcmUgdGVzdCBvZiBpbmRlcGVuZGVuY2UqKiBjb21wYXJpbmcgdGhlIHZhcmlhYmxlICoqU2l0Q2xhc3MqKiAoYSBwZXJzb27igJlzIHNlYXRpbmcgcHJlZmVyZW5jZSBpbiBjbGFzcykgdG8gd2hldGhlciB0aGV5IGFyZSBvbGRlciBzdHVkZW50cyBvciB5b3VuZ2VyIG9uZXMgKiooRzIxKSoqLgoKKipIMDogU2VhdGluZyBwcmVmZXJlbmNlIGlzIGluZGVwZW5kZW50IG9mIHN0dWRlbnRzJyBhZ2UqKgoKKipIYTogU2VhdGluZyBwcmVmZXJlbmNlIGlzIGRlcGVuZGVudCBvZiBzdHVkZW50cycgYWdlKioKCiMjIyBWZXJpZmljYXRpb246IAoKV2UgcmVxdWlyZSB0aGF0IHRoZXJlIGJlIG5vIG1vcmUgdGhhbiAyMCUgbG93IEV4cGVjdGVkIGNlbGwgY291bnRzIHdoZXJlIGEg4oCcbG93IGNlbGwgY291bnTigJ0gaXMgZGVmaW5lZCB0byBiZSBzdHJpY3RseSBsZXNzIHRoYW4gNS4gCgpgYGB7cn0KeFNxciA9IHhjaGlzcS50ZXN0KFNpdENsYXNzIH4gRzIxLCBkYXRhID0gRGF0YTMzNTApCmBgYApgYGB7cn0KeFNxciRleHBlY3RlZApgYGAKU2luY2Ugbm9uZSBvZiB0aGUgY2VsbHMgbGVzcyBhcmUgdGhhbiA1LCBpdCBpcyAqKk9LIHRvIHByb2NlZWQqKi4gCgojIyMjIE1vc2FpYyBQbG90CgpgYGB7cn0KbW9zYWljcGxvdChTaXRDbGFzcyB+IEcyMSAsIGRhdGEgPSBEYXRhMzM1MCwgCiAgICAgICAgICAgY29sb3IgPSBUUlVFLAogICAgICAgICAgIG1haW4gPSAiTW9zYWljIFBsb3Q6IFNpdENsYXNzIGJ5IEFnZSIpCmBgYApCLCBGLCBNLCByZWZlciB0byBCYWNrLCBNaWRkbGUsIGFuZCBGcm9udCBvZiB0aGUgY2xhc3Nyb29tLiBTaW5jZSB0aGUgQmFjayBpcyBuYXJyb3dlciB0aGFuIEZyb250LCB3aGljaCBpcyBuYXJyb3dlciB0aGFuIHRoZSBNaWRkbGUsIG92ZXJhbGwsICoqbW9yZSBwYXJ0aWNpcGFudHMgY2hvb3NlIHRvIHNpdCBpbiBNaWRkbGUgdGhhbiB0aGUgRnJvbnQqKi4gVGhlICoqYmFjayoqIGhhcyB0aGUgKipsZWFzdCBhbW91bnQgb2YgcmVzcG9uc2VzKiogb2YgdGhlIHRocmVlIGNob2ljZXMuIEluIHRoZSAqKjIxIG9yIG9sZGVyKiogY2F0ZWdvcnkgKFkpLCB0aGUgKipyZXNwb25zZXMgc2VlbSB0byBiZSBhcHByb3hpbWF0ZWx5IGRpc3RyaWJ1dGVkKiogZXZlbHkgYW1vbmcgQiwgRiwgTS4gSG93ZXZlciwgZm9yIHRoZSAqKlVuZGVyIDIxKiogZ3JvdXAgKE4pLCB0aGVyZSBzZWVtcyB0byBiZSBhICoqbGFyZ2VyIHBvcnRpb24gb2Ygc3R1ZGVudHMgd2hvIGNob29zZSBNIGFuZCBGIG92ZXIgQioqLiBUaGlzIHBsb3QgaW5kaWNhdGVzIHRoYXQgYW4gKiphZ2UgYmFzZWQgZGlmZmVyZW5jZSBzZWVtcyB0byBleGlzdCoqLiBIb3dldmVyLCBhICoqc3RhdGlzdGljYWwgYW5hbHlzaXMgKENoaS1zcXVhcmVkKSBpcyBuZWVkZWQqKiB0byB0ZXN0IHdoZXRoZXIgaXMgaXQgc3RhdGlzdGljYWxseSBzaWduaWZpY2FudC4gICAKCiMjIyBSdW4gVGVzdDogzrEgPSAwLjA1CgpgYGB7cn0KeFNxciA9IHhjaGlzcS50ZXN0KFNpdENsYXNzIH4gRzIxLCBkYXRhID0gRGF0YTMzNTApCmBgYAogClRoZSBDaGktU3F1YXJlZCB2YWx1ZSBpcyAxLjIyODgsIGFuZCB0aGUgcC12YWx1ZSBpcyAwLjU0MSB3aGljaCBpcyBsZXNzIHRoYW4gzrEgPSAwLjA1LiAqKlRoZXJlZm9yZSB3ZSBmYWlsIHRvIHJlamVjdCB0aGUgbnVsbCoqLiAKCiMjIyBDb25jbHVzaW9uOiAKCkV2aWRlbmNlIHN1Z2dlc3RzIHRoYXQgd2hlcmUgYSBzdHVkZW50IHNpdHMgaW4gY2xhc3MgKFNpdENsYXNzKSBkb2VzIG5vdCBkZXBlbmQgb24gdGhlIHN0dWRlbnRzJyBhZ2UgKEcyMSkuCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KCiMjIFBhcnQgNAoKIyMjIEFOT1ZBIFRlc3QgCgpJIHdpbGwgYmUgY29uZHVjdGluZyBhbiBBTk9WQSB0ZXN0IHVzaW5nIHRoZSB2YXJpYWJsZXMgKipQbGF5KGFkdWx0IHBsYXlmdWxuZXNzKSoqIGFuZCB0aGUgZ3JvdXBpbmcgdmFyaWFibGUgKipQSFMgKHByaW1hcnkgaHVtb3Igc3R5bGUpKiouCgpIMDogzrxBRiA9IM68QUcgPSDOvFNFID0gzrxTRAoKSGE6IEF0IGxlYXN0IG9uZSBpcyBkaWZmZXJlbnQKCiMjIyBWZXJpZmljYXRpb24gCgpgYGB7cn0KZmF2c3RhdHMoUGxheSB+IFBIUywgZGF0YSA9IERhdGEzMzUwKQpgYGAKCgpUaGUgb3ZlcmFsbCBzYW1wbGUgc2l6ZSBpcyBtb3JlIHRoYW4gMjAuICoqMTM1ID4gMjAqKi4gQWxzbyB0aGUgcmF0aW8gb2YgdGhlIGxhcmdlc3QgdG8gc21hbGxlc3QgZ3JvdXAgc2l6ZSBpcyB0byBiZSAyIDogMSBvciBsZXNzLiAzOSA6IDI5IC0tPiAxLjM0IDogMS4gV2UgYWxzbyBkbyBub3QgaGF2ZSBzaGFycGx5IHVuZXF1YWwgZ3JvdXAgc2l6ZXMuIERhdGEgaXMgYXBwcm9wcmlhdGUgZm9yIEFOT1ZBIHByb2NlZHVyZXMuIFdlIGNhbiBndWFyYW50ZWUgYWNjdXJhdGUgcC12YWx1ZXMgYW5kICoqbWF5IHByb2NlZWQqKi4gCgojIyMgUnVuIFRlc3QgzrEgPSAwLjA1CgojIyMjIEFOT1ZBCgpgYGB7cn0KbW9kID0gbG0oUGxheSB+IFBIUyAsIGRhdGEgPSBEYXRhMzM1MCkKYW5vdmEobW9kKQpgYGAKClNpbmNlICoqcCA9IDAuMDAxMDgqKiB3ZSAqKnJlamVjdCB0aGUgbnVsbCoqLiBXZSBoYXZlIHN0cm9uZyBldmlkZW5jZSBmb3IgYSBkaWZmZXJlbmNlIGluIGF0IGxlYXN0IHNvbWUgb2YgdGhlIGdyb3VwIG1lYW5zLCBidXQgd2UgZG9u4oCZdCBrbm93IGZvciBzdXJlIHdoZXJlIHRob3NlIGRpZmZlcmVuY2VzIGxpZS4gU2luY2Ugd2UgaGF2ZSByZWplY3RlZCB0aGUgbnVsbCwgd2UgKipuZWVkIHRvIHJ1biBhIHBvc3QgaG9jIFR1a2V5IEhTRCB0ZXN0KiouIAoKIyMjIyBwb3N0IGhvYyBUdWtleSBIU0QKCmBgYHtyfQpUdWtleUhTRChtb2QsIGNvbmYubGV2ZWwgPSAwLjk1KQpgYGAKCiMjIyMgbXBsb3QKYGBge3J9Cm1wbG90KFR1a2V5SFNEKG1vZCwgY29uZi5sZXZlbCA9IDAuOTUpKQpgYGAKVGhlIG1wbG90IG1ha2VzIGl0IGVhc2llciB0byBpbnNwZWN0IHRoZSBjb25maWRlbmNlIGludGVydmFscy4gV2UgZmluZCB0d28gc2lnbmlmaWNhbnQgaW50ZXJ2YWxzOiAKCkFHLUFGIC0tPiAgU2lnbmlmaWNhbmNlOiBwID0gMC4wMDUzMTM4ICAtLT4gIEFHIDwgQUYKClNELUFGIC0tPiAgU2lnbmlmaWNhbmNlOiBwID0gMC4wMDgyNzk0ICAtLT4gIFNEIDwgQUYgCgojIyMgQ29uY2x1c2lvbgoKRXZpZGVuY2Ugc3VnZ2VzdHMgdGhhdCBzdWJqZWN0cyB3aXRoIGFnZ3Jlc3NpdmUgaHVtb3IgdHJhaXRzIChBRikgc2NvcmVkIHNpZ25pZmljYW50bHkgbG93ZXIgb24gdGhlIGFkdWx0IHBsYXlmdWxuZXNzIG1lYXN1cmUgdGhhbiB0aG9zZSB3aXRoIGFmZmlsaWF0aXZlIGh1bW9yIHRyYWl0cyAoQUYpLiBTdWJqZWN0cyB3aXRoIHNlbGYtZGVmZWF0aW5nIChTRCkgaHVtb3Igc2NvcmVkIHNpZ25pZmljYW50bHkgbG93ZXIgb24gdGhlIGFkdWx0IHBsYXlmdWxuZXNzIG1lYXN1cmUgdGhhbiB0aG9zZSB3aXRoIGFmZmlsaWF0aXZlIGh1bW9yIHRyYWl0cyAoQUYpIGFzIHdlbGwuIAoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCgojIyBQYXJ0IDUKCiMjIyBWZXJpZml5aW5nIExpbmVhcml0eSBBc3N1bXB0aW9uCgojIyMjIHh5cGxvdCBvZiBOZXVyb3RpY2lzbSB2cy4gVGhyaWxsIFNlZWtpbmcKYGBge3J9Cnh5cGxvdChUaHJpbGwgfiBOZXVybywgZGF0YSA9IERhdGEzMzUwICwgdHlwZSA9IGMoInAiLCJyIiksCiAgICAgICBtYWluID0gIk5ldXJvdGljaXNtIHZzLiBUaHJpbGwgU2Vla2luZyIsCiAgICAgICB4bGFiID0gIk5ldXJvdGljaXNtIiwKICAgICAgIHlsYWIgPSAiVGhyaWxsIFNlZWtpbmciKQpgYGAKVGhlIHBhdHRlcm4gaW4gdGhlIHNjYXR0ZXIgcGxvdCBwcm92aWRlcyBldmlkZW5jZSBvZiBhIGxpbmVhciBwYXR0ZXJuIGJldHdlZW4gdGhlIHZhcmlhYmxlcyBOZXVyb3RpY2lzbSBhbmQgVGhyaWxsIFNlZWtpbmcuIEFzIHRoZSBOZXVyb3RpY2lzbSBzY29yZSBpbmNyZWFzZXMsIGdlbmVyYWxseSB0aGUgVGhyaWxsIFNlZWtpbmcgc2NvcmVzIGRlY3JlYXNlLgoKIyMjIExpbmVhciBtb2RlbCBmb3IgTmV1cm90aWNpc20gdnMuIFRocmlsbCBTZWVraW5nCgpgYGB7cn0KbG0oVGhyaWxsIH4gTmV1cm8sIGRhdGEgPSBEYXRhMzM1MCkKYGBgCgpDcmVhdGVkIGFuIG9iamVjdCBjYWxsZWQgbW9kCmBgYHtyfQptb2QgPSBsbShUaHJpbGwgfiBOZXVybywgZGF0YSA9IERhdGEzMzUwKQpgYGAKCiMjIyBWZXJpZnlpbmcgTm9ybWFsaXR5IEFzc3VtcHRpb24KCldlIHdpbGwgZXZhbHVhdGUgdGhlIG5vcm1hbGl0eSBhc3N1bXB0aW9uIHdoaWNoIHNheXMgdGhhdCB0aGUgcmVzaWR1YWxzIHNob3VsZCBiZSBub3JtYWxseSBkaXN0cmlidXRlZC4gCgojIyMjIEhpc3RvZ3JhbSBvZiB0aGUgcmVzaWR1YWxzLiAKCmBgYHtyfQpoaXN0b2dyYW0gKH4gcmVzaWQgKG1vZCkpCmBgYAoKVGhlIGhpc3RvZ3JhbSBzaG93cyBhIG5vcm1hbCBkaXN0cmlidXRpb24gd2l0aCBhIHNrZXcgdG8gdGhlIGxlZnQuIAoKIyMjIyBxcGxvdCB0byB0ZXN0IG5vcm1hbGl0eSBhc3N1bXB0aW9uCgpgYGB7cn0KcXFtYXRoKCB+IHJlc2lkKG1vZCkpCmBgYAoKV2l0aCB0aGUgcXBsb3QsIHdlIHNob3VsZCBzZWUgYSBzdHJhaWdodCBsaW5lIGlmIHRoZSByZXNpZHVhbHMgbWVldCB0aGUgbW9kZWwgYXNzdW1wdGlvbnMuIFRoZXJlIGRvZXNuJ3Qgc2VlbSB0byBiZSBhbnkgc2hhcnAgZHJvcC1vZmZzIG9yIGFueSBwb2ludHMgdGhhdCBqdW1wIHRvbyBmYXIgb3V0IG9mIGxpbmUuIFRoZXJlZm9yZSwgKip0aGUgZGF0YSBhcHBlYXJzIHRvIG1lZXQgdGhlIG5vcm1hbGl0eSBhc3N1bXB0aW9uKiouCgojIyMgQW5hbHlzaXMgU3RhdGVtZW50cyBmb3IgTGluZWFyIFJlZ3Jlc3Npb24KCmBgYHtyfQpzdW1tYXJ5KG1vZCkKYGBgCgpUaGUgJFJeezJ9JCB2YWx1ZSBpcyAwLjA3NjU3LiAkXHNxcnR7MC4wNzY1N30kIOKJiCAwLjI3NjcgPSByLiAKCkluIHRoaXMgZXhhbXBsZSwgd2UgZmluZCB0aGF0IHRoZXJlIGlzIGEgd2VhaywgbmVnYXRpdmUgY29ycmVsYXRpb24gYmV0d2VlbiBOZXVyb3RpY2lzbSBhbmQgVGhyaWxsIFNlZWtpbmcuICAKCiMjIyMgQW5hbHl6aW5nICRSXnsyfSQKCiRSXnsyfSQgaW5kaWNhdGVzIHRoZSBjb2VmZmljaWVudCBvZiBkZXRlcm1pbmF0aW9uLiBTaW5jZSAkUl57Mn0kID0gMC4wNzY1NywgNy42NiUgb2YgdGhlIFRocmlsbCBTZWVraW5nIHNjb3JlcyBhcmUgYWNjb3VudGVkIGZvciBob3cgdGhlIE5ldXJvdGljaXNtIHNjb3JlcyBjaGFuZ2UuIAoKIyMjIyBQcmVkaWN0aW9uIEVxdWF0aW9uCgpgYGB7cn0KZiA9IG1ha2VGdW4obW9kKQpmCmBgYAoKRXF1YXRpb24gPSAqKmYoeCkgPSAyNC4yNTQgLSAwLjExMDJ4KioKCgpXZSBjYW4gcHJlZGljdCBvdXQgdGhlIGxldmVsIG9mIE5ldXJvdGljaXNtIGJhc2VkIG9uIGEgVGhyaWxsIFNlZWtpbmcgc2NvcmUgb2YgMjEsIGJ5IHN1YnN0aXR1dGluZyBmKHgpIHdpdGggMjEgYW5kIHNvbHZpbmcgZm9yIHguIAoKSWYgc29tZW9uZSBoYXMgYSAqKlRocmlsbCBTZWVraW5nIHNjb3JlIG9mIDIxKiosIHdlIGV4cGVjdCB0aGVpciAqKk5ldXJvdGljaXNtIHNjb3JlIHRvIGJlIGFib3V0IDI5LjUg4omIIDMwKiouCgojIyMgQ29uY2x1c2lvbgoKV2UgdmVyaWZpZWQgdGhlIGxpbmVhcml0eSBhbmQgbm9ybWFsaXR5IGFzc3VtcHRpb25zIGFuZCBjb25zdHJ1Y3RlZCBhIGxpbmVhciBtb2RlbCwgYW5kIGFuYWx5emVkIHRocmVlIG9mIHRoZSBtb2RlbCBvdXRwdXRzOiBjb3JyZWxhdGlvbiwgJFJeezJ9JCBhbmQgdGhlIHNsb3BlIGNvZWZmaWNpZW50LiBFdmlkZW5jZSBzdWdnZXN0cyB0aGF0IHRoZXJlIGlzIGEgd2VhaywgbmVnYXRpdmUgY29ycmVsYXRpb24gYW5kIHRoYXQgTmV1cm90aWNpbSBhcHBlYXJzIHRvIGFjY291bnQgZm9yIGFib3V0IDcuNjYlIG9mIHRoZSB2YXJpYW5jZSBpbiBUaHJpbGwgU2Vla2luZy4gV2UgYWxzbyB1bmRlcnN0YW5kIGZyb20gdGhlIHNsb3BlIGhvdyBjaGFuZ2VzIGluIHRoZSBwcmVkaWN0b3IgdmFyaWFibGUgaW5mbHVlbmNlcyB0aGUgZGVwZW5kZW50IHZhcmlhYmxlLgoK