Turisme


Krydstogter
TUXKRH_raw <- 
  statgl_url("TUXKRH", lang = language) %>% 
  statgl_fetch(
    month     = px_all(),
    port      = px_all(),
    time      = px_top(3),
    .col_code = TRUE
  ) %>% 
  as_tibble()

# Skal have ændret time i fetch og sys.time filter tilbage når der kommer nye tal for 2022 også i de næste 2 tabeller

TUXKRH <- 
  TUXKRH_raw %>% 
  #filter(time <= Sys.time() %>% year() - 3) %>% 
  drop_na() %>%
  mutate(
    month = month %>% fct_inorder(),
    port = port %>% fct_reorder(value, .fun = sum, .na_rm = TRUE, .desc = TRUE)
  ) %>% 
  spread(month, value) %>% 
  mutate_if(is.integer, ~ replace(., is.na(.), 0))

TUXKRH %>% 
  select(-time) %>% 
  rename(" " = 1) %>% 
  statgl_table(replace_0s = TRUE) %>% 
  pack_rows(index = TUXKRH[["time"]] %>% table()) %>% 
  row_spec(1, bold = TRUE) |> 
  column_spec(2, bold = T)
Total April Maj Juni Juli August September
2022
I alt 112.273 9 261 2.393 35.317 52.251 22.042
I alt 187.710 19 656 9.497 50.214 99.127 28.197
Qaqortoq 27.732 0 0 1.178 8.178 13.364 5.012
Qaqortoq 47.025 0 0 490 10.861 28.753 6.921
Nanortalik 14.486 0 0 0 4.360 9.964 162
Nanortalik 34.620 0 0 178 11.807 18.395 4.240
Nuuk 15.560 0 0 87 7.971 5.522 1.980
Nuuk 31.660 0 0 3.113 11.882 13.097 3.568
Ilulissat 14.730 0 0 97 5.350 5.436 3.847
Ilulissat 14.423 0 0 412 2.149 9.015 2.847
Sisimiut 12.575 0 9 97 4.911 4.725 2.833
Sisimiut 12.185 19 12 803 2.313 6.911 2.127
Kangerlussuaq 7.309 0 0 10 997 3.972 2.330
Kangerlussuaq 7.851 0 0 254 1.989 4.160 1.448
Paamiut 1.547 0 0 0 165 1.205 177
Paamiut 13.218 0 105 2.568 4.717 5.093 735
Qeqertarsuaq 3.154 9 0 0 606 1.567 972
Qeqertarsuaq 5.881 0 0 99 1.174 3.886 722
Ittoqqortoormiit 3.255 0 106 128 394 878 1.749
2023
Ittoqqortoormiit 5.343 0 85 193 352 2.056 2.657
Uummannaq 2.805 0 0 10 591 1.127 1.077
Uummannaq 2.950 0 0 0 253 1.590 1.107
Narsaq 2.190 0 146 0 168 1.051 825
Narsaq 2.305 0 99 682 0 1.334 190
Maniitsoq 1.925 0 0 0 802 952 171
Maniitsoq 1.853 0 0 616 921 316 0
Tasiilaq 877 0 0 0 168 323 386
Tasiilaq 2.802 0 256 0 939 1.249 358
Narsarsuaq 1.891 0 0 786 266 839 0
Narsarsuaq 1.547 0 0 0 343 1.074 130
Qaanaaq 1.082 0 0 0 390 371 321
Qaanaaq 1.516 0 0 0 208 686 622
Upernavik 706 0 0 0 0 506 200
Upernavik 670 0 0 0 0 670 0
Aasiaat 193 0 0 0 0 193 0
Aasiaat 680 0 0 0 0 340 340
Qassiarsuk 104 0 0 0 0 104 0
Qassiarsuk 535 0 99 89 0 162 185
Qasigiannguit 340 0 0 0 0 340 0


Se Statistikbankens tabel: TUXKRH

TUXKRL_raw <- 
  statgl_url("TUXKRP", lang = language) %>% 
  statgl_fetch(
    month     = px_all(),
    time      = px_top(5),
    .col_code = TRUE
  ) %>% 
  as_tibble()

TUXKRL_raw %>% 
  mutate(
    month = month %>% fct_inorder(),
    time = time %>% fct_inorder() %>% fct_rev()
  ) %>% 
  drop_na() %>% 
  arrange(time, month) %>% 
  spread(time, value) %>% 
  mutate_if(is.integer, ~ replace(., is.na(.), 0)) %>% 
  rename(" " = 1) %>% 
  statgl_table(replace_0s = TRUE) %>% 
  row_spec(1, bold = TRUE)
2023 2022 2019
Total 76.477 43.999 46.633
April 19 9 0
Maj 557 252 89
Juni 4.066 1.403 76
Juli 21.627 12.496 7.497
August 38.469 22.012 26.236
September 11.739 7.827 12.671
Oktober 0 0 64


