Tema 4. T de Student

Drive-a-Lemon, renta automóviles en buenas condiciones mecánicas, pero más antiguos que los que ofrecen las grandes cadenas nacionales de renta de coches. Como resultado, anuncia que sus tarifas son considerablemente más bajas que las de sus competidores grandes. Una encuesta de la industria estableció que el cargo total promedio por renta en una de las compañías más importantes es $77.38. Una muestra aleatoria de 18 transacciones realizadas por Drive-a-Lemon mostró un cargo total promedio de $87.61, con una desviación estándar muestral de $19.48. Verifique que para œ = 0.025, el cargo total promedio de Drive-a-Lemon es significativamente más alto que el de las compañías grandes. ¿Indica este resultado que las tarifas de Drive-a-Lemon, en efecto, no son más bajas que las de las cadenas nacionales importantes? Explique su respuesta.

Respuesta:

Paso 1: Plantear Hipotésis
H0: μ = x-
H1: μ > x-
Paso 2: Nivel de Significancia
Alfa: 0.025
Grados de Libertad 18-1= 17
Paso 3: Zona de Aceptación/Rechazo
< α
α = 0.025
Paso 4:
t8_70<- (87.61 - 77.38)/(19.48/sqrt(18))
t8_70
## [1] 2.22804

Tema 5. Anova

Ejercicio 1
resistencia <- read.csv("/Users/kikepablos/Documents/Development/R/Semestre 4/Prueba de Hipotesis/Workshop 2/ANOVA Mezclas.csv")
resistencia$Mezcla <- as.factor(resistencia$Mezcla)
qf(.95,df1 = 3, df2 = 20)
## [1] 3.098391
anova1 <- aov(Valor ~ Mezcla, data = resistencia)
summary(anova1)
##             Df Sum Sq Mean Sq F value   Pr(>F)    
## Mezcla       3 127375   42458   25.09 5.53e-07 ***
## Residuals   20  33839    1692                     
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Ejercicio 2
manchado <- read.csv("/Users/kikepablos/Documents/Development/R/Semestre 4/Prueba de Hipotesis/Workshop 2/ANOVA Grado.csv")
manchado$Manchado <- as.factor(manchado$Manchado)
qf(.99, df1=2, df2=12)
## [1] 6.926608
anova2 <- aov(Valor ~  Manchado, data = manchado)
summary(anova2)
##             Df Sum Sq Mean Sq F value Pr(>F)
## Manchado     2 0.0609 0.03043   0.987  0.401
## Residuals   12 0.3701 0.03084

Tema 6. Regresión Lineal Simple

Ejercicio 1
x <-c(0.2,0.5,1,2,3)
y <-c(8,10,18,35,60)
regresion <- lm(y~x)
summary(regresion)
## 
## Call:
## lm(formula = y ~ x)
## 
## Residuals:
##       1       2       3       4       5 
##  3.0591 -0.5354 -1.8596 -3.5079  2.8438 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)   
## (Intercept)    1.211      2.451   0.494  0.65510   
## x             18.648      1.450  12.863  0.00101 **
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 3.341 on 3 degrees of freedom
## Multiple R-squared:  0.9822, Adjusted R-squared:  0.9763 
## F-statistic: 165.5 on 1 and 3 DF,  p-value: 0.001014
plot(regresion)

plot(x, y, pch=16, cex=1.3, col= "blue", main = "Ejercicio 1")
abline(lm(y~x))

plot(regresion)

Ejercicio 2
a <-c(-6,-3,0,3,6,9,12,15,20,25)
b <-c(2,2.8,3.9,4.2,5.8,6.2,7.5,8.5,9.3,10.9)
regresion2 <-lm(b~a)
summary(regresion2)
## 
## Call:
## lm(formula = b ~ a)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -0.42927 -0.15767 -0.05172  0.22869  0.38665 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept) 3.758246   0.116555   32.24 9.32e-10 ***
## a           0.290340   0.009317   31.16 1.22e-09 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.2809 on 8 degrees of freedom
## Multiple R-squared:  0.9918, Adjusted R-squared:  0.9908 
## F-statistic: 971.1 on 1 and 8 DF,  p-value: 1.223e-09
plot(regresion2)

plot(a, b, pch=16, cex=1.3, col= "blue", main = "Ejercicio 2")
abline(lm(b~a))

