These are results of the experiments for ATVA’19:

Filename MSInternal-results.tsv
Timeout 60000 ms
Benchmarks 17
Unsupported 0
Sane benchmarks 17
to DFA to DFA + min Our
Timeouts 2 2 0
Time wins (mutually) 1 – 16
Time wins (mutually) – 1 16
Draws (wrt Our) 0 0 –
Mean time [ms] 1661.7066393 2228.5591733 87.8901629
Median time [ms] 16.77168 20.91118 6.52081
Standard deviation of time [ms] 4093.3088089 5379.9208014 199.7579599
Maximum time [ms] 15164.51066 19641.09642 669.81206
Mean states 24062.4666667 7762.3333333 40.8823529
Median states 456 152 12
Maximum states 200132 65163 172
Standard deviation of states 55906.0133245 18250.3861512 56.2948514
Mean transitions 152581.1333333 40193.8 291
Median transitions 2001 513 35
Maximum transitions 1331441 350417 1545
Standard deviation of transitions 365126.966503 96819.9573355 510.8884418

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 202133.32 for the plots.

Histogram of times

States

Counters

NCA DCA
Mean num. of cnts 1.4117647 1.4705882
Median num. of cnts 1 1
Std. dev. of cnts 0.7122871 0.7174301
Max num. of cnts 3 3

Transitions

