Offentlige finanser


Ansatte
OFXOA1_raw <- 
  statgl_url("OFXOA1", lang = language) %>% 
  statgl_fetch(
    taar        = px_top(),
    cofog_hoved = px_all(),
    opg_var     = "F",
    .col_code   = TRUE
  ) %>% 
  as_tibble()

OFXOA1 <- 
  OFXOA1_raw %>% 
  mutate(
    cofog_hoved = cofog_hoved %>% str_remove_all("[:digit:]|\\.") %>% trimws(),
    cofog_hoved = cofog_hoved %>% fct_reorder(value, .fun = sum, .desc = TRUE)
    ) %>% 
  spread(opg_var, value) %>% 
  arrange(cofog_hoved)

OFXOA1 %>% 
  select(-taar) %>% 
  rename(" " = 1) %>% 
  statgl_table(replace_0s = TRUE) %>% 
  pack_rows(index = OFXOA1[["taar"]] %>% table()) %>% 
  row_spec(1, bold = TRUE)
Fuldtidsbeskæftigede
2023
Alle 11.212
Social beskyttelse 4.625
Undervisning 2.362
Sundhedsvæsen 1.668
Generelle offentlige tjenester 1.291
Økonomiske anliggender 602
Fritid, kultur og religion 339
Miljøbeskyttelse 263
Offentlig orden og sikkerhed 35
Boliger og offentlige faciliteter 28
Forsvar 0


Se Statistikbankens tabel: OFXOA1

Kommunale regnskaber


#OFXUKN1_raw <- 
#  statgl_url("OFXUKN1", lang = language) %>%
#  statgl_fetch(
#    time       = px_top(),
#    district   = c("000", "955", "956", "957", "958", "959", "960"),
#    keyfigures = px_all(),
#    .col_code  = TRUE
#  ) %>% 
#  as_tibble()
#
#OFXUKN1 <- 
#  OFXUKN1_raw %>% 
#  filter(value != "NA") %>% 
#  mutate(
#    keyfigures = keyfigures %>% fct_inorder(),
#    district = district %>% fct_reorder(value, .fun = sum, .desc = TRUE)
#  ) %>% 
#  spread(district, value)
#
#OFXUKN1 %>% 
#  select(-time) %>% 
#  rename(" " = 1) %>% 
#  statgl_table() %>% 
#  pack_rows(index = OFXUKN1[["time"]] %>% table())


# Skal ordne kom så det kun er kommuner og ikke byer med
OFXUKN1_raw <- 
  statgl_url("OFXUKN1", lang = language) |> 
  statgl_fetch(
    kom        = c("AAA", "955", "956", "957", "959", "960"),
    inst_type2 = "A",
    aar        = px_top(),
    born_var   = px_all(),
    .col_code  = T
  ) |> 
  as_tibble()

OFXUKN1 <- 
  OFXUKN1_raw |> 
  mutate(value = case_when(is.na(value) ~ 0, T ~ value)) |> 
  spread(kom, value)

OFXUKN1 |>
  select(-c(inst_type2, aar)) |> 
  rename(" " = 1) |> 
  statgl_table() |> 
  pack_rows(index = OFXUKN1[["aar"]] |> table())
Alle kommuner Avannaata Kommunia Kommune Kujalleq Kommune Qeqertalik Kommuneqarfik Sermersooq Qeqqata Kommunia
2024
Alle børn i dagtilbud 3.688,0 690,0 377,0 372,0 1.550,0 699,0
Børn 0,5 år 211,0 37,0 18,0 18,0 94,0 44,0
Børn 1 år 630,0 119,0 61,0 62,0 259,0 129,0
Børn 2 år 664,0 99,0 73,0 61,0 300,0 131,0
Børn 3 år 730,0 148,0 84,0 62,0 308,0 128,0
Børn 4 år 743,0 130,0 72,0 96,0 301,0 144,0
Børn 5 år 710,0 157,0 69,0 73,0 288,0 123,0
Dagtilbud institutioner 152,0 38,0 15,0 20,0 50,0 29,0
Dækningsgrad for børn 3-5 år (pct.) 89,7 89,7 86,5 89,2 87,6 97,5


Se Statistikbankens tabel: OFXUKN1

