VGhpcyBpcyBhIGNvbGxlY3Rpb24gb2YgdGVzdHMgZm9yIEdDQy4gRm9yIGZ1cnRoZXIgaW5mb3JtYXRpb24gYWJvdXQKdGhlIEMgdGVzdHN1aXRlLCBzZWUgUkVBRE1FLmdjYy4KClRoZSBkcml2ZXIgdGhhdCBydW5zIHRoaXMgdGVzdHN1aXRlIGlzIGNhbGxlZCBEZWphR251IGFuZCB5b3Ugd2lsbApuZWVkIGEgY3VycmVudCBEZWphR251IHNuYXBzaG90LCB3aGljaCBpcyBhdmFpbGFibGUgZnJvbQpmdHA6Ly9nY2MuZ251Lm9yZy9wdWIvZ2NjL2luZnJhc3RydWN0dXJlLCBmb3IgZXhhbXBsZS4KClRoZXNlIHRlc3RzIGFyZSBpbmNsdWRlZCAiYXMgaXMiLiBJZiBhbnkgb2YgdGhlbSBmYWlscywgZG8gbm90IHJlcG9ydAphIGJ1Zy4gIEJ1ZyByZXBvcnRzIGZvciBEZWphR251IGNhbiBnbyB0byBidWctZGVqYWdudUBwcmVwLmFpLm1pdC5lZHUuCkRpc2N1c3Npb24gYW5kIGNvbW1lbnRzIGFib3V0IHRoaXMgdGVzdHN1aXRlIHNob3VsZCBiZSBzZW50IHRvCmdjY0BnY2MuZ251Lm9yZzsgYWRkaXRpb25zIGFuZCBjaGFuZ2VzIHRvIHNob3VsZCBnbyB0byBzZW50IHRvCmdjYy1wYXRjaGVzQGdjYy5nbnUub3JnLgoKVGhlIGVudGlyZSB0ZXN0c3VpdGUgaXMgaW52b2tlZCBieSBgbWFrZSBjaGVja2AgYXQgdGhlIHRvcCBsZXZlbCBvZgp0aGUgR0NDIHRyZWUuIGBtYWtlIGNoZWNrLWcrK2AgcnVucyB0aGUgQysrIHRlc3RzdWl0ZSBvbmx5LgoKU1RSVUNUVVJFIE9GIFRIRSBHKysgVEVTVFNVSVRFCgogIGcrKy5kZyB0ZXN0czoKCiAgQWxsIG5ldyB0ZXN0cyBzaG91bGQgYmUgcGxhY2VkIGluIGFuIGFwcHJvcHJpYXRlIHN1YmRpcmVjdG9yeSBvZiBnKysuZGcuCgogIGcrKy5vbGQtZGVqYSB0ZXN0czoKCiAgZysrLmJlbmphbWluCVRlc3RzIGJ5IEJlbmphbWluIEtvegogIGcrKy5ib2IKICBnKysuYnJlbmRhbglUZXN0cyBieSBCcmVuZGFuIEtlaG9lCiAgZysrLmJ1Z3MKICBnKysuZWggIAlUZXN0cyBmb3IgZXhjZXB0aW9uIGhhbmRsaW5nCiAgZysrLmV4dCAgCVRlc3RzIGZvciBnKysgZXh0ZW5zaW9ucwogIGcrKy5nYiAgCVRlc3RzIGJ5IEdlcmFsZCBCYXVtZ2FydG5lcgogIGcrKy5qYXNvbglUZXN0cyBieSBKYXNvbiBNZXJpbGwKICBnKysuamVmZglUZXN0cyBieSBKZWZmcmV5IEEgTGF3CiAgZysrLm1hcnRpbglUZXN0cyBieSBNYXJ0aW4gdi4gTPZ3aXMKICBnKysubWlrZQlUZXN0cyBieSBNaWtlIFN0dW1wCiAgZysrLm5pa2xhcwlUZXN0cyBieSBOaWtsYXMgSGFsbHF2aXN0CiAgZysrLm5zICAJVGVzdHMgZm9yIG5hbWVzcGFjZXMKICBnKysub3RoZXIKICBnKysucHQgIAlUZXN0cyBmb3IgdGVtcGxhdGVzCiAgZysrLnJmZwogIGcrKy5yb2JlcnRsCVRlc3RzIGZyb20gZ2NjLWJ1Z3NAZ2NjLmdudS5vcmcsIGdhdGhlcmVkIGJ5IFJvYmVydCBMaXBlCgkKRmluYWxseSwgc29tZSByYW5kb20gbGFzdCBtaW51dGUgbm90ZXMgYnkgTWlrZSBTdHVtcCA8bXJzQGN5Z251cy5jb20+LCBvbgpob3cgdG8gcnVuIHRlc3RzIChpbiB0aGUgR0NDIDIuNyBlcmEpOgoKCXJ1bnRlc3QgLS10b29sIGcrKyAtLXNyY2RpciAuL3Rlc3RzdWl0ZQoKd2hlcmUgCgoJcnVudGVzdAlJcyB0aGUgbmFtZSB1c2VkIHRvIGludm9rZSBEZWphR251LiAgIElmIERlamFHbnUgaXMgbm90CgkJaW5zdGFsbCB0aGlzIHdpbGwgYmUgdGhlIHJlbGF0aXZlIHBhdGggbmFtZSBmb3IgcnVudGVzdC4KCgktLXRvb2wJVGhpcyB0ZWxscyBEZWphR251IHdoaWNoIHRvb2wgeW91IGFyZSB0ZXN0aW5nLiBJdCBpcwoJCW1haW5seSB1c2VkIHRvIGZpbmQgdGhlIHRlc3RzdWl0ZSBkaXJlY3RvcmllcyBmb3IgYQoJCXBhcnRpY3VsYXIgdG9vbCB3aGVuIHNldmVyYWwgdGVzdHN1aXRlcyBhcmUgaW4gdGhlCgkJc2FtZSBkaXJlY3RvcnkuIChsaWtlIHRoZSBnY2MgYW5kIGcrKyB0ZXN0c3VpdGVzKQoKCS0tc3JjZGlyIFRoaXMgcG9pbnRzIHRvIHRoZSB0b3AgbGV2ZWwgb2YgdGhlIGRpcmVjdG9yeQoJCWNvbnRhaW5pbmcgdGhlIHNvdXJjZXMgb2YgdGhlIHRlc3RzdWl0ZS4gVGhpcyBpcwoJCS4vdGVzdHN1aXRlIGlmIHlvdSBhcmUgaW4gdGhlIGRpcmVjdG9yeSB0aGF0IGhhcyB0aGUKCQl0ZXN0c3VpdGUgZGlyZWN0b3J5Lgo=