LS0tCnRpdGxlOiAiQ291bnRpbmcgQXV0b21hdGEgUmVzdWx0cyBBbmFseXNpcyIKcGFyYW1zOgogIGRpcjogLi9yZXN1bHRzLTAyLTA1LTIwMTkKICBmaWxlOiBNU0ludGVybmFsLXJlc3VsdHMudHN2Cm91dHB1dDoKICBodG1sX25vdGVib29rOgogICAgY29kZV9mb2xkaW5nOiBoaWRlCiAgcGRmX2RvY3VtZW50OiBkZWZhdWx0CiAgaHRtbF9kb2N1bWVudDoKICAgIGRmX3ByaW50OiBwYWdlZAotLS0KClRoZXNlIGFyZSByZXN1bHRzIG9mIHRoZSBleHBlcmltZW50cyBmb3IgQVRWQScxOToKCmBgYHtyIGVjaG89RkFMU0V9CiMgbG9hZCB0aGUgcGxvdHRpbmcgbGlicmFyeQpzdXBwcmVzc01lc3NhZ2VzKGxpYnJhcnkoZ2dwbG90MikpCmxpYnJhcnkoZ3JpZCkKbGlicmFyeShncmlkRXh0cmEpCgp0aGVtZV9zZXQodGhlbWVfYncoKSkKCm9wdGlvbnMoc2NpcGVuPTk5OSkgICMgdHVybi1vZmYgc2NpZW50aWZpYyBub3RhdGlvbiBsaWtlIDFlKzQ4CgpUSU1FT1VUX09SSUcgPSA2MDAwMApUSU1FT1VUX05BID0gVElNRU9VVF9PUklHK1RJTUVPVVRfT1JJRy8xMAoKZmlsZW5hbWUgPSBwYXJhbXMkZmlsZQoKcmVhbHBhdGggPSBwYXN0ZTAocGFyYW1zJGRpciwgIi8iLCBmaWxlbmFtZSkKZGYgPC0gcmVhZC5jc3YocmVhbHBhdGgsIGhlYWRlciA9IFRSVUUsIHNlcD0iXHQiLCBkZWM9IiwiLCBzdHJpbmdzQXNGYWN0b3JzPUZBTFNFKQpiZW5jaG1hcmtzX251bSA8LSBucm93KGRmKQp1bnN1cHBvcnRlZF9iaXRtYXAgPC0gIShpcy5uYShkZiRPdXIuZXhjZXB0aW9uKSB8IGRmJE91ci5leGNlcHRpb24gPT0gIiIpCnVuc3VwcG9ydGVkX251bSA8LSBzdW0odW5zdXBwb3J0ZWRfYml0bWFwKQpkZiA8LSBkZlshdW5zdXBwb3J0ZWRfYml0bWFwLF0Kc2FuaXRpemVkX251bSA8LSBucm93KGRmKQpgYGAKCnwgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgfAp8LS0tLS0tLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLS0tOnwKfCAqKkZpbGVuYW1lKiogICAgICAgIHwgYHIgZmlsZW5hbWVgICAgICAgICB8CnwgKipUaW1lb3V0KiogICAgICAgICB8IGByIFRJTUVPVVRfT1JJR2AgbXMgfAp8ICoqQmVuY2htYXJrcyoqICAgICAgfCBgciBiZW5jaG1hcmtzX251bWAgIHwKfCAqKlVuc3VwcG9ydGVkKiogICAgIHwgYHIgdW5zdXBwb3J0ZWRfbnVtYCB8CnwgKipTYW5lIGJlbmNobWFya3MqKiB8IGByIHNhbml0aXplZF9udW1gICAgfAoKYGBge3IgZWNobz1GQUxTRX0KZGYKYGBgCgpgYGB7ciBlY2hvPUZBTFNFfQp0aW1lb3V0c19vdXI9bnJvdyhkZlshaXMubmEoZGYkdGltZW91dHMub3VyKSxdKQp0aW1lb3V0c19jbGFzc2ljYWw9bnJvdyhkZlshaXMubmEoZGYkdGltZW91dHMuY2xhc3NpY2FsKSxdKQpgYGAKCmBgYHtyIGVjaG89RkFMU0V9CgojIHN1bSBPdXIgdGltZXMgYW5kIHNldCBUSU1FT1VUX05BIGZvciB0aW1lb3V0ZWQgT3VyCmRmJHRpbWVfb3VyIDwtIGRmJHJlZ2V4Li5TUi4ubWlsbGlzZWNvbmRzLiArIGRmJFNSLi5OQ0EuLm1pbGxpc2Vjb25kcy4gKyBkZiROQ0EuLkRDQS4ubWlsbGlzZWNvbmRzLgpkZiR0aW1lX291cltpcy5uYShkZiR0aW1lX291cildIDwtIFRJTUVPVVRfTkEKCiMgaWYgdGhlcmUgd2FzIGF0IGxlYXN0IG9uZSB0aW1lb3V0IGZvciB0aGUgY2xhc3NpY2FsLCBraWxsIGl0CmRmJHJlZ2V4Li5ORkEuLm1pbGxpc2Vjb25kcy5bIWlzLm5hKGRmJHRpbWVvdXRzLmNsYXNzaWNhbCldIDwtIE5BCmRmJE5GQS4uREZBLi5taWxsaXNlY29uZHMuWyFpcy5uYShkZiR0aW1lb3V0cy5jbGFzc2ljYWwpXSA8LSBOQQpkZiRERkEuLm1pbi4ubWlsbGlzZWNvbmRzLlshaXMubmEoZGYkdGltZW91dHMuY2xhc3NpY2FsKV0gPC0gTkEKCiMgc3VtIENsYXNzaWNhbCB0aW1lcyBhbmQgc2V0IFRJTUVPVVRfTkEgZm9yIHRpbWVvdXRlZCBDbGFzc2ljYWwKZGYkdGltZV9kZmEgPC0gZGYkcmVnZXguLk5GQS4ubWlsbGlzZWNvbmRzLiArIGRmJE5GQS4uREZBLi5taWxsaXNlY29uZHMuCmRmJHRpbWVfZGZhX21pbiA8LSBkZiR0aW1lX2RmYSArIGRmJERGQS4ubWluLi5taWxsaXNlY29uZHMuCmRmJHRpbWVfZGZhW2lzLm5hKGRmJHRpbWVfZGZhKV0gPC0gVElNRU9VVF9OQQpkZiR0aW1lX2RmYV9taW5baXMubmEoZGYkdGltZV9kZmFfbWluKV0gPC0gVElNRU9VVF9OQQoKIyBTYW5pdHkgY2hlY2sKc3RvcGlmbm90KHRpbWVvdXRzX291ciA9PSBucm93KGRmW2RmJHRpbWVfb3VyID09IFRJTUVPVVRfTkEsXSkpCnN0b3BpZm5vdCh0aW1lb3V0c19jbGFzc2ljYWwgPT0gbnJvdyhkZltkZiR0aW1lX2RmYSA9PSBUSU1FT1VUX05BLF0pKQpzdG9waWZub3QodGltZW91dHNfY2xhc3NpY2FsID09IG5yb3coZGZbZGYkdGltZV9kZmFfbWluID09IFRJTUVPVVRfTkEsXSkpCgojIFRpbWUgd2lucyBhbmQgZHJhd3MKd2luc19vdXJfdnNfZGZhID0gc3VtKGRmJHRpbWVfb3VyIDwgZGYkdGltZV9kZmEpCndpbnNfZGZhX3ZzX291ciA9IHN1bShkZiR0aW1lX291ciA+IGRmJHRpbWVfZGZhKQp3aW5zX291cl92c19kZmFfbWluID0gc3VtKGRmJHRpbWVfb3VyIDwgZGYkdGltZV9kZmFfbWluKQp3aW5zX2RmYV9taW5fdnNfb3VyID0gc3VtKGRmJHRpbWVfb3VyID4gZGYkdGltZV9kZmFfbWluKQpkcmF3c19vdXJfdnNfZGZhID0gc3VtKGRmJHRpbWVfb3VyID09IGRmJHRpbWVfZGZhKQpkcmF3c19vdXJfdnNfZGZhX21pbiA9IHN1bShkZiR0aW1lX291ciA9PSBkZiR0aW1lX2RmYV9taW4pCgojIE1lYW4gdGltZXMKbWVhbl90aW1lX291ciA9IG1lYW4oZGYkdGltZV9vdXJbZGYkdGltZV9vdXIgIT0gVElNRU9VVF9OQV0pCm1lYW5fdGltZV9kZmEgPSBtZWFuKGRmJHRpbWVfZGZhW2RmJHRpbWVfZGZhICE9IFRJTUVPVVRfTkFdKQptZWFuX3RpbWVfZGZhX21pbiA9IG1lYW4oZGYkdGltZV9kZmFfbWluW2RmJHRpbWVfZGZhX21pbiAhPSBUSU1FT1VUX05BXSkKCiMgTWVkaWFuIHRpbWVzCm1lZGlhbl90aW1lX291ciA9IG1lZGlhbihkZiR0aW1lX291cltkZiR0aW1lX291ciAhPSBUSU1FT1VUX05BXSkKbWVkaWFuX3RpbWVfZGZhID0gbWVkaWFuKGRmJHRpbWVfZGZhW2RmJHRpbWVfZGZhICE9IFRJTUVPVVRfTkFdKQptZWRpYW5fdGltZV9kZmFfbWluID0gbWVkaWFuKGRmJHRpbWVfZGZhX21pbltkZiR0aW1lX2RmYV9taW4gIT0gVElNRU9VVF9OQV0pCgojIERldmlhdGlvbiBvZiB0aW1lcwpzZF90aW1lX291ciA9IHNkKGRmJHRpbWVfb3VyW2RmJHRpbWVfb3VyICE9IFRJTUVPVVRfTkFdKQpzZF90aW1lX2RmYSA9IHNkKGRmJHRpbWVfZGZhW2RmJHRpbWVfZGZhICE9IFRJTUVPVVRfTkFdKQpzZF90aW1lX2RmYV9taW4gPSBzZChkZiR0aW1lX2RmYV9taW5bZGYkdGltZV9kZmFfbWluICE9IFRJTUVPVVRfTkFdKQoKIyBNYXhpbXVtcyBvZiB0aW1lcwptYXhfdGltZV9vdXIgPSBtYXgoZGYkdGltZV9vdXJbZGYkdGltZV9vdXIgIT0gVElNRU9VVF9OQV0pCm1heF90aW1lX2RmYSA9IG1heChkZiR0aW1lX2RmYVtkZiR0aW1lX2RmYSAhPSBUSU1FT1VUX05BXSkKbWF4X3RpbWVfZGZhX21pbiA9IG1heChkZiR0aW1lX2RmYV9taW5bZGYkdGltZV9kZmFfbWluICE9IFRJTUVPVVRfTkFdKQoKIyBNYXhpbXVtcyBvZiBzdGF0ZXMKbWF4X3N0YXRlc19vdXIgPSBtYXgoZGYkWC5EQ0EuW2RmJHRpbWVfb3VyICE9IFRJTUVPVVRfTkFdKQptYXhfc3RhdGVzX2RmYSA9IG1heChkZiRYLkRGQS5bZGYkdGltZV9kZmEgIT0gVElNRU9VVF9OQV0pCm1heF9zdGF0ZXNfZGZhX21pbiA9IG1heChkZiRYLm1pbi5bZGYkdGltZV9kZmFfbWluICE9IFRJTUVPVVRfTkFdKQoKIyBNZWFucyBvZiBzdGF0ZXMKbWVhbl9zdGF0ZXNfb3VyID0gbWVhbihkZiRYLkRDQS5bZGYkdGltZV9vdXIgIT0gVElNRU9VVF9OQV0pCm1lYW5fc3RhdGVzX2RmYSA9IG1lYW4oZGYkWC5ERkEuW2RmJHRpbWVfZGZhICE9IFRJTUVPVVRfTkFdKQptZWFuX3N0YXRlc19kZmFfbWluID0gbWVhbihkZiRYLm1pbi5bZGYkdGltZV9kZmFfbWluICE9IFRJTUVPVVRfTkFdKQoKIyBNZWRpYW5zIG9mIHN0YXRlcwptZWRpYW5fc3RhdGVzX291ciA9IG1lZGlhbihkZiRYLkRDQS5bZGYkdGltZV9vdXIgIT0gVElNRU9VVF9OQV0pCm1lZGlhbl9zdGF0ZXNfZGZhID0gbWVkaWFuKGRmJFguREZBLltkZiR0aW1lX2RmYSAhPSBUSU1FT1VUX05BXSkKbWVkaWFuX3N0YXRlc19kZmFfbWluID0gbWVkaWFuKGRmJFgubWluLltkZiR0aW1lX2RmYV9taW4gIT0gVElNRU9VVF9OQV0pCgojIERldmlhdGlvbiBvZiBzdGF0ZXMKc2Rfc3RhdGVzX291ciA9IHNkKGRmJFguRENBLltkZiR0aW1lX291ciAhPSBUSU1FT1VUX05BXSkKc2Rfc3RhdGVzX2RmYSA9IHNkKGRmJFguREZBLltkZiR0aW1lX2RmYSAhPSBUSU1FT1VUX05BXSkKc2Rfc3RhdGVzX2RmYV9taW4gPSBzZChkZiRYLm1pbi5bZGYkdGltZV9kZmFfbWluICE9IFRJTUVPVVRfTkFdKQoKIyBNYXhpbXVtcyBvZiB0cmFuc2l0aW9ucwptYXhfdHJhbnNfb3VyID0gbWF4KGRmJERDQS50cmFuc1tkZiR0aW1lX291ciAhPSBUSU1FT1VUX05BXSkKbWF4X3RyYW5zX2RmYSA9IG1heChkZiRERkEudHJhbnNbZGYkdGltZV9kZmEgIT0gVElNRU9VVF9OQV0pCm1heF90cmFuc19kZmFfbWluID0gbWF4KGRmJE1JTi50cmFuc1tkZiR0aW1lX2RmYV9taW4gIT0gVElNRU9VVF9OQV0pCgojIE1lYW5zIG9mIHRyYW5zaXRpb25zCm1lYW5fdHJhbnNfb3VyID0gbWVhbihkZiREQ0EudHJhbnNbZGYkdGltZV9vdXIgIT0gVElNRU9VVF9OQV0pCm1lYW5fdHJhbnNfZGZhID0gbWVhbihkZiRERkEudHJhbnNbZGYkdGltZV9kZmEgIT0gVElNRU9VVF9OQV0pCm1lYW5fdHJhbnNfZGZhX21pbiA9IG1lYW4oZGYkTUlOLnRyYW5zW2RmJHRpbWVfZGZhX21pbiAhPSBUSU1FT1VUX05BXSkKCiMgTWVkaWFucyBvZiB0cmFuc2l0aW9ucwptZWRpYW5fdHJhbnNfb3VyID0gbWVkaWFuKGRmJERDQS50cmFuc1tkZiR0aW1lX291ciAhPSBUSU1FT1VUX05BXSkKbWVkaWFuX3RyYW5zX2RmYSA9IG1lZGlhbihkZiRERkEudHJhbnNbZGYkdGltZV9kZmEgIT0gVElNRU9VVF9OQV0pCm1lZGlhbl90cmFuc19kZmFfbWluID0gbWVkaWFuKGRmJE1JTi50cmFuc1tkZiR0aW1lX2RmYV9taW4gIT0gVElNRU9VVF9OQV0pCgojIERldmlhdGlvbiBvZiB0cmFuc2l0aW9ucwpzZF90cmFuc19vdXIgPSBzZChkZiREQ0EudHJhbnNbZGYkdGltZV9vdXIgIT0gVElNRU9VVF9OQV0pCnNkX3RyYW5zX2RmYSA9IHNkKGRmJERGQS50cmFuc1tkZiR0aW1lX2RmYSAhPSBUSU1FT1VUX05BXSkKc2RfdHJhbnNfZGZhX21pbiA9IHNkKGRmJE1JTi50cmFuc1tkZiR0aW1lX2RmYV9taW4gIT0gVElNRU9VVF9OQV0pCgpNQVhfVFJBTlMgPSBtYXgoYyhtYXhfdHJhbnNfb3VyLCBtYXhfdHJhbnNfZGZhLCBtYXhfdHJhbnNfZGZhX21pbikpCk1BWF9UUkFOUyA9IE1BWF9UUkFOUyArIE1BWF9UUkFOUy8xMDAKCk1BWF9TVEFURVMgPSBtYXgoYyhtYXhfc3RhdGVzX291ciwgbWF4X3N0YXRlc19kZmEsIG1heF9zdGF0ZXNfZGZhX21pbikpCk1BWF9TVEFURVMgPSBNQVhfU1RBVEVTICsgTUFYX1NUQVRFUy8xMDAKYGBgCgp8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB0byBERkEgICAgICAgICAgICAgICAgICAgfCB0byBERkEgKyBtaW4gICAgICAgICAgICAgfCBPdXIgICAgICAgICAgICAgICAgICAgICB8CnwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTp8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTp8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tOnwKfCAqKlRpbWVvdXRzICoqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYHIgdGltZW91dHNfY2xhc3NpY2FsYCAgIHwgYHIgdGltZW91dHNfY2xhc3NpY2FsYCAgIHwgYHIgdGltZW91dHNfb3VyYCAgICAgICAgfAp8ICoqVGltZSB3aW5zIChtdXR1YWxseSkqKiAgICAgICAgICAgICAgICAgfCBgciB3aW5zX2RmYV92c19vdXJgICAgICAgfCAtLSAgICAgICAgICAgICAgICAgICAgICAgfCBgciB3aW5zX291cl92c19kZmFgICAgICB8CnwgKipUaW1lIHdpbnMgKG11dHVhbGx5KSoqICAgICAgICAgICAgICAgICB8IC0tICAgICAgICAgICAgICAgICAgICAgICB8IGByIHdpbnNfZGZhX21pbl92c19vdXJgICB8IGByIHdpbnNfb3VyX3ZzX2RmYV9taW5gIHwKfCAqKkRyYXdzICh3cnQgT3VyKSoqICAgICAgICAgICAgICAgICAgICAgIHwgYHIgZHJhd3Nfb3VyX3ZzX2RmYWAgICAgIHwgYHIgZHJhd3Nfb3VyX3ZzX2RmYV9taW5gIHwgLS0gICAgICAgICAgICAgICAgICAgICAgfAp8ICoqTWVhbiB0aW1lIFttc10qKiAgICAgICAgICAgICAgICAgICAgICAgfCBgciBtZWFuX3RpbWVfZGZhYCAgICAgICAgfCBgciBtZWFuX3RpbWVfZGZhX21pbmAgICAgfCBgciBtZWFuX3RpbWVfb3VyYCAgICAgICB8CnwgKipNZWRpYW4gdGltZSBbbXNdKiogICAgICAgICAgICAgICAgICAgICB8IGByIG1lZGlhbl90aW1lX2RmYWAgICAgICB8IGByIG1lZGlhbl90aW1lX2RmYV9taW5gICB8IGByIG1lZGlhbl90aW1lX291cmAgICAgIHwKfCAqKlN0YW5kYXJkIGRldmlhdGlvbiBvZiB0aW1lIFttc10qKiAgICAgIHwgYHIgc2RfdGltZV9kZmFgICAgICAgICAgIHwgYHIgc2RfdGltZV9kZmFfbWluYCAgICAgIHwgYHIgc2RfdGltZV9vdXJgICAgICAgICAgfAp8ICoqTWF4aW11bSB0aW1lIFttc10qKiAgICAgICAgICAgICAgICAgICAgfCBgciBtYXhfdGltZV9kZmFgICAgICAgICAgfCBgciBtYXhfdGltZV9kZmFfbWluYCAgICAgfCBgciBtYXhfdGltZV9vdXJgICAgICAgICB8CnwgKipNZWFuIHN0YXRlcyoqICAgICAgICAgICAgICAgICAgICAgICAgICB8IGByIG1lYW5fc3RhdGVzX2RmYWAgICAgICB8IGByIG1lYW5fc3RhdGVzX2RmYV9taW5gICB8IGByIG1lYW5fc3RhdGVzX291cmAgICAgIHwKfCAqKk1lZGlhbiBzdGF0ZXMqKiAgICAgICAgICAgICAgICAgICAgICAgIHwgYHIgbWVkaWFuX3N0YXRlc19kZmFgICAgIHwgYHIgbWVkaWFuX3N0YXRlc19kZmFfbWluYHwgYHIgbWVkaWFuX3N0YXRlc19vdXJgICAgfAp8ICoqTWF4aW11bSBzdGF0ZXMqKiAgICAgICAgICAgICAgICAgICAgICAgfCBgciBtYXhfc3RhdGVzX2RmYWAgICAgICAgfCBgciBtYXhfc3RhdGVzX2RmYV9taW5gICAgfCBgciBtYXhfc3RhdGVzX291cmAgICAgICB8CnwgKipTdGFuZGFyZCBkZXZpYXRpb24gb2Ygc3RhdGVzKiogICAgICAgICB8IGByIHNkX3N0YXRlc19kZmFgICAgICAgICB8IGByIHNkX3N0YXRlc19kZmFfbWluYCAgICB8IGByIHNkX3N0YXRlc19vdXJgICAgICAgIHwKfCAqKk1lYW4gdHJhbnNpdGlvbnMqKiAgICAgICAgICAgICAgICAgICAgIHwgYHIgbWVhbl90cmFuc19kZmFgICAgICAgIHwgYHIgbWVhbl90cmFuc19kZmFfbWluYCAgIHwgYHIgbWVhbl90cmFuc19vdXJgICAgICAgfAp8ICoqTWVkaWFuIHRyYW5zaXRpb25zKiogICAgICAgICAgICAgICAgICAgfCBgciBtZWRpYW5fdHJhbnNfZGZhYCAgICAgfCBgciBtZWRpYW5fdHJhbnNfZGZhX21pbmAgfCBgciBtZWRpYW5fdHJhbnNfb3VyYCAgICB8CnwgKipNYXhpbXVtIHRyYW5zaXRpb25zKiogICAgICAgICAgICAgICAgICB8IGByIG1heF90cmFuc19kZmFgICAgICAgICB8IGByIG1heF90cmFuc19kZmFfbWluYCAgICB8IGByIG1heF90cmFuc19vdXJgICAgICAgIHwKfCAqKlN0YW5kYXJkIGRldmlhdGlvbiBvZiB0cmFuc2l0aW9ucyoqICAgIHwgYHIgc2RfdHJhbnNfZGZhYCAgICAgICAgIHwgYHIgc2RfdHJhbnNfZGZhX21pbmAgICAgIHwgYHIgc2RfdHJhbnNfb3VyYCAgICAgICAgfAoKCgpOb3RlIHRoYXQgdGltZW91dHMgZm9yIENsYXNzaWNhbCAodG8gREZBKSBhbmQgQ2xhc3NpY2FsICh0byBERkEgKyBtaW4pIGFyZSB0YWtlbiBmcm9tIHRoZSBzYW1lIHNvdXJjZS4KVGhlIG1lYW5zLCBtZWRpYW5zLCBldGMuIGFyZSBjb21wdXRlZCBmcm9tIGJlbmNobWFya3MgdGhhdCBkaWQgbm90IHRpbWVvdXQuCldlIG5vdyBzZXQgdGhlIHRpbWUgb2YgdGhlIHRpbWVvdXRlZCBiZW5jaG1hcmtzIHRvIGByIFRJTUVPVVRfTkFgIG1zIGZvciBzaG93aW5nIGluIHRoZSBwbG90cy4KV2UgYWxzbyBzZXQgdGhlIG51bWJlciBvZiBzdGF0ZXMgb2YgdGltZW91dGVkIGNhc2VzIHRvIGByIE1BWF9TVEFURVNgIGZvciB0aGUgcGxvdHMuCgpgYGB7ciBlY2hvPUZBTFNFfQojIHBsb3QKcHRpbWUxIDwtIGdncGxvdChkZiwgYWVzKHg9dGltZV9vdXIsIHk9dGltZV9kZmEpKSArCiAgZ2VvbV9wb2ludCgpICsKICBnZW9tX2FibGluZShzaXplPTAuMSkgKwogIHNjYWxlX3hfbG9nMTAoKSArCiAgc2NhbGVfeV9sb2cxMCgpICsKICBjb29yZF9maXhlZCh4bGltID0gYygwLjIsIFRJTUVPVVRfTkEpLCB5bGltID0gYygwLjIsIFRJTUVPVVRfTkEpKSArCiAgbGFicygKICAgIHRpdGxlPSJUaW1lIiwKICAgIHN1YnRpdGxlPSJPdXIgdnMgVW5mb2xkaW5nICh0byBERkEpIiwKICAgIHg9Ik91ciIsCiAgICB5PSJVbmZvbGRpbmcgdG8gREZBIikKCnB0aW1lMiA8LSBnZ3Bsb3QoZGYsIGFlcyh4PXRpbWVfb3VyLCB5PXRpbWVfZGZhX21pbikpICsKIyAgZ2VvbV9qaXR0ZXIod2lkdGggPSAuNSwgc2l6ZT0xKSArCiAgZ2VvbV9wb2ludCgpICsKICBnZW9tX2FibGluZShzaXplPTAuMSkgKwogIHNjYWxlX3hfbG9nMTAoKSArCiAgc2NhbGVfeV9sb2cxMCgpICsKICBjb29yZF9maXhlZCh4bGltID0gYygwLjIsIFRJTUVPVVRfTkEpLCB5bGltID0gYygwLjIsIFRJTUVPVVRfTkEpKSArCiAgbGFicygKICAgIHRpdGxlPSJUaW1lIiwKICAgIHN1YnRpdGxlPSJPdXIgdnMgVW5mb2xkaW5nICh0byBERkEgKyBtaW4pIiwKICAgIHg9Ik91ciIsCiAgICB5PSJVbmZvbGRpbmcgdG8gREZBICsgbWluIikKCmdyaWQuYXJyYW5nZShwdGltZTEsIHB0aW1lMiwgbmNvbCA9IDIpCmBgYAoKIyBIaXN0b2dyYW0gb2YgdGltZXMKCmBgYHtyIGVjaG89RkFMU0V9CnRpbWVfb3VyIDwtIGRhdGEuZnJhbWUoZGYkdGltZV9vdXIpCnRpbWVfb3VyJHR5cGUgPC0gIm91ciIKbmFtZXModGltZV9vdXIpWzFdPC0idGltZSIKCnRpbWVfZGZhIDwtIGRhdGEuZnJhbWUoZGYkdGltZV9kZmEpCnRpbWVfZGZhJHR5cGUgPC0gImRmYSIKbmFtZXModGltZV9kZmEpWzFdPC0idGltZSIKCnRpbWVfZGZhX21pbiA8LSBkYXRhLmZyYW1lKGRmJHRpbWVfZGZhX21pbikKdGltZV9kZmFfbWluJHR5cGUgPC0gImRmYSttaW4iCm5hbWVzKHRpbWVfZGZhX21pbilbMV08LSJ0aW1lIgoKdGltZV9hbGwgPC0gcmJpbmQodGltZV9vdXIsIHRpbWVfZGZhLCB0aW1lX2RmYV9taW4pCgpwdGltZWggPC0gZ2dwbG90KHRpbWVfYWxsLCBhZXModGltZSkpICsKICBnZW9tX2RlbnNpdHkoYWVzKGZpbGw9ZmFjdG9yKHR5cGUpKSwgYWxwaGE9MC43KSArCiAjIGdlb21faGlzdG9ncmFtKGFlcyhmaWxsPWZhY3Rvcih0eXBlKSksIGFscGhhPTAuOCkgKwogIHNjYWxlX3hfbG9nMTAoKSArCiAgbGFicygKICAgIHRpdGxlPSJUaW1lIiwKICAgIHN1YnRpdGxlPSJPdXIgdnMgVW5mb2xkaW5nICIsCiAgICB4PSJUaW1lIFttc10iLAogICAgeT0iRGVuc2l0eSIpCgoKcGxvdChwdGltZWgpCmBgYAoKIyBTdGF0ZXMKCmBgYHtyIGVjaG89RkFMU0V9CmRmJFguRENBLltpcy5uYShkZiRYLkRDQS4pXSA8LSBNQVhfU1RBVEVTCmRmJFguREZBLltpcy5uYShkZiRYLkRGQS4pXSA8LSBNQVhfU1RBVEVTCmRmJFgubWluLltpcy5uYShkZiRYLm1pbi4pXSA8LSBNQVhfU1RBVEVTCgpkZiRYLk5DQS5baXMubmEoZGYkWC5OQ0EuKV0gPC0gTUFYX1NUQVRFUwpkZiRYLk5GQS5baXMubmEoZGYkWC5ORkEuKV0gPC0gTUFYX1NUQVRFUwoKIyBwbG90CnBzdGF0ZXMxIDwtIGdncGxvdChkZiwgYWVzKHg9WC5EQ0EuLCB5PVguREZBLikpICsKICBnZW9tX3BvaW50KCkgKwogIGdlb21fYWJsaW5lKHNpemU9MC4xKSArCiAgc2NhbGVfeF9sb2cxMCgpICsKICBzY2FsZV95X2xvZzEwKCkgKwogIGNvb3JkX2ZpeGVkKHhsaW0gPSBjKDAuMiwgTUFYX1NUQVRFUyksIHlsaW0gPSBjKDAuMiwgTUFYX1NUQVRFUykpICsKICBsYWJzKAogICAgdGl0bGU9IlN0YXRlcyIsCiAgICBzdWJ0aXRsZT0iT3VyIHZzIFVuZm9sZGluZyAodG8gREZBKSIsCiAgICB4PSJPdXIiLAogICAgeT0iVW5mb2xkaW5nIHRvIERGQSIpCgpwc3RhdGVzMiA8LSBnZ3Bsb3QoZGYsIGFlcyh4PVguRENBLiwgeT1YLm1pbi4pKSArCiAgZ2VvbV9wb2ludCgpICsKICBnZW9tX2FibGluZShzaXplPTAuMSkgKwogIHNjYWxlX3hfbG9nMTAoKSArCiAgc2NhbGVfeV9sb2cxMCgpICsKICBjb29yZF9maXhlZCh4bGltID0gYygwLjIsIE1BWF9TVEFURVMpLCB5bGltID0gYygwLjIsIE1BWF9TVEFURVMpKSArCiAgbGFicygKICAgIHRpdGxlPSJTdGF0ZXMiLAogICAgc3VidGl0bGU9Ik91ciB2cyBVbmZvbGRpbmcgKHRvIERGQSArIG1pbikiLAogICAgeD0iT3VyIiwKICAgIHk9IlVuZm9sZGluZyB0byBERkEgKyBtaW4iKQoKZ3JpZC5hcnJhbmdlKHBzdGF0ZXMxLCBwc3RhdGVzMiwgbmNvbCA9IDIpCmBgYAoKCmBgYHtyIGVjaG89RkFMU0V9CmluX3N0YXRlc19vdXIgPC0gZGF0YS5mcmFtZShkZiRYLk5DQS4pCmluX3N0YXRlc19vdXIkdHlwZSA8LSAiaW5fb3VyIgpuYW1lcyhpbl9zdGF0ZXNfb3VyKVsxXTwtInN0YXRlcyIKCmluX3N0YXRlc19kZmEgPC0gZGF0YS5mcmFtZShkZiRYLk5GQS4pCmluX3N0YXRlc19kZmEkdHlwZSA8LSAiaW5fZGZhIgpuYW1lcyhpbl9zdGF0ZXNfZGZhKVsxXTwtInN0YXRlcyIKCm91dF9zdGF0ZXNfb3VyIDwtIGRhdGEuZnJhbWUoZGYkWC5EQ0EuKQpvdXRfc3RhdGVzX291ciR0eXBlIDwtICJvdXRfb3VyIgpuYW1lcyhvdXRfc3RhdGVzX291cilbMV08LSJzdGF0ZXMiCgpvdXRfc3RhdGVzX2RmYSA8LSBkYXRhLmZyYW1lKGRmJFguREZBLikKb3V0X3N0YXRlc19kZmEkdHlwZSA8LSAib3V0X2RmYSIKbmFtZXMob3V0X3N0YXRlc19kZmEpWzFdPC0ic3RhdGVzIgoKb3V0X3N0YXRlc19kZmFfbWluIDwtIGRhdGEuZnJhbWUoZGYkWC5taW4uKQpvdXRfc3RhdGVzX2RmYV9taW4kdHlwZSA8LSAib3V0X2RmYV9taW4iCm5hbWVzKG91dF9zdGF0ZXNfZGZhX21pbilbMV08LSJzdGF0ZXMiCgppbl9zdGF0ZXNfYWxsIDwtIHJiaW5kKAogIGluX3N0YXRlc19vdXIsCiAgaW5fc3RhdGVzX2RmYQopCgpvdXRfc3RhdGVzX2FsbCA8LSByYmluZCgKICBvdXRfc3RhdGVzX291ciwKICBvdXRfc3RhdGVzX2RmYSwKICBvdXRfc3RhdGVzX2RmYV9taW4KKQoKcHN0YXRlc19pbl9oaXN0IDwtIGdncGxvdChpbl9zdGF0ZXNfYWxsLCBhZXMoc3RhdGVzKSkgKwogIGdlb21fZGVuc2l0eShhZXMoZmlsbD1mYWN0b3IodHlwZSkpLCBhbHBoYT0wLjcpICsKICMgZ2VvbV9oaXN0b2dyYW0oYWVzKGZpbGw9ZmFjdG9yKHR5cGUpKSwgYWxwaGE9MC44KSArCiAgc2NhbGVfeF9sb2cxMCgpICsKICBsYWJzKAogICAgdGl0bGU9IlN0YXRlcyIsCiAgICBzdWJ0aXRsZT0iSW5wdXQiLAogICAgeD0iU3RhdGVzIiwKICAgIHk9IkRlbnNpdHkiKQoKCnBzdGF0ZXNfb3V0X2hpc3QgPC0gZ2dwbG90KG91dF9zdGF0ZXNfYWxsLCBhZXMoc3RhdGVzKSkgKwogIGdlb21fZGVuc2l0eShhZXMoZmlsbD1mYWN0b3IodHlwZSkpLCBhbHBoYT0wLjcpICsKIyAgZ2VvbV9oaXN0b2dyYW0oYWVzKGZpbGw9ZmFjdG9yKHR5cGUpKSwgYWxwaGE9MC44KSArCiAgc2NhbGVfeF9sb2cxMCgpICsKICBsYWJzKAogICAgdGl0bGU9IlN0YXRlcyIsCiAgICBzdWJ0aXRsZT0iT3V0cHV0IiwKICAgIHg9IlN0YXRlcyIsCiAgICB5PSJEZW5zaXR5IikKCnBsb3QocHN0YXRlc19pbl9oaXN0KQpwbG90KHBzdGF0ZXNfb3V0X2hpc3QpCiNncmlkLmFycmFuZ2UocHN0YXRlc19pbl9oaXN0LCBwc3RhdGVzX291dF9oaXN0LCBuY29sID0gMSkKYGBgCgojIENvdW50ZXJzCgp8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTkNBICAgICAgICAgICAgICAgICAgICAgICAgIHwgRENBICAgICAgICAgICAgICAgICAgICAgICAgIHwKfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTp8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTp8CnwgKipNZWFuIG51bS4gb2YgY250cyoqICAgICAgICAgfCBgciBtZWFuKGRmJGNvdW50ZXJzLk5DQSlgICAgfCBgciBtZWFuKGRmJGNvdW50ZXJzLkRDQSlgICAgfAp8ICoqTWVkaWFuIG51bS4gb2YgY250cyoqICAgICAgIHwgYHIgbWVkaWFuKGRmJGNvdW50ZXJzLk5DQSlgIHwgYHIgbWVkaWFuKGRmJGNvdW50ZXJzLkRDQSlgIHwKfCAqKlN0ZC4gZGV2LiBvZiBjbnRzKiogICAgICAgICB8IGByIHNkKGRmJGNvdW50ZXJzLk5DQSlgICAgICB8IGByIHNkKGRmJGNvdW50ZXJzLkRDQSlgICAgICB8CnwgKipNYXggbnVtLiBvZiBjbnRzKiogICAgICAgICAgfCBgciBtYXgoZGYkY291bnRlcnMuTkNBKWAgICAgfCBgciBtYXgoZGYkY291bnRlcnMuRENBKWAgICAgfAoKIyBUcmFuc2l0aW9ucwoKYGBge3IgZWNobz1GQUxTRX0KZGYkRENBLnRyYW5zW2lzLm5hKGRmJERDQS50cmFucyldIDwtIE1BWF9UUkFOUwpkZiRERkEudHJhbnNbaXMubmEoZGYkREZBLnRyYW5zKV0gPC0gTUFYX1RSQU5TCmRmJE1JTi50cmFuc1tpcy5uYShkZiRNSU4udHJhbnMpXSA8LSBNQVhfVFJBTlMKCiMgcGxvdApwdHJhbnMxIDwtIGdncGxvdChkZiwgYWVzKHg9RENBLnRyYW5zLCB5PURGQS50cmFucykpICsKICBnZW9tX3BvaW50KCkgKwogIGdlb21fYWJsaW5lKHNpemU9MC4xKSArCiAgc2NhbGVfeF9sb2cxMCgpICsKICBzY2FsZV95X2xvZzEwKCkgKwogIGNvb3JkX2ZpeGVkKHhsaW0gPSBjKDAuMiwgTUFYX1RSQU5TKSwgeWxpbSA9IGMoMC4yLCBNQVhfVFJBTlMpKSArCiAgbGFicygKICAgIHRpdGxlPSJUcmFuc2l0aW9ucyIsCiAgICBzdWJ0aXRsZT0iT3VyIHZzIFVuZm9sZGluZyAodG8gREZBKSIsCiAgICB4PSJPdXIiLAogICAgeT0iVW5mb2xkaW5nIHRvIERGQSIpCgpwdHJhbnMyIDwtIGdncGxvdChkZiwgYWVzKHg9RENBLnRyYW5zLCB5PU1JTi50cmFucykpICsKICBnZW9tX3BvaW50KCkgKwogIGdlb21fYWJsaW5lKHNpemU9MC4xKSArCiAgc2NhbGVfeF9sb2cxMCgpICsKICBzY2FsZV95X2xvZzEwKCkgKwogIGNvb3JkX2ZpeGVkKHhsaW0gPSBjKDAuMiwgTUFYX1RSQU5TKSwgeWxpbSA9IGMoMC4yLCBNQVhfVFJBTlMpKSArCiAgbGFicygKICAgIHRpdGxlPSJUcmFuc2l0aW9ucyIsCiAgICBzdWJ0aXRsZT0iT3VyIHZzIFVuZm9sZGluZyAodG8gREZBICsgbWluKSIsCiAgICB4PSJPdXIiLAogICAgeT0iVW5mb2xkaW5nIHRvIERGQSArIG1pbiIpCgpncmlkLmFycmFuZ2UocHRyYW5zMSwgcHRyYW5zMiwgbmNvbCA9IDIpCmBgYAo=