Figure 9.1: The Significance of Senior Level Power-Sharing

library(tidyverse)
library(tikzDevice)

load("./data/mechanism_models_democ.rda")
load("./data/mechanism_models_elec.rda")
load("./data/mechanism_models_rol.rda")
load("./data/mechanism_models_pubgoods.rda")


mechanism_models_democ <- mechanism_models_democ %>% 
  mutate(element = "Democracy Scores")

mechanism_models_elec <- mechanism_models_elec %>% 
  mutate(element = "Election Quality")

model_out_rol <- model_out_rol %>% 
  mutate(element = "Rule of Law")

model_out_pubgoods <- model_out_pubgoods %>% 
  mutate(element = "Public Goods")

all_effects <- bind_rows(mechanism_models_democ, mechanism_models_elec) %>% 
  bind_rows(., model_out_rol) %>% 
  bind_rows(., model_out_pubgoods)

all_effects <- all_effects %>% 
  filter(grepl("(S|s)enior", name)) %>% 
  mutate(name = stringr::str_replace_all(name, "nonseniorCOUNT", "Nonsenior PS"), 
         name = stringr::str_replace_all(name, "seniorCOUNT", "Senior PS")) %>% 
  mutate(element = forcats::fct_relevel(element, c("Democracy Scores", 
                                                     "Election Quality", 
                                                     "Rule of Law", 
                                                     "Public Goods")))
         

all_effects_plot <- ggplot(all_effects, 
                           aes(x = name, 
                               y = estimate)) +
  geom_point() + 
  geom_errorbar(aes(ymin = estimate - 1.67 * std.error, 
                    ymax = estimate + 1.67 * std.error),
                width = 0) +
  facet_wrap( ~ element, scales = "free_y", nrow = 1) +
  scale_x_discrete(labels = c("Nonsenior \n PS", "Senior \n PS")) +
  theme_bw() +
  labs(y = "Coefficient Estimate \n of the Interaction Term", x = "")


# Output for Manuscript
# options( tikzDocumentDeclaration = "\\documentclass[11pt]{article}" )
# tikz("../figures/seniorPScomparison.tex", height = 2.5)
# print(all_effects_plot)
# dev.off()

# Output for Rep. Archive
print(all_effects_plot)

Figure 9.2: Comparing different aid types

library(tidyverse)
library(tikzDevice)

load("./data/mechanism_models_democ.rda")
load("./data/mechanism_models_elec.rda")
load("./data/mechanism_models_rol.rda")
load("./data/mechanism_models_pubgoods.rda")


mechanism_models_democ <- mechanism_models_democ %>% 
  mutate(element = "Democracy Scores")

mechanism_models_elec <- mechanism_models_elec %>% 
  mutate(element = "Election Quality")

model_out_rol <- model_out_rol %>% 
  mutate(element = "Rule of Law")

model_out_pubgoods <- model_out_pubgoods %>% 
  mutate(element = "Public Goods")

all_effects <- bind_rows(mechanism_models_democ, mechanism_models_elec) %>% 
  bind_rows(., model_out_rol) %>% 
  bind_rows(., model_out_pubgoods)

all_effects <- all_effects %>% 
  filter(grepl("(A|a)id|DGA|dga|bga|pga", name)) %>% 
  mutate(name = stringr::str_replace_all(name, "dga_gdp_ln", "DGA"), 
         name = stringr::str_replace_all(name, "bga_gdp_ln", "Budget Aid"),
         name = stringr::str_replace_all(name, "pga_gdp_ln", "Program Aid")) %>% 
  mutate(element = forcats::fct_relevel(element, c("Democracy Scores",
                                                   "Election Quality",
                                                   "Rule of Law",
                                                   "Public Goods")))  %>%
  mutate(name = forcats::fct_relevel(name, c("DGA",
                                             "Program Aid",
                                             "Budget Aid")))
  #        

all_effects_plot <- ggplot(all_effects, 
                           aes(x = name, 
                               y = estimate)) +
  geom_point() + 
  geom_errorbar(aes(ymin = estimate - 1.67 * std.error, 
                    ymax = estimate + 1.67 * std.error),
                width = 0) +
  scale_x_discrete(labels = c("DGA",
                            "Program \n Aid",
                            "Budget \n Aid")) +
  geom_hline(yintercept = 0, linetype = 2) + 
  facet_wrap( ~ element, scales = "free_y", nrow = 1) +
  theme_bw() +
  labs(y = "Coefficient Estimate \n of the Interaction Term", x = "")
  