Se Statistikbankens tabel: TUXKRP

Flypassagerer
TUXUPAX_raw <- 
  statgl_url("TUXUPAX", lang = language) %>% 
  statgl_fetch(
    time      = px_top(2),
    month     = px_all(),
    airport   = px_all(),
    .col_code = TRUE
  ) %>% 
  as_tibble()

TUXUPAX <- 
  TUXUPAX_raw %>% 
  filter(time < Sys.time() %>% year()) %>% 
  mutate(
    month = month %>% fct_inorder(),
    airport = airport %>% fct_reorder(value, .fun = sum, .na_rm = TRUE, .desc = TRUE)
    ) %>% 
  spread(airport, value) %>% 
  mutate_if(is.integer, ~ replace(., is.na(.), 0))


TUXUPAX %>% 
  select(-time) %>% 
  rename(" " = 1) %>% 
  statgl_table(replace_0s = TRUE) %>% 
  pack_rows(index = TUXUPAX[["time"]] %>% table()) %>% 
  row_spec(1, bold = T) |> 
  column_spec(2, bold = T)
I alt Kangerlussuaq Nuuk Narsarsuaq Kulusuk Ilulissat Nerlerit inaat
2023
I alt 96.362 75.522 6.220 5.931 4.713 3.187 789
Januar 4.090 3.694 243 72 39 0 42
Februar 3.625 3.290 271 0 40 0 24
Marts 6.864 5.917 547 79 216 58 47
April 7.294 6.331 398 220 293 0 52
Maj 6.654 5.653 471 246 211 0 73
Juni 10.410 7.633 795 931 460 532 59
Juli 15.425 10.781 663 1.543 1.178 1.161 99
August 14.623 9.219 818 1.776 1.440 1.226 144
September 10.281 7.627 803 918 591 210 132
Oktober 6.723 6.093 471 0 105 0 54
November 4.928 4.436 421 0 40 0 31
December 5.445 4.848 319 146 100 0 32


Se Statistikbankens tabel: TUXUPAX

Hotelovernatninger
TUXKAP_raw <- 
  statgl_url("TUXKAP", lang = language) %>% 
  statgl_fetch(
    unit      = c(2),
    month     = px_all(),
    region    = px_all(),
    time      = px_top(2),
    .col_code = TRUE
  ) %>% 
  as_tibble()


TUXKAP <- 
  TUXKAP_raw %>% 
  filter(time <= Sys.time() %>% year() -1) %>% 
  mutate(
    month = month %>% fct_inorder(),
    region = region %>% fct_inorder()
  ) %>% 
  spread(month, value) %>% 
  unite(combi, unit, time, sep = ", ")

TUXKAP %>% 
  select(-combi) %>% 
  rename(" " = 1) %>% 
  statgl_table() %>% 
  pack_rows(index = TUXKAP[["combi"]] %>% table()) %>% 
  row_spec(1, bold = T) |> 
  column_spec(2, bold = T)
I alt Januar Februar Marts April Maj Juni Juli August September Oktober November December
Belægningsprocent, 2022
I alt 47,8 25,0 33,6 47,7 44,1 49,7 53,4 59,4 66,3 67,3 54,0 42,0 24,9
I alt 47,5 29,6 42,2 49,2 49,0 47,0 57,4 58,4 64,4 59,0 47,5 40,3 22,6
Avannaata Kommunia og Kommune Qeqertalik 56,3 21,2 32,7 52,0 51,9 58,7 67,2 85,4 82,3 75,7 61,6 43,3 29,8
Avannaata Kommunia og Kommune Qeqertalik 52,5 26,9 45,2 48,4 53,2 55,3 66,8 83,6 82,3 62,5 44,1 34,7 17,1
Ilulissat (*) 56,3 19,5 30,6 54,6 51,8 61,1 65,6 89,6 80,4 72,7 61,3 38,9 32,3
Ilulissat (*) 55,0 27,4 49,8 53,3 56,2 57,3 69,9 86,0 85,1 64,7 46,7 34,2 16,5
Qeqqata Kommunia 49,1 26,1 37,4 59,3 52,9 54,6 56,2 60,3 66,0 64,1 52,6 37,4 21,4
Belægningsprocent, 2023
Qeqqata Kommunia 48,6 27,8 44,7 53,8 54,3 49,9 52,5 59,0 64,2 61,4 53,4 38,3 23,7
Kommune Kujalleq 28,3 21,7 19,8 23,2 19,7 17,4 32,2 40,1 43,8 35,5 27,5 25,1 18,5
Kommune Kujalleq 32,8 33,0 35,5 40,3 25,8 24,6 37,4 44,8 44,6 34,2 20,8 25,2 21,5
Kommuneqarfik Sermersooq Vest 54,5 32,2 46,0 54,6 48,3 61,9 57,5 45,9 64,0 88,1 70,7 58,9 26,7
Kommuneqarfik Sermersooq Vest 53,7 36,0 47,1 56,0 56,5 55,9 64,6 41,0 59,0 72,6 68,8 60,1 27,5
Kommuneqarfik Sermersooq Øst 35,0 17,3 13,1 34,8 34,7 33,6 39,3 56,3 72,3 53,8 21,7 18,0 21,7
Kommuneqarfik Sermersooq Øst 37,4 12,2 20,0 35,0 42,3 33,5 56,0 64,3 69,7 54,3 19,6 18,7 21,6


