Assemblies were generated using SHASTA and Canu. Three sets of parameters were used with SHASTA.
|
Stats.SHASTA.k10
|
Stats.SHASTA.k12
|
Stats.SHASTA.k8
|
Stats.Canu
|
Number.Contigs
|
1393
|
1884
|
3360
|
98
|
Total.Assembled.Bases
|
2.476E+08
|
1.873E+08
|
2.749E+08
|
2.704E+08
|
Maximum.Contig.Length
|
7.005E+06
|
4.253E+06
|
1.311E+07
|
3.677E+07
|
Percent.N
|
0
|
0
|
0
|
0
|
GC.Content
|
0.3567
|
0.3529
|
0.3626
|
0.3604
|
Scaffold N50 is an important attribute for assessing a genome assembly. Below we present NXX defined similarly as N50.
NXX
|
LXX.SHASTA.k10
|
Length.SHASTA.k10
|
LXX.SHASTA.k12
|
Length.SHASTA.k12
|
LXX.SHASTA.k8
|
Length.SHASTA.k8
|
LXX.Canu
|
Length.Canu
|
N10
|
5
|
4,570,304 bp
|
8
|
1,754,081 bp
|
3
|
8,825,071 bp
|
1
|
36,769,623 bp
|
N20
|
12
|
3,151,112 bp
|
22
|
1,085,465 bp
|
6
|
7,563,619 bp
|
3
|
11,056,894 bp
|
N30
|
21
|
2,035,684 bp
|
48
|
588,786 bp
|
10
|
5,113,312 bp
|
5
|
10,095,275 bp
|
N40
|
39
|
1,106,116 bp
|
86
|
413,238 bp
|
17
|
3,638,477 bp
|
9
|
7,866,814 bp
|
N50
|
67
|
718,850 bp
|
143
|
272,727 bp
|
25
|
2,760,205 bp
|
12
|
6,977,363 bp
|
N60
|
107
|
545,752 bp
|
227
|
183,577 bp
|
37
|
2,113,198 bp
|
17
|
5,539,772 bp
|
N70
|
162
|
382,051 bp
|
352
|
123,090 bp
|
52
|
1,620,868 bp
|
22
|
4,600,950 bp
|
N80
|
240
|
258,557 bp
|
541
|
78,700 bp
|
73
|
1,054,307 bp
|
29
|
3,527,172 bp
|
N90
|
367
|
146,922 bp
|
850
|
45,597 bp
|
106
|
655,895 bp
|
37
|
3,077,120 bp
|
Another way to look at the contributions of different length of contigs to the total genome size, the following plot provides a graphical representation.
LS0tCnRpdGxlOiAiR2Vub21pY3MgQXNzZW1ibHkgKE9OVCkiCm91dHB1dDoKICBodG1sX25vdGVib29rOgojICAgY29kZV9mb2xkaW5nPSJoaWRlIgogIGh0bWxfZG9jdW1lbnQ6CiMgICBjb2RlX2ZvbGRpbmc9ImhpZGUiCi0tLQoKCiMjIyMgQXNzZW1ibGllcyB3ZXJlIGdlbmVyYXRlZCB1c2luZyBTSEFTVEEgYW5kIENhbnUuIFRocmVlIHNldHMgb2YgcGFyYW1ldGVycyB3ZXJlIHVzZWQgd2l0aCBTSEFTVEEuCgoKYGBge3IgaW5jbHVkZT1GQUxTRX0KbGlicmFyeShTaG9ydFJlYWQpCmxpYnJhcnkoQmlvc3RyaW5ncykKbGlicmFyeShnZ3Bsb3QyKQpsaWJyYXJ5KGthYmxlRXh0cmEpCmxpYnJhcnkoa25pdHIpCmxpYnJhcnkocGxvdGx5KQpgYGAKCgpgYGB7ciBlY2hvPUZBTFNFfQojIyMjIDEwWCBhc3NlbWJseQojc3lzdGVtKCJmb2xkIC13IDEwMDAgYmxhY2tfdGFpbF9kZWVyLnBzZXVkb2hhcC5mYXN0YSA+IGJsYWNrX3RhaWxfZGVlci5wc2V1ZG9oYXAuZm9sZGVkLmZhc3RhIiwgaW50ZXJuPVRSVUUpCiNzeXN0ZW0oImN1dCAtZCcgJyAtZjEgYmxhY2tfdGFpbF9kZWVyLnBzZXVkb2hhcC5mYXN0YSA+IGJsYWNrX3RhaWxfZGVlci5wc2V1ZG9oYXAucmVmb3JtLmZhc3RhIiwgaW50ZXJuPVRSVUUpCmFzc2VtYmx5MTB4IDwtIHJlYWRETkFTdHJpbmdTZXQoIi4uLzAzLVNIQVNUQS9ydW4xL0Fzc2VtYmx5LmZhc3RhIikKCiMgcmVvcmRlciBsYXJnZXN0IHRvIHNtYWxsZXN0CmFzc2VtYmx5MTB4IDwtIGFzc2VtYmx5MTB4W29yZGVyKC13aWR0aChhc3NlbWJseTEweCkpXQp3aWR0aC5hc3NlbWJseSA8LSBhcy5udW1lcmljKHdpZHRoKGFzc2VtYmx5MTB4KSkKCmExMFhfbnVtYmVyX29mX2NvbnRpZ3MgPC0gbGVuZ3RoKGFzc2VtYmx5MTB4KQphMTBYX2dlbm9tZV9zaXplIDwtIHN1bSh3aWR0aC5hc3NlbWJseSkKYTEwWF9tYXhfY29udGlnIDwtIG1heCh3aWR0aC5hc3NlbWJseSkKCmFmIDwtIGFscGhhYmV0RnJlcXVlbmN5KGFzc2VtYmx5MTB4KVssYygiQSIsIkMiLCJHIiwiVCIsIk4iKV0KYTEwWF9wZXJjZW50TiA8LSBzdW0oYWZbLCdOJ10pL3N1bShhcy5udW1lcmljKGFmKSkqMTAwCmExMFhfZ2NieWNvbnRpZyA8LSByb3dTdW1zKGFmWyxjKCJHIiwiQyIpXSkvcm93U3VtcyhhZlssYygiQSIsIkMiLCJHIiwiVCIpXSkKYTEwWF9nY2NvbnRlbnQgPC0gc3VtKHJvd1N1bXMoYWZbLGMoIkciLCJDIildKSkvc3VtKHJvd1N1bXMoYWZbLGMoIkEiLCJDIiwiRyIsIlQiKV0pKQpjcyA8LSBjdW1zdW0od2lkdGguYXNzZW1ibHkpCmQycCA8LSBkYXRhLmZyYW1lKENvbnRpZ3M9d2lkdGguYXNzZW1ibHksIEN1bXUubGVucz1jcywgc3RyaW5nc0FzRmFjdG9ycz1GKQoKTmxlbnMgPC0gd2lkdGguYXNzZW1ibHlbd2hpY2goIWR1cGxpY2F0ZWQodHJ1bmMoKGNzL3N1bSh3aWR0aC5hc3NlbWJseSkqMTApKSkpXQpOcGVyYyA8LSBzaWduaWYoKGNzL3N1bSh3aWR0aC5hc3NlbWJseSkpW3doaWNoKCFkdXBsaWNhdGVkKHRydW5jKChjcy9zdW0od2lkdGguYXNzZW1ibHkpKjEwKSkpKV0qMTAwLDEpCk5pbmQgPC0gd2hpY2goIWR1cGxpY2F0ZWQodHJ1bmMoKGNzL3N1bSh3aWR0aC5hc3NlbWJseSkqMTApKSkpCgpObGVucyA8LSBObGVuc1t3aGljaChOcGVyYyAlaW4lIHNlcSgxMCw5MCxieT0xMCkpXQpOaW5kIDwtIE5pbmRbd2hpY2goTnBlcmMgJWluJSBzZXEoMTAsOTAsYnk9MTApKV0KTnBlcmMgPC0gTnBlcmNbd2hpY2goTnBlcmMgJWluJSBzZXEoMTAsOTAsYnk9MTApKV0KCmBgYAoKCmBgYHtyIGVjaG89RkFMU0V9CiMjIyMgMTBYIGFzc2VtYmx5IE5vdmFzZXEgc3lzdGVtCiNzeXN0ZW0oImZvbGQgLXcgMTAwMCBibGFja190YWlsX2RlZXIucHNldWRvaGFwLmZhc3RhID4gYmxhY2tfdGFpbF9kZWVyLnBzZXVkb2hhcC5mb2xkZWQuZmFzdGEiLCBpbnRlcm49VFJVRSkKYXNzZW1ibHkxMHgubm92YSA8LSByZWFkRE5BU3RyaW5nU2V0KCIuLi8wMy1TSEFTVEEvcnVuMi9Bc3NlbWJseS5mYXN0YSIpCgojIHJlb3JkZXIgbGFyZ2VzdCB0byBzbWFsbGVzdAphc3NlbWJseTEweC5ub3ZhIDwtIGFzc2VtYmx5MTB4Lm5vdmFbb3JkZXIoLXdpZHRoKGFzc2VtYmx5MTB4Lm5vdmEpKV0Kd2lkdGguYXNzZW1ibHkubm92YSA8LSBhcy5udW1lcmljKHdpZHRoKGFzc2VtYmx5MTB4Lm5vdmEpKQoKYTEwWF9udW1iZXJfb2ZfY29udGlncy5ub3ZhIDwtIGxlbmd0aChhc3NlbWJseTEweC5ub3ZhKQphMTBYX2dlbm9tZV9zaXplLm5vdmEgPC0gc3VtKHdpZHRoLmFzc2VtYmx5Lm5vdmEpCmExMFhfbWF4X2NvbnRpZy5ub3ZhIDwtIG1heCh3aWR0aC5hc3NlbWJseS5ub3ZhKQoKYWYubm92YSA8LSBhbHBoYWJldEZyZXF1ZW5jeShhc3NlbWJseTEweC5ub3ZhKVssYygiQSIsIkMiLCJHIiwiVCIsIk4iKV0KYTEwWF9wZXJjZW50Ti5ub3ZhIDwtIHN1bShhZi5ub3ZhWywnTiddKS9zdW0oYXMubnVtZXJpYyhhZi5ub3ZhKSkqMTAwCmExMFhfZ2NieWNvbnRpZy5ub3ZhIDwtIHJvd1N1bXMoYWYubm92YVssYygiRyIsIkMiKV0pL3Jvd1N1bXMoYWYubm92YVssYygiQSIsIkMiLCJHIiwiVCIpXSkKYTEwWF9nY2NvbnRlbnQubm92YSA8LSBzdW0ocm93U3VtcyhhZi5ub3ZhWyxjKCJHIiwiQyIpXSkpL3N1bShyb3dTdW1zKGFmLm5vdmFbLGMoIkEiLCJDIiwiRyIsIlQiKV0pKQpjcy5ub3ZhIDwtIGN1bXN1bSh3aWR0aC5hc3NlbWJseS5ub3ZhKQpkMnAubm92YSA8LSBkYXRhLmZyYW1lKENvbnRpZ3M9d2lkdGguYXNzZW1ibHkubm92YSwgQ3VtdS5sZW5zPWNzLm5vdmEsIHN0cmluZ3NBc0ZhY3RvcnM9RikKCk5sZW5zLm5vdmEgPC0gd2lkdGguYXNzZW1ibHkubm92YVt3aGljaCghZHVwbGljYXRlZCh0cnVuYygoY3Mubm92YS9zdW0od2lkdGguYXNzZW1ibHkubm92YSkqMTApKSkpXQpOcGVyYy5ub3ZhIDwtIHNpZ25pZigoY3Mubm92YS9zdW0od2lkdGguYXNzZW1ibHkubm92YSkpW3doaWNoKCFkdXBsaWNhdGVkKHRydW5jKChjcy5ub3ZhL3N1bSh3aWR0aC5hc3NlbWJseS5ub3ZhKSoxMCkpKSldKjEwMCwxKQpOaW5kLm5vdmEgPC0gd2hpY2goIWR1cGxpY2F0ZWQodHJ1bmMoKGNzLm5vdmEvc3VtKHdpZHRoLmFzc2VtYmx5Lm5vdmEpKjEwKSkpKQoKTmxlbnMubm92YSA8LSBObGVucy5ub3ZhW3doaWNoKE5wZXJjLm5vdmEgJWluJSBzZXEoMTAsOTAsYnk9MTApKV0KTmluZC5ub3ZhIDwtIE5pbmQubm92YVt3aGljaChOcGVyYy5ub3ZhICVpbiUgc2VxKDEwLDkwLGJ5PTEwKSldCk5wZXJjLm5vdmEgPC0gTnBlcmMubm92YVt3aGljaChOcGVyYy5ub3ZhICVpbiUgc2VxKDEwLDkwLGJ5PTEwKSldCmBgYAoKCmBgYHtyIGVjaG89RkFMU0V9CiMjIyMgMTBYIGFzc2VtYmx5IE5vdmFzZXEgc3lzdGVtCiNzeXN0ZW0oImZvbGQgLXcgMTAwMCBibGFja190YWlsX2RlZXIucHNldWRvaGFwLmZhc3RhID4gYmxhY2tfdGFpbF9kZWVyLnBzZXVkb2hhcC5mb2xkZWQuZmFzdGEiLCBpbnRlcm49VFJVRSkKYXNzZW1ibHkxMHguY3V0OGsgPC0gcmVhZEROQVN0cmluZ1NldCgiLi4vMDMtU0hBU1RBL3J1bjMvQXNzZW1ibHkuZmFzdGEiKQoKIyByZW9yZGVyIGxhcmdlc3QgdG8gc21hbGxlc3QKYXNzZW1ibHkxMHguY3V0OGsgPC0gYXNzZW1ibHkxMHguY3V0OGtbb3JkZXIoLXdpZHRoKGFzc2VtYmx5MTB4LmN1dDhrKSldCndpZHRoLmFzc2VtYmx5LmN1dDhrIDwtIGFzLm51bWVyaWMod2lkdGgoYXNzZW1ibHkxMHguY3V0OGspKQoKYTEwWF9udW1iZXJfb2ZfY29udGlncy5jdXQ4ayA8LSBsZW5ndGgoYXNzZW1ibHkxMHguY3V0OGspCmExMFhfZ2Vub21lX3NpemUuY3V0OGsgPC0gc3VtKHdpZHRoLmFzc2VtYmx5LmN1dDhrKQphMTBYX21heF9jb250aWcuY3V0OGsgPC0gbWF4KHdpZHRoLmFzc2VtYmx5LmN1dDhrKQoKYWYuY3V0OGsgPC0gYWxwaGFiZXRGcmVxdWVuY3koYXNzZW1ibHkxMHguY3V0OGspWyxjKCJBIiwiQyIsIkciLCJUIiwiTiIpXQphMTBYX3BlcmNlbnROLmN1dDhrIDwtIHN1bShhZi5jdXQ4a1ssJ04nXSkvc3VtKGFzLm51bWVyaWMoYWYuY3V0OGspKSoxMDAKYTEwWF9nY2J5Y29udGlnLmN1dDhrIDwtIHJvd1N1bXMoYWYuY3V0OGtbLGMoIkciLCJDIildKS9yb3dTdW1zKGFmLmN1dDhrWyxjKCJBIiwiQyIsIkciLCJUIildKQphMTBYX2djY29udGVudC5jdXQ4ayA8LSBzdW0ocm93U3VtcyhhZi5jdXQ4a1ssYygiRyIsIkMiKV0pKS9zdW0ocm93U3VtcyhhZi5jdXQ4a1ssYygiQSIsIkMiLCJHIiwiVCIpXSkpCmNzLmN1dDhrIDwtIGN1bXN1bSh3aWR0aC5hc3NlbWJseS5jdXQ4aykKZDJwLmN1dDhrIDwtIGRhdGEuZnJhbWUoQ29udGlncz13aWR0aC5hc3NlbWJseS5jdXQ4aywgQ3VtdS5sZW5zPWNzLmN1dDhrLCBzdHJpbmdzQXNGYWN0b3JzPUYpCgpObGVucy5jdXQ4ayA8LSB3aWR0aC5hc3NlbWJseS5jdXQ4a1t3aGljaCghZHVwbGljYXRlZCh0cnVuYygoY3MuY3V0OGsvc3VtKHdpZHRoLmFzc2VtYmx5LmN1dDhrKSoxMCkpKSldCk5wZXJjLmN1dDhrIDwtIHNpZ25pZigoY3MuY3V0OGsvc3VtKHdpZHRoLmFzc2VtYmx5LmN1dDhrKSlbd2hpY2goIWR1cGxpY2F0ZWQodHJ1bmMoKGNzLmN1dDhrL3N1bSh3aWR0aC5hc3NlbWJseS5jdXQ4aykqMTApKSkpXSoxMDAsMSkKTmluZC5jdXQ4ayA8LSB3aGljaCghZHVwbGljYXRlZCh0cnVuYygoY3MuY3V0OGsvc3VtKHdpZHRoLmFzc2VtYmx5LmN1dDhrKSoxMCkpKSkKCk5sZW5zLmN1dDhrIDwtIE5sZW5zLmN1dDhrW3doaWNoKE5wZXJjLmN1dDhrICVpbiUgc2VxKDEwLDkwLGJ5PTEwKSldCk5pbmQuY3V0OGsgPC0gTmluZC5jdXQ4a1t3aGljaChOcGVyYy5jdXQ4ayAlaW4lIHNlcSgxMCw5MCxieT0xMCkpXQpOcGVyYy5jdXQ4ayA8LSBOcGVyYy5jdXQ4a1t3aGljaChOcGVyYy5jdXQ4ayAlaW4lIHNlcSgxMCw5MCxieT0xMCkpXQpgYGAKCgpgYGB7ciBlY2hvPUZBTFNFfQojIyMjIDEwWCBhc3NlbWJseSBOb3Zhc2VxIHN5c3RlbQojc3lzdGVtKCJmb2xkIC13IDEwMDAgYmxhY2tfdGFpbF9kZWVyLnBzZXVkb2hhcC5mYXN0YSA+IGJsYWNrX3RhaWxfZGVlci5wc2V1ZG9oYXAuZm9sZGVkLmZhc3RhIiwgaW50ZXJuPVRSVUUpCmFzc2VtYmx5MTB4LmN1dDdrOGsgPC0gcmVhZEROQVN0cmluZ1NldCgiLi4vMDMtQ0FOVS9hc20uY29udGlncy5mYXN0YSIpCgojIHJlb3JkZXIgbGFyZ2VzdCB0byBzbWFsbGVzdAphc3NlbWJseTEweC5jdXQ3azhrIDwtIGFzc2VtYmx5MTB4LmN1dDdrOGtbb3JkZXIoLXdpZHRoKGFzc2VtYmx5MTB4LmN1dDdrOGspKV0Kd2lkdGguYXNzZW1ibHkuY3V0N2s4ayA8LSBhcy5udW1lcmljKHdpZHRoKGFzc2VtYmx5MTB4LmN1dDdrOGspKQoKYTEwWF9udW1iZXJfb2ZfY29udGlncy5jdXQ3azhrIDwtIGxlbmd0aChhc3NlbWJseTEweC5jdXQ3azhrKQphMTBYX2dlbm9tZV9zaXplLmN1dDdrOGsgPC0gc3VtKHdpZHRoLmFzc2VtYmx5LmN1dDdrOGspCmExMFhfbWF4X2NvbnRpZy5jdXQ3azhrIDwtIG1heCh3aWR0aC5hc3NlbWJseS5jdXQ3azhrKQoKYWYuY3V0N2s4ayA8LSBhbHBoYWJldEZyZXF1ZW5jeShhc3NlbWJseTEweC5jdXQ3azhrKVssYygiQSIsIkMiLCJHIiwiVCIsIk4iKV0KYTEwWF9wZXJjZW50Ti5jdXQ3azhrIDwtIHN1bShhZi5jdXQ3azhrWywnTiddKS9zdW0oYXMubnVtZXJpYyhhZi5jdXQ3azhrKSkqMTAwCmExMFhfZ2NieWNvbnRpZy5jdXQ3azhrIDwtIHJvd1N1bXMoYWYuY3V0N2s4a1ssYygiRyIsIkMiKV0pL3Jvd1N1bXMoYWYuY3V0N2s4a1ssYygiQSIsIkMiLCJHIiwiVCIpXSkKYTEwWF9nY2NvbnRlbnQuY3V0N2s4ayA8LSBzdW0ocm93U3VtcyhhZi5jdXQ3azhrWyxjKCJHIiwiQyIpXSkpL3N1bShyb3dTdW1zKGFmLmN1dDdrOGtbLGMoIkEiLCJDIiwiRyIsIlQiKV0pKQpjcy5jdXQ3azhrIDwtIGN1bXN1bSh3aWR0aC5hc3NlbWJseS5jdXQ3azhrKQpkMnAuY3V0N2s4ayA8LSBkYXRhLmZyYW1lKENvbnRpZ3M9d2lkdGguYXNzZW1ibHkuY3V0N2s4aywgQ3VtdS5sZW5zPWNzLmN1dDdrOGssIHN0cmluZ3NBc0ZhY3RvcnM9RikKCk5sZW5zLmN1dDdrOGsgPC0gd2lkdGguYXNzZW1ibHkuY3V0N2s4a1t3aGljaCghZHVwbGljYXRlZCh0cnVuYygoY3MuY3V0N2s4ay9zdW0od2lkdGguYXNzZW1ibHkuY3V0N2s4aykqMTApKSkpXQpOcGVyYy5jdXQ3azhrIDwtIHNpZ25pZigoY3MuY3V0N2s4ay9zdW0od2lkdGguYXNzZW1ibHkuY3V0N2s4aykpW3doaWNoKCFkdXBsaWNhdGVkKHRydW5jKChjcy5jdXQ3azhrL3N1bSh3aWR0aC5hc3NlbWJseS5jdXQ3azhrKSoxMCkpKSldKjEwMCwxKQpOaW5kLmN1dDdrOGsgPC0gd2hpY2goIWR1cGxpY2F0ZWQodHJ1bmMoKGNzLmN1dDdrOGsvc3VtKHdpZHRoLmFzc2VtYmx5LmN1dDdrOGspKjEwKSkpKQoKTmxlbnMuY3V0N2s4ayA8LSBObGVucy5jdXQ3azhrW3doaWNoKE5wZXJjLmN1dDdrOGsgJWluJSBzZXEoMTAsOTAsYnk9MTApKV0KTmluZC5jdXQ3azhrIDwtIE5pbmQuY3V0N2s4a1t3aGljaChOcGVyYy5jdXQ3azhrICVpbiUgc2VxKDEwLDkwLGJ5PTEwKSldCk5wZXJjLmN1dDdrOGsgPC0gTnBlcmMuY3V0N2s4a1t3aGljaChOcGVyYy5jdXQ3azhrICVpbiUgc2VxKDEwLDkwLGJ5PTEwKSldCmBgYAoKYGBge3IgZWNobz1GQUxTRX0KYTEwWF9OZGF0YSA8LSBkYXRhLmZyYW1lKE5YWD1OcGVyYywgTFhYLlNIQVNUQS5rMTA9TmluZCwgTGVuZ3RoLlNIQVNUQS5rMTA9TmxlbnMsIExYWC5TSEFTVEEuazEyPU5pbmQubm92YSwgTGVuZ3RoLlNIQVNUQS5rMTI9TmxlbnMubm92YSwgTFhYLlNIQVNUQS5rOD1OaW5kLmN1dDhrLCBMZW5ndGguU0hBU1RBLms4PU5sZW5zLmN1dDhrLCBMWFguQ2FudT1OaW5kLmN1dDdrOGssIExlbmd0aC5DYW51PU5sZW5zLmN1dDdrOGspCgphMTBYX05kYXRhMiA8LSBhMTBYX05kYXRhCmExMFhfTmRhdGEyJExlbmd0aC5TSEFTVEEuazEwIDwtICBwYXN0ZShmb3JtYXRDKGExMFhfTmRhdGEyJExlbmd0aC5TSEFTVEEuazEwLCBmb3JtYXQ9J2QnLCBiaWcubWFyaz0nLCcpLCJicCIpCmExMFhfTmRhdGEyJE5YWCA8LSBwYXN0ZTAoIk4iLGExMFhfTmRhdGEyJE5YWCkKYTEwWF9OZGF0YTIkTGVuZ3RoLlNIQVNUQS5rMTIgPC0gIHBhc3RlKGZvcm1hdEMoYTEwWF9OZGF0YTIkTGVuZ3RoLlNIQVNUQS5rMTIsIGZvcm1hdD0nZCcsIGJpZy5tYXJrPScsJyksImJwIikKYTEwWF9OZGF0YTIkTGVuZ3RoLlNIQVNUQS5rOCA8LSAgcGFzdGUoZm9ybWF0QyhhMTBYX05kYXRhMiRMZW5ndGguU0hBU1RBLms4LCBmb3JtYXQ9J2QnLCBiaWcubWFyaz0nLCcpLCJicCIpCmExMFhfTmRhdGEyJExlbmd0aC5DYW51IDwtICBwYXN0ZShmb3JtYXRDKGExMFhfTmRhdGEyJExlbmd0aC5DYW51LCBmb3JtYXQ9J2QnLCBiaWcubWFyaz0nLCcpLCJicCIpCgpgYGAKCmBgYHtyIGVjaG89RkFMU0V9Cm9zX05kYXRhIDwtIGRhdGEuZnJhbWUoU3RhdHMuU0hBU1RBLmsxMD1jKGExMFhfbnVtYmVyX29mX2NvbnRpZ3MsIGExMFhfZ2Vub21lX3NpemUsIGExMFhfbWF4X2NvbnRpZywgYTEwWF9wZXJjZW50TiwgYTEwWF9nY2NvbnRlbnQpLAoJCVN0YXRzLlNIQVNUQS5rMTI9YyhhMTBYX251bWJlcl9vZl9jb250aWdzLm5vdmEsIGExMFhfZ2Vub21lX3NpemUubm92YSwgCgkJCWExMFhfbWF4X2NvbnRpZy5ub3ZhLCBhMTBYX3BlcmNlbnROLm5vdmEsIGExMFhfZ2Njb250ZW50Lm5vdmEpLAoJCVN0YXRzLlNIQVNUQS5rOD1jKGExMFhfbnVtYmVyX29mX2NvbnRpZ3MuY3V0OGssIGExMFhfZ2Vub21lX3NpemUuY3V0OGssIAoJCQlhMTBYX21heF9jb250aWcuY3V0OGssIGExMFhfcGVyY2VudE4uY3V0OGssIGExMFhfZ2Njb250ZW50LmN1dDhrKSwKCQlTdGF0cy5DYW51PWMoYTEwWF9udW1iZXJfb2ZfY29udGlncy5jdXQ3azhrLCBhMTBYX2dlbm9tZV9zaXplLmN1dDdrOGssIAoJCQlhMTBYX21heF9jb250aWcuY3V0N2s4aywgYTEwWF9wZXJjZW50Ti5jdXQ3azhrLCBhMTBYX2djY29udGVudC5jdXQ3azhrKSwKCQlzdHJpbmdzQXNGYWN0b3JzPUYpCm9zX05kYXRhJFN0YXRzLlNIQVNUQS5rMTAgPC0gZm9ybWF0Qyhvc19OZGF0YSRTdGF0cy5TSEFTVEEuazEwLCBmb3JtYXQ9J0cnKQpvc19OZGF0YSRTdGF0cy5TSEFTVEEuazEyIDwtIGZvcm1hdEMob3NfTmRhdGEkU3RhdHMuU0hBU1RBLmsxMiwgZm9ybWF0PSdHJykKb3NfTmRhdGEkU3RhdHMuU0hBU1RBLms4IDwtIGZvcm1hdEMob3NfTmRhdGEkU3RhdHMuU0hBU1RBLms4LCBmb3JtYXQ9J0cnKQpvc19OZGF0YSRTdGF0cy5DYW51IDwtIGZvcm1hdEMob3NfTmRhdGEkU3RhdHMuQ2FudSwgZm9ybWF0PSdHJykKcm93bmFtZXMob3NfTmRhdGEpIDwtIGMoIk51bWJlci5Db250aWdzIiwgIlRvdGFsLkFzc2VtYmxlZC5CYXNlcyIsICJNYXhpbXVtLkNvbnRpZy5MZW5ndGgiLCAiUGVyY2VudC5OIiwgIkdDLkNvbnRlbnQiKQp0YjEgPC0ga2FibGUob3NfTmRhdGEsIGFsaWduPSdjJywgcm93Lm5hbWVzPVQsICJodG1sIikKa2FibGVfc3R5bGluZyh0YjEsIGZ1bGxfd2lkdGg9RiwgYm9vdHN0cmFwX29wdGlvbnM9Yygic3RyaXBlZCIsICJob3ZlciIsICJjb25kZW5zZWQiKSkKYGBgCgojIyMgU2NhZmZvbGQgTjUwIGlzIGFuIGltcG9ydGFudCBhdHRyaWJ1dGUgZm9yIGFzc2Vzc2luZyBhIGdlbm9tZSBhc3NlbWJseS4gQmVsb3cgd2UgcHJlc2VudCBOWFggZGVmaW5lZCBzaW1pbGFybHkgYXMgTjUwLgoKYGBge3IgZWNobz1GQUxTRX0KdGIgPC0ga2FibGUoYTEwWF9OZGF0YTIsIGFsaWduPSdjJywgImh0bWwiKQprYWJsZV9zdHlsaW5nKHRiLCBib290c3RyYXBfb3B0aW9ucz1jKCJob3ZlciIsICJjb25kZW5zZWQiLCAicmVzcG9uc2l2ZSIpLCBmdWxsX3dpZHRoPVQpCmBgYAoKCkFub3RoZXIgd2F5IHRvIGxvb2sgYXQgdGhlIGNvbnRyaWJ1dGlvbnMgb2YgZGlmZmVyZW50IGxlbmd0aCBvZiBjb250aWdzIHRvIHRoZSB0b3RhbCBnZW5vbWUgc2l6ZSwgdGhlIGZvbGxvd2luZyBwbG90IHByb3ZpZGVzIGEgZ3JhcGhpY2FsIHJlcHJlc2VudGF0aW9uLgoKYGBge3IgdHdvLWNvbHVtbiwgcmVzdWx0cz0nYXNpcycsIGVjaG89RkFMU0UsIG91dC5leHRyYT0nJ30KI2dncGxvdChkMnAsIGFlcyh4PUNvbnRpZ3MsIHk9Q3VtdS5sZW5zKSkgKyBnZW9tX3BvaW50KGFlcyhzaGFwZT0yMSwgZmlsbD0icmVkIiwgY29sb3I9InJlZCIsIHNpemU9MSkpICsgCmNhdCgiPHRhYmxlIGNsYXNzPSdjb250YWluZXInPjx0cj4iKQpjYXQoIjx0ZD4iKQpnZ3Bsb3QoZDJwLCBhZXMoeD1Db250aWdzLCB5PUN1bXUubGVucykpICsgZ2VvbV9wb2ludChjb2xvcj0icmVkIikgKyAKCXNjYWxlX3hfbG9nMTAoKSArIHNjYWxlX3lfbG9nMTAoKSArCglsYWJzKHg9IkNvbnRpZyBsZW5ndGgiLCB5PSJDdW11bGF0aXZlIHNpemUiLCB0aXRsZT0iU0hBU1RBLmsxMCIpICsgdGhlbWVfYncoKSArCgl0aGVtZShsZWdlbmQucG9zaXRpb249J25vbmUnKQpjYXQoIjwvdGQ+IikKY2F0KCI8dGQ+IikKZ2dwbG90KGQycC5ub3ZhLCBhZXMoeD1Db250aWdzLCB5PUN1bXUubGVucykpICsgZ2VvbV9wb2ludChjb2xvcj0icmVkIikgKyAKCXNjYWxlX3hfbG9nMTAoKSArIHNjYWxlX3lfbG9nMTAoKSArCglsYWJzKHg9IkNvbnRpZyBsZW5ndGgiLCB5PSJDdW11bGF0aXZlIHNpemUiLCB0aXRsZT0iU0hBU1RBLmsxMiIpICsgdGhlbWVfYncoKSArCgl0aGVtZShsZWdlbmQucG9zaXRpb249J25vbmUnKQpjYXQoIjwvdGQ+IikKY2F0KCI8dGQ+IikKZ2dwbG90KGQycC5jdXQ4aywgYWVzKHg9Q29udGlncywgeT1DdW11LmxlbnMpKSArIGdlb21fcG9pbnQoY29sb3I9InJlZCIpICsgCglzY2FsZV94X2xvZzEwKCkgKyBzY2FsZV95X2xvZzEwKCkgKwoJbGFicyh4PSJDb250aWcgbGVuZ3RoIiwgeT0iQ3VtdWxhdGl2ZSBzaXplIiwgdGl0bGU9IlNIQVNUQS5rOCIpICsgdGhlbWVfYncoKSArCgl0aGVtZShsZWdlbmQucG9zaXRpb249J25vbmUnKQpjYXQoIjwvdGQ+IikKY2F0KCI8dGQ+IikKZ2dwbG90KGQycC5jdXQ3azhrLCBhZXMoeD1Db250aWdzLCB5PUN1bXUubGVucykpICsgZ2VvbV9wb2ludChjb2xvcj0icmVkIikgKyAKCXNjYWxlX3hfbG9nMTAoKSArIHNjYWxlX3lfbG9nMTAoKSArCglsYWJzKHg9IkNvbnRpZyBsZW5ndGgiLCB5PSJDdW11bGF0aXZlIHNpemUiLCB0aXRsZT0iQ2FudSIpICsgdGhlbWVfYncoKSArCgl0aGVtZShsZWdlbmQucG9zaXRpb249J25vbmUnKQpjYXQoIjwvdGQ+IikKY2F0KCI8L3RyPjwvdGFibGU+IikKCmBgYAoKCmBgYHtyIGVjaG89RkFMU0V9CmxpYnJhcnkoa25pdHIpCmNvbEZtdCA9IGZ1bmN0aW9uKHgsY29sb3IpewogIG91dHB1dEZvcm1hdCA9IG9wdHNfa25pdCRnZXQoInJtYXJrZG93bi5wYW5kb2MudG8iKQogIGlmKG91dHB1dEZvcm1hdCA9PSAnbGF0ZXgnKQogICAgcGFzdGUoIlxcdGV4dGNvbG9yeyIsY29sb3IsIn17Iix4LCJ9IixzZXA9IiIpCiAgZWxzZSBpZihvdXRwdXRGb3JtYXQgPT0gJ2h0bWwnKQogICAgcGFzdGUoIjxmb250IGNvbG9yPSciLGNvbG9yLCInPiIseCwiPC9mb250PiIsc2VwPSIiKQogIGVsc2UKICAgIHgKfQpgYGAKCgo=