library(dplyr)
library(ggplot2)

Distribución Normal de Probabilidad

Distribución Normal de Probabilidad Continua

Una distribución de probabilidad continua es una distribución cuya función de distribución es continua. Por lo tanto, una distribución de probabilidad continua define las probabilidades de una variable aleatoria continua.

Ejemplos:

- El peso de los alumnos de un curso.

- El tiempo de duración de un componente eléctrico.

- La rentabilidad de las acciones de las empresas que cotizan en bolsa.

- La velocidad de un coche.

- El precio de unas acciones bursátiles.

Área

El área bajo la curva es igual a 1

Para variables aleatorias continuas, área = probabilidad

El área a la izquierda de la media es igual a .5

El área a la derecha de la media es igual a .5

Porcentaje

1-pnorm(30,25.5,4.5)
## [1] 0.1586553

X

qnorm(.95,25.5,4.5)
## [1] 32.90184

Ejercicio 4

Un estudio demostro que el uso de gasonlina para autos compactos vendidos en Estados Unidos esta distribuido normalmente, con una media de 25.5 millas per gallon (mpg) y una desviación estándar de 45 mpg. ¿Que porcentaje de autos recorre 30 mpg o más?

(30-25.5)/4.5
## [1] 1
1-0.8413
## [1] 0.1587
#Representa el 15.9% de autos recorre 30 mpg o más

Si un fabricante desea desarollar un auto que supere el 95% de las compactos actuales. ¿Cual debe ser el rendimiento mpg?

25.5+1.645*4.5
## [1] 32.9025
#El auto compacto debe recorrer 32.9 mpg para superar el 95% de autos actuales

Ejercicio 4.1

Suponga que los diametros de tallos no soportados en la base de una especie particular de girasol, tienen una distribucion con un diametro promedio de 35 mm y una desviacion estandar de 3mm.

a) ¿Cuál es la probabilidad de que una planta de girasol tenga un diametro de base de mas de 40 mm?

z41<- (40-35)/3
z41
## [1] 1.666667
p41 <- 1-pnorm(40,35,3)
p41
## [1] 0.04779035

Función de Densidad de Probabilidad (Normal)

x <- 40
meanx <- 35
desx <- 3
x_densidad <- seq(meanx-3*desx,meanx+3*desx,length=1000)
y_densidad <- dnorm(x_densidad,meanx,desx)
plot(x_densidad,y_densidad,type="l",lty=1,xlab="x",ylab="f(x)", main="Función de Densidad de Probabilidad (Normal)", col="red")

Función de Distribución de Probabilidad (Normal)

x_distribucion <- seq(meanx-3*desx,meanx+3*desx,length=1000)
y_distribucion <- pnorm(x_distribucion,meanx,desx)
plot(x_distribucion,y_distribucion,type="l",lty=1,xlab="x",ylab="f(x)", main="Función de Distribución de Probabilidad (Normal)", col="blue")

b) Si las plantas de girasol se seleccionan al azar ¿cúal es la probabilidad de que ambas plantas tengan un diametro de base de mas de 40 mm?

p42 <- p41*p41
p42
## [1] 0.002283918

c) ¿Dentro de que límites esperaria usted que se encuentren los diametros de base, con probabilidad de 0.95?

p43<- 35-(1.96*3)

p43<- 35+(1.96*3)

d) ¿Que diametro representa el 90% de la distribución de diámetros?

p44<- qnorm(.90,35,3)
p44
## [1] 38.84465
## PhantomJS not found. You can install it with webshot::install_phantomjs(). If it is installed, please make sure the phantomjs executable can be found via the PATH variable.
Shiny applications not supported in static R Markdown documents

Ejercicio 5

Un nuevo proceso para producir diamantes sinteticos es rentable sólo si el peso de estos es mayor a 0.5 quilates para evaluarlo se generaron con los siguientes pesos: 0.46,0.61, 0.52,0.48,0.57,0.54

