Trabajo elaborado para la asignatura “Programación y manejo de datos en la era del Big Data” de la Universitat de València durante el curso 2021-2022. El repo del trabajo está aquí.

La página web de la asignatura y los trabajos de mis compañeros pueden verse aquí.


1. Introducción

1.1. LAS CRIPTOMONEDAS

Las criptomonedas son divisas digitales Peer-to-peer (P2P). ¿Qué es el P2P? Las plataformas de pagos online que conocemos hoy en día pertenecen a organizaciones. Ellos retienen tu dinero y debes solicitar alguna transacción o transferencia a tu nombre si deseas gastar en algo. Con las criptomonedas, no existe ninguna organización. Entonces, tanto tú como tus amigos y familiares pueden ser su propio banco gracias a que tu ordenador se conecta con los ordenadores de otras personas, lo que permite una comunicación directa sin intermediarios. Nadie puede evitar que uses tus criptomonedas. En cambio, los servicios de pagos centralizados pueden congelar tus cuentas o evitar que realices transacciones.


1.2. ¿ACTIVO REFUGIO?

No obstante, las criptomonedas también sirven como activo refugio. ¿Qué es un activo refugio? El valor de la riqueza suele bajar o desaparecer. Por ejemplo, la comida caduca, los objetos tienen amortización, y el dinero tiende a devaluarse con la inflación. Pero las personas queremos almacenar la riqueza. Para esto están los activos refugio. Los ejemplos típicos son el oro, los cuadros o las casas. ¿Pero por qué Bitcoin es un buen activo refugio?

  • Escasez extrema: nunca habrá más de 21 millones de bitcoin (no ocurre con otro activo)
  • No se puede robar o confiscar por el estado (el oro se puede robar y se ha confiscado por el estado)
  • Fácil de enviar (una casa no se puede mover)
  • Fácil de liquidar (se puede vender en cualquier momento)


2. Datos que hemos utilizado.

DATOS

Los datos usados en este trabajo han sido obtenidos de diferentes fuentes y posteriormente los hemos ido modificando para usarlos.

En primer lugar, tomamos los datos principales acerca del precio de las criptomonedas desde kaggle, la fuente de estos datos es Blockchain.com, una fuente de referencia en este mundo.

Por otra parte, otros datos de criptomonedas menos conocidas (altcoins) los tomamos de dos paquetes: Crypto2 y quantmond, de ambos, tuvimos que “limpiar” los datos (como mostramos en la pestaña “tidy”).

Además, para la obtención de datos como los retornos, usamos paquetes especiales para el análisis técnico como PerformanceAnalytics.

De igual forma, cada gráfico, análisis, tabla… ha necesitado un tratado especial que veremos en cada apartado concreto.

TIDY


#Limpieza para estudio actual de criptomonedas

coins <- crypto_list(only_active=TRUE)
coin_hist <- crypto_history(coins, limit=500, start_date="20211130", end_date="20211130") %>%
  filter(timestamp=="2021-11-30 23:59:59") 


coin_info<- crypto_info(coins,limit=500)


a<-coin_info %>% select(slug,urls, logo, category) %>% 
  unnest(urls) %>% filter(name %in% c("reddit","twitter")) %>%
  select(slug,url,logo)
c<-full_join(a,coin_hist, by="slug") %>% mutate(close= round(close,2))

c$url <- paste0("<a href='",c$url,"'>",c$url,"</a>")
c$logo<- paste0("'<img src=", c$logo, "></img>'")

data_total2<-read.csv("./datos/data_total2.csv")
#QUANTMOD

portfolio = c("ETH-USD")
datos <- getSymbols(portfolio, src = "yahoo", from = "2018-01-01")

datos_tecnico_eth <- `ETH-USD`

portfolio = c("BTC-USD")
datos <- getSymbols(portfolio, src = "yahoo", from = "2018-01-01")

datos_analisis_btc <- `BTC-USD`


data_total <- read_csv("datos/data_total.csv")

data_eth <- data_total %>% filter(Name == "Ethereum")

data_eth <- data_eth %>% select(Date, Close)

data_eth <- data_eth %>% rename(ds = Date, y = Close)

modelo1 <- prophet(data_eth)
horizonte1 <- make_future_dataframe(modelo1, periods = 365)

forecast1 <- predict(modelo1, horizonte1)


2.1. Datos finales.

EGG

Los datos finales con los que trabajamos los podemos ver en la siguiente tabla.

Más adelante mostraremos otra tabla con más información acerca de las altcoins, pero antes debemos explicar algunos conceptos

Código

datas<-data_total %>% select(Name, Symbol, Date, Close, Volume, Marketcap)
datatable(datas,escape=FALSE, class="cell-border stripe", extensions = c("Buttons","FixedColumns"),
          options = list(dom = 'Blfrtip',
                         fixedColumns=list(leftColumns=2),
                         buttons = c('copy', 'csv', 'excel', 'pdf', 'print'), 
                         pageLength = 6, autoWidth = TRUE,
                         columnDefs = list(list(width = '280px', targets = c(1, 5)))))


3. No sólo existe Bitcoin…

Durante los últimos años, la criptomoneda que más hemos escuchado es Bitcoin, sin embargo, no es la única que existe, aunque sí la más valiosa. Existen muchas criptomonedas que han ido surgiendo a lo largo de los años. Nuestro análisis posterior se centrará en Bitcoin y en Ethereum, las dos más importantes a día de hoy, o, por lo menos de las que más se habla; pero antes, debemos detenernos en ver la gran cantidad de criptomonedas que hay, su valor, y cómo algunas “superan” a Bitcoin en algunos aspectos.


3.1 El surgimiento de las “altcoins”.

Altcoins

Las criptomonedas alternativas (o altcoins) es como se suele llamar a aquellas criptomonedas que no se encuentran entre las 10 principales en cuanto a capitalización, y como podemos ver, en los últimos años han surgido muchas:

Las primeras criptomonedas surgieron en el año 2013, por eso, gran parte de nuestros análisis empezarán en torno a 2013/2014.

Vemos que han surgido muchas criptomonedas en los últimos años, y a partir de este gráfico, nos empezamos a cuestionar la siguiente hipótesis: ¿La aparición de nuevas criptomonedas va “por modas”?

Código

coins <- crypto_list(only_active=TRUE)
names(coins)
a<-coins %>% 
  slice_min(n=50, rank) %>% 
  select(slug,rank, first_historical_data) %>%
  mutate( ano= format(first_historical_data, "%Y")) %>%
  mutate(ano= as.numeric(ano))

str(a)

plot<- ggplot(a, aes(x=slug, y= first_historical_data)) + 
  geom_segment( aes(x=slug, xend=slug, y=15000, yend=first_historical_data), color="grey") +
  geom_point( color="orange", size=4, alpha=0.7) +
  theme_light() +
  coord_flip() +
  theme(
    panel.grid.major.y = element_blank(),
    panel.border = element_blank(),
    axis.ticks.y = element_blank()
  ) 

ggplotly(plot)


3.2 ¿Altcoins = Moda?

¿Moda?

En este gráfico nos planteamos hasta qué punto la aparición de nuevas altcoins está relacionado con el hecho de que el Bitcoin haya subido de precio en las últimas semanas;

Se puede observar, que en los períodos en los que el Bitcoin está en máximos (o está subiendo hacia uno) aparecen más altcoins que en el resto de períodos, por lo que, hasta cierto punto, la aparición de nuevas criptomonedas sí está relacionada.

Esto no es un punto a favor de las altcoins y vemos cómo algunas se centran fundamentalmente en la especulación. De igual manera, otras criptomonedas menos conocidas forman parte de proyectos que el público ha considerado interesantes y han tenido un mayor apoyo; de hecho, han llegado a superar a Bitcoin en cuanto a volumen o marketcap…

Código


coin_Bitcoin <- read_csv("datos/coin_Bitcoin2.csv")
str(coin_Bitcoin)
names(coin_Bitcoin)
coins <- crypto_list(only_active=TRUE)
a<-coins %>% 
  slice_min(n=800, rank) %>% 
  select(slug,rank, first_historical_data) %>% 
  rename("Data" = "first_historical_data") %>%
  mutate(Date=as.numeric(Data)) %>% mutate(ok=1) %>%
  group_by(Date= floor_date(Data, "month")) %>%
  summarize(nuevas= sum(ok))
str(a)
btc<-coin_Bitcoin %>% select(Name, Date, Close) %>%
  mutate(Date=as.numeric(Date)) 


p<- ggplot(btc, aes(x= Date, y= Close)) + 
  geom_col(fill="black") + geom_hline(yintercept = 70000, color="orange") 

p<-p + geom_point(data = a, 
              aes(x = Date, y = 70000, size = nuevas),
              color = "red",
              alpha = 0.5) 
p<- p + theme(plot.subtitle = element_text(family = "Times",
    size = 10), panel.grid.major = element_line(colour = "aliceblue"),
    panel.grid.minor = element_line(colour = "aliceblue"),
    axis.title = element_text(family = "Times"),
    axis.text = element_text(family = "Times"),
    axis.text.x = element_text(size = 20,
        colour = "aliceblue"), plot.title = element_text(family = "Times",
        size = 17, face = "bold", vjust = 5),
    panel.background = element_rect(fill = "aliceblue"),
    plot.background = element_rect(fill = "aliceblue")) +labs(title = "¿Altcoins = moda?", x = "Tiempo",
    y = "Precio BTC ($)", size = "Nuevas criptomonedas",
    subtitle = "¿Existe correlación entre la aparición de nuevas criptomonedas (altcoins) y el precio del Bitcoin?")

ggplotly(p)


3.3 Criptomonedas con más volumen

Bar Chart Race

Como vemos, las criptomonedas con más volumen no han permanecido fijas a lo largo del tiempo, sin embargo, sí que vemos como la primera posición la ocupó Bitcoin hasta que Tether se convirtió en la “ganadora”.

Este gráfico se llama “Bar chart race” y los datos usados son agrupaiones mensuales desde 2013 hasta la actualidad.

Podemos ver además que Ethereum se ha acercado mucho a Bitcoin en los últimos años.

Código



data_total <- read_csv("datos/data_total.csv")

df<-data_total %>% select(Name,Volume,Date) %>%
  rename(date = Date, id = Name, value = Volume) %>%
  subset(date> "2013-12-02" & date < "2021-07-06") %>%
  group_by(id, date = lubridate::floor_date(date, "month")) %>%
  summarize(value = sum(value))
  
  
data_alt<- data_total %>% filter(!Name== "Bitcoin") %>% 
  filter(!Name== "Wrapped Bitcoin") 

df_alt<-data_alt %>% select(Name,Volume,Date) %>%
  rename(date = Date, id = Name, value = Volume) %>%
  subset(date> "2013-12-02" & date < "2021-07-06") %>%
  group_by(id, date = lubridate::floor_date(date, "month")) %>%
  summarize(value = sum(value))


df_race_1 <- df %>% arrange(date)

robservable(
  "https://observablehq.com/@juba/bar-chart-race",
  include = c("viewof date", "chart", "draw", "styles"),
  hide = "draw",
  input = list(
    data = df_race_1, 
    title = "Evolución criptomonedas con más volumen",
    subtitle = "Principales criptomonedas desde el 2013 hasta la actualidad",
    source = "Fuente: Blockchain.com",
    tickDuration = 600
  ),
  width = 1000,
  height = 700,
)


3.4 Capitalización de mercado

Tabla

Sin embargo, que Tether sea la que más volumen mueve, no quiere decir que sea la más importante, podríamos fijarnos en otros indicadores para considerar esto.

La capitalización bursátil (o market cap) mide el “tamaño” de una acción o divisa, o, en nuestro caso, criptomoneda. Simplemente es la cantidad de reservas de la criptomoneda en el mercado, multiplicado por su precio (es decir, Precio*Cantidad)

Y aquí la cosa cambia, como podemos ver en la siguiente tabla:

% de Marketcap por Crypto y Evolución del precio del Bitcoin
ano BTC||ETH||ALT Precio BTC (en miles, $)
2015 89210
2016 8785
Bitcoin
2017 601920
Bitcoin Bitcoin Bitcoin Bitcoin
2018 532027
Bitcoin Bitcoin Bitcoin Bitcoin Bitcoin Bitcoin Bitcoin Bitcoin
2019 701019
Bitcoin Bitcoin Bitcoin Bitcoin Bitcoin Bitcoin Bitcoin
2020 711217
Bitcoin Bitcoin Bitcoin Bitcoin Bitcoin Bitcoin Bitcoin Bitcoin Bitcoin Bitcoin Bitcoin
2021 611721
Bitcoin Bitcoin Bitcoin Bitcoin Bitcoin Bitcoin Bitcoin Bitcoin Bitcoin Bitcoin Bitcoin Bitcoin Bitcoin Bitcoin Bitcoin Bitcoin Bitcoin Bitcoin Bitcoin Bitcoin Bitcoin Bitcoin Bitcoin Bitcoin Bitcoin Bitcoin Bitcoin Bitcoin Bitcoin Bitcoin Bitcoin Bitcoin Bitcoin Bitcoin Bitcoin Bitcoin Bitcoin Bitcoin Bitcoin Bitcoin Bitcoin Bitcoin Bitcoin Bitcoin Bitcoin Bitcoin

En esta tabla hemos comparado en primer lugar el porcentaje de Marketcap del total que pertenece a Bitcoin, a Ethereum y a todas las altcoins juntas. Podemos ver, que aunque Bitcoin sigue siendo la líder, poco a poco va perdiendo terreno que Ethereum y las altcoins van consiguiendo.

Como podemos ver, al haber crecido el interés en las criptomonedas en los últimos años, aunque ha variado el marketcap, el precio de Bitcoin no ha dejado de crecer.

Código

coin_Ethereum <- read_csv("datos/coin_Ethereum.csv")
coin_Bitcoin <- read_csv("datos/coin_Bitcoin.csv")
data_total <- read_csv("datos/data_total.csv")

btc<- coin_Bitcoin %>% mutate(Date=as.Date(Date))
btc<- coin_Bitcoin %>% mutate(ano = format(Date, "%Y")) %>%
  group_by(ano) %>% summarise(mean_market= mean(Marketcap)) %>% 
  mutate(crypto = "bitcoin")
btc2<-coin_Bitcoin %>% select(Name,Close, Date) %>%
  mutate(Close= Close/1000) %>% mutate(ano = format(Date, "%Y")) %>%
  group_by(ano) %>% summarise(Close= mean(Close)) %>%
  filter(ano %in% c(2015,2016,2017,2018,2019,2020,2021))

eth<- coin_Ethereum %>% mutate(Date=as.Date(Date)) %>% 
  mutate(ano = format(Date, "%Y")) %>%
  group_by(ano) %>% 
  summarise(mean_market= mean(Marketcap)) %>% 
  mutate(crypto = "ethereum")


resto<- data_total %>% mutate(Date=as.Date(Date)) %>% 
  mutate(ano = format(Date, "%Y")) %>%
  filter(!Name == "Bitcoin") %>% filter(!Name == "Ethereum") %>%
  group_by(ano, Name) %>% mutate(media_anual = mean(Marketcap))

dieciseis<-resto %>% filter(ano == "2016") %>%
  group_by(Name) %>% summarise(media_anual = mean(Marketcap)) %>% 
  summarise(suma= sum(media_anual)) %>%
  mutate(ano = "2016") %>% mutate(Name = "alt")

quince<-resto %>% filter(ano == "2015") %>%
  group_by(Name) %>% summarise(media_anual = mean(Marketcap)) %>%
  summarise(suma= sum(media_anual)) %>%
  mutate(ano = "2015") %>% mutate(Name = "alt")

diecisiete<-resto %>% filter(ano == "2017") %>%
  group_by(Name) %>% summarise(media_anual = mean(Marketcap)) %>%
  summarise(suma= sum(media_anual)) %>%
  mutate(ano = "2017") %>% mutate(Name = "alt")

diecinueve<-resto %>% filter(ano == "2019") %>%
  group_by(Name) %>% summarise(media_anual = mean(Marketcap)) %>%
  summarise(suma= sum(media_anual)) %>%
  mutate(ano = "2019") %>% mutate(Name = "alt")

veinte<-resto %>% filter(ano == "2020") %>%
  group_by(Name) %>% summarise(media_anual = mean(Marketcap)) %>%
  summarise(suma= sum(media_anual)) %>%
  mutate(ano = "2020") %>% mutate(Name = "alt")

dieciocho<-resto %>% filter(ano == "2018") %>%
  group_by(Name) %>% summarise(media_anual = mean(Marketcap)) %>%
  summarise(suma= sum(media_anual)) %>%
  mutate(ano = "2018") %>% mutate(Name = "alt")

veintiuno<-resto %>% filter(ano == "2021") %>%
  group_by(Name) %>% summarise(media_anual = mean(Marketcap)) %>%
  summarise(suma= sum(media_anual)) %>%
  mutate(ano = "2021") %>% mutate(Name = "alt")

x<-full_join(veinte,dieciocho)
b<-full_join(dieciseis,quince)
b<-full_join(b,x)
c<-full_join(diecisiete,diecinueve)
d<-full_join(b,veintiuno)
e<-full_join(c,d) %>% rename("mean_market" = "suma") %>% 
  select(mean_market,ano) %>% mutate(crypto = "alt")

nofinal<-full_join(btc, eth) %>% filter(ano %in% c(2015,2016,2017, 2018,2019,2020,2021))
final<- full_join(nofinal, e) %>% group_by(ano) %>% 
  mutate(suma = sum(mean_market)) %>% 
  mutate(mean_market2 = 100*mean_market/suma) 
final2<-full_join(nofinal, e) %>% group_by(ano) %>% 
  mutate(suma = sum(mean_market))

pretabla<- final %>% group_by(ano) %>% 
  summarise(lista = list(mean_market2))

pretabla<- full_join(pretabla,btc2, by="ano")
pretabla<-pretabla %>% mutate(Close = round(Close))
pretabla<-pretabla %>% rename("Precio BTC (en miles, $)" = "Close")

pal_stages <- c('#264653','#e9c46a','#e76f51')

tabla1<- pretabla %>%
  gt()%>%
  gt_plt_bar_stack(
    # Column with data
    column=lista,
    # Stacked barplot 
    position = 'stack', 
    # Set labels and color
    labels = c("BTC", "ETH", "ALT"),
    palette = pal_stages,
    # Barplot width
    width = 100) %>%
  tab_header(title = "% de Marketcap por Crypto y Evolución del precio del Bitcoin")%>%
  gt_theme_nytimes()
tabla2<- tabla1 %>%
  gtExtras::gt_fa_repeats(
    column= `Precio BTC (en miles, $)`,
    palette = "orange",
    name = "bitcoin",
    align='left'
  )  %>% tab_style(style = list(cell_fill(color = "#F9E3D6")),
                                locations = cells_body(rows = ano>3))

tabla2

4. Las criptomonedas en el mundo


4.1 ¿Quién posee las criptomonedas?

Mapa

Otro análisis realizado ha sido ilustrar en un mapa, qué país tiene mayor porcentaje de personas poseedoras de criptomonedas. De aquí sacamos distintas conclusiones interesantes:

En este mapa vemos varias cosas interesantes. En primer lugar, en la zona euro vemos cómo este porcentaje es bastante bajo (ya es relevante de por si el hecho de que todos los países de la Unión Europea tengan valores similares), una de las razones puede estar ligada a que la moneda (€) es bastante estable (sin embargo, en EEUU, la tasa es alta…) vemos que el caso de Gran Bretaña es similar al de la zona euro.

No resulta extraño, por tanto, que países de sudamerica como Venezuela tengan un porcentaje mayor, puesto que su moneda se devalúa a gran velocidad con la inflación y la gente decide invertir en otros activos con el ojetivo de mantener su poder adquisitivo.

Rusia también tiene una inflación mayor a la europea año tras año, pero allí las razones van más allá…

Código

library(tmap)
library(rnaturalearth)
library(plotly)

paisesss <- read_excel("datos/paisesss.xlsx")
world <- rnaturalearth::ne_countries(scale = "medium", returnclass = "sf")
world<- world %>% select(name, geometry,pop_est)
paisesss<- paisesss%>% rename("pais"="País")

antis<-anti_join(paisesss,world, by= c("pais" = "name"))

b<- paisesss %>% mutate(pais = ifelse(pais=="USA","United States", pais)) %>%
  mutate(pais = ifelse(pais=="South Korea","Korea", pais)) %>%
  mutate(pais = ifelse(pais=="Dominican Republic","Dominican Rep.", pais)) %>%
  mutate(pais = ifelse(pais=="Republic of Serbia","Serbia", pais)) %>%
  mutate(pais = ifelse(pais=="Bosnia and Herzegovina","Bosnia and Herz.", pais)) %>%
  mutate(pais = ifelse(pais=="Czech Republic","Czech Rep.", pais)) %>%
  mutate(pais = ifelse(pais=="Ivory Coast","Côte d'Ivoire", pais)) %>%
  mutate(pais = ifelse(pais=="The Bahamas","Bahamas", pais))

anti_join(b,world, by= c("pais" = "name"))
a<- full_join(b,world, by= c("pais" = "name")) 
a<- a %>% mutate (number = as.numeric(number)) %>% mutate(percent = 100*number/pop_est) %>%
  filter(!pais== "Antarctica") %>% filter(!pais=="Greenland")


plot1<-ggplot(a, aes(geometry = geometry)) + geom_sf()


plot2<- plot1 + geom_sf(aes(fill=percent)) +
  scale_fill_viridis_c(option = "turbo", trans = "sqrt") 

plot3<- plot2 + theme(panel.grid.major = element_line(color = gray(.5), linetype = "dashed", size = 0.5), 
              panel.background = element_rect(fill = "aliceblue")) + 
  theme(axis.line = element_line(size = 0),
        axis.ticks = element_line(colour = "gray14",size = 0, linetype = "dashed"),
        panel.grid.major = element_line(colour = "aliceblue",size = 0), 
        panel.grid.minor = element_line(colour = "aliceblue"))
plot4<-plot3+labs(title = "Porcentaje de población poseedora de criptomonedas")+ theme(axis.line = element_line(size = 0, colour = "aliceblue"),
              axis.ticks = element_line(colour = "aliceblue"),
              panel.grid.major = element_line(size = 1.4),
              axis.text.x = element_text(colour = "aliceblue"),
              axis.text.y = element_text(size = 6, colour = "aliceblue"), 
              legend.title = element_text(size = 11,face = "bold"), 
              plot.background = element_rect(fill = "aliceblue"),
              legend.background = element_rect(fill = "aliceblue"))

ggplotly(plot4, width= 1080, height= 720)


4.2 Tabla criptomonedas

Tabla

Ahora que ya sabemos un poco más sobre criptomonedas, aquí mostramos una tabla en la que podemos ver más información acerca de las 500 criptomonedas más importantes

#> > Scraping historical crypto data
#> > Processing historical crypto data
#> > Scraping crypto info
#> > Processing historical crypto data

Código

coins <- crypto_list(only_active=TRUE)
coin_hist <- crypto_history(coins, limit=500, start_date="20211130", end_date="20211130") %>%
  filter(timestamp=="2021-11-30 23:59:59") %>% select(slug,symbol,close, volume)


coin_info<- crypto_info(coins,limit=500)


a<-coin_info %>% select(slug,urls, logo, category) %>% 
  unnest(urls) %>% filter(name %in% c("reddit","twitter")) %>%
  select(slug,url,logo)
c<-full_join(a,coin_hist, by="slug") %>% mutate(close= round(close,2))

c$url <- paste0("<a href='",c$url,"'>",c$url,"</a>")
c$logo<- paste0("'<img src=", c$logo, "></img>'")
datatable(c,escape=FALSE, class="cell-border stripe", extensions = c("Buttons","FixedColumns"),
          options = list(dom = 'Blfrtip',
                         fixedColumns=list(leftColumns=2),
                         buttons = c('copy', 'csv', 'excel', 'pdf', 'print'), 
                         pageLength = 6, autoWidth = TRUE )) %>%
  formatStyle("volume",
              background = styleColorBar(c$volume, 'darkcyan'),
              backgroundSize = '100% 90%',
              backgroundRepeat = 'no-repeat',
              backgroundPosition = 'center')


5. Bitcoin

5.1 Evolución de los precios.

Evolución

Así ha evolucionado en precio de Bitcoin en los últimos años:

Código

coin_Bitcoin <- read_csv("./datos/coin_Bitcoin.csv")
BTC_image <- "https://cdn.pixabay.com/photo/2018/02/02/13/51/bitcoin-3125488_1280.png"
a<-coin_Bitcoin %>% select(Name, Date, Close, Volume) %>% mutate(imagen = BTC_image)

a$month <- floor_date(a$Date, "month")


ggplot(a, aes(Date, Close)) + 
  geom_path(aes(colour="goldenrod1")) + 
  geom_point( aes(group=month, colour= "goldenrod1", alpha = 0.5)) +
  geom_image(aes(image = BTC_image),
             size = 0.06) +
  transition_reveal(Date) +
  theme(axis.line = element_line(colour = "chocolate1"),
        panel.background = element_rect(fill = "#fbf7f0"),
        plot.background = element_rect(fill = "#fbf7f0",
                                       colour = "#fbf7f0")) +labs(y = "Precio") +
  theme(legend.position = "none")

Evolución 2

Velas

Aquí podemos ver un gráfico de velas de las últimas semanas:

#> [1] "BTC-USD"

Código

#Primero
coin_Bitcoin <- read_csv("./datos/coin_Bitcoin.csv")
BTC_image <- "https://cdn.pixabay.com/photo/2018/02/02/13/51/bitcoin-3125488_1280.png"
a<-coin_Bitcoin %>% select(Name, Date, Close, Volume) %>% mutate(imagen = BTC_image)

a$month <- floor_date(a$Date, "month")


ggplot(a, aes(Date, Close)) + 
  geom_path(aes(colour="goldenrod1")) + 
  geom_point( aes(group=month, colour= "goldenrod1", alpha = 0.5)) +
  geom_image(aes(image = BTC_image),
             size = 0.06) +
  transition_reveal(Date) +
  theme(axis.line = element_line(colour = "chocolate1"),
        panel.background = element_rect(fill = "#fbf7f0"),
        plot.background = element_rect(fill = "#fbf7f0",
                                       colour = "#fbf7f0")) +labs(y = "Precio") 

#Segundo
BTC <- data_total2 %>% filter(Symbol == "BTC") %>% select(Date,Close)
G2 <- BTC %>% ggplot() + geom_line(aes(Date,Close)) + scale_y_continuous(trans = "log10") + theme(panel.background = element_rect(fill = "#fbf7f0",colour = "#fbf7f0")) +labs(colour = "colour_up", fill = "fill_up") + theme(plot.background = element_rect(fill = "#fbf7f0"))
G2

#Tercero
BTCcandle<- data_total2 %>% filter(Symbol == "BTC") %>% select(Date,Low,High,Open,Close)
BTCcandlesemanal <- BTCcandle  %>% 
    mutate(anio = format(Date, "%Y"),
           dia_semana_num = format(Date, "%W")) %>% 
    group_by(anio,dia_semana_num) %>% 
    summarise(shigh = max(High), slow=min(Low),
              Date = max(Date), sclose =last(Close), sopen=first(Open)) %>% filter(Date>as.Date("2017-01-01"))
G3 <- BTCcandlesemanal %>% ggplot(aes(Date,sclose)) + geom_candlestick(aes(open = sopen, high = shigh, low = slow, close = sclose, colour_up="darkgreen", fill_up="darkgreen"))
G3 + theme(panel.background = element_rect(fill = "#fbf7f0",
    colour = "#fbf7f0")) +labs(colour = "colour_up", fill = "fill_up")

portfolio = c("BTC-USD")
getSymbols(portfolio, src = "yahoo", from = "2011-01-01")


#Cuarto
chartSeries(`BTC-USD`,
            type="candlesticks",
            subset = "2021-6::2021-11",
            up.col = "green",
            down.col = "red",
            theme=chartTheme("white"))


5.2 Predicción del precio

Predicción

Para “predecir” el precio hemos usado el paquete Prophet. El paquete Prophet fue creado por el equipo Data Science de Facebook y nos permite realizar análisis de tendencia, ciclos y estacionalidad, además de un pronóstico de precio. Esta predicción se hace teniendo en cuenta ciertos indicadores, como veremos más adelante, el bitcoin es muy volátil, pero esta predicción, bajo un error, se aproxima a la realidad con bastante acierto.

ds yhat yhat_lower yhat_upper
3351 2022-07-01 23:59:59 66234.59 58696.86 73352.66
3352 2022-07-02 23:59:59 66327.98 59064.00 73329.81
3353 2022-07-03 23:59:59 66394.19 59223.95 73635.99
3354 2022-07-04 23:59:59 66499.13 59301.69 73620.01
3355 2022-07-05 23:59:59 66599.25 59461.22 73443.87
3356 2022-07-06 23:59:59 66725.24 58678.89 74255.48

Código

library(prophet)
library(rio)
library(ggplot2)
library(tidyverse)
library(TTR)
library(quantmod)
library(tidyr)
library(readr)
library(prophet)
library(PerformanceAnalytics)
data_btc <- data_total %>% filter(Name == "Bitcoin")

data_btc <- data_btc %>% select(Date, Close)

data_btc <- data_btc %>% rename(ds = Date, y = Close)

modelo2 <- prophet(data_btc)
horizonte2 <- make_future_dataframe(modelo2, periods = 365)


forecast2 <- predict(modelo2, horizonte2)
tail(forecast2[c('ds','yhat','yhat_lower','yhat_upper')])

#para observar los datos de la predicción de forma intuitiva mediante un grafico utilizaremos la instrucción dyplot.prophet.

gr_predicc2 <- dyplot.prophet(modelo2, forecast2, main = "Prediccion Precio Bitcoin")
gr_predicc2


6. Análisis técnico.

6.1 BITCOIN

Ciclos

Se puede decir que los ciclos de bitcoin los marcan los halvings, que son fraccionamientos del volumen de BTC a la mitad. Ha habido halvings en 2012, 2016 y 2020, y aquí podemos observar los dos últimos:

Después de cada halving podemos observar una subida más constante del precio, lo cual es coherente con el hecho de que la oferta es reducida después de cada uno. Tras la subida se puede apreciar una estabilización del precio en forma de U. El único ciclo que se muestra completamente es el de 2016-2020.

Media móvil

El mercado puede subestimar o infravalorar un activo dependiendo del sentimiento de mercado (si la gente es optimista o pesimista). Para corregir estos sentimientos e intentar estimar el valor intrínseco del activo usamos las medias móviles, que eliminan fluctuaciones a corto plazo facilitando así la observación de tendencias a largo plazo. La media móvil de 20 periodos es la más usada. Es la media del precio en los últimos 20 periodos (20 semanas).

Como se puede observar, cuando Bitcoin está por encima de la media; está subiendo, y cuando está por debajo; está bajando.

RELATIVE STRENGHT INDEX

El RSI es un indicador de tipo oscilador que refleja la fuerza relativa de los movimientos alcistas, en comparación con los movimientos bajistas. Es utilizado por los traders para medir la fuerza de una tendencia e identificar señales de fin de tendencia.

RSI = Media móvil exponencial de ‘N’ períodos alcistas / Media móvil exponencial de ‘N’ períodos bajistas (en valor absoluto)

Tiene un valor de 0 a 100, si esta por encima de 70 indica sobrecompra (señal de venta) y si esta por debajo de 30 indica sobreventa (señal de compra).

MACD

MOVING AVERAGE CONVERGENCE DIVERGENCE: Las bandas de Bollinger son una técnica muy popular. Muchos traders creen que cuanto más se acercan los precios a la banda superior, más sobrecomprado está el mercado, y cuanto más se acercan los precios a la banda inferior, más sobrevendido es el mercado. En el gráfico que se muestra a continuación, las Bandas de Bollinger abarcan la MMS de 20 días del Bitcoin con una banda superior e inferior junto con los movimientos diarios del precio. Debido a que la desviación estándar es una medida de volatilidad, cuando los mercados se vuelven más volátiles, las bandas se ensanchan; durante períodos menos volátiles, las bandas se contraen.

Momentum

El Momentum (momento) es un indicador utilizado en el análisis técnico, que mide la velocidad con la que varía el precio de una acción (hacia arriba o hacia abajo), en un período de tiempo determinado. Viene a ser como la aceleración. Si los precios varían en la misma cantidad todos los días (mantienen la misma velocidad) el momentum es cero. Si los precios suben cada día más —se aceleran— el momentum es positivo (si bajan cada día más, el momentum sería negativo).

La señal de compra surge cuando el impulso cambia de negativo a positivo. La señal de venta surge cuando el impulso cambia de positivo a negativo.


Código de los indicadores


chartSeries(datos_analisis_btc,
            type="candlesticks",
            subset = "2018-01::2021-11",
            up.col = "green",
            down.col = "red",
            theme=chartTheme("white"))
addSMA()

chartSeries(datos_analisis_btc,
            type="candlesticks",
            subset = "2018-01::2021-11",
            up.col = "green",
            down.col = "red",
            theme=chartTheme("white"))
addRSI()

chartSeries(datos_analisis_btc,
            type="candlesticks",
            subset = "2018-01::2021-11",
            up.col = "green",
            down.col = "red",
            theme=chartTheme("white"))
addMACD()

chartSeries(datos_analisis_btc,
            type="candlesticks",
            subset = "2018-01::2021-11",
            up.col = "green",
            down.col = "red",
            theme=chartTheme("white"))
addMomentum()

6.2 Gráfico final y tendencias

Gráfico

Tendencias

Cogemos el modelo1 y el forecast 1 para, a traves de la instruccion prophet_plot_componentes obtener un grafico que nos muestra algunas tendencias interesantes.

#> [[1]]
#> 
#> [[2]]
#> 
#> [[3]]

Podemos ver cómo el BTC suele subir entre los meses de abril y junio.

Código

tendencias <- prophet_plot_components(modelo1, forecast1)
tendencias 


7. Ethereum

7.1. Evolución de los precios.

Evolución

Velas

chartSeries(`ETH-USD`,
            type="candlesticks",
            subset = "2021-01::2021-11",
            up.col = "green",
            down.col = "red",
            theme=chartTheme("white"))

7.2 Predicción del precio

Predicción

Tal y como hicimos anteriormente con el Bitcoin, usamos el paquete Prophet para predecir el precio en el futuro.

Código

#Evolución del precio

coin_ethereum <- read_csv("./datos/coin_ethereum.csv")
ETH_image <- "https://cdn.pixabay.com/photo/2021/12/03/10/32/ethereum-6842405_1280.png"
a<-coin_ethereum %>% select(Name, Date, Close, Volume) %>% mutate(imagen = ETH_image)

a$month <- floor_date(a$Date, "month")


ggplot(a, aes(Date, Close)) + 
  geom_path(aes(colour="goldenrod1")) + 
  geom_point( aes(group=month, colour= "goldenrod1", alpha = 0.5)) +
  geom_image(aes(image = ETH_image),
             size = 0.06) +
  transition_reveal(Date) +
  theme(axis.line = element_line(colour = "chocolate1"),
        panel.background = element_rect(fill = "#fbf7f0"),
        plot.background = element_rect(fill = "#fbf7f0",
                                       colour = "#fbf7f0")) +labs(y = "Precio") +
  theme(legend.position = "none")

#Predicción del precio

portfolio = c("ETH-USD")
datos <- getSymbols(portfolio, src = "yahoo", from = "2018-01-01")

datos_tecnico_eth <- `ETH-USD`

portfolio = c("BTC-USD")
datos <- getSymbols(portfolio, src = "yahoo", from = "2018-01-01")

datos_analisis_btc <- `BTC-USD`

#Prediccion de precio Prophet


data_total <- read_csv("./datos/data_total.csv")

data_eth <- data_total %>% filter(Name == "Ethereum")

data_eth <- data_eth %>% select(Date, Close)

data_eth <- data_eth %>% rename(ds = Date, y = Close)

modelo1 <- prophet(data_eth)
horizonte1 <- make_future_dataframe(modelo1, periods = 365)

forecast1 <- predict(modelo1, horizonte1)

gr_predicc <- dyplot.prophet(modelo1, forecast1, main = "Prediccion Precio Ethereum")
gr_predicc

8. Análisis técnico

Medias móviles

Bandas de Bollinger

Las bandas de Bollinger son una técnica muy popular. Muchos traders creen que cuanto más se acercan los precios a la banda superior, más sobrecomprado está el mercado, y cuanto más se acercan los precios a la banda inferior, más sobrevendido es el mercado.

En el gráfico que se muestra a continuación, las Bandas de Bollinger abarcan la MMS de 20 días del Bitcoin con una banda superior e inferior junto con los movimientos diarios del precio. Debido a que la desviación estándar es una medida de volatilidad, cuando los mercados se vuelven más volátiles, las bandas se ensanchan; durante períodos menos volátiles, las bandas se contraen.

RSIr

Añadimos también el RSI que vimos anteriormente:

MACD

Divergencia de convergencia de la media movil (MACD)

Es un indicador de impulso que sigue la tendencia y muestra la relación entre dos medias móviles del precio de un valor. El MACD se calcula restando la media móvil exponencial (EMA) de 26 períodos de la EMA de 12 períodos.

El resultado de ese cálculo es la línea MACD. Una EMA de nueve días del MACD llamada “línea de señal” se traza luego en la parte superior de la línea MACD, que puede funcionar como un disparador de señales de compra y venta. Los operadores pueden comprar el valor cuando el MACD cruza por encima de su línea de señal y vender, o vender, el valor cuando el MACD cruza por debajo de la línea de señal.

Momentum

El momentum es la velocidad o velocidad de los cambios de precio en una acción, valor o instrumento negociable. Momentum muestra la tasa de cambio en el movimiento de precios durante un período de tiempo para ayudar a los inversores a determinar la fuerza de una tendencia.

Calculamos el impulso de 2 días en función del precio de cierre de Bitcoin La señal de compra surge cuando el impulso cambia de negativo a positivo. La señal de venta surge cuando el impulso cambia de positivo a negativo.

Código


#Medias móviles 

portfolio = c("ETH-USD")
datos <- getSymbols(portfolio, src = "yahoo", from = "2017-01-01")

#grafico con EMAs
chartSeries(`ETH-USD`,
            type="candlesticks",
            subset = "2021-01::2021-11",
            up.col = "green",
            down.col = "red",
            theme=chartTheme("white"))
addEMA(n=30,on=1,col = "blue")
addEMA(n=200,on=1,col = "black")

#Bandas

addBBands(n=20,sd=2)

#RSI

addRSI()

#MACD

chartSeries(`ETH-USD`,
            type="candlesticks",
            subset = "2021-01::2021-11",
            up.col = "green",
            down.col = "red",
            theme=chartTheme("white"))
addMACD()

#Momentum
addMomentum(n=1)

Precio respecto de la media

Cuando Bitcoin está por encima de la media (subiendo), el valor de esta extensión es mayor que 1. Cuando Bitcoin está por debajo de la media (bajando), el valor de esta extensión está entre 0 y 1. Por tanto, los puntos óptimos para comprar son los mínimos observados en el rango entre 0 y 1, y los puntos óptimos para vender son los picos que estén por encima de 1.

Podemos observar que la varianza está en descenso, por lo que para que bitcoin se estabilice tiene que seguir subiendo como ha estado haciendo

Mientras Bitcoin tiene esta varianza, ¿cuánto varían las otras monedas?

Date Close Symbol media_movil varianza
2013-04-29 144.5400 BTC NA NA
2013-04-30 139.0000 BTC NA NA
2013-05-01 116.9900 BTC NA NA
2013-05-02 105.2100 BTC NA NA
2013-05-03 97.7500 BTC NA NA
2013-05-04 112.5000 BTC NA NA
2013-05-05 115.9100 BTC NA NA
2013-05-06 112.3000 BTC NA NA
2013-05-07 111.5000 BTC NA NA
2013-05-08 113.5660 BTC NA NA
2013-05-09 112.6700 BTC NA NA
2013-05-10 117.2000 BTC NA NA
2013-05-11 115.2430 BTC NA NA
2013-05-12 115.0000 BTC NA NA
2013-05-13 117.9800 BTC NA NA
2013-05-14 111.5000 BTC NA NA
2013-05-15 114.2200 BTC NA NA
2013-05-16 118.7600 BTC NA NA
2013-05-17 123.0150 BTC NA NA
2013-05-18 123.4980 BTC NA NA
2013-05-19 121.9900 BTC NA NA
2013-05-20 122.0000 BTC NA NA
2013-05-21 122.8800 BTC NA NA
2013-05-22 123.8890 BTC NA NA
2013-05-23 126.7000 BTC NA NA
2013-05-24 133.2000 BTC NA NA
2013-05-25 131.9800 BTC NA NA
2013-05-26 133.4800 BTC NA NA
2013-05-27 129.7450 BTC NA NA
2013-05-28 129.0000 BTC NA NA
2013-05-29 132.3000 BTC NA NA
2013-05-30 128.7990 BTC NA NA
2013-05-31 129.0000 BTC NA NA
2013-06-01 129.3000 BTC NA NA
2013-06-02 122.2920 BTC NA NA
2013-06-03 122.2220 BTC NA NA
2013-06-04 121.4200 BTC NA NA
2013-06-05 121.6500 BTC NA NA
2013-06-06 118.0000 BTC NA NA
2013-06-07 111.5000 BTC NA NA
2013-06-08 108.3000 BTC NA NA
2013-06-09 100.0000 BTC NA NA
2013-06-10 106.3500 BTC NA NA
2013-06-11 108.9000 BTC NA NA
2013-06-12 108.1500 BTC NA NA
2013-06-13 104.0000 BTC NA NA
2013-06-14 99.9789 BTC NA NA
2013-06-15 99.9881 BTC NA NA
2013-06-16 99.5100 BTC NA NA
2013-06-17 101.7000 BTC NA NA
2013-06-18 107.4000 BTC NA NA
2013-06-19 108.2500 BTC NA NA
2013-06-20 110.1500 BTC NA NA
2013-06-21 109.5000 BTC NA NA
2013-06-22 108.3000 BTC NA NA
2013-06-23 107.6000 BTC NA NA
2013-06-24 102.7370 BTC NA NA
2013-06-25 103.9500 BTC NA NA
2013-06-26 104.0000 BTC NA NA
2013-06-27 101.4370 BTC NA NA
2013-06-28 94.6492 BTC NA NA
2013-06-29 94.9940 BTC NA NA
2013-06-30 96.6140 BTC NA NA
2013-07-01 88.0500 BTC NA NA
2013-07-02 90.1340 BTC NA NA
2013-07-03 77.5300 BTC NA NA
2013-07-04 80.5258 BTC NA NA
2013-07-05 68.4310 BTC NA NA
2013-07-06 70.2773 BTC NA NA
2013-07-07 74.5611 BTC NA NA
2013-07-08 76.5160 BTC NA NA
2013-07-09 76.6940 BTC NA NA
2013-07-10 86.7600 BTC NA NA
2013-07-11 88.9800 BTC NA NA
2013-07-12 93.5949 BTC NA NA
2013-07-13 98.1339 BTC NA NA
2013-07-14 94.6913 BTC NA NA
2013-07-15 98.4002 BTC NA NA
2013-07-16 97.4508 BTC NA NA
2013-07-17 98.5000 BTC NA NA
2013-07-18 90.5800 BTC NA NA
2013-07-19 92.1700 BTC NA NA
2013-07-20 89.3901 BTC NA NA
2013-07-21 90.7573 BTC NA NA
2013-07-22 91.6100 BTC NA NA
2013-07-23 95.5585 BTC NA NA
2013-07-24 94.5100 BTC NA NA
2013-07-25 96.9000 BTC NA NA
2013-07-26 96.0202 BTC NA NA
2013-07-27 94.1160 BTC NA NA
2013-07-28 99.7560 BTC NA NA
2013-07-29 101.2000 BTC NA NA
2013-07-30 107.9900 BTC NA NA
2013-07-31 106.0900 BTC NA NA
2013-08-01 104.0000 BTC NA NA
2013-08-02 104.5010 BTC NA NA
2013-08-03 104.0050 BTC NA NA
2013-08-04 105.1440 BTC NA NA
2013-08-05 106.2200 BTC NA NA
2013-08-06 106.7500 BTC NA NA
2013-08-07 106.7500 BTC NA NA
2013-08-08 103.0000 BTC NA NA
2013-08-09 102.8000 BTC NA NA
2013-08-10 103.0000 BTC NA NA
2013-08-11 105.0000 BTC NA NA
2013-08-12 106.6360 BTC NA NA
2013-08-13 109.0000 BTC NA NA
2013-08-14 112.5620 BTC NA NA
2013-08-15 109.9900 BTC NA NA
2013-08-16 108.9940 BTC NA NA
2013-08-17 113.5000 BTC NA NA
2013-08-18 113.5000 BTC NA NA
2013-08-19 119.0000 BTC NA NA
2013-08-20 121.2050 BTC NA NA
2013-08-21 123.3000 BTC NA NA
2013-08-22 121.1500 BTC NA NA
2013-08-23 118.5010 BTC NA NA
2013-08-24 120.0450 BTC NA NA
2013-08-25 122.1110 BTC NA NA
2013-08-26 120.0560 BTC NA NA
2013-08-27 126.5000 BTC NA NA
2013-08-28 122.6200 BTC NA NA
2013-08-29 122.3900 BTC NA NA
2013-08-30 133.4900 BTC NA NA
2013-08-31 135.3500 BTC NA NA
2013-09-01 138.3400 BTC NA NA
2013-09-02 135.8500 BTC NA NA
2013-09-03 136.7700 BTC NA NA
2013-09-04 126.7400 BTC NA NA
2013-09-05 126.4300 BTC NA NA
2013-09-06 119.1500 BTC NA NA
2013-09-07 124.1500 BTC NA NA
2013-09-08 121.6600 BTC NA NA
2013-09-09 127.1100 BTC NA NA
2013-09-10 125.9100 BTC NA NA
2013-09-11 135.2500 BTC NA NA
2013-09-12 133.1300 BTC NA NA
2013-09-13 134.9800 BTC NA NA
2013-09-14 129.2200 BTC NA NA
2013-09-15 130.3700 BTC 110.8440 1.1761570
2013-09-16 131.7200 BTC 110.7525 1.1893189
2013-09-17 131.6600 BTC 110.7000 1.1893402
2013-09-18 131.4700 BTC 110.8035 1.1865152
2013-09-19 129.6500 BTC 110.9780 1.1682491
2013-09-20 127.0400 BTC 111.1873 1.1425770
2013-09-21 127.4300 BTC 111.2939 1.1449864
2013-09-22 129.1200 BTC 111.3883 1.1591886
2013-09-23 125.9500 BTC 111.4858 1.1297407
2013-09-24 127.2500 BTC 111.5983 1.1402508
2013-09-25 128.2200 BTC 111.7029 1.1478661
2013-09-26 128.3800 BTC 111.8151 1.1481451
2013-09-27 133.7800 BTC 111.9336 1.1951732
2013-09-28 134.7800 BTC 112.0731 1.2026077
2013-09-29 137.3400 BTC 112.2327 1.2237076
2013-09-30 133.0000 BTC 112.3400 1.1839063
2013-10-01 132.1800 BTC 112.4877 1.1750618
2013-10-02 114.1300 BTC 112.4870 1.0146057
2013-10-03 123.6300 BTC 112.5218 1.0987201
2013-10-04 129.0100 BTC 112.5647 1.1460968
2013-10-05 128.5500 BTC 112.6007 1.1416444
2013-10-06 129.0000 BTC 112.6508 1.1451316
2013-10-07 126.9400 BTC 112.6861 1.1264921
2013-10-08 126.0000 BTC 112.7084 1.1179293
2013-10-09 130.6900 BTC 112.7570 1.1590415
2013-10-10 130.5900 BTC 112.7847 1.1578693
2013-10-11 130.9000 BTC 112.7683 1.1607870
2013-10-12 135.1900 BTC 112.7912 1.1985859
2013-10-13 138.1300 BTC 112.8245 1.2242913
2013-10-14 140.5200 BTC 112.9014 1.2446256
2013-10-15 145.2400 BTC 113.0174 1.2851116
2013-10-16 142.5500 BTC 113.0906 1.2604934
2013-10-17 146.2500 BTC 113.2153 1.2917866
2013-10-18 155.9600 BTC 113.4079 1.3752134
2013-10-19 172.4200 BTC 113.7159 1.5162353
2013-10-20 174.6100 BTC 114.0896 1.5304643
2013-10-21 182.2100 BTC 114.5180 1.5911030
2013-10-22 193.7600 BTC 115.0348 1.6843604
2013-10-23 213.6200 BTC 115.6917 1.8464593
2013-10-24 198.2300 BTC 116.2648 1.7049878
2013-10-25 186.6900 BTC 116.8018 1.5983482
2013-10-26 177.3200 BTC 117.2948 1.5117461
2013-10-27 196.4400 BTC 117.9837 1.6649759
2013-10-28 198.5500 BTC 118.6423 1.6735184
2013-10-29 204.3900 BTC 119.3243 1.7128945
2013-10-30 199.9700 BTC 119.9802 1.6666918
2013-10-31 204.0000 BTC 120.6945 1.6902182
2013-11-01 206.1800 BTC 121.4531 1.6976106
2013-11-02 206.2200 BTC 122.2119 1.6873977
2013-11-03 215.0500 BTC 123.0371 1.7478462
2013-11-04 229.1000 BTC 123.9471 1.8483686
2013-11-05 245.2400 BTC 124.9317 1.9629924
2013-11-06 262.5000 BTC 126.0335 2.0827796
2013-11-07 296.4100 BTC 127.3639 2.3272681
2013-11-08 338.1100 BTC 128.9969 2.6210715
2013-11-09 339.1100 BTC 130.6455 2.5956500
2013-11-10 326.6200 BTC 132.2099 2.4704650
2013-11-11 342.4400 BTC 133.9221 2.5570091
2013-11-12 360.3300 BTC 135.7534 2.6542985
2013-11-13 407.3700 BTC 137.9203 2.9536622
2013-11-14 420.2000 BTC 140.1972 2.9972072
2013-11-15 417.9500 BTC 142.5065 2.9328493
2013-11-16 440.2200 BTC 144.9724 3.0365785
2013-11-17 492.1100 BTC 147.7973 3.3296267
2013-11-18 703.5600 BTC 152.1938 4.6227887
2013-11-19 584.6100 BTC 155.7258 3.7540980
2013-11-20 590.8300 BTC 159.3922 3.7067676
2013-11-21 722.4300 BTC 163.9773 4.4056714
2013-11-22 771.4400 BTC 168.9988 4.5647670
2013-11-23 797.8200 BTC 174.1955 4.5800264
2013-11-24 774.2500 BTC 179.1933 4.3207535
2013-11-25 799.1100 BTC 184.3547 4.3346339
2013-11-26 928.1000 BTC 190.4361 4.8735497
2013-11-27 1001.9600 BTC 196.9733 5.0867814
2013-11-28 1031.9500 BTC 203.7088 5.0658099
2013-11-29 1131.9700 BTC 211.1257 5.3615914
2013-11-30 1129.4301 BTC 218.4921 5.1692021
2013-12-01 955.8500 BTC 224.6433 4.2549681
2013-12-02 1043.3300 BTC 231.3928 4.5089132
2013-12-03 1078.2800 BTC 238.3987 4.5230114
2013-12-04 1151.1700 BTC 245.9178 4.6811177
2013-12-05 1045.1100 BTC 252.7358 4.1351870
2013-12-06 829.4500 BTC 258.0021 3.2148960
2013-12-07 698.2300 BTC 262.3510 2.6614346
2013-12-08 795.8700 BTC 267.3875 2.9764667
2013-12-09 893.1900 BTC 273.1131 3.2704037
2013-12-10 988.5100 BTC 279.4913 3.5368185
2013-12-11 878.4800 BTC 285.0911 3.0814011
2013-12-12 873.2600 BTC 290.6365 3.0046466
2013-12-13 892.5800 BTC 296.3262 3.0121533
2013-12-14 872.6000 BTC 301.8868 2.8904871
2013-12-15 876.1200 BTC 307.4323 2.8497983
2013-12-16 705.9700 BTC 311.7521 2.2645238
2013-12-17 682.1200 BTC 315.8530 2.1596122
2013-12-18 522.7000 BTC 318.8288 1.6394380
2013-12-19 691.9600 BTC 323.0285 2.1421021
2013-12-20 625.3200 BTC 326.7486 1.9137647
2013-12-21 605.6600 BTC 330.3319 1.8334893
2013-12-22 617.1800 BTC 333.9893 1.8479036
2013-12-23 673.4100 BTC 338.0406 1.9920977
2013-12-24 665.5800 BTC 342.0323 1.9459567
2013-12-25 682.2100 BTC 346.1427 1.9708923
2013-12-26 761.9800 BTC 350.8497 2.1718130
2013-12-27 735.0700 BTC 355.3659 2.0684876
2013-12-28 727.8300 BTC 359.8290 2.0227108
2013-12-29 745.0500 BTC 364.4008 2.0445894
2013-12-30 756.1300 BTC 369.0400 2.0489105
2013-12-31 754.0100 BTC 373.6472 2.0179729
2014-01-01 771.4000 BTC 378.3532 2.0388356
2014-01-02 802.3900 BTC 383.2989 2.0933791
2014-01-03 818.7200 BTC 388.3684 2.1081013
2014-01-04 859.5100 BTC 393.6971 2.1831761
2014-01-05 933.5300 BTC 399.5544 2.3364278
2014-01-06 953.2900 BTC 405.5136 2.3508211
2014-01-07 802.0000 BTC 410.3764 1.9543032
2014-01-08 842.7200 BTC 415.5152 2.0281329
2014-01-09 846.8600 BTC 420.6988 2.0129840
2014-01-10 868.4800 BTC 426.0558 2.0384184
2014-01-11 913.9500 BTC 431.7265 2.1169650
2014-01-12 863.2200 BTC 437.0202 1.9752405
2014-01-13 841.2000 BTC 442.1712 1.9024305
2014-01-14 833.2700 BTC 447.2196 1.8632235
2014-01-15 860.9000 BTC 452.4930 1.9025709
2014-01-16 835.6300 BTC 457.5876 1.8261641
2014-01-17 814.6400 BTC 462.4529 1.7615631
2014-01-18 840.0000 BTC 467.4861 1.7968447
2014-01-19 870.9600 BTC 472.7191 1.8424471
2014-01-20 870.2000 BTC 477.9645 1.8206373
2014-01-21 863.9100 BTC 483.1584 1.7880473
2014-01-22 845.5900 BTC 488.2930 1.7317267
2014-01-23 822.0400 BTC 493.2616 1.6665394
2014-01-24 797.0700 BTC 498.1039 1.6002082
2014-01-25 853.6100 BTC 503.3144 1.6959778
2014-01-26 885.2800 BTC 508.7688 1.7400439
2014-01-27 771.3900 BTC 513.3708 1.5025982
2014-01-28 812.5100 BTC 518.2751 1.5677196
2014-01-29 826.0000 BTC 523.2090 1.5787190
2014-01-30 819.0300 BTC 528.1083 1.5508752
2014-01-31 829.9200 BTC 533.0721 1.5568624
2014-02-01 832.5800 BTC 538.0961 1.5472700
2014-02-02 825.3700 BTC 543.0604 1.5198493
2014-02-03 823.8300 BTC 548.0041 1.5033283
2014-02-04 827.9600 BTC 552.9776 1.4972758
2014-02-05 811.9100 BTC 557.8379 1.4554585
2014-02-06 781.5500 BTC 562.4944 1.3894361
2014-02-07 712.4000 BTC 566.6755 1.2571569
2014-02-08 673.9200 BTC 570.5790 1.1811160
2014-02-09 682.9000 BTC 574.5346 1.1886143
2014-02-10 681.0300 BTC 578.4994 1.1772354
2014-02-11 672.1700 BTC 582.3917 1.1541544
2014-02-12 651.7200 BTC 586.1310 1.1119016
2014-02-13 605.2400 BTC 589.5371 1.0266359
2014-02-14 661.9900 BTC 593.3101 1.1157572
2014-02-15 650.9200 BTC 596.9968 1.0903241
2014-02-16 616.6300 BTC 600.4203 1.0269973
2014-02-17 626.2700 BTC 603.9436 1.0369676
2014-02-18 626.6000 BTC 607.4752 1.0314824
2014-02-19 623.0300 BTC 611.1102 1.0195052
2014-02-20 556.1400 BTC 614.1996 0.9054712
2014-02-21 574.1600 BTC 617.3792 0.9299956
2014-02-22 605.4200 BTC 620.7854 0.9752484
2014-02-23 605.8200 BTC 624.1913 0.9705679
2014-02-24 546.3200 BTC 627.1869 0.8710642
2014-02-25 538.7100 BTC 630.1348 0.8549124
2014-02-26 582.6900 BTC 633.3634 0.9199932
2014-02-27 578.7700 BTC 636.5646 0.9092086
2014-02-28 549.2600 BTC 639.5529 0.8588187
2014-03-01 565.6100 BTC 642.6274 0.8801524
2014-03-02 559.7900 BTC 645.6392 0.8670322
2014-03-03 667.7600 BTC 649.4052 1.0282640
2014-03-04 666.7800 BTC 653.1305 1.0208986
2014-03-05 665.5100 BTC 656.8659 1.0131596
2014-03-06 663.8600 BTC 660.5631 1.0049910
2014-03-07 629.1500 BTC 663.9431 0.9475963
2014-03-08 617.4500 BTC 667.1219 0.9255431
2014-03-09 636.9600 BTC 670.4244 0.9500848
2014-03-10 627.7900 BTC 673.6071 0.9319825
2014-03-11 634.1100 BTC 676.7524 0.9369896
2014-03-12 632.1000 BTC 679.7416 0.9299122
2014-03-13 638.1400 BTC 682.8838 0.9344782
2014-03-14 628.8000 BTC 686.0417 0.9165623
2014-03-15 636.1200 BTC 689.3189 0.9228240
2014-03-16 631.1100 BTC 692.4236 0.9114507
2014-03-17 622.3730 BTC 695.4510 0.8949200
2014-03-18 614.8320 BTC 698.3827 0.8803654
2014-03-19 609.8880 BTC 701.3107 0.8696403
2014-03-20 588.7700 BTC 704.0590 0.8362509
2014-03-21 571.4900 BTC 706.6684 0.8087103
2014-03-22 565.0400 BTC 709.2314 0.7966934
2014-03-23 561.2720 BTC 711.7044 0.7886308
2014-03-24 583.4120 BTC 714.2352 0.8168346
2014-03-25 583.9170 BTC 716.6543 0.8147819
2014-03-26 580.8270 BTC 718.9281 0.8079070
2014-03-27 471.2390 BTC 720.1769 0.6543379
2014-03-28 495.6660 BTC 721.3023 0.6871821
2014-03-29 491.1720 BTC 722.3884 0.6799278
2014-03-30 460.2730 BTC 723.3431 0.6363136
2014-03-31 457.0010 BTC 724.1614 0.6310762
2014-04-01 478.3750 BTC 725.0045 0.6598234
2014-04-02 437.1400 BTC 725.2172 0.6027712
2014-04-03 444.7180 BTC 725.3923 0.6130724
2014-04-04 447.5260 BTC 725.6036 0.6167638
2014-04-05 461.9070 BTC 725.7585 0.6364473
2014-04-06 460.4990 BTC 725.5327 0.6347047
2014-04-07 449.4230 BTC 723.7174 0.6209924
2014-04-08 453.0860 BTC 722.7780 0.6268675
2014-04-09 442.7250 BTC 721.7201 0.6134304
2014-04-10 365.1760 BTC 719.1683 0.5077755
2014-04-11 420.9470 BTC 716.6647 0.5873695
2014-04-12 421.1160 BTC 713.9740 0.5898198
2014-04-13 414.0630 BTC 711.4012 0.5820386
2014-04-14 458.7870 BTC 708.9704 0.6471173
2014-04-15 515.5860 BTC 706.0238 0.7302671
2014-04-16 527.3950 BTC 702.6341 0.7505970
2014-04-17 495.9630 BTC 698.8056 0.7097296
2014-04-18 479.6450 BTC 694.1461 0.6909856
2014-04-19 501.5650 BTC 689.6614 0.7272627
2014-04-20 498.1680 BTC 686.3922 0.7257774
2014-04-21 495.7730 BTC 682.4811 0.7264274
2014-04-22 487.9240 BTC 678.2643 0.7193715
2014-04-23 491.3030 BTC 673.5509 0.7294222
2014-04-24 500.4650 BTC 669.6606 0.7473412
2014-04-25 461.4490 BTC 667.0320 0.6917944
2014-04-26 458.6010 BTC 665.3204 0.6892935
2014-04-27 436.3900 BTC 662.7527 0.6584508
2014-04-28 440.2850 BTC 659.5177 0.6675864
2014-04-29 447.2090 BTC 655.6512 0.6820837
2014-04-30 447.6450 BTC 652.5738 0.6859683
2014-05-01 457.7600 BTC 649.6060 0.7046733
2014-05-02 449.3770 BTC 646.4402 0.6951563
2014-05-03 437.7620 BTC 643.3343 0.6804581
2014-05-04 436.4030 BTC 640.1934 0.6816737
2014-05-05 433.4820 BTC 638.2471 0.6791758
2014-05-06 428.9620 BTC 636.4388 0.6740035
2014-05-07 438.8210 BTC 635.8397 0.6901441
2014-05-08 440.1690 BTC 634.0412 0.6942278
2014-05-09 449.4610 BTC 632.7850 0.7102902
2014-05-10 454.4330 BTC 631.7048 0.7193756
2014-05-11 438.8860 BTC 630.4313 0.6961678
2014-05-12 441.4620 BTC 628.7745 0.7020991
2014-05-13 440.6710 BTC 627.1680 0.7026362
2014-05-14 443.9720 BTC 625.4663 0.7098255
2014-05-15 447.2520 BTC 623.2183 0.7176491
2014-05-16 448.0580 BTC 621.1682 0.7213151
2014-05-17 448.9030 BTC 619.1759 0.7250008
2014-05-18 446.2640 BTC 617.0417 0.7232316
2014-05-19 446.1810 BTC 614.8278 0.7257008
2014-05-20 485.7240 BTC 612.9114 0.7924865
2014-05-21 491.7700 BTC 610.9141 0.8049741
2014-05-22 524.5790 BTC 608.9297 0.8614771
2014-05-23 520.2220 BTC 606.7976 0.8573238
2014-05-24 525.1380 BTC 604.4092 0.8688451
2014-05-25 571.5880 BTC 601.8239 0.9497596
2014-05-26 583.4240 BTC 599.1820 0.9737008
2014-05-27 571.2440 BTC 597.5337 0.9560029
2014-05-28 577.0620 BTC 595.6362 0.9688162
2014-05-29 568.1800 BTC 593.6456 0.9571030
2014-05-30 615.3250 BTC 591.8374 1.0396860
2014-05-31 623.6770 BTC 589.7640 1.0575027
2014-06-01 630.2290 BTC 588.0998 1.0716362
2014-06-02 660.6180 BTC 586.8099 1.1257785
2014-06-03 667.6050 BTC 585.6266 1.1399841
2014-06-04 641.6140 BTC 584.0602 1.0985408
2014-06-05 659.2580 BTC 582.8004 1.1311899
2014-06-06 653.7020 BTC 581.6509 1.1238735
2014-06-07 654.9690 BTC 580.3292 1.1286162
2014-06-08 656.1400 BTC 578.7948 1.1336315
2014-06-09 649.1590 BTC 577.2159 1.1246380
2014-06-10 653.1500 BTC 575.7105 1.1345112
2014-06-11 633.0200 BTC 574.1922 1.1024533
2014-06-12 586.9520 BTC 572.5130 1.0252205
2014-06-13 600.1630 BTC 571.1065 1.0508776
2014-06-14 577.3580 BTC 569.1333 1.0144513
2014-06-15 592.9370 BTC 567.0451 1.0456611
2014-06-16 592.1880 BTC 565.7651 1.0467030
2014-06-17 610.8640 BTC 564.3247 1.0824690
2014-06-18 607.9580 BTC 562.7673 1.0803009
2014-06-19 598.0710 BTC 561.1890 1.0657211
2014-06-20 594.1460 BTC 559.5049 1.0619138
2014-06-21 594.9920 BTC 557.8079 1.0666612
2014-06-22 602.2730 BTC 556.2143 1.0828075
2014-06-23 593.9840 BTC 554.5726 1.0710664
2014-06-24 582.3570 BTC 552.8183 1.0534330
2014-06-25 566.3360 BTC 551.0642 1.0277134
2014-06-26 581.1370 BTC 549.6326 1.0573190
2014-06-27 597.2610 BTC 548.8102 1.0882833
2014-06-28 596.5490 BTC 548.2576 1.0880817
2014-06-29 602.7150 BTC 547.6848 1.1004779
2014-06-30 639.7970 BTC 547.3903 1.1688132
2014-07-01 640.8060 BTC 547.1663 1.1711359
2014-07-02 650.8790 BTC 547.1603 1.1895583
2014-07-03 645.1560 BTC 547.4454 1.1784847
2014-07-04 630.6920 BTC 547.2218 1.1525345
2014-07-05 631.4570 BTC 547.0828 1.1542256
2014-07-06 635.8070 BTC 547.2198 1.1618860
2014-07-07 624.0860 BTC 547.2042 1.1404994
2014-07-08 624.8180 BTC 547.1914 1.1418636
2014-07-09 624.5090 BTC 547.2020 1.1412768
2014-07-10 616.7620 BTC 547.6350 1.1262282
2014-07-11 632.0030 BTC 548.0482 1.1531887
2014-07-12 633.7130 BTC 548.2503 1.1558827
2014-07-13 626.4970 BTC 548.3980 1.1424131
2014-07-14 619.3150 BTC 548.9194 1.1282441
2014-07-15 621.5860 BTC 549.5113 1.1311614
2014-07-16 616.8000 BTC 549.7550 1.1219544
2014-07-17 623.0890 BTC 550.0715 1.1327417
2014-07-18 628.7790 BTC 550.6395 1.1419067
2014-07-19 628.5150 BTC 551.0889 1.1404967
2014-07-20 623.9000 BTC 551.5468 1.1311824
2014-07-21 622.2110 BTC 551.2214 1.1287859
2014-07-22 621.5510 BTC 550.8984 1.1282499
2014-07-23 619.4150 BTC 550.5691 1.1250449
2014-07-24 601.7330 BTC 550.1254 1.0938107
2014-07-25 601.0890 BTC 549.9249 1.0930383
2014-07-26 595.8130 BTC 549.7704 1.0837488
2014-07-27 593.8520 BTC 549.4625 1.0807872
2014-07-28 585.6910 BTC 549.1617 1.0665182
2014-07-29 584.7250 BTC 548.8090 1.0654435
2014-07-30 567.2930 BTC 548.3461 1.0345529
2014-07-31 586.2350 BTC 547.9753 1.0698200
2014-08-01 594.9160 BTC 547.7333 1.0861418
2014-08-02 589.3330 BTC 547.3991 1.0766057
2014-08-03 586.6660 BTC 547.0817 1.0723555
2014-08-04 588.7820 BTC 546.8417 1.0766954
2014-08-05 585.4360 BTC 546.6318 1.0709879
2014-08-06 584.6530 BTC 546.4515 1.0699083
2014-08-07 588.8690 BTC 546.4522 1.0776222
2014-08-08 592.5770 BTC 546.6028 1.0841090
2014-08-09 589.3720 BTC 546.7766 1.0779027
2014-08-10 591.0610 BTC 546.9894 1.0805711
2014-08-11 576.3680 BTC 546.9391 1.0538065
2014-08-12 569.6420 BTC 546.8371 1.0417033
2014-08-13 546.6580 BTC 546.5931 1.0001188
2014-08-14 505.9740 BTC 546.8412 0.9252668
2014-08-15 497.0100 BTC 546.8508 0.9088586
2014-08-16 519.7080 BTC 547.0546 0.9500112
2014-08-17 491.7950 BTC 547.2798 0.8986172
2014-08-18 461.4600 BTC 547.3116 0.8431394
2014-08-19 485.2450 BTC 547.3607 0.8865178
2014-08-20 511.9800 BTC 547.8953 0.9344487
2014-08-21 517.2370 BTC 548.4132 0.9431519
2014-08-22 514.0430 BTC 548.8884 0.9365165
2014-08-23 498.0750 BTC 549.1467 0.9069981
2014-08-24 508.2860 BTC 549.4880 0.9250174
2014-08-25 502.4960 BTC 549.8671 0.9138499
2014-08-26 511.5700 BTC 550.2849 0.9296458
2014-08-27 511.1530 BTC 550.7737 0.9280637
2014-08-28 507.8150 BTC 551.7925 0.9203007
2014-08-29 508.5170 BTC 552.4180 0.9205294
2014-08-30 504.2490 BTC 553.0118 0.9118232
2014-08-31 477.7630 BTC 553.4668 0.8632189
2014-09-01 474.8790 BTC 553.5818 0.8578299
2014-09-02 477.4260 BTC 553.3092 0.8628557
2014-09-03 477.5860 BTC 552.9534 0.8637003
2014-09-04 489.6600 BTC 552.9084 0.8856079
2014-09-05 483.3420 BTC 552.9348 0.8741393
2014-09-06 484.8300 BTC 552.8153 0.8770199
2014-09-07 482.2780 BTC 552.7018 0.8725827
2014-09-08 474.6000 BTC 552.5505 0.8589260
2014-09-09 475.2600 BTC 552.4601 0.8602613
2014-09-10 479.3590 BTC 552.3747 0.8678149
2014-09-11 479.7490 BTC 552.2268 0.8687536
2014-09-12 477.7530 BTC 552.3432 0.8649567
2014-09-13 479.0020 BTC 552.4890 0.8669893
2014-09-14 477.8920 BTC 552.7854 0.8645163
2014-09-15 475.3710 BTC 553.0360 0.8595661
2014-09-16 466.0570 BTC 553.1706 0.8425194
2014-09-17 457.3340 BTC 553.2398 0.8266469
2014-09-18 424.4400 BTC 553.0018 0.7675200
2014-09-19 394.7960 BTC 552.6120 0.7144181
2014-09-20 408.9040 BTC 552.4059 0.7402239
2014-09-21 398.8210 BTC 552.1374 0.7223220
2014-09-22 402.1520 BTC 551.9136 0.7286503
2014-09-23 435.7910 BTC 551.9624 0.7895302
2014-09-24 423.2050 BTC 551.8509 0.7668829
2014-09-25 411.5740 BTC 551.6466 0.7460827
2014-09-26 404.4250 BTC 551.3249 0.7335511
2014-09-27 399.5200 BTC 550.9327 0.7251702
2014-09-28 377.1810 BTC 550.4919 0.6851708
2014-09-29 375.4670 BTC 550.0205 0.6826418
2014-09-30 386.9440 BTC 549.6368 0.7039995
2014-10-01 383.6150 BTC 549.2057 0.6984906
2014-10-02 375.0720 BTC 548.6901 0.6835771
2014-10-03 359.5120 BTC 548.0576 0.6559748
2014-10-04 328.8660 BTC 547.2002 0.6009976
2014-10-05 320.5100 BTC 546.3020 0.5866902
2014-10-06 330.0790 BTC 545.4727 0.6051247
2014-10-07 336.1870 BTC 544.4045 0.6175316
2014-10-08 352.9400 BTC 543.4129 0.6494877
2014-10-09 365.0260 BTC 542.2732 0.6731404
2014-10-10 361.5620 BTC 541.1400 0.6681488
2014-10-11 362.2990 BTC 539.9768 0.6709529
2014-10-12 378.5490 BTC 538.5980 0.7028415
2014-10-13 390.4140 BTC 537.2193 0.7267311
2014-10-14 400.8700 BTC 536.0024 0.7478885
2014-10-15 394.7730 BTC 534.7003 0.7383071
2014-10-16 382.5560 BTC 533.3744 0.7172372
2014-10-17 383.7580 BTC 531.7204 0.7217290
2014-10-18 391.4420 BTC 530.0615 0.7384840
2014-10-19 389.5460 BTC 528.3424 0.7372984
2014-10-20 382.8450 BTC 526.3583 0.7273468
2014-10-21 386.4750 BTC 524.3502 0.7370551
2014-10-22 383.1580 BTC 522.5041 0.7333110
2014-10-23 358.4170 BTC 520.3552 0.6887929
2014-10-24 358.3450 BTC 518.2455 0.6914579
2014-10-25 347.2710 BTC 516.0477 0.6729436
2014-10-26 354.7040 BTC 513.8946 0.6902272
2014-10-27 352.9890 BTC 511.7791 0.6897293
2014-10-28 357.6180 BTC 509.6681 0.7016684
2014-10-29 335.5910 BTC 507.5437 0.6612062
2014-10-30 345.3050 BTC 505.8176 0.6826670
2014-10-31 338.3210 BTC 503.9473 0.6713420
2014-11-01 325.7490 BTC 502.1501 0.6487084
2014-11-02 325.8920 BTC 500.2426 0.6514679
2014-11-03 327.5540 BTC 498.3524 0.6572738
2014-11-04 330.4920 BTC 496.3497 0.6658450
2014-11-05 339.4860 BTC 494.4321 0.6866181
2014-11-06 349.2900 BTC 492.6551 0.7089951
2014-11-07 342.4150 BTC 490.8570 0.6975861
2014-11-08 345.4880 BTC 489.0748 0.7064114
2014-11-09 363.2640 BTC 487.3676 0.7453594
2014-11-10 366.9240 BTC 485.7458 0.7553829
2014-11-11 367.6950 BTC 484.2125 0.7593671
2014-11-12 423.5610 BTC 483.1926 0.8765883
2014-11-13 420.7350 BTC 482.0469 0.8728092
2014-11-14 397.8180 BTC 480.6223 0.8277144
2014-11-15 376.1330 BTC 479.0479 0.7851678
2014-11-16 387.8820 BTC 477.5134 0.8122955
2014-11-17 387.4080 BTC 475.7106 0.8143774
2014-11-18 375.1980 BTC 473.8134 0.7918687
2014-11-19 380.5550 BTC 471.8825 0.8064613
2014-11-20 357.8400 BTC 469.8303 0.7616368
2014-11-21 350.8480 BTC 467.8314 0.7499454
2014-11-22 352.9200 BTC 465.8418 0.7575962
2014-11-23 367.5730 BTC 463.9259 0.7923098
2014-11-24 376.9010 BTC 462.1603 0.8155201
2014-11-25 375.3480 BTC 460.3783 0.8153033
2014-11-26 368.3700 BTC 458.5488 0.8033387
2014-11-27 369.6700 BTC 456.7838 0.8092887
2014-11-28 376.4470 BTC 454.9584 0.8274316
2014-11-29 375.4910 BTC 453.1140 0.8286899
2014-11-30 378.0470 BTC 451.3393 0.8376114
2014-12-01 379.2450 BTC 449.6246 0.8434704
2014-12-02 381.3150 BTC 447.9083 0.8513237
2014-12-03 375.0100 BTC 446.1813 0.8404880
2014-12-04 369.6040 BTC 444.3707 0.8317471
2014-12-05 376.8540 BTC 442.5712 0.8515105
2014-12-06 374.7850 BTC 440.7588 0.8503176
2014-12-07 375.0950 BTC 438.9817 0.8544662
2014-12-08 361.9090 BTC 437.1224 0.8279352
2014-12-09 352.2190 BTC 435.1986 0.8093294
2014-12-10 346.3650 BTC 433.2482 0.7994609
2014-12-11 350.5060 BTC 431.4537 0.8123838
2014-12-12 352.5420 BTC 429.6784 0.8204788
2014-12-13 347.3760 BTC 427.9038 0.8118086
2014-12-14 351.6320 BTC 426.1737 0.8250908
2014-12-15 345.3450 BTC 424.4569 0.8136161
2014-12-16 327.0620 BTC 422.6165 0.7738979
2014-12-17 319.7760 BTC 420.8485 0.7598364
2014-12-18 311.3960 BTC 418.8854 0.7433919
2014-12-19 317.8430 BTC 416.9063 0.7623847
2014-12-20 329.9560 BTC 415.0536 0.7949720
2014-12-21 320.8430 BTC 413.1549 0.7765684
2014-12-22 331.8860 BTC 411.3199 0.8068805
2014-12-23 334.5720 BTC 409.5280 0.8169698
2014-12-24 322.5340 BTC 407.6557 0.7911921
2014-12-25 319.0080 BTC 405.7281 0.7862605
2014-12-26 327.9240 BTC 403.8378 0.8120192
2014-12-27 315.8630 BTC 401.8841 0.7859554
2014-12-28 317.2390 BTC 399.9283 0.7932398
2014-12-29 312.6700 BTC 398.0447 0.7855148
2014-12-30 310.7370 BTC 396.1954 0.7843024
2014-12-31 320.1930 BTC 394.5778 0.8114826
2015-01-01 314.2490 BTC 393.2083 0.7991922
2015-01-02 315.0320 BTC 391.9085 0.8038408
2015-01-03 281.0820 BTC 390.2040 0.7203463
2015-01-04 264.1950 BTC 388.5783 0.6799016
2015-01-05 274.4740 BTC 387.2427 0.7087907
2015-01-06 286.1890 BTC 385.8208 0.7417666
2015-01-07 294.3370 BTC 384.2662 0.7659716
2015-01-08 283.3490 BTC 382.5956 0.7405966
2015-01-09 290.4080 BTC 380.9982 0.7622293
2015-01-10 274.7960 BTC 379.4034 0.7242845
2015-01-11 265.6600 BTC 377.6703 0.7034177
2015-01-12 267.7960 BTC 375.9939 0.7122349
2015-01-13 225.8610 BTC 373.9531 0.6039821
2015-01-14 178.1030 BTC 371.5742 0.4793202
2015-01-15 209.8440 BTC 369.4458 0.5679967
2015-01-16 208.0970 BTC 367.3000 0.5665587
2015-01-17 199.2600 BTC 365.1215 0.5457362
2015-01-18 210.3390 BTC 363.2113 0.5791092
2015-01-19 214.8610 BTC 361.3540 0.5945997
2015-01-20 211.3150 BTC 359.4532 0.5878790
2015-01-21 226.8970 BTC 357.6626 0.6343884
2015-01-22 233.4060 BTC 355.8322 0.6559440
2015-01-23 232.8790 BTC 354.0432 0.6577700
2015-01-24 247.8470 BTC 352.3505 0.7034105
2015-01-25 253.7180 BTC 350.7179 0.7234248
2015-01-26 273.4730 BTC 349.2813 0.7829592
2015-01-27 263.4750 BTC 347.7685 0.7576160
2015-01-28 233.9150 BTC 346.0153 0.6760249
2015-01-29 233.5130 BTC 344.2565 0.6783111
2015-01-30 226.4250 BTC 342.4613 0.6611696
2015-01-31 217.4640 BTC 340.5932 0.6384861
2015-02-01 226.9720 BTC 338.8009 0.6699274
2015-02-02 238.2290 BTC 337.1070 0.7066866
2015-02-03 227.2680 BTC 335.4014 0.6776001
2015-02-04 226.8530 BTC 333.7551 0.6796990
2015-02-05 217.1110 BTC 332.2742 0.6534092
2015-02-06 222.2660 BTC 331.0418 0.6714137
2015-02-07 227.7540 BTC 329.7479 0.6906913
2015-02-08 223.4120 BTC 328.4950 0.6801078
2015-02-09 220.1100 BTC 327.1947 0.6727188
2015-02-10 219.8390 BTC 325.6522 0.6750731
2015-02-11 219.1850 BTC 324.1949 0.6760903
2015-02-12 221.7640 BTC 322.8391 0.6869181
2015-02-13 235.4270 BTC 321.6320 0.7319764
2015-02-14 257.3210 BTC 320.6163 0.8025826
2015-02-15 234.8250 BTC 319.5994 0.7347479
2015-02-16 233.8430 BTC 318.5878 0.7339986
2015-02-17 243.6100 BTC 317.5640 0.7671209
2015-02-18 236.3260 BTC 316.5119 0.7466575
2015-02-19 240.2830 BTC 315.5492 0.7614756
2015-02-20 243.7790 BTC 314.7225 0.7745840
2015-02-21 244.5340 BTC 314.1201 0.7784729
2015-02-22 235.9770 BTC 313.5163 0.7526785
2015-02-23 238.8920 BTC 312.8650 0.7635626
2015-02-24 238.7350 BTC 312.1689 0.7647623
2015-02-25 237.4700 BTC 311.3441 0.7627252
2015-02-26 236.4260 BTC 310.4255 0.7616190
2015-02-27 253.8280 BTC 309.6560 0.8197096
2015-02-28 254.2630 BTC 308.8843 0.8231658
2015-03-01 260.2020 BTC 308.0390 0.8447047
2015-03-02 275.6700 BTC 307.2194 0.8973067
2015-03-03 281.7020 BTC 306.3682 0.9194884
2015-03-04 273.0920 BTC 305.4990 0.8939210
2015-03-05 276.1780 BTC 304.7392 0.9062766
2015-03-06 272.7230 BTC 303.9461 0.8972742
2015-03-07 276.2610 BTC 303.1234 0.9113813
2015-03-08 274.3540 BTC 302.3006 0.9075537
2015-03-09 289.6070 BTC 301.6346 0.9601253
2015-03-10 291.7600 BTC 300.9581 0.9694375
2015-03-11 296.3790 BTC 300.3382 0.9868175
2015-03-12 294.3540 BTC 299.8806 0.9815707
2015-03-13 285.3370 BTC 299.3591 0.9531595
2015-03-14 281.8850 BTC 298.8921 0.9430996
2015-03-15 286.3930 BTC 298.4041 0.9597488
2015-03-16 290.5930 BTC 297.9585 0.9752802
2015-03-17 285.5050 BTC 297.4434 0.9598634
2015-03-18 256.2990 BTC 296.8770 0.8633172
2015-03-19 260.9280 BTC 296.2743 0.8806974
2015-03-20 261.7490 BTC 295.7274 0.8851024
2015-03-21 260.0250 BTC 295.2579 0.8806707
2015-03-22 267.9600 BTC 294.8441 0.9088192
2015-03-23 266.7400 BTC 294.4097 0.9060163
2015-03-24 245.5950 BTC 293.8033 0.8359164
2015-03-25 246.1970 BTC 293.1370 0.8398702
2015-03-26 248.5320 BTC 292.4173 0.8499225
2015-03-27 247.0290 BTC 291.7359 0.8467555
2015-03-28 252.7980 BTC 291.0739 0.8685012
2015-03-29 242.7130 BTC 290.2128 0.8363277
2015-03-30 247.5260 BTC 289.3599 0.8554260
2015-03-31 244.2240 BTC 288.4780 0.8465949
2015-04-01 247.2720 BTC 287.2188 0.8609186
2015-04-02 253.0050 BTC 286.0207 0.8845688
2015-04-03 254.3220 BTC 284.9957 0.8923712
2015-04-04 253.6970 BTC 284.1212 0.8929182
2015-04-05 260.5980 BTC 283.2120 0.9201515
2015-04-06 255.4920 BTC 282.2698 0.9051341
2015-04-07 253.1800 BTC 281.3982 0.8997214
2015-04-08 245.0220 BTC 280.4301 0.8737364
2015-04-09 243.6760 BTC 279.6147 0.8714707
2015-04-10 236.0720 BTC 278.7948 0.8467589
2015-04-11 236.5520 BTC 277.9636 0.8510178
2015-04-12 236.1530 BTC 277.0249 0.8524612
2015-04-13 224.5870 BTC 275.9370 0.8139069
2015-04-14 219.1590 BTC 274.8213 0.7974599
2015-04-15 223.8330 BTC 273.7889 0.8175385
2015-04-16 228.5730 BTC 272.7811 0.8379356
2015-04-17 222.8820 BTC 271.6842 0.8203716
2015-04-18 223.3560 BTC 270.5975 0.8254178
2015-04-19 222.6000 BTC 269.4872 0.8260133
2015-04-20 224.6260 BTC 268.3828 0.8369614
2015-04-21 235.2690 BTC 267.3396 0.8800380
2015-04-22 234.1760 BTC 266.3336 0.8792581
2015-04-23 236.4620 BTC 265.3826 0.8910230
2015-04-24 231.2680 BTC 264.3427 0.8748795
2015-04-25 226.3900 BTC 263.2827 0.8598741
2015-04-26 219.4300 BTC 262.1709 0.8369733
2015-04-27 229.2860 BTC 261.2235 0.8777386
2015-04-28 225.8550 BTC 260.3209 0.8676021
2015-04-29 225.8080 BTC 259.4598 0.8703004
2015-04-30 236.1450 BTC 258.6430 0.9130154
2015-05-01 232.0790 BTC 257.7825 0.9002899
2015-05-02 234.9300 BTC 256.9793 0.9141980
2015-05-03 240.3580 BTC 256.1845 0.9382222
2015-05-04 239.0180 BTC 255.4250 0.9357658
2015-05-05 236.1210 BTC 254.7755 0.9267808
2015-05-06 229.7820 BTC 254.1326 0.9041814
2015-05-07 237.3340 BTC 253.6036 0.9358463
2015-05-08 243.8630 BTC 253.0752 0.9635990
2015-05-09 241.8320 BTC 252.4457 0.9579564
2015-05-10 240.2960 BTC 251.8704 0.9540462
2015-05-11 242.1580 BTC 251.2295 0.9638917
2015-05-12 241.1120 BTC 250.5619 0.9622851
2015-05-13 236.3770 BTC 249.9465 0.9457103
2015-05-14 236.9290 BTC 249.3602 0.9501475
2015-05-15 237.6050 BTC 248.7151 0.9553300
2015-05-16 236.1530 BTC 248.1457 0.9516706
2015-05-17 236.8020 BTC 247.5712 0.9565007
2015-05-18 233.1280 BTC 247.0030 0.9438265
2015-05-19 231.9470 BTC 246.4402 0.9411896
2015-05-20 234.0180 BTC 245.8247 0.9519711
2015-05-21 235.3440 BTC 245.2611 0.9595651
2015-05-22 240.3480 BTC 244.7276 0.9821040
2015-05-23 238.8720 BTC 244.4261 0.9772768
2015-05-24 240.9530 BTC 244.2601 0.9864606
2015-05-25 237.1100 BTC 243.9932 0.9717892
2015-05-26 237.1160 BTC 243.6427 0.9732119
2015-05-27 237.2830 BTC 243.2352 0.9755291
2015-05-28 237.4080 BTC 242.9070 0.9773616
2015-05-29 237.0960 BTC 242.5262 0.9776096
2015-05-30 233.3450 BTC 242.2302 0.9633193
2015-05-31 230.1900 BTC 241.9768 0.9512895
2015-06-01 222.9260 BTC 241.6563 0.9224919
2015-06-02 225.8030 BTC 241.6559 0.9343989
2015-06-03 225.8740 BTC 241.9971 0.9333747
2015-06-04 224.3240 BTC 242.1005 0.9265737
2015-06-05 224.9520 BTC 242.2209 0.9287058
2015-06-06 225.6190 BTC 242.4092 0.9307361
2015-06-07 222.8810 BTC 242.4988 0.9191014
2015-06-08 228.4890 BTC 242.5961 0.9418493
2015-06-09 229.0480 BTC 242.7228 0.9436608
2015-06-10 228.8030 BTC 242.7364 0.9425985
2015-06-11 229.7050 BTC 242.7100 0.9464176
2015-06-12 229.9820 BTC 242.6893 0.9476396
2015-06-13 232.4020 BTC 242.5790 0.9580467
2015-06-14 233.5430 BTC 242.4349 0.9633227
2015-06-15 236.8230 BTC 242.1731 0.9779080
2015-06-16 250.8950 BTC 242.0832 1.0363998
2015-06-17 249.2840 BTC 242.1930 1.0292783
2015-06-18 249.0070 BTC 242.3037 1.0276650
2015-06-19 244.6060 BTC 242.4335 1.0089611
2015-06-20 245.2120 BTC 242.6317 1.0106345
2015-06-21 243.9440 BTC 242.7530 1.0049064
2015-06-22 246.9900 BTC 242.8155 1.0171919
2015-06-23 244.2960 BTC 242.9372 1.0055934
2015-06-24 240.5150 BTC 243.0348 0.9896321
2015-06-25 242.7990 BTC 243.2182 0.9982762
2015-06-26 243.5940 BTC 243.3706 1.0009180
2015-06-27 250.9900 BTC 243.5366 1.0306050
2015-06-28 249.0110 BTC 243.7194 1.0217118
2015-06-29 257.0640 BTC 243.9834 1.0536128
2015-06-30 263.0720 BTC 244.2922 1.0768744
2015-07-01 258.6210 BTC 244.5739 1.0574352
2015-07-02 255.4120 BTC 244.8142 1.0432892
2015-07-03 256.3360 BTC 244.9636 1.0464251
2015-07-04 260.8860 BTC 244.9890 1.0648885
2015-07-05 271.9130 BTC 245.2539 1.1086999
2015-07-06 269.0300 BTC 245.5053 1.0958217
2015-07-07 266.2070 BTC 245.6667 1.0836106
2015-07-08 270.7850 BTC 245.9128 1.1011423
2015-07-09 269.2280 BTC 246.1196 1.0938911
2015-07-10 284.8940 BTC 246.4132 1.1561636
2015-07-11 293.1150 BTC 246.7602 1.1878534
2015-07-12 310.8670 BTC 247.2952 1.2570686
2015-07-13 292.0540 BTC 247.6749 1.1791828
2015-07-14 287.4640 BTC 248.0230 1.1590217
2015-07-15 285.8290 BTC 248.3684 1.1508269
2015-07-16 278.0890 BTC 248.6660 1.1183234
2015-07-17 279.4720 BTC 248.8492 1.1230578
2015-07-18 274.9010 BTC 248.9966 1.1040353
2015-07-19 273.6140 BTC 249.0924 1.0984440
2015-07-20 278.9810 BTC 249.1160 1.1198838
2015-07-21 275.8330 BTC 249.0741 1.1074336
2015-07-22 277.2220 BTC 249.1036 1.1128783
2015-07-23 276.0490 BTC 249.1027 1.1081736
2015-07-24 288.2780 BTC 249.2138 1.1567499
2015-07-25 288.6970 BTC 249.3026 1.1580183
2015-07-26 292.6860 BTC 249.4335 1.1734027
2015-07-27 293.6240 BTC 249.4622 1.1770278
2015-07-28 294.4270 BTC 249.4813 1.1801566
2015-07-29 289.5900 BTC 249.4328 1.1609940
2015-07-30 287.7220 BTC 249.3854 1.1537241
2015-07-31 284.6500 BTC 249.3805 1.1414283
2015-08-01 281.6010 BTC 249.3785 1.1292113
2015-08-02 282.6140 BTC 249.3515 1.1333961
2015-08-03 281.2270 BTC 249.2846 1.1281362
2015-08-04 285.2180 BTC 249.2825 1.1441554
2015-08-05 281.8820 BTC 249.4653 1.1299447
2015-08-06 278.5770 BTC 249.5913 1.1161324
2015-08-07 279.5850 BTC 249.7187 1.1195995
2015-08-08 260.9970 BTC 249.7257 1.0451348
2015-08-09 265.0830 BTC 249.7051 1.0615841
2015-08-10 264.4700 BTC 249.6889 1.0591980
2015-08-11 270.3860 BTC 249.8660 1.0821239
2015-08-12 266.3760 BTC 250.0101 1.0654608
2015-08-13 264.0800 BTC 250.1212 1.0558081
2015-08-14 265.6800 BTC 250.2544 1.0616396
2015-08-15 261.5510 BTC 250.3169 1.0448793
2015-08-16 258.5070 BTC 250.4298 1.0322535
2015-08-17 257.9760 BTC 250.5044 1.0298263
2015-08-18 211.0790 BTC 250.2676 0.8434130
2015-08-19 226.6840 BTC 250.1206 0.9062989
2015-08-20 235.3500 BTC 249.9945 0.9414208
2015-08-21 232.5690 BTC 249.8391 0.9308751
2015-08-22 230.3900 BTC 249.6726 0.9227684
2015-08-23 228.1690 BTC 249.4410 0.9147214
2015-08-24 210.4950 BTC 249.1196 0.8449556
2015-08-25 221.6090 BTC 248.8941 0.8903747
2015-08-26 225.8310 BTC 248.7570 0.9078377
2015-08-27 224.7690 BTC 248.6219 0.9040593
2015-08-28 231.3960 BTC 248.5885 0.9308393
2015-08-29 229.7800 BTC 248.5402 0.9245185
2015-08-30 228.7610 BTC 248.4874 0.9206142
2015-08-31 230.0560 BTC 248.5264 0.9256802
2015-09-01 228.1210 BTC 248.5905 0.9176579
2015-09-02 229.2840 BTC 248.6294 0.9221918
2015-09-03 227.1830 BTC 248.6195 0.9137780
2015-09-04 230.2980 BTC 248.6724 0.9261099
2015-09-05 235.0190 BTC 248.7557 0.9447782
2015-09-06 239.8400 BTC 248.8789 0.9636816
2015-09-07 239.8470 BTC 248.9876 0.9632889
2015-09-08 243.6070 BTC 249.0472 0.9781561
2015-09-09 238.1680 BTC 249.0757 0.9562074
2015-09-10 238.4770 BTC 249.0901 0.9573927
2015-09-11 240.1070 BTC 249.1532 0.9636922
2015-09-12 235.2290 BTC 249.2163 0.9438747
2015-09-13 230.5120 BTC 249.2955 0.9246537
2015-09-14 230.6440 BTC 249.3052 0.9251472
2015-09-15 230.3040 BTC 249.3370 0.9236656
2015-09-16 229.0910 BTC 249.3604 0.9187144
2015-09-17 229.8100 BTC 249.3152 0.9217650
2015-09-18 232.9750 BTC 249.3216 0.9344358
2015-09-19 231.4930 BTC 249.2970 0.9285831
2015-09-20 231.2120 BTC 249.2317 0.9276990
2015-09-21 227.0850 BTC 249.1465 0.9114519
2015-09-22 230.6180 BTC 249.1072 0.9257783
2015-09-23 230.2830 BTC 249.1107 0.9244202
2015-09-24 234.5290 BTC 249.0907 0.9415406
2015-09-25 235.1440 BTC 249.0284 0.9442456
2015-09-26 234.3400 BTC 248.9749 0.9412193
2015-09-27 232.7570 BTC 248.9211 0.9350635
2015-09-28 239.1420 BTC 248.8995 0.9607974
2015-09-29 236.6870 BTC 248.8679 0.9510547
2015-09-30 236.0600 BTC 248.8656 0.9485439
2015-10-01 237.5490 BTC 248.8701 0.9545101
2015-10-02 237.2930 BTC 248.8678 0.9534900
2015-10-03 238.7300 BTC 248.8862 0.9591932
2015-10-04 238.2590 BTC 248.8967 0.9572608
2015-10-05 240.3830 BTC 248.9485 0.9655934
2015-10-06 246.0630 BTC 249.0493 0.9880092
2015-10-07 242.9690 BTC 249.1132 0.9753355
2015-10-08 242.3040 BTC 249.1630 0.9724720
2015-10-09 243.9310 BTC 249.1885 0.9789013
2015-10-10 244.9410 BTC 249.2319 0.9827835
2015-10-11 247.0500 BTC 249.2754 0.9910723
2015-10-12 245.3080 BTC 249.3340 0.9838530
2015-10-13 249.5080 BTC 249.4225 1.0003427
2015-10-14 251.9890 BTC 249.5276 1.0098644
2015-10-15 254.3200 BTC 249.6484 1.0187129
2015-10-16 262.8690 BTC 249.8325 1.0521811
2015-10-17 270.6400 BTC 250.0988 1.0821322
2015-10-18 261.6430 BTC 250.3235 1.0452195
2015-10-19 263.4370 BTC 250.6129 1.0511711
2015-10-20 269.4630 BTC 250.9247 1.0738798
2015-10-21 266.2720 BTC 251.2133 1.0599439
2015-10-22 274.0230 BTC 251.5683 1.0892590
2015-10-23 276.4960 BTC 251.9365 1.0974831
2015-10-24 281.6540 BTC 252.3367 1.1161832
2015-10-25 283.6800 BTC 252.7710 1.1222807
2015-10-26 285.3000 BTC 253.1768 1.1268806
2015-10-27 293.7880 BTC 253.6392 1.1582909
2015-10-28 304.6180 BTC 254.1807 1.1984307
2015-10-29 313.8550 BTC 254.7818 1.2318580
2015-10-30 328.0150 BTC 255.4820 1.2839063
2015-10-31 314.1660 BTC 256.0661 1.2268942
2015-11-01 325.4310 BTC 256.7224 1.2676376
2015-11-02 361.1890 BTC 257.6107 1.4020727
2015-11-03 403.4170 BTC 258.7002 1.5593997
2015-11-04 411.5630 BTC 259.8593 1.5837915
2015-11-05 386.3540 BTC 260.8404 1.4811894
2015-11-06 374.4700 BTC 261.7680 1.4305417
2015-11-07 386.4820 BTC 262.7770 1.4707601
2015-11-08 373.3680 BTC 263.7015 1.4158736
2015-11-09 380.2570 BTC 264.6534 1.4368112
2015-11-10 336.8190 BTC 265.3143 1.2695094
2015-11-11 311.0840 BTC 265.8184 1.1702879
2015-11-12 338.1520 BTC 266.4994 1.2688657
2015-11-13 336.7530 BTC 267.1649 1.2604688
2015-11-14 332.9060 BTC 267.7500 1.2433465
2015-11-15 320.1660 BTC 268.2582 1.1934992
2015-11-16 330.7510 BTC 268.7846 1.2305431
2015-11-17 335.0940 BTC 269.2990 1.2443194
2015-11-18 334.5900 BTC 269.8416 1.2399494
2015-11-19 326.1490 BTC 270.3469 1.2064091
2015-11-20 322.0220 BTC 270.8161 1.1890800
2015-11-21 326.9270 BTC 271.2878 1.2050928
2015-11-22 324.5360 BTC 271.6637 1.1946241
2015-11-23 323.0460 BTC 272.0495 1.1874529
2015-11-24 320.0460 BTC 272.4341 1.1747648
2015-11-25 328.2060 BTC 272.8442 1.2029061
2015-11-26 352.6840 BTC 273.4404 1.2898023
2015-11-27 358.0420 BTC 273.9628 1.3068998
2015-11-28 357.3810 BTC 274.4219 1.3023051
2015-11-29 371.2940 BTC 274.8535 1.3508796
2015-11-30 377.3210 BTC 275.4626 1.3697724
2015-12-01 362.4880 BTC 275.9984 1.3133698
2015-12-02 359.1870 BTC 276.5224 1.2989435
2015-12-03 361.0460 BTC 277.1150 1.3028743
2015-12-04 363.1830 BTC 277.7129 1.3077642
2015-12-05 388.9490 BTC 278.5275 1.3964472
2015-12-06 388.7830 BTC 279.3502 1.3917406
2015-12-07 395.5360 BTC 280.1827 1.4117074
2015-12-08 415.5630 BTC 281.1808 1.4779210
2015-12-09 417.5630 BTC 282.1832 1.4797584
2015-12-10 415.4790 BTC 283.1791 1.4671949
2015-12-11 451.9380 BTC 284.3481 1.5893826
2015-12-12 434.9970 BTC 285.3931 1.5242027
2015-12-13 433.7550 BTC 286.4008 1.5145035
2015-12-14 444.1820 BTC 287.4762 1.5451088
2015-12-15 465.3210 BTC 288.6969 1.6117979
2015-12-16 454.9340 BTC 289.8779 1.5693987
2015-12-17 456.0780 BTC 291.0804 1.5668452
2015-12-18 463.6160 BTC 292.3588 1.5857776
2015-12-19 462.3220 BTC 293.6496 1.5744000
2015-12-20 442.6850 BTC 294.7930 1.5016808
2015-12-21 438.6390 BTC 295.9174 1.4823023
2015-12-22 436.5720 BTC 296.9985 1.4699469
2015-12-23 442.4010 BTC 298.1450 1.4838449
2015-12-24 454.9850 BTC 299.4051 1.5196301
2015-12-25 455.6530 BTC 300.6627 1.5154955
2015-12-26 417.2740 BTC 301.7790 1.3827139
2015-12-27 422.8230 BTC 302.9057 1.3958899
2015-12-28 422.2790 BTC 304.0329 1.3889253
2015-12-29 432.9830 BTC 305.1943 1.4187125
2015-12-30 426.6200 BTC 306.3389 1.3926406
2015-12-31 430.5670 BTC 307.5281 1.4000899
2016-01-01 434.3340 BTC 308.7328 1.4068283
2016-01-02 433.4380 BTC 309.9605 1.3983650
2016-01-03 430.0110 BTC 311.1856 1.3818474
2016-01-04 433.0910 BTC 312.4364 1.3861734
2016-01-05 431.9600 BTC 314.0141 1.3756069
2016-01-06 429.1050 BTC 315.4600 1.3602518
2016-01-07 458.0480 BTC 317.0507 1.4447154
2016-01-08 453.2300 BTC 318.6268 1.4224477
2016-01-09 447.6110 BTC 320.1784 1.3980049
2016-01-10 447.9910 BTC 321.7486 1.3923636
2016-01-11 448.4280 BTC 323.4481 1.3863987
2016-01-12 435.6900 BTC 324.9772 1.3406785
2016-01-13 432.3710 BTC 326.4525 1.3244529
2016-01-14 430.3060 BTC 327.9206 1.3122260
2016-01-15 364.3310 BTC 328.8702 1.1078262
2016-01-16 387.5360 BTC 329.9970 1.1743622
2016-01-17 382.2990 BTC 331.0937 1.1546550
2016-01-18 387.1680 BTC 332.2159 1.1654107
2016-01-19 380.1490 BTC 333.3018 1.1405547
2016-01-20 420.2300 BTC 334.6657 1.2556708
2016-01-21 410.2620 BTC 335.9735 1.2211143
2016-01-22 382.4920 BTC 337.0606 1.1347872
2016-01-23 387.4910 BTC 338.1496 1.1459157
2016-01-24 402.9710 BTC 339.3149 1.1876020
2016-01-25 391.7260 BTC 340.3997 1.1507824
2016-01-26 392.1530 BTC 341.4608 1.1484571
2016-01-27 394.9720 BTC 342.5808 1.1529309
2016-01-28 380.2890 BTC 343.5937 1.1067984
2016-01-29 379.4740 BTC 344.5892 1.1012359
2016-01-30 378.2550 BTC 345.6108 1.0944536
2016-01-31 368.7670 BTC 346.5984 1.0639606
2016-02-01 373.0560 BTC 347.6156 1.0731855
2016-02-02 374.4480 BTC 348.6452 1.0740088
2016-02-03 369.9490 BTC 349.6513 1.0580512
2016-02-04 389.5940 BTC 350.7926 1.1106105
2016-02-05 386.5490 BTC 351.8896 1.0984952
2016-02-06 376.5220 BTC 352.9255 1.0668597
2016-02-07 376.6200 BTC 353.9641 1.0640061
2016-02-08 373.4470 BTC 355.0096 1.0519350
2016-02-09 376.0290 BTC 356.0482 1.0561181
2016-02-10 381.6490 BTC 357.1294 1.0686574
2016-02-11 379.6540 BTC 358.1660 1.0599944
2016-02-12 384.2630 BTC 359.2312 1.0696817
2016-02-13 391.8600 BTC 360.3563 1.0874237
2016-02-14 407.2300 BTC 361.6025 1.1261813
2016-02-15 400.1850 BTC 362.7528 1.1031891
2016-02-16 407.4880 BTC 363.9728 1.1195561
2016-02-17 416.3220 BTC 365.2604 1.1397949
2016-02-18 422.3730 BTC 366.5806 1.1521968
2016-02-19 420.7850 BTC 367.8913 1.1437755
2016-02-20 437.1640 BTC 369.3086 1.1837362
2016-02-21 438.7980 BTC 370.7411 1.1835700
2016-02-22 437.7480 BTC 372.1508 1.1762650
2016-02-23 420.7360 BTC 373.3985 1.1267748
2016-02-24 424.9550 BTC 374.6984 1.1341255
2016-02-25 424.5440 BTC 376.0001 1.1291061
2016-02-26 432.1520 BTC 377.3445 1.1452452
2016-02-27 432.5190 BTC 378.6844 1.1421623
2016-02-28 433.5040 BTC 380.0162 1.1407514
2016-02-29 437.6970 BTC 381.3904 1.1476351
2016-03-01 435.1230 BTC 382.7162 1.1369337
2016-03-02 423.9890 BTC 383.9448 1.1042968
2016-03-03 421.6510 BTC 385.1400 1.0947993
2016-03-04 410.9390 BTC 386.1977 1.0640639
2016-03-05 400.5700 BTC 387.1257 1.0347285
2016-03-06 407.7070 BTC 388.1690 1.0503336
2016-03-07 414.3210 BTC 389.2468 1.0644173
2016-03-08 413.9720 BTC 390.2790 1.0607078
2016-03-09 414.8600 BTC 391.3403 1.0601002
2016-03-10 417.1310 BTC 392.3625 1.0631265
2016-03-11 421.6900 BTC 393.3996 1.0719125
2016-03-12 411.6240 BTC 394.3280 1.0438620
2016-03-13 414.0650 BTC 395.2593 1.0475781
2016-03-14 416.4380 BTC 396.1960 1.0510908
2016-03-15 416.8300 BTC 397.0749 1.0497516
2016-03-16 417.0110 BTC 397.8777 1.0480884
2016-03-17 420.6210 BTC 398.6403 1.0551392
2016-03-18 409.5480 BTC 399.2227 1.0258636
2016-03-19 410.4440 BTC 399.9104 1.0263399
2016-03-20 413.7550 BTC 400.5413 1.0329897
2016-03-21 413.3070 BTC 400.9135 1.0309131
2016-03-22 418.0890 BTC 401.0183 1.0425682
2016-03-23 418.0410 BTC 401.0646 1.0423283
2016-03-24 416.3940 BTC 401.2792 1.0376666
2016-03-25 417.1770 BTC 401.5842 1.0388281
2016-03-26 417.9450 BTC 401.8090 1.0401585
2016-03-27 426.7650 BTC 402.1904 1.0611020
2016-03-28 424.2310 BTC 402.5045 1.0539783
2016-03-29 416.5160 BTC 403.0737 1.0333494
2016-03-30 414.8160 BTC 403.8147 1.0272435
2016-03-31 416.7290 BTC 404.3759 1.0305484
2016-04-01 417.9600 BTC 404.9560 1.0321121
2016-04-02 420.8730 BTC 405.5843 1.0376954
2016-04-03 420.9040 BTC 406.3039 1.0359339
2016-04-04 421.4440 BTC 406.9517 1.0356118
2016-04-05 424.0300 BTC 407.5870 1.0403424
2016-04-06 423.4130 BTC 408.2214 1.0372141
2016-04-07 422.7450 BTC 408.9114 1.0338304
2016-04-08 420.3490 BTC 409.6137 1.0262083
2016-04-09 419.4110 BTC 410.2743 1.0222697
2016-04-10 421.5640 BTC 410.9674 1.0257846
2016-04-11 422.4830 BTC 411.6776 1.0262472
2016-04-12 425.1900 BTC 412.4287 1.0309419
2016-04-13 423.7340 BTC 413.1110 1.0257146
2016-04-14 424.2820 BTC 413.6224 1.0257713
2016-04-15 429.7130 BTC 414.1344 1.0376174
2016-04-16 430.5720 BTC 414.6571 1.0383807
2016-04-17 427.3990 BTC 415.0579 1.0297334
2016-04-18 428.5910 BTC 415.4241 1.0316951
2016-04-19 435.5090 BTC 415.9457 1.0470333
2016-04-20 441.3890 BTC 416.5328 1.0596739
2016-04-21 449.4250 BTC 417.1641 1.0773337
2016-04-22 445.7370 BTC 417.7538 1.0669849
2016-04-23 450.2820 BTC 418.1919 1.0767354
2016-04-24 458.5550 BTC 418.6903 1.0952129
2016-04-25 461.4260 BTC 419.1609 1.1008326
2016-04-26 466.0890 BTC 419.5218 1.1110006
2016-04-27 444.6870 BTC 419.7155 1.0594962
2016-04-28 449.0110 BTC 419.9551 1.0691882
2016-04-29 455.0970 BTC 419.9776 1.0836220
2016-04-30 448.3180 BTC 420.0728 1.0672389
2016-05-01 451.8750 BTC 420.2022 1.0753751
2016-05-02 444.6690 BTC 420.2057 1.0582175
2016-05-03 450.3040 BTC 420.0984 1.0719012
2016-05-04 446.7220 BTC 420.0398 1.0635231
2016-05-05 447.9760 BTC 419.9819 1.0666555
2016-05-06 459.6030 BTC 419.9532 1.0944147
2016-05-07 458.5360 BTC 419.9262 1.0919443
2016-05-08 458.5480 BTC 420.0395 1.0916783
2016-05-09 460.4830 BTC 420.1955 1.0958779
2016-05-10 450.8950 BTC 420.2978 1.0727988
2016-05-11 452.7280 BTC 420.3716 1.0769710
2016-05-12 454.7660 BTC 420.3700 1.0818231
2016-05-13 455.6700 BTC 420.3701 1.0839733
2016-05-14 455.6710 BTC 420.6444 1.0832689
2016-05-15 457.5680 BTC 420.8926 1.0871372
2016-05-16 454.1630 BTC 421.1203 1.0784637
2016-05-17 453.7830 BTC 421.2689 1.0771813
2016-05-18 454.6190 BTC 421.4689 1.0786537
2016-05-19 438.7150 BTC 421.5271 1.0407753
2016-05-20 442.6760 BTC 421.5867 1.0500237
2016-05-21 443.1880 BTC 421.6563 1.0510645
2016-05-22 439.3230 BTC 421.7228 1.0417339
2016-05-23 444.1550 BTC 421.8019 1.0529944
2016-05-24 445.9810 BTC 421.9020 1.0570724
2016-05-25 449.5990 BTC 422.0484 1.0652783
2016-05-26 453.3840 BTC 422.0151 1.0743313
2016-05-27 473.4640 BTC 422.1596 1.1215284
2016-05-28 530.0400 BTC 422.7484 1.2537954
2016-05-29 526.2330 BTC 423.3073 1.2431465
2016-05-30 533.8640 BTC 423.9175 1.2593582
2016-05-31 531.3860 BTC 424.6011 1.2514947
2016-06-01 536.9200 BTC 425.3478 1.2623080
2016-06-02 537.9720 BTC 426.1169 1.2624986
2016-06-03 569.1940 BTC 427.5802 1.3311982
2016-06-04 572.7270 BTC 428.9030 1.3353299
2016-06-05 574.9770 BTC 430.2793 1.3362879
2016-06-06 585.5370 BTC 431.6962 1.3563636
2016-06-07 576.5970 BTC 433.0994 1.3313272
2016-06-08 581.6450 BTC 434.2523 1.3394171
2016-06-09 574.6300 BTC 435.4264 1.3196949
2016-06-10 577.4700 BTC 436.8191 1.3219888
2016-06-11 606.7270 BTC 438.3851 1.3840047
2016-06-12 672.7840 BTC 440.3123 1.5279700
2016-06-13 704.3760 BTC 442.5455 1.5916464
2016-06-14 685.5590 BTC 444.6413 1.5418249
2016-06-15 694.4690 BTC 446.7805 1.5543850
2016-06-16 766.3080 BTC 449.5378 1.7046574
2016-06-17 748.9090 BTC 452.1766 1.6562310
2016-06-18 756.2270 BTC 454.8764 1.6624888
2016-06-19 763.7810 BTC 457.6980 1.6687446
2016-06-20 737.2260 BTC 460.2992 1.6016235
2016-06-21 666.6520 BTC 462.3864 1.4417639
2016-06-22 596.1160 BTC 464.0018 1.2847277
2016-06-23 623.9770 BTC 465.6760 1.3399380
2016-06-24 665.2990 BTC 467.6671 1.4225911
2016-06-25 665.1230 BTC 469.7285 1.4159732
2016-06-26 629.3670 BTC 471.5338 1.3347229
2016-06-27 655.2750 BTC 473.5469 1.3837595
2016-06-28 647.0010 BTC 475.4824 1.3607253
2016-06-29 639.8900 BTC 477.3270 1.3405695
2016-06-30 673.3370 BTC 479.4247 1.4044686
2016-07-01 676.2960 BTC 481.5107 1.4045296
2016-07-02 703.7020 BTC 483.7381 1.4547169
2016-07-03 658.6640 BTC 485.5341 1.3565762
2016-07-04 683.6620 BTC 487.5589 1.4022141
2016-07-05 670.6270 BTC 489.4385 1.3701967
2016-07-06 677.3310 BTC 491.3028 1.3786426
2016-07-07 640.5620 BTC 492.8613 1.2996800
2016-07-08 666.5230 BTC 494.6166 1.3475549
2016-07-09 650.9600 BTC 496.1437 1.3120392
2016-07-10 649.3600 BTC 497.6477 1.3048587
2016-07-11 647.6590 BTC 499.1471 1.2975313
2016-07-12 664.5510 BTC 500.8886 1.3267441
2016-07-13 654.4680 BTC 502.5280 1.3023513
2016-07-14 658.0780 BTC 504.1961 1.3052025
2016-07-15 663.2550 BTC 505.8468 1.3111775
2016-07-16 660.7670 BTC 507.4772 1.3020625
2016-07-17 679.4590 BTC 509.2340 1.3342765
2016-07-18 673.1060 BTC 510.9155 1.3174508
2016-07-19 672.8640 BTC 512.6136 1.3126143
2016-07-20 665.6850 BTC 514.3400 1.2942508
2016-07-21 665.0120 BTC 516.0783 1.2885874
2016-07-22 650.6190 BTC 517.7903 1.2565298
2016-07-23 655.5560 BTC 519.6117 1.2616268
2016-07-24 661.2850 BTC 521.4229 1.2682314
2016-07-25 654.0970 BTC 523.1356 1.2503392
2016-07-26 651.7840 BTC 524.8343 1.2418853
2016-07-27 654.3520 BTC 526.5449 1.2427277
2016-07-28 655.0350 BTC 528.2443 1.2400229
2016-07-29 656.9920 BTC 529.9250 1.2397830
2016-07-30 655.0470 BTC 531.6637 1.2320701
2016-07-31 624.6810 BTC 533.1681 1.1716399
2016-08-01 606.2720 BTC 534.5241 1.1342276
2016-08-02 547.4650 BTC 535.4572 1.0224254
2016-08-03 566.3550 BTC 536.5239 1.0556006
2016-08-04 578.2890 BTC 537.6501 1.0755861
2016-08-05 575.0430 BTC 538.8322 1.0672024
2016-08-06 587.7780 BTC 540.0989 1.0882785
2016-08-07 592.6900 BTC 541.3770 1.0947824
2016-08-08 591.0540 BTC 542.6466 1.0892061
2016-08-09 587.8010 BTC 543.8589 1.0807970
2016-08-10 592.1030 BTC 545.1022 1.0862240
2016-08-11 589.1200 BTC 546.3359 1.0783109
2016-08-12 587.5590 BTC 547.5529 1.0730634
2016-08-13 585.5880 BTC 548.7504 1.0671300
2016-08-14 570.4730 BTC 549.7769 1.0376446
2016-08-15 567.2400 BTC 550.7984 1.0298505
2016-08-16 577.4390 BTC 551.9478 1.0461841
2016-08-17 573.2160 BTC 553.0792 1.0364085
2016-08-18 574.3180 BTC 554.2049 1.0362918
2016-08-19 575.6300 BTC 555.3311 1.0365528
2016-08-20 581.6970 BTC 556.4798 1.0453155
2016-08-21 581.3080 BTC 557.6256 1.0424701
2016-08-22 586.7530 BTC 558.8064 1.0500113
2016-08-23 583.4150 BTC 559.9448 1.0419151
2016-08-24 580.1820 BTC 561.0646 1.0340735
2016-08-25 577.7610 BTC 562.1719 1.0277302
2016-08-26 579.6510 BTC 563.3097 1.0290094
2016-08-27 569.9470 BTC 564.3850 1.0098550
2016-08-28 573.9120 BTC 565.4732 1.0149234
2016-08-29 574.1070 BTC 566.5562 1.0133275
2016-08-30 577.5030 BTC 567.6442 1.0173680
2016-08-31 575.4720 BTC 568.7280 1.0118580
2016-09-01 572.3030 BTC 569.7853 1.0044186
2016-09-02 575.5370 BTC 570.8269 1.0082513
2016-09-03 598.2120 BTC 572.0243 1.0457807
2016-09-04 608.6340 BTC 573.3189 1.0615977
2016-09-05 606.5900 BTC 574.5903 1.0556914
2016-09-06 610.4360 BTC 575.8398 1.0600796
2016-09-07 614.5440 BTC 577.0766 1.0649263
2016-09-08 626.3160 BTC 578.3401 1.0829545
2016-09-09 622.8610 BTC 579.6053 1.0746297
2016-09-10 623.5090 BTC 580.8426 1.0734560
2016-09-11 606.7190 BTC 581.9009 1.0426500
2016-09-12 608.2430 BTC 582.9496 1.0433886
2016-09-13 609.2410 BTC 583.9721 1.0432707
2016-09-14 610.6840 BTC 585.1578 1.0436228
2016-09-15 607.1550 BTC 586.2874 1.0355928
2016-09-16 606.9730 BTC 587.3722 1.0333703
2016-09-17 605.9840 BTC 588.4984 1.0297122
2016-09-18 609.8740 BTC 589.6270 1.0343387
2016-09-19 609.2270 BTC 590.8024 1.0311857
2016-09-20 608.3120 BTC 591.9310 1.0276738
2016-09-21 597.1490 BTC 593.0055 1.0069872
2016-09-22 596.2980 BTC 594.0650 1.0037589
2016-09-23 602.8420 BTC 595.0881 1.0130298
2016-09-24 602.6250 BTC 596.1173 1.0109168
2016-09-25 600.8260 BTC 597.1336 1.0061836
2016-09-26 608.0430 BTC 598.1876 1.0164755
2016-09-27 606.1660 BTC 599.2966 1.0114624
2016-09-28 604.7280 BTC 600.3824 1.0072382
2016-09-29 605.6930 BTC 601.4604 1.0070372
2016-09-30 609.7350 BTC 602.5609 1.0119060
2016-10-01 613.9830 BTC 603.6917 1.0170473
2016-10-02 610.8920 BTC 604.7868 1.0100948
2016-10-03 612.1330 BTC 605.9152 1.0102618
2016-10-04 610.2040 BTC 607.0325 1.0052246
2016-10-05 612.5110 BTC 608.1603 1.0071538
2016-10-06 613.0210 BTC 609.4053 1.0059331
2016-10-07 617.1210 BTC 610.6514 1.0105946
2016-10-08 619.1080 BTC 611.9079 1.0117665
2016-10-09 616.7520 BTC 613.1753 1.0058331
2016-10-10 618.9940 BTC 614.4241 1.0074376
2016-10-11 641.0720 BTC 615.8177 1.0410095
2016-10-12 636.1920 BTC 617.1505 1.0308540
2016-10-13 636.7860 BTC 618.4605 1.0296309
2016-10-14 640.3780 BTC 619.6527 1.0334466
2016-10-15 638.6460 BTC 620.4285 1.0293628
2016-10-16 641.6310 BTC 621.2528 1.0328018
2016-10-17 639.1930 BTC 622.0051 1.0276330
2016-10-18 637.9600 BTC 622.7663 1.0243971
2016-10-19 630.5200 BTC 623.4349 1.0113646
2016-10-20 630.8570 BTC 624.0984 1.0108294
2016-10-21 632.8280 BTC 624.5529 1.0132496
2016-10-22 657.2940 BTC 625.1570 1.0514064
2016-10-23 657.0710 BTC 625.7433 1.0500647
2016-10-24 653.7610 BTC 626.2307 1.0439620
2016-10-25 657.5880 BTC 626.8092 1.0491040
2016-10-26 678.3040 BTC 627.4996 1.0809633
2016-10-27 688.3130 BTC 628.3116 1.0954962
2016-10-28 689.6510 BTC 629.1129 1.0962277
2016-10-29 714.4790 BTC 629.8826 1.1343051
2016-10-30 701.8640 BTC 630.0903 1.1139102
2016-10-31 700.9720 BTC 630.0660 1.1125375
2016-11-01 729.7930 BTC 630.3819 1.1576998
2016-11-02 740.8290 BTC 630.7131 1.1745896
2016-11-03 688.7000 BTC 630.1587 1.0928993
2016-11-04 703.2350 BTC 629.8325 1.1165429
2016-11-05 703.4180 BTC 629.4553 1.1175028
2016-11-06 711.5220 BTC 629.0820 1.1310481
2016-11-07 703.1310 BTC 628.8385 1.1181425
2016-11-08 709.8480 BTC 629.1470 1.1282705
2016-11-09 723.2730 BTC 630.0553 1.1479517
2016-11-10 715.5340 BTC 630.7092 1.1344911
2016-11-11 716.4110 BTC 631.0743 1.1352245
2016-11-12 705.0540 BTC 631.3595 1.1167235
2016-11-13 702.0310 BTC 631.8786 1.1110220
2016-11-14 705.0210 BTC 632.2339 1.1151268
2016-11-15 711.6190 BTC 632.6955 1.1247418
2016-11-16 744.1980 BTC 633.4405 1.1748506
2016-11-17 740.9770 BTC 633.9237 1.1688742
2016-11-18 751.5850 BTC 634.4614 1.1846032
2016-11-19 751.6160 BTC 634.8037 1.1840133
2016-11-20 731.0260 BTC 635.3206 1.1506412
2016-11-21 739.2480 BTC 635.7176 1.1628559
2016-11-22 751.3470 BTC 636.2942 1.1808170
2016-11-23 744.5940 BTC 636.7746 1.1693211
2016-11-24 740.2890 BTC 637.4870 1.1612614
2016-11-25 741.6490 BTC 638.0236 1.1624163
2016-11-26 735.3820 BTC 638.6266 1.1515055
2016-11-27 732.0350 BTC 639.2171 1.1452055
2016-11-28 735.8130 BTC 639.8468 1.1499831
2016-11-29 735.6040 BTC 640.3543 1.1487453
2016-11-30 745.6910 BTC 641.0059 1.1633138
2016-12-01 756.7740 BTC 641.7109 1.1793068
2016-12-02 777.9440 BTC 642.5301 1.2107511
2016-12-03 771.1550 BTC 643.3186 1.1987141
2016-12-04 773.8720 BTC 643.9929 1.2016778
2016-12-05 758.7000 BTC 644.6043 1.1770011
2016-12-06 764.2240 BTC 645.2569 1.1843717
2016-12-07 768.1320 BTC 645.9887 1.1890797
2016-12-08 770.8100 BTC 646.7444 1.1918310
2016-12-09 772.7940 BTC 647.6170 1.1932886
2016-12-10 774.6500 BTC 648.4677 1.1945853
2016-12-11 769.7310 BTC 649.2423 1.1855835
2016-12-12 780.0870 BTC 650.1423 1.1998712
2016-12-13 780.5560 BTC 651.0621 1.1988965
2016-12-14 781.4810 BTC 651.9701 1.1986454
2016-12-15 778.0880 BTC 652.8491 1.1918344
2016-12-16 784.9070 BTC 653.7628 1.2005991
2016-12-17 790.8290 BTC 654.7326 1.2078655
2016-12-18 790.5300 BTC 655.9173 1.2052283
2016-12-19 792.7140 BTC 657.2490 1.2061091
2016-12-20 800.8760 BTC 659.0591 1.2151809
2016-12-21 834.2810 BTC 660.9728 1.2622017
2016-12-22 864.5400 BTC 663.0175 1.3039475
2016-12-23 921.9840 BTC 665.4956 1.3854096
2016-12-24 898.8220 BTC 667.7174 1.3461115
2016-12-25 896.1830 BTC 669.8852 1.3378158
2016-12-26 907.6100 BTC 672.1463 1.3503161
2016-12-27 933.1980 BTC 674.6134 1.3833078
2016-12-28 975.9210 BTC 677.3550 1.4407823
2016-12-29 973.4970 BTC 680.1005 1.4314017
2016-12-30 961.2380 BTC 682.7697 1.4078511
2016-12-31 963.7430 BTC 685.4708 1.4059578
2017-01-01 998.3250 BTC 688.5268 1.4499435
2017-01-02 1021.7500 BTC 691.7733 1.4770011
2017-01-03 1043.8400 BTC 695.1048 1.5017016
2017-01-04 1154.7300 BTC 699.2584 1.6513636
2017-01-05 1013.3800 BTC 702.3946 1.4427503
2017-01-06 902.2010 BTC 704.7273 1.2802130
2017-01-07 908.5850 BTC 707.0622 1.2850143
2017-01-08 911.1990 BTC 709.4185 1.2844307
2017-01-09 902.8280 BTC 711.6762 1.2685938
2017-01-10 907.6790 BTC 713.9924 1.2712727
2017-01-11 777.7570 BTC 715.4036 1.0871583
2017-01-12 804.8340 BTC 717.0256 1.1224620
2017-01-13 823.9840 BTC 718.7708 1.1463793
2017-01-14 818.4120 BTC 720.5456 1.1358227
2017-01-15 821.7980 BTC 722.3162 1.1377261
2017-01-16 831.5340 BTC 724.1549 1.1482819
2017-01-17 907.9380 BTC 726.5152 1.2497164
2017-01-18 886.6180 BTC 728.7377 1.2166490
2017-01-19 899.0730 BTC 731.0717 1.2298013
2017-01-20 895.0260 BTC 733.3538 1.2204559
2017-01-21 921.7890 BTC 735.6651 1.2530009
2017-01-22 924.6730 BTC 737.9225 1.2530760
2017-01-23 921.0120 BTC 740.1684 1.2443277
2017-01-24 892.6870 BTC 742.1844 1.2027832
2017-01-25 901.5420 BTC 744.2344 1.2113683
2017-01-26 917.5860 BTC 746.3149 1.2294890
2017-01-27 919.7500 BTC 748.4356 1.2288967
2017-01-28 921.5900 BTC 750.5647 1.2278622
2017-01-29 919.4960 BTC 752.7988 1.2214365
2017-01-30 920.3820 BTC 755.0284 1.2190032
2017-01-31 970.4030 BTC 757.6081 1.2808772
2017-02-01 989.0230 BTC 760.3106 1.3008145
2017-02-02 1011.8000 BTC 763.2009 1.3257322
2017-02-03 1029.9100 BTC 766.2219 1.3441408
2017-02-04 1042.9000 BTC 769.3427 1.3555728
2017-02-05 1027.3400 BTC 772.3246 1.3301920
2017-02-06 1038.1500 BTC 775.3883 1.3388776
2017-02-07 1061.3500 BTC 778.6243 1.3631092
2017-02-08 1063.0699 BTC 781.9523 1.3595074
2017-02-09 994.3830 BTC 784.7958 1.2670596
2017-02-10 988.6740 BTC 787.5517 1.2553766
2017-02-11 1004.4500 BTC 790.4219 1.2707771
2017-02-12 999.1810 BTC 793.2673 1.2595768
2017-02-13 990.6420 BTC 796.0001 1.2445249
2017-02-14 1004.5500 BTC 798.8457 1.2575018
2017-02-15 1007.4800 BTC 801.7225 1.2566442
2017-02-16 1027.4399 BTC 804.7350 1.2767432
2017-02-17 1046.2100 BTC 807.8527 1.2950504
2017-02-18 1054.4200 BTC 810.9987 1.3001501
2017-02-19 1047.8700 BTC 814.1199 1.2871199
2017-02-20 1079.9800 BTC 817.4617 1.3211383
2017-02-21 1115.3000 BTC 821.0695 1.3583503
2017-02-22 1117.4399 BTC 824.6762 1.3550045
2017-02-23 1166.7200 BTC 828.6312 1.4080088
2017-02-24 1173.6801 BTC 832.6066 1.4096454
2017-02-25 1143.8400 BTC 836.3547 1.3676494
2017-02-26 1165.2000 BTC 840.2722 1.3866935
2017-02-27 1179.9700 BTC 844.2791 1.3976065
2017-02-28 1179.9700 BTC 848.1284 1.3912634
2017-03-01 1222.5000 BTC 852.3163 1.4343266
2017-03-02 1251.0100 BTC 856.7036 1.4602600
2017-03-03 1274.9900 BTC 861.2366 1.4804178
2017-03-04 1255.1500 BTC 865.6402 1.4499674
2017-03-05 1267.1200 BTC 870.1079 1.4562791
2017-03-06 1272.8300 BTC 874.6339 1.4552716
2017-03-07 1223.5400 BTC 878.8166 1.3922586
2017-03-08 1150.0000 BTC 882.5272 1.3030760
2017-03-09 1188.4900 BTC 886.5103 1.3406387
2017-03-10 1116.7200 BTC 889.9667 1.2547885
2017-03-11 1175.8300 BTC 893.6705 1.3157310
2017-03-12 1221.3800 BTC 897.7013 1.3605640
2017-03-13 1231.9200 BTC 901.8310 1.3660210
2017-03-14 1240.0000 BTC 905.9911 1.3686669
2017-03-15 1249.6100 BTC 910.0718 1.3730894
2017-03-16 1187.8101 BTC 913.6397 1.3000859
2017-03-17 1100.2300 BTC 916.5724 1.2003744
2017-03-18 973.8180 BTC 918.4248 1.0603133
2017-03-19 1036.7400 BTC 920.8168 1.1258917
2017-03-20 1054.2300 BTC 923.3400 1.1417570
2017-03-21 1120.5400 BTC 926.1311 1.2099152
2017-03-22 1049.1400 BTC 928.3333 1.1301329
2017-03-23 1038.5900 BTC 930.8325 1.1157646
2017-03-24 937.5200 BTC 932.5060 1.0053769
2017-03-25 972.7790 BTC 934.4300 1.0410400
2017-03-26 966.7250 BTC 936.2529 1.0325469
2017-03-27 1045.7700 BTC 938.7003 1.1140617
2017-03-28 1047.1500 BTC 941.1096 1.1126760
2017-03-29 1039.9700 BTC 943.3717 1.1023968
2017-03-30 1026.4301 BTC 945.5924 1.0854889
2017-03-31 1071.7900 BTC 948.1308 1.1304242
2017-04-01 1080.5000 BTC 950.8126 1.1363964
2017-04-02 1102.1700 BTC 953.6707 1.1557134
2017-04-03 1143.8101 BTC 956.8049 1.1954475
2017-04-04 1133.2500 BTC 959.8166 1.1806943
2017-04-05 1124.7800 BTC 962.5350 1.1685601
2017-04-06 1182.6801 BTC 965.6900 1.2246994
2017-04-07 1176.9000 BTC 968.7280 1.2148921
2017-04-08 1175.9500 BTC 971.7590 1.2101251
2017-04-09 1187.8700 BTC 975.0221 1.2183005
2017-04-10 1187.1300 BTC 978.2213 1.2135598
2017-04-11 1205.0100 BTC 981.4617 1.2277707
2017-04-12 1200.3700 BTC 984.7173 1.2189996
2017-04-13 1169.2800 BTC 987.7815 1.1837436
2017-04-14 1167.5400 BTC 990.8236 1.1783531
2017-04-15 1172.5200 BTC 993.9460 1.1796617
2017-04-16 1182.9399 BTC 997.1668 1.1863010
2017-04-17 1193.9100 BTC 1000.4389 1.1933863
2017-04-18 1211.6700 BTC 1003.8393 1.2070358
2017-04-19 1210.2900 BTC 1007.1579 1.2016885
2017-04-20 1229.0800 BTC 1010.5315 1.2162708
2017-04-21 1222.0500 BTC 1013.7037 1.2055298
2017-04-22 1231.7100 BTC 1016.9934 1.2111288
2017-04-23 1207.2100 BTC 1020.0887 1.1834363
2017-04-24 1250.1500 BTC 1023.5990 1.2213279
2017-04-25 1265.4900 BTC 1027.1795 1.2320047
2017-04-26 1281.0800 BTC 1030.8434 1.2427493
2017-04-27 1317.7300 BTC 1034.7500 1.2734767
2017-04-28 1316.4800 BTC 1038.6334 1.2675116
2017-04-29 1321.7900 BTC 1042.5416 1.2678535
2017-04-30 1347.8900 BTC 1046.6713 1.2877873
2017-05-01 1421.6000 BTC 1051.2535 1.3522903
2017-05-02 1452.8199 BTC 1056.0554 1.3757043
2017-05-03 1490.0900 BTC 1061.1169 1.4042656
2017-05-04 1537.6700 BTC 1066.5425 1.4417335
2017-05-05 1555.4500 BTC 1072.0464 1.4509167
2017-05-06 1578.8000 BTC 1077.6747 1.4650061
2017-05-07 1596.7100 BTC 1083.4332 1.4737503
2017-05-08 1723.3500 BTC 1090.0806 1.5809382
2017-05-09 1755.3600 BTC 1096.8983 1.6002942
2017-05-10 1787.1300 BTC 1103.7044 1.6192108
2017-05-11 1848.5699 BTC 1110.7332 1.6642791
2017-05-12 1724.2400 BTC 1116.4636 1.5443764
2017-05-13 1804.9100 BTC 1122.9356 1.6073139
2017-05-14 1808.9100 BTC 1129.4551 1.6015777
2017-05-15 1738.4301 BTC 1135.3895 1.5311310
2017-05-16 1734.4500 BTC 1141.1127 1.5199637
2017-05-17 1839.0900 BTC 1147.2782 1.6030026
2017-05-18 1888.6500 BTC 1153.8150 1.6368741
2017-05-19 1987.7100 BTC 1161.1470 1.7118504
2017-05-20 2084.7300 BTC 1169.1540 1.7831098
2017-05-21 2041.2000 BTC 1176.6031 1.7348245
2017-05-22 2173.3999 BTC 1184.8292 1.8343571
2017-05-23 2320.4199 BTC 1193.9476 1.9434855
2017-05-24 2443.6399 BTC 1203.1541 2.0310281
2017-05-25 2304.9800 BTC 1212.3799 1.9012028
2017-05-26 2202.4199 BTC 1221.6671 1.8027987
2017-05-27 2038.8700 BTC 1229.7406 1.6579675
2017-05-28 2155.8000 BTC 1238.6306 1.7404705
2017-05-29 2255.6101 BTC 1248.2933 1.8069552
2017-05-30 2175.4700 BTC 1257.3490 1.7302038
2017-05-31 2286.4099 BTC 1268.1251 1.8029845
2017-06-01 2407.8799 BTC 1279.5754 1.8817804
2017-06-02 2488.5500 BTC 1291.4652 1.9269200
2017-06-03 2515.3501 BTC 1303.5862 1.9295618
2017-06-04 2511.8101 BTC 1315.6577 1.9091669
2017-06-05 2686.8101 BTC 1328.9096 2.0218155
2017-06-06 2863.2000 BTC 1342.8758 2.1321406
2017-06-07 2732.1599 BTC 1356.0582 2.0147807
2017-06-08 2805.6201 BTC 1369.6764 2.0483817
2017-06-09 2823.8101 BTC 1383.4535 2.0411312
2017-06-10 2947.7100 BTC 1397.9243 2.1086334
2017-06-11 2958.1101 BTC 1412.4489 2.0943130
2017-06-12 2659.6299 BTC 1424.8676 1.8665804
2017-06-13 2717.0200 BTC 1437.8985 1.8895770
2017-06-14 2506.3701 BTC 1449.3616 1.7292925
2017-06-15 2464.5801 BTC 1460.4115 1.6875929
2017-06-16 2518.5601 BTC 1471.8316 1.7111740
2017-06-17 2655.8799 BTC 1484.2194 1.7894119
2017-06-18 2548.2900 BTC 1495.8536 1.7035691
2017-06-19 2589.6001 BTC 1507.7766 1.7174958
2017-06-20 2721.7900 BTC 1520.2865 1.7903138
2017-06-21 2689.1001 BTC 1532.4299 1.7547948
2017-06-22 2705.4099 BTC 1544.5272 1.7516105
2017-06-23 2744.9099 BTC 1556.7772 1.7632003
2017-06-24 2608.7200 BTC 1567.9616 1.6637652
2017-06-25 2589.4099 BTC 1579.1192 1.6397811
2017-06-26 2478.4500 BTC 1589.4071 1.5593550
2017-06-27 2552.4500 BTC 1600.0578 1.5952236
2017-06-28 2574.7900 BTC 1610.8558 1.5983988
2017-06-29 2539.3201 BTC 1621.8911 1.5656539
2017-06-30 2480.8401 BTC 1632.5494 1.5196110
2017-07-01 2434.5500 BTC 1642.7644 1.4819837
2017-07-02 2506.4700 BTC 1653.5307 1.5158291
2017-07-03 2564.0601 BTC 1664.7694 1.5401893
2017-07-04 2601.6399 BTC 1676.1772 1.5521270
2017-07-05 2601.9900 BTC 1687.5666 1.5418592
2017-07-06 2608.5601 BTC 1698.8603 1.5354765
2017-07-07 2518.6599 BTC 1709.3778 1.4734367
2017-07-08 2571.3401 BTC 1720.2129 1.4947801
2017-07-09 2518.4399 BTC 1730.7170 1.4551425
2017-07-10 2372.5601 BTC 1739.9497 1.3635797
2017-07-11 2337.7900 BTC 1748.6818 1.3368870
2017-07-12 2398.8401 BTC 1757.8347 1.3646563
2017-07-13 2357.8999 BTC 1766.3431 1.3349048
2017-07-14 2233.3401 BTC 1773.9121 1.2589914
2017-07-15 1998.8600 BTC 1780.0194 1.1229428
2017-07-16 1929.8199 BTC 1785.4809 1.0808404
2017-07-17 2228.4099 BTC 1792.9698 1.2428597
2017-07-18 2318.8799 BTC 1801.1049 1.2874763
2017-07-19 2273.4299 BTC 1808.6115 1.2570029
2017-07-20 2817.6001 BTC 1819.8014 1.5483008
2017-07-21 2667.7600 BTC 1829.7498 1.4579917
2017-07-22 2810.1201 BTC 1840.8567 1.5265284
2017-07-23 2730.3999 BTC 1851.3087 1.4748485
2017-07-24 2754.8601 BTC 1861.8947 1.4796004
2017-07-25 2576.4800 BTC 1871.5585 1.3766494
2017-07-26 2529.4500 BTC 1881.4117 1.3444425
2017-07-27 2671.7800 BTC 1892.0067 1.4121409
2017-07-28 2809.0100 BTC 1904.0944 1.4752472
2017-07-29 2726.4500 BTC 1915.1703 1.4236071
2017-07-30 2757.1799 BTC 1926.1403 1.4314533
2017-07-31 2875.3401 BTC 1937.8790 1.4837562
2017-08-01 2718.2600 BTC 1948.4380 1.3950970
2017-08-02 2710.6699 BTC 1958.8742 1.3837897
2017-08-03 2804.7300 BTC 1970.4236 1.4234147
2017-08-04 2895.8899 BTC 1983.2497 1.4601741
2017-08-05 3252.9099 BTC 1999.5290 1.6268381
2017-08-06 3213.9399 BTC 2015.0804 1.5949438
2017-08-07 3378.9399 BTC 2031.6855 1.6631216
2017-08-08 3419.9399 BTC 2048.1097 1.6698031
2017-08-09 3342.4700 BTC 2064.4907 1.6190289
2017-08-10 3381.2800 BTC 2081.2242 1.6246592
2017-08-11 3650.6201 BTC 2100.6035 1.7378911
2017-08-12 3884.7100 BTC 2121.4030 1.8311985
2017-08-13 4073.2600 BTC 2143.5925 1.9002026
2017-08-14 4325.1299 BTC 2167.0165 1.9958915
2017-08-15 4181.9302 BTC 2189.4078 1.9100737
2017-08-16 4376.6299 BTC 2213.2411 1.9774755
2017-08-17 4331.6899 BTC 2236.8501 1.9365133
2017-08-18 4160.6201 BTC 2258.9131 1.8418681
2017-08-19 4193.7002 BTC 2281.1503 1.8384147
2017-08-20 4087.6599 BTC 2302.4752 1.7753329
2017-08-21 4001.7400 BTC 2322.8890 1.7227427
2017-08-22 4100.5200 BTC 2344.0838 1.7493061
2017-08-23 4151.5200 BTC 2365.7034 1.7548777
2017-08-24 4334.6802 BTC 2388.2176 1.8150273
2017-08-25 4371.6001 BTC 2411.0369 1.8131618
2017-08-26 4352.3999 BTC 2433.7259 1.7883690
2017-08-27 4382.8799 BTC 2456.5474 1.7841626
2017-08-28 4382.6602 BTC 2479.3726 1.7676489
2017-08-29 4579.0200 BTC 2503.4726 1.8290673
2017-08-30 4565.2998 BTC 2527.5079 1.8062455
2017-08-31 4703.3901 BTC 2552.7515 1.8424787
2017-09-01 4892.0098 BTC 2579.3549 1.8966021
2017-09-02 4578.7700 BTC 2603.6852 1.7585728
2017-09-03 4582.9600 BTC 2627.9711 1.7439157
2017-09-04 4236.3101 BTC 2649.7025 1.5987871
2017-09-05 4376.5298 BTC 2672.3086 1.6377337
2017-09-06 4597.1201 BTC 2696.5003 1.7048469
2017-09-07 4599.8799 BTC 2720.5774 1.6907734
2017-09-08 4228.7500 BTC 2742.0539 1.5421834
2017-09-09 4226.0601 BTC 2763.4421 1.5292740
2017-09-10 4122.9399 BTC 2784.2687 1.4807981
2017-09-11 4161.2700 BTC 2805.0624 1.4834857
2017-09-12 4130.8101 BTC 2825.5290 1.4619599
2017-09-13 3882.5901 BTC 2844.1112 1.3651330
2017-09-14 3154.9500 BTC 2857.2342 1.1041972
2017-09-15 3637.5200 BTC 2873.8131 1.2657469
2017-09-16 3625.0400 BTC 2890.2649 1.2542242
2017-09-17 3582.8799 BTC 2906.2291 1.2328278
2017-09-18 4065.2000 BTC 2925.1119 1.3897588
2017-09-19 3924.9700 BTC 2942.7701 1.3337671
2017-09-20 3905.9500 BTC 2960.0263 1.3195660
2017-09-21 3631.0400 BTC 2974.9789 1.2205263
2017-09-22 3630.7000 BTC 2989.8021 1.2143613
2017-09-23 3792.3999 BTC 3005.6136 1.2617723
2017-09-24 3682.8401 BTC 3020.5145 1.2192758
2017-09-25 3926.0701 BTC 3036.2482 1.2930662
2017-09-26 3892.3501 BTC 3051.5124 1.2755478
2017-09-27 4200.6699 BTC 3068.7520 1.3688529
2017-09-28 4174.7300 BTC 3085.3674 1.3530739
2017-09-29 4163.0698 BTC 3102.7876 1.3417192
2017-09-30 4338.7100 BTC 3120.8862 1.3902173
2017-10-01 4403.7402 BTC 3139.4207 1.4027238
2017-10-02 4409.3198 BTC 3158.4985 1.3960177
2017-10-03 4317.4800 BTC 3176.9487 1.3590021
2017-10-04 4229.3599 BTC 3194.0221 1.3241486
2017-10-05 4328.4102 BTC 3211.4489 1.3478060
2017-10-06 4370.8101 BTC 3228.4711 1.3538328
2017-10-07 4426.8901 BTC 3245.2008 1.3641344
2017-10-08 4610.4800 BTC 3263.5528 1.4127181
2017-10-09 4772.0200 BTC 3282.1144 1.4539469
2017-10-10 4781.9902 BTC 3299.6970 1.4492210
2017-10-11 4826.4800 BTC 3316.7173 1.4551979
2017-10-12 5446.9102 BTC 3339.1596 1.6312218
2017-10-13 5647.2100 BTC 3363.7653 1.6788359
2017-10-14 5831.7900 BTC 3390.8576 1.7198570
2017-10-15 5678.1899 BTC 3416.0175 1.6622251
2017-10-16 5725.5898 BTC 3440.8031 1.6640272
2017-10-17 5605.5098 BTC 3465.3034 1.6176101
2017-10-18 5590.6899 BTC 3488.9054 1.6024195
2017-10-19 5708.5200 BTC 3512.4814 1.6252101
2017-10-20 6011.4502 BTC 3537.6449 1.6992803
2017-10-21 6031.6001 BTC 3562.7610 1.6929567
2017-10-22 6008.4199 BTC 3587.7368 1.6747103
2017-10-23 5930.3198 BTC 3610.9047 1.6423363
2017-10-24 5526.6401 BTC 3629.9293 1.5225201
2017-10-25 5750.7998 BTC 3651.4910 1.5749182
2017-10-26 5904.8301 BTC 3673.6282 1.6073565
2017-10-27 5780.8999 BTC 3694.7503 1.5646253
2017-10-28 5753.0898 BTC 3714.7887 1.5486991
2017-10-29 6153.8501 BTC 3737.6154 1.6464642
2017-10-30 6130.5298 BTC 3762.4076 1.6294167
2017-10-31 6468.3999 BTC 3789.2031 1.7070607
2017-11-01 6767.3101 BTC 3819.6384 1.7717148
2017-11-02 7078.5000 BTC 3852.5950 1.8373330
2017-11-03 7207.7598 BTC 3886.0893 1.8547592
2017-11-04 7379.9502 BTC 3919.8326 1.8827207
2017-11-05 7407.4102 BTC 3954.5406 1.8731405
2017-11-06 7022.7598 BTC 3986.2061 1.7617654
2017-11-07 7144.3799 BTC 4017.7960 1.7781838
2017-11-08 7459.6899 BTC 4051.8716 1.8410479
2017-11-09 7143.5801 BTC 4083.5728 1.7493456
2017-11-10 6618.1401 BTC 4111.2388 1.6097679
2017-11-11 6357.6001 BTC 4138.0165 1.5363883
2017-11-12 5950.0698 BTC 4162.0212 1.4296106
2017-11-13 6559.4902 BTC 4191.1715 1.5650732
2017-11-14 6635.7500 BTC 4220.3379 1.5723267
2017-11-15 7315.5400 BTC 4254.2004 1.7196040
2017-11-16 7871.6899 BTC 4292.2888 1.8339143
2017-11-17 7708.9902 BTC 4329.6327 1.7805183
2017-11-18 7790.1499 BTC 4367.8870 1.7835054
2017-11-19 8036.4902 BTC 4407.3871 1.8234137
2017-11-20 8200.6396 BTC 4447.6484 1.8438147
2017-11-21 8071.2598 BTC 4486.7171 1.7989232
2017-11-22 8253.5498 BTC 4527.0854 1.8231487
2017-11-23 8038.7700 BTC 4565.8726 1.7606207
2017-11-24 8253.6904 BTC 4606.8371 1.7916176
2017-11-25 8790.9199 BTC 4651.2627 1.8900072
2017-11-26 9330.5498 BTC 4699.9206 1.9852569
2017-11-27 9818.3496 BTC 4753.1048 2.0656707
2017-11-28 10058.7998 BTC 4808.2549 2.0919855
2017-11-29 9888.6104 BTC 4861.7533 2.0339597
2017-11-30 10233.5996 BTC 4918.0083 2.0808423
2017-12-01 10975.5996 BTC 4980.4530 2.2037352
2017-12-02 11074.5996 BTC 5045.2797 2.1950418
2017-12-03 11323.2002 BTC 5112.3753 2.2148609
2017-12-04 11657.2002 BTC 5179.7238 2.2505448
2017-12-05 11916.7002 BTC 5248.2796 2.2705917
2017-12-06 14291.5000 BTC 5334.1230 2.6792596
2017-12-07 17899.6992 BTC 5441.8523 3.2892659
2017-12-08 16569.4004 BTC 5541.1497 2.9902459
2017-12-09 15178.2002 BTC 5629.4931 2.6961930
2017-12-10 15455.4004 BTC 5720.3860 2.7018108
2017-12-11 16936.8008 BTC 5821.6856 2.9092607
2017-12-12 17415.4004 BTC 5927.6779 2.9379802
2017-12-13 16408.1992 BTC 6026.8118 2.7225339
2017-12-14 16564.0000 BTC 6126.0419 2.7038666
2017-12-15 17706.9004 BTC 6232.4554 2.8410793
2017-12-16 19497.4004 BTC 6352.2479 3.0693702
2017-12-17 19140.8008 BTC 6469.2738 2.9587248
2017-12-18 19114.1992 BTC 6585.2656 2.9025707
2017-12-19 17776.6992 BTC 6692.8259 2.6560827
2017-12-20 16624.5996 BTC 6792.2111 2.4475976
2017-12-21 15802.9004 BTC 6885.0552 2.2952467
2017-12-22 13831.7998 BTC 6963.1688 1.9864232
2017-12-23 14699.2002 BTC 7044.9281 2.0864940
2017-12-24 13925.7998 BTC 7121.4413 1.9554749
2017-12-25 14026.5996 BTC 7197.4961 1.9488166
2017-12-26 16099.7998 BTC 7288.0665 2.2090632
2017-12-27 15838.5000 BTC 7377.3238 2.1469167
2017-12-28 14606.5000 BTC 7457.5040 1.9586312
2017-12-29 14656.2002 BTC 7536.1153 1.9447951
2017-12-30 12952.2002 BTC 7600.8831 1.7040389
2017-12-31 14156.4004 BTC 7672.9055 1.8449856
2018-01-01 13657.2002 BTC 7739.5631 1.7645957
2018-01-02 14982.0996 BTC 7816.7072 1.9166766
2018-01-03 15201.0000 BTC 7894.0241 1.9256338
2018-01-04 15599.2002 BTC 7974.5064 1.9561336
2018-01-05 17429.5000 BTC 8069.2841 2.1599810
2018-01-06 17527.0000 BTC 8164.5219 2.1467270
2018-01-07 16477.5996 BTC 8253.0215 1.9965536
2018-01-08 15170.0996 BTC 8332.7955 1.8205295
2018-01-09 14595.4004 BTC 8407.7589 1.7359442
2018-01-10 14973.2998 BTC 8485.0573 1.7646669
2018-01-11 13405.7998 BTC 8549.8511 1.5679571
2018-01-12 13980.5996 BTC 8618.4868 1.6221641
2018-01-13 14360.2002 BTC 8689.9711 1.6525026
2018-01-14 13772.0000 BTC 8757.0362 1.5726782
2018-01-15 13819.7998 BTC 8824.4443 1.5660816
2018-01-16 11490.5000 BTC 8873.8121 1.2948775
2018-01-17 11188.5996 BTC 8921.1213 1.2541696
2018-01-18 11474.9004 BTC 8969.4893 1.2793260
2018-01-19 11607.4004 BTC 9017.4563 1.2872145
2018-01-20 12899.2002 BTC 9076.8880 1.4211038
2018-01-21 11600.0996 BTC 9127.0104 1.2709638
2018-01-22 10931.4004 BTC 9174.8325 1.1914550
2018-01-23 10868.4004 BTC 9221.2030 1.1786315
2018-01-24 11359.4004 BTC 9269.5050 1.2254592
2018-01-25 11259.4004 BTC 9317.0730 1.2084697
2018-01-26 11171.4004 BTC 9366.6634 1.1926766
2018-01-27 11440.7002 BTC 9418.1965 1.2147443
2018-01-28 11786.2998 BTC 9472.9348 1.2442078
2018-01-29 11296.4004 BTC 9523.9000 1.1861108
2018-01-30 10106.2998 BTC 9566.5821 1.0564170
2018-01-31 10221.0996 BTC 9611.8571 1.0633845
2018-02-01 9170.5400 BTC 9654.8256 0.9498400
2018-02-02 8830.7500 BTC 9691.9201 0.9111456
2018-02-03 9174.9102 BTC 9731.5621 0.9427993
2018-02-04 8277.0098 BTC 9765.0916 0.8476121
2018-02-05 6955.2700 BTC 9785.7349 0.7107560
2018-02-06 7754.0000 BTC 9813.0851 0.7901694
2018-02-07 7621.2998 BTC 9839.6234 0.7745520
2018-02-08 8265.5898 BTC 9872.7273 0.8372144
2018-02-09 8736.9805 BTC 9909.2007 0.8817039
2018-02-10 8621.9004 BTC 9943.6971 0.8670719
2018-02-11 8129.9702 BTC 9975.4624 0.8149968
2018-02-12 8926.5703 BTC 10011.1802 0.8916601
2018-02-13 8598.3096 BTC 10044.7942 0.8559966
2018-02-14 9494.6299 BTC 10082.6082 0.9416839
2018-02-15 10166.4004 BTC 10125.4059 1.0040487
2018-02-16 10233.9004 BTC 10168.7689 1.0064050
2018-02-17 11112.7002 BTC 10217.1546 1.0876512
2018-02-18 10551.7998 BTC 10261.0693 1.0283334
2018-02-19 11225.2998 BTC 10309.7549 1.0888038
2018-02-20 11403.7002 BTC 10360.3707 1.1007039
2018-02-21 10690.4004 BTC 10406.5210 1.0272790
2018-02-22 10005.0000 BTC 10447.0681 0.9576850
2018-02-23 10301.0996 BTC 10489.4273 0.9820460
2018-02-24 9813.0703 BTC 10527.9000 0.9321014
2018-02-25 9664.7305 BTC 10564.0018 0.9148740
2018-02-26 10366.7002 BTC 10603.9638 0.9776250
2018-02-27 10725.5996 BTC 10646.4182 1.0074374
2018-02-28 10397.9004 BTC 10686.2140 0.9730200
2018-03-01 10951.0000 BTC 10725.5289 1.0210219
2018-03-02 11086.4004 BTC 10764.3803 1.0299153
2018-03-03 11489.7002 BTC 10804.7939 1.0633891
2018-03-04 11512.5996 BTC 10846.4683 1.0614146
2018-03-05 11573.2998 BTC 10888.2377 1.0629176
2018-03-06 10779.9004 BTC 10925.1976 0.9867007
2018-03-07 9965.5703 BTC 10956.4467 0.9095622
2018-03-08 9395.0098 BTC 10982.7788 0.8554310
2018-03-09 9337.5498 BTC 11006.5367 0.8483640
2018-03-10 8866.0000 BTC 11026.7824 0.8040423
2018-03-11 9578.6299 BTC 11052.2839 0.8666652
2018-03-12 9205.1201 BTC 11075.6753 0.8311114
2018-03-13 9194.8496 BTC 11101.8768 0.8282248
2018-03-14 8269.8096 BTC 11119.8697 0.7436966
2018-03-15 8300.8604 BTC 11136.9842 0.7453418
2018-03-16 8338.3496 BTC 11155.2517 0.7474820
2018-03-17 7916.8799 BTC 11170.7074 0.7087179
2018-03-18 8223.6797 BTC 11185.4919 0.7352095
2018-03-19 8630.6504 BTC 11203.3499 0.7703634
2018-03-20 8913.4697 BTC 11220.8147 0.7943692
2018-03-21 8929.2803 BTC 11236.2573 0.7946846
2018-03-22 8728.4697 BTC 11248.0428 0.7759990
2018-03-23 8879.6201 BTC 11259.9847 0.7885997
2018-03-24 8668.1201 BTC 11269.1859 0.7691878
2018-03-25 8495.7803 BTC 11276.9599 0.7533751
2018-03-26 8209.4004 BTC 11285.4359 0.7274332
2018-03-27 7833.0400 BTC 11290.3549 0.6937816
2018-03-28 7954.4800 BTC 11293.8892 0.7043172
2018-03-29 7165.7002 BTC 11294.0472 0.6344670
2018-03-30 6890.5200 BTC 11295.9927 0.6099969
2018-03-31 6973.5298 BTC 11300.3922 0.6171051
2018-04-01 6844.2300 BTC 11306.7791 0.6053209
2018-04-02 7083.7998 BTC 11310.5242 0.6263016
2018-04-03 7456.1099 BTC 11316.3839 0.6588774
2018-04-04 6853.8398 BTC 11313.0860 0.6058329
2018-04-05 6811.4702 BTC 11305.5130 0.6024910
2018-04-06 6636.3198 BTC 11297.8511 0.5873966
2018-04-07 6911.0898 BTC 11291.5721 0.6120574
2018-04-08 7023.5200 BTC 11284.3366 0.6224132
2018-04-09 6770.7300 BTC 11274.1229 0.6005549
2018-04-10 6834.7598 BTC 11265.2908 0.6067096
2018-04-11 6968.3198 BTC 11256.1106 0.6190700
2018-04-12 7889.2500 BTC 11255.0426 0.7009525
2018-04-13 7895.9600 BTC 11252.4874 0.7017080
2018-04-14 7986.2402 BTC 11246.7397 0.7100938
2018-04-15 8329.1104 BTC 11239.5865 0.7410513
2018-04-16 8058.6699 BTC 11227.0174 0.7177926
2018-04-17 7902.0898 BTC 11211.6123 0.7048130
2018-04-18 8163.4199 BTC 11199.2895 0.7289230
2018-04-19 8294.3096 BTC 11185.4374 0.7415275
2018-04-20 8845.8301 BTC 11170.2248 0.7919116
2018-04-21 8895.5801 BTC 11154.6604 0.7974766
2018-04-22 8802.4600 BTC 11136.6551 0.7904043
2018-04-23 8930.8799 BTC 11117.1814 0.8033403
2018-04-24 9697.5000 BTC 11101.3299 0.8735440
2018-04-25 8845.7402 BTC 11062.4317 0.7996199
2018-04-26 9281.5098 BTC 11000.8732 0.8437066
2018-04-27 8987.0498 BTC 10946.7135 0.8209815
2018-04-28 9348.4805 BTC 10905.0727 0.8572598
2018-04-29 9419.0801 BTC 10861.9561 0.8671624
2018-04-30 9240.5498 BTC 10806.9829 0.8550536
2018-05-01 9119.0098 BTC 10747.7229 0.8484597
2018-05-02 9235.9199 BTC 10696.4924 0.8634531
2018-05-03 9743.8604 BTC 10647.7771 0.9151075
2018-05-04 9700.7598 BTC 10590.5904 0.9159791
2018-05-05 9858.1504 BTC 10521.7386 0.9369317
2018-05-06 9654.7998 BTC 10453.9814 0.9235524
2018-05-07 9373.0098 BTC 10384.4015 0.9026047
2018-05-08 9234.8203 BTC 10323.3881 0.8945532
2018-05-09 9325.1797 BTC 10271.2494 0.9078915
2018-05-10 9043.9404 BTC 10222.9711 0.8846685
2018-05-11 8441.4902 BTC 10184.4689 0.8288592
2018-05-12 8504.8896 BTC 10140.2238 0.8387280
2018-05-13 8723.9404 BTC 10103.0677 0.8634942
2018-05-14 8716.7900 BTC 10065.1405 0.8660376
2018-05-15 8510.3799 BTC 10010.9303 0.8501088
2018-05-16 8368.8301 BTC 9957.5755 0.8404486
2018-05-17 8094.3198 BTC 9911.0600 0.8166957
2018-05-18 8250.9697 BTC 9865.3083 0.8363621
2018-05-19 8247.1797 BTC 9831.7010 0.8388355
2018-05-20 8513.2500 BTC 9791.3928 0.8694626
2018-05-21 8418.9902 BTC 9753.9770 0.8631341
2018-05-22 8041.7798 BTC 9704.4033 0.8286733
2018-05-23 7557.8198 BTC 9649.8092 0.7832093
2018-05-24 7587.3398 BTC 9592.5816 0.7909591
2018-05-25 7480.1401 BTC 9521.5147 0.7856040
2018-05-26 7355.8799 BTC 9448.8639 0.7784936
2018-05-27 7368.2202 BTC 9383.7969 0.7852067
2018-05-28 7135.9902 BTC 9326.4104 0.7651379
2018-05-29 7472.5898 BTC 9275.5332 0.8056238
2018-05-30 7406.5200 BTC 9221.4847 0.8031809
2018-05-31 7494.1699 BTC 9179.2588 0.8164243
2018-06-01 7541.4502 BTC 9133.2649 0.8257124
2018-06-02 7643.4502 BTC 9085.2881 0.8412997
2018-06-03 7720.2500 BTC 9042.0613 0.8538153
2018-06-04 7514.4702 BTC 8997.0232 0.8352174
2018-06-05 7633.7598 BTC 8969.4751 0.8510821
2018-06-06 7653.9800 BTC 8944.2278 0.8557452
2018-06-07 7678.2402 BTC 8917.1088 0.8610684
2018-06-08 7624.9199 BTC 8888.6625 0.8578253
2018-06-09 7531.9800 BTC 8850.3252 0.8510399
2018-06-10 6786.0200 BTC 8815.9390 0.7697444
2018-06-11 6906.9199 BTC 8787.1927 0.7860212
2018-06-12 6582.3599 BTC 8756.5781 0.7517046
2018-06-13 6349.8999 BTC 8720.7959 0.7281331
2018-06-14 6675.3501 BTC 8688.0527 0.7683367
2018-06-15 6456.5801 BTC 8654.3754 0.7460481
2018-06-16 6550.1602 BTC 8619.4430 0.7599285
2018-06-17 6499.2700 BTC 8581.6785 0.7573425
2018-06-18 6734.8198 BTC 8549.0958 0.7877815
2018-06-19 6769.9399 BTC 8525.2646 0.7941032
2018-06-20 6776.5498 BTC 8500.6607 0.7971792
2018-06-21 6729.7402 BTC 8483.2264 0.7932996
2018-06-22 6083.6899 BTC 8463.6046 0.7188060
2018-06-23 6162.4800 BTC 8442.0872 0.7299711
2018-06-24 6173.2300 BTC 8427.0602 0.7325485
2018-06-25 6249.1802 BTC 8422.0167 0.7420052
2018-06-26 6093.6699 BTC 8410.1572 0.7245608
2018-06-27 6157.1299 BTC 8399.6989 0.7330179
2018-06-28 5903.4399 BTC 8382.8264 0.7042303
2018-06-29 6218.2998 BTC 8364.8358 0.7433858
2018-06-30 6404.0000 BTC 8348.9936 0.7670386
2018-07-01 6385.8198 BTC 8336.5354 0.7660040
2018-07-02 6614.1802 BTC 8320.0184 0.7949718
2018-07-03 6529.5898 BTC 8305.2418 0.7862011
2018-07-04 6597.5498 BTC 8284.5484 0.7963681
2018-07-05 6639.1401 BTC 8259.3536 0.8038329
2018-07-06 6673.5000 BTC 8233.9222 0.8104886
2018-07-07 6856.9302 BTC 8203.5239 0.8358518
2018-07-08 6773.8799 BTC 8176.5387 0.8284532
2018-07-09 6741.7500 BTC 8144.5134 0.8277658
2018-07-10 6329.9502 BTC 8108.2723 0.7806781
2018-07-11 6394.7100 BTC 8077.5888 0.7916607
2018-07-12 6228.8101 BTC 8050.6160 0.7737060
2018-07-13 6238.0498 BTC 8021.5942 0.7776571
2018-07-14 6276.1201 BTC 7996.3303 0.7848750
2018-07-15 6359.6401 BTC 7972.7225 0.7976748
2018-07-16 6741.7500 BTC 7946.8300 0.8483571
2018-07-17 7321.0400 BTC 7922.5117 0.9240807
2018-07-18 7370.7798 BTC 7900.8894 0.9329051
2018-07-19 7466.8599 BTC 7876.0027 0.9480520
2018-07-20 7354.1299 BTC 7849.3436 0.9369102
2018-07-21 7419.2900 BTC 7820.2693 0.9487256
2018-07-22 7418.4902 BTC 7791.0256 0.9521840
2018-07-23 7711.1099 BTC 7763.4386 0.9932596
2018-07-24 8424.2695 BTC 7746.6126 1.0874778
2018-07-25 8181.3901 BTC 7733.8685 1.0578652
2018-07-26 7951.5801 BTC 7723.5583 1.0295229
2018-07-27 8165.0098 BTC 7715.1830 1.0583041
2018-07-28 8192.1504 BTC 7710.3698 1.0624848
2018-07-29 8218.4600 BTC 7700.6543 1.0672418
2018-07-30 8180.4800 BTC 7693.3354 1.0633203
2018-07-31 7780.4400 BTC 7683.2325 1.0126519
2018-08-01 7624.9100 BTC 7678.6261 0.9930045
2018-08-02 7567.1500 BTC 7673.3853 0.9861554
2018-08-03 7434.3900 BTC 7666.9284 0.9696699
2018-08-04 7032.8500 BTC 7660.6139 0.9180531
2018-08-05 7068.4800 BTC 7652.3625 0.9236991
2018-08-06 6951.8000 BTC 7640.3707 0.9098773
2018-08-07 6753.1200 BTC 7624.9396 0.8856621
2018-08-08 6305.8000 BTC 7606.2005 0.8290342
2018-08-09 6568.2300 BTC 7590.7702 0.8652916
2018-08-10 6184.7100 BTC 7571.5209 0.8168385
2018-08-11 6295.7300 BTC 7554.5752 0.8333665
2018-08-12 6322.6900 BTC 7539.0531 0.8386584
2018-08-13 6297.5700 BTC 7525.3972 0.8368422
2018-08-14 6199.7100 BTC 7513.7306 0.8251174
2018-08-15 6308.5200 BTC 7501.9737 0.8409147
2018-08-16 6334.7300 BTC 7496.0382 0.8450771
2018-08-17 6580.6300 BTC 7493.8247 0.8781404
2018-08-18 6423.7600 BTC 7489.8978 0.8576566
2018-08-19 6506.0700 BTC 7487.4823 0.8689263
2018-08-20 6308.5300 BTC 7481.9447 0.8431672
2018-08-21 6488.7600 BTC 7475.0351 0.8680575
2018-08-22 6376.7100 BTC 7471.6270 0.8534567
2018-08-23 6534.8800 BTC 7469.6513 0.8748574
2018-08-24 6719.9600 BTC 7470.2488 0.8995631
2018-08-25 6763.1900 BTC 7469.1923 0.9054781
2018-08-26 6707.2600 BTC 7466.9333 0.8982617
2018-08-27 6884.6400 BTC 7467.7470 0.9219166
2018-08-28 7096.2800 BTC 7469.6150 0.9500195
2018-08-29 7047.1600 BTC 7470.1781 0.9433724
2018-08-30 6978.2300 BTC 7463.6709 0.9349595
2018-08-31 7037.5800 BTC 7457.5396 0.9436866
2018-09-01 7193.2500 BTC 7451.8754 0.9652939
2018-09-02 7272.7200 BTC 7444.3297 0.9769476
2018-09-03 7260.0600 BTC 7438.6253 0.9759948
2018-09-04 7361.6600 BTC 7434.7651 0.9901671
2018-09-05 6792.8300 BTC 7424.9752 0.9148623
2018-09-06 6529.1700 BTC 7412.3671 0.8808482
2018-09-07 6467.0700 BTC 7395.3759 0.8744748
2018-09-08 6225.9800 BTC 7376.3074 0.8440511
2018-09-09 6300.8600 BTC 7358.4388 0.8562767
2018-09-10 6329.7000 BTC 7339.8589 0.8623735
2018-09-11 6321.2000 BTC 7315.7425 0.8640545
2018-09-12 6351.8000 BTC 7297.9286 0.8703566
2018-09-13 6517.3100 BTC 7278.1844 0.8954582
2018-09-14 6512.7100 BTC 7260.5105 0.8970044
2018-09-15 6543.2000 BTC 7240.4728 0.9036979
2018-09-16 6517.1800 BTC 7219.7449 0.9026884
2018-09-17 6281.2000 BTC 7198.6067 0.8725577
2018-09-18 6371.3000 BTC 7178.9802 0.8874937
2018-09-19 6398.5400 BTC 7158.7132 0.8938115
2018-09-20 6519.6700 BTC 7135.6833 0.9136714
2018-09-21 6734.9500 BTC 7114.4989 0.9466513
2018-09-22 6721.9800 BTC 7092.0977 0.9478127
2018-09-23 6710.6300 BTC 7071.0679 0.9490264
2018-09-24 6595.4100 BTC 7051.2279 0.9353562
2018-09-25 6446.4700 BTC 7031.3111 0.9168233
2018-09-26 6495.0000 BTC 7011.0956 0.9263887
2018-09-27 6676.7500 BTC 6994.1871 0.9546142
2018-09-28 6644.1300 BTC 6981.3488 0.9516972
2018-09-29 6601.9600 BTC 6967.7564 0.9475015
2018-09-30 6625.5600 BTC 6952.7680 0.9529385
2018-10-01 6589.6200 BTC 6937.5739 0.9498450
2018-10-02 6556.1000 BTC 6923.6148 0.9469187
2018-10-03 6502.5900 BTC 6910.2845 0.9410018
2018-10-04 6576.6900 BTC 6899.4443 0.9532202
2018-10-05 6622.4800 BTC 6887.8122 0.9614780
2018-10-06 6588.3100 BTC 6875.9631 0.9581654
2018-10-07 6602.9500 BTC 6862.3181 0.9622040
2018-10-08 6652.2300 BTC 6849.6984 0.9711712
2018-10-09 6642.6400 BTC 6839.7046 0.9711881
2018-10-10 6585.5300 BTC 6832.7596 0.9638170
2018-10-11 6256.2400 BTC 6823.2518 0.9169001
2018-10-12 6274.5800 BTC 6814.6406 0.9207499
2018-10-13 6285.9900 BTC 6806.9986 0.9234599
2018-10-14 6290.9300 BTC 6799.3036 0.9252315
2018-10-15 6596.5400 BTC 6795.4504 0.9707289
2018-10-16 6596.1100 BTC 6789.1899 0.9715607
2018-10-17 6544.4300 BTC 6783.0321 0.9648237
2018-10-18 6476.7100 BTC 6775.7645 0.9558641
2018-10-19 6465.4100 BTC 6768.0785 0.9552800
2018-10-20 6489.1900 BTC 6759.8338 0.9599630
2018-10-21 6482.3500 BTC 6750.9916 0.9602071
2018-10-22 6487.1600 BTC 6743.6537 0.9619652
2018-10-23 6475.7400 BTC 6735.3821 0.9614510
2018-10-24 6495.8400 BTC 6727.1097 0.9656212
2018-10-25 6476.2900 BTC 6718.5244 0.9639453
2018-10-26 6474.7500 BTC 6710.3089 0.9648960
2018-10-27 6480.3800 BTC 6702.7974 0.9668172
2018-10-28 6486.3900 BTC 6700.6572 0.9680230
2018-10-29 6332.6300 BTC 6696.5551 0.9456549
2018-10-30 6334.2700 BTC 6694.7831 0.9461501
2018-10-31 6317.6100 BTC 6694.5524 0.9436942
2018-11-01 6377.7800 BTC 6692.4269 0.9529846
2018-11-02 6388.4400 BTC 6691.9402 0.9546469
2018-11-03 6361.2600 BTC 6690.5909 0.9507770
2018-11-04 6376.1300 BTC 6689.7114 0.9531248
2018-11-05 6419.6600 BTC 6687.4602 0.9599549
2018-11-06 6461.0100 BTC 6685.2536 0.9664570
2018-11-07 6530.1400 BTC 6683.4935 0.9770549
2018-11-08 6453.7200 BTC 6681.5219 0.9659057
2018-11-09 6385.6200 BTC 6683.6786 0.9554050
2018-11-10 6409.2200 BTC 6685.4410 0.9586832
2018-11-11 6411.2700 BTC 6687.1413 0.9587460
2018-11-12 6371.2700 BTC 6688.0134 0.9526401
2018-11-13 6359.4900 BTC 6689.9121 0.9506089
2018-11-14 5738.3500 BTC 6686.9208 0.8581454
2018-11-15 5648.0300 BTC 6685.0964 0.8448689
2018-11-16 5575.5500 BTC 6680.5054 0.8346000
2018-11-17 5554.3300 BTC 6674.4363 0.8321796
2018-11-18 5623.5400 BTC 6668.9914 0.8432370
2018-11-19 4871.4900 BTC 6656.5436 0.7318348
2018-11-20 4451.8700 BTC 6641.7028 0.6702905
2018-11-21 4602.1700 BTC 6627.4501 0.6944104
2018-11-22 4365.9400 BTC 6611.2129 0.6603841
2018-11-23 4347.1100 BTC 6594.5959 0.6591928
2018-11-24 3880.7600 BTC 6573.3375 0.5903789
2018-11-25 4009.9700 BTC 6553.5953 0.6118733
2018-11-26 3779.1300 BTC 6532.4337 0.5785179
2018-11-27 3820.7200 BTC 6514.5106 0.5864938
2018-11-28 4257.4200 BTC 6499.2443 0.6550639
2018-11-29 4278.8465 BTC 6485.3160 0.6597746
2018-11-30 4017.2685 BTC 6469.4532 0.6209595
2018-12-01 4214.6719 BTC 6454.7286 0.6529588
2018-12-02 4139.8781 BTC 6438.8732 0.6429507
2018-12-03 3894.1309 BTC 6418.5330 0.6067011
2018-12-04 3956.8939 BTC 6394.5034 0.6187961
2018-12-05 3753.9948 BTC 6368.6692 0.5894473
2018-12-06 3521.1017 BTC 6340.4853 0.5553363
2018-12-07 3419.9372 BTC 6312.3839 0.5417822
2018-12-08 3476.1147 BTC 6284.2183 0.5531499
2018-12-09 3614.2343 BTC 6257.0451 0.5776264
2018-12-10 3502.6560 BTC 6226.9847 0.5624963
2018-12-11 3424.5881 BTC 6191.2727 0.5531315
2018-12-12 3486.9501 BTC 6157.7410 0.5662710
2018-12-13 3313.6773 BTC 6124.6131 0.5410427
2018-12-14 3242.4848 BTC 6089.4522 0.5324756
2018-12-15 3236.7616 BTC 6054.0566 0.5346434
2018-12-16 3252.8390 BTC 6018.5879 0.5404655
2018-12-17 3545.8648 BTC 5985.4835 0.5924108
2018-12-18 3696.0591 BTC 5956.3093 0.6205284
2018-12-19 3745.9508 BTC 5928.6025 0.6318438
2018-12-20 4134.4412 BTC 5904.0831 0.7002681
2018-12-21 3896.5437 BTC 5878.8128 0.6628113
2018-12-22 4014.1825 BTC 5857.2509 0.6853356
2018-12-23 3998.9803 BTC 5835.3259 0.6853054
2018-12-24 4078.5992 BTC 5814.8030 0.7014166
2018-12-25 3815.4906 BTC 5793.8199 0.6585449
2018-12-26 3857.2975 BTC 5776.3306 0.6677764
2018-12-27 3654.8335 BTC 5755.5207 0.6350135
2018-12-28 3923.9186 BTC 5739.3722 0.6836843
2018-12-29 3820.4087 BTC 5721.6913 0.6677062
2018-12-30 3865.9526 BTC 5704.1432 0.6777447
2018-12-31 3742.7003 BTC 5685.8941 0.6582431
2019-01-01 3843.5200 BTC 5669.0642 0.6779814
2019-01-02 3943.4093 BTC 5652.1705 0.6976805
2019-01-03 3836.7413 BTC 5634.3277 0.6809581
2019-01-04 3857.7176 BTC 5614.8784 0.6870527
2019-01-05 3845.1945 BTC 5596.4600 0.6870762
2019-01-06 4076.6327 BTC 5579.1069 0.7306963
2019-01-07 4025.2483 BTC 5562.7978 0.7236014
2019-01-08 4030.8480 BTC 5545.2412 0.7269022
2019-01-09 4035.2964 BTC 5528.5169 0.7299058
2019-01-10 3678.9247 BTC 5508.1172 0.6679097
2019-01-11 3687.3655 BTC 5486.4558 0.6720852
2019-01-12 3661.3010 BTC 5464.2994 0.6700403
2019-01-13 3552.9531 BTC 5441.7687 0.6529041
2019-01-14 3706.0522 BTC 5419.0645 0.6838915
2019-01-15 3630.6752 BTC 5394.3102 0.6730564
2019-01-16 3655.0069 BTC 5370.0805 0.6806242
2019-01-17 3678.5640 BTC 5346.5115 0.6880307
2019-01-18 3657.8394 BTC 5322.3704 0.6872576
2019-01-19 3728.5684 BTC 5297.6227 0.7038192
2019-01-20 3601.0136 BTC 5271.3962 0.6831233
2019-01-21 3576.0324 BTC 5245.0818 0.6817877
2019-01-22 3604.5771 BTC 5218.2455 0.6907642
2019-01-23 3585.1231 BTC 5195.3333 0.6900660
2019-01-24 3600.8655 BTC 5174.4168 0.6958978
2019-01-25 3599.7659 BTC 5153.9361 0.6984499
2019-01-26 3602.4604 BTC 5135.1966 0.7015234
2019-01-27 3583.9658 BTC 5115.7902 0.7005693
2019-01-28 3470.4505 BTC 5095.3670 0.6810992
2019-01-29 3448.1170 BTC 5074.8450 0.6794527
2019-01-30 3486.1818 BTC 5054.3763 0.6897353
2019-01-31 3457.7927 BTC 5032.5226 0.6870894
2019-02-01 3487.9454 BTC 5010.9172 0.6960693
2019-02-02 3521.0608 BTC 4989.3305 0.7057181
2019-02-03 3464.0133 BTC 4967.5221 0.6973322
2019-02-04 3459.1541 BTC 4947.3646 0.6991913
2019-02-05 3466.3574 BTC 4926.6151 0.7035982
2019-02-06 3413.7677 BTC 4905.2953 0.6959352
2019-02-07 3399.4716 BTC 4883.0081 0.6961839
2019-02-08 3666.7804 BTC 4861.0926 0.7543120
2019-02-09 3671.2037 BTC 4839.3014 0.7586227
2019-02-10 3690.1882 BTC 4817.7268 0.7659605
2019-02-11 3648.4306 BTC 4796.6769 0.7606163
2019-02-12 3653.5286 BTC 4776.7274 0.7648602
2019-02-13 3632.0706 BTC 4756.2779 0.7636372
2019-02-14 3616.8810 BTC 4734.4216 0.7639541
2019-02-15 3620.8108 BTC 4712.8265 0.7682886
2019-02-16 3629.7875 BTC 4691.5967 0.7736785
2019-02-17 3673.8363 BTC 4670.5130 0.7866023
2019-02-18 3915.7145 BTC 4651.4136 0.8418332
2019-02-19 3947.0944 BTC 4632.7779 0.8519930
2019-02-20 3999.8205 BTC 4614.9010 0.8667186
2019-02-21 3954.1182 BTC 4596.1683 0.8603075
2019-02-22 4005.5266 BTC 4577.4758 0.8750514
2019-02-23 4142.5269 BTC 4560.0059 0.9084477
2019-02-24 3810.4274 BTC 4540.0593 0.8392902
2019-02-25 3882.6963 BTC 4520.2769 0.8589510
2019-02-26 3854.3579 BTC 4500.3606 0.8564553
2019-02-27 3851.0475 BTC 4480.8286 0.8594499
2019-02-28 3854.7853 BTC 4463.6754 0.8635900
2019-03-01 3859.5838 BTC 4446.4254 0.8680195
2019-03-02 3864.4151 BTC 4429.1284 0.8725001
2019-03-03 3847.1757 BTC 4411.6730 0.8720446
2019-03-04 3761.5570 BTC 4391.4232 0.8565690
2019-03-05 3896.3750 BTC 4372.1393 0.8911827
2019-03-06 3903.9426 BTC 4353.2787 0.8967821
2019-03-07 3911.4843 BTC 4334.9557 0.9023124
2019-03-08 3901.1316 BTC 4316.6394 0.9037428
2019-03-09 3963.3137 BTC 4298.5974 0.9220016
2019-03-10 3951.5998 BTC 4280.5206 0.9231587
2019-03-11 3905.2273 BTC 4262.0783 0.9162730
2019-03-12 3909.1562 BTC 4243.7455 0.9211571
2019-03-13 3906.7172 BTC 4225.2518 0.9246117
2019-03-14 3924.3691 BTC 4207.0238 0.9328136
2019-03-15 3960.9112 BTC 4189.0678 0.9455352
2019-03-16 4048.7259 BTC 4171.6988 0.9705221
2019-03-17 4025.2290 BTC 4154.1191 0.9689729
2019-03-18 4032.5074 BTC 4137.6897 0.9745795
2019-03-19 4071.1902 BTC 4121.5248 0.9877874
2019-03-20 4087.4763 BTC 4105.5953 0.9955868
2019-03-21 4029.3269 BTC 4088.8206 0.9854497
2019-03-22 4023.9682 BTC 4071.9315 0.9882210
2019-03-23 4035.8264 BTC 4055.3213 0.9951928
2019-03-24 4022.1683 BTC 4038.5073 0.9959542
2019-03-25 3963.0707 BTC 4020.9602 0.9856031
2019-03-26 3985.0808 BTC 4003.2750 0.9954552
2019-03-27 4087.0662 BTC 3985.8245 1.0254005
2019-03-28 4069.1071 BTC 3968.7915 1.0252761
2019-03-29 4098.3745 BTC 3952.4541 1.0369190
2019-03-30 4106.6601 BTC 3936.0072 1.0433569
2019-03-31 4105.4043 BTC 3919.5367 1.0474208
2019-04-01 4158.1831 BTC 3903.7290 1.0651823
2019-04-02 4879.8778 BTC 3893.1603 1.2534490
2019-04-03 4973.0218 BTC 3887.6937 1.2791702
2019-04-04 4922.7988 BTC 3882.5135 1.2679412
2019-04-05 5036.6811 BTC 3878.6644 1.2985607
2019-04-06 5059.8172 BTC 3875.1322 1.3057147
2019-04-07 5198.8970 BTC 3872.0990 1.3426560
2019-04-08 5289.7710 BTC 3875.0867 1.3650717
2019-04-09 5204.9584 BTC 3880.4659 1.3413230
2019-04-10 5324.5519 BTC 3885.6258 1.3703203
2019-04-11 5064.4877 BTC 3890.6154 1.3017189
2019-04-12 5089.5389 BTC 3895.9185 1.3063772
2019-04-13 5096.5866 BTC 3904.6030 1.3052765
2019-04-14 5167.7224 BTC 3912.8726 1.3206978
2019-04-15 5067.1085 BTC 3922.0725 1.2919467
2019-04-16 5235.5594 BTC 3932.1785 1.3314654
2019-04-17 5251.9382 BTC 3939.2822 1.3332221
2019-04-18 5298.3857 BTC 3946.5646 1.3425311
2019-04-19 5303.8126 BTC 3955.7542 1.3407842
2019-04-20 5337.8861 BTC 3963.7771 1.3466666
2019-04-21 5314.5315 BTC 3972.1675 1.3379424
2019-04-22 5399.3654 BTC 3982.9192 1.3556302
2019-04-23 5572.3621 BTC 3994.4583 1.3950232
2019-04-24 5464.8666 BTC 4006.6788 1.3639393
2019-04-25 5210.5156 BTC 4018.7460 1.2965526
2019-04-26 5279.3482 BTC 4032.0275 1.3093532
2019-04-27 5268.2911 BTC 4044.8288 1.3024757
2019-04-28 5285.1390 BTC 4056.7638 1.3027968
2019-04-29 5247.3525 BTC 4069.2259 1.2895211
2019-04-30 5350.7267 BTC 4082.9841 1.3104941
2019-05-01 5402.6971 BTC 4096.6680 1.3188028
2019-05-02 5505.2837 BTC 4112.3223 1.3387286
2019-05-03 5768.2894 BTC 4130.3638 1.3965572
2019-05-04 5831.1675 BTC 4148.8952 1.4054747
2019-05-05 5795.7084 BTC 4167.0586 1.3908392
2019-05-06 5746.8070 BTC 4182.7796 1.3739206
2019-05-07 5829.5015 BTC 4198.0185 1.3886317
2019-05-08 5982.4573 BTC 4213.9935 1.4196646
2019-05-09 6174.5287 BTC 4228.5656 1.4601946
2019-05-10 6378.8490 BTC 4246.2963 1.5022147
2019-05-11 7204.7717 BTC 4269.0863 1.6876613
2019-05-12 6972.3715 BTC 4290.3248 1.6251384
2019-05-13 7814.9151 BTC 4317.0127 1.8102599
2019-05-14 7994.4162 BTC 4346.8622 1.8391234
2019-05-15 8205.1675 BTC 4377.9184 1.8742166
2019-05-16 7884.9093 BTC 4408.1332 1.7887185
2019-05-17 7343.8957 BTC 4432.5616 1.6568062
2019-05-18 7271.2079 BTC 4457.2102 1.6313361
2019-05-19 8197.6897 BTC 4488.1512 1.8265182
2019-05-20 7978.3091 BTC 4518.4055 1.7657355
2019-05-21 7963.3278 BTC 4547.8327 1.7510160
2019-05-22 7680.0665 BTC 4574.5231 1.6788781
2019-05-23 7881.8467 BTC 4603.4168 1.7121732
2019-05-24 7987.3716 BTC 4632.9143 1.7240491
2019-05-25 8052.5439 BTC 4662.9668 1.7269143
2019-05-26 8673.2160 BTC 4695.7995 1.8470158
2019-05-27 8805.7784 BTC 4729.9462 1.8617079
2019-05-28 8719.9617 BTC 4763.4398 1.8306018
2019-05-29 8659.4878 BTC 4796.4698 1.8053877
2019-05-30 8319.4722 BTC 4829.6165 1.7225948
2019-05-31 8574.5016 BTC 4864.5247 1.7626597
2019-06-01 8564.0165 BTC 4899.5441 1.7479211
2019-06-02 8742.9581 BTC 4936.6155 1.7710429
2019-06-03 8208.9948 BTC 4968.7794 1.6521150
2019-06-04 7707.7708 BTC 4997.9015 1.5422014
2019-06-05 7824.2315 BTC 5027.6817 1.5562305
2019-06-06 7822.0234 BTC 5057.2778 1.5466865
2019-06-07 8043.9514 BTC 5088.6072 1.5807766
2019-06-08 7954.1277 BTC 5118.7898 1.5539079
2019-06-09 7688.0771 BTC 5147.9831 1.4934154
2019-06-10 8000.3298 BTC 5179.5852 1.5445889
2019-06-11 7927.7144 BTC 5210.4647 1.5214985
2019-06-12 8145.8575 BTC 5243.0414 1.5536512
2019-06-13 8230.9238 BTC 5276.1133 1.5600355
2019-06-14 8693.8328 BTC 5312.4995 1.6364863
2019-06-15 8838.3752 BTC 5349.8988 1.6520640
2019-06-16 8994.4880 BTC 5388.5454 1.6691866
2019-06-17 9320.3522 BTC 5430.3304 1.7163508
2019-06-18 9081.7629 BTC 5470.5708 1.6601125
2019-06-19 9273.5218 BTC 5511.9089 1.6824519
2019-06-20 9527.1604 BTC 5555.2615 1.7149796
2019-06-21 10144.5567 BTC 5602.8088 1.8106198
2019-06-22 10701.6910 BTC 5654.0990 1.8927315
2019-06-23 10855.3710 BTC 5706.8944 1.9021503
2019-06-24 11011.1024 BTC 5760.8369 1.9113720
2019-06-25 11790.9165 BTC 5820.2980 2.0258269
2019-06-26 13016.2317 BTC 5888.8870 2.2103042
2019-06-27 11182.8063 BTC 5944.4823 1.8812078
2019-06-28 12407.3320 BTC 6006.9148 2.0655082
2019-06-29 11959.3710 BTC 6066.1160 1.9715038
2019-06-30 10817.1556 BTC 6117.0229 1.7683693
2019-07-01 10583.1345 BTC 6166.5565 1.7162146
2019-07-02 10801.6779 BTC 6217.6147 1.7372704
2019-07-03 11961.2693 BTC 6277.1090 1.9055379
2019-07-04 11215.4375 BTC 6331.3844 1.7714037
2019-07-05 10978.4600 BTC 6383.9390 1.7197000
2019-07-06 11208.5508 BTC 6438.0731 1.7409791
2019-07-07 11450.8468 BTC 6493.6231 1.7633987
2019-07-08 12285.9582 BTC 6553.4106 1.8747426
2019-07-09 12573.8129 BTC 6615.0300 1.9007945
2019-07-10 12156.5126 BTC 6673.2921 1.8216665
2019-07-11 11358.6618 BTC 6726.1817 1.6887236
2019-07-12 11815.9867 BTC 6781.9707 1.7422645
2019-07-13 11392.3793 BTC 6833.7554 1.6670745
2019-07-14 10256.0583 BTC 6879.7956 1.4907504
2019-07-15 10895.0894 BTC 6929.8841 1.5721893
2019-07-16 9477.6420 BTC 6970.0504 1.3597666
2019-07-17 9693.8027 BTC 7011.7844 1.3825015
2019-07-18 10666.4828 BTC 7060.4394 1.5107392
2019-07-19 10530.7326 BTC 7108.0904 1.4815136
2019-07-20 10767.1395 BTC 7157.3956 1.5043376
2019-07-21 10599.1054 BTC 7205.6237 1.4709491
2019-07-22 10343.1062 BTC 7252.6347 1.4261171
2019-07-23 9900.7680 BTC 7295.5233 1.3571018
2019-07-24 9811.9262 BTC 7337.7231 1.3371895
2019-07-25 9911.8423 BTC 7380.5828 1.3429620
2019-07-26 9870.3035 BTC 7423.2198 1.3296526
2019-07-27 9477.6777 BTC 7462.6081 1.2700222
2019-07-28 9552.8604 BTC 7502.6171 1.2732704
2019-07-29 9519.1459 BTC 7542.7165 1.2620315
2019-07-30 9607.4237 BTC 7583.4184 1.2668988
2019-07-31 10085.6277 BTC 7627.5535 1.3222625
2019-08-01 10399.6694 BTC 7673.8056 1.3552167
2019-08-02 10518.1747 BTC 7720.6432 1.3623443
2019-08-03 10821.7265 BTC 7769.0218 1.3929330
2019-08-04 10970.1842 BTC 7818.6286 1.4030829
2019-08-05 11805.6537 BTC 7874.1511 1.4992922
2019-08-06 11478.1693 BTC 7927.0581 1.4479734
2019-08-07 11941.9683 BTC 7983.1616 1.4958946
2019-08-08 11966.4074 BTC 8039.8551 1.4883860
2019-08-09 11862.9368 BTC 8095.8477 1.4653113
2019-08-10 11354.0242 BTC 8148.1205 1.3934531
2019-08-11 11523.5794 BTC 8201.7020 1.4050229
2019-08-12 11382.6160 BTC 8254.6988 1.3789257
2019-08-13 10895.8304 BTC 8304.0613 1.3121086
2019-08-14 10051.7039 BTC 8346.6658 1.2042777
2019-08-15 10311.5454 BTC 8391.2547 1.2288443
2019-08-16 10374.3393 BTC 8436.0830 1.2297579
2019-08-17 10231.7438 BTC 8479.8336 1.2065972
2019-08-18 10345.8104 BTC 8524.4079 1.2136691
2019-08-19 10916.0539 BTC 8572.6784 1.2733539
2019-08-20 10763.2326 BTC 8614.7024 1.2494027
2019-08-21 10138.0494 BTC 8651.5955 1.1718127
2019-08-22 10131.0561 BTC 8688.7973 1.1659906
2019-08-23 10407.9653 BTC 8727.1636 1.1925943
2019-08-24 10159.9605 BTC 8763.5932 1.1593373
2019-08-25 10138.5177 BTC 8798.8762 1.1522514
2019-08-26 10370.8202 BTC 8835.1694 1.1738111
2019-08-27 10185.4999 BTC 8870.7447 1.1482125
2019-08-28 9754.4233 BTC 8902.3867 1.0957088
2019-08-29 9510.2005 BTC 8934.1417 1.0644784
2019-08-30 9598.1736 BTC 8966.3463 1.0704665
2019-08-31 9630.6638 BTC 8998.7325 1.0702245
2019-09-01 9757.9703 BTC 9031.5200 1.0804350
2019-09-02 10346.7608 BTC 9069.2318 1.1408641
2019-09-03 10623.5401 BTC 9107.7174 1.1664328
2019-09-04 10594.4934 BTC 9145.8785 1.1583899
2019-09-05 10575.5333 BTC 9183.5724 1.1515707
2019-09-06 10353.3026 BTC 9219.6402 1.1229617
2019-09-07 10517.2548 BTC 9256.6357 1.1361854
2019-09-08 10441.2760 BTC 9293.2553 1.1235327
2019-09-09 10334.9742 BTC 9328.5097 1.1078912
2019-09-10 10115.9758 BTC 9360.9640 1.0806553
2019-09-11 10178.3719 BTC 9394.6319 1.0834242
2019-09-12 10410.1268 BTC 9431.7720 1.1037297
2019-09-13 10360.5473 BTC 9468.0663 1.0942622
2019-09-14 10358.0492 BTC 9504.4217 1.0898137
2019-09-15 10347.7129 BTC 9540.5830 1.0845996
2019-09-16 10276.7936 BTC 9576.5075 1.0731254
2019-09-17 10241.2722 BTC 9611.4400 1.0655294
2019-09-18 10198.2484 BTC 9645.6939 1.0572851
2019-09-19 10266.4150 BTC 9679.7020 1.0606127
2019-09-20 10181.6413 BTC 9711.2260 1.0484404
2019-09-21 10019.7169 BTC 9741.1442 1.0285975
2019-09-22 10070.3921 BTC 9771.6776 1.0305694
2019-09-23 9729.3238 BTC 9800.1242 0.9927756
2019-09-24 8620.5664 BTC 9820.0604 0.8778527
2019-09-25 8486.9930 BTC 9837.9499 0.8626790
2019-09-26 8118.9676 BTC 9851.8387 0.8241068
2019-09-27 8251.8456 BTC 9865.2173 0.8364586
2019-09-28 8245.9152 BTC 9872.6540 0.8352278
2019-09-29 8104.1857 BTC 9880.7384 0.8202004
2019-09-30 8293.8677 BTC 9884.1595 0.8391070
2019-10-01 8343.2767 BTC 9886.6514 0.8438931
2019-10-02 8393.0416 BTC 9887.9933 0.8488114
2019-10-03 8259.9920 BTC 9890.6725 0.8351295
2019-10-04 8205.9392 BTC 9896.8299 0.8291483
2019-10-05 8151.5005 BTC 9903.1177 0.8231247
2019-10-06 7988.1560 BTC 9901.6211 0.8067523
2019-10-07 8245.6229 BTC 9903.5305 0.8325943
2019-10-08 8228.7832 BTC 9905.4266 0.8307349
2019-10-09 8595.7398 BTC 9911.9671 0.8672083
2019-10-10 8586.4734 BTC 9917.0001 0.8658338
2019-10-11 8321.7567 BTC 9919.3886 0.8389385
2019-10-12 8336.5553 BTC 9921.4173 0.8402585
2019-10-13 8321.0057 BTC 9918.9015 0.8389040
2019-10-14 8374.6864 BTC 9915.8222 0.8445781
2019-10-15 8205.3693 BTC 9912.1466 0.8278095
2019-10-16 8047.5269 BTC 9907.7754 0.8122436
2019-10-17 8103.9114 BTC 9906.2357 0.8180616
2019-10-18 7973.2074 BTC 9901.9408 0.8052166
2019-10-19 7988.5604 BTC 9897.8304 0.8071022
2019-10-20 8222.0783 BTC 9894.1098 0.8310074
2019-10-21 8243.7211 BTC 9894.3578 0.8331739
2019-10-22 8078.2033 BTC 9897.0038 0.8162272
2019-10-23 7514.6720 BTC 9894.7926 0.7594573
2019-10-24 7493.4887 BTC 9892.4460 0.7574960
2019-10-25 8660.7006 BTC 9896.8513 0.8750966
2019-10-26 9244.9722 BTC 9906.0716 0.9332632
2019-10-27 9551.7150 BTC 9919.3833 0.9629344
2019-10-28 9256.1484 BTC 9928.3535 0.9322944
2019-10-29 9427.6876 BTC 9939.0676 0.9485485
2019-10-30 9205.7266 BTC 9946.6380 0.9255114
2019-10-31 9199.5848 BTC 9953.5571 0.9242510
2019-11-01 9261.1044 BTC 9957.6090 0.9300530
2019-11-02 9324.7178 BTC 9961.0829 0.9361149
2019-11-03 9235.3549 BTC 9962.8033 0.9269836
2019-11-04 9412.6119 BTC 9963.4623 0.9447129
2019-11-05 9342.5272 BTC 9965.3249 0.9375035
2019-11-06 9360.8799 BTC 9965.9489 0.9392864
2019-11-07 9267.5611 BTC 9964.0947 0.9300957
2019-11-08 8804.8807 BTC 9954.5255 0.8845103
2019-11-09 8813.5825 BTC 9941.0391 0.8865856
2019-11-10 9055.5261 BTC 9928.1830 0.9121031
2019-11-11 8757.7885 BTC 9912.0879 0.8835463
2019-11-12 8815.6625 BTC 9890.8361 0.8912960
2019-11-13 8808.2626 BTC 9860.7792 0.8932623
2019-11-14 8708.0951 BTC 9843.1027 0.8846901
2019-11-15 8491.9920 BTC 9815.1360 0.8651935
2019-11-16 8550.7606 BTC 9790.7887 0.8733475
2019-11-17 8577.9758 BTC 9774.7946 0.8775607
2019-11-18 8309.2860 BTC 9758.5528 0.8514875
2019-11-19 8206.1459 BTC 9740.0133 0.8425190
2019-11-20 8027.2682 BTC 9711.9133 0.8265383
2019-11-21 7642.7499 BTC 9686.3941 0.7890191
2019-11-22 7296.5776 BTC 9660.0949 0.7553319
2019-11-23 7397.7968 BTC 9632.8753 0.7679739
2019-11-24 7047.9169 BTC 9601.4258 0.7340490
2019-11-25 7146.1339 BTC 9564.7127 0.7471352
2019-11-26 7218.3713 BTC 9526.4596 0.7577181
2019-11-27 7531.6636 BTC 9493.4250 0.7933558
2019-11-28 7463.1061 BTC 9465.5996 0.7884452
2019-11-29 7761.2436 BTC 9436.6371 0.8224586
2019-11-30 7569.6301 BTC 9409.3318 0.8044812
2019-12-01 7424.2923 BTC 9389.1049 0.7907348
2019-12-02 7321.9881 BTC 9363.5827 0.7819644
2019-12-03 7320.1455 BTC 9348.1720 0.7830564
2019-12-04 7252.0346 BTC 9330.7308 0.7772204
2019-12-05 7448.3075 BTC 9307.7438 0.8002270
2019-12-06 7546.9967 BTC 9286.4314 0.8126907
2019-12-07 7556.2380 BTC 9263.4964 0.8157004
2019-12-08 7564.3454 BTC 9241.8196 0.8184909
2019-12-09 7400.8994 BTC 9220.8038 0.8026306
2019-12-10 7278.1198 BTC 9202.0706 0.7909220
2019-12-11 7217.4271 BTC 9183.5385 0.7859092
2019-12-12 7243.1344 BTC 9164.4763 0.7903490
2019-12-13 7269.6846 BTC 9145.9004 0.7948572
2019-12-14 7124.6740 BTC 9129.0933 0.7804361
2019-12-15 7152.3018 BTC 9111.9464 0.7849368
2019-12-16 6932.4804 BTC 9093.4702 0.7623581
2019-12-17 6640.5152 BTC 9072.2780 0.7319568
2019-12-18 7276.8028 BTC 9052.2150 0.8038699
2019-12-19 7202.8444 BTC 9029.3805 0.7977119
2019-12-20 7218.8164 BTC 9005.8137 0.8015729
2019-12-21 7191.1585 BTC 8979.8810 0.8008078
2019-12-22 7511.5890 BTC 8955.1768 0.8387985
2019-12-23 7355.6283 BTC 8923.3909 0.8243086
2019-12-24 7322.5325 BTC 8893.7078 0.8233385
2019-12-25 7275.1557 BTC 8860.3734 0.8210891
2019-12-26 7238.9670 BTC 8826.6060 0.8201303
2019-12-27 7290.0885 BTC 8793.9428 0.8289898
2019-12-28 7317.9900 BTC 8765.1140 0.8348996
2019-12-29 7422.6526 BTC 8735.8216 0.8496800
2019-12-30 7292.9951 BTC 8706.6100 0.8376389
2019-12-31 7193.5990 BTC 8680.1655 0.8287398
2020-01-01 7200.1744 BTC 8659.7975 0.8314484
2020-01-02 6985.4700 BTC 8636.0398 0.8088742
2020-01-03 7344.8842 BTC 8614.4008 0.8526286
2020-01-04 7410.6566 BTC 8594.2502 0.8622808
2020-01-05 7411.3173 BTC 8573.2895 0.8644660
2020-01-06 7769.2190 BTC 8550.8121 0.9085943
2020-01-07 8163.6922 BTC 8532.2440 0.9568048
2020-01-08 8079.8628 BTC 8517.5427 0.9486143
2020-01-09 7879.0715 BTC 8501.4571 0.9267907
2020-01-10 8166.5541 BTC 8485.4470 0.9624189
2020-01-11 8037.5374 BTC 8470.2868 0.9489097
2020-01-12 8192.4940 BTC 8456.3866 0.9687937
2020-01-13 8144.1945 BTC 8440.4822 0.9648968
2020-01-14 8827.7644 BTC 8430.7841 1.0470870
2020-01-15 8807.0103 BTC 8424.0168 1.0454645
2020-01-16 8723.7858 BTC 8418.3996 1.0362760
2020-01-17 8929.0377 BTC 8413.6200 1.0612599
2020-01-18 8942.8089 BTC 8408.7068 1.0635177
2020-01-19 8706.2451 BTC 8401.1945 1.0363104
2020-01-20 8657.6429 BTC 8389.1293 1.0320073
2020-01-21 8745.8948 BTC 8375.7176 1.0441965
2020-01-22 8680.8760 BTC 8362.0489 1.0381279
2020-01-23 8406.5161 BTC 8346.5559 1.0071838
2020-01-24 8445.4343 BTC 8332.9283 1.0135014
2020-01-25 8367.8478 BTC 8317.5754 1.0060441
2020-01-26 8596.8298 BTC 8304.4008 1.0352137
2020-01-27 8909.8192 BTC 8294.2211 1.0742201
2020-01-28 9358.5903 BTC 8288.8112 1.1290630
2020-01-29 9316.6295 BTC 8282.6559 1.1248360
2020-01-30 9508.9936 BTC 8276.2192 1.1489538
2020-01-31 9350.5294 BTC 8269.0048 1.1307926
2020-02-01 9392.8754 BTC 8262.1107 1.1368615
2020-02-02 9344.3653 BTC 8254.9439 1.1319720
2020-02-03 9293.5211 BTC 8247.9206 1.1267714
2020-02-04 9180.9630 BTC 8240.3469 1.1141476
2020-02-05 9613.4243 BTC 8236.1696 1.1672203
2020-02-06 9729.8022 BTC 8232.3367 1.1819004
2020-02-07 9795.9438 BTC 8229.5817 1.1903331
2020-02-08 9865.1195 BTC 8228.4774 1.1988997
2020-02-09 10116.6738 BTC 8228.8080 1.2294215
2020-02-10 9856.6115 BTC 8229.7172 1.1976853
2020-02-11 10208.2363 BTC 8241.0577 1.2387046
2020-02-12 10326.0545 BTC 8254.1938 1.2510070
2020-02-13 10214.3795 BTC 8269.1611 1.2352377
2020-02-14 10312.1161 BTC 8283.8773 1.2448417
2020-02-15 9889.4246 BTC 8295.6166 1.1921265
2020-02-16 9934.4334 BTC 8308.6898 1.1956679
2020-02-17 9690.1426 BTC 8318.6632 1.1648678
2020-02-18 10141.9964 BTC 8331.5112 1.2173057
2020-02-19 9633.3869 BTC 8340.3708 1.1550310
2020-02-20 9608.4759 BTC 8350.0029 1.1507153
2020-02-21 9686.4412 BTC 8360.5779 1.1585851
2020-02-22 9663.1818 BTC 8371.3756 1.1543123
2020-02-23 9924.5152 BTC 8385.2067 1.1835743
2020-02-24 9650.1748 BTC 8395.2393 1.1494818
2020-02-25 9341.7052 BTC 8403.1887 1.1116858
2020-02-26 8820.5222 BTC 8404.7943 1.0494632
2020-02-27 8784.4938 BTC 8406.2087 1.0450007
2020-02-28 8672.4554 BTC 8408.7137 1.0313653
2020-02-29 8599.5086 BTC 8410.5919 1.0224618
2020-03-01 8562.4541 BTC 8412.3166 1.0178473
2020-03-02 8869.6703 BTC 8415.8522 1.0539242
2020-03-03 8787.7865 BTC 8420.0123 1.0436786
2020-03-04 8755.2459 BTC 8425.0674 1.0391900
2020-03-05 9078.7628 BTC 8432.0307 1.0766995
2020-03-06 9122.5456 BTC 8440.2402 1.0808396
2020-03-07 8909.9537 BTC 8446.8216 1.0548292
2020-03-08 8108.1163 BTC 8446.0076 0.9599940
2020-03-09 7923.6447 BTC 8443.7213 0.9384067
2020-03-10 7909.7294 BTC 8442.5179 0.9368922
2020-03-11 7911.4301 BTC 8445.3519 0.9367792
2020-03-12 4970.7879 BTC 8427.3326 0.5898412
2020-03-13 5563.7069 BTC 8405.2112 0.6619354
2020-03-14 5200.3663 BTC 8376.3212 0.6208413
2020-03-15 5392.3149 BTC 8346.6112 0.6460484
2020-03-16 5014.4800 BTC 8316.3136 0.6029691
2020-03-17 5225.6292 BTC 8286.2989 0.6306349
2020-03-18 5238.4386 BTC 8257.9611 0.6343501
2020-03-19 6191.1930 BTC 8236.4726 0.7516802
2020-03-20 6198.7782 BTC 8214.5988 0.7546051
2020-03-21 6185.0665 BTC 8192.1727 0.7549971
2020-03-22 5830.2548 BTC 8167.8506 0.7138053
2020-03-23 6416.3148 BTC 8146.4485 0.7876211
2020-03-24 6734.8038 BTC 8127.8219 0.8286111
2020-03-25 6681.0631 BTC 8108.6803 0.8239396
2020-03-26 6716.4405 BTC 8090.4580 0.8301681
2020-03-27 6469.7981 BTC 8073.7789 0.8013346
2020-03-28 6242.1939 BTC 8055.4118 0.7749069
2020-03-29 5922.0431 BTC 8033.0298 0.7372116
2020-03-30 6429.8419 BTC 8016.4016 0.8020858
2020-03-31 6438.6448 BTC 7999.4229 0.8048887
2020-04-01 6606.7763 BTC 7983.6980 0.8275333
2020-04-02 6793.6246 BTC 7970.0232 0.8523971
2020-04-03 6733.3874 BTC 7957.4618 0.8461728
2020-04-04 6867.5273 BTC 7945.4387 0.8643358
2020-04-05 6791.1294 BTC 7932.6755 0.8560957
2020-04-06 7271.7812 BTC 7925.2647 0.9175443
2020-04-07 7176.4145 BTC 7917.9095 0.9063522
2020-04-08 7334.0985 BTC 7912.9583 0.9268466
2020-04-09 7302.0895 BTC 7910.5250 0.9230853
2020-04-10 6865.4934 BTC 7907.4458 0.8682315
2020-04-11 6859.0830 BTC 7903.5979 0.8678431
2020-04-12 6971.0916 BTC 7903.0491 0.8820762
2020-04-13 6845.0377 BTC 7900.8984 0.8663619
2020-04-14 6842.4279 BTC 7898.2131 0.8663261
2020-04-15 6642.1099 BTC 7891.8592 0.8416407
2020-04-16 7116.8042 BTC 7889.3856 0.9020733
2020-04-17 7096.1847 BTC 7884.6352 0.9000017
2020-04-18 7257.6649 BTC 7882.4068 0.9207422
2020-04-19 7189.4248 BTC 7880.7292 0.9122791
2020-04-20 6881.9587 BTC 7877.5861 0.8736126
2020-04-21 6880.3235 BTC 7874.4446 0.8737535
2020-04-22 7117.2075 BTC 7873.4815 0.9039467
2020-04-23 7429.7246 BTC 7873.3488 0.9436550
2020-04-24 7550.9010 BTC 7873.3767 0.9590423
2020-04-25 7569.9360 BTC 7873.4745 0.9614480
2020-04-26 7679.8672 BTC 7874.2997 0.9753080
2020-04-27 7795.6008 BTC 7877.1190 0.9896513
2020-04-28 7807.0585 BTC 7880.8971 0.9906307
2020-04-29 8801.0378 BTC 7892.2086 1.1151552
2020-04-30 8658.5542 BTC 7902.3187 1.0956979
2020-05-01 8864.7668 BTC 7913.7122 1.1201781
2020-05-02 8988.5962 BTC 7927.0259 1.1339179
2020-05-03 8897.4685 BTC 7939.4914 1.1206598
2020-05-04 8912.6546 BTC 7953.6355 1.1205762
2020-05-05 9003.0702 BTC 7970.5109 1.1295474
2020-05-06 9268.7621 BTC 7984.7392 1.1608096
2020-05-07 9951.5187 BTC 8004.3726 1.2432603
2020-05-08 9842.6664 BTC 8023.1143 1.2267887
2020-05-09 9593.8967 BTC 8040.2768 1.1932297
2020-05-10 8756.4311 BTC 8049.1685 1.0878678
2020-05-11 8601.7962 BTC 8058.0697 1.0674760
2020-05-12 8804.4778 BTC 8068.6550 1.0911952
2020-05-13 9269.9877 BTC 8082.9038 1.1468635
2020-05-14 9733.7215 BTC 8100.7235 1.2015867
2020-05-15 9328.1972 BTC 8115.2814 1.1494607
2020-05-16 9377.0140 BTC 8129.9887 1.1533859
2020-05-17 9670.7394 BTC 8146.0465 1.1871697
2020-05-18 9726.5748 BTC 8163.4292 1.1914815
2020-05-19 9729.0379 BTC 8181.5395 1.1891451
2020-05-20 9522.9812 BTC 8198.1309 1.1616039
2020-05-21 9081.7620 BTC 8213.1045 1.1057648
2020-05-22 9182.5775 BTC 8226.2308 1.1162558
2020-05-23 9209.2874 BTC 8239.0782 1.1177570
2020-05-24 8790.3680 BTC 8248.9286 1.0656375
2020-05-25 8906.9348 BTC 8257.0551 1.0787060
2020-05-26 8835.0531 BTC 8261.8505 1.0693794
2020-05-27 9181.0179 BTC 8269.7159 1.1101975
2020-05-28 9525.7511 BTC 8281.4779 1.1502477
2020-05-29 9439.1244 BTC 8290.5677 1.1385378
2020-05-30 9700.4141 BTC 8302.4454 1.1683803
2020-05-31 9461.0589 BTC 8311.5066 1.1383085
2020-06-01 10167.2681 BTC 8325.9571 1.2211531
2020-06-02 9529.8041 BTC 8330.9717 1.1439007
2020-06-03 9656.7178 BTC 8337.0410 1.1582908
2020-06-04 9800.6366 BTC 8344.7328 1.1744698
2020-06-05 9665.5328 BTC 8349.9935 1.1575497
2020-06-06 9653.6793 BTC 8355.0711 1.1554275
2020-06-07 9758.8524 BTC 8362.5898 1.1669653
2020-06-08 9771.4895 BTC 8370.5458 1.1673659
2020-06-09 9795.7002 BTC 8378.0444 1.1692108
2020-06-10 9870.0945 BTC 8386.5388 1.1768972
2020-06-11 9321.7813 BTC 8393.0764 1.1106513
2020-06-12 9480.8438 BTC 8400.4722 1.1286084
2020-06-13 9475.2773 BTC 8408.3824 1.1268847
2020-06-14 9386.7879 BTC 8414.0250 1.1156121
2020-06-15 9450.7020 BTC 8417.8884 1.1226927
2020-06-16 9538.0244 BTC 8419.1701 1.1328937
2020-06-17 9480.2554 BTC 8420.3389 1.1258758
2020-06-18 9411.8405 BTC 8419.6449 1.1178429
2020-06-19 9288.0187 BTC 8419.1984 1.1031951
2020-06-20 9332.3408 BTC 8418.7660 1.1085165
2020-06-21 9303.6297 BTC 8418.4751 1.1051443
2020-06-22 9648.7176 BTC 8421.0122 1.1457907
2020-06-23 9629.6584 BTC 8424.2171 1.1430924
2020-06-24 9313.6103 BTC 8422.0756 1.1058569
2020-06-25 9264.8130 BTC 8418.7543 1.1004969
2020-06-26 9162.9176 BTC 8414.2327 1.0889784
2020-06-27 9045.3910 BTC 8408.3774 1.0757594
2020-06-28 9143.5822 BTC 8401.4268 1.0883368
2020-06-29 9190.8545 BTC 8396.6714 1.0945831
2020-06-30 9137.9934 BTC 8389.0268 1.0892793
2020-07-01 9228.3256 BTC 8381.1859 1.1010764
2020-07-02 9123.4102 BTC 8373.3932 1.0895714
2020-07-03 9087.3039 BTC 8364.6446 1.0863945
2020-07-04 9132.4880 BTC 8359.2379 1.0925025
2020-07-05 9073.9429 BTC 8353.0915 1.0862976
2020-07-06 9375.4748 BTC 8350.8439 1.1226979
2020-07-07 9252.2775 BTC 8344.4888 1.1087890
2020-07-08 9428.3331 BTC 8343.0241 1.1300858
2020-07-09 9277.9679 BTC 8340.6633 1.1123777
2020-07-10 9278.8079 BTC 8337.7517 1.1128669
2020-07-11 9240.3463 BTC 8334.7314 1.1086556
2020-07-12 9276.4999 BTC 8330.1027 1.1136117
2020-07-13 9243.6139 BTC 8327.1987 1.1100508
2020-07-14 9243.2134 BTC 8326.4952 1.1100965
2020-07-15 9192.8374 BTC 8329.1546 1.1036939
2020-07-16 9132.2279 BTC 8331.6384 1.0960903
2020-07-17 9151.3922 BTC 8335.0594 1.0979397
2020-07-18 9159.0399 BTC 8339.0560 1.0983305
2020-07-19 9185.8169 BTC 8343.5086 1.1009537
2020-07-20 9164.2314 BTC 8345.6126 1.0980897
2020-07-21 9374.8875 BTC 8349.8062 1.1227671
2020-07-22 9525.3635 BTC 8355.3071 1.1400375
2020-07-23 9581.0720 BTC 8358.8950 1.1462128
2020-07-24 9536.8927 BTC 8361.8546 1.1405236
2020-07-25 9677.1135 BTC 8367.3343 1.1565348
2020-07-26 9905.1672 BTC 8380.1704 1.1819768
2020-07-27 10990.8734 BTC 8402.0792 1.3081135
2020-07-28 10912.8231 BTC 8423.5298 1.2955166
2020-07-29 11100.4681 BTC 8446.3087 1.3142390
2020-07-30 11111.2143 BTC 8490.1689 1.3087153
2020-07-31 11323.4664 BTC 8531.3100 1.3272834
2020-08-01 11759.5928 BTC 8578.1616 1.3708756
2020-08-02 11053.6139 BTC 8618.5995 1.2825302
2020-08-03 11246.3488 BTC 8663.1128 1.2981880
2020-08-04 11205.8929 BTC 8705.8290 1.2871713
2020-08-05 11747.0228 BTC 8752.3189 1.3421612
2020-08-06 11779.7733 BTC 8792.2373 1.3397925
2020-08-07 11601.4727 BTC 8830.8280 1.3137469
2020-08-08 11754.0458 BTC 8870.6064 1.3250555
2020-08-09 11675.7393 BTC 8912.3599 1.3100615
2020-08-10 11878.1113 BTC 8951.3727 1.3269598
2020-08-11 11410.5257 BTC 8984.7707 1.2699852
2020-08-12 11584.9346 BTC 9019.7984 1.2843895
2020-08-13 11784.1374 BTC 9055.9962 1.3012525
2020-08-14 11768.8706 BTC 9093.8467 1.2941576
2020-08-15 11865.6986 BTC 9134.0146 1.2990672
2020-08-16 11892.8041 BTC 9176.6629 1.2959835
2020-08-17 12254.4019 BTC 9218.2669 1.3293607
2020-08-18 11991.2332 BTC 9257.9283 1.2952394
2020-08-19 11758.2836 BTC 9294.7247 1.2650491
2020-08-20 11878.3716 BTC 9331.0444 1.2729949
2020-08-21 11592.4890 BTC 9365.7522 1.2377531
2020-08-22 11681.8256 BTC 9400.1401 1.2427289
2020-08-23 11664.8480 BTC 9434.9523 1.2363441
2020-08-24 11774.5958 BTC 9467.1153 1.2437364
2020-08-25 11366.1351 BTC 9497.0419 1.1968079
2020-08-26 11488.3635 BTC 9526.7152 1.2059102
2020-08-27 11323.3970 BTC 9555.4388 1.1850211
2020-08-28 11542.4997 BTC 9588.8460 1.2037423
2020-08-29 11506.8653 BTC 9622.0445 1.1958857
2020-08-30 11711.5062 BTC 9655.9046 1.2128855
2020-08-31 11680.8205 BTC 9690.4459 1.2053956
2020-09-01 11970.4787 BTC 9727.0748 1.2306350
2020-09-02 11414.0337 BTC 9761.1600 1.1693317
2020-09-03 10245.2967 BTC 9783.5064 1.0472009
2020-09-04 10511.8139 BTC 9807.9037 1.0717697
2020-09-05 10169.5672 BTC 9828.7030 1.0346805
2020-09-06 10280.3517 BTC 9850.7811 1.0436078
2020-09-07 10369.5637 BTC 9875.6925 1.0500088
2020-09-08 10131.5166 BTC 9898.9153 1.0234977
2020-09-09 10242.3478 BTC 9921.2378 1.0323659
2020-09-10 10363.1390 BTC 9942.1907 1.0423396
2020-09-11 10400.9147 BTC 9962.5480 1.0440015
2020-09-12 10442.1706 BTC 9983.0639 1.0459886
2020-09-13 10323.7558 BTC 10001.9488 1.0321744
2020-09-14 10680.8374 BTC 10022.5577 1.0656798
2020-09-15 10796.9510 BTC 10043.9140 1.0749745
2020-09-16 10974.9049 BTC 10059.4417 1.0910054
2020-09-17 10948.9899 BTC 10075.8019 1.0866619
2020-09-18 10944.5858 BTC 10090.6578 1.0846256
2020-09-19 11094.3463 BTC 10105.6988 1.0978307
2020-09-20 10938.2713 BTC 10120.2760 1.0808274
2020-09-21 10462.2596 BTC 10131.3446 1.0326625
2020-09-22 10538.4603 BTC 10142.3117 1.0390590
2020-09-23 10246.1865 BTC 10149.2933 1.0095468
2020-09-24 10760.0663 BTC 10155.0686 1.0595759
2020-09-25 10692.7172 BTC 10161.1404 1.0523147
2020-09-26 10750.7236 BTC 10169.4035 1.0571636
2020-09-27 10775.2694 BTC 10183.8237 1.0580770
2020-09-28 10709.6522 BTC 10198.8799 1.0500812
2020-09-29 10844.6410 BTC 10213.4525 1.0617997
2020-09-30 10784.4916 BTC 10224.2703 1.0547933
2020-10-01 10619.4519 BTC 10230.5970 1.0380090
2020-10-02 10575.9750 BTC 10239.5097 1.0328595
2020-10-03 10549.3289 BTC 10247.8834 1.0294154
2020-10-04 10669.5825 BTC 10255.0180 1.0404255
2020-10-05 10793.3394 BTC 10262.6377 1.0517120
2020-10-06 10604.4059 BTC 10268.8903 1.0326730
2020-10-07 10668.9690 BTC 10277.0760 1.0381327
2020-10-08 10915.6857 BTC 10290.1754 1.0607871
2020-10-09 11064.4576 BTC 10303.6174 1.0738420
2020-10-10 11296.3614 BTC 10318.5251 1.0947651
2020-10-11 11384.1820 BTC 10337.0523 1.1012987
2020-10-12 11555.3629 BTC 10355.9697 1.1158166
2020-10-13 11425.8994 BTC 10374.4757 1.1013472
2020-10-14 11429.5069 BTC 10390.5364 1.0999920
2020-10-15 11495.3497 BTC 10404.6049 1.1048329
2020-10-16 11322.1227 BTC 10418.0549 1.0867789
2020-10-17 11358.1016 BTC 10429.8955 1.0889948
2020-10-18 11483.3597 BTC 10444.3405 1.0994815
2020-10-19 11742.0372 BTC 10455.5889 1.1230393
2020-10-20 11916.3351 BTC 10472.6355 1.1378545
2020-10-21 12823.6892 BTC 10495.2568 1.2218557
2020-10-22 12965.8913 BTC 10517.8657 1.2327493
2020-10-23 12931.5390 BTC 10541.1943 1.2267622
2020-10-24 13108.0626 BTC 10565.8685 1.2406044
2020-10-25 13031.1743 BTC 10589.2422 1.2306050
2020-10-26 13075.2477 BTC 10612.8405 1.2320215
2020-10-27 13654.2184 BTC 10640.4013 1.2832428
2020-10-28 13271.2854 BTC 10664.6956 1.2444130
2020-10-29 13437.8832 BTC 10694.0963 1.2565702
2020-10-30 13546.5223 BTC 10723.1369 1.2632985
2020-10-31 13780.9947 BTC 10753.8920 1.2814890
2020-11-01 13737.1098 BTC 10784.9657 1.2737277
2020-11-02 13550.4894 BTC 10814.2499 1.2530217
2020-11-03 13950.3008 BTC 10845.7662 1.2862439
2020-11-04 14133.7072 BTC 10879.0051 1.2991728
2020-11-05 15579.8485 BTC 10923.0623 1.4263261
2020-11-06 15565.8806 BTC 10967.9042 1.4192211
2020-11-07 14833.7541 BTC 11007.2000 1.3476410
2020-11-08 15479.5670 BTC 11051.3138 1.4006993
2020-11-09 15332.3156 BTC 11091.9110 1.3822970
2020-11-10 15290.9027 BTC 11132.3484 1.3735559
2020-11-11 15701.3397 BTC 11177.9751 1.4046676
2020-11-12 16276.3439 BTC 11228.0574 1.4496135
2020-11-13 16317.8082 BTC 11279.1638 1.4467215
2020-11-14 16068.1387 BTC 11329.3263 1.4182784
2020-11-15 15955.5874 BTC 11377.9834 1.4023212
2020-11-16 16716.1113 BTC 11431.7353 1.4622549
2020-11-17 17645.4058 BTC 11492.5025 1.5353841
2020-11-18 17804.0056 BTC 11553.7574 1.5409711
2020-11-19 17817.0902 BTC 11615.8551 1.5338596
2020-11-20 18621.3144 BTC 11683.9552 1.5937509
2020-11-21 18642.2328 BTC 11751.8819 1.5863189
2020-11-22 18370.0025 BTC 11818.2823 1.5543716
2020-11-23 18364.1216 BTC 11882.4869 1.5454780
2020-11-24 19107.4644 BTC 11952.8811 1.5985656
2020-11-25 18732.1208 BTC 12019.3368 1.5584987
2020-11-26 17150.6236 BTC 12075.5700 1.4202745
2020-11-27 17108.4017 BTC 12131.4957 1.4102467
2020-11-28 17717.4150 BTC 12192.0462 1.4531945
2020-11-29 18177.4834 BTC 12255.6246 1.4831952
2020-11-30 19625.8350 BTC 12329.7834 1.5917421
2020-12-01 18802.9983 BTC 12398.0675 1.5166072
2020-12-02 19201.0912 BTC 12469.5551 1.5398377
2020-12-03 19445.3985 BTC 12543.2206 1.5502716
2020-12-04 18699.7656 BTC 12611.4232 1.4827641
2020-12-05 19154.2311 BTC 12682.8175 1.5102505
2020-12-06 19345.1210 BTC 12755.3839 1.5166240
2020-12-07 19191.6313 BTC 12827.0082 1.4961892
2020-12-08 18321.1449 BTC 12890.9100 1.4212453
2020-12-09 18553.9154 BTC 12955.3997 1.4321376
2020-12-10 18264.9921 BTC 13017.4277 1.4031184
2020-12-11 18058.9033 BTC 13078.2992 1.3808297
2020-12-12 18803.6569 BTC 13143.4888 1.4306443
2020-12-13 19142.3825 BTC 13209.4689 1.4491410
2020-12-14 19246.6443 BTC 13268.4387 1.4505583
2020-12-15 19417.0760 BTC 13329.1834 1.4567341
2020-12-16 21310.5981 BTC 13402.1129 1.5900924
2020-12-17 22805.1615 BTC 13485.6411 1.6910699
2020-12-18 23137.9606 BTC 13570.0303 1.7050780
2020-12-19 23869.8320 BTC 13656.5320 1.7478692
2020-12-20 23477.2952 BTC 13745.2726 1.7080269
2020-12-21 22803.0814 BTC 13827.8207 1.6490727
2020-12-22 23783.0285 BTC 13917.6574 1.7088385
2020-12-23 23241.3449 BTC 13999.7597 1.6601246
2020-12-24 23735.9497 BTC 14085.1609 1.6851742
2020-12-25 24664.7903 BTC 14178.4703 1.7395946
2020-12-26 26437.0375 BTC 14283.3488 1.8508991
2020-12-27 26272.2946 BTC 14387.6100 1.8260361
2020-12-28 27084.8079 BTC 14496.2292 1.8684037
2020-12-29 27362.4366 BTC 14610.1714 1.8728347
2020-12-30 28840.9534 BTC 14733.4287 1.9575181
2020-12-31 29001.7198 BTC 14856.4114 1.9521349
2021-01-01 29374.1519 BTC 14982.1635 1.9606082
2021-01-02 32127.2679 BTC 15126.8890 2.1238516
2021-01-03 32782.0245 BTC 15276.0977 2.1459685
2021-01-04 31971.9135 BTC 15416.9370 2.0738175
2021-01-05 33992.4293 BTC 15574.0884 2.1826272
2021-01-06 36824.3644 BTC 15753.1319 2.3375901
2021-01-07 39371.0424 BTC 15949.5081 2.4684800
2021-01-08 40797.6107 BTC 16158.1161 2.5248990
2021-01-09 40254.5465 BTC 16362.2070 2.4602150
2021-01-10 38356.4395 BTC 16552.8612 2.3172090
2021-01-11 35566.6559 BTC 16722.8045 2.1268356
2021-01-12 33922.9606 BTC 16883.9247 2.0091869
2021-01-13 37316.3594 BTC 17068.4103 2.1862821
2021-01-14 39187.3281 BTC 17267.4384 2.2694349
2021-01-15 36825.3659 BTC 17448.0303 2.1105744
2021-01-16 36178.1389 BTC 17624.2537 2.0527473
2021-01-17 35791.2779 BTC 17796.2521 2.0111694
2021-01-18 36630.0757 BTC 17974.4610 2.0378956
2021-01-19 36069.8064 BTC 18146.5991 1.9876896
2021-01-20 35547.7509 BTC 18318.9828 1.9404872
2021-01-21 30825.6985 BTC 18465.9857 1.6693232
2021-01-22 33005.7636 BTC 18626.6567 1.7719639
2021-01-23 32067.6429 BTC 18783.0716 1.7072630
2021-01-24 32289.3781 BTC 18940.2789 1.7047995
2021-01-25 32366.3930 BTC 19097.3991 1.6948063
2021-01-26 32569.8496 BTC 19257.6729 1.6912661
2021-01-27 30432.5471 BTC 19401.8886 1.5685353
2021-01-28 33466.0964 BTC 19566.9097 1.7103414
2021-01-29 34316.3877 BTC 19737.7345 1.7386184
2021-01-30 34269.5215 BTC 19907.9299 1.7214006
2021-01-31 33114.3577 BTC 20070.7199 1.6498839
2021-02-01 33537.1768 BTC 20233.9795 1.6574682
2021-02-02 35510.2890 BTC 20410.5033 1.7398047
2021-02-03 37472.0901 BTC 20599.7689 1.8190539
2021-02-04 36926.0645 BTC 20785.3195 1.7765454
2021-02-05 38144.3069 BTC 20979.6032 1.8181615
2021-02-06 39266.0107 BTC 21180.8294 1.8538467
2021-02-07 38903.4415 BTC 21380.5806 1.8195690
2021-02-08 46196.4637 BTC 21635.8249 2.1351838
2021-02-09 46481.1042 BTC 21892.5581 2.1231463
2021-02-10 44918.1845 BTC 22140.2152 2.0288052
2021-02-11 47909.3312 BTC 22405.5671 2.1382780
2021-02-12 47504.8512 BTC 22668.5109 2.0956317
2021-02-13 47105.5175 BTC 22928.1880 2.0544806
2021-02-14 48717.2902 BTC 23199.2024 2.0999554
2021-02-15 47945.0568 BTC 23465.1696 2.0432436
2021-02-16 49199.8713 BTC 23739.1355 2.0725216
2021-02-17 52149.0075 BTC 24034.5964 2.1697476
2021-02-18 51679.7967 BTC 24327.8846 2.1243029
2021-02-19 55888.1337 BTC 24651.5428 2.2671252
2021-02-20 56099.5205 BTC 24976.9013 2.2460561
2021-02-21 57539.9437 BTC 25311.6896 2.2732557
2021-02-22 54207.3191 BTC 25621.7895 2.1156726
2021-02-23 48824.4269 BTC 25894.7896 1.8854923
2021-02-24 49705.3333 BTC 26173.6208 1.8990622
2021-02-25 47093.8530 BTC 26432.0363 1.7816960
2021-02-26 46339.7601 BTC 26684.0027 1.7366120
2021-02-27 46188.4513 BTC 26933.2320 1.7149242
2021-02-28 45137.7705 BTC 27174.3290 1.6610445
2021-03-01 49631.2414 BTC 27446.2996 1.8083036
2021-03-02 48378.9881 BTC 27710.2502 1.7458878
2021-03-03 50538.2434 BTC 27989.5983 1.8056080
2021-03-04 48561.1662 BTC 28254.3542 1.7187144
2021-03-05 48927.3046 BTC 28522.9626 1.7153654
2021-03-06 48912.3817 BTC 28791.2075 1.6988652
2021-03-07 51206.6930 BTC 29074.9456 1.7611965
2021-03-08 52246.5223 BTC 29364.2633 1.7792553
2021-03-09 54824.1178 BTC 29670.7475 1.8477498
2021-03-10 56008.5494 BTC 29979.2108 1.8682463
2021-03-11 57805.1230 BTC 30299.4910 1.9077919
2021-03-12 57332.0890 BTC 30616.6378 1.8725795
2021-03-13 61243.0848 BTC 30960.4594 1.9781065
2021-03-14 59302.3170 BTC 31290.9675 1.8951896
2021-03-15 55907.2002 BTC 31596.9100 1.7693882
2021-03-16 56804.9012 BTC 31905.1292 1.7804316
2021-03-17 58870.8933 BTC 32230.8407 1.8265392
2021-03-18 57858.9207 BTC 32548.1338 1.7776417
2021-03-19 58346.6530 BTC 32868.1347 1.7751738
2021-03-20 58313.6426 BTC 33186.2251 1.7571641
2021-03-21 57523.4210 BTC 33498.9844 1.7171691
2021-03-22 54529.1456 BTC 33791.6891 1.6136851
2021-03-23 54738.9449 BTC 34083.0366 1.6060466
2021-03-24 52774.2637 BTC 34359.0406 1.5359644
2021-03-25 51704.1619 BTC 34617.0714 1.4936030
2021-03-26 55137.3137 BTC 34899.7245 1.5798782
2021-03-27 55973.5108 BTC 35193.5799 1.5904466
2021-03-28 55950.7458 BTC 35482.6597 1.5768476
2021-03-29 57750.1999 BTC 35785.6446 1.6137812
2021-03-30 58917.6930 BTC 36097.2645 1.6321927
2021-03-31 58918.8327 BTC 36405.9609 1.6183842
2021-04-01 59095.8080 BTC 36711.8142 1.6097218
2021-04-02 59384.3134 BTC 37019.4321 1.6041390
2021-04-03 57603.8892 BTC 37316.1161 1.5436732
2021-04-04 58758.5563 BTC 37621.8516 1.5618199
2021-04-05 59057.8790 BTC 37924.2928 1.5572572
2021-04-06 58192.3587 BTC 38213.9138 1.5228055
2021-04-07 56048.9378 BTC 38487.0919 1.4563048
2021-04-08 58323.9536 BTC 38776.4267 1.5041085
2021-04-09 58245.0030 BTC 39059.4530 1.4911884
2021-04-10 59793.2354 BTC 39353.3888 1.5193923
2021-04-11 60204.9649 BTC 39652.2099 1.5183256
2021-04-12 59893.4519 BTC 39948.8480 1.4992535
2021-04-13 63503.4579 BTC 40265.9622 1.5771002
2021-04-14 63109.6959 BTC 40582.9449 1.5550793
2021-04-15 63314.0108 BTC 40912.6834 1.5475399
2021-04-16 61572.7896 BTC 41230.2862 1.4933874
2021-04-17 60683.8212 BTC 41537.1891 1.4609516
2021-04-18 56216.1850 BTC 41808.8941 1.3445987
2021-04-19 55724.2671 BTC 42066.7400 1.3246633
2021-04-20 56473.0323 BTC 42335.8117 1.3339305
2021-04-21 53906.0880 BTC 42583.7045 1.2658854
2021-04-22 51762.2721 BTC 42814.5393 1.2089882
2021-04-23 51093.6507 BTC 43045.9242 1.1869568
2021-04-24 50050.8682 BTC 43266.6145 1.1568011
2021-04-25 49004.2533 BTC 43478.4654 1.1270925
2021-04-26 54021.7548 BTC 43727.2520 1.2354253
2021-04-27 55033.1180 BTC 43989.4804 1.2510518
2021-04-28 54824.7049 BTC 44248.5575 1.2390168
2021-04-29 53555.1085 BTC 44500.6297 1.2034686
2021-04-30 57750.1773 BTC 44784.1388 1.2895230
2021-05-01 57828.0506 BTC 45062.8845 1.2832745
2021-05-02 56631.0774 BTC 45330.6609 1.2492886
2021-05-03 57200.2912 BTC 45601.7584 1.2543440
2021-05-04 53333.5378 BTC 45844.0188 1.1633696
2021-05-05 57424.0059 BTC 46101.9717 1.2455868
2021-05-06 56396.5142 BTC 46341.9100 1.2169657
2021-05-07 57356.4019 BTC 46586.3274 1.2311853
2021-05-08 58803.7758 BTC 46835.8556 1.2555290
2021-05-09 58232.3161 BTC 47084.1057 1.2367723
2021-05-10 55859.7975 BTC 47320.2251 1.1804635
2021-05-11 56704.5731 BTC 47555.3790 1.1923903
2021-05-12 49150.5339 BTC 47740.4446 1.0295366
2021-05-13 49716.1916 BTC 47926.0178 1.0373529
2021-05-14 49880.5334 BTC 48106.1303 1.0368852
2021-05-15 46760.1866 BTC 48251.2956 0.9690970
2021-05-16 46456.0585 BTC 48395.4653 0.9599259
2021-05-17 43537.5114 BTC 48512.9847 0.8974404
2021-05-18 42909.4009 BTC 48624.0344 0.8824731
2021-05-19 37002.4405 BTC 48682.3307 0.7600795
2021-05-20 40782.7383 BTC 48766.4809 0.8362863
2021-05-21 37304.6907 BTC 48823.1276 0.7640783
2021-05-22 37536.6311 BTC 48861.7659 0.7682209
2021-05-23 34770.5836 BTC 48875.9699 0.7114045
2021-05-24 38705.9786 BTC 48924.0703 0.7911439
2021-05-25 38402.2239 BTC 48955.5689 0.7844301
2021-05-26 39294.1974 BTC 48973.2105 0.8023611
2021-05-27 38436.9685 BTC 48966.5386 0.7849640
2021-05-28 35697.6064 BTC 48930.1100 0.7295632
2021-05-29 34616.0680 BTC 48889.8351 0.7080422
2021-05-30 35678.1292 BTC 48870.7043 0.7300515
2021-05-31 37332.8537 BTC 48883.3200 0.7637135
2021-06-01 36684.9245 BTC 48903.0484 0.7501562
2021-06-02 37575.1796 BTC 48904.8971 0.7683316
2021-06-03 39208.7660 BTC 48905.0502 0.8017325
2021-06-04 36894.4053 BTC 48905.5433 0.7544013
2021-06-05 35551.9587 BTC 48901.0706 0.7270180
2021-06-06 35862.3777 BTC 48901.5785 0.7333583
2021-06-07 33560.7078 BTC 48879.6544 0.6865987
2021-06-08 33472.6317 BTC 48861.1032 0.6850568
2021-06-09 37345.1215 BTC 48873.9415 0.7641111
2021-06-10 36702.5994 BTC 48915.9194 0.7503201
2021-06-11 37334.3995 BTC 48946.8382 0.7627541
2021-06-12 35552.5171 BTC 48971.7302 0.7259804
2021-06-13 39097.8609 BTC 49020.3622 0.7975841
2021-06-14 40218.4779 BTC 49076.4485 0.8195067
2021-06-15 40406.2690 BTC 49132.4230 0.8223952
2021-06-16 38347.0632 BTC 49188.9552 0.7795869
2021-06-17 38053.5042 BTC 49221.7224 0.7731039
2021-06-18 35787.2448 BTC 49232.2285 0.7269069
2021-06-19 35615.8693 BTC 49241.8453 0.7232846
2021-06-20 35698.2964 BTC 49260.3020 0.7246869
2021-06-21 31676.6937 BTC 49247.0128 0.6432206
2021-06-22 32505.6598 BTC 49225.5512 0.6603412
2021-06-23 33723.0290 BTC 49198.7722 0.6854445
2021-06-24 34662.4359 BTC 49182.6034 0.7047703
2021-06-25 31637.7801 BTC 49136.1282 0.6438802
2021-06-26 32186.2777 BTC 49085.5587 0.6557179
2021-06-27 34649.6446 BTC 49055.1744 0.7063403
2021-06-28 34434.3353 BTC 48971.1592 0.7031554
2021-06-29 35867.7777 BTC 48895.3498 0.7335621
2021-06-30 35040.8372 BTC 48824.7973 0.7176853
2021-07-01 33572.1177 BTC 48722.3886 0.6890491
2021-07-02 33897.0486 BTC 48625.1900 0.6971088
2021-07-03 34668.5484 BTC 48536.3545 0.7142800
2021-07-04 35287.7798 BTC 48440.4295 0.7284778
2021-07-05 33746.0025 BTC 48339.0076 0.6981112
2021-07-06 34235.1935 BTC 48232.1171 0.7098008

9. Criptomonedas, ¿Valor refugio?

Uno de los comentarios que uno escucha de las criptomonedas es que son un valor refugio, ¿pero es esto cierto? Un activo refugio es aquel que suele tener poca volatilidad y cuyo precio suele aumentar cuando el crecimiento económico se contrae y existe incertidumbre. Para poder dar una respuesta vamos a analizar la volatilidad del ethereum mediante diversos indicadores y la compararemos con los mismos indicadores pero del índice SP500.

Antes de todo es saber que es la volatilidad y cómo medirla. Definimos la volatilidad como la fluctuación del precio de un activo. Aunque en el mundo de la inversión, la definimos como la variación del precio de un activo con respecto a su media histórica. Para medirla se suelen usar varios indicadores, pero nosotros lo haremos a través de la desviación típica.

Antes de comenzar debemos explicar una cosa: Todos los gráficos que veremos a partir en este apartado se actualizarán diariamente con los nuevos datos de Bitcoin, Ethereum… De tal forma que cada día que veamos este trabajo veremos un análisis diferente.

Retornos

#> [1] "^GSPC"

Vemos como los máximos retornos desde el 2015 tanto positivos como negativos del S&P fueron de alrededor de un 1%y un -1,5%. Sin embargo vemos como los del ethereum son mucho más grandes, habiendo retornos de más del 2,5% e incluso del 4%, lo que es un indicio de una mayor volatilidad del ethereum.

Desviación estándar

Ahora calcularemos la desviación estándar anualizada de estos retornos. Para anualizar la desv. estandar del eth multiplicamos la desviacion de los retornos por la raiz cuadrada de 365 (los dias que cotiza el ethereum).

ETH S&P
1.082052 0.1927191

En esta tabla vemos el valor de la desviación estándar para ETH y para el índice S&P, esta tabla se actualiza diariamente, por lo que cada día veremos unos valores distintos. Da igual el día que veamos esto, que siempre observamos un valor de ETH muy superior al de S&P A mayor desviación típica, mayor variación del precio entorno a la media que puede alcanzar un activo, por ende, mayor volatilidad. Vemos como el eth es mucho más volátil.

Drawdown

Por ultimo calcularemos el drawdown y lo veremos en un gráfico, para no tener un solo indicador de la volatilidad y poder ser así más precisos y tener más seguridad sobre la información.

El Drawdown lo definimos como la pérdida porcentual desde el último máximo marcado por el precio del activo. Por ejemplo, si el último máximo fue de 70 dólares y ahora el precio es de 35 dólares, nuestro drawdown es del 50%, si mañana nuestro precio es de 50 dólares, nuestro drawdown será del 28,5%. Obviamente si pasado mañana marcamos un nuevo máximo histórico, por ejemplo 80 dólares, nuestro drawdown será del 0% al no haber un precio máximo anterior, y el máximo de referencia para los próximos down sides serán esos 80$, hasta que estos se vuelvan a superar. Obviamente a mayores drawdowns, más volátil es el activo.

Vemos como el drawdown máximo del SP es alrededor del 35% (debido al confinamiento), mientras que los del Ethereum vemos cómo son superiores incluso al 80%.

Con lo cual, viendo estos datos podemos deducir que las criptomonedas son volátiles, al menos más que el SP500, con lo cual aún no las podemos considerar activos refugios.


Código

#Lo primero de todo es obtener los datos (aunque los del ETH ya los tenemos gracias al análisis técnico realizado anteriormente. Lo segundo seleccionamos los datos del precio de cierre.

getSymbols("^GSPC", src = "yahoo", from = "2017-01-01")
ETH <- `ETH-USD`[,"ETH-USD.Close"]
SP500 <- `GSPC`[,"GSPC.Close"]

#Segundo, debemos obtener los retornos (nosotros usamos los retornos simples) del ethereum, ya que calcularemos y mediremos la desviación estándar y la volatilidad de estos. Los retornos simples sa calculan restando al precio actual el precio anterior y diviendolo entre el precio anterior . Para ello utilizaremos una instrucción que lo hace de forma automática:

retorno_eth <- na.omit(Return.calculate(ETH))
retorno_SP500 <- na.omit(Return.calculate(SP500))

#los podemos ver en un gráfico mediante la siguiente instrucción:

graf_ret_eth <- plot.xts(retorno_eth, main = "Retorno diario simple ETH", ylab = "ETH-USD.Close")
graf_ret_eth

graf_ret_SP <- plot.xts(retorno_SP500, main = "Retorno diario simple SP500", ylab = "GSPC.Close")
graf_ret_SP

desv_eth <- sd(retorno_eth)*sqrt(365)


#En cambio, para calcular la del SP, nos basta la instrucción StdDev.annualized, esta hace exactamente lo mismo que la formula anterior, pero multiplica la desviacion de los retornos por la raiz de 252, que son el numero de dias que cotiza el SP (la bolsa “cierra” los findes de semana y festivos, las criptomonedas no lo hacen.)

desv_SP500 <- StdDev.annualized(retorno_SP500)

 
sdf<- as.data.frame(c(desv_eth,desv_SP500)) %>% 
  mutate(variable= c("ETH", "S&P")) %>% pivot_wider(names_from = "variable", values_from = "c(desv_eth, desv_SP500)")

library(gt)

sdf %>% gt() %>% tab_options(heading.background.color = "#fbf7f0") %>% tab_options(heading.title.font.size = 15, heading.subtitle.font.size = 13,  column_labels.font.weight =  "bold")

graf_down_eth <- chart.Drawdown(retorno_eth)
graf_down_eth

graf_dow_SP <- chart.Drawdown(retorno_SP500)
graf_dow_SP


10. Correlación entre criptomonedas

Beta (correlación) del retorno diario de altcoins respecto a BTC

Todos hemos oído hablar de bitcoin, ya que esta es la criptomoneda más popular y la que está llamada a ser el “dinero del futuro”, sin embargo, no podemos olvidar que existen muchas más criptomonedas.

En este apartado, nos vamos a centrar en analizar si bitcoin influye o “arrastra a las demás criptomonedas o altcoins”. (Una altcoin es una criptomoneda de baja capitalización y que suele ser muy volátil. Lo haremos a través de la beta de bitcoin y las altcoins cardano, solana, iota, dogecoin, terra y Polkadot.

La beta la definimos como el tanto % que sube o baja un activo respecto a un aumento de 1% del activo de referencia (este suele ser un índice cuando analizamos acciones, por ejemplo el SP500 o el Nasdaq, en nuestro caso la referencia será bitcoin).

Por cada 1% que aumenta el btc, ADA aumenta un 0,92%. Por cada 1% que aumenta el btc, SOL aumenta un 0,77% Por cada 1% que aumenta el btc, IOT aumenta un 1,16% Por cada 1% que aumenta el btc, DOGE aumenta un 1,4% Por cada 1% que aumenta el btc, terra aumenta un 1,21% Por cada 1% que aumenta el btc, polkadot aumenta un 1,23%

Como conclusión, por tanto podemos decir que existe una gran correlación con Bitcoin por parte de las criptomonedas estudiadas. El caso de Solana es la que presenta una correlación más baja, y, aún así, es de 0,77.

Código

#Primero descargamos los datos de yahoo finance a traves de getSymbols gracias al paquete quantmod. Analizaremos los datos de este último año.

l<-getSymbols("BTC-USD", src = "yahoo", from = "2021-01-01")

l<-getSymbols("ADA-USD", src = "yahoo", from = "2021-01-01")

l<-getSymbols("SOL1-USD", src = "yahoo", from = "2021-01-01")

l<-getSymbols("MIOTA-USD", src = "yahoo", from = "2021-01-01")

l<-getSymbols("DOGE-USD", src = "yahoo", from = "2021-01-01")

l<-getSymbols("LUNA1-USD", src = "yahoo", from = "2021-01-01")

l<-getSymbols("DOT1-USD", src = "yahoo", from = "2021-01-01")

#Segundo seleccionamos el precio de cierre y calculamos los retornos simples. (La estimación de la beta de un activo debe hacerse sobre los retornos, no sobre su precio).

BTC <- `BTC-USD`[,"BTC-USD.Close"]

ADA <- `ADA-USD`[,"ADA-USD.Close"]

SOL <- `SOL1-USD`[,"SOL1-USD.Close"]

IOTA <- `MIOTA-USD`[,"MIOTA-USD.Close"]

DOGE <- `DOGE-USD`[,"DOGE-USD.Close"]

TERRA <- `LUNA1-USD`[,"LUNA1-USD.Close"]

POLKA <- `DOT1-USD`[,"DOT1-USD.Close"]


retorno_btc_corr <- na.omit(Return.calculate(BTC))

retorno_ada_corr <- na.omit(Return.calculate(ADA))

retorno_sol_corr <- na.omit(Return.calculate(SOL))

retorno_iota_corr <- na.omit(Return.calculate(IOTA))

retorno_doge_corr <- na.omit(Return.calculate(DOGE))

retorno_terra_corr <- na.omit(Return.calculate(TERRA))

retorno_polka_corr <- na.omit(Return.calculate(POLKA))

#Ahora solo nos queda calcular la beta

beta_ada <- CAPM.beta(retorno_ada_corr, retorno_btc_corr)

beta_sol <- CAPM.beta(retorno_sol_corr, retorno_btc_corr)

beta_iota <- CAPM.beta(retorno_iota_corr, retorno_btc_corr)

beta_doge <- CAPM.beta(retorno_doge_corr, retorno_btc_corr)

beta_terra <- CAPM.beta(retorno_terra_corr, retorno_btc_corr)

beta_terra_df <- as.data.frame(beta_terra)

beta_polka <- CAPM.beta(retorno_polka_corr, retorno_btc_corr)
beta_polka_df <- as.data.frame(beta_polka)


df_ada <- as.data.frame(beta_ada)
df_sol <- as.data.frame(beta_sol)
df_iota <- as.data.frame(beta_iota)
df_doge <- as.data.frame(beta_doge)
df_terra <- as.data.frame(beta_terra)
df_polka <- as.data.frame(beta_polka)

#creacion dataframe betas
df_betas <- bind_cols(df_ada, df_sol, df_iota, df_doge, df_terra, df_polka)

rownames(df_betas) <- c("betas")

df_betas <- df_betas %>% t()

df_betas <- as.data.frame(df_betas)

colnames(df_betas)  <- c("betas")

df_betas_graf <- df_betas %>% mutate(Cripto = c("ADA", "SOL","IOTA", "DOGE", "TERRA", "POLKA"))

p <- ggplot(df_betas_graf, aes(x = Cripto, y = betas, fill = "#fbf7f0"))
grafico <- p + geom_col() + coord_polar()
grafico + theme(axis.ticks = element_line(size = 0),
    panel.grid.major = element_line(colour = "brown4"),
    panel.grid.minor = element_line(colour = "green"),
    axis.text = element_text(family = "Helvetica-Narrow"),
    axis.text.x = element_text(family = "Times"),
    panel.background = element_rect(fill = "#fbf7f0"),
    plot.background = element_rect(fill = "#fbf7f0"),
    strip.text = element_text(colour = "powderblue")) +labs(title = "Betas Altcoins-BTC", x = NULL,
    y = NULL) + theme(legend.position = "none")

11. Conclusión

A lo largo del trabajo hemos llegado a varias conclusiones: En primer lugar, que no por ser la más famosa, Bitcoin es la criptomoneda principal en los mercados. Además, hemos visto cómo se pueden adaptar muchos indicadores usados en el análisis técnico de acciones y otras divisas al mercado de las criptomonedas.

Pero, una de las principales conclusiones a las que hemos llegado es que las criptomonedas es algo a tener en cuenta en estos años y en el futuro por los proyectos de blockchain que hay detrás, pero, sin duda, también son un peligro para el sistema monetario y hemos comprobado lo volátiles que son en comparación con otros activos. Si bien, puede ser interesante estudiar su evolución y su análisis, aún es pronto para optar por ellas como mecanismo para hacer las transacciones de nuestro día a día y más aún como mecanismo para preservar nuestro poder adquisitivo.

En alusión a lo último dicho, terminamos la conclusión con esta afirmación del economista Philipp Heimberger:

12. Trabajos en los que te has basado

Analisis Tecnico: Analisis Técnico del Bitcoin, Jesus B.Zerpa, Rpubs

Predicción Precio: Pronosticos del Bitcoin y Ether usando prophet, Jesus B.Zerpa, Rpubs

Tabla: Riding tables with gt and gtExtras

Bar chart race: Robservable

Correlación aparición de nuevas criptomonedas- precio BTC, referencia de plot_school_shooting visto en clase

13. Bibliografía

Analisis Tecnico

Prediciccion Precio

Retornos, Downsides, Betas

Fuentes

Países

Cartography





Información de mi R-sesión:

- Session info ---------------------------------------------------------------
 setting  value                       
 version  R version 4.1.1 (2021-08-10)
 os       Windows 10 x64              
 system   x86_64, mingw32             
 ui       RTerm                       
 language (EN)                        
 collate  Spanish_Spain.1252          
 ctype    Spanish_Spain.1252          
 tz       Europe/Paris                
 date     2021-12-16                  

- Packages -------------------------------------------------------------------
 ! package              * version    date       lib
   abind                  1.4-5      2016-07-21 [1]
   assertthat             0.2.1      2019-03-21 [1]
   backports              1.2.1      2020-12-09 [1]
   base64enc              0.1-3      2015-07-28 [1]
   bit                    4.0.4      2020-08-04 [1]
   bit64                  4.0.5      2020-08-30 [1]
   broom                  0.7.9      2021-07-27 [1]
   bslib                  0.3.1      2021-10-06 [1]
   callr                  3.7.0      2021-04-20 [1]
   cellranger             1.1.0      2016-07-27 [1]
   checkmate              2.0.0      2020-02-06 [1]
   class                  7.3-19     2021-05-03 [1]
   classInt               0.4-3      2020-04-07 [1]
   cli                    3.0.1      2021-07-17 [1]
   clipr                  0.7.1      2020-10-08 [1]
   codetools              0.2-18     2020-11-04 [1]
   colorspace             2.0-2      2021-06-24 [1]
   crayon                 1.4.2      2021-10-29 [1]
   crosstalk              1.1.1      2021-01-12 [1]
   crypto2              * 1.3.0      2021-06-24 [1]
   curl                   4.3.2      2021-06-23 [1]
   data.table             1.14.0     2021-02-21 [1]
   DBI                    1.1.1      2021-01-15 [1]
   dbplyr                 2.1.1      2021-04-06 [1]
   desc                   1.3.0      2021-03-05 [1]
   details                0.2.1      2020-01-12 [1]
   dichromat              2.0-0      2013-01-24 [1]
   digest                 0.6.28     2021-09-23 [1]
   dplyr                * 1.0.7      2021-06-18 [1]
   DT                   * 0.19       2021-09-02 [1]
   dygraphs               1.1.1.6    2018-07-11 [1]
   e1071                  1.7-8      2021-07-28 [1]
   ellipsis               0.3.2      2021-04-29 [1]
   evaluate               0.14       2019-05-28 [1]
   extraDistr             1.9.1      2020-09-07 [1]
   fansi                  0.5.0      2021-05-25 [1]
   farver                 2.1.0      2021-02-28 [1]
   fastmap                1.1.0      2021-01-25 [1]
   fontawesome            0.2.2      2021-07-02 [1]
   forcats              * 0.5.1      2021-01-27 [1]
   forecast             * 8.15       2021-06-01 [1]
   foreign                0.8-81     2020-12-22 [1]
   fracdiff               1.5-1      2020-01-24 [1]
   fs                     1.5.0      2020-07-31 [1]
   generics               0.1.1      2021-10-25 [1]
   gganimate            * 1.0.7      2020-10-15 [1]
   ggfun                  0.0.4      2021-09-17 [1]
   ggimage              * 0.3.0      2021-09-29 [1]
   ggplot2              * 3.3.5      2021-06-25 [1]
   ggplotify              0.1.0      2021-09-02 [1]
   gifski                 1.4.3-1    2021-05-02 [1]
   glue                   1.4.2      2020-08-27 [1]
   gridExtra              2.3        2017-09-09 [1]
   gridGraphics           0.5-1      2020-12-13 [1]
   gt                   * 0.3.1      2021-08-07 [1]
   gtable                 0.3.0      2019-03-25 [1]
   gtExtras             * 0.2.2.12   2021-11-26 [1]
   haven                  2.4.3      2021-08-04 [1]
   here                   1.0.1      2020-12-13 [1]
   highr                  0.9        2021-04-16 [1]
   hms                    1.1.0      2021-05-17 [1]
   htmltools              0.5.2      2021-08-25 [1]
   htmlwidgets            1.5.4      2021-09-08 [1]
   httr                   1.4.2      2020-07-20 [1]
   inline                 0.3.19     2021-05-31 [1]
   jquerylib              0.1.4      2021-04-26 [1]
   jsonlite               1.7.2      2020-12-09 [1]
   KernSmooth             2.23-20    2021-05-03 [1]
   klippy               * 0.0.0.9500 2021-11-12 [1]
   knitr                * 1.36       2021-09-29 [1]
   labeling               0.4.2      2020-10-20 [1]
   lattice                0.20-44    2021-05-02 [1]
   lazyeval               0.2.2      2019-03-15 [1]
   leafem                 0.1.6      2021-05-24 [1]
   leaflet                2.0.4.1    2021-01-07 [1]
   leafsync               0.1.0      2019-03-05 [1]
   lifecycle              1.0.1      2021-09-24 [1]
   lmtest                 0.9-39     2021-11-07 [1]
   loo                    2.4.1      2020-12-09 [1]
   lubridate            * 1.7.10     2021-02-26 [1]
   lwgeom                 0.2-8      2021-10-06 [1]
   magick                 2.7.3      2021-08-18 [1]
   magrittr               2.0.1      2020-11-17 [1]
   matrixStats            0.61.0     2021-09-17 [1]
   modelr                 0.1.8      2020-05-19 [1]
   munsell                0.5.0      2018-06-12 [1]
   nlme                   3.1-152    2021-02-04 [1]
   nnet                   7.3-16     2021-05-03 [1]
   openxlsx               4.2.4      2021-06-16 [1]
   paletteer              1.4.0      2021-07-20 [1]
   PerformanceAnalytics * 2.0.4      2020-02-06 [1]
   pillar                 1.6.4      2021-10-18 [1]
   pkgbuild               1.2.0      2020-12-15 [1]
   pkgconfig              2.0.3      2019-09-22 [1]
   plotly               * 4.9.4.1    2021-06-18 [1]
   plyr                   1.8.6      2020-03-03 [1]
   png                    0.1-7      2013-12-03 [1]
   prettyunits            1.1.1      2020-01-24 [1]
   processx               3.5.2      2021-04-30 [1]
   progress               1.2.2      2019-05-16 [1]
   prophet              * 1.0        2021-03-30 [1]
   proxy                  0.4-26     2021-06-07 [1]
   ps                     1.6.0      2021-02-28 [1]
   purrr                * 0.3.4      2020-04-17 [1]
   quadprog               1.5-8      2019-11-20 [1]
   Quandl                 2.11.0     2021-08-11 [1]
   quantmod             * 0.4.18     2020-12-09 [1]
   R6                     2.5.1      2021-08-19 [1]
   ragg                   1.2.0      2021-10-30 [1]
   raster                 3.4-13     2021-06-18 [1]
   RColorBrewer           1.1-2      2014-12-07 [1]
   Rcpp                 * 1.0.7      2021-07-07 [1]
 D RcppParallel           5.1.4      2021-05-04 [1]
   RcppRoll             * 0.3.0      2018-06-05 [1]
   readr                * 2.0.1      2021-08-10 [1]
   readxl               * 1.3.1      2019-03-13 [1]
   rematch2               2.1.2      2020-05-01 [1]
   reprex                 2.0.1      2021-08-05 [1]
   rio                  * 0.5.27     2021-06-21 [1]
   rlang                * 0.4.11     2021-04-30 [1]
   rmarkdown              2.11       2021-09-14 [1]
   rnaturalearth        * 0.1.0      2017-03-21 [1]
   robservable          * 0.2.1      2021-10-06 [1]
   rprojroot              2.0.2      2020-11-15 [1]
   rstan                  2.21.2     2020-07-27 [1]
   rstudioapi             0.13       2020-11-12 [1]
   rvest                  1.0.1      2021-07-26 [1]
   sass                   0.4.0      2021-05-12 [1]
   scales                 1.1.1      2020-05-11 [1]
   sessioninfo            1.1.1      2018-11-05 [1]
   sf                     1.0-2      2021-07-26 [1]
   sp                     1.4-5      2021-01-10 [1]
   StanHeaders            2.21.0-7   2020-12-17 [1]
   stars                  0.5-4      2021-11-19 [1]
   stringi                1.7.4      2021-08-25 [1]
   stringr              * 1.4.0      2019-02-10 [1]
   svglite                2.0.0      2021-02-20 [1]
   systemfonts            1.0.3      2021-10-13 [1]
   textshaping            0.3.6      2021-10-13 [1]
   tibble               * 3.1.4      2021-08-25 [1]
   tidyquant            * 1.0.3      2021-03-05 [1]
   tidyr                * 1.1.3      2021-03-03 [1]
   tidyselect             1.1.1      2021-04-30 [1]
   tidyverse            * 1.3.1      2021-04-15 [1]
   timeDate               3043.102   2018-02-21 [1]
   tmap                 * 3.3-2      2021-06-16 [1]
   tmaptools              3.1-1      2021-01-19 [1]
   tseries              * 0.10-49    2021-11-16 [1]
   TTR                  * 0.24.2     2020-09-01 [1]
   tweenr                 1.0.2      2021-03-23 [1]
   tweetrmd             * 0.0.9      2021-12-16 [1]
   tzdb                   0.1.2      2021-07-20 [1]
   units                  0.7-2      2021-06-08 [1]
   urca                   1.3-0      2016-09-06 [1]
   utf8                   1.2.2      2021-07-24 [1]
   V8                     3.4.2      2021-05-01 [1]
   vctrs                  0.3.8      2021-04-29 [1]
   viridisLite            0.4.0      2021-04-13 [1]
   vroom                  1.5.4      2021-08-05 [1]
   webshot                0.5.2      2019-11-22 [1]
   withr                  2.4.2      2021-04-18 [1]
   xfun                   0.27       2021-10-18 [1]
   XML                    3.99-0.8   2021-09-17 [1]
   xml2                   1.3.2      2020-04-23 [1]
   xts                  * 0.12.1     2020-09-09 [1]
   yaml                   2.2.1      2020-02-01 [1]
   yulab.utils            0.0.4      2021-10-09 [1]
   zip                    2.2.0      2021-05-31 [1]
   zoo                  * 1.8-9      2021-03-09 [1]
 source                               
 CRAN (R 4.1.1)                       
 CRAN (R 4.1.1)                       
 CRAN (R 4.1.0)                       
 CRAN (R 4.1.0)                       
 CRAN (R 4.1.1)                       
 CRAN (R 4.1.1)                       
 CRAN (R 4.1.1)                       
 CRAN (R 4.1.1)                       
 CRAN (R 4.1.1)                       
 CRAN (R 4.1.1)                       
 CRAN (R 4.1.1)                       
 CRAN (R 4.1.1)                       
 CRAN (R 4.1.1)                       
 CRAN (R 4.1.1)                       
 CRAN (R 4.1.1)                       
 CRAN (R 4.1.1)                       
 CRAN (R 4.1.1)                       
 CRAN (R 4.1.1)                       
 CRAN (R 4.1.1)                       
 CRAN (R 4.1.2)                       
 CRAN (R 4.1.1)                       
 CRAN (R 4.1.1)                       
 CRAN (R 4.1.1)                       
 CRAN (R 4.1.1)                       
 CRAN (R 4.1.1)                       
 CRAN (R 4.1.1)                       
 CRAN (R 4.1.1)                       
 CRAN (R 4.1.1)                       
 CRAN (R 4.1.1)                       
 CRAN (R 4.1.1)                       
 CRAN (R 4.1.2)                       
 CRAN (R 4.1.1)                       
 CRAN (R 4.1.1)                       
 CRAN (R 4.1.1)                       
 CRAN (R 4.1.2)                       
 CRAN (R 4.1.1)                       
 CRAN (R 4.1.1)                       
 CRAN (R 4.1.1)                       
 CRAN (R 4.1.1)                       
 CRAN (R 4.1.1)                       
 CRAN (R 4.1.2)                       
 CRAN (R 4.1.1)                       
 CRAN (R 4.1.2)                       
 CRAN (R 4.1.1)                       
 CRAN (R 4.1.1)                       
 CRAN (R 4.1.2)                       
 CRAN (R 4.1.2)                       
 CRAN (R 4.1.2)                       
 CRAN (R 4.1.1)                       
 CRAN (R 4.1.2)                       
 CRAN (R 4.1.2)                       
 CRAN (R 4.1.1)                       
 CRAN (R 4.1.1)                       
 CRAN (R 4.1.1)                       
 CRAN (R 4.1.1)                       
 CRAN (R 4.1.1)                       
 Github (jthomasmock/gtExtras@540a392)
 CRAN (R 4.1.1)                       
 CRAN (R 4.1.1)                       
 CRAN (R 4.1.1)                       
 CRAN (R 4.1.1)                       
 CRAN (R 4.1.1)                       
 CRAN (R 4.1.1)                       
 CRAN (R 4.1.1)                       
 CRAN (R 4.1.2)                       
 CRAN (R 4.1.1)                       
 CRAN (R 4.1.1)                       
 CRAN (R 4.1.1)                       
 Github (rlesur/klippy@378c247)       
 CRAN (R 4.1.1)                       
 CRAN (R 4.1.0)                       
 CRAN (R 4.1.1)                       
 CRAN (R 4.1.1)                       
 CRAN (R 4.1.2)                       
 CRAN (R 4.1.1)                       
 CRAN (R 4.1.2)                       
 CRAN (R 4.1.1)                       
 CRAN (R 4.1.2)                       
 CRAN (R 4.1.2)                       
 CRAN (R 4.1.1)                       
 CRAN (R 4.1.2)                       
 CRAN (R 4.1.1)                       
 CRAN (R 4.1.1)                       
 CRAN (R 4.1.1)                       
 CRAN (R 4.1.1)                       
 CRAN (R 4.1.1)                       
 CRAN (R 4.1.1)                       
 CRAN (R 4.1.1)                       
 CRAN (R 4.1.1)                       
 CRAN (R 4.1.1)                       
 CRAN (R 4.1.1)                       
 CRAN (R 4.1.1)                       
 CRAN (R 4.1.1)                       
 CRAN (R 4.1.1)                       
 CRAN (R 4.1.1)                       
 CRAN (R 4.1.1)                       
 CRAN (R 4.1.1)                       
 CRAN (R 4.1.1)                       
 CRAN (R 4.1.1)                       
 CRAN (R 4.1.1)                       
 CRAN (R 4.1.2)                       
 CRAN (R 4.1.1)                       
 CRAN (R 4.1.1)                       
 CRAN (R 4.1.1)                       
 CRAN (R 4.1.1)                       
 CRAN (R 4.1.2)                       
 CRAN (R 4.1.1)                       
 CRAN (R 4.1.1)                       
 CRAN (R 4.1.1)                       
 CRAN (R 4.1.1)                       
 CRAN (R 4.1.0)                       
 CRAN (R 4.1.1)                       
 CRAN (R 4.1.2)                       
 CRAN (R 4.1.2)                       
 CRAN (R 4.1.1)                       
 CRAN (R 4.1.1)                       
 CRAN (R 4.1.1)                       
 CRAN (R 4.1.1)                       
 CRAN (R 4.1.1)                       
 CRAN (R 4.1.1)                       
 CRAN (R 4.1.1)                       
 CRAN (R 4.1.1)                       
 CRAN (R 4.1.1)                       
 CRAN (R 4.1.1)                       
 CRAN (R 4.1.2)                       
 CRAN (R 4.1.1)                       
 CRAN (R 4.1.1)                       
 CRAN (R 4.1.1)                       
 CRAN (R 4.1.1)                       
 CRAN (R 4.1.1)                       
 CRAN (R 4.1.1)                       
 CRAN (R 4.1.1)                       
 CRAN (R 4.1.2)                       
 CRAN (R 4.1.2)                       
 CRAN (R 4.1.1)                       
 CRAN (R 4.1.1)                       
 CRAN (R 4.1.1)                       
 CRAN (R 4.1.1)                       
 CRAN (R 4.1.1)                       
 CRAN (R 4.1.1)                       
 CRAN (R 4.1.2)                       
 CRAN (R 4.1.1)                       
 CRAN (R 4.1.1)                       
 CRAN (R 4.1.1)                       
 CRAN (R 4.1.1)                       
 CRAN (R 4.1.2)                       
 CRAN (R 4.1.2)                       
 CRAN (R 4.1.2)                       
 CRAN (R 4.1.1)                       
 CRAN (R 4.1.2)                       
 Github (gadenbuie/tweetrmd@075102b)  
 CRAN (R 4.1.1)                       
 CRAN (R 4.1.1)                       
 CRAN (R 4.1.2)                       
 CRAN (R 4.1.1)                       
 CRAN (R 4.1.1)                       
 CRAN (R 4.1.1)                       
 CRAN (R 4.1.1)                       
 CRAN (R 4.1.1)                       
 CRAN (R 4.1.2)                       
 CRAN (R 4.1.1)                       
 CRAN (R 4.1.1)                       
 CRAN (R 4.1.1)                       
 CRAN (R 4.1.1)                       
 CRAN (R 4.1.1)                       
 CRAN (R 4.1.0)                       
 CRAN (R 4.1.2)                       
 CRAN (R 4.1.1)                       
 CRAN (R 4.1.1)                       

[1] C:/Users/srale/Documents/R/R-4.1.1/library

 D -- DLL MD5 mismatch, broken installation.






LS0tDQp0aXRsZTogIkFuw6FsaXNpcyBkZSBjcmlwdG9tb25lZGFzLCBldm9sdWNpw7NuIHkgYWN0dWFsaWRhZC4iDQphdXRob3I6ICJBbGVqYW5kcm8gQ2FsZGVyZXJvIFBpZXJuYShhY2FscGllckBhbHVtbmkudXYuZXMpICBcblxuIEFsZWphbmRybyBQw6lyZXogU2FuY2hpeihwZXNhbmFAYWx1bW5pLnV2LmVzKSAgXG4gXG4gTWFyaW8gZGUgQmVuaXRvIE1lcmNhZG8oZGViZW1lckBhbHVtbmkudXYuZXMpLiBcblxuIFVuaXZlcnNpdGF0IGRlIFZhbMOobmNpYSINCmRhdGU6ICJEaWNpZW1icmUgZGUgMjAyMSAoYWN0dWFsaXphZG8gZWwgYHIgZm9ybWF0KFN5cy50aW1lKCksICclZC0lbS0lWScpYCkiDQpvdXRwdXQ6DQogIGh0bWxfZG9jdW1lbnQ6DQogICAgY3NzOiAiLi9hc3NldHMvbXlfY3NzX2ZpbGUuY3NzIg0KICAgIHRoZW1lOiBwYXBlcg0KICAgIGhpZ2hsaWdodDogdGV4dG1hdGUgDQogICAgdG9jOiB0cnVlDQogICAgdG9jX2RlcHRoOiAzIA0KICAgIHRvY19mbG9hdDogDQogICAgICBjb2xsYXBzZWQ6IHRydWUNCiAgICAgIHNtb290aF9zY3JvbGw6IHRydWUNCiAgICBzZWxmX2NvbnRhaW5lZDogdHJ1ZQ0KICAgIG51bWJlcl9zZWN0aW9uczogZmFsc2UNCiAgICBkZl9wcmludDoga2FibGUNCiAgICBjb2RlX2Rvd25sb2FkOiB0cnVlDQplZGl0b3Jfb3B0aW9uczogDQogIGNodW5rX291dHB1dF90eXBlOiBjb25zb2xlDQotLS0NCg0KYGBge3IgcGFja2FnZXMtc2V0dXAsIGluY2x1ZGUgPSBGQUxTRX0NCmxpYnJhcnkodGlkeXZlcnNlKQ0KbGlicmFyeShrbGlwcHkpICAjLSByZW1vdGVzOjppbnN0YWxsX2dpdGh1Yigicmxlc3VyL2tsaXBweSIpDQpsaWJyYXJ5KGtuaXRyKQ0KYGBgDQoNCmBgYHtyIGNodW5rLXNldHVwLCBpbmNsdWRlID0gRkFMU0V9DQprbml0cjo6b3B0c19jaHVuayRzZXQoZWNobyA9IFRSVUUsIGV2YWwgPSBUUlVFLCBtZXNzYWdlID0gRkFMU0UsIHdhcm5pbmcgPSBGQUxTRSwgDQogICAgICAgICAgICAgICAgICAgICAgI3Jlc3VsdHMgPSAiaG9sZCIsDQogICAgICAgICAgICAgICAgICAgICAgY2FjaGUgPSBGQUxTRSwgY2FjaGUucGF0aCA9ICIvY2FjaGVzLyIsIGNvbW1lbnQgPSAiIz4iLA0KICAgICAgICAgICAgICAgICAgICAgICNmaWcud2lkdGggPSA3LCAjZmlnLmhlaWdodD0gNywgICANCiAgICAgICAgICAgICAgICAgICAgICAjb3V0LndpZHRoID0gNywgb3V0LmhlaWdodCA9IDcsDQogICAgICAgICAgICAgICAgICAgICAgY29sbGFwc2UgPSBUUlVFLCAgZmlnLnNob3cgPSAiaG9sZCIsDQogICAgICAgICAgICAgICAgICAgICAgZmlnLmFzcCA9IDAuNjI4LCBvdXQud2lkdGggPSAiNzUlIiwgZmlnLmFsaWduID0gImNlbnRlciIpDQprbml0cjo6b3B0c19jaHVuayRzZXQoZGV2ID0gInBuZyIsIGRldi5hcmdzID0gbGlzdCh0eXBlID0gImNhaXJvLXBuZyIpKQ0KYGBgDQoNCg0KYGBge3Igb3B0aW9ucy1zZXR1cCwgaW5jbHVkZSA9IEZBTFNFfQ0Kb3B0aW9ucyhzY2lwZW4gPSA5OTkpICMtIHBhcmEgcXVpdGFyIGxhIG5vdGFjacOzbiBjaWVudMOtZmljYQ0Kb3B0aW9ucygieWFtbC5ldmFsLmV4cHIiID0gVFJVRSkgDQpgYGANCg0KDQpgYGB7ciBrbGlwcHksIGVjaG8gPSBGQUxTRX0NCmtsaXBweTo6a2xpcHB5KHBvc2l0aW9uID0gYygidG9wIiwgInJpZ2h0IikpICMtIHJlbW90ZXM6Omluc3RhbGxfZ2l0aHViKCJybGVzdXIva2xpcHB5IikNCmBgYA0KDQpgYGB7ciwgaW5jbHVkZSA9IEZBTFNFfQ0KbGlicmFyeShyaW8pDQpsaWJyYXJ5KGdncGxvdDIpDQpsaWJyYXJ5KHRpZHl2ZXJzZSkNCmxpYnJhcnkoVFRSKQ0KbGlicmFyeShxdWFudG1vZCkNCmxpYnJhcnkodGlkeXIpDQpsaWJyYXJ5KHJlYWRyKQ0KbGlicmFyeShwcm9waGV0KQ0KbGlicmFyeShQZXJmb3JtYW5jZUFuYWx5dGljcykNCmxpYnJhcnkocmVhZHIpDQpsaWJyYXJ5KHRpZHl2ZXJzZSkNCmxpYnJhcnkobHVicmlkYXRlKQ0KbGlicmFyeShjcnlwdG8yKQ0KbGlicmFyeShEVCkNCmxpYnJhcnkoZ3QpDQpsaWJyYXJ5KHBsb3RseSkNCmxpYnJhcnkoZ2dpbWFnZSkNCmxpYnJhcnkoZ2dhbmltYXRlKQ0KbGlicmFyeShyb2JzZXJ2YWJsZSkNCmxpYnJhcnkoZ3RFeHRyYXMpDQpsaWJyYXJ5KHRtYXApDQpsaWJyYXJ5KHJuYXR1cmFsZWFydGgpDQpsaWJyYXJ5KHJlYWR4bCkNCmxpYnJhcnkocmlvKQ0KbGlicmFyeSh0aWR5cikNCmxpYnJhcnkocmVhZHIpDQpsaWJyYXJ5KHRzZXJpZXMpDQpsaWJyYXJ5KGZvcmVjYXN0KQ0KbGlicmFyeSh0aWR5cXVhbnQpDQogICAgb3B0aW9ucygiZ2V0U3ltYm9scy53YXJuaW5nNC4wIj1GQUxTRSkNCiAgICBvcHRpb25zKCJnZXRTeW1ib2xzLnlhaG9vLndhcm5pbmciPUZBTFNFKQ0KbGlicmFyeShxdWFudG1vZCkNCmxpYnJhcnkoVFRSKQ0KbGlicmFyeShSY3BwUm9sbCkNCmxpYnJhcnkocHJvcGhldCkNCmxpYnJhcnkoUGVyZm9ybWFuY2VBbmFseXRpY3MpDQpsaWJyYXJ5KHR3ZWV0cm1kKQ0KDQpgYGANCjxociBjbGFzcz0ibGluZWEtYmxhY2siPg0KDQo8IS0tIEVsIHDDoXJyYWZvIGRlIGFiYWpvIGhhcyBkZSBkZWphcmxvIGNhc2kgaWd1YWwsIHNvbG8gSEFTIGRlIFNVU1RJVFVJUiAicGVyZXpwNDQiIHBvciB0dSB1c3VhcmlvIGRlIEdpdGh1Yi0tPg0KVHJhYmFqbyBlbGFib3JhZG8gcGFyYSBsYSBhc2lnbmF0dXJhICJQcm9ncmFtYWNpw7NuIHkgbWFuZWpvIGRlIGRhdG9zIGVuIGxhIGVyYSBkZWwgQmlnIERhdGEiIGRlIGxhIFVuaXZlcnNpdGF0IGRlIFZhbMOobmNpYSBkdXJhbnRlIGVsIGN1cnNvIDIwMjEtMjAyMi4gRWwgcmVwbyBkZWwgdHJhYmFqbyBlc3TDoSBbYXF1w61dKGh0dHBzOi8vZ2l0aHViLmNvbS9hbGVqYW5kcm9jcDAwL3RyYWJham9fQmlnRGF0YSl7dGFyZ2V0PSJfYmxhbmsifS4gDQoNCjwhLS0gRWwgcMOhcnJhZm8gZGUgYWJham8gaGFzIGRlIGRlamFybG8gZXhhY3RhbWVudGUgaWd1YWwsIE5PIEhBUyBERSBDQU1CSUFSIE5BREEtLT4NCg0KTGEgcMOhZ2luYSB3ZWIgZGUgbGEgYXNpZ25hdHVyYSB5IGxvcyB0cmFiYWpvcyBkZSBtaXMgY29tcGHDsWVyb3MgcHVlZGVuIHZlcnNlIFthcXXDrV0oaHR0cHM6Ly9wZXJlenA0NC5naXRodWIuaW8vaW50cm8tZHMtMjEtMjItd2ViLzA3LXRyYWJham9zLmh0bWwpe3RhcmdldD0iX2JsYW5rIn0uDQoNCg0KPGhyIGNsYXNzPSJsaW5lYS1yZWQiPg0KDQojIDEuIEludHJvZHVjY2nDs24NCg0KDQojIyAxLjEuIExBUyBDUklQVE9NT05FREFTDQpMYXMgY3JpcHRvbW9uZWRhcyBzb24gZGl2aXNhcyBkaWdpdGFsZXMgUGVlci10by1wZWVyIChQMlApLg0Kwr9RdcOpIGVzIGVsIFAyUD8gTGFzIHBsYXRhZm9ybWFzIGRlIHBhZ29zIG9ubGluZSBxdWUgY29ub2NlbW9zIGhveSBlbiBkw61hIHBlcnRlbmVjZW4gYSBvcmdhbml6YWNpb25lcy4gRWxsb3MgcmV0aWVuZW4gdHUgZGluZXJvIHkgZGViZXMgc29saWNpdGFyIGFsZ3VuYSB0cmFuc2FjY2nDs24gbyB0cmFuc2ZlcmVuY2lhIGEgdHUgbm9tYnJlIHNpIGRlc2VhcyBnYXN0YXIgZW4gYWxnby4gQ29uIGxhcyBjcmlwdG9tb25lZGFzLCBubyBleGlzdGUgbmluZ3VuYSBvcmdhbml6YWNpw7NuLiBFbnRvbmNlcywgdGFudG8gdMO6IGNvbW8gdHVzIGFtaWdvcyB5IGZhbWlsaWFyZXMgcHVlZGVuIHNlciBzdSBwcm9waW8gYmFuY28gZ3JhY2lhcyBhIHF1ZSB0dSBvcmRlbmFkb3Igc2UgY29uZWN0YSBjb24gbG9zIG9yZGVuYWRvcmVzIGRlIG90cmFzIHBlcnNvbmFzLCBsbyBxdWUgcGVybWl0ZSB1bmEgY29tdW5pY2FjacOzbiBkaXJlY3RhIHNpbiBpbnRlcm1lZGlhcmlvcy4gTmFkaWUgcHVlZGUgZXZpdGFyIHF1ZSB1c2VzIHR1cyBjcmlwdG9tb25lZGFzLiBFbiBjYW1iaW8sIGxvcyBzZXJ2aWNpb3MgZGUgcGFnb3MgY2VudHJhbGl6YWRvcyBwdWVkZW4gY29uZ2VsYXIgdHVzIGN1ZW50YXMgbyBldml0YXIgcXVlIHJlYWxpY2VzIHRyYW5zYWNjaW9uZXMuDQoNCjxjZW50ZXI+PGltZyBzcmM9ImFzc2V0cy9pbnRyby5wbmciIHdpZHRoPSIzNTBweCIgLz48L2NlbnRlcj4NCg0KPGJyPg0KDQojIyAxLjIuIMK/QUNUSVZPIFJFRlVHSU8/DQoNCk5vIG9ic3RhbnRlLCBsYXMgY3JpcHRvbW9uZWRhcyB0YW1iacOpbiBzaXJ2ZW4gY29tbyBhY3Rpdm8gcmVmdWdpby4gwr9RdcOpIGVzIHVuIGFjdGl2byByZWZ1Z2lvPyBFbCB2YWxvciBkZSBsYSByaXF1ZXphIHN1ZWxlIGJhamFyIG8gZGVzYXBhcmVjZXIuIFBvciBlamVtcGxvLCBsYSBjb21pZGEgY2FkdWNhLCBsb3Mgb2JqZXRvcyB0aWVuZW4gYW1vcnRpemFjacOzbiwgeSBlbCBkaW5lcm8gdGllbmRlIGEgZGV2YWx1YXJzZSBjb24gbGEgaW5mbGFjacOzbi4gUGVybyBsYXMgcGVyc29uYXMgcXVlcmVtb3MgX2FsbWFjZW5hcl8gbGEgcmlxdWV6YS4gUGFyYSBlc3RvIGVzdMOhbiBsb3MgYWN0aXZvcyByZWZ1Z2lvLiBMb3MgZWplbXBsb3MgdMOtcGljb3Mgc29uIGVsIG9ybywgbG9zIGN1YWRyb3MgbyBsYXMgY2FzYXMuIMK/UGVybyBwb3IgcXXDqSBCaXRjb2luIGVzIHVuIGJ1ZW4gYWN0aXZvIHJlZnVnaW8/DQoNCiogKipFc2Nhc2V6IGV4dHJlbWE6IG51bmNhIGhhYnLDoSBtw6FzIGRlIDIxIG1pbGxvbmVzIGRlIGJpdGNvaW4gKG5vIG9jdXJyZSBjb24gb3RybyBhY3Rpdm8pKioNCiogKipObyBzZSBwdWVkZSByb2JhciBvIGNvbmZpc2NhciBwb3IgZWwgZXN0YWRvIChlbCBvcm8gc2UgcHVlZGUgcm9iYXIgeSBzZSBoYSBjb25maXNjYWRvIHBvciBlbCBlc3RhZG8pKioNCiogKipGw6FjaWwgZGUgZW52aWFyICh1bmEgY2FzYSBubyBzZSBwdWVkZSBtb3ZlcikqKg0KKiAqKkbDoWNpbCBkZSBsaXF1aWRhciAoc2UgcHVlZGUgdmVuZGVyIGVuIGN1YWxxdWllciBtb21lbnRvKSoqDQoNCjxicj4NCg0KIyMgMi4gRGF0b3MgcXVlIGhlbW9zIHV0aWxpemFkby4gey50YWJzZXR9DQoNCiMjIyA8Rk9OVCBDT0xPUj0iZDNhNDZhIj4qKkRBVE9TKio8L0ZPTlQ+DQoNCkxvcyBkYXRvcyB1c2Fkb3MgZW4gZXN0ZSB0cmFiYWpvIGhhbiBzaWRvIG9idGVuaWRvcyBkZSBkaWZlcmVudGVzIGZ1ZW50ZXMgeSBwb3N0ZXJpb3JtZW50ZSBsb3MgaGVtb3MgaWRvIG1vZGlmaWNhbmRvIHBhcmEgdXNhcmxvcy4NCg0KRW4gcHJpbWVyIGx1Z2FyLCB0b21hbW9zIGxvcyBkYXRvcyBwcmluY2lwYWxlcyBhY2VyY2EgZGVsIHByZWNpbyBkZSBsYXMgY3JpcHRvbW9uZWRhcyBkZXNkZSBba2FnZ2xlXShodHRwczovL3d3dy5rYWdnbGUuY29tL3N1ZGFsYWlyYWprdW1hci9jcnlwdG9jdXJyZW5jeXByaWNlaGlzdG9yeSksIGxhIGZ1ZW50ZSBkZSBlc3RvcyBkYXRvcyBlcyBbQmxvY2tjaGFpbi5jb21dKGh0dHBzOi8vd3d3LmJsb2NrY2hhaW4uY29tL2V4cGxvcmVyKSwgdW5hIGZ1ZW50ZSBkZSByZWZlcmVuY2lhIGVuIGVzdGUgbXVuZG8uDQoNClBvciBvdHJhIHBhcnRlLCBvdHJvcyBkYXRvcyBkZSBjcmlwdG9tb25lZGFzIG1lbm9zIGNvbm9jaWRhcyAoYWx0Y29pbnMpIGxvcyB0b21hbW9zIGRlIGRvcyBwYXF1ZXRlczogW0NyeXB0bzJdKGh0dHBzOi8vZ2l0aHViLmNvbS9zc3RvZWNrbC9jcnlwdG8yKSB5IFtxdWFudG1vbmRdKGh0dHBzOi8vZ2l0aHViLmNvbS9qb3NodWF1bHJpY2gvcXVhbnRtb2QpLCBkZSBhbWJvcywgdHV2aW1vcyBxdWUgImxpbXBpYXIiIGxvcyBkYXRvcyAoY29tbyBtb3N0cmFtb3MgZW4gbGEgcGVzdGHDsWEgInRpZHkiKS4NCg0KQWRlbcOhcywgcGFyYSBsYSBvYnRlbmNpw7NuIGRlIGRhdG9zIGNvbW8gbG9zIHJldG9ybm9zLCB1c2Ftb3MgcGFxdWV0ZXMgZXNwZWNpYWxlcyBwYXJhIGVsIGFuw6FsaXNpcyB0w6ljbmljbyBjb21vIFtQZXJmb3JtYW5jZUFuYWx5dGljc10oaHR0cHM6Ly9naXRodWIuY29tL2JyYXZlcm9jay9QZXJmb3JtYW5jZUFuYWx5dGljcykuIA0KDQpEZSBpZ3VhbCBmb3JtYSwgY2FkYSBncsOhZmljbywgYW7DoWxpc2lzLCB0YWJsYS4uLiBoYSBuZWNlc2l0YWRvIHVuIHRyYXRhZG8gZXNwZWNpYWwgcXVlIHZlcmVtb3MgZW4gY2FkYSBhcGFydGFkbyBjb25jcmV0by4NCg0KDQojIyMgPEZPTlQgQ09MT1I9ImQzYTQ2YSI+KipUSURZKio8L0ZPTlQ+DQoNCmBgYHtyLCBldmFsPUZBTFNFfQ0KDQojTGltcGllemEgcGFyYSBlc3R1ZGlvIGFjdHVhbCBkZSBjcmlwdG9tb25lZGFzDQoNCmNvaW5zIDwtIGNyeXB0b19saXN0KG9ubHlfYWN0aXZlPVRSVUUpDQpjb2luX2hpc3QgPC0gY3J5cHRvX2hpc3RvcnkoY29pbnMsIGxpbWl0PTUwMCwgc3RhcnRfZGF0ZT0iMjAyMTExMzAiLCBlbmRfZGF0ZT0iMjAyMTExMzAiKSAlPiUNCiAgZmlsdGVyKHRpbWVzdGFtcD09IjIwMjEtMTEtMzAgMjM6NTk6NTkiKSANCg0KDQpjb2luX2luZm88LSBjcnlwdG9faW5mbyhjb2lucyxsaW1pdD01MDApDQoNCg0KYTwtY29pbl9pbmZvICU+JSBzZWxlY3Qoc2x1Zyx1cmxzLCBsb2dvLCBjYXRlZ29yeSkgJT4lIA0KICB1bm5lc3QodXJscykgJT4lIGZpbHRlcihuYW1lICVpbiUgYygicmVkZGl0IiwidHdpdHRlciIpKSAlPiUNCiAgc2VsZWN0KHNsdWcsdXJsLGxvZ28pDQpjPC1mdWxsX2pvaW4oYSxjb2luX2hpc3QsIGJ5PSJzbHVnIikgJT4lIG11dGF0ZShjbG9zZT0gcm91bmQoY2xvc2UsMikpDQoNCmMkdXJsIDwtIHBhc3RlMCgiPGEgaHJlZj0nIixjJHVybCwiJz4iLGMkdXJsLCI8L2E+IikNCmMkbG9nbzwtIHBhc3RlMCgiJzxpbWcgc3JjPSIsIGMkbG9nbywgIj48L2ltZz4nIikNCg0KZGF0YV90b3RhbDI8LXJlYWQuY3N2KCIuL2RhdG9zL2RhdGFfdG90YWwyLmNzdiIpDQpgYGANCmBgYHtyfQ0KI1FVQU5UTU9EDQoNCnBvcnRmb2xpbyA9IGMoIkVUSC1VU0QiKQ0KZGF0b3MgPC0gZ2V0U3ltYm9scyhwb3J0Zm9saW8sIHNyYyA9ICJ5YWhvbyIsIGZyb20gPSAiMjAxOC0wMS0wMSIpDQoNCmRhdG9zX3RlY25pY29fZXRoIDwtIGBFVEgtVVNEYA0KDQpwb3J0Zm9saW8gPSBjKCJCVEMtVVNEIikNCmRhdG9zIDwtIGdldFN5bWJvbHMocG9ydGZvbGlvLCBzcmMgPSAieWFob28iLCBmcm9tID0gIjIwMTgtMDEtMDEiKQ0KDQpkYXRvc19hbmFsaXNpc19idGMgPC0gYEJUQy1VU0RgDQoNCg0KZGF0YV90b3RhbCA8LSByZWFkX2NzdigiZGF0b3MvZGF0YV90b3RhbC5jc3YiKQ0KDQpkYXRhX2V0aCA8LSBkYXRhX3RvdGFsICU+JSBmaWx0ZXIoTmFtZSA9PSAiRXRoZXJldW0iKQ0KDQpkYXRhX2V0aCA8LSBkYXRhX2V0aCAlPiUgc2VsZWN0KERhdGUsIENsb3NlKQ0KDQpkYXRhX2V0aCA8LSBkYXRhX2V0aCAlPiUgcmVuYW1lKGRzID0gRGF0ZSwgeSA9IENsb3NlKQ0KDQptb2RlbG8xIDwtIHByb3BoZXQoZGF0YV9ldGgpDQpob3Jpem9udGUxIDwtIG1ha2VfZnV0dXJlX2RhdGFmcmFtZShtb2RlbG8xLCBwZXJpb2RzID0gMzY1KQ0KDQpmb3JlY2FzdDEgPC0gcHJlZGljdChtb2RlbG8xLCBob3Jpem9udGUxKQ0KDQoNCmBgYA0KDQo8YnI+DQoNCiMjIDIuMS4gRGF0b3MgZmluYWxlcy4gey50YWJzZXR9DQoNCiMjIyA8Rk9OVCBDT0xPUj0iZDNhNDZhIj4qKkVHRyoqPC9GT05UPg0KDQpMb3MgZGF0b3MgZmluYWxlcyBjb24gbG9zIHF1ZSB0cmFiYWphbW9zIGxvcyBwb2RlbW9zIHZlciBlbiBsYSBzaWd1aWVudGUgdGFibGEuIA0KDQoNCmBgYHtyLCBldmFsID0gVFJVRSwgZWNobz1GQUxTRX0NCmRhdGFzPC1kYXRhX3RvdGFsICU+JSBzZWxlY3QoTmFtZSwgU3ltYm9sLCBEYXRlLCBDbG9zZSwgVm9sdW1lLCBNYXJrZXRjYXApDQpkYXRhdGFibGUoZGF0YXMsZXNjYXBlPUZBTFNFLCBjbGFzcz0iY2VsbC1ib3JkZXIgc3RyaXBlIiwgZXh0ZW5zaW9ucyA9IGMoIkJ1dHRvbnMiLCJGaXhlZENvbHVtbnMiKSwNCiAgICAgICAgICBvcHRpb25zID0gbGlzdChkb20gPSAnQmxmcnRpcCcsDQogICAgICAgICAgICAgICAgICAgICAgICAgZml4ZWRDb2x1bW5zPWxpc3QobGVmdENvbHVtbnM9MiksDQogICAgICAgICAgICAgICAgICAgICAgICAgYnV0dG9ucyA9IGMoJ2NvcHknLCAnY3N2JywgJ2V4Y2VsJywgJ3BkZicsICdwcmludCcpLCANCiAgICAgICAgICAgICAgICAgICAgICAgICBwYWdlTGVuZ3RoID0gNiwgYXV0b1dpZHRoID0gVFJVRSwNCiAgICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW5EZWZzID0gbGlzdChsaXN0KHdpZHRoID0gJzI4MHB4JywgdGFyZ2V0cyA9IGMoMSwgNSkpKSkpDQpgYGANCg0KTcOhcyBhZGVsYW50ZSBtb3N0cmFyZW1vcyBvdHJhIHRhYmxhIGNvbiBtw6FzIGluZm9ybWFjacOzbiBhY2VyY2EgZGUgbGFzIGFsdGNvaW5zLCBwZXJvIGFudGVzIGRlYmVtb3MgZXhwbGljYXIgYWxndW5vcyBjb25jZXB0b3MNCg0KIyMjIDxGT05UIENPTE9SPSJkM2E0NmEiPioqQ8OzZGlnbyoqPC9GT05UPg0KDQpgYGB7ciwgZXZhbCA9IEZBTFNFLCBpbmNsdWRlPVRSVUV9DQpkYXRhczwtZGF0YV90b3RhbCAlPiUgc2VsZWN0KE5hbWUsIFN5bWJvbCwgRGF0ZSwgQ2xvc2UsIFZvbHVtZSwgTWFya2V0Y2FwKQ0KZGF0YXRhYmxlKGRhdGFzLGVzY2FwZT1GQUxTRSwgY2xhc3M9ImNlbGwtYm9yZGVyIHN0cmlwZSIsIGV4dGVuc2lvbnMgPSBjKCJCdXR0b25zIiwiRml4ZWRDb2x1bW5zIiksDQogICAgICAgICAgb3B0aW9ucyA9IGxpc3QoZG9tID0gJ0JsZnJ0aXAnLA0KICAgICAgICAgICAgICAgICAgICAgICAgIGZpeGVkQ29sdW1ucz1saXN0KGxlZnRDb2x1bW5zPTIpLA0KICAgICAgICAgICAgICAgICAgICAgICAgIGJ1dHRvbnMgPSBjKCdjb3B5JywgJ2NzdicsICdleGNlbCcsICdwZGYnLCAncHJpbnQnKSwgDQogICAgICAgICAgICAgICAgICAgICAgICAgcGFnZUxlbmd0aCA9IDYsIGF1dG9XaWR0aCA9IFRSVUUsDQogICAgICAgICAgICAgICAgICAgICAgICAgY29sdW1uRGVmcyA9IGxpc3QobGlzdCh3aWR0aCA9ICcyODBweCcsIHRhcmdldHMgPSBjKDEsIDUpKSkpKQ0KYGBgDQoNCjxicj4NCg0KIyAzLiBObyBzw7NsbyBleGlzdGUgQml0Y29pbi4uLg0KDQpEdXJhbnRlIGxvcyDDumx0aW1vcyBhw7FvcywgbGEgY3JpcHRvbW9uZWRhIHF1ZSBtw6FzIGhlbW9zIGVzY3VjaGFkbyBlcyBCaXRjb2luLCBzaW4gZW1iYXJnbywgbm8gZXMgbGEgw7puaWNhIHF1ZSBleGlzdGUsIGF1bnF1ZSBzw60gbGEgbcOhcyB2YWxpb3NhLg0KRXhpc3RlbiBtdWNoYXMgY3JpcHRvbW9uZWRhcyBxdWUgaGFuIGlkbyBzdXJnaWVuZG8gYSBsbyBsYXJnbyBkZSBsb3MgYcOxb3MuIE51ZXN0cm8gYW7DoWxpc2lzIHBvc3RlcmlvciBzZSBjZW50cmFyw6EgZW4gQml0Y29pbiB5IGVuIEV0aGVyZXVtLCBsYXMgZG9zIG3DoXMgaW1wb3J0YW50ZXMgYSBkw61hIGRlIGhveSwgbywgcG9yIGxvIG1lbm9zIGRlIGxhcyBxdWUgbcOhcyBzZSBoYWJsYTsgcGVybyBhbnRlcywgZGViZW1vcyBkZXRlbmVybm9zIGVuIHZlciBsYSBncmFuIGNhbnRpZGFkIGRlIGNyaXB0b21vbmVkYXMgcXVlIGhheSwgc3UgdmFsb3IsIHkgY8OzbW8gYWxndW5hcyAic3VwZXJhbiIgYSBCaXRjb2luIGVuIGFsZ3Vub3MgYXNwZWN0b3MuDQoNCjxicj4NCg0KIyMgMy4xIEVsIHN1cmdpbWllbnRvIGRlIGxhcyAiYWx0Y29pbnMiLiB7LnRhYnNldH0NCg0KIyMjIDxGT05UIENPTE9SPSJkM2E0NmEiPioqQWx0Y29pbnMqKjwvRk9OVD4NCg0KTGFzIGNyaXB0b21vbmVkYXMgYWx0ZXJuYXRpdmFzIChvIGFsdGNvaW5zKSBlcyBjb21vIHNlIHN1ZWxlIGxsYW1hciBhIGFxdWVsbGFzIGNyaXB0b21vbmVkYXMgcXVlIG5vIHNlIGVuY3VlbnRyYW4gZW50cmUgbGFzIDEwIHByaW5jaXBhbGVzIGVuIGN1YW50byBhIGNhcGl0YWxpemFjacOzbiwgeSBjb21vIHBvZGVtb3MgdmVyLCBlbiBsb3Mgw7psdGltb3MgYcOxb3MgaGFuIHN1cmdpZG8gbXVjaGFzOg0KDQpgYGB7ciwgZWNobz1GQUxTRX0NCmtuaXRyOjppbmNsdWRlX2dyYXBoaWNzKGhlcmU6OmhlcmUoIkNhcHR1cmFzIiwicGxvdDIucG5nIikpDQpgYGANCg0KTGFzIHByaW1lcmFzIGNyaXB0b21vbmVkYXMgc3VyZ2llcm9uIGVuIGVsIGHDsW8gMjAxMywgcG9yIGVzbywgZ3JhbiBwYXJ0ZSBkZSBudWVzdHJvcyBhbsOhbGlzaXMgZW1wZXphcsOhbiBlbiB0b3JubyBhIDIwMTMvMjAxNC4NCg0KVmVtb3MgcXVlIGhhbiBzdXJnaWRvIG11Y2hhcyBjcmlwdG9tb25lZGFzIGVuIGxvcyDDumx0aW1vcyBhw7FvcywgeSBhIHBhcnRpciBkZSBlc3RlIGdyw6FmaWNvLCBub3MgZW1wZXphbW9zIGEgY3Vlc3Rpb25hciBsYSBzaWd1aWVudGUgaGlww7N0ZXNpczogwr9MYSBhcGFyaWNpw7NuIGRlIG51ZXZhcyBjcmlwdG9tb25lZGFzIHZhICJwb3IgbW9kYXMiPw0KDQojIyMgPEZPTlQgQ09MT1I9ImQzYTQ2YSI+KipDw7NkaWdvKio8L0ZPTlQ+DQoNCmBgYHtyLCBldmFsID0gRkFMU0UsIGluY2x1ZGU9VFJVRX0NCmNvaW5zIDwtIGNyeXB0b19saXN0KG9ubHlfYWN0aXZlPVRSVUUpDQpuYW1lcyhjb2lucykNCmE8LWNvaW5zICU+JSANCiAgc2xpY2VfbWluKG49NTAsIHJhbmspICU+JSANCiAgc2VsZWN0KHNsdWcscmFuaywgZmlyc3RfaGlzdG9yaWNhbF9kYXRhKSAlPiUNCiAgbXV0YXRlKCBhbm89IGZvcm1hdChmaXJzdF9oaXN0b3JpY2FsX2RhdGEsICIlWSIpKSAlPiUNCiAgbXV0YXRlKGFubz0gYXMubnVtZXJpYyhhbm8pKQ0KDQpzdHIoYSkNCg0KcGxvdDwtIGdncGxvdChhLCBhZXMoeD1zbHVnLCB5PSBmaXJzdF9oaXN0b3JpY2FsX2RhdGEpKSArIA0KICBnZW9tX3NlZ21lbnQoIGFlcyh4PXNsdWcsIHhlbmQ9c2x1ZywgeT0xNTAwMCwgeWVuZD1maXJzdF9oaXN0b3JpY2FsX2RhdGEpLCBjb2xvcj0iZ3JleSIpICsNCiAgZ2VvbV9wb2ludCggY29sb3I9Im9yYW5nZSIsIHNpemU9NCwgYWxwaGE9MC43KSArDQogIHRoZW1lX2xpZ2h0KCkgKw0KICBjb29yZF9mbGlwKCkgKw0KICB0aGVtZSgNCiAgICBwYW5lbC5ncmlkLm1ham9yLnkgPSBlbGVtZW50X2JsYW5rKCksDQogICAgcGFuZWwuYm9yZGVyID0gZWxlbWVudF9ibGFuaygpLA0KICAgIGF4aXMudGlja3MueSA9IGVsZW1lbnRfYmxhbmsoKQ0KICApIA0KDQpnZ3Bsb3RseShwbG90KQ0KYGBgDQoNCjxicj4NCg0KIyMgMy4yIMK/QWx0Y29pbnMgPSBNb2RhPyB7LnRhYnNldH0NCg0KIyMjIDxGT05UIENPTE9SPSJkM2E0NmEiPioqwr9Nb2RhPyoqPC9GT05UPg0KDQpFbiBlc3RlIGdyw6FmaWNvIG5vcyBwbGFudGVhbW9zIGhhc3RhIHF1w6kgcHVudG8gbGEgYXBhcmljacOzbiBkZSBudWV2YXMgYWx0Y29pbnMgZXN0w6EgcmVsYWNpb25hZG8gY29uIGVsIGhlY2hvIGRlIHF1ZSBlbCBCaXRjb2luIGhheWEgc3ViaWRvIGRlIHByZWNpbyBlbiBsYXMgw7psdGltYXMgc2VtYW5hczsNCg0KYGBge3IsIGVjaG89RkFMU0V9DQpjb2luX0JpdGNvaW4gPC0gcmVhZF9jc3YoImRhdG9zL2NvaW5fQml0Y29pbjIuY3N2IikNCmNvaW5zIDwtIGNyeXB0b19saXN0KG9ubHlfYWN0aXZlPVRSVUUpDQphPC1jb2lucyAlPiUgDQogIHNsaWNlX21pbihuPTgwMCwgcmFuaykgJT4lIA0KICBzZWxlY3Qoc2x1ZyxyYW5rLCBmaXJzdF9oaXN0b3JpY2FsX2RhdGEpICU+JSANCiAgcmVuYW1lKCJEYXRhIiA9ICJmaXJzdF9oaXN0b3JpY2FsX2RhdGEiKSAlPiUNCiAgbXV0YXRlKERhdGU9YXMubnVtZXJpYyhEYXRhKSkgJT4lIG11dGF0ZShvaz0xKSAlPiUNCiAgZ3JvdXBfYnkoRGF0ZT0gZmxvb3JfZGF0ZShEYXRhLCAibW9udGgiKSkgJT4lDQogIHN1bW1hcml6ZShudWV2YXM9IHN1bShvaykpDQoNCmJ0YzwtY29pbl9CaXRjb2luICU+JSBzZWxlY3QoTmFtZSwgRGF0ZSwgQ2xvc2UpICU+JQ0KICBtdXRhdGUoRGF0ZT1hcy5udW1lcmljKERhdGUpKSANCg0KDQpwPC0gZ2dwbG90KGJ0YywgYWVzKHg9IERhdGUsIHk9IENsb3NlKSkgKyANCiAgZ2VvbV9jb2woZmlsbD0iYmxhY2siKSArIGdlb21faGxpbmUoeWludGVyY2VwdCA9IDcwMDAwLCBjb2xvcj0iYmxhY2siKSANCg0KcDwtcCArIGdlb21fcG9pbnQoZGF0YSA9IGEsIA0KICAgICAgICAgICAgICBhZXMoeCA9IERhdGUsIHkgPSA3MDAwMCwgc2l6ZSA9IG51ZXZhcyksDQogICAgICAgICAgICAgIGNvbG9yID0gInJlZCIsDQogICAgICAgICAgICAgIGFscGhhID0gMC41KSANCnA8LSBwICsgdGhlbWUocGxvdC5zdWJ0aXRsZSA9IGVsZW1lbnRfdGV4dChmYW1pbHkgPSAiVGltZXMiLA0KICAgIHNpemUgPSAxMCksIHBhbmVsLmdyaWQubWFqb3IgPSBlbGVtZW50X2xpbmUoY29sb3VyID0gIiNmYmY3ZjAiKSwNCiAgICBwYW5lbC5ncmlkLm1pbm9yID0gZWxlbWVudF9saW5lKGNvbG91ciA9ICIjZmJmN2YwIiksDQogICAgYXhpcy50aXRsZSA9IGVsZW1lbnRfdGV4dChmYW1pbHkgPSAiVGltZXMiKSwNCiAgICBheGlzLnRleHQgPSBlbGVtZW50X3RleHQoZmFtaWx5ID0gIlRpbWVzIiksDQogICAgYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoc2l6ZSA9IDIwLA0KICAgICAgICBjb2xvdXIgPSAiI2ZiZjdmMCIpLCBwbG90LnRpdGxlID0gZWxlbWVudF90ZXh0KGZhbWlseSA9ICJUaW1lcyIsDQogICAgICAgIHNpemUgPSAxNywgZmFjZSA9ICJib2xkIiwgdmp1c3QgPSA1KSwNCiAgICBwYW5lbC5iYWNrZ3JvdW5kID0gZWxlbWVudF9yZWN0KGZpbGwgPSAiI2ZiZjdmMCIpLA0KICAgIHBsb3QuYmFja2dyb3VuZCA9IGVsZW1lbnRfcmVjdChmaWxsID0gIiNmYmY3ZjAiKSkgK2xhYnModGl0bGUgPSAiwr9BbHRjb2lucyA9IG1vZGE/IiwgeCA9ICJUaWVtcG8iLA0KICAgIHkgPSAiUHJlY2lvIEJUQyAoJCkiLCBzaXplID0gIk51ZXZhcyBjcmlwdG9tb25lZGFzIiwNCiAgICBzdWJ0aXRsZSA9ICLCv0V4aXN0ZSBjb3JyZWxhY2nDs24gZW50cmUgbGEgYXBhcmljacOzbiBkZSBudWV2YXMgY3JpcHRvbW9uZWRhcyAoYWx0Y29pbnMpIHkgZWwgcHJlY2lvIGRlbCBCaXRjb2luPyIpDQoNCmdncGxvdGx5KHApDQpgYGANCg0KDQpTZSBwdWVkZSBvYnNlcnZhciwgcXVlIGVuIGxvcyBwZXLDrW9kb3MgZW4gbG9zIHF1ZSBlbCBCaXRjb2luIGVzdMOhIGVuIG3DoXhpbW9zIChvIGVzdMOhIHN1YmllbmRvIGhhY2lhIHVubykgYXBhcmVjZW4gbcOhcyBhbHRjb2lucyBxdWUgZW4gZWwgcmVzdG8gZGUgcGVyw61vZG9zLCBwb3IgbG8gcXVlLCBoYXN0YSBjaWVydG8gcHVudG8sIGxhIGFwYXJpY2nDs24gZGUgbnVldmFzIGNyaXB0b21vbmVkYXMgc8OtIGVzdMOhIHJlbGFjaW9uYWRhLg0KDQpFc3RvIG5vIGVzIHVuIHB1bnRvIGEgZmF2b3IgZGUgbGFzIGFsdGNvaW5zIHkgdmVtb3MgY8OzbW8gYWxndW5hcyBzZSBjZW50cmFuIGZ1bmRhbWVudGFsbWVudGUgZW4gbGEgZXNwZWN1bGFjacOzbi4NCkRlIGlndWFsIG1hbmVyYSwgb3RyYXMgY3JpcHRvbW9uZWRhcyBtZW5vcyBjb25vY2lkYXMgZm9ybWFuIHBhcnRlIGRlIHByb3llY3RvcyBxdWUgZWwgcMO6YmxpY28gaGEgY29uc2lkZXJhZG8gaW50ZXJlc2FudGVzIHkgaGFuIHRlbmlkbyB1biBtYXlvciBhcG95bzsgZGUgaGVjaG8sIGhhbiBsbGVnYWRvIGEgc3VwZXJhciBhIEJpdGNvaW4gZW4gY3VhbnRvIGEgdm9sdW1lbiBvIG1hcmtldGNhcC4uLiANCg0KIyMjIDxGT05UIENPTE9SPSJkM2E0NmEiPioqQ8OzZGlnbyoqPC9GT05UPg0KDQpgYGB7ciwgZXZhbD1GQUxTRSwgaW5jbHVkZT1UUlVFfQ0KDQpjb2luX0JpdGNvaW4gPC0gcmVhZF9jc3YoImRhdG9zL2NvaW5fQml0Y29pbjIuY3N2IikNCnN0cihjb2luX0JpdGNvaW4pDQpuYW1lcyhjb2luX0JpdGNvaW4pDQpjb2lucyA8LSBjcnlwdG9fbGlzdChvbmx5X2FjdGl2ZT1UUlVFKQ0KYTwtY29pbnMgJT4lIA0KICBzbGljZV9taW4obj04MDAsIHJhbmspICU+JSANCiAgc2VsZWN0KHNsdWcscmFuaywgZmlyc3RfaGlzdG9yaWNhbF9kYXRhKSAlPiUgDQogIHJlbmFtZSgiRGF0YSIgPSAiZmlyc3RfaGlzdG9yaWNhbF9kYXRhIikgJT4lDQogIG11dGF0ZShEYXRlPWFzLm51bWVyaWMoRGF0YSkpICU+JSBtdXRhdGUob2s9MSkgJT4lDQogIGdyb3VwX2J5KERhdGU9IGZsb29yX2RhdGUoRGF0YSwgIm1vbnRoIikpICU+JQ0KICBzdW1tYXJpemUobnVldmFzPSBzdW0ob2spKQ0Kc3RyKGEpDQpidGM8LWNvaW5fQml0Y29pbiAlPiUgc2VsZWN0KE5hbWUsIERhdGUsIENsb3NlKSAlPiUNCiAgbXV0YXRlKERhdGU9YXMubnVtZXJpYyhEYXRlKSkgDQoNCg0KcDwtIGdncGxvdChidGMsIGFlcyh4PSBEYXRlLCB5PSBDbG9zZSkpICsgDQogIGdlb21fY29sKGZpbGw9ImJsYWNrIikgKyBnZW9tX2hsaW5lKHlpbnRlcmNlcHQgPSA3MDAwMCwgY29sb3I9Im9yYW5nZSIpIA0KDQpwPC1wICsgZ2VvbV9wb2ludChkYXRhID0gYSwgDQogICAgICAgICAgICAgIGFlcyh4ID0gRGF0ZSwgeSA9IDcwMDAwLCBzaXplID0gbnVldmFzKSwNCiAgICAgICAgICAgICAgY29sb3IgPSAicmVkIiwNCiAgICAgICAgICAgICAgYWxwaGEgPSAwLjUpIA0KcDwtIHAgKyB0aGVtZShwbG90LnN1YnRpdGxlID0gZWxlbWVudF90ZXh0KGZhbWlseSA9ICJUaW1lcyIsDQogICAgc2l6ZSA9IDEwKSwgcGFuZWwuZ3JpZC5tYWpvciA9IGVsZW1lbnRfbGluZShjb2xvdXIgPSAiYWxpY2VibHVlIiksDQogICAgcGFuZWwuZ3JpZC5taW5vciA9IGVsZW1lbnRfbGluZShjb2xvdXIgPSAiYWxpY2VibHVlIiksDQogICAgYXhpcy50aXRsZSA9IGVsZW1lbnRfdGV4dChmYW1pbHkgPSAiVGltZXMiKSwNCiAgICBheGlzLnRleHQgPSBlbGVtZW50X3RleHQoZmFtaWx5ID0gIlRpbWVzIiksDQogICAgYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoc2l6ZSA9IDIwLA0KICAgICAgICBjb2xvdXIgPSAiYWxpY2VibHVlIiksIHBsb3QudGl0bGUgPSBlbGVtZW50X3RleHQoZmFtaWx5ID0gIlRpbWVzIiwNCiAgICAgICAgc2l6ZSA9IDE3LCBmYWNlID0gImJvbGQiLCB2anVzdCA9IDUpLA0KICAgIHBhbmVsLmJhY2tncm91bmQgPSBlbGVtZW50X3JlY3QoZmlsbCA9ICJhbGljZWJsdWUiKSwNCiAgICBwbG90LmJhY2tncm91bmQgPSBlbGVtZW50X3JlY3QoZmlsbCA9ICJhbGljZWJsdWUiKSkgK2xhYnModGl0bGUgPSAiwr9BbHRjb2lucyA9IG1vZGE/IiwgeCA9ICJUaWVtcG8iLA0KICAgIHkgPSAiUHJlY2lvIEJUQyAoJCkiLCBzaXplID0gIk51ZXZhcyBjcmlwdG9tb25lZGFzIiwNCiAgICBzdWJ0aXRsZSA9ICLCv0V4aXN0ZSBjb3JyZWxhY2nDs24gZW50cmUgbGEgYXBhcmljacOzbiBkZSBudWV2YXMgY3JpcHRvbW9uZWRhcyAoYWx0Y29pbnMpIHkgZWwgcHJlY2lvIGRlbCBCaXRjb2luPyIpDQoNCmdncGxvdGx5KHApDQpgYGANCg0KPGJyPg0KDQojIyAzLjMgQ3JpcHRvbW9uZWRhcyBjb24gbcOhcyB2b2x1bWVuIHsudGFic2V0fQ0KDQojIyMgPEZPTlQgQ09MT1I9ImQzYTQ2YSI+KipCYXIgQ2hhcnQgUmFjZSoqPC9GT05UPg0KDQpDb21vIHZlbW9zLCBsYXMgY3JpcHRvbW9uZWRhcyBjb24gbcOhcyB2b2x1bWVuIG5vIGhhbiBwZXJtYW5lY2lkbyBmaWphcyBhIGxvIGxhcmdvIGRlbCB0aWVtcG8sIHNpbiBlbWJhcmdvLCBzw60gcXVlIHZlbW9zIGNvbW8gbGEgcHJpbWVyYSBwb3NpY2nDs24gbGEgb2N1cMOzIEJpdGNvaW4gaGFzdGEgcXVlIFRldGhlciBzZSBjb252aXJ0acOzIGVuIGxhICJnYW5hZG9yYSIuDQoNCg0KYGBge3IsIGVjaG89RkFMU0V9DQoNCg0KZGF0YV90b3RhbCA8LSByZWFkX2NzdigiZGF0b3MvZGF0YV90b3RhbC5jc3YiKQ0KDQpkZjwtZGF0YV90b3RhbCAlPiUgc2VsZWN0KE5hbWUsVm9sdW1lLERhdGUpICU+JQ0KICByZW5hbWUoZGF0ZSA9IERhdGUsIGlkID0gTmFtZSwgdmFsdWUgPSBWb2x1bWUpICU+JQ0KICBzdWJzZXQoZGF0ZT4gIjIwMTMtMTItMDIiICYgZGF0ZSA8ICIyMDIxLTA3LTA2IikgJT4lDQogIGdyb3VwX2J5KGlkLCBkYXRlID0gbHVicmlkYXRlOjpmbG9vcl9kYXRlKGRhdGUsICJtb250aCIpKSAlPiUNCiAgc3VtbWFyaXplKHZhbHVlID0gc3VtKHZhbHVlKSkNCiAgDQogIA0KZGF0YV9hbHQ8LSBkYXRhX3RvdGFsICU+JSBmaWx0ZXIoIU5hbWU9PSAiQml0Y29pbiIpICU+JSANCiAgZmlsdGVyKCFOYW1lPT0gIldyYXBwZWQgQml0Y29pbiIpIA0KDQpkZl9hbHQ8LWRhdGFfYWx0ICU+JSBzZWxlY3QoTmFtZSxWb2x1bWUsRGF0ZSkgJT4lDQogIHJlbmFtZShkYXRlID0gRGF0ZSwgaWQgPSBOYW1lLCB2YWx1ZSA9IFZvbHVtZSkgJT4lDQogIHN1YnNldChkYXRlPiAiMjAxMy0xMi0wMiIgJiBkYXRlIDwgIjIwMjEtMDctMDYiKSAlPiUNCiAgZ3JvdXBfYnkoaWQsIGRhdGUgPSBsdWJyaWRhdGU6OmZsb29yX2RhdGUoZGF0ZSwgIm1vbnRoIikpICU+JQ0KICBzdW1tYXJpemUodmFsdWUgPSBzdW0odmFsdWUpKQ0KDQoNCmRmX3JhY2VfMSA8LSBkZiAlPiUgYXJyYW5nZShkYXRlKQ0KDQpyb2JzZXJ2YWJsZSgNCiAgImh0dHBzOi8vb2JzZXJ2YWJsZWhxLmNvbS9AanViYS9iYXItY2hhcnQtcmFjZSIsDQogIGluY2x1ZGUgPSBjKCJ2aWV3b2YgZGF0ZSIsICJjaGFydCIsICJkcmF3IiwgInN0eWxlcyIpLA0KICBoaWRlID0gImRyYXciLA0KICBpbnB1dCA9IGxpc3QoDQogICAgZGF0YSA9IGRmX3JhY2VfMSwgDQogICAgdGl0bGUgPSAiRXZvbHVjacOzbiBjcmlwdG9tb25lZGFzIGNvbiBtw6FzIHZvbHVtZW4iLA0KICAgIHN1YnRpdGxlID0gIlByaW5jaXBhbGVzIGNyaXB0b21vbmVkYXMgZGVzZGUgZWwgMjAxMyBoYXN0YSBsYSBhY3R1YWxpZGFkIiwNCiAgICBzb3VyY2UgPSAiRnVlbnRlOiBCbG9ja2NoYWluLmNvbSIsDQogICAgdGlja0R1cmF0aW9uID0gNjAwDQogICksDQogIHdpZHRoID0gMTAwMCwNCiAgaGVpZ2h0ID0gNzAwLA0KKQ0KDQpgYGANCg0KRXN0ZSBncsOhZmljbyBzZSBsbGFtYSAiQmFyIGNoYXJ0IHJhY2UiIHkgbG9zIGRhdG9zIHVzYWRvcyBzb24gYWdydXBhaW9uZXMgbWVuc3VhbGVzIGRlc2RlIDIwMTMgaGFzdGEgbGEgYWN0dWFsaWRhZC4NCg0KUG9kZW1vcyB2ZXIgYWRlbcOhcyBxdWUgRXRoZXJldW0gc2UgaGEgYWNlcmNhZG8gbXVjaG8gYSBCaXRjb2luIGVuIGxvcyDDumx0aW1vcyBhw7Fvcy4NCg0KIyMjIDxGT05UIENPTE9SPSJkM2E0NmEiPioqQ8OzZGlnbyoqPC9GT05UPg0KDQpgYGB7ciwgaW5jbHVkZT1UUlVFLCBldmFsPUZBTFNFfQ0KDQoNCmRhdGFfdG90YWwgPC0gcmVhZF9jc3YoImRhdG9zL2RhdGFfdG90YWwuY3N2IikNCg0KZGY8LWRhdGFfdG90YWwgJT4lIHNlbGVjdChOYW1lLFZvbHVtZSxEYXRlKSAlPiUNCiAgcmVuYW1lKGRhdGUgPSBEYXRlLCBpZCA9IE5hbWUsIHZhbHVlID0gVm9sdW1lKSAlPiUNCiAgc3Vic2V0KGRhdGU+ICIyMDEzLTEyLTAyIiAmIGRhdGUgPCAiMjAyMS0wNy0wNiIpICU+JQ0KICBncm91cF9ieShpZCwgZGF0ZSA9IGx1YnJpZGF0ZTo6Zmxvb3JfZGF0ZShkYXRlLCAibW9udGgiKSkgJT4lDQogIHN1bW1hcml6ZSh2YWx1ZSA9IHN1bSh2YWx1ZSkpDQogIA0KICANCmRhdGFfYWx0PC0gZGF0YV90b3RhbCAlPiUgZmlsdGVyKCFOYW1lPT0gIkJpdGNvaW4iKSAlPiUgDQogIGZpbHRlcighTmFtZT09ICJXcmFwcGVkIEJpdGNvaW4iKSANCg0KZGZfYWx0PC1kYXRhX2FsdCAlPiUgc2VsZWN0KE5hbWUsVm9sdW1lLERhdGUpICU+JQ0KICByZW5hbWUoZGF0ZSA9IERhdGUsIGlkID0gTmFtZSwgdmFsdWUgPSBWb2x1bWUpICU+JQ0KICBzdWJzZXQoZGF0ZT4gIjIwMTMtMTItMDIiICYgZGF0ZSA8ICIyMDIxLTA3LTA2IikgJT4lDQogIGdyb3VwX2J5KGlkLCBkYXRlID0gbHVicmlkYXRlOjpmbG9vcl9kYXRlKGRhdGUsICJtb250aCIpKSAlPiUNCiAgc3VtbWFyaXplKHZhbHVlID0gc3VtKHZhbHVlKSkNCg0KDQpkZl9yYWNlXzEgPC0gZGYgJT4lIGFycmFuZ2UoZGF0ZSkNCg0Kcm9ic2VydmFibGUoDQogICJodHRwczovL29ic2VydmFibGVocS5jb20vQGp1YmEvYmFyLWNoYXJ0LXJhY2UiLA0KICBpbmNsdWRlID0gYygidmlld29mIGRhdGUiLCAiY2hhcnQiLCAiZHJhdyIsICJzdHlsZXMiKSwNCiAgaGlkZSA9ICJkcmF3IiwNCiAgaW5wdXQgPSBsaXN0KA0KICAgIGRhdGEgPSBkZl9yYWNlXzEsIA0KICAgIHRpdGxlID0gIkV2b2x1Y2nDs24gY3JpcHRvbW9uZWRhcyBjb24gbcOhcyB2b2x1bWVuIiwNCiAgICBzdWJ0aXRsZSA9ICJQcmluY2lwYWxlcyBjcmlwdG9tb25lZGFzIGRlc2RlIGVsIDIwMTMgaGFzdGEgbGEgYWN0dWFsaWRhZCIsDQogICAgc291cmNlID0gIkZ1ZW50ZTogQmxvY2tjaGFpbi5jb20iLA0KICAgIHRpY2tEdXJhdGlvbiA9IDYwMA0KICApLA0KICB3aWR0aCA9IDEwMDAsDQogIGhlaWdodCA9IDcwMCwNCikNCg0KYGBgDQoNCjxicj4NCg0KIyMgMy40IENhcGl0YWxpemFjacOzbiBkZSBtZXJjYWRvIHsudGFic2V0fQ0KDQojIyMgPEZPTlQgQ09MT1I9ImQzYTQ2YSI+KipUYWJsYSoqPC9GT05UPg0KDQpTaW4gZW1iYXJnbywgcXVlIFRldGhlciBzZWEgbGEgcXVlIG3DoXMgdm9sdW1lbiBtdWV2ZSwgbm8gcXVpZXJlIGRlY2lyIHF1ZSBzZWEgbGEgbcOhcyBpbXBvcnRhbnRlLCBwb2Ryw61hbW9zIGZpamFybm9zIGVuIG90cm9zIGluZGljYWRvcmVzIHBhcmEgY29uc2lkZXJhciBlc3RvLg0KDQpMYSBjYXBpdGFsaXphY2nDs24gYnVyc8OhdGlsIChvIG1hcmtldCBjYXApIG1pZGUgZWwgInRhbWHDsW8iIGRlIHVuYSBhY2Npw7NuIG8gZGl2aXNhLCBvLCBlbiBudWVzdHJvIGNhc28sIGNyaXB0b21vbmVkYS4gU2ltcGxlbWVudGUgZXMgbGEgY2FudGlkYWQgZGUgcmVzZXJ2YXMgZGUgbGEgY3JpcHRvbW9uZWRhIGVuIGVsIG1lcmNhZG8sIG11bHRpcGxpY2FkbyBwb3Igc3UgcHJlY2lvIChlcyBkZWNpciwgUHJlY2lvKkNhbnRpZGFkKQ0KDQpZIGFxdcOtIGxhIGNvc2EgY2FtYmlhLCBjb21vIHBvZGVtb3MgdmVyIGVuIGxhIHNpZ3VpZW50ZSB0YWJsYToNCg0KYGBge3IsIGVjaG89RkFMU0V9DQpjb2luX0V0aGVyZXVtIDwtIHJlYWRfY3N2KCJkYXRvcy9jb2luX0V0aGVyZXVtLmNzdiIpDQpjb2luX0JpdGNvaW4gPC0gcmVhZF9jc3YoImRhdG9zL2NvaW5fQml0Y29pbi5jc3YiKQ0KZGF0YV90b3RhbCA8LSByZWFkX2NzdigiZGF0b3MvZGF0YV90b3RhbC5jc3YiKQ0KDQpidGM8LSBjb2luX0JpdGNvaW4gJT4lIG11dGF0ZShEYXRlPWFzLkRhdGUoRGF0ZSkpDQpidGM8LSBjb2luX0JpdGNvaW4gJT4lIG11dGF0ZShhbm8gPSBmb3JtYXQoRGF0ZSwgIiVZIikpICU+JQ0KICBncm91cF9ieShhbm8pICU+JSBzdW1tYXJpc2UobWVhbl9tYXJrZXQ9IG1lYW4oTWFya2V0Y2FwKSkgJT4lIA0KICBtdXRhdGUoY3J5cHRvID0gImJpdGNvaW4iKQ0KYnRjMjwtY29pbl9CaXRjb2luICU+JSBzZWxlY3QoTmFtZSxDbG9zZSwgRGF0ZSkgJT4lDQogIG11dGF0ZShDbG9zZT0gQ2xvc2UvMTAwMCkgJT4lIG11dGF0ZShhbm8gPSBmb3JtYXQoRGF0ZSwgIiVZIikpICU+JQ0KICBncm91cF9ieShhbm8pICU+JSBzdW1tYXJpc2UoQ2xvc2U9IG1lYW4oQ2xvc2UpKSAlPiUNCiAgZmlsdGVyKGFubyAlaW4lIGMoMjAxNSwyMDE2LDIwMTcsMjAxOCwyMDE5LDIwMjAsMjAyMSkpDQoNCmV0aDwtIGNvaW5fRXRoZXJldW0gJT4lIG11dGF0ZShEYXRlPWFzLkRhdGUoRGF0ZSkpICU+JSANCiAgbXV0YXRlKGFubyA9IGZvcm1hdChEYXRlLCAiJVkiKSkgJT4lDQogIGdyb3VwX2J5KGFubykgJT4lIA0KICBzdW1tYXJpc2UobWVhbl9tYXJrZXQ9IG1lYW4oTWFya2V0Y2FwKSkgJT4lIA0KICBtdXRhdGUoY3J5cHRvID0gImV0aGVyZXVtIikNCg0KDQpyZXN0bzwtIGRhdGFfdG90YWwgJT4lIG11dGF0ZShEYXRlPWFzLkRhdGUoRGF0ZSkpICU+JSANCiAgbXV0YXRlKGFubyA9IGZvcm1hdChEYXRlLCAiJVkiKSkgJT4lDQogIGZpbHRlcighTmFtZSA9PSAiQml0Y29pbiIpICU+JSBmaWx0ZXIoIU5hbWUgPT0gIkV0aGVyZXVtIikgJT4lDQogIGdyb3VwX2J5KGFubywgTmFtZSkgJT4lIG11dGF0ZShtZWRpYV9hbnVhbCA9IG1lYW4oTWFya2V0Y2FwKSkNCg0KZGllY2lzZWlzPC1yZXN0byAlPiUgZmlsdGVyKGFubyA9PSAiMjAxNiIpICU+JQ0KICBncm91cF9ieShOYW1lKSAlPiUgc3VtbWFyaXNlKG1lZGlhX2FudWFsID0gbWVhbihNYXJrZXRjYXApKSAlPiUgDQogIHN1bW1hcmlzZShzdW1hPSBzdW0obWVkaWFfYW51YWwpKSAlPiUNCiAgbXV0YXRlKGFubyA9ICIyMDE2IikgJT4lIG11dGF0ZShOYW1lID0gImFsdCIpDQoNCnF1aW5jZTwtcmVzdG8gJT4lIGZpbHRlcihhbm8gPT0gIjIwMTUiKSAlPiUNCiAgZ3JvdXBfYnkoTmFtZSkgJT4lIHN1bW1hcmlzZShtZWRpYV9hbnVhbCA9IG1lYW4oTWFya2V0Y2FwKSkgJT4lDQogIHN1bW1hcmlzZShzdW1hPSBzdW0obWVkaWFfYW51YWwpKSAlPiUNCiAgbXV0YXRlKGFubyA9ICIyMDE1IikgJT4lIG11dGF0ZShOYW1lID0gImFsdCIpDQoNCmRpZWNpc2lldGU8LXJlc3RvICU+JSBmaWx0ZXIoYW5vID09ICIyMDE3IikgJT4lDQogIGdyb3VwX2J5KE5hbWUpICU+JSBzdW1tYXJpc2UobWVkaWFfYW51YWwgPSBtZWFuKE1hcmtldGNhcCkpICU+JQ0KICBzdW1tYXJpc2Uoc3VtYT0gc3VtKG1lZGlhX2FudWFsKSkgJT4lDQogIG11dGF0ZShhbm8gPSAiMjAxNyIpICU+JSBtdXRhdGUoTmFtZSA9ICJhbHQiKQ0KDQpkaWVjaW51ZXZlPC1yZXN0byAlPiUgZmlsdGVyKGFubyA9PSAiMjAxOSIpICU+JQ0KICBncm91cF9ieShOYW1lKSAlPiUgc3VtbWFyaXNlKG1lZGlhX2FudWFsID0gbWVhbihNYXJrZXRjYXApKSAlPiUNCiAgc3VtbWFyaXNlKHN1bWE9IHN1bShtZWRpYV9hbnVhbCkpICU+JQ0KICBtdXRhdGUoYW5vID0gIjIwMTkiKSAlPiUgbXV0YXRlKE5hbWUgPSAiYWx0IikNCg0KdmVpbnRlPC1yZXN0byAlPiUgZmlsdGVyKGFubyA9PSAiMjAyMCIpICU+JQ0KICBncm91cF9ieShOYW1lKSAlPiUgc3VtbWFyaXNlKG1lZGlhX2FudWFsID0gbWVhbihNYXJrZXRjYXApKSAlPiUNCiAgc3VtbWFyaXNlKHN1bWE9IHN1bShtZWRpYV9hbnVhbCkpICU+JQ0KICBtdXRhdGUoYW5vID0gIjIwMjAiKSAlPiUgbXV0YXRlKE5hbWUgPSAiYWx0IikNCg0KZGllY2lvY2hvPC1yZXN0byAlPiUgZmlsdGVyKGFubyA9PSAiMjAxOCIpICU+JQ0KICBncm91cF9ieShOYW1lKSAlPiUgc3VtbWFyaXNlKG1lZGlhX2FudWFsID0gbWVhbihNYXJrZXRjYXApKSAlPiUNCiAgc3VtbWFyaXNlKHN1bWE9IHN1bShtZWRpYV9hbnVhbCkpICU+JQ0KICBtdXRhdGUoYW5vID0gIjIwMTgiKSAlPiUgbXV0YXRlKE5hbWUgPSAiYWx0IikNCg0KdmVpbnRpdW5vPC1yZXN0byAlPiUgZmlsdGVyKGFubyA9PSAiMjAyMSIpICU+JQ0KICBncm91cF9ieShOYW1lKSAlPiUgc3VtbWFyaXNlKG1lZGlhX2FudWFsID0gbWVhbihNYXJrZXRjYXApKSAlPiUNCiAgc3VtbWFyaXNlKHN1bWE9IHN1bShtZWRpYV9hbnVhbCkpICU+JQ0KICBtdXRhdGUoYW5vID0gIjIwMjEiKSAlPiUgbXV0YXRlKE5hbWUgPSAiYWx0IikNCg0KeDwtZnVsbF9qb2luKHZlaW50ZSxkaWVjaW9jaG8pDQpiPC1mdWxsX2pvaW4oZGllY2lzZWlzLHF1aW5jZSkNCmI8LWZ1bGxfam9pbihiLHgpDQpjPC1mdWxsX2pvaW4oZGllY2lzaWV0ZSxkaWVjaW51ZXZlKQ0KZDwtZnVsbF9qb2luKGIsdmVpbnRpdW5vKQ0KZTwtZnVsbF9qb2luKGMsZCkgJT4lIHJlbmFtZSgibWVhbl9tYXJrZXQiID0gInN1bWEiKSAlPiUgDQogIHNlbGVjdChtZWFuX21hcmtldCxhbm8pICU+JSBtdXRhdGUoY3J5cHRvID0gImFsdCIpDQoNCm5vZmluYWw8LWZ1bGxfam9pbihidGMsIGV0aCkgJT4lIGZpbHRlcihhbm8gJWluJSBjKDIwMTUsMjAxNiwyMDE3LCAyMDE4LDIwMTksMjAyMCwyMDIxKSkNCmZpbmFsPC0gZnVsbF9qb2luKG5vZmluYWwsIGUpICU+JSBncm91cF9ieShhbm8pICU+JSANCiAgbXV0YXRlKHN1bWEgPSBzdW0obWVhbl9tYXJrZXQpKSAlPiUgDQogIG11dGF0ZShtZWFuX21hcmtldDIgPSAxMDAqbWVhbl9tYXJrZXQvc3VtYSkgDQpmaW5hbDI8LWZ1bGxfam9pbihub2ZpbmFsLCBlKSAlPiUgZ3JvdXBfYnkoYW5vKSAlPiUgDQogIG11dGF0ZShzdW1hID0gc3VtKG1lYW5fbWFya2V0KSkNCg0KcHJldGFibGE8LSBmaW5hbCAlPiUgZ3JvdXBfYnkoYW5vKSAlPiUgDQogIHN1bW1hcmlzZShsaXN0YSA9IGxpc3QobWVhbl9tYXJrZXQyKSkNCg0KcHJldGFibGE8LSBmdWxsX2pvaW4ocHJldGFibGEsYnRjMiwgYnk9ImFubyIpDQpwcmV0YWJsYTwtcHJldGFibGEgJT4lIG11dGF0ZShDbG9zZSA9IHJvdW5kKENsb3NlKSkNCnByZXRhYmxhPC1wcmV0YWJsYSAlPiUgcmVuYW1lKCJQcmVjaW8gQlRDIChlbiBtaWxlcywgJCkiID0gIkNsb3NlIikNCg0KcGFsX3N0YWdlcyA8LSBjKCcjMjY0NjUzJywnI2U5YzQ2YScsJyNlNzZmNTEnKQ0KDQp0YWJsYTE8LSBwcmV0YWJsYSAlPiUNCiAgZ3QoKSU+JQ0KICBndF9wbHRfYmFyX3N0YWNrKA0KICAgICMgQ29sdW1uIHdpdGggZGF0YQ0KICAgIGNvbHVtbj1saXN0YSwNCiAgICAjIFN0YWNrZWQgYmFycGxvdCANCiAgICBwb3NpdGlvbiA9ICdzdGFjaycsIA0KICAgICMgU2V0IGxhYmVscyBhbmQgY29sb3INCiAgICBsYWJlbHMgPSBjKCJCVEMiLCAiRVRIIiwgIkFMVCIpLA0KICAgIHBhbGV0dGUgPSBwYWxfc3RhZ2VzLA0KICAgICMgQmFycGxvdCB3aWR0aA0KICAgIHdpZHRoID0gMTAwKSAlPiUNCiAgdGFiX2hlYWRlcih0aXRsZSA9ICIlIGRlIE1hcmtldGNhcCBwb3IgQ3J5cHRvIHkgRXZvbHVjacOzbiBkZWwgcHJlY2lvIGRlbCBCaXRjb2luIiklPiUNCiAgZ3RfdGhlbWVfbnl0aW1lcygpDQp0YWJsYTI8LSB0YWJsYTEgJT4lDQogIGd0RXh0cmFzOjpndF9mYV9yZXBlYXRzKA0KICAgIGNvbHVtbj0gYFByZWNpbyBCVEMgKGVuIG1pbGVzLCAkKWAsDQogICAgcGFsZXR0ZSA9ICJvcmFuZ2UiLA0KICAgIG5hbWUgPSAiYml0Y29pbiIsDQogICAgYWxpZ249J2xlZnQnDQogICkgICU+JSB0YWJfc3R5bGUoc3R5bGUgPSBsaXN0KGNlbGxfZmlsbChjb2xvciA9ICIjRjlFM0Q2IikpLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhdGlvbnMgPSBjZWxsc19ib2R5KHJvd3MgPSBhbm8+MykpDQoNCnRhYmxhMg0KDQpgYGANCg0KRW4gZXN0YSB0YWJsYSBoZW1vcyBjb21wYXJhZG8gZW4gcHJpbWVyIGx1Z2FyIGVsIHBvcmNlbnRhamUgZGUgTWFya2V0Y2FwIGRlbCB0b3RhbCBxdWUgcGVydGVuZWNlIGEgQml0Y29pbiwgYSBFdGhlcmV1bSB5IGEgdG9kYXMgbGFzIGFsdGNvaW5zIGp1bnRhcy4gUG9kZW1vcyB2ZXIsIHF1ZSBhdW5xdWUgQml0Y29pbiBzaWd1ZSBzaWVuZG8gbGEgbMOtZGVyLCBwb2NvIGEgcG9jbyB2YSBwZXJkaWVuZG8gdGVycmVubyBxdWUgRXRoZXJldW0geSBsYXMgYWx0Y29pbnMgdmFuIGNvbnNpZ3VpZW5kby4gDQoNCkNvbW8gcG9kZW1vcyB2ZXIsIGFsIGhhYmVyIGNyZWNpZG8gZWwgaW50ZXLDqXMgZW4gbGFzIGNyaXB0b21vbmVkYXMgZW4gbG9zIMO6bHRpbW9zIGHDsW9zLCBhdW5xdWUgaGEgdmFyaWFkbyBlbCBtYXJrZXRjYXAsIGVsIHByZWNpbyBkZSBCaXRjb2luIG5vIGhhIGRlamFkbyBkZSBjcmVjZXIuDQoNCiMjIyA8Rk9OVCBDT0xPUj0iZDNhNDZhIj4qKkPDs2RpZ28qKjwvRk9OVD4NCg0KYGBge3IsIGV2YWw9RkFMU0UsIGluY2x1ZGU9VFJVRX0NCmNvaW5fRXRoZXJldW0gPC0gcmVhZF9jc3YoImRhdG9zL2NvaW5fRXRoZXJldW0uY3N2IikNCmNvaW5fQml0Y29pbiA8LSByZWFkX2NzdigiZGF0b3MvY29pbl9CaXRjb2luLmNzdiIpDQpkYXRhX3RvdGFsIDwtIHJlYWRfY3N2KCJkYXRvcy9kYXRhX3RvdGFsLmNzdiIpDQoNCmJ0YzwtIGNvaW5fQml0Y29pbiAlPiUgbXV0YXRlKERhdGU9YXMuRGF0ZShEYXRlKSkNCmJ0YzwtIGNvaW5fQml0Y29pbiAlPiUgbXV0YXRlKGFubyA9IGZvcm1hdChEYXRlLCAiJVkiKSkgJT4lDQogIGdyb3VwX2J5KGFubykgJT4lIHN1bW1hcmlzZShtZWFuX21hcmtldD0gbWVhbihNYXJrZXRjYXApKSAlPiUgDQogIG11dGF0ZShjcnlwdG8gPSAiYml0Y29pbiIpDQpidGMyPC1jb2luX0JpdGNvaW4gJT4lIHNlbGVjdChOYW1lLENsb3NlLCBEYXRlKSAlPiUNCiAgbXV0YXRlKENsb3NlPSBDbG9zZS8xMDAwKSAlPiUgbXV0YXRlKGFubyA9IGZvcm1hdChEYXRlLCAiJVkiKSkgJT4lDQogIGdyb3VwX2J5KGFubykgJT4lIHN1bW1hcmlzZShDbG9zZT0gbWVhbihDbG9zZSkpICU+JQ0KICBmaWx0ZXIoYW5vICVpbiUgYygyMDE1LDIwMTYsMjAxNywyMDE4LDIwMTksMjAyMCwyMDIxKSkNCg0KZXRoPC0gY29pbl9FdGhlcmV1bSAlPiUgbXV0YXRlKERhdGU9YXMuRGF0ZShEYXRlKSkgJT4lIA0KICBtdXRhdGUoYW5vID0gZm9ybWF0KERhdGUsICIlWSIpKSAlPiUNCiAgZ3JvdXBfYnkoYW5vKSAlPiUgDQogIHN1bW1hcmlzZShtZWFuX21hcmtldD0gbWVhbihNYXJrZXRjYXApKSAlPiUgDQogIG11dGF0ZShjcnlwdG8gPSAiZXRoZXJldW0iKQ0KDQoNCnJlc3RvPC0gZGF0YV90b3RhbCAlPiUgbXV0YXRlKERhdGU9YXMuRGF0ZShEYXRlKSkgJT4lIA0KICBtdXRhdGUoYW5vID0gZm9ybWF0KERhdGUsICIlWSIpKSAlPiUNCiAgZmlsdGVyKCFOYW1lID09ICJCaXRjb2luIikgJT4lIGZpbHRlcighTmFtZSA9PSAiRXRoZXJldW0iKSAlPiUNCiAgZ3JvdXBfYnkoYW5vLCBOYW1lKSAlPiUgbXV0YXRlKG1lZGlhX2FudWFsID0gbWVhbihNYXJrZXRjYXApKQ0KDQpkaWVjaXNlaXM8LXJlc3RvICU+JSBmaWx0ZXIoYW5vID09ICIyMDE2IikgJT4lDQogIGdyb3VwX2J5KE5hbWUpICU+JSBzdW1tYXJpc2UobWVkaWFfYW51YWwgPSBtZWFuKE1hcmtldGNhcCkpICU+JSANCiAgc3VtbWFyaXNlKHN1bWE9IHN1bShtZWRpYV9hbnVhbCkpICU+JQ0KICBtdXRhdGUoYW5vID0gIjIwMTYiKSAlPiUgbXV0YXRlKE5hbWUgPSAiYWx0IikNCg0KcXVpbmNlPC1yZXN0byAlPiUgZmlsdGVyKGFubyA9PSAiMjAxNSIpICU+JQ0KICBncm91cF9ieShOYW1lKSAlPiUgc3VtbWFyaXNlKG1lZGlhX2FudWFsID0gbWVhbihNYXJrZXRjYXApKSAlPiUNCiAgc3VtbWFyaXNlKHN1bWE9IHN1bShtZWRpYV9hbnVhbCkpICU+JQ0KICBtdXRhdGUoYW5vID0gIjIwMTUiKSAlPiUgbXV0YXRlKE5hbWUgPSAiYWx0IikNCg0KZGllY2lzaWV0ZTwtcmVzdG8gJT4lIGZpbHRlcihhbm8gPT0gIjIwMTciKSAlPiUNCiAgZ3JvdXBfYnkoTmFtZSkgJT4lIHN1bW1hcmlzZShtZWRpYV9hbnVhbCA9IG1lYW4oTWFya2V0Y2FwKSkgJT4lDQogIHN1bW1hcmlzZShzdW1hPSBzdW0obWVkaWFfYW51YWwpKSAlPiUNCiAgbXV0YXRlKGFubyA9ICIyMDE3IikgJT4lIG11dGF0ZShOYW1lID0gImFsdCIpDQoNCmRpZWNpbnVldmU8LXJlc3RvICU+JSBmaWx0ZXIoYW5vID09ICIyMDE5IikgJT4lDQogIGdyb3VwX2J5KE5hbWUpICU+JSBzdW1tYXJpc2UobWVkaWFfYW51YWwgPSBtZWFuKE1hcmtldGNhcCkpICU+JQ0KICBzdW1tYXJpc2Uoc3VtYT0gc3VtKG1lZGlhX2FudWFsKSkgJT4lDQogIG11dGF0ZShhbm8gPSAiMjAxOSIpICU+JSBtdXRhdGUoTmFtZSA9ICJhbHQiKQ0KDQp2ZWludGU8LXJlc3RvICU+JSBmaWx0ZXIoYW5vID09ICIyMDIwIikgJT4lDQogIGdyb3VwX2J5KE5hbWUpICU+JSBzdW1tYXJpc2UobWVkaWFfYW51YWwgPSBtZWFuKE1hcmtldGNhcCkpICU+JQ0KICBzdW1tYXJpc2Uoc3VtYT0gc3VtKG1lZGlhX2FudWFsKSkgJT4lDQogIG11dGF0ZShhbm8gPSAiMjAyMCIpICU+JSBtdXRhdGUoTmFtZSA9ICJhbHQiKQ0KDQpkaWVjaW9jaG88LXJlc3RvICU+JSBmaWx0ZXIoYW5vID09ICIyMDE4IikgJT4lDQogIGdyb3VwX2J5KE5hbWUpICU+JSBzdW1tYXJpc2UobWVkaWFfYW51YWwgPSBtZWFuKE1hcmtldGNhcCkpICU+JQ0KICBzdW1tYXJpc2Uoc3VtYT0gc3VtKG1lZGlhX2FudWFsKSkgJT4lDQogIG11dGF0ZShhbm8gPSAiMjAxOCIpICU+JSBtdXRhdGUoTmFtZSA9ICJhbHQiKQ0KDQp2ZWludGl1bm88LXJlc3RvICU+JSBmaWx0ZXIoYW5vID09ICIyMDIxIikgJT4lDQogIGdyb3VwX2J5KE5hbWUpICU+JSBzdW1tYXJpc2UobWVkaWFfYW51YWwgPSBtZWFuKE1hcmtldGNhcCkpICU+JQ0KICBzdW1tYXJpc2Uoc3VtYT0gc3VtKG1lZGlhX2FudWFsKSkgJT4lDQogIG11dGF0ZShhbm8gPSAiMjAyMSIpICU+JSBtdXRhdGUoTmFtZSA9ICJhbHQiKQ0KDQp4PC1mdWxsX2pvaW4odmVpbnRlLGRpZWNpb2NobykNCmI8LWZ1bGxfam9pbihkaWVjaXNlaXMscXVpbmNlKQ0KYjwtZnVsbF9qb2luKGIseCkNCmM8LWZ1bGxfam9pbihkaWVjaXNpZXRlLGRpZWNpbnVldmUpDQpkPC1mdWxsX2pvaW4oYix2ZWludGl1bm8pDQplPC1mdWxsX2pvaW4oYyxkKSAlPiUgcmVuYW1lKCJtZWFuX21hcmtldCIgPSAic3VtYSIpICU+JSANCiAgc2VsZWN0KG1lYW5fbWFya2V0LGFubykgJT4lIG11dGF0ZShjcnlwdG8gPSAiYWx0IikNCg0Kbm9maW5hbDwtZnVsbF9qb2luKGJ0YywgZXRoKSAlPiUgZmlsdGVyKGFubyAlaW4lIGMoMjAxNSwyMDE2LDIwMTcsIDIwMTgsMjAxOSwyMDIwLDIwMjEpKQ0KZmluYWw8LSBmdWxsX2pvaW4obm9maW5hbCwgZSkgJT4lIGdyb3VwX2J5KGFubykgJT4lIA0KICBtdXRhdGUoc3VtYSA9IHN1bShtZWFuX21hcmtldCkpICU+JSANCiAgbXV0YXRlKG1lYW5fbWFya2V0MiA9IDEwMCptZWFuX21hcmtldC9zdW1hKSANCmZpbmFsMjwtZnVsbF9qb2luKG5vZmluYWwsIGUpICU+JSBncm91cF9ieShhbm8pICU+JSANCiAgbXV0YXRlKHN1bWEgPSBzdW0obWVhbl9tYXJrZXQpKQ0KDQpwcmV0YWJsYTwtIGZpbmFsICU+JSBncm91cF9ieShhbm8pICU+JSANCiAgc3VtbWFyaXNlKGxpc3RhID0gbGlzdChtZWFuX21hcmtldDIpKQ0KDQpwcmV0YWJsYTwtIGZ1bGxfam9pbihwcmV0YWJsYSxidGMyLCBieT0iYW5vIikNCnByZXRhYmxhPC1wcmV0YWJsYSAlPiUgbXV0YXRlKENsb3NlID0gcm91bmQoQ2xvc2UpKQ0KcHJldGFibGE8LXByZXRhYmxhICU+JSByZW5hbWUoIlByZWNpbyBCVEMgKGVuIG1pbGVzLCAkKSIgPSAiQ2xvc2UiKQ0KDQpwYWxfc3RhZ2VzIDwtIGMoJyMyNjQ2NTMnLCcjZTljNDZhJywnI2U3NmY1MScpDQoNCnRhYmxhMTwtIHByZXRhYmxhICU+JQ0KICBndCgpJT4lDQogIGd0X3BsdF9iYXJfc3RhY2soDQogICAgIyBDb2x1bW4gd2l0aCBkYXRhDQogICAgY29sdW1uPWxpc3RhLA0KICAgICMgU3RhY2tlZCBiYXJwbG90IA0KICAgIHBvc2l0aW9uID0gJ3N0YWNrJywgDQogICAgIyBTZXQgbGFiZWxzIGFuZCBjb2xvcg0KICAgIGxhYmVscyA9IGMoIkJUQyIsICJFVEgiLCAiQUxUIiksDQogICAgcGFsZXR0ZSA9IHBhbF9zdGFnZXMsDQogICAgIyBCYXJwbG90IHdpZHRoDQogICAgd2lkdGggPSAxMDApICU+JQ0KICB0YWJfaGVhZGVyKHRpdGxlID0gIiUgZGUgTWFya2V0Y2FwIHBvciBDcnlwdG8geSBFdm9sdWNpw7NuIGRlbCBwcmVjaW8gZGVsIEJpdGNvaW4iKSU+JQ0KICBndF90aGVtZV9ueXRpbWVzKCkNCnRhYmxhMjwtIHRhYmxhMSAlPiUNCiAgZ3RFeHRyYXM6Omd0X2ZhX3JlcGVhdHMoDQogICAgY29sdW1uPSBgUHJlY2lvIEJUQyAoZW4gbWlsZXMsICQpYCwNCiAgICBwYWxldHRlID0gIm9yYW5nZSIsDQogICAgbmFtZSA9ICJiaXRjb2luIiwNCiAgICBhbGlnbj0nbGVmdCcNCiAgKSAgJT4lIHRhYl9zdHlsZShzdHlsZSA9IGxpc3QoY2VsbF9maWxsKGNvbG9yID0gIiNGOUUzRDYiKSksDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2F0aW9ucyA9IGNlbGxzX2JvZHkocm93cyA9IGFubz4zKSkNCg0KdGFibGEyDQoNCmBgYA0KDQojIDQuIExhcyBjcmlwdG9tb25lZGFzIGVuIGVsIG11bmRvDQoNCjxicj4NCg0KIyMgNC4xIMK/UXVpw6luIHBvc2VlIGxhcyBjcmlwdG9tb25lZGFzPyB7LnRhYnNldH0NCg0KIyMjIDxGT05UIENPTE9SPSJkM2E0NmEiPioqTWFwYSoqPC9GT05UPg0KDQpPdHJvIGFuw6FsaXNpcyByZWFsaXphZG8gaGEgc2lkbyBpbHVzdHJhciBlbiB1biBtYXBhLCBxdcOpIHBhw61zIHRpZW5lIG1heW9yIHBvcmNlbnRhamUgZGUgcGVyc29uYXMgcG9zZWVkb3JhcyBkZSBjcmlwdG9tb25lZGFzLiBEZSBhcXXDrSBzYWNhbW9zIGRpc3RpbnRhcyBjb25jbHVzaW9uZXMgaW50ZXJlc2FudGVzOg0KDQpgYGB7ciwgZWNobz1GQUxTRX0NCmtuaXRyOjppbmNsdWRlX2dyYXBoaWNzKGhlcmU6OmhlcmUoIkNhcHR1cmFzIiwgInBsb3QzLnBuZyIpKQ0KDQpgYGANCg0KRW4gZXN0ZSBtYXBhIHZlbW9zIHZhcmlhcyBjb3NhcyBpbnRlcmVzYW50ZXMuDQpFbiBwcmltZXIgbHVnYXIsIGVuIGxhIHpvbmEgZXVybyB2ZW1vcyBjw7NtbyBlc3RlIHBvcmNlbnRhamUgZXMgYmFzdGFudGUgYmFqbyAoeWEgZXMgcmVsZXZhbnRlIGRlIHBvciBzaSBlbCBoZWNobyBkZSBxdWUgdG9kb3MgbG9zIHBhw61zZXMgZGUgbGEgVW5pw7NuIEV1cm9wZWEgdGVuZ2FuIHZhbG9yZXMgc2ltaWxhcmVzKSwgdW5hIGRlIGxhcyByYXpvbmVzIHB1ZWRlIGVzdGFyIGxpZ2FkYSBhIHF1ZSBsYSBtb25lZGEgKOKCrCkgZXMgYmFzdGFudGUgZXN0YWJsZSAoc2luIGVtYmFyZ28sIGVuIEVFVVUsIGxhIHRhc2EgZXMgYWx0YS4uLikgdmVtb3MgcXVlIGVsIGNhc28gZGUgR3JhbiBCcmV0YcOxYSBlcyBzaW1pbGFyIGFsIGRlIGxhIHpvbmEgZXVyby4gDQoNCk5vIHJlc3VsdGEgZXh0cmHDsW8sIHBvciB0YW50bywgcXVlIHBhw61zZXMgZGUgc3VkYW1lcmljYSBjb21vIFZlbmV6dWVsYSB0ZW5nYW4gdW4gcG9yY2VudGFqZSBtYXlvciwgcHVlc3RvIHF1ZSBzdSBtb25lZGEgc2UgZGV2YWzDumEgYSBncmFuIHZlbG9jaWRhZCBjb24gbGEgaW5mbGFjacOzbiB5IGxhIGdlbnRlIGRlY2lkZSBpbnZlcnRpciBlbiBvdHJvcyBhY3Rpdm9zIGNvbiBlbCBvamV0aXZvIGRlIG1hbnRlbmVyIHN1IHBvZGVyIGFkcXVpc2l0aXZvLiANCg0KUnVzaWEgdGFtYmnDqW4gdGllbmUgdW5hIGluZmxhY2nDs24gbWF5b3IgYSBsYSBldXJvcGVhIGHDsW8gdHJhcyBhw7FvLCBwZXJvIGFsbMOtIGxhcyByYXpvbmVzIHZhbiBtw6FzIGFsbMOhLi4uDQoNCjxpZnJhbWUgc3JjPSJodHRwczovL3d3dy5lbGRpYXJpby5lcy90ZWNub2xvZ2lhL3B1dGluLXBhcnRpZGFyaW8tYWNlcHRhci1jcmlwdG9tb25lZGFzLW1ldG9kby1wYWdvXzFfODM5NDc4Mi5odG1sIiBoZWlnaHQ9IjQwMCIgd2lkdGg9IjgwMCI+PC9pZnJhbWU+DQoNCg0KIyMjIDxGT05UIENPTE9SPSJkM2E0NmEiPioqQ8OzZGlnbyoqPC9GT05UPg0KDQpgYGB7ciwgZXZhbD1GQUxTRSwgaW5jbHVkZT1UUlVFfQ0KbGlicmFyeSh0bWFwKQ0KbGlicmFyeShybmF0dXJhbGVhcnRoKQ0KbGlicmFyeShwbG90bHkpDQoNCnBhaXNlc3NzIDwtIHJlYWRfZXhjZWwoImRhdG9zL3BhaXNlc3NzLnhsc3giKQ0Kd29ybGQgPC0gcm5hdHVyYWxlYXJ0aDo6bmVfY291bnRyaWVzKHNjYWxlID0gIm1lZGl1bSIsIHJldHVybmNsYXNzID0gInNmIikNCndvcmxkPC0gd29ybGQgJT4lIHNlbGVjdChuYW1lLCBnZW9tZXRyeSxwb3BfZXN0KQ0KcGFpc2Vzc3M8LSBwYWlzZXNzcyU+JSByZW5hbWUoInBhaXMiPSJQYcOtcyIpDQoNCmFudGlzPC1hbnRpX2pvaW4ocGFpc2Vzc3Msd29ybGQsIGJ5PSBjKCJwYWlzIiA9ICJuYW1lIikpDQoNCmI8LSBwYWlzZXNzcyAlPiUgbXV0YXRlKHBhaXMgPSBpZmVsc2UocGFpcz09IlVTQSIsIlVuaXRlZCBTdGF0ZXMiLCBwYWlzKSkgJT4lDQogIG11dGF0ZShwYWlzID0gaWZlbHNlKHBhaXM9PSJTb3V0aCBLb3JlYSIsIktvcmVhIiwgcGFpcykpICU+JQ0KICBtdXRhdGUocGFpcyA9IGlmZWxzZShwYWlzPT0iRG9taW5pY2FuIFJlcHVibGljIiwiRG9taW5pY2FuIFJlcC4iLCBwYWlzKSkgJT4lDQogIG11dGF0ZShwYWlzID0gaWZlbHNlKHBhaXM9PSJSZXB1YmxpYyBvZiBTZXJiaWEiLCJTZXJiaWEiLCBwYWlzKSkgJT4lDQogIG11dGF0ZShwYWlzID0gaWZlbHNlKHBhaXM9PSJCb3NuaWEgYW5kIEhlcnplZ292aW5hIiwiQm9zbmlhIGFuZCBIZXJ6LiIsIHBhaXMpKSAlPiUNCiAgbXV0YXRlKHBhaXMgPSBpZmVsc2UocGFpcz09IkN6ZWNoIFJlcHVibGljIiwiQ3plY2ggUmVwLiIsIHBhaXMpKSAlPiUNCiAgbXV0YXRlKHBhaXMgPSBpZmVsc2UocGFpcz09Ikl2b3J5IENvYXN0IiwiQ8O0dGUgZCdJdm9pcmUiLCBwYWlzKSkgJT4lDQogIG11dGF0ZShwYWlzID0gaWZlbHNlKHBhaXM9PSJUaGUgQmFoYW1hcyIsIkJhaGFtYXMiLCBwYWlzKSkNCg0KYW50aV9qb2luKGIsd29ybGQsIGJ5PSBjKCJwYWlzIiA9ICJuYW1lIikpDQphPC0gZnVsbF9qb2luKGIsd29ybGQsIGJ5PSBjKCJwYWlzIiA9ICJuYW1lIikpIA0KYTwtIGEgJT4lIG11dGF0ZSAobnVtYmVyID0gYXMubnVtZXJpYyhudW1iZXIpKSAlPiUgbXV0YXRlKHBlcmNlbnQgPSAxMDAqbnVtYmVyL3BvcF9lc3QpICU+JQ0KICBmaWx0ZXIoIXBhaXM9PSAiQW50YXJjdGljYSIpICU+JSBmaWx0ZXIoIXBhaXM9PSJHcmVlbmxhbmQiKQ0KDQoNCnBsb3QxPC1nZ3Bsb3QoYSwgYWVzKGdlb21ldHJ5ID0gZ2VvbWV0cnkpKSArIGdlb21fc2YoKQ0KDQoNCnBsb3QyPC0gcGxvdDEgKyBnZW9tX3NmKGFlcyhmaWxsPXBlcmNlbnQpKSArDQogIHNjYWxlX2ZpbGxfdmlyaWRpc19jKG9wdGlvbiA9ICJ0dXJibyIsIHRyYW5zID0gInNxcnQiKSANCg0KcGxvdDM8LSBwbG90MiArIHRoZW1lKHBhbmVsLmdyaWQubWFqb3IgPSBlbGVtZW50X2xpbmUoY29sb3IgPSBncmF5KC41KSwgbGluZXR5cGUgPSAiZGFzaGVkIiwgc2l6ZSA9IDAuNSksIA0KICAgICAgICAgICAgICBwYW5lbC5iYWNrZ3JvdW5kID0gZWxlbWVudF9yZWN0KGZpbGwgPSAiYWxpY2VibHVlIikpICsgDQogIHRoZW1lKGF4aXMubGluZSA9IGVsZW1lbnRfbGluZShzaXplID0gMCksDQogICAgICAgIGF4aXMudGlja3MgPSBlbGVtZW50X2xpbmUoY29sb3VyID0gImdyYXkxNCIsc2l6ZSA9IDAsIGxpbmV0eXBlID0gImRhc2hlZCIpLA0KICAgICAgICBwYW5lbC5ncmlkLm1ham9yID0gZWxlbWVudF9saW5lKGNvbG91ciA9ICJhbGljZWJsdWUiLHNpemUgPSAwKSwgDQogICAgICAgIHBhbmVsLmdyaWQubWlub3IgPSBlbGVtZW50X2xpbmUoY29sb3VyID0gImFsaWNlYmx1ZSIpKQ0KcGxvdDQ8LXBsb3QzK2xhYnModGl0bGUgPSAiUG9yY2VudGFqZSBkZSBwb2JsYWNpw7NuIHBvc2VlZG9yYSBkZSBjcmlwdG9tb25lZGFzIikrIHRoZW1lKGF4aXMubGluZSA9IGVsZW1lbnRfbGluZShzaXplID0gMCwgY29sb3VyID0gImFsaWNlYmx1ZSIpLA0KICAgICAgICAgICAgICBheGlzLnRpY2tzID0gZWxlbWVudF9saW5lKGNvbG91ciA9ICJhbGljZWJsdWUiKSwNCiAgICAgICAgICAgICAgcGFuZWwuZ3JpZC5tYWpvciA9IGVsZW1lbnRfbGluZShzaXplID0gMS40KSwNCiAgICAgICAgICAgICAgYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoY29sb3VyID0gImFsaWNlYmx1ZSIpLA0KICAgICAgICAgICAgICBheGlzLnRleHQueSA9IGVsZW1lbnRfdGV4dChzaXplID0gNiwgY29sb3VyID0gImFsaWNlYmx1ZSIpLCANCiAgICAgICAgICAgICAgbGVnZW5kLnRpdGxlID0gZWxlbWVudF90ZXh0KHNpemUgPSAxMSxmYWNlID0gImJvbGQiKSwgDQogICAgICAgICAgICAgIHBsb3QuYmFja2dyb3VuZCA9IGVsZW1lbnRfcmVjdChmaWxsID0gImFsaWNlYmx1ZSIpLA0KICAgICAgICAgICAgICBsZWdlbmQuYmFja2dyb3VuZCA9IGVsZW1lbnRfcmVjdChmaWxsID0gImFsaWNlYmx1ZSIpKQ0KDQpnZ3Bsb3RseShwbG90NCwgd2lkdGg9IDEwODAsIGhlaWdodD0gNzIwKQ0KDQpgYGANCg0KDQo8YnI+DQoNCiMjIDQuMiBUYWJsYSBjcmlwdG9tb25lZGFzIHsudGFic2V0fQ0KDQojIyMgPEZPTlQgQ09MT1I9ImQzYTQ2YSI+KipUYWJsYSoqPC9GT05UPg0KDQpBaG9yYSBxdWUgeWEgc2FiZW1vcyB1biBwb2NvIG3DoXMgc29icmUgY3JpcHRvbW9uZWRhcywgYXF1w60gbW9zdHJhbW9zIHVuYSB0YWJsYSBlbiBsYSBxdWUgcG9kZW1vcyB2ZXIgbcOhcyBpbmZvcm1hY2nDs24gYWNlcmNhIGRlIGxhcyA1MDAgY3JpcHRvbW9uZWRhcyBtw6FzIGltcG9ydGFudGVzDQoNCmBgYHtyLGVjaG89RkFMU0V9DQpjb2lucyA8LSBjcnlwdG9fbGlzdChvbmx5X2FjdGl2ZT1UUlVFKQ0KY29pbl9oaXN0IDwtIGNyeXB0b19oaXN0b3J5KGNvaW5zLCBsaW1pdD0zMDAsIHN0YXJ0X2RhdGU9IjIwMjExMTMwIiwgZW5kX2RhdGU9IjIwMjExMTMwIikgJT4lDQogIGZpbHRlcih0aW1lc3RhbXA9PSIyMDIxLTExLTMwIDIzOjU5OjU5IikgJT4lIHNlbGVjdChzbHVnLHN5bWJvbCxjbG9zZSwgdm9sdW1lKQ0KDQoNCmNvaW5faW5mbzwtIGNyeXB0b19pbmZvKGNvaW5zLGxpbWl0PTMwMCkNCg0KDQphPC1jb2luX2luZm8gJT4lIHNlbGVjdChzbHVnLHVybHMsIGxvZ28sIGNhdGVnb3J5KSAlPiUgDQogIHVubmVzdCh1cmxzKSAlPiUgZmlsdGVyKG5hbWUgJWluJSBjKCJyZWRkaXQiLCJ0d2l0dGVyIikpICU+JQ0KICBzZWxlY3Qoc2x1Zyx1cmwsbG9nbykNCmM8LWZ1bGxfam9pbihhLGNvaW5faGlzdCwgYnk9InNsdWciKSAlPiUgbXV0YXRlKGNsb3NlPSByb3VuZChjbG9zZSwyKSkNCg0KYyR1cmwgPC0gcGFzdGUwKCI8YSBocmVmPSciLGMkdXJsLCInPiIsYyR1cmwsIjwvYT4iKQ0KYyRsb2dvPC0gcGFzdGUwKCInPGltZyBzcmM9IiwgYyRsb2dvLCAiPjwvaW1nPiciKQ0KZGF0YXRhYmxlKGMsZXNjYXBlPUZBTFNFLCBjbGFzcz0iY2VsbC1ib3JkZXIgc3RyaXBlIiwgZXh0ZW5zaW9ucyA9IGMoIkJ1dHRvbnMiLCJGaXhlZENvbHVtbnMiKSwNCiAgICAgICAgICBvcHRpb25zID0gbGlzdChkb20gPSAnQmxmcnRpcCcsDQogICAgICAgICAgICAgICAgICAgICAgICAgZml4ZWRDb2x1bW5zPWxpc3QobGVmdENvbHVtbnM9MiksDQogICAgICAgICAgICAgICAgICAgICAgICAgYnV0dG9ucyA9IGMoJ2NvcHknLCAnY3N2JywgJ2V4Y2VsJywgJ3BkZicsICdwcmludCcpLCANCiAgICAgICAgICAgICAgICAgICAgICAgICBwYWdlTGVuZ3RoID0gNiwgYXV0b1dpZHRoID0gVFJVRSApKSAlPiUNCiAgZm9ybWF0U3R5bGUoInZvbHVtZSIsDQogICAgICAgICAgICAgIGJhY2tncm91bmQgPSBzdHlsZUNvbG9yQmFyKGMkdm9sdW1lLCAnZGFya2N5YW4nKSwNCiAgICAgICAgICAgICAgYmFja2dyb3VuZFNpemUgPSAnMTAwJSA5MCUnLA0KICAgICAgICAgICAgICBiYWNrZ3JvdW5kUmVwZWF0ID0gJ25vLXJlcGVhdCcsDQogICAgICAgICAgICAgIGJhY2tncm91bmRQb3NpdGlvbiA9ICdjZW50ZXInKQ0KDQpgYGANCg0KIyMjIDxGT05UIENPTE9SPSJkM2E0NmEiPioqQ8OzZGlnbyoqPC9GT05UPg0KDQpgYGB7cixldmFsPUZBTFNFLCBpbmNsdWRlPVRSVUV9DQpjb2lucyA8LSBjcnlwdG9fbGlzdChvbmx5X2FjdGl2ZT1UUlVFKQ0KY29pbl9oaXN0IDwtIGNyeXB0b19oaXN0b3J5KGNvaW5zLCBsaW1pdD01MDAsIHN0YXJ0X2RhdGU9IjIwMjExMTMwIiwgZW5kX2RhdGU9IjIwMjExMTMwIikgJT4lDQogIGZpbHRlcih0aW1lc3RhbXA9PSIyMDIxLTExLTMwIDIzOjU5OjU5IikgJT4lIHNlbGVjdChzbHVnLHN5bWJvbCxjbG9zZSwgdm9sdW1lKQ0KDQoNCmNvaW5faW5mbzwtIGNyeXB0b19pbmZvKGNvaW5zLGxpbWl0PTUwMCkNCg0KDQphPC1jb2luX2luZm8gJT4lIHNlbGVjdChzbHVnLHVybHMsIGxvZ28sIGNhdGVnb3J5KSAlPiUgDQogIHVubmVzdCh1cmxzKSAlPiUgZmlsdGVyKG5hbWUgJWluJSBjKCJyZWRkaXQiLCJ0d2l0dGVyIikpICU+JQ0KICBzZWxlY3Qoc2x1Zyx1cmwsbG9nbykNCmM8LWZ1bGxfam9pbihhLGNvaW5faGlzdCwgYnk9InNsdWciKSAlPiUgbXV0YXRlKGNsb3NlPSByb3VuZChjbG9zZSwyKSkNCg0KYyR1cmwgPC0gcGFzdGUwKCI8YSBocmVmPSciLGMkdXJsLCInPiIsYyR1cmwsIjwvYT4iKQ0KYyRsb2dvPC0gcGFzdGUwKCInPGltZyBzcmM9IiwgYyRsb2dvLCAiPjwvaW1nPiciKQ0KZGF0YXRhYmxlKGMsZXNjYXBlPUZBTFNFLCBjbGFzcz0iY2VsbC1ib3JkZXIgc3RyaXBlIiwgZXh0ZW5zaW9ucyA9IGMoIkJ1dHRvbnMiLCJGaXhlZENvbHVtbnMiKSwNCiAgICAgICAgICBvcHRpb25zID0gbGlzdChkb20gPSAnQmxmcnRpcCcsDQogICAgICAgICAgICAgICAgICAgICAgICAgZml4ZWRDb2x1bW5zPWxpc3QobGVmdENvbHVtbnM9MiksDQogICAgICAgICAgICAgICAgICAgICAgICAgYnV0dG9ucyA9IGMoJ2NvcHknLCAnY3N2JywgJ2V4Y2VsJywgJ3BkZicsICdwcmludCcpLCANCiAgICAgICAgICAgICAgICAgICAgICAgICBwYWdlTGVuZ3RoID0gNiwgYXV0b1dpZHRoID0gVFJVRSApKSAlPiUNCiAgZm9ybWF0U3R5bGUoInZvbHVtZSIsDQogICAgICAgICAgICAgIGJhY2tncm91bmQgPSBzdHlsZUNvbG9yQmFyKGMkdm9sdW1lLCAnZGFya2N5YW4nKSwNCiAgICAgICAgICAgICAgYmFja2dyb3VuZFNpemUgPSAnMTAwJSA5MCUnLA0KICAgICAgICAgICAgICBiYWNrZ3JvdW5kUmVwZWF0ID0gJ25vLXJlcGVhdCcsDQogICAgICAgICAgICAgIGJhY2tncm91bmRQb3NpdGlvbiA9ICdjZW50ZXInKQ0KDQpgYGANCg0KPGJyPg0KDQojIDUuIEJpdGNvaW4gDQoNCiMjIDUuMSBFdm9sdWNpw7NuIGRlIGxvcyBwcmVjaW9zLiB7LnRhYnNldH0NCg0KIyMjIDxGT05UIENPTE9SPSJkM2E0NmEiPioqRXZvbHVjacOzbioqPC9GT05UPg0KDQpBc8OtIGhhIGV2b2x1Y2lvbmFkbyBlbiBwcmVjaW8gZGUgQml0Y29pbiBlbiBsb3Mgw7psdGltb3MgYcOxb3M6DQoNCmBgYHtyLCBlY2hvPUZBTFNFfQ0KY29pbl9CaXRjb2luIDwtIHJlYWRfY3N2KCIuL2RhdG9zL2NvaW5fQml0Y29pbi5jc3YiKQ0KQlRDX2ltYWdlIDwtICJodHRwczovL2Nkbi5waXhhYmF5LmNvbS9waG90by8yMDE4LzAyLzAyLzEzLzUxL2JpdGNvaW4tMzEyNTQ4OF8xMjgwLnBuZyINCmE8LWNvaW5fQml0Y29pbiAlPiUgc2VsZWN0KE5hbWUsIERhdGUsIENsb3NlLCBWb2x1bWUpICU+JSBtdXRhdGUoaW1hZ2VuID0gQlRDX2ltYWdlKQ0KDQphJG1vbnRoIDwtIGZsb29yX2RhdGUoYSREYXRlLCAibW9udGgiKQ0KDQoNCmdncGxvdChhLCBhZXMoRGF0ZSwgQ2xvc2UpKSArIA0KICBnZW9tX3BhdGgoYWVzKGNvbG91cj0iZ29sZGVucm9kMSIpKSArIA0KICBnZW9tX3BvaW50KCBhZXMoZ3JvdXA9bW9udGgsIGNvbG91cj0gImdvbGRlbnJvZDEiLCBhbHBoYSA9IDAuNSkpICsNCiAgZ2VvbV9pbWFnZShhZXMoaW1hZ2UgPSBCVENfaW1hZ2UpLA0KICAgICAgICAgICAgIHNpemUgPSAwLjA2KSArDQogIHRyYW5zaXRpb25fcmV2ZWFsKERhdGUpICsNCiAgdGhlbWUoYXhpcy5saW5lID0gZWxlbWVudF9saW5lKGNvbG91ciA9ICJjaG9jb2xhdGUxIiksDQogICAgICAgIHBhbmVsLmJhY2tncm91bmQgPSBlbGVtZW50X3JlY3QoZmlsbCA9ICIjZmJmN2YwIiksDQogICAgICAgIHBsb3QuYmFja2dyb3VuZCA9IGVsZW1lbnRfcmVjdChmaWxsID0gIiNmYmY3ZjAiLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3VyID0gIiNmYmY3ZjAiKSkgK2xhYnMoeSA9ICJQcmVjaW8iKSArDQogIHRoZW1lKGxlZ2VuZC5wb3NpdGlvbiA9ICJub25lIikNCmBgYA0KDQojIyMgPEZPTlQgQ09MT1I9ImQzYTQ2YSI+KipDw7NkaWdvKio8L0ZPTlQ+DQoNCmBgYHtyLCBldmFsPUZBTFNFLCBpbmNsdWRlPVRSVUV9DQpjb2luX0JpdGNvaW4gPC0gcmVhZF9jc3YoIi4vZGF0b3MvY29pbl9CaXRjb2luLmNzdiIpDQpCVENfaW1hZ2UgPC0gImh0dHBzOi8vY2RuLnBpeGFiYXkuY29tL3Bob3RvLzIwMTgvMDIvMDIvMTMvNTEvYml0Y29pbi0zMTI1NDg4XzEyODAucG5nIg0KYTwtY29pbl9CaXRjb2luICU+JSBzZWxlY3QoTmFtZSwgRGF0ZSwgQ2xvc2UsIFZvbHVtZSkgJT4lIG11dGF0ZShpbWFnZW4gPSBCVENfaW1hZ2UpDQoNCmEkbW9udGggPC0gZmxvb3JfZGF0ZShhJERhdGUsICJtb250aCIpDQoNCg0KZ2dwbG90KGEsIGFlcyhEYXRlLCBDbG9zZSkpICsgDQogIGdlb21fcGF0aChhZXMoY29sb3VyPSJnb2xkZW5yb2QxIikpICsgDQogIGdlb21fcG9pbnQoIGFlcyhncm91cD1tb250aCwgY29sb3VyPSAiZ29sZGVucm9kMSIsIGFscGhhID0gMC41KSkgKw0KICBnZW9tX2ltYWdlKGFlcyhpbWFnZSA9IEJUQ19pbWFnZSksDQogICAgICAgICAgICAgc2l6ZSA9IDAuMDYpICsNCiAgdHJhbnNpdGlvbl9yZXZlYWwoRGF0ZSkgKw0KICB0aGVtZShheGlzLmxpbmUgPSBlbGVtZW50X2xpbmUoY29sb3VyID0gImNob2NvbGF0ZTEiKSwNCiAgICAgICAgcGFuZWwuYmFja2dyb3VuZCA9IGVsZW1lbnRfcmVjdChmaWxsID0gIiNmYmY3ZjAiKSwNCiAgICAgICAgcGxvdC5iYWNrZ3JvdW5kID0gZWxlbWVudF9yZWN0KGZpbGwgPSAiI2ZiZjdmMCIsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvdXIgPSAiI2ZiZjdmMCIpKSArbGFicyh5ID0gIlByZWNpbyIpICsNCiAgdGhlbWUobGVnZW5kLnBvc2l0aW9uID0gIm5vbmUiKQ0KYGBgDQoNCiMjIyA8Rk9OVCBDT0xPUj0iZDNhNDZhIj4qKkV2b2x1Y2nDs24gMioqPC9GT05UPg0KDQpgYGB7ciwgZWNobz1GQUxTRX0NCmRhdGFfdG90YWwyIDwtIHJpbzo6aW1wb3J0KGhlcmU6OmhlcmUoImRhdG9zIiwgImRhdGFfdG90YWwyLmNzdiIpKQ0KQlRDIDwtIGRhdGFfdG90YWwyICU+JSBmaWx0ZXIoU3ltYm9sID09ICJCVEMiKSAlPiUgc2VsZWN0KERhdGUsQ2xvc2UpDQpHMiA8LSBCVEMgJT4lIGdncGxvdCgpICsgZ2VvbV9saW5lKGFlcyhEYXRlLENsb3NlKSkgKyBzY2FsZV95X2NvbnRpbnVvdXModHJhbnMgPSAibG9nMTAiKSArIHRoZW1lKHBhbmVsLmJhY2tncm91bmQgPSBlbGVtZW50X3JlY3QoZmlsbCA9ICIjZmJmN2YwIixjb2xvdXIgPSAiI2ZiZjdmMCIpKSArbGFicyhjb2xvdXIgPSAiY29sb3VyX3VwIiwgZmlsbCA9ICJmaWxsX3VwIikgKyB0aGVtZShwbG90LmJhY2tncm91bmQgPSBlbGVtZW50X3JlY3QoZmlsbCA9ICIjZmJmN2YwIikpDQpHMg0KYGBgDQoNCiMjIyA8Rk9OVCBDT0xPUj0iZDNhNDZhIj4qKlZlbGFzKio8L0ZPTlQ+DQoNCmBgYHtyLCBlY2hvPUZBTFNFfQ0KQlRDY2FuZGxlPC0gZGF0YV90b3RhbDIgJT4lIGZpbHRlcihTeW1ib2wgPT0gIkJUQyIpICU+JSBzZWxlY3QoRGF0ZSxMb3csSGlnaCxPcGVuLENsb3NlKQ0KQlRDY2FuZGxlc2VtYW5hbCA8LSBCVENjYW5kbGUgICU+JSANCiAgICBtdXRhdGUoYW5pbyA9IGZvcm1hdChEYXRlLCAiJVkiKSwNCiAgICAgICAgICAgZGlhX3NlbWFuYV9udW0gPSBmb3JtYXQoRGF0ZSwgIiVXIikpICU+JSANCiAgICBncm91cF9ieShhbmlvLGRpYV9zZW1hbmFfbnVtKSAlPiUgDQogICAgc3VtbWFyaXNlKHNoaWdoID0gbWF4KEhpZ2gpLCBzbG93PW1pbihMb3cpLA0KICAgICAgICAgICAgICBEYXRlID0gbWF4KERhdGUpLCBzY2xvc2UgPWxhc3QoQ2xvc2UpLCBzb3Blbj1maXJzdChPcGVuKSkgJT4lIGZpbHRlcihEYXRlPmFzLkRhdGUoIjIwMTctMDEtMDEiKSkNCkczIDwtIEJUQ2NhbmRsZXNlbWFuYWwgJT4lIGdncGxvdChhZXMoRGF0ZSxzY2xvc2UpKSArIGdlb21fY2FuZGxlc3RpY2soYWVzKG9wZW4gPSBzb3BlbiwgaGlnaCA9IHNoaWdoLCBsb3cgPSBzbG93LCBjbG9zZSA9IHNjbG9zZSwgY29sb3VyX3VwPSJkYXJrZ3JlZW4iLCBmaWxsX3VwPSJkYXJrZ3JlZW4iKSkNCkczICsgdGhlbWUocGFuZWwuYmFja2dyb3VuZCA9IGVsZW1lbnRfcmVjdChmaWxsID0gIiNmYmY3ZjAiLA0KICAgIGNvbG91ciA9ICIjZmJmN2YwIikpICtsYWJzKGNvbG91ciA9ICJjb2xvdXJfdXAiLCBmaWxsID0gImZpbGxfdXAiKQ0KYGBgDQoNCkFxdcOtIHBvZGVtb3MgdmVyIHVuIGdyw6FmaWNvIGRlIHZlbGFzIGRlIGxhcyDDumx0aW1hcyBzZW1hbmFzOg0KDQpgYGB7ciwgZWNobz1GQUxTRX0NCnBvcnRmb2xpbyA9IGMoIkJUQy1VU0QiKQ0KZ2V0U3ltYm9scyhwb3J0Zm9saW8sIHNyYyA9ICJ5YWhvbyIsIGZyb20gPSAiMjAxMS0wMS0wMSIpDQoNCg0KY2hhcnRTZXJpZXMoYEJUQy1VU0RgLA0KICAgICAgICAgICAgdHlwZT0iY2FuZGxlc3RpY2tzIiwNCiAgICAgICAgICAgIHN1YnNldCA9ICIyMDIxLTY6OjIwMjEtMTEiLA0KICAgICAgICAgICAgdXAuY29sID0gImdyZWVuIiwNCiAgICAgICAgICAgIGRvd24uY29sID0gInJlZCIsDQogICAgICAgICAgICB0aGVtZT1jaGFydFRoZW1lKCJ3aGl0ZSIpKQ0KDQpgYGANCg0KDQojIyMgPEZPTlQgQ09MT1I9ImQzYTQ2YSI+KipDw7NkaWdvKio8L0ZPTlQ+DQoNCmBgYHtyLCBpbmNsdWRlPVRSVUUsIGV2YWw9RkFMU0V9DQojUHJpbWVybw0KY29pbl9CaXRjb2luIDwtIHJlYWRfY3N2KCIuL2RhdG9zL2NvaW5fQml0Y29pbi5jc3YiKQ0KQlRDX2ltYWdlIDwtICJodHRwczovL2Nkbi5waXhhYmF5LmNvbS9waG90by8yMDE4LzAyLzAyLzEzLzUxL2JpdGNvaW4tMzEyNTQ4OF8xMjgwLnBuZyINCmE8LWNvaW5fQml0Y29pbiAlPiUgc2VsZWN0KE5hbWUsIERhdGUsIENsb3NlLCBWb2x1bWUpICU+JSBtdXRhdGUoaW1hZ2VuID0gQlRDX2ltYWdlKQ0KDQphJG1vbnRoIDwtIGZsb29yX2RhdGUoYSREYXRlLCAibW9udGgiKQ0KDQoNCmdncGxvdChhLCBhZXMoRGF0ZSwgQ2xvc2UpKSArIA0KICBnZW9tX3BhdGgoYWVzKGNvbG91cj0iZ29sZGVucm9kMSIpKSArIA0KICBnZW9tX3BvaW50KCBhZXMoZ3JvdXA9bW9udGgsIGNvbG91cj0gImdvbGRlbnJvZDEiLCBhbHBoYSA9IDAuNSkpICsNCiAgZ2VvbV9pbWFnZShhZXMoaW1hZ2UgPSBCVENfaW1hZ2UpLA0KICAgICAgICAgICAgIHNpemUgPSAwLjA2KSArDQogIHRyYW5zaXRpb25fcmV2ZWFsKERhdGUpICsNCiAgdGhlbWUoYXhpcy5saW5lID0gZWxlbWVudF9saW5lKGNvbG91ciA9ICJjaG9jb2xhdGUxIiksDQogICAgICAgIHBhbmVsLmJhY2tncm91bmQgPSBlbGVtZW50X3JlY3QoZmlsbCA9ICIjZmJmN2YwIiksDQogICAgICAgIHBsb3QuYmFja2dyb3VuZCA9IGVsZW1lbnRfcmVjdChmaWxsID0gIiNmYmY3ZjAiLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3VyID0gIiNmYmY3ZjAiKSkgK2xhYnMoeSA9ICJQcmVjaW8iKSANCg0KI1NlZ3VuZG8NCkJUQyA8LSBkYXRhX3RvdGFsMiAlPiUgZmlsdGVyKFN5bWJvbCA9PSAiQlRDIikgJT4lIHNlbGVjdChEYXRlLENsb3NlKQ0KRzIgPC0gQlRDICU+JSBnZ3Bsb3QoKSArIGdlb21fbGluZShhZXMoRGF0ZSxDbG9zZSkpICsgc2NhbGVfeV9jb250aW51b3VzKHRyYW5zID0gImxvZzEwIikgKyB0aGVtZShwYW5lbC5iYWNrZ3JvdW5kID0gZWxlbWVudF9yZWN0KGZpbGwgPSAiI2ZiZjdmMCIsY29sb3VyID0gIiNmYmY3ZjAiKSkgK2xhYnMoY29sb3VyID0gImNvbG91cl91cCIsIGZpbGwgPSAiZmlsbF91cCIpICsgdGhlbWUocGxvdC5iYWNrZ3JvdW5kID0gZWxlbWVudF9yZWN0KGZpbGwgPSAiI2ZiZjdmMCIpKQ0KRzINCg0KI1RlcmNlcm8NCkJUQ2NhbmRsZTwtIGRhdGFfdG90YWwyICU+JSBmaWx0ZXIoU3ltYm9sID09ICJCVEMiKSAlPiUgc2VsZWN0KERhdGUsTG93LEhpZ2gsT3BlbixDbG9zZSkNCkJUQ2NhbmRsZXNlbWFuYWwgPC0gQlRDY2FuZGxlICAlPiUgDQogICAgbXV0YXRlKGFuaW8gPSBmb3JtYXQoRGF0ZSwgIiVZIiksDQogICAgICAgICAgIGRpYV9zZW1hbmFfbnVtID0gZm9ybWF0KERhdGUsICIlVyIpKSAlPiUgDQogICAgZ3JvdXBfYnkoYW5pbyxkaWFfc2VtYW5hX251bSkgJT4lIA0KICAgIHN1bW1hcmlzZShzaGlnaCA9IG1heChIaWdoKSwgc2xvdz1taW4oTG93KSwNCiAgICAgICAgICAgICAgRGF0ZSA9IG1heChEYXRlKSwgc2Nsb3NlID1sYXN0KENsb3NlKSwgc29wZW49Zmlyc3QoT3BlbikpICU+JSBmaWx0ZXIoRGF0ZT5hcy5EYXRlKCIyMDE3LTAxLTAxIikpDQpHMyA8LSBCVENjYW5kbGVzZW1hbmFsICU+JSBnZ3Bsb3QoYWVzKERhdGUsc2Nsb3NlKSkgKyBnZW9tX2NhbmRsZXN0aWNrKGFlcyhvcGVuID0gc29wZW4sIGhpZ2ggPSBzaGlnaCwgbG93ID0gc2xvdywgY2xvc2UgPSBzY2xvc2UsIGNvbG91cl91cD0iZGFya2dyZWVuIiwgZmlsbF91cD0iZGFya2dyZWVuIikpDQpHMyArIHRoZW1lKHBhbmVsLmJhY2tncm91bmQgPSBlbGVtZW50X3JlY3QoZmlsbCA9ICIjZmJmN2YwIiwNCiAgICBjb2xvdXIgPSAiI2ZiZjdmMCIpKSArbGFicyhjb2xvdXIgPSAiY29sb3VyX3VwIiwgZmlsbCA9ICJmaWxsX3VwIikNCg0KcG9ydGZvbGlvID0gYygiQlRDLVVTRCIpDQpnZXRTeW1ib2xzKHBvcnRmb2xpbywgc3JjID0gInlhaG9vIiwgZnJvbSA9ICIyMDExLTAxLTAxIikNCg0KDQojQ3VhcnRvDQpjaGFydFNlcmllcyhgQlRDLVVTRGAsDQogICAgICAgICAgICB0eXBlPSJjYW5kbGVzdGlja3MiLA0KICAgICAgICAgICAgc3Vic2V0ID0gIjIwMjEtNjo6MjAyMS0xMSIsDQogICAgICAgICAgICB1cC5jb2wgPSAiZ3JlZW4iLA0KICAgICAgICAgICAgZG93bi5jb2wgPSAicmVkIiwNCiAgICAgICAgICAgIHRoZW1lPWNoYXJ0VGhlbWUoIndoaXRlIikpDQoNCmBgYA0KDQo8YnI+DQoNCiMjIDUuMiBQcmVkaWNjacOzbiBkZWwgcHJlY2lvIHsudGFic2V0fQ0KDQojIyMgPEZPTlQgQ09MT1I9ImQzYTQ2YSI+KipQcmVkaWNjacOzbioqPC9GT05UPg0KDQpQYXJhICJwcmVkZWNpciIgZWwgcHJlY2lvIGhlbW9zIHVzYWRvIGVsIHBhcXVldGUgUHJvcGhldC4gRWwgcGFxdWV0ZSBQcm9waGV0IGZ1ZSBjcmVhZG8gcG9yIGVsIGVxdWlwbyBEYXRhIFNjaWVuY2UgZGUgRmFjZWJvb2sgeSBub3MgcGVybWl0ZSByZWFsaXphciBhbsOhbGlzaXMgZGUgdGVuZGVuY2lhLCBjaWNsb3MgeSBlc3RhY2lvbmFsaWRhZCwgYWRlbcOhcyBkZSB1biBwcm9uw7NzdGljbyBkZSBwcmVjaW8uDQpFc3RhIHByZWRpY2Npw7NuIHNlIGhhY2UgdGVuaWVuZG8gZW4gY3VlbnRhIGNpZXJ0b3MgaW5kaWNhZG9yZXMsIGNvbW8gdmVyZW1vcyBtw6FzIGFkZWxhbnRlLCBlbCBiaXRjb2luIGVzIG11eSB2b2zDoXRpbCwgcGVybyBlc3RhIHByZWRpY2Npw7NuLCBiYWpvIHVuIGVycm9yLCBzZSBhcHJveGltYSBhIGxhIHJlYWxpZGFkIGNvbiBiYXN0YW50ZSBhY2llcnRvLg0KDQpgYGB7ciwgZWNobz1GQUxTRX0NCmxpYnJhcnkocHJvcGhldCkNCmxpYnJhcnkocmlvKQ0KbGlicmFyeShnZ3Bsb3QyKQ0KbGlicmFyeSh0aWR5dmVyc2UpDQpsaWJyYXJ5KFRUUikNCmxpYnJhcnkocXVhbnRtb2QpDQpsaWJyYXJ5KHRpZHlyKQ0KbGlicmFyeShyZWFkcikNCmxpYnJhcnkocHJvcGhldCkNCmxpYnJhcnkoUGVyZm9ybWFuY2VBbmFseXRpY3MpDQpkYXRhX2J0YyA8LSBkYXRhX3RvdGFsICU+JSBmaWx0ZXIoTmFtZSA9PSAiQml0Y29pbiIpDQoNCmRhdGFfYnRjIDwtIGRhdGFfYnRjICU+JSBzZWxlY3QoRGF0ZSwgQ2xvc2UpDQoNCmRhdGFfYnRjIDwtIGRhdGFfYnRjICU+JSByZW5hbWUoZHMgPSBEYXRlLCB5ID0gQ2xvc2UpDQoNCm1vZGVsbzIgPC0gcHJvcGhldChkYXRhX2J0YykNCmhvcml6b250ZTIgPC0gbWFrZV9mdXR1cmVfZGF0YWZyYW1lKG1vZGVsbzIsIHBlcmlvZHMgPSAzNjUpDQoNCg0KZm9yZWNhc3QyIDwtIHByZWRpY3QobW9kZWxvMiwgaG9yaXpvbnRlMikNCnRhaWwoZm9yZWNhc3QyW2MoJ2RzJywneWhhdCcsJ3loYXRfbG93ZXInLCd5aGF0X3VwcGVyJyldKQ0KDQojcGFyYSBvYnNlcnZhciBsb3MgZGF0b3MgZGUgbGEgcHJlZGljY2nDs24gZGUgZm9ybWEgaW50dWl0aXZhIG1lZGlhbnRlIHVuIGdyYWZpY28gdXRpbGl6YXJlbW9zIGxhIGluc3RydWNjacOzbiBkeXBsb3QucHJvcGhldC4NCg0KZ3JfcHJlZGljYzIgPC0gZHlwbG90LnByb3BoZXQobW9kZWxvMiwgZm9yZWNhc3QyLCBtYWluID0gIlByZWRpY2Npb24gUHJlY2lvIEJpdGNvaW4iKQ0KZ3JfcHJlZGljYzINCg0KYGBgDQoNCiMjIyA8Rk9OVCBDT0xPUj0iZDNhNDZhIj4qKkPDs2RpZ28qKjwvRk9OVD4NCg0KYGBge3IsIGV2YWw9RkFMU0UsIGluY2x1ZGU9VFJVRX0NCmxpYnJhcnkocHJvcGhldCkNCmxpYnJhcnkocmlvKQ0KbGlicmFyeShnZ3Bsb3QyKQ0KbGlicmFyeSh0aWR5dmVyc2UpDQpsaWJyYXJ5KFRUUikNCmxpYnJhcnkocXVhbnRtb2QpDQpsaWJyYXJ5KHRpZHlyKQ0KbGlicmFyeShyZWFkcikNCmxpYnJhcnkocHJvcGhldCkNCmxpYnJhcnkoUGVyZm9ybWFuY2VBbmFseXRpY3MpDQpkYXRhX2J0YyA8LSBkYXRhX3RvdGFsICU+JSBmaWx0ZXIoTmFtZSA9PSAiQml0Y29pbiIpDQoNCmRhdGFfYnRjIDwtIGRhdGFfYnRjICU+JSBzZWxlY3QoRGF0ZSwgQ2xvc2UpDQoNCmRhdGFfYnRjIDwtIGRhdGFfYnRjICU+JSByZW5hbWUoZHMgPSBEYXRlLCB5ID0gQ2xvc2UpDQoNCm1vZGVsbzIgPC0gcHJvcGhldChkYXRhX2J0YykNCmhvcml6b250ZTIgPC0gbWFrZV9mdXR1cmVfZGF0YWZyYW1lKG1vZGVsbzIsIHBlcmlvZHMgPSAzNjUpDQoNCg0KZm9yZWNhc3QyIDwtIHByZWRpY3QobW9kZWxvMiwgaG9yaXpvbnRlMikNCnRhaWwoZm9yZWNhc3QyW2MoJ2RzJywneWhhdCcsJ3loYXRfbG93ZXInLCd5aGF0X3VwcGVyJyldKQ0KDQojcGFyYSBvYnNlcnZhciBsb3MgZGF0b3MgZGUgbGEgcHJlZGljY2nDs24gZGUgZm9ybWEgaW50dWl0aXZhIG1lZGlhbnRlIHVuIGdyYWZpY28gdXRpbGl6YXJlbW9zIGxhIGluc3RydWNjacOzbiBkeXBsb3QucHJvcGhldC4NCg0KZ3JfcHJlZGljYzIgPC0gZHlwbG90LnByb3BoZXQobW9kZWxvMiwgZm9yZWNhc3QyLCBtYWluID0gIlByZWRpY2Npb24gUHJlY2lvIEJpdGNvaW4iKQ0KZ3JfcHJlZGljYzINCg0KYGBgDQoNCjxicj4NCg0KIyA2LiBBbsOhbGlzaXMgdMOpY25pY28uIA0KDQojIyA2LjEgQklUQ09JTiB7LnRhYnNldH0NCg0KIyMjIDxGT05UIENPTE9SPSJkM2E0NmEiPioqQ2ljbG9zKio8L0ZPTlQ+DQoNClNlIHB1ZWRlIGRlY2lyIHF1ZSBsb3MgY2ljbG9zIGRlIGJpdGNvaW4gbG9zIG1hcmNhbiBsb3MgaGFsdmluZ3MsIHF1ZSBzb24gZnJhY2Npb25hbWllbnRvcyBkZWwgdm9sdW1lbiBkZSBCVEMgYSBsYSBtaXRhZC4gSGEgaGFiaWRvIGhhbHZpbmdzIGVuIDIwMTIsIDIwMTYgeSAyMDIwLCB5IGFxdcOtIHBvZGVtb3Mgb2JzZXJ2YXIgbG9zIGRvcyDDumx0aW1vczoNCg0KYGBge3IsIGVjaG89RkFMU0V9DQpHNCA8LSBHMisgZ2VvbV92bGluZSh4aW50ZXJjZXB0PXVuY2xhc3MoYXMuRGF0ZSgiMjAxNi0wNy0wOSIpKSkrIGdlb21fdmxpbmUoeGludGVyY2VwdD11bmNsYXNzKGFzLkRhdGUoIjIwMjAtMDUtMTEiKSkpKyBhbm5vdGF0ZShnZW9tID0gInRleHQiLCB4ID0gYXMuRGF0ZSgiMjAxNi0wNy0wOSIpLCB5ID0gNTAwMDAsIGxhYmVsID0gIjLCukhhbHZpbmc6OS03LTIwMTYiLCBzaXplID0gMykrIGFubm90YXRlKGdlb20gPSAidGV4dCIsIHggPSBhcy5EYXRlKCIyMDIwLTAzLTAxIiksIHkgPSA1MDAwMCwgbGFiZWwgPSAiM8K6SGFsdmluZzoxMS01LTIwMjAiLCBzaXplID0gMykgKyB0aGVtZShwYW5lbC5iYWNrZ3JvdW5kID0gZWxlbWVudF9yZWN0KGZpbGwgPSAiI2ZiZjdmMCIsY29sb3VyID0gIiNmYmY3ZjAiKSkgK2xhYnMoY29sb3VyID0gImNvbG91cl91cCIsIGZpbGwgPSAiZmlsbF91cCIpICsgdGhlbWUocGxvdC5iYWNrZ3JvdW5kID0gZWxlbWVudF9yZWN0KGZpbGwgPSAiI2ZiZjdmMCIpKQ0KRzQNCg0KDQpgYGANCg0KRGVzcHXDqXMgZGUgY2FkYSBoYWx2aW5nIHBvZGVtb3Mgb2JzZXJ2YXIgdW5hIHN1YmlkYSBtw6FzIGNvbnN0YW50ZSBkZWwgcHJlY2lvLCBsbyBjdWFsIGVzIGNvaGVyZW50ZSBjb24gZWwgaGVjaG8gZGUgcXVlIGxhIG9mZXJ0YSBlcyByZWR1Y2lkYSBkZXNwdcOpcyBkZSBjYWRhIHVuby4gVHJhcyBsYSBzdWJpZGEgc2UgcHVlZGUgYXByZWNpYXIgdW5hIGVzdGFiaWxpemFjacOzbiBkZWwgcHJlY2lvIGVuIGZvcm1hIGRlIFUuIEVsIMO6bmljbyBjaWNsbyBxdWUgc2UgbXVlc3RyYSBjb21wbGV0YW1lbnRlIGVzIGVsIGRlIDIwMTYtMjAyMC4NCg0KYGBge3IsIGVjaG89RkFMU0V9DQpHNSA8LSBHNCArDQphbm5vdGF0ZSgic2VnbWVudCIsIHggPSBhcy5EYXRlKCIyMDEzLTA0LTI5IiksIHhlbmQgPSBhcy5EYXRlKCIyMDEzLTEwLTAxIiksIHkgPSAyMDAsIHllbmQgPSA5MDAsIGNvbG91ciA9ICJibHVlIikgKw0KYW5ub3RhdGUoInNlZ21lbnQiLCB4ID0gYXMuRGF0ZSgiMjAxNC0wMS0yMCIpLCB4ZW5kID0gYXMuRGF0ZSgiMjAxNi0wNC0wMSIpLCB5ID0gNjAwLCB5ZW5kID0gNjAwLCBjb2xvdXIgPSAiYmx1ZSIpICsNCmFubm90YXRlKCJzZWdtZW50IiwgeCA9IGFzLkRhdGUoIjIwMTYtMDYtMDEiKSwgeGVuZCA9IGFzLkRhdGUoIjIwMTctMTEtMTUiKSwgeSA9IDEyMDAsIHllbmQgPSAyMDAwMCwgY29sb3VyID0gImJsdWUiKSArDQphbm5vdGF0ZSgic2VnbWVudCIsIHggPSBhcy5EYXRlKCIyMDE4LTAyLTE1IiksIHhlbmQgPSBhcy5EYXRlKCIyMDIwLTA1LTA1IiksIHkgPSA5MDAwLCB5ZW5kID0gOTAwMCwgY29sb3VyID0gImJsdWUiKSArDQphbm5vdGF0ZSgic2VnbWVudCIsIHggPSBhcy5EYXRlKCIyMDIwLTA1LTMxIiksIHhlbmQgPSBhcy5EYXRlKCIyMDIxLTAzLTA1IiksIHkgPSAxNTAwMCAsIHllbmQgPSA3NTAwMCwgY29sb3VyID0gImJsdWUiKQ0KRzUNCg0KYGBgDQoNCg0KIyMjIDxGT05UIENPTE9SPSJkM2E0NmEiPioqTWVkaWEgbcOzdmlsKio8L0ZPTlQ+DQoNCkVsIG1lcmNhZG8gcHVlZGUgc3ViZXN0aW1hciBvIGluZnJhdmFsb3JhciB1biBhY3Rpdm8gZGVwZW5kaWVuZG8gZGVsIHNlbnRpbWllbnRvIGRlIG1lcmNhZG8gKHNpIGxhIGdlbnRlIGVzIG9wdGltaXN0YSBvIHBlc2ltaXN0YSkuIFBhcmEgY29ycmVnaXIgZXN0b3Mgc2VudGltaWVudG9zIGUgaW50ZW50YXIgZXN0aW1hciBlbCB2YWxvciBpbnRyw61uc2VjbyBkZWwgYWN0aXZvIHVzYW1vcyBsYXMgbWVkaWFzIG3Ds3ZpbGVzLCBxdWUgZWxpbWluYW4gZmx1Y3R1YWNpb25lcyBhIGNvcnRvIHBsYXpvIGZhY2lsaXRhbmRvIGFzw60gbGEgb2JzZXJ2YWNpw7NuIGRlIHRlbmRlbmNpYXMgYSBsYXJnbyBwbGF6by4gTGEgbWVkaWEgbcOzdmlsIGRlIDIwIHBlcmlvZG9zIGVzIGxhIG3DoXMgdXNhZGEuIEVzIGxhIG1lZGlhIGRlbCBwcmVjaW8gZW4gbG9zIMO6bHRpbW9zIDIwIHBlcmlvZG9zICgyMCBzZW1hbmFzKS4NCg0KYGBge3IsIGVjaG89RkFMU0V9DQoNCmNoYXJ0U2VyaWVzKGRhdG9zX2FuYWxpc2lzX2J0YywNCiAgICAgICAgICAgIHR5cGU9ImNhbmRsZXN0aWNrcyIsDQogICAgICAgICAgICBzdWJzZXQgPSAiMjAxOC0wMTo6MjAyMS0xMSIsDQogICAgICAgICAgICB1cC5jb2wgPSAiZ3JlZW4iLA0KICAgICAgICAgICAgZG93bi5jb2wgPSAicmVkIiwNCiAgICAgICAgICAgIHRoZW1lPWNoYXJ0VGhlbWUoIndoaXRlIikpDQphZGRTTUEoKQ0KDQoNCmBgYA0KQ29tbyBzZSBwdWVkZSBvYnNlcnZhciwgY3VhbmRvIEJpdGNvaW4gZXN0w6EgcG9yIGVuY2ltYSBkZSBsYSBtZWRpYTsgZXN0w6Egc3ViaWVuZG8sIHkgY3VhbmRvIGVzdMOhIHBvciBkZWJham87IGVzdMOhIGJhamFuZG8uDQoNCiMjIyA8Rk9OVCBDT0xPUj0iZDNhNDZhIj4qKlJFTEFUSVZFIFNUUkVOR0hUIElOREVYKio8L0ZPTlQ+DQoNCkVsIFJTSSBlcyB1biBpbmRpY2Fkb3IgZGUgdGlwbyBvc2NpbGFkb3IgcXVlIHJlZmxlamEgbGEgZnVlcnphIHJlbGF0aXZhIGRlIGxvcyBtb3ZpbWllbnRvcyBhbGNpc3RhcywgZW4gY29tcGFyYWNpw7NuIGNvbiBsb3MgbW92aW1pZW50b3MgYmFqaXN0YXMuIEVzIHV0aWxpemFkbyBwb3IgbG9zIHRyYWRlcnMgcGFyYSBtZWRpciBsYSBmdWVyemEgZGUgdW5hIHRlbmRlbmNpYSBlIGlkZW50aWZpY2FyIHNlw7FhbGVzIGRlIGZpbiBkZSB0ZW5kZW5jaWEuDQoNClJTSSA9IE1lZGlhIG3Ds3ZpbCBleHBvbmVuY2lhbCBkZSAnTicgcGVyw61vZG9zIGFsY2lzdGFzIC8gTWVkaWEgbcOzdmlsIGV4cG9uZW5jaWFsIGRlICdOJyBwZXLDrW9kb3MgYmFqaXN0YXMgKGVuIHZhbG9yIGFic29sdXRvKQ0KDQpUaWVuZSB1biB2YWxvciBkZSAwIGEgMTAwLCBzaSBlc3RhIHBvciBlbmNpbWEgZGUgNzAgaW5kaWNhIHNvYnJlY29tcHJhIChzZcOxYWwgZGUgdmVudGEpIHkgc2kgZXN0YSBwb3IgZGViYWpvIGRlIDMwIGluZGljYSBzb2JyZXZlbnRhIChzZcOxYWwgZGUgY29tcHJhKS4NCg0KYGBge3IsIGVjaG89RkFMU0V9DQpjaGFydFNlcmllcyhkYXRvc19hbmFsaXNpc19idGMsDQogICAgICAgICAgICB0eXBlPSJjYW5kbGVzdGlja3MiLA0KICAgICAgICAgICAgc3Vic2V0ID0gIjIwMTgtMDE6OjIwMjEtMTEiLA0KICAgICAgICAgICAgdXAuY29sID0gImdyZWVuIiwNCiAgICAgICAgICAgIGRvd24uY29sID0gInJlZCIsDQogICAgICAgICAgICB0aGVtZT1jaGFydFRoZW1lKCJ3aGl0ZSIpKQ0KYWRkUlNJKCkNCg0KYGBgDQoNCiMjIyA8Rk9OVCBDT0xPUj0iZDNhNDZhIj4qKk1BQ0QqKjwvRk9OVD4NCg0KTU9WSU5HIEFWRVJBR0UgQ09OVkVSR0VOQ0UgRElWRVJHRU5DRToNCkxhcyBiYW5kYXMgZGUgQm9sbGluZ2VyIHNvbiB1bmEgdMOpY25pY2EgbXV5IHBvcHVsYXIuIE11Y2hvcyB0cmFkZXJzIGNyZWVuIHF1ZSBjdWFudG8gbcOhcyBzZSBhY2VyY2FuIGxvcyBwcmVjaW9zIGEgbGEgYmFuZGEgc3VwZXJpb3IsIG3DoXMgc29icmVjb21wcmFkbyBlc3TDoSBlbCBtZXJjYWRvLCB5IGN1YW50byBtw6FzIHNlIGFjZXJjYW4gbG9zIHByZWNpb3MgYSBsYSBiYW5kYSBpbmZlcmlvciwgbcOhcyBzb2JyZXZlbmRpZG8gZXMgZWwgbWVyY2Fkby4gDQpFbiBlbCBncsOhZmljbyBxdWUgc2UgbXVlc3RyYSBhIGNvbnRpbnVhY2nDs24sIGxhcyBCYW5kYXMgZGUgQm9sbGluZ2VyIGFiYXJjYW4gbGEgTU1TIGRlIDIwIGTDrWFzIGRlbCBCaXRjb2luIGNvbiB1bmEgYmFuZGEgc3VwZXJpb3IgZSBpbmZlcmlvciBqdW50byBjb24gbG9zIG1vdmltaWVudG9zIGRpYXJpb3MgZGVsIHByZWNpby4gRGViaWRvIGEgcXVlIGxhIGRlc3ZpYWNpw7NuIGVzdMOhbmRhciBlcyB1bmEgbWVkaWRhIGRlIHZvbGF0aWxpZGFkLCBjdWFuZG8gbG9zIG1lcmNhZG9zIHNlIHZ1ZWx2ZW4gbcOhcyB2b2zDoXRpbGVzLCBsYXMgYmFuZGFzIHNlIGVuc2FuY2hhbjsgZHVyYW50ZSBwZXLDrW9kb3MgbWVub3Mgdm9sw6F0aWxlcywgbGFzIGJhbmRhcyBzZSBjb250cmFlbi4NCg0KYGBge3IsIGVjaG89RkFMU0V9DQpjaGFydFNlcmllcyhkYXRvc19hbmFsaXNpc19idGMsDQogICAgICAgICAgICB0eXBlPSJjYW5kbGVzdGlja3MiLA0KICAgICAgICAgICAgc3Vic2V0ID0gIjIwMTgtMDE6OjIwMjEtMTEiLA0KICAgICAgICAgICAgdXAuY29sID0gImdyZWVuIiwNCiAgICAgICAgICAgIGRvd24uY29sID0gInJlZCIsDQogICAgICAgICAgICB0aGVtZT1jaGFydFRoZW1lKCJ3aGl0ZSIpKQ0KYWRkTUFDRCgpDQoNCmBgYA0KDQojIyMgPEZPTlQgQ09MT1I9ImQzYTQ2YSI+KipNb21lbnR1bSoqPC9GT05UPg0KDQpFbCBNb21lbnR1bSAobW9tZW50bykgZXMgdW4gaW5kaWNhZG9yIHV0aWxpemFkbyBlbiBlbCBhbsOhbGlzaXMgdMOpY25pY28sIHF1ZSBtaWRlIGxhIHZlbG9jaWRhZCBjb24gbGEgcXVlIHZhcsOtYSBlbCBwcmVjaW8gZGUgdW5hIGFjY2nDs24gKGhhY2lhIGFycmliYSBvIGhhY2lhIGFiYWpvKSwgZW4gdW4gcGVyw61vZG8gZGUgdGllbXBvIGRldGVybWluYWRvLiAgVmllbmUgYSBzZXIgY29tbyBsYSBhY2VsZXJhY2nDs24uIFNpIGxvcyBwcmVjaW9zIHZhcsOtYW4gZW4gbGEgbWlzbWEgY2FudGlkYWQgdG9kb3MgbG9zIGTDrWFzIChtYW50aWVuZW4gbGEgbWlzbWEgdmVsb2NpZGFkKSBlbCBtb21lbnR1bSBlcyBjZXJvLiBTaSBsb3MgcHJlY2lvcyBzdWJlbiBjYWRhIGTDrWEgbcOhcyDigJRzZSBhY2VsZXJhbuKAlCBlbCBtb21lbnR1bSBlcyBwb3NpdGl2byAoc2kgYmFqYW4gY2FkYSBkw61hIG3DoXMsIGVsIG1vbWVudHVtIHNlcsOtYSBuZWdhdGl2bykuDQoNCmBgYHtyLCBlY2hvPUZBTFNFfQ0KY2hhcnRTZXJpZXMoZGF0b3NfYW5hbGlzaXNfYnRjLA0KICAgICAgICAgICAgdHlwZT0iY2FuZGxlc3RpY2tzIiwNCiAgICAgICAgICAgIHN1YnNldCA9ICIyMDE4LTAxOjoyMDIxLTExIiwNCiAgICAgICAgICAgIHVwLmNvbCA9ICJncmVlbiIsDQogICAgICAgICAgICBkb3duLmNvbCA9ICJyZWQiLA0KICAgICAgICAgICAgdGhlbWU9Y2hhcnRUaGVtZSgid2hpdGUiKSkNCmFkZE1vbWVudHVtKCkNCg0KYGBgDQoNCkxhIHNlw7FhbCBkZSBjb21wcmEgc3VyZ2UgY3VhbmRvIGVsIGltcHVsc28gY2FtYmlhIGRlIG5lZ2F0aXZvIGEgcG9zaXRpdm8uDQpMYSBzZcOxYWwgZGUgdmVudGEgc3VyZ2UgY3VhbmRvIGVsIGltcHVsc28gY2FtYmlhIGRlIHBvc2l0aXZvIGEgbmVnYXRpdm8uDQoNCjxicj4NCg0KIyMjIDxGT05UIENPTE9SPSJkM2E0NmEiPioqQ8OzZGlnbyBkZSBsb3MgaW5kaWNhZG9yZXMqKjwvRk9OVD4NCg0KYGBge3IsIGluY2x1ZGU9VFJVRSwgZXZhbD1GQUxTRX0NCg0KY2hhcnRTZXJpZXMoZGF0b3NfYW5hbGlzaXNfYnRjLA0KICAgICAgICAgICAgdHlwZT0iY2FuZGxlc3RpY2tzIiwNCiAgICAgICAgICAgIHN1YnNldCA9ICIyMDE4LTAxOjoyMDIxLTExIiwNCiAgICAgICAgICAgIHVwLmNvbCA9ICJncmVlbiIsDQogICAgICAgICAgICBkb3duLmNvbCA9ICJyZWQiLA0KICAgICAgICAgICAgdGhlbWU9Y2hhcnRUaGVtZSgid2hpdGUiKSkNCmFkZFNNQSgpDQoNCmNoYXJ0U2VyaWVzKGRhdG9zX2FuYWxpc2lzX2J0YywNCiAgICAgICAgICAgIHR5cGU9ImNhbmRsZXN0aWNrcyIsDQogICAgICAgICAgICBzdWJzZXQgPSAiMjAxOC0wMTo6MjAyMS0xMSIsDQogICAgICAgICAgICB1cC5jb2wgPSAiZ3JlZW4iLA0KICAgICAgICAgICAgZG93bi5jb2wgPSAicmVkIiwNCiAgICAgICAgICAgIHRoZW1lPWNoYXJ0VGhlbWUoIndoaXRlIikpDQphZGRSU0koKQ0KDQpjaGFydFNlcmllcyhkYXRvc19hbmFsaXNpc19idGMsDQogICAgICAgICAgICB0eXBlPSJjYW5kbGVzdGlja3MiLA0KICAgICAgICAgICAgc3Vic2V0ID0gIjIwMTgtMDE6OjIwMjEtMTEiLA0KICAgICAgICAgICAgdXAuY29sID0gImdyZWVuIiwNCiAgICAgICAgICAgIGRvd24uY29sID0gInJlZCIsDQogICAgICAgICAgICB0aGVtZT1jaGFydFRoZW1lKCJ3aGl0ZSIpKQ0KYWRkTUFDRCgpDQoNCmNoYXJ0U2VyaWVzKGRhdG9zX2FuYWxpc2lzX2J0YywNCiAgICAgICAgICAgIHR5cGU9ImNhbmRsZXN0aWNrcyIsDQogICAgICAgICAgICBzdWJzZXQgPSAiMjAxOC0wMTo6MjAyMS0xMSIsDQogICAgICAgICAgICB1cC5jb2wgPSAiZ3JlZW4iLA0KICAgICAgICAgICAgZG93bi5jb2wgPSAicmVkIiwNCiAgICAgICAgICAgIHRoZW1lPWNoYXJ0VGhlbWUoIndoaXRlIikpDQphZGRNb21lbnR1bSgpDQoNCmBgYA0KDQojIyA2LjIgR3LDoWZpY28gZmluYWwgeSB0ZW5kZW5jaWFzIHsudGFic2V0fQ0KDQojIyMgPEZPTlQgQ09MT1I9ImQzYTQ2YSI+KipHcsOhZmljbyoqPC9GT05UPg0KDQpgYGB7ciwgZWNobz1GQUxTRX0NCg0KYWRkRU1BKG49MzAsb249MSxjb2wgPSAiYmx1ZSIpDQphZGRFTUEobj0yMDAsb249MSxjb2wgPSAiYmxhY2siKQ0KYWRkUlNJKCkNCmFkZE1BQ0QoKQ0KDQpgYGANCg0KIyMjIDxGT05UIENPTE9SPSJkM2E0NmEiPioqVGVuZGVuY2lhcyoqPC9GT05UPg0KDQpDb2dlbW9zIGVsIG1vZGVsbzEgeSBlbCBmb3JlY2FzdCAxIHBhcmEsIGEgdHJhdmVzIGRlIGxhIGluc3RydWNjaW9uIHByb3BoZXRfcGxvdF9jb21wb25lbnRlcyBvYnRlbmVyIHVuIGdyYWZpY28gcXVlIG5vcyBtdWVzdHJhIGFsZ3VuYXMgdGVuZGVuY2lhcyBpbnRlcmVzYW50ZXMuDQoNCmBgYHtyLCBlY2hvPUZBTFNFfQ0KdGVuZGVuY2lhcyA8LSBwcm9waGV0X3Bsb3RfY29tcG9uZW50cyhtb2RlbG8xLCBmb3JlY2FzdDEpDQp0ZW5kZW5jaWFzIA0KDQpgYGANCg0KUG9kZW1vcyB2ZXIgY8OzbW8gZWwgQlRDIHN1ZWxlIHN1YmlyIGVudHJlIGxvcyBtZXNlcyBkZSBhYnJpbCB5IGp1bmlvLg0KDQojIyMgPEZPTlQgQ09MT1I9ImQzYTQ2YSI+KipDw7NkaWdvKio8L0ZPTlQ+DQoNCmBgYHtyLCBldmFsPUZBTFNFLCBpbmNsdWRlPVRSVUV9DQp0ZW5kZW5jaWFzIDwtIHByb3BoZXRfcGxvdF9jb21wb25lbnRzKG1vZGVsbzEsIGZvcmVjYXN0MSkNCnRlbmRlbmNpYXMgDQoNCmBgYA0KDQo8YnI+DQoNCg0KIyA3LiBFdGhlcmV1bQ0KDQojIyA3LjEuIEV2b2x1Y2nDs24gZGUgbG9zIHByZWNpb3MuIHsudGFic2V0fQ0KDQojIyMgPEZPTlQgQ09MT1I9ImQzYTQ2YSI+KipFdm9sdWNpw7NuKio8L0ZPTlQ+DQoNCmBgYHtyLCBlY2hvPUZBTFNFfQ0KY29pbl9ldGhlcmV1bSA8LSByZWFkX2NzdigiLi9kYXRvcy9jb2luX2V0aGVyZXVtLmNzdiIpDQpFVEhfaW1hZ2UgPC0gImh0dHBzOi8vY2RuLnBpeGFiYXkuY29tL3Bob3RvLzIwMjEvMTIvMDMvMTAvMzIvZXRoZXJldW0tNjg0MjQwNV8xMjgwLnBuZyINCmE8LWNvaW5fZXRoZXJldW0gJT4lIHNlbGVjdChOYW1lLCBEYXRlLCBDbG9zZSwgVm9sdW1lKSAlPiUgbXV0YXRlKGltYWdlbiA9IEVUSF9pbWFnZSkNCg0KYSRtb250aCA8LSBmbG9vcl9kYXRlKGEkRGF0ZSwgIm1vbnRoIikNCg0KDQpnZ3Bsb3QoYSwgYWVzKERhdGUsIENsb3NlKSkgKyANCiAgZ2VvbV9wYXRoKGFlcyhjb2xvdXI9ImdvbGRlbnJvZDEiKSkgKyANCiAgZ2VvbV9wb2ludCggYWVzKGdyb3VwPW1vbnRoLCBjb2xvdXI9ICJnb2xkZW5yb2QxIiwgYWxwaGEgPSAwLjUpKSArDQogIGdlb21faW1hZ2UoYWVzKGltYWdlID0gRVRIX2ltYWdlKSwNCiAgICAgICAgICAgICBzaXplID0gMC4wNikgKw0KICB0cmFuc2l0aW9uX3JldmVhbChEYXRlKSArDQogIHRoZW1lKGF4aXMubGluZSA9IGVsZW1lbnRfbGluZShjb2xvdXIgPSAiY2hvY29sYXRlMSIpLA0KICAgICAgICBwYW5lbC5iYWNrZ3JvdW5kID0gZWxlbWVudF9yZWN0KGZpbGwgPSAiI2ZiZjdmMCIpLA0KICAgICAgICBwbG90LmJhY2tncm91bmQgPSBlbGVtZW50X3JlY3QoZmlsbCA9ICIjZmJmN2YwIiwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG91ciA9ICIjZmJmN2YwIikpICtsYWJzKHkgPSAiUHJlY2lvIikgKw0KICB0aGVtZShsZWdlbmQucG9zaXRpb24gPSAibm9uZSIpDQpgYGANCg0KDQojIyMgPEZPTlQgQ09MT1I9ImQzYTQ2YSI+KipWZWxhcyoqPC9GT05UPg0KDQpgYGB7cn0NCmNoYXJ0U2VyaWVzKGBFVEgtVVNEYCwNCiAgICAgICAgICAgIHR5cGU9ImNhbmRsZXN0aWNrcyIsDQogICAgICAgICAgICBzdWJzZXQgPSAiMjAyMS0wMTo6MjAyMS0xMSIsDQogICAgICAgICAgICB1cC5jb2wgPSAiZ3JlZW4iLA0KICAgICAgICAgICAgZG93bi5jb2wgPSAicmVkIiwNCiAgICAgICAgICAgIHRoZW1lPWNoYXJ0VGhlbWUoIndoaXRlIikpDQpgYGANCg0KDQojIyA3LjIgUHJlZGljY2nDs24gZGVsIHByZWNpbyB7LnRhYnNldH0NCg0KIyMjIDxGT05UIENPTE9SPSJkM2E0NmEiPioqUHJlZGljY2nDs24qKjwvRk9OVD4NCg0KVGFsIHkgY29tbyBoaWNpbW9zIGFudGVyaW9ybWVudGUgY29uIGVsIEJpdGNvaW4sIHVzYW1vcyBlbCBwYXF1ZXRlIFByb3BoZXQgcGFyYSBwcmVkZWNpciBlbCBwcmVjaW8gZW4gZWwgZnV0dXJvLg0KDQpgYGB7ciwgZWNobz1GQUxTRX0NCg0KcG9ydGZvbGlvID0gYygiRVRILVVTRCIpDQpkYXRvcyA8LSBnZXRTeW1ib2xzKHBvcnRmb2xpbywgc3JjID0gInlhaG9vIiwgZnJvbSA9ICIyMDE4LTAxLTAxIikNCg0KZGF0b3NfdGVjbmljb19ldGggPC0gYEVUSC1VU0RgDQoNCnBvcnRmb2xpbyA9IGMoIkJUQy1VU0QiKQ0KZGF0b3MgPC0gZ2V0U3ltYm9scyhwb3J0Zm9saW8sIHNyYyA9ICJ5YWhvbyIsIGZyb20gPSAiMjAxOC0wMS0wMSIpDQoNCmRhdG9zX2FuYWxpc2lzX2J0YyA8LSBgQlRDLVVTRGANCg0KI1ByZWRpY2Npb24gZGUgcHJlY2lvIFByb3BoZXQNCg0KDQpkYXRhX3RvdGFsIDwtIHJlYWRfY3N2KCIuL2RhdG9zL2RhdGFfdG90YWwuY3N2IikNCg0KZGF0YV9ldGggPC0gZGF0YV90b3RhbCAlPiUgZmlsdGVyKE5hbWUgPT0gIkV0aGVyZXVtIikNCg0KZGF0YV9ldGggPC0gZGF0YV9ldGggJT4lIHNlbGVjdChEYXRlLCBDbG9zZSkNCg0KZGF0YV9ldGggPC0gZGF0YV9ldGggJT4lIHJlbmFtZShkcyA9IERhdGUsIHkgPSBDbG9zZSkNCg0KbW9kZWxvMSA8LSBwcm9waGV0KGRhdGFfZXRoKQ0KaG9yaXpvbnRlMSA8LSBtYWtlX2Z1dHVyZV9kYXRhZnJhbWUobW9kZWxvMSwgcGVyaW9kcyA9IDM2NSkNCg0KZm9yZWNhc3QxIDwtIHByZWRpY3QobW9kZWxvMSwgaG9yaXpvbnRlMSkNCg0KZ3JfcHJlZGljYyA8LSBkeXBsb3QucHJvcGhldChtb2RlbG8xLCBmb3JlY2FzdDEsIG1haW4gPSAiUHJlZGljY2lvbiBQcmVjaW8gRXRoZXJldW0iKQ0KZ3JfcHJlZGljYw0KDQpgYGANCg0KIyMjIDxGT05UIENPTE9SPSJkM2E0NmEiPioqQ8OzZGlnbyoqPC9GT05UPg0KDQpgYGB7ciwgZXZhbD1GQUxTRSwgaW5jbHVkZT1UUlVFfQ0KI0V2b2x1Y2nDs24gZGVsIHByZWNpbw0KDQpjb2luX2V0aGVyZXVtIDwtIHJlYWRfY3N2KCIuL2RhdG9zL2NvaW5fZXRoZXJldW0uY3N2IikNCkVUSF9pbWFnZSA8LSAiaHR0cHM6Ly9jZG4ucGl4YWJheS5jb20vcGhvdG8vMjAyMS8xMi8wMy8xMC8zMi9ldGhlcmV1bS02ODQyNDA1XzEyODAucG5nIg0KYTwtY29pbl9ldGhlcmV1bSAlPiUgc2VsZWN0KE5hbWUsIERhdGUsIENsb3NlLCBWb2x1bWUpICU+JSBtdXRhdGUoaW1hZ2VuID0gRVRIX2ltYWdlKQ0KDQphJG1vbnRoIDwtIGZsb29yX2RhdGUoYSREYXRlLCAibW9udGgiKQ0KDQoNCmdncGxvdChhLCBhZXMoRGF0ZSwgQ2xvc2UpKSArIA0KICBnZW9tX3BhdGgoYWVzKGNvbG91cj0iZ29sZGVucm9kMSIpKSArIA0KICBnZW9tX3BvaW50KCBhZXMoZ3JvdXA9bW9udGgsIGNvbG91cj0gImdvbGRlbnJvZDEiLCBhbHBoYSA9IDAuNSkpICsNCiAgZ2VvbV9pbWFnZShhZXMoaW1hZ2UgPSBFVEhfaW1hZ2UpLA0KICAgICAgICAgICAgIHNpemUgPSAwLjA2KSArDQogIHRyYW5zaXRpb25fcmV2ZWFsKERhdGUpICsNCiAgdGhlbWUoYXhpcy5saW5lID0gZWxlbWVudF9saW5lKGNvbG91ciA9ICJjaG9jb2xhdGUxIiksDQogICAgICAgIHBhbmVsLmJhY2tncm91bmQgPSBlbGVtZW50X3JlY3QoZmlsbCA9ICIjZmJmN2YwIiksDQogICAgICAgIHBsb3QuYmFja2dyb3VuZCA9IGVsZW1lbnRfcmVjdChmaWxsID0gIiNmYmY3ZjAiLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3VyID0gIiNmYmY3ZjAiKSkgK2xhYnMoeSA9ICJQcmVjaW8iKSArDQogIHRoZW1lKGxlZ2VuZC5wb3NpdGlvbiA9ICJub25lIikNCg0KI1ByZWRpY2Npw7NuIGRlbCBwcmVjaW8NCg0KcG9ydGZvbGlvID0gYygiRVRILVVTRCIpDQpkYXRvcyA8LSBnZXRTeW1ib2xzKHBvcnRmb2xpbywgc3JjID0gInlhaG9vIiwgZnJvbSA9ICIyMDE4LTAxLTAxIikNCg0KZGF0b3NfdGVjbmljb19ldGggPC0gYEVUSC1VU0RgDQoNCnBvcnRmb2xpbyA9IGMoIkJUQy1VU0QiKQ0KZGF0b3MgPC0gZ2V0U3ltYm9scyhwb3J0Zm9saW8sIHNyYyA9ICJ5YWhvbyIsIGZyb20gPSAiMjAxOC0wMS0wMSIpDQoNCmRhdG9zX2FuYWxpc2lzX2J0YyA8LSBgQlRDLVVTRGANCg0KI1ByZWRpY2Npb24gZGUgcHJlY2lvIFByb3BoZXQNCg0KDQpkYXRhX3RvdGFsIDwtIHJlYWRfY3N2KCIuL2RhdG9zL2RhdGFfdG90YWwuY3N2IikNCg0KZGF0YV9ldGggPC0gZGF0YV90b3RhbCAlPiUgZmlsdGVyKE5hbWUgPT0gIkV0aGVyZXVtIikNCg0KZGF0YV9ldGggPC0gZGF0YV9ldGggJT4lIHNlbGVjdChEYXRlLCBDbG9zZSkNCg0KZGF0YV9ldGggPC0gZGF0YV9ldGggJT4lIHJlbmFtZShkcyA9IERhdGUsIHkgPSBDbG9zZSkNCg0KbW9kZWxvMSA8LSBwcm9waGV0KGRhdGFfZXRoKQ0KaG9yaXpvbnRlMSA8LSBtYWtlX2Z1dHVyZV9kYXRhZnJhbWUobW9kZWxvMSwgcGVyaW9kcyA9IDM2NSkNCg0KZm9yZWNhc3QxIDwtIHByZWRpY3QobW9kZWxvMSwgaG9yaXpvbnRlMSkNCg0KZ3JfcHJlZGljYyA8LSBkeXBsb3QucHJvcGhldChtb2RlbG8xLCBmb3JlY2FzdDEsIG1haW4gPSAiUHJlZGljY2lvbiBQcmVjaW8gRXRoZXJldW0iKQ0KZ3JfcHJlZGljYw0KDQoNCmBgYA0KDQojIDguIEFuw6FsaXNpcyB0w6ljbmljbyB7LnRhYnNldH0NCg0KIyMgPEZPTlQgQ09MT1I9ImQzYTQ2YSI+KipNZWRpYXMgbcOzdmlsZXMqKjwvRk9OVD4NCg0KYGBge3IsIGVjaG89RkFMU0V9DQpwb3J0Zm9saW8gPSBjKCJFVEgtVVNEIikNCmRhdG9zIDwtIGdldFN5bWJvbHMocG9ydGZvbGlvLCBzcmMgPSAieWFob28iLCBmcm9tID0gIjIwMTctMDEtMDEiKQ0KDQojZ3JhZmljbyBjb24gRU1Bcw0KY2hhcnRTZXJpZXMoYEVUSC1VU0RgLA0KICAgICAgICAgICAgdHlwZT0iY2FuZGxlc3RpY2tzIiwNCiAgICAgICAgICAgIHN1YnNldCA9ICIyMDIxLTAxOjoyMDIxLTExIiwNCiAgICAgICAgICAgIHVwLmNvbCA9ICJncmVlbiIsDQogICAgICAgICAgICBkb3duLmNvbCA9ICJyZWQiLA0KICAgICAgICAgICAgdGhlbWU9Y2hhcnRUaGVtZSgid2hpdGUiKSkNCmFkZEVNQShuPTMwLG9uPTEsY29sID0gImJsdWUiKQ0KYWRkRU1BKG49MjAwLG9uPTEsY29sID0gImJsYWNrIikNCg0KYGBgDQoNCiMjIDxGT05UIENPTE9SPSJkM2E0NmEiPioqQmFuZGFzIGRlIEJvbGxpbmdlcioqPC9GT05UPg0KDQpMYXMgYmFuZGFzIGRlIEJvbGxpbmdlciBzb24gdW5hIHTDqWNuaWNhIG11eSBwb3B1bGFyLiBNdWNob3MgdHJhZGVycyBjcmVlbiBxdWUgY3VhbnRvIG3DoXMgc2UgYWNlcmNhbiBsb3MgcHJlY2lvcyBhIGxhIGJhbmRhIHN1cGVyaW9yLCBtw6FzIHNvYnJlY29tcHJhZG8gZXN0w6EgZWwgbWVyY2FkbywgeSBjdWFudG8gbcOhcyBzZSBhY2VyY2FuIGxvcyBwcmVjaW9zIGEgbGEgYmFuZGEgaW5mZXJpb3IsIG3DoXMgc29icmV2ZW5kaWRvIGVzIGVsIG1lcmNhZG8uIA0KDQpFbiBlbCBncsOhZmljbyBxdWUgc2UgbXVlc3RyYSBhIGNvbnRpbnVhY2nDs24sIGxhcyBCYW5kYXMgZGUgQm9sbGluZ2VyIGFiYXJjYW4gbGEgTU1TIGRlIDIwIGTDrWFzIGRlbCBCaXRjb2luIGNvbiB1bmEgYmFuZGEgc3VwZXJpb3IgZSBpbmZlcmlvciBqdW50byBjb24gbG9zIG1vdmltaWVudG9zIGRpYXJpb3MgZGVsIHByZWNpby4gRGViaWRvIGEgcXVlIGxhIGRlc3ZpYWNpw7NuIGVzdMOhbmRhciBlcyB1bmEgbWVkaWRhIGRlIHZvbGF0aWxpZGFkLCBjdWFuZG8gbG9zIG1lcmNhZG9zIHNlIHZ1ZWx2ZW4gbcOhcyB2b2zDoXRpbGVzLCBsYXMgYmFuZGFzIHNlIGVuc2FuY2hhbjsgZHVyYW50ZSBwZXLDrW9kb3MgbWVub3Mgdm9sw6F0aWxlcywgbGFzIGJhbmRhcyBzZSBjb250cmFlbi4NCg0KYGBge3IsIGVjaG89RkFMU0V9DQoNCmFkZEJCYW5kcyhuPTIwLHNkPTIpDQoNCmBgYA0KDQojIyA8Rk9OVCBDT0xPUj0iZDNhNDZhIj4qKlJTSXIqKjwvRk9OVD4NCg0KQcOxYWRpbW9zIHRhbWJpw6luIGVsIFJTSSBxdWUgdmltb3MgYW50ZXJpb3JtZW50ZToNCg0KYGBge3IsIGVjaG89RkFMU0V9DQphZGRSU0koKQ0KYGBgDQoNCiMjIDxGT05UIENPTE9SPSJkM2E0NmEiPioqTUFDRCoqPC9GT05UPg0KDQpEaXZlcmdlbmNpYSBkZSBjb252ZXJnZW5jaWEgZGUgbGEgbWVkaWEgbW92aWwgKE1BQ0QpDQoNCkVzIHVuIGluZGljYWRvciBkZSBpbXB1bHNvIHF1ZSBzaWd1ZSBsYSB0ZW5kZW5jaWEgeSBtdWVzdHJhIGxhIHJlbGFjacOzbiBlbnRyZSBkb3MgbWVkaWFzIG3Ds3ZpbGVzIGRlbCBwcmVjaW8gZGUgdW4gdmFsb3IuIEVsIE1BQ0Qgc2UgY2FsY3VsYSByZXN0YW5kbyBsYSBtZWRpYSBtw7N2aWwgZXhwb25lbmNpYWwgKEVNQSkgZGUgMjYgcGVyw61vZG9zIGRlIGxhIEVNQSBkZSAxMiBwZXLDrW9kb3MuDQogDQpFbCByZXN1bHRhZG8gZGUgZXNlIGPDoWxjdWxvIGVzIGxhIGzDrW5lYSBNQUNELiBVbmEgRU1BIGRlIG51ZXZlIGTDrWFzIGRlbCBNQUNEIGxsYW1hZGEg4oCcbMOtbmVhIGRlIHNlw7FhbOKAnSBzZSB0cmF6YSBsdWVnbyBlbiBsYSBwYXJ0ZSBzdXBlcmlvciBkZSBsYSBsw61uZWEgTUFDRCwgcXVlIHB1ZWRlIGZ1bmNpb25hciBjb21vIHVuIGRpc3BhcmFkb3IgZGUgc2XDsWFsZXMgZGUgY29tcHJhIHkgdmVudGEuIExvcyBvcGVyYWRvcmVzIHB1ZWRlbiBjb21wcmFyIGVsIHZhbG9yIGN1YW5kbyBlbCBNQUNEIGNydXphIHBvciBlbmNpbWEgZGUgc3UgbMOtbmVhIGRlIHNlw7FhbCB5IHZlbmRlciwgbyB2ZW5kZXIsIGVsIHZhbG9yIGN1YW5kbyBlbCBNQUNEIGNydXphIHBvciBkZWJham8gZGUgbGEgbMOtbmVhIGRlIHNlw7FhbC4NCg0KYGBge3IsIGVjaG89RkFMU0V9DQojZ3JhZmljb3MgY29uIE1BQ0QNCg0KY2hhcnRTZXJpZXMoYEVUSC1VU0RgLA0KICAgICAgICAgICAgdHlwZT0iY2FuZGxlc3RpY2tzIiwNCiAgICAgICAgICAgIHN1YnNldCA9ICIyMDIxLTAxOjoyMDIxLTExIiwNCiAgICAgICAgICAgIHVwLmNvbCA9ICJncmVlbiIsDQogICAgICAgICAgICBkb3duLmNvbCA9ICJyZWQiLA0KICAgICAgICAgICAgdGhlbWU9Y2hhcnRUaGVtZSgid2hpdGUiKSkNCmFkZE1BQ0QoKQ0KDQpgYGANCg0KIyMgPEZPTlQgQ09MT1I9ImQzYTQ2YSI+KipNb21lbnR1bSoqPC9GT05UPg0KDQpFbCBtb21lbnR1bSBlcyBsYSB2ZWxvY2lkYWQgbyB2ZWxvY2lkYWQgZGUgbG9zIGNhbWJpb3MgZGUgcHJlY2lvIGVuIHVuYSBhY2Npw7NuLCB2YWxvciBvIGluc3RydW1lbnRvIG5lZ29jaWFibGUuIE1vbWVudHVtIG11ZXN0cmEgbGEgdGFzYSBkZSBjYW1iaW8gZW4gZWwgbW92aW1pZW50byBkZSBwcmVjaW9zIGR1cmFudGUgdW4gcGVyw61vZG8gZGUgdGllbXBvIHBhcmEgYXl1ZGFyIGEgbG9zIGludmVyc29yZXMgYSBkZXRlcm1pbmFyIGxhIGZ1ZXJ6YSBkZSB1bmEgdGVuZGVuY2lhLg0KDQpgYGB7ciwgZWNobz1GQUxTRX0NCg0KI2dyYWZpY29zIGNvbiBtb21lbnR1bQ0KI0NhbGN1bGFtb3MgZWwgaW1wdWxzbyBkZSAyIGTDrWFzIGVuIGZ1bmNpw7NuIGRlbCBwcmVjaW8gZGUgY2llcnJlIGRlIEJpdGNvaW4NCiNMYSBzZcOxYWwgZGUgY29tcHJhIHN1cmdlIGN1YW5kbyBlbCBpbXB1bHNvIGNhbWJpYSBkZSBuZWdhdGl2byBhIHBvc2l0aXZvLg0KI0xhIHNlw7FhbCBkZSB2ZW50YSBzdXJnZSBjdWFuZG8gZWwgaW1wdWxzbyBjYW1iaWEgZGUgcG9zaXRpdm8gYSBuZWdhdGl2by4NCg0KYWRkTW9tZW50dW0obj0xKQ0KDQpgYGANCg0KQ2FsY3VsYW1vcyBlbCBpbXB1bHNvIGRlIDIgZMOtYXMgZW4gZnVuY2nDs24gZGVsIHByZWNpbyBkZSBjaWVycmUgZGUgQml0Y29pbg0KTGEgc2XDsWFsIGRlIGNvbXByYSBzdXJnZSBjdWFuZG8gZWwgaW1wdWxzbyBjYW1iaWEgZGUgbmVnYXRpdm8gYSBwb3NpdGl2by4NCkxhIHNlw7FhbCBkZSB2ZW50YSBzdXJnZSBjdWFuZG8gZWwgaW1wdWxzbyBjYW1iaWEgZGUgcG9zaXRpdm8gYSBuZWdhdGl2by4NCg0KIyMgPEZPTlQgQ09MT1I9ImQzYTQ2YSI+KipDw7NkaWdvKio8L0ZPTlQ+DQoNCmBgYHtyLCBpbmNsdWRlPVRSVUUsIGV2YWw9RkFMU0V9DQoNCiNNZWRpYXMgbcOzdmlsZXMgDQoNCnBvcnRmb2xpbyA9IGMoIkVUSC1VU0QiKQ0KZGF0b3MgPC0gZ2V0U3ltYm9scyhwb3J0Zm9saW8sIHNyYyA9ICJ5YWhvbyIsIGZyb20gPSAiMjAxNy0wMS0wMSIpDQoNCiNncmFmaWNvIGNvbiBFTUFzDQpjaGFydFNlcmllcyhgRVRILVVTRGAsDQogICAgICAgICAgICB0eXBlPSJjYW5kbGVzdGlja3MiLA0KICAgICAgICAgICAgc3Vic2V0ID0gIjIwMjEtMDE6OjIwMjEtMTEiLA0KICAgICAgICAgICAgdXAuY29sID0gImdyZWVuIiwNCiAgICAgICAgICAgIGRvd24uY29sID0gInJlZCIsDQogICAgICAgICAgICB0aGVtZT1jaGFydFRoZW1lKCJ3aGl0ZSIpKQ0KYWRkRU1BKG49MzAsb249MSxjb2wgPSAiYmx1ZSIpDQphZGRFTUEobj0yMDAsb249MSxjb2wgPSAiYmxhY2siKQ0KDQojQmFuZGFzDQoNCmFkZEJCYW5kcyhuPTIwLHNkPTIpDQoNCiNSU0kNCg0KYWRkUlNJKCkNCg0KI01BQ0QNCg0KY2hhcnRTZXJpZXMoYEVUSC1VU0RgLA0KICAgICAgICAgICAgdHlwZT0iY2FuZGxlc3RpY2tzIiwNCiAgICAgICAgICAgIHN1YnNldCA9ICIyMDIxLTAxOjoyMDIxLTExIiwNCiAgICAgICAgICAgIHVwLmNvbCA9ICJncmVlbiIsDQogICAgICAgICAgICBkb3duLmNvbCA9ICJyZWQiLA0KICAgICAgICAgICAgdGhlbWU9Y2hhcnRUaGVtZSgid2hpdGUiKSkNCmFkZE1BQ0QoKQ0KDQojTW9tZW50dW0NCmFkZE1vbWVudHVtKG49MSkNCg0KYGBgDQoNCg0KIyMgPEZPTlQgQ09MT1I9ImQzYTQ2YSI+KipQcmVjaW8gcmVzcGVjdG8gZGUgbGEgbWVkaWEqKjwvRk9OVD4NCmBgYHtyLGVjaG89RkFMU0V9DQoNCkJUQ21vdmlsIDwtIEJUQyAlPiUgbXV0YXRlKG1lZGlhX21vdmlsID0gcm9sbF9tZWFuKENsb3NlLCBuID0gMTQwLCBmaWxsID0gTkEsIGFsaWduID0gInJpZ2h0IikpDQoNCkJUQ3ZhcmlhbnphIDwtIEJUQ21vdmlsICU+JSBtdXRhdGUodmFyaWFuemE9Q2xvc2UvbWVkaWFfbW92aWwpDQoNCkc4IDwtIEJUQ3ZhcmlhbnphICU+JSBnZ3Bsb3QoKSArIGdlb21fbGluZShhZXMoRGF0ZSx2YXJpYW56YSkpKyB0aGVtZShwYW5lbC5iYWNrZ3JvdW5kID0gZWxlbWVudF9yZWN0KGZpbGwgPSAiI2ZiZjdmMCIsY29sb3VyID0gIiNmYmY3ZjAiKSkgK2xhYnMoY29sb3VyID0gImNvbG91cl91cCIsIGZpbGwgPSAiZmlsbF91cCIpICsgdGhlbWUocGxvdC5iYWNrZ3JvdW5kID0gZWxlbWVudF9yZWN0KGZpbGwgPSAiI2ZiZjdmMCIpKQ0KDQpHOA0KYGBgDQoNCkN1YW5kbyBCaXRjb2luIGVzdMOhIHBvciBlbmNpbWEgZGUgbGEgbWVkaWEgKHN1YmllbmRvKSwgZWwgdmFsb3IgZGUgZXN0YSBleHRlbnNpw7NuIGVzIG1heW9yIHF1ZSAxLiBDdWFuZG8gQml0Y29pbiBlc3TDoSBwb3IgZGViYWpvIGRlIGxhIG1lZGlhIChiYWphbmRvKSwgZWwgdmFsb3IgZGUgZXN0YSBleHRlbnNpw7NuIGVzdMOhIGVudHJlIDAgeSAxLiBQb3IgdGFudG8sICBsb3MgcHVudG9zIMOzcHRpbW9zIHBhcmEgY29tcHJhciBzb24gbG9zIG3DrW5pbW9zIG9ic2VydmFkb3MgZW4gZWwgcmFuZ28gZW50cmUgMCB5IDEsIHkgbG9zIHB1bnRvcyDDs3B0aW1vcyBwYXJhIHZlbmRlciBzb24gbG9zIHBpY29zIHF1ZSBlc3TDqW4gcG9yIGVuY2ltYSBkZSAxLg0KDQpQb2RlbW9zIG9ic2VydmFyIHF1ZSBsYSB2YXJpYW56YSBlc3TDoSBlbiBkZXNjZW5zbywgcG9yIGxvIHF1ZSBwYXJhIHF1ZSBiaXRjb2luIHNlIGVzdGFiaWxpY2UgdGllbmUgcXVlIHNlZ3VpciBzdWJpZW5kbyBjb21vIGhhIGVzdGFkbyBoYWNpZW5kbw0KDQpgYGB7cixlY2hvPUZBTFNFfQ0KRzkgPC0gRzggKyBhbm5vdGF0ZSgic2VnbWVudCIsIHggPSBhcy5EYXRlKCIyMDEzLTEyLTE1IiksIHhlbmQgPSBhcy5EYXRlKCIyMDIxLTA2LTAxIiksIHkgPSA1LjUsIHllbmQgPSAyLjYsIGNvbG91ciA9ICJibHVlIikNCkc5DQpgYGANCg0KTWllbnRyYXMgQml0Y29pbiB0aWVuZSBlc3RhIHZhcmlhbnphLCDCv2N1w6FudG8gdmFyw61hbiBsYXMgb3RyYXMgbW9uZWRhcz8NCg0KYGBge3IsZWNobz1GQUxTRX0NCkFMVCA8LSBkYXRhX3RvdGFsMiAlPiUgZmlsdGVyKFN5bWJvbCAlaW4lIGMoIkJUQyIsIkRPR0UiLCAiQk5CIiwgIkFEQSIsICJMSU5LIiwiQVRPTSIsICJDUk8iLCAiRU9TIikpICU+JSBzZWxlY3QoRGF0ZSxDbG9zZSxTeW1ib2wpDQpBTFRtb3ZpbCA8LSBBTFQgJT4lIG11dGF0ZShtZWRpYV9tb3ZpbCA9IHJvbGxfbWVhbihDbG9zZSwgbiA9IDE0MCwgZmlsbCA9IE5BLCBhbGlnbiA9ICJyaWdodCIpKQ0KQUxUdmFyaWFuemEgPC0gQUxUbW92aWwgJT4lIG11dGF0ZSh2YXJpYW56YT1DbG9zZS9tZWRpYV9tb3ZpbCkNCg0KDQpCVEMyIDwtIGRhdGFfdG90YWwyICU+JSBmaWx0ZXIoU3ltYm9sID09ICJCVEMiKSAlPiUgc2VsZWN0KERhdGUsQ2xvc2UsIFN5bWJvbCkgJT4lIG11dGF0ZShtZWRpYV9tb3ZpbCA9IHJvbGxfbWVhbihDbG9zZSwgbiA9IDE0MCwgZmlsbCA9IE5BLCBhbGlnbiA9ICJyaWdodCIpKSU+JSBtdXRhdGUodmFyaWFuemE9Q2xvc2UvbWVkaWFfbW92aWwpDQpCVEMyDQoNCkcxMCA8LSBnZ3Bsb3QoQUxUdmFyaWFuemEsIGFlcyhEYXRlLHZhcmlhbnphKSkgKyBnZW9tX2xpbmUoKSArIGdlb21fbGluZShkYXRhPUJUQzIsIGFlcyhjb2xvcj1TeW1ib2wpKSArIHRoZW1lKHBhbmVsLmJhY2tncm91bmQgPSBlbGVtZW50X3JlY3QoZmlsbCA9ICIjZmJmN2YwIixjb2xvdXIgPSAiI2ZiZjdmMCIpKSArbGFicyhjb2xvdXIgPSAiY29sb3VyX3VwIiwgZmlsbCA9ICJmaWxsX3VwIikgKyB0aGVtZShwbG90LmJhY2tncm91bmQgPSBlbGVtZW50X3JlY3QoZmlsbCA9ICIjZmJmN2YwIikpDQpHMTANCg0KYGBgDQoNCg0KDQojIDkuIENyaXB0b21vbmVkYXMsIMK/VmFsb3IgcmVmdWdpbz8gey50YWJzZXR9DQoNClVubyBkZSBsb3MgY29tZW50YXJpb3MgcXVlIHVubyBlc2N1Y2hhIGRlIGxhcyBjcmlwdG9tb25lZGFzIGVzIHF1ZSBzb24gdW4gdmFsb3IgcmVmdWdpbywgwr9wZXJvIGVzIGVzdG8gY2llcnRvPyBVbiBhY3Rpdm8gcmVmdWdpbyBlcyBhcXVlbCBxdWUgc3VlbGUgdGVuZXIgcG9jYSB2b2xhdGlsaWRhZCB5IGN1eW8gcHJlY2lvIHN1ZWxlIGF1bWVudGFyIGN1YW5kbyBlbCBjcmVjaW1pZW50byBlY29uw7NtaWNvIHNlIGNvbnRyYWUgeSBleGlzdGUgaW5jZXJ0aWR1bWJyZS4NClBhcmEgcG9kZXIgZGFyIHVuYSByZXNwdWVzdGEgdmFtb3MgYSBhbmFsaXphciBsYSB2b2xhdGlsaWRhZCBkZWwgZXRoZXJldW0gbWVkaWFudGUgZGl2ZXJzb3MgaW5kaWNhZG9yZXMgeSBsYSBjb21wYXJhcmVtb3MgY29uIGxvcyBtaXNtb3MgaW5kaWNhZG9yZXMgcGVybyBkZWwgw61uZGljZSBTUDUwMC4NCg0KQW50ZXMgZGUgdG9kbyBlcyBzYWJlciBxdWUgZXMgbGEgdm9sYXRpbGlkYWQgeSBjw7NtbyBtZWRpcmxhLiBEZWZpbmltb3MgbGEgdm9sYXRpbGlkYWQgY29tbyBsYSBmbHVjdHVhY2nDs24gZGVsIHByZWNpbyBkZSB1biBhY3Rpdm8uIEF1bnF1ZSBlbiBlbCBtdW5kbyBkZSBsYSBpbnZlcnNpw7NuLCBsYSBkZWZpbmltb3MgY29tbyBsYSB2YXJpYWNpw7NuIGRlbCBwcmVjaW8gZGUgdW4gYWN0aXZvIGNvbiByZXNwZWN0byBhIHN1IG1lZGlhIGhpc3TDs3JpY2EuIA0KUGFyYSBtZWRpcmxhIHNlIHN1ZWxlbiB1c2FyIHZhcmlvcyBpbmRpY2Fkb3JlcywgcGVybyBub3NvdHJvcyBsbyBoYXJlbW9zIGEgdHJhdsOpcyBkZSBsYSBkZXN2aWFjacOzbiB0w61waWNhLiANCg0KQW50ZXMgZGUgY29tZW56YXIgZGViZW1vcyBleHBsaWNhciB1bmEgY29zYTogVG9kb3MgbG9zIGdyw6FmaWNvcyBxdWUgdmVyZW1vcyBhIHBhcnRpciBlbiBlc3RlIGFwYXJ0YWRvIHNlIGFjdHVhbGl6YXLDoW4gZGlhcmlhbWVudGUgY29uIGxvcyBudWV2b3MgZGF0b3MgZGUgQml0Y29pbiwgRXRoZXJldW0uLi4gRGUgdGFsIGZvcm1hIHF1ZSBjYWRhIGTDrWEgcXVlIHZlYW1vcyBlc3RlIHRyYWJham8gdmVyZW1vcyB1biBhbsOhbGlzaXMgZGlmZXJlbnRlLg0KDQoNCiMjIDxGT05UIENPTE9SPSJkM2E0NmEiPioqUmV0b3Jub3MqKjwvRk9OVD4NCg0KYGBge3IsIGVjaG89RkFMU0V9DQojTG8gcHJpbWVybyBkZSB0b2RvIGVzIG9idGVuZXIgbG9zIGRhdG9zIChhdW5xdWUgbG9zIGRlbCBFVEggeWEgbG9zIHRlbmVtb3MgZ3JhY2lhcyBhbCBhbsOhbGlzaXMgdMOpY25pY28gcmVhbGl6YWRvIGFudGVyaW9ybWVudGUuIExvIHNlZ3VuZG8gc2VsZWNjaW9uYW1vcyBsb3MgZGF0b3MgZGVsIHByZWNpbyBkZSBjaWVycmUuDQoNCmdldFN5bWJvbHMoIl5HU1BDIiwgc3JjID0gInlhaG9vIiwgZnJvbSA9ICIyMDE3LTAxLTAxIikNCkVUSCA8LSBgRVRILVVTRGBbLCJFVEgtVVNELkNsb3NlIl0NClNQNTAwIDwtIGBHU1BDYFssIkdTUEMuQ2xvc2UiXQ0KDQojU2VndW5kbywgZGViZW1vcyBvYnRlbmVyIGxvcyByZXRvcm5vcyAobm9zb3Ryb3MgdXNhbW9zIGxvcyByZXRvcm5vcyBzaW1wbGVzKSBkZWwgZXRoZXJldW0sIHlhIHF1ZSBjYWxjdWxhcmVtb3MgeSBtZWRpcmVtb3MgbGEgZGVzdmlhY2nDs24gZXN0w6FuZGFyIHkgbGEgdm9sYXRpbGlkYWQgZGUgZXN0b3MuIExvcyByZXRvcm5vcyBzaW1wbGVzIHNhIGNhbGN1bGFuIHJlc3RhbmRvIGFsIHByZWNpbyBhY3R1YWwgZWwgcHJlY2lvIGFudGVyaW9yIHkgZGl2aWVuZG9sbyBlbnRyZSBlbCBwcmVjaW8gYW50ZXJpb3IgLiBQYXJhIGVsbG8gdXRpbGl6YXJlbW9zIHVuYSBpbnN0cnVjY2nDs24gcXVlIGxvIGhhY2UgZGUgZm9ybWEgYXV0b23DoXRpY2E6DQoNCnJldG9ybm9fZXRoIDwtIG5hLm9taXQoUmV0dXJuLmNhbGN1bGF0ZShFVEgpKQ0KcmV0b3Jub19TUDUwMCA8LSBuYS5vbWl0KFJldHVybi5jYWxjdWxhdGUoU1A1MDApKQ0KDQojbG9zIHBvZGVtb3MgdmVyIGVuIHVuIGdyw6FmaWNvIG1lZGlhbnRlIGxhIHNpZ3VpZW50ZSBpbnN0cnVjY2nDs246DQoNCmdyYWZfcmV0X2V0aCA8LSBwbG90Lnh0cyhyZXRvcm5vX2V0aCwgbWFpbiA9ICJSZXRvcm5vIGRpYXJpbyBzaW1wbGUgRVRIIiwgeWxhYiA9ICJFVEgtVVNELkNsb3NlIikNCmdyYWZfcmV0X2V0aA0KDQpncmFmX3JldF9TUCA8LSBwbG90Lnh0cyhyZXRvcm5vX1NQNTAwLCBtYWluID0gIlJldG9ybm8gZGlhcmlvIHNpbXBsZSBTUDUwMCIsIHlsYWIgPSAiR1NQQy5DbG9zZSIpDQpncmFmX3JldF9TUA0KDQpgYGANClZlbW9zIGNvbW8gbG9zIG3DoXhpbW9zIHJldG9ybm9zIGRlc2RlIGVsIDIwMTUgdGFudG8gcG9zaXRpdm9zIGNvbW8gbmVnYXRpdm9zIGRlbCBTJlAgZnVlcm9uIGRlIGFscmVkZWRvciBkZSB1biAxJXkgdW4gLTEsNSUuIFNpbiBlbWJhcmdvIHZlbW9zIGNvbW8gbG9zIGRlbCBldGhlcmV1bSBzb24gbXVjaG8gbcOhcyBncmFuZGVzLCBoYWJpZW5kbyByZXRvcm5vcyBkZSBtw6FzIGRlbCAyLDUlIGUgaW5jbHVzbyBkZWwgNCUsIGxvIHF1ZSBlcyB1biBpbmRpY2lvIGRlIHVuYSBtYXlvciB2b2xhdGlsaWRhZCBkZWwgZXRoZXJldW0uDQoNCiMjIDxGT05UIENPTE9SPSJkM2E0NmEiPioqRGVzdmlhY2nDs24gZXN0w6FuZGFyKio8L0ZPTlQ+DQoNCkFob3JhIGNhbGN1bGFyZW1vcyBsYSBkZXN2aWFjacOzbiBlc3TDoW5kYXIgYW51YWxpemFkYSBkZSBlc3RvcyByZXRvcm5vcy4gUGFyYSBhbnVhbGl6YXIgbGEgZGVzdi4gZXN0YW5kYXIgZGVsIGV0aCBtdWx0aXBsaWNhbW9zIGxhIGRlc3ZpYWNpb24gZGUgbG9zIHJldG9ybm9zIHBvciBsYSByYWl6IGN1YWRyYWRhIGRlIDM2NSAobG9zIGRpYXMgcXVlIGNvdGl6YSBlbCBldGhlcmV1bSkuDQoNCmBgYHtyLGVjaG89RkFMU0V9DQogDQpkZXN2X2V0aCA8LSBzZChyZXRvcm5vX2V0aCkqc3FydCgzNjUpDQoNCg0KI0VuIGNhbWJpbywgcGFyYSBjYWxjdWxhciBsYSBkZWwgU1AsIG5vcyBiYXN0YSBsYSBpbnN0cnVjY2nDs24gU3RkRGV2LmFubnVhbGl6ZWQsIGVzdGEgaGFjZSBleGFjdGFtZW50ZSBsbyBtaXNtbyBxdWUgbGEgZm9ybXVsYSBhbnRlcmlvciwgcGVybyBtdWx0aXBsaWNhIGxhIGRlc3ZpYWNpb24gZGUgbG9zIHJldG9ybm9zIHBvciBsYSByYWl6IGRlIDI1MiwgcXVlIHNvbiBlbCBudW1lcm8gZGUgZGlhcyBxdWUgY290aXphIGVsIFNQIChsYSBib2xzYSDigJxjaWVycmHigJ0gbG9zIGZpbmRlcyBkZSBzZW1hbmEgeSBmZXN0aXZvcywgbGFzIGNyaXB0b21vbmVkYXMgbm8gbG8gaGFjZW4uKQ0KDQpkZXN2X1NQNTAwIDwtIFN0ZERldi5hbm51YWxpemVkKHJldG9ybm9fU1A1MDApDQoNCiANCnNkZjwtIGFzLmRhdGEuZnJhbWUoYyhkZXN2X2V0aCxkZXN2X1NQNTAwKSkgJT4lIA0KICBtdXRhdGUodmFyaWFibGU9IGMoIkVUSCIsICJTJlAiKSkgJT4lIHBpdm90X3dpZGVyKG5hbWVzX2Zyb20gPSAidmFyaWFibGUiLCB2YWx1ZXNfZnJvbSA9ICJjKGRlc3ZfZXRoLCBkZXN2X1NQNTAwKSIpDQoNCmxpYnJhcnkoZ3QpDQoNCnNkZiAlPiUgZ3QoKSAlPiUgdGFiX29wdGlvbnMoaGVhZGluZy5iYWNrZ3JvdW5kLmNvbG9yID0gIiNmYmY3ZjAiKSAlPiUgdGFiX29wdGlvbnMoaGVhZGluZy50aXRsZS5mb250LnNpemUgPSAxNSwgaGVhZGluZy5zdWJ0aXRsZS5mb250LnNpemUgPSAxMywgIGNvbHVtbl9sYWJlbHMuZm9udC53ZWlnaHQgPSAgImJvbGQiKQ0KDQpgYGANCg0KRW4gZXN0YSB0YWJsYSB2ZW1vcyBlbCB2YWxvciBkZSBsYSBkZXN2aWFjacOzbiBlc3TDoW5kYXIgcGFyYSBFVEggeSBwYXJhIGVsIMOtbmRpY2UgUyZQLCBlc3RhIHRhYmxhIHNlIGFjdHVhbGl6YSBkaWFyaWFtZW50ZSwgcG9yIGxvIHF1ZSBjYWRhIGTDrWEgdmVyZW1vcyB1bm9zIHZhbG9yZXMgZGlzdGludG9zLiBEYSBpZ3VhbCBlbCBkw61hIHF1ZSB2ZWFtb3MgZXN0bywgcXVlIHNpZW1wcmUgb2JzZXJ2YW1vcyB1biB2YWxvciBkZSBFVEggbXV5IHN1cGVyaW9yIGFsIGRlIFMmUA0KQSBtYXlvciBkZXN2aWFjacOzbiB0w61waWNhLCBtYXlvciB2YXJpYWNpw7NuIGRlbCBwcmVjaW8gZW50b3JubyBhIGxhIG1lZGlhIHF1ZSBwdWVkZSBhbGNhbnphciB1biBhY3Rpdm8sIHBvciBlbmRlLCBtYXlvciB2b2xhdGlsaWRhZC4gVmVtb3MgY29tbyBlbCBldGggZXMgbXVjaG8gbcOhcyB2b2zDoXRpbC4NCg0KDQojIyA8Rk9OVCBDT0xPUj0iZDNhNDZhIj4qKkRyYXdkb3duKio8L0ZPTlQ+DQoNClBvciB1bHRpbW8gIGNhbGN1bGFyZW1vcyBlbCBkcmF3ZG93biB5IGxvIHZlcmVtb3MgZW4gdW4gZ3LDoWZpY28sIHBhcmEgbm8gdGVuZXIgdW4gc29sbyBpbmRpY2Fkb3IgZGUgbGEgdm9sYXRpbGlkYWQgeSBwb2RlciBzZXIgYXPDrSBtw6FzIHByZWNpc29zIHkgdGVuZXIgbcOhcyBzZWd1cmlkYWQgc29icmUgbGEgaW5mb3JtYWNpw7NuLg0KDQpFbCBEcmF3ZG93biBsbyBkZWZpbmltb3MgY29tbyBsYSBww6lyZGlkYSBwb3JjZW50dWFsIGRlc2RlIGVsIMO6bHRpbW8gbcOheGltbyBtYXJjYWRvIHBvciBlbCBwcmVjaW8gZGVsIGFjdGl2by4gUG9yIGVqZW1wbG8sIHNpIGVsIMO6bHRpbW8gbcOheGltbyBmdWUgZGUgNzAgZMOzbGFyZXMgeSBhaG9yYSBlbCBwcmVjaW8gZXMgZGUgMzUgZMOzbGFyZXMsIG51ZXN0cm8gZHJhd2Rvd24gZXMgZGVsIDUwJSwgc2kgbWHDsWFuYSBudWVzdHJvIHByZWNpbyBlcyBkZSA1MCBkw7NsYXJlcywgbnVlc3RybyBkcmF3ZG93biBzZXLDoSBkZWwgMjgsNSUuIE9idmlhbWVudGUgc2kgcGFzYWRvIG1hw7FhbmEgbWFyY2Ftb3MgdW4gbnVldm8gbcOheGltbyBoaXN0w7NyaWNvLCBwb3IgZWplbXBsbyA4MCBkw7NsYXJlcywgbnVlc3RybyBkcmF3ZG93biBzZXLDoSBkZWwgMCUgYWwgbm8gaGFiZXIgdW4gcHJlY2lvIG3DoXhpbW8gYW50ZXJpb3IsIHkgZWwgbcOheGltbyBkZSByZWZlcmVuY2lhIHBhcmEgbG9zIHByw7N4aW1vcyBkb3duIHNpZGVzIHNlcsOhbiBlc29zIDgwJCwgaGFzdGEgcXVlIGVzdG9zIHNlIHZ1ZWx2YW4gYSBzdXBlcmFyLiBPYnZpYW1lbnRlIGEgbWF5b3JlcyBkcmF3ZG93bnMsIG3DoXMgdm9sw6F0aWwgZXMgZWwgYWN0aXZvLg0KDQpgYGB7ciwgZWNobz1GQUxTRX0NCmdyYWZfZG93bl9ldGggPC0gY2hhcnQuRHJhd2Rvd24ocmV0b3Jub19ldGgpDQpncmFmX2Rvd25fZXRoDQoNCmdyYWZfZG93X1NQIDwtIGNoYXJ0LkRyYXdkb3duKHJldG9ybm9fU1A1MDApDQpncmFmX2Rvd19TUA0KDQpgYGANClZlbW9zIGNvbW8gZWwgZHJhd2Rvd24gbcOheGltbyBkZWwgU1AgZXMgYWxyZWRlZG9yIGRlbCAzNSUgKGRlYmlkbyBhbCBjb25maW5hbWllbnRvKSwgbWllbnRyYXMgcXVlIGxvcyBkZWwgRXRoZXJldW0gdmVtb3MgY8OzbW8gc29uIHN1cGVyaW9yZXMgaW5jbHVzbyBhbCA4MCUuDQoNCkNvbiBsbyBjdWFsLCB2aWVuZG8gZXN0b3MgZGF0b3MgcG9kZW1vcyBkZWR1Y2lyIHF1ZSBsYXMgY3JpcHRvbW9uZWRhcyBzb24gdm9sw6F0aWxlcywgYWwgbWVub3MgbcOhcyBxdWUgZWwgU1A1MDAsIGNvbiBsbyBjdWFsIGHDum4gbm8gbGFzIHBvZGVtb3MgY29uc2lkZXJhciBhY3Rpdm9zIHJlZnVnaW9zLg0KDQo8YnI+DQoNCiMjIDxGT05UIENPTE9SPSJkM2E0NmEiPioqQ8OzZGlnbyoqPC9GT05UPg0KDQpgYGB7ciwgaW5jbHVkZT1UUlVFLCBldmFsPUZBTFNFfQ0KI0xvIHByaW1lcm8gZGUgdG9kbyBlcyBvYnRlbmVyIGxvcyBkYXRvcyAoYXVucXVlIGxvcyBkZWwgRVRIIHlhIGxvcyB0ZW5lbW9zIGdyYWNpYXMgYWwgYW7DoWxpc2lzIHTDqWNuaWNvIHJlYWxpemFkbyBhbnRlcmlvcm1lbnRlLiBMbyBzZWd1bmRvIHNlbGVjY2lvbmFtb3MgbG9zIGRhdG9zIGRlbCBwcmVjaW8gZGUgY2llcnJlLg0KDQpnZXRTeW1ib2xzKCJeR1NQQyIsIHNyYyA9ICJ5YWhvbyIsIGZyb20gPSAiMjAxNy0wMS0wMSIpDQpFVEggPC0gYEVUSC1VU0RgWywiRVRILVVTRC5DbG9zZSJdDQpTUDUwMCA8LSBgR1NQQ2BbLCJHU1BDLkNsb3NlIl0NCg0KI1NlZ3VuZG8sIGRlYmVtb3Mgb2J0ZW5lciBsb3MgcmV0b3Jub3MgKG5vc290cm9zIHVzYW1vcyBsb3MgcmV0b3Jub3Mgc2ltcGxlcykgZGVsIGV0aGVyZXVtLCB5YSBxdWUgY2FsY3VsYXJlbW9zIHkgbWVkaXJlbW9zIGxhIGRlc3ZpYWNpw7NuIGVzdMOhbmRhciB5IGxhIHZvbGF0aWxpZGFkIGRlIGVzdG9zLiBMb3MgcmV0b3Jub3Mgc2ltcGxlcyBzYSBjYWxjdWxhbiByZXN0YW5kbyBhbCBwcmVjaW8gYWN0dWFsIGVsIHByZWNpbyBhbnRlcmlvciB5IGRpdmllbmRvbG8gZW50cmUgZWwgcHJlY2lvIGFudGVyaW9yIC4gUGFyYSBlbGxvIHV0aWxpemFyZW1vcyB1bmEgaW5zdHJ1Y2Npw7NuIHF1ZSBsbyBoYWNlIGRlIGZvcm1hIGF1dG9tw6F0aWNhOg0KDQpyZXRvcm5vX2V0aCA8LSBuYS5vbWl0KFJldHVybi5jYWxjdWxhdGUoRVRIKSkNCnJldG9ybm9fU1A1MDAgPC0gbmEub21pdChSZXR1cm4uY2FsY3VsYXRlKFNQNTAwKSkNCg0KI2xvcyBwb2RlbW9zIHZlciBlbiB1biBncsOhZmljbyBtZWRpYW50ZSBsYSBzaWd1aWVudGUgaW5zdHJ1Y2Npw7NuOg0KDQpncmFmX3JldF9ldGggPC0gcGxvdC54dHMocmV0b3Jub19ldGgsIG1haW4gPSAiUmV0b3JubyBkaWFyaW8gc2ltcGxlIEVUSCIsIHlsYWIgPSAiRVRILVVTRC5DbG9zZSIpDQpncmFmX3JldF9ldGgNCg0KZ3JhZl9yZXRfU1AgPC0gcGxvdC54dHMocmV0b3Jub19TUDUwMCwgbWFpbiA9ICJSZXRvcm5vIGRpYXJpbyBzaW1wbGUgU1A1MDAiLCB5bGFiID0gIkdTUEMuQ2xvc2UiKQ0KZ3JhZl9yZXRfU1ANCg0KZGVzdl9ldGggPC0gc2QocmV0b3Jub19ldGgpKnNxcnQoMzY1KQ0KDQoNCiNFbiBjYW1iaW8sIHBhcmEgY2FsY3VsYXIgbGEgZGVsIFNQLCBub3MgYmFzdGEgbGEgaW5zdHJ1Y2Npw7NuIFN0ZERldi5hbm51YWxpemVkLCBlc3RhIGhhY2UgZXhhY3RhbWVudGUgbG8gbWlzbW8gcXVlIGxhIGZvcm11bGEgYW50ZXJpb3IsIHBlcm8gbXVsdGlwbGljYSBsYSBkZXN2aWFjaW9uIGRlIGxvcyByZXRvcm5vcyBwb3IgbGEgcmFpeiBkZSAyNTIsIHF1ZSBzb24gZWwgbnVtZXJvIGRlIGRpYXMgcXVlIGNvdGl6YSBlbCBTUCAobGEgYm9sc2Eg4oCcY2llcnJh4oCdIGxvcyBmaW5kZXMgZGUgc2VtYW5hIHkgZmVzdGl2b3MsIGxhcyBjcmlwdG9tb25lZGFzIG5vIGxvIGhhY2VuLikNCg0KZGVzdl9TUDUwMCA8LSBTdGREZXYuYW5udWFsaXplZChyZXRvcm5vX1NQNTAwKQ0KDQogDQpzZGY8LSBhcy5kYXRhLmZyYW1lKGMoZGVzdl9ldGgsZGVzdl9TUDUwMCkpICU+JSANCiAgbXV0YXRlKHZhcmlhYmxlPSBjKCJFVEgiLCAiUyZQIikpICU+JSBwaXZvdF93aWRlcihuYW1lc19mcm9tID0gInZhcmlhYmxlIiwgdmFsdWVzX2Zyb20gPSAiYyhkZXN2X2V0aCwgZGVzdl9TUDUwMCkiKQ0KDQpsaWJyYXJ5KGd0KQ0KDQpzZGYgJT4lIGd0KCkgJT4lIHRhYl9vcHRpb25zKGhlYWRpbmcuYmFja2dyb3VuZC5jb2xvciA9ICIjZmJmN2YwIikgJT4lIHRhYl9vcHRpb25zKGhlYWRpbmcudGl0bGUuZm9udC5zaXplID0gMTUsIGhlYWRpbmcuc3VidGl0bGUuZm9udC5zaXplID0gMTMsICBjb2x1bW5fbGFiZWxzLmZvbnQud2VpZ2h0ID0gICJib2xkIikNCg0KZ3JhZl9kb3duX2V0aCA8LSBjaGFydC5EcmF3ZG93bihyZXRvcm5vX2V0aCkNCmdyYWZfZG93bl9ldGgNCg0KZ3JhZl9kb3dfU1AgPC0gY2hhcnQuRHJhd2Rvd24ocmV0b3Jub19TUDUwMCkNCmdyYWZfZG93X1NQDQoNCmBgYA0KDQo8YnI+DQoNCiMgMTAuIENvcnJlbGFjacOzbiBlbnRyZSBjcmlwdG9tb25lZGFzIHsudGFic2V0fQ0KDQojIyA8Rk9OVCBDT0xPUj0iZDNhNDZhIj4qKkJldGEgKGNvcnJlbGFjacOzbikgZGVsIHJldG9ybm8gZGlhcmlvIGRlIGFsdGNvaW5zIHJlc3BlY3RvIGEgQlRDKio8L0ZPTlQ+DQoNCg0KVG9kb3MgaGVtb3Mgb8OtZG8gaGFibGFyIGRlIGJpdGNvaW4sIHlhIHF1ZSBlc3RhIGVzIGxhIGNyaXB0b21vbmVkYSBtw6FzIHBvcHVsYXIgeSBsYSBxdWUgZXN0w6EgbGxhbWFkYSBhIHNlciBlbCDigJxkaW5lcm8gZGVsIGZ1dHVyb+KAnSwgc2luIGVtYmFyZ28sIG5vIHBvZGVtb3Mgb2x2aWRhciBxdWUgZXhpc3RlbiBtdWNoYXMgbcOhcyBjcmlwdG9tb25lZGFzLg0KDQpFbiBlc3RlIGFwYXJ0YWRvLCBub3MgdmFtb3MgYSBjZW50cmFyIGVuIGFuYWxpemFyIHNpIGJpdGNvaW4gaW5mbHV5ZSBvIOKAnGFycmFzdHJhIGEgbGFzIGRlbcOhcyBjcmlwdG9tb25lZGFzIG8gYWx0Y29pbnPigJ0uIChVbmEgYWx0Y29pbiBlcyB1bmEgY3JpcHRvbW9uZWRhIGRlIGJhamEgY2FwaXRhbGl6YWNpw7NuIHkgcXVlIHN1ZWxlIHNlciBtdXkgdm9sw6F0aWwuIExvIGhhcmVtb3MgYSB0cmF2w6lzIGRlIGxhIGJldGEgZGUgYml0Y29pbiB5IGxhcyBhbHRjb2lucyBjYXJkYW5vLCBzb2xhbmEsIGlvdGEsIGRvZ2Vjb2luLCB0ZXJyYSB5IFBvbGthZG90Lg0KDQpMYSBiZXRhIGxhIGRlZmluaW1vcyBjb21vIGVsIHRhbnRvICUgcXVlIHN1YmUgbyBiYWphIHVuIGFjdGl2byByZXNwZWN0byBhIHVuIGF1bWVudG8gZGUgMSUgZGVsIGFjdGl2byBkZSByZWZlcmVuY2lhIChlc3RlIHN1ZWxlIHNlciB1biDDrW5kaWNlIGN1YW5kbyBhbmFsaXphbW9zIGFjY2lvbmVzLCBwb3IgZWplbXBsbyBlbCBTUDUwMCBvIGVsIE5hc2RhcSwgZW4gbnVlc3RybyBjYXNvIGxhIHJlZmVyZW5jaWEgc2Vyw6EgYml0Y29pbikuDQoNCmBgYHtyLCBlY2hvPUZBTFNFfQ0KI1ByaW1lcm8gZGVzY2FyZ2Ftb3MgbG9zIGRhdG9zIGRlIHlhaG9vIGZpbmFuY2UgYSB0cmF2ZXMgZGUgZ2V0U3ltYm9scyBncmFjaWFzIGFsIHBhcXVldGUgcXVhbnRtb2QuIEFuYWxpemFyZW1vcyBsb3MgZGF0b3MgZGUgZXN0ZSDDumx0aW1vIGHDsW8uDQoNCmw8LWdldFN5bWJvbHMoIkJUQy1VU0QiLCBzcmMgPSAieWFob28iLCBmcm9tID0gIjIwMjEtMDEtMDEiKQ0KDQpsPC1nZXRTeW1ib2xzKCJBREEtVVNEIiwgc3JjID0gInlhaG9vIiwgZnJvbSA9ICIyMDIxLTAxLTAxIikNCg0KbDwtZ2V0U3ltYm9scygiU09MMS1VU0QiLCBzcmMgPSAieWFob28iLCBmcm9tID0gIjIwMjEtMDEtMDEiKQ0KDQpsPC1nZXRTeW1ib2xzKCJNSU9UQS1VU0QiLCBzcmMgPSAieWFob28iLCBmcm9tID0gIjIwMjEtMDEtMDEiKQ0KDQpsPC1nZXRTeW1ib2xzKCJET0dFLVVTRCIsIHNyYyA9ICJ5YWhvbyIsIGZyb20gPSAiMjAyMS0wMS0wMSIpDQoNCmw8LWdldFN5bWJvbHMoIkxVTkExLVVTRCIsIHNyYyA9ICJ5YWhvbyIsIGZyb20gPSAiMjAyMS0wMS0wMSIpDQoNCmw8LWdldFN5bWJvbHMoIkRPVDEtVVNEIiwgc3JjID0gInlhaG9vIiwgZnJvbSA9ICIyMDIxLTAxLTAxIikNCg0KI1NlZ3VuZG8gc2VsZWNjaW9uYW1vcyBlbCBwcmVjaW8gZGUgY2llcnJlIHkgY2FsY3VsYW1vcyBsb3MgcmV0b3Jub3Mgc2ltcGxlcy4gKExhIGVzdGltYWNpw7NuIGRlIGxhIGJldGEgZGUgdW4gYWN0aXZvIGRlYmUgaGFjZXJzZSBzb2JyZSBsb3MgcmV0b3Jub3MsIG5vIHNvYnJlIHN1IHByZWNpbykuDQoNCkJUQyA8LSBgQlRDLVVTRGBbLCJCVEMtVVNELkNsb3NlIl0NCg0KQURBIDwtIGBBREEtVVNEYFssIkFEQS1VU0QuQ2xvc2UiXQ0KDQpTT0wgPC0gYFNPTDEtVVNEYFssIlNPTDEtVVNELkNsb3NlIl0NCg0KSU9UQSA8LSBgTUlPVEEtVVNEYFssIk1JT1RBLVVTRC5DbG9zZSJdDQoNCkRPR0UgPC0gYERPR0UtVVNEYFssIkRPR0UtVVNELkNsb3NlIl0NCg0KVEVSUkEgPC0gYExVTkExLVVTRGBbLCJMVU5BMS1VU0QuQ2xvc2UiXQ0KDQpQT0xLQSA8LSBgRE9UMS1VU0RgWywiRE9UMS1VU0QuQ2xvc2UiXQ0KDQoNCnJldG9ybm9fYnRjX2NvcnIgPC0gbmEub21pdChSZXR1cm4uY2FsY3VsYXRlKEJUQykpDQoNCnJldG9ybm9fYWRhX2NvcnIgPC0gbmEub21pdChSZXR1cm4uY2FsY3VsYXRlKEFEQSkpDQoNCnJldG9ybm9fc29sX2NvcnIgPC0gbmEub21pdChSZXR1cm4uY2FsY3VsYXRlKFNPTCkpDQoNCnJldG9ybm9faW90YV9jb3JyIDwtIG5hLm9taXQoUmV0dXJuLmNhbGN1bGF0ZShJT1RBKSkNCg0KcmV0b3Jub19kb2dlX2NvcnIgPC0gbmEub21pdChSZXR1cm4uY2FsY3VsYXRlKERPR0UpKQ0KDQpyZXRvcm5vX3RlcnJhX2NvcnIgPC0gbmEub21pdChSZXR1cm4uY2FsY3VsYXRlKFRFUlJBKSkNCg0KcmV0b3Jub19wb2xrYV9jb3JyIDwtIG5hLm9taXQoUmV0dXJuLmNhbGN1bGF0ZShQT0xLQSkpDQoNCiNBaG9yYSBzb2xvIG5vcyBxdWVkYSBjYWxjdWxhciBsYSBiZXRhDQpgYGANCg0KYGBge3IsIGVjaG89RkFMU0V9DQpiZXRhX2FkYSA8LSBDQVBNLmJldGEocmV0b3Jub19hZGFfY29yciwgcmV0b3Jub19idGNfY29ycikNCg0KYmV0YV9zb2wgPC0gQ0FQTS5iZXRhKHJldG9ybm9fc29sX2NvcnIsIHJldG9ybm9fYnRjX2NvcnIpDQoNCmJldGFfaW90YSA8LSBDQVBNLmJldGEocmV0b3Jub19pb3RhX2NvcnIsIHJldG9ybm9fYnRjX2NvcnIpDQoNCmJldGFfZG9nZSA8LSBDQVBNLmJldGEocmV0b3Jub19kb2dlX2NvcnIsIHJldG9ybm9fYnRjX2NvcnIpDQoNCmJldGFfdGVycmEgPC0gQ0FQTS5iZXRhKHJldG9ybm9fdGVycmFfY29yciwgcmV0b3Jub19idGNfY29ycikNCg0KYmV0YV90ZXJyYV9kZiA8LSBhcy5kYXRhLmZyYW1lKGJldGFfdGVycmEpDQoNCmJldGFfcG9sa2EgPC0gQ0FQTS5iZXRhKHJldG9ybm9fcG9sa2FfY29yciwgcmV0b3Jub19idGNfY29ycikNCmJldGFfcG9sa2FfZGYgPC0gYXMuZGF0YS5mcmFtZShiZXRhX3BvbGthKQ0KDQpgYGANCg0KDQpQb3IgY2FkYSAxJSBxdWUgYXVtZW50YSBlbCBidGMsIEFEQSBhdW1lbnRhIHVuIDAsOTIlLg0KUG9yIGNhZGEgMSUgcXVlIGF1bWVudGEgZWwgYnRjLCBTT0wgYXVtZW50YSB1biAwLDc3JQ0KUG9yIGNhZGEgMSUgcXVlIGF1bWVudGEgZWwgYnRjLCBJT1QgYXVtZW50YSB1biAxLDE2JQ0KUG9yIGNhZGEgMSUgcXVlIGF1bWVudGEgZWwgYnRjLCBET0dFIGF1bWVudGEgdW4gMSw0JQ0KUG9yIGNhZGEgMSUgcXVlIGF1bWVudGEgZWwgYnRjLCB0ZXJyYSBhdW1lbnRhIHVuIDEsMjElDQpQb3IgY2FkYSAxJSBxdWUgYXVtZW50YSBlbCBidGMsIHBvbGthZG90IGF1bWVudGEgdW4gMSwyMyUNCg0KYGBge3IsIGVjaG89RkFMU0V9DQoNCmRmX2FkYSA8LSBhcy5kYXRhLmZyYW1lKGJldGFfYWRhKQ0KZGZfc29sIDwtIGFzLmRhdGEuZnJhbWUoYmV0YV9zb2wpDQpkZl9pb3RhIDwtIGFzLmRhdGEuZnJhbWUoYmV0YV9pb3RhKQ0KZGZfZG9nZSA8LSBhcy5kYXRhLmZyYW1lKGJldGFfZG9nZSkNCmRmX3RlcnJhIDwtIGFzLmRhdGEuZnJhbWUoYmV0YV90ZXJyYSkNCmRmX3BvbGthIDwtIGFzLmRhdGEuZnJhbWUoYmV0YV9wb2xrYSkNCg0KI2NyZWFjaW9uIGRhdGFmcmFtZSBiZXRhcw0KZGZfYmV0YXMgPC0gYmluZF9jb2xzKGRmX2FkYSwgZGZfc29sLCBkZl9pb3RhLCBkZl9kb2dlLCBkZl90ZXJyYSwgZGZfcG9sa2EpDQoNCnJvd25hbWVzKGRmX2JldGFzKSA8LSBjKCJiZXRhcyIpDQoNCmRmX2JldGFzIDwtIGRmX2JldGFzICU+JSB0KCkNCg0KZGZfYmV0YXMgPC0gYXMuZGF0YS5mcmFtZShkZl9iZXRhcykNCg0KY29sbmFtZXMoZGZfYmV0YXMpICA8LSBjKCJiZXRhcyIpDQoNCmRmX2JldGFzX2dyYWYgPC0gZGZfYmV0YXMgJT4lIG11dGF0ZShDcmlwdG8gPSBjKCJBREEiLCAiU09MIiwiSU9UQSIsICJET0dFIiwgIlRFUlJBIiwgIlBPTEtBIikpDQoNCnAgPC0gZ2dwbG90KGRmX2JldGFzX2dyYWYsIGFlcyh4ID0gQ3JpcHRvLCB5ID0gYmV0YXMsIGZpbGwgPSAiI2ZiZjdmMCIpKQ0KZ3JhZmljbyA8LSBwICsgZ2VvbV9jb2woKSArIGNvb3JkX3BvbGFyKCkNCmdyYWZpY28gKyB0aGVtZShheGlzLnRpY2tzID0gZWxlbWVudF9saW5lKHNpemUgPSAwKSwNCiAgICBwYW5lbC5ncmlkLm1ham9yID0gZWxlbWVudF9saW5lKGNvbG91ciA9ICJicm93bjQiKSwNCiAgICBwYW5lbC5ncmlkLm1pbm9yID0gZWxlbWVudF9saW5lKGNvbG91ciA9ICJncmVlbiIpLA0KICAgIGF4aXMudGV4dCA9IGVsZW1lbnRfdGV4dChmYW1pbHkgPSAiSGVsdmV0aWNhLU5hcnJvdyIpLA0KICAgIGF4aXMudGV4dC54ID0gZWxlbWVudF90ZXh0KGZhbWlseSA9ICJUaW1lcyIpLA0KICAgIHBhbmVsLmJhY2tncm91bmQgPSBlbGVtZW50X3JlY3QoZmlsbCA9ICIjZmJmN2YwIiksDQogICAgcGxvdC5iYWNrZ3JvdW5kID0gZWxlbWVudF9yZWN0KGZpbGwgPSAiI2ZiZjdmMCIpLA0KICAgIHN0cmlwLnRleHQgPSBlbGVtZW50X3RleHQoY29sb3VyID0gInBvd2RlcmJsdWUiKSkgK2xhYnModGl0bGUgPSAiQmV0YXMgQWx0Y29pbnMtQlRDIiwgeCA9IE5VTEwsDQogICAgeSA9IE5VTEwpICsgdGhlbWUobGVnZW5kLnBvc2l0aW9uID0gIm5vbmUiKQ0KDQpgYGANCg0KQ29tbyBjb25jbHVzacOzbiwgcG9yIHRhbnRvIHBvZGVtb3MgZGVjaXIgcXVlIGV4aXN0ZSB1bmEgZ3JhbiBjb3JyZWxhY2nDs24gY29uIEJpdGNvaW4gcG9yIHBhcnRlIGRlIGxhcyBjcmlwdG9tb25lZGFzIGVzdHVkaWFkYXMuIEVsIGNhc28gZGUgU29sYW5hIGVzIGxhIHF1ZSBwcmVzZW50YSB1bmEgY29ycmVsYWNpw7NuIG3DoXMgYmFqYSwgeSwgYcO6biBhc8OtLCBlcyBkZSAwLDc3Lg0KDQojIyA8Rk9OVCBDT0xPUj0iZDNhNDZhIj4qKkPDs2RpZ28qKjwvRk9OVD4NCg0KYGBge3IsIGV2YWw9RkFMU0UsIGluY2x1ZGU9VFJVRX0NCiNQcmltZXJvIGRlc2NhcmdhbW9zIGxvcyBkYXRvcyBkZSB5YWhvbyBmaW5hbmNlIGEgdHJhdmVzIGRlIGdldFN5bWJvbHMgZ3JhY2lhcyBhbCBwYXF1ZXRlIHF1YW50bW9kLiBBbmFsaXphcmVtb3MgbG9zIGRhdG9zIGRlIGVzdGUgw7psdGltbyBhw7FvLg0KDQpsPC1nZXRTeW1ib2xzKCJCVEMtVVNEIiwgc3JjID0gInlhaG9vIiwgZnJvbSA9ICIyMDIxLTAxLTAxIikNCg0KbDwtZ2V0U3ltYm9scygiQURBLVVTRCIsIHNyYyA9ICJ5YWhvbyIsIGZyb20gPSAiMjAyMS0wMS0wMSIpDQoNCmw8LWdldFN5bWJvbHMoIlNPTDEtVVNEIiwgc3JjID0gInlhaG9vIiwgZnJvbSA9ICIyMDIxLTAxLTAxIikNCg0KbDwtZ2V0U3ltYm9scygiTUlPVEEtVVNEIiwgc3JjID0gInlhaG9vIiwgZnJvbSA9ICIyMDIxLTAxLTAxIikNCg0KbDwtZ2V0U3ltYm9scygiRE9HRS1VU0QiLCBzcmMgPSAieWFob28iLCBmcm9tID0gIjIwMjEtMDEtMDEiKQ0KDQpsPC1nZXRTeW1ib2xzKCJMVU5BMS1VU0QiLCBzcmMgPSAieWFob28iLCBmcm9tID0gIjIwMjEtMDEtMDEiKQ0KDQpsPC1nZXRTeW1ib2xzKCJET1QxLVVTRCIsIHNyYyA9ICJ5YWhvbyIsIGZyb20gPSAiMjAyMS0wMS0wMSIpDQoNCiNTZWd1bmRvIHNlbGVjY2lvbmFtb3MgZWwgcHJlY2lvIGRlIGNpZXJyZSB5IGNhbGN1bGFtb3MgbG9zIHJldG9ybm9zIHNpbXBsZXMuIChMYSBlc3RpbWFjacOzbiBkZSBsYSBiZXRhIGRlIHVuIGFjdGl2byBkZWJlIGhhY2Vyc2Ugc29icmUgbG9zIHJldG9ybm9zLCBubyBzb2JyZSBzdSBwcmVjaW8pLg0KDQpCVEMgPC0gYEJUQy1VU0RgWywiQlRDLVVTRC5DbG9zZSJdDQoNCkFEQSA8LSBgQURBLVVTRGBbLCJBREEtVVNELkNsb3NlIl0NCg0KU09MIDwtIGBTT0wxLVVTRGBbLCJTT0wxLVVTRC5DbG9zZSJdDQoNCklPVEEgPC0gYE1JT1RBLVVTRGBbLCJNSU9UQS1VU0QuQ2xvc2UiXQ0KDQpET0dFIDwtIGBET0dFLVVTRGBbLCJET0dFLVVTRC5DbG9zZSJdDQoNClRFUlJBIDwtIGBMVU5BMS1VU0RgWywiTFVOQTEtVVNELkNsb3NlIl0NCg0KUE9MS0EgPC0gYERPVDEtVVNEYFssIkRPVDEtVVNELkNsb3NlIl0NCg0KDQpyZXRvcm5vX2J0Y19jb3JyIDwtIG5hLm9taXQoUmV0dXJuLmNhbGN1bGF0ZShCVEMpKQ0KDQpyZXRvcm5vX2FkYV9jb3JyIDwtIG5hLm9taXQoUmV0dXJuLmNhbGN1bGF0ZShBREEpKQ0KDQpyZXRvcm5vX3NvbF9jb3JyIDwtIG5hLm9taXQoUmV0dXJuLmNhbGN1bGF0ZShTT0wpKQ0KDQpyZXRvcm5vX2lvdGFfY29yciA8LSBuYS5vbWl0KFJldHVybi5jYWxjdWxhdGUoSU9UQSkpDQoNCnJldG9ybm9fZG9nZV9jb3JyIDwtIG5hLm9taXQoUmV0dXJuLmNhbGN1bGF0ZShET0dFKSkNCg0KcmV0b3Jub190ZXJyYV9jb3JyIDwtIG5hLm9taXQoUmV0dXJuLmNhbGN1bGF0ZShURVJSQSkpDQoNCnJldG9ybm9fcG9sa2FfY29yciA8LSBuYS5vbWl0KFJldHVybi5jYWxjdWxhdGUoUE9MS0EpKQ0KDQojQWhvcmEgc29sbyBub3MgcXVlZGEgY2FsY3VsYXIgbGEgYmV0YQ0KDQpiZXRhX2FkYSA8LSBDQVBNLmJldGEocmV0b3Jub19hZGFfY29yciwgcmV0b3Jub19idGNfY29ycikNCg0KYmV0YV9zb2wgPC0gQ0FQTS5iZXRhKHJldG9ybm9fc29sX2NvcnIsIHJldG9ybm9fYnRjX2NvcnIpDQoNCmJldGFfaW90YSA8LSBDQVBNLmJldGEocmV0b3Jub19pb3RhX2NvcnIsIHJldG9ybm9fYnRjX2NvcnIpDQoNCmJldGFfZG9nZSA8LSBDQVBNLmJldGEocmV0b3Jub19kb2dlX2NvcnIsIHJldG9ybm9fYnRjX2NvcnIpDQoNCmJldGFfdGVycmEgPC0gQ0FQTS5iZXRhKHJldG9ybm9fdGVycmFfY29yciwgcmV0b3Jub19idGNfY29ycikNCg0KYmV0YV90ZXJyYV9kZiA8LSBhcy5kYXRhLmZyYW1lKGJldGFfdGVycmEpDQoNCmJldGFfcG9sa2EgPC0gQ0FQTS5iZXRhKHJldG9ybm9fcG9sa2FfY29yciwgcmV0b3Jub19idGNfY29ycikNCmJldGFfcG9sa2FfZGYgPC0gYXMuZGF0YS5mcmFtZShiZXRhX3BvbGthKQ0KDQoNCmRmX2FkYSA8LSBhcy5kYXRhLmZyYW1lKGJldGFfYWRhKQ0KZGZfc29sIDwtIGFzLmRhdGEuZnJhbWUoYmV0YV9zb2wpDQpkZl9pb3RhIDwtIGFzLmRhdGEuZnJhbWUoYmV0YV9pb3RhKQ0KZGZfZG9nZSA8LSBhcy5kYXRhLmZyYW1lKGJldGFfZG9nZSkNCmRmX3RlcnJhIDwtIGFzLmRhdGEuZnJhbWUoYmV0YV90ZXJyYSkNCmRmX3BvbGthIDwtIGFzLmRhdGEuZnJhbWUoYmV0YV9wb2xrYSkNCg0KI2NyZWFjaW9uIGRhdGFmcmFtZSBiZXRhcw0KZGZfYmV0YXMgPC0gYmluZF9jb2xzKGRmX2FkYSwgZGZfc29sLCBkZl9pb3RhLCBkZl9kb2dlLCBkZl90ZXJyYSwgZGZfcG9sa2EpDQoNCnJvd25hbWVzKGRmX2JldGFzKSA8LSBjKCJiZXRhcyIpDQoNCmRmX2JldGFzIDwtIGRmX2JldGFzICU+JSB0KCkNCg0KZGZfYmV0YXMgPC0gYXMuZGF0YS5mcmFtZShkZl9iZXRhcykNCg0KY29sbmFtZXMoZGZfYmV0YXMpICA8LSBjKCJiZXRhcyIpDQoNCmRmX2JldGFzX2dyYWYgPC0gZGZfYmV0YXMgJT4lIG11dGF0ZShDcmlwdG8gPSBjKCJBREEiLCAiU09MIiwiSU9UQSIsICJET0dFIiwgIlRFUlJBIiwgIlBPTEtBIikpDQoNCnAgPC0gZ2dwbG90KGRmX2JldGFzX2dyYWYsIGFlcyh4ID0gQ3JpcHRvLCB5ID0gYmV0YXMsIGZpbGwgPSAiI2ZiZjdmMCIpKQ0KZ3JhZmljbyA8LSBwICsgZ2VvbV9jb2woKSArIGNvb3JkX3BvbGFyKCkNCmdyYWZpY28gKyB0aGVtZShheGlzLnRpY2tzID0gZWxlbWVudF9saW5lKHNpemUgPSAwKSwNCiAgICBwYW5lbC5ncmlkLm1ham9yID0gZWxlbWVudF9saW5lKGNvbG91ciA9ICJicm93bjQiKSwNCiAgICBwYW5lbC5ncmlkLm1pbm9yID0gZWxlbWVudF9saW5lKGNvbG91ciA9ICJncmVlbiIpLA0KICAgIGF4aXMudGV4dCA9IGVsZW1lbnRfdGV4dChmYW1pbHkgPSAiSGVsdmV0aWNhLU5hcnJvdyIpLA0KICAgIGF4aXMudGV4dC54ID0gZWxlbWVudF90ZXh0KGZhbWlseSA9ICJUaW1lcyIpLA0KICAgIHBhbmVsLmJhY2tncm91bmQgPSBlbGVtZW50X3JlY3QoZmlsbCA9ICIjZmJmN2YwIiksDQogICAgcGxvdC5iYWNrZ3JvdW5kID0gZWxlbWVudF9yZWN0KGZpbGwgPSAiI2ZiZjdmMCIpLA0KICAgIHN0cmlwLnRleHQgPSBlbGVtZW50X3RleHQoY29sb3VyID0gInBvd2RlcmJsdWUiKSkgK2xhYnModGl0bGUgPSAiQmV0YXMgQWx0Y29pbnMtQlRDIiwgeCA9IE5VTEwsDQogICAgeSA9IE5VTEwpICsgdGhlbWUobGVnZW5kLnBvc2l0aW9uID0gIm5vbmUiKQ0KDQpgYGANCg0KIyAxMS4gQ29uY2x1c2nDs24NCg0KQSBsbyBsYXJnbyBkZWwgdHJhYmFqbyBoZW1vcyBsbGVnYWRvIGEgdmFyaWFzIGNvbmNsdXNpb25lczoNCkVuIHByaW1lciBsdWdhciwgcXVlIG5vIHBvciBzZXIgbGEgbcOhcyBmYW1vc2EsIEJpdGNvaW4gZXMgbGEgY3JpcHRvbW9uZWRhIHByaW5jaXBhbCBlbiBsb3MgbWVyY2Fkb3MuDQpBZGVtw6FzLCBoZW1vcyB2aXN0byBjw7NtbyBzZSBwdWVkZW4gYWRhcHRhciBtdWNob3MgaW5kaWNhZG9yZXMgdXNhZG9zIGVuIGVsIGFuw6FsaXNpcyB0w6ljbmljbyBkZSBhY2Npb25lcyB5IG90cmFzIGRpdmlzYXMgYWwgbWVyY2FkbyBkZSBsYXMgY3JpcHRvbW9uZWRhcy4NCg0KUGVybywgdW5hIGRlIGxhcyBwcmluY2lwYWxlcyBjb25jbHVzaW9uZXMgYSBsYXMgcXVlIGhlbW9zIGxsZWdhZG8gZXMgcXVlIGxhcyBjcmlwdG9tb25lZGFzIGVzIGFsZ28gYSB0ZW5lciBlbiBjdWVudGEgZW4gZXN0b3MgYcOxb3MgeSBlbiBlbCBmdXR1cm8gcG9yIGxvcyBwcm95ZWN0b3MgZGUgYmxvY2tjaGFpbiBxdWUgaGF5IGRldHLDoXMsIHBlcm8sIHNpbiBkdWRhLCB0YW1iacOpbiBzb24gdW4gcGVsaWdybyBwYXJhIGVsIHNpc3RlbWEgbW9uZXRhcmlvIHkgaGVtb3MgY29tcHJvYmFkbyBsbyB2b2zDoXRpbGVzIHF1ZSBzb24gZW4gY29tcGFyYWNpw7NuIGNvbiBvdHJvcyBhY3Rpdm9zLiBTaSBiaWVuLCBwdWVkZSBzZXIgaW50ZXJlc2FudGUgZXN0dWRpYXIgc3UgZXZvbHVjacOzbiB5IHN1IGFuw6FsaXNpcywgYcO6biBlcyBwcm9udG8gcGFyYSBvcHRhciBwb3IgZWxsYXMgY29tbyBtZWNhbmlzbW8gcGFyYSBoYWNlciBsYXMgdHJhbnNhY2Npb25lcyBkZSBudWVzdHJvIGTDrWEgYSBkw61hIHkgbcOhcyBhw7puIGNvbW8gbWVjYW5pc21vIHBhcmEgcHJlc2VydmFyIG51ZXN0cm8gcG9kZXIgYWRxdWlzaXRpdm8uDQoNCkVuIGFsdXNpw7NuIGEgbG8gw7psdGltbyBkaWNobywgdGVybWluYW1vcyBsYSBjb25jbHVzacOzbiBjb24gZXN0YSBhZmlybWFjacOzbiBkZWwgZWNvbm9taXN0YSBQaGlsaXBwIEhlaW1iZXJnZXI6DQoNCmBgYHtyLCBlY2hvID0gRkFMU0UsIG91dC53aWR0aCA9ICI2MCUifQ0KdHdlZXRybWQ6OnR3ZWV0X2VtYmVkKCJodHRwczovL3R3aXR0ZXIuY29tL2hlaW1iZXJnZWNvbi9zdGF0dXMvMTQ3MDYzODExMTExMzg1MDg4MCIsIHRoZW1lID0gImxpZ2h0IiwgYWxpZ24gPSAiY2VudGVyIiwgZG50ID0gVFJVRSwgbWF4d2lkdGggPSA0MDApDQpgYGANCg0KDQojIDEyLiBUcmFiYWpvcyBlbiBsb3MgcXVlIHRlIGhhcyBiYXNhZG8NCg0KQW5hbGlzaXMgVGVjbmljbzogQW5hbGlzaXMgVMOpY25pY28gZGVsIEJpdGNvaW4sIEplc3VzIEIuWmVycGEsIFJwdWJzDQoNClByZWRpY2Npw7NuIFByZWNpbzogUHJvbm9zdGljb3MgZGVsIEJpdGNvaW4geSBFdGhlciB1c2FuZG8gcHJvcGhldCwgSmVzdXMgQi5aZXJwYSwgUnB1YnMNCg0KVGFibGE6IFtSaWRpbmcgdGFibGVzIHdpdGggZ3QgYW5kIGd0RXh0cmFzXShodHRwczovL2Jqbm5vd2FrLm5ldGxpZnkuYXBwLzIwMjEvMTAvMDQvci1iZWF1dGlmdWwtdGFibGVzLXdpdGgtZ3QtYW5kLWd0ZXh0cmFzLykNCg0KQmFyIGNoYXJ0IHJhY2U6IFtSb2JzZXJ2YWJsZV0oaHR0cHM6Ly9vYnNlcnZhYmxlaHEuY29tL0BqdWJhL2Jhci1jaGFydC1yYWNlKQ0KDQpDb3JyZWxhY2nDs24gYXBhcmljacOzbiBkZSBudWV2YXMgY3JpcHRvbW9uZWRhcy0gcHJlY2lvIEJUQywgcmVmZXJlbmNpYSBkZSBwbG90X3NjaG9vbF9zaG9vdGluZyB2aXN0byBlbiBjbGFzZQ0KDQoNCiMgMTMuIEJpYmxpb2dyYWbDrWENCg0KW0FuYWxpc2lzIFRlY25pY29dKGh0dHBzOi8vd3d3LnJwdWJzLmNvbS9KZXN1c1ovYW5hbGlzaXNfdGVjbmljby1idGMpDQoNCltQcmVkaWNpY2Npb24gUHJlY2lvXShodHRwczovL3d3dy5ycHVicy5jb20vSmVzdXNaL2JpdGNvaW5fZXRoZXJfcHJvcGhldCkNCg0KW1JldG9ybm9zLCBEb3duc2lkZXMsIEJldGFzXShodHRwczovL21leGlxdWFudC5zdWJzdGFjay5jb20vcC9hbmFsaXphbmRvLWVsLXJpZXNnby1kZS11bmEtYWNjaW9uKQ0KDQpbRnVlbnRlc10oaHR0cHM6Ly9mb250YXdlc29tZS5jb20vdjUuMTUvaWNvbnM/ZD1nYWxsZXJ5JnA9MiZtPWZyZWUpDQoNCltQYcOtc2VzXShodHRwczovL2NvaW4uZGFuY2UvKQ0KDQpbQ2FydG9ncmFwaHldKGh0dHBzOi8vY3Jhbi5yLXByb2plY3Qub3JnL3dlYi9wYWNrYWdlcy9jYXJ0b2dyYXBoeS92aWduZXR0ZXMvY2FydG9ncmFwaHkuaHRtbCkNCg0KDQo8YnI+PGJyPg0KDQo8aHIgY2xhc3M9ImxpbmVhLXJlZCI+DQo8aHIgY2xhc3M9ImxpbmVhLXJlZCI+DQoNCg0KYGBge3IsIGVjaG8gPSBGQUxTRX0NCnNlc3Npb25pbmZvOjpzZXNzaW9uX2luZm8oKSAlPiUgZGV0YWlsczo6ZGV0YWlscyhzdW1tYXJ5ID0gJ0luZm9ybWFjacOzbiBkZSBtaSBSLXNlc2nDs246JykgDQpgYGANCg0KDQo8YnI+PGJyPg0KDQo8ZGl2IGNsYXNzPSJ0b2NpZnktZXh0ZW5kLXBhZ2UiIGRhdGEtdW5pcXVlPSJ0b2NpZnktZXh0ZW5kLXBhZ2UiIHN0eWxlPSJoZWlnaHQ6IDA7Ij48L2Rpdj4NCjxicj48YnI+DQoNCjxkaXYgY2xhc3M9InRvY2lmeS1leHRlbmQtcGFnZSIgZGF0YS11bmlxdWU9InRvY2lmeS1leHRlbmQtcGFnZSIgc3R5bGU9ImhlaWdodDogMDsiPjwvZGl2Pg0K