Santiago Guerrero Rondon; Valentina Valle Velasco

1032506593 ; 1022443469
Direccion de RPubs para la revision: https://rpubs.com/Elav/689619
    1. En un estudio conducido en ambiente controlado se tuvieron 72 macetas, cada una con una planta a la que a cierta edad se le midia el contenido de clorofila (indice de clorofila) con un sensor (SPAD). El total de macetas se correspondia con 9 tratamientos asociados a estres hidrico. Se sabe que la varianza de las 72 observaciones es 893. Con esta informacion complete la tabla del ANOVA que se muestra a continuacion:
v = 893 # Varianza
n = 72 # No. de datos
tr = 9 # No. de tratamientos
repe = 8 # No. de repeticiones
sc_tr= 6000 # Sumatoria de cuadrados entre tratamientos

Suponiendo la formula de varianza poblacional \[\delta^2=\frac{\sum_{i=1}^{N}(x_i-\mu)^2}{N}\\ --------------\\ \delta^2*N=\sum_{i=1}^{N}(x_i-\mu)^2\\ --------------\\ \delta^2*N=SCT\]

sc_t = v*n; sc_t # Sumatoria de cuadrados totales
[1] 64296

\[ SCT = SCtr+SCE\]

Despejando SCE (Sumatoria de cuadrados del error)

\[SCE = SCT - SCtr\]

sc_e = sc_t-sc_tr;sc_e 
[1] 58296

Grados de libertad

gl_tr = tr-1; gl_tr #gl tratamientos
[1] 8
gl_e = (repe-1)*tr; gl_e #gl error
[1] 63

Cuadrados medios

cm_tr = sc_tr/gl_tr;cm_tr #CM para tratamientos
[1] 750
cm_e = round((sc_e/gl_e), digits = 3); cm_e #CM para error
[1] 925.333

F valor

fvalue = round((cm_tr/cm_e), digits = 3);fvalue
[1] 0.811

Tabla de Analisis de Varianza

valores = c("Entre Tratamientos","Dentro del tratamiento","Total")
sc = c(sc_tr,sc_e,sc_t)
gl = c(gl_tr,gl_e,"_")
cm = c(cm_tr, cm_e,"_")
f = c(fvalue,"_","_")
taov = data.frame(valores,sc,gl,cm,f);taov
Si el F tabulado es 2.8. que puede decirse acerca de la Hipotesis nula de igualdad de los promedios del indice en todas las condiciones de tratamiento (use el p valor asi como el cociente F calculado de la tabla para concluir)

\[ H_0: \mu_{tr1} = \mu_{tr2} = \mu_{tr3} = \mu_{tr4} = \mu_{tr5} = \mu_{tr6} = \mu_{tr7} = \mu_{tr8} = \mu_{tr9}\]

\[H_a: \mu_i \neq \mu_j\ para\ algun\ i \neq j\]

Con \(F=2.8\), procedemos a calcular el p-value:

f_tab = 2.8; f_tab # F nuevo
[1] 2.8
p_val = pf(q = fvalue, df1 = 8, df2 = 63, lower.tail = F); p_val 
[1] 0.5954968
Si tomamos el valor del F nuevo (ftab=2.8), teniendo en cuenta que es el F limite para rechazar o no nuestra hipotesis nula, podemos concluir que como el valor del Fcal es menor al del Ftab y el pvalor del 5%, entonces no se rechazaria la Ho.
Vale la pena comparar las medias de tratamientos a posteriori del ANOVA (prueba de Tukey)
  1. a-Realice el ANOVA para este diseno recordando que es un caso desbalanceado. Concluya sobre el resultado de la tabla del ANOVA obtenida. (Afecta el orden de colocacion de los efectos del modelo dentro del software R. Verifique si la tabla del ANOVA cambia): en R: lm()
gr_1 = c(NA, 5.54, 7.67, 7.89, 9.27, 7.593)
gr_2 = c(6.75, 3.53, 4.15, 1.97, 4.39, 4.158)
gr_3 = c(13.05, 11.20, 9.79, 8.97, 13.44, 11.290)
gr_4 = c(10.26, 7.21, 8.27, 6.12, 9.13, 8.198)
gr_5 = c(8.01, 3.24, 6.75, 4.22, 9.20, 6.280)
gr_6 = c(8.42, 6.45, 5.50, 7.84, 7.13, 7.068)
metodo = c("M_1","M_2","M_3","M_4","M_5", "mediannn")
data.frame(metodo, gr_1, gr_2, gr_3, gr_4, gr_5, gr_6)
pp =c(NA,6.75, 13.05, 10.26,  8.01,  8.42,  5.54,  3.53, 11.20,  7.21,  3.24,  6.45,7.67,  4.15,  9.79,  8.27,  6.75,  5.50,  7.89,  1.97,  8.97,  6.12,  4.22,  7.84,9.27,  4.39, 13.44,  9.13,  9.20, 7.13)
metodo = gl(5,6,30, paste0("M_",1:5)); metodo
 [1] M_1 M_1 M_1 M_1 M_1 M_1 M_2 M_2 M_2 M_2 M_2 M_2 M_3 M_3 M_3 M_3 M_3 M_3