plot(regresion2)

Ejercicios del Mundo Real

11-26

Un estudio compara el número de horas de alivio que proporcionan cinco marcas de antiácidos administrados a 25 personas diferentes, cada una con acidez estomacal considerada fuerte. Los resultados son los siguientes:
A B C D E
4.4 5.8 4.8 2.9 4.6
4.6 5.2 5.9 2.7 4.3
4.5 4.9 4.9 2.9 3.8
4.1 4.7 4.6 3.9 5.2
3.8 4.6 4.3 4.3 4.4
a) Calcule el número medio de horas de alivio para cada marca y determine la gran media.
#a)
antiacidos <-read.csv("/Users/kikepablos/Documents/Development/R/Semestre 4/Prueba de Hipotesis/Workshop 2/antiacidos.csv")
antiacidos$marca <- as.factor(antiacidos$marca)
qf(.95,df1=4,df2=20)
## [1] 2.866081
anova3 <-aov(horas ~ marca, data=antiacidos)
summary(anova3)
##             Df Sum Sq Mean Sq F value   Pr(>F)    
## marca        4  9.006  2.2514   7.653 0.000655 ***
## Residuals   20  5.884  0.2942                     
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
#F = 7.65, Fu = 2.87, de forma que rechazamos H0.
#a) Las marcas A-E tienen medias 4.28, 5.04, 4.90, 3.34 y 4.46. La gran media es 4.404.

11-26

En la ciudad de Bigville, una cadena de comida rápida está adquiriendo una mala reputación debido a que tardan mucho en servir a los clientes. Como la cadena tiene cuatro restaurantes en esa ciudad, quiere saber si los cuatro restaurantes tienen el mismo tiempo promedio de servicio. Uno de los dueños de la cadena ha decidido visitar cada local y registrar el tiempo de servicio para 5 clientes escogidos al azar. En sus cuatro visitas al medio día registró los siguientes tiempos de servicio en minutos:

Tipo de Promoción Ventas Tienda 1 Ventas Tienda 2 Ventas Tienda 3 Ventas Tienda 4 Ventas Tienda 5
Muestra gratis 78 87 81 89 85
Producto Extra 94 91 87 90 88
Descuento 73 78 69 83 76
Reembolso 79 83 78 69 81

a) Utilice un nivel de significancia de 0.05, ¿todos los restaurantes tienen el mismo tiempo medio de servicio?

restaurante <-read.csv("/Users/kikepablos/Documents/Development/R/Semestre 4/Prueba de Hipotesis/Workshop 2/restaurante.csv")
restaurante$restaurante <- as.factor(restaurante$restaurante)
qf(.95,df1=3,df2=16)
## [1] 3.238872
anova4 <-aov(tiempo ~ restaurante, data=restaurante)
summary(anova4)
##             Df Sum Sq Mean Sq F value Pr(>F)
## restaurante  3  2.538  0.8458   0.509  0.682
## Residuals   16 26.600  1.6625
#a) F 0.51, Fu 3.24, no rechazamos H0. Los tiempos medios de servicio no son significativamente diferentes.

#b) Debido a que ningún restaurante es peor que los otros, cualquier recomendación tendría que hacerse a todos los administradores

12-64

Un arrendador está interesado en ver si las rentas de sus departamentos son las comunes. Para esto tomó una muestra aleatoria de 11 rentas y tamaños de departamentos en complejos de departamentos similares. Los datos son los siguientes:

Renta (dólares) No.Recámaras
230 2
190 1
450 3
310 2
218 2
185 2
340 2
245 1
125 1
350 2
280 2

a) Desarrolle la ecuación de estimación que mejor describa estos datos.

renta <- c(230,190,450,310,218,185,340,245,125,350,280)
recamaras <- c(2,1,3,2,2,2,2,1,1,2,2)
regresion3 <- lm (renta ~ recamaras) 
summary(regresion3)
## 
## Call:
## lm(formula = renta ~ recamaras)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -101.80  -51.35   19.10   50.25   74.10 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)   
## (Intercept)    55.00      63.19   0.870  0.40667   
## recamaras     115.90      33.13   3.498  0.00675 **
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 63.19 on 9 degrees of freedom
## Multiple R-squared:  0.5762, Adjusted R-squared:  0.5291 
## F-statistic: 12.23 on 1 and 9 DF,  p-value: 0.006746
#RENTA = 55.00 + 115.90*Recamaras