# Output for Manuscript
# options( tikzDocumentDeclaration = "\\documentclass[11pt]{article}" )
# tikz("../figures/aid_type_comparison.tex", height = 2.5)
# print(all_effects_plot)
# dev.off()

# Output for Rep. Archive
print(all_effects_plot)

9.3: Temporal Dynamics

library(tidyverse)
library(tikzDevice)

load("./data/temp_dyn_democ.rda")
load("./data/temp_dyn_rol.rda")
load("./data/temp_dyn_pubgoods.rda")


all_temp_dyn <- temp_dyn_democ %>% 
  bind_rows(., temp_dyn_rol) %>% 
  bind_rows(., temp_dyn_pubgoods)

all_temp_dyn <- all_temp_dyn %>% 
  ungroup() %>% 
  # mutate(estimate = ifelse(dem_score == "Freedom House", estimate * 10, estimate), 
  #        std.error = ifelse(dem_score == "Freedom House", estimate * 10, std.error)) %>% 
  mutate(dv = c(rep("Democracy Scores", 10), 
                rep("Rule of Law", 10), 
                rep("Public Goods", 10))) %>% 
  group_by(dv) %>% 
  mutate(legend = c(rep(1,5), c(rep(2, 5)))) %>% 
  ungroup() %>% 
  mutate(dv = forcats::fct_relevel(dv, c("Democracy Scores", "Rule of Law", "Public Goods")))

all_temp_dyn_plot <- ggplot(all_temp_dyn, 
                             aes(x = name, 
                                 y = estimate,
                                 group = dem_score, 
                                 color = factor(legend))) +
  geom_point( aes(group = dem_score), size = 1.7, 
              position = position_dodge(width = .5)) + 
  
  geom_errorbar(aes(ymin = estimate - 1.67 * std.error, 
                    ymax = estimate + 1.67 * std.error, 
                linetype = factor(legend)), 
                width = 0,
                position = position_dodge(width = .5)) +
  
  geom_hline(yintercept = 0, linetype = 2) +
  scale_color_manual("", values = c("#4575b4", "#e41a1c"),
                     labels = c("Democracy Scores: Polity\nRule of Law: LJI\nPublic Goods: Pub/Part. Spending", "Democracy Scores: FH\nRule of Law: V-Dem\nPublic Goods: Political Corruption")) +
  scale_linetype_manual("", values = c(1, 5), 
                        labels = c("Democracy Scores: Polity\nRule of Law: LJI\nPublic Goods: Pub/Part. Spending", "Democracy Scores: FH\nRule of Law: V-Dem\nPublic Goods: Political Corruption")) +
  theme_bw()+ 
  labs(x = "Year after t0", y = "Estimate of Interaction Coefficient \n between Power-Sharing (cabinet)\n and Aid/GDP (log)") +
   theme(legend.position = "bottom") +
  theme(legend.key.size=unit(3,"lines")) +
  facet_wrap(~dv, nrow = 1, scales = "free_y") 

# Output for Manuscript
# options( tikzDocumentDeclaration = "\\documentclass[11pt]{article}" )
tikz("../figures/all_temp_dyn_plot.tex", height = 3.5)
print(all_temp_dyn_plot)
dev.off()
## pdf 
##   2
# Output for Rep. Archive
print(all_temp_dyn_plot)

