library(tidyverse)
library(openintro)
library(scales)

6.6 2010 Healthcare Law.

On June 28, 2012 the U.S. Supreme Court upheld the much debated 2010 healthcare law, declaring it constitutional. A Gallup poll released the day after this decision indicates that 46% of 1,012 Americans agree with this decision. At a 95% confidence level, this sample has a 3% margin of error. Based on this information, determine if the following statements are true or false, and explain your reasoning. (a) We are 95% confident that between 43% and 49% of Americans in this sample support the decision of the U.S. Supreme Court on the 2010 healthcare law. False. We know that 46% of Americans in this sample support the decision.

(b) We are 95% confident that between 43% and 49% of Americans support the decision of the U.S. Supreme Court on the 2010 healthcare law.

True, because at 95% confidence, this sample has a 3% margin of error.

(c) If we considered many random samples of 1,012 Americans, and we calculated the sample proportions of those who support the decision of the U.S. Supreme Court, 95% of those sample proportions will be between 43% and 49%. True. (d) The margin of error at a 90% confidence level would be higher than 3%. False. If we lower the confidence level the margin of error also lowers.

Legalization of marijuana, Part I.

(6.10 p.216) The 2010 General Social Survey asked 1,259 US residents: “Do you think the use of marijuana should be made legal, or not” 48% of the respondents said it should be made legal. (a) Is 48% a sample statistic or a population parameter? Explain. A Sample statistic. We are not infering proportion but calculating a percentage of the answers.

(b)Construct a 95% confidence interval for the proportion of US residents who think marijuana should be made legal and interpret it in the context of the data

z = 1.96
n <- 1259
p <- .48
se <- sqrt((p*(1-p))/n)
ci_low <- p - (z * se)
ci_high <- p + (z * se)
ci_95 <- c(ci_low, ci_high)
ci_95
## [1] 0.4524028 0.5075972

(c) The central limit theorem states that the sampling distribution of the mean of any independent, random variable will be normal or nearly normal, if the sample size is large enough. This sample size is large enough (1259 observations and the variable is independent)

(d) It could be, if we hit our high limit in the confidence interval. A more accurate one would be half of Americans approve legalization.

Legalize Marijuana part II.

m = 0.02
p = .48
z = 1.96
se = m/z
n = (p*(1-p))/se**2
round(n,0)+1
## [1] 2398

We would need to question around 2398 US residents.

Sleep deprivation

p_ca <- 0.08
n_ca <- 11545
p_or <- 0.088
n_or <- 4691

p <- p_or - p_ca

se <- ( ((p_ca * (1 - p_ca)) / n_ca) +  ((p_or * (1 - p_or)) / n_or)) ** 0.5
z <- 1.96

me <-z * se

ci_95 <- c(p - me, p + me )

ci_95
## [1] -0.001498128  0.017498128

Barking deer

Microhabitat factors associated with forage and bed sites of barking deer in Hainan Island, China were examined from 2001 to 2002. In this region woods make up 4.8% of the land, cultivated grass plot makes up 14.7% and deciduous forests makes up 39.6%. Of the 426 sites where the deer forage, 4 were categorized as woods, 16 as cultivated grassplot, and 61 as deciduous forests. The table below summarizes these data.

Woods | Cultivated grassplot | Deciduous forests | Other | Total 4 16 61 345 426

(a) Write the hypotheses for testing if barking deer prefer to forage in certain habitats over others.

  • H0 - Deer do not prefer to forage in certain habitats over others
  • H1- Deer have a preference in habitat

(b) What type of test can we use to answer this research question? We can use a chi-squared test to answer this question.

(c) Check if the assumptions and conditions required for this test are satisfied. The chi-square goodness of fit test is appropriate when the following conditions are met: The sampling method is simple random sampling. The variable under study is categorical. The expected value of the number of sample observations in each level of the variable is at least 5.

obs <- c(woods=0.048 * 426, grassplot=0.147 * 426, forests = 0.396 * 426, other = (1-(.048 + .147 + .396)) * 426)
obs
##     woods grassplot   forests     other 
##    20.448    62.622   168.696   174.234

