Name: series-workflow5w6zn Phase: Failed StartedAt: 2026-08-12 06:07:49 +0000 UTC FinishedAt: 2026-08-12 06:09:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5w6zn[0] Phase: Succeeded StartedAt: 2026-08-12 06:07:49 +0000 UTC FinishedAt: 2026-08-12 06:09:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5w6zn[0].run-triage Phase: Succeeded StartedAt: 2026-08-12 06:07:49 +0000 UTC FinishedAt: 2026-08-12 06:09:43 +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+CgkJCTx0ZD4yMDI2LzA4LzEyIDA2OjA5PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggb25seSBtb2RpZmllcyB1c2VyLXNwYWNlIEJQRiBzZWxmdGVzdHMgYW5kIHRoZSB2ZXJpc3RhdCB0b29sLiBJdCBkb2VzIG5vdCBtYWtlIGFueSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCBjb2RlIGl0c2VsZi4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMDY6MDk8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA1NzE0NjIyYTEwYTkyNThhNTBjNGQ1YmRkMmM1OTIwNDViYWRkODg0XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBBdWcgMTIgMDY6MDk6MjQgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvdGVzdF92ZXJpc3RhdC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvdGVzdF92ZXJpc3RhdC5jXG5pbmRleCA5YWZmMDhhYzU1YzA3Li4xMWYzZGUyYjY2YWQxIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvdGVzdF92ZXJpc3RhdC5jXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy90ZXN0X3ZlcmlzdGF0LmNcbkBAIC0zNyw2ICYjNDM7MzcsMTQgQEAgc3RhdGljIHN0cnVjdCBmaXh0dXJlICppbml0X2ZpeHR1cmUodm9pZClcbiBcdHJldHVybiBmaXg7XG4gfVxuIFxuJiM0MztzdGF0aWMgdm9pZCByZWFkX291dHB1dChzdHJ1Y3QgZml4dHVyZSAqZml4KVxuJiM0Mzt7XG4mIzQzO1x0c3NpemVfdCBsZW4gPSBwcmVhZChmaXgtXHUwMDNlZmQsIGZpeC1cdTAwM2VvdXRwdXQsIGZpeC1cdTAwM2VzeiAtIDEsIDApO1xuJiM0MztcbiYjNDM7XHRmaXgtXHUwMDNlb3V0cHV0W2xlbiBcdTAwM2MgMCA/IDAgOiBsZW5dID0gMDtcbiYjNDM7XHRBU1NFUlRfR0UobGVuLCAwLCBcJiMzNDtwcmVhZFwmIzM0Oyk7XG4mIzQzO31cbiYjNDM7XG4gc3RhdGljIHZvaWQgdGVhcmRvd25fZml4dHVyZShzdHJ1Y3QgZml4dHVyZSAqZml4KVxuIHtcbiBcdGZyZWUoZml4LVx1MDAzZW91dHB1dCk7XG5AQCAtNzQsNyAmIzQzOzgyLDcgQEAgc3RhdGljIHZvaWQgdGVzdF9zZXRfZ2xvYmFsX3ZhcnNfc3VjY2VlZHModm9pZClcbiBcdCAgICBcJiMzNDsgLUcgXFxcJiMzNDtzdHJ1Y3QxMSBbIDcgXSBbIDUgXSAuc3RydWN0MlswXVsxXS51Lm1hdFszXVswXSA9IDE3NVxcXCYjMzQ7IFwmIzM0OyBcXFxuIFx0ICAgIFwmIzM0OyAtdmwyIFx1MDAzZSAlc1wmIzM0OywgZml4LVx1MDAzZXZlcmlzdGF0LCBmaXgtXHUwMDNldG1wZmlsZSk7XG4gXG4tXHRyZWFkKGZpeC1cdTAwM2VmZCwgZml4LVx1MDAzZW91dHB1dCwgZml4LVx1MDAzZXN6KTtcbiYjNDM7XHRyZWFkX291dHB1dChmaXgpO1xuIFx0X19DSEVDS19TVFIoXCYjMzQ7PTB4ZjAwMDAwMDAwMDAwMDAwMSBcJiMzNDssIFwmIzM0O3Zhcl9zNjQgPSAweGYwMDAwMDAwMDAwMDAwMDFcJiMzNDspO1xuIFx0X19DSEVDS19TVFIoXCYjMzQ7PTB4ZmVkY2JhOTg3NjU0MzIxMCBcJiMzNDssIFwmIzM0O3Zhcl91NjQgPSAweGZlZGNiYTk4NzY1NDMyMTBcJiMzNDspO1xuIFx0X19DSEVDS19TVFIoXCYjMzQ7PTB4ODAwMDAwMDAgXCYjMzQ7LCBcJiMzNDt2YXJfczMyID0gLTB4ODAwMDAwMDBcJiMzNDspO1xuQEAgLTExNiw3ICYjNDM7MTI0LDcgQEAgc3RhdGljIHZvaWQgdGVzdF9zZXRfZ2xvYmFsX3ZhcnNfZnJvbV9maWxlX3N1Y2NlZWRzKHZvaWQpXG4gXHRzeW5jZnMoZmQpO1xuIFx0U1lTKG91dCwgXCYjMzQ7JXMgc2V0X2dsb2JhbF92YXJzLmJwZi5vIC1HIFxcXCYjMzQ7QCVzXFxcJiMzNDsgLXZsMiBcdTAwM2UgJXNcJiMzNDssXG4gXHQgICAgZml4LVx1MDAzZXZlcmlzdGF0LCBpbnB1dF9maWxlLCBmaXgtXHUwMDNldG1wZmlsZSk7XG4tXHRyZWFkKGZpeC1cdTAwM2VmZCwgZml4LVx1MDAzZW91dHB1dCwgZml4LVx1MDAzZXN6KTtcbiYjNDM7XHRyZWFkX291dHB1dChmaXgpO1xuIFx0X19DSEVDS19TVFIoXCYjMzQ7PTB4ODAwMCBcJiMzNDssIFwmIzM0O3Zhcl9zMTYgPSAtMzI3NjhcJiMzNDspO1xuIFx0X19DSEVDS19TVFIoXCYjMzQ7PTB4ZWNlYyBcJiMzNDssIFwmIzM0O3Zhcl91MTYgPSA2MDY1MlwmIzM0Oyk7XG4gXG5AQCAtMTM0LDcgJiM0MzsxNDIsNyBAQCBzdGF0aWMgdm9pZCB0ZXN0X3NldF9nbG9iYWxfdmFyc19vdXRfb2ZfcmFuZ2Uodm9pZClcbiBcdFx0IFwmIzM0OyVzIHNldF9nbG9iYWxfdmFycy5icGYubyAtRyBcXFwmIzM0O3Zhcl9zMzIgPSAyMTQ3NDgzNjQ4XFxcJiMzNDsgLXZsMiAyXHUwMDNlICVzXCYjMzQ7LFxuIFx0XHQgZml4LVx1MDAzZXZlcmlzdGF0LCBmaXgtXHUwMDNldG1wZmlsZSk7XG4gXG4tXHRyZWFkKGZpeC1cdTAwM2VmZCwgZml4LVx1MDAzZW91dHB1dCwgZml4LVx1MDAzZXN6KTtcbiYjNDM7XHRyZWFkX291dHB1dChmaXgpO1xuIFx0X19DSEVDS19TVFIoXCYjMzQ7aXMgb3V0IG9mIHJhbmdlIFstMjE0NzQ4MzY0ODsgMjE0NzQ4MzY0N11cJiMzNDssIFwmIzM0O291dCBvZiByYW5nZVwmIzM0Oyk7XG4gXG4gb3V0OlxuQEAgLTE0OSw3ICYjNDM7MTU3LDcgQEAgc3RhdGljIHZvaWQgdGVzdF91bnN1cHBvcnRlZF9wdHJfYXJyYXlfdHlwZSh2b2lkKVxuIFx0XHQgXCYjMzQ7JXMgc2V0X2dsb2JhbF92YXJzLmJwZi5vIC1HIFxcXCYjMzQ7cHRyX2FyclswXSA9IDBcXFwmIzM0OyAtdmwyIDJcdTAwM2UgJXNcJiMzNDssXG4gXHRcdCBmaXgtXHUwMDNldmVyaXN0YXQsIGZpeC1cdTAwM2V0bXBmaWxlKTtcbiBcbi1cdHJlYWQoZml4LVx1MDAzZWZkLCBmaXgtXHUwMDNlb3V0cHV0LCBmaXgtXHUwMDNlc3opO1xuJiM0MztcdHJlYWRfb3V0cHV0KGZpeCk7XG4gXHRfX0NIRUNLX1NUUihcJiMzNDtDYW4mIzM5O3Qgc2V0IHB0cl9hcnJbMF0uIE9ubHkgaW50cyBhbmQgZW51bXMgYXJlIHN1cHBvcnRlZFwmIzM0OywgXCYjMzQ7cHRyX2FyclwmIzM0Oyk7XG4gXG4gb3V0OlxuQEAgLTE2NCw3ICYjNDM7MTcyLDcgQEAgc3RhdGljIHZvaWQgdGVzdF9hcnJheV9vdXRfb2ZfYm91bmRzKHZvaWQpXG4gXHRcdCBcJiMzNDslcyBzZXRfZ2xvYmFsX3ZhcnMuYnBmLm8gLUcgXFxcJiMzNDthcnJbOTldID0gMFxcXCYjMzQ7IC12bDIgMlx1MDAzZSAlc1wmIzM0OyxcbiBcdFx0IGZpeC1cdTAwM2V2ZXJpc3RhdCwgZml4LVx1MDAzZXRtcGZpbGUpO1xuIFxuLVx0cmVhZChmaXgtXHUwMDNlZmQsIGZpeC1cdTAwM2VvdXRwdXQsIGZpeC1cdTAwM2Vzeik7XG4mIzQzO1x0cmVhZF9vdXRwdXQoZml4KTtcbiBcdF9fQ0hFQ0tfU1RSKFwmIzM0O0FycmF5IGluZGV4IDk5IGlzIG91dCBvZiBib3VuZHNcJiMzNDssIFwmIzM0O2Fycls5OV1cJiMzNDspO1xuIFxuIG91dDpcbkBAIC0xNzksNyAmIzQzOzE4Nyw3IEBAIHN0YXRpYyB2b2lkIHRlc3RfYXJyYXlfaW5kZXhfbm90X2ZvdW5kKHZvaWQpXG4gXHRcdCBcJiMzNDslcyBzZXRfZ2xvYmFsX3ZhcnMuYnBmLm8gLUcgXFxcJiMzNDthcnJbRUcyXSA9IDBcXFwmIzM0OyAtdmwyIDJcdTAwM2UgJXNcJiMzNDssXG4gXHRcdCBmaXgtXHUwMDNldmVyaXN0YXQsIGZpeC1cdTAwM2V0bXBmaWxlKTtcbiBcbi1cdHJlYWQoZml4LVx1MDAzZWZkLCBmaXgtXHUwMDNlb3V0cHV0LCBmaXgtXHUwMDNlc3opO1xuJiM0MztcdHJlYWRfb3V0cHV0KGZpeCk7XG4gXHRfX0NIRUNLX1NUUihcJiMzNDtDYW4mIzM5O3QgcmVzb2x2ZSBlbnVtIHZhbHVlIEVHMlwmIzM0OywgXCYjMzQ7YXJyW0VHMl1cJiMzNDspO1xuIFxuIG91dDpcbkBAIC0yMzAsNiAmIzQzOzIzOCw5NyBAQCBzdGF0aWMgdm9pZCB0ZXN0X25vX2FycmF5X2luZGV4X2Zvcl9hcnJheSh2b2lkKVxuIFx0dGVhcmRvd25fZml4dHVyZShmaXgpO1xuIH1cbiBcbiYjNDM7LypcbiYjNDM7ICogTmFtZSBmaWx0ZXIgdGVzdHMgYmVsb3cgcnVuIHZlcmlzdGF0IG9uIHZlcmlzdGF0X2Zvby5icGYubyBhbmRcbiYjNDM7ICogdmVyaXN0YXRfYmFyLmJwZi5vLCBib3RoIGRlZmluaW5nIHByb2dyYW1zICYjMzk7Zm9vJiMzOTssICYjMzk7YmFyJiMzOTsgYW5kICYjMzk7YnV6JiMzOTsuXG4mIzQzOyAqIEV2ZXJ5IGVudHJ5IGRlc2NyaWJlcyBhIHNpbmdsZSAoZmlsdGVycywgZmlsZSwgcHJvZykgY29tYmluYXRpb24gYW5kXG4mIzQzOyAqIHRlbGxzIHdoZXRoZXIgdGhhdCBwcm9ncmFtIGlzIGV4cGVjdGVkIGluIHRoZSB2ZXJpc3RhdCBvdXRwdXQ6XG4mIzQzOyAqICYjMzk7dHJ1ZSYjMzk7IGlmIGl0IGlzLCAmIzM5O2ZhbHNlJiMzOTsgaWYgaXQgaXMgbm90IGFuZCAtMSBpZiB2ZXJpc3RhdCBpcyBleHBlY3RlZFxuJiM0MzsgKiB0byByZWplY3QgdGhlIGZpbHRlci5cbiYjNDM7ICovXG4mIzQzOyNkZWZpbmUgRklMVEVSX09CSlMgXCYjMzQ7dmVyaXN0YXRfZm9vLmJwZi5vIHZlcmlzdGF0X2Jhci5icGYub1wmIzM0O1xuJiM0MztcbiYjNDM7c3RhdGljIGNvbnN0IHN0cnVjdCBuYW1lX2ZpbHRlcl9jYXNlIHtcbiYjNDM7XHRjb25zdCBjaGFyICpmaWx0ZXJzO1xuJiM0MztcdGNvbnN0IGNoYXIgKmZpbGU7XG4mIzQzO1x0Y29uc3QgY2hhciAqcHJvZztcbiYjNDM7XHRpbnQgaW5jbHVkZWQ7XG4mIzQzO30gbmFtZV9maWx0ZXJfY2FzZXNbXSA9IHtcbiYjNDM7XHQvKiBubyBmaWx0ZXJzLCBldmVyeSBwcm9ncmFtIGlzIHByb2Nlc3NlZCAqL1xuJiM0MztcdHsgXCYjMzQ7XCYjMzQ7LFx0XHRcdFwmIzM0O2Zvb1wmIzM0OywgXCYjMzQ7Zm9vXCYjMzQ7LCB0cnVlICB9LFxuJiM0MztcdHsgXCYjMzQ7XCYjMzQ7LFx0XHRcdFwmIzM0O2Zvb1wmIzM0OywgXCYjMzQ7YmFyXCYjMzQ7LCB0cnVlICB9LFxuJiM0MztcdHsgXCYjMzQ7XCYjMzQ7LFx0XHRcdFwmIzM0O2Zvb1wmIzM0OywgXCYjMzQ7YnV6XCYjMzQ7LCB0cnVlICB9LFxuJiM0MztcdHsgXCYjMzQ7XCYjMzQ7LFx0XHRcdFwmIzM0O2JhclwmIzM0OywgXCYjMzQ7Zm9vXCYjMzQ7LCB0cnVlICB9LFxuJiM0MztcdHsgXCYjMzQ7XCYjMzQ7LFx0XHRcdFwmIzM0O2JhclwmIzM0OywgXCYjMzQ7YmFyXCYjMzQ7LCB0cnVlICB9LFxuJiM0MztcdHsgXCYjMzQ7XCYjMzQ7LFx0XHRcdFwmIzM0O2JhclwmIzM0OywgXCYjMzQ7YnV6XCYjMzQ7LCB0cnVlICB9LFxuJiM0MztcdC8qIGRlbnkgZmlsdGVycyAqL1xuJiM0MztcdHsgXCYjMzQ7LWYgJiMzOTshKmZvbyomIzM5O1wmIzM0OyxcdFwmIzM0O2Zvb1wmIzM0OywgXCYjMzQ7YmFyXCYjMzQ7LCBmYWxzZSB9LFxuJiM0MztcdHsgXCYjMzQ7LWYgJiMzOTshKmZvbyomIzM5O1wmIzM0OyxcdFwmIzM0O2JhclwmIzM0OywgXCYjMzQ7Zm9vXCYjMzQ7LCBmYWxzZSB9LFxuJiM0MztcdHsgXCYjMzQ7LWYgJiMzOTshKmZvbyomIzM5O1wmIzM0OyxcdFwmIzM0O2JhclwmIzM0OywgXCYjMzQ7YmFyXCYjMzQ7LCB0cnVlICB9LFxuJiM0MztcdHsgXCYjMzQ7LWYgJiMzOTshKmZvbyovYmFyJiMzOTtcJiMzNDssXHRcJiMzNDtmb29cJiMzNDssIFwmIzM0O2JhclwmIzM0OywgZmFsc2UgfSxcbiYjNDM7XHR7IFwmIzM0Oy1mICYjMzk7ISpmb28qL2JhciYjMzk7XCYjMzQ7LFx0XCYjMzQ7Zm9vXCYjMzQ7LCBcJiMzNDtidXpcJiMzNDssIHRydWUgIH0sXG4mIzQzO1x0eyBcJiMzNDstZiAmIzM5OyEqZm9vKi9iYXImIzM5O1wmIzM0OyxcdFwmIzM0O2JhclwmIzM0OywgXCYjMzQ7YmFyXCYjMzQ7LCB0cnVlICB9LFxuJiM0MztcdHsgXCYjMzQ7LWYgJiMzOTshKmZvbyovJiMzOTtcJiMzNDssXHRcJiMzNDtmb29cJiMzNDssIFwmIzM0O2JhclwmIzM0OywgZmFsc2UgfSxcbiYjNDM7XHR7IFwmIzM0Oy1mICYjMzk7ISpmb28qLyYjMzk7XCYjMzQ7LFx0XCYjMzQ7YmFyXCYjMzQ7LCBcJiMzNDtiYXJcJiMzNDssIHRydWUgIH0sXG4mIzQzO1x0eyBcJiMzNDstZiAmIzM5OyEvYmFyJiMzOTtcJiMzNDssXHRcdFwmIzM0O2Zvb1wmIzM0OywgXCYjMzQ7YmFyXCYjMzQ7LCBmYWxzZSB9LFxuJiM0MztcdHsgXCYjMzQ7LWYgJiMzOTshL2JhciYjMzk7XCYjMzQ7LFx0XHRcJiMzNDtmb29cJiMzNDssIFwmIzM0O2Zvb1wmIzM0OywgdHJ1ZSAgfSxcbiYjNDM7XHR7IFwmIzM0Oy1mICYjMzk7IS8mIzM5O1wmIzM0OyxcdFx0XCYjMzQ7Zm9vXCYjMzQ7LCBcJiMzNDtiYXJcJiMzNDssIC0xICAgIH0sXG4mIzQzO1x0eyBcJiMzNDstZiAmIzM5OyEmIzM5O1wmIzM0OyxcdFx0XCYjMzQ7Zm9vXCYjMzQ7LCBcJiMzNDtiYXJcJiMzNDssIC0xICAgIH0sXG4mIzQzO1x0LyogYWxsb3cgZmlsdGVycyAqL1xuJiM0MztcdHsgXCYjMzQ7LWYgJiMzOTsqZm9vKiYjMzk7XCYjMzQ7LFx0XHRcJiMzNDtmb29cJiMzNDssIFwmIzM0O2JhclwmIzM0OywgdHJ1ZSAgfSxcbiYjNDM7XHR7IFwmIzM0Oy1mICYjMzk7KmZvbyomIzM5O1wmIzM0OyxcdFx0XCYjMzQ7YmFyXCYjMzQ7LCBcJiMzNDtmb29cJiMzNDssIHRydWUgIH0sXG4mIzQzO1x0eyBcJiMzNDstZiAmIzM5Oypmb28qJiMzOTtcJiMzNDssXHRcdFwmIzM0O2JhclwmIzM0OywgXCYjMzQ7YmFyXCYjMzQ7LCBmYWxzZSB9LFxuJiM0MztcdHsgXCYjMzQ7LWYgJiMzOTsqZm9vKi9iYXImIzM5O1wmIzM0OyxcdFwmIzM0O2Zvb1wmIzM0OywgXCYjMzQ7YmFyXCYjMzQ7LCB0cnVlICB9LFxuJiM0MztcdHsgXCYjMzQ7LWYgJiMzOTsqZm9vKi9iYXImIzM5O1wmIzM0OyxcdFwmIzM0O2Zvb1wmIzM0OywgXCYjMzQ7YnV6XCYjMzQ7LCBmYWxzZSB9LFxuJiM0MztcdHsgXCYjMzQ7LWYgJiMzOTsqZm9vKi9iYXImIzM5O1wmIzM0OyxcdFwmIzM0O2JhclwmIzM0OywgXCYjMzQ7YmFyXCYjMzQ7LCBmYWxzZSB9LFxuJiM0MztcdHsgXCYjMzQ7LWYgJiMzOTsqZm9vKi8mIzM5O1wmIzM0OyxcdFwmIzM0O2Zvb1wmIzM0OywgXCYjMzQ7YmFyXCYjMzQ7LCB0cnVlICB9LFxuJiM0MztcdHsgXCYjMzQ7LWYgJiMzOTsqZm9vKi8mIzM5O1wmIzM0OyxcdFwmIzM0O2JhclwmIzM0OywgXCYjMzQ7YmFyXCYjMzQ7LCBmYWxzZSB9LFxuJiM0MztcdHsgXCYjMzQ7LWYgJiMzOTsvYmFyJiMzOTtcJiMzNDssXHRcdFwmIzM0O2Zvb1wmIzM0OywgXCYjMzQ7YmFyXCYjMzQ7LCB0cnVlICB9LFxuJiM0MztcdHsgXCYjMzQ7LWYgJiMzOTsvYmFyJiMzOTtcJiMzNDssXHRcdFwmIzM0O2Zvb1wmIzM0OywgXCYjMzQ7Zm9vXCYjMzQ7LCBmYWxzZSB9LFxuJiM0MztcdHsgXCYjMzQ7LWYgJiMzOTsvJiMzOTtcJiMzNDssXHRcdFwmIzM0O2Zvb1wmIzM0OywgXCYjMzQ7YmFyXCYjMzQ7LCAtMSAgICB9LFxuJiM0MztcdHsgXCYjMzQ7LWYgJiMzOTsmIzM5O1wmIzM0OyxcdFx0XCYjMzQ7Zm9vXCYjMzQ7LCBcJiMzNDtiYXJcJiMzNDssIC0xICAgIH0sXG4mIzQzO1x0LyogYWxsb3cgYW5kIGRlbnkgZmlsdGVycyBjb21iaW5lZCAqL1xuJiM0MztcdHsgXCYjMzQ7LWYgJiMzOTsqZm9vKi8mIzM5OyAtZiAmIzM5OyEvYmFyJiMzOTtcJiMzNDssIFwmIzM0O2Zvb1wmIzM0OywgXCYjMzQ7Zm9vXCYjMzQ7LCB0cnVlICB9LFxuJiM0MztcdHsgXCYjMzQ7LWYgJiMzOTsqZm9vKi8mIzM5OyAtZiAmIzM5OyEvYmFyJiMzOTtcJiMzNDssIFwmIzM0O2Zvb1wmIzM0OywgXCYjMzQ7YmFyXCYjMzQ7LCBmYWxzZSB9LFxuJiM0MztcdHsgXCYjMzQ7LWYgJiMzOTsqZm9vKi8mIzM5OyAtZiAmIzM5OyEvYmFyJiMzOTtcJiMzNDssIFwmIzM0O2JhclwmIzM0OywgXCYjMzQ7Zm9vXCYjMzQ7LCBmYWxzZSB9LFxuJiM0Mzt9O1xuJiM0MztcbiYjNDM7c3RhdGljIHZvaWQgdGVzdF9uYW1lX2ZpbHRlcnModm9pZClcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBmaXh0dXJlICpmaXggPSBpbml0X2ZpeHR1cmUoKTtcbiYjNDM7XHRjb25zdCBzdHJ1Y3QgbmFtZV9maWx0ZXJfY2FzZSAqdDtcbiYjNDM7XHRjaGFyIGNtZFs1MTJdLCByb3dbNjRdLCBuYW1lWzEyOF07XG4mIzQzO1x0aW50IGksIGVycjtcbiYjNDM7XG4mIzQzO1x0Zm9yIChpID0gMDsgaSBcdTAwM2MgQVJSQVlfU0laRShuYW1lX2ZpbHRlcl9jYXNlcyk7IGkmIzQzOyYjNDM7KSB7XG4mIzQzO1x0XHR0ID0gXHUwMDI2bmFtZV9maWx0ZXJfY2FzZXNbaV07XG4mIzQzO1x0XHQvKiBzdGRlcnIgaXMgbWVyZ2VkIHdpdGggc3Rkb3V0IGluIG9yZGVyIHRvIGNhdGNoIGVycm9yIG1lc3NhZ2VzICovXG4mIzQzO1x0XHRzbnByaW50ZihjbWQsIHNpemVvZihjbWQpLCBcJiMzNDslcyBcJiMzNDsgRklMVEVSX09CSlMgXCYjMzQ7IC1xIC1vIGNzdiAtZSBmaWxlLHByb2cgJXMgXHUwMDNlICVzIDJcdTAwM2VcdTAwMjYxXCYjMzQ7LFxuJiM0MztcdFx0XHQgZml4LVx1MDAzZXZlcmlzdGF0LCB0LVx1MDAzZWZpbHRlcnMsIGZpeC1cdTAwM2V0bXBmaWxlKTtcbiYjNDM7XHRcdGVyciA9IHN5c3RlbShjbWQpO1xuJiM0MztcdFx0cmVhZF9vdXRwdXQoZml4KTtcbiYjNDM7XG4mIzQzO1x0XHRzbnByaW50Zihyb3csIHNpemVvZihyb3cpLCBcJiMzNDt2ZXJpc3RhdF8lcy5icGYubywlc1wmIzM0OywgdC1cdTAwM2VmaWxlLCB0LVx1MDAzZXByb2cpO1xuJiM0MztcdFx0c25wcmludGYobmFtZSwgc2l6ZW9mKG5hbWUpLCBcJiMzNDt2ZXJpc3RhdCAlczogJXNcJiMzNDssIHQtXHUwMDNlZmlsdGVycywgcm93KTtcbiYjNDM7XHRcdHN3aXRjaCAodC1cdTAwM2VpbmNsdWRlZCkge1xuJiM0MztcdFx0Y2FzZSB0cnVlOlxuJiM0MztcdFx0XHRBU1NFUlRfT0soZXJyLCBuYW1lKTtcbiYjNDM7XHRcdFx0QVNTRVJUX0hBU19TVUJTVFIoZml4LVx1MDAzZW91dHB1dCwgcm93LCBuYW1lKTtcbiYjNDM7XHRcdFx0YnJlYWs7XG4mIzQzO1x0XHRjYXNlIGZhbHNlOlxuJiM0MztcdFx0XHRBU1NFUlRfT0soZXJyLCBuYW1lKTtcbiYjNDM7XHRcdFx0QVNTRVJUX0ZBTFNFKCEhc3Ryc3RyKGZpeC1cdTAwM2VvdXRwdXQsIHJvdyksIG5hbWUpO1xuJiM0MztcdFx0XHRicmVhaztcbiYjNDM7XHRcdGNhc2UgLTE6XG4mIzQzO1x0XHRcdEFTU0VSVF9ORVEoZXJyLCAwLCBuYW1lKTtcbiYjNDM7XHRcdFx0QVNTRVJUX0hBU19TVUJTVFIoZml4LVx1MDAzZW91dHB1dCwgXCYjMzQ7SW52YWxpZCBmaWx0ZXJcJiMzNDssIG5hbWUpO1xuJiM0MztcdFx0XHRicmVhaztcbiYjNDM7XHRcdH1cbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdHRlYXJkb3duX2ZpeHR1cmUoZml4KTtcbiYjNDM7fVxuJiM0MztcbiB2b2lkIHRlc3RfdmVyaXN0YXQodm9pZClcbiB7XG4gXHRpZiAodGVzdF9fc3RhcnRfc3VidGVzdChcJiMzNDtzZXRfZ2xvYmFsX3ZhcnNfc3VjY2VlZHNcJiMzNDspKVxuQEAgLTI1Niw2ICYjNDM7MzU1LDggQEAgdm9pZCB0ZXN0X3ZlcmlzdGF0KHZvaWQpXG4gXHRpZiAodGVzdF9fc3RhcnRfc3VidGVzdChcJiMzNDt0ZXN0X25vX2FycmF5X2luZGV4X2Zvcl9hcnJheVwmIzM0OykpXG4gXHRcdHRlc3Rfbm9fYXJyYXlfaW5kZXhfZm9yX2FycmF5KCk7XG4gXG4mIzQzO1x0aWYgKHRlc3RfX3N0YXJ0X3N1YnRlc3QoXCYjMzQ7bmFtZV9maWx0ZXJzXCYjMzQ7KSlcbiYjNDM7XHRcdHRlc3RfbmFtZV9maWx0ZXJzKCk7XG4gfVxuIFxuICN1bmRlZiBfX0NIRUNLX1NUUlxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpc3RhdF9iYXIuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpc3RhdF9iYXIuY1xubmV3IGZpbGUgbW9kZSAxMDA2NDRcbmluZGV4IDAwMDAwMDAwMDAwMDAuLjgzZDJhMmExZGZjOTZcbi0tLSAvZGV2L251bGxcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpc3RhdF9iYXIuY1xuQEAgLTAsMCAmIzQzOzEsMyBAQFxuJiM0MzsvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxuJiM0MzsvKiBDb3B5cmlnaHQgKGMpIDIwMjYgTWV0YSBQbGF0Zm9ybXMsIEluYy4gYW5kIGFmZmlsaWF0ZXMuICovXG4mIzQzOyNpbmNsdWRlIFwmIzM0O3ZlcmlzdGF0X2Zvby5jXCYjMzQ7XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlzdGF0X2Zvby5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlzdGF0X2Zvby5jXG5uZXcgZmlsZSBtb2RlIDEwMDY0NFxuaW5kZXggMDAwMDAwMDAwMDAwMC4uYmQyNGI5NzY2NGI0OVxuLS0tIC9kZXYvbnVsbFxuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlzdGF0X2Zvby5jXG5AQCAtMCwwICYjNDM7MSwzMSBAQFxuJiM0MzsvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxuJiM0MzsvKiBDb3B5cmlnaHQgKGMpIDIwMjYgTWV0YSBQbGF0Zm9ybXMsIEluYy4gYW5kIGFmZmlsaWF0ZXMuICovXG4mIzQzOyNpbmNsdWRlIFx1MDAzY2xpbnV4L2JwZi5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY2JwZi9icGZfaGVscGVycy5oXHUwMDNlXG4mIzQzO1xuJiM0MzsvKlxuJiM0MzsgKiBQcm9ncmFtcyBiZWxvdyBleGlzdCBvbmx5IHRvIGV4ZXJjaXNlIHZlcmlzdGF0JiMzOTtzIC1mIG5hbWUgZmlsdGVycyxcbiYjNDM7ICogdGhlaXIgYm9kaWVzIGFyZSBpcnJlbGV2YW50LCBvbmx5IHRoZSBuYW1lcyBtYXR0ZXIuXG4mIzQzOyAqIFRoaXMgZmlsZSBpcyBhbHNvIGluY2x1ZGVkIGJ5IHZlcmlzdGF0X2Jhci5jLCBzbyB0aGF0IHRoZSBzYW1lIHNldCBvZlxuJiM0MzsgKiBwcm9ncmFtIG5hbWVzIGlzIGF2YWlsYWJsZSBpbiB0d28gZGlmZmVyZW50bHkgbmFtZWQgb2JqZWN0IGZpbGVzLlxuJiM0MzsgKi9cbiYjNDM7XG4mIzQzO1NFQyhcJiMzNDtzb2NrZXRcJiMzNDspXG4mIzQzO2ludCBmb28odm9pZCAqY3R4KVxuJiM0Mzt7XG4mIzQzO1x0cmV0dXJuIDA7XG4mIzQzO31cbiYjNDM7XG4mIzQzO1NFQyhcJiMzNDtzb2NrZXRcJiMzNDspXG4mIzQzO2ludCBiYXIodm9pZCAqY3R4KVxuJiM0Mzt7XG4mIzQzO1x0cmV0dXJuIDA7XG4mIzQzO31cbiYjNDM7XG4mIzQzO1NFQyhcJiMzNDtzb2NrZXRcJiMzNDspXG4mIzQzO2ludCBidXoodm9pZCAqY3R4KVxuJiM0Mzt7XG4mIzQzO1x0cmV0dXJuIDA7XG4mIzQzO31cbiYjNDM7XG4mIzQzO2NoYXIgX2xpY2Vuc2VbXSBTRUMoXCYjMzQ7bGljZW5zZVwmIzM0OykgPSBcJiMzNDtHUExcJiMzNDs7XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3ZlcmlzdGF0LmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdmVyaXN0YXQuY1xuaW5kZXggYzljMjU3Nzg0ZWUzZC4uNmFhYTA2NzkwZGFhMiAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi92ZXJpc3RhdC5jXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdmVyaXN0YXQuY1xuQEAgLTUxNCw2ICYjNDM7NTE0LDQwIEBAIHN0YXRpYyBib29sIGlzX2JwZl9vYmpfZmlsZShjb25zdCBjaGFyICpwYXRoKSB7XG4gXHRyZXR1cm4gZXJyID09IDA7XG4gfVxuIFxuJiM0MzsvKiBFeGFjdCBmaWx0ZXIgbWF0Y2ggKi9cbiYjNDM7c3RhdGljIGJvb2wgbmFtZV9maWx0ZXJfbWF0Y2hlcyhzdHJ1Y3QgZmlsdGVyICpmLCBjb25zdCBjaGFyICpmaWxlbmFtZSwgY29uc3QgY2hhciAqcHJvZ19uYW1lKVxuJiM0Mzt7XG4mIzQzO1x0aWYgKGYtXHUwMDNlYW55X2dsb2IpXG4mIzQzO1x0XHRyZXR1cm4gZ2xvYl9tYXRjaGVzKGZpbGVuYW1lLCBmLVx1MDAzZWFueV9nbG9iKSB8fFxuJiM0MztcdFx0ICAgICAgIChwcm9nX25hbWUgXHUwMDI2XHUwMDI2IGdsb2JfbWF0Y2hlcyhwcm9nX25hbWUsIGYtXHUwMDNlYW55X2dsb2IpKTtcbiYjNDM7XHRpZiAoZi1cdTAwM2VmaWxlX2dsb2IgXHUwMDI2XHUwMDI2IGYtXHUwMDNlcHJvZ19nbG9iKVxuJiM0MztcdFx0cmV0dXJuIHByb2dfbmFtZSBcdTAwMjZcdTAwMjZcbiYjNDM7XHRcdCAgICAgICBnbG9iX21hdGNoZXMoZmlsZW5hbWUsIGYtXHUwMDNlZmlsZV9nbG9iKSBcdTAwMjZcdTAwMjZcbiYjNDM7XHRcdCAgICAgICBnbG9iX21hdGNoZXMocHJvZ19uYW1lLCBmLVx1MDAzZXByb2dfZ2xvYik7XG4mIzQzO1x0aWYgKGYtXHUwMDNlZmlsZV9nbG9iKVxuJiM0MztcdFx0cmV0dXJuIGdsb2JfbWF0Y2hlcyhmaWxlbmFtZSwgZi1cdTAwM2VmaWxlX2dsb2IpO1xuJiM0MztcdGlmIChmLVx1MDAzZXByb2dfZ2xvYilcbiYjNDM7XHRcdHJldHVybiBwcm9nX25hbWUgXHUwMDI2XHUwMDI2IGdsb2JfbWF0Y2hlcyhwcm9nX25hbWUsIGYtXHUwMDNlcHJvZ19nbG9iKTtcbiYjNDM7XHRyZXR1cm4gZmFsc2U7XG4mIzQzO31cbiYjNDM7XG4mIzQzOy8qIENoZWNrIGlmIHRoZSBmaWx0ZXIgZG9lcyBub3Qgb3V0cmlnaHQgcmVqZWN0IHRoZSBmaWxlIG5hbWUgKi9cbiYjNDM7c3RhdGljIGJvb2wgbmFtZV9maWx0ZXJfbWF5X21hdGNoKHN0cnVjdCBmaWx0ZXIgKmYsIGNvbnN0IGNoYXIgKmZpbGVuYW1lKVxuJiM0Mzt7XG4mIzQzO1x0aWYgKGYtXHUwMDNlZmlsZV9nbG9iKVxuJiM0MztcdFx0cmV0dXJuIGdsb2JfbWF0Y2hlcyhmaWxlbmFtZSwgZi1cdTAwM2VmaWxlX2dsb2IpO1xuJiM0MztcdC8qXG4mIzQzO1x0ICogSWYgd2UgZG9uJiMzOTt0IGtub3cgcHJvZ3JhbSBuYW1lIHlldCwgYW55X2dsb2IgZmlsdGVyXG4mIzQzO1x0ICogaGFzIHRvIGFzc3VtZSB0aGF0IGN1cnJlbnQgQlBGIG9iamVjdCBmaWxlIG1pZ2h0IGJlXG4mIzQzO1x0ICogcmVsZXZhbnQ7IHdlJiMzOTtsbCBjaGVjayBhZ2FpbiBsYXRlciBvbiBhZnRlciBvcGVuaW5nXG4mIzQzO1x0ICogQlBGIG9iamVjdCBmaWxlLCBhdCB3aGljaCBwb2ludCBwcm9ncmFtIG5hbWUgd2lsbFxuJiM0MztcdCAqIGJlIGtub3duIGZpbmFsbHkuXG4mIzQzO1x0ICovXG4mIzQzO1x0aWYgKGYtXHUwMDNlYW55X2dsb2IgfHwgZi1cdTAwM2Vwcm9nX2dsb2IpXG4mIzQzO1x0XHRyZXR1cm4gdHJ1ZTtcbiYjNDM7XHRyZXR1cm4gZmFsc2U7XG4mIzQzO31cbiYjNDM7XG4gc3RhdGljIGJvb2wgc2hvdWxkX3Byb2Nlc3NfZmlsZV9wcm9nKGNvbnN0IGNoYXIgKmZpbGVuYW1lLCBjb25zdCBjaGFyICpwcm9nX25hbWUpXG4ge1xuIFx0c3RydWN0IGZpbHRlciAqZjtcbkBAIC01MjEsMTYgJiM0Mzs1NTUsNyBAQCBzdGF0aWMgYm9vbCBzaG91bGRfcHJvY2Vzc19maWxlX3Byb2coY29uc3QgY2hhciAqZmlsZW5hbWUsIGNvbnN0IGNoYXIgKnByb2dfbmFtZVxuIFxuIFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgZW52LmRlbnlfZmlsdGVyX2NudDsgaSYjNDM7JiM0MzspIHtcbiBcdFx0ZiA9IFx1MDAyNmVudi5kZW55X2ZpbHRlcnNbaV07XG4tXHRcdGlmIChmLVx1MDAzZWtpbmQgIT0gRklMVEVSX05BTUUpXG4tXHRcdFx0Y29udGludWU7XG4tXG4tXHRcdGlmIChmLVx1MDAzZWFueV9nbG9iIFx1MDAyNlx1MDAyNiBnbG9iX21hdGNoZXMoZmlsZW5hbWUsIGYtXHUwMDNlYW55X2dsb2IpKVxuLVx0XHRcdHJldHVybiBmYWxzZTtcbi1cdFx0aWYgKGYtXHUwMDNlYW55X2dsb2IgXHUwMDI2XHUwMDI2IHByb2dfbmFtZSBcdTAwMjZcdTAwMjYgZ2xvYl9tYXRjaGVzKHByb2dfbmFtZSwgZi1cdTAwM2VhbnlfZ2xvYikpXG4tXHRcdFx0cmV0dXJuIGZhbHNlO1xuLVx0XHRpZiAoZi1cdTAwM2VmaWxlX2dsb2IgXHUwMDI2XHUwMDI2IGdsb2JfbWF0Y2hlcyhmaWxlbmFtZSwgZi1cdTAwM2VmaWxlX2dsb2IpKVxuLVx0XHRcdHJldHVybiBmYWxzZTtcbi1cdFx0aWYgKGYtXHUwMDNlcHJvZ19nbG9iIFx1MDAyNlx1MDAyNiBwcm9nX25hbWUgXHUwMDI2XHUwMDI2IGdsb2JfbWF0Y2hlcyhwcm9nX25hbWUsIGYtXHUwMDNlcHJvZ19nbG9iKSlcbiYjNDM7XHRcdGlmIChmLVx1MDAzZWtpbmQgPT0gRklMVEVSX05BTUUgXHUwMDI2XHUwMDI2IG5hbWVfZmlsdGVyX21hdGNoZXMoZiwgZmlsZW5hbWUsIHByb2dfbmFtZSkpXG4gXHRcdFx0cmV0dXJuIGZhbHNlO1xuIFx0fVxuIFxuQEAgLTU0MCwyNCAmIzQzOzU2NSwxNSBAQCBzdGF0aWMgYm9vbCBzaG91bGRfcHJvY2Vzc19maWxlX3Byb2coY29uc3QgY2hhciAqZmlsZW5hbWUsIGNvbnN0IGNoYXIgKnByb2dfbmFtZVxuIFx0XHRcdGNvbnRpbnVlO1xuIFxuIFx0XHRhbGxvd19jbnQmIzQzOyYjNDM7O1xuLVx0XHRpZiAoZi1cdTAwM2VhbnlfZ2xvYikge1xuLVx0XHRcdGlmIChnbG9iX21hdGNoZXMoZmlsZW5hbWUsIGYtXHUwMDNlYW55X2dsb2IpKVxuLVx0XHRcdFx0cmV0dXJuIHRydWU7XG4tXHRcdFx0LyogSWYgd2UgZG9uJiMzOTt0IGtub3cgcHJvZ3JhbSBuYW1lIHlldCwgYW55X2dsb2IgZmlsdGVyXG4tXHRcdFx0ICogaGFzIHRvIGFzc3VtZSB0aGF0IGN1cnJlbnQgQlBGIG9iamVjdCBmaWxlIG1pZ2h0IGJlXG4tXHRcdFx0ICogcmVsZXZhbnQ7IHdlJiMzOTtsbCBjaGVjayBhZ2FpbiBsYXRlciBvbiBhZnRlciBvcGVuaW5nXG4tXHRcdFx0ICogQlBGIG9iamVjdCBmaWxlLCBhdCB3aGljaCBwb2ludCBwcm9ncmFtIG5hbWUgd2lsbFxuLVx0XHRcdCAqIGJlIGtub3duIGZpbmFsbHkuXG4tXHRcdFx0ICovXG4tXHRcdFx0aWYgKCFwcm9nX25hbWUgfHwgZ2xvYl9tYXRjaGVzKHByb2dfbmFtZSwgZi1cdTAwM2VhbnlfZ2xvYikpXG4tXHRcdFx0XHRyZXR1cm4gdHJ1ZTtcbi1cdFx0fSBlbHNlIHtcbi1cdFx0XHRpZiAoZi1cdTAwM2VmaWxlX2dsb2IgXHUwMDI2XHUwMDI2ICFnbG9iX21hdGNoZXMoZmlsZW5hbWUsIGYtXHUwMDNlZmlsZV9nbG9iKSlcbi1cdFx0XHRcdGNvbnRpbnVlO1xuLVx0XHRcdGlmIChmLVx1MDAzZXByb2dfZ2xvYiBcdTAwMjZcdTAwMjYgcHJvZ19uYW1lIFx1MDAyNlx1MDAyNiAhZ2xvYl9tYXRjaGVzKHByb2dfbmFtZSwgZi1cdTAwM2Vwcm9nX2dsb2IpKVxuLVx0XHRcdFx0Y29udGludWU7XG4mIzQzO1x0XHRpZiAocHJvZ19uYW1lIFx1MDAyNlx1MDAyNiBuYW1lX2ZpbHRlcl9tYXRjaGVzKGYsIGZpbGVuYW1lLCBwcm9nX25hbWUpKVxuJiM0MztcdFx0XHRyZXR1cm4gdHJ1ZTtcbiYjNDM7XHRcdC8qXG4mIzQzO1x0XHQgKiBJZiB0aGVyZSBpcyBubyBwcm9nX25hbWUgYW5kIHRoZSBmaWxlIG5hbWUgaXMgbm90IGJsb2NrZWQgYnlcbiYjNDM7XHRcdCAqIHRoZSBmaWx0ZXIsIGFsbG93IHRvIG9wZW4gdGhlIGZpbGUuIEFmdGVyd2FyZHMgdGhlcmUgd291bGQgYmVcbiYjNDM7XHRcdCAqIGEgc2Vjb25kIHJlZmluaW5nIHF1ZXJ5IHdpdGggcHJvZ19uYW1lIHNldC5cbiYjNDM7XHRcdCAqL1xuJiM0MztcdFx0aWYgKCFwcm9nX25hbWUgXHUwMDI2XHUwMDI2IG5hbWVfZmlsdGVyX21heV9tYXRjaChmLCBmaWxlbmFtZSkpXG4gXHRcdFx0cmV0dXJuIHRydWU7XG4tXHRcdH1cbiBcdH1cbiBcbiBcdC8qIGlmIHRoZXJlIGFyZSBubyBmaWxlL3Byb2cgbmFtZSBhbGxvdyBmaWx0ZXJzLCBhbGxvdyBhbGwgcHJvZ3MsXG5AQCAtNzAzLDYgJiM0Mzs3MTksMTIgQEAgc3RhdGljIGludCBhcHBlbmRfZmlsdGVyKHN0cnVjdCBmaWx0ZXIgKipmaWx0ZXJzLCBpbnQgKmNudCwgY29uc3QgY2hhciAqc3RyKVxuIFx0XHR9XG4gXHR9XG4gXG4mIzQzO1x0aWYgKCghZi1cdTAwM2VhbnlfZ2xvYiBcdTAwMjZcdTAwMjYgIWYtXHUwMDNlZmlsZV9nbG9iIFx1MDAyNlx1MDAyNiAhZi1cdTAwM2Vwcm9nX2dsb2IpIHx8XG4mIzQzO1x0ICAgIChmLVx1MDAzZWFueV9nbG9iIFx1MDAyNlx1MDAyNiBzdHJjbXAoZi1cdTAwM2VhbnlfZ2xvYiwgXCYjMzQ7XCYjMzQ7KSA9PSAwKSkge1xuJiM0MztcdFx0ZnByaW50ZihzdGRlcnIsIFwmIzM0O0ludmFsaWQgZmlsdGVyOiAmIzM5OyVzJiMzOTtcXG5cJiMzNDssIHN0cik7XG4mIzQzO1x0XHRyZXR1cm4gLUVJTlZBTDtcbiYjNDM7XHR9XG4mIzQzO1xuIFx0KmNudCAmIzQzOz0gMTtcbiBcdHJldHVybiAwO1xuIH1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAwNjowOTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggb25seSBtb2RpZmllcyB1c2VyLXNwYWNlIEJQRiBzZWxmdGVzdHMgYW5kIHRoZSB2ZXJpc3RhdCB0b29sLiBJdCBkb2VzIG5vdCBtYWtlIGFueSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCBjb2RlIGl0c2VsZi4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA1NzE0NjIyYTEwYTkyNThhNTBjNGQ1YmRkMmM1OTIwNDViYWRkODg0CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFdlZCBBdWcgMTIgMDY6MDk6MjQgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy90ZXN0X3ZlcmlzdGF0LmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy90ZXN0X3ZlcmlzdGF0LmMKaW5kZXggOWFmZjA4YWM1NWMwNy4uMTFmM2RlMmI2NmFkMSAxMDA2NDQKLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvdGVzdF92ZXJpc3RhdC5jCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3Rlc3RfdmVyaXN0YXQuYwpAQCAtMzcsNiAmIzQzOzM3LDE0IEBAIHN0YXRpYyBzdHJ1Y3QgZml4dHVyZSAqaW5pdF9maXh0dXJlKHZvaWQpCiAJcmV0dXJuIGZpeDsKIH0KIAomIzQzO3N0YXRpYyB2b2lkIHJlYWRfb3V0cHV0KHN0cnVjdCBmaXh0dXJlICpmaXgpCiYjNDM7ewomIzQzOwlzc2l6ZV90IGxlbiA9IHByZWFkKGZpeC0mZ3Q7ZmQsIGZpeC0mZ3Q7b3V0cHV0LCBmaXgtJmd0O3N6IC0gMSwgMCk7CiYjNDM7CiYjNDM7CWZpeC0mZ3Q7b3V0cHV0W2xlbiAmbHQ7IDAgPyAwIDogbGVuXSA9IDA7CiYjNDM7CUFTU0VSVF9HRShsZW4sIDAsICYjMzQ7cHJlYWQmIzM0Oyk7CiYjNDM7fQomIzQzOwogc3RhdGljIHZvaWQgdGVhcmRvd25fZml4dHVyZShzdHJ1Y3QgZml4dHVyZSAqZml4KQogewogCWZyZWUoZml4LSZndDtvdXRwdXQpOwpAQCAtNzQsNyAmIzQzOzgyLDcgQEAgc3RhdGljIHZvaWQgdGVzdF9zZXRfZ2xvYmFsX3ZhcnNfc3VjY2VlZHModm9pZCkKIAkgICAgJiMzNDsgLUcgXCYjMzQ7c3RydWN0MTEgWyA3IF0gWyA1IF0gLnN0cnVjdDJbMF1bMV0udS5tYXRbM11bMF0gPSAxNzVcJiMzNDsgJiMzNDsgXAogCSAgICAmIzM0OyAtdmwyICZndDsgJXMmIzM0OywgZml4LSZndDt2ZXJpc3RhdCwgZml4LSZndDt0bXBmaWxlKTsKIAotCXJlYWQoZml4LSZndDtmZCwgZml4LSZndDtvdXRwdXQsIGZpeC0mZ3Q7c3opOwomIzQzOwlyZWFkX291dHB1dChmaXgpOwogCV9fQ0hFQ0tfU1RSKCYjMzQ7PTB4ZjAwMDAwMDAwMDAwMDAwMSAmIzM0OywgJiMzNDt2YXJfczY0ID0gMHhmMDAwMDAwMDAwMDAwMDAxJiMzNDspOwogCV9fQ0hFQ0tfU1RSKCYjMzQ7PTB4ZmVkY2JhOTg3NjU0MzIxMCAmIzM0OywgJiMzNDt2YXJfdTY0ID0gMHhmZWRjYmE5ODc2NTQzMjEwJiMzNDspOwogCV9fQ0hFQ0tfU1RSKCYjMzQ7PTB4ODAwMDAwMDAgJiMzNDssICYjMzQ7dmFyX3MzMiA9IC0weDgwMDAwMDAwJiMzNDspOwpAQCAtMTE2LDcgJiM0MzsxMjQsNyBAQCBzdGF0aWMgdm9pZCB0ZXN0X3NldF9nbG9iYWxfdmFyc19mcm9tX2ZpbGVfc3VjY2VlZHModm9pZCkKIAlzeW5jZnMoZmQpOwogCVNZUyhvdXQsICYjMzQ7JXMgc2V0X2dsb2JhbF92YXJzLmJwZi5vIC1HIFwmIzM0O0Alc1wmIzM0OyAtdmwyICZndDsgJXMmIzM0OywKIAkgICAgZml4LSZndDt2ZXJpc3RhdCwgaW5wdXRfZmlsZSwgZml4LSZndDt0bXBmaWxlKTsKLQlyZWFkKGZpeC0mZ3Q7ZmQsIGZpeC0mZ3Q7b3V0cHV0LCBmaXgtJmd0O3N6KTsKJiM0MzsJcmVhZF9vdXRwdXQoZml4KTsKIAlfX0NIRUNLX1NUUigmIzM0Oz0weDgwMDAgJiMzNDssICYjMzQ7dmFyX3MxNiA9IC0zMjc2OCYjMzQ7KTsKIAlfX0NIRUNLX1NUUigmIzM0Oz0weGVjZWMgJiMzNDssICYjMzQ7dmFyX3UxNiA9IDYwNjUyJiMzNDspOwogCkBAIC0xMzQsNyAmIzQzOzE0Miw3IEBAIHN0YXRpYyB2b2lkIHRlc3Rfc2V0X2dsb2JhbF92YXJzX291dF9vZl9yYW5nZSh2b2lkKQogCQkgJiMzNDslcyBzZXRfZ2xvYmFsX3ZhcnMuYnBmLm8gLUcgXCYjMzQ7dmFyX3MzMiA9IDIxNDc0ODM2NDhcJiMzNDsgLXZsMiAyJmd0OyAlcyYjMzQ7LAogCQkgZml4LSZndDt2ZXJpc3RhdCwgZml4LSZndDt0bXBmaWxlKTsKIAotCXJlYWQoZml4LSZndDtmZCwgZml4LSZndDtvdXRwdXQsIGZpeC0mZ3Q7c3opOwomIzQzOwlyZWFkX291dHB1dChmaXgpOwogCV9fQ0hFQ0tfU1RSKCYjMzQ7aXMgb3V0IG9mIHJhbmdlIFstMjE0NzQ4MzY0ODsgMjE0NzQ4MzY0N10mIzM0OywgJiMzNDtvdXQgb2YgcmFuZ2UmIzM0Oyk7CiAKIG91dDoKQEAgLTE0OSw3ICYjNDM7MTU3LDcgQEAgc3RhdGljIHZvaWQgdGVzdF91bnN1cHBvcnRlZF9wdHJfYXJyYXlfdHlwZSh2b2lkKQogCQkgJiMzNDslcyBzZXRfZ2xvYmFsX3ZhcnMuYnBmLm8gLUcgXCYjMzQ7cHRyX2FyclswXSA9IDBcJiMzNDsgLXZsMiAyJmd0OyAlcyYjMzQ7LAogCQkgZml4LSZndDt2ZXJpc3RhdCwgZml4LSZndDt0bXBmaWxlKTsKIAotCXJlYWQoZml4LSZndDtmZCwgZml4LSZndDtvdXRwdXQsIGZpeC0mZ3Q7c3opOwomIzQzOwlyZWFkX291dHB1dChmaXgpOwogCV9fQ0hFQ0tfU1RSKCYjMzQ7Q2FuJiMzOTt0IHNldCBwdHJfYXJyWzBdLiBPbmx5IGludHMgYW5kIGVudW1zIGFyZSBzdXBwb3J0ZWQmIzM0OywgJiMzNDtwdHJfYXJyJiMzNDspOwogCiBvdXQ6CkBAIC0xNjQsNyAmIzQzOzE3Miw3IEBAIHN0YXRpYyB2b2lkIHRlc3RfYXJyYXlfb3V0X29mX2JvdW5kcyh2b2lkKQogCQkgJiMzNDslcyBzZXRfZ2xvYmFsX3ZhcnMuYnBmLm8gLUcgXCYjMzQ7YXJyWzk5XSA9IDBcJiMzNDsgLXZsMiAyJmd0OyAlcyYjMzQ7LAogCQkgZml4LSZndDt2ZXJpc3RhdCwgZml4LSZndDt0bXBmaWxlKTsKIAotCXJlYWQoZml4LSZndDtmZCwgZml4LSZndDtvdXRwdXQsIGZpeC0mZ3Q7c3opOwomIzQzOwlyZWFkX291dHB1dChmaXgpOwogCV9fQ0hFQ0tfU1RSKCYjMzQ7QXJyYXkgaW5kZXggOTkgaXMgb3V0IG9mIGJvdW5kcyYjMzQ7LCAmIzM0O2Fycls5OV0mIzM0Oyk7CiAKIG91dDoKQEAgLTE3OSw3ICYjNDM7MTg3LDcgQEAgc3RhdGljIHZvaWQgdGVzdF9hcnJheV9pbmRleF9ub3RfZm91bmQodm9pZCkKIAkJICYjMzQ7JXMgc2V0X2dsb2JhbF92YXJzLmJwZi5vIC1HIFwmIzM0O2FycltFRzJdID0gMFwmIzM0OyAtdmwyIDImZ3Q7ICVzJiMzNDssCiAJCSBmaXgtJmd0O3ZlcmlzdGF0LCBmaXgtJmd0O3RtcGZpbGUpOwogCi0JcmVhZChmaXgtJmd0O2ZkLCBmaXgtJmd0O291dHB1dCwgZml4LSZndDtzeik7CiYjNDM7CXJlYWRfb3V0cHV0KGZpeCk7CiAJX19DSEVDS19TVFIoJiMzNDtDYW4mIzM5O3QgcmVzb2x2ZSBlbnVtIHZhbHVlIEVHMiYjMzQ7LCAmIzM0O2FycltFRzJdJiMzNDspOwogCiBvdXQ6CkBAIC0yMzAsNiAmIzQzOzIzOCw5NyBAQCBzdGF0aWMgdm9pZCB0ZXN0X25vX2FycmF5X2luZGV4X2Zvcl9hcnJheSh2b2lkKQogCXRlYXJkb3duX2ZpeHR1cmUoZml4KTsKIH0KIAomIzQzOy8qCiYjNDM7ICogTmFtZSBmaWx0ZXIgdGVzdHMgYmVsb3cgcnVuIHZlcmlzdGF0IG9uIHZlcmlzdGF0X2Zvby5icGYubyBhbmQKJiM0MzsgKiB2ZXJpc3RhdF9iYXIuYnBmLm8sIGJvdGggZGVmaW5pbmcgcHJvZ3JhbXMgJiMzOTtmb28mIzM5OywgJiMzOTtiYXImIzM5OyBhbmQgJiMzOTtidXomIzM5Oy4KJiM0MzsgKiBFdmVyeSBlbnRyeSBkZXNjcmliZXMgYSBzaW5nbGUgKGZpbHRlcnMsIGZpbGUsIHByb2cpIGNvbWJpbmF0aW9uIGFuZAomIzQzOyAqIHRlbGxzIHdoZXRoZXIgdGhhdCBwcm9ncmFtIGlzIGV4cGVjdGVkIGluIHRoZSB2ZXJpc3RhdCBvdXRwdXQ6CiYjNDM7ICogJiMzOTt0cnVlJiMzOTsgaWYgaXQgaXMsICYjMzk7ZmFsc2UmIzM5OyBpZiBpdCBpcyBub3QgYW5kIC0xIGlmIHZlcmlzdGF0IGlzIGV4cGVjdGVkCiYjNDM7ICogdG8gcmVqZWN0IHRoZSBmaWx0ZXIuCiYjNDM7ICovCiYjNDM7I2RlZmluZSBGSUxURVJfT0JKUyAmIzM0O3ZlcmlzdGF0X2Zvby5icGYubyB2ZXJpc3RhdF9iYXIuYnBmLm8mIzM0OwomIzQzOwomIzQzO3N0YXRpYyBjb25zdCBzdHJ1Y3QgbmFtZV9maWx0ZXJfY2FzZSB7CiYjNDM7CWNvbnN0IGNoYXIgKmZpbHRlcnM7CiYjNDM7CWNvbnN0IGNoYXIgKmZpbGU7CiYjNDM7CWNvbnN0IGNoYXIgKnByb2c7CiYjNDM7CWludCBpbmNsdWRlZDsKJiM0Mzt9IG5hbWVfZmlsdGVyX2Nhc2VzW10gPSB7CiYjNDM7CS8qIG5vIGZpbHRlcnMsIGV2ZXJ5IHByb2dyYW0gaXMgcHJvY2Vzc2VkICovCiYjNDM7CXsgJiMzNDsmIzM0OywJCQkmIzM0O2ZvbyYjMzQ7LCAmIzM0O2ZvbyYjMzQ7LCB0cnVlICB9LAomIzQzOwl7ICYjMzQ7JiMzNDssCQkJJiMzNDtmb28mIzM0OywgJiMzNDtiYXImIzM0OywgdHJ1ZSAgfSwKJiM0MzsJeyAmIzM0OyYjMzQ7LAkJCSYjMzQ7Zm9vJiMzNDssICYjMzQ7YnV6JiMzNDssIHRydWUgIH0sCiYjNDM7CXsgJiMzNDsmIzM0OywJCQkmIzM0O2JhciYjMzQ7LCAmIzM0O2ZvbyYjMzQ7LCB0cnVlICB9LAomIzQzOwl7ICYjMzQ7JiMzNDssCQkJJiMzNDtiYXImIzM0OywgJiMzNDtiYXImIzM0OywgdHJ1ZSAgfSwKJiM0MzsJeyAmIzM0OyYjMzQ7LAkJCSYjMzQ7YmFyJiMzNDssICYjMzQ7YnV6JiMzNDssIHRydWUgIH0sCiYjNDM7CS8qIGRlbnkgZmlsdGVycyAqLwomIzQzOwl7ICYjMzQ7LWYgJiMzOTshKmZvbyomIzM5OyYjMzQ7LAkmIzM0O2ZvbyYjMzQ7LCAmIzM0O2JhciYjMzQ7LCBmYWxzZSB9LAomIzQzOwl7ICYjMzQ7LWYgJiMzOTshKmZvbyomIzM5OyYjMzQ7LAkmIzM0O2JhciYjMzQ7LCAmIzM0O2ZvbyYjMzQ7LCBmYWxzZSB9LAomIzQzOwl7ICYjMzQ7LWYgJiMzOTshKmZvbyomIzM5OyYjMzQ7LAkmIzM0O2JhciYjMzQ7LCAmIzM0O2JhciYjMzQ7LCB0cnVlICB9LAomIzQzOwl7ICYjMzQ7LWYgJiMzOTshKmZvbyovYmFyJiMzOTsmIzM0OywJJiMzNDtmb28mIzM0OywgJiMzNDtiYXImIzM0OywgZmFsc2UgfSwKJiM0MzsJeyAmIzM0Oy1mICYjMzk7ISpmb28qL2JhciYjMzk7JiMzNDssCSYjMzQ7Zm9vJiMzNDssICYjMzQ7YnV6JiMzNDssIHRydWUgIH0sCiYjNDM7CXsgJiMzNDstZiAmIzM5OyEqZm9vKi9iYXImIzM5OyYjMzQ7LAkmIzM0O2JhciYjMzQ7LCAmIzM0O2JhciYjMzQ7LCB0cnVlICB9LAomIzQzOwl7ICYjMzQ7LWYgJiMzOTshKmZvbyovJiMzOTsmIzM0OywJJiMzNDtmb28mIzM0OywgJiMzNDtiYXImIzM0OywgZmFsc2UgfSwKJiM0MzsJeyAmIzM0Oy1mICYjMzk7ISpmb28qLyYjMzk7JiMzNDssCSYjMzQ7YmFyJiMzNDssICYjMzQ7YmFyJiMzNDssIHRydWUgIH0sCiYjNDM7CXsgJiMzNDstZiAmIzM5OyEvYmFyJiMzOTsmIzM0OywJCSYjMzQ7Zm9vJiMzNDssICYjMzQ7YmFyJiMzNDssIGZhbHNlIH0sCiYjNDM7CXsgJiMzNDstZiAmIzM5OyEvYmFyJiMzOTsmIzM0OywJCSYjMzQ7Zm9vJiMzNDssICYjMzQ7Zm9vJiMzNDssIHRydWUgIH0sCiYjNDM7CXsgJiMzNDstZiAmIzM5OyEvJiMzOTsmIzM0OywJCSYjMzQ7Zm9vJiMzNDssICYjMzQ7YmFyJiMzNDssIC0xICAgIH0sCiYjNDM7CXsgJiMzNDstZiAmIzM5OyEmIzM5OyYjMzQ7LAkJJiMzNDtmb28mIzM0OywgJiMzNDtiYXImIzM0OywgLTEgICAgfSwKJiM0MzsJLyogYWxsb3cgZmlsdGVycyAqLwomIzQzOwl7ICYjMzQ7LWYgJiMzOTsqZm9vKiYjMzk7JiMzNDssCQkmIzM0O2ZvbyYjMzQ7LCAmIzM0O2JhciYjMzQ7LCB0cnVlICB9LAomIzQzOwl7ICYjMzQ7LWYgJiMzOTsqZm9vKiYjMzk7JiMzNDssCQkmIzM0O2JhciYjMzQ7LCAmIzM0O2ZvbyYjMzQ7LCB0cnVlICB9LAomIzQzOwl7ICYjMzQ7LWYgJiMzOTsqZm9vKiYjMzk7JiMzNDssCQkmIzM0O2JhciYjMzQ7LCAmIzM0O2JhciYjMzQ7LCBmYWxzZSB9LAomIzQzOwl7ICYjMzQ7LWYgJiMzOTsqZm9vKi9iYXImIzM5OyYjMzQ7LAkmIzM0O2ZvbyYjMzQ7LCAmIzM0O2JhciYjMzQ7LCB0cnVlICB9LAomIzQzOwl7ICYjMzQ7LWYgJiMzOTsqZm9vKi9iYXImIzM5OyYjMzQ7LAkmIzM0O2ZvbyYjMzQ7LCAmIzM0O2J1eiYjMzQ7LCBmYWxzZSB9LAomIzQzOwl7ICYjMzQ7LWYgJiMzOTsqZm9vKi9iYXImIzM5OyYjMzQ7LAkmIzM0O2JhciYjMzQ7LCAmIzM0O2JhciYjMzQ7LCBmYWxzZSB9LAomIzQzOwl7ICYjMzQ7LWYgJiMzOTsqZm9vKi8mIzM5OyYjMzQ7LAkmIzM0O2ZvbyYjMzQ7LCAmIzM0O2JhciYjMzQ7LCB0cnVlICB9LAomIzQzOwl7ICYjMzQ7LWYgJiMzOTsqZm9vKi8mIzM5OyYjMzQ7LAkmIzM0O2JhciYjMzQ7LCAmIzM0O2JhciYjMzQ7LCBmYWxzZSB9LAomIzQzOwl7ICYjMzQ7LWYgJiMzOTsvYmFyJiMzOTsmIzM0OywJCSYjMzQ7Zm9vJiMzNDssICYjMzQ7YmFyJiMzNDssIHRydWUgIH0sCiYjNDM7CXsgJiMzNDstZiAmIzM5Oy9iYXImIzM5OyYjMzQ7LAkJJiMzNDtmb28mIzM0OywgJiMzNDtmb28mIzM0OywgZmFsc2UgfSwKJiM0MzsJeyAmIzM0Oy1mICYjMzk7LyYjMzk7JiMzNDssCQkmIzM0O2ZvbyYjMzQ7LCAmIzM0O2JhciYjMzQ7LCAtMSAgICB9LAomIzQzOwl7ICYjMzQ7LWYgJiMzOTsmIzM5OyYjMzQ7LAkJJiMzNDtmb28mIzM0OywgJiMzNDtiYXImIzM0OywgLTEgICAgfSwKJiM0MzsJLyogYWxsb3cgYW5kIGRlbnkgZmlsdGVycyBjb21iaW5lZCAqLwomIzQzOwl7ICYjMzQ7LWYgJiMzOTsqZm9vKi8mIzM5OyAtZiAmIzM5OyEvYmFyJiMzOTsmIzM0OywgJiMzNDtmb28mIzM0OywgJiMzNDtmb28mIzM0OywgdHJ1ZSAgfSwKJiM0MzsJeyAmIzM0Oy1mICYjMzk7KmZvbyovJiMzOTsgLWYgJiMzOTshL2JhciYjMzk7JiMzNDssICYjMzQ7Zm9vJiMzNDssICYjMzQ7YmFyJiMzNDssIGZhbHNlIH0sCiYjNDM7CXsgJiMzNDstZiAmIzM5Oypmb28qLyYjMzk7IC1mICYjMzk7IS9iYXImIzM5OyYjMzQ7LCAmIzM0O2JhciYjMzQ7LCAmIzM0O2ZvbyYjMzQ7LCBmYWxzZSB9LAomIzQzO307CiYjNDM7CiYjNDM7c3RhdGljIHZvaWQgdGVzdF9uYW1lX2ZpbHRlcnModm9pZCkKJiM0Mzt7CiYjNDM7CXN0cnVjdCBmaXh0dXJlICpmaXggPSBpbml0X2ZpeHR1cmUoKTsKJiM0MzsJY29uc3Qgc3RydWN0IG5hbWVfZmlsdGVyX2Nhc2UgKnQ7CiYjNDM7CWNoYXIgY21kWzUxMl0sIHJvd1s2NF0sIG5hbWVbMTI4XTsKJiM0MzsJaW50IGksIGVycjsKJiM0MzsKJiM0MzsJZm9yIChpID0gMDsgaSAmbHQ7IEFSUkFZX1NJWkUobmFtZV9maWx0ZXJfY2FzZXMpOyBpJiM0MzsmIzQzOykgewomIzQzOwkJdCA9ICZhbXA7bmFtZV9maWx0ZXJfY2FzZXNbaV07CiYjNDM7CQkvKiBzdGRlcnIgaXMgbWVyZ2VkIHdpdGggc3Rkb3V0IGluIG9yZGVyIHRvIGNhdGNoIGVycm9yIG1lc3NhZ2VzICovCiYjNDM7CQlzbnByaW50ZihjbWQsIHNpemVvZihjbWQpLCAmIzM0OyVzICYjMzQ7IEZJTFRFUl9PQkpTICYjMzQ7IC1xIC1vIGNzdiAtZSBmaWxlLHByb2cgJXMgJmd0OyAlcyAyJmd0OyZhbXA7MSYjMzQ7LAomIzQzOwkJCSBmaXgtJmd0O3ZlcmlzdGF0LCB0LSZndDtmaWx0ZXJzLCBmaXgtJmd0O3RtcGZpbGUpOwomIzQzOwkJZXJyID0gc3lzdGVtKGNtZCk7CiYjNDM7CQlyZWFkX291dHB1dChmaXgpOwomIzQzOwomIzQzOwkJc25wcmludGYocm93LCBzaXplb2Yocm93KSwgJiMzNDt2ZXJpc3RhdF8lcy5icGYubywlcyYjMzQ7LCB0LSZndDtmaWxlLCB0LSZndDtwcm9nKTsKJiM0MzsJCXNucHJpbnRmKG5hbWUsIHNpemVvZihuYW1lKSwgJiMzNDt2ZXJpc3RhdCAlczogJXMmIzM0OywgdC0mZ3Q7ZmlsdGVycywgcm93KTsKJiM0MzsJCXN3aXRjaCAodC0mZ3Q7aW5jbHVkZWQpIHsKJiM0MzsJCWNhc2UgdHJ1ZToKJiM0MzsJCQlBU1NFUlRfT0soZXJyLCBuYW1lKTsKJiM0MzsJCQlBU1NFUlRfSEFTX1NVQlNUUihmaXgtJmd0O291dHB1dCwgcm93LCBuYW1lKTsKJiM0MzsJCQlicmVhazsKJiM0MzsJCWNhc2UgZmFsc2U6CiYjNDM7CQkJQVNTRVJUX09LKGVyciwgbmFtZSk7CiYjNDM7CQkJQVNTRVJUX0ZBTFNFKCEhc3Ryc3RyKGZpeC0mZ3Q7b3V0cHV0LCByb3cpLCBuYW1lKTsKJiM0MzsJCQlicmVhazsKJiM0MzsJCWNhc2UgLTE6CiYjNDM7CQkJQVNTRVJUX05FUShlcnIsIDAsIG5hbWUpOwomIzQzOwkJCUFTU0VSVF9IQVNfU1VCU1RSKGZpeC0mZ3Q7b3V0cHV0LCAmIzM0O0ludmFsaWQgZmlsdGVyJiMzNDssIG5hbWUpOwomIzQzOwkJCWJyZWFrOwomIzQzOwkJfQomIzQzOwl9CiYjNDM7CiYjNDM7CXRlYXJkb3duX2ZpeHR1cmUoZml4KTsKJiM0Mzt9CiYjNDM7CiB2b2lkIHRlc3RfdmVyaXN0YXQodm9pZCkKIHsKIAlpZiAodGVzdF9fc3RhcnRfc3VidGVzdCgmIzM0O3NldF9nbG9iYWxfdmFyc19zdWNjZWVkcyYjMzQ7KSkKQEAgLTI1Niw2ICYjNDM7MzU1LDggQEAgdm9pZCB0ZXN0X3ZlcmlzdGF0KHZvaWQpCiAJaWYgKHRlc3RfX3N0YXJ0X3N1YnRlc3QoJiMzNDt0ZXN0X25vX2FycmF5X2luZGV4X2Zvcl9hcnJheSYjMzQ7KSkKIAkJdGVzdF9ub19hcnJheV9pbmRleF9mb3JfYXJyYXkoKTsKIAomIzQzOwlpZiAodGVzdF9fc3RhcnRfc3VidGVzdCgmIzM0O25hbWVfZmlsdGVycyYjMzQ7KSkKJiM0MzsJCXRlc3RfbmFtZV9maWx0ZXJzKCk7CiB9CiAKICN1bmRlZiBfX0NIRUNLX1NUUgpkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlzdGF0X2Jhci5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlzdGF0X2Jhci5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAuLjgzZDJhMmExZGZjOTYKLS0tIC9kZXYvbnVsbAomIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaXN0YXRfYmFyLmMKQEAgLTAsMCAmIzQzOzEsMyBAQAomIzQzOy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wCiYjNDM7LyogQ29weXJpZ2h0IChjKSAyMDI2IE1ldGEgUGxhdGZvcm1zLCBJbmMuIGFuZCBhZmZpbGlhdGVzLiAqLwomIzQzOyNpbmNsdWRlICYjMzQ7dmVyaXN0YXRfZm9vLmMmIzM0OwpkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlzdGF0X2Zvby5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlzdGF0X2Zvby5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAuLmJkMjRiOTc2NjRiNDkKLS0tIC9kZXYvbnVsbAomIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaXN0YXRfZm9vLmMKQEAgLTAsMCAmIzQzOzEsMzEgQEAKJiM0MzsvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMAomIzQzOy8qIENvcHlyaWdodCAoYykgMjAyNiBNZXRhIFBsYXRmb3JtcywgSW5jLiBhbmQgYWZmaWxpYXRlcy4gKi8KJiM0MzsjaW5jbHVkZSAmbHQ7bGludXgvYnBmLmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O2JwZi9icGZfaGVscGVycy5oJmd0OwomIzQzOwomIzQzOy8qCiYjNDM7ICogUHJvZ3JhbXMgYmVsb3cgZXhpc3Qgb25seSB0byBleGVyY2lzZSB2ZXJpc3RhdCYjMzk7cyAtZiBuYW1lIGZpbHRlcnMsCiYjNDM7ICogdGhlaXIgYm9kaWVzIGFyZSBpcnJlbGV2YW50LCBvbmx5IHRoZSBuYW1lcyBtYXR0ZXIuCiYjNDM7ICogVGhpcyBmaWxlIGlzIGFsc28gaW5jbHVkZWQgYnkgdmVyaXN0YXRfYmFyLmMsIHNvIHRoYXQgdGhlIHNhbWUgc2V0IG9mCiYjNDM7ICogcHJvZ3JhbSBuYW1lcyBpcyBhdmFpbGFibGUgaW4gdHdvIGRpZmZlcmVudGx5IG5hbWVkIG9iamVjdCBmaWxlcy4KJiM0MzsgKi8KJiM0MzsKJiM0MztTRUMoJiMzNDtzb2NrZXQmIzM0OykKJiM0MztpbnQgZm9vKHZvaWQgKmN0eCkKJiM0Mzt7CiYjNDM7CXJldHVybiAwOwomIzQzO30KJiM0MzsKJiM0MztTRUMoJiMzNDtzb2NrZXQmIzM0OykKJiM0MztpbnQgYmFyKHZvaWQgKmN0eCkKJiM0Mzt7CiYjNDM7CXJldHVybiAwOwomIzQzO30KJiM0MzsKJiM0MztTRUMoJiMzNDtzb2NrZXQmIzM0OykKJiM0MztpbnQgYnV6KHZvaWQgKmN0eCkKJiM0Mzt7CiYjNDM7CXJldHVybiAwOwomIzQzO30KJiM0MzsKJiM0MztjaGFyIF9saWNlbnNlW10gU0VDKCYjMzQ7bGljZW5zZSYjMzQ7KSA9ICYjMzQ7R1BMJiMzNDs7CmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdmVyaXN0YXQuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi92ZXJpc3RhdC5jCmluZGV4IGM5YzI1Nzc4NGVlM2QuLjZhYWEwNjc5MGRhYTIgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi92ZXJpc3RhdC5jCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi92ZXJpc3RhdC5jCkBAIC01MTQsNiAmIzQzOzUxNCw0MCBAQCBzdGF0aWMgYm9vbCBpc19icGZfb2JqX2ZpbGUoY29uc3QgY2hhciAqcGF0aCkgewogCXJldHVybiBlcnIgPT0gMDsKIH0KIAomIzQzOy8qIEV4YWN0IGZpbHRlciBtYXRjaCAqLwomIzQzO3N0YXRpYyBib29sIG5hbWVfZmlsdGVyX21hdGNoZXMoc3RydWN0IGZpbHRlciAqZiwgY29uc3QgY2hhciAqZmlsZW5hbWUsIGNvbnN0IGNoYXIgKnByb2dfbmFtZSkKJiM0Mzt7CiYjNDM7CWlmIChmLSZndDthbnlfZ2xvYikKJiM0MzsJCXJldHVybiBnbG9iX21hdGNoZXMoZmlsZW5hbWUsIGYtJmd0O2FueV9nbG9iKSB8fAomIzQzOwkJICAgICAgIChwcm9nX25hbWUgJmFtcDsmYW1wOyBnbG9iX21hdGNoZXMocHJvZ19uYW1lLCBmLSZndDthbnlfZ2xvYikpOwomIzQzOwlpZiAoZi0mZ3Q7ZmlsZV9nbG9iICZhbXA7JmFtcDsgZi0mZ3Q7cHJvZ19nbG9iKQomIzQzOwkJcmV0dXJuIHByb2dfbmFtZSAmYW1wOyZhbXA7CiYjNDM7CQkgICAgICAgZ2xvYl9tYXRjaGVzKGZpbGVuYW1lLCBmLSZndDtmaWxlX2dsb2IpICZhbXA7JmFtcDsKJiM0MzsJCSAgICAgICBnbG9iX21hdGNoZXMocHJvZ19uYW1lLCBmLSZndDtwcm9nX2dsb2IpOwomIzQzOwlpZiAoZi0mZ3Q7ZmlsZV9nbG9iKQomIzQzOwkJcmV0dXJuIGdsb2JfbWF0Y2hlcyhmaWxlbmFtZSwgZi0mZ3Q7ZmlsZV9nbG9iKTsKJiM0MzsJaWYgKGYtJmd0O3Byb2dfZ2xvYikKJiM0MzsJCXJldHVybiBwcm9nX25hbWUgJmFtcDsmYW1wOyBnbG9iX21hdGNoZXMocHJvZ19uYW1lLCBmLSZndDtwcm9nX2dsb2IpOwomIzQzOwlyZXR1cm4gZmFsc2U7CiYjNDM7fQomIzQzOwomIzQzOy8qIENoZWNrIGlmIHRoZSBmaWx0ZXIgZG9lcyBub3Qgb3V0cmlnaHQgcmVqZWN0IHRoZSBmaWxlIG5hbWUgKi8KJiM0MztzdGF0aWMgYm9vbCBuYW1lX2ZpbHRlcl9tYXlfbWF0Y2goc3RydWN0IGZpbHRlciAqZiwgY29uc3QgY2hhciAqZmlsZW5hbWUpCiYjNDM7ewomIzQzOwlpZiAoZi0mZ3Q7ZmlsZV9nbG9iKQomIzQzOwkJcmV0dXJuIGdsb2JfbWF0Y2hlcyhmaWxlbmFtZSwgZi0mZ3Q7ZmlsZV9nbG9iKTsKJiM0MzsJLyoKJiM0MzsJICogSWYgd2UgZG9uJiMzOTt0IGtub3cgcHJvZ3JhbSBuYW1lIHlldCwgYW55X2dsb2IgZmlsdGVyCiYjNDM7CSAqIGhhcyB0byBhc3N1bWUgdGhhdCBjdXJyZW50IEJQRiBvYmplY3QgZmlsZSBtaWdodCBiZQomIzQzOwkgKiByZWxldmFudDsgd2UmIzM5O2xsIGNoZWNrIGFnYWluIGxhdGVyIG9uIGFmdGVyIG9wZW5pbmcKJiM0MzsJICogQlBGIG9iamVjdCBmaWxlLCBhdCB3aGljaCBwb2ludCBwcm9ncmFtIG5hbWUgd2lsbAomIzQzOwkgKiBiZSBrbm93biBmaW5hbGx5LgomIzQzOwkgKi8KJiM0MzsJaWYgKGYtJmd0O2FueV9nbG9iIHx8IGYtJmd0O3Byb2dfZ2xvYikKJiM0MzsJCXJldHVybiB0cnVlOwomIzQzOwlyZXR1cm4gZmFsc2U7CiYjNDM7fQomIzQzOwogc3RhdGljIGJvb2wgc2hvdWxkX3Byb2Nlc3NfZmlsZV9wcm9nKGNvbnN0IGNoYXIgKmZpbGVuYW1lLCBjb25zdCBjaGFyICpwcm9nX25hbWUpCiB7CiAJc3RydWN0IGZpbHRlciAqZjsKQEAgLTUyMSwxNiAmIzQzOzU1NSw3IEBAIHN0YXRpYyBib29sIHNob3VsZF9wcm9jZXNzX2ZpbGVfcHJvZyhjb25zdCBjaGFyICpmaWxlbmFtZSwgY29uc3QgY2hhciAqcHJvZ19uYW1lCiAKIAlmb3IgKGkgPSAwOyBpICZsdDsgZW52LmRlbnlfZmlsdGVyX2NudDsgaSYjNDM7JiM0MzspIHsKIAkJZiA9ICZhbXA7ZW52LmRlbnlfZmlsdGVyc1tpXTsKLQkJaWYgKGYtJmd0O2tpbmQgIT0gRklMVEVSX05BTUUpCi0JCQljb250aW51ZTsKLQotCQlpZiAoZi0mZ3Q7YW55X2dsb2IgJmFtcDsmYW1wOyBnbG9iX21hdGNoZXMoZmlsZW5hbWUsIGYtJmd0O2FueV9nbG9iKSkKLQkJCXJldHVybiBmYWxzZTsKLQkJaWYgKGYtJmd0O2FueV9nbG9iICZhbXA7JmFtcDsgcHJvZ19uYW1lICZhbXA7JmFtcDsgZ2xvYl9tYXRjaGVzKHByb2dfbmFtZSwgZi0mZ3Q7YW55X2dsb2IpKQotCQkJcmV0dXJuIGZhbHNlOwotCQlpZiAoZi0mZ3Q7ZmlsZV9nbG9iICZhbXA7JmFtcDsgZ2xvYl9tYXRjaGVzKGZpbGVuYW1lLCBmLSZndDtmaWxlX2dsb2IpKQotCQkJcmV0dXJuIGZhbHNlOwotCQlpZiAoZi0mZ3Q7cHJvZ19nbG9iICZhbXA7JmFtcDsgcHJvZ19uYW1lICZhbXA7JmFtcDsgZ2xvYl9tYXRjaGVzKHByb2dfbmFtZSwgZi0mZ3Q7cHJvZ19nbG9iKSkKJiM0MzsJCWlmIChmLSZndDtraW5kID09IEZJTFRFUl9OQU1FICZhbXA7JmFtcDsgbmFtZV9maWx0ZXJfbWF0Y2hlcyhmLCBmaWxlbmFtZSwgcHJvZ19uYW1lKSkKIAkJCXJldHVybiBmYWxzZTsKIAl9CiAKQEAgLTU0MCwyNCAmIzQzOzU2NSwxNSBAQCBzdGF0aWMgYm9vbCBzaG91bGRfcHJvY2Vzc19maWxlX3Byb2coY29uc3QgY2hhciAqZmlsZW5hbWUsIGNvbnN0IGNoYXIgKnByb2dfbmFtZQogCQkJY29udGludWU7CiAKIAkJYWxsb3dfY250JiM0MzsmIzQzOzsKLQkJaWYgKGYtJmd0O2FueV9nbG9iKSB7Ci0JCQlpZiAoZ2xvYl9tYXRjaGVzKGZpbGVuYW1lLCBmLSZndDthbnlfZ2xvYikpCi0JCQkJcmV0dXJuIHRydWU7Ci0JCQkvKiBJZiB3ZSBkb24mIzM5O3Qga25vdyBwcm9ncmFtIG5hbWUgeWV0LCBhbnlfZ2xvYiBmaWx0ZXIKLQkJCSAqIGhhcyB0byBhc3N1bWUgdGhhdCBjdXJyZW50IEJQRiBvYmplY3QgZmlsZSBtaWdodCBiZQotCQkJICogcmVsZXZhbnQ7IHdlJiMzOTtsbCBjaGVjayBhZ2FpbiBsYXRlciBvbiBhZnRlciBvcGVuaW5nCi0JCQkgKiBCUEYgb2JqZWN0IGZpbGUsIGF0IHdoaWNoIHBvaW50IHByb2dyYW0gbmFtZSB3aWxsCi0JCQkgKiBiZSBrbm93biBmaW5hbGx5LgotCQkJICovCi0JCQlpZiAoIXByb2dfbmFtZSB8fCBnbG9iX21hdGNoZXMocHJvZ19uYW1lLCBmLSZndDthbnlfZ2xvYikpCi0JCQkJcmV0dXJuIHRydWU7Ci0JCX0gZWxzZSB7Ci0JCQlpZiAoZi0mZ3Q7ZmlsZV9nbG9iICZhbXA7JmFtcDsgIWdsb2JfbWF0Y2hlcyhmaWxlbmFtZSwgZi0mZ3Q7ZmlsZV9nbG9iKSkKLQkJCQljb250aW51ZTsKLQkJCWlmIChmLSZndDtwcm9nX2dsb2IgJmFtcDsmYW1wOyBwcm9nX25hbWUgJmFtcDsmYW1wOyAhZ2xvYl9tYXRjaGVzKHByb2dfbmFtZSwgZi0mZ3Q7cHJvZ19nbG9iKSkKLQkJCQljb250aW51ZTsKJiM0MzsJCWlmIChwcm9nX25hbWUgJmFtcDsmYW1wOyBuYW1lX2ZpbHRlcl9tYXRjaGVzKGYsIGZpbGVuYW1lLCBwcm9nX25hbWUpKQomIzQzOwkJCXJldHVybiB0cnVlOwomIzQzOwkJLyoKJiM0MzsJCSAqIElmIHRoZXJlIGlzIG5vIHByb2dfbmFtZSBhbmQgdGhlIGZpbGUgbmFtZSBpcyBub3QgYmxvY2tlZCBieQomIzQzOwkJICogdGhlIGZpbHRlciwgYWxsb3cgdG8gb3BlbiB0aGUgZmlsZS4gQWZ0ZXJ3YXJkcyB0aGVyZSB3b3VsZCBiZQomIzQzOwkJICogYSBzZWNvbmQgcmVmaW5pbmcgcXVlcnkgd2l0aCBwcm9nX25hbWUgc2V0LgomIzQzOwkJICovCiYjNDM7CQlpZiAoIXByb2dfbmFtZSAmYW1wOyZhbXA7IG5hbWVfZmlsdGVyX21heV9tYXRjaChmLCBmaWxlbmFtZSkpCiAJCQlyZXR1cm4gdHJ1ZTsKLQkJfQogCX0KIAogCS8qIGlmIHRoZXJlIGFyZSBubyBmaWxlL3Byb2cgbmFtZSBhbGxvdyBmaWx0ZXJzLCBhbGxvdyBhbGwgcHJvZ3MsCkBAIC03MDMsNiAmIzQzOzcxOSwxMiBAQCBzdGF0aWMgaW50IGFwcGVuZF9maWx0ZXIoc3RydWN0IGZpbHRlciAqKmZpbHRlcnMsIGludCAqY250LCBjb25zdCBjaGFyICpzdHIpCiAJCX0KIAl9CiAKJiM0MzsJaWYgKCghZi0mZ3Q7YW55X2dsb2IgJmFtcDsmYW1wOyAhZi0mZ3Q7ZmlsZV9nbG9iICZhbXA7JmFtcDsgIWYtJmd0O3Byb2dfZ2xvYikgfHwKJiM0MzsJICAgIChmLSZndDthbnlfZ2xvYiAmYW1wOyZhbXA7IHN0cmNtcChmLSZndDthbnlfZ2xvYiwgJiMzNDsmIzM0OykgPT0gMCkpIHsKJiM0MzsJCWZwcmludGYoc3RkZXJyLCAmIzM0O0ludmFsaWQgZmlsdGVyOiAmIzM5OyVzJiMzOTtcbiYjMzQ7LCBzdHIpOwomIzQzOwkJcmV0dXJuIC1FSU5WQUw7CiYjNDM7CX0KJiM0MzsKIAkqY250ICYjNDM7PSAxOwogCXJldHVybiAwOwogfQo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAwNjowOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2NTI4CgkJCQkJCQlvdXRwdXQ6IDYzCgkJCQkJCQl0aG91Z2h0czogMzQ1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZ1enppbmcgRGVjaXNpb24gZm9yIFRoaXMgUGF0Y2ggU2VyaWVzKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIE15IGluaXRpYWwgYXNzZXNzbWVudCBpcyB0aGF0IHRoaXMgcGF0Y2ggc2VyaWVzIGRvZXNuJiMzOTt0IG5lY2Vzc2l0YXRlIGZ1enppbmcuIE15IHJlYXNvbmluZyBpcyBzdHJhaWdodGZvcndhcmQ6IHRoZSBjaGFuZ2VzIGFyZSBjb250YWluZWQgd2l0aGluIHRoZSBgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2AgZGlyZWN0b3J5LiBTcGVjaWZpY2FsbHksIGl0IHRvdWNoZXMgYHRlc3RfdmVyaXN0YXQuY2AsIGB2ZXJpc3RhdF9iYXIuY2AsIGB2ZXJpc3RhdF9mb28uY2AsIGFuZCBgdmVyaXN0YXQuY2AuIEFsbCBpbmRpY2F0aW9ucyBhcmUgdGhhdCB0aGVzZSBhcmUgKnB1cmVseSogc2VsZnRlc3RzIGFuZCB0aGUgYHZlcmlzdGF0YCB0b29sIGl0c2VsZi4gVGhlcmUmIzM5O3Mgbm90aGluZyBoZXJlIHRoYXQgaW1wYWN0cyB0aGUgY29yZSBrZXJuZWwsIGFueSBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmUtc3BlY2lmaWMgY29kZS4gVGhlcmVmb3JlLCBmcm9tIGEgZnVuY3Rpb25hbCBwZXJzcGVjdGl2ZSwgdGhlcmUmIzM5O3Mgbm90aGluZyB0byBmdXp6LgoKSnVzdCB0byBiZSBhYnNvbHV0ZWx5IGNlcnRhaW4sIEkmIzM5O2xsIHF1aWNrbHkgcmUtY29uZmlybSB0aGUgZmlsZSBsaXN0OiBgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvdGVzdF92ZXJpc3RhdC5jYCwgYHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpc3RhdF9iYXIuY2AsIGB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaXN0YXRfZm9vLmNgLCBhbmQgYHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi92ZXJpc3RhdC5jYC4gWWVwLCBhbGwgaW4gdGhlIHRlc3Qgc3VpdGUgYW5kIHVzZXItc3BhY2UgdG9vbGluZy4gTm8ga2VybmVsIGNvZGUgaXMgYmVpbmcgbW9kaWZpZWQgaGVyZS4gSSYjMzk7bSBjb25maWRlbnQgaW4gY2FsbGluZyB0aGlzIGBXb3J0aEZ1enppbmc9ZmFsc2VgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDA2OjA5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggb25seSBtb2RpZmllcyB1c2VyLXNwYWNlIEJQRiBzZWxmdGVzdHMgYW5kIHRoZSB2ZXJpc3RhdCB0b29sLiBJdCBkb2VzIG5vdCBtYWtlIGFueSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCBjb2RlIGl0c2VsZi4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgdXNlci1zcGFjZSBCUEYgc2VsZnRlc3RzIGFuZCB0aGUgdmVyaXN0YXQgdG9vbC4gSXQgZG9lcyBub3QgbWFrZSBhbnkgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgY29kZSBpdHNlbGYuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDA2OjA5PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0xMlQwNjowOToyNS4zODM3ODg3MTVaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2ODUxMjU3NjYyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggb25seSBtb2RpZmllcyB1c2VyLXNwYWNlIEJQRiBzZWxmdGVzdHMgYW5kIHRoZSB2ZXJpc3RhdCB0b29sLiBJdCBkb2VzIG5vdCBtYWtlIGFueSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCBjb2RlIGl0c2VsZi5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDA2OjA5OjI1LjM4MzgxMDEwNVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTUzOTMxODAzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgNTcxNDYyMmExMGE5MjU4YTUwYzRkNWJkZDJjNTkyMDQ1YmFkZDg4NFxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgV2VkIEF1ZyAxMiAwNjowOToyNCAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy90ZXN0X3ZlcmlzdGF0LmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy90ZXN0X3ZlcmlzdGF0LmNcXG5pbmRleCA5YWZmMDhhYzU1YzA3Li4xMWYzZGUyYjY2YWQxIDEwMDY0NFxcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3Rlc3RfdmVyaXN0YXQuY1xcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3Rlc3RfdmVyaXN0YXQuY1xcbkBAIC0zNyw2ICszNywxNCBAQCBzdGF0aWMgc3RydWN0IGZpeHR1cmUgKmluaXRfZml4dHVyZSh2b2lkKVxcbiBcXHRyZXR1cm4gZml4O1xcbiB9XFxuIFxcbitzdGF0aWMgdm9pZCByZWFkX291dHB1dChzdHJ1Y3QgZml4dHVyZSAqZml4KVxcbit7XFxuK1xcdHNzaXplX3QgbGVuID0gcHJlYWQoZml4LVxcdTAwM2VmZCwgZml4LVxcdTAwM2VvdXRwdXQsIGZpeC1cXHUwMDNlc3ogLSAxLCAwKTtcXG4rXFxuK1xcdGZpeC1cXHUwMDNlb3V0cHV0W2xlbiBcXHUwMDNjIDAgPyAwIDogbGVuXSA9IDA7XFxuK1xcdEFTU0VSVF9HRShsZW4sIDAsIFxcXCJwcmVhZFxcXCIpO1xcbit9XFxuK1xcbiBzdGF0aWMgdm9pZCB0ZWFyZG93bl9maXh0dXJlKHN0cnVjdCBmaXh0dXJlICpmaXgpXFxuIHtcXG4gXFx0ZnJlZShmaXgtXFx1MDAzZW91dHB1dCk7XFxuQEAgLTc0LDcgKzgyLDcgQEAgc3RhdGljIHZvaWQgdGVzdF9zZXRfZ2xvYmFsX3ZhcnNfc3VjY2VlZHModm9pZClcXG4gXFx0ICAgIFxcXCIgLUcgXFxcXFxcXCJzdHJ1Y3QxMSBbIDcgXSBbIDUgXSAuc3RydWN0MlswXVsxXS51Lm1hdFszXVswXSA9IDE3NVxcXFxcXFwiIFxcXCIgXFxcXFxcbiBcXHQgICAgXFxcIiAtdmwyIFxcdTAwM2UgJXNcXFwiLCBmaXgtXFx1MDAzZXZlcmlzdGF0LCBmaXgtXFx1MDAzZXRtcGZpbGUpO1xcbiBcXG4tXFx0cmVhZChmaXgtXFx1MDAzZWZkLCBmaXgtXFx1MDAzZW91dHB1dCwgZml4LVxcdTAwM2Vzeik7XFxuK1xcdHJlYWRfb3V0cHV0KGZpeCk7XFxuIFxcdF9fQ0hFQ0tfU1RSKFxcXCI9MHhmMDAwMDAwMDAwMDAwMDAxIFxcXCIsIFxcXCJ2YXJfczY0ID0gMHhmMDAwMDAwMDAwMDAwMDAxXFxcIik7XFxuIFxcdF9fQ0hFQ0tfU1RSKFxcXCI9MHhmZWRjYmE5ODc2NTQzMjEwIFxcXCIsIFxcXCJ2YXJfdTY0ID0gMHhmZWRjYmE5ODc2NTQzMjEwXFxcIik7XFxuIFxcdF9fQ0hFQ0tfU1RSKFxcXCI9MHg4MDAwMDAwMCBcXFwiLCBcXFwidmFyX3MzMiA9IC0weDgwMDAwMDAwXFxcIik7XFxuQEAgLTExNiw3ICsxMjQsNyBAQCBzdGF0aWMgdm9pZCB0ZXN0X3NldF9nbG9iYWxfdmFyc19mcm9tX2ZpbGVfc3VjY2VlZHModm9pZClcXG4gXFx0c3luY2ZzKGZkKTtcXG4gXFx0U1lTKG91dCwgXFxcIiVzIHNldF9nbG9iYWxfdmFycy5icGYubyAtRyBcXFxcXFxcIkAlc1xcXFxcXFwiIC12bDIgXFx1MDAzZSAlc1xcXCIsXFxuIFxcdCAgICBmaXgtXFx1MDAzZXZlcmlzdGF0LCBpbnB1dF9maWxlLCBmaXgtXFx1MDAzZXRtcGZpbGUpO1xcbi1cXHRyZWFkKGZpeC1cXHUwMDNlZmQsIGZpeC1cXHUwMDNlb3V0cHV0LCBmaXgtXFx1MDAzZXN6KTtcXG4rXFx0cmVhZF9vdXRwdXQoZml4KTtcXG4gXFx0X19DSEVDS19TVFIoXFxcIj0weDgwMDAgXFxcIiwgXFxcInZhcl9zMTYgPSAtMzI3NjhcXFwiKTtcXG4gXFx0X19DSEVDS19TVFIoXFxcIj0weGVjZWMgXFxcIiwgXFxcInZhcl91MTYgPSA2MDY1MlxcXCIpO1xcbiBcXG5AQCAtMTM0LDcgKzE0Miw3IEBAIHN0YXRpYyB2b2lkIHRlc3Rfc2V0X2dsb2JhbF92YXJzX291dF9vZl9yYW5nZSh2b2lkKVxcbiBcXHRcXHQgXFxcIiVzIHNldF9nbG9iYWxfdmFycy5icGYubyAtRyBcXFxcXFxcInZhcl9zMzIgPSAyMTQ3NDgzNjQ4XFxcXFxcXCIgLXZsMiAyXFx1MDAzZSAlc1xcXCIsXFxuIFxcdFxcdCBmaXgtXFx1MDAzZXZlcmlzdGF0LCBmaXgtXFx1MDAzZXRtcGZpbGUpO1xcbiBcXG4tXFx0cmVhZChmaXgtXFx1MDAzZWZkLCBmaXgtXFx1MDAzZW91dHB1dCwgZml4LVxcdTAwM2Vzeik7XFxuK1xcdHJlYWRfb3V0cHV0KGZpeCk7XFxuIFxcdF9fQ0hFQ0tfU1RSKFxcXCJpcyBvdXQgb2YgcmFuZ2UgWy0yMTQ3NDgzNjQ4OyAyMTQ3NDgzNjQ3XVxcXCIsIFxcXCJvdXQgb2YgcmFuZ2VcXFwiKTtcXG4gXFxuIG91dDpcXG5AQCAtMTQ5LDcgKzE1Nyw3IEBAIHN0YXRpYyB2b2lkIHRlc3RfdW5zdXBwb3J0ZWRfcHRyX2FycmF5X3R5cGUodm9pZClcXG4gXFx0XFx0IFxcXCIlcyBzZXRfZ2xvYmFsX3ZhcnMuYnBmLm8gLUcgXFxcXFxcXCJwdHJfYXJyWzBdID0gMFxcXFxcXFwiIC12bDIgMlxcdTAwM2UgJXNcXFwiLFxcbiBcXHRcXHQgZml4LVxcdTAwM2V2ZXJpc3RhdCwgZml4LVxcdTAwM2V0bXBmaWxlKTtcXG4gXFxuLVxcdHJlYWQoZml4LVxcdTAwM2VmZCwgZml4LVxcdTAwM2VvdXRwdXQsIGZpeC1cXHUwMDNlc3opO1xcbitcXHRyZWFkX291dHB1dChmaXgpO1xcbiBcXHRfX0NIRUNLX1NUUihcXFwiQ2FuJ3Qgc2V0IHB0cl9hcnJbMF0uIE9ubHkgaW50cyBhbmQgZW51bXMgYXJlIHN1cHBvcnRlZFxcXCIsIFxcXCJwdHJfYXJyXFxcIik7XFxuIFxcbiBvdXQ6XFxuQEAgLTE2NCw3ICsxNzIsNyBAQCBzdGF0aWMgdm9pZCB0ZXN0X2FycmF5X291dF9vZl9ib3VuZHModm9pZClcXG4gXFx0XFx0IFxcXCIlcyBzZXRfZ2xvYmFsX3ZhcnMuYnBmLm8gLUcgXFxcXFxcXCJhcnJbOTldID0gMFxcXFxcXFwiIC12bDIgMlxcdTAwM2UgJXNcXFwiLFxcbiBcXHRcXHQgZml4LVxcdTAwM2V2ZXJpc3RhdCwgZml4LVxcdTAwM2V0bXBmaWxlKTtcXG4gXFxuLVxcdHJlYWQoZml4LVxcdTAwM2VmZCwgZml4LVxcdTAwM2VvdXRwdXQsIGZpeC1cXHUwMDNlc3opO1xcbitcXHRyZWFkX291dHB1dChmaXgpO1xcbiBcXHRfX0NIRUNLX1NUUihcXFwiQXJyYXkgaW5kZXggOTkgaXMgb3V0IG9mIGJvdW5kc1xcXCIsIFxcXCJhcnJbOTldXFxcIik7XFxuIFxcbiBvdXQ6XFxuQEAgLTE3OSw3ICsxODcsNyBAQCBzdGF0aWMgdm9pZCB0ZXN0X2FycmF5X2luZGV4X25vdF9mb3VuZCh2b2lkKVxcbiBcXHRcXHQgXFxcIiVzIHNldF9nbG9iYWxfdmFycy5icGYubyAtRyBcXFxcXFxcImFycltFRzJdID0gMFxcXFxcXFwiIC12bDIgMlxcdTAwM2UgJXNcXFwiLFxcbiBcXHRcXHQgZml4LVxcdTAwM2V2ZXJpc3RhdCwgZml4LVxcdTAwM2V0bXBmaWxlKTtcXG4gXFxuLVxcdHJlYWQoZml4LVxcdTAwM2VmZCwgZml4LVxcdTAwM2VvdXRwdXQsIGZpeC1cXHUwMDNlc3opO1xcbitcXHRyZWFkX291dHB1dChmaXgpO1xcbiBcXHRfX0NIRUNLX1NUUihcXFwiQ2FuJ3QgcmVzb2x2ZSBlbnVtIHZhbHVlIEVHMlxcXCIsIFxcXCJhcnJbRUcyXVxcXCIpO1xcbiBcXG4gb3V0OlxcbkBAIC0yMzAsNiArMjM4LDk3IEBAIHN0YXRpYyB2b2lkIHRlc3Rfbm9fYXJyYXlfaW5kZXhfZm9yX2FycmF5KHZvaWQpXFxuIFxcdHRlYXJkb3duX2ZpeHR1cmUoZml4KTtcXG4gfVxcbiBcXG4rLypcXG4rICogTmFtZSBmaWx0ZXIgdGVzdHMgYmVsb3cgcnVuIHZlcmlzdGF0IG9uIHZlcmlzdGF0X2Zvby5icGYubyBhbmRcXG4rICogdmVyaXN0YXRfYmFyLmJwZi5vLCBib3RoIGRlZmluaW5nIHByb2dyYW1zICdmb28nLCAnYmFyJyBhbmQgJ2J1eicuXFxuKyAqIEV2ZXJ5IGVudHJ5IGRlc2NyaWJlcyBhIHNpbmdsZSAoZmlsdGVycywgZmlsZSwgcHJvZykgY29tYmluYXRpb24gYW5kXFxuKyAqIHRlbGxzIHdoZXRoZXIgdGhhdCBwcm9ncmFtIGlzIGV4cGVjdGVkIGluIHRoZSB2ZXJpc3RhdCBvdXRwdXQ6XFxuKyAqICd0cnVlJyBpZiBpdCBpcywgJ2ZhbHNlJyBpZiBpdCBpcyBub3QgYW5kIC0xIGlmIHZlcmlzdGF0IGlzIGV4cGVjdGVkXFxuKyAqIHRvIHJlamVjdCB0aGUgZmlsdGVyLlxcbisgKi9cXG4rI2RlZmluZSBGSUxURVJfT0JKUyBcXFwidmVyaXN0YXRfZm9vLmJwZi5vIHZlcmlzdGF0X2Jhci5icGYub1xcXCJcXG4rXFxuK3N0YXRpYyBjb25zdCBzdHJ1Y3QgbmFtZV9maWx0ZXJfY2FzZSB7XFxuK1xcdGNvbnN0IGNoYXIgKmZpbHRlcnM7XFxuK1xcdGNvbnN0IGNoYXIgKmZpbGU7XFxuK1xcdGNvbnN0IGNoYXIgKnByb2c7XFxuK1xcdGludCBpbmNsdWRlZDtcXG4rfSBuYW1lX2ZpbHRlcl9jYXNlc1tdID0ge1xcbitcXHQvKiBubyBmaWx0ZXJzLCBldmVyeSBwcm9ncmFtIGlzIHByb2Nlc3NlZCAqL1xcbitcXHR7IFxcXCJcXFwiLFxcdFxcdFxcdFxcXCJmb29cXFwiLCBcXFwiZm9vXFxcIiwgdHJ1ZSAgfSxcXG4rXFx0eyBcXFwiXFxcIixcXHRcXHRcXHRcXFwiZm9vXFxcIiwgXFxcImJhclxcXCIsIHRydWUgIH0sXFxuK1xcdHsgXFxcIlxcXCIsXFx0XFx0XFx0XFxcImZvb1xcXCIsIFxcXCJidXpcXFwiLCB0cnVlICB9LFxcbitcXHR7IFxcXCJcXFwiLFxcdFxcdFxcdFxcXCJiYXJcXFwiLCBcXFwiZm9vXFxcIiwgdHJ1ZSAgfSxcXG4rXFx0eyBcXFwiXFxcIixcXHRcXHRcXHRcXFwiYmFyXFxcIiwgXFxcImJhclxcXCIsIHRydWUgIH0sXFxuK1xcdHsgXFxcIlxcXCIsXFx0XFx0XFx0XFxcImJhclxcXCIsIFxcXCJidXpcXFwiLCB0cnVlICB9LFxcbitcXHQvKiBkZW55IGZpbHRlcnMgKi9cXG4rXFx0eyBcXFwiLWYgJyEqZm9vKidcXFwiLFxcdFxcXCJmb29cXFwiLCBcXFwiYmFyXFxcIiwgZmFsc2UgfSxcXG4rXFx0eyBcXFwiLWYgJyEqZm9vKidcXFwiLFxcdFxcXCJiYXJcXFwiLCBcXFwiZm9vXFxcIiwgZmFsc2UgfSxcXG4rXFx0eyBcXFwiLWYgJyEqZm9vKidcXFwiLFxcdFxcXCJiYXJcXFwiLCBcXFwiYmFyXFxcIiwgdHJ1ZSAgfSxcXG4rXFx0eyBcXFwiLWYgJyEqZm9vKi9iYXInXFxcIixcXHRcXFwiZm9vXFxcIiwgXFxcImJhclxcXCIsIGZhbHNlIH0sXFxuK1xcdHsgXFxcIi1mICchKmZvbyovYmFyJ1xcXCIsXFx0XFxcImZvb1xcXCIsIFxcXCJidXpcXFwiLCB0cnVlICB9LFxcbitcXHR7IFxcXCItZiAnISpmb28qL2JhcidcXFwiLFxcdFxcXCJiYXJcXFwiLCBcXFwiYmFyXFxcIiwgdHJ1ZSAgfSxcXG4rXFx0eyBcXFwiLWYgJyEqZm9vKi8nXFxcIixcXHRcXFwiZm9vXFxcIiwgXFxcImJhclxcXCIsIGZhbHNlIH0sXFxuK1xcdHsgXFxcIi1mICchKmZvbyovJ1xcXCIsXFx0XFxcImJhclxcXCIsIFxcXCJiYXJcXFwiLCB0cnVlICB9LFxcbitcXHR7IFxcXCItZiAnIS9iYXInXFxcIixcXHRcXHRcXFwiZm9vXFxcIiwgXFxcImJhclxcXCIsIGZhbHNlIH0sXFxuK1xcdHsgXFxcIi1mICchL2JhcidcXFwiLFxcdFxcdFxcXCJmb29cXFwiLCBcXFwiZm9vXFxcIiwgdHJ1ZSAgfSxcXG4rXFx0eyBcXFwiLWYgJyEvJ1xcXCIsXFx0XFx0XFxcImZvb1xcXCIsIFxcXCJiYXJcXFwiLCAtMSAgICB9LFxcbitcXHR7IFxcXCItZiAnISdcXFwiLFxcdFxcdFxcXCJmb29cXFwiLCBcXFwiYmFyXFxcIiwgLTEgICAgfSxcXG4rXFx0LyogYWxsb3cgZmlsdGVycyAqL1xcbitcXHR7IFxcXCItZiAnKmZvbyonXFxcIixcXHRcXHRcXFwiZm9vXFxcIiwgXFxcImJhclxcXCIsIHRydWUgIH0sXFxuK1xcdHsgXFxcIi1mICcqZm9vKidcXFwiLFxcdFxcdFxcXCJiYXJcXFwiLCBcXFwiZm9vXFxcIiwgdHJ1ZSAgfSxcXG4rXFx0eyBcXFwiLWYgJypmb28qJ1xcXCIsXFx0XFx0XFxcImJhclxcXCIsIFxcXCJiYXJcXFwiLCBmYWxzZSB9LFxcbitcXHR7IFxcXCItZiAnKmZvbyovYmFyJ1xcXCIsXFx0XFxcImZvb1xcXCIsIFxcXCJiYXJcXFwiLCB0cnVlICB9LFxcbitcXHR7IFxcXCItZiAnKmZvbyovYmFyJ1xcXCIsXFx0XFxcImZvb1xcXCIsIFxcXCJidXpcXFwiLCBmYWxzZSB9LFxcbitcXHR7IFxcXCItZiAnKmZvbyovYmFyJ1xcXCIsXFx0XFxcImJhclxcXCIsIFxcXCJiYXJcXFwiLCBmYWxzZSB9LFxcbitcXHR7IFxcXCItZiAnKmZvbyovJ1xcXCIsXFx0XFxcImZvb1xcXCIsIFxcXCJiYXJcXFwiLCB0cnVlICB9LFxcbitcXHR7IFxcXCItZiAnKmZvbyovJ1xcXCIsXFx0XFxcImJhclxcXCIsIFxcXCJiYXJcXFwiLCBmYWxzZSB9LFxcbitcXHR7IFxcXCItZiAnL2JhcidcXFwiLFxcdFxcdFxcXCJmb29cXFwiLCBcXFwiYmFyXFxcIiwgdHJ1ZSAgfSxcXG4rXFx0eyBcXFwiLWYgJy9iYXInXFxcIixcXHRcXHRcXFwiZm9vXFxcIiwgXFxcImZvb1xcXCIsIGZhbHNlIH0sXFxuK1xcdHsgXFxcIi1mICcvJ1xcXCIsXFx0XFx0XFxcImZvb1xcXCIsIFxcXCJiYXJcXFwiLCAtMSAgICB9LFxcbitcXHR7IFxcXCItZiAnJ1xcXCIsXFx0XFx0XFxcImZvb1xcXCIsIFxcXCJiYXJcXFwiLCAtMSAgICB9LFxcbitcXHQvKiBhbGxvdyBhbmQgZGVueSBmaWx0ZXJzIGNvbWJpbmVkICovXFxuK1xcdHsgXFxcIi1mICcqZm9vKi8nIC1mICchL2JhcidcXFwiLCBcXFwiZm9vXFxcIiwgXFxcImZvb1xcXCIsIHRydWUgIH0sXFxuK1xcdHsgXFxcIi1mICcqZm9vKi8nIC1mICchL2JhcidcXFwiLCBcXFwiZm9vXFxcIiwgXFxcImJhclxcXCIsIGZhbHNlIH0sXFxuK1xcdHsgXFxcIi1mICcqZm9vKi8nIC1mICchL2JhcidcXFwiLCBcXFwiYmFyXFxcIiwgXFxcImZvb1xcXCIsIGZhbHNlIH0sXFxuK307XFxuK1xcbitzdGF0aWMgdm9pZCB0ZXN0X25hbWVfZmlsdGVycyh2b2lkKVxcbit7XFxuK1xcdHN0cnVjdCBmaXh0dXJlICpmaXggPSBpbml0X2ZpeHR1cmUoKTtcXG4rXFx0Y29uc3Qgc3RydWN0IG5hbWVfZmlsdGVyX2Nhc2UgKnQ7XFxuK1xcdGNoYXIgY21kWzUxMl0sIHJvd1s2NF0sIG5hbWVbMTI4XTtcXG4rXFx0aW50IGksIGVycjtcXG4rXFxuK1xcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBBUlJBWV9TSVpFKG5hbWVfZmlsdGVyX2Nhc2VzKTsgaSsrKSB7XFxuK1xcdFxcdHQgPSBcXHUwMDI2bmFtZV9maWx0ZXJfY2FzZXNbaV07XFxuK1xcdFxcdC8qIHN0ZGVyciBpcyBtZXJnZWQgd2l0aCBzdGRvdXQgaW4gb3JkZXIgdG8gY2F0Y2ggZXJyb3IgbWVzc2FnZXMgKi9cXG4rXFx0XFx0c25wcmludGYoY21kLCBzaXplb2YoY21kKSwgXFxcIiVzIFxcXCIgRklMVEVSX09CSlMgXFxcIiAtcSAtbyBjc3YgLWUgZmlsZSxwcm9nICVzIFxcdTAwM2UgJXMgMlxcdTAwM2VcXHUwMDI2MVxcXCIsXFxuK1xcdFxcdFxcdCBmaXgtXFx1MDAzZXZlcmlzdGF0LCB0LVxcdTAwM2VmaWx0ZXJzLCBmaXgtXFx1MDAzZXRtcGZpbGUpO1xcbitcXHRcXHRlcnIgPSBzeXN0ZW0oY21kKTtcXG4rXFx0XFx0cmVhZF9vdXRwdXQoZml4KTtcXG4rXFxuK1xcdFxcdHNucHJpbnRmKHJvdywgc2l6ZW9mKHJvdyksIFxcXCJ2ZXJpc3RhdF8lcy5icGYubywlc1xcXCIsIHQtXFx1MDAzZWZpbGUsIHQtXFx1MDAzZXByb2cpO1xcbitcXHRcXHRzbnByaW50ZihuYW1lLCBzaXplb2YobmFtZSksIFxcXCJ2ZXJpc3RhdCAlczogJXNcXFwiLCB0LVxcdTAwM2VmaWx0ZXJzLCByb3cpO1xcbitcXHRcXHRzd2l0Y2ggKHQtXFx1MDAzZWluY2x1ZGVkKSB7XFxuK1xcdFxcdGNhc2UgdHJ1ZTpcXG4rXFx0XFx0XFx0QVNTRVJUX09LKGVyciwgbmFtZSk7XFxuK1xcdFxcdFxcdEFTU0VSVF9IQVNfU1VCU1RSKGZpeC1cXHUwMDNlb3V0cHV0LCByb3csIG5hbWUpO1xcbitcXHRcXHRcXHRicmVhaztcXG4rXFx0XFx0Y2FzZSBmYWxzZTpcXG4rXFx0XFx0XFx0QVNTRVJUX09LKGVyciwgbmFtZSk7XFxuK1xcdFxcdFxcdEFTU0VSVF9GQUxTRSghIXN0cnN0cihmaXgtXFx1MDAzZW91dHB1dCwgcm93KSwgbmFtZSk7XFxuK1xcdFxcdFxcdGJyZWFrO1xcbitcXHRcXHRjYXNlIC0xOlxcbitcXHRcXHRcXHRBU1NFUlRfTkVRKGVyciwgMCwgbmFtZSk7XFxuK1xcdFxcdFxcdEFTU0VSVF9IQVNfU1VCU1RSKGZpeC1cXHUwMDNlb3V0cHV0LCBcXFwiSW52YWxpZCBmaWx0ZXJcXFwiLCBuYW1lKTtcXG4rXFx0XFx0XFx0YnJlYWs7XFxuK1xcdFxcdH1cXG4rXFx0fVxcbitcXG4rXFx0dGVhcmRvd25fZml4dHVyZShmaXgpO1xcbit9XFxuK1xcbiB2b2lkIHRlc3RfdmVyaXN0YXQodm9pZClcXG4ge1xcbiBcXHRpZiAodGVzdF9fc3RhcnRfc3VidGVzdChcXFwic2V0X2dsb2JhbF92YXJzX3N1Y2NlZWRzXFxcIikpXFxuQEAgLTI1Niw2ICszNTUsOCBAQCB2b2lkIHRlc3RfdmVyaXN0YXQodm9pZClcXG4gXFx0aWYgKHRlc3RfX3N0YXJ0X3N1YnRlc3QoXFxcInRlc3Rfbm9fYXJyYXlfaW5kZXhfZm9yX2FycmF5XFxcIikpXFxuIFxcdFxcdHRlc3Rfbm9fYXJyYXlfaW5kZXhfZm9yX2FycmF5KCk7XFxuIFxcbitcXHRpZiAodGVzdF9fc3RhcnRfc3VidGVzdChcXFwibmFtZV9maWx0ZXJzXFxcIikpXFxuK1xcdFxcdHRlc3RfbmFtZV9maWx0ZXJzKCk7XFxuIH1cXG4gXFxuICN1bmRlZiBfX0NIRUNLX1NUUlxcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaXN0YXRfYmFyLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaXN0YXRfYmFyLmNcXG5uZXcgZmlsZSBtb2RlIDEwMDY0NFxcbmluZGV4IDAwMDAwMDAwMDAwMDAuLjgzZDJhMmExZGZjOTZcXG4tLS0gL2Rldi9udWxsXFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlzdGF0X2Jhci5jXFxuQEAgLTAsMCArMSwzIEBAXFxuKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXFxuKy8qIENvcHlyaWdodCAoYykgMjAyNiBNZXRhIFBsYXRmb3JtcywgSW5jLiBhbmQgYWZmaWxpYXRlcy4gKi9cXG4rI2luY2x1ZGUgXFxcInZlcmlzdGF0X2Zvby5jXFxcIlxcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaXN0YXRfZm9vLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaXN0YXRfZm9vLmNcXG5uZXcgZmlsZSBtb2RlIDEwMDY0NFxcbmluZGV4IDAwMDAwMDAwMDAwMDAuLmJkMjRiOTc2NjRiNDlcXG4tLS0gL2Rldi9udWxsXFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlzdGF0X2Zvby5jXFxuQEAgLTAsMCArMSwzMSBAQFxcbisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxcbisvKiBDb3B5cmlnaHQgKGMpIDIwMjYgTWV0YSBQbGF0Zm9ybXMsIEluYy4gYW5kIGFmZmlsaWF0ZXMuICovXFxuKyNpbmNsdWRlIFxcdTAwM2NsaW51eC9icGYuaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY2JwZi9icGZfaGVscGVycy5oXFx1MDAzZVxcbitcXG4rLypcXG4rICogUHJvZ3JhbXMgYmVsb3cgZXhpc3Qgb25seSB0byBleGVyY2lzZSB2ZXJpc3RhdCdzIC1mIG5hbWUgZmlsdGVycyxcXG4rICogdGhlaXIgYm9kaWVzIGFyZSBpcnJlbGV2YW50LCBvbmx5IHRoZSBuYW1lcyBtYXR0ZXIuXFxuKyAqIFRoaXMgZmlsZSBpcyBhbHNvIGluY2x1ZGVkIGJ5IHZlcmlzdGF0X2Jhci5jLCBzbyB0aGF0IHRoZSBzYW1lIHNldCBvZlxcbisgKiBwcm9ncmFtIG5hbWVzIGlzIGF2YWlsYWJsZSBpbiB0d28gZGlmZmVyZW50bHkgbmFtZWQgb2JqZWN0IGZpbGVzLlxcbisgKi9cXG4rXFxuK1NFQyhcXFwic29ja2V0XFxcIilcXG4raW50IGZvbyh2b2lkICpjdHgpXFxuK3tcXG4rXFx0cmV0dXJuIDA7XFxuK31cXG4rXFxuK1NFQyhcXFwic29ja2V0XFxcIilcXG4raW50IGJhcih2b2lkICpjdHgpXFxuK3tcXG4rXFx0cmV0dXJuIDA7XFxuK31cXG4rXFxuK1NFQyhcXFwic29ja2V0XFxcIilcXG4raW50IGJ1eih2b2lkICpjdHgpXFxuK3tcXG4rXFx0cmV0dXJuIDA7XFxuK31cXG4rXFxuK2NoYXIgX2xpY2Vuc2VbXSBTRUMoXFxcImxpY2Vuc2VcXFwiKSA9IFxcXCJHUExcXFwiO1xcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdmVyaXN0YXQuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi92ZXJpc3RhdC5jXFxuaW5kZXggYzljMjU3Nzg0ZWUzZC4uNmFhYTA2NzkwZGFhMiAxMDA2NDRcXG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdmVyaXN0YXQuY1xcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi92ZXJpc3RhdC5jXFxuQEAgLTUxNCw2ICs1MTQsNDAgQEAgc3RhdGljIGJvb2wgaXNfYnBmX29ial9maWxlKGNvbnN0IGNoYXIgKnBhdGgpIHtcXG4gXFx0cmV0dXJuIGVyciA9PSAwO1xcbiB9XFxuIFxcbisvKiBFeGFjdCBmaWx0ZXIgbWF0Y2ggKi9cXG4rc3RhdGljIGJvb2wgbmFtZV9maWx0ZXJfbWF0Y2hlcyhzdHJ1Y3QgZmlsdGVyICpmLCBjb25zdCBjaGFyICpmaWxlbmFtZSwgY29uc3QgY2hhciAqcHJvZ19uYW1lKVxcbit7XFxuK1xcdGlmIChmLVxcdTAwM2VhbnlfZ2xvYilcXG4rXFx0XFx0cmV0dXJuIGdsb2JfbWF0Y2hlcyhmaWxlbmFtZSwgZi1cXHUwMDNlYW55X2dsb2IpIHx8XFxuK1xcdFxcdCAgICAgICAocHJvZ19uYW1lIFxcdTAwMjZcXHUwMDI2IGdsb2JfbWF0Y2hlcyhwcm9nX25hbWUsIGYtXFx1MDAzZWFueV9nbG9iKSk7XFxuK1xcdGlmIChmLVxcdTAwM2VmaWxlX2dsb2IgXFx1MDAyNlxcdTAwMjYgZi1cXHUwMDNlcHJvZ19nbG9iKVxcbitcXHRcXHRyZXR1cm4gcHJvZ19uYW1lIFxcdTAwMjZcXHUwMDI2XFxuK1xcdFxcdCAgICAgICBnbG9iX21hdGNoZXMoZmlsZW5hbWUsIGYtXFx1MDAzZWZpbGVfZ2xvYikgXFx1MDAyNlxcdTAwMjZcXG4rXFx0XFx0ICAgICAgIGdsb2JfbWF0Y2hlcyhwcm9nX25hbWUsIGYtXFx1MDAzZXByb2dfZ2xvYik7XFxuK1xcdGlmIChmLVxcdTAwM2VmaWxlX2dsb2IpXFxuK1xcdFxcdHJldHVybiBnbG9iX21hdGNoZXMoZmlsZW5hbWUsIGYtXFx1MDAzZWZpbGVfZ2xvYik7XFxuK1xcdGlmIChmLVxcdTAwM2Vwcm9nX2dsb2IpXFxuK1xcdFxcdHJldHVybiBwcm9nX25hbWUgXFx1MDAyNlxcdTAwMjYgZ2xvYl9tYXRjaGVzKHByb2dfbmFtZSwgZi1cXHUwMDNlcHJvZ19nbG9iKTtcXG4rXFx0cmV0dXJuIGZhbHNlO1xcbit9XFxuK1xcbisvKiBDaGVjayBpZiB0aGUgZmlsdGVyIGRvZXMgbm90IG91dHJpZ2h0IHJlamVjdCB0aGUgZmlsZSBuYW1lICovXFxuK3N0YXRpYyBib29sIG5hbWVfZmlsdGVyX21heV9tYXRjaChzdHJ1Y3QgZmlsdGVyICpmLCBjb25zdCBjaGFyICpmaWxlbmFtZSlcXG4re1xcbitcXHRpZiAoZi1cXHUwMDNlZmlsZV9nbG9iKVxcbitcXHRcXHRyZXR1cm4gZ2xvYl9tYXRjaGVzKGZpbGVuYW1lLCBmLVxcdTAwM2VmaWxlX2dsb2IpO1xcbitcXHQvKlxcbitcXHQgKiBJZiB3ZSBkb24ndCBrbm93IHByb2dyYW0gbmFtZSB5ZXQsIGFueV9nbG9iIGZpbHRlclxcbitcXHQgKiBoYXMgdG8gYXNzdW1lIHRoYXQgY3VycmVudCBCUEYgb2JqZWN0IGZpbGUgbWlnaHQgYmVcXG4rXFx0ICogcmVsZXZhbnQ7IHdlJ2xsIGNoZWNrIGFnYWluIGxhdGVyIG9uIGFmdGVyIG9wZW5pbmdcXG4rXFx0ICogQlBGIG9iamVjdCBmaWxlLCBhdCB3aGljaCBwb2ludCBwcm9ncmFtIG5hbWUgd2lsbFxcbitcXHQgKiBiZSBrbm93biBmaW5hbGx5LlxcbitcXHQgKi9cXG4rXFx0aWYgKGYtXFx1MDAzZWFueV9nbG9iIHx8IGYtXFx1MDAzZXByb2dfZ2xvYilcXG4rXFx0XFx0cmV0dXJuIHRydWU7XFxuK1xcdHJldHVybiBmYWxzZTtcXG4rfVxcbitcXG4gc3RhdGljIGJvb2wgc2hvdWxkX3Byb2Nlc3NfZmlsZV9wcm9nKGNvbnN0IGNoYXIgKmZpbGVuYW1lLCBjb25zdCBjaGFyICpwcm9nX25hbWUpXFxuIHtcXG4gXFx0c3RydWN0IGZpbHRlciAqZjtcXG5AQCAtNTIxLDE2ICs1NTUsNyBAQCBzdGF0aWMgYm9vbCBzaG91bGRfcHJvY2Vzc19maWxlX3Byb2coY29uc3QgY2hhciAqZmlsZW5hbWUsIGNvbnN0IGNoYXIgKnByb2dfbmFtZVxcbiBcXG4gXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIGVudi5kZW55X2ZpbHRlcl9jbnQ7IGkrKykge1xcbiBcXHRcXHRmID0gXFx1MDAyNmVudi5kZW55X2ZpbHRlcnNbaV07XFxuLVxcdFxcdGlmIChmLVxcdTAwM2VraW5kICE9IEZJTFRFUl9OQU1FKVxcbi1cXHRcXHRcXHRjb250aW51ZTtcXG4tXFxuLVxcdFxcdGlmIChmLVxcdTAwM2VhbnlfZ2xvYiBcXHUwMDI2XFx1MDAyNiBnbG9iX21hdGNoZXMoZmlsZW5hbWUsIGYtXFx1MDAzZWFueV9nbG9iKSlcXG4tXFx0XFx0XFx0cmV0dXJuIGZhbHNlO1xcbi1cXHRcXHRpZiAoZi1cXHUwMDNlYW55X2dsb2IgXFx1MDAyNlxcdTAwMjYgcHJvZ19uYW1lIFxcdTAwMjZcXHUwMDI2IGdsb2JfbWF0Y2hlcyhwcm9nX25hbWUsIGYtXFx1MDAzZWFueV9nbG9iKSlcXG4tXFx0XFx0XFx0cmV0dXJuIGZhbHNlO1xcbi1cXHRcXHRpZiAoZi1cXHUwMDNlZmlsZV9nbG9iIFxcdTAwMjZcXHUwMDI2IGdsb2JfbWF0Y2hlcyhmaWxlbmFtZSwgZi1cXHUwMDNlZmlsZV9nbG9iKSlcXG4tXFx0XFx0XFx0cmV0dXJuIGZhbHNlO1xcbi1cXHRcXHRpZiAoZi1cXHUwMDNlcHJvZ19nbG9iIFxcdTAwMjZcXHUwMDI2IHByb2dfbmFtZSBcXHUwMDI2XFx1MDAyNiBnbG9iX21hdGNoZXMocHJvZ19uYW1lLCBmLVxcdTAwM2Vwcm9nX2dsb2IpKVxcbitcXHRcXHRpZiAoZi1cXHUwMDNla2luZCA9PSBGSUxURVJfTkFNRSBcXHUwMDI2XFx1MDAyNiBuYW1lX2ZpbHRlcl9tYXRjaGVzKGYsIGZpbGVuYW1lLCBwcm9nX25hbWUpKVxcbiBcXHRcXHRcXHRyZXR1cm4gZmFsc2U7XFxuIFxcdH1cXG4gXFxuQEAgLTU0MCwyNCArNTY1LDE1IEBAIHN0YXRpYyBib29sIHNob3VsZF9wcm9jZXNzX2ZpbGVfcHJvZyhjb25zdCBjaGFyICpmaWxlbmFtZSwgY29uc3QgY2hhciAqcHJvZ19uYW1lXFxuIFxcdFxcdFxcdGNvbnRpbnVlO1xcbiBcXG4gXFx0XFx0YWxsb3dfY250Kys7XFxuLVxcdFxcdGlmIChmLVxcdTAwM2VhbnlfZ2xvYikge1xcbi1cXHRcXHRcXHRpZiAoZ2xvYl9tYXRjaGVzKGZpbGVuYW1lLCBmLVxcdTAwM2VhbnlfZ2xvYikpXFxuLVxcdFxcdFxcdFxcdHJldHVybiB0cnVlO1xcbi1cXHRcXHRcXHQvKiBJZiB3ZSBkb24ndCBrbm93IHByb2dyYW0gbmFtZSB5ZXQsIGFueV9nbG9iIGZpbHRlclxcbi1cXHRcXHRcXHQgKiBoYXMgdG8gYXNzdW1lIHRoYXQgY3VycmVudCBCUEYgb2JqZWN0IGZpbGUgbWlnaHQgYmVcXG4tXFx0XFx0XFx0ICogcmVsZXZhbnQ7IHdlJ2xsIGNoZWNrIGFnYWluIGxhdGVyIG9uIGFmdGVyIG9wZW5pbmdcXG4tXFx0XFx0XFx0ICogQlBGIG9iamVjdCBmaWxlLCBhdCB3aGljaCBwb2ludCBwcm9ncmFtIG5hbWUgd2lsbFxcbi1cXHRcXHRcXHQgKiBiZSBrbm93biBmaW5hbGx5Llxcbi1cXHRcXHRcXHQgKi9cXG4tXFx0XFx0XFx0aWYgKCFwcm9nX25hbWUgfHwgZ2xvYl9tYXRjaGVzKHByb2dfbmFtZSwgZi1cXHUwMDNlYW55X2dsb2IpKVxcbi1cXHRcXHRcXHRcXHRyZXR1cm4gdHJ1ZTtcXG4tXFx0XFx0fSBlbHNlIHtcXG4tXFx0XFx0XFx0aWYgKGYtXFx1MDAzZWZpbGVfZ2xvYiBcXHUwMDI2XFx1MDAyNiAhZ2xvYl9tYXRjaGVzKGZpbGVuYW1lLCBmLVxcdTAwM2VmaWxlX2dsb2IpKVxcbi1cXHRcXHRcXHRcXHRjb250aW51ZTtcXG4tXFx0XFx0XFx0aWYgKGYtXFx1MDAzZXByb2dfZ2xvYiBcXHUwMDI2XFx1MDAyNiBwcm9nX25hbWUgXFx1MDAyNlxcdTAwMjYgIWdsb2JfbWF0Y2hlcyhwcm9nX25hbWUsIGYtXFx1MDAzZXByb2dfZ2xvYikpXFxuLVxcdFxcdFxcdFxcdGNvbnRpbnVlO1xcbitcXHRcXHRpZiAocHJvZ19uYW1lIFxcdTAwMjZcXHUwMDI2IG5hbWVfZmlsdGVyX21hdGNoZXMoZiwgZmlsZW5hbWUsIHByb2dfbmFtZSkpXFxuK1xcdFxcdFxcdHJldHVybiB0cnVlO1xcbitcXHRcXHQvKlxcbitcXHRcXHQgKiBJZiB0aGVyZSBpcyBubyBwcm9nX25hbWUgYW5kIHRoZSBmaWxlIG5hbWUgaXMgbm90IGJsb2NrZWQgYnlcXG4rXFx0XFx0ICogdGhlIGZpbHRlciwgYWxsb3cgdG8gb3BlbiB0aGUgZmlsZS4gQWZ0ZXJ3YXJkcyB0aGVyZSB3b3VsZCBiZVxcbitcXHRcXHQgKiBhIHNlY29uZCByZWZpbmluZyBxdWVyeSB3aXRoIHByb2dfbmFtZSBzZXQuXFxuK1xcdFxcdCAqL1xcbitcXHRcXHRpZiAoIXByb2dfbmFtZSBcXHUwMDI2XFx1MDAyNiBuYW1lX2ZpbHRlcl9tYXlfbWF0Y2goZiwgZmlsZW5hbWUpKVxcbiBcXHRcXHRcXHRyZXR1cm4gdHJ1ZTtcXG4tXFx0XFx0fVxcbiBcXHR9XFxuIFxcbiBcXHQvKiBpZiB0aGVyZSBhcmUgbm8gZmlsZS9wcm9nIG5hbWUgYWxsb3cgZmlsdGVycywgYWxsb3cgYWxsIHByb2dzLFxcbkBAIC03MDMsNiArNzE5LDEyIEBAIHN0YXRpYyBpbnQgYXBwZW5kX2ZpbHRlcihzdHJ1Y3QgZmlsdGVyICoqZmlsdGVycywgaW50ICpjbnQsIGNvbnN0IGNoYXIgKnN0cilcXG4gXFx0XFx0fVxcbiBcXHR9XFxuIFxcbitcXHRpZiAoKCFmLVxcdTAwM2VhbnlfZ2xvYiBcXHUwMDI2XFx1MDAyNiAhZi1cXHUwMDNlZmlsZV9nbG9iIFxcdTAwMjZcXHUwMDI2ICFmLVxcdTAwM2Vwcm9nX2dsb2IpIHx8XFxuK1xcdCAgICAoZi1cXHUwMDNlYW55X2dsb2IgXFx1MDAyNlxcdTAwMjYgc3RyY21wKGYtXFx1MDAzZWFueV9nbG9iLCBcXFwiXFxcIikgPT0gMCkpIHtcXG4rXFx0XFx0ZnByaW50ZihzdGRlcnIsIFxcXCJJbnZhbGlkIGZpbHRlcjogJyVzJ1xcXFxuXFxcIiwgc3RyKTtcXG4rXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuK1xcdH1cXG4rXFxuIFxcdCpjbnQgKz0gMTtcXG4gXFx0cmV0dXJuIDA7XFxuIH1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMDY6MDk6MjUuOTM4Njk2MTA4WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6NjI5NjMzMDk0OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggb25seSBtb2RpZmllcyB1c2VyLXNwYWNlIEJQRiBzZWxmdGVzdHMgYW5kIHRoZSB2ZXJpc3RhdCB0b29sLiBJdCBkb2VzIG5vdCBtYWtlIGFueSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCBjb2RlIGl0c2VsZi5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDU3MTQ2MjJhMTBhOTI1OGE1MGM0ZDViZGQyYzU5MjA0NWJhZGQ4ODRcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIEF1ZyAxMiAwNjowOToyNCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3Rlc3RfdmVyaXN0YXQuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3Rlc3RfdmVyaXN0YXQuY1xuaW5kZXggOWFmZjA4YWM1NWMwNy4uMTFmM2RlMmI2NmFkMSAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3Rlc3RfdmVyaXN0YXQuY1xuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvdGVzdF92ZXJpc3RhdC5jXG5AQCAtMzcsNiArMzcsMTQgQEAgc3RhdGljIHN0cnVjdCBmaXh0dXJlICppbml0X2ZpeHR1cmUodm9pZClcbiBcdHJldHVybiBmaXg7XG4gfVxuIFxuK3N0YXRpYyB2b2lkIHJlYWRfb3V0cHV0KHN0cnVjdCBmaXh0dXJlICpmaXgpXG4re1xuK1x0c3NpemVfdCBsZW4gPSBwcmVhZChmaXgtXHUwMDNlZmQsIGZpeC1cdTAwM2VvdXRwdXQsIGZpeC1cdTAwM2VzeiAtIDEsIDApO1xuK1xuK1x0Zml4LVx1MDAzZW91dHB1dFtsZW4gXHUwMDNjIDAgPyAwIDogbGVuXSA9IDA7XG4rXHRBU1NFUlRfR0UobGVuLCAwLCBcInByZWFkXCIpO1xuK31cbitcbiBzdGF0aWMgdm9pZCB0ZWFyZG93bl9maXh0dXJlKHN0cnVjdCBmaXh0dXJlICpmaXgpXG4ge1xuIFx0ZnJlZShmaXgtXHUwMDNlb3V0cHV0KTtcbkBAIC03NCw3ICs4Miw3IEBAIHN0YXRpYyB2b2lkIHRlc3Rfc2V0X2dsb2JhbF92YXJzX3N1Y2NlZWRzKHZvaWQpXG4gXHQgICAgXCIgLUcgXFxcInN0cnVjdDExIFsgNyBdIFsgNSBdIC5zdHJ1Y3QyWzBdWzFdLnUubWF0WzNdWzBdID0gMTc1XFxcIiBcIiBcXFxuIFx0ICAgIFwiIC12bDIgXHUwMDNlICVzXCIsIGZpeC1cdTAwM2V2ZXJpc3RhdCwgZml4LVx1MDAzZXRtcGZpbGUpO1xuIFxuLVx0cmVhZChmaXgtXHUwMDNlZmQsIGZpeC1cdTAwM2VvdXRwdXQsIGZpeC1cdTAwM2Vzeik7XG4rXHRyZWFkX291dHB1dChmaXgpO1xuIFx0X19DSEVDS19TVFIoXCI9MHhmMDAwMDAwMDAwMDAwMDAxIFwiLCBcInZhcl9zNjQgPSAweGYwMDAwMDAwMDAwMDAwMDFcIik7XG4gXHRfX0NIRUNLX1NUUihcIj0weGZlZGNiYTk4NzY1NDMyMTAgXCIsIFwidmFyX3U2NCA9IDB4ZmVkY2JhOTg3NjU0MzIxMFwiKTtcbiBcdF9fQ0hFQ0tfU1RSKFwiPTB4ODAwMDAwMDAgXCIsIFwidmFyX3MzMiA9IC0weDgwMDAwMDAwXCIpO1xuQEAgLTExNiw3ICsxMjQsNyBAQCBzdGF0aWMgdm9pZCB0ZXN0X3NldF9nbG9iYWxfdmFyc19mcm9tX2ZpbGVfc3VjY2VlZHModm9pZClcbiBcdHN5bmNmcyhmZCk7XG4gXHRTWVMob3V0LCBcIiVzIHNldF9nbG9iYWxfdmFycy5icGYubyAtRyBcXFwiQCVzXFxcIiAtdmwyIFx1MDAzZSAlc1wiLFxuIFx0ICAgIGZpeC1cdTAwM2V2ZXJpc3RhdCwgaW5wdXRfZmlsZSwgZml4LVx1MDAzZXRtcGZpbGUpO1xuLVx0cmVhZChmaXgtXHUwMDNlZmQsIGZpeC1cdTAwM2VvdXRwdXQsIGZpeC1cdTAwM2Vzeik7XG4rXHRyZWFkX291dHB1dChmaXgpO1xuIFx0X19DSEVDS19TVFIoXCI9MHg4MDAwIFwiLCBcInZhcl9zMTYgPSAtMzI3NjhcIik7XG4gXHRfX0NIRUNLX1NUUihcIj0weGVjZWMgXCIsIFwidmFyX3UxNiA9IDYwNjUyXCIpO1xuIFxuQEAgLTEzNCw3ICsxNDIsNyBAQCBzdGF0aWMgdm9pZCB0ZXN0X3NldF9nbG9iYWxfdmFyc19vdXRfb2ZfcmFuZ2Uodm9pZClcbiBcdFx0IFwiJXMgc2V0X2dsb2JhbF92YXJzLmJwZi5vIC1HIFxcXCJ2YXJfczMyID0gMjE0NzQ4MzY0OFxcXCIgLXZsMiAyXHUwMDNlICVzXCIsXG4gXHRcdCBmaXgtXHUwMDNldmVyaXN0YXQsIGZpeC1cdTAwM2V0bXBmaWxlKTtcbiBcbi1cdHJlYWQoZml4LVx1MDAzZWZkLCBmaXgtXHUwMDNlb3V0cHV0LCBmaXgtXHUwMDNlc3opO1xuK1x0cmVhZF9vdXRwdXQoZml4KTtcbiBcdF9fQ0hFQ0tfU1RSKFwiaXMgb3V0IG9mIHJhbmdlIFstMjE0NzQ4MzY0ODsgMjE0NzQ4MzY0N11cIiwgXCJvdXQgb2YgcmFuZ2VcIik7XG4gXG4gb3V0OlxuQEAgLTE0OSw3ICsxNTcsNyBAQCBzdGF0aWMgdm9pZCB0ZXN0X3Vuc3VwcG9ydGVkX3B0cl9hcnJheV90eXBlKHZvaWQpXG4gXHRcdCBcIiVzIHNldF9nbG9iYWxfdmFycy5icGYubyAtRyBcXFwicHRyX2FyclswXSA9IDBcXFwiIC12bDIgMlx1MDAzZSAlc1wiLFxuIFx0XHQgZml4LVx1MDAzZXZlcmlzdGF0LCBmaXgtXHUwMDNldG1wZmlsZSk7XG4gXG4tXHRyZWFkKGZpeC1cdTAwM2VmZCwgZml4LVx1MDAzZW91dHB1dCwgZml4LVx1MDAzZXN6KTtcbitcdHJlYWRfb3V0cHV0KGZpeCk7XG4gXHRfX0NIRUNLX1NUUihcIkNhbid0IHNldCBwdHJfYXJyWzBdLiBPbmx5IGludHMgYW5kIGVudW1zIGFyZSBzdXBwb3J0ZWRcIiwgXCJwdHJfYXJyXCIpO1xuIFxuIG91dDpcbkBAIC0xNjQsNyArMTcyLDcgQEAgc3RhdGljIHZvaWQgdGVzdF9hcnJheV9vdXRfb2ZfYm91bmRzKHZvaWQpXG4gXHRcdCBcIiVzIHNldF9nbG9iYWxfdmFycy5icGYubyAtRyBcXFwiYXJyWzk5XSA9IDBcXFwiIC12bDIgMlx1MDAzZSAlc1wiLFxuIFx0XHQgZml4LVx1MDAzZXZlcmlzdGF0LCBmaXgtXHUwMDNldG1wZmlsZSk7XG4gXG4tXHRyZWFkKGZpeC1cdTAwM2VmZCwgZml4LVx1MDAzZW91dHB1dCwgZml4LVx1MDAzZXN6KTtcbitcdHJlYWRfb3V0cHV0KGZpeCk7XG4gXHRfX0NIRUNLX1NUUihcIkFycmF5IGluZGV4IDk5IGlzIG91dCBvZiBib3VuZHNcIiwgXCJhcnJbOTldXCIpO1xuIFxuIG91dDpcbkBAIC0xNzksNyArMTg3LDcgQEAgc3RhdGljIHZvaWQgdGVzdF9hcnJheV9pbmRleF9ub3RfZm91bmQodm9pZClcbiBcdFx0IFwiJXMgc2V0X2dsb2JhbF92YXJzLmJwZi5vIC1HIFxcXCJhcnJbRUcyXSA9IDBcXFwiIC12bDIgMlx1MDAzZSAlc1wiLFxuIFx0XHQgZml4LVx1MDAzZXZlcmlzdGF0LCBmaXgtXHUwMDNldG1wZmlsZSk7XG4gXG4tXHRyZWFkKGZpeC1cdTAwM2VmZCwgZml4LVx1MDAzZW91dHB1dCwgZml4LVx1MDAzZXN6KTtcbitcdHJlYWRfb3V0cHV0KGZpeCk7XG4gXHRfX0NIRUNLX1NUUihcIkNhbid0IHJlc29sdmUgZW51bSB2YWx1ZSBFRzJcIiwgXCJhcnJbRUcyXVwiKTtcbiBcbiBvdXQ6XG5AQCAtMjMwLDYgKzIzOCw5NyBAQCBzdGF0aWMgdm9pZCB0ZXN0X25vX2FycmF5X2luZGV4X2Zvcl9hcnJheSh2b2lkKVxuIFx0dGVhcmRvd25fZml4dHVyZShmaXgpO1xuIH1cbiBcbisvKlxuKyAqIE5hbWUgZmlsdGVyIHRlc3RzIGJlbG93IHJ1biB2ZXJpc3RhdCBvbiB2ZXJpc3RhdF9mb28uYnBmLm8gYW5kXG4rICogdmVyaXN0YXRfYmFyLmJwZi5vLCBib3RoIGRlZmluaW5nIHByb2dyYW1zICdmb28nLCAnYmFyJyBhbmQgJ2J1eicuXG4rICogRXZlcnkgZW50cnkgZGVzY3JpYmVzIGEgc2luZ2xlIChmaWx0ZXJzLCBmaWxlLCBwcm9nKSBjb21iaW5hdGlvbiBhbmRcbisgKiB0ZWxscyB3aGV0aGVyIHRoYXQgcHJvZ3JhbSBpcyBleHBlY3RlZCBpbiB0aGUgdmVyaXN0YXQgb3V0cHV0OlxuKyAqICd0cnVlJyBpZiBpdCBpcywgJ2ZhbHNlJyBpZiBpdCBpcyBub3QgYW5kIC0xIGlmIHZlcmlzdGF0IGlzIGV4cGVjdGVkXG4rICogdG8gcmVqZWN0IHRoZSBmaWx0ZXIuXG4rICovXG4rI2RlZmluZSBGSUxURVJfT0JKUyBcInZlcmlzdGF0X2Zvby5icGYubyB2ZXJpc3RhdF9iYXIuYnBmLm9cIlxuK1xuK3N0YXRpYyBjb25zdCBzdHJ1Y3QgbmFtZV9maWx0ZXJfY2FzZSB7XG4rXHRjb25zdCBjaGFyICpmaWx0ZXJzO1xuK1x0Y29uc3QgY2hhciAqZmlsZTtcbitcdGNvbnN0IGNoYXIgKnByb2c7XG4rXHRpbnQgaW5jbHVkZWQ7XG4rfSBuYW1lX2ZpbHRlcl9jYXNlc1tdID0ge1xuK1x0Lyogbm8gZmlsdGVycywgZXZlcnkgcHJvZ3JhbSBpcyBwcm9jZXNzZWQgKi9cbitcdHsgXCJcIixcdFx0XHRcImZvb1wiLCBcImZvb1wiLCB0cnVlICB9LFxuK1x0eyBcIlwiLFx0XHRcdFwiZm9vXCIsIFwiYmFyXCIsIHRydWUgIH0sXG4rXHR7IFwiXCIsXHRcdFx0XCJmb29cIiwgXCJidXpcIiwgdHJ1ZSAgfSxcbitcdHsgXCJcIixcdFx0XHRcImJhclwiLCBcImZvb1wiLCB0cnVlICB9LFxuK1x0eyBcIlwiLFx0XHRcdFwiYmFyXCIsIFwiYmFyXCIsIHRydWUgIH0sXG4rXHR7IFwiXCIsXHRcdFx0XCJiYXJcIiwgXCJidXpcIiwgdHJ1ZSAgfSxcbitcdC8qIGRlbnkgZmlsdGVycyAqL1xuK1x0eyBcIi1mICchKmZvbyonXCIsXHRcImZvb1wiLCBcImJhclwiLCBmYWxzZSB9LFxuK1x0eyBcIi1mICchKmZvbyonXCIsXHRcImJhclwiLCBcImZvb1wiLCBmYWxzZSB9LFxuK1x0eyBcIi1mICchKmZvbyonXCIsXHRcImJhclwiLCBcImJhclwiLCB0cnVlICB9LFxuK1x0eyBcIi1mICchKmZvbyovYmFyJ1wiLFx0XCJmb29cIiwgXCJiYXJcIiwgZmFsc2UgfSxcbitcdHsgXCItZiAnISpmb28qL2JhcidcIixcdFwiZm9vXCIsIFwiYnV6XCIsIHRydWUgIH0sXG4rXHR7IFwiLWYgJyEqZm9vKi9iYXInXCIsXHRcImJhclwiLCBcImJhclwiLCB0cnVlICB9LFxuK1x0eyBcIi1mICchKmZvbyovJ1wiLFx0XCJmb29cIiwgXCJiYXJcIiwgZmFsc2UgfSxcbitcdHsgXCItZiAnISpmb28qLydcIixcdFwiYmFyXCIsIFwiYmFyXCIsIHRydWUgIH0sXG4rXHR7IFwiLWYgJyEvYmFyJ1wiLFx0XHRcImZvb1wiLCBcImJhclwiLCBmYWxzZSB9LFxuK1x0eyBcIi1mICchL2JhcidcIixcdFx0XCJmb29cIiwgXCJmb29cIiwgdHJ1ZSAgfSxcbitcdHsgXCItZiAnIS8nXCIsXHRcdFwiZm9vXCIsIFwiYmFyXCIsIC0xICAgIH0sXG4rXHR7IFwiLWYgJyEnXCIsXHRcdFwiZm9vXCIsIFwiYmFyXCIsIC0xICAgIH0sXG4rXHQvKiBhbGxvdyBmaWx0ZXJzICovXG4rXHR7IFwiLWYgJypmb28qJ1wiLFx0XHRcImZvb1wiLCBcImJhclwiLCB0cnVlICB9LFxuK1x0eyBcIi1mICcqZm9vKidcIixcdFx0XCJiYXJcIiwgXCJmb29cIiwgdHJ1ZSAgfSxcbitcdHsgXCItZiAnKmZvbyonXCIsXHRcdFwiYmFyXCIsIFwiYmFyXCIsIGZhbHNlIH0sXG4rXHR7IFwiLWYgJypmb28qL2JhcidcIixcdFwiZm9vXCIsIFwiYmFyXCIsIHRydWUgIH0sXG4rXHR7IFwiLWYgJypmb28qL2JhcidcIixcdFwiZm9vXCIsIFwiYnV6XCIsIGZhbHNlIH0sXG4rXHR7IFwiLWYgJypmb28qL2JhcidcIixcdFwiYmFyXCIsIFwiYmFyXCIsIGZhbHNlIH0sXG4rXHR7IFwiLWYgJypmb28qLydcIixcdFwiZm9vXCIsIFwiYmFyXCIsIHRydWUgIH0sXG4rXHR7IFwiLWYgJypmb28qLydcIixcdFwiYmFyXCIsIFwiYmFyXCIsIGZhbHNlIH0sXG4rXHR7IFwiLWYgJy9iYXInXCIsXHRcdFwiZm9vXCIsIFwiYmFyXCIsIHRydWUgIH0sXG4rXHR7IFwiLWYgJy9iYXInXCIsXHRcdFwiZm9vXCIsIFwiZm9vXCIsIGZhbHNlIH0sXG4rXHR7IFwiLWYgJy8nXCIsXHRcdFwiZm9vXCIsIFwiYmFyXCIsIC0xICAgIH0sXG4rXHR7IFwiLWYgJydcIixcdFx0XCJmb29cIiwgXCJiYXJcIiwgLTEgICAgfSxcbitcdC8qIGFsbG93IGFuZCBkZW55IGZpbHRlcnMgY29tYmluZWQgKi9cbitcdHsgXCItZiAnKmZvbyovJyAtZiAnIS9iYXInXCIsIFwiZm9vXCIsIFwiZm9vXCIsIHRydWUgIH0sXG4rXHR7IFwiLWYgJypmb28qLycgLWYgJyEvYmFyJ1wiLCBcImZvb1wiLCBcImJhclwiLCBmYWxzZSB9LFxuK1x0eyBcIi1mICcqZm9vKi8nIC1mICchL2JhcidcIiwgXCJiYXJcIiwgXCJmb29cIiwgZmFsc2UgfSxcbit9O1xuK1xuK3N0YXRpYyB2b2lkIHRlc3RfbmFtZV9maWx0ZXJzKHZvaWQpXG4re1xuK1x0c3RydWN0IGZpeHR1cmUgKmZpeCA9IGluaXRfZml4dHVyZSgpO1xuK1x0Y29uc3Qgc3RydWN0IG5hbWVfZmlsdGVyX2Nhc2UgKnQ7XG4rXHRjaGFyIGNtZFs1MTJdLCByb3dbNjRdLCBuYW1lWzEyOF07XG4rXHRpbnQgaSwgZXJyO1xuK1xuK1x0Zm9yIChpID0gMDsgaSBcdTAwM2MgQVJSQVlfU0laRShuYW1lX2ZpbHRlcl9jYXNlcyk7IGkrKykge1xuK1x0XHR0ID0gXHUwMDI2bmFtZV9maWx0ZXJfY2FzZXNbaV07XG4rXHRcdC8qIHN0ZGVyciBpcyBtZXJnZWQgd2l0aCBzdGRvdXQgaW4gb3JkZXIgdG8gY2F0Y2ggZXJyb3IgbWVzc2FnZXMgKi9cbitcdFx0c25wcmludGYoY21kLCBzaXplb2YoY21kKSwgXCIlcyBcIiBGSUxURVJfT0JKUyBcIiAtcSAtbyBjc3YgLWUgZmlsZSxwcm9nICVzIFx1MDAzZSAlcyAyXHUwMDNlXHUwMDI2MVwiLFxuK1x0XHRcdCBmaXgtXHUwMDNldmVyaXN0YXQsIHQtXHUwMDNlZmlsdGVycywgZml4LVx1MDAzZXRtcGZpbGUpO1xuK1x0XHRlcnIgPSBzeXN0ZW0oY21kKTtcbitcdFx0cmVhZF9vdXRwdXQoZml4KTtcbitcbitcdFx0c25wcmludGYocm93LCBzaXplb2Yocm93KSwgXCJ2ZXJpc3RhdF8lcy5icGYubywlc1wiLCB0LVx1MDAzZWZpbGUsIHQtXHUwMDNlcHJvZyk7XG4rXHRcdHNucHJpbnRmKG5hbWUsIHNpemVvZihuYW1lKSwgXCJ2ZXJpc3RhdCAlczogJXNcIiwgdC1cdTAwM2VmaWx0ZXJzLCByb3cpO1xuK1x0XHRzd2l0Y2ggKHQtXHUwMDNlaW5jbHVkZWQpIHtcbitcdFx0Y2FzZSB0cnVlOlxuK1x0XHRcdEFTU0VSVF9PSyhlcnIsIG5hbWUpO1xuK1x0XHRcdEFTU0VSVF9IQVNfU1VCU1RSKGZpeC1cdTAwM2VvdXRwdXQsIHJvdywgbmFtZSk7XG4rXHRcdFx0YnJlYWs7XG4rXHRcdGNhc2UgZmFsc2U6XG4rXHRcdFx0QVNTRVJUX09LKGVyciwgbmFtZSk7XG4rXHRcdFx0QVNTRVJUX0ZBTFNFKCEhc3Ryc3RyKGZpeC1cdTAwM2VvdXRwdXQsIHJvdyksIG5hbWUpO1xuK1x0XHRcdGJyZWFrO1xuK1x0XHRjYXNlIC0xOlxuK1x0XHRcdEFTU0VSVF9ORVEoZXJyLCAwLCBuYW1lKTtcbitcdFx0XHRBU1NFUlRfSEFTX1NVQlNUUihmaXgtXHUwMDNlb3V0cHV0LCBcIkludmFsaWQgZmlsdGVyXCIsIG5hbWUpO1xuK1x0XHRcdGJyZWFrO1xuK1x0XHR9XG4rXHR9XG4rXG4rXHR0ZWFyZG93bl9maXh0dXJlKGZpeCk7XG4rfVxuK1xuIHZvaWQgdGVzdF92ZXJpc3RhdCh2b2lkKVxuIHtcbiBcdGlmICh0ZXN0X19zdGFydF9zdWJ0ZXN0KFwic2V0X2dsb2JhbF92YXJzX3N1Y2NlZWRzXCIpKVxuQEAgLTI1Niw2ICszNTUsOCBAQCB2b2lkIHRlc3RfdmVyaXN0YXQodm9pZClcbiBcdGlmICh0ZXN0X19zdGFydF9zdWJ0ZXN0KFwidGVzdF9ub19hcnJheV9pbmRleF9mb3JfYXJyYXlcIikpXG4gXHRcdHRlc3Rfbm9fYXJyYXlfaW5kZXhfZm9yX2FycmF5KCk7XG4gXG4rXHRpZiAodGVzdF9fc3RhcnRfc3VidGVzdChcIm5hbWVfZmlsdGVyc1wiKSlcbitcdFx0dGVzdF9uYW1lX2ZpbHRlcnMoKTtcbiB9XG4gXG4gI3VuZGVmIF9fQ0hFQ0tfU1RSXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlzdGF0X2Jhci5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlzdGF0X2Jhci5jXG5uZXcgZmlsZSBtb2RlIDEwMDY0NFxuaW5kZXggMDAwMDAwMDAwMDAwMC4uODNkMmEyYTFkZmM5NlxuLS0tIC9kZXYvbnVsbFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlzdGF0X2Jhci5jXG5AQCAtMCwwICsxLDMgQEBcbisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxuKy8qIENvcHlyaWdodCAoYykgMjAyNiBNZXRhIFBsYXRmb3JtcywgSW5jLiBhbmQgYWZmaWxpYXRlcy4gKi9cbisjaW5jbHVkZSBcInZlcmlzdGF0X2Zvby5jXCJcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaXN0YXRfZm9vLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaXN0YXRfZm9vLmNcbm5ldyBmaWxlIG1vZGUgMTAwNjQ0XG5pbmRleCAwMDAwMDAwMDAwMDAwLi5iZDI0Yjk3NjY0YjQ5XG4tLS0gL2Rldi9udWxsXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaXN0YXRfZm9vLmNcbkBAIC0wLDAgKzEsMzEgQEBcbisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxuKy8qIENvcHlyaWdodCAoYykgMjAyNiBNZXRhIFBsYXRmb3JtcywgSW5jLiBhbmQgYWZmaWxpYXRlcy4gKi9cbisjaW5jbHVkZSBcdTAwM2NsaW51eC9icGYuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2JwZi9icGZfaGVscGVycy5oXHUwMDNlXG4rXG4rLypcbisgKiBQcm9ncmFtcyBiZWxvdyBleGlzdCBvbmx5IHRvIGV4ZXJjaXNlIHZlcmlzdGF0J3MgLWYgbmFtZSBmaWx0ZXJzLFxuKyAqIHRoZWlyIGJvZGllcyBhcmUgaXJyZWxldmFudCwgb25seSB0aGUgbmFtZXMgbWF0dGVyLlxuKyAqIFRoaXMgZmlsZSBpcyBhbHNvIGluY2x1ZGVkIGJ5IHZlcmlzdGF0X2Jhci5jLCBzbyB0aGF0IHRoZSBzYW1lIHNldCBvZlxuKyAqIHByb2dyYW0gbmFtZXMgaXMgYXZhaWxhYmxlIGluIHR3byBkaWZmZXJlbnRseSBuYW1lZCBvYmplY3QgZmlsZXMuXG4rICovXG4rXG4rU0VDKFwic29ja2V0XCIpXG4raW50IGZvbyh2b2lkICpjdHgpXG4re1xuK1x0cmV0dXJuIDA7XG4rfVxuK1xuK1NFQyhcInNvY2tldFwiKVxuK2ludCBiYXIodm9pZCAqY3R4KVxuK3tcbitcdHJldHVybiAwO1xuK31cbitcbitTRUMoXCJzb2NrZXRcIilcbitpbnQgYnV6KHZvaWQgKmN0eClcbit7XG4rXHRyZXR1cm4gMDtcbit9XG4rXG4rY2hhciBfbGljZW5zZVtdIFNFQyhcImxpY2Vuc2VcIikgPSBcIkdQTFwiO1xuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi92ZXJpc3RhdC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3ZlcmlzdGF0LmNcbmluZGV4IGM5YzI1Nzc4NGVlM2QuLjZhYWEwNjc5MGRhYTIgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdmVyaXN0YXQuY1xuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3ZlcmlzdGF0LmNcbkBAIC01MTQsNiArNTE0LDQwIEBAIHN0YXRpYyBib29sIGlzX2JwZl9vYmpfZmlsZShjb25zdCBjaGFyICpwYXRoKSB7XG4gXHRyZXR1cm4gZXJyID09IDA7XG4gfVxuIFxuKy8qIEV4YWN0IGZpbHRlciBtYXRjaCAqL1xuK3N0YXRpYyBib29sIG5hbWVfZmlsdGVyX21hdGNoZXMoc3RydWN0IGZpbHRlciAqZiwgY29uc3QgY2hhciAqZmlsZW5hbWUsIGNvbnN0IGNoYXIgKnByb2dfbmFtZSlcbit7XG4rXHRpZiAoZi1cdTAwM2VhbnlfZ2xvYilcbitcdFx0cmV0dXJuIGdsb2JfbWF0Y2hlcyhmaWxlbmFtZSwgZi1cdTAwM2VhbnlfZ2xvYikgfHxcbitcdFx0ICAgICAgIChwcm9nX25hbWUgXHUwMDI2XHUwMDI2IGdsb2JfbWF0Y2hlcyhwcm9nX25hbWUsIGYtXHUwMDNlYW55X2dsb2IpKTtcbitcdGlmIChmLVx1MDAzZWZpbGVfZ2xvYiBcdTAwMjZcdTAwMjYgZi1cdTAwM2Vwcm9nX2dsb2IpXG4rXHRcdHJldHVybiBwcm9nX25hbWUgXHUwMDI2XHUwMDI2XG4rXHRcdCAgICAgICBnbG9iX21hdGNoZXMoZmlsZW5hbWUsIGYtXHUwMDNlZmlsZV9nbG9iKSBcdTAwMjZcdTAwMjZcbitcdFx0ICAgICAgIGdsb2JfbWF0Y2hlcyhwcm9nX25hbWUsIGYtXHUwMDNlcHJvZ19nbG9iKTtcbitcdGlmIChmLVx1MDAzZWZpbGVfZ2xvYilcbitcdFx0cmV0dXJuIGdsb2JfbWF0Y2hlcyhmaWxlbmFtZSwgZi1cdTAwM2VmaWxlX2dsb2IpO1xuK1x0aWYgKGYtXHUwMDNlcHJvZ19nbG9iKVxuK1x0XHRyZXR1cm4gcHJvZ19uYW1lIFx1MDAyNlx1MDAyNiBnbG9iX21hdGNoZXMocHJvZ19uYW1lLCBmLVx1MDAzZXByb2dfZ2xvYik7XG4rXHRyZXR1cm4gZmFsc2U7XG4rfVxuK1xuKy8qIENoZWNrIGlmIHRoZSBmaWx0ZXIgZG9lcyBub3Qgb3V0cmlnaHQgcmVqZWN0IHRoZSBmaWxlIG5hbWUgKi9cbitzdGF0aWMgYm9vbCBuYW1lX2ZpbHRlcl9tYXlfbWF0Y2goc3RydWN0IGZpbHRlciAqZiwgY29uc3QgY2hhciAqZmlsZW5hbWUpXG4re1xuK1x0aWYgKGYtXHUwMDNlZmlsZV9nbG9iKVxuK1x0XHRyZXR1cm4gZ2xvYl9tYXRjaGVzKGZpbGVuYW1lLCBmLVx1MDAzZWZpbGVfZ2xvYik7XG4rXHQvKlxuK1x0ICogSWYgd2UgZG9uJ3Qga25vdyBwcm9ncmFtIG5hbWUgeWV0LCBhbnlfZ2xvYiBmaWx0ZXJcbitcdCAqIGhhcyB0byBhc3N1bWUgdGhhdCBjdXJyZW50IEJQRiBvYmplY3QgZmlsZSBtaWdodCBiZVxuK1x0ICogcmVsZXZhbnQ7IHdlJ2xsIGNoZWNrIGFnYWluIGxhdGVyIG9uIGFmdGVyIG9wZW5pbmdcbitcdCAqIEJQRiBvYmplY3QgZmlsZSwgYXQgd2hpY2ggcG9pbnQgcHJvZ3JhbSBuYW1lIHdpbGxcbitcdCAqIGJlIGtub3duIGZpbmFsbHkuXG4rXHQgKi9cbitcdGlmIChmLVx1MDAzZWFueV9nbG9iIHx8IGYtXHUwMDNlcHJvZ19nbG9iKVxuK1x0XHRyZXR1cm4gdHJ1ZTtcbitcdHJldHVybiBmYWxzZTtcbit9XG4rXG4gc3RhdGljIGJvb2wgc2hvdWxkX3Byb2Nlc3NfZmlsZV9wcm9nKGNvbnN0IGNoYXIgKmZpbGVuYW1lLCBjb25zdCBjaGFyICpwcm9nX25hbWUpXG4ge1xuIFx0c3RydWN0IGZpbHRlciAqZjtcbkBAIC01MjEsMTYgKzU1NSw3IEBAIHN0YXRpYyBib29sIHNob3VsZF9wcm9jZXNzX2ZpbGVfcHJvZyhjb25zdCBjaGFyICpmaWxlbmFtZSwgY29uc3QgY2hhciAqcHJvZ19uYW1lXG4gXG4gXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBlbnYuZGVueV9maWx0ZXJfY250OyBpKyspIHtcbiBcdFx0ZiA9IFx1MDAyNmVudi5kZW55X2ZpbHRlcnNbaV07XG4tXHRcdGlmIChmLVx1MDAzZWtpbmQgIT0gRklMVEVSX05BTUUpXG4tXHRcdFx0Y29udGludWU7XG4tXG4tXHRcdGlmIChmLVx1MDAzZWFueV9nbG9iIFx1MDAyNlx1MDAyNiBnbG9iX21hdGNoZXMoZmlsZW5hbWUsIGYtXHUwMDNlYW55X2dsb2IpKVxuLVx0XHRcdHJldHVybiBmYWxzZTtcbi1cdFx0aWYgKGYtXHUwMDNlYW55X2dsb2IgXHUwMDI2XHUwMDI2IHByb2dfbmFtZSBcdTAwMjZcdTAwMjYgZ2xvYl9tYXRjaGVzKHByb2dfbmFtZSwgZi1cdTAwM2VhbnlfZ2xvYikpXG4tXHRcdFx0cmV0dXJuIGZhbHNlO1xuLVx0XHRpZiAoZi1cdTAwM2VmaWxlX2dsb2IgXHUwMDI2XHUwMDI2IGdsb2JfbWF0Y2hlcyhmaWxlbmFtZSwgZi1cdTAwM2VmaWxlX2dsb2IpKVxuLVx0XHRcdHJldHVybiBmYWxzZTtcbi1cdFx0aWYgKGYtXHUwMDNlcHJvZ19nbG9iIFx1MDAyNlx1MDAyNiBwcm9nX25hbWUgXHUwMDI2XHUwMDI2IGdsb2JfbWF0Y2hlcyhwcm9nX25hbWUsIGYtXHUwMDNlcHJvZ19nbG9iKSlcbitcdFx0aWYgKGYtXHUwMDNla2luZCA9PSBGSUxURVJfTkFNRSBcdTAwMjZcdTAwMjYgbmFtZV9maWx0ZXJfbWF0Y2hlcyhmLCBmaWxlbmFtZSwgcHJvZ19uYW1lKSlcbiBcdFx0XHRyZXR1cm4gZmFsc2U7XG4gXHR9XG4gXG5AQCAtNTQwLDI0ICs1NjUsMTUgQEAgc3RhdGljIGJvb2wgc2hvdWxkX3Byb2Nlc3NfZmlsZV9wcm9nKGNvbnN0IGNoYXIgKmZpbGVuYW1lLCBjb25zdCBjaGFyICpwcm9nX25hbWVcbiBcdFx0XHRjb250aW51ZTtcbiBcbiBcdFx0YWxsb3dfY250Kys7XG4tXHRcdGlmIChmLVx1MDAzZWFueV9nbG9iKSB7XG4tXHRcdFx0aWYgKGdsb2JfbWF0Y2hlcyhmaWxlbmFtZSwgZi1cdTAwM2VhbnlfZ2xvYikpXG4tXHRcdFx0XHRyZXR1cm4gdHJ1ZTtcbi1cdFx0XHQvKiBJZiB3ZSBkb24ndCBrbm93IHByb2dyYW0gbmFtZSB5ZXQsIGFueV9nbG9iIGZpbHRlclxuLVx0XHRcdCAqIGhhcyB0byBhc3N1bWUgdGhhdCBjdXJyZW50IEJQRiBvYmplY3QgZmlsZSBtaWdodCBiZVxuLVx0XHRcdCAqIHJlbGV2YW50OyB3ZSdsbCBjaGVjayBhZ2FpbiBsYXRlciBvbiBhZnRlciBvcGVuaW5nXG4tXHRcdFx0ICogQlBGIG9iamVjdCBmaWxlLCBhdCB3aGljaCBwb2ludCBwcm9ncmFtIG5hbWUgd2lsbFxuLVx0XHRcdCAqIGJlIGtub3duIGZpbmFsbHkuXG4tXHRcdFx0ICovXG4tXHRcdFx0aWYgKCFwcm9nX25hbWUgfHwgZ2xvYl9tYXRjaGVzKHByb2dfbmFtZSwgZi1cdTAwM2VhbnlfZ2xvYikpXG4tXHRcdFx0XHRyZXR1cm4gdHJ1ZTtcbi1cdFx0fSBlbHNlIHtcbi1cdFx0XHRpZiAoZi1cdTAwM2VmaWxlX2dsb2IgXHUwMDI2XHUwMDI2ICFnbG9iX21hdGNoZXMoZmlsZW5hbWUsIGYtXHUwMDNlZmlsZV9nbG9iKSlcbi1cdFx0XHRcdGNvbnRpbnVlO1xuLVx0XHRcdGlmIChmLVx1MDAzZXByb2dfZ2xvYiBcdTAwMjZcdTAwMjYgcHJvZ19uYW1lIFx1MDAyNlx1MDAyNiAhZ2xvYl9tYXRjaGVzKHByb2dfbmFtZSwgZi1cdTAwM2Vwcm9nX2dsb2IpKVxuLVx0XHRcdFx0Y29udGludWU7XG4rXHRcdGlmIChwcm9nX25hbWUgXHUwMDI2XHUwMDI2IG5hbWVfZmlsdGVyX21hdGNoZXMoZiwgZmlsZW5hbWUsIHByb2dfbmFtZSkpXG4rXHRcdFx0cmV0dXJuIHRydWU7XG4rXHRcdC8qXG4rXHRcdCAqIElmIHRoZXJlIGlzIG5vIHByb2dfbmFtZSBhbmQgdGhlIGZpbGUgbmFtZSBpcyBub3QgYmxvY2tlZCBieVxuK1x0XHQgKiB0aGUgZmlsdGVyLCBhbGxvdyB0byBvcGVuIHRoZSBmaWxlLiBBZnRlcndhcmRzIHRoZXJlIHdvdWxkIGJlXG4rXHRcdCAqIGEgc2Vjb25kIHJlZmluaW5nIHF1ZXJ5IHdpdGggcHJvZ19uYW1lIHNldC5cbitcdFx0ICovXG4rXHRcdGlmICghcHJvZ19uYW1lIFx1MDAyNlx1MDAyNiBuYW1lX2ZpbHRlcl9tYXlfbWF0Y2goZiwgZmlsZW5hbWUpKVxuIFx0XHRcdHJldHVybiB0cnVlO1xuLVx0XHR9XG4gXHR9XG4gXG4gXHQvKiBpZiB0aGVyZSBhcmUgbm8gZmlsZS9wcm9nIG5hbWUgYWxsb3cgZmlsdGVycywgYWxsb3cgYWxsIHByb2dzLFxuQEAgLTcwMyw2ICs3MTksMTIgQEAgc3RhdGljIGludCBhcHBlbmRfZmlsdGVyKHN0cnVjdCBmaWx0ZXIgKipmaWx0ZXJzLCBpbnQgKmNudCwgY29uc3QgY2hhciAqc3RyKVxuIFx0XHR9XG4gXHR9XG4gXG4rXHRpZiAoKCFmLVx1MDAzZWFueV9nbG9iIFx1MDAyNlx1MDAyNiAhZi1cdTAwM2VmaWxlX2dsb2IgXHUwMDI2XHUwMDI2ICFmLVx1MDAzZXByb2dfZ2xvYikgfHxcbitcdCAgICAoZi1cdTAwM2VhbnlfZ2xvYiBcdTAwMjZcdTAwMjYgc3RyY21wKGYtXHUwMDNlYW55X2dsb2IsIFwiXCIpID09IDApKSB7XG4rXHRcdGZwcmludGYoc3RkZXJyLCBcIkludmFsaWQgZmlsdGVyOiAnJXMnXFxuXCIsIHN0cik7XG4rXHRcdHJldHVybiAtRUlOVkFMO1xuK1x0fVxuK1xuIFx0KmNudCArPSAxO1xuIFx0cmV0dXJuIDA7XG4gfVxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMDY6MDk6MjUuOTM4Njk4MTY4WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjI5NjI5NDExOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIERlY2lzaW9uIGZvciBUaGlzIFBhdGNoIFNlcmllcyoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCBhc3Nlc3NtZW50IGlzIHRoYXQgdGhpcyBwYXRjaCBzZXJpZXMgZG9lc24ndCBuZWNlc3NpdGF0ZSBmdXp6aW5nLiBNeSByZWFzb25pbmcgaXMgc3RyYWlnaHRmb3J3YXJkOiB0aGUgY2hhbmdlcyBhcmUgY29udGFpbmVkIHdpdGhpbiB0aGUgYHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9gIGRpcmVjdG9yeS4gU3BlY2lmaWNhbGx5LCBpdCB0b3VjaGVzIGB0ZXN0X3ZlcmlzdGF0LmNgLCBgdmVyaXN0YXRfYmFyLmNgLCBgdmVyaXN0YXRfZm9vLmNgLCBhbmQgYHZlcmlzdGF0LmNgLiBBbGwgaW5kaWNhdGlvbnMgYXJlIHRoYXQgdGhlc2UgYXJlICpwdXJlbHkqIHNlbGZ0ZXN0cyBhbmQgdGhlIGB2ZXJpc3RhdGAgdG9vbCBpdHNlbGYuIFRoZXJlJ3Mgbm90aGluZyBoZXJlIHRoYXQgaW1wYWN0cyB0aGUgY29yZSBrZXJuZWwsIGFueSBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmUtc3BlY2lmaWMgY29kZS4gVGhlcmVmb3JlLCBmcm9tIGEgZnVuY3Rpb25hbCBwZXJzcGVjdGl2ZSwgdGhlcmUncyBub3RoaW5nIHRvIGZ1enouXG5cbkp1c3QgdG8gYmUgYWJzb2x1dGVseSBjZXJ0YWluLCBJJ2xsIHF1aWNrbHkgcmUtY29uZmlybSB0aGUgZmlsZSBsaXN0OiBgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvdGVzdF92ZXJpc3RhdC5jYCwgYHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpc3RhdF9iYXIuY2AsIGB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaXN0YXRfZm9vLmNgLCBhbmQgYHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi92ZXJpc3RhdC5jYC4gWWVwLCBhbGwgaW4gdGhlIHRlc3Qgc3VpdGUgYW5kIHVzZXItc3BhY2UgdG9vbGluZy4gTm8ga2VybmVsIGNvZGUgaXMgYmVpbmcgbW9kaWZpZWQgaGVyZS4gSSdtIGNvbmZpZGVudCBpbiBjYWxsaW5nIHRoaXMgYFdvcnRoRnV6emluZz1mYWxzZWAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY1MjgsIk91dHB1dFRva2VucyI6NjMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNDUsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQwNjowOTozMi4yMzQ5OTY0MjdaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI4MjQwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgdXNlci1zcGFjZSBCUEYgc2VsZnRlc3RzIGFuZCB0aGUgdmVyaXN0YXQgdG9vbC4gSXQgZG9lcyBub3QgbWFrZSBhbnkgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgY29kZSBpdHNlbGYuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IG1vZGlmaWVzIHVzZXItc3BhY2UgQlBGIHNlbGZ0ZXN0cyBhbmQgdGhlIHZlcmlzdGF0IHRvb2wuIEl0IGRvZXMgbm90IG1ha2UgYW55IGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIGNvZGUgaXRzZWxmLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMDY6MDk6MzIuMjM1MDI5NDY3WiIsIlNlcSI6NSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ0NTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },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-workflow5w6zn[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-12 06:07:49 +0000 UTC FinishedAt: 2026-08-12 06:09:33 +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+CgkJCTx0ZD4yMDI2LzA4LzEyIDA2OjA5PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggb25seSBtb2RpZmllcyB1c2VyLXNwYWNlIEJQRiBzZWxmdGVzdHMgYW5kIHRoZSB2ZXJpc3RhdCB0b29sLiBJdCBkb2VzIG5vdCBtYWtlIGFueSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCBjb2RlIGl0c2VsZi4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMDY6MDk8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA1NzE0NjIyYTEwYTkyNThhNTBjNGQ1YmRkMmM1OTIwNDViYWRkODg0XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBBdWcgMTIgMDY6MDk6MjQgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvdGVzdF92ZXJpc3RhdC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvdGVzdF92ZXJpc3RhdC5jXG5pbmRleCA5YWZmMDhhYzU1YzA3Li4xMWYzZGUyYjY2YWQxIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvdGVzdF92ZXJpc3RhdC5jXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy90ZXN0X3ZlcmlzdGF0LmNcbkBAIC0zNyw2ICYjNDM7MzcsMTQgQEAgc3RhdGljIHN0cnVjdCBmaXh0dXJlICppbml0X2ZpeHR1cmUodm9pZClcbiBcdHJldHVybiBmaXg7XG4gfVxuIFxuJiM0MztzdGF0aWMgdm9pZCByZWFkX291dHB1dChzdHJ1Y3QgZml4dHVyZSAqZml4KVxuJiM0Mzt7XG4mIzQzO1x0c3NpemVfdCBsZW4gPSBwcmVhZChmaXgtXHUwMDNlZmQsIGZpeC1cdTAwM2VvdXRwdXQsIGZpeC1cdTAwM2VzeiAtIDEsIDApO1xuJiM0MztcbiYjNDM7XHRmaXgtXHUwMDNlb3V0cHV0W2xlbiBcdTAwM2MgMCA/IDAgOiBsZW5dID0gMDtcbiYjNDM7XHRBU1NFUlRfR0UobGVuLCAwLCBcJiMzNDtwcmVhZFwmIzM0Oyk7XG4mIzQzO31cbiYjNDM7XG4gc3RhdGljIHZvaWQgdGVhcmRvd25fZml4dHVyZShzdHJ1Y3QgZml4dHVyZSAqZml4KVxuIHtcbiBcdGZyZWUoZml4LVx1MDAzZW91dHB1dCk7XG5AQCAtNzQsNyAmIzQzOzgyLDcgQEAgc3RhdGljIHZvaWQgdGVzdF9zZXRfZ2xvYmFsX3ZhcnNfc3VjY2VlZHModm9pZClcbiBcdCAgICBcJiMzNDsgLUcgXFxcJiMzNDtzdHJ1Y3QxMSBbIDcgXSBbIDUgXSAuc3RydWN0MlswXVsxXS51Lm1hdFszXVswXSA9IDE3NVxcXCYjMzQ7IFwmIzM0OyBcXFxuIFx0ICAgIFwmIzM0OyAtdmwyIFx1MDAzZSAlc1wmIzM0OywgZml4LVx1MDAzZXZlcmlzdGF0LCBmaXgtXHUwMDNldG1wZmlsZSk7XG4gXG4tXHRyZWFkKGZpeC1cdTAwM2VmZCwgZml4LVx1MDAzZW91dHB1dCwgZml4LVx1MDAzZXN6KTtcbiYjNDM7XHRyZWFkX291dHB1dChmaXgpO1xuIFx0X19DSEVDS19TVFIoXCYjMzQ7PTB4ZjAwMDAwMDAwMDAwMDAwMSBcJiMzNDssIFwmIzM0O3Zhcl9zNjQgPSAweGYwMDAwMDAwMDAwMDAwMDFcJiMzNDspO1xuIFx0X19DSEVDS19TVFIoXCYjMzQ7PTB4ZmVkY2JhOTg3NjU0MzIxMCBcJiMzNDssIFwmIzM0O3Zhcl91NjQgPSAweGZlZGNiYTk4NzY1NDMyMTBcJiMzNDspO1xuIFx0X19DSEVDS19TVFIoXCYjMzQ7PTB4ODAwMDAwMDAgXCYjMzQ7LCBcJiMzNDt2YXJfczMyID0gLTB4ODAwMDAwMDBcJiMzNDspO1xuQEAgLTExNiw3ICYjNDM7MTI0LDcgQEAgc3RhdGljIHZvaWQgdGVzdF9zZXRfZ2xvYmFsX3ZhcnNfZnJvbV9maWxlX3N1Y2NlZWRzKHZvaWQpXG4gXHRzeW5jZnMoZmQpO1xuIFx0U1lTKG91dCwgXCYjMzQ7JXMgc2V0X2dsb2JhbF92YXJzLmJwZi5vIC1HIFxcXCYjMzQ7QCVzXFxcJiMzNDsgLXZsMiBcdTAwM2UgJXNcJiMzNDssXG4gXHQgICAgZml4LVx1MDAzZXZlcmlzdGF0LCBpbnB1dF9maWxlLCBmaXgtXHUwMDNldG1wZmlsZSk7XG4tXHRyZWFkKGZpeC1cdTAwM2VmZCwgZml4LVx1MDAzZW91dHB1dCwgZml4LVx1MDAzZXN6KTtcbiYjNDM7XHRyZWFkX291dHB1dChmaXgpO1xuIFx0X19DSEVDS19TVFIoXCYjMzQ7PTB4ODAwMCBcJiMzNDssIFwmIzM0O3Zhcl9zMTYgPSAtMzI3NjhcJiMzNDspO1xuIFx0X19DSEVDS19TVFIoXCYjMzQ7PTB4ZWNlYyBcJiMzNDssIFwmIzM0O3Zhcl91MTYgPSA2MDY1MlwmIzM0Oyk7XG4gXG5AQCAtMTM0LDcgJiM0MzsxNDIsNyBAQCBzdGF0aWMgdm9pZCB0ZXN0X3NldF9nbG9iYWxfdmFyc19vdXRfb2ZfcmFuZ2Uodm9pZClcbiBcdFx0IFwmIzM0OyVzIHNldF9nbG9iYWxfdmFycy5icGYubyAtRyBcXFwmIzM0O3Zhcl9zMzIgPSAyMTQ3NDgzNjQ4XFxcJiMzNDsgLXZsMiAyXHUwMDNlICVzXCYjMzQ7LFxuIFx0XHQgZml4LVx1MDAzZXZlcmlzdGF0LCBmaXgtXHUwMDNldG1wZmlsZSk7XG4gXG4tXHRyZWFkKGZpeC1cdTAwM2VmZCwgZml4LVx1MDAzZW91dHB1dCwgZml4LVx1MDAzZXN6KTtcbiYjNDM7XHRyZWFkX291dHB1dChmaXgpO1xuIFx0X19DSEVDS19TVFIoXCYjMzQ7aXMgb3V0IG9mIHJhbmdlIFstMjE0NzQ4MzY0ODsgMjE0NzQ4MzY0N11cJiMzNDssIFwmIzM0O291dCBvZiByYW5nZVwmIzM0Oyk7XG4gXG4gb3V0OlxuQEAgLTE0OSw3ICYjNDM7MTU3LDcgQEAgc3RhdGljIHZvaWQgdGVzdF91bnN1cHBvcnRlZF9wdHJfYXJyYXlfdHlwZSh2b2lkKVxuIFx0XHQgXCYjMzQ7JXMgc2V0X2dsb2JhbF92YXJzLmJwZi5vIC1HIFxcXCYjMzQ7cHRyX2FyclswXSA9IDBcXFwmIzM0OyAtdmwyIDJcdTAwM2UgJXNcJiMzNDssXG4gXHRcdCBmaXgtXHUwMDNldmVyaXN0YXQsIGZpeC1cdTAwM2V0bXBmaWxlKTtcbiBcbi1cdHJlYWQoZml4LVx1MDAzZWZkLCBmaXgtXHUwMDNlb3V0cHV0LCBmaXgtXHUwMDNlc3opO1xuJiM0MztcdHJlYWRfb3V0cHV0KGZpeCk7XG4gXHRfX0NIRUNLX1NUUihcJiMzNDtDYW4mIzM5O3Qgc2V0IHB0cl9hcnJbMF0uIE9ubHkgaW50cyBhbmQgZW51bXMgYXJlIHN1cHBvcnRlZFwmIzM0OywgXCYjMzQ7cHRyX2FyclwmIzM0Oyk7XG4gXG4gb3V0OlxuQEAgLTE2NCw3ICYjNDM7MTcyLDcgQEAgc3RhdGljIHZvaWQgdGVzdF9hcnJheV9vdXRfb2ZfYm91bmRzKHZvaWQpXG4gXHRcdCBcJiMzNDslcyBzZXRfZ2xvYmFsX3ZhcnMuYnBmLm8gLUcgXFxcJiMzNDthcnJbOTldID0gMFxcXCYjMzQ7IC12bDIgMlx1MDAzZSAlc1wmIzM0OyxcbiBcdFx0IGZpeC1cdTAwM2V2ZXJpc3RhdCwgZml4LVx1MDAzZXRtcGZpbGUpO1xuIFxuLVx0cmVhZChmaXgtXHUwMDNlZmQsIGZpeC1cdTAwM2VvdXRwdXQsIGZpeC1cdTAwM2Vzeik7XG4mIzQzO1x0cmVhZF9vdXRwdXQoZml4KTtcbiBcdF9fQ0hFQ0tfU1RSKFwmIzM0O0FycmF5IGluZGV4IDk5IGlzIG91dCBvZiBib3VuZHNcJiMzNDssIFwmIzM0O2Fycls5OV1cJiMzNDspO1xuIFxuIG91dDpcbkBAIC0xNzksNyAmIzQzOzE4Nyw3IEBAIHN0YXRpYyB2b2lkIHRlc3RfYXJyYXlfaW5kZXhfbm90X2ZvdW5kKHZvaWQpXG4gXHRcdCBcJiMzNDslcyBzZXRfZ2xvYmFsX3ZhcnMuYnBmLm8gLUcgXFxcJiMzNDthcnJbRUcyXSA9IDBcXFwmIzM0OyAtdmwyIDJcdTAwM2UgJXNcJiMzNDssXG4gXHRcdCBmaXgtXHUwMDNldmVyaXN0YXQsIGZpeC1cdTAwM2V0bXBmaWxlKTtcbiBcbi1cdHJlYWQoZml4LVx1MDAzZWZkLCBmaXgtXHUwMDNlb3V0cHV0LCBmaXgtXHUwMDNlc3opO1xuJiM0MztcdHJlYWRfb3V0cHV0KGZpeCk7XG4gXHRfX0NIRUNLX1NUUihcJiMzNDtDYW4mIzM5O3QgcmVzb2x2ZSBlbnVtIHZhbHVlIEVHMlwmIzM0OywgXCYjMzQ7YXJyW0VHMl1cJiMzNDspO1xuIFxuIG91dDpcbkBAIC0yMzAsNiAmIzQzOzIzOCw5NyBAQCBzdGF0aWMgdm9pZCB0ZXN0X25vX2FycmF5X2luZGV4X2Zvcl9hcnJheSh2b2lkKVxuIFx0dGVhcmRvd25fZml4dHVyZShmaXgpO1xuIH1cbiBcbiYjNDM7LypcbiYjNDM7ICogTmFtZSBmaWx0ZXIgdGVzdHMgYmVsb3cgcnVuIHZlcmlzdGF0IG9uIHZlcmlzdGF0X2Zvby5icGYubyBhbmRcbiYjNDM7ICogdmVyaXN0YXRfYmFyLmJwZi5vLCBib3RoIGRlZmluaW5nIHByb2dyYW1zICYjMzk7Zm9vJiMzOTssICYjMzk7YmFyJiMzOTsgYW5kICYjMzk7YnV6JiMzOTsuXG4mIzQzOyAqIEV2ZXJ5IGVudHJ5IGRlc2NyaWJlcyBhIHNpbmdsZSAoZmlsdGVycywgZmlsZSwgcHJvZykgY29tYmluYXRpb24gYW5kXG4mIzQzOyAqIHRlbGxzIHdoZXRoZXIgdGhhdCBwcm9ncmFtIGlzIGV4cGVjdGVkIGluIHRoZSB2ZXJpc3RhdCBvdXRwdXQ6XG4mIzQzOyAqICYjMzk7dHJ1ZSYjMzk7IGlmIGl0IGlzLCAmIzM5O2ZhbHNlJiMzOTsgaWYgaXQgaXMgbm90IGFuZCAtMSBpZiB2ZXJpc3RhdCBpcyBleHBlY3RlZFxuJiM0MzsgKiB0byByZWplY3QgdGhlIGZpbHRlci5cbiYjNDM7ICovXG4mIzQzOyNkZWZpbmUgRklMVEVSX09CSlMgXCYjMzQ7dmVyaXN0YXRfZm9vLmJwZi5vIHZlcmlzdGF0X2Jhci5icGYub1wmIzM0O1xuJiM0MztcbiYjNDM7c3RhdGljIGNvbnN0IHN0cnVjdCBuYW1lX2ZpbHRlcl9jYXNlIHtcbiYjNDM7XHRjb25zdCBjaGFyICpmaWx0ZXJzO1xuJiM0MztcdGNvbnN0IGNoYXIgKmZpbGU7XG4mIzQzO1x0Y29uc3QgY2hhciAqcHJvZztcbiYjNDM7XHRpbnQgaW5jbHVkZWQ7XG4mIzQzO30gbmFtZV9maWx0ZXJfY2FzZXNbXSA9IHtcbiYjNDM7XHQvKiBubyBmaWx0ZXJzLCBldmVyeSBwcm9ncmFtIGlzIHByb2Nlc3NlZCAqL1xuJiM0MztcdHsgXCYjMzQ7XCYjMzQ7LFx0XHRcdFwmIzM0O2Zvb1wmIzM0OywgXCYjMzQ7Zm9vXCYjMzQ7LCB0cnVlICB9LFxuJiM0MztcdHsgXCYjMzQ7XCYjMzQ7LFx0XHRcdFwmIzM0O2Zvb1wmIzM0OywgXCYjMzQ7YmFyXCYjMzQ7LCB0cnVlICB9LFxuJiM0MztcdHsgXCYjMzQ7XCYjMzQ7LFx0XHRcdFwmIzM0O2Zvb1wmIzM0OywgXCYjMzQ7YnV6XCYjMzQ7LCB0cnVlICB9LFxuJiM0MztcdHsgXCYjMzQ7XCYjMzQ7LFx0XHRcdFwmIzM0O2JhclwmIzM0OywgXCYjMzQ7Zm9vXCYjMzQ7LCB0cnVlICB9LFxuJiM0MztcdHsgXCYjMzQ7XCYjMzQ7LFx0XHRcdFwmIzM0O2JhclwmIzM0OywgXCYjMzQ7YmFyXCYjMzQ7LCB0cnVlICB9LFxuJiM0MztcdHsgXCYjMzQ7XCYjMzQ7LFx0XHRcdFwmIzM0O2JhclwmIzM0OywgXCYjMzQ7YnV6XCYjMzQ7LCB0cnVlICB9LFxuJiM0MztcdC8qIGRlbnkgZmlsdGVycyAqL1xuJiM0MztcdHsgXCYjMzQ7LWYgJiMzOTshKmZvbyomIzM5O1wmIzM0OyxcdFwmIzM0O2Zvb1wmIzM0OywgXCYjMzQ7YmFyXCYjMzQ7LCBmYWxzZSB9LFxuJiM0MztcdHsgXCYjMzQ7LWYgJiMzOTshKmZvbyomIzM5O1wmIzM0OyxcdFwmIzM0O2JhclwmIzM0OywgXCYjMzQ7Zm9vXCYjMzQ7LCBmYWxzZSB9LFxuJiM0MztcdHsgXCYjMzQ7LWYgJiMzOTshKmZvbyomIzM5O1wmIzM0OyxcdFwmIzM0O2JhclwmIzM0OywgXCYjMzQ7YmFyXCYjMzQ7LCB0cnVlICB9LFxuJiM0MztcdHsgXCYjMzQ7LWYgJiMzOTshKmZvbyovYmFyJiMzOTtcJiMzNDssXHRcJiMzNDtmb29cJiMzNDssIFwmIzM0O2JhclwmIzM0OywgZmFsc2UgfSxcbiYjNDM7XHR7IFwmIzM0Oy1mICYjMzk7ISpmb28qL2JhciYjMzk7XCYjMzQ7LFx0XCYjMzQ7Zm9vXCYjMzQ7LCBcJiMzNDtidXpcJiMzNDssIHRydWUgIH0sXG4mIzQzO1x0eyBcJiMzNDstZiAmIzM5OyEqZm9vKi9iYXImIzM5O1wmIzM0OyxcdFwmIzM0O2JhclwmIzM0OywgXCYjMzQ7YmFyXCYjMzQ7LCB0cnVlICB9LFxuJiM0MztcdHsgXCYjMzQ7LWYgJiMzOTshKmZvbyovJiMzOTtcJiMzNDssXHRcJiMzNDtmb29cJiMzNDssIFwmIzM0O2JhclwmIzM0OywgZmFsc2UgfSxcbiYjNDM7XHR7IFwmIzM0Oy1mICYjMzk7ISpmb28qLyYjMzk7XCYjMzQ7LFx0XCYjMzQ7YmFyXCYjMzQ7LCBcJiMzNDtiYXJcJiMzNDssIHRydWUgIH0sXG4mIzQzO1x0eyBcJiMzNDstZiAmIzM5OyEvYmFyJiMzOTtcJiMzNDssXHRcdFwmIzM0O2Zvb1wmIzM0OywgXCYjMzQ7YmFyXCYjMzQ7LCBmYWxzZSB9LFxuJiM0MztcdHsgXCYjMzQ7LWYgJiMzOTshL2JhciYjMzk7XCYjMzQ7LFx0XHRcJiMzNDtmb29cJiMzNDssIFwmIzM0O2Zvb1wmIzM0OywgdHJ1ZSAgfSxcbiYjNDM7XHR7IFwmIzM0Oy1mICYjMzk7IS8mIzM5O1wmIzM0OyxcdFx0XCYjMzQ7Zm9vXCYjMzQ7LCBcJiMzNDtiYXJcJiMzNDssIC0xICAgIH0sXG4mIzQzO1x0eyBcJiMzNDstZiAmIzM5OyEmIzM5O1wmIzM0OyxcdFx0XCYjMzQ7Zm9vXCYjMzQ7LCBcJiMzNDtiYXJcJiMzNDssIC0xICAgIH0sXG4mIzQzO1x0LyogYWxsb3cgZmlsdGVycyAqL1xuJiM0MztcdHsgXCYjMzQ7LWYgJiMzOTsqZm9vKiYjMzk7XCYjMzQ7LFx0XHRcJiMzNDtmb29cJiMzNDssIFwmIzM0O2JhclwmIzM0OywgdHJ1ZSAgfSxcbiYjNDM7XHR7IFwmIzM0Oy1mICYjMzk7KmZvbyomIzM5O1wmIzM0OyxcdFx0XCYjMzQ7YmFyXCYjMzQ7LCBcJiMzNDtmb29cJiMzNDssIHRydWUgIH0sXG4mIzQzO1x0eyBcJiMzNDstZiAmIzM5Oypmb28qJiMzOTtcJiMzNDssXHRcdFwmIzM0O2JhclwmIzM0OywgXCYjMzQ7YmFyXCYjMzQ7LCBmYWxzZSB9LFxuJiM0MztcdHsgXCYjMzQ7LWYgJiMzOTsqZm9vKi9iYXImIzM5O1wmIzM0OyxcdFwmIzM0O2Zvb1wmIzM0OywgXCYjMzQ7YmFyXCYjMzQ7LCB0cnVlICB9LFxuJiM0MztcdHsgXCYjMzQ7LWYgJiMzOTsqZm9vKi9iYXImIzM5O1wmIzM0OyxcdFwmIzM0O2Zvb1wmIzM0OywgXCYjMzQ7YnV6XCYjMzQ7LCBmYWxzZSB9LFxuJiM0MztcdHsgXCYjMzQ7LWYgJiMzOTsqZm9vKi9iYXImIzM5O1wmIzM0OyxcdFwmIzM0O2JhclwmIzM0OywgXCYjMzQ7YmFyXCYjMzQ7LCBmYWxzZSB9LFxuJiM0MztcdHsgXCYjMzQ7LWYgJiMzOTsqZm9vKi8mIzM5O1wmIzM0OyxcdFwmIzM0O2Zvb1wmIzM0OywgXCYjMzQ7YmFyXCYjMzQ7LCB0cnVlICB9LFxuJiM0MztcdHsgXCYjMzQ7LWYgJiMzOTsqZm9vKi8mIzM5O1wmIzM0OyxcdFwmIzM0O2JhclwmIzM0OywgXCYjMzQ7YmFyXCYjMzQ7LCBmYWxzZSB9LFxuJiM0MztcdHsgXCYjMzQ7LWYgJiMzOTsvYmFyJiMzOTtcJiMzNDssXHRcdFwmIzM0O2Zvb1wmIzM0OywgXCYjMzQ7YmFyXCYjMzQ7LCB0cnVlICB9LFxuJiM0MztcdHsgXCYjMzQ7LWYgJiMzOTsvYmFyJiMzOTtcJiMzNDssXHRcdFwmIzM0O2Zvb1wmIzM0OywgXCYjMzQ7Zm9vXCYjMzQ7LCBmYWxzZSB9LFxuJiM0MztcdHsgXCYjMzQ7LWYgJiMzOTsvJiMzOTtcJiMzNDssXHRcdFwmIzM0O2Zvb1wmIzM0OywgXCYjMzQ7YmFyXCYjMzQ7LCAtMSAgICB9LFxuJiM0MztcdHsgXCYjMzQ7LWYgJiMzOTsmIzM5O1wmIzM0OyxcdFx0XCYjMzQ7Zm9vXCYjMzQ7LCBcJiMzNDtiYXJcJiMzNDssIC0xICAgIH0sXG4mIzQzO1x0LyogYWxsb3cgYW5kIGRlbnkgZmlsdGVycyBjb21iaW5lZCAqL1xuJiM0MztcdHsgXCYjMzQ7LWYgJiMzOTsqZm9vKi8mIzM5OyAtZiAmIzM5OyEvYmFyJiMzOTtcJiMzNDssIFwmIzM0O2Zvb1wmIzM0OywgXCYjMzQ7Zm9vXCYjMzQ7LCB0cnVlICB9LFxuJiM0MztcdHsgXCYjMzQ7LWYgJiMzOTsqZm9vKi8mIzM5OyAtZiAmIzM5OyEvYmFyJiMzOTtcJiMzNDssIFwmIzM0O2Zvb1wmIzM0OywgXCYjMzQ7YmFyXCYjMzQ7LCBmYWxzZSB9LFxuJiM0MztcdHsgXCYjMzQ7LWYgJiMzOTsqZm9vKi8mIzM5OyAtZiAmIzM5OyEvYmFyJiMzOTtcJiMzNDssIFwmIzM0O2JhclwmIzM0OywgXCYjMzQ7Zm9vXCYjMzQ7LCBmYWxzZSB9LFxuJiM0Mzt9O1xuJiM0MztcbiYjNDM7c3RhdGljIHZvaWQgdGVzdF9uYW1lX2ZpbHRlcnModm9pZClcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBmaXh0dXJlICpmaXggPSBpbml0X2ZpeHR1cmUoKTtcbiYjNDM7XHRjb25zdCBzdHJ1Y3QgbmFtZV9maWx0ZXJfY2FzZSAqdDtcbiYjNDM7XHRjaGFyIGNtZFs1MTJdLCByb3dbNjRdLCBuYW1lWzEyOF07XG4mIzQzO1x0aW50IGksIGVycjtcbiYjNDM7XG4mIzQzO1x0Zm9yIChpID0gMDsgaSBcdTAwM2MgQVJSQVlfU0laRShuYW1lX2ZpbHRlcl9jYXNlcyk7IGkmIzQzOyYjNDM7KSB7XG4mIzQzO1x0XHR0ID0gXHUwMDI2bmFtZV9maWx0ZXJfY2FzZXNbaV07XG4mIzQzO1x0XHQvKiBzdGRlcnIgaXMgbWVyZ2VkIHdpdGggc3Rkb3V0IGluIG9yZGVyIHRvIGNhdGNoIGVycm9yIG1lc3NhZ2VzICovXG4mIzQzO1x0XHRzbnByaW50ZihjbWQsIHNpemVvZihjbWQpLCBcJiMzNDslcyBcJiMzNDsgRklMVEVSX09CSlMgXCYjMzQ7IC1xIC1vIGNzdiAtZSBmaWxlLHByb2cgJXMgXHUwMDNlICVzIDJcdTAwM2VcdTAwMjYxXCYjMzQ7LFxuJiM0MztcdFx0XHQgZml4LVx1MDAzZXZlcmlzdGF0LCB0LVx1MDAzZWZpbHRlcnMsIGZpeC1cdTAwM2V0bXBmaWxlKTtcbiYjNDM7XHRcdGVyciA9IHN5c3RlbShjbWQpO1xuJiM0MztcdFx0cmVhZF9vdXRwdXQoZml4KTtcbiYjNDM7XG4mIzQzO1x0XHRzbnByaW50Zihyb3csIHNpemVvZihyb3cpLCBcJiMzNDt2ZXJpc3RhdF8lcy5icGYubywlc1wmIzM0OywgdC1cdTAwM2VmaWxlLCB0LVx1MDAzZXByb2cpO1xuJiM0MztcdFx0c25wcmludGYobmFtZSwgc2l6ZW9mKG5hbWUpLCBcJiMzNDt2ZXJpc3RhdCAlczogJXNcJiMzNDssIHQtXHUwMDNlZmlsdGVycywgcm93KTtcbiYjNDM7XHRcdHN3aXRjaCAodC1cdTAwM2VpbmNsdWRlZCkge1xuJiM0MztcdFx0Y2FzZSB0cnVlOlxuJiM0MztcdFx0XHRBU1NFUlRfT0soZXJyLCBuYW1lKTtcbiYjNDM7XHRcdFx0QVNTRVJUX0hBU19TVUJTVFIoZml4LVx1MDAzZW91dHB1dCwgcm93LCBuYW1lKTtcbiYjNDM7XHRcdFx0YnJlYWs7XG4mIzQzO1x0XHRjYXNlIGZhbHNlOlxuJiM0MztcdFx0XHRBU1NFUlRfT0soZXJyLCBuYW1lKTtcbiYjNDM7XHRcdFx0QVNTRVJUX0ZBTFNFKCEhc3Ryc3RyKGZpeC1cdTAwM2VvdXRwdXQsIHJvdyksIG5hbWUpO1xuJiM0MztcdFx0XHRicmVhaztcbiYjNDM7XHRcdGNhc2UgLTE6XG4mIzQzO1x0XHRcdEFTU0VSVF9ORVEoZXJyLCAwLCBuYW1lKTtcbiYjNDM7XHRcdFx0QVNTRVJUX0hBU19TVUJTVFIoZml4LVx1MDAzZW91dHB1dCwgXCYjMzQ7SW52YWxpZCBmaWx0ZXJcJiMzNDssIG5hbWUpO1xuJiM0MztcdFx0XHRicmVhaztcbiYjNDM7XHRcdH1cbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdHRlYXJkb3duX2ZpeHR1cmUoZml4KTtcbiYjNDM7fVxuJiM0MztcbiB2b2lkIHRlc3RfdmVyaXN0YXQodm9pZClcbiB7XG4gXHRpZiAodGVzdF9fc3RhcnRfc3VidGVzdChcJiMzNDtzZXRfZ2xvYmFsX3ZhcnNfc3VjY2VlZHNcJiMzNDspKVxuQEAgLTI1Niw2ICYjNDM7MzU1LDggQEAgdm9pZCB0ZXN0X3ZlcmlzdGF0KHZvaWQpXG4gXHRpZiAodGVzdF9fc3RhcnRfc3VidGVzdChcJiMzNDt0ZXN0X25vX2FycmF5X2luZGV4X2Zvcl9hcnJheVwmIzM0OykpXG4gXHRcdHRlc3Rfbm9fYXJyYXlfaW5kZXhfZm9yX2FycmF5KCk7XG4gXG4mIzQzO1x0aWYgKHRlc3RfX3N0YXJ0X3N1YnRlc3QoXCYjMzQ7bmFtZV9maWx0ZXJzXCYjMzQ7KSlcbiYjNDM7XHRcdHRlc3RfbmFtZV9maWx0ZXJzKCk7XG4gfVxuIFxuICN1bmRlZiBfX0NIRUNLX1NUUlxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpc3RhdF9iYXIuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpc3RhdF9iYXIuY1xubmV3IGZpbGUgbW9kZSAxMDA2NDRcbmluZGV4IDAwMDAwMDAwMDAwMDAuLjgzZDJhMmExZGZjOTZcbi0tLSAvZGV2L251bGxcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpc3RhdF9iYXIuY1xuQEAgLTAsMCAmIzQzOzEsMyBAQFxuJiM0MzsvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxuJiM0MzsvKiBDb3B5cmlnaHQgKGMpIDIwMjYgTWV0YSBQbGF0Zm9ybXMsIEluYy4gYW5kIGFmZmlsaWF0ZXMuICovXG4mIzQzOyNpbmNsdWRlIFwmIzM0O3ZlcmlzdGF0X2Zvby5jXCYjMzQ7XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlzdGF0X2Zvby5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlzdGF0X2Zvby5jXG5uZXcgZmlsZSBtb2RlIDEwMDY0NFxuaW5kZXggMDAwMDAwMDAwMDAwMC4uYmQyNGI5NzY2NGI0OVxuLS0tIC9kZXYvbnVsbFxuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlzdGF0X2Zvby5jXG5AQCAtMCwwICYjNDM7MSwzMSBAQFxuJiM0MzsvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxuJiM0MzsvKiBDb3B5cmlnaHQgKGMpIDIwMjYgTWV0YSBQbGF0Zm9ybXMsIEluYy4gYW5kIGFmZmlsaWF0ZXMuICovXG4mIzQzOyNpbmNsdWRlIFx1MDAzY2xpbnV4L2JwZi5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY2JwZi9icGZfaGVscGVycy5oXHUwMDNlXG4mIzQzO1xuJiM0MzsvKlxuJiM0MzsgKiBQcm9ncmFtcyBiZWxvdyBleGlzdCBvbmx5IHRvIGV4ZXJjaXNlIHZlcmlzdGF0JiMzOTtzIC1mIG5hbWUgZmlsdGVycyxcbiYjNDM7ICogdGhlaXIgYm9kaWVzIGFyZSBpcnJlbGV2YW50LCBvbmx5IHRoZSBuYW1lcyBtYXR0ZXIuXG4mIzQzOyAqIFRoaXMgZmlsZSBpcyBhbHNvIGluY2x1ZGVkIGJ5IHZlcmlzdGF0X2Jhci5jLCBzbyB0aGF0IHRoZSBzYW1lIHNldCBvZlxuJiM0MzsgKiBwcm9ncmFtIG5hbWVzIGlzIGF2YWlsYWJsZSBpbiB0d28gZGlmZmVyZW50bHkgbmFtZWQgb2JqZWN0IGZpbGVzLlxuJiM0MzsgKi9cbiYjNDM7XG4mIzQzO1NFQyhcJiMzNDtzb2NrZXRcJiMzNDspXG4mIzQzO2ludCBmb28odm9pZCAqY3R4KVxuJiM0Mzt7XG4mIzQzO1x0cmV0dXJuIDA7XG4mIzQzO31cbiYjNDM7XG4mIzQzO1NFQyhcJiMzNDtzb2NrZXRcJiMzNDspXG4mIzQzO2ludCBiYXIodm9pZCAqY3R4KVxuJiM0Mzt7XG4mIzQzO1x0cmV0dXJuIDA7XG4mIzQzO31cbiYjNDM7XG4mIzQzO1NFQyhcJiMzNDtzb2NrZXRcJiMzNDspXG4mIzQzO2ludCBidXoodm9pZCAqY3R4KVxuJiM0Mzt7XG4mIzQzO1x0cmV0dXJuIDA7XG4mIzQzO31cbiYjNDM7XG4mIzQzO2NoYXIgX2xpY2Vuc2VbXSBTRUMoXCYjMzQ7bGljZW5zZVwmIzM0OykgPSBcJiMzNDtHUExcJiMzNDs7XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3ZlcmlzdGF0LmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdmVyaXN0YXQuY1xuaW5kZXggYzljMjU3Nzg0ZWUzZC4uNmFhYTA2NzkwZGFhMiAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi92ZXJpc3RhdC5jXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdmVyaXN0YXQuY1xuQEAgLTUxNCw2ICYjNDM7NTE0LDQwIEBAIHN0YXRpYyBib29sIGlzX2JwZl9vYmpfZmlsZShjb25zdCBjaGFyICpwYXRoKSB7XG4gXHRyZXR1cm4gZXJyID09IDA7XG4gfVxuIFxuJiM0MzsvKiBFeGFjdCBmaWx0ZXIgbWF0Y2ggKi9cbiYjNDM7c3RhdGljIGJvb2wgbmFtZV9maWx0ZXJfbWF0Y2hlcyhzdHJ1Y3QgZmlsdGVyICpmLCBjb25zdCBjaGFyICpmaWxlbmFtZSwgY29uc3QgY2hhciAqcHJvZ19uYW1lKVxuJiM0Mzt7XG4mIzQzO1x0aWYgKGYtXHUwMDNlYW55X2dsb2IpXG4mIzQzO1x0XHRyZXR1cm4gZ2xvYl9tYXRjaGVzKGZpbGVuYW1lLCBmLVx1MDAzZWFueV9nbG9iKSB8fFxuJiM0MztcdFx0ICAgICAgIChwcm9nX25hbWUgXHUwMDI2XHUwMDI2IGdsb2JfbWF0Y2hlcyhwcm9nX25hbWUsIGYtXHUwMDNlYW55X2dsb2IpKTtcbiYjNDM7XHRpZiAoZi1cdTAwM2VmaWxlX2dsb2IgXHUwMDI2XHUwMDI2IGYtXHUwMDNlcHJvZ19nbG9iKVxuJiM0MztcdFx0cmV0dXJuIHByb2dfbmFtZSBcdTAwMjZcdTAwMjZcbiYjNDM7XHRcdCAgICAgICBnbG9iX21hdGNoZXMoZmlsZW5hbWUsIGYtXHUwMDNlZmlsZV9nbG9iKSBcdTAwMjZcdTAwMjZcbiYjNDM7XHRcdCAgICAgICBnbG9iX21hdGNoZXMocHJvZ19uYW1lLCBmLVx1MDAzZXByb2dfZ2xvYik7XG4mIzQzO1x0aWYgKGYtXHUwMDNlZmlsZV9nbG9iKVxuJiM0MztcdFx0cmV0dXJuIGdsb2JfbWF0Y2hlcyhmaWxlbmFtZSwgZi1cdTAwM2VmaWxlX2dsb2IpO1xuJiM0MztcdGlmIChmLVx1MDAzZXByb2dfZ2xvYilcbiYjNDM7XHRcdHJldHVybiBwcm9nX25hbWUgXHUwMDI2XHUwMDI2IGdsb2JfbWF0Y2hlcyhwcm9nX25hbWUsIGYtXHUwMDNlcHJvZ19nbG9iKTtcbiYjNDM7XHRyZXR1cm4gZmFsc2U7XG4mIzQzO31cbiYjNDM7XG4mIzQzOy8qIENoZWNrIGlmIHRoZSBmaWx0ZXIgZG9lcyBub3Qgb3V0cmlnaHQgcmVqZWN0IHRoZSBmaWxlIG5hbWUgKi9cbiYjNDM7c3RhdGljIGJvb2wgbmFtZV9maWx0ZXJfbWF5X21hdGNoKHN0cnVjdCBmaWx0ZXIgKmYsIGNvbnN0IGNoYXIgKmZpbGVuYW1lKVxuJiM0Mzt7XG4mIzQzO1x0aWYgKGYtXHUwMDNlZmlsZV9nbG9iKVxuJiM0MztcdFx0cmV0dXJuIGdsb2JfbWF0Y2hlcyhmaWxlbmFtZSwgZi1cdTAwM2VmaWxlX2dsb2IpO1xuJiM0MztcdC8qXG4mIzQzO1x0ICogSWYgd2UgZG9uJiMzOTt0IGtub3cgcHJvZ3JhbSBuYW1lIHlldCwgYW55X2dsb2IgZmlsdGVyXG4mIzQzO1x0ICogaGFzIHRvIGFzc3VtZSB0aGF0IGN1cnJlbnQgQlBGIG9iamVjdCBmaWxlIG1pZ2h0IGJlXG4mIzQzO1x0ICogcmVsZXZhbnQ7IHdlJiMzOTtsbCBjaGVjayBhZ2FpbiBsYXRlciBvbiBhZnRlciBvcGVuaW5nXG4mIzQzO1x0ICogQlBGIG9iamVjdCBmaWxlLCBhdCB3aGljaCBwb2ludCBwcm9ncmFtIG5hbWUgd2lsbFxuJiM0MztcdCAqIGJlIGtub3duIGZpbmFsbHkuXG4mIzQzO1x0ICovXG4mIzQzO1x0aWYgKGYtXHUwMDNlYW55X2dsb2IgfHwgZi1cdTAwM2Vwcm9nX2dsb2IpXG4mIzQzO1x0XHRyZXR1cm4gdHJ1ZTtcbiYjNDM7XHRyZXR1cm4gZmFsc2U7XG4mIzQzO31cbiYjNDM7XG4gc3RhdGljIGJvb2wgc2hvdWxkX3Byb2Nlc3NfZmlsZV9wcm9nKGNvbnN0IGNoYXIgKmZpbGVuYW1lLCBjb25zdCBjaGFyICpwcm9nX25hbWUpXG4ge1xuIFx0c3RydWN0IGZpbHRlciAqZjtcbkBAIC01MjEsMTYgJiM0Mzs1NTUsNyBAQCBzdGF0aWMgYm9vbCBzaG91bGRfcHJvY2Vzc19maWxlX3Byb2coY29uc3QgY2hhciAqZmlsZW5hbWUsIGNvbnN0IGNoYXIgKnByb2dfbmFtZVxuIFxuIFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgZW52LmRlbnlfZmlsdGVyX2NudDsgaSYjNDM7JiM0MzspIHtcbiBcdFx0ZiA9IFx1MDAyNmVudi5kZW55X2ZpbHRlcnNbaV07XG4tXHRcdGlmIChmLVx1MDAzZWtpbmQgIT0gRklMVEVSX05BTUUpXG4tXHRcdFx0Y29udGludWU7XG4tXG4tXHRcdGlmIChmLVx1MDAzZWFueV9nbG9iIFx1MDAyNlx1MDAyNiBnbG9iX21hdGNoZXMoZmlsZW5hbWUsIGYtXHUwMDNlYW55X2dsb2IpKVxuLVx0XHRcdHJldHVybiBmYWxzZTtcbi1cdFx0aWYgKGYtXHUwMDNlYW55X2dsb2IgXHUwMDI2XHUwMDI2IHByb2dfbmFtZSBcdTAwMjZcdTAwMjYgZ2xvYl9tYXRjaGVzKHByb2dfbmFtZSwgZi1cdTAwM2VhbnlfZ2xvYikpXG4tXHRcdFx0cmV0dXJuIGZhbHNlO1xuLVx0XHRpZiAoZi1cdTAwM2VmaWxlX2dsb2IgXHUwMDI2XHUwMDI2IGdsb2JfbWF0Y2hlcyhmaWxlbmFtZSwgZi1cdTAwM2VmaWxlX2dsb2IpKVxuLVx0XHRcdHJldHVybiBmYWxzZTtcbi1cdFx0aWYgKGYtXHUwMDNlcHJvZ19nbG9iIFx1MDAyNlx1MDAyNiBwcm9nX25hbWUgXHUwMDI2XHUwMDI2IGdsb2JfbWF0Y2hlcyhwcm9nX25hbWUsIGYtXHUwMDNlcHJvZ19nbG9iKSlcbiYjNDM7XHRcdGlmIChmLVx1MDAzZWtpbmQgPT0gRklMVEVSX05BTUUgXHUwMDI2XHUwMDI2IG5hbWVfZmlsdGVyX21hdGNoZXMoZiwgZmlsZW5hbWUsIHByb2dfbmFtZSkpXG4gXHRcdFx0cmV0dXJuIGZhbHNlO1xuIFx0fVxuIFxuQEAgLTU0MCwyNCAmIzQzOzU2NSwxNSBAQCBzdGF0aWMgYm9vbCBzaG91bGRfcHJvY2Vzc19maWxlX3Byb2coY29uc3QgY2hhciAqZmlsZW5hbWUsIGNvbnN0IGNoYXIgKnByb2dfbmFtZVxuIFx0XHRcdGNvbnRpbnVlO1xuIFxuIFx0XHRhbGxvd19jbnQmIzQzOyYjNDM7O1xuLVx0XHRpZiAoZi1cdTAwM2VhbnlfZ2xvYikge1xuLVx0XHRcdGlmIChnbG9iX21hdGNoZXMoZmlsZW5hbWUsIGYtXHUwMDNlYW55X2dsb2IpKVxuLVx0XHRcdFx0cmV0dXJuIHRydWU7XG4tXHRcdFx0LyogSWYgd2UgZG9uJiMzOTt0IGtub3cgcHJvZ3JhbSBuYW1lIHlldCwgYW55X2dsb2IgZmlsdGVyXG4tXHRcdFx0ICogaGFzIHRvIGFzc3VtZSB0aGF0IGN1cnJlbnQgQlBGIG9iamVjdCBmaWxlIG1pZ2h0IGJlXG4tXHRcdFx0ICogcmVsZXZhbnQ7IHdlJiMzOTtsbCBjaGVjayBhZ2FpbiBsYXRlciBvbiBhZnRlciBvcGVuaW5nXG4tXHRcdFx0ICogQlBGIG9iamVjdCBmaWxlLCBhdCB3aGljaCBwb2ludCBwcm9ncmFtIG5hbWUgd2lsbFxuLVx0XHRcdCAqIGJlIGtub3duIGZpbmFsbHkuXG4tXHRcdFx0ICovXG4tXHRcdFx0aWYgKCFwcm9nX25hbWUgfHwgZ2xvYl9tYXRjaGVzKHByb2dfbmFtZSwgZi1cdTAwM2VhbnlfZ2xvYikpXG4tXHRcdFx0XHRyZXR1cm4gdHJ1ZTtcbi1cdFx0fSBlbHNlIHtcbi1cdFx0XHRpZiAoZi1cdTAwM2VmaWxlX2dsb2IgXHUwMDI2XHUwMDI2ICFnbG9iX21hdGNoZXMoZmlsZW5hbWUsIGYtXHUwMDNlZmlsZV9nbG9iKSlcbi1cdFx0XHRcdGNvbnRpbnVlO1xuLVx0XHRcdGlmIChmLVx1MDAzZXByb2dfZ2xvYiBcdTAwMjZcdTAwMjYgcHJvZ19uYW1lIFx1MDAyNlx1MDAyNiAhZ2xvYl9tYXRjaGVzKHByb2dfbmFtZSwgZi1cdTAwM2Vwcm9nX2dsb2IpKVxuLVx0XHRcdFx0Y29udGludWU7XG4mIzQzO1x0XHRpZiAocHJvZ19uYW1lIFx1MDAyNlx1MDAyNiBuYW1lX2ZpbHRlcl9tYXRjaGVzKGYsIGZpbGVuYW1lLCBwcm9nX25hbWUpKVxuJiM0MztcdFx0XHRyZXR1cm4gdHJ1ZTtcbiYjNDM7XHRcdC8qXG4mIzQzO1x0XHQgKiBJZiB0aGVyZSBpcyBubyBwcm9nX25hbWUgYW5kIHRoZSBmaWxlIG5hbWUgaXMgbm90IGJsb2NrZWQgYnlcbiYjNDM7XHRcdCAqIHRoZSBmaWx0ZXIsIGFsbG93IHRvIG9wZW4gdGhlIGZpbGUuIEFmdGVyd2FyZHMgdGhlcmUgd291bGQgYmVcbiYjNDM7XHRcdCAqIGEgc2Vjb25kIHJlZmluaW5nIHF1ZXJ5IHdpdGggcHJvZ19uYW1lIHNldC5cbiYjNDM7XHRcdCAqL1xuJiM0MztcdFx0aWYgKCFwcm9nX25hbWUgXHUwMDI2XHUwMDI2IG5hbWVfZmlsdGVyX21heV9tYXRjaChmLCBmaWxlbmFtZSkpXG4gXHRcdFx0cmV0dXJuIHRydWU7XG4tXHRcdH1cbiBcdH1cbiBcbiBcdC8qIGlmIHRoZXJlIGFyZSBubyBmaWxlL3Byb2cgbmFtZSBhbGxvdyBmaWx0ZXJzLCBhbGxvdyBhbGwgcHJvZ3MsXG5AQCAtNzAzLDYgJiM0Mzs3MTksMTIgQEAgc3RhdGljIGludCBhcHBlbmRfZmlsdGVyKHN0cnVjdCBmaWx0ZXIgKipmaWx0ZXJzLCBpbnQgKmNudCwgY29uc3QgY2hhciAqc3RyKVxuIFx0XHR9XG4gXHR9XG4gXG4mIzQzO1x0aWYgKCghZi1cdTAwM2VhbnlfZ2xvYiBcdTAwMjZcdTAwMjYgIWYtXHUwMDNlZmlsZV9nbG9iIFx1MDAyNlx1MDAyNiAhZi1cdTAwM2Vwcm9nX2dsb2IpIHx8XG4mIzQzO1x0ICAgIChmLVx1MDAzZWFueV9nbG9iIFx1MDAyNlx1MDAyNiBzdHJjbXAoZi1cdTAwM2VhbnlfZ2xvYiwgXCYjMzQ7XCYjMzQ7KSA9PSAwKSkge1xuJiM0MztcdFx0ZnByaW50ZihzdGRlcnIsIFwmIzM0O0ludmFsaWQgZmlsdGVyOiAmIzM5OyVzJiMzOTtcXG5cJiMzNDssIHN0cik7XG4mIzQzO1x0XHRyZXR1cm4gLUVJTlZBTDtcbiYjNDM7XHR9XG4mIzQzO1xuIFx0KmNudCAmIzQzOz0gMTtcbiBcdHJldHVybiAwO1xuIH1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAwNjowOTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggb25seSBtb2RpZmllcyB1c2VyLXNwYWNlIEJQRiBzZWxmdGVzdHMgYW5kIHRoZSB2ZXJpc3RhdCB0b29sLiBJdCBkb2VzIG5vdCBtYWtlIGFueSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCBjb2RlIGl0c2VsZi4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA1NzE0NjIyYTEwYTkyNThhNTBjNGQ1YmRkMmM1OTIwNDViYWRkODg0CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFdlZCBBdWcgMTIgMDY6MDk6MjQgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy90ZXN0X3ZlcmlzdGF0LmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy90ZXN0X3ZlcmlzdGF0LmMKaW5kZXggOWFmZjA4YWM1NWMwNy4uMTFmM2RlMmI2NmFkMSAxMDA2NDQKLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvdGVzdF92ZXJpc3RhdC5jCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3Rlc3RfdmVyaXN0YXQuYwpAQCAtMzcsNiAmIzQzOzM3LDE0IEBAIHN0YXRpYyBzdHJ1Y3QgZml4dHVyZSAqaW5pdF9maXh0dXJlKHZvaWQpCiAJcmV0dXJuIGZpeDsKIH0KIAomIzQzO3N0YXRpYyB2b2lkIHJlYWRfb3V0cHV0KHN0cnVjdCBmaXh0dXJlICpmaXgpCiYjNDM7ewomIzQzOwlzc2l6ZV90IGxlbiA9IHByZWFkKGZpeC0mZ3Q7ZmQsIGZpeC0mZ3Q7b3V0cHV0LCBmaXgtJmd0O3N6IC0gMSwgMCk7CiYjNDM7CiYjNDM7CWZpeC0mZ3Q7b3V0cHV0W2xlbiAmbHQ7IDAgPyAwIDogbGVuXSA9IDA7CiYjNDM7CUFTU0VSVF9HRShsZW4sIDAsICYjMzQ7cHJlYWQmIzM0Oyk7CiYjNDM7fQomIzQzOwogc3RhdGljIHZvaWQgdGVhcmRvd25fZml4dHVyZShzdHJ1Y3QgZml4dHVyZSAqZml4KQogewogCWZyZWUoZml4LSZndDtvdXRwdXQpOwpAQCAtNzQsNyAmIzQzOzgyLDcgQEAgc3RhdGljIHZvaWQgdGVzdF9zZXRfZ2xvYmFsX3ZhcnNfc3VjY2VlZHModm9pZCkKIAkgICAgJiMzNDsgLUcgXCYjMzQ7c3RydWN0MTEgWyA3IF0gWyA1IF0gLnN0cnVjdDJbMF1bMV0udS5tYXRbM11bMF0gPSAxNzVcJiMzNDsgJiMzNDsgXAogCSAgICAmIzM0OyAtdmwyICZndDsgJXMmIzM0OywgZml4LSZndDt2ZXJpc3RhdCwgZml4LSZndDt0bXBmaWxlKTsKIAotCXJlYWQoZml4LSZndDtmZCwgZml4LSZndDtvdXRwdXQsIGZpeC0mZ3Q7c3opOwomIzQzOwlyZWFkX291dHB1dChmaXgpOwogCV9fQ0hFQ0tfU1RSKCYjMzQ7PTB4ZjAwMDAwMDAwMDAwMDAwMSAmIzM0OywgJiMzNDt2YXJfczY0ID0gMHhmMDAwMDAwMDAwMDAwMDAxJiMzNDspOwogCV9fQ0hFQ0tfU1RSKCYjMzQ7PTB4ZmVkY2JhOTg3NjU0MzIxMCAmIzM0OywgJiMzNDt2YXJfdTY0ID0gMHhmZWRjYmE5ODc2NTQzMjEwJiMzNDspOwogCV9fQ0hFQ0tfU1RSKCYjMzQ7PTB4ODAwMDAwMDAgJiMzNDssICYjMzQ7dmFyX3MzMiA9IC0weDgwMDAwMDAwJiMzNDspOwpAQCAtMTE2LDcgJiM0MzsxMjQsNyBAQCBzdGF0aWMgdm9pZCB0ZXN0X3NldF9nbG9iYWxfdmFyc19mcm9tX2ZpbGVfc3VjY2VlZHModm9pZCkKIAlzeW5jZnMoZmQpOwogCVNZUyhvdXQsICYjMzQ7JXMgc2V0X2dsb2JhbF92YXJzLmJwZi5vIC1HIFwmIzM0O0Alc1wmIzM0OyAtdmwyICZndDsgJXMmIzM0OywKIAkgICAgZml4LSZndDt2ZXJpc3RhdCwgaW5wdXRfZmlsZSwgZml4LSZndDt0bXBmaWxlKTsKLQlyZWFkKGZpeC0mZ3Q7ZmQsIGZpeC0mZ3Q7b3V0cHV0LCBmaXgtJmd0O3N6KTsKJiM0MzsJcmVhZF9vdXRwdXQoZml4KTsKIAlfX0NIRUNLX1NUUigmIzM0Oz0weDgwMDAgJiMzNDssICYjMzQ7dmFyX3MxNiA9IC0zMjc2OCYjMzQ7KTsKIAlfX0NIRUNLX1NUUigmIzM0Oz0weGVjZWMgJiMzNDssICYjMzQ7dmFyX3UxNiA9IDYwNjUyJiMzNDspOwogCkBAIC0xMzQsNyAmIzQzOzE0Miw3IEBAIHN0YXRpYyB2b2lkIHRlc3Rfc2V0X2dsb2JhbF92YXJzX291dF9vZl9yYW5nZSh2b2lkKQogCQkgJiMzNDslcyBzZXRfZ2xvYmFsX3ZhcnMuYnBmLm8gLUcgXCYjMzQ7dmFyX3MzMiA9IDIxNDc0ODM2NDhcJiMzNDsgLXZsMiAyJmd0OyAlcyYjMzQ7LAogCQkgZml4LSZndDt2ZXJpc3RhdCwgZml4LSZndDt0bXBmaWxlKTsKIAotCXJlYWQoZml4LSZndDtmZCwgZml4LSZndDtvdXRwdXQsIGZpeC0mZ3Q7c3opOwomIzQzOwlyZWFkX291dHB1dChmaXgpOwogCV9fQ0hFQ0tfU1RSKCYjMzQ7aXMgb3V0IG9mIHJhbmdlIFstMjE0NzQ4MzY0ODsgMjE0NzQ4MzY0N10mIzM0OywgJiMzNDtvdXQgb2YgcmFuZ2UmIzM0Oyk7CiAKIG91dDoKQEAgLTE0OSw3ICYjNDM7MTU3LDcgQEAgc3RhdGljIHZvaWQgdGVzdF91bnN1cHBvcnRlZF9wdHJfYXJyYXlfdHlwZSh2b2lkKQogCQkgJiMzNDslcyBzZXRfZ2xvYmFsX3ZhcnMuYnBmLm8gLUcgXCYjMzQ7cHRyX2FyclswXSA9IDBcJiMzNDsgLXZsMiAyJmd0OyAlcyYjMzQ7LAogCQkgZml4LSZndDt2ZXJpc3RhdCwgZml4LSZndDt0bXBmaWxlKTsKIAotCXJlYWQoZml4LSZndDtmZCwgZml4LSZndDtvdXRwdXQsIGZpeC0mZ3Q7c3opOwomIzQzOwlyZWFkX291dHB1dChmaXgpOwogCV9fQ0hFQ0tfU1RSKCYjMzQ7Q2FuJiMzOTt0IHNldCBwdHJfYXJyWzBdLiBPbmx5IGludHMgYW5kIGVudW1zIGFyZSBzdXBwb3J0ZWQmIzM0OywgJiMzNDtwdHJfYXJyJiMzNDspOwogCiBvdXQ6CkBAIC0xNjQsNyAmIzQzOzE3Miw3IEBAIHN0YXRpYyB2b2lkIHRlc3RfYXJyYXlfb3V0X29mX2JvdW5kcyh2b2lkKQogCQkgJiMzNDslcyBzZXRfZ2xvYmFsX3ZhcnMuYnBmLm8gLUcgXCYjMzQ7YXJyWzk5XSA9IDBcJiMzNDsgLXZsMiAyJmd0OyAlcyYjMzQ7LAogCQkgZml4LSZndDt2ZXJpc3RhdCwgZml4LSZndDt0bXBmaWxlKTsKIAotCXJlYWQoZml4LSZndDtmZCwgZml4LSZndDtvdXRwdXQsIGZpeC0mZ3Q7c3opOwomIzQzOwlyZWFkX291dHB1dChmaXgpOwogCV9fQ0hFQ0tfU1RSKCYjMzQ7QXJyYXkgaW5kZXggOTkgaXMgb3V0IG9mIGJvdW5kcyYjMzQ7LCAmIzM0O2Fycls5OV0mIzM0Oyk7CiAKIG91dDoKQEAgLTE3OSw3ICYjNDM7MTg3LDcgQEAgc3RhdGljIHZvaWQgdGVzdF9hcnJheV9pbmRleF9ub3RfZm91bmQodm9pZCkKIAkJICYjMzQ7JXMgc2V0X2dsb2JhbF92YXJzLmJwZi5vIC1HIFwmIzM0O2FycltFRzJdID0gMFwmIzM0OyAtdmwyIDImZ3Q7ICVzJiMzNDssCiAJCSBmaXgtJmd0O3ZlcmlzdGF0LCBmaXgtJmd0O3RtcGZpbGUpOwogCi0JcmVhZChmaXgtJmd0O2ZkLCBmaXgtJmd0O291dHB1dCwgZml4LSZndDtzeik7CiYjNDM7CXJlYWRfb3V0cHV0KGZpeCk7CiAJX19DSEVDS19TVFIoJiMzNDtDYW4mIzM5O3QgcmVzb2x2ZSBlbnVtIHZhbHVlIEVHMiYjMzQ7LCAmIzM0O2FycltFRzJdJiMzNDspOwogCiBvdXQ6CkBAIC0yMzAsNiAmIzQzOzIzOCw5NyBAQCBzdGF0aWMgdm9pZCB0ZXN0X25vX2FycmF5X2luZGV4X2Zvcl9hcnJheSh2b2lkKQogCXRlYXJkb3duX2ZpeHR1cmUoZml4KTsKIH0KIAomIzQzOy8qCiYjNDM7ICogTmFtZSBmaWx0ZXIgdGVzdHMgYmVsb3cgcnVuIHZlcmlzdGF0IG9uIHZlcmlzdGF0X2Zvby5icGYubyBhbmQKJiM0MzsgKiB2ZXJpc3RhdF9iYXIuYnBmLm8sIGJvdGggZGVmaW5pbmcgcHJvZ3JhbXMgJiMzOTtmb28mIzM5OywgJiMzOTtiYXImIzM5OyBhbmQgJiMzOTtidXomIzM5Oy4KJiM0MzsgKiBFdmVyeSBlbnRyeSBkZXNjcmliZXMgYSBzaW5nbGUgKGZpbHRlcnMsIGZpbGUsIHByb2cpIGNvbWJpbmF0aW9uIGFuZAomIzQzOyAqIHRlbGxzIHdoZXRoZXIgdGhhdCBwcm9ncmFtIGlzIGV4cGVjdGVkIGluIHRoZSB2ZXJpc3RhdCBvdXRwdXQ6CiYjNDM7ICogJiMzOTt0cnVlJiMzOTsgaWYgaXQgaXMsICYjMzk7ZmFsc2UmIzM5OyBpZiBpdCBpcyBub3QgYW5kIC0xIGlmIHZlcmlzdGF0IGlzIGV4cGVjdGVkCiYjNDM7ICogdG8gcmVqZWN0IHRoZSBmaWx0ZXIuCiYjNDM7ICovCiYjNDM7I2RlZmluZSBGSUxURVJfT0JKUyAmIzM0O3ZlcmlzdGF0X2Zvby5icGYubyB2ZXJpc3RhdF9iYXIuYnBmLm8mIzM0OwomIzQzOwomIzQzO3N0YXRpYyBjb25zdCBzdHJ1Y3QgbmFtZV9maWx0ZXJfY2FzZSB7CiYjNDM7CWNvbnN0IGNoYXIgKmZpbHRlcnM7CiYjNDM7CWNvbnN0IGNoYXIgKmZpbGU7CiYjNDM7CWNvbnN0IGNoYXIgKnByb2c7CiYjNDM7CWludCBpbmNsdWRlZDsKJiM0Mzt9IG5hbWVfZmlsdGVyX2Nhc2VzW10gPSB7CiYjNDM7CS8qIG5vIGZpbHRlcnMsIGV2ZXJ5IHByb2dyYW0gaXMgcHJvY2Vzc2VkICovCiYjNDM7CXsgJiMzNDsmIzM0OywJCQkmIzM0O2ZvbyYjMzQ7LCAmIzM0O2ZvbyYjMzQ7LCB0cnVlICB9LAomIzQzOwl7ICYjMzQ7JiMzNDssCQkJJiMzNDtmb28mIzM0OywgJiMzNDtiYXImIzM0OywgdHJ1ZSAgfSwKJiM0MzsJeyAmIzM0OyYjMzQ7LAkJCSYjMzQ7Zm9vJiMzNDssICYjMzQ7YnV6JiMzNDssIHRydWUgIH0sCiYjNDM7CXsgJiMzNDsmIzM0OywJCQkmIzM0O2JhciYjMzQ7LCAmIzM0O2ZvbyYjMzQ7LCB0cnVlICB9LAomIzQzOwl7ICYjMzQ7JiMzNDssCQkJJiMzNDtiYXImIzM0OywgJiMzNDtiYXImIzM0OywgdHJ1ZSAgfSwKJiM0MzsJeyAmIzM0OyYjMzQ7LAkJCSYjMzQ7YmFyJiMzNDssICYjMzQ7YnV6JiMzNDssIHRydWUgIH0sCiYjNDM7CS8qIGRlbnkgZmlsdGVycyAqLwomIzQzOwl7ICYjMzQ7LWYgJiMzOTshKmZvbyomIzM5OyYjMzQ7LAkmIzM0O2ZvbyYjMzQ7LCAmIzM0O2JhciYjMzQ7LCBmYWxzZSB9LAomIzQzOwl7ICYjMzQ7LWYgJiMzOTshKmZvbyomIzM5OyYjMzQ7LAkmIzM0O2JhciYjMzQ7LCAmIzM0O2ZvbyYjMzQ7LCBmYWxzZSB9LAomIzQzOwl7ICYjMzQ7LWYgJiMzOTshKmZvbyomIzM5OyYjMzQ7LAkmIzM0O2JhciYjMzQ7LCAmIzM0O2JhciYjMzQ7LCB0cnVlICB9LAomIzQzOwl7ICYjMzQ7LWYgJiMzOTshKmZvbyovYmFyJiMzOTsmIzM0OywJJiMzNDtmb28mIzM0OywgJiMzNDtiYXImIzM0OywgZmFsc2UgfSwKJiM0MzsJeyAmIzM0Oy1mICYjMzk7ISpmb28qL2JhciYjMzk7JiMzNDssCSYjMzQ7Zm9vJiMzNDssICYjMzQ7YnV6JiMzNDssIHRydWUgIH0sCiYjNDM7CXsgJiMzNDstZiAmIzM5OyEqZm9vKi9iYXImIzM5OyYjMzQ7LAkmIzM0O2JhciYjMzQ7LCAmIzM0O2JhciYjMzQ7LCB0cnVlICB9LAomIzQzOwl7ICYjMzQ7LWYgJiMzOTshKmZvbyovJiMzOTsmIzM0OywJJiMzNDtmb28mIzM0OywgJiMzNDtiYXImIzM0OywgZmFsc2UgfSwKJiM0MzsJeyAmIzM0Oy1mICYjMzk7ISpmb28qLyYjMzk7JiMzNDssCSYjMzQ7YmFyJiMzNDssICYjMzQ7YmFyJiMzNDssIHRydWUgIH0sCiYjNDM7CXsgJiMzNDstZiAmIzM5OyEvYmFyJiMzOTsmIzM0OywJCSYjMzQ7Zm9vJiMzNDssICYjMzQ7YmFyJiMzNDssIGZhbHNlIH0sCiYjNDM7CXsgJiMzNDstZiAmIzM5OyEvYmFyJiMzOTsmIzM0OywJCSYjMzQ7Zm9vJiMzNDssICYjMzQ7Zm9vJiMzNDssIHRydWUgIH0sCiYjNDM7CXsgJiMzNDstZiAmIzM5OyEvJiMzOTsmIzM0OywJCSYjMzQ7Zm9vJiMzNDssICYjMzQ7YmFyJiMzNDssIC0xICAgIH0sCiYjNDM7CXsgJiMzNDstZiAmIzM5OyEmIzM5OyYjMzQ7LAkJJiMzNDtmb28mIzM0OywgJiMzNDtiYXImIzM0OywgLTEgICAgfSwKJiM0MzsJLyogYWxsb3cgZmlsdGVycyAqLwomIzQzOwl7ICYjMzQ7LWYgJiMzOTsqZm9vKiYjMzk7JiMzNDssCQkmIzM0O2ZvbyYjMzQ7LCAmIzM0O2JhciYjMzQ7LCB0cnVlICB9LAomIzQzOwl7ICYjMzQ7LWYgJiMzOTsqZm9vKiYjMzk7JiMzNDssCQkmIzM0O2JhciYjMzQ7LCAmIzM0O2ZvbyYjMzQ7LCB0cnVlICB9LAomIzQzOwl7ICYjMzQ7LWYgJiMzOTsqZm9vKiYjMzk7JiMzNDssCQkmIzM0O2JhciYjMzQ7LCAmIzM0O2JhciYjMzQ7LCBmYWxzZSB9LAomIzQzOwl7ICYjMzQ7LWYgJiMzOTsqZm9vKi9iYXImIzM5OyYjMzQ7LAkmIzM0O2ZvbyYjMzQ7LCAmIzM0O2JhciYjMzQ7LCB0cnVlICB9LAomIzQzOwl7ICYjMzQ7LWYgJiMzOTsqZm9vKi9iYXImIzM5OyYjMzQ7LAkmIzM0O2ZvbyYjMzQ7LCAmIzM0O2J1eiYjMzQ7LCBmYWxzZSB9LAomIzQzOwl7ICYjMzQ7LWYgJiMzOTsqZm9vKi9iYXImIzM5OyYjMzQ7LAkmIzM0O2JhciYjMzQ7LCAmIzM0O2JhciYjMzQ7LCBmYWxzZSB9LAomIzQzOwl7ICYjMzQ7LWYgJiMzOTsqZm9vKi8mIzM5OyYjMzQ7LAkmIzM0O2ZvbyYjMzQ7LCAmIzM0O2JhciYjMzQ7LCB0cnVlICB9LAomIzQzOwl7ICYjMzQ7LWYgJiMzOTsqZm9vKi8mIzM5OyYjMzQ7LAkmIzM0O2JhciYjMzQ7LCAmIzM0O2JhciYjMzQ7LCBmYWxzZSB9LAomIzQzOwl7ICYjMzQ7LWYgJiMzOTsvYmFyJiMzOTsmIzM0OywJCSYjMzQ7Zm9vJiMzNDssICYjMzQ7YmFyJiMzNDssIHRydWUgIH0sCiYjNDM7CXsgJiMzNDstZiAmIzM5Oy9iYXImIzM5OyYjMzQ7LAkJJiMzNDtmb28mIzM0OywgJiMzNDtmb28mIzM0OywgZmFsc2UgfSwKJiM0MzsJeyAmIzM0Oy1mICYjMzk7LyYjMzk7JiMzNDssCQkmIzM0O2ZvbyYjMzQ7LCAmIzM0O2JhciYjMzQ7LCAtMSAgICB9LAomIzQzOwl7ICYjMzQ7LWYgJiMzOTsmIzM5OyYjMzQ7LAkJJiMzNDtmb28mIzM0OywgJiMzNDtiYXImIzM0OywgLTEgICAgfSwKJiM0MzsJLyogYWxsb3cgYW5kIGRlbnkgZmlsdGVycyBjb21iaW5lZCAqLwomIzQzOwl7ICYjMzQ7LWYgJiMzOTsqZm9vKi8mIzM5OyAtZiAmIzM5OyEvYmFyJiMzOTsmIzM0OywgJiMzNDtmb28mIzM0OywgJiMzNDtmb28mIzM0OywgdHJ1ZSAgfSwKJiM0MzsJeyAmIzM0Oy1mICYjMzk7KmZvbyovJiMzOTsgLWYgJiMzOTshL2JhciYjMzk7JiMzNDssICYjMzQ7Zm9vJiMzNDssICYjMzQ7YmFyJiMzNDssIGZhbHNlIH0sCiYjNDM7CXsgJiMzNDstZiAmIzM5Oypmb28qLyYjMzk7IC1mICYjMzk7IS9iYXImIzM5OyYjMzQ7LCAmIzM0O2JhciYjMzQ7LCAmIzM0O2ZvbyYjMzQ7LCBmYWxzZSB9LAomIzQzO307CiYjNDM7CiYjNDM7c3RhdGljIHZvaWQgdGVzdF9uYW1lX2ZpbHRlcnModm9pZCkKJiM0Mzt7CiYjNDM7CXN0cnVjdCBmaXh0dXJlICpmaXggPSBpbml0X2ZpeHR1cmUoKTsKJiM0MzsJY29uc3Qgc3RydWN0IG5hbWVfZmlsdGVyX2Nhc2UgKnQ7CiYjNDM7CWNoYXIgY21kWzUxMl0sIHJvd1s2NF0sIG5hbWVbMTI4XTsKJiM0MzsJaW50IGksIGVycjsKJiM0MzsKJiM0MzsJZm9yIChpID0gMDsgaSAmbHQ7IEFSUkFZX1NJWkUobmFtZV9maWx0ZXJfY2FzZXMpOyBpJiM0MzsmIzQzOykgewomIzQzOwkJdCA9ICZhbXA7bmFtZV9maWx0ZXJfY2FzZXNbaV07CiYjNDM7CQkvKiBzdGRlcnIgaXMgbWVyZ2VkIHdpdGggc3Rkb3V0IGluIG9yZGVyIHRvIGNhdGNoIGVycm9yIG1lc3NhZ2VzICovCiYjNDM7CQlzbnByaW50ZihjbWQsIHNpemVvZihjbWQpLCAmIzM0OyVzICYjMzQ7IEZJTFRFUl9PQkpTICYjMzQ7IC1xIC1vIGNzdiAtZSBmaWxlLHByb2cgJXMgJmd0OyAlcyAyJmd0OyZhbXA7MSYjMzQ7LAomIzQzOwkJCSBmaXgtJmd0O3ZlcmlzdGF0LCB0LSZndDtmaWx0ZXJzLCBmaXgtJmd0O3RtcGZpbGUpOwomIzQzOwkJZXJyID0gc3lzdGVtKGNtZCk7CiYjNDM7CQlyZWFkX291dHB1dChmaXgpOwomIzQzOwomIzQzOwkJc25wcmludGYocm93LCBzaXplb2Yocm93KSwgJiMzNDt2ZXJpc3RhdF8lcy5icGYubywlcyYjMzQ7LCB0LSZndDtmaWxlLCB0LSZndDtwcm9nKTsKJiM0MzsJCXNucHJpbnRmKG5hbWUsIHNpemVvZihuYW1lKSwgJiMzNDt2ZXJpc3RhdCAlczogJXMmIzM0OywgdC0mZ3Q7ZmlsdGVycywgcm93KTsKJiM0MzsJCXN3aXRjaCAodC0mZ3Q7aW5jbHVkZWQpIHsKJiM0MzsJCWNhc2UgdHJ1ZToKJiM0MzsJCQlBU1NFUlRfT0soZXJyLCBuYW1lKTsKJiM0MzsJCQlBU1NFUlRfSEFTX1NVQlNUUihmaXgtJmd0O291dHB1dCwgcm93LCBuYW1lKTsKJiM0MzsJCQlicmVhazsKJiM0MzsJCWNhc2UgZmFsc2U6CiYjNDM7CQkJQVNTRVJUX09LKGVyciwgbmFtZSk7CiYjNDM7CQkJQVNTRVJUX0ZBTFNFKCEhc3Ryc3RyKGZpeC0mZ3Q7b3V0cHV0LCByb3cpLCBuYW1lKTsKJiM0MzsJCQlicmVhazsKJiM0MzsJCWNhc2UgLTE6CiYjNDM7CQkJQVNTRVJUX05FUShlcnIsIDAsIG5hbWUpOwomIzQzOwkJCUFTU0VSVF9IQVNfU1VCU1RSKGZpeC0mZ3Q7b3V0cHV0LCAmIzM0O0ludmFsaWQgZmlsdGVyJiMzNDssIG5hbWUpOwomIzQzOwkJCWJyZWFrOwomIzQzOwkJfQomIzQzOwl9CiYjNDM7CiYjNDM7CXRlYXJkb3duX2ZpeHR1cmUoZml4KTsKJiM0Mzt9CiYjNDM7CiB2b2lkIHRlc3RfdmVyaXN0YXQodm9pZCkKIHsKIAlpZiAodGVzdF9fc3RhcnRfc3VidGVzdCgmIzM0O3NldF9nbG9iYWxfdmFyc19zdWNjZWVkcyYjMzQ7KSkKQEAgLTI1Niw2ICYjNDM7MzU1LDggQEAgdm9pZCB0ZXN0X3ZlcmlzdGF0KHZvaWQpCiAJaWYgKHRlc3RfX3N0YXJ0X3N1YnRlc3QoJiMzNDt0ZXN0X25vX2FycmF5X2luZGV4X2Zvcl9hcnJheSYjMzQ7KSkKIAkJdGVzdF9ub19hcnJheV9pbmRleF9mb3JfYXJyYXkoKTsKIAomIzQzOwlpZiAodGVzdF9fc3RhcnRfc3VidGVzdCgmIzM0O25hbWVfZmlsdGVycyYjMzQ7KSkKJiM0MzsJCXRlc3RfbmFtZV9maWx0ZXJzKCk7CiB9CiAKICN1bmRlZiBfX0NIRUNLX1NUUgpkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlzdGF0X2Jhci5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlzdGF0X2Jhci5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAuLjgzZDJhMmExZGZjOTYKLS0tIC9kZXYvbnVsbAomIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaXN0YXRfYmFyLmMKQEAgLTAsMCAmIzQzOzEsMyBAQAomIzQzOy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wCiYjNDM7LyogQ29weXJpZ2h0IChjKSAyMDI2IE1ldGEgUGxhdGZvcm1zLCBJbmMuIGFuZCBhZmZpbGlhdGVzLiAqLwomIzQzOyNpbmNsdWRlICYjMzQ7dmVyaXN0YXRfZm9vLmMmIzM0OwpkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlzdGF0X2Zvby5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlzdGF0X2Zvby5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAuLmJkMjRiOTc2NjRiNDkKLS0tIC9kZXYvbnVsbAomIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaXN0YXRfZm9vLmMKQEAgLTAsMCAmIzQzOzEsMzEgQEAKJiM0MzsvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMAomIzQzOy8qIENvcHlyaWdodCAoYykgMjAyNiBNZXRhIFBsYXRmb3JtcywgSW5jLiBhbmQgYWZmaWxpYXRlcy4gKi8KJiM0MzsjaW5jbHVkZSAmbHQ7bGludXgvYnBmLmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O2JwZi9icGZfaGVscGVycy5oJmd0OwomIzQzOwomIzQzOy8qCiYjNDM7ICogUHJvZ3JhbXMgYmVsb3cgZXhpc3Qgb25seSB0byBleGVyY2lzZSB2ZXJpc3RhdCYjMzk7cyAtZiBuYW1lIGZpbHRlcnMsCiYjNDM7ICogdGhlaXIgYm9kaWVzIGFyZSBpcnJlbGV2YW50LCBvbmx5IHRoZSBuYW1lcyBtYXR0ZXIuCiYjNDM7ICogVGhpcyBmaWxlIGlzIGFsc28gaW5jbHVkZWQgYnkgdmVyaXN0YXRfYmFyLmMsIHNvIHRoYXQgdGhlIHNhbWUgc2V0IG9mCiYjNDM7ICogcHJvZ3JhbSBuYW1lcyBpcyBhdmFpbGFibGUgaW4gdHdvIGRpZmZlcmVudGx5IG5hbWVkIG9iamVjdCBmaWxlcy4KJiM0MzsgKi8KJiM0MzsKJiM0MztTRUMoJiMzNDtzb2NrZXQmIzM0OykKJiM0MztpbnQgZm9vKHZvaWQgKmN0eCkKJiM0Mzt7CiYjNDM7CXJldHVybiAwOwomIzQzO30KJiM0MzsKJiM0MztTRUMoJiMzNDtzb2NrZXQmIzM0OykKJiM0MztpbnQgYmFyKHZvaWQgKmN0eCkKJiM0Mzt7CiYjNDM7CXJldHVybiAwOwomIzQzO30KJiM0MzsKJiM0MztTRUMoJiMzNDtzb2NrZXQmIzM0OykKJiM0MztpbnQgYnV6KHZvaWQgKmN0eCkKJiM0Mzt7CiYjNDM7CXJldHVybiAwOwomIzQzO30KJiM0MzsKJiM0MztjaGFyIF9saWNlbnNlW10gU0VDKCYjMzQ7bGljZW5zZSYjMzQ7KSA9ICYjMzQ7R1BMJiMzNDs7CmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdmVyaXN0YXQuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi92ZXJpc3RhdC5jCmluZGV4IGM5YzI1Nzc4NGVlM2QuLjZhYWEwNjc5MGRhYTIgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi92ZXJpc3RhdC5jCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi92ZXJpc3RhdC5jCkBAIC01MTQsNiAmIzQzOzUxNCw0MCBAQCBzdGF0aWMgYm9vbCBpc19icGZfb2JqX2ZpbGUoY29uc3QgY2hhciAqcGF0aCkgewogCXJldHVybiBlcnIgPT0gMDsKIH0KIAomIzQzOy8qIEV4YWN0IGZpbHRlciBtYXRjaCAqLwomIzQzO3N0YXRpYyBib29sIG5hbWVfZmlsdGVyX21hdGNoZXMoc3RydWN0IGZpbHRlciAqZiwgY29uc3QgY2hhciAqZmlsZW5hbWUsIGNvbnN0IGNoYXIgKnByb2dfbmFtZSkKJiM0Mzt7CiYjNDM7CWlmIChmLSZndDthbnlfZ2xvYikKJiM0MzsJCXJldHVybiBnbG9iX21hdGNoZXMoZmlsZW5hbWUsIGYtJmd0O2FueV9nbG9iKSB8fAomIzQzOwkJICAgICAgIChwcm9nX25hbWUgJmFtcDsmYW1wOyBnbG9iX21hdGNoZXMocHJvZ19uYW1lLCBmLSZndDthbnlfZ2xvYikpOwomIzQzOwlpZiAoZi0mZ3Q7ZmlsZV9nbG9iICZhbXA7JmFtcDsgZi0mZ3Q7cHJvZ19nbG9iKQomIzQzOwkJcmV0dXJuIHByb2dfbmFtZSAmYW1wOyZhbXA7CiYjNDM7CQkgICAgICAgZ2xvYl9tYXRjaGVzKGZpbGVuYW1lLCBmLSZndDtmaWxlX2dsb2IpICZhbXA7JmFtcDsKJiM0MzsJCSAgICAgICBnbG9iX21hdGNoZXMocHJvZ19uYW1lLCBmLSZndDtwcm9nX2dsb2IpOwomIzQzOwlpZiAoZi0mZ3Q7ZmlsZV9nbG9iKQomIzQzOwkJcmV0dXJuIGdsb2JfbWF0Y2hlcyhmaWxlbmFtZSwgZi0mZ3Q7ZmlsZV9nbG9iKTsKJiM0MzsJaWYgKGYtJmd0O3Byb2dfZ2xvYikKJiM0MzsJCXJldHVybiBwcm9nX25hbWUgJmFtcDsmYW1wOyBnbG9iX21hdGNoZXMocHJvZ19uYW1lLCBmLSZndDtwcm9nX2dsb2IpOwomIzQzOwlyZXR1cm4gZmFsc2U7CiYjNDM7fQomIzQzOwomIzQzOy8qIENoZWNrIGlmIHRoZSBmaWx0ZXIgZG9lcyBub3Qgb3V0cmlnaHQgcmVqZWN0IHRoZSBmaWxlIG5hbWUgKi8KJiM0MztzdGF0aWMgYm9vbCBuYW1lX2ZpbHRlcl9tYXlfbWF0Y2goc3RydWN0IGZpbHRlciAqZiwgY29uc3QgY2hhciAqZmlsZW5hbWUpCiYjNDM7ewomIzQzOwlpZiAoZi0mZ3Q7ZmlsZV9nbG9iKQomIzQzOwkJcmV0dXJuIGdsb2JfbWF0Y2hlcyhmaWxlbmFtZSwgZi0mZ3Q7ZmlsZV9nbG9iKTsKJiM0MzsJLyoKJiM0MzsJICogSWYgd2UgZG9uJiMzOTt0IGtub3cgcHJvZ3JhbSBuYW1lIHlldCwgYW55X2dsb2IgZmlsdGVyCiYjNDM7CSAqIGhhcyB0byBhc3N1bWUgdGhhdCBjdXJyZW50IEJQRiBvYmplY3QgZmlsZSBtaWdodCBiZQomIzQzOwkgKiByZWxldmFudDsgd2UmIzM5O2xsIGNoZWNrIGFnYWluIGxhdGVyIG9uIGFmdGVyIG9wZW5pbmcKJiM0MzsJICogQlBGIG9iamVjdCBmaWxlLCBhdCB3aGljaCBwb2ludCBwcm9ncmFtIG5hbWUgd2lsbAomIzQzOwkgKiBiZSBrbm93biBmaW5hbGx5LgomIzQzOwkgKi8KJiM0MzsJaWYgKGYtJmd0O2FueV9nbG9iIHx8IGYtJmd0O3Byb2dfZ2xvYikKJiM0MzsJCXJldHVybiB0cnVlOwomIzQzOwlyZXR1cm4gZmFsc2U7CiYjNDM7fQomIzQzOwogc3RhdGljIGJvb2wgc2hvdWxkX3Byb2Nlc3NfZmlsZV9wcm9nKGNvbnN0IGNoYXIgKmZpbGVuYW1lLCBjb25zdCBjaGFyICpwcm9nX25hbWUpCiB7CiAJc3RydWN0IGZpbHRlciAqZjsKQEAgLTUyMSwxNiAmIzQzOzU1NSw3IEBAIHN0YXRpYyBib29sIHNob3VsZF9wcm9jZXNzX2ZpbGVfcHJvZyhjb25zdCBjaGFyICpmaWxlbmFtZSwgY29uc3QgY2hhciAqcHJvZ19uYW1lCiAKIAlmb3IgKGkgPSAwOyBpICZsdDsgZW52LmRlbnlfZmlsdGVyX2NudDsgaSYjNDM7JiM0MzspIHsKIAkJZiA9ICZhbXA7ZW52LmRlbnlfZmlsdGVyc1tpXTsKLQkJaWYgKGYtJmd0O2tpbmQgIT0gRklMVEVSX05BTUUpCi0JCQljb250aW51ZTsKLQotCQlpZiAoZi0mZ3Q7YW55X2dsb2IgJmFtcDsmYW1wOyBnbG9iX21hdGNoZXMoZmlsZW5hbWUsIGYtJmd0O2FueV9nbG9iKSkKLQkJCXJldHVybiBmYWxzZTsKLQkJaWYgKGYtJmd0O2FueV9nbG9iICZhbXA7JmFtcDsgcHJvZ19uYW1lICZhbXA7JmFtcDsgZ2xvYl9tYXRjaGVzKHByb2dfbmFtZSwgZi0mZ3Q7YW55X2dsb2IpKQotCQkJcmV0dXJuIGZhbHNlOwotCQlpZiAoZi0mZ3Q7ZmlsZV9nbG9iICZhbXA7JmFtcDsgZ2xvYl9tYXRjaGVzKGZpbGVuYW1lLCBmLSZndDtmaWxlX2dsb2IpKQotCQkJcmV0dXJuIGZhbHNlOwotCQlpZiAoZi0mZ3Q7cHJvZ19nbG9iICZhbXA7JmFtcDsgcHJvZ19uYW1lICZhbXA7JmFtcDsgZ2xvYl9tYXRjaGVzKHByb2dfbmFtZSwgZi0mZ3Q7cHJvZ19nbG9iKSkKJiM0MzsJCWlmIChmLSZndDtraW5kID09IEZJTFRFUl9OQU1FICZhbXA7JmFtcDsgbmFtZV9maWx0ZXJfbWF0Y2hlcyhmLCBmaWxlbmFtZSwgcHJvZ19uYW1lKSkKIAkJCXJldHVybiBmYWxzZTsKIAl9CiAKQEAgLTU0MCwyNCAmIzQzOzU2NSwxNSBAQCBzdGF0aWMgYm9vbCBzaG91bGRfcHJvY2Vzc19maWxlX3Byb2coY29uc3QgY2hhciAqZmlsZW5hbWUsIGNvbnN0IGNoYXIgKnByb2dfbmFtZQogCQkJY29udGludWU7CiAKIAkJYWxsb3dfY250JiM0MzsmIzQzOzsKLQkJaWYgKGYtJmd0O2FueV9nbG9iKSB7Ci0JCQlpZiAoZ2xvYl9tYXRjaGVzKGZpbGVuYW1lLCBmLSZndDthbnlfZ2xvYikpCi0JCQkJcmV0dXJuIHRydWU7Ci0JCQkvKiBJZiB3ZSBkb24mIzM5O3Qga25vdyBwcm9ncmFtIG5hbWUgeWV0LCBhbnlfZ2xvYiBmaWx0ZXIKLQkJCSAqIGhhcyB0byBhc3N1bWUgdGhhdCBjdXJyZW50IEJQRiBvYmplY3QgZmlsZSBtaWdodCBiZQotCQkJICogcmVsZXZhbnQ7IHdlJiMzOTtsbCBjaGVjayBhZ2FpbiBsYXRlciBvbiBhZnRlciBvcGVuaW5nCi0JCQkgKiBCUEYgb2JqZWN0IGZpbGUsIGF0IHdoaWNoIHBvaW50IHByb2dyYW0gbmFtZSB3aWxsCi0JCQkgKiBiZSBrbm93biBmaW5hbGx5LgotCQkJICovCi0JCQlpZiAoIXByb2dfbmFtZSB8fCBnbG9iX21hdGNoZXMocHJvZ19uYW1lLCBmLSZndDthbnlfZ2xvYikpCi0JCQkJcmV0dXJuIHRydWU7Ci0JCX0gZWxzZSB7Ci0JCQlpZiAoZi0mZ3Q7ZmlsZV9nbG9iICZhbXA7JmFtcDsgIWdsb2JfbWF0Y2hlcyhmaWxlbmFtZSwgZi0mZ3Q7ZmlsZV9nbG9iKSkKLQkJCQljb250aW51ZTsKLQkJCWlmIChmLSZndDtwcm9nX2dsb2IgJmFtcDsmYW1wOyBwcm9nX25hbWUgJmFtcDsmYW1wOyAhZ2xvYl9tYXRjaGVzKHByb2dfbmFtZSwgZi0mZ3Q7cHJvZ19nbG9iKSkKLQkJCQljb250aW51ZTsKJiM0MzsJCWlmIChwcm9nX25hbWUgJmFtcDsmYW1wOyBuYW1lX2ZpbHRlcl9tYXRjaGVzKGYsIGZpbGVuYW1lLCBwcm9nX25hbWUpKQomIzQzOwkJCXJldHVybiB0cnVlOwomIzQzOwkJLyoKJiM0MzsJCSAqIElmIHRoZXJlIGlzIG5vIHByb2dfbmFtZSBhbmQgdGhlIGZpbGUgbmFtZSBpcyBub3QgYmxvY2tlZCBieQomIzQzOwkJICogdGhlIGZpbHRlciwgYWxsb3cgdG8gb3BlbiB0aGUgZmlsZS4gQWZ0ZXJ3YXJkcyB0aGVyZSB3b3VsZCBiZQomIzQzOwkJICogYSBzZWNvbmQgcmVmaW5pbmcgcXVlcnkgd2l0aCBwcm9nX25hbWUgc2V0LgomIzQzOwkJICovCiYjNDM7CQlpZiAoIXByb2dfbmFtZSAmYW1wOyZhbXA7IG5hbWVfZmlsdGVyX21heV9tYXRjaChmLCBmaWxlbmFtZSkpCiAJCQlyZXR1cm4gdHJ1ZTsKLQkJfQogCX0KIAogCS8qIGlmIHRoZXJlIGFyZSBubyBmaWxlL3Byb2cgbmFtZSBhbGxvdyBmaWx0ZXJzLCBhbGxvdyBhbGwgcHJvZ3MsCkBAIC03MDMsNiAmIzQzOzcxOSwxMiBAQCBzdGF0aWMgaW50IGFwcGVuZF9maWx0ZXIoc3RydWN0IGZpbHRlciAqKmZpbHRlcnMsIGludCAqY250LCBjb25zdCBjaGFyICpzdHIpCiAJCX0KIAl9CiAKJiM0MzsJaWYgKCghZi0mZ3Q7YW55X2dsb2IgJmFtcDsmYW1wOyAhZi0mZ3Q7ZmlsZV9nbG9iICZhbXA7JmFtcDsgIWYtJmd0O3Byb2dfZ2xvYikgfHwKJiM0MzsJICAgIChmLSZndDthbnlfZ2xvYiAmYW1wOyZhbXA7IHN0cmNtcChmLSZndDthbnlfZ2xvYiwgJiMzNDsmIzM0OykgPT0gMCkpIHsKJiM0MzsJCWZwcmludGYoc3RkZXJyLCAmIzM0O0ludmFsaWQgZmlsdGVyOiAmIzM5OyVzJiMzOTtcbiYjMzQ7LCBzdHIpOwomIzQzOwkJcmV0dXJuIC1FSU5WQUw7CiYjNDM7CX0KJiM0MzsKIAkqY250ICYjNDM7PSAxOwogCXJldHVybiAwOwogfQo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAwNjowOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2NTI4CgkJCQkJCQlvdXRwdXQ6IDYzCgkJCQkJCQl0aG91Z2h0czogMzQ1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZ1enppbmcgRGVjaXNpb24gZm9yIFRoaXMgUGF0Y2ggU2VyaWVzKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIE15IGluaXRpYWwgYXNzZXNzbWVudCBpcyB0aGF0IHRoaXMgcGF0Y2ggc2VyaWVzIGRvZXNuJiMzOTt0IG5lY2Vzc2l0YXRlIGZ1enppbmcuIE15IHJlYXNvbmluZyBpcyBzdHJhaWdodGZvcndhcmQ6IHRoZSBjaGFuZ2VzIGFyZSBjb250YWluZWQgd2l0aGluIHRoZSBgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2AgZGlyZWN0b3J5LiBTcGVjaWZpY2FsbHksIGl0IHRvdWNoZXMgYHRlc3RfdmVyaXN0YXQuY2AsIGB2ZXJpc3RhdF9iYXIuY2AsIGB2ZXJpc3RhdF9mb28uY2AsIGFuZCBgdmVyaXN0YXQuY2AuIEFsbCBpbmRpY2F0aW9ucyBhcmUgdGhhdCB0aGVzZSBhcmUgKnB1cmVseSogc2VsZnRlc3RzIGFuZCB0aGUgYHZlcmlzdGF0YCB0b29sIGl0c2VsZi4gVGhlcmUmIzM5O3Mgbm90aGluZyBoZXJlIHRoYXQgaW1wYWN0cyB0aGUgY29yZSBrZXJuZWwsIGFueSBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmUtc3BlY2lmaWMgY29kZS4gVGhlcmVmb3JlLCBmcm9tIGEgZnVuY3Rpb25hbCBwZXJzcGVjdGl2ZSwgdGhlcmUmIzM5O3Mgbm90aGluZyB0byBmdXp6LgoKSnVzdCB0byBiZSBhYnNvbHV0ZWx5IGNlcnRhaW4sIEkmIzM5O2xsIHF1aWNrbHkgcmUtY29uZmlybSB0aGUgZmlsZSBsaXN0OiBgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvdGVzdF92ZXJpc3RhdC5jYCwgYHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpc3RhdF9iYXIuY2AsIGB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaXN0YXRfZm9vLmNgLCBhbmQgYHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi92ZXJpc3RhdC5jYC4gWWVwLCBhbGwgaW4gdGhlIHRlc3Qgc3VpdGUgYW5kIHVzZXItc3BhY2UgdG9vbGluZy4gTm8ga2VybmVsIGNvZGUgaXMgYmVpbmcgbW9kaWZpZWQgaGVyZS4gSSYjMzk7bSBjb25maWRlbnQgaW4gY2FsbGluZyB0aGlzIGBXb3J0aEZ1enppbmc9ZmFsc2VgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDA2OjA5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggb25seSBtb2RpZmllcyB1c2VyLXNwYWNlIEJQRiBzZWxmdGVzdHMgYW5kIHRoZSB2ZXJpc3RhdCB0b29sLiBJdCBkb2VzIG5vdCBtYWtlIGFueSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCBjb2RlIGl0c2VsZi4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgdXNlci1zcGFjZSBCUEYgc2VsZnRlc3RzIGFuZCB0aGUgdmVyaXN0YXQgdG9vbC4gSXQgZG9lcyBub3QgbWFrZSBhbnkgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgY29kZSBpdHNlbGYuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDA2OjA5PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0xMlQwNjowOToyNS4zODM3ODg3MTVaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2ODUxMjU3NjYyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggb25seSBtb2RpZmllcyB1c2VyLXNwYWNlIEJQRiBzZWxmdGVzdHMgYW5kIHRoZSB2ZXJpc3RhdCB0b29sLiBJdCBkb2VzIG5vdCBtYWtlIGFueSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCBjb2RlIGl0c2VsZi5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDA2OjA5OjI1LjM4MzgxMDEwNVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTUzOTMxODAzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgNTcxNDYyMmExMGE5MjU4YTUwYzRkNWJkZDJjNTkyMDQ1YmFkZDg4NFxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgV2VkIEF1ZyAxMiAwNjowOToyNCAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy90ZXN0X3ZlcmlzdGF0LmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy90ZXN0X3ZlcmlzdGF0LmNcXG5pbmRleCA5YWZmMDhhYzU1YzA3Li4xMWYzZGUyYjY2YWQxIDEwMDY0NFxcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3Rlc3RfdmVyaXN0YXQuY1xcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3Rlc3RfdmVyaXN0YXQuY1xcbkBAIC0zNyw2ICszNywxNCBAQCBzdGF0aWMgc3RydWN0IGZpeHR1cmUgKmluaXRfZml4dHVyZSh2b2lkKVxcbiBcXHRyZXR1cm4gZml4O1xcbiB9XFxuIFxcbitzdGF0aWMgdm9pZCByZWFkX291dHB1dChzdHJ1Y3QgZml4dHVyZSAqZml4KVxcbit7XFxuK1xcdHNzaXplX3QgbGVuID0gcHJlYWQoZml4LVxcdTAwM2VmZCwgZml4LVxcdTAwM2VvdXRwdXQsIGZpeC1cXHUwMDNlc3ogLSAxLCAwKTtcXG4rXFxuK1xcdGZpeC1cXHUwMDNlb3V0cHV0W2xlbiBcXHUwMDNjIDAgPyAwIDogbGVuXSA9IDA7XFxuK1xcdEFTU0VSVF9HRShsZW4sIDAsIFxcXCJwcmVhZFxcXCIpO1xcbit9XFxuK1xcbiBzdGF0aWMgdm9pZCB0ZWFyZG93bl9maXh0dXJlKHN0cnVjdCBmaXh0dXJlICpmaXgpXFxuIHtcXG4gXFx0ZnJlZShmaXgtXFx1MDAzZW91dHB1dCk7XFxuQEAgLTc0LDcgKzgyLDcgQEAgc3RhdGljIHZvaWQgdGVzdF9zZXRfZ2xvYmFsX3ZhcnNfc3VjY2VlZHModm9pZClcXG4gXFx0ICAgIFxcXCIgLUcgXFxcXFxcXCJzdHJ1Y3QxMSBbIDcgXSBbIDUgXSAuc3RydWN0MlswXVsxXS51Lm1hdFszXVswXSA9IDE3NVxcXFxcXFwiIFxcXCIgXFxcXFxcbiBcXHQgICAgXFxcIiAtdmwyIFxcdTAwM2UgJXNcXFwiLCBmaXgtXFx1MDAzZXZlcmlzdGF0LCBmaXgtXFx1MDAzZXRtcGZpbGUpO1xcbiBcXG4tXFx0cmVhZChmaXgtXFx1MDAzZWZkLCBmaXgtXFx1MDAzZW91dHB1dCwgZml4LVxcdTAwM2Vzeik7XFxuK1xcdHJlYWRfb3V0cHV0KGZpeCk7XFxuIFxcdF9fQ0hFQ0tfU1RSKFxcXCI9MHhmMDAwMDAwMDAwMDAwMDAxIFxcXCIsIFxcXCJ2YXJfczY0ID0gMHhmMDAwMDAwMDAwMDAwMDAxXFxcIik7XFxuIFxcdF9fQ0hFQ0tfU1RSKFxcXCI9MHhmZWRjYmE5ODc2NTQzMjEwIFxcXCIsIFxcXCJ2YXJfdTY0ID0gMHhmZWRjYmE5ODc2NTQzMjEwXFxcIik7XFxuIFxcdF9fQ0hFQ0tfU1RSKFxcXCI9MHg4MDAwMDAwMCBcXFwiLCBcXFwidmFyX3MzMiA9IC0weDgwMDAwMDAwXFxcIik7XFxuQEAgLTExNiw3ICsxMjQsNyBAQCBzdGF0aWMgdm9pZCB0ZXN0X3NldF9nbG9iYWxfdmFyc19mcm9tX2ZpbGVfc3VjY2VlZHModm9pZClcXG4gXFx0c3luY2ZzKGZkKTtcXG4gXFx0U1lTKG91dCwgXFxcIiVzIHNldF9nbG9iYWxfdmFycy5icGYubyAtRyBcXFxcXFxcIkAlc1xcXFxcXFwiIC12bDIgXFx1MDAzZSAlc1xcXCIsXFxuIFxcdCAgICBmaXgtXFx1MDAzZXZlcmlzdGF0LCBpbnB1dF9maWxlLCBmaXgtXFx1MDAzZXRtcGZpbGUpO1xcbi1cXHRyZWFkKGZpeC1cXHUwMDNlZmQsIGZpeC1cXHUwMDNlb3V0cHV0LCBmaXgtXFx1MDAzZXN6KTtcXG4rXFx0cmVhZF9vdXRwdXQoZml4KTtcXG4gXFx0X19DSEVDS19TVFIoXFxcIj0weDgwMDAgXFxcIiwgXFxcInZhcl9zMTYgPSAtMzI3NjhcXFwiKTtcXG4gXFx0X19DSEVDS19TVFIoXFxcIj0weGVjZWMgXFxcIiwgXFxcInZhcl91MTYgPSA2MDY1MlxcXCIpO1xcbiBcXG5AQCAtMTM0LDcgKzE0Miw3IEBAIHN0YXRpYyB2b2lkIHRlc3Rfc2V0X2dsb2JhbF92YXJzX291dF9vZl9yYW5nZSh2b2lkKVxcbiBcXHRcXHQgXFxcIiVzIHNldF9nbG9iYWxfdmFycy5icGYubyAtRyBcXFxcXFxcInZhcl9zMzIgPSAyMTQ3NDgzNjQ4XFxcXFxcXCIgLXZsMiAyXFx1MDAzZSAlc1xcXCIsXFxuIFxcdFxcdCBmaXgtXFx1MDAzZXZlcmlzdGF0LCBmaXgtXFx1MDAzZXRtcGZpbGUpO1xcbiBcXG4tXFx0cmVhZChmaXgtXFx1MDAzZWZkLCBmaXgtXFx1MDAzZW91dHB1dCwgZml4LVxcdTAwM2Vzeik7XFxuK1xcdHJlYWRfb3V0cHV0KGZpeCk7XFxuIFxcdF9fQ0hFQ0tfU1RSKFxcXCJpcyBvdXQgb2YgcmFuZ2UgWy0yMTQ3NDgzNjQ4OyAyMTQ3NDgzNjQ3XVxcXCIsIFxcXCJvdXQgb2YgcmFuZ2VcXFwiKTtcXG4gXFxuIG91dDpcXG5AQCAtMTQ5LDcgKzE1Nyw3IEBAIHN0YXRpYyB2b2lkIHRlc3RfdW5zdXBwb3J0ZWRfcHRyX2FycmF5X3R5cGUodm9pZClcXG4gXFx0XFx0IFxcXCIlcyBzZXRfZ2xvYmFsX3ZhcnMuYnBmLm8gLUcgXFxcXFxcXCJwdHJfYXJyWzBdID0gMFxcXFxcXFwiIC12bDIgMlxcdTAwM2UgJXNcXFwiLFxcbiBcXHRcXHQgZml4LVxcdTAwM2V2ZXJpc3RhdCwgZml4LVxcdTAwM2V0bXBmaWxlKTtcXG4gXFxuLVxcdHJlYWQoZml4LVxcdTAwM2VmZCwgZml4LVxcdTAwM2VvdXRwdXQsIGZpeC1cXHUwMDNlc3opO1xcbitcXHRyZWFkX291dHB1dChmaXgpO1xcbiBcXHRfX0NIRUNLX1NUUihcXFwiQ2FuJ3Qgc2V0IHB0cl9hcnJbMF0uIE9ubHkgaW50cyBhbmQgZW51bXMgYXJlIHN1cHBvcnRlZFxcXCIsIFxcXCJwdHJfYXJyXFxcIik7XFxuIFxcbiBvdXQ6XFxuQEAgLTE2NCw3ICsxNzIsNyBAQCBzdGF0aWMgdm9pZCB0ZXN0X2FycmF5X291dF9vZl9ib3VuZHModm9pZClcXG4gXFx0XFx0IFxcXCIlcyBzZXRfZ2xvYmFsX3ZhcnMuYnBmLm8gLUcgXFxcXFxcXCJhcnJbOTldID0gMFxcXFxcXFwiIC12bDIgMlxcdTAwM2UgJXNcXFwiLFxcbiBcXHRcXHQgZml4LVxcdTAwM2V2ZXJpc3RhdCwgZml4LVxcdTAwM2V0bXBmaWxlKTtcXG4gXFxuLVxcdHJlYWQoZml4LVxcdTAwM2VmZCwgZml4LVxcdTAwM2VvdXRwdXQsIGZpeC1cXHUwMDNlc3opO1xcbitcXHRyZWFkX291dHB1dChmaXgpO1xcbiBcXHRfX0NIRUNLX1NUUihcXFwiQXJyYXkgaW5kZXggOTkgaXMgb3V0IG9mIGJvdW5kc1xcXCIsIFxcXCJhcnJbOTldXFxcIik7XFxuIFxcbiBvdXQ6XFxuQEAgLTE3OSw3ICsxODcsNyBAQCBzdGF0aWMgdm9pZCB0ZXN0X2FycmF5X2luZGV4X25vdF9mb3VuZCh2b2lkKVxcbiBcXHRcXHQgXFxcIiVzIHNldF9nbG9iYWxfdmFycy5icGYubyAtRyBcXFxcXFxcImFycltFRzJdID0gMFxcXFxcXFwiIC12bDIgMlxcdTAwM2UgJXNcXFwiLFxcbiBcXHRcXHQgZml4LVxcdTAwM2V2ZXJpc3RhdCwgZml4LVxcdTAwM2V0bXBmaWxlKTtcXG4gXFxuLVxcdHJlYWQoZml4LVxcdTAwM2VmZCwgZml4LVxcdTAwM2VvdXRwdXQsIGZpeC1cXHUwMDNlc3opO1xcbitcXHRyZWFkX291dHB1dChmaXgpO1xcbiBcXHRfX0NIRUNLX1NUUihcXFwiQ2FuJ3QgcmVzb2x2ZSBlbnVtIHZhbHVlIEVHMlxcXCIsIFxcXCJhcnJbRUcyXVxcXCIpO1xcbiBcXG4gb3V0OlxcbkBAIC0yMzAsNiArMjM4LDk3IEBAIHN0YXRpYyB2b2lkIHRlc3Rfbm9fYXJyYXlfaW5kZXhfZm9yX2FycmF5KHZvaWQpXFxuIFxcdHRlYXJkb3duX2ZpeHR1cmUoZml4KTtcXG4gfVxcbiBcXG4rLypcXG4rICogTmFtZSBmaWx0ZXIgdGVzdHMgYmVsb3cgcnVuIHZlcmlzdGF0IG9uIHZlcmlzdGF0X2Zvby5icGYubyBhbmRcXG4rICogdmVyaXN0YXRfYmFyLmJwZi5vLCBib3RoIGRlZmluaW5nIHByb2dyYW1zICdmb28nLCAnYmFyJyBhbmQgJ2J1eicuXFxuKyAqIEV2ZXJ5IGVudHJ5IGRlc2NyaWJlcyBhIHNpbmdsZSAoZmlsdGVycywgZmlsZSwgcHJvZykgY29tYmluYXRpb24gYW5kXFxuKyAqIHRlbGxzIHdoZXRoZXIgdGhhdCBwcm9ncmFtIGlzIGV4cGVjdGVkIGluIHRoZSB2ZXJpc3RhdCBvdXRwdXQ6XFxuKyAqICd0cnVlJyBpZiBpdCBpcywgJ2ZhbHNlJyBpZiBpdCBpcyBub3QgYW5kIC0xIGlmIHZlcmlzdGF0IGlzIGV4cGVjdGVkXFxuKyAqIHRvIHJlamVjdCB0aGUgZmlsdGVyLlxcbisgKi9cXG4rI2RlZmluZSBGSUxURVJfT0JKUyBcXFwidmVyaXN0YXRfZm9vLmJwZi5vIHZlcmlzdGF0X2Jhci5icGYub1xcXCJcXG4rXFxuK3N0YXRpYyBjb25zdCBzdHJ1Y3QgbmFtZV9maWx0ZXJfY2FzZSB7XFxuK1xcdGNvbnN0IGNoYXIgKmZpbHRlcnM7XFxuK1xcdGNvbnN0IGNoYXIgKmZpbGU7XFxuK1xcdGNvbnN0IGNoYXIgKnByb2c7XFxuK1xcdGludCBpbmNsdWRlZDtcXG4rfSBuYW1lX2ZpbHRlcl9jYXNlc1tdID0ge1xcbitcXHQvKiBubyBmaWx0ZXJzLCBldmVyeSBwcm9ncmFtIGlzIHByb2Nlc3NlZCAqL1xcbitcXHR7IFxcXCJcXFwiLFxcdFxcdFxcdFxcXCJmb29cXFwiLCBcXFwiZm9vXFxcIiwgdHJ1ZSAgfSxcXG4rXFx0eyBcXFwiXFxcIixcXHRcXHRcXHRcXFwiZm9vXFxcIiwgXFxcImJhclxcXCIsIHRydWUgIH0sXFxuK1xcdHsgXFxcIlxcXCIsXFx0XFx0XFx0XFxcImZvb1xcXCIsIFxcXCJidXpcXFwiLCB0cnVlICB9LFxcbitcXHR7IFxcXCJcXFwiLFxcdFxcdFxcdFxcXCJiYXJcXFwiLCBcXFwiZm9vXFxcIiwgdHJ1ZSAgfSxcXG4rXFx0eyBcXFwiXFxcIixcXHRcXHRcXHRcXFwiYmFyXFxcIiwgXFxcImJhclxcXCIsIHRydWUgIH0sXFxuK1xcdHsgXFxcIlxcXCIsXFx0XFx0XFx0XFxcImJhclxcXCIsIFxcXCJidXpcXFwiLCB0cnVlICB9LFxcbitcXHQvKiBkZW55IGZpbHRlcnMgKi9cXG4rXFx0eyBcXFwiLWYgJyEqZm9vKidcXFwiLFxcdFxcXCJmb29cXFwiLCBcXFwiYmFyXFxcIiwgZmFsc2UgfSxcXG4rXFx0eyBcXFwiLWYgJyEqZm9vKidcXFwiLFxcdFxcXCJiYXJcXFwiLCBcXFwiZm9vXFxcIiwgZmFsc2UgfSxcXG4rXFx0eyBcXFwiLWYgJyEqZm9vKidcXFwiLFxcdFxcXCJiYXJcXFwiLCBcXFwiYmFyXFxcIiwgdHJ1ZSAgfSxcXG4rXFx0eyBcXFwiLWYgJyEqZm9vKi9iYXInXFxcIixcXHRcXFwiZm9vXFxcIiwgXFxcImJhclxcXCIsIGZhbHNlIH0sXFxuK1xcdHsgXFxcIi1mICchKmZvbyovYmFyJ1xcXCIsXFx0XFxcImZvb1xcXCIsIFxcXCJidXpcXFwiLCB0cnVlICB9LFxcbitcXHR7IFxcXCItZiAnISpmb28qL2JhcidcXFwiLFxcdFxcXCJiYXJcXFwiLCBcXFwiYmFyXFxcIiwgdHJ1ZSAgfSxcXG4rXFx0eyBcXFwiLWYgJyEqZm9vKi8nXFxcIixcXHRcXFwiZm9vXFxcIiwgXFxcImJhclxcXCIsIGZhbHNlIH0sXFxuK1xcdHsgXFxcIi1mICchKmZvbyovJ1xcXCIsXFx0XFxcImJhclxcXCIsIFxcXCJiYXJcXFwiLCB0cnVlICB9LFxcbitcXHR7IFxcXCItZiAnIS9iYXInXFxcIixcXHRcXHRcXFwiZm9vXFxcIiwgXFxcImJhclxcXCIsIGZhbHNlIH0sXFxuK1xcdHsgXFxcIi1mICchL2JhcidcXFwiLFxcdFxcdFxcXCJmb29cXFwiLCBcXFwiZm9vXFxcIiwgdHJ1ZSAgfSxcXG4rXFx0eyBcXFwiLWYgJyEvJ1xcXCIsXFx0XFx0XFxcImZvb1xcXCIsIFxcXCJiYXJcXFwiLCAtMSAgICB9LFxcbitcXHR7IFxcXCItZiAnISdcXFwiLFxcdFxcdFxcXCJmb29cXFwiLCBcXFwiYmFyXFxcIiwgLTEgICAgfSxcXG4rXFx0LyogYWxsb3cgZmlsdGVycyAqL1xcbitcXHR7IFxcXCItZiAnKmZvbyonXFxcIixcXHRcXHRcXFwiZm9vXFxcIiwgXFxcImJhclxcXCIsIHRydWUgIH0sXFxuK1xcdHsgXFxcIi1mICcqZm9vKidcXFwiLFxcdFxcdFxcXCJiYXJcXFwiLCBcXFwiZm9vXFxcIiwgdHJ1ZSAgfSxcXG4rXFx0eyBcXFwiLWYgJypmb28qJ1xcXCIsXFx0XFx0XFxcImJhclxcXCIsIFxcXCJiYXJcXFwiLCBmYWxzZSB9LFxcbitcXHR7IFxcXCItZiAnKmZvbyovYmFyJ1xcXCIsXFx0XFxcImZvb1xcXCIsIFxcXCJiYXJcXFwiLCB0cnVlICB9LFxcbitcXHR7IFxcXCItZiAnKmZvbyovYmFyJ1xcXCIsXFx0XFxcImZvb1xcXCIsIFxcXCJidXpcXFwiLCBmYWxzZSB9LFxcbitcXHR7IFxcXCItZiAnKmZvbyovYmFyJ1xcXCIsXFx0XFxcImJhclxcXCIsIFxcXCJiYXJcXFwiLCBmYWxzZSB9LFxcbitcXHR7IFxcXCItZiAnKmZvbyovJ1xcXCIsXFx0XFxcImZvb1xcXCIsIFxcXCJiYXJcXFwiLCB0cnVlICB9LFxcbitcXHR7IFxcXCItZiAnKmZvbyovJ1xcXCIsXFx0XFxcImJhclxcXCIsIFxcXCJiYXJcXFwiLCBmYWxzZSB9LFxcbitcXHR7IFxcXCItZiAnL2JhcidcXFwiLFxcdFxcdFxcXCJmb29cXFwiLCBcXFwiYmFyXFxcIiwgdHJ1ZSAgfSxcXG4rXFx0eyBcXFwiLWYgJy9iYXInXFxcIixcXHRcXHRcXFwiZm9vXFxcIiwgXFxcImZvb1xcXCIsIGZhbHNlIH0sXFxuK1xcdHsgXFxcIi1mICcvJ1xcXCIsXFx0XFx0XFxcImZvb1xcXCIsIFxcXCJiYXJcXFwiLCAtMSAgICB9LFxcbitcXHR7IFxcXCItZiAnJ1xcXCIsXFx0XFx0XFxcImZvb1xcXCIsIFxcXCJiYXJcXFwiLCAtMSAgICB9LFxcbitcXHQvKiBhbGxvdyBhbmQgZGVueSBmaWx0ZXJzIGNvbWJpbmVkICovXFxuK1xcdHsgXFxcIi1mICcqZm9vKi8nIC1mICchL2JhcidcXFwiLCBcXFwiZm9vXFxcIiwgXFxcImZvb1xcXCIsIHRydWUgIH0sXFxuK1xcdHsgXFxcIi1mICcqZm9vKi8nIC1mICchL2JhcidcXFwiLCBcXFwiZm9vXFxcIiwgXFxcImJhclxcXCIsIGZhbHNlIH0sXFxuK1xcdHsgXFxcIi1mICcqZm9vKi8nIC1mICchL2JhcidcXFwiLCBcXFwiYmFyXFxcIiwgXFxcImZvb1xcXCIsIGZhbHNlIH0sXFxuK307XFxuK1xcbitzdGF0aWMgdm9pZCB0ZXN0X25hbWVfZmlsdGVycyh2b2lkKVxcbit7XFxuK1xcdHN0cnVjdCBmaXh0dXJlICpmaXggPSBpbml0X2ZpeHR1cmUoKTtcXG4rXFx0Y29uc3Qgc3RydWN0IG5hbWVfZmlsdGVyX2Nhc2UgKnQ7XFxuK1xcdGNoYXIgY21kWzUxMl0sIHJvd1s2NF0sIG5hbWVbMTI4XTtcXG4rXFx0aW50IGksIGVycjtcXG4rXFxuK1xcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBBUlJBWV9TSVpFKG5hbWVfZmlsdGVyX2Nhc2VzKTsgaSsrKSB7XFxuK1xcdFxcdHQgPSBcXHUwMDI2bmFtZV9maWx0ZXJfY2FzZXNbaV07XFxuK1xcdFxcdC8qIHN0ZGVyciBpcyBtZXJnZWQgd2l0aCBzdGRvdXQgaW4gb3JkZXIgdG8gY2F0Y2ggZXJyb3IgbWVzc2FnZXMgKi9cXG4rXFx0XFx0c25wcmludGYoY21kLCBzaXplb2YoY21kKSwgXFxcIiVzIFxcXCIgRklMVEVSX09CSlMgXFxcIiAtcSAtbyBjc3YgLWUgZmlsZSxwcm9nICVzIFxcdTAwM2UgJXMgMlxcdTAwM2VcXHUwMDI2MVxcXCIsXFxuK1xcdFxcdFxcdCBmaXgtXFx1MDAzZXZlcmlzdGF0LCB0LVxcdTAwM2VmaWx0ZXJzLCBmaXgtXFx1MDAzZXRtcGZpbGUpO1xcbitcXHRcXHRlcnIgPSBzeXN0ZW0oY21kKTtcXG4rXFx0XFx0cmVhZF9vdXRwdXQoZml4KTtcXG4rXFxuK1xcdFxcdHNucHJpbnRmKHJvdywgc2l6ZW9mKHJvdyksIFxcXCJ2ZXJpc3RhdF8lcy5icGYubywlc1xcXCIsIHQtXFx1MDAzZWZpbGUsIHQtXFx1MDAzZXByb2cpO1xcbitcXHRcXHRzbnByaW50ZihuYW1lLCBzaXplb2YobmFtZSksIFxcXCJ2ZXJpc3RhdCAlczogJXNcXFwiLCB0LVxcdTAwM2VmaWx0ZXJzLCByb3cpO1xcbitcXHRcXHRzd2l0Y2ggKHQtXFx1MDAzZWluY2x1ZGVkKSB7XFxuK1xcdFxcdGNhc2UgdHJ1ZTpcXG4rXFx0XFx0XFx0QVNTRVJUX09LKGVyciwgbmFtZSk7XFxuK1xcdFxcdFxcdEFTU0VSVF9IQVNfU1VCU1RSKGZpeC1cXHUwMDNlb3V0cHV0LCByb3csIG5hbWUpO1xcbitcXHRcXHRcXHRicmVhaztcXG4rXFx0XFx0Y2FzZSBmYWxzZTpcXG4rXFx0XFx0XFx0QVNTRVJUX09LKGVyciwgbmFtZSk7XFxuK1xcdFxcdFxcdEFTU0VSVF9GQUxTRSghIXN0cnN0cihmaXgtXFx1MDAzZW91dHB1dCwgcm93KSwgbmFtZSk7XFxuK1xcdFxcdFxcdGJyZWFrO1xcbitcXHRcXHRjYXNlIC0xOlxcbitcXHRcXHRcXHRBU1NFUlRfTkVRKGVyciwgMCwgbmFtZSk7XFxuK1xcdFxcdFxcdEFTU0VSVF9IQVNfU1VCU1RSKGZpeC1cXHUwMDNlb3V0cHV0LCBcXFwiSW52YWxpZCBmaWx0ZXJcXFwiLCBuYW1lKTtcXG4rXFx0XFx0XFx0YnJlYWs7XFxuK1xcdFxcdH1cXG4rXFx0fVxcbitcXG4rXFx0dGVhcmRvd25fZml4dHVyZShmaXgpO1xcbit9XFxuK1xcbiB2b2lkIHRlc3RfdmVyaXN0YXQodm9pZClcXG4ge1xcbiBcXHRpZiAodGVzdF9fc3RhcnRfc3VidGVzdChcXFwic2V0X2dsb2JhbF92YXJzX3N1Y2NlZWRzXFxcIikpXFxuQEAgLTI1Niw2ICszNTUsOCBAQCB2b2lkIHRlc3RfdmVyaXN0YXQodm9pZClcXG4gXFx0aWYgKHRlc3RfX3N0YXJ0X3N1YnRlc3QoXFxcInRlc3Rfbm9fYXJyYXlfaW5kZXhfZm9yX2FycmF5XFxcIikpXFxuIFxcdFxcdHRlc3Rfbm9fYXJyYXlfaW5kZXhfZm9yX2FycmF5KCk7XFxuIFxcbitcXHRpZiAodGVzdF9fc3RhcnRfc3VidGVzdChcXFwibmFtZV9maWx0ZXJzXFxcIikpXFxuK1xcdFxcdHRlc3RfbmFtZV9maWx0ZXJzKCk7XFxuIH1cXG4gXFxuICN1bmRlZiBfX0NIRUNLX1NUUlxcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaXN0YXRfYmFyLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaXN0YXRfYmFyLmNcXG5uZXcgZmlsZSBtb2RlIDEwMDY0NFxcbmluZGV4IDAwMDAwMDAwMDAwMDAuLjgzZDJhMmExZGZjOTZcXG4tLS0gL2Rldi9udWxsXFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlzdGF0X2Jhci5jXFxuQEAgLTAsMCArMSwzIEBAXFxuKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXFxuKy8qIENvcHlyaWdodCAoYykgMjAyNiBNZXRhIFBsYXRmb3JtcywgSW5jLiBhbmQgYWZmaWxpYXRlcy4gKi9cXG4rI2luY2x1ZGUgXFxcInZlcmlzdGF0X2Zvby5jXFxcIlxcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaXN0YXRfZm9vLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaXN0YXRfZm9vLmNcXG5uZXcgZmlsZSBtb2RlIDEwMDY0NFxcbmluZGV4IDAwMDAwMDAwMDAwMDAuLmJkMjRiOTc2NjRiNDlcXG4tLS0gL2Rldi9udWxsXFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlzdGF0X2Zvby5jXFxuQEAgLTAsMCArMSwzMSBAQFxcbisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxcbisvKiBDb3B5cmlnaHQgKGMpIDIwMjYgTWV0YSBQbGF0Zm9ybXMsIEluYy4gYW5kIGFmZmlsaWF0ZXMuICovXFxuKyNpbmNsdWRlIFxcdTAwM2NsaW51eC9icGYuaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY2JwZi9icGZfaGVscGVycy5oXFx1MDAzZVxcbitcXG4rLypcXG4rICogUHJvZ3JhbXMgYmVsb3cgZXhpc3Qgb25seSB0byBleGVyY2lzZSB2ZXJpc3RhdCdzIC1mIG5hbWUgZmlsdGVycyxcXG4rICogdGhlaXIgYm9kaWVzIGFyZSBpcnJlbGV2YW50LCBvbmx5IHRoZSBuYW1lcyBtYXR0ZXIuXFxuKyAqIFRoaXMgZmlsZSBpcyBhbHNvIGluY2x1ZGVkIGJ5IHZlcmlzdGF0X2Jhci5jLCBzbyB0aGF0IHRoZSBzYW1lIHNldCBvZlxcbisgKiBwcm9ncmFtIG5hbWVzIGlzIGF2YWlsYWJsZSBpbiB0d28gZGlmZmVyZW50bHkgbmFtZWQgb2JqZWN0IGZpbGVzLlxcbisgKi9cXG4rXFxuK1NFQyhcXFwic29ja2V0XFxcIilcXG4raW50IGZvbyh2b2lkICpjdHgpXFxuK3tcXG4rXFx0cmV0dXJuIDA7XFxuK31cXG4rXFxuK1NFQyhcXFwic29ja2V0XFxcIilcXG4raW50IGJhcih2b2lkICpjdHgpXFxuK3tcXG4rXFx0cmV0dXJuIDA7XFxuK31cXG4rXFxuK1NFQyhcXFwic29ja2V0XFxcIilcXG4raW50IGJ1eih2b2lkICpjdHgpXFxuK3tcXG4rXFx0cmV0dXJuIDA7XFxuK31cXG4rXFxuK2NoYXIgX2xpY2Vuc2VbXSBTRUMoXFxcImxpY2Vuc2VcXFwiKSA9IFxcXCJHUExcXFwiO1xcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdmVyaXN0YXQuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi92ZXJpc3RhdC5jXFxuaW5kZXggYzljMjU3Nzg0ZWUzZC4uNmFhYTA2NzkwZGFhMiAxMDA2NDRcXG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdmVyaXN0YXQuY1xcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi92ZXJpc3RhdC5jXFxuQEAgLTUxNCw2ICs1MTQsNDAgQEAgc3RhdGljIGJvb2wgaXNfYnBmX29ial9maWxlKGNvbnN0IGNoYXIgKnBhdGgpIHtcXG4gXFx0cmV0dXJuIGVyciA9PSAwO1xcbiB9XFxuIFxcbisvKiBFeGFjdCBmaWx0ZXIgbWF0Y2ggKi9cXG4rc3RhdGljIGJvb2wgbmFtZV9maWx0ZXJfbWF0Y2hlcyhzdHJ1Y3QgZmlsdGVyICpmLCBjb25zdCBjaGFyICpmaWxlbmFtZSwgY29uc3QgY2hhciAqcHJvZ19uYW1lKVxcbit7XFxuK1xcdGlmIChmLVxcdTAwM2VhbnlfZ2xvYilcXG4rXFx0XFx0cmV0dXJuIGdsb2JfbWF0Y2hlcyhmaWxlbmFtZSwgZi1cXHUwMDNlYW55X2dsb2IpIHx8XFxuK1xcdFxcdCAgICAgICAocHJvZ19uYW1lIFxcdTAwMjZcXHUwMDI2IGdsb2JfbWF0Y2hlcyhwcm9nX25hbWUsIGYtXFx1MDAzZWFueV9nbG9iKSk7XFxuK1xcdGlmIChmLVxcdTAwM2VmaWxlX2dsb2IgXFx1MDAyNlxcdTAwMjYgZi1cXHUwMDNlcHJvZ19nbG9iKVxcbitcXHRcXHRyZXR1cm4gcHJvZ19uYW1lIFxcdTAwMjZcXHUwMDI2XFxuK1xcdFxcdCAgICAgICBnbG9iX21hdGNoZXMoZmlsZW5hbWUsIGYtXFx1MDAzZWZpbGVfZ2xvYikgXFx1MDAyNlxcdTAwMjZcXG4rXFx0XFx0ICAgICAgIGdsb2JfbWF0Y2hlcyhwcm9nX25hbWUsIGYtXFx1MDAzZXByb2dfZ2xvYik7XFxuK1xcdGlmIChmLVxcdTAwM2VmaWxlX2dsb2IpXFxuK1xcdFxcdHJldHVybiBnbG9iX21hdGNoZXMoZmlsZW5hbWUsIGYtXFx1MDAzZWZpbGVfZ2xvYik7XFxuK1xcdGlmIChmLVxcdTAwM2Vwcm9nX2dsb2IpXFxuK1xcdFxcdHJldHVybiBwcm9nX25hbWUgXFx1MDAyNlxcdTAwMjYgZ2xvYl9tYXRjaGVzKHByb2dfbmFtZSwgZi1cXHUwMDNlcHJvZ19nbG9iKTtcXG4rXFx0cmV0dXJuIGZhbHNlO1xcbit9XFxuK1xcbisvKiBDaGVjayBpZiB0aGUgZmlsdGVyIGRvZXMgbm90IG91dHJpZ2h0IHJlamVjdCB0aGUgZmlsZSBuYW1lICovXFxuK3N0YXRpYyBib29sIG5hbWVfZmlsdGVyX21heV9tYXRjaChzdHJ1Y3QgZmlsdGVyICpmLCBjb25zdCBjaGFyICpmaWxlbmFtZSlcXG4re1xcbitcXHRpZiAoZi1cXHUwMDNlZmlsZV9nbG9iKVxcbitcXHRcXHRyZXR1cm4gZ2xvYl9tYXRjaGVzKGZpbGVuYW1lLCBmLVxcdTAwM2VmaWxlX2dsb2IpO1xcbitcXHQvKlxcbitcXHQgKiBJZiB3ZSBkb24ndCBrbm93IHByb2dyYW0gbmFtZSB5ZXQsIGFueV9nbG9iIGZpbHRlclxcbitcXHQgKiBoYXMgdG8gYXNzdW1lIHRoYXQgY3VycmVudCBCUEYgb2JqZWN0IGZpbGUgbWlnaHQgYmVcXG4rXFx0ICogcmVsZXZhbnQ7IHdlJ2xsIGNoZWNrIGFnYWluIGxhdGVyIG9uIGFmdGVyIG9wZW5pbmdcXG4rXFx0ICogQlBGIG9iamVjdCBmaWxlLCBhdCB3aGljaCBwb2ludCBwcm9ncmFtIG5hbWUgd2lsbFxcbitcXHQgKiBiZSBrbm93biBmaW5hbGx5LlxcbitcXHQgKi9cXG4rXFx0aWYgKGYtXFx1MDAzZWFueV9nbG9iIHx8IGYtXFx1MDAzZXByb2dfZ2xvYilcXG4rXFx0XFx0cmV0dXJuIHRydWU7XFxuK1xcdHJldHVybiBmYWxzZTtcXG4rfVxcbitcXG4gc3RhdGljIGJvb2wgc2hvdWxkX3Byb2Nlc3NfZmlsZV9wcm9nKGNvbnN0IGNoYXIgKmZpbGVuYW1lLCBjb25zdCBjaGFyICpwcm9nX25hbWUpXFxuIHtcXG4gXFx0c3RydWN0IGZpbHRlciAqZjtcXG5AQCAtNTIxLDE2ICs1NTUsNyBAQCBzdGF0aWMgYm9vbCBzaG91bGRfcHJvY2Vzc19maWxlX3Byb2coY29uc3QgY2hhciAqZmlsZW5hbWUsIGNvbnN0IGNoYXIgKnByb2dfbmFtZVxcbiBcXG4gXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIGVudi5kZW55X2ZpbHRlcl9jbnQ7IGkrKykge1xcbiBcXHRcXHRmID0gXFx1MDAyNmVudi5kZW55X2ZpbHRlcnNbaV07XFxuLVxcdFxcdGlmIChmLVxcdTAwM2VraW5kICE9IEZJTFRFUl9OQU1FKVxcbi1cXHRcXHRcXHRjb250aW51ZTtcXG4tXFxuLVxcdFxcdGlmIChmLVxcdTAwM2VhbnlfZ2xvYiBcXHUwMDI2XFx1MDAyNiBnbG9iX21hdGNoZXMoZmlsZW5hbWUsIGYtXFx1MDAzZWFueV9nbG9iKSlcXG4tXFx0XFx0XFx0cmV0dXJuIGZhbHNlO1xcbi1cXHRcXHRpZiAoZi1cXHUwMDNlYW55X2dsb2IgXFx1MDAyNlxcdTAwMjYgcHJvZ19uYW1lIFxcdTAwMjZcXHUwMDI2IGdsb2JfbWF0Y2hlcyhwcm9nX25hbWUsIGYtXFx1MDAzZWFueV9nbG9iKSlcXG4tXFx0XFx0XFx0cmV0dXJuIGZhbHNlO1xcbi1cXHRcXHRpZiAoZi1cXHUwMDNlZmlsZV9nbG9iIFxcdTAwMjZcXHUwMDI2IGdsb2JfbWF0Y2hlcyhmaWxlbmFtZSwgZi1cXHUwMDNlZmlsZV9nbG9iKSlcXG4tXFx0XFx0XFx0cmV0dXJuIGZhbHNlO1xcbi1cXHRcXHRpZiAoZi1cXHUwMDNlcHJvZ19nbG9iIFxcdTAwMjZcXHUwMDI2IHByb2dfbmFtZSBcXHUwMDI2XFx1MDAyNiBnbG9iX21hdGNoZXMocHJvZ19uYW1lLCBmLVxcdTAwM2Vwcm9nX2dsb2IpKVxcbitcXHRcXHRpZiAoZi1cXHUwMDNla2luZCA9PSBGSUxURVJfTkFNRSBcXHUwMDI2XFx1MDAyNiBuYW1lX2ZpbHRlcl9tYXRjaGVzKGYsIGZpbGVuYW1lLCBwcm9nX25hbWUpKVxcbiBcXHRcXHRcXHRyZXR1cm4gZmFsc2U7XFxuIFxcdH1cXG4gXFxuQEAgLTU0MCwyNCArNTY1LDE1IEBAIHN0YXRpYyBib29sIHNob3VsZF9wcm9jZXNzX2ZpbGVfcHJvZyhjb25zdCBjaGFyICpmaWxlbmFtZSwgY29uc3QgY2hhciAqcHJvZ19uYW1lXFxuIFxcdFxcdFxcdGNvbnRpbnVlO1xcbiBcXG4gXFx0XFx0YWxsb3dfY250Kys7XFxuLVxcdFxcdGlmIChmLVxcdTAwM2VhbnlfZ2xvYikge1xcbi1cXHRcXHRcXHRpZiAoZ2xvYl9tYXRjaGVzKGZpbGVuYW1lLCBmLVxcdTAwM2VhbnlfZ2xvYikpXFxuLVxcdFxcdFxcdFxcdHJldHVybiB0cnVlO1xcbi1cXHRcXHRcXHQvKiBJZiB3ZSBkb24ndCBrbm93IHByb2dyYW0gbmFtZSB5ZXQsIGFueV9nbG9iIGZpbHRlclxcbi1cXHRcXHRcXHQgKiBoYXMgdG8gYXNzdW1lIHRoYXQgY3VycmVudCBCUEYgb2JqZWN0IGZpbGUgbWlnaHQgYmVcXG4tXFx0XFx0XFx0ICogcmVsZXZhbnQ7IHdlJ2xsIGNoZWNrIGFnYWluIGxhdGVyIG9uIGFmdGVyIG9wZW5pbmdcXG4tXFx0XFx0XFx0ICogQlBGIG9iamVjdCBmaWxlLCBhdCB3aGljaCBwb2ludCBwcm9ncmFtIG5hbWUgd2lsbFxcbi1cXHRcXHRcXHQgKiBiZSBrbm93biBmaW5hbGx5Llxcbi1cXHRcXHRcXHQgKi9cXG4tXFx0XFx0XFx0aWYgKCFwcm9nX25hbWUgfHwgZ2xvYl9tYXRjaGVzKHByb2dfbmFtZSwgZi1cXHUwMDNlYW55X2dsb2IpKVxcbi1cXHRcXHRcXHRcXHRyZXR1cm4gdHJ1ZTtcXG4tXFx0XFx0fSBlbHNlIHtcXG4tXFx0XFx0XFx0aWYgKGYtXFx1MDAzZWZpbGVfZ2xvYiBcXHUwMDI2XFx1MDAyNiAhZ2xvYl9tYXRjaGVzKGZpbGVuYW1lLCBmLVxcdTAwM2VmaWxlX2dsb2IpKVxcbi1cXHRcXHRcXHRcXHRjb250aW51ZTtcXG4tXFx0XFx0XFx0aWYgKGYtXFx1MDAzZXByb2dfZ2xvYiBcXHUwMDI2XFx1MDAyNiBwcm9nX25hbWUgXFx1MDAyNlxcdTAwMjYgIWdsb2JfbWF0Y2hlcyhwcm9nX25hbWUsIGYtXFx1MDAzZXByb2dfZ2xvYikpXFxuLVxcdFxcdFxcdFxcdGNvbnRpbnVlO1xcbitcXHRcXHRpZiAocHJvZ19uYW1lIFxcdTAwMjZcXHUwMDI2IG5hbWVfZmlsdGVyX21hdGNoZXMoZiwgZmlsZW5hbWUsIHByb2dfbmFtZSkpXFxuK1xcdFxcdFxcdHJldHVybiB0cnVlO1xcbitcXHRcXHQvKlxcbitcXHRcXHQgKiBJZiB0aGVyZSBpcyBubyBwcm9nX25hbWUgYW5kIHRoZSBmaWxlIG5hbWUgaXMgbm90IGJsb2NrZWQgYnlcXG4rXFx0XFx0ICogdGhlIGZpbHRlciwgYWxsb3cgdG8gb3BlbiB0aGUgZmlsZS4gQWZ0ZXJ3YXJkcyB0aGVyZSB3b3VsZCBiZVxcbitcXHRcXHQgKiBhIHNlY29uZCByZWZpbmluZyBxdWVyeSB3aXRoIHByb2dfbmFtZSBzZXQuXFxuK1xcdFxcdCAqL1xcbitcXHRcXHRpZiAoIXByb2dfbmFtZSBcXHUwMDI2XFx1MDAyNiBuYW1lX2ZpbHRlcl9tYXlfbWF0Y2goZiwgZmlsZW5hbWUpKVxcbiBcXHRcXHRcXHRyZXR1cm4gdHJ1ZTtcXG4tXFx0XFx0fVxcbiBcXHR9XFxuIFxcbiBcXHQvKiBpZiB0aGVyZSBhcmUgbm8gZmlsZS9wcm9nIG5hbWUgYWxsb3cgZmlsdGVycywgYWxsb3cgYWxsIHByb2dzLFxcbkBAIC03MDMsNiArNzE5LDEyIEBAIHN0YXRpYyBpbnQgYXBwZW5kX2ZpbHRlcihzdHJ1Y3QgZmlsdGVyICoqZmlsdGVycywgaW50ICpjbnQsIGNvbnN0IGNoYXIgKnN0cilcXG4gXFx0XFx0fVxcbiBcXHR9XFxuIFxcbitcXHRpZiAoKCFmLVxcdTAwM2VhbnlfZ2xvYiBcXHUwMDI2XFx1MDAyNiAhZi1cXHUwMDNlZmlsZV9nbG9iIFxcdTAwMjZcXHUwMDI2ICFmLVxcdTAwM2Vwcm9nX2dsb2IpIHx8XFxuK1xcdCAgICAoZi1cXHUwMDNlYW55X2dsb2IgXFx1MDAyNlxcdTAwMjYgc3RyY21wKGYtXFx1MDAzZWFueV9nbG9iLCBcXFwiXFxcIikgPT0gMCkpIHtcXG4rXFx0XFx0ZnByaW50ZihzdGRlcnIsIFxcXCJJbnZhbGlkIGZpbHRlcjogJyVzJ1xcXFxuXFxcIiwgc3RyKTtcXG4rXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuK1xcdH1cXG4rXFxuIFxcdCpjbnQgKz0gMTtcXG4gXFx0cmV0dXJuIDA7XFxuIH1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMDY6MDk6MjUuOTM4Njk2MTA4WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6NjI5NjMzMDk0OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggb25seSBtb2RpZmllcyB1c2VyLXNwYWNlIEJQRiBzZWxmdGVzdHMgYW5kIHRoZSB2ZXJpc3RhdCB0b29sLiBJdCBkb2VzIG5vdCBtYWtlIGFueSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCBjb2RlIGl0c2VsZi5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDU3MTQ2MjJhMTBhOTI1OGE1MGM0ZDViZGQyYzU5MjA0NWJhZGQ4ODRcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIEF1ZyAxMiAwNjowOToyNCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3Rlc3RfdmVyaXN0YXQuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3Rlc3RfdmVyaXN0YXQuY1xuaW5kZXggOWFmZjA4YWM1NWMwNy4uMTFmM2RlMmI2NmFkMSAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3Rlc3RfdmVyaXN0YXQuY1xuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvdGVzdF92ZXJpc3RhdC5jXG5AQCAtMzcsNiArMzcsMTQgQEAgc3RhdGljIHN0cnVjdCBmaXh0dXJlICppbml0X2ZpeHR1cmUodm9pZClcbiBcdHJldHVybiBmaXg7XG4gfVxuIFxuK3N0YXRpYyB2b2lkIHJlYWRfb3V0cHV0KHN0cnVjdCBmaXh0dXJlICpmaXgpXG4re1xuK1x0c3NpemVfdCBsZW4gPSBwcmVhZChmaXgtXHUwMDNlZmQsIGZpeC1cdTAwM2VvdXRwdXQsIGZpeC1cdTAwM2VzeiAtIDEsIDApO1xuK1xuK1x0Zml4LVx1MDAzZW91dHB1dFtsZW4gXHUwMDNjIDAgPyAwIDogbGVuXSA9IDA7XG4rXHRBU1NFUlRfR0UobGVuLCAwLCBcInByZWFkXCIpO1xuK31cbitcbiBzdGF0aWMgdm9pZCB0ZWFyZG93bl9maXh0dXJlKHN0cnVjdCBmaXh0dXJlICpmaXgpXG4ge1xuIFx0ZnJlZShmaXgtXHUwMDNlb3V0cHV0KTtcbkBAIC03NCw3ICs4Miw3IEBAIHN0YXRpYyB2b2lkIHRlc3Rfc2V0X2dsb2JhbF92YXJzX3N1Y2NlZWRzKHZvaWQpXG4gXHQgICAgXCIgLUcgXFxcInN0cnVjdDExIFsgNyBdIFsgNSBdIC5zdHJ1Y3QyWzBdWzFdLnUubWF0WzNdWzBdID0gMTc1XFxcIiBcIiBcXFxuIFx0ICAgIFwiIC12bDIgXHUwMDNlICVzXCIsIGZpeC1cdTAwM2V2ZXJpc3RhdCwgZml4LVx1MDAzZXRtcGZpbGUpO1xuIFxuLVx0cmVhZChmaXgtXHUwMDNlZmQsIGZpeC1cdTAwM2VvdXRwdXQsIGZpeC1cdTAwM2Vzeik7XG4rXHRyZWFkX291dHB1dChmaXgpO1xuIFx0X19DSEVDS19TVFIoXCI9MHhmMDAwMDAwMDAwMDAwMDAxIFwiLCBcInZhcl9zNjQgPSAweGYwMDAwMDAwMDAwMDAwMDFcIik7XG4gXHRfX0NIRUNLX1NUUihcIj0weGZlZGNiYTk4NzY1NDMyMTAgXCIsIFwidmFyX3U2NCA9IDB4ZmVkY2JhOTg3NjU0MzIxMFwiKTtcbiBcdF9fQ0hFQ0tfU1RSKFwiPTB4ODAwMDAwMDAgXCIsIFwidmFyX3MzMiA9IC0weDgwMDAwMDAwXCIpO1xuQEAgLTExNiw3ICsxMjQsNyBAQCBzdGF0aWMgdm9pZCB0ZXN0X3NldF9nbG9iYWxfdmFyc19mcm9tX2ZpbGVfc3VjY2VlZHModm9pZClcbiBcdHN5bmNmcyhmZCk7XG4gXHRTWVMob3V0LCBcIiVzIHNldF9nbG9iYWxfdmFycy5icGYubyAtRyBcXFwiQCVzXFxcIiAtdmwyIFx1MDAzZSAlc1wiLFxuIFx0ICAgIGZpeC1cdTAwM2V2ZXJpc3RhdCwgaW5wdXRfZmlsZSwgZml4LVx1MDAzZXRtcGZpbGUpO1xuLVx0cmVhZChmaXgtXHUwMDNlZmQsIGZpeC1cdTAwM2VvdXRwdXQsIGZpeC1cdTAwM2Vzeik7XG4rXHRyZWFkX291dHB1dChmaXgpO1xuIFx0X19DSEVDS19TVFIoXCI9MHg4MDAwIFwiLCBcInZhcl9zMTYgPSAtMzI3NjhcIik7XG4gXHRfX0NIRUNLX1NUUihcIj0weGVjZWMgXCIsIFwidmFyX3UxNiA9IDYwNjUyXCIpO1xuIFxuQEAgLTEzNCw3ICsxNDIsNyBAQCBzdGF0aWMgdm9pZCB0ZXN0X3NldF9nbG9iYWxfdmFyc19vdXRfb2ZfcmFuZ2Uodm9pZClcbiBcdFx0IFwiJXMgc2V0X2dsb2JhbF92YXJzLmJwZi5vIC1HIFxcXCJ2YXJfczMyID0gMjE0NzQ4MzY0OFxcXCIgLXZsMiAyXHUwMDNlICVzXCIsXG4gXHRcdCBmaXgtXHUwMDNldmVyaXN0YXQsIGZpeC1cdTAwM2V0bXBmaWxlKTtcbiBcbi1cdHJlYWQoZml4LVx1MDAzZWZkLCBmaXgtXHUwMDNlb3V0cHV0LCBmaXgtXHUwMDNlc3opO1xuK1x0cmVhZF9vdXRwdXQoZml4KTtcbiBcdF9fQ0hFQ0tfU1RSKFwiaXMgb3V0IG9mIHJhbmdlIFstMjE0NzQ4MzY0ODsgMjE0NzQ4MzY0N11cIiwgXCJvdXQgb2YgcmFuZ2VcIik7XG4gXG4gb3V0OlxuQEAgLTE0OSw3ICsxNTcsNyBAQCBzdGF0aWMgdm9pZCB0ZXN0X3Vuc3VwcG9ydGVkX3B0cl9hcnJheV90eXBlKHZvaWQpXG4gXHRcdCBcIiVzIHNldF9nbG9iYWxfdmFycy5icGYubyAtRyBcXFwicHRyX2FyclswXSA9IDBcXFwiIC12bDIgMlx1MDAzZSAlc1wiLFxuIFx0XHQgZml4LVx1MDAzZXZlcmlzdGF0LCBmaXgtXHUwMDNldG1wZmlsZSk7XG4gXG4tXHRyZWFkKGZpeC1cdTAwM2VmZCwgZml4LVx1MDAzZW91dHB1dCwgZml4LVx1MDAzZXN6KTtcbitcdHJlYWRfb3V0cHV0KGZpeCk7XG4gXHRfX0NIRUNLX1NUUihcIkNhbid0IHNldCBwdHJfYXJyWzBdLiBPbmx5IGludHMgYW5kIGVudW1zIGFyZSBzdXBwb3J0ZWRcIiwgXCJwdHJfYXJyXCIpO1xuIFxuIG91dDpcbkBAIC0xNjQsNyArMTcyLDcgQEAgc3RhdGljIHZvaWQgdGVzdF9hcnJheV9vdXRfb2ZfYm91bmRzKHZvaWQpXG4gXHRcdCBcIiVzIHNldF9nbG9iYWxfdmFycy5icGYubyAtRyBcXFwiYXJyWzk5XSA9IDBcXFwiIC12bDIgMlx1MDAzZSAlc1wiLFxuIFx0XHQgZml4LVx1MDAzZXZlcmlzdGF0LCBmaXgtXHUwMDNldG1wZmlsZSk7XG4gXG4tXHRyZWFkKGZpeC1cdTAwM2VmZCwgZml4LVx1MDAzZW91dHB1dCwgZml4LVx1MDAzZXN6KTtcbitcdHJlYWRfb3V0cHV0KGZpeCk7XG4gXHRfX0NIRUNLX1NUUihcIkFycmF5IGluZGV4IDk5IGlzIG91dCBvZiBib3VuZHNcIiwgXCJhcnJbOTldXCIpO1xuIFxuIG91dDpcbkBAIC0xNzksNyArMTg3LDcgQEAgc3RhdGljIHZvaWQgdGVzdF9hcnJheV9pbmRleF9ub3RfZm91bmQodm9pZClcbiBcdFx0IFwiJXMgc2V0X2dsb2JhbF92YXJzLmJwZi5vIC1HIFxcXCJhcnJbRUcyXSA9IDBcXFwiIC12bDIgMlx1MDAzZSAlc1wiLFxuIFx0XHQgZml4LVx1MDAzZXZlcmlzdGF0LCBmaXgtXHUwMDNldG1wZmlsZSk7XG4gXG4tXHRyZWFkKGZpeC1cdTAwM2VmZCwgZml4LVx1MDAzZW91dHB1dCwgZml4LVx1MDAzZXN6KTtcbitcdHJlYWRfb3V0cHV0KGZpeCk7XG4gXHRfX0NIRUNLX1NUUihcIkNhbid0IHJlc29sdmUgZW51bSB2YWx1ZSBFRzJcIiwgXCJhcnJbRUcyXVwiKTtcbiBcbiBvdXQ6XG5AQCAtMjMwLDYgKzIzOCw5NyBAQCBzdGF0aWMgdm9pZCB0ZXN0X25vX2FycmF5X2luZGV4X2Zvcl9hcnJheSh2b2lkKVxuIFx0dGVhcmRvd25fZml4dHVyZShmaXgpO1xuIH1cbiBcbisvKlxuKyAqIE5hbWUgZmlsdGVyIHRlc3RzIGJlbG93IHJ1biB2ZXJpc3RhdCBvbiB2ZXJpc3RhdF9mb28uYnBmLm8gYW5kXG4rICogdmVyaXN0YXRfYmFyLmJwZi5vLCBib3RoIGRlZmluaW5nIHByb2dyYW1zICdmb28nLCAnYmFyJyBhbmQgJ2J1eicuXG4rICogRXZlcnkgZW50cnkgZGVzY3JpYmVzIGEgc2luZ2xlIChmaWx0ZXJzLCBmaWxlLCBwcm9nKSBjb21iaW5hdGlvbiBhbmRcbisgKiB0ZWxscyB3aGV0aGVyIHRoYXQgcHJvZ3JhbSBpcyBleHBlY3RlZCBpbiB0aGUgdmVyaXN0YXQgb3V0cHV0OlxuKyAqICd0cnVlJyBpZiBpdCBpcywgJ2ZhbHNlJyBpZiBpdCBpcyBub3QgYW5kIC0xIGlmIHZlcmlzdGF0IGlzIGV4cGVjdGVkXG4rICogdG8gcmVqZWN0IHRoZSBmaWx0ZXIuXG4rICovXG4rI2RlZmluZSBGSUxURVJfT0JKUyBcInZlcmlzdGF0X2Zvby5icGYubyB2ZXJpc3RhdF9iYXIuYnBmLm9cIlxuK1xuK3N0YXRpYyBjb25zdCBzdHJ1Y3QgbmFtZV9maWx0ZXJfY2FzZSB7XG4rXHRjb25zdCBjaGFyICpmaWx0ZXJzO1xuK1x0Y29uc3QgY2hhciAqZmlsZTtcbitcdGNvbnN0IGNoYXIgKnByb2c7XG4rXHRpbnQgaW5jbHVkZWQ7XG4rfSBuYW1lX2ZpbHRlcl9jYXNlc1tdID0ge1xuK1x0Lyogbm8gZmlsdGVycywgZXZlcnkgcHJvZ3JhbSBpcyBwcm9jZXNzZWQgKi9cbitcdHsgXCJcIixcdFx0XHRcImZvb1wiLCBcImZvb1wiLCB0cnVlICB9LFxuK1x0eyBcIlwiLFx0XHRcdFwiZm9vXCIsIFwiYmFyXCIsIHRydWUgIH0sXG4rXHR7IFwiXCIsXHRcdFx0XCJmb29cIiwgXCJidXpcIiwgdHJ1ZSAgfSxcbitcdHsgXCJcIixcdFx0XHRcImJhclwiLCBcImZvb1wiLCB0cnVlICB9LFxuK1x0eyBcIlwiLFx0XHRcdFwiYmFyXCIsIFwiYmFyXCIsIHRydWUgIH0sXG4rXHR7IFwiXCIsXHRcdFx0XCJiYXJcIiwgXCJidXpcIiwgdHJ1ZSAgfSxcbitcdC8qIGRlbnkgZmlsdGVycyAqL1xuK1x0eyBcIi1mICchKmZvbyonXCIsXHRcImZvb1wiLCBcImJhclwiLCBmYWxzZSB9LFxuK1x0eyBcIi1mICchKmZvbyonXCIsXHRcImJhclwiLCBcImZvb1wiLCBmYWxzZSB9LFxuK1x0eyBcIi1mICchKmZvbyonXCIsXHRcImJhclwiLCBcImJhclwiLCB0cnVlICB9LFxuK1x0eyBcIi1mICchKmZvbyovYmFyJ1wiLFx0XCJmb29cIiwgXCJiYXJcIiwgZmFsc2UgfSxcbitcdHsgXCItZiAnISpmb28qL2JhcidcIixcdFwiZm9vXCIsIFwiYnV6XCIsIHRydWUgIH0sXG4rXHR7IFwiLWYgJyEqZm9vKi9iYXInXCIsXHRcImJhclwiLCBcImJhclwiLCB0cnVlICB9LFxuK1x0eyBcIi1mICchKmZvbyovJ1wiLFx0XCJmb29cIiwgXCJiYXJcIiwgZmFsc2UgfSxcbitcdHsgXCItZiAnISpmb28qLydcIixcdFwiYmFyXCIsIFwiYmFyXCIsIHRydWUgIH0sXG4rXHR7IFwiLWYgJyEvYmFyJ1wiLFx0XHRcImZvb1wiLCBcImJhclwiLCBmYWxzZSB9LFxuK1x0eyBcIi1mICchL2JhcidcIixcdFx0XCJmb29cIiwgXCJmb29cIiwgdHJ1ZSAgfSxcbitcdHsgXCItZiAnIS8nXCIsXHRcdFwiZm9vXCIsIFwiYmFyXCIsIC0xICAgIH0sXG4rXHR7IFwiLWYgJyEnXCIsXHRcdFwiZm9vXCIsIFwiYmFyXCIsIC0xICAgIH0sXG4rXHQvKiBhbGxvdyBmaWx0ZXJzICovXG4rXHR7IFwiLWYgJypmb28qJ1wiLFx0XHRcImZvb1wiLCBcImJhclwiLCB0cnVlICB9LFxuK1x0eyBcIi1mICcqZm9vKidcIixcdFx0XCJiYXJcIiwgXCJmb29cIiwgdHJ1ZSAgfSxcbitcdHsgXCItZiAnKmZvbyonXCIsXHRcdFwiYmFyXCIsIFwiYmFyXCIsIGZhbHNlIH0sXG4rXHR7IFwiLWYgJypmb28qL2JhcidcIixcdFwiZm9vXCIsIFwiYmFyXCIsIHRydWUgIH0sXG4rXHR7IFwiLWYgJypmb28qL2JhcidcIixcdFwiZm9vXCIsIFwiYnV6XCIsIGZhbHNlIH0sXG4rXHR7IFwiLWYgJypmb28qL2JhcidcIixcdFwiYmFyXCIsIFwiYmFyXCIsIGZhbHNlIH0sXG4rXHR7IFwiLWYgJypmb28qLydcIixcdFwiZm9vXCIsIFwiYmFyXCIsIHRydWUgIH0sXG4rXHR7IFwiLWYgJypmb28qLydcIixcdFwiYmFyXCIsIFwiYmFyXCIsIGZhbHNlIH0sXG4rXHR7IFwiLWYgJy9iYXInXCIsXHRcdFwiZm9vXCIsIFwiYmFyXCIsIHRydWUgIH0sXG4rXHR7IFwiLWYgJy9iYXInXCIsXHRcdFwiZm9vXCIsIFwiZm9vXCIsIGZhbHNlIH0sXG4rXHR7IFwiLWYgJy8nXCIsXHRcdFwiZm9vXCIsIFwiYmFyXCIsIC0xICAgIH0sXG4rXHR7IFwiLWYgJydcIixcdFx0XCJmb29cIiwgXCJiYXJcIiwgLTEgICAgfSxcbitcdC8qIGFsbG93IGFuZCBkZW55IGZpbHRlcnMgY29tYmluZWQgKi9cbitcdHsgXCItZiAnKmZvbyovJyAtZiAnIS9iYXInXCIsIFwiZm9vXCIsIFwiZm9vXCIsIHRydWUgIH0sXG4rXHR7IFwiLWYgJypmb28qLycgLWYgJyEvYmFyJ1wiLCBcImZvb1wiLCBcImJhclwiLCBmYWxzZSB9LFxuK1x0eyBcIi1mICcqZm9vKi8nIC1mICchL2JhcidcIiwgXCJiYXJcIiwgXCJmb29cIiwgZmFsc2UgfSxcbit9O1xuK1xuK3N0YXRpYyB2b2lkIHRlc3RfbmFtZV9maWx0ZXJzKHZvaWQpXG4re1xuK1x0c3RydWN0IGZpeHR1cmUgKmZpeCA9IGluaXRfZml4dHVyZSgpO1xuK1x0Y29uc3Qgc3RydWN0IG5hbWVfZmlsdGVyX2Nhc2UgKnQ7XG4rXHRjaGFyIGNtZFs1MTJdLCByb3dbNjRdLCBuYW1lWzEyOF07XG4rXHRpbnQgaSwgZXJyO1xuK1xuK1x0Zm9yIChpID0gMDsgaSBcdTAwM2MgQVJSQVlfU0laRShuYW1lX2ZpbHRlcl9jYXNlcyk7IGkrKykge1xuK1x0XHR0ID0gXHUwMDI2bmFtZV9maWx0ZXJfY2FzZXNbaV07XG4rXHRcdC8qIHN0ZGVyciBpcyBtZXJnZWQgd2l0aCBzdGRvdXQgaW4gb3JkZXIgdG8gY2F0Y2ggZXJyb3IgbWVzc2FnZXMgKi9cbitcdFx0c25wcmludGYoY21kLCBzaXplb2YoY21kKSwgXCIlcyBcIiBGSUxURVJfT0JKUyBcIiAtcSAtbyBjc3YgLWUgZmlsZSxwcm9nICVzIFx1MDAzZSAlcyAyXHUwMDNlXHUwMDI2MVwiLFxuK1x0XHRcdCBmaXgtXHUwMDNldmVyaXN0YXQsIHQtXHUwMDNlZmlsdGVycywgZml4LVx1MDAzZXRtcGZpbGUpO1xuK1x0XHRlcnIgPSBzeXN0ZW0oY21kKTtcbitcdFx0cmVhZF9vdXRwdXQoZml4KTtcbitcbitcdFx0c25wcmludGYocm93LCBzaXplb2Yocm93KSwgXCJ2ZXJpc3RhdF8lcy5icGYubywlc1wiLCB0LVx1MDAzZWZpbGUsIHQtXHUwMDNlcHJvZyk7XG4rXHRcdHNucHJpbnRmKG5hbWUsIHNpemVvZihuYW1lKSwgXCJ2ZXJpc3RhdCAlczogJXNcIiwgdC1cdTAwM2VmaWx0ZXJzLCByb3cpO1xuK1x0XHRzd2l0Y2ggKHQtXHUwMDNlaW5jbHVkZWQpIHtcbitcdFx0Y2FzZSB0cnVlOlxuK1x0XHRcdEFTU0VSVF9PSyhlcnIsIG5hbWUpO1xuK1x0XHRcdEFTU0VSVF9IQVNfU1VCU1RSKGZpeC1cdTAwM2VvdXRwdXQsIHJvdywgbmFtZSk7XG4rXHRcdFx0YnJlYWs7XG4rXHRcdGNhc2UgZmFsc2U6XG4rXHRcdFx0QVNTRVJUX09LKGVyciwgbmFtZSk7XG4rXHRcdFx0QVNTRVJUX0ZBTFNFKCEhc3Ryc3RyKGZpeC1cdTAwM2VvdXRwdXQsIHJvdyksIG5hbWUpO1xuK1x0XHRcdGJyZWFrO1xuK1x0XHRjYXNlIC0xOlxuK1x0XHRcdEFTU0VSVF9ORVEoZXJyLCAwLCBuYW1lKTtcbitcdFx0XHRBU1NFUlRfSEFTX1NVQlNUUihmaXgtXHUwMDNlb3V0cHV0LCBcIkludmFsaWQgZmlsdGVyXCIsIG5hbWUpO1xuK1x0XHRcdGJyZWFrO1xuK1x0XHR9XG4rXHR9XG4rXG4rXHR0ZWFyZG93bl9maXh0dXJlKGZpeCk7XG4rfVxuK1xuIHZvaWQgdGVzdF92ZXJpc3RhdCh2b2lkKVxuIHtcbiBcdGlmICh0ZXN0X19zdGFydF9zdWJ0ZXN0KFwic2V0X2dsb2JhbF92YXJzX3N1Y2NlZWRzXCIpKVxuQEAgLTI1Niw2ICszNTUsOCBAQCB2b2lkIHRlc3RfdmVyaXN0YXQodm9pZClcbiBcdGlmICh0ZXN0X19zdGFydF9zdWJ0ZXN0KFwidGVzdF9ub19hcnJheV9pbmRleF9mb3JfYXJyYXlcIikpXG4gXHRcdHRlc3Rfbm9fYXJyYXlfaW5kZXhfZm9yX2FycmF5KCk7XG4gXG4rXHRpZiAodGVzdF9fc3RhcnRfc3VidGVzdChcIm5hbWVfZmlsdGVyc1wiKSlcbitcdFx0dGVzdF9uYW1lX2ZpbHRlcnMoKTtcbiB9XG4gXG4gI3VuZGVmIF9fQ0hFQ0tfU1RSXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlzdGF0X2Jhci5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlzdGF0X2Jhci5jXG5uZXcgZmlsZSBtb2RlIDEwMDY0NFxuaW5kZXggMDAwMDAwMDAwMDAwMC4uODNkMmEyYTFkZmM5NlxuLS0tIC9kZXYvbnVsbFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlzdGF0X2Jhci5jXG5AQCAtMCwwICsxLDMgQEBcbisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxuKy8qIENvcHlyaWdodCAoYykgMjAyNiBNZXRhIFBsYXRmb3JtcywgSW5jLiBhbmQgYWZmaWxpYXRlcy4gKi9cbisjaW5jbHVkZSBcInZlcmlzdGF0X2Zvby5jXCJcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaXN0YXRfZm9vLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaXN0YXRfZm9vLmNcbm5ldyBmaWxlIG1vZGUgMTAwNjQ0XG5pbmRleCAwMDAwMDAwMDAwMDAwLi5iZDI0Yjk3NjY0YjQ5XG4tLS0gL2Rldi9udWxsXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaXN0YXRfZm9vLmNcbkBAIC0wLDAgKzEsMzEgQEBcbisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxuKy8qIENvcHlyaWdodCAoYykgMjAyNiBNZXRhIFBsYXRmb3JtcywgSW5jLiBhbmQgYWZmaWxpYXRlcy4gKi9cbisjaW5jbHVkZSBcdTAwM2NsaW51eC9icGYuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2JwZi9icGZfaGVscGVycy5oXHUwMDNlXG4rXG4rLypcbisgKiBQcm9ncmFtcyBiZWxvdyBleGlzdCBvbmx5IHRvIGV4ZXJjaXNlIHZlcmlzdGF0J3MgLWYgbmFtZSBmaWx0ZXJzLFxuKyAqIHRoZWlyIGJvZGllcyBhcmUgaXJyZWxldmFudCwgb25seSB0aGUgbmFtZXMgbWF0dGVyLlxuKyAqIFRoaXMgZmlsZSBpcyBhbHNvIGluY2x1ZGVkIGJ5IHZlcmlzdGF0X2Jhci5jLCBzbyB0aGF0IHRoZSBzYW1lIHNldCBvZlxuKyAqIHByb2dyYW0gbmFtZXMgaXMgYXZhaWxhYmxlIGluIHR3byBkaWZmZXJlbnRseSBuYW1lZCBvYmplY3QgZmlsZXMuXG4rICovXG4rXG4rU0VDKFwic29ja2V0XCIpXG4raW50IGZvbyh2b2lkICpjdHgpXG4re1xuK1x0cmV0dXJuIDA7XG4rfVxuK1xuK1NFQyhcInNvY2tldFwiKVxuK2ludCBiYXIodm9pZCAqY3R4KVxuK3tcbitcdHJldHVybiAwO1xuK31cbitcbitTRUMoXCJzb2NrZXRcIilcbitpbnQgYnV6KHZvaWQgKmN0eClcbit7XG4rXHRyZXR1cm4gMDtcbit9XG4rXG4rY2hhciBfbGljZW5zZVtdIFNFQyhcImxpY2Vuc2VcIikgPSBcIkdQTFwiO1xuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi92ZXJpc3RhdC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3ZlcmlzdGF0LmNcbmluZGV4IGM5YzI1Nzc4NGVlM2QuLjZhYWEwNjc5MGRhYTIgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdmVyaXN0YXQuY1xuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3ZlcmlzdGF0LmNcbkBAIC01MTQsNiArNTE0LDQwIEBAIHN0YXRpYyBib29sIGlzX2JwZl9vYmpfZmlsZShjb25zdCBjaGFyICpwYXRoKSB7XG4gXHRyZXR1cm4gZXJyID09IDA7XG4gfVxuIFxuKy8qIEV4YWN0IGZpbHRlciBtYXRjaCAqL1xuK3N0YXRpYyBib29sIG5hbWVfZmlsdGVyX21hdGNoZXMoc3RydWN0IGZpbHRlciAqZiwgY29uc3QgY2hhciAqZmlsZW5hbWUsIGNvbnN0IGNoYXIgKnByb2dfbmFtZSlcbit7XG4rXHRpZiAoZi1cdTAwM2VhbnlfZ2xvYilcbitcdFx0cmV0dXJuIGdsb2JfbWF0Y2hlcyhmaWxlbmFtZSwgZi1cdTAwM2VhbnlfZ2xvYikgfHxcbitcdFx0ICAgICAgIChwcm9nX25hbWUgXHUwMDI2XHUwMDI2IGdsb2JfbWF0Y2hlcyhwcm9nX25hbWUsIGYtXHUwMDNlYW55X2dsb2IpKTtcbitcdGlmIChmLVx1MDAzZWZpbGVfZ2xvYiBcdTAwMjZcdTAwMjYgZi1cdTAwM2Vwcm9nX2dsb2IpXG4rXHRcdHJldHVybiBwcm9nX25hbWUgXHUwMDI2XHUwMDI2XG4rXHRcdCAgICAgICBnbG9iX21hdGNoZXMoZmlsZW5hbWUsIGYtXHUwMDNlZmlsZV9nbG9iKSBcdTAwMjZcdTAwMjZcbitcdFx0ICAgICAgIGdsb2JfbWF0Y2hlcyhwcm9nX25hbWUsIGYtXHUwMDNlcHJvZ19nbG9iKTtcbitcdGlmIChmLVx1MDAzZWZpbGVfZ2xvYilcbitcdFx0cmV0dXJuIGdsb2JfbWF0Y2hlcyhmaWxlbmFtZSwgZi1cdTAwM2VmaWxlX2dsb2IpO1xuK1x0aWYgKGYtXHUwMDNlcHJvZ19nbG9iKVxuK1x0XHRyZXR1cm4gcHJvZ19uYW1lIFx1MDAyNlx1MDAyNiBnbG9iX21hdGNoZXMocHJvZ19uYW1lLCBmLVx1MDAzZXByb2dfZ2xvYik7XG4rXHRyZXR1cm4gZmFsc2U7XG4rfVxuK1xuKy8qIENoZWNrIGlmIHRoZSBmaWx0ZXIgZG9lcyBub3Qgb3V0cmlnaHQgcmVqZWN0IHRoZSBmaWxlIG5hbWUgKi9cbitzdGF0aWMgYm9vbCBuYW1lX2ZpbHRlcl9tYXlfbWF0Y2goc3RydWN0IGZpbHRlciAqZiwgY29uc3QgY2hhciAqZmlsZW5hbWUpXG4re1xuK1x0aWYgKGYtXHUwMDNlZmlsZV9nbG9iKVxuK1x0XHRyZXR1cm4gZ2xvYl9tYXRjaGVzKGZpbGVuYW1lLCBmLVx1MDAzZWZpbGVfZ2xvYik7XG4rXHQvKlxuK1x0ICogSWYgd2UgZG9uJ3Qga25vdyBwcm9ncmFtIG5hbWUgeWV0LCBhbnlfZ2xvYiBmaWx0ZXJcbitcdCAqIGhhcyB0byBhc3N1bWUgdGhhdCBjdXJyZW50IEJQRiBvYmplY3QgZmlsZSBtaWdodCBiZVxuK1x0ICogcmVsZXZhbnQ7IHdlJ2xsIGNoZWNrIGFnYWluIGxhdGVyIG9uIGFmdGVyIG9wZW5pbmdcbitcdCAqIEJQRiBvYmplY3QgZmlsZSwgYXQgd2hpY2ggcG9pbnQgcHJvZ3JhbSBuYW1lIHdpbGxcbitcdCAqIGJlIGtub3duIGZpbmFsbHkuXG4rXHQgKi9cbitcdGlmIChmLVx1MDAzZWFueV9nbG9iIHx8IGYtXHUwMDNlcHJvZ19nbG9iKVxuK1x0XHRyZXR1cm4gdHJ1ZTtcbitcdHJldHVybiBmYWxzZTtcbit9XG4rXG4gc3RhdGljIGJvb2wgc2hvdWxkX3Byb2Nlc3NfZmlsZV9wcm9nKGNvbnN0IGNoYXIgKmZpbGVuYW1lLCBjb25zdCBjaGFyICpwcm9nX25hbWUpXG4ge1xuIFx0c3RydWN0IGZpbHRlciAqZjtcbkBAIC01MjEsMTYgKzU1NSw3IEBAIHN0YXRpYyBib29sIHNob3VsZF9wcm9jZXNzX2ZpbGVfcHJvZyhjb25zdCBjaGFyICpmaWxlbmFtZSwgY29uc3QgY2hhciAqcHJvZ19uYW1lXG4gXG4gXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBlbnYuZGVueV9maWx0ZXJfY250OyBpKyspIHtcbiBcdFx0ZiA9IFx1MDAyNmVudi5kZW55X2ZpbHRlcnNbaV07XG4tXHRcdGlmIChmLVx1MDAzZWtpbmQgIT0gRklMVEVSX05BTUUpXG4tXHRcdFx0Y29udGludWU7XG4tXG4tXHRcdGlmIChmLVx1MDAzZWFueV9nbG9iIFx1MDAyNlx1MDAyNiBnbG9iX21hdGNoZXMoZmlsZW5hbWUsIGYtXHUwMDNlYW55X2dsb2IpKVxuLVx0XHRcdHJldHVybiBmYWxzZTtcbi1cdFx0aWYgKGYtXHUwMDNlYW55X2dsb2IgXHUwMDI2XHUwMDI2IHByb2dfbmFtZSBcdTAwMjZcdTAwMjYgZ2xvYl9tYXRjaGVzKHByb2dfbmFtZSwgZi1cdTAwM2VhbnlfZ2xvYikpXG4tXHRcdFx0cmV0dXJuIGZhbHNlO1xuLVx0XHRpZiAoZi1cdTAwM2VmaWxlX2dsb2IgXHUwMDI2XHUwMDI2IGdsb2JfbWF0Y2hlcyhmaWxlbmFtZSwgZi1cdTAwM2VmaWxlX2dsb2IpKVxuLVx0XHRcdHJldHVybiBmYWxzZTtcbi1cdFx0aWYgKGYtXHUwMDNlcHJvZ19nbG9iIFx1MDAyNlx1MDAyNiBwcm9nX25hbWUgXHUwMDI2XHUwMDI2IGdsb2JfbWF0Y2hlcyhwcm9nX25hbWUsIGYtXHUwMDNlcHJvZ19nbG9iKSlcbitcdFx0aWYgKGYtXHUwMDNla2luZCA9PSBGSUxURVJfTkFNRSBcdTAwMjZcdTAwMjYgbmFtZV9maWx0ZXJfbWF0Y2hlcyhmLCBmaWxlbmFtZSwgcHJvZ19uYW1lKSlcbiBcdFx0XHRyZXR1cm4gZmFsc2U7XG4gXHR9XG4gXG5AQCAtNTQwLDI0ICs1NjUsMTUgQEAgc3RhdGljIGJvb2wgc2hvdWxkX3Byb2Nlc3NfZmlsZV9wcm9nKGNvbnN0IGNoYXIgKmZpbGVuYW1lLCBjb25zdCBjaGFyICpwcm9nX25hbWVcbiBcdFx0XHRjb250aW51ZTtcbiBcbiBcdFx0YWxsb3dfY250Kys7XG4tXHRcdGlmIChmLVx1MDAzZWFueV9nbG9iKSB7XG4tXHRcdFx0aWYgKGdsb2JfbWF0Y2hlcyhmaWxlbmFtZSwgZi1cdTAwM2VhbnlfZ2xvYikpXG4tXHRcdFx0XHRyZXR1cm4gdHJ1ZTtcbi1cdFx0XHQvKiBJZiB3ZSBkb24ndCBrbm93IHByb2dyYW0gbmFtZSB5ZXQsIGFueV9nbG9iIGZpbHRlclxuLVx0XHRcdCAqIGhhcyB0byBhc3N1bWUgdGhhdCBjdXJyZW50IEJQRiBvYmplY3QgZmlsZSBtaWdodCBiZVxuLVx0XHRcdCAqIHJlbGV2YW50OyB3ZSdsbCBjaGVjayBhZ2FpbiBsYXRlciBvbiBhZnRlciBvcGVuaW5nXG4tXHRcdFx0ICogQlBGIG9iamVjdCBmaWxlLCBhdCB3aGljaCBwb2ludCBwcm9ncmFtIG5hbWUgd2lsbFxuLVx0XHRcdCAqIGJlIGtub3duIGZpbmFsbHkuXG4tXHRcdFx0ICovXG4tXHRcdFx0aWYgKCFwcm9nX25hbWUgfHwgZ2xvYl9tYXRjaGVzKHByb2dfbmFtZSwgZi1cdTAwM2VhbnlfZ2xvYikpXG4tXHRcdFx0XHRyZXR1cm4gdHJ1ZTtcbi1cdFx0fSBlbHNlIHtcbi1cdFx0XHRpZiAoZi1cdTAwM2VmaWxlX2dsb2IgXHUwMDI2XHUwMDI2ICFnbG9iX21hdGNoZXMoZmlsZW5hbWUsIGYtXHUwMDNlZmlsZV9nbG9iKSlcbi1cdFx0XHRcdGNvbnRpbnVlO1xuLVx0XHRcdGlmIChmLVx1MDAzZXByb2dfZ2xvYiBcdTAwMjZcdTAwMjYgcHJvZ19uYW1lIFx1MDAyNlx1MDAyNiAhZ2xvYl9tYXRjaGVzKHByb2dfbmFtZSwgZi1cdTAwM2Vwcm9nX2dsb2IpKVxuLVx0XHRcdFx0Y29udGludWU7XG4rXHRcdGlmIChwcm9nX25hbWUgXHUwMDI2XHUwMDI2IG5hbWVfZmlsdGVyX21hdGNoZXMoZiwgZmlsZW5hbWUsIHByb2dfbmFtZSkpXG4rXHRcdFx0cmV0dXJuIHRydWU7XG4rXHRcdC8qXG4rXHRcdCAqIElmIHRoZXJlIGlzIG5vIHByb2dfbmFtZSBhbmQgdGhlIGZpbGUgbmFtZSBpcyBub3QgYmxvY2tlZCBieVxuK1x0XHQgKiB0aGUgZmlsdGVyLCBhbGxvdyB0byBvcGVuIHRoZSBmaWxlLiBBZnRlcndhcmRzIHRoZXJlIHdvdWxkIGJlXG4rXHRcdCAqIGEgc2Vjb25kIHJlZmluaW5nIHF1ZXJ5IHdpdGggcHJvZ19uYW1lIHNldC5cbitcdFx0ICovXG4rXHRcdGlmICghcHJvZ19uYW1lIFx1MDAyNlx1MDAyNiBuYW1lX2ZpbHRlcl9tYXlfbWF0Y2goZiwgZmlsZW5hbWUpKVxuIFx0XHRcdHJldHVybiB0cnVlO1xuLVx0XHR9XG4gXHR9XG4gXG4gXHQvKiBpZiB0aGVyZSBhcmUgbm8gZmlsZS9wcm9nIG5hbWUgYWxsb3cgZmlsdGVycywgYWxsb3cgYWxsIHByb2dzLFxuQEAgLTcwMyw2ICs3MTksMTIgQEAgc3RhdGljIGludCBhcHBlbmRfZmlsdGVyKHN0cnVjdCBmaWx0ZXIgKipmaWx0ZXJzLCBpbnQgKmNudCwgY29uc3QgY2hhciAqc3RyKVxuIFx0XHR9XG4gXHR9XG4gXG4rXHRpZiAoKCFmLVx1MDAzZWFueV9nbG9iIFx1MDAyNlx1MDAyNiAhZi1cdTAwM2VmaWxlX2dsb2IgXHUwMDI2XHUwMDI2ICFmLVx1MDAzZXByb2dfZ2xvYikgfHxcbitcdCAgICAoZi1cdTAwM2VhbnlfZ2xvYiBcdTAwMjZcdTAwMjYgc3RyY21wKGYtXHUwMDNlYW55X2dsb2IsIFwiXCIpID09IDApKSB7XG4rXHRcdGZwcmludGYoc3RkZXJyLCBcIkludmFsaWQgZmlsdGVyOiAnJXMnXFxuXCIsIHN0cik7XG4rXHRcdHJldHVybiAtRUlOVkFMO1xuK1x0fVxuK1xuIFx0KmNudCArPSAxO1xuIFx0cmV0dXJuIDA7XG4gfVxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMDY6MDk6MjUuOTM4Njk4MTY4WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjI5NjI5NDExOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIERlY2lzaW9uIGZvciBUaGlzIFBhdGNoIFNlcmllcyoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCBhc3Nlc3NtZW50IGlzIHRoYXQgdGhpcyBwYXRjaCBzZXJpZXMgZG9lc24ndCBuZWNlc3NpdGF0ZSBmdXp6aW5nLiBNeSByZWFzb25pbmcgaXMgc3RyYWlnaHRmb3J3YXJkOiB0aGUgY2hhbmdlcyBhcmUgY29udGFpbmVkIHdpdGhpbiB0aGUgYHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9gIGRpcmVjdG9yeS4gU3BlY2lmaWNhbGx5LCBpdCB0b3VjaGVzIGB0ZXN0X3ZlcmlzdGF0LmNgLCBgdmVyaXN0YXRfYmFyLmNgLCBgdmVyaXN0YXRfZm9vLmNgLCBhbmQgYHZlcmlzdGF0LmNgLiBBbGwgaW5kaWNhdGlvbnMgYXJlIHRoYXQgdGhlc2UgYXJlICpwdXJlbHkqIHNlbGZ0ZXN0cyBhbmQgdGhlIGB2ZXJpc3RhdGAgdG9vbCBpdHNlbGYuIFRoZXJlJ3Mgbm90aGluZyBoZXJlIHRoYXQgaW1wYWN0cyB0aGUgY29yZSBrZXJuZWwsIGFueSBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmUtc3BlY2lmaWMgY29kZS4gVGhlcmVmb3JlLCBmcm9tIGEgZnVuY3Rpb25hbCBwZXJzcGVjdGl2ZSwgdGhlcmUncyBub3RoaW5nIHRvIGZ1enouXG5cbkp1c3QgdG8gYmUgYWJzb2x1dGVseSBjZXJ0YWluLCBJJ2xsIHF1aWNrbHkgcmUtY29uZmlybSB0aGUgZmlsZSBsaXN0OiBgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvdGVzdF92ZXJpc3RhdC5jYCwgYHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpc3RhdF9iYXIuY2AsIGB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaXN0YXRfZm9vLmNgLCBhbmQgYHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi92ZXJpc3RhdC5jYC4gWWVwLCBhbGwgaW4gdGhlIHRlc3Qgc3VpdGUgYW5kIHVzZXItc3BhY2UgdG9vbGluZy4gTm8ga2VybmVsIGNvZGUgaXMgYmVpbmcgbW9kaWZpZWQgaGVyZS4gSSdtIGNvbmZpZGVudCBpbiBjYWxsaW5nIHRoaXMgYFdvcnRoRnV6emluZz1mYWxzZWAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY1MjgsIk91dHB1dFRva2VucyI6NjMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNDUsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQwNjowOTozMi4yMzQ5OTY0MjdaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI4MjQwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgdXNlci1zcGFjZSBCUEYgc2VsZnRlc3RzIGFuZCB0aGUgdmVyaXN0YXQgdG9vbC4gSXQgZG9lcyBub3QgbWFrZSBhbnkgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgY29kZSBpdHNlbGYuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IG1vZGlmaWVzIHVzZXItc3BhY2UgQlBGIHNlbGZ0ZXN0cyBhbmQgdGhlIHZlcmlzdGF0IHRvb2wuIEl0IGRvZXMgbm90IG1ha2UgYW55IGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIGNvZGUgaXRzZWxmLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMDY6MDk6MzIuMjM1MDI5NDY3WiIsIlNlcSI6NSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ0NTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },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-workflow5w6zn[1] Phase: Running StartedAt: 2026-08-12 06:09:43 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5w6zn[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-08-12 06:09:43 +0000 UTC FinishedAt: 2026-08-12 06:09:49 +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,}