Se Statistikbankens tabel: TUXKAP

Slædehunde
TUX01_raw <- 
  statgl_url("TUX01", lang = language) %>%
  statgl_fetch(
    district  = px_all(),
    time      = px_top(5),
    .col_code = TRUE
  ) %>% 
  as_tibble()

TUX01_raw %>% 
  arrange(desc(time)) %>% 
  mutate(time = time %>% fct_inorder()) %>% 
  spread(time, value) %>% 
  arrange(desc(`2019`)) %>% 
  rename(" " = 1) %>% 
  statgl_table() %>% 
  row_spec(1, bold = TRUE)
2022 2021 2020 2019 2018
I alt 13.123 13.395 13.417 13.315 14.130
Upernavik 2.501 2.478 2.719 3.058 2.954
Ilulissat 2.974 3.096 3.108 2.690 2.933
Uummannaq 1.863 1.863 1.751 1.811 2.633
Sisimiut 1.321 1.252 1.153 1.129 1.067
Qaanaaq 983 1.163 1.163 1.071 1.053
Tasiilaq 942 1.045 924 1.028 1.012
Qasigiannguit 806 943 810 809 756
Aasiaat 602 417 635 656 656
Kangaatsiaq 576 593 625 550 550
Qeqertarsuaq 375 365 349 319 327
Ittoqqortoormiit 180 180 180 194 189


Se Statistikbankens tabel: TUX01


