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)
2023 2022 2021 2020 2019
Løbende priser
Produktion 38.457 37.069 34.183 32.824 32.633
Produktskatter minus produktsubsidier 919 875 754 748 769
Produktskatter 1.204 1.158 1.024 998 1.010
Produktsubsidier 285 283 270 250 240
Import af varer og tjenester 11.710 11.728 10.277 9.438 10.225
Import af varer 6.620 7.295 6.571 6.268 6.870
Import af tjenester 5.089 4.432 3.706 3.170 3.355
Tilgang i alt 51.085 49.672 45.214 43.010 43.627
Forbrug i produktionen 16.457 15.638 14.230 13.359 13.412
Forbrugsudgift 17.028 16.494 16.248 15.708 15.760
Privat forbrugsudgift 7.469 7.286 7.083 6.892 7.005
Offentlig forbrugsudgift 9.560 9.209 9.164 8.816 8.754
Individuel forbrugsudgift 5.720 5.509 5.294 5.100 5.158
Kollektiv forbrugsudgift 3.840 3.699 3.871 3.716 3.596
Bruttoinvesteringer 8.250 8.441 7.684 6.673 6.251
Eksport af varer og tjenester 9.351 9.099 7.052 7.270 8.205
Eksport af varer 6.778 6.775 5.372 5.716 6.008
Eksport af tjenester 2.573 2.324 1.680 1.554 2.197
Anvendelse i alt 51.085 49.672 45.214 43.010 43.627


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())
2023 2022 2021 2020 2019
Løbende priser
Offentlige og personlige tjenester 10.137 9.755 9.660 9.311 9.277
Fiskeri og fangst 5.721 5.374 4.743 4.797 5.039
Bygge- og anlægsvirksomhed 5.308 4.971 5.134 4.526 3.651
Finansiering og forretningsservice 4.162 4.004 3.550 3.279 3.254
Transport 4.133 3.849 3.327 3.004 3.335
Handel 3.090 3.094 2.743 2.759 2.776
Industri 2.280 2.435 1.889 2.018 2.165
Post, tele, IT, radio, TV mv. 1.297 1.273 1.244 1.219 1.262
Forsyning og renovation 994 947 963 956 903
Hoteller og restauranter 1.138 1.064 818 650 729
Råstofudvinding 197 302 112 306 242


Se Statistikbankens tabel: NRX0318

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

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())
2023 2022 2021 2020 2019
2010-priser, kædede værdier
BNP, mio. kr. 16.260,4 16.121 15.804,0 15.549,9 15.511,0
Pr. indbygger, i 1.000 kr. 287,5 285 280,4 277,6 277,4
Årlig vækst i BNP 0,9 2 1,6 0,3 2,8


Se Statistikbankens tabel: NRX10

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


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()
2023 2022 2021 2020 2019
Fiskeri og fangst 0,18 0,36 1,55 -0,93 0,98
Handel -0,31 0,72 -0,23 0,75 0,77
Bygge- og anlægsvirksomhed 0,82 -1,83 -0,48 1,97 1,13
Transport 0,80 -0,48 1,12 -0,48 0,09
Finansiering og forretningsservice 0,65 0,56 0,56 -1,03 0,02
Offentlige og personlige tjenester 0,23 -0,28 -0,11 -0,68 1,38
Forsyning og renovation -0,17 0,02 0,02 0,64 -0,02
Råstofudvinding -0,29 0,50 -0,57 0,25 0,27
Hoteller og restauranter -0,04 0,72 0,43 -0,73 -0,27
Post, tele, IT, radio, TV mv. -0,02 0,16 -0,12 0,21 -0,30
Industri -0,61 1,62 -1,39 0,73 -0,57


Se Statistikbankens tabel: NRX13


