library(tidyverse)
library(readxl)
thesis <- read_excel("SampleThesisData.xlsx", na = "-")

thesis
  1. A correlation test is used to determine the relationship between age and GPA1. A correlation test is used because both variables are continuous.
cor.test(thesis$Age, thesis$GPA1)

    Pearson's product-moment correlation

data:  thesis$Age and thesis$GPA1
t = 0.25668, df = 39, p-value = 0.7988
alternative hypothesis: true correlation is not equal to 0
95 percent confidence interval:
 -0.2699939  0.3443673
sample estimates:
       cor 
0.04106779 

The correlation between age and GPA1 is not statistically significant, r(39) = .80, ns.

The following scatterplot demonstrates the relationship between age and GPA1.

thesis %>% 
  drop_na(Age, GPA1) %>%                                  
  ggplot(aes(Age, GPA1)) +
  geom_point() +
  theme_minimal() +                                            
  geom_smooth(formula = y~x, method = lm, se = FALSE) +        
  labs(title = "Relationship Between Age and GPA1",      
       x = "Age",
       y = "GPA1")

  1. To determine if there is a difference between GPA1 of students in the Business college from students in the Arts and Science college, a T-test is used. A T-test is used because there is a continuous dependent variable (GPA1) and an independent categorical variable (college).
t.test(thesis$GPA1 ~ thesis$College)

    Welch Two Sample t-test

data:  thesis$GPA1 by thesis$College
t = -1.2753, df = 38.772, p-value = 0.2098
alternative hypothesis: true difference in means between group AS and group BU is not equal to 0
95 percent confidence interval:
 -0.7143396  0.1619586
sample estimates:
mean in group AS mean in group BU 
         3.02381          3.30000 

The students in the Arts and Sciences college (M = 3.02) had a lower average GPA than the students in the Business college (M = 3.30) and the differences in the GPAs are not statistically significantly different, t(38.77) = 1.28, ns. The following boxplot shows the relationship between the Business college and the Arts and Sciences college and GPA1.

thesis %>% 
  drop_na(College, GPA1) %>%   
  ggplot(aes(x = College, y = GPA1)) +
  geom_boxplot() +
  geom_jitter(width = .1) +
  theme_minimal() +
  labs(title = "GPA1 by College", x = "College", y = "GPA1")

  1. The following shows the relationship between the GPA1 of students in accounting versus communications. To do this, a T-test and filter are used.
thesis %>% 
  filter(Major == "Account" | Major == "Comm") -> AccCommMajor

t.test(AccCommMajor$GPA1 ~ AccCommMajor$Major)

    Welch Two Sample t-test

data:  AccCommMajor$GPA1 by AccCommMajor$Major
t = 0.95153, df = 5.297, p-value = 0.3827
alternative hypothesis: true difference in means between group Account and group Comm is not equal to 0
95 percent confidence interval:
 -0.7868789  1.7368789
sample estimates:
mean in group Account    mean in group Comm 
                3.675                 3.200 

The accounting major students (M = 3.68) have a higher average GPA than the communications major students (M = 3.20), however, the difference is not statistically significantly different, t(5.30) = 0.95, ns. The following is a boxplot to show the relationship between the two majors and GPA1.

AccCommMajor %>% 
  ggplot(aes(x = Major, y = GPA1)) +
  geom_boxplot() +
  geom_jitter(width = .2) +
  theme_minimal() +
  labs(title = "GPA of Accounting and Communications Majors", x = "Major", y = "GPA1")

  1. To determine if there is a difference between Mood1 and Mood2, a paired-samples T-test is used. This test is used because Mood1 and Mood2 are two continuous variables measured at two different times.
t.test(thesis$Mood1, thesis$Mood2, paired = T)

    Paired t-test

data:  thesis$Mood1 and thesis$Mood2
t = -2.1686, df = 40, p-value = 0.03611
alternative hypothesis: true difference in means is not equal to 0
95 percent confidence interval:
 -0.80105415 -0.02821414
sample estimates:
mean of the differences 
             -0.4146341 

Moods were statistically significantly lower at time 1 (M = -0.24) than at time 2 (M = 0.24), t(40) = 2.17, p < .05. The following is a boxplot of the relationship between Mood1 and Mood2.

thesis %>% 
  pivot_longer(cols = c(Mood1, Mood2), names_to = "Time", values_to = "Mood") %>% 
  select(Time, Mood)
