These are results of the experiments for ATVA’19:
| Filename |
home-brewed-filtered-results.tsv |
| Timeout |
60000 ms |
| Benchmarks |
57 |
| Unsupported |
2 |
| Sane benchmarks |
55 |
| Timeouts |
27 |
27 |
0 |
| Time wins (mutually) |
13 |
– |
42 |
| Time wins (mutually) |
– |
13 |
42 |
| Draws (wrt Our) |
0 |
0 |
– |
| Mean time [ms] |
1312.6605593 |
1734.4956789 |
13.1875613 |
| Median time [ms] |
55.56604 |
82.12577 |
6.24268 |
| Standard deviation of time [ms] |
2895.5786584 |
3993.1572994 |
18.6677603 |
| Maximum time [ms] |
12476.01064 |
17465.27709 |
113.36443 |
| Mean states |
615.2857143 |
313.1785714 |
15.3090909 |
| Median states |
281 |
183.5 |
13 |
| Maximum states |
2108 |
1049 |
49 |
| Standard deviation of states |
705.0239742 |
346.7047045 |
9.4768191 |
| Mean transitions |
1831.3571429 |
913.1428571 |
19.0545455 |
| Median transitions |
634 |
316.5 |
14 |
| Maximum transitions |
6362 |
3147 |
82 |
| Standard deviation of transitions |
2209.6603931 |
1092.5342173 |
15.4661137 |
Note that timeouts for Classical (to DFA) and Classical (to DFA + min) are taken from the same source. The means, medians, etc. are computed from benchmarks that did not timeout. We now set the time of the timeouted benchmarks to 66000 ms for showing in the plots. We also set the number of states of timeouted cases to 2129.08 for the plots.

Histogram of times

Counters
| Mean num. of cnts |
1.0363636 |
1.1818182 |
| Median num. of cnts |
1 |
1 |
| Std. dev. of cnts |
0.1889186 |
0.5124707 |
| Max num. of cnts |
2 |
3 |
Transitions

