Name: series-workflowkhtj5 Phase: Failed StartedAt: 2026-07-03 16:08:22 +0000 UTC FinishedAt: 2026-07-03 16:30:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkhtj5[0] Phase: Succeeded StartedAt: 2026-07-03 16:08:22 +0000 UTC FinishedAt: 2026-07-03 16:27:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkhtj5[0].run-triage Phase: Succeeded StartedAt: 2026-07-03 16:08:22 +0000 UTC FinishedAt: 2026-07-03 16:27:42 +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+CgkJCTx0ZD4yMDI2LzA3LzAzIDE2OjIyPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+NW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBhdGgxMmsgZHJpdmVyLCB3aGljaCBpcyBhIGhhcmR3YXJlLXNwZWNpZmljIGRyaXZlciBmb3IgUXVhbGNvbW0gV2ktRmkgNyBQQ0llL0FIQiBkZXZpY2VzLiBUaGUgbW9kaWZpZWQgY29kZSBwYXRocyAobWFjODAyMTEgY2FsbGJhY2tzIGFuZCBXTUkgZXZlbnQgaGFuZGxlcnMpIHJlcXVpcmUgYSBzdWNjZXNzZnVsIGRldmljZSBwcm9iZSBhbmQgZmlybXdhcmUgYm9vdCBzZXF1ZW5jZSAoTUhJLCBRTUksIFdNSSkgdG8gYmUgcmVhY2hhYmxlLiBTaW5jZSB0aGVyZSBpcyBubyBzb2Z0d2FyZSBlbXVsYXRpb24gZm9yIHRoaXMgaGFyZHdhcmUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHQ0UsIHRoZXNlIGNvZGUgcGF0aHMgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggYW5kIGZ1enouJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAzIDE2OjIyPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgNTE5OTMyZjE1MGRjNjMxNTU1ZWJmMDRiMzRkZmZkZTE5YTNkNGMwNVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgSnVsIDMgMTY6MjI6MTIgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuaFxuaW5kZXggOGJlNDM1NTM1YTRlOGIuLjZjZTJmN2IzZmE1MDEyIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5oXG5AQCAtNzEyLDcgJiM0Mzs3MTIsNiBAQCBzdHJ1Y3QgYXRoMTJrIHtcbiBcdCAqIGF2b2lkIHJlcG9ydGluZyBnYXJiYWdlIGRhdGEuXG4gXHQgKi9cbiBcdGJvb2wgY2hfaW5mb19jYW5fcmVwb3J0X3N1cnZleTtcbi1cdHN0cnVjdCBzdXJ2ZXlfaW5mbyBzdXJ2ZXlbQVRIMTJLX05VTV9DSEFOU107XG4gXHRzdHJ1Y3QgY29tcGxldGlvbiBic3Nfc3VydmV5X2RvbmU7XG4gXG4gXHRzdHJ1Y3Qgd29ya19zdHJ1Y3QgcmVnZF91cGRhdGVfd29yaztcbkBAIC03NzQsNiAmIzQzOzc3MywxMSBAQCBzdHJ1Y3QgYXRoMTJrX2h3IHtcbiBcdCAqL1xuIFx0c3RydWN0IG11dGV4IGh3X211dGV4O1xuIFx0ZW51bSBhdGgxMmtfaHdfc3RhdGUgc3RhdGU7XG4mIzQzO1xuJiM0MztcdC8qIHByb3RlY3RzIHN1cnZleVtdIHNoYXJlZCBhY3Jvc3MgcmFkaW9zIG9mIHRoaXMgaHcuICovXG4mIzQzO1x0c3BpbmxvY2tfdCBzdXJ2ZXlfbG9jaztcbiYjNDM7XHRzdHJ1Y3Qgc3VydmV5X2luZm8gc3VydmV5W0FUSDEyS19OVU1fQ0hBTlNdO1xuJiM0MztcbiBcdGJvb2wgcmVnZF91cGRhdGVkO1xuIFx0Ym9vbCB1c2VfNmdoel9yZWdkO1xuIFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jXG5pbmRleCAyY2ZmOTQ4NWM5NWFmYi4uZGFmOWJjODcyMmRmYmEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jXG5AQCAtMTMzNDgsNTIgJiM0MzsxMzM0OCw1NCBAQCBhdGgxMmtfbWFjX3VwZGF0ZV9ic3NfY2hhbl9zdXJ2ZXkoc3RydWN0IGF0aDEyayAqYXIsXG4gaW50IGF0aDEya19tYWNfb3BfZ2V0X3N1cnZleShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywgaW50IGlkeCxcbiBcdFx0XHQgICAgIHN0cnVjdCBzdXJ2ZXlfaW5mbyAqc3VydmV5KVxuIHtcbiYjNDM7XHRzdHJ1Y3QgYXRoMTJrX2h3ICphaCA9IGh3LVx1MDAzZXByaXY7XG4gXHRzdHJ1Y3QgYXRoMTJrICphcjtcbiBcdHN0cnVjdCBpZWVlODAyMTFfc3VwcG9ydGVkX2JhbmQgKnNiYW5kO1xuLVx0c3RydWN0IHN1cnZleV9pbmZvICphcl9zdXJ2ZXk7XG4mIzQzO1x0c3RydWN0IHN1cnZleV9pbmZvICphaF9zdXJ2ZXk7XG4mIzQzO1x0aW50IHNiYW5kX2lkeCA9IGlkeDtcbiBcbiBcdGxvY2tkZXBfYXNzZXJ0X3dpcGh5KGh3LVx1MDAzZXdpcGh5KTtcbiBcbi1cdGlmIChpZHggXHUwMDNlPSBBVEgxMktfTlVNX0NIQU5TKVxuJiM0MztcdGlmIChzYmFuZF9pZHggXHUwMDNlPSBBVEgxMktfTlVNX0NIQU5TKVxuIFx0XHRyZXR1cm4gLUVOT0VOVDtcbiBcbiBcdHNiYW5kID0gaHctXHUwMDNld2lwaHktXHUwMDNlYmFuZHNbTkw4MDIxMV9CQU5EXzJHSFpdO1xuLVx0aWYgKHNiYW5kIFx1MDAyNlx1MDAyNiBpZHggXHUwMDNlPSBzYmFuZC1cdTAwM2VuX2NoYW5uZWxzKSB7XG4tXHRcdGlkeCAtPSBzYmFuZC1cdTAwM2VuX2NoYW5uZWxzO1xuJiM0MztcdGlmIChzYmFuZCBcdTAwMjZcdTAwMjYgc2JhbmRfaWR4IFx1MDAzZT0gc2JhbmQtXHUwMDNlbl9jaGFubmVscykge1xuJiM0MztcdFx0c2JhbmRfaWR4IC09IHNiYW5kLVx1MDAzZW5fY2hhbm5lbHM7XG4gXHRcdHNiYW5kID0gTlVMTDtcbiBcdH1cbiBcbiBcdGlmICghc2JhbmQpXG4gXHRcdHNiYW5kID0gaHctXHUwMDNld2lwaHktXHUwMDNlYmFuZHNbTkw4MDIxMV9CQU5EXzVHSFpdO1xuLVx0aWYgKHNiYW5kIFx1MDAyNlx1MDAyNiBpZHggXHUwMDNlPSBzYmFuZC1cdTAwM2VuX2NoYW5uZWxzKSB7XG4tXHRcdGlkeCAtPSBzYmFuZC1cdTAwM2VuX2NoYW5uZWxzO1xuJiM0MztcdGlmIChzYmFuZCBcdTAwMjZcdTAwMjYgc2JhbmRfaWR4IFx1MDAzZT0gc2JhbmQtXHUwMDNlbl9jaGFubmVscykge1xuJiM0MztcdFx0c2JhbmRfaWR4IC09IHNiYW5kLVx1MDAzZW5fY2hhbm5lbHM7XG4gXHRcdHNiYW5kID0gTlVMTDtcbiBcdH1cbiBcbiBcdGlmICghc2JhbmQpXG4gXHRcdHNiYW5kID0gaHctXHUwMDNld2lwaHktXHUwMDNlYmFuZHNbTkw4MDIxMV9CQU5EXzZHSFpdO1xuIFxuLVx0aWYgKCFzYmFuZCB8fCBpZHggXHUwMDNlPSBzYmFuZC1cdTAwM2VuX2NoYW5uZWxzKVxuJiM0MztcdGlmICghc2JhbmQgfHwgc2JhbmRfaWR4IFx1MDAzZT0gc2JhbmQtXHUwMDNlbl9jaGFubmVscylcbiBcdFx0cmV0dXJuIC1FTk9FTlQ7XG4gXG4tXHRhciA9IGF0aDEya19tYWNfZ2V0X2FyX2J5X2NoYW4oaHcsIFx1MDAyNnNiYW5kLVx1MDAzZWNoYW5uZWxzW2lkeF0pO1xuJiM0MztcdGFyID0gYXRoMTJrX21hY19nZXRfYXJfYnlfY2hhbihodywgXHUwMDI2c2JhbmQtXHUwMDNlY2hhbm5lbHNbc2JhbmRfaWR4XSk7XG4gXHRpZiAoIWFyKSB7XG4tXHRcdGlmIChzYmFuZC1cdTAwM2VjaGFubmVsc1tpZHhdLmZsYWdzIFx1MDAyNiBJRUVFODAyMTFfQ0hBTl9ESVNBQkxFRCkge1xuJiM0MztcdFx0aWYgKHNiYW5kLVx1MDAzZWNoYW5uZWxzW3NiYW5kX2lkeF0uZmxhZ3MgXHUwMDI2IElFRUU4MDIxMV9DSEFOX0RJU0FCTEVEKSB7XG4gXHRcdFx0bWVtc2V0KHN1cnZleSwgMCwgc2l6ZW9mKCpzdXJ2ZXkpKTtcbiBcdFx0XHRyZXR1cm4gMDtcbiBcdFx0fVxuIFx0XHRyZXR1cm4gLUVOT0VOVDtcbiBcdH1cbiBcbi1cdGFyX3N1cnZleSA9IFx1MDAyNmFyLVx1MDAzZXN1cnZleVtpZHhdO1xuJiM0MztcdGFoX3N1cnZleSA9IFx1MDAyNmFoLVx1MDAzZXN1cnZleVtpZHhdO1xuIFxuLVx0YXRoMTJrX21hY191cGRhdGVfYnNzX2NoYW5fc3VydmV5KGFyLCBcdTAwMjZzYmFuZC1cdTAwM2VjaGFubmVsc1tpZHhdKTtcbiYjNDM7XHRhdGgxMmtfbWFjX3VwZGF0ZV9ic3NfY2hhbl9zdXJ2ZXkoYXIsIFx1MDAyNnNiYW5kLVx1MDAzZWNoYW5uZWxzW3NiYW5kX2lkeF0pO1xuIFxuLVx0c3Bpbl9sb2NrX2JoKFx1MDAyNmFyLVx1MDAzZWRhdGFfbG9jayk7XG4tXHRtZW1jcHkoc3VydmV5LCBhcl9zdXJ2ZXksIHNpemVvZigqc3VydmV5KSk7XG4tXHRzcGluX3VubG9ja19iaChcdTAwMjZhci1cdTAwM2VkYXRhX2xvY2spO1xuJiM0MztcdHNjb3BlZF9ndWFyZChzcGlubG9ja19iaCwgXHUwMDI2YWgtXHUwMDNlc3VydmV5X2xvY2spIHtcbiYjNDM7XHRcdG1lbWNweShzdXJ2ZXksIGFoX3N1cnZleSwgc2l6ZW9mKCpzdXJ2ZXkpKTtcbiYjNDM7XHR9XG4gXG4tXHRzdXJ2ZXktXHUwMDNlY2hhbm5lbCA9IFx1MDAyNnNiYW5kLVx1MDAzZWNoYW5uZWxzW2lkeF07XG4mIzQzO1x0c3VydmV5LVx1MDAzZWNoYW5uZWwgPSBcdTAwMjZzYmFuZC1cdTAwM2VjaGFubmVsc1tzYmFuZF9pZHhdO1xuIFxuIFx0aWYgKGFyLVx1MDAzZXJ4X2NoYW5uZWwgPT0gc3VydmV5LVx1MDAzZWNoYW5uZWwpXG4gXHRcdHN1cnZleS1cdTAwM2VmaWxsZWQgfD0gU1VSVkVZX0lORk9fSU5fVVNFO1xuQEAgLTE1MDU1LDYgJiM0MzsxNTA1Nyw3IEBAIHN0YXRpYyBzdHJ1Y3QgYXRoMTJrX2h3ICphdGgxMmtfbWFjX2h3X2FsbG9jYXRlKHN0cnVjdCBhdGgxMmtfaHdfZ3JvdXAgKmFnLFxuIFxuIFx0bXV0ZXhfaW5pdChcdTAwMjZhaC1cdTAwM2Vod19tdXRleCk7XG4gXG4mIzQzO1x0c3Bpbl9sb2NrX2luaXQoXHUwMDI2YWgtXHUwMDNlc3VydmV5X2xvY2spO1xuIFx0c3Bpbl9sb2NrX2luaXQoXHUwMDI2YWgtXHUwMDNlZHBfaHcucGVlcl9sb2NrKTtcbiBcdElOSVRfTElTVF9IRUFEKFx1MDAyNmFoLVx1MDAzZWRwX2h3LmRwX3BlZXJzX2xpc3QpO1xuIFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5jXG5pbmRleCBiNWU5MDRhNTVhZWFiYi4uM2YzNzMwYTZjMmFjMjcgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5jXG5AQCAtNjYxNywxNiAmIzQzOzY2MTcsMTIgQEAgc3RhdGljIGludCBhdGgxMmtfcHVsbF9yb2FtX2V2KHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIsIHN0cnVjdCBza19idWZmICpza2IsXG4gXHRyZXR1cm4gMDtcbiB9XG4gXG4tc3RhdGljIGludCBmcmVxX3RvX2lkeChzdHJ1Y3QgYXRoMTJrICphciwgaW50IGZyZXEpXG4mIzQzO3N0YXRpYyBpbnQgZnJlcV90b19pZHgoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsIGludCBmcmVxKVxuIHtcbiBcdHN0cnVjdCBpZWVlODAyMTFfc3VwcG9ydGVkX2JhbmQgKnNiYW5kO1xuLVx0c3RydWN0IGllZWU4MDIxMV9odyAqaHcgPSBhdGgxMmtfYXJfdG9faHcoYXIpO1xuIFx0aW50IGJhbmQsIGNoLCBpZHggPSAwO1xuIFxuIFx0Zm9yIChiYW5kID0gTkw4MDIxMV9CQU5EXzJHSFo7IGJhbmQgXHUwMDNjIE5VTV9OTDgwMjExX0JBTkRTOyBiYW5kJiM0MzsmIzQzOykge1xuLVx0XHRpZiAoIWFyLVx1MDAzZW1hYy5zYmFuZHNbYmFuZF0uY2hhbm5lbHMpXG4tXHRcdFx0Y29udGludWU7XG4tXG4gXHRcdHNiYW5kID0gaHctXHUwMDNld2lwaHktXHUwMDNlYmFuZHNbYmFuZF07XG4gXHRcdGlmICghc2JhbmQpXG4gXHRcdFx0Y29udGludWU7XG5AQCAtNzUwNyw2ICYjNDM7NzUwMyw3IEBAIHN0YXRpYyB2b2lkIGF0aDEya19jaGFuX2luZm9fZXZlbnQoc3RydWN0IGF0aDEya19iYXNlICphYiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbiB7XG4gXHRzdHJ1Y3Qgd21pX2NoYW5faW5mb19ldmVudCBjaF9pbmZvX2V2ID0ge307XG4gXHRzdHJ1Y3QgYXRoMTJrICphcjtcbiYjNDM7XHRzdHJ1Y3QgYXRoMTJrX2h3ICphaDtcbiBcdHN0cnVjdCBzdXJ2ZXlfaW5mbyAqc3VydmV5O1xuIFx0aW50IGlkeDtcbiBcdC8qIEhXIGNoYW5uZWwgY291bnRlcnMgZnJlcXVlbmN5IHZhbHVlIGluIGhlcnR6ICovXG5AQCAtNzUzOCw2ICYjNDM7NzUzNSw3IEBAIHN0YXRpYyB2b2lkIGF0aDEya19jaGFuX2luZm9fZXZlbnQoc3RydWN0IGF0aDEya19iYXNlICphYiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbiBcdFx0cmV0dXJuO1xuIFx0fVxuIFx0c3Bpbl9sb2NrX2JoKFx1MDAyNmFyLVx1MDAzZWRhdGFfbG9jayk7XG4mIzQzO1x0YWggPSBhdGgxMmtfYXJfdG9fYWgoYXIpO1xuIFxuIFx0c3dpdGNoIChhci1cdTAwM2VzY2FuLnN0YXRlKSB7XG4gXHRjYXNlIEFUSDEyS19TQ0FOX0lETEU6XG5AQCAtNzU0OSw4ICYjNDM7NzU0Nyw4IEBAIHN0YXRpYyB2b2lkIGF0aDEya19jaGFuX2luZm9fZXZlbnQoc3RydWN0IGF0aDEya19iYXNlICphYiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbiBcdFx0YnJlYWs7XG4gXHR9XG4gXG4tXHRpZHggPSBmcmVxX3RvX2lkeChhciwgbGUzMl90b19jcHUoY2hfaW5mb19ldi5mcmVxKSk7XG4tXHRpZiAoaWR4IFx1MDAzZT0gQVJSQVlfU0laRShhci1cdTAwM2VzdXJ2ZXkpKSB7XG4mIzQzO1x0aWR4ID0gZnJlcV90b19pZHgoYXRoMTJrX2FyX3RvX2h3KGFyKSwgbGUzMl90b19jcHUoY2hfaW5mb19ldi5mcmVxKSk7XG4mIzQzO1x0aWYgKGlkeCBcdTAwM2U9IEFSUkFZX1NJWkUoYWgtXHUwMDNlc3VydmV5KSkge1xuIFx0XHRhdGgxMmtfd2FybihhYiwgXCYjMzQ7Y2hhbiBpbmZvOiBpbnZhbGlkIGZyZXF1ZW5jeSAlZCAoaWR4ICVkIG91dCBvZiBib3VuZHMpXFxuXCYjMzQ7LFxuIFx0XHRcdCAgICBjaF9pbmZvX2V2LmZyZXEsIGlkeCk7XG4gXHRcdGdvdG8gZXhpdDtcbkBAIC03NTYzLDE0ICYjNDM7NzU2MSwxNiBAQCBzdGF0aWMgdm9pZCBhdGgxMmtfY2hhbl9pbmZvX2V2ZW50KHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIsIHN0cnVjdCBza19idWZmICpza2IpXG4gXHRcdGNjX2ZyZXFfaHogPSAobGUzMl90b19jcHUoY2hfaW5mb19ldi5tYWNfY2xrX21oeikgKiAxMDAwKTtcbiBcbiBcdGlmIChjaF9pbmZvX2V2LmNtZF9mbGFncyA9PSBXTUlfQ0hBTl9JTkZPX1NUQVJUX1JFU1ApIHtcbi1cdFx0c3VydmV5ID0gXHUwMDI2YXItXHUwMDNlc3VydmV5W2lkeF07XG4tXHRcdG1lbXNldChzdXJ2ZXksIDAsIHNpemVvZigqc3VydmV5KSk7XG4tXHRcdHN1cnZleS1cdTAwM2Vub2lzZSA9IGxlMzJfdG9fY3B1KGNoX2luZm9fZXYubm9pc2VfZmxvb3IpO1xuLVx0XHRzdXJ2ZXktXHUwMDNlZmlsbGVkID0gU1VSVkVZX0lORk9fTk9JU0VfREJNIHwgU1VSVkVZX0lORk9fVElNRSB8XG4mIzQzO1x0XHRzY29wZWRfZ3VhcmQoc3BpbmxvY2tfYmgsIFx1MDAyNmFoLVx1MDAzZXN1cnZleV9sb2NrKSB7XG4mIzQzO1x0XHRcdHN1cnZleSA9IFx1MDAyNmFoLVx1MDAzZXN1cnZleVtpZHhdO1xuJiM0MztcdFx0XHRtZW1zZXQoc3VydmV5LCAwLCBzaXplb2YoKnN1cnZleSkpO1xuJiM0MztcdFx0XHRzdXJ2ZXktXHUwMDNlbm9pc2UgPSBsZTMyX3RvX2NwdShjaF9pbmZvX2V2Lm5vaXNlX2Zsb29yKTtcbiYjNDM7XHRcdFx0c3VydmV5LVx1MDAzZWZpbGxlZCA9IFNVUlZFWV9JTkZPX05PSVNFX0RCTSB8IFNVUlZFWV9JTkZPX1RJTUUgfFxuIFx0XHRcdFx0IFNVUlZFWV9JTkZPX1RJTUVfQlVTWTtcbi1cdFx0c3VydmV5LVx1MDAzZXRpbWUgPSBkaXZfdTY0KGxlMzJfdG9fY3B1KGNoX2luZm9fZXYuY3ljbGVfY291bnQpLCBjY19mcmVxX2h6KTtcbi1cdFx0c3VydmV5LVx1MDAzZXRpbWVfYnVzeSA9IGRpdl91NjQobGUzMl90b19jcHUoY2hfaW5mb19ldi5yeF9jbGVhcl9jb3VudCksXG4tXHRcdFx0XHRcdCAgICBjY19mcmVxX2h6KTtcbiYjNDM7XHRcdFx0c3VydmV5LVx1MDAzZXRpbWUgPSBkaXZfdTY0KGxlMzJfdG9fY3B1KGNoX2luZm9fZXYuY3ljbGVfY291bnQpLCBjY19mcmVxX2h6KTtcbiYjNDM7XHRcdFx0c3VydmV5LVx1MDAzZXRpbWVfYnVzeSA9IGRpdl91NjQobGUzMl90b19jcHUoY2hfaW5mb19ldi5yeF9jbGVhcl9jb3VudCksXG4mIzQzO1x0XHRcdFx0XHRcdCAgICBjY19mcmVxX2h6KTtcbiYjNDM7XHRcdH1cbiBcdH1cbiBleGl0OlxuIFx0c3Bpbl91bmxvY2tfYmgoXHUwMDI2YXItXHUwMDNlZGF0YV9sb2NrKTtcbkBAIC03NTgzLDYgJiM0Mzs3NTgzLDcgQEAgYXRoMTJrX3BkZXZfYnNzX2NoYW5faW5mb19ldmVudChzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuIFx0c3RydWN0IHdtaV9wZGV2X2Jzc19jaGFuX2luZm9fZXZlbnQgYnNzX2NoX2luZm9fZXYgPSB7fTtcbiBcdHN0cnVjdCBzdXJ2ZXlfaW5mbyAqc3VydmV5O1xuIFx0c3RydWN0IGF0aDEyayAqYXI7XG4mIzQzO1x0c3RydWN0IGF0aDEya19odyAqYWg7XG4gXHR1MzIgY2NfZnJlcV9oeiA9IGFiLVx1MDAzZWNjX2ZyZXFfaHo7XG4gXHR1NjQgYnVzeSwgdG90YWwsIHR4LCByeCwgcnhfYnNzO1xuIFx0aW50IGlkeDtcbkBAIC03NjIzLDI4ICYjNDM7NzYyNCwzMSBAQCBhdGgxMmtfcGRldl9ic3NfY2hhbl9pbmZvX2V2ZW50KHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIsIHN0cnVjdCBza19idWZmICpza2IpXG4gXHRcdHJldHVybjtcbiBcdH1cbiBcbi1cdHNwaW5fbG9ja19iaChcdTAwMjZhci1cdTAwM2VkYXRhX2xvY2spO1xuLVx0aWR4ID0gZnJlcV90b19pZHgoYXIsIGxlMzJfdG9fY3B1KGJzc19jaF9pbmZvX2V2LmZyZXEpKTtcbi1cdGlmIChpZHggXHUwMDNlPSBBUlJBWV9TSVpFKGFyLVx1MDAzZXN1cnZleSkpIHtcbiYjNDM7XHRhaCA9IGF0aDEya19hcl90b19haChhcik7XG4mIzQzO1xuJiM0MztcdGlkeCA9IGZyZXFfdG9faWR4KGF0aDEya19hcl90b19odyhhciksIGxlMzJfdG9fY3B1KGJzc19jaF9pbmZvX2V2LmZyZXEpKTtcbiYjNDM7XHRpZiAoaWR4IFx1MDAzZT0gQVJSQVlfU0laRShhaC1cdTAwM2VzdXJ2ZXkpKSB7XG4gXHRcdGF0aDEya193YXJuKGFiLCBcJiMzNDtic3MgY2hhbiBpbmZvOiBpbnZhbGlkIGZyZXF1ZW5jeSAlZCAoaWR4ICVkIG91dCBvZiBib3VuZHMpXFxuXCYjMzQ7LFxuIFx0XHRcdCAgICBic3NfY2hfaW5mb19ldi5mcmVxLCBpZHgpO1xuIFx0XHRnb3RvIGV4aXQ7XG4gXHR9XG4gXG4tXHRzdXJ2ZXkgPSBcdTAwMjZhci1cdTAwM2VzdXJ2ZXlbaWR4XTtcbiYjNDM7XHRzY29wZWRfZ3VhcmQoc3BpbmxvY2tfYmgsIFx1MDAyNmFoLVx1MDAzZXN1cnZleV9sb2NrKSB7XG4mIzQzO1x0XHRzdXJ2ZXkgPSBcdTAwMjZhaC1cdTAwM2VzdXJ2ZXlbaWR4XTtcbiYjNDM7XG4mIzQzO1x0XHRzdXJ2ZXktXHUwMDNlbm9pc2UgPSBsZTMyX3RvX2NwdShic3NfY2hfaW5mb19ldi5ub2lzZV9mbG9vcik7XG4mIzQzO1x0XHRzdXJ2ZXktXHUwMDNldGltZSA9IGRpdl91NjQodG90YWwsIGNjX2ZyZXFfaHopO1xuJiM0MztcdFx0c3VydmV5LVx1MDAzZXRpbWVfYnVzeSA9IGRpdl91NjQoYnVzeSwgY2NfZnJlcV9oeik7XG4mIzQzO1x0XHRzdXJ2ZXktXHUwMDNldGltZV9yeCA9IGRpdl91NjQocnhfYnNzLCBjY19mcmVxX2h6KTtcbiYjNDM7XHRcdHN1cnZleS1cdTAwM2V0aW1lX3R4ID0gZGl2X3U2NCh0eCwgY2NfZnJlcV9oeik7XG4mIzQzO1x0XHRzdXJ2ZXktXHUwMDNlZmlsbGVkIHw9IChTVVJWRVlfSU5GT19OT0lTRV9EQk0gfFxuJiM0MztcdFx0XHRcdCAgIFNVUlZFWV9JTkZPX1RJTUUgfFxuJiM0MztcdFx0XHRcdCAgIFNVUlZFWV9JTkZPX1RJTUVfQlVTWSB8XG4mIzQzO1x0XHRcdFx0ICAgU1VSVkVZX0lORk9fVElNRV9SWCB8XG4mIzQzO1x0XHRcdFx0ICAgU1VSVkVZX0lORk9fVElNRV9UWCk7XG4mIzQzO1x0fVxuIFxuLVx0c3VydmV5LVx1MDAzZW5vaXNlICAgICA9IGxlMzJfdG9fY3B1KGJzc19jaF9pbmZvX2V2Lm5vaXNlX2Zsb29yKTtcbi1cdHN1cnZleS1cdTAwM2V0aW1lICAgICAgPSBkaXZfdTY0KHRvdGFsLCBjY19mcmVxX2h6KTtcbi1cdHN1cnZleS1cdTAwM2V0aW1lX2J1c3kgPSBkaXZfdTY0KGJ1c3ksIGNjX2ZyZXFfaHopO1xuLVx0c3VydmV5LVx1MDAzZXRpbWVfcnggICA9IGRpdl91NjQocnhfYnNzLCBjY19mcmVxX2h6KTtcbi1cdHN1cnZleS1cdTAwM2V0aW1lX3R4ICAgPSBkaXZfdTY0KHR4LCBjY19mcmVxX2h6KTtcbi1cdHN1cnZleS1cdTAwM2VmaWxsZWQgICB8PSAoU1VSVkVZX0lORk9fTk9JU0VfREJNIHxcbi1cdFx0XHQgICAgIFNVUlZFWV9JTkZPX1RJTUUgfFxuLVx0XHRcdCAgICAgU1VSVkVZX0lORk9fVElNRV9CVVNZIHxcbi1cdFx0XHQgICAgIFNVUlZFWV9JTkZPX1RJTUVfUlggfFxuLVx0XHRcdCAgICAgU1VSVkVZX0lORk9fVElNRV9UWCk7XG4gZXhpdDpcbi1cdHNwaW5fdW5sb2NrX2JoKFx1MDAyNmFyLVx1MDAzZWRhdGFfbG9jayk7XG4gXHRjb21wbGV0ZShcdTAwMjZhci1cdTAwM2Vic3Nfc3VydmV5X2RvbmUpO1xuIFxuIFx0cmN1X3JlYWRfdW5sb2NrKCk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDMgMTY6MjI8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+NW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGF0aDEyayBkcml2ZXIsIHdoaWNoIGlzIGEgaGFyZHdhcmUtc3BlY2lmaWMgZHJpdmVyIGZvciBRdWFsY29tbSBXaS1GaSA3IFBDSWUvQUhCIGRldmljZXMuIFRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIChtYWM4MDIxMSBjYWxsYmFja3MgYW5kIFdNSSBldmVudCBoYW5kbGVycykgcmVxdWlyZSBhIHN1Y2Nlc3NmdWwgZGV2aWNlIHByb2JlIGFuZCBmaXJtd2FyZSBib290IHNlcXVlbmNlIChNSEksIFFNSSwgV01JKSB0byBiZSByZWFjaGFibGUuIFNpbmNlIHRoZXJlIGlzIG5vIHNvZnR3YXJlIGVtdWxhdGlvbiBmb3IgdGhpcyBoYXJkd2FyZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRSwgdGhlc2UgY29kZSBwYXRocyBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBhbmQgZnV6ei4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDUxOTkzMmYxNTBkYzYzMTU1NWViZjA0YjM0ZGZmZGUxOWEzZDRjMDUKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgRnJpIEp1bCAzIDE2OjIyOjEyIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuaAppbmRleCA4YmU0MzU1MzVhNGU4Yi4uNmNlMmY3YjNmYTUwMTIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5oCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5oCkBAIC03MTIsNyAmIzQzOzcxMiw2IEBAIHN0cnVjdCBhdGgxMmsgewogCSAqIGF2b2lkIHJlcG9ydGluZyBnYXJiYWdlIGRhdGEuCiAJICovCiAJYm9vbCBjaF9pbmZvX2Nhbl9yZXBvcnRfc3VydmV5OwotCXN0cnVjdCBzdXJ2ZXlfaW5mbyBzdXJ2ZXlbQVRIMTJLX05VTV9DSEFOU107CiAJc3RydWN0IGNvbXBsZXRpb24gYnNzX3N1cnZleV9kb25lOwogCiAJc3RydWN0IHdvcmtfc3RydWN0IHJlZ2RfdXBkYXRlX3dvcms7CkBAIC03NzQsNiAmIzQzOzc3MywxMSBAQCBzdHJ1Y3QgYXRoMTJrX2h3IHsKIAkgKi8KIAlzdHJ1Y3QgbXV0ZXggaHdfbXV0ZXg7CiAJZW51bSBhdGgxMmtfaHdfc3RhdGUgc3RhdGU7CiYjNDM7CiYjNDM7CS8qIHByb3RlY3RzIHN1cnZleVtdIHNoYXJlZCBhY3Jvc3MgcmFkaW9zIG9mIHRoaXMgaHcuICovCiYjNDM7CXNwaW5sb2NrX3Qgc3VydmV5X2xvY2s7CiYjNDM7CXN0cnVjdCBzdXJ2ZXlfaW5mbyBzdXJ2ZXlbQVRIMTJLX05VTV9DSEFOU107CiYjNDM7CiAJYm9vbCByZWdkX3VwZGF0ZWQ7CiAJYm9vbCB1c2VfNmdoel9yZWdkOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9tYWMuYwppbmRleCAyY2ZmOTQ4NWM5NWFmYi4uZGFmOWJjODcyMmRmYmEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9tYWMuYwpAQCAtMTMzNDgsNTIgJiM0MzsxMzM0OCw1NCBAQCBhdGgxMmtfbWFjX3VwZGF0ZV9ic3NfY2hhbl9zdXJ2ZXkoc3RydWN0IGF0aDEyayAqYXIsCiBpbnQgYXRoMTJrX21hY19vcF9nZXRfc3VydmV5KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LCBpbnQgaWR4LAogCQkJICAgICBzdHJ1Y3Qgc3VydmV5X2luZm8gKnN1cnZleSkKIHsKJiM0MzsJc3RydWN0IGF0aDEya19odyAqYWggPSBody0mZ3Q7cHJpdjsKIAlzdHJ1Y3QgYXRoMTJrICphcjsKIAlzdHJ1Y3QgaWVlZTgwMjExX3N1cHBvcnRlZF9iYW5kICpzYmFuZDsKLQlzdHJ1Y3Qgc3VydmV5X2luZm8gKmFyX3N1cnZleTsKJiM0MzsJc3RydWN0IHN1cnZleV9pbmZvICphaF9zdXJ2ZXk7CiYjNDM7CWludCBzYmFuZF9pZHggPSBpZHg7CiAKIAlsb2NrZGVwX2Fzc2VydF93aXBoeShody0mZ3Q7d2lwaHkpOwogCi0JaWYgKGlkeCAmZ3Q7PSBBVEgxMktfTlVNX0NIQU5TKQomIzQzOwlpZiAoc2JhbmRfaWR4ICZndDs9IEFUSDEyS19OVU1fQ0hBTlMpCiAJCXJldHVybiAtRU5PRU5UOwogCiAJc2JhbmQgPSBody0mZ3Q7d2lwaHktJmd0O2JhbmRzW05MODAyMTFfQkFORF8yR0haXTsKLQlpZiAoc2JhbmQgJmFtcDsmYW1wOyBpZHggJmd0Oz0gc2JhbmQtJmd0O25fY2hhbm5lbHMpIHsKLQkJaWR4IC09IHNiYW5kLSZndDtuX2NoYW5uZWxzOwomIzQzOwlpZiAoc2JhbmQgJmFtcDsmYW1wOyBzYmFuZF9pZHggJmd0Oz0gc2JhbmQtJmd0O25fY2hhbm5lbHMpIHsKJiM0MzsJCXNiYW5kX2lkeCAtPSBzYmFuZC0mZ3Q7bl9jaGFubmVsczsKIAkJc2JhbmQgPSBOVUxMOwogCX0KIAogCWlmICghc2JhbmQpCiAJCXNiYW5kID0gaHctJmd0O3dpcGh5LSZndDtiYW5kc1tOTDgwMjExX0JBTkRfNUdIWl07Ci0JaWYgKHNiYW5kICZhbXA7JmFtcDsgaWR4ICZndDs9IHNiYW5kLSZndDtuX2NoYW5uZWxzKSB7Ci0JCWlkeCAtPSBzYmFuZC0mZ3Q7bl9jaGFubmVsczsKJiM0MzsJaWYgKHNiYW5kICZhbXA7JmFtcDsgc2JhbmRfaWR4ICZndDs9IHNiYW5kLSZndDtuX2NoYW5uZWxzKSB7CiYjNDM7CQlzYmFuZF9pZHggLT0gc2JhbmQtJmd0O25fY2hhbm5lbHM7CiAJCXNiYW5kID0gTlVMTDsKIAl9CiAKIAlpZiAoIXNiYW5kKQogCQlzYmFuZCA9IGh3LSZndDt3aXBoeS0mZ3Q7YmFuZHNbTkw4MDIxMV9CQU5EXzZHSFpdOwogCi0JaWYgKCFzYmFuZCB8fCBpZHggJmd0Oz0gc2JhbmQtJmd0O25fY2hhbm5lbHMpCiYjNDM7CWlmICghc2JhbmQgfHwgc2JhbmRfaWR4ICZndDs9IHNiYW5kLSZndDtuX2NoYW5uZWxzKQogCQlyZXR1cm4gLUVOT0VOVDsKIAotCWFyID0gYXRoMTJrX21hY19nZXRfYXJfYnlfY2hhbihodywgJmFtcDtzYmFuZC0mZ3Q7Y2hhbm5lbHNbaWR4XSk7CiYjNDM7CWFyID0gYXRoMTJrX21hY19nZXRfYXJfYnlfY2hhbihodywgJmFtcDtzYmFuZC0mZ3Q7Y2hhbm5lbHNbc2JhbmRfaWR4XSk7CiAJaWYgKCFhcikgewotCQlpZiAoc2JhbmQtJmd0O2NoYW5uZWxzW2lkeF0uZmxhZ3MgJmFtcDsgSUVFRTgwMjExX0NIQU5fRElTQUJMRUQpIHsKJiM0MzsJCWlmIChzYmFuZC0mZ3Q7Y2hhbm5lbHNbc2JhbmRfaWR4XS5mbGFncyAmYW1wOyBJRUVFODAyMTFfQ0hBTl9ESVNBQkxFRCkgewogCQkJbWVtc2V0KHN1cnZleSwgMCwgc2l6ZW9mKCpzdXJ2ZXkpKTsKIAkJCXJldHVybiAwOwogCQl9CiAJCXJldHVybiAtRU5PRU5UOwogCX0KIAotCWFyX3N1cnZleSA9ICZhbXA7YXItJmd0O3N1cnZleVtpZHhdOwomIzQzOwlhaF9zdXJ2ZXkgPSAmYW1wO2FoLSZndDtzdXJ2ZXlbaWR4XTsKIAotCWF0aDEya19tYWNfdXBkYXRlX2Jzc19jaGFuX3N1cnZleShhciwgJmFtcDtzYmFuZC0mZ3Q7Y2hhbm5lbHNbaWR4XSk7CiYjNDM7CWF0aDEya19tYWNfdXBkYXRlX2Jzc19jaGFuX3N1cnZleShhciwgJmFtcDtzYmFuZC0mZ3Q7Y2hhbm5lbHNbc2JhbmRfaWR4XSk7CiAKLQlzcGluX2xvY2tfYmgoJmFtcDthci0mZ3Q7ZGF0YV9sb2NrKTsKLQltZW1jcHkoc3VydmV5LCBhcl9zdXJ2ZXksIHNpemVvZigqc3VydmV5KSk7Ci0Jc3Bpbl91bmxvY2tfYmgoJmFtcDthci0mZ3Q7ZGF0YV9sb2NrKTsKJiM0MzsJc2NvcGVkX2d1YXJkKHNwaW5sb2NrX2JoLCAmYW1wO2FoLSZndDtzdXJ2ZXlfbG9jaykgewomIzQzOwkJbWVtY3B5KHN1cnZleSwgYWhfc3VydmV5LCBzaXplb2YoKnN1cnZleSkpOwomIzQzOwl9CiAKLQlzdXJ2ZXktJmd0O2NoYW5uZWwgPSAmYW1wO3NiYW5kLSZndDtjaGFubmVsc1tpZHhdOwomIzQzOwlzdXJ2ZXktJmd0O2NoYW5uZWwgPSAmYW1wO3NiYW5kLSZndDtjaGFubmVsc1tzYmFuZF9pZHhdOwogCiAJaWYgKGFyLSZndDtyeF9jaGFubmVsID09IHN1cnZleS0mZ3Q7Y2hhbm5lbCkKIAkJc3VydmV5LSZndDtmaWxsZWQgfD0gU1VSVkVZX0lORk9fSU5fVVNFOwpAQCAtMTUwNTUsNiAmIzQzOzE1MDU3LDcgQEAgc3RhdGljIHN0cnVjdCBhdGgxMmtfaHcgKmF0aDEya19tYWNfaHdfYWxsb2NhdGUoc3RydWN0IGF0aDEya19od19ncm91cCAqYWcsCiAKIAltdXRleF9pbml0KCZhbXA7YWgtJmd0O2h3X211dGV4KTsKIAomIzQzOwlzcGluX2xvY2tfaW5pdCgmYW1wO2FoLSZndDtzdXJ2ZXlfbG9jayk7CiAJc3Bpbl9sb2NrX2luaXQoJmFtcDthaC0mZ3Q7ZHBfaHcucGVlcl9sb2NrKTsKIAlJTklUX0xJU1RfSEVBRCgmYW1wO2FoLSZndDtkcF9ody5kcF9wZWVyc19saXN0KTsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmMKaW5kZXggYjVlOTA0YTU1YWVhYmIuLjNmMzczMGE2YzJhYzI3IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmMKQEAgLTY2MTcsMTYgJiM0Mzs2NjE3LDEyIEBAIHN0YXRpYyBpbnQgYXRoMTJrX3B1bGxfcm9hbV9ldihzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAogCXJldHVybiAwOwogfQogCi1zdGF0aWMgaW50IGZyZXFfdG9faWR4KHN0cnVjdCBhdGgxMmsgKmFyLCBpbnQgZnJlcSkKJiM0MztzdGF0aWMgaW50IGZyZXFfdG9faWR4KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LCBpbnQgZnJlcSkKIHsKIAlzdHJ1Y3QgaWVlZTgwMjExX3N1cHBvcnRlZF9iYW5kICpzYmFuZDsKLQlzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyA9IGF0aDEya19hcl90b19odyhhcik7CiAJaW50IGJhbmQsIGNoLCBpZHggPSAwOwogCiAJZm9yIChiYW5kID0gTkw4MDIxMV9CQU5EXzJHSFo7IGJhbmQgJmx0OyBOVU1fTkw4MDIxMV9CQU5EUzsgYmFuZCYjNDM7JiM0MzspIHsKLQkJaWYgKCFhci0mZ3Q7bWFjLnNiYW5kc1tiYW5kXS5jaGFubmVscykKLQkJCWNvbnRpbnVlOwotCiAJCXNiYW5kID0gaHctJmd0O3dpcGh5LSZndDtiYW5kc1tiYW5kXTsKIAkJaWYgKCFzYmFuZCkKIAkJCWNvbnRpbnVlOwpAQCAtNzUwNyw2ICYjNDM7NzUwMyw3IEBAIHN0YXRpYyB2b2lkIGF0aDEya19jaGFuX2luZm9fZXZlbnQoc3RydWN0IGF0aDEya19iYXNlICphYiwgc3RydWN0IHNrX2J1ZmYgKnNrYikKIHsKIAlzdHJ1Y3Qgd21pX2NoYW5faW5mb19ldmVudCBjaF9pbmZvX2V2ID0ge307CiAJc3RydWN0IGF0aDEyayAqYXI7CiYjNDM7CXN0cnVjdCBhdGgxMmtfaHcgKmFoOwogCXN0cnVjdCBzdXJ2ZXlfaW5mbyAqc3VydmV5OwogCWludCBpZHg7CiAJLyogSFcgY2hhbm5lbCBjb3VudGVycyBmcmVxdWVuY3kgdmFsdWUgaW4gaGVydHogKi8KQEAgLTc1MzgsNiAmIzQzOzc1MzUsNyBAQCBzdGF0aWMgdm9pZCBhdGgxMmtfY2hhbl9pbmZvX2V2ZW50KHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIsIHN0cnVjdCBza19idWZmICpza2IpCiAJCXJldHVybjsKIAl9CiAJc3Bpbl9sb2NrX2JoKCZhbXA7YXItJmd0O2RhdGFfbG9jayk7CiYjNDM7CWFoID0gYXRoMTJrX2FyX3RvX2FoKGFyKTsKIAogCXN3aXRjaCAoYXItJmd0O3NjYW4uc3RhdGUpIHsKIAljYXNlIEFUSDEyS19TQ0FOX0lETEU6CkBAIC03NTQ5LDggJiM0Mzs3NTQ3LDggQEAgc3RhdGljIHZvaWQgYXRoMTJrX2NoYW5faW5mb19ldmVudChzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKQogCQlicmVhazsKIAl9CiAKLQlpZHggPSBmcmVxX3RvX2lkeChhciwgbGUzMl90b19jcHUoY2hfaW5mb19ldi5mcmVxKSk7Ci0JaWYgKGlkeCAmZ3Q7PSBBUlJBWV9TSVpFKGFyLSZndDtzdXJ2ZXkpKSB7CiYjNDM7CWlkeCA9IGZyZXFfdG9faWR4KGF0aDEya19hcl90b19odyhhciksIGxlMzJfdG9fY3B1KGNoX2luZm9fZXYuZnJlcSkpOwomIzQzOwlpZiAoaWR4ICZndDs9IEFSUkFZX1NJWkUoYWgtJmd0O3N1cnZleSkpIHsKIAkJYXRoMTJrX3dhcm4oYWIsICYjMzQ7Y2hhbiBpbmZvOiBpbnZhbGlkIGZyZXF1ZW5jeSAlZCAoaWR4ICVkIG91dCBvZiBib3VuZHMpXG4mIzM0OywKIAkJCSAgICBjaF9pbmZvX2V2LmZyZXEsIGlkeCk7CiAJCWdvdG8gZXhpdDsKQEAgLTc1NjMsMTQgJiM0Mzs3NTYxLDE2IEBAIHN0YXRpYyB2b2lkIGF0aDEya19jaGFuX2luZm9fZXZlbnQoc3RydWN0IGF0aDEya19iYXNlICphYiwgc3RydWN0IHNrX2J1ZmYgKnNrYikKIAkJY2NfZnJlcV9oeiA9IChsZTMyX3RvX2NwdShjaF9pbmZvX2V2Lm1hY19jbGtfbWh6KSAqIDEwMDApOwogCiAJaWYgKGNoX2luZm9fZXYuY21kX2ZsYWdzID09IFdNSV9DSEFOX0lORk9fU1RBUlRfUkVTUCkgewotCQlzdXJ2ZXkgPSAmYW1wO2FyLSZndDtzdXJ2ZXlbaWR4XTsKLQkJbWVtc2V0KHN1cnZleSwgMCwgc2l6ZW9mKCpzdXJ2ZXkpKTsKLQkJc3VydmV5LSZndDtub2lzZSA9IGxlMzJfdG9fY3B1KGNoX2luZm9fZXYubm9pc2VfZmxvb3IpOwotCQlzdXJ2ZXktJmd0O2ZpbGxlZCA9IFNVUlZFWV9JTkZPX05PSVNFX0RCTSB8IFNVUlZFWV9JTkZPX1RJTUUgfAomIzQzOwkJc2NvcGVkX2d1YXJkKHNwaW5sb2NrX2JoLCAmYW1wO2FoLSZndDtzdXJ2ZXlfbG9jaykgewomIzQzOwkJCXN1cnZleSA9ICZhbXA7YWgtJmd0O3N1cnZleVtpZHhdOwomIzQzOwkJCW1lbXNldChzdXJ2ZXksIDAsIHNpemVvZigqc3VydmV5KSk7CiYjNDM7CQkJc3VydmV5LSZndDtub2lzZSA9IGxlMzJfdG9fY3B1KGNoX2luZm9fZXYubm9pc2VfZmxvb3IpOwomIzQzOwkJCXN1cnZleS0mZ3Q7ZmlsbGVkID0gU1VSVkVZX0lORk9fTk9JU0VfREJNIHwgU1VSVkVZX0lORk9fVElNRSB8CiAJCQkJIFNVUlZFWV9JTkZPX1RJTUVfQlVTWTsKLQkJc3VydmV5LSZndDt0aW1lID0gZGl2X3U2NChsZTMyX3RvX2NwdShjaF9pbmZvX2V2LmN5Y2xlX2NvdW50KSwgY2NfZnJlcV9oeik7Ci0JCXN1cnZleS0mZ3Q7dGltZV9idXN5ID0gZGl2X3U2NChsZTMyX3RvX2NwdShjaF9pbmZvX2V2LnJ4X2NsZWFyX2NvdW50KSwKLQkJCQkJICAgIGNjX2ZyZXFfaHopOwomIzQzOwkJCXN1cnZleS0mZ3Q7dGltZSA9IGRpdl91NjQobGUzMl90b19jcHUoY2hfaW5mb19ldi5jeWNsZV9jb3VudCksIGNjX2ZyZXFfaHopOwomIzQzOwkJCXN1cnZleS0mZ3Q7dGltZV9idXN5ID0gZGl2X3U2NChsZTMyX3RvX2NwdShjaF9pbmZvX2V2LnJ4X2NsZWFyX2NvdW50KSwKJiM0MzsJCQkJCQkgICAgY2NfZnJlcV9oeik7CiYjNDM7CQl9CiAJfQogZXhpdDoKIAlzcGluX3VubG9ja19iaCgmYW1wO2FyLSZndDtkYXRhX2xvY2spOwpAQCAtNzU4Myw2ICYjNDM7NzU4Myw3IEBAIGF0aDEya19wZGV2X2Jzc19jaGFuX2luZm9fZXZlbnQoc3RydWN0IGF0aDEya19iYXNlICphYiwgc3RydWN0IHNrX2J1ZmYgKnNrYikKIAlzdHJ1Y3Qgd21pX3BkZXZfYnNzX2NoYW5faW5mb19ldmVudCBic3NfY2hfaW5mb19ldiA9IHt9OwogCXN0cnVjdCBzdXJ2ZXlfaW5mbyAqc3VydmV5OwogCXN0cnVjdCBhdGgxMmsgKmFyOwomIzQzOwlzdHJ1Y3QgYXRoMTJrX2h3ICphaDsKIAl1MzIgY2NfZnJlcV9oeiA9IGFiLSZndDtjY19mcmVxX2h6OwogCXU2NCBidXN5LCB0b3RhbCwgdHgsIHJ4LCByeF9ic3M7CiAJaW50IGlkeDsKQEAgLTc2MjMsMjggJiM0Mzs3NjI0LDMxIEBAIGF0aDEya19wZGV2X2Jzc19jaGFuX2luZm9fZXZlbnQoc3RydWN0IGF0aDEya19iYXNlICphYiwgc3RydWN0IHNrX2J1ZmYgKnNrYikKIAkJcmV0dXJuOwogCX0KIAotCXNwaW5fbG9ja19iaCgmYW1wO2FyLSZndDtkYXRhX2xvY2spOwotCWlkeCA9IGZyZXFfdG9faWR4KGFyLCBsZTMyX3RvX2NwdShic3NfY2hfaW5mb19ldi5mcmVxKSk7Ci0JaWYgKGlkeCAmZ3Q7PSBBUlJBWV9TSVpFKGFyLSZndDtzdXJ2ZXkpKSB7CiYjNDM7CWFoID0gYXRoMTJrX2FyX3RvX2FoKGFyKTsKJiM0MzsKJiM0MzsJaWR4ID0gZnJlcV90b19pZHgoYXRoMTJrX2FyX3RvX2h3KGFyKSwgbGUzMl90b19jcHUoYnNzX2NoX2luZm9fZXYuZnJlcSkpOwomIzQzOwlpZiAoaWR4ICZndDs9IEFSUkFZX1NJWkUoYWgtJmd0O3N1cnZleSkpIHsKIAkJYXRoMTJrX3dhcm4oYWIsICYjMzQ7YnNzIGNoYW4gaW5mbzogaW52YWxpZCBmcmVxdWVuY3kgJWQgKGlkeCAlZCBvdXQgb2YgYm91bmRzKVxuJiMzNDssCiAJCQkgICAgYnNzX2NoX2luZm9fZXYuZnJlcSwgaWR4KTsKIAkJZ290byBleGl0OwogCX0KIAotCXN1cnZleSA9ICZhbXA7YXItJmd0O3N1cnZleVtpZHhdOwomIzQzOwlzY29wZWRfZ3VhcmQoc3BpbmxvY2tfYmgsICZhbXA7YWgtJmd0O3N1cnZleV9sb2NrKSB7CiYjNDM7CQlzdXJ2ZXkgPSAmYW1wO2FoLSZndDtzdXJ2ZXlbaWR4XTsKJiM0MzsKJiM0MzsJCXN1cnZleS0mZ3Q7bm9pc2UgPSBsZTMyX3RvX2NwdShic3NfY2hfaW5mb19ldi5ub2lzZV9mbG9vcik7CiYjNDM7CQlzdXJ2ZXktJmd0O3RpbWUgPSBkaXZfdTY0KHRvdGFsLCBjY19mcmVxX2h6KTsKJiM0MzsJCXN1cnZleS0mZ3Q7dGltZV9idXN5ID0gZGl2X3U2NChidXN5LCBjY19mcmVxX2h6KTsKJiM0MzsJCXN1cnZleS0mZ3Q7dGltZV9yeCA9IGRpdl91NjQocnhfYnNzLCBjY19mcmVxX2h6KTsKJiM0MzsJCXN1cnZleS0mZ3Q7dGltZV90eCA9IGRpdl91NjQodHgsIGNjX2ZyZXFfaHopOwomIzQzOwkJc3VydmV5LSZndDtmaWxsZWQgfD0gKFNVUlZFWV9JTkZPX05PSVNFX0RCTSB8CiYjNDM7CQkJCSAgIFNVUlZFWV9JTkZPX1RJTUUgfAomIzQzOwkJCQkgICBTVVJWRVlfSU5GT19USU1FX0JVU1kgfAomIzQzOwkJCQkgICBTVVJWRVlfSU5GT19USU1FX1JYIHwKJiM0MzsJCQkJICAgU1VSVkVZX0lORk9fVElNRV9UWCk7CiYjNDM7CX0KIAotCXN1cnZleS0mZ3Q7bm9pc2UgICAgID0gbGUzMl90b19jcHUoYnNzX2NoX2luZm9fZXYubm9pc2VfZmxvb3IpOwotCXN1cnZleS0mZ3Q7dGltZSAgICAgID0gZGl2X3U2NCh0b3RhbCwgY2NfZnJlcV9oeik7Ci0Jc3VydmV5LSZndDt0aW1lX2J1c3kgPSBkaXZfdTY0KGJ1c3ksIGNjX2ZyZXFfaHopOwotCXN1cnZleS0mZ3Q7dGltZV9yeCAgID0gZGl2X3U2NChyeF9ic3MsIGNjX2ZyZXFfaHopOwotCXN1cnZleS0mZ3Q7dGltZV90eCAgID0gZGl2X3U2NCh0eCwgY2NfZnJlcV9oeik7Ci0Jc3VydmV5LSZndDtmaWxsZWQgICB8PSAoU1VSVkVZX0lORk9fTk9JU0VfREJNIHwKLQkJCSAgICAgU1VSVkVZX0lORk9fVElNRSB8Ci0JCQkgICAgIFNVUlZFWV9JTkZPX1RJTUVfQlVTWSB8Ci0JCQkgICAgIFNVUlZFWV9JTkZPX1RJTUVfUlggfAotCQkJICAgICBTVVJWRVlfSU5GT19USU1FX1RYKTsKIGV4aXQ6Ci0Jc3Bpbl91bmxvY2tfYmgoJmFtcDthci0mZ3Q7ZGF0YV9sb2NrKTsKIAljb21wbGV0ZSgmYW1wO2FyLSZndDtic3Nfc3VydmV5X2RvbmUpOwogCiAJcmN1X3JlYWRfdW5sb2NrKCk7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAzIDE2OjIyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUzNTIKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiA0NjYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqUmVhY2hpbmcgdGhlIEF0aDEyayBTdXJ2ZXkgUGF0Y2ggaW4gYSBWaXJ0dWFsaXplZCBFbnZpcm9ubWVudCoqCgpPa2F5LCBzbyB3ZSYjMzk7dmUgZ290IHRoaXMgcGF0Y2ggdGhhdCByZS1vcmdhbml6ZXMgdGhlIGBzdXJ2ZXlgIGFycmF5IGFuZCBpdHMgYXNzb2NpYXRlZCBsb2NrIHdpdGhpbiB0aGUgYGF0aDEya2AgZHJpdmVyLiBJdCBtb3ZlcyB0aGUgZGF0YSBmcm9tIHRoZSBwZXItcmFkaW8gYGF0aDEya2Agc3RydWN0IHRvIHRoZSBwZXItaGFyZHdhcmUgYGF0aDEya19od2Agc3RydWN0LiBUaGlzIGFmZmVjdHMgc2V2ZXJhbCBmdW5jdGlvbnM6IGBhdGgxMmtfbWFjX29wX2dldF9zdXJ2ZXlgLCBgYXRoMTJrX21hY19od19hbGxvY2F0ZWAsIGBhdGgxMmtfY2hhbl9pbmZvX2V2ZW50YCwgYGF0aDEya19wZGV2X2Jzc19jaGFuX2luZm9fZXZlbnRgLCBhbmQgYGZyZXFfdG9faWR4YC4gTXkgaW1tZWRpYXRlIGNvbmNlcm4gaXMgd2hldGhlciB0aGlzIGlzIGV2ZW4gKnRlc3RhYmxlKiBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50LiBUaGlzIGlzIHRoZSBgYXRoMTJrYCBkcml2ZXIsIHdoaWNoLCBhcyBJIHJlY2FsbCwgaXMgZm9yIFF1YWxjb21tIFdpLUZpIDcgZGV2aWNlcywgc3BlY2lmaWNhbGx5IFBDSWUvQUhCIGJhc2VkLgoKVGhlIHF1ZXN0aW9uIHRoZW4gYmVjb21lczogY2FuIHdlIGVtdWxhdGUgdGhpcz8gSSBkb24mIzM5O3QgYmVsaWV2ZSB0aGVyZSYjMzk7cyBhbnkgZXN0YWJsaXNoZWQgUUVNVSBlbXVsYXRpb24gZm9yIGBhdGgxMmtgIGl0c2VsZi4gU3VyZSwgYG1hYzgwMjExX2h3c2ltYCBleGlzdHMsIGJ1dCB0aGF0JiMzOTtzIGEgZ2VuZXJpYyBNQUM4MDIxMSBlbXVsYXRpb24sIG5vdCBzcGVjaWZpY2FsbHkgZm9yIGEgaGFyZHdhcmUgZHJpdmVyLiBXZSYjMzk7cmUgdGFsa2luZyBhYm91dCBhIHZlcnkgc3BlY2lmaWMgcGllY2Ugb2YgaGFyZHdhcmUuIEkgY2FuJiMzOTt0IHRoaW5rIG9mIGFueSBvYnZpb3VzIHNvZnR3YXJlIGVtdWxhdGlvbiByb3V0ZSwgbm8gVVNCIGdhZGdldCB0cmlja3MgaGVyZSBzaW5jZSBpdCYjMzk7cyBQQ0llL0FIQi4KCkJ1dCB3YWl0LCB0aGVyZSYjMzk7cyBzeXprYWxsZXIhIEl0IGNhbiBmdXp6IFBDSSBkZXZpY2VzIHVzaW5nIHZQQ0ksICppZiogc3VwcG9ydGVkLiBUaGUgdXN1YWwgY2F2ZWF0cyBhcHBseTsgbW9zdCBzcGVjaWZpYyBXaS1GaSBkcml2ZXJzIGFyZW4mIzM5O3QgdHlwaWNhbGx5IGZ1enplZCB1bmxlc3MgdGhleSYjMzk7cmUgVVNCIG9yIHZpcnRpby4gSXMgYGF0aDEya2AgYSBjYW5kaWRhdGUgZm9yIHN5emthbGxlciBmdXp6aW5nPyBJJiMzOTtkIG5lZWQgdG8gY2hlY2sgaWYgdGhlcmUgYXJlIHN5emJvdCByZXBvcnRzIHJlbGF0ZWQgdG8gYGF0aDEya2AsIHRob3VnaCBJIGNhbiYjMzk7dCBjaGVjayB0aGF0IGltbWVkaWF0ZWx5LiBCdXQsIEkgKmRvKiBrbm93IHN5emthbGxlciBoYXMgYSBQQ0kgZnV6emVyLCB1c2luZyB0aGluZ3MgbGlrZSBgdmhjaWAgb3IgYHZmaW9gLgoKSG93ZXZlciwgdGhlIG1haW4gcHJvbXB0IHN0aXB1bGF0ZXMgdGhhdCB3ZSBuZWVkIHRvIGNvbnNpZGVyIGNvZGUgcGF0aHMgdW5yZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgc2V0dXBzIGxpa2UgR0NFIG9yIFFFTVUsIGV2ZW4gd2l0aCBzb2Z0d2FyZSBlbXVsYXRpb24gbGlrZSBgdXNiIGdhZGdldGAgb3IgYG1hYzgwMjExX2h3c2ltYC4gSXMgYGF0aDEya2AgcmVhbGlzdGljYWxseSByZWFjaGFibGUgZ2l2ZW4gdGhhdCBjb25zdHJhaW50PyBJIG5lZWQgdG8gY2xhcmlmeSBpZiB0aGlzIGRyaXZlciBjYW4gYmUgdGVzdGVkLiBUaW1lIHRvIGRvdWJsZS1jaGVjayB0aGUgYEtjb25maWdgIGZpbGUgaW4gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZ2AuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDMgMTY6MjI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIEFUSDEySyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UtQ2xlYXJcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZzoyOmNvbmZpZyBBVEgxMktcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZy0zLVx0dHJpc3RhdGUgXCYjMzQ7UXVhbGNvbW0gVGVjaG5vbG9naWVzIFdpLUZpIDcgc3VwcG9ydCAoYXRoMTJrKVwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZy0xNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZzoxNzpjb25maWcgQVRIMTJLX0FIQlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnLTE4LVx0Ym9vbCBcJiMzNDtRVEkgYXRoMTJrIEFIQiBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnLTI0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnOjI1OmNvbmZpZyBBVEgxMktfREVCVUdcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZy0yNi1cdGJvb2wgXCYjMzQ7YXRoMTJrIGRlYnVnZ2luZ1wmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZy0zNC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZzozNTpjb25maWcgQVRIMTJLX0RFQlVHRlNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZy0zNi1cdGJvb2wgXCYjMzQ7UVRJIGF0aDEyayBkZWJ1Z2ZzIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWctNDMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWc6NDQ6Y29uZmlnIEFUSDEyS19UUkFDSU5HXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWctNDUtXHRib29sIFwmIzM0O2F0aDEyayB0cmFjaW5nIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWctNTItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWc6NTM6Y29uZmlnIEFUSDEyS19DT1JFRFVNUFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnLTU0LVx0Ym9vbCBcJiMzNDthdGgxMmsgY29yZWR1bXBcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMyAxNjoyMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+NG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2OTA4CgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogNDU1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgRnV6emFiaWxpdHkgb2YgdGhlIFF1YWxjb21tIFdpLUZpIDcgRHJpdmVyKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGRyaXZlciwgc3BlY2lmaWNhbGx5IGZvciBRdWFsY29tbSYjMzk7cyBXaS1GaSA3IGhhcmR3YXJlLiBGaXJzdCwgSSBuZWVkIHRvIGtub3c6IGlzIHRoZXJlIGFueSBzb2Z0d2FyZSBlbXVsYXRpb24gYXZhaWxhYmxlIGZvciBpdD8gTm8uIFRoYXQmIzM5O3MgYSBodWdlIGh1cmRsZS4gQ2FuIEkgZnV6eiBpdCB0aHJvdWdoIFBDSSBmdXp6aW5nIHRoZW4/IFN5emthbGxlciBkb2VzIGhhdmUgUENJIGZ1enppbmcgY2FwYWJpbGl0aWVzLCB3aGljaCBpcyBwcm9taXNpbmcuIEJ1dCBpcyBpdCBjb25zaWRlcmVkICYjMzQ7aW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMmIzM0Oz8KClVzdWFsbHksIHRoZXNlIGhhcmR3YXJlLXNwZWNpZmljIGRyaXZlcnMgbGlrZSBhdGgxMWssIGF0aDEyaywgb3IgaXdsd2lmaSBhcmUgdHJpY2t5IHRvIGZ1enogdW5sZXNzIHRoZXJlIGlzIGFuIGVtdWxhdG9yIG9yIHVubGVzcyB0aGUgUENJIGZ1enppbmcgaXMgZXh0cmVtZWx5IGVmZmVjdGl2ZS4gU3l6a2FsbGVyJiMzOTtzIFBDSSBmdXp6aW5nIHdvcmtzIGJ5IGluamVjdGluZyBQQ0kgY29uZmlnIHNwYWNlIGFuZCBNTUlPIHJlYWRzL3dyaXRlcy4KCldhaXQsIHRoZSBjb2RlIG1lbnRpb25zIGBhdGgxMmtgIHdoaWNoIHVzZXMgYG1hYzgwMjExYC4gVGhlIHBhdGNoIHNwZWNpZmljYWxseSBtb2RpZmllcyBgYXRoMTJrX21hY19vcF9nZXRfc3VydmV5YCwgd2hpY2ggaXMgYSBjYWxsYmFjayBmb3IgYG1hYzgwMjExYCAoYGdldF9zdXJ2ZXlgKS4gSXQgYWxzbyBtb2RpZmllcyBgYXRoMTJrX2NoYW5faW5mb19ldmVudGAgYW5kIGBhdGgxMmtfcGRldl9ic3NfY2hhbl9pbmZvX2V2ZW50YCwgd2hpY2ggYXJlIFdNSSBldmVudCBoYW5kbGVycy4gT2theSwgV01JIGV2ZW50cyBjb21lIGZyb20gdGhlIGZpcm13YXJlLCB0aGF0JiMzOTtzIGNydWNpYWwuIFNpbmNlIHRoZXJlIGlzIG5vIGZpcm13YXJlIHJ1bm5pbmcgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCwgdW5sZXNzIGVtdWxhdGVkLCB0aGUgZmlybXdhcmUgd29uJiMzOTt0IHNlbmQgdGhvc2UgV01JIGV2ZW50cy4KCldhaXQgYSBtaW51dGUsIGV2ZW4gaWYgUENJIGZ1enppbmcgaW5qZWN0cyByYW5kb20gZGF0YSBpbnRvIE1NSU8sIHRoZSBkcml2ZXIgZXhwZWN0cyBhIGNvbXBsZXggZmlybXdhcmUgYm9vdCBzZXF1ZW5jZSAoUU1JLCBNSEksIFdNSSkuIEl0JiMzOTtzIGhpZ2hseSB1bmxpa2VseSB0byByZWFjaCB0aGVzZSBXTUkgZXZlbnQgaGFuZGxlcnMgb3IgZXZlbiBzdWNjZXNzZnVsbHkgcmVnaXN0ZXIgdGhlIG1hYzgwMjExIGRldmljZSB3aXRob3V0IGEgcmVhbCBmaXJtd2FyZSBvciBhIGdvb2QgZW11bGF0b3IuCgpTbywgbGV0JiMzOTtzIGRyaWxsIGRvd24gc3BlY2lmaWNhbGx5IHRvIGBhdGgxMmtgIGFuZCBzZWUgaWYgaXQmIzM5O3MgZnV6emFibGUgaW4gb3VyIGN1cnJlbnQgc2V0dXAuIFRoZSBwcm9tcHQgc2F5czogJiMzNDtSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOiAuLi4gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLCBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuJiMzNDsgU2luY2UgYGF0aDEya2AgcmVsaWVzIG9uIHJlYWwgaGFyZHdhcmUgb3IgYSBjb21wbGV4IGVtdWxhdG9yIHRoYXQgZG9lc24mIzM5O3QgZXhpc3QgaW4gUUVNVSBvciBHQ0UsIGl0JiMzOTtzIGltcG9zc2libGUgdG8gcmVhY2ggdGhlc2UgY29kZSBwYXRocyEgVGhhdCYjMzk7cyBpdC4KCkxldCBtZSBqdXN0IGRvdWJsZS1jaGVjaywgdGhvdWdoLCBtYXliZSBJJiMzOTttIG1pc3Npbmcgc29tZXRoaW5nLCBpcyB0aGVyZSBhbnkgdGVzdCBtb2RlIG9yIHNpbSBtb2RlIHdpdGhpbiBgYXRoMTJrYD8gSSBzaG91bGQgbm90IGFzc3VtZSwgSSB3aWxsIGNoZWNrLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAzIDE2OjI3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3NpbSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5oPTQ4OD1zdHJ1Y3QgYXRoMTJrX2xpbmtfc3RhIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuaC00OTEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuaDo0OTI6XHQvKiBsaW5rIGFkZHJlc3Mgc2ltaWxhciB0byBpZWVlODAyMTFfbGlua19zdGEgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5oLTQ5My1cdHU4IGFkZHJbRVRIX0FMRU5dO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jLTEyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmM6MTM6c3RhdGljIHNzaXplX3QgYXRoMTJrX3dyaXRlX3NpbXVsYXRlX3JhZGFyKHN0cnVjdCBmaWxlICpmaWxlLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmMtMTQtXHRcdFx0XHRcdCAgIGNvbnN0IGNoYXIgX191c2VyICp1c2VyX2J1Zixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYy0yMC1cdHdpcGh5X2xvY2soYXRoMTJrX2FyX3RvX2h3KGFyKS1cdTAwM2V3aXBoeSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYzoyMTpcdHJldCA9IGF0aDEya193bWlfc2ltdWxhdGVfcmFkYXIoYXIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmMtMjItXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jLTMwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmM6MzE6c3RhdGljIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgZm9wc19zaW11bGF0ZV9yYWRhciA9IHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jOjMyOlx0LndyaXRlID0gYXRoMTJrX3dyaXRlX3NpbXVsYXRlX3JhZGFyLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmM6MzM6XHQub3BlbiA9IHNpbXBsZV9vcGVuXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYy0zNC19O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmMtMzUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYzozNjpzdGF0aWMgc3NpemVfdCBhdGgxMmtfcmVhZF9zaW11bGF0ZV9md19jcmFzaChzdHJ1Y3QgZmlsZSAqZmlsZSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jLTM3LVx0XHRcdFx0XHQgICAgIGNoYXIgX191c2VyICp1c2VyX2J1Zixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYy00MC1cdGNvbnN0IGNoYXIgYnVmW10gPVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmM6NDE6XHRcdFwmIzM0O1RvIHNpbXVsYXRlIGZpcm13YXJlIGNyYXNoIHdyaXRlIG9uZSBvZiB0aGUga2V5d29yZHMgdG8gdGhpcyBmaWxlOlxcblwmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmMtNDItXHRcdFwmIzM0O2Bhc3NlcnRgIC0gc2VuZCBXTUlfRk9SQ0VfRldfSEFOR19DTURJRCB0byBmaXJtd2FyZSB0byBjYXVzZSBhc3NlcnQuXFxuXCYjMzQ7O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmMtNDMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYzo0NDpcdHJldHVybiBzaW1wbGVfcmVhZF9mcm9tX2J1ZmZlcih1c2VyX2J1ZiwgY291bnQsIHBwb3MsIGJ1Ziwgc3RybGVuKGJ1ZikpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmMtNDUtfVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jPTQ3PXN0YXRpYyBzc2l6ZV90XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYzo0ODphdGgxMmtfd3JpdGVfc2ltdWxhdGVfZndfY3Jhc2goc3RydWN0IGZpbGUgKmZpbGUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYy00OS1cdFx0XHQgICAgICAgY29uc3QgY2hhciBfX3VzZXIgKnVzZXJfYnVmLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jLTYyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmM6NjM6XHRyYyA9IHNpbXBsZV93cml0ZV90b19idWZmZXIoYnVmLCBzaXplb2YoYnVmKSAtIDEsIHBwb3MsIHVzZXJfYnVmLCBjb3VudCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYy02NC1cdGlmIChyYyBcdTAwM2MgMClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYy04MS1cdGlmICghc3RyY21wKGJ1ZiwgXCYjMzQ7YXNzZXJ0XCYjMzQ7KSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmM6ODI6XHRcdGF0aDEya19pbmZvKGFiLCBcJiMzNDtzaW11bGF0aW5nIGZpcm13YXJlIGFzc2VydCBjcmFzaFxcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYy04My1cdFx0cmV0ID0gYXRoMTJrX3dtaV9mb3JjZV9md19oYW5nX2NtZChhcixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYy05MC1cdGlmIChyZXQpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jOjkxOlx0XHRhdGgxMmtfd2FybihhYiwgXCYjMzQ7ZmFpbGVkIHRvIHNpbXVsYXRlIGZpcm13YXJlIGNyYXNoOiAlZFxcblwmIzM0OywgcmV0KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jLTkyLVx0XHRyZXR1cm4gcmV0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jLTk3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmM6OTg6c3RhdGljIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgZm9wc19zaW11bGF0ZV9md19jcmFzaCA9IHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jOjk5Olx0LnJlYWQgPSBhdGgxMmtfcmVhZF9zaW11bGF0ZV9md19jcmFzaCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jOjEwMDpcdC53cml0ZSA9IGF0aDEya193cml0ZV9zaW11bGF0ZV9md19jcmFzaCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jOjEwMTpcdC5vcGVuID0gc2ltcGxlX29wZW4sXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYy0xMDItXHQub3duZXIgPSBUSElTX01PRFVMRSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYz03ODM9c3RhdGljIHNzaXplX3QgYXRoMTJrX3JlYWRfdHBjX3N0YXRzKHN0cnVjdCBmaWxlICpmaWxlLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jLTc4OS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jOjc5MDpcdHJldHVybiBzaW1wbGVfcmVhZF9mcm9tX2J1ZmZlcih1c2VyX2J1ZiwgY291bnQsIHBwb3MsIGJ1ZiwgbGVuKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jLTc5MS19XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmM9ODA4PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIGZvcHNfdHBjX3N0YXRzX3R5cGUgPSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYy04MDktXHQud3JpdGUgPSBhdGgxMmtfd3JpdGVfdHBjX3N0YXRzX3R5cGUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYzo4MTA6XHQub3BlbiA9IHNpbXBsZV9vcGVuLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmMtODExLVx0Lmxsc2VlayA9IGRlZmF1bHRfbGxzZWVrLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jPTg4ND1zdGF0aWMgc3NpemVfdCBhdGgxMmtfcmVhZF9leHRkX3J4X3N0YXRzKHN0cnVjdCBmaWxlICpmaWxlLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jLTg5Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jOjg5NzpcdHJldHVybiBzaW1wbGVfcmVhZF9mcm9tX2J1ZmZlcih1YnVmLCBjb3VudCwgcHBvcywgYnVmLCBsZW4pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmMtODk4LX1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYz05MDA9c3RhdGljIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgZm9wc19leHRkX3J4X3N0YXRzID0ge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jLTkwMi1cdC53cml0ZSA9IGF0aDEya193cml0ZV9leHRkX3J4X3N0YXRzLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmM6OTAzOlx0Lm9wZW4gPSBzaW1wbGVfb3BlbixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jLTkwNC19O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jPTk5Nz1zdGF0aWMgc3NpemVfdCBhdGgxMmtfcmVhZF9saW5rX3N0YXRzKHN0cnVjdCBmaWxlICpmaWxlLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jLTEwMDMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYzoxMDA0Olx0cmV0dXJuIHNpbXBsZV9yZWFkX2Zyb21fYnVmZmVyKHVzZXJfYnVmLCBjb3VudCwgcHBvcywgYnVmLCBsZW4pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmMtMTAwNS19XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmM9MTAyNT1zdGF0aWMgc3NpemVfdCBhdGgxMmtfZGVidWdmc19kdW1wX2RldmljZV9kcF9zdGF0cyhzdHJ1Y3QgZmlsZSAqZmlsZSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYy0xMjAyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmM6MTIwMzpcdHJldCA9IHNpbXBsZV9yZWFkX2Zyb21fYnVmZmVyKHVzZXJfYnVmLCBjb3VudCwgcHBvcywgYnVmLCBsZW4pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmMtMTIwNC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYz0xMjA4PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIGZvcHNfZGV2aWNlX2RwX3N0YXRzID0ge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmMtMTIwOS1cdC5yZWFkID0gYXRoMTJrX2RlYnVnZnNfZHVtcF9kZXZpY2VfZHBfc3RhdHMsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYzoxMjEwOlx0Lm9wZW4gPSBzaW1wbGVfb3BlbixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jLTEyMTEtXHQub3duZXIgPSBUSElTX01PRFVMRSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYz0xMjE1PXZvaWQgYXRoMTJrX2RlYnVnZnNfcGRldl9jcmVhdGUoc3RydWN0IGF0aDEya19iYXNlICphYilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jLTEyMTYte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmM6MTIxNzpcdGRlYnVnZnNfY3JlYXRlX2ZpbGUoXCYjMzQ7c2ltdWxhdGVfZndfY3Jhc2hcJiMzNDssIDA2MDAsIGFiLVx1MDAzZWRlYnVnZnNfc29jLCBhYixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jOjEyMTg6XHRcdFx0ICAgIFx1MDAyNmZvcHNfc2ltdWxhdGVfZndfY3Jhc2gpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmMtMTIxOS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYz0xMjUwPXZvaWQgYXRoMTJrX2RlYnVnZnNfc29jX2Rlc3Ryb3koc3RydWN0IGF0aDEya19iYXNlICphYilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYy0xMjU0LVx0LyogV2UgYXJlIG5vdCByZW1vdmluZyBhdGgxMmsgZGlyZWN0b3J5IG9uIHB1cnBvc2UsIGV2ZW4gaWYgaXRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jOjEyNTU6XHQgKiB3b3VsZCBiZSBlbXB0eS4gVGhpcyBzaW1wbGlmaWVzIHRoZSBkaXJlY3RvcnkgaGFuZGxpbmcgYW5kIGl0JiMzOTtzXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYy0xMjU2LVx0ICogYSBtaW5vciBjb3NtZXRpYyBpc3N1ZSB0byBsZWF2ZSBhbiBlbXB0eSBhdGgxMmsgZGlyZWN0b3J5IHRvXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmM9MTMwNz1zdGF0aWMgc3NpemVfdCBhdGgxMmtfcmVhZF92ZGV2X3N0YXRzKHN0cnVjdCBmaWxlICpmaWxlLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jLTEzMTMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYzoxMzE0Olx0cmV0dXJuIHNpbXBsZV9yZWFkX2Zyb21fYnVmZmVyKHVzZXJfYnVmLCBjb3VudCwgcHBvcywgYnVmLCBsZW4pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmMtMTMxNS19XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmM9MTM3ND1zdGF0aWMgc3NpemVfdCBhdGgxMmtfcmVhZF9iY25fc3RhdHMoc3RydWN0IGZpbGUgKmZpbGUsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmMtMTM4MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jOjEzODE6XHRyZXR1cm4gc2ltcGxlX3JlYWRfZnJvbV9idWZmZXIodXNlcl9idWYsIGNvdW50LCBwcG9zLCBidWYsIGxlbik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYy0xMzgyLX1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYz0xNDM1PXN0YXRpYyBzc2l6ZV90IGF0aDEya19yZWFkX3BkZXZfc3RhdHMoc3RydWN0IGZpbGUgKmZpbGUsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmMtMTQ0MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jOjE0NDI6XHRyZXR1cm4gc2ltcGxlX3JlYWRfZnJvbV9idWZmZXIodXNlcl9idWYsIGNvdW50LCBwcG9zLCBidWYsIGxlbik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYy0xNDQzLX1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYz0xNDcyPXZvaWQgYXRoMTJrX2RlYnVnZnNfcmVnaXN0ZXIoc3RydWN0IGF0aDEyayAqYXIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmMtMTUwNi1cdGlmIChhci1cdTAwM2VtYWMuc2JhbmRzW05MODAyMTFfQkFORF81R0haXS5jaGFubmVscykge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmM6MTUwNzpcdFx0ZGVidWdmc19jcmVhdGVfZmlsZShcJiMzNDtkZnNfc2ltdWxhdGVfcmFkYXJcJiMzNDssIDAyMDAsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYy0xNTA4LVx0XHRcdFx0ICAgIGFyLVx1MDAzZWRlYnVnLmRlYnVnZnNfcGRldiwgYXIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYzoxNTA5Olx0XHRcdFx0ICAgIFx1MDAyNmZvcHNfc2ltdWxhdGVfcmFkYXIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmMtMTUxMC1cdH1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnNfaHR0X3N0YXRzLmM9NjE2NT1zdGF0aWMgc3NpemVfdCBhdGgxMmtfcmVhZF9odHRfc3RhdHNfdHlwZShzdHJ1Y3QgZmlsZSAqZmlsZSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnNfaHR0X3N0YXRzLmMtNjE3OS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmc19odHRfc3RhdHMuYzo2MTgwOlx0cmV0dXJuIHNpbXBsZV9yZWFkX2Zyb21fYnVmZmVyKHVzZXJfYnVmLCBjb3VudCwgcHBvcywgYnVmLCBsZW4pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzX2h0dF9zdGF0cy5jLTYxODEtfVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmc19odHRfc3RhdHMuYz02MjI1PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIGZvcHNfaHR0X3N0YXRzX3R5cGUgPSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzX2h0dF9zdGF0cy5jLTYyMjctXHQud3JpdGUgPSBhdGgxMmtfd3JpdGVfaHR0X3N0YXRzX3R5cGUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnNfaHR0X3N0YXRzLmM6NjIyODpcdC5vcGVuID0gc2ltcGxlX29wZW4sXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnNfaHR0X3N0YXRzLmMtNjIyOS1cdC5vd25lciA9IFRISVNfTU9EVUxFLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmc19odHRfc3RhdHMuYz02MzUxPXN0YXRpYyBzc2l6ZV90IGF0aDEya19yZWFkX2h0dF9zdGF0cyhzdHJ1Y3QgZmlsZSAqZmlsZSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnNfaHR0X3N0YXRzLmMtNjM2MC1cdGxlbmd0aCA9IG1pbl90KHUzMiwgc3RhdHNfcmVxLVx1MDAzZWJ1Zl9sZW4sIEFUSDEyS19IVFRfU1RBVFNfQlVGX1NJWkUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzX2h0dF9zdGF0cy5jOjYzNjE6XHRyZXR1cm4gc2ltcGxlX3JlYWRfZnJvbV9idWZmZXIodXNlcl9idWYsIGNvdW50LCBwcG9zLCBidWYsIGxlbmd0aCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnNfaHR0X3N0YXRzLmMtNjM2Mi19XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzX2h0dF9zdGF0cy5jPTY0MjY9c3RhdGljIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgZm9wc19odHRfc3RhdHNfcmVzZXQgPSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnNfaHR0X3N0YXRzLmMtNjQyNy1cdC53cml0ZSA9IGF0aDEya193cml0ZV9odHRfc3RhdHNfcmVzZXQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnNfaHR0X3N0YXRzLmM6NjQyODpcdC5vcGVuID0gc2ltcGxlX29wZW4sXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnNfaHR0X3N0YXRzLmMtNjQyOS1cdC5vd25lciA9IFRISVNfTU9EVUxFLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmc19zdGEuYz0xMzk9c3RhdGljIHNzaXplX3QgYXRoMTJrX2RiZ19zdGFfZHVtcF9yeF9zdGF0cyhzdHJ1Y3QgZmlsZSAqZmlsZSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnNfc3RhLmMtMjQxLVx0aWYgKGxlbilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmc19zdGEuYzoyNDI6XHRcdHJldCA9IHNpbXBsZV9yZWFkX2Zyb21fYnVmZmVyKHVzZXJfYnVmLCBjb3VudCwgcHBvcywgYnVmLCBsZW4pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzX3N0YS5jLTI0My1cdHJldHVybiByZXQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzX3N0YS5jPTI0Nj1zdGF0aWMgY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBmb3BzX3J4X3N0YXRzID0ge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzX3N0YS5jLTI0Ny1cdC5yZWFkID0gYXRoMTJrX2RiZ19zdGFfZHVtcF9yeF9zdGF0cyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmc19zdGEuYzoyNDg6XHQub3BlbiA9IHNpbXBsZV9vcGVuLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzX3N0YS5jLTI0OS1cdC5vd25lciA9IFRISVNfTU9EVUxFLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmc19zdGEuYz0yOTY9c3RhdGljIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgZm9wc19yZXNldF9yeF9zdGF0cyA9IHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmc19zdGEuYy0yOTctXHQud3JpdGUgPSBhdGgxMmtfZGJnX3N0YV9yZXNldF9yeF9zdGF0cyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmc19zdGEuYzoyOTg6XHQub3BlbiA9IHNpbXBsZV9vcGVuLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzX3N0YS5jLTI5OS1cdC5vd25lciA9IFRISVNfTU9EVUxFLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHBfcGVlci5jPTUyOT1pbnQgYXRoMTJrX2RwX2xpbmtfcGVlcl9hc3NpZ24oc3RydWN0IGF0aDEya19kcCAqZHAsIHN0cnVjdCBhdGgxMmtfZHBfaHcgKmRwX2h3LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHBfcGVlci5jLTU5Mi1cdFx0ICogSWYgb2xkIGVudHJ5IGFkZGl0aW9uIGFsc28gZmFpbHMsIHRoZW4gbm90aGluZ1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kcF9wZWVyLmM6NTkzOlx0XHQgKiBjYW4gYmUgZG9uZSwgc2ltcGx5IHByb2NlZWRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHBfcGVlci5jLTU5NC1cdFx0ICovXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9tYWMuYz0yMzcyPXN0YXRpYyB2b2lkIGF0aDEya19wZWVyX2Fzc29jX2hfdmh0KHN0cnVjdCBhdGgxMmsgKmFyLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmMtMjQxMy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmM6MjQxNDpcdC8qIFRPRE86IHNpbWlsYXIgZmxhZ3MgcmVxdWlyZWQ/ICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jLTI0MTUtXHRhcmctXHUwMDNldmh0X2NhcGFibGUgPSB0cnVlO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcmVnLmM9MjY5PWludCBhdGgxMmtfcmVnZF91cGRhdGUoc3RydWN0IGF0aDEyayAqYXIsIGJvb2wgaW5pdClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3JlZy5jLTMzNy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcmVnLmM6MzM4Olx0LyogZmlybXdhcmUgcHJvdmlkZXMgcmVnIHJ1bGVzIHdoaWNoIGFyZSBzaW1pbGFyIGZvciAyIEdIeiBhbmQgNSBHSHpcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcmVnLmMtMzM5LVx0ICogcGRldiBidXQgNiBHSHogcGRldiBoYXMgc3VwZXJzZXQgb2YgYWxsIHJ1bGVzIGluY2x1ZGluZyBydWxlcyBmb3Jcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5jPTEwMDIzPWF0aDEya193bWlfc2VuZF91bml0X3Rlc3RfY21kKHN0cnVjdCBhdGgxMmsgKmFyLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmMtMTAwNzUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5jOjEwMDc2OmludCBhdGgxMmtfd21pX3NpbXVsYXRlX3JhZGFyKHN0cnVjdCBhdGgxMmsgKmFyKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuYy0xMDA3Ny17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuYy0xMDA5NS1cdCAqIEN1cnJlbnRseSB3ZSBjb3VsZCBwYXNzIHNlZ21lbnRfaWQoYjAgLSBiMSksIGNoaXJwKGIyKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuYzoxMDA5NjpcdCAqIGZyZXEgb2Zmc2V0IChiMyAtIGIxMCkgdG8gdW5pdCB0ZXN0LiBGb3Igc2ltdWxhdGlvblxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuYy0xMDA5Ny1cdCAqIHB1cnBvc2UgdGhpcyBjYW4gYmUgc2V0IHRvIDAgd2hpY2ggaXMgdmFsaWQuXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuaD0zNjY1PWVudW0gd21pX3N0YV9wc19tb2RlIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5oLTM2NzctLyogdHlwZSwgMDp1bnVzZWQgMTogQVNTRVJUIDI6IG5vdCByZXNwb25kIGRldGVjdCBjb21tYW5kXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5oOjM2Nzg6ICogZGVsYXlfdGltZV9tcywgdGhlIHNpbXVsYXRlIHdpbGwgZGVsYXkgdGltZVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuaC0zNjc5LSAqL1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmg9NjQ2Nj1pbnQgYXRoMTJrX3dtaV9zZW5kX3BkZXZfc2V0X3JlZ2RvbWFpbihzdHJ1Y3QgYXRoMTJrICphcixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmgtNjQ2Ny1cdFx0XHRcdCAgICAgICBzdHJ1Y3QgYXRoMTJrX3dtaV9wZGV2X3NldF9yZWdkb21haW5fYXJnICphcmcpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuaDo2NDY4OmludCBhdGgxMmtfd21pX3NpbXVsYXRlX3JhZGFyKHN0cnVjdCBhdGgxMmsgKmFyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmgtNjQ2OS1pbnQgYXRoMTJrX3dtaV9zZW5kX3R3dF9lbmFibGVfY21kKHN0cnVjdCBhdGgxMmsgKmFyLCB1MzIgcGRldl9pZCk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDMgMTY6Mjc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTM2MzcKCQkJCQkJCW91dHB1dDogMTMzCgkJCQkJCQl0aG91Z2h0czogNzk1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKlVucmVhY2hhYmxlIENvZGUgUGF0aHMgaW4gVmlydHVhbGl6ZWQgRW52aXJvbm1lbnRzKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciB0aGUgYGF0aDEya2AgZHJpdmVyLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCB0aGlzIGlzIGZvciByZWFsIGhhcmR3YXJlLCBzcGVjaWZpY2FsbHkgUXVhbGNvbW0gV2ktRmkgNyBkZXZpY2VzLiAgSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaWYgdGhlc2UgY29kZSBjaGFuZ2VzIGFyZSB3b3J0aCBmdXp6aW5nLiBJIGNhbiBzZWUgdGhlcmUgYXJlIGBzaW11bGF0ZV9yYWRhcmAgYW5kIGBzaW11bGF0ZV9md19jcmFzaGAgZGVidWdmcyBjb21tYW5kcywgYnV0IG5vdGhpbmcgbGlrZSBhIGZ1bGwgTUFDL1BIWSBzaW11bGF0aW9uIGxpa2UgYGh3c2ltYC4gIE15IGluc3RpbmN0IGlzIHRoYXQsIG5vLCB0aGV5JiMzOTtyZSBub3QuCgpJIHN0YXJ0ZWQgdG8gdGhpbmsgYWJvdXQgU3l6a2FsbGVyLiBJdCBoYXMgYSBQQ0kgZnV6emVyLCBhbmQgSSB3b25kZXJlZCBpZiB0aGF0IGNvdWxkIGJlIHVzZWQgb24gYGF0aDEya2AuICBQZXJoYXBzIGlmIHRoZSBmdXp6ZXIgY291bGQgdHJpZ2dlciBXTUkgZXZlbnRzIGJ5IHdyaXRpbmcgdG8gTU1JTywgaXQgbWlnaHQgcmVhY2ggZnVuY3Rpb25zIGxpa2UgYGF0aDEya19jaGFuX2luZm9fZXZlbnRgLiBCdXQgdGhlbiBJIHJlbWVtYmVyZWQgdGhhdCBXTUkgZXZlbnRzIGFyZSBjb21wbGV4IHN0cnVjdHVyZXMgc2VudCB2aWEgTUhJIG9yIHRoZSBDb3B5IEVuZ2luZS4gSXQmIzM5O3MgaW5jcmVkaWJseSB1bmxpa2VseSB0aGF0IGEgcmFuZG9tIE1NSU8gd3JpdGUgd291bGQgZW11bGF0ZSBhIHZhbGlkIFdNSSBldmVudCBzZXF1ZW5jZS4gIEhtbSwgU3l6a2FsbGVyIGFsc28gaGFzIGEgbWFjODAyMTEgZnV6emVyICh2aWEgaHdzaW0pLiBIb3dldmVyLCBgaHdzaW1gIG9ubHkgZnV6emVzIG1hYzgwMjExLCBub3QgYGF0aDEya2AuCgpJIHJlLXJlYWQgdGhlIHByb21wdC4gSXQgc2F5cyB0byByZXR1cm4gYFdvcnRoRnV6emluZz1mYWxzZWAgaWYgdGhlIHBhdGNoIGNvbmNlcm5zICYjMzQ7Q29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLCBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuJiMzNDsgU2luY2UgYGF0aDEya2AgaXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBkcml2ZXIgZm9yIGEgUENJL0FIQiBkZXZpY2UsIGFuZCB0aGVyZSYjMzk7cyBubyBzb2Z0d2FyZSBlbXVsYXRpb24gZm9yIGl0IGluIFFFTVUvR0NFLCBpdCYjMzk7cyBpbXBvc3NpYmxlIHRvIHJlYWNoIHRoZXNlIGNvZGUgcGF0aHMgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4KCkp1c3QgdG8gYmUgc3VyZSwgbGV0IG1lIGNoZWNrLiBJIGtub3cgdGhhdCBgYXRoMTJrX21hY19vcF9nZXRfc3VydmV5YCBpcyByZWdpc3RlcmVkIGFzIGEgbWFjODAyMTEgY2FsbGJhY2suIFRvIHJlZ2lzdGVyIGl0LCBgYXRoMTJrX21hY19yZWdpc3RlcmAgbXVzdCBiZSBjYWxsZWQuIGBhdGgxMmtfbWFjX3JlZ2lzdGVyYCBpcyBjYWxsZWQgZHVyaW5nIGRldmljZSBpbml0aWFsaXphdGlvbiAoYGF0aDEya19jb3JlX3N0YXJ0YCkuIERldmljZSBpbml0aWFsaXphdGlvbiByZXF1aXJlcyBhIHJlYWwgUENJL0FIQiBkZXZpY2UgdG8gcHJvYmUsIGFuZCB0aGVuIGl0IGNvbW11bmljYXRlcyB3aXRoIHRoZSBmaXJtd2FyZSB0byBnZXQgY2FwYWJpbGl0aWVzIGJlZm9yZSByZWdpc3RlcmluZyB3aXRoIG1hYzgwMjExLiBXaXRob3V0IHJlYWwgaGFyZHdhcmUgb3IgYSBzcGVjaWZpYyBlbXVsYXRvciwgYGF0aDEya19jb3JlX3N0YXJ0YCBpcyBnb2luZyB0byBmYWlsIGVhcmx5LiAgSXQmIzM5O2xsIGZhaWwgdG8gbG9hZCBmaXJtd2FyZSwgZmFpbCB0byBpbml0aWFsaXplIE1ISSwgZmFpbCB0byBnZXQgV01JIHJlYWR5LiAgVGhlcmVmb3JlLCB0aGUgbWFjODAyMTEgY2FsbGJhY2tzIGZvciBgYXRoMTJrYCB3aWxsIG5ldmVyIGJlIHJlZ2lzdGVyZWQgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4gU28geWVzLCB0aGUgY29kZSBwYXRocyBhcmUgaW1wb3NzaWJsZSB0byByZWFjaC4KCk9rYXksIGxldCBtZSBjb25maXJtIHRoaXMgcmVhc29uaW5nLiBUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGBhdGgxMmtgIGRyaXZlci4gSXQgcmVxdWlyZXMgcmVhbCBoYXJkd2FyZSBhbmQgZmlybXdhcmUgdG8gYm9vdC4gSW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCBsaWtlIEdDRSBvciBRRU1VIHdpdGhvdXQgUENJIHBhc3N0aHJvdWdoIG9mIHRoZSBzcGVjaWZpYyBoYXJkd2FyZSwgdGhlIGRyaXZlciB3aWxsIG5vdCBwcm9iZSBzdWNjZXNzZnVsbHkuIEV2ZW4gd2l0aCBTeXprYWxsZXImIzM5O3MgUENJIGZ1enplciwgaXQmIzM5O3MgcHJhY3RpY2FsbHkgaW1wb3NzaWJsZSB0byBwYXNzIHRoZSBjb21wbGV4IGZpcm13YXJlIGJvb3Qgc2VxdWVuY2UgKE1ISSwgUU1JLCBXTUkpIHRvIHJlZ2lzdGVyIHRoZSBtYWM4MDIxMSBkZXZpY2UuIFRodXMsIHRoZSBtb2RpZmllZCBmdW5jdGlvbnMgKGBhdGgxMmtfbWFjX29wX2dldF9zdXJ2ZXlgLCBgYXRoMTJrX2NoYW5faW5mb19ldmVudGAsIGV0Yy4pIGFyZSB1bnJlYWNoYWJsZS4gVGhlcmVmb3JlLCBgV29ydGhGdXp6aW5nYCBzaG91bGQgYmUgYGZhbHNlYC4KCkp1c3QgdG8gYmUgYWJzb2x1dGVseSBzdXJlLCBsZXQgbWUgY2hlY2sgaWYgdGhlcmUgaXMgYW55IG90aGVyIHdheS4gSXMgdGhlcmUgYSBkdW1teSBvciB0ZXN0IG1vZGUgaW4gYGF0aDEya2A/IEkgc2VhcmNoZWQgZm9yICYjMzQ7c2ltJiMzNDsgYW5kIGZvdW5kIGBzaW11bGF0ZV9yYWRhcmAgYW5kIGBzaW11bGF0ZV9md19jcmFzaGAsIHdoaWNoIGFyZSBkZWJ1Z2ZzIGNvbW1hbmRzIHRvIHNlbmQgV01JIGNvbW1hbmRzIHRvIHRoZSBmaXJtd2FyZS4gVGhleSBzdGlsbCByZXF1aXJlIHRoZSBmaXJtd2FyZSB0byBiZSBydW5uaW5nLiBUaGVyZSBpcyBubyBgaHdzaW1gIGVxdWl2YWxlbnQgZm9yIGBhdGgxMmtgLiBTbyB5ZXMsIGl0JiMzOTtzIHVucmVhY2hhYmxlLgoKSSYjMzk7bSBnb2luZyB0byBzZXQgYFdvcnRoRnV6emluZz1mYWxzZWAgYW5kIHByb3ZpZGUgdGhpcyByZWFzb25pbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDMgMTY6Mjc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgYXRoMTJrIGRyaXZlciwgd2hpY2ggaXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBkcml2ZXIgZm9yIFF1YWxjb21tIFdpLUZpIDcgUENJZS9BSEIgZGV2aWNlcy4gVGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgKG1hYzgwMjExIGNhbGxiYWNrcyBhbmQgV01JIGV2ZW50IGhhbmRsZXJzKSByZXF1aXJlIGEgc3VjY2Vzc2Z1bCBkZXZpY2UgcHJvYmUgYW5kIGZpcm13YXJlIGJvb3Qgc2VxdWVuY2UgKE1ISSwgUU1JLCBXTUkpIHRvIGJlIHJlYWNoYWJsZS4gU2luY2UgdGhlcmUgaXMgbm8gc29mdHdhcmUgZW11bGF0aW9uIGZvciB0aGlzIGhhcmR3YXJlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgR0NFLCB0aGVzZSBjb2RlIHBhdGhzIGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGFuZCBmdXp6LiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGF0aDEyayBkcml2ZXIsIHdoaWNoIGlzIGEgaGFyZHdhcmUtc3BlY2lmaWMgZHJpdmVyIGZvciBRdWFsY29tbSBXaS1GaSA3IFBDSWUvQUhCIGRldmljZXMuIFRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIChtYWM4MDIxMSBjYWxsYmFja3MgYW5kIFdNSSBldmVudCBoYW5kbGVycykgcmVxdWlyZSBhIHN1Y2Nlc3NmdWwgZGV2aWNlIHByb2JlIGFuZCBmaXJtd2FyZSBib290IHNlcXVlbmNlIChNSEksIFFNSSwgV01JKSB0byBiZSByZWFjaGFibGUuIFNpbmNlIHRoZXJlIGlzIG5vIHNvZnR3YXJlIGVtdWxhdGlvbiBmb3IgdGhpcyBoYXJkd2FyZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRSwgdGhlc2UgY29kZSBwYXRocyBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBhbmQgZnV6ei4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0wM1QxNjoyMjoxMy4yNDk5Nzg1MzRaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozMTgxNjM4MjE2MDksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBhdGgxMmsgZHJpdmVyLCB3aGljaCBpcyBhIGhhcmR3YXJlLXNwZWNpZmljIGRyaXZlciBmb3IgUXVhbGNvbW0gV2ktRmkgNyBQQ0llL0FIQiBkZXZpY2VzLiBUaGUgbW9kaWZpZWQgY29kZSBwYXRocyAobWFjODAyMTEgY2FsbGJhY2tzIGFuZCBXTUkgZXZlbnQgaGFuZGxlcnMpIHJlcXVpcmUgYSBzdWNjZXNzZnVsIGRldmljZSBwcm9iZSBhbmQgZmlybXdhcmUgYm9vdCBzZXF1ZW5jZSAoTUhJLCBRTUksIFdNSSkgdG8gYmUgcmVhY2hhYmxlLiBTaW5jZSB0aGVyZSBpcyBubyBzb2Z0d2FyZSBlbXVsYXRpb24gZm9yIHRoaXMgaGFyZHdhcmUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHQ0UsIHRoZXNlIGNvZGUgcGF0aHMgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggYW5kIGZ1enouXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wM1QxNjoyMjoxMy4yNDk5ODMzMDRaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM3MTc5MTc3NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDUxOTkzMmYxNTBkYzYzMTU1NWViZjA0YjM0ZGZmZGUxOWEzZDRjMDVcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIEZyaSBKdWwgMyAxNjoyMjoxMiAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5oXFxuaW5kZXggOGJlNDM1NTM1YTRlOGIuLjZjZTJmN2IzZmE1MDEyIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5oXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmhcXG5AQCAtNzEyLDcgKzcxMiw2IEBAIHN0cnVjdCBhdGgxMmsge1xcbiBcXHQgKiBhdm9pZCByZXBvcnRpbmcgZ2FyYmFnZSBkYXRhLlxcbiBcXHQgKi9cXG4gXFx0Ym9vbCBjaF9pbmZvX2Nhbl9yZXBvcnRfc3VydmV5O1xcbi1cXHRzdHJ1Y3Qgc3VydmV5X2luZm8gc3VydmV5W0FUSDEyS19OVU1fQ0hBTlNdO1xcbiBcXHRzdHJ1Y3QgY29tcGxldGlvbiBic3Nfc3VydmV5X2RvbmU7XFxuIFxcbiBcXHRzdHJ1Y3Qgd29ya19zdHJ1Y3QgcmVnZF91cGRhdGVfd29yaztcXG5AQCAtNzc0LDYgKzc3MywxMSBAQCBzdHJ1Y3QgYXRoMTJrX2h3IHtcXG4gXFx0ICovXFxuIFxcdHN0cnVjdCBtdXRleCBod19tdXRleDtcXG4gXFx0ZW51bSBhdGgxMmtfaHdfc3RhdGUgc3RhdGU7XFxuK1xcbitcXHQvKiBwcm90ZWN0cyBzdXJ2ZXlbXSBzaGFyZWQgYWNyb3NzIHJhZGlvcyBvZiB0aGlzIGh3LiAqL1xcbitcXHRzcGlubG9ja190IHN1cnZleV9sb2NrO1xcbitcXHRzdHJ1Y3Qgc3VydmV5X2luZm8gc3VydmV5W0FUSDEyS19OVU1fQ0hBTlNdO1xcbitcXG4gXFx0Ym9vbCByZWdkX3VwZGF0ZWQ7XFxuIFxcdGJvb2wgdXNlXzZnaHpfcmVnZDtcXG4gXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jXFxuaW5kZXggMmNmZjk0ODVjOTVhZmIuLmRhZjliYzg3MjJkZmJhIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmNcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jXFxuQEAgLTEzMzQ4LDUyICsxMzM0OCw1NCBAQCBhdGgxMmtfbWFjX3VwZGF0ZV9ic3NfY2hhbl9zdXJ2ZXkoc3RydWN0IGF0aDEyayAqYXIsXFxuIGludCBhdGgxMmtfbWFjX29wX2dldF9zdXJ2ZXkoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsIGludCBpZHgsXFxuIFxcdFxcdFxcdCAgICAgc3RydWN0IHN1cnZleV9pbmZvICpzdXJ2ZXkpXFxuIHtcXG4rXFx0c3RydWN0IGF0aDEya19odyAqYWggPSBody1cXHUwMDNlcHJpdjtcXG4gXFx0c3RydWN0IGF0aDEyayAqYXI7XFxuIFxcdHN0cnVjdCBpZWVlODAyMTFfc3VwcG9ydGVkX2JhbmQgKnNiYW5kO1xcbi1cXHRzdHJ1Y3Qgc3VydmV5X2luZm8gKmFyX3N1cnZleTtcXG4rXFx0c3RydWN0IHN1cnZleV9pbmZvICphaF9zdXJ2ZXk7XFxuK1xcdGludCBzYmFuZF9pZHggPSBpZHg7XFxuIFxcbiBcXHRsb2NrZGVwX2Fzc2VydF93aXBoeShody1cXHUwMDNld2lwaHkpO1xcbiBcXG4tXFx0aWYgKGlkeCBcXHUwMDNlPSBBVEgxMktfTlVNX0NIQU5TKVxcbitcXHRpZiAoc2JhbmRfaWR4IFxcdTAwM2U9IEFUSDEyS19OVU1fQ0hBTlMpXFxuIFxcdFxcdHJldHVybiAtRU5PRU5UO1xcbiBcXG4gXFx0c2JhbmQgPSBody1cXHUwMDNld2lwaHktXFx1MDAzZWJhbmRzW05MODAyMTFfQkFORF8yR0haXTtcXG4tXFx0aWYgKHNiYW5kIFxcdTAwMjZcXHUwMDI2IGlkeCBcXHUwMDNlPSBzYmFuZC1cXHUwMDNlbl9jaGFubmVscykge1xcbi1cXHRcXHRpZHggLT0gc2JhbmQtXFx1MDAzZW5fY2hhbm5lbHM7XFxuK1xcdGlmIChzYmFuZCBcXHUwMDI2XFx1MDAyNiBzYmFuZF9pZHggXFx1MDAzZT0gc2JhbmQtXFx1MDAzZW5fY2hhbm5lbHMpIHtcXG4rXFx0XFx0c2JhbmRfaWR4IC09IHNiYW5kLVxcdTAwM2VuX2NoYW5uZWxzO1xcbiBcXHRcXHRzYmFuZCA9IE5VTEw7XFxuIFxcdH1cXG4gXFxuIFxcdGlmICghc2JhbmQpXFxuIFxcdFxcdHNiYW5kID0gaHctXFx1MDAzZXdpcGh5LVxcdTAwM2ViYW5kc1tOTDgwMjExX0JBTkRfNUdIWl07XFxuLVxcdGlmIChzYmFuZCBcXHUwMDI2XFx1MDAyNiBpZHggXFx1MDAzZT0gc2JhbmQtXFx1MDAzZW5fY2hhbm5lbHMpIHtcXG4tXFx0XFx0aWR4IC09IHNiYW5kLVxcdTAwM2VuX2NoYW5uZWxzO1xcbitcXHRpZiAoc2JhbmQgXFx1MDAyNlxcdTAwMjYgc2JhbmRfaWR4IFxcdTAwM2U9IHNiYW5kLVxcdTAwM2VuX2NoYW5uZWxzKSB7XFxuK1xcdFxcdHNiYW5kX2lkeCAtPSBzYmFuZC1cXHUwMDNlbl9jaGFubmVscztcXG4gXFx0XFx0c2JhbmQgPSBOVUxMO1xcbiBcXHR9XFxuIFxcbiBcXHRpZiAoIXNiYW5kKVxcbiBcXHRcXHRzYmFuZCA9IGh3LVxcdTAwM2V3aXBoeS1cXHUwMDNlYmFuZHNbTkw4MDIxMV9CQU5EXzZHSFpdO1xcbiBcXG4tXFx0aWYgKCFzYmFuZCB8fCBpZHggXFx1MDAzZT0gc2JhbmQtXFx1MDAzZW5fY2hhbm5lbHMpXFxuK1xcdGlmICghc2JhbmQgfHwgc2JhbmRfaWR4IFxcdTAwM2U9IHNiYW5kLVxcdTAwM2VuX2NoYW5uZWxzKVxcbiBcXHRcXHRyZXR1cm4gLUVOT0VOVDtcXG4gXFxuLVxcdGFyID0gYXRoMTJrX21hY19nZXRfYXJfYnlfY2hhbihodywgXFx1MDAyNnNiYW5kLVxcdTAwM2VjaGFubmVsc1tpZHhdKTtcXG4rXFx0YXIgPSBhdGgxMmtfbWFjX2dldF9hcl9ieV9jaGFuKGh3LCBcXHUwMDI2c2JhbmQtXFx1MDAzZWNoYW5uZWxzW3NiYW5kX2lkeF0pO1xcbiBcXHRpZiAoIWFyKSB7XFxuLVxcdFxcdGlmIChzYmFuZC1cXHUwMDNlY2hhbm5lbHNbaWR4XS5mbGFncyBcXHUwMDI2IElFRUU4MDIxMV9DSEFOX0RJU0FCTEVEKSB7XFxuK1xcdFxcdGlmIChzYmFuZC1cXHUwMDNlY2hhbm5lbHNbc2JhbmRfaWR4XS5mbGFncyBcXHUwMDI2IElFRUU4MDIxMV9DSEFOX0RJU0FCTEVEKSB7XFxuIFxcdFxcdFxcdG1lbXNldChzdXJ2ZXksIDAsIHNpemVvZigqc3VydmV5KSk7XFxuIFxcdFxcdFxcdHJldHVybiAwO1xcbiBcXHRcXHR9XFxuIFxcdFxcdHJldHVybiAtRU5PRU5UO1xcbiBcXHR9XFxuIFxcbi1cXHRhcl9zdXJ2ZXkgPSBcXHUwMDI2YXItXFx1MDAzZXN1cnZleVtpZHhdO1xcbitcXHRhaF9zdXJ2ZXkgPSBcXHUwMDI2YWgtXFx1MDAzZXN1cnZleVtpZHhdO1xcbiBcXG4tXFx0YXRoMTJrX21hY191cGRhdGVfYnNzX2NoYW5fc3VydmV5KGFyLCBcXHUwMDI2c2JhbmQtXFx1MDAzZWNoYW5uZWxzW2lkeF0pO1xcbitcXHRhdGgxMmtfbWFjX3VwZGF0ZV9ic3NfY2hhbl9zdXJ2ZXkoYXIsIFxcdTAwMjZzYmFuZC1cXHUwMDNlY2hhbm5lbHNbc2JhbmRfaWR4XSk7XFxuIFxcbi1cXHRzcGluX2xvY2tfYmgoXFx1MDAyNmFyLVxcdTAwM2VkYXRhX2xvY2spO1xcbi1cXHRtZW1jcHkoc3VydmV5LCBhcl9zdXJ2ZXksIHNpemVvZigqc3VydmV5KSk7XFxuLVxcdHNwaW5fdW5sb2NrX2JoKFxcdTAwMjZhci1cXHUwMDNlZGF0YV9sb2NrKTtcXG4rXFx0c2NvcGVkX2d1YXJkKHNwaW5sb2NrX2JoLCBcXHUwMDI2YWgtXFx1MDAzZXN1cnZleV9sb2NrKSB7XFxuK1xcdFxcdG1lbWNweShzdXJ2ZXksIGFoX3N1cnZleSwgc2l6ZW9mKCpzdXJ2ZXkpKTtcXG4rXFx0fVxcbiBcXG4tXFx0c3VydmV5LVxcdTAwM2VjaGFubmVsID0gXFx1MDAyNnNiYW5kLVxcdTAwM2VjaGFubmVsc1tpZHhdO1xcbitcXHRzdXJ2ZXktXFx1MDAzZWNoYW5uZWwgPSBcXHUwMDI2c2JhbmQtXFx1MDAzZWNoYW5uZWxzW3NiYW5kX2lkeF07XFxuIFxcbiBcXHRpZiAoYXItXFx1MDAzZXJ4X2NoYW5uZWwgPT0gc3VydmV5LVxcdTAwM2VjaGFubmVsKVxcbiBcXHRcXHRzdXJ2ZXktXFx1MDAzZWZpbGxlZCB8PSBTVVJWRVlfSU5GT19JTl9VU0U7XFxuQEAgLTE1MDU1LDYgKzE1MDU3LDcgQEAgc3RhdGljIHN0cnVjdCBhdGgxMmtfaHcgKmF0aDEya19tYWNfaHdfYWxsb2NhdGUoc3RydWN0IGF0aDEya19od19ncm91cCAqYWcsXFxuIFxcbiBcXHRtdXRleF9pbml0KFxcdTAwMjZhaC1cXHUwMDNlaHdfbXV0ZXgpO1xcbiBcXG4rXFx0c3Bpbl9sb2NrX2luaXQoXFx1MDAyNmFoLVxcdTAwM2VzdXJ2ZXlfbG9jayk7XFxuIFxcdHNwaW5fbG9ja19pbml0KFxcdTAwMjZhaC1cXHUwMDNlZHBfaHcucGVlcl9sb2NrKTtcXG4gXFx0SU5JVF9MSVNUX0hFQUQoXFx1MDAyNmFoLVxcdTAwM2VkcF9ody5kcF9wZWVyc19saXN0KTtcXG4gXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5jXFxuaW5kZXggYjVlOTA0YTU1YWVhYmIuLjNmMzczMGE2YzJhYzI3IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmNcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5jXFxuQEAgLTY2MTcsMTYgKzY2MTcsMTIgQEAgc3RhdGljIGludCBhdGgxMmtfcHVsbF9yb2FtX2V2KHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIsIHN0cnVjdCBza19idWZmICpza2IsXFxuIFxcdHJldHVybiAwO1xcbiB9XFxuIFxcbi1zdGF0aWMgaW50IGZyZXFfdG9faWR4KHN0cnVjdCBhdGgxMmsgKmFyLCBpbnQgZnJlcSlcXG4rc3RhdGljIGludCBmcmVxX3RvX2lkeChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywgaW50IGZyZXEpXFxuIHtcXG4gXFx0c3RydWN0IGllZWU4MDIxMV9zdXBwb3J0ZWRfYmFuZCAqc2JhbmQ7XFxuLVxcdHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3ID0gYXRoMTJrX2FyX3RvX2h3KGFyKTtcXG4gXFx0aW50IGJhbmQsIGNoLCBpZHggPSAwO1xcbiBcXG4gXFx0Zm9yIChiYW5kID0gTkw4MDIxMV9CQU5EXzJHSFo7IGJhbmQgXFx1MDAzYyBOVU1fTkw4MDIxMV9CQU5EUzsgYmFuZCsrKSB7XFxuLVxcdFxcdGlmICghYXItXFx1MDAzZW1hYy5zYmFuZHNbYmFuZF0uY2hhbm5lbHMpXFxuLVxcdFxcdFxcdGNvbnRpbnVlO1xcbi1cXG4gXFx0XFx0c2JhbmQgPSBody1cXHUwMDNld2lwaHktXFx1MDAzZWJhbmRzW2JhbmRdO1xcbiBcXHRcXHRpZiAoIXNiYW5kKVxcbiBcXHRcXHRcXHRjb250aW51ZTtcXG5AQCAtNzUwNyw2ICs3NTAzLDcgQEAgc3RhdGljIHZvaWQgYXRoMTJrX2NoYW5faW5mb19ldmVudChzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbiB7XFxuIFxcdHN0cnVjdCB3bWlfY2hhbl9pbmZvX2V2ZW50IGNoX2luZm9fZXYgPSB7fTtcXG4gXFx0c3RydWN0IGF0aDEyayAqYXI7XFxuK1xcdHN0cnVjdCBhdGgxMmtfaHcgKmFoO1xcbiBcXHRzdHJ1Y3Qgc3VydmV5X2luZm8gKnN1cnZleTtcXG4gXFx0aW50IGlkeDtcXG4gXFx0LyogSFcgY2hhbm5lbCBjb3VudGVycyBmcmVxdWVuY3kgdmFsdWUgaW4gaGVydHogKi9cXG5AQCAtNzUzOCw2ICs3NTM1LDcgQEAgc3RhdGljIHZvaWQgYXRoMTJrX2NoYW5faW5mb19ldmVudChzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbiBcXHRcXHRyZXR1cm47XFxuIFxcdH1cXG4gXFx0c3Bpbl9sb2NrX2JoKFxcdTAwMjZhci1cXHUwMDNlZGF0YV9sb2NrKTtcXG4rXFx0YWggPSBhdGgxMmtfYXJfdG9fYWgoYXIpO1xcbiBcXG4gXFx0c3dpdGNoIChhci1cXHUwMDNlc2Nhbi5zdGF0ZSkge1xcbiBcXHRjYXNlIEFUSDEyS19TQ0FOX0lETEU6XFxuQEAgLTc1NDksOCArNzU0Nyw4IEBAIHN0YXRpYyB2b2lkIGF0aDEya19jaGFuX2luZm9fZXZlbnQoc3RydWN0IGF0aDEya19iYXNlICphYiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4gXFx0XFx0YnJlYWs7XFxuIFxcdH1cXG4gXFxuLVxcdGlkeCA9IGZyZXFfdG9faWR4KGFyLCBsZTMyX3RvX2NwdShjaF9pbmZvX2V2LmZyZXEpKTtcXG4tXFx0aWYgKGlkeCBcXHUwMDNlPSBBUlJBWV9TSVpFKGFyLVxcdTAwM2VzdXJ2ZXkpKSB7XFxuK1xcdGlkeCA9IGZyZXFfdG9faWR4KGF0aDEya19hcl90b19odyhhciksIGxlMzJfdG9fY3B1KGNoX2luZm9fZXYuZnJlcSkpO1xcbitcXHRpZiAoaWR4IFxcdTAwM2U9IEFSUkFZX1NJWkUoYWgtXFx1MDAzZXN1cnZleSkpIHtcXG4gXFx0XFx0YXRoMTJrX3dhcm4oYWIsIFxcXCJjaGFuIGluZm86IGludmFsaWQgZnJlcXVlbmN5ICVkIChpZHggJWQgb3V0IG9mIGJvdW5kcylcXFxcblxcXCIsXFxuIFxcdFxcdFxcdCAgICBjaF9pbmZvX2V2LmZyZXEsIGlkeCk7XFxuIFxcdFxcdGdvdG8gZXhpdDtcXG5AQCAtNzU2MywxNCArNzU2MSwxNiBAQCBzdGF0aWMgdm9pZCBhdGgxMmtfY2hhbl9pbmZvX2V2ZW50KHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIsIHN0cnVjdCBza19idWZmICpza2IpXFxuIFxcdFxcdGNjX2ZyZXFfaHogPSAobGUzMl90b19jcHUoY2hfaW5mb19ldi5tYWNfY2xrX21oeikgKiAxMDAwKTtcXG4gXFxuIFxcdGlmIChjaF9pbmZvX2V2LmNtZF9mbGFncyA9PSBXTUlfQ0hBTl9JTkZPX1NUQVJUX1JFU1ApIHtcXG4tXFx0XFx0c3VydmV5ID0gXFx1MDAyNmFyLVxcdTAwM2VzdXJ2ZXlbaWR4XTtcXG4tXFx0XFx0bWVtc2V0KHN1cnZleSwgMCwgc2l6ZW9mKCpzdXJ2ZXkpKTtcXG4tXFx0XFx0c3VydmV5LVxcdTAwM2Vub2lzZSA9IGxlMzJfdG9fY3B1KGNoX2luZm9fZXYubm9pc2VfZmxvb3IpO1xcbi1cXHRcXHRzdXJ2ZXktXFx1MDAzZWZpbGxlZCA9IFNVUlZFWV9JTkZPX05PSVNFX0RCTSB8IFNVUlZFWV9JTkZPX1RJTUUgfFxcbitcXHRcXHRzY29wZWRfZ3VhcmQoc3BpbmxvY2tfYmgsIFxcdTAwMjZhaC1cXHUwMDNlc3VydmV5X2xvY2spIHtcXG4rXFx0XFx0XFx0c3VydmV5ID0gXFx1MDAyNmFoLVxcdTAwM2VzdXJ2ZXlbaWR4XTtcXG4rXFx0XFx0XFx0bWVtc2V0KHN1cnZleSwgMCwgc2l6ZW9mKCpzdXJ2ZXkpKTtcXG4rXFx0XFx0XFx0c3VydmV5LVxcdTAwM2Vub2lzZSA9IGxlMzJfdG9fY3B1KGNoX2luZm9fZXYubm9pc2VfZmxvb3IpO1xcbitcXHRcXHRcXHRzdXJ2ZXktXFx1MDAzZWZpbGxlZCA9IFNVUlZFWV9JTkZPX05PSVNFX0RCTSB8IFNVUlZFWV9JTkZPX1RJTUUgfFxcbiBcXHRcXHRcXHRcXHQgU1VSVkVZX0lORk9fVElNRV9CVVNZO1xcbi1cXHRcXHRzdXJ2ZXktXFx1MDAzZXRpbWUgPSBkaXZfdTY0KGxlMzJfdG9fY3B1KGNoX2luZm9fZXYuY3ljbGVfY291bnQpLCBjY19mcmVxX2h6KTtcXG4tXFx0XFx0c3VydmV5LVxcdTAwM2V0aW1lX2J1c3kgPSBkaXZfdTY0KGxlMzJfdG9fY3B1KGNoX2luZm9fZXYucnhfY2xlYXJfY291bnQpLFxcbi1cXHRcXHRcXHRcXHRcXHQgICAgY2NfZnJlcV9oeik7XFxuK1xcdFxcdFxcdHN1cnZleS1cXHUwMDNldGltZSA9IGRpdl91NjQobGUzMl90b19jcHUoY2hfaW5mb19ldi5jeWNsZV9jb3VudCksIGNjX2ZyZXFfaHopO1xcbitcXHRcXHRcXHRzdXJ2ZXktXFx1MDAzZXRpbWVfYnVzeSA9IGRpdl91NjQobGUzMl90b19jcHUoY2hfaW5mb19ldi5yeF9jbGVhcl9jb3VudCksXFxuK1xcdFxcdFxcdFxcdFxcdFxcdCAgICBjY19mcmVxX2h6KTtcXG4rXFx0XFx0fVxcbiBcXHR9XFxuIGV4aXQ6XFxuIFxcdHNwaW5fdW5sb2NrX2JoKFxcdTAwMjZhci1cXHUwMDNlZGF0YV9sb2NrKTtcXG5AQCAtNzU4Myw2ICs3NTgzLDcgQEAgYXRoMTJrX3BkZXZfYnNzX2NoYW5faW5mb19ldmVudChzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbiBcXHRzdHJ1Y3Qgd21pX3BkZXZfYnNzX2NoYW5faW5mb19ldmVudCBic3NfY2hfaW5mb19ldiA9IHt9O1xcbiBcXHRzdHJ1Y3Qgc3VydmV5X2luZm8gKnN1cnZleTtcXG4gXFx0c3RydWN0IGF0aDEyayAqYXI7XFxuK1xcdHN0cnVjdCBhdGgxMmtfaHcgKmFoO1xcbiBcXHR1MzIgY2NfZnJlcV9oeiA9IGFiLVxcdTAwM2VjY19mcmVxX2h6O1xcbiBcXHR1NjQgYnVzeSwgdG90YWwsIHR4LCByeCwgcnhfYnNzO1xcbiBcXHRpbnQgaWR4O1xcbkBAIC03NjIzLDI4ICs3NjI0LDMxIEBAIGF0aDEya19wZGV2X2Jzc19jaGFuX2luZm9fZXZlbnQoc3RydWN0IGF0aDEya19iYXNlICphYiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4gXFx0XFx0cmV0dXJuO1xcbiBcXHR9XFxuIFxcbi1cXHRzcGluX2xvY2tfYmgoXFx1MDAyNmFyLVxcdTAwM2VkYXRhX2xvY2spO1xcbi1cXHRpZHggPSBmcmVxX3RvX2lkeChhciwgbGUzMl90b19jcHUoYnNzX2NoX2luZm9fZXYuZnJlcSkpO1xcbi1cXHRpZiAoaWR4IFxcdTAwM2U9IEFSUkFZX1NJWkUoYXItXFx1MDAzZXN1cnZleSkpIHtcXG4rXFx0YWggPSBhdGgxMmtfYXJfdG9fYWgoYXIpO1xcbitcXG4rXFx0aWR4ID0gZnJlcV90b19pZHgoYXRoMTJrX2FyX3RvX2h3KGFyKSwgbGUzMl90b19jcHUoYnNzX2NoX2luZm9fZXYuZnJlcSkpO1xcbitcXHRpZiAoaWR4IFxcdTAwM2U9IEFSUkFZX1NJWkUoYWgtXFx1MDAzZXN1cnZleSkpIHtcXG4gXFx0XFx0YXRoMTJrX3dhcm4oYWIsIFxcXCJic3MgY2hhbiBpbmZvOiBpbnZhbGlkIGZyZXF1ZW5jeSAlZCAoaWR4ICVkIG91dCBvZiBib3VuZHMpXFxcXG5cXFwiLFxcbiBcXHRcXHRcXHQgICAgYnNzX2NoX2luZm9fZXYuZnJlcSwgaWR4KTtcXG4gXFx0XFx0Z290byBleGl0O1xcbiBcXHR9XFxuIFxcbi1cXHRzdXJ2ZXkgPSBcXHUwMDI2YXItXFx1MDAzZXN1cnZleVtpZHhdO1xcbitcXHRzY29wZWRfZ3VhcmQoc3BpbmxvY2tfYmgsIFxcdTAwMjZhaC1cXHUwMDNlc3VydmV5X2xvY2spIHtcXG4rXFx0XFx0c3VydmV5ID0gXFx1MDAyNmFoLVxcdTAwM2VzdXJ2ZXlbaWR4XTtcXG4rXFxuK1xcdFxcdHN1cnZleS1cXHUwMDNlbm9pc2UgPSBsZTMyX3RvX2NwdShic3NfY2hfaW5mb19ldi5ub2lzZV9mbG9vcik7XFxuK1xcdFxcdHN1cnZleS1cXHUwMDNldGltZSA9IGRpdl91NjQodG90YWwsIGNjX2ZyZXFfaHopO1xcbitcXHRcXHRzdXJ2ZXktXFx1MDAzZXRpbWVfYnVzeSA9IGRpdl91NjQoYnVzeSwgY2NfZnJlcV9oeik7XFxuK1xcdFxcdHN1cnZleS1cXHUwMDNldGltZV9yeCA9IGRpdl91NjQocnhfYnNzLCBjY19mcmVxX2h6KTtcXG4rXFx0XFx0c3VydmV5LVxcdTAwM2V0aW1lX3R4ID0gZGl2X3U2NCh0eCwgY2NfZnJlcV9oeik7XFxuK1xcdFxcdHN1cnZleS1cXHUwMDNlZmlsbGVkIHw9IChTVVJWRVlfSU5GT19OT0lTRV9EQk0gfFxcbitcXHRcXHRcXHRcXHQgICBTVVJWRVlfSU5GT19USU1FIHxcXG4rXFx0XFx0XFx0XFx0ICAgU1VSVkVZX0lORk9fVElNRV9CVVNZIHxcXG4rXFx0XFx0XFx0XFx0ICAgU1VSVkVZX0lORk9fVElNRV9SWCB8XFxuK1xcdFxcdFxcdFxcdCAgIFNVUlZFWV9JTkZPX1RJTUVfVFgpO1xcbitcXHR9XFxuIFxcbi1cXHRzdXJ2ZXktXFx1MDAzZW5vaXNlICAgICA9IGxlMzJfdG9fY3B1KGJzc19jaF9pbmZvX2V2Lm5vaXNlX2Zsb29yKTtcXG4tXFx0c3VydmV5LVxcdTAwM2V0aW1lICAgICAgPSBkaXZfdTY0KHRvdGFsLCBjY19mcmVxX2h6KTtcXG4tXFx0c3VydmV5LVxcdTAwM2V0aW1lX2J1c3kgPSBkaXZfdTY0KGJ1c3ksIGNjX2ZyZXFfaHopO1xcbi1cXHRzdXJ2ZXktXFx1MDAzZXRpbWVfcnggICA9IGRpdl91NjQocnhfYnNzLCBjY19mcmVxX2h6KTtcXG4tXFx0c3VydmV5LVxcdTAwM2V0aW1lX3R4ICAgPSBkaXZfdTY0KHR4LCBjY19mcmVxX2h6KTtcXG4tXFx0c3VydmV5LVxcdTAwM2VmaWxsZWQgICB8PSAoU1VSVkVZX0lORk9fTk9JU0VfREJNIHxcXG4tXFx0XFx0XFx0ICAgICBTVVJWRVlfSU5GT19USU1FIHxcXG4tXFx0XFx0XFx0ICAgICBTVVJWRVlfSU5GT19USU1FX0JVU1kgfFxcbi1cXHRcXHRcXHQgICAgIFNVUlZFWV9JTkZPX1RJTUVfUlggfFxcbi1cXHRcXHRcXHQgICAgIFNVUlZFWV9JTkZPX1RJTUVfVFgpO1xcbiBleGl0Olxcbi1cXHRzcGluX3VubG9ja19iaChcXHUwMDI2YXItXFx1MDAzZWRhdGFfbG9jayk7XFxuIFxcdGNvbXBsZXRlKFxcdTAwMjZhci1cXHUwMDNlYnNzX3N1cnZleV9kb25lKTtcXG4gXFxuIFxcdHJjdV9yZWFkX3VubG9jaygpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wM1QxNjoyMjoxMy42MjI0MTMyOVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzE3NzkxMzgxMTQzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgYXRoMTJrIGRyaXZlciwgd2hpY2ggaXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBkcml2ZXIgZm9yIFF1YWxjb21tIFdpLUZpIDcgUENJZS9BSEIgZGV2aWNlcy4gVGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgKG1hYzgwMjExIGNhbGxiYWNrcyBhbmQgV01JIGV2ZW50IGhhbmRsZXJzKSByZXF1aXJlIGEgc3VjY2Vzc2Z1bCBkZXZpY2UgcHJvYmUgYW5kIGZpcm13YXJlIGJvb3Qgc2VxdWVuY2UgKE1ISSwgUU1JLCBXTUkpIHRvIGJlIHJlYWNoYWJsZS4gU2luY2UgdGhlcmUgaXMgbm8gc29mdHdhcmUgZW11bGF0aW9uIGZvciB0aGlzIGhhcmR3YXJlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgR0NFLCB0aGVzZSBjb2RlIHBhdGhzIGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGFuZCBmdXp6LlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA1MTk5MzJmMTUwZGM2MzE1NTVlYmYwNGIzNGRmZmRlMTlhM2Q0YzA1XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBKdWwgMyAxNjoyMjoxMiAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmhcbmluZGV4IDhiZTQzNTUzNWE0ZThiLi42Y2UyZjdiM2ZhNTAxMiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5oXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuaFxuQEAgLTcxMiw3ICs3MTIsNiBAQCBzdHJ1Y3QgYXRoMTJrIHtcbiBcdCAqIGF2b2lkIHJlcG9ydGluZyBnYXJiYWdlIGRhdGEuXG4gXHQgKi9cbiBcdGJvb2wgY2hfaW5mb19jYW5fcmVwb3J0X3N1cnZleTtcbi1cdHN0cnVjdCBzdXJ2ZXlfaW5mbyBzdXJ2ZXlbQVRIMTJLX05VTV9DSEFOU107XG4gXHRzdHJ1Y3QgY29tcGxldGlvbiBic3Nfc3VydmV5X2RvbmU7XG4gXG4gXHRzdHJ1Y3Qgd29ya19zdHJ1Y3QgcmVnZF91cGRhdGVfd29yaztcbkBAIC03NzQsNiArNzczLDExIEBAIHN0cnVjdCBhdGgxMmtfaHcge1xuIFx0ICovXG4gXHRzdHJ1Y3QgbXV0ZXggaHdfbXV0ZXg7XG4gXHRlbnVtIGF0aDEya19od19zdGF0ZSBzdGF0ZTtcbitcbitcdC8qIHByb3RlY3RzIHN1cnZleVtdIHNoYXJlZCBhY3Jvc3MgcmFkaW9zIG9mIHRoaXMgaHcuICovXG4rXHRzcGlubG9ja190IHN1cnZleV9sb2NrO1xuK1x0c3RydWN0IHN1cnZleV9pbmZvIHN1cnZleVtBVEgxMktfTlVNX0NIQU5TXTtcbitcbiBcdGJvb2wgcmVnZF91cGRhdGVkO1xuIFx0Ym9vbCB1c2VfNmdoel9yZWdkO1xuIFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jXG5pbmRleCAyY2ZmOTQ4NWM5NWFmYi4uZGFmOWJjODcyMmRmYmEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jXG5AQCAtMTMzNDgsNTIgKzEzMzQ4LDU0IEBAIGF0aDEya19tYWNfdXBkYXRlX2Jzc19jaGFuX3N1cnZleShzdHJ1Y3QgYXRoMTJrICphcixcbiBpbnQgYXRoMTJrX21hY19vcF9nZXRfc3VydmV5KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LCBpbnQgaWR4LFxuIFx0XHRcdCAgICAgc3RydWN0IHN1cnZleV9pbmZvICpzdXJ2ZXkpXG4ge1xuK1x0c3RydWN0IGF0aDEya19odyAqYWggPSBody1cdTAwM2Vwcml2O1xuIFx0c3RydWN0IGF0aDEyayAqYXI7XG4gXHRzdHJ1Y3QgaWVlZTgwMjExX3N1cHBvcnRlZF9iYW5kICpzYmFuZDtcbi1cdHN0cnVjdCBzdXJ2ZXlfaW5mbyAqYXJfc3VydmV5O1xuK1x0c3RydWN0IHN1cnZleV9pbmZvICphaF9zdXJ2ZXk7XG4rXHRpbnQgc2JhbmRfaWR4ID0gaWR4O1xuIFxuIFx0bG9ja2RlcF9hc3NlcnRfd2lwaHkoaHctXHUwMDNld2lwaHkpO1xuIFxuLVx0aWYgKGlkeCBcdTAwM2U9IEFUSDEyS19OVU1fQ0hBTlMpXG4rXHRpZiAoc2JhbmRfaWR4IFx1MDAzZT0gQVRIMTJLX05VTV9DSEFOUylcbiBcdFx0cmV0dXJuIC1FTk9FTlQ7XG4gXG4gXHRzYmFuZCA9IGh3LVx1MDAzZXdpcGh5LVx1MDAzZWJhbmRzW05MODAyMTFfQkFORF8yR0haXTtcbi1cdGlmIChzYmFuZCBcdTAwMjZcdTAwMjYgaWR4IFx1MDAzZT0gc2JhbmQtXHUwMDNlbl9jaGFubmVscykge1xuLVx0XHRpZHggLT0gc2JhbmQtXHUwMDNlbl9jaGFubmVscztcbitcdGlmIChzYmFuZCBcdTAwMjZcdTAwMjYgc2JhbmRfaWR4IFx1MDAzZT0gc2JhbmQtXHUwMDNlbl9jaGFubmVscykge1xuK1x0XHRzYmFuZF9pZHggLT0gc2JhbmQtXHUwMDNlbl9jaGFubmVscztcbiBcdFx0c2JhbmQgPSBOVUxMO1xuIFx0fVxuIFxuIFx0aWYgKCFzYmFuZClcbiBcdFx0c2JhbmQgPSBody1cdTAwM2V3aXBoeS1cdTAwM2ViYW5kc1tOTDgwMjExX0JBTkRfNUdIWl07XG4tXHRpZiAoc2JhbmQgXHUwMDI2XHUwMDI2IGlkeCBcdTAwM2U9IHNiYW5kLVx1MDAzZW5fY2hhbm5lbHMpIHtcbi1cdFx0aWR4IC09IHNiYW5kLVx1MDAzZW5fY2hhbm5lbHM7XG4rXHRpZiAoc2JhbmQgXHUwMDI2XHUwMDI2IHNiYW5kX2lkeCBcdTAwM2U9IHNiYW5kLVx1MDAzZW5fY2hhbm5lbHMpIHtcbitcdFx0c2JhbmRfaWR4IC09IHNiYW5kLVx1MDAzZW5fY2hhbm5lbHM7XG4gXHRcdHNiYW5kID0gTlVMTDtcbiBcdH1cbiBcbiBcdGlmICghc2JhbmQpXG4gXHRcdHNiYW5kID0gaHctXHUwMDNld2lwaHktXHUwMDNlYmFuZHNbTkw4MDIxMV9CQU5EXzZHSFpdO1xuIFxuLVx0aWYgKCFzYmFuZCB8fCBpZHggXHUwMDNlPSBzYmFuZC1cdTAwM2VuX2NoYW5uZWxzKVxuK1x0aWYgKCFzYmFuZCB8fCBzYmFuZF9pZHggXHUwMDNlPSBzYmFuZC1cdTAwM2VuX2NoYW5uZWxzKVxuIFx0XHRyZXR1cm4gLUVOT0VOVDtcbiBcbi1cdGFyID0gYXRoMTJrX21hY19nZXRfYXJfYnlfY2hhbihodywgXHUwMDI2c2JhbmQtXHUwMDNlY2hhbm5lbHNbaWR4XSk7XG4rXHRhciA9IGF0aDEya19tYWNfZ2V0X2FyX2J5X2NoYW4oaHcsIFx1MDAyNnNiYW5kLVx1MDAzZWNoYW5uZWxzW3NiYW5kX2lkeF0pO1xuIFx0aWYgKCFhcikge1xuLVx0XHRpZiAoc2JhbmQtXHUwMDNlY2hhbm5lbHNbaWR4XS5mbGFncyBcdTAwMjYgSUVFRTgwMjExX0NIQU5fRElTQUJMRUQpIHtcbitcdFx0aWYgKHNiYW5kLVx1MDAzZWNoYW5uZWxzW3NiYW5kX2lkeF0uZmxhZ3MgXHUwMDI2IElFRUU4MDIxMV9DSEFOX0RJU0FCTEVEKSB7XG4gXHRcdFx0bWVtc2V0KHN1cnZleSwgMCwgc2l6ZW9mKCpzdXJ2ZXkpKTtcbiBcdFx0XHRyZXR1cm4gMDtcbiBcdFx0fVxuIFx0XHRyZXR1cm4gLUVOT0VOVDtcbiBcdH1cbiBcbi1cdGFyX3N1cnZleSA9IFx1MDAyNmFyLVx1MDAzZXN1cnZleVtpZHhdO1xuK1x0YWhfc3VydmV5ID0gXHUwMDI2YWgtXHUwMDNlc3VydmV5W2lkeF07XG4gXG4tXHRhdGgxMmtfbWFjX3VwZGF0ZV9ic3NfY2hhbl9zdXJ2ZXkoYXIsIFx1MDAyNnNiYW5kLVx1MDAzZWNoYW5uZWxzW2lkeF0pO1xuK1x0YXRoMTJrX21hY191cGRhdGVfYnNzX2NoYW5fc3VydmV5KGFyLCBcdTAwMjZzYmFuZC1cdTAwM2VjaGFubmVsc1tzYmFuZF9pZHhdKTtcbiBcbi1cdHNwaW5fbG9ja19iaChcdTAwMjZhci1cdTAwM2VkYXRhX2xvY2spO1xuLVx0bWVtY3B5KHN1cnZleSwgYXJfc3VydmV5LCBzaXplb2YoKnN1cnZleSkpO1xuLVx0c3Bpbl91bmxvY2tfYmgoXHUwMDI2YXItXHUwMDNlZGF0YV9sb2NrKTtcbitcdHNjb3BlZF9ndWFyZChzcGlubG9ja19iaCwgXHUwMDI2YWgtXHUwMDNlc3VydmV5X2xvY2spIHtcbitcdFx0bWVtY3B5KHN1cnZleSwgYWhfc3VydmV5LCBzaXplb2YoKnN1cnZleSkpO1xuK1x0fVxuIFxuLVx0c3VydmV5LVx1MDAzZWNoYW5uZWwgPSBcdTAwMjZzYmFuZC1cdTAwM2VjaGFubmVsc1tpZHhdO1xuK1x0c3VydmV5LVx1MDAzZWNoYW5uZWwgPSBcdTAwMjZzYmFuZC1cdTAwM2VjaGFubmVsc1tzYmFuZF9pZHhdO1xuIFxuIFx0aWYgKGFyLVx1MDAzZXJ4X2NoYW5uZWwgPT0gc3VydmV5LVx1MDAzZWNoYW5uZWwpXG4gXHRcdHN1cnZleS1cdTAwM2VmaWxsZWQgfD0gU1VSVkVZX0lORk9fSU5fVVNFO1xuQEAgLTE1MDU1LDYgKzE1MDU3LDcgQEAgc3RhdGljIHN0cnVjdCBhdGgxMmtfaHcgKmF0aDEya19tYWNfaHdfYWxsb2NhdGUoc3RydWN0IGF0aDEya19od19ncm91cCAqYWcsXG4gXG4gXHRtdXRleF9pbml0KFx1MDAyNmFoLVx1MDAzZWh3X211dGV4KTtcbiBcbitcdHNwaW5fbG9ja19pbml0KFx1MDAyNmFoLVx1MDAzZXN1cnZleV9sb2NrKTtcbiBcdHNwaW5fbG9ja19pbml0KFx1MDAyNmFoLVx1MDAzZWRwX2h3LnBlZXJfbG9jayk7XG4gXHRJTklUX0xJU1RfSEVBRChcdTAwMjZhaC1cdTAwM2VkcF9ody5kcF9wZWVyc19saXN0KTtcbiBcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuY1xuaW5kZXggYjVlOTA0YTU1YWVhYmIuLjNmMzczMGE2YzJhYzI3IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuY1xuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuY1xuQEAgLTY2MTcsMTYgKzY2MTcsMTIgQEAgc3RhdGljIGludCBhdGgxMmtfcHVsbF9yb2FtX2V2KHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIsIHN0cnVjdCBza19idWZmICpza2IsXG4gXHRyZXR1cm4gMDtcbiB9XG4gXG4tc3RhdGljIGludCBmcmVxX3RvX2lkeChzdHJ1Y3QgYXRoMTJrICphciwgaW50IGZyZXEpXG4rc3RhdGljIGludCBmcmVxX3RvX2lkeChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywgaW50IGZyZXEpXG4ge1xuIFx0c3RydWN0IGllZWU4MDIxMV9zdXBwb3J0ZWRfYmFuZCAqc2JhbmQ7XG4tXHRzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyA9IGF0aDEya19hcl90b19odyhhcik7XG4gXHRpbnQgYmFuZCwgY2gsIGlkeCA9IDA7XG4gXG4gXHRmb3IgKGJhbmQgPSBOTDgwMjExX0JBTkRfMkdIWjsgYmFuZCBcdTAwM2MgTlVNX05MODAyMTFfQkFORFM7IGJhbmQrKykge1xuLVx0XHRpZiAoIWFyLVx1MDAzZW1hYy5zYmFuZHNbYmFuZF0uY2hhbm5lbHMpXG4tXHRcdFx0Y29udGludWU7XG4tXG4gXHRcdHNiYW5kID0gaHctXHUwMDNld2lwaHktXHUwMDNlYmFuZHNbYmFuZF07XG4gXHRcdGlmICghc2JhbmQpXG4gXHRcdFx0Y29udGludWU7XG5AQCAtNzUwNyw2ICs3NTAzLDcgQEAgc3RhdGljIHZvaWQgYXRoMTJrX2NoYW5faW5mb19ldmVudChzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuIHtcbiBcdHN0cnVjdCB3bWlfY2hhbl9pbmZvX2V2ZW50IGNoX2luZm9fZXYgPSB7fTtcbiBcdHN0cnVjdCBhdGgxMmsgKmFyO1xuK1x0c3RydWN0IGF0aDEya19odyAqYWg7XG4gXHRzdHJ1Y3Qgc3VydmV5X2luZm8gKnN1cnZleTtcbiBcdGludCBpZHg7XG4gXHQvKiBIVyBjaGFubmVsIGNvdW50ZXJzIGZyZXF1ZW5jeSB2YWx1ZSBpbiBoZXJ0eiAqL1xuQEAgLTc1MzgsNiArNzUzNSw3IEBAIHN0YXRpYyB2b2lkIGF0aDEya19jaGFuX2luZm9fZXZlbnQoc3RydWN0IGF0aDEya19iYXNlICphYiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbiBcdFx0cmV0dXJuO1xuIFx0fVxuIFx0c3Bpbl9sb2NrX2JoKFx1MDAyNmFyLVx1MDAzZWRhdGFfbG9jayk7XG4rXHRhaCA9IGF0aDEya19hcl90b19haChhcik7XG4gXG4gXHRzd2l0Y2ggKGFyLVx1MDAzZXNjYW4uc3RhdGUpIHtcbiBcdGNhc2UgQVRIMTJLX1NDQU5fSURMRTpcbkBAIC03NTQ5LDggKzc1NDcsOCBAQCBzdGF0aWMgdm9pZCBhdGgxMmtfY2hhbl9pbmZvX2V2ZW50KHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIsIHN0cnVjdCBza19idWZmICpza2IpXG4gXHRcdGJyZWFrO1xuIFx0fVxuIFxuLVx0aWR4ID0gZnJlcV90b19pZHgoYXIsIGxlMzJfdG9fY3B1KGNoX2luZm9fZXYuZnJlcSkpO1xuLVx0aWYgKGlkeCBcdTAwM2U9IEFSUkFZX1NJWkUoYXItXHUwMDNlc3VydmV5KSkge1xuK1x0aWR4ID0gZnJlcV90b19pZHgoYXRoMTJrX2FyX3RvX2h3KGFyKSwgbGUzMl90b19jcHUoY2hfaW5mb19ldi5mcmVxKSk7XG4rXHRpZiAoaWR4IFx1MDAzZT0gQVJSQVlfU0laRShhaC1cdTAwM2VzdXJ2ZXkpKSB7XG4gXHRcdGF0aDEya193YXJuKGFiLCBcImNoYW4gaW5mbzogaW52YWxpZCBmcmVxdWVuY3kgJWQgKGlkeCAlZCBvdXQgb2YgYm91bmRzKVxcblwiLFxuIFx0XHRcdCAgICBjaF9pbmZvX2V2LmZyZXEsIGlkeCk7XG4gXHRcdGdvdG8gZXhpdDtcbkBAIC03NTYzLDE0ICs3NTYxLDE2IEBAIHN0YXRpYyB2b2lkIGF0aDEya19jaGFuX2luZm9fZXZlbnQoc3RydWN0IGF0aDEya19iYXNlICphYiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbiBcdFx0Y2NfZnJlcV9oeiA9IChsZTMyX3RvX2NwdShjaF9pbmZvX2V2Lm1hY19jbGtfbWh6KSAqIDEwMDApO1xuIFxuIFx0aWYgKGNoX2luZm9fZXYuY21kX2ZsYWdzID09IFdNSV9DSEFOX0lORk9fU1RBUlRfUkVTUCkge1xuLVx0XHRzdXJ2ZXkgPSBcdTAwMjZhci1cdTAwM2VzdXJ2ZXlbaWR4XTtcbi1cdFx0bWVtc2V0KHN1cnZleSwgMCwgc2l6ZW9mKCpzdXJ2ZXkpKTtcbi1cdFx0c3VydmV5LVx1MDAzZW5vaXNlID0gbGUzMl90b19jcHUoY2hfaW5mb19ldi5ub2lzZV9mbG9vcik7XG4tXHRcdHN1cnZleS1cdTAwM2VmaWxsZWQgPSBTVVJWRVlfSU5GT19OT0lTRV9EQk0gfCBTVVJWRVlfSU5GT19USU1FIHxcbitcdFx0c2NvcGVkX2d1YXJkKHNwaW5sb2NrX2JoLCBcdTAwMjZhaC1cdTAwM2VzdXJ2ZXlfbG9jaykge1xuK1x0XHRcdHN1cnZleSA9IFx1MDAyNmFoLVx1MDAzZXN1cnZleVtpZHhdO1xuK1x0XHRcdG1lbXNldChzdXJ2ZXksIDAsIHNpemVvZigqc3VydmV5KSk7XG4rXHRcdFx0c3VydmV5LVx1MDAzZW5vaXNlID0gbGUzMl90b19jcHUoY2hfaW5mb19ldi5ub2lzZV9mbG9vcik7XG4rXHRcdFx0c3VydmV5LVx1MDAzZWZpbGxlZCA9IFNVUlZFWV9JTkZPX05PSVNFX0RCTSB8IFNVUlZFWV9JTkZPX1RJTUUgfFxuIFx0XHRcdFx0IFNVUlZFWV9JTkZPX1RJTUVfQlVTWTtcbi1cdFx0c3VydmV5LVx1MDAzZXRpbWUgPSBkaXZfdTY0KGxlMzJfdG9fY3B1KGNoX2luZm9fZXYuY3ljbGVfY291bnQpLCBjY19mcmVxX2h6KTtcbi1cdFx0c3VydmV5LVx1MDAzZXRpbWVfYnVzeSA9IGRpdl91NjQobGUzMl90b19jcHUoY2hfaW5mb19ldi5yeF9jbGVhcl9jb3VudCksXG4tXHRcdFx0XHRcdCAgICBjY19mcmVxX2h6KTtcbitcdFx0XHRzdXJ2ZXktXHUwMDNldGltZSA9IGRpdl91NjQobGUzMl90b19jcHUoY2hfaW5mb19ldi5jeWNsZV9jb3VudCksIGNjX2ZyZXFfaHopO1xuK1x0XHRcdHN1cnZleS1cdTAwM2V0aW1lX2J1c3kgPSBkaXZfdTY0KGxlMzJfdG9fY3B1KGNoX2luZm9fZXYucnhfY2xlYXJfY291bnQpLFxuK1x0XHRcdFx0XHRcdCAgICBjY19mcmVxX2h6KTtcbitcdFx0fVxuIFx0fVxuIGV4aXQ6XG4gXHRzcGluX3VubG9ja19iaChcdTAwMjZhci1cdTAwM2VkYXRhX2xvY2spO1xuQEAgLTc1ODMsNiArNzU4Myw3IEBAIGF0aDEya19wZGV2X2Jzc19jaGFuX2luZm9fZXZlbnQoc3RydWN0IGF0aDEya19iYXNlICphYiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbiBcdHN0cnVjdCB3bWlfcGRldl9ic3NfY2hhbl9pbmZvX2V2ZW50IGJzc19jaF9pbmZvX2V2ID0ge307XG4gXHRzdHJ1Y3Qgc3VydmV5X2luZm8gKnN1cnZleTtcbiBcdHN0cnVjdCBhdGgxMmsgKmFyO1xuK1x0c3RydWN0IGF0aDEya19odyAqYWg7XG4gXHR1MzIgY2NfZnJlcV9oeiA9IGFiLVx1MDAzZWNjX2ZyZXFfaHo7XG4gXHR1NjQgYnVzeSwgdG90YWwsIHR4LCByeCwgcnhfYnNzO1xuIFx0aW50IGlkeDtcbkBAIC03NjIzLDI4ICs3NjI0LDMxIEBAIGF0aDEya19wZGV2X2Jzc19jaGFuX2luZm9fZXZlbnQoc3RydWN0IGF0aDEya19iYXNlICphYiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbiBcdFx0cmV0dXJuO1xuIFx0fVxuIFxuLVx0c3Bpbl9sb2NrX2JoKFx1MDAyNmFyLVx1MDAzZWRhdGFfbG9jayk7XG4tXHRpZHggPSBmcmVxX3RvX2lkeChhciwgbGUzMl90b19jcHUoYnNzX2NoX2luZm9fZXYuZnJlcSkpO1xuLVx0aWYgKGlkeCBcdTAwM2U9IEFSUkFZX1NJWkUoYXItXHUwMDNlc3VydmV5KSkge1xuK1x0YWggPSBhdGgxMmtfYXJfdG9fYWgoYXIpO1xuK1xuK1x0aWR4ID0gZnJlcV90b19pZHgoYXRoMTJrX2FyX3RvX2h3KGFyKSwgbGUzMl90b19jcHUoYnNzX2NoX2luZm9fZXYuZnJlcSkpO1xuK1x0aWYgKGlkeCBcdTAwM2U9IEFSUkFZX1NJWkUoYWgtXHUwMDNlc3VydmV5KSkge1xuIFx0XHRhdGgxMmtfd2FybihhYiwgXCJic3MgY2hhbiBpbmZvOiBpbnZhbGlkIGZyZXF1ZW5jeSAlZCAoaWR4ICVkIG91dCBvZiBib3VuZHMpXFxuXCIsXG4gXHRcdFx0ICAgIGJzc19jaF9pbmZvX2V2LmZyZXEsIGlkeCk7XG4gXHRcdGdvdG8gZXhpdDtcbiBcdH1cbiBcbi1cdHN1cnZleSA9IFx1MDAyNmFyLVx1MDAzZXN1cnZleVtpZHhdO1xuK1x0c2NvcGVkX2d1YXJkKHNwaW5sb2NrX2JoLCBcdTAwMjZhaC1cdTAwM2VzdXJ2ZXlfbG9jaykge1xuK1x0XHRzdXJ2ZXkgPSBcdTAwMjZhaC1cdTAwM2VzdXJ2ZXlbaWR4XTtcbitcbitcdFx0c3VydmV5LVx1MDAzZW5vaXNlID0gbGUzMl90b19jcHUoYnNzX2NoX2luZm9fZXYubm9pc2VfZmxvb3IpO1xuK1x0XHRzdXJ2ZXktXHUwMDNldGltZSA9IGRpdl91NjQodG90YWwsIGNjX2ZyZXFfaHopO1xuK1x0XHRzdXJ2ZXktXHUwMDNldGltZV9idXN5ID0gZGl2X3U2NChidXN5LCBjY19mcmVxX2h6KTtcbitcdFx0c3VydmV5LVx1MDAzZXRpbWVfcnggPSBkaXZfdTY0KHJ4X2JzcywgY2NfZnJlcV9oeik7XG4rXHRcdHN1cnZleS1cdTAwM2V0aW1lX3R4ID0gZGl2X3U2NCh0eCwgY2NfZnJlcV9oeik7XG4rXHRcdHN1cnZleS1cdTAwM2VmaWxsZWQgfD0gKFNVUlZFWV9JTkZPX05PSVNFX0RCTSB8XG4rXHRcdFx0XHQgICBTVVJWRVlfSU5GT19USU1FIHxcbitcdFx0XHRcdCAgIFNVUlZFWV9JTkZPX1RJTUVfQlVTWSB8XG4rXHRcdFx0XHQgICBTVVJWRVlfSU5GT19USU1FX1JYIHxcbitcdFx0XHRcdCAgIFNVUlZFWV9JTkZPX1RJTUVfVFgpO1xuK1x0fVxuIFxuLVx0c3VydmV5LVx1MDAzZW5vaXNlICAgICA9IGxlMzJfdG9fY3B1KGJzc19jaF9pbmZvX2V2Lm5vaXNlX2Zsb29yKTtcbi1cdHN1cnZleS1cdTAwM2V0aW1lICAgICAgPSBkaXZfdTY0KHRvdGFsLCBjY19mcmVxX2h6KTtcbi1cdHN1cnZleS1cdTAwM2V0aW1lX2J1c3kgPSBkaXZfdTY0KGJ1c3ksIGNjX2ZyZXFfaHopO1xuLVx0c3VydmV5LVx1MDAzZXRpbWVfcnggICA9IGRpdl91NjQocnhfYnNzLCBjY19mcmVxX2h6KTtcbi1cdHN1cnZleS1cdTAwM2V0aW1lX3R4ICAgPSBkaXZfdTY0KHR4LCBjY19mcmVxX2h6KTtcbi1cdHN1cnZleS1cdTAwM2VmaWxsZWQgICB8PSAoU1VSVkVZX0lORk9fTk9JU0VfREJNIHxcbi1cdFx0XHQgICAgIFNVUlZFWV9JTkZPX1RJTUUgfFxuLVx0XHRcdCAgICAgU1VSVkVZX0lORk9fVElNRV9CVVNZIHxcbi1cdFx0XHQgICAgIFNVUlZFWV9JTkZPX1RJTUVfUlggfFxuLVx0XHRcdCAgICAgU1VSVkVZX0lORk9fVElNRV9UWCk7XG4gZXhpdDpcbi1cdHNwaW5fdW5sb2NrX2JoKFx1MDAyNmFyLVx1MDAzZWRhdGFfbG9jayk7XG4gXHRjb21wbGV0ZShcdTAwMjZhci1cdTAwM2Vic3Nfc3VydmV5X2RvbmUpO1xuIFxuIFx0cmN1X3JlYWRfdW5sb2NrKCk7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wM1QxNjoyMjoxMy42MjI0MTQ1NVoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjc5OTkzMTE1NDgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqUmVhY2hpbmcgdGhlIEF0aDEyayBTdXJ2ZXkgUGF0Y2ggaW4gYSBWaXJ0dWFsaXplZCBFbnZpcm9ubWVudCoqXG5cbk9rYXksIHNvIHdlJ3ZlIGdvdCB0aGlzIHBhdGNoIHRoYXQgcmUtb3JnYW5pemVzIHRoZSBgc3VydmV5YCBhcnJheSBhbmQgaXRzIGFzc29jaWF0ZWQgbG9jayB3aXRoaW4gdGhlIGBhdGgxMmtgIGRyaXZlci4gSXQgbW92ZXMgdGhlIGRhdGEgZnJvbSB0aGUgcGVyLXJhZGlvIGBhdGgxMmtgIHN0cnVjdCB0byB0aGUgcGVyLWhhcmR3YXJlIGBhdGgxMmtfaHdgIHN0cnVjdC4gVGhpcyBhZmZlY3RzIHNldmVyYWwgZnVuY3Rpb25zOiBgYXRoMTJrX21hY19vcF9nZXRfc3VydmV5YCwgYGF0aDEya19tYWNfaHdfYWxsb2NhdGVgLCBgYXRoMTJrX2NoYW5faW5mb19ldmVudGAsIGBhdGgxMmtfcGRldl9ic3NfY2hhbl9pbmZvX2V2ZW50YCwgYW5kIGBmcmVxX3RvX2lkeGAuIE15IGltbWVkaWF0ZSBjb25jZXJuIGlzIHdoZXRoZXIgdGhpcyBpcyBldmVuICp0ZXN0YWJsZSogaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4gVGhpcyBpcyB0aGUgYGF0aDEya2AgZHJpdmVyLCB3aGljaCwgYXMgSSByZWNhbGwsIGlzIGZvciBRdWFsY29tbSBXaS1GaSA3IGRldmljZXMsIHNwZWNpZmljYWxseSBQQ0llL0FIQiBiYXNlZC5cblxuVGhlIHF1ZXN0aW9uIHRoZW4gYmVjb21lczogY2FuIHdlIGVtdWxhdGUgdGhpcz8gSSBkb24ndCBiZWxpZXZlIHRoZXJlJ3MgYW55IGVzdGFibGlzaGVkIFFFTVUgZW11bGF0aW9uIGZvciBgYXRoMTJrYCBpdHNlbGYuIFN1cmUsIGBtYWM4MDIxMV9od3NpbWAgZXhpc3RzLCBidXQgdGhhdCdzIGEgZ2VuZXJpYyBNQUM4MDIxMSBlbXVsYXRpb24sIG5vdCBzcGVjaWZpY2FsbHkgZm9yIGEgaGFyZHdhcmUgZHJpdmVyLiBXZSdyZSB0YWxraW5nIGFib3V0IGEgdmVyeSBzcGVjaWZpYyBwaWVjZSBvZiBoYXJkd2FyZS4gSSBjYW4ndCB0aGluayBvZiBhbnkgb2J2aW91cyBzb2Z0d2FyZSBlbXVsYXRpb24gcm91dGUsIG5vIFVTQiBnYWRnZXQgdHJpY2tzIGhlcmUgc2luY2UgaXQncyBQQ0llL0FIQi5cblxuQnV0IHdhaXQsIHRoZXJlJ3Mgc3l6a2FsbGVyISBJdCBjYW4gZnV6eiBQQ0kgZGV2aWNlcyB1c2luZyB2UENJLCAqaWYqIHN1cHBvcnRlZC4gVGhlIHVzdWFsIGNhdmVhdHMgYXBwbHk7IG1vc3Qgc3BlY2lmaWMgV2ktRmkgZHJpdmVycyBhcmVuJ3QgdHlwaWNhbGx5IGZ1enplZCB1bmxlc3MgdGhleSdyZSBVU0Igb3IgdmlydGlvLiBJcyBgYXRoMTJrYCBhIGNhbmRpZGF0ZSBmb3Igc3l6a2FsbGVyIGZ1enppbmc/IEknZCBuZWVkIHRvIGNoZWNrIGlmIHRoZXJlIGFyZSBzeXpib3QgcmVwb3J0cyByZWxhdGVkIHRvIGBhdGgxMmtgLCB0aG91Z2ggSSBjYW4ndCBjaGVjayB0aGF0IGltbWVkaWF0ZWx5LiBCdXQsIEkgKmRvKiBrbm93IHN5emthbGxlciBoYXMgYSBQQ0kgZnV6emVyLCB1c2luZyB0aGluZ3MgbGlrZSBgdmhjaWAgb3IgYHZmaW9gLlxuXG5Ib3dldmVyLCB0aGUgbWFpbiBwcm9tcHQgc3RpcHVsYXRlcyB0aGF0IHdlIG5lZWQgdG8gY29uc2lkZXIgY29kZSBwYXRocyB1bnJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBzZXR1cHMgbGlrZSBHQ0Ugb3IgUUVNVSwgZXZlbiB3aXRoIHNvZnR3YXJlIGVtdWxhdGlvbiBsaWtlIGB1c2IgZ2FkZ2V0YCBvciBgbWFjODAyMTFfaHdzaW1gLiBJcyBgYXRoMTJrYCByZWFsaXN0aWNhbGx5IHJlYWNoYWJsZSBnaXZlbiB0aGF0IGNvbnN0cmFpbnQ/IEkgbmVlZCB0byBjbGFyaWZ5IGlmIHRoaXMgZHJpdmVyIGNhbiBiZSB0ZXN0ZWQuIFRpbWUgdG8gZG91YmxlLWNoZWNrIHRoZSBgS2NvbmZpZ2AgZmlsZSBpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnYC5cblxuXG4iLCJJbnB1dFRva2VucyI6NTM1MiwiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ2NiwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAzVDE2OjIyOjIxLjYyMTcyODA2OFoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NzI3NzQzNywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgQVRIMTJLXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UtQ2xlYXJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWc6Mjpjb25maWcgQVRIMTJLXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnLTMtXFx0dHJpc3RhdGUgXFxcIlF1YWxjb21tIFRlY2hub2xvZ2llcyBXaS1GaSA3IHN1cHBvcnQgKGF0aDEyaylcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWctMTYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnOjE3OmNvbmZpZyBBVEgxMktfQUhCXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnLTE4LVxcdGJvb2wgXFxcIlFUSSBhdGgxMmsgQUhCIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWctMjQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnOjI1OmNvbmZpZyBBVEgxMktfREVCVUdcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWctMjYtXFx0Ym9vbCBcXFwiYXRoMTJrIGRlYnVnZ2luZ1xcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZy0zNC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWc6MzU6Y29uZmlnIEFUSDEyS19ERUJVR0ZTXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnLTM2LVxcdGJvb2wgXFxcIlFUSSBhdGgxMmsgZGVidWdmcyBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnLTQzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZzo0NDpjb25maWcgQVRIMTJLX1RSQUNJTkdcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWctNDUtXFx0Ym9vbCBcXFwiYXRoMTJrIHRyYWNpbmcgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZy01Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWc6NTM6Y29uZmlnIEFUSDEyS19DT1JFRFVNUFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZy01NC1cXHRib29sIFxcXCJhdGgxMmsgY29yZWR1bXBcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAzVDE2OjIyOjIxLjY3OTAxMDY5NloiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI5NjE1Mjk0MDk1MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEZ1enphYmlsaXR5IG9mIHRoZSBRdWFsY29tbSBXaS1GaSA3IERyaXZlcioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgZHJpdmVyLCBzcGVjaWZpY2FsbHkgZm9yIFF1YWxjb21tJ3MgV2ktRmkgNyBoYXJkd2FyZS4gRmlyc3QsIEkgbmVlZCB0byBrbm93OiBpcyB0aGVyZSBhbnkgc29mdHdhcmUgZW11bGF0aW9uIGF2YWlsYWJsZSBmb3IgaXQ/IE5vLiBUaGF0J3MgYSBodWdlIGh1cmRsZS4gQ2FuIEkgZnV6eiBpdCB0aHJvdWdoIFBDSSBmdXp6aW5nIHRoZW4/IFN5emthbGxlciBkb2VzIGhhdmUgUENJIGZ1enppbmcgY2FwYWJpbGl0aWVzLCB3aGljaCBpcyBwcm9taXNpbmcuIEJ1dCBpcyBpdCBjb25zaWRlcmVkIFwiaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHNcIj9cblxuVXN1YWxseSwgdGhlc2UgaGFyZHdhcmUtc3BlY2lmaWMgZHJpdmVycyBsaWtlIGF0aDExaywgYXRoMTJrLCBvciBpd2x3aWZpIGFyZSB0cmlja3kgdG8gZnV6eiB1bmxlc3MgdGhlcmUgaXMgYW4gZW11bGF0b3Igb3IgdW5sZXNzIHRoZSBQQ0kgZnV6emluZyBpcyBleHRyZW1lbHkgZWZmZWN0aXZlLiBTeXprYWxsZXIncyBQQ0kgZnV6emluZyB3b3JrcyBieSBpbmplY3RpbmcgUENJIGNvbmZpZyBzcGFjZSBhbmQgTU1JTyByZWFkcy93cml0ZXMuXG5cbldhaXQsIHRoZSBjb2RlIG1lbnRpb25zIGBhdGgxMmtgIHdoaWNoIHVzZXMgYG1hYzgwMjExYC4gVGhlIHBhdGNoIHNwZWNpZmljYWxseSBtb2RpZmllcyBgYXRoMTJrX21hY19vcF9nZXRfc3VydmV5YCwgd2hpY2ggaXMgYSBjYWxsYmFjayBmb3IgYG1hYzgwMjExYCAoYGdldF9zdXJ2ZXlgKS4gSXQgYWxzbyBtb2RpZmllcyBgYXRoMTJrX2NoYW5faW5mb19ldmVudGAgYW5kIGBhdGgxMmtfcGRldl9ic3NfY2hhbl9pbmZvX2V2ZW50YCwgd2hpY2ggYXJlIFdNSSBldmVudCBoYW5kbGVycy4gT2theSwgV01JIGV2ZW50cyBjb21lIGZyb20gdGhlIGZpcm13YXJlLCB0aGF0J3MgY3J1Y2lhbC4gU2luY2UgdGhlcmUgaXMgbm8gZmlybXdhcmUgcnVubmluZyBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50LCB1bmxlc3MgZW11bGF0ZWQsIHRoZSBmaXJtd2FyZSB3b24ndCBzZW5kIHRob3NlIFdNSSBldmVudHMuXG5cbldhaXQgYSBtaW51dGUsIGV2ZW4gaWYgUENJIGZ1enppbmcgaW5qZWN0cyByYW5kb20gZGF0YSBpbnRvIE1NSU8sIHRoZSBkcml2ZXIgZXhwZWN0cyBhIGNvbXBsZXggZmlybXdhcmUgYm9vdCBzZXF1ZW5jZSAoUU1JLCBNSEksIFdNSSkuIEl0J3MgaGlnaGx5IHVubGlrZWx5IHRvIHJlYWNoIHRoZXNlIFdNSSBldmVudCBoYW5kbGVycyBvciBldmVuIHN1Y2Nlc3NmdWxseSByZWdpc3RlciB0aGUgbWFjODAyMTEgZGV2aWNlIHdpdGhvdXQgYSByZWFsIGZpcm13YXJlIG9yIGEgZ29vZCBlbXVsYXRvci5cblxuU28sIGxldCdzIGRyaWxsIGRvd24gc3BlY2lmaWNhbGx5IHRvIGBhdGgxMmtgIGFuZCBzZWUgaWYgaXQncyBmdXp6YWJsZSBpbiBvdXIgY3VycmVudCBzZXR1cC4gVGhlIHByb21wdCBzYXlzOiBcIlJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6IC4uLiBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cIiBTaW5jZSBgYXRoMTJrYCByZWxpZXMgb24gcmVhbCBoYXJkd2FyZSBvciBhIGNvbXBsZXggZW11bGF0b3IgdGhhdCBkb2Vzbid0IGV4aXN0IGluIFFFTVUgb3IgR0NFLCBpdCdzIGltcG9zc2libGUgdG8gcmVhY2ggdGhlc2UgY29kZSBwYXRocyEgVGhhdCdzIGl0LlxuXG5MZXQgbWUganVzdCBkb3VibGUtY2hlY2ssIHRob3VnaCwgbWF5YmUgSSdtIG1pc3Npbmcgc29tZXRoaW5nLCBpcyB0aGVyZSBhbnkgdGVzdCBtb2RlIG9yIHNpbSBtb2RlIHdpdGhpbiBgYXRoMTJrYD8gSSBzaG91bGQgbm90IGFzc3VtZSwgSSB3aWxsIGNoZWNrLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2OTA4LCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDU1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAzVDE2OjI3OjE3LjgzMTk1MzUzNloiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4OTg3MjA5ODYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic2ltXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5oPTQ4OD1zdHJ1Y3QgYXRoMTJrX2xpbmtfc3RhIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5oLTQ5MS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuaDo0OTI6XFx0LyogbGluayBhZGRyZXNzIHNpbWlsYXIgdG8gaWVlZTgwMjExX2xpbmtfc3RhICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmgtNDkzLVxcdHU4IGFkZHJbRVRIX0FMRU5dO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmMtMTItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmM6MTM6c3RhdGljIHNzaXplX3QgYXRoMTJrX3dyaXRlX3NpbXVsYXRlX3JhZGFyKHN0cnVjdCBmaWxlICpmaWxlLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jLTE0LVxcdFxcdFxcdFxcdFxcdCAgIGNvbnN0IGNoYXIgX191c2VyICp1c2VyX2J1ZixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jLTIwLVxcdHdpcGh5X2xvY2soYXRoMTJrX2FyX3RvX2h3KGFyKS1cXHUwMDNld2lwaHkpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jOjIxOlxcdHJldCA9IGF0aDEya193bWlfc2ltdWxhdGVfcmFkYXIoYXIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jLTIyLVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYy0zMC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYzozMTpzdGF0aWMgY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBmb3BzX3NpbXVsYXRlX3JhZGFyID0ge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jOjMyOlxcdC53cml0ZSA9IGF0aDEya193cml0ZV9zaW11bGF0ZV9yYWRhcixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYzozMzpcXHQub3BlbiA9IHNpbXBsZV9vcGVuXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmMtMzQtfTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYy0zNS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYzozNjpzdGF0aWMgc3NpemVfdCBhdGgxMmtfcmVhZF9zaW11bGF0ZV9md19jcmFzaChzdHJ1Y3QgZmlsZSAqZmlsZSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYy0zNy1cXHRcXHRcXHRcXHRcXHQgICAgIGNoYXIgX191c2VyICp1c2VyX2J1ZixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jLTQwLVxcdGNvbnN0IGNoYXIgYnVmW10gPVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jOjQxOlxcdFxcdFxcXCJUbyBzaW11bGF0ZSBmaXJtd2FyZSBjcmFzaCB3cml0ZSBvbmUgb2YgdGhlIGtleXdvcmRzIHRvIHRoaXMgZmlsZTpcXFxcblxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYy00Mi1cXHRcXHRcXFwiYGFzc2VydGAgLSBzZW5kIFdNSV9GT1JDRV9GV19IQU5HX0NNRElEIHRvIGZpcm13YXJlIHRvIGNhdXNlIGFzc2VydC5cXFxcblxcXCI7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmMtNDMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmM6NDQ6XFx0cmV0dXJuIHNpbXBsZV9yZWFkX2Zyb21fYnVmZmVyKHVzZXJfYnVmLCBjb3VudCwgcHBvcywgYnVmLCBzdHJsZW4oYnVmKSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmMtNDUtfVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmM9NDc9c3RhdGljIHNzaXplX3RcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYzo0ODphdGgxMmtfd3JpdGVfc2ltdWxhdGVfZndfY3Jhc2goc3RydWN0IGZpbGUgKmZpbGUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmMtNDktXFx0XFx0XFx0ICAgICAgIGNvbnN0IGNoYXIgX191c2VyICp1c2VyX2J1ZixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jLTYyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jOjYzOlxcdHJjID0gc2ltcGxlX3dyaXRlX3RvX2J1ZmZlcihidWYsIHNpemVvZihidWYpIC0gMSwgcHBvcywgdXNlcl9idWYsIGNvdW50KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYy02NC1cXHRpZiAocmMgXFx1MDAzYyAwKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmMtODEtXFx0aWYgKCFzdHJjbXAoYnVmLCBcXFwiYXNzZXJ0XFxcIikpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYzo4MjpcXHRcXHRhdGgxMmtfaW5mbyhhYiwgXFxcInNpbXVsYXRpbmcgZmlybXdhcmUgYXNzZXJ0IGNyYXNoXFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYy04My1cXHRcXHRyZXQgPSBhdGgxMmtfd21pX2ZvcmNlX2Z3X2hhbmdfY21kKGFyLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmMtOTAtXFx0aWYgKHJldCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jOjkxOlxcdFxcdGF0aDEya193YXJuKGFiLCBcXFwiZmFpbGVkIHRvIHNpbXVsYXRlIGZpcm13YXJlIGNyYXNoOiAlZFxcXFxuXFxcIiwgcmV0KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYy05Mi1cXHRcXHRyZXR1cm4gcmV0O1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmMtOTctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmM6OTg6c3RhdGljIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgZm9wc19zaW11bGF0ZV9md19jcmFzaCA9IHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYzo5OTpcXHQucmVhZCA9IGF0aDEya19yZWFkX3NpbXVsYXRlX2Z3X2NyYXNoLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jOjEwMDpcXHQud3JpdGUgPSBhdGgxMmtfd3JpdGVfc2ltdWxhdGVfZndfY3Jhc2gsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmM6MTAxOlxcdC5vcGVuID0gc2ltcGxlX29wZW4sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmMtMTAyLVxcdC5vd25lciA9IFRISVNfTU9EVUxFLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmM9NzgzPXN0YXRpYyBzc2l6ZV90IGF0aDEya19yZWFkX3RwY19zdGF0cyhzdHJ1Y3QgZmlsZSAqZmlsZSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jLTc4OS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYzo3OTA6XFx0cmV0dXJuIHNpbXBsZV9yZWFkX2Zyb21fYnVmZmVyKHVzZXJfYnVmLCBjb3VudCwgcHBvcywgYnVmLCBsZW4pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jLTc5MS19XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYz04MDg9c3RhdGljIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgZm9wc190cGNfc3RhdHNfdHlwZSA9IHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYy04MDktXFx0LndyaXRlID0gYXRoMTJrX3dyaXRlX3RwY19zdGF0c190eXBlLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jOjgxMDpcXHQub3BlbiA9IHNpbXBsZV9vcGVuLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jLTgxMS1cXHQubGxzZWVrID0gZGVmYXVsdF9sbHNlZWssXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYz04ODQ9c3RhdGljIHNzaXplX3QgYXRoMTJrX3JlYWRfZXh0ZF9yeF9zdGF0cyhzdHJ1Y3QgZmlsZSAqZmlsZSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jLTg5Ni1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYzo4OTc6XFx0cmV0dXJuIHNpbXBsZV9yZWFkX2Zyb21fYnVmZmVyKHVidWYsIGNvdW50LCBwcG9zLCBidWYsIGxlbik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmMtODk4LX1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jPTkwMD1zdGF0aWMgY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBmb3BzX2V4dGRfcnhfc3RhdHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYy05MDItXFx0LndyaXRlID0gYXRoMTJrX3dyaXRlX2V4dGRfcnhfc3RhdHMsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmM6OTAzOlxcdC5vcGVuID0gc2ltcGxlX29wZW4sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmMtOTA0LX07XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYz05OTc9c3RhdGljIHNzaXplX3QgYXRoMTJrX3JlYWRfbGlua19zdGF0cyhzdHJ1Y3QgZmlsZSAqZmlsZSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jLTEwMDMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmM6MTAwNDpcXHRyZXR1cm4gc2ltcGxlX3JlYWRfZnJvbV9idWZmZXIodXNlcl9idWYsIGNvdW50LCBwcG9zLCBidWYsIGxlbik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmMtMTAwNS19XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYz0xMDI1PXN0YXRpYyBzc2l6ZV90IGF0aDEya19kZWJ1Z2ZzX2R1bXBfZGV2aWNlX2RwX3N0YXRzKHN0cnVjdCBmaWxlICpmaWxlLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmMtMTIwMi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYzoxMjAzOlxcdHJldCA9IHNpbXBsZV9yZWFkX2Zyb21fYnVmZmVyKHVzZXJfYnVmLCBjb3VudCwgcHBvcywgYnVmLCBsZW4pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jLTEyMDQtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYz0xMjA4PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIGZvcHNfZGV2aWNlX2RwX3N0YXRzID0ge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jLTEyMDktXFx0LnJlYWQgPSBhdGgxMmtfZGVidWdmc19kdW1wX2RldmljZV9kcF9zdGF0cyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYzoxMjEwOlxcdC5vcGVuID0gc2ltcGxlX29wZW4sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmMtMTIxMS1cXHQub3duZXIgPSBUSElTX01PRFVMRSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jPTEyMTU9dm9pZCBhdGgxMmtfZGVidWdmc19wZGV2X2NyZWF0ZShzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jLTEyMTYte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jOjEyMTc6XFx0ZGVidWdmc19jcmVhdGVfZmlsZShcXFwic2ltdWxhdGVfZndfY3Jhc2hcXFwiLCAwNjAwLCBhYi1cXHUwMDNlZGVidWdmc19zb2MsIGFiLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jOjEyMTg6XFx0XFx0XFx0ICAgIFxcdTAwMjZmb3BzX3NpbXVsYXRlX2Z3X2NyYXNoKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYy0xMjE5LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmM9MTI1MD12b2lkIGF0aDEya19kZWJ1Z2ZzX3NvY19kZXN0cm95KHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYy0xMjU0LVxcdC8qIFdlIGFyZSBub3QgcmVtb3ZpbmcgYXRoMTJrIGRpcmVjdG9yeSBvbiBwdXJwb3NlLCBldmVuIGlmIGl0XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmM6MTI1NTpcXHQgKiB3b3VsZCBiZSBlbXB0eS4gVGhpcyBzaW1wbGlmaWVzIHRoZSBkaXJlY3RvcnkgaGFuZGxpbmcgYW5kIGl0J3NcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYy0xMjU2LVxcdCAqIGEgbWlub3IgY29zbWV0aWMgaXNzdWUgdG8gbGVhdmUgYW4gZW1wdHkgYXRoMTJrIGRpcmVjdG9yeSB0b1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmM9MTMwNz1zdGF0aWMgc3NpemVfdCBhdGgxMmtfcmVhZF92ZGV2X3N0YXRzKHN0cnVjdCBmaWxlICpmaWxlLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmMtMTMxMy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYzoxMzE0OlxcdHJldHVybiBzaW1wbGVfcmVhZF9mcm9tX2J1ZmZlcih1c2VyX2J1ZiwgY291bnQsIHBwb3MsIGJ1ZiwgbGVuKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYy0xMzE1LX1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jPTEzNzQ9c3RhdGljIHNzaXplX3QgYXRoMTJrX3JlYWRfYmNuX3N0YXRzKHN0cnVjdCBmaWxlICpmaWxlLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmMtMTM4MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYzoxMzgxOlxcdHJldHVybiBzaW1wbGVfcmVhZF9mcm9tX2J1ZmZlcih1c2VyX2J1ZiwgY291bnQsIHBwb3MsIGJ1ZiwgbGVuKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYy0xMzgyLX1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jPTE0MzU9c3RhdGljIHNzaXplX3QgYXRoMTJrX3JlYWRfcGRldl9zdGF0cyhzdHJ1Y3QgZmlsZSAqZmlsZSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jLTE0NDEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmM6MTQ0MjpcXHRyZXR1cm4gc2ltcGxlX3JlYWRfZnJvbV9idWZmZXIodXNlcl9idWYsIGNvdW50LCBwcG9zLCBidWYsIGxlbik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmMtMTQ0My19XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYz0xNDcyPXZvaWQgYXRoMTJrX2RlYnVnZnNfcmVnaXN0ZXIoc3RydWN0IGF0aDEyayAqYXIpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYy0xNTA2LVxcdGlmIChhci1cXHUwMDNlbWFjLnNiYW5kc1tOTDgwMjExX0JBTkRfNUdIWl0uY2hhbm5lbHMpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYzoxNTA3OlxcdFxcdGRlYnVnZnNfY3JlYXRlX2ZpbGUoXFxcImRmc19zaW11bGF0ZV9yYWRhclxcXCIsIDAyMDAsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmMtMTUwOC1cXHRcXHRcXHRcXHQgICAgYXItXFx1MDAzZWRlYnVnLmRlYnVnZnNfcGRldiwgYXIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmM6MTUwOTpcXHRcXHRcXHRcXHQgICAgXFx1MDAyNmZvcHNfc2ltdWxhdGVfcmFkYXIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jLTE1MTAtXFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzX2h0dF9zdGF0cy5jPTYxNjU9c3RhdGljIHNzaXplX3QgYXRoMTJrX3JlYWRfaHR0X3N0YXRzX3R5cGUoc3RydWN0IGZpbGUgKmZpbGUsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnNfaHR0X3N0YXRzLmMtNjE3OS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnNfaHR0X3N0YXRzLmM6NjE4MDpcXHRyZXR1cm4gc2ltcGxlX3JlYWRfZnJvbV9idWZmZXIodXNlcl9idWYsIGNvdW50LCBwcG9zLCBidWYsIGxlbik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzX2h0dF9zdGF0cy5jLTYxODEtfVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzX2h0dF9zdGF0cy5jPTYyMjU9c3RhdGljIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgZm9wc19odHRfc3RhdHNfdHlwZSA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmc19odHRfc3RhdHMuYy02MjI3LVxcdC53cml0ZSA9IGF0aDEya193cml0ZV9odHRfc3RhdHNfdHlwZSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnNfaHR0X3N0YXRzLmM6NjIyODpcXHQub3BlbiA9IHNpbXBsZV9vcGVuLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmc19odHRfc3RhdHMuYy02MjI5LVxcdC5vd25lciA9IFRISVNfTU9EVUxFLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzX2h0dF9zdGF0cy5jPTYzNTE9c3RhdGljIHNzaXplX3QgYXRoMTJrX3JlYWRfaHR0X3N0YXRzKHN0cnVjdCBmaWxlICpmaWxlLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzX2h0dF9zdGF0cy5jLTYzNjAtXFx0bGVuZ3RoID0gbWluX3QodTMyLCBzdGF0c19yZXEtXFx1MDAzZWJ1Zl9sZW4sIEFUSDEyS19IVFRfU1RBVFNfQlVGX1NJWkUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmc19odHRfc3RhdHMuYzo2MzYxOlxcdHJldHVybiBzaW1wbGVfcmVhZF9mcm9tX2J1ZmZlcih1c2VyX2J1ZiwgY291bnQsIHBwb3MsIGJ1ZiwgbGVuZ3RoKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnNfaHR0X3N0YXRzLmMtNjM2Mi19XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnNfaHR0X3N0YXRzLmM9NjQyNj1zdGF0aWMgY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBmb3BzX2h0dF9zdGF0c19yZXNldCA9IHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnNfaHR0X3N0YXRzLmMtNjQyNy1cXHQud3JpdGUgPSBhdGgxMmtfd3JpdGVfaHR0X3N0YXRzX3Jlc2V0LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmc19odHRfc3RhdHMuYzo2NDI4OlxcdC5vcGVuID0gc2ltcGxlX29wZW4sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzX2h0dF9zdGF0cy5jLTY0MjktXFx0Lm93bmVyID0gVEhJU19NT0RVTEUsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnNfc3RhLmM9MTM5PXN0YXRpYyBzc2l6ZV90IGF0aDEya19kYmdfc3RhX2R1bXBfcnhfc3RhdHMoc3RydWN0IGZpbGUgKmZpbGUsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnNfc3RhLmMtMjQxLVxcdGlmIChsZW4pXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzX3N0YS5jOjI0MjpcXHRcXHRyZXQgPSBzaW1wbGVfcmVhZF9mcm9tX2J1ZmZlcih1c2VyX2J1ZiwgY291bnQsIHBwb3MsIGJ1ZiwgbGVuKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnNfc3RhLmMtMjQzLVxcdHJldHVybiByZXQ7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnNfc3RhLmM9MjQ2PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIGZvcHNfcnhfc3RhdHMgPSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzX3N0YS5jLTI0Ny1cXHQucmVhZCA9IGF0aDEya19kYmdfc3RhX2R1bXBfcnhfc3RhdHMsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzX3N0YS5jOjI0ODpcXHQub3BlbiA9IHNpbXBsZV9vcGVuLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmc19zdGEuYy0yNDktXFx0Lm93bmVyID0gVEhJU19NT0RVTEUsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnNfc3RhLmM9Mjk2PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIGZvcHNfcmVzZXRfcnhfc3RhdHMgPSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzX3N0YS5jLTI5Ny1cXHQud3JpdGUgPSBhdGgxMmtfZGJnX3N0YV9yZXNldF9yeF9zdGF0cyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnNfc3RhLmM6Mjk4OlxcdC5vcGVuID0gc2ltcGxlX29wZW4sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzX3N0YS5jLTI5OS1cXHQub3duZXIgPSBUSElTX01PRFVMRSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHBfcGVlci5jPTUyOT1pbnQgYXRoMTJrX2RwX2xpbmtfcGVlcl9hc3NpZ24oc3RydWN0IGF0aDEya19kcCAqZHAsIHN0cnVjdCBhdGgxMmtfZHBfaHcgKmRwX2h3LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kcF9wZWVyLmMtNTkyLVxcdFxcdCAqIElmIG9sZCBlbnRyeSBhZGRpdGlvbiBhbHNvIGZhaWxzLCB0aGVuIG5vdGhpbmdcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwX3BlZXIuYzo1OTM6XFx0XFx0ICogY2FuIGJlIGRvbmUsIHNpbXBseSBwcm9jZWVkXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kcF9wZWVyLmMtNTk0LVxcdFxcdCAqL1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9tYWMuYz0yMzcyPXN0YXRpYyB2b2lkIGF0aDEya19wZWVyX2Fzc29jX2hfdmh0KHN0cnVjdCBhdGgxMmsgKmFyLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9tYWMuYy0yNDEzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmM6MjQxNDpcXHQvKiBUT0RPOiBzaW1pbGFyIGZsYWdzIHJlcXVpcmVkPyAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmMtMjQxNS1cXHRhcmctXFx1MDAzZXZodF9jYXBhYmxlID0gdHJ1ZTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcmVnLmM9MjY5PWludCBhdGgxMmtfcmVnZF91cGRhdGUoc3RydWN0IGF0aDEyayAqYXIsIGJvb2wgaW5pdClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcmVnLmMtMzM3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcmVnLmM6MzM4OlxcdC8qIGZpcm13YXJlIHByb3ZpZGVzIHJlZyBydWxlcyB3aGljaCBhcmUgc2ltaWxhciBmb3IgMiBHSHogYW5kIDUgR0h6XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9yZWcuYy0zMzktXFx0ICogcGRldiBidXQgNiBHSHogcGRldiBoYXMgc3VwZXJzZXQgb2YgYWxsIHJ1bGVzIGluY2x1ZGluZyBydWxlcyBmb3JcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmM9MTAwMjM9YXRoMTJrX3dtaV9zZW5kX3VuaXRfdGVzdF9jbWQoc3RydWN0IGF0aDEyayAqYXIsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5jLTEwMDc1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmM6MTAwNzY6aW50IGF0aDEya193bWlfc2ltdWxhdGVfcmFkYXIoc3RydWN0IGF0aDEyayAqYXIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuYy0xMDA3Ny17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5jLTEwMDk1LVxcdCAqIEN1cnJlbnRseSB3ZSBjb3VsZCBwYXNzIHNlZ21lbnRfaWQoYjAgLSBiMSksIGNoaXJwKGIyKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmM6MTAwOTY6XFx0ICogZnJlcSBvZmZzZXQgKGIzIC0gYjEwKSB0byB1bml0IHRlc3QuIEZvciBzaW11bGF0aW9uXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuYy0xMDA5Ny1cXHQgKiBwdXJwb3NlIHRoaXMgY2FuIGJlIHNldCB0byAwIHdoaWNoIGlzIHZhbGlkLlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuaD0zNjY1PWVudW0gd21pX3N0YV9wc19tb2RlIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmgtMzY3Ny0vKiB0eXBlLCAwOnVudXNlZCAxOiBBU1NFUlQgMjogbm90IHJlc3BvbmQgZGV0ZWN0IGNvbW1hbmRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5oOjM2Nzg6ICogZGVsYXlfdGltZV9tcywgdGhlIHNpbXVsYXRlIHdpbGwgZGVsYXkgdGltZVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmgtMzY3OS0gKi9cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmg9NjQ2Nj1pbnQgYXRoMTJrX3dtaV9zZW5kX3BkZXZfc2V0X3JlZ2RvbWFpbihzdHJ1Y3QgYXRoMTJrICphcixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5oLTY0NjctXFx0XFx0XFx0XFx0ICAgICAgIHN0cnVjdCBhdGgxMmtfd21pX3BkZXZfc2V0X3JlZ2RvbWFpbl9hcmcgKmFyZyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuaDo2NDY4OmludCBhdGgxMmtfd21pX3NpbXVsYXRlX3JhZGFyKHN0cnVjdCBhdGgxMmsgKmFyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5oLTY0NjktaW50IGF0aDEya193bWlfc2VuZF90d3RfZW5hYmxlX2NtZChzdHJ1Y3QgYXRoMTJrICphciwgdTMyIHBkZXZfaWQpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wM1QxNjoyNzoxOC43MzA2ODIwNDJaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMjY4MzA4NDE5MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipVbnJlYWNoYWJsZSBDb2RlIFBhdGhzIGluIFZpcnR1YWxpemVkIEVudmlyb25tZW50cyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIHRoZSBgYXRoMTJrYCBkcml2ZXIuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IHRoaXMgaXMgZm9yIHJlYWwgaGFyZHdhcmUsIHNwZWNpZmljYWxseSBRdWFsY29tbSBXaS1GaSA3IGRldmljZXMuICBJIG5lZWQgdG8gZmlndXJlIG91dCBpZiB0aGVzZSBjb2RlIGNoYW5nZXMgYXJlIHdvcnRoIGZ1enppbmcuIEkgY2FuIHNlZSB0aGVyZSBhcmUgYHNpbXVsYXRlX3JhZGFyYCBhbmQgYHNpbXVsYXRlX2Z3X2NyYXNoYCBkZWJ1Z2ZzIGNvbW1hbmRzLCBidXQgbm90aGluZyBsaWtlIGEgZnVsbCBNQUMvUEhZIHNpbXVsYXRpb24gbGlrZSBgaHdzaW1gLiAgTXkgaW5zdGluY3QgaXMgdGhhdCwgbm8sIHRoZXkncmUgbm90LlxuXG5JIHN0YXJ0ZWQgdG8gdGhpbmsgYWJvdXQgU3l6a2FsbGVyLiBJdCBoYXMgYSBQQ0kgZnV6emVyLCBhbmQgSSB3b25kZXJlZCBpZiB0aGF0IGNvdWxkIGJlIHVzZWQgb24gYGF0aDEya2AuICBQZXJoYXBzIGlmIHRoZSBmdXp6ZXIgY291bGQgdHJpZ2dlciBXTUkgZXZlbnRzIGJ5IHdyaXRpbmcgdG8gTU1JTywgaXQgbWlnaHQgcmVhY2ggZnVuY3Rpb25zIGxpa2UgYGF0aDEya19jaGFuX2luZm9fZXZlbnRgLiBCdXQgdGhlbiBJIHJlbWVtYmVyZWQgdGhhdCBXTUkgZXZlbnRzIGFyZSBjb21wbGV4IHN0cnVjdHVyZXMgc2VudCB2aWEgTUhJIG9yIHRoZSBDb3B5IEVuZ2luZS4gSXQncyBpbmNyZWRpYmx5IHVubGlrZWx5IHRoYXQgYSByYW5kb20gTU1JTyB3cml0ZSB3b3VsZCBlbXVsYXRlIGEgdmFsaWQgV01JIGV2ZW50IHNlcXVlbmNlLiAgSG1tLCBTeXprYWxsZXIgYWxzbyBoYXMgYSBtYWM4MDIxMSBmdXp6ZXIgKHZpYSBod3NpbSkuIEhvd2V2ZXIsIGBod3NpbWAgb25seSBmdXp6ZXMgbWFjODAyMTEsIG5vdCBgYXRoMTJrYC5cblxuSSByZS1yZWFkIHRoZSBwcm9tcHQuIEl0IHNheXMgdG8gcmV0dXJuIGBXb3J0aEZ1enppbmc9ZmFsc2VgIGlmIHRoZSBwYXRjaCBjb25jZXJucyBcIkNvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlwiIFNpbmNlIGBhdGgxMmtgIGlzIGEgaGFyZHdhcmUtc3BlY2lmaWMgZHJpdmVyIGZvciBhIFBDSS9BSEIgZGV2aWNlLCBhbmQgdGhlcmUncyBubyBzb2Z0d2FyZSBlbXVsYXRpb24gZm9yIGl0IGluIFFFTVUvR0NFLCBpdCdzIGltcG9zc2libGUgdG8gcmVhY2ggdGhlc2UgY29kZSBwYXRocyBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50LlxuXG5KdXN0IHRvIGJlIHN1cmUsIGxldCBtZSBjaGVjay4gSSBrbm93IHRoYXQgYGF0aDEya19tYWNfb3BfZ2V0X3N1cnZleWAgaXMgcmVnaXN0ZXJlZCBhcyBhIG1hYzgwMjExIGNhbGxiYWNrLiBUbyByZWdpc3RlciBpdCwgYGF0aDEya19tYWNfcmVnaXN0ZXJgIG11c3QgYmUgY2FsbGVkLiBgYXRoMTJrX21hY19yZWdpc3RlcmAgaXMgY2FsbGVkIGR1cmluZyBkZXZpY2UgaW5pdGlhbGl6YXRpb24gKGBhdGgxMmtfY29yZV9zdGFydGApLiBEZXZpY2UgaW5pdGlhbGl6YXRpb24gcmVxdWlyZXMgYSByZWFsIFBDSS9BSEIgZGV2aWNlIHRvIHByb2JlLCBhbmQgdGhlbiBpdCBjb21tdW5pY2F0ZXMgd2l0aCB0aGUgZmlybXdhcmUgdG8gZ2V0IGNhcGFiaWxpdGllcyBiZWZvcmUgcmVnaXN0ZXJpbmcgd2l0aCBtYWM4MDIxMS4gV2l0aG91dCByZWFsIGhhcmR3YXJlIG9yIGEgc3BlY2lmaWMgZW11bGF0b3IsIGBhdGgxMmtfY29yZV9zdGFydGAgaXMgZ29pbmcgdG8gZmFpbCBlYXJseS4gIEl0J2xsIGZhaWwgdG8gbG9hZCBmaXJtd2FyZSwgZmFpbCB0byBpbml0aWFsaXplIE1ISSwgZmFpbCB0byBnZXQgV01JIHJlYWR5LiAgVGhlcmVmb3JlLCB0aGUgbWFjODAyMTEgY2FsbGJhY2tzIGZvciBgYXRoMTJrYCB3aWxsIG5ldmVyIGJlIHJlZ2lzdGVyZWQgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4gU28geWVzLCB0aGUgY29kZSBwYXRocyBhcmUgaW1wb3NzaWJsZSB0byByZWFjaC5cblxuT2theSwgbGV0IG1lIGNvbmZpcm0gdGhpcyByZWFzb25pbmcuIFRoZSBwYXRjaCBtb2RpZmllcyB0aGUgYGF0aDEya2AgZHJpdmVyLiBJdCByZXF1aXJlcyByZWFsIGhhcmR3YXJlIGFuZCBmaXJtd2FyZSB0byBib290LiBJbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50IGxpa2UgR0NFIG9yIFFFTVUgd2l0aG91dCBQQ0kgcGFzc3Rocm91Z2ggb2YgdGhlIHNwZWNpZmljIGhhcmR3YXJlLCB0aGUgZHJpdmVyIHdpbGwgbm90IHByb2JlIHN1Y2Nlc3NmdWxseS4gRXZlbiB3aXRoIFN5emthbGxlcidzIFBDSSBmdXp6ZXIsIGl0J3MgcHJhY3RpY2FsbHkgaW1wb3NzaWJsZSB0byBwYXNzIHRoZSBjb21wbGV4IGZpcm13YXJlIGJvb3Qgc2VxdWVuY2UgKE1ISSwgUU1JLCBXTUkpIHRvIHJlZ2lzdGVyIHRoZSBtYWM4MDIxMSBkZXZpY2UuIFRodXMsIHRoZSBtb2RpZmllZCBmdW5jdGlvbnMgKGBhdGgxMmtfbWFjX29wX2dldF9zdXJ2ZXlgLCBgYXRoMTJrX2NoYW5faW5mb19ldmVudGAsIGV0Yy4pIGFyZSB1bnJlYWNoYWJsZS4gVGhlcmVmb3JlLCBgV29ydGhGdXp6aW5nYCBzaG91bGQgYmUgYGZhbHNlYC5cblxuSnVzdCB0byBiZSBhYnNvbHV0ZWx5IHN1cmUsIGxldCBtZSBjaGVjayBpZiB0aGVyZSBpcyBhbnkgb3RoZXIgd2F5LiBJcyB0aGVyZSBhIGR1bW15IG9yIHRlc3QgbW9kZSBpbiBgYXRoMTJrYD8gSSBzZWFyY2hlZCBmb3IgXCJzaW1cIiBhbmQgZm91bmQgYHNpbXVsYXRlX3JhZGFyYCBhbmQgYHNpbXVsYXRlX2Z3X2NyYXNoYCwgd2hpY2ggYXJlIGRlYnVnZnMgY29tbWFuZHMgdG8gc2VuZCBXTUkgY29tbWFuZHMgdG8gdGhlIGZpcm13YXJlLiBUaGV5IHN0aWxsIHJlcXVpcmUgdGhlIGZpcm13YXJlIHRvIGJlIHJ1bm5pbmcuIFRoZXJlIGlzIG5vIGBod3NpbWAgZXF1aXZhbGVudCBmb3IgYGF0aDEya2AuIFNvIHllcywgaXQncyB1bnJlYWNoYWJsZS5cblxuSSdtIGdvaW5nIHRvIHNldCBgV29ydGhGdXp6aW5nPWZhbHNlYCBhbmQgcHJvdmlkZSB0aGlzIHJlYXNvbmluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTM2MzcsIk91dHB1dFRva2VucyI6MTMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Nzk1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAzVDE2OjI3OjMxLjQxMzc2ODE1M1oiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjQ4MzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGF0aDEyayBkcml2ZXIsIHdoaWNoIGlzIGEgaGFyZHdhcmUtc3BlY2lmaWMgZHJpdmVyIGZvciBRdWFsY29tbSBXaS1GaSA3IFBDSWUvQUhCIGRldmljZXMuIFRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIChtYWM4MDIxMSBjYWxsYmFja3MgYW5kIFdNSSBldmVudCBoYW5kbGVycykgcmVxdWlyZSBhIHN1Y2Nlc3NmdWwgZGV2aWNlIHByb2JlIGFuZCBmaXJtd2FyZSBib290IHNlcXVlbmNlIChNSEksIFFNSSwgV01JKSB0byBiZSByZWFjaGFibGUuIFNpbmNlIHRoZXJlIGlzIG5vIHNvZnR3YXJlIGVtdWxhdGlvbiBmb3IgdGhpcyBoYXJkd2FyZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRSwgdGhlc2UgY29kZSBwYXRocyBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBhbmQgZnV6ei5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBhdGgxMmsgZHJpdmVyLCB3aGljaCBpcyBhIGhhcmR3YXJlLXNwZWNpZmljIGRyaXZlciBmb3IgUXVhbGNvbW0gV2ktRmkgNyBQQ0llL0FIQiBkZXZpY2VzLiBUaGUgbW9kaWZpZWQgY29kZSBwYXRocyAobWFjODAyMTEgY2FsbGJhY2tzIGFuZCBXTUkgZXZlbnQgaGFuZGxlcnMpIHJlcXVpcmUgYSBzdWNjZXNzZnVsIGRldmljZSBwcm9iZSBhbmQgZmlybXdhcmUgYm9vdCBzZXF1ZW5jZSAoTUhJLCBRTUksIFdNSSkgdG8gYmUgcmVhY2hhYmxlLiBTaW5jZSB0aGVyZSBpcyBubyBzb2Z0d2FyZSBlbXVsYXRpb24gZm9yIHRoaXMgaGFyZHdhcmUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHQ0UsIHRoZXNlIGNvZGUgcGF0aHMgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggYW5kIGZ1enouXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },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-workflowkhtj5[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-03 16:08:22 +0000 UTC FinishedAt: 2026-07-03 16:27:32 +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+CgkJCTx0ZD4yMDI2LzA3LzAzIDE2OjIyPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+NW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBhdGgxMmsgZHJpdmVyLCB3aGljaCBpcyBhIGhhcmR3YXJlLXNwZWNpZmljIGRyaXZlciBmb3IgUXVhbGNvbW0gV2ktRmkgNyBQQ0llL0FIQiBkZXZpY2VzLiBUaGUgbW9kaWZpZWQgY29kZSBwYXRocyAobWFjODAyMTEgY2FsbGJhY2tzIGFuZCBXTUkgZXZlbnQgaGFuZGxlcnMpIHJlcXVpcmUgYSBzdWNjZXNzZnVsIGRldmljZSBwcm9iZSBhbmQgZmlybXdhcmUgYm9vdCBzZXF1ZW5jZSAoTUhJLCBRTUksIFdNSSkgdG8gYmUgcmVhY2hhYmxlLiBTaW5jZSB0aGVyZSBpcyBubyBzb2Z0d2FyZSBlbXVsYXRpb24gZm9yIHRoaXMgaGFyZHdhcmUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHQ0UsIHRoZXNlIGNvZGUgcGF0aHMgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggYW5kIGZ1enouJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAzIDE2OjIyPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgNTE5OTMyZjE1MGRjNjMxNTU1ZWJmMDRiMzRkZmZkZTE5YTNkNGMwNVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgSnVsIDMgMTY6MjI6MTIgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuaFxuaW5kZXggOGJlNDM1NTM1YTRlOGIuLjZjZTJmN2IzZmE1MDEyIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5oXG5AQCAtNzEyLDcgJiM0Mzs3MTIsNiBAQCBzdHJ1Y3QgYXRoMTJrIHtcbiBcdCAqIGF2b2lkIHJlcG9ydGluZyBnYXJiYWdlIGRhdGEuXG4gXHQgKi9cbiBcdGJvb2wgY2hfaW5mb19jYW5fcmVwb3J0X3N1cnZleTtcbi1cdHN0cnVjdCBzdXJ2ZXlfaW5mbyBzdXJ2ZXlbQVRIMTJLX05VTV9DSEFOU107XG4gXHRzdHJ1Y3QgY29tcGxldGlvbiBic3Nfc3VydmV5X2RvbmU7XG4gXG4gXHRzdHJ1Y3Qgd29ya19zdHJ1Y3QgcmVnZF91cGRhdGVfd29yaztcbkBAIC03NzQsNiAmIzQzOzc3MywxMSBAQCBzdHJ1Y3QgYXRoMTJrX2h3IHtcbiBcdCAqL1xuIFx0c3RydWN0IG11dGV4IGh3X211dGV4O1xuIFx0ZW51bSBhdGgxMmtfaHdfc3RhdGUgc3RhdGU7XG4mIzQzO1xuJiM0MztcdC8qIHByb3RlY3RzIHN1cnZleVtdIHNoYXJlZCBhY3Jvc3MgcmFkaW9zIG9mIHRoaXMgaHcuICovXG4mIzQzO1x0c3BpbmxvY2tfdCBzdXJ2ZXlfbG9jaztcbiYjNDM7XHRzdHJ1Y3Qgc3VydmV5X2luZm8gc3VydmV5W0FUSDEyS19OVU1fQ0hBTlNdO1xuJiM0MztcbiBcdGJvb2wgcmVnZF91cGRhdGVkO1xuIFx0Ym9vbCB1c2VfNmdoel9yZWdkO1xuIFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jXG5pbmRleCAyY2ZmOTQ4NWM5NWFmYi4uZGFmOWJjODcyMmRmYmEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jXG5AQCAtMTMzNDgsNTIgJiM0MzsxMzM0OCw1NCBAQCBhdGgxMmtfbWFjX3VwZGF0ZV9ic3NfY2hhbl9zdXJ2ZXkoc3RydWN0IGF0aDEyayAqYXIsXG4gaW50IGF0aDEya19tYWNfb3BfZ2V0X3N1cnZleShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywgaW50IGlkeCxcbiBcdFx0XHQgICAgIHN0cnVjdCBzdXJ2ZXlfaW5mbyAqc3VydmV5KVxuIHtcbiYjNDM7XHRzdHJ1Y3QgYXRoMTJrX2h3ICphaCA9IGh3LVx1MDAzZXByaXY7XG4gXHRzdHJ1Y3QgYXRoMTJrICphcjtcbiBcdHN0cnVjdCBpZWVlODAyMTFfc3VwcG9ydGVkX2JhbmQgKnNiYW5kO1xuLVx0c3RydWN0IHN1cnZleV9pbmZvICphcl9zdXJ2ZXk7XG4mIzQzO1x0c3RydWN0IHN1cnZleV9pbmZvICphaF9zdXJ2ZXk7XG4mIzQzO1x0aW50IHNiYW5kX2lkeCA9IGlkeDtcbiBcbiBcdGxvY2tkZXBfYXNzZXJ0X3dpcGh5KGh3LVx1MDAzZXdpcGh5KTtcbiBcbi1cdGlmIChpZHggXHUwMDNlPSBBVEgxMktfTlVNX0NIQU5TKVxuJiM0MztcdGlmIChzYmFuZF9pZHggXHUwMDNlPSBBVEgxMktfTlVNX0NIQU5TKVxuIFx0XHRyZXR1cm4gLUVOT0VOVDtcbiBcbiBcdHNiYW5kID0gaHctXHUwMDNld2lwaHktXHUwMDNlYmFuZHNbTkw4MDIxMV9CQU5EXzJHSFpdO1xuLVx0aWYgKHNiYW5kIFx1MDAyNlx1MDAyNiBpZHggXHUwMDNlPSBzYmFuZC1cdTAwM2VuX2NoYW5uZWxzKSB7XG4tXHRcdGlkeCAtPSBzYmFuZC1cdTAwM2VuX2NoYW5uZWxzO1xuJiM0MztcdGlmIChzYmFuZCBcdTAwMjZcdTAwMjYgc2JhbmRfaWR4IFx1MDAzZT0gc2JhbmQtXHUwMDNlbl9jaGFubmVscykge1xuJiM0MztcdFx0c2JhbmRfaWR4IC09IHNiYW5kLVx1MDAzZW5fY2hhbm5lbHM7XG4gXHRcdHNiYW5kID0gTlVMTDtcbiBcdH1cbiBcbiBcdGlmICghc2JhbmQpXG4gXHRcdHNiYW5kID0gaHctXHUwMDNld2lwaHktXHUwMDNlYmFuZHNbTkw4MDIxMV9CQU5EXzVHSFpdO1xuLVx0aWYgKHNiYW5kIFx1MDAyNlx1MDAyNiBpZHggXHUwMDNlPSBzYmFuZC1cdTAwM2VuX2NoYW5uZWxzKSB7XG4tXHRcdGlkeCAtPSBzYmFuZC1cdTAwM2VuX2NoYW5uZWxzO1xuJiM0MztcdGlmIChzYmFuZCBcdTAwMjZcdTAwMjYgc2JhbmRfaWR4IFx1MDAzZT0gc2JhbmQtXHUwMDNlbl9jaGFubmVscykge1xuJiM0MztcdFx0c2JhbmRfaWR4IC09IHNiYW5kLVx1MDAzZW5fY2hhbm5lbHM7XG4gXHRcdHNiYW5kID0gTlVMTDtcbiBcdH1cbiBcbiBcdGlmICghc2JhbmQpXG4gXHRcdHNiYW5kID0gaHctXHUwMDNld2lwaHktXHUwMDNlYmFuZHNbTkw4MDIxMV9CQU5EXzZHSFpdO1xuIFxuLVx0aWYgKCFzYmFuZCB8fCBpZHggXHUwMDNlPSBzYmFuZC1cdTAwM2VuX2NoYW5uZWxzKVxuJiM0MztcdGlmICghc2JhbmQgfHwgc2JhbmRfaWR4IFx1MDAzZT0gc2JhbmQtXHUwMDNlbl9jaGFubmVscylcbiBcdFx0cmV0dXJuIC1FTk9FTlQ7XG4gXG4tXHRhciA9IGF0aDEya19tYWNfZ2V0X2FyX2J5X2NoYW4oaHcsIFx1MDAyNnNiYW5kLVx1MDAzZWNoYW5uZWxzW2lkeF0pO1xuJiM0MztcdGFyID0gYXRoMTJrX21hY19nZXRfYXJfYnlfY2hhbihodywgXHUwMDI2c2JhbmQtXHUwMDNlY2hhbm5lbHNbc2JhbmRfaWR4XSk7XG4gXHRpZiAoIWFyKSB7XG4tXHRcdGlmIChzYmFuZC1cdTAwM2VjaGFubmVsc1tpZHhdLmZsYWdzIFx1MDAyNiBJRUVFODAyMTFfQ0hBTl9ESVNBQkxFRCkge1xuJiM0MztcdFx0aWYgKHNiYW5kLVx1MDAzZWNoYW5uZWxzW3NiYW5kX2lkeF0uZmxhZ3MgXHUwMDI2IElFRUU4MDIxMV9DSEFOX0RJU0FCTEVEKSB7XG4gXHRcdFx0bWVtc2V0KHN1cnZleSwgMCwgc2l6ZW9mKCpzdXJ2ZXkpKTtcbiBcdFx0XHRyZXR1cm4gMDtcbiBcdFx0fVxuIFx0XHRyZXR1cm4gLUVOT0VOVDtcbiBcdH1cbiBcbi1cdGFyX3N1cnZleSA9IFx1MDAyNmFyLVx1MDAzZXN1cnZleVtpZHhdO1xuJiM0MztcdGFoX3N1cnZleSA9IFx1MDAyNmFoLVx1MDAzZXN1cnZleVtpZHhdO1xuIFxuLVx0YXRoMTJrX21hY191cGRhdGVfYnNzX2NoYW5fc3VydmV5KGFyLCBcdTAwMjZzYmFuZC1cdTAwM2VjaGFubmVsc1tpZHhdKTtcbiYjNDM7XHRhdGgxMmtfbWFjX3VwZGF0ZV9ic3NfY2hhbl9zdXJ2ZXkoYXIsIFx1MDAyNnNiYW5kLVx1MDAzZWNoYW5uZWxzW3NiYW5kX2lkeF0pO1xuIFxuLVx0c3Bpbl9sb2NrX2JoKFx1MDAyNmFyLVx1MDAzZWRhdGFfbG9jayk7XG4tXHRtZW1jcHkoc3VydmV5LCBhcl9zdXJ2ZXksIHNpemVvZigqc3VydmV5KSk7XG4tXHRzcGluX3VubG9ja19iaChcdTAwMjZhci1cdTAwM2VkYXRhX2xvY2spO1xuJiM0MztcdHNjb3BlZF9ndWFyZChzcGlubG9ja19iaCwgXHUwMDI2YWgtXHUwMDNlc3VydmV5X2xvY2spIHtcbiYjNDM7XHRcdG1lbWNweShzdXJ2ZXksIGFoX3N1cnZleSwgc2l6ZW9mKCpzdXJ2ZXkpKTtcbiYjNDM7XHR9XG4gXG4tXHRzdXJ2ZXktXHUwMDNlY2hhbm5lbCA9IFx1MDAyNnNiYW5kLVx1MDAzZWNoYW5uZWxzW2lkeF07XG4mIzQzO1x0c3VydmV5LVx1MDAzZWNoYW5uZWwgPSBcdTAwMjZzYmFuZC1cdTAwM2VjaGFubmVsc1tzYmFuZF9pZHhdO1xuIFxuIFx0aWYgKGFyLVx1MDAzZXJ4X2NoYW5uZWwgPT0gc3VydmV5LVx1MDAzZWNoYW5uZWwpXG4gXHRcdHN1cnZleS1cdTAwM2VmaWxsZWQgfD0gU1VSVkVZX0lORk9fSU5fVVNFO1xuQEAgLTE1MDU1LDYgJiM0MzsxNTA1Nyw3IEBAIHN0YXRpYyBzdHJ1Y3QgYXRoMTJrX2h3ICphdGgxMmtfbWFjX2h3X2FsbG9jYXRlKHN0cnVjdCBhdGgxMmtfaHdfZ3JvdXAgKmFnLFxuIFxuIFx0bXV0ZXhfaW5pdChcdTAwMjZhaC1cdTAwM2Vod19tdXRleCk7XG4gXG4mIzQzO1x0c3Bpbl9sb2NrX2luaXQoXHUwMDI2YWgtXHUwMDNlc3VydmV5X2xvY2spO1xuIFx0c3Bpbl9sb2NrX2luaXQoXHUwMDI2YWgtXHUwMDNlZHBfaHcucGVlcl9sb2NrKTtcbiBcdElOSVRfTElTVF9IRUFEKFx1MDAyNmFoLVx1MDAzZWRwX2h3LmRwX3BlZXJzX2xpc3QpO1xuIFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5jXG5pbmRleCBiNWU5MDRhNTVhZWFiYi4uM2YzNzMwYTZjMmFjMjcgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5jXG5AQCAtNjYxNywxNiAmIzQzOzY2MTcsMTIgQEAgc3RhdGljIGludCBhdGgxMmtfcHVsbF9yb2FtX2V2KHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIsIHN0cnVjdCBza19idWZmICpza2IsXG4gXHRyZXR1cm4gMDtcbiB9XG4gXG4tc3RhdGljIGludCBmcmVxX3RvX2lkeChzdHJ1Y3QgYXRoMTJrICphciwgaW50IGZyZXEpXG4mIzQzO3N0YXRpYyBpbnQgZnJlcV90b19pZHgoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsIGludCBmcmVxKVxuIHtcbiBcdHN0cnVjdCBpZWVlODAyMTFfc3VwcG9ydGVkX2JhbmQgKnNiYW5kO1xuLVx0c3RydWN0IGllZWU4MDIxMV9odyAqaHcgPSBhdGgxMmtfYXJfdG9faHcoYXIpO1xuIFx0aW50IGJhbmQsIGNoLCBpZHggPSAwO1xuIFxuIFx0Zm9yIChiYW5kID0gTkw4MDIxMV9CQU5EXzJHSFo7IGJhbmQgXHUwMDNjIE5VTV9OTDgwMjExX0JBTkRTOyBiYW5kJiM0MzsmIzQzOykge1xuLVx0XHRpZiAoIWFyLVx1MDAzZW1hYy5zYmFuZHNbYmFuZF0uY2hhbm5lbHMpXG4tXHRcdFx0Y29udGludWU7XG4tXG4gXHRcdHNiYW5kID0gaHctXHUwMDNld2lwaHktXHUwMDNlYmFuZHNbYmFuZF07XG4gXHRcdGlmICghc2JhbmQpXG4gXHRcdFx0Y29udGludWU7XG5AQCAtNzUwNyw2ICYjNDM7NzUwMyw3IEBAIHN0YXRpYyB2b2lkIGF0aDEya19jaGFuX2luZm9fZXZlbnQoc3RydWN0IGF0aDEya19iYXNlICphYiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbiB7XG4gXHRzdHJ1Y3Qgd21pX2NoYW5faW5mb19ldmVudCBjaF9pbmZvX2V2ID0ge307XG4gXHRzdHJ1Y3QgYXRoMTJrICphcjtcbiYjNDM7XHRzdHJ1Y3QgYXRoMTJrX2h3ICphaDtcbiBcdHN0cnVjdCBzdXJ2ZXlfaW5mbyAqc3VydmV5O1xuIFx0aW50IGlkeDtcbiBcdC8qIEhXIGNoYW5uZWwgY291bnRlcnMgZnJlcXVlbmN5IHZhbHVlIGluIGhlcnR6ICovXG5AQCAtNzUzOCw2ICYjNDM7NzUzNSw3IEBAIHN0YXRpYyB2b2lkIGF0aDEya19jaGFuX2luZm9fZXZlbnQoc3RydWN0IGF0aDEya19iYXNlICphYiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbiBcdFx0cmV0dXJuO1xuIFx0fVxuIFx0c3Bpbl9sb2NrX2JoKFx1MDAyNmFyLVx1MDAzZWRhdGFfbG9jayk7XG4mIzQzO1x0YWggPSBhdGgxMmtfYXJfdG9fYWgoYXIpO1xuIFxuIFx0c3dpdGNoIChhci1cdTAwM2VzY2FuLnN0YXRlKSB7XG4gXHRjYXNlIEFUSDEyS19TQ0FOX0lETEU6XG5AQCAtNzU0OSw4ICYjNDM7NzU0Nyw4IEBAIHN0YXRpYyB2b2lkIGF0aDEya19jaGFuX2luZm9fZXZlbnQoc3RydWN0IGF0aDEya19iYXNlICphYiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbiBcdFx0YnJlYWs7XG4gXHR9XG4gXG4tXHRpZHggPSBmcmVxX3RvX2lkeChhciwgbGUzMl90b19jcHUoY2hfaW5mb19ldi5mcmVxKSk7XG4tXHRpZiAoaWR4IFx1MDAzZT0gQVJSQVlfU0laRShhci1cdTAwM2VzdXJ2ZXkpKSB7XG4mIzQzO1x0aWR4ID0gZnJlcV90b19pZHgoYXRoMTJrX2FyX3RvX2h3KGFyKSwgbGUzMl90b19jcHUoY2hfaW5mb19ldi5mcmVxKSk7XG4mIzQzO1x0aWYgKGlkeCBcdTAwM2U9IEFSUkFZX1NJWkUoYWgtXHUwMDNlc3VydmV5KSkge1xuIFx0XHRhdGgxMmtfd2FybihhYiwgXCYjMzQ7Y2hhbiBpbmZvOiBpbnZhbGlkIGZyZXF1ZW5jeSAlZCAoaWR4ICVkIG91dCBvZiBib3VuZHMpXFxuXCYjMzQ7LFxuIFx0XHRcdCAgICBjaF9pbmZvX2V2LmZyZXEsIGlkeCk7XG4gXHRcdGdvdG8gZXhpdDtcbkBAIC03NTYzLDE0ICYjNDM7NzU2MSwxNiBAQCBzdGF0aWMgdm9pZCBhdGgxMmtfY2hhbl9pbmZvX2V2ZW50KHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIsIHN0cnVjdCBza19idWZmICpza2IpXG4gXHRcdGNjX2ZyZXFfaHogPSAobGUzMl90b19jcHUoY2hfaW5mb19ldi5tYWNfY2xrX21oeikgKiAxMDAwKTtcbiBcbiBcdGlmIChjaF9pbmZvX2V2LmNtZF9mbGFncyA9PSBXTUlfQ0hBTl9JTkZPX1NUQVJUX1JFU1ApIHtcbi1cdFx0c3VydmV5ID0gXHUwMDI2YXItXHUwMDNlc3VydmV5W2lkeF07XG4tXHRcdG1lbXNldChzdXJ2ZXksIDAsIHNpemVvZigqc3VydmV5KSk7XG4tXHRcdHN1cnZleS1cdTAwM2Vub2lzZSA9IGxlMzJfdG9fY3B1KGNoX2luZm9fZXYubm9pc2VfZmxvb3IpO1xuLVx0XHRzdXJ2ZXktXHUwMDNlZmlsbGVkID0gU1VSVkVZX0lORk9fTk9JU0VfREJNIHwgU1VSVkVZX0lORk9fVElNRSB8XG4mIzQzO1x0XHRzY29wZWRfZ3VhcmQoc3BpbmxvY2tfYmgsIFx1MDAyNmFoLVx1MDAzZXN1cnZleV9sb2NrKSB7XG4mIzQzO1x0XHRcdHN1cnZleSA9IFx1MDAyNmFoLVx1MDAzZXN1cnZleVtpZHhdO1xuJiM0MztcdFx0XHRtZW1zZXQoc3VydmV5LCAwLCBzaXplb2YoKnN1cnZleSkpO1xuJiM0MztcdFx0XHRzdXJ2ZXktXHUwMDNlbm9pc2UgPSBsZTMyX3RvX2NwdShjaF9pbmZvX2V2Lm5vaXNlX2Zsb29yKTtcbiYjNDM7XHRcdFx0c3VydmV5LVx1MDAzZWZpbGxlZCA9IFNVUlZFWV9JTkZPX05PSVNFX0RCTSB8IFNVUlZFWV9JTkZPX1RJTUUgfFxuIFx0XHRcdFx0IFNVUlZFWV9JTkZPX1RJTUVfQlVTWTtcbi1cdFx0c3VydmV5LVx1MDAzZXRpbWUgPSBkaXZfdTY0KGxlMzJfdG9fY3B1KGNoX2luZm9fZXYuY3ljbGVfY291bnQpLCBjY19mcmVxX2h6KTtcbi1cdFx0c3VydmV5LVx1MDAzZXRpbWVfYnVzeSA9IGRpdl91NjQobGUzMl90b19jcHUoY2hfaW5mb19ldi5yeF9jbGVhcl9jb3VudCksXG4tXHRcdFx0XHRcdCAgICBjY19mcmVxX2h6KTtcbiYjNDM7XHRcdFx0c3VydmV5LVx1MDAzZXRpbWUgPSBkaXZfdTY0KGxlMzJfdG9fY3B1KGNoX2luZm9fZXYuY3ljbGVfY291bnQpLCBjY19mcmVxX2h6KTtcbiYjNDM7XHRcdFx0c3VydmV5LVx1MDAzZXRpbWVfYnVzeSA9IGRpdl91NjQobGUzMl90b19jcHUoY2hfaW5mb19ldi5yeF9jbGVhcl9jb3VudCksXG4mIzQzO1x0XHRcdFx0XHRcdCAgICBjY19mcmVxX2h6KTtcbiYjNDM7XHRcdH1cbiBcdH1cbiBleGl0OlxuIFx0c3Bpbl91bmxvY2tfYmgoXHUwMDI2YXItXHUwMDNlZGF0YV9sb2NrKTtcbkBAIC03NTgzLDYgJiM0Mzs3NTgzLDcgQEAgYXRoMTJrX3BkZXZfYnNzX2NoYW5faW5mb19ldmVudChzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuIFx0c3RydWN0IHdtaV9wZGV2X2Jzc19jaGFuX2luZm9fZXZlbnQgYnNzX2NoX2luZm9fZXYgPSB7fTtcbiBcdHN0cnVjdCBzdXJ2ZXlfaW5mbyAqc3VydmV5O1xuIFx0c3RydWN0IGF0aDEyayAqYXI7XG4mIzQzO1x0c3RydWN0IGF0aDEya19odyAqYWg7XG4gXHR1MzIgY2NfZnJlcV9oeiA9IGFiLVx1MDAzZWNjX2ZyZXFfaHo7XG4gXHR1NjQgYnVzeSwgdG90YWwsIHR4LCByeCwgcnhfYnNzO1xuIFx0aW50IGlkeDtcbkBAIC03NjIzLDI4ICYjNDM7NzYyNCwzMSBAQCBhdGgxMmtfcGRldl9ic3NfY2hhbl9pbmZvX2V2ZW50KHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIsIHN0cnVjdCBza19idWZmICpza2IpXG4gXHRcdHJldHVybjtcbiBcdH1cbiBcbi1cdHNwaW5fbG9ja19iaChcdTAwMjZhci1cdTAwM2VkYXRhX2xvY2spO1xuLVx0aWR4ID0gZnJlcV90b19pZHgoYXIsIGxlMzJfdG9fY3B1KGJzc19jaF9pbmZvX2V2LmZyZXEpKTtcbi1cdGlmIChpZHggXHUwMDNlPSBBUlJBWV9TSVpFKGFyLVx1MDAzZXN1cnZleSkpIHtcbiYjNDM7XHRhaCA9IGF0aDEya19hcl90b19haChhcik7XG4mIzQzO1xuJiM0MztcdGlkeCA9IGZyZXFfdG9faWR4KGF0aDEya19hcl90b19odyhhciksIGxlMzJfdG9fY3B1KGJzc19jaF9pbmZvX2V2LmZyZXEpKTtcbiYjNDM7XHRpZiAoaWR4IFx1MDAzZT0gQVJSQVlfU0laRShhaC1cdTAwM2VzdXJ2ZXkpKSB7XG4gXHRcdGF0aDEya193YXJuKGFiLCBcJiMzNDtic3MgY2hhbiBpbmZvOiBpbnZhbGlkIGZyZXF1ZW5jeSAlZCAoaWR4ICVkIG91dCBvZiBib3VuZHMpXFxuXCYjMzQ7LFxuIFx0XHRcdCAgICBic3NfY2hfaW5mb19ldi5mcmVxLCBpZHgpO1xuIFx0XHRnb3RvIGV4aXQ7XG4gXHR9XG4gXG4tXHRzdXJ2ZXkgPSBcdTAwMjZhci1cdTAwM2VzdXJ2ZXlbaWR4XTtcbiYjNDM7XHRzY29wZWRfZ3VhcmQoc3BpbmxvY2tfYmgsIFx1MDAyNmFoLVx1MDAzZXN1cnZleV9sb2NrKSB7XG4mIzQzO1x0XHRzdXJ2ZXkgPSBcdTAwMjZhaC1cdTAwM2VzdXJ2ZXlbaWR4XTtcbiYjNDM7XG4mIzQzO1x0XHRzdXJ2ZXktXHUwMDNlbm9pc2UgPSBsZTMyX3RvX2NwdShic3NfY2hfaW5mb19ldi5ub2lzZV9mbG9vcik7XG4mIzQzO1x0XHRzdXJ2ZXktXHUwMDNldGltZSA9IGRpdl91NjQodG90YWwsIGNjX2ZyZXFfaHopO1xuJiM0MztcdFx0c3VydmV5LVx1MDAzZXRpbWVfYnVzeSA9IGRpdl91NjQoYnVzeSwgY2NfZnJlcV9oeik7XG4mIzQzO1x0XHRzdXJ2ZXktXHUwMDNldGltZV9yeCA9IGRpdl91NjQocnhfYnNzLCBjY19mcmVxX2h6KTtcbiYjNDM7XHRcdHN1cnZleS1cdTAwM2V0aW1lX3R4ID0gZGl2X3U2NCh0eCwgY2NfZnJlcV9oeik7XG4mIzQzO1x0XHRzdXJ2ZXktXHUwMDNlZmlsbGVkIHw9IChTVVJWRVlfSU5GT19OT0lTRV9EQk0gfFxuJiM0MztcdFx0XHRcdCAgIFNVUlZFWV9JTkZPX1RJTUUgfFxuJiM0MztcdFx0XHRcdCAgIFNVUlZFWV9JTkZPX1RJTUVfQlVTWSB8XG4mIzQzO1x0XHRcdFx0ICAgU1VSVkVZX0lORk9fVElNRV9SWCB8XG4mIzQzO1x0XHRcdFx0ICAgU1VSVkVZX0lORk9fVElNRV9UWCk7XG4mIzQzO1x0fVxuIFxuLVx0c3VydmV5LVx1MDAzZW5vaXNlICAgICA9IGxlMzJfdG9fY3B1KGJzc19jaF9pbmZvX2V2Lm5vaXNlX2Zsb29yKTtcbi1cdHN1cnZleS1cdTAwM2V0aW1lICAgICAgPSBkaXZfdTY0KHRvdGFsLCBjY19mcmVxX2h6KTtcbi1cdHN1cnZleS1cdTAwM2V0aW1lX2J1c3kgPSBkaXZfdTY0KGJ1c3ksIGNjX2ZyZXFfaHopO1xuLVx0c3VydmV5LVx1MDAzZXRpbWVfcnggICA9IGRpdl91NjQocnhfYnNzLCBjY19mcmVxX2h6KTtcbi1cdHN1cnZleS1cdTAwM2V0aW1lX3R4ICAgPSBkaXZfdTY0KHR4LCBjY19mcmVxX2h6KTtcbi1cdHN1cnZleS1cdTAwM2VmaWxsZWQgICB8PSAoU1VSVkVZX0lORk9fTk9JU0VfREJNIHxcbi1cdFx0XHQgICAgIFNVUlZFWV9JTkZPX1RJTUUgfFxuLVx0XHRcdCAgICAgU1VSVkVZX0lORk9fVElNRV9CVVNZIHxcbi1cdFx0XHQgICAgIFNVUlZFWV9JTkZPX1RJTUVfUlggfFxuLVx0XHRcdCAgICAgU1VSVkVZX0lORk9fVElNRV9UWCk7XG4gZXhpdDpcbi1cdHNwaW5fdW5sb2NrX2JoKFx1MDAyNmFyLVx1MDAzZWRhdGFfbG9jayk7XG4gXHRjb21wbGV0ZShcdTAwMjZhci1cdTAwM2Vic3Nfc3VydmV5X2RvbmUpO1xuIFxuIFx0cmN1X3JlYWRfdW5sb2NrKCk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDMgMTY6MjI8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+NW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGF0aDEyayBkcml2ZXIsIHdoaWNoIGlzIGEgaGFyZHdhcmUtc3BlY2lmaWMgZHJpdmVyIGZvciBRdWFsY29tbSBXaS1GaSA3IFBDSWUvQUhCIGRldmljZXMuIFRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIChtYWM4MDIxMSBjYWxsYmFja3MgYW5kIFdNSSBldmVudCBoYW5kbGVycykgcmVxdWlyZSBhIHN1Y2Nlc3NmdWwgZGV2aWNlIHByb2JlIGFuZCBmaXJtd2FyZSBib290IHNlcXVlbmNlIChNSEksIFFNSSwgV01JKSB0byBiZSByZWFjaGFibGUuIFNpbmNlIHRoZXJlIGlzIG5vIHNvZnR3YXJlIGVtdWxhdGlvbiBmb3IgdGhpcyBoYXJkd2FyZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRSwgdGhlc2UgY29kZSBwYXRocyBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBhbmQgZnV6ei4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDUxOTkzMmYxNTBkYzYzMTU1NWViZjA0YjM0ZGZmZGUxOWEzZDRjMDUKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgRnJpIEp1bCAzIDE2OjIyOjEyIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuaAppbmRleCA4YmU0MzU1MzVhNGU4Yi4uNmNlMmY3YjNmYTUwMTIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5oCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5oCkBAIC03MTIsNyAmIzQzOzcxMiw2IEBAIHN0cnVjdCBhdGgxMmsgewogCSAqIGF2b2lkIHJlcG9ydGluZyBnYXJiYWdlIGRhdGEuCiAJICovCiAJYm9vbCBjaF9pbmZvX2Nhbl9yZXBvcnRfc3VydmV5OwotCXN0cnVjdCBzdXJ2ZXlfaW5mbyBzdXJ2ZXlbQVRIMTJLX05VTV9DSEFOU107CiAJc3RydWN0IGNvbXBsZXRpb24gYnNzX3N1cnZleV9kb25lOwogCiAJc3RydWN0IHdvcmtfc3RydWN0IHJlZ2RfdXBkYXRlX3dvcms7CkBAIC03NzQsNiAmIzQzOzc3MywxMSBAQCBzdHJ1Y3QgYXRoMTJrX2h3IHsKIAkgKi8KIAlzdHJ1Y3QgbXV0ZXggaHdfbXV0ZXg7CiAJZW51bSBhdGgxMmtfaHdfc3RhdGUgc3RhdGU7CiYjNDM7CiYjNDM7CS8qIHByb3RlY3RzIHN1cnZleVtdIHNoYXJlZCBhY3Jvc3MgcmFkaW9zIG9mIHRoaXMgaHcuICovCiYjNDM7CXNwaW5sb2NrX3Qgc3VydmV5X2xvY2s7CiYjNDM7CXN0cnVjdCBzdXJ2ZXlfaW5mbyBzdXJ2ZXlbQVRIMTJLX05VTV9DSEFOU107CiYjNDM7CiAJYm9vbCByZWdkX3VwZGF0ZWQ7CiAJYm9vbCB1c2VfNmdoel9yZWdkOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9tYWMuYwppbmRleCAyY2ZmOTQ4NWM5NWFmYi4uZGFmOWJjODcyMmRmYmEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9tYWMuYwpAQCAtMTMzNDgsNTIgJiM0MzsxMzM0OCw1NCBAQCBhdGgxMmtfbWFjX3VwZGF0ZV9ic3NfY2hhbl9zdXJ2ZXkoc3RydWN0IGF0aDEyayAqYXIsCiBpbnQgYXRoMTJrX21hY19vcF9nZXRfc3VydmV5KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LCBpbnQgaWR4LAogCQkJICAgICBzdHJ1Y3Qgc3VydmV5X2luZm8gKnN1cnZleSkKIHsKJiM0MzsJc3RydWN0IGF0aDEya19odyAqYWggPSBody0mZ3Q7cHJpdjsKIAlzdHJ1Y3QgYXRoMTJrICphcjsKIAlzdHJ1Y3QgaWVlZTgwMjExX3N1cHBvcnRlZF9iYW5kICpzYmFuZDsKLQlzdHJ1Y3Qgc3VydmV5X2luZm8gKmFyX3N1cnZleTsKJiM0MzsJc3RydWN0IHN1cnZleV9pbmZvICphaF9zdXJ2ZXk7CiYjNDM7CWludCBzYmFuZF9pZHggPSBpZHg7CiAKIAlsb2NrZGVwX2Fzc2VydF93aXBoeShody0mZ3Q7d2lwaHkpOwogCi0JaWYgKGlkeCAmZ3Q7PSBBVEgxMktfTlVNX0NIQU5TKQomIzQzOwlpZiAoc2JhbmRfaWR4ICZndDs9IEFUSDEyS19OVU1fQ0hBTlMpCiAJCXJldHVybiAtRU5PRU5UOwogCiAJc2JhbmQgPSBody0mZ3Q7d2lwaHktJmd0O2JhbmRzW05MODAyMTFfQkFORF8yR0haXTsKLQlpZiAoc2JhbmQgJmFtcDsmYW1wOyBpZHggJmd0Oz0gc2JhbmQtJmd0O25fY2hhbm5lbHMpIHsKLQkJaWR4IC09IHNiYW5kLSZndDtuX2NoYW5uZWxzOwomIzQzOwlpZiAoc2JhbmQgJmFtcDsmYW1wOyBzYmFuZF9pZHggJmd0Oz0gc2JhbmQtJmd0O25fY2hhbm5lbHMpIHsKJiM0MzsJCXNiYW5kX2lkeCAtPSBzYmFuZC0mZ3Q7bl9jaGFubmVsczsKIAkJc2JhbmQgPSBOVUxMOwogCX0KIAogCWlmICghc2JhbmQpCiAJCXNiYW5kID0gaHctJmd0O3dpcGh5LSZndDtiYW5kc1tOTDgwMjExX0JBTkRfNUdIWl07Ci0JaWYgKHNiYW5kICZhbXA7JmFtcDsgaWR4ICZndDs9IHNiYW5kLSZndDtuX2NoYW5uZWxzKSB7Ci0JCWlkeCAtPSBzYmFuZC0mZ3Q7bl9jaGFubmVsczsKJiM0MzsJaWYgKHNiYW5kICZhbXA7JmFtcDsgc2JhbmRfaWR4ICZndDs9IHNiYW5kLSZndDtuX2NoYW5uZWxzKSB7CiYjNDM7CQlzYmFuZF9pZHggLT0gc2JhbmQtJmd0O25fY2hhbm5lbHM7CiAJCXNiYW5kID0gTlVMTDsKIAl9CiAKIAlpZiAoIXNiYW5kKQogCQlzYmFuZCA9IGh3LSZndDt3aXBoeS0mZ3Q7YmFuZHNbTkw4MDIxMV9CQU5EXzZHSFpdOwogCi0JaWYgKCFzYmFuZCB8fCBpZHggJmd0Oz0gc2JhbmQtJmd0O25fY2hhbm5lbHMpCiYjNDM7CWlmICghc2JhbmQgfHwgc2JhbmRfaWR4ICZndDs9IHNiYW5kLSZndDtuX2NoYW5uZWxzKQogCQlyZXR1cm4gLUVOT0VOVDsKIAotCWFyID0gYXRoMTJrX21hY19nZXRfYXJfYnlfY2hhbihodywgJmFtcDtzYmFuZC0mZ3Q7Y2hhbm5lbHNbaWR4XSk7CiYjNDM7CWFyID0gYXRoMTJrX21hY19nZXRfYXJfYnlfY2hhbihodywgJmFtcDtzYmFuZC0mZ3Q7Y2hhbm5lbHNbc2JhbmRfaWR4XSk7CiAJaWYgKCFhcikgewotCQlpZiAoc2JhbmQtJmd0O2NoYW5uZWxzW2lkeF0uZmxhZ3MgJmFtcDsgSUVFRTgwMjExX0NIQU5fRElTQUJMRUQpIHsKJiM0MzsJCWlmIChzYmFuZC0mZ3Q7Y2hhbm5lbHNbc2JhbmRfaWR4XS5mbGFncyAmYW1wOyBJRUVFODAyMTFfQ0hBTl9ESVNBQkxFRCkgewogCQkJbWVtc2V0KHN1cnZleSwgMCwgc2l6ZW9mKCpzdXJ2ZXkpKTsKIAkJCXJldHVybiAwOwogCQl9CiAJCXJldHVybiAtRU5PRU5UOwogCX0KIAotCWFyX3N1cnZleSA9ICZhbXA7YXItJmd0O3N1cnZleVtpZHhdOwomIzQzOwlhaF9zdXJ2ZXkgPSAmYW1wO2FoLSZndDtzdXJ2ZXlbaWR4XTsKIAotCWF0aDEya19tYWNfdXBkYXRlX2Jzc19jaGFuX3N1cnZleShhciwgJmFtcDtzYmFuZC0mZ3Q7Y2hhbm5lbHNbaWR4XSk7CiYjNDM7CWF0aDEya19tYWNfdXBkYXRlX2Jzc19jaGFuX3N1cnZleShhciwgJmFtcDtzYmFuZC0mZ3Q7Y2hhbm5lbHNbc2JhbmRfaWR4XSk7CiAKLQlzcGluX2xvY2tfYmgoJmFtcDthci0mZ3Q7ZGF0YV9sb2NrKTsKLQltZW1jcHkoc3VydmV5LCBhcl9zdXJ2ZXksIHNpemVvZigqc3VydmV5KSk7Ci0Jc3Bpbl91bmxvY2tfYmgoJmFtcDthci0mZ3Q7ZGF0YV9sb2NrKTsKJiM0MzsJc2NvcGVkX2d1YXJkKHNwaW5sb2NrX2JoLCAmYW1wO2FoLSZndDtzdXJ2ZXlfbG9jaykgewomIzQzOwkJbWVtY3B5KHN1cnZleSwgYWhfc3VydmV5LCBzaXplb2YoKnN1cnZleSkpOwomIzQzOwl9CiAKLQlzdXJ2ZXktJmd0O2NoYW5uZWwgPSAmYW1wO3NiYW5kLSZndDtjaGFubmVsc1tpZHhdOwomIzQzOwlzdXJ2ZXktJmd0O2NoYW5uZWwgPSAmYW1wO3NiYW5kLSZndDtjaGFubmVsc1tzYmFuZF9pZHhdOwogCiAJaWYgKGFyLSZndDtyeF9jaGFubmVsID09IHN1cnZleS0mZ3Q7Y2hhbm5lbCkKIAkJc3VydmV5LSZndDtmaWxsZWQgfD0gU1VSVkVZX0lORk9fSU5fVVNFOwpAQCAtMTUwNTUsNiAmIzQzOzE1MDU3LDcgQEAgc3RhdGljIHN0cnVjdCBhdGgxMmtfaHcgKmF0aDEya19tYWNfaHdfYWxsb2NhdGUoc3RydWN0IGF0aDEya19od19ncm91cCAqYWcsCiAKIAltdXRleF9pbml0KCZhbXA7YWgtJmd0O2h3X211dGV4KTsKIAomIzQzOwlzcGluX2xvY2tfaW5pdCgmYW1wO2FoLSZndDtzdXJ2ZXlfbG9jayk7CiAJc3Bpbl9sb2NrX2luaXQoJmFtcDthaC0mZ3Q7ZHBfaHcucGVlcl9sb2NrKTsKIAlJTklUX0xJU1RfSEVBRCgmYW1wO2FoLSZndDtkcF9ody5kcF9wZWVyc19saXN0KTsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmMKaW5kZXggYjVlOTA0YTU1YWVhYmIuLjNmMzczMGE2YzJhYzI3IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmMKQEAgLTY2MTcsMTYgJiM0Mzs2NjE3LDEyIEBAIHN0YXRpYyBpbnQgYXRoMTJrX3B1bGxfcm9hbV9ldihzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAogCXJldHVybiAwOwogfQogCi1zdGF0aWMgaW50IGZyZXFfdG9faWR4KHN0cnVjdCBhdGgxMmsgKmFyLCBpbnQgZnJlcSkKJiM0MztzdGF0aWMgaW50IGZyZXFfdG9faWR4KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LCBpbnQgZnJlcSkKIHsKIAlzdHJ1Y3QgaWVlZTgwMjExX3N1cHBvcnRlZF9iYW5kICpzYmFuZDsKLQlzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyA9IGF0aDEya19hcl90b19odyhhcik7CiAJaW50IGJhbmQsIGNoLCBpZHggPSAwOwogCiAJZm9yIChiYW5kID0gTkw4MDIxMV9CQU5EXzJHSFo7IGJhbmQgJmx0OyBOVU1fTkw4MDIxMV9CQU5EUzsgYmFuZCYjNDM7JiM0MzspIHsKLQkJaWYgKCFhci0mZ3Q7bWFjLnNiYW5kc1tiYW5kXS5jaGFubmVscykKLQkJCWNvbnRpbnVlOwotCiAJCXNiYW5kID0gaHctJmd0O3dpcGh5LSZndDtiYW5kc1tiYW5kXTsKIAkJaWYgKCFzYmFuZCkKIAkJCWNvbnRpbnVlOwpAQCAtNzUwNyw2ICYjNDM7NzUwMyw3IEBAIHN0YXRpYyB2b2lkIGF0aDEya19jaGFuX2luZm9fZXZlbnQoc3RydWN0IGF0aDEya19iYXNlICphYiwgc3RydWN0IHNrX2J1ZmYgKnNrYikKIHsKIAlzdHJ1Y3Qgd21pX2NoYW5faW5mb19ldmVudCBjaF9pbmZvX2V2ID0ge307CiAJc3RydWN0IGF0aDEyayAqYXI7CiYjNDM7CXN0cnVjdCBhdGgxMmtfaHcgKmFoOwogCXN0cnVjdCBzdXJ2ZXlfaW5mbyAqc3VydmV5OwogCWludCBpZHg7CiAJLyogSFcgY2hhbm5lbCBjb3VudGVycyBmcmVxdWVuY3kgdmFsdWUgaW4gaGVydHogKi8KQEAgLTc1MzgsNiAmIzQzOzc1MzUsNyBAQCBzdGF0aWMgdm9pZCBhdGgxMmtfY2hhbl9pbmZvX2V2ZW50KHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIsIHN0cnVjdCBza19idWZmICpza2IpCiAJCXJldHVybjsKIAl9CiAJc3Bpbl9sb2NrX2JoKCZhbXA7YXItJmd0O2RhdGFfbG9jayk7CiYjNDM7CWFoID0gYXRoMTJrX2FyX3RvX2FoKGFyKTsKIAogCXN3aXRjaCAoYXItJmd0O3NjYW4uc3RhdGUpIHsKIAljYXNlIEFUSDEyS19TQ0FOX0lETEU6CkBAIC03NTQ5LDggJiM0Mzs3NTQ3LDggQEAgc3RhdGljIHZvaWQgYXRoMTJrX2NoYW5faW5mb19ldmVudChzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKQogCQlicmVhazsKIAl9CiAKLQlpZHggPSBmcmVxX3RvX2lkeChhciwgbGUzMl90b19jcHUoY2hfaW5mb19ldi5mcmVxKSk7Ci0JaWYgKGlkeCAmZ3Q7PSBBUlJBWV9TSVpFKGFyLSZndDtzdXJ2ZXkpKSB7CiYjNDM7CWlkeCA9IGZyZXFfdG9faWR4KGF0aDEya19hcl90b19odyhhciksIGxlMzJfdG9fY3B1KGNoX2luZm9fZXYuZnJlcSkpOwomIzQzOwlpZiAoaWR4ICZndDs9IEFSUkFZX1NJWkUoYWgtJmd0O3N1cnZleSkpIHsKIAkJYXRoMTJrX3dhcm4oYWIsICYjMzQ7Y2hhbiBpbmZvOiBpbnZhbGlkIGZyZXF1ZW5jeSAlZCAoaWR4ICVkIG91dCBvZiBib3VuZHMpXG4mIzM0OywKIAkJCSAgICBjaF9pbmZvX2V2LmZyZXEsIGlkeCk7CiAJCWdvdG8gZXhpdDsKQEAgLTc1NjMsMTQgJiM0Mzs3NTYxLDE2IEBAIHN0YXRpYyB2b2lkIGF0aDEya19jaGFuX2luZm9fZXZlbnQoc3RydWN0IGF0aDEya19iYXNlICphYiwgc3RydWN0IHNrX2J1ZmYgKnNrYikKIAkJY2NfZnJlcV9oeiA9IChsZTMyX3RvX2NwdShjaF9pbmZvX2V2Lm1hY19jbGtfbWh6KSAqIDEwMDApOwogCiAJaWYgKGNoX2luZm9fZXYuY21kX2ZsYWdzID09IFdNSV9DSEFOX0lORk9fU1RBUlRfUkVTUCkgewotCQlzdXJ2ZXkgPSAmYW1wO2FyLSZndDtzdXJ2ZXlbaWR4XTsKLQkJbWVtc2V0KHN1cnZleSwgMCwgc2l6ZW9mKCpzdXJ2ZXkpKTsKLQkJc3VydmV5LSZndDtub2lzZSA9IGxlMzJfdG9fY3B1KGNoX2luZm9fZXYubm9pc2VfZmxvb3IpOwotCQlzdXJ2ZXktJmd0O2ZpbGxlZCA9IFNVUlZFWV9JTkZPX05PSVNFX0RCTSB8IFNVUlZFWV9JTkZPX1RJTUUgfAomIzQzOwkJc2NvcGVkX2d1YXJkKHNwaW5sb2NrX2JoLCAmYW1wO2FoLSZndDtzdXJ2ZXlfbG9jaykgewomIzQzOwkJCXN1cnZleSA9ICZhbXA7YWgtJmd0O3N1cnZleVtpZHhdOwomIzQzOwkJCW1lbXNldChzdXJ2ZXksIDAsIHNpemVvZigqc3VydmV5KSk7CiYjNDM7CQkJc3VydmV5LSZndDtub2lzZSA9IGxlMzJfdG9fY3B1KGNoX2luZm9fZXYubm9pc2VfZmxvb3IpOwomIzQzOwkJCXN1cnZleS0mZ3Q7ZmlsbGVkID0gU1VSVkVZX0lORk9fTk9JU0VfREJNIHwgU1VSVkVZX0lORk9fVElNRSB8CiAJCQkJIFNVUlZFWV9JTkZPX1RJTUVfQlVTWTsKLQkJc3VydmV5LSZndDt0aW1lID0gZGl2X3U2NChsZTMyX3RvX2NwdShjaF9pbmZvX2V2LmN5Y2xlX2NvdW50KSwgY2NfZnJlcV9oeik7Ci0JCXN1cnZleS0mZ3Q7dGltZV9idXN5ID0gZGl2X3U2NChsZTMyX3RvX2NwdShjaF9pbmZvX2V2LnJ4X2NsZWFyX2NvdW50KSwKLQkJCQkJICAgIGNjX2ZyZXFfaHopOwomIzQzOwkJCXN1cnZleS0mZ3Q7dGltZSA9IGRpdl91NjQobGUzMl90b19jcHUoY2hfaW5mb19ldi5jeWNsZV9jb3VudCksIGNjX2ZyZXFfaHopOwomIzQzOwkJCXN1cnZleS0mZ3Q7dGltZV9idXN5ID0gZGl2X3U2NChsZTMyX3RvX2NwdShjaF9pbmZvX2V2LnJ4X2NsZWFyX2NvdW50KSwKJiM0MzsJCQkJCQkgICAgY2NfZnJlcV9oeik7CiYjNDM7CQl9CiAJfQogZXhpdDoKIAlzcGluX3VubG9ja19iaCgmYW1wO2FyLSZndDtkYXRhX2xvY2spOwpAQCAtNzU4Myw2ICYjNDM7NzU4Myw3IEBAIGF0aDEya19wZGV2X2Jzc19jaGFuX2luZm9fZXZlbnQoc3RydWN0IGF0aDEya19iYXNlICphYiwgc3RydWN0IHNrX2J1ZmYgKnNrYikKIAlzdHJ1Y3Qgd21pX3BkZXZfYnNzX2NoYW5faW5mb19ldmVudCBic3NfY2hfaW5mb19ldiA9IHt9OwogCXN0cnVjdCBzdXJ2ZXlfaW5mbyAqc3VydmV5OwogCXN0cnVjdCBhdGgxMmsgKmFyOwomIzQzOwlzdHJ1Y3QgYXRoMTJrX2h3ICphaDsKIAl1MzIgY2NfZnJlcV9oeiA9IGFiLSZndDtjY19mcmVxX2h6OwogCXU2NCBidXN5LCB0b3RhbCwgdHgsIHJ4LCByeF9ic3M7CiAJaW50IGlkeDsKQEAgLTc2MjMsMjggJiM0Mzs3NjI0LDMxIEBAIGF0aDEya19wZGV2X2Jzc19jaGFuX2luZm9fZXZlbnQoc3RydWN0IGF0aDEya19iYXNlICphYiwgc3RydWN0IHNrX2J1ZmYgKnNrYikKIAkJcmV0dXJuOwogCX0KIAotCXNwaW5fbG9ja19iaCgmYW1wO2FyLSZndDtkYXRhX2xvY2spOwotCWlkeCA9IGZyZXFfdG9faWR4KGFyLCBsZTMyX3RvX2NwdShic3NfY2hfaW5mb19ldi5mcmVxKSk7Ci0JaWYgKGlkeCAmZ3Q7PSBBUlJBWV9TSVpFKGFyLSZndDtzdXJ2ZXkpKSB7CiYjNDM7CWFoID0gYXRoMTJrX2FyX3RvX2FoKGFyKTsKJiM0MzsKJiM0MzsJaWR4ID0gZnJlcV90b19pZHgoYXRoMTJrX2FyX3RvX2h3KGFyKSwgbGUzMl90b19jcHUoYnNzX2NoX2luZm9fZXYuZnJlcSkpOwomIzQzOwlpZiAoaWR4ICZndDs9IEFSUkFZX1NJWkUoYWgtJmd0O3N1cnZleSkpIHsKIAkJYXRoMTJrX3dhcm4oYWIsICYjMzQ7YnNzIGNoYW4gaW5mbzogaW52YWxpZCBmcmVxdWVuY3kgJWQgKGlkeCAlZCBvdXQgb2YgYm91bmRzKVxuJiMzNDssCiAJCQkgICAgYnNzX2NoX2luZm9fZXYuZnJlcSwgaWR4KTsKIAkJZ290byBleGl0OwogCX0KIAotCXN1cnZleSA9ICZhbXA7YXItJmd0O3N1cnZleVtpZHhdOwomIzQzOwlzY29wZWRfZ3VhcmQoc3BpbmxvY2tfYmgsICZhbXA7YWgtJmd0O3N1cnZleV9sb2NrKSB7CiYjNDM7CQlzdXJ2ZXkgPSAmYW1wO2FoLSZndDtzdXJ2ZXlbaWR4XTsKJiM0MzsKJiM0MzsJCXN1cnZleS0mZ3Q7bm9pc2UgPSBsZTMyX3RvX2NwdShic3NfY2hfaW5mb19ldi5ub2lzZV9mbG9vcik7CiYjNDM7CQlzdXJ2ZXktJmd0O3RpbWUgPSBkaXZfdTY0KHRvdGFsLCBjY19mcmVxX2h6KTsKJiM0MzsJCXN1cnZleS0mZ3Q7dGltZV9idXN5ID0gZGl2X3U2NChidXN5LCBjY19mcmVxX2h6KTsKJiM0MzsJCXN1cnZleS0mZ3Q7dGltZV9yeCA9IGRpdl91NjQocnhfYnNzLCBjY19mcmVxX2h6KTsKJiM0MzsJCXN1cnZleS0mZ3Q7dGltZV90eCA9IGRpdl91NjQodHgsIGNjX2ZyZXFfaHopOwomIzQzOwkJc3VydmV5LSZndDtmaWxsZWQgfD0gKFNVUlZFWV9JTkZPX05PSVNFX0RCTSB8CiYjNDM7CQkJCSAgIFNVUlZFWV9JTkZPX1RJTUUgfAomIzQzOwkJCQkgICBTVVJWRVlfSU5GT19USU1FX0JVU1kgfAomIzQzOwkJCQkgICBTVVJWRVlfSU5GT19USU1FX1JYIHwKJiM0MzsJCQkJICAgU1VSVkVZX0lORk9fVElNRV9UWCk7CiYjNDM7CX0KIAotCXN1cnZleS0mZ3Q7bm9pc2UgICAgID0gbGUzMl90b19jcHUoYnNzX2NoX2luZm9fZXYubm9pc2VfZmxvb3IpOwotCXN1cnZleS0mZ3Q7dGltZSAgICAgID0gZGl2X3U2NCh0b3RhbCwgY2NfZnJlcV9oeik7Ci0Jc3VydmV5LSZndDt0aW1lX2J1c3kgPSBkaXZfdTY0KGJ1c3ksIGNjX2ZyZXFfaHopOwotCXN1cnZleS0mZ3Q7dGltZV9yeCAgID0gZGl2X3U2NChyeF9ic3MsIGNjX2ZyZXFfaHopOwotCXN1cnZleS0mZ3Q7dGltZV90eCAgID0gZGl2X3U2NCh0eCwgY2NfZnJlcV9oeik7Ci0Jc3VydmV5LSZndDtmaWxsZWQgICB8PSAoU1VSVkVZX0lORk9fTk9JU0VfREJNIHwKLQkJCSAgICAgU1VSVkVZX0lORk9fVElNRSB8Ci0JCQkgICAgIFNVUlZFWV9JTkZPX1RJTUVfQlVTWSB8Ci0JCQkgICAgIFNVUlZFWV9JTkZPX1RJTUVfUlggfAotCQkJICAgICBTVVJWRVlfSU5GT19USU1FX1RYKTsKIGV4aXQ6Ci0Jc3Bpbl91bmxvY2tfYmgoJmFtcDthci0mZ3Q7ZGF0YV9sb2NrKTsKIAljb21wbGV0ZSgmYW1wO2FyLSZndDtic3Nfc3VydmV5X2RvbmUpOwogCiAJcmN1X3JlYWRfdW5sb2NrKCk7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAzIDE2OjIyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUzNTIKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiA0NjYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqUmVhY2hpbmcgdGhlIEF0aDEyayBTdXJ2ZXkgUGF0Y2ggaW4gYSBWaXJ0dWFsaXplZCBFbnZpcm9ubWVudCoqCgpPa2F5LCBzbyB3ZSYjMzk7dmUgZ290IHRoaXMgcGF0Y2ggdGhhdCByZS1vcmdhbml6ZXMgdGhlIGBzdXJ2ZXlgIGFycmF5IGFuZCBpdHMgYXNzb2NpYXRlZCBsb2NrIHdpdGhpbiB0aGUgYGF0aDEya2AgZHJpdmVyLiBJdCBtb3ZlcyB0aGUgZGF0YSBmcm9tIHRoZSBwZXItcmFkaW8gYGF0aDEya2Agc3RydWN0IHRvIHRoZSBwZXItaGFyZHdhcmUgYGF0aDEya19od2Agc3RydWN0LiBUaGlzIGFmZmVjdHMgc2V2ZXJhbCBmdW5jdGlvbnM6IGBhdGgxMmtfbWFjX29wX2dldF9zdXJ2ZXlgLCBgYXRoMTJrX21hY19od19hbGxvY2F0ZWAsIGBhdGgxMmtfY2hhbl9pbmZvX2V2ZW50YCwgYGF0aDEya19wZGV2X2Jzc19jaGFuX2luZm9fZXZlbnRgLCBhbmQgYGZyZXFfdG9faWR4YC4gTXkgaW1tZWRpYXRlIGNvbmNlcm4gaXMgd2hldGhlciB0aGlzIGlzIGV2ZW4gKnRlc3RhYmxlKiBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50LiBUaGlzIGlzIHRoZSBgYXRoMTJrYCBkcml2ZXIsIHdoaWNoLCBhcyBJIHJlY2FsbCwgaXMgZm9yIFF1YWxjb21tIFdpLUZpIDcgZGV2aWNlcywgc3BlY2lmaWNhbGx5IFBDSWUvQUhCIGJhc2VkLgoKVGhlIHF1ZXN0aW9uIHRoZW4gYmVjb21lczogY2FuIHdlIGVtdWxhdGUgdGhpcz8gSSBkb24mIzM5O3QgYmVsaWV2ZSB0aGVyZSYjMzk7cyBhbnkgZXN0YWJsaXNoZWQgUUVNVSBlbXVsYXRpb24gZm9yIGBhdGgxMmtgIGl0c2VsZi4gU3VyZSwgYG1hYzgwMjExX2h3c2ltYCBleGlzdHMsIGJ1dCB0aGF0JiMzOTtzIGEgZ2VuZXJpYyBNQUM4MDIxMSBlbXVsYXRpb24sIG5vdCBzcGVjaWZpY2FsbHkgZm9yIGEgaGFyZHdhcmUgZHJpdmVyLiBXZSYjMzk7cmUgdGFsa2luZyBhYm91dCBhIHZlcnkgc3BlY2lmaWMgcGllY2Ugb2YgaGFyZHdhcmUuIEkgY2FuJiMzOTt0IHRoaW5rIG9mIGFueSBvYnZpb3VzIHNvZnR3YXJlIGVtdWxhdGlvbiByb3V0ZSwgbm8gVVNCIGdhZGdldCB0cmlja3MgaGVyZSBzaW5jZSBpdCYjMzk7cyBQQ0llL0FIQi4KCkJ1dCB3YWl0LCB0aGVyZSYjMzk7cyBzeXprYWxsZXIhIEl0IGNhbiBmdXp6IFBDSSBkZXZpY2VzIHVzaW5nIHZQQ0ksICppZiogc3VwcG9ydGVkLiBUaGUgdXN1YWwgY2F2ZWF0cyBhcHBseTsgbW9zdCBzcGVjaWZpYyBXaS1GaSBkcml2ZXJzIGFyZW4mIzM5O3QgdHlwaWNhbGx5IGZ1enplZCB1bmxlc3MgdGhleSYjMzk7cmUgVVNCIG9yIHZpcnRpby4gSXMgYGF0aDEya2AgYSBjYW5kaWRhdGUgZm9yIHN5emthbGxlciBmdXp6aW5nPyBJJiMzOTtkIG5lZWQgdG8gY2hlY2sgaWYgdGhlcmUgYXJlIHN5emJvdCByZXBvcnRzIHJlbGF0ZWQgdG8gYGF0aDEya2AsIHRob3VnaCBJIGNhbiYjMzk7dCBjaGVjayB0aGF0IGltbWVkaWF0ZWx5LiBCdXQsIEkgKmRvKiBrbm93IHN5emthbGxlciBoYXMgYSBQQ0kgZnV6emVyLCB1c2luZyB0aGluZ3MgbGlrZSBgdmhjaWAgb3IgYHZmaW9gLgoKSG93ZXZlciwgdGhlIG1haW4gcHJvbXB0IHN0aXB1bGF0ZXMgdGhhdCB3ZSBuZWVkIHRvIGNvbnNpZGVyIGNvZGUgcGF0aHMgdW5yZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgc2V0dXBzIGxpa2UgR0NFIG9yIFFFTVUsIGV2ZW4gd2l0aCBzb2Z0d2FyZSBlbXVsYXRpb24gbGlrZSBgdXNiIGdhZGdldGAgb3IgYG1hYzgwMjExX2h3c2ltYC4gSXMgYGF0aDEya2AgcmVhbGlzdGljYWxseSByZWFjaGFibGUgZ2l2ZW4gdGhhdCBjb25zdHJhaW50PyBJIG5lZWQgdG8gY2xhcmlmeSBpZiB0aGlzIGRyaXZlciBjYW4gYmUgdGVzdGVkLiBUaW1lIHRvIGRvdWJsZS1jaGVjayB0aGUgYEtjb25maWdgIGZpbGUgaW4gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZ2AuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDMgMTY6MjI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIEFUSDEySyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UtQ2xlYXJcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZzoyOmNvbmZpZyBBVEgxMktcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZy0zLVx0dHJpc3RhdGUgXCYjMzQ7UXVhbGNvbW0gVGVjaG5vbG9naWVzIFdpLUZpIDcgc3VwcG9ydCAoYXRoMTJrKVwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZy0xNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZzoxNzpjb25maWcgQVRIMTJLX0FIQlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnLTE4LVx0Ym9vbCBcJiMzNDtRVEkgYXRoMTJrIEFIQiBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnLTI0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnOjI1OmNvbmZpZyBBVEgxMktfREVCVUdcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZy0yNi1cdGJvb2wgXCYjMzQ7YXRoMTJrIGRlYnVnZ2luZ1wmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZy0zNC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZzozNTpjb25maWcgQVRIMTJLX0RFQlVHRlNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZy0zNi1cdGJvb2wgXCYjMzQ7UVRJIGF0aDEyayBkZWJ1Z2ZzIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWctNDMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWc6NDQ6Y29uZmlnIEFUSDEyS19UUkFDSU5HXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWctNDUtXHRib29sIFwmIzM0O2F0aDEyayB0cmFjaW5nIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWctNTItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWc6NTM6Y29uZmlnIEFUSDEyS19DT1JFRFVNUFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnLTU0LVx0Ym9vbCBcJiMzNDthdGgxMmsgY29yZWR1bXBcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMyAxNjoyMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+NG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2OTA4CgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogNDU1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgRnV6emFiaWxpdHkgb2YgdGhlIFF1YWxjb21tIFdpLUZpIDcgRHJpdmVyKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGRyaXZlciwgc3BlY2lmaWNhbGx5IGZvciBRdWFsY29tbSYjMzk7cyBXaS1GaSA3IGhhcmR3YXJlLiBGaXJzdCwgSSBuZWVkIHRvIGtub3c6IGlzIHRoZXJlIGFueSBzb2Z0d2FyZSBlbXVsYXRpb24gYXZhaWxhYmxlIGZvciBpdD8gTm8uIFRoYXQmIzM5O3MgYSBodWdlIGh1cmRsZS4gQ2FuIEkgZnV6eiBpdCB0aHJvdWdoIFBDSSBmdXp6aW5nIHRoZW4/IFN5emthbGxlciBkb2VzIGhhdmUgUENJIGZ1enppbmcgY2FwYWJpbGl0aWVzLCB3aGljaCBpcyBwcm9taXNpbmcuIEJ1dCBpcyBpdCBjb25zaWRlcmVkICYjMzQ7aW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMmIzM0Oz8KClVzdWFsbHksIHRoZXNlIGhhcmR3YXJlLXNwZWNpZmljIGRyaXZlcnMgbGlrZSBhdGgxMWssIGF0aDEyaywgb3IgaXdsd2lmaSBhcmUgdHJpY2t5IHRvIGZ1enogdW5sZXNzIHRoZXJlIGlzIGFuIGVtdWxhdG9yIG9yIHVubGVzcyB0aGUgUENJIGZ1enppbmcgaXMgZXh0cmVtZWx5IGVmZmVjdGl2ZS4gU3l6a2FsbGVyJiMzOTtzIFBDSSBmdXp6aW5nIHdvcmtzIGJ5IGluamVjdGluZyBQQ0kgY29uZmlnIHNwYWNlIGFuZCBNTUlPIHJlYWRzL3dyaXRlcy4KCldhaXQsIHRoZSBjb2RlIG1lbnRpb25zIGBhdGgxMmtgIHdoaWNoIHVzZXMgYG1hYzgwMjExYC4gVGhlIHBhdGNoIHNwZWNpZmljYWxseSBtb2RpZmllcyBgYXRoMTJrX21hY19vcF9nZXRfc3VydmV5YCwgd2hpY2ggaXMgYSBjYWxsYmFjayBmb3IgYG1hYzgwMjExYCAoYGdldF9zdXJ2ZXlgKS4gSXQgYWxzbyBtb2RpZmllcyBgYXRoMTJrX2NoYW5faW5mb19ldmVudGAgYW5kIGBhdGgxMmtfcGRldl9ic3NfY2hhbl9pbmZvX2V2ZW50YCwgd2hpY2ggYXJlIFdNSSBldmVudCBoYW5kbGVycy4gT2theSwgV01JIGV2ZW50cyBjb21lIGZyb20gdGhlIGZpcm13YXJlLCB0aGF0JiMzOTtzIGNydWNpYWwuIFNpbmNlIHRoZXJlIGlzIG5vIGZpcm13YXJlIHJ1bm5pbmcgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCwgdW5sZXNzIGVtdWxhdGVkLCB0aGUgZmlybXdhcmUgd29uJiMzOTt0IHNlbmQgdGhvc2UgV01JIGV2ZW50cy4KCldhaXQgYSBtaW51dGUsIGV2ZW4gaWYgUENJIGZ1enppbmcgaW5qZWN0cyByYW5kb20gZGF0YSBpbnRvIE1NSU8sIHRoZSBkcml2ZXIgZXhwZWN0cyBhIGNvbXBsZXggZmlybXdhcmUgYm9vdCBzZXF1ZW5jZSAoUU1JLCBNSEksIFdNSSkuIEl0JiMzOTtzIGhpZ2hseSB1bmxpa2VseSB0byByZWFjaCB0aGVzZSBXTUkgZXZlbnQgaGFuZGxlcnMgb3IgZXZlbiBzdWNjZXNzZnVsbHkgcmVnaXN0ZXIgdGhlIG1hYzgwMjExIGRldmljZSB3aXRob3V0IGEgcmVhbCBmaXJtd2FyZSBvciBhIGdvb2QgZW11bGF0b3IuCgpTbywgbGV0JiMzOTtzIGRyaWxsIGRvd24gc3BlY2lmaWNhbGx5IHRvIGBhdGgxMmtgIGFuZCBzZWUgaWYgaXQmIzM5O3MgZnV6emFibGUgaW4gb3VyIGN1cnJlbnQgc2V0dXAuIFRoZSBwcm9tcHQgc2F5czogJiMzNDtSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOiAuLi4gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLCBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuJiMzNDsgU2luY2UgYGF0aDEya2AgcmVsaWVzIG9uIHJlYWwgaGFyZHdhcmUgb3IgYSBjb21wbGV4IGVtdWxhdG9yIHRoYXQgZG9lc24mIzM5O3QgZXhpc3QgaW4gUUVNVSBvciBHQ0UsIGl0JiMzOTtzIGltcG9zc2libGUgdG8gcmVhY2ggdGhlc2UgY29kZSBwYXRocyEgVGhhdCYjMzk7cyBpdC4KCkxldCBtZSBqdXN0IGRvdWJsZS1jaGVjaywgdGhvdWdoLCBtYXliZSBJJiMzOTttIG1pc3Npbmcgc29tZXRoaW5nLCBpcyB0aGVyZSBhbnkgdGVzdCBtb2RlIG9yIHNpbSBtb2RlIHdpdGhpbiBgYXRoMTJrYD8gSSBzaG91bGQgbm90IGFzc3VtZSwgSSB3aWxsIGNoZWNrLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAzIDE2OjI3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3NpbSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5oPTQ4OD1zdHJ1Y3QgYXRoMTJrX2xpbmtfc3RhIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuaC00OTEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuaDo0OTI6XHQvKiBsaW5rIGFkZHJlc3Mgc2ltaWxhciB0byBpZWVlODAyMTFfbGlua19zdGEgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5oLTQ5My1cdHU4IGFkZHJbRVRIX0FMRU5dO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jLTEyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmM6MTM6c3RhdGljIHNzaXplX3QgYXRoMTJrX3dyaXRlX3NpbXVsYXRlX3JhZGFyKHN0cnVjdCBmaWxlICpmaWxlLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmMtMTQtXHRcdFx0XHRcdCAgIGNvbnN0IGNoYXIgX191c2VyICp1c2VyX2J1Zixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYy0yMC1cdHdpcGh5X2xvY2soYXRoMTJrX2FyX3RvX2h3KGFyKS1cdTAwM2V3aXBoeSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYzoyMTpcdHJldCA9IGF0aDEya193bWlfc2ltdWxhdGVfcmFkYXIoYXIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmMtMjItXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jLTMwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmM6MzE6c3RhdGljIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgZm9wc19zaW11bGF0ZV9yYWRhciA9IHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jOjMyOlx0LndyaXRlID0gYXRoMTJrX3dyaXRlX3NpbXVsYXRlX3JhZGFyLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmM6MzM6XHQub3BlbiA9IHNpbXBsZV9vcGVuXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYy0zNC19O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmMtMzUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYzozNjpzdGF0aWMgc3NpemVfdCBhdGgxMmtfcmVhZF9zaW11bGF0ZV9md19jcmFzaChzdHJ1Y3QgZmlsZSAqZmlsZSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jLTM3LVx0XHRcdFx0XHQgICAgIGNoYXIgX191c2VyICp1c2VyX2J1Zixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYy00MC1cdGNvbnN0IGNoYXIgYnVmW10gPVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmM6NDE6XHRcdFwmIzM0O1RvIHNpbXVsYXRlIGZpcm13YXJlIGNyYXNoIHdyaXRlIG9uZSBvZiB0aGUga2V5d29yZHMgdG8gdGhpcyBmaWxlOlxcblwmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmMtNDItXHRcdFwmIzM0O2Bhc3NlcnRgIC0gc2VuZCBXTUlfRk9SQ0VfRldfSEFOR19DTURJRCB0byBmaXJtd2FyZSB0byBjYXVzZSBhc3NlcnQuXFxuXCYjMzQ7O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmMtNDMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYzo0NDpcdHJldHVybiBzaW1wbGVfcmVhZF9mcm9tX2J1ZmZlcih1c2VyX2J1ZiwgY291bnQsIHBwb3MsIGJ1Ziwgc3RybGVuKGJ1ZikpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmMtNDUtfVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jPTQ3PXN0YXRpYyBzc2l6ZV90XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYzo0ODphdGgxMmtfd3JpdGVfc2ltdWxhdGVfZndfY3Jhc2goc3RydWN0IGZpbGUgKmZpbGUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYy00OS1cdFx0XHQgICAgICAgY29uc3QgY2hhciBfX3VzZXIgKnVzZXJfYnVmLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jLTYyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmM6NjM6XHRyYyA9IHNpbXBsZV93cml0ZV90b19idWZmZXIoYnVmLCBzaXplb2YoYnVmKSAtIDEsIHBwb3MsIHVzZXJfYnVmLCBjb3VudCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYy02NC1cdGlmIChyYyBcdTAwM2MgMClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYy04MS1cdGlmICghc3RyY21wKGJ1ZiwgXCYjMzQ7YXNzZXJ0XCYjMzQ7KSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmM6ODI6XHRcdGF0aDEya19pbmZvKGFiLCBcJiMzNDtzaW11bGF0aW5nIGZpcm13YXJlIGFzc2VydCBjcmFzaFxcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYy04My1cdFx0cmV0ID0gYXRoMTJrX3dtaV9mb3JjZV9md19oYW5nX2NtZChhcixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYy05MC1cdGlmIChyZXQpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jOjkxOlx0XHRhdGgxMmtfd2FybihhYiwgXCYjMzQ7ZmFpbGVkIHRvIHNpbXVsYXRlIGZpcm13YXJlIGNyYXNoOiAlZFxcblwmIzM0OywgcmV0KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jLTkyLVx0XHRyZXR1cm4gcmV0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jLTk3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmM6OTg6c3RhdGljIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgZm9wc19zaW11bGF0ZV9md19jcmFzaCA9IHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jOjk5Olx0LnJlYWQgPSBhdGgxMmtfcmVhZF9zaW11bGF0ZV9md19jcmFzaCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jOjEwMDpcdC53cml0ZSA9IGF0aDEya193cml0ZV9zaW11bGF0ZV9md19jcmFzaCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jOjEwMTpcdC5vcGVuID0gc2ltcGxlX29wZW4sXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYy0xMDItXHQub3duZXIgPSBUSElTX01PRFVMRSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYz03ODM9c3RhdGljIHNzaXplX3QgYXRoMTJrX3JlYWRfdHBjX3N0YXRzKHN0cnVjdCBmaWxlICpmaWxlLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jLTc4OS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jOjc5MDpcdHJldHVybiBzaW1wbGVfcmVhZF9mcm9tX2J1ZmZlcih1c2VyX2J1ZiwgY291bnQsIHBwb3MsIGJ1ZiwgbGVuKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jLTc5MS19XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmM9ODA4PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIGZvcHNfdHBjX3N0YXRzX3R5cGUgPSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYy04MDktXHQud3JpdGUgPSBhdGgxMmtfd3JpdGVfdHBjX3N0YXRzX3R5cGUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYzo4MTA6XHQub3BlbiA9IHNpbXBsZV9vcGVuLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmMtODExLVx0Lmxsc2VlayA9IGRlZmF1bHRfbGxzZWVrLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jPTg4ND1zdGF0aWMgc3NpemVfdCBhdGgxMmtfcmVhZF9leHRkX3J4X3N0YXRzKHN0cnVjdCBmaWxlICpmaWxlLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jLTg5Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jOjg5NzpcdHJldHVybiBzaW1wbGVfcmVhZF9mcm9tX2J1ZmZlcih1YnVmLCBjb3VudCwgcHBvcywgYnVmLCBsZW4pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmMtODk4LX1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYz05MDA9c3RhdGljIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgZm9wc19leHRkX3J4X3N0YXRzID0ge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jLTkwMi1cdC53cml0ZSA9IGF0aDEya193cml0ZV9leHRkX3J4X3N0YXRzLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmM6OTAzOlx0Lm9wZW4gPSBzaW1wbGVfb3BlbixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jLTkwNC19O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jPTk5Nz1zdGF0aWMgc3NpemVfdCBhdGgxMmtfcmVhZF9saW5rX3N0YXRzKHN0cnVjdCBmaWxlICpmaWxlLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jLTEwMDMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYzoxMDA0Olx0cmV0dXJuIHNpbXBsZV9yZWFkX2Zyb21fYnVmZmVyKHVzZXJfYnVmLCBjb3VudCwgcHBvcywgYnVmLCBsZW4pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmMtMTAwNS19XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmM9MTAyNT1zdGF0aWMgc3NpemVfdCBhdGgxMmtfZGVidWdmc19kdW1wX2RldmljZV9kcF9zdGF0cyhzdHJ1Y3QgZmlsZSAqZmlsZSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYy0xMjAyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmM6MTIwMzpcdHJldCA9IHNpbXBsZV9yZWFkX2Zyb21fYnVmZmVyKHVzZXJfYnVmLCBjb3VudCwgcHBvcywgYnVmLCBsZW4pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmMtMTIwNC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYz0xMjA4PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIGZvcHNfZGV2aWNlX2RwX3N0YXRzID0ge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmMtMTIwOS1cdC5yZWFkID0gYXRoMTJrX2RlYnVnZnNfZHVtcF9kZXZpY2VfZHBfc3RhdHMsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYzoxMjEwOlx0Lm9wZW4gPSBzaW1wbGVfb3BlbixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jLTEyMTEtXHQub3duZXIgPSBUSElTX01PRFVMRSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYz0xMjE1PXZvaWQgYXRoMTJrX2RlYnVnZnNfcGRldl9jcmVhdGUoc3RydWN0IGF0aDEya19iYXNlICphYilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jLTEyMTYte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmM6MTIxNzpcdGRlYnVnZnNfY3JlYXRlX2ZpbGUoXCYjMzQ7c2ltdWxhdGVfZndfY3Jhc2hcJiMzNDssIDA2MDAsIGFiLVx1MDAzZWRlYnVnZnNfc29jLCBhYixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jOjEyMTg6XHRcdFx0ICAgIFx1MDAyNmZvcHNfc2ltdWxhdGVfZndfY3Jhc2gpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmMtMTIxOS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYz0xMjUwPXZvaWQgYXRoMTJrX2RlYnVnZnNfc29jX2Rlc3Ryb3koc3RydWN0IGF0aDEya19iYXNlICphYilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYy0xMjU0LVx0LyogV2UgYXJlIG5vdCByZW1vdmluZyBhdGgxMmsgZGlyZWN0b3J5IG9uIHB1cnBvc2UsIGV2ZW4gaWYgaXRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jOjEyNTU6XHQgKiB3b3VsZCBiZSBlbXB0eS4gVGhpcyBzaW1wbGlmaWVzIHRoZSBkaXJlY3RvcnkgaGFuZGxpbmcgYW5kIGl0JiMzOTtzXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYy0xMjU2LVx0ICogYSBtaW5vciBjb3NtZXRpYyBpc3N1ZSB0byBsZWF2ZSBhbiBlbXB0eSBhdGgxMmsgZGlyZWN0b3J5IHRvXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmM9MTMwNz1zdGF0aWMgc3NpemVfdCBhdGgxMmtfcmVhZF92ZGV2X3N0YXRzKHN0cnVjdCBmaWxlICpmaWxlLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jLTEzMTMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYzoxMzE0Olx0cmV0dXJuIHNpbXBsZV9yZWFkX2Zyb21fYnVmZmVyKHVzZXJfYnVmLCBjb3VudCwgcHBvcywgYnVmLCBsZW4pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmMtMTMxNS19XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmM9MTM3ND1zdGF0aWMgc3NpemVfdCBhdGgxMmtfcmVhZF9iY25fc3RhdHMoc3RydWN0IGZpbGUgKmZpbGUsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmMtMTM4MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jOjEzODE6XHRyZXR1cm4gc2ltcGxlX3JlYWRfZnJvbV9idWZmZXIodXNlcl9idWYsIGNvdW50LCBwcG9zLCBidWYsIGxlbik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYy0xMzgyLX1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYz0xNDM1PXN0YXRpYyBzc2l6ZV90IGF0aDEya19yZWFkX3BkZXZfc3RhdHMoc3RydWN0IGZpbGUgKmZpbGUsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmMtMTQ0MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jOjE0NDI6XHRyZXR1cm4gc2ltcGxlX3JlYWRfZnJvbV9idWZmZXIodXNlcl9idWYsIGNvdW50LCBwcG9zLCBidWYsIGxlbik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYy0xNDQzLX1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYz0xNDcyPXZvaWQgYXRoMTJrX2RlYnVnZnNfcmVnaXN0ZXIoc3RydWN0IGF0aDEyayAqYXIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmMtMTUwNi1cdGlmIChhci1cdTAwM2VtYWMuc2JhbmRzW05MODAyMTFfQkFORF81R0haXS5jaGFubmVscykge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmM6MTUwNzpcdFx0ZGVidWdmc19jcmVhdGVfZmlsZShcJiMzNDtkZnNfc2ltdWxhdGVfcmFkYXJcJiMzNDssIDAyMDAsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYy0xNTA4LVx0XHRcdFx0ICAgIGFyLVx1MDAzZWRlYnVnLmRlYnVnZnNfcGRldiwgYXIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYzoxNTA5Olx0XHRcdFx0ICAgIFx1MDAyNmZvcHNfc2ltdWxhdGVfcmFkYXIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmMtMTUxMC1cdH1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnNfaHR0X3N0YXRzLmM9NjE2NT1zdGF0aWMgc3NpemVfdCBhdGgxMmtfcmVhZF9odHRfc3RhdHNfdHlwZShzdHJ1Y3QgZmlsZSAqZmlsZSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnNfaHR0X3N0YXRzLmMtNjE3OS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmc19odHRfc3RhdHMuYzo2MTgwOlx0cmV0dXJuIHNpbXBsZV9yZWFkX2Zyb21fYnVmZmVyKHVzZXJfYnVmLCBjb3VudCwgcHBvcywgYnVmLCBsZW4pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzX2h0dF9zdGF0cy5jLTYxODEtfVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmc19odHRfc3RhdHMuYz02MjI1PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIGZvcHNfaHR0X3N0YXRzX3R5cGUgPSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzX2h0dF9zdGF0cy5jLTYyMjctXHQud3JpdGUgPSBhdGgxMmtfd3JpdGVfaHR0X3N0YXRzX3R5cGUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnNfaHR0X3N0YXRzLmM6NjIyODpcdC5vcGVuID0gc2ltcGxlX29wZW4sXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnNfaHR0X3N0YXRzLmMtNjIyOS1cdC5vd25lciA9IFRISVNfTU9EVUxFLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmc19odHRfc3RhdHMuYz02MzUxPXN0YXRpYyBzc2l6ZV90IGF0aDEya19yZWFkX2h0dF9zdGF0cyhzdHJ1Y3QgZmlsZSAqZmlsZSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnNfaHR0X3N0YXRzLmMtNjM2MC1cdGxlbmd0aCA9IG1pbl90KHUzMiwgc3RhdHNfcmVxLVx1MDAzZWJ1Zl9sZW4sIEFUSDEyS19IVFRfU1RBVFNfQlVGX1NJWkUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzX2h0dF9zdGF0cy5jOjYzNjE6XHRyZXR1cm4gc2ltcGxlX3JlYWRfZnJvbV9idWZmZXIodXNlcl9idWYsIGNvdW50LCBwcG9zLCBidWYsIGxlbmd0aCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnNfaHR0X3N0YXRzLmMtNjM2Mi19XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzX2h0dF9zdGF0cy5jPTY0MjY9c3RhdGljIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgZm9wc19odHRfc3RhdHNfcmVzZXQgPSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnNfaHR0X3N0YXRzLmMtNjQyNy1cdC53cml0ZSA9IGF0aDEya193cml0ZV9odHRfc3RhdHNfcmVzZXQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnNfaHR0X3N0YXRzLmM6NjQyODpcdC5vcGVuID0gc2ltcGxlX29wZW4sXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnNfaHR0X3N0YXRzLmMtNjQyOS1cdC5vd25lciA9IFRISVNfTU9EVUxFLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmc19zdGEuYz0xMzk9c3RhdGljIHNzaXplX3QgYXRoMTJrX2RiZ19zdGFfZHVtcF9yeF9zdGF0cyhzdHJ1Y3QgZmlsZSAqZmlsZSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnNfc3RhLmMtMjQxLVx0aWYgKGxlbilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmc19zdGEuYzoyNDI6XHRcdHJldCA9IHNpbXBsZV9yZWFkX2Zyb21fYnVmZmVyKHVzZXJfYnVmLCBjb3VudCwgcHBvcywgYnVmLCBsZW4pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzX3N0YS5jLTI0My1cdHJldHVybiByZXQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzX3N0YS5jPTI0Nj1zdGF0aWMgY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBmb3BzX3J4X3N0YXRzID0ge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzX3N0YS5jLTI0Ny1cdC5yZWFkID0gYXRoMTJrX2RiZ19zdGFfZHVtcF9yeF9zdGF0cyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmc19zdGEuYzoyNDg6XHQub3BlbiA9IHNpbXBsZV9vcGVuLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzX3N0YS5jLTI0OS1cdC5vd25lciA9IFRISVNfTU9EVUxFLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmc19zdGEuYz0yOTY9c3RhdGljIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgZm9wc19yZXNldF9yeF9zdGF0cyA9IHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmc19zdGEuYy0yOTctXHQud3JpdGUgPSBhdGgxMmtfZGJnX3N0YV9yZXNldF9yeF9zdGF0cyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmc19zdGEuYzoyOTg6XHQub3BlbiA9IHNpbXBsZV9vcGVuLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzX3N0YS5jLTI5OS1cdC5vd25lciA9IFRISVNfTU9EVUxFLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHBfcGVlci5jPTUyOT1pbnQgYXRoMTJrX2RwX2xpbmtfcGVlcl9hc3NpZ24oc3RydWN0IGF0aDEya19kcCAqZHAsIHN0cnVjdCBhdGgxMmtfZHBfaHcgKmRwX2h3LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHBfcGVlci5jLTU5Mi1cdFx0ICogSWYgb2xkIGVudHJ5IGFkZGl0aW9uIGFsc28gZmFpbHMsIHRoZW4gbm90aGluZ1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kcF9wZWVyLmM6NTkzOlx0XHQgKiBjYW4gYmUgZG9uZSwgc2ltcGx5IHByb2NlZWRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHBfcGVlci5jLTU5NC1cdFx0ICovXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9tYWMuYz0yMzcyPXN0YXRpYyB2b2lkIGF0aDEya19wZWVyX2Fzc29jX2hfdmh0KHN0cnVjdCBhdGgxMmsgKmFyLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmMtMjQxMy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmM6MjQxNDpcdC8qIFRPRE86IHNpbWlsYXIgZmxhZ3MgcmVxdWlyZWQ/ICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jLTI0MTUtXHRhcmctXHUwMDNldmh0X2NhcGFibGUgPSB0cnVlO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcmVnLmM9MjY5PWludCBhdGgxMmtfcmVnZF91cGRhdGUoc3RydWN0IGF0aDEyayAqYXIsIGJvb2wgaW5pdClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3JlZy5jLTMzNy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcmVnLmM6MzM4Olx0LyogZmlybXdhcmUgcHJvdmlkZXMgcmVnIHJ1bGVzIHdoaWNoIGFyZSBzaW1pbGFyIGZvciAyIEdIeiBhbmQgNSBHSHpcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcmVnLmMtMzM5LVx0ICogcGRldiBidXQgNiBHSHogcGRldiBoYXMgc3VwZXJzZXQgb2YgYWxsIHJ1bGVzIGluY2x1ZGluZyBydWxlcyBmb3Jcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5jPTEwMDIzPWF0aDEya193bWlfc2VuZF91bml0X3Rlc3RfY21kKHN0cnVjdCBhdGgxMmsgKmFyLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmMtMTAwNzUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5jOjEwMDc2OmludCBhdGgxMmtfd21pX3NpbXVsYXRlX3JhZGFyKHN0cnVjdCBhdGgxMmsgKmFyKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuYy0xMDA3Ny17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuYy0xMDA5NS1cdCAqIEN1cnJlbnRseSB3ZSBjb3VsZCBwYXNzIHNlZ21lbnRfaWQoYjAgLSBiMSksIGNoaXJwKGIyKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuYzoxMDA5NjpcdCAqIGZyZXEgb2Zmc2V0IChiMyAtIGIxMCkgdG8gdW5pdCB0ZXN0LiBGb3Igc2ltdWxhdGlvblxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuYy0xMDA5Ny1cdCAqIHB1cnBvc2UgdGhpcyBjYW4gYmUgc2V0IHRvIDAgd2hpY2ggaXMgdmFsaWQuXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuaD0zNjY1PWVudW0gd21pX3N0YV9wc19tb2RlIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5oLTM2NzctLyogdHlwZSwgMDp1bnVzZWQgMTogQVNTRVJUIDI6IG5vdCByZXNwb25kIGRldGVjdCBjb21tYW5kXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5oOjM2Nzg6ICogZGVsYXlfdGltZV9tcywgdGhlIHNpbXVsYXRlIHdpbGwgZGVsYXkgdGltZVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuaC0zNjc5LSAqL1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmg9NjQ2Nj1pbnQgYXRoMTJrX3dtaV9zZW5kX3BkZXZfc2V0X3JlZ2RvbWFpbihzdHJ1Y3QgYXRoMTJrICphcixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmgtNjQ2Ny1cdFx0XHRcdCAgICAgICBzdHJ1Y3QgYXRoMTJrX3dtaV9wZGV2X3NldF9yZWdkb21haW5fYXJnICphcmcpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuaDo2NDY4OmludCBhdGgxMmtfd21pX3NpbXVsYXRlX3JhZGFyKHN0cnVjdCBhdGgxMmsgKmFyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmgtNjQ2OS1pbnQgYXRoMTJrX3dtaV9zZW5kX3R3dF9lbmFibGVfY21kKHN0cnVjdCBhdGgxMmsgKmFyLCB1MzIgcGRldl9pZCk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDMgMTY6Mjc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTM2MzcKCQkJCQkJCW91dHB1dDogMTMzCgkJCQkJCQl0aG91Z2h0czogNzk1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKlVucmVhY2hhYmxlIENvZGUgUGF0aHMgaW4gVmlydHVhbGl6ZWQgRW52aXJvbm1lbnRzKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciB0aGUgYGF0aDEya2AgZHJpdmVyLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCB0aGlzIGlzIGZvciByZWFsIGhhcmR3YXJlLCBzcGVjaWZpY2FsbHkgUXVhbGNvbW0gV2ktRmkgNyBkZXZpY2VzLiAgSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaWYgdGhlc2UgY29kZSBjaGFuZ2VzIGFyZSB3b3J0aCBmdXp6aW5nLiBJIGNhbiBzZWUgdGhlcmUgYXJlIGBzaW11bGF0ZV9yYWRhcmAgYW5kIGBzaW11bGF0ZV9md19jcmFzaGAgZGVidWdmcyBjb21tYW5kcywgYnV0IG5vdGhpbmcgbGlrZSBhIGZ1bGwgTUFDL1BIWSBzaW11bGF0aW9uIGxpa2UgYGh3c2ltYC4gIE15IGluc3RpbmN0IGlzIHRoYXQsIG5vLCB0aGV5JiMzOTtyZSBub3QuCgpJIHN0YXJ0ZWQgdG8gdGhpbmsgYWJvdXQgU3l6a2FsbGVyLiBJdCBoYXMgYSBQQ0kgZnV6emVyLCBhbmQgSSB3b25kZXJlZCBpZiB0aGF0IGNvdWxkIGJlIHVzZWQgb24gYGF0aDEya2AuICBQZXJoYXBzIGlmIHRoZSBmdXp6ZXIgY291bGQgdHJpZ2dlciBXTUkgZXZlbnRzIGJ5IHdyaXRpbmcgdG8gTU1JTywgaXQgbWlnaHQgcmVhY2ggZnVuY3Rpb25zIGxpa2UgYGF0aDEya19jaGFuX2luZm9fZXZlbnRgLiBCdXQgdGhlbiBJIHJlbWVtYmVyZWQgdGhhdCBXTUkgZXZlbnRzIGFyZSBjb21wbGV4IHN0cnVjdHVyZXMgc2VudCB2aWEgTUhJIG9yIHRoZSBDb3B5IEVuZ2luZS4gSXQmIzM5O3MgaW5jcmVkaWJseSB1bmxpa2VseSB0aGF0IGEgcmFuZG9tIE1NSU8gd3JpdGUgd291bGQgZW11bGF0ZSBhIHZhbGlkIFdNSSBldmVudCBzZXF1ZW5jZS4gIEhtbSwgU3l6a2FsbGVyIGFsc28gaGFzIGEgbWFjODAyMTEgZnV6emVyICh2aWEgaHdzaW0pLiBIb3dldmVyLCBgaHdzaW1gIG9ubHkgZnV6emVzIG1hYzgwMjExLCBub3QgYGF0aDEya2AuCgpJIHJlLXJlYWQgdGhlIHByb21wdC4gSXQgc2F5cyB0byByZXR1cm4gYFdvcnRoRnV6emluZz1mYWxzZWAgaWYgdGhlIHBhdGNoIGNvbmNlcm5zICYjMzQ7Q29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLCBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuJiMzNDsgU2luY2UgYGF0aDEya2AgaXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBkcml2ZXIgZm9yIGEgUENJL0FIQiBkZXZpY2UsIGFuZCB0aGVyZSYjMzk7cyBubyBzb2Z0d2FyZSBlbXVsYXRpb24gZm9yIGl0IGluIFFFTVUvR0NFLCBpdCYjMzk7cyBpbXBvc3NpYmxlIHRvIHJlYWNoIHRoZXNlIGNvZGUgcGF0aHMgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4KCkp1c3QgdG8gYmUgc3VyZSwgbGV0IG1lIGNoZWNrLiBJIGtub3cgdGhhdCBgYXRoMTJrX21hY19vcF9nZXRfc3VydmV5YCBpcyByZWdpc3RlcmVkIGFzIGEgbWFjODAyMTEgY2FsbGJhY2suIFRvIHJlZ2lzdGVyIGl0LCBgYXRoMTJrX21hY19yZWdpc3RlcmAgbXVzdCBiZSBjYWxsZWQuIGBhdGgxMmtfbWFjX3JlZ2lzdGVyYCBpcyBjYWxsZWQgZHVyaW5nIGRldmljZSBpbml0aWFsaXphdGlvbiAoYGF0aDEya19jb3JlX3N0YXJ0YCkuIERldmljZSBpbml0aWFsaXphdGlvbiByZXF1aXJlcyBhIHJlYWwgUENJL0FIQiBkZXZpY2UgdG8gcHJvYmUsIGFuZCB0aGVuIGl0IGNvbW11bmljYXRlcyB3aXRoIHRoZSBmaXJtd2FyZSB0byBnZXQgY2FwYWJpbGl0aWVzIGJlZm9yZSByZWdpc3RlcmluZyB3aXRoIG1hYzgwMjExLiBXaXRob3V0IHJlYWwgaGFyZHdhcmUgb3IgYSBzcGVjaWZpYyBlbXVsYXRvciwgYGF0aDEya19jb3JlX3N0YXJ0YCBpcyBnb2luZyB0byBmYWlsIGVhcmx5LiAgSXQmIzM5O2xsIGZhaWwgdG8gbG9hZCBmaXJtd2FyZSwgZmFpbCB0byBpbml0aWFsaXplIE1ISSwgZmFpbCB0byBnZXQgV01JIHJlYWR5LiAgVGhlcmVmb3JlLCB0aGUgbWFjODAyMTEgY2FsbGJhY2tzIGZvciBgYXRoMTJrYCB3aWxsIG5ldmVyIGJlIHJlZ2lzdGVyZWQgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4gU28geWVzLCB0aGUgY29kZSBwYXRocyBhcmUgaW1wb3NzaWJsZSB0byByZWFjaC4KCk9rYXksIGxldCBtZSBjb25maXJtIHRoaXMgcmVhc29uaW5nLiBUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGBhdGgxMmtgIGRyaXZlci4gSXQgcmVxdWlyZXMgcmVhbCBoYXJkd2FyZSBhbmQgZmlybXdhcmUgdG8gYm9vdC4gSW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCBsaWtlIEdDRSBvciBRRU1VIHdpdGhvdXQgUENJIHBhc3N0aHJvdWdoIG9mIHRoZSBzcGVjaWZpYyBoYXJkd2FyZSwgdGhlIGRyaXZlciB3aWxsIG5vdCBwcm9iZSBzdWNjZXNzZnVsbHkuIEV2ZW4gd2l0aCBTeXprYWxsZXImIzM5O3MgUENJIGZ1enplciwgaXQmIzM5O3MgcHJhY3RpY2FsbHkgaW1wb3NzaWJsZSB0byBwYXNzIHRoZSBjb21wbGV4IGZpcm13YXJlIGJvb3Qgc2VxdWVuY2UgKE1ISSwgUU1JLCBXTUkpIHRvIHJlZ2lzdGVyIHRoZSBtYWM4MDIxMSBkZXZpY2UuIFRodXMsIHRoZSBtb2RpZmllZCBmdW5jdGlvbnMgKGBhdGgxMmtfbWFjX29wX2dldF9zdXJ2ZXlgLCBgYXRoMTJrX2NoYW5faW5mb19ldmVudGAsIGV0Yy4pIGFyZSB1bnJlYWNoYWJsZS4gVGhlcmVmb3JlLCBgV29ydGhGdXp6aW5nYCBzaG91bGQgYmUgYGZhbHNlYC4KCkp1c3QgdG8gYmUgYWJzb2x1dGVseSBzdXJlLCBsZXQgbWUgY2hlY2sgaWYgdGhlcmUgaXMgYW55IG90aGVyIHdheS4gSXMgdGhlcmUgYSBkdW1teSBvciB0ZXN0IG1vZGUgaW4gYGF0aDEya2A/IEkgc2VhcmNoZWQgZm9yICYjMzQ7c2ltJiMzNDsgYW5kIGZvdW5kIGBzaW11bGF0ZV9yYWRhcmAgYW5kIGBzaW11bGF0ZV9md19jcmFzaGAsIHdoaWNoIGFyZSBkZWJ1Z2ZzIGNvbW1hbmRzIHRvIHNlbmQgV01JIGNvbW1hbmRzIHRvIHRoZSBmaXJtd2FyZS4gVGhleSBzdGlsbCByZXF1aXJlIHRoZSBmaXJtd2FyZSB0byBiZSBydW5uaW5nLiBUaGVyZSBpcyBubyBgaHdzaW1gIGVxdWl2YWxlbnQgZm9yIGBhdGgxMmtgLiBTbyB5ZXMsIGl0JiMzOTtzIHVucmVhY2hhYmxlLgoKSSYjMzk7bSBnb2luZyB0byBzZXQgYFdvcnRoRnV6emluZz1mYWxzZWAgYW5kIHByb3ZpZGUgdGhpcyByZWFzb25pbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDMgMTY6Mjc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgYXRoMTJrIGRyaXZlciwgd2hpY2ggaXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBkcml2ZXIgZm9yIFF1YWxjb21tIFdpLUZpIDcgUENJZS9BSEIgZGV2aWNlcy4gVGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgKG1hYzgwMjExIGNhbGxiYWNrcyBhbmQgV01JIGV2ZW50IGhhbmRsZXJzKSByZXF1aXJlIGEgc3VjY2Vzc2Z1bCBkZXZpY2UgcHJvYmUgYW5kIGZpcm13YXJlIGJvb3Qgc2VxdWVuY2UgKE1ISSwgUU1JLCBXTUkpIHRvIGJlIHJlYWNoYWJsZS4gU2luY2UgdGhlcmUgaXMgbm8gc29mdHdhcmUgZW11bGF0aW9uIGZvciB0aGlzIGhhcmR3YXJlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgR0NFLCB0aGVzZSBjb2RlIHBhdGhzIGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGFuZCBmdXp6LiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGF0aDEyayBkcml2ZXIsIHdoaWNoIGlzIGEgaGFyZHdhcmUtc3BlY2lmaWMgZHJpdmVyIGZvciBRdWFsY29tbSBXaS1GaSA3IFBDSWUvQUhCIGRldmljZXMuIFRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIChtYWM4MDIxMSBjYWxsYmFja3MgYW5kIFdNSSBldmVudCBoYW5kbGVycykgcmVxdWlyZSBhIHN1Y2Nlc3NmdWwgZGV2aWNlIHByb2JlIGFuZCBmaXJtd2FyZSBib290IHNlcXVlbmNlIChNSEksIFFNSSwgV01JKSB0byBiZSByZWFjaGFibGUuIFNpbmNlIHRoZXJlIGlzIG5vIHNvZnR3YXJlIGVtdWxhdGlvbiBmb3IgdGhpcyBoYXJkd2FyZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRSwgdGhlc2UgY29kZSBwYXRocyBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBhbmQgZnV6ei4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0wM1QxNjoyMjoxMy4yNDk5Nzg1MzRaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozMTgxNjM4MjE2MDksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBhdGgxMmsgZHJpdmVyLCB3aGljaCBpcyBhIGhhcmR3YXJlLXNwZWNpZmljIGRyaXZlciBmb3IgUXVhbGNvbW0gV2ktRmkgNyBQQ0llL0FIQiBkZXZpY2VzLiBUaGUgbW9kaWZpZWQgY29kZSBwYXRocyAobWFjODAyMTEgY2FsbGJhY2tzIGFuZCBXTUkgZXZlbnQgaGFuZGxlcnMpIHJlcXVpcmUgYSBzdWNjZXNzZnVsIGRldmljZSBwcm9iZSBhbmQgZmlybXdhcmUgYm9vdCBzZXF1ZW5jZSAoTUhJLCBRTUksIFdNSSkgdG8gYmUgcmVhY2hhYmxlLiBTaW5jZSB0aGVyZSBpcyBubyBzb2Z0d2FyZSBlbXVsYXRpb24gZm9yIHRoaXMgaGFyZHdhcmUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHQ0UsIHRoZXNlIGNvZGUgcGF0aHMgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggYW5kIGZ1enouXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wM1QxNjoyMjoxMy4yNDk5ODMzMDRaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM3MTc5MTc3NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDUxOTkzMmYxNTBkYzYzMTU1NWViZjA0YjM0ZGZmZGUxOWEzZDRjMDVcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIEZyaSBKdWwgMyAxNjoyMjoxMiAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5oXFxuaW5kZXggOGJlNDM1NTM1YTRlOGIuLjZjZTJmN2IzZmE1MDEyIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5oXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmhcXG5AQCAtNzEyLDcgKzcxMiw2IEBAIHN0cnVjdCBhdGgxMmsge1xcbiBcXHQgKiBhdm9pZCByZXBvcnRpbmcgZ2FyYmFnZSBkYXRhLlxcbiBcXHQgKi9cXG4gXFx0Ym9vbCBjaF9pbmZvX2Nhbl9yZXBvcnRfc3VydmV5O1xcbi1cXHRzdHJ1Y3Qgc3VydmV5X2luZm8gc3VydmV5W0FUSDEyS19OVU1fQ0hBTlNdO1xcbiBcXHRzdHJ1Y3QgY29tcGxldGlvbiBic3Nfc3VydmV5X2RvbmU7XFxuIFxcbiBcXHRzdHJ1Y3Qgd29ya19zdHJ1Y3QgcmVnZF91cGRhdGVfd29yaztcXG5AQCAtNzc0LDYgKzc3MywxMSBAQCBzdHJ1Y3QgYXRoMTJrX2h3IHtcXG4gXFx0ICovXFxuIFxcdHN0cnVjdCBtdXRleCBod19tdXRleDtcXG4gXFx0ZW51bSBhdGgxMmtfaHdfc3RhdGUgc3RhdGU7XFxuK1xcbitcXHQvKiBwcm90ZWN0cyBzdXJ2ZXlbXSBzaGFyZWQgYWNyb3NzIHJhZGlvcyBvZiB0aGlzIGh3LiAqL1xcbitcXHRzcGlubG9ja190IHN1cnZleV9sb2NrO1xcbitcXHRzdHJ1Y3Qgc3VydmV5X2luZm8gc3VydmV5W0FUSDEyS19OVU1fQ0hBTlNdO1xcbitcXG4gXFx0Ym9vbCByZWdkX3VwZGF0ZWQ7XFxuIFxcdGJvb2wgdXNlXzZnaHpfcmVnZDtcXG4gXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jXFxuaW5kZXggMmNmZjk0ODVjOTVhZmIuLmRhZjliYzg3MjJkZmJhIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmNcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jXFxuQEAgLTEzMzQ4LDUyICsxMzM0OCw1NCBAQCBhdGgxMmtfbWFjX3VwZGF0ZV9ic3NfY2hhbl9zdXJ2ZXkoc3RydWN0IGF0aDEyayAqYXIsXFxuIGludCBhdGgxMmtfbWFjX29wX2dldF9zdXJ2ZXkoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsIGludCBpZHgsXFxuIFxcdFxcdFxcdCAgICAgc3RydWN0IHN1cnZleV9pbmZvICpzdXJ2ZXkpXFxuIHtcXG4rXFx0c3RydWN0IGF0aDEya19odyAqYWggPSBody1cXHUwMDNlcHJpdjtcXG4gXFx0c3RydWN0IGF0aDEyayAqYXI7XFxuIFxcdHN0cnVjdCBpZWVlODAyMTFfc3VwcG9ydGVkX2JhbmQgKnNiYW5kO1xcbi1cXHRzdHJ1Y3Qgc3VydmV5X2luZm8gKmFyX3N1cnZleTtcXG4rXFx0c3RydWN0IHN1cnZleV9pbmZvICphaF9zdXJ2ZXk7XFxuK1xcdGludCBzYmFuZF9pZHggPSBpZHg7XFxuIFxcbiBcXHRsb2NrZGVwX2Fzc2VydF93aXBoeShody1cXHUwMDNld2lwaHkpO1xcbiBcXG4tXFx0aWYgKGlkeCBcXHUwMDNlPSBBVEgxMktfTlVNX0NIQU5TKVxcbitcXHRpZiAoc2JhbmRfaWR4IFxcdTAwM2U9IEFUSDEyS19OVU1fQ0hBTlMpXFxuIFxcdFxcdHJldHVybiAtRU5PRU5UO1xcbiBcXG4gXFx0c2JhbmQgPSBody1cXHUwMDNld2lwaHktXFx1MDAzZWJhbmRzW05MODAyMTFfQkFORF8yR0haXTtcXG4tXFx0aWYgKHNiYW5kIFxcdTAwMjZcXHUwMDI2IGlkeCBcXHUwMDNlPSBzYmFuZC1cXHUwMDNlbl9jaGFubmVscykge1xcbi1cXHRcXHRpZHggLT0gc2JhbmQtXFx1MDAzZW5fY2hhbm5lbHM7XFxuK1xcdGlmIChzYmFuZCBcXHUwMDI2XFx1MDAyNiBzYmFuZF9pZHggXFx1MDAzZT0gc2JhbmQtXFx1MDAzZW5fY2hhbm5lbHMpIHtcXG4rXFx0XFx0c2JhbmRfaWR4IC09IHNiYW5kLVxcdTAwM2VuX2NoYW5uZWxzO1xcbiBcXHRcXHRzYmFuZCA9IE5VTEw7XFxuIFxcdH1cXG4gXFxuIFxcdGlmICghc2JhbmQpXFxuIFxcdFxcdHNiYW5kID0gaHctXFx1MDAzZXdpcGh5LVxcdTAwM2ViYW5kc1tOTDgwMjExX0JBTkRfNUdIWl07XFxuLVxcdGlmIChzYmFuZCBcXHUwMDI2XFx1MDAyNiBpZHggXFx1MDAzZT0gc2JhbmQtXFx1MDAzZW5fY2hhbm5lbHMpIHtcXG4tXFx0XFx0aWR4IC09IHNiYW5kLVxcdTAwM2VuX2NoYW5uZWxzO1xcbitcXHRpZiAoc2JhbmQgXFx1MDAyNlxcdTAwMjYgc2JhbmRfaWR4IFxcdTAwM2U9IHNiYW5kLVxcdTAwM2VuX2NoYW5uZWxzKSB7XFxuK1xcdFxcdHNiYW5kX2lkeCAtPSBzYmFuZC1cXHUwMDNlbl9jaGFubmVscztcXG4gXFx0XFx0c2JhbmQgPSBOVUxMO1xcbiBcXHR9XFxuIFxcbiBcXHRpZiAoIXNiYW5kKVxcbiBcXHRcXHRzYmFuZCA9IGh3LVxcdTAwM2V3aXBoeS1cXHUwMDNlYmFuZHNbTkw4MDIxMV9CQU5EXzZHSFpdO1xcbiBcXG4tXFx0aWYgKCFzYmFuZCB8fCBpZHggXFx1MDAzZT0gc2JhbmQtXFx1MDAzZW5fY2hhbm5lbHMpXFxuK1xcdGlmICghc2JhbmQgfHwgc2JhbmRfaWR4IFxcdTAwM2U9IHNiYW5kLVxcdTAwM2VuX2NoYW5uZWxzKVxcbiBcXHRcXHRyZXR1cm4gLUVOT0VOVDtcXG4gXFxuLVxcdGFyID0gYXRoMTJrX21hY19nZXRfYXJfYnlfY2hhbihodywgXFx1MDAyNnNiYW5kLVxcdTAwM2VjaGFubmVsc1tpZHhdKTtcXG4rXFx0YXIgPSBhdGgxMmtfbWFjX2dldF9hcl9ieV9jaGFuKGh3LCBcXHUwMDI2c2JhbmQtXFx1MDAzZWNoYW5uZWxzW3NiYW5kX2lkeF0pO1xcbiBcXHRpZiAoIWFyKSB7XFxuLVxcdFxcdGlmIChzYmFuZC1cXHUwMDNlY2hhbm5lbHNbaWR4XS5mbGFncyBcXHUwMDI2IElFRUU4MDIxMV9DSEFOX0RJU0FCTEVEKSB7XFxuK1xcdFxcdGlmIChzYmFuZC1cXHUwMDNlY2hhbm5lbHNbc2JhbmRfaWR4XS5mbGFncyBcXHUwMDI2IElFRUU4MDIxMV9DSEFOX0RJU0FCTEVEKSB7XFxuIFxcdFxcdFxcdG1lbXNldChzdXJ2ZXksIDAsIHNpemVvZigqc3VydmV5KSk7XFxuIFxcdFxcdFxcdHJldHVybiAwO1xcbiBcXHRcXHR9XFxuIFxcdFxcdHJldHVybiAtRU5PRU5UO1xcbiBcXHR9XFxuIFxcbi1cXHRhcl9zdXJ2ZXkgPSBcXHUwMDI2YXItXFx1MDAzZXN1cnZleVtpZHhdO1xcbitcXHRhaF9zdXJ2ZXkgPSBcXHUwMDI2YWgtXFx1MDAzZXN1cnZleVtpZHhdO1xcbiBcXG4tXFx0YXRoMTJrX21hY191cGRhdGVfYnNzX2NoYW5fc3VydmV5KGFyLCBcXHUwMDI2c2JhbmQtXFx1MDAzZWNoYW5uZWxzW2lkeF0pO1xcbitcXHRhdGgxMmtfbWFjX3VwZGF0ZV9ic3NfY2hhbl9zdXJ2ZXkoYXIsIFxcdTAwMjZzYmFuZC1cXHUwMDNlY2hhbm5lbHNbc2JhbmRfaWR4XSk7XFxuIFxcbi1cXHRzcGluX2xvY2tfYmgoXFx1MDAyNmFyLVxcdTAwM2VkYXRhX2xvY2spO1xcbi1cXHRtZW1jcHkoc3VydmV5LCBhcl9zdXJ2ZXksIHNpemVvZigqc3VydmV5KSk7XFxuLVxcdHNwaW5fdW5sb2NrX2JoKFxcdTAwMjZhci1cXHUwMDNlZGF0YV9sb2NrKTtcXG4rXFx0c2NvcGVkX2d1YXJkKHNwaW5sb2NrX2JoLCBcXHUwMDI2YWgtXFx1MDAzZXN1cnZleV9sb2NrKSB7XFxuK1xcdFxcdG1lbWNweShzdXJ2ZXksIGFoX3N1cnZleSwgc2l6ZW9mKCpzdXJ2ZXkpKTtcXG4rXFx0fVxcbiBcXG4tXFx0c3VydmV5LVxcdTAwM2VjaGFubmVsID0gXFx1MDAyNnNiYW5kLVxcdTAwM2VjaGFubmVsc1tpZHhdO1xcbitcXHRzdXJ2ZXktXFx1MDAzZWNoYW5uZWwgPSBcXHUwMDI2c2JhbmQtXFx1MDAzZWNoYW5uZWxzW3NiYW5kX2lkeF07XFxuIFxcbiBcXHRpZiAoYXItXFx1MDAzZXJ4X2NoYW5uZWwgPT0gc3VydmV5LVxcdTAwM2VjaGFubmVsKVxcbiBcXHRcXHRzdXJ2ZXktXFx1MDAzZWZpbGxlZCB8PSBTVVJWRVlfSU5GT19JTl9VU0U7XFxuQEAgLTE1MDU1LDYgKzE1MDU3LDcgQEAgc3RhdGljIHN0cnVjdCBhdGgxMmtfaHcgKmF0aDEya19tYWNfaHdfYWxsb2NhdGUoc3RydWN0IGF0aDEya19od19ncm91cCAqYWcsXFxuIFxcbiBcXHRtdXRleF9pbml0KFxcdTAwMjZhaC1cXHUwMDNlaHdfbXV0ZXgpO1xcbiBcXG4rXFx0c3Bpbl9sb2NrX2luaXQoXFx1MDAyNmFoLVxcdTAwM2VzdXJ2ZXlfbG9jayk7XFxuIFxcdHNwaW5fbG9ja19pbml0KFxcdTAwMjZhaC1cXHUwMDNlZHBfaHcucGVlcl9sb2NrKTtcXG4gXFx0SU5JVF9MSVNUX0hFQUQoXFx1MDAyNmFoLVxcdTAwM2VkcF9ody5kcF9wZWVyc19saXN0KTtcXG4gXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5jXFxuaW5kZXggYjVlOTA0YTU1YWVhYmIuLjNmMzczMGE2YzJhYzI3IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmNcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5jXFxuQEAgLTY2MTcsMTYgKzY2MTcsMTIgQEAgc3RhdGljIGludCBhdGgxMmtfcHVsbF9yb2FtX2V2KHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIsIHN0cnVjdCBza19idWZmICpza2IsXFxuIFxcdHJldHVybiAwO1xcbiB9XFxuIFxcbi1zdGF0aWMgaW50IGZyZXFfdG9faWR4KHN0cnVjdCBhdGgxMmsgKmFyLCBpbnQgZnJlcSlcXG4rc3RhdGljIGludCBmcmVxX3RvX2lkeChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywgaW50IGZyZXEpXFxuIHtcXG4gXFx0c3RydWN0IGllZWU4MDIxMV9zdXBwb3J0ZWRfYmFuZCAqc2JhbmQ7XFxuLVxcdHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3ID0gYXRoMTJrX2FyX3RvX2h3KGFyKTtcXG4gXFx0aW50IGJhbmQsIGNoLCBpZHggPSAwO1xcbiBcXG4gXFx0Zm9yIChiYW5kID0gTkw4MDIxMV9CQU5EXzJHSFo7IGJhbmQgXFx1MDAzYyBOVU1fTkw4MDIxMV9CQU5EUzsgYmFuZCsrKSB7XFxuLVxcdFxcdGlmICghYXItXFx1MDAzZW1hYy5zYmFuZHNbYmFuZF0uY2hhbm5lbHMpXFxuLVxcdFxcdFxcdGNvbnRpbnVlO1xcbi1cXG4gXFx0XFx0c2JhbmQgPSBody1cXHUwMDNld2lwaHktXFx1MDAzZWJhbmRzW2JhbmRdO1xcbiBcXHRcXHRpZiAoIXNiYW5kKVxcbiBcXHRcXHRcXHRjb250aW51ZTtcXG5AQCAtNzUwNyw2ICs3NTAzLDcgQEAgc3RhdGljIHZvaWQgYXRoMTJrX2NoYW5faW5mb19ldmVudChzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbiB7XFxuIFxcdHN0cnVjdCB3bWlfY2hhbl9pbmZvX2V2ZW50IGNoX2luZm9fZXYgPSB7fTtcXG4gXFx0c3RydWN0IGF0aDEyayAqYXI7XFxuK1xcdHN0cnVjdCBhdGgxMmtfaHcgKmFoO1xcbiBcXHRzdHJ1Y3Qgc3VydmV5X2luZm8gKnN1cnZleTtcXG4gXFx0aW50IGlkeDtcXG4gXFx0LyogSFcgY2hhbm5lbCBjb3VudGVycyBmcmVxdWVuY3kgdmFsdWUgaW4gaGVydHogKi9cXG5AQCAtNzUzOCw2ICs3NTM1LDcgQEAgc3RhdGljIHZvaWQgYXRoMTJrX2NoYW5faW5mb19ldmVudChzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbiBcXHRcXHRyZXR1cm47XFxuIFxcdH1cXG4gXFx0c3Bpbl9sb2NrX2JoKFxcdTAwMjZhci1cXHUwMDNlZGF0YV9sb2NrKTtcXG4rXFx0YWggPSBhdGgxMmtfYXJfdG9fYWgoYXIpO1xcbiBcXG4gXFx0c3dpdGNoIChhci1cXHUwMDNlc2Nhbi5zdGF0ZSkge1xcbiBcXHRjYXNlIEFUSDEyS19TQ0FOX0lETEU6XFxuQEAgLTc1NDksOCArNzU0Nyw4IEBAIHN0YXRpYyB2b2lkIGF0aDEya19jaGFuX2luZm9fZXZlbnQoc3RydWN0IGF0aDEya19iYXNlICphYiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4gXFx0XFx0YnJlYWs7XFxuIFxcdH1cXG4gXFxuLVxcdGlkeCA9IGZyZXFfdG9faWR4KGFyLCBsZTMyX3RvX2NwdShjaF9pbmZvX2V2LmZyZXEpKTtcXG4tXFx0aWYgKGlkeCBcXHUwMDNlPSBBUlJBWV9TSVpFKGFyLVxcdTAwM2VzdXJ2ZXkpKSB7XFxuK1xcdGlkeCA9IGZyZXFfdG9faWR4KGF0aDEya19hcl90b19odyhhciksIGxlMzJfdG9fY3B1KGNoX2luZm9fZXYuZnJlcSkpO1xcbitcXHRpZiAoaWR4IFxcdTAwM2U9IEFSUkFZX1NJWkUoYWgtXFx1MDAzZXN1cnZleSkpIHtcXG4gXFx0XFx0YXRoMTJrX3dhcm4oYWIsIFxcXCJjaGFuIGluZm86IGludmFsaWQgZnJlcXVlbmN5ICVkIChpZHggJWQgb3V0IG9mIGJvdW5kcylcXFxcblxcXCIsXFxuIFxcdFxcdFxcdCAgICBjaF9pbmZvX2V2LmZyZXEsIGlkeCk7XFxuIFxcdFxcdGdvdG8gZXhpdDtcXG5AQCAtNzU2MywxNCArNzU2MSwxNiBAQCBzdGF0aWMgdm9pZCBhdGgxMmtfY2hhbl9pbmZvX2V2ZW50KHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIsIHN0cnVjdCBza19idWZmICpza2IpXFxuIFxcdFxcdGNjX2ZyZXFfaHogPSAobGUzMl90b19jcHUoY2hfaW5mb19ldi5tYWNfY2xrX21oeikgKiAxMDAwKTtcXG4gXFxuIFxcdGlmIChjaF9pbmZvX2V2LmNtZF9mbGFncyA9PSBXTUlfQ0hBTl9JTkZPX1NUQVJUX1JFU1ApIHtcXG4tXFx0XFx0c3VydmV5ID0gXFx1MDAyNmFyLVxcdTAwM2VzdXJ2ZXlbaWR4XTtcXG4tXFx0XFx0bWVtc2V0KHN1cnZleSwgMCwgc2l6ZW9mKCpzdXJ2ZXkpKTtcXG4tXFx0XFx0c3VydmV5LVxcdTAwM2Vub2lzZSA9IGxlMzJfdG9fY3B1KGNoX2luZm9fZXYubm9pc2VfZmxvb3IpO1xcbi1cXHRcXHRzdXJ2ZXktXFx1MDAzZWZpbGxlZCA9IFNVUlZFWV9JTkZPX05PSVNFX0RCTSB8IFNVUlZFWV9JTkZPX1RJTUUgfFxcbitcXHRcXHRzY29wZWRfZ3VhcmQoc3BpbmxvY2tfYmgsIFxcdTAwMjZhaC1cXHUwMDNlc3VydmV5X2xvY2spIHtcXG4rXFx0XFx0XFx0c3VydmV5ID0gXFx1MDAyNmFoLVxcdTAwM2VzdXJ2ZXlbaWR4XTtcXG4rXFx0XFx0XFx0bWVtc2V0KHN1cnZleSwgMCwgc2l6ZW9mKCpzdXJ2ZXkpKTtcXG4rXFx0XFx0XFx0c3VydmV5LVxcdTAwM2Vub2lzZSA9IGxlMzJfdG9fY3B1KGNoX2luZm9fZXYubm9pc2VfZmxvb3IpO1xcbitcXHRcXHRcXHRzdXJ2ZXktXFx1MDAzZWZpbGxlZCA9IFNVUlZFWV9JTkZPX05PSVNFX0RCTSB8IFNVUlZFWV9JTkZPX1RJTUUgfFxcbiBcXHRcXHRcXHRcXHQgU1VSVkVZX0lORk9fVElNRV9CVVNZO1xcbi1cXHRcXHRzdXJ2ZXktXFx1MDAzZXRpbWUgPSBkaXZfdTY0KGxlMzJfdG9fY3B1KGNoX2luZm9fZXYuY3ljbGVfY291bnQpLCBjY19mcmVxX2h6KTtcXG4tXFx0XFx0c3VydmV5LVxcdTAwM2V0aW1lX2J1c3kgPSBkaXZfdTY0KGxlMzJfdG9fY3B1KGNoX2luZm9fZXYucnhfY2xlYXJfY291bnQpLFxcbi1cXHRcXHRcXHRcXHRcXHQgICAgY2NfZnJlcV9oeik7XFxuK1xcdFxcdFxcdHN1cnZleS1cXHUwMDNldGltZSA9IGRpdl91NjQobGUzMl90b19jcHUoY2hfaW5mb19ldi5jeWNsZV9jb3VudCksIGNjX2ZyZXFfaHopO1xcbitcXHRcXHRcXHRzdXJ2ZXktXFx1MDAzZXRpbWVfYnVzeSA9IGRpdl91NjQobGUzMl90b19jcHUoY2hfaW5mb19ldi5yeF9jbGVhcl9jb3VudCksXFxuK1xcdFxcdFxcdFxcdFxcdFxcdCAgICBjY19mcmVxX2h6KTtcXG4rXFx0XFx0fVxcbiBcXHR9XFxuIGV4aXQ6XFxuIFxcdHNwaW5fdW5sb2NrX2JoKFxcdTAwMjZhci1cXHUwMDNlZGF0YV9sb2NrKTtcXG5AQCAtNzU4Myw2ICs3NTgzLDcgQEAgYXRoMTJrX3BkZXZfYnNzX2NoYW5faW5mb19ldmVudChzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbiBcXHRzdHJ1Y3Qgd21pX3BkZXZfYnNzX2NoYW5faW5mb19ldmVudCBic3NfY2hfaW5mb19ldiA9IHt9O1xcbiBcXHRzdHJ1Y3Qgc3VydmV5X2luZm8gKnN1cnZleTtcXG4gXFx0c3RydWN0IGF0aDEyayAqYXI7XFxuK1xcdHN0cnVjdCBhdGgxMmtfaHcgKmFoO1xcbiBcXHR1MzIgY2NfZnJlcV9oeiA9IGFiLVxcdTAwM2VjY19mcmVxX2h6O1xcbiBcXHR1NjQgYnVzeSwgdG90YWwsIHR4LCByeCwgcnhfYnNzO1xcbiBcXHRpbnQgaWR4O1xcbkBAIC03NjIzLDI4ICs3NjI0LDMxIEBAIGF0aDEya19wZGV2X2Jzc19jaGFuX2luZm9fZXZlbnQoc3RydWN0IGF0aDEya19iYXNlICphYiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4gXFx0XFx0cmV0dXJuO1xcbiBcXHR9XFxuIFxcbi1cXHRzcGluX2xvY2tfYmgoXFx1MDAyNmFyLVxcdTAwM2VkYXRhX2xvY2spO1xcbi1cXHRpZHggPSBmcmVxX3RvX2lkeChhciwgbGUzMl90b19jcHUoYnNzX2NoX2luZm9fZXYuZnJlcSkpO1xcbi1cXHRpZiAoaWR4IFxcdTAwM2U9IEFSUkFZX1NJWkUoYXItXFx1MDAzZXN1cnZleSkpIHtcXG4rXFx0YWggPSBhdGgxMmtfYXJfdG9fYWgoYXIpO1xcbitcXG4rXFx0aWR4ID0gZnJlcV90b19pZHgoYXRoMTJrX2FyX3RvX2h3KGFyKSwgbGUzMl90b19jcHUoYnNzX2NoX2luZm9fZXYuZnJlcSkpO1xcbitcXHRpZiAoaWR4IFxcdTAwM2U9IEFSUkFZX1NJWkUoYWgtXFx1MDAzZXN1cnZleSkpIHtcXG4gXFx0XFx0YXRoMTJrX3dhcm4oYWIsIFxcXCJic3MgY2hhbiBpbmZvOiBpbnZhbGlkIGZyZXF1ZW5jeSAlZCAoaWR4ICVkIG91dCBvZiBib3VuZHMpXFxcXG5cXFwiLFxcbiBcXHRcXHRcXHQgICAgYnNzX2NoX2luZm9fZXYuZnJlcSwgaWR4KTtcXG4gXFx0XFx0Z290byBleGl0O1xcbiBcXHR9XFxuIFxcbi1cXHRzdXJ2ZXkgPSBcXHUwMDI2YXItXFx1MDAzZXN1cnZleVtpZHhdO1xcbitcXHRzY29wZWRfZ3VhcmQoc3BpbmxvY2tfYmgsIFxcdTAwMjZhaC1cXHUwMDNlc3VydmV5X2xvY2spIHtcXG4rXFx0XFx0c3VydmV5ID0gXFx1MDAyNmFoLVxcdTAwM2VzdXJ2ZXlbaWR4XTtcXG4rXFxuK1xcdFxcdHN1cnZleS1cXHUwMDNlbm9pc2UgPSBsZTMyX3RvX2NwdShic3NfY2hfaW5mb19ldi5ub2lzZV9mbG9vcik7XFxuK1xcdFxcdHN1cnZleS1cXHUwMDNldGltZSA9IGRpdl91NjQodG90YWwsIGNjX2ZyZXFfaHopO1xcbitcXHRcXHRzdXJ2ZXktXFx1MDAzZXRpbWVfYnVzeSA9IGRpdl91NjQoYnVzeSwgY2NfZnJlcV9oeik7XFxuK1xcdFxcdHN1cnZleS1cXHUwMDNldGltZV9yeCA9IGRpdl91NjQocnhfYnNzLCBjY19mcmVxX2h6KTtcXG4rXFx0XFx0c3VydmV5LVxcdTAwM2V0aW1lX3R4ID0gZGl2X3U2NCh0eCwgY2NfZnJlcV9oeik7XFxuK1xcdFxcdHN1cnZleS1cXHUwMDNlZmlsbGVkIHw9IChTVVJWRVlfSU5GT19OT0lTRV9EQk0gfFxcbitcXHRcXHRcXHRcXHQgICBTVVJWRVlfSU5GT19USU1FIHxcXG4rXFx0XFx0XFx0XFx0ICAgU1VSVkVZX0lORk9fVElNRV9CVVNZIHxcXG4rXFx0XFx0XFx0XFx0ICAgU1VSVkVZX0lORk9fVElNRV9SWCB8XFxuK1xcdFxcdFxcdFxcdCAgIFNVUlZFWV9JTkZPX1RJTUVfVFgpO1xcbitcXHR9XFxuIFxcbi1cXHRzdXJ2ZXktXFx1MDAzZW5vaXNlICAgICA9IGxlMzJfdG9fY3B1KGJzc19jaF9pbmZvX2V2Lm5vaXNlX2Zsb29yKTtcXG4tXFx0c3VydmV5LVxcdTAwM2V0aW1lICAgICAgPSBkaXZfdTY0KHRvdGFsLCBjY19mcmVxX2h6KTtcXG4tXFx0c3VydmV5LVxcdTAwM2V0aW1lX2J1c3kgPSBkaXZfdTY0KGJ1c3ksIGNjX2ZyZXFfaHopO1xcbi1cXHRzdXJ2ZXktXFx1MDAzZXRpbWVfcnggICA9IGRpdl91NjQocnhfYnNzLCBjY19mcmVxX2h6KTtcXG4tXFx0c3VydmV5LVxcdTAwM2V0aW1lX3R4ICAgPSBkaXZfdTY0KHR4LCBjY19mcmVxX2h6KTtcXG4tXFx0c3VydmV5LVxcdTAwM2VmaWxsZWQgICB8PSAoU1VSVkVZX0lORk9fTk9JU0VfREJNIHxcXG4tXFx0XFx0XFx0ICAgICBTVVJWRVlfSU5GT19USU1FIHxcXG4tXFx0XFx0XFx0ICAgICBTVVJWRVlfSU5GT19USU1FX0JVU1kgfFxcbi1cXHRcXHRcXHQgICAgIFNVUlZFWV9JTkZPX1RJTUVfUlggfFxcbi1cXHRcXHRcXHQgICAgIFNVUlZFWV9JTkZPX1RJTUVfVFgpO1xcbiBleGl0Olxcbi1cXHRzcGluX3VubG9ja19iaChcXHUwMDI2YXItXFx1MDAzZWRhdGFfbG9jayk7XFxuIFxcdGNvbXBsZXRlKFxcdTAwMjZhci1cXHUwMDNlYnNzX3N1cnZleV9kb25lKTtcXG4gXFxuIFxcdHJjdV9yZWFkX3VubG9jaygpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wM1QxNjoyMjoxMy42MjI0MTMyOVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzE3NzkxMzgxMTQzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgYXRoMTJrIGRyaXZlciwgd2hpY2ggaXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBkcml2ZXIgZm9yIFF1YWxjb21tIFdpLUZpIDcgUENJZS9BSEIgZGV2aWNlcy4gVGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgKG1hYzgwMjExIGNhbGxiYWNrcyBhbmQgV01JIGV2ZW50IGhhbmRsZXJzKSByZXF1aXJlIGEgc3VjY2Vzc2Z1bCBkZXZpY2UgcHJvYmUgYW5kIGZpcm13YXJlIGJvb3Qgc2VxdWVuY2UgKE1ISSwgUU1JLCBXTUkpIHRvIGJlIHJlYWNoYWJsZS4gU2luY2UgdGhlcmUgaXMgbm8gc29mdHdhcmUgZW11bGF0aW9uIGZvciB0aGlzIGhhcmR3YXJlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgR0NFLCB0aGVzZSBjb2RlIHBhdGhzIGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGFuZCBmdXp6LlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA1MTk5MzJmMTUwZGM2MzE1NTVlYmYwNGIzNGRmZmRlMTlhM2Q0YzA1XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBKdWwgMyAxNjoyMjoxMiAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmhcbmluZGV4IDhiZTQzNTUzNWE0ZThiLi42Y2UyZjdiM2ZhNTAxMiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5oXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuaFxuQEAgLTcxMiw3ICs3MTIsNiBAQCBzdHJ1Y3QgYXRoMTJrIHtcbiBcdCAqIGF2b2lkIHJlcG9ydGluZyBnYXJiYWdlIGRhdGEuXG4gXHQgKi9cbiBcdGJvb2wgY2hfaW5mb19jYW5fcmVwb3J0X3N1cnZleTtcbi1cdHN0cnVjdCBzdXJ2ZXlfaW5mbyBzdXJ2ZXlbQVRIMTJLX05VTV9DSEFOU107XG4gXHRzdHJ1Y3QgY29tcGxldGlvbiBic3Nfc3VydmV5X2RvbmU7XG4gXG4gXHRzdHJ1Y3Qgd29ya19zdHJ1Y3QgcmVnZF91cGRhdGVfd29yaztcbkBAIC03NzQsNiArNzczLDExIEBAIHN0cnVjdCBhdGgxMmtfaHcge1xuIFx0ICovXG4gXHRzdHJ1Y3QgbXV0ZXggaHdfbXV0ZXg7XG4gXHRlbnVtIGF0aDEya19od19zdGF0ZSBzdGF0ZTtcbitcbitcdC8qIHByb3RlY3RzIHN1cnZleVtdIHNoYXJlZCBhY3Jvc3MgcmFkaW9zIG9mIHRoaXMgaHcuICovXG4rXHRzcGlubG9ja190IHN1cnZleV9sb2NrO1xuK1x0c3RydWN0IHN1cnZleV9pbmZvIHN1cnZleVtBVEgxMktfTlVNX0NIQU5TXTtcbitcbiBcdGJvb2wgcmVnZF91cGRhdGVkO1xuIFx0Ym9vbCB1c2VfNmdoel9yZWdkO1xuIFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jXG5pbmRleCAyY2ZmOTQ4NWM5NWFmYi4uZGFmOWJjODcyMmRmYmEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jXG5AQCAtMTMzNDgsNTIgKzEzMzQ4LDU0IEBAIGF0aDEya19tYWNfdXBkYXRlX2Jzc19jaGFuX3N1cnZleShzdHJ1Y3QgYXRoMTJrICphcixcbiBpbnQgYXRoMTJrX21hY19vcF9nZXRfc3VydmV5KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LCBpbnQgaWR4LFxuIFx0XHRcdCAgICAgc3RydWN0IHN1cnZleV9pbmZvICpzdXJ2ZXkpXG4ge1xuK1x0c3RydWN0IGF0aDEya19odyAqYWggPSBody1cdTAwM2Vwcml2O1xuIFx0c3RydWN0IGF0aDEyayAqYXI7XG4gXHRzdHJ1Y3QgaWVlZTgwMjExX3N1cHBvcnRlZF9iYW5kICpzYmFuZDtcbi1cdHN0cnVjdCBzdXJ2ZXlfaW5mbyAqYXJfc3VydmV5O1xuK1x0c3RydWN0IHN1cnZleV9pbmZvICphaF9zdXJ2ZXk7XG4rXHRpbnQgc2JhbmRfaWR4ID0gaWR4O1xuIFxuIFx0bG9ja2RlcF9hc3NlcnRfd2lwaHkoaHctXHUwMDNld2lwaHkpO1xuIFxuLVx0aWYgKGlkeCBcdTAwM2U9IEFUSDEyS19OVU1fQ0hBTlMpXG4rXHRpZiAoc2JhbmRfaWR4IFx1MDAzZT0gQVRIMTJLX05VTV9DSEFOUylcbiBcdFx0cmV0dXJuIC1FTk9FTlQ7XG4gXG4gXHRzYmFuZCA9IGh3LVx1MDAzZXdpcGh5LVx1MDAzZWJhbmRzW05MODAyMTFfQkFORF8yR0haXTtcbi1cdGlmIChzYmFuZCBcdTAwMjZcdTAwMjYgaWR4IFx1MDAzZT0gc2JhbmQtXHUwMDNlbl9jaGFubmVscykge1xuLVx0XHRpZHggLT0gc2JhbmQtXHUwMDNlbl9jaGFubmVscztcbitcdGlmIChzYmFuZCBcdTAwMjZcdTAwMjYgc2JhbmRfaWR4IFx1MDAzZT0gc2JhbmQtXHUwMDNlbl9jaGFubmVscykge1xuK1x0XHRzYmFuZF9pZHggLT0gc2JhbmQtXHUwMDNlbl9jaGFubmVscztcbiBcdFx0c2JhbmQgPSBOVUxMO1xuIFx0fVxuIFxuIFx0aWYgKCFzYmFuZClcbiBcdFx0c2JhbmQgPSBody1cdTAwM2V3aXBoeS1cdTAwM2ViYW5kc1tOTDgwMjExX0JBTkRfNUdIWl07XG4tXHRpZiAoc2JhbmQgXHUwMDI2XHUwMDI2IGlkeCBcdTAwM2U9IHNiYW5kLVx1MDAzZW5fY2hhbm5lbHMpIHtcbi1cdFx0aWR4IC09IHNiYW5kLVx1MDAzZW5fY2hhbm5lbHM7XG4rXHRpZiAoc2JhbmQgXHUwMDI2XHUwMDI2IHNiYW5kX2lkeCBcdTAwM2U9IHNiYW5kLVx1MDAzZW5fY2hhbm5lbHMpIHtcbitcdFx0c2JhbmRfaWR4IC09IHNiYW5kLVx1MDAzZW5fY2hhbm5lbHM7XG4gXHRcdHNiYW5kID0gTlVMTDtcbiBcdH1cbiBcbiBcdGlmICghc2JhbmQpXG4gXHRcdHNiYW5kID0gaHctXHUwMDNld2lwaHktXHUwMDNlYmFuZHNbTkw4MDIxMV9CQU5EXzZHSFpdO1xuIFxuLVx0aWYgKCFzYmFuZCB8fCBpZHggXHUwMDNlPSBzYmFuZC1cdTAwM2VuX2NoYW5uZWxzKVxuK1x0aWYgKCFzYmFuZCB8fCBzYmFuZF9pZHggXHUwMDNlPSBzYmFuZC1cdTAwM2VuX2NoYW5uZWxzKVxuIFx0XHRyZXR1cm4gLUVOT0VOVDtcbiBcbi1cdGFyID0gYXRoMTJrX21hY19nZXRfYXJfYnlfY2hhbihodywgXHUwMDI2c2JhbmQtXHUwMDNlY2hhbm5lbHNbaWR4XSk7XG4rXHRhciA9IGF0aDEya19tYWNfZ2V0X2FyX2J5X2NoYW4oaHcsIFx1MDAyNnNiYW5kLVx1MDAzZWNoYW5uZWxzW3NiYW5kX2lkeF0pO1xuIFx0aWYgKCFhcikge1xuLVx0XHRpZiAoc2JhbmQtXHUwMDNlY2hhbm5lbHNbaWR4XS5mbGFncyBcdTAwMjYgSUVFRTgwMjExX0NIQU5fRElTQUJMRUQpIHtcbitcdFx0aWYgKHNiYW5kLVx1MDAzZWNoYW5uZWxzW3NiYW5kX2lkeF0uZmxhZ3MgXHUwMDI2IElFRUU4MDIxMV9DSEFOX0RJU0FCTEVEKSB7XG4gXHRcdFx0bWVtc2V0KHN1cnZleSwgMCwgc2l6ZW9mKCpzdXJ2ZXkpKTtcbiBcdFx0XHRyZXR1cm4gMDtcbiBcdFx0fVxuIFx0XHRyZXR1cm4gLUVOT0VOVDtcbiBcdH1cbiBcbi1cdGFyX3N1cnZleSA9IFx1MDAyNmFyLVx1MDAzZXN1cnZleVtpZHhdO1xuK1x0YWhfc3VydmV5ID0gXHUwMDI2YWgtXHUwMDNlc3VydmV5W2lkeF07XG4gXG4tXHRhdGgxMmtfbWFjX3VwZGF0ZV9ic3NfY2hhbl9zdXJ2ZXkoYXIsIFx1MDAyNnNiYW5kLVx1MDAzZWNoYW5uZWxzW2lkeF0pO1xuK1x0YXRoMTJrX21hY191cGRhdGVfYnNzX2NoYW5fc3VydmV5KGFyLCBcdTAwMjZzYmFuZC1cdTAwM2VjaGFubmVsc1tzYmFuZF9pZHhdKTtcbiBcbi1cdHNwaW5fbG9ja19iaChcdTAwMjZhci1cdTAwM2VkYXRhX2xvY2spO1xuLVx0bWVtY3B5KHN1cnZleSwgYXJfc3VydmV5LCBzaXplb2YoKnN1cnZleSkpO1xuLVx0c3Bpbl91bmxvY2tfYmgoXHUwMDI2YXItXHUwMDNlZGF0YV9sb2NrKTtcbitcdHNjb3BlZF9ndWFyZChzcGlubG9ja19iaCwgXHUwMDI2YWgtXHUwMDNlc3VydmV5X2xvY2spIHtcbitcdFx0bWVtY3B5KHN1cnZleSwgYWhfc3VydmV5LCBzaXplb2YoKnN1cnZleSkpO1xuK1x0fVxuIFxuLVx0c3VydmV5LVx1MDAzZWNoYW5uZWwgPSBcdTAwMjZzYmFuZC1cdTAwM2VjaGFubmVsc1tpZHhdO1xuK1x0c3VydmV5LVx1MDAzZWNoYW5uZWwgPSBcdTAwMjZzYmFuZC1cdTAwM2VjaGFubmVsc1tzYmFuZF9pZHhdO1xuIFxuIFx0aWYgKGFyLVx1MDAzZXJ4X2NoYW5uZWwgPT0gc3VydmV5LVx1MDAzZWNoYW5uZWwpXG4gXHRcdHN1cnZleS1cdTAwM2VmaWxsZWQgfD0gU1VSVkVZX0lORk9fSU5fVVNFO1xuQEAgLTE1MDU1LDYgKzE1MDU3LDcgQEAgc3RhdGljIHN0cnVjdCBhdGgxMmtfaHcgKmF0aDEya19tYWNfaHdfYWxsb2NhdGUoc3RydWN0IGF0aDEya19od19ncm91cCAqYWcsXG4gXG4gXHRtdXRleF9pbml0KFx1MDAyNmFoLVx1MDAzZWh3X211dGV4KTtcbiBcbitcdHNwaW5fbG9ja19pbml0KFx1MDAyNmFoLVx1MDAzZXN1cnZleV9sb2NrKTtcbiBcdHNwaW5fbG9ja19pbml0KFx1MDAyNmFoLVx1MDAzZWRwX2h3LnBlZXJfbG9jayk7XG4gXHRJTklUX0xJU1RfSEVBRChcdTAwMjZhaC1cdTAwM2VkcF9ody5kcF9wZWVyc19saXN0KTtcbiBcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuY1xuaW5kZXggYjVlOTA0YTU1YWVhYmIuLjNmMzczMGE2YzJhYzI3IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuY1xuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuY1xuQEAgLTY2MTcsMTYgKzY2MTcsMTIgQEAgc3RhdGljIGludCBhdGgxMmtfcHVsbF9yb2FtX2V2KHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIsIHN0cnVjdCBza19idWZmICpza2IsXG4gXHRyZXR1cm4gMDtcbiB9XG4gXG4tc3RhdGljIGludCBmcmVxX3RvX2lkeChzdHJ1Y3QgYXRoMTJrICphciwgaW50IGZyZXEpXG4rc3RhdGljIGludCBmcmVxX3RvX2lkeChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywgaW50IGZyZXEpXG4ge1xuIFx0c3RydWN0IGllZWU4MDIxMV9zdXBwb3J0ZWRfYmFuZCAqc2JhbmQ7XG4tXHRzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyA9IGF0aDEya19hcl90b19odyhhcik7XG4gXHRpbnQgYmFuZCwgY2gsIGlkeCA9IDA7XG4gXG4gXHRmb3IgKGJhbmQgPSBOTDgwMjExX0JBTkRfMkdIWjsgYmFuZCBcdTAwM2MgTlVNX05MODAyMTFfQkFORFM7IGJhbmQrKykge1xuLVx0XHRpZiAoIWFyLVx1MDAzZW1hYy5zYmFuZHNbYmFuZF0uY2hhbm5lbHMpXG4tXHRcdFx0Y29udGludWU7XG4tXG4gXHRcdHNiYW5kID0gaHctXHUwMDNld2lwaHktXHUwMDNlYmFuZHNbYmFuZF07XG4gXHRcdGlmICghc2JhbmQpXG4gXHRcdFx0Y29udGludWU7XG5AQCAtNzUwNyw2ICs3NTAzLDcgQEAgc3RhdGljIHZvaWQgYXRoMTJrX2NoYW5faW5mb19ldmVudChzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuIHtcbiBcdHN0cnVjdCB3bWlfY2hhbl9pbmZvX2V2ZW50IGNoX2luZm9fZXYgPSB7fTtcbiBcdHN0cnVjdCBhdGgxMmsgKmFyO1xuK1x0c3RydWN0IGF0aDEya19odyAqYWg7XG4gXHRzdHJ1Y3Qgc3VydmV5X2luZm8gKnN1cnZleTtcbiBcdGludCBpZHg7XG4gXHQvKiBIVyBjaGFubmVsIGNvdW50ZXJzIGZyZXF1ZW5jeSB2YWx1ZSBpbiBoZXJ0eiAqL1xuQEAgLTc1MzgsNiArNzUzNSw3IEBAIHN0YXRpYyB2b2lkIGF0aDEya19jaGFuX2luZm9fZXZlbnQoc3RydWN0IGF0aDEya19iYXNlICphYiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbiBcdFx0cmV0dXJuO1xuIFx0fVxuIFx0c3Bpbl9sb2NrX2JoKFx1MDAyNmFyLVx1MDAzZWRhdGFfbG9jayk7XG4rXHRhaCA9IGF0aDEya19hcl90b19haChhcik7XG4gXG4gXHRzd2l0Y2ggKGFyLVx1MDAzZXNjYW4uc3RhdGUpIHtcbiBcdGNhc2UgQVRIMTJLX1NDQU5fSURMRTpcbkBAIC03NTQ5LDggKzc1NDcsOCBAQCBzdGF0aWMgdm9pZCBhdGgxMmtfY2hhbl9pbmZvX2V2ZW50KHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIsIHN0cnVjdCBza19idWZmICpza2IpXG4gXHRcdGJyZWFrO1xuIFx0fVxuIFxuLVx0aWR4ID0gZnJlcV90b19pZHgoYXIsIGxlMzJfdG9fY3B1KGNoX2luZm9fZXYuZnJlcSkpO1xuLVx0aWYgKGlkeCBcdTAwM2U9IEFSUkFZX1NJWkUoYXItXHUwMDNlc3VydmV5KSkge1xuK1x0aWR4ID0gZnJlcV90b19pZHgoYXRoMTJrX2FyX3RvX2h3KGFyKSwgbGUzMl90b19jcHUoY2hfaW5mb19ldi5mcmVxKSk7XG4rXHRpZiAoaWR4IFx1MDAzZT0gQVJSQVlfU0laRShhaC1cdTAwM2VzdXJ2ZXkpKSB7XG4gXHRcdGF0aDEya193YXJuKGFiLCBcImNoYW4gaW5mbzogaW52YWxpZCBmcmVxdWVuY3kgJWQgKGlkeCAlZCBvdXQgb2YgYm91bmRzKVxcblwiLFxuIFx0XHRcdCAgICBjaF9pbmZvX2V2LmZyZXEsIGlkeCk7XG4gXHRcdGdvdG8gZXhpdDtcbkBAIC03NTYzLDE0ICs3NTYxLDE2IEBAIHN0YXRpYyB2b2lkIGF0aDEya19jaGFuX2luZm9fZXZlbnQoc3RydWN0IGF0aDEya19iYXNlICphYiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbiBcdFx0Y2NfZnJlcV9oeiA9IChsZTMyX3RvX2NwdShjaF9pbmZvX2V2Lm1hY19jbGtfbWh6KSAqIDEwMDApO1xuIFxuIFx0aWYgKGNoX2luZm9fZXYuY21kX2ZsYWdzID09IFdNSV9DSEFOX0lORk9fU1RBUlRfUkVTUCkge1xuLVx0XHRzdXJ2ZXkgPSBcdTAwMjZhci1cdTAwM2VzdXJ2ZXlbaWR4XTtcbi1cdFx0bWVtc2V0KHN1cnZleSwgMCwgc2l6ZW9mKCpzdXJ2ZXkpKTtcbi1cdFx0c3VydmV5LVx1MDAzZW5vaXNlID0gbGUzMl90b19jcHUoY2hfaW5mb19ldi5ub2lzZV9mbG9vcik7XG4tXHRcdHN1cnZleS1cdTAwM2VmaWxsZWQgPSBTVVJWRVlfSU5GT19OT0lTRV9EQk0gfCBTVVJWRVlfSU5GT19USU1FIHxcbitcdFx0c2NvcGVkX2d1YXJkKHNwaW5sb2NrX2JoLCBcdTAwMjZhaC1cdTAwM2VzdXJ2ZXlfbG9jaykge1xuK1x0XHRcdHN1cnZleSA9IFx1MDAyNmFoLVx1MDAzZXN1cnZleVtpZHhdO1xuK1x0XHRcdG1lbXNldChzdXJ2ZXksIDAsIHNpemVvZigqc3VydmV5KSk7XG4rXHRcdFx0c3VydmV5LVx1MDAzZW5vaXNlID0gbGUzMl90b19jcHUoY2hfaW5mb19ldi5ub2lzZV9mbG9vcik7XG4rXHRcdFx0c3VydmV5LVx1MDAzZWZpbGxlZCA9IFNVUlZFWV9JTkZPX05PSVNFX0RCTSB8IFNVUlZFWV9JTkZPX1RJTUUgfFxuIFx0XHRcdFx0IFNVUlZFWV9JTkZPX1RJTUVfQlVTWTtcbi1cdFx0c3VydmV5LVx1MDAzZXRpbWUgPSBkaXZfdTY0KGxlMzJfdG9fY3B1KGNoX2luZm9fZXYuY3ljbGVfY291bnQpLCBjY19mcmVxX2h6KTtcbi1cdFx0c3VydmV5LVx1MDAzZXRpbWVfYnVzeSA9IGRpdl91NjQobGUzMl90b19jcHUoY2hfaW5mb19ldi5yeF9jbGVhcl9jb3VudCksXG4tXHRcdFx0XHRcdCAgICBjY19mcmVxX2h6KTtcbitcdFx0XHRzdXJ2ZXktXHUwMDNldGltZSA9IGRpdl91NjQobGUzMl90b19jcHUoY2hfaW5mb19ldi5jeWNsZV9jb3VudCksIGNjX2ZyZXFfaHopO1xuK1x0XHRcdHN1cnZleS1cdTAwM2V0aW1lX2J1c3kgPSBkaXZfdTY0KGxlMzJfdG9fY3B1KGNoX2luZm9fZXYucnhfY2xlYXJfY291bnQpLFxuK1x0XHRcdFx0XHRcdCAgICBjY19mcmVxX2h6KTtcbitcdFx0fVxuIFx0fVxuIGV4aXQ6XG4gXHRzcGluX3VubG9ja19iaChcdTAwMjZhci1cdTAwM2VkYXRhX2xvY2spO1xuQEAgLTc1ODMsNiArNzU4Myw3IEBAIGF0aDEya19wZGV2X2Jzc19jaGFuX2luZm9fZXZlbnQoc3RydWN0IGF0aDEya19iYXNlICphYiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbiBcdHN0cnVjdCB3bWlfcGRldl9ic3NfY2hhbl9pbmZvX2V2ZW50IGJzc19jaF9pbmZvX2V2ID0ge307XG4gXHRzdHJ1Y3Qgc3VydmV5X2luZm8gKnN1cnZleTtcbiBcdHN0cnVjdCBhdGgxMmsgKmFyO1xuK1x0c3RydWN0IGF0aDEya19odyAqYWg7XG4gXHR1MzIgY2NfZnJlcV9oeiA9IGFiLVx1MDAzZWNjX2ZyZXFfaHo7XG4gXHR1NjQgYnVzeSwgdG90YWwsIHR4LCByeCwgcnhfYnNzO1xuIFx0aW50IGlkeDtcbkBAIC03NjIzLDI4ICs3NjI0LDMxIEBAIGF0aDEya19wZGV2X2Jzc19jaGFuX2luZm9fZXZlbnQoc3RydWN0IGF0aDEya19iYXNlICphYiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbiBcdFx0cmV0dXJuO1xuIFx0fVxuIFxuLVx0c3Bpbl9sb2NrX2JoKFx1MDAyNmFyLVx1MDAzZWRhdGFfbG9jayk7XG4tXHRpZHggPSBmcmVxX3RvX2lkeChhciwgbGUzMl90b19jcHUoYnNzX2NoX2luZm9fZXYuZnJlcSkpO1xuLVx0aWYgKGlkeCBcdTAwM2U9IEFSUkFZX1NJWkUoYXItXHUwMDNlc3VydmV5KSkge1xuK1x0YWggPSBhdGgxMmtfYXJfdG9fYWgoYXIpO1xuK1xuK1x0aWR4ID0gZnJlcV90b19pZHgoYXRoMTJrX2FyX3RvX2h3KGFyKSwgbGUzMl90b19jcHUoYnNzX2NoX2luZm9fZXYuZnJlcSkpO1xuK1x0aWYgKGlkeCBcdTAwM2U9IEFSUkFZX1NJWkUoYWgtXHUwMDNlc3VydmV5KSkge1xuIFx0XHRhdGgxMmtfd2FybihhYiwgXCJic3MgY2hhbiBpbmZvOiBpbnZhbGlkIGZyZXF1ZW5jeSAlZCAoaWR4ICVkIG91dCBvZiBib3VuZHMpXFxuXCIsXG4gXHRcdFx0ICAgIGJzc19jaF9pbmZvX2V2LmZyZXEsIGlkeCk7XG4gXHRcdGdvdG8gZXhpdDtcbiBcdH1cbiBcbi1cdHN1cnZleSA9IFx1MDAyNmFyLVx1MDAzZXN1cnZleVtpZHhdO1xuK1x0c2NvcGVkX2d1YXJkKHNwaW5sb2NrX2JoLCBcdTAwMjZhaC1cdTAwM2VzdXJ2ZXlfbG9jaykge1xuK1x0XHRzdXJ2ZXkgPSBcdTAwMjZhaC1cdTAwM2VzdXJ2ZXlbaWR4XTtcbitcbitcdFx0c3VydmV5LVx1MDAzZW5vaXNlID0gbGUzMl90b19jcHUoYnNzX2NoX2luZm9fZXYubm9pc2VfZmxvb3IpO1xuK1x0XHRzdXJ2ZXktXHUwMDNldGltZSA9IGRpdl91NjQodG90YWwsIGNjX2ZyZXFfaHopO1xuK1x0XHRzdXJ2ZXktXHUwMDNldGltZV9idXN5ID0gZGl2X3U2NChidXN5LCBjY19mcmVxX2h6KTtcbitcdFx0c3VydmV5LVx1MDAzZXRpbWVfcnggPSBkaXZfdTY0KHJ4X2JzcywgY2NfZnJlcV9oeik7XG4rXHRcdHN1cnZleS1cdTAwM2V0aW1lX3R4ID0gZGl2X3U2NCh0eCwgY2NfZnJlcV9oeik7XG4rXHRcdHN1cnZleS1cdTAwM2VmaWxsZWQgfD0gKFNVUlZFWV9JTkZPX05PSVNFX0RCTSB8XG4rXHRcdFx0XHQgICBTVVJWRVlfSU5GT19USU1FIHxcbitcdFx0XHRcdCAgIFNVUlZFWV9JTkZPX1RJTUVfQlVTWSB8XG4rXHRcdFx0XHQgICBTVVJWRVlfSU5GT19USU1FX1JYIHxcbitcdFx0XHRcdCAgIFNVUlZFWV9JTkZPX1RJTUVfVFgpO1xuK1x0fVxuIFxuLVx0c3VydmV5LVx1MDAzZW5vaXNlICAgICA9IGxlMzJfdG9fY3B1KGJzc19jaF9pbmZvX2V2Lm5vaXNlX2Zsb29yKTtcbi1cdHN1cnZleS1cdTAwM2V0aW1lICAgICAgPSBkaXZfdTY0KHRvdGFsLCBjY19mcmVxX2h6KTtcbi1cdHN1cnZleS1cdTAwM2V0aW1lX2J1c3kgPSBkaXZfdTY0KGJ1c3ksIGNjX2ZyZXFfaHopO1xuLVx0c3VydmV5LVx1MDAzZXRpbWVfcnggICA9IGRpdl91NjQocnhfYnNzLCBjY19mcmVxX2h6KTtcbi1cdHN1cnZleS1cdTAwM2V0aW1lX3R4ICAgPSBkaXZfdTY0KHR4LCBjY19mcmVxX2h6KTtcbi1cdHN1cnZleS1cdTAwM2VmaWxsZWQgICB8PSAoU1VSVkVZX0lORk9fTk9JU0VfREJNIHxcbi1cdFx0XHQgICAgIFNVUlZFWV9JTkZPX1RJTUUgfFxuLVx0XHRcdCAgICAgU1VSVkVZX0lORk9fVElNRV9CVVNZIHxcbi1cdFx0XHQgICAgIFNVUlZFWV9JTkZPX1RJTUVfUlggfFxuLVx0XHRcdCAgICAgU1VSVkVZX0lORk9fVElNRV9UWCk7XG4gZXhpdDpcbi1cdHNwaW5fdW5sb2NrX2JoKFx1MDAyNmFyLVx1MDAzZWRhdGFfbG9jayk7XG4gXHRjb21wbGV0ZShcdTAwMjZhci1cdTAwM2Vic3Nfc3VydmV5X2RvbmUpO1xuIFxuIFx0cmN1X3JlYWRfdW5sb2NrKCk7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wM1QxNjoyMjoxMy42MjI0MTQ1NVoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjc5OTkzMTE1NDgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqUmVhY2hpbmcgdGhlIEF0aDEyayBTdXJ2ZXkgUGF0Y2ggaW4gYSBWaXJ0dWFsaXplZCBFbnZpcm9ubWVudCoqXG5cbk9rYXksIHNvIHdlJ3ZlIGdvdCB0aGlzIHBhdGNoIHRoYXQgcmUtb3JnYW5pemVzIHRoZSBgc3VydmV5YCBhcnJheSBhbmQgaXRzIGFzc29jaWF0ZWQgbG9jayB3aXRoaW4gdGhlIGBhdGgxMmtgIGRyaXZlci4gSXQgbW92ZXMgdGhlIGRhdGEgZnJvbSB0aGUgcGVyLXJhZGlvIGBhdGgxMmtgIHN0cnVjdCB0byB0aGUgcGVyLWhhcmR3YXJlIGBhdGgxMmtfaHdgIHN0cnVjdC4gVGhpcyBhZmZlY3RzIHNldmVyYWwgZnVuY3Rpb25zOiBgYXRoMTJrX21hY19vcF9nZXRfc3VydmV5YCwgYGF0aDEya19tYWNfaHdfYWxsb2NhdGVgLCBgYXRoMTJrX2NoYW5faW5mb19ldmVudGAsIGBhdGgxMmtfcGRldl9ic3NfY2hhbl9pbmZvX2V2ZW50YCwgYW5kIGBmcmVxX3RvX2lkeGAuIE15IGltbWVkaWF0ZSBjb25jZXJuIGlzIHdoZXRoZXIgdGhpcyBpcyBldmVuICp0ZXN0YWJsZSogaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4gVGhpcyBpcyB0aGUgYGF0aDEya2AgZHJpdmVyLCB3aGljaCwgYXMgSSByZWNhbGwsIGlzIGZvciBRdWFsY29tbSBXaS1GaSA3IGRldmljZXMsIHNwZWNpZmljYWxseSBQQ0llL0FIQiBiYXNlZC5cblxuVGhlIHF1ZXN0aW9uIHRoZW4gYmVjb21lczogY2FuIHdlIGVtdWxhdGUgdGhpcz8gSSBkb24ndCBiZWxpZXZlIHRoZXJlJ3MgYW55IGVzdGFibGlzaGVkIFFFTVUgZW11bGF0aW9uIGZvciBgYXRoMTJrYCBpdHNlbGYuIFN1cmUsIGBtYWM4MDIxMV9od3NpbWAgZXhpc3RzLCBidXQgdGhhdCdzIGEgZ2VuZXJpYyBNQUM4MDIxMSBlbXVsYXRpb24sIG5vdCBzcGVjaWZpY2FsbHkgZm9yIGEgaGFyZHdhcmUgZHJpdmVyLiBXZSdyZSB0YWxraW5nIGFib3V0IGEgdmVyeSBzcGVjaWZpYyBwaWVjZSBvZiBoYXJkd2FyZS4gSSBjYW4ndCB0aGluayBvZiBhbnkgb2J2aW91cyBzb2Z0d2FyZSBlbXVsYXRpb24gcm91dGUsIG5vIFVTQiBnYWRnZXQgdHJpY2tzIGhlcmUgc2luY2UgaXQncyBQQ0llL0FIQi5cblxuQnV0IHdhaXQsIHRoZXJlJ3Mgc3l6a2FsbGVyISBJdCBjYW4gZnV6eiBQQ0kgZGV2aWNlcyB1c2luZyB2UENJLCAqaWYqIHN1cHBvcnRlZC4gVGhlIHVzdWFsIGNhdmVhdHMgYXBwbHk7IG1vc3Qgc3BlY2lmaWMgV2ktRmkgZHJpdmVycyBhcmVuJ3QgdHlwaWNhbGx5IGZ1enplZCB1bmxlc3MgdGhleSdyZSBVU0Igb3IgdmlydGlvLiBJcyBgYXRoMTJrYCBhIGNhbmRpZGF0ZSBmb3Igc3l6a2FsbGVyIGZ1enppbmc/IEknZCBuZWVkIHRvIGNoZWNrIGlmIHRoZXJlIGFyZSBzeXpib3QgcmVwb3J0cyByZWxhdGVkIHRvIGBhdGgxMmtgLCB0aG91Z2ggSSBjYW4ndCBjaGVjayB0aGF0IGltbWVkaWF0ZWx5LiBCdXQsIEkgKmRvKiBrbm93IHN5emthbGxlciBoYXMgYSBQQ0kgZnV6emVyLCB1c2luZyB0aGluZ3MgbGlrZSBgdmhjaWAgb3IgYHZmaW9gLlxuXG5Ib3dldmVyLCB0aGUgbWFpbiBwcm9tcHQgc3RpcHVsYXRlcyB0aGF0IHdlIG5lZWQgdG8gY29uc2lkZXIgY29kZSBwYXRocyB1bnJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBzZXR1cHMgbGlrZSBHQ0Ugb3IgUUVNVSwgZXZlbiB3aXRoIHNvZnR3YXJlIGVtdWxhdGlvbiBsaWtlIGB1c2IgZ2FkZ2V0YCBvciBgbWFjODAyMTFfaHdzaW1gLiBJcyBgYXRoMTJrYCByZWFsaXN0aWNhbGx5IHJlYWNoYWJsZSBnaXZlbiB0aGF0IGNvbnN0cmFpbnQ/IEkgbmVlZCB0byBjbGFyaWZ5IGlmIHRoaXMgZHJpdmVyIGNhbiBiZSB0ZXN0ZWQuIFRpbWUgdG8gZG91YmxlLWNoZWNrIHRoZSBgS2NvbmZpZ2AgZmlsZSBpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnYC5cblxuXG4iLCJJbnB1dFRva2VucyI6NTM1MiwiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ2NiwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAzVDE2OjIyOjIxLjYyMTcyODA2OFoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NzI3NzQzNywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgQVRIMTJLXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UtQ2xlYXJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWc6Mjpjb25maWcgQVRIMTJLXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnLTMtXFx0dHJpc3RhdGUgXFxcIlF1YWxjb21tIFRlY2hub2xvZ2llcyBXaS1GaSA3IHN1cHBvcnQgKGF0aDEyaylcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWctMTYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnOjE3OmNvbmZpZyBBVEgxMktfQUhCXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnLTE4LVxcdGJvb2wgXFxcIlFUSSBhdGgxMmsgQUhCIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWctMjQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnOjI1OmNvbmZpZyBBVEgxMktfREVCVUdcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWctMjYtXFx0Ym9vbCBcXFwiYXRoMTJrIGRlYnVnZ2luZ1xcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZy0zNC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWc6MzU6Y29uZmlnIEFUSDEyS19ERUJVR0ZTXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnLTM2LVxcdGJvb2wgXFxcIlFUSSBhdGgxMmsgZGVidWdmcyBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnLTQzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZzo0NDpjb25maWcgQVRIMTJLX1RSQUNJTkdcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWctNDUtXFx0Ym9vbCBcXFwiYXRoMTJrIHRyYWNpbmcgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZy01Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWc6NTM6Y29uZmlnIEFUSDEyS19DT1JFRFVNUFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZy01NC1cXHRib29sIFxcXCJhdGgxMmsgY29yZWR1bXBcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAzVDE2OjIyOjIxLjY3OTAxMDY5NloiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI5NjE1Mjk0MDk1MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEZ1enphYmlsaXR5IG9mIHRoZSBRdWFsY29tbSBXaS1GaSA3IERyaXZlcioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgZHJpdmVyLCBzcGVjaWZpY2FsbHkgZm9yIFF1YWxjb21tJ3MgV2ktRmkgNyBoYXJkd2FyZS4gRmlyc3QsIEkgbmVlZCB0byBrbm93OiBpcyB0aGVyZSBhbnkgc29mdHdhcmUgZW11bGF0aW9uIGF2YWlsYWJsZSBmb3IgaXQ/IE5vLiBUaGF0J3MgYSBodWdlIGh1cmRsZS4gQ2FuIEkgZnV6eiBpdCB0aHJvdWdoIFBDSSBmdXp6aW5nIHRoZW4/IFN5emthbGxlciBkb2VzIGhhdmUgUENJIGZ1enppbmcgY2FwYWJpbGl0aWVzLCB3aGljaCBpcyBwcm9taXNpbmcuIEJ1dCBpcyBpdCBjb25zaWRlcmVkIFwiaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHNcIj9cblxuVXN1YWxseSwgdGhlc2UgaGFyZHdhcmUtc3BlY2lmaWMgZHJpdmVycyBsaWtlIGF0aDExaywgYXRoMTJrLCBvciBpd2x3aWZpIGFyZSB0cmlja3kgdG8gZnV6eiB1bmxlc3MgdGhlcmUgaXMgYW4gZW11bGF0b3Igb3IgdW5sZXNzIHRoZSBQQ0kgZnV6emluZyBpcyBleHRyZW1lbHkgZWZmZWN0aXZlLiBTeXprYWxsZXIncyBQQ0kgZnV6emluZyB3b3JrcyBieSBpbmplY3RpbmcgUENJIGNvbmZpZyBzcGFjZSBhbmQgTU1JTyByZWFkcy93cml0ZXMuXG5cbldhaXQsIHRoZSBjb2RlIG1lbnRpb25zIGBhdGgxMmtgIHdoaWNoIHVzZXMgYG1hYzgwMjExYC4gVGhlIHBhdGNoIHNwZWNpZmljYWxseSBtb2RpZmllcyBgYXRoMTJrX21hY19vcF9nZXRfc3VydmV5YCwgd2hpY2ggaXMgYSBjYWxsYmFjayBmb3IgYG1hYzgwMjExYCAoYGdldF9zdXJ2ZXlgKS4gSXQgYWxzbyBtb2RpZmllcyBgYXRoMTJrX2NoYW5faW5mb19ldmVudGAgYW5kIGBhdGgxMmtfcGRldl9ic3NfY2hhbl9pbmZvX2V2ZW50YCwgd2hpY2ggYXJlIFdNSSBldmVudCBoYW5kbGVycy4gT2theSwgV01JIGV2ZW50cyBjb21lIGZyb20gdGhlIGZpcm13YXJlLCB0aGF0J3MgY3J1Y2lhbC4gU2luY2UgdGhlcmUgaXMgbm8gZmlybXdhcmUgcnVubmluZyBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50LCB1bmxlc3MgZW11bGF0ZWQsIHRoZSBmaXJtd2FyZSB3b24ndCBzZW5kIHRob3NlIFdNSSBldmVudHMuXG5cbldhaXQgYSBtaW51dGUsIGV2ZW4gaWYgUENJIGZ1enppbmcgaW5qZWN0cyByYW5kb20gZGF0YSBpbnRvIE1NSU8sIHRoZSBkcml2ZXIgZXhwZWN0cyBhIGNvbXBsZXggZmlybXdhcmUgYm9vdCBzZXF1ZW5jZSAoUU1JLCBNSEksIFdNSSkuIEl0J3MgaGlnaGx5IHVubGlrZWx5IHRvIHJlYWNoIHRoZXNlIFdNSSBldmVudCBoYW5kbGVycyBvciBldmVuIHN1Y2Nlc3NmdWxseSByZWdpc3RlciB0aGUgbWFjODAyMTEgZGV2aWNlIHdpdGhvdXQgYSByZWFsIGZpcm13YXJlIG9yIGEgZ29vZCBlbXVsYXRvci5cblxuU28sIGxldCdzIGRyaWxsIGRvd24gc3BlY2lmaWNhbGx5IHRvIGBhdGgxMmtgIGFuZCBzZWUgaWYgaXQncyBmdXp6YWJsZSBpbiBvdXIgY3VycmVudCBzZXR1cC4gVGhlIHByb21wdCBzYXlzOiBcIlJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6IC4uLiBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cIiBTaW5jZSBgYXRoMTJrYCByZWxpZXMgb24gcmVhbCBoYXJkd2FyZSBvciBhIGNvbXBsZXggZW11bGF0b3IgdGhhdCBkb2Vzbid0IGV4aXN0IGluIFFFTVUgb3IgR0NFLCBpdCdzIGltcG9zc2libGUgdG8gcmVhY2ggdGhlc2UgY29kZSBwYXRocyEgVGhhdCdzIGl0LlxuXG5MZXQgbWUganVzdCBkb3VibGUtY2hlY2ssIHRob3VnaCwgbWF5YmUgSSdtIG1pc3Npbmcgc29tZXRoaW5nLCBpcyB0aGVyZSBhbnkgdGVzdCBtb2RlIG9yIHNpbSBtb2RlIHdpdGhpbiBgYXRoMTJrYD8gSSBzaG91bGQgbm90IGFzc3VtZSwgSSB3aWxsIGNoZWNrLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2OTA4LCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDU1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAzVDE2OjI3OjE3LjgzMTk1MzUzNloiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4OTg3MjA5ODYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic2ltXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5oPTQ4OD1zdHJ1Y3QgYXRoMTJrX2xpbmtfc3RhIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5oLTQ5MS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuaDo0OTI6XFx0LyogbGluayBhZGRyZXNzIHNpbWlsYXIgdG8gaWVlZTgwMjExX2xpbmtfc3RhICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmgtNDkzLVxcdHU4IGFkZHJbRVRIX0FMRU5dO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmMtMTItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmM6MTM6c3RhdGljIHNzaXplX3QgYXRoMTJrX3dyaXRlX3NpbXVsYXRlX3JhZGFyKHN0cnVjdCBmaWxlICpmaWxlLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jLTE0LVxcdFxcdFxcdFxcdFxcdCAgIGNvbnN0IGNoYXIgX191c2VyICp1c2VyX2J1ZixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jLTIwLVxcdHdpcGh5X2xvY2soYXRoMTJrX2FyX3RvX2h3KGFyKS1cXHUwMDNld2lwaHkpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jOjIxOlxcdHJldCA9IGF0aDEya193bWlfc2ltdWxhdGVfcmFkYXIoYXIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jLTIyLVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYy0zMC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYzozMTpzdGF0aWMgY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBmb3BzX3NpbXVsYXRlX3JhZGFyID0ge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jOjMyOlxcdC53cml0ZSA9IGF0aDEya193cml0ZV9zaW11bGF0ZV9yYWRhcixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYzozMzpcXHQub3BlbiA9IHNpbXBsZV9vcGVuXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmMtMzQtfTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYy0zNS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYzozNjpzdGF0aWMgc3NpemVfdCBhdGgxMmtfcmVhZF9zaW11bGF0ZV9md19jcmFzaChzdHJ1Y3QgZmlsZSAqZmlsZSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYy0zNy1cXHRcXHRcXHRcXHRcXHQgICAgIGNoYXIgX191c2VyICp1c2VyX2J1ZixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jLTQwLVxcdGNvbnN0IGNoYXIgYnVmW10gPVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jOjQxOlxcdFxcdFxcXCJUbyBzaW11bGF0ZSBmaXJtd2FyZSBjcmFzaCB3cml0ZSBvbmUgb2YgdGhlIGtleXdvcmRzIHRvIHRoaXMgZmlsZTpcXFxcblxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYy00Mi1cXHRcXHRcXFwiYGFzc2VydGAgLSBzZW5kIFdNSV9GT1JDRV9GV19IQU5HX0NNRElEIHRvIGZpcm13YXJlIHRvIGNhdXNlIGFzc2VydC5cXFxcblxcXCI7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmMtNDMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmM6NDQ6XFx0cmV0dXJuIHNpbXBsZV9yZWFkX2Zyb21fYnVmZmVyKHVzZXJfYnVmLCBjb3VudCwgcHBvcywgYnVmLCBzdHJsZW4oYnVmKSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmMtNDUtfVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmM9NDc9c3RhdGljIHNzaXplX3RcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYzo0ODphdGgxMmtfd3JpdGVfc2ltdWxhdGVfZndfY3Jhc2goc3RydWN0IGZpbGUgKmZpbGUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmMtNDktXFx0XFx0XFx0ICAgICAgIGNvbnN0IGNoYXIgX191c2VyICp1c2VyX2J1ZixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jLTYyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jOjYzOlxcdHJjID0gc2ltcGxlX3dyaXRlX3RvX2J1ZmZlcihidWYsIHNpemVvZihidWYpIC0gMSwgcHBvcywgdXNlcl9idWYsIGNvdW50KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYy02NC1cXHRpZiAocmMgXFx1MDAzYyAwKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmMtODEtXFx0aWYgKCFzdHJjbXAoYnVmLCBcXFwiYXNzZXJ0XFxcIikpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYzo4MjpcXHRcXHRhdGgxMmtfaW5mbyhhYiwgXFxcInNpbXVsYXRpbmcgZmlybXdhcmUgYXNzZXJ0IGNyYXNoXFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYy04My1cXHRcXHRyZXQgPSBhdGgxMmtfd21pX2ZvcmNlX2Z3X2hhbmdfY21kKGFyLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmMtOTAtXFx0aWYgKHJldCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jOjkxOlxcdFxcdGF0aDEya193YXJuKGFiLCBcXFwiZmFpbGVkIHRvIHNpbXVsYXRlIGZpcm13YXJlIGNyYXNoOiAlZFxcXFxuXFxcIiwgcmV0KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYy05Mi1cXHRcXHRyZXR1cm4gcmV0O1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmMtOTctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmM6OTg6c3RhdGljIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgZm9wc19zaW11bGF0ZV9md19jcmFzaCA9IHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYzo5OTpcXHQucmVhZCA9IGF0aDEya19yZWFkX3NpbXVsYXRlX2Z3X2NyYXNoLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jOjEwMDpcXHQud3JpdGUgPSBhdGgxMmtfd3JpdGVfc2ltdWxhdGVfZndfY3Jhc2gsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmM6MTAxOlxcdC5vcGVuID0gc2ltcGxlX29wZW4sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmMtMTAyLVxcdC5vd25lciA9IFRISVNfTU9EVUxFLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmM9NzgzPXN0YXRpYyBzc2l6ZV90IGF0aDEya19yZWFkX3RwY19zdGF0cyhzdHJ1Y3QgZmlsZSAqZmlsZSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jLTc4OS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYzo3OTA6XFx0cmV0dXJuIHNpbXBsZV9yZWFkX2Zyb21fYnVmZmVyKHVzZXJfYnVmLCBjb3VudCwgcHBvcywgYnVmLCBsZW4pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jLTc5MS19XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYz04MDg9c3RhdGljIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgZm9wc190cGNfc3RhdHNfdHlwZSA9IHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYy04MDktXFx0LndyaXRlID0gYXRoMTJrX3dyaXRlX3RwY19zdGF0c190eXBlLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jOjgxMDpcXHQub3BlbiA9IHNpbXBsZV9vcGVuLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jLTgxMS1cXHQubGxzZWVrID0gZGVmYXVsdF9sbHNlZWssXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYz04ODQ9c3RhdGljIHNzaXplX3QgYXRoMTJrX3JlYWRfZXh0ZF9yeF9zdGF0cyhzdHJ1Y3QgZmlsZSAqZmlsZSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jLTg5Ni1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYzo4OTc6XFx0cmV0dXJuIHNpbXBsZV9yZWFkX2Zyb21fYnVmZmVyKHVidWYsIGNvdW50LCBwcG9zLCBidWYsIGxlbik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmMtODk4LX1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jPTkwMD1zdGF0aWMgY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBmb3BzX2V4dGRfcnhfc3RhdHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYy05MDItXFx0LndyaXRlID0gYXRoMTJrX3dyaXRlX2V4dGRfcnhfc3RhdHMsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmM6OTAzOlxcdC5vcGVuID0gc2ltcGxlX29wZW4sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmMtOTA0LX07XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYz05OTc9c3RhdGljIHNzaXplX3QgYXRoMTJrX3JlYWRfbGlua19zdGF0cyhzdHJ1Y3QgZmlsZSAqZmlsZSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jLTEwMDMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmM6MTAwNDpcXHRyZXR1cm4gc2ltcGxlX3JlYWRfZnJvbV9idWZmZXIodXNlcl9idWYsIGNvdW50LCBwcG9zLCBidWYsIGxlbik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmMtMTAwNS19XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYz0xMDI1PXN0YXRpYyBzc2l6ZV90IGF0aDEya19kZWJ1Z2ZzX2R1bXBfZGV2aWNlX2RwX3N0YXRzKHN0cnVjdCBmaWxlICpmaWxlLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmMtMTIwMi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYzoxMjAzOlxcdHJldCA9IHNpbXBsZV9yZWFkX2Zyb21fYnVmZmVyKHVzZXJfYnVmLCBjb3VudCwgcHBvcywgYnVmLCBsZW4pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jLTEyMDQtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYz0xMjA4PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIGZvcHNfZGV2aWNlX2RwX3N0YXRzID0ge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jLTEyMDktXFx0LnJlYWQgPSBhdGgxMmtfZGVidWdmc19kdW1wX2RldmljZV9kcF9zdGF0cyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYzoxMjEwOlxcdC5vcGVuID0gc2ltcGxlX29wZW4sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmMtMTIxMS1cXHQub3duZXIgPSBUSElTX01PRFVMRSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jPTEyMTU9dm9pZCBhdGgxMmtfZGVidWdmc19wZGV2X2NyZWF0ZShzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jLTEyMTYte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jOjEyMTc6XFx0ZGVidWdmc19jcmVhdGVfZmlsZShcXFwic2ltdWxhdGVfZndfY3Jhc2hcXFwiLCAwNjAwLCBhYi1cXHUwMDNlZGVidWdmc19zb2MsIGFiLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jOjEyMTg6XFx0XFx0XFx0ICAgIFxcdTAwMjZmb3BzX3NpbXVsYXRlX2Z3X2NyYXNoKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYy0xMjE5LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmM9MTI1MD12b2lkIGF0aDEya19kZWJ1Z2ZzX3NvY19kZXN0cm95KHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYy0xMjU0LVxcdC8qIFdlIGFyZSBub3QgcmVtb3ZpbmcgYXRoMTJrIGRpcmVjdG9yeSBvbiBwdXJwb3NlLCBldmVuIGlmIGl0XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmM6MTI1NTpcXHQgKiB3b3VsZCBiZSBlbXB0eS4gVGhpcyBzaW1wbGlmaWVzIHRoZSBkaXJlY3RvcnkgaGFuZGxpbmcgYW5kIGl0J3NcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYy0xMjU2LVxcdCAqIGEgbWlub3IgY29zbWV0aWMgaXNzdWUgdG8gbGVhdmUgYW4gZW1wdHkgYXRoMTJrIGRpcmVjdG9yeSB0b1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmM9MTMwNz1zdGF0aWMgc3NpemVfdCBhdGgxMmtfcmVhZF92ZGV2X3N0YXRzKHN0cnVjdCBmaWxlICpmaWxlLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmMtMTMxMy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYzoxMzE0OlxcdHJldHVybiBzaW1wbGVfcmVhZF9mcm9tX2J1ZmZlcih1c2VyX2J1ZiwgY291bnQsIHBwb3MsIGJ1ZiwgbGVuKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYy0xMzE1LX1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jPTEzNzQ9c3RhdGljIHNzaXplX3QgYXRoMTJrX3JlYWRfYmNuX3N0YXRzKHN0cnVjdCBmaWxlICpmaWxlLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmMtMTM4MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYzoxMzgxOlxcdHJldHVybiBzaW1wbGVfcmVhZF9mcm9tX2J1ZmZlcih1c2VyX2J1ZiwgY291bnQsIHBwb3MsIGJ1ZiwgbGVuKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYy0xMzgyLX1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jPTE0MzU9c3RhdGljIHNzaXplX3QgYXRoMTJrX3JlYWRfcGRldl9zdGF0cyhzdHJ1Y3QgZmlsZSAqZmlsZSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jLTE0NDEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmM6MTQ0MjpcXHRyZXR1cm4gc2ltcGxlX3JlYWRfZnJvbV9idWZmZXIodXNlcl9idWYsIGNvdW50LCBwcG9zLCBidWYsIGxlbik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmMtMTQ0My19XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYz0xNDcyPXZvaWQgYXRoMTJrX2RlYnVnZnNfcmVnaXN0ZXIoc3RydWN0IGF0aDEyayAqYXIpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYy0xNTA2LVxcdGlmIChhci1cXHUwMDNlbWFjLnNiYW5kc1tOTDgwMjExX0JBTkRfNUdIWl0uY2hhbm5lbHMpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYzoxNTA3OlxcdFxcdGRlYnVnZnNfY3JlYXRlX2ZpbGUoXFxcImRmc19zaW11bGF0ZV9yYWRhclxcXCIsIDAyMDAsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmMtMTUwOC1cXHRcXHRcXHRcXHQgICAgYXItXFx1MDAzZWRlYnVnLmRlYnVnZnNfcGRldiwgYXIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmM6MTUwOTpcXHRcXHRcXHRcXHQgICAgXFx1MDAyNmZvcHNfc2ltdWxhdGVfcmFkYXIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jLTE1MTAtXFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzX2h0dF9zdGF0cy5jPTYxNjU9c3RhdGljIHNzaXplX3QgYXRoMTJrX3JlYWRfaHR0X3N0YXRzX3R5cGUoc3RydWN0IGZpbGUgKmZpbGUsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnNfaHR0X3N0YXRzLmMtNjE3OS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnNfaHR0X3N0YXRzLmM6NjE4MDpcXHRyZXR1cm4gc2ltcGxlX3JlYWRfZnJvbV9idWZmZXIodXNlcl9idWYsIGNvdW50LCBwcG9zLCBidWYsIGxlbik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzX2h0dF9zdGF0cy5jLTYxODEtfVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzX2h0dF9zdGF0cy5jPTYyMjU9c3RhdGljIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgZm9wc19odHRfc3RhdHNfdHlwZSA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmc19odHRfc3RhdHMuYy02MjI3LVxcdC53cml0ZSA9IGF0aDEya193cml0ZV9odHRfc3RhdHNfdHlwZSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnNfaHR0X3N0YXRzLmM6NjIyODpcXHQub3BlbiA9IHNpbXBsZV9vcGVuLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmc19odHRfc3RhdHMuYy02MjI5LVxcdC5vd25lciA9IFRISVNfTU9EVUxFLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzX2h0dF9zdGF0cy5jPTYzNTE9c3RhdGljIHNzaXplX3QgYXRoMTJrX3JlYWRfaHR0X3N0YXRzKHN0cnVjdCBmaWxlICpmaWxlLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzX2h0dF9zdGF0cy5jLTYzNjAtXFx0bGVuZ3RoID0gbWluX3QodTMyLCBzdGF0c19yZXEtXFx1MDAzZWJ1Zl9sZW4sIEFUSDEyS19IVFRfU1RBVFNfQlVGX1NJWkUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmc19odHRfc3RhdHMuYzo2MzYxOlxcdHJldHVybiBzaW1wbGVfcmVhZF9mcm9tX2J1ZmZlcih1c2VyX2J1ZiwgY291bnQsIHBwb3MsIGJ1ZiwgbGVuZ3RoKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnNfaHR0X3N0YXRzLmMtNjM2Mi19XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnNfaHR0X3N0YXRzLmM9NjQyNj1zdGF0aWMgY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBmb3BzX2h0dF9zdGF0c19yZXNldCA9IHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnNfaHR0X3N0YXRzLmMtNjQyNy1cXHQud3JpdGUgPSBhdGgxMmtfd3JpdGVfaHR0X3N0YXRzX3Jlc2V0LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmc19odHRfc3RhdHMuYzo2NDI4OlxcdC5vcGVuID0gc2ltcGxlX29wZW4sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzX2h0dF9zdGF0cy5jLTY0MjktXFx0Lm93bmVyID0gVEhJU19NT0RVTEUsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnNfc3RhLmM9MTM5PXN0YXRpYyBzc2l6ZV90IGF0aDEya19kYmdfc3RhX2R1bXBfcnhfc3RhdHMoc3RydWN0IGZpbGUgKmZpbGUsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnNfc3RhLmMtMjQxLVxcdGlmIChsZW4pXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzX3N0YS5jOjI0MjpcXHRcXHRyZXQgPSBzaW1wbGVfcmVhZF9mcm9tX2J1ZmZlcih1c2VyX2J1ZiwgY291bnQsIHBwb3MsIGJ1ZiwgbGVuKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnNfc3RhLmMtMjQzLVxcdHJldHVybiByZXQ7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnNfc3RhLmM9MjQ2PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIGZvcHNfcnhfc3RhdHMgPSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzX3N0YS5jLTI0Ny1cXHQucmVhZCA9IGF0aDEya19kYmdfc3RhX2R1bXBfcnhfc3RhdHMsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzX3N0YS5jOjI0ODpcXHQub3BlbiA9IHNpbXBsZV9vcGVuLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmc19zdGEuYy0yNDktXFx0Lm93bmVyID0gVEhJU19NT0RVTEUsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnNfc3RhLmM9Mjk2PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIGZvcHNfcmVzZXRfcnhfc3RhdHMgPSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzX3N0YS5jLTI5Ny1cXHQud3JpdGUgPSBhdGgxMmtfZGJnX3N0YV9yZXNldF9yeF9zdGF0cyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnNfc3RhLmM6Mjk4OlxcdC5vcGVuID0gc2ltcGxlX29wZW4sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzX3N0YS5jLTI5OS1cXHQub3duZXIgPSBUSElTX01PRFVMRSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHBfcGVlci5jPTUyOT1pbnQgYXRoMTJrX2RwX2xpbmtfcGVlcl9hc3NpZ24oc3RydWN0IGF0aDEya19kcCAqZHAsIHN0cnVjdCBhdGgxMmtfZHBfaHcgKmRwX2h3LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kcF9wZWVyLmMtNTkyLVxcdFxcdCAqIElmIG9sZCBlbnRyeSBhZGRpdGlvbiBhbHNvIGZhaWxzLCB0aGVuIG5vdGhpbmdcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwX3BlZXIuYzo1OTM6XFx0XFx0ICogY2FuIGJlIGRvbmUsIHNpbXBseSBwcm9jZWVkXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kcF9wZWVyLmMtNTk0LVxcdFxcdCAqL1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9tYWMuYz0yMzcyPXN0YXRpYyB2b2lkIGF0aDEya19wZWVyX2Fzc29jX2hfdmh0KHN0cnVjdCBhdGgxMmsgKmFyLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9tYWMuYy0yNDEzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmM6MjQxNDpcXHQvKiBUT0RPOiBzaW1pbGFyIGZsYWdzIHJlcXVpcmVkPyAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmMtMjQxNS1cXHRhcmctXFx1MDAzZXZodF9jYXBhYmxlID0gdHJ1ZTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcmVnLmM9MjY5PWludCBhdGgxMmtfcmVnZF91cGRhdGUoc3RydWN0IGF0aDEyayAqYXIsIGJvb2wgaW5pdClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcmVnLmMtMzM3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcmVnLmM6MzM4OlxcdC8qIGZpcm13YXJlIHByb3ZpZGVzIHJlZyBydWxlcyB3aGljaCBhcmUgc2ltaWxhciBmb3IgMiBHSHogYW5kIDUgR0h6XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9yZWcuYy0zMzktXFx0ICogcGRldiBidXQgNiBHSHogcGRldiBoYXMgc3VwZXJzZXQgb2YgYWxsIHJ1bGVzIGluY2x1ZGluZyBydWxlcyBmb3JcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmM9MTAwMjM9YXRoMTJrX3dtaV9zZW5kX3VuaXRfdGVzdF9jbWQoc3RydWN0IGF0aDEyayAqYXIsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5jLTEwMDc1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmM6MTAwNzY6aW50IGF0aDEya193bWlfc2ltdWxhdGVfcmFkYXIoc3RydWN0IGF0aDEyayAqYXIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuYy0xMDA3Ny17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5jLTEwMDk1LVxcdCAqIEN1cnJlbnRseSB3ZSBjb3VsZCBwYXNzIHNlZ21lbnRfaWQoYjAgLSBiMSksIGNoaXJwKGIyKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmM6MTAwOTY6XFx0ICogZnJlcSBvZmZzZXQgKGIzIC0gYjEwKSB0byB1bml0IHRlc3QuIEZvciBzaW11bGF0aW9uXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuYy0xMDA5Ny1cXHQgKiBwdXJwb3NlIHRoaXMgY2FuIGJlIHNldCB0byAwIHdoaWNoIGlzIHZhbGlkLlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuaD0zNjY1PWVudW0gd21pX3N0YV9wc19tb2RlIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmgtMzY3Ny0vKiB0eXBlLCAwOnVudXNlZCAxOiBBU1NFUlQgMjogbm90IHJlc3BvbmQgZGV0ZWN0IGNvbW1hbmRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5oOjM2Nzg6ICogZGVsYXlfdGltZV9tcywgdGhlIHNpbXVsYXRlIHdpbGwgZGVsYXkgdGltZVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmgtMzY3OS0gKi9cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmg9NjQ2Nj1pbnQgYXRoMTJrX3dtaV9zZW5kX3BkZXZfc2V0X3JlZ2RvbWFpbihzdHJ1Y3QgYXRoMTJrICphcixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5oLTY0NjctXFx0XFx0XFx0XFx0ICAgICAgIHN0cnVjdCBhdGgxMmtfd21pX3BkZXZfc2V0X3JlZ2RvbWFpbl9hcmcgKmFyZyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuaDo2NDY4OmludCBhdGgxMmtfd21pX3NpbXVsYXRlX3JhZGFyKHN0cnVjdCBhdGgxMmsgKmFyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5oLTY0NjktaW50IGF0aDEya193bWlfc2VuZF90d3RfZW5hYmxlX2NtZChzdHJ1Y3QgYXRoMTJrICphciwgdTMyIHBkZXZfaWQpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wM1QxNjoyNzoxOC43MzA2ODIwNDJaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMjY4MzA4NDE5MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipVbnJlYWNoYWJsZSBDb2RlIFBhdGhzIGluIFZpcnR1YWxpemVkIEVudmlyb25tZW50cyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIHRoZSBgYXRoMTJrYCBkcml2ZXIuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IHRoaXMgaXMgZm9yIHJlYWwgaGFyZHdhcmUsIHNwZWNpZmljYWxseSBRdWFsY29tbSBXaS1GaSA3IGRldmljZXMuICBJIG5lZWQgdG8gZmlndXJlIG91dCBpZiB0aGVzZSBjb2RlIGNoYW5nZXMgYXJlIHdvcnRoIGZ1enppbmcuIEkgY2FuIHNlZSB0aGVyZSBhcmUgYHNpbXVsYXRlX3JhZGFyYCBhbmQgYHNpbXVsYXRlX2Z3X2NyYXNoYCBkZWJ1Z2ZzIGNvbW1hbmRzLCBidXQgbm90aGluZyBsaWtlIGEgZnVsbCBNQUMvUEhZIHNpbXVsYXRpb24gbGlrZSBgaHdzaW1gLiAgTXkgaW5zdGluY3QgaXMgdGhhdCwgbm8sIHRoZXkncmUgbm90LlxuXG5JIHN0YXJ0ZWQgdG8gdGhpbmsgYWJvdXQgU3l6a2FsbGVyLiBJdCBoYXMgYSBQQ0kgZnV6emVyLCBhbmQgSSB3b25kZXJlZCBpZiB0aGF0IGNvdWxkIGJlIHVzZWQgb24gYGF0aDEya2AuICBQZXJoYXBzIGlmIHRoZSBmdXp6ZXIgY291bGQgdHJpZ2dlciBXTUkgZXZlbnRzIGJ5IHdyaXRpbmcgdG8gTU1JTywgaXQgbWlnaHQgcmVhY2ggZnVuY3Rpb25zIGxpa2UgYGF0aDEya19jaGFuX2luZm9fZXZlbnRgLiBCdXQgdGhlbiBJIHJlbWVtYmVyZWQgdGhhdCBXTUkgZXZlbnRzIGFyZSBjb21wbGV4IHN0cnVjdHVyZXMgc2VudCB2aWEgTUhJIG9yIHRoZSBDb3B5IEVuZ2luZS4gSXQncyBpbmNyZWRpYmx5IHVubGlrZWx5IHRoYXQgYSByYW5kb20gTU1JTyB3cml0ZSB3b3VsZCBlbXVsYXRlIGEgdmFsaWQgV01JIGV2ZW50IHNlcXVlbmNlLiAgSG1tLCBTeXprYWxsZXIgYWxzbyBoYXMgYSBtYWM4MDIxMSBmdXp6ZXIgKHZpYSBod3NpbSkuIEhvd2V2ZXIsIGBod3NpbWAgb25seSBmdXp6ZXMgbWFjODAyMTEsIG5vdCBgYXRoMTJrYC5cblxuSSByZS1yZWFkIHRoZSBwcm9tcHQuIEl0IHNheXMgdG8gcmV0dXJuIGBXb3J0aEZ1enppbmc9ZmFsc2VgIGlmIHRoZSBwYXRjaCBjb25jZXJucyBcIkNvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlwiIFNpbmNlIGBhdGgxMmtgIGlzIGEgaGFyZHdhcmUtc3BlY2lmaWMgZHJpdmVyIGZvciBhIFBDSS9BSEIgZGV2aWNlLCBhbmQgdGhlcmUncyBubyBzb2Z0d2FyZSBlbXVsYXRpb24gZm9yIGl0IGluIFFFTVUvR0NFLCBpdCdzIGltcG9zc2libGUgdG8gcmVhY2ggdGhlc2UgY29kZSBwYXRocyBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50LlxuXG5KdXN0IHRvIGJlIHN1cmUsIGxldCBtZSBjaGVjay4gSSBrbm93IHRoYXQgYGF0aDEya19tYWNfb3BfZ2V0X3N1cnZleWAgaXMgcmVnaXN0ZXJlZCBhcyBhIG1hYzgwMjExIGNhbGxiYWNrLiBUbyByZWdpc3RlciBpdCwgYGF0aDEya19tYWNfcmVnaXN0ZXJgIG11c3QgYmUgY2FsbGVkLiBgYXRoMTJrX21hY19yZWdpc3RlcmAgaXMgY2FsbGVkIGR1cmluZyBkZXZpY2UgaW5pdGlhbGl6YXRpb24gKGBhdGgxMmtfY29yZV9zdGFydGApLiBEZXZpY2UgaW5pdGlhbGl6YXRpb24gcmVxdWlyZXMgYSByZWFsIFBDSS9BSEIgZGV2aWNlIHRvIHByb2JlLCBhbmQgdGhlbiBpdCBjb21tdW5pY2F0ZXMgd2l0aCB0aGUgZmlybXdhcmUgdG8gZ2V0IGNhcGFiaWxpdGllcyBiZWZvcmUgcmVnaXN0ZXJpbmcgd2l0aCBtYWM4MDIxMS4gV2l0aG91dCByZWFsIGhhcmR3YXJlIG9yIGEgc3BlY2lmaWMgZW11bGF0b3IsIGBhdGgxMmtfY29yZV9zdGFydGAgaXMgZ29pbmcgdG8gZmFpbCBlYXJseS4gIEl0J2xsIGZhaWwgdG8gbG9hZCBmaXJtd2FyZSwgZmFpbCB0byBpbml0aWFsaXplIE1ISSwgZmFpbCB0byBnZXQgV01JIHJlYWR5LiAgVGhlcmVmb3JlLCB0aGUgbWFjODAyMTEgY2FsbGJhY2tzIGZvciBgYXRoMTJrYCB3aWxsIG5ldmVyIGJlIHJlZ2lzdGVyZWQgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4gU28geWVzLCB0aGUgY29kZSBwYXRocyBhcmUgaW1wb3NzaWJsZSB0byByZWFjaC5cblxuT2theSwgbGV0IG1lIGNvbmZpcm0gdGhpcyByZWFzb25pbmcuIFRoZSBwYXRjaCBtb2RpZmllcyB0aGUgYGF0aDEya2AgZHJpdmVyLiBJdCByZXF1aXJlcyByZWFsIGhhcmR3YXJlIGFuZCBmaXJtd2FyZSB0byBib290LiBJbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50IGxpa2UgR0NFIG9yIFFFTVUgd2l0aG91dCBQQ0kgcGFzc3Rocm91Z2ggb2YgdGhlIHNwZWNpZmljIGhhcmR3YXJlLCB0aGUgZHJpdmVyIHdpbGwgbm90IHByb2JlIHN1Y2Nlc3NmdWxseS4gRXZlbiB3aXRoIFN5emthbGxlcidzIFBDSSBmdXp6ZXIsIGl0J3MgcHJhY3RpY2FsbHkgaW1wb3NzaWJsZSB0byBwYXNzIHRoZSBjb21wbGV4IGZpcm13YXJlIGJvb3Qgc2VxdWVuY2UgKE1ISSwgUU1JLCBXTUkpIHRvIHJlZ2lzdGVyIHRoZSBtYWM4MDIxMSBkZXZpY2UuIFRodXMsIHRoZSBtb2RpZmllZCBmdW5jdGlvbnMgKGBhdGgxMmtfbWFjX29wX2dldF9zdXJ2ZXlgLCBgYXRoMTJrX2NoYW5faW5mb19ldmVudGAsIGV0Yy4pIGFyZSB1bnJlYWNoYWJsZS4gVGhlcmVmb3JlLCBgV29ydGhGdXp6aW5nYCBzaG91bGQgYmUgYGZhbHNlYC5cblxuSnVzdCB0byBiZSBhYnNvbHV0ZWx5IHN1cmUsIGxldCBtZSBjaGVjayBpZiB0aGVyZSBpcyBhbnkgb3RoZXIgd2F5LiBJcyB0aGVyZSBhIGR1bW15IG9yIHRlc3QgbW9kZSBpbiBgYXRoMTJrYD8gSSBzZWFyY2hlZCBmb3IgXCJzaW1cIiBhbmQgZm91bmQgYHNpbXVsYXRlX3JhZGFyYCBhbmQgYHNpbXVsYXRlX2Z3X2NyYXNoYCwgd2hpY2ggYXJlIGRlYnVnZnMgY29tbWFuZHMgdG8gc2VuZCBXTUkgY29tbWFuZHMgdG8gdGhlIGZpcm13YXJlLiBUaGV5IHN0aWxsIHJlcXVpcmUgdGhlIGZpcm13YXJlIHRvIGJlIHJ1bm5pbmcuIFRoZXJlIGlzIG5vIGBod3NpbWAgZXF1aXZhbGVudCBmb3IgYGF0aDEya2AuIFNvIHllcywgaXQncyB1bnJlYWNoYWJsZS5cblxuSSdtIGdvaW5nIHRvIHNldCBgV29ydGhGdXp6aW5nPWZhbHNlYCBhbmQgcHJvdmlkZSB0aGlzIHJlYXNvbmluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTM2MzcsIk91dHB1dFRva2VucyI6MTMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Nzk1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAzVDE2OjI3OjMxLjQxMzc2ODE1M1oiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjQ4MzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGF0aDEyayBkcml2ZXIsIHdoaWNoIGlzIGEgaGFyZHdhcmUtc3BlY2lmaWMgZHJpdmVyIGZvciBRdWFsY29tbSBXaS1GaSA3IFBDSWUvQUhCIGRldmljZXMuIFRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIChtYWM4MDIxMSBjYWxsYmFja3MgYW5kIFdNSSBldmVudCBoYW5kbGVycykgcmVxdWlyZSBhIHN1Y2Nlc3NmdWwgZGV2aWNlIHByb2JlIGFuZCBmaXJtd2FyZSBib290IHNlcXVlbmNlIChNSEksIFFNSSwgV01JKSB0byBiZSByZWFjaGFibGUuIFNpbmNlIHRoZXJlIGlzIG5vIHNvZnR3YXJlIGVtdWxhdGlvbiBmb3IgdGhpcyBoYXJkd2FyZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRSwgdGhlc2UgY29kZSBwYXRocyBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBhbmQgZnV6ei5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBhdGgxMmsgZHJpdmVyLCB3aGljaCBpcyBhIGhhcmR3YXJlLXNwZWNpZmljIGRyaXZlciBmb3IgUXVhbGNvbW0gV2ktRmkgNyBQQ0llL0FIQiBkZXZpY2VzLiBUaGUgbW9kaWZpZWQgY29kZSBwYXRocyAobWFjODAyMTEgY2FsbGJhY2tzIGFuZCBXTUkgZXZlbnQgaGFuZGxlcnMpIHJlcXVpcmUgYSBzdWNjZXNzZnVsIGRldmljZSBwcm9iZSBhbmQgZmlybXdhcmUgYm9vdCBzZXF1ZW5jZSAoTUhJLCBRTUksIFdNSSkgdG8gYmUgcmVhY2hhYmxlLiBTaW5jZSB0aGVyZSBpcyBubyBzb2Z0d2FyZSBlbXVsYXRpb24gZm9yIHRoaXMgaGFyZHdhcmUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHQ0UsIHRoZXNlIGNvZGUgcGF0aHMgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggYW5kIGZ1enouXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },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-workflowkhtj5[1] Phase: Running StartedAt: 2026-07-03 16:27:42 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkhtj5[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-07-03 16:27:42 +0000 UTC FinishedAt: 2026-07-03 16:28:48 +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,}