El proceso es rentable?

1)Ho: m >= 0.5 / H1= m > 0.5

2) α= 0.05

3) Zona de aceptación

4) Estadística De Prueba

peso_diamante<- c(0.46,0.61, 0.52,0.48,0.57,0.54)
peso_diamante
## [1] 0.46 0.61 0.52 0.48 0.57 0.54
promedio <- mean(peso_diamante)
promedio
## [1] 0.53
desviacion<- sqrt(var(peso_diamante))
desviacion
## [1] 0.05585696
n<- 6

miu <- 0.5

t1<- (promedio-miu)/(desviacion/sqrt(n))
t1
## [1] 1.315587

5) No se rechaza H0, los datos no presentan suficiente evidencia para indicar que el peso medio de los diamantes exceda los 0.5 quilates

Gráficas Generales de t de Studen

Función de Densidad De Probabilidad (t de studen)

x_densidad2<- seq(-4,4,length=1000)
y_densidad2<- dt(x_densidad2, df=5)

plot(x_densidad2, y_densidad2,type="l", lty=1, xlab="t", ylab="f(t)" , main="Función de densidad de probabilidad(t de Student)")

Función de distribución de probabilidad (t de studen)

x_densidad3<- seq(-4,4,length=1000)
y_densidad3<- pt(x_densidad3, df=5)

plot(x_densidad3, y_densidad3,type="l", lty=1, xlab="t", ylab="f(t)" , main="Función de densidad de probabilidad(t de Student)")

Ejercicio 5.1

Los desechos industriales y residuales descargados en nuestros ríos y arroyos absorben oxígeno y, por tanto, reducen la cantidad de oxígeno disuelto disponible para peces y otras formas de fauna acuática. Una agencia estatal requiere un mínimo de 5 partes por millón (ppm) de oxígeno disuelto para que el contenido de oxígeno sea suficiente para sostener vida acuática. Seis especímenes de agua tomados de un río en un lugar específico durante la estación de aguas bajas (julio) dio lecturas de 4.9, 5.1, 4.9, 5, 5 y 4.7 de oxígeno disuelto.

¿Los datos dan suficiente evidencia para indicar que el contenido de oxígeno disuelto es menor a 5 ppm) Pruebe usando a=.05

1) Ho: m >= 0.5 / H1: m > 0.5

2) 2) α= 0.05

3) Zona de acceptación

4) Estadistico de prueba t

oxigeno <- c(4.9, 5.1, 4.9, 5, 5, 4.7)

promedio1 <- mean(oxigeno)
promedio1
## [1] 4.933333
desviacion1<- sqrt(var(oxigeno))
desviacion1
## [1] 0.136626
n1<- 6

miu1 <- 5

t2<- (promedio1-miu1)/(desviacion1/sqrt(n1))
t2
## [1] -1.195229

5) No se rechaza