Offentlige finanser
OFXFUNK_raw <- 
  statgl_url("OFXFUNK", lang = language) %>%
  statgl_fetch(
    time       = px_top(),
    sector     = 0,
    "function" = c(0, 1, 8, 11, 17, 25, 29, 33, 39, 44, 50),
    .col_code  = TRUE
  ) %>% 
  as_tibble()

OFXFUNK <- 
  OFXFUNK_raw %>% 
  mutate(
    `function` = `function` %>% 
      str_remove_all("[:digit:]|\\.") %>% 
      trimws() %>% 
      fct_reorder(value, .fun = sum, .desc = TRUE)
    ) %>% 
  spread(sector, value)

OFXFUNK %>% 
  select(-time) %>% 
  rename(" " = 1) %>% 
  statgl_table() %>% 
  pack_rows(index = OFXFUNK[["time"]] %>% table()) %>% 
  row_spec(1, bold = TRUE) |> 
  add_footnote("i 1.000 kr.", notation = "symbol")
Den samlede offentlige sektor
2023
Udgifter i alt 13.843.162
Social beskyttelse 3.810.241
Undervisning 2.715.034
Sundhedsvæsen 1.855.845
Generelle offentlig tjenester 1.748.178
Økonomiske anliggender 1.201.062
Offentlig orden og sikkerhed 1.058.772
Fritid, kultur og religion 480.639
Boliger og offentlige faciliteter 343.480
Forsvar 323.321
Miljøbeskyttelse 306.590
* i 1.000 kr.


Se Statistikbankens tabel: OFXFUNK

OFXREAI_raw <- 
  statgl_url("OFXREAI", lang = language) %>%
  statgl_fetch(
    sector      = 0,
    transaction = c(0, 1, 2, 5, 8, 12, 13, 14, 15, 16, 29, 30, 31, 42, 43),
    time        = px_top(),
    .col_code   = TRUE
  ) %>% 
  as_tibble()

OFXREAI <- 
  OFXREAI_raw %>% 
  mutate(
    transaction = transaction %>% str_remove_all("[:digit:]|\\+|\\(|\\)") %>% trimws() %>% fct_inorder()
    ) %>% 
  mutate_if(is.integer, replace_na, replace = 0) %>% 
  filter(value != 0) %>% 
  spread(sector, value)
  
  
OFXREAI %>% 
  select(-time) %>% 
  arrange(desc(transaction)) %>% 
  rename(" " = 1) %>% 
  statgl_table(replace_0s = TRUE) %>% 
  pack_rows(index = OFXREAI[["time"]] %>% table()) %>% 
  row_spec(1, bold = TRUE) |> 
  add_footnote("i 1.000 kr.", notation = "symbol")
Den samlede offentlige sektor
2023
Drifts- og kapitalindtægter i alt 14.126.936
Driftsindtægter i alt 14.126.936
Andre løbende overførsler i alt 6.008.143
Løbende indkomst- og formueskatter 5.413.565
Produktions- og importskatter 1.460.379
Renter samt udbytter 445.656
Udtræk af indkomst fra offentlige kvasi-selskaber 52.493
Bruttorestindkomst 746.701
* i 1.000 kr.


Se Statistikbankens tabel: OFXREAI

Regnskabstal for Landskassen


Tabellerne er for store. Se statistikbanken under Offentlige finanser, regnskabstal for landskassen.


