1 Cosas a tener en cuenta para analizar los datos:

  1. Analizar la precipitacion acumulada por estacion durante 3 años (analizar si hay rangos)
  2. Tomar wmo mas cercana y calcular la precipitacion media anual y mirar la estacion del DACC
  3. Comparar las precipitaciones con respecto CMORPH
  4. Respecto a la temperatura: verificar si observamos la variacion diaria.
  5. Comparar vientos con los archivos de Zonda de Ruben.

1.1 Conclusiones:

  1. Si bien hay 20 años de mediciones. No todas las 33 estaciones tienen mediciones desde 1998.
  2. Existen algunas estaciones que no tienen ninguna medicion (Caso Vistalba)
  3. No existe una frecuencia predefinida para realizar las mediciones, si bien la frecuencia horaria parece ser la mas comun (Ver seccion 1.3)
  4. La estacion 16 ubicada en Lavalle es la mas cercana al plumerillo. (Ver 1.6 y 1.7) Tiene mediciones desde 2006 (Ver 1.4). Los datos parecen estar bastante completos. Aunque las mediciones se realizan con una frecuencia mayor a una hora.

1.2 Analizar la completitud de los años (sobre el total de los registros por año)

La figura muestra el porcentaje de entradas con mediciones sobre las precipitaciones por año. Siendo el valor esperado = 356*24. Se asume que se toma una medicion por hora.

1.2.1 Cantidad de años con mediciones en cada estacion.

1.3 Porcentaje de mediciones de precipitaciones cada una hora por estacion y por año.

Es decir, asumiendo mediciones cada una hora. Que porcentaje de mediciones se realizaron para cada una de las 24hs (de acerudo alos años de mediciones de cada estacion)

1.4 Calcular la distribución de las precipitaciones accu a lo largo de los meses para una estacion en particular (estacion numero 16, Las violetas, Lavalle)

1.4.1 Calcular la distribución de las precipitaciones accu anual

se separan los resultados para las estaciones 13 y 17 por contener anos con valores muy por arriba de los 200mm. (cerca de 30000mm!!!!) en algunos años. Por ejemplo la estacion 17 tiene esos valores en 2010 y 2014.

1.5 Calcular el Porcentaje de entradas con registros de precipitaciones validos sobre el total de entradas

DAAC_tbl %>% group_by(estacion) %>% summarise(entradas_precip=sum(!is.na(precipitacion)),entradas=n(),percent=entradas_precip/entradas)
ggplot(DAAC_tbl %>% group_by(estacion) %>% summarise(entradas_precip=sum(!is.na(precipitacion)),entradas=n(),percent=entradas_precip/entradas))+
  geom_col(aes(x=estacion,y=percent),fill='skyblue')+
  theme_bw()

library(lubridate)

DAAC_tbl %>% filter(year(fecha)==2017) %>% select(fecha,precipitacion) %>% group_by(yday(fecha)) %>% summarise(precip_acum=sum(precipitacion))
DAAC_tbl %>% filter(year(fecha)==2017 & is.na(precipitacion))  %>% select(fecha,estacion,precipitacion)  %>% group_by(yday(fecha),estacion) %>% summarise(precip_acum=sum(precipitacion,na.rm = T))

precipitacion_2017<-DAAC_tbl %>% filter(year(fecha)==2017 )  %>% select(fecha,estacion,precipitacion)  %>% group_by(year(fecha),estacion) %>% summarise(precip_acum=sum(precipitacion,na.rm = T)) %>% select(estacion,precip_acum)
precipitacion_2017<-inner_join(DAAC_estaciones_tbl,precipitacion_2017,by=c('Estacion'='estacion')) %>% select(Estacion,lat,lng,precip_acum)
precipitacion_2017

1.6 Presentar las Estaciones geolocalizadas: El plumerillo WMO en azul. En rojo las del DAAC

Se incluye la precipitacion acumulada promedio, salvo para el caso de la estacion 13 (Jocoli) y la 17 por tener casos muy por arriba de los 200mm

1.7 Determinar la ubicacion de la estacion mas cercana al plumerillo.

#Calculating membership using the seccion information
coord_estaciones=as.matrix(cbind(DAAC_estaciones_tbl$lng,DAAC_estaciones_tbl$lat))
coord_plumerillo=c(-68.7715,-32.8331)
distances=spDistsN1(coord_estaciones,coord_plumerillo,longlat=T)
coord_estaciones<-cbind(coord_estaciones,estacion=DAAC_estaciones_tbl$Estacion,distances)

