install.packages(c(“ISLR2”,“car”)) library(ISLR2) library(car)
—————————————————————————————————————————————————–
Q2
Carefully explain the differences between the KNN classifier and KNN
regression methods.
Answer:
KNN classifier deals with categorical targets and identifies the K
closest neighbors, takes a majority vote to assign a class label.
whereas
KNN regression deals with continuous numerical targets, identifies
the K closest neighbor and calculates the arithmetic average of their
value to predice a specific number.
—————————————————————————————————————————————————–
#—————————————————- # Q9. # This question involves the use of
multiple linear # regression on the Auto data set.
#—————————————————-
———————————————————————————
a. Produce a scatterplot matrix which includes all the variables in
the data set.
#———————————————————————————-
pairs(Auto[,-9], main ="Scatter Plot Matrix of Auto Dataset")

—————————————————————————————————————————————-
b. Compute the matrix of correlations between the variables using
the function cor(). Exclude the name variable,which is qualitativel
—————————————————————————————————————————————-
cor(Auto[, -9])
mpg cylinders displacement horsepower weight
mpg 1.0000000 -0.7776175 -0.8051269 -0.7784268 -0.8322442
cylinders -0.7776175 1.0000000 0.9508233 0.8429834 0.8975273
displacement -0.8051269 0.9508233 1.0000000 0.8972570 0.9329944
horsepower -0.7784268 0.8429834 0.8972570 1.0000000 0.8645377
weight -0.8322442 0.8975273 0.9329944 0.8645377 1.0000000
acceleration 0.4233285 -0.5046834 -0.5438005 -0.6891955 -0.4168392
year 0.5805410 -0.3456474 -0.3698552 -0.4163615 -0.3091199
origin 0.5652088 -0.5689316 -0.6145351 -0.4551715 -0.5850054
acceleration year origin
mpg 0.4233285 0.5805410 0.5652088
cylinders -0.5046834 -0.3456474 -0.5689316
displacement -0.5438005 -0.3698552 -0.6145351
horsepower -0.6891955 -0.4163615 -0.4551715
weight -0.4168392 -0.3091199 -0.5850054
acceleration 1.0000000 0.2903161 0.2127458
year 0.2903161 1.0000000 0.1815277
origin 0.2127458 0.1815277 1.0000000
—————————————————————————————————————————————
c. Use lm() function to perform a mutlitple linear regression with
mpg as the response and all variables except name as the
predictors.
Use summary() function to print the results.
i.Is there a relationship between predictors and the response
Answer: Yes
ii. Which predictors appear to have a statistically significant
relationship to the response?
Answer: Displacement, Weight, Year and Origin
iii. #What does the coefficient for the year variable suggest?
Answer: For every one year increase in model year, the vehicle’s
fuel efficiency increases by 0.75 MPG.
—————————————————————————————————————————————–
lr<-lm(mpg ~ . - name, data = Auto)
summary(lr)
Call:
lm(formula = mpg ~ . - name, data = Auto)
Residuals:
Min 1Q Median 3Q Max
-9.5903 -2.1565 -0.1169 1.8690 13.0604
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) -17.218435 4.644294 -3.707 0.00024 ***
cylinders -0.493376 0.323282 -1.526 0.12780
displacement 0.019896 0.007515 2.647 0.00844 **
horsepower -0.016951 0.013787 -1.230 0.21963
weight -0.006474 0.000652 -9.929 < 2e-16 ***
acceleration 0.080576 0.098845 0.815 0.41548
year 0.750773 0.050973 14.729 < 2e-16 ***
origin 1.426141 0.278136 5.127 4.67e-07 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 3.328 on 384 degrees of freedom
Multiple R-squared: 0.8215, Adjusted R-squared: 0.8182
F-statistic: 252.4 on 7 and 384 DF, p-value: < 2.2e-16
————————————————————————————————————————————
Do the residual plots suggest any unusually large outliers?
Does the leverage plot identify any observations with unusually high
leverage?
————————————————————————————————————————————-
plot(lr)




