Turisme
Krydstogter
TUXKRH_raw <-
statgl_url("TUXKRH", lang = language) %>%
statgl_fetch(
month = px_all(),
port = px_all(),
time = px_top(),
.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
|
Oktober
|
2024
|
I alt
|
181.406
|
152
|
420
|
4.607
|
32.478
|
107.604
|
35.577
|
568
|
Qaqortoq
|
46.630
|
0
|
104
|
0
|
1.283
|
36.744
|
8.499
|
0
|
Nuuk
|
37.242
|
0
|
0
|
727
|
17.546
|
12.678
|
6.100
|
191
|
Nanortalik
|
28.937
|
0
|
0
|
0
|
2.354
|
20.310
|
6.273
|
0
|
Sisimiut
|
14.842
|
0
|
0
|
692
|
2.306
|
8.964
|
2.880
|
0
|
Ilulissat
|
14.165
|
0
|
0
|
388
|
2.326
|
8.558
|
2.893
|
0
|
Kangerlussuaq
|
7.109
|
0
|
0
|
0
|
1.057
|
4.067
|
1.985
|
0
|
Ittoqqortoormiit
|
6.633
|
0
|
196
|
133
|
1.025
|
2.902
|
2.186
|
191
|
Qeqertarsuaq
|
5.254
|
0
|
0
|
12
|
806
|
3.647
|
789
|
0
|
Paamiut
|
5.196
|
0
|
0
|
1.931
|
1.371
|
1.894
|
0
|
0
|
Narsaq
|
3.299
|
0
|
0
|
11
|
124
|
1.933
|
1.231
|
0
|
Uummannaq
|
3.150
|
0
|
0
|
0
|
725
|
1.877
|
548
|
0
|
Narsarsuaq
|
2.624
|
0
|
0
|
11
|
884
|
1.423
|
131
|
175
|
Maniitsoq
|
2.028
|
0
|
0
|
691
|
429
|
392
|
516
|
0
|
Upernavik
|
1.207
|
0
|
0
|
0
|
216
|
533
|
458
|
0
|
Tasiilaq
|
934
|
152
|
120
|
0
|
0
|
211
|
440
|
11
|
Qaanaaq
|
652
|
0
|
0
|
0
|
0
|
203
|
449
|
0
|
Aasiaat
|
516
|
0
|
0
|
0
|
19
|
497
|
0
|
0
|
Qasigiannguit
|
497
|
0
|
0
|
0
|
0
|
497
|
0
|
0
|
Qassiarsuk
|
133
|
0
|
0
|
0
|
0
|
133
|
0
|
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)
|
2024
|
2023
|
2022
|
Total
|
95.185
|
76.477
|
43.999
|
April
|
152
|
19
|
9
|
Maj
|
420
|
557
|
252
|
Juni
|
3.160
|
4.066
|
1.403
|
Juli
|
23.043
|
21.627
|
12.496
|
August
|
52.606
|
38.469
|
22.012
|
September
|
15.427
|
11.739
|
7.827
|
Oktober
|
377
|
0
|
0
|
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
|
2024
|
I alt
|
96.817
|
69.447
|
11.306
|
5.997
|
5.359
|
3.816
|
892
|
Januar
|
4.256
|
3.849
|
265
|
74
|
40
|
0
|
28
|
Februar
|
4.254
|
3.819
|
298
|
0
|
27
|
67
|
43
|
Marts
|
7.042
|
5.700
|
516
|
193
|
397
|
166
|
70
|
April
|
6.803
|
5.851
|
298
|
278
|
297
|
17
|
62
|
Maj
|
6.858
|
5.592
|
465
|
496
|
229
|
0
|
76
|
Juni
|
9.867
|
7.376
|
672
|
719
|
624
|
404
|
72
|
Juli
|
16.037
|
11.073
|
871
|
1.531
|
1.256
|
1.212
|
94
|
August
|
14.665
|
9.400
|
426
|
1.691
|
1.564
|
1.438
|
146
|
September
|
9.481
|
7.044
|
128
|
954
|
682
|
512
|
161
|
Oktober
|
7.056
|
6.383
|
457
|
0
|
162
|
0
|
54
|
November
|
4.616
|
3.360
|
1.146
|
0
|
61
|
0
|
49
|
December
|
5.882
|
0
|
5.764
|
61
|
20
|
0
|
37
|
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, 2024
|
I alt
|
46,2
|
28,1
|
38,0
|
50,7
|
46,0
|
45,5
|
49,5
|
59,6
|
64,8
|
56,1
|
48,6
|
37,0
|
24,4
|
Avannaata Kommunia og Kommune Qeqertalik
|
47,7
|
21,6
|
32,2
|
57,2
|
37,9
|
48,3
|
44,6
|
77,7
|
83,5
|
58,1
|
46,5
|
32,5
|
20,2
|
Ilulissat (*)
|
48,6
|
20,3
|
33,9
|
60,5
|
38,9
|
50,9
|
43,2
|
79,7
|
82,4
|
59,5
|
48,6
|
32,3
|
21,1
|
Qeqqata Kommunia
|
45,9
|
19,5
|
41,5
|
52,3
|
48,0
|
51,4
|
61,3
|
58,9
|
66,9
|
58,2
|
49,9
|
29,9
|
11,7
|
Kommune Kujalleq
|
36,4
|
36,0
|
26,5
|
27,4
|
32,5
|
26,2
|
43,1
|
54,5
|
51,4
|
39,7
|
33,5
|
24,6
|
30,3
|
Kommuneqarfik Sermersooq Vest
|
51,7
|
39,1
|
52,0
|
56,7
|
58,3
|
54,8
|
51,9
|
43,4
|
52,4
|
63,0
|
58,7
|
55,1
|
35,8
|
Kommuneqarfik Sermersooq Øst
|
42,8
|
12,5
|
24,0
|
51,4
|
50,9
|
35,4
|
49,2
|
70,6
|
71,7
|
57,9
|
44,9
|
22,7
|
12,9
|
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: 22. juni
2025
LS0tDQpwYXJhbXM6DQogIGxhbmc6ICJkYSINCm91dHB1dDoNCiAgc3RhdGdsOjpzdGF0Z2xfcmVwb3J0Og0KICAgIGNvZGVfZG93bmxvYWQ6IHRydWUNCiAgICBjb2RlX2ZvbGRpbmc6IGhpZGUNCmVkaXRvcl9vcHRpb25zOiANCiAgY2h1bmtfb3V0cHV0X3R5cGU6IGNvbnNvbGUNCi0tLQ0KDQpgYGB7ciBzZXR1cCwgaW5jbHVkZT1GQUxTRX0NCg0Ka25pdHI6Om9wdHNfY2h1bmskc2V0KA0KCWVjaG8gICAgPSBUUlVFLA0KCW1lc3NhZ2UgPSBUUlVFLA0KCXdhcm5pbmcgPSBGQUxTRQ0KKQ0KDQpsaWJyYXJ5KCJ0aWR5dmVyc2UiKQ0KbGlicmFyeSgic3RhdGdsIikNCmxpYnJhcnkoImthYmxlRXh0cmEiKQ0KbGlicmFyeSgibHVicmlkYXRlIikNCmxpYnJhcnkoInlhbWwiKQ0KDQpsYW5ndWFnZSAgPC0gcGFyYW1zJGxhbmcNCm9wdGlvbiAgICA8LSBwYXN0ZTAoIj9sYW5nPSIsIGxhbmd1YWdlLCAiJnNlbGVjdCIpDQpsb2dvICAgICAgPC0gcGFzdGUwKGdldHdkKCksIi9hZGQvbG9nby5naWYiKQ0KdHh0ICAgICAgIDwtIHJlYWRfeWFtbChwYXN0ZTAoZ2V0d2QoKSwgIi9hZGQvdHh0LnltbCIpLCBmaWxlRW5jb2RpbmcgPSAiSVNPLTg4NTktMSIpDQpzb3VyY2UgICAgPC0gdHh0JHNvdXJjZVtsYW5ndWFnZV0gJT4lIHVubGlzdCgpDQpgYGANCg0KYGBge2NzcywgZWNobyA9IEZBTFNFfQ0KDQouYWNjb3JkaW9uIHsNCiAgYmFja2dyb3VuZC1jb2xvcjogIzkxOTkwMDsNCiAgY29sb3I6IHdoaXRlOw0KICBjdXJzb3I6IHBvaW50ZXI7DQogIHBhZGRpbmc6IDE4cHg7DQogIHdpZHRoOiAxMDAlOw0KICBib3JkZXI6IG5vbmU7DQogIGJvcmRlci1yYWRpdXM6IDVweDsNCiAgdGV4dC1hbGlnbjogbGVmdDsNCiAgb3V0bGluZTogbm9uZTsNCiAgZm9udC1zaXplOiAxNXB4Ow0KICB0cmFuc2l0aW9uOiAwLjRzOw0KfQ0KDQouYWN0aXZlLCAuYWNjb3JkaW9uOmhvdmVyIHsNCiAgYmFja2dyb3VuZC1jb2xvcjogI2Y5NzI0MjsNCn0NCg0KLmFjY29yZGlvbjphZnRlciB7DQogIGNvbnRlbnQ6ICdcMDAyQic7DQogIGNvbG9yOiAjNzc3Ow0KICBmb250LXdlaWdodDogYm9sZDsNCiAgZmxvYXQ6IHJpZ2h0Ow0KICBtYXJnaW4tbGVmdDogNXB4Ow0KfQ0KDQouYWN0aXZlOmFmdGVyIHsNCiAgY29udGVudDogIlwyMjEyIjsNCn0NCg0KLnBhbmVsIHsNCiAgcGFkZGluZzogMHB4IDVweCAwcHggNXB4Ow0KICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTsNCiAgbWF4LWhlaWdodDogMDsNCiAgb3ZlcmZsb3c6IGhpZGRlbjsNCiAgdHJhbnNpdGlvbjogbWF4LWhlaWdodCAwLjJzIGVhc2Utb3V0Ow0KfQ0KDQpkZXRhaWxzIHsNCiAgd2lkdGg6IDEwMCU7DQp9DQoNCmRldGFpbHMgPiBzdW1tYXJ5IHsNCiAgcGFkZGluZzogNHB4IDEycHg7DQogIHdpZHRoOiAxMDAlOw0KICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDA3Zjk5Ow0KICBib3JkZXI6IHNvbGlkOw0KICBib3JkZXItY29sb3I6IHdoaXRlOw0KICBib3JkZXItcmFkaXVzOiA1cHg7DQogIGN1cnNvcjogcG9pbnRlcjsNCiAgZm9udC1zaXplOiAxNXB4Ow0KICBjb2xvcjogd2hpdGU7DQp9DQoNCmRldGFpbHNbb3Blbl0gPiBzdW1tYXJ5IHsNCiAgYmFja2dyb3VuZC1jb2xvcjogI2ZhYTQxYTsNCn0NCg0KDQoudGl0bGUgew0KICBjb2xvcjogIzFiNTQ2MzsNCiAgZm9udC1zaXplOiAzNnB4Ow0KfQ0KDQoNCi5wZXJzb25lciB7DQogIGJveC1zaGFkb3c6IDNweCAzcHggNHB4IGJsYWNrOw0KICBiYWNrZ3JvdW5kOiAjMDA0NDU5Ow0KICBwYWRkaW5nLXJpZ2h0OiAxNXB4Ow0KICBwYWRkaW5nLWxlZnQ6IDE2cHg7DQogIHBhZGRpbmctdG9wOiAwLjFweDsNCiAgcGFkZGluZy1ib3R0b206IDFweDsNCiAgZm9udC1zaXplOiAxMXB4Ow0KICBjb2xvcjogd2hpdGU7DQogIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7DQp9DQoNCi7DuGtvbm9taSB7DQogIGJveC1zaGFkb3c6IDNweCAzcHggNHB4IGJsYWNrOw0KICBiYWNrZ3JvdW5kOiAjMDA3Rjk5Ow0KICBwYWRkaW5nLXJpZ2h0OiAxNXB4Ow0KICBwYWRkaW5nLWxlZnQ6IDE2cHg7DQogIHBhZGRpbmctdG9wOiAxcHg7DQogIHBhZGRpbmctYm90dG9tOiAwLjFweDsNCiAgZm9udC1zaXplOiAxMXB4Ow0KICBjb2xvcjogd2hpdGU7DQogIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7DQp9DQoNCi50dsOmcmfDpWVuZGUgew0KICBib3gtc2hhZG93OiAzcHggM3B4IDRweCBibGFjazsNCiAgYmFja2dyb3VuZDogI2ZhYTQxYTsNCiAgcGFkZGluZy1yaWdodDogMTVweDsNCiAgcGFkZGluZy1sZWZ0OiAxNnB4Ow0KICBwYWRkaW5nLXRvcDogMC4xcHg7DQogIHBhZGRpbmctYm90dG9tOiAxcHg7DQogIGZvbnQtc2l6ZTogMTFweDsNCiAgY29sb3I6IHdoaXRlOw0KICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOw0KfQ0KDQouY29udGFpbmVyIHsNCiAgd2lkdGg6IGluaGVyaXQ7DQp9DQoNCg0KDQpgYGANCg0KYGBge3IgeGFyaW5nYW5FeHRyYS1jbGlwYm9hcmQsIGVjaG89RkFMU0V9DQp4YXJpbmdhbkV4dHJhOjp1c2VfY2xpcGJvYXJkKCkNCmBgYA0KDQoNCjxicj4NCjxicj4NCg0KPGNlbnRlcj4NCg0KLS0tDQogDQojIFtgciB0eHQkVFUkdGl0bGVbbGFuZ3VhZ2VdYF17LnRpdGxlfQ0KIA0KLS0tDQo8L2NlbnRlcj4NCg0KPGRldGFpbHM+IDxzdW1tYXJ5PiBgciB0eHQkVFUkc3ViMVtsYW5ndWFnZV1gIDwvc3VtbWFyeT4gDQo8YnI+DQo8YnV0dG9uIGNsYXNzPSJhY2NvcmRpb24iPiBgciBwYXN0ZTAoIioqVGFiZWwgMTogKioiLCBzdGF0Z2xfbWV0YShzdGF0Z2xfdXJsKCJUVVhLUkgiLCBsYW5nID0gbGFuZ3VhZ2UpKVsxXSR0aXRsZSkgYCA8L2J1dHRvbj4gPGRpdiBjbGFzcz0icGFuZWwiPg0KYGBge3IsIGNsYXNzLnNvdXJjZT0na2xpcHB5J30NCg0KVFVYS1JIX3JhdyA8LSANCiAgc3RhdGdsX3VybCgiVFVYS1JIIiwgbGFuZyA9IGxhbmd1YWdlKSAlPiUgDQogIHN0YXRnbF9mZXRjaCgNCiAgICBtb250aCAgICAgPSBweF9hbGwoKSwNCiAgICBwb3J0ICAgICAgPSBweF9hbGwoKSwNCiAgICB0aW1lICAgICAgPSBweF90b3AoKSwNCiAgICAuY29sX2NvZGUgPSBUUlVFDQogICkgJT4lIA0KICBhc190aWJibGUoKQ0KDQojIFNrYWwgaGF2ZSDDpm5kcmV0IHRpbWUgaSBmZXRjaCBvZyBzeXMudGltZSBmaWx0ZXIgdGlsYmFnZSBuw6VyIGRlciBrb21tZXIgbnllIHRhbCBmb3IgMjAyMiBvZ3PDpSBpIGRlIG7DpnN0ZSAyIHRhYmVsbGVyDQoNClRVWEtSSCA8LSANCiAgVFVYS1JIX3JhdyAlPiUgDQogICNmaWx0ZXIodGltZSA8PSBTeXMudGltZSgpICU+JSB5ZWFyKCkgLSAzKSAlPiUgDQogIGRyb3BfbmEoKSAlPiUNCiAgbXV0YXRlKA0KICAgIG1vbnRoID0gbW9udGggJT4lIGZjdF9pbm9yZGVyKCksDQogICAgcG9ydCA9IHBvcnQgJT4lIGZjdF9yZW9yZGVyKHZhbHVlLCAuZnVuID0gc3VtLCAubmFfcm0gPSBUUlVFLCAuZGVzYyA9IFRSVUUpDQogICkgJT4lIA0KICBzcHJlYWQobW9udGgsIHZhbHVlKSAlPiUgDQogIG11dGF0ZV9pZihpcy5pbnRlZ2VyLCB+IHJlcGxhY2UoLiwgaXMubmEoLiksIDApKQ0KDQpUVVhLUkggJT4lIA0KICBzZWxlY3QoLXRpbWUpICU+JSANCiAgcmVuYW1lKCIgIiA9IDEpICU+JSANCiAgc3RhdGdsX3RhYmxlKHJlcGxhY2VfMHMgPSBUUlVFKSAlPiUgDQogIHBhY2tfcm93cyhpbmRleCA9IFRVWEtSSFtbInRpbWUiXV0gJT4lIHRhYmxlKCkpICU+JSANCiAgcm93X3NwZWMoMSwgYm9sZCA9IFRSVUUpIHw+IA0KICBjb2x1bW5fc3BlYygyLCBib2xkID0gVCkNCg0KYGBgDQo8YnI+DQpbIVtdKGByIGxvZ29gKXt3aWR0aD00MH1gciBwYXN0ZShzb3VyY2UsICJUVVhLUkgiKWBdKGByIHBhc3RlMCgiaHR0cHM6Ly9iYW5rLnN0YXQuZ2w6NDQzL3NxL2I0ZTdkNGZiLWQ5MjctNDFhMS1hMjM3LTA1ZWY5ODU4YTBjOSIsIG9wdGlvbilgKXt0YXJnZXQ9Il9ibGFuayJ9DQo8L2Rpdj4gDQoNCg0KDQo8YnV0dG9uIGNsYXNzPSJhY2NvcmRpb24iPiBgciBwYXN0ZTAoIioqVGFiZWwgMjogKioiLCBzdGF0Z2xfbWV0YShzdGF0Z2xfdXJsKCJUVVhLUlAiLCBsYW5nID0gbGFuZ3VhZ2UpKVsxXSR0aXRsZSkgYCA8L2J1dHRvbj4gPGRpdiBjbGFzcz0icGFuZWwiPg0KDQpgYGB7ciBUVVhLUlB9DQoNClRVWEtSTF9yYXcgPC0gDQogIHN0YXRnbF91cmwoIlRVWEtSUCIsIGxhbmcgPSBsYW5ndWFnZSkgJT4lIA0KICBzdGF0Z2xfZmV0Y2goDQogICAgbW9udGggICAgID0gcHhfYWxsKCksDQogICAgdGltZSAgICAgID0gcHhfdG9wKDUpLA0KICAgIC5jb2xfY29kZSA9IFRSVUUNCiAgKSAlPiUgDQogIGFzX3RpYmJsZSgpDQoNClRVWEtSTF9yYXcgJT4lIA0KICBtdXRhdGUoDQogICAgbW9udGggPSBtb250aCAlPiUgZmN0X2lub3JkZXIoKSwNCiAgICB0aW1lID0gdGltZSAlPiUgZmN0X2lub3JkZXIoKSAlPiUgZmN0X3JldigpDQogICkgJT4lIA0KICBkcm9wX25hKCkgJT4lIA0KICBhcnJhbmdlKHRpbWUsIG1vbnRoKSAlPiUgDQogIHNwcmVhZCh0aW1lLCB2YWx1ZSkgJT4lIA0KICBtdXRhdGVfaWYoaXMuaW50ZWdlciwgfiByZXBsYWNlKC4sIGlzLm5hKC4pLCAwKSkgJT4lIA0KICByZW5hbWUoIiAiID0gMSkgJT4lIA0KICBzdGF0Z2xfdGFibGUocmVwbGFjZV8wcyA9IFRSVUUpICU+JSANCiAgcm93X3NwZWMoMSwgYm9sZCA9IFRSVUUpDQoNCmBgYA0KPGJyPg0KWyFbXShgciBsb2dvYCl7d2lkdGg9NDB9YHIgcGFzdGUoc291cmNlLCAiVFVYS1JQIilgXShgciBwYXN0ZTAoImh0dHBzOi8vYmFuay5zdGF0LmdsOjQ0My9zcS8wN2NiMTE0NS0zZDA0LTRjMDAtYjU5ZS1jMDQ4NTg1OWE4NTkiLCBvcHRpb24pYCl7dGFyZ2V0PSJfYmxhbmsifQ0KPC9kaXY+IA0KPC9kZXRhaWxzPg0KDQo8ZGV0YWlscz4gPHN1bW1hcnk+IGByIHR4dCRUVSRzdWIyW2xhbmd1YWdlXWAgPC9zdW1tYXJ5Pg0KPGJyPg0KPGJ1dHRvbiBjbGFzcz0iYWNjb3JkaW9uIj4gYHIgcGFzdGUwKCIqKlRhYmVsIDM6ICoqIiwgc3RhdGdsX21ldGEoc3RhdGdsX3VybCgiVFVYVVBBWCIsIGxhbmcgPSBsYW5ndWFnZSkpWzFdJHRpdGxlKSBgIDwvYnV0dG9uPiA8ZGl2IGNsYXNzPSJwYW5lbCI+DQoNCmBgYHtyIFRVWFVQQVh9DQoNClRVWFVQQVhfcmF3IDwtIA0KICBzdGF0Z2xfdXJsKCJUVVhVUEFYIiwgbGFuZyA9IGxhbmd1YWdlKSAlPiUgDQogIHN0YXRnbF9mZXRjaCgNCiAgICB0aW1lICAgICAgPSBweF90b3AoMiksDQogICAgbW9udGggICAgID0gcHhfYWxsKCksDQogICAgYWlycG9ydCAgID0gcHhfYWxsKCksDQogICAgLmNvbF9jb2RlID0gVFJVRQ0KICApICU+JSANCiAgYXNfdGliYmxlKCkNCg0KVFVYVVBBWCA8LSANCiAgVFVYVVBBWF9yYXcgJT4lIA0KICBmaWx0ZXIodGltZSA8IFN5cy50aW1lKCkgJT4lIHllYXIoKSkgJT4lIA0KICBtdXRhdGUoDQogICAgbW9udGggPSBtb250aCAlPiUgZmN0X2lub3JkZXIoKSwNCiAgICBhaXJwb3J0ID0gYWlycG9ydCAlPiUgZmN0X3Jlb3JkZXIodmFsdWUsIC5mdW4gPSBzdW0sIC5uYV9ybSA9IFRSVUUsIC5kZXNjID0gVFJVRSkNCiAgICApICU+JSANCiAgc3ByZWFkKGFpcnBvcnQsIHZhbHVlKSAlPiUgDQogIG11dGF0ZV9pZihpcy5pbnRlZ2VyLCB+IHJlcGxhY2UoLiwgaXMubmEoLiksIDApKQ0KDQoNClRVWFVQQVggJT4lIA0KICBzZWxlY3QoLXRpbWUpICU+JSANCiAgcmVuYW1lKCIgIiA9IDEpICU+JSANCiAgc3RhdGdsX3RhYmxlKHJlcGxhY2VfMHMgPSBUUlVFKSAlPiUgDQogIHBhY2tfcm93cyhpbmRleCA9IFRVWFVQQVhbWyJ0aW1lIl1dICU+JSB0YWJsZSgpKSAlPiUgDQogIHJvd19zcGVjKDEsIGJvbGQgPSBUKSB8PiANCiAgY29sdW1uX3NwZWMoMiwgYm9sZCA9IFQpDQoNCmBgYA0KPGJyPg0KWyFbXShgciBsb2dvYCl7d2lkdGg9NDB9YHIgcGFzdGUoc291cmNlLCAiVFVYVVBBWCIpYF0oYHIgcGFzdGUwKCJodHRwczovL2Jhbmsuc3RhdC5nbDo0NDMvc3EvMGFiMTRkN2QtM2NkMS00NmJkLWE2ZmItZWM4Y2NhYjhkNjdiIiwgb3B0aW9uKWApe3RhcmdldD0iX2JsYW5rIn0NCjwvZGl2PiANCjwvZGV0YWlscz4NCg0KPGRldGFpbHM+IDxzdW1tYXJ5PiBgciB0eHQkVFUkc3ViM1tsYW5ndWFnZV1gIDwvc3VtbWFyeT4gDQo8YnI+DQo8YnV0dG9uIGNsYXNzPSJhY2NvcmRpb24iPiBgciBwYXN0ZTAoIioqVGFiZWwgNDogKioiLCBzdGF0Z2xfbWV0YShzdGF0Z2xfdXJsKCJUVVhLQVAiLCBsYW5nID0gbGFuZ3VhZ2UpKVsxXSR0aXRsZSkgYCA8L2J1dHRvbj4gPGRpdiBjbGFzcz0icGFuZWwiPg0KDQpgYGB7ciBUVVhLQVB9DQoNClRVWEtBUF9yYXcgPC0gDQogIHN0YXRnbF91cmwoIlRVWEtBUCIsIGxhbmcgPSBsYW5ndWFnZSkgJT4lIA0KICBzdGF0Z2xfZmV0Y2goDQogICAgdW5pdCAgICAgID0gYygyKSwNCiAgICBtb250aCAgICAgPSBweF9hbGwoKSwNCiAgICByZWdpb24gICAgPSBweF9hbGwoKSwNCiAgICB0aW1lICAgICAgPSBweF90b3AoMiksDQogICAgLmNvbF9jb2RlID0gVFJVRQ0KICApICU+JSANCiAgYXNfdGliYmxlKCkNCg0KDQpUVVhLQVAgPC0gDQogIFRVWEtBUF9yYXcgJT4lIA0KICBmaWx0ZXIodGltZSA8PSBTeXMudGltZSgpICU+JSB5ZWFyKCkgLTEpICU+JSANCiAgbXV0YXRlKA0KICAgIG1vbnRoID0gbW9udGggJT4lIGZjdF9pbm9yZGVyKCksDQogICAgcmVnaW9uID0gcmVnaW9uICU+JSBmY3RfaW5vcmRlcigpDQogICkgJT4lIA0KICBzcHJlYWQobW9udGgsIHZhbHVlKSAlPiUgDQogIHVuaXRlKGNvbWJpLCB1bml0LCB0aW1lLCBzZXAgPSAiLCAiKQ0KDQpUVVhLQVAgJT4lIA0KICBzZWxlY3QoLWNvbWJpKSAlPiUgDQogIHJlbmFtZSgiICIgPSAxKSAlPiUgDQogIHN0YXRnbF90YWJsZSgpICU+JSANCiAgcGFja19yb3dzKGluZGV4ID0gVFVYS0FQW1siY29tYmkiXV0gJT4lIHRhYmxlKCkpICU+JSANCiAgcm93X3NwZWMoMSwgYm9sZCA9IFQpIHw+IA0KICBjb2x1bW5fc3BlYygyLCBib2xkID0gVCkNCg0KYGBgDQo8YnI+DQpbIVtdKGByIGxvZ29gKXt3aWR0aD00MH1gciBwYXN0ZShzb3VyY2UsICJUVVhLQVAiKWBdKGByIHBhc3RlMCgiaHR0cHM6Ly9iYW5rLnN0YXQuZ2w6NDQzL3NxLzQ4OGFhY2ZiLTc5ZTktNDU2ZC04ODg5LWQ4MjA2YTQ4NGNiZCIsIG9wdGlvbilgKXt0YXJnZXQ9Il9ibGFuayJ9DQo8L2Rpdj4gDQo8L2RldGFpbHM+IA0KDQo8ZGV0YWlscz4gPHN1bW1hcnk+IGByIHR4dCRUVSRzdWI0W2xhbmd1YWdlXWAgPC9zdW1tYXJ5Pg0KPGJyPg0KPGJ1dHRvbiBjbGFzcz0iYWNjb3JkaW9uIj4gYHIgcGFzdGUwKCIqKlRhYmVsIDU6ICoqIiwgc3RhdGdsX21ldGEoc3RhdGdsX3VybCgiVFVYMDEiLCBsYW5nID0gbGFuZ3VhZ2UpKVsxXSR0aXRsZSkgYCA8L2J1dHRvbj4gPGRpdiBjbGFzcz0icGFuZWwiPg0KDQpgYGB7ciBUVVgwMX0NCg0KVFVYMDFfcmF3IDwtIA0KICBzdGF0Z2xfdXJsKCJUVVgwMSIsIGxhbmcgPSBsYW5ndWFnZSkgJT4lDQogIHN0YXRnbF9mZXRjaCgNCiAgICBkaXN0cmljdCAgPSBweF9hbGwoKSwNCiAgICB0aW1lICAgICAgPSBweF90b3AoNSksDQogICAgLmNvbF9jb2RlID0gVFJVRQ0KICApICU+JSANCiAgYXNfdGliYmxlKCkNCg0KVFVYMDFfcmF3ICU+JSANCiAgYXJyYW5nZShkZXNjKHRpbWUpKSAlPiUgDQogIG11dGF0ZSh0aW1lID0gdGltZSAlPiUgZmN0X2lub3JkZXIoKSkgJT4lIA0KICBzcHJlYWQodGltZSwgdmFsdWUpICU+JSANCiAgYXJyYW5nZShkZXNjKGAyMDE5YCkpICU+JSANCiAgcmVuYW1lKCIgIiA9IDEpICU+JSANCiAgc3RhdGdsX3RhYmxlKCkgJT4lIA0KICByb3dfc3BlYygxLCBib2xkID0gVFJVRSkNCg0KYGBgDQo8YnI+DQpbIVtdKGByIGxvZ29gKXt3aWR0aD00MH1gciBwYXN0ZShzb3VyY2UsICJUVVgwMSIpYF0oYHIgcGFzdGUwKCJodHRwczovL2Jhbmsuc3RhdC5nbDo0NDMvc3EvYmZlOGY5ZGUtYWUxOC00ZjUyLWJjN2ItZDQ4MDkxMzAxOTQxIiwgb3B0aW9uKWApe3RhcmdldD0iX2JsYW5rIn0NCjwvZGl2PiANCjwvZGV0YWlscz4NCg0KPGhyIHN0eWxlPSJib3JkZXI6MXB4IHJpZGdlIGxpZ2h0Z3JheSI+IDwvaHI+DQo8Y2VudGVyPiANCjxzcGFuIHN0eWxlPSdjb2xvcjojRDNEM0QzOyBmb250LXNpemU6OTAlOyc+IGByIHBhc3RlKHR4dCR1cGRhdGVbbGFuZ3VhZ2VdLCBmb3JtYXQoU3lzLkRhdGUoKSwgIiVkLiAlQiAlWSIpKWAgPC9zcGFuPiANCjwvY2VudGVyPg0KDQoNCjxzY3JpcHQ+DQp2YXIgYWNjID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgiYWNjb3JkaW9uIik7DQp2YXIgaTsNCg0KZm9yIChpID0gMDsgaSA8IGFjYy5sZW5ndGg7IGkrKykgew0KICBhY2NbaV0uYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCBmdW5jdGlvbigpIHsNCiAgICB0aGlzLmNsYXNzTGlzdC50b2dnbGUoImFjdGl2ZSIpOw0KICAgIHZhciBwYW5lbCA9IHRoaXMubmV4dEVsZW1lbnRTaWJsaW5nOw0KICAgIGlmIChwYW5lbC5zdHlsZS5tYXhIZWlnaHQpIHsNCiAgICAgIHBhbmVsLnN0eWxlLm1heEhlaWdodCA9IG51bGw7DQogICAgfSBlbHNlIHsNCiAgICAgIHBhbmVsLnN0eWxlLm1heEhlaWdodCA9IHBhbmVsLnNjcm9sbEhlaWdodCArICJweCI7DQogICAgfSANCiAgfSk7DQp9DQo8L3NjcmlwdD4NCg0KDQo=