questions_df$question_text[1]
[1] "Overall, how helpful was the chatbot in helping you articulate events that happened on social media?"
# Frequency of responses
table(pilotdata_1_$helpfulness_chatbot_articulate)

Very unhelpful    Not helpful        Neutral  Quite helpful   Very helpful 
             1              2              7             41             49 
questions_df$question_text[2]
[1] "Overall, how well did the chatbot help you formulate your thoughts around specific social media challenges?"
# Frequency of responses
table(pilotdata_1_$helpfulness_chatbot_formulate)

Not well at all        Not well         Neutral      Quite well       Very well 
              1               1               8              49              41 
# Display the question text
questions_df$question_text[3]
[1] "If you had to take part in this type of study again, would you prefer the story creation process to be:"
# Frequency of responses
table(pilotdata_1_$preferred_story_creation_process)

   survey interview   chatbot 
       34         8        57 
# Load required libraries
library(likert)
library(tidyverse)

# Define recoding mappings for the variables
formulate_levels <- c("Not well at all", "Not well", "Neutral", "Quite well", "Very well")
helpful_levels <- c("Very unhelpful", "Not helpful", "Neutral", "Quite helpful", "Very helpful")


# Create a new structured data frame for helpfulness_chatbot_articulate
helpfulness_data <- data.frame(
  Item = c("Helpfulness of Chatbot"), # The question/item
  `Very unhelpful` = sum(pilotdata_1_$helpfulness_chatbot_articulate == "Very unhelpful", na.rm = TRUE),
  `Not helpful` = sum(pilotdata_1_$helpfulness_chatbot_articulate == "Not helpful", na.rm = TRUE),
  Neutral = sum(pilotdata_1_$helpfulness_chatbot_articulate == "Neutral", na.rm = TRUE),
  `Quite helpful` = sum(pilotdata_1_$helpfulness_chatbot_articulate == "Quite helpful", na.rm = TRUE),
  `Very helpful` = sum(pilotdata_1_$helpfulness_chatbot_articulate == "Very helpful", na.rm = TRUE)
)

# Rename columns for the Likert package
colnames(helpfulness_data) <- c("Item", "Very unhelpful", "Not helpful", "Neutral", "Quite helpful", "Very helpful")

# Use the likert() function with structured data
helpfulness_likert <- likert(summary = helpfulness_data)

# Plot the Likert chart for helpfulness
plot(helpfulness_likert,
     plot.percent.neutral = FALSE, # Suppress neutral percentages
     legend.position = "bottom" # Adjust legend position
) +
theme(aspect.ratio = 0.2) # Adjust the height-to-width ratio

ggsave("helpfulness_plot.png", plot = last_plot(), width = 8, height = 2.1, units = "in", dpi = 300)


# Create a new structured data frame for helpfulness_chatbot_formulate
formulate_data <- data.frame(
  Item = c("Formulate Challenges"), # The question/item
  `Not well at all` = sum(pilotdata_1_$helpfulness_chatbot_formulate == "Not well at all", na.rm = TRUE),
  `Not well` = sum(pilotdata_1_$helpfulness_chatbot_formulate == "Not well", na.rm = TRUE),
  Neutral = sum(pilotdata_1_$helpfulness_chatbot_formulate == "Neutral", na.rm = TRUE),
  `Quite well` = sum(pilotdata_1_$helpfulness_chatbot_formulate == "Quite well", na.rm = TRUE),
  `Very well` = sum(pilotdata_1_$helpfulness_chatbot_formulate == "Very well", na.rm = TRUE)
)

# Rename columns for the Likert package
colnames(formulate_data) <- c("Item", "Not well at all", "Not well", "Neutral", "Quite well", "Very well")

# Use the likert() function with structured data
formulate_likert <- likert(summary = formulate_data)

# Plot the Likert chart for formulate
plot(formulate_likert,
     plot.percent.neutral = FALSE, # Suppress neutral percentages
     legend.position = "bottom" # Adjust legend position
) +
theme(aspect.ratio = 0.2) # Adjust the height-to-width ratio

ggsave("formulate_plot.png", plot = last_plot(), width = 8, height = 2.1, units = "in", dpi = 300)

library(dplyr)
library(ggplot2)
library(RColorBrewer)
library(stringr)