Sidst opdateret: 17. april 2024
LS0tDQpwYXJhbXM6DQogIGxhbmc6ICJkYSINCm91dHB1dDoNCiAgc3RhdGdsOjpzdGF0Z2xfcmVwb3J0Og0KICAgIGNvZGVfZG93bmxvYWQ6IHRydWUNCiAgICBjb2RlX2ZvbGRpbmc6IGhpZGUNCmVkaXRvcl9vcHRpb25zOiANCiAgY2h1bmtfb3V0cHV0X3R5cGU6IGNvbnNvbGUNCi0tLQ0KDQpgYGB7ciBzZXR1cCwgaW5jbHVkZT1GQUxTRX0NCg0Ka25pdHI6Om9wdHNfY2h1bmskc2V0KA0KCWVjaG8gICAgPSBUUlVFLA0KCW1lc3NhZ2UgPSBUUlVFLA0KCXdhcm5pbmcgPSBGQUxTRQ0KKQ0KDQpsaWJyYXJ5KCJ0aWR5dmVyc2UiKQ0KbGlicmFyeSgic3RhdGdsIikNCmxpYnJhcnkoImthYmxlRXh0cmEiKQ0KbGlicmFyeSgibHVicmlkYXRlIikNCmxpYnJhcnkoInlhbWwiKQ0KDQpsYW5ndWFnZSAgPC0gcGFyYW1zJGxhbmcNCm9wdGlvbiAgICA8LSBwYXN0ZTAoIj9sYW5nPSIsIGxhbmd1YWdlLCAiJnNlbGVjdCIpDQpsb2dvICAgICAgPC0gcGFzdGUwKGdldHdkKCksIi9hZGQvbG9nby5naWYiKQ0KdHh0ICAgICAgIDwtIHJlYWRfeWFtbChwYXN0ZTAoZ2V0d2QoKSwgIi9hZGQvdHh0LnltbCIpLCBmaWxlRW5jb2RpbmcgPSAiSVNPLTg4NTktMSIpDQpzb3VyY2UgICAgPC0gdHh0JHNvdXJjZVtsYW5ndWFnZV0gJT4lIHVubGlzdCgpDQpgYGANCg0KYGBge2NzcywgZWNobyA9IEZBTFNFfQ0KDQouYWNjb3JkaW9uIHsNCiAgYmFja2dyb3VuZC1jb2xvcjogIzkxOTkwMDsNCiAgY29sb3I6IHdoaXRlOw0KICBjdXJzb3I6IHBvaW50ZXI7DQogIHBhZGRpbmc6IDE4cHg7DQogIHdpZHRoOiAxMDAlOw0KICBib3JkZXI6IG5vbmU7DQogIGJvcmRlci1yYWRpdXM6IDVweDsNCiAgdGV4dC1hbGlnbjogbGVmdDsNCiAgb3V0bGluZTogbm9uZTsNCiAgZm9udC1zaXplOiAxNXB4Ow0KICB0cmFuc2l0aW9uOiAwLjRzOw0KfQ0KDQouYWN0aXZlLCAuYWNjb3JkaW9uOmhvdmVyIHsNCiAgYmFja2dyb3VuZC1jb2xvcjogI2Y5NzI0MjsNCn0NCg0KLmFjY29yZGlvbjphZnRlciB7DQogIGNvbnRlbnQ6ICdcMDAyQic7DQogIGNvbG9yOiAjNzc3Ow0KICBmb250LXdlaWdodDogYm9sZDsNCiAgZmxvYXQ6IHJpZ2h0Ow0KICBtYXJnaW4tbGVmdDogNXB4Ow0KfQ0KDQouYWN0aXZlOmFmdGVyIHsNCiAgY29udGVudDogIlwyMjEyIjsNCn0NCg0KLnBhbmVsIHsNCiAgcGFkZGluZzogMHB4IDVweCAwcHggNXB4Ow0KICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTsNCiAgbWF4LWhlaWdodDogMDsNCiAgb3ZlcmZsb3c6IGhpZGRlbjsNCiAgdHJhbnNpdGlvbjogbWF4LWhlaWdodCAwLjJzIGVhc2Utb3V0Ow0KfQ0KDQpkZXRhaWxzIHsNCiAgd2lkdGg6IDEwMCU7DQp9DQoNCmRldGFpbHMgPiBzdW1tYXJ5IHsNCiAgcGFkZGluZzogNHB4IDEycHg7DQogIHdpZHRoOiAxMDAlOw0KICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDA3Zjk5Ow0KICBib3JkZXI6IHNvbGlkOw0KICBib3JkZXItY29sb3I6IHdoaXRlOw0KICBib3JkZXItcmFkaXVzOiA1cHg7DQogIGN1cnNvcjogcG9pbnRlcjsNCiAgZm9udC1zaXplOiAxNXB4Ow0KICBjb2xvcjogd2hpdGU7DQp9DQoNCmRldGFpbHNbb3Blbl0gPiBzdW1tYXJ5IHsNCiAgYmFja2dyb3VuZC1jb2xvcjogI2ZhYTQxYTsNCn0NCg0KDQoudGl0bGUgew0KICBjb2xvcjogIzFiNTQ2MzsNCiAgZm9udC1zaXplOiAzNnB4Ow0KfQ0KDQoNCi5wZXJzb25lciB7DQogIGJveC1zaGFkb3c6IDNweCAzcHggNHB4IGJsYWNrOw0KICBiYWNrZ3JvdW5kOiAjMDA0NDU5Ow0KICBwYWRkaW5nLXJpZ2h0OiAxNXB4Ow0KICBwYWRkaW5nLWxlZnQ6IDE2cHg7DQogIHBhZGRpbmctdG9wOiAwLjFweDsNCiAgcGFkZGluZy1ib3R0b206IDFweDsNCiAgZm9udC1zaXplOiAxMXB4Ow0KICBjb2xvcjogd2hpdGU7DQogIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7DQp9DQoNCi7DuGtvbm9taSB7DQogIGJveC1zaGFkb3c6IDNweCAzcHggNHB4IGJsYWNrOw0KICBiYWNrZ3JvdW5kOiAjMDA3Rjk5Ow0KICBwYWRkaW5nLXJpZ2h0OiAxNXB4Ow0KICBwYWRkaW5nLWxlZnQ6IDE2cHg7DQogIHBhZGRpbmctdG9wOiAxcHg7DQogIHBhZGRpbmctYm90dG9tOiAwLjFweDsNCiAgZm9udC1zaXplOiAxMXB4Ow0KICBjb2xvcjogd2hpdGU7DQogIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7DQp9DQoNCi50dsOmcmfDpWVuZGUgew0KICBib3gtc2hhZG93OiAzcHggM3B4IDRweCBibGFjazsNCiAgYmFja2dyb3VuZDogI2ZhYTQxYTsNCiAgcGFkZGluZy1yaWdodDogMTVweDsNCiAgcGFkZGluZy1sZWZ0OiAxNnB4Ow0KICBwYWRkaW5nLXRvcDogMC4xcHg7DQogIHBhZGRpbmctYm90dG9tOiAxcHg7DQogIGZvbnQtc2l6ZTogMTFweDsNCiAgY29sb3I6IHdoaXRlOw0KICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOw0KfQ0KDQouY29udGFpbmVyIHsNCiAgd2lkdGg6IGluaGVyaXQ7DQp9DQoNCg0KDQpgYGANCg0KYGBge3IgeGFyaW5nYW5FeHRyYS1jbGlwYm9hcmQsIGVjaG89RkFMU0V9DQp4YXJpbmdhbkV4dHJhOjp1c2VfY2xpcGJvYXJkKCkNCmBgYA0KDQoNCjxicj4NCjxicj4NCg0KPGNlbnRlcj4NCg0KLS0tDQogDQojIFtgciB0eHQkVFUkdGl0bGVbbGFuZ3VhZ2VdYF17LnRpdGxlfQ0KIA0KLS0tDQo8L2NlbnRlcj4NCg0KPGRldGFpbHM+IDxzdW1tYXJ5PiBgciB0eHQkVFUkc3ViMVtsYW5ndWFnZV1gIDwvc3VtbWFyeT4gDQo8YnI+DQo8YnV0dG9uIGNsYXNzPSJhY2NvcmRpb24iPiBgciBwYXN0ZTAoIioqVGFiZWwgMTogKioiLCBzdGF0Z2xfbWV0YShzdGF0Z2xfdXJsKCJUVVhLUkgiLCBsYW5nID0gbGFuZ3VhZ2UpKVsxXSR0aXRsZSkgYCA8L2J1dHRvbj4gPGRpdiBjbGFzcz0icGFuZWwiPg0KYGBge3IsIGNsYXNzLnNvdXJjZT0na2xpcHB5J30NCg0KVFVYS1JIX3JhdyA8LSANCiAgc3RhdGdsX3VybCgiVFVYS1JIIiwgbGFuZyA9IGxhbmd1YWdlKSAlPiUgDQogIHN0YXRnbF9mZXRjaCgNCiAgICBtb250aCAgICAgPSBweF9hbGwoKSwNCiAgICBwb3J0ICAgICAgPSBweF9hbGwoKSwNCiAgICB0aW1lICAgICAgPSBweF90b3AoMyksDQogICAgLmNvbF9jb2RlID0gVFJVRQ0KICApICU+JSANCiAgYXNfdGliYmxlKCkNCg0KIyBTa2FsIGhhdmUgw6ZuZHJldCB0aW1lIGkgZmV0Y2ggb2cgc3lzLnRpbWUgZmlsdGVyIHRpbGJhZ2UgbsOlciBkZXIga29tbWVyIG55ZSB0YWwgZm9yIDIwMjIgb2dzw6UgaSBkZSBuw6ZzdGUgMiB0YWJlbGxlcg0KDQpUVVhLUkggPC0gDQogIFRVWEtSSF9yYXcgJT4lIA0KICAjZmlsdGVyKHRpbWUgPD0gU3lzLnRpbWUoKSAlPiUgeWVhcigpIC0gMykgJT4lIA0KICBkcm9wX25hKCkgJT4lDQogIG11dGF0ZSgNCiAgICBtb250aCA9IG1vbnRoICU+JSBmY3RfaW5vcmRlcigpLA0KICAgIHBvcnQgPSBwb3J0ICU+JSBmY3RfcmVvcmRlcih2YWx1ZSwgLmZ1biA9IHN1bSwgLm5hX3JtID0gVFJVRSwgLmRlc2MgPSBUUlVFKQ0KICApICU+JSANCiAgc3ByZWFkKG1vbnRoLCB2YWx1ZSkgJT4lIA0KICBtdXRhdGVfaWYoaXMuaW50ZWdlciwgfiByZXBsYWNlKC4sIGlzLm5hKC4pLCAwKSkNCg0KVFVYS1JIICU+JSANCiAgc2VsZWN0KC10aW1lKSAlPiUgDQogIHJlbmFtZSgiICIgPSAxKSAlPiUgDQogIHN0YXRnbF90YWJsZShyZXBsYWNlXzBzID0gVFJVRSkgJT4lIA0KICBwYWNrX3Jvd3MoaW5kZXggPSBUVVhLUkhbWyJ0aW1lIl1dICU+JSB0YWJsZSgpKSAlPiUgDQogIHJvd19zcGVjKDEsIGJvbGQgPSBUUlVFKSB8PiANCiAgY29sdW1uX3NwZWMoMiwgYm9sZCA9IFQpDQoNCmBgYA0KPGJyPg0KWyFbXShgciBsb2dvYCl7d2lkdGg9NDB9YHIgcGFzdGUoc291cmNlLCAiVFVYS1JIIilgXShgciBwYXN0ZTAoImh0dHBzOi8vYmFuay5zdGF0LmdsOjQ0My9zcS9iNGU3ZDRmYi1kOTI3LTQxYTEtYTIzNy0wNWVmOTg1OGEwYzkiLCBvcHRpb24pYCl7dGFyZ2V0PSJfYmxhbmsifQ0KPC9kaXY+IA0KDQoNCg0KPGJ1dHRvbiBjbGFzcz0iYWNjb3JkaW9uIj4gYHIgcGFzdGUwKCIqKlRhYmVsIDI6ICoqIiwgc3RhdGdsX21ldGEoc3RhdGdsX3VybCgiVFVYS1JQIiwgbGFuZyA9IGxhbmd1YWdlKSlbMV0kdGl0bGUpIGAgPC9idXR0b24+IDxkaXYgY2xhc3M9InBhbmVsIj4NCg0KYGBge3IgVFVYS1JQfQ0KDQpUVVhLUkxfcmF3IDwtIA0KICBzdGF0Z2xfdXJsKCJUVVhLUlAiLCBsYW5nID0gbGFuZ3VhZ2UpICU+JSANCiAgc3RhdGdsX2ZldGNoKA0KICAgIG1vbnRoICAgICA9IHB4X2FsbCgpLA0KICAgIHRpbWUgICAgICA9IHB4X3RvcCg1KSwNCiAgICAuY29sX2NvZGUgPSBUUlVFDQogICkgJT4lIA0KICBhc190aWJibGUoKQ0KDQpUVVhLUkxfcmF3ICU+JSANCiAgbXV0YXRlKA0KICAgIG1vbnRoID0gbW9udGggJT4lIGZjdF9pbm9yZGVyKCksDQogICAgdGltZSA9IHRpbWUgJT4lIGZjdF9pbm9yZGVyKCkgJT4lIGZjdF9yZXYoKQ0KICApICU+JSANCiAgZHJvcF9uYSgpICU+JSANCiAgYXJyYW5nZSh0aW1lLCBtb250aCkgJT4lIA0KICBzcHJlYWQodGltZSwgdmFsdWUpICU+JSANCiAgbXV0YXRlX2lmKGlzLmludGVnZXIsIH4gcmVwbGFjZSguLCBpcy5uYSguKSwgMCkpICU+JSANCiAgcmVuYW1lKCIgIiA9IDEpICU+JSANCiAgc3RhdGdsX3RhYmxlKHJlcGxhY2VfMHMgPSBUUlVFKSAlPiUgDQogIHJvd19zcGVjKDEsIGJvbGQgPSBUUlVFKQ0KDQpgYGANCjxicj4NClshW10oYHIgbG9nb2Ape3dpZHRoPTQwfWByIHBhc3RlKHNvdXJjZSwgIlRVWEtSUCIpYF0oYHIgcGFzdGUwKCJodHRwczovL2Jhbmsuc3RhdC5nbDo0NDMvc3EvMDdjYjExNDUtM2QwNC00YzAwLWI1OWUtYzA0ODU4NTlhODU5Iiwgb3B0aW9uKWApe3RhcmdldD0iX2JsYW5rIn0NCjwvZGl2PiANCjwvZGV0YWlscz4NCg0KPGRldGFpbHM+IDxzdW1tYXJ5PiBgciB0eHQkVFUkc3ViMltsYW5ndWFnZV1gIDwvc3VtbWFyeT4NCjxicj4NCjxidXR0b24gY2xhc3M9ImFjY29yZGlvbiI+IGByIHBhc3RlMCgiKipUYWJlbCAzOiAqKiIsIHN0YXRnbF9tZXRhKHN0YXRnbF91cmwoIlRVWFVQQVgiLCBsYW5nID0gbGFuZ3VhZ2UpKVsxXSR0aXRsZSkgYCA8L2J1dHRvbj4gPGRpdiBjbGFzcz0icGFuZWwiPg0KDQpgYGB7ciBUVVhVUEFYfQ0KDQpUVVhVUEFYX3JhdyA8LSANCiAgc3RhdGdsX3VybCgiVFVYVVBBWCIsIGxhbmcgPSBsYW5ndWFnZSkgJT4lIA0KICBzdGF0Z2xfZmV0Y2goDQogICAgdGltZSAgICAgID0gcHhfdG9wKDIpLA0KICAgIG1vbnRoICAgICA9IHB4X2FsbCgpLA0KICAgIGFpcnBvcnQgICA9IHB4X2FsbCgpLA0KICAgIC5jb2xfY29kZSA9IFRSVUUNCiAgKSAlPiUgDQogIGFzX3RpYmJsZSgpDQoNClRVWFVQQVggPC0gDQogIFRVWFVQQVhfcmF3ICU+JSANCiAgZmlsdGVyKHRpbWUgPCBTeXMudGltZSgpICU+JSB5ZWFyKCkpICU+JSANCiAgbXV0YXRlKA0KICAgIG1vbnRoID0gbW9udGggJT4lIGZjdF9pbm9yZGVyKCksDQogICAgYWlycG9ydCA9IGFpcnBvcnQgJT4lIGZjdF9yZW9yZGVyKHZhbHVlLCAuZnVuID0gc3VtLCAubmFfcm0gPSBUUlVFLCAuZGVzYyA9IFRSVUUpDQogICAgKSAlPiUgDQogIHNwcmVhZChhaXJwb3J0LCB2YWx1ZSkgJT4lIA0KICBtdXRhdGVfaWYoaXMuaW50ZWdlciwgfiByZXBsYWNlKC4sIGlzLm5hKC4pLCAwKSkNCg0KDQpUVVhVUEFYICU+JSANCiAgc2VsZWN0KC10aW1lKSAlPiUgDQogIHJlbmFtZSgiICIgPSAxKSAlPiUgDQogIHN0YXRnbF90YWJsZShyZXBsYWNlXzBzID0gVFJVRSkgJT4lIA0KICBwYWNrX3Jvd3MoaW5kZXggPSBUVVhVUEFYW1sidGltZSJdXSAlPiUgdGFibGUoKSkgJT4lIA0KICByb3dfc3BlYygxLCBib2xkID0gVCkgfD4gDQogIGNvbHVtbl9zcGVjKDIsIGJvbGQgPSBUKQ0KDQpgYGANCjxicj4NClshW10oYHIgbG9nb2Ape3dpZHRoPTQwfWByIHBhc3RlKHNvdXJjZSwgIlRVWFVQQVgiKWBdKGByIHBhc3RlMCgiaHR0cHM6Ly9iYW5rLnN0YXQuZ2w6NDQzL3NxLzBhYjE0ZDdkLTNjZDEtNDZiZC1hNmZiLWVjOGNjYWI4ZDY3YiIsIG9wdGlvbilgKXt0YXJnZXQ9Il9ibGFuayJ9DQo8L2Rpdj4gDQo8L2RldGFpbHM+DQoNCjxkZXRhaWxzPiA8c3VtbWFyeT4gYHIgdHh0JFRVJHN1YjNbbGFuZ3VhZ2VdYCA8L3N1bW1hcnk+IA0KPGJyPg0KPGJ1dHRvbiBjbGFzcz0iYWNjb3JkaW9uIj4gYHIgcGFzdGUwKCIqKlRhYmVsIDQ6ICoqIiwgc3RhdGdsX21ldGEoc3RhdGdsX3VybCgiVFVYS0FQIiwgbGFuZyA9IGxhbmd1YWdlKSlbMV0kdGl0bGUpIGAgPC9idXR0b24+IDxkaXYgY2xhc3M9InBhbmVsIj4NCg0KYGBge3IgVFVYS0FQfQ0KDQpUVVhLQVBfcmF3IDwtIA0KICBzdGF0Z2xfdXJsKCJUVVhLQVAiLCBsYW5nID0gbGFuZ3VhZ2UpICU+JSANCiAgc3RhdGdsX2ZldGNoKA0KICAgIHVuaXQgICAgICA9IGMoMiksDQogICAgbW9udGggICAgID0gcHhfYWxsKCksDQogICAgcmVnaW9uICAgID0gcHhfYWxsKCksDQogICAgdGltZSAgICAgID0gcHhfdG9wKDIpLA0KICAgIC5jb2xfY29kZSA9IFRSVUUNCiAgKSAlPiUgDQogIGFzX3RpYmJsZSgpDQoNCg0KVFVYS0FQIDwtIA0KICBUVVhLQVBfcmF3ICU+JSANCiAgZmlsdGVyKHRpbWUgPD0gU3lzLnRpbWUoKSAlPiUgeWVhcigpIC0xKSAlPiUgDQogIG11dGF0ZSgNCiAgICBtb250aCA9IG1vbnRoICU+JSBmY3RfaW5vcmRlcigpLA0KICAgIHJlZ2lvbiA9IHJlZ2lvbiAlPiUgZmN0X2lub3JkZXIoKQ0KICApICU+JSANCiAgc3ByZWFkKG1vbnRoLCB2YWx1ZSkgJT4lIA0KICB1bml0ZShjb21iaSwgdW5pdCwgdGltZSwgc2VwID0gIiwgIikNCg0KVFVYS0FQICU+JSANCiAgc2VsZWN0KC1jb21iaSkgJT4lIA0KICByZW5hbWUoIiAiID0gMSkgJT4lIA0KICBzdGF0Z2xfdGFibGUoKSAlPiUgDQogIHBhY2tfcm93cyhpbmRleCA9IFRVWEtBUFtbImNvbWJpIl1dICU+JSB0YWJsZSgpKSAlPiUgDQogIHJvd19zcGVjKDEsIGJvbGQgPSBUKSB8PiANCiAgY29sdW1uX3NwZWMoMiwgYm9sZCA9IFQpDQoNCmBgYA0KPGJyPg0KWyFbXShgciBsb2dvYCl7d2lkdGg9NDB9YHIgcGFzdGUoc291cmNlLCAiVFVYS0FQIilgXShgciBwYXN0ZTAoImh0dHBzOi8vYmFuay5zdGF0LmdsOjQ0My9zcS80ODhhYWNmYi03OWU5LTQ1NmQtODg4OS1kODIwNmE0ODRjYmQiLCBvcHRpb24pYCl7dGFyZ2V0PSJfYmxhbmsifQ0KPC9kaXY+IA0KPC9kZXRhaWxzPiANCg0KPGRldGFpbHM+IDxzdW1tYXJ5PiBgciB0eHQkVFUkc3ViNFtsYW5ndWFnZV1gIDwvc3VtbWFyeT4NCjxicj4NCjxidXR0b24gY2xhc3M9ImFjY29yZGlvbiI+IGByIHBhc3RlMCgiKipUYWJlbCA1OiAqKiIsIHN0YXRnbF9tZXRhKHN0YXRnbF91cmwoIlRVWDAxIiwgbGFuZyA9IGxhbmd1YWdlKSlbMV0kdGl0bGUpIGAgPC9idXR0b24+IDxkaXYgY2xhc3M9InBhbmVsIj4NCg0KYGBge3IgVFVYMDF9DQoNClRVWDAxX3JhdyA8LSANCiAgc3RhdGdsX3VybCgiVFVYMDEiLCBsYW5nID0gbGFuZ3VhZ2UpICU+JQ0KICBzdGF0Z2xfZmV0Y2goDQogICAgZGlzdHJpY3QgID0gcHhfYWxsKCksDQogICAgdGltZSAgICAgID0gcHhfdG9wKDUpLA0KICAgIC5jb2xfY29kZSA9IFRSVUUNCiAgKSAlPiUgDQogIGFzX3RpYmJsZSgpDQoNClRVWDAxX3JhdyAlPiUgDQogIGFycmFuZ2UoZGVzYyh0aW1lKSkgJT4lIA0KICBtdXRhdGUodGltZSA9IHRpbWUgJT4lIGZjdF9pbm9yZGVyKCkpICU+JSANCiAgc3ByZWFkKHRpbWUsIHZhbHVlKSAlPiUgDQogIGFycmFuZ2UoZGVzYyhgMjAxOWApKSAlPiUgDQogIHJlbmFtZSgiICIgPSAxKSAlPiUgDQogIHN0YXRnbF90YWJsZSgpICU+JSANCiAgcm93X3NwZWMoMSwgYm9sZCA9IFRSVUUpDQoNCmBgYA0KPGJyPg0KWyFbXShgciBsb2dvYCl7d2lkdGg9NDB9YHIgcGFzdGUoc291cmNlLCAiVFVYMDEiKWBdKGByIHBhc3RlMCgiaHR0cHM6Ly9iYW5rLnN0YXQuZ2w6NDQzL3NxL2JmZThmOWRlLWFlMTgtNGY1Mi1iYzdiLWQ0ODA5MTMwMTk0MSIsIG9wdGlvbilgKXt0YXJnZXQ9Il9ibGFuayJ9DQo8L2Rpdj4gDQo8L2RldGFpbHM+DQoNCjxociBzdHlsZT0iYm9yZGVyOjFweCByaWRnZSBsaWdodGdyYXkiPiA8L2hyPg0KPGNlbnRlcj4gDQo8c3BhbiBzdHlsZT0nY29sb3I6I0QzRDNEMzsgZm9udC1zaXplOjkwJTsnPiBgciBwYXN0ZSh0eHQkdXBkYXRlW2xhbmd1YWdlXSwgZm9ybWF0KFN5cy5EYXRlKCksICIlZC4gJUIgJVkiKSlgIDwvc3Bhbj4gDQo8L2NlbnRlcj4NCg0KDQo8c2NyaXB0Pg0KdmFyIGFjYyA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoImFjY29yZGlvbiIpOw0KdmFyIGk7DQoNCmZvciAoaSA9IDA7IGkgPCBhY2MubGVuZ3RoOyBpKyspIHsNCiAgYWNjW2ldLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgZnVuY3Rpb24oKSB7DQogICAgdGhpcy5jbGFzc0xpc3QudG9nZ2xlKCJhY3RpdmUiKTsNCiAgICB2YXIgcGFuZWwgPSB0aGlzLm5leHRFbGVtZW50U2libGluZzsNCiAgICBpZiAocGFuZWwuc3R5bGUubWF4SGVpZ2h0KSB7DQogICAgICBwYW5lbC5zdHlsZS5tYXhIZWlnaHQgPSBudWxsOw0KICAgIH0gZWxzZSB7DQogICAgICBwYW5lbC5zdHlsZS5tYXhIZWlnaHQgPSBwYW5lbC5zY3JvbGxIZWlnaHQgKyAicHgiOw0KICAgIH0gDQogIH0pOw0KfQ0KPC9zY3JpcHQ+DQoNCg0K