La estacion numero 34, es la mas cercana. Sin embargo no tiene datos validos. Por lo que se debe usar la segunda mas cercana que es la numero 16. Ubicada en Lavalle.

LS0tCnRpdGxlOiAiREFDQyBkYXRhIgpvdXRwdXQ6IAogIGh0bWxfbm90ZWJvb2s6IAogICAgY29kZV9mb2xkaW5nOiBoaWRlCiAgICBudW1iZXJfc2VjdGlvbnM6IHllcwotLS0KCgojIENvc2FzIGEgdGVuZXIgZW4gY3VlbnRhIHBhcmEgYW5hbGl6YXIgbG9zIGRhdG9zOgogIAogIDIuIEFuYWxpemFyIGxhIHByZWNpcGl0YWNpb24gYWN1bXVsYWRhIHBvciBlc3RhY2lvbiBkdXJhbnRlIDMgYcOxb3MgKGFuYWxpemFyIHNpIGhheSByYW5nb3MpCiAgMy4gVG9tYXIgd21vIG1hcyBjZXJjYW5hIHkgY2FsY3VsYXIgbGEgcHJlY2lwaXRhY2lvbiBtZWRpYSBhbnVhbCB5IG1pcmFyIGxhIGVzdGFjaW9uIGRlbCBEQUNDCiAgNC4gQ29tcGFyYXIgbGFzIHByZWNpcGl0YWNpb25lcyBjb24gcmVzcGVjdG8gQ01PUlBIIAogIDUuIFJlc3BlY3RvIGEgbGEgdGVtcGVyYXR1cmE6IHZlcmlmaWNhciBzaSBvYnNlcnZhbW9zIGxhIHZhcmlhY2lvbiBkaWFyaWEuCiAgNi4gQ29tcGFyYXIgdmllbnRvcyBjb24gIGxvcyBhcmNoaXZvcyBkZSBab25kYSBkZSBSdWJlbi4KCiMjIENvbmNsdXNpb25lczoKMS4gU2kgYmllbiBoYXkgMjAgYcOxb3MgZGUgbWVkaWNpb25lcy4gTm8gdG9kYXMgbGFzIDMzIGVzdGFjaW9uZXMgdGllbmVuIG1lZGljaW9uZXMgZGVzZGUgMTk5OC4KMi4gRXhpc3RlbiBhbGd1bmFzIGVzdGFjaW9uZXMgcXVlIG5vIHRpZW5lbiBuaW5ndW5hIG1lZGljaW9uIChDYXNvIFZpc3RhbGJhKQozLiBObyBleGlzdGUgdW5hIGZyZWN1ZW5jaWEgcHJlZGVmaW5pZGEgcGFyYSByZWFsaXphciBsYXMgbWVkaWNpb25lcywgc2kgYmllbiBsYSBmcmVjdWVuY2lhIGhvcmFyaWEgcGFyZWNlIHNlciBsYSBtYXMgY29tdW4gKFZlciBzZWNjaW9uIDEuMykKNC4gTGEgZXN0YWNpb24gMTYgdWJpY2FkYSBlbiBMYXZhbGxlIGVzIGxhIG1hcyBjZXJjYW5hIGFsIHBsdW1lcmlsbG8uIChWZXIgMS42IHkgMS43KSBUaWVuZSBtZWRpY2lvbmVzIGRlc2RlIDIwMDYgKFZlciAxLjQpLiBMb3MgZGF0b3MgcGFyZWNlbiBlc3RhciBiYXN0YW50ZSBjb21wbGV0b3MuIEF1bnF1ZSBsYXMgbWVkaWNpb25lcyBzZSByZWFsaXphbiBjb24gdW5hIGZyZWN1ZW5jaWEgbWF5b3IgYSB1bmEgaG9yYS4KCmBgYHtyfQpEQUFDX3RibDwtcmVhZF9kZWxpbSgnfi9Ecm9wYm94L29uZ29pbmctd29yay9tZXRlby9kYXRhL0RhdG9zLURBQ0MuY3N2LTIwMTcxMjE5Lmd6JyxkZWxpbT0nOycpCkRBQUNfZXN0YWNpb25lc190Ymw8LXJlYWRfZGVsaW0oJ34vRHJvcGJveC9vbmdvaW5nLXdvcmsvbWV0ZW8vZGF0YS9EYXRvcy1EQUNDLWVzdGFjaW9uZXMuY3N2JyxkZWxpbT0nOycpCkRBQUNfZXN0YWNpb25lc190YmwgJT4lIGFycmFuZ2UoRXN0YWNpb24pCkRBQUNfdGJsICU+JSBmaWx0ZXIoZXN0YWNpb249PTUgJiB5ZWFyKGZlY2hhKT09MjAwOSkKYGBgCiMjIEFuYWxpemFyIGxhIGNvbXBsZXRpdHVkIGRlIGxvcyBhw7FvcyAoc29icmUgZWwgdG90YWwgZGUgbG9zIHJlZ2lzdHJvcyBwb3IgYcOxbykKTGEgZmlndXJhIG11ZXN0cmEgZWwgcG9yY2VudGFqZSBkZSBlbnRyYWRhcyBjb24gbWVkaWNpb25lcyBzb2JyZSBsYXMgcHJlY2lwaXRhY2lvbmVzIHBvciBhw7FvLiBTaWVuZG8gZWwgdmFsb3IgZXNwZXJhZG8gPSAzNTYqMjQuIFNlIGFzdW1lIHF1ZSBzZSB0b21hIHVuYSBtZWRpY2lvbiBwb3IgaG9yYS4KCmBgYHtyIGZpZy5oZWlnaHQ9OCwgZmlnLndpZHRoPTEyfQoKREFBQ19kYXRhX2NvbXA8LURBQUNfdGJsICU+JSBtdXRhdGUoeWVhcj15ZWFyKGZlY2hhKSkgJT4lIGdyb3VwX2J5KGVzdGFjaW9uLHllYXIpICU+JSBzdW1tYXJpc2UoZW50cmFkYXM9bigpLGVudHJhZGFzX3ByZWNpcD1zdW0oIWlzLm5hKHByZWNpcGl0YWNpb24pKSxwZXJjZW50PWVudHJhZGFzX3ByZWNpcC8oMzY2KjI0KSkgCgpEQUFDX2RhdGFfY29tcCAlPiUgZmlsdGVyKHBlcmNlbnQ+MS4zKQoKZ2dwbG90KERBQUNfZGF0YV9jb21wKSsKICBnZW9tX2NvbChhZXMoeD15ZWFyLHk9cGVyY2VudCksZmlsbD0nc2t5Ymx1ZScpKwogIGZhY2V0X3dyYXAofmVzdGFjaW9uKSsKICB0aGVtZV9idygpKwogIHRoZW1lKGF4aXMudGV4dC54ID0gZWxlbWVudF90ZXh0KGFuZ2xlID0gNDUsIGhqdXN0ID0gMSkpCgpgYGAKIyMjIENhbnRpZGFkIGRlIGHDsW9zIGNvbiBtZWRpY2lvbmVzIGVuIGNhZGEgZXN0YWNpb24uCmBgYHtyfQpEQUFDX3llYXJfYnlfc3RhdGlvbnM8LURBQUNfdGJsICU+JSBtdXRhdGUoeWVhcj15ZWFyKGZlY2hhKSkgJT4lIGdyb3VwX2J5KGVzdGFjaW9uLHllYXIpICU+JSBzdW1tYXJpc2UoZW50cmFkYXM9bigpKSAlPiUgZ3JvdXBfYnkoZXN0YWNpb24pICU+JSBzdW1tYXJpc2UoeWVhcnM9bigpKQpnZ3Bsb3QoREFBQ195ZWFyX2J5X3N0YXRpb25zKSsKICAgIGdlb21fY29sKGFlcyh4PWFzLmZhY3Rvcihlc3RhY2lvbikseT15ZWFycyxmaWxsPWFzLmZhY3Rvcihlc3RhY2lvbikpKSsKICAgIHRoZW1lX2J3KCkrCiAgdGhlbWUobGVnZW5kLnBvc2l0aW9uPSJub25lIikKYGBgCgoKIyMgUG9yY2VudGFqZSBkZSBtZWRpY2lvbmVzIGRlIHByZWNpcGl0YWNpb25lcyBjYWRhIHVuYSBob3JhIHBvciBlc3RhY2lvbiB5IHBvciBhw7FvLgpFcyBkZWNpciwgYXN1bWllbmRvIG1lZGljaW9uZXMgY2FkYSB1bmEgaG9yYS4gUXVlIHBvcmNlbnRhamUgZGUgbWVkaWNpb25lcyBzZSByZWFsaXphcm9uIHBhcmEgY2FkYSB1bmEgZGUgbGFzIDI0aHMgKGRlIGFjZXJ1ZG8gYWxvcyAgYcOxb3MgZGUgbWVkaWNpb25lcyBkZSBjYWRhIGVzdGFjaW9uKQoKCmBgYHtyIGZpZy5oZWlnaHQ9OCwgZmlnLndpZHRoPTEyfQpEQUFDX2RhdGFfY29tcF9ob3VyPC1EQUFDX3RibCAlPiUgbXV0YXRlKGhvdXI9aG91cihmZWNoYSkpICU+JSBncm91cF9ieShlc3RhY2lvbixob3VyKSAlPiUgc3VtbWFyaXNlKGVudHJhZGFzPW4oKSxlbnRyYWRhc19wcmVjaXA9c3VtKCFpcy5uYShwcmVjaXBpdGFjaW9uKSkpIAoKREFBQ19kYXRhX2NvbXBfaG91cjwtREFBQ19kYXRhX2NvbXBfaG91ciAlPiUgaW5uZXJfam9pbihEQUFDX3llYXJfYnlfc3RhdGlvbnMsYnk9J2VzdGFjaW9uJykgJT4lIG11dGF0ZShwZXJjZW50PWVudHJhZGFzX3ByZWNpcC8oMzY2KnllYXJzKSkgCgoKZ2dwbG90KERBQUNfZGF0YV9jb21wX2hvdXIpKwogIGdlb21fY29sKGFlcyh4PWhvdXIseT1wZXJjZW50KSxmaWxsPSdza3libHVlJykrCiAgZmFjZXRfd3JhcCh+ZXN0YWNpb24pKwogIHRoZW1lX2J3KCkrCiAgdGhlbWUoYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoYW5nbGUgPSA0NSwgaGp1c3QgPSAxKSkKCkRBQUNfdGJsJT4lIGZpbHRlcihlc3RhY2lvbj09NykKREFBQ190YmwgJT4lIG11dGF0ZShob3VyPWhvdXIoZmVjaGEpKSAlPiUgZ3JvdXBfYnkoZXN0YWNpb24saG91cikgJT4lIHN1bW1hcmlzZShlbnRyYWRhcz1uKCkpCkRBQUNfdGJsICU+JSBtdXRhdGUoaG91cj1ob3VyKGZlY2hhKSkgJT4lIGdyb3VwX2J5KGVzdGFjaW9uLGhvdXIpICU+JSBzdW1tYXJpc2UoZW50cmFkYXM9bigpLGVudHJhZGFzX3ByZWNpcD1zdW0oIWlzLm5hKHByZWNpcGl0YWNpb24pKSxwZXJjZW50PWVudHJhZGFzX3ByZWNpcC8oMzY2KjI0KSkgJT4lIGZpbHRlcihlc3RhY2lvbj09NykKMzY2KjI0CmBgYAoKIyMgQ2FsY3VsYXIgbGEgZGlzdHJpYnVjacOzbiBkZSBsYXMgcHJlY2lwaXRhY2lvbmVzIGFjY3UgYSBsbyBsYXJnbyBkZSBsb3MgbWVzZXMgcGFyYSB1bmEgZXN0YWNpb24gZW4gcGFydGljdWxhciAoZXN0YWNpb24gbnVtZXJvIDE2LCBMYXMgdmlvbGV0YXMsIExhdmFsbGUpCgpgYGB7ciBmaWcud2lkdGg9MTR9CmdncGxvdChEQUFDX3RibCAlPiUgZmlsdGVyKGVzdGFjaW9uPT0xNiAmICFpcy5uYShmZWNoYSkpICU+JSBtdXRhdGUoeWVhcj15ZWFyKGZlY2hhKSwgbW9udGg9YXMuZmFjdG9yKG1vbnRoKGZlY2hhKSkpICU+JSBncm91cF9ieSh5ZWFyLG1vbnRoKSAlPiUgc3VtbWFyaXNlKHByZWNpcF9hY3U9c3VtKHByZWNpcGl0YWNpb24sbmEucm09VFJVRSkpKSsKICBnZW9tX2NvbChhZXMoeD1hcy5mYWN0b3IobW9udGgpLHk9cHJlY2lwX2FjdSksZmlsbD0nc2t5Ymx1ZScpKwogIGZhY2V0X3dyYXAofnllYXIpKwogIHRoZW1lX2J3KCkKCgoKYGBgCiMjIyBDYWxjdWxhciBsYSBkaXN0cmlidWNpw7NuIGRlIGxhcyBwcmVjaXBpdGFjaW9uZXMgYWNjdSBhbnVhbApzZSBzZXBhcmFuIGxvcyByZXN1bHRhZG9zIHBhcmEgbGFzIGVzdGFjaW9uZXMgMTMgeSAxNyBwb3IgY29udGVuZXIgYW5vcyBjb24gdmFsb3JlcyBtdXkgcG9yIGFycmliYSBkZSBsb3MgMjAwbW0uIChjZXJjYSBkZSAzMDAwMG1tISEhISkgZW4gYWxndW5vcyBhw7Fvcy4gUG9yIGVqZW1wbG8gbGEgZXN0YWNpb24gMTcgdGllbmUgZXNvcyB2YWxvcmVzIGVuIDIwMTAgeSAyMDE0LgpgYGB7cn0KcHJlY2lwX2FjdW1fZXN0YWNpb248LURBQUNfdGJsICU+JSBmaWx0ZXIgKCFpcy5uYShmZWNoYSkpICU+JSBncm91cF9ieShlc3RhY2lvbix5ZWFyKGZlY2hhKSkgJT4lIHN1bW1hcmlzZShwcmVjaXBfYWN1bT1zdW0ocHJlY2lwaXRhY2lvbixuYS5ybSA9IFQpKQoKYWNjdV9hbnVhbDwtZ2dwbG90KHByZWNpcF9hY3VtX2VzdGFjaW9uICU+JSBpbm5lcl9qb2luKERBQUNfZXN0YWNpb25lc190YmwsYnk9YygnZXN0YWNpb24nPSdFc3RhY2lvbicpKSAlPiVmaWx0ZXIoZXN0YWNpb24hPTEzICYgZXN0YWNpb24gIT0xNykpKwogIGdlb21fYm94cGxvdChhZXMoeD1EZXBhcnRhbWVudG8seT1wcmVjaXBfYWN1bSxjb2xvcj1hcy5mYWN0b3IoRGVwYXJ0YW1lbnRvKSkpKwogIHRoZW1lX2J3KCkrCiAgdGhlbWUobGVnZW5kLnBvc2l0aW9uPSJub25lIikrCiAgdGhlbWUoYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoYW5nbGUgPSA0NSwgaGp1c3QgPSAxKSkKCmFjY3VfYW51YWwyPC1nZ3Bsb3QocHJlY2lwX2FjdW1fZXN0YWNpb24gJT4lIGlubmVyX2pvaW4oREFBQ19lc3RhY2lvbmVzX3RibCxieT1jKCdlc3RhY2lvbic9J0VzdGFjaW9uJykpICU+JWZpbHRlcihlc3RhY2lvbj09MTMgfCBlc3RhY2lvbiA9PTE3KSkrCiAgZ2VvbV9ib3hwbG90KGFlcyh4PURlcGFydGFtZW50byx5PXByZWNpcF9hY3VtLGNvbG9yPWFzLmZhY3RvcihEZXBhcnRhbWVudG8pKSkrCiAgdGhlbWVfYncoKSsKICB0aGVtZShsZWdlbmQucG9zaXRpb249Im5vbmUiKSsKICB0aGVtZShheGlzLnRleHQueCA9IGVsZW1lbnRfdGV4dChhbmdsZSA9IDQ1LCBoanVzdCA9IDEpKQoKZ3JpZEV4dHJhOjpncmlkLmFycmFuZ2UoYWNjdV9hbnVhbCxhY2N1X2FudWFsMikKYGBgCgojIyBDYWxjdWxhciBlbCAgUG9yY2VudGFqZSBkZSBlbnRyYWRhcyBjb24gcmVnaXN0cm9zIGRlIHByZWNpcGl0YWNpb25lcyB2YWxpZG9zIHNvYnJlIGVsIHRvdGFsIGRlIGVudHJhZGFzCgpgYGB7cn0KREFBQ190YmwgJT4lIGdyb3VwX2J5KGVzdGFjaW9uKSAlPiUgc3VtbWFyaXNlKGVudHJhZGFzX3ByZWNpcD1zdW0oIWlzLm5hKHByZWNpcGl0YWNpb24pKSxlbnRyYWRhcz1uKCkscGVyY2VudD1lbnRyYWRhc19wcmVjaXAvZW50cmFkYXMpCmdncGxvdChEQUFDX3RibCAlPiUgZ3JvdXBfYnkoZXN0YWNpb24pICU+JSBzdW1tYXJpc2UoZW50cmFkYXNfcHJlY2lwPXN1bSghaXMubmEocHJlY2lwaXRhY2lvbikpLGVudHJhZGFzPW4oKSxwZXJjZW50PWVudHJhZGFzX3ByZWNpcC9lbnRyYWRhcykpKwogIGdlb21fY29sKGFlcyh4PWVzdGFjaW9uLHk9cGVyY2VudCksZmlsbD0nc2t5Ymx1ZScpKwogIHRoZW1lX2J3KCkKCgpgYGAKYGBge3J9CmxpYnJhcnkobHVicmlkYXRlKQoKREFBQ190YmwgJT4lIGZpbHRlcih5ZWFyKGZlY2hhKT09MjAxNykgJT4lIHNlbGVjdChmZWNoYSxwcmVjaXBpdGFjaW9uKSAlPiUgZ3JvdXBfYnkoeWRheShmZWNoYSkpICU+JSBzdW1tYXJpc2UocHJlY2lwX2FjdW09c3VtKHByZWNpcGl0YWNpb24pKQpEQUFDX3RibCAlPiUgZmlsdGVyKHllYXIoZmVjaGEpPT0yMDE3ICYgaXMubmEocHJlY2lwaXRhY2lvbikpICAlPiUgc2VsZWN0KGZlY2hhLGVzdGFjaW9uLHByZWNpcGl0YWNpb24pICAlPiUgZ3JvdXBfYnkoeWRheShmZWNoYSksZXN0YWNpb24pICU+JSBzdW1tYXJpc2UocHJlY2lwX2FjdW09c3VtKHByZWNpcGl0YWNpb24sbmEucm0gPSBUKSkKCnByZWNpcGl0YWNpb25fMjAxNzwtREFBQ190YmwgJT4lIGZpbHRlcih5ZWFyKGZlY2hhKT09MjAxNyApICAlPiUgc2VsZWN0KGZlY2hhLGVzdGFjaW9uLHByZWNpcGl0YWNpb24pICAlPiUgZ3JvdXBfYnkoeWVhcihmZWNoYSksZXN0YWNpb24pICU+JSBzdW1tYXJpc2UocHJlY2lwX2FjdW09c3VtKHByZWNpcGl0YWNpb24sbmEucm0gPSBUKSkgJT4lIHNlbGVjdChlc3RhY2lvbixwcmVjaXBfYWN1bSkKcHJlY2lwaXRhY2lvbl8yMDE3PC1pbm5lcl9qb2luKERBQUNfZXN0YWNpb25lc190YmwscHJlY2lwaXRhY2lvbl8yMDE3LGJ5PWMoJ0VzdGFjaW9uJz0nZXN0YWNpb24nKSkgJT4lIHNlbGVjdChFc3RhY2lvbixsYXQsbG5nLHByZWNpcF9hY3VtKQpwcmVjaXBpdGFjaW9uXzIwMTcKYGBgCgojIyBQcmVzZW50YXIgbGFzIEVzdGFjaW9uZXMgZ2VvbG9jYWxpemFkYXM6IEVsIHBsdW1lcmlsbG8gV01PIGVuIGF6dWwuIEVuIHJvam8gbGFzIGRlbCBEQUFDClNlIGluY2x1eWUgbGEgcHJlY2lwaXRhY2lvbiBhY3VtdWxhZGEgcHJvbWVkaW8sIHNhbHZvIHBhcmEgZWwgY2FzbyBkZSBsYSBlc3RhY2lvbiAxMyAoSm9jb2xpKSB5IGxhIDE3IHBvciB0ZW5lciBjYXNvcyBtdXkgcG9yIGFycmliYSBkZSBsb3MgMjAwbW0KCmBgYHtyIGZpZy5oZWlnaHQ9OH0KCmxpYnJhcnkoZ2dtYXApCmxpYnJhcnkoc3ApCm16YV9tYXAgPC0gZ2V0X21hcChsb2NhdGlvbiA9ICJtZW5kb3phIiwgem9vbSA9IDksbWFwdHlwZSA9ICJyb2FkbWFwIixjb2xvciA9ICJidyIpCnByZWNpcF9hY3VtX2VzdGFjaW9uX2F2ZzwtREFBQ190YmwgJT4lIGZpbHRlciAoIWlzLm5hKGZlY2hhKSkgJT4lIGdyb3VwX2J5KGVzdGFjaW9uLHllYXIoZmVjaGEpKSAlPiUgc3VtbWFyaXNlKHByZWNpcF9hY3VtPXN1bShwcmVjaXBpdGFjaW9uLG5hLnJtID0gVCkpCgoKZ2c8LWdnbWFwKG16YV9tYXApKyAKICAgZ2VvbV9wb2ludChhZXMoeD1sbmcseT1sYXQsc2l6ZT1wcmVjaXBfYWN1bV9hdmcpLGRhdGE9cHJlY2lwX2FjdW1fZXN0YWNpb25fYXZnICU+JSBncm91cF9ieShlc3RhY2lvbikgJT4lIHN1bW1hcmlzZShwcmVjaXBfYWN1bV9hdmc9bWVhbihwcmVjaXBfYWN1bSkpICU+JSBpbm5lcl9qb2luKERBQUNfZXN0YWNpb25lc190YmwsYnk9YygnZXN0YWNpb24nPSdFc3RhY2lvbicpKSAlPiUgZmlsdGVyKGVzdGFjaW9uIT0xMyAmIGVzdGFjaW9uICE9MTcpLGNvbG9yPSdyZWQnKSsKICAgZ2VvbV9wb2ludCh5PS0zMi44MzMxLHg9LTY4Ljc3MTUsc2l6ZT0zLGNvbG9yPSdibHVlJykKZ2cKCmBgYAoKIyMgRGV0ZXJtaW5hciBsYSB1YmljYWNpb24gZGUgbGEgZXN0YWNpb24gbWFzIGNlcmNhbmEgYWwgcGx1bWVyaWxsby4KCmBgYHtyfQojQ2FsY3VsYXRpbmcgbWVtYmVyc2hpcCB1c2luZyB0aGUgc2VjY2lvbiBpbmZvcm1hdGlvbgpjb29yZF9lc3RhY2lvbmVzPWFzLm1hdHJpeChjYmluZChEQUFDX2VzdGFjaW9uZXNfdGJsJGxuZyxEQUFDX2VzdGFjaW9uZXNfdGJsJGxhdCkpCmNvb3JkX3BsdW1lcmlsbG89YygtNjguNzcxNSwtMzIuODMzMSkKZGlzdGFuY2VzPXNwRGlzdHNOMShjb29yZF9lc3RhY2lvbmVzLGNvb3JkX3BsdW1lcmlsbG8sbG9uZ2xhdD1UKQpjb29yZF9lc3RhY2lvbmVzPC1jYmluZChjb29yZF9lc3RhY2lvbmVzLGVzdGFjaW9uPURBQUNfZXN0YWNpb25lc190YmwkRXN0YWNpb24sZGlzdGFuY2VzKQoKCgpgYGAKTGEgZXN0YWNpb24gbnVtZXJvICBgciAoYXMuZGF0YS5mcmFtZShjb29yZF9lc3RhY2lvbmVzKSAlPiUgYXJyYW5nZShkaXN0YW5jZXMpICU+JSBoZWFkKDEpKSRlc3RhY2lvbmAsIGVzIGxhIG1hcyBjZXJjYW5hLiBTaW4gZW1iYXJnbyBubyB0aWVuZSBkYXRvcyB2YWxpZG9zLiBQb3IgbG8gcXVlIHNlIGRlYmUgdXNhciBsYSBzZWd1bmRhIG1hcyBjZXJjYW5hIHF1ZSBlcyBsYSBudW1lcm8gMTYuIFViaWNhZGEgZW4gTGF2YWxsZS4KCg==