軍事費・教育費

G7 (Group of Seven)、フランス(France), アメリカ(United States), 英国(United Kingdom), ドイツ(Germany), 日本(Japan), イタリア(Italy), カナダ(Canada), と ヨーロッパ連合(EU, non-enumerated member) の軍事費と、教育費について、基本的なデータの分析を行う。

G7 <- c("FR", "US", "GB", "DE", "JP", "IT", "CA", "EU")

データ

データ情報

  • 軍事費(USD)Military expenditure (current USD):MS.MIL.XPND.CD [Link]

  • 軍事費(政府の総支出に対する率(%))Military expenditure (% of general government expenditure):MS.MIL.XPND.ZS [Link]

  • 教育費(政府の総支出に対する率(%))Government expenditure on education, total (% of government expenditure):SE.XPD.TOTL.GB.ZS Link]

データの取得

準備

これまでとも同じように二つのパッケージを読み込み(load)ます。

library(tidyverse)
library(WDI)

Word など、他の文書作成のため、準備をします。

library(showtext) 
knitr::opts_chunk$set(fig.showtext=TRUE) 

変数名を指定します。ここでは、refugee_asylum と、refugee_origin としました。なるべくわかりやすい名前にします。

この変数名は、今後使いますから、重要です。一応、例として、わたしが使った、変数名を書いてあります。他の変数名を使っても構いません。extra = TRUE とすると、地域名(region)や、収入レベル(income)などが追加されます。

データの取得

df_military_ed <- WDI(country = G7, indicator = c(military_usd = "MS.MIL.XPND.CD",
                                                  military_gov = "MS.MIL.XPND.ZS", 
                                                  education_gov = "SE.XPD.TOTL.GB.ZS"), 
extra = TRUE) |>
  select(country, iso2c, year, military_usd, military_gov, education_gov, region) 
df_military_ed
write_csv(df_military_ed, "data/military_ed.csv")
df_military_ed <- read_csv("data/military_ed.csv")

上のコードがうまく動かない時は、次の、コードチャンクを、実行してください。

df_military_ed <- read_csv("https://raw.githubusercontent.com/ds-sl/intro2r/main/docs/ges001/data/military_ed.csv")
Rows: 504 Columns: 7── Column specification ─────────────────────────────────────────────────────────────────
Delimiter: ","
chr (3): country, iso2c, region
dbl (4): year, military_usd, military_gov, education_gov
ℹ Use `spec()` to retrieve the full column specification for this data.
ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
df_military_ed
df_military_ed_long <- df_military_ed |> pivot_longer(military_usd:education_gov)

視覚化

1. 各年毎のデータの数の棒グラフ

df_military_ed_long |> drop_na(value) |> 
  ggplot(aes(year, fill = name)) + geom_bar() + labs(title = "変数、年毎のデータの数")

気づいたこと・疑問

  • データの指標ごとに、数が異なる。軍事費(USD)は、1960年から、すべてについてあるようだが、他はそれほど一定していない
  • 最近では、2020年は、すべての変数において、データが多いと思われる。

2. 経年変化を表す折れ線グラフ

日本の軍事費と、教育費を、G7 の中で見る。

7カ国+EU なので、まずは、別々の指標ごとに、経年変化を調べる。

df_military_ed |> drop_na(military_usd) |> 
  ggplot(aes(year, military_usd, col = iso2c, linewidth = iso2c)) + geom_line() + 
  scale_y_log10() + scale_linewidth_manual(values = c(0.3,0.3,0.3,0.3,0.3,0.3,0.7,0.3)) +
  labs(title = "G7各国の軍事費(USD)の経年変化(log10 スケール)")

df_military_ed |> drop_na(military_gov) |> 
  ggplot(aes(year, military_gov, col = iso2c, linewidth = iso2c)) + geom_line() + scale_linewidth_manual(values = c(0.3,0.3,0.3,0.3,0.3,0.3,0.7,0.3)) +
  labs(title = "G7各国の軍事費(政府の総支出に対する率(%))の経年変化")

df_military_ed |> drop_na(education_gov) |> 
  ggplot(aes(year, education_gov, col = iso2c, linewidth = iso2c)) + geom_line() + scale_linewidth_manual(values = c(0.3,0.3,0.3,0.3,0.3,0.3,0.7,0.3)) +
  labs(title = "G7各国の教育費(政府の総支出に対する率(%))の経年変化")

気づいたこと・疑問・備考

  • 軍事費は、政府総支出に対する割合(%)でみると高くないが、総支出額でみると、アメリカを除くと、少ないとは言えない。
  • 教育費の政府総支出に対する割合(%)は減少しており、最低レベルと思われる。
  • 軍事費の総支出額は、アメリカが突出しているため、他の国について見分けるのが難しいので、log10 スケールを用いた。

日本と、日本以外のG7 の軍事費と教育費の(政府の総支出に対する率(%))

df_military_ed_long |> filter(name != "military_usd", iso2c == "JP") |> drop_na(value) |>
  ggplot(aes(year, value, col = name)) + geom_line() + 
  labs(title = "日本の軍事費と教育費の(政府の総支出に対する率(%))")

df_military_ed_long |> filter(name != "military_usd", iso2c != "JP") |> drop_na(value) |>
  ggplot(aes(year, value, col = name)) + geom_line() + facet_wrap(~country) +
  labs(title = "日本以外のG7の軍事費と教育費の(政府の総支出に対する率(%))", 
       x = "", y = "", col = "") +
  theme(legend.position = "top")

気づいたこと・疑問・備考

  • 教育費の政府総支出に対する割合(%)は明らかに減少している。
  • 軍事費のアメリカの政府総支出に対する割合(%)のデータが欠落している。なぜなのだろうか。教育に関する政府支出の対GDP比率の指標 Link のアメリカのデータはあるので、GDP の値と含めれば、計算できるように思う。

4. 2020年の国別比較の棒グラフ

df_military_ed |> filter(year == 2020) |> drop_na(military_usd) |> arrange(desc(military_usd)) |> 
  ggplot(aes(fct_rev(fct_inorder(country)), military_usd, fill = region)) + geom_col() +
  coord_flip() + labs(title = "軍事費(USD)の多い順", x = "")

df_military_ed |> filter(year == 2020) |> drop_na(military_gov) |> arrange(desc(military_gov)) |> 
  ggplot(aes(fct_rev(fct_inorder(country)), military_gov, fill = region)) + geom_col() +
  coord_flip() + labs(title = "軍事費(政府の総支出に対する率(%))の多い順", x = "")

気づいたこと・疑問・備考

  • 日本の軍事費のGDP費は、1.3%ぐらいだったと記憶しているので(要確認)それを、2% にあげるということは、1.5倍強ということになる。政府予算は、それほど上昇しないとすると、日本は、英国の次になる。額では、アメリカに次ぐレベルになることと思われる。周囲の国が心配するのは、当然に思う。
df_military_ed |> filter(year == 2020) |> drop_na(education_gov) |> arrange(desc(education_gov)) |> 
  ggplot(aes(fct_rev(fct_inorder(country)), education_gov, fill = region)) + geom_col() +
  coord_flip() + labs(title = "教育費(政府の総支出に対する率(%))の多い順", x = "")

気づいたこと・疑問・備考

  • 経年変化のグラフで確認したように、日本は、最低レベルである。教育に投資しないで、将来的に大丈夫なのだろうか。
df_military_ed |> filter(year == 2020) |> drop_na(military_gov, education_gov) |>
  ggplot(aes(education_gov, military_gov, col = iso2c)) + geom_point() + geom_label(aes(label = iso2c), nudge_y = 0.1) + theme(legend.position = "none") + 
  labs(title = "G7の2020年の教育費と軍事費の政府支出における割合の散布図", x = "教育費(政府の総支出に対する率(%))", y = "軍事費(政府の総支出に対する率(%))")

気づいたこと・疑問

  • 政府予算の傾向をみて取ることができる。日本は、社会保障費が高いのかもしれない。
