Suggested citation:
Gunawan, A. and Mendez, C. (2020). Provincial income, convergence clubs and structural change in Indonesia 2001-2017: An interactive and automated exploration in R. R Studio/RPubs. Available at https://rpubs.com/quarcs-lab/data-indonesia-34-provinces-clubs-2001-2017
This work is licensed under the Creative Commons Attribution-Share Alike 4.0 International License. 
Original data source
The source data are taken from the Indonesia Central Bureau of Statistics (Badan Pusat Statistik Republik of Indonesia), INDO-DAPOER World Bank Database.
Definitions of variables
Select and re-order variables
dat_PANEL <- dat_PANEL %>%
select(
Province,
year,
GDPpc,
GDPpc2,
inv,
pop,
Gpop,
labor,
hc,
agri,
cons,
min,
man,
ser,
Status,
Club,
ID_Prov
)
Show definitions of variables
Interactive Table
# Define function for interactive table
create_dt <- function(x){
DT::datatable(x,
extensions = 'Buttons',
options = list(dom = 'Blfrtip',
buttons = c('copy', 'csv', 'excel', 'pdf', 'print'),
lengthMenu = list(c(10,25,50,-1),
c(10,25,50,"All"))))
}
dat_PANEL %>%
create_dt() %>%
formatRound(columns =c(
"GDPpc",
"GDPpc2",
"inv",
"pop",
"Gpop",
"labor",
"hc",
"agri",
"cons",
"min",
"man",
"ser"
),
digits = 4)
Interactive and Automated exploration
- Automated exploration: First you customize the exploration, export configuration file, and include it in the new set up of the exploration.
# Run it in the console
ExPanD(
df = dat_PANEL,
df_def = df_definitions,
export_nb_option = TRUE,
config_list = config_list_fromRDS,
title = "Provincial income, convergence clubs, and structural change in Indonesia 2001-2017",
abstract = paste("Suggested citation: Gunawan, A. and Mendez, C. (2020). Provincial income, convergence clubs and structural change in Indonesia 2001-2017: An interactive and automated exploration in R. R Studio/RPubs. Available at https://rpubs.com/quarcs-lab/data-indonesia-34-provinces-clubs-2001-2017")
)
- Interactive Dashborad (Shiny Web App)
https://carlosmendez777.shinyapps.io/data-indonesia-34-provinces-clubs-2001-2017
LS0tCnRpdGxlOiAiUHJvdmluY2lhbCBpbmNvbWUsIGNvbnZlcmdlbmNlIGNsdWJzLCBhbmQgc3RydWN0dXJhbCBjaGFuZ2UgaW4gIEluZG9uZXNpYSAyMDAxLTIwMTc6IgpzdWJ0aXRsZTogIkFuIGludGVyYWN0aXZlIGFuZCBhdXRvbWF0ZWQgZXhwbG9yYXRpb24gaW4gUiIKYXV0aG9yOiAiQW5hbmcgR3VuYXdhbiBhbmQgQ2FybG9zIE1lbmRleiIKb3V0cHV0OgogIGh0bWxfZG9jdW1lbnQ6CiAgICBjb2RlX2Rvd25sb2FkOiB0cnVlCiAgICBkZl9wcmludDogcGFnZWQKICAgIHRvYzogdHJ1ZQogICAgdG9jX2Zsb2F0OgogICAgICBjb2xsYXBzZWQ6IGZhbHNlCiAgICAgIHNtb290aF9zY3JvbGw6IGZhbHNlCiAgICB0b2NfZGVwdGg6IDQKICAgIG51bWJlcl9zZWN0aW9uczogdHJ1ZQogICAgY29kZV9mb2xkaW5nOiAic2hvdyIKICAgIHRoZW1lOiAiY29zbW8iCiAgICBoaWdobGlnaHQ6ICJtb25vY2hyb21lIgogIHBkZl9kb2N1bWVudDogZGVmYXVsdAogIHdvcmRfZG9jdW1lbnQ6IGRlZmF1bHQKYmlibGlvZ3JhcGh5OiBiaWJsaW8uYmliCi0tLQoKPHN0eWxlPgpoMS50aXRsZSB7Zm9udC1zaXplOiAxOHB0OyBjb2xvcjogRGFya0JsdWU7fSAKYm9keSwgaDEsIGgyLCBoMywgaDQge2ZvbnQtZmFtaWx5OiAiUGFsYXRpbm8iLCBzZXJpZjt9CmJvZHkge2ZvbnQtc2l6ZTogMTJwdDt9Ci8qIEhlYWRlcnMgKi8KaDEsaDIsaDMsaDQsaDUsaDZ7Zm9udC1zaXplOiAxNHB0OyBjb2xvcjogIzAwMDA4Qjt9CmJvZHkge2NvbG9yOiAjMzMzMzMzO30KYSwgYTpob3ZlciB7Y29sb3I6ICM4QjNBNjI7fQpwcmUge2ZvbnQtc2l6ZTogMTJweDt9Cjwvc3R5bGU+CgoKYGBge3Igc2V0dXAsIGluY2x1ZGU9Rn0Ka25pdHI6Om9wdHNfY2h1bmskc2V0KGVjaG8gPSBUUlVFLCBtZXNzYWdlID0gRkFMU0UsIHdhcm5pbmcgPSBGQUxTRSkKbGlicmFyeSh0aWR5dmVyc2UpCmxpYnJhcnkocmlvKSAgICAgICAgICAgIyBpbXBvcnQgc3RhdGEgZmlsZXMKbGlicmFyeShFeFBhbkRhUikgICAgICAjIGV4cGxvcmUgcGFuZWwgZGF0YSBpbnRlcmFjdGl2ZWx5ICAKbGlicmFyeShEVCkgICAgICAgICAgICAjIGludGVyYWN0aXZlIHRhYmxlcwpsaWJyYXJ5KHBtZHBseXIpICAgICAgICMgbWFuYWdpbmcgcGFuZWwgYW5kIGhpZXJhcmNoaWNhbCBkYXRhCmxpYnJhcnkocGFuZWxyKSAgICAgICAgIyBtYW5hZ2luZyBwYW5lbCAgZGF0YQpsaWJyYXJ5KHNraW1yKSAgICAgICAgICMgZGVzY3JpcHRpdmUgc3RhdGlzdGljcwpsaWJyYXJ5KGdnYW5pbWF0ZSkgICAgICMgYW5pbWF0ZWQgZmlndXJlcwpsaWJyYXJ5KHBsb3RseSkgICAgICAgICMgaW50ZXJhY3RpdmUgZmlndXJlcwpsaWJyYXJ5KGNvdW50cnljb2RlKSAgICMgYWRkIGNvbnRpbmVudCBuYW1lCnRoZW1lX3NldCh0aGVtZV9taW5pbWFsKCkpCgojIENoYW5nZSB0aGUgcHJlc2VudGF0aW9uIG9mIGRlY2ltYWwgbnVtYmVycyB0byA0IGFuZCBhdm9pZCBzY2llbnRpZmljIG5vdGF0aW9uCm9wdGlvbnMocHJvbXB0PSJSPiAiLCBkaWdpdHM9NCwgc2NpcGVuPTk5OSkKYGBgCgoKU3VnZ2VzdGVkIGNpdGF0aW9uOiAKCj4gR3VuYXdhbiwgQS4gYW5kIE1lbmRleiwgQy4gKDIwMjApLiBQcm92aW5jaWFsIGluY29tZSwgY29udmVyZ2VuY2UgY2x1YnMgYW5kIHN0cnVjdHVyYWwgY2hhbmdlIGluIEluZG9uZXNpYSAyMDAxLTIwMTc6IEFuIGludGVyYWN0aXZlIGFuZCBhdXRvbWF0ZWQgZXhwbG9yYXRpb24gaW4gUi4gUiBTdHVkaW8vUlB1YnMuIEF2YWlsYWJsZSBhdCA8aHR0cHM6Ly9ycHVicy5jb20vcXVhcmNzLWxhYi9kYXRhLWluZG9uZXNpYS0zNC1wcm92aW5jZXMtY2x1YnMtMjAwMS0yMDE3PgoKVGhpcyB3b3JrIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBDcmVhdGl2ZSBDb21tb25zIEF0dHJpYnV0aW9uLVNoYXJlIEFsaWtlIDQuMCBJbnRlcm5hdGlvbmFsIExpY2Vuc2UuIAohW10oTGljZW5zZS5wbmcpCgoKIyBPcmlnaW5hbCBkYXRhIHNvdXJjZQoKVGhlIHNvdXJjZSBkYXRhIGFyZSB0YWtlbiBmcm9tIHRoZSBJbmRvbmVzaWEgQ2VudHJhbCBCdXJlYXUgb2YgU3RhdGlzdGljcyAoQmFkYW4gUHVzYXQgU3RhdGlzdGlrIFJlcHVibGlrIG9mIEluZG9uZXNpYSksIFtJTkRPLURBUE9FUiBXb3JsZCBCYW5rIERhdGFiYXNlXShodHRwczovL2RhdGFjYXRhbG9nLndvcmxkYmFuay5vcmcvZGF0YXNldC9pbmRvbmVzaWEtZGF0YWJhc2UtcG9saWN5LWFuZC1lY29ub21pYy1yZXNlYXJjaCkuICAKCmBgYHtyfQpkYXQgPC0gcmVhZF9jc3YoIkRhdC5jc3YiKQpgYGAKCgoKIyBEYXRhIHRyYW5zZm9ybWF0aW9ucwoKIyMgU2VsZWN0IHdpZGUgcGFuZWxzIGZvciBlYWNoIHZhcmlhYmxlCgotIEdEUCBwZXIgY2FwaXRhCgpgYGB7cn0KZGF0X0dEUHBjIDwtIGRhdCAlPiUgCiAgZmlsdGVyKFNlcmllcyA9PSAiR0RQUEMiKSAgJT4lIAogIHNlbGVjdCgtSURfU2VyaWVzLCAtU2VyaWVzKQpgYGAKCgotIChHcm9zcykgUGh5c2ljYWwgQ2FwaXRhbCBmb3JtYXRpb24KCmBgYHtyfQpkYXRfaW52IDwtIGRhdCAlPiUgCiAgZmlsdGVyKFNlcmllcyA9PSAiR0ZDRiIpICAlPiUgCiAgc2VsZWN0KC1JRF9TZXJpZXMsIC1TZXJpZXMpCmBgYAoKCi0gTGFib3IKCmBgYHtyfQpkYXRfbGFib3IgPC0gZGF0ICU+JSAKICBmaWx0ZXIoU2VyaWVzID09ICJMYWJvciIpICAlPiUgCiAgc2VsZWN0KC1JRF9TZXJpZXMsIC1TZXJpZXMpCmBgYAoKCi0gSHVtYW4gQ2FwaXRhbAoKYGBge3J9CmRhdF9oYyA8LSBkYXQgJT4lIAogIGZpbHRlcihTZXJpZXMgPT0gIkh1bWFuIikgICU+JSAKICBzZWxlY3QoLUlEX1NlcmllcywgLVNlcmllcykKYGBgCgoKCi0gUG9wdWxhdGlvbgoKYGBge3J9CmRhdF9wb3AgPC0gZGF0ICU+JSAKICBmaWx0ZXIoU2VyaWVzID09ICJQb3B1bGF0aW9uIikgICU+JSAKICBzZWxlY3QoLUlEX1NlcmllcywgLVNlcmllcykKYGBgCgoKLSBQb3B1bGF0aW9uIGdyb3d0aAoKYGBge3J9CmRhdF9HcG9wIDwtIGRhdCAlPiUgCiAgZmlsdGVyKFNlcmllcyA9PSAiUG9wdWxhdGlvbiBHcm93dGgiKSAgJT4lIAogIHNlbGVjdCgtSURfU2VyaWVzLCAtU2VyaWVzKQpgYGAKCgotIEFncmljdWx0dXJhbCBzaGFyZQoKYGBge3J9CmRhdF9hZ3JpIDwtIGRhdCAlPiUgCiAgZmlsdGVyKFNlcmllcyA9PSAiQWdyaSIpICAlPiUgCiAgc2VsZWN0KC1JRF9TZXJpZXMsIC1TZXJpZXMpCmBgYAoKLSBDb25zdHJ1Y3Rpb24gc2hhcmUKCmBgYHtyfQpkYXRfY29ucyA8LSBkYXQgJT4lIAogIGZpbHRlcihTZXJpZXMgPT0gIkNvbnN0cnVjdCIpICAlPiUgCiAgc2VsZWN0KC1JRF9TZXJpZXMsIC1TZXJpZXMpCmBgYAoKLSBNYW51ZmFjdHVyaW5nIHNoYXJlCgpgYGB7cn0KZGF0X21hbiA8LSBkYXQgJT4lIAogIGZpbHRlcihTZXJpZXMgPT0gIk1hbnVmYWN0dXJlIikgICU+JSAKICBzZWxlY3QoLUlEX1NlcmllcywgLVNlcmllcykKYGBgCgotIE1pbmluZwoKYGBge3J9CmRhdF9taW4gPC0gZGF0ICU+JSAKICBmaWx0ZXIoU2VyaWVzID09ICJNaW5pbmciKSAgJT4lIAogIHNlbGVjdCgtSURfU2VyaWVzLCAtU2VyaWVzKQpgYGAKCi0gU2VydmljZXMKCmBgYHtyfQpkYXRfc2VyIDwtIGRhdCAlPiUgCiAgZmlsdGVyKFNlcmllcyA9PSAiU2VydmljZXMiKSAlPiUgCiAgc2VsZWN0KC1JRF9TZXJpZXMsIC1TZXJpZXMpCmBgYAoKCgojIyBQaXZvdCBmcm9tIHdpZGUgdG8gbG9uZwoKCmBgYHtyfQpsb25nX2RhdF9HRFBwYyA8LSBkYXRfR0RQcGMgJT4lIAogIHBpdm90X2xvbmdlcigKICAgIGNvbHMgPSBzdGFydHNfd2l0aCgieXIiKSwKICAgIG5hbWVzX3RvID0gInllYXIiLAogICAgbmFtZXNfcHJlZml4ID0gInlyIiwKICAgIHZhbHVlc190byA9ICJHRFBwYyIsCiAgKSAlPiUgCiAgbXV0YXRlKAogICAgeWVhciA9IGFzLm51bWVyaWMoeWVhcikKICApCmBgYAoKCmBgYHtyfQpsb25nX2RhdF9pbnYgPC0gZGF0X2ludiAlPiUgCiAgcGl2b3RfbG9uZ2VyKAogICAgY29scyA9IHN0YXJ0c193aXRoKCJ5ciIpLAogICAgbmFtZXNfdG8gPSAieWVhciIsCiAgICBuYW1lc19wcmVmaXggPSAieXIiLAogICAgdmFsdWVzX3RvID0gImludiIsCiAgKSAlPiUgCiAgbXV0YXRlKAogICAgeWVhciA9IGFzLm51bWVyaWMoeWVhcikKICApCmBgYAoKCmBgYHtyfQpsb25nX2RhdF9sYWJvciA8LSBkYXRfbGFib3IgJT4lIAogIHBpdm90X2xvbmdlcigKICAgIGNvbHMgPSBzdGFydHNfd2l0aCgieXIiKSwKICAgIG5hbWVzX3RvID0gInllYXIiLAogICAgbmFtZXNfcHJlZml4ID0gInlyIiwKICAgIHZhbHVlc190byA9ICJsYWJvciIsCiAgKSAlPiUgCiAgbXV0YXRlKAogICAgeWVhciA9IGFzLm51bWVyaWMoeWVhcikKICApCmBgYAoKCmBgYHtyfQpsb25nX2RhdF9oYyA8LSBkYXRfaGMgJT4lIAogIHBpdm90X2xvbmdlcigKICAgIGNvbHMgPSBzdGFydHNfd2l0aCgieXIiKSwKICAgIG5hbWVzX3RvID0gInllYXIiLAogICAgbmFtZXNfcHJlZml4ID0gInlyIiwKICAgIHZhbHVlc190byA9ICJoYyIsCiAgKSAlPiUgCiAgbXV0YXRlKAogICAgeWVhciA9IGFzLm51bWVyaWMoeWVhcikKICApCmBgYAoKCmBgYHtyfQpsb25nX2RhdF9wb3AgPC0gZGF0X3BvcCAlPiUgCiAgcGl2b3RfbG9uZ2VyKAogICAgY29scyA9IHN0YXJ0c193aXRoKCJ5ciIpLAogICAgbmFtZXNfdG8gPSAieWVhciIsCiAgICBuYW1lc19wcmVmaXggPSAieXIiLAogICAgdmFsdWVzX3RvID0gInBvcCIsCiAgKSAlPiUgCiAgbXV0YXRlKAogICAgeWVhciA9IGFzLm51bWVyaWMoeWVhcikKICApCmBgYAoKCmBgYHtyfQpsb25nX2RhdF9HcG9wIDwtIGRhdF9HcG9wICU+JSAKICBwaXZvdF9sb25nZXIoCiAgICBjb2xzID0gc3RhcnRzX3dpdGgoInlyIiksCiAgICBuYW1lc190byA9ICJ5ZWFyIiwKICAgIG5hbWVzX3ByZWZpeCA9ICJ5ciIsCiAgICB2YWx1ZXNfdG8gPSAiR3BvcCIsCiAgKSAlPiUgCiAgbXV0YXRlKAogICAgeWVhciA9IGFzLm51bWVyaWMoeWVhcikKICApCmBgYAoKCgpgYGB7cn0KbG9uZ19kYXRfYWdyaSA8LSBkYXRfYWdyaSAlPiUgCiAgcGl2b3RfbG9uZ2VyKAogICAgY29scyA9IHN0YXJ0c193aXRoKCJ5ciIpLAogICAgbmFtZXNfdG8gPSAieWVhciIsCiAgICBuYW1lc19wcmVmaXggPSAieXIiLAogICAgdmFsdWVzX3RvID0gImFncmkiLAogICkgJT4lIAogIG11dGF0ZSgKICAgIHllYXIgPSBhcy5udW1lcmljKHllYXIpCiAgKQpgYGAKCgpgYGB7cn0KbG9uZ19kYXRfY29ucyA8LSBkYXRfY29ucyAlPiUgCiAgcGl2b3RfbG9uZ2VyKAogICAgY29scyA9IHN0YXJ0c193aXRoKCJ5ciIpLAogICAgbmFtZXNfdG8gPSAieWVhciIsCiAgICBuYW1lc19wcmVmaXggPSAieXIiLAogICAgdmFsdWVzX3RvID0gImNvbnMiLAogICkgJT4lIAogIG11dGF0ZSgKICAgIHllYXIgPSBhcy5udW1lcmljKHllYXIpCiAgKQpgYGAKCgpgYGB7cn0KbG9uZ19kYXRfbWluIDwtIGRhdF9taW4gJT4lIAogIHBpdm90X2xvbmdlcigKICAgIGNvbHMgPSBzdGFydHNfd2l0aCgieXIiKSwKICAgIG5hbWVzX3RvID0gInllYXIiLAogICAgbmFtZXNfcHJlZml4ID0gInlyIiwKICAgIHZhbHVlc190byA9ICJtaW4iLAogICkgJT4lIAogIG11dGF0ZSgKICAgIHllYXIgPSBhcy5udW1lcmljKHllYXIpCiAgKQpgYGAKCgpgYGB7cn0KbG9uZ19kYXRfbWFuIDwtIGRhdF9tYW4gJT4lIAogIHBpdm90X2xvbmdlcigKICAgIGNvbHMgPSBzdGFydHNfd2l0aCgieXIiKSwKICAgIG5hbWVzX3RvID0gInllYXIiLAogICAgbmFtZXNfcHJlZml4ID0gInlyIiwKICAgIHZhbHVlc190byA9ICJtYW4iLAogICkgJT4lIAogIG11dGF0ZSgKICAgIHllYXIgPSBhcy5udW1lcmljKHllYXIpCiAgKQpgYGAKCgpgYGB7cn0KbG9uZ19kYXRfc2VyIDwtIGRhdF9zZXIgJT4lIAogIHBpdm90X2xvbmdlcigKICAgIGNvbHMgPSBzdGFydHNfd2l0aCgieXIiKSwKICAgIG5hbWVzX3RvID0gInllYXIiLAogICAgbmFtZXNfcHJlZml4ID0gInlyIiwKICAgIHZhbHVlc190byA9ICJzZXIiLAogICkgJT4lIAogIG11dGF0ZSgKICAgIHllYXIgPSBhcy5udW1lcmljKHllYXIpCiAgKQpgYGAKCgojIyBNZXJnZSBhbGwgbG9uZyBwYW5lbHMKCmBgYHtyfQptZXJnZUNvbHMgPC0gYygiSURfUHJvdiIsICJ5ZWFyIiwgIlN0YXR1cyIsICJDbHViIiwgIlByb3ZpbmNlIikKYGBgCgoKYGBge3J9CmRhdF9QQU5FTCA8LSBsb25nX2RhdF9HRFBwYyAlPiUgCiAgaW5uZXJfam9pbihsb25nX2RhdF9pbnYsIGJ5ID0gbWVyZ2VDb2xzKSAlPiUgCiAgaW5uZXJfam9pbihsb25nX2RhdF9wb3AsIGJ5ID0gbWVyZ2VDb2xzKSAlPiUgCiAgaW5uZXJfam9pbihsb25nX2RhdF9HcG9wLCAgIGJ5ID0gbWVyZ2VDb2xzKSAlPiUgCiAgaW5uZXJfam9pbihsb25nX2RhdF9sYWJvciwgIGJ5ID0gbWVyZ2VDb2xzKSAlPiUgCiAgaW5uZXJfam9pbihsb25nX2RhdF9oYywgYnkgPSBtZXJnZUNvbHMpICU+JSAKICBpbm5lcl9qb2luKGxvbmdfZGF0X2FncmksIGJ5ID0gbWVyZ2VDb2xzKSAlPiUgCiAgaW5uZXJfam9pbihsb25nX2RhdF9jb25zLCBieSA9IG1lcmdlQ29scykgJT4lIAogIGlubmVyX2pvaW4obG9uZ19kYXRfbWluLCBieSA9IG1lcmdlQ29scykgJT4lIAogIGlubmVyX2pvaW4obG9uZ19kYXRfbWFuLCBieSA9IG1lcmdlQ29scykgJT4lIAogIGlubmVyX2pvaW4obG9uZ19kYXRfc2VyLCBieSA9IG1lcmdlQ29scykgCmBgYAoKCi0gQWRkIHZhcmlhYmxlOiAkR0RQcGNeMiQKCmBgYHtyfQpkYXRfUEFORUwgPC0gZGF0X1BBTkVMICU+JSAKICBtdXRhdGUoCiAgICBHRFBwYzIgPSAoR0RQcGMpXjIKICApCmBgYAoKCgpTYW1wbGUgZGF0YSBmcm9tIHRoZSBwcm92aW5jZXMgb2YgQWNlaAoKYGBge3J9CmRhdF9QQU5FTCAlPiUgCiAgaGVhZCgxNykKYGBgCgoKCgojIERlZmluaXRpb25zIG9mIHZhcmlhYmxlcwoKCiMjIFNlbGVjdCBhbmQgcmUtb3JkZXIgdmFyaWFibGVzCgpgYGB7cn0KZGF0X1BBTkVMIDwtIGRhdF9QQU5FTCAlPiUgCiAgc2VsZWN0KAogICAgUHJvdmluY2UsCiAgICB5ZWFyLAogICAgR0RQcGMsCiAgICBHRFBwYzIsCiAgICBpbnYsCiAgICBwb3AsCiAgICBHcG9wLAogICAgbGFib3IsCiAgICBoYywKICAgIGFncmksCiAgICBjb25zLAogICAgbWluLAogICAgbWFuLAogICAgc2VyLAogICAgU3RhdHVzLAogICAgQ2x1YiwKICAgIElEX1Byb3YKICApCmBgYAoKCgoKCiMjIFNob3cgZGVmaW5pdGlvbnMgb2YgdmFyaWFibGVzCgpgYGB7cn0KZGZfZGVmaW5pdGlvbnMgPC0gcmVhZF9jc3YoImRmX2RlZi5jc3YiKSAKZGZfZGVmaW5pdGlvbnMKYGBgCgoKCiMgSW50ZXJhY3RpdmUgVGFibGUKCgpgYGB7cn0KIyBEZWZpbmUgZnVuY3Rpb24gZm9yICBpbnRlcmFjdGl2ZSB0YWJsZQpjcmVhdGVfZHQgPC0gZnVuY3Rpb24oeCl7CiAgRFQ6OmRhdGF0YWJsZSh4LAogICAgICAgICAgICAgICAgZXh0ZW5zaW9ucyA9ICdCdXR0b25zJywKICAgICAgICAgICAgICAgIG9wdGlvbnMgPSBsaXN0KGRvbSA9ICdCbGZydGlwJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1dHRvbnMgPSBjKCdjb3B5JywgJ2NzdicsICdleGNlbCcsICdwZGYnLCAncHJpbnQnKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlbmd0aE1lbnUgPSBsaXN0KGMoMTAsMjUsNTAsLTEpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYygxMCwyNSw1MCwiQWxsIikpKSkKfQpgYGAKCgoKCmBgYHtyfQpkYXRfUEFORUwgJT4lIAogIGNyZWF0ZV9kdCgpICU+JSAKICBmb3JtYXRSb3VuZChjb2x1bW5zID1jKAoiR0RQcGMiLAoiR0RQcGMyIiwKImludiIsCiJwb3AiLAoiR3BvcCIsCiJsYWJvciIsCiJoYyIsCiJhZ3JpIiwKImNvbnMiLAoibWluIiwKIm1hbiIsCiJzZXIiCiAgKSwKICBkaWdpdHMgPSA0KQoKYGBgCgoKIyBJbnRlcmFjdGl2ZSBhbmQgQXV0b21hdGVkIGV4cGxvcmF0aW9uCgoKLSBJbml0aWFsIGV4cGxvcmF0aW9uCgoKYGBge3IgZXZhbD1GQUxTRSwgaW5jbHVkZT1UfQojIFJ1biBpdCBpbiB0aGUgY29uc29sZQoKRXhQYW5EKAogIGRmID0gZGF0X1BBTkVMLAogIGRmX2RlZiA9IGRmX2RlZmluaXRpb25zLAogIGV4cG9ydF9uYl9vcHRpb24gPSBUUlVFLAogIHRpdGxlID0gIlByb3ZpbmNpYWwgaW5jb21lLCBjb252ZXJnZW5jZSBjbHVicywgYW5kIHN0cnVjdHVyYWwgY2hhbmdlIGluICBJbmRvbmVzaWEgMjAwMS0yMDE3IiwKICBhYnN0cmFjdCA9IHBhc3RlKCJTdWdnZXN0ZWQgY2l0YXRpb246ICBHdW5hd2FuLCBBLiBhbmQgTWVuZGV6LCBDLiAoMjAyMCkuIFByb3ZpbmNpYWwgaW5jb21lLCBjb252ZXJnZW5jZSBjbHVicyBhbmQgc3RydWN0dXJhbCBjaGFuZ2UgaW4gSW5kb25lc2lhIDIwMDEtMjAxNzogQW4gaW50ZXJhY3RpdmUgYW5kIGF1dG9tYXRlZCBleHBsb3JhdGlvbiBpbiBSLiBSIFN0dWRpby9SUHVicy4gQXZhaWxhYmxlIGF0IGh0dHBzOi8vcnB1YnMuY29tL3F1YXJjcy1sYWIvZGF0YS1pbmRvbmVzaWEtMzQtcHJvdmluY2VzLWNsdWJzLTIwMDEtMjAxNyIpCiAgICApCgpgYGAKCgoKLSBBdXRvbWF0ZWQgZXhwbG9yYXRpb246IEZpcnN0IHlvdSBjdXN0b21pemUgdGhlIGV4cGxvcmF0aW9uLCBleHBvcnQgY29uZmlndXJhdGlvbiBmaWxlLCBhbmQgaW5jbHVkZSBpdCBpbiB0aGUgbmV3IHNldCB1cCBvZiB0aGUgZXhwbG9yYXRpb24uCgoKYGBge3J9CmNvbmZpZ19saXN0X2Zyb21SRFMgPC0gcmVhZFJEUygiRXhQYW5ELlJEUyIpCmBgYAoKCmBgYHtyIGV2YWw9RkFMU0UsIGluY2x1ZGU9VH0KIyBSdW4gaXQgaW4gdGhlIGNvbnNvbGUKCkV4UGFuRCgKICBkZiA9IGRhdF9QQU5FTCwKICBkZl9kZWYgPSBkZl9kZWZpbml0aW9ucywKICBleHBvcnRfbmJfb3B0aW9uID0gVFJVRSwKICBjb25maWdfbGlzdCA9IGNvbmZpZ19saXN0X2Zyb21SRFMsCiAgdGl0bGUgPSAiUHJvdmluY2lhbCBpbmNvbWUsIGNvbnZlcmdlbmNlIGNsdWJzLCBhbmQgc3RydWN0dXJhbCBjaGFuZ2UgaW4gIEluZG9uZXNpYSAyMDAxLTIwMTciLAogIGFic3RyYWN0ID0gcGFzdGUoIlN1Z2dlc3RlZCBjaXRhdGlvbjogIEd1bmF3YW4sIEEuIGFuZCBNZW5kZXosIEMuICgyMDIwKS4gUHJvdmluY2lhbCBpbmNvbWUsIGNvbnZlcmdlbmNlIGNsdWJzIGFuZCBzdHJ1Y3R1cmFsIGNoYW5nZSBpbiBJbmRvbmVzaWEgMjAwMS0yMDE3OiBBbiBpbnRlcmFjdGl2ZSBhbmQgYXV0b21hdGVkIGV4cGxvcmF0aW9uIGluIFIuIFIgU3R1ZGlvL1JQdWJzLiBBdmFpbGFibGUgYXQgaHR0cHM6Ly9ycHVicy5jb20vcXVhcmNzLWxhYi9kYXRhLWluZG9uZXNpYS0zNC1wcm92aW5jZXMtY2x1YnMtMjAwMS0yMDE3IikKICAgICkKCmBgYAoKCgotIEludGVyYWN0aXZlIERhc2hib3JhZCAoU2hpbnkgV2ViIEFwcCkKCgo+IDxodHRwczovL2Nhcmxvc21lbmRlejc3Ny5zaGlueWFwcHMuaW8vZGF0YS1pbmRvbmVzaWEtMzQtcHJvdmluY2VzLWNsdWJzLTIwMDEtMjAxNz4KCgoKIyBSZWZlcmVuY2VzCgoKCgoKRU5ECgoKCgo=