thesis %>% 
  pivot_longer(cols = c(Mood1, Mood2), names_to = "Time", values_to = "Mood") %>% 
  ggplot(aes(x = Time, y = Mood)) +
  geom_boxplot() +
  geom_jitter(width = .2) +
  theme_minimal() +
  labs(title = "Relationship Between Mood and Time", x = "Time", y = "Mood Calculation")
Warning: Removed 2 rows containing non-finite values (stat_boxplot).
Warning: Removed 2 rows containing missing values (geom_point).

  1. To determine if there is a relationship between where students are from and where they go to college, a chi-square test is used. This test is used because both variables are categorical.
table(thesis$Home, thesis$College)
            
             AS BU
  Billings    5  6
  OtherMT    11  7
  OutofState  6  6
chisq.test(thesis$Home, thesis$College)

    Pearson's Chi-squared test

data:  thesis$Home and thesis$College
X-squared = 0.76438, df = 2, p-value = 0.6824

There is not a statistically significant relationship between where students home is and where they attend college, chi-square(2) = 0.76, ns. The following is a bargraph showing the relationship between college and home.

thesis %>% 
  drop_na(College, Home) %>% 
  mutate(Home = as_factor(Home)) %>% 
  mutate(Home = fct_recode(Home,
                           "Billings" = "Billings",
                            "City/town in Montana" = "OtherMT",
                            "City/town out of Montana" = "OutofState"))  %>% 
  mutate(College = as_factor(College)) %>% 
  mutate(College = fct_recode(College,
                          "Business College" = "BU",
                          "Arts and Sciences College" = "AS")) %>% 
  ggplot(aes(x = College, fill = Home)) +
  geom_bar(position = "fill") +
  scale_fill_viridis_d() +                        # use scale_fill_grey() here if you don't want color
  theme_minimal() +
  coord_flip() +
  labs(title = "College by Home",
      y = "Proportion of Different Homes")

  1. To determine if there is a relationship between self-esteem and where a student comes from, an analysis of variance (ANOVA) is used. An ANOVA is used instead of a T-test because the categorical independent variable has more than two factors.
thesis %>% 
  drop_na(Home, SelfEsteem) %>% 
  group_by(Home) %>% 
  summarize(Mean = mean(SelfEsteem), 
            "Std Dev" = sd(SelfEsteem),
            N = n())
NA
Home_ANOVA <- aov(thesis$SelfEsteem ~ thesis$Home)
summary(Home_ANOVA)
            Df Sum Sq Mean Sq F value Pr(>F)
thesis$Home  2  15.76   7.879   1.043  0.362
Residuals   39 294.53   7.552               
1 observation deleted due to missingness

There were no statistically significant differences in self-esteem by where a student came from (home), F(2, 39) = 1.04, ns. A post hoc test is used for comparisons between individual groups.

TukeyHSD(Home_ANOVA)
  Tukey multiple comparisons of means
    95% family-wise confidence level

Fit: aov(formula = thesis$SelfEsteem ~ thesis$Home)

$`thesis$Home`
                           diff       lwr      upr     p adj
OtherMT-Billings    -1.27777778 -3.772928 1.217373 0.4329248
OutofState-Billings -0.08333333 -2.816634 2.649967 0.9969630
OutofState-OtherMT   1.19444444 -1.300706 3.689595 0.4800845

The following is a boxplot of the relationship between self-esteem and home.

thesis %>% 
  drop_na(SelfEsteem, Home) %>% 
  mutate(Home = as_factor(Home)) %>% 
  mutate(Home = fct_recode(Home,
                            "Billings" = "Billings",
                            "City/town in Montana" = "OtherMT",
                            "City/town out of Montana " = "OutofState"))  %>% 
  ggplot(aes(x = Home, y = SelfEsteem)) +
  geom_boxplot() +
  geom_jitter(width = .2) +
  theme_minimal() +
  labs(title = "Self-Esteem by Home",
       y = "Self-Esteem") 