It appears all the conditions for the test are met.

(d) Do these data provide convincing evidence that barking deer prefer to forage in certain habitats over others? Conduct an appropriate hypothesis test to answer this research question.

chisq.test(x = c(4, 16, 61, 345), p = c(0.048, 0.147, 0.396, 1-(.048+.147+.396)))
## 
##  Chi-squared test for given probabilities
## 
## data:  c(4, 16, 61, 345)
## X-squared = 284.06, df = 3, p-value < 2.2e-16
print(2.2e-16 < 0.5)
## [1] TRUE

The data provides convincing evidence that the null hypothesis is wrong. Because the value of p is less than 0.05, we reject H0 and accept H1: Deer have a preference in habitat.

Coffee and Depression.

(6.50, p. 248) Researchers conducted a study investigating the relationship between caffeinated coffee consumption and risk of depression in women. They collected data on 50,739 women free of depression symptoms at the start of the study in the year 1996, and these women were followed through 2006. The researchers used questionnaires to collect data on caffeinated coffee consumption, asked each individual about physician-diagnosed depression, and also asked about the use of antidepressants. The table below shows the distribution of incidences of depression by amount of caffeinated coffee consumption.

depression less_1_cup_week 2_to_6_cups_week 1_cup_day 2_to_3_cups_day 4_cups_day total
Yes 670 373 905 564 95 2607
No 11545 6244 16329 11726 2288 48132
Total 12215 6617 17234 12290 2383 50739

(a) What type of test is appropriate for evaluating if there is an association between coffee intake and depression?

The chi square test will be appropriate to test for association between these two variables.

(b) Write the hypotheses for the test you identified in part (a). H0: There is no connection between coffee intake and depression. H1: There is a connection between those two variables.

(c) Calculate the overall proportion of women who do and do not suffer from depression.

total <- 50739
total_no <- 48132
total_yes <- 2607

prop_yes <- total_yes/total
prop_no <- total_no/total


c(yes=percent(prop_yes, accuracy = 0.01), no=percent(prop_no, accuracy = 0.01))
##      yes       no 
##  "5.14%" "94.86%"

(d) Identify the expected count for the highlighted cell, and calculate the contribution of this cell to the test statistic, i.e. (\(Observed - Expected)^2 / Expected\)).

expected <- prop_yes * 6617

contri <- ((373 - expected) ** 2)/expected

c(expected= expected, contrib = contri)
##   expected    contrib 
## 339.985396   3.205914

(e) The test statistic is \(\chi^2=20.93\). What is the p-value?

p_val <- pchisq(20.93, df=4, lower.tail=FALSE)
p_val
## [1] 0.0003269507

(f) What is the conclusion of the hypothesis test?

Because the value of p is less than 0.05, we reject H0 and accept H1

(g) One of the authors of this study was quoted on the NYTimes as saying it was “too early to recommend that women load up on extra coffee” based on just this study. Do you agree with this statement? Explain your reasoning.

This probably means that, even though there is some connection between the amount of coffee intake and depression, a correlation does not mean causality and other factors might have to be taken into consideration before making a clinical recommendation on the benefits of coffee to prevent depression.