Sidst opdateret: 22. juni 2025
LS0tDQpwYXJhbXM6DQogIGxhbmc6ICJkYSINCm91dHB1dDoNCiAgc3RhdGdsOjpzdGF0Z2xfcmVwb3J0Og0KICAgIGNvZGVfZG93bmxvYWQ6IHRydWUNCiAgICBjb2RlX2ZvbGRpbmc6IGhpZGUNCmVkaXRvcl9vcHRpb25zOiANCiAgY2h1bmtfb3V0cHV0X3R5cGU6IGNvbnNvbGUNCi0tLQ0KDQpgYGB7ciBzZXR1cCwgaW5jbHVkZT1GQUxTRX0NCg0Ka25pdHI6Om9wdHNfY2h1bmskc2V0KA0KCWVjaG8gICAgPSBUUlVFLA0KCW1lc3NhZ2UgPSBGQUxTRSwNCgl3YXJuaW5nID0gRkFMU0UsDQoJY2xhc3Mub3V0cHV0ID0gInNjcm9sbC0xMDAiDQopDQoNCnsNCmxpYnJhcnkoInRpZHl2ZXJzZSIpDQpsaWJyYXJ5KCJzdGF0Z2wiKQ0KbGlicmFyeSgia2FibGVFeHRyYSIpDQpsaWJyYXJ5KCJsdWJyaWRhdGUiKQ0KbGlicmFyeSgieWFtbCIpDQp9DQoNCnsgIA0KbGFuZ3VhZ2UgIDwtIHBhcmFtcyRsYW5nDQpvcHRpb24gICAgPC0gcGFzdGUwKCI/bGFuZz0iLCBsYW5ndWFnZSwgIiZzZWxlY3QiKQ0KbG9nbyAgICAgIDwtIHBhc3RlMChnZXR3ZCgpLCIvYWRkL2xvZ28uZ2lmIikNCnR4dCAgICAgICA8LSByZWFkX3lhbWwocGFzdGUwKGdldHdkKCksICIvYWRkL3R4dC55bWwiKSwgZmlsZUVuY29kaW5nID0gIklTTy04ODU5LTEiKQ0Kc291cmNlICAgIDwtIHR4dCRzb3VyY2VbbGFuZ3VhZ2VdICU+JSB1bmxpc3QoKQ0KfQ0KDQp4YXJpbmdhbkV4dHJhOjp1c2VfY2xpcGJvYXJkKCkNCg0KYGBgDQoNCmBgYHtjc3MsIGVjaG8gPSBGQUxTRX0NCg0KLmFjY29yZGlvbiB7DQogIGJhY2tncm91bmQtY29sb3I6ICM5MTk5MDA7DQogIGNvbG9yOiB3aGl0ZTsNCiAgY3Vyc29yOiBwb2ludGVyOw0KICBwYWRkaW5nOiAxOHB4Ow0KICB3aWR0aDogMTAwJTsNCiAgYm9yZGVyOiBub25lOw0KICBib3JkZXItcmFkaXVzOiA1cHg7DQogIHRleHQtYWxpZ246IGxlZnQ7DQogIG91dGxpbmU6IG5vbmU7DQogIGZvbnQtc2l6ZTogMTVweDsNCiAgdHJhbnNpdGlvbjogMC40czsNCn0NCg0KLmFjdGl2ZSwgLmFjY29yZGlvbjpob3ZlciB7DQogIGJhY2tncm91bmQtY29sb3I6ICNmOTcyNDI7DQp9DQoNCi5hY2NvcmRpb246YWZ0ZXIgew0KICBjb250ZW50OiAnXDAwMkInOw0KICBjb2xvcjogIzc3NzsNCiAgZm9udC13ZWlnaHQ6IGJvbGQ7DQogIGZsb2F0OiByaWdodDsNCiAgbWFyZ2luLWxlZnQ6IDVweDsNCn0NCg0KLmFjdGl2ZTphZnRlciB7DQogIGNvbnRlbnQ6ICJcMjIxMiI7DQp9DQoNCi5wYW5lbCB7DQogIHBhZGRpbmc6IDBweCA1cHggMHB4IDVweDsNCiAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7DQogIG1heC1oZWlnaHQ6IDA7DQogIG92ZXJmbG93OiBoaWRkZW47DQogIHRyYW5zaXRpb246IG1heC1oZWlnaHQgMC4ycyBlYXNlLW91dDsNCn0NCg0KZGV0YWlscyB7DQogIHdpZHRoOiAxMDAlOw0KfQ0KDQpkZXRhaWxzID4gc3VtbWFyeSB7DQogIHBhZGRpbmc6IDRweCAxMnB4Ow0KICB3aWR0aDogMTAwJTsNCiAgYmFja2dyb3VuZC1jb2xvcjogIzAwN2Y5OTsNCiAgYm9yZGVyOiBzb2xpZDsNCiAgYm9yZGVyLWNvbG9yOiB3aGl0ZTsNCiAgYm9yZGVyLXJhZGl1czogNXB4Ow0KICBjdXJzb3I6IHBvaW50ZXI7DQogIGZvbnQtc2l6ZTogMTVweDsNCiAgY29sb3I6IHdoaXRlOw0KfQ0KDQpkZXRhaWxzW29wZW5dID4gc3VtbWFyeSB7DQogIGJhY2tncm91bmQtY29sb3I6ICNmYWE0MWE7DQp9DQoNCg0KLnRpdGxlIHsNCiAgY29sb3I6ICMxYjU0NjM7DQogIGZvbnQtc2l6ZTogMzZweDsNCn0NCg0KDQoucGVyc29uZXIgew0KICBib3gtc2hhZG93OiAzcHggM3B4IDRweCBibGFjazsNCiAgYmFja2dyb3VuZDogIzAwNDQ1OTsNCiAgcGFkZGluZy1yaWdodDogMTVweDsNCiAgcGFkZGluZy1sZWZ0OiAxNnB4Ow0KICBwYWRkaW5nLXRvcDogMC4xcHg7DQogIHBhZGRpbmctYm90dG9tOiAxcHg7DQogIGZvbnQtc2l6ZTogMTFweDsNCiAgY29sb3I6IHdoaXRlOw0KICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOw0KfQ0KDQouw7hrb25vbWkgew0KICBib3gtc2hhZG93OiAzcHggM3B4IDRweCBibGFjazsNCiAgYmFja2dyb3VuZDogIzAwN0Y5OTsNCiAgcGFkZGluZy1yaWdodDogMTVweDsNCiAgcGFkZGluZy1sZWZ0OiAxNnB4Ow0KICBwYWRkaW5nLXRvcDogMXB4Ow0KICBwYWRkaW5nLWJvdHRvbTogMC4xcHg7DQogIGZvbnQtc2l6ZTogMTFweDsNCiAgY29sb3I6IHdoaXRlOw0KICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOw0KfQ0KDQoudHbDpnJnw6VlbmRlIHsNCiAgYm94LXNoYWRvdzogM3B4IDNweCA0cHggYmxhY2s7DQogIGJhY2tncm91bmQ6ICNmYWE0MWE7DQogIHBhZGRpbmctcmlnaHQ6IDE1cHg7DQogIHBhZGRpbmctbGVmdDogMTZweDsNCiAgcGFkZGluZy10b3A6IDAuMXB4Ow0KICBwYWRkaW5nLWJvdHRvbTogMXB4Ow0KICBmb250LXNpemU6IDExcHg7DQogIGNvbG9yOiB3aGl0ZTsNCiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTsNCn0NCg0KLmNvbnRhaW5lciB7DQogIHdpZHRoOiBpbmhlcml0Ow0KfQ0KDQouc2Nyb2xsLTEwMCB7DQogIG1heC1oZWlnaHQ6IDEwMDsNCiAgb3ZlcmZsb3cteTogYXV0bzsNCiAgYmFja2dyb3VuZC1jb2xvcjogaW5oZXJpdDsNCn0NCg0KDQpwcmUgew0KICBtYXgtaGVpZ2h0OiAzMDBweDsNCiAgb3ZlcmZsb3cteTogYXV0bzsNCn0NCg0KcHJlW2NsYXNzXSB7DQogIG1heC1oZWlnaHQ6IDMwMHB4Ow0KfQ0KDQpgYGANCg0KPGJyPg0KPGJyPg0KDQo8Y2VudGVyPg0KDQotLS0NCiANCiMgW2ByIHR4dCROUiR0aXRsZVtsYW5ndWFnZV1gXXsudGl0bGV9DQogDQotLS0NCjwvY2VudGVyPg0KDQo8ZGV0YWlscyBvcGVuPiA8c3VtbWFyeT4gYHIgdHh0JE5SJHRpdGxlW2xhbmd1YWdlXWAgPC9zdW1tYXJ5PiANCjxicj4NCjxidXR0b24gY2xhc3M9ImFjY29yZGlvbiI+IGByIHBhc3RlMCgiKipUYWJlbCAxOiAqKiIsIHN0YXRnbF9tZXRhKHN0YXRnbF91cmwoIk5SWDAxIiwgbGFuZyA9IGxhbmd1YWdlKSlbMV0kdGl0bGUpIGAgPC9idXR0b24+IDxkaXYgY2xhc3M9InBhbmVsIj4NCmBgYHtyIE5SWDAxfQ0KDQpOUlgwMV9yYXcgPC0gDQogIHN0YXRnbF91cmwoIk5SWDAxIiwgbGFuZyA9IGxhbmd1YWdlKSAlPiUNCiAgc3RhdGdsX2ZldGNoKA0KICAgIHVuaXRzICAgICAgICAgID0gIkwiLA0KICAgIHRpbWUgICAgICAgICAgID0gcHhfdG9wKDUpLA0KICAgICJhY2NvdW50IG5hbWUiID0gcHhfYWxsKCksDQogICAgLmNvbF9jb2RlICAgICAgPSBUUlVFDQogICkgJT4lIA0KICBhc190aWJibGUoKQ0KICANCk5SWDAxIDwtIA0KICBOUlgwMV9yYXcgJT4lIA0KICBhcnJhbmdlKGRlc2ModGltZSkpICU+JSANCiAgbXV0YXRlKA0KICAgIHRpbWUgPSB0aW1lICU+JSBmY3RfaW5vcmRlcigpLA0KICAgIGBhY2NvdW50IG5hbWVgID0gYGFjY291bnQgbmFtZWAgJT4lIHN0cl9yZW1vdmVfYWxsKCJbOmRpZ2l0Ol18WzpwdW5jdDpdfFxcKyIpICU+JSB0cmltd3MoKSwNCiAgICBgYWNjb3VudCBuYW1lYCA9IGBhY2NvdW50IG5hbWVgICU+JSBmY3RfaW5vcmRlcigpDQogICAgKSAlPiUgDQogIGRyb3BfbmEoKSAlPiUgDQogIHNwcmVhZCh0aW1lLCB2YWx1ZSkNCiAgDQpOUlgwMSAlPiUgDQogIHNlbGVjdCgtdW5pdHMpICU+JSANCiAgcmVuYW1lKCIgIiA9IDEpICU+JSANCiAgc3RhdGdsX3RhYmxlKCkgJT4lIA0KICBwYWNrX3Jvd3MoaW5kZXggPSBOUlgwMVtbInVuaXRzIl1dICU+JSB0YWJsZSgpKSAlPiUgDQogIHJvd19zcGVjKGMoOCwgMTkpLCBib2xkID0gVFJVRSkNCg0KYGBgDQo8YnI+DQpbIVtdKGByIGxvZ29gKXt3aWR0aD00MH1gciBwYXN0ZShzb3VyY2UsICJOUlgwMSIpYF0oYHIgcGFzdGUwKCJodHRwczovL2Jhbmsuc3RhdC5nbDo0NDMvc3EvNDQyOWFkN2YtMzcyZi00MGU0LWExMDMtZWViMzQxYzZiZGI1Iiwgb3B0aW9uKWApe3RhcmdldD0iX2JsYW5rIn0NCjwvZGl2PiANCg0KPGJ1dHRvbiBjbGFzcz0iYWNjb3JkaW9uIj4gYHIgcGFzdGUwKCIqKlRhYmVsIDI6ICoqIiwgc3RhdGdsX21ldGEoc3RhdGdsX3VybCgiTlJYMDMxOCIsIGxhbmcgPSBsYW5ndWFnZSkpWzFdJHRpdGxlKSBgIDwvYnV0dG9uPiA8ZGl2IGNsYXNzPSJwYW5lbCI+DQoNCmBgYHtyIE5SWDAzMTh9DQoNCk5SWDAzMThfcmF3IDwtIA0KICBzdGF0Z2xfdXJsKCJOUlgwMzE4IiwgbGFuZyA9IGxhbmd1YWdlKSAlPiUgDQogIHN0YXRnbF9mZXRjaCgNCiAgICB1bml0cyAgICAgPSAiTCIsDQogICAgaW5kdXN0cnkgID0gcGFzdGUwKCIwMTAwIiwgTEVUVEVSU1sxOjExXSksDQogICAgdGltZSAgICAgID0gcHhfdG9wKDUpLA0KICAgIC5jb2xfY29kZSA9IFRSVUUNCiAgKSAlPiUgDQogIGFzX3RpYmJsZSgpDQoNCg0KTlJYMDMxOCA8LSANCiAgTlJYMDMxOF9yYXcgJT4lIA0KICBhcnJhbmdlKGRlc2ModGltZSkpICU+JSANCiAgbXV0YXRlKA0KICAgIHRpbWUgPSB0aW1lICU+JSBmY3RfaW5vcmRlcigpLA0KICAgIGluZHVzdHJ5ID0gaW5kdXN0cnkgJT4lIGZjdF9yZW9yZGVyKHZhbHVlLCAuZnVuID0gc3VtLCAuZGVzYyA9IFRSVUUpDQogICAgKSAlPiUgDQogIHNwcmVhZCh0aW1lLCB2YWx1ZSkgJT4lIA0KICBtdXRhdGUoaW5kdXN0cnkgPSBpbmR1c3RyeSAlPiUgc3RyX3JlbW92ZSgiQXxCfEN8RHxFfEZ8R3xIfEl8SnxLIikpDQoNCg0KDQpOUlgwMzE4ICU+JSANCiAgc2VsZWN0KC11bml0cykgJT4lIA0KICByZW5hbWUoIiAiID0gMSkgJT4lICANCiAgc3RhdGdsX3RhYmxlKCkgJT4lIA0KICBwYWNrX3Jvd3MoaW5kZXggPSBOUlgwMzE4W1sidW5pdHMiXV0gJT4lIHRhYmxlKCkpDQoNCmBgYA0KPGJyPg0KWyFbXShgciBsb2dvYCl7d2lkdGg9NDB9YHIgcGFzdGUoc291cmNlLCAiTlJYMDMxOCIpYF0oYHIgcGFzdGUwKCJodHRwczovL2Jhbmsuc3RhdC5nbDo0NDMvc3EvOTA3MTg4MzYtYjFjYy00ZWFkLWFkNmEtYTg2OGNiMDdkN2UzIiwgb3B0aW9uKWApe3RhcmdldD0iX2JsYW5rIn0NCjwvZGl2PiANCg0KDQo8YnV0dG9uIGNsYXNzPSJhY2NvcmRpb24iPiBgciBwYXN0ZTAoIioqVGFiZWwgMzogKioiLCBzdGF0Z2xfbWV0YShzdGF0Z2xfdXJsKCJOUlgxMCIsIGxhbmcgPSBsYW5ndWFnZSkpWzFdJHRpdGxlKSBgIDwvYnV0dG9uPiA8ZGl2IGNsYXNzPSJwYW5lbCI+DQoNCmBgYHtyIE5SWDEwfQ0KDQpOUlgxMF9yYXcgPC0gDQogIHN0YXRnbF91cmwoIk5SWDEwIiwgbGFuZyA9IGxhbmd1YWdlKSAlPiUgDQogIHN0YXRnbF9mZXRjaCgNCiAgICB1bml0cyA9ICJLIiwNCiAgICBhY2NvdW50ID0gYygiMDEiLCAiMDIiLCAiMDQiKSwNCiAgICB0aW1lID0gcHhfdG9wKDUpLA0KICAgIC5jb2xfY29kZSA9IFRSVUUNCiAgKSAlPiUgDQogIGFzX3RpYmJsZSgpDQoNCk5SWDEwIDwtIA0KICBOUlgxMF9yYXcgJT4lIA0KICBhcnJhbmdlKGRlc2ModGltZSkpICU+JSANCiAgbXV0YXRlKHRpbWUgPSB0aW1lICU+JSBmY3RfaW5vcmRlcigpKSAlPiUgDQogIHNwcmVhZCh0aW1lLCB2YWx1ZSkNCg0KTlJYMTAgJT4lIA0KICBzZWxlY3QoLXVuaXRzKSAlPiUgDQogIHJlbmFtZSgiICIgPSAxKSAlPiUgDQogIHN0YXRnbF90YWJsZSgpICU+JSANCiAgcGFja19yb3dzKGluZGV4ID0gTlJYMTBbWyJ1bml0cyJdXSAlPiUgdGFibGUoKSkNCg0KYGBgDQo8YnI+DQpbIVtdKGByIGxvZ29gKXt3aWR0aD00MH1gciBwYXN0ZShzb3VyY2UsICJOUlgxMCIpYF0oYHIgcGFzdGUwKCJodHRwczovL2Jhbmsuc3RhdC5nbDo0NDMvc3EvNTQ1MzM0NTQtNjM5MS00Y2MwLTkwYTEtZTUxODQ3NmY1NTMxIiwgb3B0aW9uKWApe3RhcmdldD0iX2JsYW5rIn0NCjwvZGl2PiANCg0KDQo8YnV0dG9uIGNsYXNzPSJhY2NvcmRpb24iPiBgciBwYXN0ZTAoIioqVGFiZWwgNDogKioiLCBzdGF0Z2xfbWV0YShzdGF0Z2xfdXJsKCJOUlgxMyIsIGxhbmcgPSBsYW5ndWFnZSkpWzFdJHRpdGxlKSBgIDwvYnV0dG9uPiA8ZGl2IGNsYXNzPSJwYW5lbCI+DQoNCmBgYHtyIE5SWDEzfQ0KDQpOUlgxM19yYXcgPC0gDQogIHN0YXRnbF91cmwoIk5SWDEzIiwgbGFuZyA9IGxhbmd1YWdlKSAlPiUgDQogIHN0YXRnbF9mZXRjaCgNCiAgICB0aW1lICAgICAgPSBweF90b3AoNSksDQogICAgS29kZSAgICAgID0gcGFzdGUwKCJWQlZUIiwgTEVUVEVSU1sxOjExXSksDQogICAgLmNvbF9jb2RlID0gVFJVRQ0KICApICU+JSANCiAgYXNfdGliYmxlKCkNCg0KDQpOUlgxMyA8LQ0KICBOUlgxM19yYXcgJT4lIA0KICBhcnJhbmdlKGRlc2ModGltZSkpICU+JSANCiAgbXV0YXRlKA0KICAgIHRpbWUgPSB0aW1lICU+JSBmY3RfaW5vcmRlcigpLA0KICAgIEtvZGUgPSBLb2RlICU+JSBzdHJfcmVtb3ZlKCJBfEJ8Q3xEfEV8RnxHfEh8SXxKfEsiKSAlPiUgdHJpbXdzKCksDQogICAgS29kZSA9IEtvZGUgJT4lIGZjdF9yZW9yZGVyKHZhbHVlLCAuZnVuID0gbWVhbiwgLmRlc2MgPSBUUlVFKQ0KICApICU+JSANCiAgc3ByZWFkKHRpbWUsIHZhbHVlKQ0KDQpOUlgxMyAlPiUgDQogIHJlbmFtZSgiICIgPSAxKSAlPiUgDQogIHN0YXRnbF90YWJsZSgpDQoNCg0KYGBgDQo8YnI+DQpbIVtdKGByIGxvZ29gKXt3aWR0aD00MH1gciBwYXN0ZShzb3VyY2UsICJOUlgxMyIpYF0oYHIgcGFzdGUwKCJodHRwczovL2Jhbmsuc3RhdC5nbDo0NDMvc3EvM2MwNTc3NGUtZDczOS00MGVjLThkMjEtNmVkZmU5YzI4ZmEyIiwgb3B0aW9uKWApe3RhcmdldD0iX2JsYW5rIn0NCjwvZGl2PiANCjwvZGV0YWlscz4NCg0KDQo8aHIgc3R5bGU9ImJvcmRlcjoxcHggcmlkZ2UgbGlnaHRncmF5Ij4gPC9ocj4NCjxjZW50ZXI+IDxzcGFuIHN0eWxlPSdjb2xvcjojRDNEM0QzOyBmb250LXNpemU6OTAlOyc+IGByIHBhc3RlKHR4dCR1cGRhdGVbbGFuZ3VhZ2VdLCBmb3JtYXQoU3lzLkRhdGUoKSwgIiVkLiAlQiAlWSIpKWAgPC9zcGFuPiA8L2NlbnRlcj4NCg0KDQo8c2NyaXB0Pg0KdmFyIGFjYyA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoImFjY29yZGlvbiIpOw0KdmFyIGk7DQoNCmZvciAoaSA9IDA7IGkgPCBhY2MubGVuZ3RoOyBpKyspIHsNCiAgYWNjW2ldLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgZnVuY3Rpb24oKSB7DQogICAgdGhpcy5jbGFzc0xpc3QudG9nZ2xlKCJhY3RpdmUiKTsNCiAgICB2YXIgcGFuZWwgPSB0aGlzLm5leHRFbGVtZW50U2libGluZzsNCiAgICBpZiAocGFuZWwuc3R5bGUubWF4SGVpZ2h0KSB7DQogICAgICBwYW5lbC5zdHlsZS5tYXhIZWlnaHQgPSBudWxsOw0KICAgIH0gZWxzZSB7DQogICAgICBwYW5lbC5zdHlsZS5tYXhIZWlnaHQgPSBwYW5lbC5zY3JvbGxIZWlnaHQgKyAicHgiOw0KICAgIH0gDQogIH0pOw0KfQ0KPC9zY3JpcHQ+DQoNCg0K