LS0tDQp0aXRsZTogIkNoYXB0ZXIgOTogQ29uY2x1c2lvbiINCm91dHB1dDogDQogIGh0bWxfZG9jdW1lbnQ6DQogICAgdG9jOiB0cnVlDQogICAgdG9jX2Zsb2F0OiANCiAgICAgIGNvbGxhcHNlZDogZmFsc2UNCiAgICBjb2RlX2Rvd25sb2FkOiB0cnVlDQogICAgY29kZV9mb2xkaW5nOiAiaGlkZSINCg0KLS0tDQoNCiMgRmlndXJlIDkuMTogVGhlIFNpZ25pZmljYW5jZSBvZiBTZW5pb3IgTGV2ZWwgUG93ZXItU2hhcmluZw0KDQpgYGB7ciwgZmlnLmFsaWduID0gImNlbnRlciIsIG1lc3NhZ2U9Riwgd2FybmluZz1GLCBjYWNoZSA9IFQsIGNvbW1lbnRzID0gRiwgZmlnLndpZHRoID0gOCwgZmlnLmhlaWdodCA9IDMsIGRldiA9ICJDYWlyb1BORyIgfQ0KbGlicmFyeSh0aWR5dmVyc2UpDQpsaWJyYXJ5KHRpa3pEZXZpY2UpDQoNCmxvYWQoIi4vZGF0YS9tZWNoYW5pc21fbW9kZWxzX2RlbW9jLnJkYSIpDQpsb2FkKCIuL2RhdGEvbWVjaGFuaXNtX21vZGVsc19lbGVjLnJkYSIpDQpsb2FkKCIuL2RhdGEvbWVjaGFuaXNtX21vZGVsc19yb2wucmRhIikNCmxvYWQoIi4vZGF0YS9tZWNoYW5pc21fbW9kZWxzX3B1Ymdvb2RzLnJkYSIpDQoNCg0KbWVjaGFuaXNtX21vZGVsc19kZW1vYyA8LSBtZWNoYW5pc21fbW9kZWxzX2RlbW9jICU+JSANCiAgbXV0YXRlKGVsZW1lbnQgPSAiRGVtb2NyYWN5IFNjb3JlcyIpDQoNCm1lY2hhbmlzbV9tb2RlbHNfZWxlYyA8LSBtZWNoYW5pc21fbW9kZWxzX2VsZWMgJT4lIA0KICBtdXRhdGUoZWxlbWVudCA9ICJFbGVjdGlvbiBRdWFsaXR5IikNCg0KbW9kZWxfb3V0X3JvbCA8LSBtb2RlbF9vdXRfcm9sICU+JSANCiAgbXV0YXRlKGVsZW1lbnQgPSAiUnVsZSBvZiBMYXciKQ0KDQptb2RlbF9vdXRfcHViZ29vZHMgPC0gbW9kZWxfb3V0X3B1Ymdvb2RzICU+JSANCiAgbXV0YXRlKGVsZW1lbnQgPSAiUHVibGljIEdvb2RzIikNCg0KYWxsX2VmZmVjdHMgPC0gYmluZF9yb3dzKG1lY2hhbmlzbV9tb2RlbHNfZGVtb2MsIG1lY2hhbmlzbV9tb2RlbHNfZWxlYykgJT4lIA0KICBiaW5kX3Jvd3MoLiwgbW9kZWxfb3V0X3JvbCkgJT4lIA0KICBiaW5kX3Jvd3MoLiwgbW9kZWxfb3V0X3B1Ymdvb2RzKQ0KDQphbGxfZWZmZWN0cyA8LSBhbGxfZWZmZWN0cyAlPiUgDQogIGZpbHRlcihncmVwbCgiKFN8cyllbmlvciIsIG5hbWUpKSAlPiUgDQogIG11dGF0ZShuYW1lID0gc3RyaW5ncjo6c3RyX3JlcGxhY2VfYWxsKG5hbWUsICJub25zZW5pb3JDT1VOVCIsICJOb25zZW5pb3IgUFMiKSwgDQogICAgICAgICBuYW1lID0gc3RyaW5ncjo6c3RyX3JlcGxhY2VfYWxsKG5hbWUsICJzZW5pb3JDT1VOVCIsICJTZW5pb3IgUFMiKSkgJT4lIA0KICBtdXRhdGUoZWxlbWVudCA9IGZvcmNhdHM6OmZjdF9yZWxldmVsKGVsZW1lbnQsIGMoIkRlbW9jcmFjeSBTY29yZXMiLCANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkVsZWN0aW9uIFF1YWxpdHkiLCANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlJ1bGUgb2YgTGF3IiwgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJQdWJsaWMgR29vZHMiKSkpDQogICAgICAgICANCg0KYWxsX2VmZmVjdHNfcGxvdCA8LSBnZ3Bsb3QoYWxsX2VmZmVjdHMsIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgYWVzKHggPSBuYW1lLCANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5ID0gZXN0aW1hdGUpKSArDQogIGdlb21fcG9pbnQoKSArIA0KICBnZW9tX2Vycm9yYmFyKGFlcyh5bWluID0gZXN0aW1hdGUgLSAxLjY3ICogc3RkLmVycm9yLCANCiAgICAgICAgICAgICAgICAgICAgeW1heCA9IGVzdGltYXRlICsgMS42NyAqIHN0ZC5lcnJvciksDQogICAgICAgICAgICAgICAgd2lkdGggPSAwKSArDQogIGZhY2V0X3dyYXAoIH4gZWxlbWVudCwgc2NhbGVzID0gImZyZWVfeSIsIG5yb3cgPSAxKSArDQogIHNjYWxlX3hfZGlzY3JldGUobGFiZWxzID0gYygiTm9uc2VuaW9yIFxuIFBTIiwgIlNlbmlvciBcbiBQUyIpKSArDQogIHRoZW1lX2J3KCkgKw0KICBsYWJzKHkgPSAiQ29lZmZpY2llbnQgRXN0aW1hdGUgXG4gb2YgdGhlIEludGVyYWN0aW9uIFRlcm0iLCB4ID0gIiIpDQoNCg0KIyBPdXRwdXQgZm9yIE1hbnVzY3JpcHQNCiMgb3B0aW9ucyggdGlrekRvY3VtZW50RGVjbGFyYXRpb24gPSAiXFxkb2N1bWVudGNsYXNzWzExcHRde2FydGljbGV9IiApDQojIHRpa3ooIi4uL2ZpZ3VyZXMvc2VuaW9yUFNjb21wYXJpc29uLnRleCIsIGhlaWdodCA9IDIuNSkNCiMgcHJpbnQoYWxsX2VmZmVjdHNfcGxvdCkNCiMgZGV2Lm9mZigpDQoNCiMgT3V0cHV0IGZvciBSZXAuIEFyY2hpdmUNCnByaW50KGFsbF9lZmZlY3RzX3Bsb3QpDQoNCiAgDQpgYGANCg0KDQoNCiMgRmlndXJlIDkuMjogQ29tcGFyaW5nIGRpZmZlcmVudCBhaWQgdHlwZXMNCg0KYGBge3IsIGZpZy5hbGlnbiA9ICJjZW50ZXIiLCBtZXNzYWdlPUYsIHdhcm5pbmc9RiwgY2FjaGUgPSBULCBjb21tZW50cyA9IEYsLCBmaWcud2lkdGggPSA4LCBmaWcuaGVpZ2h0ID0gMyxkZXYgPSAiQ2Fpcm9QTkciIH0NCmxpYnJhcnkodGlkeXZlcnNlKQ0KbGlicmFyeSh0aWt6RGV2aWNlKQ0KDQpsb2FkKCIuL2RhdGEvbWVjaGFuaXNtX21vZGVsc19kZW1vYy5yZGEiKQ0KbG9hZCgiLi9kYXRhL21lY2hhbmlzbV9tb2RlbHNfZWxlYy5yZGEiKQ0KbG9hZCgiLi9kYXRhL21lY2hhbmlzbV9tb2RlbHNfcm9sLnJkYSIpDQpsb2FkKCIuL2RhdGEvbWVjaGFuaXNtX21vZGVsc19wdWJnb29kcy5yZGEiKQ0KDQoNCm1lY2hhbmlzbV9tb2RlbHNfZGVtb2MgPC0gbWVjaGFuaXNtX21vZGVsc19kZW1vYyAlPiUgDQogIG11dGF0ZShlbGVtZW50ID0gIkRlbW9jcmFjeSBTY29yZXMiKQ0KDQptZWNoYW5pc21fbW9kZWxzX2VsZWMgPC0gbWVjaGFuaXNtX21vZGVsc19lbGVjICU+JSANCiAgbXV0YXRlKGVsZW1lbnQgPSAiRWxlY3Rpb24gUXVhbGl0eSIpDQoNCm1vZGVsX291dF9yb2wgPC0gbW9kZWxfb3V0X3JvbCAlPiUgDQogIG11dGF0ZShlbGVtZW50ID0gIlJ1bGUgb2YgTGF3IikNCg0KbW9kZWxfb3V0X3B1Ymdvb2RzIDwtIG1vZGVsX291dF9wdWJnb29kcyAlPiUgDQogIG11dGF0ZShlbGVtZW50ID0gIlB1YmxpYyBHb29kcyIpDQoNCmFsbF9lZmZlY3RzIDwtIGJpbmRfcm93cyhtZWNoYW5pc21fbW9kZWxzX2RlbW9jLCBtZWNoYW5pc21fbW9kZWxzX2VsZWMpICU+JSANCiAgYmluZF9yb3dzKC4sIG1vZGVsX291dF9yb2wpICU+JSANCiAgYmluZF9yb3dzKC4sIG1vZGVsX291dF9wdWJnb29kcykNCg0KYWxsX2VmZmVjdHMgPC0gYWxsX2VmZmVjdHMgJT4lIA0KICBmaWx0ZXIoZ3JlcGwoIihBfGEpaWR8REdBfGRnYXxiZ2F8cGdhIiwgbmFtZSkpICU+JSANCiAgbXV0YXRlKG5hbWUgPSBzdHJpbmdyOjpzdHJfcmVwbGFjZV9hbGwobmFtZSwgImRnYV9nZHBfbG4iLCAiREdBIiksIA0KICAgICAgICAgbmFtZSA9IHN0cmluZ3I6OnN0cl9yZXBsYWNlX2FsbChuYW1lLCAiYmdhX2dkcF9sbiIsICJCdWRnZXQgQWlkIiksDQogICAgICAgICBuYW1lID0gc3RyaW5ncjo6c3RyX3JlcGxhY2VfYWxsKG5hbWUsICJwZ2FfZ2RwX2xuIiwgIlByb2dyYW0gQWlkIikpICU+JSANCiAgbXV0YXRlKGVsZW1lbnQgPSBmb3JjYXRzOjpmY3RfcmVsZXZlbChlbGVtZW50LCBjKCJEZW1vY3JhY3kgU2NvcmVzIiwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJFbGVjdGlvbiBRdWFsaXR5IiwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJSdWxlIG9mIExhdyIsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUHVibGljIEdvb2RzIikpKSAgJT4lDQogIG11dGF0ZShuYW1lID0gZm9yY2F0czo6ZmN0X3JlbGV2ZWwobmFtZSwgYygiREdBIiwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJQcm9ncmFtIEFpZCIsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQnVkZ2V0IEFpZCIpKSkNCiAgIyAgICAgICAgDQoNCmFsbF9lZmZlY3RzX3Bsb3QgPC0gZ2dwbG90KGFsbF9lZmZlY3RzLCANCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGFlcyh4ID0gbmFtZSwgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeSA9IGVzdGltYXRlKSkgKw0KICBnZW9tX3BvaW50KCkgKyANCiAgZ2VvbV9lcnJvcmJhcihhZXMoeW1pbiA9IGVzdGltYXRlIC0gMS42NyAqIHN0ZC5lcnJvciwgDQogICAgICAgICAgICAgICAgICAgIHltYXggPSBlc3RpbWF0ZSArIDEuNjcgKiBzdGQuZXJyb3IpLA0KICAgICAgICAgICAgICAgIHdpZHRoID0gMCkgKw0KICBzY2FsZV94X2Rpc2NyZXRlKGxhYmVscyA9IGMoIkRHQSIsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIlByb2dyYW0gXG4gQWlkIiwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQnVkZ2V0IFxuIEFpZCIpKSArDQogIGdlb21faGxpbmUoeWludGVyY2VwdCA9IDAsIGxpbmV0eXBlID0gMikgKyANCiAgZmFjZXRfd3JhcCggfiBlbGVtZW50LCBzY2FsZXMgPSAiZnJlZV95IiwgbnJvdyA9IDEpICsNCiAgdGhlbWVfYncoKSArDQogIGxhYnMoeSA9ICJDb2VmZmljaWVudCBFc3RpbWF0ZSBcbiBvZiB0aGUgSW50ZXJhY3Rpb24gVGVybSIsIHggPSAiIikNCiAgDQoNCiMgT3V0cHV0IGZvciBNYW51c2NyaXB0DQojIG9wdGlvbnMoIHRpa3pEb2N1bWVudERlY2xhcmF0aW9uID0gIlxcZG9jdW1lbnRjbGFzc1sxMXB0XXthcnRpY2xlfSIgKQ0KIyB0aWt6KCIuLi9maWd1cmVzL2FpZF90eXBlX2NvbXBhcmlzb24udGV4IiwgaGVpZ2h0ID0gMi41KQ0KIyBwcmludChhbGxfZWZmZWN0c19wbG90KQ0KIyBkZXYub2ZmKCkNCg0KIyBPdXRwdXQgZm9yIFJlcC4gQXJjaGl2ZQ0KcHJpbnQoYWxsX2VmZmVjdHNfcGxvdCkNCg0KYGBgDQoNCiMgOS4zOiBUZW1wb3JhbCBEeW5hbWljcw0KDQpgYGB7ciwgZmlnLmFsaWduID0gImNlbnRlciIsIG1lc3NhZ2U9Riwgd2FybmluZz1GLCBjYWNoZSA9IFQsIGNvbW1lbnRzID0gRiwgLCBmaWcud2lkdGggPSA4LCBmaWcuaGVpZ2h0ID0gNCxkZXYgPSAiQ2Fpcm9QTkciIH0NCmxpYnJhcnkodGlkeXZlcnNlKQ0KbGlicmFyeSh0aWt6RGV2aWNlKQ0KDQpsb2FkKCIuL2RhdGEvdGVtcF9keW5fZGVtb2MucmRhIikNCmxvYWQoIi4vZGF0YS90ZW1wX2R5bl9yb2wucmRhIikNCmxvYWQoIi4vZGF0YS90ZW1wX2R5bl9wdWJnb29kcy5yZGEiKQ0KDQoNCmFsbF90ZW1wX2R5biA8LSB0ZW1wX2R5bl9kZW1vYyAlPiUgDQogIGJpbmRfcm93cyguLCB0ZW1wX2R5bl9yb2wpICU+JSANCiAgYmluZF9yb3dzKC4sIHRlbXBfZHluX3B1Ymdvb2RzKQ0KDQphbGxfdGVtcF9keW4gPC0gYWxsX3RlbXBfZHluICU+JSANCiAgdW5ncm91cCgpICU+JSANCiAgIyBtdXRhdGUoZXN0aW1hdGUgPSBpZmVsc2UoZGVtX3Njb3JlID09ICJGcmVlZG9tIEhvdXNlIiwgZXN0aW1hdGUgKiAxMCwgZXN0aW1hdGUpLCANCiAgIyAgICAgICAgc3RkLmVycm9yID0gaWZlbHNlKGRlbV9zY29yZSA9PSAiRnJlZWRvbSBIb3VzZSIsIGVzdGltYXRlICogMTAsIHN0ZC5lcnJvcikpICU+JSANCiAgbXV0YXRlKGR2ID0gYyhyZXAoIkRlbW9jcmFjeSBTY29yZXMiLCAxMCksIA0KICAgICAgICAgICAgICAgIHJlcCgiUnVsZSBvZiBMYXciLCAxMCksIA0KICAgICAgICAgICAgICAgIHJlcCgiUHVibGljIEdvb2RzIiwgMTApKSkgJT4lIA0KICBncm91cF9ieShkdikgJT4lIA0KICBtdXRhdGUobGVnZW5kID0gYyhyZXAoMSw1KSwgYyhyZXAoMiwgNSkpKSkgJT4lIA0KICB1bmdyb3VwKCkgJT4lIA0KICBtdXRhdGUoZHYgPSBmb3JjYXRzOjpmY3RfcmVsZXZlbChkdiwgYygiRGVtb2NyYWN5IFNjb3JlcyIsICJSdWxlIG9mIExhdyIsICJQdWJsaWMgR29vZHMiKSkpDQoNCmFsbF90ZW1wX2R5bl9wbG90IDwtIGdncGxvdChhbGxfdGVtcF9keW4sIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZXMoeCA9IG5hbWUsIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeSA9IGVzdGltYXRlLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JvdXAgPSBkZW1fc2NvcmUsIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3IgPSBmYWN0b3IobGVnZW5kKSkpICsNCiAgZ2VvbV9wb2ludCggYWVzKGdyb3VwID0gZGVtX3Njb3JlKSwgc2l6ZSA9IDEuNywgDQogICAgICAgICAgICAgIHBvc2l0aW9uID0gcG9zaXRpb25fZG9kZ2Uod2lkdGggPSAuNSkpICsgDQogIA0KICBnZW9tX2Vycm9yYmFyKGFlcyh5bWluID0gZXN0aW1hdGUgLSAxLjY3ICogc3RkLmVycm9yLCANCiAgICAgICAgICAgICAgICAgICAgeW1heCA9IGVzdGltYXRlICsgMS42NyAqIHN0ZC5lcnJvciwgDQogICAgICAgICAgICAgICAgbGluZXR5cGUgPSBmYWN0b3IobGVnZW5kKSksIA0KICAgICAgICAgICAgICAgIHdpZHRoID0gMCwNCiAgICAgICAgICAgICAgICBwb3NpdGlvbiA9IHBvc2l0aW9uX2RvZGdlKHdpZHRoID0gLjUpKSArDQogIA0KICBnZW9tX2hsaW5lKHlpbnRlcmNlcHQgPSAwLCBsaW5ldHlwZSA9IDIpICsNCiAgc2NhbGVfY29sb3JfbWFudWFsKCIiLCB2YWx1ZXMgPSBjKCIjNDU3NWI0IiwgIiNlNDFhMWMiKSwNCiAgICAgICAgICAgICAgICAgICAgIGxhYmVscyA9IGMoIkRlbW9jcmFjeSBTY29yZXM6IFBvbGl0eVxuUnVsZSBvZiBMYXc6IExKSVxuUHVibGljIEdvb2RzOiBQdWIvUGFydC4gU3BlbmRpbmciLCAiRGVtb2NyYWN5IFNjb3JlczogRkhcblJ1bGUgb2YgTGF3OiBWLURlbVxuUHVibGljIEdvb2RzOiBQb2xpdGljYWwgQ29ycnVwdGlvbiIpKSArDQogIHNjYWxlX2xpbmV0eXBlX21hbnVhbCgiIiwgdmFsdWVzID0gYygxLCA1KSwgDQogICAgICAgICAgICAgICAgICAgICAgICBsYWJlbHMgPSBjKCJEZW1vY3JhY3kgU2NvcmVzOiBQb2xpdHlcblJ1bGUgb2YgTGF3OiBMSklcblB1YmxpYyBHb29kczogUHViL1BhcnQuIFNwZW5kaW5nIiwgIkRlbW9jcmFjeSBTY29yZXM6IEZIXG5SdWxlIG9mIExhdzogVi1EZW1cblB1YmxpYyBHb29kczogUG9saXRpY2FsIENvcnJ1cHRpb24iKSkgKw0KICB0aGVtZV9idygpKyANCiAgbGFicyh4ID0gIlllYXIgYWZ0ZXIgdDAiLCB5ID0gIkVzdGltYXRlIG9mIEludGVyYWN0aW9uIENvZWZmaWNpZW50IFxuIGJldHdlZW4gUG93ZXItU2hhcmluZyAoY2FiaW5ldClcbiBhbmQgQWlkL0dEUCAobG9nKSIpICsNCiAgIHRoZW1lKGxlZ2VuZC5wb3NpdGlvbiA9ICJib3R0b20iKSArDQogIHRoZW1lKGxlZ2VuZC5rZXkuc2l6ZT11bml0KDMsImxpbmVzIikpICsNCiAgZmFjZXRfd3JhcCh+ZHYsIG5yb3cgPSAxLCBzY2FsZXMgPSAiZnJlZV95IikgDQoNCiMgT3V0cHV0IGZvciBNYW51c2NyaXB0DQojIG9wdGlvbnMoIHRpa3pEb2N1bWVudERlY2xhcmF0aW9uID0gIlxcZG9jdW1lbnRjbGFzc1sxMXB0XXthcnRpY2xlfSIgKQ0KdGlreigiLi4vZmlndXJlcy9hbGxfdGVtcF9keW5fcGxvdC50ZXgiLCBoZWlnaHQgPSAzLjUpDQpwcmludChhbGxfdGVtcF9keW5fcGxvdCkNCmRldi5vZmYoKQ0KDQojIE91dHB1dCBmb3IgUmVwLiBBcmNoaXZlDQpwcmludChhbGxfdGVtcF9keW5fcGxvdCkNCg0KYGBg