preferred_data <- pilotdata_1_ %>%
  count(preferred_story_creation_process) %>%
  mutate(percentage = n / sum(n) * 100)

# Define a color palette similar to the likert package
likert_colors <- brewer.pal(3, "Set3")

# Plot the pie chart
ggplot(preferred_data, aes(x = "", y = percentage, fill = preferred_story_creation_process)) +
  geom_bar(stat = "identity", width = 1) +
  coord_polar(theta = "y") +
  theme_void() +
  scale_fill_manual(values = likert_colors) +
  labs(title = str_wrap("Preferred Story Creation Process", width = 50), fill = "Process") +
  theme(legend.position = "right")

ggsave("preferred_story_creation_pie.png", width = 6, height = 4, units = "in", dpi = 300)

library(ggplot2)
library(stringr)
# Create Likert objects for visualization
likert_data <- pilotdata_1_ %>% 
  select(helpfulness_chatbot_articulate, helpfulness_chatbot_formulate) %>% 
  rename(
    articulate = helpfulness_chatbot_articulate,
    formulate = helpfulness_chatbot_formulate
  )

# Convert to data frame for likert package
likert_df <- as.data.frame(likert_data)

# Create Likert object
result_likert <- likert(likert_df)

# Plot Likert bar graph
plot(result_likert, type = "bar", centered = FALSE) + 
  ggtitle("Chatbot Helpfulness Ratings")

# Save the plot
ggsave("likert_chatbot_helpfulness.png", width = 8, height = 2.1)

