Tema 4. T de Student

pagos<-c(107,92,97,95,105,101,91,99,95,104)
t.test(pagos,y=NULL,alternative="two.sided",mu=100,paired=FALSE,var.equal,conf.level=0.90)
##
## One Sample t-test
##
## data: pagos
## t = -0.79888, df = 9, p-value = 0.4449
## alternative hypothesis: true mean is not equal to 100
## 90 percent confidence interval:
## 95.38755 101.81245
## sample estimates:
## mean of x
## 98.6
# Si es de una cola, alternative puede ser: "less" o "greater".
# Si p value es mayor a 0.10 (por significancia del 10%) no se rechaza H0.
# Conclusión: No se rechaza Ho.
# Intervalo de Confianza: Entre 95 y 101 dólares.
# Ejercicio 8-70
# Drive-a-Lemon, renta automóviles en buenas condiciones mecánicas, pero más antiguos que aquellos
# que rentan las grandes cadenas nacionales de renta de coches. Como resultado, anuncia que sus tarifas son
# considerablemente más bajas que las de sus grandes competidores. Una encuesta en la industria estableció
# que el cargo total promedio por renta en una de las mayores compañías es de $77.38 dólares. 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 de la muestra de $19.48. Verifique que, con un nivel de significancia de 0.025, el cargo total promedio de
# Drive-a-Lemon es más alto que el de las grandes compañías. ¿Indica este resultado que las tarifas de Drive-a-Lemon,
# no son más bajas que las de las grandes cadenas nacionales? Justifique su respuesta.
# Respuesta:
# Paso 1. Plantear hipótesis
# H0: μ = x bar
# H1: μ > x bar
# Paso 2. Nivel de Significancia y Grados de Libertad
# α = 0.025
# GL = 17
# Paso 3. Zona de Aceptación/Rechazo
# t de tablas = 2.110
# Paso 4. Función
t<-(87.61-77.38)/(19.48/sqrt(18))
t
## [1] 2.22804
# Paso 5. Conclusión
# Se rechaza la Hipótesis Nula.
Tema 5. Anova/span>