[19] M_4 M_4 M_4 M_4 M_4 M_4 M_5 M_5 M_5 M_5 M_5 M_5
Levels: M_1 M_2 M_3 M_4 M_5
granjero = gl(6,1,30, paste0("g_",1:6)); granjero
 [1] g_1 g_2 g_3 g_4 g_5 g_6 g_1 g_2 g_3 g_4 g_5 g_6 g_1 g_2 g_3 g_4 g_5 g_6
[19] g_1 g_2 g_3 g_4 g_5 g_6 g_1 g_2 g_3 g_4 g_5 g_6
Levels: g_1 g_2 g_3 g_4 g_5 g_6
table(metodo,granjero)
      granjero
metodo g_1 g_2 g_3 g_4 g_5 g_6
   M_1   1   1   1   1   1   1
   M_2   1   1   1   1   1   1
   M_3   1   1   1   1   1   1
   M_4   1   1   1   1   1   1
   M_5   1   1   1   1   1   1
3.Use la funcion de R para generar de la distribucion uniforme unos datos de carbono organico del suelo medida a 5 cm y 10 cm de profundidad. Suponga que la medida de la capa superior oscilo entre 3.0 y 4 y de la capa inferior oscilo entre 2 y 2.4. Use expand.grid para generar una ventana de observacion de 0 a 100 m para la longitud y de 0 a 200 m para la latitud. Genere 50 datos en cada capa. Use la funcion sort.int de R para ordenar los datos de cada capa con la opcion partial=25+U dentro de la propia funcion sort.int. Una vez cree los datos realice algun diagrama de color (preferiblemente 3D) que permita visualizar las medidas de carbono en cada capa generadas por computadora. Compare si se encuentran diferencias en la media de carbono entre capas utilizando un nivel de confianza del 95%.
summary(mod)

Call:
lm(formula = dat_cap1 ~ C_long)

Residuals:
      Min        1Q    Median        3Q       Max 
-0.176993 -0.033619 -0.005506  0.053023  0.125652 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept) 2.979726   0.020891  142.63   <2e-16 ***
C_long      0.020075   0.000713   28.16   <2e-16 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 0.07275 on 48 degrees of freedom
Multiple R-squared:  0.9429,    Adjusted R-squared:  0.9417 
F-statistic: 792.8 on 1 and 48 DF,  p-value: < 2.2e-16
4. El siguiente diseno se corresponde con un factorial completo (3 2 ) en arreglo completamente al azar. Los factores y la respuesta fueron creados con el codigo:
D = expand.grid(F1 = c(3.25, 3.75, 4.25), F2 = c(4, 5, 6)) # Crea el diseño 3^2
D <- rbind(D, D) # Crea la estructura para dos repeticiones por tratamiento
set.seed(2020)
D <- D[order(sample(1:18)), ] #Aleatoriza la estructura
class(D)
[1] "data.frame"
D$biomasa <- sort.int(rnorm(18, 3, 0.3), partial = 9) # Crea la respuesta
8. Realice un resumen con la nota que aparece en las siguientes direcciones sobre:

El uso de los disenos en parcelas divididas:

Los disenos de parcela dividida son utiles para desarrollar experimentos en donde por lo menos hay un factor que es muy dificil de aleatorizar completamente, y un factor que no lo es. Esto se solucionan aleatorizando con menor frecuencia los factores de parcela completa. Ademas, en algunas ocasiones, los factores de parcela completa generan costos elevados de dinero y tiempo que se pueden reducir haciendo un buen uso del diseno de parcelas divididas. Es necesario saber identificar cuando se debe usar este tipo de diseno, para no cometer el error de confundir entre un experimento y otro. Asimismo, es util ya que proporciona la mayor cantidad de datos que puede brindar el experimento para poder tomar una decision con base en datos estadisticos, lo cual resulta muy conveniente.

Sobre lo que significa unidad experimental y unidad de observacion Unidad experimental:

Estructura mas simple que se le atribuye a un tratamiento especifico, cada estructura es independiente de la otra. Sin embargo, cada una de ellas no es muy diferente del resto, lo que facilita la ejecucion del estudio. Unidad de observacion: Elemento fisico en el cual se miden las consecuencias relevantes de un experimento. Las dos definiciones podrian atribuirse a la misma entidad pero eso depende de que tanta dificultad tenga el experimento. No reconocer las dos por separado en un experimento en donde si se requiera, puede llevar a aumentar el error, lo que conlleva a reducir el cuadrado medio del error y con esto, determinar un Fvalue incorrecto. A esto se le llama pseudo-replicacion.

Guia para disenar experimentos exitosos:

A la hora de estructurar un experimeto es indispensable saber identificar a que tipo de diseno se enfrenta, asimismo tener en cuenta los 4 pilares base del diseno experimental y no subestimarlos por el simple hecho de que ya se ha realizado un diseno anteriormente. El diagrama de experimentacion cientifica es una herramienta util para estructurar y comprender mejor el problema. Se debe tener presente cada paso a seguir, para asi obtener una solucion o un desarrollo al problema inicial a traves de metodos estadisticos.

LS0tDQp0aXRsZTogIlBBUkNJQUwgREUgRElTRU5PIERFIEVYUEVSSU1FTlRPUyINCm91dHB1dDogaHRtbF9ub3RlYm9vaw0KLS0tDQoNCiMjIyBTYW50aWFnbyBHdWVycmVybyBSb25kb247IFZhbGVudGluYSBWYWxsZSBWZWxhc2NvDQoNCiMjIyMjIHNhZ3VlcnJvckB1bmFsLmVkdS5jbzsgdnZhbGxlQHVuYWwuZWR1LmNvDQoNCiMjIyMjIDEwMzI1MDY1OTMgOyAxMDIyNDQzNDY5DQoNCiMjIyMjIERpcmVjY2lvbiBkZSBSUHVicyBwYXJhIGxhIHJldmlzaW9uOiBodHRwczovL3JwdWJzLmNvbS9FbGF2LzY4OTYxOQ0KDQo8ZGl2IHN0eWxlPSJ0ZXh0LWFsaWduOiBqdXN0aWZ5Ij4gMS4gYSkgRW4gdW4gZXN0dWRpbyBjb25kdWNpZG8gZW4gYW1iaWVudGUgY29udHJvbGFkbyBzZSB0dXZpZXJvbiA3MiBtYWNldGFzLCBjYWRhIHVuYSBjb24gdW5hIHBsYW50YSBhIGxhIHF1ZSBhIGNpZXJ0YSBlZGFkIHNlIGxlIG1pZGlhIGVsIGNvbnRlbmlkbyBkZSBjbG9yb2ZpbGEgKGluZGljZSBkZSBjbG9yb2ZpbGEpIGNvbiB1biBzZW5zb3IgKFNQQUQpLiBFbCB0b3RhbCBkZSBtYWNldGFzIHNlIGNvcnJlc3BvbmRpYSBjb24gOSB0cmF0YW1pZW50b3MgYXNvY2lhZG9zIGEgZXN0cmVzIGhpZHJpY28uIFNlIHNhYmUgcXVlIGxhIHZhcmlhbnphIGRlIGxhcyA3MiBvYnNlcnZhY2lvbmVzIGVzIDg5My4gQ29uIGVzdGEgaW5mb3JtYWNpb24gY29tcGxldGUgbGEgdGFibGEgZGVsIEFOT1ZBIHF1ZSBzZSBtdWVzdHJhIGEgY29udGludWFjaW9uOiA8ZGl2Lz4NCmBgYHtyfQ0KdiA9IDg5MyAjIFZhcmlhbnphDQpuID0gNzIgIyBOby4gZGUgZGF0b3MNCnRyID0gOSAjIE5vLiBkZSB0cmF0YW1pZW50b3MNCnJlcGUgPSA4ICMgTm8uIGRlIHJlcGV0aWNpb25lcw0Kc2NfdHI9IDYwMDAgIyBTdW1hdG9yaWEgZGUgY3VhZHJhZG9zIGVudHJlIHRyYXRhbWllbnRvcw0KYGBgDQpTdXBvbmllbmRvIGxhIGZvcm11bGEgZGUgdmFyaWFuemEgcG9ibGFjaW9uYWwNCiQkXGRlbHRhXjI9XGZyYWN7XHN1bV97aT0xfV57Tn0oeF9pLVxtdSleMn17Tn1cXA0KLS0tLS0tLS0tLS0tLS1cXA0KXGRlbHRhXjIqTj1cc3VtX3tpPTF9XntOfSh4X2ktXG11KV4yXFwNCi0tLS0tLS0tLS0tLS0tXFwNClxkZWx0YV4yKk49U0NUJCQNCmBgYHtyfQ0Kc2NfdCA9IHYqbjsgc2NfdCAjIFN1bWF0b3JpYSBkZSBjdWFkcmFkb3MgdG90YWxlcw0KYGBgDQokJCBTQ1QgPSBTQ3RyK1NDRSQkIA0KDQojIyMjIERlc3BlamFuZG8gU0NFIChTdW1hdG9yaWEgZGUgY3VhZHJhZG9zIGRlbCBlcnJvcikNCg0KJCRTQ0UgPSBTQ1QgLSBTQ3RyJCQgDQoNCmBgYHtyfQ0Kc2NfZSA9IHNjX3Qtc2NfdHI7c2NfZSANCmBgYA0KIyMjIyBHcmFkb3MgZGUgbGliZXJ0YWQNCg0KYGBge3J9DQpnbF90ciA9IHRyLTE7IGdsX3RyICNnbCB0cmF0YW1pZW50b3MNCmdsX2UgPSAocmVwZS0xKSp0cjsgZ2xfZSAjZ2wgZXJyb3INCmBgYA0KIyMjIyBDdWFkcmFkb3MgbWVkaW9zDQoNCmBgYHtyfQ0KY21fdHIgPSBzY190ci9nbF90cjtjbV90ciAjQ00gcGFyYSB0cmF0YW1pZW50b3MNCmNtX2UgPSByb3VuZCgoc2NfZS9nbF9lKSwgZGlnaXRzID0gMyk7IGNtX2UgI0NNIHBhcmEgZXJyb3INCmBgYA0KIyMjIyBGIHZhbG9yDQoNCmBgYHtyfQ0KZnZhbHVlID0gcm91bmQoKGNtX3RyL2NtX2UpLCBkaWdpdHMgPSAzKTtmdmFsdWUNCmBgYA0KIyMjIyBUYWJsYSBkZSBBbmFsaXNpcyBkZSBWYXJpYW56YQ0KYGBge3J9DQp2YWxvcmVzID0gYygiRW50cmUgVHJhdGFtaWVudG9zIiwiRGVudHJvIGRlbCB0cmF0YW1pZW50byIsIlRvdGFsIikNCnNjID0gYyhzY190cixzY19lLHNjX3QpDQpnbCA9IGMoZ2xfdHIsZ2xfZSwiXyIpDQpjbSA9IGMoY21fdHIsIGNtX2UsIl8iKQ0KZiA9IGMoZnZhbHVlLCJfIiwiXyIpDQp0YW92ID0gZGF0YS5mcmFtZSh2YWxvcmVzLHNjLGdsLGNtLGYpO3Rhb3YNCmBgYA0KDQo8ZGl2IHN0eWxlPSJ0ZXh0LWFsaWduOiBqdXN0aWZ5Ij4gU2kgZWwgRiB0YWJ1bGFkbyBlcyAyLjguIHF1ZSBwdWVkZSBkZWNpcnNlIGFjZXJjYSBkZSBsYSBIaXBvdGVzaXMgbnVsYSBkZSBpZ3VhbGRhZCBkZSBsb3MgcHJvbWVkaW9zIGRlbCBpbmRpY2UgZW4gdG9kYXMgbGFzIGNvbmRpY2lvbmVzIGRlIHRyYXRhbWllbnRvICh1c2UgZWwgcCB2YWxvciBhc2kgY29tbyBlbCBjb2NpZW50ZSBGIGNhbGN1bGFkbyBkZSBsYSB0YWJsYSBwYXJhIGNvbmNsdWlyKSA8ZGl2Lz4NCg0KJCQgSF8wOiBcbXVfe3RyMX0gID0gXG11X3t0cjJ9ID0gXG11X3t0cjN9ID0gXG11X3t0cjR9ID0gXG11X3t0cjV9ID0gXG11X3t0cjZ9ID0gXG11X3t0cjd9ID0gXG11X3t0cjh9ID0gXG11X3t0cjl9JCQNCg0KJCRIX2E6IFxtdV9pIFxuZXEgXG11X2pcIHBhcmFcIGFsZ3VuXCBpIFxuZXEgaiQkIA0KDQpDb24gJEY9Mi44JCwgcHJvY2VkZW1vcyBhIGNhbGN1bGFyIGVsIHAtdmFsdWU6DQogDQpgYGB7cn0NCmZfdGFiID0gMi44OyBmX3RhYiAjIEYgbnVldm8NCnBfdmFsID0gcGYocSA9IGZ2YWx1ZSwgZGYxID0gOCwgZGYyID0gNjMsIGxvd2VyLnRhaWwgPSBGKTsgcF92YWwgDQpgYGANCg0KPGRpdiBzdHlsZT0idGV4dC1hbGlnbjoganVzdGlmeSI+IFNpIHRvbWFtb3MgZWwgdmFsb3IgZGVsIEYgbnVldm8gKGZ0YWI9Mi44KSwgdGVuaWVuZG8gZW4gY3VlbnRhIHF1ZSBlcyBlbCBGIGxpbWl0ZSBwYXJhIHJlY2hhemFyIG8gbm8gbnVlc3RyYSBoaXBvdGVzaXMgbnVsYSwgcG9kZW1vcyBjb25jbHVpciBxdWUgY29tbyBlbCB2YWxvciBkZWwgRmNhbCBlcyBtZW5vciBhbCBkZWwgRnRhYiB5IGVsIHB2YWxvciBkZWwgNSUsIGVudG9uY2VzIG5vIHNlIHJlY2hhemFyaWEgbGEgSG8uPGRpdi8+DQogDQojIyMjIyBWYWxlIGxhIHBlbmEgY29tcGFyYXIgbGFzIG1lZGlhcyBkZSB0cmF0YW1pZW50b3MgYSBwb3N0ZXJpb3JpIGRlbCBBTk9WQSAocHJ1ZWJhIGRlIFR1a2V5KQ0KDQoNCg0KPGRpdiBzdHlsZT0idGV4dC1hbGlnbjoganVzdGlmeSI+IDIuIGEtUmVhbGljZSBlbCBBTk9WQSBwYXJhIGVzdGUgZGlzZW5vIHJlY29yZGFuZG8gcXVlIGVzIHVuIGNhc28gZGVzYmFsYW5jZWFkby4gQ29uY2x1eWEgc29icmUgZWwgcmVzdWx0YWRvIGRlIGxhIHRhYmxhIGRlbCBBTk9WQSBvYnRlbmlkYS4gKEFmZWN0YSBlbCBvcmRlbiBkZSBjb2xvY2FjaW9uIGRlIGxvcyBlZmVjdG9zIGRlbCBtb2RlbG8gZGVudHJvIGRlbCBzb2Z0d2FyZSBSLiBWZXJpZmlxdWUgc2kgbGEgdGFibGEgZGVsIEFOT1ZBIGNhbWJpYSk6IGVuIFI6IGxtKCkgPGRpdi8+DQoNCg0KYGBge3J9DQpncl8xID0gYyhOQSwgNS41NCwgNy42NywgNy44OSwgOS4yNywgNy41OTMpDQpncl8yID0gYyg2Ljc1LCAzLjUzLCA0LjE1LCAxLjk3LCA0LjM5LCA0LjE1OCkNCmdyXzMgPSBjKDEzLjA1LCAxMS4yMCwgOS43OSwgOC45NywgMTMuNDQsIDExLjI5MCkNCmdyXzQgPSBjKDEwLjI2LCA3LjIxLCA4LjI3LCA2LjEyLCA5LjEzLCA4LjE5OCkNCmdyXzUgPSBjKDguMDEsIDMuMjQsIDYuNzUsIDQuMjIsIDkuMjAsIDYuMjgwKQ0KZ3JfNiA9IGMoOC40MiwgNi40NSwgNS41MCwgNy44NCwgNy4xMywgNy4wNjgpDQptZXRvZG8gPSBjKCJNXzEiLCJNXzIiLCJNXzMiLCJNXzQiLCJNXzUiLCAibWVkaWFubm4iKQ0KZGF0YS5mcmFtZShtZXRvZG8sIGdyXzEsIGdyXzIsIGdyXzMsIGdyXzQsIGdyXzUsIGdyXzYpDQpgYGANCg0KYGBge3J9DQpwcCA9YyhOQSw2Ljc1LCAxMy4wNSwgMTAuMjYsICA4LjAxLCAgOC40MiwgIDUuNTQsICAzLjUzLCAxMS4yMCwgIDcuMjEsICAzLjI0LCAgNi40NSw3LjY3LCAgNC4xNSwgIDkuNzksICA4LjI3LCAgNi43NSwgIDUuNTAsICA3Ljg5LCAgMS45NywgIDguOTcsICA2LjEyLCAgNC4yMiwgIDcuODQsOS4yNywgIDQuMzksIDEzLjQ0LCAgOS4xMywgIDkuMjAsIDcuMTMpDQptZXRvZG8gPSBnbCg1LDYsMzAsIHBhc3RlMCgiTV8iLDE6NSkpOyBtZXRvZG8NCmdyYW5qZXJvID0gZ2woNiwxLDMwLCBwYXN0ZTAoImdfIiwxOjYpKTsgZ3Jhbmplcm8NCnRhYmxlKG1ldG9kbyxncmFuamVybykNCmBgYA0KDQoNCg0KPGRpdiBzdHlsZT0idGV4dC1hbGlnbjoganVzdGlmeSI+IDMuVXNlIGxhIGZ1bmNpb24gZGUgUiBwYXJhIGdlbmVyYXIgZGUgbGEgZGlzdHJpYnVjaW9uIHVuaWZvcm1lIHVub3MgZGF0b3MgZGUgY2FyYm9ubyBvcmdhbmljbyBkZWwgc3VlbG8gbWVkaWRhIGEgNSBjbSB5IDEwIGNtIGRlIHByb2Z1bmRpZGFkLiBTdXBvbmdhIHF1ZSBsYSBtZWRpZGEgZGUgbGEgY2FwYSBzdXBlcmlvciBvc2NpbG8gZW50cmUgMy4wIHkgNCB5IGRlIGxhIGNhcGEgaW5mZXJpb3Igb3NjaWxvIGVudHJlIDIgeSAyLjQuIFVzZSBleHBhbmQuZ3JpZCBwYXJhIGdlbmVyYXIgdW5hIHZlbnRhbmEgZGUgb2JzZXJ2YWNpb24gZGUgMCBhIDEwMCBtIHBhcmEgbGEgbG9uZ2l0dWQgeSBkZSAwIGEgMjAwIG0gcGFyYSBsYSBsYXRpdHVkLiBHZW5lcmUgNTAgZGF0b3MgZW4gY2FkYSBjYXBhLiBVc2UgbGEgZnVuY2lvbiBzb3J0LmludCBkZSBSIHBhcmEgb3JkZW5hciBsb3MgZGF0b3MgZGUgY2FkYSBjYXBhIGNvbiBsYSBvcGNpb24gcGFydGlhbD0yNStVIGRlbnRybyBkZSBsYSBwcm9waWEgZnVuY2lvbiBzb3J0LmludC4gVW5hIHZleiBjcmVlIGxvcyBkYXRvcyByZWFsaWNlIGFsZ3VuIGRpYWdyYW1hIGRlIGNvbG9yIChwcmVmZXJpYmxlbWVudGUgM0QpIHF1ZSBwZXJtaXRhIHZpc3VhbGl6YXIgbGFzIG1lZGlkYXMgZGUgY2FyYm9ubyBlbiBjYWRhIGNhcGEgZ2VuZXJhZGFzIHBvciBjb21wdXRhZG9yYS4gQ29tcGFyZSBzaSBzZSBlbmN1ZW50cmFuIGRpZmVyZW5jaWFzIGVuIGxhIG1lZGlhIGRlIGNhcmJvbm8gZW50cmUgY2FwYXMgdXRpbGl6YW5kbyB1biBuaXZlbCBkZSBjb25maWFuemEgZGVsIDk1JS4gPGRpdi8+DQoNCmBgYHtyfQ0Kc2V0LnNlZWQoNjI0KQ0KZGF0X2NhcDEgPSBjKHNvcnQuaW50KHJ1bmlmKG4gPSAxMCwgbWluID0gMywgbWF4ID0gNCkscGFydGlhbCA9IDM0KSkpICMgRGF0b3MgcGFyYSA1IGNtDQpkYXRfY2FwMiA9IHNvcnQuaW50KHJ1bmlmKG4gPSA1MCwgbWluID0gMiwgbWF4ID0gMi40KSxwYXJ0aWFsID0gMzQpICMgRGF0b3MgcGFyYSAxMGNtDQpDX2xvbmcgPSBzZXEoMCwxMDAsIGxlbmd0aC5vdXQ9MTAwKTtDX2xvbmcNCkNfbGF0ID0gc2VxKDAsMjAwLCBsZW5ndGgub3V0PTEwMCkNCmR6ID0gYyhkYXRfY2FwMSkNCmZ4ID0gZXhwYW5kLmdyaWQoYygwOjEwMCkpDQpmeSA9IGV4cGFuZC5ncmlkKGMoMDoyMDApKQ0KIA0KZGYgPSBkYXRhLmZyYW1lKGRhdF9jYXAxLGRhdF9jYXAyKTsgZGYNCg0KbW9kID0gbG0oZGF0X2NhcDF+Q19sb25nKQ0Kc3VtbWFyeShtb2QpDQoNCnBlcnNwKHggPSBzZXEoMCwgMjAwLCBsZW5ndGgub3V0ID0gbnJvdyh6KSksDQogICAgICB5ID0gc2VxKDAsIDEwMCwgbGVuZ3RoLm91dCA9IG5jb2woeikpLA0KICAgICAgeiA9IGRmKQ0KYGBgDQoNCiMjIyMjIDQuIEVsIHNpZ3VpZW50ZSBkaXNlbm8gc2UgY29ycmVzcG9uZGUgY29uIHVuIGZhY3RvcmlhbCBjb21wbGV0byAoMyAyICkgZW4gYXJyZWdsbyBjb21wbGV0YW1lbnRlIGFsIGF6YXIuIExvcyBmYWN0b3JlcyB5IGxhIHJlc3B1ZXN0YSBmdWVyb24gY3JlYWRvcyBjb24gZWwgY29kaWdvOg0KDQoNCmBgYHtyfQ0KRCA9IGV4cGFuZC5ncmlkKEYxID0gYygzLjI1LCAzLjc1LCA0LjI1KSwgRjIgPSBjKDQsIDUsIDYpKSAjIENyZWEgZWwgZGlzZW5vIDNeMg0KRCA8LSByYmluZChELCBEKSAjIENyZWEgbGEgZXN0cnVjdHVyYSBwYXJhIGRvcyByZXBldGljaW9uZXMgcG9yIHRyYXRhbWllbnRvDQpzZXQuc2VlZCgyMDIwKQ0KRCA8LSBEW29yZGVyKHNhbXBsZSgxOjE4KSksIF0gI0FsZWF0b3JpemEgbGEgZXN0cnVjdHVyYQ0KY2xhc3MoRCkNCkQkYmlvbWFzYSA8LSBzb3J0LmludChybm9ybSgxOCwgMywgMC4zKSwgcGFydGlhbCA9IDkpICMgQ3JlYSBsYSByZXNwdWVzdGENCmBgYA0KIyMjIyMgOC4gUmVhbGljZSB1biByZXN1bWVuIGNvbiBsYSBub3RhIHF1ZSBhcGFyZWNlIGVuIGxhcyBzaWd1aWVudGVzIGRpcmVjY2lvbmVzIHNvYnJlOg0KRWwgdXNvIGRlIGxvcyBkaXNlbm9zIGVuIHBhcmNlbGFzIGRpdmlkaWRhczoNCg0KTG9zIGRpc2Vub3MgZGUgcGFyY2VsYSBkaXZpZGlkYSBzb24gdXRpbGVzIHBhcmEgZGVzYXJyb2xsYXIgZXhwZXJpbWVudG9zIGVuIGRvbmRlIHBvciBsbyBtZW5vcyBoYXkgdW4gZmFjdG9yIHF1ZSBlcyBtdXkgZGlmaWNpbCBkZSBhbGVhdG9yaXphciBjb21wbGV0YW1lbnRlLCB5IHVuIGZhY3RvciBxdWUgbm8gbG8gZXMuIEVzdG8gc2Ugc29sdWNpb25hbiBhbGVhdG9yaXphbmRvIGNvbiBtZW5vciBmcmVjdWVuY2lhIGxvcyBmYWN0b3JlcyBkZSBwYXJjZWxhIGNvbXBsZXRhLiBBZGVtYXMsIGVuIGFsZ3VuYXMgb2Nhc2lvbmVzLCBsb3MgZmFjdG9yZXMgZGUgcGFyY2VsYSBjb21wbGV0YSBnZW5lcmFuIGNvc3RvcyBlbGV2YWRvcyBkZSBkaW5lcm8geSB0aWVtcG8gcXVlIHNlIHB1ZWRlbiByZWR1Y2lyIGhhY2llbmRvIHVuIGJ1ZW4gdXNvIGRlbCBkaXNlbm8gZGUgcGFyY2VsYXMgZGl2aWRpZGFzLiANCkVzIG5lY2VzYXJpbyBzYWJlciBpZGVudGlmaWNhciBjdWFuZG8gc2UgZGViZSB1c2FyIGVzdGUgdGlwbyBkZSBkaXNlbm8sIHBhcmEgbm8gY29tZXRlciBlbCBlcnJvciBkZSBjb25mdW5kaXIgZW50cmUgdW4gZXhwZXJpbWVudG8geSBvdHJvLiBBc2ltaXNtbywgZXMgdXRpbCB5YSBxdWUgcHJvcG9yY2lvbmEgbGEgbWF5b3IgY2FudGlkYWQgZGUgZGF0b3MgcXVlIHB1ZWRlIGJyaW5kYXIgZWwgZXhwZXJpbWVudG8gcGFyYSBwb2RlciB0b21hciB1bmEgZGVjaXNpb24gY29uIGJhc2UgZW4gZGF0b3MgZXN0YWRpc3RpY29zLCBsbyBjdWFsIHJlc3VsdGEgbXV5IGNvbnZlbmllbnRlLiANCg0KDQpTb2JyZSBsbyBxdWUgc2lnbmlmaWNhIHVuaWRhZCBleHBlcmltZW50YWwgeSB1bmlkYWQgZGUgb2JzZXJ2YWNpb24NClVuaWRhZCBleHBlcmltZW50YWw6IA0KDQpFc3RydWN0dXJhIG1hcyBzaW1wbGUgcXVlIHNlIGxlIGF0cmlidXllIGEgdW4gdHJhdGFtaWVudG8gZXNwZWNpZmljbywgY2FkYSBlc3RydWN0dXJhIGVzIGluZGVwZW5kaWVudGUgZGUgbGEgb3RyYS4gU2luIGVtYmFyZ28sIGNhZGEgdW5hIGRlIGVsbGFzIG5vIGVzIG11eSBkaWZlcmVudGUgZGVsIHJlc3RvLCBsbyBxdWUgZmFjaWxpdGEgbGEgZWplY3VjaW9uIGRlbCBlc3R1ZGlvLiANClVuaWRhZCBkZSBvYnNlcnZhY2lvbjogRWxlbWVudG8gZmlzaWNvIGVuIGVsIGN1YWwgc2UgbWlkZW4gbGFzIGNvbnNlY3VlbmNpYXMgcmVsZXZhbnRlcyBkZSB1biBleHBlcmltZW50by4gDQpMYXMgZG9zIGRlZmluaWNpb25lcyBwb2RyaWFuIGF0cmlidWlyc2UgYSBsYSBtaXNtYSBlbnRpZGFkIHBlcm8gZXNvIGRlcGVuZGUgZGUgcXVlIHRhbnRhIGRpZmljdWx0YWQgdGVuZ2EgZWwgZXhwZXJpbWVudG8uIE5vIHJlY29ub2NlciBsYXMgZG9zIHBvciBzZXBhcmFkbyBlbiB1biBleHBlcmltZW50byBlbiBkb25kZSBzaSBzZSByZXF1aWVyYSwgcHVlZGUgbGxldmFyIGEgYXVtZW50YXIgZWwgZXJyb3IsIGxvIHF1ZSBjb25sbGV2YSBhIHJlZHVjaXIgZWwgY3VhZHJhZG8gbWVkaW8gZGVsIGVycm9yIHkgY29uIGVzdG8sIGRldGVybWluYXIgdW4gRnZhbHVlIGluY29ycmVjdG8uIEEgZXN0byBzZSBsZSBsbGFtYSBwc2V1ZG8tcmVwbGljYWNpb24uDQoNCkd1aWEgcGFyYSBkaXNlbmFyIGV4cGVyaW1lbnRvcyBleGl0b3NvczoNCg0KQSBsYSBob3JhIGRlIGVzdHJ1Y3R1cmFyIHVuIGV4cGVyaW1ldG8gZXMgaW5kaXNwZW5zYWJsZSBzYWJlciBpZGVudGlmaWNhciBhIHF1ZSB0aXBvIGRlIGRpc2VubyBzZSBlbmZyZW50YSwgYXNpbWlzbW8gdGVuZXIgZW4gY3VlbnRhIGxvcyA0IHBpbGFyZXMgYmFzZSBkZWwgZGlzZW5vIGV4cGVyaW1lbnRhbCB5IG5vIHN1YmVzdGltYXJsb3MgcG9yIGVsIHNpbXBsZSBoZWNobyBkZSBxdWUgeWEgc2UgaGEgcmVhbGl6YWRvIHVuIGRpc2VubyBhbnRlcmlvcm1lbnRlLiBFbCBkaWFncmFtYSBkZSBleHBlcmltZW50YWNpb24gY2llbnRpZmljYSBlcyB1bmEgaGVycmFtaWVudGEgdXRpbCBwYXJhIGVzdHJ1Y3R1cmFyIHkgY29tcHJlbmRlciBtZWpvciBlbCBwcm9ibGVtYS4gU2UgZGViZSB0ZW5lciBwcmVzZW50ZSBjYWRhIHBhc28gYSBzZWd1aXIsIHBhcmEgYXNpIG9idGVuZXIgdW5hIHNvbHVjaW9uIG8gdW4gZGVzYXJyb2xsbyBhbCBwcm9ibGVtYSBpbmljaWFsIGEgdHJhdmVzIGRlIG1ldG9kb3MgZXN0YWRpc3RpY29zLg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiANCiA=