Nationalregnskab


Nationalregnskab
NRX01_raw <- 
  statgl_url("NRX01", lang = language) %>%
  statgl_fetch(
    units          = "L",
    time           = px_top(5),
    "account name" = px_all(),
    .col_code      = TRUE
  ) %>% 
  as_tibble()
  
NRX01 <- 
  NRX01_raw %>% 
  arrange(desc(time)) %>% 
  mutate(
    time = time %>% fct_inorder(),
    `account name` = `account name` %>% str_remove_all("[:digit:]|[:punct:]|\\+") %>% trimws(),
    `account name` = `account name` %>% fct_inorder()
    ) %>% 
  drop_na() %>% 
  spread(time, value)
  
NRX01 %>% 
  select(-units) %>% 
  rename(" " = 1) %>% 
  statgl_table() %>% 
  pack_rows(index = NRX01[["units"]] %>% table()) %>% 
  row_spec(c(8, 19), bold = TRUE)
2021 2020 2019 2018 2017
Løbende priser
Produktion 33.976 32.953 32.633 31.515 30.949
Produktskatter minus produktsubsidier 754 761 769 771 638
Produktskatter 1.024 998 1.010 1.010 857
Produktsubsidier 270 238 240 238 220
Import af varer og tjenester 10.114 9.428 10.225 8.745 8.193
Import af varer 6.664 6.276 6.903 5.717 5.310
Import af tjenester 3.450 3.152 3.322 3.028 2.884
Tilgang i alt 44.844 43.143 43.627 41.032 39.780
Forbrug i produktionen 14.386 13.545 13.412 12.991 12.758
Forbrugsudgift 16.467 15.936 15.760 15.268 14.914
Privat forbrugsudgift 7.289 7.116 7.005 6.944 6.928
Offentlig forbrugsudgift 9.178 8.820 8.754 8.325 7.986
Individuel forbrugsudgift 5.278 5.098 5.158 4.986 4.762
Kollektiv forbrugsudgift 3.900 3.722 3.596 3.339 3.224
Bruttoinvesteringer 6.782 6.410 6.251 4.195 4.446
Eksport af varer og tjenester 7.209 7.251 8.205 8.578 7.662
Eksport af varer 5.417 5.697 6.008 6.433 5.574
Eksport af tjenester 1.792 1.554 2.197 2.145 2.088
Anvendelse i alt 44.844 43.143 43.627 41.032 39.780


Se Statistikbankens tabel: NRX01

NRX0318_raw <- 
  statgl_url("NRX0318", lang = language) %>% 
  statgl_fetch(
    units     = "L",
    industry  = paste0("0100", LETTERS[1:11]),
    time      = px_top(5),
    .col_code = TRUE
  ) %>% 
  as_tibble()


NRX0318 <- 
  NRX0318_raw %>% 
  arrange(desc(time)) %>% 
  mutate(
    time = time %>% fct_inorder(),
    industry = industry %>% fct_reorder(value, .fun = sum, .desc = TRUE)
    ) %>% 
  spread(time, value) %>% 
  mutate(industry = industry %>% str_remove("A|B|C|D|E|F|G|H|I|J|K"))



NRX0318 %>% 
  select(-units) %>% 
  rename(" " = 1) %>%  
  statgl_table() %>% 
  pack_rows(index = NRX0318[["units"]] %>% table())
2021 2020 2019 2018 2017
Løbende priser
Offentlige og personlige tjenester 9.635 9.267 9.277 8.875 8.495
Fiskeri og fangst 4.850 4.801 5.039 4.868 4.860
Bygge- og anlægsvirksomhed 4.190 4.318 3.651 3.368 3.600
Finansiering og forretningsservice 3.892 3.566 3.254 3.150 3.170
Transport 3.283 2.978 3.335 3.337 3.142
Handel 2.960 2.931 2.776 2.431 2.740
Industri 1.906 2.021 2.165 2.364 1.697
Post, tele, IT, radio, TV mv. 1.251 1.229 1.262 1.263 1.305
Forsyning og renovation 993 1.012 903 930 1.039
Hoteller og restauranter 699 565 729 722 703
Råstofudvinding 316 265 242 208 196


Se Statistikbankens tabel: NRX0318

NRX10_raw <- 
  statgl_url("NRX10", lang = language) %>% 
  statgl_fetch(
    units = "K",
    account = c("01", "02", "04"),
    Aar = px_top(5),
    .col_code = TRUE
  ) %>% 
  as_tibble() %>% 
  rename("time" = Aar)

NRX10 <- 
  NRX10_raw %>% 
  arrange(desc(time)) %>% 
  mutate(time = time %>% fct_inorder()) %>% 
  spread(time, value)

NRX10 %>% 
  select(-units) %>% 
  rename(" " = 1) %>% 
  statgl_table() %>% 
  pack_rows(index = NRX10[["units"]] %>% table())
2021 2020 2019 2018 2017
2010-priser, kædede værdier
BNP, mio. kr. 15.740,6 15.540,1 15.511,0 15.083,8 14.990,4
Pr. indbygger, i 1.000 kr. 279,3 277,4 277,4 270,4 268,8
Årlig vækst i BNP 1,3 0,2 2,8 0,6 0,1


Se Statistikbankens tabel: NRX10

NRX13_raw <- 
  statgl_url("NRX13", lang = language) %>% 
  statgl_fetch(
    Aar       = px_top(5),
    Kode      = paste0("VBVT", LETTERS[1:11]),
    .col_code = TRUE
  ) %>% 
  as_tibble() %>% 
    rename("time" = Aar)


NRX13 <-
  NRX13_raw %>% 
  arrange(desc(time)) %>% 
  mutate(
    time = time %>% fct_inorder(),
    Kode = Kode %>% str_remove("A|B|C|D|E|F|G|H|I|J|K") %>% trimws(),
    Kode = Kode %>% fct_reorder(value, .fun = mean, .desc = TRUE)
  ) %>% 
  spread(time, value)

NRX13 %>% 
  rename(" " = 1) %>% 
  statgl_table()
2021 2020 2019 2018 2017
Fiskeri og fangst 1,75 0,40 0,98 0,16 0,49
Offentlige og personlige tjenester 0,30 -0,68 1,38 0,78 0,74
Bygge- og anlægsvirksomhed -1,72 0,69 1,13 -0,39 2,07
Handel -0,47 -0,01 0,77 0,81 -0,11
Finansiering og forretningsservice 0,48 0,34 0,02 -0,28 0,15
Råstofudvinding -0,07 0,00 0,27 0,05 0,07
Forsyning og renovation -0,32 0,40 -0,02 -0,20 0,03
Transport 0,38 -1,43 0,09 0,73 -0,13
Hoteller og restauranter 0,48 -0,85 -0,27 -0,17 0,09
Post, tele, IT, radio, TV mv. -0,15 0,19 -0,30 -0,29 -0,36
Industri 0,14 0,77 -0,57 0,27 -2,68


Se Statistikbankens tabel: NRX13