# install.packages("Stats")
library(stats)
# Ejercicio 1
# file.choose()
resistencia<-read.csv("C:\\Users\\Catalina\\Documents\\ANOVA Mezclas.csv")
resistencia$Mezcla<-as.factor(resistencia$Mezcla)
qf(.9,df1=3,df=20)
## [1] 2.380087
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
# file.choose()
manchado<-read.csv("C:\\Users\\Catalina\\Downloads\\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.8437
##
## 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(x, y, pch=16, cex=1.3, col="blue", main="Ejercicio1")
abline(lm(y~x))





# 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.2,9.3,10.9)
regresion2<-lm(y~x)
summary(regresion2)
##
## Call:
## lm(formula = y ~ x)
##
## Residuals:
## 1 2 3 4 5
## 3.0591 -0.5354 -1.8596 -3.5079 2.8437
##
## 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(a, b, pch=16, cex=1.3, col="blue", main="Ejercicio2")
abline(lm(b~a))





Tema 7. Ejercicios del Mundo
Real
[]C:\Users\Catalina\Documents\Estadistica-inferencial-min-e1533841676384-800x400.jpg
11-26
En un estudio se compararon los efectos de cuatro promociones
mensuales sobre las ventas. A continuación, presentamos las ventas
unitarias de 5 tiendas que utilizaron las 4 promociones en meses
diferentes:
| 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 |
|
- Calcule el cociente F. Para un nivel de significancia de 0.05, ¿las
marcas producen cantidades significativamente diferentes de alivio a las
personas con acidez estomacal fuerte?
# a)
antiacidos<-read.csv("C:\\Users\\Catalina\\Documents\\antiacidos.csv")
antiacidos$marca<-as.factor(antiacidos$marca)
qf(.95,df1=4,df=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.
11-38
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:
| 3 |
3 |
2 |
3 |
| 4 |
3.5 |
3.5 |
4 |
| 5.5 |
4.5 |
5 |
5.5 |
| 3.5 |
4 |
6.5 |
2.5 |
| 4 |
5.5 |
6 |
3 |
- Utilice un nivel de significancia de 0.05, ¿todos los restaurantes
tienen el mismo tiempo medio de servicio?
- Según sus resultados, ¿deberá el dueño hacer algunas recomendaciones
a cualquiera de los administradores de los restaurantes?
# a)
restaurante<-read.csv("C:\\Users\\Catalina\\Documents\\restaurante.csv")
restaurante$restaurant<-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 1 0.123 0.1225 0.076 0.786
## Residuals 18 29.015 1.6119
# No rechazamos H0.
# Los tiempos medios de servicio no son significativamente diferentes.
# b)
# Debido a que ningún restaurant es peor que los otros, cualquier recomendación tendría que hacerese 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:
| 230 |
2 |
| 190 |
1 |
| 450 |
3 |
| 310 |
2 |
| 218 |
2 |
| 185 |
2 |
| 340 |
2 |
| 245 |
1 |
| 125 |
1 |
| 350 |
2 |
| 280 |
2 |
- Desarrolle la ecuación de estimación que mejor describa estos
datos.
- Calcule el coeficiente de determinación.
- Pronostique la renta para un departamento de dos recámaras.
# a)
renta<-c(230,190,450,310,218,185,340,245,125,350,280)
recamaras1<-c(2,1,3,2,2,2,2,1,1,2,2)
regresion3<-lm(renta~recamaras1)
summary(regresion3)
##
## Call:
## lm(formula = renta ~ recamaras1)
##
## 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
## recamaras1 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)
# r2 = 0.5762
# c)
renta1<-55+115.90*recamaras1
renta1
## [1] 286.8 170.9 402.7 286.8 286.8 286.8 286.8 170.9 170.9 286.8 286.8
LS0tDQp0aXRsZTogIldvcmtzaG9wIDIiDQphdXRob3I6ICJDYXRhbGluYSBNaWphcmVzIC0gQTAxMjM0NDA1Ig0KZGF0ZTogIjIwMjMtMDUtMjUiDQpvdXRwdXQ6DQogIGh0bWxfZG9jdW1lbnQ6DQogICAgY29kZV9mb2xkaW5nOiBoaWRlDQogICAgdG9jOiBUUlVFDQogICAgdG9jX2Zsb2F0OiBUUlVFDQogICAgY29kZV9kb3dubG9hZDogVFJVRQ0KICAgIHRoZW1lOiB1bml0ZWQNCiAgICBoaWdobGlnaHQ6IHRhbmdvDQotLS0NCg0KIyA8c3BhbiBzdHlsZT0iY29sb3I6IGdyZWVuIj5UZW1hIDQuIFQgZGUgU3R1ZGVudDwvc3Bhbj4NCg0KIVtdKEM6XFxVc2Vyc1xcQ2F0YWxpbmFcXERvY3VtZW50c1xcY2Fycy5qcGVnKQ0KDQpgYGB7cn0NCnBhZ29zPC1jKDEwNyw5Miw5Nyw5NSwxMDUsMTAxLDkxLDk5LDk1LDEwNCkNCg0KdC50ZXN0KHBhZ29zLHk9TlVMTCxhbHRlcm5hdGl2ZT0idHdvLnNpZGVkIixtdT0xMDAscGFpcmVkPUZBTFNFLHZhci5lcXVhbCxjb25mLmxldmVsPTAuOTApDQoNCiMgU2kgZXMgZGUgdW5hIGNvbGEsIGFsdGVybmF0aXZlIHB1ZWRlIHNlcjogImxlc3MiIG8gImdyZWF0ZXIiLg0KDQojIFNpIHAgdmFsdWUgZXMgbWF5b3IgYSAwLjEwIChwb3Igc2lnbmlmaWNhbmNpYSBkZWwgMTAlKSBubyBzZSByZWNoYXphIEgwLg0KDQojIENvbmNsdXNpw7NuOiBObyBzZSByZWNoYXphIEhvLg0KIyBJbnRlcnZhbG8gZGUgQ29uZmlhbnphOiBFbnRyZSA5NSB5IDEwMSBkw7NsYXJlcy4NCg0KIyBFamVyY2ljaW8gOC03MA0KIyBEcml2ZS1hLUxlbW9uLCByZW50YSBhdXRvbcOzdmlsZXMgZW4gYnVlbmFzIGNvbmRpY2lvbmVzIG1lY8OhbmljYXMsIHBlcm8gbcOhcyBhbnRpZ3VvcyBxdWUgYXF1ZWxsb3MgDQojIHF1ZSByZW50YW4gbGFzIGdyYW5kZXMgY2FkZW5hcyBuYWNpb25hbGVzIGRlIHJlbnRhIGRlIGNvY2hlcy4gQ29tbyByZXN1bHRhZG8sIGFudW5jaWEgcXVlIHN1cyB0YXJpZmFzIHNvbiANCiMgY29uc2lkZXJhYmxlbWVudGUgbcOhcyBiYWphcyBxdWUgbGFzIGRlIHN1cyBncmFuZGVzIGNvbXBldGlkb3Jlcy4gVW5hIGVuY3Vlc3RhIGVuIGxhIGluZHVzdHJpYSBlc3RhYmxlY2nDsyANCiMgcXVlIGVsIGNhcmdvIHRvdGFsIHByb21lZGlvIHBvciByZW50YSBlbiB1bmEgZGUgbGFzIG1heW9yZXMgY29tcGHDscOtYXMgZXMgZGUgJDc3LjM4IGTDs2xhcmVzLiBVbmEgbXVlc3RyYSBhbGVhdG9yaWEgDQojIGRlIDE4IHRyYW5zYWNjaW9uZXMgcmVhbGl6YWRhcyBwb3IgRHJpdmUtYS1MZW1vbiBtb3N0csOzIHVuIGNhcmdvIHRvdGFsIHByb21lZGlvIGRlICQ4Ny42MSwgY29uIHVuYSBkZXN2aWFjacOzbiANCiMgZXN0w6FuZGFyIGRlIGxhIG11ZXN0cmEgZGUgJDE5LjQ4LiBWZXJpZmlxdWUgcXVlLCBjb24gdW4gbml2ZWwgZGUgc2lnbmlmaWNhbmNpYSBkZSAwLjAyNSwgZWwgY2FyZ28gdG90YWwgcHJvbWVkaW8gZGUgDQojIERyaXZlLWEtTGVtb24gZXMgbcOhcyBhbHRvIHF1ZSBlbCBkZSBsYXMgZ3JhbmRlcyBjb21wYcOxw61hcy4gwr9JbmRpY2EgZXN0ZSByZXN1bHRhZG8gcXVlIGxhcyB0YXJpZmFzIGRlIERyaXZlLWEtTGVtb24sIA0KIyBubyBzb24gbcOhcyBiYWphcyBxdWUgbGFzIGRlIGxhcyBncmFuZGVzIGNhZGVuYXMgbmFjaW9uYWxlcz8gSnVzdGlmaXF1ZSBzdSByZXNwdWVzdGEuDQoNCiMgUmVzcHVlc3RhOg0KIyBQYXNvIDEuIFBsYW50ZWFyIGhpcMOzdGVzaXMNCiMgSDA6IM68ID0geCBiYXINCiMgSDE6IM68ID4geCBiYXINCg0KIyBQYXNvIDIuIE5pdmVsIGRlIFNpZ25pZmljYW5jaWEgeSBHcmFkb3MgZGUgTGliZXJ0YWQNCiMgzrEgPSAwLjAyNQ0KIyBHTCA9IDE3DQoNCiMgUGFzbyAzLiBab25hIGRlIEFjZXB0YWNpw7NuL1JlY2hhem8NCiMgdCBkZSB0YWJsYXMgPSAyLjExMA0KDQojIFBhc28gNC4gRnVuY2nDs24NCnQ8LSg4Ny42MS03Ny4zOCkvKDE5LjQ4L3NxcnQoMTgpKQ0KdA0KDQoNCiMgUGFzbyA1LiBDb25jbHVzacOzbg0KIyBTZSByZWNoYXphIGxhIEhpcMOzdGVzaXMgTnVsYS4gDQpgYGANCg0KDQojIDxzcGFuIHN0eWxlPSJjb2xvcjogcmVkIj5UZW1hIDUuIEFub3ZhL3NwYW4+DQohW10oQzpcXFVzZXJzXFxDYXRhbGluYVxcRG9jdW1lbnRzXFxib3hlcy5qcGcpDQpgYGB7cn0NCiMgaW5zdGFsbC5wYWNrYWdlcygiU3RhdHMiKQ0KbGlicmFyeShzdGF0cykNCg0KIyBFamVyY2ljaW8gMQ0KIyBmaWxlLmNob29zZSgpDQpyZXNpc3RlbmNpYTwtcmVhZC5jc3YoIkM6XFxVc2Vyc1xcQ2F0YWxpbmFcXERvY3VtZW50c1xcQU5PVkEgTWV6Y2xhcy5jc3YiKQ0KcmVzaXN0ZW5jaWEkTWV6Y2xhPC1hcy5mYWN0b3IocmVzaXN0ZW5jaWEkTWV6Y2xhKQ0KcWYoLjksZGYxPTMsZGY9MjApDQphbm92YTE8LWFvdihWYWxvcn5NZXpjbGEsZGF0YT1yZXNpc3RlbmNpYSkNCnN1bW1hcnkoYW5vdmExKQ0KDQojIEVqZXJjaWNpbyAyDQojIGZpbGUuY2hvb3NlKCkNCm1hbmNoYWRvPC1yZWFkLmNzdigiQzpcXFVzZXJzXFxDYXRhbGluYVxcRG93bmxvYWRzXFxBTk9WQSBHcmFkby5jc3YiKQ0KbWFuY2hhZG8kTWFuY2hhZG88LWFzLmZhY3RvcihtYW5jaGFkbyRNYW5jaGFkbykNCnFmKC45OSxkZjE9MixkZjI9MTIpDQphbm92YTI8LWFvdihWYWxvcn5NYW5jaGFkbyxkYXRhPW1hbmNoYWRvKQ0Kc3VtbWFyeShhbm92YTIpDQpgYGANCg0KDQojIDxzcGFuIHN0eWxlPSJjb2xvcjogYmx1ZSI+VGVtYSA2LiBSZWdyZXNpw7NuIExpbmVhbCBTaW1wbGU8L3NwYW4+DQoNCiFbXShDOlxcVXNlcnNcXENhdGFsaW5hXFxEb2N1bWVudHNcXGdpcGh5LmdpZikNCmBgYHtyfQ0KIyBFamVyY2ljaW8gMQ0KeDwtYygwLjIsMC41LDEsMiwzKQ0KeTwtYyg4LDEwLDE4LDM1LDYwKQ0KcmVncmVzaW9uPC1sbSh5fngpDQpzdW1tYXJ5KHJlZ3Jlc2lvbikNCnBsb3QoeCwgeSwgcGNoPTE2LCBjZXg9MS4zLCBjb2w9ImJsdWUiLCBtYWluPSJFamVyY2ljaW8xIikNCmFibGluZShsbSh5fngpKQ0KcGxvdChyZWdyZXNpb24pDQoNCiMgRWplcmNpY2lvIDINCmE8LWMoLTYsLTMsMCwzLDYsOSwxMiwxNSwyMCwyNSkNCmI8LWMoMiwyLjgsMy45LDQuMiw1LjgsNi4yLDcuNSw4LjIsOS4zLDEwLjkpDQpyZWdyZXNpb24yPC1sbSh5fngpDQpzdW1tYXJ5KHJlZ3Jlc2lvbjIpDQpwbG90KHJlZ3Jlc2lvbjIpDQoNCnBsb3QoYSwgYiwgcGNoPTE2LCBjZXg9MS4zLCBjb2w9ImJsdWUiLCBtYWluPSJFamVyY2ljaW8yIikNCmFibGluZShsbShifmEpKQ0KcGxvdChyZWdyZXNpb24pDQpgYGANCg0KDQoNCiMgPHNwYW4gc3R5bGU9ImNvbG9yOiB2aW9sZXQiPlRlbWEgNy4gRWplcmNpY2lvcyBkZWwgTXVuZG8gUmVhbDwvc3Bhbj4NCg0KIVtdQzpcXFVzZXJzXFxDYXRhbGluYVxcRG9jdW1lbnRzXFxFc3RhZGlzdGljYS1pbmZlcmVuY2lhbC1taW4tZTE1MzM4NDE2NzYzODQtODAweDQwMC5qcGcNCg0KIyMgKioxMS0yNioqDQpFbiB1biBlc3R1ZGlvIHNlIGNvbXBhcmFyb24gbG9zIGVmZWN0b3MgZGUgY3VhdHJvIHByb21vY2lvbmVzIG1lbnN1YWxlcyBzb2JyZSBsYXMgdmVudGFzLiBBIGNvbnRpbnVhY2nDs24sIHByZXNlbnRhbW9zIGxhcyB2ZW50YXMgdW5pdGFyaWFzIGRlIDUgdGllbmRhcyBxdWUgdXRpbGl6YXJvbiBsYXMgNCBwcm9tb2Npb25lcyBlbiBtZXNlcyBkaWZlcmVudGVzOg0KDQpBIHwgQiB8IEMgfCBEIHwgRQ0KOi0tLS0tLS0tLS0tLS06IHwgOi0tLS0tLS0tLS0tLS06IHwgOi0tLS0tLS0tLS0tLS06IHwgOi0tLS0tLS0tLS0tLS06IHwgOi0tLS0tLS0tLS0tLS06IHwgOi0tLS0tLS0tLS0tLS06IA0KNC40IHwgNS44IHwgNC44IHwgMi45IHwgNC42DQo0LjYgfCA1LjIgfCA1LjkgfCAyLjcgfCA0LjMNCjQuNSB8IDQuOSB8IDQuOSB8IDIuOSB8IDMuOA0KNC4xIHwgNC43IHwgNC42IHwgMy45IHwgNS4yDQozLjggfCA0LjYgfCA0LjMgfCA0LjMgfCA0LjQNCg0KYSkgQ2FsY3VsZSBlbCBjb2NpZW50ZSBGLiBQYXJhIHVuIG5pdmVsIGRlIHNpZ25pZmljYW5jaWEgZGUgMC4wNSwgwr9sYXMgbWFyY2FzIHByb2R1Y2VuIGNhbnRpZGFkZXMgc2lnbmlmaWNhdGl2YW1lbnRlIGRpZmVyZW50ZXMgZGUgYWxpdmlvIGEgbGFzIHBlcnNvbmFzIGNvbiBhY2lkZXogZXN0b21hY2FsIGZ1ZXJ0ZT8NCg0KYGBge3J9DQojIGEpDQphbnRpYWNpZG9zPC1yZWFkLmNzdigiQzpcXFVzZXJzXFxDYXRhbGluYVxcRG9jdW1lbnRzXFxhbnRpYWNpZG9zLmNzdiIpDQphbnRpYWNpZG9zJG1hcmNhPC1hcy5mYWN0b3IoYW50aWFjaWRvcyRtYXJjYSkNCnFmKC45NSxkZjE9NCxkZj0yMCkNCmFub3ZhMzwtYW92KGhvcmFzfm1hcmNhLCBkYXRhPWFudGlhY2lkb3MpDQpzdW1tYXJ5KGFub3ZhMykNCiMgRj03LjY1LCBGdT0yLjg3LCBkZSBmb3JtYSBxdWUgcmVjaGF6YW1vcyBIMC4NCmBgYA0KDQojIyAqKjExLTM4KioNCkVuIGxhIGNpdWRhZCBkZSBCaWd2aWxsZSwgdW5hIGNhZGVuYSBkZSBjb21pZGEgcsOhcGlkYSBlc3TDoSBhZHF1aXJpZW5kbyB1bmEgbWFsYSByZXB1dGFjacOzbiBkZWJpZG8gYSBxdWUNCnRhcmRhbiBtdWNobyBlbiBzZXJ2aXIgYSBsb3MgY2xpZW50ZXMuIENvbW8gbGEgY2FkZW5hIHRpZW5lIGN1YXRybyByZXN0YXVyYW50ZXMgZW4gZXNhIGNpdWRhZCwgcXVpZXJlIHNhYmVyIHNpIGxvcyBjdWF0cm8gcmVzdGF1cmFudGVzIHRpZW5lbiBlbCBtaXNtbyB0aWVtcG8gcHJvbWVkaW8gZGUgc2VydmljaW8uIFVubyBkZSBsb3MgZHVlw7FvcyBkZSBsYSBjYWRlbmEgaGEgZGVjaWRpZG8gdmlzaXRhciBjYWRhIGxvY2FsIHkgcmVnaXN0cmFyIGVsIHRpZW1wbyBkZSBzZXJ2aWNpbyBwYXJhIDUgY2xpZW50ZXMgZXNjb2dpZG9zIGFsIGF6YXIuIEVuIHN1cyBjdWF0cm8gdmlzaXRhcyBhbCBtZWRpbyBkw61hIHJlZ2lzdHLDsyBsb3Mgc2lndWllbnRlcyB0aWVtcG9zIGRlIHNlcnZpY2lvIGVuIG1pbnV0b3M6DQoNClJlc3RhdXJhbnRlIDEgfCBSZXN0YXVyYW50ZSAyIHwgUmVzdGF1cmFudGUgMyB8IFJlc3RhdXJhbnRlIDQgDQo6LS0tLS0tLS0tLS0tLTogfCA6LS0tLS0tLS0tLS0tLTogfCA6LS0tLS0tLS0tLS0tLTogfCA6LS0tLS0tLS0tLS0tLToNCjMgfCAzIHwgMiB8IDMNCjQgfCAzLjUgfCAzLjUgfCA0DQo1LjUgfCA0LjUgfCA1IHwgNS41IA0KMy41IHwgNCB8IDYuNSB8IDIuNQ0KNCB8IDUuNSB8IDYgfCAzDQoNCmEpIFV0aWxpY2UgdW4gbml2ZWwgZGUgc2lnbmlmaWNhbmNpYSBkZSAwLjA1LCDCv3RvZG9zIGxvcyByZXN0YXVyYW50ZXMgdGllbmVuIGVsIG1pc21vIHRpZW1wbyBtZWRpbyBkZSBzZXJ2aWNpbz8NCmIpIFNlZ8O6biBzdXMgcmVzdWx0YWRvcywgwr9kZWJlcsOhIGVsIGR1ZcOxbyBoYWNlciBhbGd1bmFzIHJlY29tZW5kYWNpb25lcyBhIGN1YWxxdWllcmEgZGUgbG9zIGFkbWluaXN0cmFkb3JlcyBkZSBsb3MgcmVzdGF1cmFudGVzPw0KYGBge3J9DQojIGEpDQpyZXN0YXVyYW50ZTwtcmVhZC5jc3YoIkM6XFxVc2Vyc1xcQ2F0YWxpbmFcXERvY3VtZW50c1xccmVzdGF1cmFudGUuY3N2IikNCnJlc3RhdXJhbnRlJHJlc3RhdXJhbnQ8LWFzLmZhY3RvcihyZXN0YXVyYW50ZSRyZXN0YXVyYW50ZSkNCnFmKC45NSxkZjE9MyxkZjI9MTYpDQphbm92YTQ8LWFvdih0aWVtcG9+cmVzdGF1cmFudGUsZGF0YT1yZXN0YXVyYW50ZSkNCnN1bW1hcnkoYW5vdmE0KQ0KIyBObyByZWNoYXphbW9zIEgwLg0KIyBMb3MgdGllbXBvcyBtZWRpb3MgZGUgc2VydmljaW8gbm8gc29uIHNpZ25pZmljYXRpdmFtZW50ZSBkaWZlcmVudGVzLg0KDQojIGIpDQojIERlYmlkbyBhIHF1ZSBuaW5nw7puIHJlc3RhdXJhbnQgZXMgcGVvciBxdWUgbG9zIG90cm9zLCBjdWFscXVpZXIgcmVjb21lbmRhY2nDs24gdGVuZHLDrWEgcXVlIGhhY2VyZXNlIGEgdG9kb3MgbG9zIGFkbWluaXN0cmFkb3Jlcy4gDQpgYGANCg0KDQojIyAqKjEyLTY0KioNCg0KVW4gYXJyZW5kYWRvciBlc3TDoSBpbnRlcmVzYWRvIGVuIHZlciBzaSBsYXMgcmVudGFzIGRlIHN1cyBkZXBhcnRhbWVudG9zIHNvbiBsYXMgY29tdW5lcy4gUGFyYSBlc3RvIHRvbcOzIHVuYSBtdWVzdHJhIGFsZWF0b3JpYSBkZSAxMSByZW50YXMgeSB0YW1hw7FvcyBkZSBkZXBhcnRhbWVudG9zIGVuIGNvbXBsZWpvcyBkZSBkZXBhcnRhbWVudG9zIHNpbWlsYXJlcy4NCg0KTG9zIGRhdG9zIHNvbiBsb3Mgc2lndWllbnRlczoNCg0KUmVudGEgfCBOw7ptZXJvIGRlIHJlY8OhbWFyYXMgDQo6LS0tLS0tLS0tLS0tLTogfCA6LS0tLS0tLS0tLS0tLToNCjIzMCB8IDINCjE5MCB8IDENCjQ1MCB8IDMNCjMxMCB8IDINCjIxOCB8IDINCjE4NSB8IDINCjM0MCB8IDINCjI0NSB8IDENCjEyNSB8IDENCjM1MCB8IDINCjI4MCB8IDINCg0KYSkgRGVzYXJyb2xsZSBsYSBlY3VhY2nDs24gZGUgZXN0aW1hY2nDs24gcXVlIG1lam9yIGRlc2NyaWJhIGVzdG9zIGRhdG9zLg0KYikgQ2FsY3VsZSBlbCBjb2VmaWNpZW50ZSBkZSBkZXRlcm1pbmFjacOzbi4NCmMpIFByb25vc3RpcXVlIGxhIHJlbnRhIHBhcmEgdW4gZGVwYXJ0YW1lbnRvIGRlIGRvcyByZWPDoW1hcmFzLg0KDQpgYGB7cn0NCiMgYSkNCnJlbnRhPC1jKDIzMCwxOTAsNDUwLDMxMCwyMTgsMTg1LDM0MCwyNDUsMTI1LDM1MCwyODApDQpyZWNhbWFyYXMxPC1jKDIsMSwzLDIsMiwyLDIsMSwxLDIsMikNCg0KcmVncmVzaW9uMzwtbG0ocmVudGF+cmVjYW1hcmFzMSkNCnN1bW1hcnkocmVncmVzaW9uMykNCiMgUmVudGEgPSA1NS4wMCArIDExNS45MCpSZWNhbWFyYXMNCg0KIyBiKQ0KIyByMiA9IDAuNTc2Mg0KDQojIGMpDQpyZW50YTE8LTU1KzExNS45MCpyZWNhbWFyYXMxDQpyZW50YTENCiMgJDI4Ni44MA0KYGBgDQoNCg0K