LS0tCnRpdGxlOiAiQmFzaWMgU3RhdHMgaW4gUiIKb3V0cHV0OiBodG1sX25vdGVib29rCi0tLQoKYGBge3J9CmxpYnJhcnkodGlkeXZlcnNlKQpsaWJyYXJ5KHJlYWR4bCkKCmBgYAoKYGBge3J9CnRoZXNpcyA8LSByZWFkX2V4Y2VsKCJTYW1wbGVUaGVzaXNEYXRhLnhsc3giLCBuYSA9ICItIikKCnRoZXNpcwpgYGAKCjEuICBBIGNvcnJlbGF0aW9uIHRlc3QgaXMgdXNlZCB0byBkZXRlcm1pbmUgdGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIGFnZSBhbmQgR1BBMS4gQSBjb3JyZWxhdGlvbiB0ZXN0IGlzIHVzZWQgYmVjYXVzZSBib3RoIHZhcmlhYmxlcyBhcmUgY29udGludW91cy4KCmBgYHtyfQpjb3IudGVzdCh0aGVzaXMkQWdlLCB0aGVzaXMkR1BBMSkKCmBgYApUaGUgY29ycmVsYXRpb24gYmV0d2VlbiBhZ2UgYW5kIEdQQTEgaXMgbm90IHN0YXRpc3RpY2FsbHkgc2lnbmlmaWNhbnQsICpyKigzOSkgPSAuODAsICpucyouCgpUaGUgZm9sbG93aW5nIHNjYXR0ZXJwbG90IGRlbW9uc3RyYXRlcyB0aGUgcmVsYXRpb25zaGlwIGJldHdlZW4gYWdlIGFuZCBHUEExLiAKYGBge3J9CnRoZXNpcyAlPiUgCiAgZHJvcF9uYShBZ2UsIEdQQTEpICU+JSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICBnZ3Bsb3QoYWVzKEFnZSwgR1BBMSkpICsKICBnZW9tX3BvaW50KCkgKwogIHRoZW1lX21pbmltYWwoKSArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICBnZW9tX3Ntb290aChmb3JtdWxhID0geX54LCBtZXRob2QgPSBsbSwgc2UgPSBGQUxTRSkgKyAgICAgICAgCiAgbGFicyh0aXRsZSA9ICJSZWxhdGlvbnNoaXAgQmV0d2VlbiBBZ2UgYW5kIEdQQTEiLCAgICAgIAogICAgICAgeCA9ICJBZ2UiLAogICAgICAgeSA9ICJHUEExIikKYGBgCgoyLiBUbyBkZXRlcm1pbmUgaWYgdGhlcmUgaXMgYSBkaWZmZXJlbmNlIGJldHdlZW4gR1BBMSBvZiBzdHVkZW50cyBpbiB0aGUgQnVzaW5lc3MgY29sbGVnZSBmcm9tIHN0dWRlbnRzIGluIHRoZSBBcnRzIGFuZCBTY2llbmNlIGNvbGxlZ2UsIGEgVC10ZXN0IGlzIHVzZWQuIEEgVC10ZXN0IGlzIHVzZWQgYmVjYXVzZSB0aGVyZSBpcyBhIGNvbnRpbnVvdXMgZGVwZW5kZW50IHZhcmlhYmxlIChHUEExKSBhbmQgYW4gaW5kZXBlbmRlbnQgY2F0ZWdvcmljYWwgdmFyaWFibGUgKGNvbGxlZ2UpLiAKYGBge3J9CnQudGVzdCh0aGVzaXMkR1BBMSB+IHRoZXNpcyRDb2xsZWdlKQpgYGAKVGhlIHN0dWRlbnRzIGluIHRoZSBBcnRzIGFuZCBTY2llbmNlcyBjb2xsZWdlICgqTSogPSAzLjAyKSBoYWQgYSBsb3dlciBhdmVyYWdlIEdQQSB0aGFuIHRoZSBzdHVkZW50cyBpbiB0aGUgQnVzaW5lc3MgY29sbGVnZSAoKk0qID0gMy4zMCkgYW5kIHRoZSBkaWZmZXJlbmNlcyBpbiB0aGUgR1BBcyBhcmUgbm90IHN0YXRpc3RpY2FsbHkgc2lnbmlmaWNhbnRseSBkaWZmZXJlbnQsICp0KigzOC43NykgPSAxLjI4LCAqbnMqLiAKVGhlIGZvbGxvd2luZyBib3hwbG90IHNob3dzIHRoZSByZWxhdGlvbnNoaXAgYmV0d2VlbiB0aGUgQnVzaW5lc3MgY29sbGVnZSBhbmQgdGhlIEFydHMgYW5kIFNjaWVuY2VzIGNvbGxlZ2UgYW5kIEdQQTEuCmBgYHtyfQp0aGVzaXMgJT4lIAogIGRyb3BfbmEoQ29sbGVnZSwgR1BBMSkgJT4lICAgCiAgZ2dwbG90KGFlcyh4ID0gQ29sbGVnZSwgeSA9IEdQQTEpKSArCiAgZ2VvbV9ib3hwbG90KCkgKwogIGdlb21faml0dGVyKHdpZHRoID0gLjEpICsKICB0aGVtZV9taW5pbWFsKCkgKwogIGxhYnModGl0bGUgPSAiR1BBMSBieSBDb2xsZWdlIiwgeCA9ICJDb2xsZWdlIiwgeSA9ICJHUEExIikKYGBgCgozLiBUaGUgZm9sbG93aW5nIHNob3dzIHRoZSByZWxhdGlvbnNoaXAgYmV0d2VlbiB0aGUgR1BBMSBvZiBzdHVkZW50cyBpbiBhY2NvdW50aW5nIHZlcnN1cyBjb21tdW5pY2F0aW9ucy4gVG8gZG8gdGhpcywgYSBULXRlc3QgYW5kIGZpbHRlciBhcmUgdXNlZC4gCmBgYHtyfQp0aGVzaXMgJT4lIAogIGZpbHRlcihNYWpvciA9PSAiQWNjb3VudCIgfCBNYWpvciA9PSAiQ29tbSIpIC0+IEFjY0NvbW1NYWpvcgoKdC50ZXN0KEFjY0NvbW1NYWpvciRHUEExIH4gQWNjQ29tbU1ham9yJE1ham9yKQpgYGAKVGhlIGFjY291bnRpbmcgbWFqb3Igc3R1ZGVudHMgKCpNKiA9IDMuNjgpIGhhdmUgYSBoaWdoZXIgYXZlcmFnZSBHUEEgdGhhbiB0aGUgY29tbXVuaWNhdGlvbnMgbWFqb3Igc3R1ZGVudHMgKCpNKiA9IDMuMjApLCBob3dldmVyLCB0aGUgZGlmZmVyZW5jZSBpcyBub3Qgc3RhdGlzdGljYWxseSBzaWduaWZpY2FudGx5IGRpZmZlcmVudCwgICp0Kig1LjMwKSA9IDAuOTUsICpucyouIApUaGUgZm9sbG93aW5nIGlzIGEgYm94cGxvdCB0byBzaG93IHRoZSByZWxhdGlvbnNoaXAgYmV0d2VlbiB0aGUgdHdvIG1ham9ycyBhbmQgR1BBMS4KYGBge3J9CkFjY0NvbW1NYWpvciAlPiUgCiAgZ2dwbG90KGFlcyh4ID0gTWFqb3IsIHkgPSBHUEExKSkgKwogIGdlb21fYm94cGxvdCgpICsKICBnZW9tX2ppdHRlcih3aWR0aCA9IC4yKSArCiAgdGhlbWVfbWluaW1hbCgpICsKICBsYWJzKHRpdGxlID0gIkdQQSBvZiBBY2NvdW50aW5nIGFuZCBDb21tdW5pY2F0aW9ucyBNYWpvcnMiLCB4ID0gIk1ham9yIiwgeSA9ICJHUEExIikKYGBgCgo0LiBUbyBkZXRlcm1pbmUgaWYgdGhlcmUgaXMgYSBkaWZmZXJlbmNlIGJldHdlZW4gTW9vZDEgYW5kIE1vb2QyLCBhIHBhaXJlZC1zYW1wbGVzIFQtdGVzdCBpcyB1c2VkLiBUaGlzIHRlc3QgaXMgdXNlZCBiZWNhdXNlIE1vb2QxIGFuZCBNb29kMiBhcmUgdHdvIGNvbnRpbnVvdXMgdmFyaWFibGVzIG1lYXN1cmVkIGF0IHR3byBkaWZmZXJlbnQgdGltZXMuIApgYGB7cn0KdC50ZXN0KHRoZXNpcyRNb29kMSwgdGhlc2lzJE1vb2QyLCBwYWlyZWQgPSBUKQpgYGAKTW9vZHMgd2VyZSBzdGF0aXN0aWNhbGx5IHNpZ25pZmljYW50bHkgbG93ZXIgYXQgdGltZSAxICgqTSogPSAtMC4yNCkgdGhhbiBhdCB0aW1lIDIgKCpNKiA9IDAuMjQpLCAqdCooNDApID0gMi4xNywgKnAqIDwgLjA1LgpUaGUgZm9sbG93aW5nIGlzIGEgYm94cGxvdCBvZiB0aGUgcmVsYXRpb25zaGlwIGJldHdlZW4gTW9vZDEgYW5kIE1vb2QyLgpgYGB7cn0KdGhlc2lzICU+JSAKICBwaXZvdF9sb25nZXIoY29scyA9IGMoTW9vZDEsIE1vb2QyKSwgbmFtZXNfdG8gPSAiVGltZSIsIHZhbHVlc190byA9ICJNb29kIikgJT4lIAogIHNlbGVjdChUaW1lLCBNb29kKQpgYGAKYGBge3J9CnRoZXNpcyAlPiUgCiAgcGl2b3RfbG9uZ2VyKGNvbHMgPSBjKE1vb2QxLCBNb29kMiksIG5hbWVzX3RvID0gIlRpbWUiLCB2YWx1ZXNfdG8gPSAiTW9vZCIpICU+JSAKICBnZ3Bsb3QoYWVzKHggPSBUaW1lLCB5ID0gTW9vZCkpICsKICBnZW9tX2JveHBsb3QoKSArCiAgZ2VvbV9qaXR0ZXIod2lkdGggPSAuMikgKwogIHRoZW1lX21pbmltYWwoKSArCiAgbGFicyh0aXRsZSA9ICJSZWxhdGlvbnNoaXAgQmV0d2VlbiBNb29kIGFuZCBUaW1lIiwgeCA9ICJUaW1lIiwgeSA9ICJNb29kIENhbGN1bGF0aW9uIikKYGBgCgo1LiBUbyBkZXRlcm1pbmUgaWYgdGhlcmUgaXMgYSByZWxhdGlvbnNoaXAgYmV0d2VlbiB3aGVyZSBzdHVkZW50cyBhcmUgZnJvbSBhbmQgd2hlcmUgdGhleSBnbyB0byBjb2xsZWdlLCBhIGNoaS1zcXVhcmUgdGVzdCBpcyB1c2VkLiBUaGlzIHRlc3QgaXMgdXNlZCBiZWNhdXNlIGJvdGggdmFyaWFibGVzIGFyZSBjYXRlZ29yaWNhbC4gIApgYGB7cn0KdGFibGUodGhlc2lzJEhvbWUsIHRoZXNpcyRDb2xsZWdlKQpjaGlzcS50ZXN0KHRoZXNpcyRIb21lLCB0aGVzaXMkQ29sbGVnZSkKYGBgClRoZXJlIGlzIG5vdCBhIHN0YXRpc3RpY2FsbHkgc2lnbmlmaWNhbnQgcmVsYXRpb25zaGlwIGJldHdlZW4gd2hlcmUgc3R1ZGVudHMgaG9tZSBpcyBhbmQgd2hlcmUgdGhleSBhdHRlbmQgY29sbGVnZSwgKmNoaS1zcXVhcmUqKDIpID0gMC43NiwgKm5zKi4KVGhlIGZvbGxvd2luZyBpcyBhIGJhcmdyYXBoIHNob3dpbmcgdGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIGNvbGxlZ2UgYW5kIGhvbWUuCmBgYHtyfQp0aGVzaXMgJT4lIAogIGRyb3BfbmEoQ29sbGVnZSwgSG9tZSkgJT4lIAogIG11dGF0ZShIb21lID0gYXNfZmFjdG9yKEhvbWUpKSAlPiUgCiAgbXV0YXRlKEhvbWUgPSBmY3RfcmVjb2RlKEhvbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICJCaWxsaW5ncyIgPSAiQmlsbGluZ3MiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIkNpdHkvdG93biBpbiBNb250YW5hIiA9ICJPdGhlck1UIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDaXR5L3Rvd24gb3V0IG9mIE1vbnRhbmEiID0gIk91dG9mU3RhdGUiKSkgICU+JSAKICBtdXRhdGUoQ29sbGVnZSA9IGFzX2ZhY3RvcihDb2xsZWdlKSkgJT4lIAogIG11dGF0ZShDb2xsZWdlID0gZmN0X3JlY29kZShDb2xsZWdlLAogICAgICAgICAgICAgICAgICAgICAgICAgICJCdXNpbmVzcyBDb2xsZWdlIiA9ICJCVSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIkFydHMgYW5kIFNjaWVuY2VzIENvbGxlZ2UiID0gIkFTIikpICU+JSAKICBnZ3Bsb3QoYWVzKHggPSBDb2xsZWdlLCBmaWxsID0gSG9tZSkpICsKICBnZW9tX2Jhcihwb3NpdGlvbiA9ICJmaWxsIikgKwogIHNjYWxlX2ZpbGxfdmlyaWRpc19kKCkgKyAgICAgICAgICAgICAgICAgICAgICAgICMgdXNlIHNjYWxlX2ZpbGxfZ3JleSgpIGhlcmUgaWYgeW91IGRvbid0IHdhbnQgY29sb3IKICB0aGVtZV9taW5pbWFsKCkgKwogIGNvb3JkX2ZsaXAoKSArCiAgbGFicyh0aXRsZSA9ICJDb2xsZWdlIGJ5IEhvbWUiLAogICAgICB5ID0gIlByb3BvcnRpb24gb2YgRGlmZmVyZW50IEhvbWVzIikKCmBgYAo2LiBUbyBkZXRlcm1pbmUgaWYgdGhlcmUgaXMgYSByZWxhdGlvbnNoaXAgYmV0d2VlbiBzZWxmLWVzdGVlbSBhbmQgd2hlcmUgYSBzdHVkZW50IGNvbWVzIGZyb20sIGFuIGFuYWx5c2lzIG9mIHZhcmlhbmNlIChBTk9WQSkgaXMgdXNlZC4gQW4gQU5PVkEgaXMgdXNlZCBpbnN0ZWFkIG9mIGEgVC10ZXN0IGJlY2F1c2UgdGhlIGNhdGVnb3JpY2FsIGluZGVwZW5kZW50IHZhcmlhYmxlIGhhcyBtb3JlIHRoYW4gdHdvIGZhY3RvcnMuCmBgYHtyfQp0aGVzaXMgJT4lIAogIGRyb3BfbmEoSG9tZSwgU2VsZkVzdGVlbSkgJT4lIAogIGdyb3VwX2J5KEhvbWUpICU+JSAKICBzdW1tYXJpemUoTWVhbiA9IG1lYW4oU2VsZkVzdGVlbSksIAogICAgICAgICAgICAiU3RkIERldiIgPSBzZChTZWxmRXN0ZWVtKSwKICAgICAgICAgICAgTiA9IG4oKSkKCmBgYApgYGB7cn0KSG9tZV9BTk9WQSA8LSBhb3YodGhlc2lzJFNlbGZFc3RlZW0gfiB0aGVzaXMkSG9tZSkKc3VtbWFyeShIb21lX0FOT1ZBKQoKCmBgYApUaGVyZSB3ZXJlIG5vIHN0YXRpc3RpY2FsbHkgc2lnbmlmaWNhbnQgZGlmZmVyZW5jZXMgaW4gc2VsZi1lc3RlZW0gYnkgd2hlcmUgYSBzdHVkZW50IGNhbWUgZnJvbSAoaG9tZSksICpGKigyLCAzOSkgPSAxLjA0LCAqbnMqLgpBIHBvc3QgaG9jIHRlc3QgaXMgdXNlZCBmb3IgY29tcGFyaXNvbnMgYmV0d2VlbiBpbmRpdmlkdWFsIGdyb3Vwcy4gCmBgYHtyfQpUdWtleUhTRChIb21lX0FOT1ZBKQpgYGAKVGhlIGZvbGxvd2luZyBpcyBhIGJveHBsb3Qgb2YgdGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIHNlbGYtZXN0ZWVtIGFuZCBob21lLgpgYGB7cn0KdGhlc2lzICU+JSAKICBkcm9wX25hKFNlbGZFc3RlZW0sIEhvbWUpICU+JSAKICBtdXRhdGUoSG9tZSA9IGFzX2ZhY3RvcihIb21lKSkgJT4lIAogIG11dGF0ZShIb21lID0gZmN0X3JlY29kZShIb21lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIkJpbGxpbmdzIiA9ICJCaWxsaW5ncyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ2l0eS90b3duIGluIE1vbnRhbmEiID0gIk90aGVyTVQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIkNpdHkvdG93biBvdXQgb2YgTW9udGFuYSAiID0gIk91dG9mU3RhdGUiKSkgICU+JSAKICBnZ3Bsb3QoYWVzKHggPSBIb21lLCB5ID0gU2VsZkVzdGVlbSkpICsKICBnZW9tX2JveHBsb3QoKSArCiAgZ2VvbV9qaXR0ZXIod2lkdGggPSAuMikgKwogIHRoZW1lX21pbmltYWwoKSArCiAgbGFicyh0aXRsZSA9ICJTZWxmLUVzdGVlbSBieSBIb21lIiwKICAgICAgIHkgPSAiU2VsZi1Fc3RlZW0iKSAKYGBgCgoKCg==