LS0tDQp0aXRsZTogIkRTNjA2LUhXNiINCmF1dGhvcjogIkdlb3JnZSBDcnV6Ig0KZGF0ZTogImByIFN5cy5EYXRlKClgIg0Kb3V0cHV0OiBvcGVuaW50cm86OmxhYl9yZXBvcnQNCi0tLQ0KDQpgYGB7ciBsb2FkLXBhY2thZ2VzLCBtZXNzYWdlPUZBTFNFfQ0KbGlicmFyeSh0aWR5dmVyc2UpDQpsaWJyYXJ5KG9wZW5pbnRybykNCmxpYnJhcnkoc2NhbGVzKQ0KYGBgDQoNCiMjIyA2LjYgMjAxMCBIZWFsdGhjYXJlIExhdy4NCk9uIEp1bmUgMjgsIDIwMTIgdGhlIFUuUy4gU3VwcmVtZSBDb3VydCB1cGhlbGQgdGhlIG11Y2ggZGViYXRlZCAyMDEwIGhlYWx0aGNhcmUgbGF3LCBkZWNsYXJpbmcgaXQgY29uc3RpdHV0aW9uYWwuIEEgR2FsbHVwIHBvbGwgcmVsZWFzZWQgdGhlIGRheSBhZnRlciB0aGlzIGRlY2lzaW9uIGluZGljYXRlcyB0aGF0IDQ2JSBvZiAxLDAxMiBBbWVyaWNhbnMgYWdyZWUgd2l0aCB0aGlzIGRlY2lzaW9uLiBBdCBhIDk1JSBjb25maWRlbmNlIGxldmVsLCB0aGlzIHNhbXBsZSBoYXMgYSAzJSBtYXJnaW4gb2YgZXJyb3IuIEJhc2VkIG9uIHRoaXMgaW5mb3JtYXRpb24sIGRldGVybWluZSBpZiB0aGUgZm9sbG93aW5nIHN0YXRlbWVudHMgYXJlIHRydWUgb3IgZmFsc2UsIGFuZCBleHBsYWluIHlvdXIgcmVhc29uaW5nLg0KKihhKSBXZSBhcmUgOTUlIGNvbmZpZGVudCB0aGF0IGJldHdlZW4gNDMlIGFuZCA0OSUgb2YgQW1lcmljYW5zIGluIHRoaXMgc2FtcGxlIHN1cHBvcnQgdGhlIGRlY2lzaW9uIG9mIHRoZSBVLlMuIFN1cHJlbWUgQ291cnQgb24gdGhlIDIwMTAgaGVhbHRoY2FyZSBsYXcuKg0KRmFsc2UuIFdlIGtub3cgdGhhdCA0NiUgb2YgQW1lcmljYW5zIGluIHRoaXMgc2FtcGxlIHN1cHBvcnQgdGhlIGRlY2lzaW9uLiANCg0KKihiKSBXZSBhcmUgOTUlIGNvbmZpZGVudCB0aGF0IGJldHdlZW4gNDMlIGFuZCA0OSUgb2YgQW1lcmljYW5zIHN1cHBvcnQgdGhlIGRlY2lzaW9uIG9mIHRoZSBVLlMuIFN1cHJlbWUgQ291cnQgb24gdGhlIDIwMTAgaGVhbHRoY2FyZSBsYXcuKg0KDQpUcnVlLCBiZWNhdXNlIGF0IDk1JSBjb25maWRlbmNlLCB0aGlzIHNhbXBsZSBoYXMgYSAzJSBtYXJnaW4gb2YgZXJyb3IuIA0KDQoqKGMpIElmIHdlIGNvbnNpZGVyZWQgbWFueSByYW5kb20gc2FtcGxlcyBvZiAxLDAxMiBBbWVyaWNhbnMsIGFuZCB3ZSBjYWxjdWxhdGVkIHRoZSBzYW1wbGUgcHJvcG9ydGlvbnMgb2YgdGhvc2Ugd2hvIHN1cHBvcnQgdGhlIGRlY2lzaW9uIG9mIHRoZSBVLlMuIFN1cHJlbWUgQ291cnQsIDk1JSBvZiB0aG9zZSBzYW1wbGUgcHJvcG9ydGlvbnMgd2lsbCBiZSBiZXR3ZWVuIDQzJSBhbmQgNDklLioNClRydWUuDQoqKGQpIFRoZSBtYXJnaW4gb2YgZXJyb3IgYXQgYSA5MCUgY29uZmlkZW5jZSBsZXZlbCB3b3VsZCBiZSBoaWdoZXIgdGhhbiAzJS4qDQpGYWxzZS4gSWYgd2UgbG93ZXIgdGhlIGNvbmZpZGVuY2UgbGV2ZWwgdGhlIG1hcmdpbiBvZiBlcnJvciBhbHNvIGxvd2Vycy4gDQoNCg0KIyMjIExlZ2FsaXphdGlvbiBvZiBtYXJpanVhbmEsIFBhcnQgSS4NCig2LjEwIHAuMjE2KSBUaGUgMjAxMCBHZW5lcmFsIFNvY2lhbCBTdXJ2ZXkgYXNrZWQgMSwyNTkgVVMgcmVzaWRlbnRzOiAiRG8geW91IHRoaW5rIHRoZSB1c2Ugb2YgbWFyaWp1YW5hIHNob3VsZCBiZSBtYWRlIGxlZ2FsLCBvciBub3QiIDQ4JSBvZiB0aGUgcmVzcG9uZGVudHMgc2FpZCBpdCBzaG91bGQgYmUgbWFkZSBsZWdhbC4NCiooYSkgSXMgNDglIGEgc2FtcGxlIHN0YXRpc3RpYyBvciBhIHBvcHVsYXRpb24gcGFyYW1ldGVyPyBFeHBsYWluLioNCkEgU2FtcGxlIHN0YXRpc3RpYy4gIFdlIGFyZSBub3QgaW5mZXJpbmcgcHJvcG9ydGlvbiBidXQgY2FsY3VsYXRpbmcgYSBwZXJjZW50YWdlIG9mIHRoZSBhbnN3ZXJzLiANCg0KKihiKUNvbnN0cnVjdCBhIDk1JSBjb25maWRlbmNlIGludGVydmFsIGZvciB0aGUgcHJvcG9ydGlvbiBvZiBVUyByZXNpZGVudHMgd2hvIHRoaW5rIG1hcmlqdWFuYSBzaG91bGQgYmUgbWFkZSBsZWdhbCBhbmQgaW50ZXJwcmV0IGl0IGluIHRoZSBjb250ZXh0IG9mIHRoZSBkYXRhKg0KDQoNCmBgYHtyfQ0KeiA9IDEuOTYNCm4gPC0gMTI1OQ0KcCA8LSAuNDgNCnNlIDwtIHNxcnQoKHAqKDEtcCkpL24pDQpjaV9sb3cgPC0gcCAtICh6ICogc2UpDQpjaV9oaWdoIDwtIHAgKyAoeiAqIHNlKQ0KY2lfOTUgPC0gYyhjaV9sb3csIGNpX2hpZ2gpDQpjaV85NQ0KDQpgYGANCiooYykqDQpUaGUgY2VudHJhbCBsaW1pdCB0aGVvcmVtIHN0YXRlcyB0aGF0IHRoZSBzYW1wbGluZyBkaXN0cmlidXRpb24gb2YgdGhlIG1lYW4gb2YgYW55IGluZGVwZW5kZW50LCByYW5kb20gdmFyaWFibGUgd2lsbCBiZSBub3JtYWwgb3IgbmVhcmx5IG5vcm1hbCwgaWYgdGhlIHNhbXBsZSBzaXplIGlzIGxhcmdlIGVub3VnaC4gIFRoaXMgc2FtcGxlIHNpemUgaXMgbGFyZ2UgZW5vdWdoICgxMjU5IG9ic2VydmF0aW9ucyBhbmQgdGhlIHZhcmlhYmxlIGlzIGluZGVwZW5kZW50KQ0KDQoqKGQpKg0KSXQgY291bGQgYmUsIGlmIHdlIGhpdCBvdXIgaGlnaCBsaW1pdCBpbiB0aGUgY29uZmlkZW5jZSBpbnRlcnZhbC4gIEEgbW9yZSBhY2N1cmF0ZSBvbmUgd291bGQgYmUgaGFsZiBvZiBBbWVyaWNhbnMgYXBwcm92ZSBsZWdhbGl6YXRpb24uIA0KDQoNCiMjIyBMZWdhbGl6ZSBNYXJpanVhbmEgcGFydCBJSS4gDQpgYGB7cn0NCm0gPSAwLjAyDQpwID0gLjQ4DQp6ID0gMS45Ng0Kc2UgPSBtL3oNCm4gPSAocCooMS1wKSkvc2UqKjINCnJvdW5kKG4sMCkrMQ0KDQpgYGANCg0KV2Ugd291bGQgbmVlZCB0byBxdWVzdGlvbiBhcm91bmQgMjM5OCBVUyByZXNpZGVudHMuDQoNCiMjIyBTbGVlcCBkZXByaXZhdGlvbg0KYGBge3J9DQoNCnBfY2EgPC0gMC4wOA0Kbl9jYSA8LSAxMTU0NQ0KcF9vciA8LSAwLjA4OA0Kbl9vciA8LSA0NjkxDQoNCnAgPC0gcF9vciAtIHBfY2ENCg0Kc2UgPC0gKCAoKHBfY2EgKiAoMSAtIHBfY2EpKSAvIG5fY2EpICsgICgocF9vciAqICgxIC0gcF9vcikpIC8gbl9vcikpICoqIDAuNQ0KeiA8LSAxLjk2DQoNCm1lIDwteiAqIHNlDQoNCmNpXzk1IDwtIGMocCAtIG1lLCBwICsgbWUgKQ0KDQpjaV85NQ0KYGBgDQoNCiMjIyBCYXJraW5nIGRlZXINCg0KTWljcm9oYWJpdGF0IGZhY3RvcnMgYXNzb2NpYXRlZCB3aXRoIGZvcmFnZSBhbmQgYmVkIHNpdGVzIG9mIGJhcmtpbmcgZGVlciBpbiBIYWluYW4gSXNsYW5kLCBDaGluYSB3ZXJlIGV4YW1pbmVkIGZyb20gMjAwMSB0byAyMDAyLiBJbiB0aGlzIHJlZ2lvbiB3b29kcyBtYWtlIHVwIDQuOCUgb2YgdGhlIGxhbmQsIGN1bHRpdmF0ZWQgZ3Jhc3MgcGxvdCBtYWtlcyB1cCAxNC43JSBhbmQgZGVjaWR1b3VzIGZvcmVzdHMgbWFrZXMgdXAgMzkuNiUuIE9mIHRoZSA0MjYgc2l0ZXMgd2hlcmUgdGhlIGRlZXIgZm9yYWdlLCA0IHdlcmUgY2F0ZWdvcml6ZWQgYXMgd29vZHMsIDE2IGFzIGN1bHRpdmF0ZWQgZ3Jhc3NwbG90LCBhbmQgNjEgYXMgZGVjaWR1b3VzIGZvcmVzdHMuIFRoZSB0YWJsZSBiZWxvdyBzdW1tYXJpemVzIHRoZXNlIGRhdGEuDQoNCldvb2RzIHwgQ3VsdGl2YXRlZCBncmFzc3Bsb3QgfCBEZWNpZHVvdXMgZm9yZXN0cyB8IE90aGVyIHwgVG90YWwNCjQJCSAgICAgICAgMTYJCQkJICAgICAgICAgICAgICAgIDYxCQkJICAgICAzNDUJICAgIDQyNg0KDQoqKGEpIFdyaXRlIHRoZSBoeXBvdGhlc2VzIGZvciB0ZXN0aW5nIGlmIGJhcmtpbmcgZGVlciBwcmVmZXIgdG8gZm9yYWdlIGluIGNlcnRhaW4gaGFiaXRhdHMgb3ZlciBvdGhlcnMuKg0KDQoNCi0gSDAgLSBEZWVyIGRvIG5vdCBwcmVmZXIgdG8gZm9yYWdlIGluIGNlcnRhaW4gaGFiaXRhdHMgb3ZlciBvdGhlcnMNCi0gSDEtIERlZXIgaGF2ZSBhIHByZWZlcmVuY2UgaW4gaGFiaXRhdA0KDQoqKGIpIFdoYXQgdHlwZSBvZiB0ZXN0IGNhbiB3ZSB1c2UgdG8gYW5zd2VyIHRoaXMgcmVzZWFyY2ggcXVlc3Rpb24/Kg0KV2UgY2FuIHVzZSBhIGNoaS1zcXVhcmVkIHRlc3QgdG8gYW5zd2VyIHRoaXMgcXVlc3Rpb24uIA0KDQoqKGMpIENoZWNrIGlmIHRoZSBhc3N1bXB0aW9ucyBhbmQgY29uZGl0aW9ucyByZXF1aXJlZCBmb3IgdGhpcyB0ZXN0IGFyZSBzYXRpc2ZpZWQuKg0KVGhlIGNoaS1zcXVhcmUgZ29vZG5lc3Mgb2YgZml0IHRlc3QgaXMgYXBwcm9wcmlhdGUgd2hlbiB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDogVGhlIHNhbXBsaW5nIG1ldGhvZCBpcyBzaW1wbGUgcmFuZG9tIHNhbXBsaW5nLiBUaGUgdmFyaWFibGUgdW5kZXIgc3R1ZHkgaXMgY2F0ZWdvcmljYWwuIFRoZSBleHBlY3RlZCB2YWx1ZSBvZiB0aGUgbnVtYmVyIG9mIHNhbXBsZSBvYnNlcnZhdGlvbnMgaW4gZWFjaCBsZXZlbCBvZiB0aGUgdmFyaWFibGUgaXMgYXQgbGVhc3QgNS4NCg0KYGBge3J9DQpvYnMgPC0gYyh3b29kcz0wLjA0OCAqIDQyNiwgZ3Jhc3NwbG90PTAuMTQ3ICogNDI2LCBmb3Jlc3RzID0gMC4zOTYgKiA0MjYsIG90aGVyID0gKDEtKC4wNDggKyAuMTQ3ICsgLjM5NikpICogNDI2KQ0Kb2JzDQpgYGANCkl0IGFwcGVhcnMgYWxsIHRoZSBjb25kaXRpb25zIGZvciB0aGUgdGVzdCBhcmUgbWV0LiANCg0KKihkKSBEbyB0aGVzZSBkYXRhIHByb3ZpZGUgY29udmluY2luZyBldmlkZW5jZSB0aGF0IGJhcmtpbmcgZGVlciBwcmVmZXIgdG8gZm9yYWdlIGluIGNlcnRhaW4gaGFiaXRhdHMgb3ZlciBvdGhlcnM/IENvbmR1Y3QgYW4gYXBwcm9wcmlhdGUgaHlwb3RoZXNpcyB0ZXN0IHRvIGFuc3dlciB0aGlzIHJlc2VhcmNoIHF1ZXN0aW9uLioNCg0KYGBge3J9DQpjaGlzcS50ZXN0KHggPSBjKDQsIDE2LCA2MSwgMzQ1KSwgcCA9IGMoMC4wNDgsIDAuMTQ3LCAwLjM5NiwgMS0oLjA0OCsuMTQ3Ky4zOTYpKSkNCnByaW50KDIuMmUtMTYgPCAwLjUpDQpgYGANCioqVGhlIGRhdGEgcHJvdmlkZXMgY29udmluY2luZyBldmlkZW5jZSB0aGF0IHRoZSBudWxsIGh5cG90aGVzaXMgaXMgd3JvbmcuICBCZWNhdXNlIHRoZSB2YWx1ZSBvZiBwIGlzIGxlc3MgdGhhbiAwLjA1LCB3ZSByZWplY3QgSDAgYW5kIGFjY2VwdCBIMTogRGVlciBoYXZlIGEgcHJlZmVyZW5jZSBpbiBoYWJpdGF0LioqDQoNCiMjIyAqKkNvZmZlZSBhbmQgRGVwcmVzc2lvbi4qKiANCig2LjUwLCBwLiAyNDgpIA0KUmVzZWFyY2hlcnMgY29uZHVjdGVkIGEgc3R1ZHkgaW52ZXN0aWdhdGluZyB0aGUgcmVsYXRpb25zaGlwIGJldHdlZW4gY2FmZmVpbmF0ZWQgY29mZmVlIGNvbnN1bXB0aW9uIGFuZCByaXNrIG9mIGRlcHJlc3Npb24gaW4gd29tZW4uIFRoZXkgY29sbGVjdGVkIGRhdGEgb24gNTAsNzM5IHdvbWVuIGZyZWUgb2YgZGVwcmVzc2lvbiBzeW1wdG9tcyBhdCB0aGUgc3RhcnQgb2YgdGhlIHN0dWR5IGluIHRoZSB5ZWFyIDE5OTYsIGFuZCB0aGVzZSB3b21lbiB3ZXJlIGZvbGxvd2VkIHRocm91Z2ggMjAwNi4gVGhlIHJlc2VhcmNoZXJzIHVzZWQgcXVlc3Rpb25uYWlyZXMgdG8gY29sbGVjdCBkYXRhIG9uIGNhZmZlaW5hdGVkIGNvZmZlZSBjb25zdW1wdGlvbiwgYXNrZWQgZWFjaCBpbmRpdmlkdWFsIGFib3V0IHBoeXNpY2lhbi1kaWFnbm9zZWQgZGVwcmVzc2lvbiwgYW5kIGFsc28gYXNrZWQgYWJvdXQgdGhlIHVzZSBvZiBhbnRpZGVwcmVzc2FudHMuIFRoZSB0YWJsZSBiZWxvdyBzaG93cyB0aGUgZGlzdHJpYnV0aW9uIG9mIGluY2lkZW5jZXMgb2YgZGVwcmVzc2lvbiBieSBhbW91bnQgb2YgY2FmZmVpbmF0ZWQgY29mZmVlIGNvbnN1bXB0aW9uLg0KDQpgYGB7ciBlY2hvPUZBTFNFfQ0KZGF0YSA8LSByZWFkLmNzdihmaWxlPSJkYXRhLmNzdiIpDQpjb2xuYW1lcyhkYXRhKSA8LSBjKCJkZXByZXNzaW9uIiwgImxlc3NfMV9jdXBfd2VlayIsICIyX3RvXzZfY3Vwc193ZWVrIiwgIjFfY3VwX2RheSIsICIyX3RvXzNfY3Vwc19kYXkiLCAiNF9jdXBzX2RheSIsICJ0b3RhbCIpDQprbml0cjo6a2FibGUoZGF0YSkNCmBgYA0KDQoqKihhKSBXaGF0IHR5cGUgb2YgdGVzdCBpcyBhcHByb3ByaWF0ZSBmb3IgZXZhbHVhdGluZyBpZiB0aGVyZSBpcyBhbiBhc3NvY2lhdGlvbiBiZXR3ZWVuIGNvZmZlZSBpbnRha2UgYW5kIGRlcHJlc3Npb24/KioNCg0KVGhlIGNoaSBzcXVhcmUgdGVzdCB3aWxsIGJlIGFwcHJvcHJpYXRlIHRvIHRlc3QgZm9yIGFzc29jaWF0aW9uIGJldHdlZW4gdGhlc2UgdHdvIHZhcmlhYmxlcy4gDQoNCioqKGIpIFdyaXRlIHRoZSBoeXBvdGhlc2VzIGZvciB0aGUgdGVzdCB5b3UgaWRlbnRpZmllZCBpbiBwYXJ0IChhKS4qKg0KSDA6IFRoZXJlIGlzIG5vIGNvbm5lY3Rpb24gYmV0d2VlbiBjb2ZmZWUgaW50YWtlIGFuZCBkZXByZXNzaW9uLiANCkgxOiBUaGVyZSBpcyBhIGNvbm5lY3Rpb24gYmV0d2VlbiB0aG9zZSB0d28gdmFyaWFibGVzLiANCg0KKiooYykgQ2FsY3VsYXRlIHRoZSBvdmVyYWxsIHByb3BvcnRpb24gb2Ygd29tZW4gd2hvIGRvIGFuZCBkbyBub3Qgc3VmZmVyIGZyb20gZGVwcmVzc2lvbi4qKg0KYGBge3J9DQp0b3RhbCA8LSA1MDczOQ0KdG90YWxfbm8gPC0gNDgxMzINCnRvdGFsX3llcyA8LSAyNjA3DQoNCnByb3BfeWVzIDwtIHRvdGFsX3llcy90b3RhbA0KcHJvcF9ubyA8LSB0b3RhbF9uby90b3RhbA0KDQoNCmMoeWVzPXBlcmNlbnQocHJvcF95ZXMsIGFjY3VyYWN5ID0gMC4wMSksIG5vPXBlcmNlbnQocHJvcF9ubywgYWNjdXJhY3kgPSAwLjAxKSkNCmBgYA0KDQoqKihkKSBJZGVudGlmeSB0aGUgZXhwZWN0ZWQgY291bnQgZm9yIHRoZSBoaWdobGlnaHRlZCBjZWxsLCBhbmQgY2FsY3VsYXRlIHRoZSBjb250cmlidXRpb24gb2YgdGhpcyBjZWxsIHRvIHRoZSB0ZXN0IHN0YXRpc3RpYywgaS5lLiAoJE9ic2VydmVkIC0gRXhwZWN0ZWQpXjIgLyBFeHBlY3RlZCQpLioqDQpgYGB7cn0NCg0KZXhwZWN0ZWQgPC0gcHJvcF95ZXMgKiA2NjE3DQoNCmNvbnRyaSA8LSAoKDM3MyAtIGV4cGVjdGVkKSAqKiAyKS9leHBlY3RlZA0KDQpjKGV4cGVjdGVkPSBleHBlY3RlZCwgY29udHJpYiA9IGNvbnRyaSkNCmBgYA0KDQoNCioqKGUpIFRoZSB0ZXN0IHN0YXRpc3RpYyBpcyAkXGNoaV4yPTIwLjkzJC4gV2hhdCBpcyB0aGUgcC12YWx1ZT8qKg0KDQpgYGB7cn0NCnBfdmFsIDwtIHBjaGlzcSgyMC45MywgZGY9NCwgbG93ZXIudGFpbD1GQUxTRSkNCnBfdmFsDQpgYGANCg0KDQoqKihmKSBXaGF0IGlzIHRoZSBjb25jbHVzaW9uIG9mIHRoZSBoeXBvdGhlc2lzIHRlc3Q/KioNCg0KQmVjYXVzZSB0aGUgdmFsdWUgb2YgcCBpcyBsZXNzIHRoYW4gMC4wNSwgd2UgcmVqZWN0IEgwIGFuZCBhY2NlcHQgSDENCg0KKiooZykgT25lIG9mIHRoZSBhdXRob3JzIG9mIHRoaXMgc3R1ZHkgd2FzIHF1b3RlZCBvbiB0aGUgTllUaW1lcyBhcyBzYXlpbmcgaXQgd2FzICJ0b28gZWFybHkgdG8gcmVjb21tZW5kIHRoYXQgd29tZW4gbG9hZCB1cCBvbiBleHRyYSBjb2ZmZWUiIGJhc2VkIG9uIGp1c3QgdGhpcyBzdHVkeS4gRG8geW91IGFncmVlIHdpdGggdGhpcyBzdGF0ZW1lbnQ/IEV4cGxhaW4geW91ciByZWFzb25pbmcuKioNCg0KVGhpcyBwcm9iYWJseSBtZWFucyB0aGF0LCBldmVuIHRob3VnaCB0aGVyZSBpcyBzb21lIGNvbm5lY3Rpb24gYmV0d2VlbiB0aGUgYW1vdW50IG9mIGNvZmZlZSBpbnRha2UgYW5kIGRlcHJlc3Npb24sIGEgY29ycmVsYXRpb24gZG9lcyBub3QgbWVhbiBjYXVzYWxpdHkgYW5kIG90aGVyIGZhY3RvcnMgbWlnaHQgaGF2ZSB0byBiZSB0YWtlbiBpbnRvIGNvbnNpZGVyYXRpb24gYmVmb3JlIG1ha2luZyBhIGNsaW5pY2FsIHJlY29tbWVuZGF0aW9uIG9uIHRoZSBiZW5lZml0cyBvZiBjb2ZmZWUgdG8gcHJldmVudCBkZXByZXNzaW9uLiANCg0KDQouLi4NCg0K