Name: series-workflowt88gb Phase: Failed StartedAt: 2026-08-31 09:11:15 +0000 UTC FinishedAt: 2026-08-31 09:28:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflowt88gb[0] Phase: Succeeded StartedAt: 2026-08-31 09:11:15 +0000 UTC FinishedAt: 2026-08-31 09:28:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflowt88gb[0].run-triage Phase: Succeeded StartedAt: 2026-08-31 09:11:15 +0000 UTC FinishedAt: 2026-08-31 09:28:09 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "AI determined the patch has no functional impact", "targets": null, "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMxIDA5OjI3PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggb25seSBhZGRzIGFuZCBtb2RpZmllcyB0ZXN0IGNhc2VzIGFuZCB0ZXN0IGtlcm5lbCBtb2R1bGUgZGVmaW5pdGlvbnMgd2l0aGluIHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi8sIHdpdGggbm8gZnVuY3Rpb25hbCBtb2RpZmljYXRpb25zIHRvIHRoZSBjb3JlIExpbnV4IGtlcm5lbC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzEgMDk6Mjc8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBlMWY2ZWE3NzE1ZDg0MzVmZGY3MDY2MGI5YTY2NjY3YzY4NTYzNzVkXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBBdWcgMzEgMDk6Mjc6NDcgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvdGVzdF9zdHJ1Y3Rfb3BzX211bHRpX2FyZ3MuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3Rlc3Rfc3RydWN0X29wc19tdWx0aV9hcmdzLmNcbmluZGV4IDBmMzIxZTg4OTg2MjAuLjdmNmY5ZDYxYzllMDcgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy90ZXN0X3N0cnVjdF9vcHNfbXVsdGlfYXJncy5jXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy90ZXN0X3N0cnVjdF9vcHNfbXVsdGlfYXJncy5jXG5AQCAtMyw3ICYjNDM7Myw1NCBAQFxuICNpbmNsdWRlIFx1MDAzY3Rlc3RfcHJvZ3MuaFx1MDAzZVxuICNpbmNsdWRlIFwmIzM0O3N0cnVjdF9vcHNfbXVsdGlfYXJncy5za2VsLmhcJiMzNDtcbiBcbiYjNDM7c3RhdGljIHZvaWQgdGVzdF9yZWZjb3VudGVkX211bHRpKHZvaWQpXG4mIzQzO3tcbiYjNDM7XHRzdHJ1Y3Qgc3RydWN0X29wc19tdWx0aV9hcmdzICpza2VsO1xuJiM0MztcdGludCBlcnI7XG4mIzQzO1xuJiM0MztcdHNrZWwgPSBzdHJ1Y3Rfb3BzX211bHRpX2FyZ3NfX29wZW4oKTtcbiYjNDM7XHRpZiAoIUFTU0VSVF9PS19QVFIoc2tlbCwgXCYjMzQ7c3RydWN0X29wc19tdWx0aV9hcmdzX19vcGVuXCYjMzQ7KSlcbiYjNDM7XHRcdHJldHVybjtcbiYjNDM7XG4mIzQzO1x0ZXJyID0gc3RydWN0X29wc19tdWx0aV9hcmdzX19sb2FkKHNrZWwpO1xuJiM0MztcdEFTU0VSVF9FUShlcnIsIC1FSU5WQUwsIFwmIzM0O3N0cnVjdF9vcHNfbXVsdGlfYXJnc19fbG9hZFwmIzM0Oyk7XG4mIzQzO1xuJiM0MztcdHN0cnVjdF9vcHNfbXVsdGlfYXJnc19fZGVzdHJveShza2VsKTtcbiYjNDM7fVxuJiM0MztcbiYjNDM7c3RhdGljIHZvaWQgdGVzdF90cmFtcG9saW5lX3N0YWNrX2FyZ3Modm9pZClcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBzdHJ1Y3Rfb3BzX211bHRpX2FyZ3MgKnNrZWw7XG4mIzQzO1x0c3RydWN0IGJwZl9saW5rICpsaW5rID0gTlVMTDtcbiYjNDM7XHRpbnQgZXJyO1xuJiM0MztcbiYjNDM7XHRza2VsID0gc3RydWN0X29wc19tdWx0aV9hcmdzX19vcGVuKCk7XG4mIzQzO1x0aWYgKCFBU1NFUlRfT0tfUFRSKHNrZWwsIFwmIzM0O3N0cnVjdF9vcHNfbXVsdGlfYXJnc19fb3BlblwmIzM0OykpXG4mIzQzO1x0XHRyZXR1cm47XG4mIzQzO1xuJiM0MztcdGJwZl9wcm9ncmFtX19zZXRfYXV0b2xvYWQoc2tlbC1cdTAwM2Vwcm9ncy50ZXN0X3JlZmNvdW50ZWRfbXVsdGksIGZhbHNlKTtcbiYjNDM7XHRza2VsLVx1MDAzZXN0cnVjdF9vcHMudGVzdG1vZF9yZWZfYWNxdWlyZS1cdTAwM2V0ZXN0X3JlZmNvdW50ZWRfbXVsdGkgPSBOVUxMO1xuJiM0MztcbiYjNDM7XHRlcnIgPSBzdHJ1Y3Rfb3BzX211bHRpX2FyZ3NfX2xvYWQoc2tlbCk7XG4mIzQzO1x0aWYgKCFBU1NFUlRfT0soZXJyLCBcJiMzNDtzdHJ1Y3Rfb3BzX211bHRpX2FyZ3NfX2xvYWRcJiMzNDspKVxuJiM0MztcdFx0Z290byBvdXQ7XG4mIzQzO1xuJiM0MztcdGxpbmsgPSBicGZfbWFwX19hdHRhY2hfc3RydWN0X29wcyhza2VsLVx1MDAzZW1hcHMudGVzdG1vZF9yZWZfYWNxdWlyZSk7XG4mIzQzO1x0aWYgKCFBU1NFUlRfT0tfUFRSKGxpbmssIFwmIzM0O2JwZl9tYXBfX2F0dGFjaF9zdHJ1Y3Rfb3BzXCYjMzQ7KSlcbiYjNDM7XHRcdGdvdG8gb3V0O1xuJiM0MztcbiYjNDM7XHRBU1NFUlRfRVEoc2tlbC1cdTAwM2Vic3MtXHUwMDNlZ290X2FyZzksIDk5OTksIFwmIzM0O2NoZWNrX3N0YWNrX3Bhc3NlZF9hcmc5XCYjMzQ7KTtcbiYjNDM7XG4mIzQzO291dDpcbiYjNDM7XHRicGZfbGlua19fZGVzdHJveShsaW5rKTtcbiYjNDM7XHRzdHJ1Y3Rfb3BzX211bHRpX2FyZ3NfX2Rlc3Ryb3koc2tlbCk7XG4mIzQzO31cbiYjNDM7XG4gdm9pZCB0ZXN0X3N0cnVjdF9vcHNfbXVsdGlfYXJncyh2b2lkKVxuIHtcbi1cdFJVTl9URVNUUyhzdHJ1Y3Rfb3BzX211bHRpX2FyZ3MpO1xuJiM0MztcdGlmICh0ZXN0X19zdGFydF9zdWJ0ZXN0KFwmIzM0O3Rlc3RfcmVmY291bnRlZF9tdWx0aVwmIzM0OykpXG4mIzQzO1x0XHR0ZXN0X3JlZmNvdW50ZWRfbXVsdGkoKTtcbiYjNDM7XG4mIzQzO1x0aWYgKHRlc3RfX3N0YXJ0X3N1YnRlc3QoXCYjMzQ7dGVzdF90cmFtcG9saW5lX3N0YWNrX2FyZ3NcJiMzNDspKVxuJiM0MztcdFx0dGVzdF90cmFtcG9saW5lX3N0YWNrX2FyZ3MoKTtcbiB9XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3N0cnVjdF9vcHNfbXVsdGlfYXJncy5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3N0cnVjdF9vcHNfbXVsdGlfYXJncy5jXG5pbmRleCBjNjJiZTE1NzU3ZjA0Li5mMGY0NzY3NmIwOTlhIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3N0cnVjdF9vcHNfbXVsdGlfYXJncy5jXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mvc3RydWN0X29wc19tdWx0aV9hcmdzLmNcbkBAIC0yOSw3ICYjNDM7MjksMjAgQEAgaW50IHRlc3RfcmVmY291bnRlZF9tdWx0aSh1bnNpZ25lZCBsb25nIGxvbmcgKmN0eClcbiBcdHJldHVybiAwO1xuIH1cbiBcbiYjNDM7X191NjQgZ290X2FyZzkgPSAwO1xuJiM0MztcbiYjNDM7U0VDKFwmIzM0O3N0cnVjdF9vcHMvdGVzdF90cmFtcG9saW5lX3N0YWNrX2FyZ3NcJiMzNDspXG4mIzQzO2ludCBCUEZfUFJPRyh0ZXN0X3RyYW1wb2xpbmVfc3RhY2tfYXJncywgaW50IGFyZzEsIGludCBhcmcyLCBpbnQgYXJnMyxcbiYjNDM7XHRcdFx0XHRcdCBpbnQgYXJnNCwgaW50IGFyZzUsIGludCBhcmc2LFxuJiM0MztcdFx0XHRcdFx0IGludCBhcmc3LCBpbnQgYXJnOCwgaW50IGFyZzkpXG4mIzQzO3tcbiYjNDM7XHRnb3RfYXJnOSA9IGFyZzk7XG4mIzQzO1xuJiM0MztcdHJldHVybiAwO1xuJiM0Mzt9XG4mIzQzO1xuIFNFQyhcJiMzNDsuc3RydWN0X29wcy5saW5rXCYjMzQ7KVxuIHN0cnVjdCBicGZfdGVzdG1vZF9vcHMgdGVzdG1vZF9yZWZfYWNxdWlyZSA9IHtcbiBcdC50ZXN0X3JlZmNvdW50ZWRfbXVsdGkgPSAodm9pZCAqKXRlc3RfcmVmY291bnRlZF9tdWx0aSxcbiYjNDM7XHQudGVzdF90cmFtcG9saW5lX3N0YWNrX2FyZ3MgPSAodm9pZCAqKXRlc3RfdHJhbXBvbGluZV9zdGFja19hcmdzLFxuIH07XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Rlc3Rfa21vZHMvYnBmX3Rlc3Rtb2QuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi90ZXN0X2ttb2RzL2JwZl90ZXN0bW9kLmNcbmluZGV4IDIzODBiNmNiZGVhZGMuLjhmMDc0NGU2MDc1YjMgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdGVzdF9rbW9kcy9icGZfdGVzdG1vZC5jXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdGVzdF9rbW9kcy9icGZfdGVzdG1vZC5jXG5AQCAtMTY3OCw2ICYjNDM7MTY3OCw5IEBAIHN0YXRpYyBib29sIGJwZl90ZXN0bW9kX29wc19pc192YWxpZF9hY2Nlc3MoaW50IG9mZiwgaW50IHNpemUsXG4gXHRyZXR1cm4gYnBmX3RyYWNpbmdfYnRmX2N0eF9hY2Nlc3Mob2ZmLCBzaXplLCB0eXBlLCBwcm9nLCBpbmZvKTtcbiB9XG4gXG4mIzQzO3N0YXRpYyBERUZJTkVfTVVURVgoc3Rfb3BzX3RyYW1wb2xpbmVfbXV0ZXgpO1xuJiM0MztzdGF0aWMgc3RydWN0IGJwZl90ZXN0bW9kX29wcyAqc3Rfb3BzX3RyYW1wb2xpbmU7XG4mIzQzO1xuIHN0YXRpYyBpbnQgYnBmX3Rlc3Rtb2Rfb3BzX2luaXRfbWVtYmVyKGNvbnN0IHN0cnVjdCBidGZfdHlwZSAqdCxcbiBcdFx0XHRcdCAgICAgICBjb25zdCBzdHJ1Y3QgYnRmX21lbWJlciAqbWVtYmVyLFxuIFx0XHRcdFx0ICAgICAgIHZvaWQgKmtkYXRhLCBjb25zdCB2b2lkICp1ZGF0YSlcbkBAIC0xNjkxLDYgJiM0MzsxNjk0LDE4IEBAIHN0YXRpYyBpbnQgYnBmX3Rlc3Rtb2Rfb3BzX2luaXRfbWVtYmVyKGNvbnN0IHN0cnVjdCBidGZfdHlwZSAqdCxcbiBcdFx0KChzdHJ1Y3QgYnBmX3Rlc3Rtb2Rfb3BzICopa2RhdGEpLVx1MDAzZWRhdGEgPSAoKHN0cnVjdCBicGZfdGVzdG1vZF9vcHMgKil1ZGF0YSktXHUwMDNlZGF0YTtcbiBcdFx0cmV0dXJuIDE7XG4gXHR9XG4mIzQzO1xuJiM0MztcdGlmIChtZW1iZXItXHUwMDNlb2Zmc2V0ID09IG9mZnNldG9mKHN0cnVjdCBicGZfdGVzdG1vZF9vcHMsIHRlc3RfdHJhbXBvbGluZV9zdGFja19hcmdzKSAqIDgpIHtcbiYjNDM7XHRcdG11dGV4X2xvY2soXHUwMDI2c3Rfb3BzX3RyYW1wb2xpbmVfbXV0ZXgpO1xuJiM0MztcdFx0aWYgKHN0X29wc190cmFtcG9saW5lKSB7XG4mIzQzO1x0XHRcdHByX2VycihcJiMzNDtzdF9vcHNfdHJhbXBvbGluZSBoYXMgYWxyZWFkeSBiZWVuIHJlZ2lzdGVyZWRcXG5cJiMzNDspO1xuJiM0MztcdFx0XHRtdXRleF91bmxvY2soXHUwMDI2c3Rfb3BzX3RyYW1wb2xpbmVfbXV0ZXgpO1xuJiM0MztcdFx0XHRyZXR1cm4gLUVFWElTVDtcbiYjNDM7XHRcdH1cbiYjNDM7XHRcdHN0X29wc190cmFtcG9saW5lID0gKHN0cnVjdCBicGZfdGVzdG1vZF9vcHMgKilrZGF0YTtcbiYjNDM7XHRcdG11dGV4X3VubG9jayhcdTAwMjZzdF9vcHNfdHJhbXBvbGluZV9tdXRleCk7XG4mIzQzO1x0fVxuJiM0MztcbiBcdHJldHVybiAwO1xuIH1cbiBcbkBAIC0xNzIwLDExICYjNDM7MTczNSwyMCBAQCBzdGF0aWMgaW50IGJwZl9kdW1teV9yZWcodm9pZCAqa2RhdGEsIHN0cnVjdCBicGZfbGluayAqbGluaylcbiBcdGlmIChvcHMtXHUwMDNldGVzdF8yKVxuIFx0XHRvcHMtXHUwMDNldGVzdF8yKDQsIG9wcy1cdTAwM2VkYXRhKTtcbiBcbiYjNDM7XHRtdXRleF9sb2NrKFx1MDAyNnN0X29wc190cmFtcG9saW5lX211dGV4KTtcbiYjNDM7XHRpZiAoc3Rfb3BzX3RyYW1wb2xpbmUgXHUwMDI2XHUwMDI2IHN0X29wc190cmFtcG9saW5lLVx1MDAzZXRlc3RfdHJhbXBvbGluZV9zdGFja19hcmdzKVxuJiM0MztcdFx0c3Rfb3BzX3RyYW1wb2xpbmUtXHUwMDNldGVzdF90cmFtcG9saW5lX3N0YWNrX2FyZ3MoMSwgMiwgMywgNCwgNSwgNiwgNywgOCwgOTk5OSk7XG4mIzQzO1x0bXV0ZXhfdW5sb2NrKFx1MDAyNnN0X29wc190cmFtcG9saW5lX211dGV4KTtcbiYjNDM7XG4gXHRyZXR1cm4gMDtcbiB9XG4gXG4gc3RhdGljIHZvaWQgYnBmX2R1bW15X3VucmVnKHZvaWQgKmtkYXRhLCBzdHJ1Y3QgYnBmX2xpbmsgKmxpbmspXG4ge1xuJiM0MztcdG11dGV4X2xvY2soXHUwMDI2c3Rfb3BzX3RyYW1wb2xpbmVfbXV0ZXgpO1xuJiM0MztcdGlmIChzdF9vcHNfdHJhbXBvbGluZSA9PSAoc3RydWN0IGJwZl90ZXN0bW9kX29wcyAqKWtkYXRhKVxuJiM0MztcdFx0c3Rfb3BzX3RyYW1wb2xpbmUgPSBOVUxMO1xuJiM0MztcdG11dGV4X3VubG9jayhcdTAwMjZzdF9vcHNfdHJhbXBvbGluZV9tdXRleCk7XG4gfVxuIFxuIHN0YXRpYyBpbnQgYnBmX3Rlc3Rtb2RfdGVzdF8xKHZvaWQpXG5AQCAtMTc2Niw2ICYjNDM7MTc5MCwxMyBAQCBicGZfdGVzdG1vZF9vcHNfX3Rlc3RfcmV0dXJuX3JlZl9rcHRyKGludCBkdW1teSwgc3RydWN0IHRhc2tfc3RydWN0ICp0YXNrX19yZWYsXG4gXHRyZXR1cm4gTlVMTDtcbiB9XG4gXG4mIzQzO3N0YXRpYyBpbnQgYnBmX3Rlc3Rtb2Rfb3BzX190ZXN0X3RyYW1wb2xpbmVfc3RhY2tfYXJncyhpbnQgYXJnMSwgaW50IGFyZzIsIGludCBhcmczLFxuJiM0MztcdFx0XHRcdFx0XHQgICAgICAgaW50IGFyZzQsIGludCBhcmc1LCBpbnQgYXJnNixcbiYjNDM7XHRcdFx0XHRcdFx0ICAgICAgIGludCBhcmc3LCBpbnQgYXJnOCwgaW50IGFyZzkpXG4mIzQzO3tcbiYjNDM7XHRyZXR1cm4gYXJnOTtcbiYjNDM7fVxuJiM0MztcbiBzdGF0aWMgc3RydWN0IGJwZl90ZXN0bW9kX29wcyBfX2JwZl90ZXN0bW9kX29wcyA9IHtcbiBcdC50ZXN0XzEgPSBicGZfdGVzdG1vZF90ZXN0XzEsXG4gXHQudGVzdF8yID0gYnBmX3Rlc3Rtb2RfdGVzdF8yLFxuQEAgLTE3NzMsNiAmIzQzOzE4MDQsNyBAQCBzdGF0aWMgc3RydWN0IGJwZl90ZXN0bW9kX29wcyBfX2JwZl90ZXN0bW9kX29wcyA9IHtcbiBcdC50ZXN0X3JlZmNvdW50ZWQgPSBicGZfdGVzdG1vZF9vcHNfX3Rlc3RfcmVmY291bnRlZCxcbiBcdC50ZXN0X3JlZmNvdW50ZWRfbXVsdGkgPSBicGZfdGVzdG1vZF9vcHNfX3Rlc3RfcmVmY291bnRlZF9tdWx0aSxcbiBcdC50ZXN0X3JldHVybl9yZWZfa3B0ciA9IGJwZl90ZXN0bW9kX29wc19fdGVzdF9yZXR1cm5fcmVmX2twdHIsXG4mIzQzO1x0LnRlc3RfdHJhbXBvbGluZV9zdGFja19hcmdzID0gYnBmX3Rlc3Rtb2Rfb3BzX190ZXN0X3RyYW1wb2xpbmVfc3RhY2tfYXJncyxcbiB9O1xuIFxuIHN0cnVjdCBicGZfc3RydWN0X29wcyBicGZfYnBmX3Rlc3Rtb2Rfb3BzID0ge1xuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi90ZXN0X2ttb2RzL2JwZl90ZXN0bW9kLmggYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdGVzdF9rbW9kcy9icGZfdGVzdG1vZC5oXG5pbmRleCAyMTBiOTE5MjkwY2MyLi40MjI1N2FlODlmZDViIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Rlc3Rfa21vZHMvYnBmX3Rlc3Rtb2QuaFxuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Rlc3Rfa21vZHMvYnBmX3Rlc3Rtb2QuaFxuQEAgLTQ2LDYgJiM0Mzs0NiwxMSBAQCBzdHJ1Y3QgYnBmX3Rlc3Rtb2Rfb3BzIHtcbiBcdHN0cnVjdCB0YXNrX3N0cnVjdCAqKCp0ZXN0X3JldHVybl9yZWZfa3B0cikoaW50IGR1bW15LCBzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRhc2ssXG4gXHRcdFx0XHRcdFx0ICAgIHN0cnVjdCBjZ3JvdXAgKmNncnApO1xuIFxuJiM0MztcdC8qIFVzZWQgdG8gdGVzdCBpbmRpcmVjdCBzdHJ1Y3Rfb3BzIHRyYW1wb2xpbmVzIHN0YWNrLXBhc3NlZCBhcmd1bWVudHMgKFx1MDAzZTggYXJncykuICovXG4mIzQzO1x0aW50ICgqdGVzdF90cmFtcG9saW5lX3N0YWNrX2FyZ3MpKGludCBhcmcxLCBpbnQgYXJnMiwgaW50IGFyZzMsXG4mIzQzO1x0XHRcdFx0XHQgIGludCBhcmc0LCBpbnQgYXJnNSwgaW50IGFyZzYsXG4mIzQzO1x0XHRcdFx0XHQgIGludCBhcmc3LCBpbnQgYXJnOCwgaW50IGFyZzkpO1xuJiM0MztcbiBcdC8qIFRoZSBmb2xsb3dpbmcgZmllbGRzIGFyZSB1c2VkIHRvIHRlc3Qgc2hhZG93IGNvcGllcy4gKi9cbiBcdGNoYXIgb25lYnl0ZTtcbiBcdHN0cnVjdCB7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzEgMDk6Mjc8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Y29yZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggb25seSBhZGRzIGFuZCBtb2RpZmllcyB0ZXN0IGNhc2VzIGFuZCB0ZXN0IGtlcm5lbCBtb2R1bGUgZGVmaW5pdGlvbnMgd2l0aGluIHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi8sIHdpdGggbm8gZnVuY3Rpb25hbCBtb2RpZmljYXRpb25zIHRvIHRoZSBjb3JlIExpbnV4IGtlcm5lbC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBlMWY2ZWE3NzE1ZDg0MzVmZGY3MDY2MGI5YTY2NjY3YzY4NTYzNzVkCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIE1vbiBBdWcgMzEgMDk6Mjc6NDcgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy90ZXN0X3N0cnVjdF9vcHNfbXVsdGlfYXJncy5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvdGVzdF9zdHJ1Y3Rfb3BzX211bHRpX2FyZ3MuYwppbmRleCAwZjMyMWU4ODk4NjIwLi43ZjZmOWQ2MWM5ZTA3IDEwMDY0NAotLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy90ZXN0X3N0cnVjdF9vcHNfbXVsdGlfYXJncy5jCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3Rlc3Rfc3RydWN0X29wc19tdWx0aV9hcmdzLmMKQEAgLTMsNyAmIzQzOzMsNTQgQEAKICNpbmNsdWRlICZsdDt0ZXN0X3Byb2dzLmgmZ3Q7CiAjaW5jbHVkZSAmIzM0O3N0cnVjdF9vcHNfbXVsdGlfYXJncy5za2VsLmgmIzM0OwogCiYjNDM7c3RhdGljIHZvaWQgdGVzdF9yZWZjb3VudGVkX211bHRpKHZvaWQpCiYjNDM7ewomIzQzOwlzdHJ1Y3Qgc3RydWN0X29wc19tdWx0aV9hcmdzICpza2VsOwomIzQzOwlpbnQgZXJyOwomIzQzOwomIzQzOwlza2VsID0gc3RydWN0X29wc19tdWx0aV9hcmdzX19vcGVuKCk7CiYjNDM7CWlmICghQVNTRVJUX09LX1BUUihza2VsLCAmIzM0O3N0cnVjdF9vcHNfbXVsdGlfYXJnc19fb3BlbiYjMzQ7KSkKJiM0MzsJCXJldHVybjsKJiM0MzsKJiM0MzsJZXJyID0gc3RydWN0X29wc19tdWx0aV9hcmdzX19sb2FkKHNrZWwpOwomIzQzOwlBU1NFUlRfRVEoZXJyLCAtRUlOVkFMLCAmIzM0O3N0cnVjdF9vcHNfbXVsdGlfYXJnc19fbG9hZCYjMzQ7KTsKJiM0MzsKJiM0MzsJc3RydWN0X29wc19tdWx0aV9hcmdzX19kZXN0cm95KHNrZWwpOwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgdm9pZCB0ZXN0X3RyYW1wb2xpbmVfc3RhY2tfYXJncyh2b2lkKQomIzQzO3sKJiM0MzsJc3RydWN0IHN0cnVjdF9vcHNfbXVsdGlfYXJncyAqc2tlbDsKJiM0MzsJc3RydWN0IGJwZl9saW5rICpsaW5rID0gTlVMTDsKJiM0MzsJaW50IGVycjsKJiM0MzsKJiM0MzsJc2tlbCA9IHN0cnVjdF9vcHNfbXVsdGlfYXJnc19fb3BlbigpOwomIzQzOwlpZiAoIUFTU0VSVF9PS19QVFIoc2tlbCwgJiMzNDtzdHJ1Y3Rfb3BzX211bHRpX2FyZ3NfX29wZW4mIzM0OykpCiYjNDM7CQlyZXR1cm47CiYjNDM7CiYjNDM7CWJwZl9wcm9ncmFtX19zZXRfYXV0b2xvYWQoc2tlbC0mZ3Q7cHJvZ3MudGVzdF9yZWZjb3VudGVkX211bHRpLCBmYWxzZSk7CiYjNDM7CXNrZWwtJmd0O3N0cnVjdF9vcHMudGVzdG1vZF9yZWZfYWNxdWlyZS0mZ3Q7dGVzdF9yZWZjb3VudGVkX211bHRpID0gTlVMTDsKJiM0MzsKJiM0MzsJZXJyID0gc3RydWN0X29wc19tdWx0aV9hcmdzX19sb2FkKHNrZWwpOwomIzQzOwlpZiAoIUFTU0VSVF9PSyhlcnIsICYjMzQ7c3RydWN0X29wc19tdWx0aV9hcmdzX19sb2FkJiMzNDspKQomIzQzOwkJZ290byBvdXQ7CiYjNDM7CiYjNDM7CWxpbmsgPSBicGZfbWFwX19hdHRhY2hfc3RydWN0X29wcyhza2VsLSZndDttYXBzLnRlc3Rtb2RfcmVmX2FjcXVpcmUpOwomIzQzOwlpZiAoIUFTU0VSVF9PS19QVFIobGluaywgJiMzNDticGZfbWFwX19hdHRhY2hfc3RydWN0X29wcyYjMzQ7KSkKJiM0MzsJCWdvdG8gb3V0OwomIzQzOwomIzQzOwlBU1NFUlRfRVEoc2tlbC0mZ3Q7YnNzLSZndDtnb3RfYXJnOSwgOTk5OSwgJiMzNDtjaGVja19zdGFja19wYXNzZWRfYXJnOSYjMzQ7KTsKJiM0MzsKJiM0MztvdXQ6CiYjNDM7CWJwZl9saW5rX19kZXN0cm95KGxpbmspOwomIzQzOwlzdHJ1Y3Rfb3BzX211bHRpX2FyZ3NfX2Rlc3Ryb3koc2tlbCk7CiYjNDM7fQomIzQzOwogdm9pZCB0ZXN0X3N0cnVjdF9vcHNfbXVsdGlfYXJncyh2b2lkKQogewotCVJVTl9URVNUUyhzdHJ1Y3Rfb3BzX211bHRpX2FyZ3MpOwomIzQzOwlpZiAodGVzdF9fc3RhcnRfc3VidGVzdCgmIzM0O3Rlc3RfcmVmY291bnRlZF9tdWx0aSYjMzQ7KSkKJiM0MzsJCXRlc3RfcmVmY291bnRlZF9tdWx0aSgpOwomIzQzOwomIzQzOwlpZiAodGVzdF9fc3RhcnRfc3VidGVzdCgmIzM0O3Rlc3RfdHJhbXBvbGluZV9zdGFja19hcmdzJiMzNDspKQomIzQzOwkJdGVzdF90cmFtcG9saW5lX3N0YWNrX2FyZ3MoKTsKIH0KZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9zdHJ1Y3Rfb3BzX211bHRpX2FyZ3MuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9zdHJ1Y3Rfb3BzX211bHRpX2FyZ3MuYwppbmRleCBjNjJiZTE1NzU3ZjA0Li5mMGY0NzY3NmIwOTlhIDEwMDY0NAotLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mvc3RydWN0X29wc19tdWx0aV9hcmdzLmMKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3N0cnVjdF9vcHNfbXVsdGlfYXJncy5jCkBAIC0yOSw3ICYjNDM7MjksMjAgQEAgaW50IHRlc3RfcmVmY291bnRlZF9tdWx0aSh1bnNpZ25lZCBsb25nIGxvbmcgKmN0eCkKIAlyZXR1cm4gMDsKIH0KIAomIzQzO19fdTY0IGdvdF9hcmc5ID0gMDsKJiM0MzsKJiM0MztTRUMoJiMzNDtzdHJ1Y3Rfb3BzL3Rlc3RfdHJhbXBvbGluZV9zdGFja19hcmdzJiMzNDspCiYjNDM7aW50IEJQRl9QUk9HKHRlc3RfdHJhbXBvbGluZV9zdGFja19hcmdzLCBpbnQgYXJnMSwgaW50IGFyZzIsIGludCBhcmczLAomIzQzOwkJCQkJIGludCBhcmc0LCBpbnQgYXJnNSwgaW50IGFyZzYsCiYjNDM7CQkJCQkgaW50IGFyZzcsIGludCBhcmc4LCBpbnQgYXJnOSkKJiM0Mzt7CiYjNDM7CWdvdF9hcmc5ID0gYXJnOTsKJiM0MzsKJiM0MzsJcmV0dXJuIDA7CiYjNDM7fQomIzQzOwogU0VDKCYjMzQ7LnN0cnVjdF9vcHMubGluayYjMzQ7KQogc3RydWN0IGJwZl90ZXN0bW9kX29wcyB0ZXN0bW9kX3JlZl9hY3F1aXJlID0gewogCS50ZXN0X3JlZmNvdW50ZWRfbXVsdGkgPSAodm9pZCAqKXRlc3RfcmVmY291bnRlZF9tdWx0aSwKJiM0MzsJLnRlc3RfdHJhbXBvbGluZV9zdGFja19hcmdzID0gKHZvaWQgKil0ZXN0X3RyYW1wb2xpbmVfc3RhY2tfYXJncywKIH07CmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdGVzdF9rbW9kcy9icGZfdGVzdG1vZC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Rlc3Rfa21vZHMvYnBmX3Rlc3Rtb2QuYwppbmRleCAyMzgwYjZjYmRlYWRjLi44ZjA3NDRlNjA3NWIzIDEwMDY0NAotLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdGVzdF9rbW9kcy9icGZfdGVzdG1vZC5jCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi90ZXN0X2ttb2RzL2JwZl90ZXN0bW9kLmMKQEAgLTE2NzgsNiAmIzQzOzE2NzgsOSBAQCBzdGF0aWMgYm9vbCBicGZfdGVzdG1vZF9vcHNfaXNfdmFsaWRfYWNjZXNzKGludCBvZmYsIGludCBzaXplLAogCXJldHVybiBicGZfdHJhY2luZ19idGZfY3R4X2FjY2VzcyhvZmYsIHNpemUsIHR5cGUsIHByb2csIGluZm8pOwogfQogCiYjNDM7c3RhdGljIERFRklORV9NVVRFWChzdF9vcHNfdHJhbXBvbGluZV9tdXRleCk7CiYjNDM7c3RhdGljIHN0cnVjdCBicGZfdGVzdG1vZF9vcHMgKnN0X29wc190cmFtcG9saW5lOwomIzQzOwogc3RhdGljIGludCBicGZfdGVzdG1vZF9vcHNfaW5pdF9tZW1iZXIoY29uc3Qgc3RydWN0IGJ0Zl90eXBlICp0LAogCQkJCSAgICAgICBjb25zdCBzdHJ1Y3QgYnRmX21lbWJlciAqbWVtYmVyLAogCQkJCSAgICAgICB2b2lkICprZGF0YSwgY29uc3Qgdm9pZCAqdWRhdGEpCkBAIC0xNjkxLDYgJiM0MzsxNjk0LDE4IEBAIHN0YXRpYyBpbnQgYnBmX3Rlc3Rtb2Rfb3BzX2luaXRfbWVtYmVyKGNvbnN0IHN0cnVjdCBidGZfdHlwZSAqdCwKIAkJKChzdHJ1Y3QgYnBmX3Rlc3Rtb2Rfb3BzICopa2RhdGEpLSZndDtkYXRhID0gKChzdHJ1Y3QgYnBmX3Rlc3Rtb2Rfb3BzICopdWRhdGEpLSZndDtkYXRhOwogCQlyZXR1cm4gMTsKIAl9CiYjNDM7CiYjNDM7CWlmIChtZW1iZXItJmd0O29mZnNldCA9PSBvZmZzZXRvZihzdHJ1Y3QgYnBmX3Rlc3Rtb2Rfb3BzLCB0ZXN0X3RyYW1wb2xpbmVfc3RhY2tfYXJncykgKiA4KSB7CiYjNDM7CQltdXRleF9sb2NrKCZhbXA7c3Rfb3BzX3RyYW1wb2xpbmVfbXV0ZXgpOwomIzQzOwkJaWYgKHN0X29wc190cmFtcG9saW5lKSB7CiYjNDM7CQkJcHJfZXJyKCYjMzQ7c3Rfb3BzX3RyYW1wb2xpbmUgaGFzIGFscmVhZHkgYmVlbiByZWdpc3RlcmVkXG4mIzM0Oyk7CiYjNDM7CQkJbXV0ZXhfdW5sb2NrKCZhbXA7c3Rfb3BzX3RyYW1wb2xpbmVfbXV0ZXgpOwomIzQzOwkJCXJldHVybiAtRUVYSVNUOwomIzQzOwkJfQomIzQzOwkJc3Rfb3BzX3RyYW1wb2xpbmUgPSAoc3RydWN0IGJwZl90ZXN0bW9kX29wcyAqKWtkYXRhOwomIzQzOwkJbXV0ZXhfdW5sb2NrKCZhbXA7c3Rfb3BzX3RyYW1wb2xpbmVfbXV0ZXgpOwomIzQzOwl9CiYjNDM7CiAJcmV0dXJuIDA7CiB9CiAKQEAgLTE3MjAsMTEgJiM0MzsxNzM1LDIwIEBAIHN0YXRpYyBpbnQgYnBmX2R1bW15X3JlZyh2b2lkICprZGF0YSwgc3RydWN0IGJwZl9saW5rICpsaW5rKQogCWlmIChvcHMtJmd0O3Rlc3RfMikKIAkJb3BzLSZndDt0ZXN0XzIoNCwgb3BzLSZndDtkYXRhKTsKIAomIzQzOwltdXRleF9sb2NrKCZhbXA7c3Rfb3BzX3RyYW1wb2xpbmVfbXV0ZXgpOwomIzQzOwlpZiAoc3Rfb3BzX3RyYW1wb2xpbmUgJmFtcDsmYW1wOyBzdF9vcHNfdHJhbXBvbGluZS0mZ3Q7dGVzdF90cmFtcG9saW5lX3N0YWNrX2FyZ3MpCiYjNDM7CQlzdF9vcHNfdHJhbXBvbGluZS0mZ3Q7dGVzdF90cmFtcG9saW5lX3N0YWNrX2FyZ3MoMSwgMiwgMywgNCwgNSwgNiwgNywgOCwgOTk5OSk7CiYjNDM7CW11dGV4X3VubG9jaygmYW1wO3N0X29wc190cmFtcG9saW5lX211dGV4KTsKJiM0MzsKIAlyZXR1cm4gMDsKIH0KIAogc3RhdGljIHZvaWQgYnBmX2R1bW15X3VucmVnKHZvaWQgKmtkYXRhLCBzdHJ1Y3QgYnBmX2xpbmsgKmxpbmspCiB7CiYjNDM7CW11dGV4X2xvY2soJmFtcDtzdF9vcHNfdHJhbXBvbGluZV9tdXRleCk7CiYjNDM7CWlmIChzdF9vcHNfdHJhbXBvbGluZSA9PSAoc3RydWN0IGJwZl90ZXN0bW9kX29wcyAqKWtkYXRhKQomIzQzOwkJc3Rfb3BzX3RyYW1wb2xpbmUgPSBOVUxMOwomIzQzOwltdXRleF91bmxvY2soJmFtcDtzdF9vcHNfdHJhbXBvbGluZV9tdXRleCk7CiB9CiAKIHN0YXRpYyBpbnQgYnBmX3Rlc3Rtb2RfdGVzdF8xKHZvaWQpCkBAIC0xNzY2LDYgJiM0MzsxNzkwLDEzIEBAIGJwZl90ZXN0bW9kX29wc19fdGVzdF9yZXR1cm5fcmVmX2twdHIoaW50IGR1bW15LCBzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRhc2tfX3JlZiwKIAlyZXR1cm4gTlVMTDsKIH0KIAomIzQzO3N0YXRpYyBpbnQgYnBmX3Rlc3Rtb2Rfb3BzX190ZXN0X3RyYW1wb2xpbmVfc3RhY2tfYXJncyhpbnQgYXJnMSwgaW50IGFyZzIsIGludCBhcmczLAomIzQzOwkJCQkJCSAgICAgICBpbnQgYXJnNCwgaW50IGFyZzUsIGludCBhcmc2LAomIzQzOwkJCQkJCSAgICAgICBpbnQgYXJnNywgaW50IGFyZzgsIGludCBhcmc5KQomIzQzO3sKJiM0MzsJcmV0dXJuIGFyZzk7CiYjNDM7fQomIzQzOwogc3RhdGljIHN0cnVjdCBicGZfdGVzdG1vZF9vcHMgX19icGZfdGVzdG1vZF9vcHMgPSB7CiAJLnRlc3RfMSA9IGJwZl90ZXN0bW9kX3Rlc3RfMSwKIAkudGVzdF8yID0gYnBmX3Rlc3Rtb2RfdGVzdF8yLApAQCAtMTc3Myw2ICYjNDM7MTgwNCw3IEBAIHN0YXRpYyBzdHJ1Y3QgYnBmX3Rlc3Rtb2Rfb3BzIF9fYnBmX3Rlc3Rtb2Rfb3BzID0gewogCS50ZXN0X3JlZmNvdW50ZWQgPSBicGZfdGVzdG1vZF9vcHNfX3Rlc3RfcmVmY291bnRlZCwKIAkudGVzdF9yZWZjb3VudGVkX211bHRpID0gYnBmX3Rlc3Rtb2Rfb3BzX190ZXN0X3JlZmNvdW50ZWRfbXVsdGksCiAJLnRlc3RfcmV0dXJuX3JlZl9rcHRyID0gYnBmX3Rlc3Rtb2Rfb3BzX190ZXN0X3JldHVybl9yZWZfa3B0ciwKJiM0MzsJLnRlc3RfdHJhbXBvbGluZV9zdGFja19hcmdzID0gYnBmX3Rlc3Rtb2Rfb3BzX190ZXN0X3RyYW1wb2xpbmVfc3RhY2tfYXJncywKIH07CiAKIHN0cnVjdCBicGZfc3RydWN0X29wcyBicGZfYnBmX3Rlc3Rtb2Rfb3BzID0gewpkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Rlc3Rfa21vZHMvYnBmX3Rlc3Rtb2QuaCBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi90ZXN0X2ttb2RzL2JwZl90ZXN0bW9kLmgKaW5kZXggMjEwYjkxOTI5MGNjMi4uNDIyNTdhZTg5ZmQ1YiAxMDA2NDQKLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Rlc3Rfa21vZHMvYnBmX3Rlc3Rtb2QuaAomIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdGVzdF9rbW9kcy9icGZfdGVzdG1vZC5oCkBAIC00Niw2ICYjNDM7NDYsMTEgQEAgc3RydWN0IGJwZl90ZXN0bW9kX29wcyB7CiAJc3RydWN0IHRhc2tfc3RydWN0ICooKnRlc3RfcmV0dXJuX3JlZl9rcHRyKShpbnQgZHVtbXksIHN0cnVjdCB0YXNrX3N0cnVjdCAqdGFzaywKIAkJCQkJCSAgICBzdHJ1Y3QgY2dyb3VwICpjZ3JwKTsKIAomIzQzOwkvKiBVc2VkIHRvIHRlc3QgaW5kaXJlY3Qgc3RydWN0X29wcyB0cmFtcG9saW5lcyBzdGFjay1wYXNzZWQgYXJndW1lbnRzICgmZ3Q7OCBhcmdzKS4gKi8KJiM0MzsJaW50ICgqdGVzdF90cmFtcG9saW5lX3N0YWNrX2FyZ3MpKGludCBhcmcxLCBpbnQgYXJnMiwgaW50IGFyZzMsCiYjNDM7CQkJCQkgIGludCBhcmc0LCBpbnQgYXJnNSwgaW50IGFyZzYsCiYjNDM7CQkJCQkgIGludCBhcmc3LCBpbnQgYXJnOCwgaW50IGFyZzkpOwomIzQzOwogCS8qIFRoZSBmb2xsb3dpbmcgZmllbGRzIGFyZSB1c2VkIHRvIHRlc3Qgc2hhZG93IGNvcGllcy4gKi8KIAljaGFyIG9uZWJ5dGU7CiAJc3RydWN0IHsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzEgMDk6Mjc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDU2MwoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDQ0OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFBhdGNoOiBXb3J0aCBGdXp6aW5nPyoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBGaXJzdCwgSSBzZWUgdGhlIHBhdGNoIG1vZGlmaWVzIHNldmVyYWwgZmlsZXMsIHNwZWNpZmljYWxseSB3aXRoaW4gYHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9gLiBUaGlzIGluY2x1ZGVzIGNoYW5nZXMgdG8gYHRlc3Rfc3RydWN0X29wc19tdWx0aV9hcmdzLmNgLCBgc3RydWN0X29wc19tdWx0aV9hcmdzLmNgLCBhbmQgaW1wb3J0YW50bHksIGBicGZfdGVzdG1vZC5jYCBhbmQgYC5oYC4KCk15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRvIGRldGVybWluZSB0aGUgc2NvcGUgb2YgdGhlc2UgY2hhbmdlcy4gQXJlIHdlICpqdXN0KiBkZWFsaW5nIHdpdGggc2VsZi10ZXN0cywgb3IgaXMgdGhpcyB0b3VjaGluZyBzb21ldGhpbmcgbW9yZSBmdW5kYW1lbnRhbD8gSSBuZWVkIHRvIHF1aWNrbHkgYXNjZXJ0YWluIGlmIHRoZXNlIG1vZGlmaWNhdGlvbnMgYmxlZWQgaW50byB0aGUgY29yZSBrZXJuZWwgb3IgZHJpdmVycyBpbiBhIHdheSB0aGF0IHdvdWxkIG1ha2UgdGhpcyBwYXRjaCBmdXp6YWJsZS4gQSBxdWljayBgZ2l0IHN0YXR1c2AsIG9yIGEgcXVpY2sgZ3JlcCB0aHJvdWdoIHRoZSBkaWZmLCB3b3VsZCBiZSBteSBnby10bywgYnV0IGZyb20gd2hhdCBJJiMzOTttIHNlZWluZywgaXQgYXBwZWFycyBjb25maW5lZCB0byBgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHNgLgoKVGhlIGluY2x1c2lvbiBvZiBgYnBmX3Rlc3Rtb2RgIGRvZXMgcmFpc2UgYSBmbGFnLCB0aG91Z2guIElzIHRoaXMgYSAqZ2VudWluZSogdGVzdCBtb2R1bGUsIGNvbnRhaW5lZCBzb2xlbHkgd2l0aGluIHRoZSBzZWxmdGVzdHMgZGlyZWN0b3J5PyBPciBpcyB0aGlzIHNvbWV0aGluZyB0aGF0IGNvdWxkIHNvbWVob3cgaW50cm9kdWNlIGEgdnVsbmVyYWJpbGl0eS4gSSBrbm93IGZyb20gZXhwZXJpZW5jZSB0aGF0IGNoYW5nZXMgKnN0cmljdGx5KiB3aXRoaW4gYHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzLy4uLmAgdHlwaWNhbGx5IGRvbiYjMzk7dCBpbXBhY3QgdGhlIGNydWNpYWwgYXNwZWN0cy4KClNvLCBsZXQgbWUgcmVmcmVzaCB0aGUgZ3VpZGVsaW5lcy4gVGhlIGluc3RydWN0aW9ucyBjbGVhcmx5IHN0YXRlIHRoYXQgaWYgaXQmIzM5O3MgZG9jdW1lbnRhdGlvbiwgS2NvbmZpZywgb3IgY29tbWVudHMsIHdlIGlnbm9yZSBpdC4gVGhlIGNyaXRpY2FsIHBhcnQgaXMgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMuIEkgbmVlZCB0byBlc3RhYmxpc2ggaWYgdGhpcyB0b3VjaGVzIGFueXRoaW5nIHJlYWNoYWJsZSBvdXRzaWRlIHRoZSBzZWxmdGVzdHMgZGlyZWN0b3J5LgoKVGhlIGZhY3QgdGhhdCBpdCYjMzk7cyBpbiBgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHNgIHN0cm9uZ2x5IHN1Z2dlc3RzIGl0JiMzOTtzIGEgdGVzdCBzZXR1cCwgbm90IGRpcmVjdGx5IGltcGFjdGluZyBjb3JlIGZ1bmN0aW9uYWxpdHkuIEkmIzM5O20gZ29pbmcgdG8gcXVpY2tseSBjb25maXJtIHdoZXJlIGBicGZfdGVzdG1vZGAgbGl2ZXMgd2l0aCBgZ3JlcHBlcmAsIGJ1dCBteSBpbml0aWFsIGFzc2Vzc21lbnQgaXMgdGhhdCB0aGlzIGlzICpub3QqIHdvcnRoIGZ1enppbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzEgMDk6Mjc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YnBmX3Rlc3Rtb2QmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDt0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgMjUzMCBsaW5lcy5cblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cblxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL01ha2VmaWxlPTEzMz1URVNUX1BST0dTX0VYVEVOREVEIDo9IFxcXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL01ha2VmaWxlLTEzNS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9NYWtlZmlsZToxMzY6VEVTVF9LTU9EUyA6PSBicGZfdGVzdG1vZC5rbyBicGZfdGVzdF9ub19jZmkua28gYnBmX3Rlc3RfbW9kb3JkZXJfeC5rbyBcXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL01ha2VmaWxlLTEzNy1cdGJwZl90ZXN0X21vZG9yZGVyX3kua28gYnBmX3Rlc3RfcnFzcGlubG9jay5rb1xuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2FnZ3JlZ2F0ZV9yZXQuYz05PXN0YXRpYyBib29sIHRlc3Rtb2RfaGFzX2FyZW5hX3RhZ2dlZF9tZW1iZXIodm9pZClcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9hZ2dyZWdhdGVfcmV0LmMtMTktXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9hZ2dyZWdhdGVfcmV0LmM6MjA6XHRtb2R1bGVfYnRmID0gYnRmX19sb2FkX21vZHVsZV9idGYoXCYjMzQ7YnBmX3Rlc3Rtb2RcJiMzNDssIHZtbGludXhfYnRmKTtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2FnZ3JlZ2F0ZV9yZXQuYy0yMS1cdGlmICghbW9kdWxlX2J0Zilcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9hdHRhY2hfcHJvYmUuYz0xNzE9c3RhdGljIHZvaWQgdGVzdF9hdHRhY2hfa3Byb2JlX2xlZ2FjeV9ieV9hZGRyX3JlamVjdCh2b2lkKVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2F0dGFjaF9wcm9iZS5jLTIwMS0gKiBicGZfZmVudHJ5X3NoYWRvd190ZXN0IGV4aXN0cyBpbiBib3RoIHZtbGludXggKG5ldC9icGYvdGVzdF9ydW4uYykgYW5kXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9hdHRhY2hfcHJvYmUuYzoyMDI6ICogYnBmX3Rlc3Rtb2QgKGJwZl90ZXN0bW9kLmMpLiBXaGVuIGJwZl90ZXN0bW9kIGlzIGxvYWRlZCB0aGUgc3ltYm9sIGlzXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9hdHRhY2hfcHJvYmUuYy0yMDMtICogZHVwbGljYXRlZC4gVGVzdCB0aGF0IGtwcm9iZSBhdHRhY2htZW50IGhhbmRsZXMgdGhpcyBjb3JyZWN0bHk6XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9hdHRhY2hfcHJvYmUuYy0yMDQtICogLSBVbnF1YWxpZmllZCBuYW1lIChcJiMzNDticGZfZmVudHJ5X3NoYWRvd190ZXN0XCYjMzQ7KSBhdHRhY2hlcyB0byB2bWxpbnV4LlxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvYXR0YWNoX3Byb2JlLmM6MjA1OiAqIC0gTU9EOlNZTSBuYW1lIChcJiMzNDticGZfdGVzdG1vZDpicGZfZmVudHJ5X3NoYWRvd190ZXN0XCYjMzQ7KSBhdHRhY2hlcyB0byBtb2R1bGUuXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9hdHRhY2hfcHJvYmUuYy0yMDYtICpcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9hdHRhY2hfcHJvYmUuYz0yMTA9c3RhdGljIHZvaWQgdGVzdF9hdHRhY2hfcHJvYmVfZHVwX3N5bShlbnVtIHByb2JlX2F0dGFjaF9tb2RlIGF0dGFjaF9tb2RlKVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2F0dGFjaF9wcm9iZS5jLTI0MS1cdGtwcm9iZV9saW5rID0gYnBmX3Byb2dyYW1fX2F0dGFjaF9rcHJvYmVfb3B0cyhza2VsLVx1MDAzZXByb2dzLmhhbmRsZV9rcHJvYmUsXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9hdHRhY2hfcHJvYmUuYzoyNDI6XHRcdFx0XHRcdFx0ICAgICAgXCYjMzQ7YnBmX3Rlc3Rtb2Q6YnBmX2ZlbnRyeV9zaGFkb3dfdGVzdFwmIzM0OyxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2F0dGFjaF9wcm9iZS5jLTI0My1cdFx0XHRcdFx0XHQgICAgICBcdTAwMjZrcHJvYmVfb3B0cyk7XG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvYXR0YWNoX3Byb2JlLmMtMjQ5LVx0a3JldHByb2JlX2xpbmsgPSBicGZfcHJvZ3JhbV9fYXR0YWNoX2twcm9iZV9vcHRzKHNrZWwtXHUwMDNlcHJvZ3MuaGFuZGxlX2tyZXRwcm9iZSxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2F0dGFjaF9wcm9iZS5jOjI1MDpcdFx0XHRcdFx0XHRcdCBcJiMzNDticGZfdGVzdG1vZDpicGZfZmVudHJ5X3NoYWRvd190ZXN0XCYjMzQ7LFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvYXR0YWNoX3Byb2JlLmMtMjUxLVx0XHRcdFx0XHRcdFx0IFx1MDAyNmtwcm9iZV9vcHRzKTtcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9hdHRhY2hfcHJvYmUuYz0zMDc9c3RhdGljIHZvaWQgdGVzdF9hdHRhY2hfa3Byb2JlX2xvbmdfZXZlbnRfbmFtZSh2b2lkKVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2F0dGFjaF9wcm9iZS5jLTMyMC1cdGtwcm9iZV9saW5rID0gYnBmX3Byb2dyYW1fX2F0dGFjaF9rcHJvYmVfb3B0cyhza2VsLVx1MDAzZXByb2dzLmhhbmRsZV9rcHJvYmUsXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9hdHRhY2hfcHJvYmUuYzozMjE6XHRcdFx0XHRcdFx0ICAgICAgXCYjMzQ7YnBmX3Rlc3Rtb2RfbG9vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29uZ19uYW1lXCYjMzQ7LFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvYXR0YWNoX3Byb2JlLmMtMzIyLVx0XHRcdFx0XHRcdCAgICAgIFx1MDAyNmtwcm9iZV9vcHRzKTtcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9hdHRhY2hfcHJvYmUuYy0zMjgtXHRrcmV0cHJvYmVfbGluayA9IGJwZl9wcm9ncmFtX19hdHRhY2hfa3Byb2JlX29wdHMoc2tlbC1cdTAwM2Vwcm9ncy5oYW5kbGVfa3JldHByb2JlLFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvYXR0YWNoX3Byb2JlLmM6MzI5Olx0XHRcdFx0XHRcdFx0IFwmIzM0O2JwZl90ZXN0bW9kX2xvb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vbmdfbmFtZVwmIzM0OyxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2F0dGFjaF9wcm9iZS5jLTMzMC1cdFx0XHRcdFx0XHRcdCBcdTAwMjZrcHJvYmVfb3B0cyk7XG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvYnBmX21vZF9yYWNlLmM9NDg9c3RhdGljIHZvaWQgKmxvYWRfbW9kdWxlX3RocmVhZCh2b2lkICpwKVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2JwZl9tb2RfcmFjZS5jLTUwLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvYnBmX21vZF9yYWNlLmM6NTE6XHRpZiAoIUFTU0VSVF9ORVEobG9hZF9icGZfdGVzdG1vZChmYWxzZSksIDAsIFwmIzM0O2xvYWRfbW9kdWxlX3RocmVhZCBtdXN0IGZhaWxcJiMzNDspKVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvYnBmX21vZF9yYWNlLmMtNTItXHRcdGF0b21pY19zdG9yZShcdTAwMjZzdGF0ZSwgVFNfTU9EVUxFX0xPQUQpO1xuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2JwZl9tb2RfcmFjZS5jPTkwPXN0YXRpYyB2b2lkIHRlc3RfYnBmX21vZF9yYWNlX2NvbmZpZyhjb25zdCBzdHJ1Y3QgdGVzdF9jb25maWcgKmNvbmZpZylcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9icGZfbW9kX3JhY2UuYy0xMDItXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9icGZfbW9kX3JhY2UuYzoxMDM6XHRpZiAoIUFTU0VSVF9PSyh1bmxvYWRfYnBmX3Rlc3Rtb2QoZmFsc2UpLCBcJiMzNDt1bmxvYWQgYnBmX3Rlc3Rtb2RcJiMzNDspKVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvYnBmX21vZF9yYWNlLmMtMTA0LVx0XHRnb3RvIGVuZF9tbWFwO1xuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2JwZl9tb2RfcmFjZS5jLTE4MC1lbmRfbW9kdWxlOlxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvYnBmX21vZF9yYWNlLmM6MTgxOlx0dW5sb2FkX2JwZl90ZXN0bW9kKGZhbHNlKTtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2JwZl9tb2RfcmFjZS5jOjE4MjpcdEFTU0VSVF9PSyhsb2FkX2JwZl90ZXN0bW9kKGZhbHNlKSwgXCYjMzQ7cmVzdG9yZSBicGZfdGVzdG1vZFwmIzM0Oyk7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9icGZfbW9kX3JhY2UuYy0xODMtZW5kX21tYXA6XG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvYnRmX2RlZHVwX3NwbGl0LmM9MzcyPXN0YXRpYyB2b2lkIHRlc3Rfc3BsaXRfZHVwX3N0cnVjdF9pbl9jdSgpXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvYnRmX2RlZHVwX3NwbGl0LmMtNDYyLSAqXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9idGZfZGVkdXBfc3BsaXQuYzo0NjM6ICogYnBmX3Rlc3Rtb2RfdGVzdF93cml0ZSgpIGhhcyBtdWx0aXBsZSBjb3JlIGtlcm5lbCB0eXBlIHBhcmFtZXRlcnM7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9idGZfZGVkdXBfc3BsaXQuYy00NjQtICpcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2J0Zl9kZWR1cF9zcGxpdC5jLTQ2NS0gKiBzc2l6ZV90XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9idGZfZGVkdXBfc3BsaXQuYzo0NjY6ICogYnBmX3Rlc3Rtb2RfdGVzdF93cml0ZShzdHJ1Y3QgZmlsZSAqZmlsZSwgc3RydWN0IGtvYmplY3QgKmtvYmosXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9idGZfZGVkdXBfc3BsaXQuYy00NjctICogICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgYmluX2F0dHJpYnV0ZSAqYmluX2F0dHIsXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvYnRmX2RlZHVwX3NwbGl0LmM9NDgxPWNvbnN0IGNoYXIgKm1vZF9mdW5jc1tdID0ge1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvYnRmX2RlZHVwX3NwbGl0LmM6NDgyOlx0XCYjMzQ7YnBmX3Rlc3Rtb2RfdGVzdF93cml0ZVwmIzM0OyxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2J0Zl9kZWR1cF9zcGxpdC5jLTQ4My1cdFwmIzM0O2JwZl9rZnVuY19jYWxsX3Rlc3QzXCYjMzQ7LFxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2J0Zl9kZWR1cF9zcGxpdC5jPTQ4Nz1zdGF0aWMgdm9pZCB0ZXN0X3NwbGl0X21vZHVsZSh2b2lkKVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2J0Zl9kZWR1cF9zcGxpdC5jLTQ5OC1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2J0Zl9kZWR1cF9zcGxpdC5jOjQ5OTpcdGJ0ZjEgPSBidGZfX3BhcnNlX3NwbGl0KFwmIzM0Oy9zeXMva2VybmVsL2J0Zi9icGZfdGVzdG1vZFwmIzM0Oywgdm1saW51eF9idGYpO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvYnRmX2RlZHVwX3NwbGl0LmMtNTAwLVx0aWYgKCFBU1NFUlRfT0tfUFRSKGJ0ZjEsIFwmIzM0O3NwbGl0X2J0ZlwmIzM0OykpXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvYnRmX2RlZHVwX3NwbGl0LmMtNTIyLVx0XHRmb3IgKGogPSAwLCBwID0gYnRmX3BhcmFtcyh0KTsgaiBcdTAwM2MgdmxlbjsgaiYjNDM7JiM0MzssIHAmIzQzOyYjNDM7KSB7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9idGZfZGVkdXBfc3BsaXQuYzo1MjM6XHRcdFx0LyogYnBmX3Rlc3Rtb2QgdXNlcyByZXNpbGllbnQgc3BsaXQgQlRGLCBzbyBhbnlcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2J0Zl9kZWR1cF9zcGxpdC5jLTUyNC1cdFx0XHQgKiByZWZlcmVuY2UgdHlwZXMgd2lsbCBiZSBhZGRlZCB0byBzcGxpdCBCVEYgYW5kIHRoZWlyXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvYnRmX21vZHVsZS5jLTYtXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9idGZfbW9kdWxlLmM6NzpzdGF0aWMgY29uc3QgY2hhciAqbW9kdWxlX25hbWUgPSBcJiMzNDticGZfdGVzdG1vZFwmIzM0OztcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2J0Zl9tb2R1bGUuYzo4OnN0YXRpYyBjb25zdCBjaGFyICpzeW1ib2xfbmFtZSA9IFwmIzM0O2JwZl90ZXN0bW9kX3Rlc3RfcmVhZFwmIzM0OztcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2J0Zl9tb2R1bGUuYy05LVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2J0Zl90YWcuYz01ND1zdGF0aWMgaW50IGxvYWRfYnRmcyhzdHJ1Y3QgYnRmICoqdm1saW51eF9idGYsIHN0cnVjdCBidGYgKiptb2R1bGVfYnRmLFxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2J0Zl90YWcuYy01Ni17XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9idGZfdGFnLmM6NTc6XHRjb25zdCBjaGFyICptb2R1bGVfbmFtZSA9IFwmIzM0O2JwZl90ZXN0bW9kXCYjMzQ7O1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvYnRmX3RhZy5jLTU4LVx0X19zMzIgdHlwZV9pZDtcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9jb3JlX3JlbG9jLmMtNC0jaW5jbHVkZSBcJiMzNDtwcm9ncy9jb3JlX3JlbG9jX3R5cGVzLmhcJiMzNDtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2NvcmVfcmVsb2MuYzo1OiNpbmNsdWRlIFwmIzM0O3Rlc3Rfa21vZHMvYnBmX3Rlc3Rtb2QuaFwmIzM0O1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvY29yZV9yZWxvYy5jLTYtI2luY2x1ZGUgXHUwMDNjbGludXgvbGltaXRzLmhcdTAwM2Vcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9jb3JlX3JlbG9jLmM9MTI9c3RhdGljIGludCBkdXJhdGlvbiA9IDA7XG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvY29yZV9yZWxvYy5jLTIyLVx0Lm91dHB1dCA9IFNUUlVDVF9UT19DSEFSX1BUUihjb3JlX3JlbG9jX21vZHVsZV9vdXRwdXQpIHtcdFxcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9jb3JlX3JlbG9jLmM6MjM6XHRcdC5yZWFkX2N0eF9zeiA9IHNpemVvZihzdHJ1Y3QgYnBmX3Rlc3Rtb2RfdGVzdF9yZWFkX2N0eCksXFxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2NvcmVfcmVsb2MuYy0yNC1cdFx0LnJlYWRfY3R4X2V4aXN0cyA9IHRydWUsXHRcdFx0XHRcXFxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2NvcmVfcmVsb2MuYz01NDk9c3RhdGljIGNvbnN0IHN0cnVjdCBjb3JlX3JlbG9jX3Rlc3RfY2FzZSB0ZXN0X2Nhc2VzW10gPSB7XG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvY29yZV9yZWxvYy5jLTU2OC1cdC8qIHZhbGlkYXRlIHdlIGNhbiBmaW5kIGtlcm5lbCBtb2R1bGUgQlRGIHR5cGVzIGZvciByZWxvY3MvYXR0YWNoICovXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9jb3JlX3JlbG9jLmM6NTY5Olx0TU9EVUxFU19DQVNFKFwmIzM0O21vZHVsZV9wcm9iZWRcJiMzNDssIFwmIzM0O3Rlc3RfY29yZV9tb2R1bGVfcHJvYmVkXCYjMzQ7LCBcJiMzNDticGZfdGVzdG1vZF90ZXN0X3JlYWRcJiMzNDspLFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvY29yZV9yZWxvYy5jLTU3MC1cdE1PRFVMRVNfQ0FTRShcJiMzNDttb2R1bGVfZGlyZWN0XCYjMzQ7LCBcJiMzNDt0ZXN0X2NvcmVfbW9kdWxlX2RpcmVjdFwmIzM0OywgTlVMTCksXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvZ2V0X2JyYW5jaF9zbmFwc2hvdC5jPTc2PXZvaWQgc2VyaWFsX3Rlc3RfZ2V0X2JyYW5jaF9zbmFwc2hvdCh2b2lkKVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2dldF9icmFuY2hfc25hcHNob3QuYy05NS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2dldF9icmFuY2hfc25hcHNob3QuYzo5NjpcdGVyciA9IGthbGxzeW1zX2ZpbmQoXCYjMzQ7YnBmX3Rlc3Rtb2RfbG9vcF90ZXN0XCYjMzQ7LCBcdTAwMjZza2VsLVx1MDAzZWJzcy1cdTAwM2VhZGRyZXNzX2xvdyk7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9nZXRfYnJhbmNoX3NuYXBzaG90LmMtOTctXHRpZiAoIUFTU0VSVF9PSyhlcnIsIFwmIzM0O2thbGxzeW1zX2ZpbmRcJiMzNDspKVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2twcm9iZV9tdWx0aV90ZXN0LmM9NjYzPXN0YXRpYyB2b2lkIHRlc3RfYXR0YWNoX3dyaXRlX2N0eCh2b2lkKVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2twcm9iZV9tdWx0aV90ZXN0LmMtNjcwLSAqIFRlc3Qga3Byb2JlX211bHRpIGhhbmRsZXMgc2hhZG93IHN5bWJvbHMgKHZtbGludXggJiM0MzsgbW9kdWxlIGR1cGxpY2F0ZSkuXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9rcHJvYmVfbXVsdGlfdGVzdC5jOjY3MTogKiBicGZfZmVudHJ5X3NoYWRvd190ZXN0IGV4aXN0cyBpbiBib3RoIHZtbGludXggYW5kIGJwZl90ZXN0bW9kLlxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMva3Byb2JlX211bHRpX3Rlc3QuYy02NzItICoga3Byb2JlX211bHRpIHJlc29sdmVzIHZpYSBmdHJhY2VfbG9va3VwX3N5bWJvbHMoKSB3aGljaCBmaW5kcyB0aGVcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9rcHJvYmVfbXVsdGlfdGVzdG1vZF90ZXN0LmM9NTA9c3RhdGljIHZvaWQgdGVzdF90ZXN0bW9kX2F0dGFjaF9hcGlfYWRkcnModm9pZClcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9rcHJvYmVfbXVsdGlfdGVzdG1vZF90ZXN0LmMtNTQtXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9rcHJvYmVfbXVsdGlfdGVzdG1vZF90ZXN0LmM6NTU6XHRhZGRyc1swXSA9IGtzeW1fZ2V0X2FkZHJfbG9jYWwoa3N5bXMsIFwmIzM0O2JwZl90ZXN0bW9kX2ZlbnRyeV90ZXN0MVwmIzM0Oyk7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9rcHJvYmVfbXVsdGlfdGVzdG1vZF90ZXN0LmMtNTYtXHRBU1NFUlRfTkVRKGFkZHJzWzBdLCAwLCBcJiMzNDtrc3ltX2dldF9hZGRyX2xvY2FsXCYjMzQ7KTtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2twcm9iZV9tdWx0aV90ZXN0bW9kX3Rlc3QuYzo1NzpcdGFkZHJzWzFdID0ga3N5bV9nZXRfYWRkcl9sb2NhbChrc3ltcywgXCYjMzQ7YnBmX3Rlc3Rtb2RfZmVudHJ5X3Rlc3QyXCYjMzQ7KTtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2twcm9iZV9tdWx0aV90ZXN0bW9kX3Rlc3QuYy01OC1cdEFTU0VSVF9ORVEoYWRkcnNbMV0sIDAsIFwmIzM0O2tzeW1fZ2V0X2FkZHJfbG9jYWxcJiMzNDspO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMva3Byb2JlX211bHRpX3Rlc3Rtb2RfdGVzdC5jOjU5Olx0YWRkcnNbMl0gPSBrc3ltX2dldF9hZGRyX2xvY2FsKGtzeW1zLCBcJiMzNDticGZfdGVzdG1vZF9mZW50cnlfdGVzdDNcJiMzNDspO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMva3Byb2JlX211bHRpX3Rlc3Rtb2RfdGVzdC5jLTYwLVx0QVNTRVJUX05FUShhZGRyc1syXSwgMCwgXCYjMzQ7a3N5bV9nZXRfYWRkcl9sb2NhbFwmIzM0Oyk7XG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMva3Byb2JlX211bHRpX3Rlc3Rtb2RfdGVzdC5jPTY4PXN0YXRpYyB2b2lkIHRlc3RfdGVzdG1vZF9hdHRhY2hfYXBpX3N5bXModm9pZClcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9rcHJvYmVfbXVsdGlfdGVzdG1vZF90ZXN0LmMtNzEtXHRjb25zdCBjaGFyICpzeW1zWzNdID0ge1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMva3Byb2JlX211bHRpX3Rlc3Rtb2RfdGVzdC5jOjcyOlx0XHRcJiMzNDticGZfdGVzdG1vZF9mZW50cnlfdGVzdDFcJiMzNDssXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9rcHJvYmVfbXVsdGlfdGVzdG1vZF90ZXN0LmM6NzM6XHRcdFwmIzM0O2JwZl90ZXN0bW9kX2ZlbnRyeV90ZXN0MlwmIzM0OyxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2twcm9iZV9tdWx0aV90ZXN0bW9kX3Rlc3QuYzo3NDpcdFx0XCYjMzQ7YnBmX3Rlc3Rtb2RfZmVudHJ5X3Rlc3QzXCYjMzQ7LFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMva3Byb2JlX211bHRpX3Rlc3Rtb2RfdGVzdC5jLTc1LVx0fTtcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9rc3ltc19tb2R1bGUuYz05PXN0YXRpYyB2b2lkIHRlc3Rfa3N5bXNfbW9kdWxlX2xza2VsKHZvaWQpXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMva3N5bXNfbW9kdWxlLmMtMzAtXHRBU1NFUlRfRVEodG9wdHMucmV0dmFsLCAwLCBcJiMzNDtyZXR2YWxcJiMzNDspO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMva3N5bXNfbW9kdWxlLmM6MzE6XHRBU1NFUlRfRVEoc2tlbC1cdTAwM2Vic3MtXHUwMDNlb3V0X2JwZl90ZXN0bW9kX2tzeW0sIDQyLCBcJiMzNDticGZfdGVzdG1vZF9rc3ltXCYjMzQ7KTtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2tzeW1zX21vZHVsZS5jLTMyLWNsZWFudXA6XG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMva3N5bXNfbW9kdWxlLmM9MzY9c3RhdGljIHZvaWQgdGVzdF9rc3ltc19tb2R1bGVfbGliYnBmKHZvaWQpXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMva3N5bXNfbW9kdWxlLmMtNTctXHRBU1NFUlRfRVEodG9wdHMucmV0dmFsLCAwLCBcJiMzNDtyZXR2YWxcJiMzNDspO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMva3N5bXNfbW9kdWxlLmM6NTg6XHRBU1NFUlRfRVEoc2tlbC1cdTAwM2Vic3MtXHUwMDNlb3V0X2JwZl90ZXN0bW9kX2tzeW0sIDQyLCBcJiMzNDticGZfdGVzdG1vZF9rc3ltXCYjMzQ7KTtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2tzeW1zX21vZHVsZS5jLTU5LWNsZWFudXA6XG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvbW9kdWxlX2F0dGFjaC5jPTEyOT1zdGF0aWMgdm9pZCB0ZXN0X21vZHVsZV9hdHRhY2hfZGV0YWNoKGNvbnN0IGNoYXIgKnByb2dfbmFtZSlcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9tb2R1bGVfYXR0YWNoLmMtMTUzLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvbW9kdWxlX2F0dGFjaC5jOjE1NDpcdEFTU0VSVF9FUlIodHJ5X3VubG9hZF9tb2R1bGUoXCYjMzQ7YnBmX3Rlc3Rtb2RcJiMzNDssIDEsIGZhbHNlKSwgXCYjMzQ7dHJ5X3VubG9hZF9tb2R1bGVcJiMzNDspO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvbW9kdWxlX2F0dGFjaC5jLTE1NS1cdGJwZl9saW5rX19kZXN0cm95KGxpbmspO1xuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL21vZHVsZV9hdHRhY2guYz0xNjA9dm9pZCB0ZXN0X21vZHVsZV9hdHRhY2godm9pZClcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9tb2R1bGVfYXR0YWNoLmMtMTc0LVx0XHR0ZXN0X21vZHVsZV9hdHRhY2hfcHJvZyhcJiMzNDtoYW5kbGVfZmVudHJ5X21hbnVhbFwmIzM0OywgUkVBRF9TWixcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL21vZHVsZV9hdHRhY2guYzoxNzU6XHRcdFx0XHRcdFwmIzM0O2JwZl90ZXN0bW9kX3Rlc3RfcmVhZFwmIzM0OywgMCk7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9tb2R1bGVfYXR0YWNoLmMtMTc2LVx0fVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL21vZHVsZV9hdHRhY2guYy0xNzktXHRcdFx0XHRcdFJFQURfU1osXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9tb2R1bGVfYXR0YWNoLmM6MTgwOlx0XHRcdFx0XHRcJiMzNDticGZfdGVzdG1vZDpicGZfdGVzdG1vZF90ZXN0X3JlYWRcJiMzNDssIDApO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvbW9kdWxlX2F0dGFjaC5jLTE4MS1cdH1cbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9tb2R1bGVfZmVudHJ5X3NoYWRvdy5jLTgtXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9tb2R1bGVfZmVudHJ5X3NoYWRvdy5jOjk6c3RhdGljIGNvbnN0IGNoYXIgKm1vZHVsZV9uYW1lID0gXCYjMzQ7YnBmX3Rlc3Rtb2RcJiMzNDs7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9tb2R1bGVfZmVudHJ5X3NoYWRvdy5jLTEwLXN0YXRpYyBjb25zdCBjaGFyICpzeW1ib2xfbmFtZSA9IFwmIzM0O2JwZl9mZW50cnlfc2hhZG93X3Rlc3RcJiMzNDs7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9tb2R1bGVfZmVudHJ5X3NoYWRvdy5jLTExLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvbW9kdWxlX2ZlbnRyeV9zaGFkb3cuYzoxMjpzdGF0aWMgaW50IGdldF9icGZfdGVzdG1vZF9idGZfZmQodm9pZClcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL21vZHVsZV9mZW50cnlfc2hhZG93LmMtMTMte1xuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL21vZHVsZV9mZW50cnlfc2hhZG93LmM9NTY9dm9pZCB0ZXN0X21vZHVsZV9mZW50cnlfc2hhZG93KHZvaWQpXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvbW9kdWxlX2ZlbnRyeV9zaGFkb3cuYy04Mi1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL21vZHVsZV9mZW50cnlfc2hhZG93LmM6ODM6XHRidGZfZmRbMV0gPSBnZXRfYnBmX3Rlc3Rtb2RfYnRmX2ZkKCk7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9tb2R1bGVfZmVudHJ5X3NoYWRvdy5jOjg0Olx0aWYgKCFBU1NFUlRfR0UoYnRmX2ZkWzFdLCAwLCBcJiMzNDtnZXRfYnBmX3Rlc3Rtb2RfYnRmX2ZkXCYjMzQ7KSlcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL21vZHVsZV9mZW50cnlfc2hhZG93LmMtODUtXHRcdGdvdG8gb3V0O1xuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL21vZHVsZV9mZW50cnlfc2hhZG93LmMtMTEwLVx0XHQgKiBzaGFkb3dlZCBmdW5jdGlvbnMgYW5kIHVzZXMgdGhlIHNhbWUgYWRkcmVzcyBmb3IgYm90aCB0aGVcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL21vZHVsZV9mZW50cnlfc2hhZG93LmM6MTExOlx0XHQgKiB2bWxpbnV4IGFuZCB0aGUgYnBmX3Rlc3Rtb2QgZnVuY3Rpb25zLCB0aGlzIHdpbGwgZmFpbCBvblxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvbW9kdWxlX2ZlbnRyeV9zaGFkb3cuYy0xMTItXHRcdCAqIGF0dGVtcHRpbmcgdG8gY3JlYXRlIHR3byB0cmFtcG9saW5lcyBmb3IgdGhlIHNhbWUgYWRkcmVzcyxcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9yYXdfdHBfd3JpdGFibGVfcmVqZWN0X2JhZF9hY2Nlc3MuYy0zLSNpbmNsdWRlIFx1MDAzY3Rlc3RfcHJvZ3MuaFx1MDAzZVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvcmF3X3RwX3dyaXRhYmxlX3JlamVjdF9iYWRfYWNjZXNzLmM6NDojaW5jbHVkZSBcJiMzNDt0ZXN0X2ttb2RzL2JwZl90ZXN0bW9kLmhcJiMzNDtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3Jhd190cF93cml0YWJsZV9yZWplY3RfYmFkX2FjY2Vzcy5jLTUtI2luY2x1ZGUgXCYjMzQ7YnBmX3V0aWwuaFwmIzM0O1xuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3Jhd190cF93cml0YWJsZV9yZWplY3RfYmFkX2FjY2Vzcy5jPTc9c3RhdGljIHZvaWQgY2hlY2tfYXR0YWNoX3JlamVjdChjb25zdCBzdHJ1Y3QgYnBmX2luc24gKnByb2dyYW0sIHNpemVfdCBwcm9nX2xlbilcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9yYXdfdHBfd3JpdGFibGVfcmVqZWN0X2JhZF9hY2Nlc3MuYy0yMS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3Jhd190cF93cml0YWJsZV9yZWplY3RfYmFkX2FjY2Vzcy5jOjIyOlx0dHBfZmQgPSBicGZfcmF3X3RyYWNlcG9pbnRfb3BlbihcJiMzNDticGZfdGVzdG1vZF90ZXN0X3dyaXRhYmxlX2JhcmVfdHBcJiMzNDssIGJwZl9mZCk7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9yYXdfdHBfd3JpdGFibGVfcmVqZWN0X2JhZF9hY2Nlc3MuYy0yMy1cdEFTU0VSVF9FUSh0cF9mZCwgLUVJTlZBTCwgXCYjMzQ7YnBmX3Jhd190cmFjZXBvaW50X29wZW5cJiMzNDspO1xuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3Jhd190cF93cml0YWJsZV9yZWplY3RfYmFkX2FjY2Vzcy5jPTMwPXZvaWQgdGVzdF9yYXdfdHBfd3JpdGFibGVfcmVqZWN0X2JhZF9hY2Nlc3Modm9pZClcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9yYXdfdHBfd3JpdGFibGVfcmVqZWN0X2JhZF9hY2Nlc3MuYy0zNi1cdFx0QlBGX0xEWF9NRU0oQlBGX0IsIEJQRl9SRUdfMCwgQlBGX1JFR182LFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvcmF3X3RwX3dyaXRhYmxlX3JlamVjdF9iYWRfYWNjZXNzLmM6Mzc6XHRcdFx0ICAgIHNpemVvZihzdHJ1Y3QgYnBmX3Rlc3Rtb2RfdGVzdF93cml0YWJsZV9jdHgpKSxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3Jhd190cF93cml0YWJsZV9yZWplY3RfYmFkX2FjY2Vzcy5jLTM4LVx0XHRCUEZfRVhJVF9JTlNOKCksXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvcmF3X3RwX3dyaXRhYmxlX3JlamVjdF9iYWRfYWNjZXNzLmMtNDYtXHRcdEJQRl9MRFhfTUVNKEJQRl9CLCBCUEZfUkVHXzAsIEJQRl9SRUdfNixcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3Jhd190cF93cml0YWJsZV9yZWplY3RfYmFkX2FjY2Vzcy5jOjQ3Olx0XHRcdCAgICBzaXplb2Yoc3RydWN0IGJwZl90ZXN0bW9kX3Rlc3Rfd3JpdGFibGVfY3R4KSAmIzQzOyA4KSxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3Jhd190cF93cml0YWJsZV9yZWplY3RfYmFkX2FjY2Vzcy5jLTQ4LVx0XHRCUEZfRVhJVF9JTlNOKCksXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc3RhY2t0cmFjZV9pcHMuYz01MD1zdGF0aWMgdm9pZCB0ZXN0X3N0YWNrdHJhY2VfaXBzX2twcm9iZV9tdWx0aShib29sIHJldHByb2JlKVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3N0YWNrdHJhY2VfaXBzLmMtNjgtXHRcdFx0XHRcdFx0XHRza2VsLVx1MDAzZXByb2dzLmtwcm9iZV9tdWx0aV90ZXN0LFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc3RhY2t0cmFjZV9pcHMuYzo2OTpcdFx0XHRcdFx0XHRcdFwmIzM0O2JwZl90ZXN0bW9kX3N0YWNrdHJhY2VfdGVzdFwmIzM0OywgXHUwMDI2b3B0cyk7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zdGFja3RyYWNlX2lwcy5jLTcwLVx0aWYgKCFBU1NFUlRfT0tfUFRSKHNrZWwtXHUwMDNlbGlua3Mua3Byb2JlX211bHRpX3Rlc3QsIFwmIzM0O2JwZl9wcm9ncmFtX19hdHRhY2hfa3Byb2JlX211bHRpX29wdHNcJiMzNDspKVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3N0YWNrdHJhY2VfaXBzLmMtNzgtXHRcdGNoZWNrX3N0YWNrdHJhY2VfaXBzKGJwZl9tYXBfX2ZkKHNrZWwtXHUwMDNlbWFwcy5zdGFja21hcCksIHNrZWwtXHUwMDNlYnNzLVx1MDAzZXN0YWNrX2tleSwgNCxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3N0YWNrdHJhY2VfaXBzLmM6Nzk6XHRcdFx0XHQgICAgIGtzeW1fZ2V0X2FkZHIoXCYjMzQ7YnBmX3Rlc3Rtb2Rfc3RhY2t0cmFjZV90ZXN0XzNcJiMzNDspLFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc3RhY2t0cmFjZV9pcHMuYzo4MDpcdFx0XHRcdCAgICAga3N5bV9nZXRfYWRkcihcJiMzNDticGZfdGVzdG1vZF9zdGFja3RyYWNlX3Rlc3RfMlwmIzM0OyksXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zdGFja3RyYWNlX2lwcy5jOjgxOlx0XHRcdFx0ICAgICBrc3ltX2dldF9hZGRyKFwmIzM0O2JwZl90ZXN0bW9kX3N0YWNrdHJhY2VfdGVzdF8xXCYjMzQ7KSxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3N0YWNrdHJhY2VfaXBzLmM6ODI6XHRcdFx0XHQgICAgIGtzeW1fZ2V0X2FkZHIoXCYjMzQ7YnBmX3Rlc3Rtb2RfdGVzdF9yZWFkXCYjMzQ7KSk7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zdGFja3RyYWNlX2lwcy5jLTgzLVx0fSBlbHNlIHtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3N0YWNrdHJhY2VfaXBzLmMtODQtXHRcdGNoZWNrX3N0YWNrdHJhY2VfaXBzKGJwZl9tYXBfX2ZkKHNrZWwtXHUwMDNlbWFwcy5zdGFja21hcCksIHNrZWwtXHUwMDNlYnNzLVx1MDAzZXN0YWNrX2tleSwgNSxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3N0YWNrdHJhY2VfaXBzLmM6ODU6XHRcdFx0XHQgICAgIGtzeW1fZ2V0X2FkZHIoXCYjMzQ7YnBmX3Rlc3Rtb2Rfc3RhY2t0cmFjZV90ZXN0XCYjMzQ7KSxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3N0YWNrdHJhY2VfaXBzLmM6ODY6XHRcdFx0XHQgICAgIGtzeW1fZ2V0X2FkZHIoXCYjMzQ7YnBmX3Rlc3Rtb2Rfc3RhY2t0cmFjZV90ZXN0XzNcJiMzNDspLFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc3RhY2t0cmFjZV9pcHMuYzo4NzpcdFx0XHRcdCAgICAga3N5bV9nZXRfYWRkcihcJiMzNDticGZfdGVzdG1vZF9zdGFja3RyYWNlX3Rlc3RfMlwmIzM0OyksXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zdGFja3RyYWNlX2lwcy5jOjg4Olx0XHRcdFx0ICAgICBrc3ltX2dldF9hZGRyKFwmIzM0O2JwZl90ZXN0bW9kX3N0YWNrdHJhY2VfdGVzdF8xXCYjMzQ7KSxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3N0YWNrdHJhY2VfaXBzLmM6ODk6XHRcdFx0XHQgICAgIGtzeW1fZ2V0X2FkZHIoXCYjMzQ7YnBmX3Rlc3Rtb2RfdGVzdF9yZWFkXCYjMzQ7KSk7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zdGFja3RyYWNlX2lwcy5jLTkwLVx0fVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3N0YWNrdHJhY2VfaXBzLmM9OTY9c3RhdGljIHZvaWQgdGVzdF9zdGFja3RyYWNlX2lwc19yYXdfdHAodm9pZClcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zdGFja3RyYWNlX2lwcy5jLTExNS1cdFx0XHRcdFx0XHRcdHNrZWwtXHUwMDNlcHJvZ3MucmF3dHBfdGVzdCxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3N0YWNrdHJhY2VfaXBzLmM6MTE2Olx0XHRcdFx0XHRcdFx0XCYjMzQ7YnBmX3Rlc3Rtb2RfdGVzdF9yZWFkXCYjMzQ7KTtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3N0YWNrdHJhY2VfaXBzLmMtMTE3LVx0aWYgKCFBU1NFUlRfT0tfUFRSKHNrZWwtXHUwMDNlbGlua3MucmF3dHBfdGVzdCwgXCYjMzQ7YnBmX3Byb2dyYW1fX2F0dGFjaF9yYXdfdHJhY2Vwb2ludFwmIzM0OykpXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc3RhY2t0cmFjZV9pcHMuYz0xNDA9c3RhdGljIHZvaWQgdGVzdF9zdGFja3RyYWNlX2lwc19rcHJvYmUoYm9vbCByZXRwcm9iZSlcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zdGFja3RyYWNlX2lwcy5jLTE1OC1cdFx0XHRcdFx0XHRza2VsLVx1MDAzZXByb2dzLmtwcm9iZV90ZXN0LFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc3RhY2t0cmFjZV9pcHMuYzoxNTk6XHRcdFx0XHRcdFx0XCYjMzQ7YnBmX3Rlc3Rtb2Rfc3RhY2t0cmFjZV90ZXN0XCYjMzQ7LCBcdTAwMjZvcHRzKTtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3N0YWNrdHJhY2VfaXBzLmMtMTYwLVx0aWYgKCFBU1NFUlRfT0tfUFRSKHNrZWwtXHUwMDNlbGlua3Mua3Byb2JlX3Rlc3QsIFwmIzM0O2JwZl9wcm9ncmFtX19hdHRhY2hfa3Byb2JlX29wdHNcJiMzNDspKVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3N0YWNrdHJhY2VfaXBzLmMtMTY4LVx0XHRjaGVja19zdGFja3RyYWNlX2lwcyhicGZfbWFwX19mZChza2VsLVx1MDAzZW1hcHMuc3RhY2ttYXApLCBza2VsLVx1MDAzZWJzcy1cdTAwM2VzdGFja19rZXksIDQsXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zdGFja3RyYWNlX2lwcy5jOjE2OTpcdFx0XHRcdCAgICAga3N5bV9nZXRfYWRkcihcJiMzNDticGZfdGVzdG1vZF9zdGFja3RyYWNlX3Rlc3RfM1wmIzM0OyksXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zdGFja3RyYWNlX2lwcy5jOjE3MDpcdFx0XHRcdCAgICAga3N5bV9nZXRfYWRkcihcJiMzNDticGZfdGVzdG1vZF9zdGFja3RyYWNlX3Rlc3RfMlwmIzM0OyksXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zdGFja3RyYWNlX2lwcy5jOjE3MTpcdFx0XHRcdCAgICAga3N5bV9nZXRfYWRkcihcJiMzNDticGZfdGVzdG1vZF9zdGFja3RyYWNlX3Rlc3RfMVwmIzM0OyksXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zdGFja3RyYWNlX2lwcy5jOjE3MjpcdFx0XHRcdCAgICAga3N5bV9nZXRfYWRkcihcJiMzNDticGZfdGVzdG1vZF90ZXN0X3JlYWRcJiMzNDspKTtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3N0YWNrdHJhY2VfaXBzLmMtMTczLVx0fSBlbHNlIHtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3N0YWNrdHJhY2VfaXBzLmMtMTc0LVx0XHRjaGVja19zdGFja3RyYWNlX2lwcyhicGZfbWFwX19mZChza2VsLVx1MDAzZW1hcHMuc3RhY2ttYXApLCBza2VsLVx1MDAzZWJzcy1cdTAwM2VzdGFja19rZXksIDUsXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zdGFja3RyYWNlX2lwcy5jOjE3NTpcdFx0XHRcdCAgICAga3N5bV9nZXRfYWRkcihcJiMzNDticGZfdGVzdG1vZF9zdGFja3RyYWNlX3Rlc3RcJiMzNDspLFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc3RhY2t0cmFjZV9pcHMuYzoxNzY6XHRcdFx0XHQgICAgIGtzeW1fZ2V0X2FkZHIoXCYjMzQ7YnBmX3Rlc3Rtb2Rfc3RhY2t0cmFjZV90ZXN0XzNcJiMzNDspLFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc3RhY2t0cmFjZV9pcHMuYzoxNzc6XHRcdFx0XHQgICAgIGtzeW1fZ2V0X2FkZHIoXCYjMzQ7YnBmX3Rlc3Rtb2Rfc3RhY2t0cmFjZV90ZXN0XzJcJiMzNDspLFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc3RhY2t0cmFjZV9pcHMuYzoxNzg6XHRcdFx0XHQgICAgIGtzeW1fZ2V0X2FkZHIoXCYjMzQ7YnBmX3Rlc3Rtb2Rfc3RhY2t0cmFjZV90ZXN0XzFcJiMzNDspLFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc3RhY2t0cmFjZV9pcHMuYzoxNzk6XHRcdFx0XHQgICAgIGtzeW1fZ2V0X2FkZHIoXCYjMzQ7YnBmX3Rlc3Rtb2RfdGVzdF9yZWFkXCYjMzQ7KSk7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zdGFja3RyYWNlX2lwcy5jLTE4MC1cdH1cbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zdGFja3RyYWNlX2lwcy5jPTE4Nj1zdGF0aWMgdm9pZCB0ZXN0X3N0YWNrdHJhY2VfaXBzX3RyYW1wb2xpbmUoYm9vbCByZXRwcm9iZSlcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zdGFja3RyYWNlX2lwcy5jLTIxNS1cdFx0Y2hlY2tfc3RhY2t0cmFjZV9pcHMoYnBmX21hcF9fZmQoc2tlbC1cdTAwM2VtYXBzLnN0YWNrbWFwKSwgc2tlbC1cdTAwM2Vic3MtXHUwMDNlc3RhY2tfa2V5LCA0LFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc3RhY2t0cmFjZV9pcHMuYzoyMTY6XHRcdFx0XHQgICAgIGtzeW1fZ2V0X2FkZHIoXCYjMzQ7YnBmX3Rlc3Rtb2Rfc3RhY2t0cmFjZV90ZXN0XzNcJiMzNDspLFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc3RhY2t0cmFjZV9pcHMuYzoyMTc6XHRcdFx0XHQgICAgIGtzeW1fZ2V0X2FkZHIoXCYjMzQ7YnBmX3Rlc3Rtb2Rfc3RhY2t0cmFjZV90ZXN0XzJcJiMzNDspLFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc3RhY2t0cmFjZV9pcHMuYzoyMTg6XHRcdFx0XHQgICAgIGtzeW1fZ2V0X2FkZHIoXCYjMzQ7YnBmX3Rlc3Rtb2Rfc3RhY2t0cmFjZV90ZXN0XzFcJiMzNDspLFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc3RhY2t0cmFjZV9pcHMuYzoyMTk6XHRcdFx0XHQgICAgIGtzeW1fZ2V0X2FkZHIoXCYjMzQ7YnBmX3Rlc3Rtb2RfdGVzdF9yZWFkXCYjMzQ7KSk7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zdGFja3RyYWNlX2lwcy5jLTIyMC1cdH0gZWxzZSB7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zdGFja3RyYWNlX2lwcy5jLTIyMS1cdFx0Y2hlY2tfc3RhY2t0cmFjZV9pcHMoYnBmX21hcF9fZmQoc2tlbC1cdTAwM2VtYXBzLnN0YWNrbWFwKSwgc2tlbC1cdTAwM2Vic3MtXHUwMDNlc3RhY2tfa2V5LCA1LFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc3RhY2t0cmFjZV9pcHMuYzoyMjI6XHRcdFx0XHQgICAgIGtzeW1fZ2V0X2FkZHIoXCYjMzQ7YnBmX3Rlc3Rtb2Rfc3RhY2t0cmFjZV90ZXN0XCYjMzQ7KSxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3N0YWNrdHJhY2VfaXBzLmM6MjIzOlx0XHRcdFx0ICAgICBrc3ltX2dldF9hZGRyKFwmIzM0O2JwZl90ZXN0bW9kX3N0YWNrdHJhY2VfdGVzdF8zXCYjMzQ7KSxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3N0YWNrdHJhY2VfaXBzLmM6MjI0Olx0XHRcdFx0ICAgICBrc3ltX2dldF9hZGRyKFwmIzM0O2JwZl90ZXN0bW9kX3N0YWNrdHJhY2VfdGVzdF8yXCYjMzQ7KSxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3N0YWNrdHJhY2VfaXBzLmM6MjI1Olx0XHRcdFx0ICAgICBrc3ltX2dldF9hZGRyKFwmIzM0O2JwZl90ZXN0bW9kX3N0YWNrdHJhY2VfdGVzdF8xXCYjMzQ7KSxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3N0YWNrdHJhY2VfaXBzLmM6MjI2Olx0XHRcdFx0ICAgICBrc3ltX2dldF9hZGRyKFwmIzM0O2JwZl90ZXN0bW9kX3Rlc3RfcmVhZFwmIzM0OykpO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc3RhY2t0cmFjZV9pcHMuYy0yMjctXHR9XG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc3RydWN0X29wc19hdXRvY3JlYXRlLmM9Nz1zdGF0aWMgdm9pZCBjYW50X2xvYWRfZnVsbF9vYmplY3Qodm9pZClcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zdHJ1Y3Rfb3BzX2F1dG9jcmVhdGUuYy0xOC1cdFx0Z290byBjbGVhbnVwO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc3RydWN0X29wc19hdXRvY3JlYXRlLmM6MTk6XHQvKiBUaGUgdGVzdG1vZF8yIG1hcCBCVEYgdHlwZSAoc3RydWN0IGJwZl90ZXN0bW9kX29wc19fX3YyKSBkb2VzbiYjMzk7dFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc3RydWN0X29wc19hdXRvY3JlYXRlLmM6MjA6XHQgKiBtYXRjaCB0aGUgQlRGIG9mIHRoZSBhY3R1YWwgc3RydWN0IGJwZl90ZXN0bW9kX29wcyBkZWZpbmVkIGluIHRoZVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc3RydWN0X29wc19hdXRvY3JlYXRlLmMtMjEtXHQgKiBrZXJuZWwsIHNvIHdlIHNob3VsZCBmYWlsIHRvIGxvYWQgaXQgaWYgd2UgZG9uJiMzOTt0IGRpc2FibGUgYXV0b2NyZWF0ZVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3N0cnVjdF9vcHNfYXV0b2NyZWF0ZS5jPTM3PXN0YXRpYyBpbnQgY2hlY2tfdGVzdF8xX2xpbmsoc3RydWN0IHN0cnVjdF9vcHNfYXV0b2NyZWF0ZSAqc2tlbCwgc3RydWN0IGJwZl9tYXAgKm1hcClcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zdHJ1Y3Rfb3BzX2F1dG9jcmVhdGUuYy00NS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3N0cnVjdF9vcHNfYXV0b2NyZWF0ZS5jOjQ2Olx0LyogdGVzdF8xKCkgd291bGQgYmUgY2FsbGVkIGZyb20gYnBmX2R1bW15X3JlZzIoKSBpbiBicGZfdGVzdG1vZC5jICovXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zdHJ1Y3Rfb3BzX2F1dG9jcmVhdGUuYy00Ny1cdGVyciA9IEFTU0VSVF9FUShza2VsLVx1MDAzZWJzcy1cdTAwM2V0ZXN0XzFfcmVzdWx0LCA0MiwgXCYjMzQ7dGVzdF8xX3Jlc3VsdFwmIzM0Oyk7XG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc3RydWN0X29wc19hdXRvY3JlYXRlLmM9MTE0PXN0YXRpYyB2b2lkIGF1dG9sb2FkX2FuZF9zaGFkb3dfdmFycyh2b2lkKVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3N0cnVjdF9vcHNfYXV0b2NyZWF0ZS5jLTE0MC1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3N0cnVjdF9vcHNfYXV0b2NyZWF0ZS5jOjE0MTpcdC8qIHRlc3RfMSgpIHdvdWxkIGJlIGNhbGxlZCBmcm9tIGJwZl9kdW1teV9yZWcyKCkgaW4gYnBmX3Rlc3Rtb2QuYyAqL1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc3RydWN0X29wc19hdXRvY3JlYXRlLmMtMTQyLVx0ZXJyID0gQVNTRVJUX0VRKHNrZWwtXHUwMDNlYnNzLVx1MDAzZXRlc3RfMV9yZXN1bHQsIDQyLCBcJiMzNDt0ZXN0XzFfcmVzdWx0XCYjMzQ7KTtcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy90ZXN0X3N0cnVjdF9vcHNfYXJlbmEuYy0xMS0gKiBBdHRhY2ggY2FsbGJhY2tzIHdpdGggX19hcmVuYSBhbmQgX19hcmVuYV9fbnVsbGFibGUgYXJndW1lbnRzIGFuZCBkcml2ZVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvdGVzdF9zdHJ1Y3Rfb3BzX2FyZW5hLmM6MTI6ICogdGhlbSB0aHJvdWdoIHRoZSBicGZfdGVzdG1vZF9vcHMzX2NhbGxfdGVzdF9hcmVuYSooKSBrZnVuY3MuXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy90ZXN0X3N0cnVjdF9vcHNfYXJlbmEuYy0xMy0gKi9cbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy90ZXN0X3N0cnVjdF9vcHNfYXJlbmEuYz04OD1zdGF0aWMgdm9pZCBhcmVuYV9hcmdfYXR0YWNoKHZvaWQpXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvdGVzdF9zdHJ1Y3Rfb3BzX2FyZW5hLmMtMTA2LS8qXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy90ZXN0X3N0cnVjdF9vcHNfYXJlbmEuYzoxMDc6ICogU2VyaWFsaXplZCBiZWNhdXNlIGl0IGF0dGFjaGVzIHRoZSBzaW5nbGV0b24gYnBmX3Rlc3Rtb2Rfb3BzMywgd2hpY2hcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3Rlc3Rfc3RydWN0X29wc19hcmVuYS5jLTEwOC0gKiB0ZXN0X3N0cnVjdF9vcHNfcHJpdmF0ZV9zdGFjayBhbHNvIGF0dGFjaGVzOyByZWdpc3RlcmluZyBpdCB0d2ljZSBmYWlsc1xuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3Rlc3Rfc3RydWN0X29wc19tb2R1bGUuYz0xND1zdGF0aWMgdm9pZCBjaGVja19tYXBfaW5mbyhzdHJ1Y3QgYnBmX21hcF9pbmZvICppbmZvKVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3Rlc3Rfc3RydWN0X29wc19tb2R1bGUuYy0zMS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3Rlc3Rfc3RydWN0X29wc19tb2R1bGUuYzozMjpcdGlmICghQVNTRVJUX0VRKHN0cmNtcChidGZfbmFtZSwgXCYjMzQ7YnBmX3Rlc3Rtb2RcJiMzNDspLCAwLCBcJiMzNDtnZXRfdmFsdWVfdHlwZV9idGZfb2JqX25hbWVcJiMzNDspKVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvdGVzdF9zdHJ1Y3Rfb3BzX21vZHVsZS5jLTMzLVx0XHRnb3RvIGNsZWFudXA7XG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvdGVzdF9zdHJ1Y3Rfb3BzX21vZHVsZS5jPTM5PXN0YXRpYyBpbnQgYXR0YWNoX29wc19hbmRfY2hlY2soc3RydWN0IHN0cnVjdF9vcHNfbW9kdWxlICpza2VsLFxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3Rlc3Rfc3RydWN0X29wc19tb2R1bGUuYy00OS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3Rlc3Rfc3RydWN0X29wc19tb2R1bGUuYzo1MDpcdC8qIHRlc3RfezEsMn0oKSB3b3VsZCBiZSBjYWxsZWQgZnJvbSBicGZfZHVtbXlfcmVnKCkgaW4gYnBmX3Rlc3Rtb2QuYyAqL1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvdGVzdF9zdHJ1Y3Rfb3BzX21vZHVsZS5jLTUxLVx0QVNTRVJUX0VRKHNrZWwtXHUwMDNlYnNzLVx1MDAzZXRlc3RfMV9yZXN1bHQsIDB4ZGVhZGJlZWYsIFwmIzM0O3Rlc3RfMV9yZXN1bHRcJiMzNDspO1xuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3Rlc3Rfc3RydWN0X29wc19tb2R1bGUuYz01OD1zdGF0aWMgdm9pZCB0ZXN0X3N0cnVjdF9vcHNfbG9hZCh2b2lkKVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3Rlc3Rfc3RydWN0X29wc19tb2R1bGUuYy04Ny1cdGNoZWNrX21hcF9pbmZvKFx1MDAyNmluZm8pO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvdGVzdF9zdHJ1Y3Rfb3BzX21vZHVsZS5jOjg4Olx0LyogdGVzdF8zKCkgd2lsbCBiZSBjYWxsZWQgZnJvbSBicGZfZHVtbXlfcmVnKCkgaW4gYnBmX3Rlc3Rtb2QuY1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvdGVzdF9zdHJ1Y3Rfb3BzX21vZHVsZS5jLTg5LVx0ICpcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3Rlc3Rfc3RydWN0X29wc19tb2R1bGUuYzo5MDpcdCAqIEluIGJwZl90ZXN0bW9kLmMgaXQgd2lsbCBwYXNzIDQgYW5kIDEzICh0aGUgdmFsdWUgb2YgZGF0YSkgdG9cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3Rlc3Rfc3RydWN0X29wc19tb2R1bGUuYy05MS1cdCAqIC50ZXN0XzIuICBTbywgdGhlIHZhbHVlIG9mIHRlc3RfMl9yZXN1bHQgc2hvdWxkIGJlIDIwICg0ICYjNDM7IDEzICYjNDM7XG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvdGVzdF9zdHJ1Y3Rfb3BzX21vZHVsZS5jPTEwMz1zdGF0aWMgdm9pZCB0ZXN0X3N0cnVjdF9vcHNfbm90X3plcm9lZCh2b2lkKVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3Rlc3Rfc3RydWN0X29wc19tb2R1bGUuYy0xMjctXHQvKiBsaWJicGYgc2hvdWxkIHJlamVjdCB0aGUgdGVzdG1vZF96ZXJvZWQgc2luY2Ugc3RydWN0XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy90ZXN0X3N0cnVjdF9vcHNfbW9kdWxlLmM6MTI4Olx0ICogYnBmX3Rlc3Rtb2Rfb3BzIGluIHRoZSBrZXJuZWwgaGFzIG5vIFwmIzM0O3plcm9lZFwmIzM0OyBmaWVsZCBhbmQgdGhlXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy90ZXN0X3N0cnVjdF9vcHNfbW9kdWxlLmMtMTI5LVx0ICogdmFsdWUgb2YgXCYjMzQ7emVyb2VkXCYjMzQ7IGlzIG5vbi16ZXJvLlxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3RwX2J0Zl9pZHMuYy02LSNkZWZpbmUgREVCVUdGU19UUkFDSU5HXHRcJiMzNDsvc3lzL2tlcm5lbC9kZWJ1Zy90cmFjaW5nXCYjMzQ7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy90cF9idGZfaWRzLmM6NzojZGVmaW5lIEVWRU5UX1NVQlBBVEhcdFwmIzM0O2V2ZW50cy9icGZfdGVzdG1vZC9icGZfdGVzdG1vZF90ZXN0X3JlYWQvYnRmX2lkc1wmIzM0O1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvdHBfYnRmX2lkcy5jLTgtXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvdHBfYnRmX2lkcy5jPTU2PXZvaWQgdGVzdF90cF9idGZfaWRzKHZvaWQpXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvdHBfYnRmX2lkcy5jLTkyLVx0ICogICB2b2lkICpfX2RhdGEsIHN0cnVjdCB0YXNrX3N0cnVjdCAqdGFzayxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3RwX2J0Zl9pZHMuYzo5MzpcdCAqICAgc3RydWN0IGJwZl90ZXN0bW9kX3Rlc3RfcmVhZF9jdHggKmN0eFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvdHBfYnRmX2lkcy5jLTk0LVx0ICovXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvdHBfYnRmX2lkcy5jLTExNy1cdG5hbWUgPSBidGZfX25hbWVfYnlfb2Zmc2V0KGJ0ZiwgcmVjX3QtXHUwMDNlbmFtZV9vZmYpO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvdHBfYnRmX2lkcy5jOjExODpcdEFTU0VSVF9TVFJFUShuYW1lLCBcJiMzNDt0cmFjZV9ldmVudF9yYXdfYnBmX3Rlc3Rtb2RfdGVzdF9yZWFkXCYjMzQ7LFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvdHBfYnRmX2lkcy5jLTExOS1cdFx0ICAgICBcJiMzNDt0cCBzdHJ1Y3QgbmFtZVwmIzM0Oyk7XG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvdHJhY2luZ19mYWlsdXJlLmM9Nzk9c3RhdGljIHZvaWQgdGVzdF9mZXhpdF9pbnQxMjhfcmV0KHZvaWQpXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvdHJhY2luZ19mYWlsdXJlLmMtODItXHQgKiBfX2ludDEyOCBpcyByZXR1cm5lZCBpbiBhIHJlZ2lzdGVyIHBhaXIgb24geDg2XzY0IGFuZCBhcm02NCwgc29cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3RyYWNpbmdfZmFpbHVyZS5jOjgzOlx0ICogYnBmX3Rlc3Rtb2RfdGVzdF9pbnQxMjhfcmV0KCkgaXMgQlRGLWVuY29kZWQgYW5kIGF0dGFjaGFibGUgYW5kIHRoZVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvdHJhY2luZ19mYWlsdXJlLmMtODQtXHQgKiB2ZXJpZmllciBjYW4gcmVqZWN0IGl0cyBcdTAwM2U4IGJ5dGUgcmV0dXJuIHZhbHVlLiBPdGhlciBhcmNoaXRlY3R1cmVzXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvdHJhY2luZ19tdWx0aS5jPTMwPXN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgYnBmX2ZlbnRyeV90ZXN0W10gPSB7XG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvdHJhY2luZ19tdWx0aS5jLTQyLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvdHJhY2luZ19tdWx0aS5jOjQzOnN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgYnBmX3Rlc3Rtb2RfZmVudHJ5X3Rlc3RbXSA9IHtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3RyYWNpbmdfbXVsdGkuYzo0NDpcdFwmIzM0O2JwZl90ZXN0bW9kX2ZlbnRyeV90ZXN0MVwmIzM0OyxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3RyYWNpbmdfbXVsdGkuYzo0NTpcdFwmIzM0O2JwZl90ZXN0bW9kX2ZlbnRyeV90ZXN0MlwmIzM0OyxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3RyYWNpbmdfbXVsdGkuYzo0NjpcdFwmIzM0O2JwZl90ZXN0bW9kX2ZlbnRyeV90ZXN0M1wmIzM0OyxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3RyYWNpbmdfbXVsdGkuYzo0NzpcdFwmIzM0O2JwZl90ZXN0bW9kX2ZlbnRyeV90ZXN0N1wmIzM0OyxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3RyYWNpbmdfbXVsdGkuYzo0ODpcdFwmIzM0O2JwZl90ZXN0bW9kX2ZlbnRyeV90ZXN0MTFcJiMzNDssXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy90cmFjaW5nX211bHRpLmMtNDktfTtcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy90cmFjaW5nX211bHRpLmM9MzE0PXN0YXRpYyB2b2lkIHRlc3RfbW9kdWxlX2xpbmtfYXBpX3BhdHRlcm4odm9pZClcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy90cmFjaW5nX211bHRpLmMtMzI0LVx0c2tlbC1cdTAwM2VsaW5rcy50ZXN0X2ZlbnRyeSA9IGJwZl9wcm9ncmFtX19hdHRhY2hfdHJhY2luZ19tdWx0aShza2VsLVx1MDAzZXByb2dzLnRlc3RfZmVudHJ5LFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvdHJhY2luZ19tdWx0aS5jOjMyNTpcdFx0XHRcdFx0XCYjMzQ7YnBmX3Rlc3Rtb2Q6YnBmX3Rlc3Rtb2RfZmVudHJ5X3Rlc3QqXCYjMzQ7LCBOVUxMKTtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3RyYWNpbmdfbXVsdGkuYy0zMjYtXHRpZiAoIUFTU0VSVF9PS19QVFIoc2tlbC1cdTAwM2VsaW5rcy50ZXN0X2ZlbnRyeSwgXCYjMzQ7YnBmX3Byb2dyYW1fX2F0dGFjaF90cmFjaW5nX211bHRpXCYjMzQ7KSlcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy90cmFjaW5nX211bHRpLmMtMzI5LVx0c2tlbC1cdTAwM2VsaW5rcy50ZXN0X2ZleGl0ID0gYnBmX3Byb2dyYW1fX2F0dGFjaF90cmFjaW5nX211bHRpKHNrZWwtXHUwMDNlcHJvZ3MudGVzdF9mZXhpdCxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3RyYWNpbmdfbXVsdGkuYzozMzA6XHRcdFx0XHRcdFwmIzM0O2JwZl90ZXN0bW9kOmJwZl90ZXN0bW9kX2ZlbnRyeV90ZXN0KlwmIzM0OywgTlVMTCk7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy90cmFjaW5nX211bHRpLmMtMzMxLVx0aWYgKCFBU1NFUlRfT0tfUFRSKHNrZWwtXHUwMDNlbGlua3MudGVzdF9mZXhpdCwgXCYjMzQ7YnBmX3Byb2dyYW1fX2F0dGFjaF90cmFjaW5nX211bHRpXCYjMzQ7KSlcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy90cmFjaW5nX211bHRpLmM9MzQyPXN0YXRpYyB2b2lkIHRlc3RfbW9kdWxlX2xpbmtfYXBpX2lkcyh2b2lkKVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvdHJhY2luZ19tdWx0aS5jLTM0My17XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy90cmFjaW5nX211bHRpLmM6MzQ0Olx0c2l6ZV90IGNudCA9IEFSUkFZX1NJWkUoYnBmX3Rlc3Rtb2RfZmVudHJ5X3Rlc3QpO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvdHJhY2luZ19tdWx0aS5jLTM0NS1cdExJQkJQRl9PUFRTKGJwZl90cmFjaW5nX211bHRpX29wdHMsIG9wdHMpO1xuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3RyYWNpbmdfbXVsdGkuYy0zNTQtXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy90cmFjaW5nX211bHRpLmM6MzU1Olx0aWRzID0gZ2V0X2lkcyhicGZfdGVzdG1vZF9mZW50cnlfdGVzdCwgY250LCBcJiMzNDticGZfdGVzdG1vZFwmIzM0Oyk7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy90cmFjaW5nX211bHRpLmMtMzU2LVx0aWYgKCFBU1NFUlRfT0tfUFRSKGlkcywgXCYjMzQ7Z2V0X2lkc1wmIzM0OykpXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvdXByb2JlX3N5c2NhbGwuYz0xMDk9c3RhdGljIHZvaWQgdGVzdF91cHJvYmVfcmVnc19lcXVhbChib29sIHJldHByb2JlKVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3Vwcm9iZV9zeXNjYWxsLmMtMTkzLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvdXByb2JlX3N5c2NhbGwuYzoxOTQ6I2RlZmluZSBCUEZfVEVTVE1PRF9VUFJPQkVfVEVTVF9GSUxFIFwmIzM0Oy9zeXMva2VybmVsL2JwZl90ZXN0bW9kX3Vwcm9iZVwmIzM0O1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvdXByb2JlX3N5c2NhbGwuYy0xOTUtXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy91cHJvYmVfc3lzY2FsbC5jOjE5NjpzdGF0aWMgaW50IHdyaXRlX2JwZl90ZXN0bW9kX3Vwcm9iZSh1bnNpZ25lZCBsb25nIG9mZnNldClcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3Vwcm9iZV9zeXNjYWxsLmMtMTk3LXtcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy91cHJvYmVfc3lzY2FsbC5jPTIxMz1zdGF0aWMgdm9pZCB0ZXN0X3JlZ3NfY2hhbmdlKHZvaWQpXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvdXByb2JlX3N5c2NhbGwuYy0yMjItXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy91cHJvYmVfc3lzY2FsbC5jOjIyMzpcdGVyciA9IHdyaXRlX2JwZl90ZXN0bW9kX3Vwcm9iZShvZmZzZXQpO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvdXByb2JlX3N5c2NhbGwuYy0yMjQtXHRpZiAoIUFTU0VSVF9PSyhlcnIsIFwmIzM0O3JlZ2lzdGVyX3Vwcm9iZVwmIzM0OykpXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvdXByb2JlX3N5c2NhbGwuYy0yMzEtXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy91cHJvYmVfc3lzY2FsbC5jOjIzMjpcdGVyciA9IHdyaXRlX2JwZl90ZXN0bW9kX3Vwcm9iZSgwKTtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3Vwcm9iZV9zeXNjYWxsLmMtMjMzLVx0aWYgKCFBU1NFUlRfT0soZXJyLCBcJiMzNDt1bnJlZ2lzdGVyX3Vwcm9iZVwmIzM0OykpXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2FnZ3JlZ2F0ZV9yZXRfa2Z1bmMuYy01LSNpbmNsdWRlIFwmIzM0O2JwZl9taXNjLmhcJiMzNDtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9hZ2dyZWdhdGVfcmV0X2tmdW5jLmM6NjojaW5jbHVkZSBcJiMzNDsuLi90ZXN0X2ttb2RzL2JwZl90ZXN0bW9kX2tmdW5jLmhcJiMzNDtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9hZ2dyZWdhdGVfcmV0X2tmdW5jLmMtNy1cbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvYWdncmVnYXRlX3JldF9rZnVuY19hcmVuYS5jLTYtI2luY2x1ZGUgXCYjMzQ7YnBmX21pc2MuaFwmIzM0O1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2FnZ3JlZ2F0ZV9yZXRfa2Z1bmNfYXJlbmEuYzo3OiNpbmNsdWRlIFwmIzM0Oy4uL3Rlc3Rfa21vZHMvYnBmX3Rlc3Rtb2Rfa2Z1bmMuaFwmIzM0O1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2FnZ3JlZ2F0ZV9yZXRfa2Z1bmNfYXJlbmEuYy04LVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9hcmVuYV9rZnVuYy5jLTktI2luY2x1ZGUgXHUwMDNjYnBmX2FyZW5hX2NvbW1vbi5oXHUwMDNlXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvYXJlbmFfa2Z1bmMuYzoxMDojaW5jbHVkZSBcJiMzNDsuLi90ZXN0X2ttb2RzL2JwZl90ZXN0bW9kX2tmdW5jLmhcJiMzNDtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9hcmVuYV9rZnVuYy5jLTExLVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9hcmVuYV9rZnVuY19qaXQuYy0xNC0jaW5jbHVkZSBcdTAwM2NicGZfYXJlbmFfY29tbW9uLmhcdTAwM2VcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9hcmVuYV9rZnVuY19qaXQuYzoxNTojaW5jbHVkZSBcJiMzNDsuLi90ZXN0X2ttb2RzL2JwZl90ZXN0bW9kX2tmdW5jLmhcJiMzNDtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9hcmVuYV9rZnVuY19qaXQuYy0xNi1cbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvYmFkX3N0cnVjdF9vcHMuYy01LSNpbmNsdWRlIFx1MDAzY2JwZi9icGZfdHJhY2luZy5oXHUwMDNlXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvYmFkX3N0cnVjdF9vcHMuYzo2OiNpbmNsdWRlIFwmIzM0Oy4uL3Rlc3Rfa21vZHMvYnBmX3Rlc3Rtb2QuaFwmIzM0O1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2JhZF9zdHJ1Y3Rfb3BzLmMtNy1cbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvYmFkX3N0cnVjdF9vcHMuYz0xNj1TRUMoXCYjMzQ7LnN0cnVjdF9vcHMubGlua1wmIzM0OylcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9iYWRfc3RydWN0X29wcy5jOjE3OnN0cnVjdCBicGZfdGVzdG1vZF9vcHMgdGVzdG1vZF8xID0ge1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2JhZF9zdHJ1Y3Rfb3BzLmMtMTgtXHQudGVzdF8xID0gKHZvaWQgKil0ZXN0XzEsXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2JhZF9zdHJ1Y3Rfb3BzLmM9MjI9U0VDKFwmIzM0Oy5zdHJ1Y3Rfb3BzLmxpbmtcJiMzNDspXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvYmFkX3N0cnVjdF9vcHMuYzoyMzpzdHJ1Y3QgYnBmX3Rlc3Rtb2Rfb3BzMiB0ZXN0bW9kXzIgPSB7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvYmFkX3N0cnVjdF9vcHMuYy0yNC1cdC50ZXN0XzEgPSAodm9pZCAqKXRlc3RfMVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9idGZfX3N0YWNrX2FyZ19wcmVjaXNpb24uYy00LSNpbmNsdWRlIFx1MDAzY2JwZi9icGZfaGVscGVycy5oXHUwMDNlXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvYnRmX19zdGFja19hcmdfcHJlY2lzaW9uLmM6NTojaW5jbHVkZSBcJiMzNDsuLi90ZXN0X2ttb2RzL2JwZl90ZXN0bW9kX2tmdW5jLmhcJiMzNDtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9idGZfX3N0YWNrX2FyZ19wcmVjaXNpb24uYy02LVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9idGZfdHlwZV90YWdfcGVyY3B1LmMtNi1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9idGZfdHlwZV90YWdfcGVyY3B1LmM6NzpzdHJ1Y3QgYnBmX3Rlc3Rtb2RfYnRmX3R5cGVfdGFnXzEge1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2J0Zl90eXBlX3RhZ19wZXJjcHUuYy04LVx0aW50IGE7XG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2J0Zl90eXBlX3RhZ19wZXJjcHUuYy0xMC1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9idGZfdHlwZV90YWdfcGVyY3B1LmM6MTE6c3RydWN0IGJwZl90ZXN0bW9kX2J0Zl90eXBlX3RhZ18yIHtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9idGZfdHlwZV90YWdfcGVyY3B1LmM6MTI6XHRzdHJ1Y3QgYnBmX3Rlc3Rtb2RfYnRmX3R5cGVfdGFnXzEgKnA7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvYnRmX3R5cGVfdGFnX3BlcmNwdS5jLTEzLX07XG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2J0Zl90eXBlX3RhZ19wZXJjcHUuYz0xNT1fX3U2NCBnO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2J0Zl90eXBlX3RhZ19wZXJjcHUuYy0xNi1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9idGZfdHlwZV90YWdfcGVyY3B1LmM6MTc6U0VDKFwmIzM0O2ZlbnRyeS9icGZfdGVzdG1vZF90ZXN0X2J0Zl90eXBlX3RhZ19wZXJjcHVfMVwmIzM0OylcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9idGZfdHlwZV90YWdfcGVyY3B1LmM6MTg6aW50IEJQRl9QUk9HKHRlc3RfcGVyY3B1MSwgc3RydWN0IGJwZl90ZXN0bW9kX2J0Zl90eXBlX3RhZ18xICphcmcpXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvYnRmX3R5cGVfdGFnX3BlcmNwdS5jLTE5LXtcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvYnRmX3R5cGVfdGFnX3BlcmNwdS5jLTIzLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2J0Zl90eXBlX3RhZ19wZXJjcHUuYzoyNDpTRUMoXCYjMzQ7ZmVudHJ5L2JwZl90ZXN0bW9kX3Rlc3RfYnRmX3R5cGVfdGFnX3BlcmNwdV8yXCYjMzQ7KVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2J0Zl90eXBlX3RhZ19wZXJjcHUuYzoyNTppbnQgQlBGX1BST0codGVzdF9wZXJjcHUyLCBzdHJ1Y3QgYnBmX3Rlc3Rtb2RfYnRmX3R5cGVfdGFnXzIgKmFyZylcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9idGZfdHlwZV90YWdfcGVyY3B1LmMtMjYte1xuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9idGZfdHlwZV90YWdfdXNlci5jLTYtXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvYnRmX3R5cGVfdGFnX3VzZXIuYzo3OnN0cnVjdCBicGZfdGVzdG1vZF9idGZfdHlwZV90YWdfMSB7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvYnRmX3R5cGVfdGFnX3VzZXIuYy04LVx0aW50IGE7XG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2J0Zl90eXBlX3RhZ191c2VyLmMtMTAtXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvYnRmX3R5cGVfdGFnX3VzZXIuYzoxMTpzdHJ1Y3QgYnBmX3Rlc3Rtb2RfYnRmX3R5cGVfdGFnXzIge1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2J0Zl90eXBlX3RhZ191c2VyLmM6MTI6XHRzdHJ1Y3QgYnBmX3Rlc3Rtb2RfYnRmX3R5cGVfdGFnXzEgKnA7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvYnRmX3R5cGVfdGFnX3VzZXIuYy0xMy19O1xuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9idGZfdHlwZV90YWdfdXNlci5jPTE1PWludCBnO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2J0Zl90eXBlX3RhZ191c2VyLmMtMTYtXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvYnRmX3R5cGVfdGFnX3VzZXIuYzoxNzpTRUMoXCYjMzQ7ZmVudHJ5L2JwZl90ZXN0bW9kX3Rlc3RfYnRmX3R5cGVfdGFnX3VzZXJfMVwmIzM0OylcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9idGZfdHlwZV90YWdfdXNlci5jOjE4OmludCBCUEZfUFJPRyh0ZXN0X3VzZXIxLCBzdHJ1Y3QgYnBmX3Rlc3Rtb2RfYnRmX3R5cGVfdGFnXzEgKmFyZylcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9idGZfdHlwZV90YWdfdXNlci5jLTE5LXtcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvYnRmX3R5cGVfdGFnX3VzZXIuYy0yMy1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9idGZfdHlwZV90YWdfdXNlci5jOjI0OlNFQyhcJiMzNDtmZW50cnkvYnBmX3Rlc3Rtb2RfdGVzdF9idGZfdHlwZV90YWdfdXNlcl8yXCYjMzQ7KVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2J0Zl90eXBlX3RhZ191c2VyLmM6MjU6aW50IEJQRl9QUk9HKHRlc3RfdXNlcjIsIHN0cnVjdCBicGZfdGVzdG1vZF9idGZfdHlwZV90YWdfMiAqYXJnKVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2J0Zl90eXBlX3RhZ191c2VyLmMtMjYte1xuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9jYl9yZWZzLmMtNC0jaW5jbHVkZSBcdTAwM2NicGYvYnBmX2hlbHBlcnMuaFx1MDAzZVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2NiX3JlZnMuYzo1OiNpbmNsdWRlIFwmIzM0Oy4uL3Rlc3Rfa21vZHMvYnBmX3Rlc3Rtb2Rfa2Z1bmMuaFwmIzM0O1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2NiX3JlZnMuYy02LVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9jb3JlX2tlcm4uYz02Nj1zdHJ1Y3QgX19za19iVWZGIC8qIGl0IHdpbGwgbm90IGV4aXN0IGluIHZtbGludXggKi8ge1xuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9jb3JlX2tlcm4uYy02OS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9jb3JlX2tlcm4uYzo3MDpzdHJ1Y3QgYnBmX3Rlc3Rtb2RfdGVzdF9yZWFkX2N0eCAvKiBpdCBleGlzdHMgaW4gYnBmX3Rlc3Rtb2QgKi8ge1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2NvcmVfa2Vybi5jLTcxLVx0c2l6ZV90IGxlbjtcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvY29yZV9rZXJuLmM9NzU9aW50IGJhbGFuY2VyX2luZ3Jlc3Moc3RydWN0IF9fc2tfYnVmZiAqY3R4KVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9jb3JlX2tlcm4uYy05My1cdFx0LyogdGhpcyBDTy1SRSByZWxvIG1heSBvciBtYXkgbm90IHJlc29sdmVcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9jb3JlX2tlcm4uYzo5NDpcdFx0ICogZGVwZW5kaW5nIG9uIHdoZXRoZXIgYnBmX3Rlc3Rtb2QgaXMgbG9hZGVkLlxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2NvcmVfa2Vybi5jLTk1LVx0XHQgKi8gXFxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9jb3JlX2tlcm4uYzo5NjpcdFx0aSAmIzQzOz0gKChzdHJ1Y3QgYnBmX3Rlc3Rtb2RfdGVzdF9yZWFkX2N0eCAqKWN0eCktXHUwMDNlbGVuOyBcXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2NvcmVfa2Vybi5jLTk3LVx0fSBcXFxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9lcGlsb2d1ZV9leGl0LmMtNi0jaW5jbHVkZSBcJiMzNDticGZfbWlzYy5oXCYjMzQ7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvZXBpbG9ndWVfZXhpdC5jOjc6I2luY2x1ZGUgXCYjMzQ7Li4vdGVzdF9rbW9kcy9icGZfdGVzdG1vZC5oXCYjMzQ7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvZXBpbG9ndWVfZXhpdC5jOjg6I2luY2x1ZGUgXCYjMzQ7Li4vdGVzdF9rbW9kcy9icGZfdGVzdG1vZF9rZnVuYy5oXCYjMzQ7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvZXBpbG9ndWVfZXhpdC5jLTktXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2VwaWxvZ3VlX2V4aXQuYz02MT1TRUMoXCYjMzQ7LnN0cnVjdF9vcHMubGlua1wmIzM0OylcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9lcGlsb2d1ZV9leGl0LmM6NjI6c3RydWN0IGJwZl90ZXN0bW9kX3N0X29wcyBlcGlsb2d1ZV9leGl0ID0ge1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2VwaWxvZ3VlX2V4aXQuYy02My1cdC50ZXN0X2VwaWxvZ3VlID0gKHZvaWQgKil0ZXN0X2VwaWxvZ3VlX2V4aXQsXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2VwaWxvZ3VlX3RhaWxjYWxsLmMtNi0jaW5jbHVkZSBcJiMzNDticGZfbWlzYy5oXCYjMzQ7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvZXBpbG9ndWVfdGFpbGNhbGwuYzo3OiNpbmNsdWRlIFwmIzM0Oy4uL3Rlc3Rfa21vZHMvYnBmX3Rlc3Rtb2QuaFwmIzM0O1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2VwaWxvZ3VlX3RhaWxjYWxsLmM6ODojaW5jbHVkZSBcJiMzNDsuLi90ZXN0X2ttb2RzL2JwZl90ZXN0bW9kX2tmdW5jLmhcJiMzNDtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9lcGlsb2d1ZV90YWlsY2FsbC5jLTktXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2VwaWxvZ3VlX3RhaWxjYWxsLmM9NDQ9U0VDKFwmIzM0Oy5zdHJ1Y3Rfb3BzLmxpbmtcJiMzNDspXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvZXBpbG9ndWVfdGFpbGNhbGwuYzo0NTpzdHJ1Y3QgYnBmX3Rlc3Rtb2Rfc3Rfb3BzIGVwaWxvZ3VlX3RhaWxjYWxsID0ge1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2VwaWxvZ3VlX3RhaWxjYWxsLmMtNDYtXHQudGVzdF9lcGlsb2d1ZSA9ICh2b2lkICopdGVzdF9lcGlsb2d1ZV90YWlsY2FsbCxcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvZXBpbG9ndWVfdGFpbGNhbGwuYz00OT1TRUMoXCYjMzQ7LnN0cnVjdF9vcHMubGlua1wmIzM0OylcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9lcGlsb2d1ZV90YWlsY2FsbC5jOjUwOnN0cnVjdCBicGZfdGVzdG1vZF9zdF9vcHMgZXBpbG9ndWVfc3VicHJvZyA9IHtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9lcGlsb2d1ZV90YWlsY2FsbC5jLTUxLVx0LnRlc3RfZXBpbG9ndWUgPSAodm9pZCAqKXRlc3RfZXBpbG9ndWVfc3VicHJvZyxcblxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMxIDA5OjI3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIxNTE1CgkJCQkJCQlvdXRwdXQ6IDY2CgkJCQkJCQl0aG91Z2h0czogMzUyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgVGhpcyBDb21taXQqKgoKT2theSwgc28gdGhpcyBjb21taXQgaXMgZW50aXJlbHkgY29udGFpbmVkIHdpdGhpbiBgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2AuIEkgbmVlZCB0byBjb25maXJtIHRoYXQuIExldCBtZSBxdWlja2x5IHJldmlldyB0aGUgY2hhbmdlczogYHRlc3Rfc3RydWN0X29wc19tdWx0aV9hcmdzLmNgLCBgc3RydWN0X29wc19tdWx0aV9hcmdzLmNgLCBgYnBmX3Rlc3Rtb2QuY2AsIGFuZCBgYnBmX3Rlc3Rtb2QuaGAuIFllcCwgbG9va3MgbGlrZSBhbGwgdGhlIGNoYW5nZXMgYXJlIHdpdGhpbiB0aGF0IGRpcmVjdG9yeS4KCk5vIGtlcm5lbCBjb2RlIHdoYXRzb2V2ZXIgaXMgYmVpbmcgdG91Y2hlZC4gVGhpcyBpcyBqdXN0IHNlbGZ0ZXN0IGNvZGUsIGFuZCB0aGUgc3VwcG9ydGluZyBrZXJuZWwgbW9kdWxlIChgYnBmX3Rlc3Rtb2RgKS4gR29vZC4gU2VsZnRlc3RzIGFyZW4mIzM5O3QgcGFydCBvZiB0aGUgc3RhbmRhcmQgYnVpbGQ7IHRoZXkmIzM5O3JlIG9ubHkgZXhlY3V0ZWQgaW4gdGhlIHNlbGZ0ZXN0IGNvbnRleHQuIFRoZXkmIzM5O3JlIG5vdCB0YXJnZXRlZCBieSBmdXp6ZXJzIGxpa2Ugc3l6a2FsbGVyLCB3aGljaCBmb2N1c2VzIG9uIHN5c2NhbGxzIGFuZCBjb3JlIGtlcm5lbCBpbnRlcmZhY2VzLgoKVGhlcmVmb3JlLCB0aGlzIHBhdGNoIGRvZXNuJiMzOTt0IGludHJvZHVjZSBhbnkgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwmIzM5O3MgY29yZSBsb2dpYy4gSXQmIzM5O3MgcHVyZWx5IGFib3V0IHRlc3RpbmcuCgpOb3csIEkgbmVlZCB0byBtYWtlIHN1cmUgdGhpcyBhbGlnbnMgd2l0aCB0aGUgJiMzNDtXb3J0aEZ1enppbmc9ZmFsc2UmIzM0OyBjcml0ZXJpYS4gU2VsZnRlc3QgY2hhbmdlcywgbGlrZSB0aGVzZSwgc2hvdWxkIGFic29sdXRlbHkgKm5vdCogdHJpZ2dlciBmdXp6aW5nLiBXZSBkb24mIzM5O3Qgd2FudCB0byB3YXN0ZSByZXNvdXJjZXMgb24gdGhlbS4gWWVzLCB0aGF0JiMzOTtzIGNvcnJlY3QuCgpBbHJpZ2h0LCBJJiMzOTtsbCBjYWxsIGBzZXQtcmVzdWx0c2Agd2l0aCBgV29ydGhGdXp6aW5nPWZhbHNlYC4gSSBhbHNvIHdhbnQgdG8gc2V0IGBGb2N1c1N5bWJvbHNgIHRvIGVtcHR5IGFuZCBgRW5hYmxlQ29uZmlnc2AgdG8gZW1wdHkgYmVjYXVzZSB0aGUgb25seSBjaGFuZ2VzIGFyZSBsaW1pdGVkIHRvIHNlbGZ0ZXN0cywgYW5kIEkmIzM5O2xsIGluY2x1ZGUgYSBjbGVhciBgUmVhc29uaW5nYCBtZXNzYWdlIGV4cGxhaW5pbmcgdGhhdCB0aGUgcGF0Y2ggZXhjbHVzaXZlbHkgbW9kaWZpZXMgc2VsZnRlc3QgZmlsZXMgd2l0aGluIGB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvYC4gVGhhdCBzaG91bGQgY292ZXIgaXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzEgMDk6Mjc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBvbmx5IGFkZHMgYW5kIG1vZGlmaWVzIHRlc3QgY2FzZXMgYW5kIHRlc3Qga2VybmVsIG1vZHVsZSBkZWZpbml0aW9ucyB3aXRoaW4gdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmLywgd2l0aCBubyBmdW5jdGlvbmFsIG1vZGlmaWNhdGlvbnMgdG8gdGhlIGNvcmUgTGludXgga2VybmVsLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggb25seSBhZGRzIGFuZCBtb2RpZmllcyB0ZXN0IGNhc2VzIGFuZCB0ZXN0IGtlcm5lbCBtb2R1bGUgZGVmaW5pdGlvbnMgd2l0aGluIHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi8sIHdpdGggbm8gZnVuY3Rpb25hbCBtb2RpZmljYXRpb25zIHRvIHRoZSBjb3JlIExpbnV4IGtlcm5lbC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzEgMDk6Mjc8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMxVDA5OjI3OjQ3LjkxOTM4NjQzM1oiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwMzM0ODM3Mzg4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggb25seSBhZGRzIGFuZCBtb2RpZmllcyB0ZXN0IGNhc2VzIGFuZCB0ZXN0IGtlcm5lbCBtb2R1bGUgZGVmaW5pdGlvbnMgd2l0aGluIHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi8sIHdpdGggbm8gZnVuY3Rpb25hbCBtb2RpZmljYXRpb25zIHRvIHRoZSBjb3JlIExpbnV4IGtlcm5lbC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMxVDA5OjI3OjQ3LjkxOTM5Mjg1M1oiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDU0ODYzMTk2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgZTFmNmVhNzcxNWQ4NDM1ZmRmNzA2NjBiOWE2NjY2N2M2ODU2Mzc1ZFxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgTW9uIEF1ZyAzMSAwOToyNzo0NyAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy90ZXN0X3N0cnVjdF9vcHNfbXVsdGlfYXJncy5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvdGVzdF9zdHJ1Y3Rfb3BzX211bHRpX2FyZ3MuY1xcbmluZGV4IDBmMzIxZTg4OTg2MjAuLjdmNmY5ZDYxYzllMDcgMTAwNjQ0XFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvdGVzdF9zdHJ1Y3Rfb3BzX211bHRpX2FyZ3MuY1xcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3Rlc3Rfc3RydWN0X29wc19tdWx0aV9hcmdzLmNcXG5AQCAtMyw3ICszLDU0IEBAXFxuICNpbmNsdWRlIFxcdTAwM2N0ZXN0X3Byb2dzLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcXCJzdHJ1Y3Rfb3BzX211bHRpX2FyZ3Muc2tlbC5oXFxcIlxcbiBcXG4rc3RhdGljIHZvaWQgdGVzdF9yZWZjb3VudGVkX211bHRpKHZvaWQpXFxuK3tcXG4rXFx0c3RydWN0IHN0cnVjdF9vcHNfbXVsdGlfYXJncyAqc2tlbDtcXG4rXFx0aW50IGVycjtcXG4rXFxuK1xcdHNrZWwgPSBzdHJ1Y3Rfb3BzX211bHRpX2FyZ3NfX29wZW4oKTtcXG4rXFx0aWYgKCFBU1NFUlRfT0tfUFRSKHNrZWwsIFxcXCJzdHJ1Y3Rfb3BzX211bHRpX2FyZ3NfX29wZW5cXFwiKSlcXG4rXFx0XFx0cmV0dXJuO1xcbitcXG4rXFx0ZXJyID0gc3RydWN0X29wc19tdWx0aV9hcmdzX19sb2FkKHNrZWwpO1xcbitcXHRBU1NFUlRfRVEoZXJyLCAtRUlOVkFMLCBcXFwic3RydWN0X29wc19tdWx0aV9hcmdzX19sb2FkXFxcIik7XFxuK1xcbitcXHRzdHJ1Y3Rfb3BzX211bHRpX2FyZ3NfX2Rlc3Ryb3koc2tlbCk7XFxuK31cXG4rXFxuK3N0YXRpYyB2b2lkIHRlc3RfdHJhbXBvbGluZV9zdGFja19hcmdzKHZvaWQpXFxuK3tcXG4rXFx0c3RydWN0IHN0cnVjdF9vcHNfbXVsdGlfYXJncyAqc2tlbDtcXG4rXFx0c3RydWN0IGJwZl9saW5rICpsaW5rID0gTlVMTDtcXG4rXFx0aW50IGVycjtcXG4rXFxuK1xcdHNrZWwgPSBzdHJ1Y3Rfb3BzX211bHRpX2FyZ3NfX29wZW4oKTtcXG4rXFx0aWYgKCFBU1NFUlRfT0tfUFRSKHNrZWwsIFxcXCJzdHJ1Y3Rfb3BzX211bHRpX2FyZ3NfX29wZW5cXFwiKSlcXG4rXFx0XFx0cmV0dXJuO1xcbitcXG4rXFx0YnBmX3Byb2dyYW1fX3NldF9hdXRvbG9hZChza2VsLVxcdTAwM2Vwcm9ncy50ZXN0X3JlZmNvdW50ZWRfbXVsdGksIGZhbHNlKTtcXG4rXFx0c2tlbC1cXHUwMDNlc3RydWN0X29wcy50ZXN0bW9kX3JlZl9hY3F1aXJlLVxcdTAwM2V0ZXN0X3JlZmNvdW50ZWRfbXVsdGkgPSBOVUxMO1xcbitcXG4rXFx0ZXJyID0gc3RydWN0X29wc19tdWx0aV9hcmdzX19sb2FkKHNrZWwpO1xcbitcXHRpZiAoIUFTU0VSVF9PSyhlcnIsIFxcXCJzdHJ1Y3Rfb3BzX211bHRpX2FyZ3NfX2xvYWRcXFwiKSlcXG4rXFx0XFx0Z290byBvdXQ7XFxuK1xcbitcXHRsaW5rID0gYnBmX21hcF9fYXR0YWNoX3N0cnVjdF9vcHMoc2tlbC1cXHUwMDNlbWFwcy50ZXN0bW9kX3JlZl9hY3F1aXJlKTtcXG4rXFx0aWYgKCFBU1NFUlRfT0tfUFRSKGxpbmssIFxcXCJicGZfbWFwX19hdHRhY2hfc3RydWN0X29wc1xcXCIpKVxcbitcXHRcXHRnb3RvIG91dDtcXG4rXFxuK1xcdEFTU0VSVF9FUShza2VsLVxcdTAwM2Vic3MtXFx1MDAzZWdvdF9hcmc5LCA5OTk5LCBcXFwiY2hlY2tfc3RhY2tfcGFzc2VkX2FyZzlcXFwiKTtcXG4rXFxuK291dDpcXG4rXFx0YnBmX2xpbmtfX2Rlc3Ryb3kobGluayk7XFxuK1xcdHN0cnVjdF9vcHNfbXVsdGlfYXJnc19fZGVzdHJveShza2VsKTtcXG4rfVxcbitcXG4gdm9pZCB0ZXN0X3N0cnVjdF9vcHNfbXVsdGlfYXJncyh2b2lkKVxcbiB7XFxuLVxcdFJVTl9URVNUUyhzdHJ1Y3Rfb3BzX211bHRpX2FyZ3MpO1xcbitcXHRpZiAodGVzdF9fc3RhcnRfc3VidGVzdChcXFwidGVzdF9yZWZjb3VudGVkX211bHRpXFxcIikpXFxuK1xcdFxcdHRlc3RfcmVmY291bnRlZF9tdWx0aSgpO1xcbitcXG4rXFx0aWYgKHRlc3RfX3N0YXJ0X3N1YnRlc3QoXFxcInRlc3RfdHJhbXBvbGluZV9zdGFja19hcmdzXFxcIikpXFxuK1xcdFxcdHRlc3RfdHJhbXBvbGluZV9zdGFja19hcmdzKCk7XFxuIH1cXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3N0cnVjdF9vcHNfbXVsdGlfYXJncy5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3N0cnVjdF9vcHNfbXVsdGlfYXJncy5jXFxuaW5kZXggYzYyYmUxNTc1N2YwNC4uZjBmNDc2NzZiMDk5YSAxMDA2NDRcXG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mvc3RydWN0X29wc19tdWx0aV9hcmdzLmNcXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mvc3RydWN0X29wc19tdWx0aV9hcmdzLmNcXG5AQCAtMjksNyArMjksMjAgQEAgaW50IHRlc3RfcmVmY291bnRlZF9tdWx0aSh1bnNpZ25lZCBsb25nIGxvbmcgKmN0eClcXG4gXFx0cmV0dXJuIDA7XFxuIH1cXG4gXFxuK19fdTY0IGdvdF9hcmc5ID0gMDtcXG4rXFxuK1NFQyhcXFwic3RydWN0X29wcy90ZXN0X3RyYW1wb2xpbmVfc3RhY2tfYXJnc1xcXCIpXFxuK2ludCBCUEZfUFJPRyh0ZXN0X3RyYW1wb2xpbmVfc3RhY2tfYXJncywgaW50IGFyZzEsIGludCBhcmcyLCBpbnQgYXJnMyxcXG4rXFx0XFx0XFx0XFx0XFx0IGludCBhcmc0LCBpbnQgYXJnNSwgaW50IGFyZzYsXFxuK1xcdFxcdFxcdFxcdFxcdCBpbnQgYXJnNywgaW50IGFyZzgsIGludCBhcmc5KVxcbit7XFxuK1xcdGdvdF9hcmc5ID0gYXJnOTtcXG4rXFxuK1xcdHJldHVybiAwO1xcbit9XFxuK1xcbiBTRUMoXFxcIi5zdHJ1Y3Rfb3BzLmxpbmtcXFwiKVxcbiBzdHJ1Y3QgYnBmX3Rlc3Rtb2Rfb3BzIHRlc3Rtb2RfcmVmX2FjcXVpcmUgPSB7XFxuIFxcdC50ZXN0X3JlZmNvdW50ZWRfbXVsdGkgPSAodm9pZCAqKXRlc3RfcmVmY291bnRlZF9tdWx0aSxcXG4rXFx0LnRlc3RfdHJhbXBvbGluZV9zdGFja19hcmdzID0gKHZvaWQgKil0ZXN0X3RyYW1wb2xpbmVfc3RhY2tfYXJncyxcXG4gfTtcXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Rlc3Rfa21vZHMvYnBmX3Rlc3Rtb2QuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi90ZXN0X2ttb2RzL2JwZl90ZXN0bW9kLmNcXG5pbmRleCAyMzgwYjZjYmRlYWRjLi44ZjA3NDRlNjA3NWIzIDEwMDY0NFxcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi90ZXN0X2ttb2RzL2JwZl90ZXN0bW9kLmNcXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdGVzdF9rbW9kcy9icGZfdGVzdG1vZC5jXFxuQEAgLTE2NzgsNiArMTY3OCw5IEBAIHN0YXRpYyBib29sIGJwZl90ZXN0bW9kX29wc19pc192YWxpZF9hY2Nlc3MoaW50IG9mZiwgaW50IHNpemUsXFxuIFxcdHJldHVybiBicGZfdHJhY2luZ19idGZfY3R4X2FjY2VzcyhvZmYsIHNpemUsIHR5cGUsIHByb2csIGluZm8pO1xcbiB9XFxuIFxcbitzdGF0aWMgREVGSU5FX01VVEVYKHN0X29wc190cmFtcG9saW5lX211dGV4KTtcXG4rc3RhdGljIHN0cnVjdCBicGZfdGVzdG1vZF9vcHMgKnN0X29wc190cmFtcG9saW5lO1xcbitcXG4gc3RhdGljIGludCBicGZfdGVzdG1vZF9vcHNfaW5pdF9tZW1iZXIoY29uc3Qgc3RydWN0IGJ0Zl90eXBlICp0LFxcbiBcXHRcXHRcXHRcXHQgICAgICAgY29uc3Qgc3RydWN0IGJ0Zl9tZW1iZXIgKm1lbWJlcixcXG4gXFx0XFx0XFx0XFx0ICAgICAgIHZvaWQgKmtkYXRhLCBjb25zdCB2b2lkICp1ZGF0YSlcXG5AQCAtMTY5MSw2ICsxNjk0LDE4IEBAIHN0YXRpYyBpbnQgYnBmX3Rlc3Rtb2Rfb3BzX2luaXRfbWVtYmVyKGNvbnN0IHN0cnVjdCBidGZfdHlwZSAqdCxcXG4gXFx0XFx0KChzdHJ1Y3QgYnBmX3Rlc3Rtb2Rfb3BzICopa2RhdGEpLVxcdTAwM2VkYXRhID0gKChzdHJ1Y3QgYnBmX3Rlc3Rtb2Rfb3BzICopdWRhdGEpLVxcdTAwM2VkYXRhO1xcbiBcXHRcXHRyZXR1cm4gMTtcXG4gXFx0fVxcbitcXG4rXFx0aWYgKG1lbWJlci1cXHUwMDNlb2Zmc2V0ID09IG9mZnNldG9mKHN0cnVjdCBicGZfdGVzdG1vZF9vcHMsIHRlc3RfdHJhbXBvbGluZV9zdGFja19hcmdzKSAqIDgpIHtcXG4rXFx0XFx0bXV0ZXhfbG9jayhcXHUwMDI2c3Rfb3BzX3RyYW1wb2xpbmVfbXV0ZXgpO1xcbitcXHRcXHRpZiAoc3Rfb3BzX3RyYW1wb2xpbmUpIHtcXG4rXFx0XFx0XFx0cHJfZXJyKFxcXCJzdF9vcHNfdHJhbXBvbGluZSBoYXMgYWxyZWFkeSBiZWVuIHJlZ2lzdGVyZWRcXFxcblxcXCIpO1xcbitcXHRcXHRcXHRtdXRleF91bmxvY2soXFx1MDAyNnN0X29wc190cmFtcG9saW5lX211dGV4KTtcXG4rXFx0XFx0XFx0cmV0dXJuIC1FRVhJU1Q7XFxuK1xcdFxcdH1cXG4rXFx0XFx0c3Rfb3BzX3RyYW1wb2xpbmUgPSAoc3RydWN0IGJwZl90ZXN0bW9kX29wcyAqKWtkYXRhO1xcbitcXHRcXHRtdXRleF91bmxvY2soXFx1MDAyNnN0X29wc190cmFtcG9saW5lX211dGV4KTtcXG4rXFx0fVxcbitcXG4gXFx0cmV0dXJuIDA7XFxuIH1cXG4gXFxuQEAgLTE3MjAsMTEgKzE3MzUsMjAgQEAgc3RhdGljIGludCBicGZfZHVtbXlfcmVnKHZvaWQgKmtkYXRhLCBzdHJ1Y3QgYnBmX2xpbmsgKmxpbmspXFxuIFxcdGlmIChvcHMtXFx1MDAzZXRlc3RfMilcXG4gXFx0XFx0b3BzLVxcdTAwM2V0ZXN0XzIoNCwgb3BzLVxcdTAwM2VkYXRhKTtcXG4gXFxuK1xcdG11dGV4X2xvY2soXFx1MDAyNnN0X29wc190cmFtcG9saW5lX211dGV4KTtcXG4rXFx0aWYgKHN0X29wc190cmFtcG9saW5lIFxcdTAwMjZcXHUwMDI2IHN0X29wc190cmFtcG9saW5lLVxcdTAwM2V0ZXN0X3RyYW1wb2xpbmVfc3RhY2tfYXJncylcXG4rXFx0XFx0c3Rfb3BzX3RyYW1wb2xpbmUtXFx1MDAzZXRlc3RfdHJhbXBvbGluZV9zdGFja19hcmdzKDEsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDk5OTkpO1xcbitcXHRtdXRleF91bmxvY2soXFx1MDAyNnN0X29wc190cmFtcG9saW5lX211dGV4KTtcXG4rXFxuIFxcdHJldHVybiAwO1xcbiB9XFxuIFxcbiBzdGF0aWMgdm9pZCBicGZfZHVtbXlfdW5yZWcodm9pZCAqa2RhdGEsIHN0cnVjdCBicGZfbGluayAqbGluaylcXG4ge1xcbitcXHRtdXRleF9sb2NrKFxcdTAwMjZzdF9vcHNfdHJhbXBvbGluZV9tdXRleCk7XFxuK1xcdGlmIChzdF9vcHNfdHJhbXBvbGluZSA9PSAoc3RydWN0IGJwZl90ZXN0bW9kX29wcyAqKWtkYXRhKVxcbitcXHRcXHRzdF9vcHNfdHJhbXBvbGluZSA9IE5VTEw7XFxuK1xcdG11dGV4X3VubG9jayhcXHUwMDI2c3Rfb3BzX3RyYW1wb2xpbmVfbXV0ZXgpO1xcbiB9XFxuIFxcbiBzdGF0aWMgaW50IGJwZl90ZXN0bW9kX3Rlc3RfMSh2b2lkKVxcbkBAIC0xNzY2LDYgKzE3OTAsMTMgQEAgYnBmX3Rlc3Rtb2Rfb3BzX190ZXN0X3JldHVybl9yZWZfa3B0cihpbnQgZHVtbXksIHN0cnVjdCB0YXNrX3N0cnVjdCAqdGFza19fcmVmLFxcbiBcXHRyZXR1cm4gTlVMTDtcXG4gfVxcbiBcXG4rc3RhdGljIGludCBicGZfdGVzdG1vZF9vcHNfX3Rlc3RfdHJhbXBvbGluZV9zdGFja19hcmdzKGludCBhcmcxLCBpbnQgYXJnMiwgaW50IGFyZzMsXFxuK1xcdFxcdFxcdFxcdFxcdFxcdCAgICAgICBpbnQgYXJnNCwgaW50IGFyZzUsIGludCBhcmc2LFxcbitcXHRcXHRcXHRcXHRcXHRcXHQgICAgICAgaW50IGFyZzcsIGludCBhcmc4LCBpbnQgYXJnOSlcXG4re1xcbitcXHRyZXR1cm4gYXJnOTtcXG4rfVxcbitcXG4gc3RhdGljIHN0cnVjdCBicGZfdGVzdG1vZF9vcHMgX19icGZfdGVzdG1vZF9vcHMgPSB7XFxuIFxcdC50ZXN0XzEgPSBicGZfdGVzdG1vZF90ZXN0XzEsXFxuIFxcdC50ZXN0XzIgPSBicGZfdGVzdG1vZF90ZXN0XzIsXFxuQEAgLTE3NzMsNiArMTgwNCw3IEBAIHN0YXRpYyBzdHJ1Y3QgYnBmX3Rlc3Rtb2Rfb3BzIF9fYnBmX3Rlc3Rtb2Rfb3BzID0ge1xcbiBcXHQudGVzdF9yZWZjb3VudGVkID0gYnBmX3Rlc3Rtb2Rfb3BzX190ZXN0X3JlZmNvdW50ZWQsXFxuIFxcdC50ZXN0X3JlZmNvdW50ZWRfbXVsdGkgPSBicGZfdGVzdG1vZF9vcHNfX3Rlc3RfcmVmY291bnRlZF9tdWx0aSxcXG4gXFx0LnRlc3RfcmV0dXJuX3JlZl9rcHRyID0gYnBmX3Rlc3Rtb2Rfb3BzX190ZXN0X3JldHVybl9yZWZfa3B0cixcXG4rXFx0LnRlc3RfdHJhbXBvbGluZV9zdGFja19hcmdzID0gYnBmX3Rlc3Rtb2Rfb3BzX190ZXN0X3RyYW1wb2xpbmVfc3RhY2tfYXJncyxcXG4gfTtcXG4gXFxuIHN0cnVjdCBicGZfc3RydWN0X29wcyBicGZfYnBmX3Rlc3Rtb2Rfb3BzID0ge1xcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdGVzdF9rbW9kcy9icGZfdGVzdG1vZC5oIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Rlc3Rfa21vZHMvYnBmX3Rlc3Rtb2QuaFxcbmluZGV4IDIxMGI5MTkyOTBjYzIuLjQyMjU3YWU4OWZkNWIgMTAwNjQ0XFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Rlc3Rfa21vZHMvYnBmX3Rlc3Rtb2QuaFxcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi90ZXN0X2ttb2RzL2JwZl90ZXN0bW9kLmhcXG5AQCAtNDYsNiArNDYsMTEgQEAgc3RydWN0IGJwZl90ZXN0bW9kX29wcyB7XFxuIFxcdHN0cnVjdCB0YXNrX3N0cnVjdCAqKCp0ZXN0X3JldHVybl9yZWZfa3B0cikoaW50IGR1bW15LCBzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRhc2ssXFxuIFxcdFxcdFxcdFxcdFxcdFxcdCAgICBzdHJ1Y3QgY2dyb3VwICpjZ3JwKTtcXG4gXFxuK1xcdC8qIFVzZWQgdG8gdGVzdCBpbmRpcmVjdCBzdHJ1Y3Rfb3BzIHRyYW1wb2xpbmVzIHN0YWNrLXBhc3NlZCBhcmd1bWVudHMgKFxcdTAwM2U4IGFyZ3MpLiAqL1xcbitcXHRpbnQgKCp0ZXN0X3RyYW1wb2xpbmVfc3RhY2tfYXJncykoaW50IGFyZzEsIGludCBhcmcyLCBpbnQgYXJnMyxcXG4rXFx0XFx0XFx0XFx0XFx0ICBpbnQgYXJnNCwgaW50IGFyZzUsIGludCBhcmc2LFxcbitcXHRcXHRcXHRcXHRcXHQgIGludCBhcmc3LCBpbnQgYXJnOCwgaW50IGFyZzkpO1xcbitcXG4gXFx0LyogVGhlIGZvbGxvd2luZyBmaWVsZHMgYXJlIHVzZWQgdG8gdGVzdCBzaGFkb3cgY29waWVzLiAqL1xcbiBcXHRjaGFyIG9uZWJ5dGU7XFxuIFxcdHN0cnVjdCB7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMxVDA5OjI3OjQ4LjM3NTA5ODc0OVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImNvcmUiLCJEdXJhdGlvbiI6OTg3OTExMDQwMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggb25seSBhZGRzIGFuZCBtb2RpZmllcyB0ZXN0IGNhc2VzIGFuZCB0ZXN0IGtlcm5lbCBtb2R1bGUgZGVmaW5pdGlvbnMgd2l0aGluIHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi8sIHdpdGggbm8gZnVuY3Rpb25hbCBtb2RpZmljYXRpb25zIHRvIHRoZSBjb3JlIExpbnV4IGtlcm5lbC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGUxZjZlYTc3MTVkODQzNWZkZjcwNjYwYjlhNjY2NjdjNjg1NjM3NWRcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEF1ZyAzMSAwOToyNzo0NyAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3Rlc3Rfc3RydWN0X29wc19tdWx0aV9hcmdzLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy90ZXN0X3N0cnVjdF9vcHNfbXVsdGlfYXJncy5jXG5pbmRleCAwZjMyMWU4ODk4NjIwLi43ZjZmOWQ2MWM5ZTA3IDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvdGVzdF9zdHJ1Y3Rfb3BzX211bHRpX2FyZ3MuY1xuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvdGVzdF9zdHJ1Y3Rfb3BzX211bHRpX2FyZ3MuY1xuQEAgLTMsNyArMyw1NCBAQFxuICNpbmNsdWRlIFx1MDAzY3Rlc3RfcHJvZ3MuaFx1MDAzZVxuICNpbmNsdWRlIFwic3RydWN0X29wc19tdWx0aV9hcmdzLnNrZWwuaFwiXG4gXG4rc3RhdGljIHZvaWQgdGVzdF9yZWZjb3VudGVkX211bHRpKHZvaWQpXG4re1xuK1x0c3RydWN0IHN0cnVjdF9vcHNfbXVsdGlfYXJncyAqc2tlbDtcbitcdGludCBlcnI7XG4rXG4rXHRza2VsID0gc3RydWN0X29wc19tdWx0aV9hcmdzX19vcGVuKCk7XG4rXHRpZiAoIUFTU0VSVF9PS19QVFIoc2tlbCwgXCJzdHJ1Y3Rfb3BzX211bHRpX2FyZ3NfX29wZW5cIikpXG4rXHRcdHJldHVybjtcbitcbitcdGVyciA9IHN0cnVjdF9vcHNfbXVsdGlfYXJnc19fbG9hZChza2VsKTtcbitcdEFTU0VSVF9FUShlcnIsIC1FSU5WQUwsIFwic3RydWN0X29wc19tdWx0aV9hcmdzX19sb2FkXCIpO1xuK1xuK1x0c3RydWN0X29wc19tdWx0aV9hcmdzX19kZXN0cm95KHNrZWwpO1xuK31cbitcbitzdGF0aWMgdm9pZCB0ZXN0X3RyYW1wb2xpbmVfc3RhY2tfYXJncyh2b2lkKVxuK3tcbitcdHN0cnVjdCBzdHJ1Y3Rfb3BzX211bHRpX2FyZ3MgKnNrZWw7XG4rXHRzdHJ1Y3QgYnBmX2xpbmsgKmxpbmsgPSBOVUxMO1xuK1x0aW50IGVycjtcbitcbitcdHNrZWwgPSBzdHJ1Y3Rfb3BzX211bHRpX2FyZ3NfX29wZW4oKTtcbitcdGlmICghQVNTRVJUX09LX1BUUihza2VsLCBcInN0cnVjdF9vcHNfbXVsdGlfYXJnc19fb3BlblwiKSlcbitcdFx0cmV0dXJuO1xuK1xuK1x0YnBmX3Byb2dyYW1fX3NldF9hdXRvbG9hZChza2VsLVx1MDAzZXByb2dzLnRlc3RfcmVmY291bnRlZF9tdWx0aSwgZmFsc2UpO1xuK1x0c2tlbC1cdTAwM2VzdHJ1Y3Rfb3BzLnRlc3Rtb2RfcmVmX2FjcXVpcmUtXHUwMDNldGVzdF9yZWZjb3VudGVkX211bHRpID0gTlVMTDtcbitcbitcdGVyciA9IHN0cnVjdF9vcHNfbXVsdGlfYXJnc19fbG9hZChza2VsKTtcbitcdGlmICghQVNTRVJUX09LKGVyciwgXCJzdHJ1Y3Rfb3BzX211bHRpX2FyZ3NfX2xvYWRcIikpXG4rXHRcdGdvdG8gb3V0O1xuK1xuK1x0bGluayA9IGJwZl9tYXBfX2F0dGFjaF9zdHJ1Y3Rfb3BzKHNrZWwtXHUwMDNlbWFwcy50ZXN0bW9kX3JlZl9hY3F1aXJlKTtcbitcdGlmICghQVNTRVJUX09LX1BUUihsaW5rLCBcImJwZl9tYXBfX2F0dGFjaF9zdHJ1Y3Rfb3BzXCIpKVxuK1x0XHRnb3RvIG91dDtcbitcbitcdEFTU0VSVF9FUShza2VsLVx1MDAzZWJzcy1cdTAwM2Vnb3RfYXJnOSwgOTk5OSwgXCJjaGVja19zdGFja19wYXNzZWRfYXJnOVwiKTtcbitcbitvdXQ6XG4rXHRicGZfbGlua19fZGVzdHJveShsaW5rKTtcbitcdHN0cnVjdF9vcHNfbXVsdGlfYXJnc19fZGVzdHJveShza2VsKTtcbit9XG4rXG4gdm9pZCB0ZXN0X3N0cnVjdF9vcHNfbXVsdGlfYXJncyh2b2lkKVxuIHtcbi1cdFJVTl9URVNUUyhzdHJ1Y3Rfb3BzX211bHRpX2FyZ3MpO1xuK1x0aWYgKHRlc3RfX3N0YXJ0X3N1YnRlc3QoXCJ0ZXN0X3JlZmNvdW50ZWRfbXVsdGlcIikpXG4rXHRcdHRlc3RfcmVmY291bnRlZF9tdWx0aSgpO1xuK1xuK1x0aWYgKHRlc3RfX3N0YXJ0X3N1YnRlc3QoXCJ0ZXN0X3RyYW1wb2xpbmVfc3RhY2tfYXJnc1wiKSlcbitcdFx0dGVzdF90cmFtcG9saW5lX3N0YWNrX2FyZ3MoKTtcbiB9XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3N0cnVjdF9vcHNfbXVsdGlfYXJncy5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3N0cnVjdF9vcHNfbXVsdGlfYXJncy5jXG5pbmRleCBjNjJiZTE1NzU3ZjA0Li5mMGY0NzY3NmIwOTlhIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3N0cnVjdF9vcHNfbXVsdGlfYXJncy5jXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mvc3RydWN0X29wc19tdWx0aV9hcmdzLmNcbkBAIC0yOSw3ICsyOSwyMCBAQCBpbnQgdGVzdF9yZWZjb3VudGVkX211bHRpKHVuc2lnbmVkIGxvbmcgbG9uZyAqY3R4KVxuIFx0cmV0dXJuIDA7XG4gfVxuIFxuK19fdTY0IGdvdF9hcmc5ID0gMDtcbitcbitTRUMoXCJzdHJ1Y3Rfb3BzL3Rlc3RfdHJhbXBvbGluZV9zdGFja19hcmdzXCIpXG4raW50IEJQRl9QUk9HKHRlc3RfdHJhbXBvbGluZV9zdGFja19hcmdzLCBpbnQgYXJnMSwgaW50IGFyZzIsIGludCBhcmczLFxuK1x0XHRcdFx0XHQgaW50IGFyZzQsIGludCBhcmc1LCBpbnQgYXJnNixcbitcdFx0XHRcdFx0IGludCBhcmc3LCBpbnQgYXJnOCwgaW50IGFyZzkpXG4re1xuK1x0Z290X2FyZzkgPSBhcmc5O1xuK1xuK1x0cmV0dXJuIDA7XG4rfVxuK1xuIFNFQyhcIi5zdHJ1Y3Rfb3BzLmxpbmtcIilcbiBzdHJ1Y3QgYnBmX3Rlc3Rtb2Rfb3BzIHRlc3Rtb2RfcmVmX2FjcXVpcmUgPSB7XG4gXHQudGVzdF9yZWZjb3VudGVkX211bHRpID0gKHZvaWQgKil0ZXN0X3JlZmNvdW50ZWRfbXVsdGksXG4rXHQudGVzdF90cmFtcG9saW5lX3N0YWNrX2FyZ3MgPSAodm9pZCAqKXRlc3RfdHJhbXBvbGluZV9zdGFja19hcmdzLFxuIH07XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Rlc3Rfa21vZHMvYnBmX3Rlc3Rtb2QuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi90ZXN0X2ttb2RzL2JwZl90ZXN0bW9kLmNcbmluZGV4IDIzODBiNmNiZGVhZGMuLjhmMDc0NGU2MDc1YjMgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdGVzdF9rbW9kcy9icGZfdGVzdG1vZC5jXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdGVzdF9rbW9kcy9icGZfdGVzdG1vZC5jXG5AQCAtMTY3OCw2ICsxNjc4LDkgQEAgc3RhdGljIGJvb2wgYnBmX3Rlc3Rtb2Rfb3BzX2lzX3ZhbGlkX2FjY2VzcyhpbnQgb2ZmLCBpbnQgc2l6ZSxcbiBcdHJldHVybiBicGZfdHJhY2luZ19idGZfY3R4X2FjY2VzcyhvZmYsIHNpemUsIHR5cGUsIHByb2csIGluZm8pO1xuIH1cbiBcbitzdGF0aWMgREVGSU5FX01VVEVYKHN0X29wc190cmFtcG9saW5lX211dGV4KTtcbitzdGF0aWMgc3RydWN0IGJwZl90ZXN0bW9kX29wcyAqc3Rfb3BzX3RyYW1wb2xpbmU7XG4rXG4gc3RhdGljIGludCBicGZfdGVzdG1vZF9vcHNfaW5pdF9tZW1iZXIoY29uc3Qgc3RydWN0IGJ0Zl90eXBlICp0LFxuIFx0XHRcdFx0ICAgICAgIGNvbnN0IHN0cnVjdCBidGZfbWVtYmVyICptZW1iZXIsXG4gXHRcdFx0XHQgICAgICAgdm9pZCAqa2RhdGEsIGNvbnN0IHZvaWQgKnVkYXRhKVxuQEAgLTE2OTEsNiArMTY5NCwxOCBAQCBzdGF0aWMgaW50IGJwZl90ZXN0bW9kX29wc19pbml0X21lbWJlcihjb25zdCBzdHJ1Y3QgYnRmX3R5cGUgKnQsXG4gXHRcdCgoc3RydWN0IGJwZl90ZXN0bW9kX29wcyAqKWtkYXRhKS1cdTAwM2VkYXRhID0gKChzdHJ1Y3QgYnBmX3Rlc3Rtb2Rfb3BzICopdWRhdGEpLVx1MDAzZWRhdGE7XG4gXHRcdHJldHVybiAxO1xuIFx0fVxuK1xuK1x0aWYgKG1lbWJlci1cdTAwM2VvZmZzZXQgPT0gb2Zmc2V0b2Yoc3RydWN0IGJwZl90ZXN0bW9kX29wcywgdGVzdF90cmFtcG9saW5lX3N0YWNrX2FyZ3MpICogOCkge1xuK1x0XHRtdXRleF9sb2NrKFx1MDAyNnN0X29wc190cmFtcG9saW5lX211dGV4KTtcbitcdFx0aWYgKHN0X29wc190cmFtcG9saW5lKSB7XG4rXHRcdFx0cHJfZXJyKFwic3Rfb3BzX3RyYW1wb2xpbmUgaGFzIGFscmVhZHkgYmVlbiByZWdpc3RlcmVkXFxuXCIpO1xuK1x0XHRcdG11dGV4X3VubG9jayhcdTAwMjZzdF9vcHNfdHJhbXBvbGluZV9tdXRleCk7XG4rXHRcdFx0cmV0dXJuIC1FRVhJU1Q7XG4rXHRcdH1cbitcdFx0c3Rfb3BzX3RyYW1wb2xpbmUgPSAoc3RydWN0IGJwZl90ZXN0bW9kX29wcyAqKWtkYXRhO1xuK1x0XHRtdXRleF91bmxvY2soXHUwMDI2c3Rfb3BzX3RyYW1wb2xpbmVfbXV0ZXgpO1xuK1x0fVxuK1xuIFx0cmV0dXJuIDA7XG4gfVxuIFxuQEAgLTE3MjAsMTEgKzE3MzUsMjAgQEAgc3RhdGljIGludCBicGZfZHVtbXlfcmVnKHZvaWQgKmtkYXRhLCBzdHJ1Y3QgYnBmX2xpbmsgKmxpbmspXG4gXHRpZiAob3BzLVx1MDAzZXRlc3RfMilcbiBcdFx0b3BzLVx1MDAzZXRlc3RfMig0LCBvcHMtXHUwMDNlZGF0YSk7XG4gXG4rXHRtdXRleF9sb2NrKFx1MDAyNnN0X29wc190cmFtcG9saW5lX211dGV4KTtcbitcdGlmIChzdF9vcHNfdHJhbXBvbGluZSBcdTAwMjZcdTAwMjYgc3Rfb3BzX3RyYW1wb2xpbmUtXHUwMDNldGVzdF90cmFtcG9saW5lX3N0YWNrX2FyZ3MpXG4rXHRcdHN0X29wc190cmFtcG9saW5lLVx1MDAzZXRlc3RfdHJhbXBvbGluZV9zdGFja19hcmdzKDEsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDk5OTkpO1xuK1x0bXV0ZXhfdW5sb2NrKFx1MDAyNnN0X29wc190cmFtcG9saW5lX211dGV4KTtcbitcbiBcdHJldHVybiAwO1xuIH1cbiBcbiBzdGF0aWMgdm9pZCBicGZfZHVtbXlfdW5yZWcodm9pZCAqa2RhdGEsIHN0cnVjdCBicGZfbGluayAqbGluaylcbiB7XG4rXHRtdXRleF9sb2NrKFx1MDAyNnN0X29wc190cmFtcG9saW5lX211dGV4KTtcbitcdGlmIChzdF9vcHNfdHJhbXBvbGluZSA9PSAoc3RydWN0IGJwZl90ZXN0bW9kX29wcyAqKWtkYXRhKVxuK1x0XHRzdF9vcHNfdHJhbXBvbGluZSA9IE5VTEw7XG4rXHRtdXRleF91bmxvY2soXHUwMDI2c3Rfb3BzX3RyYW1wb2xpbmVfbXV0ZXgpO1xuIH1cbiBcbiBzdGF0aWMgaW50IGJwZl90ZXN0bW9kX3Rlc3RfMSh2b2lkKVxuQEAgLTE3NjYsNiArMTc5MCwxMyBAQCBicGZfdGVzdG1vZF9vcHNfX3Rlc3RfcmV0dXJuX3JlZl9rcHRyKGludCBkdW1teSwgc3RydWN0IHRhc2tfc3RydWN0ICp0YXNrX19yZWYsXG4gXHRyZXR1cm4gTlVMTDtcbiB9XG4gXG4rc3RhdGljIGludCBicGZfdGVzdG1vZF9vcHNfX3Rlc3RfdHJhbXBvbGluZV9zdGFja19hcmdzKGludCBhcmcxLCBpbnQgYXJnMiwgaW50IGFyZzMsXG4rXHRcdFx0XHRcdFx0ICAgICAgIGludCBhcmc0LCBpbnQgYXJnNSwgaW50IGFyZzYsXG4rXHRcdFx0XHRcdFx0ICAgICAgIGludCBhcmc3LCBpbnQgYXJnOCwgaW50IGFyZzkpXG4re1xuK1x0cmV0dXJuIGFyZzk7XG4rfVxuK1xuIHN0YXRpYyBzdHJ1Y3QgYnBmX3Rlc3Rtb2Rfb3BzIF9fYnBmX3Rlc3Rtb2Rfb3BzID0ge1xuIFx0LnRlc3RfMSA9IGJwZl90ZXN0bW9kX3Rlc3RfMSxcbiBcdC50ZXN0XzIgPSBicGZfdGVzdG1vZF90ZXN0XzIsXG5AQCAtMTc3Myw2ICsxODA0LDcgQEAgc3RhdGljIHN0cnVjdCBicGZfdGVzdG1vZF9vcHMgX19icGZfdGVzdG1vZF9vcHMgPSB7XG4gXHQudGVzdF9yZWZjb3VudGVkID0gYnBmX3Rlc3Rtb2Rfb3BzX190ZXN0X3JlZmNvdW50ZWQsXG4gXHQudGVzdF9yZWZjb3VudGVkX211bHRpID0gYnBmX3Rlc3Rtb2Rfb3BzX190ZXN0X3JlZmNvdW50ZWRfbXVsdGksXG4gXHQudGVzdF9yZXR1cm5fcmVmX2twdHIgPSBicGZfdGVzdG1vZF9vcHNfX3Rlc3RfcmV0dXJuX3JlZl9rcHRyLFxuK1x0LnRlc3RfdHJhbXBvbGluZV9zdGFja19hcmdzID0gYnBmX3Rlc3Rtb2Rfb3BzX190ZXN0X3RyYW1wb2xpbmVfc3RhY2tfYXJncyxcbiB9O1xuIFxuIHN0cnVjdCBicGZfc3RydWN0X29wcyBicGZfYnBmX3Rlc3Rtb2Rfb3BzID0ge1xuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi90ZXN0X2ttb2RzL2JwZl90ZXN0bW9kLmggYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdGVzdF9rbW9kcy9icGZfdGVzdG1vZC5oXG5pbmRleCAyMTBiOTE5MjkwY2MyLi40MjI1N2FlODlmZDViIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Rlc3Rfa21vZHMvYnBmX3Rlc3Rtb2QuaFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Rlc3Rfa21vZHMvYnBmX3Rlc3Rtb2QuaFxuQEAgLTQ2LDYgKzQ2LDExIEBAIHN0cnVjdCBicGZfdGVzdG1vZF9vcHMge1xuIFx0c3RydWN0IHRhc2tfc3RydWN0ICooKnRlc3RfcmV0dXJuX3JlZl9rcHRyKShpbnQgZHVtbXksIHN0cnVjdCB0YXNrX3N0cnVjdCAqdGFzayxcbiBcdFx0XHRcdFx0XHQgICAgc3RydWN0IGNncm91cCAqY2dycCk7XG4gXG4rXHQvKiBVc2VkIHRvIHRlc3QgaW5kaXJlY3Qgc3RydWN0X29wcyB0cmFtcG9saW5lcyBzdGFjay1wYXNzZWQgYXJndW1lbnRzIChcdTAwM2U4IGFyZ3MpLiAqL1xuK1x0aW50ICgqdGVzdF90cmFtcG9saW5lX3N0YWNrX2FyZ3MpKGludCBhcmcxLCBpbnQgYXJnMiwgaW50IGFyZzMsXG4rXHRcdFx0XHRcdCAgaW50IGFyZzQsIGludCBhcmc1LCBpbnQgYXJnNixcbitcdFx0XHRcdFx0ICBpbnQgYXJnNywgaW50IGFyZzgsIGludCBhcmc5KTtcbitcbiBcdC8qIFRoZSBmb2xsb3dpbmcgZmllbGRzIGFyZSB1c2VkIHRvIHRlc3Qgc2hhZG93IGNvcGllcy4gKi9cbiBcdGNoYXIgb25lYnl0ZTtcbiBcdHN0cnVjdCB7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0zMVQwOToyNzo0OC4zNzUwOTk4OTlaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo0Njc4MDE0NTAyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgUGF0Y2g6IFdvcnRoIEZ1enppbmc/KipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBGaXJzdCwgSSBzZWUgdGhlIHBhdGNoIG1vZGlmaWVzIHNldmVyYWwgZmlsZXMsIHNwZWNpZmljYWxseSB3aXRoaW4gYHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9gLiBUaGlzIGluY2x1ZGVzIGNoYW5nZXMgdG8gYHRlc3Rfc3RydWN0X29wc19tdWx0aV9hcmdzLmNgLCBgc3RydWN0X29wc19tdWx0aV9hcmdzLmNgLCBhbmQgaW1wb3J0YW50bHksIGBicGZfdGVzdG1vZC5jYCBhbmQgYC5oYC5cblxuTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gZGV0ZXJtaW5lIHRoZSBzY29wZSBvZiB0aGVzZSBjaGFuZ2VzLiBBcmUgd2UgKmp1c3QqIGRlYWxpbmcgd2l0aCBzZWxmLXRlc3RzLCBvciBpcyB0aGlzIHRvdWNoaW5nIHNvbWV0aGluZyBtb3JlIGZ1bmRhbWVudGFsPyBJIG5lZWQgdG8gcXVpY2tseSBhc2NlcnRhaW4gaWYgdGhlc2UgbW9kaWZpY2F0aW9ucyBibGVlZCBpbnRvIHRoZSBjb3JlIGtlcm5lbCBvciBkcml2ZXJzIGluIGEgd2F5IHRoYXQgd291bGQgbWFrZSB0aGlzIHBhdGNoIGZ1enphYmxlLiBBIHF1aWNrIGBnaXQgc3RhdHVzYCwgb3IgYSBxdWljayBncmVwIHRocm91Z2ggdGhlIGRpZmYsIHdvdWxkIGJlIG15IGdvLXRvLCBidXQgZnJvbSB3aGF0IEknbSBzZWVpbmcsIGl0IGFwcGVhcnMgY29uZmluZWQgdG8gYHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzYC5cblxuVGhlIGluY2x1c2lvbiBvZiBgYnBmX3Rlc3Rtb2RgIGRvZXMgcmFpc2UgYSBmbGFnLCB0aG91Z2guIElzIHRoaXMgYSAqZ2VudWluZSogdGVzdCBtb2R1bGUsIGNvbnRhaW5lZCBzb2xlbHkgd2l0aGluIHRoZSBzZWxmdGVzdHMgZGlyZWN0b3J5PyBPciBpcyB0aGlzIHNvbWV0aGluZyB0aGF0IGNvdWxkIHNvbWVob3cgaW50cm9kdWNlIGEgdnVsbmVyYWJpbGl0eS4gSSBrbm93IGZyb20gZXhwZXJpZW5jZSB0aGF0IGNoYW5nZXMgKnN0cmljdGx5KiB3aXRoaW4gYHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzLy4uLmAgdHlwaWNhbGx5IGRvbid0IGltcGFjdCB0aGUgY3J1Y2lhbCBhc3BlY3RzLlxuXG5TbywgbGV0IG1lIHJlZnJlc2ggdGhlIGd1aWRlbGluZXMuIFRoZSBpbnN0cnVjdGlvbnMgY2xlYXJseSBzdGF0ZSB0aGF0IGlmIGl0J3MgZG9jdW1lbnRhdGlvbiwgS2NvbmZpZywgb3IgY29tbWVudHMsIHdlIGlnbm9yZSBpdC4gVGhlIGNyaXRpY2FsIHBhcnQgaXMgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMuIEkgbmVlZCB0byBlc3RhYmxpc2ggaWYgdGhpcyB0b3VjaGVzIGFueXRoaW5nIHJlYWNoYWJsZSBvdXRzaWRlIHRoZSBzZWxmdGVzdHMgZGlyZWN0b3J5LlxuXG5UaGUgZmFjdCB0aGF0IGl0J3MgaW4gYHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzYCBzdHJvbmdseSBzdWdnZXN0cyBpdCdzIGEgdGVzdCBzZXR1cCwgbm90IGRpcmVjdGx5IGltcGFjdGluZyBjb3JlIGZ1bmN0aW9uYWxpdHkuIEknbSBnb2luZyB0byBxdWlja2x5IGNvbmZpcm0gd2hlcmUgYGJwZl90ZXN0bW9kYCBsaXZlcyB3aXRoIGBncmVwcGVyYCwgYnV0IG15IGluaXRpYWwgYXNzZXNzbWVudCBpcyB0aGF0IHRoaXMgaXMgKm5vdCogd29ydGggZnV6emluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6NDU2MywiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ0OSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMxVDA5OjI3OjUzLjA1MzExODA3MVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMzczMjcwMzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYnBmX3Rlc3Rtb2RcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwidG9vbHMvdGVzdGluZy9zZWxmdGVzdHNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiXFxuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiAyNTMwIGxpbmVzLlxcblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cXG5cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvTWFrZWZpbGU9MTMzPVRFU1RfUFJPR1NfRVhURU5ERUQgOj0gXFxcXFxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL01ha2VmaWxlLTEzNS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvTWFrZWZpbGU6MTM2OlRFU1RfS01PRFMgOj0gYnBmX3Rlc3Rtb2Qua28gYnBmX3Rlc3Rfbm9fY2ZpLmtvIGJwZl90ZXN0X21vZG9yZGVyX3gua28gXFxcXFxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9NYWtlZmlsZS0xMzctXFx0YnBmX3Rlc3RfbW9kb3JkZXJfeS5rbyBicGZfdGVzdF9ycXNwaW5sb2NrLmtvXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9hZ2dyZWdhdGVfcmV0LmM9OT1zdGF0aWMgYm9vbCB0ZXN0bW9kX2hhc19hcmVuYV90YWdnZWRfbWVtYmVyKHZvaWQpXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9hZ2dyZWdhdGVfcmV0LmMtMTktXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvYWdncmVnYXRlX3JldC5jOjIwOlxcdG1vZHVsZV9idGYgPSBidGZfX2xvYWRfbW9kdWxlX2J0ZihcXFwiYnBmX3Rlc3Rtb2RcXFwiLCB2bWxpbnV4X2J0Zik7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvYWdncmVnYXRlX3JldC5jLTIxLVxcdGlmICghbW9kdWxlX2J0ZilcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2F0dGFjaF9wcm9iZS5jPTE3MT1zdGF0aWMgdm9pZCB0ZXN0X2F0dGFjaF9rcHJvYmVfbGVnYWN5X2J5X2FkZHJfcmVqZWN0KHZvaWQpXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9hdHRhY2hfcHJvYmUuYy0yMDEtICogYnBmX2ZlbnRyeV9zaGFkb3dfdGVzdCBleGlzdHMgaW4gYm90aCB2bWxpbnV4IChuZXQvYnBmL3Rlc3RfcnVuLmMpIGFuZFxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2F0dGFjaF9wcm9iZS5jOjIwMjogKiBicGZfdGVzdG1vZCAoYnBmX3Rlc3Rtb2QuYykuIFdoZW4gYnBmX3Rlc3Rtb2QgaXMgbG9hZGVkIHRoZSBzeW1ib2wgaXNcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9hdHRhY2hfcHJvYmUuYy0yMDMtICogZHVwbGljYXRlZC4gVGVzdCB0aGF0IGtwcm9iZSBhdHRhY2htZW50IGhhbmRsZXMgdGhpcyBjb3JyZWN0bHk6XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvYXR0YWNoX3Byb2JlLmMtMjA0LSAqIC0gVW5xdWFsaWZpZWQgbmFtZSAoXFxcImJwZl9mZW50cnlfc2hhZG93X3Rlc3RcXFwiKSBhdHRhY2hlcyB0byB2bWxpbnV4LlxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2F0dGFjaF9wcm9iZS5jOjIwNTogKiAtIE1PRDpTWU0gbmFtZSAoXFxcImJwZl90ZXN0bW9kOmJwZl9mZW50cnlfc2hhZG93X3Rlc3RcXFwiKSBhdHRhY2hlcyB0byBtb2R1bGUuXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvYXR0YWNoX3Byb2JlLmMtMjA2LSAqXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9hdHRhY2hfcHJvYmUuYz0yMTA9c3RhdGljIHZvaWQgdGVzdF9hdHRhY2hfcHJvYmVfZHVwX3N5bShlbnVtIHByb2JlX2F0dGFjaF9tb2RlIGF0dGFjaF9tb2RlKVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvYXR0YWNoX3Byb2JlLmMtMjQxLVxcdGtwcm9iZV9saW5rID0gYnBmX3Byb2dyYW1fX2F0dGFjaF9rcHJvYmVfb3B0cyhza2VsLVxcdTAwM2Vwcm9ncy5oYW5kbGVfa3Byb2JlLFxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2F0dGFjaF9wcm9iZS5jOjI0MjpcXHRcXHRcXHRcXHRcXHRcXHQgICAgICBcXFwiYnBmX3Rlc3Rtb2Q6YnBmX2ZlbnRyeV9zaGFkb3dfdGVzdFxcXCIsXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvYXR0YWNoX3Byb2JlLmMtMjQzLVxcdFxcdFxcdFxcdFxcdFxcdCAgICAgIFxcdTAwMjZrcHJvYmVfb3B0cyk7XFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9hdHRhY2hfcHJvYmUuYy0yNDktXFx0a3JldHByb2JlX2xpbmsgPSBicGZfcHJvZ3JhbV9fYXR0YWNoX2twcm9iZV9vcHRzKHNrZWwtXFx1MDAzZXByb2dzLmhhbmRsZV9rcmV0cHJvYmUsXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvYXR0YWNoX3Byb2JlLmM6MjUwOlxcdFxcdFxcdFxcdFxcdFxcdFxcdCBcXFwiYnBmX3Rlc3Rtb2Q6YnBmX2ZlbnRyeV9zaGFkb3dfdGVzdFxcXCIsXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvYXR0YWNoX3Byb2JlLmMtMjUxLVxcdFxcdFxcdFxcdFxcdFxcdFxcdCBcXHUwMDI2a3Byb2JlX29wdHMpO1xcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvYXR0YWNoX3Byb2JlLmM9MzA3PXN0YXRpYyB2b2lkIHRlc3RfYXR0YWNoX2twcm9iZV9sb25nX2V2ZW50X25hbWUodm9pZClcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2F0dGFjaF9wcm9iZS5jLTMyMC1cXHRrcHJvYmVfbGluayA9IGJwZl9wcm9ncmFtX19hdHRhY2hfa3Byb2JlX29wdHMoc2tlbC1cXHUwMDNlcHJvZ3MuaGFuZGxlX2twcm9iZSxcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9hdHRhY2hfcHJvYmUuYzozMjE6XFx0XFx0XFx0XFx0XFx0XFx0ICAgICAgXFxcImJwZl90ZXN0bW9kX2xvb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vbmdfbmFtZVxcXCIsXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvYXR0YWNoX3Byb2JlLmMtMzIyLVxcdFxcdFxcdFxcdFxcdFxcdCAgICAgIFxcdTAwMjZrcHJvYmVfb3B0cyk7XFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9hdHRhY2hfcHJvYmUuYy0zMjgtXFx0a3JldHByb2JlX2xpbmsgPSBicGZfcHJvZ3JhbV9fYXR0YWNoX2twcm9iZV9vcHRzKHNrZWwtXFx1MDAzZXByb2dzLmhhbmRsZV9rcmV0cHJvYmUsXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvYXR0YWNoX3Byb2JlLmM6MzI5OlxcdFxcdFxcdFxcdFxcdFxcdFxcdCBcXFwiYnBmX3Rlc3Rtb2RfbG9vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29uZ19uYW1lXFxcIixcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9hdHRhY2hfcHJvYmUuYy0zMzAtXFx0XFx0XFx0XFx0XFx0XFx0XFx0IFxcdTAwMjZrcHJvYmVfb3B0cyk7XFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9icGZfbW9kX3JhY2UuYz00OD1zdGF0aWMgdm9pZCAqbG9hZF9tb2R1bGVfdGhyZWFkKHZvaWQgKnApXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9icGZfbW9kX3JhY2UuYy01MC1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9icGZfbW9kX3JhY2UuYzo1MTpcXHRpZiAoIUFTU0VSVF9ORVEobG9hZF9icGZfdGVzdG1vZChmYWxzZSksIDAsIFxcXCJsb2FkX21vZHVsZV90aHJlYWQgbXVzdCBmYWlsXFxcIikpXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvYnBmX21vZF9yYWNlLmMtNTItXFx0XFx0YXRvbWljX3N0b3JlKFxcdTAwMjZzdGF0ZSwgVFNfTU9EVUxFX0xPQUQpO1xcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvYnBmX21vZF9yYWNlLmM9OTA9c3RhdGljIHZvaWQgdGVzdF9icGZfbW9kX3JhY2VfY29uZmlnKGNvbnN0IHN0cnVjdCB0ZXN0X2NvbmZpZyAqY29uZmlnKVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvYnBmX21vZF9yYWNlLmMtMTAyLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2JwZl9tb2RfcmFjZS5jOjEwMzpcXHRpZiAoIUFTU0VSVF9PSyh1bmxvYWRfYnBmX3Rlc3Rtb2QoZmFsc2UpLCBcXFwidW5sb2FkIGJwZl90ZXN0bW9kXFxcIikpXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvYnBmX21vZF9yYWNlLmMtMTA0LVxcdFxcdGdvdG8gZW5kX21tYXA7XFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9icGZfbW9kX3JhY2UuYy0xODAtZW5kX21vZHVsZTpcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9icGZfbW9kX3JhY2UuYzoxODE6XFx0dW5sb2FkX2JwZl90ZXN0bW9kKGZhbHNlKTtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9icGZfbW9kX3JhY2UuYzoxODI6XFx0QVNTRVJUX09LKGxvYWRfYnBmX3Rlc3Rtb2QoZmFsc2UpLCBcXFwicmVzdG9yZSBicGZfdGVzdG1vZFxcXCIpO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2JwZl9tb2RfcmFjZS5jLTE4My1lbmRfbW1hcDpcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2J0Zl9kZWR1cF9zcGxpdC5jPTM3Mj1zdGF0aWMgdm9pZCB0ZXN0X3NwbGl0X2R1cF9zdHJ1Y3RfaW5fY3UoKVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvYnRmX2RlZHVwX3NwbGl0LmMtNDYyLSAqXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvYnRmX2RlZHVwX3NwbGl0LmM6NDYzOiAqIGJwZl90ZXN0bW9kX3Rlc3Rfd3JpdGUoKSBoYXMgbXVsdGlwbGUgY29yZSBrZXJuZWwgdHlwZSBwYXJhbWV0ZXJzO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2J0Zl9kZWR1cF9zcGxpdC5jLTQ2NC0gKlxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2J0Zl9kZWR1cF9zcGxpdC5jLTQ2NS0gKiBzc2l6ZV90XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvYnRmX2RlZHVwX3NwbGl0LmM6NDY2OiAqIGJwZl90ZXN0bW9kX3Rlc3Rfd3JpdGUoc3RydWN0IGZpbGUgKmZpbGUsIHN0cnVjdCBrb2JqZWN0ICprb2JqLFxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2J0Zl9kZWR1cF9zcGxpdC5jLTQ2Ny0gKiAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBiaW5fYXR0cmlidXRlICpiaW5fYXR0cixcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2J0Zl9kZWR1cF9zcGxpdC5jPTQ4MT1jb25zdCBjaGFyICptb2RfZnVuY3NbXSA9IHtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9idGZfZGVkdXBfc3BsaXQuYzo0ODI6XFx0XFxcImJwZl90ZXN0bW9kX3Rlc3Rfd3JpdGVcXFwiLFxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2J0Zl9kZWR1cF9zcGxpdC5jLTQ4My1cXHRcXFwiYnBmX2tmdW5jX2NhbGxfdGVzdDNcXFwiLFxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvYnRmX2RlZHVwX3NwbGl0LmM9NDg3PXN0YXRpYyB2b2lkIHRlc3Rfc3BsaXRfbW9kdWxlKHZvaWQpXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9idGZfZGVkdXBfc3BsaXQuYy00OTgtXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvYnRmX2RlZHVwX3NwbGl0LmM6NDk5OlxcdGJ0ZjEgPSBidGZfX3BhcnNlX3NwbGl0KFxcXCIvc3lzL2tlcm5lbC9idGYvYnBmX3Rlc3Rtb2RcXFwiLCB2bWxpbnV4X2J0Zik7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvYnRmX2RlZHVwX3NwbGl0LmMtNTAwLVxcdGlmICghQVNTRVJUX09LX1BUUihidGYxLCBcXFwic3BsaXRfYnRmXFxcIikpXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9idGZfZGVkdXBfc3BsaXQuYy01MjItXFx0XFx0Zm9yIChqID0gMCwgcCA9IGJ0Zl9wYXJhbXModCk7IGogXFx1MDAzYyB2bGVuOyBqKyssIHArKykge1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2J0Zl9kZWR1cF9zcGxpdC5jOjUyMzpcXHRcXHRcXHQvKiBicGZfdGVzdG1vZCB1c2VzIHJlc2lsaWVudCBzcGxpdCBCVEYsIHNvIGFueVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2J0Zl9kZWR1cF9zcGxpdC5jLTUyNC1cXHRcXHRcXHQgKiByZWZlcmVuY2UgdHlwZXMgd2lsbCBiZSBhZGRlZCB0byBzcGxpdCBCVEYgYW5kIHRoZWlyXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9idGZfbW9kdWxlLmMtNi1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9idGZfbW9kdWxlLmM6NzpzdGF0aWMgY29uc3QgY2hhciAqbW9kdWxlX25hbWUgPSBcXFwiYnBmX3Rlc3Rtb2RcXFwiO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2J0Zl9tb2R1bGUuYzo4OnN0YXRpYyBjb25zdCBjaGFyICpzeW1ib2xfbmFtZSA9IFxcXCJicGZfdGVzdG1vZF90ZXN0X3JlYWRcXFwiO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2J0Zl9tb2R1bGUuYy05LVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvYnRmX3RhZy5jPTU0PXN0YXRpYyBpbnQgbG9hZF9idGZzKHN0cnVjdCBidGYgKip2bWxpbnV4X2J0Ziwgc3RydWN0IGJ0ZiAqKm1vZHVsZV9idGYsXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9idGZfdGFnLmMtNTYte1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2J0Zl90YWcuYzo1NzpcXHRjb25zdCBjaGFyICptb2R1bGVfbmFtZSA9IFxcXCJicGZfdGVzdG1vZFxcXCI7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvYnRmX3RhZy5jLTU4LVxcdF9fczMyIHR5cGVfaWQ7XFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9jb3JlX3JlbG9jLmMtNC0jaW5jbHVkZSBcXFwicHJvZ3MvY29yZV9yZWxvY190eXBlcy5oXFxcIlxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2NvcmVfcmVsb2MuYzo1OiNpbmNsdWRlIFxcXCJ0ZXN0X2ttb2RzL2JwZl90ZXN0bW9kLmhcXFwiXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvY29yZV9yZWxvYy5jLTYtI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2xpbWl0cy5oXFx1MDAzZVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvY29yZV9yZWxvYy5jPTEyPXN0YXRpYyBpbnQgZHVyYXRpb24gPSAwO1xcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvY29yZV9yZWxvYy5jLTIyLVxcdC5vdXRwdXQgPSBTVFJVQ1RfVE9fQ0hBUl9QVFIoY29yZV9yZWxvY19tb2R1bGVfb3V0cHV0KSB7XFx0XFxcXFxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2NvcmVfcmVsb2MuYzoyMzpcXHRcXHQucmVhZF9jdHhfc3ogPSBzaXplb2Yoc3RydWN0IGJwZl90ZXN0bW9kX3Rlc3RfcmVhZF9jdHgpLFxcXFxcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9jb3JlX3JlbG9jLmMtMjQtXFx0XFx0LnJlYWRfY3R4X2V4aXN0cyA9IHRydWUsXFx0XFx0XFx0XFx0XFxcXFxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvY29yZV9yZWxvYy5jPTU0OT1zdGF0aWMgY29uc3Qgc3RydWN0IGNvcmVfcmVsb2NfdGVzdF9jYXNlIHRlc3RfY2FzZXNbXSA9IHtcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2NvcmVfcmVsb2MuYy01NjgtXFx0LyogdmFsaWRhdGUgd2UgY2FuIGZpbmQga2VybmVsIG1vZHVsZSBCVEYgdHlwZXMgZm9yIHJlbG9jcy9hdHRhY2ggKi9cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9jb3JlX3JlbG9jLmM6NTY5OlxcdE1PRFVMRVNfQ0FTRShcXFwibW9kdWxlX3Byb2JlZFxcXCIsIFxcXCJ0ZXN0X2NvcmVfbW9kdWxlX3Byb2JlZFxcXCIsIFxcXCJicGZfdGVzdG1vZF90ZXN0X3JlYWRcXFwiKSxcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9jb3JlX3JlbG9jLmMtNTcwLVxcdE1PRFVMRVNfQ0FTRShcXFwibW9kdWxlX2RpcmVjdFxcXCIsIFxcXCJ0ZXN0X2NvcmVfbW9kdWxlX2RpcmVjdFxcXCIsIE5VTEwpLFxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvZ2V0X2JyYW5jaF9zbmFwc2hvdC5jPTc2PXZvaWQgc2VyaWFsX3Rlc3RfZ2V0X2JyYW5jaF9zbmFwc2hvdCh2b2lkKVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvZ2V0X2JyYW5jaF9zbmFwc2hvdC5jLTk1LVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2dldF9icmFuY2hfc25hcHNob3QuYzo5NjpcXHRlcnIgPSBrYWxsc3ltc19maW5kKFxcXCJicGZfdGVzdG1vZF9sb29wX3Rlc3RcXFwiLCBcXHUwMDI2c2tlbC1cXHUwMDNlYnNzLVxcdTAwM2VhZGRyZXNzX2xvdyk7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvZ2V0X2JyYW5jaF9zbmFwc2hvdC5jLTk3LVxcdGlmICghQVNTRVJUX09LKGVyciwgXFxcImthbGxzeW1zX2ZpbmRcXFwiKSlcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2twcm9iZV9tdWx0aV90ZXN0LmM9NjYzPXN0YXRpYyB2b2lkIHRlc3RfYXR0YWNoX3dyaXRlX2N0eCh2b2lkKVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMva3Byb2JlX211bHRpX3Rlc3QuYy02NzAtICogVGVzdCBrcHJvYmVfbXVsdGkgaGFuZGxlcyBzaGFkb3cgc3ltYm9scyAodm1saW51eCArIG1vZHVsZSBkdXBsaWNhdGUpLlxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2twcm9iZV9tdWx0aV90ZXN0LmM6NjcxOiAqIGJwZl9mZW50cnlfc2hhZG93X3Rlc3QgZXhpc3RzIGluIGJvdGggdm1saW51eCBhbmQgYnBmX3Rlc3Rtb2QuXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMva3Byb2JlX211bHRpX3Rlc3QuYy02NzItICoga3Byb2JlX211bHRpIHJlc29sdmVzIHZpYSBmdHJhY2VfbG9va3VwX3N5bWJvbHMoKSB3aGljaCBmaW5kcyB0aGVcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2twcm9iZV9tdWx0aV90ZXN0bW9kX3Rlc3QuYz01MD1zdGF0aWMgdm9pZCB0ZXN0X3Rlc3Rtb2RfYXR0YWNoX2FwaV9hZGRycyh2b2lkKVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMva3Byb2JlX211bHRpX3Rlc3Rtb2RfdGVzdC5jLTU0LVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2twcm9iZV9tdWx0aV90ZXN0bW9kX3Rlc3QuYzo1NTpcXHRhZGRyc1swXSA9IGtzeW1fZ2V0X2FkZHJfbG9jYWwoa3N5bXMsIFxcXCJicGZfdGVzdG1vZF9mZW50cnlfdGVzdDFcXFwiKTtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9rcHJvYmVfbXVsdGlfdGVzdG1vZF90ZXN0LmMtNTYtXFx0QVNTRVJUX05FUShhZGRyc1swXSwgMCwgXFxcImtzeW1fZ2V0X2FkZHJfbG9jYWxcXFwiKTtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9rcHJvYmVfbXVsdGlfdGVzdG1vZF90ZXN0LmM6NTc6XFx0YWRkcnNbMV0gPSBrc3ltX2dldF9hZGRyX2xvY2FsKGtzeW1zLCBcXFwiYnBmX3Rlc3Rtb2RfZmVudHJ5X3Rlc3QyXFxcIik7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMva3Byb2JlX211bHRpX3Rlc3Rtb2RfdGVzdC5jLTU4LVxcdEFTU0VSVF9ORVEoYWRkcnNbMV0sIDAsIFxcXCJrc3ltX2dldF9hZGRyX2xvY2FsXFxcIik7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMva3Byb2JlX211bHRpX3Rlc3Rtb2RfdGVzdC5jOjU5OlxcdGFkZHJzWzJdID0ga3N5bV9nZXRfYWRkcl9sb2NhbChrc3ltcywgXFxcImJwZl90ZXN0bW9kX2ZlbnRyeV90ZXN0M1xcXCIpO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2twcm9iZV9tdWx0aV90ZXN0bW9kX3Rlc3QuYy02MC1cXHRBU1NFUlRfTkVRKGFkZHJzWzJdLCAwLCBcXFwia3N5bV9nZXRfYWRkcl9sb2NhbFxcXCIpO1xcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMva3Byb2JlX211bHRpX3Rlc3Rtb2RfdGVzdC5jPTY4PXN0YXRpYyB2b2lkIHRlc3RfdGVzdG1vZF9hdHRhY2hfYXBpX3N5bXModm9pZClcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2twcm9iZV9tdWx0aV90ZXN0bW9kX3Rlc3QuYy03MS1cXHRjb25zdCBjaGFyICpzeW1zWzNdID0ge1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2twcm9iZV9tdWx0aV90ZXN0bW9kX3Rlc3QuYzo3MjpcXHRcXHRcXFwiYnBmX3Rlc3Rtb2RfZmVudHJ5X3Rlc3QxXFxcIixcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9rcHJvYmVfbXVsdGlfdGVzdG1vZF90ZXN0LmM6NzM6XFx0XFx0XFxcImJwZl90ZXN0bW9kX2ZlbnRyeV90ZXN0MlxcXCIsXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMva3Byb2JlX211bHRpX3Rlc3Rtb2RfdGVzdC5jOjc0OlxcdFxcdFxcXCJicGZfdGVzdG1vZF9mZW50cnlfdGVzdDNcXFwiLFxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2twcm9iZV9tdWx0aV90ZXN0bW9kX3Rlc3QuYy03NS1cXHR9O1xcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMva3N5bXNfbW9kdWxlLmM9OT1zdGF0aWMgdm9pZCB0ZXN0X2tzeW1zX21vZHVsZV9sc2tlbCh2b2lkKVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMva3N5bXNfbW9kdWxlLmMtMzAtXFx0QVNTRVJUX0VRKHRvcHRzLnJldHZhbCwgMCwgXFxcInJldHZhbFxcXCIpO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2tzeW1zX21vZHVsZS5jOjMxOlxcdEFTU0VSVF9FUShza2VsLVxcdTAwM2Vic3MtXFx1MDAzZW91dF9icGZfdGVzdG1vZF9rc3ltLCA0MiwgXFxcImJwZl90ZXN0bW9kX2tzeW1cXFwiKTtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9rc3ltc19tb2R1bGUuYy0zMi1jbGVhbnVwOlxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMva3N5bXNfbW9kdWxlLmM9MzY9c3RhdGljIHZvaWQgdGVzdF9rc3ltc19tb2R1bGVfbGliYnBmKHZvaWQpXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9rc3ltc19tb2R1bGUuYy01Ny1cXHRBU1NFUlRfRVEodG9wdHMucmV0dmFsLCAwLCBcXFwicmV0dmFsXFxcIik7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMva3N5bXNfbW9kdWxlLmM6NTg6XFx0QVNTRVJUX0VRKHNrZWwtXFx1MDAzZWJzcy1cXHUwMDNlb3V0X2JwZl90ZXN0bW9kX2tzeW0sIDQyLCBcXFwiYnBmX3Rlc3Rtb2Rfa3N5bVxcXCIpO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2tzeW1zX21vZHVsZS5jLTU5LWNsZWFudXA6XFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9tb2R1bGVfYXR0YWNoLmM9MTI5PXN0YXRpYyB2b2lkIHRlc3RfbW9kdWxlX2F0dGFjaF9kZXRhY2goY29uc3QgY2hhciAqcHJvZ19uYW1lKVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvbW9kdWxlX2F0dGFjaC5jLTE1My1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9tb2R1bGVfYXR0YWNoLmM6MTU0OlxcdEFTU0VSVF9FUlIodHJ5X3VubG9hZF9tb2R1bGUoXFxcImJwZl90ZXN0bW9kXFxcIiwgMSwgZmFsc2UpLCBcXFwidHJ5X3VubG9hZF9tb2R1bGVcXFwiKTtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9tb2R1bGVfYXR0YWNoLmMtMTU1LVxcdGJwZl9saW5rX19kZXN0cm95KGxpbmspO1xcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvbW9kdWxlX2F0dGFjaC5jPTE2MD12b2lkIHRlc3RfbW9kdWxlX2F0dGFjaCh2b2lkKVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvbW9kdWxlX2F0dGFjaC5jLTE3NC1cXHRcXHR0ZXN0X21vZHVsZV9hdHRhY2hfcHJvZyhcXFwiaGFuZGxlX2ZlbnRyeV9tYW51YWxcXFwiLCBSRUFEX1NaLFxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL21vZHVsZV9hdHRhY2guYzoxNzU6XFx0XFx0XFx0XFx0XFx0XFxcImJwZl90ZXN0bW9kX3Rlc3RfcmVhZFxcXCIsIDApO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL21vZHVsZV9hdHRhY2guYy0xNzYtXFx0fVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvbW9kdWxlX2F0dGFjaC5jLTE3OS1cXHRcXHRcXHRcXHRcXHRSRUFEX1NaLFxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL21vZHVsZV9hdHRhY2guYzoxODA6XFx0XFx0XFx0XFx0XFx0XFxcImJwZl90ZXN0bW9kOmJwZl90ZXN0bW9kX3Rlc3RfcmVhZFxcXCIsIDApO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL21vZHVsZV9hdHRhY2guYy0xODEtXFx0fVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvbW9kdWxlX2ZlbnRyeV9zaGFkb3cuYy04LVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL21vZHVsZV9mZW50cnlfc2hhZG93LmM6OTpzdGF0aWMgY29uc3QgY2hhciAqbW9kdWxlX25hbWUgPSBcXFwiYnBmX3Rlc3Rtb2RcXFwiO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL21vZHVsZV9mZW50cnlfc2hhZG93LmMtMTAtc3RhdGljIGNvbnN0IGNoYXIgKnN5bWJvbF9uYW1lID0gXFxcImJwZl9mZW50cnlfc2hhZG93X3Rlc3RcXFwiO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL21vZHVsZV9mZW50cnlfc2hhZG93LmMtMTEtXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvbW9kdWxlX2ZlbnRyeV9zaGFkb3cuYzoxMjpzdGF0aWMgaW50IGdldF9icGZfdGVzdG1vZF9idGZfZmQodm9pZClcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9tb2R1bGVfZmVudHJ5X3NoYWRvdy5jLTEzLXtcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL21vZHVsZV9mZW50cnlfc2hhZG93LmM9NTY9dm9pZCB0ZXN0X21vZHVsZV9mZW50cnlfc2hhZG93KHZvaWQpXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9tb2R1bGVfZmVudHJ5X3NoYWRvdy5jLTgyLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL21vZHVsZV9mZW50cnlfc2hhZG93LmM6ODM6XFx0YnRmX2ZkWzFdID0gZ2V0X2JwZl90ZXN0bW9kX2J0Zl9mZCgpO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL21vZHVsZV9mZW50cnlfc2hhZG93LmM6ODQ6XFx0aWYgKCFBU1NFUlRfR0UoYnRmX2ZkWzFdLCAwLCBcXFwiZ2V0X2JwZl90ZXN0bW9kX2J0Zl9mZFxcXCIpKVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL21vZHVsZV9mZW50cnlfc2hhZG93LmMtODUtXFx0XFx0Z290byBvdXQ7XFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9tb2R1bGVfZmVudHJ5X3NoYWRvdy5jLTExMC1cXHRcXHQgKiBzaGFkb3dlZCBmdW5jdGlvbnMgYW5kIHVzZXMgdGhlIHNhbWUgYWRkcmVzcyBmb3IgYm90aCB0aGVcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9tb2R1bGVfZmVudHJ5X3NoYWRvdy5jOjExMTpcXHRcXHQgKiB2bWxpbnV4IGFuZCB0aGUgYnBmX3Rlc3Rtb2QgZnVuY3Rpb25zLCB0aGlzIHdpbGwgZmFpbCBvblxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL21vZHVsZV9mZW50cnlfc2hhZG93LmMtMTEyLVxcdFxcdCAqIGF0dGVtcHRpbmcgdG8gY3JlYXRlIHR3byB0cmFtcG9saW5lcyBmb3IgdGhlIHNhbWUgYWRkcmVzcyxcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3Jhd190cF93cml0YWJsZV9yZWplY3RfYmFkX2FjY2Vzcy5jLTMtI2luY2x1ZGUgXFx1MDAzY3Rlc3RfcHJvZ3MuaFxcdTAwM2VcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9yYXdfdHBfd3JpdGFibGVfcmVqZWN0X2JhZF9hY2Nlc3MuYzo0OiNpbmNsdWRlIFxcXCJ0ZXN0X2ttb2RzL2JwZl90ZXN0bW9kLmhcXFwiXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvcmF3X3RwX3dyaXRhYmxlX3JlamVjdF9iYWRfYWNjZXNzLmMtNS0jaW5jbHVkZSBcXFwiYnBmX3V0aWwuaFxcXCJcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3Jhd190cF93cml0YWJsZV9yZWplY3RfYmFkX2FjY2Vzcy5jPTc9c3RhdGljIHZvaWQgY2hlY2tfYXR0YWNoX3JlamVjdChjb25zdCBzdHJ1Y3QgYnBmX2luc24gKnByb2dyYW0sIHNpemVfdCBwcm9nX2xlbilcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3Jhd190cF93cml0YWJsZV9yZWplY3RfYmFkX2FjY2Vzcy5jLTIxLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3Jhd190cF93cml0YWJsZV9yZWplY3RfYmFkX2FjY2Vzcy5jOjIyOlxcdHRwX2ZkID0gYnBmX3Jhd190cmFjZXBvaW50X29wZW4oXFxcImJwZl90ZXN0bW9kX3Rlc3Rfd3JpdGFibGVfYmFyZV90cFxcXCIsIGJwZl9mZCk7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvcmF3X3RwX3dyaXRhYmxlX3JlamVjdF9iYWRfYWNjZXNzLmMtMjMtXFx0QVNTRVJUX0VRKHRwX2ZkLCAtRUlOVkFMLCBcXFwiYnBmX3Jhd190cmFjZXBvaW50X29wZW5cXFwiKTtcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3Jhd190cF93cml0YWJsZV9yZWplY3RfYmFkX2FjY2Vzcy5jPTMwPXZvaWQgdGVzdF9yYXdfdHBfd3JpdGFibGVfcmVqZWN0X2JhZF9hY2Nlc3Modm9pZClcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3Jhd190cF93cml0YWJsZV9yZWplY3RfYmFkX2FjY2Vzcy5jLTM2LVxcdFxcdEJQRl9MRFhfTUVNKEJQRl9CLCBCUEZfUkVHXzAsIEJQRl9SRUdfNixcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9yYXdfdHBfd3JpdGFibGVfcmVqZWN0X2JhZF9hY2Nlc3MuYzozNzpcXHRcXHRcXHQgICAgc2l6ZW9mKHN0cnVjdCBicGZfdGVzdG1vZF90ZXN0X3dyaXRhYmxlX2N0eCkpLFxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3Jhd190cF93cml0YWJsZV9yZWplY3RfYmFkX2FjY2Vzcy5jLTM4LVxcdFxcdEJQRl9FWElUX0lOU04oKSxcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3Jhd190cF93cml0YWJsZV9yZWplY3RfYmFkX2FjY2Vzcy5jLTQ2LVxcdFxcdEJQRl9MRFhfTUVNKEJQRl9CLCBCUEZfUkVHXzAsIEJQRl9SRUdfNixcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9yYXdfdHBfd3JpdGFibGVfcmVqZWN0X2JhZF9hY2Nlc3MuYzo0NzpcXHRcXHRcXHQgICAgc2l6ZW9mKHN0cnVjdCBicGZfdGVzdG1vZF90ZXN0X3dyaXRhYmxlX2N0eCkgKyA4KSxcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9yYXdfdHBfd3JpdGFibGVfcmVqZWN0X2JhZF9hY2Nlc3MuYy00OC1cXHRcXHRCUEZfRVhJVF9JTlNOKCksXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zdGFja3RyYWNlX2lwcy5jPTUwPXN0YXRpYyB2b2lkIHRlc3Rfc3RhY2t0cmFjZV9pcHNfa3Byb2JlX211bHRpKGJvb2wgcmV0cHJvYmUpXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zdGFja3RyYWNlX2lwcy5jLTY4LVxcdFxcdFxcdFxcdFxcdFxcdFxcdHNrZWwtXFx1MDAzZXByb2dzLmtwcm9iZV9tdWx0aV90ZXN0LFxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3N0YWNrdHJhY2VfaXBzLmM6Njk6XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcImJwZl90ZXN0bW9kX3N0YWNrdHJhY2VfdGVzdFxcXCIsIFxcdTAwMjZvcHRzKTtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zdGFja3RyYWNlX2lwcy5jLTcwLVxcdGlmICghQVNTRVJUX09LX1BUUihza2VsLVxcdTAwM2VsaW5rcy5rcHJvYmVfbXVsdGlfdGVzdCwgXFxcImJwZl9wcm9ncmFtX19hdHRhY2hfa3Byb2JlX211bHRpX29wdHNcXFwiKSlcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3N0YWNrdHJhY2VfaXBzLmMtNzgtXFx0XFx0Y2hlY2tfc3RhY2t0cmFjZV9pcHMoYnBmX21hcF9fZmQoc2tlbC1cXHUwMDNlbWFwcy5zdGFja21hcCksIHNrZWwtXFx1MDAzZWJzcy1cXHUwMDNlc3RhY2tfa2V5LCA0LFxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3N0YWNrdHJhY2VfaXBzLmM6Nzk6XFx0XFx0XFx0XFx0ICAgICBrc3ltX2dldF9hZGRyKFxcXCJicGZfdGVzdG1vZF9zdGFja3RyYWNlX3Rlc3RfM1xcXCIpLFxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3N0YWNrdHJhY2VfaXBzLmM6ODA6XFx0XFx0XFx0XFx0ICAgICBrc3ltX2dldF9hZGRyKFxcXCJicGZfdGVzdG1vZF9zdGFja3RyYWNlX3Rlc3RfMlxcXCIpLFxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3N0YWNrdHJhY2VfaXBzLmM6ODE6XFx0XFx0XFx0XFx0ICAgICBrc3ltX2dldF9hZGRyKFxcXCJicGZfdGVzdG1vZF9zdGFja3RyYWNlX3Rlc3RfMVxcXCIpLFxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3N0YWNrdHJhY2VfaXBzLmM6ODI6XFx0XFx0XFx0XFx0ICAgICBrc3ltX2dldF9hZGRyKFxcXCJicGZfdGVzdG1vZF90ZXN0X3JlYWRcXFwiKSk7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc3RhY2t0cmFjZV9pcHMuYy04My1cXHR9IGVsc2Uge1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3N0YWNrdHJhY2VfaXBzLmMtODQtXFx0XFx0Y2hlY2tfc3RhY2t0cmFjZV9pcHMoYnBmX21hcF9fZmQoc2tlbC1cXHUwMDNlbWFwcy5zdGFja21hcCksIHNrZWwtXFx1MDAzZWJzcy1cXHUwMDNlc3RhY2tfa2V5LCA1LFxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3N0YWNrdHJhY2VfaXBzLmM6ODU6XFx0XFx0XFx0XFx0ICAgICBrc3ltX2dldF9hZGRyKFxcXCJicGZfdGVzdG1vZF9zdGFja3RyYWNlX3Rlc3RcXFwiKSxcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zdGFja3RyYWNlX2lwcy5jOjg2OlxcdFxcdFxcdFxcdCAgICAga3N5bV9nZXRfYWRkcihcXFwiYnBmX3Rlc3Rtb2Rfc3RhY2t0cmFjZV90ZXN0XzNcXFwiKSxcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zdGFja3RyYWNlX2lwcy5jOjg3OlxcdFxcdFxcdFxcdCAgICAga3N5bV9nZXRfYWRkcihcXFwiYnBmX3Rlc3Rtb2Rfc3RhY2t0cmFjZV90ZXN0XzJcXFwiKSxcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zdGFja3RyYWNlX2lwcy5jOjg4OlxcdFxcdFxcdFxcdCAgICAga3N5bV9nZXRfYWRkcihcXFwiYnBmX3Rlc3Rtb2Rfc3RhY2t0cmFjZV90ZXN0XzFcXFwiKSxcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zdGFja3RyYWNlX2lwcy5jOjg5OlxcdFxcdFxcdFxcdCAgICAga3N5bV9nZXRfYWRkcihcXFwiYnBmX3Rlc3Rtb2RfdGVzdF9yZWFkXFxcIikpO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3N0YWNrdHJhY2VfaXBzLmMtOTAtXFx0fVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc3RhY2t0cmFjZV9pcHMuYz05Nj1zdGF0aWMgdm9pZCB0ZXN0X3N0YWNrdHJhY2VfaXBzX3Jhd190cCh2b2lkKVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc3RhY2t0cmFjZV9pcHMuYy0xMTUtXFx0XFx0XFx0XFx0XFx0XFx0XFx0c2tlbC1cXHUwMDNlcHJvZ3MucmF3dHBfdGVzdCxcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zdGFja3RyYWNlX2lwcy5jOjExNjpcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFwiYnBmX3Rlc3Rtb2RfdGVzdF9yZWFkXFxcIik7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc3RhY2t0cmFjZV9pcHMuYy0xMTctXFx0aWYgKCFBU1NFUlRfT0tfUFRSKHNrZWwtXFx1MDAzZWxpbmtzLnJhd3RwX3Rlc3QsIFxcXCJicGZfcHJvZ3JhbV9fYXR0YWNoX3Jhd190cmFjZXBvaW50XFxcIikpXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zdGFja3RyYWNlX2lwcy5jPTE0MD1zdGF0aWMgdm9pZCB0ZXN0X3N0YWNrdHJhY2VfaXBzX2twcm9iZShib29sIHJldHByb2JlKVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc3RhY2t0cmFjZV9pcHMuYy0xNTgtXFx0XFx0XFx0XFx0XFx0XFx0c2tlbC1cXHUwMDNlcHJvZ3Mua3Byb2JlX3Rlc3QsXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc3RhY2t0cmFjZV9pcHMuYzoxNTk6XFx0XFx0XFx0XFx0XFx0XFx0XFxcImJwZl90ZXN0bW9kX3N0YWNrdHJhY2VfdGVzdFxcXCIsIFxcdTAwMjZvcHRzKTtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zdGFja3RyYWNlX2lwcy5jLTE2MC1cXHRpZiAoIUFTU0VSVF9PS19QVFIoc2tlbC1cXHUwMDNlbGlua3Mua3Byb2JlX3Rlc3QsIFxcXCJicGZfcHJvZ3JhbV9fYXR0YWNoX2twcm9iZV9vcHRzXFxcIikpXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zdGFja3RyYWNlX2lwcy5jLTE2OC1cXHRcXHRjaGVja19zdGFja3RyYWNlX2lwcyhicGZfbWFwX19mZChza2VsLVxcdTAwM2VtYXBzLnN0YWNrbWFwKSwgc2tlbC1cXHUwMDNlYnNzLVxcdTAwM2VzdGFja19rZXksIDQsXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc3RhY2t0cmFjZV9pcHMuYzoxNjk6XFx0XFx0XFx0XFx0ICAgICBrc3ltX2dldF9hZGRyKFxcXCJicGZfdGVzdG1vZF9zdGFja3RyYWNlX3Rlc3RfM1xcXCIpLFxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3N0YWNrdHJhY2VfaXBzLmM6MTcwOlxcdFxcdFxcdFxcdCAgICAga3N5bV9nZXRfYWRkcihcXFwiYnBmX3Rlc3Rtb2Rfc3RhY2t0cmFjZV90ZXN0XzJcXFwiKSxcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zdGFja3RyYWNlX2lwcy5jOjE3MTpcXHRcXHRcXHRcXHQgICAgIGtzeW1fZ2V0X2FkZHIoXFxcImJwZl90ZXN0bW9kX3N0YWNrdHJhY2VfdGVzdF8xXFxcIiksXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc3RhY2t0cmFjZV9pcHMuYzoxNzI6XFx0XFx0XFx0XFx0ICAgICBrc3ltX2dldF9hZGRyKFxcXCJicGZfdGVzdG1vZF90ZXN0X3JlYWRcXFwiKSk7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc3RhY2t0cmFjZV9pcHMuYy0xNzMtXFx0fSBlbHNlIHtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zdGFja3RyYWNlX2lwcy5jLTE3NC1cXHRcXHRjaGVja19zdGFja3RyYWNlX2lwcyhicGZfbWFwX19mZChza2VsLVxcdTAwM2VtYXBzLnN0YWNrbWFwKSwgc2tlbC1cXHUwMDNlYnNzLVxcdTAwM2VzdGFja19rZXksIDUsXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc3RhY2t0cmFjZV9pcHMuYzoxNzU6XFx0XFx0XFx0XFx0ICAgICBrc3ltX2dldF9hZGRyKFxcXCJicGZfdGVzdG1vZF9zdGFja3RyYWNlX3Rlc3RcXFwiKSxcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zdGFja3RyYWNlX2lwcy5jOjE3NjpcXHRcXHRcXHRcXHQgICAgIGtzeW1fZ2V0X2FkZHIoXFxcImJwZl90ZXN0bW9kX3N0YWNrdHJhY2VfdGVzdF8zXFxcIiksXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc3RhY2t0cmFjZV9pcHMuYzoxNzc6XFx0XFx0XFx0XFx0ICAgICBrc3ltX2dldF9hZGRyKFxcXCJicGZfdGVzdG1vZF9zdGFja3RyYWNlX3Rlc3RfMlxcXCIpLFxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3N0YWNrdHJhY2VfaXBzLmM6MTc4OlxcdFxcdFxcdFxcdCAgICAga3N5bV9nZXRfYWRkcihcXFwiYnBmX3Rlc3Rtb2Rfc3RhY2t0cmFjZV90ZXN0XzFcXFwiKSxcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zdGFja3RyYWNlX2lwcy5jOjE3OTpcXHRcXHRcXHRcXHQgICAgIGtzeW1fZ2V0X2FkZHIoXFxcImJwZl90ZXN0bW9kX3Rlc3RfcmVhZFxcXCIpKTtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zdGFja3RyYWNlX2lwcy5jLTE4MC1cXHR9XFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zdGFja3RyYWNlX2lwcy5jPTE4Nj1zdGF0aWMgdm9pZCB0ZXN0X3N0YWNrdHJhY2VfaXBzX3RyYW1wb2xpbmUoYm9vbCByZXRwcm9iZSlcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3N0YWNrdHJhY2VfaXBzLmMtMjE1LVxcdFxcdGNoZWNrX3N0YWNrdHJhY2VfaXBzKGJwZl9tYXBfX2ZkKHNrZWwtXFx1MDAzZW1hcHMuc3RhY2ttYXApLCBza2VsLVxcdTAwM2Vic3MtXFx1MDAzZXN0YWNrX2tleSwgNCxcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zdGFja3RyYWNlX2lwcy5jOjIxNjpcXHRcXHRcXHRcXHQgICAgIGtzeW1fZ2V0X2FkZHIoXFxcImJwZl90ZXN0bW9kX3N0YWNrdHJhY2VfdGVzdF8zXFxcIiksXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc3RhY2t0cmFjZV9pcHMuYzoyMTc6XFx0XFx0XFx0XFx0ICAgICBrc3ltX2dldF9hZGRyKFxcXCJicGZfdGVzdG1vZF9zdGFja3RyYWNlX3Rlc3RfMlxcXCIpLFxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3N0YWNrdHJhY2VfaXBzLmM6MjE4OlxcdFxcdFxcdFxcdCAgICAga3N5bV9nZXRfYWRkcihcXFwiYnBmX3Rlc3Rtb2Rfc3RhY2t0cmFjZV90ZXN0XzFcXFwiKSxcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zdGFja3RyYWNlX2lwcy5jOjIxOTpcXHRcXHRcXHRcXHQgICAgIGtzeW1fZ2V0X2FkZHIoXFxcImJwZl90ZXN0bW9kX3Rlc3RfcmVhZFxcXCIpKTtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zdGFja3RyYWNlX2lwcy5jLTIyMC1cXHR9IGVsc2Uge1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3N0YWNrdHJhY2VfaXBzLmMtMjIxLVxcdFxcdGNoZWNrX3N0YWNrdHJhY2VfaXBzKGJwZl9tYXBfX2ZkKHNrZWwtXFx1MDAzZW1hcHMuc3RhY2ttYXApLCBza2VsLVxcdTAwM2Vic3MtXFx1MDAzZXN0YWNrX2tleSwgNSxcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zdGFja3RyYWNlX2lwcy5jOjIyMjpcXHRcXHRcXHRcXHQgICAgIGtzeW1fZ2V0X2FkZHIoXFxcImJwZl90ZXN0bW9kX3N0YWNrdHJhY2VfdGVzdFxcXCIpLFxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3N0YWNrdHJhY2VfaXBzLmM6MjIzOlxcdFxcdFxcdFxcdCAgICAga3N5bV9nZXRfYWRkcihcXFwiYnBmX3Rlc3Rtb2Rfc3RhY2t0cmFjZV90ZXN0XzNcXFwiKSxcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zdGFja3RyYWNlX2lwcy5jOjIyNDpcXHRcXHRcXHRcXHQgICAgIGtzeW1fZ2V0X2FkZHIoXFxcImJwZl90ZXN0bW9kX3N0YWNrdHJhY2VfdGVzdF8yXFxcIiksXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc3RhY2t0cmFjZV9pcHMuYzoyMjU6XFx0XFx0XFx0XFx0ICAgICBrc3ltX2dldF9hZGRyKFxcXCJicGZfdGVzdG1vZF9zdGFja3RyYWNlX3Rlc3RfMVxcXCIpLFxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3N0YWNrdHJhY2VfaXBzLmM6MjI2OlxcdFxcdFxcdFxcdCAgICAga3N5bV9nZXRfYWRkcihcXFwiYnBmX3Rlc3Rtb2RfdGVzdF9yZWFkXFxcIikpO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3N0YWNrdHJhY2VfaXBzLmMtMjI3LVxcdH1cXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3N0cnVjdF9vcHNfYXV0b2NyZWF0ZS5jPTc9c3RhdGljIHZvaWQgY2FudF9sb2FkX2Z1bGxfb2JqZWN0KHZvaWQpXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zdHJ1Y3Rfb3BzX2F1dG9jcmVhdGUuYy0xOC1cXHRcXHRnb3RvIGNsZWFudXA7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc3RydWN0X29wc19hdXRvY3JlYXRlLmM6MTk6XFx0LyogVGhlIHRlc3Rtb2RfMiBtYXAgQlRGIHR5cGUgKHN0cnVjdCBicGZfdGVzdG1vZF9vcHNfX192MikgZG9lc24ndFxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3N0cnVjdF9vcHNfYXV0b2NyZWF0ZS5jOjIwOlxcdCAqIG1hdGNoIHRoZSBCVEYgb2YgdGhlIGFjdHVhbCBzdHJ1Y3QgYnBmX3Rlc3Rtb2Rfb3BzIGRlZmluZWQgaW4gdGhlXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc3RydWN0X29wc19hdXRvY3JlYXRlLmMtMjEtXFx0ICoga2VybmVsLCBzbyB3ZSBzaG91bGQgZmFpbCB0byBsb2FkIGl0IGlmIHdlIGRvbid0IGRpc2FibGUgYXV0b2NyZWF0ZVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc3RydWN0X29wc19hdXRvY3JlYXRlLmM9Mzc9c3RhdGljIGludCBjaGVja190ZXN0XzFfbGluayhzdHJ1Y3Qgc3RydWN0X29wc19hdXRvY3JlYXRlICpza2VsLCBzdHJ1Y3QgYnBmX21hcCAqbWFwKVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc3RydWN0X29wc19hdXRvY3JlYXRlLmMtNDUtXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc3RydWN0X29wc19hdXRvY3JlYXRlLmM6NDY6XFx0LyogdGVzdF8xKCkgd291bGQgYmUgY2FsbGVkIGZyb20gYnBmX2R1bW15X3JlZzIoKSBpbiBicGZfdGVzdG1vZC5jICovXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc3RydWN0X29wc19hdXRvY3JlYXRlLmMtNDctXFx0ZXJyID0gQVNTRVJUX0VRKHNrZWwtXFx1MDAzZWJzcy1cXHUwMDNldGVzdF8xX3Jlc3VsdCwgNDIsIFxcXCJ0ZXN0XzFfcmVzdWx0XFxcIik7XFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zdHJ1Y3Rfb3BzX2F1dG9jcmVhdGUuYz0xMTQ9c3RhdGljIHZvaWQgYXV0b2xvYWRfYW5kX3NoYWRvd192YXJzKHZvaWQpXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zdHJ1Y3Rfb3BzX2F1dG9jcmVhdGUuYy0xNDAtXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc3RydWN0X29wc19hdXRvY3JlYXRlLmM6MTQxOlxcdC8qIHRlc3RfMSgpIHdvdWxkIGJlIGNhbGxlZCBmcm9tIGJwZl9kdW1teV9yZWcyKCkgaW4gYnBmX3Rlc3Rtb2QuYyAqL1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3N0cnVjdF9vcHNfYXV0b2NyZWF0ZS5jLTE0Mi1cXHRlcnIgPSBBU1NFUlRfRVEoc2tlbC1cXHUwMDNlYnNzLVxcdTAwM2V0ZXN0XzFfcmVzdWx0LCA0MiwgXFxcInRlc3RfMV9yZXN1bHRcXFwiKTtcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3Rlc3Rfc3RydWN0X29wc19hcmVuYS5jLTExLSAqIEF0dGFjaCBjYWxsYmFja3Mgd2l0aCBfX2FyZW5hIGFuZCBfX2FyZW5hX19udWxsYWJsZSBhcmd1bWVudHMgYW5kIGRyaXZlXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvdGVzdF9zdHJ1Y3Rfb3BzX2FyZW5hLmM6MTI6ICogdGhlbSB0aHJvdWdoIHRoZSBicGZfdGVzdG1vZF9vcHMzX2NhbGxfdGVzdF9hcmVuYSooKSBrZnVuY3MuXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvdGVzdF9zdHJ1Y3Rfb3BzX2FyZW5hLmMtMTMtICovXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy90ZXN0X3N0cnVjdF9vcHNfYXJlbmEuYz04OD1zdGF0aWMgdm9pZCBhcmVuYV9hcmdfYXR0YWNoKHZvaWQpXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy90ZXN0X3N0cnVjdF9vcHNfYXJlbmEuYy0xMDYtLypcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy90ZXN0X3N0cnVjdF9vcHNfYXJlbmEuYzoxMDc6ICogU2VyaWFsaXplZCBiZWNhdXNlIGl0IGF0dGFjaGVzIHRoZSBzaW5nbGV0b24gYnBmX3Rlc3Rtb2Rfb3BzMywgd2hpY2hcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy90ZXN0X3N0cnVjdF9vcHNfYXJlbmEuYy0xMDgtICogdGVzdF9zdHJ1Y3Rfb3BzX3ByaXZhdGVfc3RhY2sgYWxzbyBhdHRhY2hlczsgcmVnaXN0ZXJpbmcgaXQgdHdpY2UgZmFpbHNcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3Rlc3Rfc3RydWN0X29wc19tb2R1bGUuYz0xND1zdGF0aWMgdm9pZCBjaGVja19tYXBfaW5mbyhzdHJ1Y3QgYnBmX21hcF9pbmZvICppbmZvKVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvdGVzdF9zdHJ1Y3Rfb3BzX21vZHVsZS5jLTMxLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3Rlc3Rfc3RydWN0X29wc19tb2R1bGUuYzozMjpcXHRpZiAoIUFTU0VSVF9FUShzdHJjbXAoYnRmX25hbWUsIFxcXCJicGZfdGVzdG1vZFxcXCIpLCAwLCBcXFwiZ2V0X3ZhbHVlX3R5cGVfYnRmX29ial9uYW1lXFxcIikpXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvdGVzdF9zdHJ1Y3Rfb3BzX21vZHVsZS5jLTMzLVxcdFxcdGdvdG8gY2xlYW51cDtcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3Rlc3Rfc3RydWN0X29wc19tb2R1bGUuYz0zOT1zdGF0aWMgaW50IGF0dGFjaF9vcHNfYW5kX2NoZWNrKHN0cnVjdCBzdHJ1Y3Rfb3BzX21vZHVsZSAqc2tlbCxcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3Rlc3Rfc3RydWN0X29wc19tb2R1bGUuYy00OS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy90ZXN0X3N0cnVjdF9vcHNfbW9kdWxlLmM6NTA6XFx0LyogdGVzdF97MSwyfSgpIHdvdWxkIGJlIGNhbGxlZCBmcm9tIGJwZl9kdW1teV9yZWcoKSBpbiBicGZfdGVzdG1vZC5jICovXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvdGVzdF9zdHJ1Y3Rfb3BzX21vZHVsZS5jLTUxLVxcdEFTU0VSVF9FUShza2VsLVxcdTAwM2Vic3MtXFx1MDAzZXRlc3RfMV9yZXN1bHQsIDB4ZGVhZGJlZWYsIFxcXCJ0ZXN0XzFfcmVzdWx0XFxcIik7XFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy90ZXN0X3N0cnVjdF9vcHNfbW9kdWxlLmM9NTg9c3RhdGljIHZvaWQgdGVzdF9zdHJ1Y3Rfb3BzX2xvYWQodm9pZClcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3Rlc3Rfc3RydWN0X29wc19tb2R1bGUuYy04Ny1cXHRjaGVja19tYXBfaW5mbyhcXHUwMDI2aW5mbyk7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvdGVzdF9zdHJ1Y3Rfb3BzX21vZHVsZS5jOjg4OlxcdC8qIHRlc3RfMygpIHdpbGwgYmUgY2FsbGVkIGZyb20gYnBmX2R1bW15X3JlZygpIGluIGJwZl90ZXN0bW9kLmNcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy90ZXN0X3N0cnVjdF9vcHNfbW9kdWxlLmMtODktXFx0ICpcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy90ZXN0X3N0cnVjdF9vcHNfbW9kdWxlLmM6OTA6XFx0ICogSW4gYnBmX3Rlc3Rtb2QuYyBpdCB3aWxsIHBhc3MgNCBhbmQgMTMgKHRoZSB2YWx1ZSBvZiBkYXRhKSB0b1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3Rlc3Rfc3RydWN0X29wc19tb2R1bGUuYy05MS1cXHQgKiAudGVzdF8yLiAgU28sIHRoZSB2YWx1ZSBvZiB0ZXN0XzJfcmVzdWx0IHNob3VsZCBiZSAyMCAoNCArIDEzICtcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3Rlc3Rfc3RydWN0X29wc19tb2R1bGUuYz0xMDM9c3RhdGljIHZvaWQgdGVzdF9zdHJ1Y3Rfb3BzX25vdF96ZXJvZWQodm9pZClcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3Rlc3Rfc3RydWN0X29wc19tb2R1bGUuYy0xMjctXFx0LyogbGliYnBmIHNob3VsZCByZWplY3QgdGhlIHRlc3Rtb2RfemVyb2VkIHNpbmNlIHN0cnVjdFxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3Rlc3Rfc3RydWN0X29wc19tb2R1bGUuYzoxMjg6XFx0ICogYnBmX3Rlc3Rtb2Rfb3BzIGluIHRoZSBrZXJuZWwgaGFzIG5vIFxcXCJ6ZXJvZWRcXFwiIGZpZWxkIGFuZCB0aGVcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy90ZXN0X3N0cnVjdF9vcHNfbW9kdWxlLmMtMTI5LVxcdCAqIHZhbHVlIG9mIFxcXCJ6ZXJvZWRcXFwiIGlzIG5vbi16ZXJvLlxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvdHBfYnRmX2lkcy5jLTYtI2RlZmluZSBERUJVR0ZTX1RSQUNJTkdcXHRcXFwiL3N5cy9rZXJuZWwvZGVidWcvdHJhY2luZ1xcXCJcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy90cF9idGZfaWRzLmM6NzojZGVmaW5lIEVWRU5UX1NVQlBBVEhcXHRcXFwiZXZlbnRzL2JwZl90ZXN0bW9kL2JwZl90ZXN0bW9kX3Rlc3RfcmVhZC9idGZfaWRzXFxcIlxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3RwX2J0Zl9pZHMuYy04LVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvdHBfYnRmX2lkcy5jPTU2PXZvaWQgdGVzdF90cF9idGZfaWRzKHZvaWQpXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy90cF9idGZfaWRzLmMtOTItXFx0ICogICB2b2lkICpfX2RhdGEsIHN0cnVjdCB0YXNrX3N0cnVjdCAqdGFzayxcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy90cF9idGZfaWRzLmM6OTM6XFx0ICogICBzdHJ1Y3QgYnBmX3Rlc3Rtb2RfdGVzdF9yZWFkX2N0eCAqY3R4XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvdHBfYnRmX2lkcy5jLTk0LVxcdCAqL1xcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvdHBfYnRmX2lkcy5jLTExNy1cXHRuYW1lID0gYnRmX19uYW1lX2J5X29mZnNldChidGYsIHJlY190LVxcdTAwM2VuYW1lX29mZik7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvdHBfYnRmX2lkcy5jOjExODpcXHRBU1NFUlRfU1RSRVEobmFtZSwgXFxcInRyYWNlX2V2ZW50X3Jhd19icGZfdGVzdG1vZF90ZXN0X3JlYWRcXFwiLFxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3RwX2J0Zl9pZHMuYy0xMTktXFx0XFx0ICAgICBcXFwidHAgc3RydWN0IG5hbWVcXFwiKTtcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3RyYWNpbmdfZmFpbHVyZS5jPTc5PXN0YXRpYyB2b2lkIHRlc3RfZmV4aXRfaW50MTI4X3JldCh2b2lkKVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvdHJhY2luZ19mYWlsdXJlLmMtODItXFx0ICogX19pbnQxMjggaXMgcmV0dXJuZWQgaW4gYSByZWdpc3RlciBwYWlyIG9uIHg4Nl82NCBhbmQgYXJtNjQsIHNvXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvdHJhY2luZ19mYWlsdXJlLmM6ODM6XFx0ICogYnBmX3Rlc3Rtb2RfdGVzdF9pbnQxMjhfcmV0KCkgaXMgQlRGLWVuY29kZWQgYW5kIGF0dGFjaGFibGUgYW5kIHRoZVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3RyYWNpbmdfZmFpbHVyZS5jLTg0LVxcdCAqIHZlcmlmaWVyIGNhbiByZWplY3QgaXRzIFxcdTAwM2U4IGJ5dGUgcmV0dXJuIHZhbHVlLiBPdGhlciBhcmNoaXRlY3R1cmVzXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy90cmFjaW5nX211bHRpLmM9MzA9c3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBicGZfZmVudHJ5X3Rlc3RbXSA9IHtcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3RyYWNpbmdfbXVsdGkuYy00Mi1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy90cmFjaW5nX211bHRpLmM6NDM6c3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBicGZfdGVzdG1vZF9mZW50cnlfdGVzdFtdID0ge1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3RyYWNpbmdfbXVsdGkuYzo0NDpcXHRcXFwiYnBmX3Rlc3Rtb2RfZmVudHJ5X3Rlc3QxXFxcIixcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy90cmFjaW5nX211bHRpLmM6NDU6XFx0XFxcImJwZl90ZXN0bW9kX2ZlbnRyeV90ZXN0MlxcXCIsXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvdHJhY2luZ19tdWx0aS5jOjQ2OlxcdFxcXCJicGZfdGVzdG1vZF9mZW50cnlfdGVzdDNcXFwiLFxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3RyYWNpbmdfbXVsdGkuYzo0NzpcXHRcXFwiYnBmX3Rlc3Rtb2RfZmVudHJ5X3Rlc3Q3XFxcIixcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy90cmFjaW5nX211bHRpLmM6NDg6XFx0XFxcImJwZl90ZXN0bW9kX2ZlbnRyeV90ZXN0MTFcXFwiLFxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3RyYWNpbmdfbXVsdGkuYy00OS19O1xcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvdHJhY2luZ19tdWx0aS5jPTMxND1zdGF0aWMgdm9pZCB0ZXN0X21vZHVsZV9saW5rX2FwaV9wYXR0ZXJuKHZvaWQpXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy90cmFjaW5nX211bHRpLmMtMzI0LVxcdHNrZWwtXFx1MDAzZWxpbmtzLnRlc3RfZmVudHJ5ID0gYnBmX3Byb2dyYW1fX2F0dGFjaF90cmFjaW5nX211bHRpKHNrZWwtXFx1MDAzZXByb2dzLnRlc3RfZmVudHJ5LFxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3RyYWNpbmdfbXVsdGkuYzozMjU6XFx0XFx0XFx0XFx0XFx0XFxcImJwZl90ZXN0bW9kOmJwZl90ZXN0bW9kX2ZlbnRyeV90ZXN0KlxcXCIsIE5VTEwpO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3RyYWNpbmdfbXVsdGkuYy0zMjYtXFx0aWYgKCFBU1NFUlRfT0tfUFRSKHNrZWwtXFx1MDAzZWxpbmtzLnRlc3RfZmVudHJ5LCBcXFwiYnBmX3Byb2dyYW1fX2F0dGFjaF90cmFjaW5nX211bHRpXFxcIikpXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy90cmFjaW5nX211bHRpLmMtMzI5LVxcdHNrZWwtXFx1MDAzZWxpbmtzLnRlc3RfZmV4aXQgPSBicGZfcHJvZ3JhbV9fYXR0YWNoX3RyYWNpbmdfbXVsdGkoc2tlbC1cXHUwMDNlcHJvZ3MudGVzdF9mZXhpdCxcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy90cmFjaW5nX211bHRpLmM6MzMwOlxcdFxcdFxcdFxcdFxcdFxcXCJicGZfdGVzdG1vZDpicGZfdGVzdG1vZF9mZW50cnlfdGVzdCpcXFwiLCBOVUxMKTtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy90cmFjaW5nX211bHRpLmMtMzMxLVxcdGlmICghQVNTRVJUX09LX1BUUihza2VsLVxcdTAwM2VsaW5rcy50ZXN0X2ZleGl0LCBcXFwiYnBmX3Byb2dyYW1fX2F0dGFjaF90cmFjaW5nX211bHRpXFxcIikpXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy90cmFjaW5nX211bHRpLmM9MzQyPXN0YXRpYyB2b2lkIHRlc3RfbW9kdWxlX2xpbmtfYXBpX2lkcyh2b2lkKVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3RyYWNpbmdfbXVsdGkuYy0zNDMte1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3RyYWNpbmdfbXVsdGkuYzozNDQ6XFx0c2l6ZV90IGNudCA9IEFSUkFZX1NJWkUoYnBmX3Rlc3Rtb2RfZmVudHJ5X3Rlc3QpO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3RyYWNpbmdfbXVsdGkuYy0zNDUtXFx0TElCQlBGX09QVFMoYnBmX3RyYWNpbmdfbXVsdGlfb3B0cywgb3B0cyk7XFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy90cmFjaW5nX211bHRpLmMtMzU0LVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3RyYWNpbmdfbXVsdGkuYzozNTU6XFx0aWRzID0gZ2V0X2lkcyhicGZfdGVzdG1vZF9mZW50cnlfdGVzdCwgY250LCBcXFwiYnBmX3Rlc3Rtb2RcXFwiKTtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy90cmFjaW5nX211bHRpLmMtMzU2LVxcdGlmICghQVNTRVJUX09LX1BUUihpZHMsIFxcXCJnZXRfaWRzXFxcIikpXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy91cHJvYmVfc3lzY2FsbC5jPTEwOT1zdGF0aWMgdm9pZCB0ZXN0X3Vwcm9iZV9yZWdzX2VxdWFsKGJvb2wgcmV0cHJvYmUpXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy91cHJvYmVfc3lzY2FsbC5jLTE5My1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy91cHJvYmVfc3lzY2FsbC5jOjE5NDojZGVmaW5lIEJQRl9URVNUTU9EX1VQUk9CRV9URVNUX0ZJTEUgXFxcIi9zeXMva2VybmVsL2JwZl90ZXN0bW9kX3Vwcm9iZVxcXCJcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy91cHJvYmVfc3lzY2FsbC5jLTE5NS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy91cHJvYmVfc3lzY2FsbC5jOjE5NjpzdGF0aWMgaW50IHdyaXRlX2JwZl90ZXN0bW9kX3Vwcm9iZSh1bnNpZ25lZCBsb25nIG9mZnNldClcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy91cHJvYmVfc3lzY2FsbC5jLTE5Ny17XFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy91cHJvYmVfc3lzY2FsbC5jPTIxMz1zdGF0aWMgdm9pZCB0ZXN0X3JlZ3NfY2hhbmdlKHZvaWQpXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy91cHJvYmVfc3lzY2FsbC5jLTIyMi1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy91cHJvYmVfc3lzY2FsbC5jOjIyMzpcXHRlcnIgPSB3cml0ZV9icGZfdGVzdG1vZF91cHJvYmUob2Zmc2V0KTtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy91cHJvYmVfc3lzY2FsbC5jLTIyNC1cXHRpZiAoIUFTU0VSVF9PSyhlcnIsIFxcXCJyZWdpc3Rlcl91cHJvYmVcXFwiKSlcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3Vwcm9iZV9zeXNjYWxsLmMtMjMxLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3Vwcm9iZV9zeXNjYWxsLmM6MjMyOlxcdGVyciA9IHdyaXRlX2JwZl90ZXN0bW9kX3Vwcm9iZSgwKTtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy91cHJvYmVfc3lzY2FsbC5jLTIzMy1cXHRpZiAoIUFTU0VSVF9PSyhlcnIsIFxcXCJ1bnJlZ2lzdGVyX3Vwcm9iZVxcXCIpKVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2FnZ3JlZ2F0ZV9yZXRfa2Z1bmMuYy01LSNpbmNsdWRlIFxcXCJicGZfbWlzYy5oXFxcIlxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9hZ2dyZWdhdGVfcmV0X2tmdW5jLmM6NjojaW5jbHVkZSBcXFwiLi4vdGVzdF9rbW9kcy9icGZfdGVzdG1vZF9rZnVuYy5oXFxcIlxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9hZ2dyZWdhdGVfcmV0X2tmdW5jLmMtNy1cXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9hZ2dyZWdhdGVfcmV0X2tmdW5jX2FyZW5hLmMtNi0jaW5jbHVkZSBcXFwiYnBmX21pc2MuaFxcXCJcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvYWdncmVnYXRlX3JldF9rZnVuY19hcmVuYS5jOjc6I2luY2x1ZGUgXFxcIi4uL3Rlc3Rfa21vZHMvYnBmX3Rlc3Rtb2Rfa2Z1bmMuaFxcXCJcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvYWdncmVnYXRlX3JldF9rZnVuY19hcmVuYS5jLTgtXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvYXJlbmFfa2Z1bmMuYy05LSNpbmNsdWRlIFxcdTAwM2NicGZfYXJlbmFfY29tbW9uLmhcXHUwMDNlXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2FyZW5hX2tmdW5jLmM6MTA6I2luY2x1ZGUgXFxcIi4uL3Rlc3Rfa21vZHMvYnBmX3Rlc3Rtb2Rfa2Z1bmMuaFxcXCJcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvYXJlbmFfa2Z1bmMuYy0xMS1cXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9hcmVuYV9rZnVuY19qaXQuYy0xNC0jaW5jbHVkZSBcXHUwMDNjYnBmX2FyZW5hX2NvbW1vbi5oXFx1MDAzZVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9hcmVuYV9rZnVuY19qaXQuYzoxNTojaW5jbHVkZSBcXFwiLi4vdGVzdF9rbW9kcy9icGZfdGVzdG1vZF9rZnVuYy5oXFxcIlxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9hcmVuYV9rZnVuY19qaXQuYy0xNi1cXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9iYWRfc3RydWN0X29wcy5jLTUtI2luY2x1ZGUgXFx1MDAzY2JwZi9icGZfdHJhY2luZy5oXFx1MDAzZVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9iYWRfc3RydWN0X29wcy5jOjY6I2luY2x1ZGUgXFxcIi4uL3Rlc3Rfa21vZHMvYnBmX3Rlc3Rtb2QuaFxcXCJcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvYmFkX3N0cnVjdF9vcHMuYy03LVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2JhZF9zdHJ1Y3Rfb3BzLmM9MTY9U0VDKFxcXCIuc3RydWN0X29wcy5saW5rXFxcIilcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvYmFkX3N0cnVjdF9vcHMuYzoxNzpzdHJ1Y3QgYnBmX3Rlc3Rtb2Rfb3BzIHRlc3Rtb2RfMSA9IHtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvYmFkX3N0cnVjdF9vcHMuYy0xOC1cXHQudGVzdF8xID0gKHZvaWQgKil0ZXN0XzEsXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvYmFkX3N0cnVjdF9vcHMuYz0yMj1TRUMoXFxcIi5zdHJ1Y3Rfb3BzLmxpbmtcXFwiKVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9iYWRfc3RydWN0X29wcy5jOjIzOnN0cnVjdCBicGZfdGVzdG1vZF9vcHMyIHRlc3Rtb2RfMiA9IHtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvYmFkX3N0cnVjdF9vcHMuYy0yNC1cXHQudGVzdF8xID0gKHZvaWQgKil0ZXN0XzFcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9idGZfX3N0YWNrX2FyZ19wcmVjaXNpb24uYy00LSNpbmNsdWRlIFxcdTAwM2NicGYvYnBmX2hlbHBlcnMuaFxcdTAwM2VcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvYnRmX19zdGFja19hcmdfcHJlY2lzaW9uLmM6NTojaW5jbHVkZSBcXFwiLi4vdGVzdF9rbW9kcy9icGZfdGVzdG1vZF9rZnVuYy5oXFxcIlxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9idGZfX3N0YWNrX2FyZ19wcmVjaXNpb24uYy02LVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2J0Zl90eXBlX3RhZ19wZXJjcHUuYy02LVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9idGZfdHlwZV90YWdfcGVyY3B1LmM6NzpzdHJ1Y3QgYnBmX3Rlc3Rtb2RfYnRmX3R5cGVfdGFnXzEge1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9idGZfdHlwZV90YWdfcGVyY3B1LmMtOC1cXHRpbnQgYTtcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9idGZfdHlwZV90YWdfcGVyY3B1LmMtMTAtXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2J0Zl90eXBlX3RhZ19wZXJjcHUuYzoxMTpzdHJ1Y3QgYnBmX3Rlc3Rtb2RfYnRmX3R5cGVfdGFnXzIge1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9idGZfdHlwZV90YWdfcGVyY3B1LmM6MTI6XFx0c3RydWN0IGJwZl90ZXN0bW9kX2J0Zl90eXBlX3RhZ18xICpwO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9idGZfdHlwZV90YWdfcGVyY3B1LmMtMTMtfTtcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9idGZfdHlwZV90YWdfcGVyY3B1LmM9MTU9X191NjQgZztcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvYnRmX3R5cGVfdGFnX3BlcmNwdS5jLTE2LVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9idGZfdHlwZV90YWdfcGVyY3B1LmM6MTc6U0VDKFxcXCJmZW50cnkvYnBmX3Rlc3Rtb2RfdGVzdF9idGZfdHlwZV90YWdfcGVyY3B1XzFcXFwiKVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9idGZfdHlwZV90YWdfcGVyY3B1LmM6MTg6aW50IEJQRl9QUk9HKHRlc3RfcGVyY3B1MSwgc3RydWN0IGJwZl90ZXN0bW9kX2J0Zl90eXBlX3RhZ18xICphcmcpXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2J0Zl90eXBlX3RhZ19wZXJjcHUuYy0xOS17XFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvYnRmX3R5cGVfdGFnX3BlcmNwdS5jLTIzLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9idGZfdHlwZV90YWdfcGVyY3B1LmM6MjQ6U0VDKFxcXCJmZW50cnkvYnBmX3Rlc3Rtb2RfdGVzdF9idGZfdHlwZV90YWdfcGVyY3B1XzJcXFwiKVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9idGZfdHlwZV90YWdfcGVyY3B1LmM6MjU6aW50IEJQRl9QUk9HKHRlc3RfcGVyY3B1Miwgc3RydWN0IGJwZl90ZXN0bW9kX2J0Zl90eXBlX3RhZ18yICphcmcpXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2J0Zl90eXBlX3RhZ19wZXJjcHUuYy0yNi17XFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvYnRmX3R5cGVfdGFnX3VzZXIuYy02LVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9idGZfdHlwZV90YWdfdXNlci5jOjc6c3RydWN0IGJwZl90ZXN0bW9kX2J0Zl90eXBlX3RhZ18xIHtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvYnRmX3R5cGVfdGFnX3VzZXIuYy04LVxcdGludCBhO1xcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2J0Zl90eXBlX3RhZ191c2VyLmMtMTAtXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2J0Zl90eXBlX3RhZ191c2VyLmM6MTE6c3RydWN0IGJwZl90ZXN0bW9kX2J0Zl90eXBlX3RhZ18yIHtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvYnRmX3R5cGVfdGFnX3VzZXIuYzoxMjpcXHRzdHJ1Y3QgYnBmX3Rlc3Rtb2RfYnRmX3R5cGVfdGFnXzEgKnA7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2J0Zl90eXBlX3RhZ191c2VyLmMtMTMtfTtcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9idGZfdHlwZV90YWdfdXNlci5jPTE1PWludCBnO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9idGZfdHlwZV90YWdfdXNlci5jLTE2LVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9idGZfdHlwZV90YWdfdXNlci5jOjE3OlNFQyhcXFwiZmVudHJ5L2JwZl90ZXN0bW9kX3Rlc3RfYnRmX3R5cGVfdGFnX3VzZXJfMVxcXCIpXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2J0Zl90eXBlX3RhZ191c2VyLmM6MTg6aW50IEJQRl9QUk9HKHRlc3RfdXNlcjEsIHN0cnVjdCBicGZfdGVzdG1vZF9idGZfdHlwZV90YWdfMSAqYXJnKVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9idGZfdHlwZV90YWdfdXNlci5jLTE5LXtcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9idGZfdHlwZV90YWdfdXNlci5jLTIzLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9idGZfdHlwZV90YWdfdXNlci5jOjI0OlNFQyhcXFwiZmVudHJ5L2JwZl90ZXN0bW9kX3Rlc3RfYnRmX3R5cGVfdGFnX3VzZXJfMlxcXCIpXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2J0Zl90eXBlX3RhZ191c2VyLmM6MjU6aW50IEJQRl9QUk9HKHRlc3RfdXNlcjIsIHN0cnVjdCBicGZfdGVzdG1vZF9idGZfdHlwZV90YWdfMiAqYXJnKVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9idGZfdHlwZV90YWdfdXNlci5jLTI2LXtcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9jYl9yZWZzLmMtNC0jaW5jbHVkZSBcXHUwMDNjYnBmL2JwZl9oZWxwZXJzLmhcXHUwMDNlXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2NiX3JlZnMuYzo1OiNpbmNsdWRlIFxcXCIuLi90ZXN0X2ttb2RzL2JwZl90ZXN0bW9kX2tmdW5jLmhcXFwiXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2NiX3JlZnMuYy02LVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2NvcmVfa2Vybi5jPTY2PXN0cnVjdCBfX3NrX2JVZkYgLyogaXQgd2lsbCBub3QgZXhpc3QgaW4gdm1saW51eCAqLyB7XFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvY29yZV9rZXJuLmMtNjktXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2NvcmVfa2Vybi5jOjcwOnN0cnVjdCBicGZfdGVzdG1vZF90ZXN0X3JlYWRfY3R4IC8qIGl0IGV4aXN0cyBpbiBicGZfdGVzdG1vZCAqLyB7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2NvcmVfa2Vybi5jLTcxLVxcdHNpemVfdCBsZW47XFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvY29yZV9rZXJuLmM9NzU9aW50IGJhbGFuY2VyX2luZ3Jlc3Moc3RydWN0IF9fc2tfYnVmZiAqY3R4KVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2NvcmVfa2Vybi5jLTkzLVxcdFxcdC8qIHRoaXMgQ08tUkUgcmVsbyBtYXkgb3IgbWF5IG5vdCByZXNvbHZlXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2NvcmVfa2Vybi5jOjk0OlxcdFxcdCAqIGRlcGVuZGluZyBvbiB3aGV0aGVyIGJwZl90ZXN0bW9kIGlzIGxvYWRlZC5cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvY29yZV9rZXJuLmMtOTUtXFx0XFx0ICovIFxcXFxcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvY29yZV9rZXJuLmM6OTY6XFx0XFx0aSArPSAoKHN0cnVjdCBicGZfdGVzdG1vZF90ZXN0X3JlYWRfY3R4ICopY3R4KS1cXHUwMDNlbGVuOyBcXFxcXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2NvcmVfa2Vybi5jLTk3LVxcdH0gXFxcXFxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2VwaWxvZ3VlX2V4aXQuYy02LSNpbmNsdWRlIFxcXCJicGZfbWlzYy5oXFxcIlxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9lcGlsb2d1ZV9leGl0LmM6NzojaW5jbHVkZSBcXFwiLi4vdGVzdF9rbW9kcy9icGZfdGVzdG1vZC5oXFxcIlxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9lcGlsb2d1ZV9leGl0LmM6ODojaW5jbHVkZSBcXFwiLi4vdGVzdF9rbW9kcy9icGZfdGVzdG1vZF9rZnVuYy5oXFxcIlxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9lcGlsb2d1ZV9leGl0LmMtOS1cXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9lcGlsb2d1ZV9leGl0LmM9NjE9U0VDKFxcXCIuc3RydWN0X29wcy5saW5rXFxcIilcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvZXBpbG9ndWVfZXhpdC5jOjYyOnN0cnVjdCBicGZfdGVzdG1vZF9zdF9vcHMgZXBpbG9ndWVfZXhpdCA9IHtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvZXBpbG9ndWVfZXhpdC5jLTYzLVxcdC50ZXN0X2VwaWxvZ3VlID0gKHZvaWQgKil0ZXN0X2VwaWxvZ3VlX2V4aXQsXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvZXBpbG9ndWVfdGFpbGNhbGwuYy02LSNpbmNsdWRlIFxcXCJicGZfbWlzYy5oXFxcIlxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9lcGlsb2d1ZV90YWlsY2FsbC5jOjc6I2luY2x1ZGUgXFxcIi4uL3Rlc3Rfa21vZHMvYnBmX3Rlc3Rtb2QuaFxcXCJcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvZXBpbG9ndWVfdGFpbGNhbGwuYzo4OiNpbmNsdWRlIFxcXCIuLi90ZXN0X2ttb2RzL2JwZl90ZXN0bW9kX2tmdW5jLmhcXFwiXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2VwaWxvZ3VlX3RhaWxjYWxsLmMtOS1cXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9lcGlsb2d1ZV90YWlsY2FsbC5jPTQ0PVNFQyhcXFwiLnN0cnVjdF9vcHMubGlua1xcXCIpXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2VwaWxvZ3VlX3RhaWxjYWxsLmM6NDU6c3RydWN0IGJwZl90ZXN0bW9kX3N0X29wcyBlcGlsb2d1ZV90YWlsY2FsbCA9IHtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvZXBpbG9ndWVfdGFpbGNhbGwuYy00Ni1cXHQudGVzdF9lcGlsb2d1ZSA9ICh2b2lkICopdGVzdF9lcGlsb2d1ZV90YWlsY2FsbCxcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9lcGlsb2d1ZV90YWlsY2FsbC5jPTQ5PVNFQyhcXFwiLnN0cnVjdF9vcHMubGlua1xcXCIpXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2VwaWxvZ3VlX3RhaWxjYWxsLmM6NTA6c3RydWN0IGJwZl90ZXN0bW9kX3N0X29wcyBlcGlsb2d1ZV9zdWJwcm9nID0ge1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9lcGlsb2d1ZV90YWlsY2FsbC5jLTUxLVxcdC50ZXN0X2VwaWxvZ3VlID0gKHZvaWQgKil0ZXN0X2VwaWxvZ3VlX3N1YnByb2csXFxuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMxVDA5OjI3OjUzLjE5MDQ1MjQ1MVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjUwNjM3MTk5MjAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiBUaGlzIENvbW1pdCoqXG5cbk9rYXksIHNvIHRoaXMgY29tbWl0IGlzIGVudGlyZWx5IGNvbnRhaW5lZCB3aXRoaW4gYHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9gLiBJIG5lZWQgdG8gY29uZmlybSB0aGF0LiBMZXQgbWUgcXVpY2tseSByZXZpZXcgdGhlIGNoYW5nZXM6IGB0ZXN0X3N0cnVjdF9vcHNfbXVsdGlfYXJncy5jYCwgYHN0cnVjdF9vcHNfbXVsdGlfYXJncy5jYCwgYGJwZl90ZXN0bW9kLmNgLCBhbmQgYGJwZl90ZXN0bW9kLmhgLiBZZXAsIGxvb2tzIGxpa2UgYWxsIHRoZSBjaGFuZ2VzIGFyZSB3aXRoaW4gdGhhdCBkaXJlY3RvcnkuXG5cbk5vIGtlcm5lbCBjb2RlIHdoYXRzb2V2ZXIgaXMgYmVpbmcgdG91Y2hlZC4gVGhpcyBpcyBqdXN0IHNlbGZ0ZXN0IGNvZGUsIGFuZCB0aGUgc3VwcG9ydGluZyBrZXJuZWwgbW9kdWxlIChgYnBmX3Rlc3Rtb2RgKS4gR29vZC4gU2VsZnRlc3RzIGFyZW4ndCBwYXJ0IG9mIHRoZSBzdGFuZGFyZCBidWlsZDsgdGhleSdyZSBvbmx5IGV4ZWN1dGVkIGluIHRoZSBzZWxmdGVzdCBjb250ZXh0LiBUaGV5J3JlIG5vdCB0YXJnZXRlZCBieSBmdXp6ZXJzIGxpa2Ugc3l6a2FsbGVyLCB3aGljaCBmb2N1c2VzIG9uIHN5c2NhbGxzIGFuZCBjb3JlIGtlcm5lbCBpbnRlcmZhY2VzLlxuXG5UaGVyZWZvcmUsIHRoaXMgcGF0Y2ggZG9lc24ndCBpbnRyb2R1Y2UgYW55IGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsJ3MgY29yZSBsb2dpYy4gSXQncyBwdXJlbHkgYWJvdXQgdGVzdGluZy5cblxuTm93LCBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoaXMgYWxpZ25zIHdpdGggdGhlIFwiV29ydGhGdXp6aW5nPWZhbHNlXCIgY3JpdGVyaWEuIFNlbGZ0ZXN0IGNoYW5nZXMsIGxpa2UgdGhlc2UsIHNob3VsZCBhYnNvbHV0ZWx5ICpub3QqIHRyaWdnZXIgZnV6emluZy4gV2UgZG9uJ3Qgd2FudCB0byB3YXN0ZSByZXNvdXJjZXMgb24gdGhlbS4gWWVzLCB0aGF0J3MgY29ycmVjdC5cblxuQWxyaWdodCwgSSdsbCBjYWxsIGBzZXQtcmVzdWx0c2Agd2l0aCBgV29ydGhGdXp6aW5nPWZhbHNlYC4gSSBhbHNvIHdhbnQgdG8gc2V0IGBGb2N1c1N5bWJvbHNgIHRvIGVtcHR5IGFuZCBgRW5hYmxlQ29uZmlnc2AgdG8gZW1wdHkgYmVjYXVzZSB0aGUgb25seSBjaGFuZ2VzIGFyZSBsaW1pdGVkIHRvIHNlbGZ0ZXN0cywgYW5kIEknbGwgaW5jbHVkZSBhIGNsZWFyIGBSZWFzb25pbmdgIG1lc3NhZ2UgZXhwbGFpbmluZyB0aGF0IHRoZSBwYXRjaCBleGNsdXNpdmVseSBtb2RpZmllcyBzZWxmdGVzdCBmaWxlcyB3aXRoaW4gYHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9gLiBUaGF0IHNob3VsZCBjb3ZlciBpdC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjE1MTUsIk91dHB1dFRva2VucyI6NjYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNTIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzFUMDk6Mjc6NTguMjU0MTc1NzAxWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozMTU1MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IGFkZHMgYW5kIG1vZGlmaWVzIHRlc3QgY2FzZXMgYW5kIHRlc3Qga2VybmVsIG1vZHVsZSBkZWZpbml0aW9ucyB3aXRoaW4gdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmLywgd2l0aCBubyBmdW5jdGlvbmFsIG1vZGlmaWNhdGlvbnMgdG8gdGhlIGNvcmUgTGludXgga2VybmVsLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggb25seSBhZGRzIGFuZCBtb2RpZmllcyB0ZXN0IGNhc2VzIGFuZCB0ZXN0IGtlcm5lbCBtb2R1bGUgZGVmaW5pdGlvbnMgd2l0aGluIHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi8sIHdpdGggbm8gZnVuY3Rpb25hbCBtb2RpZmljYXRpb25zIHRvIHRoZSBjb3JlIExpbnV4IGtlcm5lbC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMxVDA5OjI3OjU4LjI1NDIxMTIzMVoiLCJTZXEiOjcsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyODYwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowt88gb[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-31 09:11:15 +0000 UTC FinishedAt: 2026-08-31 09:27:59 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "AI determined the patch has no functional impact", "targets": null, "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMxIDA5OjI3PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggb25seSBhZGRzIGFuZCBtb2RpZmllcyB0ZXN0IGNhc2VzIGFuZCB0ZXN0IGtlcm5lbCBtb2R1bGUgZGVmaW5pdGlvbnMgd2l0aGluIHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi8sIHdpdGggbm8gZnVuY3Rpb25hbCBtb2RpZmljYXRpb25zIHRvIHRoZSBjb3JlIExpbnV4IGtlcm5lbC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzEgMDk6Mjc8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBlMWY2ZWE3NzE1ZDg0MzVmZGY3MDY2MGI5YTY2NjY3YzY4NTYzNzVkXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBBdWcgMzEgMDk6Mjc6NDcgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvdGVzdF9zdHJ1Y3Rfb3BzX211bHRpX2FyZ3MuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3Rlc3Rfc3RydWN0X29wc19tdWx0aV9hcmdzLmNcbmluZGV4IDBmMzIxZTg4OTg2MjAuLjdmNmY5ZDYxYzllMDcgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy90ZXN0X3N0cnVjdF9vcHNfbXVsdGlfYXJncy5jXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy90ZXN0X3N0cnVjdF9vcHNfbXVsdGlfYXJncy5jXG5AQCAtMyw3ICYjNDM7Myw1NCBAQFxuICNpbmNsdWRlIFx1MDAzY3Rlc3RfcHJvZ3MuaFx1MDAzZVxuICNpbmNsdWRlIFwmIzM0O3N0cnVjdF9vcHNfbXVsdGlfYXJncy5za2VsLmhcJiMzNDtcbiBcbiYjNDM7c3RhdGljIHZvaWQgdGVzdF9yZWZjb3VudGVkX211bHRpKHZvaWQpXG4mIzQzO3tcbiYjNDM7XHRzdHJ1Y3Qgc3RydWN0X29wc19tdWx0aV9hcmdzICpza2VsO1xuJiM0MztcdGludCBlcnI7XG4mIzQzO1xuJiM0MztcdHNrZWwgPSBzdHJ1Y3Rfb3BzX211bHRpX2FyZ3NfX29wZW4oKTtcbiYjNDM7XHRpZiAoIUFTU0VSVF9PS19QVFIoc2tlbCwgXCYjMzQ7c3RydWN0X29wc19tdWx0aV9hcmdzX19vcGVuXCYjMzQ7KSlcbiYjNDM7XHRcdHJldHVybjtcbiYjNDM7XG4mIzQzO1x0ZXJyID0gc3RydWN0X29wc19tdWx0aV9hcmdzX19sb2FkKHNrZWwpO1xuJiM0MztcdEFTU0VSVF9FUShlcnIsIC1FSU5WQUwsIFwmIzM0O3N0cnVjdF9vcHNfbXVsdGlfYXJnc19fbG9hZFwmIzM0Oyk7XG4mIzQzO1xuJiM0MztcdHN0cnVjdF9vcHNfbXVsdGlfYXJnc19fZGVzdHJveShza2VsKTtcbiYjNDM7fVxuJiM0MztcbiYjNDM7c3RhdGljIHZvaWQgdGVzdF90cmFtcG9saW5lX3N0YWNrX2FyZ3Modm9pZClcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBzdHJ1Y3Rfb3BzX211bHRpX2FyZ3MgKnNrZWw7XG4mIzQzO1x0c3RydWN0IGJwZl9saW5rICpsaW5rID0gTlVMTDtcbiYjNDM7XHRpbnQgZXJyO1xuJiM0MztcbiYjNDM7XHRza2VsID0gc3RydWN0X29wc19tdWx0aV9hcmdzX19vcGVuKCk7XG4mIzQzO1x0aWYgKCFBU1NFUlRfT0tfUFRSKHNrZWwsIFwmIzM0O3N0cnVjdF9vcHNfbXVsdGlfYXJnc19fb3BlblwmIzM0OykpXG4mIzQzO1x0XHRyZXR1cm47XG4mIzQzO1xuJiM0MztcdGJwZl9wcm9ncmFtX19zZXRfYXV0b2xvYWQoc2tlbC1cdTAwM2Vwcm9ncy50ZXN0X3JlZmNvdW50ZWRfbXVsdGksIGZhbHNlKTtcbiYjNDM7XHRza2VsLVx1MDAzZXN0cnVjdF9vcHMudGVzdG1vZF9yZWZfYWNxdWlyZS1cdTAwM2V0ZXN0X3JlZmNvdW50ZWRfbXVsdGkgPSBOVUxMO1xuJiM0MztcbiYjNDM7XHRlcnIgPSBzdHJ1Y3Rfb3BzX211bHRpX2FyZ3NfX2xvYWQoc2tlbCk7XG4mIzQzO1x0aWYgKCFBU1NFUlRfT0soZXJyLCBcJiMzNDtzdHJ1Y3Rfb3BzX211bHRpX2FyZ3NfX2xvYWRcJiMzNDspKVxuJiM0MztcdFx0Z290byBvdXQ7XG4mIzQzO1xuJiM0MztcdGxpbmsgPSBicGZfbWFwX19hdHRhY2hfc3RydWN0X29wcyhza2VsLVx1MDAzZW1hcHMudGVzdG1vZF9yZWZfYWNxdWlyZSk7XG4mIzQzO1x0aWYgKCFBU1NFUlRfT0tfUFRSKGxpbmssIFwmIzM0O2JwZl9tYXBfX2F0dGFjaF9zdHJ1Y3Rfb3BzXCYjMzQ7KSlcbiYjNDM7XHRcdGdvdG8gb3V0O1xuJiM0MztcbiYjNDM7XHRBU1NFUlRfRVEoc2tlbC1cdTAwM2Vic3MtXHUwMDNlZ290X2FyZzksIDk5OTksIFwmIzM0O2NoZWNrX3N0YWNrX3Bhc3NlZF9hcmc5XCYjMzQ7KTtcbiYjNDM7XG4mIzQzO291dDpcbiYjNDM7XHRicGZfbGlua19fZGVzdHJveShsaW5rKTtcbiYjNDM7XHRzdHJ1Y3Rfb3BzX211bHRpX2FyZ3NfX2Rlc3Ryb3koc2tlbCk7XG4mIzQzO31cbiYjNDM7XG4gdm9pZCB0ZXN0X3N0cnVjdF9vcHNfbXVsdGlfYXJncyh2b2lkKVxuIHtcbi1cdFJVTl9URVNUUyhzdHJ1Y3Rfb3BzX211bHRpX2FyZ3MpO1xuJiM0MztcdGlmICh0ZXN0X19zdGFydF9zdWJ0ZXN0KFwmIzM0O3Rlc3RfcmVmY291bnRlZF9tdWx0aVwmIzM0OykpXG4mIzQzO1x0XHR0ZXN0X3JlZmNvdW50ZWRfbXVsdGkoKTtcbiYjNDM7XG4mIzQzO1x0aWYgKHRlc3RfX3N0YXJ0X3N1YnRlc3QoXCYjMzQ7dGVzdF90cmFtcG9saW5lX3N0YWNrX2FyZ3NcJiMzNDspKVxuJiM0MztcdFx0dGVzdF90cmFtcG9saW5lX3N0YWNrX2FyZ3MoKTtcbiB9XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3N0cnVjdF9vcHNfbXVsdGlfYXJncy5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3N0cnVjdF9vcHNfbXVsdGlfYXJncy5jXG5pbmRleCBjNjJiZTE1NzU3ZjA0Li5mMGY0NzY3NmIwOTlhIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3N0cnVjdF9vcHNfbXVsdGlfYXJncy5jXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mvc3RydWN0X29wc19tdWx0aV9hcmdzLmNcbkBAIC0yOSw3ICYjNDM7MjksMjAgQEAgaW50IHRlc3RfcmVmY291bnRlZF9tdWx0aSh1bnNpZ25lZCBsb25nIGxvbmcgKmN0eClcbiBcdHJldHVybiAwO1xuIH1cbiBcbiYjNDM7X191NjQgZ290X2FyZzkgPSAwO1xuJiM0MztcbiYjNDM7U0VDKFwmIzM0O3N0cnVjdF9vcHMvdGVzdF90cmFtcG9saW5lX3N0YWNrX2FyZ3NcJiMzNDspXG4mIzQzO2ludCBCUEZfUFJPRyh0ZXN0X3RyYW1wb2xpbmVfc3RhY2tfYXJncywgaW50IGFyZzEsIGludCBhcmcyLCBpbnQgYXJnMyxcbiYjNDM7XHRcdFx0XHRcdCBpbnQgYXJnNCwgaW50IGFyZzUsIGludCBhcmc2LFxuJiM0MztcdFx0XHRcdFx0IGludCBhcmc3LCBpbnQgYXJnOCwgaW50IGFyZzkpXG4mIzQzO3tcbiYjNDM7XHRnb3RfYXJnOSA9IGFyZzk7XG4mIzQzO1xuJiM0MztcdHJldHVybiAwO1xuJiM0Mzt9XG4mIzQzO1xuIFNFQyhcJiMzNDsuc3RydWN0X29wcy5saW5rXCYjMzQ7KVxuIHN0cnVjdCBicGZfdGVzdG1vZF9vcHMgdGVzdG1vZF9yZWZfYWNxdWlyZSA9IHtcbiBcdC50ZXN0X3JlZmNvdW50ZWRfbXVsdGkgPSAodm9pZCAqKXRlc3RfcmVmY291bnRlZF9tdWx0aSxcbiYjNDM7XHQudGVzdF90cmFtcG9saW5lX3N0YWNrX2FyZ3MgPSAodm9pZCAqKXRlc3RfdHJhbXBvbGluZV9zdGFja19hcmdzLFxuIH07XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Rlc3Rfa21vZHMvYnBmX3Rlc3Rtb2QuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi90ZXN0X2ttb2RzL2JwZl90ZXN0bW9kLmNcbmluZGV4IDIzODBiNmNiZGVhZGMuLjhmMDc0NGU2MDc1YjMgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdGVzdF9rbW9kcy9icGZfdGVzdG1vZC5jXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdGVzdF9rbW9kcy9icGZfdGVzdG1vZC5jXG5AQCAtMTY3OCw2ICYjNDM7MTY3OCw5IEBAIHN0YXRpYyBib29sIGJwZl90ZXN0bW9kX29wc19pc192YWxpZF9hY2Nlc3MoaW50IG9mZiwgaW50IHNpemUsXG4gXHRyZXR1cm4gYnBmX3RyYWNpbmdfYnRmX2N0eF9hY2Nlc3Mob2ZmLCBzaXplLCB0eXBlLCBwcm9nLCBpbmZvKTtcbiB9XG4gXG4mIzQzO3N0YXRpYyBERUZJTkVfTVVURVgoc3Rfb3BzX3RyYW1wb2xpbmVfbXV0ZXgpO1xuJiM0MztzdGF0aWMgc3RydWN0IGJwZl90ZXN0bW9kX29wcyAqc3Rfb3BzX3RyYW1wb2xpbmU7XG4mIzQzO1xuIHN0YXRpYyBpbnQgYnBmX3Rlc3Rtb2Rfb3BzX2luaXRfbWVtYmVyKGNvbnN0IHN0cnVjdCBidGZfdHlwZSAqdCxcbiBcdFx0XHRcdCAgICAgICBjb25zdCBzdHJ1Y3QgYnRmX21lbWJlciAqbWVtYmVyLFxuIFx0XHRcdFx0ICAgICAgIHZvaWQgKmtkYXRhLCBjb25zdCB2b2lkICp1ZGF0YSlcbkBAIC0xNjkxLDYgJiM0MzsxNjk0LDE4IEBAIHN0YXRpYyBpbnQgYnBmX3Rlc3Rtb2Rfb3BzX2luaXRfbWVtYmVyKGNvbnN0IHN0cnVjdCBidGZfdHlwZSAqdCxcbiBcdFx0KChzdHJ1Y3QgYnBmX3Rlc3Rtb2Rfb3BzICopa2RhdGEpLVx1MDAzZWRhdGEgPSAoKHN0cnVjdCBicGZfdGVzdG1vZF9vcHMgKil1ZGF0YSktXHUwMDNlZGF0YTtcbiBcdFx0cmV0dXJuIDE7XG4gXHR9XG4mIzQzO1xuJiM0MztcdGlmIChtZW1iZXItXHUwMDNlb2Zmc2V0ID09IG9mZnNldG9mKHN0cnVjdCBicGZfdGVzdG1vZF9vcHMsIHRlc3RfdHJhbXBvbGluZV9zdGFja19hcmdzKSAqIDgpIHtcbiYjNDM7XHRcdG11dGV4X2xvY2soXHUwMDI2c3Rfb3BzX3RyYW1wb2xpbmVfbXV0ZXgpO1xuJiM0MztcdFx0aWYgKHN0X29wc190cmFtcG9saW5lKSB7XG4mIzQzO1x0XHRcdHByX2VycihcJiMzNDtzdF9vcHNfdHJhbXBvbGluZSBoYXMgYWxyZWFkeSBiZWVuIHJlZ2lzdGVyZWRcXG5cJiMzNDspO1xuJiM0MztcdFx0XHRtdXRleF91bmxvY2soXHUwMDI2c3Rfb3BzX3RyYW1wb2xpbmVfbXV0ZXgpO1xuJiM0MztcdFx0XHRyZXR1cm4gLUVFWElTVDtcbiYjNDM7XHRcdH1cbiYjNDM7XHRcdHN0X29wc190cmFtcG9saW5lID0gKHN0cnVjdCBicGZfdGVzdG1vZF9vcHMgKilrZGF0YTtcbiYjNDM7XHRcdG11dGV4X3VubG9jayhcdTAwMjZzdF9vcHNfdHJhbXBvbGluZV9tdXRleCk7XG4mIzQzO1x0fVxuJiM0MztcbiBcdHJldHVybiAwO1xuIH1cbiBcbkBAIC0xNzIwLDExICYjNDM7MTczNSwyMCBAQCBzdGF0aWMgaW50IGJwZl9kdW1teV9yZWcodm9pZCAqa2RhdGEsIHN0cnVjdCBicGZfbGluayAqbGluaylcbiBcdGlmIChvcHMtXHUwMDNldGVzdF8yKVxuIFx0XHRvcHMtXHUwMDNldGVzdF8yKDQsIG9wcy1cdTAwM2VkYXRhKTtcbiBcbiYjNDM7XHRtdXRleF9sb2NrKFx1MDAyNnN0X29wc190cmFtcG9saW5lX211dGV4KTtcbiYjNDM7XHRpZiAoc3Rfb3BzX3RyYW1wb2xpbmUgXHUwMDI2XHUwMDI2IHN0X29wc190cmFtcG9saW5lLVx1MDAzZXRlc3RfdHJhbXBvbGluZV9zdGFja19hcmdzKVxuJiM0MztcdFx0c3Rfb3BzX3RyYW1wb2xpbmUtXHUwMDNldGVzdF90cmFtcG9saW5lX3N0YWNrX2FyZ3MoMSwgMiwgMywgNCwgNSwgNiwgNywgOCwgOTk5OSk7XG4mIzQzO1x0bXV0ZXhfdW5sb2NrKFx1MDAyNnN0X29wc190cmFtcG9saW5lX211dGV4KTtcbiYjNDM7XG4gXHRyZXR1cm4gMDtcbiB9XG4gXG4gc3RhdGljIHZvaWQgYnBmX2R1bW15X3VucmVnKHZvaWQgKmtkYXRhLCBzdHJ1Y3QgYnBmX2xpbmsgKmxpbmspXG4ge1xuJiM0MztcdG11dGV4X2xvY2soXHUwMDI2c3Rfb3BzX3RyYW1wb2xpbmVfbXV0ZXgpO1xuJiM0MztcdGlmIChzdF9vcHNfdHJhbXBvbGluZSA9PSAoc3RydWN0IGJwZl90ZXN0bW9kX29wcyAqKWtkYXRhKVxuJiM0MztcdFx0c3Rfb3BzX3RyYW1wb2xpbmUgPSBOVUxMO1xuJiM0MztcdG11dGV4X3VubG9jayhcdTAwMjZzdF9vcHNfdHJhbXBvbGluZV9tdXRleCk7XG4gfVxuIFxuIHN0YXRpYyBpbnQgYnBmX3Rlc3Rtb2RfdGVzdF8xKHZvaWQpXG5AQCAtMTc2Niw2ICYjNDM7MTc5MCwxMyBAQCBicGZfdGVzdG1vZF9vcHNfX3Rlc3RfcmV0dXJuX3JlZl9rcHRyKGludCBkdW1teSwgc3RydWN0IHRhc2tfc3RydWN0ICp0YXNrX19yZWYsXG4gXHRyZXR1cm4gTlVMTDtcbiB9XG4gXG4mIzQzO3N0YXRpYyBpbnQgYnBmX3Rlc3Rtb2Rfb3BzX190ZXN0X3RyYW1wb2xpbmVfc3RhY2tfYXJncyhpbnQgYXJnMSwgaW50IGFyZzIsIGludCBhcmczLFxuJiM0MztcdFx0XHRcdFx0XHQgICAgICAgaW50IGFyZzQsIGludCBhcmc1LCBpbnQgYXJnNixcbiYjNDM7XHRcdFx0XHRcdFx0ICAgICAgIGludCBhcmc3LCBpbnQgYXJnOCwgaW50IGFyZzkpXG4mIzQzO3tcbiYjNDM7XHRyZXR1cm4gYXJnOTtcbiYjNDM7fVxuJiM0MztcbiBzdGF0aWMgc3RydWN0IGJwZl90ZXN0bW9kX29wcyBfX2JwZl90ZXN0bW9kX29wcyA9IHtcbiBcdC50ZXN0XzEgPSBicGZfdGVzdG1vZF90ZXN0XzEsXG4gXHQudGVzdF8yID0gYnBmX3Rlc3Rtb2RfdGVzdF8yLFxuQEAgLTE3NzMsNiAmIzQzOzE4MDQsNyBAQCBzdGF0aWMgc3RydWN0IGJwZl90ZXN0bW9kX29wcyBfX2JwZl90ZXN0bW9kX29wcyA9IHtcbiBcdC50ZXN0X3JlZmNvdW50ZWQgPSBicGZfdGVzdG1vZF9vcHNfX3Rlc3RfcmVmY291bnRlZCxcbiBcdC50ZXN0X3JlZmNvdW50ZWRfbXVsdGkgPSBicGZfdGVzdG1vZF9vcHNfX3Rlc3RfcmVmY291bnRlZF9tdWx0aSxcbiBcdC50ZXN0X3JldHVybl9yZWZfa3B0ciA9IGJwZl90ZXN0bW9kX29wc19fdGVzdF9yZXR1cm5fcmVmX2twdHIsXG4mIzQzO1x0LnRlc3RfdHJhbXBvbGluZV9zdGFja19hcmdzID0gYnBmX3Rlc3Rtb2Rfb3BzX190ZXN0X3RyYW1wb2xpbmVfc3RhY2tfYXJncyxcbiB9O1xuIFxuIHN0cnVjdCBicGZfc3RydWN0X29wcyBicGZfYnBmX3Rlc3Rtb2Rfb3BzID0ge1xuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi90ZXN0X2ttb2RzL2JwZl90ZXN0bW9kLmggYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdGVzdF9rbW9kcy9icGZfdGVzdG1vZC5oXG5pbmRleCAyMTBiOTE5MjkwY2MyLi40MjI1N2FlODlmZDViIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Rlc3Rfa21vZHMvYnBmX3Rlc3Rtb2QuaFxuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Rlc3Rfa21vZHMvYnBmX3Rlc3Rtb2QuaFxuQEAgLTQ2LDYgJiM0Mzs0NiwxMSBAQCBzdHJ1Y3QgYnBmX3Rlc3Rtb2Rfb3BzIHtcbiBcdHN0cnVjdCB0YXNrX3N0cnVjdCAqKCp0ZXN0X3JldHVybl9yZWZfa3B0cikoaW50IGR1bW15LCBzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRhc2ssXG4gXHRcdFx0XHRcdFx0ICAgIHN0cnVjdCBjZ3JvdXAgKmNncnApO1xuIFxuJiM0MztcdC8qIFVzZWQgdG8gdGVzdCBpbmRpcmVjdCBzdHJ1Y3Rfb3BzIHRyYW1wb2xpbmVzIHN0YWNrLXBhc3NlZCBhcmd1bWVudHMgKFx1MDAzZTggYXJncykuICovXG4mIzQzO1x0aW50ICgqdGVzdF90cmFtcG9saW5lX3N0YWNrX2FyZ3MpKGludCBhcmcxLCBpbnQgYXJnMiwgaW50IGFyZzMsXG4mIzQzO1x0XHRcdFx0XHQgIGludCBhcmc0LCBpbnQgYXJnNSwgaW50IGFyZzYsXG4mIzQzO1x0XHRcdFx0XHQgIGludCBhcmc3LCBpbnQgYXJnOCwgaW50IGFyZzkpO1xuJiM0MztcbiBcdC8qIFRoZSBmb2xsb3dpbmcgZmllbGRzIGFyZSB1c2VkIHRvIHRlc3Qgc2hhZG93IGNvcGllcy4gKi9cbiBcdGNoYXIgb25lYnl0ZTtcbiBcdHN0cnVjdCB7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzEgMDk6Mjc8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Y29yZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggb25seSBhZGRzIGFuZCBtb2RpZmllcyB0ZXN0IGNhc2VzIGFuZCB0ZXN0IGtlcm5lbCBtb2R1bGUgZGVmaW5pdGlvbnMgd2l0aGluIHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi8sIHdpdGggbm8gZnVuY3Rpb25hbCBtb2RpZmljYXRpb25zIHRvIHRoZSBjb3JlIExpbnV4IGtlcm5lbC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBlMWY2ZWE3NzE1ZDg0MzVmZGY3MDY2MGI5YTY2NjY3YzY4NTYzNzVkCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIE1vbiBBdWcgMzEgMDk6Mjc6NDcgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy90ZXN0X3N0cnVjdF9vcHNfbXVsdGlfYXJncy5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvdGVzdF9zdHJ1Y3Rfb3BzX211bHRpX2FyZ3MuYwppbmRleCAwZjMyMWU4ODk4NjIwLi43ZjZmOWQ2MWM5ZTA3IDEwMDY0NAotLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy90ZXN0X3N0cnVjdF9vcHNfbXVsdGlfYXJncy5jCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3Rlc3Rfc3RydWN0X29wc19tdWx0aV9hcmdzLmMKQEAgLTMsNyAmIzQzOzMsNTQgQEAKICNpbmNsdWRlICZsdDt0ZXN0X3Byb2dzLmgmZ3Q7CiAjaW5jbHVkZSAmIzM0O3N0cnVjdF9vcHNfbXVsdGlfYXJncy5za2VsLmgmIzM0OwogCiYjNDM7c3RhdGljIHZvaWQgdGVzdF9yZWZjb3VudGVkX211bHRpKHZvaWQpCiYjNDM7ewomIzQzOwlzdHJ1Y3Qgc3RydWN0X29wc19tdWx0aV9hcmdzICpza2VsOwomIzQzOwlpbnQgZXJyOwomIzQzOwomIzQzOwlza2VsID0gc3RydWN0X29wc19tdWx0aV9hcmdzX19vcGVuKCk7CiYjNDM7CWlmICghQVNTRVJUX09LX1BUUihza2VsLCAmIzM0O3N0cnVjdF9vcHNfbXVsdGlfYXJnc19fb3BlbiYjMzQ7KSkKJiM0MzsJCXJldHVybjsKJiM0MzsKJiM0MzsJZXJyID0gc3RydWN0X29wc19tdWx0aV9hcmdzX19sb2FkKHNrZWwpOwomIzQzOwlBU1NFUlRfRVEoZXJyLCAtRUlOVkFMLCAmIzM0O3N0cnVjdF9vcHNfbXVsdGlfYXJnc19fbG9hZCYjMzQ7KTsKJiM0MzsKJiM0MzsJc3RydWN0X29wc19tdWx0aV9hcmdzX19kZXN0cm95KHNrZWwpOwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgdm9pZCB0ZXN0X3RyYW1wb2xpbmVfc3RhY2tfYXJncyh2b2lkKQomIzQzO3sKJiM0MzsJc3RydWN0IHN0cnVjdF9vcHNfbXVsdGlfYXJncyAqc2tlbDsKJiM0MzsJc3RydWN0IGJwZl9saW5rICpsaW5rID0gTlVMTDsKJiM0MzsJaW50IGVycjsKJiM0MzsKJiM0MzsJc2tlbCA9IHN0cnVjdF9vcHNfbXVsdGlfYXJnc19fb3BlbigpOwomIzQzOwlpZiAoIUFTU0VSVF9PS19QVFIoc2tlbCwgJiMzNDtzdHJ1Y3Rfb3BzX211bHRpX2FyZ3NfX29wZW4mIzM0OykpCiYjNDM7CQlyZXR1cm47CiYjNDM7CiYjNDM7CWJwZl9wcm9ncmFtX19zZXRfYXV0b2xvYWQoc2tlbC0mZ3Q7cHJvZ3MudGVzdF9yZWZjb3VudGVkX211bHRpLCBmYWxzZSk7CiYjNDM7CXNrZWwtJmd0O3N0cnVjdF9vcHMudGVzdG1vZF9yZWZfYWNxdWlyZS0mZ3Q7dGVzdF9yZWZjb3VudGVkX211bHRpID0gTlVMTDsKJiM0MzsKJiM0MzsJZXJyID0gc3RydWN0X29wc19tdWx0aV9hcmdzX19sb2FkKHNrZWwpOwomIzQzOwlpZiAoIUFTU0VSVF9PSyhlcnIsICYjMzQ7c3RydWN0X29wc19tdWx0aV9hcmdzX19sb2FkJiMzNDspKQomIzQzOwkJZ290byBvdXQ7CiYjNDM7CiYjNDM7CWxpbmsgPSBicGZfbWFwX19hdHRhY2hfc3RydWN0X29wcyhza2VsLSZndDttYXBzLnRlc3Rtb2RfcmVmX2FjcXVpcmUpOwomIzQzOwlpZiAoIUFTU0VSVF9PS19QVFIobGluaywgJiMzNDticGZfbWFwX19hdHRhY2hfc3RydWN0X29wcyYjMzQ7KSkKJiM0MzsJCWdvdG8gb3V0OwomIzQzOwomIzQzOwlBU1NFUlRfRVEoc2tlbC0mZ3Q7YnNzLSZndDtnb3RfYXJnOSwgOTk5OSwgJiMzNDtjaGVja19zdGFja19wYXNzZWRfYXJnOSYjMzQ7KTsKJiM0MzsKJiM0MztvdXQ6CiYjNDM7CWJwZl9saW5rX19kZXN0cm95KGxpbmspOwomIzQzOwlzdHJ1Y3Rfb3BzX211bHRpX2FyZ3NfX2Rlc3Ryb3koc2tlbCk7CiYjNDM7fQomIzQzOwogdm9pZCB0ZXN0X3N0cnVjdF9vcHNfbXVsdGlfYXJncyh2b2lkKQogewotCVJVTl9URVNUUyhzdHJ1Y3Rfb3BzX211bHRpX2FyZ3MpOwomIzQzOwlpZiAodGVzdF9fc3RhcnRfc3VidGVzdCgmIzM0O3Rlc3RfcmVmY291bnRlZF9tdWx0aSYjMzQ7KSkKJiM0MzsJCXRlc3RfcmVmY291bnRlZF9tdWx0aSgpOwomIzQzOwomIzQzOwlpZiAodGVzdF9fc3RhcnRfc3VidGVzdCgmIzM0O3Rlc3RfdHJhbXBvbGluZV9zdGFja19hcmdzJiMzNDspKQomIzQzOwkJdGVzdF90cmFtcG9saW5lX3N0YWNrX2FyZ3MoKTsKIH0KZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9zdHJ1Y3Rfb3BzX211bHRpX2FyZ3MuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9zdHJ1Y3Rfb3BzX211bHRpX2FyZ3MuYwppbmRleCBjNjJiZTE1NzU3ZjA0Li5mMGY0NzY3NmIwOTlhIDEwMDY0NAotLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mvc3RydWN0X29wc19tdWx0aV9hcmdzLmMKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3N0cnVjdF9vcHNfbXVsdGlfYXJncy5jCkBAIC0yOSw3ICYjNDM7MjksMjAgQEAgaW50IHRlc3RfcmVmY291bnRlZF9tdWx0aSh1bnNpZ25lZCBsb25nIGxvbmcgKmN0eCkKIAlyZXR1cm4gMDsKIH0KIAomIzQzO19fdTY0IGdvdF9hcmc5ID0gMDsKJiM0MzsKJiM0MztTRUMoJiMzNDtzdHJ1Y3Rfb3BzL3Rlc3RfdHJhbXBvbGluZV9zdGFja19hcmdzJiMzNDspCiYjNDM7aW50IEJQRl9QUk9HKHRlc3RfdHJhbXBvbGluZV9zdGFja19hcmdzLCBpbnQgYXJnMSwgaW50IGFyZzIsIGludCBhcmczLAomIzQzOwkJCQkJIGludCBhcmc0LCBpbnQgYXJnNSwgaW50IGFyZzYsCiYjNDM7CQkJCQkgaW50IGFyZzcsIGludCBhcmc4LCBpbnQgYXJnOSkKJiM0Mzt7CiYjNDM7CWdvdF9hcmc5ID0gYXJnOTsKJiM0MzsKJiM0MzsJcmV0dXJuIDA7CiYjNDM7fQomIzQzOwogU0VDKCYjMzQ7LnN0cnVjdF9vcHMubGluayYjMzQ7KQogc3RydWN0IGJwZl90ZXN0bW9kX29wcyB0ZXN0bW9kX3JlZl9hY3F1aXJlID0gewogCS50ZXN0X3JlZmNvdW50ZWRfbXVsdGkgPSAodm9pZCAqKXRlc3RfcmVmY291bnRlZF9tdWx0aSwKJiM0MzsJLnRlc3RfdHJhbXBvbGluZV9zdGFja19hcmdzID0gKHZvaWQgKil0ZXN0X3RyYW1wb2xpbmVfc3RhY2tfYXJncywKIH07CmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdGVzdF9rbW9kcy9icGZfdGVzdG1vZC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Rlc3Rfa21vZHMvYnBmX3Rlc3Rtb2QuYwppbmRleCAyMzgwYjZjYmRlYWRjLi44ZjA3NDRlNjA3NWIzIDEwMDY0NAotLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdGVzdF9rbW9kcy9icGZfdGVzdG1vZC5jCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi90ZXN0X2ttb2RzL2JwZl90ZXN0bW9kLmMKQEAgLTE2NzgsNiAmIzQzOzE2NzgsOSBAQCBzdGF0aWMgYm9vbCBicGZfdGVzdG1vZF9vcHNfaXNfdmFsaWRfYWNjZXNzKGludCBvZmYsIGludCBzaXplLAogCXJldHVybiBicGZfdHJhY2luZ19idGZfY3R4X2FjY2VzcyhvZmYsIHNpemUsIHR5cGUsIHByb2csIGluZm8pOwogfQogCiYjNDM7c3RhdGljIERFRklORV9NVVRFWChzdF9vcHNfdHJhbXBvbGluZV9tdXRleCk7CiYjNDM7c3RhdGljIHN0cnVjdCBicGZfdGVzdG1vZF9vcHMgKnN0X29wc190cmFtcG9saW5lOwomIzQzOwogc3RhdGljIGludCBicGZfdGVzdG1vZF9vcHNfaW5pdF9tZW1iZXIoY29uc3Qgc3RydWN0IGJ0Zl90eXBlICp0LAogCQkJCSAgICAgICBjb25zdCBzdHJ1Y3QgYnRmX21lbWJlciAqbWVtYmVyLAogCQkJCSAgICAgICB2b2lkICprZGF0YSwgY29uc3Qgdm9pZCAqdWRhdGEpCkBAIC0xNjkxLDYgJiM0MzsxNjk0LDE4IEBAIHN0YXRpYyBpbnQgYnBmX3Rlc3Rtb2Rfb3BzX2luaXRfbWVtYmVyKGNvbnN0IHN0cnVjdCBidGZfdHlwZSAqdCwKIAkJKChzdHJ1Y3QgYnBmX3Rlc3Rtb2Rfb3BzICopa2RhdGEpLSZndDtkYXRhID0gKChzdHJ1Y3QgYnBmX3Rlc3Rtb2Rfb3BzICopdWRhdGEpLSZndDtkYXRhOwogCQlyZXR1cm4gMTsKIAl9CiYjNDM7CiYjNDM7CWlmIChtZW1iZXItJmd0O29mZnNldCA9PSBvZmZzZXRvZihzdHJ1Y3QgYnBmX3Rlc3Rtb2Rfb3BzLCB0ZXN0X3RyYW1wb2xpbmVfc3RhY2tfYXJncykgKiA4KSB7CiYjNDM7CQltdXRleF9sb2NrKCZhbXA7c3Rfb3BzX3RyYW1wb2xpbmVfbXV0ZXgpOwomIzQzOwkJaWYgKHN0X29wc190cmFtcG9saW5lKSB7CiYjNDM7CQkJcHJfZXJyKCYjMzQ7c3Rfb3BzX3RyYW1wb2xpbmUgaGFzIGFscmVhZHkgYmVlbiByZWdpc3RlcmVkXG4mIzM0Oyk7CiYjNDM7CQkJbXV0ZXhfdW5sb2NrKCZhbXA7c3Rfb3BzX3RyYW1wb2xpbmVfbXV0ZXgpOwomIzQzOwkJCXJldHVybiAtRUVYSVNUOwomIzQzOwkJfQomIzQzOwkJc3Rfb3BzX3RyYW1wb2xpbmUgPSAoc3RydWN0IGJwZl90ZXN0bW9kX29wcyAqKWtkYXRhOwomIzQzOwkJbXV0ZXhfdW5sb2NrKCZhbXA7c3Rfb3BzX3RyYW1wb2xpbmVfbXV0ZXgpOwomIzQzOwl9CiYjNDM7CiAJcmV0dXJuIDA7CiB9CiAKQEAgLTE3MjAsMTEgJiM0MzsxNzM1LDIwIEBAIHN0YXRpYyBpbnQgYnBmX2R1bW15X3JlZyh2b2lkICprZGF0YSwgc3RydWN0IGJwZl9saW5rICpsaW5rKQogCWlmIChvcHMtJmd0O3Rlc3RfMikKIAkJb3BzLSZndDt0ZXN0XzIoNCwgb3BzLSZndDtkYXRhKTsKIAomIzQzOwltdXRleF9sb2NrKCZhbXA7c3Rfb3BzX3RyYW1wb2xpbmVfbXV0ZXgpOwomIzQzOwlpZiAoc3Rfb3BzX3RyYW1wb2xpbmUgJmFtcDsmYW1wOyBzdF9vcHNfdHJhbXBvbGluZS0mZ3Q7dGVzdF90cmFtcG9saW5lX3N0YWNrX2FyZ3MpCiYjNDM7CQlzdF9vcHNfdHJhbXBvbGluZS0mZ3Q7dGVzdF90cmFtcG9saW5lX3N0YWNrX2FyZ3MoMSwgMiwgMywgNCwgNSwgNiwgNywgOCwgOTk5OSk7CiYjNDM7CW11dGV4X3VubG9jaygmYW1wO3N0X29wc190cmFtcG9saW5lX211dGV4KTsKJiM0MzsKIAlyZXR1cm4gMDsKIH0KIAogc3RhdGljIHZvaWQgYnBmX2R1bW15X3VucmVnKHZvaWQgKmtkYXRhLCBzdHJ1Y3QgYnBmX2xpbmsgKmxpbmspCiB7CiYjNDM7CW11dGV4X2xvY2soJmFtcDtzdF9vcHNfdHJhbXBvbGluZV9tdXRleCk7CiYjNDM7CWlmIChzdF9vcHNfdHJhbXBvbGluZSA9PSAoc3RydWN0IGJwZl90ZXN0bW9kX29wcyAqKWtkYXRhKQomIzQzOwkJc3Rfb3BzX3RyYW1wb2xpbmUgPSBOVUxMOwomIzQzOwltdXRleF91bmxvY2soJmFtcDtzdF9vcHNfdHJhbXBvbGluZV9tdXRleCk7CiB9CiAKIHN0YXRpYyBpbnQgYnBmX3Rlc3Rtb2RfdGVzdF8xKHZvaWQpCkBAIC0xNzY2LDYgJiM0MzsxNzkwLDEzIEBAIGJwZl90ZXN0bW9kX29wc19fdGVzdF9yZXR1cm5fcmVmX2twdHIoaW50IGR1bW15LCBzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRhc2tfX3JlZiwKIAlyZXR1cm4gTlVMTDsKIH0KIAomIzQzO3N0YXRpYyBpbnQgYnBmX3Rlc3Rtb2Rfb3BzX190ZXN0X3RyYW1wb2xpbmVfc3RhY2tfYXJncyhpbnQgYXJnMSwgaW50IGFyZzIsIGludCBhcmczLAomIzQzOwkJCQkJCSAgICAgICBpbnQgYXJnNCwgaW50IGFyZzUsIGludCBhcmc2LAomIzQzOwkJCQkJCSAgICAgICBpbnQgYXJnNywgaW50IGFyZzgsIGludCBhcmc5KQomIzQzO3sKJiM0MzsJcmV0dXJuIGFyZzk7CiYjNDM7fQomIzQzOwogc3RhdGljIHN0cnVjdCBicGZfdGVzdG1vZF9vcHMgX19icGZfdGVzdG1vZF9vcHMgPSB7CiAJLnRlc3RfMSA9IGJwZl90ZXN0bW9kX3Rlc3RfMSwKIAkudGVzdF8yID0gYnBmX3Rlc3Rtb2RfdGVzdF8yLApAQCAtMTc3Myw2ICYjNDM7MTgwNCw3IEBAIHN0YXRpYyBzdHJ1Y3QgYnBmX3Rlc3Rtb2Rfb3BzIF9fYnBmX3Rlc3Rtb2Rfb3BzID0gewogCS50ZXN0X3JlZmNvdW50ZWQgPSBicGZfdGVzdG1vZF9vcHNfX3Rlc3RfcmVmY291bnRlZCwKIAkudGVzdF9yZWZjb3VudGVkX211bHRpID0gYnBmX3Rlc3Rtb2Rfb3BzX190ZXN0X3JlZmNvdW50ZWRfbXVsdGksCiAJLnRlc3RfcmV0dXJuX3JlZl9rcHRyID0gYnBmX3Rlc3Rtb2Rfb3BzX190ZXN0X3JldHVybl9yZWZfa3B0ciwKJiM0MzsJLnRlc3RfdHJhbXBvbGluZV9zdGFja19hcmdzID0gYnBmX3Rlc3Rtb2Rfb3BzX190ZXN0X3RyYW1wb2xpbmVfc3RhY2tfYXJncywKIH07CiAKIHN0cnVjdCBicGZfc3RydWN0X29wcyBicGZfYnBmX3Rlc3Rtb2Rfb3BzID0gewpkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Rlc3Rfa21vZHMvYnBmX3Rlc3Rtb2QuaCBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi90ZXN0X2ttb2RzL2JwZl90ZXN0bW9kLmgKaW5kZXggMjEwYjkxOTI5MGNjMi4uNDIyNTdhZTg5ZmQ1YiAxMDA2NDQKLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Rlc3Rfa21vZHMvYnBmX3Rlc3Rtb2QuaAomIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdGVzdF9rbW9kcy9icGZfdGVzdG1vZC5oCkBAIC00Niw2ICYjNDM7NDYsMTEgQEAgc3RydWN0IGJwZl90ZXN0bW9kX29wcyB7CiAJc3RydWN0IHRhc2tfc3RydWN0ICooKnRlc3RfcmV0dXJuX3JlZl9rcHRyKShpbnQgZHVtbXksIHN0cnVjdCB0YXNrX3N0cnVjdCAqdGFzaywKIAkJCQkJCSAgICBzdHJ1Y3QgY2dyb3VwICpjZ3JwKTsKIAomIzQzOwkvKiBVc2VkIHRvIHRlc3QgaW5kaXJlY3Qgc3RydWN0X29wcyB0cmFtcG9saW5lcyBzdGFjay1wYXNzZWQgYXJndW1lbnRzICgmZ3Q7OCBhcmdzKS4gKi8KJiM0MzsJaW50ICgqdGVzdF90cmFtcG9saW5lX3N0YWNrX2FyZ3MpKGludCBhcmcxLCBpbnQgYXJnMiwgaW50IGFyZzMsCiYjNDM7CQkJCQkgIGludCBhcmc0LCBpbnQgYXJnNSwgaW50IGFyZzYsCiYjNDM7CQkJCQkgIGludCBhcmc3LCBpbnQgYXJnOCwgaW50IGFyZzkpOwomIzQzOwogCS8qIFRoZSBmb2xsb3dpbmcgZmllbGRzIGFyZSB1c2VkIHRvIHRlc3Qgc2hhZG93IGNvcGllcy4gKi8KIAljaGFyIG9uZWJ5dGU7CiAJc3RydWN0IHsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzEgMDk6Mjc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDU2MwoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDQ0OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFBhdGNoOiBXb3J0aCBGdXp6aW5nPyoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBGaXJzdCwgSSBzZWUgdGhlIHBhdGNoIG1vZGlmaWVzIHNldmVyYWwgZmlsZXMsIHNwZWNpZmljYWxseSB3aXRoaW4gYHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9gLiBUaGlzIGluY2x1ZGVzIGNoYW5nZXMgdG8gYHRlc3Rfc3RydWN0X29wc19tdWx0aV9hcmdzLmNgLCBgc3RydWN0X29wc19tdWx0aV9hcmdzLmNgLCBhbmQgaW1wb3J0YW50bHksIGBicGZfdGVzdG1vZC5jYCBhbmQgYC5oYC4KCk15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRvIGRldGVybWluZSB0aGUgc2NvcGUgb2YgdGhlc2UgY2hhbmdlcy4gQXJlIHdlICpqdXN0KiBkZWFsaW5nIHdpdGggc2VsZi10ZXN0cywgb3IgaXMgdGhpcyB0b3VjaGluZyBzb21ldGhpbmcgbW9yZSBmdW5kYW1lbnRhbD8gSSBuZWVkIHRvIHF1aWNrbHkgYXNjZXJ0YWluIGlmIHRoZXNlIG1vZGlmaWNhdGlvbnMgYmxlZWQgaW50byB0aGUgY29yZSBrZXJuZWwgb3IgZHJpdmVycyBpbiBhIHdheSB0aGF0IHdvdWxkIG1ha2UgdGhpcyBwYXRjaCBmdXp6YWJsZS4gQSBxdWljayBgZ2l0IHN0YXR1c2AsIG9yIGEgcXVpY2sgZ3JlcCB0aHJvdWdoIHRoZSBkaWZmLCB3b3VsZCBiZSBteSBnby10bywgYnV0IGZyb20gd2hhdCBJJiMzOTttIHNlZWluZywgaXQgYXBwZWFycyBjb25maW5lZCB0byBgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHNgLgoKVGhlIGluY2x1c2lvbiBvZiBgYnBmX3Rlc3Rtb2RgIGRvZXMgcmFpc2UgYSBmbGFnLCB0aG91Z2guIElzIHRoaXMgYSAqZ2VudWluZSogdGVzdCBtb2R1bGUsIGNvbnRhaW5lZCBzb2xlbHkgd2l0aGluIHRoZSBzZWxmdGVzdHMgZGlyZWN0b3J5PyBPciBpcyB0aGlzIHNvbWV0aGluZyB0aGF0IGNvdWxkIHNvbWVob3cgaW50cm9kdWNlIGEgdnVsbmVyYWJpbGl0eS4gSSBrbm93IGZyb20gZXhwZXJpZW5jZSB0aGF0IGNoYW5nZXMgKnN0cmljdGx5KiB3aXRoaW4gYHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzLy4uLmAgdHlwaWNhbGx5IGRvbiYjMzk7dCBpbXBhY3QgdGhlIGNydWNpYWwgYXNwZWN0cy4KClNvLCBsZXQgbWUgcmVmcmVzaCB0aGUgZ3VpZGVsaW5lcy4gVGhlIGluc3RydWN0aW9ucyBjbGVhcmx5IHN0YXRlIHRoYXQgaWYgaXQmIzM5O3MgZG9jdW1lbnRhdGlvbiwgS2NvbmZpZywgb3IgY29tbWVudHMsIHdlIGlnbm9yZSBpdC4gVGhlIGNyaXRpY2FsIHBhcnQgaXMgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMuIEkgbmVlZCB0byBlc3RhYmxpc2ggaWYgdGhpcyB0b3VjaGVzIGFueXRoaW5nIHJlYWNoYWJsZSBvdXRzaWRlIHRoZSBzZWxmdGVzdHMgZGlyZWN0b3J5LgoKVGhlIGZhY3QgdGhhdCBpdCYjMzk7cyBpbiBgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHNgIHN0cm9uZ2x5IHN1Z2dlc3RzIGl0JiMzOTtzIGEgdGVzdCBzZXR1cCwgbm90IGRpcmVjdGx5IGltcGFjdGluZyBjb3JlIGZ1bmN0aW9uYWxpdHkuIEkmIzM5O20gZ29pbmcgdG8gcXVpY2tseSBjb25maXJtIHdoZXJlIGBicGZfdGVzdG1vZGAgbGl2ZXMgd2l0aCBgZ3JlcHBlcmAsIGJ1dCBteSBpbml0aWFsIGFzc2Vzc21lbnQgaXMgdGhhdCB0aGlzIGlzICpub3QqIHdvcnRoIGZ1enppbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzEgMDk6Mjc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YnBmX3Rlc3Rtb2QmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDt0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgMjUzMCBsaW5lcy5cblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cblxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL01ha2VmaWxlPTEzMz1URVNUX1BST0dTX0VYVEVOREVEIDo9IFxcXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL01ha2VmaWxlLTEzNS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9NYWtlZmlsZToxMzY6VEVTVF9LTU9EUyA6PSBicGZfdGVzdG1vZC5rbyBicGZfdGVzdF9ub19jZmkua28gYnBmX3Rlc3RfbW9kb3JkZXJfeC5rbyBcXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL01ha2VmaWxlLTEzNy1cdGJwZl90ZXN0X21vZG9yZGVyX3kua28gYnBmX3Rlc3RfcnFzcGlubG9jay5rb1xuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2FnZ3JlZ2F0ZV9yZXQuYz05PXN0YXRpYyBib29sIHRlc3Rtb2RfaGFzX2FyZW5hX3RhZ2dlZF9tZW1iZXIodm9pZClcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9hZ2dyZWdhdGVfcmV0LmMtMTktXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9hZ2dyZWdhdGVfcmV0LmM6MjA6XHRtb2R1bGVfYnRmID0gYnRmX19sb2FkX21vZHVsZV9idGYoXCYjMzQ7YnBmX3Rlc3Rtb2RcJiMzNDssIHZtbGludXhfYnRmKTtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2FnZ3JlZ2F0ZV9yZXQuYy0yMS1cdGlmICghbW9kdWxlX2J0Zilcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9hdHRhY2hfcHJvYmUuYz0xNzE9c3RhdGljIHZvaWQgdGVzdF9hdHRhY2hfa3Byb2JlX2xlZ2FjeV9ieV9hZGRyX3JlamVjdCh2b2lkKVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2F0dGFjaF9wcm9iZS5jLTIwMS0gKiBicGZfZmVudHJ5X3NoYWRvd190ZXN0IGV4aXN0cyBpbiBib3RoIHZtbGludXggKG5ldC9icGYvdGVzdF9ydW4uYykgYW5kXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9hdHRhY2hfcHJvYmUuYzoyMDI6ICogYnBmX3Rlc3Rtb2QgKGJwZl90ZXN0bW9kLmMpLiBXaGVuIGJwZl90ZXN0bW9kIGlzIGxvYWRlZCB0aGUgc3ltYm9sIGlzXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9hdHRhY2hfcHJvYmUuYy0yMDMtICogZHVwbGljYXRlZC4gVGVzdCB0aGF0IGtwcm9iZSBhdHRhY2htZW50IGhhbmRsZXMgdGhpcyBjb3JyZWN0bHk6XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9hdHRhY2hfcHJvYmUuYy0yMDQtICogLSBVbnF1YWxpZmllZCBuYW1lIChcJiMzNDticGZfZmVudHJ5X3NoYWRvd190ZXN0XCYjMzQ7KSBhdHRhY2hlcyB0byB2bWxpbnV4LlxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvYXR0YWNoX3Byb2JlLmM6MjA1OiAqIC0gTU9EOlNZTSBuYW1lIChcJiMzNDticGZfdGVzdG1vZDpicGZfZmVudHJ5X3NoYWRvd190ZXN0XCYjMzQ7KSBhdHRhY2hlcyB0byBtb2R1bGUuXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9hdHRhY2hfcHJvYmUuYy0yMDYtICpcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9hdHRhY2hfcHJvYmUuYz0yMTA9c3RhdGljIHZvaWQgdGVzdF9hdHRhY2hfcHJvYmVfZHVwX3N5bShlbnVtIHByb2JlX2F0dGFjaF9tb2RlIGF0dGFjaF9tb2RlKVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2F0dGFjaF9wcm9iZS5jLTI0MS1cdGtwcm9iZV9saW5rID0gYnBmX3Byb2dyYW1fX2F0dGFjaF9rcHJvYmVfb3B0cyhza2VsLVx1MDAzZXByb2dzLmhhbmRsZV9rcHJvYmUsXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9hdHRhY2hfcHJvYmUuYzoyNDI6XHRcdFx0XHRcdFx0ICAgICAgXCYjMzQ7YnBmX3Rlc3Rtb2Q6YnBmX2ZlbnRyeV9zaGFkb3dfdGVzdFwmIzM0OyxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2F0dGFjaF9wcm9iZS5jLTI0My1cdFx0XHRcdFx0XHQgICAgICBcdTAwMjZrcHJvYmVfb3B0cyk7XG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvYXR0YWNoX3Byb2JlLmMtMjQ5LVx0a3JldHByb2JlX2xpbmsgPSBicGZfcHJvZ3JhbV9fYXR0YWNoX2twcm9iZV9vcHRzKHNrZWwtXHUwMDNlcHJvZ3MuaGFuZGxlX2tyZXRwcm9iZSxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2F0dGFjaF9wcm9iZS5jOjI1MDpcdFx0XHRcdFx0XHRcdCBcJiMzNDticGZfdGVzdG1vZDpicGZfZmVudHJ5X3NoYWRvd190ZXN0XCYjMzQ7LFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvYXR0YWNoX3Byb2JlLmMtMjUxLVx0XHRcdFx0XHRcdFx0IFx1MDAyNmtwcm9iZV9vcHRzKTtcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9hdHRhY2hfcHJvYmUuYz0zMDc9c3RhdGljIHZvaWQgdGVzdF9hdHRhY2hfa3Byb2JlX2xvbmdfZXZlbnRfbmFtZSh2b2lkKVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2F0dGFjaF9wcm9iZS5jLTMyMC1cdGtwcm9iZV9saW5rID0gYnBmX3Byb2dyYW1fX2F0dGFjaF9rcHJvYmVfb3B0cyhza2VsLVx1MDAzZXByb2dzLmhhbmRsZV9rcHJvYmUsXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9hdHRhY2hfcHJvYmUuYzozMjE6XHRcdFx0XHRcdFx0ICAgICAgXCYjMzQ7YnBmX3Rlc3Rtb2RfbG9vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29uZ19uYW1lXCYjMzQ7LFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvYXR0YWNoX3Byb2JlLmMtMzIyLVx0XHRcdFx0XHRcdCAgICAgIFx1MDAyNmtwcm9iZV9vcHRzKTtcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9hdHRhY2hfcHJvYmUuYy0zMjgtXHRrcmV0cHJvYmVfbGluayA9IGJwZl9wcm9ncmFtX19hdHRhY2hfa3Byb2JlX29wdHMoc2tlbC1cdTAwM2Vwcm9ncy5oYW5kbGVfa3JldHByb2JlLFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvYXR0YWNoX3Byb2JlLmM6MzI5Olx0XHRcdFx0XHRcdFx0IFwmIzM0O2JwZl90ZXN0bW9kX2xvb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vbmdfbmFtZVwmIzM0OyxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2F0dGFjaF9wcm9iZS5jLTMzMC1cdFx0XHRcdFx0XHRcdCBcdTAwMjZrcHJvYmVfb3B0cyk7XG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvYnBmX21vZF9yYWNlLmM9NDg9c3RhdGljIHZvaWQgKmxvYWRfbW9kdWxlX3RocmVhZCh2b2lkICpwKVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2JwZl9tb2RfcmFjZS5jLTUwLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvYnBmX21vZF9yYWNlLmM6NTE6XHRpZiAoIUFTU0VSVF9ORVEobG9hZF9icGZfdGVzdG1vZChmYWxzZSksIDAsIFwmIzM0O2xvYWRfbW9kdWxlX3RocmVhZCBtdXN0IGZhaWxcJiMzNDspKVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvYnBmX21vZF9yYWNlLmMtNTItXHRcdGF0b21pY19zdG9yZShcdTAwMjZzdGF0ZSwgVFNfTU9EVUxFX0xPQUQpO1xuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2JwZl9tb2RfcmFjZS5jPTkwPXN0YXRpYyB2b2lkIHRlc3RfYnBmX21vZF9yYWNlX2NvbmZpZyhjb25zdCBzdHJ1Y3QgdGVzdF9jb25maWcgKmNvbmZpZylcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9icGZfbW9kX3JhY2UuYy0xMDItXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9icGZfbW9kX3JhY2UuYzoxMDM6XHRpZiAoIUFTU0VSVF9PSyh1bmxvYWRfYnBmX3Rlc3Rtb2QoZmFsc2UpLCBcJiMzNDt1bmxvYWQgYnBmX3Rlc3Rtb2RcJiMzNDspKVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvYnBmX21vZF9yYWNlLmMtMTA0LVx0XHRnb3RvIGVuZF9tbWFwO1xuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2JwZl9tb2RfcmFjZS5jLTE4MC1lbmRfbW9kdWxlOlxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvYnBmX21vZF9yYWNlLmM6MTgxOlx0dW5sb2FkX2JwZl90ZXN0bW9kKGZhbHNlKTtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2JwZl9tb2RfcmFjZS5jOjE4MjpcdEFTU0VSVF9PSyhsb2FkX2JwZl90ZXN0bW9kKGZhbHNlKSwgXCYjMzQ7cmVzdG9yZSBicGZfdGVzdG1vZFwmIzM0Oyk7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9icGZfbW9kX3JhY2UuYy0xODMtZW5kX21tYXA6XG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvYnRmX2RlZHVwX3NwbGl0LmM9MzcyPXN0YXRpYyB2b2lkIHRlc3Rfc3BsaXRfZHVwX3N0cnVjdF9pbl9jdSgpXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvYnRmX2RlZHVwX3NwbGl0LmMtNDYyLSAqXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9idGZfZGVkdXBfc3BsaXQuYzo0NjM6ICogYnBmX3Rlc3Rtb2RfdGVzdF93cml0ZSgpIGhhcyBtdWx0aXBsZSBjb3JlIGtlcm5lbCB0eXBlIHBhcmFtZXRlcnM7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9idGZfZGVkdXBfc3BsaXQuYy00NjQtICpcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2J0Zl9kZWR1cF9zcGxpdC5jLTQ2NS0gKiBzc2l6ZV90XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9idGZfZGVkdXBfc3BsaXQuYzo0NjY6ICogYnBmX3Rlc3Rtb2RfdGVzdF93cml0ZShzdHJ1Y3QgZmlsZSAqZmlsZSwgc3RydWN0IGtvYmplY3QgKmtvYmosXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9idGZfZGVkdXBfc3BsaXQuYy00NjctICogICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgYmluX2F0dHJpYnV0ZSAqYmluX2F0dHIsXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvYnRmX2RlZHVwX3NwbGl0LmM9NDgxPWNvbnN0IGNoYXIgKm1vZF9mdW5jc1tdID0ge1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvYnRmX2RlZHVwX3NwbGl0LmM6NDgyOlx0XCYjMzQ7YnBmX3Rlc3Rtb2RfdGVzdF93cml0ZVwmIzM0OyxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2J0Zl9kZWR1cF9zcGxpdC5jLTQ4My1cdFwmIzM0O2JwZl9rZnVuY19jYWxsX3Rlc3QzXCYjMzQ7LFxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2J0Zl9kZWR1cF9zcGxpdC5jPTQ4Nz1zdGF0aWMgdm9pZCB0ZXN0X3NwbGl0X21vZHVsZSh2b2lkKVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2J0Zl9kZWR1cF9zcGxpdC5jLTQ5OC1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2J0Zl9kZWR1cF9zcGxpdC5jOjQ5OTpcdGJ0ZjEgPSBidGZfX3BhcnNlX3NwbGl0KFwmIzM0Oy9zeXMva2VybmVsL2J0Zi9icGZfdGVzdG1vZFwmIzM0Oywgdm1saW51eF9idGYpO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvYnRmX2RlZHVwX3NwbGl0LmMtNTAwLVx0aWYgKCFBU1NFUlRfT0tfUFRSKGJ0ZjEsIFwmIzM0O3NwbGl0X2J0ZlwmIzM0OykpXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvYnRmX2RlZHVwX3NwbGl0LmMtNTIyLVx0XHRmb3IgKGogPSAwLCBwID0gYnRmX3BhcmFtcyh0KTsgaiBcdTAwM2MgdmxlbjsgaiYjNDM7JiM0MzssIHAmIzQzOyYjNDM7KSB7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9idGZfZGVkdXBfc3BsaXQuYzo1MjM6XHRcdFx0LyogYnBmX3Rlc3Rtb2QgdXNlcyByZXNpbGllbnQgc3BsaXQgQlRGLCBzbyBhbnlcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2J0Zl9kZWR1cF9zcGxpdC5jLTUyNC1cdFx0XHQgKiByZWZlcmVuY2UgdHlwZXMgd2lsbCBiZSBhZGRlZCB0byBzcGxpdCBCVEYgYW5kIHRoZWlyXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvYnRmX21vZHVsZS5jLTYtXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9idGZfbW9kdWxlLmM6NzpzdGF0aWMgY29uc3QgY2hhciAqbW9kdWxlX25hbWUgPSBcJiMzNDticGZfdGVzdG1vZFwmIzM0OztcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2J0Zl9tb2R1bGUuYzo4OnN0YXRpYyBjb25zdCBjaGFyICpzeW1ib2xfbmFtZSA9IFwmIzM0O2JwZl90ZXN0bW9kX3Rlc3RfcmVhZFwmIzM0OztcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2J0Zl9tb2R1bGUuYy05LVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2J0Zl90YWcuYz01ND1zdGF0aWMgaW50IGxvYWRfYnRmcyhzdHJ1Y3QgYnRmICoqdm1saW51eF9idGYsIHN0cnVjdCBidGYgKiptb2R1bGVfYnRmLFxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2J0Zl90YWcuYy01Ni17XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9idGZfdGFnLmM6NTc6XHRjb25zdCBjaGFyICptb2R1bGVfbmFtZSA9IFwmIzM0O2JwZl90ZXN0bW9kXCYjMzQ7O1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvYnRmX3RhZy5jLTU4LVx0X19zMzIgdHlwZV9pZDtcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9jb3JlX3JlbG9jLmMtNC0jaW5jbHVkZSBcJiMzNDtwcm9ncy9jb3JlX3JlbG9jX3R5cGVzLmhcJiMzNDtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2NvcmVfcmVsb2MuYzo1OiNpbmNsdWRlIFwmIzM0O3Rlc3Rfa21vZHMvYnBmX3Rlc3Rtb2QuaFwmIzM0O1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvY29yZV9yZWxvYy5jLTYtI2luY2x1ZGUgXHUwMDNjbGludXgvbGltaXRzLmhcdTAwM2Vcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9jb3JlX3JlbG9jLmM9MTI9c3RhdGljIGludCBkdXJhdGlvbiA9IDA7XG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvY29yZV9yZWxvYy5jLTIyLVx0Lm91dHB1dCA9IFNUUlVDVF9UT19DSEFSX1BUUihjb3JlX3JlbG9jX21vZHVsZV9vdXRwdXQpIHtcdFxcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9jb3JlX3JlbG9jLmM6MjM6XHRcdC5yZWFkX2N0eF9zeiA9IHNpemVvZihzdHJ1Y3QgYnBmX3Rlc3Rtb2RfdGVzdF9yZWFkX2N0eCksXFxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2NvcmVfcmVsb2MuYy0yNC1cdFx0LnJlYWRfY3R4X2V4aXN0cyA9IHRydWUsXHRcdFx0XHRcXFxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2NvcmVfcmVsb2MuYz01NDk9c3RhdGljIGNvbnN0IHN0cnVjdCBjb3JlX3JlbG9jX3Rlc3RfY2FzZSB0ZXN0X2Nhc2VzW10gPSB7XG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvY29yZV9yZWxvYy5jLTU2OC1cdC8qIHZhbGlkYXRlIHdlIGNhbiBmaW5kIGtlcm5lbCBtb2R1bGUgQlRGIHR5cGVzIGZvciByZWxvY3MvYXR0YWNoICovXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9jb3JlX3JlbG9jLmM6NTY5Olx0TU9EVUxFU19DQVNFKFwmIzM0O21vZHVsZV9wcm9iZWRcJiMzNDssIFwmIzM0O3Rlc3RfY29yZV9tb2R1bGVfcHJvYmVkXCYjMzQ7LCBcJiMzNDticGZfdGVzdG1vZF90ZXN0X3JlYWRcJiMzNDspLFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvY29yZV9yZWxvYy5jLTU3MC1cdE1PRFVMRVNfQ0FTRShcJiMzNDttb2R1bGVfZGlyZWN0XCYjMzQ7LCBcJiMzNDt0ZXN0X2NvcmVfbW9kdWxlX2RpcmVjdFwmIzM0OywgTlVMTCksXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvZ2V0X2JyYW5jaF9zbmFwc2hvdC5jPTc2PXZvaWQgc2VyaWFsX3Rlc3RfZ2V0X2JyYW5jaF9zbmFwc2hvdCh2b2lkKVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2dldF9icmFuY2hfc25hcHNob3QuYy05NS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2dldF9icmFuY2hfc25hcHNob3QuYzo5NjpcdGVyciA9IGthbGxzeW1zX2ZpbmQoXCYjMzQ7YnBmX3Rlc3Rtb2RfbG9vcF90ZXN0XCYjMzQ7LCBcdTAwMjZza2VsLVx1MDAzZWJzcy1cdTAwM2VhZGRyZXNzX2xvdyk7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9nZXRfYnJhbmNoX3NuYXBzaG90LmMtOTctXHRpZiAoIUFTU0VSVF9PSyhlcnIsIFwmIzM0O2thbGxzeW1zX2ZpbmRcJiMzNDspKVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2twcm9iZV9tdWx0aV90ZXN0LmM9NjYzPXN0YXRpYyB2b2lkIHRlc3RfYXR0YWNoX3dyaXRlX2N0eCh2b2lkKVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2twcm9iZV9tdWx0aV90ZXN0LmMtNjcwLSAqIFRlc3Qga3Byb2JlX211bHRpIGhhbmRsZXMgc2hhZG93IHN5bWJvbHMgKHZtbGludXggJiM0MzsgbW9kdWxlIGR1cGxpY2F0ZSkuXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9rcHJvYmVfbXVsdGlfdGVzdC5jOjY3MTogKiBicGZfZmVudHJ5X3NoYWRvd190ZXN0IGV4aXN0cyBpbiBib3RoIHZtbGludXggYW5kIGJwZl90ZXN0bW9kLlxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMva3Byb2JlX211bHRpX3Rlc3QuYy02NzItICoga3Byb2JlX211bHRpIHJlc29sdmVzIHZpYSBmdHJhY2VfbG9va3VwX3N5bWJvbHMoKSB3aGljaCBmaW5kcyB0aGVcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9rcHJvYmVfbXVsdGlfdGVzdG1vZF90ZXN0LmM9NTA9c3RhdGljIHZvaWQgdGVzdF90ZXN0bW9kX2F0dGFjaF9hcGlfYWRkcnModm9pZClcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9rcHJvYmVfbXVsdGlfdGVzdG1vZF90ZXN0LmMtNTQtXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9rcHJvYmVfbXVsdGlfdGVzdG1vZF90ZXN0LmM6NTU6XHRhZGRyc1swXSA9IGtzeW1fZ2V0X2FkZHJfbG9jYWwoa3N5bXMsIFwmIzM0O2JwZl90ZXN0bW9kX2ZlbnRyeV90ZXN0MVwmIzM0Oyk7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9rcHJvYmVfbXVsdGlfdGVzdG1vZF90ZXN0LmMtNTYtXHRBU1NFUlRfTkVRKGFkZHJzWzBdLCAwLCBcJiMzNDtrc3ltX2dldF9hZGRyX2xvY2FsXCYjMzQ7KTtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2twcm9iZV9tdWx0aV90ZXN0bW9kX3Rlc3QuYzo1NzpcdGFkZHJzWzFdID0ga3N5bV9nZXRfYWRkcl9sb2NhbChrc3ltcywgXCYjMzQ7YnBmX3Rlc3Rtb2RfZmVudHJ5X3Rlc3QyXCYjMzQ7KTtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2twcm9iZV9tdWx0aV90ZXN0bW9kX3Rlc3QuYy01OC1cdEFTU0VSVF9ORVEoYWRkcnNbMV0sIDAsIFwmIzM0O2tzeW1fZ2V0X2FkZHJfbG9jYWxcJiMzNDspO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMva3Byb2JlX211bHRpX3Rlc3Rtb2RfdGVzdC5jOjU5Olx0YWRkcnNbMl0gPSBrc3ltX2dldF9hZGRyX2xvY2FsKGtzeW1zLCBcJiMzNDticGZfdGVzdG1vZF9mZW50cnlfdGVzdDNcJiMzNDspO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMva3Byb2JlX211bHRpX3Rlc3Rtb2RfdGVzdC5jLTYwLVx0QVNTRVJUX05FUShhZGRyc1syXSwgMCwgXCYjMzQ7a3N5bV9nZXRfYWRkcl9sb2NhbFwmIzM0Oyk7XG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMva3Byb2JlX211bHRpX3Rlc3Rtb2RfdGVzdC5jPTY4PXN0YXRpYyB2b2lkIHRlc3RfdGVzdG1vZF9hdHRhY2hfYXBpX3N5bXModm9pZClcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9rcHJvYmVfbXVsdGlfdGVzdG1vZF90ZXN0LmMtNzEtXHRjb25zdCBjaGFyICpzeW1zWzNdID0ge1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMva3Byb2JlX211bHRpX3Rlc3Rtb2RfdGVzdC5jOjcyOlx0XHRcJiMzNDticGZfdGVzdG1vZF9mZW50cnlfdGVzdDFcJiMzNDssXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9rcHJvYmVfbXVsdGlfdGVzdG1vZF90ZXN0LmM6NzM6XHRcdFwmIzM0O2JwZl90ZXN0bW9kX2ZlbnRyeV90ZXN0MlwmIzM0OyxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2twcm9iZV9tdWx0aV90ZXN0bW9kX3Rlc3QuYzo3NDpcdFx0XCYjMzQ7YnBmX3Rlc3Rtb2RfZmVudHJ5X3Rlc3QzXCYjMzQ7LFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMva3Byb2JlX211bHRpX3Rlc3Rtb2RfdGVzdC5jLTc1LVx0fTtcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9rc3ltc19tb2R1bGUuYz05PXN0YXRpYyB2b2lkIHRlc3Rfa3N5bXNfbW9kdWxlX2xza2VsKHZvaWQpXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMva3N5bXNfbW9kdWxlLmMtMzAtXHRBU1NFUlRfRVEodG9wdHMucmV0dmFsLCAwLCBcJiMzNDtyZXR2YWxcJiMzNDspO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMva3N5bXNfbW9kdWxlLmM6MzE6XHRBU1NFUlRfRVEoc2tlbC1cdTAwM2Vic3MtXHUwMDNlb3V0X2JwZl90ZXN0bW9kX2tzeW0sIDQyLCBcJiMzNDticGZfdGVzdG1vZF9rc3ltXCYjMzQ7KTtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2tzeW1zX21vZHVsZS5jLTMyLWNsZWFudXA6XG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMva3N5bXNfbW9kdWxlLmM9MzY9c3RhdGljIHZvaWQgdGVzdF9rc3ltc19tb2R1bGVfbGliYnBmKHZvaWQpXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMva3N5bXNfbW9kdWxlLmMtNTctXHRBU1NFUlRfRVEodG9wdHMucmV0dmFsLCAwLCBcJiMzNDtyZXR2YWxcJiMzNDspO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMva3N5bXNfbW9kdWxlLmM6NTg6XHRBU1NFUlRfRVEoc2tlbC1cdTAwM2Vic3MtXHUwMDNlb3V0X2JwZl90ZXN0bW9kX2tzeW0sIDQyLCBcJiMzNDticGZfdGVzdG1vZF9rc3ltXCYjMzQ7KTtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2tzeW1zX21vZHVsZS5jLTU5LWNsZWFudXA6XG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvbW9kdWxlX2F0dGFjaC5jPTEyOT1zdGF0aWMgdm9pZCB0ZXN0X21vZHVsZV9hdHRhY2hfZGV0YWNoKGNvbnN0IGNoYXIgKnByb2dfbmFtZSlcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9tb2R1bGVfYXR0YWNoLmMtMTUzLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvbW9kdWxlX2F0dGFjaC5jOjE1NDpcdEFTU0VSVF9FUlIodHJ5X3VubG9hZF9tb2R1bGUoXCYjMzQ7YnBmX3Rlc3Rtb2RcJiMzNDssIDEsIGZhbHNlKSwgXCYjMzQ7dHJ5X3VubG9hZF9tb2R1bGVcJiMzNDspO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvbW9kdWxlX2F0dGFjaC5jLTE1NS1cdGJwZl9saW5rX19kZXN0cm95KGxpbmspO1xuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL21vZHVsZV9hdHRhY2guYz0xNjA9dm9pZCB0ZXN0X21vZHVsZV9hdHRhY2godm9pZClcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9tb2R1bGVfYXR0YWNoLmMtMTc0LVx0XHR0ZXN0X21vZHVsZV9hdHRhY2hfcHJvZyhcJiMzNDtoYW5kbGVfZmVudHJ5X21hbnVhbFwmIzM0OywgUkVBRF9TWixcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL21vZHVsZV9hdHRhY2guYzoxNzU6XHRcdFx0XHRcdFwmIzM0O2JwZl90ZXN0bW9kX3Rlc3RfcmVhZFwmIzM0OywgMCk7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9tb2R1bGVfYXR0YWNoLmMtMTc2LVx0fVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL21vZHVsZV9hdHRhY2guYy0xNzktXHRcdFx0XHRcdFJFQURfU1osXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9tb2R1bGVfYXR0YWNoLmM6MTgwOlx0XHRcdFx0XHRcJiMzNDticGZfdGVzdG1vZDpicGZfdGVzdG1vZF90ZXN0X3JlYWRcJiMzNDssIDApO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvbW9kdWxlX2F0dGFjaC5jLTE4MS1cdH1cbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9tb2R1bGVfZmVudHJ5X3NoYWRvdy5jLTgtXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9tb2R1bGVfZmVudHJ5X3NoYWRvdy5jOjk6c3RhdGljIGNvbnN0IGNoYXIgKm1vZHVsZV9uYW1lID0gXCYjMzQ7YnBmX3Rlc3Rtb2RcJiMzNDs7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9tb2R1bGVfZmVudHJ5X3NoYWRvdy5jLTEwLXN0YXRpYyBjb25zdCBjaGFyICpzeW1ib2xfbmFtZSA9IFwmIzM0O2JwZl9mZW50cnlfc2hhZG93X3Rlc3RcJiMzNDs7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9tb2R1bGVfZmVudHJ5X3NoYWRvdy5jLTExLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvbW9kdWxlX2ZlbnRyeV9zaGFkb3cuYzoxMjpzdGF0aWMgaW50IGdldF9icGZfdGVzdG1vZF9idGZfZmQodm9pZClcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL21vZHVsZV9mZW50cnlfc2hhZG93LmMtMTMte1xuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL21vZHVsZV9mZW50cnlfc2hhZG93LmM9NTY9dm9pZCB0ZXN0X21vZHVsZV9mZW50cnlfc2hhZG93KHZvaWQpXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvbW9kdWxlX2ZlbnRyeV9zaGFkb3cuYy04Mi1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL21vZHVsZV9mZW50cnlfc2hhZG93LmM6ODM6XHRidGZfZmRbMV0gPSBnZXRfYnBmX3Rlc3Rtb2RfYnRmX2ZkKCk7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9tb2R1bGVfZmVudHJ5X3NoYWRvdy5jOjg0Olx0aWYgKCFBU1NFUlRfR0UoYnRmX2ZkWzFdLCAwLCBcJiMzNDtnZXRfYnBmX3Rlc3Rtb2RfYnRmX2ZkXCYjMzQ7KSlcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL21vZHVsZV9mZW50cnlfc2hhZG93LmMtODUtXHRcdGdvdG8gb3V0O1xuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL21vZHVsZV9mZW50cnlfc2hhZG93LmMtMTEwLVx0XHQgKiBzaGFkb3dlZCBmdW5jdGlvbnMgYW5kIHVzZXMgdGhlIHNhbWUgYWRkcmVzcyBmb3IgYm90aCB0aGVcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL21vZHVsZV9mZW50cnlfc2hhZG93LmM6MTExOlx0XHQgKiB2bWxpbnV4IGFuZCB0aGUgYnBmX3Rlc3Rtb2QgZnVuY3Rpb25zLCB0aGlzIHdpbGwgZmFpbCBvblxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvbW9kdWxlX2ZlbnRyeV9zaGFkb3cuYy0xMTItXHRcdCAqIGF0dGVtcHRpbmcgdG8gY3JlYXRlIHR3byB0cmFtcG9saW5lcyBmb3IgdGhlIHNhbWUgYWRkcmVzcyxcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9yYXdfdHBfd3JpdGFibGVfcmVqZWN0X2JhZF9hY2Nlc3MuYy0zLSNpbmNsdWRlIFx1MDAzY3Rlc3RfcHJvZ3MuaFx1MDAzZVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvcmF3X3RwX3dyaXRhYmxlX3JlamVjdF9iYWRfYWNjZXNzLmM6NDojaW5jbHVkZSBcJiMzNDt0ZXN0X2ttb2RzL2JwZl90ZXN0bW9kLmhcJiMzNDtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3Jhd190cF93cml0YWJsZV9yZWplY3RfYmFkX2FjY2Vzcy5jLTUtI2luY2x1ZGUgXCYjMzQ7YnBmX3V0aWwuaFwmIzM0O1xuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3Jhd190cF93cml0YWJsZV9yZWplY3RfYmFkX2FjY2Vzcy5jPTc9c3RhdGljIHZvaWQgY2hlY2tfYXR0YWNoX3JlamVjdChjb25zdCBzdHJ1Y3QgYnBmX2luc24gKnByb2dyYW0sIHNpemVfdCBwcm9nX2xlbilcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9yYXdfdHBfd3JpdGFibGVfcmVqZWN0X2JhZF9hY2Nlc3MuYy0yMS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3Jhd190cF93cml0YWJsZV9yZWplY3RfYmFkX2FjY2Vzcy5jOjIyOlx0dHBfZmQgPSBicGZfcmF3X3RyYWNlcG9pbnRfb3BlbihcJiMzNDticGZfdGVzdG1vZF90ZXN0X3dyaXRhYmxlX2JhcmVfdHBcJiMzNDssIGJwZl9mZCk7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9yYXdfdHBfd3JpdGFibGVfcmVqZWN0X2JhZF9hY2Nlc3MuYy0yMy1cdEFTU0VSVF9FUSh0cF9mZCwgLUVJTlZBTCwgXCYjMzQ7YnBmX3Jhd190cmFjZXBvaW50X29wZW5cJiMzNDspO1xuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3Jhd190cF93cml0YWJsZV9yZWplY3RfYmFkX2FjY2Vzcy5jPTMwPXZvaWQgdGVzdF9yYXdfdHBfd3JpdGFibGVfcmVqZWN0X2JhZF9hY2Nlc3Modm9pZClcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9yYXdfdHBfd3JpdGFibGVfcmVqZWN0X2JhZF9hY2Nlc3MuYy0zNi1cdFx0QlBGX0xEWF9NRU0oQlBGX0IsIEJQRl9SRUdfMCwgQlBGX1JFR182LFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvcmF3X3RwX3dyaXRhYmxlX3JlamVjdF9iYWRfYWNjZXNzLmM6Mzc6XHRcdFx0ICAgIHNpemVvZihzdHJ1Y3QgYnBmX3Rlc3Rtb2RfdGVzdF93cml0YWJsZV9jdHgpKSxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3Jhd190cF93cml0YWJsZV9yZWplY3RfYmFkX2FjY2Vzcy5jLTM4LVx0XHRCUEZfRVhJVF9JTlNOKCksXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvcmF3X3RwX3dyaXRhYmxlX3JlamVjdF9iYWRfYWNjZXNzLmMtNDYtXHRcdEJQRl9MRFhfTUVNKEJQRl9CLCBCUEZfUkVHXzAsIEJQRl9SRUdfNixcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3Jhd190cF93cml0YWJsZV9yZWplY3RfYmFkX2FjY2Vzcy5jOjQ3Olx0XHRcdCAgICBzaXplb2Yoc3RydWN0IGJwZl90ZXN0bW9kX3Rlc3Rfd3JpdGFibGVfY3R4KSAmIzQzOyA4KSxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3Jhd190cF93cml0YWJsZV9yZWplY3RfYmFkX2FjY2Vzcy5jLTQ4LVx0XHRCUEZfRVhJVF9JTlNOKCksXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc3RhY2t0cmFjZV9pcHMuYz01MD1zdGF0aWMgdm9pZCB0ZXN0X3N0YWNrdHJhY2VfaXBzX2twcm9iZV9tdWx0aShib29sIHJldHByb2JlKVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3N0YWNrdHJhY2VfaXBzLmMtNjgtXHRcdFx0XHRcdFx0XHRza2VsLVx1MDAzZXByb2dzLmtwcm9iZV9tdWx0aV90ZXN0LFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc3RhY2t0cmFjZV9pcHMuYzo2OTpcdFx0XHRcdFx0XHRcdFwmIzM0O2JwZl90ZXN0bW9kX3N0YWNrdHJhY2VfdGVzdFwmIzM0OywgXHUwMDI2b3B0cyk7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zdGFja3RyYWNlX2lwcy5jLTcwLVx0aWYgKCFBU1NFUlRfT0tfUFRSKHNrZWwtXHUwMDNlbGlua3Mua3Byb2JlX211bHRpX3Rlc3QsIFwmIzM0O2JwZl9wcm9ncmFtX19hdHRhY2hfa3Byb2JlX211bHRpX29wdHNcJiMzNDspKVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3N0YWNrdHJhY2VfaXBzLmMtNzgtXHRcdGNoZWNrX3N0YWNrdHJhY2VfaXBzKGJwZl9tYXBfX2ZkKHNrZWwtXHUwMDNlbWFwcy5zdGFja21hcCksIHNrZWwtXHUwMDNlYnNzLVx1MDAzZXN0YWNrX2tleSwgNCxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3N0YWNrdHJhY2VfaXBzLmM6Nzk6XHRcdFx0XHQgICAgIGtzeW1fZ2V0X2FkZHIoXCYjMzQ7YnBmX3Rlc3Rtb2Rfc3RhY2t0cmFjZV90ZXN0XzNcJiMzNDspLFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc3RhY2t0cmFjZV9pcHMuYzo4MDpcdFx0XHRcdCAgICAga3N5bV9nZXRfYWRkcihcJiMzNDticGZfdGVzdG1vZF9zdGFja3RyYWNlX3Rlc3RfMlwmIzM0OyksXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zdGFja3RyYWNlX2lwcy5jOjgxOlx0XHRcdFx0ICAgICBrc3ltX2dldF9hZGRyKFwmIzM0O2JwZl90ZXN0bW9kX3N0YWNrdHJhY2VfdGVzdF8xXCYjMzQ7KSxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3N0YWNrdHJhY2VfaXBzLmM6ODI6XHRcdFx0XHQgICAgIGtzeW1fZ2V0X2FkZHIoXCYjMzQ7YnBmX3Rlc3Rtb2RfdGVzdF9yZWFkXCYjMzQ7KSk7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zdGFja3RyYWNlX2lwcy5jLTgzLVx0fSBlbHNlIHtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3N0YWNrdHJhY2VfaXBzLmMtODQtXHRcdGNoZWNrX3N0YWNrdHJhY2VfaXBzKGJwZl9tYXBfX2ZkKHNrZWwtXHUwMDNlbWFwcy5zdGFja21hcCksIHNrZWwtXHUwMDNlYnNzLVx1MDAzZXN0YWNrX2tleSwgNSxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3N0YWNrdHJhY2VfaXBzLmM6ODU6XHRcdFx0XHQgICAgIGtzeW1fZ2V0X2FkZHIoXCYjMzQ7YnBmX3Rlc3Rtb2Rfc3RhY2t0cmFjZV90ZXN0XCYjMzQ7KSxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3N0YWNrdHJhY2VfaXBzLmM6ODY6XHRcdFx0XHQgICAgIGtzeW1fZ2V0X2FkZHIoXCYjMzQ7YnBmX3Rlc3Rtb2Rfc3RhY2t0cmFjZV90ZXN0XzNcJiMzNDspLFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc3RhY2t0cmFjZV9pcHMuYzo4NzpcdFx0XHRcdCAgICAga3N5bV9nZXRfYWRkcihcJiMzNDticGZfdGVzdG1vZF9zdGFja3RyYWNlX3Rlc3RfMlwmIzM0OyksXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zdGFja3RyYWNlX2lwcy5jOjg4Olx0XHRcdFx0ICAgICBrc3ltX2dldF9hZGRyKFwmIzM0O2JwZl90ZXN0bW9kX3N0YWNrdHJhY2VfdGVzdF8xXCYjMzQ7KSxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3N0YWNrdHJhY2VfaXBzLmM6ODk6XHRcdFx0XHQgICAgIGtzeW1fZ2V0X2FkZHIoXCYjMzQ7YnBmX3Rlc3Rtb2RfdGVzdF9yZWFkXCYjMzQ7KSk7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zdGFja3RyYWNlX2lwcy5jLTkwLVx0fVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3N0YWNrdHJhY2VfaXBzLmM9OTY9c3RhdGljIHZvaWQgdGVzdF9zdGFja3RyYWNlX2lwc19yYXdfdHAodm9pZClcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zdGFja3RyYWNlX2lwcy5jLTExNS1cdFx0XHRcdFx0XHRcdHNrZWwtXHUwMDNlcHJvZ3MucmF3dHBfdGVzdCxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3N0YWNrdHJhY2VfaXBzLmM6MTE2Olx0XHRcdFx0XHRcdFx0XCYjMzQ7YnBmX3Rlc3Rtb2RfdGVzdF9yZWFkXCYjMzQ7KTtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3N0YWNrdHJhY2VfaXBzLmMtMTE3LVx0aWYgKCFBU1NFUlRfT0tfUFRSKHNrZWwtXHUwMDNlbGlua3MucmF3dHBfdGVzdCwgXCYjMzQ7YnBmX3Byb2dyYW1fX2F0dGFjaF9yYXdfdHJhY2Vwb2ludFwmIzM0OykpXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc3RhY2t0cmFjZV9pcHMuYz0xNDA9c3RhdGljIHZvaWQgdGVzdF9zdGFja3RyYWNlX2lwc19rcHJvYmUoYm9vbCByZXRwcm9iZSlcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zdGFja3RyYWNlX2lwcy5jLTE1OC1cdFx0XHRcdFx0XHRza2VsLVx1MDAzZXByb2dzLmtwcm9iZV90ZXN0LFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc3RhY2t0cmFjZV9pcHMuYzoxNTk6XHRcdFx0XHRcdFx0XCYjMzQ7YnBmX3Rlc3Rtb2Rfc3RhY2t0cmFjZV90ZXN0XCYjMzQ7LCBcdTAwMjZvcHRzKTtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3N0YWNrdHJhY2VfaXBzLmMtMTYwLVx0aWYgKCFBU1NFUlRfT0tfUFRSKHNrZWwtXHUwMDNlbGlua3Mua3Byb2JlX3Rlc3QsIFwmIzM0O2JwZl9wcm9ncmFtX19hdHRhY2hfa3Byb2JlX29wdHNcJiMzNDspKVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3N0YWNrdHJhY2VfaXBzLmMtMTY4LVx0XHRjaGVja19zdGFja3RyYWNlX2lwcyhicGZfbWFwX19mZChza2VsLVx1MDAzZW1hcHMuc3RhY2ttYXApLCBza2VsLVx1MDAzZWJzcy1cdTAwM2VzdGFja19rZXksIDQsXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zdGFja3RyYWNlX2lwcy5jOjE2OTpcdFx0XHRcdCAgICAga3N5bV9nZXRfYWRkcihcJiMzNDticGZfdGVzdG1vZF9zdGFja3RyYWNlX3Rlc3RfM1wmIzM0OyksXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zdGFja3RyYWNlX2lwcy5jOjE3MDpcdFx0XHRcdCAgICAga3N5bV9nZXRfYWRkcihcJiMzNDticGZfdGVzdG1vZF9zdGFja3RyYWNlX3Rlc3RfMlwmIzM0OyksXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zdGFja3RyYWNlX2lwcy5jOjE3MTpcdFx0XHRcdCAgICAga3N5bV9nZXRfYWRkcihcJiMzNDticGZfdGVzdG1vZF9zdGFja3RyYWNlX3Rlc3RfMVwmIzM0OyksXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zdGFja3RyYWNlX2lwcy5jOjE3MjpcdFx0XHRcdCAgICAga3N5bV9nZXRfYWRkcihcJiMzNDticGZfdGVzdG1vZF90ZXN0X3JlYWRcJiMzNDspKTtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3N0YWNrdHJhY2VfaXBzLmMtMTczLVx0fSBlbHNlIHtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3N0YWNrdHJhY2VfaXBzLmMtMTc0LVx0XHRjaGVja19zdGFja3RyYWNlX2lwcyhicGZfbWFwX19mZChza2VsLVx1MDAzZW1hcHMuc3RhY2ttYXApLCBza2VsLVx1MDAzZWJzcy1cdTAwM2VzdGFja19rZXksIDUsXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zdGFja3RyYWNlX2lwcy5jOjE3NTpcdFx0XHRcdCAgICAga3N5bV9nZXRfYWRkcihcJiMzNDticGZfdGVzdG1vZF9zdGFja3RyYWNlX3Rlc3RcJiMzNDspLFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc3RhY2t0cmFjZV9pcHMuYzoxNzY6XHRcdFx0XHQgICAgIGtzeW1fZ2V0X2FkZHIoXCYjMzQ7YnBmX3Rlc3Rtb2Rfc3RhY2t0cmFjZV90ZXN0XzNcJiMzNDspLFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc3RhY2t0cmFjZV9pcHMuYzoxNzc6XHRcdFx0XHQgICAgIGtzeW1fZ2V0X2FkZHIoXCYjMzQ7YnBmX3Rlc3Rtb2Rfc3RhY2t0cmFjZV90ZXN0XzJcJiMzNDspLFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc3RhY2t0cmFjZV9pcHMuYzoxNzg6XHRcdFx0XHQgICAgIGtzeW1fZ2V0X2FkZHIoXCYjMzQ7YnBmX3Rlc3Rtb2Rfc3RhY2t0cmFjZV90ZXN0XzFcJiMzNDspLFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc3RhY2t0cmFjZV9pcHMuYzoxNzk6XHRcdFx0XHQgICAgIGtzeW1fZ2V0X2FkZHIoXCYjMzQ7YnBmX3Rlc3Rtb2RfdGVzdF9yZWFkXCYjMzQ7KSk7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zdGFja3RyYWNlX2lwcy5jLTE4MC1cdH1cbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zdGFja3RyYWNlX2lwcy5jPTE4Nj1zdGF0aWMgdm9pZCB0ZXN0X3N0YWNrdHJhY2VfaXBzX3RyYW1wb2xpbmUoYm9vbCByZXRwcm9iZSlcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zdGFja3RyYWNlX2lwcy5jLTIxNS1cdFx0Y2hlY2tfc3RhY2t0cmFjZV9pcHMoYnBmX21hcF9fZmQoc2tlbC1cdTAwM2VtYXBzLnN0YWNrbWFwKSwgc2tlbC1cdTAwM2Vic3MtXHUwMDNlc3RhY2tfa2V5LCA0LFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc3RhY2t0cmFjZV9pcHMuYzoyMTY6XHRcdFx0XHQgICAgIGtzeW1fZ2V0X2FkZHIoXCYjMzQ7YnBmX3Rlc3Rtb2Rfc3RhY2t0cmFjZV90ZXN0XzNcJiMzNDspLFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc3RhY2t0cmFjZV9pcHMuYzoyMTc6XHRcdFx0XHQgICAgIGtzeW1fZ2V0X2FkZHIoXCYjMzQ7YnBmX3Rlc3Rtb2Rfc3RhY2t0cmFjZV90ZXN0XzJcJiMzNDspLFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc3RhY2t0cmFjZV9pcHMuYzoyMTg6XHRcdFx0XHQgICAgIGtzeW1fZ2V0X2FkZHIoXCYjMzQ7YnBmX3Rlc3Rtb2Rfc3RhY2t0cmFjZV90ZXN0XzFcJiMzNDspLFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc3RhY2t0cmFjZV9pcHMuYzoyMTk6XHRcdFx0XHQgICAgIGtzeW1fZ2V0X2FkZHIoXCYjMzQ7YnBmX3Rlc3Rtb2RfdGVzdF9yZWFkXCYjMzQ7KSk7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zdGFja3RyYWNlX2lwcy5jLTIyMC1cdH0gZWxzZSB7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zdGFja3RyYWNlX2lwcy5jLTIyMS1cdFx0Y2hlY2tfc3RhY2t0cmFjZV9pcHMoYnBmX21hcF9fZmQoc2tlbC1cdTAwM2VtYXBzLnN0YWNrbWFwKSwgc2tlbC1cdTAwM2Vic3MtXHUwMDNlc3RhY2tfa2V5LCA1LFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc3RhY2t0cmFjZV9pcHMuYzoyMjI6XHRcdFx0XHQgICAgIGtzeW1fZ2V0X2FkZHIoXCYjMzQ7YnBmX3Rlc3Rtb2Rfc3RhY2t0cmFjZV90ZXN0XCYjMzQ7KSxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3N0YWNrdHJhY2VfaXBzLmM6MjIzOlx0XHRcdFx0ICAgICBrc3ltX2dldF9hZGRyKFwmIzM0O2JwZl90ZXN0bW9kX3N0YWNrdHJhY2VfdGVzdF8zXCYjMzQ7KSxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3N0YWNrdHJhY2VfaXBzLmM6MjI0Olx0XHRcdFx0ICAgICBrc3ltX2dldF9hZGRyKFwmIzM0O2JwZl90ZXN0bW9kX3N0YWNrdHJhY2VfdGVzdF8yXCYjMzQ7KSxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3N0YWNrdHJhY2VfaXBzLmM6MjI1Olx0XHRcdFx0ICAgICBrc3ltX2dldF9hZGRyKFwmIzM0O2JwZl90ZXN0bW9kX3N0YWNrdHJhY2VfdGVzdF8xXCYjMzQ7KSxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3N0YWNrdHJhY2VfaXBzLmM6MjI2Olx0XHRcdFx0ICAgICBrc3ltX2dldF9hZGRyKFwmIzM0O2JwZl90ZXN0bW9kX3Rlc3RfcmVhZFwmIzM0OykpO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc3RhY2t0cmFjZV9pcHMuYy0yMjctXHR9XG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc3RydWN0X29wc19hdXRvY3JlYXRlLmM9Nz1zdGF0aWMgdm9pZCBjYW50X2xvYWRfZnVsbF9vYmplY3Qodm9pZClcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zdHJ1Y3Rfb3BzX2F1dG9jcmVhdGUuYy0xOC1cdFx0Z290byBjbGVhbnVwO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc3RydWN0X29wc19hdXRvY3JlYXRlLmM6MTk6XHQvKiBUaGUgdGVzdG1vZF8yIG1hcCBCVEYgdHlwZSAoc3RydWN0IGJwZl90ZXN0bW9kX29wc19fX3YyKSBkb2VzbiYjMzk7dFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc3RydWN0X29wc19hdXRvY3JlYXRlLmM6MjA6XHQgKiBtYXRjaCB0aGUgQlRGIG9mIHRoZSBhY3R1YWwgc3RydWN0IGJwZl90ZXN0bW9kX29wcyBkZWZpbmVkIGluIHRoZVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc3RydWN0X29wc19hdXRvY3JlYXRlLmMtMjEtXHQgKiBrZXJuZWwsIHNvIHdlIHNob3VsZCBmYWlsIHRvIGxvYWQgaXQgaWYgd2UgZG9uJiMzOTt0IGRpc2FibGUgYXV0b2NyZWF0ZVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3N0cnVjdF9vcHNfYXV0b2NyZWF0ZS5jPTM3PXN0YXRpYyBpbnQgY2hlY2tfdGVzdF8xX2xpbmsoc3RydWN0IHN0cnVjdF9vcHNfYXV0b2NyZWF0ZSAqc2tlbCwgc3RydWN0IGJwZl9tYXAgKm1hcClcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zdHJ1Y3Rfb3BzX2F1dG9jcmVhdGUuYy00NS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3N0cnVjdF9vcHNfYXV0b2NyZWF0ZS5jOjQ2Olx0LyogdGVzdF8xKCkgd291bGQgYmUgY2FsbGVkIGZyb20gYnBmX2R1bW15X3JlZzIoKSBpbiBicGZfdGVzdG1vZC5jICovXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zdHJ1Y3Rfb3BzX2F1dG9jcmVhdGUuYy00Ny1cdGVyciA9IEFTU0VSVF9FUShza2VsLVx1MDAzZWJzcy1cdTAwM2V0ZXN0XzFfcmVzdWx0LCA0MiwgXCYjMzQ7dGVzdF8xX3Jlc3VsdFwmIzM0Oyk7XG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc3RydWN0X29wc19hdXRvY3JlYXRlLmM9MTE0PXN0YXRpYyB2b2lkIGF1dG9sb2FkX2FuZF9zaGFkb3dfdmFycyh2b2lkKVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3N0cnVjdF9vcHNfYXV0b2NyZWF0ZS5jLTE0MC1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3N0cnVjdF9vcHNfYXV0b2NyZWF0ZS5jOjE0MTpcdC8qIHRlc3RfMSgpIHdvdWxkIGJlIGNhbGxlZCBmcm9tIGJwZl9kdW1teV9yZWcyKCkgaW4gYnBmX3Rlc3Rtb2QuYyAqL1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc3RydWN0X29wc19hdXRvY3JlYXRlLmMtMTQyLVx0ZXJyID0gQVNTRVJUX0VRKHNrZWwtXHUwMDNlYnNzLVx1MDAzZXRlc3RfMV9yZXN1bHQsIDQyLCBcJiMzNDt0ZXN0XzFfcmVzdWx0XCYjMzQ7KTtcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy90ZXN0X3N0cnVjdF9vcHNfYXJlbmEuYy0xMS0gKiBBdHRhY2ggY2FsbGJhY2tzIHdpdGggX19hcmVuYSBhbmQgX19hcmVuYV9fbnVsbGFibGUgYXJndW1lbnRzIGFuZCBkcml2ZVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvdGVzdF9zdHJ1Y3Rfb3BzX2FyZW5hLmM6MTI6ICogdGhlbSB0aHJvdWdoIHRoZSBicGZfdGVzdG1vZF9vcHMzX2NhbGxfdGVzdF9hcmVuYSooKSBrZnVuY3MuXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy90ZXN0X3N0cnVjdF9vcHNfYXJlbmEuYy0xMy0gKi9cbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy90ZXN0X3N0cnVjdF9vcHNfYXJlbmEuYz04OD1zdGF0aWMgdm9pZCBhcmVuYV9hcmdfYXR0YWNoKHZvaWQpXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvdGVzdF9zdHJ1Y3Rfb3BzX2FyZW5hLmMtMTA2LS8qXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy90ZXN0X3N0cnVjdF9vcHNfYXJlbmEuYzoxMDc6ICogU2VyaWFsaXplZCBiZWNhdXNlIGl0IGF0dGFjaGVzIHRoZSBzaW5nbGV0b24gYnBmX3Rlc3Rtb2Rfb3BzMywgd2hpY2hcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3Rlc3Rfc3RydWN0X29wc19hcmVuYS5jLTEwOC0gKiB0ZXN0X3N0cnVjdF9vcHNfcHJpdmF0ZV9zdGFjayBhbHNvIGF0dGFjaGVzOyByZWdpc3RlcmluZyBpdCB0d2ljZSBmYWlsc1xuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3Rlc3Rfc3RydWN0X29wc19tb2R1bGUuYz0xND1zdGF0aWMgdm9pZCBjaGVja19tYXBfaW5mbyhzdHJ1Y3QgYnBmX21hcF9pbmZvICppbmZvKVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3Rlc3Rfc3RydWN0X29wc19tb2R1bGUuYy0zMS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3Rlc3Rfc3RydWN0X29wc19tb2R1bGUuYzozMjpcdGlmICghQVNTRVJUX0VRKHN0cmNtcChidGZfbmFtZSwgXCYjMzQ7YnBmX3Rlc3Rtb2RcJiMzNDspLCAwLCBcJiMzNDtnZXRfdmFsdWVfdHlwZV9idGZfb2JqX25hbWVcJiMzNDspKVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvdGVzdF9zdHJ1Y3Rfb3BzX21vZHVsZS5jLTMzLVx0XHRnb3RvIGNsZWFudXA7XG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvdGVzdF9zdHJ1Y3Rfb3BzX21vZHVsZS5jPTM5PXN0YXRpYyBpbnQgYXR0YWNoX29wc19hbmRfY2hlY2soc3RydWN0IHN0cnVjdF9vcHNfbW9kdWxlICpza2VsLFxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3Rlc3Rfc3RydWN0X29wc19tb2R1bGUuYy00OS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3Rlc3Rfc3RydWN0X29wc19tb2R1bGUuYzo1MDpcdC8qIHRlc3RfezEsMn0oKSB3b3VsZCBiZSBjYWxsZWQgZnJvbSBicGZfZHVtbXlfcmVnKCkgaW4gYnBmX3Rlc3Rtb2QuYyAqL1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvdGVzdF9zdHJ1Y3Rfb3BzX21vZHVsZS5jLTUxLVx0QVNTRVJUX0VRKHNrZWwtXHUwMDNlYnNzLVx1MDAzZXRlc3RfMV9yZXN1bHQsIDB4ZGVhZGJlZWYsIFwmIzM0O3Rlc3RfMV9yZXN1bHRcJiMzNDspO1xuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3Rlc3Rfc3RydWN0X29wc19tb2R1bGUuYz01OD1zdGF0aWMgdm9pZCB0ZXN0X3N0cnVjdF9vcHNfbG9hZCh2b2lkKVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3Rlc3Rfc3RydWN0X29wc19tb2R1bGUuYy04Ny1cdGNoZWNrX21hcF9pbmZvKFx1MDAyNmluZm8pO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvdGVzdF9zdHJ1Y3Rfb3BzX21vZHVsZS5jOjg4Olx0LyogdGVzdF8zKCkgd2lsbCBiZSBjYWxsZWQgZnJvbSBicGZfZHVtbXlfcmVnKCkgaW4gYnBmX3Rlc3Rtb2QuY1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvdGVzdF9zdHJ1Y3Rfb3BzX21vZHVsZS5jLTg5LVx0ICpcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3Rlc3Rfc3RydWN0X29wc19tb2R1bGUuYzo5MDpcdCAqIEluIGJwZl90ZXN0bW9kLmMgaXQgd2lsbCBwYXNzIDQgYW5kIDEzICh0aGUgdmFsdWUgb2YgZGF0YSkgdG9cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3Rlc3Rfc3RydWN0X29wc19tb2R1bGUuYy05MS1cdCAqIC50ZXN0XzIuICBTbywgdGhlIHZhbHVlIG9mIHRlc3RfMl9yZXN1bHQgc2hvdWxkIGJlIDIwICg0ICYjNDM7IDEzICYjNDM7XG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvdGVzdF9zdHJ1Y3Rfb3BzX21vZHVsZS5jPTEwMz1zdGF0aWMgdm9pZCB0ZXN0X3N0cnVjdF9vcHNfbm90X3plcm9lZCh2b2lkKVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3Rlc3Rfc3RydWN0X29wc19tb2R1bGUuYy0xMjctXHQvKiBsaWJicGYgc2hvdWxkIHJlamVjdCB0aGUgdGVzdG1vZF96ZXJvZWQgc2luY2Ugc3RydWN0XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy90ZXN0X3N0cnVjdF9vcHNfbW9kdWxlLmM6MTI4Olx0ICogYnBmX3Rlc3Rtb2Rfb3BzIGluIHRoZSBrZXJuZWwgaGFzIG5vIFwmIzM0O3plcm9lZFwmIzM0OyBmaWVsZCBhbmQgdGhlXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy90ZXN0X3N0cnVjdF9vcHNfbW9kdWxlLmMtMTI5LVx0ICogdmFsdWUgb2YgXCYjMzQ7emVyb2VkXCYjMzQ7IGlzIG5vbi16ZXJvLlxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3RwX2J0Zl9pZHMuYy02LSNkZWZpbmUgREVCVUdGU19UUkFDSU5HXHRcJiMzNDsvc3lzL2tlcm5lbC9kZWJ1Zy90cmFjaW5nXCYjMzQ7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy90cF9idGZfaWRzLmM6NzojZGVmaW5lIEVWRU5UX1NVQlBBVEhcdFwmIzM0O2V2ZW50cy9icGZfdGVzdG1vZC9icGZfdGVzdG1vZF90ZXN0X3JlYWQvYnRmX2lkc1wmIzM0O1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvdHBfYnRmX2lkcy5jLTgtXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvdHBfYnRmX2lkcy5jPTU2PXZvaWQgdGVzdF90cF9idGZfaWRzKHZvaWQpXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvdHBfYnRmX2lkcy5jLTkyLVx0ICogICB2b2lkICpfX2RhdGEsIHN0cnVjdCB0YXNrX3N0cnVjdCAqdGFzayxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3RwX2J0Zl9pZHMuYzo5MzpcdCAqICAgc3RydWN0IGJwZl90ZXN0bW9kX3Rlc3RfcmVhZF9jdHggKmN0eFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvdHBfYnRmX2lkcy5jLTk0LVx0ICovXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvdHBfYnRmX2lkcy5jLTExNy1cdG5hbWUgPSBidGZfX25hbWVfYnlfb2Zmc2V0KGJ0ZiwgcmVjX3QtXHUwMDNlbmFtZV9vZmYpO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvdHBfYnRmX2lkcy5jOjExODpcdEFTU0VSVF9TVFJFUShuYW1lLCBcJiMzNDt0cmFjZV9ldmVudF9yYXdfYnBmX3Rlc3Rtb2RfdGVzdF9yZWFkXCYjMzQ7LFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvdHBfYnRmX2lkcy5jLTExOS1cdFx0ICAgICBcJiMzNDt0cCBzdHJ1Y3QgbmFtZVwmIzM0Oyk7XG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvdHJhY2luZ19mYWlsdXJlLmM9Nzk9c3RhdGljIHZvaWQgdGVzdF9mZXhpdF9pbnQxMjhfcmV0KHZvaWQpXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvdHJhY2luZ19mYWlsdXJlLmMtODItXHQgKiBfX2ludDEyOCBpcyByZXR1cm5lZCBpbiBhIHJlZ2lzdGVyIHBhaXIgb24geDg2XzY0IGFuZCBhcm02NCwgc29cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3RyYWNpbmdfZmFpbHVyZS5jOjgzOlx0ICogYnBmX3Rlc3Rtb2RfdGVzdF9pbnQxMjhfcmV0KCkgaXMgQlRGLWVuY29kZWQgYW5kIGF0dGFjaGFibGUgYW5kIHRoZVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvdHJhY2luZ19mYWlsdXJlLmMtODQtXHQgKiB2ZXJpZmllciBjYW4gcmVqZWN0IGl0cyBcdTAwM2U4IGJ5dGUgcmV0dXJuIHZhbHVlLiBPdGhlciBhcmNoaXRlY3R1cmVzXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvdHJhY2luZ19tdWx0aS5jPTMwPXN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgYnBmX2ZlbnRyeV90ZXN0W10gPSB7XG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvdHJhY2luZ19tdWx0aS5jLTQyLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvdHJhY2luZ19tdWx0aS5jOjQzOnN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgYnBmX3Rlc3Rtb2RfZmVudHJ5X3Rlc3RbXSA9IHtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3RyYWNpbmdfbXVsdGkuYzo0NDpcdFwmIzM0O2JwZl90ZXN0bW9kX2ZlbnRyeV90ZXN0MVwmIzM0OyxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3RyYWNpbmdfbXVsdGkuYzo0NTpcdFwmIzM0O2JwZl90ZXN0bW9kX2ZlbnRyeV90ZXN0MlwmIzM0OyxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3RyYWNpbmdfbXVsdGkuYzo0NjpcdFwmIzM0O2JwZl90ZXN0bW9kX2ZlbnRyeV90ZXN0M1wmIzM0OyxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3RyYWNpbmdfbXVsdGkuYzo0NzpcdFwmIzM0O2JwZl90ZXN0bW9kX2ZlbnRyeV90ZXN0N1wmIzM0OyxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3RyYWNpbmdfbXVsdGkuYzo0ODpcdFwmIzM0O2JwZl90ZXN0bW9kX2ZlbnRyeV90ZXN0MTFcJiMzNDssXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy90cmFjaW5nX211bHRpLmMtNDktfTtcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy90cmFjaW5nX211bHRpLmM9MzE0PXN0YXRpYyB2b2lkIHRlc3RfbW9kdWxlX2xpbmtfYXBpX3BhdHRlcm4odm9pZClcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy90cmFjaW5nX211bHRpLmMtMzI0LVx0c2tlbC1cdTAwM2VsaW5rcy50ZXN0X2ZlbnRyeSA9IGJwZl9wcm9ncmFtX19hdHRhY2hfdHJhY2luZ19tdWx0aShza2VsLVx1MDAzZXByb2dzLnRlc3RfZmVudHJ5LFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvdHJhY2luZ19tdWx0aS5jOjMyNTpcdFx0XHRcdFx0XCYjMzQ7YnBmX3Rlc3Rtb2Q6YnBmX3Rlc3Rtb2RfZmVudHJ5X3Rlc3QqXCYjMzQ7LCBOVUxMKTtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3RyYWNpbmdfbXVsdGkuYy0zMjYtXHRpZiAoIUFTU0VSVF9PS19QVFIoc2tlbC1cdTAwM2VsaW5rcy50ZXN0X2ZlbnRyeSwgXCYjMzQ7YnBmX3Byb2dyYW1fX2F0dGFjaF90cmFjaW5nX211bHRpXCYjMzQ7KSlcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy90cmFjaW5nX211bHRpLmMtMzI5LVx0c2tlbC1cdTAwM2VsaW5rcy50ZXN0X2ZleGl0ID0gYnBmX3Byb2dyYW1fX2F0dGFjaF90cmFjaW5nX211bHRpKHNrZWwtXHUwMDNlcHJvZ3MudGVzdF9mZXhpdCxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3RyYWNpbmdfbXVsdGkuYzozMzA6XHRcdFx0XHRcdFwmIzM0O2JwZl90ZXN0bW9kOmJwZl90ZXN0bW9kX2ZlbnRyeV90ZXN0KlwmIzM0OywgTlVMTCk7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy90cmFjaW5nX211bHRpLmMtMzMxLVx0aWYgKCFBU1NFUlRfT0tfUFRSKHNrZWwtXHUwMDNlbGlua3MudGVzdF9mZXhpdCwgXCYjMzQ7YnBmX3Byb2dyYW1fX2F0dGFjaF90cmFjaW5nX211bHRpXCYjMzQ7KSlcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy90cmFjaW5nX211bHRpLmM9MzQyPXN0YXRpYyB2b2lkIHRlc3RfbW9kdWxlX2xpbmtfYXBpX2lkcyh2b2lkKVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvdHJhY2luZ19tdWx0aS5jLTM0My17XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy90cmFjaW5nX211bHRpLmM6MzQ0Olx0c2l6ZV90IGNudCA9IEFSUkFZX1NJWkUoYnBmX3Rlc3Rtb2RfZmVudHJ5X3Rlc3QpO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvdHJhY2luZ19tdWx0aS5jLTM0NS1cdExJQkJQRl9PUFRTKGJwZl90cmFjaW5nX211bHRpX29wdHMsIG9wdHMpO1xuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3RyYWNpbmdfbXVsdGkuYy0zNTQtXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy90cmFjaW5nX211bHRpLmM6MzU1Olx0aWRzID0gZ2V0X2lkcyhicGZfdGVzdG1vZF9mZW50cnlfdGVzdCwgY250LCBcJiMzNDticGZfdGVzdG1vZFwmIzM0Oyk7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy90cmFjaW5nX211bHRpLmMtMzU2LVx0aWYgKCFBU1NFUlRfT0tfUFRSKGlkcywgXCYjMzQ7Z2V0X2lkc1wmIzM0OykpXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvdXByb2JlX3N5c2NhbGwuYz0xMDk9c3RhdGljIHZvaWQgdGVzdF91cHJvYmVfcmVnc19lcXVhbChib29sIHJldHByb2JlKVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3Vwcm9iZV9zeXNjYWxsLmMtMTkzLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvdXByb2JlX3N5c2NhbGwuYzoxOTQ6I2RlZmluZSBCUEZfVEVTVE1PRF9VUFJPQkVfVEVTVF9GSUxFIFwmIzM0Oy9zeXMva2VybmVsL2JwZl90ZXN0bW9kX3Vwcm9iZVwmIzM0O1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvdXByb2JlX3N5c2NhbGwuYy0xOTUtXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy91cHJvYmVfc3lzY2FsbC5jOjE5NjpzdGF0aWMgaW50IHdyaXRlX2JwZl90ZXN0bW9kX3Vwcm9iZSh1bnNpZ25lZCBsb25nIG9mZnNldClcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3Vwcm9iZV9zeXNjYWxsLmMtMTk3LXtcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy91cHJvYmVfc3lzY2FsbC5jPTIxMz1zdGF0aWMgdm9pZCB0ZXN0X3JlZ3NfY2hhbmdlKHZvaWQpXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvdXByb2JlX3N5c2NhbGwuYy0yMjItXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy91cHJvYmVfc3lzY2FsbC5jOjIyMzpcdGVyciA9IHdyaXRlX2JwZl90ZXN0bW9kX3Vwcm9iZShvZmZzZXQpO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvdXByb2JlX3N5c2NhbGwuYy0yMjQtXHRpZiAoIUFTU0VSVF9PSyhlcnIsIFwmIzM0O3JlZ2lzdGVyX3Vwcm9iZVwmIzM0OykpXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvdXByb2JlX3N5c2NhbGwuYy0yMzEtXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy91cHJvYmVfc3lzY2FsbC5jOjIzMjpcdGVyciA9IHdyaXRlX2JwZl90ZXN0bW9kX3Vwcm9iZSgwKTtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3Vwcm9iZV9zeXNjYWxsLmMtMjMzLVx0aWYgKCFBU1NFUlRfT0soZXJyLCBcJiMzNDt1bnJlZ2lzdGVyX3Vwcm9iZVwmIzM0OykpXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2FnZ3JlZ2F0ZV9yZXRfa2Z1bmMuYy01LSNpbmNsdWRlIFwmIzM0O2JwZl9taXNjLmhcJiMzNDtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9hZ2dyZWdhdGVfcmV0X2tmdW5jLmM6NjojaW5jbHVkZSBcJiMzNDsuLi90ZXN0X2ttb2RzL2JwZl90ZXN0bW9kX2tmdW5jLmhcJiMzNDtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9hZ2dyZWdhdGVfcmV0X2tmdW5jLmMtNy1cbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvYWdncmVnYXRlX3JldF9rZnVuY19hcmVuYS5jLTYtI2luY2x1ZGUgXCYjMzQ7YnBmX21pc2MuaFwmIzM0O1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2FnZ3JlZ2F0ZV9yZXRfa2Z1bmNfYXJlbmEuYzo3OiNpbmNsdWRlIFwmIzM0Oy4uL3Rlc3Rfa21vZHMvYnBmX3Rlc3Rtb2Rfa2Z1bmMuaFwmIzM0O1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2FnZ3JlZ2F0ZV9yZXRfa2Z1bmNfYXJlbmEuYy04LVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9hcmVuYV9rZnVuYy5jLTktI2luY2x1ZGUgXHUwMDNjYnBmX2FyZW5hX2NvbW1vbi5oXHUwMDNlXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvYXJlbmFfa2Z1bmMuYzoxMDojaW5jbHVkZSBcJiMzNDsuLi90ZXN0X2ttb2RzL2JwZl90ZXN0bW9kX2tmdW5jLmhcJiMzNDtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9hcmVuYV9rZnVuYy5jLTExLVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9hcmVuYV9rZnVuY19qaXQuYy0xNC0jaW5jbHVkZSBcdTAwM2NicGZfYXJlbmFfY29tbW9uLmhcdTAwM2VcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9hcmVuYV9rZnVuY19qaXQuYzoxNTojaW5jbHVkZSBcJiMzNDsuLi90ZXN0X2ttb2RzL2JwZl90ZXN0bW9kX2tmdW5jLmhcJiMzNDtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9hcmVuYV9rZnVuY19qaXQuYy0xNi1cbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvYmFkX3N0cnVjdF9vcHMuYy01LSNpbmNsdWRlIFx1MDAzY2JwZi9icGZfdHJhY2luZy5oXHUwMDNlXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvYmFkX3N0cnVjdF9vcHMuYzo2OiNpbmNsdWRlIFwmIzM0Oy4uL3Rlc3Rfa21vZHMvYnBmX3Rlc3Rtb2QuaFwmIzM0O1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2JhZF9zdHJ1Y3Rfb3BzLmMtNy1cbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvYmFkX3N0cnVjdF9vcHMuYz0xNj1TRUMoXCYjMzQ7LnN0cnVjdF9vcHMubGlua1wmIzM0OylcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9iYWRfc3RydWN0X29wcy5jOjE3OnN0cnVjdCBicGZfdGVzdG1vZF9vcHMgdGVzdG1vZF8xID0ge1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2JhZF9zdHJ1Y3Rfb3BzLmMtMTgtXHQudGVzdF8xID0gKHZvaWQgKil0ZXN0XzEsXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2JhZF9zdHJ1Y3Rfb3BzLmM9MjI9U0VDKFwmIzM0Oy5zdHJ1Y3Rfb3BzLmxpbmtcJiMzNDspXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvYmFkX3N0cnVjdF9vcHMuYzoyMzpzdHJ1Y3QgYnBmX3Rlc3Rtb2Rfb3BzMiB0ZXN0bW9kXzIgPSB7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvYmFkX3N0cnVjdF9vcHMuYy0yNC1cdC50ZXN0XzEgPSAodm9pZCAqKXRlc3RfMVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9idGZfX3N0YWNrX2FyZ19wcmVjaXNpb24uYy00LSNpbmNsdWRlIFx1MDAzY2JwZi9icGZfaGVscGVycy5oXHUwMDNlXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvYnRmX19zdGFja19hcmdfcHJlY2lzaW9uLmM6NTojaW5jbHVkZSBcJiMzNDsuLi90ZXN0X2ttb2RzL2JwZl90ZXN0bW9kX2tmdW5jLmhcJiMzNDtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9idGZfX3N0YWNrX2FyZ19wcmVjaXNpb24uYy02LVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9idGZfdHlwZV90YWdfcGVyY3B1LmMtNi1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9idGZfdHlwZV90YWdfcGVyY3B1LmM6NzpzdHJ1Y3QgYnBmX3Rlc3Rtb2RfYnRmX3R5cGVfdGFnXzEge1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2J0Zl90eXBlX3RhZ19wZXJjcHUuYy04LVx0aW50IGE7XG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2J0Zl90eXBlX3RhZ19wZXJjcHUuYy0xMC1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9idGZfdHlwZV90YWdfcGVyY3B1LmM6MTE6c3RydWN0IGJwZl90ZXN0bW9kX2J0Zl90eXBlX3RhZ18yIHtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9idGZfdHlwZV90YWdfcGVyY3B1LmM6MTI6XHRzdHJ1Y3QgYnBmX3Rlc3Rtb2RfYnRmX3R5cGVfdGFnXzEgKnA7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvYnRmX3R5cGVfdGFnX3BlcmNwdS5jLTEzLX07XG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2J0Zl90eXBlX3RhZ19wZXJjcHUuYz0xNT1fX3U2NCBnO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2J0Zl90eXBlX3RhZ19wZXJjcHUuYy0xNi1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9idGZfdHlwZV90YWdfcGVyY3B1LmM6MTc6U0VDKFwmIzM0O2ZlbnRyeS9icGZfdGVzdG1vZF90ZXN0X2J0Zl90eXBlX3RhZ19wZXJjcHVfMVwmIzM0OylcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9idGZfdHlwZV90YWdfcGVyY3B1LmM6MTg6aW50IEJQRl9QUk9HKHRlc3RfcGVyY3B1MSwgc3RydWN0IGJwZl90ZXN0bW9kX2J0Zl90eXBlX3RhZ18xICphcmcpXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvYnRmX3R5cGVfdGFnX3BlcmNwdS5jLTE5LXtcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvYnRmX3R5cGVfdGFnX3BlcmNwdS5jLTIzLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2J0Zl90eXBlX3RhZ19wZXJjcHUuYzoyNDpTRUMoXCYjMzQ7ZmVudHJ5L2JwZl90ZXN0bW9kX3Rlc3RfYnRmX3R5cGVfdGFnX3BlcmNwdV8yXCYjMzQ7KVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2J0Zl90eXBlX3RhZ19wZXJjcHUuYzoyNTppbnQgQlBGX1BST0codGVzdF9wZXJjcHUyLCBzdHJ1Y3QgYnBmX3Rlc3Rtb2RfYnRmX3R5cGVfdGFnXzIgKmFyZylcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9idGZfdHlwZV90YWdfcGVyY3B1LmMtMjYte1xuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9idGZfdHlwZV90YWdfdXNlci5jLTYtXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvYnRmX3R5cGVfdGFnX3VzZXIuYzo3OnN0cnVjdCBicGZfdGVzdG1vZF9idGZfdHlwZV90YWdfMSB7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvYnRmX3R5cGVfdGFnX3VzZXIuYy04LVx0aW50IGE7XG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2J0Zl90eXBlX3RhZ191c2VyLmMtMTAtXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvYnRmX3R5cGVfdGFnX3VzZXIuYzoxMTpzdHJ1Y3QgYnBmX3Rlc3Rtb2RfYnRmX3R5cGVfdGFnXzIge1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2J0Zl90eXBlX3RhZ191c2VyLmM6MTI6XHRzdHJ1Y3QgYnBmX3Rlc3Rtb2RfYnRmX3R5cGVfdGFnXzEgKnA7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvYnRmX3R5cGVfdGFnX3VzZXIuYy0xMy19O1xuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9idGZfdHlwZV90YWdfdXNlci5jPTE1PWludCBnO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2J0Zl90eXBlX3RhZ191c2VyLmMtMTYtXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvYnRmX3R5cGVfdGFnX3VzZXIuYzoxNzpTRUMoXCYjMzQ7ZmVudHJ5L2JwZl90ZXN0bW9kX3Rlc3RfYnRmX3R5cGVfdGFnX3VzZXJfMVwmIzM0OylcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9idGZfdHlwZV90YWdfdXNlci5jOjE4OmludCBCUEZfUFJPRyh0ZXN0X3VzZXIxLCBzdHJ1Y3QgYnBmX3Rlc3Rtb2RfYnRmX3R5cGVfdGFnXzEgKmFyZylcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9idGZfdHlwZV90YWdfdXNlci5jLTE5LXtcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvYnRmX3R5cGVfdGFnX3VzZXIuYy0yMy1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9idGZfdHlwZV90YWdfdXNlci5jOjI0OlNFQyhcJiMzNDtmZW50cnkvYnBmX3Rlc3Rtb2RfdGVzdF9idGZfdHlwZV90YWdfdXNlcl8yXCYjMzQ7KVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2J0Zl90eXBlX3RhZ191c2VyLmM6MjU6aW50IEJQRl9QUk9HKHRlc3RfdXNlcjIsIHN0cnVjdCBicGZfdGVzdG1vZF9idGZfdHlwZV90YWdfMiAqYXJnKVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2J0Zl90eXBlX3RhZ191c2VyLmMtMjYte1xuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9jYl9yZWZzLmMtNC0jaW5jbHVkZSBcdTAwM2NicGYvYnBmX2hlbHBlcnMuaFx1MDAzZVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2NiX3JlZnMuYzo1OiNpbmNsdWRlIFwmIzM0Oy4uL3Rlc3Rfa21vZHMvYnBmX3Rlc3Rtb2Rfa2Z1bmMuaFwmIzM0O1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2NiX3JlZnMuYy02LVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9jb3JlX2tlcm4uYz02Nj1zdHJ1Y3QgX19za19iVWZGIC8qIGl0IHdpbGwgbm90IGV4aXN0IGluIHZtbGludXggKi8ge1xuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9jb3JlX2tlcm4uYy02OS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9jb3JlX2tlcm4uYzo3MDpzdHJ1Y3QgYnBmX3Rlc3Rtb2RfdGVzdF9yZWFkX2N0eCAvKiBpdCBleGlzdHMgaW4gYnBmX3Rlc3Rtb2QgKi8ge1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2NvcmVfa2Vybi5jLTcxLVx0c2l6ZV90IGxlbjtcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvY29yZV9rZXJuLmM9NzU9aW50IGJhbGFuY2VyX2luZ3Jlc3Moc3RydWN0IF9fc2tfYnVmZiAqY3R4KVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9jb3JlX2tlcm4uYy05My1cdFx0LyogdGhpcyBDTy1SRSByZWxvIG1heSBvciBtYXkgbm90IHJlc29sdmVcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9jb3JlX2tlcm4uYzo5NDpcdFx0ICogZGVwZW5kaW5nIG9uIHdoZXRoZXIgYnBmX3Rlc3Rtb2QgaXMgbG9hZGVkLlxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2NvcmVfa2Vybi5jLTk1LVx0XHQgKi8gXFxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9jb3JlX2tlcm4uYzo5NjpcdFx0aSAmIzQzOz0gKChzdHJ1Y3QgYnBmX3Rlc3Rtb2RfdGVzdF9yZWFkX2N0eCAqKWN0eCktXHUwMDNlbGVuOyBcXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2NvcmVfa2Vybi5jLTk3LVx0fSBcXFxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9lcGlsb2d1ZV9leGl0LmMtNi0jaW5jbHVkZSBcJiMzNDticGZfbWlzYy5oXCYjMzQ7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvZXBpbG9ndWVfZXhpdC5jOjc6I2luY2x1ZGUgXCYjMzQ7Li4vdGVzdF9rbW9kcy9icGZfdGVzdG1vZC5oXCYjMzQ7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvZXBpbG9ndWVfZXhpdC5jOjg6I2luY2x1ZGUgXCYjMzQ7Li4vdGVzdF9rbW9kcy9icGZfdGVzdG1vZF9rZnVuYy5oXCYjMzQ7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvZXBpbG9ndWVfZXhpdC5jLTktXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2VwaWxvZ3VlX2V4aXQuYz02MT1TRUMoXCYjMzQ7LnN0cnVjdF9vcHMubGlua1wmIzM0OylcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9lcGlsb2d1ZV9leGl0LmM6NjI6c3RydWN0IGJwZl90ZXN0bW9kX3N0X29wcyBlcGlsb2d1ZV9leGl0ID0ge1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2VwaWxvZ3VlX2V4aXQuYy02My1cdC50ZXN0X2VwaWxvZ3VlID0gKHZvaWQgKil0ZXN0X2VwaWxvZ3VlX2V4aXQsXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2VwaWxvZ3VlX3RhaWxjYWxsLmMtNi0jaW5jbHVkZSBcJiMzNDticGZfbWlzYy5oXCYjMzQ7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvZXBpbG9ndWVfdGFpbGNhbGwuYzo3OiNpbmNsdWRlIFwmIzM0Oy4uL3Rlc3Rfa21vZHMvYnBmX3Rlc3Rtb2QuaFwmIzM0O1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2VwaWxvZ3VlX3RhaWxjYWxsLmM6ODojaW5jbHVkZSBcJiMzNDsuLi90ZXN0X2ttb2RzL2JwZl90ZXN0bW9kX2tmdW5jLmhcJiMzNDtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9lcGlsb2d1ZV90YWlsY2FsbC5jLTktXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2VwaWxvZ3VlX3RhaWxjYWxsLmM9NDQ9U0VDKFwmIzM0Oy5zdHJ1Y3Rfb3BzLmxpbmtcJiMzNDspXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvZXBpbG9ndWVfdGFpbGNhbGwuYzo0NTpzdHJ1Y3QgYnBmX3Rlc3Rtb2Rfc3Rfb3BzIGVwaWxvZ3VlX3RhaWxjYWxsID0ge1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2VwaWxvZ3VlX3RhaWxjYWxsLmMtNDYtXHQudGVzdF9lcGlsb2d1ZSA9ICh2b2lkICopdGVzdF9lcGlsb2d1ZV90YWlsY2FsbCxcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvZXBpbG9ndWVfdGFpbGNhbGwuYz00OT1TRUMoXCYjMzQ7LnN0cnVjdF9vcHMubGlua1wmIzM0OylcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9lcGlsb2d1ZV90YWlsY2FsbC5jOjUwOnN0cnVjdCBicGZfdGVzdG1vZF9zdF9vcHMgZXBpbG9ndWVfc3VicHJvZyA9IHtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9lcGlsb2d1ZV90YWlsY2FsbC5jLTUxLVx0LnRlc3RfZXBpbG9ndWUgPSAodm9pZCAqKXRlc3RfZXBpbG9ndWVfc3VicHJvZyxcblxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMxIDA5OjI3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIxNTE1CgkJCQkJCQlvdXRwdXQ6IDY2CgkJCQkJCQl0aG91Z2h0czogMzUyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgVGhpcyBDb21taXQqKgoKT2theSwgc28gdGhpcyBjb21taXQgaXMgZW50aXJlbHkgY29udGFpbmVkIHdpdGhpbiBgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2AuIEkgbmVlZCB0byBjb25maXJtIHRoYXQuIExldCBtZSBxdWlja2x5IHJldmlldyB0aGUgY2hhbmdlczogYHRlc3Rfc3RydWN0X29wc19tdWx0aV9hcmdzLmNgLCBgc3RydWN0X29wc19tdWx0aV9hcmdzLmNgLCBgYnBmX3Rlc3Rtb2QuY2AsIGFuZCBgYnBmX3Rlc3Rtb2QuaGAuIFllcCwgbG9va3MgbGlrZSBhbGwgdGhlIGNoYW5nZXMgYXJlIHdpdGhpbiB0aGF0IGRpcmVjdG9yeS4KCk5vIGtlcm5lbCBjb2RlIHdoYXRzb2V2ZXIgaXMgYmVpbmcgdG91Y2hlZC4gVGhpcyBpcyBqdXN0IHNlbGZ0ZXN0IGNvZGUsIGFuZCB0aGUgc3VwcG9ydGluZyBrZXJuZWwgbW9kdWxlIChgYnBmX3Rlc3Rtb2RgKS4gR29vZC4gU2VsZnRlc3RzIGFyZW4mIzM5O3QgcGFydCBvZiB0aGUgc3RhbmRhcmQgYnVpbGQ7IHRoZXkmIzM5O3JlIG9ubHkgZXhlY3V0ZWQgaW4gdGhlIHNlbGZ0ZXN0IGNvbnRleHQuIFRoZXkmIzM5O3JlIG5vdCB0YXJnZXRlZCBieSBmdXp6ZXJzIGxpa2Ugc3l6a2FsbGVyLCB3aGljaCBmb2N1c2VzIG9uIHN5c2NhbGxzIGFuZCBjb3JlIGtlcm5lbCBpbnRlcmZhY2VzLgoKVGhlcmVmb3JlLCB0aGlzIHBhdGNoIGRvZXNuJiMzOTt0IGludHJvZHVjZSBhbnkgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwmIzM5O3MgY29yZSBsb2dpYy4gSXQmIzM5O3MgcHVyZWx5IGFib3V0IHRlc3RpbmcuCgpOb3csIEkgbmVlZCB0byBtYWtlIHN1cmUgdGhpcyBhbGlnbnMgd2l0aCB0aGUgJiMzNDtXb3J0aEZ1enppbmc9ZmFsc2UmIzM0OyBjcml0ZXJpYS4gU2VsZnRlc3QgY2hhbmdlcywgbGlrZSB0aGVzZSwgc2hvdWxkIGFic29sdXRlbHkgKm5vdCogdHJpZ2dlciBmdXp6aW5nLiBXZSBkb24mIzM5O3Qgd2FudCB0byB3YXN0ZSByZXNvdXJjZXMgb24gdGhlbS4gWWVzLCB0aGF0JiMzOTtzIGNvcnJlY3QuCgpBbHJpZ2h0LCBJJiMzOTtsbCBjYWxsIGBzZXQtcmVzdWx0c2Agd2l0aCBgV29ydGhGdXp6aW5nPWZhbHNlYC4gSSBhbHNvIHdhbnQgdG8gc2V0IGBGb2N1c1N5bWJvbHNgIHRvIGVtcHR5IGFuZCBgRW5hYmxlQ29uZmlnc2AgdG8gZW1wdHkgYmVjYXVzZSB0aGUgb25seSBjaGFuZ2VzIGFyZSBsaW1pdGVkIHRvIHNlbGZ0ZXN0cywgYW5kIEkmIzM5O2xsIGluY2x1ZGUgYSBjbGVhciBgUmVhc29uaW5nYCBtZXNzYWdlIGV4cGxhaW5pbmcgdGhhdCB0aGUgcGF0Y2ggZXhjbHVzaXZlbHkgbW9kaWZpZXMgc2VsZnRlc3QgZmlsZXMgd2l0aGluIGB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvYC4gVGhhdCBzaG91bGQgY292ZXIgaXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzEgMDk6Mjc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBvbmx5IGFkZHMgYW5kIG1vZGlmaWVzIHRlc3QgY2FzZXMgYW5kIHRlc3Qga2VybmVsIG1vZHVsZSBkZWZpbml0aW9ucyB3aXRoaW4gdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmLywgd2l0aCBubyBmdW5jdGlvbmFsIG1vZGlmaWNhdGlvbnMgdG8gdGhlIGNvcmUgTGludXgga2VybmVsLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggb25seSBhZGRzIGFuZCBtb2RpZmllcyB0ZXN0IGNhc2VzIGFuZCB0ZXN0IGtlcm5lbCBtb2R1bGUgZGVmaW5pdGlvbnMgd2l0aGluIHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi8sIHdpdGggbm8gZnVuY3Rpb25hbCBtb2RpZmljYXRpb25zIHRvIHRoZSBjb3JlIExpbnV4IGtlcm5lbC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzEgMDk6Mjc8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMxVDA5OjI3OjQ3LjkxOTM4NjQzM1oiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwMzM0ODM3Mzg4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggb25seSBhZGRzIGFuZCBtb2RpZmllcyB0ZXN0IGNhc2VzIGFuZCB0ZXN0IGtlcm5lbCBtb2R1bGUgZGVmaW5pdGlvbnMgd2l0aGluIHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi8sIHdpdGggbm8gZnVuY3Rpb25hbCBtb2RpZmljYXRpb25zIHRvIHRoZSBjb3JlIExpbnV4IGtlcm5lbC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMxVDA5OjI3OjQ3LjkxOTM5Mjg1M1oiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDU0ODYzMTk2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgZTFmNmVhNzcxNWQ4NDM1ZmRmNzA2NjBiOWE2NjY2N2M2ODU2Mzc1ZFxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgTW9uIEF1ZyAzMSAwOToyNzo0NyAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy90ZXN0X3N0cnVjdF9vcHNfbXVsdGlfYXJncy5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvdGVzdF9zdHJ1Y3Rfb3BzX211bHRpX2FyZ3MuY1xcbmluZGV4IDBmMzIxZTg4OTg2MjAuLjdmNmY5ZDYxYzllMDcgMTAwNjQ0XFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvdGVzdF9zdHJ1Y3Rfb3BzX211bHRpX2FyZ3MuY1xcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3Rlc3Rfc3RydWN0X29wc19tdWx0aV9hcmdzLmNcXG5AQCAtMyw3ICszLDU0IEBAXFxuICNpbmNsdWRlIFxcdTAwM2N0ZXN0X3Byb2dzLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcXCJzdHJ1Y3Rfb3BzX211bHRpX2FyZ3Muc2tlbC5oXFxcIlxcbiBcXG4rc3RhdGljIHZvaWQgdGVzdF9yZWZjb3VudGVkX211bHRpKHZvaWQpXFxuK3tcXG4rXFx0c3RydWN0IHN0cnVjdF9vcHNfbXVsdGlfYXJncyAqc2tlbDtcXG4rXFx0aW50IGVycjtcXG4rXFxuK1xcdHNrZWwgPSBzdHJ1Y3Rfb3BzX211bHRpX2FyZ3NfX29wZW4oKTtcXG4rXFx0aWYgKCFBU1NFUlRfT0tfUFRSKHNrZWwsIFxcXCJzdHJ1Y3Rfb3BzX211bHRpX2FyZ3NfX29wZW5cXFwiKSlcXG4rXFx0XFx0cmV0dXJuO1xcbitcXG4rXFx0ZXJyID0gc3RydWN0X29wc19tdWx0aV9hcmdzX19sb2FkKHNrZWwpO1xcbitcXHRBU1NFUlRfRVEoZXJyLCAtRUlOVkFMLCBcXFwic3RydWN0X29wc19tdWx0aV9hcmdzX19sb2FkXFxcIik7XFxuK1xcbitcXHRzdHJ1Y3Rfb3BzX211bHRpX2FyZ3NfX2Rlc3Ryb3koc2tlbCk7XFxuK31cXG4rXFxuK3N0YXRpYyB2b2lkIHRlc3RfdHJhbXBvbGluZV9zdGFja19hcmdzKHZvaWQpXFxuK3tcXG4rXFx0c3RydWN0IHN0cnVjdF9vcHNfbXVsdGlfYXJncyAqc2tlbDtcXG4rXFx0c3RydWN0IGJwZl9saW5rICpsaW5rID0gTlVMTDtcXG4rXFx0aW50IGVycjtcXG4rXFxuK1xcdHNrZWwgPSBzdHJ1Y3Rfb3BzX211bHRpX2FyZ3NfX29wZW4oKTtcXG4rXFx0aWYgKCFBU1NFUlRfT0tfUFRSKHNrZWwsIFxcXCJzdHJ1Y3Rfb3BzX211bHRpX2FyZ3NfX29wZW5cXFwiKSlcXG4rXFx0XFx0cmV0dXJuO1xcbitcXG4rXFx0YnBmX3Byb2dyYW1fX3NldF9hdXRvbG9hZChza2VsLVxcdTAwM2Vwcm9ncy50ZXN0X3JlZmNvdW50ZWRfbXVsdGksIGZhbHNlKTtcXG4rXFx0c2tlbC1cXHUwMDNlc3RydWN0X29wcy50ZXN0bW9kX3JlZl9hY3F1aXJlLVxcdTAwM2V0ZXN0X3JlZmNvdW50ZWRfbXVsdGkgPSBOVUxMO1xcbitcXG4rXFx0ZXJyID0gc3RydWN0X29wc19tdWx0aV9hcmdzX19sb2FkKHNrZWwpO1xcbitcXHRpZiAoIUFTU0VSVF9PSyhlcnIsIFxcXCJzdHJ1Y3Rfb3BzX211bHRpX2FyZ3NfX2xvYWRcXFwiKSlcXG4rXFx0XFx0Z290byBvdXQ7XFxuK1xcbitcXHRsaW5rID0gYnBmX21hcF9fYXR0YWNoX3N0cnVjdF9vcHMoc2tlbC1cXHUwMDNlbWFwcy50ZXN0bW9kX3JlZl9hY3F1aXJlKTtcXG4rXFx0aWYgKCFBU1NFUlRfT0tfUFRSKGxpbmssIFxcXCJicGZfbWFwX19hdHRhY2hfc3RydWN0X29wc1xcXCIpKVxcbitcXHRcXHRnb3RvIG91dDtcXG4rXFxuK1xcdEFTU0VSVF9FUShza2VsLVxcdTAwM2Vic3MtXFx1MDAzZWdvdF9hcmc5LCA5OTk5LCBcXFwiY2hlY2tfc3RhY2tfcGFzc2VkX2FyZzlcXFwiKTtcXG4rXFxuK291dDpcXG4rXFx0YnBmX2xpbmtfX2Rlc3Ryb3kobGluayk7XFxuK1xcdHN0cnVjdF9vcHNfbXVsdGlfYXJnc19fZGVzdHJveShza2VsKTtcXG4rfVxcbitcXG4gdm9pZCB0ZXN0X3N0cnVjdF9vcHNfbXVsdGlfYXJncyh2b2lkKVxcbiB7XFxuLVxcdFJVTl9URVNUUyhzdHJ1Y3Rfb3BzX211bHRpX2FyZ3MpO1xcbitcXHRpZiAodGVzdF9fc3RhcnRfc3VidGVzdChcXFwidGVzdF9yZWZjb3VudGVkX211bHRpXFxcIikpXFxuK1xcdFxcdHRlc3RfcmVmY291bnRlZF9tdWx0aSgpO1xcbitcXG4rXFx0aWYgKHRlc3RfX3N0YXJ0X3N1YnRlc3QoXFxcInRlc3RfdHJhbXBvbGluZV9zdGFja19hcmdzXFxcIikpXFxuK1xcdFxcdHRlc3RfdHJhbXBvbGluZV9zdGFja19hcmdzKCk7XFxuIH1cXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3N0cnVjdF9vcHNfbXVsdGlfYXJncy5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3N0cnVjdF9vcHNfbXVsdGlfYXJncy5jXFxuaW5kZXggYzYyYmUxNTc1N2YwNC4uZjBmNDc2NzZiMDk5YSAxMDA2NDRcXG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mvc3RydWN0X29wc19tdWx0aV9hcmdzLmNcXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mvc3RydWN0X29wc19tdWx0aV9hcmdzLmNcXG5AQCAtMjksNyArMjksMjAgQEAgaW50IHRlc3RfcmVmY291bnRlZF9tdWx0aSh1bnNpZ25lZCBsb25nIGxvbmcgKmN0eClcXG4gXFx0cmV0dXJuIDA7XFxuIH1cXG4gXFxuK19fdTY0IGdvdF9hcmc5ID0gMDtcXG4rXFxuK1NFQyhcXFwic3RydWN0X29wcy90ZXN0X3RyYW1wb2xpbmVfc3RhY2tfYXJnc1xcXCIpXFxuK2ludCBCUEZfUFJPRyh0ZXN0X3RyYW1wb2xpbmVfc3RhY2tfYXJncywgaW50IGFyZzEsIGludCBhcmcyLCBpbnQgYXJnMyxcXG4rXFx0XFx0XFx0XFx0XFx0IGludCBhcmc0LCBpbnQgYXJnNSwgaW50IGFyZzYsXFxuK1xcdFxcdFxcdFxcdFxcdCBpbnQgYXJnNywgaW50IGFyZzgsIGludCBhcmc5KVxcbit7XFxuK1xcdGdvdF9hcmc5ID0gYXJnOTtcXG4rXFxuK1xcdHJldHVybiAwO1xcbit9XFxuK1xcbiBTRUMoXFxcIi5zdHJ1Y3Rfb3BzLmxpbmtcXFwiKVxcbiBzdHJ1Y3QgYnBmX3Rlc3Rtb2Rfb3BzIHRlc3Rtb2RfcmVmX2FjcXVpcmUgPSB7XFxuIFxcdC50ZXN0X3JlZmNvdW50ZWRfbXVsdGkgPSAodm9pZCAqKXRlc3RfcmVmY291bnRlZF9tdWx0aSxcXG4rXFx0LnRlc3RfdHJhbXBvbGluZV9zdGFja19hcmdzID0gKHZvaWQgKil0ZXN0X3RyYW1wb2xpbmVfc3RhY2tfYXJncyxcXG4gfTtcXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Rlc3Rfa21vZHMvYnBmX3Rlc3Rtb2QuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi90ZXN0X2ttb2RzL2JwZl90ZXN0bW9kLmNcXG5pbmRleCAyMzgwYjZjYmRlYWRjLi44ZjA3NDRlNjA3NWIzIDEwMDY0NFxcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi90ZXN0X2ttb2RzL2JwZl90ZXN0bW9kLmNcXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdGVzdF9rbW9kcy9icGZfdGVzdG1vZC5jXFxuQEAgLTE2NzgsNiArMTY3OCw5IEBAIHN0YXRpYyBib29sIGJwZl90ZXN0bW9kX29wc19pc192YWxpZF9hY2Nlc3MoaW50IG9mZiwgaW50IHNpemUsXFxuIFxcdHJldHVybiBicGZfdHJhY2luZ19idGZfY3R4X2FjY2VzcyhvZmYsIHNpemUsIHR5cGUsIHByb2csIGluZm8pO1xcbiB9XFxuIFxcbitzdGF0aWMgREVGSU5FX01VVEVYKHN0X29wc190cmFtcG9saW5lX211dGV4KTtcXG4rc3RhdGljIHN0cnVjdCBicGZfdGVzdG1vZF9vcHMgKnN0X29wc190cmFtcG9saW5lO1xcbitcXG4gc3RhdGljIGludCBicGZfdGVzdG1vZF9vcHNfaW5pdF9tZW1iZXIoY29uc3Qgc3RydWN0IGJ0Zl90eXBlICp0LFxcbiBcXHRcXHRcXHRcXHQgICAgICAgY29uc3Qgc3RydWN0IGJ0Zl9tZW1iZXIgKm1lbWJlcixcXG4gXFx0XFx0XFx0XFx0ICAgICAgIHZvaWQgKmtkYXRhLCBjb25zdCB2b2lkICp1ZGF0YSlcXG5AQCAtMTY5MSw2ICsxNjk0LDE4IEBAIHN0YXRpYyBpbnQgYnBmX3Rlc3Rtb2Rfb3BzX2luaXRfbWVtYmVyKGNvbnN0IHN0cnVjdCBidGZfdHlwZSAqdCxcXG4gXFx0XFx0KChzdHJ1Y3QgYnBmX3Rlc3Rtb2Rfb3BzICopa2RhdGEpLVxcdTAwM2VkYXRhID0gKChzdHJ1Y3QgYnBmX3Rlc3Rtb2Rfb3BzICopdWRhdGEpLVxcdTAwM2VkYXRhO1xcbiBcXHRcXHRyZXR1cm4gMTtcXG4gXFx0fVxcbitcXG4rXFx0aWYgKG1lbWJlci1cXHUwMDNlb2Zmc2V0ID09IG9mZnNldG9mKHN0cnVjdCBicGZfdGVzdG1vZF9vcHMsIHRlc3RfdHJhbXBvbGluZV9zdGFja19hcmdzKSAqIDgpIHtcXG4rXFx0XFx0bXV0ZXhfbG9jayhcXHUwMDI2c3Rfb3BzX3RyYW1wb2xpbmVfbXV0ZXgpO1xcbitcXHRcXHRpZiAoc3Rfb3BzX3RyYW1wb2xpbmUpIHtcXG4rXFx0XFx0XFx0cHJfZXJyKFxcXCJzdF9vcHNfdHJhbXBvbGluZSBoYXMgYWxyZWFkeSBiZWVuIHJlZ2lzdGVyZWRcXFxcblxcXCIpO1xcbitcXHRcXHRcXHRtdXRleF91bmxvY2soXFx1MDAyNnN0X29wc190cmFtcG9saW5lX211dGV4KTtcXG4rXFx0XFx0XFx0cmV0dXJuIC1FRVhJU1Q7XFxuK1xcdFxcdH1cXG4rXFx0XFx0c3Rfb3BzX3RyYW1wb2xpbmUgPSAoc3RydWN0IGJwZl90ZXN0bW9kX29wcyAqKWtkYXRhO1xcbitcXHRcXHRtdXRleF91bmxvY2soXFx1MDAyNnN0X29wc190cmFtcG9saW5lX211dGV4KTtcXG4rXFx0fVxcbitcXG4gXFx0cmV0dXJuIDA7XFxuIH1cXG4gXFxuQEAgLTE3MjAsMTEgKzE3MzUsMjAgQEAgc3RhdGljIGludCBicGZfZHVtbXlfcmVnKHZvaWQgKmtkYXRhLCBzdHJ1Y3QgYnBmX2xpbmsgKmxpbmspXFxuIFxcdGlmIChvcHMtXFx1MDAzZXRlc3RfMilcXG4gXFx0XFx0b3BzLVxcdTAwM2V0ZXN0XzIoNCwgb3BzLVxcdTAwM2VkYXRhKTtcXG4gXFxuK1xcdG11dGV4X2xvY2soXFx1MDAyNnN0X29wc190cmFtcG9saW5lX211dGV4KTtcXG4rXFx0aWYgKHN0X29wc190cmFtcG9saW5lIFxcdTAwMjZcXHUwMDI2IHN0X29wc190cmFtcG9saW5lLVxcdTAwM2V0ZXN0X3RyYW1wb2xpbmVfc3RhY2tfYXJncylcXG4rXFx0XFx0c3Rfb3BzX3RyYW1wb2xpbmUtXFx1MDAzZXRlc3RfdHJhbXBvbGluZV9zdGFja19hcmdzKDEsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDk5OTkpO1xcbitcXHRtdXRleF91bmxvY2soXFx1MDAyNnN0X29wc190cmFtcG9saW5lX211dGV4KTtcXG4rXFxuIFxcdHJldHVybiAwO1xcbiB9XFxuIFxcbiBzdGF0aWMgdm9pZCBicGZfZHVtbXlfdW5yZWcodm9pZCAqa2RhdGEsIHN0cnVjdCBicGZfbGluayAqbGluaylcXG4ge1xcbitcXHRtdXRleF9sb2NrKFxcdTAwMjZzdF9vcHNfdHJhbXBvbGluZV9tdXRleCk7XFxuK1xcdGlmIChzdF9vcHNfdHJhbXBvbGluZSA9PSAoc3RydWN0IGJwZl90ZXN0bW9kX29wcyAqKWtkYXRhKVxcbitcXHRcXHRzdF9vcHNfdHJhbXBvbGluZSA9IE5VTEw7XFxuK1xcdG11dGV4X3VubG9jayhcXHUwMDI2c3Rfb3BzX3RyYW1wb2xpbmVfbXV0ZXgpO1xcbiB9XFxuIFxcbiBzdGF0aWMgaW50IGJwZl90ZXN0bW9kX3Rlc3RfMSh2b2lkKVxcbkBAIC0xNzY2LDYgKzE3OTAsMTMgQEAgYnBmX3Rlc3Rtb2Rfb3BzX190ZXN0X3JldHVybl9yZWZfa3B0cihpbnQgZHVtbXksIHN0cnVjdCB0YXNrX3N0cnVjdCAqdGFza19fcmVmLFxcbiBcXHRyZXR1cm4gTlVMTDtcXG4gfVxcbiBcXG4rc3RhdGljIGludCBicGZfdGVzdG1vZF9vcHNfX3Rlc3RfdHJhbXBvbGluZV9zdGFja19hcmdzKGludCBhcmcxLCBpbnQgYXJnMiwgaW50IGFyZzMsXFxuK1xcdFxcdFxcdFxcdFxcdFxcdCAgICAgICBpbnQgYXJnNCwgaW50IGFyZzUsIGludCBhcmc2LFxcbitcXHRcXHRcXHRcXHRcXHRcXHQgICAgICAgaW50IGFyZzcsIGludCBhcmc4LCBpbnQgYXJnOSlcXG4re1xcbitcXHRyZXR1cm4gYXJnOTtcXG4rfVxcbitcXG4gc3RhdGljIHN0cnVjdCBicGZfdGVzdG1vZF9vcHMgX19icGZfdGVzdG1vZF9vcHMgPSB7XFxuIFxcdC50ZXN0XzEgPSBicGZfdGVzdG1vZF90ZXN0XzEsXFxuIFxcdC50ZXN0XzIgPSBicGZfdGVzdG1vZF90ZXN0XzIsXFxuQEAgLTE3NzMsNiArMTgwNCw3IEBAIHN0YXRpYyBzdHJ1Y3QgYnBmX3Rlc3Rtb2Rfb3BzIF9fYnBmX3Rlc3Rtb2Rfb3BzID0ge1xcbiBcXHQudGVzdF9yZWZjb3VudGVkID0gYnBmX3Rlc3Rtb2Rfb3BzX190ZXN0X3JlZmNvdW50ZWQsXFxuIFxcdC50ZXN0X3JlZmNvdW50ZWRfbXVsdGkgPSBicGZfdGVzdG1vZF9vcHNfX3Rlc3RfcmVmY291bnRlZF9tdWx0aSxcXG4gXFx0LnRlc3RfcmV0dXJuX3JlZl9rcHRyID0gYnBmX3Rlc3Rtb2Rfb3BzX190ZXN0X3JldHVybl9yZWZfa3B0cixcXG4rXFx0LnRlc3RfdHJhbXBvbGluZV9zdGFja19hcmdzID0gYnBmX3Rlc3Rtb2Rfb3BzX190ZXN0X3RyYW1wb2xpbmVfc3RhY2tfYXJncyxcXG4gfTtcXG4gXFxuIHN0cnVjdCBicGZfc3RydWN0X29wcyBicGZfYnBmX3Rlc3Rtb2Rfb3BzID0ge1xcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdGVzdF9rbW9kcy9icGZfdGVzdG1vZC5oIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Rlc3Rfa21vZHMvYnBmX3Rlc3Rtb2QuaFxcbmluZGV4IDIxMGI5MTkyOTBjYzIuLjQyMjU3YWU4OWZkNWIgMTAwNjQ0XFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Rlc3Rfa21vZHMvYnBmX3Rlc3Rtb2QuaFxcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi90ZXN0X2ttb2RzL2JwZl90ZXN0bW9kLmhcXG5AQCAtNDYsNiArNDYsMTEgQEAgc3RydWN0IGJwZl90ZXN0bW9kX29wcyB7XFxuIFxcdHN0cnVjdCB0YXNrX3N0cnVjdCAqKCp0ZXN0X3JldHVybl9yZWZfa3B0cikoaW50IGR1bW15LCBzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRhc2ssXFxuIFxcdFxcdFxcdFxcdFxcdFxcdCAgICBzdHJ1Y3QgY2dyb3VwICpjZ3JwKTtcXG4gXFxuK1xcdC8qIFVzZWQgdG8gdGVzdCBpbmRpcmVjdCBzdHJ1Y3Rfb3BzIHRyYW1wb2xpbmVzIHN0YWNrLXBhc3NlZCBhcmd1bWVudHMgKFxcdTAwM2U4IGFyZ3MpLiAqL1xcbitcXHRpbnQgKCp0ZXN0X3RyYW1wb2xpbmVfc3RhY2tfYXJncykoaW50IGFyZzEsIGludCBhcmcyLCBpbnQgYXJnMyxcXG4rXFx0XFx0XFx0XFx0XFx0ICBpbnQgYXJnNCwgaW50IGFyZzUsIGludCBhcmc2LFxcbitcXHRcXHRcXHRcXHRcXHQgIGludCBhcmc3LCBpbnQgYXJnOCwgaW50IGFyZzkpO1xcbitcXG4gXFx0LyogVGhlIGZvbGxvd2luZyBmaWVsZHMgYXJlIHVzZWQgdG8gdGVzdCBzaGFkb3cgY29waWVzLiAqL1xcbiBcXHRjaGFyIG9uZWJ5dGU7XFxuIFxcdHN0cnVjdCB7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMxVDA5OjI3OjQ4LjM3NTA5ODc0OVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImNvcmUiLCJEdXJhdGlvbiI6OTg3OTExMDQwMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggb25seSBhZGRzIGFuZCBtb2RpZmllcyB0ZXN0IGNhc2VzIGFuZCB0ZXN0IGtlcm5lbCBtb2R1bGUgZGVmaW5pdGlvbnMgd2l0aGluIHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi8sIHdpdGggbm8gZnVuY3Rpb25hbCBtb2RpZmljYXRpb25zIHRvIHRoZSBjb3JlIExpbnV4IGtlcm5lbC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGUxZjZlYTc3MTVkODQzNWZkZjcwNjYwYjlhNjY2NjdjNjg1NjM3NWRcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEF1ZyAzMSAwOToyNzo0NyAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3Rlc3Rfc3RydWN0X29wc19tdWx0aV9hcmdzLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy90ZXN0X3N0cnVjdF9vcHNfbXVsdGlfYXJncy5jXG5pbmRleCAwZjMyMWU4ODk4NjIwLi43ZjZmOWQ2MWM5ZTA3IDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvdGVzdF9zdHJ1Y3Rfb3BzX211bHRpX2FyZ3MuY1xuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvdGVzdF9zdHJ1Y3Rfb3BzX211bHRpX2FyZ3MuY1xuQEAgLTMsNyArMyw1NCBAQFxuICNpbmNsdWRlIFx1MDAzY3Rlc3RfcHJvZ3MuaFx1MDAzZVxuICNpbmNsdWRlIFwic3RydWN0X29wc19tdWx0aV9hcmdzLnNrZWwuaFwiXG4gXG4rc3RhdGljIHZvaWQgdGVzdF9yZWZjb3VudGVkX211bHRpKHZvaWQpXG4re1xuK1x0c3RydWN0IHN0cnVjdF9vcHNfbXVsdGlfYXJncyAqc2tlbDtcbitcdGludCBlcnI7XG4rXG4rXHRza2VsID0gc3RydWN0X29wc19tdWx0aV9hcmdzX19vcGVuKCk7XG4rXHRpZiAoIUFTU0VSVF9PS19QVFIoc2tlbCwgXCJzdHJ1Y3Rfb3BzX211bHRpX2FyZ3NfX29wZW5cIikpXG4rXHRcdHJldHVybjtcbitcbitcdGVyciA9IHN0cnVjdF9vcHNfbXVsdGlfYXJnc19fbG9hZChza2VsKTtcbitcdEFTU0VSVF9FUShlcnIsIC1FSU5WQUwsIFwic3RydWN0X29wc19tdWx0aV9hcmdzX19sb2FkXCIpO1xuK1xuK1x0c3RydWN0X29wc19tdWx0aV9hcmdzX19kZXN0cm95KHNrZWwpO1xuK31cbitcbitzdGF0aWMgdm9pZCB0ZXN0X3RyYW1wb2xpbmVfc3RhY2tfYXJncyh2b2lkKVxuK3tcbitcdHN0cnVjdCBzdHJ1Y3Rfb3BzX211bHRpX2FyZ3MgKnNrZWw7XG4rXHRzdHJ1Y3QgYnBmX2xpbmsgKmxpbmsgPSBOVUxMO1xuK1x0aW50IGVycjtcbitcbitcdHNrZWwgPSBzdHJ1Y3Rfb3BzX211bHRpX2FyZ3NfX29wZW4oKTtcbitcdGlmICghQVNTRVJUX09LX1BUUihza2VsLCBcInN0cnVjdF9vcHNfbXVsdGlfYXJnc19fb3BlblwiKSlcbitcdFx0cmV0dXJuO1xuK1xuK1x0YnBmX3Byb2dyYW1fX3NldF9hdXRvbG9hZChza2VsLVx1MDAzZXByb2dzLnRlc3RfcmVmY291bnRlZF9tdWx0aSwgZmFsc2UpO1xuK1x0c2tlbC1cdTAwM2VzdHJ1Y3Rfb3BzLnRlc3Rtb2RfcmVmX2FjcXVpcmUtXHUwMDNldGVzdF9yZWZjb3VudGVkX211bHRpID0gTlVMTDtcbitcbitcdGVyciA9IHN0cnVjdF9vcHNfbXVsdGlfYXJnc19fbG9hZChza2VsKTtcbitcdGlmICghQVNTRVJUX09LKGVyciwgXCJzdHJ1Y3Rfb3BzX211bHRpX2FyZ3NfX2xvYWRcIikpXG4rXHRcdGdvdG8gb3V0O1xuK1xuK1x0bGluayA9IGJwZl9tYXBfX2F0dGFjaF9zdHJ1Y3Rfb3BzKHNrZWwtXHUwMDNlbWFwcy50ZXN0bW9kX3JlZl9hY3F1aXJlKTtcbitcdGlmICghQVNTRVJUX09LX1BUUihsaW5rLCBcImJwZl9tYXBfX2F0dGFjaF9zdHJ1Y3Rfb3BzXCIpKVxuK1x0XHRnb3RvIG91dDtcbitcbitcdEFTU0VSVF9FUShza2VsLVx1MDAzZWJzcy1cdTAwM2Vnb3RfYXJnOSwgOTk5OSwgXCJjaGVja19zdGFja19wYXNzZWRfYXJnOVwiKTtcbitcbitvdXQ6XG4rXHRicGZfbGlua19fZGVzdHJveShsaW5rKTtcbitcdHN0cnVjdF9vcHNfbXVsdGlfYXJnc19fZGVzdHJveShza2VsKTtcbit9XG4rXG4gdm9pZCB0ZXN0X3N0cnVjdF9vcHNfbXVsdGlfYXJncyh2b2lkKVxuIHtcbi1cdFJVTl9URVNUUyhzdHJ1Y3Rfb3BzX211bHRpX2FyZ3MpO1xuK1x0aWYgKHRlc3RfX3N0YXJ0X3N1YnRlc3QoXCJ0ZXN0X3JlZmNvdW50ZWRfbXVsdGlcIikpXG4rXHRcdHRlc3RfcmVmY291bnRlZF9tdWx0aSgpO1xuK1xuK1x0aWYgKHRlc3RfX3N0YXJ0X3N1YnRlc3QoXCJ0ZXN0X3RyYW1wb2xpbmVfc3RhY2tfYXJnc1wiKSlcbitcdFx0dGVzdF90cmFtcG9saW5lX3N0YWNrX2FyZ3MoKTtcbiB9XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3N0cnVjdF9vcHNfbXVsdGlfYXJncy5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3N0cnVjdF9vcHNfbXVsdGlfYXJncy5jXG5pbmRleCBjNjJiZTE1NzU3ZjA0Li5mMGY0NzY3NmIwOTlhIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3N0cnVjdF9vcHNfbXVsdGlfYXJncy5jXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mvc3RydWN0X29wc19tdWx0aV9hcmdzLmNcbkBAIC0yOSw3ICsyOSwyMCBAQCBpbnQgdGVzdF9yZWZjb3VudGVkX211bHRpKHVuc2lnbmVkIGxvbmcgbG9uZyAqY3R4KVxuIFx0cmV0dXJuIDA7XG4gfVxuIFxuK19fdTY0IGdvdF9hcmc5ID0gMDtcbitcbitTRUMoXCJzdHJ1Y3Rfb3BzL3Rlc3RfdHJhbXBvbGluZV9zdGFja19hcmdzXCIpXG4raW50IEJQRl9QUk9HKHRlc3RfdHJhbXBvbGluZV9zdGFja19hcmdzLCBpbnQgYXJnMSwgaW50IGFyZzIsIGludCBhcmczLFxuK1x0XHRcdFx0XHQgaW50IGFyZzQsIGludCBhcmc1LCBpbnQgYXJnNixcbitcdFx0XHRcdFx0IGludCBhcmc3LCBpbnQgYXJnOCwgaW50IGFyZzkpXG4re1xuK1x0Z290X2FyZzkgPSBhcmc5O1xuK1xuK1x0cmV0dXJuIDA7XG4rfVxuK1xuIFNFQyhcIi5zdHJ1Y3Rfb3BzLmxpbmtcIilcbiBzdHJ1Y3QgYnBmX3Rlc3Rtb2Rfb3BzIHRlc3Rtb2RfcmVmX2FjcXVpcmUgPSB7XG4gXHQudGVzdF9yZWZjb3VudGVkX211bHRpID0gKHZvaWQgKil0ZXN0X3JlZmNvdW50ZWRfbXVsdGksXG4rXHQudGVzdF90cmFtcG9saW5lX3N0YWNrX2FyZ3MgPSAodm9pZCAqKXRlc3RfdHJhbXBvbGluZV9zdGFja19hcmdzLFxuIH07XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Rlc3Rfa21vZHMvYnBmX3Rlc3Rtb2QuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi90ZXN0X2ttb2RzL2JwZl90ZXN0bW9kLmNcbmluZGV4IDIzODBiNmNiZGVhZGMuLjhmMDc0NGU2MDc1YjMgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdGVzdF9rbW9kcy9icGZfdGVzdG1vZC5jXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdGVzdF9rbW9kcy9icGZfdGVzdG1vZC5jXG5AQCAtMTY3OCw2ICsxNjc4LDkgQEAgc3RhdGljIGJvb2wgYnBmX3Rlc3Rtb2Rfb3BzX2lzX3ZhbGlkX2FjY2VzcyhpbnQgb2ZmLCBpbnQgc2l6ZSxcbiBcdHJldHVybiBicGZfdHJhY2luZ19idGZfY3R4X2FjY2VzcyhvZmYsIHNpemUsIHR5cGUsIHByb2csIGluZm8pO1xuIH1cbiBcbitzdGF0aWMgREVGSU5FX01VVEVYKHN0X29wc190cmFtcG9saW5lX211dGV4KTtcbitzdGF0aWMgc3RydWN0IGJwZl90ZXN0bW9kX29wcyAqc3Rfb3BzX3RyYW1wb2xpbmU7XG4rXG4gc3RhdGljIGludCBicGZfdGVzdG1vZF9vcHNfaW5pdF9tZW1iZXIoY29uc3Qgc3RydWN0IGJ0Zl90eXBlICp0LFxuIFx0XHRcdFx0ICAgICAgIGNvbnN0IHN0cnVjdCBidGZfbWVtYmVyICptZW1iZXIsXG4gXHRcdFx0XHQgICAgICAgdm9pZCAqa2RhdGEsIGNvbnN0IHZvaWQgKnVkYXRhKVxuQEAgLTE2OTEsNiArMTY5NCwxOCBAQCBzdGF0aWMgaW50IGJwZl90ZXN0bW9kX29wc19pbml0X21lbWJlcihjb25zdCBzdHJ1Y3QgYnRmX3R5cGUgKnQsXG4gXHRcdCgoc3RydWN0IGJwZl90ZXN0bW9kX29wcyAqKWtkYXRhKS1cdTAwM2VkYXRhID0gKChzdHJ1Y3QgYnBmX3Rlc3Rtb2Rfb3BzICopdWRhdGEpLVx1MDAzZWRhdGE7XG4gXHRcdHJldHVybiAxO1xuIFx0fVxuK1xuK1x0aWYgKG1lbWJlci1cdTAwM2VvZmZzZXQgPT0gb2Zmc2V0b2Yoc3RydWN0IGJwZl90ZXN0bW9kX29wcywgdGVzdF90cmFtcG9saW5lX3N0YWNrX2FyZ3MpICogOCkge1xuK1x0XHRtdXRleF9sb2NrKFx1MDAyNnN0X29wc190cmFtcG9saW5lX211dGV4KTtcbitcdFx0aWYgKHN0X29wc190cmFtcG9saW5lKSB7XG4rXHRcdFx0cHJfZXJyKFwic3Rfb3BzX3RyYW1wb2xpbmUgaGFzIGFscmVhZHkgYmVlbiByZWdpc3RlcmVkXFxuXCIpO1xuK1x0XHRcdG11dGV4X3VubG9jayhcdTAwMjZzdF9vcHNfdHJhbXBvbGluZV9tdXRleCk7XG4rXHRcdFx0cmV0dXJuIC1FRVhJU1Q7XG4rXHRcdH1cbitcdFx0c3Rfb3BzX3RyYW1wb2xpbmUgPSAoc3RydWN0IGJwZl90ZXN0bW9kX29wcyAqKWtkYXRhO1xuK1x0XHRtdXRleF91bmxvY2soXHUwMDI2c3Rfb3BzX3RyYW1wb2xpbmVfbXV0ZXgpO1xuK1x0fVxuK1xuIFx0cmV0dXJuIDA7XG4gfVxuIFxuQEAgLTE3MjAsMTEgKzE3MzUsMjAgQEAgc3RhdGljIGludCBicGZfZHVtbXlfcmVnKHZvaWQgKmtkYXRhLCBzdHJ1Y3QgYnBmX2xpbmsgKmxpbmspXG4gXHRpZiAob3BzLVx1MDAzZXRlc3RfMilcbiBcdFx0b3BzLVx1MDAzZXRlc3RfMig0LCBvcHMtXHUwMDNlZGF0YSk7XG4gXG4rXHRtdXRleF9sb2NrKFx1MDAyNnN0X29wc190cmFtcG9saW5lX211dGV4KTtcbitcdGlmIChzdF9vcHNfdHJhbXBvbGluZSBcdTAwMjZcdTAwMjYgc3Rfb3BzX3RyYW1wb2xpbmUtXHUwMDNldGVzdF90cmFtcG9saW5lX3N0YWNrX2FyZ3MpXG4rXHRcdHN0X29wc190cmFtcG9saW5lLVx1MDAzZXRlc3RfdHJhbXBvbGluZV9zdGFja19hcmdzKDEsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDk5OTkpO1xuK1x0bXV0ZXhfdW5sb2NrKFx1MDAyNnN0X29wc190cmFtcG9saW5lX211dGV4KTtcbitcbiBcdHJldHVybiAwO1xuIH1cbiBcbiBzdGF0aWMgdm9pZCBicGZfZHVtbXlfdW5yZWcodm9pZCAqa2RhdGEsIHN0cnVjdCBicGZfbGluayAqbGluaylcbiB7XG4rXHRtdXRleF9sb2NrKFx1MDAyNnN0X29wc190cmFtcG9saW5lX211dGV4KTtcbitcdGlmIChzdF9vcHNfdHJhbXBvbGluZSA9PSAoc3RydWN0IGJwZl90ZXN0bW9kX29wcyAqKWtkYXRhKVxuK1x0XHRzdF9vcHNfdHJhbXBvbGluZSA9IE5VTEw7XG4rXHRtdXRleF91bmxvY2soXHUwMDI2c3Rfb3BzX3RyYW1wb2xpbmVfbXV0ZXgpO1xuIH1cbiBcbiBzdGF0aWMgaW50IGJwZl90ZXN0bW9kX3Rlc3RfMSh2b2lkKVxuQEAgLTE3NjYsNiArMTc5MCwxMyBAQCBicGZfdGVzdG1vZF9vcHNfX3Rlc3RfcmV0dXJuX3JlZl9rcHRyKGludCBkdW1teSwgc3RydWN0IHRhc2tfc3RydWN0ICp0YXNrX19yZWYsXG4gXHRyZXR1cm4gTlVMTDtcbiB9XG4gXG4rc3RhdGljIGludCBicGZfdGVzdG1vZF9vcHNfX3Rlc3RfdHJhbXBvbGluZV9zdGFja19hcmdzKGludCBhcmcxLCBpbnQgYXJnMiwgaW50IGFyZzMsXG4rXHRcdFx0XHRcdFx0ICAgICAgIGludCBhcmc0LCBpbnQgYXJnNSwgaW50IGFyZzYsXG4rXHRcdFx0XHRcdFx0ICAgICAgIGludCBhcmc3LCBpbnQgYXJnOCwgaW50IGFyZzkpXG4re1xuK1x0cmV0dXJuIGFyZzk7XG4rfVxuK1xuIHN0YXRpYyBzdHJ1Y3QgYnBmX3Rlc3Rtb2Rfb3BzIF9fYnBmX3Rlc3Rtb2Rfb3BzID0ge1xuIFx0LnRlc3RfMSA9IGJwZl90ZXN0bW9kX3Rlc3RfMSxcbiBcdC50ZXN0XzIgPSBicGZfdGVzdG1vZF90ZXN0XzIsXG5AQCAtMTc3Myw2ICsxODA0LDcgQEAgc3RhdGljIHN0cnVjdCBicGZfdGVzdG1vZF9vcHMgX19icGZfdGVzdG1vZF9vcHMgPSB7XG4gXHQudGVzdF9yZWZjb3VudGVkID0gYnBmX3Rlc3Rtb2Rfb3BzX190ZXN0X3JlZmNvdW50ZWQsXG4gXHQudGVzdF9yZWZjb3VudGVkX211bHRpID0gYnBmX3Rlc3Rtb2Rfb3BzX190ZXN0X3JlZmNvdW50ZWRfbXVsdGksXG4gXHQudGVzdF9yZXR1cm5fcmVmX2twdHIgPSBicGZfdGVzdG1vZF9vcHNfX3Rlc3RfcmV0dXJuX3JlZl9rcHRyLFxuK1x0LnRlc3RfdHJhbXBvbGluZV9zdGFja19hcmdzID0gYnBmX3Rlc3Rtb2Rfb3BzX190ZXN0X3RyYW1wb2xpbmVfc3RhY2tfYXJncyxcbiB9O1xuIFxuIHN0cnVjdCBicGZfc3RydWN0X29wcyBicGZfYnBmX3Rlc3Rtb2Rfb3BzID0ge1xuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi90ZXN0X2ttb2RzL2JwZl90ZXN0bW9kLmggYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdGVzdF9rbW9kcy9icGZfdGVzdG1vZC5oXG5pbmRleCAyMTBiOTE5MjkwY2MyLi40MjI1N2FlODlmZDViIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Rlc3Rfa21vZHMvYnBmX3Rlc3Rtb2QuaFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Rlc3Rfa21vZHMvYnBmX3Rlc3Rtb2QuaFxuQEAgLTQ2LDYgKzQ2LDExIEBAIHN0cnVjdCBicGZfdGVzdG1vZF9vcHMge1xuIFx0c3RydWN0IHRhc2tfc3RydWN0ICooKnRlc3RfcmV0dXJuX3JlZl9rcHRyKShpbnQgZHVtbXksIHN0cnVjdCB0YXNrX3N0cnVjdCAqdGFzayxcbiBcdFx0XHRcdFx0XHQgICAgc3RydWN0IGNncm91cCAqY2dycCk7XG4gXG4rXHQvKiBVc2VkIHRvIHRlc3QgaW5kaXJlY3Qgc3RydWN0X29wcyB0cmFtcG9saW5lcyBzdGFjay1wYXNzZWQgYXJndW1lbnRzIChcdTAwM2U4IGFyZ3MpLiAqL1xuK1x0aW50ICgqdGVzdF90cmFtcG9saW5lX3N0YWNrX2FyZ3MpKGludCBhcmcxLCBpbnQgYXJnMiwgaW50IGFyZzMsXG4rXHRcdFx0XHRcdCAgaW50IGFyZzQsIGludCBhcmc1LCBpbnQgYXJnNixcbitcdFx0XHRcdFx0ICBpbnQgYXJnNywgaW50IGFyZzgsIGludCBhcmc5KTtcbitcbiBcdC8qIFRoZSBmb2xsb3dpbmcgZmllbGRzIGFyZSB1c2VkIHRvIHRlc3Qgc2hhZG93IGNvcGllcy4gKi9cbiBcdGNoYXIgb25lYnl0ZTtcbiBcdHN0cnVjdCB7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0zMVQwOToyNzo0OC4zNzUwOTk4OTlaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo0Njc4MDE0NTAyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgUGF0Y2g6IFdvcnRoIEZ1enppbmc/KipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBGaXJzdCwgSSBzZWUgdGhlIHBhdGNoIG1vZGlmaWVzIHNldmVyYWwgZmlsZXMsIHNwZWNpZmljYWxseSB3aXRoaW4gYHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9gLiBUaGlzIGluY2x1ZGVzIGNoYW5nZXMgdG8gYHRlc3Rfc3RydWN0X29wc19tdWx0aV9hcmdzLmNgLCBgc3RydWN0X29wc19tdWx0aV9hcmdzLmNgLCBhbmQgaW1wb3J0YW50bHksIGBicGZfdGVzdG1vZC5jYCBhbmQgYC5oYC5cblxuTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gZGV0ZXJtaW5lIHRoZSBzY29wZSBvZiB0aGVzZSBjaGFuZ2VzLiBBcmUgd2UgKmp1c3QqIGRlYWxpbmcgd2l0aCBzZWxmLXRlc3RzLCBvciBpcyB0aGlzIHRvdWNoaW5nIHNvbWV0aGluZyBtb3JlIGZ1bmRhbWVudGFsPyBJIG5lZWQgdG8gcXVpY2tseSBhc2NlcnRhaW4gaWYgdGhlc2UgbW9kaWZpY2F0aW9ucyBibGVlZCBpbnRvIHRoZSBjb3JlIGtlcm5lbCBvciBkcml2ZXJzIGluIGEgd2F5IHRoYXQgd291bGQgbWFrZSB0aGlzIHBhdGNoIGZ1enphYmxlLiBBIHF1aWNrIGBnaXQgc3RhdHVzYCwgb3IgYSBxdWljayBncmVwIHRocm91Z2ggdGhlIGRpZmYsIHdvdWxkIGJlIG15IGdvLXRvLCBidXQgZnJvbSB3aGF0IEknbSBzZWVpbmcsIGl0IGFwcGVhcnMgY29uZmluZWQgdG8gYHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzYC5cblxuVGhlIGluY2x1c2lvbiBvZiBgYnBmX3Rlc3Rtb2RgIGRvZXMgcmFpc2UgYSBmbGFnLCB0aG91Z2guIElzIHRoaXMgYSAqZ2VudWluZSogdGVzdCBtb2R1bGUsIGNvbnRhaW5lZCBzb2xlbHkgd2l0aGluIHRoZSBzZWxmdGVzdHMgZGlyZWN0b3J5PyBPciBpcyB0aGlzIHNvbWV0aGluZyB0aGF0IGNvdWxkIHNvbWVob3cgaW50cm9kdWNlIGEgdnVsbmVyYWJpbGl0eS4gSSBrbm93IGZyb20gZXhwZXJpZW5jZSB0aGF0IGNoYW5nZXMgKnN0cmljdGx5KiB3aXRoaW4gYHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzLy4uLmAgdHlwaWNhbGx5IGRvbid0IGltcGFjdCB0aGUgY3J1Y2lhbCBhc3BlY3RzLlxuXG5TbywgbGV0IG1lIHJlZnJlc2ggdGhlIGd1aWRlbGluZXMuIFRoZSBpbnN0cnVjdGlvbnMgY2xlYXJseSBzdGF0ZSB0aGF0IGlmIGl0J3MgZG9jdW1lbnRhdGlvbiwgS2NvbmZpZywgb3IgY29tbWVudHMsIHdlIGlnbm9yZSBpdC4gVGhlIGNyaXRpY2FsIHBhcnQgaXMgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMuIEkgbmVlZCB0byBlc3RhYmxpc2ggaWYgdGhpcyB0b3VjaGVzIGFueXRoaW5nIHJlYWNoYWJsZSBvdXRzaWRlIHRoZSBzZWxmdGVzdHMgZGlyZWN0b3J5LlxuXG5UaGUgZmFjdCB0aGF0IGl0J3MgaW4gYHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzYCBzdHJvbmdseSBzdWdnZXN0cyBpdCdzIGEgdGVzdCBzZXR1cCwgbm90IGRpcmVjdGx5IGltcGFjdGluZyBjb3JlIGZ1bmN0aW9uYWxpdHkuIEknbSBnb2luZyB0byBxdWlja2x5IGNvbmZpcm0gd2hlcmUgYGJwZl90ZXN0bW9kYCBsaXZlcyB3aXRoIGBncmVwcGVyYCwgYnV0IG15IGluaXRpYWwgYXNzZXNzbWVudCBpcyB0aGF0IHRoaXMgaXMgKm5vdCogd29ydGggZnV6emluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6NDU2MywiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ0OSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMxVDA5OjI3OjUzLjA1MzExODA3MVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMzczMjcwMzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYnBmX3Rlc3Rtb2RcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwidG9vbHMvdGVzdGluZy9zZWxmdGVzdHNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiXFxuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiAyNTMwIGxpbmVzLlxcblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cXG5cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvTWFrZWZpbGU9MTMzPVRFU1RfUFJPR1NfRVhURU5ERUQgOj0gXFxcXFxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL01ha2VmaWxlLTEzNS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvTWFrZWZpbGU6MTM2OlRFU1RfS01PRFMgOj0gYnBmX3Rlc3Rtb2Qua28gYnBmX3Rlc3Rfbm9fY2ZpLmtvIGJwZl90ZXN0X21vZG9yZGVyX3gua28gXFxcXFxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9NYWtlZmlsZS0xMzctXFx0YnBmX3Rlc3RfbW9kb3JkZXJfeS5rbyBicGZfdGVzdF9ycXNwaW5sb2NrLmtvXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9hZ2dyZWdhdGVfcmV0LmM9OT1zdGF0aWMgYm9vbCB0ZXN0bW9kX2hhc19hcmVuYV90YWdnZWRfbWVtYmVyKHZvaWQpXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9hZ2dyZWdhdGVfcmV0LmMtMTktXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvYWdncmVnYXRlX3JldC5jOjIwOlxcdG1vZHVsZV9idGYgPSBidGZfX2xvYWRfbW9kdWxlX2J0ZihcXFwiYnBmX3Rlc3Rtb2RcXFwiLCB2bWxpbnV4X2J0Zik7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvYWdncmVnYXRlX3JldC5jLTIxLVxcdGlmICghbW9kdWxlX2J0ZilcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2F0dGFjaF9wcm9iZS5jPTE3MT1zdGF0aWMgdm9pZCB0ZXN0X2F0dGFjaF9rcHJvYmVfbGVnYWN5X2J5X2FkZHJfcmVqZWN0KHZvaWQpXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9hdHRhY2hfcHJvYmUuYy0yMDEtICogYnBmX2ZlbnRyeV9zaGFkb3dfdGVzdCBleGlzdHMgaW4gYm90aCB2bWxpbnV4IChuZXQvYnBmL3Rlc3RfcnVuLmMpIGFuZFxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2F0dGFjaF9wcm9iZS5jOjIwMjogKiBicGZfdGVzdG1vZCAoYnBmX3Rlc3Rtb2QuYykuIFdoZW4gYnBmX3Rlc3Rtb2QgaXMgbG9hZGVkIHRoZSBzeW1ib2wgaXNcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9hdHRhY2hfcHJvYmUuYy0yMDMtICogZHVwbGljYXRlZC4gVGVzdCB0aGF0IGtwcm9iZSBhdHRhY2htZW50IGhhbmRsZXMgdGhpcyBjb3JyZWN0bHk6XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvYXR0YWNoX3Byb2JlLmMtMjA0LSAqIC0gVW5xdWFsaWZpZWQgbmFtZSAoXFxcImJwZl9mZW50cnlfc2hhZG93X3Rlc3RcXFwiKSBhdHRhY2hlcyB0byB2bWxpbnV4LlxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2F0dGFjaF9wcm9iZS5jOjIwNTogKiAtIE1PRDpTWU0gbmFtZSAoXFxcImJwZl90ZXN0bW9kOmJwZl9mZW50cnlfc2hhZG93X3Rlc3RcXFwiKSBhdHRhY2hlcyB0byBtb2R1bGUuXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvYXR0YWNoX3Byb2JlLmMtMjA2LSAqXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9hdHRhY2hfcHJvYmUuYz0yMTA9c3RhdGljIHZvaWQgdGVzdF9hdHRhY2hfcHJvYmVfZHVwX3N5bShlbnVtIHByb2JlX2F0dGFjaF9tb2RlIGF0dGFjaF9tb2RlKVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvYXR0YWNoX3Byb2JlLmMtMjQxLVxcdGtwcm9iZV9saW5rID0gYnBmX3Byb2dyYW1fX2F0dGFjaF9rcHJvYmVfb3B0cyhza2VsLVxcdTAwM2Vwcm9ncy5oYW5kbGVfa3Byb2JlLFxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2F0dGFjaF9wcm9iZS5jOjI0MjpcXHRcXHRcXHRcXHRcXHRcXHQgICAgICBcXFwiYnBmX3Rlc3Rtb2Q6YnBmX2ZlbnRyeV9zaGFkb3dfdGVzdFxcXCIsXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvYXR0YWNoX3Byb2JlLmMtMjQzLVxcdFxcdFxcdFxcdFxcdFxcdCAgICAgIFxcdTAwMjZrcHJvYmVfb3B0cyk7XFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9hdHRhY2hfcHJvYmUuYy0yNDktXFx0a3JldHByb2JlX2xpbmsgPSBicGZfcHJvZ3JhbV9fYXR0YWNoX2twcm9iZV9vcHRzKHNrZWwtXFx1MDAzZXByb2dzLmhhbmRsZV9rcmV0cHJvYmUsXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvYXR0YWNoX3Byb2JlLmM6MjUwOlxcdFxcdFxcdFxcdFxcdFxcdFxcdCBcXFwiYnBmX3Rlc3Rtb2Q6YnBmX2ZlbnRyeV9zaGFkb3dfdGVzdFxcXCIsXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvYXR0YWNoX3Byb2JlLmMtMjUxLVxcdFxcdFxcdFxcdFxcdFxcdFxcdCBcXHUwMDI2a3Byb2JlX29wdHMpO1xcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvYXR0YWNoX3Byb2JlLmM9MzA3PXN0YXRpYyB2b2lkIHRlc3RfYXR0YWNoX2twcm9iZV9sb25nX2V2ZW50X25hbWUodm9pZClcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2F0dGFjaF9wcm9iZS5jLTMyMC1cXHRrcHJvYmVfbGluayA9IGJwZl9wcm9ncmFtX19hdHRhY2hfa3Byb2JlX29wdHMoc2tlbC1cXHUwMDNlcHJvZ3MuaGFuZGxlX2twcm9iZSxcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9hdHRhY2hfcHJvYmUuYzozMjE6XFx0XFx0XFx0XFx0XFx0XFx0ICAgICAgXFxcImJwZl90ZXN0bW9kX2xvb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vbmdfbmFtZVxcXCIsXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvYXR0YWNoX3Byb2JlLmMtMzIyLVxcdFxcdFxcdFxcdFxcdFxcdCAgICAgIFxcdTAwMjZrcHJvYmVfb3B0cyk7XFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9hdHRhY2hfcHJvYmUuYy0zMjgtXFx0a3JldHByb2JlX2xpbmsgPSBicGZfcHJvZ3JhbV9fYXR0YWNoX2twcm9iZV9vcHRzKHNrZWwtXFx1MDAzZXByb2dzLmhhbmRsZV9rcmV0cHJvYmUsXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvYXR0YWNoX3Byb2JlLmM6MzI5OlxcdFxcdFxcdFxcdFxcdFxcdFxcdCBcXFwiYnBmX3Rlc3Rtb2RfbG9vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29uZ19uYW1lXFxcIixcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9hdHRhY2hfcHJvYmUuYy0zMzAtXFx0XFx0XFx0XFx0XFx0XFx0XFx0IFxcdTAwMjZrcHJvYmVfb3B0cyk7XFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9icGZfbW9kX3JhY2UuYz00OD1zdGF0aWMgdm9pZCAqbG9hZF9tb2R1bGVfdGhyZWFkKHZvaWQgKnApXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9icGZfbW9kX3JhY2UuYy01MC1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9icGZfbW9kX3JhY2UuYzo1MTpcXHRpZiAoIUFTU0VSVF9ORVEobG9hZF9icGZfdGVzdG1vZChmYWxzZSksIDAsIFxcXCJsb2FkX21vZHVsZV90aHJlYWQgbXVzdCBmYWlsXFxcIikpXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvYnBmX21vZF9yYWNlLmMtNTItXFx0XFx0YXRvbWljX3N0b3JlKFxcdTAwMjZzdGF0ZSwgVFNfTU9EVUxFX0xPQUQpO1xcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvYnBmX21vZF9yYWNlLmM9OTA9c3RhdGljIHZvaWQgdGVzdF9icGZfbW9kX3JhY2VfY29uZmlnKGNvbnN0IHN0cnVjdCB0ZXN0X2NvbmZpZyAqY29uZmlnKVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvYnBmX21vZF9yYWNlLmMtMTAyLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2JwZl9tb2RfcmFjZS5jOjEwMzpcXHRpZiAoIUFTU0VSVF9PSyh1bmxvYWRfYnBmX3Rlc3Rtb2QoZmFsc2UpLCBcXFwidW5sb2FkIGJwZl90ZXN0bW9kXFxcIikpXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvYnBmX21vZF9yYWNlLmMtMTA0LVxcdFxcdGdvdG8gZW5kX21tYXA7XFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9icGZfbW9kX3JhY2UuYy0xODAtZW5kX21vZHVsZTpcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9icGZfbW9kX3JhY2UuYzoxODE6XFx0dW5sb2FkX2JwZl90ZXN0bW9kKGZhbHNlKTtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9icGZfbW9kX3JhY2UuYzoxODI6XFx0QVNTRVJUX09LKGxvYWRfYnBmX3Rlc3Rtb2QoZmFsc2UpLCBcXFwicmVzdG9yZSBicGZfdGVzdG1vZFxcXCIpO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2JwZl9tb2RfcmFjZS5jLTE4My1lbmRfbW1hcDpcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2J0Zl9kZWR1cF9zcGxpdC5jPTM3Mj1zdGF0aWMgdm9pZCB0ZXN0X3NwbGl0X2R1cF9zdHJ1Y3RfaW5fY3UoKVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvYnRmX2RlZHVwX3NwbGl0LmMtNDYyLSAqXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvYnRmX2RlZHVwX3NwbGl0LmM6NDYzOiAqIGJwZl90ZXN0bW9kX3Rlc3Rfd3JpdGUoKSBoYXMgbXVsdGlwbGUgY29yZSBrZXJuZWwgdHlwZSBwYXJhbWV0ZXJzO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2J0Zl9kZWR1cF9zcGxpdC5jLTQ2NC0gKlxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2J0Zl9kZWR1cF9zcGxpdC5jLTQ2NS0gKiBzc2l6ZV90XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvYnRmX2RlZHVwX3NwbGl0LmM6NDY2OiAqIGJwZl90ZXN0bW9kX3Rlc3Rfd3JpdGUoc3RydWN0IGZpbGUgKmZpbGUsIHN0cnVjdCBrb2JqZWN0ICprb2JqLFxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2J0Zl9kZWR1cF9zcGxpdC5jLTQ2Ny0gKiAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBiaW5fYXR0cmlidXRlICpiaW5fYXR0cixcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2J0Zl9kZWR1cF9zcGxpdC5jPTQ4MT1jb25zdCBjaGFyICptb2RfZnVuY3NbXSA9IHtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9idGZfZGVkdXBfc3BsaXQuYzo0ODI6XFx0XFxcImJwZl90ZXN0bW9kX3Rlc3Rfd3JpdGVcXFwiLFxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2J0Zl9kZWR1cF9zcGxpdC5jLTQ4My1cXHRcXFwiYnBmX2tmdW5jX2NhbGxfdGVzdDNcXFwiLFxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvYnRmX2RlZHVwX3NwbGl0LmM9NDg3PXN0YXRpYyB2b2lkIHRlc3Rfc3BsaXRfbW9kdWxlKHZvaWQpXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9idGZfZGVkdXBfc3BsaXQuYy00OTgtXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvYnRmX2RlZHVwX3NwbGl0LmM6NDk5OlxcdGJ0ZjEgPSBidGZfX3BhcnNlX3NwbGl0KFxcXCIvc3lzL2tlcm5lbC9idGYvYnBmX3Rlc3Rtb2RcXFwiLCB2bWxpbnV4X2J0Zik7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvYnRmX2RlZHVwX3NwbGl0LmMtNTAwLVxcdGlmICghQVNTRVJUX09LX1BUUihidGYxLCBcXFwic3BsaXRfYnRmXFxcIikpXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9idGZfZGVkdXBfc3BsaXQuYy01MjItXFx0XFx0Zm9yIChqID0gMCwgcCA9IGJ0Zl9wYXJhbXModCk7IGogXFx1MDAzYyB2bGVuOyBqKyssIHArKykge1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2J0Zl9kZWR1cF9zcGxpdC5jOjUyMzpcXHRcXHRcXHQvKiBicGZfdGVzdG1vZCB1c2VzIHJlc2lsaWVudCBzcGxpdCBCVEYsIHNvIGFueVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2J0Zl9kZWR1cF9zcGxpdC5jLTUyNC1cXHRcXHRcXHQgKiByZWZlcmVuY2UgdHlwZXMgd2lsbCBiZSBhZGRlZCB0byBzcGxpdCBCVEYgYW5kIHRoZWlyXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9idGZfbW9kdWxlLmMtNi1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9idGZfbW9kdWxlLmM6NzpzdGF0aWMgY29uc3QgY2hhciAqbW9kdWxlX25hbWUgPSBcXFwiYnBmX3Rlc3Rtb2RcXFwiO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2J0Zl9tb2R1bGUuYzo4OnN0YXRpYyBjb25zdCBjaGFyICpzeW1ib2xfbmFtZSA9IFxcXCJicGZfdGVzdG1vZF90ZXN0X3JlYWRcXFwiO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2J0Zl9tb2R1bGUuYy05LVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvYnRmX3RhZy5jPTU0PXN0YXRpYyBpbnQgbG9hZF9idGZzKHN0cnVjdCBidGYgKip2bWxpbnV4X2J0Ziwgc3RydWN0IGJ0ZiAqKm1vZHVsZV9idGYsXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9idGZfdGFnLmMtNTYte1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2J0Zl90YWcuYzo1NzpcXHRjb25zdCBjaGFyICptb2R1bGVfbmFtZSA9IFxcXCJicGZfdGVzdG1vZFxcXCI7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvYnRmX3RhZy5jLTU4LVxcdF9fczMyIHR5cGVfaWQ7XFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9jb3JlX3JlbG9jLmMtNC0jaW5jbHVkZSBcXFwicHJvZ3MvY29yZV9yZWxvY190eXBlcy5oXFxcIlxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2NvcmVfcmVsb2MuYzo1OiNpbmNsdWRlIFxcXCJ0ZXN0X2ttb2RzL2JwZl90ZXN0bW9kLmhcXFwiXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvY29yZV9yZWxvYy5jLTYtI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2xpbWl0cy5oXFx1MDAzZVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvY29yZV9yZWxvYy5jPTEyPXN0YXRpYyBpbnQgZHVyYXRpb24gPSAwO1xcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvY29yZV9yZWxvYy5jLTIyLVxcdC5vdXRwdXQgPSBTVFJVQ1RfVE9fQ0hBUl9QVFIoY29yZV9yZWxvY19tb2R1bGVfb3V0cHV0KSB7XFx0XFxcXFxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2NvcmVfcmVsb2MuYzoyMzpcXHRcXHQucmVhZF9jdHhfc3ogPSBzaXplb2Yoc3RydWN0IGJwZl90ZXN0bW9kX3Rlc3RfcmVhZF9jdHgpLFxcXFxcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9jb3JlX3JlbG9jLmMtMjQtXFx0XFx0LnJlYWRfY3R4X2V4aXN0cyA9IHRydWUsXFx0XFx0XFx0XFx0XFxcXFxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvY29yZV9yZWxvYy5jPTU0OT1zdGF0aWMgY29uc3Qgc3RydWN0IGNvcmVfcmVsb2NfdGVzdF9jYXNlIHRlc3RfY2FzZXNbXSA9IHtcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2NvcmVfcmVsb2MuYy01NjgtXFx0LyogdmFsaWRhdGUgd2UgY2FuIGZpbmQga2VybmVsIG1vZHVsZSBCVEYgdHlwZXMgZm9yIHJlbG9jcy9hdHRhY2ggKi9cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9jb3JlX3JlbG9jLmM6NTY5OlxcdE1PRFVMRVNfQ0FTRShcXFwibW9kdWxlX3Byb2JlZFxcXCIsIFxcXCJ0ZXN0X2NvcmVfbW9kdWxlX3Byb2JlZFxcXCIsIFxcXCJicGZfdGVzdG1vZF90ZXN0X3JlYWRcXFwiKSxcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9jb3JlX3JlbG9jLmMtNTcwLVxcdE1PRFVMRVNfQ0FTRShcXFwibW9kdWxlX2RpcmVjdFxcXCIsIFxcXCJ0ZXN0X2NvcmVfbW9kdWxlX2RpcmVjdFxcXCIsIE5VTEwpLFxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvZ2V0X2JyYW5jaF9zbmFwc2hvdC5jPTc2PXZvaWQgc2VyaWFsX3Rlc3RfZ2V0X2JyYW5jaF9zbmFwc2hvdCh2b2lkKVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvZ2V0X2JyYW5jaF9zbmFwc2hvdC5jLTk1LVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2dldF9icmFuY2hfc25hcHNob3QuYzo5NjpcXHRlcnIgPSBrYWxsc3ltc19maW5kKFxcXCJicGZfdGVzdG1vZF9sb29wX3Rlc3RcXFwiLCBcXHUwMDI2c2tlbC1cXHUwMDNlYnNzLVxcdTAwM2VhZGRyZXNzX2xvdyk7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvZ2V0X2JyYW5jaF9zbmFwc2hvdC5jLTk3LVxcdGlmICghQVNTRVJUX09LKGVyciwgXFxcImthbGxzeW1zX2ZpbmRcXFwiKSlcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2twcm9iZV9tdWx0aV90ZXN0LmM9NjYzPXN0YXRpYyB2b2lkIHRlc3RfYXR0YWNoX3dyaXRlX2N0eCh2b2lkKVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMva3Byb2JlX211bHRpX3Rlc3QuYy02NzAtICogVGVzdCBrcHJvYmVfbXVsdGkgaGFuZGxlcyBzaGFkb3cgc3ltYm9scyAodm1saW51eCArIG1vZHVsZSBkdXBsaWNhdGUpLlxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2twcm9iZV9tdWx0aV90ZXN0LmM6NjcxOiAqIGJwZl9mZW50cnlfc2hhZG93X3Rlc3QgZXhpc3RzIGluIGJvdGggdm1saW51eCBhbmQgYnBmX3Rlc3Rtb2QuXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMva3Byb2JlX211bHRpX3Rlc3QuYy02NzItICoga3Byb2JlX211bHRpIHJlc29sdmVzIHZpYSBmdHJhY2VfbG9va3VwX3N5bWJvbHMoKSB3aGljaCBmaW5kcyB0aGVcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2twcm9iZV9tdWx0aV90ZXN0bW9kX3Rlc3QuYz01MD1zdGF0aWMgdm9pZCB0ZXN0X3Rlc3Rtb2RfYXR0YWNoX2FwaV9hZGRycyh2b2lkKVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMva3Byb2JlX211bHRpX3Rlc3Rtb2RfdGVzdC5jLTU0LVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2twcm9iZV9tdWx0aV90ZXN0bW9kX3Rlc3QuYzo1NTpcXHRhZGRyc1swXSA9IGtzeW1fZ2V0X2FkZHJfbG9jYWwoa3N5bXMsIFxcXCJicGZfdGVzdG1vZF9mZW50cnlfdGVzdDFcXFwiKTtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9rcHJvYmVfbXVsdGlfdGVzdG1vZF90ZXN0LmMtNTYtXFx0QVNTRVJUX05FUShhZGRyc1swXSwgMCwgXFxcImtzeW1fZ2V0X2FkZHJfbG9jYWxcXFwiKTtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9rcHJvYmVfbXVsdGlfdGVzdG1vZF90ZXN0LmM6NTc6XFx0YWRkcnNbMV0gPSBrc3ltX2dldF9hZGRyX2xvY2FsKGtzeW1zLCBcXFwiYnBmX3Rlc3Rtb2RfZmVudHJ5X3Rlc3QyXFxcIik7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMva3Byb2JlX211bHRpX3Rlc3Rtb2RfdGVzdC5jLTU4LVxcdEFTU0VSVF9ORVEoYWRkcnNbMV0sIDAsIFxcXCJrc3ltX2dldF9hZGRyX2xvY2FsXFxcIik7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMva3Byb2JlX211bHRpX3Rlc3Rtb2RfdGVzdC5jOjU5OlxcdGFkZHJzWzJdID0ga3N5bV9nZXRfYWRkcl9sb2NhbChrc3ltcywgXFxcImJwZl90ZXN0bW9kX2ZlbnRyeV90ZXN0M1xcXCIpO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2twcm9iZV9tdWx0aV90ZXN0bW9kX3Rlc3QuYy02MC1cXHRBU1NFUlRfTkVRKGFkZHJzWzJdLCAwLCBcXFwia3N5bV9nZXRfYWRkcl9sb2NhbFxcXCIpO1xcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMva3Byb2JlX211bHRpX3Rlc3Rtb2RfdGVzdC5jPTY4PXN0YXRpYyB2b2lkIHRlc3RfdGVzdG1vZF9hdHRhY2hfYXBpX3N5bXModm9pZClcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2twcm9iZV9tdWx0aV90ZXN0bW9kX3Rlc3QuYy03MS1cXHRjb25zdCBjaGFyICpzeW1zWzNdID0ge1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2twcm9iZV9tdWx0aV90ZXN0bW9kX3Rlc3QuYzo3MjpcXHRcXHRcXFwiYnBmX3Rlc3Rtb2RfZmVudHJ5X3Rlc3QxXFxcIixcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9rcHJvYmVfbXVsdGlfdGVzdG1vZF90ZXN0LmM6NzM6XFx0XFx0XFxcImJwZl90ZXN0bW9kX2ZlbnRyeV90ZXN0MlxcXCIsXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMva3Byb2JlX211bHRpX3Rlc3Rtb2RfdGVzdC5jOjc0OlxcdFxcdFxcXCJicGZfdGVzdG1vZF9mZW50cnlfdGVzdDNcXFwiLFxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2twcm9iZV9tdWx0aV90ZXN0bW9kX3Rlc3QuYy03NS1cXHR9O1xcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMva3N5bXNfbW9kdWxlLmM9OT1zdGF0aWMgdm9pZCB0ZXN0X2tzeW1zX21vZHVsZV9sc2tlbCh2b2lkKVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMva3N5bXNfbW9kdWxlLmMtMzAtXFx0QVNTRVJUX0VRKHRvcHRzLnJldHZhbCwgMCwgXFxcInJldHZhbFxcXCIpO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2tzeW1zX21vZHVsZS5jOjMxOlxcdEFTU0VSVF9FUShza2VsLVxcdTAwM2Vic3MtXFx1MDAzZW91dF9icGZfdGVzdG1vZF9rc3ltLCA0MiwgXFxcImJwZl90ZXN0bW9kX2tzeW1cXFwiKTtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9rc3ltc19tb2R1bGUuYy0zMi1jbGVhbnVwOlxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMva3N5bXNfbW9kdWxlLmM9MzY9c3RhdGljIHZvaWQgdGVzdF9rc3ltc19tb2R1bGVfbGliYnBmKHZvaWQpXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9rc3ltc19tb2R1bGUuYy01Ny1cXHRBU1NFUlRfRVEodG9wdHMucmV0dmFsLCAwLCBcXFwicmV0dmFsXFxcIik7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMva3N5bXNfbW9kdWxlLmM6NTg6XFx0QVNTRVJUX0VRKHNrZWwtXFx1MDAzZWJzcy1cXHUwMDNlb3V0X2JwZl90ZXN0bW9kX2tzeW0sIDQyLCBcXFwiYnBmX3Rlc3Rtb2Rfa3N5bVxcXCIpO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2tzeW1zX21vZHVsZS5jLTU5LWNsZWFudXA6XFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9tb2R1bGVfYXR0YWNoLmM9MTI5PXN0YXRpYyB2b2lkIHRlc3RfbW9kdWxlX2F0dGFjaF9kZXRhY2goY29uc3QgY2hhciAqcHJvZ19uYW1lKVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvbW9kdWxlX2F0dGFjaC5jLTE1My1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9tb2R1bGVfYXR0YWNoLmM6MTU0OlxcdEFTU0VSVF9FUlIodHJ5X3VubG9hZF9tb2R1bGUoXFxcImJwZl90ZXN0bW9kXFxcIiwgMSwgZmFsc2UpLCBcXFwidHJ5X3VubG9hZF9tb2R1bGVcXFwiKTtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9tb2R1bGVfYXR0YWNoLmMtMTU1LVxcdGJwZl9saW5rX19kZXN0cm95KGxpbmspO1xcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvbW9kdWxlX2F0dGFjaC5jPTE2MD12b2lkIHRlc3RfbW9kdWxlX2F0dGFjaCh2b2lkKVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvbW9kdWxlX2F0dGFjaC5jLTE3NC1cXHRcXHR0ZXN0X21vZHVsZV9hdHRhY2hfcHJvZyhcXFwiaGFuZGxlX2ZlbnRyeV9tYW51YWxcXFwiLCBSRUFEX1NaLFxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL21vZHVsZV9hdHRhY2guYzoxNzU6XFx0XFx0XFx0XFx0XFx0XFxcImJwZl90ZXN0bW9kX3Rlc3RfcmVhZFxcXCIsIDApO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL21vZHVsZV9hdHRhY2guYy0xNzYtXFx0fVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvbW9kdWxlX2F0dGFjaC5jLTE3OS1cXHRcXHRcXHRcXHRcXHRSRUFEX1NaLFxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL21vZHVsZV9hdHRhY2guYzoxODA6XFx0XFx0XFx0XFx0XFx0XFxcImJwZl90ZXN0bW9kOmJwZl90ZXN0bW9kX3Rlc3RfcmVhZFxcXCIsIDApO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL21vZHVsZV9hdHRhY2guYy0xODEtXFx0fVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvbW9kdWxlX2ZlbnRyeV9zaGFkb3cuYy04LVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL21vZHVsZV9mZW50cnlfc2hhZG93LmM6OTpzdGF0aWMgY29uc3QgY2hhciAqbW9kdWxlX25hbWUgPSBcXFwiYnBmX3Rlc3Rtb2RcXFwiO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL21vZHVsZV9mZW50cnlfc2hhZG93LmMtMTAtc3RhdGljIGNvbnN0IGNoYXIgKnN5bWJvbF9uYW1lID0gXFxcImJwZl9mZW50cnlfc2hhZG93X3Rlc3RcXFwiO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL21vZHVsZV9mZW50cnlfc2hhZG93LmMtMTEtXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvbW9kdWxlX2ZlbnRyeV9zaGFkb3cuYzoxMjpzdGF0aWMgaW50IGdldF9icGZfdGVzdG1vZF9idGZfZmQodm9pZClcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9tb2R1bGVfZmVudHJ5X3NoYWRvdy5jLTEzLXtcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL21vZHVsZV9mZW50cnlfc2hhZG93LmM9NTY9dm9pZCB0ZXN0X21vZHVsZV9mZW50cnlfc2hhZG93KHZvaWQpXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9tb2R1bGVfZmVudHJ5X3NoYWRvdy5jLTgyLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL21vZHVsZV9mZW50cnlfc2hhZG93LmM6ODM6XFx0YnRmX2ZkWzFdID0gZ2V0X2JwZl90ZXN0bW9kX2J0Zl9mZCgpO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL21vZHVsZV9mZW50cnlfc2hhZG93LmM6ODQ6XFx0aWYgKCFBU1NFUlRfR0UoYnRmX2ZkWzFdLCAwLCBcXFwiZ2V0X2JwZl90ZXN0bW9kX2J0Zl9mZFxcXCIpKVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL21vZHVsZV9mZW50cnlfc2hhZG93LmMtODUtXFx0XFx0Z290byBvdXQ7XFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9tb2R1bGVfZmVudHJ5X3NoYWRvdy5jLTExMC1cXHRcXHQgKiBzaGFkb3dlZCBmdW5jdGlvbnMgYW5kIHVzZXMgdGhlIHNhbWUgYWRkcmVzcyBmb3IgYm90aCB0aGVcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9tb2R1bGVfZmVudHJ5X3NoYWRvdy5jOjExMTpcXHRcXHQgKiB2bWxpbnV4IGFuZCB0aGUgYnBmX3Rlc3Rtb2QgZnVuY3Rpb25zLCB0aGlzIHdpbGwgZmFpbCBvblxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL21vZHVsZV9mZW50cnlfc2hhZG93LmMtMTEyLVxcdFxcdCAqIGF0dGVtcHRpbmcgdG8gY3JlYXRlIHR3byB0cmFtcG9saW5lcyBmb3IgdGhlIHNhbWUgYWRkcmVzcyxcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3Jhd190cF93cml0YWJsZV9yZWplY3RfYmFkX2FjY2Vzcy5jLTMtI2luY2x1ZGUgXFx1MDAzY3Rlc3RfcHJvZ3MuaFxcdTAwM2VcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9yYXdfdHBfd3JpdGFibGVfcmVqZWN0X2JhZF9hY2Nlc3MuYzo0OiNpbmNsdWRlIFxcXCJ0ZXN0X2ttb2RzL2JwZl90ZXN0bW9kLmhcXFwiXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvcmF3X3RwX3dyaXRhYmxlX3JlamVjdF9iYWRfYWNjZXNzLmMtNS0jaW5jbHVkZSBcXFwiYnBmX3V0aWwuaFxcXCJcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3Jhd190cF93cml0YWJsZV9yZWplY3RfYmFkX2FjY2Vzcy5jPTc9c3RhdGljIHZvaWQgY2hlY2tfYXR0YWNoX3JlamVjdChjb25zdCBzdHJ1Y3QgYnBmX2luc24gKnByb2dyYW0sIHNpemVfdCBwcm9nX2xlbilcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3Jhd190cF93cml0YWJsZV9yZWplY3RfYmFkX2FjY2Vzcy5jLTIxLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3Jhd190cF93cml0YWJsZV9yZWplY3RfYmFkX2FjY2Vzcy5jOjIyOlxcdHRwX2ZkID0gYnBmX3Jhd190cmFjZXBvaW50X29wZW4oXFxcImJwZl90ZXN0bW9kX3Rlc3Rfd3JpdGFibGVfYmFyZV90cFxcXCIsIGJwZl9mZCk7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvcmF3X3RwX3dyaXRhYmxlX3JlamVjdF9iYWRfYWNjZXNzLmMtMjMtXFx0QVNTRVJUX0VRKHRwX2ZkLCAtRUlOVkFMLCBcXFwiYnBmX3Jhd190cmFjZXBvaW50X29wZW5cXFwiKTtcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3Jhd190cF93cml0YWJsZV9yZWplY3RfYmFkX2FjY2Vzcy5jPTMwPXZvaWQgdGVzdF9yYXdfdHBfd3JpdGFibGVfcmVqZWN0X2JhZF9hY2Nlc3Modm9pZClcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3Jhd190cF93cml0YWJsZV9yZWplY3RfYmFkX2FjY2Vzcy5jLTM2LVxcdFxcdEJQRl9MRFhfTUVNKEJQRl9CLCBCUEZfUkVHXzAsIEJQRl9SRUdfNixcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9yYXdfdHBfd3JpdGFibGVfcmVqZWN0X2JhZF9hY2Nlc3MuYzozNzpcXHRcXHRcXHQgICAgc2l6ZW9mKHN0cnVjdCBicGZfdGVzdG1vZF90ZXN0X3dyaXRhYmxlX2N0eCkpLFxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3Jhd190cF93cml0YWJsZV9yZWplY3RfYmFkX2FjY2Vzcy5jLTM4LVxcdFxcdEJQRl9FWElUX0lOU04oKSxcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3Jhd190cF93cml0YWJsZV9yZWplY3RfYmFkX2FjY2Vzcy5jLTQ2LVxcdFxcdEJQRl9MRFhfTUVNKEJQRl9CLCBCUEZfUkVHXzAsIEJQRl9SRUdfNixcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9yYXdfdHBfd3JpdGFibGVfcmVqZWN0X2JhZF9hY2Nlc3MuYzo0NzpcXHRcXHRcXHQgICAgc2l6ZW9mKHN0cnVjdCBicGZfdGVzdG1vZF90ZXN0X3dyaXRhYmxlX2N0eCkgKyA4KSxcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9yYXdfdHBfd3JpdGFibGVfcmVqZWN0X2JhZF9hY2Nlc3MuYy00OC1cXHRcXHRCUEZfRVhJVF9JTlNOKCksXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zdGFja3RyYWNlX2lwcy5jPTUwPXN0YXRpYyB2b2lkIHRlc3Rfc3RhY2t0cmFjZV9pcHNfa3Byb2JlX211bHRpKGJvb2wgcmV0cHJvYmUpXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zdGFja3RyYWNlX2lwcy5jLTY4LVxcdFxcdFxcdFxcdFxcdFxcdFxcdHNrZWwtXFx1MDAzZXByb2dzLmtwcm9iZV9tdWx0aV90ZXN0LFxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3N0YWNrdHJhY2VfaXBzLmM6Njk6XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcImJwZl90ZXN0bW9kX3N0YWNrdHJhY2VfdGVzdFxcXCIsIFxcdTAwMjZvcHRzKTtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zdGFja3RyYWNlX2lwcy5jLTcwLVxcdGlmICghQVNTRVJUX09LX1BUUihza2VsLVxcdTAwM2VsaW5rcy5rcHJvYmVfbXVsdGlfdGVzdCwgXFxcImJwZl9wcm9ncmFtX19hdHRhY2hfa3Byb2JlX211bHRpX29wdHNcXFwiKSlcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3N0YWNrdHJhY2VfaXBzLmMtNzgtXFx0XFx0Y2hlY2tfc3RhY2t0cmFjZV9pcHMoYnBmX21hcF9fZmQoc2tlbC1cXHUwMDNlbWFwcy5zdGFja21hcCksIHNrZWwtXFx1MDAzZWJzcy1cXHUwMDNlc3RhY2tfa2V5LCA0LFxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3N0YWNrdHJhY2VfaXBzLmM6Nzk6XFx0XFx0XFx0XFx0ICAgICBrc3ltX2dldF9hZGRyKFxcXCJicGZfdGVzdG1vZF9zdGFja3RyYWNlX3Rlc3RfM1xcXCIpLFxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3N0YWNrdHJhY2VfaXBzLmM6ODA6XFx0XFx0XFx0XFx0ICAgICBrc3ltX2dldF9hZGRyKFxcXCJicGZfdGVzdG1vZF9zdGFja3RyYWNlX3Rlc3RfMlxcXCIpLFxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3N0YWNrdHJhY2VfaXBzLmM6ODE6XFx0XFx0XFx0XFx0ICAgICBrc3ltX2dldF9hZGRyKFxcXCJicGZfdGVzdG1vZF9zdGFja3RyYWNlX3Rlc3RfMVxcXCIpLFxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3N0YWNrdHJhY2VfaXBzLmM6ODI6XFx0XFx0XFx0XFx0ICAgICBrc3ltX2dldF9hZGRyKFxcXCJicGZfdGVzdG1vZF90ZXN0X3JlYWRcXFwiKSk7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc3RhY2t0cmFjZV9pcHMuYy04My1cXHR9IGVsc2Uge1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3N0YWNrdHJhY2VfaXBzLmMtODQtXFx0XFx0Y2hlY2tfc3RhY2t0cmFjZV9pcHMoYnBmX21hcF9fZmQoc2tlbC1cXHUwMDNlbWFwcy5zdGFja21hcCksIHNrZWwtXFx1MDAzZWJzcy1cXHUwMDNlc3RhY2tfa2V5LCA1LFxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3N0YWNrdHJhY2VfaXBzLmM6ODU6XFx0XFx0XFx0XFx0ICAgICBrc3ltX2dldF9hZGRyKFxcXCJicGZfdGVzdG1vZF9zdGFja3RyYWNlX3Rlc3RcXFwiKSxcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zdGFja3RyYWNlX2lwcy5jOjg2OlxcdFxcdFxcdFxcdCAgICAga3N5bV9nZXRfYWRkcihcXFwiYnBmX3Rlc3Rtb2Rfc3RhY2t0cmFjZV90ZXN0XzNcXFwiKSxcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zdGFja3RyYWNlX2lwcy5jOjg3OlxcdFxcdFxcdFxcdCAgICAga3N5bV9nZXRfYWRkcihcXFwiYnBmX3Rlc3Rtb2Rfc3RhY2t0cmFjZV90ZXN0XzJcXFwiKSxcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zdGFja3RyYWNlX2lwcy5jOjg4OlxcdFxcdFxcdFxcdCAgICAga3N5bV9nZXRfYWRkcihcXFwiYnBmX3Rlc3Rtb2Rfc3RhY2t0cmFjZV90ZXN0XzFcXFwiKSxcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zdGFja3RyYWNlX2lwcy5jOjg5OlxcdFxcdFxcdFxcdCAgICAga3N5bV9nZXRfYWRkcihcXFwiYnBmX3Rlc3Rtb2RfdGVzdF9yZWFkXFxcIikpO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3N0YWNrdHJhY2VfaXBzLmMtOTAtXFx0fVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc3RhY2t0cmFjZV9pcHMuYz05Nj1zdGF0aWMgdm9pZCB0ZXN0X3N0YWNrdHJhY2VfaXBzX3Jhd190cCh2b2lkKVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc3RhY2t0cmFjZV9pcHMuYy0xMTUtXFx0XFx0XFx0XFx0XFx0XFx0XFx0c2tlbC1cXHUwMDNlcHJvZ3MucmF3dHBfdGVzdCxcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zdGFja3RyYWNlX2lwcy5jOjExNjpcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFwiYnBmX3Rlc3Rtb2RfdGVzdF9yZWFkXFxcIik7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc3RhY2t0cmFjZV9pcHMuYy0xMTctXFx0aWYgKCFBU1NFUlRfT0tfUFRSKHNrZWwtXFx1MDAzZWxpbmtzLnJhd3RwX3Rlc3QsIFxcXCJicGZfcHJvZ3JhbV9fYXR0YWNoX3Jhd190cmFjZXBvaW50XFxcIikpXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zdGFja3RyYWNlX2lwcy5jPTE0MD1zdGF0aWMgdm9pZCB0ZXN0X3N0YWNrdHJhY2VfaXBzX2twcm9iZShib29sIHJldHByb2JlKVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc3RhY2t0cmFjZV9pcHMuYy0xNTgtXFx0XFx0XFx0XFx0XFx0XFx0c2tlbC1cXHUwMDNlcHJvZ3Mua3Byb2JlX3Rlc3QsXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc3RhY2t0cmFjZV9pcHMuYzoxNTk6XFx0XFx0XFx0XFx0XFx0XFx0XFxcImJwZl90ZXN0bW9kX3N0YWNrdHJhY2VfdGVzdFxcXCIsIFxcdTAwMjZvcHRzKTtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zdGFja3RyYWNlX2lwcy5jLTE2MC1cXHRpZiAoIUFTU0VSVF9PS19QVFIoc2tlbC1cXHUwMDNlbGlua3Mua3Byb2JlX3Rlc3QsIFxcXCJicGZfcHJvZ3JhbV9fYXR0YWNoX2twcm9iZV9vcHRzXFxcIikpXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zdGFja3RyYWNlX2lwcy5jLTE2OC1cXHRcXHRjaGVja19zdGFja3RyYWNlX2lwcyhicGZfbWFwX19mZChza2VsLVxcdTAwM2VtYXBzLnN0YWNrbWFwKSwgc2tlbC1cXHUwMDNlYnNzLVxcdTAwM2VzdGFja19rZXksIDQsXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc3RhY2t0cmFjZV9pcHMuYzoxNjk6XFx0XFx0XFx0XFx0ICAgICBrc3ltX2dldF9hZGRyKFxcXCJicGZfdGVzdG1vZF9zdGFja3RyYWNlX3Rlc3RfM1xcXCIpLFxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3N0YWNrdHJhY2VfaXBzLmM6MTcwOlxcdFxcdFxcdFxcdCAgICAga3N5bV9nZXRfYWRkcihcXFwiYnBmX3Rlc3Rtb2Rfc3RhY2t0cmFjZV90ZXN0XzJcXFwiKSxcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zdGFja3RyYWNlX2lwcy5jOjE3MTpcXHRcXHRcXHRcXHQgICAgIGtzeW1fZ2V0X2FkZHIoXFxcImJwZl90ZXN0bW9kX3N0YWNrdHJhY2VfdGVzdF8xXFxcIiksXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc3RhY2t0cmFjZV9pcHMuYzoxNzI6XFx0XFx0XFx0XFx0ICAgICBrc3ltX2dldF9hZGRyKFxcXCJicGZfdGVzdG1vZF90ZXN0X3JlYWRcXFwiKSk7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc3RhY2t0cmFjZV9pcHMuYy0xNzMtXFx0fSBlbHNlIHtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zdGFja3RyYWNlX2lwcy5jLTE3NC1cXHRcXHRjaGVja19zdGFja3RyYWNlX2lwcyhicGZfbWFwX19mZChza2VsLVxcdTAwM2VtYXBzLnN0YWNrbWFwKSwgc2tlbC1cXHUwMDNlYnNzLVxcdTAwM2VzdGFja19rZXksIDUsXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc3RhY2t0cmFjZV9pcHMuYzoxNzU6XFx0XFx0XFx0XFx0ICAgICBrc3ltX2dldF9hZGRyKFxcXCJicGZfdGVzdG1vZF9zdGFja3RyYWNlX3Rlc3RcXFwiKSxcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zdGFja3RyYWNlX2lwcy5jOjE3NjpcXHRcXHRcXHRcXHQgICAgIGtzeW1fZ2V0X2FkZHIoXFxcImJwZl90ZXN0bW9kX3N0YWNrdHJhY2VfdGVzdF8zXFxcIiksXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc3RhY2t0cmFjZV9pcHMuYzoxNzc6XFx0XFx0XFx0XFx0ICAgICBrc3ltX2dldF9hZGRyKFxcXCJicGZfdGVzdG1vZF9zdGFja3RyYWNlX3Rlc3RfMlxcXCIpLFxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3N0YWNrdHJhY2VfaXBzLmM6MTc4OlxcdFxcdFxcdFxcdCAgICAga3N5bV9nZXRfYWRkcihcXFwiYnBmX3Rlc3Rtb2Rfc3RhY2t0cmFjZV90ZXN0XzFcXFwiKSxcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zdGFja3RyYWNlX2lwcy5jOjE3OTpcXHRcXHRcXHRcXHQgICAgIGtzeW1fZ2V0X2FkZHIoXFxcImJwZl90ZXN0bW9kX3Rlc3RfcmVhZFxcXCIpKTtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zdGFja3RyYWNlX2lwcy5jLTE4MC1cXHR9XFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zdGFja3RyYWNlX2lwcy5jPTE4Nj1zdGF0aWMgdm9pZCB0ZXN0X3N0YWNrdHJhY2VfaXBzX3RyYW1wb2xpbmUoYm9vbCByZXRwcm9iZSlcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3N0YWNrdHJhY2VfaXBzLmMtMjE1LVxcdFxcdGNoZWNrX3N0YWNrdHJhY2VfaXBzKGJwZl9tYXBfX2ZkKHNrZWwtXFx1MDAzZW1hcHMuc3RhY2ttYXApLCBza2VsLVxcdTAwM2Vic3MtXFx1MDAzZXN0YWNrX2tleSwgNCxcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zdGFja3RyYWNlX2lwcy5jOjIxNjpcXHRcXHRcXHRcXHQgICAgIGtzeW1fZ2V0X2FkZHIoXFxcImJwZl90ZXN0bW9kX3N0YWNrdHJhY2VfdGVzdF8zXFxcIiksXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc3RhY2t0cmFjZV9pcHMuYzoyMTc6XFx0XFx0XFx0XFx0ICAgICBrc3ltX2dldF9hZGRyKFxcXCJicGZfdGVzdG1vZF9zdGFja3RyYWNlX3Rlc3RfMlxcXCIpLFxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3N0YWNrdHJhY2VfaXBzLmM6MjE4OlxcdFxcdFxcdFxcdCAgICAga3N5bV9nZXRfYWRkcihcXFwiYnBmX3Rlc3Rtb2Rfc3RhY2t0cmFjZV90ZXN0XzFcXFwiKSxcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zdGFja3RyYWNlX2lwcy5jOjIxOTpcXHRcXHRcXHRcXHQgICAgIGtzeW1fZ2V0X2FkZHIoXFxcImJwZl90ZXN0bW9kX3Rlc3RfcmVhZFxcXCIpKTtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zdGFja3RyYWNlX2lwcy5jLTIyMC1cXHR9IGVsc2Uge1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3N0YWNrdHJhY2VfaXBzLmMtMjIxLVxcdFxcdGNoZWNrX3N0YWNrdHJhY2VfaXBzKGJwZl9tYXBfX2ZkKHNrZWwtXFx1MDAzZW1hcHMuc3RhY2ttYXApLCBza2VsLVxcdTAwM2Vic3MtXFx1MDAzZXN0YWNrX2tleSwgNSxcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zdGFja3RyYWNlX2lwcy5jOjIyMjpcXHRcXHRcXHRcXHQgICAgIGtzeW1fZ2V0X2FkZHIoXFxcImJwZl90ZXN0bW9kX3N0YWNrdHJhY2VfdGVzdFxcXCIpLFxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3N0YWNrdHJhY2VfaXBzLmM6MjIzOlxcdFxcdFxcdFxcdCAgICAga3N5bV9nZXRfYWRkcihcXFwiYnBmX3Rlc3Rtb2Rfc3RhY2t0cmFjZV90ZXN0XzNcXFwiKSxcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zdGFja3RyYWNlX2lwcy5jOjIyNDpcXHRcXHRcXHRcXHQgICAgIGtzeW1fZ2V0X2FkZHIoXFxcImJwZl90ZXN0bW9kX3N0YWNrdHJhY2VfdGVzdF8yXFxcIiksXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc3RhY2t0cmFjZV9pcHMuYzoyMjU6XFx0XFx0XFx0XFx0ICAgICBrc3ltX2dldF9hZGRyKFxcXCJicGZfdGVzdG1vZF9zdGFja3RyYWNlX3Rlc3RfMVxcXCIpLFxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3N0YWNrdHJhY2VfaXBzLmM6MjI2OlxcdFxcdFxcdFxcdCAgICAga3N5bV9nZXRfYWRkcihcXFwiYnBmX3Rlc3Rtb2RfdGVzdF9yZWFkXFxcIikpO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3N0YWNrdHJhY2VfaXBzLmMtMjI3LVxcdH1cXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3N0cnVjdF9vcHNfYXV0b2NyZWF0ZS5jPTc9c3RhdGljIHZvaWQgY2FudF9sb2FkX2Z1bGxfb2JqZWN0KHZvaWQpXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zdHJ1Y3Rfb3BzX2F1dG9jcmVhdGUuYy0xOC1cXHRcXHRnb3RvIGNsZWFudXA7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc3RydWN0X29wc19hdXRvY3JlYXRlLmM6MTk6XFx0LyogVGhlIHRlc3Rtb2RfMiBtYXAgQlRGIHR5cGUgKHN0cnVjdCBicGZfdGVzdG1vZF9vcHNfX192MikgZG9lc24ndFxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3N0cnVjdF9vcHNfYXV0b2NyZWF0ZS5jOjIwOlxcdCAqIG1hdGNoIHRoZSBCVEYgb2YgdGhlIGFjdHVhbCBzdHJ1Y3QgYnBmX3Rlc3Rtb2Rfb3BzIGRlZmluZWQgaW4gdGhlXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc3RydWN0X29wc19hdXRvY3JlYXRlLmMtMjEtXFx0ICoga2VybmVsLCBzbyB3ZSBzaG91bGQgZmFpbCB0byBsb2FkIGl0IGlmIHdlIGRvbid0IGRpc2FibGUgYXV0b2NyZWF0ZVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc3RydWN0X29wc19hdXRvY3JlYXRlLmM9Mzc9c3RhdGljIGludCBjaGVja190ZXN0XzFfbGluayhzdHJ1Y3Qgc3RydWN0X29wc19hdXRvY3JlYXRlICpza2VsLCBzdHJ1Y3QgYnBmX21hcCAqbWFwKVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc3RydWN0X29wc19hdXRvY3JlYXRlLmMtNDUtXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc3RydWN0X29wc19hdXRvY3JlYXRlLmM6NDY6XFx0LyogdGVzdF8xKCkgd291bGQgYmUgY2FsbGVkIGZyb20gYnBmX2R1bW15X3JlZzIoKSBpbiBicGZfdGVzdG1vZC5jICovXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc3RydWN0X29wc19hdXRvY3JlYXRlLmMtNDctXFx0ZXJyID0gQVNTRVJUX0VRKHNrZWwtXFx1MDAzZWJzcy1cXHUwMDNldGVzdF8xX3Jlc3VsdCwgNDIsIFxcXCJ0ZXN0XzFfcmVzdWx0XFxcIik7XFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zdHJ1Y3Rfb3BzX2F1dG9jcmVhdGUuYz0xMTQ9c3RhdGljIHZvaWQgYXV0b2xvYWRfYW5kX3NoYWRvd192YXJzKHZvaWQpXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zdHJ1Y3Rfb3BzX2F1dG9jcmVhdGUuYy0xNDAtXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc3RydWN0X29wc19hdXRvY3JlYXRlLmM6MTQxOlxcdC8qIHRlc3RfMSgpIHdvdWxkIGJlIGNhbGxlZCBmcm9tIGJwZl9kdW1teV9yZWcyKCkgaW4gYnBmX3Rlc3Rtb2QuYyAqL1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3N0cnVjdF9vcHNfYXV0b2NyZWF0ZS5jLTE0Mi1cXHRlcnIgPSBBU1NFUlRfRVEoc2tlbC1cXHUwMDNlYnNzLVxcdTAwM2V0ZXN0XzFfcmVzdWx0LCA0MiwgXFxcInRlc3RfMV9yZXN1bHRcXFwiKTtcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3Rlc3Rfc3RydWN0X29wc19hcmVuYS5jLTExLSAqIEF0dGFjaCBjYWxsYmFja3Mgd2l0aCBfX2FyZW5hIGFuZCBfX2FyZW5hX19udWxsYWJsZSBhcmd1bWVudHMgYW5kIGRyaXZlXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvdGVzdF9zdHJ1Y3Rfb3BzX2FyZW5hLmM6MTI6ICogdGhlbSB0aHJvdWdoIHRoZSBicGZfdGVzdG1vZF9vcHMzX2NhbGxfdGVzdF9hcmVuYSooKSBrZnVuY3MuXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvdGVzdF9zdHJ1Y3Rfb3BzX2FyZW5hLmMtMTMtICovXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy90ZXN0X3N0cnVjdF9vcHNfYXJlbmEuYz04OD1zdGF0aWMgdm9pZCBhcmVuYV9hcmdfYXR0YWNoKHZvaWQpXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy90ZXN0X3N0cnVjdF9vcHNfYXJlbmEuYy0xMDYtLypcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy90ZXN0X3N0cnVjdF9vcHNfYXJlbmEuYzoxMDc6ICogU2VyaWFsaXplZCBiZWNhdXNlIGl0IGF0dGFjaGVzIHRoZSBzaW5nbGV0b24gYnBmX3Rlc3Rtb2Rfb3BzMywgd2hpY2hcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy90ZXN0X3N0cnVjdF9vcHNfYXJlbmEuYy0xMDgtICogdGVzdF9zdHJ1Y3Rfb3BzX3ByaXZhdGVfc3RhY2sgYWxzbyBhdHRhY2hlczsgcmVnaXN0ZXJpbmcgaXQgdHdpY2UgZmFpbHNcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3Rlc3Rfc3RydWN0X29wc19tb2R1bGUuYz0xND1zdGF0aWMgdm9pZCBjaGVja19tYXBfaW5mbyhzdHJ1Y3QgYnBmX21hcF9pbmZvICppbmZvKVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvdGVzdF9zdHJ1Y3Rfb3BzX21vZHVsZS5jLTMxLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3Rlc3Rfc3RydWN0X29wc19tb2R1bGUuYzozMjpcXHRpZiAoIUFTU0VSVF9FUShzdHJjbXAoYnRmX25hbWUsIFxcXCJicGZfdGVzdG1vZFxcXCIpLCAwLCBcXFwiZ2V0X3ZhbHVlX3R5cGVfYnRmX29ial9uYW1lXFxcIikpXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvdGVzdF9zdHJ1Y3Rfb3BzX21vZHVsZS5jLTMzLVxcdFxcdGdvdG8gY2xlYW51cDtcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3Rlc3Rfc3RydWN0X29wc19tb2R1bGUuYz0zOT1zdGF0aWMgaW50IGF0dGFjaF9vcHNfYW5kX2NoZWNrKHN0cnVjdCBzdHJ1Y3Rfb3BzX21vZHVsZSAqc2tlbCxcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3Rlc3Rfc3RydWN0X29wc19tb2R1bGUuYy00OS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy90ZXN0X3N0cnVjdF9vcHNfbW9kdWxlLmM6NTA6XFx0LyogdGVzdF97MSwyfSgpIHdvdWxkIGJlIGNhbGxlZCBmcm9tIGJwZl9kdW1teV9yZWcoKSBpbiBicGZfdGVzdG1vZC5jICovXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvdGVzdF9zdHJ1Y3Rfb3BzX21vZHVsZS5jLTUxLVxcdEFTU0VSVF9FUShza2VsLVxcdTAwM2Vic3MtXFx1MDAzZXRlc3RfMV9yZXN1bHQsIDB4ZGVhZGJlZWYsIFxcXCJ0ZXN0XzFfcmVzdWx0XFxcIik7XFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy90ZXN0X3N0cnVjdF9vcHNfbW9kdWxlLmM9NTg9c3RhdGljIHZvaWQgdGVzdF9zdHJ1Y3Rfb3BzX2xvYWQodm9pZClcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3Rlc3Rfc3RydWN0X29wc19tb2R1bGUuYy04Ny1cXHRjaGVja19tYXBfaW5mbyhcXHUwMDI2aW5mbyk7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvdGVzdF9zdHJ1Y3Rfb3BzX21vZHVsZS5jOjg4OlxcdC8qIHRlc3RfMygpIHdpbGwgYmUgY2FsbGVkIGZyb20gYnBmX2R1bW15X3JlZygpIGluIGJwZl90ZXN0bW9kLmNcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy90ZXN0X3N0cnVjdF9vcHNfbW9kdWxlLmMtODktXFx0ICpcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy90ZXN0X3N0cnVjdF9vcHNfbW9kdWxlLmM6OTA6XFx0ICogSW4gYnBmX3Rlc3Rtb2QuYyBpdCB3aWxsIHBhc3MgNCBhbmQgMTMgKHRoZSB2YWx1ZSBvZiBkYXRhKSB0b1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3Rlc3Rfc3RydWN0X29wc19tb2R1bGUuYy05MS1cXHQgKiAudGVzdF8yLiAgU28sIHRoZSB2YWx1ZSBvZiB0ZXN0XzJfcmVzdWx0IHNob3VsZCBiZSAyMCAoNCArIDEzICtcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3Rlc3Rfc3RydWN0X29wc19tb2R1bGUuYz0xMDM9c3RhdGljIHZvaWQgdGVzdF9zdHJ1Y3Rfb3BzX25vdF96ZXJvZWQodm9pZClcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3Rlc3Rfc3RydWN0X29wc19tb2R1bGUuYy0xMjctXFx0LyogbGliYnBmIHNob3VsZCByZWplY3QgdGhlIHRlc3Rtb2RfemVyb2VkIHNpbmNlIHN0cnVjdFxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3Rlc3Rfc3RydWN0X29wc19tb2R1bGUuYzoxMjg6XFx0ICogYnBmX3Rlc3Rtb2Rfb3BzIGluIHRoZSBrZXJuZWwgaGFzIG5vIFxcXCJ6ZXJvZWRcXFwiIGZpZWxkIGFuZCB0aGVcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy90ZXN0X3N0cnVjdF9vcHNfbW9kdWxlLmMtMTI5LVxcdCAqIHZhbHVlIG9mIFxcXCJ6ZXJvZWRcXFwiIGlzIG5vbi16ZXJvLlxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvdHBfYnRmX2lkcy5jLTYtI2RlZmluZSBERUJVR0ZTX1RSQUNJTkdcXHRcXFwiL3N5cy9rZXJuZWwvZGVidWcvdHJhY2luZ1xcXCJcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy90cF9idGZfaWRzLmM6NzojZGVmaW5lIEVWRU5UX1NVQlBBVEhcXHRcXFwiZXZlbnRzL2JwZl90ZXN0bW9kL2JwZl90ZXN0bW9kX3Rlc3RfcmVhZC9idGZfaWRzXFxcIlxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3RwX2J0Zl9pZHMuYy04LVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvdHBfYnRmX2lkcy5jPTU2PXZvaWQgdGVzdF90cF9idGZfaWRzKHZvaWQpXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy90cF9idGZfaWRzLmMtOTItXFx0ICogICB2b2lkICpfX2RhdGEsIHN0cnVjdCB0YXNrX3N0cnVjdCAqdGFzayxcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy90cF9idGZfaWRzLmM6OTM6XFx0ICogICBzdHJ1Y3QgYnBmX3Rlc3Rtb2RfdGVzdF9yZWFkX2N0eCAqY3R4XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvdHBfYnRmX2lkcy5jLTk0LVxcdCAqL1xcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvdHBfYnRmX2lkcy5jLTExNy1cXHRuYW1lID0gYnRmX19uYW1lX2J5X29mZnNldChidGYsIHJlY190LVxcdTAwM2VuYW1lX29mZik7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvdHBfYnRmX2lkcy5jOjExODpcXHRBU1NFUlRfU1RSRVEobmFtZSwgXFxcInRyYWNlX2V2ZW50X3Jhd19icGZfdGVzdG1vZF90ZXN0X3JlYWRcXFwiLFxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3RwX2J0Zl9pZHMuYy0xMTktXFx0XFx0ICAgICBcXFwidHAgc3RydWN0IG5hbWVcXFwiKTtcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3RyYWNpbmdfZmFpbHVyZS5jPTc5PXN0YXRpYyB2b2lkIHRlc3RfZmV4aXRfaW50MTI4X3JldCh2b2lkKVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvdHJhY2luZ19mYWlsdXJlLmMtODItXFx0ICogX19pbnQxMjggaXMgcmV0dXJuZWQgaW4gYSByZWdpc3RlciBwYWlyIG9uIHg4Nl82NCBhbmQgYXJtNjQsIHNvXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvdHJhY2luZ19mYWlsdXJlLmM6ODM6XFx0ICogYnBmX3Rlc3Rtb2RfdGVzdF9pbnQxMjhfcmV0KCkgaXMgQlRGLWVuY29kZWQgYW5kIGF0dGFjaGFibGUgYW5kIHRoZVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3RyYWNpbmdfZmFpbHVyZS5jLTg0LVxcdCAqIHZlcmlmaWVyIGNhbiByZWplY3QgaXRzIFxcdTAwM2U4IGJ5dGUgcmV0dXJuIHZhbHVlLiBPdGhlciBhcmNoaXRlY3R1cmVzXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy90cmFjaW5nX211bHRpLmM9MzA9c3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBicGZfZmVudHJ5X3Rlc3RbXSA9IHtcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3RyYWNpbmdfbXVsdGkuYy00Mi1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy90cmFjaW5nX211bHRpLmM6NDM6c3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBicGZfdGVzdG1vZF9mZW50cnlfdGVzdFtdID0ge1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3RyYWNpbmdfbXVsdGkuYzo0NDpcXHRcXFwiYnBmX3Rlc3Rtb2RfZmVudHJ5X3Rlc3QxXFxcIixcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy90cmFjaW5nX211bHRpLmM6NDU6XFx0XFxcImJwZl90ZXN0bW9kX2ZlbnRyeV90ZXN0MlxcXCIsXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvdHJhY2luZ19tdWx0aS5jOjQ2OlxcdFxcXCJicGZfdGVzdG1vZF9mZW50cnlfdGVzdDNcXFwiLFxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3RyYWNpbmdfbXVsdGkuYzo0NzpcXHRcXFwiYnBmX3Rlc3Rtb2RfZmVudHJ5X3Rlc3Q3XFxcIixcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy90cmFjaW5nX211bHRpLmM6NDg6XFx0XFxcImJwZl90ZXN0bW9kX2ZlbnRyeV90ZXN0MTFcXFwiLFxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3RyYWNpbmdfbXVsdGkuYy00OS19O1xcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvdHJhY2luZ19tdWx0aS5jPTMxND1zdGF0aWMgdm9pZCB0ZXN0X21vZHVsZV9saW5rX2FwaV9wYXR0ZXJuKHZvaWQpXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy90cmFjaW5nX211bHRpLmMtMzI0LVxcdHNrZWwtXFx1MDAzZWxpbmtzLnRlc3RfZmVudHJ5ID0gYnBmX3Byb2dyYW1fX2F0dGFjaF90cmFjaW5nX211bHRpKHNrZWwtXFx1MDAzZXByb2dzLnRlc3RfZmVudHJ5LFxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3RyYWNpbmdfbXVsdGkuYzozMjU6XFx0XFx0XFx0XFx0XFx0XFxcImJwZl90ZXN0bW9kOmJwZl90ZXN0bW9kX2ZlbnRyeV90ZXN0KlxcXCIsIE5VTEwpO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3RyYWNpbmdfbXVsdGkuYy0zMjYtXFx0aWYgKCFBU1NFUlRfT0tfUFRSKHNrZWwtXFx1MDAzZWxpbmtzLnRlc3RfZmVudHJ5LCBcXFwiYnBmX3Byb2dyYW1fX2F0dGFjaF90cmFjaW5nX211bHRpXFxcIikpXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy90cmFjaW5nX211bHRpLmMtMzI5LVxcdHNrZWwtXFx1MDAzZWxpbmtzLnRlc3RfZmV4aXQgPSBicGZfcHJvZ3JhbV9fYXR0YWNoX3RyYWNpbmdfbXVsdGkoc2tlbC1cXHUwMDNlcHJvZ3MudGVzdF9mZXhpdCxcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy90cmFjaW5nX211bHRpLmM6MzMwOlxcdFxcdFxcdFxcdFxcdFxcXCJicGZfdGVzdG1vZDpicGZfdGVzdG1vZF9mZW50cnlfdGVzdCpcXFwiLCBOVUxMKTtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy90cmFjaW5nX211bHRpLmMtMzMxLVxcdGlmICghQVNTRVJUX09LX1BUUihza2VsLVxcdTAwM2VsaW5rcy50ZXN0X2ZleGl0LCBcXFwiYnBmX3Byb2dyYW1fX2F0dGFjaF90cmFjaW5nX211bHRpXFxcIikpXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy90cmFjaW5nX211bHRpLmM9MzQyPXN0YXRpYyB2b2lkIHRlc3RfbW9kdWxlX2xpbmtfYXBpX2lkcyh2b2lkKVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3RyYWNpbmdfbXVsdGkuYy0zNDMte1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3RyYWNpbmdfbXVsdGkuYzozNDQ6XFx0c2l6ZV90IGNudCA9IEFSUkFZX1NJWkUoYnBmX3Rlc3Rtb2RfZmVudHJ5X3Rlc3QpO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3RyYWNpbmdfbXVsdGkuYy0zNDUtXFx0TElCQlBGX09QVFMoYnBmX3RyYWNpbmdfbXVsdGlfb3B0cywgb3B0cyk7XFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy90cmFjaW5nX211bHRpLmMtMzU0LVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3RyYWNpbmdfbXVsdGkuYzozNTU6XFx0aWRzID0gZ2V0X2lkcyhicGZfdGVzdG1vZF9mZW50cnlfdGVzdCwgY250LCBcXFwiYnBmX3Rlc3Rtb2RcXFwiKTtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy90cmFjaW5nX211bHRpLmMtMzU2LVxcdGlmICghQVNTRVJUX09LX1BUUihpZHMsIFxcXCJnZXRfaWRzXFxcIikpXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy91cHJvYmVfc3lzY2FsbC5jPTEwOT1zdGF0aWMgdm9pZCB0ZXN0X3Vwcm9iZV9yZWdzX2VxdWFsKGJvb2wgcmV0cHJvYmUpXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy91cHJvYmVfc3lzY2FsbC5jLTE5My1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy91cHJvYmVfc3lzY2FsbC5jOjE5NDojZGVmaW5lIEJQRl9URVNUTU9EX1VQUk9CRV9URVNUX0ZJTEUgXFxcIi9zeXMva2VybmVsL2JwZl90ZXN0bW9kX3Vwcm9iZVxcXCJcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy91cHJvYmVfc3lzY2FsbC5jLTE5NS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy91cHJvYmVfc3lzY2FsbC5jOjE5NjpzdGF0aWMgaW50IHdyaXRlX2JwZl90ZXN0bW9kX3Vwcm9iZSh1bnNpZ25lZCBsb25nIG9mZnNldClcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy91cHJvYmVfc3lzY2FsbC5jLTE5Ny17XFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy91cHJvYmVfc3lzY2FsbC5jPTIxMz1zdGF0aWMgdm9pZCB0ZXN0X3JlZ3NfY2hhbmdlKHZvaWQpXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy91cHJvYmVfc3lzY2FsbC5jLTIyMi1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy91cHJvYmVfc3lzY2FsbC5jOjIyMzpcXHRlcnIgPSB3cml0ZV9icGZfdGVzdG1vZF91cHJvYmUob2Zmc2V0KTtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy91cHJvYmVfc3lzY2FsbC5jLTIyNC1cXHRpZiAoIUFTU0VSVF9PSyhlcnIsIFxcXCJyZWdpc3Rlcl91cHJvYmVcXFwiKSlcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3Vwcm9iZV9zeXNjYWxsLmMtMjMxLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3Vwcm9iZV9zeXNjYWxsLmM6MjMyOlxcdGVyciA9IHdyaXRlX2JwZl90ZXN0bW9kX3Vwcm9iZSgwKTtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy91cHJvYmVfc3lzY2FsbC5jLTIzMy1cXHRpZiAoIUFTU0VSVF9PSyhlcnIsIFxcXCJ1bnJlZ2lzdGVyX3Vwcm9iZVxcXCIpKVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2FnZ3JlZ2F0ZV9yZXRfa2Z1bmMuYy01LSNpbmNsdWRlIFxcXCJicGZfbWlzYy5oXFxcIlxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9hZ2dyZWdhdGVfcmV0X2tmdW5jLmM6NjojaW5jbHVkZSBcXFwiLi4vdGVzdF9rbW9kcy9icGZfdGVzdG1vZF9rZnVuYy5oXFxcIlxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9hZ2dyZWdhdGVfcmV0X2tmdW5jLmMtNy1cXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9hZ2dyZWdhdGVfcmV0X2tmdW5jX2FyZW5hLmMtNi0jaW5jbHVkZSBcXFwiYnBmX21pc2MuaFxcXCJcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvYWdncmVnYXRlX3JldF9rZnVuY19hcmVuYS5jOjc6I2luY2x1ZGUgXFxcIi4uL3Rlc3Rfa21vZHMvYnBmX3Rlc3Rtb2Rfa2Z1bmMuaFxcXCJcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvYWdncmVnYXRlX3JldF9rZnVuY19hcmVuYS5jLTgtXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvYXJlbmFfa2Z1bmMuYy05LSNpbmNsdWRlIFxcdTAwM2NicGZfYXJlbmFfY29tbW9uLmhcXHUwMDNlXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2FyZW5hX2tmdW5jLmM6MTA6I2luY2x1ZGUgXFxcIi4uL3Rlc3Rfa21vZHMvYnBmX3Rlc3Rtb2Rfa2Z1bmMuaFxcXCJcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvYXJlbmFfa2Z1bmMuYy0xMS1cXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9hcmVuYV9rZnVuY19qaXQuYy0xNC0jaW5jbHVkZSBcXHUwMDNjYnBmX2FyZW5hX2NvbW1vbi5oXFx1MDAzZVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9hcmVuYV9rZnVuY19qaXQuYzoxNTojaW5jbHVkZSBcXFwiLi4vdGVzdF9rbW9kcy9icGZfdGVzdG1vZF9rZnVuYy5oXFxcIlxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9hcmVuYV9rZnVuY19qaXQuYy0xNi1cXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9iYWRfc3RydWN0X29wcy5jLTUtI2luY2x1ZGUgXFx1MDAzY2JwZi9icGZfdHJhY2luZy5oXFx1MDAzZVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9iYWRfc3RydWN0X29wcy5jOjY6I2luY2x1ZGUgXFxcIi4uL3Rlc3Rfa21vZHMvYnBmX3Rlc3Rtb2QuaFxcXCJcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvYmFkX3N0cnVjdF9vcHMuYy03LVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2JhZF9zdHJ1Y3Rfb3BzLmM9MTY9U0VDKFxcXCIuc3RydWN0X29wcy5saW5rXFxcIilcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvYmFkX3N0cnVjdF9vcHMuYzoxNzpzdHJ1Y3QgYnBmX3Rlc3Rtb2Rfb3BzIHRlc3Rtb2RfMSA9IHtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvYmFkX3N0cnVjdF9vcHMuYy0xOC1cXHQudGVzdF8xID0gKHZvaWQgKil0ZXN0XzEsXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvYmFkX3N0cnVjdF9vcHMuYz0yMj1TRUMoXFxcIi5zdHJ1Y3Rfb3BzLmxpbmtcXFwiKVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9iYWRfc3RydWN0X29wcy5jOjIzOnN0cnVjdCBicGZfdGVzdG1vZF9vcHMyIHRlc3Rtb2RfMiA9IHtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvYmFkX3N0cnVjdF9vcHMuYy0yNC1cXHQudGVzdF8xID0gKHZvaWQgKil0ZXN0XzFcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9idGZfX3N0YWNrX2FyZ19wcmVjaXNpb24uYy00LSNpbmNsdWRlIFxcdTAwM2NicGYvYnBmX2hlbHBlcnMuaFxcdTAwM2VcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvYnRmX19zdGFja19hcmdfcHJlY2lzaW9uLmM6NTojaW5jbHVkZSBcXFwiLi4vdGVzdF9rbW9kcy9icGZfdGVzdG1vZF9rZnVuYy5oXFxcIlxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9idGZfX3N0YWNrX2FyZ19wcmVjaXNpb24uYy02LVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2J0Zl90eXBlX3RhZ19wZXJjcHUuYy02LVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9idGZfdHlwZV90YWdfcGVyY3B1LmM6NzpzdHJ1Y3QgYnBmX3Rlc3Rtb2RfYnRmX3R5cGVfdGFnXzEge1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9idGZfdHlwZV90YWdfcGVyY3B1LmMtOC1cXHRpbnQgYTtcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9idGZfdHlwZV90YWdfcGVyY3B1LmMtMTAtXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2J0Zl90eXBlX3RhZ19wZXJjcHUuYzoxMTpzdHJ1Y3QgYnBmX3Rlc3Rtb2RfYnRmX3R5cGVfdGFnXzIge1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9idGZfdHlwZV90YWdfcGVyY3B1LmM6MTI6XFx0c3RydWN0IGJwZl90ZXN0bW9kX2J0Zl90eXBlX3RhZ18xICpwO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9idGZfdHlwZV90YWdfcGVyY3B1LmMtMTMtfTtcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9idGZfdHlwZV90YWdfcGVyY3B1LmM9MTU9X191NjQgZztcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvYnRmX3R5cGVfdGFnX3BlcmNwdS5jLTE2LVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9idGZfdHlwZV90YWdfcGVyY3B1LmM6MTc6U0VDKFxcXCJmZW50cnkvYnBmX3Rlc3Rtb2RfdGVzdF9idGZfdHlwZV90YWdfcGVyY3B1XzFcXFwiKVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9idGZfdHlwZV90YWdfcGVyY3B1LmM6MTg6aW50IEJQRl9QUk9HKHRlc3RfcGVyY3B1MSwgc3RydWN0IGJwZl90ZXN0bW9kX2J0Zl90eXBlX3RhZ18xICphcmcpXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2J0Zl90eXBlX3RhZ19wZXJjcHUuYy0xOS17XFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvYnRmX3R5cGVfdGFnX3BlcmNwdS5jLTIzLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9idGZfdHlwZV90YWdfcGVyY3B1LmM6MjQ6U0VDKFxcXCJmZW50cnkvYnBmX3Rlc3Rtb2RfdGVzdF9idGZfdHlwZV90YWdfcGVyY3B1XzJcXFwiKVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9idGZfdHlwZV90YWdfcGVyY3B1LmM6MjU6aW50IEJQRl9QUk9HKHRlc3RfcGVyY3B1Miwgc3RydWN0IGJwZl90ZXN0bW9kX2J0Zl90eXBlX3RhZ18yICphcmcpXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2J0Zl90eXBlX3RhZ19wZXJjcHUuYy0yNi17XFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvYnRmX3R5cGVfdGFnX3VzZXIuYy02LVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9idGZfdHlwZV90YWdfdXNlci5jOjc6c3RydWN0IGJwZl90ZXN0bW9kX2J0Zl90eXBlX3RhZ18xIHtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvYnRmX3R5cGVfdGFnX3VzZXIuYy04LVxcdGludCBhO1xcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2J0Zl90eXBlX3RhZ191c2VyLmMtMTAtXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2J0Zl90eXBlX3RhZ191c2VyLmM6MTE6c3RydWN0IGJwZl90ZXN0bW9kX2J0Zl90eXBlX3RhZ18yIHtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvYnRmX3R5cGVfdGFnX3VzZXIuYzoxMjpcXHRzdHJ1Y3QgYnBmX3Rlc3Rtb2RfYnRmX3R5cGVfdGFnXzEgKnA7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2J0Zl90eXBlX3RhZ191c2VyLmMtMTMtfTtcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9idGZfdHlwZV90YWdfdXNlci5jPTE1PWludCBnO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9idGZfdHlwZV90YWdfdXNlci5jLTE2LVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9idGZfdHlwZV90YWdfdXNlci5jOjE3OlNFQyhcXFwiZmVudHJ5L2JwZl90ZXN0bW9kX3Rlc3RfYnRmX3R5cGVfdGFnX3VzZXJfMVxcXCIpXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2J0Zl90eXBlX3RhZ191c2VyLmM6MTg6aW50IEJQRl9QUk9HKHRlc3RfdXNlcjEsIHN0cnVjdCBicGZfdGVzdG1vZF9idGZfdHlwZV90YWdfMSAqYXJnKVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9idGZfdHlwZV90YWdfdXNlci5jLTE5LXtcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9idGZfdHlwZV90YWdfdXNlci5jLTIzLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9idGZfdHlwZV90YWdfdXNlci5jOjI0OlNFQyhcXFwiZmVudHJ5L2JwZl90ZXN0bW9kX3Rlc3RfYnRmX3R5cGVfdGFnX3VzZXJfMlxcXCIpXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2J0Zl90eXBlX3RhZ191c2VyLmM6MjU6aW50IEJQRl9QUk9HKHRlc3RfdXNlcjIsIHN0cnVjdCBicGZfdGVzdG1vZF9idGZfdHlwZV90YWdfMiAqYXJnKVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9idGZfdHlwZV90YWdfdXNlci5jLTI2LXtcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9jYl9yZWZzLmMtNC0jaW5jbHVkZSBcXHUwMDNjYnBmL2JwZl9oZWxwZXJzLmhcXHUwMDNlXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2NiX3JlZnMuYzo1OiNpbmNsdWRlIFxcXCIuLi90ZXN0X2ttb2RzL2JwZl90ZXN0bW9kX2tmdW5jLmhcXFwiXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2NiX3JlZnMuYy02LVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2NvcmVfa2Vybi5jPTY2PXN0cnVjdCBfX3NrX2JVZkYgLyogaXQgd2lsbCBub3QgZXhpc3QgaW4gdm1saW51eCAqLyB7XFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvY29yZV9rZXJuLmMtNjktXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2NvcmVfa2Vybi5jOjcwOnN0cnVjdCBicGZfdGVzdG1vZF90ZXN0X3JlYWRfY3R4IC8qIGl0IGV4aXN0cyBpbiBicGZfdGVzdG1vZCAqLyB7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2NvcmVfa2Vybi5jLTcxLVxcdHNpemVfdCBsZW47XFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvY29yZV9rZXJuLmM9NzU9aW50IGJhbGFuY2VyX2luZ3Jlc3Moc3RydWN0IF9fc2tfYnVmZiAqY3R4KVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2NvcmVfa2Vybi5jLTkzLVxcdFxcdC8qIHRoaXMgQ08tUkUgcmVsbyBtYXkgb3IgbWF5IG5vdCByZXNvbHZlXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2NvcmVfa2Vybi5jOjk0OlxcdFxcdCAqIGRlcGVuZGluZyBvbiB3aGV0aGVyIGJwZl90ZXN0bW9kIGlzIGxvYWRlZC5cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvY29yZV9rZXJuLmMtOTUtXFx0XFx0ICovIFxcXFxcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvY29yZV9rZXJuLmM6OTY6XFx0XFx0aSArPSAoKHN0cnVjdCBicGZfdGVzdG1vZF90ZXN0X3JlYWRfY3R4ICopY3R4KS1cXHUwMDNlbGVuOyBcXFxcXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2NvcmVfa2Vybi5jLTk3LVxcdH0gXFxcXFxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2VwaWxvZ3VlX2V4aXQuYy02LSNpbmNsdWRlIFxcXCJicGZfbWlzYy5oXFxcIlxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9lcGlsb2d1ZV9leGl0LmM6NzojaW5jbHVkZSBcXFwiLi4vdGVzdF9rbW9kcy9icGZfdGVzdG1vZC5oXFxcIlxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9lcGlsb2d1ZV9leGl0LmM6ODojaW5jbHVkZSBcXFwiLi4vdGVzdF9rbW9kcy9icGZfdGVzdG1vZF9rZnVuYy5oXFxcIlxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9lcGlsb2d1ZV9leGl0LmMtOS1cXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9lcGlsb2d1ZV9leGl0LmM9NjE9U0VDKFxcXCIuc3RydWN0X29wcy5saW5rXFxcIilcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvZXBpbG9ndWVfZXhpdC5jOjYyOnN0cnVjdCBicGZfdGVzdG1vZF9zdF9vcHMgZXBpbG9ndWVfZXhpdCA9IHtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvZXBpbG9ndWVfZXhpdC5jLTYzLVxcdC50ZXN0X2VwaWxvZ3VlID0gKHZvaWQgKil0ZXN0X2VwaWxvZ3VlX2V4aXQsXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvZXBpbG9ndWVfdGFpbGNhbGwuYy02LSNpbmNsdWRlIFxcXCJicGZfbWlzYy5oXFxcIlxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9lcGlsb2d1ZV90YWlsY2FsbC5jOjc6I2luY2x1ZGUgXFxcIi4uL3Rlc3Rfa21vZHMvYnBmX3Rlc3Rtb2QuaFxcXCJcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvZXBpbG9ndWVfdGFpbGNhbGwuYzo4OiNpbmNsdWRlIFxcXCIuLi90ZXN0X2ttb2RzL2JwZl90ZXN0bW9kX2tmdW5jLmhcXFwiXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2VwaWxvZ3VlX3RhaWxjYWxsLmMtOS1cXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9lcGlsb2d1ZV90YWlsY2FsbC5jPTQ0PVNFQyhcXFwiLnN0cnVjdF9vcHMubGlua1xcXCIpXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2VwaWxvZ3VlX3RhaWxjYWxsLmM6NDU6c3RydWN0IGJwZl90ZXN0bW9kX3N0X29wcyBlcGlsb2d1ZV90YWlsY2FsbCA9IHtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvZXBpbG9ndWVfdGFpbGNhbGwuYy00Ni1cXHQudGVzdF9lcGlsb2d1ZSA9ICh2b2lkICopdGVzdF9lcGlsb2d1ZV90YWlsY2FsbCxcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9lcGlsb2d1ZV90YWlsY2FsbC5jPTQ5PVNFQyhcXFwiLnN0cnVjdF9vcHMubGlua1xcXCIpXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2VwaWxvZ3VlX3RhaWxjYWxsLmM6NTA6c3RydWN0IGJwZl90ZXN0bW9kX3N0X29wcyBlcGlsb2d1ZV9zdWJwcm9nID0ge1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9lcGlsb2d1ZV90YWlsY2FsbC5jLTUxLVxcdC50ZXN0X2VwaWxvZ3VlID0gKHZvaWQgKil0ZXN0X2VwaWxvZ3VlX3N1YnByb2csXFxuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMxVDA5OjI3OjUzLjE5MDQ1MjQ1MVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjUwNjM3MTk5MjAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiBUaGlzIENvbW1pdCoqXG5cbk9rYXksIHNvIHRoaXMgY29tbWl0IGlzIGVudGlyZWx5IGNvbnRhaW5lZCB3aXRoaW4gYHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9gLiBJIG5lZWQgdG8gY29uZmlybSB0aGF0LiBMZXQgbWUgcXVpY2tseSByZXZpZXcgdGhlIGNoYW5nZXM6IGB0ZXN0X3N0cnVjdF9vcHNfbXVsdGlfYXJncy5jYCwgYHN0cnVjdF9vcHNfbXVsdGlfYXJncy5jYCwgYGJwZl90ZXN0bW9kLmNgLCBhbmQgYGJwZl90ZXN0bW9kLmhgLiBZZXAsIGxvb2tzIGxpa2UgYWxsIHRoZSBjaGFuZ2VzIGFyZSB3aXRoaW4gdGhhdCBkaXJlY3RvcnkuXG5cbk5vIGtlcm5lbCBjb2RlIHdoYXRzb2V2ZXIgaXMgYmVpbmcgdG91Y2hlZC4gVGhpcyBpcyBqdXN0IHNlbGZ0ZXN0IGNvZGUsIGFuZCB0aGUgc3VwcG9ydGluZyBrZXJuZWwgbW9kdWxlIChgYnBmX3Rlc3Rtb2RgKS4gR29vZC4gU2VsZnRlc3RzIGFyZW4ndCBwYXJ0IG9mIHRoZSBzdGFuZGFyZCBidWlsZDsgdGhleSdyZSBvbmx5IGV4ZWN1dGVkIGluIHRoZSBzZWxmdGVzdCBjb250ZXh0LiBUaGV5J3JlIG5vdCB0YXJnZXRlZCBieSBmdXp6ZXJzIGxpa2Ugc3l6a2FsbGVyLCB3aGljaCBmb2N1c2VzIG9uIHN5c2NhbGxzIGFuZCBjb3JlIGtlcm5lbCBpbnRlcmZhY2VzLlxuXG5UaGVyZWZvcmUsIHRoaXMgcGF0Y2ggZG9lc24ndCBpbnRyb2R1Y2UgYW55IGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsJ3MgY29yZSBsb2dpYy4gSXQncyBwdXJlbHkgYWJvdXQgdGVzdGluZy5cblxuTm93LCBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoaXMgYWxpZ25zIHdpdGggdGhlIFwiV29ydGhGdXp6aW5nPWZhbHNlXCIgY3JpdGVyaWEuIFNlbGZ0ZXN0IGNoYW5nZXMsIGxpa2UgdGhlc2UsIHNob3VsZCBhYnNvbHV0ZWx5ICpub3QqIHRyaWdnZXIgZnV6emluZy4gV2UgZG9uJ3Qgd2FudCB0byB3YXN0ZSByZXNvdXJjZXMgb24gdGhlbS4gWWVzLCB0aGF0J3MgY29ycmVjdC5cblxuQWxyaWdodCwgSSdsbCBjYWxsIGBzZXQtcmVzdWx0c2Agd2l0aCBgV29ydGhGdXp6aW5nPWZhbHNlYC4gSSBhbHNvIHdhbnQgdG8gc2V0IGBGb2N1c1N5bWJvbHNgIHRvIGVtcHR5IGFuZCBgRW5hYmxlQ29uZmlnc2AgdG8gZW1wdHkgYmVjYXVzZSB0aGUgb25seSBjaGFuZ2VzIGFyZSBsaW1pdGVkIHRvIHNlbGZ0ZXN0cywgYW5kIEknbGwgaW5jbHVkZSBhIGNsZWFyIGBSZWFzb25pbmdgIG1lc3NhZ2UgZXhwbGFpbmluZyB0aGF0IHRoZSBwYXRjaCBleGNsdXNpdmVseSBtb2RpZmllcyBzZWxmdGVzdCBmaWxlcyB3aXRoaW4gYHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9gLiBUaGF0IHNob3VsZCBjb3ZlciBpdC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjE1MTUsIk91dHB1dFRva2VucyI6NjYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNTIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzFUMDk6Mjc6NTguMjU0MTc1NzAxWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozMTU1MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IGFkZHMgYW5kIG1vZGlmaWVzIHRlc3QgY2FzZXMgYW5kIHRlc3Qga2VybmVsIG1vZHVsZSBkZWZpbml0aW9ucyB3aXRoaW4gdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmLywgd2l0aCBubyBmdW5jdGlvbmFsIG1vZGlmaWNhdGlvbnMgdG8gdGhlIGNvcmUgTGludXgga2VybmVsLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggb25seSBhZGRzIGFuZCBtb2RpZmllcyB0ZXN0IGNhc2VzIGFuZCB0ZXN0IGtlcm5lbCBtb2R1bGUgZGVmaW5pdGlvbnMgd2l0aGluIHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi8sIHdpdGggbm8gZnVuY3Rpb25hbCBtb2RpZmljYXRpb25zIHRvIHRoZSBjb3JlIExpbnV4IGtlcm5lbC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMxVDA5OjI3OjU4LjI1NDIxMTIzMVoiLCJTZXEiOjcsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyODYwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowt88gb[1] Phase: Running StartedAt: 2026-08-31 09:28:09 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowt88gb[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-08-31 09:28:09 +0000 UTC FinishedAt: 2026-08-31 09:28:14 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:code,Default:nil,Value:*1,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{},Result:nil,ExitCode:*1,}