LS0tCnRpdGxlOiAiQ291bnRpbmcgQXV0b21hdGEgUmVzdWx0cyBBbmFseXNpcyIKcGFyYW1zOgogIGRpcjogLi9yZXN1bHRzLTAyLTA1LTIwMTkKICBmaWxlOiBob21lLWJyZXdlZC1maWx0ZXJlZC1yZXN1bHRzLnRzdgpvdXRwdXQ6CiAgaHRtbF9ub3RlYm9vazoKICAgIGNvZGVfZm9sZGluZzogaGlkZQogIHBkZl9kb2N1bWVudDogZGVmYXVsdAogIGh0bWxfZG9jdW1lbnQ6CiAgICBkZl9wcmludDogcGFnZWQKLS0tCgpUaGVzZSBhcmUgcmVzdWx0cyBvZiB0aGUgZXhwZXJpbWVudHMgZm9yIEFUVkEnMTk6CgpgYGB7ciBlY2hvPUZBTFNFfQojIGxvYWQgdGhlIHBsb3R0aW5nIGxpYnJhcnkKc3VwcHJlc3NNZXNzYWdlcyhsaWJyYXJ5KGdncGxvdDIpKQpsaWJyYXJ5KGdyaWQpCmxpYnJhcnkoZ3JpZEV4dHJhKQoKdGhlbWVfc2V0KHRoZW1lX2J3KCkpCgpvcHRpb25zKHNjaXBlbj05OTkpICAjIHR1cm4tb2ZmIHNjaWVudGlmaWMgbm90YXRpb24gbGlrZSAxZSs0OAoKVElNRU9VVF9PUklHID0gNjAwMDAKVElNRU9VVF9OQSA9IFRJTUVPVVRfT1JJRytUSU1FT1VUX09SSUcvMTAKCmZpbGVuYW1lID0gcGFyYW1zJGZpbGUKCnJlYWxwYXRoID0gcGFzdGUwKHBhcmFtcyRkaXIsICIvIiwgZmlsZW5hbWUpCmRmIDwtIHJlYWQuY3N2KHJlYWxwYXRoLCBoZWFkZXIgPSBUUlVFLCBzZXA9Ilx0IiwgZGVjPSIsIiwgc3RyaW5nc0FzRmFjdG9ycz1GQUxTRSkKYmVuY2htYXJrc19udW0gPC0gbnJvdyhkZikKdW5zdXBwb3J0ZWRfYml0bWFwIDwtICEoaXMubmEoZGYkT3VyLmV4Y2VwdGlvbikgfCBkZiRPdXIuZXhjZXB0aW9uID09ICIiKQp1bnN1cHBvcnRlZF9udW0gPC0gc3VtKHVuc3VwcG9ydGVkX2JpdG1hcCkKZGYgPC0gZGZbIXVuc3VwcG9ydGVkX2JpdG1hcCxdCnNhbml0aXplZF9udW0gPC0gbnJvdyhkZikKYGBgCgp8ICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgIHwKfC0tLS0tLS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS0tLTp8CnwgKipGaWxlbmFtZSoqICAgICAgICB8IGByIGZpbGVuYW1lYCAgICAgICAgfAp8ICoqVGltZW91dCoqICAgICAgICAgfCBgciBUSU1FT1VUX09SSUdgIG1zIHwKfCAqKkJlbmNobWFya3MqKiAgICAgIHwgYHIgYmVuY2htYXJrc19udW1gICB8CnwgKipVbnN1cHBvcnRlZCoqICAgICB8IGByIHVuc3VwcG9ydGVkX251bWAgfAp8ICoqU2FuZSBiZW5jaG1hcmtzKiogfCBgciBzYW5pdGl6ZWRfbnVtYCAgIHwKCmBgYHtyIGVjaG89RkFMU0V9CmRmCmBgYAoKYGBge3IgZWNobz1GQUxTRX0KdGltZW91dHNfb3VyPW5yb3coZGZbIWlzLm5hKGRmJHRpbWVvdXRzLm91ciksXSkKdGltZW91dHNfY2xhc3NpY2FsPW5yb3coZGZbIWlzLm5hKGRmJHRpbWVvdXRzLmNsYXNzaWNhbCksXSkKYGBgCgpgYGB7ciBlY2hvPUZBTFNFfQoKIyBzdW0gT3VyIHRpbWVzIGFuZCBzZXQgVElNRU9VVF9OQSBmb3IgdGltZW91dGVkIE91cgpkZiR0aW1lX291ciA8LSBkZiRyZWdleC4uU1IuLm1pbGxpc2Vjb25kcy4gKyBkZiRTUi4uTkNBLi5taWxsaXNlY29uZHMuICsgZGYkTkNBLi5EQ0EuLm1pbGxpc2Vjb25kcy4KZGYkdGltZV9vdXJbaXMubmEoZGYkdGltZV9vdXIpXSA8LSBUSU1FT1VUX05BCgojIGlmIHRoZXJlIHdhcyBhdCBsZWFzdCBvbmUgdGltZW91dCBmb3IgdGhlIGNsYXNzaWNhbCwga2lsbCBpdApkZiRyZWdleC4uTkZBLi5taWxsaXNlY29uZHMuWyFpcy5uYShkZiR0aW1lb3V0cy5jbGFzc2ljYWwpXSA8LSBOQQpkZiRORkEuLkRGQS4ubWlsbGlzZWNvbmRzLlshaXMubmEoZGYkdGltZW91dHMuY2xhc3NpY2FsKV0gPC0gTkEKZGYkREZBLi5taW4uLm1pbGxpc2Vjb25kcy5bIWlzLm5hKGRmJHRpbWVvdXRzLmNsYXNzaWNhbCldIDwtIE5BCgojIHN1bSBDbGFzc2ljYWwgdGltZXMgYW5kIHNldCBUSU1FT1VUX05BIGZvciB0aW1lb3V0ZWQgQ2xhc3NpY2FsCmRmJHRpbWVfZGZhIDwtIGRmJHJlZ2V4Li5ORkEuLm1pbGxpc2Vjb25kcy4gKyBkZiRORkEuLkRGQS4ubWlsbGlzZWNvbmRzLgpkZiR0aW1lX2RmYV9taW4gPC0gZGYkdGltZV9kZmEgKyBkZiRERkEuLm1pbi4ubWlsbGlzZWNvbmRzLgpkZiR0aW1lX2RmYVtpcy5uYShkZiR0aW1lX2RmYSldIDwtIFRJTUVPVVRfTkEKZGYkdGltZV9kZmFfbWluW2lzLm5hKGRmJHRpbWVfZGZhX21pbildIDwtIFRJTUVPVVRfTkEKCiMgU2FuaXR5IGNoZWNrCnN0b3BpZm5vdCh0aW1lb3V0c19vdXIgPT0gbnJvdyhkZltkZiR0aW1lX291ciA9PSBUSU1FT1VUX05BLF0pKQpzdG9waWZub3QodGltZW91dHNfY2xhc3NpY2FsID09IG5yb3coZGZbZGYkdGltZV9kZmEgPT0gVElNRU9VVF9OQSxdKSkKc3RvcGlmbm90KHRpbWVvdXRzX2NsYXNzaWNhbCA9PSBucm93KGRmW2RmJHRpbWVfZGZhX21pbiA9PSBUSU1FT1VUX05BLF0pKQoKIyBUaW1lIHdpbnMgYW5kIGRyYXdzCndpbnNfb3VyX3ZzX2RmYSA9IHN1bShkZiR0aW1lX291ciA8IGRmJHRpbWVfZGZhKQp3aW5zX2RmYV92c19vdXIgPSBzdW0oZGYkdGltZV9vdXIgPiBkZiR0aW1lX2RmYSkKd2luc19vdXJfdnNfZGZhX21pbiA9IHN1bShkZiR0aW1lX291ciA8IGRmJHRpbWVfZGZhX21pbikKd2luc19kZmFfbWluX3ZzX291ciA9IHN1bShkZiR0aW1lX291ciA+IGRmJHRpbWVfZGZhX21pbikKZHJhd3Nfb3VyX3ZzX2RmYSA9IHN1bShkZiR0aW1lX291ciA9PSBkZiR0aW1lX2RmYSkKZHJhd3Nfb3VyX3ZzX2RmYV9taW4gPSBzdW0oZGYkdGltZV9vdXIgPT0gZGYkdGltZV9kZmFfbWluKQoKIyBNZWFuIHRpbWVzCm1lYW5fdGltZV9vdXIgPSBtZWFuKGRmJHRpbWVfb3VyW2RmJHRpbWVfb3VyICE9IFRJTUVPVVRfTkFdKQptZWFuX3RpbWVfZGZhID0gbWVhbihkZiR0aW1lX2RmYVtkZiR0aW1lX2RmYSAhPSBUSU1FT1VUX05BXSkKbWVhbl90aW1lX2RmYV9taW4gPSBtZWFuKGRmJHRpbWVfZGZhX21pbltkZiR0aW1lX2RmYV9taW4gIT0gVElNRU9VVF9OQV0pCgojIE1lZGlhbiB0aW1lcwptZWRpYW5fdGltZV9vdXIgPSBtZWRpYW4oZGYkdGltZV9vdXJbZGYkdGltZV9vdXIgIT0gVElNRU9VVF9OQV0pCm1lZGlhbl90aW1lX2RmYSA9IG1lZGlhbihkZiR0aW1lX2RmYVtkZiR0aW1lX2RmYSAhPSBUSU1FT1VUX05BXSkKbWVkaWFuX3RpbWVfZGZhX21pbiA9IG1lZGlhbihkZiR0aW1lX2RmYV9taW5bZGYkdGltZV9kZmFfbWluICE9IFRJTUVPVVRfTkFdKQoKIyBEZXZpYXRpb24gb2YgdGltZXMKc2RfdGltZV9vdXIgPSBzZChkZiR0aW1lX291cltkZiR0aW1lX291ciAhPSBUSU1FT1VUX05BXSkKc2RfdGltZV9kZmEgPSBzZChkZiR0aW1lX2RmYVtkZiR0aW1lX2RmYSAhPSBUSU1FT1VUX05BXSkKc2RfdGltZV9kZmFfbWluID0gc2QoZGYkdGltZV9kZmFfbWluW2RmJHRpbWVfZGZhX21pbiAhPSBUSU1FT1VUX05BXSkKCiMgTWF4aW11bXMgb2YgdGltZXMKbWF4X3RpbWVfb3VyID0gbWF4KGRmJHRpbWVfb3VyW2RmJHRpbWVfb3VyICE9IFRJTUVPVVRfTkFdKQptYXhfdGltZV9kZmEgPSBtYXgoZGYkdGltZV9kZmFbZGYkdGltZV9kZmEgIT0gVElNRU9VVF9OQV0pCm1heF90aW1lX2RmYV9taW4gPSBtYXgoZGYkdGltZV9kZmFfbWluW2RmJHRpbWVfZGZhX21pbiAhPSBUSU1FT1VUX05BXSkKCiMgTWF4aW11bXMgb2Ygc3RhdGVzCm1heF9zdGF0ZXNfb3VyID0gbWF4KGRmJFguRENBLltkZiR0aW1lX291ciAhPSBUSU1FT1VUX05BXSkKbWF4X3N0YXRlc19kZmEgPSBtYXgoZGYkWC5ERkEuW2RmJHRpbWVfZGZhICE9IFRJTUVPVVRfTkFdKQptYXhfc3RhdGVzX2RmYV9taW4gPSBtYXgoZGYkWC5taW4uW2RmJHRpbWVfZGZhX21pbiAhPSBUSU1FT1VUX05BXSkKCiMgTWVhbnMgb2Ygc3RhdGVzCm1lYW5fc3RhdGVzX291ciA9IG1lYW4oZGYkWC5EQ0EuW2RmJHRpbWVfb3VyICE9IFRJTUVPVVRfTkFdKQptZWFuX3N0YXRlc19kZmEgPSBtZWFuKGRmJFguREZBLltkZiR0aW1lX2RmYSAhPSBUSU1FT1VUX05BXSkKbWVhbl9zdGF0ZXNfZGZhX21pbiA9IG1lYW4oZGYkWC5taW4uW2RmJHRpbWVfZGZhX21pbiAhPSBUSU1FT1VUX05BXSkKCiMgTWVkaWFucyBvZiBzdGF0ZXMKbWVkaWFuX3N0YXRlc19vdXIgPSBtZWRpYW4oZGYkWC5EQ0EuW2RmJHRpbWVfb3VyICE9IFRJTUVPVVRfTkFdKQptZWRpYW5fc3RhdGVzX2RmYSA9IG1lZGlhbihkZiRYLkRGQS5bZGYkdGltZV9kZmEgIT0gVElNRU9VVF9OQV0pCm1lZGlhbl9zdGF0ZXNfZGZhX21pbiA9IG1lZGlhbihkZiRYLm1pbi5bZGYkdGltZV9kZmFfbWluICE9IFRJTUVPVVRfTkFdKQoKIyBEZXZpYXRpb24gb2Ygc3RhdGVzCnNkX3N0YXRlc19vdXIgPSBzZChkZiRYLkRDQS5bZGYkdGltZV9vdXIgIT0gVElNRU9VVF9OQV0pCnNkX3N0YXRlc19kZmEgPSBzZChkZiRYLkRGQS5bZGYkdGltZV9kZmEgIT0gVElNRU9VVF9OQV0pCnNkX3N0YXRlc19kZmFfbWluID0gc2QoZGYkWC5taW4uW2RmJHRpbWVfZGZhX21pbiAhPSBUSU1FT1VUX05BXSkKCiMgTWF4aW11bXMgb2YgdHJhbnNpdGlvbnMKbWF4X3RyYW5zX291ciA9IG1heChkZiREQ0EudHJhbnNbZGYkdGltZV9vdXIgIT0gVElNRU9VVF9OQV0pCm1heF90cmFuc19kZmEgPSBtYXgoZGYkREZBLnRyYW5zW2RmJHRpbWVfZGZhICE9IFRJTUVPVVRfTkFdKQptYXhfdHJhbnNfZGZhX21pbiA9IG1heChkZiRNSU4udHJhbnNbZGYkdGltZV9kZmFfbWluICE9IFRJTUVPVVRfTkFdKQoKIyBNZWFucyBvZiB0cmFuc2l0aW9ucwptZWFuX3RyYW5zX291ciA9IG1lYW4oZGYkRENBLnRyYW5zW2RmJHRpbWVfb3VyICE9IFRJTUVPVVRfTkFdKQptZWFuX3RyYW5zX2RmYSA9IG1lYW4oZGYkREZBLnRyYW5zW2RmJHRpbWVfZGZhICE9IFRJTUVPVVRfTkFdKQptZWFuX3RyYW5zX2RmYV9taW4gPSBtZWFuKGRmJE1JTi50cmFuc1tkZiR0aW1lX2RmYV9taW4gIT0gVElNRU9VVF9OQV0pCgojIE1lZGlhbnMgb2YgdHJhbnNpdGlvbnMKbWVkaWFuX3RyYW5zX291ciA9IG1lZGlhbihkZiREQ0EudHJhbnNbZGYkdGltZV9vdXIgIT0gVElNRU9VVF9OQV0pCm1lZGlhbl90cmFuc19kZmEgPSBtZWRpYW4oZGYkREZBLnRyYW5zW2RmJHRpbWVfZGZhICE9IFRJTUVPVVRfTkFdKQptZWRpYW5fdHJhbnNfZGZhX21pbiA9IG1lZGlhbihkZiRNSU4udHJhbnNbZGYkdGltZV9kZmFfbWluICE9IFRJTUVPVVRfTkFdKQoKIyBEZXZpYXRpb24gb2YgdHJhbnNpdGlvbnMKc2RfdHJhbnNfb3VyID0gc2QoZGYkRENBLnRyYW5zW2RmJHRpbWVfb3VyICE9IFRJTUVPVVRfTkFdKQpzZF90cmFuc19kZmEgPSBzZChkZiRERkEudHJhbnNbZGYkdGltZV9kZmEgIT0gVElNRU9VVF9OQV0pCnNkX3RyYW5zX2RmYV9taW4gPSBzZChkZiRNSU4udHJhbnNbZGYkdGltZV9kZmFfbWluICE9IFRJTUVPVVRfTkFdKQoKTUFYX1RSQU5TID0gbWF4KGMobWF4X3RyYW5zX291ciwgbWF4X3RyYW5zX2RmYSwgbWF4X3RyYW5zX2RmYV9taW4pKQpNQVhfVFJBTlMgPSBNQVhfVFJBTlMgKyBNQVhfVFJBTlMvMTAwCgpNQVhfU1RBVEVTID0gbWF4KGMobWF4X3N0YXRlc19vdXIsIG1heF9zdGF0ZXNfZGZhLCBtYXhfc3RhdGVzX2RmYV9taW4pKQpNQVhfU1RBVEVTID0gTUFYX1NUQVRFUyArIE1BWF9TVEFURVMvMTAwCmBgYAoKfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgdG8gREZBICAgICAgICAgICAgICAgICAgIHwgdG8gREZBICsgbWluICAgICAgICAgICAgIHwgT3VyICAgICAgICAgICAgICAgICAgICAgfAp8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS06fC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS06fC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTp8CnwgKipUaW1lb3V0cyAqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGByIHRpbWVvdXRzX2NsYXNzaWNhbGAgICB8IGByIHRpbWVvdXRzX2NsYXNzaWNhbGAgICB8IGByIHRpbWVvdXRzX291cmAgICAgICAgIHwKfCAqKlRpbWUgd2lucyAobXV0dWFsbHkpKiogICAgICAgICAgICAgICAgIHwgYHIgd2luc19kZmFfdnNfb3VyYCAgICAgIHwgLS0gICAgICAgICAgICAgICAgICAgICAgIHwgYHIgd2luc19vdXJfdnNfZGZhYCAgICAgfAp8ICoqVGltZSB3aW5zIChtdXR1YWxseSkqKiAgICAgICAgICAgICAgICAgfCAtLSAgICAgICAgICAgICAgICAgICAgICAgfCBgciB3aW5zX2RmYV9taW5fdnNfb3VyYCAgfCBgciB3aW5zX291cl92c19kZmFfbWluYCB8CnwgKipEcmF3cyAod3J0IE91cikqKiAgICAgICAgICAgICAgICAgICAgICB8IGByIGRyYXdzX291cl92c19kZmFgICAgICB8IGByIGRyYXdzX291cl92c19kZmFfbWluYCB8IC0tICAgICAgICAgICAgICAgICAgICAgIHwKfCAqKk1lYW4gdGltZSBbbXNdKiogICAgICAgICAgICAgICAgICAgICAgIHwgYHIgbWVhbl90aW1lX2RmYWAgICAgICAgIHwgYHIgbWVhbl90aW1lX2RmYV9taW5gICAgIHwgYHIgbWVhbl90aW1lX291cmAgICAgICAgfAp8ICoqTWVkaWFuIHRpbWUgW21zXSoqICAgICAgICAgICAgICAgICAgICAgfCBgciBtZWRpYW5fdGltZV9kZmFgICAgICAgfCBgciBtZWRpYW5fdGltZV9kZmFfbWluYCAgfCBgciBtZWRpYW5fdGltZV9vdXJgICAgICB8CnwgKipTdGFuZGFyZCBkZXZpYXRpb24gb2YgdGltZSBbbXNdKiogICAgICB8IGByIHNkX3RpbWVfZGZhYCAgICAgICAgICB8IGByIHNkX3RpbWVfZGZhX21pbmAgICAgICB8IGByIHNkX3RpbWVfb3VyYCAgICAgICAgIHwKfCAqKk1heGltdW0gdGltZSBbbXNdKiogICAgICAgICAgICAgICAgICAgIHwgYHIgbWF4X3RpbWVfZGZhYCAgICAgICAgIHwgYHIgbWF4X3RpbWVfZGZhX21pbmAgICAgIHwgYHIgbWF4X3RpbWVfb3VyYCAgICAgICAgfAp8ICoqTWVhbiBzdGF0ZXMqKiAgICAgICAgICAgICAgICAgICAgICAgICAgfCBgciBtZWFuX3N0YXRlc19kZmFgICAgICAgfCBgciBtZWFuX3N0YXRlc19kZmFfbWluYCAgfCBgciBtZWFuX3N0YXRlc19vdXJgICAgICB8CnwgKipNZWRpYW4gc3RhdGVzKiogICAgICAgICAgICAgICAgICAgICAgICB8IGByIG1lZGlhbl9zdGF0ZXNfZGZhYCAgICB8IGByIG1lZGlhbl9zdGF0ZXNfZGZhX21pbmB8IGByIG1lZGlhbl9zdGF0ZXNfb3VyYCAgIHwKfCAqKk1heGltdW0gc3RhdGVzKiogICAgICAgICAgICAgICAgICAgICAgIHwgYHIgbWF4X3N0YXRlc19kZmFgICAgICAgIHwgYHIgbWF4X3N0YXRlc19kZmFfbWluYCAgIHwgYHIgbWF4X3N0YXRlc19vdXJgICAgICAgfAp8ICoqU3RhbmRhcmQgZGV2aWF0aW9uIG9mIHN0YXRlcyoqICAgICAgICAgfCBgciBzZF9zdGF0ZXNfZGZhYCAgICAgICAgfCBgciBzZF9zdGF0ZXNfZGZhX21pbmAgICAgfCBgciBzZF9zdGF0ZXNfb3VyYCAgICAgICB8CnwgKipNZWFuIHRyYW5zaXRpb25zKiogICAgICAgICAgICAgICAgICAgICB8IGByIG1lYW5fdHJhbnNfZGZhYCAgICAgICB8IGByIG1lYW5fdHJhbnNfZGZhX21pbmAgICB8IGByIG1lYW5fdHJhbnNfb3VyYCAgICAgIHwKfCAqKk1lZGlhbiB0cmFuc2l0aW9ucyoqICAgICAgICAgICAgICAgICAgIHwgYHIgbWVkaWFuX3RyYW5zX2RmYWAgICAgIHwgYHIgbWVkaWFuX3RyYW5zX2RmYV9taW5gIHwgYHIgbWVkaWFuX3RyYW5zX291cmAgICAgfAp8ICoqTWF4aW11bSB0cmFuc2l0aW9ucyoqICAgICAgICAgICAgICAgICAgfCBgciBtYXhfdHJhbnNfZGZhYCAgICAgICAgfCBgciBtYXhfdHJhbnNfZGZhX21pbmAgICAgfCBgciBtYXhfdHJhbnNfb3VyYCAgICAgICB8CnwgKipTdGFuZGFyZCBkZXZpYXRpb24gb2YgdHJhbnNpdGlvbnMqKiAgICB8IGByIHNkX3RyYW5zX2RmYWAgICAgICAgICB8IGByIHNkX3RyYW5zX2RmYV9taW5gICAgICB8IGByIHNkX3RyYW5zX291cmAgICAgICAgIHwKCgoKTm90ZSB0aGF0IHRpbWVvdXRzIGZvciBDbGFzc2ljYWwgKHRvIERGQSkgYW5kIENsYXNzaWNhbCAodG8gREZBICsgbWluKSBhcmUgdGFrZW4gZnJvbSB0aGUgc2FtZSBzb3VyY2UuClRoZSBtZWFucywgbWVkaWFucywgZXRjLiBhcmUgY29tcHV0ZWQgZnJvbSBiZW5jaG1hcmtzIHRoYXQgZGlkIG5vdCB0aW1lb3V0LgpXZSBub3cgc2V0IHRoZSB0aW1lIG9mIHRoZSB0aW1lb3V0ZWQgYmVuY2htYXJrcyB0byBgciBUSU1FT1VUX05BYCBtcyBmb3Igc2hvd2luZyBpbiB0aGUgcGxvdHMuCldlIGFsc28gc2V0IHRoZSBudW1iZXIgb2Ygc3RhdGVzIG9mIHRpbWVvdXRlZCBjYXNlcyB0byBgciBNQVhfU1RBVEVTYCBmb3IgdGhlIHBsb3RzLgoKYGBge3IgZWNobz1GQUxTRX0KIyBwbG90CnB0aW1lMSA8LSBnZ3Bsb3QoZGYsIGFlcyh4PXRpbWVfb3VyLCB5PXRpbWVfZGZhKSkgKwogIGdlb21fcG9pbnQoKSArCiAgZ2VvbV9hYmxpbmUoc2l6ZT0wLjEpICsKICBzY2FsZV94X2xvZzEwKCkgKwogIHNjYWxlX3lfbG9nMTAoKSArCiAgY29vcmRfZml4ZWQoeGxpbSA9IGMoMC4yLCBUSU1FT1VUX05BKSwgeWxpbSA9IGMoMC4yLCBUSU1FT1VUX05BKSkgKwogIGxhYnMoCiAgICB0aXRsZT0iVGltZSIsCiAgICBzdWJ0aXRsZT0iT3VyIHZzIFVuZm9sZGluZyAodG8gREZBKSIsCiAgICB4PSJPdXIiLAogICAgeT0iVW5mb2xkaW5nIHRvIERGQSIpCgpwdGltZTIgPC0gZ2dwbG90KGRmLCBhZXMoeD10aW1lX291ciwgeT10aW1lX2RmYV9taW4pKSArCiMgIGdlb21faml0dGVyKHdpZHRoID0gLjUsIHNpemU9MSkgKwogIGdlb21fcG9pbnQoKSArCiAgZ2VvbV9hYmxpbmUoc2l6ZT0wLjEpICsKICBzY2FsZV94X2xvZzEwKCkgKwogIHNjYWxlX3lfbG9nMTAoKSArCiAgY29vcmRfZml4ZWQoeGxpbSA9IGMoMC4yLCBUSU1FT1VUX05BKSwgeWxpbSA9IGMoMC4yLCBUSU1FT1VUX05BKSkgKwogIGxhYnMoCiAgICB0aXRsZT0iVGltZSIsCiAgICBzdWJ0aXRsZT0iT3VyIHZzIFVuZm9sZGluZyAodG8gREZBICsgbWluKSIsCiAgICB4PSJPdXIiLAogICAgeT0iVW5mb2xkaW5nIHRvIERGQSArIG1pbiIpCgpncmlkLmFycmFuZ2UocHRpbWUxLCBwdGltZTIsIG5jb2wgPSAyKQpgYGAKCiMgSGlzdG9ncmFtIG9mIHRpbWVzCgpgYGB7ciBlY2hvPUZBTFNFfQp0aW1lX291ciA8LSBkYXRhLmZyYW1lKGRmJHRpbWVfb3VyKQp0aW1lX291ciR0eXBlIDwtICJvdXIiCm5hbWVzKHRpbWVfb3VyKVsxXTwtInRpbWUiCgp0aW1lX2RmYSA8LSBkYXRhLmZyYW1lKGRmJHRpbWVfZGZhKQp0aW1lX2RmYSR0eXBlIDwtICJkZmEiCm5hbWVzKHRpbWVfZGZhKVsxXTwtInRpbWUiCgp0aW1lX2RmYV9taW4gPC0gZGF0YS5mcmFtZShkZiR0aW1lX2RmYV9taW4pCnRpbWVfZGZhX21pbiR0eXBlIDwtICJkZmErbWluIgpuYW1lcyh0aW1lX2RmYV9taW4pWzFdPC0idGltZSIKCnRpbWVfYWxsIDwtIHJiaW5kKHRpbWVfb3VyLCB0aW1lX2RmYSwgdGltZV9kZmFfbWluKQoKcHRpbWVoIDwtIGdncGxvdCh0aW1lX2FsbCwgYWVzKHRpbWUpKSArCiAgZ2VvbV9kZW5zaXR5KGFlcyhmaWxsPWZhY3Rvcih0eXBlKSksIGFscGhhPTAuNykgKwogIyBnZW9tX2hpc3RvZ3JhbShhZXMoZmlsbD1mYWN0b3IodHlwZSkpLCBhbHBoYT0wLjgpICsKICBzY2FsZV94X2xvZzEwKCkgKwogIGxhYnMoCiAgICB0aXRsZT0iVGltZSIsCiAgICBzdWJ0aXRsZT0iT3VyIHZzIFVuZm9sZGluZyAiLAogICAgeD0iVGltZSBbbXNdIiwKICAgIHk9IkRlbnNpdHkiKQoKCnBsb3QocHRpbWVoKQpgYGAKCiMgU3RhdGVzCgpgYGB7ciBlY2hvPUZBTFNFfQpkZiRYLkRDQS5baXMubmEoZGYkWC5EQ0EuKV0gPC0gTUFYX1NUQVRFUwpkZiRYLkRGQS5baXMubmEoZGYkWC5ERkEuKV0gPC0gTUFYX1NUQVRFUwpkZiRYLm1pbi5baXMubmEoZGYkWC5taW4uKV0gPC0gTUFYX1NUQVRFUwoKZGYkWC5OQ0EuW2lzLm5hKGRmJFguTkNBLildIDwtIE1BWF9TVEFURVMKZGYkWC5ORkEuW2lzLm5hKGRmJFguTkZBLildIDwtIE1BWF9TVEFURVMKCiMgcGxvdApwc3RhdGVzMSA8LSBnZ3Bsb3QoZGYsIGFlcyh4PVguRENBLiwgeT1YLkRGQS4pKSArCiAgZ2VvbV9wb2ludCgpICsKICBnZW9tX2FibGluZShzaXplPTAuMSkgKwogIHNjYWxlX3hfbG9nMTAoKSArCiAgc2NhbGVfeV9sb2cxMCgpICsKICBjb29yZF9maXhlZCh4bGltID0gYygwLjIsIE1BWF9TVEFURVMpLCB5bGltID0gYygwLjIsIE1BWF9TVEFURVMpKSArCiAgbGFicygKICAgIHRpdGxlPSJTdGF0ZXMiLAogICAgc3VidGl0bGU9Ik91ciB2cyBVbmZvbGRpbmcgKHRvIERGQSkiLAogICAgeD0iT3VyIiwKICAgIHk9IlVuZm9sZGluZyB0byBERkEiKQoKcHN0YXRlczIgPC0gZ2dwbG90KGRmLCBhZXMoeD1YLkRDQS4sIHk9WC5taW4uKSkgKwogIGdlb21fcG9pbnQoKSArCiAgZ2VvbV9hYmxpbmUoc2l6ZT0wLjEpICsKICBzY2FsZV94X2xvZzEwKCkgKwogIHNjYWxlX3lfbG9nMTAoKSArCiAgY29vcmRfZml4ZWQoeGxpbSA9IGMoMC4yLCBNQVhfU1RBVEVTKSwgeWxpbSA9IGMoMC4yLCBNQVhfU1RBVEVTKSkgKwogIGxhYnMoCiAgICB0aXRsZT0iU3RhdGVzIiwKICAgIHN1YnRpdGxlPSJPdXIgdnMgVW5mb2xkaW5nICh0byBERkEgKyBtaW4pIiwKICAgIHg9Ik91ciIsCiAgICB5PSJVbmZvbGRpbmcgdG8gREZBICsgbWluIikKCmdyaWQuYXJyYW5nZShwc3RhdGVzMSwgcHN0YXRlczIsIG5jb2wgPSAyKQpgYGAKCgpgYGB7ciBlY2hvPUZBTFNFfQppbl9zdGF0ZXNfb3VyIDwtIGRhdGEuZnJhbWUoZGYkWC5OQ0EuKQppbl9zdGF0ZXNfb3VyJHR5cGUgPC0gImluX291ciIKbmFtZXMoaW5fc3RhdGVzX291cilbMV08LSJzdGF0ZXMiCgppbl9zdGF0ZXNfZGZhIDwtIGRhdGEuZnJhbWUoZGYkWC5ORkEuKQppbl9zdGF0ZXNfZGZhJHR5cGUgPC0gImluX2RmYSIKbmFtZXMoaW5fc3RhdGVzX2RmYSlbMV08LSJzdGF0ZXMiCgpvdXRfc3RhdGVzX291ciA8LSBkYXRhLmZyYW1lKGRmJFguRENBLikKb3V0X3N0YXRlc19vdXIkdHlwZSA8LSAib3V0X291ciIKbmFtZXMob3V0X3N0YXRlc19vdXIpWzFdPC0ic3RhdGVzIgoKb3V0X3N0YXRlc19kZmEgPC0gZGF0YS5mcmFtZShkZiRYLkRGQS4pCm91dF9zdGF0ZXNfZGZhJHR5cGUgPC0gIm91dF9kZmEiCm5hbWVzKG91dF9zdGF0ZXNfZGZhKVsxXTwtInN0YXRlcyIKCm91dF9zdGF0ZXNfZGZhX21pbiA8LSBkYXRhLmZyYW1lKGRmJFgubWluLikKb3V0X3N0YXRlc19kZmFfbWluJHR5cGUgPC0gIm91dF9kZmFfbWluIgpuYW1lcyhvdXRfc3RhdGVzX2RmYV9taW4pWzFdPC0ic3RhdGVzIgoKaW5fc3RhdGVzX2FsbCA8LSByYmluZCgKICBpbl9zdGF0ZXNfb3VyLAogIGluX3N0YXRlc19kZmEKKQoKb3V0X3N0YXRlc19hbGwgPC0gcmJpbmQoCiAgb3V0X3N0YXRlc19vdXIsCiAgb3V0X3N0YXRlc19kZmEsCiAgb3V0X3N0YXRlc19kZmFfbWluCikKCnBzdGF0ZXNfaW5faGlzdCA8LSBnZ3Bsb3QoaW5fc3RhdGVzX2FsbCwgYWVzKHN0YXRlcykpICsKICBnZW9tX2RlbnNpdHkoYWVzKGZpbGw9ZmFjdG9yKHR5cGUpKSwgYWxwaGE9MC43KSArCiAjIGdlb21faGlzdG9ncmFtKGFlcyhmaWxsPWZhY3Rvcih0eXBlKSksIGFscGhhPTAuOCkgKwogIHNjYWxlX3hfbG9nMTAoKSArCiAgbGFicygKICAgIHRpdGxlPSJTdGF0ZXMiLAogICAgc3VidGl0bGU9IklucHV0IiwKICAgIHg9IlN0YXRlcyIsCiAgICB5PSJEZW5zaXR5IikKCgpwc3RhdGVzX291dF9oaXN0IDwtIGdncGxvdChvdXRfc3RhdGVzX2FsbCwgYWVzKHN0YXRlcykpICsKICBnZW9tX2RlbnNpdHkoYWVzKGZpbGw9ZmFjdG9yKHR5cGUpKSwgYWxwaGE9MC43KSArCiMgIGdlb21faGlzdG9ncmFtKGFlcyhmaWxsPWZhY3Rvcih0eXBlKSksIGFscGhhPTAuOCkgKwogIHNjYWxlX3hfbG9nMTAoKSArCiAgbGFicygKICAgIHRpdGxlPSJTdGF0ZXMiLAogICAgc3VidGl0bGU9Ik91dHB1dCIsCiAgICB4PSJTdGF0ZXMiLAogICAgeT0iRGVuc2l0eSIpCgpwbG90KHBzdGF0ZXNfaW5faGlzdCkKcGxvdChwc3RhdGVzX291dF9oaXN0KQojZ3JpZC5hcnJhbmdlKHBzdGF0ZXNfaW5faGlzdCwgcHN0YXRlc19vdXRfaGlzdCwgbmNvbCA9IDEpCmBgYAoKIyBDb3VudGVycwoKfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5DQSAgICAgICAgICAgICAgICAgICAgICAgICB8IERDQSAgICAgICAgICAgICAgICAgICAgICAgICB8CnwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS06fC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS06fAp8ICoqTWVhbiBudW0uIG9mIGNudHMqKiAgICAgICAgIHwgYHIgbWVhbihkZiRjb3VudGVycy5OQ0EpYCAgIHwgYHIgbWVhbihkZiRjb3VudGVycy5EQ0EpYCAgIHwKfCAqKk1lZGlhbiBudW0uIG9mIGNudHMqKiAgICAgICB8IGByIG1lZGlhbihkZiRjb3VudGVycy5OQ0EpYCB8IGByIG1lZGlhbihkZiRjb3VudGVycy5EQ0EpYCB8CnwgKipTdGQuIGRldi4gb2YgY250cyoqICAgICAgICAgfCBgciBzZChkZiRjb3VudGVycy5OQ0EpYCAgICAgfCBgciBzZChkZiRjb3VudGVycy5EQ0EpYCAgICAgfAp8ICoqTWF4IG51bS4gb2YgY250cyoqICAgICAgICAgIHwgYHIgbWF4KGRmJGNvdW50ZXJzLk5DQSlgICAgIHwgYHIgbWF4KGRmJGNvdW50ZXJzLkRDQSlgICAgIHwKCiMgVHJhbnNpdGlvbnMKCmBgYHtyIGVjaG89RkFMU0V9CmRmJERDQS50cmFuc1tpcy5uYShkZiREQ0EudHJhbnMpXSA8LSBNQVhfVFJBTlMKZGYkREZBLnRyYW5zW2lzLm5hKGRmJERGQS50cmFucyldIDwtIE1BWF9UUkFOUwpkZiRNSU4udHJhbnNbaXMubmEoZGYkTUlOLnRyYW5zKV0gPC0gTUFYX1RSQU5TCgojIHBsb3QKcHRyYW5zMSA8LSBnZ3Bsb3QoZGYsIGFlcyh4PURDQS50cmFucywgeT1ERkEudHJhbnMpKSArCiAgZ2VvbV9wb2ludCgpICsKICBnZW9tX2FibGluZShzaXplPTAuMSkgKwogIHNjYWxlX3hfbG9nMTAoKSArCiAgc2NhbGVfeV9sb2cxMCgpICsKICBjb29yZF9maXhlZCh4bGltID0gYygwLjIsIE1BWF9UUkFOUyksIHlsaW0gPSBjKDAuMiwgTUFYX1RSQU5TKSkgKwogIGxhYnMoCiAgICB0aXRsZT0iVHJhbnNpdGlvbnMiLAogICAgc3VidGl0bGU9Ik91ciB2cyBVbmZvbGRpbmcgKHRvIERGQSkiLAogICAgeD0iT3VyIiwKICAgIHk9IlVuZm9sZGluZyB0byBERkEiKQoKcHRyYW5zMiA8LSBnZ3Bsb3QoZGYsIGFlcyh4PURDQS50cmFucywgeT1NSU4udHJhbnMpKSArCiAgZ2VvbV9wb2ludCgpICsKICBnZW9tX2FibGluZShzaXplPTAuMSkgKwogIHNjYWxlX3hfbG9nMTAoKSArCiAgc2NhbGVfeV9sb2cxMCgpICsKICBjb29yZF9maXhlZCh4bGltID0gYygwLjIsIE1BWF9UUkFOUyksIHlsaW0gPSBjKDAuMiwgTUFYX1RSQU5TKSkgKwogIGxhYnMoCiAgICB0aXRsZT0iVHJhbnNpdGlvbnMiLAogICAgc3VidGl0bGU9Ik91ciB2cyBVbmZvbGRpbmcgKHRvIERGQSArIG1pbikiLAogICAgeD0iT3VyIiwKICAgIHk9IlVuZm9sZGluZyB0byBERkEgKyBtaW4iKQoKZ3JpZC5hcnJhbmdlKHB0cmFuczEsIHB0cmFuczIsIG5jb2wgPSAyKQpgYGAK