Integrantes del equipo:

Victor Manuel Muñoz Tirado - A01423434

Vivian Pérez Mosqueda - A01731984

Sebastian Romano Mena - A00831709

#install.packages("maps")
library(maps)
library(dplyr)
library(forecast)
library(tibble)
library(ggplot2)
library(mapproj)
US <- read.csv("historical_state_population_by_year.csv")
str(US)
## 'data.frame':    6019 obs. of  3 variables:
##  $ AK     : chr  "AK" "AK" "AK" "AK" ...
##  $ X1950  : int  1951 1952 1953 1954 1955 1956 1957 1958 1959 1960 ...
##  $ X135000: int  158000 189000 205000 215000 222000 224000 231000 224000 224000 229000 ...
US <- US %>% rename(
  Estado = AK,
  Año = X1950,
  Población = X135000
)
GA <- US[US$Estado=="GA",]
NV <- US[US$Estado=="NV",]
FL <- US[US$Estado=="FL",]
CA <- US[US$Estado=="CA",]
AL <- US[US$Estado=="AL",]
ts_GA <- ts(data=GA$Población, start = c(1900,1), frequency=1)
ts_NV <- ts(data=NV$Población, start = c(1900,1), frequency=1)
ts_FL <- ts(data=FL$Población, start = c(1900,1), frequency=1)
ts_CA <- ts(data=CA$Población, start = c(1900,1), frequency=1)
ts_AL <- ts(data=AL$Población, start = c(1900,1), frequency=1)
arima_GA <- auto.arima(ts_GA)
arima_NV <- auto.arima(ts_NV)
arima_FL <- auto.arima(ts_FL)
arima_CA <- auto.arima(ts_CA)
arima_AL <- auto.arima(ts_AL)
pronostico_GA <- forecast(arima_GA, level=c(95), h=51)
pronostico_NV <- forecast(arima_NV, level=c(95), h=51)
pronostico_FL <- forecast(arima_FL, level=c(95), h=51)
pronostico_CA <- forecast(arima_CA, level=c(95), h=51)
pronostico_AL <- forecast(arima_AL, level=c(95), h=51)
plot(pronostico_GA, main= "Población GA")

plot(pronostico_NV, main= "Población NV")

plot(pronostico_FL, main= "Población FL")

plot(pronostico_CA, main= "Población CA")

plot(pronostico_AL, main= "Población AL")

map_GA <- as.data.frame(pronostico_GA)
map_NV <- as.data.frame(pronostico_NV)
map_FL <- as.data.frame(pronostico_FL)
map_CA <- as.data.frame(pronostico_CA)
map_AL <- as.data.frame(pronostico_AL)
map_GA <- map_GA %>% rownames_to_column("Años")
map_NV <- map_NV %>% rownames_to_column("Años")
map_FL <- map_FL %>% rownames_to_column("Años")
map_CA <- map_CA %>% rownames_to_column("Años")
map_AL <- map_AL %>% rownames_to_column("Años")
map_GA$region <- "georgia"
map_NV$region <- "nevada"
map_FL$region <- "florida"
map_CA$region <- "california"
map_AL$region <- "alabama"
map_GA_30 <- filter(map_GA, Años == 2030)
map_NV_30 <- filter(map_NV, Años == 2030)
map_FL_30 <- filter(map_FL, Años == 2030)
map_CA_30 <- filter(map_CA, Años == 2030)
map_AL_30 <- filter(map_AL, Años == 2030)

map_2030 <- rbind(map_GA_30,map_NV_30,map_FL_30,map_CA_30,map_AL_30)

map_GA_40 <- filter(map_GA, Años == 2040)
map_NV_40 <- filter(map_NV, Años == 2040)
map_FL_40 <- filter(map_FL, Años == 2040)
map_CA_40 <- filter(map_CA, Años == 2040)
map_AL_40 <- filter(map_AL, Años == 2040)

map_2040 <- rbind(map_GA_40,map_NV_40,map_FL_40,map_CA_40,map_AL_40)