Sidst opdateret: 17. april 2024
LS0tDQpwYXJhbXM6DQogIGxhbmc6ICJkYSINCm91dHB1dDoNCiAgc3RhdGdsOjpzdGF0Z2xfcmVwb3J0Og0KICAgIGNvZGVfZG93bmxvYWQ6IHRydWUNCiAgICBjb2RlX2ZvbGRpbmc6IGhpZGUNCmVkaXRvcl9vcHRpb25zOiANCiAgY2h1bmtfb3V0cHV0X3R5cGU6IGNvbnNvbGUNCi0tLQ0KDQpgYGB7ciBzZXR1cCwgaW5jbHVkZT1GQUxTRX0NCg0Ka25pdHI6Om9wdHNfY2h1bmskc2V0KA0KCWVjaG8gICAgPSBUUlVFLA0KCW1lc3NhZ2UgPSBGQUxTRSwNCgl3YXJuaW5nID0gRkFMU0UsDQoJY2xhc3Mub3V0cHV0ID0gInNjcm9sbC0xMDAiDQopDQoNCnsNCmxpYnJhcnkoInRpZHl2ZXJzZSIpDQpsaWJyYXJ5KCJzdGF0Z2wiKQ0KbGlicmFyeSgia2FibGVFeHRyYSIpDQpsaWJyYXJ5KCJsdWJyaWRhdGUiKQ0KbGlicmFyeSgieWFtbCIpDQp9DQoNCnsgIA0KbGFuZ3VhZ2UgIDwtIHBhcmFtcyRsYW5nDQpvcHRpb24gICAgPC0gcGFzdGUwKCI/bGFuZz0iLCBsYW5ndWFnZSwgIiZzZWxlY3QiKQ0KbG9nbyAgICAgIDwtIHBhc3RlMChnZXR3ZCgpLCIvYWRkL2xvZ28uZ2lmIikNCnR4dCAgICAgICA8LSByZWFkX3lhbWwocGFzdGUwKGdldHdkKCksICIvYWRkL3R4dC55bWwiKSwgZmlsZUVuY29kaW5nID0gIklTTy04ODU5LTEiKQ0Kc291cmNlICAgIDwtIHR4dCRzb3VyY2VbbGFuZ3VhZ2VdICU+JSB1bmxpc3QoKQ0KfQ0KDQp4YXJpbmdhbkV4dHJhOjp1c2VfY2xpcGJvYXJkKCkNCg0KYGBgDQoNCmBgYHtjc3MsIGVjaG8gPSBGQUxTRX0NCg0KLmFjY29yZGlvbiB7DQogIGJhY2tncm91bmQtY29sb3I6ICM5MTk5MDA7DQogIGNvbG9yOiB3aGl0ZTsNCiAgY3Vyc29yOiBwb2ludGVyOw0KICBwYWRkaW5nOiAxOHB4Ow0KICB3aWR0aDogMTAwJTsNCiAgYm9yZGVyOiBub25lOw0KICBib3JkZXItcmFkaXVzOiA1cHg7DQogIHRleHQtYWxpZ246IGxlZnQ7DQogIG91dGxpbmU6IG5vbmU7DQogIGZvbnQtc2l6ZTogMTVweDsNCiAgdHJhbnNpdGlvbjogMC40czsNCn0NCg0KLmFjdGl2ZSwgLmFjY29yZGlvbjpob3ZlciB7DQogIGJhY2tncm91bmQtY29sb3I6ICNmOTcyNDI7DQp9DQoNCi5hY2NvcmRpb246YWZ0ZXIgew0KICBjb250ZW50OiAnXDAwMkInOw0KICBjb2xvcjogIzc3NzsNCiAgZm9udC13ZWlnaHQ6IGJvbGQ7DQogIGZsb2F0OiByaWdodDsNCiAgbWFyZ2luLWxlZnQ6IDVweDsNCn0NCg0KLmFjdGl2ZTphZnRlciB7DQogIGNvbnRlbnQ6ICJcMjIxMiI7DQp9DQoNCi5wYW5lbCB7DQogIHBhZGRpbmc6IDBweCA1cHggMHB4IDVweDsNCiAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7DQogIG1heC1oZWlnaHQ6IDA7DQogIG92ZXJmbG93OiBoaWRkZW47DQogIHRyYW5zaXRpb246IG1heC1oZWlnaHQgMC4ycyBlYXNlLW91dDsNCn0NCg0KZGV0YWlscyB7DQogIHdpZHRoOiAxMDAlOw0KfQ0KDQpkZXRhaWxzID4gc3VtbWFyeSB7DQogIHBhZGRpbmc6IDRweCAxMnB4Ow0KICB3aWR0aDogMTAwJTsNCiAgYmFja2dyb3VuZC1jb2xvcjogIzAwN2Y5OTsNCiAgYm9yZGVyOiBzb2xpZDsNCiAgYm9yZGVyLWNvbG9yOiB3aGl0ZTsNCiAgYm9yZGVyLXJhZGl1czogNXB4Ow0KICBjdXJzb3I6IHBvaW50ZXI7DQogIGZvbnQtc2l6ZTogMTVweDsNCiAgY29sb3I6IHdoaXRlOw0KfQ0KDQpkZXRhaWxzW29wZW5dID4gc3VtbWFyeSB7DQogIGJhY2tncm91bmQtY29sb3I6ICNmYWE0MWE7DQp9DQoNCg0KLnRpdGxlIHsNCiAgY29sb3I6ICMxYjU0NjM7DQogIGZvbnQtc2l6ZTogMzZweDsNCn0NCg0KDQoucGVyc29uZXIgew0KICBib3gtc2hhZG93OiAzcHggM3B4IDRweCBibGFjazsNCiAgYmFja2dyb3VuZDogIzAwNDQ1OTsNCiAgcGFkZGluZy1yaWdodDogMTVweDsNCiAgcGFkZGluZy1sZWZ0OiAxNnB4Ow0KICBwYWRkaW5nLXRvcDogMC4xcHg7DQogIHBhZGRpbmctYm90dG9tOiAxcHg7DQogIGZvbnQtc2l6ZTogMTFweDsNCiAgY29sb3I6IHdoaXRlOw0KICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOw0KfQ0KDQouw7hrb25vbWkgew0KICBib3gtc2hhZG93OiAzcHggM3B4IDRweCBibGFjazsNCiAgYmFja2dyb3VuZDogIzAwN0Y5OTsNCiAgcGFkZGluZy1yaWdodDogMTVweDsNCiAgcGFkZGluZy1sZWZ0OiAxNnB4Ow0KICBwYWRkaW5nLXRvcDogMXB4Ow0KICBwYWRkaW5nLWJvdHRvbTogMC4xcHg7DQogIGZvbnQtc2l6ZTogMTFweDsNCiAgY29sb3I6IHdoaXRlOw0KICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOw0KfQ0KDQoudHbDpnJnw6VlbmRlIHsNCiAgYm94LXNoYWRvdzogM3B4IDNweCA0cHggYmxhY2s7DQogIGJhY2tncm91bmQ6ICNmYWE0MWE7DQogIHBhZGRpbmctcmlnaHQ6IDE1cHg7DQogIHBhZGRpbmctbGVmdDogMTZweDsNCiAgcGFkZGluZy10b3A6IDAuMXB4Ow0KICBwYWRkaW5nLWJvdHRvbTogMXB4Ow0KICBmb250LXNpemU6IDExcHg7DQogIGNvbG9yOiB3aGl0ZTsNCiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTsNCn0NCg0KLmNvbnRhaW5lciB7DQogIHdpZHRoOiBpbmhlcml0Ow0KfQ0KDQouc2Nyb2xsLTEwMCB7DQogIG1heC1oZWlnaHQ6IDEwMDsNCiAgb3ZlcmZsb3cteTogYXV0bzsNCiAgYmFja2dyb3VuZC1jb2xvcjogaW5oZXJpdDsNCn0NCg0KDQpwcmUgew0KICBtYXgtaGVpZ2h0OiAzMDBweDsNCiAgb3ZlcmZsb3cteTogYXV0bzsNCn0NCg0KcHJlW2NsYXNzXSB7DQogIG1heC1oZWlnaHQ6IDMwMHB4Ow0KfQ0KDQpgYGANCg0KPGJyPg0KPGJyPg0KDQo8Y2VudGVyPg0KDQotLS0NCiANCiMgW2ByIHR4dCROUiR0aXRsZVtsYW5ndWFnZV1gXXsudGl0bGV9DQogDQotLS0NCjwvY2VudGVyPg0KDQo8ZGV0YWlscyBvcGVuPiA8c3VtbWFyeT4gYHIgdHh0JE5SJHRpdGxlW2xhbmd1YWdlXWAgPC9zdW1tYXJ5PiANCjxicj4NCjxidXR0b24gY2xhc3M9ImFjY29yZGlvbiI+IGByIHBhc3RlMCgiKipUYWJlbCAxOiAqKiIsIHN0YXRnbF9tZXRhKHN0YXRnbF91cmwoIk5SWDAxIiwgbGFuZyA9IGxhbmd1YWdlKSlbMV0kdGl0bGUpIGAgPC9idXR0b24+IDxkaXYgY2xhc3M9InBhbmVsIj4NCmBgYHtyIE5SWDAxfQ0KDQpOUlgwMV9yYXcgPC0gDQogIHN0YXRnbF91cmwoIk5SWDAxIiwgbGFuZyA9IGxhbmd1YWdlKSAlPiUNCiAgc3RhdGdsX2ZldGNoKA0KICAgIHVuaXRzICAgICAgICAgID0gIkwiLA0KICAgIHRpbWUgICAgICAgICAgID0gcHhfdG9wKDUpLA0KICAgICJhY2NvdW50IG5hbWUiID0gcHhfYWxsKCksDQogICAgLmNvbF9jb2RlICAgICAgPSBUUlVFDQogICkgJT4lIA0KICBhc190aWJibGUoKQ0KICANCk5SWDAxIDwtIA0KICBOUlgwMV9yYXcgJT4lIA0KICBhcnJhbmdlKGRlc2ModGltZSkpICU+JSANCiAgbXV0YXRlKA0KICAgIHRpbWUgPSB0aW1lICU+JSBmY3RfaW5vcmRlcigpLA0KICAgIGBhY2NvdW50IG5hbWVgID0gYGFjY291bnQgbmFtZWAgJT4lIHN0cl9yZW1vdmVfYWxsKCJbOmRpZ2l0Ol18WzpwdW5jdDpdfFxcKyIpICU+JSB0cmltd3MoKSwNCiAgICBgYWNjb3VudCBuYW1lYCA9IGBhY2NvdW50IG5hbWVgICU+JSBmY3RfaW5vcmRlcigpDQogICAgKSAlPiUgDQogIGRyb3BfbmEoKSAlPiUgDQogIHNwcmVhZCh0aW1lLCB2YWx1ZSkNCiAgDQpOUlgwMSAlPiUgDQogIHNlbGVjdCgtdW5pdHMpICU+JSANCiAgcmVuYW1lKCIgIiA9IDEpICU+JSANCiAgc3RhdGdsX3RhYmxlKCkgJT4lIA0KICBwYWNrX3Jvd3MoaW5kZXggPSBOUlgwMVtbInVuaXRzIl1dICU+JSB0YWJsZSgpKSAlPiUgDQogIHJvd19zcGVjKGMoOCwgMTkpLCBib2xkID0gVFJVRSkNCg0KYGBgDQo8YnI+DQpbIVtdKGByIGxvZ29gKXt3aWR0aD00MH1gciBwYXN0ZShzb3VyY2UsICJOUlgwMSIpYF0oYHIgcGFzdGUwKCJodHRwczovL2Jhbmsuc3RhdC5nbDo0NDMvc3EvNDQyOWFkN2YtMzcyZi00MGU0LWExMDMtZWViMzQxYzZiZGI1Iiwgb3B0aW9uKWApe3RhcmdldD0iX2JsYW5rIn0NCjwvZGl2PiANCg0KPGJ1dHRvbiBjbGFzcz0iYWNjb3JkaW9uIj4gYHIgcGFzdGUwKCIqKlRhYmVsIDI6ICoqIiwgc3RhdGdsX21ldGEoc3RhdGdsX3VybCgiTlJYMDMxOCIsIGxhbmcgPSBsYW5ndWFnZSkpWzFdJHRpdGxlKSBgIDwvYnV0dG9uPiA8ZGl2IGNsYXNzPSJwYW5lbCI+DQoNCmBgYHtyIE5SWDAzMTh9DQoNCk5SWDAzMThfcmF3IDwtIA0KICBzdGF0Z2xfdXJsKCJOUlgwMzE4IiwgbGFuZyA9IGxhbmd1YWdlKSAlPiUgDQogIHN0YXRnbF9mZXRjaCgNCiAgICB1bml0cyAgICAgPSAiTCIsDQogICAgaW5kdXN0cnkgID0gcGFzdGUwKCIwMTAwIiwgTEVUVEVSU1sxOjExXSksDQogICAgdGltZSAgICAgID0gcHhfdG9wKDUpLA0KICAgIC5jb2xfY29kZSA9IFRSVUUNCiAgKSAlPiUgDQogIGFzX3RpYmJsZSgpDQoNCg0KTlJYMDMxOCA8LSANCiAgTlJYMDMxOF9yYXcgJT4lIA0KICBhcnJhbmdlKGRlc2ModGltZSkpICU+JSANCiAgbXV0YXRlKA0KICAgIHRpbWUgPSB0aW1lICU+JSBmY3RfaW5vcmRlcigpLA0KICAgIGluZHVzdHJ5ID0gaW5kdXN0cnkgJT4lIGZjdF9yZW9yZGVyKHZhbHVlLCAuZnVuID0gc3VtLCAuZGVzYyA9IFRSVUUpDQogICAgKSAlPiUgDQogIHNwcmVhZCh0aW1lLCB2YWx1ZSkgJT4lIA0KICBtdXRhdGUoaW5kdXN0cnkgPSBpbmR1c3RyeSAlPiUgc3RyX3JlbW92ZSgiQXxCfEN8RHxFfEZ8R3xIfEl8SnxLIikpDQoNCg0KDQpOUlgwMzE4ICU+JSANCiAgc2VsZWN0KC11bml0cykgJT4lIA0KICByZW5hbWUoIiAiID0gMSkgJT4lICANCiAgc3RhdGdsX3RhYmxlKCkgJT4lIA0KICBwYWNrX3Jvd3MoaW5kZXggPSBOUlgwMzE4W1sidW5pdHMiXV0gJT4lIHRhYmxlKCkpDQoNCmBgYA0KPGJyPg0KWyFbXShgciBsb2dvYCl7d2lkdGg9NDB9YHIgcGFzdGUoc291cmNlLCAiTlJYMDMxOCIpYF0oYHIgcGFzdGUwKCJodHRwczovL2Jhbmsuc3RhdC5nbDo0NDMvc3EvOTA3MTg4MzYtYjFjYy00ZWFkLWFkNmEtYTg2OGNiMDdkN2UzIiwgb3B0aW9uKWApe3RhcmdldD0iX2JsYW5rIn0NCjwvZGl2PiANCg0KDQo8YnV0dG9uIGNsYXNzPSJhY2NvcmRpb24iPiBgciBwYXN0ZTAoIioqVGFiZWwgMzogKioiLCBzdGF0Z2xfbWV0YShzdGF0Z2xfdXJsKCJOUlgxMCIsIGxhbmcgPSBsYW5ndWFnZSkpWzFdJHRpdGxlKSBgIDwvYnV0dG9uPiA8ZGl2IGNsYXNzPSJwYW5lbCI+DQoNCmBgYHtyIE5SWDEwfQ0KDQpOUlgxMF9yYXcgPC0gDQogIHN0YXRnbF91cmwoIk5SWDEwIiwgbGFuZyA9IGxhbmd1YWdlKSAlPiUgDQogIHN0YXRnbF9mZXRjaCgNCiAgICB1bml0cyA9ICJLIiwNCiAgICBhY2NvdW50ID0gYygiMDEiLCAiMDIiLCAiMDQiKSwNCiAgICBBYXIgPSBweF90b3AoNSksDQogICAgLmNvbF9jb2RlID0gVFJVRQ0KICApICU+JSANCiAgYXNfdGliYmxlKCkgJT4lIA0KICByZW5hbWUoInRpbWUiID0gQWFyKQ0KDQpOUlgxMCA8LSANCiAgTlJYMTBfcmF3ICU+JSANCiAgYXJyYW5nZShkZXNjKHRpbWUpKSAlPiUgDQogIG11dGF0ZSh0aW1lID0gdGltZSAlPiUgZmN0X2lub3JkZXIoKSkgJT4lIA0KICBzcHJlYWQodGltZSwgdmFsdWUpDQoNCk5SWDEwICU+JSANCiAgc2VsZWN0KC11bml0cykgJT4lIA0KICByZW5hbWUoIiAiID0gMSkgJT4lIA0KICBzdGF0Z2xfdGFibGUoKSAlPiUgDQogIHBhY2tfcm93cyhpbmRleCA9IE5SWDEwW1sidW5pdHMiXV0gJT4lIHRhYmxlKCkpDQoNCmBgYA0KPGJyPg0KWyFbXShgciBsb2dvYCl7d2lkdGg9NDB9YHIgcGFzdGUoc291cmNlLCAiTlJYMTAiKWBdKGByIHBhc3RlMCgiaHR0cHM6Ly9iYW5rLnN0YXQuZ2w6NDQzL3NxLzU0NTMzNDU0LTYzOTEtNGNjMC05MGExLWU1MTg0NzZmNTUzMSIsIG9wdGlvbilgKXt0YXJnZXQ9Il9ibGFuayJ9DQo8L2Rpdj4gDQoNCg0KPGJ1dHRvbiBjbGFzcz0iYWNjb3JkaW9uIj4gYHIgcGFzdGUwKCIqKlRhYmVsIDQ6ICoqIiwgc3RhdGdsX21ldGEoc3RhdGdsX3VybCgiTlJYMTMiLCBsYW5nID0gbGFuZ3VhZ2UpKVsxXSR0aXRsZSkgYCA8L2J1dHRvbj4gPGRpdiBjbGFzcz0icGFuZWwiPg0KDQpgYGB7ciBOUlgxM30NCg0KTlJYMTNfcmF3IDwtIA0KICBzdGF0Z2xfdXJsKCJOUlgxMyIsIGxhbmcgPSBsYW5ndWFnZSkgJT4lIA0KICBzdGF0Z2xfZmV0Y2goDQogICAgQWFyICAgICAgID0gcHhfdG9wKDUpLA0KICAgIEtvZGUgICAgICA9IHBhc3RlMCgiVkJWVCIsIExFVFRFUlNbMToxMV0pLA0KICAgIC5jb2xfY29kZSA9IFRSVUUNCiAgKSAlPiUgDQogIGFzX3RpYmJsZSgpICU+JSANCiAgICByZW5hbWUoInRpbWUiID0gQWFyKQ0KDQoNCk5SWDEzIDwtDQogIE5SWDEzX3JhdyAlPiUgDQogIGFycmFuZ2UoZGVzYyh0aW1lKSkgJT4lIA0KICBtdXRhdGUoDQogICAgdGltZSA9IHRpbWUgJT4lIGZjdF9pbm9yZGVyKCksDQogICAgS29kZSA9IEtvZGUgJT4lIHN0cl9yZW1vdmUoIkF8QnxDfER8RXxGfEd8SHxJfEp8SyIpICU+JSB0cmltd3MoKSwNCiAgICBLb2RlID0gS29kZSAlPiUgZmN0X3Jlb3JkZXIodmFsdWUsIC5mdW4gPSBtZWFuLCAuZGVzYyA9IFRSVUUpDQogICkgJT4lIA0KICBzcHJlYWQodGltZSwgdmFsdWUpDQoNCk5SWDEzICU+JSANCiAgcmVuYW1lKCIgIiA9IDEpICU+JSANCiAgc3RhdGdsX3RhYmxlKCkNCg0KDQpgYGANCjxicj4NClshW10oYHIgbG9nb2Ape3dpZHRoPTQwfWByIHBhc3RlKHNvdXJjZSwgIk5SWDEzIilgXShgciBwYXN0ZTAoImh0dHBzOi8vYmFuay5zdGF0LmdsOjQ0My9zcS8zYzA1Nzc0ZS1kNzM5LTQwZWMtOGQyMS02ZWRmZTljMjhmYTIiLCBvcHRpb24pYCl7dGFyZ2V0PSJfYmxhbmsifQ0KPC9kaXY+IA0KPC9kZXRhaWxzPg0KDQoNCjxociBzdHlsZT0iYm9yZGVyOjFweCByaWRnZSBsaWdodGdyYXkiPiA8L2hyPg0KPGNlbnRlcj4gPHNwYW4gc3R5bGU9J2NvbG9yOiNEM0QzRDM7IGZvbnQtc2l6ZTo5MCU7Jz4gYHIgcGFzdGUodHh0JHVwZGF0ZVtsYW5ndWFnZV0sIGZvcm1hdChTeXMuRGF0ZSgpLCAiJWQuICVCICVZIikpYCA8L3NwYW4+IDwvY2VudGVyPg0KDQoNCjxzY3JpcHQ+DQp2YXIgYWNjID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgiYWNjb3JkaW9uIik7DQp2YXIgaTsNCg0KZm9yIChpID0gMDsgaSA8IGFjYy5sZW5ndGg7IGkrKykgew0KICBhY2NbaV0uYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCBmdW5jdGlvbigpIHsNCiAgICB0aGlzLmNsYXNzTGlzdC50b2dnbGUoImFjdGl2ZSIpOw0KICAgIHZhciBwYW5lbCA9IHRoaXMubmV4dEVsZW1lbnRTaWJsaW5nOw0KICAgIGlmIChwYW5lbC5zdHlsZS5tYXhIZWlnaHQpIHsNCiAgICAgIHBhbmVsLnN0eWxlLm1heEhlaWdodCA9IG51bGw7DQogICAgfSBlbHNlIHsNCiAgICAgIHBhbmVsLnN0eWxlLm1heEhlaWdodCA9IHBhbmVsLnNjcm9sbEhlaWdodCArICJweCI7DQogICAgfSANCiAgfSk7DQp9DQo8L3NjcmlwdD4NCg0KDQo=