LS0tDQp0aXRsZTogIk0zX0EyIg0KYXV0aG9yOiAiSm9yZ2UgQ2FuaXphbGV6Ig0KZGF0ZTogIjIwMjMtMDgtMjkiDQpvdXRwdXQ6IA0KICBodG1sX2RvY3VtZW50Og0KICAgIHRvYzogVFJVRQ0KICAgIHRvY19mbG9hdDogVFJVRQ0KICAgIGNvZGVfZG93bmxvYWQ6IFRSVUUNCiAgICB0aGVtZTogImZsYXRseSINCi0tLQ0KIVtdKEM6L1VzZXJzL2FkcmlhL0RvY3VtZW50cy9TZW1lc3RyZSA3L01vZHVsbyAzL2ExLmpwZykNCg0KDQpgYGB7ciBtZXNzYWdlPUZBTFNFLCB3YXJuaW5nPUZBTFNFfQ0KbGlicmFyeShkcGx5cikNCmxpYnJhcnkoZ2dwbG90MikNCmBgYA0KDQoNCg0KIyAqKkRpc3RyaWJ1Y2nDs24gTm9ybWFsIGRlIFByb2JhYmlsaWRhZCoqIA0KIyMgKkRpc3RyaWJ1Y2nDs24gTm9ybWFsIGRlIFByb2JhYmlsaWRhZCBDb250aW51YSogDQojIyMgVW5hIGRpc3RyaWJ1Y2nDs24gZGUgcHJvYmFiaWxpZGFkIGNvbnRpbnVhIGVzIHVuYSBkaXN0cmlidWNpw7NuIGN1eWEgZnVuY2nDs24gZGUgZGlzdHJpYnVjacOzbiBlcyBjb250aW51YS4gUG9yIGxvIHRhbnRvLCB1bmEgZGlzdHJpYnVjacOzbiBkZSBwcm9iYWJpbGlkYWQgY29udGludWEgZGVmaW5lIGxhcyBwcm9iYWJpbGlkYWRlcyBkZSB1bmEgdmFyaWFibGUgYWxlYXRvcmlhIGNvbnRpbnVhLg0KIyMjIEVqZW1wbG9zOg0KIyMjIC0gRWwgcGVzbyBkZSBsb3MgYWx1bW5vcyBkZSB1biBjdXJzby4NCiMjIyAtIEVsIHRpZW1wbyBkZSBkdXJhY2nDs24gZGUgdW4gY29tcG9uZW50ZSBlbMOpY3RyaWNvLg0KIyMjIC0gTGEgcmVudGFiaWxpZGFkIGRlIGxhcyBhY2Npb25lcyBkZSBsYXMgZW1wcmVzYXMgcXVlIGNvdGl6YW4gZW4gYm9sc2EuDQojIyMgLSBMYSB2ZWxvY2lkYWQgZGUgdW4gY29jaGUuDQojIyMgLSBFbCBwcmVjaW8gZGUgdW5hcyBhY2Npb25lcyBidXJzw6F0aWxlcy4NCg0KIVtdKEM6L1VzZXJzL2FkcmlhL0RvY3VtZW50cy9TZW1lc3RyZSA3L01vZHVsbyAzL2EyLmpwZykNCg0KDQoNCiMjICrDgXJlYSoNCiMjIyBFbCDDoXJlYSBiYWpvIGxhIGN1cnZhIGVzIGlndWFsIGEgMQ0KIyMjIFBhcmEgdmFyaWFibGVzIGFsZWF0b3JpYXMgY29udGludWFzLCDDoXJlYSA9IHByb2JhYmlsaWRhZA0KIyMjIEVsIMOhcmVhIGEgbGEgaXpxdWllcmRhIGRlIGxhIG1lZGlhIGVzIGlndWFsIGEgLjUNCiMjIyBFbCDDoXJlYSBhIGxhIGRlcmVjaGEgZGUgbGEgbWVkaWEgZXMgaWd1YWwgYSAuNQ0KDQohW10oQzovVXNlcnMvYWRyaWEvRG9jdW1lbnRzL1NlbWVzdHJlIDcvTW9kdWxvIDMvYTMuanBnKQ0KDQoNCiMjIyAqUG9yY2VudGFqZSoNCmBgYHtyfQ0KMS1wbm9ybSgzMCwyNS41LDQuNSkNCmBgYA0KDQojIyMgKlgqDQpgYGB7cn0NCnFub3JtKC45NSwyNS41LDQuNSkNCmBgYA0KIyMgKipFamVyY2ljaW8gNCoqDQojIyMgVW4gZXN0dWRpbyBkZW1vc3RybyBxdWUgZWwgdXNvIGRlIGdhc29ubGluYSBwYXJhIGF1dG9zIGNvbXBhY3RvcyB2ZW5kaWRvcyBlbiBFc3RhZG9zIFVuaWRvcyBlc3RhIGRpc3RyaWJ1aWRvIG5vcm1hbG1lbnRlLCBjb24gdW5hIG1lZGlhIGRlIDI1LjUgbWlsbGFzIHBlciBnYWxsb24gKG1wZykgeSB1bmEgZGVzdmlhY2nDs24gZXN0w6FuZGFyIGRlIDQ1IG1wZy4gwr9RdWUgcG9yY2VudGFqZSBkZSBhdXRvcyByZWNvcnJlIDMwIG1wZyBvIG3DoXM/DQpgYGB7cn0NCigzMC0yNS41KS80LjUNCjEtMC44NDEzDQojUmVwcmVzZW50YSBlbCAxNS45JSBkZSBhdXRvcyByZWNvcnJlIDMwIG1wZyBvIG3DoXMNCmBgYA0KIyMjIFNpIHVuIGZhYnJpY2FudGUgZGVzZWEgZGVzYXJvbGxhciB1biBhdXRvIHF1ZSBzdXBlcmUgZWwgOTUlIGRlIGxhcyBjb21wYWN0b3MgYWN0dWFsZXMuIMK/Q3VhbCBkZWJlIHNlciBlbCByZW5kaW1pZW50byBtcGc/DQpgYGB7cn0NCjI1LjUrMS42NDUqNC41DQoNCiNFbCBhdXRvIGNvbXBhY3RvIGRlYmUgcmVjb3JyZXIgMzIuOSBtcGcgcGFyYSBzdXBlcmFyIGVsIDk1JSBkZSBhdXRvcyBhY3R1YWxlcw0KYGBgDQoNCiMjICoqRWplcmNpY2lvIDQuMSoqIA0KIyMjIFN1cG9uZ2EgcXVlIGxvcyBkaWFtZXRyb3MgZGUgdGFsbG9zIG5vIHNvcG9ydGFkb3MgZW4gbGEgYmFzZSBkZSB1bmEgZXNwZWNpZSBwYXJ0aWN1bGFyIGRlIGdpcmFzb2wsIHRpZW5lbiB1bmEgZGlzdHJpYnVjaW9uIGNvbiB1biBkaWFtZXRybyBwcm9tZWRpbyBkZSAzNSBtbSB5IHVuYSBkZXN2aWFjaW9uIGVzdGFuZGFyIGRlIDNtbS4NCg0KDQojIyMgYSkgwr9DdcOhbCBlcyBsYSBwcm9iYWJpbGlkYWQgZGUgcXVlIHVuYSBwbGFudGEgZGUgZ2lyYXNvbCB0ZW5nYSB1biBkaWFtZXRybyBkZSBiYXNlIGRlIG1hcyBkZSA0MCBtbT8NCg0KYGBge3J9DQp6NDE8LSAoNDAtMzUpLzMNCno0MQ0KcDQxIDwtIDEtcG5vcm0oNDAsMzUsMykNCnA0MQ0KYGBgDQoNCiMjIyAqRnVuY2nDs24gZGUgRGVuc2lkYWQgZGUgUHJvYmFiaWxpZGFkIChOb3JtYWwpKg0KYGBge3J9DQp4IDwtIDQwDQptZWFueCA8LSAzNQ0KZGVzeCA8LSAzDQp4X2RlbnNpZGFkIDwtIHNlcShtZWFueC0zKmRlc3gsbWVhbngrMypkZXN4LGxlbmd0aD0xMDAwKQ0KeV9kZW5zaWRhZCA8LSBkbm9ybSh4X2RlbnNpZGFkLG1lYW54LGRlc3gpDQpwbG90KHhfZGVuc2lkYWQseV9kZW5zaWRhZCx0eXBlPSJsIixsdHk9MSx4bGFiPSJ4Iix5bGFiPSJmKHgpIiwgbWFpbj0iRnVuY2nDs24gZGUgRGVuc2lkYWQgZGUgUHJvYmFiaWxpZGFkIChOb3JtYWwpIiwgY29sPSJyZWQiKQ0KYGBgDQoNCiMjIyAqRnVuY2nDs24gZGUgRGlzdHJpYnVjacOzbiBkZSBQcm9iYWJpbGlkYWQgKE5vcm1hbCkqDQpgYGB7cn0NCnhfZGlzdHJpYnVjaW9uIDwtIHNlcShtZWFueC0zKmRlc3gsbWVhbngrMypkZXN4LGxlbmd0aD0xMDAwKQ0KeV9kaXN0cmlidWNpb24gPC0gcG5vcm0oeF9kaXN0cmlidWNpb24sbWVhbngsZGVzeCkNCnBsb3QoeF9kaXN0cmlidWNpb24seV9kaXN0cmlidWNpb24sdHlwZT0ibCIsbHR5PTEseGxhYj0ieCIseWxhYj0iZih4KSIsIG1haW49IkZ1bmNpw7NuIGRlIERpc3RyaWJ1Y2nDs24gZGUgUHJvYmFiaWxpZGFkIChOb3JtYWwpIiwgY29sPSJibHVlIikNCmBgYA0KDQojIyMgYikgU2kgbGFzIHBsYW50YXMgZGUgZ2lyYXNvbCBzZSBzZWxlY2Npb25hbiBhbCBhemFyIMK/Y8O6YWwgZXMgbGEgcHJvYmFiaWxpZGFkIGRlIHF1ZSBhbWJhcyBwbGFudGFzIHRlbmdhbiB1biBkaWFtZXRybyBkZSBiYXNlIGRlIG1hcyBkZSA0MCBtbT8NCg0KYGBge3J9DQpwNDIgPC0gcDQxKnA0MQ0KcDQyDQpgYGANCiMjIyBjKSDCv0RlbnRybyBkZSBxdWUgbMOtbWl0ZXMgZXNwZXJhcmlhIHVzdGVkIHF1ZSBzZSBlbmN1ZW50cmVuIGxvcyBkaWFtZXRyb3MgZGUgYmFzZSwgY29uIHByb2JhYmlsaWRhZCBkZSAwLjk1Pw0KYGBge3J9DQpwNDM8LSAzNS0oMS45NiozKQ0KDQpwNDM8LSAzNSsoMS45NiozKQ0KYGBgDQojIyMgZCkgwr9RdWUgZGlhbWV0cm8gcmVwcmVzZW50YSBlbCA5MCUgZGUgbGEgZGlzdHJpYnVjacOzbiBkZSBkacOhbWV0cm9zPw0KYGBge3J9DQpwNDQ8LSBxbm9ybSguOTAsMzUsMykNCnA0NA0KYGBgDQoNCg0KYGBge3IsIGVjaG89RkFMU0V9DQpsaWJyYXJ5KHNoaW55KQ0KbGlicmFyeShzaGlueXRoZW1lcykNCg0KIyBEZWZpbmUgVUkgZm9yIGFwcGxpY2F0aW9uIHRoYXQgZHJhd3MgYSBoaXN0b2dyYW0NCmxpYnJhcnkoc2hpbnkpDQpsaWJyYXJ5KHNoaW55dGhlbWVzKQ0Kc2hpbnlBcHAoDQoNCnVpIDwtIGZsdWlkUGFnZSh0aGVtZSA9IHNoaW55dGhlbWUoImNlcnVsZWFuIiksDQogICAgICAgICAgICAgICAgbmF2YmFyUGFnZSgiQXBsaWNhY2lvbmVzIiwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhYlBhbmVsKCJEaXN0cmlidWNpw7NuIE5vcm1hbCIsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpZGViYXJQYW5lbCgNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWdzJGgzKCJJbmdyZXNhIGxvcyBzaWd1aWVudGVzIGRhdG9zOiIpLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bWVyaWNJbnB1dCgieF9mdW5jaW9uIiwieDoiLCAxKSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudW1lcmljSW5wdXQoInByb21lZGlvMSIsInByb21lZGlvOiIsIDApLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bWVyaWNJbnB1dCgiZGVzX2VzdCIsIkRlc3ZpYWNpw7NuIEVzdGFuZGFyOiIsIDEpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFpblBhbmVsKA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGgxKCJGdW5jacOzbiBkZSBEaXN0cmlidWNpw7NuIHkgRGVuc2lkYWQgTm9ybWFsIiksDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxvdE91dHB1dCgiZGVuc2lkYWQiKSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbG90T3V0cHV0KCJkaXN0cmlidWNpb24xIikNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhYlBhbmVsKCJUYWIgMiIpLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFiUGFuZWwoIlRhYiAzIikNCiAgICAgICAgICAgICAgICApDQopLCAgIA0Kc2VydmVyIDwtIGZ1bmN0aW9uKGlucHV0LCBvdXRwdXQpIHsNCiAgb3V0cHV0JGRlbnNpZGFkIDwtIHJlbmRlclBsb3Qoew0KICAgIHhfZGVuc2lkYWQxIDwtIHNlcShpbnB1dCRwcm9tZWRpbzEtMyppbnB1dCRkZXNfZXN0LCBpbnB1dCRwcm9tZWRpbzErMyppbnB1dCRkZXNfZXN0LCBsZW5ndGg9MTAwMCkNCiAgICB5X2RlbnNpZGFkMSA8LSBkbm9ybSh4X2RlbnNpZGFkMSxpbnB1dCRwcm9tZWRpbzEsaW5wdXQkZGVzX2VzdCkNCiAgICBkZW5zaWRhZDwtIHBsb3QoeF9kZW5zaWRhZDEsIHlfZGVuc2lkYWQxLHR5cGU9ImwiLCBsdHk9MSwgeGxhYj0ieCIsIHlsYWI9ICJmKHgpIixtYWluPSJGdW5jacOzbiBkZSBEZW5zaWRhZCBkZSBQcm9iYWJpbGlkYWQgKE5vcm1hbCkiLCBjb2w9InNreWJsdWUiKQ0KICAgIH0pDQogIG91dHB1dCRkaXN0cmlidWNpb24xIDwtIHJlbmRlclBsb3Qoew0KICAgIHhfZGlzdHJpYnVjaW9uMSA8LSBzZXEoaW5wdXQkcHJvbWVkaW8xLTMqaW5wdXQkZGVzX2VzdCwgaW5wdXQkcHJvbWVkaW8xKzMqaW5wdXQkZGVzX2VzdCwgbGVuZ3RoPTEwMDApDQogICAgeV9kaXN0cmlidWNpb24xIDwtIHBub3JtKHhfZGlzdHJpYnVjaW9uMSxpbnB1dCRwcm9tZWRpbzEsaW5wdXQkZGVzX2VzdCkNCiAgICBkaXN0cmlidWNpb24xIDwtcGxvdCh4X2Rpc3RyaWJ1Y2lvbjEsIHlfZGlzdHJpYnVjaW9uMSx0eXBlPSJsIiwgbHR5PTEsIHhsYWI9IngiLCB5bGFiPSAiZih4KSIsbWFpbj0iRnVuY2nDs24gZGUgRGlzdHJpYnVjacOzbiBkZSBQcm9iYWJpbGlkYWQgKE5vcm1hbCkiLCBjb2w9InJlZCIpDQogICAgDQogIH0pDQp9KQ0KYGBgDQoNCg0KIyMgKipFamVyY2ljaW8gNSoqDQojIyMgVW4gbnVldm8gcHJvY2VzbyBwYXJhIHByb2R1Y2lyIGRpYW1hbnRlcyBzaW50ZXRpY29zIGVzIHJlbnRhYmxlIHPDs2xvIHNpIGVsIHBlc28gZGUgZXN0b3MgZXMgbWF5b3IgYSAwLjUgcXVpbGF0ZXMgcGFyYSBldmFsdWFybG8gc2UgZ2VuZXJhcm9uIGNvbiBsb3Mgc2lndWllbnRlcyBwZXNvczogMC40NiwwLjYxLCAwLjUyLDAuNDgsMC41NywwLjU0DQoNCiMjIyBFbCBwcm9jZXNvIGVzIHJlbnRhYmxlPw0KDQojIyMgMSlIbzogbSA+PSAwLjUgLyBIMT0gbSA+IDAuNQ0KDQojIyMgMikgzrE9IDAuMDUNCg0KIyMjIDMpIFpvbmEgZGUgYWNlcHRhY2nDs24NCiFbXShDOi9Vc2Vycy9hZHJpYS9Eb2N1bWVudHMvU2VtZXN0cmUgNy9Nb2R1bG8gMy9hNC5qcGcpDQoNCg0KIyMgNCkgRXN0YWTDrXN0aWNhIERlIFBydWViYQ0KYGBge3J9DQpwZXNvX2RpYW1hbnRlPC0gYygwLjQ2LDAuNjEsIDAuNTIsMC40OCwwLjU3LDAuNTQpDQpwZXNvX2RpYW1hbnRlDQpwcm9tZWRpbyA8LSBtZWFuKHBlc29fZGlhbWFudGUpDQpwcm9tZWRpbw0KZGVzdmlhY2lvbjwtIHNxcnQodmFyKHBlc29fZGlhbWFudGUpKQ0KZGVzdmlhY2lvbg0KDQpuPC0gNg0KDQptaXUgPC0gMC41DQoNCnQxPC0gKHByb21lZGlvLW1pdSkvKGRlc3ZpYWNpb24vc3FydChuKSkNCnQxDQoNCmBgYA0KIyMjIDUpIE5vIHNlIHJlY2hhemEgSDAsIGxvcyBkYXRvcyBubyBwcmVzZW50YW4gc3VmaWNpZW50ZSBldmlkZW5jaWEgcGFyYSBpbmRpY2FyIHF1ZSBlbCBwZXNvIG1lZGlvIGRlIGxvcyBkaWFtYW50ZXMgZXhjZWRhIGxvcyAwLjUgcXVpbGF0ZXMNCg0KIyMgKipHcsOhZmljYXMgR2VuZXJhbGVzIGRlIHQgZGUgU3R1ZGVuKioNCiMjIyBGdW5jacOzbiBkZSBEZW5zaWRhZCBEZSBQcm9iYWJpbGlkYWQgKHQgZGUgc3R1ZGVuKQ0KYGBge3J9DQp4X2RlbnNpZGFkMjwtIHNlcSgtNCw0LGxlbmd0aD0xMDAwKQ0KeV9kZW5zaWRhZDI8LSBkdCh4X2RlbnNpZGFkMiwgZGY9NSkNCg0KcGxvdCh4X2RlbnNpZGFkMiwgeV9kZW5zaWRhZDIsdHlwZT0ibCIsIGx0eT0xLCB4bGFiPSJ0IiwgeWxhYj0iZih0KSIgLCBtYWluPSJGdW5jacOzbiBkZSBkZW5zaWRhZCBkZSBwcm9iYWJpbGlkYWQodCBkZSBTdHVkZW50KSIpDQpgYGANCg0KIyMjIEZ1bmNpw7NuIGRlIGRpc3RyaWJ1Y2nDs24gZGUgcHJvYmFiaWxpZGFkICh0IGRlIHN0dWRlbikNCmBgYHtyfQ0KeF9kZW5zaWRhZDM8LSBzZXEoLTQsNCxsZW5ndGg9MTAwMCkNCnlfZGVuc2lkYWQzPC0gcHQoeF9kZW5zaWRhZDMsIGRmPTUpDQoNCnBsb3QoeF9kZW5zaWRhZDMsIHlfZGVuc2lkYWQzLHR5cGU9ImwiLCBsdHk9MSwgeGxhYj0idCIsIHlsYWI9ImYodCkiICwgbWFpbj0iRnVuY2nDs24gZGUgZGVuc2lkYWQgZGUgcHJvYmFiaWxpZGFkKHQgZGUgU3R1ZGVudCkiKQ0KYGBgDQoNCiMjICoqRWplcmNpY2lvIDUuMSoqDQojIyMgTG9zIGRlc2VjaG9zIGluZHVzdHJpYWxlcyB5IHJlc2lkdWFsZXMgZGVzY2FyZ2Fkb3MgZW4gbnVlc3Ryb3MgcsOtb3MgeSBhcnJveW9zIGFic29yYmVuIG94w61nZW5vIHksIHBvciB0YW50bywgcmVkdWNlbiBsYSBjYW50aWRhZCBkZSBveMOtZ2VubyBkaXN1ZWx0byBkaXNwb25pYmxlIHBhcmEgcGVjZXMgeSBvdHJhcyBmb3JtYXMgZGUgZmF1bmEgYWN1w6F0aWNhLiBVbmEgYWdlbmNpYSBlc3RhdGFsIHJlcXVpZXJlIHVuIG3DrW5pbW8gZGUgNSBwYXJ0ZXMgcG9yIG1pbGzDs24gKHBwbSkgZGUgb3jDrWdlbm8gZGlzdWVsdG8gcGFyYSBxdWUgZWwgY29udGVuaWRvIGRlIG94w61nZW5vIHNlYSBzdWZpY2llbnRlIHBhcmEgc29zdGVuZXIgdmlkYSBhY3XDoXRpY2EuIFNlaXMgZXNwZWPDrW1lbmVzIGRlIGFndWEgdG9tYWRvcyBkZSB1biByw61vIGVuIHVuIGx1Z2FyIGVzcGVjw61maWNvIGR1cmFudGUgbGEgZXN0YWNpw7NuIGRlIGFndWFzIGJhamFzIChqdWxpbykgZGlvIGxlY3R1cmFzIGRlIDQuOSwgNS4xLCA0LjksIDUsIDUgeSA0LjcgZGUgb3jDrWdlbm8gZGlzdWVsdG8uDQojIyMgwr9Mb3MgZGF0b3MgZGFuIHN1ZmljaWVudGUgZXZpZGVuY2lhIHBhcmEgaW5kaWNhciBxdWUgZWwgY29udGVuaWRvIGRlIG94w61nZW5vIGRpc3VlbHRvIGVzIG1lbm9yIGEgNSBwcG0pIFBydWViZSB1c2FuZG8gYT0uMDUNCg0KIyMjIDEpIEhvOiBtID49IDAuNSAvIEgxOiBtID4gMC41DQoNCiMjIyAyKSAyKSDOsT0gMC4wNQ0KDQojIyMgMykgWm9uYSBkZSBhY2NlcHRhY2nDs24NCiFbXShDOi9Vc2Vycy9hZHJpYS9Eb2N1bWVudHMvU2VtZXN0cmUgNy9Nb2R1bG8gMy9hNi5qcGcpDQoNCg0KIyMjIDQpIEVzdGFkaXN0aWNvIGRlIHBydWViYSB0DQpgYGB7cn0NCm94aWdlbm8gPC0gYyg0LjksIDUuMSwgNC45LCA1LCA1LCA0LjcpDQoNCnByb21lZGlvMSA8LSBtZWFuKG94aWdlbm8pDQpwcm9tZWRpbzENCmRlc3ZpYWNpb24xPC0gc3FydCh2YXIob3hpZ2VubykpDQpkZXN2aWFjaW9uMQ0KbjE8LSA2DQoNCm1pdTEgPC0gNQ0KDQp0MjwtIChwcm9tZWRpbzEtbWl1MSkvKGRlc3ZpYWNpb24xL3NxcnQobjEpKQ0KdDINCmBgYA0KDQojIyMgNSkgTm8gc2UgcmVjaGF6YQ0KDQoNCg0KDQoNCg0K