China is Redrawing the Map of World Science
China is Redrawing the Map of World Science by some metrics:



R Codes for collecting data and Visualization:
library(rvest)
library(tidyverse)
#=======================================================
# Research and development spending by country
#=======================================================
spending_link <- "https://en.wikipedia.org/wiki/List_of_countries_by_research_and_development_spending"
spending_link %>%
read_html() %>%
html_table(fill = TRUE) %>%
.[[3]] %>%
select(-Year, -Source) -> df_spending
names(df_spending) <- c("country", "expOn_RD", "percent_GDP", "per_capital_RD")
df_spending <- df_spending %>%
mutate(expOn_RD = as.numeric(expOn_RD),
per_capital_RD = as.numeric(per_capital_RD %>% str_replace_all("\\,", "")),
percent_GDP = str_replace_all(percent_GDP, "%", "") %>% as.numeric())
#===============================
# Total Research Paper
#===============================
total_paper_link <- "https://www.scimagojr.com/countryrank.php?fbclid=IwAR2BP_UlTzsowsNXuVL44keV9pJPJ2T3-Xn156CWYrz51BTm4XR3w9CqQa4"
total_paper_link %>%
read_html() %>%
html_table(fill = TRUE) %>%
.[[1]] -> df_total_research_paper
df_total_research_paper <- df_total_research_paper[, -c(1:2)]
names(df_total_research_paper) <- names(df_total_research_paper) %>% str_replace_all("-| ", "")
#===============================
# Technical Journal Papers
#===============================
stem_paper_link <- "https://www.worldatlas.com/articles/20-countries-publishing-the-most-scholarly-articles.html"
stem_paper_link %>%
read_html() %>%
html_table(fill = TRUE) %>%
.[[1]] -> df_stem
names(df_stem) <- c("rank", "country", "paper_num_stem")
df_stem <- df_stem %>% mutate(paper_num_stem = str_replace_all(paper_num_stem, "[^0-9]", "") %>% as.numeric())
#=====================
# Create our theme
#=====================
library(hrbrthemes)
# Colors selected:
my_colors <- c("#8C3F4D", "#3E606F")
df_total_research_paper %>%
slice(1:20) %>%
arrange(Documents) %>%
mutate(Country = factor(Country, levels = Country)) %>%
mutate(Documents = round(Documents / 1000), 0) %>%
ggplot(aes(Country, Documents)) +
geom_col(fill = my_colors[1], color = my_colors[1]) +
coord_flip() +
geom_text(aes(label = Documents), color = "white", hjust = 1.1, size = 5) +
theme_modern_rc(plot_title_size = 22, caption_size = 10,
axis_text_size = 14, axis_title_size = 12, plot_margin = margin(35, 35, 35, 35)) +
theme(panel.grid.major.y = element_blank()) +
theme(panel.grid.minor.x = element_blank()) +
scale_y_continuous(labels = scales::comma, expand = c(0.01, 0)) +
labs(title = "The Top 20 Countries by Number of Research Papers Published",
x = NULL, y = "Number of Research Papers",
caption = "Data Source: https://www.scimagojr.com",
subtitle = "China is ranked country second behind the United States with 5901 (in thousands) papers published in all fields.\nThis number does not include Hong Kong and Macau territories.")
df_stem %>%
arrange(paper_num_stem) %>%
mutate(country = factor(country, levels = country)) %>%
mutate(paper_num_stem = round(paper_num_stem / 1000), 0) %>%
ggplot(aes(country, paper_num_stem)) +
geom_col(fill = my_colors[1], color = my_colors[1]) +
coord_flip() +
geom_text(aes(label = paper_num_stem), color = "white", hjust = 1.1, size = 5) +
theme_modern_rc(plot_title_size = 22, caption_size = 10,
axis_text_size = 14, axis_title_size = 12, plot_margin = margin(35, 35, 35, 35)) +
theme(panel.grid.major.y = element_blank()) +
theme(panel.grid.minor.x = element_blank()) +
scale_y_continuous(labels = scales::comma, expand = c(0.01, 0)) +
labs(title = "The Top 20 Countries by Number of Scientific and Technical Papers Published",
x = NULL, y = "Number of Research Papers",
caption = "Data Source: https://www.worldatlas.com",
subtitle = "China is ranked country second behind the United States with 401 (in thousands) scientific/technical papers published.\nThis number does not include Hong Kong and Macau territories.")
df_spending %>%
filter(country != "European Union") %>%
slice(1:20) %>%
arrange(expOn_RD) %>%
mutate(country = factor(country, levels = country)) -> df_spending
df_spending %>%
ggplot(aes(country, expOn_RD)) +
geom_col(fill = my_colors[1], color = my_colors[1]) +
coord_flip() +
geom_text(data = df_spending %>% slice(16:20), aes(label = expOn_RD), color = "white", hjust = 1.1, size = 5) +
geom_text(data = df_spending %>% slice(1:15), aes(label = expOn_RD), color = "white", hjust = -0.1, size = 5) +
theme_modern_rc(plot_title_size = 22, caption_size = 10,
axis_text_size = 14, axis_title_size = 12, plot_margin = margin(35, 35, 35, 35)) +
theme(panel.grid.major.y = element_blank()) +
theme(panel.grid.minor.x = element_blank()) +
scale_y_continuous(labels = scales::comma, expand = c(0.01, 0)) +
labs(title = "The Top 20 Countries by Research and Development Spending",
x = NULL, y = "Expenditures on R&D",
caption = "Data Source: http://uis.unesco.org/apps/visualisations/research-and-development-spending/",
subtitle = "Global spending on R&D has reached a record high of almost US$ 1.7 trillion. About 10 countries account for 80% of spending.\nChina is ranked country second behind the United States with R&D spending of 451.9 Billions Dollars.\nThis number does not include Hong Kong and Macau territories.")
LS0tDQp0aXRsZTogIkNoaW5hIGlzIFJlZHJhd2luZyB0aGUgTWFwIG9mIFdvcmxkIFNjaWVuY2UiIA0Kc3VidGl0bGU6ICJSIGZvciBQbGVhc3VyZSINCmF1dGhvcjogIk5ndXllbiBDaGkgRHVuZyINCm91dHB1dDoNCiAgaHRtbF9kb2N1bWVudDogDQogICAgY29kZV9kb3dubG9hZDogdHJ1ZQ0KICAgIGNvZGVfZm9sZGluZzogaGlkZQ0KICAgIGhpZ2hsaWdodDogemVuYnVybg0KICAgICMgbnVtYmVyX3NlY3Rpb25zOiB5ZXMNCiAgICB0aGVtZTogImZsYXRseSINCiAgICB0b2M6IFRSVUUNCiAgICB0b2NfZmxvYXQ6IFRSVUUNCi0tLQ0KDQpgYGB7ciBzZXR1cCxpbmNsdWRlPUZBTFNFfQ0Ka25pdHI6Om9wdHNfY2h1bmskc2V0KGVjaG8gPSBUUlVFLCB3YXJuaW5nID0gRkFMU0UsIG1lc3NhZ2UgPSBGQUxTRSwgZmlnLnJldGluYT0yKQ0KYGBgDQoNCiMgQ2hpbmEgaXMgUmVkcmF3aW5nIHRoZSBNYXAgb2YgV29ybGQgU2NpZW5jZQ0KDQpDaGluYSBpcyBSZWRyYXdpbmcgdGhlIE1hcCBvZiBXb3JsZCBTY2llbmNlIGJ5IHNvbWUgbWV0cmljczogDQoNCg0KIVtdKEM6XFxVc2Vyc1xcWmJvb2tcRGVza3RvcFxccGljXFxwMS5qcGcpIA0KDQoNCiFbXShDOlxcVXNlcnNcXFpib29rXERlc2t0b3BcXHBpY1xccDIuanBnKQ0KDQoNCiFbXShDOlxcVXNlcnNcXFpib29rXERlc2t0b3BcXHBpY1xccDMuanBnKQ0KDQoNClIgQ29kZXMgZm9yIGNvbGxlY3RpbmcgZGF0YSBhbmQgVmlzdWFsaXphdGlvbjogDQoNCg0KYGBge3IsIGV2YWw9RkFMU0V9DQoNCg0KbGlicmFyeShydmVzdCkNCmxpYnJhcnkodGlkeXZlcnNlKQ0KDQoNCiM9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQojICAgICBSZXNlYXJjaCBhbmQgZGV2ZWxvcG1lbnQgc3BlbmRpbmcgYnkgY291bnRyeQ0KIz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCg0KDQpzcGVuZGluZ19saW5rIDwtICJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9MaXN0X29mX2NvdW50cmllc19ieV9yZXNlYXJjaF9hbmRfZGV2ZWxvcG1lbnRfc3BlbmRpbmciDQoNCnNwZW5kaW5nX2xpbmsgJT4lIA0KICByZWFkX2h0bWwoKSAlPiUgDQogIGh0bWxfdGFibGUoZmlsbCA9IFRSVUUpICU+JSANCiAgLltbM11dICU+JSANCiAgc2VsZWN0KC1ZZWFyLCAtU291cmNlKSAtPiBkZl9zcGVuZGluZw0KDQpuYW1lcyhkZl9zcGVuZGluZykgPC0gYygiY291bnRyeSIsICJleHBPbl9SRCIsICJwZXJjZW50X0dEUCIsICJwZXJfY2FwaXRhbF9SRCIpDQoNCmRmX3NwZW5kaW5nIDwtIGRmX3NwZW5kaW5nICU+JSANCiAgbXV0YXRlKGV4cE9uX1JEID0gYXMubnVtZXJpYyhleHBPbl9SRCksIA0KICAgICAgICAgcGVyX2NhcGl0YWxfUkQgPSBhcy5udW1lcmljKHBlcl9jYXBpdGFsX1JEICU+JSBzdHJfcmVwbGFjZV9hbGwoIlxcLCIsICIiKSksIA0KICAgICAgICAgcGVyY2VudF9HRFAgPSBzdHJfcmVwbGFjZV9hbGwocGVyY2VudF9HRFAsICIlIiwgIiIpICU+JSBhcy5udW1lcmljKCkpDQoNCiM9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQojICAgICBUb3RhbCBSZXNlYXJjaCBQYXBlcg0KIz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCg0KdG90YWxfcGFwZXJfbGluayA8LSAiaHR0cHM6Ly93d3cuc2NpbWFnb2pyLmNvbS9jb3VudHJ5cmFuay5waHA/ZmJjbGlkPUl3QVIyQlBfVWxUenNvd3NOWHVWTDQ0a2VWOXBKUEoyVDMtWG4xNTZDV1lyejUxQlRtNFhSM3c5Q3FRYTQiDQoNCg0KdG90YWxfcGFwZXJfbGluayAlPiUgDQogIHJlYWRfaHRtbCgpICU+JSANCiAgaHRtbF90YWJsZShmaWxsID0gVFJVRSkgJT4lIA0KICAuW1sxXV0gLT4gZGZfdG90YWxfcmVzZWFyY2hfcGFwZXINCg0KZGZfdG90YWxfcmVzZWFyY2hfcGFwZXIgPC0gZGZfdG90YWxfcmVzZWFyY2hfcGFwZXJbLCAtYygxOjIpXQ0KbmFtZXMoZGZfdG90YWxfcmVzZWFyY2hfcGFwZXIpIDwtIG5hbWVzKGRmX3RvdGFsX3Jlc2VhcmNoX3BhcGVyKSAlPiUgc3RyX3JlcGxhY2VfYWxsKCItfCAiLCAiIikNCg0KIz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCiMgICBUZWNobmljYWwgSm91cm5hbCBQYXBlcnMNCiM9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQoNCnN0ZW1fcGFwZXJfbGluayA8LSAiaHR0cHM6Ly93d3cud29ybGRhdGxhcy5jb20vYXJ0aWNsZXMvMjAtY291bnRyaWVzLXB1Ymxpc2hpbmctdGhlLW1vc3Qtc2Nob2xhcmx5LWFydGljbGVzLmh0bWwiDQoNCnN0ZW1fcGFwZXJfbGluayAlPiUgDQogIHJlYWRfaHRtbCgpICU+JSANCiAgaHRtbF90YWJsZShmaWxsID0gVFJVRSkgJT4lIA0KICAuW1sxXV0gLT4gZGZfc3RlbQ0KDQpuYW1lcyhkZl9zdGVtKSA8LSBjKCJyYW5rIiwgImNvdW50cnkiLCAicGFwZXJfbnVtX3N0ZW0iKQ0KZGZfc3RlbSA8LSBkZl9zdGVtICU+JSBtdXRhdGUocGFwZXJfbnVtX3N0ZW0gPSBzdHJfcmVwbGFjZV9hbGwocGFwZXJfbnVtX3N0ZW0sICJbXjAtOV0iLCAiIikgJT4lIGFzLm51bWVyaWMoKSkNCg0KIz09PT09PT09PT09PT09PT09PT09PQ0KIyAgQ3JlYXRlIG91ciB0aGVtZQ0KIz09PT09PT09PT09PT09PT09PT09PQ0KDQpsaWJyYXJ5KGhyYnJ0aGVtZXMpDQoNCiMgQ29sb3JzIHNlbGVjdGVkOiANCm15X2NvbG9ycyA8LSBjKCIjOEMzRjREIiwgIiMzRTYwNkYiKQ0KDQpkZl90b3RhbF9yZXNlYXJjaF9wYXBlciAlPiUgDQogIHNsaWNlKDE6MjApICU+JSANCiAgYXJyYW5nZShEb2N1bWVudHMpICU+JSANCiAgbXV0YXRlKENvdW50cnkgPSBmYWN0b3IoQ291bnRyeSwgbGV2ZWxzID0gQ291bnRyeSkpICU+JSANCiAgbXV0YXRlKERvY3VtZW50cyA9IHJvdW5kKERvY3VtZW50cyAvIDEwMDApLCAwKSAlPiUgDQogIGdncGxvdChhZXMoQ291bnRyeSwgRG9jdW1lbnRzKSkgKyANCiAgZ2VvbV9jb2woZmlsbCA9IG15X2NvbG9yc1sxXSwgY29sb3IgPSBteV9jb2xvcnNbMV0pICsgDQogIGNvb3JkX2ZsaXAoKSArIA0KICBnZW9tX3RleHQoYWVzKGxhYmVsID0gRG9jdW1lbnRzKSwgY29sb3IgPSAid2hpdGUiLCBoanVzdCA9IDEuMSwgc2l6ZSA9IDUpICsgDQogIHRoZW1lX21vZGVybl9yYyhwbG90X3RpdGxlX3NpemUgPSAyMiwgY2FwdGlvbl9zaXplID0gMTAsIA0KICAgICAgICAgICAgICAgICAgYXhpc190ZXh0X3NpemUgPSAxNCwgYXhpc190aXRsZV9zaXplID0gMTIsICBwbG90X21hcmdpbiA9IG1hcmdpbigzNSwgMzUsIDM1LCAzNSkpICsNCiAgdGhlbWUocGFuZWwuZ3JpZC5tYWpvci55ID0gZWxlbWVudF9ibGFuaygpKSArIA0KICB0aGVtZShwYW5lbC5ncmlkLm1pbm9yLnggPSBlbGVtZW50X2JsYW5rKCkpICsgDQogIHNjYWxlX3lfY29udGludW91cyhsYWJlbHMgPSBzY2FsZXM6OmNvbW1hLCBleHBhbmQgPSBjKDAuMDEsIDApKSArIA0KICBsYWJzKHRpdGxlID0gIlRoZSBUb3AgMjAgQ291bnRyaWVzIGJ5IE51bWJlciBvZiBSZXNlYXJjaCBQYXBlcnMgUHVibGlzaGVkIiwgDQogICAgICAgeCA9IE5VTEwsIHkgPSAiTnVtYmVyIG9mIFJlc2VhcmNoIFBhcGVycyIsIA0KICAgICAgIGNhcHRpb24gPSAiRGF0YSBTb3VyY2U6IGh0dHBzOi8vd3d3LnNjaW1hZ29qci5jb20iLCANCiAgICAgICBzdWJ0aXRsZSA9ICJDaGluYSBpcyByYW5rZWQgY291bnRyeSBzZWNvbmQgYmVoaW5kIHRoZSBVbml0ZWQgU3RhdGVzIHdpdGggNTkwMSAoaW4gdGhvdXNhbmRzKSAgcGFwZXJzIHB1Ymxpc2hlZCBpbiBhbGwgZmllbGRzLlxuVGhpcyBudW1iZXIgZG9lcyBub3QgaW5jbHVkZSBIb25nIEtvbmcgYW5kIE1hY2F1IHRlcnJpdG9yaWVzLiIpDQoNCg0KDQpkZl9zdGVtICU+JSANCiAgYXJyYW5nZShwYXBlcl9udW1fc3RlbSkgJT4lIA0KICBtdXRhdGUoY291bnRyeSA9IGZhY3Rvcihjb3VudHJ5LCBsZXZlbHMgPSBjb3VudHJ5KSkgJT4lIA0KICBtdXRhdGUocGFwZXJfbnVtX3N0ZW0gPSByb3VuZChwYXBlcl9udW1fc3RlbSAvIDEwMDApLCAwKSAlPiUgDQogIGdncGxvdChhZXMoY291bnRyeSwgcGFwZXJfbnVtX3N0ZW0pKSArIA0KICBnZW9tX2NvbChmaWxsID0gbXlfY29sb3JzWzFdLCBjb2xvciA9IG15X2NvbG9yc1sxXSkgKyANCiAgY29vcmRfZmxpcCgpICsgDQogIGdlb21fdGV4dChhZXMobGFiZWwgPSBwYXBlcl9udW1fc3RlbSksIGNvbG9yID0gIndoaXRlIiwgaGp1c3QgPSAxLjEsIHNpemUgPSA1KSArIA0KICB0aGVtZV9tb2Rlcm5fcmMocGxvdF90aXRsZV9zaXplID0gMjIsIGNhcHRpb25fc2l6ZSA9IDEwLCANCiAgICAgICAgICAgICAgICAgIGF4aXNfdGV4dF9zaXplID0gMTQsIGF4aXNfdGl0bGVfc2l6ZSA9IDEyLCAgcGxvdF9tYXJnaW4gPSBtYXJnaW4oMzUsIDM1LCAzNSwgMzUpKSArDQogIHRoZW1lKHBhbmVsLmdyaWQubWFqb3IueSA9IGVsZW1lbnRfYmxhbmsoKSkgKyANCiAgdGhlbWUocGFuZWwuZ3JpZC5taW5vci54ID0gZWxlbWVudF9ibGFuaygpKSArIA0KICBzY2FsZV95X2NvbnRpbnVvdXMobGFiZWxzID0gc2NhbGVzOjpjb21tYSwgZXhwYW5kID0gYygwLjAxLCAwKSkgKyANCiAgbGFicyh0aXRsZSA9ICJUaGUgVG9wIDIwIENvdW50cmllcyBieSBOdW1iZXIgb2YgU2NpZW50aWZpYyBhbmQgVGVjaG5pY2FsIFBhcGVycyBQdWJsaXNoZWQiLCANCiAgICAgICB4ID0gTlVMTCwgeSA9ICJOdW1iZXIgb2YgUmVzZWFyY2ggUGFwZXJzIiwgDQogICAgICAgY2FwdGlvbiA9ICJEYXRhIFNvdXJjZTogaHR0cHM6Ly93d3cud29ybGRhdGxhcy5jb20iLCANCiAgICAgICBzdWJ0aXRsZSA9ICJDaGluYSBpcyByYW5rZWQgY291bnRyeSBzZWNvbmQgYmVoaW5kIHRoZSBVbml0ZWQgU3RhdGVzIHdpdGggNDAxIChpbiB0aG91c2FuZHMpIHNjaWVudGlmaWMvdGVjaG5pY2FsIHBhcGVycyBwdWJsaXNoZWQuXG5UaGlzIG51bWJlciBkb2VzIG5vdCBpbmNsdWRlIEhvbmcgS29uZyBhbmQgTWFjYXUgdGVycml0b3JpZXMuIikNCg0KDQoNCmRmX3NwZW5kaW5nICU+JSANCiAgZmlsdGVyKGNvdW50cnkgIT0gIkV1cm9wZWFuIFVuaW9uIikgJT4lIA0KICBzbGljZSgxOjIwKSAlPiUgDQogIGFycmFuZ2UoZXhwT25fUkQpICU+JSANCiAgbXV0YXRlKGNvdW50cnkgPSBmYWN0b3IoY291bnRyeSwgbGV2ZWxzID0gY291bnRyeSkpIC0+IGRmX3NwZW5kaW5nDQoNCg0KZGZfc3BlbmRpbmcgJT4lIA0KICBnZ3Bsb3QoYWVzKGNvdW50cnksIGV4cE9uX1JEKSkgKyANCiAgZ2VvbV9jb2woZmlsbCA9IG15X2NvbG9yc1sxXSwgY29sb3IgPSBteV9jb2xvcnNbMV0pICsgDQogIGNvb3JkX2ZsaXAoKSArIA0KICBnZW9tX3RleHQoZGF0YSA9IGRmX3NwZW5kaW5nICU+JSBzbGljZSgxNjoyMCksIGFlcyhsYWJlbCA9IGV4cE9uX1JEKSwgY29sb3IgPSAid2hpdGUiLCBoanVzdCA9IDEuMSwgc2l6ZSA9IDUpICsgIA0KICBnZW9tX3RleHQoZGF0YSA9IGRmX3NwZW5kaW5nICU+JSBzbGljZSgxOjE1KSwgYWVzKGxhYmVsID0gZXhwT25fUkQpLCBjb2xvciA9ICJ3aGl0ZSIsIGhqdXN0ID0gLTAuMSwgc2l6ZSA9IDUpICsgDQogIHRoZW1lX21vZGVybl9yYyhwbG90X3RpdGxlX3NpemUgPSAyMiwgY2FwdGlvbl9zaXplID0gMTAsIA0KICAgICAgICAgICAgICAgICAgYXhpc190ZXh0X3NpemUgPSAxNCwgYXhpc190aXRsZV9zaXplID0gMTIsICBwbG90X21hcmdpbiA9IG1hcmdpbigzNSwgMzUsIDM1LCAzNSkpICsNCiAgdGhlbWUocGFuZWwuZ3JpZC5tYWpvci55ID0gZWxlbWVudF9ibGFuaygpKSArIA0KICB0aGVtZShwYW5lbC5ncmlkLm1pbm9yLnggPSBlbGVtZW50X2JsYW5rKCkpICsgDQogIHNjYWxlX3lfY29udGludW91cyhsYWJlbHMgPSBzY2FsZXM6OmNvbW1hLCBleHBhbmQgPSBjKDAuMDEsIDApKSArIA0KICBsYWJzKHRpdGxlID0gIlRoZSBUb3AgMjAgQ291bnRyaWVzIGJ5IFJlc2VhcmNoIGFuZCBEZXZlbG9wbWVudCBTcGVuZGluZyIsIA0KICAgICAgIHggPSBOVUxMLCB5ID0gIkV4cGVuZGl0dXJlcyBvbiBSJkQiLCANCiAgICAgICBjYXB0aW9uID0gIkRhdGEgU291cmNlOiBodHRwOi8vdWlzLnVuZXNjby5vcmcvYXBwcy92aXN1YWxpc2F0aW9ucy9yZXNlYXJjaC1hbmQtZGV2ZWxvcG1lbnQtc3BlbmRpbmcvIiwgDQogICAgICAgc3VidGl0bGUgPSAiR2xvYmFsIHNwZW5kaW5nIG9uIFImRCBoYXMgcmVhY2hlZCBhIHJlY29yZCBoaWdoIG9mIGFsbW9zdCBVUyQgMS43IHRyaWxsaW9uLiBBYm91dCAxMCBjb3VudHJpZXMgYWNjb3VudCBmb3IgODAlIG9mIHNwZW5kaW5nLlxuQ2hpbmEgaXMgcmFua2VkIGNvdW50cnkgc2Vjb25kIGJlaGluZCB0aGUgVW5pdGVkIFN0YXRlcyB3aXRoIFImRCBzcGVuZGluZyBvZiA0NTEuOSBCaWxsaW9ucyBEb2xsYXJzLlxuVGhpcyBudW1iZXIgZG9lcyBub3QgaW5jbHVkZSBIb25nIEtvbmcgYW5kIE1hY2F1IHRlcnJpdG9yaWVzLiIpDQoNCg0KYGBgDQoNCg==