Sidst opdateret: 22. juni 2025
LS0tDQpwYXJhbXM6DQogIGxhbmc6ICJkYSINCm91dHB1dDoNCiAgc3RhdGdsOjpzdGF0Z2xfcmVwb3J0Og0KICAgIGNvZGVfZG93bmxvYWQ6IHRydWUNCiAgICBjb2RlX2ZvbGRpbmc6IGhpZGUNCmVkaXRvcl9vcHRpb25zOiANCiAgY2h1bmtfb3V0cHV0X3R5cGU6IGNvbnNvbGUNCi0tLQ0KDQpgYGB7ciBzZXR1cCwgaW5jbHVkZT1GQUxTRX0NCg0Ka25pdHI6Om9wdHNfY2h1bmskc2V0KA0KCWVjaG8gICAgPSBUUlVFLA0KCW1lc3NhZ2UgPSBGQUxTRSwNCgl3YXJuaW5nID0gRkFMU0UsDQoJY2xhc3Mub3V0cHV0ID0gInNjcm9sbC0xMDAiDQopDQoNCmxpYnJhcnkoInRpZHl2ZXJzZSIpDQpsaWJyYXJ5KCJzdGF0Z2wiKQ0KbGlicmFyeSgia2FibGVFeHRyYSIpDQpsaWJyYXJ5KCJsdWJyaWRhdGUiKQ0KbGlicmFyeSgieWFtbCIpDQoNCmxhbmd1YWdlICA8LSBwYXJhbXMkbGFuZw0Kb3B0aW9uICAgIDwtIHBhc3RlMCgiP2xhbmc9IiwgbGFuZ3VhZ2UsICImc2VsZWN0IikNCmxvZ28gICAgICA8LSBwYXN0ZTAoZ2V0d2QoKSwiL2FkZC9sb2dvLmdpZiIpDQp0eHQgICAgICAgPC0gcmVhZF95YW1sKHBhc3RlMChnZXR3ZCgpLCAiL2FkZC90eHQueW1sIiksIGZpbGVFbmNvZGluZyA9ICJJU08tODg1OS0xIikNCnNvdXJjZSAgICA8LSB0eHQkc291cmNlW2xhbmd1YWdlXSAlPiUgdW5saXN0KCkNCg0KeGFyaW5nYW5FeHRyYTo6dXNlX2NsaXBib2FyZCgpDQoNCmBgYA0KDQpgYGB7Y3NzLCBlY2hvID0gRkFMU0V9DQoNCi5hY2NvcmRpb24gew0KICBiYWNrZ3JvdW5kLWNvbG9yOiAjOTE5OTAwOw0KICBjb2xvcjogd2hpdGU7DQogIGN1cnNvcjogcG9pbnRlcjsNCiAgcGFkZGluZzogMThweDsNCiAgd2lkdGg6IDEwMCU7DQogIGJvcmRlcjogbm9uZTsNCiAgYm9yZGVyLXJhZGl1czogNXB4Ow0KICB0ZXh0LWFsaWduOiBsZWZ0Ow0KICBvdXRsaW5lOiBub25lOw0KICBmb250LXNpemU6IDE1cHg7DQogIHRyYW5zaXRpb246IDAuNHM7DQp9DQoNCi5hY3RpdmUsIC5hY2NvcmRpb246aG92ZXIgew0KICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjk3MjQyOw0KfQ0KDQouYWNjb3JkaW9uOmFmdGVyIHsNCiAgY29udGVudDogJ1wwMDJCJzsNCiAgY29sb3I6ICM3Nzc7DQogIGZvbnQtd2VpZ2h0OiBib2xkOw0KICBmbG9hdDogcmlnaHQ7DQogIG1hcmdpbi1sZWZ0OiA1cHg7DQp9DQoNCi5hY3RpdmU6YWZ0ZXIgew0KICBjb250ZW50OiAiXDIyMTIiOw0KfQ0KDQoucGFuZWwgew0KICBwYWRkaW5nOiAwcHggNXB4IDBweCA1cHg7DQogIGJhY2tncm91bmQtY29sb3I6IHdoaXRlOw0KICBtYXgtaGVpZ2h0OiAwOw0KICBvdmVyZmxvdzogaGlkZGVuOw0KICB0cmFuc2l0aW9uOiBtYXgtaGVpZ2h0IDAuMnMgZWFzZS1vdXQ7DQp9DQoNCmRldGFpbHMgew0KICB3aWR0aDogMTAwJTsNCn0NCg0KZGV0YWlscyA+IHN1bW1hcnkgew0KICBwYWRkaW5nOiA0cHggMTJweDsNCiAgd2lkdGg6IDEwMCU7DQogIGJhY2tncm91bmQtY29sb3I6ICMwMDdmOTk7DQogIGJvcmRlcjogc29saWQ7DQogIGJvcmRlci1jb2xvcjogd2hpdGU7DQogIGJvcmRlci1yYWRpdXM6IDVweDsNCiAgY3Vyc29yOiBwb2ludGVyOw0KICBmb250LXNpemU6IDE1cHg7DQogIGNvbG9yOiB3aGl0ZTsNCn0NCg0KZGV0YWlsc1tvcGVuXSA+IHN1bW1hcnkgew0KICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmFhNDFhOw0KfQ0KDQoNCi50aXRsZSB7DQogIGNvbG9yOiAjMWI1NDYzOw0KICBmb250LXNpemU6IDM2cHg7DQp9DQoNCg0KLnBlcnNvbmVyIHsNCiAgYm94LXNoYWRvdzogM3B4IDNweCA0cHggYmxhY2s7DQogIGJhY2tncm91bmQ6ICMwMDQ0NTk7DQogIHBhZGRpbmctcmlnaHQ6IDE1cHg7DQogIHBhZGRpbmctbGVmdDogMTZweDsNCiAgcGFkZGluZy10b3A6IDAuMXB4Ow0KICBwYWRkaW5nLWJvdHRvbTogMXB4Ow0KICBmb250LXNpemU6IDExcHg7DQogIGNvbG9yOiB3aGl0ZTsNCiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTsNCn0NCg0KLsO4a29ub21pIHsNCiAgYm94LXNoYWRvdzogM3B4IDNweCA0cHggYmxhY2s7DQogIGJhY2tncm91bmQ6ICMwMDdGOTk7DQogIHBhZGRpbmctcmlnaHQ6IDE1cHg7DQogIHBhZGRpbmctbGVmdDogMTZweDsNCiAgcGFkZGluZy10b3A6IDFweDsNCiAgcGFkZGluZy1ib3R0b206IDAuMXB4Ow0KICBmb250LXNpemU6IDExcHg7DQogIGNvbG9yOiB3aGl0ZTsNCiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTsNCn0NCg0KLnR2w6ZyZ8OlZW5kZSB7DQogIGJveC1zaGFkb3c6IDNweCAzcHggNHB4IGJsYWNrOw0KICBiYWNrZ3JvdW5kOiAjZmFhNDFhOw0KICBwYWRkaW5nLXJpZ2h0OiAxNXB4Ow0KICBwYWRkaW5nLWxlZnQ6IDE2cHg7DQogIHBhZGRpbmctdG9wOiAwLjFweDsNCiAgcGFkZGluZy1ib3R0b206IDFweDsNCiAgZm9udC1zaXplOiAxMXB4Ow0KICBjb2xvcjogd2hpdGU7DQogIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7DQp9DQoNCi5jb250YWluZXIgew0KICB3aWR0aDogaW5oZXJpdDsNCn0NCg0KLnNjcm9sbC0xMDAgew0KICBtYXgtaGVpZ2h0OiAxMDA7DQogIG92ZXJmbG93LXk6IGF1dG87DQogIGJhY2tncm91bmQtY29sb3I6IGluaGVyaXQ7DQp9DQoNCg0KcHJlIHsNCiAgbWF4LWhlaWdodDogMzAwcHg7DQogIG92ZXJmbG93LXk6IGF1dG87DQp9DQoNCnByZVtjbGFzc10gew0KICBtYXgtaGVpZ2h0OiAzMDBweDsNCn0NCg0KYGBgDQoNCjxicj4NCjxicj4NCg0KPGNlbnRlcj4NCg0KLS0tDQogDQojIFtgciB0eHQkT0YkdGl0bGVbbGFuZ3VhZ2VdYF17LnRpdGxlfQ0KIA0KLS0tDQo8L2NlbnRlcj4NCg0KPGRldGFpbHM+IDxzdW1tYXJ5PiBgciB0eHQkT0Ykc3ViMVtsYW5ndWFnZV1gIDwvc3VtbWFyeT4gDQo8YnI+DQo8YnV0dG9uIGNsYXNzPSJhY2NvcmRpb24iPiBgciBwYXN0ZTAoIioqVGFiZWwgMTogKioiLCBzdGF0Z2xfbWV0YShzdGF0Z2xfdXJsKCJPRlhPQTEiLCBsYW5nID0gbGFuZ3VhZ2UpKVsxXSR0aXRsZSkgYCA8L2J1dHRvbj4gPGRpdiBjbGFzcz0icGFuZWwiPg0KYGBge3IgT0ZYT0ExfQ0KDQpPRlhPQTFfcmF3IDwtIA0KICBzdGF0Z2xfdXJsKCJPRlhPQTEiLCBsYW5nID0gbGFuZ3VhZ2UpICU+JSANCiAgc3RhdGdsX2ZldGNoKA0KICAgIHRhYXIgICAgICAgID0gcHhfdG9wKCksDQogICAgY29mb2dfaG92ZWQgPSBweF9hbGwoKSwNCiAgICBvcGdfdmFyICAgICA9ICJGIiwNCiAgICAuY29sX2NvZGUgICA9IFRSVUUNCiAgKSAlPiUgDQogIGFzX3RpYmJsZSgpDQoNCk9GWE9BMSA8LSANCiAgT0ZYT0ExX3JhdyAlPiUgDQogIG11dGF0ZSgNCiAgICBjb2ZvZ19ob3ZlZCA9IGNvZm9nX2hvdmVkICU+JSBzdHJfcmVtb3ZlX2FsbCgiWzpkaWdpdDpdfFxcLiIpICU+JSB0cmltd3MoKSwNCiAgICBjb2ZvZ19ob3ZlZCA9IGNvZm9nX2hvdmVkICU+JSBmY3RfcmVvcmRlcih2YWx1ZSwgLmZ1biA9IHN1bSwgLmRlc2MgPSBUUlVFKQ0KICAgICkgJT4lIA0KICBzcHJlYWQob3BnX3ZhciwgdmFsdWUpICU+JSANCiAgYXJyYW5nZShjb2ZvZ19ob3ZlZCkNCg0KT0ZYT0ExICU+JSANCiAgc2VsZWN0KC10YWFyKSAlPiUgDQogIHJlbmFtZSgiICIgPSAxKSAlPiUgDQogIHN0YXRnbF90YWJsZShyZXBsYWNlXzBzID0gVFJVRSkgJT4lIA0KICBwYWNrX3Jvd3MoaW5kZXggPSBPRlhPQTFbWyJ0YWFyIl1dICU+JSB0YWJsZSgpKSAlPiUgDQogIHJvd19zcGVjKDEsIGJvbGQgPSBUUlVFKQ0KDQpgYGANCjxicj4NClshW10oYHIgbG9nb2Ape3dpZHRoPTQwfWByIHBhc3RlKHNvdXJjZSwgIk9GWE9BMSIpYF0oYHIgcGFzdGUwKCJodHRwczovL2Jhbmsuc3RhdC5nbDo0NDMvc3EvMjQ5NTZmNjItNWQwMy00ZjkwLTkwMTAtY2M4ZTQ2ZDEzOTFmIiwgb3B0aW9uKWApe3RhcmdldD0iX2JsYW5rIn0NCjwvZGl2PiANCg0KPC9kZXRhaWxzPg0KDQo8ZGV0YWlscz4gPHN1bW1hcnk+IGByIHR4dCRPRiRzdWIyW2xhbmd1YWdlXWAgPC9zdW1tYXJ5Pg0KPGJyPg0KDQo8YnV0dG9uIGNsYXNzPSJhY2NvcmRpb24iPiBgciBwYXN0ZTAoIioqVGFiZWwgMjogKioiLCBzdGF0Z2xfbWV0YShzdGF0Z2xfdXJsKCJPRlhVS04xIiwgbGFuZyA9IGxhbmd1YWdlKSlbMV0kdGl0bGUpIGAgPC9idXR0b24+IDxkaXYgY2xhc3M9InBhbmVsIj4NCg0KYGBge3IgT0ZYVUtOMX0NCg0KI09GWFVLTjFfcmF3IDwtIA0KIyAgc3RhdGdsX3VybCgiT0ZYVUtOMSIsIGxhbmcgPSBsYW5ndWFnZSkgJT4lDQojICBzdGF0Z2xfZmV0Y2goDQojICAgIHRpbWUgICAgICAgPSBweF90b3AoKSwNCiMgICAgZGlzdHJpY3QgICA9IGMoIjAwMCIsICI5NTUiLCAiOTU2IiwgIjk1NyIsICI5NTgiLCAiOTU5IiwgIjk2MCIpLA0KIyAgICBrZXlmaWd1cmVzID0gcHhfYWxsKCksDQojICAgIC5jb2xfY29kZSAgPSBUUlVFDQojICApICU+JSANCiMgIGFzX3RpYmJsZSgpDQojDQojT0ZYVUtOMSA8LSANCiMgIE9GWFVLTjFfcmF3ICU+JSANCiMgIGZpbHRlcih2YWx1ZSAhPSAiTkEiKSAlPiUgDQojICBtdXRhdGUoDQojICAgIGtleWZpZ3VyZXMgPSBrZXlmaWd1cmVzICU+JSBmY3RfaW5vcmRlcigpLA0KIyAgICBkaXN0cmljdCA9IGRpc3RyaWN0ICU+JSBmY3RfcmVvcmRlcih2YWx1ZSwgLmZ1biA9IHN1bSwgLmRlc2MgPSBUUlVFKQ0KIyAgKSAlPiUgDQojICBzcHJlYWQoZGlzdHJpY3QsIHZhbHVlKQ0KIw0KI09GWFVLTjEgJT4lIA0KIyAgc2VsZWN0KC10aW1lKSAlPiUgDQojICByZW5hbWUoIiAiID0gMSkgJT4lIA0KIyAgc3RhdGdsX3RhYmxlKCkgJT4lIA0KIyAgcGFja19yb3dzKGluZGV4ID0gT0ZYVUtOMVtbInRpbWUiXV0gJT4lIHRhYmxlKCkpDQoNCg0KIyBTa2FsIG9yZG5lIGtvbSBzw6UgZGV0IGt1biBlciBrb21tdW5lciBvZyBpa2tlIGJ5ZXIgbWVkDQpPRlhVS04xX3JhdyA8LSANCiAgc3RhdGdsX3VybCgiT0ZYVUtOMSIsIGxhbmcgPSBsYW5ndWFnZSkgfD4gDQogIHN0YXRnbF9mZXRjaCgNCiAgICBrb20gICAgICAgID0gYygiQUFBIiwgIjk1NSIsICI5NTYiLCAiOTU3IiwgIjk1OSIsICI5NjAiKSwNCiAgICBpbnN0X3R5cGUyID0gIkEiLA0KICAgIGFhciAgICAgICAgPSBweF90b3AoKSwNCiAgICBib3JuX3ZhciAgID0gcHhfYWxsKCksDQogICAgLmNvbF9jb2RlICA9IFQNCiAgKSB8PiANCiAgYXNfdGliYmxlKCkNCg0KT0ZYVUtOMSA8LSANCiAgT0ZYVUtOMV9yYXcgfD4gDQogIG11dGF0ZSh2YWx1ZSA9IGNhc2Vfd2hlbihpcy5uYSh2YWx1ZSkgfiAwLCBUIH4gdmFsdWUpKSB8PiANCiAgc3ByZWFkKGtvbSwgdmFsdWUpDQoNCk9GWFVLTjEgfD4NCiAgc2VsZWN0KC1jKGluc3RfdHlwZTIsIGFhcikpIHw+IA0KICByZW5hbWUoIiAiID0gMSkgfD4gDQogIHN0YXRnbF90YWJsZSgpIHw+IA0KICBwYWNrX3Jvd3MoaW5kZXggPSBPRlhVS04xW1siYWFyIl1dIHw+IHRhYmxlKCkpDQoNCg0KDQpgYGANCjxicj4NClshW10oYHIgbG9nb2Ape3dpZHRoPTQwfWByIHBhc3RlKHNvdXJjZSwgIk9GWFVLTjEiKWBdKGByIHBhc3RlMCgiaHR0cHM6Ly9iYW5rLnN0YXQuZ2w6NDQzL3NxL2NhM2M0MjEzLTRhYWItNGYxNi05Y2RiLTczOGY1YzFlOTkxNSIsIG9wdGlvbilgKXt0YXJnZXQ9Il9ibGFuayJ9DQo8L2Rpdj4gDQoNCg0KPC9kZXRhaWxzPg0KDQo8ZGV0YWlscz4gPHN1bW1hcnk+IGByIHR4dCRPRiRzdWIzW2xhbmd1YWdlXWAgPC9zdW1tYXJ5PiANCjxicj4NCjxidXR0b24gY2xhc3M9ImFjY29yZGlvbiI+IGByIHBhc3RlMCgiKipUYWJlbCAzOiAqKiIsIHN0YXRnbF9tZXRhKHN0YXRnbF91cmwoIk9GWEZVTksiLCBsYW5nID0gbGFuZ3VhZ2UpKVsxXSR0aXRsZSkgYCA8L2J1dHRvbj4gPGRpdiBjbGFzcz0icGFuZWwiPg0KDQpgYGB7ciBPRlhGVU5LfQ0KDQpPRlhGVU5LX3JhdyA8LSANCiAgc3RhdGdsX3VybCgiT0ZYRlVOSyIsIGxhbmcgPSBsYW5ndWFnZSkgJT4lDQogIHN0YXRnbF9mZXRjaCgNCiAgICB0aW1lICAgICAgID0gcHhfdG9wKCksDQogICAgc2VjdG9yICAgICA9IDAsDQogICAgImZ1bmN0aW9uIiA9IGMoMCwgMSwgOCwgMTEsIDE3LCAyNSwgMjksIDMzLCAzOSwgNDQsIDUwKSwNCiAgICAuY29sX2NvZGUgID0gVFJVRQ0KICApICU+JSANCiAgYXNfdGliYmxlKCkNCg0KT0ZYRlVOSyA8LSANCiAgT0ZYRlVOS19yYXcgJT4lIA0KICBtdXRhdGUoDQogICAgYGZ1bmN0aW9uYCA9IGBmdW5jdGlvbmAgJT4lIA0KICAgICAgc3RyX3JlbW92ZV9hbGwoIls6ZGlnaXQ6XXxcXC4iKSAlPiUgDQogICAgICB0cmltd3MoKSAlPiUgDQogICAgICBmY3RfcmVvcmRlcih2YWx1ZSwgLmZ1biA9IHN1bSwgLmRlc2MgPSBUUlVFKQ0KICAgICkgJT4lIA0KICBzcHJlYWQoc2VjdG9yLCB2YWx1ZSkNCg0KT0ZYRlVOSyAlPiUgDQogIHNlbGVjdCgtdGltZSkgJT4lIA0KICByZW5hbWUoIiAiID0gMSkgJT4lIA0KICBzdGF0Z2xfdGFibGUoKSAlPiUgDQogIHBhY2tfcm93cyhpbmRleCA9IE9GWEZVTktbWyJ0aW1lIl1dICU+JSB0YWJsZSgpKSAlPiUgDQogIHJvd19zcGVjKDEsIGJvbGQgPSBUUlVFKSB8PiANCiAgYWRkX2Zvb3Rub3RlKCJpIDEuMDAwIGtyLiIsIG5vdGF0aW9uID0gInN5bWJvbCIpDQoNCmBgYA0KPGJyPg0KWyFbXShgciBsb2dvYCl7d2lkdGg9NDB9YHIgcGFzdGUoc291cmNlLCAiT0ZYRlVOSyIpYF0oYHIgcGFzdGUwKCJodHRwczovL2Jhbmsuc3RhdC5nbDo0NDMvc3EvOTNiMTk4ZTktMjcwZi00MWVhLTk4MjgtMmU0Y2YyZWM2MjNmIiwgb3B0aW9uKWApe3RhcmdldD0iX2JsYW5rIn0NCjwvZGl2PiANCg0KDQo8YnV0dG9uIGNsYXNzPSJhY2NvcmRpb24iPiBgciBwYXN0ZTAoIioqVGFiZWwgNDogKioiLCBzdGF0Z2xfbWV0YShzdGF0Z2xfdXJsKCJPRlhSRUFJIiwgbGFuZyA9IGxhbmd1YWdlKSlbMV0kdGl0bGUpIGAgPC9idXR0b24+IDxkaXYgY2xhc3M9InBhbmVsIj4NCg0KYGBge3IgT0ZYUkVBSX0NCg0KT0ZYUkVBSV9yYXcgPC0gDQogIHN0YXRnbF91cmwoIk9GWFJFQUkiLCBsYW5nID0gbGFuZ3VhZ2UpICU+JQ0KICBzdGF0Z2xfZmV0Y2goDQogICAgc2VjdG9yICAgICAgPSAwLA0KICAgIHRyYW5zYWN0aW9uID0gYygwLCAxLCAyLCA1LCA4LCAxMiwgMTMsIDE0LCAxNSwgMTYsIDI5LCAzMCwgMzEsIDQyLCA0MyksDQogICAgdGltZSAgICAgICAgPSBweF90b3AoKSwNCiAgICAuY29sX2NvZGUgICA9IFRSVUUNCiAgKSAlPiUgDQogIGFzX3RpYmJsZSgpDQoNCk9GWFJFQUkgPC0gDQogIE9GWFJFQUlfcmF3ICU+JSANCiAgbXV0YXRlKA0KICAgIHRyYW5zYWN0aW9uID0gdHJhbnNhY3Rpb24gJT4lIHN0cl9yZW1vdmVfYWxsKCJbOmRpZ2l0Ol18XFwrfFxcKHxcXCkiKSAlPiUgdHJpbXdzKCkgJT4lIGZjdF9pbm9yZGVyKCkNCiAgICApICU+JSANCiAgbXV0YXRlX2lmKGlzLmludGVnZXIsIHJlcGxhY2VfbmEsIHJlcGxhY2UgPSAwKSAlPiUgDQogIGZpbHRlcih2YWx1ZSAhPSAwKSAlPiUgDQogIHNwcmVhZChzZWN0b3IsIHZhbHVlKQ0KICANCiAgDQpPRlhSRUFJICU+JSANCiAgc2VsZWN0KC10aW1lKSAlPiUgDQogIGFycmFuZ2UoZGVzYyh0cmFuc2FjdGlvbikpICU+JSANCiAgcmVuYW1lKCIgIiA9IDEpICU+JSANCiAgc3RhdGdsX3RhYmxlKHJlcGxhY2VfMHMgPSBUUlVFKSAlPiUgDQogIHBhY2tfcm93cyhpbmRleCA9IE9GWFJFQUlbWyJ0aW1lIl1dICU+JSB0YWJsZSgpKSAlPiUgDQogIHJvd19zcGVjKDEsIGJvbGQgPSBUUlVFKSB8PiANCiAgYWRkX2Zvb3Rub3RlKCJpIDEuMDAwIGtyLiIsIG5vdGF0aW9uID0gInN5bWJvbCIpDQoNCmBgYA0KPGJyPg0KWyFbXShgciBsb2dvYCl7d2lkdGg9NDB9YHIgcGFzdGUoc291cmNlLCAiT0ZYUkVBSSIpYF0oYHIgcGFzdGUwKCJodHRwczovL2Jhbmsuc3RhdC5nbDo0NDMvc3EvOGQ4MDQ3MWUtM2VjNy00NGUwLWE0M2QtYjdjYzhmMGEyMmRiIiwgb3B0aW9uKWApe3RhcmdldD0iX2JsYW5rIn0NCjwvZGl2PiANCiANCg0KPC9kZXRhaWxzPiANCg0KPGRldGFpbHM+IDxzdW1tYXJ5PiBgciB0eHQkT0Ykc3ViNFtsYW5ndWFnZV1gIDwvc3VtbWFyeT4NCg0KPGJyPg0KVGFiZWxsZXJuZSBlciBmb3Igc3RvcmUuIFNlIHN0YXRpc3Rpa2JhbmtlbiB1bmRlciBPZmZlbnRsaWdlIGZpbmFuc2VyLCByZWduc2thYnN0YWwgZm9yIGxhbmRza2Fzc2VuLg0KDQo8L2RldGFpbHM+IA0KDQoNCjxociBzdHlsZT0iYm9yZGVyOjFweCByaWRnZSBsaWdodGdyYXkiPiA8L2hyPg0KPGNlbnRlcj4gPHNwYW4gc3R5bGU9J2NvbG9yOiNEM0QzRDM7IGZvbnQtc2l6ZTo5MCU7Jz4gYHIgcGFzdGUodHh0JHVwZGF0ZVtsYW5ndWFnZV0sIGZvcm1hdChTeXMuRGF0ZSgpLCAiJWQuICVCICVZIikpYCA8L3NwYW4+IDwvY2VudGVyPg0KDQoNCg0KDQo8c2NyaXB0Pg0KdmFyIGFjYyA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoImFjY29yZGlvbiIpOw0KdmFyIGk7DQoNCmZvciAoaSA9IDA7IGkgPCBhY2MubGVuZ3RoOyBpKyspIHsNCiAgYWNjW2ldLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgZnVuY3Rpb24oKSB7DQogICAgdGhpcy5jbGFzc0xpc3QudG9nZ2xlKCJhY3RpdmUiKTsNCiAgICB2YXIgcGFuZWwgPSB0aGlzLm5leHRFbGVtZW50U2libGluZzsNCiAgICBpZiAocGFuZWwuc3R5bGUubWF4SGVpZ2h0KSB7DQogICAgICBwYW5lbC5zdHlsZS5tYXhIZWlnaHQgPSBudWxsOw0KICAgIH0gZWxzZSB7DQogICAgICBwYW5lbC5zdHlsZS5tYXhIZWlnaHQgPSBwYW5lbC5zY3JvbGxIZWlnaHQgKyAicHgiOw0KICAgIH0gDQogIH0pOw0KfQ0KPC9zY3JpcHQ+DQo=