LS0tCnRpdGxlOiAiQ0hJIEJvdCBEYXRhIFZpc3VhbGl6YXRpb24iCm91dHB1dDogaHRtbF9ub3RlYm9vawotLS0KCmBgYHtyIHNldHVwLCBpbmNsdWRlPUZBTFNFfQpsaWJyYXJ5KHRpZHl2ZXJzZSkKbGlicmFyeShyZWFkeGwpCmxpYnJhcnkoImxpa2VydCIpCmxpYnJhcnkoInBzeWNoIikKbGlicmFyeShnZ3Bsb3QyKQpsaWJyYXJ5KHN0cmluZ3IpCgoKcGlsb3RkYXRhXzFfIDwtIHJlYWRfZXhjZWwoIn4vRGVza3RvcC9NaWNyb25hcnJhdGl2ZSBCb3QvcGlsb3RkYXRhICgxKS54bHN4IikKVmlldyhwaWxvdGRhdGFfMV8pCgojIFJlbmFtZSBjb2x1bW5zIHdoaWxlIGtlZXBpbmcgZnVsbCB0ZXh0IGFzIGxhYmVsIApjb2xuYW1lcyhwaWxvdGRhdGFfMV8pIDwtIGMoImhlbHBmdWxuZXNzX2NoYXRib3RfYXJ0aWN1bGF0ZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaGVscGZ1bG5lc3NfY2hhdGJvdF9mb3JtdWxhdGUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgInZhbHVlX2NoYXRib3RfZG9udHVzZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAicHJlZmVycmVkX3N0b3J5X2NyZWF0aW9uX3Byb2Nlc3MiKQpxdWVzdGlvbnNfZGYgPC0gdGliYmxlKAogIHZhcmlhYmxlX25hbWUgPSBjKCJoZWxwZnVsbmVzc19jaGF0Ym90X2FydGljdWxhdGUiLCAKICAgICAgICAgICAgICAgICAgICAiaGVscGZ1bG5lc3NfY2hhdGJvdF9mb3JtdWxhdGUiLCAKICAgICAgICAgICAgICAgICAgICAicHJlZmVycmVkX3N0b3J5X2NyZWF0aW9uX3Byb2Nlc3MiKSwKICBxdWVzdGlvbl90ZXh0ID0gYygKICAgICJPdmVyYWxsLCBob3cgaGVscGZ1bCB3YXMgdGhlIGNoYXRib3QgaW4gaGVscGluZyB5b3UgYXJ0aWN1bGF0ZSBldmVudHMgdGhhdCBoYXBwZW5lZCBvbiBzb2NpYWwgbWVkaWE/IiwgCiAgICAiT3ZlcmFsbCwgaG93IHdlbGwgZGlkIHRoZSBjaGF0Ym90IGhlbHAgeW91IGZvcm11bGF0ZSB5b3VyIHRob3VnaHRzIGFyb3VuZCBzcGVjaWZpYyBzb2NpYWwgbWVkaWEgY2hhbGxlbmdlcz8iLCAKICAgICJJZiB5b3UgaGFkIHRvIHRha2UgcGFydCBpbiB0aGlzIHR5cGUgb2Ygc3R1ZHkgYWdhaW4sIHdvdWxkIHlvdSBwcmVmZXIgdGhlIHN0b3J5IGNyZWF0aW9uIHByb2Nlc3MgdG8gYmU6IgogICkKKQoKIyBFeHBsaWNpdGx5IGRlZmluZSB0aGUgZmFjdG9yIGxldmVscyBmb3Igb3JkZXJlZCByZXNwb25zZXMKcGlsb3RkYXRhXzFfIDwtIHBpbG90ZGF0YV8xXyAlPiUgCiAgbXV0YXRlKAogICAgaGVscGZ1bG5lc3NfY2hhdGJvdF9hcnRpY3VsYXRlID0gZmFjdG9yKGhlbHBmdWxuZXNzX2NoYXRib3RfYXJ0aWN1bGF0ZSwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWxzID0gYygiVmVyeSB1bmhlbHBmdWwiLCAiTm90IGhlbHBmdWwiLCAiTmV1dHJhbCIsICJRdWl0ZSBoZWxwZnVsIiwgIlZlcnkgaGVscGZ1bCIpKSwKICAgIGhlbHBmdWxuZXNzX2NoYXRib3RfZm9ybXVsYXRlID0gZmFjdG9yKGhlbHBmdWxuZXNzX2NoYXRib3RfZm9ybXVsYXRlLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldmVscyA9IGMoIk5vdCB3ZWxsIGF0IGFsbCIsICJOb3Qgd2VsbCIsICJOZXV0cmFsIiwgIlF1aXRlIHdlbGwiLCAiVmVyeSB3ZWxsIikpLAogICAgcHJlZmVycmVkX3N0b3J5X2NyZWF0aW9uX3Byb2Nlc3MgPSBmYWN0b3IocHJlZmVycmVkX3N0b3J5X2NyZWF0aW9uX3Byb2Nlc3MsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWxzID0gYygic3VydmV5IiwgImludGVydmlldyIsImNoYXRib3QiKSkKICApCmBgYCAKCgpgYGB7cn0KCnF1ZXN0aW9uc19kZiRxdWVzdGlvbl90ZXh0WzFdCgojIEZyZXF1ZW5jeSBvZiByZXNwb25zZXMKdGFibGUocGlsb3RkYXRhXzFfJGhlbHBmdWxuZXNzX2NoYXRib3RfYXJ0aWN1bGF0ZSkKCnF1ZXN0aW9uc19kZiRxdWVzdGlvbl90ZXh0WzJdCgojIEZyZXF1ZW5jeSBvZiByZXNwb25zZXMKdGFibGUocGlsb3RkYXRhXzFfJGhlbHBmdWxuZXNzX2NoYXRib3RfZm9ybXVsYXRlKQoKIyBEaXNwbGF5IHRoZSBxdWVzdGlvbiB0ZXh0CnF1ZXN0aW9uc19kZiRxdWVzdGlvbl90ZXh0WzNdCgojIEZyZXF1ZW5jeSBvZiByZXNwb25zZXMKdGFibGUocGlsb3RkYXRhXzFfJHByZWZlcnJlZF9zdG9yeV9jcmVhdGlvbl9wcm9jZXNzKQoKYGBgCgpgYGB7cn0KIyBMb2FkIHJlcXVpcmVkIGxpYnJhcmllcwpsaWJyYXJ5KGxpa2VydCkKbGlicmFyeSh0aWR5dmVyc2UpCgojIERlZmluZSByZWNvZGluZyBtYXBwaW5ncyBmb3IgdGhlIHZhcmlhYmxlcwpmb3JtdWxhdGVfbGV2ZWxzIDwtIGMoIk5vdCB3ZWxsIGF0IGFsbCIsICJOb3Qgd2VsbCIsICJOZXV0cmFsIiwgIlF1aXRlIHdlbGwiLCAiVmVyeSB3ZWxsIikKaGVscGZ1bF9sZXZlbHMgPC0gYygiVmVyeSB1bmhlbHBmdWwiLCAiTm90IGhlbHBmdWwiLCAiTmV1dHJhbCIsICJRdWl0ZSBoZWxwZnVsIiwgIlZlcnkgaGVscGZ1bCIpCgoKIyBDcmVhdGUgYSBuZXcgc3RydWN0dXJlZCBkYXRhIGZyYW1lIGZvciBoZWxwZnVsbmVzc19jaGF0Ym90X2FydGljdWxhdGUKaGVscGZ1bG5lc3NfZGF0YSA8LSBkYXRhLmZyYW1lKAogIEl0ZW0gPSBjKCJIZWxwZnVsbmVzcyBvZiBDaGF0Ym90IiksICMgVGhlIHF1ZXN0aW9uL2l0ZW0KICBgVmVyeSB1bmhlbHBmdWxgID0gc3VtKHBpbG90ZGF0YV8xXyRoZWxwZnVsbmVzc19jaGF0Ym90X2FydGljdWxhdGUgPT0gIlZlcnkgdW5oZWxwZnVsIiwgbmEucm0gPSBUUlVFKSwKICBgTm90IGhlbHBmdWxgID0gc3VtKHBpbG90ZGF0YV8xXyRoZWxwZnVsbmVzc19jaGF0Ym90X2FydGljdWxhdGUgPT0gIk5vdCBoZWxwZnVsIiwgbmEucm0gPSBUUlVFKSwKICBOZXV0cmFsID0gc3VtKHBpbG90ZGF0YV8xXyRoZWxwZnVsbmVzc19jaGF0Ym90X2FydGljdWxhdGUgPT0gIk5ldXRyYWwiLCBuYS5ybSA9IFRSVUUpLAogIGBRdWl0ZSBoZWxwZnVsYCA9IHN1bShwaWxvdGRhdGFfMV8kaGVscGZ1bG5lc3NfY2hhdGJvdF9hcnRpY3VsYXRlID09ICJRdWl0ZSBoZWxwZnVsIiwgbmEucm0gPSBUUlVFKSwKICBgVmVyeSBoZWxwZnVsYCA9IHN1bShwaWxvdGRhdGFfMV8kaGVscGZ1bG5lc3NfY2hhdGJvdF9hcnRpY3VsYXRlID09ICJWZXJ5IGhlbHBmdWwiLCBuYS5ybSA9IFRSVUUpCikKCiMgUmVuYW1lIGNvbHVtbnMgZm9yIHRoZSBMaWtlcnQgcGFja2FnZQpjb2xuYW1lcyhoZWxwZnVsbmVzc19kYXRhKSA8LSBjKCJJdGVtIiwgIlZlcnkgdW5oZWxwZnVsIiwgIk5vdCBoZWxwZnVsIiwgIk5ldXRyYWwiLCAiUXVpdGUgaGVscGZ1bCIsICJWZXJ5IGhlbHBmdWwiKQoKIyBVc2UgdGhlIGxpa2VydCgpIGZ1bmN0aW9uIHdpdGggc3RydWN0dXJlZCBkYXRhCmhlbHBmdWxuZXNzX2xpa2VydCA8LSBsaWtlcnQoc3VtbWFyeSA9IGhlbHBmdWxuZXNzX2RhdGEpCgojIFBsb3QgdGhlIExpa2VydCBjaGFydCBmb3IgaGVscGZ1bG5lc3MKcGxvdChoZWxwZnVsbmVzc19saWtlcnQsCiAgICAgcGxvdC5wZXJjZW50Lm5ldXRyYWwgPSBGQUxTRSwgIyBTdXBwcmVzcyBuZXV0cmFsIHBlcmNlbnRhZ2VzCiAgICAgbGVnZW5kLnBvc2l0aW9uID0gImJvdHRvbSIgIyBBZGp1c3QgbGVnZW5kIHBvc2l0aW9uCikgKwp0aGVtZShhc3BlY3QucmF0aW8gPSAwLjIpICMgQWRqdXN0IHRoZSBoZWlnaHQtdG8td2lkdGggcmF0aW8KCmdnc2F2ZSgiaGVscGZ1bG5lc3NfcGxvdC5wbmciLCBwbG90ID0gbGFzdF9wbG90KCksIHdpZHRoID0gOCwgaGVpZ2h0ID0gMi4xLCB1bml0cyA9ICJpbiIsIGRwaSA9IDMwMCkKCiMgQ3JlYXRlIGEgbmV3IHN0cnVjdHVyZWQgZGF0YSBmcmFtZSBmb3IgaGVscGZ1bG5lc3NfY2hhdGJvdF9mb3JtdWxhdGUKZm9ybXVsYXRlX2RhdGEgPC0gZGF0YS5mcmFtZSgKICBJdGVtID0gYygiRm9ybXVsYXRlIENoYWxsZW5nZXMiKSwgIyBUaGUgcXVlc3Rpb24vaXRlbQogIGBOb3Qgd2VsbCBhdCBhbGxgID0gc3VtKHBpbG90ZGF0YV8xXyRoZWxwZnVsbmVzc19jaGF0Ym90X2Zvcm11bGF0ZSA9PSAiTm90IHdlbGwgYXQgYWxsIiwgbmEucm0gPSBUUlVFKSwKICBgTm90IHdlbGxgID0gc3VtKHBpbG90ZGF0YV8xXyRoZWxwZnVsbmVzc19jaGF0Ym90X2Zvcm11bGF0ZSA9PSAiTm90IHdlbGwiLCBuYS5ybSA9IFRSVUUpLAogIE5ldXRyYWwgPSBzdW0ocGlsb3RkYXRhXzFfJGhlbHBmdWxuZXNzX2NoYXRib3RfZm9ybXVsYXRlID09ICJOZXV0cmFsIiwgbmEucm0gPSBUUlVFKSwKICBgUXVpdGUgd2VsbGAgPSBzdW0ocGlsb3RkYXRhXzFfJGhlbHBmdWxuZXNzX2NoYXRib3RfZm9ybXVsYXRlID09ICJRdWl0ZSB3ZWxsIiwgbmEucm0gPSBUUlVFKSwKICBgVmVyeSB3ZWxsYCA9IHN1bShwaWxvdGRhdGFfMV8kaGVscGZ1bG5lc3NfY2hhdGJvdF9mb3JtdWxhdGUgPT0gIlZlcnkgd2VsbCIsIG5hLnJtID0gVFJVRSkKKQoKIyBSZW5hbWUgY29sdW1ucyBmb3IgdGhlIExpa2VydCBwYWNrYWdlCmNvbG5hbWVzKGZvcm11bGF0ZV9kYXRhKSA8LSBjKCJJdGVtIiwgIk5vdCB3ZWxsIGF0IGFsbCIsICJOb3Qgd2VsbCIsICJOZXV0cmFsIiwgIlF1aXRlIHdlbGwiLCAiVmVyeSB3ZWxsIikKCiMgVXNlIHRoZSBsaWtlcnQoKSBmdW5jdGlvbiB3aXRoIHN0cnVjdHVyZWQgZGF0YQpmb3JtdWxhdGVfbGlrZXJ0IDwtIGxpa2VydChzdW1tYXJ5ID0gZm9ybXVsYXRlX2RhdGEpCgojIFBsb3QgdGhlIExpa2VydCBjaGFydCBmb3IgZm9ybXVsYXRlCnBsb3QoZm9ybXVsYXRlX2xpa2VydCwKICAgICBwbG90LnBlcmNlbnQubmV1dHJhbCA9IEZBTFNFLCAjIFN1cHByZXNzIG5ldXRyYWwgcGVyY2VudGFnZXMKICAgICBsZWdlbmQucG9zaXRpb24gPSAiYm90dG9tIiAjIEFkanVzdCBsZWdlbmQgcG9zaXRpb24KKSArCnRoZW1lKGFzcGVjdC5yYXRpbyA9IDAuMikgIyBBZGp1c3QgdGhlIGhlaWdodC10by13aWR0aCByYXRpbwoKZ2dzYXZlKCJmb3JtdWxhdGVfcGxvdC5wbmciLCBwbG90ID0gbGFzdF9wbG90KCksIHdpZHRoID0gOCwgaGVpZ2h0ID0gMi4xLCB1bml0cyA9ICJpbiIsIGRwaSA9IDMwMCkKCmBgYApgYGB7cn0KbGlicmFyeShkcGx5cikKbGlicmFyeShnZ3Bsb3QyKQpsaWJyYXJ5KFJDb2xvckJyZXdlcikKbGlicmFyeShzdHJpbmdyKQoKcHJlZmVycmVkX2RhdGEgPC0gcGlsb3RkYXRhXzFfICU+JQogIGNvdW50KHByZWZlcnJlZF9zdG9yeV9jcmVhdGlvbl9wcm9jZXNzKSAlPiUKICBtdXRhdGUocGVyY2VudGFnZSA9IG4gLyBzdW0obikgKiAxMDApCgojIERlZmluZSBhIGNvbG9yIHBhbGV0dGUgc2ltaWxhciB0byB0aGUgbGlrZXJ0IHBhY2thZ2UKbGlrZXJ0X2NvbG9ycyA8LSBicmV3ZXIucGFsKDMsICJTZXQzIikKCiMgUGxvdCB0aGUgcGllIGNoYXJ0CmdncGxvdChwcmVmZXJyZWRfZGF0YSwgYWVzKHggPSAiIiwgeSA9IHBlcmNlbnRhZ2UsIGZpbGwgPSBwcmVmZXJyZWRfc3RvcnlfY3JlYXRpb25fcHJvY2VzcykpICsKICBnZW9tX2JhcihzdGF0ID0gImlkZW50aXR5Iiwgd2lkdGggPSAxKSArCiAgY29vcmRfcG9sYXIodGhldGEgPSAieSIpICsKICB0aGVtZV92b2lkKCkgKwogIHNjYWxlX2ZpbGxfbWFudWFsKHZhbHVlcyA9IGxpa2VydF9jb2xvcnMpICsKICBsYWJzKHRpdGxlID0gc3RyX3dyYXAoIlByZWZlcnJlZCBTdG9yeSBDcmVhdGlvbiBQcm9jZXNzIiwgd2lkdGggPSA1MCksIGZpbGwgPSAiUHJvY2VzcyIpICsKICB0aGVtZShsZWdlbmQucG9zaXRpb24gPSAicmlnaHQiKQoKZ2dzYXZlKCJwcmVmZXJyZWRfc3RvcnlfY3JlYXRpb25fcGllLnBuZyIsIHdpZHRoID0gNiwgaGVpZ2h0ID0gNCwgdW5pdHMgPSAiaW4iLCBkcGkgPSAzMDApCgpgYGAKCgpgYGB7cn0KbGlicmFyeShnZ3Bsb3QyKQpsaWJyYXJ5KHN0cmluZ3IpCiMgQ3JlYXRlIExpa2VydCBvYmplY3RzIGZvciB2aXN1YWxpemF0aW9uCmxpa2VydF9kYXRhIDwtIHBpbG90ZGF0YV8xXyAlPiUgCiAgc2VsZWN0KGhlbHBmdWxuZXNzX2NoYXRib3RfYXJ0aWN1bGF0ZSwgaGVscGZ1bG5lc3NfY2hhdGJvdF9mb3JtdWxhdGUpICU+JSAKICByZW5hbWUoCiAgICBhcnRpY3VsYXRlID0gaGVscGZ1bG5lc3NfY2hhdGJvdF9hcnRpY3VsYXRlLAogICAgZm9ybXVsYXRlID0gaGVscGZ1bG5lc3NfY2hhdGJvdF9mb3JtdWxhdGUKICApCgojIENvbnZlcnQgdG8gZGF0YSBmcmFtZSBmb3IgbGlrZXJ0IHBhY2thZ2UKbGlrZXJ0X2RmIDwtIGFzLmRhdGEuZnJhbWUobGlrZXJ0X2RhdGEpCgojIENyZWF0ZSBMaWtlcnQgb2JqZWN0CnJlc3VsdF9saWtlcnQgPC0gbGlrZXJ0KGxpa2VydF9kZikKCiMgUGxvdCBMaWtlcnQgYmFyIGdyYXBoCnBsb3QocmVzdWx0X2xpa2VydCwgdHlwZSA9ICJiYXIiLCBjZW50ZXJlZCA9IEZBTFNFKSArIAogIGdndGl0bGUoIkNoYXRib3QgSGVscGZ1bG5lc3MgUmF0aW5ncyIpCgojIFNhdmUgdGhlIHBsb3QKZ2dzYXZlKCJsaWtlcnRfY2hhdGJvdF9oZWxwZnVsbmVzcy5wbmciLCB3aWR0aCA9IDgsIGhlaWdodCA9IDIuMSkKYGBgCgoKCgoKCgoKCgo=