Phase III clinical trial on Psoriasis comparing Active Treatment vs Placebo for outcome variable Pain (collected on a visual analog scale [0-100]). The pain outcome variable was reordered and classified into four distinctive groups: Active Treatment without    with    any missing data and Placebo without    with    any missing data. The longitudinal pain scores are visualized through a color-coded Heatmap where missing values are coded    . Vertical and horizontal figures were added to adorn different aspects of the missing data. Vertical top annotations display the overall and monotone missing data patterns, while bottom annotations display the longitudinal mean results for each of the aforementioned groups. Right horizontal figures represent the distribution of covariates extended by the bottom summary display.
Current session info
- Session info ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
setting value
version R version 4.0.2 (2020-06-22)
os Windows 10 x64
system x86_64, mingw32
ui RTerm
language (EN)
collate English_United States.1252
ctype English_United States.1252
tz America/Los_Angeles
date 2021-02-27
- Packages -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
package * version date lib source
assertthat 0.2.1 2019-03-21 [1] CRAN (R 4.0.2)
backports 1.2.1 2020-12-09 [1] CRAN (R 4.0.2)
broom 0.7.5 2021-02-19 [1] CRAN (R 4.0.2)
bslib 0.2.4 2021-01-25 [1] CRAN (R 4.0.2)
cellranger 1.1.0 2016-07-27 [1] CRAN (R 4.0.2)
circlize * 0.4.12 2021-01-08 [1] CRAN (R 4.0.3)
cli 2.3.0 2021-01-31 [1] CRAN (R 4.0.2)
clipr 0.7.1 2020-10-08 [1] CRAN (R 4.0.2)
clue 0.3-58 2020-12-03 [1] CRAN (R 4.0.3)
cluster 2.1.1 2021-02-14 [1] CRAN (R 4.0.4)
codetools 0.2-18 2020-11-04 [1] CRAN (R 4.0.3)
colorspace 2.0-0 2020-11-11 [1] CRAN (R 4.0.2)
ComplexHeatmap * 2.4.3 2020-07-25 [1] Bioconductor
crayon 1.4.1 2021-02-08 [1] CRAN (R 4.0.2)
DBI 1.1.1 2021-01-15 [1] CRAN (R 4.0.3)
dbplyr 2.1.0 2021-02-03 [1] CRAN (R 4.0.3)
desc 1.2.0 2018-05-01 [1] CRAN (R 4.0.2)
details 0.2.1 2020-01-12 [1] CRAN (R 4.0.2)
digest 0.6.27 2020-10-24 [1] CRAN (R 4.0.3)
dplyr * 1.0.4 2021-02-02 [1] CRAN (R 4.0.2)
ellipsis 0.3.1 2020-05-15 [1] CRAN (R 4.0.2)
evaluate 0.14 2019-05-28 [1] CRAN (R 4.0.2)
fansi 0.4.2 2021-01-15 [1] CRAN (R 4.0.3)
farver 2.0.3 2020-01-16 [1] CRAN (R 4.0.2)
forcats * 0.5.1 2021-01-27 [1] CRAN (R 4.0.2)
foreach 1.5.1 2020-10-15 [1] CRAN (R 4.0.3)
fs 1.5.0 2020-07-31 [1] CRAN (R 4.0.2)
generics 0.1.0 2020-10-31 [1] CRAN (R 4.0.3)
GetoptLong 1.0.5 2020-12-15 [1] CRAN (R 4.0.3)
ggplot2 * 3.3.3 2020-12-30 [1] CRAN (R 4.0.2)
GlobalOptions 0.1.2 2020-06-10 [1] CRAN (R 4.0.3)
glue 1.4.2 2020-08-27 [1] CRAN (R 4.0.2)
gtable 0.3.0 2019-03-25 [1] CRAN (R 4.0.2)
haven 2.3.1 2020-06-01 [1] CRAN (R 4.0.2)
highr 0.8 2019-03-20 [1] CRAN (R 4.0.2)
hms 1.0.0 2021-01-13 [1] CRAN (R 4.0.3)
htmltools 0.5.1.1 2021-01-22 [1] CRAN (R 4.0.3)
httr 1.4.2 2020-07-20 [1] CRAN (R 4.0.2)
iterators 1.0.13 2020-10-15 [1] CRAN (R 4.0.3)
jquerylib 0.1.3 2020-12-17 [1] CRAN (R 4.0.3)
jsonlite 1.7.2 2020-12-09 [1] CRAN (R 4.0.3)
knitr 1.31 2021-01-27 [1] CRAN (R 4.0.2)
labeling 0.4.2 2020-10-20 [1] CRAN (R 4.0.3)
lifecycle 1.0.0 2021-02-15 [1] CRAN (R 4.0.4)
lubridate 1.7.9.2 2020-11-13 [1] CRAN (R 4.0.3)
magrittr 2.0.1 2020-11-17 [1] CRAN (R 4.0.3)
modelr 0.1.8 2020-05-19 [1] CRAN (R 4.0.2)
munsell 0.5.0 2018-06-12 [1] CRAN (R 4.0.2)
pacman 0.5.1 2019-03-11 [1] CRAN (R 4.0.2)
pillar 1.5.0 2021-02-22 [1] CRAN (R 4.0.2)
pkgconfig 2.0.3 2019-09-22 [1] CRAN (R 4.0.2)
png 0.1-7 2013-12-03 [1] CRAN (R 4.0.0)
purrr * 0.3.4 2020-04-17 [1] CRAN (R 4.0.2)
R6 2.5.0 2020-10-28 [1] CRAN (R 4.0.3)
RColorBrewer 1.1-2 2014-12-07 [1] CRAN (R 4.0.0)
Rcpp 1.0.6 2021-01-15 [1] CRAN (R 4.0.3)
readr * 1.4.0 2020-10-05 [1] CRAN (R 4.0.2)
readxl 1.3.1 2019-03-13 [1] CRAN (R 4.0.2)
registry 0.5-1 2019-03-05 [1] CRAN (R 4.0.3)
reprex 1.0.0 2021-01-27 [1] CRAN (R 4.0.2)
rjson 0.2.20 2018-06-08 [1] CRAN (R 4.0.0)
rlang 0.4.10 2020-12-30 [1] CRAN (R 4.0.3)
rmarkdown 2.7 2021-02-19 [1] CRAN (R 4.0.2)
rprojroot 2.0.2 2020-11-15 [1] CRAN (R 4.0.2)
rstudioapi 0.13 2020-11-12 [1] CRAN (R 4.0.2)
rvest 0.3.6 2020-07-25 [1] CRAN (R 4.0.2)
samon * 4.0.1 2020-05-05 [1] CRAN (R 4.0.3)
sass 0.3.1 2021-01-24 [1] CRAN (R 4.0.3)
scales 1.1.1 2020-05-11 [1] CRAN (R 4.0.2)
seriation * 1.2-9 2020-10-01 [1] CRAN (R 4.0.3)
sessioninfo 1.1.1 2018-11-05 [1] CRAN (R 4.0.2)
shape 1.4.5 2020-09-13 [1] CRAN (R 4.0.3)
stringi 1.5.3 2020-09-09 [1] CRAN (R 4.0.2)
stringr * 1.4.0 2019-02-10 [1] CRAN (R 4.0.2)
tibble * 3.0.6 2021-01-29 [1] CRAN (R 4.0.3)
tidyr * 1.1.2 2020-08-27 [1] CRAN (R 4.0.2)
tidyselect 1.1.0 2020-05-11 [1] CRAN (R 4.0.2)
tidyverse * 1.3.0 2019-11-21 [1] CRAN (R 4.0.3)
TSP 1.1-10 2020-04-17 [1] CRAN (R 4.0.3)
utf8 1.1.4 2018-05-24 [1] CRAN (R 4.0.2)
vctrs 0.3.6 2020-12-17 [1] CRAN (R 4.0.3)
withr 2.4.1 2021-01-26 [1] CRAN (R 4.0.2)
xfun 0.21 2021-02-10 [1] CRAN (R 4.0.3)
xml2 1.3.2 2020-04-23 [1] CRAN (R 4.0.2)
yaml 2.2.1 2020-02-01 [1] CRAN (R 4.0.0)
[1] C:/R/R-4.0.2/library
LS0tDQp0aXRsZTogICI8aDQ+IDxhIGhyZWY9J2h0dHBzOi8vZ2l0aHViLmNvbS9WSVMtU0lHL1dvbmRlcmZ1bC1XZWRuZXNkYXlzL3RyZWUvbWFzdGVyL2RhdGEvMjAyMS8yMDIxLTAyLTEwJz4gVmlzdWFsaXphdGlvbiBvZiBwYXR0ZXJucyBvZiBtaXNzaW5nIGRhdGEgPC9hPiBieSBBZ3VzdGluIENhbGF0cm9uaSINCm91dHB1dDoNCiAgIGh0bWxfZG9jdW1lbnQ6DQogICAgICBzZWxmX2NvbnRhaW5kZWQ6IFRSVUUNCiAgICAgIGNvZGVfZG93bmxvYWQ6IHllcw0KICAgICAgdG9jOiBmYWxzZSANCi0tLQ0KDQo8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYWdzdG4vV1ciIGNsYXNzPSJnaXRodWItY29ybmVyIiBhcmlhLWxhYmVsPSJWaWV3IHNvdXJjZSBvbiBHaXRIdWIiPjxzdmcgd2lkdGg9IjgwIiBoZWlnaHQ9IjgwIiB2aWV3Qm94PSIwIDAgMjUwIDI1MCIgc3R5bGU9ImZpbGw6IzcwQjdGRDsgY29sb3I6I2ZmZjsgcG9zaXRpb246IGFic29sdXRlOyB0b3A6IDA7IGJvcmRlcjogMDsgcmlnaHQ6IDA7IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZD0iTTAsMCBMMTE1LDExNSBMMTMwLDExNSBMMTQyLDE0MiBMMjUwLDI1MCBMMjUwLDAgWiI+PC9wYXRoPjxwYXRoIGQ9Ik0xMjguMywxMDkuMCBDMTEzLjgsOTkuNyAxMTkuMCw4OS42IDExOS4wLDg5LjYgQzEyMi4wLDgyLjcgMTIwLjUsNzguNiAxMjAuNSw3OC42IEMxMTkuMiw3Mi4wIDEyMy40LDc2LjMgMTIzLjQsNzYuMyBDMTI3LjMsODAuOSAxMjUuNSw4Ny4zIDEyNS41LDg3LjMgQzEyMi45LDk3LjYgMTMwLjYsMTAxLjkgMTM0LjQsMTAzLjIiIGZpbGw9ImN1cnJlbnRDb2xvciIgc3R5bGU9InRyYW5zZm9ybS1vcmlnaW46IDEzMHB4IDEwNnB4OyIgY2xhc3M9Im9jdG8tYXJtIj48L3BhdGg+PHBhdGggZD0iTTExNS4wLDExNS4wIEMxMTQuOSwxMTUuMSAxMTguNywxMTYuNSAxMTkuOCwxMTUuNCBMMTMzLjcsMTAxLjYgQzEzNi45LDk5LjIgMTM5LjksOTguNCAxNDIuMiw5OC42IEMxMzMuOCw4OC4wIDEyNy41LDc0LjQgMTQzLjgsNTguMCBDMTQ4LjUsNTMuNCAxNTQuMCw1MS4yIDE1OS43LDUxLjAgQzE2MC4zLDQ5LjQgMTYzLjIsNDMuNiAxNzEuNCw0MC4xIEMxNzEuNCw0MC4xIDE3Ni4xLDQyLjUgMTc4LjgsNTYuMiBDMTgzLjEsNTguNiAxODcuMiw2MS44IDE5MC45LDY1LjQgQzE5NC41LDY5LjAgMTk3LjcsNzMuMiAyMDAuMSw3Ny42IEMyMTMuOCw4MC4yIDIxNi4zLDg0LjkgMjE2LjMsODQuOSBDMjEyLjcsOTMuMSAyMDYuOSw5Ni4wIDIwNS40LDk2LjYgQzIwNS4xLDEwMi40IDIwMy4wLDEwNy44IDE5OC4zLDExMi41IEMxODEuOSwxMjguOSAxNjguMywxMjIuNSAxNTcuNywxMTQuMSBDMTU3LjksMTE2LjkgMTU2LjcsMTIwLjkgMTUyLjcsMTI0LjkgTDE0MS4wLDEzNi41IEMxMzkuOCwxMzcuNyAxNDEuNiwxNDEuOSAxNDEuOCwxNDEuOCBaIiBmaWxsPSJjdXJyZW50Q29sb3IiIGNsYXNzPSJvY3RvLWJvZHkiPjwvcGF0aD48L3N2Zz48L2E+DQoNCmBgYHs9aHRtbH0NCjxzdHlsZT4uZ2l0aHViLWNvcm5lcjpob3ZlciAub2N0by1hcm17YW5pbWF0aW9uOm9jdG9jYXQtd2F2ZSA1NjBtcyBlYXNlLWluLW91dH1Aa2V5ZnJhbWVzIG9jdG9jYXQtd2F2ZXswJSwxMDAle3RyYW5zZm9ybTpyb3RhdGUoMCl9MjAlLDYwJXt0cmFuc2Zvcm06cm90YXRlKC0yNWRlZyl9NDAlLDgwJXt0cmFuc2Zvcm06cm90YXRlKDEwZGVnKX19QG1lZGlhIChtYXgtd2lkdGg6NTAwcHgpey5naXRodWItY29ybmVyOmhvdmVyIC5vY3RvLWFybXthbmltYXRpb246bm9uZX0uZ2l0aHViLWNvcm5lciAub2N0by1hcm17YW5pbWF0aW9uOm9jdG9jYXQtd2F2ZSA1NjBtcyBlYXNlLWluLW91dH19PC9zdHlsZT4NCmBgYA0KYGBgez1odG1sfQ0KPHN0eWxlIHR5cGU9InRleHQvY3NzIj4NCi5tYWluLWNvbnRhaW5lciB7DQptYXgtd2lkdGg6IDEyMDBweDsNCm1hcmdpbi1sZWZ0OiBhdXRvOw0KbWFyZ2luLXJpZ2h0OiBhdXRvO30NCjwvc3R5bGU+DQpgYGANCmBgYHtyIHNldHVwLCBpbmNsdWRlPUZBTFNFfQ0Kb3B0aW9ucyh3aWR0aCA9IDIwMCkNCmtuaXRyOjpvcHRzX2NodW5rJHNldChlY2hvID0gRkFMU0UsIGV2YWwgPSBUUlVFLCB3YXJuaW5nID0gRkFMU0UsIG1lc3NhZ2UgPSBGQUxTRSwgY29tbWVudCA9IE5BLCBjYWNoZSA9IEZBTFNFKQ0KYGBgDQoNCmBgYHtyIHBhY2thZ2VzfQ0KcGFjbWFuOjpwX2xvYWQodGlkeXZlcnNlKQ0KYGBgDQoNCmBgYHtyIGltcG9ydC1kYXRhfQ0KZDEgPC0gcmVhZC5jc3YoImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9WSVMtU0lHL1dvbmRlcmZ1bC1XZWRuZXNkYXlzL21hc3Rlci9kYXRhLzIwMjEvMjAyMS0wMi0xMC9taXNzaW5nX2RhdGEuY3N2IikgJT4lDQogIHNlbGVjdCgtY29udGFpbnMoIi5iaW4uIikpICU+JQ0KICBtdXRhdGUoDQogICAgdHJ0ID0gZmFjdG9yKHRydCwgbGFiZWxzID0gYygiQSIsICJQIikpLA0KICAgIGdlbmRlciA9IGZhY3RvcihnZW5kZXIsIGxhYmVscyA9IGMoIkYiLCAiTSIpKQ0KICApICU+JQ0KICByb3d3aXNlKCkgJT4lDQogIG11dGF0ZShuYV9udW0gPSBzdW0oaXMubmEoY19hY3Jvc3MocGFpbi4wOnBhaW4uMTApKSkpICU+JQ0KICBtdXRhdGUoZ3JvdXAgPSBjYXNlX3doZW4oDQogICAgbmFfbnVtID4gMCAgJiB0cnQgPT0gIlAiIH4gIlAvbSIsDQogICAgbmFfbnVtID4gMCAgJiB0cnQgPT0gIkEiIH4gIkEvbSIsDQogICAgbmFfbnVtID09IDAgJiB0cnQgPT0gIlAiIH4gIlAiLA0KICAgIG5hX251bSA9PSAwICYgdHJ0ID09ICJBIiB+ICJBIiwpICU+JSANCiAgICAgIGZhY3RvcihsZXZlbHMgPSBjKCJBIiwiQS9tIiwiUC9tIiwiUCIpKSklPiUNCiAgdW5ncm91cCgpDQoNCndyaXRlLmNzdihkMSwgImNoX21pc3NpbmdfZGF0YS5jc3YiKQ0KYGBgDQoNCmBgYHtyIGxvbmctZGF0YX0NCmQzIDwtIGQxICU+JQ0KICByb3duYW1lc190b19jb2x1bW4odmFyID0gJ2lkJykgJT4lDQogIHBpdm90X2xvbmdlcihjb2xzID0gc3RhcnRzX3dpdGgoInBhaW4uIiksDQogICAgICAgICAgICAgICB2YWx1ZXNfdG8gPSAncGFpbicpICU+JSANCiAgc2VwYXJhdGUobmFtZSwgYygibmFtZSIsInRpbWUiKSwgIlxcLiIpJT4lDQogIG11dGF0ZSh0aW1lID0gZmFjdG9yKHRpbWUsIGxldmVscyA9IGMoMDoxMCkpKSAlPiUgDQogIGRyb3BfbmEocGFpbikNCmBgYA0KDQpgYGB7ciBzZXJpYXRpb259DQpwYWNtYW46OnBfbG9hZChzZXJpYXRpb24pDQoNCmQxX25hIDwtIGQxICU+JQ0KICBtdXRhdGUoYWNyb3NzKGNvbnRhaW5zKCJwYWluLiIpLCB+IGlzLm5hKC54KSAlPiUgYXMubnVtZXJpYygpKSkgJT4lDQogIHNlbGVjdChjb250YWlucygicGFpbi4iKSkgJT4lDQogIGRhdGEubWF0cml4KCkNCg0Kc2V0LnNlZWQoMTIzKQ0KbyA8LSBzZXJpYXRlKGQxX25hLCBtZXRob2QgPSAiQkVBIiwgbWFyZ2luID0gMSwgY29udHJvbCA9IGxpc3QocmVwID0gMTAwLCBpc3RhcnQgPSAxLCBqc3RhcnQgPSAxKSkNCmBgYA0KDQpgYGB7ciBkYXRhLXJlb3JkZXJ9DQpkMiA8LSBkMSAlPiUNCiAgc2xpY2UoZ2V0X29yZGVyKG8pKQ0KYGBgDQoNCmBgYHtyIHBhdHRlcm5zLW1pc3NpbmcsIGluY2x1ZGU9RkFMU0V9DQpwYWNtYW46OnBfbG9hZChzYW1vbikNCg0KIyAxLiB0IHRoZSB0aW1lLXBvaW50DQojIDIuIE51bWJlciBPbiBTdHVkeSANCiMgMy4gTnVtYmVyIE9ic2VydmVkIA0KIyA0LiBOdW1iZXIgbGFzdCBzZWVuIGF0IHRpbWUgdA0KIyA1LiBQcm9wb3J0aW9uIGxhc3Qgc2VlbiAob2YgbnVtYmVyIG9uLXN0dWR5KSANCiMgNi4gUHJvcG9ydGlvbiBsYXN0IHNlZW4gKG9mIG51bWJlciBvYnNlcnZlZCkgDQojIDcuIE51bWJlciBpbnRlcm1pdHRlbnQgbWlzc2luZyBkYXRhIA0KIyA4LiBwcm9wb3J0aW9uIGludGVybWl0dGVudCBtaXNzaW5nIChvZiBudW1iZXIgb24tc3R1ZHkpDQoNCiMgVFJUOkENCnNhbW9uVGFibWF0MShkMiAlPiUgZmlsdGVyKHRydCA9PSAiQSIpICU+JSBzZWxlY3QoY29udGFpbnMoInBhaW4uIikpKSAlPiUNCiAgc2Ftb25UYWJsZTEoKQ0KIyBDaGVjaw0KcDFfYSA8LSBzYW1vbkRhdGFDaGVjayhkMiAlPiUgZmlsdGVyKHRydCA9PSAiQSIpICU+JSBzZWxlY3QoY29udGFpbnMoInBhaW4uIikpICU+JSBhcy5kYXRhLmZyYW1lKCkpDQpwMl9hIDwtICAgc2Ftb25UYWJtYXQxKGQyICU+JSBmaWx0ZXIodHJ0ID09ICJBIikgJT4lIHNlbGVjdChjb250YWlucygicGFpbi4iKSkpDQpwM19hIDwtIGRhdGEuZnJhbWUodGltZSA9IDA6MTAsDQogICAgICAgICAgICAgICAgICAgbWlzcyA9IDE1MCAtIHAyX2FbLDNdLA0KICAgICAgICAgICAgICAgICAgIG1vbiAgPSBjKHN1bShwMV9hJG1pc3NpbmdQYXR0ZXJucyA9PSAnX19fX19fX19fX18nKSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdW0ocDFfYSRtaXNzaW5nUGF0dGVybnMgPT0gJypfX19fX19fX19fJyksDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VtKHAxX2EkbWlzc2luZ1BhdHRlcm5zID09ICcqKl9fX19fX19fXycpLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1bShwMV9hJG1pc3NpbmdQYXR0ZXJucyA9PSAnKioqX19fX19fX18nKSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdW0ocDFfYSRtaXNzaW5nUGF0dGVybnMgPT0gJyoqKipfX19fX19fJyksDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VtKHAxX2EkbWlzc2luZ1BhdHRlcm5zID09ICcqKioqKl9fX19fXycpLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1bShwMV9hJG1pc3NpbmdQYXR0ZXJucyA9PSAnKioqKioqX19fX18nKSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdW0ocDFfYSRtaXNzaW5nUGF0dGVybnMgPT0gJyoqKioqKipfX19fJyksDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VtKHAxX2EkbWlzc2luZ1BhdHRlcm5zID09ICcqKioqKioqKl9fXycpLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1bShwMV9hJG1pc3NpbmdQYXR0ZXJucyA9PSAnKioqKioqKioqX18nKSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdW0ocDFfYSRtaXNzaW5nUGF0dGVybnMgPT0gJyoqKioqKioqKipfJykpLA0KICAgICAgICAgICAgICAgICAgIGludCA9IHAyX2FbLDddKQ0KDQojIFRSVDpQDQpzYW1vblRhYm1hdDEoZDIgJT4lIGZpbHRlcih0cnQgPT0gIlAiKSAlPiUgc2VsZWN0KGNvbnRhaW5zKCJwYWluLiIpKSkgJT4lDQogIHNhbW9uVGFibGUxKCkNCiMgQ2hlY2sNCnAxX3AgPC0gc2Ftb25EYXRhQ2hlY2soZDIgJT4lIGZpbHRlcih0cnQgPT0gIlAiKSAlPiUgc2VsZWN0KGNvbnRhaW5zKCJwYWluLiIpKSAlPiUgYXMuZGF0YS5mcmFtZSgpKQ0KcDJfcCA8LSAgIHNhbW9uVGFibWF0MShkMiAlPiUgZmlsdGVyKHRydCA9PSAiUCIpICU+JSBzZWxlY3QoY29udGFpbnMoInBhaW4uIikpKQ0KcDNfcCA8LSBkYXRhLmZyYW1lKHRpbWUgPSAwOjEwLA0KICAgICAgICAgICAgICAgICAgIG1pc3MgPSAxNTAgLSBwMl9wWywzXSwNCiAgICAgICAgICAgICAgICAgICBtb24gID0gYyhzdW0ocDFfcCRtaXNzaW5nUGF0dGVybnMgPT0gJ19fX19fX19fX19fJyksDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VtKHAxX3AkbWlzc2luZ1BhdHRlcm5zID09ICcqX19fX19fX19fXycpLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1bShwMV9wJG1pc3NpbmdQYXR0ZXJucyA9PSAnKipfX19fX19fX18nKSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdW0ocDFfcCRtaXNzaW5nUGF0dGVybnMgPT0gJyoqKl9fX19fX19fJyksDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VtKHAxX3AkbWlzc2luZ1BhdHRlcm5zID09ICcqKioqX19fX19fXycpLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1bShwMV9wJG1pc3NpbmdQYXR0ZXJucyA9PSAnKioqKipfX19fX18nKSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdW0ocDFfcCRtaXNzaW5nUGF0dGVybnMgPT0gJyoqKioqKl9fX19fJyksDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VtKHAxX3AkbWlzc2luZ1BhdHRlcm5zID09ICcqKioqKioqX19fXycpLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1bShwMV9wJG1pc3NpbmdQYXR0ZXJucyA9PSAnKioqKioqKipfX18nKSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdW0ocDFfcCRtaXNzaW5nUGF0dGVybnMgPT0gJyoqKioqKioqKl9fJyksDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VtKHAxX3AkbWlzc2luZ1BhdHRlcm5zID09ICcqKioqKioqKioqXycpKSwNCiAgICAgICAgICAgICAgICAgICBpbnQgPSBwMl9wWyw3XSkNCmBgYA0KDQpgYGB7ciBoZWF0bWFwLWNyZWF0ZX0NCnBhY21hbjo6cF9sb2FkKENvbXBsZXhIZWF0bWFwKQ0KcGFjbWFuOjpwX2xvYWQoY2lyY2xpemUpDQoNCnRfY29sdW1uX2hhIDwtIEhlYXRtYXBBbm5vdGF0aW9uKA0KICBiYXIxID0gYW5ub19iYXJwbG90KGNiaW5kKHAzX2FbJ21pc3MnXSwgcDNfcFsnbWlzcyddKSwNCiAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQgPSB1bml0KDIsICJjbSIpLA0KICAgICAgICAgICAgICAgICAgICAgIHlsaW0gPSBjKDAsIDEwMCksDQogICAgICAgICAgICAgICAgICAgICAgYXhpc19wYXJhbSA9IGxpc3QoYXQ9YygyNSwgNTAsIDEwMCkpLA0KICAgICAgICAgICAgICAgICAgICAgIGdwID0gZ3BhcihmaWxsID0gYygiI0E2Q0VFMyIsIiNCMkRGOEEiKSwgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbCAgPSBjKCIjQTZDRUUzIiwiI0IyREY4QSIpKSksDQogIGJhcjIgPSBhbm5vX2JhcnBsb3QoY2JpbmQocDNfYVsnbW9uJ10sIHAzX3BbJ21vbiddKSwNCiAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQgPSB1bml0KDIsICJjbSIpLA0KICAgICAgICAgICAgICAgICAgICAgIHlsaW0gPSBjKDAsMTApLA0KICAgICAgICAgICAgICAgICAgICAgIGdwID0gZ3BhcihmaWxsID0gYygiI0E2Q0VFMyIsIiNCMkRGOEEiKSwgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbCAgPSBjKCIjQTZDRUUzIiwiI0IyREY4QSIpKSksDQogIGFubm90YXRpb25fbGFiZWwgPSBjKCJNaXNzaW5nXG5PdmVyYWxsIiwiTW9ub3RvbmUiKSwNCiAgZ2FwID0gdW5pdCgzLCAicG9pbnRzIikNCikNCg0KYl9jb2x1bW5faGEgPC0gSGVhdG1hcEFubm90YXRpb24oDQogIGZvbzEgPSAgZDMgJT4lIA0KICAgIGdyb3VwX2J5KHRpbWUsIGdyb3VwKSAlPiUgDQogICAgc3VtbWFyaXNlKG0gPSBtZWFuKHBhaW4pKSAlPiUgDQogICAgdW5ncm91cCgpICU+JSANCiAgICBwaXZvdF93aWRlcihuYW1lc19mcm9tICA9IGdyb3VwLA0KICAgICAgICAgICAgICAgIHZhbHVlc19mcm9tID0gbSkgJT4lICANCiAgICBzZWxlY3QoLXRpbWUpICU+JSAgDQogICAgYW5ub19saW5lcygNCiAgICAgIGFkZF9wb2ludHMgPSBUUlVFLA0KICAgICAgZ3AgICAgPSBncGFyKGNvbCA9IGMoIiMxRjc4QjQiLCIjQTZDRUUzIiwiI0IyREY4QSIsIiMzM0EwMkMiKSksDQogICAgICBwdF9ncCA9IGdwYXIoY29sID0gYygiIzFGNzhCNCIsIiNBNkNFRTMiLCIjQjJERjhBIiwiIzMzQTAyQyIpKQ0KICAgICksDQogIGFubm90YXRpb25fbmFtZV9zaWRlID0gImxlZnQiLA0KICBhbm5vdGF0aW9uX2xhYmVsID0gYygiTWVhbiIpDQopDQoNCmNvbF9mdW4gPC0gY2lyY2xpemU6OmNvbG9yUmFtcDIoYnJlYWtzID0gYygwLCAxNiwgMjQsIDMyLCA2NCksIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcnMgPSBSQ29sb3JCcmV3ZXI6OmJyZXdlci5wYWwobiA9IDksIG5hbWUgPSAiUHVPciIpW2MoMSwzLDUsNyw5KV0sDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zcGFyZW5jeSA9IDApDQoNCmhhX2xpc3QgPC0gSGVhdG1hcChkMiAlPiUNCiAgICAgICAgICAgICAgICAgICAgIHNlbGVjdChjb250YWlucygicGFpbiIpKSAlPiUNCiAgICAgICAgICAgICAgICAgICAgIGRhdGEubWF0cml4KCksDQogICAgICAgICAgICAgICAgICAgaGVhdG1hcF9sZWdlbmRfcGFyYW0gPSBsaXN0KHRpdGxlID0gJ1BhaW4nLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdCA9IGMoMCwgMTUsIDI0LCAzMiwgNjQpLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbHMgPSBjKCIwLU1pbiIsICIxNS1RMSIsICIyNC1RMi9NIiwgICIzMi1RMyIsICI2NC1NYXgiKSksDQogICAgICAgICAgICAgICAgICAgY29sID0gY29sX2Z1biwNCiAgICAgICAgICAgICAgICAgICBuYV9jb2wgPSAiZ3JheTI1IiwNCiAgICAgICAgICAgICAgICAgICBjb2x1bW5fbGFiZWxzID0gMDoxMCwNCiAgICAgICAgICAgICAgICAgICBjb2x1bW5fbmFtZXNfcm90ID0gMCwNCiAgICAgICAgICAgICAgICAgICBjb2x1bW5fZ2FwID0gdW5pdCgyLCAibW0iKSwNCiAgICAgICAgICAgICAgICAgICBjbHVzdGVyX2NvbHVtbnMgPSBGQUxTRSwNCiAgICAgICAgICAgICAgICAgICBjbHVzdGVyX3Jvd3MgPSBGQUxTRSwNCiAgICAgICAgICAgICAgICAgICBjbHVzdGVyX3Jvd19zbGljZXMgPSBGQUxTRSwNCiAgICAgICAgICAgICAgICAgICByb3dfc3BsaXQgPSBkMiRncm91cCwNCiAgICAgICAgICAgICAgICAgICByb3dfdGl0bGUgPSAnICcsDQogICAgICAgICAgICAgICAgICAgcm93X3RpdGxlX2dwID0gZ3BhcihjZXggPSAwLjIpLA0KICAgICAgICAgICAgICAgICAgIHRvcF9hbm5vdGF0aW9uICAgID0gdF9jb2x1bW5faGEsDQogICAgICAgICAgICAgICAgICAgYm90dG9tX2Fubm90YXRpb24gPSBiX2NvbHVtbl9oYQ0KKSArDQogIEhlYXRtYXAoZDIgJT4lIHB1bGwoZ3JvdXApLA0KICAgICAgICAgIG5hbWUgPSAiVFJUIiwNCiAgICAgICAgICBjb2wgPSBjKCIjMUY3OEI0IiwiI0E2Q0VFMyIsIiNCMkRGOEEiLCIjMzNBMDJDIiksDQogICAgICAgICAgc2hvd19oZWF0bWFwX2xlZ2VuZCA9IEZBTFNFLA0KICAgICAgICAgIGhlYXRtYXBfbGVnZW5kX3BhcmFtICA9IGxpc3QodGl0bGUgPSAiVFJUIiwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVscyA9IGMoIkFjdGl2ZSIsIkEgdy9NaXNzIiwgIlAgdy9NaXNzIiwiUGxhY2VibyIpKSwNCiAgICAgICAgICBib3R0b21fYW5ub3RhdGlvbiA9IEhlYXRtYXBBbm5vdGF0aW9uKGdncGxvdCA9IGFubm9fZW1wdHkoYm9yZGVyID0gRkFMU0UsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodCA9IHVuaXQoMywgImNtIikpKQ0KICApICsNCiAgSGVhdG1hcChkMiAlPiUgcHVsbChibWkpLA0KICAgICAgICAgIG5hbWUgPSAiQk1JIiwNCiAgICAgICAgICBjb2wgPSBjaXJjbGl6ZTo6Y29sb3JSYW1wMihicmVha3MgPSBjKDE4LCAyNSwgMjcsIDMwLCAzNSksIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9ycyA9IFJDb2xvckJyZXdlcjo6YnJld2VyLnBhbChuID0gOSwgbmFtZSA9ICJZbE9yUmQiKVtjKDEsMyw1LDcsOSldLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zcGFyZW5jeSA9IDApLA0KICAgICAgICAgIGhlYXRtYXBfbGVnZW5kX3BhcmFtID0gbGlzdCh0aXRsZSA9ICJcbkJNSSAoa2cvbTIpIiwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXQgPSBjKDE4LCAyNSwgMjcsIDMwLCAzNSksDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVscyA9IGMoIjE4LU1pbiIsICIyNS1RMSIsICIyNy1RMiIsICAiMzAtUTMiLCAiMzUtTWF4IikpLA0KICAgICAgICAgIGJvdHRvbV9hbm5vdGF0aW9uID0gSGVhdG1hcEFubm90YXRpb24oc3VtbWFyeSA9IGFubm9fc3VtbWFyeShncCA9IGdwYXIoZmlsbCA9IGMoIiMxRjc4QjQiLCIjQTZDRUUzIiwiI0IyREY4QSIsIiMzM0EwMkMiKSkpKQ0KICApICsNCiAgSGVhdG1hcChkMiAlPiUgcHVsbChhZ2UpLA0KICAgICAgICAgIG5hbWUgPSAiQWdlIiwNCiAgICAgICAgICBjb2wgPSBjaXJjbGl6ZTo6Y29sb3JSYW1wMihicmVha3MgPSBjKDE5LCAzNywgNDksIDYyLCA4OCksIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9ycyA9IFJDb2xvckJyZXdlcjo6YnJld2VyLnBhbChuID0gOSwgbmFtZSA9ICJZbE9yUmQiKVtjKDEsMyw1LDcsOSldLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zcGFyZW5jeSA9IDApLA0KICAgICAgICAgIGhlYXRtYXBfbGVnZW5kX3BhcmFtID0gbGlzdCh0aXRsZSA9ICJcbkFnZSAoeXIpIiwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXQgPSBjKDE5LCAzNywgNDksIDYyLCA4OCksDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVscyA9IGMoIjE5LU1pbiIsICIzNy1RMSIsICI0OS1RMiIsICAiNjIwLVEzIiwgIjg4LU1heCIpKSwNCiAgICAgICAgICBib3R0b21fYW5ub3RhdGlvbiA9IEhlYXRtYXBBbm5vdGF0aW9uKHN1bW1hcnkgPSBhbm5vX3N1bW1hcnkoZ3AgPSBncGFyKGZpbGwgPSBjKCIjMUY3OEI0IiwiI0E2Q0VFMyIsIiNCMkRGOEEiLCIjMzNBMDJDIikpKSkNCiAgKSsNCiAgSGVhdG1hcChkMiAlPiUgcHVsbChnZW5kZXIpLA0KICAgICAgICAgIG5hbWUgPSAiR2VuZGVyIiwNCiAgICAgICAgICBjb2wgPSBjKCIjRkZDQ0ZGIiwiI0NDRkZGRiIpLA0KICAgICAgICAgIHNob3dfaGVhdG1hcF9sZWdlbmQgPSBGQUxTRSwNCiAgICAgICAgICBoZWF0bWFwX2xlZ2VuZF9wYXJhbSAgPSBsaXN0KHRpdGxlID0gIkdlbmRlciIsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdCA9IGMoIkYiLCJNIiksDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbHMgPSBjKCJGZW1hbGUiLCJNYWxlIikpLA0KICAgICAgICAgIGJvdHRvbV9hbm5vdGF0aW9uID0gSGVhdG1hcEFubm90YXRpb24oc3VtbWFyeSA9IGFubm9fc3VtbWFyeSgNCiAgICAgICAgICAgIGJvcmRlciA9IEZBTFNFLA0KICAgICAgICAgICAgYXhpc19wYXJhbSA9IGxpc3Qoc2lkZSA9ICdyaWdodCcsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdCA9IGMoMCwgMC4yNSwgMC41LCAwLjc1LCAxKSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVscyA9IGMoJzAnLCdGZW1hbGUnLCcuNScsJ01hbGUnLCcxJykpKSkNCiAgKSANCmBgYA0KDQo8c3R5bGU+DQpkaXYuZ3JheSB7YmFja2dyb3VuZC1jb2xvcjojZjJmMmYyOyBib3JkZXItcmFkaXVzOiA1cHg7IHBhZGRpbmc6IDVweDsgbWFyZ2luLXJpZ2h0OiAzNTBweDt9DQo8L3N0eWxlPg0KPGRpdiBjbGFzcyA9ICJncmF5Ij4NCioqUGhhc2UgSUlJIGNsaW5pY2FsIHRyaWFsIG9uICpQc29yaWFzaXMqIGNvbXBhcmluZyBBY3RpdmUgVHJlYXRtZW50IHZzIFBsYWNlYm8gZm9yIG91dGNvbWUgdmFyaWFibGUgUGFpbioqIChjb2xsZWN0ZWQgb24gYSB2aXN1YWwgYW5hbG9nIHNjYWxlIFswLTEwMF0pLiBUaGUgcGFpbiBvdXRjb21lIHZhcmlhYmxlIHdhcyByZW9yZGVyZWQgYW5kIGNsYXNzaWZpZWQgaW50byBmb3VyIGRpc3RpbmN0aXZlIGdyb3VwczogQWN0aXZlIFRyZWF0bWVudCB3aXRob3V0IFvCoMKgwqBde3N0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiAjMUY3OEI0In0gd2l0aCBbwqDCoMKgXXtzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjogI0E2Q0VFMyJ9IGFueSBtaXNzaW5nIGRhdGEgYW5kIFBsYWNlYm8gd2l0aG91dCBbwqDCoMKgXXtzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjogIzMzQTAyQyJ9IHdpdGggW8KgwqDCoF17c3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNCMkRGOEEifSBhbnkgbWlzc2luZyBkYXRhLiBUaGUgbG9uZ2l0dWRpbmFsIHBhaW4gc2NvcmVzIGFyZSB2aXN1YWxpemVkIHRocm91Z2ggYSBjb2xvci1jb2RlZCBIZWF0bWFwIHdoZXJlIG1pc3NpbmcgdmFsdWVzIGFyZSBjb2RlZCBbwqDCoMKgXXtzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjogIzdmN2Y3ZiJ9LiBWZXJ0aWNhbCBhbmQgaG9yaXpvbnRhbCBmaWd1cmVzIHdlcmUgYWRkZWQgdG8gYWRvcm4gZGlmZmVyZW50IGFzcGVjdHMgb2YgdGhlIG1pc3NpbmcgZGF0YS4gVmVydGljYWwgdG9wIGFubm90YXRpb25zIGRpc3BsYXkgdGhlICpvdmVyYWxsKiBhbmQgKm1vbm90b25lKiBtaXNzaW5nIGRhdGEgcGF0dGVybnMsIHdoaWxlIGJvdHRvbSBhbm5vdGF0aW9ucyBkaXNwbGF5IHRoZSBsb25naXR1ZGluYWwgKm1lYW4qIHJlc3VsdHMgZm9yIGVhY2ggb2YgdGhlIGFmb3JlbWVudGlvbmVkIGdyb3Vwcy4gUmlnaHQgaG9yaXpvbnRhbCBmaWd1cmVzIHJlcHJlc2VudCB0aGUgZGlzdHJpYnV0aW9uIG9mIGNvdmFyaWF0ZXMgZXh0ZW5kZWQgYnkgdGhlIGJvdHRvbSBzdW1tYXJ5IGRpc3BsYXkuDQo8L2Rpdj4NCjxicj4NCmBgYHtyIGhlYXRtYXAtZHJhdywgZmlnLndpZHRoID0gMTQsIGZpZy5oZWlnaHQgPSA5LCBkcGkgPSA2MDB9DQpkcmF3KGhhX2xpc3QsDQogICAgIGhlYXRtYXBfbGVnZW5kX3NpZGUgPSAncmlnaHQnLA0KICAgICBnYXAgPSB1bml0KGMoMiw2LDYsNSksICdtbScpKQ0KDQpkZWNvcmF0ZV9hbm5vdGF0aW9uKCJnZ3Bsb3QiLCB7DQogIHZwIDwtIGN1cnJlbnQudmlld3BvcnQoKSRuYW1lDQogIHByaW50KA0KICAgIGdncGxvdCgNCiAgICAgIGRhdGEgPSBkMiwNCiAgICAgIGFlcyhncm91cCwgZmlsbCA9IGdyb3VwKSkgKw0KICAgICAgZ2VvbV9iYXIoKSArDQogICAgICBnZW9tX3RleHQoc3RhdD0nY291bnQnLCBhZXMobGFiZWw9Li5jb3VudC4uKSwgdmp1c3Q9MS4yLCBzaXplID0gMi41KSArDQogICAgICBzY2FsZV9maWxsX21hbnVhbCh2YWx1ZXMgPSBjKCIjMUY3OEI0IiwiI0E2Q0VFMyIsIiNCMkRGOEEiLCIjMzNBMDJDIikpICsNCiAgICAgIGxhYnMoeSA9IE5VTEwpKw0KICAgICAgdGhlbWVfdm9pZCgpICsNCiAgICAgIHRoZW1lKGxlZ2VuZC5wb3NpdGlvbiA9ICJub25lIiksDQogICAgdnAgPSB2cA0KICApDQp9KQ0KDQpkZWNvcmF0ZV9oZWF0bWFwX2JvZHkoIlRSVCIsIHtncmlkLnRleHQoIkFjdGl2ZSIpfSwgICAgICAgICAgcm93X3NsaWNlID0gMSkNCmRlY29yYXRlX2hlYXRtYXBfYm9keSgiVFJUIiwge2dyaWQudGV4dCgiQWN0aXZlXG53LyBNaXNzIil9LCByb3dfc2xpY2UgPSAyKQ0KZGVjb3JhdGVfaGVhdG1hcF9ib2R5KCJUUlQiLCB7Z3JpZC50ZXh0KCJQbGFjZWJvXG53LyBNaXNzIil9LHJvd19zbGljZSA9IDMpDQpkZWNvcmF0ZV9oZWF0bWFwX2JvZHkoIlRSVCIsIHtncmlkLnRleHQoIlBsYWNlYm8iKX0sICAgICAgICAgcm93X3NsaWNlID0gNCkNCmBgYA0KDQpgYGB7cn0NCnNlc3Npb25pbmZvOjpzZXNzaW9uX2luZm8oKSU+JQ0KICBkZXRhaWxzOjpkZXRhaWxzKA0KICAgIHN1bW1hcnkgPSAnQ3VycmVudCBzZXNzaW9uIGluZm8nLA0KICAgIG9wZW4gICAgPSBGQUxTRQ0KICApDQpgYGANCg0KIyMjIyBMaW5rcw0KDQpbQ29tcGxleEhlYXRtYXBdKGh0dHBzOi8vam9rZXJnb28uZ2l0aHViLmlvL0NvbXBsZXhIZWF0bWFwLXJlZmVyZW5jZS9ib29rLyAiaHR0cHM6Ly9qb2tlcmdvby5naXRodWIuaW8vQ29tcGxleEhlYXRtYXAtcmVmZXJlbmNlL2Jvb2svY29tcGxleGhlYXRtYXAtY292ZXIuanBnIikNCg0KW1BhY2thZ2UgUmVmZXJlbmNlXShodHRwczovL2pva2VyZ29vLmdpdGh1Yi5pby9Db21wbGV4SGVhdG1hcC9pbmRleC5odG1sICJodHRwOi8vam9rZXJnb28uZ2l0aHViLmlvL2NvbXBsZXhoZWF0bWFwX2xvZ28uc3ZnIikNCg0KW3NlcmlhdGlvbjogSW5mcmFzdHJ1Y3R1cmUgZm9yIE9yZGVyaW5nIE9iamVjdHMgVXNpbmcgU2VyaWF0aW9uXShodHRwczovL2NyYW4uci1wcm9qZWN0Lm9yZy93ZWIvcGFja2FnZXMvc2VyaWF0aW9uL2luZGV4Lmh0bWwpDQoNCltzYW1vbjogU2Vuc2l0aXZpdHkgQW5hbHlzaXMgZm9yIE1pc3NpbmcgRGF0YV0oaHR0cHM6Ly9jcmFuLnItcHJvamVjdC5vcmcvd2ViL3BhY2thZ2VzL3NhbW9uL2luZGV4Lmh0bWwpDQo=