map_GA_50 <- filter(map_GA, Años == 2050)
map_NV_50 <- filter(map_NV, Años == 2050)
map_FL_50 <- filter(map_FL, Años == 2050)
map_CA_50 <- filter(map_CA, Años == 2050)
map_AL_50 <- filter(map_AL, Años == 2050)

map_2050 <- rbind(map_GA_50,map_NV_50,map_FL_50,map_CA_50,map_AL_50)

map_GA_60 <- filter(map_GA, Años == 2060)
map_NV_60 <- filter(map_NV, Años == 2060)
map_FL_60 <- filter(map_FL, Años == 2060)
map_CA_60 <- filter(map_CA, Años == 2060)
map_AL_60 <- filter(map_AL, Años == 2060)

map_2060 <- rbind(map_GA_60,map_NV_60,map_FL_60,map_CA_60,map_AL_60)

map_GA_70 <- filter(map_GA, Años == 2070)
map_NV_70 <- filter(map_NV, Años == 2070)
map_FL_70 <- filter(map_FL, Años == 2070)
map_CA_70 <- filter(map_CA, Años == 2070)
map_AL_70 <- filter(map_AL, Años == 2070)

map_2070 <- rbind(map_GA_70,map_NV_70,map_FL_70,map_CA_70,map_AL_70)
map_2030$Poblacion <- map_2030$`Point Forecast`
map_2040$Poblacion <- map_2040$`Point Forecast`
map_2050$Poblacion <- map_2050$`Point Forecast`
map_2060$Poblacion <- map_2060$`Point Forecast`
map_2070$Poblacion <- map_2070$`Point Forecast`
map_usa <- map_data("state")
map_usa_2030 <- left_join(map_usa, map_2030, by = "region")
map_usa_2040 <- left_join(map_usa, map_2040, by = "region")
map_usa_2050 <- left_join(map_usa, map_2050, by = "region")
map_usa_2060 <- left_join(map_usa, map_2060, by = "region")
map_usa_2070 <- left_join(map_usa, map_2070, by = "region")
ggplot(data = map_usa_2030) + 
  geom_polygon(aes(x = long, y = lat, group = group, fill = Poblacion), color = "black") +
  scale_fill_gradient(low = "lightblue", high = "darkblue", labels = scales::comma) +
  coord_map() +
  labs(title="Población 2030 (en millones)", fill = "Población\n(en millones)")

ggplot(data = map_usa_2040) + 
  geom_polygon(aes(x = long, y = lat, group = group, fill =Poblacion), color = "black") +
  scale_fill_gradient(low = "lightblue", high = "darkblue", labels = scales::comma) +
  coord_map() +
  labs(title="Población 2040 (en millones)", fill = "Población\n(en millones)")

ggplot(data = map_usa_2050) + 
  geom_polygon(aes(x = long, y = lat, group = group, fill =Poblacion), color = "black") +
  scale_fill_gradient(low = "lightblue", high = "darkblue", labels = scales::comma) +
  coord_map() +
  labs(title="Población 2050 (en millones)", fill = "Población\n(en millones)")

ggplot(data = map_usa_2060) + 
  geom_polygon(aes(x = long, y = lat, group = group, fill =Poblacion), color = "black") +
  scale_fill_gradient(low = "lightblue", high = "darkblue", labels = scales::comma) +
  coord_map() +
  labs(title="Población 2060 (en millones)", fill = "Población\n(en millones)")

ggplot(data = map_usa_2070) + 
  geom_polygon(aes(x = long, y = lat, group = group, fill =Poblacion), color = "black") +
  scale_fill_gradient(low = "lightblue", high = "darkblue", labels = scales::comma) +
  coord_map() +
  labs(title="Población 2070 (en millones)", fill = "Población\n(en millones)")