LS0tCnRpdGxlOiAi5o6i56m255qE44OH44O844K/5YiG5p6Q77ya6LuN5LqL6LK7IgphdXRob3I6ICLpiLTmnKjlr5siCmRhdGU6ICIyMDI05bm0MuaciDIw5pelIgpvdXRwdXQ6CiAgaHRtbF9ub3RlYm9vazogZGVmYXVsdAotLS0KCiMg6LuN5LqL6LK744O75pWZ6IKy6LK7Cgo+IEc3IChHcm91cCBvZiBTZXZlbinjgIHjg5Xjg6njg7PjgrnvvIhGcmFuY2XvvIksIOOCouODoeODquOCq++8iFVuaXRlZCBTdGF0ZXPvvIksIOiLseWbve+8iFVuaXRlZCBLaW5nZG9t77yJLCDjg4njgqTjg4TvvIhHZXJtYW5577yJLCDml6XmnKzvvIhKYXBhbu+8iSwg44Kk44K/44Oq44Ki77yISXRhbHnvvIksIOOCq+ODiuODgO+8iENhbmFkYe+8iSwg44GoIOODqOODvOODreODg+ODkemAo+WQiO+8iEVVLCBub24tZW51bWVyYXRlZCBtZW1iZXIpIOOBrui7jeS6i+iyu+OBqOOAgeaVmeiCsuiyu+OBq+OBpOOBhOOBpuOAgeWfuuacrOeahOOBquODh+ODvOOCv+OBruWIhuaekOOCkuihjOOBhuOAggoKYGBge3J9Ckc3IDwtIGMoIkZSIiwgIlVTIiwgIkdCIiwgIkRFIiwgIkpQIiwgIklUIiwgIkNBIiwgIkVVIikKYGBgCgojIyDjg4fjg7zjgr8KCiMjIyDjg4fjg7zjgr/mg4XloLEKCi0gICDou43kuovosrvvvIhVU0TvvIlNaWxpdGFyeSBleHBlbmRpdHVyZSAoY3VycmVudCBVU0Qp77yaTVMuTUlMLlhQTkQuQ0QgW1tMaW5rXShodHRwczovL2RhdGEud29ybGRiYW5rLm9yZy9pbmRpY2F0b3IvTVMuTUlMLlhQTkQuQ0QpXQoKLSAgIOi7jeS6i+iyu++8iOaUv+W6nOOBrue3j+aUr+WHuuOBq+WvvuOBmeOCi+eOh++8iCXvvInvvIlNaWxpdGFyeSBleHBlbmRpdHVyZSAoJSBvZiBnZW5lcmFsIGdvdmVybm1lbnQgZXhwZW5kaXR1cmUp77yaTVMuTUlMLlhQTkQuWlMgW1tMaW5rXShodHRwczovL2RhdGEud29ybGRiYW5rLm9yZy9pbmRpY2F0b3IvTVMuTUlMLlhQTkQuWlMpXQoKLSAgIOaVmeiCsuiyu++8iOaUv+W6nOOBrue3j+aUr+WHuuOBq+WvvuOBmeOCi+eOh++8iCXvvInvvIlHb3Zlcm5tZW50IGV4cGVuZGl0dXJlIG9uIGVkdWNhdGlvbiwgdG90YWwgKCUgb2YgZ292ZXJubWVudCBleHBlbmRpdHVyZSnvvJpTRS5YUEQuVE9UTC5HQi5aUyBbTGlua10oaHR0cHM6Ly9kYXRhLndvcmxkYmFuay5vcmcvaW5kaWNhdG9yL1NFLlhQRC5UT1RMLkdCLlpTKV0KCiMjIyDjg4fjg7zjgr/jga7lj5blvpcKCiMjIyMg5rqW5YKZCgoq44GT44KM44G+44Gn44Go44KC5ZCM44GY44KI44GG44Gr5LqM44Gk44Gu44OR44OD44Kx44O844K444KS6Kqt44G/6L6844G/77yIbG9hZO+8ieOBvuOBmeOAgioKCmBgYHtyfQpsaWJyYXJ5KHRpZHl2ZXJzZSkKbGlicmFyeShXREkpCmBgYAoKV29yZCDjgarjganjgIHku5bjga7mlofmm7jkvZzmiJDjga7jgZ/jgoHjgIHmupblgpnjgpLjgZfjgb7jgZnjgIIKCmBgYHtyfQpsaWJyYXJ5KHNob3d0ZXh0KSAKa25pdHI6Om9wdHNfY2h1bmskc2V0KGZpZy5zaG93dGV4dD1UUlVFKSAKYGBgCgoq5aSJ5pWw5ZCN44KS5oyH5a6a44GX44G+44GZ44CC44GT44GT44Gn44Gv44CBYHJlZnVnZWVfYXN5bHVtYCDjgajjgIFgcmVmdWdlZV9vcmlnaW5gIOOBqOOBl+OBvuOBl+OBn+OAguOBquOCi+OBueOBj+OCj+OBi+OCiuOChOOBmeOBhOWQjeWJjeOBq+OBl+OBvuOBmeOAgioKCirjgZPjga7lpInmlbDlkI3jga/jgIHku4rlvozkvb/jgYTjgb7jgZnjgYvjgonjgIHph43opoHjgafjgZnjgILkuIDlv5zjgIHkvovjgajjgZfjgabjgIHjgo/jgZ/jgZfjgYzkvb/jgaPjgZ/jgIHlpInmlbDlkI3jgpLmm7jjgYTjgabjgYLjgorjgb7jgZnjgILku5bjga7lpInmlbDlkI3jgpLkvb/jgaPjgabjgoLmp4vjgYTjgb7jgZvjgpPjgIJgZXh0cmEgPSBUUlVFYCDjgajjgZnjgovjgajjgIHlnLDln5/lkI3vvIhyZWdpb27vvInjgoTjgIHlj47lhaXjg6zjg5njg6vvvIhpbmNvbWXvvInjgarjganjgYzov73liqDjgZXjgozjgb7jgZnjgIIqCgoKIyMg44OH44O844K/44Gu5Y+W5b6XCgpgYGB7ciBjYWNoZSA9IFRSVUUsIGV2YWwgPSBGQUxTRX0KZGZfbWlsaXRhcnlfZWQgPC0gV0RJKGNvdW50cnkgPSBHNywgaW5kaWNhdG9yID0gYyhtaWxpdGFyeV91c2QgPSAiTVMuTUlMLlhQTkQuQ0QiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pbGl0YXJ5X2dvdiA9ICJNUy5NSUwuWFBORC5aUyIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVkdWNhdGlvbl9nb3YgPSAiU0UuWFBELlRPVEwuR0IuWlMiKSwgCmV4dHJhID0gVFJVRSkgfD4KICBzZWxlY3QoY291bnRyeSwgaXNvMmMsIHllYXIsIG1pbGl0YXJ5X3VzZCwgbWlsaXRhcnlfZ292LCBlZHVjYXRpb25fZ292LCByZWdpb24pIApkZl9taWxpdGFyeV9lZApgYGAKCmBgYHtyIGV2YWwgPSBGQUxTRX0Kd3JpdGVfY3N2KGRmX21pbGl0YXJ5X2VkLCAiZGF0YS9taWxpdGFyeV9lZC5jc3YiKQpgYGAKCmBgYHtyIGV2YWwgPSBGQUxTRX0KZGZfbWlsaXRhcnlfZWQgPC0gcmVhZF9jc3YoImRhdGEvbWlsaXRhcnlfZWQuY3N2IikKYGBgCgrkuIrjga7jgrPjg7zjg4njgYzjgYbjgb7jgY/li5XjgYvjgarjgYTmmYLjga/jgIHmrKHjga7jgIHjgrPjg7zjg4njg4Hjg6Pjg7Pjgq/jgpLjgIHlrp/ooYzjgZfjgabjgY/jgaDjgZXjgYTjgIIKCmBgYHtyIGNhY2hlID0gVFJVRX0KZGZfbWlsaXRhcnlfZWQgPC0gcmVhZF9jc3YoImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9kcy1zbC9pbnRybzJyL21haW4vZG9jcy9nZXMwMDEvZGF0YS9taWxpdGFyeV9lZC5jc3YiKQpkZl9taWxpdGFyeV9lZApgYGAKCmBgYHtyIGNhY2hlID0gVFJVRX0KZGZfbWlsaXRhcnlfZWRfbG9uZyA8LSBkZl9taWxpdGFyeV9lZCB8PiBwaXZvdF9sb25nZXIobWlsaXRhcnlfdXNkOmVkdWNhdGlvbl9nb3YpCmBgYAoKCiMjIOimluimmuWMlgoKIyMjIDEuIOWQhOW5tOavjuOBruODh+ODvOOCv+OBruaVsOOBruajkuOCsOODqeODlQoKYGBge3J9CmRmX21pbGl0YXJ5X2VkX2xvbmcgfD4gZHJvcF9uYSh2YWx1ZSkgfD4gCiAgZ2dwbG90KGFlcyh5ZWFyLCBmaWxsID0gbmFtZSkpICsgZ2VvbV9iYXIoKSArIGxhYnModGl0bGUgPSAi5aSJ5pWw44CB5bm05q+O44Gu44OH44O844K/44Gu5pWwIikKYGBgCgoqKuawl+OBpeOBhOOBn+OBk+OBqOODu+eWkeWVjyoqCgotICAg44OH44O844K/44Gu5oyH5qiZ44GU44Go44Gr44CB5pWw44GM55Ww44Gq44KL44CC6LuN5LqL6LK777yIVVNE77yJ44Gv44CBMTk2MOW5tOOBi+OCieOAgeOBmeOBueOBpuOBq+OBpOOBhOOBpuOBguOCi+OCiOOBhuOBoOOBjOOAgeS7luOBr+OBneOCjOOBu+OBqeS4gOWumuOBl+OBpuOBhOOBquOBhAotICAg5pyA6L+R44Gn44Gv44CBMjAyMOW5tOOBr+OAgeOBmeOBueOBpuOBruWkieaVsOOBq+OBiuOBhOOBpuOAgeODh+ODvOOCv+OBjOWkmuOBhOOBqOaAneOCj+OCjOOCi+OAggoKIyMjIDIuIOe1jOW5tOWkieWMluOCkuihqOOBmeaKmOOCjOe3muOCsOODqeODlQoKIyMjIyDml6XmnKzjga7ou43kuovosrvjgajjgIHmlZnogrLosrvjgpLjgIFHNyDjga7kuK3jgafopovjgovjgIIKCu+8l+OCq+Wbve+8i0VVIOOBquOBruOBp+OAgeOBvuOBmuOBr+OAgeWIpeOAheOBruaMh+aomeOBlOOBqOOBq+OAgee1jOW5tOWkieWMluOCkuiqv+OBueOCi+OAggoKYGBge3J9CmRmX21pbGl0YXJ5X2VkIHw+IGRyb3BfbmEobWlsaXRhcnlfdXNkKSB8PiAKICBnZ3Bsb3QoYWVzKHllYXIsIG1pbGl0YXJ5X3VzZCwgY29sID0gaXNvMmMsIGxpbmV3aWR0aCA9IGlzbzJjKSkgKyBnZW9tX2xpbmUoKSArIAogIHNjYWxlX3lfbG9nMTAoKSArIHNjYWxlX2xpbmV3aWR0aF9tYW51YWwodmFsdWVzID0gYygwLjMsMC4zLDAuMywwLjMsMC4zLDAuMywwLjcsMC4zKSkgKwogIGxhYnModGl0bGUgPSAiRzflkITlm73jga7ou43kuovosrvvvIhVU0TvvInjga7ntYzlubTlpInljJbvvIhsb2cxMCDjgrnjgrHjg7zjg6vvvIkiKQpgYGAKCgpgYGB7cn0KZGZfbWlsaXRhcnlfZWQgfD4gZHJvcF9uYShtaWxpdGFyeV9nb3YpIHw+IAogIGdncGxvdChhZXMoeWVhciwgbWlsaXRhcnlfZ292LCBjb2wgPSBpc28yYywgbGluZXdpZHRoID0gaXNvMmMpKSArIGdlb21fbGluZSgpICsgc2NhbGVfbGluZXdpZHRoX21hbnVhbCh2YWx1ZXMgPSBjKDAuMywwLjMsMC4zLDAuMywwLjMsMC4zLDAuNywwLjMpKSArCiAgbGFicyh0aXRsZSA9ICJHN+WQhOWbveOBrui7jeS6i+iyu++8iOaUv+W6nOOBrue3j+aUr+WHuuOBq+WvvuOBmeOCi+eOh++8iCXvvInvvInjga7ntYzlubTlpInljJYiKQpgYGAKCmBgYHtyfQpkZl9taWxpdGFyeV9lZCB8PiBkcm9wX25hKGVkdWNhdGlvbl9nb3YpIHw+IAogIGdncGxvdChhZXMoeWVhciwgZWR1Y2F0aW9uX2dvdiwgY29sID0gaXNvMmMsIGxpbmV3aWR0aCA9IGlzbzJjKSkgKyBnZW9tX2xpbmUoKSArIHNjYWxlX2xpbmV3aWR0aF9tYW51YWwodmFsdWVzID0gYygwLjMsMC4zLDAuMywwLjMsMC4zLDAuMywwLjcsMC4zKSkgKwogIGxhYnModGl0bGUgPSAiRzflkITlm73jga7mlZnogrLosrvvvIjmlL/lupzjga7nt4/mlK/lh7rjgavlr77jgZnjgovnjofvvIgl77yJ77yJ44Gu57WM5bm05aSJ5YyWIikKYGBgCgoqKuawl+OBpeOBhOOBn+OBk+OBqOODu+eWkeWVj+ODu+WCmeiAgyoqCgotICAg6LuN5LqL6LK744Gv44CB5pS/5bqc57eP5pSv5Ye644Gr5a++44GZ44KL5Ymy5ZCI77yI77yF77yJ44Gn44G/44KL44Go6auY44GP44Gq44GE44GM44CB57eP5pSv5Ye66aGN44Gn44G/44KL44Go44CB44Ki44Oh44Oq44Kr44KS6Zmk44GP44Go44CB5bCR44Gq44GE44Go44Gv6KiA44GI44Gq44GE44CCCi0gICDmlZnogrLosrvjga7mlL/lupznt4/mlK/lh7rjgavlr77jgZnjgovlibLlkIjvvIjvvIXvvInjga/muJvlsJHjgZfjgabjgYrjgorjgIHmnIDkvY7jg6zjg5njg6vjgajmgJ3jgo/jgozjgovjgIIKLSAgIOi7jeS6i+iyu+OBrue3j+aUr+WHuumhjeOBr+OAgeOCouODoeODquOCq+OBjOeqgeWHuuOBl+OBpuOBhOOCi+OBn+OCgeOAgeS7luOBruWbveOBq+OBpOOBhOOBpuimi+WIhuOBkeOCi+OBruOBjOmbo+OBl+OBhOOBruOBp+OAgWxvZzEwIOOCueOCseODvOODq+OCkueUqOOBhOOBn+OAggoKIyMjIOaXpeacrOOBqOOAgeaXpeacrOS7peWkluOBrkc3IOOBrui7jeS6i+iyu+OBqOaVmeiCsuiyu+OBru+8iOaUv+W6nOOBrue3j+aUr+WHuuOBq+WvvuOBmeOCi+eOh++8iCXvvInvvIkKCmBgYHtyfQpkZl9taWxpdGFyeV9lZF9sb25nIHw+IGZpbHRlcihuYW1lICE9ICJtaWxpdGFyeV91c2QiLCBpc28yYyA9PSAiSlAiKSB8PiBkcm9wX25hKHZhbHVlKSB8PgogIGdncGxvdChhZXMoeWVhciwgdmFsdWUsIGNvbCA9IG5hbWUpKSArIGdlb21fbGluZSgpICsgCiAgbGFicyh0aXRsZSA9ICLml6XmnKzjga7ou43kuovosrvjgajmlZnogrLosrvjga7vvIjmlL/lupzjga7nt4/mlK/lh7rjgavlr77jgZnjgovnjofvvIgl77yJ77yJIikKYGBgCgpgYGB7cn0KZGZfbWlsaXRhcnlfZWRfbG9uZyB8PiBmaWx0ZXIobmFtZSAhPSAibWlsaXRhcnlfdXNkIiwgaXNvMmMgIT0gIkpQIikgfD4gZHJvcF9uYSh2YWx1ZSkgfD4KICBnZ3Bsb3QoYWVzKHllYXIsIHZhbHVlLCBjb2wgPSBuYW1lKSkgKyBnZW9tX2xpbmUoKSArIGZhY2V0X3dyYXAofmNvdW50cnkpICsKICBsYWJzKHRpdGxlID0gIuaXpeacrOS7peWkluOBrkc344Gu6LuN5LqL6LK744Go5pWZ6IKy6LK744Gu77yI5pS/5bqc44Gu57eP5pSv5Ye644Gr5a++44GZ44KL546H77yIJe+8ie+8iSIsIAogICAgICAgeCA9ICIiLCB5ID0gIiIsIGNvbCA9ICIiKSArCiAgdGhlbWUobGVnZW5kLnBvc2l0aW9uID0gInRvcCIpCmBgYAoKKirmsJfjgaXjgYTjgZ/jgZPjgajjg7vnlpHllY/jg7vlgpnogIMqKgoKLSAgIOaVmeiCsuiyu+OBruaUv+W6nOe3j+aUr+WHuuOBq+WvvuOBmeOCi+WJsuWQiO+8iO+8he+8ieOBr+aYjuOCieOBi+OBq+a4m+WwkeOBl+OBpuOBhOOCi+OAggotICAg6LuN5LqL6LK744Gu44Ki44Oh44Oq44Kr44Gu5pS/5bqc57eP5pSv5Ye644Gr5a++44GZ44KL5Ymy5ZCI77yI77yF77yJ44Gu44OH44O844K/44GM5qyg6JC944GX44Gm44GE44KL44CC44Gq44Gc44Gq44Gu44Gg44KN44GG44GL44CC5pWZ6IKy44Gr6Zai44GZ44KL5pS/5bqc5pSv5Ye644Gu5a++R0RQ5q+U546H44Gu5oyH5qiZIFtMaW5rXShodHRwczovL2RhdGEud29ybGRiYW5rLm9yZy9pbmRpY2F0b3IvU0UuWFBELlRPVEwuR0QuWlM/bG9jYXRpb25zPVVTKSDjga7jgqLjg6Hjg6rjgqvjga7jg4fjg7zjgr/jga/jgYLjgovjga7jgafjgIFHRFAg44Gu5YCk44Go5ZCr44KB44KM44Gw44CB6KiI566X44Gn44GN44KL44KI44GG44Gr5oCd44GG44CCCgojIyMgNC4gMjAyMOW5tOOBruWbveWIpeavlOi8g+OBruajkuOCsOODqeODlQoKYGBge3J9CmRmX21pbGl0YXJ5X2VkIHw+IGZpbHRlcih5ZWFyID09IDIwMjApIHw+IGRyb3BfbmEobWlsaXRhcnlfdXNkKSB8PiBhcnJhbmdlKGRlc2MobWlsaXRhcnlfdXNkKSkgfD4gCiAgZ2dwbG90KGFlcyhmY3RfcmV2KGZjdF9pbm9yZGVyKGNvdW50cnkpKSwgbWlsaXRhcnlfdXNkLCBmaWxsID0gcmVnaW9uKSkgKyBnZW9tX2NvbCgpICsKICBjb29yZF9mbGlwKCkgKyBsYWJzKHRpdGxlID0gIui7jeS6i+iyu++8iFVTRO+8ieOBruWkmuOBhOmghiIsIHggPSAiIikKYGBgCgpgYGB7cn0KZGZfbWlsaXRhcnlfZWQgfD4gZmlsdGVyKHllYXIgPT0gMjAyMCkgfD4gZHJvcF9uYShtaWxpdGFyeV9nb3YpIHw+IGFycmFuZ2UoZGVzYyhtaWxpdGFyeV9nb3YpKSB8PiAKICBnZ3Bsb3QoYWVzKGZjdF9yZXYoZmN0X2lub3JkZXIoY291bnRyeSkpLCBtaWxpdGFyeV9nb3YsIGZpbGwgPSByZWdpb24pKSArIGdlb21fY29sKCkgKwogIGNvb3JkX2ZsaXAoKSArIGxhYnModGl0bGUgPSAi6LuN5LqL6LK777yI5pS/5bqc44Gu57eP5pSv5Ye644Gr5a++44GZ44KL546H77yIJe+8ie+8ieOBruWkmuOBhOmghiIsIHggPSAiIikKYGBgCgoqKuawl+OBpeOBhOOBn+OBk+OBqOODu+eWkeWVj+ODu+WCmeiAgyoqCgotIOaXpeacrOOBrui7jeS6i+iyu+OBrkdEUOiyu+OBr+OAgTEuMyXjgZDjgonjgYTjgaDjgaPjgZ/jgajoqJjmhrbjgZfjgabjgYTjgovjga7jgafvvIjopoHnorroqo3vvInjgZ3jgozjgpLjgIEyJSDjgavjgYLjgZLjgovjgajjgYTjgYbjgZPjgajjga/jgIExLjXlgI3lvLfjgajjgYTjgYbjgZPjgajjgavjgarjgovjgILmlL/lupzkuojnrpfjga/jgIHjgZ3jgozjgbvjgankuIrmmIfjgZfjgarjgYTjgajjgZnjgovjgajjgIHml6XmnKzjga/jgIHoi7Hlm73jga7mrKHjgavjgarjgovjgILpoY3jgafjga/jgIHjgqLjg6Hjg6rjgqvjgavmrKHjgZDjg6zjg5njg6vjgavjgarjgovjgZPjgajjgajmgJ3jgo/jgozjgovjgILlkajlm7Ljga7lm73jgYzlv4PphY3jgZnjgovjga7jga/jgIHlvZPnhLbjgavmgJ3jgYbjgIIKCgpgYGB7cn0KZGZfbWlsaXRhcnlfZWQgfD4gZmlsdGVyKHllYXIgPT0gMjAyMCkgfD4gZHJvcF9uYShlZHVjYXRpb25fZ292KSB8PiBhcnJhbmdlKGRlc2MoZWR1Y2F0aW9uX2dvdikpIHw+IAogIGdncGxvdChhZXMoZmN0X3JldihmY3RfaW5vcmRlcihjb3VudHJ5KSksIGVkdWNhdGlvbl9nb3YsIGZpbGwgPSByZWdpb24pKSArIGdlb21fY29sKCkgKwogIGNvb3JkX2ZsaXAoKSArIGxhYnModGl0bGUgPSAi5pWZ6IKy6LK777yI5pS/5bqc44Gu57eP5pSv5Ye644Gr5a++44GZ44KL546H77yIJe+8ie+8ieOBruWkmuOBhOmghiIsIHggPSAiIikKYGBgCgoqKuawl+OBpeOBhOOBn+OBk+OBqOODu+eWkeWVj+ODu+WCmeiAgyoqCgotIOe1jOW5tOWkieWMluOBruOCsOODqeODleOBp+eiuuiqjeOBl+OBn+OCiOOBhuOBq+OAgeaXpeacrOOBr+OAgeacgOS9juODrOODmeODq+OBp+OBguOCi+OAguaVmeiCsuOBq+aKleizh+OBl+OBquOBhOOBp+OAgeWwhuadpeeahOOBq+Wkp+S4iOWkq+OBquOBruOBoOOCjeOBhuOBi+OAggoKYGBge3J9CmRmX21pbGl0YXJ5X2VkIHw+IGZpbHRlcih5ZWFyID09IDIwMjApIHw+IGRyb3BfbmEobWlsaXRhcnlfZ292LCBlZHVjYXRpb25fZ292KSB8PgogIGdncGxvdChhZXMoZWR1Y2F0aW9uX2dvdiwgbWlsaXRhcnlfZ292LCBjb2wgPSBpc28yYykpICsgZ2VvbV9wb2ludCgpICsgZ2VvbV9sYWJlbChhZXMobGFiZWwgPSBpc28yYyksIG51ZGdlX3kgPSAwLjEpICsgdGhlbWUobGVnZW5kLnBvc2l0aW9uID0gIm5vbmUiKSArIAogIGxhYnModGl0bGUgPSAiRzfjga4yMDIw5bm044Gu5pWZ6IKy6LK744Go6LuN5LqL6LK744Gu5pS/5bqc5pSv5Ye644Gr44GK44GR44KL5Ymy5ZCI44Gu5pWj5biD5ZuzIiwgeCA9ICLmlZnogrLosrvvvIjmlL/lupzjga7nt4/mlK/lh7rjgavlr77jgZnjgovnjofvvIgl77yJ77yJIiwgeSA9ICLou43kuovosrvvvIjmlL/lupzjga7nt4/mlK/lh7rjgavlr77jgZnjgovnjofvvIgl77yJ77yJIikKYGBgCgoKKirmsJfjgaXjgYTjgZ/jgZPjgajjg7vnlpHllY8qKgoKLSAgIOaUv+W6nOS6iOeul+OBruWCvuWQkeOCkuOBv+OBpuWPluOCi+OBk+OBqOOBjOOBp+OBjeOCi+OAguaXpeacrOOBr+OAgeekvuS8muS/nemanOiyu+OBjOmrmOOBhOOBruOBi+OCguOBl+OCjOOBquOBhOOAggoK