Read files
Function to read files
Read all files and arrange the data
Manually correction for problematic genes
Plot: reads without faetures

Plot: reads not aligned

Make DDS
Average samples
Pre-filtering
Compute DESeq2
estimating size factors
estimating dispersions
gene-wise dispersion estimates
mean-dispersion relationship
final dispersion estimates
fitting model and testing
using 'apeglm' for LFC shrinkage. If used in published research, please cite:
Zhu, A., Ibrahim, J.G., Love, M.I. (2018) Heavy-tailed prior distributions for
sequence count data: removing the noise and preserving large differences.
Bioinformatics. https://doi.org/10.1093/bioinformatics/bty895



In green genes highly expressed in vesicles but not in cells.
In red genes highly expressed in cells but not in the vesicles.
Warning message:
In as.data.frame(readDcf(file.path(rsconnectDir, deploymentFile)), :
internal error -3 in R_decompress1
| gene |
average.ecoli |
average.vesicles |
baseMean |
log2FoldChange |
lfcSE |
stat |
pvalue |
padj |
link |
| lpp |
64646.667 |
273260.00 |
194665.64 |
2.7100867 |
0.1649231 |
16.4324271 |
0.0000000 |
0.0000000 |
1 |
| dps |
73352.333 |
104814.67 |
94271.77 |
1.1328300 |
0.3580515 |
3.1638748 |
0.0015568 |
0.0038089 |
2 |
| ompA |
53168.000 |
85668.33 |
74126.32 |
1.3032907 |
0.2221734 |
5.8660971 |
0.0000000 |
0.0000000 |
3 |
| ompX |
38285.333 |
64484.67 |
55041.29 |
1.3798479 |
0.1702291 |
8.1058276 |
0.0000000 |
0.0000000 |
4 |
| rplY |
24667.000 |
55314.33 |
44060.72 |
1.7882230 |
0.2599776 |
6.8783720 |
0.0000000 |
0.0000000 |
5 |
| rpmE |
19532.000 |
54047.67 |
41185.99 |
2.0924890 |
0.1869062 |
11.1953951 |
0.0000000 |
0.0000000 |
6 |
| ahpC |
50614.667 |
28372.00 |
37659.91 |
-0.2064387 |
0.1678389 |
-1.2299811 |
0.2187042 |
0.3008149 |
7 |
| rpoH |
48413.000 |
27183.67 |
36044.40 |
-0.2018743 |
0.2170226 |
-0.9301995 |
0.3522678 |
0.4483504 |
8 |
| gapC |
22412.333 |
39333.33 |
33102.31 |
1.4537857 |
0.2662692 |
5.4598332 |
0.0000000 |
0.0000002 |
9 |
| hdeA |
35736.000 |
28136.33 |
31837.50 |
0.2734231 |
0.2239510 |
1.2209056 |
0.2221218 |
0.3041469 |
10 |
| rpmB |
26267.000 |
33569.00 |
31222.96 |
0.9773197 |
0.2015746 |
4.8484267 |
0.0000012 |
0.0000053 |
11 |
| cspA |
45035.000 |
19674.33 |
30006.64 |
-0.5648464 |
0.2802290 |
-2.0156602 |
0.0438355 |
0.0748492 |
12 |
| rpsA |
26070.000 |
30255.67 |
28927.54 |
0.8657653 |
0.2383232 |
3.6327362 |
0.0002804 |
0.0007942 |
13 |
| infC |
36116.000 |
22705.33 |
28386.98 |
-0.0381180 |
0.1918163 |
-0.1987216 |
0.8424805 |
0.8896777 |
14 |
| acpP |
10326.333 |
37813.00 |
27502.08 |
2.5030348 |
0.1815764 |
13.7850216 |
0.0000000 |
0.0000000 |
15 |
| rpoA |
26073.333 |
27151.67 |
27089.49 |
0.6940296 |
0.2222330 |
3.1229814 |
0.0017903 |
0.0043354 |
16 |
| dnaK |
9451.667 |
37137.67 |
26708.84 |
2.5646188 |
0.2996609 |
8.5584021 |
0.0000000 |
0.0000000 |
17 |
| ompC |
26710.667 |
25223.33 |
26105.22 |
0.5602536 |
0.2305841 |
2.4297144 |
0.0151107 |
0.0290267 |
18 |
| rpmI |
31232.667 |
21938.00 |
25972.47 |
0.1207508 |
0.1920288 |
0.6288160 |
0.5294695 |
0.6219050 |
19 |
| rpmF |
15268.333 |
29648.67 |
24379.94 |
1.5913510 |
0.2436218 |
6.5320550 |
0.0000000 |
0.0000000 |
20 |
| rpsB |
34217.667 |
17078.67 |
24045.40 |
-0.3626045 |
0.2671686 |
-1.3572123 |
0.1747138 |
0.2478780 |
21 |
| rplJ |
33518.333 |
16151.67 |
23005.48 |
-0.3892700 |
0.3617770 |
-1.0759943 |
0.2819298 |
0.3703093 |
22 |
| yfcZ |
14178.667 |
27684.00 |
22828.00 |
1.5874138 |
0.2481763 |
6.3963145 |
0.0000000 |
0.0000000 |
23 |
| rplT |
24491.333 |
20243.67 |
22225.90 |
0.3576544 |
0.1923944 |
1.8589647 |
0.0630321 |
0.1031808 |
24 |
| rplA |
23908.000 |
20424.67 |
22028.18 |
0.4180488 |
0.2094002 |
1.9964105 |
0.0458893 |
0.0778589 |
25 |
| rpsO |
15127.333 |
24091.00 |
20886.93 |
1.3008786 |
0.2730182 |
4.7648053 |
0.0000019 |
0.0000078 |
26 |
| pflB |
33086.333 |
12756.33 |
20865.55 |
-0.7231451 |
0.3137060 |
-2.3051685 |
0.0211571 |
0.0391402 |
27 |
| yjbJ |
2789.333 |
31627.33 |
20661.11 |
4.1305047 |
0.3227783 |
12.7967225 |
0.0000000 |
0.0000000 |
28 |
| rplE |
13804.333 |
22364.00 |
19219.17 |
1.3461619 |
0.2689524 |
5.0052050 |
0.0000006 |
0.0000025 |
29 |
| rplM |
10910.000 |
23917.67 |
19109.55 |
1.7829314 |
0.3007764 |
5.9277629 |
0.0000000 |
0.0000000 |
30 |
| lpxC |
26566.333 |
13702.67 |
18978.60 |
-0.3169031 |
0.2403540 |
-1.3184846 |
0.1873415 |
0.2625815 |
31 |
| secY |
16037.667 |
20148.33 |
18806.45 |
0.9644556 |
0.1951182 |
4.9429303 |
0.0000008 |
0.0000034 |
32 |
| gltX |
22734.667 |
14189.67 |
17808.83 |
-0.0561086 |
0.1857645 |
-0.3020418 |
0.7626202 |
0.8221849 |
33 |
| rplN |
14334.333 |
19489.00 |
17680.15 |
1.0887234 |
0.2504251 |
4.3475004 |
0.0000138 |
0.0000498 |
34 |
| rpsD |
12110.667 |
20754.33 |
17638.29 |
1.4131124 |
0.2267058 |
6.2332443 |
0.0000000 |
0.0000000 |
35 |
| ymdF |
4693.000 |
25141.67 |
17394.24 |
3.0476376 |
0.2777163 |
10.9739234 |
0.0000000 |
0.0000000 |
36 |
| fusA |
16450.667 |
17531.67 |
17311.76 |
0.7235594 |
0.2388876 |
3.0288699 |
0.0024547 |
0.0057681 |
37 |
| tsf |
17230.333 |
16289.67 |
16913.20 |
0.5591520 |
0.2386217 |
2.3432566 |
0.0191162 |
0.0357667 |
38 |
| rplK |
16293.333 |
16950.00 |
16908.63 |
0.6984038 |
0.2004159 |
3.4847726 |
0.0004926 |
0.0013289 |
39 |
| osmB |
1949.333 |
25727.00 |
16648.43 |
4.3694682 |
0.2666722 |
16.3851670 |
0.0000000 |
0.0000000 |
40 |
| rpsC |
21929.333 |
12484.67 |
16355.46 |
-0.1716489 |
0.3144539 |
-0.5458635 |
0.5851598 |
0.6711066 |
41 |
| rplL |
22092.333 |
12108.33 |
16110.93 |
-0.2126371 |
0.3638662 |
-0.5843827 |
0.5589629 |
0.6482283 |
42 |
| rpmG |
11825.667 |
17451.33 |
15503.66 |
1.1856309 |
0.2249170 |
5.2714141 |
0.0000001 |
0.0000007 |
43 |
| yceD |
13425.000 |
16019.67 |
15205.98 |
0.8935798 |
0.2470912 |
3.6163963 |
0.0002987 |
0.0008371 |
44 |
| sra |
5984.333 |
20606.00 |
15110.77 |
2.4067048 |
0.2201034 |
10.9344274 |
0.0000000 |
0.0000000 |
45 |
| cspE |
10217.000 |
17109.00 |
14630.06 |
1.3753946 |
0.1949544 |
7.0549563 |
0.0000000 |
0.0000000 |
46 |
| rpsI |
8151.333 |
18204.33 |
14466.02 |
1.8088648 |
0.3101922 |
5.8314330 |
0.0000000 |
0.0000000 |
47 |
| eno |
13187.667 |
14456.33 |
14107.16 |
0.7879623 |
0.2730388 |
2.8858981 |
0.0039030 |
0.0087439 |
48 |
| rpsU |
12084.000 |
14889.00 |
13990.25 |
0.9289145 |
0.2083660 |
4.4580911 |
0.0000083 |
0.0000312 |
49 |
| zapB |
8985.667 |
15554.33 |
13199.38 |
1.4250514 |
0.1802939 |
7.9040447 |
0.0000000 |
0.0000000 |
50 |
# coli = read.xlsx("C:/Users/rotemh.WISMAIN/Google Drive/@מגדל השן/vesicles/@78/e_coli.xlsx",1)
LS0tDQp0aXRsZTogIkUuIGNvbGkiDQphdXRob3I6ICJSb3RlbSBIYWRhciINCmRhdGU6ICIyMHRoIFRldmV0IDU3NzkiDQpvdXRwdXQ6DQogIGh0bWxfbm90ZWJvb2s6IGRlZmF1bHQNCiAgcGRmX2RvY3VtZW50OiBkZWZhdWx0DQogIHdvcmRfZG9jdW1lbnQ6IGRlZmF1bHQNCi0tLQ0KDQpgYGB7ciwgd2FybmluZyA9IEYsIG1lc3NhZ2UgPSBGLCBlY2hvID0gRn0NCmxpYnJhcnkoREVTZXEyKQ0KbGlicmFyeSh0aWR5dmVyc2UpDQpsaWJyYXJ5KGdncGxvdDIpDQpsaWJyYXJ5KGdyaWRFeHRyYSkNCmxpYnJhcnkocGxvdGx5KQ0KbGlicmFyeShrYWJsZUV4dHJhKQ0KbGlicmFyeSh4bHN4KQ0KYGBgDQoNCiMjIyMgUmVhZCBmaWxlcw0KYGBge3IsIHdhcm5pbmcgPSBGLCBtZXNzYWdlID0gRiwgZWNobyA9IEZ9DQphbGwuZmlsZW5hbWVzID0gbGlzdC5maWxlcygiY291bnRzIikNCnBhdCA9ICJbVkRdRSINCnZlc2ljbGVzLmNvbGkuZmlsZXMgPSBncmVwKHggPSBhbGwuZmlsZW5hbWVzLCBwYXR0ZXJuID0gcGF0KQ0KdG9yZWFkID0gcGFzdGUwKCJjb3VudHMvIixhbGwuZmlsZW5hbWVzW3Zlc2ljbGVzLmNvbGkuZmlsZXNdKQ0KYGBgDQojIyMjIEZ1bmN0aW9uIHRvIHJlYWQgZmlsZXMNCmBgYHtyLCB3YXJuaW5nID0gRiwgbWVzc2FnZSA9IEYsIGVjaG8gPSBGfQ0KcmVhZGZpbGUgPSBmdW5jdGlvbihmaWxlLm5hbWUpIHsNCiAgcmVhZC5jc3YoZmlsZS5uYW1lLCBzZXAgPSAiXHQiLCBoZWFkZXIgPSBGKSAtPiB4DQogIG5hbWVzKHgpID0gcGFzdGUwKHN1YnN0cihmaWxlLm5hbWUsIDgsIDEwKSwgIi4iLCBzZXEoeCkpDQogIHJldHVybih4KQ0KfQ0KYGBgDQojIyMjIFJlYWQgYWxsIGZpbGVzIGFuZCBhcnJhbmdlIHRoZSBkYXRhDQpgYGB7ciwgd2FybmluZyA9IEYsIG1lc3NhZ2UgPSBGLCBlY2hvID0gRn0NCmRhdGEgPSBsYXBwbHkodG9yZWFkLCByZWFkZmlsZSkNCmNvbWJpbmVkID0gYmluZF9jb2xzKGRhdGFbMTo2XSkNCiMgQ2hlY2sgaWYgdGhlcmUgaXMgc29tZSBwcm9ibGVtIGFuZCBmaWxlcyBub3QgbWF0Y2ggKHBhcnRpYWwhKQ0KdHJ5KGlmKHN1bShjb21iaW5lZFssMV0gIT0gY29tYmluZWRbLDRdICYgY29tYmluZWRbLDFdICE9IGNvbWJpbmVkWyw0XSkgPiAwKQ0KICBzdG9wKCJjb2x1bW5zIGRvZXMgbm90IG1hdGNoIikpDQojIHRha2Ugb25seSBtZWFuaW5nIGZ1bGwgY29sdW1ucw0KY29tYmluZWQgPSBjb21iaW5lZFssYygxLDIsMyw2LDksMTIsMTUsMTgpXQ0KbmFtZXMoY29tYmluZWQpWzE6Ml08LSBjKCJjZHMiLCAiZ2VuZSIpDQojIyBUYWtlIGxhc3QgbGluZSB3aXRoIGdlbmVyYWwgZmVhdHVyZSBvZiBhbGlnbm1lbnQNCnN1bW0udGFibGUgPSBjb21iaW5lZFtncmVwKHggPSBjb21iaW5lZFssMV0sIHBhdHRlcm4gPSAiX18iKSxdDQpjb21iaW5lZCA9IGNvbWJpbmVkW2dyZXAoeCA9IGNvbWJpbmVkWywxXSwgcGF0dGVybiA9ICJfXyIsIGludmVydCA9IFQpLF0NCmBgYA0KIyMjIyBNYW51YWxseSBjb3JyZWN0aW9uIGZvciBwcm9ibGVtYXRpYyBnZW5lcw0KYGBge3IsIHdhcm5pbmcgPSBGLCBtZXNzYWdlID0gRiwgZWNobyA9IEZ9DQpsZXZlbHMoY29tYmluZWQkZ2VuZSk9YyhsZXZlbHMoY29tYmluZWQkZ2VuZSksICJkbmFaIiwgInliYVIiKQ0KY29tYmluZWQkZ2VuZVtncmVwKGNvbWJpbmVkJGNkcywgcGF0dGVybiA9ICJBQUM3MzU3MiIpXSA9ICJkbmFaIg0KY29tYmluZWQkZ2VuZVtncmVwKGNvbWJpbmVkJGNkcywgcGF0dGVybiA9ICJBWUMwODE4MCIpXSA9ICJ5YmFSIg0KYGBgDQpgYGB7ciwgd2FybmluZyA9IEYsIG1lc3NhZ2UgPSBGLCBlY2hvID0gRn0NCiMgR2VuZSBuYW1lcyBhcyByb3dzDQpyb3cubmFtZXMoY29tYmluZWQpPWNvbWJpbmVkJGdlbmUNCmBgYA0KIyMjIFBsb3Q6IHJlYWRzIHdpdGhvdXQgZmFldHVyZXMNCmBgYHtyLCB3YXJuaW5nID0gRiwgbWVzc2FnZSA9IEYsIGVjaG8gPSBGfQ0KbmZwID0gc3VtbS50YWJsZVsxLDM6OF0gLyAoYXBwbHkoY29tYmluZWRbLDM6OF0sIDIsIHN1bSkgKyBzdW1tLnRhYmxlWzEsMzo4XSkNCmJhcnBsb3QoYXMubnVtZXJpYyhuZnApKjEwMCwgbmFtZXMuYXJnID0gbmFtZXMobmZwKSkNCnRpdGxlKG1haW4gPSAiUmVhZHMgd2l0aG91dCBmZWF0dXJlIiwgeSA9ICIlIikNCmBgYA0KIyMjIFBsb3Q6IHJlYWRzIG5vdCBhbGlnbmVkDQpgYGB7ciwgd2FybmluZyA9IEYsIG1lc3NhZ2UgPSBGLCBlY2hvID0gRn0NCm5hciA9IHN1bW0udGFibGVbNCwzOjhdIC8gKGFwcGx5KGNvbWJpbmVkWywzOjhdLCAyLCBzdW0pICsgc3VtbS50YWJsZVsxLDM6OF0pDQpiYXJwbG90KGFzLm51bWVyaWMobmFyKSoxMDAsIG5hbWVzLmFyZyA9IG5hbWVzKG5hcikpDQp0aXRsZShtYWluID0gIlJlYWRzIG5vdCBhbGlnbmVkIiwgeSA9ICIlIikNCmBgYA0KIyMjIyMgTWFrZSBERFMNCmBgYHtyLCB3YXJuaW5nID0gRiwgbWVzc2FnZSA9IEYsIGVjaG8gPSBGfQ0KY3RzID0gYXMubWF0cml4KGNvbWJpbmVkWyxzZXEoMyxsZW5ndGgoY29tYmluZWQpKV0pDQoNCmNvbGRhdGEgPWRhdGEuZnJhbWUoc3RyX3N1Yihjb2xuYW1lcyhjdHMpLDEsLTQpLCByb3cubmFtZXMgPSBjb2xuYW1lcyhjdHMpKQ0KY29sbmFtZXMoY29sZGF0YSk9InNhbXBsZSINCmRkcyA9IERFU2VxRGF0YVNldEZyb21NYXRyaXgoY291bnREYXRhID0gY3RzLCBjb2xEYXRhID0gY29sZGF0YSwgZGVzaWduID0gfnNhbXBsZSkNCmBgYA0KIyMjIyBBdmVyYWdlIHNhbXBsZXMNCmBgYHtyLCB3YXJuaW5nID0gRiwgbWVzc2FnZSA9IEYsIGVjaG8gPSBGfQ0KIyBzdHJfc3ViKG5hbWVzKGNvbWJpbmVkKSwgMSwgLTQpDQpjb21iaW5lZCA9IGNvbWJpbmVkICU+JSBtdXRhdGUoDQphdmVyYWdlLmVjb2xpID0gYXBwbHkoY29tYmluZWRbLGdyZXAobmFtZXMoY29tYmluZWQpLCBwYXR0ZXJuID0gIkQiKV0sIDEsIG1lYW4pDQopICU+JSBtdXRhdGUoDQphdmVyYWdlLnZlc2ljbGVzID0gYXBwbHkoY29tYmluZWRbLGdyZXAobmFtZXMoY29tYmluZWQpLCBwYXR0ZXJuID0gIlYiKV0sIDEsIG1lYW4pDQopDQphdmcgPSBjb21iaW5lZFssYygyLDksMTApXQ0KIyBhdmcgJT4lIGFycmFuZ2UoZGVzYyhhdmVyYWdlLmVjb2xpKSkNCmBgYA0KIyMjIyBQcmUtZmlsdGVyaW5nDQpgYGB7ciBQcmUtZmlsdGVyaW5nLCB3YXJuaW5nID0gRiwgbWVzc2FnZSA9IEYsIGVjaG8gPSBGfQ0Ka2VlcCA8LSByb3dTdW1zKGNvdW50cyhkZHMpKSA+PSAxMA0KZGRzIDwtIGRkc1trZWVwLF0NCmRkcyRzYW1wbGUgPSBmYWN0b3IoZGRzJHNhbXBsZSwgbGV2ZWxzID0gYygiREUiLCAiVkUiKSkNCmBgYA0KIyMjIyBDb21wdXRlIERFU2VxMg0KYGBge3IsIHdhcm5pbmcgPSBGLCBtZXNzYWdlID0gRiwgZWNobyA9IEZ9DQpkZHMgPC0gREVTZXEoZGRzKQ0KcmVzIDwtIHJlc3VsdHMoZGRzKQ0KDQpzaHIgPSBsZmNTaHJpbmsoZGRzLCBjb2VmID0gcmVzdWx0c05hbWVzKGRkcylbMl0sIHR5cGU9ImFwZWdsbSIpDQojIHJlcyA9IGxmY1NocmluayhkZHMsIGNvZWYgPSByZXN1bHRzTmFtZXMoZGRzKVsyXSwgdHlwZT0iYXBlZ2xtIikNCg0KYGBgDQoNCmBgYHtyLCB3YXJuaW5nID0gRiwgbWVzc2FnZSA9IEYsIGVjaG8gPSBGfQ0KdG9wbG90MSA9IGRhdGEuZnJhbWUocmVzKSAlPiUgDQogIHJvd25hbWVzX3RvX2NvbHVtbigpICU+JSAgDQogIGFycmFuZ2UobG9nMkZvbGRDaGFuZ2UpICU+JSANCiAgc2xpY2UoMToxMCkNCiMgdG9wbG90MSA9IHRvcGxvdDEgJT4lIHRvcF9uKDEwLCBsb2cyRm9sZENoYW5nZSkNCmdncGxvdCh0b3Bsb3QxLCBhZXMoeCA9IHJvd25hbWUsIHkgPSBsb2cyRm9sZENoYW5nZSwgZXJyb3IgPSBsZmNTRSkpICsNCiAgZ2VvbV9jb2woKSArIA0KICBnZ3RpdGxlKCJMb3dlc3QgZm9sZGNoYW5nZSBhYnVuZGFuY2UgaW4gdmVzaWNsZXMiKSArIA0KICB0aGVtZV9jbGFzc2ljKCkNCmBgYA0KDQpgYGB7ciwgd2FybmluZyA9IEYsIG1lc3NhZ2UgPSBGLCBlY2hvID0gRn0NCnRvcGxvdDIgPSBkYXRhLmZyYW1lKHJlcykgJT4lDQogIHJvd25hbWVzX3RvX2NvbHVtbigpICU+JSAgDQogIGFycmFuZ2UoZGVzYyhsb2cyRm9sZENoYW5nZSkpIA0KdG9wbG90MiA9IHRvcGxvdDIgJT4lIHRvcF9uKDEwLCBsb2cyRm9sZENoYW5nZSkNCmdncGxvdCh0b3Bsb3QyLCBhZXMoeCA9IHJvd25hbWUsIHkgPSBsb2cyRm9sZENoYW5nZSwgZXJyb3IgPSBsZmNTRSkpICsNCiAgZ2VvbV9jb2woKSArIA0KICBnZ3RpdGxlKCJIaWdoZXN0IGZvbGRjaGFuZ2UgYWJ1bmRhbmNlIGluIHZlc2ljbGVzIikgKyANCiAgdGhlbWVfY2xhc3NpYygpDQoNCmBgYA0KDQpgYGB7ciwgd2FybmluZyA9IEYsIG1lc3NhZ2UgPSBGLCBlY2hvID0gRn0NCnRvcGxvdDMgPSBjb21iaW5lZCAlPiUNCiAgYXJyYW5nZShkZXNjKGF2ZXJhZ2UuZWNvbGkpKSANCnRvcGxvdDMgPSB0b3Bsb3QzICU+JSB0b3BfbigyMCwgYXZlcmFnZS5lY29saSkgJT4lIA0KICBzZWxlY3QoZ2VuZSwgYXZlcmFnZS5lY29saSwgYXZlcmFnZS52ZXNpY2xlcykgJT4lIA0KICBnYXRoZXIodmFsdWUgPSBhdmVyYWdlLmV4cHJlc3Npb24sIHNhbXBsZSwgMjozKQ0KdG9wbG90MyRzYW1wbGVbdG9wbG90MyRzYW1wbGUgPT0gImF2ZXJhZ2UuZWNvbGkiXSA9ICJFLmNvbGkiDQp0b3Bsb3QzJHNhbXBsZVt0b3Bsb3QzJHNhbXBsZSA9PSAiYXZlcmFnZS52ZXNpY2xlcyJdID0gInZlc2ljbGVzIg0KDQoNCmcxID0gZ2dwbG90KHRvcGxvdDMsIGFlcyh4ID0gcmVvcmRlcihnZW5lLCBzZXFfYWxvbmcoZ2VuZSksIHdpZHRoID0gNTAwKQ0KICAgICAgICAgICAgICAgICAgICAgICAgLCBmaWxsID0gc2FtcGxlDQogICAgICAgICAgICAgICAgICAgICAgICAsIHkgPSBhdmVyYWdlLmV4cHJlc3Npb24pKSArIA0KICBnZW9tX2NvbChwb3NpdGlvbj0iZG9kZ2UiKSArDQogIHNjYWxlX3lfY29udGludW91cyhleHBhbmQgPSBjKDAsMCkpICsNCiAgbGFicyh4ID0gImdlbmVzIiwgdGl0bGUgPSAiVG9wIDIwIGV4cHJlc3NlZCBnZW5lcyIsIHkgPSAiYXZlcmFnZSBleHByZXNzaW9uIiwgZmlsbCA9ICIiKSsNCiAgdGhlbWVfY2xhc3NpYygpICsNCiAgdGhlbWUoIGF4aXMudGV4dC54ID0gZWxlbWVudF90ZXh0KGFuZ2xlID0gMjcwLCBoanVzdCA9IDAsIHZqdXN0ID0gMCkNCiAgICAgICAgLCB0ZXh0ID0gZWxlbWVudF90ZXh0KHNpemU9MjApDQogICAgICAgICwgcGxvdC50aXRsZSA9IGVsZW1lbnRfdGV4dChoanVzdCA9IDAuNSkNCiAgICAgICAgLCBsZWdlbmQucG9zaXRpb24gPSBjKDAuOCwgMC44KSkNCiMgZ2dwbG90bHkoZzEsIHdpZHRoID0gODAwKQ0KZzENCmBgYA0KDQpgYGB7ciwgd2FybmluZyA9IEYsIG1lc3NhZ2UgPSBGLCBlY2hvID0gRn0NCmxvbmcgPSAzMDANCnBlcmNlbnRhZ2UgPSB2ZWN0b3IobGVuZ3RoID0gbG9uZykNCmZvciAoaSBpbiBzZXFfYWxvbmcocGVyY2VudGFnZSkpew0KICB0YWtlID0gaQ0KICB0b3AxMDBiYWMgPSB1bmxpc3QoYXMubGlzdChjb21iaW5lZCAlPiUgYXJyYW5nZShkZXNjKGF2ZXJhZ2UuZWNvbGkpKSAlPiUgc2xpY2UoMTp0YWtlKSAlPiUgc2VsZWN0KGdlbmUpKSkNCiAgdG9wMTAwdmVzID0gdW5saXN0KGFzLmxpc3QoY29tYmluZWQgJT4lIGFycmFuZ2UoZGVzYyhhdmVyYWdlLnZlc2ljbGVzKSkgJT4lIHNsaWNlKDE6dGFrZSkgJT4lIHNlbGVjdChnZW5lKSkpDQogIHBlcmNlbnRhZ2VbaV0gPSBsZW5ndGgoaW50ZXJzZWN0KHRvcDEwMGJhYywgdG9wMTAwdmVzKSkvdGFrZQ0KfQ0KcGxvdChwZXJjZW50YWdlWzIwOjMwMF0sIHhsYWIgPSAidG9wIE4gZ2VuZXMgWzIwOjMwMF0iLCB5bGFiID0gInJhdGlvIikNCnRpdGxlKCJwZXJjZW50YWdlIG9mIGdlbmVzIGNvbW1vbiBpbiB2ZXNpY2xlcyBmcm9tIHRoZSBjb21tb24gZ2VuZXMgaW4gYmFjdGVyaWEiKQ0KDQoNCm1lYW4ocGVyY2VudGFnZVsyMDozMDBdKQ0KYGBgDQoNCg0KDQpgYGB7ciwgd2FybmluZyA9IEYsIG1lc3NhZ2UgPSBGLCBlY2hvID0gRn0NCnByZXVybCA9ICJodHRwczovL3d3dy5uY2JpLm5sbS5uaWguZ292L2dlbmU/dGVybT0oIg0Kc3VmdXJsID0gIltnZW5lXSklMjBBTkQlMjAoRXNjaGVyaWNoaWElMjBjb2xpJTIwc3RyLiUyMEstMTIlMjBzdWJzdHIuJTIwTUcxNjU1W29yZ25dKSUyMEFORCUyMGFsaXZlW3Byb3BdJTIwTk9UJTIwbmV3ZW50cnlbZ2VuZV0mc29ydD13ZWlnaHQiDQoNCmFsbF90YWJsZSA9IHJlcyAlPiUgZGF0YS5mcmFtZSgpICU+JSANCnJvd25hbWVzX3RvX2NvbHVtbigpICU+JSANCnJlbmFtZShnZW5lID0gcm93bmFtZSkNCg0KYWxsX3RhYmxlID0gbWVyZ2UoY29tYmluZWRbLGMoMiw5LDEwKV0sIGFsbF90YWJsZSkNCmFsbF90YWJsZSRsaW5rcyA9IHBhc3RlMChwcmV1cmwsIGFsbF90YWJsZSRnZW5lLCBzdWZ1cmwpDQpgYGANCg0KDQo8cD48c3BhbiBzdHlsZT0iYmFja2dyb3VuZDpncmVlbiI+PHNwYW4gc3R5bGU9ImNvbG9yOndoaXRlIj5JbiBncmVlbiBnZW5lcyBoaWdobHkgZXhwcmVzc2VkIGluIHZlc2ljbGVzIGJ1dCBub3QgaW4gY2VsbHM8L3NwYW4+PC9zcGFuPi48L3A+DQo8cD48c3BhbiBzdHlsZT0iYmFja2dyb3VuZDpyZWQiPkluIHJlZCBnZW5lcyBoaWdobHkgZXhwcmVzc2VkIGluIGNlbGxzIGJ1dCBub3QgaW4gdGhlIHZlc2ljbGVzPC9zcGFuPi48L3A+DQpgYGB7ciwgd2FybmluZyA9IEYsIG1lc3NhZ2UgPSBGLCBlY2hvID0gRn0NCmZpZnR5ID0gNTANCnRvcDUwYmFjID0gYWxsX3RhYmxlICU+JSBhcnJhbmdlKGRlc2MoYXZlcmFnZS5lY29saSkpICU+JSBzbGljZSgxOmZpZnR5KQ0KdG9wNTB2ZXMgPSBhbGxfdGFibGUgJT4lIGFycmFuZ2UoZGVzYyhhdmVyYWdlLnZlc2ljbGVzKSkgJT4lIHNsaWNlKDE6ZmlmdHkpDQoNCmhpZ2hfaW5fYmFjdGVyaWFfbm90X2luX3ZlcyA9IHNldGRpZmYodG9wNTBiYWMkZ2VuZSwgdG9wNTB2ZXMkZ2VuZSkNCmhpZ2hfaW5fdmVzaWNsZXNfbm90X2luX2JhYyA9IHNldGRpZmYodG9wNTB2ZXMkZ2VuZSwgdG9wNTBiYWMkZ2VuZSkNCg0KbmljZVRhYmxlID0gYWxsX3RhYmxlICU+JQ0KZGF0YS5mcmFtZSgpICU+JQ0KYXJyYW5nZShkZXNjKGJhc2VNZWFuKSkgJT4lIA0KbXV0YXRlKGxpbmsgPSAxOm4oKSkgJT4lIA0KbXV0YXRlKGxpbmsgPSBjZWxsX3NwZWMobGluaywgbGluayA9IGxpbmtzLCBib2xkID0gVCwgY29sb3IgPSAiIzAwMDBGRiIsIHVuZGVybGluZSA9IFQpKSAlPiUgDQpzZWxlY3QoLWxpbmtzKSAlPiUgDQpzbGljZSgxOihmaWZ0eSkpDQoNCg0KDQpuaWNlVGFibGUgJT4lIA0Ka2FibGUoZXNjYXBlID0gRiwgYWxpZ24gPSAiYyIpICU+JSANCmthYmxlX3N0eWxpbmcoYm9vdHN0cmFwX29wdGlvbnMgPSBjKCJzdHJpcGVkIiwgImhvdmVyIiwgImNvbmRlbnNlZCIsICJyZXNwb25zaXZlIikpICU+JSANCnJvd19zcGVjKG1hdGNoKGhpZ2hfaW5fYmFjdGVyaWFfbm90X2luX3ZlcywgbmljZVRhYmxlJGdlbmUgLG5vbWF0Y2ggPSAwKQ0KICAgICAgICAgLCBiYWNrZ3JvdW5kID0gIiNENzI2MUUiLCBjb2xvciA9ICJ3aGl0ZSIpICU+JSANCnJvd19zcGVjKG1hdGNoKGhpZ2hfaW5fdmVzaWNsZXNfbm90X2luX2JhYywgbmljZVRhYmxlJGdlbmUgLG5vbWF0Y2ggPSAwKQ0KICAgICAgICAgLCBiYWNrZ3JvdW5kID0gImdyZWVuIiwgY29sb3IgPSAid2hpdGUiKSAlPiUgDQpyb3dfc3BlYygwLCBiYWNrZ3JvdW5kID0gImdyZXkiKSAlPiUgDQogIGNvbHVtbl9zcGVjKDEwLCBjb2xvciA9ICIjMDAwMEZGIiwgdW5kZXJsaW5lID0gVCkNCg0KDQpgYGANCmBgYHtyfQ0KIyBjb2xpID0gcmVhZC54bHN4KCJDOi9Vc2Vycy9yb3RlbWguV0lTTUFJTi9Hb29nbGUgRHJpdmUvQNee15LXk9ecINeU16nXny92ZXNpY2xlcy9ANzgvZV9jb2xpLnhsc3giLDEpDQpgYGANCg0K