LS0tDQp0aXRsZTogIk1hcGVvIFVTQSINCmF1dGhvcjogIlZpY3RvciBNYW51ZWwgTXXDsW96IFRpcmFkbyBBMDE0MjM0MzQiDQpkYXRlOiAiMjAyNC0wMi0yMSINCm91dHB1dDoNCiBodG1sX2RvY3VtZW50Og0KICB0b2M6IFRSVUUNCiAgdG9jX2Zsb2F0OiBUUlVFDQogIGNvZGVfZG93bmxvYWQ6IFRSVUUNCiBlZGl0b3Jfb3B0aW9uczoNCiAgbWFya2Rvd246DQogIHdyYXA6IDcyDQotLS0NCg0KIVtdKGh0dHBzOi8vZG9taW5pY3JveWUuZ2l0aHViLmlvL2VzLzIwMjEvdmlzdWFsaXphci1lbC1jaWNsby1kZS1kaWEtbm9jaGUtZW4tdW4tbWFwYW11bmRpL25pZ2h0X2RheS5naWYpDQoNCkludGVncmFudGVzIGRlbCBlcXVpcG86ICANCg0KVmljdG9yIE1hbnVlbCBNdcOxb3ogVGlyYWRvIC0gQTAxNDIzNDM0ICANCg0KVml2aWFuIFDDqXJleiBNb3NxdWVkYSAtIEEwMTczMTk4NCAgDQoNClNlYmFzdGlhbiBSb21hbm8gTWVuYSAtIEEwMDgzMTcwOSAgDQoNCmBgYHtyIGxpYnJhcnksIG1lc3NhZ2U9RkFMU0V9DQojaW5zdGFsbC5wYWNrYWdlcygibWFwcyIpDQpsaWJyYXJ5KG1hcHMpDQpsaWJyYXJ5KGRwbHlyKQ0KbGlicmFyeShmb3JlY2FzdCkNCmxpYnJhcnkodGliYmxlKQ0KbGlicmFyeShnZ3Bsb3QyKQ0KbGlicmFyeShtYXBwcm9qKQ0KYGBgDQoNCmBgYHtyLCBpbmNsdWRlPUZBTFNFfQ0Kc2V0d2QoIkU6L0NhcnJlcmEvT2N0YXZvIHNlbWVzdHJlIExJVCIpDQpgYGANCg0KYGBge3J9DQpVUyA8LSByZWFkLmNzdigiaGlzdG9yaWNhbF9zdGF0ZV9wb3B1bGF0aW9uX2J5X3llYXIuY3N2IikNCmBgYA0KDQpgYGB7cn0NCnN0cihVUykNCmBgYA0KDQpgYGB7cn0NClVTIDwtIFVTICU+JSByZW5hbWUoDQogIEVzdGFkbyA9IEFLLA0KICBBw7FvID0gWDE5NTAsDQogIFBvYmxhY2nDs24gPSBYMTM1MDAwDQopDQpgYGANCg0KYGBge3J9DQpHQSA8LSBVU1tVUyRFc3RhZG89PSJHQSIsXQ0KTlYgPC0gVVNbVVMkRXN0YWRvPT0iTlYiLF0NCkZMIDwtIFVTW1VTJEVzdGFkbz09IkZMIixdDQpDQSA8LSBVU1tVUyRFc3RhZG89PSJDQSIsXQ0KQUwgPC0gVVNbVVMkRXN0YWRvPT0iQUwiLF0NCmBgYA0KDQpgYGB7cn0NCnRzX0dBIDwtIHRzKGRhdGE9R0EkUG9ibGFjacOzbiwgc3RhcnQgPSBjKDE5MDAsMSksIGZyZXF1ZW5jeT0xKQ0KdHNfTlYgPC0gdHMoZGF0YT1OViRQb2JsYWNpw7NuLCBzdGFydCA9IGMoMTkwMCwxKSwgZnJlcXVlbmN5PTEpDQp0c19GTCA8LSB0cyhkYXRhPUZMJFBvYmxhY2nDs24sIHN0YXJ0ID0gYygxOTAwLDEpLCBmcmVxdWVuY3k9MSkNCnRzX0NBIDwtIHRzKGRhdGE9Q0EkUG9ibGFjacOzbiwgc3RhcnQgPSBjKDE5MDAsMSksIGZyZXF1ZW5jeT0xKQ0KdHNfQUwgPC0gdHMoZGF0YT1BTCRQb2JsYWNpw7NuLCBzdGFydCA9IGMoMTkwMCwxKSwgZnJlcXVlbmN5PTEpDQpgYGANCg0KYGBge3J9DQphcmltYV9HQSA8LSBhdXRvLmFyaW1hKHRzX0dBKQ0KYXJpbWFfTlYgPC0gYXV0by5hcmltYSh0c19OVikNCmFyaW1hX0ZMIDwtIGF1dG8uYXJpbWEodHNfRkwpDQphcmltYV9DQSA8LSBhdXRvLmFyaW1hKHRzX0NBKQ0KYXJpbWFfQUwgPC0gYXV0by5hcmltYSh0c19BTCkNCmBgYA0KDQpgYGB7cn0NCnByb25vc3RpY29fR0EgPC0gZm9yZWNhc3QoYXJpbWFfR0EsIGxldmVsPWMoOTUpLCBoPTUxKQ0KcHJvbm9zdGljb19OViA8LSBmb3JlY2FzdChhcmltYV9OViwgbGV2ZWw9Yyg5NSksIGg9NTEpDQpwcm9ub3N0aWNvX0ZMIDwtIGZvcmVjYXN0KGFyaW1hX0ZMLCBsZXZlbD1jKDk1KSwgaD01MSkNCnByb25vc3RpY29fQ0EgPC0gZm9yZWNhc3QoYXJpbWFfQ0EsIGxldmVsPWMoOTUpLCBoPTUxKQ0KcHJvbm9zdGljb19BTCA8LSBmb3JlY2FzdChhcmltYV9BTCwgbGV2ZWw9Yyg5NSksIGg9NTEpDQpgYGANCg0KYGBge3J9DQpwbG90KHByb25vc3RpY29fR0EsIG1haW49ICJQb2JsYWNpw7NuIEdBIikNCnBsb3QocHJvbm9zdGljb19OViwgbWFpbj0gIlBvYmxhY2nDs24gTlYiKQ0KcGxvdChwcm9ub3N0aWNvX0ZMLCBtYWluPSAiUG9ibGFjacOzbiBGTCIpDQpwbG90KHByb25vc3RpY29fQ0EsIG1haW49ICJQb2JsYWNpw7NuIENBIikNCnBsb3QocHJvbm9zdGljb19BTCwgbWFpbj0gIlBvYmxhY2nDs24gQUwiKQ0KYGBgDQoNCmBgYHtyfQ0KbWFwX0dBIDwtIGFzLmRhdGEuZnJhbWUocHJvbm9zdGljb19HQSkNCm1hcF9OViA8LSBhcy5kYXRhLmZyYW1lKHByb25vc3RpY29fTlYpDQptYXBfRkwgPC0gYXMuZGF0YS5mcmFtZShwcm9ub3N0aWNvX0ZMKQ0KbWFwX0NBIDwtIGFzLmRhdGEuZnJhbWUocHJvbm9zdGljb19DQSkNCm1hcF9BTCA8LSBhcy5kYXRhLmZyYW1lKHByb25vc3RpY29fQUwpDQpgYGANCg0KYGBge3J9DQptYXBfR0EgPC0gbWFwX0dBICU+JSByb3duYW1lc190b19jb2x1bW4oIkHDsW9zIikNCm1hcF9OViA8LSBtYXBfTlYgJT4lIHJvd25hbWVzX3RvX2NvbHVtbigiQcOxb3MiKQ0KbWFwX0ZMIDwtIG1hcF9GTCAlPiUgcm93bmFtZXNfdG9fY29sdW1uKCJBw7FvcyIpDQptYXBfQ0EgPC0gbWFwX0NBICU+JSByb3duYW1lc190b19jb2x1bW4oIkHDsW9zIikNCm1hcF9BTCA8LSBtYXBfQUwgJT4lIHJvd25hbWVzX3RvX2NvbHVtbigiQcOxb3MiKQ0KYGBgDQoNCmBgYHtyfQ0KbWFwX0dBJHJlZ2lvbiA8LSAiZ2VvcmdpYSINCm1hcF9OViRyZWdpb24gPC0gIm5ldmFkYSINCm1hcF9GTCRyZWdpb24gPC0gImZsb3JpZGEiDQptYXBfQ0EkcmVnaW9uIDwtICJjYWxpZm9ybmlhIg0KbWFwX0FMJHJlZ2lvbiA8LSAiYWxhYmFtYSINCmBgYA0KDQpgYGB7cn0NCm1hcF9HQV8zMCA8LSBmaWx0ZXIobWFwX0dBLCBBw7FvcyA9PSAyMDMwKQ0KbWFwX05WXzMwIDwtIGZpbHRlcihtYXBfTlYsIEHDsW9zID09IDIwMzApDQptYXBfRkxfMzAgPC0gZmlsdGVyKG1hcF9GTCwgQcOxb3MgPT0gMjAzMCkNCm1hcF9DQV8zMCA8LSBmaWx0ZXIobWFwX0NBLCBBw7FvcyA9PSAyMDMwKQ0KbWFwX0FMXzMwIDwtIGZpbHRlcihtYXBfQUwsIEHDsW9zID09IDIwMzApDQoNCm1hcF8yMDMwIDwtIHJiaW5kKG1hcF9HQV8zMCxtYXBfTlZfMzAsbWFwX0ZMXzMwLG1hcF9DQV8zMCxtYXBfQUxfMzApDQoNCm1hcF9HQV80MCA8LSBmaWx0ZXIobWFwX0dBLCBBw7FvcyA9PSAyMDQwKQ0KbWFwX05WXzQwIDwtIGZpbHRlcihtYXBfTlYsIEHDsW9zID09IDIwNDApDQptYXBfRkxfNDAgPC0gZmlsdGVyKG1hcF9GTCwgQcOxb3MgPT0gMjA0MCkNCm1hcF9DQV80MCA8LSBmaWx0ZXIobWFwX0NBLCBBw7FvcyA9PSAyMDQwKQ0KbWFwX0FMXzQwIDwtIGZpbHRlcihtYXBfQUwsIEHDsW9zID09IDIwNDApDQoNCm1hcF8yMDQwIDwtIHJiaW5kKG1hcF9HQV80MCxtYXBfTlZfNDAsbWFwX0ZMXzQwLG1hcF9DQV80MCxtYXBfQUxfNDApDQoNCm1hcF9HQV81MCA8LSBmaWx0ZXIobWFwX0dBLCBBw7FvcyA9PSAyMDUwKQ0KbWFwX05WXzUwIDwtIGZpbHRlcihtYXBfTlYsIEHDsW9zID09IDIwNTApDQptYXBfRkxfNTAgPC0gZmlsdGVyKG1hcF9GTCwgQcOxb3MgPT0gMjA1MCkNCm1hcF9DQV81MCA8LSBmaWx0ZXIobWFwX0NBLCBBw7FvcyA9PSAyMDUwKQ0KbWFwX0FMXzUwIDwtIGZpbHRlcihtYXBfQUwsIEHDsW9zID09IDIwNTApDQoNCm1hcF8yMDUwIDwtIHJiaW5kKG1hcF9HQV81MCxtYXBfTlZfNTAsbWFwX0ZMXzUwLG1hcF9DQV81MCxtYXBfQUxfNTApDQoNCm1hcF9HQV82MCA8LSBmaWx0ZXIobWFwX0dBLCBBw7FvcyA9PSAyMDYwKQ0KbWFwX05WXzYwIDwtIGZpbHRlcihtYXBfTlYsIEHDsW9zID09IDIwNjApDQptYXBfRkxfNjAgPC0gZmlsdGVyKG1hcF9GTCwgQcOxb3MgPT0gMjA2MCkNCm1hcF9DQV82MCA8LSBmaWx0ZXIobWFwX0NBLCBBw7FvcyA9PSAyMDYwKQ0KbWFwX0FMXzYwIDwtIGZpbHRlcihtYXBfQUwsIEHDsW9zID09IDIwNjApDQoNCm1hcF8yMDYwIDwtIHJiaW5kKG1hcF9HQV82MCxtYXBfTlZfNjAsbWFwX0ZMXzYwLG1hcF9DQV82MCxtYXBfQUxfNjApDQoNCm1hcF9HQV83MCA8LSBmaWx0ZXIobWFwX0dBLCBBw7FvcyA9PSAyMDcwKQ0KbWFwX05WXzcwIDwtIGZpbHRlcihtYXBfTlYsIEHDsW9zID09IDIwNzApDQptYXBfRkxfNzAgPC0gZmlsdGVyKG1hcF9GTCwgQcOxb3MgPT0gMjA3MCkNCm1hcF9DQV83MCA8LSBmaWx0ZXIobWFwX0NBLCBBw7FvcyA9PSAyMDcwKQ0KbWFwX0FMXzcwIDwtIGZpbHRlcihtYXBfQUwsIEHDsW9zID09IDIwNzApDQoNCm1hcF8yMDcwIDwtIHJiaW5kKG1hcF9HQV83MCxtYXBfTlZfNzAsbWFwX0ZMXzcwLG1hcF9DQV83MCxtYXBfQUxfNzApDQpgYGANCg0KYGBge3J9DQptYXBfMjAzMCRQb2JsYWNpb24gPC0gbWFwXzIwMzAkYFBvaW50IEZvcmVjYXN0YA0KbWFwXzIwNDAkUG9ibGFjaW9uIDwtIG1hcF8yMDQwJGBQb2ludCBGb3JlY2FzdGANCm1hcF8yMDUwJFBvYmxhY2lvbiA8LSBtYXBfMjA1MCRgUG9pbnQgRm9yZWNhc3RgDQptYXBfMjA2MCRQb2JsYWNpb24gPC0gbWFwXzIwNjAkYFBvaW50IEZvcmVjYXN0YA0KbWFwXzIwNzAkUG9ibGFjaW9uIDwtIG1hcF8yMDcwJGBQb2ludCBGb3JlY2FzdGANCmBgYA0KDQpgYGB7cn0NCm1hcF91c2EgPC0gbWFwX2RhdGEoInN0YXRlIikNCmBgYA0KDQpgYGB7cn0NCm1hcF91c2FfMjAzMCA8LSBsZWZ0X2pvaW4obWFwX3VzYSwgbWFwXzIwMzAsIGJ5ID0gInJlZ2lvbiIpDQptYXBfdXNhXzIwNDAgPC0gbGVmdF9qb2luKG1hcF91c2EsIG1hcF8yMDQwLCBieSA9ICJyZWdpb24iKQ0KbWFwX3VzYV8yMDUwIDwtIGxlZnRfam9pbihtYXBfdXNhLCBtYXBfMjA1MCwgYnkgPSAicmVnaW9uIikNCm1hcF91c2FfMjA2MCA8LSBsZWZ0X2pvaW4obWFwX3VzYSwgbWFwXzIwNjAsIGJ5ID0gInJlZ2lvbiIpDQptYXBfdXNhXzIwNzAgPC0gbGVmdF9qb2luKG1hcF91c2EsIG1hcF8yMDcwLCBieSA9ICJyZWdpb24iKQ0KYGBgDQoNCmBgYHtyfQ0KZ2dwbG90KGRhdGEgPSBtYXBfdXNhXzIwMzApICsgDQogIGdlb21fcG9seWdvbihhZXMoeCA9IGxvbmcsIHkgPSBsYXQsIGdyb3VwID0gZ3JvdXAsIGZpbGwgPSBQb2JsYWNpb24pLCBjb2xvciA9ICJibGFjayIpICsNCiAgc2NhbGVfZmlsbF9ncmFkaWVudChsb3cgPSAibGlnaHRibHVlIiwgaGlnaCA9ICJkYXJrYmx1ZSIsIGxhYmVscyA9IHNjYWxlczo6Y29tbWEpICsNCiAgY29vcmRfbWFwKCkgKw0KICBsYWJzKHRpdGxlPSJQb2JsYWNpw7NuIDIwMzAgKGVuIG1pbGxvbmVzKSIsIGZpbGwgPSAiUG9ibGFjacOzblxuKGVuIG1pbGxvbmVzKSIpDQoNCmdncGxvdChkYXRhID0gbWFwX3VzYV8yMDQwKSArIA0KICBnZW9tX3BvbHlnb24oYWVzKHggPSBsb25nLCB5ID0gbGF0LCBncm91cCA9IGdyb3VwLCBmaWxsID1Qb2JsYWNpb24pLCBjb2xvciA9ICJibGFjayIpICsNCiAgc2NhbGVfZmlsbF9ncmFkaWVudChsb3cgPSAibGlnaHRibHVlIiwgaGlnaCA9ICJkYXJrYmx1ZSIsIGxhYmVscyA9IHNjYWxlczo6Y29tbWEpICsNCiAgY29vcmRfbWFwKCkgKw0KICBsYWJzKHRpdGxlPSJQb2JsYWNpw7NuIDIwNDAgKGVuIG1pbGxvbmVzKSIsIGZpbGwgPSAiUG9ibGFjacOzblxuKGVuIG1pbGxvbmVzKSIpDQoNCmdncGxvdChkYXRhID0gbWFwX3VzYV8yMDUwKSArIA0KICBnZW9tX3BvbHlnb24oYWVzKHggPSBsb25nLCB5ID0gbGF0LCBncm91cCA9IGdyb3VwLCBmaWxsID1Qb2JsYWNpb24pLCBjb2xvciA9ICJibGFjayIpICsNCiAgc2NhbGVfZmlsbF9ncmFkaWVudChsb3cgPSAibGlnaHRibHVlIiwgaGlnaCA9ICJkYXJrYmx1ZSIsIGxhYmVscyA9IHNjYWxlczo6Y29tbWEpICsNCiAgY29vcmRfbWFwKCkgKw0KICBsYWJzKHRpdGxlPSJQb2JsYWNpw7NuIDIwNTAgKGVuIG1pbGxvbmVzKSIsIGZpbGwgPSAiUG9ibGFjacOzblxuKGVuIG1pbGxvbmVzKSIpDQoNCmdncGxvdChkYXRhID0gbWFwX3VzYV8yMDYwKSArIA0KICBnZW9tX3BvbHlnb24oYWVzKHggPSBsb25nLCB5ID0gbGF0LCBncm91cCA9IGdyb3VwLCBmaWxsID1Qb2JsYWNpb24pLCBjb2xvciA9ICJibGFjayIpICsNCiAgc2NhbGVfZmlsbF9ncmFkaWVudChsb3cgPSAibGlnaHRibHVlIiwgaGlnaCA9ICJkYXJrYmx1ZSIsIGxhYmVscyA9IHNjYWxlczo6Y29tbWEpICsNCiAgY29vcmRfbWFwKCkgKw0KICBsYWJzKHRpdGxlPSJQb2JsYWNpw7NuIDIwNjAgKGVuIG1pbGxvbmVzKSIsIGZpbGwgPSAiUG9ibGFjacOzblxuKGVuIG1pbGxvbmVzKSIpDQoNCmdncGxvdChkYXRhID0gbWFwX3VzYV8yMDcwKSArIA0KICBnZW9tX3BvbHlnb24oYWVzKHggPSBsb25nLCB5ID0gbGF0LCBncm91cCA9IGdyb3VwLCBmaWxsID1Qb2JsYWNpb24pLCBjb2xvciA9ICJibGFjayIpICsNCiAgc2NhbGVfZmlsbF9ncmFkaWVudChsb3cgPSAibGlnaHRibHVlIiwgaGlnaCA9ICJkYXJrYmx1ZSIsIGxhYmVscyA9IHNjYWxlczo6Y29tbWEpICsNCiAgY29vcmRfbWFwKCkgKw0KICBsYWJzKHRpdGxlPSJQb2JsYWNpw7NuIDIwNzAgKGVuIG1pbGxvbmVzKSIsIGZpbGwgPSAiUG9ibGFjacOzblxuKGVuIG1pbGxvbmVzKSIpDQpgYGANCg==