————————————————————————————-
e. Use the * and : symbols to fit linear regression models with
interaction effects.
Do any interactions appear to be statistically significant?
————————————————————————————-
lr2 <- lm(mpg ~ (.-name) ^2,data = Auto )
summary(lr2)
Call:
lm(formula = mpg ~ (. - name)^2, data = Auto)
Residuals:
Min 1Q Median 3Q Max
-7.6303 -1.4481 0.0596 1.2739 11.1386
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 3.548e+01 5.314e+01 0.668 0.50475
cylinders 6.989e+00 8.248e+00 0.847 0.39738
displacement -4.785e-01 1.894e-01 -2.527 0.01192 *
horsepower 5.034e-01 3.470e-01 1.451 0.14769
weight 4.133e-03 1.759e-02 0.235 0.81442
acceleration -5.859e+00 2.174e+00 -2.696 0.00735 **
year 6.974e-01 6.097e-01 1.144 0.25340
origin -2.090e+01 7.097e+00 -2.944 0.00345 **
cylinders:displacement -3.383e-03 6.455e-03 -0.524 0.60051
cylinders:horsepower 1.161e-02 2.420e-02 0.480 0.63157
cylinders:weight 3.575e-04 8.955e-04 0.399 0.69000
cylinders:acceleration 2.779e-01 1.664e-01 1.670 0.09584 .
cylinders:year -1.741e-01 9.714e-02 -1.793 0.07389 .
cylinders:origin 4.022e-01 4.926e-01 0.816 0.41482
displacement:horsepower -8.491e-05 2.885e-04 -0.294 0.76867
displacement:weight 2.472e-05 1.470e-05 1.682 0.09342 .
displacement:acceleration -3.479e-03 3.342e-03 -1.041 0.29853
displacement:year 5.934e-03 2.391e-03 2.482 0.01352 *
displacement:origin 2.398e-02 1.947e-02 1.232 0.21875
horsepower:weight -1.968e-05 2.924e-05 -0.673 0.50124
horsepower:acceleration -7.213e-03 3.719e-03 -1.939 0.05325 .
horsepower:year -5.838e-03 3.938e-03 -1.482 0.13916
horsepower:origin 2.233e-03 2.930e-02 0.076 0.93931
weight:acceleration 2.346e-04 2.289e-04 1.025 0.30596
weight:year -2.245e-04 2.127e-04 -1.056 0.29182
weight:origin -5.789e-04 1.591e-03 -0.364 0.71623
acceleration:year 5.562e-02 2.558e-02 2.174 0.03033 *
acceleration:origin 4.583e-01 1.567e-01 2.926 0.00365 **
year:origin 1.393e-01 7.399e-02 1.882 0.06062 .
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 2.695 on 363 degrees of freedom
Multiple R-squared: 0.8893, Adjusted R-squared: 0.8808
F-statistic: 104.2 on 28 and 363 DF, p-value: < 2.2e-16
————————————————————————————-
f. Try a few different transformations of the variables, such a
log(X), √X, X2.
————————————————————————————
lr_trans <- lm(mpg ~ . -name + log(horsepower) + I(horsepower ^2) + log (weight) + I(displacement^2), data = Auto)
summary(lr_trans)
Call:
lm(formula = mpg ~ . - name + log(horsepower) + I(horsepower^2) +
log(weight) + I(displacement^2), data = Auto)
Residuals:
Min 1Q Median 3Q Max
-9.273 -1.497 -0.110 1.446 11.974
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 1.415e+02 4.757e+01 2.976 0.00311 **
cylinders 1.732e-01 3.648e-01 0.475 0.63521
displacement -3.681e-02 1.994e-02 -1.846 0.06564 .
horsepower 4.667e-02 1.714e-01 0.272 0.78556
weight 1.078e-03 2.115e-03 0.510 0.61049
acceleration -2.018e-01 1.005e-01 -2.008 0.04533 *
year 7.657e-01 4.514e-02 16.963 < 2e-16 ***
origin 5.465e-01 2.670e-01 2.046 0.04140 *
log(horsepower) -1.375e+01 9.530e+00 -1.442 0.15002
I(horsepower^2) 6.682e-05 3.507e-04 0.191 0.84901
log(weight) -1.469e+01 6.803e+00 -2.159 0.03145 *
I(displacement^2) 6.712e-05 3.436e-05 1.954 0.05148 .
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 2.905 on 380 degrees of freedom
Multiple R-squared: 0.8654, Adjusted R-squared: 0.8615
F-statistic: 222.1 on 11 and 380 DF, p-value: < 2.2e-16
—————————————————————–
Q10. This question should be answered using the Carseats data
set.
——————————————————————————–
a Fit a multiple regression model to predict Sales using
Price,Urban, and US.
——————————————————————————–
lr <- lm(Sales ~ Price + Urban + US, data = Carseats)
summary(lr)
Call:
lm(formula = Sales ~ Price + Urban + US, data = Carseats)
Residuals:
Min 1Q Median 3Q Max
-6.9206 -1.6220 -0.0564 1.5786 7.0581
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 13.043469 0.651012 20.036 < 2e-16 ***
Price -0.054459 0.005242 -10.389 < 2e-16 ***
UrbanYes -0.021916 0.271650 -0.081 0.936
USYes 1.200573 0.259042 4.635 4.86e-06 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 2.472 on 396 degrees of freedom
Multiple R-squared: 0.2393, Adjusted R-squared: 0.2335
F-statistic: 41.52 on 3 and 396 DF, p-value: < 2.2e-16
——————————————————————
b. Provide an interpretation of each coefficient in the model.
Becareful—some of the variables in the model are qualitative!
Answer:
Price - for every increase in price, sales decrease
UrbanYes - results dont appear statistically significant
USYes - Stores in the US are expected to see higher sales on average
compared to those outside of the US
——————————————————————
————————————————————————————-
c. Write out the model in equation form, being careful to
handle
the qualitative variables properly.
Answer: 𝑆𝑎𝑙𝑒𝑠=𝛽0+𝛽1(𝑃𝑟𝑖𝑐𝑒)+𝛽2(𝑈𝑟𝑏𝑎𝑛𝑌𝑒𝑠)+𝛽3(𝑈𝑆𝑌𝑒𝑠)+𝜖
————————————————————————————-
——————————————————————————–
d. For which of the predictors can you reject the null hypothesis H0
: βj = 0?
Answer: We can reject null hypothesis for Price and US
——————————————————————————–
————————————————————————————-
e. On the basis of your response to the previous question,
fit a smaller model that only uses the predictors for which there is
evidence of association with the outcome.
————————————————————————————-
lr <- lm(Sales ~ Price + US, data=Carseats)
summary(lr)
Call:
lm(formula = Sales ~ Price + US, data = Carseats)
Residuals:
Min 1Q Median 3Q Max
-6.9269 -1.6286 -0.0574 1.5766 7.0515
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 13.03079 0.63098 20.652 < 2e-16 ***
Price -0.05448 0.00523 -10.416 < 2e-16 ***
USYes 1.19964 0.25846 4.641 4.71e-06 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 2.469 on 397 degrees of freedom
Multiple R-squared: 0.2393, Adjusted R-squared: 0.2354
F-statistic: 62.43 on 2 and 397 DF, p-value: < 2.2e-16
——————————————————-
f. How well do the models in (a) and (e) fit the data?
Answer: second model appears to fit the model a generally better
than the first model
——————————————————-
————————————————————————————-
g. Using the model from (e), obtain 95 % confidence intervals for
the coefficient(s).
————————————————————————————-
confint(lr)
2.5 % 97.5 %
(Intercept) 11.79032020 14.27126531
Price -0.06475984 -0.04419543
USYes 0.69151957 1.70776632
————————————————————————————-
h. Is there evidence of outliers or high leverage observations in
the model from (e)?
Answer: Yes, there are outliers in model from (e)
————————————————————————————-
————————————————————————————-
Q12. This problem involves simple linear regression without an
intercept.
————————————————————————————
————————————————————————————-
a. Recall that the coefficient estimateˆβ for the linear regression
of Y onto X without an intercept is given by (3.38).
Under what circumstance is the coefficient estimate for the
regression of X
onto Y the same as the coefficient estimate for the regression of Y
onto X?
Answer: When the sum of squares of the X values equals the sum of
squares of the Y values
————————————————————————————-
————————————————————————————-
b. Generate an example in R with n = 100 observations in which
the coefficient estimate for the regression of X onto Y is
different
from the coefficient estimate for the regression of Y onto X.
————————————————————————————-
set.seed(42)
x<-rnorm(100, mean=0, sd =1)
y<-2 * x + rnorm(100, mean =0, sd =2)
x_fit <-lm(y ~ x - 1)
y_fit <-lm(x ~ y - 1)
coef(x_fit)
coef(y_fit)
————————————————————————————-
c. Generate an example in R with n = 100 observations in which
the coefficient estimate for the regression of X onto Y is the
same as the coefficient estimate for the regression of Y onto X.
———————————————————————————–
set.seed(42)
x <- rnorm(100, mean=0, sd = 1)
y<-sample(x)
x_fit <-lm(y~x-1)
y_fit <-lm(x~y-1)
coef(x_fit)
coef(y_fit)
LS0tCnRpdGxlOiAiQXNzaWdubWVudCAyIgpOYW1lOiBWYWxlcmllIENlY2lsaWFubwpvdXRwdXQ6IGh0bWxfbm90ZWJvb2sKLS0tCgppbnN0YWxsLnBhY2thZ2VzKGMoIklTTFIyIiwiY2FyIikpCmxpYnJhcnkoSVNMUjIpCmxpYnJhcnkoY2FyKQoKIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIFEyCiMgQ2FyZWZ1bGx5IGV4cGxhaW4gdGhlIGRpZmZlcmVuY2VzIGJldHdlZW4gdGhlIEtOTiBjbGFzc2lmaWVyIGFuZCBLTk4gcmVncmVzc2lvbiBtZXRob2RzLgojCiMgQW5zd2VyOiAKIyBLTk4gY2xhc3NpZmllciBkZWFscyB3aXRoIGNhdGVnb3JpY2FsIHRhcmdldHMgYW5kIGlkZW50aWZpZXMgdGhlIEsgY2xvc2VzdCBuZWlnaGJvcnMsIHRha2VzIGEgbWFqb3JpdHkgdm90ZSB0byBhc3NpZ24gYSBjbGFzcyBsYWJlbC4KIyB3aGVyZWFzCiMgS05OIHJlZ3Jlc3Npb24gZGVhbHMgd2l0aCBjb250aW51b3VzIG51bWVyaWNhbCB0YXJnZXRzLCBpZGVudGlmaWVzIHRoZSBLIGNsb3Nlc3QgbmVpZ2hib3IgYW5kIGNhbGN1bGF0ZXMgdGhlIGFyaXRobWV0aWMgYXZlcmFnZSBvZiB0aGVpciB2YWx1ZSB0byBwcmVkaWNlIGEgc3BlY2lmaWMgbnVtYmVyLiAKIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBROS4gCiMgVGhpcyBxdWVzdGlvbiBpbnZvbHZlcyB0aGUgdXNlIG9mIG11bHRpcGxlIGxpbmVhciAKIyByZWdyZXNzaW9uIG9uIHRoZSBBdXRvIGRhdGEgc2V0LgojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBhLiBQcm9kdWNlIGEgc2NhdHRlcnBsb3QgbWF0cml4IHdoaWNoIGluY2x1ZGVzIGFsbCB0aGUgdmFyaWFibGVzIGluIHRoZSBkYXRhIHNldC4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KYGBge3J9CnBhaXJzKEF1dG9bLC05XSwgbWFpbiA9IlNjYXR0ZXIgUGxvdCBNYXRyaXggb2YgQXV0byBEYXRhc2V0IikKYGBgCgoKIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgYi4gQ29tcHV0ZSB0aGUgbWF0cml4IG9mIGNvcnJlbGF0aW9ucyBiZXR3ZWVuIHRoZSB2YXJpYWJsZXMgdXNpbmcgdGhlIGZ1bmN0aW9uIGNvcigpLiBFeGNsdWRlIHRoZSBuYW1lIHZhcmlhYmxlLHdoaWNoIGlzIHF1YWxpdGF0aXZlbCMKIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgpgYGB7cn0KY29yKEF1dG9bLCAtOV0pCmBgYAojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIGMuIFVzZSBsbSgpIGZ1bmN0aW9uIHRvIHBlcmZvcm0gYSBtdXRsaXRwbGUgbGluZWFyIHJlZ3Jlc3Npb24gd2l0aCBtcGcgYXMgdGhlIHJlc3BvbnNlIGFuZCBhbGwgdmFyaWFibGVzIGV4Y2VwdCBuYW1lIGFzIHRoZSBwcmVkaWN0b3JzLiAKIyBVc2Ugc3VtbWFyeSgpIGZ1bmN0aW9uIHRvIHByaW50IHRoZSByZXN1bHRzLiAKIwojIGkuSXMgdGhlcmUgYSByZWxhdGlvbnNoaXAgYmV0d2VlbiBwcmVkaWN0b3JzIGFuZCB0aGUgcmVzcG9uc2UgCiMgQW5zd2VyOiBZZXMKIwojIGlpLiBXaGljaCBwcmVkaWN0b3JzIGFwcGVhciB0byBoYXZlIGEgc3RhdGlzdGljYWxseSBzaWduaWZpY2FudCByZWxhdGlvbnNoaXAgdG8gdGhlIHJlc3BvbnNlPyAgCiMgQW5zd2VyOiBEaXNwbGFjZW1lbnQsIFdlaWdodCwgWWVhciBhbmQgT3JpZ2luCiMKIyBpaWkuICNXaGF0IGRvZXMgdGhlIGNvZWZmaWNpZW50IGZvciB0aGUgeWVhciB2YXJpYWJsZSBzdWdnZXN0PwojIEFuc3dlcjogRm9yIGV2ZXJ5IG9uZSB5ZWFyIGluY3JlYXNlIGluIG1vZGVsIHllYXIsIHRoZSB2ZWhpY2xlJ3MgZnVlbCBlZmZpY2llbmN5IGluY3JlYXNlcyBieSAwLjc1IE1QRy4KIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpgYGB7cn0KbHI8LWxtKG1wZyB+IC4gLSBuYW1lLCBkYXRhID0gQXV0bykKc3VtbWFyeShscikKYGBgCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgZC4gVXNlIHRoZSBwbG90KCkgZnVuY3Rpb24gdG8gcHJvZHVjZSBkaWFnbm9zdGljIHBsb3RzIG9mIHRoZSBsaW5lYXIgcmVncmVzc2lvbiBmaXQuIENvbW1lbnQgb24gYW55IHByb2JsZW1zIHlvdSBzZWUgd2l0aCB0aGUgZml0LgojIERvIHRoZSByZXNpZHVhbCBwbG90cyBzdWdnZXN0IGFueSB1bnVzdWFsbHkgbGFyZ2Ugb3V0bGllcnM/IAojIERvZXMgdGhlIGxldmVyYWdlIHBsb3QgaWRlbnRpZnkgYW55IG9ic2VydmF0aW9ucyB3aXRoIHVudXN1YWxseSBoaWdoIGxldmVyYWdlPwojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCmBgYHtyfQpwbG90KGxyKQpgYGAKCgojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBlLiBVc2UgdGhlICogYW5kIDogc3ltYm9scyB0byBmaXQgbGluZWFyIHJlZ3Jlc3Npb24gbW9kZWxzIHdpdGggaW50ZXJhY3Rpb24gZWZmZWN0cy4gCiMgRG8gYW55IGludGVyYWN0aW9ucyBhcHBlYXIgdG8gYmUgc3RhdGlzdGljYWxseSBzaWduaWZpY2FudD8KIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgpgYGB7cn0KbHIyIDwtIGxtKG1wZyB+ICguLW5hbWUpIF4yLGRhdGEgPSBBdXRvICkKc3VtbWFyeShscjIpCmBgYAojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBmLiBUcnkgYSBmZXcgZGlmZmVyZW50IHRyYW5zZm9ybWF0aW9ucyBvZiB0aGUgdmFyaWFibGVzLCBzdWNoIGEgbG9nKFgpLCDiiJpYLCBYMi4gCiMgQ29tbWVudCBvbiB5b3VyIGZpbmRpbmdzLgojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKYGBge3J9CmxyX3RyYW5zIDwtIGxtKG1wZyB+IC4gLW5hbWUgKyBsb2coaG9yc2Vwb3dlcikgKyBJKGhvcnNlcG93ZXIgXjIpICsgbG9nICh3ZWlnaHQpICsgSShkaXNwbGFjZW1lbnReMiksIGRhdGEgPSBBdXRvKQpzdW1tYXJ5KGxyX3RyYW5zKQpgYGAKIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIFExMC4gVGhpcyBxdWVzdGlvbiBzaG91bGQgYmUgYW5zd2VyZWQgdXNpbmcgdGhlIENhcnNlYXRzIGRhdGEgc2V0LgojCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBhIEZpdCBhIG11bHRpcGxlIHJlZ3Jlc3Npb24gbW9kZWwgdG8gcHJlZGljdCBTYWxlcyB1c2luZyBQcmljZSxVcmJhbiwgYW5kIFVTLgojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmBgYHtyfQpsciA8LSBsbShTYWxlcyB+IFByaWNlICsgVXJiYW4gKyBVUywgZGF0YSA9IENhcnNlYXRzKQpzdW1tYXJ5KGxyKQpgYGAKCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgYi4gUHJvdmlkZSBhbiBpbnRlcnByZXRhdGlvbiBvZiBlYWNoIGNvZe+sgGljaWVudCBpbiB0aGUgbW9kZWwuIAojIEJlY2FyZWZ1bOKAlHNvbWUgb2YgdGhlIHZhcmlhYmxlcyBpbiB0aGUgbW9kZWwgYXJlIHF1YWxpdGF0aXZlIQojCiMgQW5zd2VyOiAKIyBQcmljZSAtIGZvciBldmVyeSBpbmNyZWFzZSBpbiBwcmljZSwgc2FsZXMgZGVjcmVhc2UKIyBVcmJhblllcyAtIHJlc3VsdHMgZG9udCBhcHBlYXIgc3RhdGlzdGljYWxseSBzaWduaWZpY2FudAojIFVTWWVzIC0gU3RvcmVzIGluIHRoZSBVUyBhcmUgZXhwZWN0ZWQgdG8gc2VlIGhpZ2hlciBzYWxlcyBvbiBhdmVyYWdlIGNvbXBhcmVkIHRvIHRob3NlIG91dHNpZGUgb2YgdGhlIFVTCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgoKIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgYy4gIFdyaXRlIG91dCB0aGUgbW9kZWwgaW4gZXF1YXRpb24gZm9ybSwgYmVpbmcgY2FyZWZ1bCB0byBoYW5kbGUKIyB0aGUgcXVhbGl0YXRpdmUgdmFyaWFibGVzIHByb3Blcmx5LgojCiMgQW5zd2VyOiDwnZGG8J2RjvCdkZnwnZGS8J2RoD3wnZu9MCvwnZu9MSjwnZGD8J2Rn/CdkZbwnZGQ8J2Rkikr8J2bvTIo8J2RiPCdkZ/wnZGP8J2RjvCdkZvwnZGM8J2RkvCdkaApK/Cdm70zKPCdkYjwnZGG8J2RjPCdkZLwnZGgKSvwnZyWCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKCgojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgZC4gRm9yIHdoaWNoIG9mIHRoZSBwcmVkaWN0b3JzIGNhbiB5b3UgcmVqZWN0IHRoZSBudWxsIGh5cG90aGVzaXMgSDAgOiDOsmogPSAwPwojCiMgQW5zd2VyOiBXZSBjYW4gcmVqZWN0IG51bGwgaHlwb3RoZXNpcyBmb3IgUHJpY2UgYW5kIFVTCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCgojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBlLiBPbiB0aGUgYmFzaXMgb2YgeW91ciByZXNwb25zZSB0byB0aGUgcHJldmlvdXMgcXVlc3Rpb24sIAojIGZpdCBhIHNtYWxsZXIgbW9kZWwgdGhhdCBvbmx5IHVzZXMgdGhlIHByZWRpY3RvcnMgZm9yIHdoaWNoIHRoZXJlIGlzIGV2aWRlbmNlIG9mIGFzc29jaWF0aW9uIHdpdGggdGhlIG91dGNvbWUuCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpgYGB7cn0KbHIgPC0gbG0oU2FsZXMgfiBQcmljZSArIFVTLCBkYXRhPUNhcnNlYXRzKQpzdW1tYXJ5KGxyKQpgYGAKCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIGYuIEhvdyB3ZWxsIGRvIHRoZSBtb2RlbHMgaW4gKGEpIGFuZCAoZSkgZml0IHRoZSBkYXRhPwojCiMgQW5zd2VyOiBzZWNvbmQgbW9kZWwgYXBwZWFycyB0byBmaXQgdGhlIG1vZGVsIGEgZ2VuZXJhbGx5IGJldHRlciB0aGFuIHRoZSBmaXJzdCBtb2RlbAojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCgojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBnLiBVc2luZyB0aGUgbW9kZWwgZnJvbSAoZSksIG9idGFpbiA5NSAlIGNvbmZpZGVuY2UgaW50ZXJ2YWxzIGZvciB0aGUgY29l76yAaWNpZW50KHMpLgojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KYGBge3J9CmNvbmZpbnQobHIpCmBgYAoKIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgaC4gSXMgdGhlcmUgZXZpZGVuY2Ugb2Ygb3V0bGllcnMgb3IgaGlnaCBsZXZlcmFnZSBvYnNlcnZhdGlvbnMgaW4gdGhlIG1vZGVsIGZyb20gKGUpPwojCiMgQW5zd2VyOiBZZXMsIHRoZXJlIGFyZSBvdXRsaWVycyBpbiBtb2RlbCBmcm9tIChlKQojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCgoKIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgUTEyLiBUaGlzIHByb2JsZW0gaW52b2x2ZXMgc2ltcGxlIGxpbmVhciByZWdyZXNzaW9uIHdpdGhvdXQgYW4gaW50ZXJjZXB0LgojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgYS4gUmVjYWxsIHRoYXQgdGhlIGNvZe+sgGljaWVudCBlc3RpbWF0ZcuGzrIgZm9yIHRoZSBsaW5lYXIgcmVncmVzc2lvbiBvZiBZIG9udG8gWCB3aXRob3V0IGFuIGludGVyY2VwdCBpcyBnaXZlbiBieSAoMy4zOCkuCiMgVW5kZXIgd2hhdCBjaXJjdW1zdGFuY2UgaXMgdGhlIGNvZe+sgGljaWVudCBlc3RpbWF0ZSBmb3IgdGhlIHJlZ3Jlc3Npb24gb2YgWAojIG9udG8gWSB0aGUgc2FtZSBhcyB0aGUgY29l76yAaWNpZW50IGVzdGltYXRlIGZvciB0aGUgcmVncmVzc2lvbiBvZiBZIG9udG8gWD8KIyAKIyBBbnN3ZXI6IFdoZW4gdGhlIHN1bSBvZiBzcXVhcmVzIG9mIHRoZSBYIHZhbHVlcyBlcXVhbHMgdGhlIHN1bSBvZiBzcXVhcmVzIG9mIHRoZSBZIHZhbHVlcwojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIGIuIEdlbmVyYXRlIGFuIGV4YW1wbGUgaW4gUiB3aXRoIG4gPSAxMDAgb2JzZXJ2YXRpb25zIGluIHdoaWNoCiMgdGhlIGNvZe+sgGljaWVudCBlc3RpbWF0ZSBmb3IgdGhlIHJlZ3Jlc3Npb24gb2YgWCBvbnRvIFkgaXMgZGlmZmVyZW50CiMgZnJvbSB0aGUgY29l76yAaWNpZW50IGVzdGltYXRlIGZvciB0aGUgcmVncmVzc2lvbiBvZiBZIG9udG8gWC4KIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmBgYHtyfQpzZXQuc2VlZCg0MikKeDwtcm5vcm0oMTAwLCBtZWFuPTAsIHNkID0xKQp5PC0yICogeCArIHJub3JtKDEwMCwgbWVhbiA9MCwgc2QgPTIpCgp4X2ZpdCA8LWxtKHkgfiB4IC0gMSkKeV9maXQgPC1sbSh4IH4geSAtIDEpCgpjb2VmKHhfZml0KQoKYGBgCgpgYGB7cn0KY29lZih5X2ZpdCkKYGBgCiAKIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgYy4gR2VuZXJhdGUgYW4gZXhhbXBsZSBpbiBSIHdpdGggbiA9IDEwMCBvYnNlcnZhdGlvbnMgaW4gd2hpY2gKIyB0aGUgY29l76yAaWNpZW50IGVzdGltYXRlIGZvciB0aGUgcmVncmVzc2lvbiBvZiBYIG9udG8gWSBpcyB0aGUKIyBzYW1lIGFzIHRoZSBjb2XvrIBpY2llbnQgZXN0aW1hdGUgZm9yIHRoZSByZWdyZXNzaW9uIG9mIFkgb250byBYLgojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmBgYHtyfQpzZXQuc2VlZCg0MikKeCA8LSBybm9ybSgxMDAsIG1lYW49MCwgc2QgPSAxKQp5PC1zYW1wbGUoeCkKCnhfZml0IDwtbG0oeX54LTEpCnlfZml0IDwtbG0oeH55LTEpCgpjb2VmKHhfZml0KQpgYGAKCmBgYHtyfQpjb2VmKHlfZml0KQpgYGAKCgo=
Comment on your findings.