#b)
#Coeficiente de determinación R cuadrada = 0.5762

#c)
recamaras1 <- 2
renta1 <- 55+115.90*recamaras1
renta1
## [1] 286.8
#286.8
LS0tCnRpdGxlOiAiV29ya3Nob3AgMiIKYXV0aG9yOiAiRW5yaXF1ZSBQYWJsb3MgQTAwODM1MDM3IgpkYXRlOiAiYHIgU3lzLkRhdGUoKWAiCm91dHB1dDogCiAgaHRtbF9kb2N1bWVudDoKICAgIGNvZGVfZm9sZGluZzogaGlkZQogICAgdG9jOiBUUlVFCiAgICB0b2NfZmxvYXQ6IFRSVUUKICAgIGNvZGVfZG93bmxvYWQ6IFRSVUUKICAgIHRoZW1lOiB1bml0ZWQKICAgIGhpZ2hsaWdodDogdGFuZ28KICAgIAotLS0KCiMgPHNwYW4gc3R5bGU9ImNvbG9yOiBncmVlbjsiPlRlbWEgNC4gVCBkZSBTdHVkZW50PC9zcGFuPgohW10oL1VzZXJzL2tpa2VwYWJsb3MvRG9jdW1lbnRzL0RldmVsb3BtZW50L1IvU2VtZXN0cmUgNC9QcnVlYmEgZGUgSGlwb3Rlc2lzL1dvcmtzaG9wIDIvcmVudC1hLWNhci12YWNhdGlvbi1oZXJvLTEtMTAyNHg1NzYuZ2lmKQoKCiMjIyMjIERyaXZlLWEtTGVtb24sIHJlbnRhIGF1dG9tw7N2aWxlcyBlbiBidWVuYXMgY29uZGljaW9uZXMgbWVjw6FuaWNhcywgcGVybyBtw6FzIGFudGlndW9zIHF1ZSBsb3MgcXVlIG9mcmUCY2VuIGxhcyBncmFuZGVzIGNhZGVuYXMgbmFjaW9uYWxlcyBkZSByZW50YSBkZSBjb2NoZXMuIENvbW8gcmVzdWx0YWRvLCBhbnVuY2lhIHF1ZSBzdXMgdGFyaWZhcyBzb24gY29uAnNpZGVyYWJsZW1lbnRlIG3DoXMgYmFqYXMgcXVlIGxhcyBkZSBzdXMgY29tcGV0aWRvcmVzIGdyYW5kZXMuIFVuYSBlbmN1ZXN0YSBkZSBsYSBpbmR1c3RyaWEgZXN0YWJsZWNpw7MgcXVlIGVsIGNhcmdvIHRvdGFsIHByb21lZGlvIHBvciByZW50YSBlbiB1bmEgZGUgbGFzIGNvbXBhw7HDrWFzIG3DoXMgaW1wb3J0YW50ZXMgZXMgJDc3LjM4LiBVbmEgbXVlc3RyYSBhbGVhdG9yaWEgZGUgMTggdHJhbnNhY2Npb25lcyByZWFsaXphZGFzIHBvciBEcml2ZS1hLUxlbW9uIG1vc3Ryw7MgdW4gY2FyZ28gdG90YWwgcHJvbWVkaW8gZGUgJDg3LjYxLCBjb24gdW5hIGRlc3ZpYWNpw7NuIGVzdMOhbmRhciBtdWVzdHJhbCBkZSAkMTkuNDguIFZlcmlmaXF1ZSBxdWUgcGFyYSDFkyA9IDAuMDI1LCBlbCBjYXJnbyB0b3RhbCBwcm9tZWRpbyBkZSBEcml2ZS1hLUxlbW9uIGVzIHNpZ25pZmljYXRpdmFtZW50ZSBtw6FzIGFsdG8gcXVlIGVsIGRlIGxhcyBjb21wYcOxw61hcyBncmFuZGVzLiDCv0luZGljYSBlc3RlIHJlc3VsdGFkbyBxdWUgbGFzIHRhcmlmYXMgZGUgRHJpdmUtYS1MZW1vbiwgZW4gZWZlY3RvLCBubyBzb24gbcOhcyBiYWphcyBxdWUgbGFzIGRlIGxhcyBjYWRlbmFzIG5hY2lvbmFsZXMgaW1wb3J0YW4CdGVzPyBFeHBsaXF1ZSBzdSByZXNwdWVzdGEuCgojIyMjICoqUmVzcHVlc3RhOioqCiMjIyMjIFBhc28gMTogUGxhbnRlYXIgSGlwb3TDqXNpcwojIyMjIyBIMDogzrwgPSB4LQojIyMjIyBIMTogzrwgPiB4LQoKIyMjIyMgUGFzbyAyOiBOaXZlbCBkZSBTaWduaWZpY2FuY2lhCiMjIyMjIEFsZmE6IDAuMDI1CiMjIyMjIEdyYWRvcyBkZSBMaWJlcnRhZCAxOC0xPSAxNwoKIyMjIyMgUGFzbyAzOiBab25hIGRlIEFjZXB0YWNpw7NuL1JlY2hhem8KIyMjIyMgPCDOsQojIyMjIyDOsSA9IDAuMDI1CgojIyMjIyBQYXNvIDQ6CmBgYHtyfQp0OF83MDwtICg4Ny42MSAtIDc3LjM4KS8oMTkuNDgvc3FydCgxOCkpCnQ4XzcwCmBgYAoKCiMgPHNwYW4gc3R5bGU9ImNvbG9yOiByZWQ7Ij5UZW1hIDUuIEFub3ZhPC9zcGFuPgohW10oL1VzZXJzL2tpa2VwYWJsb3MvRG9jdW1lbnRzL0RldmVsb3BtZW50L1IvU2VtZXN0cmUgNC9QcnVlYmEgZGUgSGlwb3Rlc2lzL1dvcmtzaG9wIDIvUmVncmVzaW9uIGxpbmVhbC5naWYpCgoKCiMjIyMjIEVqZXJjaWNpbyAxCgpgYGB7cn0KcmVzaXN0ZW5jaWEgPC0gcmVhZC5jc3YoIi9Vc2Vycy9raWtlcGFibG9zL0RvY3VtZW50cy9EZXZlbG9wbWVudC9SL1NlbWVzdHJlIDQvUHJ1ZWJhIGRlIEhpcG90ZXNpcy9Xb3Jrc2hvcCAyL0FOT1ZBIE1lemNsYXMuY3N2IikKcmVzaXN0ZW5jaWEkTWV6Y2xhIDwtIGFzLmZhY3RvcihyZXNpc3RlbmNpYSRNZXpjbGEpCnFmKC45NSxkZjEgPSAzLCBkZjIgPSAyMCkKCmFub3ZhMSA8LSBhb3YoVmFsb3IgfiBNZXpjbGEsIGRhdGEgPSByZXNpc3RlbmNpYSkKc3VtbWFyeShhbm92YTEpCmBgYAoKIyMjIyMgRWplcmNpY2lvIDIKYGBge3J9Cm1hbmNoYWRvIDwtIHJlYWQuY3N2KCIvVXNlcnMva2lrZXBhYmxvcy9Eb2N1bWVudHMvRGV2ZWxvcG1lbnQvUi9TZW1lc3RyZSA0L1BydWViYSBkZSBIaXBvdGVzaXMvV29ya3Nob3AgMi9BTk9WQSBHcmFkby5jc3YiKQptYW5jaGFkbyRNYW5jaGFkbyA8LSBhcy5mYWN0b3IobWFuY2hhZG8kTWFuY2hhZG8pCnFmKC45OSwgZGYxPTIsIGRmMj0xMikKCmFub3ZhMiA8LSBhb3YoVmFsb3IgfiAgTWFuY2hhZG8sIGRhdGEgPSBtYW5jaGFkbykKc3VtbWFyeShhbm92YTIpCmBgYAoKIyA8c3BhbiBzdHlsZT0iY29sb3I6IGJsdWU7Ij5UZW1hIDYuIFJlZ3Jlc2nDs24gTGluZWFsIFNpbXBsZTwvc3Bhbj4KIVtdKC9Vc2Vycy9raWtlcGFibG9zL0RvY3VtZW50cy9EZXZlbG9wbWVudC9SL1NlbWVzdHJlIDQvUHJ1ZWJhIGRlIEhpcG90ZXNpcy9Xb3Jrc2hvcCAyL2xpbmVjaGFydC5naWYpCgojIyMjIyBFamVyY2ljaW8gMQpgYGB7cn0KeCA8LWMoMC4yLDAuNSwxLDIsMykKeSA8LWMoOCwxMCwxOCwzNSw2MCkKcmVncmVzaW9uIDwtIGxtKHl+eCkKc3VtbWFyeShyZWdyZXNpb24pCnBsb3QocmVncmVzaW9uKQpwbG90KHgsIHksIHBjaD0xNiwgY2V4PTEuMywgY29sPSAiYmx1ZSIsIG1haW4gPSAiRWplcmNpY2lvIDEiKQphYmxpbmUobG0oeX54KSkKcGxvdChyZWdyZXNpb24pCmBgYAoKIyMjIyMgRWplcmNpY2lvIDIKCmBgYHtyfQphIDwtYygtNiwtMywwLDMsNiw5LDEyLDE1LDIwLDI1KQpiIDwtYygyLDIuOCwzLjksNC4yLDUuOCw2LjIsNy41LDguNSw5LjMsMTAuOSkKcmVncmVzaW9uMiA8LWxtKGJ+YSkKc3VtbWFyeShyZWdyZXNpb24yKQpwbG90KHJlZ3Jlc2lvbjIpCnBsb3QoYSwgYiwgcGNoPTE2LCBjZXg9MS4zLCBjb2w9ICJibHVlIiwgbWFpbiA9ICJFamVyY2ljaW8gMiIpCmFibGluZShsbShifmEpKQpwbG90KHJlZ3Jlc2lvbjIpCmBgYAoKCiMgPHNwYW4gc3R5bGU9ImNvbG9yOiBwaW5rOyI+RWplcmNpY2lvcyBkZWwgTXVuZG8gUmVhbDwvc3Bhbj4KIVtdKC9Vc2Vycy9raWtlcGFibG9zL0RvY3VtZW50cy9EZXZlbG9wbWVudC9SL1NlbWVzdHJlIDQvUHJ1ZWJhIGRlIEhpcG90ZXNpcy9Xb3Jrc2hvcCAyLzhlMTliN2E2MjkxODU2ODA4MGZjNGYwOWVmOGQzMTg0LmdpZikKCiMjIyAqKjExLTI2KioKCiMjIyMjIFVuIGVzdHVkaW8gY29tcGFyYSBlbCBuw7ptZXJvIGRlIGhvcmFzIGRlIGFsaXZpbyBxdWUgcHJvcG9yY2lvbmFuIGNpbmNvIG1hcmNhcyBkZSBhbnRpw6FjaWRvcyBhZG1pbmlzdHJhZG9zIGEgMjUgcGVyc29uYXMgZGlmZXJlbnRlcywgY2FkYSB1bmEgY29uIGFjaWRleiBlc3RvbWFjYWwgY29uc2lkZXJhZGEgZnVlcnRlLiBMb3MgcmVzdWx0YWRvcyBzb24gbG9zIHNpZ3VpZW50ZXM6CgpBIHwgQiB8IEMgfCBEIHwgRQo6LS0tLS0tLS0tLS0tLTogfCA6LS0tLS0tLS0tLS0tLTogfCA6LS0tLS0tLS0tLS0tLTogfCA6LS0tLS0tLS0tLS0tLTogfCA6LS0tLS0tLS0tLS0tLToKNC40IHwgNS44IHwgNC44IHwgMi45IHwgNC42CjQuNiB8IDUuMiB8IDUuOSB8IDIuNyB8IDQuMwo0LjUgfCA0LjkgfCA0LjkgfCAyLjkgfCAzLjgKNC4xIHwgNC43IHwgNC42IHwgMy45IHwgNS4yCjMuOCB8IDQuNiB8IDQuMyB8IDQuMyB8IDQuNAoKIyMjIyMgYSkgQ2FsY3VsZSBlbCBuw7ptZXJvIG1lZGlvIGRlIGhvcmFzIGRlIGFsaXZpbyBwYXJhIGNhZGEgbWFyY2EgeSBkZXRlcm1pbmUgbGEgZ3JhbiBtZWRpYS4KCmBgYHtyfQojYSkKYW50aWFjaWRvcyA8LXJlYWQuY3N2KCIvVXNlcnMva2lrZXBhYmxvcy9Eb2N1bWVudHMvRGV2ZWxvcG1lbnQvUi9TZW1lc3RyZSA0L1BydWViYSBkZSBIaXBvdGVzaXMvV29ya3Nob3AgMi9hbnRpYWNpZG9zLmNzdiIpCmFudGlhY2lkb3MkbWFyY2EgPC0gYXMuZmFjdG9yKGFudGlhY2lkb3MkbWFyY2EpCnFmKC45NSxkZjE9NCxkZjI9MjApCgphbm92YTMgPC1hb3YoaG9yYXMgfiBtYXJjYSwgZGF0YT1hbnRpYWNpZG9zKQpzdW1tYXJ5KGFub3ZhMykKCiNGID0gNy42NSwgRnUgPSAyLjg3LCBkZSBmb3JtYSBxdWUgcmVjaGF6YW1vcyBIMC4KI2EpIExhcyBtYXJjYXMgQS1FIHRpZW5lbiBtZWRpYXMgNC4yOCwgNS4wNCwgNC45MCwgMy4zNCB5IDQuNDYuIExhIGdyYW4gbWVkaWEgZXMgNC40MDQuCmBgYAoKCiMjIyAqKjExLTI2KioKCiMjIyMgRW4gbGEgY2l1ZGFkIGRlIEJpZ3ZpbGxlLCB1bmEgY2FkZW5hIGRlIGNvbWlkYSByw6FwaWRhIGVzdMOhIGFkcXVpcmllbmRvIHVuYSBtYWxhIHJlcHV0YWNpw7NuIGRlYmlkbyBhIHF1ZSB0YXJkYW4gbXVjaG8gZW4gc2VydmlyIGEgbG9zIGNsaWVudGVzLiBDb21vIGxhIGNhZGVuYSB0aWVuZSBjdWF0cm8gcmVzdGF1cmFudGVzIGVuIGVzYSBjaXVkYWQsIHF1aWVyZSBzYWJlciBzaSBsb3MgY3VhdHJvIHJlc3RhdXJhbnRlcyB0aWVuZW4gZWwgbWlzbW8gdGllbXBvIHByb21lZGlvIGRlIHNlcnZpY2lvLiBVbm8gZGUgbG9zIGR1ZcOxb3MgZGUgbGEgY2FkZW5hIGhhIGRlY2lkaWRvIHZpc2l0YXIgY2FkYSBsb2NhbCB5IHJlZ2lzdHJhciBlbCB0aWVtcG8gZGUgc2VydmljaW8gcGFyYSA1IGNsaWVudGVzIGVzY29naWRvcyBhbCBhemFyLiBFbiBzdXMgY3VhdHJvIHZpc2l0YXMgYWwgbWVkaW8gZMOtYSByZWdpc3Ryw7MgbG9zIHNpZ3VpZW50ZXMgdGllbXBvcyBkZSBzZXJ2aWNpbyBlbiBtaW51dG9zOgoKVGlwbyBkZSBQcm9tb2Npw7NuIHwgVmVudGFzIFRpZW5kYSAxIHwgVmVudGFzIFRpZW5kYSAyIHwgVmVudGFzIFRpZW5kYSAzIHwgVmVudGFzIFRpZW5kYSA0IHwgVmVudGFzIFRpZW5kYSA1CiAtLS0gfCAtLS0gfCAtLS0gfCAtLS0gfCAtLS0gfCAtLS0gfApNdWVzdHJhIGdyYXRpcyB8IDc4IHwgODcgfCA4MSB8IDg5IHwgODUKUHJvZHVjdG8gRXh0cmEgfCA5NCB8IDkxIHwgODcgfCA5MCB8IDg4CkRlc2N1ZW50byB8IDczIHwgNzggfCA2OSB8IDgzIHwgNzYKUmVlbWJvbHNvIHwgNzkgfCA4MyB8IDc4IHwgNjkgfCA4MQoKIyMjIyBhKSBVdGlsaWNlIHVuIG5pdmVsIGRlIHNpZ25pZmljYW5jaWEgZGUgMC4wNSwgwr90b2RvcyBsb3MgcmVzdGF1cmFudGVzIHRpZW5lbiBlbCBtaXNtbyB0aWVtcG8gbWVkaW8gZGUgc2VydmljaW8/CgpgYGB7cn0KcmVzdGF1cmFudGUgPC1yZWFkLmNzdigiL1VzZXJzL2tpa2VwYWJsb3MvRG9jdW1lbnRzL0RldmVsb3BtZW50L1IvU2VtZXN0cmUgNC9QcnVlYmEgZGUgSGlwb3Rlc2lzL1dvcmtzaG9wIDIvcmVzdGF1cmFudGUuY3N2IikKcmVzdGF1cmFudGUkcmVzdGF1cmFudGUgPC0gYXMuZmFjdG9yKHJlc3RhdXJhbnRlJHJlc3RhdXJhbnRlKQpxZiguOTUsZGYxPTMsZGYyPTE2KQoKYW5vdmE0IDwtYW92KHRpZW1wbyB+IHJlc3RhdXJhbnRlLCBkYXRhPXJlc3RhdXJhbnRlKQpzdW1tYXJ5KGFub3ZhNCkKCiNhKSBGIDAuNTEsIEZ1IDMuMjQsIG5vIHJlY2hhemFtb3MgSDAuIExvcyB0aWVtcG9zIG1lZGlvcyBkZSBzZXJ2aWNpbyBubyBzb24gc2lnbmlmaWNhdGl2YW1lbnRlIGRpZmVyZW50ZXMuCgojYikgRGViaWRvIGEgcXVlIG5pbmfDum4gcmVzdGF1cmFudGUgZXMgcGVvciBxdWUgbG9zIG90cm9zLCBjdWFscXVpZXIgcmVjb21lbmRhY2nDs24gdGVuZHLDrWEgcXVlIGhhY2Vyc2UgYSB0b2RvcyBsb3MgYWRtaW5pc3RyYWRvcmVzCmBgYAoKCiMjIyAqKjEyLTY0KioKCiMjIyMgVW4gYXJyZW5kYWRvciBlc3TDoSBpbnRlcmVzYWRvIGVuIHZlciBzaSBsYXMgcmVudGFzIGRlIHN1cyBkZXBhcnRhbWVudG9zIHNvbiBsYXMgY29tdW5lcy4gUGFyYSBlc3RvIHRvbcOzIHVuYSBtdWVzdHJhIGFsZWF0b3JpYSBkZSAxMSByZW50YXMgeSB0YW1hw7FvcyBkZSBkZXBhcnRhbWVudG9zIGVuIGNvbXBsZWpvcyBkZSBkZXBhcnRhbWVudG9zIHNpbWlsYXJlcy4gTG9zIGRhdG9zIHNvbiBsb3Mgc2lndWllbnRlczoKClJlbnRhIChkw7NsYXJlcykgfCBOby5SZWPDoW1hcmFzCjotLS0tLS0tLS0tLS0tLTp8Oi0tLS0tLS0tLS0tLS0tOgoyMzAgfCAyCjE5MCB8IDEKNDUwIHwgMyAKMzEwIHwgMgoyMTggfCAyCjE4NSB8IDIKMzQwIHwgMgoyNDUgfCAxCjEyNSB8IDEKMzUwIHwgMgoyODAgfCAyCgojIyMjIGEpIERlc2Fycm9sbGUgbGEgZWN1YWNpw7NuIGRlIGVzdGltYWNpw7NuIHF1ZSBtZWpvciBkZXNjcmliYSBlc3RvcyBkYXRvcy4KYGBge3J9CnJlbnRhIDwtIGMoMjMwLDE5MCw0NTAsMzEwLDIxOCwxODUsMzQwLDI0NSwxMjUsMzUwLDI4MCkKcmVjYW1hcmFzIDwtIGMoMiwxLDMsMiwyLDIsMiwxLDEsMiwyKQpyZWdyZXNpb24zIDwtIGxtIChyZW50YSB+IHJlY2FtYXJhcykgCnN1bW1hcnkocmVncmVzaW9uMykKCiNSRU5UQSA9IDU1LjAwICsgMTE1LjkwKlJlY2FtYXJhcwoKI2IpCiNDb2VmaWNpZW50ZSBkZSBkZXRlcm1pbmFjacOzbiBSIGN1YWRyYWRhID0gMC41NzYyCgojYykKcmVjYW1hcmFzMSA8LSAyCnJlbnRhMSA8LSA1NSsxMTUuOTAqcmVjYW1hcmFzMQpyZW50YTEKCiMyODYuOApgYGAKCg==