Name: series-workflowq2ws8 Phase: Failed StartedAt: 2026-06-29 08:04:24 +0000 UTC FinishedAt: 2026-06-29 08:20:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflowq2ws8[0] Phase: Succeeded StartedAt: 2026-06-29 08:04:24 +0000 UTC FinishedAt: 2026-06-29 08:19:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflowq2ws8[0].run-triage Phase: Succeeded StartedAt: 2026-06-29 08:04:24 +0000 UTC FinishedAt: 2026-06-29 08:19:41 +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+CgkJCTx0ZD4yMDI2LzA2LzI5IDA4OjE0PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGVuZGlhbm5lc3MgaXNzdWVzIChzcGFyc2Ugd2FybmluZ3MpIGluIHRoZSBhdGgxMmsgZHJpdmVyJiMzOTtzIFdNSSAoV2lyZWxlc3MgTW9kdWxlIEludGVyZmFjZSkgY29tbXVuaWNhdGlvbiB3aXRoIHRoZSBmaXJtd2FyZS4gVGhpcyBjb2RlIGlzIHVucmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VIGJlY2F1c2UgaXQgcmVxdWlyZXMgYWN0dWFsIFF1YWxjb21tIFdpLUZpIDcgaGFyZHdhcmUgYW5kIGl0cyBwcm9wcmlldGFyeSBmaXJtd2FyZSB0byBpbml0aWFsaXplIHRoZSBkZXZpY2UgYW5kIHJlYWNoIHRoZSBXTUkgbWVzc2FnZSBwYXJzaW5nL3NlbmRpbmcgbG9naWMuIFN5emthbGxlciBjYW5ub3QgZW11bGF0ZSB0aGUgY29tcGxleCBRTUkvV01JIGZpcm13YXJlIGludGVyZmFjZSByZXF1aXJlZCB0byB0cmlnZ2VyIHRoZXNlIGNvZGUgcGF0aHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI5IDA4OjE0PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgM2JjNmE0MGI3Yjc5ZmNjMTg5YWE2NDhiZDY4MjZhYzdlZDQyYjA5N1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBNb24gSnVuIDI5IDA4OjE0OjA2IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmhcbmluZGV4IGZjNTEyN2I1YzFhMzdmLi4xM2ZhNmU1NGQyNzlkMiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5oXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuaFxuQEAgLTgwOCwxMyAmIzQzOzgwOCwxMyBAQCBzdHJ1Y3QgYXRoMTJrX2JhbmRfY2FwIHtcbiBcdHUzMiBwaHlfaWQ7XG4gXHR1MzIgbWF4X2J3X3N1cHBvcnRlZDtcbiBcdHUzMiBodF9jYXBfaW5mbztcbi1cdHUzMiBoZV9jYXBfaW5mb1syXTtcbiYjNDM7XHRfX2xlMzIgaGVfY2FwX2luZm9bMl07XG4gXHR1MzIgaGVfbWNzO1xuLVx0dTMyIGhlX2NhcF9waHlfaW5mb1tQU09DX0hPU1RfTUFYX1BIWV9TSVpFXTtcbiYjNDM7XHRfX2xlMzIgaGVfY2FwX3BoeV9pbmZvW1BTT0NfSE9TVF9NQVhfUEhZX1NJWkVdO1xuIFx0c3RydWN0IGF0aDEya193bWlfcHBlX3RocmVzaG9sZF9hcmcgaGVfcHBldDtcbiBcdHUxNiBoZV82Z2h6X2NhcGE7XG4tXHR1MzIgZWh0X2NhcF9tYWNfaW5mb1tXTUlfTUFYX0VIVENBUF9NQUNfU0laRV07XG4tXHR1MzIgZWh0X2NhcF9waHlfaW5mb1tXTUlfTUFYX0VIVENBUF9QSFlfU0laRV07XG4mIzQzO1x0X19sZTMyIGVodF9jYXBfbWFjX2luZm9bV01JX01BWF9FSFRDQVBfTUFDX1NJWkVdO1xuJiM0MztcdF9fbGUzMiBlaHRfY2FwX3BoeV9pbmZvW1dNSV9NQVhfRUhUQ0FQX1BIWV9TSVpFXTtcbiBcdHUzMiBlaHRfbWNzXzIwX29ubHk7XG4gXHR1MzIgZWh0X21jc184MDtcbiBcdHUzMiBlaHRfbWNzXzE2MDtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jXG5pbmRleCBkMTdkNGE4ZjFjYjdkMy4uNmIwZDA3NDQ4ZTVkNzIgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmNcbkBAIC00MTAsOCAmIzQzOzQxMCw4IEBAIHN0YXRpYyBib29sIGF0aDEya19oZV9zdXBwb3J0c19leHRyYV9tY3Moc3RydWN0IGF0aDEyayAqYXIsIGludCBmcmVxKVxuIFx0ZWxzZVxuIFx0XHRjYXBfYmFuZCA9IFx1MDAyNmNhcC1cdTAwM2ViYW5kW05MODAyMTFfQkFORF82R0haXTtcbiBcbi1cdGV4dHJhX21jc19zdXBwb3J0ZWQgPSB1MzJfZ2V0X2JpdHMoY2FwX2JhbmQtXHUwMDNlaGVfY2FwX2luZm9bMV0sXG4tXHRcdFx0XHRcdCAgIEhFX0VYVFJBX01DU19TVVBQT1JUKTtcbiYjNDM7XHRleHRyYV9tY3Nfc3VwcG9ydGVkID0gbGUzMl9nZXRfYml0cyhjYXBfYmFuZC1cdTAwM2VoZV9jYXBfaW5mb1sxXSxcbiYjNDM7XHRcdFx0XHRcdCAgICBIRV9FWFRSQV9NQ1NfU1VQUE9SVCk7XG4gXHRyZXR1cm4gZXh0cmFfbWNzX3N1cHBvcnRlZDtcbiB9XG4gXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmNcbmluZGV4IDg0YTMxYjk1M2RiODFhLi4zOWY4Y2E3MzY4ZTMxNyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmNcbkBAIC01NDUsMTIgJiM0Mzs1NDUsMTEgQEAgYXRoMTJrX3B1bGxfbWFjX3BoeV9jYXBfc3ZjX3JlYWR5X2V4dChzdHJ1Y3QgYXRoMTJrX3dtaV9wZGV2ICp3bWlfaGFuZGxlLFxuIFx0XHRjYXBfYmFuZC1cdTAwM2VwaHlfaWQgPSBsZTMyX3RvX2NwdShtYWNfY2Fwcy1cdTAwM2VwaHlfaWQpO1xuIFx0XHRjYXBfYmFuZC1cdTAwM2VtYXhfYndfc3VwcG9ydGVkID0gbGUzMl90b19jcHUobWFjX2NhcHMtXHUwMDNlbWF4X2J3X3N1cHBvcnRlZF8yZyk7XG4gXHRcdGNhcF9iYW5kLVx1MDAzZWh0X2NhcF9pbmZvID0gbGUzMl90b19jcHUobWFjX2NhcHMtXHUwMDNlaHRfY2FwX2luZm9fMmcpO1xuLVx0XHRjYXBfYmFuZC1cdTAwM2VoZV9jYXBfaW5mb1swXSA9IGxlMzJfdG9fY3B1KG1hY19jYXBzLVx1MDAzZWhlX2NhcF9pbmZvXzJnKTtcbi1cdFx0Y2FwX2JhbmQtXHUwMDNlaGVfY2FwX2luZm9bMV0gPSBsZTMyX3RvX2NwdShtYWNfY2Fwcy1cdTAwM2VoZV9jYXBfaW5mb18yZ19leHQpO1xuJiM0MztcdFx0Y2FwX2JhbmQtXHUwMDNlaGVfY2FwX2luZm9bMF0gPSBtYWNfY2Fwcy1cdTAwM2VoZV9jYXBfaW5mb18yZztcbiYjNDM7XHRcdGNhcF9iYW5kLVx1MDAzZWhlX2NhcF9pbmZvWzFdID0gbWFjX2NhcHMtXHUwMDNlaGVfY2FwX2luZm9fMmdfZXh0O1xuIFx0XHRjYXBfYmFuZC1cdTAwM2VoZV9tY3MgPSBsZTMyX3RvX2NwdShtYWNfY2Fwcy1cdTAwM2VoZV9zdXBwX21jc18yZyk7XG4tXHRcdGZvciAoaSA9IDA7IGkgXHUwMDNjIFdNSV9NQVhfSEVDQVBfUEhZX1NJWkU7IGkmIzQzOyYjNDM7KVxuLVx0XHRcdGNhcF9iYW5kLVx1MDAzZWhlX2NhcF9waHlfaW5mb1tpXSA9XG4tXHRcdFx0XHRsZTMyX3RvX2NwdShtYWNfY2Fwcy1cdTAwM2VoZV9jYXBfcGh5X2luZm9fMmdbaV0pO1xuJiM0MztcdFx0bWVtY3B5KFx1MDAyNmNhcF9iYW5kLVx1MDAzZWhlX2NhcF9waHlfaW5mbywgXHUwMDI2bWFjX2NhcHMtXHUwMDNlaGVfY2FwX3BoeV9pbmZvXzJnLFxuJiM0MztcdFx0ICAgICAgIHNpemVvZih1MzIpICogV01JX01BWF9IRUNBUF9QSFlfU0laRSk7XG4gXG4gXHRcdGNhcF9iYW5kLVx1MDAzZWhlX3BwZXQubnVtc3NfbTEgPSBsZTMyX3RvX2NwdShtYWNfY2Fwcy1cdTAwM2VoZV9wcGV0MmcubnVtc3NfbTEpO1xuIFx0XHRjYXBfYmFuZC1cdTAwM2VoZV9wcGV0LnJ1X2JpdF9tYXNrID0gbGUzMl90b19jcHUobWFjX2NhcHMtXHUwMDNlaGVfcHBldDJnLnJ1X2luZm8pO1xuQEAgLTU2NiwxMiAmIzQzOzU2NSwxMSBAQCBhdGgxMmtfcHVsbF9tYWNfcGh5X2NhcF9zdmNfcmVhZHlfZXh0KHN0cnVjdCBhdGgxMmtfd21pX3BkZXYgKndtaV9oYW5kbGUsXG4gXHRcdGNhcF9iYW5kLVx1MDAzZW1heF9id19zdXBwb3J0ZWQgPVxuIFx0XHRcdGxlMzJfdG9fY3B1KG1hY19jYXBzLVx1MDAzZW1heF9id19zdXBwb3J0ZWRfNWcpO1xuIFx0XHRjYXBfYmFuZC1cdTAwM2VodF9jYXBfaW5mbyA9IGxlMzJfdG9fY3B1KG1hY19jYXBzLVx1MDAzZWh0X2NhcF9pbmZvXzVnKTtcbi1cdFx0Y2FwX2JhbmQtXHUwMDNlaGVfY2FwX2luZm9bMF0gPSBsZTMyX3RvX2NwdShtYWNfY2Fwcy1cdTAwM2VoZV9jYXBfaW5mb181Zyk7XG4tXHRcdGNhcF9iYW5kLVx1MDAzZWhlX2NhcF9pbmZvWzFdID0gbGUzMl90b19jcHUobWFjX2NhcHMtXHUwMDNlaGVfY2FwX2luZm9fNWdfZXh0KTtcbiYjNDM7XHRcdGNhcF9iYW5kLVx1MDAzZWhlX2NhcF9pbmZvWzBdID0gbWFjX2NhcHMtXHUwMDNlaGVfY2FwX2luZm9fNWc7XG4mIzQzO1x0XHRjYXBfYmFuZC1cdTAwM2VoZV9jYXBfaW5mb1sxXSA9IG1hY19jYXBzLVx1MDAzZWhlX2NhcF9pbmZvXzVnX2V4dDtcbiBcdFx0Y2FwX2JhbmQtXHUwMDNlaGVfbWNzID0gbGUzMl90b19jcHUobWFjX2NhcHMtXHUwMDNlaGVfc3VwcF9tY3NfNWcpO1xuLVx0XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBXTUlfTUFYX0hFQ0FQX1BIWV9TSVpFOyBpJiM0MzsmIzQzOylcbi1cdFx0XHRjYXBfYmFuZC1cdTAwM2VoZV9jYXBfcGh5X2luZm9baV0gPVxuLVx0XHRcdFx0bGUzMl90b19jcHUobWFjX2NhcHMtXHUwMDNlaGVfY2FwX3BoeV9pbmZvXzVnW2ldKTtcbiYjNDM7XHRcdG1lbWNweShcdTAwMjZjYXBfYmFuZC1cdTAwM2VoZV9jYXBfcGh5X2luZm8sIFx1MDAyNm1hY19jYXBzLVx1MDAzZWhlX2NhcF9waHlfaW5mb181ZyxcbiYjNDM7XHRcdCAgICAgICBzaXplb2YodTMyKSAqIFdNSV9NQVhfSEVDQVBfUEhZX1NJWkUpO1xuIFxuIFx0XHRjYXBfYmFuZC1cdTAwM2VoZV9wcGV0Lm51bXNzX20xID0gbGUzMl90b19jcHUobWFjX2NhcHMtXHUwMDNlaGVfcHBldDVnLm51bXNzX20xKTtcbiBcdFx0Y2FwX2JhbmQtXHUwMDNlaGVfcHBldC5ydV9iaXRfbWFzayA9IGxlMzJfdG9fY3B1KG1hY19jYXBzLVx1MDAzZWhlX3BwZXQ1Zy5ydV9pbmZvKTtcbkBAIC01ODQsMTIgJiM0Mzs1ODIsMTEgQEAgYXRoMTJrX3B1bGxfbWFjX3BoeV9jYXBfc3ZjX3JlYWR5X2V4dChzdHJ1Y3QgYXRoMTJrX3dtaV9wZGV2ICp3bWlfaGFuZGxlLFxuIFx0XHRjYXBfYmFuZC1cdTAwM2VtYXhfYndfc3VwcG9ydGVkID1cbiBcdFx0XHRsZTMyX3RvX2NwdShtYWNfY2Fwcy1cdTAwM2VtYXhfYndfc3VwcG9ydGVkXzVnKTtcbiBcdFx0Y2FwX2JhbmQtXHUwMDNlaHRfY2FwX2luZm8gPSBsZTMyX3RvX2NwdShtYWNfY2Fwcy1cdTAwM2VodF9jYXBfaW5mb181Zyk7XG4tXHRcdGNhcF9iYW5kLVx1MDAzZWhlX2NhcF9pbmZvWzBdID0gbGUzMl90b19jcHUobWFjX2NhcHMtXHUwMDNlaGVfY2FwX2luZm9fNWcpO1xuLVx0XHRjYXBfYmFuZC1cdTAwM2VoZV9jYXBfaW5mb1sxXSA9IGxlMzJfdG9fY3B1KG1hY19jYXBzLVx1MDAzZWhlX2NhcF9pbmZvXzVnX2V4dCk7XG4mIzQzO1x0XHRjYXBfYmFuZC1cdTAwM2VoZV9jYXBfaW5mb1swXSA9IG1hY19jYXBzLVx1MDAzZWhlX2NhcF9pbmZvXzVnO1xuJiM0MztcdFx0Y2FwX2JhbmQtXHUwMDNlaGVfY2FwX2luZm9bMV0gPSBtYWNfY2Fwcy1cdTAwM2VoZV9jYXBfaW5mb181Z19leHQ7XG4gXHRcdGNhcF9iYW5kLVx1MDAzZWhlX21jcyA9IGxlMzJfdG9fY3B1KG1hY19jYXBzLVx1MDAzZWhlX3N1cHBfbWNzXzVnKTtcbi1cdFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgV01JX01BWF9IRUNBUF9QSFlfU0laRTsgaSYjNDM7JiM0MzspXG4tXHRcdFx0Y2FwX2JhbmQtXHUwMDNlaGVfY2FwX3BoeV9pbmZvW2ldID1cbi1cdFx0XHRcdGxlMzJfdG9fY3B1KG1hY19jYXBzLVx1MDAzZWhlX2NhcF9waHlfaW5mb181Z1tpXSk7XG4mIzQzO1x0XHRtZW1jcHkoXHUwMDI2Y2FwX2JhbmQtXHUwMDNlaGVfY2FwX3BoeV9pbmZvLCBcdTAwMjZtYWNfY2Fwcy1cdTAwM2VoZV9jYXBfcGh5X2luZm9fNWcsXG4mIzQzO1x0XHQgICAgICAgc2l6ZW9mKHUzMikgKiBXTUlfTUFYX0hFQ0FQX1BIWV9TSVpFKTtcbiBcbiBcdFx0Y2FwX2JhbmQtXHUwMDNlaGVfcHBldC5udW1zc19tMSA9IGxlMzJfdG9fY3B1KG1hY19jYXBzLVx1MDAzZWhlX3BwZXQ1Zy5udW1zc19tMSk7XG4gXHRcdGNhcF9iYW5kLVx1MDAzZWhlX3BwZXQucnVfYml0X21hc2sgPSBsZTMyX3RvX2NwdShtYWNfY2Fwcy1cdTAwM2VoZV9wcGV0NWcucnVfaW5mbyk7XG5AQCAtMjI4NCwxNCAmIzQzOzIyODEsMTMgQEAgaW50IGF0aDEya193bWlfc2VuZF9wZWVyX2Fzc29jX2NtZChzdHJ1Y3QgYXRoMTJrICphcixcbiBcdGNtZC1cdTAwM2VwZWVyX3BoeW1vZGUgPSBjcHVfdG9fbGUzMihhcmctXHUwMDNlcGVlcl9waHltb2RlKTtcbiBcbiBcdC8qIFVwZGF0ZSAxMWF4IGNhcGFiaWxpdGllcyAqL1xuLVx0Y21kLVx1MDAzZXBlZXJfaGVfY2FwX2luZm8gPSBjcHVfdG9fbGUzMihhcmctXHUwMDNlcGVlcl9oZV9jYXBfbWFjaW5mb1swXSk7XG4tXHRjbWQtXHUwMDNlcGVlcl9oZV9jYXBfaW5mb19leHQgPSBjcHVfdG9fbGUzMihhcmctXHUwMDNlcGVlcl9oZV9jYXBfbWFjaW5mb1sxXSk7XG4mIzQzO1x0Y21kLVx1MDAzZXBlZXJfaGVfY2FwX2luZm8gPSBhcmctXHUwMDNlcGVlcl9oZV9jYXBfbWFjaW5mb1swXTtcbiYjNDM7XHRjbWQtXHUwMDNlcGVlcl9oZV9jYXBfaW5mb19leHQgPSBhcmctXHUwMDNlcGVlcl9oZV9jYXBfbWFjaW5mb1sxXTtcbiBcdGNtZC1cdTAwM2VwZWVyX2hlX2NhcF9pbmZvX2ludGVybmFsID0gY3B1X3RvX2xlMzIoYXJnLVx1MDAzZXBlZXJfaGVfY2FwX21hY2luZm9faW50ZXJuYWwpO1xuIFx0Y21kLVx1MDAzZXBlZXJfaGVfY2Fwc182Z2h6ID0gY3B1X3RvX2xlMzIoYXJnLVx1MDAzZXBlZXJfaGVfY2Fwc182Z2h6KTtcbiBcdGNtZC1cdTAwM2VwZWVyX2hlX29wcyA9IGNwdV90b19sZTMyKGFyZy1cdTAwM2VwZWVyX2hlX29wcyk7XG4tXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBXTUlfTUFYX0hFQ0FQX1BIWV9TSVpFOyBpJiM0MzsmIzQzOylcbi1cdFx0Y21kLVx1MDAzZXBlZXJfaGVfY2FwX3BoeVtpXSA9XG4tXHRcdFx0Y3B1X3RvX2xlMzIoYXJnLVx1MDAzZXBlZXJfaGVfY2FwX3BoeWluZm9baV0pO1xuJiM0MztcdG1lbWNweShjbWQtXHUwMDNlcGVlcl9oZV9jYXBfcGh5LCBhcmctXHUwMDNlcGVlcl9oZV9jYXBfcGh5aW5mbyxcbiYjNDM7XHQgICAgICAgc2l6ZW9mKHUzMikgKiBXTUlfTUFYX0hFQ0FQX1BIWV9TSVpFKTtcbiBcdGNtZC1cdTAwM2VwZWVyX3BwZXQubnVtc3NfbTEgPSBjcHVfdG9fbGUzMihhcmctXHUwMDNlcGVlcl9wcGV0Lm51bXNzX20xKTtcbiBcdGNtZC1cdTAwM2VwZWVyX3BwZXQucnVfaW5mbyA9IGNwdV90b19sZTMyKGFyZy1cdTAwM2VwZWVyX3BwZXQucnVfYml0X21hc2spO1xuIFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgV01JX01BWF9OVU1fU1M7IGkmIzQzOyYjNDM7KVxuQEAgLTUxNTgsMTcgJiM0Mzs1MTU0LDE3IEBAIHN0YXRpYyB2b2lkIGF0aDEya193bWlfZWh0X2NhcHNfcGFyc2Uoc3RydWN0IGF0aDEya19wZGV2ICpwZGV2LCB1MzIgYmFuZCxcbiBcdHU4IGk7XG4gXG4gXHRpZiAoYmFuZCA9PSBOTDgwMjExX0JBTkRfNkdIWilcbi1cdFx0c3VwcG9ydF8zMjBtaHogPSBjYXBfYmFuZC1cdTAwM2VlaHRfY2FwX3BoeV9pbmZvWzBdIFx1MDAyNlxuLVx0XHRcdFx0XHRJRUVFODAyMTFfRUhUX1BIWV9DQVAwXzMyME1IWl9JTl82R0haO1xuJiM0MztcdFx0c3VwcG9ydF8zMjBtaHogPSBsZTMyX3RvX2NwdShjYXBfYmFuZC1cdTAwM2VlaHRfY2FwX3BoeV9pbmZvWzBdKSBcdTAwMjZcbiYjNDM7XHRcdFx0XHQgSUVFRTgwMjExX0VIVF9QSFlfQ0FQMF8zMjBNSFpfSU5fNkdIWjtcbiBcbi1cdGZvciAoaSA9IDA7IGkgXHUwMDNjIFdNSV9NQVhfRUhUQ0FQX01BQ19TSVpFOyBpJiM0MzsmIzQzOylcbi1cdFx0Y2FwX2JhbmQtXHUwMDNlZWh0X2NhcF9tYWNfaW5mb1tpXSA9IGxlMzJfdG9fY3B1KGNhcF9tYWNfaW5mb1tpXSk7XG4mIzQzO1x0bWVtY3B5KGNhcF9iYW5kLVx1MDAzZWVodF9jYXBfbWFjX2luZm8sIGNhcF9tYWNfaW5mbyxcbiYjNDM7XHQgICAgICAgc2l6ZW9mKHUzMikgKiBXTUlfTUFYX0VIVENBUF9NQUNfU0laRSk7XG4gXG4tXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBXTUlfTUFYX0VIVENBUF9QSFlfU0laRTsgaSYjNDM7JiM0MzspXG4tXHRcdGNhcF9iYW5kLVx1MDAzZWVodF9jYXBfcGh5X2luZm9baV0gPSBsZTMyX3RvX2NwdShjYXBfcGh5X2luZm9baV0pO1xuJiM0MztcdG1lbWNweShjYXBfYmFuZC1cdTAwM2VlaHRfY2FwX3BoeV9pbmZvLCBjYXBfcGh5X2luZm8sXG4mIzQzO1x0ICAgICAgIHNpemVvZih1MzIpICogV01JX01BWF9FSFRDQVBfUEhZX1NJWkUpO1xuIFxuIFx0aWYgKGJhbmQgPT0gTkw4MDIxMV9CQU5EXzZHSFopXG4tXHRcdGNhcF9iYW5kLVx1MDAzZWVodF9jYXBfcGh5X2luZm9bMF0gfD0gc3VwcG9ydF8zMjBtaHo7XG4mIzQzO1x0XHRjYXBfYmFuZC1cdTAwM2VlaHRfY2FwX3BoeV9pbmZvWzBdIHw9IGNwdV90b19sZTMyKHN1cHBvcnRfMzIwbWh6KTtcbiBcbiBcdGNhcF9iYW5kLVx1MDAzZWVodF9tY3NfMjBfb25seSA9IGxlMzJfdG9fY3B1KHN1cHBfbWNzWzBdKTtcbiBcdGNhcF9iYW5kLVx1MDAzZWVodF9tY3NfODAgPSBsZTMyX3RvX2NwdShzdXBwX21jc1sxXSk7XG5AQCAtNTI1NiwxMCAmIzQzOzUyNTIsMTIgQEAgc3RhdGljIGludCBhdGgxMmtfd21pX3Rsdl9tYWNfcGh5X2NhcHNfZXh0KHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIsIHUxNiB0YWcsXG4gXG4gXHRpZiAoYWItXHUwMDNlaHdfcGFyYW1zLVx1MDAzZXNpbmdsZV9wZGV2X29ubHkpIHtcbiBcdFx0aWYgKGNhcHMtXHUwMDNlaHdfbW9kZV9pZCA9PSBXTUlfSE9TVF9IV19NT0RFX1NJTkdMRSkge1xuLVx0XHRcdHN1cHBvcnRfMzIwbWh6ID0gbGUzMl90b19jcHUoY2Fwcy1cdTAwM2VlaHRfY2FwX3BoeV9pbmZvXzVnaHpbMF0pIFx1MDAyNlxuLVx0XHRcdFx0XHQgSUVFRTgwMjExX0VIVF9QSFlfQ0FQMF8zMjBNSFpfSU5fNkdIWjtcbiYjNDM7XHRcdFx0c3VwcG9ydF8zMjBtaHogPVxuJiM0MztcdFx0XHRcdGxlMzJfdG9fY3B1KGNhcHMtXHUwMDNlZWh0X2NhcF9waHlfaW5mb181Z2h6WzBdKSBcdTAwMjZcbiYjNDM7XHRcdFx0XHRJRUVFODAyMTFfRUhUX1BIWV9DQVAwXzMyME1IWl9JTl82R0haO1xuIFx0XHRcdGNhcF9iYW5kID0gXHUwMDI2YWItXHUwMDNlcGRldnNbMF0uY2FwLmJhbmRbTkw4MDIxMV9CQU5EXzZHSFpdO1xuLVx0XHRcdGNhcF9iYW5kLVx1MDAzZWVodF9jYXBfcGh5X2luZm9bMF0gfD0gc3VwcG9ydF8zMjBtaHo7XG4mIzQzO1x0XHRcdGNhcF9iYW5kLVx1MDAzZWVodF9jYXBfcGh5X2luZm9bMF0gfD1cbiYjNDM7XHRcdFx0XHRjcHVfdG9fbGUzMihzdXBwb3J0XzMyMG1oeik7XG4gXHRcdH1cbiBcbiBcdFx0aWYgKGFiLVx1MDAzZXdtaV9hYi5wcmVmZXJyZWRfaHdfbW9kZSAhPSBsZTMyX3RvX2NwdShjYXBzLVx1MDAzZWh3X21vZGVfaWQpKVxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5oXG5pbmRleCBjNDUyZTNkNTdhMjlhZC4uYTY4NzAzYmFiMWQ0MDUgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5oXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5oXG5AQCAtMzkzNiwxMSAmIzQzOzM5MzYsMTEgQEAgc3RydWN0IGF0aDEya193bWlfcGVlcl9hc3NvY19hcmcge1xuIFx0dTggcGVlcl9tYWNbRVRIX0FMRU5dO1xuIFxuIFx0Ym9vbCBoZV9mbGFnO1xuLVx0dTMyIHBlZXJfaGVfY2FwX21hY2luZm9bMl07XG4mIzQzO1x0X19sZTMyIHBlZXJfaGVfY2FwX21hY2luZm9bMl07XG4gXHR1MzIgcGVlcl9oZV9jYXBfbWFjaW5mb19pbnRlcm5hbDtcbiBcdHUzMiBwZWVyX2hlX2NhcHNfNmdoejtcbiBcdHUzMiBwZWVyX2hlX29wcztcbi1cdHUzMiBwZWVyX2hlX2NhcF9waHlpbmZvW1dNSV9IT1NUX01BWF9IRUNBUF9QSFlfU0laRV07XG4mIzQzO1x0X19sZTMyIHBlZXJfaGVfY2FwX3BoeWluZm9bV01JX0hPU1RfTUFYX0hFQ0FQX1BIWV9TSVpFXTtcbiBcdHUzMiBwZWVyX2hlX21jc19jb3VudDtcbiBcdHUzMiBwZWVyX2hlX3J4X21jc19zZXRbV01JX0hPU1RfTUFYX0hFX1JBVEVfU0VUXTtcbiBcdHUzMiBwZWVyX2hlX3R4X21jc19zZXRbV01JX0hPU1RfTUFYX0hFX1JBVEVfU0VUXTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yOSAwODoxNDwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBlbmRpYW5uZXNzIGlzc3VlcyAoc3BhcnNlIHdhcm5pbmdzKSBpbiB0aGUgYXRoMTJrIGRyaXZlciYjMzk7cyBXTUkgKFdpcmVsZXNzIE1vZHVsZSBJbnRlcmZhY2UpIGNvbW11bmljYXRpb24gd2l0aCB0aGUgZmlybXdhcmUuIFRoaXMgY29kZSBpcyB1bnJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSBiZWNhdXNlIGl0IHJlcXVpcmVzIGFjdHVhbCBRdWFsY29tbSBXaS1GaSA3IGhhcmR3YXJlIGFuZCBpdHMgcHJvcHJpZXRhcnkgZmlybXdhcmUgdG8gaW5pdGlhbGl6ZSB0aGUgZGV2aWNlIGFuZCByZWFjaCB0aGUgV01JIG1lc3NhZ2UgcGFyc2luZy9zZW5kaW5nIGxvZ2ljLiBTeXprYWxsZXIgY2Fubm90IGVtdWxhdGUgdGhlIGNvbXBsZXggUU1JL1dNSSBmaXJtd2FyZSBpbnRlcmZhY2UgcmVxdWlyZWQgdG8gdHJpZ2dlciB0aGVzZSBjb2RlIHBhdGhzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgM2JjNmE0MGI3Yjc5ZmNjMTg5YWE2NDhiZDY4MjZhYzdlZDQyYjA5NwpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBNb24gSnVuIDI5IDA4OjE0OjA2IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuaAppbmRleCBmYzUxMjdiNWMxYTM3Zi4uMTNmYTZlNTRkMjc5ZDIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5oCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5oCkBAIC04MDgsMTMgJiM0Mzs4MDgsMTMgQEAgc3RydWN0IGF0aDEya19iYW5kX2NhcCB7CiAJdTMyIHBoeV9pZDsKIAl1MzIgbWF4X2J3X3N1cHBvcnRlZDsKIAl1MzIgaHRfY2FwX2luZm87Ci0JdTMyIGhlX2NhcF9pbmZvWzJdOwomIzQzOwlfX2xlMzIgaGVfY2FwX2luZm9bMl07CiAJdTMyIGhlX21jczsKLQl1MzIgaGVfY2FwX3BoeV9pbmZvW1BTT0NfSE9TVF9NQVhfUEhZX1NJWkVdOwomIzQzOwlfX2xlMzIgaGVfY2FwX3BoeV9pbmZvW1BTT0NfSE9TVF9NQVhfUEhZX1NJWkVdOwogCXN0cnVjdCBhdGgxMmtfd21pX3BwZV90aHJlc2hvbGRfYXJnIGhlX3BwZXQ7CiAJdTE2IGhlXzZnaHpfY2FwYTsKLQl1MzIgZWh0X2NhcF9tYWNfaW5mb1tXTUlfTUFYX0VIVENBUF9NQUNfU0laRV07Ci0JdTMyIGVodF9jYXBfcGh5X2luZm9bV01JX01BWF9FSFRDQVBfUEhZX1NJWkVdOwomIzQzOwlfX2xlMzIgZWh0X2NhcF9tYWNfaW5mb1tXTUlfTUFYX0VIVENBUF9NQUNfU0laRV07CiYjNDM7CV9fbGUzMiBlaHRfY2FwX3BoeV9pbmZvW1dNSV9NQVhfRUhUQ0FQX1BIWV9TSVpFXTsKIAl1MzIgZWh0X21jc18yMF9vbmx5OwogCXUzMiBlaHRfbWNzXzgwOwogCXUzMiBlaHRfbWNzXzE2MDsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmMKaW5kZXggZDE3ZDRhOGYxY2I3ZDMuLjZiMGQwNzQ0OGU1ZDcyIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYwpAQCAtNDEwLDggJiM0Mzs0MTAsOCBAQCBzdGF0aWMgYm9vbCBhdGgxMmtfaGVfc3VwcG9ydHNfZXh0cmFfbWNzKHN0cnVjdCBhdGgxMmsgKmFyLCBpbnQgZnJlcSkKIAllbHNlCiAJCWNhcF9iYW5kID0gJmFtcDtjYXAtJmd0O2JhbmRbTkw4MDIxMV9CQU5EXzZHSFpdOwogCi0JZXh0cmFfbWNzX3N1cHBvcnRlZCA9IHUzMl9nZXRfYml0cyhjYXBfYmFuZC0mZ3Q7aGVfY2FwX2luZm9bMV0sCi0JCQkJCSAgIEhFX0VYVFJBX01DU19TVVBQT1JUKTsKJiM0MzsJZXh0cmFfbWNzX3N1cHBvcnRlZCA9IGxlMzJfZ2V0X2JpdHMoY2FwX2JhbmQtJmd0O2hlX2NhcF9pbmZvWzFdLAomIzQzOwkJCQkJICAgIEhFX0VYVFJBX01DU19TVVBQT1JUKTsKIAlyZXR1cm4gZXh0cmFfbWNzX3N1cHBvcnRlZDsKIH0KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmMKaW5kZXggODRhMzFiOTUzZGI4MWEuLjM5ZjhjYTczNjhlMzE3IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmMKQEAgLTU0NSwxMiAmIzQzOzU0NSwxMSBAQCBhdGgxMmtfcHVsbF9tYWNfcGh5X2NhcF9zdmNfcmVhZHlfZXh0KHN0cnVjdCBhdGgxMmtfd21pX3BkZXYgKndtaV9oYW5kbGUsCiAJCWNhcF9iYW5kLSZndDtwaHlfaWQgPSBsZTMyX3RvX2NwdShtYWNfY2Fwcy0mZ3Q7cGh5X2lkKTsKIAkJY2FwX2JhbmQtJmd0O21heF9id19zdXBwb3J0ZWQgPSBsZTMyX3RvX2NwdShtYWNfY2Fwcy0mZ3Q7bWF4X2J3X3N1cHBvcnRlZF8yZyk7CiAJCWNhcF9iYW5kLSZndDtodF9jYXBfaW5mbyA9IGxlMzJfdG9fY3B1KG1hY19jYXBzLSZndDtodF9jYXBfaW5mb18yZyk7Ci0JCWNhcF9iYW5kLSZndDtoZV9jYXBfaW5mb1swXSA9IGxlMzJfdG9fY3B1KG1hY19jYXBzLSZndDtoZV9jYXBfaW5mb18yZyk7Ci0JCWNhcF9iYW5kLSZndDtoZV9jYXBfaW5mb1sxXSA9IGxlMzJfdG9fY3B1KG1hY19jYXBzLSZndDtoZV9jYXBfaW5mb18yZ19leHQpOwomIzQzOwkJY2FwX2JhbmQtJmd0O2hlX2NhcF9pbmZvWzBdID0gbWFjX2NhcHMtJmd0O2hlX2NhcF9pbmZvXzJnOwomIzQzOwkJY2FwX2JhbmQtJmd0O2hlX2NhcF9pbmZvWzFdID0gbWFjX2NhcHMtJmd0O2hlX2NhcF9pbmZvXzJnX2V4dDsKIAkJY2FwX2JhbmQtJmd0O2hlX21jcyA9IGxlMzJfdG9fY3B1KG1hY19jYXBzLSZndDtoZV9zdXBwX21jc18yZyk7Ci0JCWZvciAoaSA9IDA7IGkgJmx0OyBXTUlfTUFYX0hFQ0FQX1BIWV9TSVpFOyBpJiM0MzsmIzQzOykKLQkJCWNhcF9iYW5kLSZndDtoZV9jYXBfcGh5X2luZm9baV0gPQotCQkJCWxlMzJfdG9fY3B1KG1hY19jYXBzLSZndDtoZV9jYXBfcGh5X2luZm9fMmdbaV0pOwomIzQzOwkJbWVtY3B5KCZhbXA7Y2FwX2JhbmQtJmd0O2hlX2NhcF9waHlfaW5mbywgJmFtcDttYWNfY2Fwcy0mZ3Q7aGVfY2FwX3BoeV9pbmZvXzJnLAomIzQzOwkJICAgICAgIHNpemVvZih1MzIpICogV01JX01BWF9IRUNBUF9QSFlfU0laRSk7CiAKIAkJY2FwX2JhbmQtJmd0O2hlX3BwZXQubnVtc3NfbTEgPSBsZTMyX3RvX2NwdShtYWNfY2Fwcy0mZ3Q7aGVfcHBldDJnLm51bXNzX20xKTsKIAkJY2FwX2JhbmQtJmd0O2hlX3BwZXQucnVfYml0X21hc2sgPSBsZTMyX3RvX2NwdShtYWNfY2Fwcy0mZ3Q7aGVfcHBldDJnLnJ1X2luZm8pOwpAQCAtNTY2LDEyICYjNDM7NTY1LDExIEBAIGF0aDEya19wdWxsX21hY19waHlfY2FwX3N2Y19yZWFkeV9leHQoc3RydWN0IGF0aDEya193bWlfcGRldiAqd21pX2hhbmRsZSwKIAkJY2FwX2JhbmQtJmd0O21heF9id19zdXBwb3J0ZWQgPQogCQkJbGUzMl90b19jcHUobWFjX2NhcHMtJmd0O21heF9id19zdXBwb3J0ZWRfNWcpOwogCQljYXBfYmFuZC0mZ3Q7aHRfY2FwX2luZm8gPSBsZTMyX3RvX2NwdShtYWNfY2Fwcy0mZ3Q7aHRfY2FwX2luZm9fNWcpOwotCQljYXBfYmFuZC0mZ3Q7aGVfY2FwX2luZm9bMF0gPSBsZTMyX3RvX2NwdShtYWNfY2Fwcy0mZ3Q7aGVfY2FwX2luZm9fNWcpOwotCQljYXBfYmFuZC0mZ3Q7aGVfY2FwX2luZm9bMV0gPSBsZTMyX3RvX2NwdShtYWNfY2Fwcy0mZ3Q7aGVfY2FwX2luZm9fNWdfZXh0KTsKJiM0MzsJCWNhcF9iYW5kLSZndDtoZV9jYXBfaW5mb1swXSA9IG1hY19jYXBzLSZndDtoZV9jYXBfaW5mb181ZzsKJiM0MzsJCWNhcF9iYW5kLSZndDtoZV9jYXBfaW5mb1sxXSA9IG1hY19jYXBzLSZndDtoZV9jYXBfaW5mb181Z19leHQ7CiAJCWNhcF9iYW5kLSZndDtoZV9tY3MgPSBsZTMyX3RvX2NwdShtYWNfY2Fwcy0mZ3Q7aGVfc3VwcF9tY3NfNWcpOwotCQlmb3IgKGkgPSAwOyBpICZsdDsgV01JX01BWF9IRUNBUF9QSFlfU0laRTsgaSYjNDM7JiM0MzspCi0JCQljYXBfYmFuZC0mZ3Q7aGVfY2FwX3BoeV9pbmZvW2ldID0KLQkJCQlsZTMyX3RvX2NwdShtYWNfY2Fwcy0mZ3Q7aGVfY2FwX3BoeV9pbmZvXzVnW2ldKTsKJiM0MzsJCW1lbWNweSgmYW1wO2NhcF9iYW5kLSZndDtoZV9jYXBfcGh5X2luZm8sICZhbXA7bWFjX2NhcHMtJmd0O2hlX2NhcF9waHlfaW5mb181ZywKJiM0MzsJCSAgICAgICBzaXplb2YodTMyKSAqIFdNSV9NQVhfSEVDQVBfUEhZX1NJWkUpOwogCiAJCWNhcF9iYW5kLSZndDtoZV9wcGV0Lm51bXNzX20xID0gbGUzMl90b19jcHUobWFjX2NhcHMtJmd0O2hlX3BwZXQ1Zy5udW1zc19tMSk7CiAJCWNhcF9iYW5kLSZndDtoZV9wcGV0LnJ1X2JpdF9tYXNrID0gbGUzMl90b19jcHUobWFjX2NhcHMtJmd0O2hlX3BwZXQ1Zy5ydV9pbmZvKTsKQEAgLTU4NCwxMiAmIzQzOzU4MiwxMSBAQCBhdGgxMmtfcHVsbF9tYWNfcGh5X2NhcF9zdmNfcmVhZHlfZXh0KHN0cnVjdCBhdGgxMmtfd21pX3BkZXYgKndtaV9oYW5kbGUsCiAJCWNhcF9iYW5kLSZndDttYXhfYndfc3VwcG9ydGVkID0KIAkJCWxlMzJfdG9fY3B1KG1hY19jYXBzLSZndDttYXhfYndfc3VwcG9ydGVkXzVnKTsKIAkJY2FwX2JhbmQtJmd0O2h0X2NhcF9pbmZvID0gbGUzMl90b19jcHUobWFjX2NhcHMtJmd0O2h0X2NhcF9pbmZvXzVnKTsKLQkJY2FwX2JhbmQtJmd0O2hlX2NhcF9pbmZvWzBdID0gbGUzMl90b19jcHUobWFjX2NhcHMtJmd0O2hlX2NhcF9pbmZvXzVnKTsKLQkJY2FwX2JhbmQtJmd0O2hlX2NhcF9pbmZvWzFdID0gbGUzMl90b19jcHUobWFjX2NhcHMtJmd0O2hlX2NhcF9pbmZvXzVnX2V4dCk7CiYjNDM7CQljYXBfYmFuZC0mZ3Q7aGVfY2FwX2luZm9bMF0gPSBtYWNfY2Fwcy0mZ3Q7aGVfY2FwX2luZm9fNWc7CiYjNDM7CQljYXBfYmFuZC0mZ3Q7aGVfY2FwX2luZm9bMV0gPSBtYWNfY2Fwcy0mZ3Q7aGVfY2FwX2luZm9fNWdfZXh0OwogCQljYXBfYmFuZC0mZ3Q7aGVfbWNzID0gbGUzMl90b19jcHUobWFjX2NhcHMtJmd0O2hlX3N1cHBfbWNzXzVnKTsKLQkJZm9yIChpID0gMDsgaSAmbHQ7IFdNSV9NQVhfSEVDQVBfUEhZX1NJWkU7IGkmIzQzOyYjNDM7KQotCQkJY2FwX2JhbmQtJmd0O2hlX2NhcF9waHlfaW5mb1tpXSA9Ci0JCQkJbGUzMl90b19jcHUobWFjX2NhcHMtJmd0O2hlX2NhcF9waHlfaW5mb181Z1tpXSk7CiYjNDM7CQltZW1jcHkoJmFtcDtjYXBfYmFuZC0mZ3Q7aGVfY2FwX3BoeV9pbmZvLCAmYW1wO21hY19jYXBzLSZndDtoZV9jYXBfcGh5X2luZm9fNWcsCiYjNDM7CQkgICAgICAgc2l6ZW9mKHUzMikgKiBXTUlfTUFYX0hFQ0FQX1BIWV9TSVpFKTsKIAogCQljYXBfYmFuZC0mZ3Q7aGVfcHBldC5udW1zc19tMSA9IGxlMzJfdG9fY3B1KG1hY19jYXBzLSZndDtoZV9wcGV0NWcubnVtc3NfbTEpOwogCQljYXBfYmFuZC0mZ3Q7aGVfcHBldC5ydV9iaXRfbWFzayA9IGxlMzJfdG9fY3B1KG1hY19jYXBzLSZndDtoZV9wcGV0NWcucnVfaW5mbyk7CkBAIC0yMjg0LDE0ICYjNDM7MjI4MSwxMyBAQCBpbnQgYXRoMTJrX3dtaV9zZW5kX3BlZXJfYXNzb2NfY21kKHN0cnVjdCBhdGgxMmsgKmFyLAogCWNtZC0mZ3Q7cGVlcl9waHltb2RlID0gY3B1X3RvX2xlMzIoYXJnLSZndDtwZWVyX3BoeW1vZGUpOwogCiAJLyogVXBkYXRlIDExYXggY2FwYWJpbGl0aWVzICovCi0JY21kLSZndDtwZWVyX2hlX2NhcF9pbmZvID0gY3B1X3RvX2xlMzIoYXJnLSZndDtwZWVyX2hlX2NhcF9tYWNpbmZvWzBdKTsKLQljbWQtJmd0O3BlZXJfaGVfY2FwX2luZm9fZXh0ID0gY3B1X3RvX2xlMzIoYXJnLSZndDtwZWVyX2hlX2NhcF9tYWNpbmZvWzFdKTsKJiM0MzsJY21kLSZndDtwZWVyX2hlX2NhcF9pbmZvID0gYXJnLSZndDtwZWVyX2hlX2NhcF9tYWNpbmZvWzBdOwomIzQzOwljbWQtJmd0O3BlZXJfaGVfY2FwX2luZm9fZXh0ID0gYXJnLSZndDtwZWVyX2hlX2NhcF9tYWNpbmZvWzFdOwogCWNtZC0mZ3Q7cGVlcl9oZV9jYXBfaW5mb19pbnRlcm5hbCA9IGNwdV90b19sZTMyKGFyZy0mZ3Q7cGVlcl9oZV9jYXBfbWFjaW5mb19pbnRlcm5hbCk7CiAJY21kLSZndDtwZWVyX2hlX2NhcHNfNmdoeiA9IGNwdV90b19sZTMyKGFyZy0mZ3Q7cGVlcl9oZV9jYXBzXzZnaHopOwogCWNtZC0mZ3Q7cGVlcl9oZV9vcHMgPSBjcHVfdG9fbGUzMihhcmctJmd0O3BlZXJfaGVfb3BzKTsKLQlmb3IgKGkgPSAwOyBpICZsdDsgV01JX01BWF9IRUNBUF9QSFlfU0laRTsgaSYjNDM7JiM0MzspCi0JCWNtZC0mZ3Q7cGVlcl9oZV9jYXBfcGh5W2ldID0KLQkJCWNwdV90b19sZTMyKGFyZy0mZ3Q7cGVlcl9oZV9jYXBfcGh5aW5mb1tpXSk7CiYjNDM7CW1lbWNweShjbWQtJmd0O3BlZXJfaGVfY2FwX3BoeSwgYXJnLSZndDtwZWVyX2hlX2NhcF9waHlpbmZvLAomIzQzOwkgICAgICAgc2l6ZW9mKHUzMikgKiBXTUlfTUFYX0hFQ0FQX1BIWV9TSVpFKTsKIAljbWQtJmd0O3BlZXJfcHBldC5udW1zc19tMSA9IGNwdV90b19sZTMyKGFyZy0mZ3Q7cGVlcl9wcGV0Lm51bXNzX20xKTsKIAljbWQtJmd0O3BlZXJfcHBldC5ydV9pbmZvID0gY3B1X3RvX2xlMzIoYXJnLSZndDtwZWVyX3BwZXQucnVfYml0X21hc2spOwogCWZvciAoaSA9IDA7IGkgJmx0OyBXTUlfTUFYX05VTV9TUzsgaSYjNDM7JiM0MzspCkBAIC01MTU4LDE3ICYjNDM7NTE1NCwxNyBAQCBzdGF0aWMgdm9pZCBhdGgxMmtfd21pX2VodF9jYXBzX3BhcnNlKHN0cnVjdCBhdGgxMmtfcGRldiAqcGRldiwgdTMyIGJhbmQsCiAJdTggaTsKIAogCWlmIChiYW5kID09IE5MODAyMTFfQkFORF82R0haKQotCQlzdXBwb3J0XzMyMG1oeiA9IGNhcF9iYW5kLSZndDtlaHRfY2FwX3BoeV9pbmZvWzBdICZhbXA7Ci0JCQkJCUlFRUU4MDIxMV9FSFRfUEhZX0NBUDBfMzIwTUhaX0lOXzZHSFo7CiYjNDM7CQlzdXBwb3J0XzMyMG1oeiA9IGxlMzJfdG9fY3B1KGNhcF9iYW5kLSZndDtlaHRfY2FwX3BoeV9pbmZvWzBdKSAmYW1wOwomIzQzOwkJCQkgSUVFRTgwMjExX0VIVF9QSFlfQ0FQMF8zMjBNSFpfSU5fNkdIWjsKIAotCWZvciAoaSA9IDA7IGkgJmx0OyBXTUlfTUFYX0VIVENBUF9NQUNfU0laRTsgaSYjNDM7JiM0MzspCi0JCWNhcF9iYW5kLSZndDtlaHRfY2FwX21hY19pbmZvW2ldID0gbGUzMl90b19jcHUoY2FwX21hY19pbmZvW2ldKTsKJiM0MzsJbWVtY3B5KGNhcF9iYW5kLSZndDtlaHRfY2FwX21hY19pbmZvLCBjYXBfbWFjX2luZm8sCiYjNDM7CSAgICAgICBzaXplb2YodTMyKSAqIFdNSV9NQVhfRUhUQ0FQX01BQ19TSVpFKTsKIAotCWZvciAoaSA9IDA7IGkgJmx0OyBXTUlfTUFYX0VIVENBUF9QSFlfU0laRTsgaSYjNDM7JiM0MzspCi0JCWNhcF9iYW5kLSZndDtlaHRfY2FwX3BoeV9pbmZvW2ldID0gbGUzMl90b19jcHUoY2FwX3BoeV9pbmZvW2ldKTsKJiM0MzsJbWVtY3B5KGNhcF9iYW5kLSZndDtlaHRfY2FwX3BoeV9pbmZvLCBjYXBfcGh5X2luZm8sCiYjNDM7CSAgICAgICBzaXplb2YodTMyKSAqIFdNSV9NQVhfRUhUQ0FQX1BIWV9TSVpFKTsKIAogCWlmIChiYW5kID09IE5MODAyMTFfQkFORF82R0haKQotCQljYXBfYmFuZC0mZ3Q7ZWh0X2NhcF9waHlfaW5mb1swXSB8PSBzdXBwb3J0XzMyMG1oejsKJiM0MzsJCWNhcF9iYW5kLSZndDtlaHRfY2FwX3BoeV9pbmZvWzBdIHw9IGNwdV90b19sZTMyKHN1cHBvcnRfMzIwbWh6KTsKIAogCWNhcF9iYW5kLSZndDtlaHRfbWNzXzIwX29ubHkgPSBsZTMyX3RvX2NwdShzdXBwX21jc1swXSk7CiAJY2FwX2JhbmQtJmd0O2VodF9tY3NfODAgPSBsZTMyX3RvX2NwdShzdXBwX21jc1sxXSk7CkBAIC01MjU2LDEwICYjNDM7NTI1MiwxMiBAQCBzdGF0aWMgaW50IGF0aDEya193bWlfdGx2X21hY19waHlfY2Fwc19leHQoc3RydWN0IGF0aDEya19iYXNlICphYiwgdTE2IHRhZywKIAogCWlmIChhYi0mZ3Q7aHdfcGFyYW1zLSZndDtzaW5nbGVfcGRldl9vbmx5KSB7CiAJCWlmIChjYXBzLSZndDtod19tb2RlX2lkID09IFdNSV9IT1NUX0hXX01PREVfU0lOR0xFKSB7Ci0JCQlzdXBwb3J0XzMyMG1oeiA9IGxlMzJfdG9fY3B1KGNhcHMtJmd0O2VodF9jYXBfcGh5X2luZm9fNWdoelswXSkgJmFtcDsKLQkJCQkJIElFRUU4MDIxMV9FSFRfUEhZX0NBUDBfMzIwTUhaX0lOXzZHSFo7CiYjNDM7CQkJc3VwcG9ydF8zMjBtaHogPQomIzQzOwkJCQlsZTMyX3RvX2NwdShjYXBzLSZndDtlaHRfY2FwX3BoeV9pbmZvXzVnaHpbMF0pICZhbXA7CiYjNDM7CQkJCUlFRUU4MDIxMV9FSFRfUEhZX0NBUDBfMzIwTUhaX0lOXzZHSFo7CiAJCQljYXBfYmFuZCA9ICZhbXA7YWItJmd0O3BkZXZzWzBdLmNhcC5iYW5kW05MODAyMTFfQkFORF82R0haXTsKLQkJCWNhcF9iYW5kLSZndDtlaHRfY2FwX3BoeV9pbmZvWzBdIHw9IHN1cHBvcnRfMzIwbWh6OwomIzQzOwkJCWNhcF9iYW5kLSZndDtlaHRfY2FwX3BoeV9pbmZvWzBdIHw9CiYjNDM7CQkJCWNwdV90b19sZTMyKHN1cHBvcnRfMzIwbWh6KTsKIAkJfQogCiAJCWlmIChhYi0mZ3Q7d21pX2FiLnByZWZlcnJlZF9od19tb2RlICE9IGxlMzJfdG9fY3B1KGNhcHMtJmd0O2h3X21vZGVfaWQpKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmgKaW5kZXggYzQ1MmUzZDU3YTI5YWQuLmE2ODcwM2JhYjFkNDA1IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5oCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmgKQEAgLTM5MzYsMTEgJiM0MzszOTM2LDExIEBAIHN0cnVjdCBhdGgxMmtfd21pX3BlZXJfYXNzb2NfYXJnIHsKIAl1OCBwZWVyX21hY1tFVEhfQUxFTl07CiAKIAlib29sIGhlX2ZsYWc7Ci0JdTMyIHBlZXJfaGVfY2FwX21hY2luZm9bMl07CiYjNDM7CV9fbGUzMiBwZWVyX2hlX2NhcF9tYWNpbmZvWzJdOwogCXUzMiBwZWVyX2hlX2NhcF9tYWNpbmZvX2ludGVybmFsOwogCXUzMiBwZWVyX2hlX2NhcHNfNmdoejsKIAl1MzIgcGVlcl9oZV9vcHM7Ci0JdTMyIHBlZXJfaGVfY2FwX3BoeWluZm9bV01JX0hPU1RfTUFYX0hFQ0FQX1BIWV9TSVpFXTsKJiM0MzsJX19sZTMyIHBlZXJfaGVfY2FwX3BoeWluZm9bV01JX0hPU1RfTUFYX0hFQ0FQX1BIWV9TSVpFXTsKIAl1MzIgcGVlcl9oZV9tY3NfY291bnQ7CiAJdTMyIHBlZXJfaGVfcnhfbWNzX3NldFtXTUlfSE9TVF9NQVhfSEVfUkFURV9TRVRdOwogCXUzMiBwZWVyX2hlX3R4X21jc19zZXRbV01JX0hPU1RfTUFYX0hFX1JBVEVfU0VUXTsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjkgMDg6MTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTg3NAoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDI3NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipFbmRpYW5uZXNzIEZpeCBmb3IgYXRoMTJrIERyaXZlcioqCgpPa2F5LCBzbyB0aGVyZSYjMzk7cyBhIHBhdGNoIHN1Ym1pdHRlZCB0aGF0JiMzOTtzIGNhdWdodCBteSBleWUuIEl0IHNlZW1zIHRvIGJlIGFkZHJlc3NpbmcgcG90ZW50aWFsIGVuZGlhbm5lc3MgaXNzdWVzIHdpdGhpbiB0aGUgYGF0aDEya2AgZHJpdmVyLiBTcGVjaWZpY2FsbHksIGl0JiMzOTtzIGNoYW5naW5nIHRoZSBkYXRhIHR5cGVzIG9mIGNlcnRhaW4gZmllbGRzIGluIGBzdHJ1Y3QgYXRoMTJrX2JhbmRfY2FwYCBhbmQgYHN0cnVjdCBhdGgxMmtfd21pX3BlZXJfYXNzb2NfYXJnYCBmcm9tIGB1MzJgIHRvIGBfX2xlMzJgLiBUaGUgcGF0Y2ggYWxzbyBzd2l0Y2hlcyB0aGUgYWNjZXNzIGFuZCBjb3B5IG1ldGhvZHMgZnJvbSB0aGUgbW9yZSBjdW1iZXJzb21lIGxvb3AtYmFzZWQgY29udmVyc2lvbnMgdG8gYG1lbWNweWAuIFRoYXQgc3Ryb25nbHkgc3VnZ2VzdHMgdGhleSYjMzk7cmUgdHJ5aW5nIHRvIHByZXZlbnQgdGhvc2UgZHJlYWRlZCBzcGFyc2Ugd2FybmluZ3MgcmVsYXRlZCB0byBieXRlIG9yZGVyLgoKTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsICYjMzQ7Q2FuIHdlIGFjdHVhbGx5IHRlc3QgdGhpcywgYW5kIGlmIHNvLCBob3c/JiMzNDsgYGF0aDEya2AsIGlmIEkgcmVjYWxsIGNvcnJlY3RseSwgaXMgdGhlIGRyaXZlciBmb3IgUXVhbGNvbW0mIzM5O3MgV2ktRmkgNyBkZXZpY2VzLiBUaGF0IG5hcnJvd3MgdGhpbmdzIGRvd24gYSBiaXQsIHdoaWNoIGlzIGdvb2QuIEZ1enppbmcgdGhpcyBpcyBnb2luZyB0byBiZSB0aGUgY2hhbGxlbmdlLiBIYXJkd2FyZSBkcml2ZXJzIGxpa2UgdGhpcyBhcmUgbm90b3Jpb3VzbHkgZGlmZmljdWx0IHRvIGZ1enogZGlyZWN0bHksIGVzcGVjaWFsbHkgaWYgdGhlcmUgaXNuJiMzOTt0IGFuIGVxdWl2YWxlbnQgaGFyZHdhcmUgZW11bGF0aW9uIGxheWVyLiBTb21ldGhpbmcgbGlrZSBgbWFjODAyMTFfaHdzaW1gIHdvdWxkIGJlIGlkZWFsLCBidXQgdGhhdCYjMzk7cyBmb3IgdGhlIGdlbmVyaWMgYG1hYzgwMjExYCBmcmFtZXdvcmssIG5vdCBuZWNlc3NhcmlseSBzcGVjaWZpYyB0byBgYXRoMTJrYC4gV2FpdC4uLiBpc24mIzM5O3QgYGF0aDEya2AgYSBQQ0kgb3IgQUhCIGRyaXZlcj8gVGhhdCBjaGFuZ2VzIHRoaW5ncy4gTGV0IG1lIGp1c3QgdGFrZSBhIGxvb2sgYXQgdGhlIGBLY29uZmlnYCBmaWxlIHVuZGVyIGBkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrYCB0byBjb25maXJtLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI5IDA4OjE0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBBVEgxMksmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlLUNsZWFyXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWc6Mjpjb25maWcgQVRIMTJLXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O1F1YWxjb21tIFdpLUZpIDcgc3VwcG9ydCAoYXRoMTJrKVwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZy0xNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZzoxNzpjb25maWcgQVRIMTJLX0FIQlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnLTE4LVx0Ym9vbCBcJiMzNDtRdWFsY29tbSBhdGgxMmsgQUhCIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWctMjQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWc6MjU6Y29uZmlnIEFUSDEyS19ERUJVR1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnLTI2LVx0Ym9vbCBcJiMzNDthdGgxMmsgZGVidWdnaW5nXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnLTM0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnOjM1OmNvbmZpZyBBVEgxMktfREVCVUdGU1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnLTM2LVx0Ym9vbCBcJiMzNDtRdWFsY29tbSBhdGgxMmsgZGVidWdmcyBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnLTQzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnOjQ0OmNvbmZpZyBBVEgxMktfVFJBQ0lOR1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnLTQ1LVx0Ym9vbCBcJiMzNDthdGgxMmsgdHJhY2luZyBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnLTUyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnOjUzOmNvbmZpZyBBVEgxMktfQ09SRURVTVBcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZy01NC1cdGJvb2wgXCYjMzQ7YXRoMTJrIGNvcmVkdW1wXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjkgMDg6MTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzAyNgoJCQkJCQkJb3V0cHV0OiA0MgoJCQkJCQkJdGhvdWdodHM6IDM3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkFuYWx5emluZyB0aGUgRHJpdmVyJiMzOTtzIFBvdGVudGlhbCBmb3IgRnV6emluZyoqCgpBbHJpZ2h0LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYSBQQ0kvQUhCIGRyaXZlciBoZXJlLiBTdGFuZGFyZCBzdHVmZiwgbm90aGluZyBpbW1lZGlhdGVseSBqdW1wcyBvdXQuIEJ1dCB0aGVuIG15IGJyYWluIHN0YXJ0cyB3aGlycmluZyDigJMgd2FpdCBhIG1pbnV0ZSwgaXNuJiMzOTt0IHN5emthbGxlciBjYXBhYmxlIG9mIGZ1enppbmcgUENJIGRldmljZXM/IFRoZSB2UENJIGZ1bmN0aW9uYWxpdHksIGlmIEkgcmVjYWxsIGNvcnJlY3RseSwgb2ZmZXJzIGEgdmlydHVhbCBQQ0kgZW52aXJvbm1lbnQgc3BlY2lmaWNhbGx5IGZvciB0aGlzIGtpbmQgb2YgdGVzdGluZy4gT2theSwgdGhhdCYjMzk7cyBpbnRlcmVzdGluZy4uLgoKU28sIHRoZSBpbW1lZGlhdGUgbmV4dCBxdWVzdGlvbiBiZWNvbWVzOiBpcyBQQ0kgc3VwcG9ydCBhY3R1YWxseSBwcmVzZW50IGFuZCBlbmFibGVkIHdpdGhpbiB0aGlzIGRyaXZlcj8gSSBuZWVkIHRvIHF1aWNrbHkgZGV0ZXJtaW5lIGlmIEkgY2FuIGxldmVyYWdlIHRoYXQgdlBDSSBmdXp6aW5nIGNhcGFiaWxpdHkuIElmIFBDSSBpcyBzdXBwb3J0ZWQsIHdlJiMzOTtyZSBpbiBidXNpbmVzcy4gSWYgbm90LCBJJiMzOTtsbCBuZWVkIHRvIGV4cGxvcmUgb3RoZXIgYXZlbnVlcyBvciBjb25zaWRlciB3aGV0aGVyIHRoZSBBSEIgaW50ZXJmYWNlIG9mZmVycyBhbnkgcG90ZW50aWFsIGVudHJ5IHBvaW50cyBmb3IgZXhwbG9pdGF0aW9uLiBUaW1lIHRvIGRpZyBpbnRvIHRoZSBzb3VyY2UgYW5kIGNvbmZpcm0gdGhlIFBDSSBsYW5kc2NhcGUgd2l0aGluIHRoaXMgc3BlY2lmaWMgZHJpdmVyLiBMZXQmIzM5O3Mgc2VlIHdoYXQgd2UmIzM5O3JlIHdvcmtpbmcgd2l0aC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yOSAwODoxNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBBVEgxMktfUENJJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yOSAwODoxNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3MzMwCgkJCQkJCQlvdXRwdXQ6IDQyCgkJCQkJCQl0aG91Z2h0czogMTEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipLY29uZmlnIENoZWNrKioKCk9rYXksIGJlZm9yZSBkaXZpbmcgYW55IGRlZXBlciwgSSBuZWVkIHRvIHRha2UgYSBzdGVwIGJhY2sgYW5kIG1ha2Ugc3VyZSBJJiMzOTttIG5vdCBtaXNzaW5nIHNvbWV0aGluZyBmdW5kYW1lbnRhbC4gTXkgZ3V0IGlzIHRlbGxpbmcgbWUgdGhlcmUgbWlnaHQgYmUgYSBjb25maWd1cmF0aW9uIG9wdGlvbiBhdCBwbGF5IGhlcmUgdGhhdCYjMzk7cyB0aHJvd2luZyBtZSBvZmYsIG9yIG1heWJlIGFuIG92ZXJsb29rZWQgZGVwZW5kZW5jeS4gU28sIGxldCYjMzk7cyBoaXQgdGhlIEtjb25maWcgZmlsZS4gSSYjMzk7bSBnb2luZyB0byBxdWlja2x5IHNjYW4gaXQgZm9yIGFueXRoaW5nIHJlbGF0ZWQgdG8gdGhlIHNwZWNpZmljIG1vZHVsZSBJJiMzOTttIHdvcmtpbmcgd2l0aCwgdGhlIGZlYXR1cmUgc2V0IEkmIzM5O20gaW1wbGVtZW50aW5nLCBhbmQgdGhlIGhhcmR3YXJlIHBsYXRmb3JtIHRoaXMgaXMgcnVubmluZyBvbi4gSSYjMzk7bGwgbmVlZCB0byBwYXkgY2xvc2UgYXR0ZW50aW9uIHRvIGFueSBjb25kaXRpb25hbCBjb21waWxhdGlvbiBvciBkZWZhdWx0IHNldHRpbmdzIHRoYXQgbWlnaHQgYmUgc2tld2luZyB0aGUgYmVoYXZpb3IgSSYjMzk7bSBzZWVpbmcuIEl04oCZcyBhbHNvIGNydWNpYWwgdG8gZG91YmxlLWNoZWNrIGFueSByZWxhdGVkIHRyaXN0YXRlcyBhbmQgdGhlaXIgY29ycmVzcG9uZGluZyBkZXBlbmRlbmNpZXMuIEEgc2ltcGxlIG1pc2NvbmZpZ3VyYXRpb24gY2FuIHdhc3RlIGhvdXJzIG9mIGRlYnVnZ2luZy4gVGhpcyBpcyBhbG1vc3QgaW5zdGluY3QgYXQgdGhpcyBwb2ludCwgYnV0IGl0JiMzOTtzIGltcG9ydGFudCB0byBiZSBtZXRob2RpY2FsLiBMZXQmIzM5O3Mgc2VlIHdoYXQgS2NvbmZpZyBoYXMgdG8gc2F5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI5IDA4OjE0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZS1DbGVhclxuICAgMjpcdGNvbmZpZyBBVEgxMktcbiAgIDM6XHRcdHRyaXN0YXRlIFwmIzM0O1F1YWxjb21tIFdpLUZpIDcgc3VwcG9ydCAoYXRoMTJrKVwmIzM0O1xuICAgNDpcdFx0ZGVwZW5kcyBvbiBNQUM4MDIxMSBcdTAwMjZcdTAwMjYgSEFTX0RNQSBcdTAwMjZcdTAwMjYgUENJXG4gICA1Olx0XHRzZWxlY3QgUUNPTV9RTUlfSEVMUEVSU1xuICAgNjpcdFx0c2VsZWN0IE1ISV9CVVNcbiAgIDc6XHRcdHNlbGVjdCBRUlRSXG4gICA4Olx0XHRzZWxlY3QgUVJUUl9NSElcbiAgIDk6XHRcdHNlbGVjdCBQQ0lfUFdSQ1RSTF9QV1JTRVEgaWYgSEFWRV9QV1JDVFJMXG4gIDEwOlx0XHRoZWxwXG4gIDExOlx0XHQgIEVuYWJsZSBzdXBwb3J0IGZvciBRdWFsY29tbSBUZWNobm9sb2dpZXMgV2ktRmkgNyAoSUVFRVxuICAxMjpcdFx0ICA4MDIuMTFiZSkgZmFtaWx5IG9mIGNoaXBzZXRzLCBmb3IgZXhhbXBsZSBXQ043ODUwIGFuZFxuICAxMzpcdFx0ICBRQ045Mjc0LlxuICAxNDpcdFxuICAxNTpcdFx0ICBJZiB5b3UgY2hvb3NlIHRvIGJ1aWxkIGEgbW9kdWxlLCBpdCYjMzk7bGwgYmUgY2FsbGVkIGF0aDEyay5cbiAgMTY6XHRcbiAgMTc6XHRjb25maWcgQVRIMTJLX0FIQlxuICAxODpcdFx0Ym9vbCBcJiMzNDtRdWFsY29tbSBhdGgxMmsgQUhCIHN1cHBvcnRcJiMzNDtcbiAgMTk6XHRcdGRlcGVuZHMgb24gQVRIMTJLIFx1MDAyNlx1MDAyNiBSRU1PVEVQUk9DXG4gIDIwOlx0XHRzZWxlY3QgUUNPTV9NRFRfTE9BREVSXG4gIDIxOlx0XHRzZWxlY3QgUUNPTV9TQ01cbiAgMjI6XHRcdGhlbHBcbiAgMjM6XHRcdCAgRW5hYmxlIHN1cHBvcnQgZm9yIEF0aDEyayBBSEIgYnVzIGNoaXBzZXRzLCBleGFtcGxlIElQUTUzMzIuXG4gIDI0Olx0XG4gIDI1Olx0Y29uZmlnIEFUSDEyS19ERUJVR1xuICAyNjpcdFx0Ym9vbCBcJiMzNDthdGgxMmsgZGVidWdnaW5nXCYjMzQ7XG4gIDI3Olx0XHRkZXBlbmRzIG9uIEFUSDEyS1xuICAyODpcdFx0aGVscFxuICAyOTpcdFx0ICBFbmFibGUgZGVidWcgc3VwcG9ydCwgZm9yIGV4YW1wbGUgZGVidWcgbWVzc2FnZXMgd2hpY2ggbXVzdFxuICAzMDpcdFx0ICBiZSBlbmFibGVkIHNlcGFyYXRlbHkgdXNpbmcgdGhlIGRlYnVnX21hc2sgbW9kdWxlIHBhcmFtZXRlci5cbiAgMzE6XHRcbiAgMzI6XHRcdCAgSWYgdW5zdXJlLCBzYXkgWSB0byBtYWtlIGl0IGVhc2llciB0byBkZWJ1ZyBwcm9ibGVtcy4gQnV0IGlmXG4gIDMzOlx0XHQgIHlvdSB3YW50IG9wdGltYWwgcGVyZm9ybWFuY2UgY2hvb3NlIE4uXG4gIDM0Olx0XG4gIDM1Olx0Y29uZmlnIEFUSDEyS19ERUJVR0ZTXG4gIDM2Olx0XHRib29sIFwmIzM0O1F1YWxjb21tIGF0aDEyayBkZWJ1Z2ZzIHN1cHBvcnRcJiMzNDtcbiAgMzc6XHRcdGRlcGVuZHMgb24gQVRIMTJLIFx1MDAyNlx1MDAyNiBNQUM4MDIxMV9ERUJVR0ZTXG4gIDM4Olx0XHRoZWxwXG4gIDM5Olx0XHQgIEVuYWJsZSBhdGgxMmsgZGVidWdmcyBzdXBwb3J0XG4gIDQwOlx0XG4gIDQxOlx0XHQgIElmIHVuc3VyZSwgc2F5IFkgdG8gbWFrZSBpdCBlYXNpZXIgdG8gZGVidWcgcHJvYmxlbXMuIEJ1dCBpZlxuICA0MjpcdFx0ICB5b3Ugd2FudCBvcHRpbWFsIHBlcmZvcm1hbmNlIGNob29zZSBOLlxuICA0MzpcdFxuICA0NDpcdGNvbmZpZyBBVEgxMktfVFJBQ0lOR1xuICA0NTpcdFx0Ym9vbCBcJiMzNDthdGgxMmsgdHJhY2luZyBzdXBwb3J0XCYjMzQ7XG4gIDQ2Olx0XHRkZXBlbmRzIG9uIEFUSDEySyBcdTAwMjZcdTAwMjYgRVZFTlRfVFJBQ0lOR1xuICA0NzpcdFx0aGVscFxuICA0ODpcdFx0ICBFbmFibGUgYXRoMTJrIHRyYWNpbmcgaW5mcmFzdHJ1Y3R1cmUuXG4gIDQ5Olx0XG4gIDUwOlx0XHQgIElmIHVuc3VyZSwgc2F5IFkgdG8gbWFrZSBpdCBlYXNpZXIgdG8gZGVidWcgcHJvYmxlbXMuIEJ1dCBpZlxuICA1MTpcdFx0ICB5b3Ugd2FudCBvcHRpbWFsIHBlcmZvcm1hbmNlIGNob29zZSBOLlxuICA1MjpcdFxuICA1MzpcdGNvbmZpZyBBVEgxMktfQ09SRURVTVBcbiAgNTQ6XHRcdGJvb2wgXCYjMzQ7YXRoMTJrIGNvcmVkdW1wXCYjMzQ7XG4gIDU1Olx0XHRkZXBlbmRzIG9uIEFUSDEyS1xuICA1NjpcdFx0c2VsZWN0IFdBTlRfREVWX0NPUkVEVU1QXG4gIDU3Olx0XHRoZWxwXG4gIDU4Olx0XHQgIEVuYWJsZSBhdGgxMmsgY29yZWR1bXAgY29sbGVjdGlvblxuICA1OTpcdFxuICA2MDpcdFx0ICBJZiB1bnN1cmUsIHNheSBZIHRvIG1ha2UgaXQgZWFzaWVyIHRvIGRlYnVnIHByb2JsZW1zLiBCdXQgaWZcbiAgNjE6XHRcdCAgZHVtcCBjb2xsZWN0aW9uIG5vdCByZXF1aXJlZCBjaG9vc2UgTi5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yOSAwODoxNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4NDQ3CgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogMjExCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgSW1wYWN0IG9mIHRoaXMgUGF0Y2ggb24gV2ktRmkgRHJpdmVyIEZ1enppbmcqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpcyB0b3VjaGluZyBzb21lIGtleSBhcmVhczogYGF0aDEya19wdWxsX21hY19waHlfY2FwX3N2Y19yZWFkeV9leHRgLCBgYXRoMTJrX3dtaV9zZW5kX3BlZXJfYXNzb2NfY21kYCwgYGF0aDEya193bWlfZWh0X2NhcHNfcGFyc2VgLCBhbmQgYGF0aDEya193bWlfdGx2X21hY19waHlfY2Fwc19leHRgLiBUaGVzZSBhcmUgYWxsIGNsZWFybHkgV01JIGNvbW1hbmRzIOKAkyBpbnRlcmFjdGlvbnMgd2l0aCB0aGUgV2lyZWxlc3MgTW9kdWxlIEludGVyZmFjZS4gQW5kLCBmcm9tIGEgaGlnaCBsZXZlbCwgdGhhdCBtZWFucyB0aGV5JiMzOTtyZSBnb2luZyBvdmVyIHRoZSBidXMsIGxpa2VseSBQQ0kgb3IgQUhCLiBUaGUgaW5pdGlhbCB0aG91Z2h0IGlzLCBob3cgZG9lcyB0aGlzIGludGVyYWN0IHdpdGggZnV6emluZz8KClNwZWNpZmljYWxseSwgaXQgZGVwZW5kcyBvbiB0aGUgUGVyaXBoZXJhbCBDb21wb25lbnQgSW50ZXJjb25uZWN0IChQQ0kpIGludGVyZmFjZS4KCk5vdywgSSYjMzk7bSB0aGlua2luZyBhYm91dCBzeXprYWxsZXIuIEkga25vdyBpdCBjYW4gZnV6eiBQQ0kgZGV2aWNlcyB0aHJvdWdoIHZQQ0ksIGJ1dCBpcyB0aGF0IGl0cyBkZWZhdWx0IGJlaGF2aW9yPyBBIHF1aWNrIG1lbnRhbCBjaGVja+KApiB5ZXMsIHN5emthbGxlciBkb2VzIG9mZmVyIHZQQ0kgZnV6emluZy4gQnV0IHRoZSBjcml0aWNhbCBxdWVzdGlvbiBpcyBlZmZlY3RpdmVuZXNzLiBXaWxsIHRoaXMgcGF0Y2ggYmUgZWZmZWN0aXZlbHkgZnV6emVkIGJ5IHRoZSB0b29scz8gVGhlIGNvbXBsZXhpdHkgb2YgV2ktRmkgZHJpdmVycyBpbnRyb2R1Y2VzIHNpZ25pZmljYW50IGh1cmRsZXMuCgpUaGUgdHlwaWNhbCBXaS1GaSBkcml2ZXIgZmxvdyBnb2VzIHNvbWV0aGluZyBsaWtlIHRoaXM6IGRldmljZSBpbml0aWFsaXphdGlvbiwgZmlybXdhcmUgbG9hZGluZywgYW5kIHRoZW4gdGhlIGNyaXRpY2FsIGNvbW11bmljYXRpb24gc3RhZ2UuIElmIGZpcm13YXJlIGxvYWRpbmcgZmFpbHMsIHRoZSB3aG9sZSBkcml2ZXIgaW5pdGlhbGl6YXRpb24gaXMgYWJvcnRlZC4gSW4gdGhhdCBjYXNlLCB0aGUgV01JIGNvZGUsIHRoZXNlIHZlcnkgZnVuY3Rpb25zLCBtaWdodCBuZXZlciBldmVuIGJlIHJlYWNoZWQuIFNvLCBpcyBgYXRoMTJrYCBvbmUgb2YgdGhvc2UgdGhhdCAqcmVxdWlyZXMqIGZpcm13YXJlPyBJIG5lZWQgdG8gdmVyaWZ5IHRoYXQgYmVmb3JlIEkgY2FuIGRyYXcgYW55IHJlYWwgY29uY2x1c2lvbnMgYWJvdXQgdGhlIGZ1enppbmcgaW1wYWN0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yOSAwODoxNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtyZXF1ZXN0X2Zpcm13YXJlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyayYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jPTMzND1zdGF0aWMgaW50IGF0aDEya19haGJfcG93ZXJfdXAoc3RydWN0IGF0aDEya19iYXNlICphYilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTM2NS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmM6MzY2Olx0cmV0ID0gcmVxdWVzdF9maXJtd2FyZShcdTAwMjZmdywgZndfbmFtZSwgZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtMzY3LVx0aWYgKHJldCBcdTAwM2MgMCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYzozNjg6XHRcdGF0aDEya19lcnIoYWIsIFwmIzM0O3JlcXVlc3RfZmlybXdhcmUgZmFpbGVkXFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtMzY5LVx0XHRyZXR1cm4gcmV0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtMzk4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYzozOTk6XHRyZXQgPSByZXF1ZXN0X2Zpcm13YXJlKFx1MDAyNmZ3MiwgZncyX25hbWUsIGRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTQwMC1cdGlmIChyZXQgXHUwMDNjIDApIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmM6NDAxOlx0XHRhdGgxMmtfZXJyKGFiLCBcJiMzNDtyZXF1ZXN0X2Zpcm13YXJlIGZhaWxlZFxcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTQwMi1cdFx0Z290byBlcnJfZnc7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9mdy5jLTktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2Z3LmM6MTA6c3RhdGljIGludCBhdGgxMmtfZndfcmVxdWVzdF9maXJtd2FyZV9hcGlfbihzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9mdy5jLTExLVx0XHRcdFx0XHQgICAgY29uc3QgY2hhciAqbmFtZSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2Z3LmM9MTYzPXZvaWQgYXRoMTJrX2Z3X21hcChzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZncuYy0xNjYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2Z3LmM6MTY3Olx0cmV0ID0gYXRoMTJrX2Z3X3JlcXVlc3RfZmlybXdhcmVfYXBpX24oYWIsIEFUSDEyS19GV19BUEkyX0ZJTEUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9mdy5jLTE2OC1cdGlmIChyZXQgPT0gMClcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjkgMDg6MTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTY3OQoJCQkJCQkJb3V0cHV0OiA1MAoJCQkJCQkJdGhvdWdodHM6IDE4OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBhdGgxMmsgRHJpdmVyIEluaXRpYWxpemF0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGBhdGgxMmtgIGRyaXZlciBpbml0aWFsaXphdGlvbiBwcm9jZXNzLCBhbmQgaXQmIzM5O3MgaW1tZWRpYXRlbHkgY2xlYXIgd2UgbmVlZCBmaXJtd2FyZS4gV2l0aG91dCBpdCwgdGhlIGByZXF1ZXN0X2Zpcm13YXJlYCBjYWxsIGlzIGdvaW5nIHRvIGJvbWIgb3V0LCBhbmQgdGhlIHdob2xlIGRyaXZlciBzZXR1cCBqdXN0IGdyaW5kcyB0byBhIGhhbHQuIFRoZSBwcm9ibGVtIHdpdGggdXNpbmcgc3l6a2FsbGVyIGhlcmUgaXMgdGhhdCB3ZSBsaWtlbHkgZG9uJiMzOTt0IGhhdmUgdGhlIGBhdGgxMmtgIGZpcm13YXJlIGF2YWlsYWJsZSwgb3IgaWYgd2UgKmRvKiBoYXZlIGl0LCB0aGUgdmlydHVhbCBQQ0kgZGV2aWNlIGlzbiYjMzk7dCBnb2luZyB0byBwbGF5IGJhbGwgYW5kIGNvcnJlY3RseSBoYW5kbGUgdGhlIGZpcm13YXJlIGluaXRpYWxpemF0aW9uLiBUaGF0JiMzOTtzIGEgaHVnZSBodXJkbGUgLSB0aGVyZSYjMzk7cyBubyB3YXkgc3l6a2FsbGVyIGNhbiBlbXVsYXRlIHRoZSBjb21wbGljYXRlZCBmaXJtd2FyZSBpbnRlcmFjdGlvbnMgb2YgdGhpcyBgYXRoMTJrYCBpbnRlcmZhY2UgdXNpbmcgYSB2aXJ0dWFsIFBDSSBzZXR1cC4KCkl0JiMzOTtzIGFsbCBhYm91dCB0aGUgV01JIGNvbW1hbmRzOyB0aGV5JiMzOTtyZSB0aGUgbGFuZ3VhZ2Ugc3Bva2VuIGJldHdlZW4gdGhlIGRyaXZlciBhbmQgdGhlIGZpcm13YXJlLiBJZiB0aGUgZmlybXdhcmUgaXNuJiMzOTt0IHJ1bm5pbmcsIHdlJiMzOTtsbCBuZXZlciBnZXQgdG8ga2V5IGZ1bmN0aW9ucyBsaWtlIGBhdGgxMmtfcHVsbF9tYWNfcGh5X2NhcF9zdmNfcmVhZHlfZXh0YCBvciBgYXRoMTJrX3dtaV9zZW5kX3BlZXJfYXNzb2NfY21kYC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIGNhbGwgY2hhaW4gZm9yIGBhdGgxMmtfcHVsbF9tYWNfcGh5X2NhcF9zdmNfcmVhZHlfZXh0YCB0byBzZWUgaG93IGNyaXRpY2FsIHRoaXMgZGVwZW5kZW5jeSBpcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjkgMDg6MTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YXRoMTJrX3B1bGxfbWFjX3BoeV9jYXBfc3ZjX3JlYWR5X2V4dCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuYz00NTQ9c3RhdGljIGludFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuYzo0NTU6YXRoMTJrX3B1bGxfbWFjX3BoeV9jYXBfc3ZjX3JlYWR5X2V4dChzdHJ1Y3QgYXRoMTJrX3dtaV9wZGV2ICp3bWlfaGFuZGxlLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuYy00NTYtXHRcdFx0XHQgICAgICBzdHJ1Y3QgYXRoMTJrX3dtaV9zdmNfcmR5X2V4dF9wYXJzZSAqc3ZjLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmM9NDgxOD1zdGF0aWMgaW50IGF0aDEya193bWlfZXh0X3NvY19oYWxfcmVnX2NhcHNfcGFyc2Uoc3RydWN0IGF0aDEya19iYXNlICpzb2MsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuYy00ODM2LVx0d2hpbGUgKHBoeV9pZF9tYXAgXHUwMDI2XHUwMDI2IHNvYy1cdTAwM2VudW1fcmFkaW9zIFx1MDAzYyBNQVhfUkFESU9TKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5jOjQ4Mzc6XHRcdHJldCA9IGF0aDEya19wdWxsX21hY19waHlfY2FwX3N2Y19yZWFkeV9leHQod21pX2hhbmRsZSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmMtNDgzOC1cdFx0XHRcdFx0XHRcdCAgICBzdmNfcmR5X2V4dCxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjkgMDg6MTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTA1MjYKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAyNDEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBSZWFjaGFiaWxpdHkgb2YgVGhpcyBDb2RlKioKCk9rYXksIGxldCBtZSB0aGluayB0aGlzIHRocm91Z2guIFRoaXMgY29kZSwgc3BlY2lmaWNhbGx5IGBhdGgxMmtfd21pX2V4dF9zb2NfaGFsX3JlZ19jYXBzX3BhcnNlYCwgaXMgY2FsbGVkIGRlZXAgd2l0aGluIHRoZSBgYXRoMTJrYCBkcml2ZXImIzM5O3MgV01JIGV2ZW50IGhhbmRsaW5nLiBJdCYjMzk7cyB0cmlnZ2VyZWQgYnkgYGF0aDEya193bWlfdGx2X3N2Y19yZHlfZXh0X3BhcnNlYCwgd2hpY2ggaW4gdHVybiByZXNwb25kcyB0byB0aGUgYFdNSV9TRVJWSUNFX1JFQURZX0VYVF9FVkVOVElEYCBldmVudC4gQW5kIHRoYXQgZXZlbnQ/IFRoYXQmIzM5O3Mgc2VudCAqYnkgdGhlIGZpcm13YXJlKiBhZnRlciBpdCBib290cy4KCk5vdywgaGVyZSYjMzk7cyB0aGUga2lja2VyOiBJIGtub3cgc3l6a2FsbGVyIGNhbiYjMzk7dCBlbXVsYXRlIHRoZSBgYXRoMTJrYCBmaXJtd2FyZSBpdHNlbGYuIFRoYXQmIzM5O3MgYSBmdW5kYW1lbnRhbCBsaW1pdGF0aW9uIG9mIHZpcnR1YWxpemF0aW9uIGluIHRoaXMgc2NlbmFyaW8uIFdhaXQsIGJ1dCwgaXNuJiMzOTt0IHRoZXJlIHNvbWV0aGluZyBpbiBzeXprYWxsZXIgYWJvdXQgdGhlIG1hYzgwMjExX2h3c2ltPyBZZXMsIGJ1dCB0aGF0IGVtdWxhdGVzIGEgKmdlbmVyaWMqIFdpLUZpIGRldmljZSwgbm90IHRoZSBzcGVjaWZpY3Mgb2YgYGF0aDEya2AgaGFyZHdhcmUuCgpTbywgcmVhbGlzdGljYWxseSwgY2FuIHRoaXMgY29kZSBiZSByZWFjaGVkIGluIGFuIGVudmlyb25tZW50IGxpa2UgR0NFIG9yIFFFTVU/IE5vLiBJdCYjMzk7cyBpbmV4dHJpY2FibHkgdGllZCB0byB0aGUgYGF0aDEya2AgaGFyZHdhcmUgYW5kIGl0cyBhc3NvY2lhdGVkIGZpcm13YXJlLiBUaGUgcGF0Y2ggSSYjMzk7bSBsb29raW5nIGF0IG1vZGlmaWVzIGNvZGUgdGhhdCYjMzk7cyBmdW5kYW1lbnRhbGx5IHVucmVhY2hhYmxlIGluIGEgdmlydHVhbGl6ZWQgY29udGV4dC4gSSYjMzk7dmUgZ290IHRvIG1ha2Ugc3VyZSB0aGlzIGlzIGFjY3VyYXRlLCB0aG91Z2guIElzIHRoZXJlIGFueSBzb2Z0d2FyZSBlbXVsYXRpb24gbW9kZSBmb3IgYGF0aDEya2A/IEkmIzM5O2xsIGRvdWJsZS1jaGVjayBqdXN0IHRvIGJlIGFic29sdXRlbHkgY2VydGFpbi4KClRoZXJlZm9yZSwgdGhlIG9ubHkgcmVhc29uYWJsZSBjb25jbHVzaW9uIGlzIHRoYXQgSSBuZWVkIHRvIHNldCBgV29ydGhGdXp6aW5nPWZhbHNlYCBmb3IgdGhpcyBjb2RlLiBJdCYjMzk7cyBub3QgcHJhY3RpY2FsbHkgdGVzdGFibGUgaW4gdGhlIGN1cnJlbnQgZW52aXJvbm1lbnQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI5IDA4OjE0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aHdzaW0mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjkgMDg6MTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTExNzIKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAxNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0JiMzOTtzIGludGVybmFsIG1vbm9sb2d1ZToKCioqSW52ZXN0aWdhdGluZyB0aGUgYXRoMTJrIEhhcmR3YXJlIFNpbXVsYXRpb24qKgoKUmlnaHQsIHNvLCBubyBoYXJkd2FyZSBzaW11bGF0aW9uIHN1cHBvcnQgZm9yIHRoZSBhdGgxMmsgZHJpdmVyLiBUaGF0JiMzOTtzIGEgYml0IG9mIGEgc25hZy4gSSYjMzk7bSBnb2luZyB0byBuZWVkIHRvIGRpZyBkZWVwZXIgaW50byB0aGUgaW1wbGljYXRpb25zIG9mIHRoYXQuIExhY2sgb2YgYSBoYXJkd2FyZSBzaW11bGF0aW9uIChod3NpbSkgZW52aXJvbm1lbnQgb2Z0ZW4gbWVhbnMgYSBtb3JlIGNvbXBsZXggZGVidWdnaW5nIGN5Y2xlLCByZWx5aW5nIG9uIHBoeXNpY2FsIGhhcmR3YXJlLCBvciBwb3RlbnRpYWxseSByZWx5aW5nIG9uIG1vcmUgZWxhYm9yYXRlIGVtdWxhdGlvbiBzdHJhdGVnaWVzLiBJJiMzOTtsbCBuZWVkIHRvIGZpZ3VyZSBvdXQgaG93IHRvIHdvcmsgYXJvdW5kIHRoZSBsaW1pdGF0aW9ucy4KCldhaXQgYSBtaW51dGUsIHdoYXQgYWJvdXQgdXNpbmcgYHRlc3Rtb2RlYD8gSXMgdGhhdCBhbiBhdmFpbGFibGUgb3B0aW9uPyBgVGVzdG1vZGVgIG1pZ2h0IG9mZmVyIGFuIGFsdGVybmF0aXZlIHJvdXRlIGZvciBzb21lIGxldmVsIG9mIGNvbnRyb2wgb3IgZXhwZXJpbWVudGF0aW9uIHdpdGhvdXQgYSBmdWxsIGh3c2ltLiBJIG5lZWQgdG8gcmVmcmVzaCBteSBtZW1vcnkgb24gdGhlIGF0aDEyayBkcml2ZXImIzM5O3MgYHRlc3Rtb2RlYCBpbXBsZW1lbnRhdGlvbiBhbmQgc2VlIGlmIGl0IGNvdWxkIGJlIGxldmVyYWdlZCBpbiB0aGlzIHNpdHVhdGlvbi4gSXQgY291bGQgcHJvdmlkZSBhY2Nlc3MgdG8gaW50ZXJuYWwgcmVnaXN0ZXJzIG9yIHRlc3QgY29tbWFuZHMsIHdoaWNoIGNvdWxkIGJlIGhlbHBmdWwuIEkgbXVzdCBhc3Nlc3Mgd2hldGhlciBpdCBpcyByZWxldmFudCB0byB0aGUgaXNzdWUgYXQgaGFuZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjkgMDg6MTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dGVzdG1vZGUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvTWFrZWZpbGU9MzM9YXRoMTJrLSQoQ09ORklHX0FUSDEyS19DT1JFRFVNUCkgJiM0Mzs9IGNvcmVkdW1wLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvTWFrZWZpbGU6MzQ6YXRoMTJrLSQoQ09ORklHX05MODAyMTFfVEVTVE1PREUpICYjNDM7PSB0ZXN0bW9kZS5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL01ha2VmaWxlLTM1LWF0aDEyay0kKENPTkZJR19USEVSTUFMKSAmIzQzOz0gdGhlcm1hbC5vXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9tYWMuYy0xNy0jaW5jbHVkZSBcJiMzNDtkcF9yeC5oXCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jOjE4OiNpbmNsdWRlIFwmIzM0O3Rlc3Rtb2RlLmhcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmMtMTktI2luY2x1ZGUgXCYjMzQ7cGVlci5oXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jLTYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmM6NzojaW5jbHVkZSBcJiMzNDt0ZXN0bW9kZS5oXCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmMtOC0jaW5jbHVkZSBcdTAwM2NuZXQvbmV0bGluay5oXHUwMDNlXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jLTEzLSNpbmNsdWRlIFwmIzM0O2hpZi5oXCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmM6MTQ6I2luY2x1ZGUgXCYjMzQ7Li4vdGVzdG1vZGVfaS5oXCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmMtMTUtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jPTQ1PXZvaWQgYXRoMTJrX3RtX3dtaV9ldmVudF91bnNlZ21lbnRlZChzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiLCB1MzIgY21kX2lkLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYy01MS1cdGF0aDEya19kYmcoYWIsIEFUSDEyS19EQkdfVEVTVE1PREUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmM6NTI6XHRcdCAgIFwmIzM0O3Rlc3Rtb2RlIGV2ZW50IHdtaSBjbWRfaWQgJWQgc2tiIGxlbmd0aCAlZFxcblwmIzM0OyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYy01My1cdFx0ICAgY21kX2lkLCBza2ItXHUwMDNlbGVuKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmMtNTgtXHRpZiAoIWFyKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmM6NTk6XHRcdGF0aDEya193YXJuKGFiLCBcJiMzNDt0ZXN0bW9kZSBldmVudCBub3QgaGFuZGxlZCBkdWUgdG8gaW52YWxpZCBwZGV2XFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYy02MC1cdFx0cmV0dXJuO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYy02NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYzo2NTpcdG5sX3NrYiA9IGNmZzgwMjExX3Rlc3Rtb2RlX2FsbG9jX2V2ZW50X3NrYihhci1cdTAwM2VhaC1cdTAwM2Vody1cdTAwM2V3aXBoeSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYy02Ni1cdFx0XHRcdFx0XHQgICAyICogbmxhX3RvdGFsX3NpemUoc2l6ZW9mKHUzMikpICYjNDM7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jLTcyLVx0XHRhdGgxMmtfd2FybihhYixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYzo3MzpcdFx0XHQgICAgXCYjMzQ7ZmFpbGVkIHRvIGFsbG9jYXRlIHNrYiBmb3IgdW5zZWdtZW50ZWQgdGVzdG1vZGUgd21pIGV2ZW50XFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYy03NC1cdFx0cmV0dXJuO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYy03OS1cdCAgICBubGFfcHV0KG5sX3NrYiwgQVRIX1RNX0FUVFJfREFUQSwgc2tiLVx1MDAzZWxlbiwgc2tiLVx1MDAzZWRhdGEpKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmM6ODA6XHRcdGF0aDEya193YXJuKGFiLCBcJiMzNDtmYWlsZWQgdG8gcG9wdWxhdGUgdGVzdG1vZGUgdW5zZWdtZW50ZWQgZXZlbnRcXG5cJiMzNDspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jLTgxLVx0XHRrZnJlZV9za2Iobmxfc2tiKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmMtODQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmM6ODU6XHRjZmc4MDIxMV90ZXN0bW9kZV9ldmVudChubF9za2IsIEdGUF9BVE9NSUMpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jLTg2LX1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmM9ODg9dm9pZCBhdGgxMmtfdG1fcHJvY2Vzc19ldmVudChzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiLCB1MzIgY21kX2lkLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYy05OS1cdGF0aDEya19kYmcoYWIsIEFUSDEyS19EQkdfVEVTVE1PREUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmM6MTAwOlx0XHQgICBcJiMzNDt0ZXN0bW9kZSBldmVudCB3bWkgY21kX2lkICVkIGZ0bSBldmVudCBtc2cgJXAgZGF0YWxlbiAlZFxcblwmIzM0OyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYy0xMDEtXHRcdCAgIGNtZF9pZCwgZnRtX21zZywgbGVuZ3RoKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmMtMTA1LVx0aWYgKHBkZXZfaWQgXHUwMDNlPSBhYi1cdTAwM2VudW1fcmFkaW9zKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmM6MTA2Olx0XHRhdGgxMmtfd2FybihhYiwgXCYjMzQ7dGVzdG1vZGUgZXZlbnQgbm90IGhhbmRsZWQgZHVlIHRvIGludmFsaWQgcGRldiBpZFxcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmMtMTA3LVx0XHRyZXR1cm47XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jLTExMi1cdGlmICghYXIpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYzoxMTM6XHRcdGF0aDEya193YXJuKGFiLCBcJiMzNDt0ZXN0bW9kZSBldmVudCBub3QgaGFuZGxlZCBkdWUgdG8gYWJzZW5jZSBvZiBwZGV2XFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYy0xMTQtXHRcdHJldHVybjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmMtMTUzLVx0c3Bpbl9sb2NrX2JoKFx1MDAyNmFyLVx1MDAzZWRhdGFfbG9jayk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmM6MTU0Olx0bmxfc2tiID0gY2ZnODAyMTFfdGVzdG1vZGVfYWxsb2NfZXZlbnRfc2tiKGFyLVx1MDAzZWFoLVx1MDAzZWh3LVx1MDAzZXdpcGh5LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jLTE1NS1cdFx0XHRcdFx0XHQgICAyICogbmxhX3RvdGFsX3NpemUoc2l6ZW9mKHUzMikpICYjNDM7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jLTE2MS1cdFx0YXRoMTJrX3dhcm4oYWIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmM6MTYyOlx0XHRcdCAgICBcJiMzNDtmYWlsZWQgdG8gYWxsb2NhdGUgc2tiIGZvciB0ZXN0bW9kZSB3bWkgZXZlbnRcXG5cJiMzNDspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jLTE2My1cdFx0cmV0dXJuO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYy0xNzAtXHRcdCAgICBcdTAwMjZhYi1cdTAwM2VmdG1fZXZlbnRfb2JqLmV2ZW50ZGF0YVswXSkpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYzoxNzE6XHRcdGF0aDEya193YXJuKGFiLCBcJiMzNDtmYWlsZWQgdG8gcG9wdWxhdGUgdGVzdG1vZGUgZXZlbnRcJiMzNDspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jLTE3Mi1cdFx0a2ZyZWVfc2tiKG5sX3NrYik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jLTE3NS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYzoxNzY6XHRjZmc4MDIxMV90ZXN0bW9kZV9ldmVudChubF9za2IsIEdGUF9BVE9NSUMpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jLTE3Ny19XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jPTE3OT1zdGF0aWMgaW50IGF0aDEya190bV9jbWRfZ2V0X3ZlcnNpb24oc3RydWN0IGF0aDEyayAqYXIsIHN0cnVjdCBubGF0dHIgKnRiW10pXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jLTE4My1cdGF0aDEya19kYmcoYXItXHUwMDNlYWIsIEFUSDEyS19EQkdfVEVTVE1PREUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmM6MTg0Olx0XHQgICBcJiMzNDt0ZXN0bW9kZSBjbWQgZ2V0IHZlcnNpb25fbWFqb3IgJWQgdmVyc2lvbl9taW5vciAlZFxcblwmIzM0OyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYy0xODUtXHRcdCAgIEFUSF9URVNUTU9ERV9WRVJTSU9OX01BSk9SLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYy0xODgtXHRzcGluX2xvY2tfYmgoXHUwMDI2YXItXHUwMDNlZGF0YV9sb2NrKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYzoxODk6XHRza2IgPSBjZmc4MDIxMV90ZXN0bW9kZV9hbGxvY19yZXBseV9za2IoYXItXHUwMDNlYWgtXHUwMDNlaHctXHUwMDNld2lwaHksXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmMtMTkwLVx0XHRcdFx0XHRcdDIgKiBubGFfdG90YWxfc2l6ZShzaXplb2YodTMyKSkpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYy0yMDMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmM6MjA0Olx0cmV0dXJuIGNmZzgwMjExX3Rlc3Rtb2RlX3JlcGx5KHNrYik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmMtMjA1LX1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmM9MjA3PXN0YXRpYyBpbnQgYXRoMTJrX3RtX2NtZF9wcm9jZXNzX2Z0bShzdHJ1Y3QgYXRoMTJrICphciwgc3RydWN0IG5sYXR0ciAqdGJbXSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmMtMjI5LVx0YXRoMTJrX2RiZyhhci1cdTAwM2VhYiwgQVRIMTJLX0RCR19URVNUTU9ERSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYzoyMzA6XHRcdCAgIFwmIzM0O3Rlc3Rtb2RlIGNtZCB3bWkgY21kX2lkICVkIGJ1ZiAlcCBidWZfbGVuICVkXFxuXCYjMzQ7LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jLTIzMS1cdFx0ICAgY21kX2lkLCBidWYsIGJ1Zl9sZW4pO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYy0yODAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmM6MjgxOnN0YXRpYyBpbnQgYXRoMTJrX3RtX2NtZF90ZXN0bW9kZV9zdGFydChzdHJ1Y3QgYXRoMTJrICphciwgc3RydWN0IG5sYXR0ciAqdGJbXSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYy0yODIte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYz0zMDA9c3RhdGljIGludCBhdGgxMmtfdG1fY21kX3dtaShzdHJ1Y3QgYXRoMTJrICphciwgc3RydWN0IG5sYXR0ciAqdGJbXSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmMtMzE4LVx0aWYgKCFidWZfbGVuKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmM6MzE5Olx0XHRhdGgxMmtfd2Fybihhci1cdTAwM2VhYiwgXCYjMzQ7Tm8gZGF0YSBwcmVzZW50IGluIHRlc3Rtb2RlIGNvbW1hbmRcXG5cJiMzNDspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jLTMyMC1cdFx0cmV0dXJuIC1FSU5WQUw7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jLTMzMS1cdGF0aDEya19kYmcoYXItXHUwMDNlYWIsIEFUSDEyS19EQkdfVEVTVE1PREUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmM6MzMyOlx0XHQgICBcJiMzNDt0ZXN0bW9kZSBjbWQgd21pIGNtZF9pZCAlZCAgYnVmIGxlbmd0aCAlZFxcblwmIzM0OyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYy0zMzMtXHRcdCAgIGNtZF9pZCwgYnVmX2xlbik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jLTM0Ni1cdFx0ZGV2X2tmcmVlX3NrYihza2IpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jOjM0NzpcdFx0YXRoMTJrX3dhcm4oYXItXHUwMDNlYWIsIFwmIzM0O2ZhaWxlZCB0byB0cmFuc21pdCB3bWkgY29tbWFuZCAodGVzdG1vZGUpOiAlZFxcblwmIzM0OyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYy0zNDgtXHRcdFx0ICAgIHJldCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jPTM1ND1pbnQgYXRoMTJrX3RtX2NtZChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmMtMzg1LVx0Y2FzZSBBVEhfVE1fQ01EX1RFU1RNT0RFX1NUQVJUOlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jOjM4NjpcdFx0cmV0dXJuIGF0aDEya190bV9jbWRfdGVzdG1vZGVfc3RhcnQoYXIsIHRiKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYy0zODctXHRjYXNlIEFUSF9UTV9DTURfR0VUX1ZFUlNJT046XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9ody5jLTI0LSNpbmNsdWRlIFwmIzM0Oy4uL2RlYnVnZnNfc3RhLmhcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvaHcuYzoyNTojaW5jbHVkZSBcJiMzNDsuLi90ZXN0bW9kZS5oXCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2h3LmMtMjYtI2luY2x1ZGUgXCYjMzQ7aGFsLmhcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5jLTI2LSNpbmNsdWRlIFwmIzM0O3AycC5oXCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5jOjI3OiNpbmNsdWRlIFwmIzM0O3Rlc3Rtb2RlLmhcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmMtMjgtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI5IDA4OjE0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE0ODM0CgkJCQkJCQlvdXRwdXQ6IDQ3CgkJCQkJCQl0aG91Z2h0czogMzQ2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBXTUkgQ29tbWFuZCBIYW5kbGluZyBpbiBUZXN0bW9kZSoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyB0ZXN0bW9kZSBpbXBsZW1lbnRhdGlvbiBmb3IgdGhlIGF0aDEyayBkcml2ZXIsIHNwZWNpZmljYWxseSBmb2N1c2luZyBvbiBXTUkgKFdpbmRvd3MgTWFuYWdlbWVudCBJbnN0cnVtZW50YXRpb24pIGNvbW1hbmRzLiBNeSBpbml0aWFsIHF1ZXN0aW9uIGlzOiBkb2VzIHRlc3Rtb2RlIG9ubHkgYWxsb3cgKnNlbmRpbmcqIGNvbW1hbmRzIGZyb20gdXNlcnNwYWNlLCBvciBjYW4gaXQgYWxzbyAqcmVjZWl2ZSogdGhlbT8KCkkgaW5pdGlhbGx5IGZvdW5kIHJlZmVyZW5jZXMgdG8gYGF0aDEya190bV93bWlfZXZlbnRfdW5zZWdtZW50ZWRgIGFuZCBgYXRoMTJrX3RtX3Byb2Nlc3NfZXZlbnRgLiBUaG9zZSBmdW5jdGlvbnMgc3VnZ2VzdCBhIG1lY2hhbmlzbSBmb3IgZ2V0dGluZyBldmVudHMgKmJhY2sqIHRvIHVzZXJzcGFjZS4gQnV0IHRoZW4gSSBub3RpY2VkIHRoaXMgcGF0Y2ggY2hhbmdlcyBob3cgdGhlIGRyaXZlciBoYW5kbGVzIFdNSSBldmVudHMgaW50ZXJuYWxseeKAlCBzcGVjaWZpY2FsbHkgaW4gYGF0aDEya19wdWxsX21hY19waHlfY2FwX3N2Y19yZWFkeV9leHRgLCBgYXRoMTJrX3dtaV9laHRfY2Fwc19wYXJzZWAsIGFuZCBgYXRoMTJrX3dtaV90bHZfbWFjX3BoeV9jYXBzX2V4dGAuIFRoZXNlIGFyZSBjYWxsZWQgd2hlbiB0aGUgKmRyaXZlciogZ2V0cyBldmVudHMgZnJvbSB0aGUgKmZpcm13YXJlKi4gU2luY2Ugd2UgYXJlIG5vdCBydW5uaW5nIHdpdGggZmlybXdhcmUsIGFuZCB0aG9zZSBldmVudCBwcm9jZXNzaW5nIGZ1bmN0aW9ucyBhcmUgbm90IGJlaW5nIHRyaWdnZXJlZCwgdGhlcmUgaXMgbm8gZXZlbnQgdG8gc2VuZC4KCldhaXQgYSBzZWNvbmQsIGxldCYjMzk7cyByZXRoaW5rIHRoaXMuIENhbiB1c2Vyc3BhY2UgcG90ZW50aWFsbHkgKmluamVjdCogV01JIGV2ZW50cyBpbnRvIHRoZSBkcml2ZXIgdmlhIHRlc3Rtb2RlLCBldmVuIGlmIHRoZSBmaXJtd2FyZSBpc24mIzM5O3QgcnVubmluZz8gTGV0JiMzOTtzIGNoZWNrIGBhdGgxMmtfdG1fY21kYCB3aGljaCBzZWVtcyB0byBiZSB0aGUgY2VudHJhbCBjb21tYW5kIGhhbmRsZXIuIEl0IHNlZW1zIHRvIGhhbmRsZSBjb21tYW5kcyBsaWtlIGBBVEhfVE1fQ01EX1RFU1RNT0RFX1NUQVJUYCwgYEFUSF9UTV9DTURfR0VUX1ZFUlNJT05gLCBgQVRIX1RNX0NNRF9XTUlgLCBhbmQgYEFUSF9UTV9DTURfV01JX0ZUTWAuICBgQVRIX1RNX0NNRF9XTUlgIGlzIHBhcnRpY3VsYXJseSBpbnRlcmVzdGluZy4gSXQgKnNlbmRzKiBhIFdNSSBjb21tYW5kICp0byB0aGUgZmlybXdhcmUqLiBTbyBpdCBzZWVtcyB0aGUgYW5zd2VyIGlzIG5vLCBpdCBkb2VzbiYjMzk7dCBnaXZlIHVzIHRoZSBhYmlsaXR5IHRvIGluamVjdCBhbiBldmVudCB0byB0aGUgZHJpdmVyLgoKU28sIGluIHN1bW1hcnksIGJhc2VkIG9uIHRoaXMgcXVpY2sgbG9vaywgaXQgZG9lc24mIzM5O3QgbG9vayBsaWtlIEkgY2FuIHRyaWdnZXIgdGhlIGRyaXZlciYjMzk7cyBpbnRlcm5hbCBldmVudCBwYXJzaW5nIGxvZ2ljIGZyb20gdXNlcnNwYWNlIGRpcmVjdGx5LgoKV2hhdCBhYm91dCBgYXRoMTJrX3dtaV9zZW5kX3BlZXJfYXNzb2NfY21kYD8gVGhpcyBpcyBhIFdNSSBjb21tYW5kIHNlbnQgKmJ5KiB0aGUgZHJpdmVyIHRvIHRoZSBmaXJtd2FyZSwgd2hpY2ggbWVhbnMgaXQgaXNuJiMzOTt0IHJlbGV2YW50IHRvIG15IHF1ZXN0aW9uLiBUaGlzIGNvbW1hbmQgaXMgY2FsbGVkIGJ5IGBhdGgxMmtfbWFjX3BlZXJfYXNzb2NfaF92ZGV2YC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjkgMDg6MTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YXRoMTJrX3dtaV9zZW5kX3BlZXJfYXNzb2NfY21kJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyayYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jPTM4MzU9c3RhdGljIHZvaWQgYXRoMTJrX2Jzc19hc3NvYyhzdHJ1Y3QgYXRoMTJrICphcixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jLTM5MDQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jOjM5MDU6XHQvKiBrZWVwIHRoaXMgYmVmb3JlIGF0aDEya193bWlfc2VuZF9wZWVyX2Fzc29jX2NtZCgpICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jLTM5MDYtXHRyZXQgPSBhdGgxMmtfd21pX3ZkZXZfc2V0X3BhcmFtX2NtZChhciwgYXJ2aWYtXHUwMDNldmRldl9pZCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jLTM5MTQtXHRwZWVyX2FyZy1cdTAwM2Vpc19hc3NvYyA9IHRydWU7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jOjM5MTU6XHRyZXQgPSBhdGgxMmtfd21pX3NlbmRfcGVlcl9hc3NvY19jbWQoYXIsIHBlZXJfYXJnKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmMtMzkxNi1cdGlmIChyZXQpIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jPTY0NDA9c3RhdGljIGludCBhdGgxMmtfbWFjX3N0YXRpb25fYXNzb2Moc3RydWN0IGF0aDEyayAqYXIsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9tYWMuYy02NDc5LVx0cGVlcl9hcmctXHUwMDNlaXNfYXNzb2MgPSB0cnVlO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9tYWMuYzo2NDgwOlx0cmV0ID0gYXRoMTJrX3dtaV9zZW5kX3BlZXJfYXNzb2NfY21kKGFyLCBwZWVyX2FyZyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jLTY0ODEtXHRpZiAocmV0KSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9tYWMuYz02NjQ3PXN0YXRpYyB2b2lkIGF0aDEya19zdGFfcmNfdXBkYXRlX3drKHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXBoeV93b3JrICp3aylcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jLTY4MzktXHRcdFx0cGVlcl9hcmctXHUwMDNlaXNfYXNzb2MgPSBmYWxzZTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmM6Njg0MDpcdFx0XHRlcnIgPSBhdGgxMmtfd21pX3NlbmRfcGVlcl9hc3NvY19jbWQoYXIsIHBlZXJfYXJnKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmMtNjg0MS1cdFx0XHRpZiAoZXJyKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmM9MjEyNz1zdGF0aWMgdm9pZCBhdGgxMmtfd21pX2NvcHlfcGVlcl9mbGFncyhzdHJ1Y3Qgd21pX3BlZXJfYXNzb2NfY29tcGxldGVfY21kICpjbWQsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuYy0yMjE0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuYzoyMjE1OmludCBhdGgxMmtfd21pX3NlbmRfcGVlcl9hc3NvY19jbWQoc3RydWN0IGF0aDEyayAqYXIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5jLTIyMTYtXHRcdFx0XHQgICBzdHJ1Y3QgYXRoMTJrX3dtaV9wZWVyX2Fzc29jX2FyZyAqYXJnKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmg9NjU1Nj1pbnQgYXRoMTJrX3dtaV9wZGV2X3Jlc3VtZShzdHJ1Y3QgYXRoMTJrICphciwgdTMyIHBkZXZfaWQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuaC02NTU3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuaDo2NTU4OmludCBhdGgxMmtfd21pX3NlbmRfcGVlcl9hc3NvY19jbWQoc3RydWN0IGF0aDEyayAqYXIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5oLTY1NTktXHRcdFx0XHQgICBzdHJ1Y3QgYXRoMTJrX3dtaV9wZWVyX2Fzc29jX2FyZyAqYXJnKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjkgMDg6MTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTY2OTYKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiAxMDYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqVmVyaWZ5aW5nIHRoZSBNQUM4MDIxMSBDYWxsYmFjayBDaGFpbioqCgpPa2F5LCBzbyBJJiMzOTttIHRyYWNpbmcgdGhlIGV4ZWN1dGlvbiBwYXRoIGFuZCBuZWVkIHRvIG1ha2Ugc3VyZSBJJiMzOTt2ZSBnb3QgdGhpcyByaWdodC4gSSYjMzk7bSBzZWVpbmcgdGhpcyBjYWxsIGNvbWluZyBmcm9tIGBhdGgxMmtfYnNzX2Fzc29jYCwgYGF0aDEya19tYWNfc3RhdGlvbl9hc3NvY2AsIGFuZCBgYXRoMTJrX3N0YV9yY191cGRhdGVfd2tgLiBSaWdodCwgdGhvc2UgYXJlIGRlZmluaXRlbHkgbWFjODAyMTEgY2FsbGJhY2tzLiBObyBzdXJwcmlzZXMgdGhlcmUuIEJ1dCwgYW5kIHRoaXMgaXMgdGhlIGNydWNpYWwgcG9pbnQsIHRoZXNlIGNhbGxiYWNrcyAqc2hvdWxkKiBvbmx5IGJlIGFjY2Vzc2libGUgaWYgdGhlIGRyaXZlciBoYXMgc3VjY2Vzc2Z1bGx5IHJlZ2lzdGVyZWQgaXRzZWxmIHdpdGggbWFjODAyMTEgaW4gdGhlIGZpcnN0IHBsYWNlLiBBbmQgdGhlIGRyaXZlciBvbmx5IGdldHMgdG8gcmVnaXN0ZXIgd2l0aCBtYWM4MDIxMSAqYWZ0ZXIqIHRoZSBmaXJtd2FyZSBpbml0aWFsaXphdGlvbiBpcyBjb21wbGV0ZSBhbmQgc3VjY2Vzc2Z1bC4gU28sIHRoYXQmIzM5O3MgdGhlIGNoYWluIG9mIGxvZ2ljLCByaWdodD8gVGhlIGRyaXZlciByZWdpc3RlcnMsIHRoZW4gdGhlIGNhbGxiYWNrcyBhcmUgYXZhaWxhYmxlLiBMZXQmIzM5O3MganVzdCBkb3VibGUtY2hlY2sgdGhhdCB0aGlzIGlzIGFjdHVhbGx5IHRoZSBjYXNlLCBhbmQgSSYjMzk7bGwgdmVyaWZ5IHRoZSBlbnRpcmUgcGF0aC4gSSBuZWVkIHRvIG1ha2UgYWJzb2x1dGVseSBzdXJlIHRoZSBwcmVjb25kaXRpb25zIGFyZSBtZXQgaGVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjkgMDg6MTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YXRoMTJrX21hY19yZWdpc3RlciYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmM9MTE1NT1zdGF0aWMgaW50IGF0aDEya19jb3JlX2h3X2dyb3VwX3N0YXJ0KHN0cnVjdCBhdGgxMmtfaHdfZ3JvdXAgKmFnKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5jLTExNzgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuYzoxMTc5Olx0cmV0ID0gYXRoMTJrX21hY19yZWdpc3RlcihhZyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuYy0xMTgwLVx0aWYgKFdBUk5fT04ocmV0KSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jPTE1MjE4PXZvaWQgYXRoMTJrX21hY19tbG9fdGVhcmRvd24oc3RydWN0IGF0aDEya19od19ncm91cCAqYWcpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9tYWMuYy0xNTIzOS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmM6MTUyNDA6aW50IGF0aDEya19tYWNfcmVnaXN0ZXIoc3RydWN0IGF0aDEya19od19ncm91cCAqYWcpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jLTE1MjQxLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5oPTE1ND12b2lkIGF0aDEya19tYWNfdW5yZWdpc3RlcihzdHJ1Y3QgYXRoMTJrX2h3X2dyb3VwICphZyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5oOjE1NTppbnQgYXRoMTJrX21hY19yZWdpc3RlcihzdHJ1Y3QgYXRoMTJrX2h3X2dyb3VwICphZyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5oLTE1Ni1pbnQgYXRoMTJrX21hY19hbGxvY2F0ZShzdHJ1Y3QgYXRoMTJrX2h3X2dyb3VwICphZyk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI5IDA4OjE0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE3NDk4CgkJCQkJCQlvdXRwdXQ6IDQ0CgkJCQkJCQl0aG91Z2h0czogMjcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgYSBzdW1tYXJ5IG9mIG15IHVuZGVyc3RhbmRpbmcsIGZyYW1lZCBmcm9tIG15IHBlcnNwZWN0aXZlIGFzIGFuIGV4cGVydDoKCioqVW5kZXJzdGFuZGluZyB0aGUgYGF0aDEya19tYWNfcmVnaXN0ZXJgIENhbGwqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoZSBgYXRoMTJrX21hY19yZWdpc3RlcmAgZnVuY3Rpb24sIGFuZCB0aGUga2V5IHBpZWNlIG9mIGNvbnRleHQgaXMgdGhhdCBpdCYjMzk7cyBiZWluZyBjYWxsZWQgZnJvbSB3aXRoaW4gYGF0aDEya19jb3JlX2h3X2dyb3VwX3N0YXJ0YC4gVGhpcyBpbW1lZGlhdGVseSB0ZWxscyBtZSB3ZSYjMzk7cmUgbGlrZWx5IGluIHRoZSBlYXJseSBzdGFnZXMgb2YgYnJpbmdpbmcgdXAgYSBoYXJkd2FyZSBncm91cCwgcHJvYmFibHkgcmVsYXRlZCB0byBhIHNwZWNpZmljIHJhZGlvIG9yIHZpcnR1YWwgaW50ZXJmYWNlIHdpdGhpbiB0aGUgbGFyZ2VyIGF0aDEyayBkcml2ZXIgZnJhbWV3b3JrLiBgYXRoMTJrX2NvcmVfaHdfZ3JvdXBfc3RhcnRgIHN1Z2dlc3RzIGEgY29vcmRpbmF0ZWQgYWN0aW9uIGludm9sdmluZyBtdWx0aXBsZSBoYXJkd2FyZSBlbGVtZW50cy4gU28sIGBhdGgxMmtfbWFjX3JlZ2lzdGVyYCBpcyBtb3N0IGxpa2VseSByZXNwb25zaWJsZSBmb3IgcmVnaXN0ZXJpbmcgdGhlIE1BQyBsYXllciBjb21wb25lbnQgb2YgYSBzcGVjaWZpYyBoYXJkd2FyZSBncm91cC4gSSYjMzk7ZCBleHBlY3QgaXQgdG8gaW5pdGlhbGl6ZSBkYXRhIHN0cnVjdHVyZXMgcmVsYXRlZCB0byB0aGUgTUFDLCBzZXQgdXAgaW50ZXJydXB0IGhhbmRsZXJzLCBhbmQgcG90ZW50aWFsbHkgY29tbXVuaWNhdGUgd2l0aCB0aGUgaGFyZHdhcmUgYXQgYSBsb3cgbGV2ZWwgdG8gZXN0YWJsaXNoIHRoZSBNQUMmIzM5O3Mgb3BlcmF0aW9uYWwgc3RhdGUuIFRoaXMgd291bGQgcHJvYmFibHkgaW52b2x2ZSBzZXR0aW5nIHVwIERNQSBjaGFubmVscywgY29uZmlndXJpbmcgdHJhbnNtaXQgYW5kIHJlY2VpdmUgcXVldWVzLCBhbmQgcGVyaGFwcyBlbmFibGluZyB2YXJpb3VzIE1BQyBmZWF0dXJlcy4gSSBuZWVkIHRvIGRpdmUgZGVlcGVyLCBsaWtlbHkgc3RhcnRpbmcgd2l0aCB0aGUgZnVuY3Rpb24mIzM5O3MgZGVmaW5pdGlvbiBhbmQgaXRzIGNhbGwgc3RhY2sgdG8gZnVsbHkgdW5kZXJzdGFuZCB0aGUgZmxvdyBhbmQgZGF0YSB0aGlzIHJlZ2lzdGVyIGZ1bmN0aW9uIGlzIG1vdmluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjkgMDg6MTU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YXRoMTJrX2NvcmVfaHdfZ3JvdXBfc3RhcnQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5jPTExMjk9c3RhdGljIGludCBhdGgxMmtfY29yZV9tbG9fc2V0dXAoc3RydWN0IGF0aDEya19od19ncm91cCAqYWcpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmMtMTE1NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5jOjExNTU6c3RhdGljIGludCBhdGgxMmtfY29yZV9od19ncm91cF9zdGFydChzdHJ1Y3QgYXRoMTJrX2h3X2dyb3VwICphZylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5jLTExNTYte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5jPTEyMzA9c3RhdGljIGlubGluZVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmM6MTIzMTpib29sIGF0aDEya19jb3JlX2h3X2dyb3VwX3N0YXJ0X3JlYWR5KHN0cnVjdCBhdGgxMmtfaHdfZ3JvdXAgKmFnKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmMtMTIzMi17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmM9MTMxMT1pbnQgYXRoMTJrX2NvcmVfcW1pX2Zpcm13YXJlX3JlYWR5KHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmMtMTM0NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5jOjEzNDU6XHRpZiAoYXRoMTJrX2NvcmVfaHdfZ3JvdXBfc3RhcnRfcmVhZHkoYWcpKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuYzoxMzQ2Olx0XHRyZXQgPSBhdGgxMmtfY29yZV9od19ncm91cF9zdGFydChhZyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuYy0xMzQ3LVx0XHRpZiAocmV0KSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmM9MTYzNj1zdGF0aWMgdm9pZCBhdGgxMmtfY29yZV9yZXN0YXJ0KHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuYy0xNjU5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmM6MTY2MDpcdFx0aWYgKCFhdGgxMmtfY29yZV9od19ncm91cF9zdGFydF9yZWFkeShhZykpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5jLTE2NjEtXHRcdFx0bXV0ZXhfdW5sb2NrKFx1MDAyNmFnLVx1MDAzZW11dGV4KTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjkgMDg6MTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTg0MjgKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiAyODAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBVbnJlYWNoYWJpbGl0eSBvZiBUaGlzIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCB0aGUgY29kZSBpdCB0b3VjaGVzLiBJdCYjMzk7cyBjYWxsZWQgZnJvbSBgYXRoMTJrX2NvcmVfcW1pX2Zpcm13YXJlX3JlYWR5YC4gVGhhdCBmdW5jdGlvbiwgYXMgdGhlIG5hbWUgc3VnZ2VzdHMsIGdldHMgdHJpZ2dlcmVkIHdoZW4gdGhlIFFNSSBmaXJtd2FyZSBpcyByZWFkeS4gSXQmIzM5O3MgY2xlYXIgdGhhdCB3aXRob3V0IHRoZSBmaXJtd2FyZSBiZWluZyBsb2FkZWQgYW5kIHJlYWR5LCB0aGUgZHJpdmVyIHdvbiYjMzk7dCByZWdpc3RlciBwcm9wZXJseSB3aXRoIG1hYzgwMjExLiBBbmQgaWYgdGhlIHJlZ2lzdHJhdGlvbiBkb2VzbiYjMzk7dCBoYXBwZW4sIG5vbmUgb2YgdGhvc2UgbWFjODAyMTEgY2FsbGJhY2tzIGFyZSBldmVyIGdvaW5nIHRvIGJlIGFjY2Vzc2libGUuCgpUaGVyZWZvcmUsIHVuZGVyIG5vcm1hbCBjaXJjdW1zdGFuY2VzIGFuZCBlc3BlY2lhbGx5IGluIHRoZSB0eXBlIG9mIHZpcnR1YWxpemVkIGVudmlyb25tZW50IEkmIzM5O20gZGVhbGluZyB3aXRoIGhlcmUsIHdpdGhvdXQgdGhlIGFjdHVhbCBoYXJkd2FyZSBhbmQgZmlybXdhcmUsIHRoaXMgY29kZSBwYXRoIGlzIHNpbXBseSB1bnJlYWNoYWJsZS4KClRoaXMgcGF0Y2gsIGZyb20gd2hhdCBJIGNhbiBzZWUsIGlzIGEgZml4IGZvciBzb21lIHNwYXJzZSB3YXJuaW5ncyByZWxhdGluZyB0byBlbmRpYW5uZXNzLiBJdCB0b3VjaGVzIGBkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuaGAsIGBkZWJ1Z2ZzLmNgLCBgd21pLmNgLCBhbmQgYHdtaS5oYC4gU2luY2UgaXQmIzM5O3MgaW5hY2Nlc3NpYmxlIGluIFN5emthbGxlciwgbXkgaW5pdGlhbCBpbnN0aW5jdCBpcyB0byBtYXJrIHRoaXMgYXMgYFdvcnRoRnV6emluZz1mYWxzZWAuIEhvd2V2ZXIsIEkgbmVlZCB0byBiZSB0aG9yb3VnaCBhbmQgZXhoYXVzdCBhbGwgYXZlbnVlcy4KCkxldCBtZSB0aGlua+KApiBpcyB0aGVyZSBhbnkgb3RoZXIgd2F5IHRvIHBvdGVudGlhbGx5IHJlYWNoIHRoaXMgY29kZT8gSXMgdGhlcmUgYSB0ZXN0IGZyYW1ld29yayB0aGF0IG1pZ2h0IG1vY2sgdGhlIGZpcm13YXJlPyBOb3BlLCBJIGRvbiYjMzk7dCBzZWUgYW55IHNpZ24gb2YgdGhlIGBhdGgxMmtgIGRyaXZlciBoYXZpbmcgYSBmaXJtd2FyZSBtb2NraW5nIGZyYW1ld29yayB3aXRoaW4gdGhlIGtlcm5lbCBpdHNlbGYuIEhtbW0sIHdoYXQgYWJvdXQgdXNlcnNwYWNlPyBBcmUgdGhlcmUgYW55IHVzZXJzcGFjZSB0b29scyB0aGF0IGNvdWxkIGluamVjdCBRTUkgbWVzc2FnZXMgdG8gc2ltdWxhdGUgZmlybXdhcmUgcmVhZGluZXNzPyBOb3csIFFNSSBtZXNzYWdlcyBhcmUgZXhjaGFuZ2VkIHZpYSBRUlRSLCBvciBRdWFsY29tbSBJUEMgUm91dGVyLiBDYW4gU3l6a2FsbGVyIGluamVjdCBRUlRSIG1lc3NhZ2VzIHRvIHNpbXVsYXRlIHRoZSBmaXJtd2FyZT8KCkFoLCB5ZXMsIFN5emthbGxlciAqZG9lcyogc3VwcG9ydCBBRl9RSVBDUlRSIHNvY2tldHMuIFRoYXQmIzM5O3MgYSBwcm9taXNpbmcgbGVhZC4gTGV0JiMzOTtzIHNlZSBpZiB0aGUgZHJpdmVyIGlzIGFjdHVhbGx5IGxpc3RlbmluZyBvbiBRUlRSLiBJIG5lZWQgdG8gaW52ZXN0aWdhdGUgaWYgdGhlcmUmIzM5O3MgYW55IGFjdGl2ZSBjb21tdW5pY2F0aW9uIHdpdGggdGhlIFFSVFIgYnVzLiBJZiBzbywgdGhlcmUgKm1pZ2h0KiBiZSBhIHdheSB0byBtYW5pcHVsYXRlIHRoaXMgYW5kIHRyaWdnZXIgdGhlIHJlbGV2YW50IGNvZGUgcGF0aHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI5IDA4OjE1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3FtaV9oYW5kbGVfaW5pdCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9xbWkuYz00MDM4PWludCBhdGgxMmtfcW1pX2luaXRfc2VydmljZShzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcW1pLmMtNDA0Ni1cdGFiLVx1MDAzZXFtaS50YXJnZXRfbWVtX21vZGUgPSBhYi1cdTAwM2V0YXJnZXRfbWVtX21vZGU7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3FtaS5jOjQwNDc6XHRyZXQgPSBxbWlfaGFuZGxlX2luaXQoXHUwMDI2YWItXHUwMDNlcW1pLmhhbmRsZSwgQVRIMTJLX1FNSV9SRVNQX0xFTl9NQVgsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3FtaS5jLTQwNDgtXHRcdFx0ICAgICAgXHUwMDI2YXRoMTJrX3FtaV9vcHMsIGF0aDEya19xbWlfbXNnX2hhbmRsZXJzKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjkgMDg6MTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTkzOTgKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiA5MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipJbnZlc3RpZ2F0aW5nIFFNSSBDb21tdW5pY2F0aW9uIGluIGF0aDEyayoqCgpPa2F5LCBzbyBgYXRoMTJrYCB1dGlsaXplcyBgcW1pX2hhbmRsZV9pbml0YCBmb3IgaXRzIFFNSSBoYW5kbGUgaW5pdGlhbGl6YXRpb24uIFRoYXQmIzM5O3MgdGhlIHN0YXJ0aW5nIHBvaW50LiBOb3csIEkmIzM5O20gd29uZGVyaW5nLi4uIENvdWxkIGEgdXNlcnNwYWNlIHByb2Nlc3MgcG90ZW50aWFsbHkgc3Bvb2YgdGhlIGZpcm13YXJlJiMzOTtzIHJvbGUgYnkgc2VuZGluZyBRTUkgbWVzc2FnZXMgZGlyZWN0bHkgdG8gYGF0aDEya2A/IEl0JiMzOTtzIGEgdmFsaWQgcXVlc3Rpb24sIGV4cGxvcmluZyB0aGUgcG90ZW50aWFsIGZvciBtYW5pcHVsYXRpbmcgdGhlIFFNSSBpbnRlcmFjdGlvbi4KClJpZ2h0LCB0aGUgZHJpdmVyIHJlZ2lzdGVycyBhIFFNSSBjbGllbnQuIFRoaXMgaXMga2V5LiBIb2xkIG9uIGEgc2Vjb25kLi4uIHRoZSBkcml2ZXIgKnJlZ2lzdGVycyogYSBjbGllbnQgKmFuZCogc2VuZHMgcmVxdWVzdHMgdG8gdGhlIGZpcm13YXJlIOKAkyB3aGljaCwgaW1wb3J0YW50bHksICppcyogYSBRTUkgc2VydmljZS4gVGhhdCBjb25uZWN0aW9uIGlzIGZ1bmRhbWVudGFsIHRvIHRoZSBkcml2ZXImIzM5O3Mgb3BlcmF0aW9uLgoKTGV0JiMzOTtzIGRpZyBpbnRvIGBxbWlfYWRkX2xvb2t1cGAuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGV4YWN0bHkgaG93IHRoZSBkcml2ZXIgaXMgbGlua2luZyB0aGUgY2xpZW50IGFuZCBzZXJ2aWNlLiBUaGlzIHdpbGwgdGVsbCBtZSBtb3JlIGFib3V0IGlmIHVzZXJzcGFjZSBjYW4gc3Bvb2YgdGhlIG1lc3NhZ2VzIG9yIGlmIHRoZXJlIGlzIGZ1cnRoZXIgdmFsaWRhdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjkgMDg6MTU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cW1pX2FkZF9sb29rdXAmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcW1pLmM9NDAzOD1pbnQgYXRoMTJrX3FtaV9pbml0X3NlcnZpY2Uoc3RydWN0IGF0aDEya19iYXNlICphYilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3FtaS5jLTQwNjMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3FtaS5jOjQwNjQ6XHRyZXQgPSBxbWlfYWRkX2xvb2t1cChcdTAwMjZhYi1cdTAwM2VxbWkuaGFuZGxlLCBRTUlfU0VSVklDRV9JRF9XTEZXLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9xbWkuYy00MDY1LVx0XHRcdCAgICAgQVRIMTJLX1FNSV9XTEZXX1NFUlZJQ0VfVkVSU19WMDEsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI5IDA4OjE1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE5OTEzCgkJCQkJCQlvdXRwdXQ6IDEyOAoJCQkJCQkJdGhvdWdodHM6IDU1NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXNpcyBvZiB0aGUgYGF0aDEya2AgRHJpdmVyIENvZGUgYW5kIEZ1enppbmcgRmVhc2liaWxpdHkqKgoKT2theSwgc28gSSYjMzk7dmUgYmVlbiBsb29raW5nIGF0IHRoaXMgY29kZSBhbmQgaG93IHdlIGNhbiBlZmZlY3RpdmVseSBmdXp6IGl0LiBNeSBpbml0aWFsIHRob3VnaHQgcHJvY2VzcyBpcyB0aGlzOiB0aGUgZHJpdmVyIGlzIGNsZWFybHkgdXNpbmcgdGhlIGBRTUlfU0VSVklDRV9JRF9XTEZXYCBzZXJ2aWNlLCB3aGljaCBtZWFucyBpdCYjMzk7cyB0YWxraW5nIHRvIGZpcm13YXJlLiBBIHVzZXJzcGFjZSBwcm9jZXNzICpjb3VsZCogYWN0IGFzIHRoaXMgZmlybXdhcmUgYnkgY3JlYXRpbmcgYSBRUlRSIHNvY2tldCBhbmQgcmVnaXN0ZXJpbmcgdGhlIHNlcnZpY2UgSUQuIEkga25vdyBTeXprYWxsZXIgY2FuIGdlbmVyYXRlIGBBRl9RSVBDUlRSYCBzb2NrZXRzLCBidXQgdGhlIG1pbGxpb24tZG9sbGFyIHF1ZXN0aW9uIGlzLCBjYW4gU3l6a2FsbGVyIG1lYW5pbmdmdWxseSBlbXVsYXRlIHRoZSAqY29tcGxleCogYFFNSV9TRVJWSUNFX0lEX1dMRldgIHNlcnZpY2UgcmVxdWlyZWQgdG8gZ2V0IHRoZSBgYXRoMTJrYCBkcml2ZXIgdXAgYW5kIHJ1bm5pbmc/CgpUaGUgYW5zd2VyLCBhcyBmYXIgYXMgSSBjYW4gc2VlLCBpcyBuby4gU3l6a2FsbGVyIGRvZXNuJiMzOTt0IGhhdmUgYSBkZWRpY2F0ZWQgZW11bGF0b3IgZm9yIGBhdGgxMmtgIGZpcm13YXJlLiBJdCB3b3VsZCBiZSBhbiBpbmNyZWRpYmx5IGRpZmZpY3VsdCB0YXNrIHRvIHJhbmRvbWx5IGdlbmVyYXRlIHRoZSAqY29ycmVjdCogc2VxdWVuY2Ugb2YgUU1JIHJlc3BvbnNlcyBuZWVkZWQgdG8gcGFzcyB0aGUgZmlybXdhcmUgaW5pdGlhbGl6YXRpb24uIFRoaXMgaW5pdGlhbGl6YXRpb24gaXMgZmFyIGZyb20gc2ltcGxlOyBpdCBpbnZvbHZlcyBtdWx0aXBsZSBzdGVwczogc2VydmljZSBsb29rdXAsIGNvbm5lY3Rpb24sIHNlbmRpbmcgYW5kIHJlY2VpdmluZyBhIHdob2xlIGJ1bmNoIG9mIFFNSSBtZXNzYWdlcyBsaWtlIGBXTEZXX0lORF9SRUdJU1RFUl9SRVFfTVNHX1YwMWAsIGBXTEZXX0hPU1RfQ0FQX1JFUV9NU0dfVjAxYCwgYFdMRldfQ0FMX1JFUE9SVF9SRVFfTVNHX1YwMWAsIHBsdXMgZmlybXdhcmUgYW5kIEJERiBkb3dubG9hZHMsIFdNSSBpbml0aWFsaXphdGlvbiwgYW5kIGEgJiMzNDtzZXJ2aWNlIHJlYWR5JiMzNDsgZXZlbnQuCgpSZWFsaXN0aWNhbGx5LCBpdCYjMzk7cyBwcmFjdGljYWxseSBpbXBvc3NpYmxlIGZvciBhIGZ1enplciB0byBzdHVtYmxlIHVwb24gdGhlIHJpZ2h0IHNlcXVlbmNlIG9mIGNvbXBsZXggUU1JIGFuZCBXTUkgbWVzc2FnZXMgdG8gZXZlbiByZWFjaCB0aGUgbW9kaWZpZWQgY29kZSB3aXRob3V0IGEgZGVkaWNhdGVkIGVtdWxhdG9yIHRoYXQgZnVsbHkgdW5kZXJzdGFuZHMgdGhlIHByb3RvY29sLiBUaGVyZWZvcmUsIGdpdmVuIHRoZSBsZXZlbCBvZiBjb21wbGV4aXR5LCB0aGUgY29kZSBpcyBhbG1vc3QgY2VydGFpbmx5IHVucmVhY2hhYmxlIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQg4oCTIGFuZCB0aGF0JiMzOTtzIHByZWNpc2VseSB3aGF0IFN5emthbGxlciBpcy4gU28sIG15IGluaXRpYWwgYXNzZXNzbWVudCB3b3VsZCBiZSB0byBtYXJrIHRoaXMgYXMgYFdvcnRoRnV6emluZz1mYWxzZWAuIFRoZSByZWFzb25pbmcgaXMgdGhhdCB0aGUgbW9kaWZpZWQgY29kZSwgd2hpbGUgYW4gaW50ZXJlc3RpbmcgY2hhbmdlLCBpcyBhIHBhcnQgb2YgdGhlIGBhdGgxMmtgIGRyaXZlciYjMzk7cyBXTUkgY29tbXVuaWNhdGlvbiB3aXRoIHRoZSBmaXJtd2FyZSwgYW5kIGl0JiMzOTtzIHNpbXBseSB1bnJlYWNoYWJsZSB3aXRob3V0IGVpdGhlciByZWFsIGhhcmR3YXJlIG9yIGEgdmVyeSBjb21wbGV4IGZpcm13YXJlIGVtdWxhdG9yLgoKTm93LCBsZXQgbWUgZG91YmxlLWNoZWNrIHRoZSBwYXRjaCBpdHNlbGYuIEl0IGxvb2tzIGxpa2UgaXQmIzM5O3MganVzdCBjaGFuZ2luZyBgdTMyYCB0byBgX19sZTMyYCBpbiBgc3RydWN0IGF0aDEya19iYW5kX2NhcGAgYW5kIGBzdHJ1Y3QgYXRoMTJrX3dtaV9wZWVyX2Fzc29jX2FyZ2AgYW5kIHN3YXBwaW5nIGB1MzJfZ2V0X2JpdHNgIHRvIGBsZTMyX2dldF9iaXRzYC4gQWhhISBJdCYjMzk7cyBhIHNwYXJzZS9lbmRpYW5uZXNzIGZpeCEgTm8gZnVuY3Rpb25hbCBjaGFuZ2UuLi4gb3IgaXMgaXQ/IFdhaXQsIGlmIGl0JiMzOTtzIGFuIGVuZGlhbm5lc3MgZml4LCB0aGF0ICppcyogYSBmdW5jdGlvbmFsIGNoYW5nZSBvbiBiaWctZW5kaWFuIGFyY2hpdGVjdHVyZXMuCgpUaGUgcXVlc3Rpb24gdGhlbiBiZWNvbWVzLCBhcmUgYGF0aDEya2AgYW5kIHRoZSBoYXJkd2FyZSBpdCBzdXBwb3J0cyBldmVyIHVzZWQgb24gYmlnLWVuZGlhbiBtYWNoaW5lcz8gSXQmIzM5O3MgYSBQQ0kvQUhCIGRyaXZlciBmb3IgUXVhbGNvbW0gV2ktRmkgNywgc28gaXQmIzM5O3MgKnBvc3NpYmxlKiBidXQgaGlnaGx5IHVubGlrZWx5LiBIb3dldmVyLCBldmVuICppZiogdGhpcyBjaGFuZ2UgKmRvZXMqIGFmZmVjdCBiaWctZW5kaWFuIHN5c3RlbXMsIHRoZSBpbmFjY2Vzc2liaWxpdHkgdGhyb3VnaCBzeXprYWxsZXIgcmVtYWlucyB0aGUgY29yZSBpc3N1ZS4gSSYjMzk7bSBzdGlsbCBub3QgYWJsZSB0byBjb25zdHJ1Y3QgYSBtZWFuaW5nZnVsIGZ1enplciB0aGF0IHdvdWxkIHVuY292ZXIgYSBwb3RlbnRpYWwgYnVnLiBUaGVyZWZvcmUsIHRoZSBjb25jbHVzaW9uIHRoYXQgYFdvcnRoRnV6emluZz1mYWxzZWAgaXMgdGhlIHJpZ2h0IG9uZSwgcmVnYXJkbGVzcyBvZiB0aGUgZW5kaWFubmVzcyBjaGFuZ2UsIGdpdmVuIGl0JiMzOTtzIHN0aWxsIGZ1bmN0aW9uYWxseSB1bnJlYWNoYWJsZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjkgMDg6MTU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBlbmRpYW5uZXNzIGlzc3VlcyAoc3BhcnNlIHdhcm5pbmdzKSBpbiB0aGUgYXRoMTJrIGRyaXZlciYjMzk7cyBXTUkgKFdpcmVsZXNzIE1vZHVsZSBJbnRlcmZhY2UpIGNvbW11bmljYXRpb24gd2l0aCB0aGUgZmlybXdhcmUuIFRoaXMgY29kZSBpcyB1bnJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSBiZWNhdXNlIGl0IHJlcXVpcmVzIGFjdHVhbCBRdWFsY29tbSBXaS1GaSA3IGhhcmR3YXJlIGFuZCBpdHMgcHJvcHJpZXRhcnkgZmlybXdhcmUgdG8gaW5pdGlhbGl6ZSB0aGUgZGV2aWNlIGFuZCByZWFjaCB0aGUgV01JIG1lc3NhZ2UgcGFyc2luZy9zZW5kaW5nIGxvZ2ljLiBTeXprYWxsZXIgY2Fubm90IGVtdWxhdGUgdGhlIGNvbXBsZXggUU1JL1dNSSBmaXJtd2FyZSBpbnRlcmZhY2UgcmVxdWlyZWQgdG8gdHJpZ2dlciB0aGVzZSBjb2RlIHBhdGhzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgZW5kaWFubmVzcyBpc3N1ZXMgKHNwYXJzZSB3YXJuaW5ncykgaW4gdGhlIGF0aDEyayBkcml2ZXImIzM5O3MgV01JIChXaXJlbGVzcyBNb2R1bGUgSW50ZXJmYWNlKSBjb21tdW5pY2F0aW9uIHdpdGggdGhlIGZpcm13YXJlLiBUaGlzIGNvZGUgaXMgdW5yZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUgYmVjYXVzZSBpdCByZXF1aXJlcyBhY3R1YWwgUXVhbGNvbW0gV2ktRmkgNyBoYXJkd2FyZSBhbmQgaXRzIHByb3ByaWV0YXJ5IGZpcm13YXJlIHRvIGluaXRpYWxpemUgdGhlIGRldmljZSBhbmQgcmVhY2ggdGhlIFdNSSBtZXNzYWdlIHBhcnNpbmcvc2VuZGluZyBsb2dpYy4gU3l6a2FsbGVyIGNhbm5vdCBlbXVsYXRlIHRoZSBjb21wbGV4IFFNSS9XTUkgZmlybXdhcmUgaW50ZXJmYWNlIHJlcXVpcmVkIHRvIHRyaWdnZXIgdGhlc2UgY29kZSBwYXRocy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNi0yOVQwODoxNDowNy40NTY2OTg0NjNaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4MDIyNDQ1MTQxOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgZW5kaWFubmVzcyBpc3N1ZXMgKHNwYXJzZSB3YXJuaW5ncykgaW4gdGhlIGF0aDEyayBkcml2ZXIncyBXTUkgKFdpcmVsZXNzIE1vZHVsZSBJbnRlcmZhY2UpIGNvbW11bmljYXRpb24gd2l0aCB0aGUgZmlybXdhcmUuIFRoaXMgY29kZSBpcyB1bnJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSBiZWNhdXNlIGl0IHJlcXVpcmVzIGFjdHVhbCBRdWFsY29tbSBXaS1GaSA3IGhhcmR3YXJlIGFuZCBpdHMgcHJvcHJpZXRhcnkgZmlybXdhcmUgdG8gaW5pdGlhbGl6ZSB0aGUgZGV2aWNlIGFuZCByZWFjaCB0aGUgV01JIG1lc3NhZ2UgcGFyc2luZy9zZW5kaW5nIGxvZ2ljLiBTeXprYWxsZXIgY2Fubm90IGVtdWxhdGUgdGhlIGNvbXBsZXggUU1JL1dNSSBmaXJtd2FyZSBpbnRlcmZhY2UgcmVxdWlyZWQgdG8gdHJpZ2dlciB0aGVzZSBjb2RlIHBhdGhzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjlUMDg6MTQ6MDcuNDU2NzA2ODQzWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3OTI0MzM3NzQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCAzYmM2YTQwYjdiNzlmY2MxODlhYTY0OGJkNjgyNmFjN2VkNDJiMDk3XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBNb24gSnVuIDI5IDA4OjE0OjA2IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmhcXG5pbmRleCBmYzUxMjdiNWMxYTM3Zi4uMTNmYTZlNTRkMjc5ZDIgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmhcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuaFxcbkBAIC04MDgsMTMgKzgwOCwxMyBAQCBzdHJ1Y3QgYXRoMTJrX2JhbmRfY2FwIHtcXG4gXFx0dTMyIHBoeV9pZDtcXG4gXFx0dTMyIG1heF9id19zdXBwb3J0ZWQ7XFxuIFxcdHUzMiBodF9jYXBfaW5mbztcXG4tXFx0dTMyIGhlX2NhcF9pbmZvWzJdO1xcbitcXHRfX2xlMzIgaGVfY2FwX2luZm9bMl07XFxuIFxcdHUzMiBoZV9tY3M7XFxuLVxcdHUzMiBoZV9jYXBfcGh5X2luZm9bUFNPQ19IT1NUX01BWF9QSFlfU0laRV07XFxuK1xcdF9fbGUzMiBoZV9jYXBfcGh5X2luZm9bUFNPQ19IT1NUX01BWF9QSFlfU0laRV07XFxuIFxcdHN0cnVjdCBhdGgxMmtfd21pX3BwZV90aHJlc2hvbGRfYXJnIGhlX3BwZXQ7XFxuIFxcdHUxNiBoZV82Z2h6X2NhcGE7XFxuLVxcdHUzMiBlaHRfY2FwX21hY19pbmZvW1dNSV9NQVhfRUhUQ0FQX01BQ19TSVpFXTtcXG4tXFx0dTMyIGVodF9jYXBfcGh5X2luZm9bV01JX01BWF9FSFRDQVBfUEhZX1NJWkVdO1xcbitcXHRfX2xlMzIgZWh0X2NhcF9tYWNfaW5mb1tXTUlfTUFYX0VIVENBUF9NQUNfU0laRV07XFxuK1xcdF9fbGUzMiBlaHRfY2FwX3BoeV9pbmZvW1dNSV9NQVhfRUhUQ0FQX1BIWV9TSVpFXTtcXG4gXFx0dTMyIGVodF9tY3NfMjBfb25seTtcXG4gXFx0dTMyIGVodF9tY3NfODA7XFxuIFxcdHUzMiBlaHRfbWNzXzE2MDtcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuY1xcbmluZGV4IGQxN2Q0YThmMWNiN2QzLi42YjBkMDc0NDhlNWQ3MiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuY1xcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jXFxuQEAgLTQxMCw4ICs0MTAsOCBAQCBzdGF0aWMgYm9vbCBhdGgxMmtfaGVfc3VwcG9ydHNfZXh0cmFfbWNzKHN0cnVjdCBhdGgxMmsgKmFyLCBpbnQgZnJlcSlcXG4gXFx0ZWxzZVxcbiBcXHRcXHRjYXBfYmFuZCA9IFxcdTAwMjZjYXAtXFx1MDAzZWJhbmRbTkw4MDIxMV9CQU5EXzZHSFpdO1xcbiBcXG4tXFx0ZXh0cmFfbWNzX3N1cHBvcnRlZCA9IHUzMl9nZXRfYml0cyhjYXBfYmFuZC1cXHUwMDNlaGVfY2FwX2luZm9bMV0sXFxuLVxcdFxcdFxcdFxcdFxcdCAgIEhFX0VYVFJBX01DU19TVVBQT1JUKTtcXG4rXFx0ZXh0cmFfbWNzX3N1cHBvcnRlZCA9IGxlMzJfZ2V0X2JpdHMoY2FwX2JhbmQtXFx1MDAzZWhlX2NhcF9pbmZvWzFdLFxcbitcXHRcXHRcXHRcXHRcXHQgICAgSEVfRVhUUkFfTUNTX1NVUFBPUlQpO1xcbiBcXHRyZXR1cm4gZXh0cmFfbWNzX3N1cHBvcnRlZDtcXG4gfVxcbiBcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmNcXG5pbmRleCA4NGEzMWI5NTNkYjgxYS4uMzlmOGNhNzM2OGUzMTcgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuY1xcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmNcXG5AQCAtNTQ1LDEyICs1NDUsMTEgQEAgYXRoMTJrX3B1bGxfbWFjX3BoeV9jYXBfc3ZjX3JlYWR5X2V4dChzdHJ1Y3QgYXRoMTJrX3dtaV9wZGV2ICp3bWlfaGFuZGxlLFxcbiBcXHRcXHRjYXBfYmFuZC1cXHUwMDNlcGh5X2lkID0gbGUzMl90b19jcHUobWFjX2NhcHMtXFx1MDAzZXBoeV9pZCk7XFxuIFxcdFxcdGNhcF9iYW5kLVxcdTAwM2VtYXhfYndfc3VwcG9ydGVkID0gbGUzMl90b19jcHUobWFjX2NhcHMtXFx1MDAzZW1heF9id19zdXBwb3J0ZWRfMmcpO1xcbiBcXHRcXHRjYXBfYmFuZC1cXHUwMDNlaHRfY2FwX2luZm8gPSBsZTMyX3RvX2NwdShtYWNfY2Fwcy1cXHUwMDNlaHRfY2FwX2luZm9fMmcpO1xcbi1cXHRcXHRjYXBfYmFuZC1cXHUwMDNlaGVfY2FwX2luZm9bMF0gPSBsZTMyX3RvX2NwdShtYWNfY2Fwcy1cXHUwMDNlaGVfY2FwX2luZm9fMmcpO1xcbi1cXHRcXHRjYXBfYmFuZC1cXHUwMDNlaGVfY2FwX2luZm9bMV0gPSBsZTMyX3RvX2NwdShtYWNfY2Fwcy1cXHUwMDNlaGVfY2FwX2luZm9fMmdfZXh0KTtcXG4rXFx0XFx0Y2FwX2JhbmQtXFx1MDAzZWhlX2NhcF9pbmZvWzBdID0gbWFjX2NhcHMtXFx1MDAzZWhlX2NhcF9pbmZvXzJnO1xcbitcXHRcXHRjYXBfYmFuZC1cXHUwMDNlaGVfY2FwX2luZm9bMV0gPSBtYWNfY2Fwcy1cXHUwMDNlaGVfY2FwX2luZm9fMmdfZXh0O1xcbiBcXHRcXHRjYXBfYmFuZC1cXHUwMDNlaGVfbWNzID0gbGUzMl90b19jcHUobWFjX2NhcHMtXFx1MDAzZWhlX3N1cHBfbWNzXzJnKTtcXG4tXFx0XFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIFdNSV9NQVhfSEVDQVBfUEhZX1NJWkU7IGkrKylcXG4tXFx0XFx0XFx0Y2FwX2JhbmQtXFx1MDAzZWhlX2NhcF9waHlfaW5mb1tpXSA9XFxuLVxcdFxcdFxcdFxcdGxlMzJfdG9fY3B1KG1hY19jYXBzLVxcdTAwM2VoZV9jYXBfcGh5X2luZm9fMmdbaV0pO1xcbitcXHRcXHRtZW1jcHkoXFx1MDAyNmNhcF9iYW5kLVxcdTAwM2VoZV9jYXBfcGh5X2luZm8sIFxcdTAwMjZtYWNfY2Fwcy1cXHUwMDNlaGVfY2FwX3BoeV9pbmZvXzJnLFxcbitcXHRcXHQgICAgICAgc2l6ZW9mKHUzMikgKiBXTUlfTUFYX0hFQ0FQX1BIWV9TSVpFKTtcXG4gXFxuIFxcdFxcdGNhcF9iYW5kLVxcdTAwM2VoZV9wcGV0Lm51bXNzX20xID0gbGUzMl90b19jcHUobWFjX2NhcHMtXFx1MDAzZWhlX3BwZXQyZy5udW1zc19tMSk7XFxuIFxcdFxcdGNhcF9iYW5kLVxcdTAwM2VoZV9wcGV0LnJ1X2JpdF9tYXNrID0gbGUzMl90b19jcHUobWFjX2NhcHMtXFx1MDAzZWhlX3BwZXQyZy5ydV9pbmZvKTtcXG5AQCAtNTY2LDEyICs1NjUsMTEgQEAgYXRoMTJrX3B1bGxfbWFjX3BoeV9jYXBfc3ZjX3JlYWR5X2V4dChzdHJ1Y3QgYXRoMTJrX3dtaV9wZGV2ICp3bWlfaGFuZGxlLFxcbiBcXHRcXHRjYXBfYmFuZC1cXHUwMDNlbWF4X2J3X3N1cHBvcnRlZCA9XFxuIFxcdFxcdFxcdGxlMzJfdG9fY3B1KG1hY19jYXBzLVxcdTAwM2VtYXhfYndfc3VwcG9ydGVkXzVnKTtcXG4gXFx0XFx0Y2FwX2JhbmQtXFx1MDAzZWh0X2NhcF9pbmZvID0gbGUzMl90b19jcHUobWFjX2NhcHMtXFx1MDAzZWh0X2NhcF9pbmZvXzVnKTtcXG4tXFx0XFx0Y2FwX2JhbmQtXFx1MDAzZWhlX2NhcF9pbmZvWzBdID0gbGUzMl90b19jcHUobWFjX2NhcHMtXFx1MDAzZWhlX2NhcF9pbmZvXzVnKTtcXG4tXFx0XFx0Y2FwX2JhbmQtXFx1MDAzZWhlX2NhcF9pbmZvWzFdID0gbGUzMl90b19jcHUobWFjX2NhcHMtXFx1MDAzZWhlX2NhcF9pbmZvXzVnX2V4dCk7XFxuK1xcdFxcdGNhcF9iYW5kLVxcdTAwM2VoZV9jYXBfaW5mb1swXSA9IG1hY19jYXBzLVxcdTAwM2VoZV9jYXBfaW5mb181ZztcXG4rXFx0XFx0Y2FwX2JhbmQtXFx1MDAzZWhlX2NhcF9pbmZvWzFdID0gbWFjX2NhcHMtXFx1MDAzZWhlX2NhcF9pbmZvXzVnX2V4dDtcXG4gXFx0XFx0Y2FwX2JhbmQtXFx1MDAzZWhlX21jcyA9IGxlMzJfdG9fY3B1KG1hY19jYXBzLVxcdTAwM2VoZV9zdXBwX21jc181Zyk7XFxuLVxcdFxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBXTUlfTUFYX0hFQ0FQX1BIWV9TSVpFOyBpKyspXFxuLVxcdFxcdFxcdGNhcF9iYW5kLVxcdTAwM2VoZV9jYXBfcGh5X2luZm9baV0gPVxcbi1cXHRcXHRcXHRcXHRsZTMyX3RvX2NwdShtYWNfY2Fwcy1cXHUwMDNlaGVfY2FwX3BoeV9pbmZvXzVnW2ldKTtcXG4rXFx0XFx0bWVtY3B5KFxcdTAwMjZjYXBfYmFuZC1cXHUwMDNlaGVfY2FwX3BoeV9pbmZvLCBcXHUwMDI2bWFjX2NhcHMtXFx1MDAzZWhlX2NhcF9waHlfaW5mb181ZyxcXG4rXFx0XFx0ICAgICAgIHNpemVvZih1MzIpICogV01JX01BWF9IRUNBUF9QSFlfU0laRSk7XFxuIFxcbiBcXHRcXHRjYXBfYmFuZC1cXHUwMDNlaGVfcHBldC5udW1zc19tMSA9IGxlMzJfdG9fY3B1KG1hY19jYXBzLVxcdTAwM2VoZV9wcGV0NWcubnVtc3NfbTEpO1xcbiBcXHRcXHRjYXBfYmFuZC1cXHUwMDNlaGVfcHBldC5ydV9iaXRfbWFzayA9IGxlMzJfdG9fY3B1KG1hY19jYXBzLVxcdTAwM2VoZV9wcGV0NWcucnVfaW5mbyk7XFxuQEAgLTU4NCwxMiArNTgyLDExIEBAIGF0aDEya19wdWxsX21hY19waHlfY2FwX3N2Y19yZWFkeV9leHQoc3RydWN0IGF0aDEya193bWlfcGRldiAqd21pX2hhbmRsZSxcXG4gXFx0XFx0Y2FwX2JhbmQtXFx1MDAzZW1heF9id19zdXBwb3J0ZWQgPVxcbiBcXHRcXHRcXHRsZTMyX3RvX2NwdShtYWNfY2Fwcy1cXHUwMDNlbWF4X2J3X3N1cHBvcnRlZF81Zyk7XFxuIFxcdFxcdGNhcF9iYW5kLVxcdTAwM2VodF9jYXBfaW5mbyA9IGxlMzJfdG9fY3B1KG1hY19jYXBzLVxcdTAwM2VodF9jYXBfaW5mb181Zyk7XFxuLVxcdFxcdGNhcF9iYW5kLVxcdTAwM2VoZV9jYXBfaW5mb1swXSA9IGxlMzJfdG9fY3B1KG1hY19jYXBzLVxcdTAwM2VoZV9jYXBfaW5mb181Zyk7XFxuLVxcdFxcdGNhcF9iYW5kLVxcdTAwM2VoZV9jYXBfaW5mb1sxXSA9IGxlMzJfdG9fY3B1KG1hY19jYXBzLVxcdTAwM2VoZV9jYXBfaW5mb181Z19leHQpO1xcbitcXHRcXHRjYXBfYmFuZC1cXHUwMDNlaGVfY2FwX2luZm9bMF0gPSBtYWNfY2Fwcy1cXHUwMDNlaGVfY2FwX2luZm9fNWc7XFxuK1xcdFxcdGNhcF9iYW5kLVxcdTAwM2VoZV9jYXBfaW5mb1sxXSA9IG1hY19jYXBzLVxcdTAwM2VoZV9jYXBfaW5mb181Z19leHQ7XFxuIFxcdFxcdGNhcF9iYW5kLVxcdTAwM2VoZV9tY3MgPSBsZTMyX3RvX2NwdShtYWNfY2Fwcy1cXHUwMDNlaGVfc3VwcF9tY3NfNWcpO1xcbi1cXHRcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgV01JX01BWF9IRUNBUF9QSFlfU0laRTsgaSsrKVxcbi1cXHRcXHRcXHRjYXBfYmFuZC1cXHUwMDNlaGVfY2FwX3BoeV9pbmZvW2ldID1cXG4tXFx0XFx0XFx0XFx0bGUzMl90b19jcHUobWFjX2NhcHMtXFx1MDAzZWhlX2NhcF9waHlfaW5mb181Z1tpXSk7XFxuK1xcdFxcdG1lbWNweShcXHUwMDI2Y2FwX2JhbmQtXFx1MDAzZWhlX2NhcF9waHlfaW5mbywgXFx1MDAyNm1hY19jYXBzLVxcdTAwM2VoZV9jYXBfcGh5X2luZm9fNWcsXFxuK1xcdFxcdCAgICAgICBzaXplb2YodTMyKSAqIFdNSV9NQVhfSEVDQVBfUEhZX1NJWkUpO1xcbiBcXG4gXFx0XFx0Y2FwX2JhbmQtXFx1MDAzZWhlX3BwZXQubnVtc3NfbTEgPSBsZTMyX3RvX2NwdShtYWNfY2Fwcy1cXHUwMDNlaGVfcHBldDVnLm51bXNzX20xKTtcXG4gXFx0XFx0Y2FwX2JhbmQtXFx1MDAzZWhlX3BwZXQucnVfYml0X21hc2sgPSBsZTMyX3RvX2NwdShtYWNfY2Fwcy1cXHUwMDNlaGVfcHBldDVnLnJ1X2luZm8pO1xcbkBAIC0yMjg0LDE0ICsyMjgxLDEzIEBAIGludCBhdGgxMmtfd21pX3NlbmRfcGVlcl9hc3NvY19jbWQoc3RydWN0IGF0aDEyayAqYXIsXFxuIFxcdGNtZC1cXHUwMDNlcGVlcl9waHltb2RlID0gY3B1X3RvX2xlMzIoYXJnLVxcdTAwM2VwZWVyX3BoeW1vZGUpO1xcbiBcXG4gXFx0LyogVXBkYXRlIDExYXggY2FwYWJpbGl0aWVzICovXFxuLVxcdGNtZC1cXHUwMDNlcGVlcl9oZV9jYXBfaW5mbyA9IGNwdV90b19sZTMyKGFyZy1cXHUwMDNlcGVlcl9oZV9jYXBfbWFjaW5mb1swXSk7XFxuLVxcdGNtZC1cXHUwMDNlcGVlcl9oZV9jYXBfaW5mb19leHQgPSBjcHVfdG9fbGUzMihhcmctXFx1MDAzZXBlZXJfaGVfY2FwX21hY2luZm9bMV0pO1xcbitcXHRjbWQtXFx1MDAzZXBlZXJfaGVfY2FwX2luZm8gPSBhcmctXFx1MDAzZXBlZXJfaGVfY2FwX21hY2luZm9bMF07XFxuK1xcdGNtZC1cXHUwMDNlcGVlcl9oZV9jYXBfaW5mb19leHQgPSBhcmctXFx1MDAzZXBlZXJfaGVfY2FwX21hY2luZm9bMV07XFxuIFxcdGNtZC1cXHUwMDNlcGVlcl9oZV9jYXBfaW5mb19pbnRlcm5hbCA9IGNwdV90b19sZTMyKGFyZy1cXHUwMDNlcGVlcl9oZV9jYXBfbWFjaW5mb19pbnRlcm5hbCk7XFxuIFxcdGNtZC1cXHUwMDNlcGVlcl9oZV9jYXBzXzZnaHogPSBjcHVfdG9fbGUzMihhcmctXFx1MDAzZXBlZXJfaGVfY2Fwc182Z2h6KTtcXG4gXFx0Y21kLVxcdTAwM2VwZWVyX2hlX29wcyA9IGNwdV90b19sZTMyKGFyZy1cXHUwMDNlcGVlcl9oZV9vcHMpO1xcbi1cXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgV01JX01BWF9IRUNBUF9QSFlfU0laRTsgaSsrKVxcbi1cXHRcXHRjbWQtXFx1MDAzZXBlZXJfaGVfY2FwX3BoeVtpXSA9XFxuLVxcdFxcdFxcdGNwdV90b19sZTMyKGFyZy1cXHUwMDNlcGVlcl9oZV9jYXBfcGh5aW5mb1tpXSk7XFxuK1xcdG1lbWNweShjbWQtXFx1MDAzZXBlZXJfaGVfY2FwX3BoeSwgYXJnLVxcdTAwM2VwZWVyX2hlX2NhcF9waHlpbmZvLFxcbitcXHQgICAgICAgc2l6ZW9mKHUzMikgKiBXTUlfTUFYX0hFQ0FQX1BIWV9TSVpFKTtcXG4gXFx0Y21kLVxcdTAwM2VwZWVyX3BwZXQubnVtc3NfbTEgPSBjcHVfdG9fbGUzMihhcmctXFx1MDAzZXBlZXJfcHBldC5udW1zc19tMSk7XFxuIFxcdGNtZC1cXHUwMDNlcGVlcl9wcGV0LnJ1X2luZm8gPSBjcHVfdG9fbGUzMihhcmctXFx1MDAzZXBlZXJfcHBldC5ydV9iaXRfbWFzayk7XFxuIFxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBXTUlfTUFYX05VTV9TUzsgaSsrKVxcbkBAIC01MTU4LDE3ICs1MTU0LDE3IEBAIHN0YXRpYyB2b2lkIGF0aDEya193bWlfZWh0X2NhcHNfcGFyc2Uoc3RydWN0IGF0aDEya19wZGV2ICpwZGV2LCB1MzIgYmFuZCxcXG4gXFx0dTggaTtcXG4gXFxuIFxcdGlmIChiYW5kID09IE5MODAyMTFfQkFORF82R0haKVxcbi1cXHRcXHRzdXBwb3J0XzMyMG1oeiA9IGNhcF9iYW5kLVxcdTAwM2VlaHRfY2FwX3BoeV9pbmZvWzBdIFxcdTAwMjZcXG4tXFx0XFx0XFx0XFx0XFx0SUVFRTgwMjExX0VIVF9QSFlfQ0FQMF8zMjBNSFpfSU5fNkdIWjtcXG4rXFx0XFx0c3VwcG9ydF8zMjBtaHogPSBsZTMyX3RvX2NwdShjYXBfYmFuZC1cXHUwMDNlZWh0X2NhcF9waHlfaW5mb1swXSkgXFx1MDAyNlxcbitcXHRcXHRcXHRcXHQgSUVFRTgwMjExX0VIVF9QSFlfQ0FQMF8zMjBNSFpfSU5fNkdIWjtcXG4gXFxuLVxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBXTUlfTUFYX0VIVENBUF9NQUNfU0laRTsgaSsrKVxcbi1cXHRcXHRjYXBfYmFuZC1cXHUwMDNlZWh0X2NhcF9tYWNfaW5mb1tpXSA9IGxlMzJfdG9fY3B1KGNhcF9tYWNfaW5mb1tpXSk7XFxuK1xcdG1lbWNweShjYXBfYmFuZC1cXHUwMDNlZWh0X2NhcF9tYWNfaW5mbywgY2FwX21hY19pbmZvLFxcbitcXHQgICAgICAgc2l6ZW9mKHUzMikgKiBXTUlfTUFYX0VIVENBUF9NQUNfU0laRSk7XFxuIFxcbi1cXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgV01JX01BWF9FSFRDQVBfUEhZX1NJWkU7IGkrKylcXG4tXFx0XFx0Y2FwX2JhbmQtXFx1MDAzZWVodF9jYXBfcGh5X2luZm9baV0gPSBsZTMyX3RvX2NwdShjYXBfcGh5X2luZm9baV0pO1xcbitcXHRtZW1jcHkoY2FwX2JhbmQtXFx1MDAzZWVodF9jYXBfcGh5X2luZm8sIGNhcF9waHlfaW5mbyxcXG4rXFx0ICAgICAgIHNpemVvZih1MzIpICogV01JX01BWF9FSFRDQVBfUEhZX1NJWkUpO1xcbiBcXG4gXFx0aWYgKGJhbmQgPT0gTkw4MDIxMV9CQU5EXzZHSFopXFxuLVxcdFxcdGNhcF9iYW5kLVxcdTAwM2VlaHRfY2FwX3BoeV9pbmZvWzBdIHw9IHN1cHBvcnRfMzIwbWh6O1xcbitcXHRcXHRjYXBfYmFuZC1cXHUwMDNlZWh0X2NhcF9waHlfaW5mb1swXSB8PSBjcHVfdG9fbGUzMihzdXBwb3J0XzMyMG1oeik7XFxuIFxcbiBcXHRjYXBfYmFuZC1cXHUwMDNlZWh0X21jc18yMF9vbmx5ID0gbGUzMl90b19jcHUoc3VwcF9tY3NbMF0pO1xcbiBcXHRjYXBfYmFuZC1cXHUwMDNlZWh0X21jc184MCA9IGxlMzJfdG9fY3B1KHN1cHBfbWNzWzFdKTtcXG5AQCAtNTI1NiwxMCArNTI1MiwxMiBAQCBzdGF0aWMgaW50IGF0aDEya193bWlfdGx2X21hY19waHlfY2Fwc19leHQoc3RydWN0IGF0aDEya19iYXNlICphYiwgdTE2IHRhZyxcXG4gXFxuIFxcdGlmIChhYi1cXHUwMDNlaHdfcGFyYW1zLVxcdTAwM2VzaW5nbGVfcGRldl9vbmx5KSB7XFxuIFxcdFxcdGlmIChjYXBzLVxcdTAwM2Vod19tb2RlX2lkID09IFdNSV9IT1NUX0hXX01PREVfU0lOR0xFKSB7XFxuLVxcdFxcdFxcdHN1cHBvcnRfMzIwbWh6ID0gbGUzMl90b19jcHUoY2Fwcy1cXHUwMDNlZWh0X2NhcF9waHlfaW5mb181Z2h6WzBdKSBcXHUwMDI2XFxuLVxcdFxcdFxcdFxcdFxcdCBJRUVFODAyMTFfRUhUX1BIWV9DQVAwXzMyME1IWl9JTl82R0haO1xcbitcXHRcXHRcXHRzdXBwb3J0XzMyMG1oeiA9XFxuK1xcdFxcdFxcdFxcdGxlMzJfdG9fY3B1KGNhcHMtXFx1MDAzZWVodF9jYXBfcGh5X2luZm9fNWdoelswXSkgXFx1MDAyNlxcbitcXHRcXHRcXHRcXHRJRUVFODAyMTFfRUhUX1BIWV9DQVAwXzMyME1IWl9JTl82R0haO1xcbiBcXHRcXHRcXHRjYXBfYmFuZCA9IFxcdTAwMjZhYi1cXHUwMDNlcGRldnNbMF0uY2FwLmJhbmRbTkw4MDIxMV9CQU5EXzZHSFpdO1xcbi1cXHRcXHRcXHRjYXBfYmFuZC1cXHUwMDNlZWh0X2NhcF9waHlfaW5mb1swXSB8PSBzdXBwb3J0XzMyMG1oejtcXG4rXFx0XFx0XFx0Y2FwX2JhbmQtXFx1MDAzZWVodF9jYXBfcGh5X2luZm9bMF0gfD1cXG4rXFx0XFx0XFx0XFx0Y3B1X3RvX2xlMzIoc3VwcG9ydF8zMjBtaHopO1xcbiBcXHRcXHR9XFxuIFxcbiBcXHRcXHRpZiAoYWItXFx1MDAzZXdtaV9hYi5wcmVmZXJyZWRfaHdfbW9kZSAhPSBsZTMyX3RvX2NwdShjYXBzLVxcdTAwM2Vod19tb2RlX2lkKSlcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmhcXG5pbmRleCBjNDUyZTNkNTdhMjlhZC4uYTY4NzAzYmFiMWQ0MDUgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuaFxcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmhcXG5AQCAtMzkzNiwxMSArMzkzNiwxMSBAQCBzdHJ1Y3QgYXRoMTJrX3dtaV9wZWVyX2Fzc29jX2FyZyB7XFxuIFxcdHU4IHBlZXJfbWFjW0VUSF9BTEVOXTtcXG4gXFxuIFxcdGJvb2wgaGVfZmxhZztcXG4tXFx0dTMyIHBlZXJfaGVfY2FwX21hY2luZm9bMl07XFxuK1xcdF9fbGUzMiBwZWVyX2hlX2NhcF9tYWNpbmZvWzJdO1xcbiBcXHR1MzIgcGVlcl9oZV9jYXBfbWFjaW5mb19pbnRlcm5hbDtcXG4gXFx0dTMyIHBlZXJfaGVfY2Fwc182Z2h6O1xcbiBcXHR1MzIgcGVlcl9oZV9vcHM7XFxuLVxcdHUzMiBwZWVyX2hlX2NhcF9waHlpbmZvW1dNSV9IT1NUX01BWF9IRUNBUF9QSFlfU0laRV07XFxuK1xcdF9fbGUzMiBwZWVyX2hlX2NhcF9waHlpbmZvW1dNSV9IT1NUX01BWF9IRUNBUF9QSFlfU0laRV07XFxuIFxcdHUzMiBwZWVyX2hlX21jc19jb3VudDtcXG4gXFx0dTMyIHBlZXJfaGVfcnhfbWNzX3NldFtXTUlfSE9TVF9NQVhfSEVfUkFURV9TRVRdO1xcbiBcXHR1MzIgcGVlcl9oZV90eF9tY3Nfc2V0W1dNSV9IT1NUX01BWF9IRV9SQVRFX1NFVF07XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI5VDA4OjE0OjA4LjI1MDA0NDAyNloiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Nzk0MzEwOTg5ODUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGVuZGlhbm5lc3MgaXNzdWVzIChzcGFyc2Ugd2FybmluZ3MpIGluIHRoZSBhdGgxMmsgZHJpdmVyJ3MgV01JIChXaXJlbGVzcyBNb2R1bGUgSW50ZXJmYWNlKSBjb21tdW5pY2F0aW9uIHdpdGggdGhlIGZpcm13YXJlLiBUaGlzIGNvZGUgaXMgdW5yZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUgYmVjYXVzZSBpdCByZXF1aXJlcyBhY3R1YWwgUXVhbGNvbW0gV2ktRmkgNyBoYXJkd2FyZSBhbmQgaXRzIHByb3ByaWV0YXJ5IGZpcm13YXJlIHRvIGluaXRpYWxpemUgdGhlIGRldmljZSBhbmQgcmVhY2ggdGhlIFdNSSBtZXNzYWdlIHBhcnNpbmcvc2VuZGluZyBsb2dpYy4gU3l6a2FsbGVyIGNhbm5vdCBlbXVsYXRlIHRoZSBjb21wbGV4IFFNSS9XTUkgZmlybXdhcmUgaW50ZXJmYWNlIHJlcXVpcmVkIHRvIHRyaWdnZXIgdGhlc2UgY29kZSBwYXRocy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgM2JjNmE0MGI3Yjc5ZmNjMTg5YWE2NDhiZDY4MjZhYzdlZDQyYjA5N1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBNb24gSnVuIDI5IDA4OjE0OjA2IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuaFxuaW5kZXggZmM1MTI3YjVjMWEzN2YuLjEzZmE2ZTU0ZDI3OWQyIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmhcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5oXG5AQCAtODA4LDEzICs4MDgsMTMgQEAgc3RydWN0IGF0aDEya19iYW5kX2NhcCB7XG4gXHR1MzIgcGh5X2lkO1xuIFx0dTMyIG1heF9id19zdXBwb3J0ZWQ7XG4gXHR1MzIgaHRfY2FwX2luZm87XG4tXHR1MzIgaGVfY2FwX2luZm9bMl07XG4rXHRfX2xlMzIgaGVfY2FwX2luZm9bMl07XG4gXHR1MzIgaGVfbWNzO1xuLVx0dTMyIGhlX2NhcF9waHlfaW5mb1tQU09DX0hPU1RfTUFYX1BIWV9TSVpFXTtcbitcdF9fbGUzMiBoZV9jYXBfcGh5X2luZm9bUFNPQ19IT1NUX01BWF9QSFlfU0laRV07XG4gXHRzdHJ1Y3QgYXRoMTJrX3dtaV9wcGVfdGhyZXNob2xkX2FyZyBoZV9wcGV0O1xuIFx0dTE2IGhlXzZnaHpfY2FwYTtcbi1cdHUzMiBlaHRfY2FwX21hY19pbmZvW1dNSV9NQVhfRUhUQ0FQX01BQ19TSVpFXTtcbi1cdHUzMiBlaHRfY2FwX3BoeV9pbmZvW1dNSV9NQVhfRUhUQ0FQX1BIWV9TSVpFXTtcbitcdF9fbGUzMiBlaHRfY2FwX21hY19pbmZvW1dNSV9NQVhfRUhUQ0FQX01BQ19TSVpFXTtcbitcdF9fbGUzMiBlaHRfY2FwX3BoeV9pbmZvW1dNSV9NQVhfRUhUQ0FQX1BIWV9TSVpFXTtcbiBcdHUzMiBlaHRfbWNzXzIwX29ubHk7XG4gXHR1MzIgZWh0X21jc184MDtcbiBcdHUzMiBlaHRfbWNzXzE2MDtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jXG5pbmRleCBkMTdkNGE4ZjFjYjdkMy4uNmIwZDA3NDQ4ZTVkNzIgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuY1xuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmNcbkBAIC00MTAsOCArNDEwLDggQEAgc3RhdGljIGJvb2wgYXRoMTJrX2hlX3N1cHBvcnRzX2V4dHJhX21jcyhzdHJ1Y3QgYXRoMTJrICphciwgaW50IGZyZXEpXG4gXHRlbHNlXG4gXHRcdGNhcF9iYW5kID0gXHUwMDI2Y2FwLVx1MDAzZWJhbmRbTkw4MDIxMV9CQU5EXzZHSFpdO1xuIFxuLVx0ZXh0cmFfbWNzX3N1cHBvcnRlZCA9IHUzMl9nZXRfYml0cyhjYXBfYmFuZC1cdTAwM2VoZV9jYXBfaW5mb1sxXSxcbi1cdFx0XHRcdFx0ICAgSEVfRVhUUkFfTUNTX1NVUFBPUlQpO1xuK1x0ZXh0cmFfbWNzX3N1cHBvcnRlZCA9IGxlMzJfZ2V0X2JpdHMoY2FwX2JhbmQtXHUwMDNlaGVfY2FwX2luZm9bMV0sXG4rXHRcdFx0XHRcdCAgICBIRV9FWFRSQV9NQ1NfU1VQUE9SVCk7XG4gXHRyZXR1cm4gZXh0cmFfbWNzX3N1cHBvcnRlZDtcbiB9XG4gXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmNcbmluZGV4IDg0YTMxYjk1M2RiODFhLi4zOWY4Y2E3MzY4ZTMxNyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmNcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmNcbkBAIC01NDUsMTIgKzU0NSwxMSBAQCBhdGgxMmtfcHVsbF9tYWNfcGh5X2NhcF9zdmNfcmVhZHlfZXh0KHN0cnVjdCBhdGgxMmtfd21pX3BkZXYgKndtaV9oYW5kbGUsXG4gXHRcdGNhcF9iYW5kLVx1MDAzZXBoeV9pZCA9IGxlMzJfdG9fY3B1KG1hY19jYXBzLVx1MDAzZXBoeV9pZCk7XG4gXHRcdGNhcF9iYW5kLVx1MDAzZW1heF9id19zdXBwb3J0ZWQgPSBsZTMyX3RvX2NwdShtYWNfY2Fwcy1cdTAwM2VtYXhfYndfc3VwcG9ydGVkXzJnKTtcbiBcdFx0Y2FwX2JhbmQtXHUwMDNlaHRfY2FwX2luZm8gPSBsZTMyX3RvX2NwdShtYWNfY2Fwcy1cdTAwM2VodF9jYXBfaW5mb18yZyk7XG4tXHRcdGNhcF9iYW5kLVx1MDAzZWhlX2NhcF9pbmZvWzBdID0gbGUzMl90b19jcHUobWFjX2NhcHMtXHUwMDNlaGVfY2FwX2luZm9fMmcpO1xuLVx0XHRjYXBfYmFuZC1cdTAwM2VoZV9jYXBfaW5mb1sxXSA9IGxlMzJfdG9fY3B1KG1hY19jYXBzLVx1MDAzZWhlX2NhcF9pbmZvXzJnX2V4dCk7XG4rXHRcdGNhcF9iYW5kLVx1MDAzZWhlX2NhcF9pbmZvWzBdID0gbWFjX2NhcHMtXHUwMDNlaGVfY2FwX2luZm9fMmc7XG4rXHRcdGNhcF9iYW5kLVx1MDAzZWhlX2NhcF9pbmZvWzFdID0gbWFjX2NhcHMtXHUwMDNlaGVfY2FwX2luZm9fMmdfZXh0O1xuIFx0XHRjYXBfYmFuZC1cdTAwM2VoZV9tY3MgPSBsZTMyX3RvX2NwdShtYWNfY2Fwcy1cdTAwM2VoZV9zdXBwX21jc18yZyk7XG4tXHRcdGZvciAoaSA9IDA7IGkgXHUwMDNjIFdNSV9NQVhfSEVDQVBfUEhZX1NJWkU7IGkrKylcbi1cdFx0XHRjYXBfYmFuZC1cdTAwM2VoZV9jYXBfcGh5X2luZm9baV0gPVxuLVx0XHRcdFx0bGUzMl90b19jcHUobWFjX2NhcHMtXHUwMDNlaGVfY2FwX3BoeV9pbmZvXzJnW2ldKTtcbitcdFx0bWVtY3B5KFx1MDAyNmNhcF9iYW5kLVx1MDAzZWhlX2NhcF9waHlfaW5mbywgXHUwMDI2bWFjX2NhcHMtXHUwMDNlaGVfY2FwX3BoeV9pbmZvXzJnLFxuK1x0XHQgICAgICAgc2l6ZW9mKHUzMikgKiBXTUlfTUFYX0hFQ0FQX1BIWV9TSVpFKTtcbiBcbiBcdFx0Y2FwX2JhbmQtXHUwMDNlaGVfcHBldC5udW1zc19tMSA9IGxlMzJfdG9fY3B1KG1hY19jYXBzLVx1MDAzZWhlX3BwZXQyZy5udW1zc19tMSk7XG4gXHRcdGNhcF9iYW5kLVx1MDAzZWhlX3BwZXQucnVfYml0X21hc2sgPSBsZTMyX3RvX2NwdShtYWNfY2Fwcy1cdTAwM2VoZV9wcGV0MmcucnVfaW5mbyk7XG5AQCAtNTY2LDEyICs1NjUsMTEgQEAgYXRoMTJrX3B1bGxfbWFjX3BoeV9jYXBfc3ZjX3JlYWR5X2V4dChzdHJ1Y3QgYXRoMTJrX3dtaV9wZGV2ICp3bWlfaGFuZGxlLFxuIFx0XHRjYXBfYmFuZC1cdTAwM2VtYXhfYndfc3VwcG9ydGVkID1cbiBcdFx0XHRsZTMyX3RvX2NwdShtYWNfY2Fwcy1cdTAwM2VtYXhfYndfc3VwcG9ydGVkXzVnKTtcbiBcdFx0Y2FwX2JhbmQtXHUwMDNlaHRfY2FwX2luZm8gPSBsZTMyX3RvX2NwdShtYWNfY2Fwcy1cdTAwM2VodF9jYXBfaW5mb181Zyk7XG4tXHRcdGNhcF9iYW5kLVx1MDAzZWhlX2NhcF9pbmZvWzBdID0gbGUzMl90b19jcHUobWFjX2NhcHMtXHUwMDNlaGVfY2FwX2luZm9fNWcpO1xuLVx0XHRjYXBfYmFuZC1cdTAwM2VoZV9jYXBfaW5mb1sxXSA9IGxlMzJfdG9fY3B1KG1hY19jYXBzLVx1MDAzZWhlX2NhcF9pbmZvXzVnX2V4dCk7XG4rXHRcdGNhcF9iYW5kLVx1MDAzZWhlX2NhcF9pbmZvWzBdID0gbWFjX2NhcHMtXHUwMDNlaGVfY2FwX2luZm9fNWc7XG4rXHRcdGNhcF9iYW5kLVx1MDAzZWhlX2NhcF9pbmZvWzFdID0gbWFjX2NhcHMtXHUwMDNlaGVfY2FwX2luZm9fNWdfZXh0O1xuIFx0XHRjYXBfYmFuZC1cdTAwM2VoZV9tY3MgPSBsZTMyX3RvX2NwdShtYWNfY2Fwcy1cdTAwM2VoZV9zdXBwX21jc181Zyk7XG4tXHRcdGZvciAoaSA9IDA7IGkgXHUwMDNjIFdNSV9NQVhfSEVDQVBfUEhZX1NJWkU7IGkrKylcbi1cdFx0XHRjYXBfYmFuZC1cdTAwM2VoZV9jYXBfcGh5X2luZm9baV0gPVxuLVx0XHRcdFx0bGUzMl90b19jcHUobWFjX2NhcHMtXHUwMDNlaGVfY2FwX3BoeV9pbmZvXzVnW2ldKTtcbitcdFx0bWVtY3B5KFx1MDAyNmNhcF9iYW5kLVx1MDAzZWhlX2NhcF9waHlfaW5mbywgXHUwMDI2bWFjX2NhcHMtXHUwMDNlaGVfY2FwX3BoeV9pbmZvXzVnLFxuK1x0XHQgICAgICAgc2l6ZW9mKHUzMikgKiBXTUlfTUFYX0hFQ0FQX1BIWV9TSVpFKTtcbiBcbiBcdFx0Y2FwX2JhbmQtXHUwMDNlaGVfcHBldC5udW1zc19tMSA9IGxlMzJfdG9fY3B1KG1hY19jYXBzLVx1MDAzZWhlX3BwZXQ1Zy5udW1zc19tMSk7XG4gXHRcdGNhcF9iYW5kLVx1MDAzZWhlX3BwZXQucnVfYml0X21hc2sgPSBsZTMyX3RvX2NwdShtYWNfY2Fwcy1cdTAwM2VoZV9wcGV0NWcucnVfaW5mbyk7XG5AQCAtNTg0LDEyICs1ODIsMTEgQEAgYXRoMTJrX3B1bGxfbWFjX3BoeV9jYXBfc3ZjX3JlYWR5X2V4dChzdHJ1Y3QgYXRoMTJrX3dtaV9wZGV2ICp3bWlfaGFuZGxlLFxuIFx0XHRjYXBfYmFuZC1cdTAwM2VtYXhfYndfc3VwcG9ydGVkID1cbiBcdFx0XHRsZTMyX3RvX2NwdShtYWNfY2Fwcy1cdTAwM2VtYXhfYndfc3VwcG9ydGVkXzVnKTtcbiBcdFx0Y2FwX2JhbmQtXHUwMDNlaHRfY2FwX2luZm8gPSBsZTMyX3RvX2NwdShtYWNfY2Fwcy1cdTAwM2VodF9jYXBfaW5mb181Zyk7XG4tXHRcdGNhcF9iYW5kLVx1MDAzZWhlX2NhcF9pbmZvWzBdID0gbGUzMl90b19jcHUobWFjX2NhcHMtXHUwMDNlaGVfY2FwX2luZm9fNWcpO1xuLVx0XHRjYXBfYmFuZC1cdTAwM2VoZV9jYXBfaW5mb1sxXSA9IGxlMzJfdG9fY3B1KG1hY19jYXBzLVx1MDAzZWhlX2NhcF9pbmZvXzVnX2V4dCk7XG4rXHRcdGNhcF9iYW5kLVx1MDAzZWhlX2NhcF9pbmZvWzBdID0gbWFjX2NhcHMtXHUwMDNlaGVfY2FwX2luZm9fNWc7XG4rXHRcdGNhcF9iYW5kLVx1MDAzZWhlX2NhcF9pbmZvWzFdID0gbWFjX2NhcHMtXHUwMDNlaGVfY2FwX2luZm9fNWdfZXh0O1xuIFx0XHRjYXBfYmFuZC1cdTAwM2VoZV9tY3MgPSBsZTMyX3RvX2NwdShtYWNfY2Fwcy1cdTAwM2VoZV9zdXBwX21jc181Zyk7XG4tXHRcdGZvciAoaSA9IDA7IGkgXHUwMDNjIFdNSV9NQVhfSEVDQVBfUEhZX1NJWkU7IGkrKylcbi1cdFx0XHRjYXBfYmFuZC1cdTAwM2VoZV9jYXBfcGh5X2luZm9baV0gPVxuLVx0XHRcdFx0bGUzMl90b19jcHUobWFjX2NhcHMtXHUwMDNlaGVfY2FwX3BoeV9pbmZvXzVnW2ldKTtcbitcdFx0bWVtY3B5KFx1MDAyNmNhcF9iYW5kLVx1MDAzZWhlX2NhcF9waHlfaW5mbywgXHUwMDI2bWFjX2NhcHMtXHUwMDNlaGVfY2FwX3BoeV9pbmZvXzVnLFxuK1x0XHQgICAgICAgc2l6ZW9mKHUzMikgKiBXTUlfTUFYX0hFQ0FQX1BIWV9TSVpFKTtcbiBcbiBcdFx0Y2FwX2JhbmQtXHUwMDNlaGVfcHBldC5udW1zc19tMSA9IGxlMzJfdG9fY3B1KG1hY19jYXBzLVx1MDAzZWhlX3BwZXQ1Zy5udW1zc19tMSk7XG4gXHRcdGNhcF9iYW5kLVx1MDAzZWhlX3BwZXQucnVfYml0X21hc2sgPSBsZTMyX3RvX2NwdShtYWNfY2Fwcy1cdTAwM2VoZV9wcGV0NWcucnVfaW5mbyk7XG5AQCAtMjI4NCwxNCArMjI4MSwxMyBAQCBpbnQgYXRoMTJrX3dtaV9zZW5kX3BlZXJfYXNzb2NfY21kKHN0cnVjdCBhdGgxMmsgKmFyLFxuIFx0Y21kLVx1MDAzZXBlZXJfcGh5bW9kZSA9IGNwdV90b19sZTMyKGFyZy1cdTAwM2VwZWVyX3BoeW1vZGUpO1xuIFxuIFx0LyogVXBkYXRlIDExYXggY2FwYWJpbGl0aWVzICovXG4tXHRjbWQtXHUwMDNlcGVlcl9oZV9jYXBfaW5mbyA9IGNwdV90b19sZTMyKGFyZy1cdTAwM2VwZWVyX2hlX2NhcF9tYWNpbmZvWzBdKTtcbi1cdGNtZC1cdTAwM2VwZWVyX2hlX2NhcF9pbmZvX2V4dCA9IGNwdV90b19sZTMyKGFyZy1cdTAwM2VwZWVyX2hlX2NhcF9tYWNpbmZvWzFdKTtcbitcdGNtZC1cdTAwM2VwZWVyX2hlX2NhcF9pbmZvID0gYXJnLVx1MDAzZXBlZXJfaGVfY2FwX21hY2luZm9bMF07XG4rXHRjbWQtXHUwMDNlcGVlcl9oZV9jYXBfaW5mb19leHQgPSBhcmctXHUwMDNlcGVlcl9oZV9jYXBfbWFjaW5mb1sxXTtcbiBcdGNtZC1cdTAwM2VwZWVyX2hlX2NhcF9pbmZvX2ludGVybmFsID0gY3B1X3RvX2xlMzIoYXJnLVx1MDAzZXBlZXJfaGVfY2FwX21hY2luZm9faW50ZXJuYWwpO1xuIFx0Y21kLVx1MDAzZXBlZXJfaGVfY2Fwc182Z2h6ID0gY3B1X3RvX2xlMzIoYXJnLVx1MDAzZXBlZXJfaGVfY2Fwc182Z2h6KTtcbiBcdGNtZC1cdTAwM2VwZWVyX2hlX29wcyA9IGNwdV90b19sZTMyKGFyZy1cdTAwM2VwZWVyX2hlX29wcyk7XG4tXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBXTUlfTUFYX0hFQ0FQX1BIWV9TSVpFOyBpKyspXG4tXHRcdGNtZC1cdTAwM2VwZWVyX2hlX2NhcF9waHlbaV0gPVxuLVx0XHRcdGNwdV90b19sZTMyKGFyZy1cdTAwM2VwZWVyX2hlX2NhcF9waHlpbmZvW2ldKTtcbitcdG1lbWNweShjbWQtXHUwMDNlcGVlcl9oZV9jYXBfcGh5LCBhcmctXHUwMDNlcGVlcl9oZV9jYXBfcGh5aW5mbyxcbitcdCAgICAgICBzaXplb2YodTMyKSAqIFdNSV9NQVhfSEVDQVBfUEhZX1NJWkUpO1xuIFx0Y21kLVx1MDAzZXBlZXJfcHBldC5udW1zc19tMSA9IGNwdV90b19sZTMyKGFyZy1cdTAwM2VwZWVyX3BwZXQubnVtc3NfbTEpO1xuIFx0Y21kLVx1MDAzZXBlZXJfcHBldC5ydV9pbmZvID0gY3B1X3RvX2xlMzIoYXJnLVx1MDAzZXBlZXJfcHBldC5ydV9iaXRfbWFzayk7XG4gXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBXTUlfTUFYX05VTV9TUzsgaSsrKVxuQEAgLTUxNTgsMTcgKzUxNTQsMTcgQEAgc3RhdGljIHZvaWQgYXRoMTJrX3dtaV9laHRfY2Fwc19wYXJzZShzdHJ1Y3QgYXRoMTJrX3BkZXYgKnBkZXYsIHUzMiBiYW5kLFxuIFx0dTggaTtcbiBcbiBcdGlmIChiYW5kID09IE5MODAyMTFfQkFORF82R0haKVxuLVx0XHRzdXBwb3J0XzMyMG1oeiA9IGNhcF9iYW5kLVx1MDAzZWVodF9jYXBfcGh5X2luZm9bMF0gXHUwMDI2XG4tXHRcdFx0XHRcdElFRUU4MDIxMV9FSFRfUEhZX0NBUDBfMzIwTUhaX0lOXzZHSFo7XG4rXHRcdHN1cHBvcnRfMzIwbWh6ID0gbGUzMl90b19jcHUoY2FwX2JhbmQtXHUwMDNlZWh0X2NhcF9waHlfaW5mb1swXSkgXHUwMDI2XG4rXHRcdFx0XHQgSUVFRTgwMjExX0VIVF9QSFlfQ0FQMF8zMjBNSFpfSU5fNkdIWjtcbiBcbi1cdGZvciAoaSA9IDA7IGkgXHUwMDNjIFdNSV9NQVhfRUhUQ0FQX01BQ19TSVpFOyBpKyspXG4tXHRcdGNhcF9iYW5kLVx1MDAzZWVodF9jYXBfbWFjX2luZm9baV0gPSBsZTMyX3RvX2NwdShjYXBfbWFjX2luZm9baV0pO1xuK1x0bWVtY3B5KGNhcF9iYW5kLVx1MDAzZWVodF9jYXBfbWFjX2luZm8sIGNhcF9tYWNfaW5mbyxcbitcdCAgICAgICBzaXplb2YodTMyKSAqIFdNSV9NQVhfRUhUQ0FQX01BQ19TSVpFKTtcbiBcbi1cdGZvciAoaSA9IDA7IGkgXHUwMDNjIFdNSV9NQVhfRUhUQ0FQX1BIWV9TSVpFOyBpKyspXG4tXHRcdGNhcF9iYW5kLVx1MDAzZWVodF9jYXBfcGh5X2luZm9baV0gPSBsZTMyX3RvX2NwdShjYXBfcGh5X2luZm9baV0pO1xuK1x0bWVtY3B5KGNhcF9iYW5kLVx1MDAzZWVodF9jYXBfcGh5X2luZm8sIGNhcF9waHlfaW5mbyxcbitcdCAgICAgICBzaXplb2YodTMyKSAqIFdNSV9NQVhfRUhUQ0FQX1BIWV9TSVpFKTtcbiBcbiBcdGlmIChiYW5kID09IE5MODAyMTFfQkFORF82R0haKVxuLVx0XHRjYXBfYmFuZC1cdTAwM2VlaHRfY2FwX3BoeV9pbmZvWzBdIHw9IHN1cHBvcnRfMzIwbWh6O1xuK1x0XHRjYXBfYmFuZC1cdTAwM2VlaHRfY2FwX3BoeV9pbmZvWzBdIHw9IGNwdV90b19sZTMyKHN1cHBvcnRfMzIwbWh6KTtcbiBcbiBcdGNhcF9iYW5kLVx1MDAzZWVodF9tY3NfMjBfb25seSA9IGxlMzJfdG9fY3B1KHN1cHBfbWNzWzBdKTtcbiBcdGNhcF9iYW5kLVx1MDAzZWVodF9tY3NfODAgPSBsZTMyX3RvX2NwdShzdXBwX21jc1sxXSk7XG5AQCAtNTI1NiwxMCArNTI1MiwxMiBAQCBzdGF0aWMgaW50IGF0aDEya193bWlfdGx2X21hY19waHlfY2Fwc19leHQoc3RydWN0IGF0aDEya19iYXNlICphYiwgdTE2IHRhZyxcbiBcbiBcdGlmIChhYi1cdTAwM2Vod19wYXJhbXMtXHUwMDNlc2luZ2xlX3BkZXZfb25seSkge1xuIFx0XHRpZiAoY2Fwcy1cdTAwM2Vod19tb2RlX2lkID09IFdNSV9IT1NUX0hXX01PREVfU0lOR0xFKSB7XG4tXHRcdFx0c3VwcG9ydF8zMjBtaHogPSBsZTMyX3RvX2NwdShjYXBzLVx1MDAzZWVodF9jYXBfcGh5X2luZm9fNWdoelswXSkgXHUwMDI2XG4tXHRcdFx0XHRcdCBJRUVFODAyMTFfRUhUX1BIWV9DQVAwXzMyME1IWl9JTl82R0haO1xuK1x0XHRcdHN1cHBvcnRfMzIwbWh6ID1cbitcdFx0XHRcdGxlMzJfdG9fY3B1KGNhcHMtXHUwMDNlZWh0X2NhcF9waHlfaW5mb181Z2h6WzBdKSBcdTAwMjZcbitcdFx0XHRcdElFRUU4MDIxMV9FSFRfUEhZX0NBUDBfMzIwTUhaX0lOXzZHSFo7XG4gXHRcdFx0Y2FwX2JhbmQgPSBcdTAwMjZhYi1cdTAwM2VwZGV2c1swXS5jYXAuYmFuZFtOTDgwMjExX0JBTkRfNkdIWl07XG4tXHRcdFx0Y2FwX2JhbmQtXHUwMDNlZWh0X2NhcF9waHlfaW5mb1swXSB8PSBzdXBwb3J0XzMyMG1oejtcbitcdFx0XHRjYXBfYmFuZC1cdTAwM2VlaHRfY2FwX3BoeV9pbmZvWzBdIHw9XG4rXHRcdFx0XHRjcHVfdG9fbGUzMihzdXBwb3J0XzMyMG1oeik7XG4gXHRcdH1cbiBcbiBcdFx0aWYgKGFiLVx1MDAzZXdtaV9hYi5wcmVmZXJyZWRfaHdfbW9kZSAhPSBsZTMyX3RvX2NwdShjYXBzLVx1MDAzZWh3X21vZGVfaWQpKVxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5oXG5pbmRleCBjNDUyZTNkNTdhMjlhZC4uYTY4NzAzYmFiMWQ0MDUgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5oXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5oXG5AQCAtMzkzNiwxMSArMzkzNiwxMSBAQCBzdHJ1Y3QgYXRoMTJrX3dtaV9wZWVyX2Fzc29jX2FyZyB7XG4gXHR1OCBwZWVyX21hY1tFVEhfQUxFTl07XG4gXG4gXHRib29sIGhlX2ZsYWc7XG4tXHR1MzIgcGVlcl9oZV9jYXBfbWFjaW5mb1syXTtcbitcdF9fbGUzMiBwZWVyX2hlX2NhcF9tYWNpbmZvWzJdO1xuIFx0dTMyIHBlZXJfaGVfY2FwX21hY2luZm9faW50ZXJuYWw7XG4gXHR1MzIgcGVlcl9oZV9jYXBzXzZnaHo7XG4gXHR1MzIgcGVlcl9oZV9vcHM7XG4tXHR1MzIgcGVlcl9oZV9jYXBfcGh5aW5mb1tXTUlfSE9TVF9NQVhfSEVDQVBfUEhZX1NJWkVdO1xuK1x0X19sZTMyIHBlZXJfaGVfY2FwX3BoeWluZm9bV01JX0hPU1RfTUFYX0hFQ0FQX1BIWV9TSVpFXTtcbiBcdHUzMiBwZWVyX2hlX21jc19jb3VudDtcbiBcdHUzMiBwZWVyX2hlX3J4X21jc19zZXRbV01JX0hPU1RfTUFYX0hFX1JBVEVfU0VUXTtcbiBcdHUzMiBwZWVyX2hlX3R4X21jc19zZXRbV01JX0hPU1RfTUFYX0hFX1JBVEVfU0VUXTtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI5VDA4OjE0OjA4LjI1MDA0NzMxNloiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjYwNDU1OTMwNjUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRW5kaWFubmVzcyBGaXggZm9yIGF0aDEyayBEcml2ZXIqKlxuXG5Pa2F5LCBzbyB0aGVyZSdzIGEgcGF0Y2ggc3VibWl0dGVkIHRoYXQncyBjYXVnaHQgbXkgZXllLiBJdCBzZWVtcyB0byBiZSBhZGRyZXNzaW5nIHBvdGVudGlhbCBlbmRpYW5uZXNzIGlzc3VlcyB3aXRoaW4gdGhlIGBhdGgxMmtgIGRyaXZlci4gU3BlY2lmaWNhbGx5LCBpdCdzIGNoYW5naW5nIHRoZSBkYXRhIHR5cGVzIG9mIGNlcnRhaW4gZmllbGRzIGluIGBzdHJ1Y3QgYXRoMTJrX2JhbmRfY2FwYCBhbmQgYHN0cnVjdCBhdGgxMmtfd21pX3BlZXJfYXNzb2NfYXJnYCBmcm9tIGB1MzJgIHRvIGBfX2xlMzJgLiBUaGUgcGF0Y2ggYWxzbyBzd2l0Y2hlcyB0aGUgYWNjZXNzIGFuZCBjb3B5IG1ldGhvZHMgZnJvbSB0aGUgbW9yZSBjdW1iZXJzb21lIGxvb3AtYmFzZWQgY29udmVyc2lvbnMgdG8gYG1lbWNweWAuIFRoYXQgc3Ryb25nbHkgc3VnZ2VzdHMgdGhleSdyZSB0cnlpbmcgdG8gcHJldmVudCB0aG9zZSBkcmVhZGVkIHNwYXJzZSB3YXJuaW5ncyByZWxhdGVkIHRvIGJ5dGUgb3JkZXIuXG5cbk15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBcIkNhbiB3ZSBhY3R1YWxseSB0ZXN0IHRoaXMsIGFuZCBpZiBzbywgaG93P1wiIGBhdGgxMmtgLCBpZiBJIHJlY2FsbCBjb3JyZWN0bHksIGlzIHRoZSBkcml2ZXIgZm9yIFF1YWxjb21tJ3MgV2ktRmkgNyBkZXZpY2VzLiBUaGF0IG5hcnJvd3MgdGhpbmdzIGRvd24gYSBiaXQsIHdoaWNoIGlzIGdvb2QuIEZ1enppbmcgdGhpcyBpcyBnb2luZyB0byBiZSB0aGUgY2hhbGxlbmdlLiBIYXJkd2FyZSBkcml2ZXJzIGxpa2UgdGhpcyBhcmUgbm90b3Jpb3VzbHkgZGlmZmljdWx0IHRvIGZ1enogZGlyZWN0bHksIGVzcGVjaWFsbHkgaWYgdGhlcmUgaXNuJ3QgYW4gZXF1aXZhbGVudCBoYXJkd2FyZSBlbXVsYXRpb24gbGF5ZXIuIFNvbWV0aGluZyBsaWtlIGBtYWM4MDIxMV9od3NpbWAgd291bGQgYmUgaWRlYWwsIGJ1dCB0aGF0J3MgZm9yIHRoZSBnZW5lcmljIGBtYWM4MDIxMWAgZnJhbWV3b3JrLCBub3QgbmVjZXNzYXJpbHkgc3BlY2lmaWMgdG8gYGF0aDEya2AuIFdhaXQuLi4gaXNuJ3QgYGF0aDEya2AgYSBQQ0kgb3IgQUhCIGRyaXZlcj8gVGhhdCBjaGFuZ2VzIHRoaW5ncy4gTGV0IG1lIGp1c3QgdGFrZSBhIGxvb2sgYXQgdGhlIGBLY29uZmlnYCBmaWxlIHVuZGVyIGBkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrYCB0byBjb25maXJtLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1ODc0LCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Mjc0LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjlUMDg6MTQ6MTQuMjk1NjQzODAxWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYzNzE0MjU0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBBVEgxMktcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZS1DbGVhclxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZzoyOmNvbmZpZyBBVEgxMktcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWctMy1cXHR0cmlzdGF0ZSBcXFwiUXVhbGNvbW0gV2ktRmkgNyBzdXBwb3J0IChhdGgxMmspXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnLTE2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZzoxNzpjb25maWcgQVRIMTJLX0FIQlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZy0xOC1cXHRib29sIFxcXCJRdWFsY29tbSBhdGgxMmsgQUhCIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWctMjQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnOjI1OmNvbmZpZyBBVEgxMktfREVCVUdcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWctMjYtXFx0Ym9vbCBcXFwiYXRoMTJrIGRlYnVnZ2luZ1xcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZy0zNC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWc6MzU6Y29uZmlnIEFUSDEyS19ERUJVR0ZTXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnLTM2LVxcdGJvb2wgXFxcIlF1YWxjb21tIGF0aDEyayBkZWJ1Z2ZzIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWctNDMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnOjQ0OmNvbmZpZyBBVEgxMktfVFJBQ0lOR1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZy00NS1cXHRib29sIFxcXCJhdGgxMmsgdHJhY2luZyBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnLTUyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZzo1Mzpjb25maWcgQVRIMTJLX0NPUkVEVU1QXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnLTU0LVxcdGJvb2wgXFxcImF0aDEyayBjb3JlZHVtcFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjlUMDg6MTQ6MTQuMzU5MzY4MDQ1WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzUxOTE0MTM4MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqQW5hbHl6aW5nIHRoZSBEcml2ZXIncyBQb3RlbnRpYWwgZm9yIEZ1enppbmcqKlxuXG5BbHJpZ2h0LCBzbyBJJ20gbG9va2luZyBhdCBhIFBDSS9BSEIgZHJpdmVyIGhlcmUuIFN0YW5kYXJkIHN0dWZmLCBub3RoaW5nIGltbWVkaWF0ZWx5IGp1bXBzIG91dC4gQnV0IHRoZW4gbXkgYnJhaW4gc3RhcnRzIHdoaXJyaW5nIOKAkyB3YWl0IGEgbWludXRlLCBpc24ndCBzeXprYWxsZXIgY2FwYWJsZSBvZiBmdXp6aW5nIFBDSSBkZXZpY2VzPyBUaGUgdlBDSSBmdW5jdGlvbmFsaXR5LCBpZiBJIHJlY2FsbCBjb3JyZWN0bHksIG9mZmVycyBhIHZpcnR1YWwgUENJIGVudmlyb25tZW50IHNwZWNpZmljYWxseSBmb3IgdGhpcyBraW5kIG9mIHRlc3RpbmcuIE9rYXksIHRoYXQncyBpbnRlcmVzdGluZy4uLlxuXG5TbywgdGhlIGltbWVkaWF0ZSBuZXh0IHF1ZXN0aW9uIGJlY29tZXM6IGlzIFBDSSBzdXBwb3J0IGFjdHVhbGx5IHByZXNlbnQgYW5kIGVuYWJsZWQgd2l0aGluIHRoaXMgZHJpdmVyPyBJIG5lZWQgdG8gcXVpY2tseSBkZXRlcm1pbmUgaWYgSSBjYW4gbGV2ZXJhZ2UgdGhhdCB2UENJIGZ1enppbmcgY2FwYWJpbGl0eS4gSWYgUENJIGlzIHN1cHBvcnRlZCwgd2UncmUgaW4gYnVzaW5lc3MuIElmIG5vdCwgSSdsbCBuZWVkIHRvIGV4cGxvcmUgb3RoZXIgYXZlbnVlcyBvciBjb25zaWRlciB3aGV0aGVyIHRoZSBBSEIgaW50ZXJmYWNlIG9mZmVycyBhbnkgcG90ZW50aWFsIGVudHJ5IHBvaW50cyBmb3IgZXhwbG9pdGF0aW9uLiBUaW1lIHRvIGRpZyBpbnRvIHRoZSBzb3VyY2UgYW5kIGNvbmZpcm0gdGhlIFBDSSBsYW5kc2NhcGUgd2l0aGluIHRoaXMgc3BlY2lmaWMgZHJpdmVyLiBMZXQncyBzZWUgd2hhdCB3ZSdyZSB3b3JraW5nIHdpdGguXG5cblxuIiwiSW5wdXRUb2tlbnMiOjcwMjYsIk91dHB1dFRva2VucyI6NDIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yOVQwODoxNDoxNy44Nzg1MTIwNDVaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjM2MTI4OTI3LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgQVRIMTJLX1BDSVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI5VDA4OjE0OjE4LjExNDY1NjA3MloiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMxNTA0NDMyMTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqS2NvbmZpZyBDaGVjayoqXG5cbk9rYXksIGJlZm9yZSBkaXZpbmcgYW55IGRlZXBlciwgSSBuZWVkIHRvIHRha2UgYSBzdGVwIGJhY2sgYW5kIG1ha2Ugc3VyZSBJJ20gbm90IG1pc3Npbmcgc29tZXRoaW5nIGZ1bmRhbWVudGFsLiBNeSBndXQgaXMgdGVsbGluZyBtZSB0aGVyZSBtaWdodCBiZSBhIGNvbmZpZ3VyYXRpb24gb3B0aW9uIGF0IHBsYXkgaGVyZSB0aGF0J3MgdGhyb3dpbmcgbWUgb2ZmLCBvciBtYXliZSBhbiBvdmVybG9va2VkIGRlcGVuZGVuY3kuIFNvLCBsZXQncyBoaXQgdGhlIEtjb25maWcgZmlsZS4gSSdtIGdvaW5nIHRvIHF1aWNrbHkgc2NhbiBpdCBmb3IgYW55dGhpbmcgcmVsYXRlZCB0byB0aGUgc3BlY2lmaWMgbW9kdWxlIEknbSB3b3JraW5nIHdpdGgsIHRoZSBmZWF0dXJlIHNldCBJJ20gaW1wbGVtZW50aW5nLCBhbmQgdGhlIGhhcmR3YXJlIHBsYXRmb3JtIHRoaXMgaXMgcnVubmluZyBvbi4gSSdsbCBuZWVkIHRvIHBheSBjbG9zZSBhdHRlbnRpb24gdG8gYW55IGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIG9yIGRlZmF1bHQgc2V0dGluZ3MgdGhhdCBtaWdodCBiZSBza2V3aW5nIHRoZSBiZWhhdmlvciBJJ20gc2VlaW5nLiBJdOKAmXMgYWxzbyBjcnVjaWFsIHRvIGRvdWJsZS1jaGVjayBhbnkgcmVsYXRlZCB0cmlzdGF0ZXMgYW5kIHRoZWlyIGNvcnJlc3BvbmRpbmcgZGVwZW5kZW5jaWVzLiBBIHNpbXBsZSBtaXNjb25maWd1cmF0aW9uIGNhbiB3YXN0ZSBob3VycyBvZiBkZWJ1Z2dpbmcuIFRoaXMgaXMgYWxtb3N0IGluc3RpbmN0IGF0IHRoaXMgcG9pbnQsIGJ1dCBpdCdzIGltcG9ydGFudCB0byBiZSBtZXRob2RpY2FsLiBMZXQncyBzZWUgd2hhdCBLY29uZmlnIGhhcyB0byBzYXkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjczMzAsIk91dHB1dFRva2VucyI6NDIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yOVQwODoxNDoyMS4yNjUxMDIzNDdaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5NDIyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMTAwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlLUNsZWFyXFxuICAgMjpcXHRjb25maWcgQVRIMTJLXFxuICAgMzpcXHRcXHR0cmlzdGF0ZSBcXFwiUXVhbGNvbW0gV2ktRmkgNyBzdXBwb3J0IChhdGgxMmspXFxcIlxcbiAgIDQ6XFx0XFx0ZGVwZW5kcyBvbiBNQUM4MDIxMSBcXHUwMDI2XFx1MDAyNiBIQVNfRE1BIFxcdTAwMjZcXHUwMDI2IFBDSVxcbiAgIDU6XFx0XFx0c2VsZWN0IFFDT01fUU1JX0hFTFBFUlNcXG4gICA2OlxcdFxcdHNlbGVjdCBNSElfQlVTXFxuICAgNzpcXHRcXHRzZWxlY3QgUVJUUlxcbiAgIDg6XFx0XFx0c2VsZWN0IFFSVFJfTUhJXFxuICAgOTpcXHRcXHRzZWxlY3QgUENJX1BXUkNUUkxfUFdSU0VRIGlmIEhBVkVfUFdSQ1RSTFxcbiAgMTA6XFx0XFx0aGVscFxcbiAgMTE6XFx0XFx0ICBFbmFibGUgc3VwcG9ydCBmb3IgUXVhbGNvbW0gVGVjaG5vbG9naWVzIFdpLUZpIDcgKElFRUVcXG4gIDEyOlxcdFxcdCAgODAyLjExYmUpIGZhbWlseSBvZiBjaGlwc2V0cywgZm9yIGV4YW1wbGUgV0NONzg1MCBhbmRcXG4gIDEzOlxcdFxcdCAgUUNOOTI3NC5cXG4gIDE0OlxcdFxcbiAgMTU6XFx0XFx0ICBJZiB5b3UgY2hvb3NlIHRvIGJ1aWxkIGEgbW9kdWxlLCBpdCdsbCBiZSBjYWxsZWQgYXRoMTJrLlxcbiAgMTY6XFx0XFxuICAxNzpcXHRjb25maWcgQVRIMTJLX0FIQlxcbiAgMTg6XFx0XFx0Ym9vbCBcXFwiUXVhbGNvbW0gYXRoMTJrIEFIQiBzdXBwb3J0XFxcIlxcbiAgMTk6XFx0XFx0ZGVwZW5kcyBvbiBBVEgxMksgXFx1MDAyNlxcdTAwMjYgUkVNT1RFUFJPQ1xcbiAgMjA6XFx0XFx0c2VsZWN0IFFDT01fTURUX0xPQURFUlxcbiAgMjE6XFx0XFx0c2VsZWN0IFFDT01fU0NNXFxuICAyMjpcXHRcXHRoZWxwXFxuICAyMzpcXHRcXHQgIEVuYWJsZSBzdXBwb3J0IGZvciBBdGgxMmsgQUhCIGJ1cyBjaGlwc2V0cywgZXhhbXBsZSBJUFE1MzMyLlxcbiAgMjQ6XFx0XFxuICAyNTpcXHRjb25maWcgQVRIMTJLX0RFQlVHXFxuICAyNjpcXHRcXHRib29sIFxcXCJhdGgxMmsgZGVidWdnaW5nXFxcIlxcbiAgMjc6XFx0XFx0ZGVwZW5kcyBvbiBBVEgxMktcXG4gIDI4OlxcdFxcdGhlbHBcXG4gIDI5OlxcdFxcdCAgRW5hYmxlIGRlYnVnIHN1cHBvcnQsIGZvciBleGFtcGxlIGRlYnVnIG1lc3NhZ2VzIHdoaWNoIG11c3RcXG4gIDMwOlxcdFxcdCAgYmUgZW5hYmxlZCBzZXBhcmF0ZWx5IHVzaW5nIHRoZSBkZWJ1Z19tYXNrIG1vZHVsZSBwYXJhbWV0ZXIuXFxuICAzMTpcXHRcXG4gIDMyOlxcdFxcdCAgSWYgdW5zdXJlLCBzYXkgWSB0byBtYWtlIGl0IGVhc2llciB0byBkZWJ1ZyBwcm9ibGVtcy4gQnV0IGlmXFxuICAzMzpcXHRcXHQgIHlvdSB3YW50IG9wdGltYWwgcGVyZm9ybWFuY2UgY2hvb3NlIE4uXFxuICAzNDpcXHRcXG4gIDM1OlxcdGNvbmZpZyBBVEgxMktfREVCVUdGU1xcbiAgMzY6XFx0XFx0Ym9vbCBcXFwiUXVhbGNvbW0gYXRoMTJrIGRlYnVnZnMgc3VwcG9ydFxcXCJcXG4gIDM3OlxcdFxcdGRlcGVuZHMgb24gQVRIMTJLIFxcdTAwMjZcXHUwMDI2IE1BQzgwMjExX0RFQlVHRlNcXG4gIDM4OlxcdFxcdGhlbHBcXG4gIDM5OlxcdFxcdCAgRW5hYmxlIGF0aDEyayBkZWJ1Z2ZzIHN1cHBvcnRcXG4gIDQwOlxcdFxcbiAgNDE6XFx0XFx0ICBJZiB1bnN1cmUsIHNheSBZIHRvIG1ha2UgaXQgZWFzaWVyIHRvIGRlYnVnIHByb2JsZW1zLiBCdXQgaWZcXG4gIDQyOlxcdFxcdCAgeW91IHdhbnQgb3B0aW1hbCBwZXJmb3JtYW5jZSBjaG9vc2UgTi5cXG4gIDQzOlxcdFxcbiAgNDQ6XFx0Y29uZmlnIEFUSDEyS19UUkFDSU5HXFxuICA0NTpcXHRcXHRib29sIFxcXCJhdGgxMmsgdHJhY2luZyBzdXBwb3J0XFxcIlxcbiAgNDY6XFx0XFx0ZGVwZW5kcyBvbiBBVEgxMksgXFx1MDAyNlxcdTAwMjYgRVZFTlRfVFJBQ0lOR1xcbiAgNDc6XFx0XFx0aGVscFxcbiAgNDg6XFx0XFx0ICBFbmFibGUgYXRoMTJrIHRyYWNpbmcgaW5mcmFzdHJ1Y3R1cmUuXFxuICA0OTpcXHRcXG4gIDUwOlxcdFxcdCAgSWYgdW5zdXJlLCBzYXkgWSB0byBtYWtlIGl0IGVhc2llciB0byBkZWJ1ZyBwcm9ibGVtcy4gQnV0IGlmXFxuICA1MTpcXHRcXHQgIHlvdSB3YW50IG9wdGltYWwgcGVyZm9ybWFuY2UgY2hvb3NlIE4uXFxuICA1MjpcXHRcXG4gIDUzOlxcdGNvbmZpZyBBVEgxMktfQ09SRURVTVBcXG4gIDU0OlxcdFxcdGJvb2wgXFxcImF0aDEyayBjb3JlZHVtcFxcXCJcXG4gIDU1OlxcdFxcdGRlcGVuZHMgb24gQVRIMTJLXFxuICA1NjpcXHRcXHRzZWxlY3QgV0FOVF9ERVZfQ09SRURVTVBcXG4gIDU3OlxcdFxcdGhlbHBcXG4gIDU4OlxcdFxcdCAgRW5hYmxlIGF0aDEyayBjb3JlZHVtcCBjb2xsZWN0aW9uXFxuICA1OTpcXHRcXG4gIDYwOlxcdFxcdCAgSWYgdW5zdXJlLCBzYXkgWSB0byBtYWtlIGl0IGVhc2llciB0byBkZWJ1ZyBwcm9ibGVtcy4gQnV0IGlmXFxuICA2MTpcXHRcXHQgIGR1bXAgY29sbGVjdGlvbiBub3QgcmVxdWlyZWQgY2hvb3NlIE4uXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI5VDA4OjE0OjIxLjI2NTE5ODQxN1oiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEwMDQ5NDU2MjA3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgSW1wYWN0IG9mIHRoaXMgUGF0Y2ggb24gV2ktRmkgRHJpdmVyIEZ1enppbmcqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGlzIHRvdWNoaW5nIHNvbWUga2V5IGFyZWFzOiBgYXRoMTJrX3B1bGxfbWFjX3BoeV9jYXBfc3ZjX3JlYWR5X2V4dGAsIGBhdGgxMmtfd21pX3NlbmRfcGVlcl9hc3NvY19jbWRgLCBgYXRoMTJrX3dtaV9laHRfY2Fwc19wYXJzZWAsIGFuZCBgYXRoMTJrX3dtaV90bHZfbWFjX3BoeV9jYXBzX2V4dGAuIFRoZXNlIGFyZSBhbGwgY2xlYXJseSBXTUkgY29tbWFuZHMg4oCTIGludGVyYWN0aW9ucyB3aXRoIHRoZSBXaXJlbGVzcyBNb2R1bGUgSW50ZXJmYWNlLiBBbmQsIGZyb20gYSBoaWdoIGxldmVsLCB0aGF0IG1lYW5zIHRoZXkncmUgZ29pbmcgb3ZlciB0aGUgYnVzLCBsaWtlbHkgUENJIG9yIEFIQi4gVGhlIGluaXRpYWwgdGhvdWdodCBpcywgaG93IGRvZXMgdGhpcyBpbnRlcmFjdCB3aXRoIGZ1enppbmc/XG5cblNwZWNpZmljYWxseSwgaXQgZGVwZW5kcyBvbiB0aGUgUGVyaXBoZXJhbCBDb21wb25lbnQgSW50ZXJjb25uZWN0IChQQ0kpIGludGVyZmFjZS5cblxuTm93LCBJJ20gdGhpbmtpbmcgYWJvdXQgc3l6a2FsbGVyLiBJIGtub3cgaXQgY2FuIGZ1enogUENJIGRldmljZXMgdGhyb3VnaCB2UENJLCBidXQgaXMgdGhhdCBpdHMgZGVmYXVsdCBiZWhhdmlvcj8gQSBxdWljayBtZW50YWwgY2hlY2vigKYgeWVzLCBzeXprYWxsZXIgZG9lcyBvZmZlciB2UENJIGZ1enppbmcuIEJ1dCB0aGUgY3JpdGljYWwgcXVlc3Rpb24gaXMgZWZmZWN0aXZlbmVzcy4gV2lsbCB0aGlzIHBhdGNoIGJlIGVmZmVjdGl2ZWx5IGZ1enplZCBieSB0aGUgdG9vbHM/IFRoZSBjb21wbGV4aXR5IG9mIFdpLUZpIGRyaXZlcnMgaW50cm9kdWNlcyBzaWduaWZpY2FudCBodXJkbGVzLlxuXG5UaGUgdHlwaWNhbCBXaS1GaSBkcml2ZXIgZmxvdyBnb2VzIHNvbWV0aGluZyBsaWtlIHRoaXM6IGRldmljZSBpbml0aWFsaXphdGlvbiwgZmlybXdhcmUgbG9hZGluZywgYW5kIHRoZW4gdGhlIGNyaXRpY2FsIGNvbW11bmljYXRpb24gc3RhZ2UuIElmIGZpcm13YXJlIGxvYWRpbmcgZmFpbHMsIHRoZSB3aG9sZSBkcml2ZXIgaW5pdGlhbGl6YXRpb24gaXMgYWJvcnRlZC4gSW4gdGhhdCBjYXNlLCB0aGUgV01JIGNvZGUsIHRoZXNlIHZlcnkgZnVuY3Rpb25zLCBtaWdodCBuZXZlciBldmVuIGJlIHJlYWNoZWQuIFNvLCBpcyBgYXRoMTJrYCBvbmUgb2YgdGhvc2UgdGhhdCAqcmVxdWlyZXMqIGZpcm13YXJlPyBJIG5lZWQgdG8gdmVyaWZ5IHRoYXQgYmVmb3JlIEkgY2FuIGRyYXcgYW55IHJlYWwgY29uY2x1c2lvbnMgYWJvdXQgdGhlIGZ1enppbmcgaW1wYWN0LlxuXG5cbiIsIklucHV0VG9rZW5zIjo4NDQ3LCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjExLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjlUMDg6MTQ6MzEuMzE0NjU3Njc0WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2ODI0NTExNCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJyZXF1ZXN0X2Zpcm13YXJlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmtcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYz0zMzQ9c3RhdGljIGludCBhdGgxMmtfYWhiX3Bvd2VyX3VwKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTM2NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jOjM2NjpcXHRyZXQgPSByZXF1ZXN0X2Zpcm13YXJlKFxcdTAwMjZmdywgZndfbmFtZSwgZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTM2Ny1cXHRpZiAocmV0IFxcdTAwM2MgMCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmM6MzY4OlxcdFxcdGF0aDEya19lcnIoYWIsIFxcXCJyZXF1ZXN0X2Zpcm13YXJlIGZhaWxlZFxcXFxuXFxcIik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0zNjktXFx0XFx0cmV0dXJuIHJldDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtMzk4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmM6Mzk5OlxcdHJldCA9IHJlcXVlc3RfZmlybXdhcmUoXFx1MDAyNmZ3MiwgZncyX25hbWUsIGRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy00MDAtXFx0aWYgKHJldCBcXHUwMDNjIDApIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jOjQwMTpcXHRcXHRhdGgxMmtfZXJyKGFiLCBcXFwicmVxdWVzdF9maXJtd2FyZSBmYWlsZWRcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtNDAyLVxcdFxcdGdvdG8gZXJyX2Z3O1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9mdy5jLTktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9mdy5jOjEwOnN0YXRpYyBpbnQgYXRoMTJrX2Z3X3JlcXVlc3RfZmlybXdhcmVfYXBpX24oc3RydWN0IGF0aDEya19iYXNlICphYixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2Z3LmMtMTEtXFx0XFx0XFx0XFx0XFx0ICAgIGNvbnN0IGNoYXIgKm5hbWUpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2Z3LmM9MTYzPXZvaWQgYXRoMTJrX2Z3X21hcChzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9mdy5jLTE2Ni1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2Z3LmM6MTY3OlxcdHJldCA9IGF0aDEya19md19yZXF1ZXN0X2Zpcm13YXJlX2FwaV9uKGFiLCBBVEgxMktfRldfQVBJMl9GSUxFKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2Z3LmMtMTY4LVxcdGlmIChyZXQgPT0gMClcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjlUMDg6MTQ6MzEuMzgyOTExOTQ4WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUwNTE0NTE4NTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgYXRoMTJrIERyaXZlciBJbml0aWFsaXphdGlvbioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgYGF0aDEya2AgZHJpdmVyIGluaXRpYWxpemF0aW9uIHByb2Nlc3MsIGFuZCBpdCdzIGltbWVkaWF0ZWx5IGNsZWFyIHdlIG5lZWQgZmlybXdhcmUuIFdpdGhvdXQgaXQsIHRoZSBgcmVxdWVzdF9maXJtd2FyZWAgY2FsbCBpcyBnb2luZyB0byBib21iIG91dCwgYW5kIHRoZSB3aG9sZSBkcml2ZXIgc2V0dXAganVzdCBncmluZHMgdG8gYSBoYWx0LiBUaGUgcHJvYmxlbSB3aXRoIHVzaW5nIHN5emthbGxlciBoZXJlIGlzIHRoYXQgd2UgbGlrZWx5IGRvbid0IGhhdmUgdGhlIGBhdGgxMmtgIGZpcm13YXJlIGF2YWlsYWJsZSwgb3IgaWYgd2UgKmRvKiBoYXZlIGl0LCB0aGUgdmlydHVhbCBQQ0kgZGV2aWNlIGlzbid0IGdvaW5nIHRvIHBsYXkgYmFsbCBhbmQgY29ycmVjdGx5IGhhbmRsZSB0aGUgZmlybXdhcmUgaW5pdGlhbGl6YXRpb24uIFRoYXQncyBhIGh1Z2UgaHVyZGxlIC0gdGhlcmUncyBubyB3YXkgc3l6a2FsbGVyIGNhbiBlbXVsYXRlIHRoZSBjb21wbGljYXRlZCBmaXJtd2FyZSBpbnRlcmFjdGlvbnMgb2YgdGhpcyBgYXRoMTJrYCBpbnRlcmZhY2UgdXNpbmcgYSB2aXJ0dWFsIFBDSSBzZXR1cC5cblxuSXQncyBhbGwgYWJvdXQgdGhlIFdNSSBjb21tYW5kczsgdGhleSdyZSB0aGUgbGFuZ3VhZ2Ugc3Bva2VuIGJldHdlZW4gdGhlIGRyaXZlciBhbmQgdGhlIGZpcm13YXJlLiBJZiB0aGUgZmlybXdhcmUgaXNuJ3QgcnVubmluZywgd2UnbGwgbmV2ZXIgZ2V0IHRvIGtleSBmdW5jdGlvbnMgbGlrZSBgYXRoMTJrX3B1bGxfbWFjX3BoeV9jYXBfc3ZjX3JlYWR5X2V4dGAgb3IgYGF0aDEya193bWlfc2VuZF9wZWVyX2Fzc29jX2NtZGAuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBjYWxsIGNoYWluIGZvciBgYXRoMTJrX3B1bGxfbWFjX3BoeV9jYXBfc3ZjX3JlYWR5X2V4dGAgdG8gc2VlIGhvdyBjcml0aWNhbCB0aGlzIGRlcGVuZGVuY3kgaXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjk2NzksIk91dHB1dFRva2VucyI6NTAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxODksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjlUMDg6MTQ6MzYuNDM0MzY2NjM5WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3MDM1NTUxMywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJhdGgxMmtfcHVsbF9tYWNfcGh5X2NhcF9zdmNfcmVhZHlfZXh0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmtcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuYz00NTQ9c3RhdGljIGludFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmM6NDU1OmF0aDEya19wdWxsX21hY19waHlfY2FwX3N2Y19yZWFkeV9leHQoc3RydWN0IGF0aDEya193bWlfcGRldiAqd21pX2hhbmRsZSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5jLTQ1Ni1cXHRcXHRcXHRcXHQgICAgICBzdHJ1Y3QgYXRoMTJrX3dtaV9zdmNfcmR5X2V4dF9wYXJzZSAqc3ZjLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuYz00ODE4PXN0YXRpYyBpbnQgYXRoMTJrX3dtaV9leHRfc29jX2hhbF9yZWdfY2Fwc19wYXJzZShzdHJ1Y3QgYXRoMTJrX2Jhc2UgKnNvYyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmMtNDgzNi1cXHR3aGlsZSAocGh5X2lkX21hcCBcXHUwMDI2XFx1MDAyNiBzb2MtXFx1MDAzZW51bV9yYWRpb3MgXFx1MDAzYyBNQVhfUkFESU9TKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuYzo0ODM3OlxcdFxcdHJldCA9IGF0aDEya19wdWxsX21hY19waHlfY2FwX3N2Y19yZWFkeV9leHQod21pX2hhbmRsZSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5jLTQ4MzgtXFx0XFx0XFx0XFx0XFx0XFx0XFx0ICAgIHN2Y19yZHlfZXh0LFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yOVQwODoxNDozNi41MDQ3MzkxNDJaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTM0NjAzMDQ3MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFJlYWNoYWJpbGl0eSBvZiBUaGlzIENvZGUqKlxuXG5Pa2F5LCBsZXQgbWUgdGhpbmsgdGhpcyB0aHJvdWdoLiBUaGlzIGNvZGUsIHNwZWNpZmljYWxseSBgYXRoMTJrX3dtaV9leHRfc29jX2hhbF9yZWdfY2Fwc19wYXJzZWAsIGlzIGNhbGxlZCBkZWVwIHdpdGhpbiB0aGUgYGF0aDEya2AgZHJpdmVyJ3MgV01JIGV2ZW50IGhhbmRsaW5nLiBJdCdzIHRyaWdnZXJlZCBieSBgYXRoMTJrX3dtaV90bHZfc3ZjX3JkeV9leHRfcGFyc2VgLCB3aGljaCBpbiB0dXJuIHJlc3BvbmRzIHRvIHRoZSBgV01JX1NFUlZJQ0VfUkVBRFlfRVhUX0VWRU5USURgIGV2ZW50LiBBbmQgdGhhdCBldmVudD8gVGhhdCdzIHNlbnQgKmJ5IHRoZSBmaXJtd2FyZSogYWZ0ZXIgaXQgYm9vdHMuXG5cbk5vdywgaGVyZSdzIHRoZSBraWNrZXI6IEkga25vdyBzeXprYWxsZXIgY2FuJ3QgZW11bGF0ZSB0aGUgYGF0aDEya2AgZmlybXdhcmUgaXRzZWxmLiBUaGF0J3MgYSBmdW5kYW1lbnRhbCBsaW1pdGF0aW9uIG9mIHZpcnR1YWxpemF0aW9uIGluIHRoaXMgc2NlbmFyaW8uIFdhaXQsIGJ1dCwgaXNuJ3QgdGhlcmUgc29tZXRoaW5nIGluIHN5emthbGxlciBhYm91dCB0aGUgbWFjODAyMTFfaHdzaW0/IFllcywgYnV0IHRoYXQgZW11bGF0ZXMgYSAqZ2VuZXJpYyogV2ktRmkgZGV2aWNlLCBub3QgdGhlIHNwZWNpZmljcyBvZiBgYXRoMTJrYCBoYXJkd2FyZS5cblxuU28sIHJlYWxpc3RpY2FsbHksIGNhbiB0aGlzIGNvZGUgYmUgcmVhY2hlZCBpbiBhbiBlbnZpcm9ubWVudCBsaWtlIEdDRSBvciBRRU1VPyBOby4gSXQncyBpbmV4dHJpY2FibHkgdGllZCB0byB0aGUgYGF0aDEya2AgaGFyZHdhcmUgYW5kIGl0cyBhc3NvY2lhdGVkIGZpcm13YXJlLiBUaGUgcGF0Y2ggSSdtIGxvb2tpbmcgYXQgbW9kaWZpZXMgY29kZSB0aGF0J3MgZnVuZGFtZW50YWxseSB1bnJlYWNoYWJsZSBpbiBhIHZpcnR1YWxpemVkIGNvbnRleHQuIEkndmUgZ290IHRvIG1ha2Ugc3VyZSB0aGlzIGlzIGFjY3VyYXRlLCB0aG91Z2guIElzIHRoZXJlIGFueSBzb2Z0d2FyZSBlbXVsYXRpb24gbW9kZSBmb3IgYGF0aDEya2A/IEknbGwgZG91YmxlLWNoZWNrIGp1c3QgdG8gYmUgYWJzb2x1dGVseSBjZXJ0YWluLlxuXG5UaGVyZWZvcmUsIHRoZSBvbmx5IHJlYXNvbmFibGUgY29uY2x1c2lvbiBpcyB0aGF0IEkgbmVlZCB0byBzZXQgYFdvcnRoRnV6emluZz1mYWxzZWAgZm9yIHRoaXMgY29kZS4gSXQncyBub3QgcHJhY3RpY2FsbHkgdGVzdGFibGUgaW4gdGhlIGN1cnJlbnQgZW52aXJvbm1lbnQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwNTI2LCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjQxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI5VDA4OjE0OjQxLjg1MDc3NDc3NVoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzUyNjkxMDMsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImh3c2ltXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmtcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI5VDA4OjE0OjQxLjkyNjA1NTU3OFoiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NjY0MTYwMTI5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCdzIGludGVybmFsIG1vbm9sb2d1ZTpcblxuKipJbnZlc3RpZ2F0aW5nIHRoZSBhdGgxMmsgSGFyZHdhcmUgU2ltdWxhdGlvbioqXG5cblJpZ2h0LCBzbywgbm8gaGFyZHdhcmUgc2ltdWxhdGlvbiBzdXBwb3J0IGZvciB0aGUgYXRoMTJrIGRyaXZlci4gVGhhdCdzIGEgYml0IG9mIGEgc25hZy4gSSdtIGdvaW5nIHRvIG5lZWQgdG8gZGlnIGRlZXBlciBpbnRvIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhhdC4gTGFjayBvZiBhIGhhcmR3YXJlIHNpbXVsYXRpb24gKGh3c2ltKSBlbnZpcm9ubWVudCBvZnRlbiBtZWFucyBhIG1vcmUgY29tcGxleCBkZWJ1Z2dpbmcgY3ljbGUsIHJlbHlpbmcgb24gcGh5c2ljYWwgaGFyZHdhcmUsIG9yIHBvdGVudGlhbGx5IHJlbHlpbmcgb24gbW9yZSBlbGFib3JhdGUgZW11bGF0aW9uIHN0cmF0ZWdpZXMuIEknbGwgbmVlZCB0byBmaWd1cmUgb3V0IGhvdyB0byB3b3JrIGFyb3VuZCB0aGUgbGltaXRhdGlvbnMuXG5cbldhaXQgYSBtaW51dGUsIHdoYXQgYWJvdXQgdXNpbmcgYHRlc3Rtb2RlYD8gSXMgdGhhdCBhbiBhdmFpbGFibGUgb3B0aW9uPyBgVGVzdG1vZGVgIG1pZ2h0IG9mZmVyIGFuIGFsdGVybmF0aXZlIHJvdXRlIGZvciBzb21lIGxldmVsIG9mIGNvbnRyb2wgb3IgZXhwZXJpbWVudGF0aW9uIHdpdGhvdXQgYSBmdWxsIGh3c2ltLiBJIG5lZWQgdG8gcmVmcmVzaCBteSBtZW1vcnkgb24gdGhlIGF0aDEyayBkcml2ZXIncyBgdGVzdG1vZGVgIGltcGxlbWVudGF0aW9uIGFuZCBzZWUgaWYgaXQgY291bGQgYmUgbGV2ZXJhZ2VkIGluIHRoaXMgc2l0dWF0aW9uLiBJdCBjb3VsZCBwcm92aWRlIGFjY2VzcyB0byBpbnRlcm5hbCByZWdpc3RlcnMgb3IgdGVzdCBjb21tYW5kcywgd2hpY2ggY291bGQgYmUgaGVscGZ1bC4gSSBtdXN0IGFzc2VzcyB3aGV0aGVyIGl0IGlzIHJlbGV2YW50IHRvIHRoZSBpc3N1ZSBhdCBoYW5kLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMTE3MiwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI5VDA4OjE0OjQ2LjU5MDIyMDI5N1oiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODAxNTA4ODIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidGVzdG1vZGVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEya1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL01ha2VmaWxlPTMzPWF0aDEyay0kKENPTkZJR19BVEgxMktfQ09SRURVTVApICs9IGNvcmVkdW1wLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL01ha2VmaWxlOjM0OmF0aDEyay0kKENPTkZJR19OTDgwMjExX1RFU1RNT0RFKSArPSB0ZXN0bW9kZS5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9NYWtlZmlsZS0zNS1hdGgxMmstJChDT05GSUdfVEhFUk1BTCkgKz0gdGhlcm1hbC5vXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jLTE3LSNpbmNsdWRlIFxcXCJkcF9yeC5oXFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmM6MTg6I2luY2x1ZGUgXFxcInRlc3Rtb2RlLmhcXFwiXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9tYWMuYy0xOS0jaW5jbHVkZSBcXFwicGVlci5oXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jLTYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jOjc6I2luY2x1ZGUgXFxcInRlc3Rtb2RlLmhcXFwiXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jLTgtI2luY2x1ZGUgXFx1MDAzY25ldC9uZXRsaW5rLmhcXHUwMDNlXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmMtMTMtI2luY2x1ZGUgXFxcImhpZi5oXFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYzoxNDojaW5jbHVkZSBcXFwiLi4vdGVzdG1vZGVfaS5oXFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYy0xNS1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYz00NT12b2lkIGF0aDEya190bV93bWlfZXZlbnRfdW5zZWdtZW50ZWQoc3RydWN0IGF0aDEya19iYXNlICphYiwgdTMyIGNtZF9pZCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYy01MS1cXHRhdGgxMmtfZGJnKGFiLCBBVEgxMktfREJHX1RFU1RNT0RFLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYzo1MjpcXHRcXHQgICBcXFwidGVzdG1vZGUgZXZlbnQgd21pIGNtZF9pZCAlZCBza2IgbGVuZ3RoICVkXFxcXG5cXFwiLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYy01My1cXHRcXHQgICBjbWRfaWQsIHNrYi1cXHUwMDNlbGVuKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYy01OC1cXHRpZiAoIWFyKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jOjU5OlxcdFxcdGF0aDEya193YXJuKGFiLCBcXFwidGVzdG1vZGUgZXZlbnQgbm90IGhhbmRsZWQgZHVlIHRvIGludmFsaWQgcGRldlxcXFxuXFxcIik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jLTYwLVxcdFxcdHJldHVybjtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYy02NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmM6NjU6XFx0bmxfc2tiID0gY2ZnODAyMTFfdGVzdG1vZGVfYWxsb2NfZXZlbnRfc2tiKGFyLVxcdTAwM2VhaC1cXHUwMDNlaHctXFx1MDAzZXdpcGh5LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYy02Ni1cXHRcXHRcXHRcXHRcXHRcXHQgICAyICogbmxhX3RvdGFsX3NpemUoc2l6ZW9mKHUzMikpICtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYy03Mi1cXHRcXHRhdGgxMmtfd2FybihhYixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmM6NzM6XFx0XFx0XFx0ICAgIFxcXCJmYWlsZWQgdG8gYWxsb2NhdGUgc2tiIGZvciB1bnNlZ21lbnRlZCB0ZXN0bW9kZSB3bWkgZXZlbnRcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYy03NC1cXHRcXHRyZXR1cm47XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmMtNzktXFx0ICAgIG5sYV9wdXQobmxfc2tiLCBBVEhfVE1fQVRUUl9EQVRBLCBza2ItXFx1MDAzZWxlbiwgc2tiLVxcdTAwM2VkYXRhKSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYzo4MDpcXHRcXHRhdGgxMmtfd2FybihhYiwgXFxcImZhaWxlZCB0byBwb3B1bGF0ZSB0ZXN0bW9kZSB1bnNlZ21lbnRlZCBldmVudFxcXFxuXFxcIik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jLTgxLVxcdFxcdGtmcmVlX3NrYihubF9za2IpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jLTg0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYzo4NTpcXHRjZmc4MDIxMV90ZXN0bW9kZV9ldmVudChubF9za2IsIEdGUF9BVE9NSUMpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYy04Ni19XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmM9ODg9dm9pZCBhdGgxMmtfdG1fcHJvY2Vzc19ldmVudChzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiLCB1MzIgY21kX2lkLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jLTk5LVxcdGF0aDEya19kYmcoYWIsIEFUSDEyS19EQkdfVEVTVE1PREUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jOjEwMDpcXHRcXHQgICBcXFwidGVzdG1vZGUgZXZlbnQgd21pIGNtZF9pZCAlZCBmdG0gZXZlbnQgbXNnICVwIGRhdGFsZW4gJWRcXFxcblxcXCIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jLTEwMS1cXHRcXHQgICBjbWRfaWQsIGZ0bV9tc2csIGxlbmd0aCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmMtMTA1LVxcdGlmIChwZGV2X2lkIFxcdTAwM2U9IGFiLVxcdTAwM2VudW1fcmFkaW9zKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jOjEwNjpcXHRcXHRhdGgxMmtfd2FybihhYiwgXFxcInRlc3Rtb2RlIGV2ZW50IG5vdCBoYW5kbGVkIGR1ZSB0byBpbnZhbGlkIHBkZXYgaWRcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYy0xMDctXFx0XFx0cmV0dXJuO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jLTExMi1cXHRpZiAoIWFyKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jOjExMzpcXHRcXHRhdGgxMmtfd2FybihhYiwgXFxcInRlc3Rtb2RlIGV2ZW50IG5vdCBoYW5kbGVkIGR1ZSB0byBhYnNlbmNlIG9mIHBkZXZcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYy0xMTQtXFx0XFx0cmV0dXJuO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jLTE1My1cXHRzcGluX2xvY2tfYmgoXFx1MDAyNmFyLVxcdTAwM2VkYXRhX2xvY2spO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYzoxNTQ6XFx0bmxfc2tiID0gY2ZnODAyMTFfdGVzdG1vZGVfYWxsb2NfZXZlbnRfc2tiKGFyLVxcdTAwM2VhaC1cXHUwMDNlaHctXFx1MDAzZXdpcGh5LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYy0xNTUtXFx0XFx0XFx0XFx0XFx0XFx0ICAgMiAqIG5sYV90b3RhbF9zaXplKHNpemVvZih1MzIpKSArXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmMtMTYxLVxcdFxcdGF0aDEya193YXJuKGFiLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYzoxNjI6XFx0XFx0XFx0ICAgIFxcXCJmYWlsZWQgdG8gYWxsb2NhdGUgc2tiIGZvciB0ZXN0bW9kZSB3bWkgZXZlbnRcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYy0xNjMtXFx0XFx0cmV0dXJuO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jLTE3MC1cXHRcXHQgICAgXFx1MDAyNmFiLVxcdTAwM2VmdG1fZXZlbnRfb2JqLmV2ZW50ZGF0YVswXSkpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmM6MTcxOlxcdFxcdGF0aDEya193YXJuKGFiLCBcXFwiZmFpbGVkIHRvIHBvcHVsYXRlIHRlc3Rtb2RlIGV2ZW50XFxcIik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jLTE3Mi1cXHRcXHRrZnJlZV9za2Iobmxfc2tiKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYy0xNzUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jOjE3NjpcXHRjZmc4MDIxMV90ZXN0bW9kZV9ldmVudChubF9za2IsIEdGUF9BVE9NSUMpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYy0xNzctfVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jPTE3OT1zdGF0aWMgaW50IGF0aDEya190bV9jbWRfZ2V0X3ZlcnNpb24oc3RydWN0IGF0aDEyayAqYXIsIHN0cnVjdCBubGF0dHIgKnRiW10pXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmMtMTgzLVxcdGF0aDEya19kYmcoYXItXFx1MDAzZWFiLCBBVEgxMktfREJHX1RFU1RNT0RFLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYzoxODQ6XFx0XFx0ICAgXFxcInRlc3Rtb2RlIGNtZCBnZXQgdmVyc2lvbl9tYWpvciAlZCB2ZXJzaW9uX21pbm9yICVkXFxcXG5cXFwiLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYy0xODUtXFx0XFx0ICAgQVRIX1RFU1RNT0RFX1ZFUlNJT05fTUFKT1IsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmMtMTg4LVxcdHNwaW5fbG9ja19iaChcXHUwMDI2YXItXFx1MDAzZWRhdGFfbG9jayk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jOjE4OTpcXHRza2IgPSBjZmc4MDIxMV90ZXN0bW9kZV9hbGxvY19yZXBseV9za2IoYXItXFx1MDAzZWFoLVxcdTAwM2Vody1cXHUwMDNld2lwaHksXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jLTE5MC1cXHRcXHRcXHRcXHRcXHRcXHQyICogbmxhX3RvdGFsX3NpemUoc2l6ZW9mKHUzMikpKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYy0yMDMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jOjIwNDpcXHRyZXR1cm4gY2ZnODAyMTFfdGVzdG1vZGVfcmVwbHkoc2tiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmMtMjA1LX1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYz0yMDc9c3RhdGljIGludCBhdGgxMmtfdG1fY21kX3Byb2Nlc3NfZnRtKHN0cnVjdCBhdGgxMmsgKmFyLCBzdHJ1Y3QgbmxhdHRyICp0YltdKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jLTIyOS1cXHRhdGgxMmtfZGJnKGFyLVxcdTAwM2VhYiwgQVRIMTJLX0RCR19URVNUTU9ERSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmM6MjMwOlxcdFxcdCAgIFxcXCJ0ZXN0bW9kZSBjbWQgd21pIGNtZF9pZCAlZCBidWYgJXAgYnVmX2xlbiAlZFxcXFxuXFxcIixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmMtMjMxLVxcdFxcdCAgIGNtZF9pZCwgYnVmLCBidWZfbGVuKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYy0yODAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jOjI4MTpzdGF0aWMgaW50IGF0aDEya190bV9jbWRfdGVzdG1vZGVfc3RhcnQoc3RydWN0IGF0aDEyayAqYXIsIHN0cnVjdCBubGF0dHIgKnRiW10pXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jLTI4Mi17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmM9MzAwPXN0YXRpYyBpbnQgYXRoMTJrX3RtX2NtZF93bWkoc3RydWN0IGF0aDEyayAqYXIsIHN0cnVjdCBubGF0dHIgKnRiW10pXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmMtMzE4LVxcdGlmICghYnVmX2xlbikge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYzozMTk6XFx0XFx0YXRoMTJrX3dhcm4oYXItXFx1MDAzZWFiLCBcXFwiTm8gZGF0YSBwcmVzZW50IGluIHRlc3Rtb2RlIGNvbW1hbmRcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYy0zMjAtXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmMtMzMxLVxcdGF0aDEya19kYmcoYXItXFx1MDAzZWFiLCBBVEgxMktfREJHX1RFU1RNT0RFLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYzozMzI6XFx0XFx0ICAgXFxcInRlc3Rtb2RlIGNtZCB3bWkgY21kX2lkICVkICBidWYgbGVuZ3RoICVkXFxcXG5cXFwiLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYy0zMzMtXFx0XFx0ICAgY21kX2lkLCBidWZfbGVuKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYy0zNDYtXFx0XFx0ZGV2X2tmcmVlX3NrYihza2IpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYzozNDc6XFx0XFx0YXRoMTJrX3dhcm4oYXItXFx1MDAzZWFiLCBcXFwiZmFpbGVkIHRvIHRyYW5zbWl0IHdtaSBjb21tYW5kICh0ZXN0bW9kZSk6ICVkXFxcXG5cXFwiLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYy0zNDgtXFx0XFx0XFx0ICAgIHJldCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmM9MzU0PWludCBhdGgxMmtfdG1fY21kKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LCBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jLTM4NS1cXHRjYXNlIEFUSF9UTV9DTURfVEVTVE1PREVfU1RBUlQ6XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jOjM4NjpcXHRcXHRyZXR1cm4gYXRoMTJrX3RtX2NtZF90ZXN0bW9kZV9zdGFydChhciwgdGIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYy0zODctXFx0Y2FzZSBBVEhfVE1fQ01EX0dFVF9WRVJTSU9OOlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9ody5jLTI0LSNpbmNsdWRlIFxcXCIuLi9kZWJ1Z2ZzX3N0YS5oXFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvaHcuYzoyNTojaW5jbHVkZSBcXFwiLi4vdGVzdG1vZGUuaFxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2h3LmMtMjYtI2luY2x1ZGUgXFxcImhhbC5oXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuYy0yNi0jaW5jbHVkZSBcXFwicDJwLmhcXFwiXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuYzoyNzojaW5jbHVkZSBcXFwidGVzdG1vZGUuaFxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5jLTI4LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yOVQwODoxNDo0Ni42NzAzODMwNjlaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzcwNjAwMDczNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgV01JIENvbW1hbmQgSGFuZGxpbmcgaW4gVGVzdG1vZGUqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHRlc3Rtb2RlIGltcGxlbWVudGF0aW9uIGZvciB0aGUgYXRoMTJrIGRyaXZlciwgc3BlY2lmaWNhbGx5IGZvY3VzaW5nIG9uIFdNSSAoV2luZG93cyBNYW5hZ2VtZW50IEluc3RydW1lbnRhdGlvbikgY29tbWFuZHMuIE15IGluaXRpYWwgcXVlc3Rpb24gaXM6IGRvZXMgdGVzdG1vZGUgb25seSBhbGxvdyAqc2VuZGluZyogY29tbWFuZHMgZnJvbSB1c2Vyc3BhY2UsIG9yIGNhbiBpdCBhbHNvICpyZWNlaXZlKiB0aGVtP1xuXG5JIGluaXRpYWxseSBmb3VuZCByZWZlcmVuY2VzIHRvIGBhdGgxMmtfdG1fd21pX2V2ZW50X3Vuc2VnbWVudGVkYCBhbmQgYGF0aDEya190bV9wcm9jZXNzX2V2ZW50YC4gVGhvc2UgZnVuY3Rpb25zIHN1Z2dlc3QgYSBtZWNoYW5pc20gZm9yIGdldHRpbmcgZXZlbnRzICpiYWNrKiB0byB1c2Vyc3BhY2UuIEJ1dCB0aGVuIEkgbm90aWNlZCB0aGlzIHBhdGNoIGNoYW5nZXMgaG93IHRoZSBkcml2ZXIgaGFuZGxlcyBXTUkgZXZlbnRzIGludGVybmFsbHnigJQgc3BlY2lmaWNhbGx5IGluIGBhdGgxMmtfcHVsbF9tYWNfcGh5X2NhcF9zdmNfcmVhZHlfZXh0YCwgYGF0aDEya193bWlfZWh0X2NhcHNfcGFyc2VgLCBhbmQgYGF0aDEya193bWlfdGx2X21hY19waHlfY2Fwc19leHRgLiBUaGVzZSBhcmUgY2FsbGVkIHdoZW4gdGhlICpkcml2ZXIqIGdldHMgZXZlbnRzIGZyb20gdGhlICpmaXJtd2FyZSouIFNpbmNlIHdlIGFyZSBub3QgcnVubmluZyB3aXRoIGZpcm13YXJlLCBhbmQgdGhvc2UgZXZlbnQgcHJvY2Vzc2luZyBmdW5jdGlvbnMgYXJlIG5vdCBiZWluZyB0cmlnZ2VyZWQsIHRoZXJlIGlzIG5vIGV2ZW50IHRvIHNlbmQuXG5cbldhaXQgYSBzZWNvbmQsIGxldCdzIHJldGhpbmsgdGhpcy4gQ2FuIHVzZXJzcGFjZSBwb3RlbnRpYWxseSAqaW5qZWN0KiBXTUkgZXZlbnRzIGludG8gdGhlIGRyaXZlciB2aWEgdGVzdG1vZGUsIGV2ZW4gaWYgdGhlIGZpcm13YXJlIGlzbid0IHJ1bm5pbmc/IExldCdzIGNoZWNrIGBhdGgxMmtfdG1fY21kYCB3aGljaCBzZWVtcyB0byBiZSB0aGUgY2VudHJhbCBjb21tYW5kIGhhbmRsZXIuIEl0IHNlZW1zIHRvIGhhbmRsZSBjb21tYW5kcyBsaWtlIGBBVEhfVE1fQ01EX1RFU1RNT0RFX1NUQVJUYCwgYEFUSF9UTV9DTURfR0VUX1ZFUlNJT05gLCBgQVRIX1RNX0NNRF9XTUlgLCBhbmQgYEFUSF9UTV9DTURfV01JX0ZUTWAuICBgQVRIX1RNX0NNRF9XTUlgIGlzIHBhcnRpY3VsYXJseSBpbnRlcmVzdGluZy4gSXQgKnNlbmRzKiBhIFdNSSBjb21tYW5kICp0byB0aGUgZmlybXdhcmUqLiBTbyBpdCBzZWVtcyB0aGUgYW5zd2VyIGlzIG5vLCBpdCBkb2Vzbid0IGdpdmUgdXMgdGhlIGFiaWxpdHkgdG8gaW5qZWN0IGFuIGV2ZW50IHRvIHRoZSBkcml2ZXIuXG5cblNvLCBpbiBzdW1tYXJ5LCBiYXNlZCBvbiB0aGlzIHF1aWNrIGxvb2ssIGl0IGRvZXNuJ3QgbG9vayBsaWtlIEkgY2FuIHRyaWdnZXIgdGhlIGRyaXZlcidzIGludGVybmFsIGV2ZW50IHBhcnNpbmcgbG9naWMgZnJvbSB1c2Vyc3BhY2UgZGlyZWN0bHkuXG5cbldoYXQgYWJvdXQgYGF0aDEya193bWlfc2VuZF9wZWVyX2Fzc29jX2NtZGA/IFRoaXMgaXMgYSBXTUkgY29tbWFuZCBzZW50ICpieSogdGhlIGRyaXZlciB0byB0aGUgZmlybXdhcmUsIHdoaWNoIG1lYW5zIGl0IGlzbid0IHJlbGV2YW50IHRvIG15IHF1ZXN0aW9uLiBUaGlzIGNvbW1hbmQgaXMgY2FsbGVkIGJ5IGBhdGgxMmtfbWFjX3BlZXJfYXNzb2NfaF92ZGV2YC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTQ4MzQsIk91dHB1dFRva2VucyI6NDcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNDYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjlUMDg6MTQ6NTQuMzc2Mzg3OTUzWiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2NDMxMjE1NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJhdGgxMmtfd21pX3NlbmRfcGVlcl9hc3NvY19jbWRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEya1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jPTM4MzU9c3RhdGljIHZvaWQgYXRoMTJrX2Jzc19hc3NvYyhzdHJ1Y3QgYXRoMTJrICphcixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmMtMzkwNC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jOjM5MDU6XFx0Lyoga2VlcCB0aGlzIGJlZm9yZSBhdGgxMmtfd21pX3NlbmRfcGVlcl9hc3NvY19jbWQoKSAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmMtMzkwNi1cXHRyZXQgPSBhdGgxMmtfd21pX3ZkZXZfc2V0X3BhcmFtX2NtZChhciwgYXJ2aWYtXFx1MDAzZXZkZXZfaWQsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jLTM5MTQtXFx0cGVlcl9hcmctXFx1MDAzZWlzX2Fzc29jID0gdHJ1ZTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jOjM5MTU6XFx0cmV0ID0gYXRoMTJrX3dtaV9zZW5kX3BlZXJfYXNzb2NfY21kKGFyLCBwZWVyX2FyZyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9tYWMuYy0zOTE2LVxcdGlmIChyZXQpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmM9NjQ0MD1zdGF0aWMgaW50IGF0aDEya19tYWNfc3RhdGlvbl9hc3NvYyhzdHJ1Y3QgYXRoMTJrICphcixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmMtNjQ3OS1cXHRwZWVyX2FyZy1cXHUwMDNlaXNfYXNzb2MgPSB0cnVlO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmM6NjQ4MDpcXHRyZXQgPSBhdGgxMmtfd21pX3NlbmRfcGVlcl9hc3NvY19jbWQoYXIsIHBlZXJfYXJnKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jLTY0ODEtXFx0aWYgKHJldCkge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9tYWMuYz02NjQ3PXN0YXRpYyB2b2lkIGF0aDEya19zdGFfcmNfdXBkYXRlX3drKHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXBoeV93b3JrICp3aylcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmMtNjgzOS1cXHRcXHRcXHRwZWVyX2FyZy1cXHUwMDNlaXNfYXNzb2MgPSBmYWxzZTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jOjY4NDA6XFx0XFx0XFx0ZXJyID0gYXRoMTJrX3dtaV9zZW5kX3BlZXJfYXNzb2NfY21kKGFyLCBwZWVyX2FyZyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9tYWMuYy02ODQxLVxcdFxcdFxcdGlmIChlcnIpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5jPTIxMjc9c3RhdGljIHZvaWQgYXRoMTJrX3dtaV9jb3B5X3BlZXJfZmxhZ3Moc3RydWN0IHdtaV9wZWVyX2Fzc29jX2NvbXBsZXRlX2NtZCAqY21kLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuYy0yMjE0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmM6MjIxNTppbnQgYXRoMTJrX3dtaV9zZW5kX3BlZXJfYXNzb2NfY21kKHN0cnVjdCBhdGgxMmsgKmFyLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmMtMjIxNi1cXHRcXHRcXHRcXHQgICBzdHJ1Y3QgYXRoMTJrX3dtaV9wZWVyX2Fzc29jX2FyZyAqYXJnKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuaD02NTU2PWludCBhdGgxMmtfd21pX3BkZXZfcmVzdW1lKHN0cnVjdCBhdGgxMmsgKmFyLCB1MzIgcGRldl9pZCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuaC02NTU3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmg6NjU1ODppbnQgYXRoMTJrX3dtaV9zZW5kX3BlZXJfYXNzb2NfY21kKHN0cnVjdCBhdGgxMmsgKmFyLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmgtNjU1OS1cXHRcXHRcXHRcXHQgICBzdHJ1Y3QgYXRoMTJrX3dtaV9wZWVyX2Fzc29jX2FyZyAqYXJnKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjlUMDg6MTQ6NTQuNDQwNzEwNDk3WiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ3Njk4MDUxNDksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqVmVyaWZ5aW5nIHRoZSBNQUM4MDIxMSBDYWxsYmFjayBDaGFpbioqXG5cbk9rYXksIHNvIEknbSB0cmFjaW5nIHRoZSBleGVjdXRpb24gcGF0aCBhbmQgbmVlZCB0byBtYWtlIHN1cmUgSSd2ZSBnb3QgdGhpcyByaWdodC4gSSdtIHNlZWluZyB0aGlzIGNhbGwgY29taW5nIGZyb20gYGF0aDEya19ic3NfYXNzb2NgLCBgYXRoMTJrX21hY19zdGF0aW9uX2Fzc29jYCwgYW5kIGBhdGgxMmtfc3RhX3JjX3VwZGF0ZV93a2AuIFJpZ2h0LCB0aG9zZSBhcmUgZGVmaW5pdGVseSBtYWM4MDIxMSBjYWxsYmFja3MuIE5vIHN1cnByaXNlcyB0aGVyZS4gQnV0LCBhbmQgdGhpcyBpcyB0aGUgY3J1Y2lhbCBwb2ludCwgdGhlc2UgY2FsbGJhY2tzICpzaG91bGQqIG9ubHkgYmUgYWNjZXNzaWJsZSBpZiB0aGUgZHJpdmVyIGhhcyBzdWNjZXNzZnVsbHkgcmVnaXN0ZXJlZCBpdHNlbGYgd2l0aCBtYWM4MDIxMSBpbiB0aGUgZmlyc3QgcGxhY2UuIEFuZCB0aGUgZHJpdmVyIG9ubHkgZ2V0cyB0byByZWdpc3RlciB3aXRoIG1hYzgwMjExICphZnRlciogdGhlIGZpcm13YXJlIGluaXRpYWxpemF0aW9uIGlzIGNvbXBsZXRlIGFuZCBzdWNjZXNzZnVsLiBTbywgdGhhdCdzIHRoZSBjaGFpbiBvZiBsb2dpYywgcmlnaHQ/IFRoZSBkcml2ZXIgcmVnaXN0ZXJzLCB0aGVuIHRoZSBjYWxsYmFja3MgYXJlIGF2YWlsYWJsZS4gTGV0J3MganVzdCBkb3VibGUtY2hlY2sgdGhhdCB0aGlzIGlzIGFjdHVhbGx5IHRoZSBjYXNlLCBhbmQgSSdsbCB2ZXJpZnkgdGhlIGVudGlyZSBwYXRoLiBJIG5lZWQgdG8gbWFrZSBhYnNvbHV0ZWx5IHN1cmUgdGhlIHByZWNvbmRpdGlvbnMgYXJlIG1ldCBoZXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNjY5NiwiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEwNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yOVQwODoxNDo1OS4yMTA1MTkyMTZaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY1OTc0MzIzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImF0aDEya19tYWNfcmVnaXN0ZXJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEya1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuYz0xMTU1PXN0YXRpYyBpbnQgYXRoMTJrX2NvcmVfaHdfZ3JvdXBfc3RhcnQoc3RydWN0IGF0aDEya19od19ncm91cCAqYWcpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuYy0xMTc4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5jOjExNzk6XFx0cmV0ID0gYXRoMTJrX21hY19yZWdpc3RlcihhZyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmMtMTE4MC1cXHRpZiAoV0FSTl9PTihyZXQpKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9tYWMuYz0xNTIxOD12b2lkIGF0aDEya19tYWNfbWxvX3RlYXJkb3duKHN0cnVjdCBhdGgxMmtfaHdfZ3JvdXAgKmFnKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9tYWMuYy0xNTIzOS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jOjE1MjQwOmludCBhdGgxMmtfbWFjX3JlZ2lzdGVyKHN0cnVjdCBhdGgxMmtfaHdfZ3JvdXAgKmFnKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmMtMTUyNDEte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9tYWMuaD0xNTQ9dm9pZCBhdGgxMmtfbWFjX3VucmVnaXN0ZXIoc3RydWN0IGF0aDEya19od19ncm91cCAqYWcpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmg6MTU1OmludCBhdGgxMmtfbWFjX3JlZ2lzdGVyKHN0cnVjdCBhdGgxMmtfaHdfZ3JvdXAgKmFnKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5oLTE1Ni1pbnQgYXRoMTJrX21hY19hbGxvY2F0ZShzdHJ1Y3QgYXRoMTJrX2h3X2dyb3VwICphZyk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI5VDA4OjE0OjU5LjI3NjUwMDcwOVoiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MzkyODQ5Nzc1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgYSBzdW1tYXJ5IG9mIG15IHVuZGVyc3RhbmRpbmcsIGZyYW1lZCBmcm9tIG15IHBlcnNwZWN0aXZlIGFzIGFuIGV4cGVydDpcblxuKipVbmRlcnN0YW5kaW5nIHRoZSBgYXRoMTJrX21hY19yZWdpc3RlcmAgQ2FsbCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoZSBgYXRoMTJrX21hY19yZWdpc3RlcmAgZnVuY3Rpb24sIGFuZCB0aGUga2V5IHBpZWNlIG9mIGNvbnRleHQgaXMgdGhhdCBpdCdzIGJlaW5nIGNhbGxlZCBmcm9tIHdpdGhpbiBgYXRoMTJrX2NvcmVfaHdfZ3JvdXBfc3RhcnRgLiBUaGlzIGltbWVkaWF0ZWx5IHRlbGxzIG1lIHdlJ3JlIGxpa2VseSBpbiB0aGUgZWFybHkgc3RhZ2VzIG9mIGJyaW5naW5nIHVwIGEgaGFyZHdhcmUgZ3JvdXAsIHByb2JhYmx5IHJlbGF0ZWQgdG8gYSBzcGVjaWZpYyByYWRpbyBvciB2aXJ0dWFsIGludGVyZmFjZSB3aXRoaW4gdGhlIGxhcmdlciBhdGgxMmsgZHJpdmVyIGZyYW1ld29yay4gYGF0aDEya19jb3JlX2h3X2dyb3VwX3N0YXJ0YCBzdWdnZXN0cyBhIGNvb3JkaW5hdGVkIGFjdGlvbiBpbnZvbHZpbmcgbXVsdGlwbGUgaGFyZHdhcmUgZWxlbWVudHMuIFNvLCBgYXRoMTJrX21hY19yZWdpc3RlcmAgaXMgbW9zdCBsaWtlbHkgcmVzcG9uc2libGUgZm9yIHJlZ2lzdGVyaW5nIHRoZSBNQUMgbGF5ZXIgY29tcG9uZW50IG9mIGEgc3BlY2lmaWMgaGFyZHdhcmUgZ3JvdXAuIEknZCBleHBlY3QgaXQgdG8gaW5pdGlhbGl6ZSBkYXRhIHN0cnVjdHVyZXMgcmVsYXRlZCB0byB0aGUgTUFDLCBzZXQgdXAgaW50ZXJydXB0IGhhbmRsZXJzLCBhbmQgcG90ZW50aWFsbHkgY29tbXVuaWNhdGUgd2l0aCB0aGUgaGFyZHdhcmUgYXQgYSBsb3cgbGV2ZWwgdG8gZXN0YWJsaXNoIHRoZSBNQUMncyBvcGVyYXRpb25hbCBzdGF0ZS4gVGhpcyB3b3VsZCBwcm9iYWJseSBpbnZvbHZlIHNldHRpbmcgdXAgRE1BIGNoYW5uZWxzLCBjb25maWd1cmluZyB0cmFuc21pdCBhbmQgcmVjZWl2ZSBxdWV1ZXMsIGFuZCBwZXJoYXBzIGVuYWJsaW5nIHZhcmlvdXMgTUFDIGZlYXR1cmVzLiBJIG5lZWQgdG8gZGl2ZSBkZWVwZXIsIGxpa2VseSBzdGFydGluZyB3aXRoIHRoZSBmdW5jdGlvbidzIGRlZmluaXRpb24gYW5kIGl0cyBjYWxsIHN0YWNrIHRvIGZ1bGx5IHVuZGVyc3RhbmQgdGhlIGZsb3cgYW5kIGRhdGEgdGhpcyByZWdpc3RlciBmdW5jdGlvbiBpcyBtb3ZpbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE3NDk4LCJPdXRwdXRUb2tlbnMiOjQ0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjlUMDg6MTU6MDMuNjY5MzU0NTA0WiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2NTIwMjgwNCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJhdGgxMmtfY29yZV9od19ncm91cF9zdGFydFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5jPTExMjk9c3RhdGljIGludCBhdGgxMmtfY29yZV9tbG9fc2V0dXAoc3RydWN0IGF0aDEya19od19ncm91cCAqYWcpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuYy0xMTU0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5jOjExNTU6c3RhdGljIGludCBhdGgxMmtfY29yZV9od19ncm91cF9zdGFydChzdHJ1Y3QgYXRoMTJrX2h3X2dyb3VwICphZylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuYy0xMTU2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5jPTEyMzA9c3RhdGljIGlubGluZVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5jOjEyMzE6Ym9vbCBhdGgxMmtfY29yZV9od19ncm91cF9zdGFydF9yZWFkeShzdHJ1Y3QgYXRoMTJrX2h3X2dyb3VwICphZylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuYy0xMjMyLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5jPTEzMTE9aW50IGF0aDEya19jb3JlX3FtaV9maXJtd2FyZV9yZWFkeShzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmMtMTM0NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuYzoxMzQ1OlxcdGlmIChhdGgxMmtfY29yZV9od19ncm91cF9zdGFydF9yZWFkeShhZykpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuYzoxMzQ2OlxcdFxcdHJldCA9IGF0aDEya19jb3JlX2h3X2dyb3VwX3N0YXJ0KGFnKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuYy0xMzQ3LVxcdFxcdGlmIChyZXQpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5jPTE2MzY9c3RhdGljIHZvaWQgYXRoMTJrX2NvcmVfcmVzdGFydChzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuYy0xNjU5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5jOjE2NjA6XFx0XFx0aWYgKCFhdGgxMmtfY29yZV9od19ncm91cF9zdGFydF9yZWFkeShhZykpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuYy0xNjYxLVxcdFxcdFxcdG11dGV4X3VubG9jayhcXHUwMDI2YWctXFx1MDAzZW11dGV4KTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjlUMDg6MTU6MDMuNzM0NTY1MDI4WiIsIlNlcSI6MjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY2NjIyOTM0MDUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBVbnJlYWNoYWJpbGl0eSBvZiBUaGlzIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgdGhlIGNvZGUgaXQgdG91Y2hlcy4gSXQncyBjYWxsZWQgZnJvbSBgYXRoMTJrX2NvcmVfcW1pX2Zpcm13YXJlX3JlYWR5YC4gVGhhdCBmdW5jdGlvbiwgYXMgdGhlIG5hbWUgc3VnZ2VzdHMsIGdldHMgdHJpZ2dlcmVkIHdoZW4gdGhlIFFNSSBmaXJtd2FyZSBpcyByZWFkeS4gSXQncyBjbGVhciB0aGF0IHdpdGhvdXQgdGhlIGZpcm13YXJlIGJlaW5nIGxvYWRlZCBhbmQgcmVhZHksIHRoZSBkcml2ZXIgd29uJ3QgcmVnaXN0ZXIgcHJvcGVybHkgd2l0aCBtYWM4MDIxMS4gQW5kIGlmIHRoZSByZWdpc3RyYXRpb24gZG9lc24ndCBoYXBwZW4sIG5vbmUgb2YgdGhvc2UgbWFjODAyMTEgY2FsbGJhY2tzIGFyZSBldmVyIGdvaW5nIHRvIGJlIGFjY2Vzc2libGUuXG5cblRoZXJlZm9yZSwgdW5kZXIgbm9ybWFsIGNpcmN1bXN0YW5jZXMgYW5kIGVzcGVjaWFsbHkgaW4gdGhlIHR5cGUgb2YgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgSSdtIGRlYWxpbmcgd2l0aCBoZXJlLCB3aXRob3V0IHRoZSBhY3R1YWwgaGFyZHdhcmUgYW5kIGZpcm13YXJlLCB0aGlzIGNvZGUgcGF0aCBpcyBzaW1wbHkgdW5yZWFjaGFibGUuXG5cblRoaXMgcGF0Y2gsIGZyb20gd2hhdCBJIGNhbiBzZWUsIGlzIGEgZml4IGZvciBzb21lIHNwYXJzZSB3YXJuaW5ncyByZWxhdGluZyB0byBlbmRpYW5uZXNzLiBJdCB0b3VjaGVzIGBkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuaGAsIGBkZWJ1Z2ZzLmNgLCBgd21pLmNgLCBhbmQgYHdtaS5oYC4gU2luY2UgaXQncyBpbmFjY2Vzc2libGUgaW4gU3l6a2FsbGVyLCBteSBpbml0aWFsIGluc3RpbmN0IGlzIHRvIG1hcmsgdGhpcyBhcyBgV29ydGhGdXp6aW5nPWZhbHNlYC4gSG93ZXZlciwgSSBuZWVkIHRvIGJlIHRob3JvdWdoIGFuZCBleGhhdXN0IGFsbCBhdmVudWVzLlxuXG5MZXQgbWUgdGhpbmvigKYgaXMgdGhlcmUgYW55IG90aGVyIHdheSB0byBwb3RlbnRpYWxseSByZWFjaCB0aGlzIGNvZGU/IElzIHRoZXJlIGEgdGVzdCBmcmFtZXdvcmsgdGhhdCBtaWdodCBtb2NrIHRoZSBmaXJtd2FyZT8gTm9wZSwgSSBkb24ndCBzZWUgYW55IHNpZ24gb2YgdGhlIGBhdGgxMmtgIGRyaXZlciBoYXZpbmcgYSBmaXJtd2FyZSBtb2NraW5nIGZyYW1ld29yayB3aXRoaW4gdGhlIGtlcm5lbCBpdHNlbGYuIEhtbW0sIHdoYXQgYWJvdXQgdXNlcnNwYWNlPyBBcmUgdGhlcmUgYW55IHVzZXJzcGFjZSB0b29scyB0aGF0IGNvdWxkIGluamVjdCBRTUkgbWVzc2FnZXMgdG8gc2ltdWxhdGUgZmlybXdhcmUgcmVhZGluZXNzPyBOb3csIFFNSSBtZXNzYWdlcyBhcmUgZXhjaGFuZ2VkIHZpYSBRUlRSLCBvciBRdWFsY29tbSBJUEMgUm91dGVyLiBDYW4gU3l6a2FsbGVyIGluamVjdCBRUlRSIG1lc3NhZ2VzIHRvIHNpbXVsYXRlIHRoZSBmaXJtd2FyZT9cblxuQWgsIHllcywgU3l6a2FsbGVyICpkb2VzKiBzdXBwb3J0IEFGX1FJUENSVFIgc29ja2V0cy4gVGhhdCdzIGEgcHJvbWlzaW5nIGxlYWQuIExldCdzIHNlZSBpZiB0aGUgZHJpdmVyIGlzIGFjdHVhbGx5IGxpc3RlbmluZyBvbiBRUlRSLiBJIG5lZWQgdG8gaW52ZXN0aWdhdGUgaWYgdGhlcmUncyBhbnkgYWN0aXZlIGNvbW11bmljYXRpb24gd2l0aCB0aGUgUVJUUiBidXMuIElmIHNvLCB0aGVyZSAqbWlnaHQqIGJlIGEgd2F5IHRvIG1hbmlwdWxhdGUgdGhpcyBhbmQgdHJpZ2dlciB0aGUgcmVsZXZhbnQgY29kZSBwYXRocy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTg0MjgsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyODAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjlUMDg6MTU6MTAuMzk2ODYzNzEzWiIsIlNlcSI6MjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNDQ0NjQyNDYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicW1pX2hhbmRsZV9pbml0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmtcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9xbWkuYz00MDM4PWludCBhdGgxMmtfcW1pX2luaXRfc2VydmljZShzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9xbWkuYy00MDQ2LVxcdGFiLVxcdTAwM2VxbWkudGFyZ2V0X21lbV9tb2RlID0gYWItXFx1MDAzZXRhcmdldF9tZW1fbW9kZTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3FtaS5jOjQwNDc6XFx0cmV0ID0gcW1pX2hhbmRsZV9pbml0KFxcdTAwMjZhYi1cXHUwMDNlcW1pLmhhbmRsZSwgQVRIMTJLX1FNSV9SRVNQX0xFTl9NQVgsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9xbWkuYy00MDQ4LVxcdFxcdFxcdCAgICAgIFxcdTAwMjZhdGgxMmtfcW1pX29wcywgYXRoMTJrX3FtaV9tc2dfaGFuZGxlcnMpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yOVQwODoxNToxMC42NDEzMzU2N1oiLCJTZXEiOjI1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1ODg1NTU1NDUxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkludmVzdGlnYXRpbmcgUU1JIENvbW11bmljYXRpb24gaW4gYXRoMTJrKipcblxuT2theSwgc28gYGF0aDEya2AgdXRpbGl6ZXMgYHFtaV9oYW5kbGVfaW5pdGAgZm9yIGl0cyBRTUkgaGFuZGxlIGluaXRpYWxpemF0aW9uLiBUaGF0J3MgdGhlIHN0YXJ0aW5nIHBvaW50LiBOb3csIEknbSB3b25kZXJpbmcuLi4gQ291bGQgYSB1c2Vyc3BhY2UgcHJvY2VzcyBwb3RlbnRpYWxseSBzcG9vZiB0aGUgZmlybXdhcmUncyByb2xlIGJ5IHNlbmRpbmcgUU1JIG1lc3NhZ2VzIGRpcmVjdGx5IHRvIGBhdGgxMmtgPyBJdCdzIGEgdmFsaWQgcXVlc3Rpb24sIGV4cGxvcmluZyB0aGUgcG90ZW50aWFsIGZvciBtYW5pcHVsYXRpbmcgdGhlIFFNSSBpbnRlcmFjdGlvbi5cblxuUmlnaHQsIHRoZSBkcml2ZXIgcmVnaXN0ZXJzIGEgUU1JIGNsaWVudC4gVGhpcyBpcyBrZXkuIEhvbGQgb24gYSBzZWNvbmQuLi4gdGhlIGRyaXZlciAqcmVnaXN0ZXJzKiBhIGNsaWVudCAqYW5kKiBzZW5kcyByZXF1ZXN0cyB0byB0aGUgZmlybXdhcmUg4oCTIHdoaWNoLCBpbXBvcnRhbnRseSwgKmlzKiBhIFFNSSBzZXJ2aWNlLiBUaGF0IGNvbm5lY3Rpb24gaXMgZnVuZGFtZW50YWwgdG8gdGhlIGRyaXZlcidzIG9wZXJhdGlvbi5cblxuTGV0J3MgZGlnIGludG8gYHFtaV9hZGRfbG9va3VwYC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgZXhhY3RseSBob3cgdGhlIGRyaXZlciBpcyBsaW5raW5nIHRoZSBjbGllbnQgYW5kIHNlcnZpY2UuIFRoaXMgd2lsbCB0ZWxsIG1lIG1vcmUgYWJvdXQgaWYgdXNlcnNwYWNlIGNhbiBzcG9vZiB0aGUgbWVzc2FnZXMgb3IgaWYgdGhlcmUgaXMgZnVydGhlciB2YWxpZGF0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxOTM5OCwiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjkyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI5VDA4OjE1OjE2LjUyNjg5NTc0WiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5MTQ2MzU1MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJxbWlfYWRkX2xvb2t1cFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcW1pLmM9NDAzOD1pbnQgYXRoMTJrX3FtaV9pbml0X3NlcnZpY2Uoc3RydWN0IGF0aDEya19iYXNlICphYilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcW1pLmMtNDA2My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3FtaS5jOjQwNjQ6XFx0cmV0ID0gcW1pX2FkZF9sb29rdXAoXFx1MDAyNmFiLVxcdTAwM2VxbWkuaGFuZGxlLCBRTUlfU0VSVklDRV9JRF9XTEZXLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcW1pLmMtNDA2NS1cXHRcXHRcXHQgICAgIEFUSDEyS19RTUlfV0xGV19TRVJWSUNFX1ZFUlNfVjAxLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yOVQwODoxNToxNi42MTgzNjYxNzFaIiwiU2VxIjoyNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTEwNjI3Mjg1NTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHlzaXMgb2YgdGhlIGBhdGgxMmtgIERyaXZlciBDb2RlIGFuZCBGdXp6aW5nIEZlYXNpYmlsaXR5KipcblxuT2theSwgc28gSSd2ZSBiZWVuIGxvb2tpbmcgYXQgdGhpcyBjb2RlIGFuZCBob3cgd2UgY2FuIGVmZmVjdGl2ZWx5IGZ1enogaXQuIE15IGluaXRpYWwgdGhvdWdodCBwcm9jZXNzIGlzIHRoaXM6IHRoZSBkcml2ZXIgaXMgY2xlYXJseSB1c2luZyB0aGUgYFFNSV9TRVJWSUNFX0lEX1dMRldgIHNlcnZpY2UsIHdoaWNoIG1lYW5zIGl0J3MgdGFsa2luZyB0byBmaXJtd2FyZS4gQSB1c2Vyc3BhY2UgcHJvY2VzcyAqY291bGQqIGFjdCBhcyB0aGlzIGZpcm13YXJlIGJ5IGNyZWF0aW5nIGEgUVJUUiBzb2NrZXQgYW5kIHJlZ2lzdGVyaW5nIHRoZSBzZXJ2aWNlIElELiBJIGtub3cgU3l6a2FsbGVyIGNhbiBnZW5lcmF0ZSBgQUZfUUlQQ1JUUmAgc29ja2V0cywgYnV0IHRoZSBtaWxsaW9uLWRvbGxhciBxdWVzdGlvbiBpcywgY2FuIFN5emthbGxlciBtZWFuaW5nZnVsbHkgZW11bGF0ZSB0aGUgKmNvbXBsZXgqIGBRTUlfU0VSVklDRV9JRF9XTEZXYCBzZXJ2aWNlIHJlcXVpcmVkIHRvIGdldCB0aGUgYGF0aDEya2AgZHJpdmVyIHVwIGFuZCBydW5uaW5nP1xuXG5UaGUgYW5zd2VyLCBhcyBmYXIgYXMgSSBjYW4gc2VlLCBpcyBuby4gU3l6a2FsbGVyIGRvZXNuJ3QgaGF2ZSBhIGRlZGljYXRlZCBlbXVsYXRvciBmb3IgYGF0aDEya2AgZmlybXdhcmUuIEl0IHdvdWxkIGJlIGFuIGluY3JlZGlibHkgZGlmZmljdWx0IHRhc2sgdG8gcmFuZG9tbHkgZ2VuZXJhdGUgdGhlICpjb3JyZWN0KiBzZXF1ZW5jZSBvZiBRTUkgcmVzcG9uc2VzIG5lZWRlZCB0byBwYXNzIHRoZSBmaXJtd2FyZSBpbml0aWFsaXphdGlvbi4gVGhpcyBpbml0aWFsaXphdGlvbiBpcyBmYXIgZnJvbSBzaW1wbGU7IGl0IGludm9sdmVzIG11bHRpcGxlIHN0ZXBzOiBzZXJ2aWNlIGxvb2t1cCwgY29ubmVjdGlvbiwgc2VuZGluZyBhbmQgcmVjZWl2aW5nIGEgd2hvbGUgYnVuY2ggb2YgUU1JIG1lc3NhZ2VzIGxpa2UgYFdMRldfSU5EX1JFR0lTVEVSX1JFUV9NU0dfVjAxYCwgYFdMRldfSE9TVF9DQVBfUkVRX01TR19WMDFgLCBgV0xGV19DQUxfUkVQT1JUX1JFUV9NU0dfVjAxYCwgcGx1cyBmaXJtd2FyZSBhbmQgQkRGIGRvd25sb2FkcywgV01JIGluaXRpYWxpemF0aW9uLCBhbmQgYSBcInNlcnZpY2UgcmVhZHlcIiBldmVudC5cblxuUmVhbGlzdGljYWxseSwgaXQncyBwcmFjdGljYWxseSBpbXBvc3NpYmxlIGZvciBhIGZ1enplciB0byBzdHVtYmxlIHVwb24gdGhlIHJpZ2h0IHNlcXVlbmNlIG9mIGNvbXBsZXggUU1JIGFuZCBXTUkgbWVzc2FnZXMgdG8gZXZlbiByZWFjaCB0aGUgbW9kaWZpZWQgY29kZSB3aXRob3V0IGEgZGVkaWNhdGVkIGVtdWxhdG9yIHRoYXQgZnVsbHkgdW5kZXJzdGFuZHMgdGhlIHByb3RvY29sLiBUaGVyZWZvcmUsIGdpdmVuIHRoZSBsZXZlbCBvZiBjb21wbGV4aXR5LCB0aGUgY29kZSBpcyBhbG1vc3QgY2VydGFpbmx5IHVucmVhY2hhYmxlIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQg4oCTIGFuZCB0aGF0J3MgcHJlY2lzZWx5IHdoYXQgU3l6a2FsbGVyIGlzLiBTbywgbXkgaW5pdGlhbCBhc3Nlc3NtZW50IHdvdWxkIGJlIHRvIG1hcmsgdGhpcyBhcyBgV29ydGhGdXp6aW5nPWZhbHNlYC4gVGhlIHJlYXNvbmluZyBpcyB0aGF0IHRoZSBtb2RpZmllZCBjb2RlLCB3aGlsZSBhbiBpbnRlcmVzdGluZyBjaGFuZ2UsIGlzIGEgcGFydCBvZiB0aGUgYGF0aDEya2AgZHJpdmVyJ3MgV01JIGNvbW11bmljYXRpb24gd2l0aCB0aGUgZmlybXdhcmUsIGFuZCBpdCdzIHNpbXBseSB1bnJlYWNoYWJsZSB3aXRob3V0IGVpdGhlciByZWFsIGhhcmR3YXJlIG9yIGEgdmVyeSBjb21wbGV4IGZpcm13YXJlIGVtdWxhdG9yLlxuXG5Ob3csIGxldCBtZSBkb3VibGUtY2hlY2sgdGhlIHBhdGNoIGl0c2VsZi4gSXQgbG9va3MgbGlrZSBpdCdzIGp1c3QgY2hhbmdpbmcgYHUzMmAgdG8gYF9fbGUzMmAgaW4gYHN0cnVjdCBhdGgxMmtfYmFuZF9jYXBgIGFuZCBgc3RydWN0IGF0aDEya193bWlfcGVlcl9hc3NvY19hcmdgIGFuZCBzd2FwcGluZyBgdTMyX2dldF9iaXRzYCB0byBgbGUzMl9nZXRfYml0c2AuIEFoYSEgSXQncyBhIHNwYXJzZS9lbmRpYW5uZXNzIGZpeCEgTm8gZnVuY3Rpb25hbCBjaGFuZ2UuLi4gb3IgaXMgaXQ/IFdhaXQsIGlmIGl0J3MgYW4gZW5kaWFubmVzcyBmaXgsIHRoYXQgKmlzKiBhIGZ1bmN0aW9uYWwgY2hhbmdlIG9uIGJpZy1lbmRpYW4gYXJjaGl0ZWN0dXJlcy5cblxuVGhlIHF1ZXN0aW9uIHRoZW4gYmVjb21lcywgYXJlIGBhdGgxMmtgIGFuZCB0aGUgaGFyZHdhcmUgaXQgc3VwcG9ydHMgZXZlciB1c2VkIG9uIGJpZy1lbmRpYW4gbWFjaGluZXM/IEl0J3MgYSBQQ0kvQUhCIGRyaXZlciBmb3IgUXVhbGNvbW0gV2ktRmkgNywgc28gaXQncyAqcG9zc2libGUqIGJ1dCBoaWdobHkgdW5saWtlbHkuIEhvd2V2ZXIsIGV2ZW4gKmlmKiB0aGlzIGNoYW5nZSAqZG9lcyogYWZmZWN0IGJpZy1lbmRpYW4gc3lzdGVtcywgdGhlIGluYWNjZXNzaWJpbGl0eSB0aHJvdWdoIHN5emthbGxlciByZW1haW5zIHRoZSBjb3JlIGlzc3VlLiBJJ20gc3RpbGwgbm90IGFibGUgdG8gY29uc3RydWN0IGEgbWVhbmluZ2Z1bCBmdXp6ZXIgdGhhdCB3b3VsZCB1bmNvdmVyIGEgcG90ZW50aWFsIGJ1Zy4gVGhlcmVmb3JlLCB0aGUgY29uY2x1c2lvbiB0aGF0IGBXb3J0aEZ1enppbmc9ZmFsc2VgIGlzIHRoZSByaWdodCBvbmUsIHJlZ2FyZGxlc3Mgb2YgdGhlIGVuZGlhbm5lc3MgY2hhbmdlLCBnaXZlbiBpdCdzIHN0aWxsIGZ1bmN0aW9uYWxseSB1bnJlYWNoYWJsZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTk5MTMsIk91dHB1dFRva2VucyI6MTI4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTU1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI5VDA4OjE1OjI3LjY4MTA5OTM4MVoiLCJTZXEiOjI4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQxNjUwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGVuZGlhbm5lc3MgaXNzdWVzIChzcGFyc2Ugd2FybmluZ3MpIGluIHRoZSBhdGgxMmsgZHJpdmVyJ3MgV01JIChXaXJlbGVzcyBNb2R1bGUgSW50ZXJmYWNlKSBjb21tdW5pY2F0aW9uIHdpdGggdGhlIGZpcm13YXJlLiBUaGlzIGNvZGUgaXMgdW5yZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUgYmVjYXVzZSBpdCByZXF1aXJlcyBhY3R1YWwgUXVhbGNvbW0gV2ktRmkgNyBoYXJkd2FyZSBhbmQgaXRzIHByb3ByaWV0YXJ5IGZpcm13YXJlIHRvIGluaXRpYWxpemUgdGhlIGRldmljZSBhbmQgcmVhY2ggdGhlIFdNSSBtZXNzYWdlIHBhcnNpbmcvc2VuZGluZyBsb2dpYy4gU3l6a2FsbGVyIGNhbm5vdCBlbXVsYXRlIHRoZSBjb21wbGV4IFFNSS9XTUkgZmlybXdhcmUgaW50ZXJmYWNlIHJlcXVpcmVkIHRvIHRyaWdnZXIgdGhlc2UgY29kZSBwYXRocy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGVuZGlhbm5lc3MgaXNzdWVzIChzcGFyc2Ugd2FybmluZ3MpIGluIHRoZSBhdGgxMmsgZHJpdmVyJ3MgV01JIChXaXJlbGVzcyBNb2R1bGUgSW50ZXJmYWNlKSBjb21tdW5pY2F0aW9uIHdpdGggdGhlIGZpcm13YXJlLiBUaGlzIGNvZGUgaXMgdW5yZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUgYmVjYXVzZSBpdCByZXF1aXJlcyBhY3R1YWwgUXVhbGNvbW0gV2ktRmkgNyBoYXJkd2FyZSBhbmQgaXRzIHByb3ByaWV0YXJ5IGZpcm13YXJlIHRvIGluaXRpYWxpemUgdGhlIGRldmljZSBhbmQgcmVhY2ggdGhlIFdNSSBtZXNzYWdlIHBhcnNpbmcvc2VuZGluZyBsb2dpYy4gU3l6a2FsbGVyIGNhbm5vdCBlbXVsYXRlIHRoZSBjb21wbGV4IFFNSS9XTUkgZmlybXdhcmUgaW50ZXJmYWNlIHJlcXVpcmVkIHRvIHRyaWdnZXIgdGhlc2UgY29kZSBwYXRocy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowq2ws8[0].run-triage(0) Phase: Succeeded StartedAt: 2026-06-29 08:04:24 +0000 UTC FinishedAt: 2026-06-29 08:15:29 +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+CgkJCTx0ZD4yMDI2LzA2LzI5IDA4OjE0PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGVuZGlhbm5lc3MgaXNzdWVzIChzcGFyc2Ugd2FybmluZ3MpIGluIHRoZSBhdGgxMmsgZHJpdmVyJiMzOTtzIFdNSSAoV2lyZWxlc3MgTW9kdWxlIEludGVyZmFjZSkgY29tbXVuaWNhdGlvbiB3aXRoIHRoZSBmaXJtd2FyZS4gVGhpcyBjb2RlIGlzIHVucmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VIGJlY2F1c2UgaXQgcmVxdWlyZXMgYWN0dWFsIFF1YWxjb21tIFdpLUZpIDcgaGFyZHdhcmUgYW5kIGl0cyBwcm9wcmlldGFyeSBmaXJtd2FyZSB0byBpbml0aWFsaXplIHRoZSBkZXZpY2UgYW5kIHJlYWNoIHRoZSBXTUkgbWVzc2FnZSBwYXJzaW5nL3NlbmRpbmcgbG9naWMuIFN5emthbGxlciBjYW5ub3QgZW11bGF0ZSB0aGUgY29tcGxleCBRTUkvV01JIGZpcm13YXJlIGludGVyZmFjZSByZXF1aXJlZCB0byB0cmlnZ2VyIHRoZXNlIGNvZGUgcGF0aHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI5IDA4OjE0PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgM2JjNmE0MGI3Yjc5ZmNjMTg5YWE2NDhiZDY4MjZhYzdlZDQyYjA5N1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBNb24gSnVuIDI5IDA4OjE0OjA2IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmhcbmluZGV4IGZjNTEyN2I1YzFhMzdmLi4xM2ZhNmU1NGQyNzlkMiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5oXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuaFxuQEAgLTgwOCwxMyAmIzQzOzgwOCwxMyBAQCBzdHJ1Y3QgYXRoMTJrX2JhbmRfY2FwIHtcbiBcdHUzMiBwaHlfaWQ7XG4gXHR1MzIgbWF4X2J3X3N1cHBvcnRlZDtcbiBcdHUzMiBodF9jYXBfaW5mbztcbi1cdHUzMiBoZV9jYXBfaW5mb1syXTtcbiYjNDM7XHRfX2xlMzIgaGVfY2FwX2luZm9bMl07XG4gXHR1MzIgaGVfbWNzO1xuLVx0dTMyIGhlX2NhcF9waHlfaW5mb1tQU09DX0hPU1RfTUFYX1BIWV9TSVpFXTtcbiYjNDM7XHRfX2xlMzIgaGVfY2FwX3BoeV9pbmZvW1BTT0NfSE9TVF9NQVhfUEhZX1NJWkVdO1xuIFx0c3RydWN0IGF0aDEya193bWlfcHBlX3RocmVzaG9sZF9hcmcgaGVfcHBldDtcbiBcdHUxNiBoZV82Z2h6X2NhcGE7XG4tXHR1MzIgZWh0X2NhcF9tYWNfaW5mb1tXTUlfTUFYX0VIVENBUF9NQUNfU0laRV07XG4tXHR1MzIgZWh0X2NhcF9waHlfaW5mb1tXTUlfTUFYX0VIVENBUF9QSFlfU0laRV07XG4mIzQzO1x0X19sZTMyIGVodF9jYXBfbWFjX2luZm9bV01JX01BWF9FSFRDQVBfTUFDX1NJWkVdO1xuJiM0MztcdF9fbGUzMiBlaHRfY2FwX3BoeV9pbmZvW1dNSV9NQVhfRUhUQ0FQX1BIWV9TSVpFXTtcbiBcdHUzMiBlaHRfbWNzXzIwX29ubHk7XG4gXHR1MzIgZWh0X21jc184MDtcbiBcdHUzMiBlaHRfbWNzXzE2MDtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jXG5pbmRleCBkMTdkNGE4ZjFjYjdkMy4uNmIwZDA3NDQ4ZTVkNzIgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmNcbkBAIC00MTAsOCAmIzQzOzQxMCw4IEBAIHN0YXRpYyBib29sIGF0aDEya19oZV9zdXBwb3J0c19leHRyYV9tY3Moc3RydWN0IGF0aDEyayAqYXIsIGludCBmcmVxKVxuIFx0ZWxzZVxuIFx0XHRjYXBfYmFuZCA9IFx1MDAyNmNhcC1cdTAwM2ViYW5kW05MODAyMTFfQkFORF82R0haXTtcbiBcbi1cdGV4dHJhX21jc19zdXBwb3J0ZWQgPSB1MzJfZ2V0X2JpdHMoY2FwX2JhbmQtXHUwMDNlaGVfY2FwX2luZm9bMV0sXG4tXHRcdFx0XHRcdCAgIEhFX0VYVFJBX01DU19TVVBQT1JUKTtcbiYjNDM7XHRleHRyYV9tY3Nfc3VwcG9ydGVkID0gbGUzMl9nZXRfYml0cyhjYXBfYmFuZC1cdTAwM2VoZV9jYXBfaW5mb1sxXSxcbiYjNDM7XHRcdFx0XHRcdCAgICBIRV9FWFRSQV9NQ1NfU1VQUE9SVCk7XG4gXHRyZXR1cm4gZXh0cmFfbWNzX3N1cHBvcnRlZDtcbiB9XG4gXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmNcbmluZGV4IDg0YTMxYjk1M2RiODFhLi4zOWY4Y2E3MzY4ZTMxNyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmNcbkBAIC01NDUsMTIgJiM0Mzs1NDUsMTEgQEAgYXRoMTJrX3B1bGxfbWFjX3BoeV9jYXBfc3ZjX3JlYWR5X2V4dChzdHJ1Y3QgYXRoMTJrX3dtaV9wZGV2ICp3bWlfaGFuZGxlLFxuIFx0XHRjYXBfYmFuZC1cdTAwM2VwaHlfaWQgPSBsZTMyX3RvX2NwdShtYWNfY2Fwcy1cdTAwM2VwaHlfaWQpO1xuIFx0XHRjYXBfYmFuZC1cdTAwM2VtYXhfYndfc3VwcG9ydGVkID0gbGUzMl90b19jcHUobWFjX2NhcHMtXHUwMDNlbWF4X2J3X3N1cHBvcnRlZF8yZyk7XG4gXHRcdGNhcF9iYW5kLVx1MDAzZWh0X2NhcF9pbmZvID0gbGUzMl90b19jcHUobWFjX2NhcHMtXHUwMDNlaHRfY2FwX2luZm9fMmcpO1xuLVx0XHRjYXBfYmFuZC1cdTAwM2VoZV9jYXBfaW5mb1swXSA9IGxlMzJfdG9fY3B1KG1hY19jYXBzLVx1MDAzZWhlX2NhcF9pbmZvXzJnKTtcbi1cdFx0Y2FwX2JhbmQtXHUwMDNlaGVfY2FwX2luZm9bMV0gPSBsZTMyX3RvX2NwdShtYWNfY2Fwcy1cdTAwM2VoZV9jYXBfaW5mb18yZ19leHQpO1xuJiM0MztcdFx0Y2FwX2JhbmQtXHUwMDNlaGVfY2FwX2luZm9bMF0gPSBtYWNfY2Fwcy1cdTAwM2VoZV9jYXBfaW5mb18yZztcbiYjNDM7XHRcdGNhcF9iYW5kLVx1MDAzZWhlX2NhcF9pbmZvWzFdID0gbWFjX2NhcHMtXHUwMDNlaGVfY2FwX2luZm9fMmdfZXh0O1xuIFx0XHRjYXBfYmFuZC1cdTAwM2VoZV9tY3MgPSBsZTMyX3RvX2NwdShtYWNfY2Fwcy1cdTAwM2VoZV9zdXBwX21jc18yZyk7XG4tXHRcdGZvciAoaSA9IDA7IGkgXHUwMDNjIFdNSV9NQVhfSEVDQVBfUEhZX1NJWkU7IGkmIzQzOyYjNDM7KVxuLVx0XHRcdGNhcF9iYW5kLVx1MDAzZWhlX2NhcF9waHlfaW5mb1tpXSA9XG4tXHRcdFx0XHRsZTMyX3RvX2NwdShtYWNfY2Fwcy1cdTAwM2VoZV9jYXBfcGh5X2luZm9fMmdbaV0pO1xuJiM0MztcdFx0bWVtY3B5KFx1MDAyNmNhcF9iYW5kLVx1MDAzZWhlX2NhcF9waHlfaW5mbywgXHUwMDI2bWFjX2NhcHMtXHUwMDNlaGVfY2FwX3BoeV9pbmZvXzJnLFxuJiM0MztcdFx0ICAgICAgIHNpemVvZih1MzIpICogV01JX01BWF9IRUNBUF9QSFlfU0laRSk7XG4gXG4gXHRcdGNhcF9iYW5kLVx1MDAzZWhlX3BwZXQubnVtc3NfbTEgPSBsZTMyX3RvX2NwdShtYWNfY2Fwcy1cdTAwM2VoZV9wcGV0MmcubnVtc3NfbTEpO1xuIFx0XHRjYXBfYmFuZC1cdTAwM2VoZV9wcGV0LnJ1X2JpdF9tYXNrID0gbGUzMl90b19jcHUobWFjX2NhcHMtXHUwMDNlaGVfcHBldDJnLnJ1X2luZm8pO1xuQEAgLTU2NiwxMiAmIzQzOzU2NSwxMSBAQCBhdGgxMmtfcHVsbF9tYWNfcGh5X2NhcF9zdmNfcmVhZHlfZXh0KHN0cnVjdCBhdGgxMmtfd21pX3BkZXYgKndtaV9oYW5kbGUsXG4gXHRcdGNhcF9iYW5kLVx1MDAzZW1heF9id19zdXBwb3J0ZWQgPVxuIFx0XHRcdGxlMzJfdG9fY3B1KG1hY19jYXBzLVx1MDAzZW1heF9id19zdXBwb3J0ZWRfNWcpO1xuIFx0XHRjYXBfYmFuZC1cdTAwM2VodF9jYXBfaW5mbyA9IGxlMzJfdG9fY3B1KG1hY19jYXBzLVx1MDAzZWh0X2NhcF9pbmZvXzVnKTtcbi1cdFx0Y2FwX2JhbmQtXHUwMDNlaGVfY2FwX2luZm9bMF0gPSBsZTMyX3RvX2NwdShtYWNfY2Fwcy1cdTAwM2VoZV9jYXBfaW5mb181Zyk7XG4tXHRcdGNhcF9iYW5kLVx1MDAzZWhlX2NhcF9pbmZvWzFdID0gbGUzMl90b19jcHUobWFjX2NhcHMtXHUwMDNlaGVfY2FwX2luZm9fNWdfZXh0KTtcbiYjNDM7XHRcdGNhcF9iYW5kLVx1MDAzZWhlX2NhcF9pbmZvWzBdID0gbWFjX2NhcHMtXHUwMDNlaGVfY2FwX2luZm9fNWc7XG4mIzQzO1x0XHRjYXBfYmFuZC1cdTAwM2VoZV9jYXBfaW5mb1sxXSA9IG1hY19jYXBzLVx1MDAzZWhlX2NhcF9pbmZvXzVnX2V4dDtcbiBcdFx0Y2FwX2JhbmQtXHUwMDNlaGVfbWNzID0gbGUzMl90b19jcHUobWFjX2NhcHMtXHUwMDNlaGVfc3VwcF9tY3NfNWcpO1xuLVx0XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBXTUlfTUFYX0hFQ0FQX1BIWV9TSVpFOyBpJiM0MzsmIzQzOylcbi1cdFx0XHRjYXBfYmFuZC1cdTAwM2VoZV9jYXBfcGh5X2luZm9baV0gPVxuLVx0XHRcdFx0bGUzMl90b19jcHUobWFjX2NhcHMtXHUwMDNlaGVfY2FwX3BoeV9pbmZvXzVnW2ldKTtcbiYjNDM7XHRcdG1lbWNweShcdTAwMjZjYXBfYmFuZC1cdTAwM2VoZV9jYXBfcGh5X2luZm8sIFx1MDAyNm1hY19jYXBzLVx1MDAzZWhlX2NhcF9waHlfaW5mb181ZyxcbiYjNDM7XHRcdCAgICAgICBzaXplb2YodTMyKSAqIFdNSV9NQVhfSEVDQVBfUEhZX1NJWkUpO1xuIFxuIFx0XHRjYXBfYmFuZC1cdTAwM2VoZV9wcGV0Lm51bXNzX20xID0gbGUzMl90b19jcHUobWFjX2NhcHMtXHUwMDNlaGVfcHBldDVnLm51bXNzX20xKTtcbiBcdFx0Y2FwX2JhbmQtXHUwMDNlaGVfcHBldC5ydV9iaXRfbWFzayA9IGxlMzJfdG9fY3B1KG1hY19jYXBzLVx1MDAzZWhlX3BwZXQ1Zy5ydV9pbmZvKTtcbkBAIC01ODQsMTIgJiM0Mzs1ODIsMTEgQEAgYXRoMTJrX3B1bGxfbWFjX3BoeV9jYXBfc3ZjX3JlYWR5X2V4dChzdHJ1Y3QgYXRoMTJrX3dtaV9wZGV2ICp3bWlfaGFuZGxlLFxuIFx0XHRjYXBfYmFuZC1cdTAwM2VtYXhfYndfc3VwcG9ydGVkID1cbiBcdFx0XHRsZTMyX3RvX2NwdShtYWNfY2Fwcy1cdTAwM2VtYXhfYndfc3VwcG9ydGVkXzVnKTtcbiBcdFx0Y2FwX2JhbmQtXHUwMDNlaHRfY2FwX2luZm8gPSBsZTMyX3RvX2NwdShtYWNfY2Fwcy1cdTAwM2VodF9jYXBfaW5mb181Zyk7XG4tXHRcdGNhcF9iYW5kLVx1MDAzZWhlX2NhcF9pbmZvWzBdID0gbGUzMl90b19jcHUobWFjX2NhcHMtXHUwMDNlaGVfY2FwX2luZm9fNWcpO1xuLVx0XHRjYXBfYmFuZC1cdTAwM2VoZV9jYXBfaW5mb1sxXSA9IGxlMzJfdG9fY3B1KG1hY19jYXBzLVx1MDAzZWhlX2NhcF9pbmZvXzVnX2V4dCk7XG4mIzQzO1x0XHRjYXBfYmFuZC1cdTAwM2VoZV9jYXBfaW5mb1swXSA9IG1hY19jYXBzLVx1MDAzZWhlX2NhcF9pbmZvXzVnO1xuJiM0MztcdFx0Y2FwX2JhbmQtXHUwMDNlaGVfY2FwX2luZm9bMV0gPSBtYWNfY2Fwcy1cdTAwM2VoZV9jYXBfaW5mb181Z19leHQ7XG4gXHRcdGNhcF9iYW5kLVx1MDAzZWhlX21jcyA9IGxlMzJfdG9fY3B1KG1hY19jYXBzLVx1MDAzZWhlX3N1cHBfbWNzXzVnKTtcbi1cdFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgV01JX01BWF9IRUNBUF9QSFlfU0laRTsgaSYjNDM7JiM0MzspXG4tXHRcdFx0Y2FwX2JhbmQtXHUwMDNlaGVfY2FwX3BoeV9pbmZvW2ldID1cbi1cdFx0XHRcdGxlMzJfdG9fY3B1KG1hY19jYXBzLVx1MDAzZWhlX2NhcF9waHlfaW5mb181Z1tpXSk7XG4mIzQzO1x0XHRtZW1jcHkoXHUwMDI2Y2FwX2JhbmQtXHUwMDNlaGVfY2FwX3BoeV9pbmZvLCBcdTAwMjZtYWNfY2Fwcy1cdTAwM2VoZV9jYXBfcGh5X2luZm9fNWcsXG4mIzQzO1x0XHQgICAgICAgc2l6ZW9mKHUzMikgKiBXTUlfTUFYX0hFQ0FQX1BIWV9TSVpFKTtcbiBcbiBcdFx0Y2FwX2JhbmQtXHUwMDNlaGVfcHBldC5udW1zc19tMSA9IGxlMzJfdG9fY3B1KG1hY19jYXBzLVx1MDAzZWhlX3BwZXQ1Zy5udW1zc19tMSk7XG4gXHRcdGNhcF9iYW5kLVx1MDAzZWhlX3BwZXQucnVfYml0X21hc2sgPSBsZTMyX3RvX2NwdShtYWNfY2Fwcy1cdTAwM2VoZV9wcGV0NWcucnVfaW5mbyk7XG5AQCAtMjI4NCwxNCAmIzQzOzIyODEsMTMgQEAgaW50IGF0aDEya193bWlfc2VuZF9wZWVyX2Fzc29jX2NtZChzdHJ1Y3QgYXRoMTJrICphcixcbiBcdGNtZC1cdTAwM2VwZWVyX3BoeW1vZGUgPSBjcHVfdG9fbGUzMihhcmctXHUwMDNlcGVlcl9waHltb2RlKTtcbiBcbiBcdC8qIFVwZGF0ZSAxMWF4IGNhcGFiaWxpdGllcyAqL1xuLVx0Y21kLVx1MDAzZXBlZXJfaGVfY2FwX2luZm8gPSBjcHVfdG9fbGUzMihhcmctXHUwMDNlcGVlcl9oZV9jYXBfbWFjaW5mb1swXSk7XG4tXHRjbWQtXHUwMDNlcGVlcl9oZV9jYXBfaW5mb19leHQgPSBjcHVfdG9fbGUzMihhcmctXHUwMDNlcGVlcl9oZV9jYXBfbWFjaW5mb1sxXSk7XG4mIzQzO1x0Y21kLVx1MDAzZXBlZXJfaGVfY2FwX2luZm8gPSBhcmctXHUwMDNlcGVlcl9oZV9jYXBfbWFjaW5mb1swXTtcbiYjNDM7XHRjbWQtXHUwMDNlcGVlcl9oZV9jYXBfaW5mb19leHQgPSBhcmctXHUwMDNlcGVlcl9oZV9jYXBfbWFjaW5mb1sxXTtcbiBcdGNtZC1cdTAwM2VwZWVyX2hlX2NhcF9pbmZvX2ludGVybmFsID0gY3B1X3RvX2xlMzIoYXJnLVx1MDAzZXBlZXJfaGVfY2FwX21hY2luZm9faW50ZXJuYWwpO1xuIFx0Y21kLVx1MDAzZXBlZXJfaGVfY2Fwc182Z2h6ID0gY3B1X3RvX2xlMzIoYXJnLVx1MDAzZXBlZXJfaGVfY2Fwc182Z2h6KTtcbiBcdGNtZC1cdTAwM2VwZWVyX2hlX29wcyA9IGNwdV90b19sZTMyKGFyZy1cdTAwM2VwZWVyX2hlX29wcyk7XG4tXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBXTUlfTUFYX0hFQ0FQX1BIWV9TSVpFOyBpJiM0MzsmIzQzOylcbi1cdFx0Y21kLVx1MDAzZXBlZXJfaGVfY2FwX3BoeVtpXSA9XG4tXHRcdFx0Y3B1X3RvX2xlMzIoYXJnLVx1MDAzZXBlZXJfaGVfY2FwX3BoeWluZm9baV0pO1xuJiM0MztcdG1lbWNweShjbWQtXHUwMDNlcGVlcl9oZV9jYXBfcGh5LCBhcmctXHUwMDNlcGVlcl9oZV9jYXBfcGh5aW5mbyxcbiYjNDM7XHQgICAgICAgc2l6ZW9mKHUzMikgKiBXTUlfTUFYX0hFQ0FQX1BIWV9TSVpFKTtcbiBcdGNtZC1cdTAwM2VwZWVyX3BwZXQubnVtc3NfbTEgPSBjcHVfdG9fbGUzMihhcmctXHUwMDNlcGVlcl9wcGV0Lm51bXNzX20xKTtcbiBcdGNtZC1cdTAwM2VwZWVyX3BwZXQucnVfaW5mbyA9IGNwdV90b19sZTMyKGFyZy1cdTAwM2VwZWVyX3BwZXQucnVfYml0X21hc2spO1xuIFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgV01JX01BWF9OVU1fU1M7IGkmIzQzOyYjNDM7KVxuQEAgLTUxNTgsMTcgJiM0Mzs1MTU0LDE3IEBAIHN0YXRpYyB2b2lkIGF0aDEya193bWlfZWh0X2NhcHNfcGFyc2Uoc3RydWN0IGF0aDEya19wZGV2ICpwZGV2LCB1MzIgYmFuZCxcbiBcdHU4IGk7XG4gXG4gXHRpZiAoYmFuZCA9PSBOTDgwMjExX0JBTkRfNkdIWilcbi1cdFx0c3VwcG9ydF8zMjBtaHogPSBjYXBfYmFuZC1cdTAwM2VlaHRfY2FwX3BoeV9pbmZvWzBdIFx1MDAyNlxuLVx0XHRcdFx0XHRJRUVFODAyMTFfRUhUX1BIWV9DQVAwXzMyME1IWl9JTl82R0haO1xuJiM0MztcdFx0c3VwcG9ydF8zMjBtaHogPSBsZTMyX3RvX2NwdShjYXBfYmFuZC1cdTAwM2VlaHRfY2FwX3BoeV9pbmZvWzBdKSBcdTAwMjZcbiYjNDM7XHRcdFx0XHQgSUVFRTgwMjExX0VIVF9QSFlfQ0FQMF8zMjBNSFpfSU5fNkdIWjtcbiBcbi1cdGZvciAoaSA9IDA7IGkgXHUwMDNjIFdNSV9NQVhfRUhUQ0FQX01BQ19TSVpFOyBpJiM0MzsmIzQzOylcbi1cdFx0Y2FwX2JhbmQtXHUwMDNlZWh0X2NhcF9tYWNfaW5mb1tpXSA9IGxlMzJfdG9fY3B1KGNhcF9tYWNfaW5mb1tpXSk7XG4mIzQzO1x0bWVtY3B5KGNhcF9iYW5kLVx1MDAzZWVodF9jYXBfbWFjX2luZm8sIGNhcF9tYWNfaW5mbyxcbiYjNDM7XHQgICAgICAgc2l6ZW9mKHUzMikgKiBXTUlfTUFYX0VIVENBUF9NQUNfU0laRSk7XG4gXG4tXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBXTUlfTUFYX0VIVENBUF9QSFlfU0laRTsgaSYjNDM7JiM0MzspXG4tXHRcdGNhcF9iYW5kLVx1MDAzZWVodF9jYXBfcGh5X2luZm9baV0gPSBsZTMyX3RvX2NwdShjYXBfcGh5X2luZm9baV0pO1xuJiM0MztcdG1lbWNweShjYXBfYmFuZC1cdTAwM2VlaHRfY2FwX3BoeV9pbmZvLCBjYXBfcGh5X2luZm8sXG4mIzQzO1x0ICAgICAgIHNpemVvZih1MzIpICogV01JX01BWF9FSFRDQVBfUEhZX1NJWkUpO1xuIFxuIFx0aWYgKGJhbmQgPT0gTkw4MDIxMV9CQU5EXzZHSFopXG4tXHRcdGNhcF9iYW5kLVx1MDAzZWVodF9jYXBfcGh5X2luZm9bMF0gfD0gc3VwcG9ydF8zMjBtaHo7XG4mIzQzO1x0XHRjYXBfYmFuZC1cdTAwM2VlaHRfY2FwX3BoeV9pbmZvWzBdIHw9IGNwdV90b19sZTMyKHN1cHBvcnRfMzIwbWh6KTtcbiBcbiBcdGNhcF9iYW5kLVx1MDAzZWVodF9tY3NfMjBfb25seSA9IGxlMzJfdG9fY3B1KHN1cHBfbWNzWzBdKTtcbiBcdGNhcF9iYW5kLVx1MDAzZWVodF9tY3NfODAgPSBsZTMyX3RvX2NwdShzdXBwX21jc1sxXSk7XG5AQCAtNTI1NiwxMCAmIzQzOzUyNTIsMTIgQEAgc3RhdGljIGludCBhdGgxMmtfd21pX3Rsdl9tYWNfcGh5X2NhcHNfZXh0KHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIsIHUxNiB0YWcsXG4gXG4gXHRpZiAoYWItXHUwMDNlaHdfcGFyYW1zLVx1MDAzZXNpbmdsZV9wZGV2X29ubHkpIHtcbiBcdFx0aWYgKGNhcHMtXHUwMDNlaHdfbW9kZV9pZCA9PSBXTUlfSE9TVF9IV19NT0RFX1NJTkdMRSkge1xuLVx0XHRcdHN1cHBvcnRfMzIwbWh6ID0gbGUzMl90b19jcHUoY2Fwcy1cdTAwM2VlaHRfY2FwX3BoeV9pbmZvXzVnaHpbMF0pIFx1MDAyNlxuLVx0XHRcdFx0XHQgSUVFRTgwMjExX0VIVF9QSFlfQ0FQMF8zMjBNSFpfSU5fNkdIWjtcbiYjNDM7XHRcdFx0c3VwcG9ydF8zMjBtaHogPVxuJiM0MztcdFx0XHRcdGxlMzJfdG9fY3B1KGNhcHMtXHUwMDNlZWh0X2NhcF9waHlfaW5mb181Z2h6WzBdKSBcdTAwMjZcbiYjNDM7XHRcdFx0XHRJRUVFODAyMTFfRUhUX1BIWV9DQVAwXzMyME1IWl9JTl82R0haO1xuIFx0XHRcdGNhcF9iYW5kID0gXHUwMDI2YWItXHUwMDNlcGRldnNbMF0uY2FwLmJhbmRbTkw4MDIxMV9CQU5EXzZHSFpdO1xuLVx0XHRcdGNhcF9iYW5kLVx1MDAzZWVodF9jYXBfcGh5X2luZm9bMF0gfD0gc3VwcG9ydF8zMjBtaHo7XG4mIzQzO1x0XHRcdGNhcF9iYW5kLVx1MDAzZWVodF9jYXBfcGh5X2luZm9bMF0gfD1cbiYjNDM7XHRcdFx0XHRjcHVfdG9fbGUzMihzdXBwb3J0XzMyMG1oeik7XG4gXHRcdH1cbiBcbiBcdFx0aWYgKGFiLVx1MDAzZXdtaV9hYi5wcmVmZXJyZWRfaHdfbW9kZSAhPSBsZTMyX3RvX2NwdShjYXBzLVx1MDAzZWh3X21vZGVfaWQpKVxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5oXG5pbmRleCBjNDUyZTNkNTdhMjlhZC4uYTY4NzAzYmFiMWQ0MDUgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5oXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5oXG5AQCAtMzkzNiwxMSAmIzQzOzM5MzYsMTEgQEAgc3RydWN0IGF0aDEya193bWlfcGVlcl9hc3NvY19hcmcge1xuIFx0dTggcGVlcl9tYWNbRVRIX0FMRU5dO1xuIFxuIFx0Ym9vbCBoZV9mbGFnO1xuLVx0dTMyIHBlZXJfaGVfY2FwX21hY2luZm9bMl07XG4mIzQzO1x0X19sZTMyIHBlZXJfaGVfY2FwX21hY2luZm9bMl07XG4gXHR1MzIgcGVlcl9oZV9jYXBfbWFjaW5mb19pbnRlcm5hbDtcbiBcdHUzMiBwZWVyX2hlX2NhcHNfNmdoejtcbiBcdHUzMiBwZWVyX2hlX29wcztcbi1cdHUzMiBwZWVyX2hlX2NhcF9waHlpbmZvW1dNSV9IT1NUX01BWF9IRUNBUF9QSFlfU0laRV07XG4mIzQzO1x0X19sZTMyIHBlZXJfaGVfY2FwX3BoeWluZm9bV01JX0hPU1RfTUFYX0hFQ0FQX1BIWV9TSVpFXTtcbiBcdHUzMiBwZWVyX2hlX21jc19jb3VudDtcbiBcdHUzMiBwZWVyX2hlX3J4X21jc19zZXRbV01JX0hPU1RfTUFYX0hFX1JBVEVfU0VUXTtcbiBcdHUzMiBwZWVyX2hlX3R4X21jc19zZXRbV01JX0hPU1RfTUFYX0hFX1JBVEVfU0VUXTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yOSAwODoxNDwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBlbmRpYW5uZXNzIGlzc3VlcyAoc3BhcnNlIHdhcm5pbmdzKSBpbiB0aGUgYXRoMTJrIGRyaXZlciYjMzk7cyBXTUkgKFdpcmVsZXNzIE1vZHVsZSBJbnRlcmZhY2UpIGNvbW11bmljYXRpb24gd2l0aCB0aGUgZmlybXdhcmUuIFRoaXMgY29kZSBpcyB1bnJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSBiZWNhdXNlIGl0IHJlcXVpcmVzIGFjdHVhbCBRdWFsY29tbSBXaS1GaSA3IGhhcmR3YXJlIGFuZCBpdHMgcHJvcHJpZXRhcnkgZmlybXdhcmUgdG8gaW5pdGlhbGl6ZSB0aGUgZGV2aWNlIGFuZCByZWFjaCB0aGUgV01JIG1lc3NhZ2UgcGFyc2luZy9zZW5kaW5nIGxvZ2ljLiBTeXprYWxsZXIgY2Fubm90IGVtdWxhdGUgdGhlIGNvbXBsZXggUU1JL1dNSSBmaXJtd2FyZSBpbnRlcmZhY2UgcmVxdWlyZWQgdG8gdHJpZ2dlciB0aGVzZSBjb2RlIHBhdGhzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgM2JjNmE0MGI3Yjc5ZmNjMTg5YWE2NDhiZDY4MjZhYzdlZDQyYjA5NwpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBNb24gSnVuIDI5IDA4OjE0OjA2IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuaAppbmRleCBmYzUxMjdiNWMxYTM3Zi4uMTNmYTZlNTRkMjc5ZDIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5oCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5oCkBAIC04MDgsMTMgJiM0Mzs4MDgsMTMgQEAgc3RydWN0IGF0aDEya19iYW5kX2NhcCB7CiAJdTMyIHBoeV9pZDsKIAl1MzIgbWF4X2J3X3N1cHBvcnRlZDsKIAl1MzIgaHRfY2FwX2luZm87Ci0JdTMyIGhlX2NhcF9pbmZvWzJdOwomIzQzOwlfX2xlMzIgaGVfY2FwX2luZm9bMl07CiAJdTMyIGhlX21jczsKLQl1MzIgaGVfY2FwX3BoeV9pbmZvW1BTT0NfSE9TVF9NQVhfUEhZX1NJWkVdOwomIzQzOwlfX2xlMzIgaGVfY2FwX3BoeV9pbmZvW1BTT0NfSE9TVF9NQVhfUEhZX1NJWkVdOwogCXN0cnVjdCBhdGgxMmtfd21pX3BwZV90aHJlc2hvbGRfYXJnIGhlX3BwZXQ7CiAJdTE2IGhlXzZnaHpfY2FwYTsKLQl1MzIgZWh0X2NhcF9tYWNfaW5mb1tXTUlfTUFYX0VIVENBUF9NQUNfU0laRV07Ci0JdTMyIGVodF9jYXBfcGh5X2luZm9bV01JX01BWF9FSFRDQVBfUEhZX1NJWkVdOwomIzQzOwlfX2xlMzIgZWh0X2NhcF9tYWNfaW5mb1tXTUlfTUFYX0VIVENBUF9NQUNfU0laRV07CiYjNDM7CV9fbGUzMiBlaHRfY2FwX3BoeV9pbmZvW1dNSV9NQVhfRUhUQ0FQX1BIWV9TSVpFXTsKIAl1MzIgZWh0X21jc18yMF9vbmx5OwogCXUzMiBlaHRfbWNzXzgwOwogCXUzMiBlaHRfbWNzXzE2MDsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmMKaW5kZXggZDE3ZDRhOGYxY2I3ZDMuLjZiMGQwNzQ0OGU1ZDcyIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYwpAQCAtNDEwLDggJiM0Mzs0MTAsOCBAQCBzdGF0aWMgYm9vbCBhdGgxMmtfaGVfc3VwcG9ydHNfZXh0cmFfbWNzKHN0cnVjdCBhdGgxMmsgKmFyLCBpbnQgZnJlcSkKIAllbHNlCiAJCWNhcF9iYW5kID0gJmFtcDtjYXAtJmd0O2JhbmRbTkw4MDIxMV9CQU5EXzZHSFpdOwogCi0JZXh0cmFfbWNzX3N1cHBvcnRlZCA9IHUzMl9nZXRfYml0cyhjYXBfYmFuZC0mZ3Q7aGVfY2FwX2luZm9bMV0sCi0JCQkJCSAgIEhFX0VYVFJBX01DU19TVVBQT1JUKTsKJiM0MzsJZXh0cmFfbWNzX3N1cHBvcnRlZCA9IGxlMzJfZ2V0X2JpdHMoY2FwX2JhbmQtJmd0O2hlX2NhcF9pbmZvWzFdLAomIzQzOwkJCQkJICAgIEhFX0VYVFJBX01DU19TVVBQT1JUKTsKIAlyZXR1cm4gZXh0cmFfbWNzX3N1cHBvcnRlZDsKIH0KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmMKaW5kZXggODRhMzFiOTUzZGI4MWEuLjM5ZjhjYTczNjhlMzE3IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmMKQEAgLTU0NSwxMiAmIzQzOzU0NSwxMSBAQCBhdGgxMmtfcHVsbF9tYWNfcGh5X2NhcF9zdmNfcmVhZHlfZXh0KHN0cnVjdCBhdGgxMmtfd21pX3BkZXYgKndtaV9oYW5kbGUsCiAJCWNhcF9iYW5kLSZndDtwaHlfaWQgPSBsZTMyX3RvX2NwdShtYWNfY2Fwcy0mZ3Q7cGh5X2lkKTsKIAkJY2FwX2JhbmQtJmd0O21heF9id19zdXBwb3J0ZWQgPSBsZTMyX3RvX2NwdShtYWNfY2Fwcy0mZ3Q7bWF4X2J3X3N1cHBvcnRlZF8yZyk7CiAJCWNhcF9iYW5kLSZndDtodF9jYXBfaW5mbyA9IGxlMzJfdG9fY3B1KG1hY19jYXBzLSZndDtodF9jYXBfaW5mb18yZyk7Ci0JCWNhcF9iYW5kLSZndDtoZV9jYXBfaW5mb1swXSA9IGxlMzJfdG9fY3B1KG1hY19jYXBzLSZndDtoZV9jYXBfaW5mb18yZyk7Ci0JCWNhcF9iYW5kLSZndDtoZV9jYXBfaW5mb1sxXSA9IGxlMzJfdG9fY3B1KG1hY19jYXBzLSZndDtoZV9jYXBfaW5mb18yZ19leHQpOwomIzQzOwkJY2FwX2JhbmQtJmd0O2hlX2NhcF9pbmZvWzBdID0gbWFjX2NhcHMtJmd0O2hlX2NhcF9pbmZvXzJnOwomIzQzOwkJY2FwX2JhbmQtJmd0O2hlX2NhcF9pbmZvWzFdID0gbWFjX2NhcHMtJmd0O2hlX2NhcF9pbmZvXzJnX2V4dDsKIAkJY2FwX2JhbmQtJmd0O2hlX21jcyA9IGxlMzJfdG9fY3B1KG1hY19jYXBzLSZndDtoZV9zdXBwX21jc18yZyk7Ci0JCWZvciAoaSA9IDA7IGkgJmx0OyBXTUlfTUFYX0hFQ0FQX1BIWV9TSVpFOyBpJiM0MzsmIzQzOykKLQkJCWNhcF9iYW5kLSZndDtoZV9jYXBfcGh5X2luZm9baV0gPQotCQkJCWxlMzJfdG9fY3B1KG1hY19jYXBzLSZndDtoZV9jYXBfcGh5X2luZm9fMmdbaV0pOwomIzQzOwkJbWVtY3B5KCZhbXA7Y2FwX2JhbmQtJmd0O2hlX2NhcF9waHlfaW5mbywgJmFtcDttYWNfY2Fwcy0mZ3Q7aGVfY2FwX3BoeV9pbmZvXzJnLAomIzQzOwkJICAgICAgIHNpemVvZih1MzIpICogV01JX01BWF9IRUNBUF9QSFlfU0laRSk7CiAKIAkJY2FwX2JhbmQtJmd0O2hlX3BwZXQubnVtc3NfbTEgPSBsZTMyX3RvX2NwdShtYWNfY2Fwcy0mZ3Q7aGVfcHBldDJnLm51bXNzX20xKTsKIAkJY2FwX2JhbmQtJmd0O2hlX3BwZXQucnVfYml0X21hc2sgPSBsZTMyX3RvX2NwdShtYWNfY2Fwcy0mZ3Q7aGVfcHBldDJnLnJ1X2luZm8pOwpAQCAtNTY2LDEyICYjNDM7NTY1LDExIEBAIGF0aDEya19wdWxsX21hY19waHlfY2FwX3N2Y19yZWFkeV9leHQoc3RydWN0IGF0aDEya193bWlfcGRldiAqd21pX2hhbmRsZSwKIAkJY2FwX2JhbmQtJmd0O21heF9id19zdXBwb3J0ZWQgPQogCQkJbGUzMl90b19jcHUobWFjX2NhcHMtJmd0O21heF9id19zdXBwb3J0ZWRfNWcpOwogCQljYXBfYmFuZC0mZ3Q7aHRfY2FwX2luZm8gPSBsZTMyX3RvX2NwdShtYWNfY2Fwcy0mZ3Q7aHRfY2FwX2luZm9fNWcpOwotCQljYXBfYmFuZC0mZ3Q7aGVfY2FwX2luZm9bMF0gPSBsZTMyX3RvX2NwdShtYWNfY2Fwcy0mZ3Q7aGVfY2FwX2luZm9fNWcpOwotCQljYXBfYmFuZC0mZ3Q7aGVfY2FwX2luZm9bMV0gPSBsZTMyX3RvX2NwdShtYWNfY2Fwcy0mZ3Q7aGVfY2FwX2luZm9fNWdfZXh0KTsKJiM0MzsJCWNhcF9iYW5kLSZndDtoZV9jYXBfaW5mb1swXSA9IG1hY19jYXBzLSZndDtoZV9jYXBfaW5mb181ZzsKJiM0MzsJCWNhcF9iYW5kLSZndDtoZV9jYXBfaW5mb1sxXSA9IG1hY19jYXBzLSZndDtoZV9jYXBfaW5mb181Z19leHQ7CiAJCWNhcF9iYW5kLSZndDtoZV9tY3MgPSBsZTMyX3RvX2NwdShtYWNfY2Fwcy0mZ3Q7aGVfc3VwcF9tY3NfNWcpOwotCQlmb3IgKGkgPSAwOyBpICZsdDsgV01JX01BWF9IRUNBUF9QSFlfU0laRTsgaSYjNDM7JiM0MzspCi0JCQljYXBfYmFuZC0mZ3Q7aGVfY2FwX3BoeV9pbmZvW2ldID0KLQkJCQlsZTMyX3RvX2NwdShtYWNfY2Fwcy0mZ3Q7aGVfY2FwX3BoeV9pbmZvXzVnW2ldKTsKJiM0MzsJCW1lbWNweSgmYW1wO2NhcF9iYW5kLSZndDtoZV9jYXBfcGh5X2luZm8sICZhbXA7bWFjX2NhcHMtJmd0O2hlX2NhcF9waHlfaW5mb181ZywKJiM0MzsJCSAgICAgICBzaXplb2YodTMyKSAqIFdNSV9NQVhfSEVDQVBfUEhZX1NJWkUpOwogCiAJCWNhcF9iYW5kLSZndDtoZV9wcGV0Lm51bXNzX20xID0gbGUzMl90b19jcHUobWFjX2NhcHMtJmd0O2hlX3BwZXQ1Zy5udW1zc19tMSk7CiAJCWNhcF9iYW5kLSZndDtoZV9wcGV0LnJ1X2JpdF9tYXNrID0gbGUzMl90b19jcHUobWFjX2NhcHMtJmd0O2hlX3BwZXQ1Zy5ydV9pbmZvKTsKQEAgLTU4NCwxMiAmIzQzOzU4MiwxMSBAQCBhdGgxMmtfcHVsbF9tYWNfcGh5X2NhcF9zdmNfcmVhZHlfZXh0KHN0cnVjdCBhdGgxMmtfd21pX3BkZXYgKndtaV9oYW5kbGUsCiAJCWNhcF9iYW5kLSZndDttYXhfYndfc3VwcG9ydGVkID0KIAkJCWxlMzJfdG9fY3B1KG1hY19jYXBzLSZndDttYXhfYndfc3VwcG9ydGVkXzVnKTsKIAkJY2FwX2JhbmQtJmd0O2h0X2NhcF9pbmZvID0gbGUzMl90b19jcHUobWFjX2NhcHMtJmd0O2h0X2NhcF9pbmZvXzVnKTsKLQkJY2FwX2JhbmQtJmd0O2hlX2NhcF9pbmZvWzBdID0gbGUzMl90b19jcHUobWFjX2NhcHMtJmd0O2hlX2NhcF9pbmZvXzVnKTsKLQkJY2FwX2JhbmQtJmd0O2hlX2NhcF9pbmZvWzFdID0gbGUzMl90b19jcHUobWFjX2NhcHMtJmd0O2hlX2NhcF9pbmZvXzVnX2V4dCk7CiYjNDM7CQljYXBfYmFuZC0mZ3Q7aGVfY2FwX2luZm9bMF0gPSBtYWNfY2Fwcy0mZ3Q7aGVfY2FwX2luZm9fNWc7CiYjNDM7CQljYXBfYmFuZC0mZ3Q7aGVfY2FwX2luZm9bMV0gPSBtYWNfY2Fwcy0mZ3Q7aGVfY2FwX2luZm9fNWdfZXh0OwogCQljYXBfYmFuZC0mZ3Q7aGVfbWNzID0gbGUzMl90b19jcHUobWFjX2NhcHMtJmd0O2hlX3N1cHBfbWNzXzVnKTsKLQkJZm9yIChpID0gMDsgaSAmbHQ7IFdNSV9NQVhfSEVDQVBfUEhZX1NJWkU7IGkmIzQzOyYjNDM7KQotCQkJY2FwX2JhbmQtJmd0O2hlX2NhcF9waHlfaW5mb1tpXSA9Ci0JCQkJbGUzMl90b19jcHUobWFjX2NhcHMtJmd0O2hlX2NhcF9waHlfaW5mb181Z1tpXSk7CiYjNDM7CQltZW1jcHkoJmFtcDtjYXBfYmFuZC0mZ3Q7aGVfY2FwX3BoeV9pbmZvLCAmYW1wO21hY19jYXBzLSZndDtoZV9jYXBfcGh5X2luZm9fNWcsCiYjNDM7CQkgICAgICAgc2l6ZW9mKHUzMikgKiBXTUlfTUFYX0hFQ0FQX1BIWV9TSVpFKTsKIAogCQljYXBfYmFuZC0mZ3Q7aGVfcHBldC5udW1zc19tMSA9IGxlMzJfdG9fY3B1KG1hY19jYXBzLSZndDtoZV9wcGV0NWcubnVtc3NfbTEpOwogCQljYXBfYmFuZC0mZ3Q7aGVfcHBldC5ydV9iaXRfbWFzayA9IGxlMzJfdG9fY3B1KG1hY19jYXBzLSZndDtoZV9wcGV0NWcucnVfaW5mbyk7CkBAIC0yMjg0LDE0ICYjNDM7MjI4MSwxMyBAQCBpbnQgYXRoMTJrX3dtaV9zZW5kX3BlZXJfYXNzb2NfY21kKHN0cnVjdCBhdGgxMmsgKmFyLAogCWNtZC0mZ3Q7cGVlcl9waHltb2RlID0gY3B1X3RvX2xlMzIoYXJnLSZndDtwZWVyX3BoeW1vZGUpOwogCiAJLyogVXBkYXRlIDExYXggY2FwYWJpbGl0aWVzICovCi0JY21kLSZndDtwZWVyX2hlX2NhcF9pbmZvID0gY3B1X3RvX2xlMzIoYXJnLSZndDtwZWVyX2hlX2NhcF9tYWNpbmZvWzBdKTsKLQljbWQtJmd0O3BlZXJfaGVfY2FwX2luZm9fZXh0ID0gY3B1X3RvX2xlMzIoYXJnLSZndDtwZWVyX2hlX2NhcF9tYWNpbmZvWzFdKTsKJiM0MzsJY21kLSZndDtwZWVyX2hlX2NhcF9pbmZvID0gYXJnLSZndDtwZWVyX2hlX2NhcF9tYWNpbmZvWzBdOwomIzQzOwljbWQtJmd0O3BlZXJfaGVfY2FwX2luZm9fZXh0ID0gYXJnLSZndDtwZWVyX2hlX2NhcF9tYWNpbmZvWzFdOwogCWNtZC0mZ3Q7cGVlcl9oZV9jYXBfaW5mb19pbnRlcm5hbCA9IGNwdV90b19sZTMyKGFyZy0mZ3Q7cGVlcl9oZV9jYXBfbWFjaW5mb19pbnRlcm5hbCk7CiAJY21kLSZndDtwZWVyX2hlX2NhcHNfNmdoeiA9IGNwdV90b19sZTMyKGFyZy0mZ3Q7cGVlcl9oZV9jYXBzXzZnaHopOwogCWNtZC0mZ3Q7cGVlcl9oZV9vcHMgPSBjcHVfdG9fbGUzMihhcmctJmd0O3BlZXJfaGVfb3BzKTsKLQlmb3IgKGkgPSAwOyBpICZsdDsgV01JX01BWF9IRUNBUF9QSFlfU0laRTsgaSYjNDM7JiM0MzspCi0JCWNtZC0mZ3Q7cGVlcl9oZV9jYXBfcGh5W2ldID0KLQkJCWNwdV90b19sZTMyKGFyZy0mZ3Q7cGVlcl9oZV9jYXBfcGh5aW5mb1tpXSk7CiYjNDM7CW1lbWNweShjbWQtJmd0O3BlZXJfaGVfY2FwX3BoeSwgYXJnLSZndDtwZWVyX2hlX2NhcF9waHlpbmZvLAomIzQzOwkgICAgICAgc2l6ZW9mKHUzMikgKiBXTUlfTUFYX0hFQ0FQX1BIWV9TSVpFKTsKIAljbWQtJmd0O3BlZXJfcHBldC5udW1zc19tMSA9IGNwdV90b19sZTMyKGFyZy0mZ3Q7cGVlcl9wcGV0Lm51bXNzX20xKTsKIAljbWQtJmd0O3BlZXJfcHBldC5ydV9pbmZvID0gY3B1X3RvX2xlMzIoYXJnLSZndDtwZWVyX3BwZXQucnVfYml0X21hc2spOwogCWZvciAoaSA9IDA7IGkgJmx0OyBXTUlfTUFYX05VTV9TUzsgaSYjNDM7JiM0MzspCkBAIC01MTU4LDE3ICYjNDM7NTE1NCwxNyBAQCBzdGF0aWMgdm9pZCBhdGgxMmtfd21pX2VodF9jYXBzX3BhcnNlKHN0cnVjdCBhdGgxMmtfcGRldiAqcGRldiwgdTMyIGJhbmQsCiAJdTggaTsKIAogCWlmIChiYW5kID09IE5MODAyMTFfQkFORF82R0haKQotCQlzdXBwb3J0XzMyMG1oeiA9IGNhcF9iYW5kLSZndDtlaHRfY2FwX3BoeV9pbmZvWzBdICZhbXA7Ci0JCQkJCUlFRUU4MDIxMV9FSFRfUEhZX0NBUDBfMzIwTUhaX0lOXzZHSFo7CiYjNDM7CQlzdXBwb3J0XzMyMG1oeiA9IGxlMzJfdG9fY3B1KGNhcF9iYW5kLSZndDtlaHRfY2FwX3BoeV9pbmZvWzBdKSAmYW1wOwomIzQzOwkJCQkgSUVFRTgwMjExX0VIVF9QSFlfQ0FQMF8zMjBNSFpfSU5fNkdIWjsKIAotCWZvciAoaSA9IDA7IGkgJmx0OyBXTUlfTUFYX0VIVENBUF9NQUNfU0laRTsgaSYjNDM7JiM0MzspCi0JCWNhcF9iYW5kLSZndDtlaHRfY2FwX21hY19pbmZvW2ldID0gbGUzMl90b19jcHUoY2FwX21hY19pbmZvW2ldKTsKJiM0MzsJbWVtY3B5KGNhcF9iYW5kLSZndDtlaHRfY2FwX21hY19pbmZvLCBjYXBfbWFjX2luZm8sCiYjNDM7CSAgICAgICBzaXplb2YodTMyKSAqIFdNSV9NQVhfRUhUQ0FQX01BQ19TSVpFKTsKIAotCWZvciAoaSA9IDA7IGkgJmx0OyBXTUlfTUFYX0VIVENBUF9QSFlfU0laRTsgaSYjNDM7JiM0MzspCi0JCWNhcF9iYW5kLSZndDtlaHRfY2FwX3BoeV9pbmZvW2ldID0gbGUzMl90b19jcHUoY2FwX3BoeV9pbmZvW2ldKTsKJiM0MzsJbWVtY3B5KGNhcF9iYW5kLSZndDtlaHRfY2FwX3BoeV9pbmZvLCBjYXBfcGh5X2luZm8sCiYjNDM7CSAgICAgICBzaXplb2YodTMyKSAqIFdNSV9NQVhfRUhUQ0FQX1BIWV9TSVpFKTsKIAogCWlmIChiYW5kID09IE5MODAyMTFfQkFORF82R0haKQotCQljYXBfYmFuZC0mZ3Q7ZWh0X2NhcF9waHlfaW5mb1swXSB8PSBzdXBwb3J0XzMyMG1oejsKJiM0MzsJCWNhcF9iYW5kLSZndDtlaHRfY2FwX3BoeV9pbmZvWzBdIHw9IGNwdV90b19sZTMyKHN1cHBvcnRfMzIwbWh6KTsKIAogCWNhcF9iYW5kLSZndDtlaHRfbWNzXzIwX29ubHkgPSBsZTMyX3RvX2NwdShzdXBwX21jc1swXSk7CiAJY2FwX2JhbmQtJmd0O2VodF9tY3NfODAgPSBsZTMyX3RvX2NwdShzdXBwX21jc1sxXSk7CkBAIC01MjU2LDEwICYjNDM7NTI1MiwxMiBAQCBzdGF0aWMgaW50IGF0aDEya193bWlfdGx2X21hY19waHlfY2Fwc19leHQoc3RydWN0IGF0aDEya19iYXNlICphYiwgdTE2IHRhZywKIAogCWlmIChhYi0mZ3Q7aHdfcGFyYW1zLSZndDtzaW5nbGVfcGRldl9vbmx5KSB7CiAJCWlmIChjYXBzLSZndDtod19tb2RlX2lkID09IFdNSV9IT1NUX0hXX01PREVfU0lOR0xFKSB7Ci0JCQlzdXBwb3J0XzMyMG1oeiA9IGxlMzJfdG9fY3B1KGNhcHMtJmd0O2VodF9jYXBfcGh5X2luZm9fNWdoelswXSkgJmFtcDsKLQkJCQkJIElFRUU4MDIxMV9FSFRfUEhZX0NBUDBfMzIwTUhaX0lOXzZHSFo7CiYjNDM7CQkJc3VwcG9ydF8zMjBtaHogPQomIzQzOwkJCQlsZTMyX3RvX2NwdShjYXBzLSZndDtlaHRfY2FwX3BoeV9pbmZvXzVnaHpbMF0pICZhbXA7CiYjNDM7CQkJCUlFRUU4MDIxMV9FSFRfUEhZX0NBUDBfMzIwTUhaX0lOXzZHSFo7CiAJCQljYXBfYmFuZCA9ICZhbXA7YWItJmd0O3BkZXZzWzBdLmNhcC5iYW5kW05MODAyMTFfQkFORF82R0haXTsKLQkJCWNhcF9iYW5kLSZndDtlaHRfY2FwX3BoeV9pbmZvWzBdIHw9IHN1cHBvcnRfMzIwbWh6OwomIzQzOwkJCWNhcF9iYW5kLSZndDtlaHRfY2FwX3BoeV9pbmZvWzBdIHw9CiYjNDM7CQkJCWNwdV90b19sZTMyKHN1cHBvcnRfMzIwbWh6KTsKIAkJfQogCiAJCWlmIChhYi0mZ3Q7d21pX2FiLnByZWZlcnJlZF9od19tb2RlICE9IGxlMzJfdG9fY3B1KGNhcHMtJmd0O2h3X21vZGVfaWQpKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmgKaW5kZXggYzQ1MmUzZDU3YTI5YWQuLmE2ODcwM2JhYjFkNDA1IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5oCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmgKQEAgLTM5MzYsMTEgJiM0MzszOTM2LDExIEBAIHN0cnVjdCBhdGgxMmtfd21pX3BlZXJfYXNzb2NfYXJnIHsKIAl1OCBwZWVyX21hY1tFVEhfQUxFTl07CiAKIAlib29sIGhlX2ZsYWc7Ci0JdTMyIHBlZXJfaGVfY2FwX21hY2luZm9bMl07CiYjNDM7CV9fbGUzMiBwZWVyX2hlX2NhcF9tYWNpbmZvWzJdOwogCXUzMiBwZWVyX2hlX2NhcF9tYWNpbmZvX2ludGVybmFsOwogCXUzMiBwZWVyX2hlX2NhcHNfNmdoejsKIAl1MzIgcGVlcl9oZV9vcHM7Ci0JdTMyIHBlZXJfaGVfY2FwX3BoeWluZm9bV01JX0hPU1RfTUFYX0hFQ0FQX1BIWV9TSVpFXTsKJiM0MzsJX19sZTMyIHBlZXJfaGVfY2FwX3BoeWluZm9bV01JX0hPU1RfTUFYX0hFQ0FQX1BIWV9TSVpFXTsKIAl1MzIgcGVlcl9oZV9tY3NfY291bnQ7CiAJdTMyIHBlZXJfaGVfcnhfbWNzX3NldFtXTUlfSE9TVF9NQVhfSEVfUkFURV9TRVRdOwogCXUzMiBwZWVyX2hlX3R4X21jc19zZXRbV01JX0hPU1RfTUFYX0hFX1JBVEVfU0VUXTsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjkgMDg6MTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTg3NAoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDI3NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipFbmRpYW5uZXNzIEZpeCBmb3IgYXRoMTJrIERyaXZlcioqCgpPa2F5LCBzbyB0aGVyZSYjMzk7cyBhIHBhdGNoIHN1Ym1pdHRlZCB0aGF0JiMzOTtzIGNhdWdodCBteSBleWUuIEl0IHNlZW1zIHRvIGJlIGFkZHJlc3NpbmcgcG90ZW50aWFsIGVuZGlhbm5lc3MgaXNzdWVzIHdpdGhpbiB0aGUgYGF0aDEya2AgZHJpdmVyLiBTcGVjaWZpY2FsbHksIGl0JiMzOTtzIGNoYW5naW5nIHRoZSBkYXRhIHR5cGVzIG9mIGNlcnRhaW4gZmllbGRzIGluIGBzdHJ1Y3QgYXRoMTJrX2JhbmRfY2FwYCBhbmQgYHN0cnVjdCBhdGgxMmtfd21pX3BlZXJfYXNzb2NfYXJnYCBmcm9tIGB1MzJgIHRvIGBfX2xlMzJgLiBUaGUgcGF0Y2ggYWxzbyBzd2l0Y2hlcyB0aGUgYWNjZXNzIGFuZCBjb3B5IG1ldGhvZHMgZnJvbSB0aGUgbW9yZSBjdW1iZXJzb21lIGxvb3AtYmFzZWQgY29udmVyc2lvbnMgdG8gYG1lbWNweWAuIFRoYXQgc3Ryb25nbHkgc3VnZ2VzdHMgdGhleSYjMzk7cmUgdHJ5aW5nIHRvIHByZXZlbnQgdGhvc2UgZHJlYWRlZCBzcGFyc2Ugd2FybmluZ3MgcmVsYXRlZCB0byBieXRlIG9yZGVyLgoKTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsICYjMzQ7Q2FuIHdlIGFjdHVhbGx5IHRlc3QgdGhpcywgYW5kIGlmIHNvLCBob3c/JiMzNDsgYGF0aDEya2AsIGlmIEkgcmVjYWxsIGNvcnJlY3RseSwgaXMgdGhlIGRyaXZlciBmb3IgUXVhbGNvbW0mIzM5O3MgV2ktRmkgNyBkZXZpY2VzLiBUaGF0IG5hcnJvd3MgdGhpbmdzIGRvd24gYSBiaXQsIHdoaWNoIGlzIGdvb2QuIEZ1enppbmcgdGhpcyBpcyBnb2luZyB0byBiZSB0aGUgY2hhbGxlbmdlLiBIYXJkd2FyZSBkcml2ZXJzIGxpa2UgdGhpcyBhcmUgbm90b3Jpb3VzbHkgZGlmZmljdWx0IHRvIGZ1enogZGlyZWN0bHksIGVzcGVjaWFsbHkgaWYgdGhlcmUgaXNuJiMzOTt0IGFuIGVxdWl2YWxlbnQgaGFyZHdhcmUgZW11bGF0aW9uIGxheWVyLiBTb21ldGhpbmcgbGlrZSBgbWFjODAyMTFfaHdzaW1gIHdvdWxkIGJlIGlkZWFsLCBidXQgdGhhdCYjMzk7cyBmb3IgdGhlIGdlbmVyaWMgYG1hYzgwMjExYCBmcmFtZXdvcmssIG5vdCBuZWNlc3NhcmlseSBzcGVjaWZpYyB0byBgYXRoMTJrYC4gV2FpdC4uLiBpc24mIzM5O3QgYGF0aDEya2AgYSBQQ0kgb3IgQUhCIGRyaXZlcj8gVGhhdCBjaGFuZ2VzIHRoaW5ncy4gTGV0IG1lIGp1c3QgdGFrZSBhIGxvb2sgYXQgdGhlIGBLY29uZmlnYCBmaWxlIHVuZGVyIGBkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrYCB0byBjb25maXJtLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI5IDA4OjE0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBBVEgxMksmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlLUNsZWFyXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWc6Mjpjb25maWcgQVRIMTJLXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O1F1YWxjb21tIFdpLUZpIDcgc3VwcG9ydCAoYXRoMTJrKVwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZy0xNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZzoxNzpjb25maWcgQVRIMTJLX0FIQlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnLTE4LVx0Ym9vbCBcJiMzNDtRdWFsY29tbSBhdGgxMmsgQUhCIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWctMjQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWc6MjU6Y29uZmlnIEFUSDEyS19ERUJVR1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnLTI2LVx0Ym9vbCBcJiMzNDthdGgxMmsgZGVidWdnaW5nXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnLTM0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnOjM1OmNvbmZpZyBBVEgxMktfREVCVUdGU1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnLTM2LVx0Ym9vbCBcJiMzNDtRdWFsY29tbSBhdGgxMmsgZGVidWdmcyBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnLTQzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnOjQ0OmNvbmZpZyBBVEgxMktfVFJBQ0lOR1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnLTQ1LVx0Ym9vbCBcJiMzNDthdGgxMmsgdHJhY2luZyBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnLTUyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnOjUzOmNvbmZpZyBBVEgxMktfQ09SRURVTVBcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZy01NC1cdGJvb2wgXCYjMzQ7YXRoMTJrIGNvcmVkdW1wXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjkgMDg6MTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzAyNgoJCQkJCQkJb3V0cHV0OiA0MgoJCQkJCQkJdGhvdWdodHM6IDM3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkFuYWx5emluZyB0aGUgRHJpdmVyJiMzOTtzIFBvdGVudGlhbCBmb3IgRnV6emluZyoqCgpBbHJpZ2h0LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYSBQQ0kvQUhCIGRyaXZlciBoZXJlLiBTdGFuZGFyZCBzdHVmZiwgbm90aGluZyBpbW1lZGlhdGVseSBqdW1wcyBvdXQuIEJ1dCB0aGVuIG15IGJyYWluIHN0YXJ0cyB3aGlycmluZyDigJMgd2FpdCBhIG1pbnV0ZSwgaXNuJiMzOTt0IHN5emthbGxlciBjYXBhYmxlIG9mIGZ1enppbmcgUENJIGRldmljZXM/IFRoZSB2UENJIGZ1bmN0aW9uYWxpdHksIGlmIEkgcmVjYWxsIGNvcnJlY3RseSwgb2ZmZXJzIGEgdmlydHVhbCBQQ0kgZW52aXJvbm1lbnQgc3BlY2lmaWNhbGx5IGZvciB0aGlzIGtpbmQgb2YgdGVzdGluZy4gT2theSwgdGhhdCYjMzk7cyBpbnRlcmVzdGluZy4uLgoKU28sIHRoZSBpbW1lZGlhdGUgbmV4dCBxdWVzdGlvbiBiZWNvbWVzOiBpcyBQQ0kgc3VwcG9ydCBhY3R1YWxseSBwcmVzZW50IGFuZCBlbmFibGVkIHdpdGhpbiB0aGlzIGRyaXZlcj8gSSBuZWVkIHRvIHF1aWNrbHkgZGV0ZXJtaW5lIGlmIEkgY2FuIGxldmVyYWdlIHRoYXQgdlBDSSBmdXp6aW5nIGNhcGFiaWxpdHkuIElmIFBDSSBpcyBzdXBwb3J0ZWQsIHdlJiMzOTtyZSBpbiBidXNpbmVzcy4gSWYgbm90LCBJJiMzOTtsbCBuZWVkIHRvIGV4cGxvcmUgb3RoZXIgYXZlbnVlcyBvciBjb25zaWRlciB3aGV0aGVyIHRoZSBBSEIgaW50ZXJmYWNlIG9mZmVycyBhbnkgcG90ZW50aWFsIGVudHJ5IHBvaW50cyBmb3IgZXhwbG9pdGF0aW9uLiBUaW1lIHRvIGRpZyBpbnRvIHRoZSBzb3VyY2UgYW5kIGNvbmZpcm0gdGhlIFBDSSBsYW5kc2NhcGUgd2l0aGluIHRoaXMgc3BlY2lmaWMgZHJpdmVyLiBMZXQmIzM5O3Mgc2VlIHdoYXQgd2UmIzM5O3JlIHdvcmtpbmcgd2l0aC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yOSAwODoxNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBBVEgxMktfUENJJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yOSAwODoxNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3MzMwCgkJCQkJCQlvdXRwdXQ6IDQyCgkJCQkJCQl0aG91Z2h0czogMTEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipLY29uZmlnIENoZWNrKioKCk9rYXksIGJlZm9yZSBkaXZpbmcgYW55IGRlZXBlciwgSSBuZWVkIHRvIHRha2UgYSBzdGVwIGJhY2sgYW5kIG1ha2Ugc3VyZSBJJiMzOTttIG5vdCBtaXNzaW5nIHNvbWV0aGluZyBmdW5kYW1lbnRhbC4gTXkgZ3V0IGlzIHRlbGxpbmcgbWUgdGhlcmUgbWlnaHQgYmUgYSBjb25maWd1cmF0aW9uIG9wdGlvbiBhdCBwbGF5IGhlcmUgdGhhdCYjMzk7cyB0aHJvd2luZyBtZSBvZmYsIG9yIG1heWJlIGFuIG92ZXJsb29rZWQgZGVwZW5kZW5jeS4gU28sIGxldCYjMzk7cyBoaXQgdGhlIEtjb25maWcgZmlsZS4gSSYjMzk7bSBnb2luZyB0byBxdWlja2x5IHNjYW4gaXQgZm9yIGFueXRoaW5nIHJlbGF0ZWQgdG8gdGhlIHNwZWNpZmljIG1vZHVsZSBJJiMzOTttIHdvcmtpbmcgd2l0aCwgdGhlIGZlYXR1cmUgc2V0IEkmIzM5O20gaW1wbGVtZW50aW5nLCBhbmQgdGhlIGhhcmR3YXJlIHBsYXRmb3JtIHRoaXMgaXMgcnVubmluZyBvbi4gSSYjMzk7bGwgbmVlZCB0byBwYXkgY2xvc2UgYXR0ZW50aW9uIHRvIGFueSBjb25kaXRpb25hbCBjb21waWxhdGlvbiBvciBkZWZhdWx0IHNldHRpbmdzIHRoYXQgbWlnaHQgYmUgc2tld2luZyB0aGUgYmVoYXZpb3IgSSYjMzk7bSBzZWVpbmcuIEl04oCZcyBhbHNvIGNydWNpYWwgdG8gZG91YmxlLWNoZWNrIGFueSByZWxhdGVkIHRyaXN0YXRlcyBhbmQgdGhlaXIgY29ycmVzcG9uZGluZyBkZXBlbmRlbmNpZXMuIEEgc2ltcGxlIG1pc2NvbmZpZ3VyYXRpb24gY2FuIHdhc3RlIGhvdXJzIG9mIGRlYnVnZ2luZy4gVGhpcyBpcyBhbG1vc3QgaW5zdGluY3QgYXQgdGhpcyBwb2ludCwgYnV0IGl0JiMzOTtzIGltcG9ydGFudCB0byBiZSBtZXRob2RpY2FsLiBMZXQmIzM5O3Mgc2VlIHdoYXQgS2NvbmZpZyBoYXMgdG8gc2F5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI5IDA4OjE0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZS1DbGVhclxuICAgMjpcdGNvbmZpZyBBVEgxMktcbiAgIDM6XHRcdHRyaXN0YXRlIFwmIzM0O1F1YWxjb21tIFdpLUZpIDcgc3VwcG9ydCAoYXRoMTJrKVwmIzM0O1xuICAgNDpcdFx0ZGVwZW5kcyBvbiBNQUM4MDIxMSBcdTAwMjZcdTAwMjYgSEFTX0RNQSBcdTAwMjZcdTAwMjYgUENJXG4gICA1Olx0XHRzZWxlY3QgUUNPTV9RTUlfSEVMUEVSU1xuICAgNjpcdFx0c2VsZWN0IE1ISV9CVVNcbiAgIDc6XHRcdHNlbGVjdCBRUlRSXG4gICA4Olx0XHRzZWxlY3QgUVJUUl9NSElcbiAgIDk6XHRcdHNlbGVjdCBQQ0lfUFdSQ1RSTF9QV1JTRVEgaWYgSEFWRV9QV1JDVFJMXG4gIDEwOlx0XHRoZWxwXG4gIDExOlx0XHQgIEVuYWJsZSBzdXBwb3J0IGZvciBRdWFsY29tbSBUZWNobm9sb2dpZXMgV2ktRmkgNyAoSUVFRVxuICAxMjpcdFx0ICA4MDIuMTFiZSkgZmFtaWx5IG9mIGNoaXBzZXRzLCBmb3IgZXhhbXBsZSBXQ043ODUwIGFuZFxuICAxMzpcdFx0ICBRQ045Mjc0LlxuICAxNDpcdFxuICAxNTpcdFx0ICBJZiB5b3UgY2hvb3NlIHRvIGJ1aWxkIGEgbW9kdWxlLCBpdCYjMzk7bGwgYmUgY2FsbGVkIGF0aDEyay5cbiAgMTY6XHRcbiAgMTc6XHRjb25maWcgQVRIMTJLX0FIQlxuICAxODpcdFx0Ym9vbCBcJiMzNDtRdWFsY29tbSBhdGgxMmsgQUhCIHN1cHBvcnRcJiMzNDtcbiAgMTk6XHRcdGRlcGVuZHMgb24gQVRIMTJLIFx1MDAyNlx1MDAyNiBSRU1PVEVQUk9DXG4gIDIwOlx0XHRzZWxlY3QgUUNPTV9NRFRfTE9BREVSXG4gIDIxOlx0XHRzZWxlY3QgUUNPTV9TQ01cbiAgMjI6XHRcdGhlbHBcbiAgMjM6XHRcdCAgRW5hYmxlIHN1cHBvcnQgZm9yIEF0aDEyayBBSEIgYnVzIGNoaXBzZXRzLCBleGFtcGxlIElQUTUzMzIuXG4gIDI0Olx0XG4gIDI1Olx0Y29uZmlnIEFUSDEyS19ERUJVR1xuICAyNjpcdFx0Ym9vbCBcJiMzNDthdGgxMmsgZGVidWdnaW5nXCYjMzQ7XG4gIDI3Olx0XHRkZXBlbmRzIG9uIEFUSDEyS1xuICAyODpcdFx0aGVscFxuICAyOTpcdFx0ICBFbmFibGUgZGVidWcgc3VwcG9ydCwgZm9yIGV4YW1wbGUgZGVidWcgbWVzc2FnZXMgd2hpY2ggbXVzdFxuICAzMDpcdFx0ICBiZSBlbmFibGVkIHNlcGFyYXRlbHkgdXNpbmcgdGhlIGRlYnVnX21hc2sgbW9kdWxlIHBhcmFtZXRlci5cbiAgMzE6XHRcbiAgMzI6XHRcdCAgSWYgdW5zdXJlLCBzYXkgWSB0byBtYWtlIGl0IGVhc2llciB0byBkZWJ1ZyBwcm9ibGVtcy4gQnV0IGlmXG4gIDMzOlx0XHQgIHlvdSB3YW50IG9wdGltYWwgcGVyZm9ybWFuY2UgY2hvb3NlIE4uXG4gIDM0Olx0XG4gIDM1Olx0Y29uZmlnIEFUSDEyS19ERUJVR0ZTXG4gIDM2Olx0XHRib29sIFwmIzM0O1F1YWxjb21tIGF0aDEyayBkZWJ1Z2ZzIHN1cHBvcnRcJiMzNDtcbiAgMzc6XHRcdGRlcGVuZHMgb24gQVRIMTJLIFx1MDAyNlx1MDAyNiBNQUM4MDIxMV9ERUJVR0ZTXG4gIDM4Olx0XHRoZWxwXG4gIDM5Olx0XHQgIEVuYWJsZSBhdGgxMmsgZGVidWdmcyBzdXBwb3J0XG4gIDQwOlx0XG4gIDQxOlx0XHQgIElmIHVuc3VyZSwgc2F5IFkgdG8gbWFrZSBpdCBlYXNpZXIgdG8gZGVidWcgcHJvYmxlbXMuIEJ1dCBpZlxuICA0MjpcdFx0ICB5b3Ugd2FudCBvcHRpbWFsIHBlcmZvcm1hbmNlIGNob29zZSBOLlxuICA0MzpcdFxuICA0NDpcdGNvbmZpZyBBVEgxMktfVFJBQ0lOR1xuICA0NTpcdFx0Ym9vbCBcJiMzNDthdGgxMmsgdHJhY2luZyBzdXBwb3J0XCYjMzQ7XG4gIDQ2Olx0XHRkZXBlbmRzIG9uIEFUSDEySyBcdTAwMjZcdTAwMjYgRVZFTlRfVFJBQ0lOR1xuICA0NzpcdFx0aGVscFxuICA0ODpcdFx0ICBFbmFibGUgYXRoMTJrIHRyYWNpbmcgaW5mcmFzdHJ1Y3R1cmUuXG4gIDQ5Olx0XG4gIDUwOlx0XHQgIElmIHVuc3VyZSwgc2F5IFkgdG8gbWFrZSBpdCBlYXNpZXIgdG8gZGVidWcgcHJvYmxlbXMuIEJ1dCBpZlxuICA1MTpcdFx0ICB5b3Ugd2FudCBvcHRpbWFsIHBlcmZvcm1hbmNlIGNob29zZSBOLlxuICA1MjpcdFxuICA1MzpcdGNvbmZpZyBBVEgxMktfQ09SRURVTVBcbiAgNTQ6XHRcdGJvb2wgXCYjMzQ7YXRoMTJrIGNvcmVkdW1wXCYjMzQ7XG4gIDU1Olx0XHRkZXBlbmRzIG9uIEFUSDEyS1xuICA1NjpcdFx0c2VsZWN0IFdBTlRfREVWX0NPUkVEVU1QXG4gIDU3Olx0XHRoZWxwXG4gIDU4Olx0XHQgIEVuYWJsZSBhdGgxMmsgY29yZWR1bXAgY29sbGVjdGlvblxuICA1OTpcdFxuICA2MDpcdFx0ICBJZiB1bnN1cmUsIHNheSBZIHRvIG1ha2UgaXQgZWFzaWVyIHRvIGRlYnVnIHByb2JsZW1zLiBCdXQgaWZcbiAgNjE6XHRcdCAgZHVtcCBjb2xsZWN0aW9uIG5vdCByZXF1aXJlZCBjaG9vc2UgTi5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yOSAwODoxNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4NDQ3CgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogMjExCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgSW1wYWN0IG9mIHRoaXMgUGF0Y2ggb24gV2ktRmkgRHJpdmVyIEZ1enppbmcqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpcyB0b3VjaGluZyBzb21lIGtleSBhcmVhczogYGF0aDEya19wdWxsX21hY19waHlfY2FwX3N2Y19yZWFkeV9leHRgLCBgYXRoMTJrX3dtaV9zZW5kX3BlZXJfYXNzb2NfY21kYCwgYGF0aDEya193bWlfZWh0X2NhcHNfcGFyc2VgLCBhbmQgYGF0aDEya193bWlfdGx2X21hY19waHlfY2Fwc19leHRgLiBUaGVzZSBhcmUgYWxsIGNsZWFybHkgV01JIGNvbW1hbmRzIOKAkyBpbnRlcmFjdGlvbnMgd2l0aCB0aGUgV2lyZWxlc3MgTW9kdWxlIEludGVyZmFjZS4gQW5kLCBmcm9tIGEgaGlnaCBsZXZlbCwgdGhhdCBtZWFucyB0aGV5JiMzOTtyZSBnb2luZyBvdmVyIHRoZSBidXMsIGxpa2VseSBQQ0kgb3IgQUhCLiBUaGUgaW5pdGlhbCB0aG91Z2h0IGlzLCBob3cgZG9lcyB0aGlzIGludGVyYWN0IHdpdGggZnV6emluZz8KClNwZWNpZmljYWxseSwgaXQgZGVwZW5kcyBvbiB0aGUgUGVyaXBoZXJhbCBDb21wb25lbnQgSW50ZXJjb25uZWN0IChQQ0kpIGludGVyZmFjZS4KCk5vdywgSSYjMzk7bSB0aGlua2luZyBhYm91dCBzeXprYWxsZXIuIEkga25vdyBpdCBjYW4gZnV6eiBQQ0kgZGV2aWNlcyB0aHJvdWdoIHZQQ0ksIGJ1dCBpcyB0aGF0IGl0cyBkZWZhdWx0IGJlaGF2aW9yPyBBIHF1aWNrIG1lbnRhbCBjaGVja+KApiB5ZXMsIHN5emthbGxlciBkb2VzIG9mZmVyIHZQQ0kgZnV6emluZy4gQnV0IHRoZSBjcml0aWNhbCBxdWVzdGlvbiBpcyBlZmZlY3RpdmVuZXNzLiBXaWxsIHRoaXMgcGF0Y2ggYmUgZWZmZWN0aXZlbHkgZnV6emVkIGJ5IHRoZSB0b29scz8gVGhlIGNvbXBsZXhpdHkgb2YgV2ktRmkgZHJpdmVycyBpbnRyb2R1Y2VzIHNpZ25pZmljYW50IGh1cmRsZXMuCgpUaGUgdHlwaWNhbCBXaS1GaSBkcml2ZXIgZmxvdyBnb2VzIHNvbWV0aGluZyBsaWtlIHRoaXM6IGRldmljZSBpbml0aWFsaXphdGlvbiwgZmlybXdhcmUgbG9hZGluZywgYW5kIHRoZW4gdGhlIGNyaXRpY2FsIGNvbW11bmljYXRpb24gc3RhZ2UuIElmIGZpcm13YXJlIGxvYWRpbmcgZmFpbHMsIHRoZSB3aG9sZSBkcml2ZXIgaW5pdGlhbGl6YXRpb24gaXMgYWJvcnRlZC4gSW4gdGhhdCBjYXNlLCB0aGUgV01JIGNvZGUsIHRoZXNlIHZlcnkgZnVuY3Rpb25zLCBtaWdodCBuZXZlciBldmVuIGJlIHJlYWNoZWQuIFNvLCBpcyBgYXRoMTJrYCBvbmUgb2YgdGhvc2UgdGhhdCAqcmVxdWlyZXMqIGZpcm13YXJlPyBJIG5lZWQgdG8gdmVyaWZ5IHRoYXQgYmVmb3JlIEkgY2FuIGRyYXcgYW55IHJlYWwgY29uY2x1c2lvbnMgYWJvdXQgdGhlIGZ1enppbmcgaW1wYWN0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yOSAwODoxNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtyZXF1ZXN0X2Zpcm13YXJlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyayYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jPTMzND1zdGF0aWMgaW50IGF0aDEya19haGJfcG93ZXJfdXAoc3RydWN0IGF0aDEya19iYXNlICphYilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTM2NS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmM6MzY2Olx0cmV0ID0gcmVxdWVzdF9maXJtd2FyZShcdTAwMjZmdywgZndfbmFtZSwgZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtMzY3LVx0aWYgKHJldCBcdTAwM2MgMCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYzozNjg6XHRcdGF0aDEya19lcnIoYWIsIFwmIzM0O3JlcXVlc3RfZmlybXdhcmUgZmFpbGVkXFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtMzY5LVx0XHRyZXR1cm4gcmV0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtMzk4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYzozOTk6XHRyZXQgPSByZXF1ZXN0X2Zpcm13YXJlKFx1MDAyNmZ3MiwgZncyX25hbWUsIGRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTQwMC1cdGlmIChyZXQgXHUwMDNjIDApIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmM6NDAxOlx0XHRhdGgxMmtfZXJyKGFiLCBcJiMzNDtyZXF1ZXN0X2Zpcm13YXJlIGZhaWxlZFxcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTQwMi1cdFx0Z290byBlcnJfZnc7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9mdy5jLTktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2Z3LmM6MTA6c3RhdGljIGludCBhdGgxMmtfZndfcmVxdWVzdF9maXJtd2FyZV9hcGlfbihzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9mdy5jLTExLVx0XHRcdFx0XHQgICAgY29uc3QgY2hhciAqbmFtZSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2Z3LmM9MTYzPXZvaWQgYXRoMTJrX2Z3X21hcChzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZncuYy0xNjYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2Z3LmM6MTY3Olx0cmV0ID0gYXRoMTJrX2Z3X3JlcXVlc3RfZmlybXdhcmVfYXBpX24oYWIsIEFUSDEyS19GV19BUEkyX0ZJTEUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9mdy5jLTE2OC1cdGlmIChyZXQgPT0gMClcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjkgMDg6MTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTY3OQoJCQkJCQkJb3V0cHV0OiA1MAoJCQkJCQkJdGhvdWdodHM6IDE4OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBhdGgxMmsgRHJpdmVyIEluaXRpYWxpemF0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGBhdGgxMmtgIGRyaXZlciBpbml0aWFsaXphdGlvbiBwcm9jZXNzLCBhbmQgaXQmIzM5O3MgaW1tZWRpYXRlbHkgY2xlYXIgd2UgbmVlZCBmaXJtd2FyZS4gV2l0aG91dCBpdCwgdGhlIGByZXF1ZXN0X2Zpcm13YXJlYCBjYWxsIGlzIGdvaW5nIHRvIGJvbWIgb3V0LCBhbmQgdGhlIHdob2xlIGRyaXZlciBzZXR1cCBqdXN0IGdyaW5kcyB0byBhIGhhbHQuIFRoZSBwcm9ibGVtIHdpdGggdXNpbmcgc3l6a2FsbGVyIGhlcmUgaXMgdGhhdCB3ZSBsaWtlbHkgZG9uJiMzOTt0IGhhdmUgdGhlIGBhdGgxMmtgIGZpcm13YXJlIGF2YWlsYWJsZSwgb3IgaWYgd2UgKmRvKiBoYXZlIGl0LCB0aGUgdmlydHVhbCBQQ0kgZGV2aWNlIGlzbiYjMzk7dCBnb2luZyB0byBwbGF5IGJhbGwgYW5kIGNvcnJlY3RseSBoYW5kbGUgdGhlIGZpcm13YXJlIGluaXRpYWxpemF0aW9uLiBUaGF0JiMzOTtzIGEgaHVnZSBodXJkbGUgLSB0aGVyZSYjMzk7cyBubyB3YXkgc3l6a2FsbGVyIGNhbiBlbXVsYXRlIHRoZSBjb21wbGljYXRlZCBmaXJtd2FyZSBpbnRlcmFjdGlvbnMgb2YgdGhpcyBgYXRoMTJrYCBpbnRlcmZhY2UgdXNpbmcgYSB2aXJ0dWFsIFBDSSBzZXR1cC4KCkl0JiMzOTtzIGFsbCBhYm91dCB0aGUgV01JIGNvbW1hbmRzOyB0aGV5JiMzOTtyZSB0aGUgbGFuZ3VhZ2Ugc3Bva2VuIGJldHdlZW4gdGhlIGRyaXZlciBhbmQgdGhlIGZpcm13YXJlLiBJZiB0aGUgZmlybXdhcmUgaXNuJiMzOTt0IHJ1bm5pbmcsIHdlJiMzOTtsbCBuZXZlciBnZXQgdG8ga2V5IGZ1bmN0aW9ucyBsaWtlIGBhdGgxMmtfcHVsbF9tYWNfcGh5X2NhcF9zdmNfcmVhZHlfZXh0YCBvciBgYXRoMTJrX3dtaV9zZW5kX3BlZXJfYXNzb2NfY21kYC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIGNhbGwgY2hhaW4gZm9yIGBhdGgxMmtfcHVsbF9tYWNfcGh5X2NhcF9zdmNfcmVhZHlfZXh0YCB0byBzZWUgaG93IGNyaXRpY2FsIHRoaXMgZGVwZW5kZW5jeSBpcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjkgMDg6MTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YXRoMTJrX3B1bGxfbWFjX3BoeV9jYXBfc3ZjX3JlYWR5X2V4dCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuYz00NTQ9c3RhdGljIGludFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuYzo0NTU6YXRoMTJrX3B1bGxfbWFjX3BoeV9jYXBfc3ZjX3JlYWR5X2V4dChzdHJ1Y3QgYXRoMTJrX3dtaV9wZGV2ICp3bWlfaGFuZGxlLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuYy00NTYtXHRcdFx0XHQgICAgICBzdHJ1Y3QgYXRoMTJrX3dtaV9zdmNfcmR5X2V4dF9wYXJzZSAqc3ZjLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmM9NDgxOD1zdGF0aWMgaW50IGF0aDEya193bWlfZXh0X3NvY19oYWxfcmVnX2NhcHNfcGFyc2Uoc3RydWN0IGF0aDEya19iYXNlICpzb2MsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuYy00ODM2LVx0d2hpbGUgKHBoeV9pZF9tYXAgXHUwMDI2XHUwMDI2IHNvYy1cdTAwM2VudW1fcmFkaW9zIFx1MDAzYyBNQVhfUkFESU9TKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5jOjQ4Mzc6XHRcdHJldCA9IGF0aDEya19wdWxsX21hY19waHlfY2FwX3N2Y19yZWFkeV9leHQod21pX2hhbmRsZSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmMtNDgzOC1cdFx0XHRcdFx0XHRcdCAgICBzdmNfcmR5X2V4dCxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjkgMDg6MTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTA1MjYKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAyNDEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBSZWFjaGFiaWxpdHkgb2YgVGhpcyBDb2RlKioKCk9rYXksIGxldCBtZSB0aGluayB0aGlzIHRocm91Z2guIFRoaXMgY29kZSwgc3BlY2lmaWNhbGx5IGBhdGgxMmtfd21pX2V4dF9zb2NfaGFsX3JlZ19jYXBzX3BhcnNlYCwgaXMgY2FsbGVkIGRlZXAgd2l0aGluIHRoZSBgYXRoMTJrYCBkcml2ZXImIzM5O3MgV01JIGV2ZW50IGhhbmRsaW5nLiBJdCYjMzk7cyB0cmlnZ2VyZWQgYnkgYGF0aDEya193bWlfdGx2X3N2Y19yZHlfZXh0X3BhcnNlYCwgd2hpY2ggaW4gdHVybiByZXNwb25kcyB0byB0aGUgYFdNSV9TRVJWSUNFX1JFQURZX0VYVF9FVkVOVElEYCBldmVudC4gQW5kIHRoYXQgZXZlbnQ/IFRoYXQmIzM5O3Mgc2VudCAqYnkgdGhlIGZpcm13YXJlKiBhZnRlciBpdCBib290cy4KCk5vdywgaGVyZSYjMzk7cyB0aGUga2lja2VyOiBJIGtub3cgc3l6a2FsbGVyIGNhbiYjMzk7dCBlbXVsYXRlIHRoZSBgYXRoMTJrYCBmaXJtd2FyZSBpdHNlbGYuIFRoYXQmIzM5O3MgYSBmdW5kYW1lbnRhbCBsaW1pdGF0aW9uIG9mIHZpcnR1YWxpemF0aW9uIGluIHRoaXMgc2NlbmFyaW8uIFdhaXQsIGJ1dCwgaXNuJiMzOTt0IHRoZXJlIHNvbWV0aGluZyBpbiBzeXprYWxsZXIgYWJvdXQgdGhlIG1hYzgwMjExX2h3c2ltPyBZZXMsIGJ1dCB0aGF0IGVtdWxhdGVzIGEgKmdlbmVyaWMqIFdpLUZpIGRldmljZSwgbm90IHRoZSBzcGVjaWZpY3Mgb2YgYGF0aDEya2AgaGFyZHdhcmUuCgpTbywgcmVhbGlzdGljYWxseSwgY2FuIHRoaXMgY29kZSBiZSByZWFjaGVkIGluIGFuIGVudmlyb25tZW50IGxpa2UgR0NFIG9yIFFFTVU/IE5vLiBJdCYjMzk7cyBpbmV4dHJpY2FibHkgdGllZCB0byB0aGUgYGF0aDEya2AgaGFyZHdhcmUgYW5kIGl0cyBhc3NvY2lhdGVkIGZpcm13YXJlLiBUaGUgcGF0Y2ggSSYjMzk7bSBsb29raW5nIGF0IG1vZGlmaWVzIGNvZGUgdGhhdCYjMzk7cyBmdW5kYW1lbnRhbGx5IHVucmVhY2hhYmxlIGluIGEgdmlydHVhbGl6ZWQgY29udGV4dC4gSSYjMzk7dmUgZ290IHRvIG1ha2Ugc3VyZSB0aGlzIGlzIGFjY3VyYXRlLCB0aG91Z2guIElzIHRoZXJlIGFueSBzb2Z0d2FyZSBlbXVsYXRpb24gbW9kZSBmb3IgYGF0aDEya2A/IEkmIzM5O2xsIGRvdWJsZS1jaGVjayBqdXN0IHRvIGJlIGFic29sdXRlbHkgY2VydGFpbi4KClRoZXJlZm9yZSwgdGhlIG9ubHkgcmVhc29uYWJsZSBjb25jbHVzaW9uIGlzIHRoYXQgSSBuZWVkIHRvIHNldCBgV29ydGhGdXp6aW5nPWZhbHNlYCBmb3IgdGhpcyBjb2RlLiBJdCYjMzk7cyBub3QgcHJhY3RpY2FsbHkgdGVzdGFibGUgaW4gdGhlIGN1cnJlbnQgZW52aXJvbm1lbnQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI5IDA4OjE0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aHdzaW0mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjkgMDg6MTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTExNzIKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAxNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0JiMzOTtzIGludGVybmFsIG1vbm9sb2d1ZToKCioqSW52ZXN0aWdhdGluZyB0aGUgYXRoMTJrIEhhcmR3YXJlIFNpbXVsYXRpb24qKgoKUmlnaHQsIHNvLCBubyBoYXJkd2FyZSBzaW11bGF0aW9uIHN1cHBvcnQgZm9yIHRoZSBhdGgxMmsgZHJpdmVyLiBUaGF0JiMzOTtzIGEgYml0IG9mIGEgc25hZy4gSSYjMzk7bSBnb2luZyB0byBuZWVkIHRvIGRpZyBkZWVwZXIgaW50byB0aGUgaW1wbGljYXRpb25zIG9mIHRoYXQuIExhY2sgb2YgYSBoYXJkd2FyZSBzaW11bGF0aW9uIChod3NpbSkgZW52aXJvbm1lbnQgb2Z0ZW4gbWVhbnMgYSBtb3JlIGNvbXBsZXggZGVidWdnaW5nIGN5Y2xlLCByZWx5aW5nIG9uIHBoeXNpY2FsIGhhcmR3YXJlLCBvciBwb3RlbnRpYWxseSByZWx5aW5nIG9uIG1vcmUgZWxhYm9yYXRlIGVtdWxhdGlvbiBzdHJhdGVnaWVzLiBJJiMzOTtsbCBuZWVkIHRvIGZpZ3VyZSBvdXQgaG93IHRvIHdvcmsgYXJvdW5kIHRoZSBsaW1pdGF0aW9ucy4KCldhaXQgYSBtaW51dGUsIHdoYXQgYWJvdXQgdXNpbmcgYHRlc3Rtb2RlYD8gSXMgdGhhdCBhbiBhdmFpbGFibGUgb3B0aW9uPyBgVGVzdG1vZGVgIG1pZ2h0IG9mZmVyIGFuIGFsdGVybmF0aXZlIHJvdXRlIGZvciBzb21lIGxldmVsIG9mIGNvbnRyb2wgb3IgZXhwZXJpbWVudGF0aW9uIHdpdGhvdXQgYSBmdWxsIGh3c2ltLiBJIG5lZWQgdG8gcmVmcmVzaCBteSBtZW1vcnkgb24gdGhlIGF0aDEyayBkcml2ZXImIzM5O3MgYHRlc3Rtb2RlYCBpbXBsZW1lbnRhdGlvbiBhbmQgc2VlIGlmIGl0IGNvdWxkIGJlIGxldmVyYWdlZCBpbiB0aGlzIHNpdHVhdGlvbi4gSXQgY291bGQgcHJvdmlkZSBhY2Nlc3MgdG8gaW50ZXJuYWwgcmVnaXN0ZXJzIG9yIHRlc3QgY29tbWFuZHMsIHdoaWNoIGNvdWxkIGJlIGhlbHBmdWwuIEkgbXVzdCBhc3Nlc3Mgd2hldGhlciBpdCBpcyByZWxldmFudCB0byB0aGUgaXNzdWUgYXQgaGFuZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjkgMDg6MTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dGVzdG1vZGUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvTWFrZWZpbGU9MzM9YXRoMTJrLSQoQ09ORklHX0FUSDEyS19DT1JFRFVNUCkgJiM0Mzs9IGNvcmVkdW1wLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvTWFrZWZpbGU6MzQ6YXRoMTJrLSQoQ09ORklHX05MODAyMTFfVEVTVE1PREUpICYjNDM7PSB0ZXN0bW9kZS5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL01ha2VmaWxlLTM1LWF0aDEyay0kKENPTkZJR19USEVSTUFMKSAmIzQzOz0gdGhlcm1hbC5vXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9tYWMuYy0xNy0jaW5jbHVkZSBcJiMzNDtkcF9yeC5oXCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jOjE4OiNpbmNsdWRlIFwmIzM0O3Rlc3Rtb2RlLmhcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmMtMTktI2luY2x1ZGUgXCYjMzQ7cGVlci5oXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jLTYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmM6NzojaW5jbHVkZSBcJiMzNDt0ZXN0bW9kZS5oXCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmMtOC0jaW5jbHVkZSBcdTAwM2NuZXQvbmV0bGluay5oXHUwMDNlXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jLTEzLSNpbmNsdWRlIFwmIzM0O2hpZi5oXCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmM6MTQ6I2luY2x1ZGUgXCYjMzQ7Li4vdGVzdG1vZGVfaS5oXCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmMtMTUtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jPTQ1PXZvaWQgYXRoMTJrX3RtX3dtaV9ldmVudF91bnNlZ21lbnRlZChzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiLCB1MzIgY21kX2lkLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYy01MS1cdGF0aDEya19kYmcoYWIsIEFUSDEyS19EQkdfVEVTVE1PREUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmM6NTI6XHRcdCAgIFwmIzM0O3Rlc3Rtb2RlIGV2ZW50IHdtaSBjbWRfaWQgJWQgc2tiIGxlbmd0aCAlZFxcblwmIzM0OyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYy01My1cdFx0ICAgY21kX2lkLCBza2ItXHUwMDNlbGVuKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmMtNTgtXHRpZiAoIWFyKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmM6NTk6XHRcdGF0aDEya193YXJuKGFiLCBcJiMzNDt0ZXN0bW9kZSBldmVudCBub3QgaGFuZGxlZCBkdWUgdG8gaW52YWxpZCBwZGV2XFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYy02MC1cdFx0cmV0dXJuO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYy02NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYzo2NTpcdG5sX3NrYiA9IGNmZzgwMjExX3Rlc3Rtb2RlX2FsbG9jX2V2ZW50X3NrYihhci1cdTAwM2VhaC1cdTAwM2Vody1cdTAwM2V3aXBoeSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYy02Ni1cdFx0XHRcdFx0XHQgICAyICogbmxhX3RvdGFsX3NpemUoc2l6ZW9mKHUzMikpICYjNDM7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jLTcyLVx0XHRhdGgxMmtfd2FybihhYixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYzo3MzpcdFx0XHQgICAgXCYjMzQ7ZmFpbGVkIHRvIGFsbG9jYXRlIHNrYiBmb3IgdW5zZWdtZW50ZWQgdGVzdG1vZGUgd21pIGV2ZW50XFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYy03NC1cdFx0cmV0dXJuO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYy03OS1cdCAgICBubGFfcHV0KG5sX3NrYiwgQVRIX1RNX0FUVFJfREFUQSwgc2tiLVx1MDAzZWxlbiwgc2tiLVx1MDAzZWRhdGEpKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmM6ODA6XHRcdGF0aDEya193YXJuKGFiLCBcJiMzNDtmYWlsZWQgdG8gcG9wdWxhdGUgdGVzdG1vZGUgdW5zZWdtZW50ZWQgZXZlbnRcXG5cJiMzNDspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jLTgxLVx0XHRrZnJlZV9za2Iobmxfc2tiKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmMtODQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmM6ODU6XHRjZmc4MDIxMV90ZXN0bW9kZV9ldmVudChubF9za2IsIEdGUF9BVE9NSUMpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jLTg2LX1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmM9ODg9dm9pZCBhdGgxMmtfdG1fcHJvY2Vzc19ldmVudChzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiLCB1MzIgY21kX2lkLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYy05OS1cdGF0aDEya19kYmcoYWIsIEFUSDEyS19EQkdfVEVTVE1PREUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmM6MTAwOlx0XHQgICBcJiMzNDt0ZXN0bW9kZSBldmVudCB3bWkgY21kX2lkICVkIGZ0bSBldmVudCBtc2cgJXAgZGF0YWxlbiAlZFxcblwmIzM0OyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYy0xMDEtXHRcdCAgIGNtZF9pZCwgZnRtX21zZywgbGVuZ3RoKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmMtMTA1LVx0aWYgKHBkZXZfaWQgXHUwMDNlPSBhYi1cdTAwM2VudW1fcmFkaW9zKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmM6MTA2Olx0XHRhdGgxMmtfd2FybihhYiwgXCYjMzQ7dGVzdG1vZGUgZXZlbnQgbm90IGhhbmRsZWQgZHVlIHRvIGludmFsaWQgcGRldiBpZFxcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmMtMTA3LVx0XHRyZXR1cm47XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jLTExMi1cdGlmICghYXIpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYzoxMTM6XHRcdGF0aDEya193YXJuKGFiLCBcJiMzNDt0ZXN0bW9kZSBldmVudCBub3QgaGFuZGxlZCBkdWUgdG8gYWJzZW5jZSBvZiBwZGV2XFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYy0xMTQtXHRcdHJldHVybjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmMtMTUzLVx0c3Bpbl9sb2NrX2JoKFx1MDAyNmFyLVx1MDAzZWRhdGFfbG9jayk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmM6MTU0Olx0bmxfc2tiID0gY2ZnODAyMTFfdGVzdG1vZGVfYWxsb2NfZXZlbnRfc2tiKGFyLVx1MDAzZWFoLVx1MDAzZWh3LVx1MDAzZXdpcGh5LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jLTE1NS1cdFx0XHRcdFx0XHQgICAyICogbmxhX3RvdGFsX3NpemUoc2l6ZW9mKHUzMikpICYjNDM7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jLTE2MS1cdFx0YXRoMTJrX3dhcm4oYWIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmM6MTYyOlx0XHRcdCAgICBcJiMzNDtmYWlsZWQgdG8gYWxsb2NhdGUgc2tiIGZvciB0ZXN0bW9kZSB3bWkgZXZlbnRcXG5cJiMzNDspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jLTE2My1cdFx0cmV0dXJuO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYy0xNzAtXHRcdCAgICBcdTAwMjZhYi1cdTAwM2VmdG1fZXZlbnRfb2JqLmV2ZW50ZGF0YVswXSkpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYzoxNzE6XHRcdGF0aDEya193YXJuKGFiLCBcJiMzNDtmYWlsZWQgdG8gcG9wdWxhdGUgdGVzdG1vZGUgZXZlbnRcJiMzNDspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jLTE3Mi1cdFx0a2ZyZWVfc2tiKG5sX3NrYik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jLTE3NS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYzoxNzY6XHRjZmc4MDIxMV90ZXN0bW9kZV9ldmVudChubF9za2IsIEdGUF9BVE9NSUMpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jLTE3Ny19XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jPTE3OT1zdGF0aWMgaW50IGF0aDEya190bV9jbWRfZ2V0X3ZlcnNpb24oc3RydWN0IGF0aDEyayAqYXIsIHN0cnVjdCBubGF0dHIgKnRiW10pXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jLTE4My1cdGF0aDEya19kYmcoYXItXHUwMDNlYWIsIEFUSDEyS19EQkdfVEVTVE1PREUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmM6MTg0Olx0XHQgICBcJiMzNDt0ZXN0bW9kZSBjbWQgZ2V0IHZlcnNpb25fbWFqb3IgJWQgdmVyc2lvbl9taW5vciAlZFxcblwmIzM0OyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYy0xODUtXHRcdCAgIEFUSF9URVNUTU9ERV9WRVJTSU9OX01BSk9SLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYy0xODgtXHRzcGluX2xvY2tfYmgoXHUwMDI2YXItXHUwMDNlZGF0YV9sb2NrKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYzoxODk6XHRza2IgPSBjZmc4MDIxMV90ZXN0bW9kZV9hbGxvY19yZXBseV9za2IoYXItXHUwMDNlYWgtXHUwMDNlaHctXHUwMDNld2lwaHksXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmMtMTkwLVx0XHRcdFx0XHRcdDIgKiBubGFfdG90YWxfc2l6ZShzaXplb2YodTMyKSkpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYy0yMDMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmM6MjA0Olx0cmV0dXJuIGNmZzgwMjExX3Rlc3Rtb2RlX3JlcGx5KHNrYik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmMtMjA1LX1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmM9MjA3PXN0YXRpYyBpbnQgYXRoMTJrX3RtX2NtZF9wcm9jZXNzX2Z0bShzdHJ1Y3QgYXRoMTJrICphciwgc3RydWN0IG5sYXR0ciAqdGJbXSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmMtMjI5LVx0YXRoMTJrX2RiZyhhci1cdTAwM2VhYiwgQVRIMTJLX0RCR19URVNUTU9ERSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYzoyMzA6XHRcdCAgIFwmIzM0O3Rlc3Rtb2RlIGNtZCB3bWkgY21kX2lkICVkIGJ1ZiAlcCBidWZfbGVuICVkXFxuXCYjMzQ7LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jLTIzMS1cdFx0ICAgY21kX2lkLCBidWYsIGJ1Zl9sZW4pO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYy0yODAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmM6MjgxOnN0YXRpYyBpbnQgYXRoMTJrX3RtX2NtZF90ZXN0bW9kZV9zdGFydChzdHJ1Y3QgYXRoMTJrICphciwgc3RydWN0IG5sYXR0ciAqdGJbXSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYy0yODIte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYz0zMDA9c3RhdGljIGludCBhdGgxMmtfdG1fY21kX3dtaShzdHJ1Y3QgYXRoMTJrICphciwgc3RydWN0IG5sYXR0ciAqdGJbXSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmMtMzE4LVx0aWYgKCFidWZfbGVuKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmM6MzE5Olx0XHRhdGgxMmtfd2Fybihhci1cdTAwM2VhYiwgXCYjMzQ7Tm8gZGF0YSBwcmVzZW50IGluIHRlc3Rtb2RlIGNvbW1hbmRcXG5cJiMzNDspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jLTMyMC1cdFx0cmV0dXJuIC1FSU5WQUw7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jLTMzMS1cdGF0aDEya19kYmcoYXItXHUwMDNlYWIsIEFUSDEyS19EQkdfVEVTVE1PREUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmM6MzMyOlx0XHQgICBcJiMzNDt0ZXN0bW9kZSBjbWQgd21pIGNtZF9pZCAlZCAgYnVmIGxlbmd0aCAlZFxcblwmIzM0OyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYy0zMzMtXHRcdCAgIGNtZF9pZCwgYnVmX2xlbik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jLTM0Ni1cdFx0ZGV2X2tmcmVlX3NrYihza2IpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jOjM0NzpcdFx0YXRoMTJrX3dhcm4oYXItXHUwMDNlYWIsIFwmIzM0O2ZhaWxlZCB0byB0cmFuc21pdCB3bWkgY29tbWFuZCAodGVzdG1vZGUpOiAlZFxcblwmIzM0OyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYy0zNDgtXHRcdFx0ICAgIHJldCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jPTM1ND1pbnQgYXRoMTJrX3RtX2NtZChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmMtMzg1LVx0Y2FzZSBBVEhfVE1fQ01EX1RFU1RNT0RFX1NUQVJUOlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jOjM4NjpcdFx0cmV0dXJuIGF0aDEya190bV9jbWRfdGVzdG1vZGVfc3RhcnQoYXIsIHRiKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYy0zODctXHRjYXNlIEFUSF9UTV9DTURfR0VUX1ZFUlNJT046XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9ody5jLTI0LSNpbmNsdWRlIFwmIzM0Oy4uL2RlYnVnZnNfc3RhLmhcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvaHcuYzoyNTojaW5jbHVkZSBcJiMzNDsuLi90ZXN0bW9kZS5oXCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2h3LmMtMjYtI2luY2x1ZGUgXCYjMzQ7aGFsLmhcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5jLTI2LSNpbmNsdWRlIFwmIzM0O3AycC5oXCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5jOjI3OiNpbmNsdWRlIFwmIzM0O3Rlc3Rtb2RlLmhcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmMtMjgtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI5IDA4OjE0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE0ODM0CgkJCQkJCQlvdXRwdXQ6IDQ3CgkJCQkJCQl0aG91Z2h0czogMzQ2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBXTUkgQ29tbWFuZCBIYW5kbGluZyBpbiBUZXN0bW9kZSoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyB0ZXN0bW9kZSBpbXBsZW1lbnRhdGlvbiBmb3IgdGhlIGF0aDEyayBkcml2ZXIsIHNwZWNpZmljYWxseSBmb2N1c2luZyBvbiBXTUkgKFdpbmRvd3MgTWFuYWdlbWVudCBJbnN0cnVtZW50YXRpb24pIGNvbW1hbmRzLiBNeSBpbml0aWFsIHF1ZXN0aW9uIGlzOiBkb2VzIHRlc3Rtb2RlIG9ubHkgYWxsb3cgKnNlbmRpbmcqIGNvbW1hbmRzIGZyb20gdXNlcnNwYWNlLCBvciBjYW4gaXQgYWxzbyAqcmVjZWl2ZSogdGhlbT8KCkkgaW5pdGlhbGx5IGZvdW5kIHJlZmVyZW5jZXMgdG8gYGF0aDEya190bV93bWlfZXZlbnRfdW5zZWdtZW50ZWRgIGFuZCBgYXRoMTJrX3RtX3Byb2Nlc3NfZXZlbnRgLiBUaG9zZSBmdW5jdGlvbnMgc3VnZ2VzdCBhIG1lY2hhbmlzbSBmb3IgZ2V0dGluZyBldmVudHMgKmJhY2sqIHRvIHVzZXJzcGFjZS4gQnV0IHRoZW4gSSBub3RpY2VkIHRoaXMgcGF0Y2ggY2hhbmdlcyBob3cgdGhlIGRyaXZlciBoYW5kbGVzIFdNSSBldmVudHMgaW50ZXJuYWxseeKAlCBzcGVjaWZpY2FsbHkgaW4gYGF0aDEya19wdWxsX21hY19waHlfY2FwX3N2Y19yZWFkeV9leHRgLCBgYXRoMTJrX3dtaV9laHRfY2Fwc19wYXJzZWAsIGFuZCBgYXRoMTJrX3dtaV90bHZfbWFjX3BoeV9jYXBzX2V4dGAuIFRoZXNlIGFyZSBjYWxsZWQgd2hlbiB0aGUgKmRyaXZlciogZ2V0cyBldmVudHMgZnJvbSB0aGUgKmZpcm13YXJlKi4gU2luY2Ugd2UgYXJlIG5vdCBydW5uaW5nIHdpdGggZmlybXdhcmUsIGFuZCB0aG9zZSBldmVudCBwcm9jZXNzaW5nIGZ1bmN0aW9ucyBhcmUgbm90IGJlaW5nIHRyaWdnZXJlZCwgdGhlcmUgaXMgbm8gZXZlbnQgdG8gc2VuZC4KCldhaXQgYSBzZWNvbmQsIGxldCYjMzk7cyByZXRoaW5rIHRoaXMuIENhbiB1c2Vyc3BhY2UgcG90ZW50aWFsbHkgKmluamVjdCogV01JIGV2ZW50cyBpbnRvIHRoZSBkcml2ZXIgdmlhIHRlc3Rtb2RlLCBldmVuIGlmIHRoZSBmaXJtd2FyZSBpc24mIzM5O3QgcnVubmluZz8gTGV0JiMzOTtzIGNoZWNrIGBhdGgxMmtfdG1fY21kYCB3aGljaCBzZWVtcyB0byBiZSB0aGUgY2VudHJhbCBjb21tYW5kIGhhbmRsZXIuIEl0IHNlZW1zIHRvIGhhbmRsZSBjb21tYW5kcyBsaWtlIGBBVEhfVE1fQ01EX1RFU1RNT0RFX1NUQVJUYCwgYEFUSF9UTV9DTURfR0VUX1ZFUlNJT05gLCBgQVRIX1RNX0NNRF9XTUlgLCBhbmQgYEFUSF9UTV9DTURfV01JX0ZUTWAuICBgQVRIX1RNX0NNRF9XTUlgIGlzIHBhcnRpY3VsYXJseSBpbnRlcmVzdGluZy4gSXQgKnNlbmRzKiBhIFdNSSBjb21tYW5kICp0byB0aGUgZmlybXdhcmUqLiBTbyBpdCBzZWVtcyB0aGUgYW5zd2VyIGlzIG5vLCBpdCBkb2VzbiYjMzk7dCBnaXZlIHVzIHRoZSBhYmlsaXR5IHRvIGluamVjdCBhbiBldmVudCB0byB0aGUgZHJpdmVyLgoKU28sIGluIHN1bW1hcnksIGJhc2VkIG9uIHRoaXMgcXVpY2sgbG9vaywgaXQgZG9lc24mIzM5O3QgbG9vayBsaWtlIEkgY2FuIHRyaWdnZXIgdGhlIGRyaXZlciYjMzk7cyBpbnRlcm5hbCBldmVudCBwYXJzaW5nIGxvZ2ljIGZyb20gdXNlcnNwYWNlIGRpcmVjdGx5LgoKV2hhdCBhYm91dCBgYXRoMTJrX3dtaV9zZW5kX3BlZXJfYXNzb2NfY21kYD8gVGhpcyBpcyBhIFdNSSBjb21tYW5kIHNlbnQgKmJ5KiB0aGUgZHJpdmVyIHRvIHRoZSBmaXJtd2FyZSwgd2hpY2ggbWVhbnMgaXQgaXNuJiMzOTt0IHJlbGV2YW50IHRvIG15IHF1ZXN0aW9uLiBUaGlzIGNvbW1hbmQgaXMgY2FsbGVkIGJ5IGBhdGgxMmtfbWFjX3BlZXJfYXNzb2NfaF92ZGV2YC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjkgMDg6MTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YXRoMTJrX3dtaV9zZW5kX3BlZXJfYXNzb2NfY21kJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyayYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jPTM4MzU9c3RhdGljIHZvaWQgYXRoMTJrX2Jzc19hc3NvYyhzdHJ1Y3QgYXRoMTJrICphcixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jLTM5MDQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jOjM5MDU6XHQvKiBrZWVwIHRoaXMgYmVmb3JlIGF0aDEya193bWlfc2VuZF9wZWVyX2Fzc29jX2NtZCgpICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jLTM5MDYtXHRyZXQgPSBhdGgxMmtfd21pX3ZkZXZfc2V0X3BhcmFtX2NtZChhciwgYXJ2aWYtXHUwMDNldmRldl9pZCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jLTM5MTQtXHRwZWVyX2FyZy1cdTAwM2Vpc19hc3NvYyA9IHRydWU7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jOjM5MTU6XHRyZXQgPSBhdGgxMmtfd21pX3NlbmRfcGVlcl9hc3NvY19jbWQoYXIsIHBlZXJfYXJnKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmMtMzkxNi1cdGlmIChyZXQpIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jPTY0NDA9c3RhdGljIGludCBhdGgxMmtfbWFjX3N0YXRpb25fYXNzb2Moc3RydWN0IGF0aDEyayAqYXIsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9tYWMuYy02NDc5LVx0cGVlcl9hcmctXHUwMDNlaXNfYXNzb2MgPSB0cnVlO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9tYWMuYzo2NDgwOlx0cmV0ID0gYXRoMTJrX3dtaV9zZW5kX3BlZXJfYXNzb2NfY21kKGFyLCBwZWVyX2FyZyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jLTY0ODEtXHRpZiAocmV0KSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9tYWMuYz02NjQ3PXN0YXRpYyB2b2lkIGF0aDEya19zdGFfcmNfdXBkYXRlX3drKHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXBoeV93b3JrICp3aylcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jLTY4MzktXHRcdFx0cGVlcl9hcmctXHUwMDNlaXNfYXNzb2MgPSBmYWxzZTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmM6Njg0MDpcdFx0XHRlcnIgPSBhdGgxMmtfd21pX3NlbmRfcGVlcl9hc3NvY19jbWQoYXIsIHBlZXJfYXJnKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmMtNjg0MS1cdFx0XHRpZiAoZXJyKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmM9MjEyNz1zdGF0aWMgdm9pZCBhdGgxMmtfd21pX2NvcHlfcGVlcl9mbGFncyhzdHJ1Y3Qgd21pX3BlZXJfYXNzb2NfY29tcGxldGVfY21kICpjbWQsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuYy0yMjE0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuYzoyMjE1OmludCBhdGgxMmtfd21pX3NlbmRfcGVlcl9hc3NvY19jbWQoc3RydWN0IGF0aDEyayAqYXIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5jLTIyMTYtXHRcdFx0XHQgICBzdHJ1Y3QgYXRoMTJrX3dtaV9wZWVyX2Fzc29jX2FyZyAqYXJnKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmg9NjU1Nj1pbnQgYXRoMTJrX3dtaV9wZGV2X3Jlc3VtZShzdHJ1Y3QgYXRoMTJrICphciwgdTMyIHBkZXZfaWQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuaC02NTU3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuaDo2NTU4OmludCBhdGgxMmtfd21pX3NlbmRfcGVlcl9hc3NvY19jbWQoc3RydWN0IGF0aDEyayAqYXIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5oLTY1NTktXHRcdFx0XHQgICBzdHJ1Y3QgYXRoMTJrX3dtaV9wZWVyX2Fzc29jX2FyZyAqYXJnKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjkgMDg6MTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTY2OTYKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiAxMDYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqVmVyaWZ5aW5nIHRoZSBNQUM4MDIxMSBDYWxsYmFjayBDaGFpbioqCgpPa2F5LCBzbyBJJiMzOTttIHRyYWNpbmcgdGhlIGV4ZWN1dGlvbiBwYXRoIGFuZCBuZWVkIHRvIG1ha2Ugc3VyZSBJJiMzOTt2ZSBnb3QgdGhpcyByaWdodC4gSSYjMzk7bSBzZWVpbmcgdGhpcyBjYWxsIGNvbWluZyBmcm9tIGBhdGgxMmtfYnNzX2Fzc29jYCwgYGF0aDEya19tYWNfc3RhdGlvbl9hc3NvY2AsIGFuZCBgYXRoMTJrX3N0YV9yY191cGRhdGVfd2tgLiBSaWdodCwgdGhvc2UgYXJlIGRlZmluaXRlbHkgbWFjODAyMTEgY2FsbGJhY2tzLiBObyBzdXJwcmlzZXMgdGhlcmUuIEJ1dCwgYW5kIHRoaXMgaXMgdGhlIGNydWNpYWwgcG9pbnQsIHRoZXNlIGNhbGxiYWNrcyAqc2hvdWxkKiBvbmx5IGJlIGFjY2Vzc2libGUgaWYgdGhlIGRyaXZlciBoYXMgc3VjY2Vzc2Z1bGx5IHJlZ2lzdGVyZWQgaXRzZWxmIHdpdGggbWFjODAyMTEgaW4gdGhlIGZpcnN0IHBsYWNlLiBBbmQgdGhlIGRyaXZlciBvbmx5IGdldHMgdG8gcmVnaXN0ZXIgd2l0aCBtYWM4MDIxMSAqYWZ0ZXIqIHRoZSBmaXJtd2FyZSBpbml0aWFsaXphdGlvbiBpcyBjb21wbGV0ZSBhbmQgc3VjY2Vzc2Z1bC4gU28sIHRoYXQmIzM5O3MgdGhlIGNoYWluIG9mIGxvZ2ljLCByaWdodD8gVGhlIGRyaXZlciByZWdpc3RlcnMsIHRoZW4gdGhlIGNhbGxiYWNrcyBhcmUgYXZhaWxhYmxlLiBMZXQmIzM5O3MganVzdCBkb3VibGUtY2hlY2sgdGhhdCB0aGlzIGlzIGFjdHVhbGx5IHRoZSBjYXNlLCBhbmQgSSYjMzk7bGwgdmVyaWZ5IHRoZSBlbnRpcmUgcGF0aC4gSSBuZWVkIHRvIG1ha2UgYWJzb2x1dGVseSBzdXJlIHRoZSBwcmVjb25kaXRpb25zIGFyZSBtZXQgaGVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjkgMDg6MTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YXRoMTJrX21hY19yZWdpc3RlciYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmM9MTE1NT1zdGF0aWMgaW50IGF0aDEya19jb3JlX2h3X2dyb3VwX3N0YXJ0KHN0cnVjdCBhdGgxMmtfaHdfZ3JvdXAgKmFnKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5jLTExNzgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuYzoxMTc5Olx0cmV0ID0gYXRoMTJrX21hY19yZWdpc3RlcihhZyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuYy0xMTgwLVx0aWYgKFdBUk5fT04ocmV0KSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jPTE1MjE4PXZvaWQgYXRoMTJrX21hY19tbG9fdGVhcmRvd24oc3RydWN0IGF0aDEya19od19ncm91cCAqYWcpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9tYWMuYy0xNTIzOS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmM6MTUyNDA6aW50IGF0aDEya19tYWNfcmVnaXN0ZXIoc3RydWN0IGF0aDEya19od19ncm91cCAqYWcpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jLTE1MjQxLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5oPTE1ND12b2lkIGF0aDEya19tYWNfdW5yZWdpc3RlcihzdHJ1Y3QgYXRoMTJrX2h3X2dyb3VwICphZyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5oOjE1NTppbnQgYXRoMTJrX21hY19yZWdpc3RlcihzdHJ1Y3QgYXRoMTJrX2h3X2dyb3VwICphZyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5oLTE1Ni1pbnQgYXRoMTJrX21hY19hbGxvY2F0ZShzdHJ1Y3QgYXRoMTJrX2h3X2dyb3VwICphZyk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI5IDA4OjE0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE3NDk4CgkJCQkJCQlvdXRwdXQ6IDQ0CgkJCQkJCQl0aG91Z2h0czogMjcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgYSBzdW1tYXJ5IG9mIG15IHVuZGVyc3RhbmRpbmcsIGZyYW1lZCBmcm9tIG15IHBlcnNwZWN0aXZlIGFzIGFuIGV4cGVydDoKCioqVW5kZXJzdGFuZGluZyB0aGUgYGF0aDEya19tYWNfcmVnaXN0ZXJgIENhbGwqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoZSBgYXRoMTJrX21hY19yZWdpc3RlcmAgZnVuY3Rpb24sIGFuZCB0aGUga2V5IHBpZWNlIG9mIGNvbnRleHQgaXMgdGhhdCBpdCYjMzk7cyBiZWluZyBjYWxsZWQgZnJvbSB3aXRoaW4gYGF0aDEya19jb3JlX2h3X2dyb3VwX3N0YXJ0YC4gVGhpcyBpbW1lZGlhdGVseSB0ZWxscyBtZSB3ZSYjMzk7cmUgbGlrZWx5IGluIHRoZSBlYXJseSBzdGFnZXMgb2YgYnJpbmdpbmcgdXAgYSBoYXJkd2FyZSBncm91cCwgcHJvYmFibHkgcmVsYXRlZCB0byBhIHNwZWNpZmljIHJhZGlvIG9yIHZpcnR1YWwgaW50ZXJmYWNlIHdpdGhpbiB0aGUgbGFyZ2VyIGF0aDEyayBkcml2ZXIgZnJhbWV3b3JrLiBgYXRoMTJrX2NvcmVfaHdfZ3JvdXBfc3RhcnRgIHN1Z2dlc3RzIGEgY29vcmRpbmF0ZWQgYWN0aW9uIGludm9sdmluZyBtdWx0aXBsZSBoYXJkd2FyZSBlbGVtZW50cy4gU28sIGBhdGgxMmtfbWFjX3JlZ2lzdGVyYCBpcyBtb3N0IGxpa2VseSByZXNwb25zaWJsZSBmb3IgcmVnaXN0ZXJpbmcgdGhlIE1BQyBsYXllciBjb21wb25lbnQgb2YgYSBzcGVjaWZpYyBoYXJkd2FyZSBncm91cC4gSSYjMzk7ZCBleHBlY3QgaXQgdG8gaW5pdGlhbGl6ZSBkYXRhIHN0cnVjdHVyZXMgcmVsYXRlZCB0byB0aGUgTUFDLCBzZXQgdXAgaW50ZXJydXB0IGhhbmRsZXJzLCBhbmQgcG90ZW50aWFsbHkgY29tbXVuaWNhdGUgd2l0aCB0aGUgaGFyZHdhcmUgYXQgYSBsb3cgbGV2ZWwgdG8gZXN0YWJsaXNoIHRoZSBNQUMmIzM5O3Mgb3BlcmF0aW9uYWwgc3RhdGUuIFRoaXMgd291bGQgcHJvYmFibHkgaW52b2x2ZSBzZXR0aW5nIHVwIERNQSBjaGFubmVscywgY29uZmlndXJpbmcgdHJhbnNtaXQgYW5kIHJlY2VpdmUgcXVldWVzLCBhbmQgcGVyaGFwcyBlbmFibGluZyB2YXJpb3VzIE1BQyBmZWF0dXJlcy4gSSBuZWVkIHRvIGRpdmUgZGVlcGVyLCBsaWtlbHkgc3RhcnRpbmcgd2l0aCB0aGUgZnVuY3Rpb24mIzM5O3MgZGVmaW5pdGlvbiBhbmQgaXRzIGNhbGwgc3RhY2sgdG8gZnVsbHkgdW5kZXJzdGFuZCB0aGUgZmxvdyBhbmQgZGF0YSB0aGlzIHJlZ2lzdGVyIGZ1bmN0aW9uIGlzIG1vdmluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjkgMDg6MTU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YXRoMTJrX2NvcmVfaHdfZ3JvdXBfc3RhcnQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5jPTExMjk9c3RhdGljIGludCBhdGgxMmtfY29yZV9tbG9fc2V0dXAoc3RydWN0IGF0aDEya19od19ncm91cCAqYWcpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmMtMTE1NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5jOjExNTU6c3RhdGljIGludCBhdGgxMmtfY29yZV9od19ncm91cF9zdGFydChzdHJ1Y3QgYXRoMTJrX2h3X2dyb3VwICphZylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5jLTExNTYte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5jPTEyMzA9c3RhdGljIGlubGluZVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmM6MTIzMTpib29sIGF0aDEya19jb3JlX2h3X2dyb3VwX3N0YXJ0X3JlYWR5KHN0cnVjdCBhdGgxMmtfaHdfZ3JvdXAgKmFnKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmMtMTIzMi17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmM9MTMxMT1pbnQgYXRoMTJrX2NvcmVfcW1pX2Zpcm13YXJlX3JlYWR5KHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmMtMTM0NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5jOjEzNDU6XHRpZiAoYXRoMTJrX2NvcmVfaHdfZ3JvdXBfc3RhcnRfcmVhZHkoYWcpKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuYzoxMzQ2Olx0XHRyZXQgPSBhdGgxMmtfY29yZV9od19ncm91cF9zdGFydChhZyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuYy0xMzQ3LVx0XHRpZiAocmV0KSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmM9MTYzNj1zdGF0aWMgdm9pZCBhdGgxMmtfY29yZV9yZXN0YXJ0KHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuYy0xNjU5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmM6MTY2MDpcdFx0aWYgKCFhdGgxMmtfY29yZV9od19ncm91cF9zdGFydF9yZWFkeShhZykpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5jLTE2NjEtXHRcdFx0bXV0ZXhfdW5sb2NrKFx1MDAyNmFnLVx1MDAzZW11dGV4KTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjkgMDg6MTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTg0MjgKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiAyODAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBVbnJlYWNoYWJpbGl0eSBvZiBUaGlzIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCB0aGUgY29kZSBpdCB0b3VjaGVzLiBJdCYjMzk7cyBjYWxsZWQgZnJvbSBgYXRoMTJrX2NvcmVfcW1pX2Zpcm13YXJlX3JlYWR5YC4gVGhhdCBmdW5jdGlvbiwgYXMgdGhlIG5hbWUgc3VnZ2VzdHMsIGdldHMgdHJpZ2dlcmVkIHdoZW4gdGhlIFFNSSBmaXJtd2FyZSBpcyByZWFkeS4gSXQmIzM5O3MgY2xlYXIgdGhhdCB3aXRob3V0IHRoZSBmaXJtd2FyZSBiZWluZyBsb2FkZWQgYW5kIHJlYWR5LCB0aGUgZHJpdmVyIHdvbiYjMzk7dCByZWdpc3RlciBwcm9wZXJseSB3aXRoIG1hYzgwMjExLiBBbmQgaWYgdGhlIHJlZ2lzdHJhdGlvbiBkb2VzbiYjMzk7dCBoYXBwZW4sIG5vbmUgb2YgdGhvc2UgbWFjODAyMTEgY2FsbGJhY2tzIGFyZSBldmVyIGdvaW5nIHRvIGJlIGFjY2Vzc2libGUuCgpUaGVyZWZvcmUsIHVuZGVyIG5vcm1hbCBjaXJjdW1zdGFuY2VzIGFuZCBlc3BlY2lhbGx5IGluIHRoZSB0eXBlIG9mIHZpcnR1YWxpemVkIGVudmlyb25tZW50IEkmIzM5O20gZGVhbGluZyB3aXRoIGhlcmUsIHdpdGhvdXQgdGhlIGFjdHVhbCBoYXJkd2FyZSBhbmQgZmlybXdhcmUsIHRoaXMgY29kZSBwYXRoIGlzIHNpbXBseSB1bnJlYWNoYWJsZS4KClRoaXMgcGF0Y2gsIGZyb20gd2hhdCBJIGNhbiBzZWUsIGlzIGEgZml4IGZvciBzb21lIHNwYXJzZSB3YXJuaW5ncyByZWxhdGluZyB0byBlbmRpYW5uZXNzLiBJdCB0b3VjaGVzIGBkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuaGAsIGBkZWJ1Z2ZzLmNgLCBgd21pLmNgLCBhbmQgYHdtaS5oYC4gU2luY2UgaXQmIzM5O3MgaW5hY2Nlc3NpYmxlIGluIFN5emthbGxlciwgbXkgaW5pdGlhbCBpbnN0aW5jdCBpcyB0byBtYXJrIHRoaXMgYXMgYFdvcnRoRnV6emluZz1mYWxzZWAuIEhvd2V2ZXIsIEkgbmVlZCB0byBiZSB0aG9yb3VnaCBhbmQgZXhoYXVzdCBhbGwgYXZlbnVlcy4KCkxldCBtZSB0aGlua+KApiBpcyB0aGVyZSBhbnkgb3RoZXIgd2F5IHRvIHBvdGVudGlhbGx5IHJlYWNoIHRoaXMgY29kZT8gSXMgdGhlcmUgYSB0ZXN0IGZyYW1ld29yayB0aGF0IG1pZ2h0IG1vY2sgdGhlIGZpcm13YXJlPyBOb3BlLCBJIGRvbiYjMzk7dCBzZWUgYW55IHNpZ24gb2YgdGhlIGBhdGgxMmtgIGRyaXZlciBoYXZpbmcgYSBmaXJtd2FyZSBtb2NraW5nIGZyYW1ld29yayB3aXRoaW4gdGhlIGtlcm5lbCBpdHNlbGYuIEhtbW0sIHdoYXQgYWJvdXQgdXNlcnNwYWNlPyBBcmUgdGhlcmUgYW55IHVzZXJzcGFjZSB0b29scyB0aGF0IGNvdWxkIGluamVjdCBRTUkgbWVzc2FnZXMgdG8gc2ltdWxhdGUgZmlybXdhcmUgcmVhZGluZXNzPyBOb3csIFFNSSBtZXNzYWdlcyBhcmUgZXhjaGFuZ2VkIHZpYSBRUlRSLCBvciBRdWFsY29tbSBJUEMgUm91dGVyLiBDYW4gU3l6a2FsbGVyIGluamVjdCBRUlRSIG1lc3NhZ2VzIHRvIHNpbXVsYXRlIHRoZSBmaXJtd2FyZT8KCkFoLCB5ZXMsIFN5emthbGxlciAqZG9lcyogc3VwcG9ydCBBRl9RSVBDUlRSIHNvY2tldHMuIFRoYXQmIzM5O3MgYSBwcm9taXNpbmcgbGVhZC4gTGV0JiMzOTtzIHNlZSBpZiB0aGUgZHJpdmVyIGlzIGFjdHVhbGx5IGxpc3RlbmluZyBvbiBRUlRSLiBJIG5lZWQgdG8gaW52ZXN0aWdhdGUgaWYgdGhlcmUmIzM5O3MgYW55IGFjdGl2ZSBjb21tdW5pY2F0aW9uIHdpdGggdGhlIFFSVFIgYnVzLiBJZiBzbywgdGhlcmUgKm1pZ2h0KiBiZSBhIHdheSB0byBtYW5pcHVsYXRlIHRoaXMgYW5kIHRyaWdnZXIgdGhlIHJlbGV2YW50IGNvZGUgcGF0aHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI5IDA4OjE1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3FtaV9oYW5kbGVfaW5pdCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9xbWkuYz00MDM4PWludCBhdGgxMmtfcW1pX2luaXRfc2VydmljZShzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcW1pLmMtNDA0Ni1cdGFiLVx1MDAzZXFtaS50YXJnZXRfbWVtX21vZGUgPSBhYi1cdTAwM2V0YXJnZXRfbWVtX21vZGU7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3FtaS5jOjQwNDc6XHRyZXQgPSBxbWlfaGFuZGxlX2luaXQoXHUwMDI2YWItXHUwMDNlcW1pLmhhbmRsZSwgQVRIMTJLX1FNSV9SRVNQX0xFTl9NQVgsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3FtaS5jLTQwNDgtXHRcdFx0ICAgICAgXHUwMDI2YXRoMTJrX3FtaV9vcHMsIGF0aDEya19xbWlfbXNnX2hhbmRsZXJzKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjkgMDg6MTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTkzOTgKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiA5MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipJbnZlc3RpZ2F0aW5nIFFNSSBDb21tdW5pY2F0aW9uIGluIGF0aDEyayoqCgpPa2F5LCBzbyBgYXRoMTJrYCB1dGlsaXplcyBgcW1pX2hhbmRsZV9pbml0YCBmb3IgaXRzIFFNSSBoYW5kbGUgaW5pdGlhbGl6YXRpb24uIFRoYXQmIzM5O3MgdGhlIHN0YXJ0aW5nIHBvaW50LiBOb3csIEkmIzM5O20gd29uZGVyaW5nLi4uIENvdWxkIGEgdXNlcnNwYWNlIHByb2Nlc3MgcG90ZW50aWFsbHkgc3Bvb2YgdGhlIGZpcm13YXJlJiMzOTtzIHJvbGUgYnkgc2VuZGluZyBRTUkgbWVzc2FnZXMgZGlyZWN0bHkgdG8gYGF0aDEya2A/IEl0JiMzOTtzIGEgdmFsaWQgcXVlc3Rpb24sIGV4cGxvcmluZyB0aGUgcG90ZW50aWFsIGZvciBtYW5pcHVsYXRpbmcgdGhlIFFNSSBpbnRlcmFjdGlvbi4KClJpZ2h0LCB0aGUgZHJpdmVyIHJlZ2lzdGVycyBhIFFNSSBjbGllbnQuIFRoaXMgaXMga2V5LiBIb2xkIG9uIGEgc2Vjb25kLi4uIHRoZSBkcml2ZXIgKnJlZ2lzdGVycyogYSBjbGllbnQgKmFuZCogc2VuZHMgcmVxdWVzdHMgdG8gdGhlIGZpcm13YXJlIOKAkyB3aGljaCwgaW1wb3J0YW50bHksICppcyogYSBRTUkgc2VydmljZS4gVGhhdCBjb25uZWN0aW9uIGlzIGZ1bmRhbWVudGFsIHRvIHRoZSBkcml2ZXImIzM5O3Mgb3BlcmF0aW9uLgoKTGV0JiMzOTtzIGRpZyBpbnRvIGBxbWlfYWRkX2xvb2t1cGAuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGV4YWN0bHkgaG93IHRoZSBkcml2ZXIgaXMgbGlua2luZyB0aGUgY2xpZW50IGFuZCBzZXJ2aWNlLiBUaGlzIHdpbGwgdGVsbCBtZSBtb3JlIGFib3V0IGlmIHVzZXJzcGFjZSBjYW4gc3Bvb2YgdGhlIG1lc3NhZ2VzIG9yIGlmIHRoZXJlIGlzIGZ1cnRoZXIgdmFsaWRhdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjkgMDg6MTU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cW1pX2FkZF9sb29rdXAmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcW1pLmM9NDAzOD1pbnQgYXRoMTJrX3FtaV9pbml0X3NlcnZpY2Uoc3RydWN0IGF0aDEya19iYXNlICphYilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3FtaS5jLTQwNjMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3FtaS5jOjQwNjQ6XHRyZXQgPSBxbWlfYWRkX2xvb2t1cChcdTAwMjZhYi1cdTAwM2VxbWkuaGFuZGxlLCBRTUlfU0VSVklDRV9JRF9XTEZXLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9xbWkuYy00MDY1LVx0XHRcdCAgICAgQVRIMTJLX1FNSV9XTEZXX1NFUlZJQ0VfVkVSU19WMDEsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI5IDA4OjE1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE5OTEzCgkJCQkJCQlvdXRwdXQ6IDEyOAoJCQkJCQkJdGhvdWdodHM6IDU1NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXNpcyBvZiB0aGUgYGF0aDEya2AgRHJpdmVyIENvZGUgYW5kIEZ1enppbmcgRmVhc2liaWxpdHkqKgoKT2theSwgc28gSSYjMzk7dmUgYmVlbiBsb29raW5nIGF0IHRoaXMgY29kZSBhbmQgaG93IHdlIGNhbiBlZmZlY3RpdmVseSBmdXp6IGl0LiBNeSBpbml0aWFsIHRob3VnaHQgcHJvY2VzcyBpcyB0aGlzOiB0aGUgZHJpdmVyIGlzIGNsZWFybHkgdXNpbmcgdGhlIGBRTUlfU0VSVklDRV9JRF9XTEZXYCBzZXJ2aWNlLCB3aGljaCBtZWFucyBpdCYjMzk7cyB0YWxraW5nIHRvIGZpcm13YXJlLiBBIHVzZXJzcGFjZSBwcm9jZXNzICpjb3VsZCogYWN0IGFzIHRoaXMgZmlybXdhcmUgYnkgY3JlYXRpbmcgYSBRUlRSIHNvY2tldCBhbmQgcmVnaXN0ZXJpbmcgdGhlIHNlcnZpY2UgSUQuIEkga25vdyBTeXprYWxsZXIgY2FuIGdlbmVyYXRlIGBBRl9RSVBDUlRSYCBzb2NrZXRzLCBidXQgdGhlIG1pbGxpb24tZG9sbGFyIHF1ZXN0aW9uIGlzLCBjYW4gU3l6a2FsbGVyIG1lYW5pbmdmdWxseSBlbXVsYXRlIHRoZSAqY29tcGxleCogYFFNSV9TRVJWSUNFX0lEX1dMRldgIHNlcnZpY2UgcmVxdWlyZWQgdG8gZ2V0IHRoZSBgYXRoMTJrYCBkcml2ZXIgdXAgYW5kIHJ1bm5pbmc/CgpUaGUgYW5zd2VyLCBhcyBmYXIgYXMgSSBjYW4gc2VlLCBpcyBuby4gU3l6a2FsbGVyIGRvZXNuJiMzOTt0IGhhdmUgYSBkZWRpY2F0ZWQgZW11bGF0b3IgZm9yIGBhdGgxMmtgIGZpcm13YXJlLiBJdCB3b3VsZCBiZSBhbiBpbmNyZWRpYmx5IGRpZmZpY3VsdCB0YXNrIHRvIHJhbmRvbWx5IGdlbmVyYXRlIHRoZSAqY29ycmVjdCogc2VxdWVuY2Ugb2YgUU1JIHJlc3BvbnNlcyBuZWVkZWQgdG8gcGFzcyB0aGUgZmlybXdhcmUgaW5pdGlhbGl6YXRpb24uIFRoaXMgaW5pdGlhbGl6YXRpb24gaXMgZmFyIGZyb20gc2ltcGxlOyBpdCBpbnZvbHZlcyBtdWx0aXBsZSBzdGVwczogc2VydmljZSBsb29rdXAsIGNvbm5lY3Rpb24sIHNlbmRpbmcgYW5kIHJlY2VpdmluZyBhIHdob2xlIGJ1bmNoIG9mIFFNSSBtZXNzYWdlcyBsaWtlIGBXTEZXX0lORF9SRUdJU1RFUl9SRVFfTVNHX1YwMWAsIGBXTEZXX0hPU1RfQ0FQX1JFUV9NU0dfVjAxYCwgYFdMRldfQ0FMX1JFUE9SVF9SRVFfTVNHX1YwMWAsIHBsdXMgZmlybXdhcmUgYW5kIEJERiBkb3dubG9hZHMsIFdNSSBpbml0aWFsaXphdGlvbiwgYW5kIGEgJiMzNDtzZXJ2aWNlIHJlYWR5JiMzNDsgZXZlbnQuCgpSZWFsaXN0aWNhbGx5LCBpdCYjMzk7cyBwcmFjdGljYWxseSBpbXBvc3NpYmxlIGZvciBhIGZ1enplciB0byBzdHVtYmxlIHVwb24gdGhlIHJpZ2h0IHNlcXVlbmNlIG9mIGNvbXBsZXggUU1JIGFuZCBXTUkgbWVzc2FnZXMgdG8gZXZlbiByZWFjaCB0aGUgbW9kaWZpZWQgY29kZSB3aXRob3V0IGEgZGVkaWNhdGVkIGVtdWxhdG9yIHRoYXQgZnVsbHkgdW5kZXJzdGFuZHMgdGhlIHByb3RvY29sLiBUaGVyZWZvcmUsIGdpdmVuIHRoZSBsZXZlbCBvZiBjb21wbGV4aXR5LCB0aGUgY29kZSBpcyBhbG1vc3QgY2VydGFpbmx5IHVucmVhY2hhYmxlIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQg4oCTIGFuZCB0aGF0JiMzOTtzIHByZWNpc2VseSB3aGF0IFN5emthbGxlciBpcy4gU28sIG15IGluaXRpYWwgYXNzZXNzbWVudCB3b3VsZCBiZSB0byBtYXJrIHRoaXMgYXMgYFdvcnRoRnV6emluZz1mYWxzZWAuIFRoZSByZWFzb25pbmcgaXMgdGhhdCB0aGUgbW9kaWZpZWQgY29kZSwgd2hpbGUgYW4gaW50ZXJlc3RpbmcgY2hhbmdlLCBpcyBhIHBhcnQgb2YgdGhlIGBhdGgxMmtgIGRyaXZlciYjMzk7cyBXTUkgY29tbXVuaWNhdGlvbiB3aXRoIHRoZSBmaXJtd2FyZSwgYW5kIGl0JiMzOTtzIHNpbXBseSB1bnJlYWNoYWJsZSB3aXRob3V0IGVpdGhlciByZWFsIGhhcmR3YXJlIG9yIGEgdmVyeSBjb21wbGV4IGZpcm13YXJlIGVtdWxhdG9yLgoKTm93LCBsZXQgbWUgZG91YmxlLWNoZWNrIHRoZSBwYXRjaCBpdHNlbGYuIEl0IGxvb2tzIGxpa2UgaXQmIzM5O3MganVzdCBjaGFuZ2luZyBgdTMyYCB0byBgX19sZTMyYCBpbiBgc3RydWN0IGF0aDEya19iYW5kX2NhcGAgYW5kIGBzdHJ1Y3QgYXRoMTJrX3dtaV9wZWVyX2Fzc29jX2FyZ2AgYW5kIHN3YXBwaW5nIGB1MzJfZ2V0X2JpdHNgIHRvIGBsZTMyX2dldF9iaXRzYC4gQWhhISBJdCYjMzk7cyBhIHNwYXJzZS9lbmRpYW5uZXNzIGZpeCEgTm8gZnVuY3Rpb25hbCBjaGFuZ2UuLi4gb3IgaXMgaXQ/IFdhaXQsIGlmIGl0JiMzOTtzIGFuIGVuZGlhbm5lc3MgZml4LCB0aGF0ICppcyogYSBmdW5jdGlvbmFsIGNoYW5nZSBvbiBiaWctZW5kaWFuIGFyY2hpdGVjdHVyZXMuCgpUaGUgcXVlc3Rpb24gdGhlbiBiZWNvbWVzLCBhcmUgYGF0aDEya2AgYW5kIHRoZSBoYXJkd2FyZSBpdCBzdXBwb3J0cyBldmVyIHVzZWQgb24gYmlnLWVuZGlhbiBtYWNoaW5lcz8gSXQmIzM5O3MgYSBQQ0kvQUhCIGRyaXZlciBmb3IgUXVhbGNvbW0gV2ktRmkgNywgc28gaXQmIzM5O3MgKnBvc3NpYmxlKiBidXQgaGlnaGx5IHVubGlrZWx5LiBIb3dldmVyLCBldmVuICppZiogdGhpcyBjaGFuZ2UgKmRvZXMqIGFmZmVjdCBiaWctZW5kaWFuIHN5c3RlbXMsIHRoZSBpbmFjY2Vzc2liaWxpdHkgdGhyb3VnaCBzeXprYWxsZXIgcmVtYWlucyB0aGUgY29yZSBpc3N1ZS4gSSYjMzk7bSBzdGlsbCBub3QgYWJsZSB0byBjb25zdHJ1Y3QgYSBtZWFuaW5nZnVsIGZ1enplciB0aGF0IHdvdWxkIHVuY292ZXIgYSBwb3RlbnRpYWwgYnVnLiBUaGVyZWZvcmUsIHRoZSBjb25jbHVzaW9uIHRoYXQgYFdvcnRoRnV6emluZz1mYWxzZWAgaXMgdGhlIHJpZ2h0IG9uZSwgcmVnYXJkbGVzcyBvZiB0aGUgZW5kaWFubmVzcyBjaGFuZ2UsIGdpdmVuIGl0JiMzOTtzIHN0aWxsIGZ1bmN0aW9uYWxseSB1bnJlYWNoYWJsZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjkgMDg6MTU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBlbmRpYW5uZXNzIGlzc3VlcyAoc3BhcnNlIHdhcm5pbmdzKSBpbiB0aGUgYXRoMTJrIGRyaXZlciYjMzk7cyBXTUkgKFdpcmVsZXNzIE1vZHVsZSBJbnRlcmZhY2UpIGNvbW11bmljYXRpb24gd2l0aCB0aGUgZmlybXdhcmUuIFRoaXMgY29kZSBpcyB1bnJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSBiZWNhdXNlIGl0IHJlcXVpcmVzIGFjdHVhbCBRdWFsY29tbSBXaS1GaSA3IGhhcmR3YXJlIGFuZCBpdHMgcHJvcHJpZXRhcnkgZmlybXdhcmUgdG8gaW5pdGlhbGl6ZSB0aGUgZGV2aWNlIGFuZCByZWFjaCB0aGUgV01JIG1lc3NhZ2UgcGFyc2luZy9zZW5kaW5nIGxvZ2ljLiBTeXprYWxsZXIgY2Fubm90IGVtdWxhdGUgdGhlIGNvbXBsZXggUU1JL1dNSSBmaXJtd2FyZSBpbnRlcmZhY2UgcmVxdWlyZWQgdG8gdHJpZ2dlciB0aGVzZSBjb2RlIHBhdGhzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgZW5kaWFubmVzcyBpc3N1ZXMgKHNwYXJzZSB3YXJuaW5ncykgaW4gdGhlIGF0aDEyayBkcml2ZXImIzM5O3MgV01JIChXaXJlbGVzcyBNb2R1bGUgSW50ZXJmYWNlKSBjb21tdW5pY2F0aW9uIHdpdGggdGhlIGZpcm13YXJlLiBUaGlzIGNvZGUgaXMgdW5yZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUgYmVjYXVzZSBpdCByZXF1aXJlcyBhY3R1YWwgUXVhbGNvbW0gV2ktRmkgNyBoYXJkd2FyZSBhbmQgaXRzIHByb3ByaWV0YXJ5IGZpcm13YXJlIHRvIGluaXRpYWxpemUgdGhlIGRldmljZSBhbmQgcmVhY2ggdGhlIFdNSSBtZXNzYWdlIHBhcnNpbmcvc2VuZGluZyBsb2dpYy4gU3l6a2FsbGVyIGNhbm5vdCBlbXVsYXRlIHRoZSBjb21wbGV4IFFNSS9XTUkgZmlybXdhcmUgaW50ZXJmYWNlIHJlcXVpcmVkIHRvIHRyaWdnZXIgdGhlc2UgY29kZSBwYXRocy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNi0yOVQwODoxNDowNy40NTY2OTg0NjNaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4MDIyNDQ1MTQxOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgZW5kaWFubmVzcyBpc3N1ZXMgKHNwYXJzZSB3YXJuaW5ncykgaW4gdGhlIGF0aDEyayBkcml2ZXIncyBXTUkgKFdpcmVsZXNzIE1vZHVsZSBJbnRlcmZhY2UpIGNvbW11bmljYXRpb24gd2l0aCB0aGUgZmlybXdhcmUuIFRoaXMgY29kZSBpcyB1bnJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSBiZWNhdXNlIGl0IHJlcXVpcmVzIGFjdHVhbCBRdWFsY29tbSBXaS1GaSA3IGhhcmR3YXJlIGFuZCBpdHMgcHJvcHJpZXRhcnkgZmlybXdhcmUgdG8gaW5pdGlhbGl6ZSB0aGUgZGV2aWNlIGFuZCByZWFjaCB0aGUgV01JIG1lc3NhZ2UgcGFyc2luZy9zZW5kaW5nIGxvZ2ljLiBTeXprYWxsZXIgY2Fubm90IGVtdWxhdGUgdGhlIGNvbXBsZXggUU1JL1dNSSBmaXJtd2FyZSBpbnRlcmZhY2UgcmVxdWlyZWQgdG8gdHJpZ2dlciB0aGVzZSBjb2RlIHBhdGhzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjlUMDg6MTQ6MDcuNDU2NzA2ODQzWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3OTI0MzM3NzQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCAzYmM2YTQwYjdiNzlmY2MxODlhYTY0OGJkNjgyNmFjN2VkNDJiMDk3XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBNb24gSnVuIDI5IDA4OjE0OjA2IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmhcXG5pbmRleCBmYzUxMjdiNWMxYTM3Zi4uMTNmYTZlNTRkMjc5ZDIgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmhcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuaFxcbkBAIC04MDgsMTMgKzgwOCwxMyBAQCBzdHJ1Y3QgYXRoMTJrX2JhbmRfY2FwIHtcXG4gXFx0dTMyIHBoeV9pZDtcXG4gXFx0dTMyIG1heF9id19zdXBwb3J0ZWQ7XFxuIFxcdHUzMiBodF9jYXBfaW5mbztcXG4tXFx0dTMyIGhlX2NhcF9pbmZvWzJdO1xcbitcXHRfX2xlMzIgaGVfY2FwX2luZm9bMl07XFxuIFxcdHUzMiBoZV9tY3M7XFxuLVxcdHUzMiBoZV9jYXBfcGh5X2luZm9bUFNPQ19IT1NUX01BWF9QSFlfU0laRV07XFxuK1xcdF9fbGUzMiBoZV9jYXBfcGh5X2luZm9bUFNPQ19IT1NUX01BWF9QSFlfU0laRV07XFxuIFxcdHN0cnVjdCBhdGgxMmtfd21pX3BwZV90aHJlc2hvbGRfYXJnIGhlX3BwZXQ7XFxuIFxcdHUxNiBoZV82Z2h6X2NhcGE7XFxuLVxcdHUzMiBlaHRfY2FwX21hY19pbmZvW1dNSV9NQVhfRUhUQ0FQX01BQ19TSVpFXTtcXG4tXFx0dTMyIGVodF9jYXBfcGh5X2luZm9bV01JX01BWF9FSFRDQVBfUEhZX1NJWkVdO1xcbitcXHRfX2xlMzIgZWh0X2NhcF9tYWNfaW5mb1tXTUlfTUFYX0VIVENBUF9NQUNfU0laRV07XFxuK1xcdF9fbGUzMiBlaHRfY2FwX3BoeV9pbmZvW1dNSV9NQVhfRUhUQ0FQX1BIWV9TSVpFXTtcXG4gXFx0dTMyIGVodF9tY3NfMjBfb25seTtcXG4gXFx0dTMyIGVodF9tY3NfODA7XFxuIFxcdHUzMiBlaHRfbWNzXzE2MDtcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuY1xcbmluZGV4IGQxN2Q0YThmMWNiN2QzLi42YjBkMDc0NDhlNWQ3MiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuY1xcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jXFxuQEAgLTQxMCw4ICs0MTAsOCBAQCBzdGF0aWMgYm9vbCBhdGgxMmtfaGVfc3VwcG9ydHNfZXh0cmFfbWNzKHN0cnVjdCBhdGgxMmsgKmFyLCBpbnQgZnJlcSlcXG4gXFx0ZWxzZVxcbiBcXHRcXHRjYXBfYmFuZCA9IFxcdTAwMjZjYXAtXFx1MDAzZWJhbmRbTkw4MDIxMV9CQU5EXzZHSFpdO1xcbiBcXG4tXFx0ZXh0cmFfbWNzX3N1cHBvcnRlZCA9IHUzMl9nZXRfYml0cyhjYXBfYmFuZC1cXHUwMDNlaGVfY2FwX2luZm9bMV0sXFxuLVxcdFxcdFxcdFxcdFxcdCAgIEhFX0VYVFJBX01DU19TVVBQT1JUKTtcXG4rXFx0ZXh0cmFfbWNzX3N1cHBvcnRlZCA9IGxlMzJfZ2V0X2JpdHMoY2FwX2JhbmQtXFx1MDAzZWhlX2NhcF9pbmZvWzFdLFxcbitcXHRcXHRcXHRcXHRcXHQgICAgSEVfRVhUUkFfTUNTX1NVUFBPUlQpO1xcbiBcXHRyZXR1cm4gZXh0cmFfbWNzX3N1cHBvcnRlZDtcXG4gfVxcbiBcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmNcXG5pbmRleCA4NGEzMWI5NTNkYjgxYS4uMzlmOGNhNzM2OGUzMTcgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuY1xcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmNcXG5AQCAtNTQ1LDEyICs1NDUsMTEgQEAgYXRoMTJrX3B1bGxfbWFjX3BoeV9jYXBfc3ZjX3JlYWR5X2V4dChzdHJ1Y3QgYXRoMTJrX3dtaV9wZGV2ICp3bWlfaGFuZGxlLFxcbiBcXHRcXHRjYXBfYmFuZC1cXHUwMDNlcGh5X2lkID0gbGUzMl90b19jcHUobWFjX2NhcHMtXFx1MDAzZXBoeV9pZCk7XFxuIFxcdFxcdGNhcF9iYW5kLVxcdTAwM2VtYXhfYndfc3VwcG9ydGVkID0gbGUzMl90b19jcHUobWFjX2NhcHMtXFx1MDAzZW1heF9id19zdXBwb3J0ZWRfMmcpO1xcbiBcXHRcXHRjYXBfYmFuZC1cXHUwMDNlaHRfY2FwX2luZm8gPSBsZTMyX3RvX2NwdShtYWNfY2Fwcy1cXHUwMDNlaHRfY2FwX2luZm9fMmcpO1xcbi1cXHRcXHRjYXBfYmFuZC1cXHUwMDNlaGVfY2FwX2luZm9bMF0gPSBsZTMyX3RvX2NwdShtYWNfY2Fwcy1cXHUwMDNlaGVfY2FwX2luZm9fMmcpO1xcbi1cXHRcXHRjYXBfYmFuZC1cXHUwMDNlaGVfY2FwX2luZm9bMV0gPSBsZTMyX3RvX2NwdShtYWNfY2Fwcy1cXHUwMDNlaGVfY2FwX2luZm9fMmdfZXh0KTtcXG4rXFx0XFx0Y2FwX2JhbmQtXFx1MDAzZWhlX2NhcF9pbmZvWzBdID0gbWFjX2NhcHMtXFx1MDAzZWhlX2NhcF9pbmZvXzJnO1xcbitcXHRcXHRjYXBfYmFuZC1cXHUwMDNlaGVfY2FwX2luZm9bMV0gPSBtYWNfY2Fwcy1cXHUwMDNlaGVfY2FwX2luZm9fMmdfZXh0O1xcbiBcXHRcXHRjYXBfYmFuZC1cXHUwMDNlaGVfbWNzID0gbGUzMl90b19jcHUobWFjX2NhcHMtXFx1MDAzZWhlX3N1cHBfbWNzXzJnKTtcXG4tXFx0XFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIFdNSV9NQVhfSEVDQVBfUEhZX1NJWkU7IGkrKylcXG4tXFx0XFx0XFx0Y2FwX2JhbmQtXFx1MDAzZWhlX2NhcF9waHlfaW5mb1tpXSA9XFxuLVxcdFxcdFxcdFxcdGxlMzJfdG9fY3B1KG1hY19jYXBzLVxcdTAwM2VoZV9jYXBfcGh5X2luZm9fMmdbaV0pO1xcbitcXHRcXHRtZW1jcHkoXFx1MDAyNmNhcF9iYW5kLVxcdTAwM2VoZV9jYXBfcGh5X2luZm8sIFxcdTAwMjZtYWNfY2Fwcy1cXHUwMDNlaGVfY2FwX3BoeV9pbmZvXzJnLFxcbitcXHRcXHQgICAgICAgc2l6ZW9mKHUzMikgKiBXTUlfTUFYX0hFQ0FQX1BIWV9TSVpFKTtcXG4gXFxuIFxcdFxcdGNhcF9iYW5kLVxcdTAwM2VoZV9wcGV0Lm51bXNzX20xID0gbGUzMl90b19jcHUobWFjX2NhcHMtXFx1MDAzZWhlX3BwZXQyZy5udW1zc19tMSk7XFxuIFxcdFxcdGNhcF9iYW5kLVxcdTAwM2VoZV9wcGV0LnJ1X2JpdF9tYXNrID0gbGUzMl90b19jcHUobWFjX2NhcHMtXFx1MDAzZWhlX3BwZXQyZy5ydV9pbmZvKTtcXG5AQCAtNTY2LDEyICs1NjUsMTEgQEAgYXRoMTJrX3B1bGxfbWFjX3BoeV9jYXBfc3ZjX3JlYWR5X2V4dChzdHJ1Y3QgYXRoMTJrX3dtaV9wZGV2ICp3bWlfaGFuZGxlLFxcbiBcXHRcXHRjYXBfYmFuZC1cXHUwMDNlbWF4X2J3X3N1cHBvcnRlZCA9XFxuIFxcdFxcdFxcdGxlMzJfdG9fY3B1KG1hY19jYXBzLVxcdTAwM2VtYXhfYndfc3VwcG9ydGVkXzVnKTtcXG4gXFx0XFx0Y2FwX2JhbmQtXFx1MDAzZWh0X2NhcF9pbmZvID0gbGUzMl90b19jcHUobWFjX2NhcHMtXFx1MDAzZWh0X2NhcF9pbmZvXzVnKTtcXG4tXFx0XFx0Y2FwX2JhbmQtXFx1MDAzZWhlX2NhcF9pbmZvWzBdID0gbGUzMl90b19jcHUobWFjX2NhcHMtXFx1MDAzZWhlX2NhcF9pbmZvXzVnKTtcXG4tXFx0XFx0Y2FwX2JhbmQtXFx1MDAzZWhlX2NhcF9pbmZvWzFdID0gbGUzMl90b19jcHUobWFjX2NhcHMtXFx1MDAzZWhlX2NhcF9pbmZvXzVnX2V4dCk7XFxuK1xcdFxcdGNhcF9iYW5kLVxcdTAwM2VoZV9jYXBfaW5mb1swXSA9IG1hY19jYXBzLVxcdTAwM2VoZV9jYXBfaW5mb181ZztcXG4rXFx0XFx0Y2FwX2JhbmQtXFx1MDAzZWhlX2NhcF9pbmZvWzFdID0gbWFjX2NhcHMtXFx1MDAzZWhlX2NhcF9pbmZvXzVnX2V4dDtcXG4gXFx0XFx0Y2FwX2JhbmQtXFx1MDAzZWhlX21jcyA9IGxlMzJfdG9fY3B1KG1hY19jYXBzLVxcdTAwM2VoZV9zdXBwX21jc181Zyk7XFxuLVxcdFxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBXTUlfTUFYX0hFQ0FQX1BIWV9TSVpFOyBpKyspXFxuLVxcdFxcdFxcdGNhcF9iYW5kLVxcdTAwM2VoZV9jYXBfcGh5X2luZm9baV0gPVxcbi1cXHRcXHRcXHRcXHRsZTMyX3RvX2NwdShtYWNfY2Fwcy1cXHUwMDNlaGVfY2FwX3BoeV9pbmZvXzVnW2ldKTtcXG4rXFx0XFx0bWVtY3B5KFxcdTAwMjZjYXBfYmFuZC1cXHUwMDNlaGVfY2FwX3BoeV9pbmZvLCBcXHUwMDI2bWFjX2NhcHMtXFx1MDAzZWhlX2NhcF9waHlfaW5mb181ZyxcXG4rXFx0XFx0ICAgICAgIHNpemVvZih1MzIpICogV01JX01BWF9IRUNBUF9QSFlfU0laRSk7XFxuIFxcbiBcXHRcXHRjYXBfYmFuZC1cXHUwMDNlaGVfcHBldC5udW1zc19tMSA9IGxlMzJfdG9fY3B1KG1hY19jYXBzLVxcdTAwM2VoZV9wcGV0NWcubnVtc3NfbTEpO1xcbiBcXHRcXHRjYXBfYmFuZC1cXHUwMDNlaGVfcHBldC5ydV9iaXRfbWFzayA9IGxlMzJfdG9fY3B1KG1hY19jYXBzLVxcdTAwM2VoZV9wcGV0NWcucnVfaW5mbyk7XFxuQEAgLTU4NCwxMiArNTgyLDExIEBAIGF0aDEya19wdWxsX21hY19waHlfY2FwX3N2Y19yZWFkeV9leHQoc3RydWN0IGF0aDEya193bWlfcGRldiAqd21pX2hhbmRsZSxcXG4gXFx0XFx0Y2FwX2JhbmQtXFx1MDAzZW1heF9id19zdXBwb3J0ZWQgPVxcbiBcXHRcXHRcXHRsZTMyX3RvX2NwdShtYWNfY2Fwcy1cXHUwMDNlbWF4X2J3X3N1cHBvcnRlZF81Zyk7XFxuIFxcdFxcdGNhcF9iYW5kLVxcdTAwM2VodF9jYXBfaW5mbyA9IGxlMzJfdG9fY3B1KG1hY19jYXBzLVxcdTAwM2VodF9jYXBfaW5mb181Zyk7XFxuLVxcdFxcdGNhcF9iYW5kLVxcdTAwM2VoZV9jYXBfaW5mb1swXSA9IGxlMzJfdG9fY3B1KG1hY19jYXBzLVxcdTAwM2VoZV9jYXBfaW5mb181Zyk7XFxuLVxcdFxcdGNhcF9iYW5kLVxcdTAwM2VoZV9jYXBfaW5mb1sxXSA9IGxlMzJfdG9fY3B1KG1hY19jYXBzLVxcdTAwM2VoZV9jYXBfaW5mb181Z19leHQpO1xcbitcXHRcXHRjYXBfYmFuZC1cXHUwMDNlaGVfY2FwX2luZm9bMF0gPSBtYWNfY2Fwcy1cXHUwMDNlaGVfY2FwX2luZm9fNWc7XFxuK1xcdFxcdGNhcF9iYW5kLVxcdTAwM2VoZV9jYXBfaW5mb1sxXSA9IG1hY19jYXBzLVxcdTAwM2VoZV9jYXBfaW5mb181Z19leHQ7XFxuIFxcdFxcdGNhcF9iYW5kLVxcdTAwM2VoZV9tY3MgPSBsZTMyX3RvX2NwdShtYWNfY2Fwcy1cXHUwMDNlaGVfc3VwcF9tY3NfNWcpO1xcbi1cXHRcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgV01JX01BWF9IRUNBUF9QSFlfU0laRTsgaSsrKVxcbi1cXHRcXHRcXHRjYXBfYmFuZC1cXHUwMDNlaGVfY2FwX3BoeV9pbmZvW2ldID1cXG4tXFx0XFx0XFx0XFx0bGUzMl90b19jcHUobWFjX2NhcHMtXFx1MDAzZWhlX2NhcF9waHlfaW5mb181Z1tpXSk7XFxuK1xcdFxcdG1lbWNweShcXHUwMDI2Y2FwX2JhbmQtXFx1MDAzZWhlX2NhcF9waHlfaW5mbywgXFx1MDAyNm1hY19jYXBzLVxcdTAwM2VoZV9jYXBfcGh5X2luZm9fNWcsXFxuK1xcdFxcdCAgICAgICBzaXplb2YodTMyKSAqIFdNSV9NQVhfSEVDQVBfUEhZX1NJWkUpO1xcbiBcXG4gXFx0XFx0Y2FwX2JhbmQtXFx1MDAzZWhlX3BwZXQubnVtc3NfbTEgPSBsZTMyX3RvX2NwdShtYWNfY2Fwcy1cXHUwMDNlaGVfcHBldDVnLm51bXNzX20xKTtcXG4gXFx0XFx0Y2FwX2JhbmQtXFx1MDAzZWhlX3BwZXQucnVfYml0X21hc2sgPSBsZTMyX3RvX2NwdShtYWNfY2Fwcy1cXHUwMDNlaGVfcHBldDVnLnJ1X2luZm8pO1xcbkBAIC0yMjg0LDE0ICsyMjgxLDEzIEBAIGludCBhdGgxMmtfd21pX3NlbmRfcGVlcl9hc3NvY19jbWQoc3RydWN0IGF0aDEyayAqYXIsXFxuIFxcdGNtZC1cXHUwMDNlcGVlcl9waHltb2RlID0gY3B1X3RvX2xlMzIoYXJnLVxcdTAwM2VwZWVyX3BoeW1vZGUpO1xcbiBcXG4gXFx0LyogVXBkYXRlIDExYXggY2FwYWJpbGl0aWVzICovXFxuLVxcdGNtZC1cXHUwMDNlcGVlcl9oZV9jYXBfaW5mbyA9IGNwdV90b19sZTMyKGFyZy1cXHUwMDNlcGVlcl9oZV9jYXBfbWFjaW5mb1swXSk7XFxuLVxcdGNtZC1cXHUwMDNlcGVlcl9oZV9jYXBfaW5mb19leHQgPSBjcHVfdG9fbGUzMihhcmctXFx1MDAzZXBlZXJfaGVfY2FwX21hY2luZm9bMV0pO1xcbitcXHRjbWQtXFx1MDAzZXBlZXJfaGVfY2FwX2luZm8gPSBhcmctXFx1MDAzZXBlZXJfaGVfY2FwX21hY2luZm9bMF07XFxuK1xcdGNtZC1cXHUwMDNlcGVlcl9oZV9jYXBfaW5mb19leHQgPSBhcmctXFx1MDAzZXBlZXJfaGVfY2FwX21hY2luZm9bMV07XFxuIFxcdGNtZC1cXHUwMDNlcGVlcl9oZV9jYXBfaW5mb19pbnRlcm5hbCA9IGNwdV90b19sZTMyKGFyZy1cXHUwMDNlcGVlcl9oZV9jYXBfbWFjaW5mb19pbnRlcm5hbCk7XFxuIFxcdGNtZC1cXHUwMDNlcGVlcl9oZV9jYXBzXzZnaHogPSBjcHVfdG9fbGUzMihhcmctXFx1MDAzZXBlZXJfaGVfY2Fwc182Z2h6KTtcXG4gXFx0Y21kLVxcdTAwM2VwZWVyX2hlX29wcyA9IGNwdV90b19sZTMyKGFyZy1cXHUwMDNlcGVlcl9oZV9vcHMpO1xcbi1cXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgV01JX01BWF9IRUNBUF9QSFlfU0laRTsgaSsrKVxcbi1cXHRcXHRjbWQtXFx1MDAzZXBlZXJfaGVfY2FwX3BoeVtpXSA9XFxuLVxcdFxcdFxcdGNwdV90b19sZTMyKGFyZy1cXHUwMDNlcGVlcl9oZV9jYXBfcGh5aW5mb1tpXSk7XFxuK1xcdG1lbWNweShjbWQtXFx1MDAzZXBlZXJfaGVfY2FwX3BoeSwgYXJnLVxcdTAwM2VwZWVyX2hlX2NhcF9waHlpbmZvLFxcbitcXHQgICAgICAgc2l6ZW9mKHUzMikgKiBXTUlfTUFYX0hFQ0FQX1BIWV9TSVpFKTtcXG4gXFx0Y21kLVxcdTAwM2VwZWVyX3BwZXQubnVtc3NfbTEgPSBjcHVfdG9fbGUzMihhcmctXFx1MDAzZXBlZXJfcHBldC5udW1zc19tMSk7XFxuIFxcdGNtZC1cXHUwMDNlcGVlcl9wcGV0LnJ1X2luZm8gPSBjcHVfdG9fbGUzMihhcmctXFx1MDAzZXBlZXJfcHBldC5ydV9iaXRfbWFzayk7XFxuIFxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBXTUlfTUFYX05VTV9TUzsgaSsrKVxcbkBAIC01MTU4LDE3ICs1MTU0LDE3IEBAIHN0YXRpYyB2b2lkIGF0aDEya193bWlfZWh0X2NhcHNfcGFyc2Uoc3RydWN0IGF0aDEya19wZGV2ICpwZGV2LCB1MzIgYmFuZCxcXG4gXFx0dTggaTtcXG4gXFxuIFxcdGlmIChiYW5kID09IE5MODAyMTFfQkFORF82R0haKVxcbi1cXHRcXHRzdXBwb3J0XzMyMG1oeiA9IGNhcF9iYW5kLVxcdTAwM2VlaHRfY2FwX3BoeV9pbmZvWzBdIFxcdTAwMjZcXG4tXFx0XFx0XFx0XFx0XFx0SUVFRTgwMjExX0VIVF9QSFlfQ0FQMF8zMjBNSFpfSU5fNkdIWjtcXG4rXFx0XFx0c3VwcG9ydF8zMjBtaHogPSBsZTMyX3RvX2NwdShjYXBfYmFuZC1cXHUwMDNlZWh0X2NhcF9waHlfaW5mb1swXSkgXFx1MDAyNlxcbitcXHRcXHRcXHRcXHQgSUVFRTgwMjExX0VIVF9QSFlfQ0FQMF8zMjBNSFpfSU5fNkdIWjtcXG4gXFxuLVxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBXTUlfTUFYX0VIVENBUF9NQUNfU0laRTsgaSsrKVxcbi1cXHRcXHRjYXBfYmFuZC1cXHUwMDNlZWh0X2NhcF9tYWNfaW5mb1tpXSA9IGxlMzJfdG9fY3B1KGNhcF9tYWNfaW5mb1tpXSk7XFxuK1xcdG1lbWNweShjYXBfYmFuZC1cXHUwMDNlZWh0X2NhcF9tYWNfaW5mbywgY2FwX21hY19pbmZvLFxcbitcXHQgICAgICAgc2l6ZW9mKHUzMikgKiBXTUlfTUFYX0VIVENBUF9NQUNfU0laRSk7XFxuIFxcbi1cXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgV01JX01BWF9FSFRDQVBfUEhZX1NJWkU7IGkrKylcXG4tXFx0XFx0Y2FwX2JhbmQtXFx1MDAzZWVodF9jYXBfcGh5X2luZm9baV0gPSBsZTMyX3RvX2NwdShjYXBfcGh5X2luZm9baV0pO1xcbitcXHRtZW1jcHkoY2FwX2JhbmQtXFx1MDAzZWVodF9jYXBfcGh5X2luZm8sIGNhcF9waHlfaW5mbyxcXG4rXFx0ICAgICAgIHNpemVvZih1MzIpICogV01JX01BWF9FSFRDQVBfUEhZX1NJWkUpO1xcbiBcXG4gXFx0aWYgKGJhbmQgPT0gTkw4MDIxMV9CQU5EXzZHSFopXFxuLVxcdFxcdGNhcF9iYW5kLVxcdTAwM2VlaHRfY2FwX3BoeV9pbmZvWzBdIHw9IHN1cHBvcnRfMzIwbWh6O1xcbitcXHRcXHRjYXBfYmFuZC1cXHUwMDNlZWh0X2NhcF9waHlfaW5mb1swXSB8PSBjcHVfdG9fbGUzMihzdXBwb3J0XzMyMG1oeik7XFxuIFxcbiBcXHRjYXBfYmFuZC1cXHUwMDNlZWh0X21jc18yMF9vbmx5ID0gbGUzMl90b19jcHUoc3VwcF9tY3NbMF0pO1xcbiBcXHRjYXBfYmFuZC1cXHUwMDNlZWh0X21jc184MCA9IGxlMzJfdG9fY3B1KHN1cHBfbWNzWzFdKTtcXG5AQCAtNTI1NiwxMCArNTI1MiwxMiBAQCBzdGF0aWMgaW50IGF0aDEya193bWlfdGx2X21hY19waHlfY2Fwc19leHQoc3RydWN0IGF0aDEya19iYXNlICphYiwgdTE2IHRhZyxcXG4gXFxuIFxcdGlmIChhYi1cXHUwMDNlaHdfcGFyYW1zLVxcdTAwM2VzaW5nbGVfcGRldl9vbmx5KSB7XFxuIFxcdFxcdGlmIChjYXBzLVxcdTAwM2Vod19tb2RlX2lkID09IFdNSV9IT1NUX0hXX01PREVfU0lOR0xFKSB7XFxuLVxcdFxcdFxcdHN1cHBvcnRfMzIwbWh6ID0gbGUzMl90b19jcHUoY2Fwcy1cXHUwMDNlZWh0X2NhcF9waHlfaW5mb181Z2h6WzBdKSBcXHUwMDI2XFxuLVxcdFxcdFxcdFxcdFxcdCBJRUVFODAyMTFfRUhUX1BIWV9DQVAwXzMyME1IWl9JTl82R0haO1xcbitcXHRcXHRcXHRzdXBwb3J0XzMyMG1oeiA9XFxuK1xcdFxcdFxcdFxcdGxlMzJfdG9fY3B1KGNhcHMtXFx1MDAzZWVodF9jYXBfcGh5X2luZm9fNWdoelswXSkgXFx1MDAyNlxcbitcXHRcXHRcXHRcXHRJRUVFODAyMTFfRUhUX1BIWV9DQVAwXzMyME1IWl9JTl82R0haO1xcbiBcXHRcXHRcXHRjYXBfYmFuZCA9IFxcdTAwMjZhYi1cXHUwMDNlcGRldnNbMF0uY2FwLmJhbmRbTkw4MDIxMV9CQU5EXzZHSFpdO1xcbi1cXHRcXHRcXHRjYXBfYmFuZC1cXHUwMDNlZWh0X2NhcF9waHlfaW5mb1swXSB8PSBzdXBwb3J0XzMyMG1oejtcXG4rXFx0XFx0XFx0Y2FwX2JhbmQtXFx1MDAzZWVodF9jYXBfcGh5X2luZm9bMF0gfD1cXG4rXFx0XFx0XFx0XFx0Y3B1X3RvX2xlMzIoc3VwcG9ydF8zMjBtaHopO1xcbiBcXHRcXHR9XFxuIFxcbiBcXHRcXHRpZiAoYWItXFx1MDAzZXdtaV9hYi5wcmVmZXJyZWRfaHdfbW9kZSAhPSBsZTMyX3RvX2NwdShjYXBzLVxcdTAwM2Vod19tb2RlX2lkKSlcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmhcXG5pbmRleCBjNDUyZTNkNTdhMjlhZC4uYTY4NzAzYmFiMWQ0MDUgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuaFxcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmhcXG5AQCAtMzkzNiwxMSArMzkzNiwxMSBAQCBzdHJ1Y3QgYXRoMTJrX3dtaV9wZWVyX2Fzc29jX2FyZyB7XFxuIFxcdHU4IHBlZXJfbWFjW0VUSF9BTEVOXTtcXG4gXFxuIFxcdGJvb2wgaGVfZmxhZztcXG4tXFx0dTMyIHBlZXJfaGVfY2FwX21hY2luZm9bMl07XFxuK1xcdF9fbGUzMiBwZWVyX2hlX2NhcF9tYWNpbmZvWzJdO1xcbiBcXHR1MzIgcGVlcl9oZV9jYXBfbWFjaW5mb19pbnRlcm5hbDtcXG4gXFx0dTMyIHBlZXJfaGVfY2Fwc182Z2h6O1xcbiBcXHR1MzIgcGVlcl9oZV9vcHM7XFxuLVxcdHUzMiBwZWVyX2hlX2NhcF9waHlpbmZvW1dNSV9IT1NUX01BWF9IRUNBUF9QSFlfU0laRV07XFxuK1xcdF9fbGUzMiBwZWVyX2hlX2NhcF9waHlpbmZvW1dNSV9IT1NUX01BWF9IRUNBUF9QSFlfU0laRV07XFxuIFxcdHUzMiBwZWVyX2hlX21jc19jb3VudDtcXG4gXFx0dTMyIHBlZXJfaGVfcnhfbWNzX3NldFtXTUlfSE9TVF9NQVhfSEVfUkFURV9TRVRdO1xcbiBcXHR1MzIgcGVlcl9oZV90eF9tY3Nfc2V0W1dNSV9IT1NUX01BWF9IRV9SQVRFX1NFVF07XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI5VDA4OjE0OjA4LjI1MDA0NDAyNloiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Nzk0MzEwOTg5ODUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGVuZGlhbm5lc3MgaXNzdWVzIChzcGFyc2Ugd2FybmluZ3MpIGluIHRoZSBhdGgxMmsgZHJpdmVyJ3MgV01JIChXaXJlbGVzcyBNb2R1bGUgSW50ZXJmYWNlKSBjb21tdW5pY2F0aW9uIHdpdGggdGhlIGZpcm13YXJlLiBUaGlzIGNvZGUgaXMgdW5yZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUgYmVjYXVzZSBpdCByZXF1aXJlcyBhY3R1YWwgUXVhbGNvbW0gV2ktRmkgNyBoYXJkd2FyZSBhbmQgaXRzIHByb3ByaWV0YXJ5IGZpcm13YXJlIHRvIGluaXRpYWxpemUgdGhlIGRldmljZSBhbmQgcmVhY2ggdGhlIFdNSSBtZXNzYWdlIHBhcnNpbmcvc2VuZGluZyBsb2dpYy4gU3l6a2FsbGVyIGNhbm5vdCBlbXVsYXRlIHRoZSBjb21wbGV4IFFNSS9XTUkgZmlybXdhcmUgaW50ZXJmYWNlIHJlcXVpcmVkIHRvIHRyaWdnZXIgdGhlc2UgY29kZSBwYXRocy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgM2JjNmE0MGI3Yjc5ZmNjMTg5YWE2NDhiZDY4MjZhYzdlZDQyYjA5N1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBNb24gSnVuIDI5IDA4OjE0OjA2IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuaFxuaW5kZXggZmM1MTI3YjVjMWEzN2YuLjEzZmE2ZTU0ZDI3OWQyIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmhcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5oXG5AQCAtODA4LDEzICs4MDgsMTMgQEAgc3RydWN0IGF0aDEya19iYW5kX2NhcCB7XG4gXHR1MzIgcGh5X2lkO1xuIFx0dTMyIG1heF9id19zdXBwb3J0ZWQ7XG4gXHR1MzIgaHRfY2FwX2luZm87XG4tXHR1MzIgaGVfY2FwX2luZm9bMl07XG4rXHRfX2xlMzIgaGVfY2FwX2luZm9bMl07XG4gXHR1MzIgaGVfbWNzO1xuLVx0dTMyIGhlX2NhcF9waHlfaW5mb1tQU09DX0hPU1RfTUFYX1BIWV9TSVpFXTtcbitcdF9fbGUzMiBoZV9jYXBfcGh5X2luZm9bUFNPQ19IT1NUX01BWF9QSFlfU0laRV07XG4gXHRzdHJ1Y3QgYXRoMTJrX3dtaV9wcGVfdGhyZXNob2xkX2FyZyBoZV9wcGV0O1xuIFx0dTE2IGhlXzZnaHpfY2FwYTtcbi1cdHUzMiBlaHRfY2FwX21hY19pbmZvW1dNSV9NQVhfRUhUQ0FQX01BQ19TSVpFXTtcbi1cdHUzMiBlaHRfY2FwX3BoeV9pbmZvW1dNSV9NQVhfRUhUQ0FQX1BIWV9TSVpFXTtcbitcdF9fbGUzMiBlaHRfY2FwX21hY19pbmZvW1dNSV9NQVhfRUhUQ0FQX01BQ19TSVpFXTtcbitcdF9fbGUzMiBlaHRfY2FwX3BoeV9pbmZvW1dNSV9NQVhfRUhUQ0FQX1BIWV9TSVpFXTtcbiBcdHUzMiBlaHRfbWNzXzIwX29ubHk7XG4gXHR1MzIgZWh0X21jc184MDtcbiBcdHUzMiBlaHRfbWNzXzE2MDtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jXG5pbmRleCBkMTdkNGE4ZjFjYjdkMy4uNmIwZDA3NDQ4ZTVkNzIgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuY1xuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmNcbkBAIC00MTAsOCArNDEwLDggQEAgc3RhdGljIGJvb2wgYXRoMTJrX2hlX3N1cHBvcnRzX2V4dHJhX21jcyhzdHJ1Y3QgYXRoMTJrICphciwgaW50IGZyZXEpXG4gXHRlbHNlXG4gXHRcdGNhcF9iYW5kID0gXHUwMDI2Y2FwLVx1MDAzZWJhbmRbTkw4MDIxMV9CQU5EXzZHSFpdO1xuIFxuLVx0ZXh0cmFfbWNzX3N1cHBvcnRlZCA9IHUzMl9nZXRfYml0cyhjYXBfYmFuZC1cdTAwM2VoZV9jYXBfaW5mb1sxXSxcbi1cdFx0XHRcdFx0ICAgSEVfRVhUUkFfTUNTX1NVUFBPUlQpO1xuK1x0ZXh0cmFfbWNzX3N1cHBvcnRlZCA9IGxlMzJfZ2V0X2JpdHMoY2FwX2JhbmQtXHUwMDNlaGVfY2FwX2luZm9bMV0sXG4rXHRcdFx0XHRcdCAgICBIRV9FWFRSQV9NQ1NfU1VQUE9SVCk7XG4gXHRyZXR1cm4gZXh0cmFfbWNzX3N1cHBvcnRlZDtcbiB9XG4gXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmNcbmluZGV4IDg0YTMxYjk1M2RiODFhLi4zOWY4Y2E3MzY4ZTMxNyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmNcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmNcbkBAIC01NDUsMTIgKzU0NSwxMSBAQCBhdGgxMmtfcHVsbF9tYWNfcGh5X2NhcF9zdmNfcmVhZHlfZXh0KHN0cnVjdCBhdGgxMmtfd21pX3BkZXYgKndtaV9oYW5kbGUsXG4gXHRcdGNhcF9iYW5kLVx1MDAzZXBoeV9pZCA9IGxlMzJfdG9fY3B1KG1hY19jYXBzLVx1MDAzZXBoeV9pZCk7XG4gXHRcdGNhcF9iYW5kLVx1MDAzZW1heF9id19zdXBwb3J0ZWQgPSBsZTMyX3RvX2NwdShtYWNfY2Fwcy1cdTAwM2VtYXhfYndfc3VwcG9ydGVkXzJnKTtcbiBcdFx0Y2FwX2JhbmQtXHUwMDNlaHRfY2FwX2luZm8gPSBsZTMyX3RvX2NwdShtYWNfY2Fwcy1cdTAwM2VodF9jYXBfaW5mb18yZyk7XG4tXHRcdGNhcF9iYW5kLVx1MDAzZWhlX2NhcF9pbmZvWzBdID0gbGUzMl90b19jcHUobWFjX2NhcHMtXHUwMDNlaGVfY2FwX2luZm9fMmcpO1xuLVx0XHRjYXBfYmFuZC1cdTAwM2VoZV9jYXBfaW5mb1sxXSA9IGxlMzJfdG9fY3B1KG1hY19jYXBzLVx1MDAzZWhlX2NhcF9pbmZvXzJnX2V4dCk7XG4rXHRcdGNhcF9iYW5kLVx1MDAzZWhlX2NhcF9pbmZvWzBdID0gbWFjX2NhcHMtXHUwMDNlaGVfY2FwX2luZm9fMmc7XG4rXHRcdGNhcF9iYW5kLVx1MDAzZWhlX2NhcF9pbmZvWzFdID0gbWFjX2NhcHMtXHUwMDNlaGVfY2FwX2luZm9fMmdfZXh0O1xuIFx0XHRjYXBfYmFuZC1cdTAwM2VoZV9tY3MgPSBsZTMyX3RvX2NwdShtYWNfY2Fwcy1cdTAwM2VoZV9zdXBwX21jc18yZyk7XG4tXHRcdGZvciAoaSA9IDA7IGkgXHUwMDNjIFdNSV9NQVhfSEVDQVBfUEhZX1NJWkU7IGkrKylcbi1cdFx0XHRjYXBfYmFuZC1cdTAwM2VoZV9jYXBfcGh5X2luZm9baV0gPVxuLVx0XHRcdFx0bGUzMl90b19jcHUobWFjX2NhcHMtXHUwMDNlaGVfY2FwX3BoeV9pbmZvXzJnW2ldKTtcbitcdFx0bWVtY3B5KFx1MDAyNmNhcF9iYW5kLVx1MDAzZWhlX2NhcF9waHlfaW5mbywgXHUwMDI2bWFjX2NhcHMtXHUwMDNlaGVfY2FwX3BoeV9pbmZvXzJnLFxuK1x0XHQgICAgICAgc2l6ZW9mKHUzMikgKiBXTUlfTUFYX0hFQ0FQX1BIWV9TSVpFKTtcbiBcbiBcdFx0Y2FwX2JhbmQtXHUwMDNlaGVfcHBldC5udW1zc19tMSA9IGxlMzJfdG9fY3B1KG1hY19jYXBzLVx1MDAzZWhlX3BwZXQyZy5udW1zc19tMSk7XG4gXHRcdGNhcF9iYW5kLVx1MDAzZWhlX3BwZXQucnVfYml0X21hc2sgPSBsZTMyX3RvX2NwdShtYWNfY2Fwcy1cdTAwM2VoZV9wcGV0MmcucnVfaW5mbyk7XG5AQCAtNTY2LDEyICs1NjUsMTEgQEAgYXRoMTJrX3B1bGxfbWFjX3BoeV9jYXBfc3ZjX3JlYWR5X2V4dChzdHJ1Y3QgYXRoMTJrX3dtaV9wZGV2ICp3bWlfaGFuZGxlLFxuIFx0XHRjYXBfYmFuZC1cdTAwM2VtYXhfYndfc3VwcG9ydGVkID1cbiBcdFx0XHRsZTMyX3RvX2NwdShtYWNfY2Fwcy1cdTAwM2VtYXhfYndfc3VwcG9ydGVkXzVnKTtcbiBcdFx0Y2FwX2JhbmQtXHUwMDNlaHRfY2FwX2luZm8gPSBsZTMyX3RvX2NwdShtYWNfY2Fwcy1cdTAwM2VodF9jYXBfaW5mb181Zyk7XG4tXHRcdGNhcF9iYW5kLVx1MDAzZWhlX2NhcF9pbmZvWzBdID0gbGUzMl90b19jcHUobWFjX2NhcHMtXHUwMDNlaGVfY2FwX2luZm9fNWcpO1xuLVx0XHRjYXBfYmFuZC1cdTAwM2VoZV9jYXBfaW5mb1sxXSA9IGxlMzJfdG9fY3B1KG1hY19jYXBzLVx1MDAzZWhlX2NhcF9pbmZvXzVnX2V4dCk7XG4rXHRcdGNhcF9iYW5kLVx1MDAzZWhlX2NhcF9pbmZvWzBdID0gbWFjX2NhcHMtXHUwMDNlaGVfY2FwX2luZm9fNWc7XG4rXHRcdGNhcF9iYW5kLVx1MDAzZWhlX2NhcF9pbmZvWzFdID0gbWFjX2NhcHMtXHUwMDNlaGVfY2FwX2luZm9fNWdfZXh0O1xuIFx0XHRjYXBfYmFuZC1cdTAwM2VoZV9tY3MgPSBsZTMyX3RvX2NwdShtYWNfY2Fwcy1cdTAwM2VoZV9zdXBwX21jc181Zyk7XG4tXHRcdGZvciAoaSA9IDA7IGkgXHUwMDNjIFdNSV9NQVhfSEVDQVBfUEhZX1NJWkU7IGkrKylcbi1cdFx0XHRjYXBfYmFuZC1cdTAwM2VoZV9jYXBfcGh5X2luZm9baV0gPVxuLVx0XHRcdFx0bGUzMl90b19jcHUobWFjX2NhcHMtXHUwMDNlaGVfY2FwX3BoeV9pbmZvXzVnW2ldKTtcbitcdFx0bWVtY3B5KFx1MDAyNmNhcF9iYW5kLVx1MDAzZWhlX2NhcF9waHlfaW5mbywgXHUwMDI2bWFjX2NhcHMtXHUwMDNlaGVfY2FwX3BoeV9pbmZvXzVnLFxuK1x0XHQgICAgICAgc2l6ZW9mKHUzMikgKiBXTUlfTUFYX0hFQ0FQX1BIWV9TSVpFKTtcbiBcbiBcdFx0Y2FwX2JhbmQtXHUwMDNlaGVfcHBldC5udW1zc19tMSA9IGxlMzJfdG9fY3B1KG1hY19jYXBzLVx1MDAzZWhlX3BwZXQ1Zy5udW1zc19tMSk7XG4gXHRcdGNhcF9iYW5kLVx1MDAzZWhlX3BwZXQucnVfYml0X21hc2sgPSBsZTMyX3RvX2NwdShtYWNfY2Fwcy1cdTAwM2VoZV9wcGV0NWcucnVfaW5mbyk7XG5AQCAtNTg0LDEyICs1ODIsMTEgQEAgYXRoMTJrX3B1bGxfbWFjX3BoeV9jYXBfc3ZjX3JlYWR5X2V4dChzdHJ1Y3QgYXRoMTJrX3dtaV9wZGV2ICp3bWlfaGFuZGxlLFxuIFx0XHRjYXBfYmFuZC1cdTAwM2VtYXhfYndfc3VwcG9ydGVkID1cbiBcdFx0XHRsZTMyX3RvX2NwdShtYWNfY2Fwcy1cdTAwM2VtYXhfYndfc3VwcG9ydGVkXzVnKTtcbiBcdFx0Y2FwX2JhbmQtXHUwMDNlaHRfY2FwX2luZm8gPSBsZTMyX3RvX2NwdShtYWNfY2Fwcy1cdTAwM2VodF9jYXBfaW5mb181Zyk7XG4tXHRcdGNhcF9iYW5kLVx1MDAzZWhlX2NhcF9pbmZvWzBdID0gbGUzMl90b19jcHUobWFjX2NhcHMtXHUwMDNlaGVfY2FwX2luZm9fNWcpO1xuLVx0XHRjYXBfYmFuZC1cdTAwM2VoZV9jYXBfaW5mb1sxXSA9IGxlMzJfdG9fY3B1KG1hY19jYXBzLVx1MDAzZWhlX2NhcF9pbmZvXzVnX2V4dCk7XG4rXHRcdGNhcF9iYW5kLVx1MDAzZWhlX2NhcF9pbmZvWzBdID0gbWFjX2NhcHMtXHUwMDNlaGVfY2FwX2luZm9fNWc7XG4rXHRcdGNhcF9iYW5kLVx1MDAzZWhlX2NhcF9pbmZvWzFdID0gbWFjX2NhcHMtXHUwMDNlaGVfY2FwX2luZm9fNWdfZXh0O1xuIFx0XHRjYXBfYmFuZC1cdTAwM2VoZV9tY3MgPSBsZTMyX3RvX2NwdShtYWNfY2Fwcy1cdTAwM2VoZV9zdXBwX21jc181Zyk7XG4tXHRcdGZvciAoaSA9IDA7IGkgXHUwMDNjIFdNSV9NQVhfSEVDQVBfUEhZX1NJWkU7IGkrKylcbi1cdFx0XHRjYXBfYmFuZC1cdTAwM2VoZV9jYXBfcGh5X2luZm9baV0gPVxuLVx0XHRcdFx0bGUzMl90b19jcHUobWFjX2NhcHMtXHUwMDNlaGVfY2FwX3BoeV9pbmZvXzVnW2ldKTtcbitcdFx0bWVtY3B5KFx1MDAyNmNhcF9iYW5kLVx1MDAzZWhlX2NhcF9waHlfaW5mbywgXHUwMDI2bWFjX2NhcHMtXHUwMDNlaGVfY2FwX3BoeV9pbmZvXzVnLFxuK1x0XHQgICAgICAgc2l6ZW9mKHUzMikgKiBXTUlfTUFYX0hFQ0FQX1BIWV9TSVpFKTtcbiBcbiBcdFx0Y2FwX2JhbmQtXHUwMDNlaGVfcHBldC5udW1zc19tMSA9IGxlMzJfdG9fY3B1KG1hY19jYXBzLVx1MDAzZWhlX3BwZXQ1Zy5udW1zc19tMSk7XG4gXHRcdGNhcF9iYW5kLVx1MDAzZWhlX3BwZXQucnVfYml0X21hc2sgPSBsZTMyX3RvX2NwdShtYWNfY2Fwcy1cdTAwM2VoZV9wcGV0NWcucnVfaW5mbyk7XG5AQCAtMjI4NCwxNCArMjI4MSwxMyBAQCBpbnQgYXRoMTJrX3dtaV9zZW5kX3BlZXJfYXNzb2NfY21kKHN0cnVjdCBhdGgxMmsgKmFyLFxuIFx0Y21kLVx1MDAzZXBlZXJfcGh5bW9kZSA9IGNwdV90b19sZTMyKGFyZy1cdTAwM2VwZWVyX3BoeW1vZGUpO1xuIFxuIFx0LyogVXBkYXRlIDExYXggY2FwYWJpbGl0aWVzICovXG4tXHRjbWQtXHUwMDNlcGVlcl9oZV9jYXBfaW5mbyA9IGNwdV90b19sZTMyKGFyZy1cdTAwM2VwZWVyX2hlX2NhcF9tYWNpbmZvWzBdKTtcbi1cdGNtZC1cdTAwM2VwZWVyX2hlX2NhcF9pbmZvX2V4dCA9IGNwdV90b19sZTMyKGFyZy1cdTAwM2VwZWVyX2hlX2NhcF9tYWNpbmZvWzFdKTtcbitcdGNtZC1cdTAwM2VwZWVyX2hlX2NhcF9pbmZvID0gYXJnLVx1MDAzZXBlZXJfaGVfY2FwX21hY2luZm9bMF07XG4rXHRjbWQtXHUwMDNlcGVlcl9oZV9jYXBfaW5mb19leHQgPSBhcmctXHUwMDNlcGVlcl9oZV9jYXBfbWFjaW5mb1sxXTtcbiBcdGNtZC1cdTAwM2VwZWVyX2hlX2NhcF9pbmZvX2ludGVybmFsID0gY3B1X3RvX2xlMzIoYXJnLVx1MDAzZXBlZXJfaGVfY2FwX21hY2luZm9faW50ZXJuYWwpO1xuIFx0Y21kLVx1MDAzZXBlZXJfaGVfY2Fwc182Z2h6ID0gY3B1X3RvX2xlMzIoYXJnLVx1MDAzZXBlZXJfaGVfY2Fwc182Z2h6KTtcbiBcdGNtZC1cdTAwM2VwZWVyX2hlX29wcyA9IGNwdV90b19sZTMyKGFyZy1cdTAwM2VwZWVyX2hlX29wcyk7XG4tXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBXTUlfTUFYX0hFQ0FQX1BIWV9TSVpFOyBpKyspXG4tXHRcdGNtZC1cdTAwM2VwZWVyX2hlX2NhcF9waHlbaV0gPVxuLVx0XHRcdGNwdV90b19sZTMyKGFyZy1cdTAwM2VwZWVyX2hlX2NhcF9waHlpbmZvW2ldKTtcbitcdG1lbWNweShjbWQtXHUwMDNlcGVlcl9oZV9jYXBfcGh5LCBhcmctXHUwMDNlcGVlcl9oZV9jYXBfcGh5aW5mbyxcbitcdCAgICAgICBzaXplb2YodTMyKSAqIFdNSV9NQVhfSEVDQVBfUEhZX1NJWkUpO1xuIFx0Y21kLVx1MDAzZXBlZXJfcHBldC5udW1zc19tMSA9IGNwdV90b19sZTMyKGFyZy1cdTAwM2VwZWVyX3BwZXQubnVtc3NfbTEpO1xuIFx0Y21kLVx1MDAzZXBlZXJfcHBldC5ydV9pbmZvID0gY3B1X3RvX2xlMzIoYXJnLVx1MDAzZXBlZXJfcHBldC5ydV9iaXRfbWFzayk7XG4gXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBXTUlfTUFYX05VTV9TUzsgaSsrKVxuQEAgLTUxNTgsMTcgKzUxNTQsMTcgQEAgc3RhdGljIHZvaWQgYXRoMTJrX3dtaV9laHRfY2Fwc19wYXJzZShzdHJ1Y3QgYXRoMTJrX3BkZXYgKnBkZXYsIHUzMiBiYW5kLFxuIFx0dTggaTtcbiBcbiBcdGlmIChiYW5kID09IE5MODAyMTFfQkFORF82R0haKVxuLVx0XHRzdXBwb3J0XzMyMG1oeiA9IGNhcF9iYW5kLVx1MDAzZWVodF9jYXBfcGh5X2luZm9bMF0gXHUwMDI2XG4tXHRcdFx0XHRcdElFRUU4MDIxMV9FSFRfUEhZX0NBUDBfMzIwTUhaX0lOXzZHSFo7XG4rXHRcdHN1cHBvcnRfMzIwbWh6ID0gbGUzMl90b19jcHUoY2FwX2JhbmQtXHUwMDNlZWh0X2NhcF9waHlfaW5mb1swXSkgXHUwMDI2XG4rXHRcdFx0XHQgSUVFRTgwMjExX0VIVF9QSFlfQ0FQMF8zMjBNSFpfSU5fNkdIWjtcbiBcbi1cdGZvciAoaSA9IDA7IGkgXHUwMDNjIFdNSV9NQVhfRUhUQ0FQX01BQ19TSVpFOyBpKyspXG4tXHRcdGNhcF9iYW5kLVx1MDAzZWVodF9jYXBfbWFjX2luZm9baV0gPSBsZTMyX3RvX2NwdShjYXBfbWFjX2luZm9baV0pO1xuK1x0bWVtY3B5KGNhcF9iYW5kLVx1MDAzZWVodF9jYXBfbWFjX2luZm8sIGNhcF9tYWNfaW5mbyxcbitcdCAgICAgICBzaXplb2YodTMyKSAqIFdNSV9NQVhfRUhUQ0FQX01BQ19TSVpFKTtcbiBcbi1cdGZvciAoaSA9IDA7IGkgXHUwMDNjIFdNSV9NQVhfRUhUQ0FQX1BIWV9TSVpFOyBpKyspXG4tXHRcdGNhcF9iYW5kLVx1MDAzZWVodF9jYXBfcGh5X2luZm9baV0gPSBsZTMyX3RvX2NwdShjYXBfcGh5X2luZm9baV0pO1xuK1x0bWVtY3B5KGNhcF9iYW5kLVx1MDAzZWVodF9jYXBfcGh5X2luZm8sIGNhcF9waHlfaW5mbyxcbitcdCAgICAgICBzaXplb2YodTMyKSAqIFdNSV9NQVhfRUhUQ0FQX1BIWV9TSVpFKTtcbiBcbiBcdGlmIChiYW5kID09IE5MODAyMTFfQkFORF82R0haKVxuLVx0XHRjYXBfYmFuZC1cdTAwM2VlaHRfY2FwX3BoeV9pbmZvWzBdIHw9IHN1cHBvcnRfMzIwbWh6O1xuK1x0XHRjYXBfYmFuZC1cdTAwM2VlaHRfY2FwX3BoeV9pbmZvWzBdIHw9IGNwdV90b19sZTMyKHN1cHBvcnRfMzIwbWh6KTtcbiBcbiBcdGNhcF9iYW5kLVx1MDAzZWVodF9tY3NfMjBfb25seSA9IGxlMzJfdG9fY3B1KHN1cHBfbWNzWzBdKTtcbiBcdGNhcF9iYW5kLVx1MDAzZWVodF9tY3NfODAgPSBsZTMyX3RvX2NwdShzdXBwX21jc1sxXSk7XG5AQCAtNTI1NiwxMCArNTI1MiwxMiBAQCBzdGF0aWMgaW50IGF0aDEya193bWlfdGx2X21hY19waHlfY2Fwc19leHQoc3RydWN0IGF0aDEya19iYXNlICphYiwgdTE2IHRhZyxcbiBcbiBcdGlmIChhYi1cdTAwM2Vod19wYXJhbXMtXHUwMDNlc2luZ2xlX3BkZXZfb25seSkge1xuIFx0XHRpZiAoY2Fwcy1cdTAwM2Vod19tb2RlX2lkID09IFdNSV9IT1NUX0hXX01PREVfU0lOR0xFKSB7XG4tXHRcdFx0c3VwcG9ydF8zMjBtaHogPSBsZTMyX3RvX2NwdShjYXBzLVx1MDAzZWVodF9jYXBfcGh5X2luZm9fNWdoelswXSkgXHUwMDI2XG4tXHRcdFx0XHRcdCBJRUVFODAyMTFfRUhUX1BIWV9DQVAwXzMyME1IWl9JTl82R0haO1xuK1x0XHRcdHN1cHBvcnRfMzIwbWh6ID1cbitcdFx0XHRcdGxlMzJfdG9fY3B1KGNhcHMtXHUwMDNlZWh0X2NhcF9waHlfaW5mb181Z2h6WzBdKSBcdTAwMjZcbitcdFx0XHRcdElFRUU4MDIxMV9FSFRfUEhZX0NBUDBfMzIwTUhaX0lOXzZHSFo7XG4gXHRcdFx0Y2FwX2JhbmQgPSBcdTAwMjZhYi1cdTAwM2VwZGV2c1swXS5jYXAuYmFuZFtOTDgwMjExX0JBTkRfNkdIWl07XG4tXHRcdFx0Y2FwX2JhbmQtXHUwMDNlZWh0X2NhcF9waHlfaW5mb1swXSB8PSBzdXBwb3J0XzMyMG1oejtcbitcdFx0XHRjYXBfYmFuZC1cdTAwM2VlaHRfY2FwX3BoeV9pbmZvWzBdIHw9XG4rXHRcdFx0XHRjcHVfdG9fbGUzMihzdXBwb3J0XzMyMG1oeik7XG4gXHRcdH1cbiBcbiBcdFx0aWYgKGFiLVx1MDAzZXdtaV9hYi5wcmVmZXJyZWRfaHdfbW9kZSAhPSBsZTMyX3RvX2NwdShjYXBzLVx1MDAzZWh3X21vZGVfaWQpKVxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5oXG5pbmRleCBjNDUyZTNkNTdhMjlhZC4uYTY4NzAzYmFiMWQ0MDUgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5oXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5oXG5AQCAtMzkzNiwxMSArMzkzNiwxMSBAQCBzdHJ1Y3QgYXRoMTJrX3dtaV9wZWVyX2Fzc29jX2FyZyB7XG4gXHR1OCBwZWVyX21hY1tFVEhfQUxFTl07XG4gXG4gXHRib29sIGhlX2ZsYWc7XG4tXHR1MzIgcGVlcl9oZV9jYXBfbWFjaW5mb1syXTtcbitcdF9fbGUzMiBwZWVyX2hlX2NhcF9tYWNpbmZvWzJdO1xuIFx0dTMyIHBlZXJfaGVfY2FwX21hY2luZm9faW50ZXJuYWw7XG4gXHR1MzIgcGVlcl9oZV9jYXBzXzZnaHo7XG4gXHR1MzIgcGVlcl9oZV9vcHM7XG4tXHR1MzIgcGVlcl9oZV9jYXBfcGh5aW5mb1tXTUlfSE9TVF9NQVhfSEVDQVBfUEhZX1NJWkVdO1xuK1x0X19sZTMyIHBlZXJfaGVfY2FwX3BoeWluZm9bV01JX0hPU1RfTUFYX0hFQ0FQX1BIWV9TSVpFXTtcbiBcdHUzMiBwZWVyX2hlX21jc19jb3VudDtcbiBcdHUzMiBwZWVyX2hlX3J4X21jc19zZXRbV01JX0hPU1RfTUFYX0hFX1JBVEVfU0VUXTtcbiBcdHUzMiBwZWVyX2hlX3R4X21jc19zZXRbV01JX0hPU1RfTUFYX0hFX1JBVEVfU0VUXTtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI5VDA4OjE0OjA4LjI1MDA0NzMxNloiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjYwNDU1OTMwNjUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRW5kaWFubmVzcyBGaXggZm9yIGF0aDEyayBEcml2ZXIqKlxuXG5Pa2F5LCBzbyB0aGVyZSdzIGEgcGF0Y2ggc3VibWl0dGVkIHRoYXQncyBjYXVnaHQgbXkgZXllLiBJdCBzZWVtcyB0byBiZSBhZGRyZXNzaW5nIHBvdGVudGlhbCBlbmRpYW5uZXNzIGlzc3VlcyB3aXRoaW4gdGhlIGBhdGgxMmtgIGRyaXZlci4gU3BlY2lmaWNhbGx5LCBpdCdzIGNoYW5naW5nIHRoZSBkYXRhIHR5cGVzIG9mIGNlcnRhaW4gZmllbGRzIGluIGBzdHJ1Y3QgYXRoMTJrX2JhbmRfY2FwYCBhbmQgYHN0cnVjdCBhdGgxMmtfd21pX3BlZXJfYXNzb2NfYXJnYCBmcm9tIGB1MzJgIHRvIGBfX2xlMzJgLiBUaGUgcGF0Y2ggYWxzbyBzd2l0Y2hlcyB0aGUgYWNjZXNzIGFuZCBjb3B5IG1ldGhvZHMgZnJvbSB0aGUgbW9yZSBjdW1iZXJzb21lIGxvb3AtYmFzZWQgY29udmVyc2lvbnMgdG8gYG1lbWNweWAuIFRoYXQgc3Ryb25nbHkgc3VnZ2VzdHMgdGhleSdyZSB0cnlpbmcgdG8gcHJldmVudCB0aG9zZSBkcmVhZGVkIHNwYXJzZSB3YXJuaW5ncyByZWxhdGVkIHRvIGJ5dGUgb3JkZXIuXG5cbk15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBcIkNhbiB3ZSBhY3R1YWxseSB0ZXN0IHRoaXMsIGFuZCBpZiBzbywgaG93P1wiIGBhdGgxMmtgLCBpZiBJIHJlY2FsbCBjb3JyZWN0bHksIGlzIHRoZSBkcml2ZXIgZm9yIFF1YWxjb21tJ3MgV2ktRmkgNyBkZXZpY2VzLiBUaGF0IG5hcnJvd3MgdGhpbmdzIGRvd24gYSBiaXQsIHdoaWNoIGlzIGdvb2QuIEZ1enppbmcgdGhpcyBpcyBnb2luZyB0byBiZSB0aGUgY2hhbGxlbmdlLiBIYXJkd2FyZSBkcml2ZXJzIGxpa2UgdGhpcyBhcmUgbm90b3Jpb3VzbHkgZGlmZmljdWx0IHRvIGZ1enogZGlyZWN0bHksIGVzcGVjaWFsbHkgaWYgdGhlcmUgaXNuJ3QgYW4gZXF1aXZhbGVudCBoYXJkd2FyZSBlbXVsYXRpb24gbGF5ZXIuIFNvbWV0aGluZyBsaWtlIGBtYWM4MDIxMV9od3NpbWAgd291bGQgYmUgaWRlYWwsIGJ1dCB0aGF0J3MgZm9yIHRoZSBnZW5lcmljIGBtYWM4MDIxMWAgZnJhbWV3b3JrLCBub3QgbmVjZXNzYXJpbHkgc3BlY2lmaWMgdG8gYGF0aDEya2AuIFdhaXQuLi4gaXNuJ3QgYGF0aDEya2AgYSBQQ0kgb3IgQUhCIGRyaXZlcj8gVGhhdCBjaGFuZ2VzIHRoaW5ncy4gTGV0IG1lIGp1c3QgdGFrZSBhIGxvb2sgYXQgdGhlIGBLY29uZmlnYCBmaWxlIHVuZGVyIGBkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrYCB0byBjb25maXJtLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1ODc0LCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Mjc0LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjlUMDg6MTQ6MTQuMjk1NjQzODAxWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYzNzE0MjU0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBBVEgxMktcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZS1DbGVhclxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZzoyOmNvbmZpZyBBVEgxMktcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWctMy1cXHR0cmlzdGF0ZSBcXFwiUXVhbGNvbW0gV2ktRmkgNyBzdXBwb3J0IChhdGgxMmspXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnLTE2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZzoxNzpjb25maWcgQVRIMTJLX0FIQlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZy0xOC1cXHRib29sIFxcXCJRdWFsY29tbSBhdGgxMmsgQUhCIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWctMjQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnOjI1OmNvbmZpZyBBVEgxMktfREVCVUdcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWctMjYtXFx0Ym9vbCBcXFwiYXRoMTJrIGRlYnVnZ2luZ1xcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZy0zNC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWc6MzU6Y29uZmlnIEFUSDEyS19ERUJVR0ZTXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnLTM2LVxcdGJvb2wgXFxcIlF1YWxjb21tIGF0aDEyayBkZWJ1Z2ZzIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWctNDMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnOjQ0OmNvbmZpZyBBVEgxMktfVFJBQ0lOR1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZy00NS1cXHRib29sIFxcXCJhdGgxMmsgdHJhY2luZyBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnLTUyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZzo1Mzpjb25maWcgQVRIMTJLX0NPUkVEVU1QXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnLTU0LVxcdGJvb2wgXFxcImF0aDEyayBjb3JlZHVtcFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjlUMDg6MTQ6MTQuMzU5MzY4MDQ1WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzUxOTE0MTM4MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqQW5hbHl6aW5nIHRoZSBEcml2ZXIncyBQb3RlbnRpYWwgZm9yIEZ1enppbmcqKlxuXG5BbHJpZ2h0LCBzbyBJJ20gbG9va2luZyBhdCBhIFBDSS9BSEIgZHJpdmVyIGhlcmUuIFN0YW5kYXJkIHN0dWZmLCBub3RoaW5nIGltbWVkaWF0ZWx5IGp1bXBzIG91dC4gQnV0IHRoZW4gbXkgYnJhaW4gc3RhcnRzIHdoaXJyaW5nIOKAkyB3YWl0IGEgbWludXRlLCBpc24ndCBzeXprYWxsZXIgY2FwYWJsZSBvZiBmdXp6aW5nIFBDSSBkZXZpY2VzPyBUaGUgdlBDSSBmdW5jdGlvbmFsaXR5LCBpZiBJIHJlY2FsbCBjb3JyZWN0bHksIG9mZmVycyBhIHZpcnR1YWwgUENJIGVudmlyb25tZW50IHNwZWNpZmljYWxseSBmb3IgdGhpcyBraW5kIG9mIHRlc3RpbmcuIE9rYXksIHRoYXQncyBpbnRlcmVzdGluZy4uLlxuXG5TbywgdGhlIGltbWVkaWF0ZSBuZXh0IHF1ZXN0aW9uIGJlY29tZXM6IGlzIFBDSSBzdXBwb3J0IGFjdHVhbGx5IHByZXNlbnQgYW5kIGVuYWJsZWQgd2l0aGluIHRoaXMgZHJpdmVyPyBJIG5lZWQgdG8gcXVpY2tseSBkZXRlcm1pbmUgaWYgSSBjYW4gbGV2ZXJhZ2UgdGhhdCB2UENJIGZ1enppbmcgY2FwYWJpbGl0eS4gSWYgUENJIGlzIHN1cHBvcnRlZCwgd2UncmUgaW4gYnVzaW5lc3MuIElmIG5vdCwgSSdsbCBuZWVkIHRvIGV4cGxvcmUgb3RoZXIgYXZlbnVlcyBvciBjb25zaWRlciB3aGV0aGVyIHRoZSBBSEIgaW50ZXJmYWNlIG9mZmVycyBhbnkgcG90ZW50aWFsIGVudHJ5IHBvaW50cyBmb3IgZXhwbG9pdGF0aW9uLiBUaW1lIHRvIGRpZyBpbnRvIHRoZSBzb3VyY2UgYW5kIGNvbmZpcm0gdGhlIFBDSSBsYW5kc2NhcGUgd2l0aGluIHRoaXMgc3BlY2lmaWMgZHJpdmVyLiBMZXQncyBzZWUgd2hhdCB3ZSdyZSB3b3JraW5nIHdpdGguXG5cblxuIiwiSW5wdXRUb2tlbnMiOjcwMjYsIk91dHB1dFRva2VucyI6NDIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yOVQwODoxNDoxNy44Nzg1MTIwNDVaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjM2MTI4OTI3LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgQVRIMTJLX1BDSVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI5VDA4OjE0OjE4LjExNDY1NjA3MloiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMxNTA0NDMyMTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqS2NvbmZpZyBDaGVjayoqXG5cbk9rYXksIGJlZm9yZSBkaXZpbmcgYW55IGRlZXBlciwgSSBuZWVkIHRvIHRha2UgYSBzdGVwIGJhY2sgYW5kIG1ha2Ugc3VyZSBJJ20gbm90IG1pc3Npbmcgc29tZXRoaW5nIGZ1bmRhbWVudGFsLiBNeSBndXQgaXMgdGVsbGluZyBtZSB0aGVyZSBtaWdodCBiZSBhIGNvbmZpZ3VyYXRpb24gb3B0aW9uIGF0IHBsYXkgaGVyZSB0aGF0J3MgdGhyb3dpbmcgbWUgb2ZmLCBvciBtYXliZSBhbiBvdmVybG9va2VkIGRlcGVuZGVuY3kuIFNvLCBsZXQncyBoaXQgdGhlIEtjb25maWcgZmlsZS4gSSdtIGdvaW5nIHRvIHF1aWNrbHkgc2NhbiBpdCBmb3IgYW55dGhpbmcgcmVsYXRlZCB0byB0aGUgc3BlY2lmaWMgbW9kdWxlIEknbSB3b3JraW5nIHdpdGgsIHRoZSBmZWF0dXJlIHNldCBJJ20gaW1wbGVtZW50aW5nLCBhbmQgdGhlIGhhcmR3YXJlIHBsYXRmb3JtIHRoaXMgaXMgcnVubmluZyBvbi4gSSdsbCBuZWVkIHRvIHBheSBjbG9zZSBhdHRlbnRpb24gdG8gYW55IGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIG9yIGRlZmF1bHQgc2V0dGluZ3MgdGhhdCBtaWdodCBiZSBza2V3aW5nIHRoZSBiZWhhdmlvciBJJ20gc2VlaW5nLiBJdOKAmXMgYWxzbyBjcnVjaWFsIHRvIGRvdWJsZS1jaGVjayBhbnkgcmVsYXRlZCB0cmlzdGF0ZXMgYW5kIHRoZWlyIGNvcnJlc3BvbmRpbmcgZGVwZW5kZW5jaWVzLiBBIHNpbXBsZSBtaXNjb25maWd1cmF0aW9uIGNhbiB3YXN0ZSBob3VycyBvZiBkZWJ1Z2dpbmcuIFRoaXMgaXMgYWxtb3N0IGluc3RpbmN0IGF0IHRoaXMgcG9pbnQsIGJ1dCBpdCdzIGltcG9ydGFudCB0byBiZSBtZXRob2RpY2FsLiBMZXQncyBzZWUgd2hhdCBLY29uZmlnIGhhcyB0byBzYXkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjczMzAsIk91dHB1dFRva2VucyI6NDIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yOVQwODoxNDoyMS4yNjUxMDIzNDdaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5NDIyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMTAwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlLUNsZWFyXFxuICAgMjpcXHRjb25maWcgQVRIMTJLXFxuICAgMzpcXHRcXHR0cmlzdGF0ZSBcXFwiUXVhbGNvbW0gV2ktRmkgNyBzdXBwb3J0IChhdGgxMmspXFxcIlxcbiAgIDQ6XFx0XFx0ZGVwZW5kcyBvbiBNQUM4MDIxMSBcXHUwMDI2XFx1MDAyNiBIQVNfRE1BIFxcdTAwMjZcXHUwMDI2IFBDSVxcbiAgIDU6XFx0XFx0c2VsZWN0IFFDT01fUU1JX0hFTFBFUlNcXG4gICA2OlxcdFxcdHNlbGVjdCBNSElfQlVTXFxuICAgNzpcXHRcXHRzZWxlY3QgUVJUUlxcbiAgIDg6XFx0XFx0c2VsZWN0IFFSVFJfTUhJXFxuICAgOTpcXHRcXHRzZWxlY3QgUENJX1BXUkNUUkxfUFdSU0VRIGlmIEhBVkVfUFdSQ1RSTFxcbiAgMTA6XFx0XFx0aGVscFxcbiAgMTE6XFx0XFx0ICBFbmFibGUgc3VwcG9ydCBmb3IgUXVhbGNvbW0gVGVjaG5vbG9naWVzIFdpLUZpIDcgKElFRUVcXG4gIDEyOlxcdFxcdCAgODAyLjExYmUpIGZhbWlseSBvZiBjaGlwc2V0cywgZm9yIGV4YW1wbGUgV0NONzg1MCBhbmRcXG4gIDEzOlxcdFxcdCAgUUNOOTI3NC5cXG4gIDE0OlxcdFxcbiAgMTU6XFx0XFx0ICBJZiB5b3UgY2hvb3NlIHRvIGJ1aWxkIGEgbW9kdWxlLCBpdCdsbCBiZSBjYWxsZWQgYXRoMTJrLlxcbiAgMTY6XFx0XFxuICAxNzpcXHRjb25maWcgQVRIMTJLX0FIQlxcbiAgMTg6XFx0XFx0Ym9vbCBcXFwiUXVhbGNvbW0gYXRoMTJrIEFIQiBzdXBwb3J0XFxcIlxcbiAgMTk6XFx0XFx0ZGVwZW5kcyBvbiBBVEgxMksgXFx1MDAyNlxcdTAwMjYgUkVNT1RFUFJPQ1xcbiAgMjA6XFx0XFx0c2VsZWN0IFFDT01fTURUX0xPQURFUlxcbiAgMjE6XFx0XFx0c2VsZWN0IFFDT01fU0NNXFxuICAyMjpcXHRcXHRoZWxwXFxuICAyMzpcXHRcXHQgIEVuYWJsZSBzdXBwb3J0IGZvciBBdGgxMmsgQUhCIGJ1cyBjaGlwc2V0cywgZXhhbXBsZSBJUFE1MzMyLlxcbiAgMjQ6XFx0XFxuICAyNTpcXHRjb25maWcgQVRIMTJLX0RFQlVHXFxuICAyNjpcXHRcXHRib29sIFxcXCJhdGgxMmsgZGVidWdnaW5nXFxcIlxcbiAgMjc6XFx0XFx0ZGVwZW5kcyBvbiBBVEgxMktcXG4gIDI4OlxcdFxcdGhlbHBcXG4gIDI5OlxcdFxcdCAgRW5hYmxlIGRlYnVnIHN1cHBvcnQsIGZvciBleGFtcGxlIGRlYnVnIG1lc3NhZ2VzIHdoaWNoIG11c3RcXG4gIDMwOlxcdFxcdCAgYmUgZW5hYmxlZCBzZXBhcmF0ZWx5IHVzaW5nIHRoZSBkZWJ1Z19tYXNrIG1vZHVsZSBwYXJhbWV0ZXIuXFxuICAzMTpcXHRcXG4gIDMyOlxcdFxcdCAgSWYgdW5zdXJlLCBzYXkgWSB0byBtYWtlIGl0IGVhc2llciB0byBkZWJ1ZyBwcm9ibGVtcy4gQnV0IGlmXFxuICAzMzpcXHRcXHQgIHlvdSB3YW50IG9wdGltYWwgcGVyZm9ybWFuY2UgY2hvb3NlIE4uXFxuICAzNDpcXHRcXG4gIDM1OlxcdGNvbmZpZyBBVEgxMktfREVCVUdGU1xcbiAgMzY6XFx0XFx0Ym9vbCBcXFwiUXVhbGNvbW0gYXRoMTJrIGRlYnVnZnMgc3VwcG9ydFxcXCJcXG4gIDM3OlxcdFxcdGRlcGVuZHMgb24gQVRIMTJLIFxcdTAwMjZcXHUwMDI2IE1BQzgwMjExX0RFQlVHRlNcXG4gIDM4OlxcdFxcdGhlbHBcXG4gIDM5OlxcdFxcdCAgRW5hYmxlIGF0aDEyayBkZWJ1Z2ZzIHN1cHBvcnRcXG4gIDQwOlxcdFxcbiAgNDE6XFx0XFx0ICBJZiB1bnN1cmUsIHNheSBZIHRvIG1ha2UgaXQgZWFzaWVyIHRvIGRlYnVnIHByb2JsZW1zLiBCdXQgaWZcXG4gIDQyOlxcdFxcdCAgeW91IHdhbnQgb3B0aW1hbCBwZXJmb3JtYW5jZSBjaG9vc2UgTi5cXG4gIDQzOlxcdFxcbiAgNDQ6XFx0Y29uZmlnIEFUSDEyS19UUkFDSU5HXFxuICA0NTpcXHRcXHRib29sIFxcXCJhdGgxMmsgdHJhY2luZyBzdXBwb3J0XFxcIlxcbiAgNDY6XFx0XFx0ZGVwZW5kcyBvbiBBVEgxMksgXFx1MDAyNlxcdTAwMjYgRVZFTlRfVFJBQ0lOR1xcbiAgNDc6XFx0XFx0aGVscFxcbiAgNDg6XFx0XFx0ICBFbmFibGUgYXRoMTJrIHRyYWNpbmcgaW5mcmFzdHJ1Y3R1cmUuXFxuICA0OTpcXHRcXG4gIDUwOlxcdFxcdCAgSWYgdW5zdXJlLCBzYXkgWSB0byBtYWtlIGl0IGVhc2llciB0byBkZWJ1ZyBwcm9ibGVtcy4gQnV0IGlmXFxuICA1MTpcXHRcXHQgIHlvdSB3YW50IG9wdGltYWwgcGVyZm9ybWFuY2UgY2hvb3NlIE4uXFxuICA1MjpcXHRcXG4gIDUzOlxcdGNvbmZpZyBBVEgxMktfQ09SRURVTVBcXG4gIDU0OlxcdFxcdGJvb2wgXFxcImF0aDEyayBjb3JlZHVtcFxcXCJcXG4gIDU1OlxcdFxcdGRlcGVuZHMgb24gQVRIMTJLXFxuICA1NjpcXHRcXHRzZWxlY3QgV0FOVF9ERVZfQ09SRURVTVBcXG4gIDU3OlxcdFxcdGhlbHBcXG4gIDU4OlxcdFxcdCAgRW5hYmxlIGF0aDEyayBjb3JlZHVtcCBjb2xsZWN0aW9uXFxuICA1OTpcXHRcXG4gIDYwOlxcdFxcdCAgSWYgdW5zdXJlLCBzYXkgWSB0byBtYWtlIGl0IGVhc2llciB0byBkZWJ1ZyBwcm9ibGVtcy4gQnV0IGlmXFxuICA2MTpcXHRcXHQgIGR1bXAgY29sbGVjdGlvbiBub3QgcmVxdWlyZWQgY2hvb3NlIE4uXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI5VDA4OjE0OjIxLjI2NTE5ODQxN1oiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEwMDQ5NDU2MjA3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgSW1wYWN0IG9mIHRoaXMgUGF0Y2ggb24gV2ktRmkgRHJpdmVyIEZ1enppbmcqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGlzIHRvdWNoaW5nIHNvbWUga2V5IGFyZWFzOiBgYXRoMTJrX3B1bGxfbWFjX3BoeV9jYXBfc3ZjX3JlYWR5X2V4dGAsIGBhdGgxMmtfd21pX3NlbmRfcGVlcl9hc3NvY19jbWRgLCBgYXRoMTJrX3dtaV9laHRfY2Fwc19wYXJzZWAsIGFuZCBgYXRoMTJrX3dtaV90bHZfbWFjX3BoeV9jYXBzX2V4dGAuIFRoZXNlIGFyZSBhbGwgY2xlYXJseSBXTUkgY29tbWFuZHMg4oCTIGludGVyYWN0aW9ucyB3aXRoIHRoZSBXaXJlbGVzcyBNb2R1bGUgSW50ZXJmYWNlLiBBbmQsIGZyb20gYSBoaWdoIGxldmVsLCB0aGF0IG1lYW5zIHRoZXkncmUgZ29pbmcgb3ZlciB0aGUgYnVzLCBsaWtlbHkgUENJIG9yIEFIQi4gVGhlIGluaXRpYWwgdGhvdWdodCBpcywgaG93IGRvZXMgdGhpcyBpbnRlcmFjdCB3aXRoIGZ1enppbmc/XG5cblNwZWNpZmljYWxseSwgaXQgZGVwZW5kcyBvbiB0aGUgUGVyaXBoZXJhbCBDb21wb25lbnQgSW50ZXJjb25uZWN0IChQQ0kpIGludGVyZmFjZS5cblxuTm93LCBJJ20gdGhpbmtpbmcgYWJvdXQgc3l6a2FsbGVyLiBJIGtub3cgaXQgY2FuIGZ1enogUENJIGRldmljZXMgdGhyb3VnaCB2UENJLCBidXQgaXMgdGhhdCBpdHMgZGVmYXVsdCBiZWhhdmlvcj8gQSBxdWljayBtZW50YWwgY2hlY2vigKYgeWVzLCBzeXprYWxsZXIgZG9lcyBvZmZlciB2UENJIGZ1enppbmcuIEJ1dCB0aGUgY3JpdGljYWwgcXVlc3Rpb24gaXMgZWZmZWN0aXZlbmVzcy4gV2lsbCB0aGlzIHBhdGNoIGJlIGVmZmVjdGl2ZWx5IGZ1enplZCBieSB0aGUgdG9vbHM/IFRoZSBjb21wbGV4aXR5IG9mIFdpLUZpIGRyaXZlcnMgaW50cm9kdWNlcyBzaWduaWZpY2FudCBodXJkbGVzLlxuXG5UaGUgdHlwaWNhbCBXaS1GaSBkcml2ZXIgZmxvdyBnb2VzIHNvbWV0aGluZyBsaWtlIHRoaXM6IGRldmljZSBpbml0aWFsaXphdGlvbiwgZmlybXdhcmUgbG9hZGluZywgYW5kIHRoZW4gdGhlIGNyaXRpY2FsIGNvbW11bmljYXRpb24gc3RhZ2UuIElmIGZpcm13YXJlIGxvYWRpbmcgZmFpbHMsIHRoZSB3aG9sZSBkcml2ZXIgaW5pdGlhbGl6YXRpb24gaXMgYWJvcnRlZC4gSW4gdGhhdCBjYXNlLCB0aGUgV01JIGNvZGUsIHRoZXNlIHZlcnkgZnVuY3Rpb25zLCBtaWdodCBuZXZlciBldmVuIGJlIHJlYWNoZWQuIFNvLCBpcyBgYXRoMTJrYCBvbmUgb2YgdGhvc2UgdGhhdCAqcmVxdWlyZXMqIGZpcm13YXJlPyBJIG5lZWQgdG8gdmVyaWZ5IHRoYXQgYmVmb3JlIEkgY2FuIGRyYXcgYW55IHJlYWwgY29uY2x1c2lvbnMgYWJvdXQgdGhlIGZ1enppbmcgaW1wYWN0LlxuXG5cbiIsIklucHV0VG9rZW5zIjo4NDQ3LCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjExLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjlUMDg6MTQ6MzEuMzE0NjU3Njc0WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2ODI0NTExNCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJyZXF1ZXN0X2Zpcm13YXJlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmtcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYz0zMzQ9c3RhdGljIGludCBhdGgxMmtfYWhiX3Bvd2VyX3VwKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTM2NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jOjM2NjpcXHRyZXQgPSByZXF1ZXN0X2Zpcm13YXJlKFxcdTAwMjZmdywgZndfbmFtZSwgZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTM2Ny1cXHRpZiAocmV0IFxcdTAwM2MgMCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmM6MzY4OlxcdFxcdGF0aDEya19lcnIoYWIsIFxcXCJyZXF1ZXN0X2Zpcm13YXJlIGZhaWxlZFxcXFxuXFxcIik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0zNjktXFx0XFx0cmV0dXJuIHJldDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtMzk4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmM6Mzk5OlxcdHJldCA9IHJlcXVlc3RfZmlybXdhcmUoXFx1MDAyNmZ3MiwgZncyX25hbWUsIGRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy00MDAtXFx0aWYgKHJldCBcXHUwMDNjIDApIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jOjQwMTpcXHRcXHRhdGgxMmtfZXJyKGFiLCBcXFwicmVxdWVzdF9maXJtd2FyZSBmYWlsZWRcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtNDAyLVxcdFxcdGdvdG8gZXJyX2Z3O1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9mdy5jLTktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9mdy5jOjEwOnN0YXRpYyBpbnQgYXRoMTJrX2Z3X3JlcXVlc3RfZmlybXdhcmVfYXBpX24oc3RydWN0IGF0aDEya19iYXNlICphYixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2Z3LmMtMTEtXFx0XFx0XFx0XFx0XFx0ICAgIGNvbnN0IGNoYXIgKm5hbWUpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2Z3LmM9MTYzPXZvaWQgYXRoMTJrX2Z3X21hcChzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9mdy5jLTE2Ni1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2Z3LmM6MTY3OlxcdHJldCA9IGF0aDEya19md19yZXF1ZXN0X2Zpcm13YXJlX2FwaV9uKGFiLCBBVEgxMktfRldfQVBJMl9GSUxFKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2Z3LmMtMTY4LVxcdGlmIChyZXQgPT0gMClcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjlUMDg6MTQ6MzEuMzgyOTExOTQ4WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUwNTE0NTE4NTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgYXRoMTJrIERyaXZlciBJbml0aWFsaXphdGlvbioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgYGF0aDEya2AgZHJpdmVyIGluaXRpYWxpemF0aW9uIHByb2Nlc3MsIGFuZCBpdCdzIGltbWVkaWF0ZWx5IGNsZWFyIHdlIG5lZWQgZmlybXdhcmUuIFdpdGhvdXQgaXQsIHRoZSBgcmVxdWVzdF9maXJtd2FyZWAgY2FsbCBpcyBnb2luZyB0byBib21iIG91dCwgYW5kIHRoZSB3aG9sZSBkcml2ZXIgc2V0dXAganVzdCBncmluZHMgdG8gYSBoYWx0LiBUaGUgcHJvYmxlbSB3aXRoIHVzaW5nIHN5emthbGxlciBoZXJlIGlzIHRoYXQgd2UgbGlrZWx5IGRvbid0IGhhdmUgdGhlIGBhdGgxMmtgIGZpcm13YXJlIGF2YWlsYWJsZSwgb3IgaWYgd2UgKmRvKiBoYXZlIGl0LCB0aGUgdmlydHVhbCBQQ0kgZGV2aWNlIGlzbid0IGdvaW5nIHRvIHBsYXkgYmFsbCBhbmQgY29ycmVjdGx5IGhhbmRsZSB0aGUgZmlybXdhcmUgaW5pdGlhbGl6YXRpb24uIFRoYXQncyBhIGh1Z2UgaHVyZGxlIC0gdGhlcmUncyBubyB3YXkgc3l6a2FsbGVyIGNhbiBlbXVsYXRlIHRoZSBjb21wbGljYXRlZCBmaXJtd2FyZSBpbnRlcmFjdGlvbnMgb2YgdGhpcyBgYXRoMTJrYCBpbnRlcmZhY2UgdXNpbmcgYSB2aXJ0dWFsIFBDSSBzZXR1cC5cblxuSXQncyBhbGwgYWJvdXQgdGhlIFdNSSBjb21tYW5kczsgdGhleSdyZSB0aGUgbGFuZ3VhZ2Ugc3Bva2VuIGJldHdlZW4gdGhlIGRyaXZlciBhbmQgdGhlIGZpcm13YXJlLiBJZiB0aGUgZmlybXdhcmUgaXNuJ3QgcnVubmluZywgd2UnbGwgbmV2ZXIgZ2V0IHRvIGtleSBmdW5jdGlvbnMgbGlrZSBgYXRoMTJrX3B1bGxfbWFjX3BoeV9jYXBfc3ZjX3JlYWR5X2V4dGAgb3IgYGF0aDEya193bWlfc2VuZF9wZWVyX2Fzc29jX2NtZGAuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBjYWxsIGNoYWluIGZvciBgYXRoMTJrX3B1bGxfbWFjX3BoeV9jYXBfc3ZjX3JlYWR5X2V4dGAgdG8gc2VlIGhvdyBjcml0aWNhbCB0aGlzIGRlcGVuZGVuY3kgaXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjk2NzksIk91dHB1dFRva2VucyI6NTAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxODksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjlUMDg6MTQ6MzYuNDM0MzY2NjM5WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3MDM1NTUxMywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJhdGgxMmtfcHVsbF9tYWNfcGh5X2NhcF9zdmNfcmVhZHlfZXh0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmtcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuYz00NTQ9c3RhdGljIGludFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmM6NDU1OmF0aDEya19wdWxsX21hY19waHlfY2FwX3N2Y19yZWFkeV9leHQoc3RydWN0IGF0aDEya193bWlfcGRldiAqd21pX2hhbmRsZSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5jLTQ1Ni1cXHRcXHRcXHRcXHQgICAgICBzdHJ1Y3QgYXRoMTJrX3dtaV9zdmNfcmR5X2V4dF9wYXJzZSAqc3ZjLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuYz00ODE4PXN0YXRpYyBpbnQgYXRoMTJrX3dtaV9leHRfc29jX2hhbF9yZWdfY2Fwc19wYXJzZShzdHJ1Y3QgYXRoMTJrX2Jhc2UgKnNvYyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmMtNDgzNi1cXHR3aGlsZSAocGh5X2lkX21hcCBcXHUwMDI2XFx1MDAyNiBzb2MtXFx1MDAzZW51bV9yYWRpb3MgXFx1MDAzYyBNQVhfUkFESU9TKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuYzo0ODM3OlxcdFxcdHJldCA9IGF0aDEya19wdWxsX21hY19waHlfY2FwX3N2Y19yZWFkeV9leHQod21pX2hhbmRsZSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5jLTQ4MzgtXFx0XFx0XFx0XFx0XFx0XFx0XFx0ICAgIHN2Y19yZHlfZXh0LFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yOVQwODoxNDozNi41MDQ3MzkxNDJaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTM0NjAzMDQ3MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFJlYWNoYWJpbGl0eSBvZiBUaGlzIENvZGUqKlxuXG5Pa2F5LCBsZXQgbWUgdGhpbmsgdGhpcyB0aHJvdWdoLiBUaGlzIGNvZGUsIHNwZWNpZmljYWxseSBgYXRoMTJrX3dtaV9leHRfc29jX2hhbF9yZWdfY2Fwc19wYXJzZWAsIGlzIGNhbGxlZCBkZWVwIHdpdGhpbiB0aGUgYGF0aDEya2AgZHJpdmVyJ3MgV01JIGV2ZW50IGhhbmRsaW5nLiBJdCdzIHRyaWdnZXJlZCBieSBgYXRoMTJrX3dtaV90bHZfc3ZjX3JkeV9leHRfcGFyc2VgLCB3aGljaCBpbiB0dXJuIHJlc3BvbmRzIHRvIHRoZSBgV01JX1NFUlZJQ0VfUkVBRFlfRVhUX0VWRU5USURgIGV2ZW50LiBBbmQgdGhhdCBldmVudD8gVGhhdCdzIHNlbnQgKmJ5IHRoZSBmaXJtd2FyZSogYWZ0ZXIgaXQgYm9vdHMuXG5cbk5vdywgaGVyZSdzIHRoZSBraWNrZXI6IEkga25vdyBzeXprYWxsZXIgY2FuJ3QgZW11bGF0ZSB0aGUgYGF0aDEya2AgZmlybXdhcmUgaXRzZWxmLiBUaGF0J3MgYSBmdW5kYW1lbnRhbCBsaW1pdGF0aW9uIG9mIHZpcnR1YWxpemF0aW9uIGluIHRoaXMgc2NlbmFyaW8uIFdhaXQsIGJ1dCwgaXNuJ3QgdGhlcmUgc29tZXRoaW5nIGluIHN5emthbGxlciBhYm91dCB0aGUgbWFjODAyMTFfaHdzaW0/IFllcywgYnV0IHRoYXQgZW11bGF0ZXMgYSAqZ2VuZXJpYyogV2ktRmkgZGV2aWNlLCBub3QgdGhlIHNwZWNpZmljcyBvZiBgYXRoMTJrYCBoYXJkd2FyZS5cblxuU28sIHJlYWxpc3RpY2FsbHksIGNhbiB0aGlzIGNvZGUgYmUgcmVhY2hlZCBpbiBhbiBlbnZpcm9ubWVudCBsaWtlIEdDRSBvciBRRU1VPyBOby4gSXQncyBpbmV4dHJpY2FibHkgdGllZCB0byB0aGUgYGF0aDEya2AgaGFyZHdhcmUgYW5kIGl0cyBhc3NvY2lhdGVkIGZpcm13YXJlLiBUaGUgcGF0Y2ggSSdtIGxvb2tpbmcgYXQgbW9kaWZpZXMgY29kZSB0aGF0J3MgZnVuZGFtZW50YWxseSB1bnJlYWNoYWJsZSBpbiBhIHZpcnR1YWxpemVkIGNvbnRleHQuIEkndmUgZ290IHRvIG1ha2Ugc3VyZSB0aGlzIGlzIGFjY3VyYXRlLCB0aG91Z2guIElzIHRoZXJlIGFueSBzb2Z0d2FyZSBlbXVsYXRpb24gbW9kZSBmb3IgYGF0aDEya2A/IEknbGwgZG91YmxlLWNoZWNrIGp1c3QgdG8gYmUgYWJzb2x1dGVseSBjZXJ0YWluLlxuXG5UaGVyZWZvcmUsIHRoZSBvbmx5IHJlYXNvbmFibGUgY29uY2x1c2lvbiBpcyB0aGF0IEkgbmVlZCB0byBzZXQgYFdvcnRoRnV6emluZz1mYWxzZWAgZm9yIHRoaXMgY29kZS4gSXQncyBub3QgcHJhY3RpY2FsbHkgdGVzdGFibGUgaW4gdGhlIGN1cnJlbnQgZW52aXJvbm1lbnQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwNTI2LCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjQxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI5VDA4OjE0OjQxLjg1MDc3NDc3NVoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzUyNjkxMDMsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImh3c2ltXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmtcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI5VDA4OjE0OjQxLjkyNjA1NTU3OFoiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NjY0MTYwMTI5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCdzIGludGVybmFsIG1vbm9sb2d1ZTpcblxuKipJbnZlc3RpZ2F0aW5nIHRoZSBhdGgxMmsgSGFyZHdhcmUgU2ltdWxhdGlvbioqXG5cblJpZ2h0LCBzbywgbm8gaGFyZHdhcmUgc2ltdWxhdGlvbiBzdXBwb3J0IGZvciB0aGUgYXRoMTJrIGRyaXZlci4gVGhhdCdzIGEgYml0IG9mIGEgc25hZy4gSSdtIGdvaW5nIHRvIG5lZWQgdG8gZGlnIGRlZXBlciBpbnRvIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhhdC4gTGFjayBvZiBhIGhhcmR3YXJlIHNpbXVsYXRpb24gKGh3c2ltKSBlbnZpcm9ubWVudCBvZnRlbiBtZWFucyBhIG1vcmUgY29tcGxleCBkZWJ1Z2dpbmcgY3ljbGUsIHJlbHlpbmcgb24gcGh5c2ljYWwgaGFyZHdhcmUsIG9yIHBvdGVudGlhbGx5IHJlbHlpbmcgb24gbW9yZSBlbGFib3JhdGUgZW11bGF0aW9uIHN0cmF0ZWdpZXMuIEknbGwgbmVlZCB0byBmaWd1cmUgb3V0IGhvdyB0byB3b3JrIGFyb3VuZCB0aGUgbGltaXRhdGlvbnMuXG5cbldhaXQgYSBtaW51dGUsIHdoYXQgYWJvdXQgdXNpbmcgYHRlc3Rtb2RlYD8gSXMgdGhhdCBhbiBhdmFpbGFibGUgb3B0aW9uPyBgVGVzdG1vZGVgIG1pZ2h0IG9mZmVyIGFuIGFsdGVybmF0aXZlIHJvdXRlIGZvciBzb21lIGxldmVsIG9mIGNvbnRyb2wgb3IgZXhwZXJpbWVudGF0aW9uIHdpdGhvdXQgYSBmdWxsIGh3c2ltLiBJIG5lZWQgdG8gcmVmcmVzaCBteSBtZW1vcnkgb24gdGhlIGF0aDEyayBkcml2ZXIncyBgdGVzdG1vZGVgIGltcGxlbWVudGF0aW9uIGFuZCBzZWUgaWYgaXQgY291bGQgYmUgbGV2ZXJhZ2VkIGluIHRoaXMgc2l0dWF0aW9uLiBJdCBjb3VsZCBwcm92aWRlIGFjY2VzcyB0byBpbnRlcm5hbCByZWdpc3RlcnMgb3IgdGVzdCBjb21tYW5kcywgd2hpY2ggY291bGQgYmUgaGVscGZ1bC4gSSBtdXN0IGFzc2VzcyB3aGV0aGVyIGl0IGlzIHJlbGV2YW50IHRvIHRoZSBpc3N1ZSBhdCBoYW5kLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMTE3MiwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI5VDA4OjE0OjQ2LjU5MDIyMDI5N1oiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODAxNTA4ODIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidGVzdG1vZGVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEya1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL01ha2VmaWxlPTMzPWF0aDEyay0kKENPTkZJR19BVEgxMktfQ09SRURVTVApICs9IGNvcmVkdW1wLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL01ha2VmaWxlOjM0OmF0aDEyay0kKENPTkZJR19OTDgwMjExX1RFU1RNT0RFKSArPSB0ZXN0bW9kZS5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9NYWtlZmlsZS0zNS1hdGgxMmstJChDT05GSUdfVEhFUk1BTCkgKz0gdGhlcm1hbC5vXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jLTE3LSNpbmNsdWRlIFxcXCJkcF9yeC5oXFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmM6MTg6I2luY2x1ZGUgXFxcInRlc3Rtb2RlLmhcXFwiXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9tYWMuYy0xOS0jaW5jbHVkZSBcXFwicGVlci5oXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jLTYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jOjc6I2luY2x1ZGUgXFxcInRlc3Rtb2RlLmhcXFwiXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jLTgtI2luY2x1ZGUgXFx1MDAzY25ldC9uZXRsaW5rLmhcXHUwMDNlXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmMtMTMtI2luY2x1ZGUgXFxcImhpZi5oXFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYzoxNDojaW5jbHVkZSBcXFwiLi4vdGVzdG1vZGVfaS5oXFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYy0xNS1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYz00NT12b2lkIGF0aDEya190bV93bWlfZXZlbnRfdW5zZWdtZW50ZWQoc3RydWN0IGF0aDEya19iYXNlICphYiwgdTMyIGNtZF9pZCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYy01MS1cXHRhdGgxMmtfZGJnKGFiLCBBVEgxMktfREJHX1RFU1RNT0RFLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYzo1MjpcXHRcXHQgICBcXFwidGVzdG1vZGUgZXZlbnQgd21pIGNtZF9pZCAlZCBza2IgbGVuZ3RoICVkXFxcXG5cXFwiLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYy01My1cXHRcXHQgICBjbWRfaWQsIHNrYi1cXHUwMDNlbGVuKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYy01OC1cXHRpZiAoIWFyKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jOjU5OlxcdFxcdGF0aDEya193YXJuKGFiLCBcXFwidGVzdG1vZGUgZXZlbnQgbm90IGhhbmRsZWQgZHVlIHRvIGludmFsaWQgcGRldlxcXFxuXFxcIik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jLTYwLVxcdFxcdHJldHVybjtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYy02NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmM6NjU6XFx0bmxfc2tiID0gY2ZnODAyMTFfdGVzdG1vZGVfYWxsb2NfZXZlbnRfc2tiKGFyLVxcdTAwM2VhaC1cXHUwMDNlaHctXFx1MDAzZXdpcGh5LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYy02Ni1cXHRcXHRcXHRcXHRcXHRcXHQgICAyICogbmxhX3RvdGFsX3NpemUoc2l6ZW9mKHUzMikpICtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYy03Mi1cXHRcXHRhdGgxMmtfd2FybihhYixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmM6NzM6XFx0XFx0XFx0ICAgIFxcXCJmYWlsZWQgdG8gYWxsb2NhdGUgc2tiIGZvciB1bnNlZ21lbnRlZCB0ZXN0bW9kZSB3bWkgZXZlbnRcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYy03NC1cXHRcXHRyZXR1cm47XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmMtNzktXFx0ICAgIG5sYV9wdXQobmxfc2tiLCBBVEhfVE1fQVRUUl9EQVRBLCBza2ItXFx1MDAzZWxlbiwgc2tiLVxcdTAwM2VkYXRhKSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYzo4MDpcXHRcXHRhdGgxMmtfd2FybihhYiwgXFxcImZhaWxlZCB0byBwb3B1bGF0ZSB0ZXN0bW9kZSB1bnNlZ21lbnRlZCBldmVudFxcXFxuXFxcIik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jLTgxLVxcdFxcdGtmcmVlX3NrYihubF9za2IpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jLTg0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYzo4NTpcXHRjZmc4MDIxMV90ZXN0bW9kZV9ldmVudChubF9za2IsIEdGUF9BVE9NSUMpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYy04Ni19XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmM9ODg9dm9pZCBhdGgxMmtfdG1fcHJvY2Vzc19ldmVudChzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiLCB1MzIgY21kX2lkLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jLTk5LVxcdGF0aDEya19kYmcoYWIsIEFUSDEyS19EQkdfVEVTVE1PREUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jOjEwMDpcXHRcXHQgICBcXFwidGVzdG1vZGUgZXZlbnQgd21pIGNtZF9pZCAlZCBmdG0gZXZlbnQgbXNnICVwIGRhdGFsZW4gJWRcXFxcblxcXCIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jLTEwMS1cXHRcXHQgICBjbWRfaWQsIGZ0bV9tc2csIGxlbmd0aCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmMtMTA1LVxcdGlmIChwZGV2X2lkIFxcdTAwM2U9IGFiLVxcdTAwM2VudW1fcmFkaW9zKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jOjEwNjpcXHRcXHRhdGgxMmtfd2FybihhYiwgXFxcInRlc3Rtb2RlIGV2ZW50IG5vdCBoYW5kbGVkIGR1ZSB0byBpbnZhbGlkIHBkZXYgaWRcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYy0xMDctXFx0XFx0cmV0dXJuO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jLTExMi1cXHRpZiAoIWFyKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jOjExMzpcXHRcXHRhdGgxMmtfd2FybihhYiwgXFxcInRlc3Rtb2RlIGV2ZW50IG5vdCBoYW5kbGVkIGR1ZSB0byBhYnNlbmNlIG9mIHBkZXZcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYy0xMTQtXFx0XFx0cmV0dXJuO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jLTE1My1cXHRzcGluX2xvY2tfYmgoXFx1MDAyNmFyLVxcdTAwM2VkYXRhX2xvY2spO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYzoxNTQ6XFx0bmxfc2tiID0gY2ZnODAyMTFfdGVzdG1vZGVfYWxsb2NfZXZlbnRfc2tiKGFyLVxcdTAwM2VhaC1cXHUwMDNlaHctXFx1MDAzZXdpcGh5LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYy0xNTUtXFx0XFx0XFx0XFx0XFx0XFx0ICAgMiAqIG5sYV90b3RhbF9zaXplKHNpemVvZih1MzIpKSArXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmMtMTYxLVxcdFxcdGF0aDEya193YXJuKGFiLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYzoxNjI6XFx0XFx0XFx0ICAgIFxcXCJmYWlsZWQgdG8gYWxsb2NhdGUgc2tiIGZvciB0ZXN0bW9kZSB3bWkgZXZlbnRcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYy0xNjMtXFx0XFx0cmV0dXJuO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jLTE3MC1cXHRcXHQgICAgXFx1MDAyNmFiLVxcdTAwM2VmdG1fZXZlbnRfb2JqLmV2ZW50ZGF0YVswXSkpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmM6MTcxOlxcdFxcdGF0aDEya193YXJuKGFiLCBcXFwiZmFpbGVkIHRvIHBvcHVsYXRlIHRlc3Rtb2RlIGV2ZW50XFxcIik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jLTE3Mi1cXHRcXHRrZnJlZV9za2Iobmxfc2tiKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYy0xNzUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jOjE3NjpcXHRjZmc4MDIxMV90ZXN0bW9kZV9ldmVudChubF9za2IsIEdGUF9BVE9NSUMpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYy0xNzctfVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jPTE3OT1zdGF0aWMgaW50IGF0aDEya190bV9jbWRfZ2V0X3ZlcnNpb24oc3RydWN0IGF0aDEyayAqYXIsIHN0cnVjdCBubGF0dHIgKnRiW10pXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmMtMTgzLVxcdGF0aDEya19kYmcoYXItXFx1MDAzZWFiLCBBVEgxMktfREJHX1RFU1RNT0RFLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYzoxODQ6XFx0XFx0ICAgXFxcInRlc3Rtb2RlIGNtZCBnZXQgdmVyc2lvbl9tYWpvciAlZCB2ZXJzaW9uX21pbm9yICVkXFxcXG5cXFwiLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYy0xODUtXFx0XFx0ICAgQVRIX1RFU1RNT0RFX1ZFUlNJT05fTUFKT1IsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmMtMTg4LVxcdHNwaW5fbG9ja19iaChcXHUwMDI2YXItXFx1MDAzZWRhdGFfbG9jayk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jOjE4OTpcXHRza2IgPSBjZmc4MDIxMV90ZXN0bW9kZV9hbGxvY19yZXBseV9za2IoYXItXFx1MDAzZWFoLVxcdTAwM2Vody1cXHUwMDNld2lwaHksXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jLTE5MC1cXHRcXHRcXHRcXHRcXHRcXHQyICogbmxhX3RvdGFsX3NpemUoc2l6ZW9mKHUzMikpKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYy0yMDMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jOjIwNDpcXHRyZXR1cm4gY2ZnODAyMTFfdGVzdG1vZGVfcmVwbHkoc2tiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmMtMjA1LX1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYz0yMDc9c3RhdGljIGludCBhdGgxMmtfdG1fY21kX3Byb2Nlc3NfZnRtKHN0cnVjdCBhdGgxMmsgKmFyLCBzdHJ1Y3QgbmxhdHRyICp0YltdKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jLTIyOS1cXHRhdGgxMmtfZGJnKGFyLVxcdTAwM2VhYiwgQVRIMTJLX0RCR19URVNUTU9ERSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmM6MjMwOlxcdFxcdCAgIFxcXCJ0ZXN0bW9kZSBjbWQgd21pIGNtZF9pZCAlZCBidWYgJXAgYnVmX2xlbiAlZFxcXFxuXFxcIixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmMtMjMxLVxcdFxcdCAgIGNtZF9pZCwgYnVmLCBidWZfbGVuKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYy0yODAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jOjI4MTpzdGF0aWMgaW50IGF0aDEya190bV9jbWRfdGVzdG1vZGVfc3RhcnQoc3RydWN0IGF0aDEyayAqYXIsIHN0cnVjdCBubGF0dHIgKnRiW10pXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jLTI4Mi17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmM9MzAwPXN0YXRpYyBpbnQgYXRoMTJrX3RtX2NtZF93bWkoc3RydWN0IGF0aDEyayAqYXIsIHN0cnVjdCBubGF0dHIgKnRiW10pXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmMtMzE4LVxcdGlmICghYnVmX2xlbikge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYzozMTk6XFx0XFx0YXRoMTJrX3dhcm4oYXItXFx1MDAzZWFiLCBcXFwiTm8gZGF0YSBwcmVzZW50IGluIHRlc3Rtb2RlIGNvbW1hbmRcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYy0zMjAtXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmMtMzMxLVxcdGF0aDEya19kYmcoYXItXFx1MDAzZWFiLCBBVEgxMktfREJHX1RFU1RNT0RFLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYzozMzI6XFx0XFx0ICAgXFxcInRlc3Rtb2RlIGNtZCB3bWkgY21kX2lkICVkICBidWYgbGVuZ3RoICVkXFxcXG5cXFwiLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYy0zMzMtXFx0XFx0ICAgY21kX2lkLCBidWZfbGVuKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYy0zNDYtXFx0XFx0ZGV2X2tmcmVlX3NrYihza2IpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYzozNDc6XFx0XFx0YXRoMTJrX3dhcm4oYXItXFx1MDAzZWFiLCBcXFwiZmFpbGVkIHRvIHRyYW5zbWl0IHdtaSBjb21tYW5kICh0ZXN0bW9kZSk6ICVkXFxcXG5cXFwiLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYy0zNDgtXFx0XFx0XFx0ICAgIHJldCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmM9MzU0PWludCBhdGgxMmtfdG1fY21kKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LCBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jLTM4NS1cXHRjYXNlIEFUSF9UTV9DTURfVEVTVE1PREVfU1RBUlQ6XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jOjM4NjpcXHRcXHRyZXR1cm4gYXRoMTJrX3RtX2NtZF90ZXN0bW9kZV9zdGFydChhciwgdGIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYy0zODctXFx0Y2FzZSBBVEhfVE1fQ01EX0dFVF9WRVJTSU9OOlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9ody5jLTI0LSNpbmNsdWRlIFxcXCIuLi9kZWJ1Z2ZzX3N0YS5oXFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvaHcuYzoyNTojaW5jbHVkZSBcXFwiLi4vdGVzdG1vZGUuaFxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2h3LmMtMjYtI2luY2x1ZGUgXFxcImhhbC5oXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuYy0yNi0jaW5jbHVkZSBcXFwicDJwLmhcXFwiXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuYzoyNzojaW5jbHVkZSBcXFwidGVzdG1vZGUuaFxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5jLTI4LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yOVQwODoxNDo0Ni42NzAzODMwNjlaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzcwNjAwMDczNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgV01JIENvbW1hbmQgSGFuZGxpbmcgaW4gVGVzdG1vZGUqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHRlc3Rtb2RlIGltcGxlbWVudGF0aW9uIGZvciB0aGUgYXRoMTJrIGRyaXZlciwgc3BlY2lmaWNhbGx5IGZvY3VzaW5nIG9uIFdNSSAoV2luZG93cyBNYW5hZ2VtZW50IEluc3RydW1lbnRhdGlvbikgY29tbWFuZHMuIE15IGluaXRpYWwgcXVlc3Rpb24gaXM6IGRvZXMgdGVzdG1vZGUgb25seSBhbGxvdyAqc2VuZGluZyogY29tbWFuZHMgZnJvbSB1c2Vyc3BhY2UsIG9yIGNhbiBpdCBhbHNvICpyZWNlaXZlKiB0aGVtP1xuXG5JIGluaXRpYWxseSBmb3VuZCByZWZlcmVuY2VzIHRvIGBhdGgxMmtfdG1fd21pX2V2ZW50X3Vuc2VnbWVudGVkYCBhbmQgYGF0aDEya190bV9wcm9jZXNzX2V2ZW50YC4gVGhvc2UgZnVuY3Rpb25zIHN1Z2dlc3QgYSBtZWNoYW5pc20gZm9yIGdldHRpbmcgZXZlbnRzICpiYWNrKiB0byB1c2Vyc3BhY2UuIEJ1dCB0aGVuIEkgbm90aWNlZCB0aGlzIHBhdGNoIGNoYW5nZXMgaG93IHRoZSBkcml2ZXIgaGFuZGxlcyBXTUkgZXZlbnRzIGludGVybmFsbHnigJQgc3BlY2lmaWNhbGx5IGluIGBhdGgxMmtfcHVsbF9tYWNfcGh5X2NhcF9zdmNfcmVhZHlfZXh0YCwgYGF0aDEya193bWlfZWh0X2NhcHNfcGFyc2VgLCBhbmQgYGF0aDEya193bWlfdGx2X21hY19waHlfY2Fwc19leHRgLiBUaGVzZSBhcmUgY2FsbGVkIHdoZW4gdGhlICpkcml2ZXIqIGdldHMgZXZlbnRzIGZyb20gdGhlICpmaXJtd2FyZSouIFNpbmNlIHdlIGFyZSBub3QgcnVubmluZyB3aXRoIGZpcm13YXJlLCBhbmQgdGhvc2UgZXZlbnQgcHJvY2Vzc2luZyBmdW5jdGlvbnMgYXJlIG5vdCBiZWluZyB0cmlnZ2VyZWQsIHRoZXJlIGlzIG5vIGV2ZW50IHRvIHNlbmQuXG5cbldhaXQgYSBzZWNvbmQsIGxldCdzIHJldGhpbmsgdGhpcy4gQ2FuIHVzZXJzcGFjZSBwb3RlbnRpYWxseSAqaW5qZWN0KiBXTUkgZXZlbnRzIGludG8gdGhlIGRyaXZlciB2aWEgdGVzdG1vZGUsIGV2ZW4gaWYgdGhlIGZpcm13YXJlIGlzbid0IHJ1bm5pbmc/IExldCdzIGNoZWNrIGBhdGgxMmtfdG1fY21kYCB3aGljaCBzZWVtcyB0byBiZSB0aGUgY2VudHJhbCBjb21tYW5kIGhhbmRsZXIuIEl0IHNlZW1zIHRvIGhhbmRsZSBjb21tYW5kcyBsaWtlIGBBVEhfVE1fQ01EX1RFU1RNT0RFX1NUQVJUYCwgYEFUSF9UTV9DTURfR0VUX1ZFUlNJT05gLCBgQVRIX1RNX0NNRF9XTUlgLCBhbmQgYEFUSF9UTV9DTURfV01JX0ZUTWAuICBgQVRIX1RNX0NNRF9XTUlgIGlzIHBhcnRpY3VsYXJseSBpbnRlcmVzdGluZy4gSXQgKnNlbmRzKiBhIFdNSSBjb21tYW5kICp0byB0aGUgZmlybXdhcmUqLiBTbyBpdCBzZWVtcyB0aGUgYW5zd2VyIGlzIG5vLCBpdCBkb2Vzbid0IGdpdmUgdXMgdGhlIGFiaWxpdHkgdG8gaW5qZWN0IGFuIGV2ZW50IHRvIHRoZSBkcml2ZXIuXG5cblNvLCBpbiBzdW1tYXJ5LCBiYXNlZCBvbiB0aGlzIHF1aWNrIGxvb2ssIGl0IGRvZXNuJ3QgbG9vayBsaWtlIEkgY2FuIHRyaWdnZXIgdGhlIGRyaXZlcidzIGludGVybmFsIGV2ZW50IHBhcnNpbmcgbG9naWMgZnJvbSB1c2Vyc3BhY2UgZGlyZWN0bHkuXG5cbldoYXQgYWJvdXQgYGF0aDEya193bWlfc2VuZF9wZWVyX2Fzc29jX2NtZGA/IFRoaXMgaXMgYSBXTUkgY29tbWFuZCBzZW50ICpieSogdGhlIGRyaXZlciB0byB0aGUgZmlybXdhcmUsIHdoaWNoIG1lYW5zIGl0IGlzbid0IHJlbGV2YW50IHRvIG15IHF1ZXN0aW9uLiBUaGlzIGNvbW1hbmQgaXMgY2FsbGVkIGJ5IGBhdGgxMmtfbWFjX3BlZXJfYXNzb2NfaF92ZGV2YC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTQ4MzQsIk91dHB1dFRva2VucyI6NDcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNDYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjlUMDg6MTQ6NTQuMzc2Mzg3OTUzWiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2NDMxMjE1NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJhdGgxMmtfd21pX3NlbmRfcGVlcl9hc3NvY19jbWRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEya1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jPTM4MzU9c3RhdGljIHZvaWQgYXRoMTJrX2Jzc19hc3NvYyhzdHJ1Y3QgYXRoMTJrICphcixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmMtMzkwNC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jOjM5MDU6XFx0Lyoga2VlcCB0aGlzIGJlZm9yZSBhdGgxMmtfd21pX3NlbmRfcGVlcl9hc3NvY19jbWQoKSAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmMtMzkwNi1cXHRyZXQgPSBhdGgxMmtfd21pX3ZkZXZfc2V0X3BhcmFtX2NtZChhciwgYXJ2aWYtXFx1MDAzZXZkZXZfaWQsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jLTM5MTQtXFx0cGVlcl9hcmctXFx1MDAzZWlzX2Fzc29jID0gdHJ1ZTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jOjM5MTU6XFx0cmV0ID0gYXRoMTJrX3dtaV9zZW5kX3BlZXJfYXNzb2NfY21kKGFyLCBwZWVyX2FyZyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9tYWMuYy0zOTE2LVxcdGlmIChyZXQpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmM9NjQ0MD1zdGF0aWMgaW50IGF0aDEya19tYWNfc3RhdGlvbl9hc3NvYyhzdHJ1Y3QgYXRoMTJrICphcixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmMtNjQ3OS1cXHRwZWVyX2FyZy1cXHUwMDNlaXNfYXNzb2MgPSB0cnVlO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmM6NjQ4MDpcXHRyZXQgPSBhdGgxMmtfd21pX3NlbmRfcGVlcl9hc3NvY19jbWQoYXIsIHBlZXJfYXJnKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jLTY0ODEtXFx0aWYgKHJldCkge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9tYWMuYz02NjQ3PXN0YXRpYyB2b2lkIGF0aDEya19zdGFfcmNfdXBkYXRlX3drKHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXBoeV93b3JrICp3aylcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmMtNjgzOS1cXHRcXHRcXHRwZWVyX2FyZy1cXHUwMDNlaXNfYXNzb2MgPSBmYWxzZTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jOjY4NDA6XFx0XFx0XFx0ZXJyID0gYXRoMTJrX3dtaV9zZW5kX3BlZXJfYXNzb2NfY21kKGFyLCBwZWVyX2FyZyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9tYWMuYy02ODQxLVxcdFxcdFxcdGlmIChlcnIpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5jPTIxMjc9c3RhdGljIHZvaWQgYXRoMTJrX3dtaV9jb3B5X3BlZXJfZmxhZ3Moc3RydWN0IHdtaV9wZWVyX2Fzc29jX2NvbXBsZXRlX2NtZCAqY21kLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuYy0yMjE0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmM6MjIxNTppbnQgYXRoMTJrX3dtaV9zZW5kX3BlZXJfYXNzb2NfY21kKHN0cnVjdCBhdGgxMmsgKmFyLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmMtMjIxNi1cXHRcXHRcXHRcXHQgICBzdHJ1Y3QgYXRoMTJrX3dtaV9wZWVyX2Fzc29jX2FyZyAqYXJnKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuaD02NTU2PWludCBhdGgxMmtfd21pX3BkZXZfcmVzdW1lKHN0cnVjdCBhdGgxMmsgKmFyLCB1MzIgcGRldl9pZCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuaC02NTU3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmg6NjU1ODppbnQgYXRoMTJrX3dtaV9zZW5kX3BlZXJfYXNzb2NfY21kKHN0cnVjdCBhdGgxMmsgKmFyLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmgtNjU1OS1cXHRcXHRcXHRcXHQgICBzdHJ1Y3QgYXRoMTJrX3dtaV9wZWVyX2Fzc29jX2FyZyAqYXJnKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjlUMDg6MTQ6NTQuNDQwNzEwNDk3WiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ3Njk4MDUxNDksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqVmVyaWZ5aW5nIHRoZSBNQUM4MDIxMSBDYWxsYmFjayBDaGFpbioqXG5cbk9rYXksIHNvIEknbSB0cmFjaW5nIHRoZSBleGVjdXRpb24gcGF0aCBhbmQgbmVlZCB0byBtYWtlIHN1cmUgSSd2ZSBnb3QgdGhpcyByaWdodC4gSSdtIHNlZWluZyB0aGlzIGNhbGwgY29taW5nIGZyb20gYGF0aDEya19ic3NfYXNzb2NgLCBgYXRoMTJrX21hY19zdGF0aW9uX2Fzc29jYCwgYW5kIGBhdGgxMmtfc3RhX3JjX3VwZGF0ZV93a2AuIFJpZ2h0LCB0aG9zZSBhcmUgZGVmaW5pdGVseSBtYWM4MDIxMSBjYWxsYmFja3MuIE5vIHN1cnByaXNlcyB0aGVyZS4gQnV0LCBhbmQgdGhpcyBpcyB0aGUgY3J1Y2lhbCBwb2ludCwgdGhlc2UgY2FsbGJhY2tzICpzaG91bGQqIG9ubHkgYmUgYWNjZXNzaWJsZSBpZiB0aGUgZHJpdmVyIGhhcyBzdWNjZXNzZnVsbHkgcmVnaXN0ZXJlZCBpdHNlbGYgd2l0aCBtYWM4MDIxMSBpbiB0aGUgZmlyc3QgcGxhY2UuIEFuZCB0aGUgZHJpdmVyIG9ubHkgZ2V0cyB0byByZWdpc3RlciB3aXRoIG1hYzgwMjExICphZnRlciogdGhlIGZpcm13YXJlIGluaXRpYWxpemF0aW9uIGlzIGNvbXBsZXRlIGFuZCBzdWNjZXNzZnVsLiBTbywgdGhhdCdzIHRoZSBjaGFpbiBvZiBsb2dpYywgcmlnaHQ/IFRoZSBkcml2ZXIgcmVnaXN0ZXJzLCB0aGVuIHRoZSBjYWxsYmFja3MgYXJlIGF2YWlsYWJsZS4gTGV0J3MganVzdCBkb3VibGUtY2hlY2sgdGhhdCB0aGlzIGlzIGFjdHVhbGx5IHRoZSBjYXNlLCBhbmQgSSdsbCB2ZXJpZnkgdGhlIGVudGlyZSBwYXRoLiBJIG5lZWQgdG8gbWFrZSBhYnNvbHV0ZWx5IHN1cmUgdGhlIHByZWNvbmRpdGlvbnMgYXJlIG1ldCBoZXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNjY5NiwiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEwNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yOVQwODoxNDo1OS4yMTA1MTkyMTZaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY1OTc0MzIzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImF0aDEya19tYWNfcmVnaXN0ZXJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEya1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuYz0xMTU1PXN0YXRpYyBpbnQgYXRoMTJrX2NvcmVfaHdfZ3JvdXBfc3RhcnQoc3RydWN0IGF0aDEya19od19ncm91cCAqYWcpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuYy0xMTc4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5jOjExNzk6XFx0cmV0ID0gYXRoMTJrX21hY19yZWdpc3RlcihhZyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmMtMTE4MC1cXHRpZiAoV0FSTl9PTihyZXQpKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9tYWMuYz0xNTIxOD12b2lkIGF0aDEya19tYWNfbWxvX3RlYXJkb3duKHN0cnVjdCBhdGgxMmtfaHdfZ3JvdXAgKmFnKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9tYWMuYy0xNTIzOS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jOjE1MjQwOmludCBhdGgxMmtfbWFjX3JlZ2lzdGVyKHN0cnVjdCBhdGgxMmtfaHdfZ3JvdXAgKmFnKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmMtMTUyNDEte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9tYWMuaD0xNTQ9dm9pZCBhdGgxMmtfbWFjX3VucmVnaXN0ZXIoc3RydWN0IGF0aDEya19od19ncm91cCAqYWcpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmg6MTU1OmludCBhdGgxMmtfbWFjX3JlZ2lzdGVyKHN0cnVjdCBhdGgxMmtfaHdfZ3JvdXAgKmFnKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5oLTE1Ni1pbnQgYXRoMTJrX21hY19hbGxvY2F0ZShzdHJ1Y3QgYXRoMTJrX2h3X2dyb3VwICphZyk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI5VDA4OjE0OjU5LjI3NjUwMDcwOVoiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MzkyODQ5Nzc1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgYSBzdW1tYXJ5IG9mIG15IHVuZGVyc3RhbmRpbmcsIGZyYW1lZCBmcm9tIG15IHBlcnNwZWN0aXZlIGFzIGFuIGV4cGVydDpcblxuKipVbmRlcnN0YW5kaW5nIHRoZSBgYXRoMTJrX21hY19yZWdpc3RlcmAgQ2FsbCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoZSBgYXRoMTJrX21hY19yZWdpc3RlcmAgZnVuY3Rpb24sIGFuZCB0aGUga2V5IHBpZWNlIG9mIGNvbnRleHQgaXMgdGhhdCBpdCdzIGJlaW5nIGNhbGxlZCBmcm9tIHdpdGhpbiBgYXRoMTJrX2NvcmVfaHdfZ3JvdXBfc3RhcnRgLiBUaGlzIGltbWVkaWF0ZWx5IHRlbGxzIG1lIHdlJ3JlIGxpa2VseSBpbiB0aGUgZWFybHkgc3RhZ2VzIG9mIGJyaW5naW5nIHVwIGEgaGFyZHdhcmUgZ3JvdXAsIHByb2JhYmx5IHJlbGF0ZWQgdG8gYSBzcGVjaWZpYyByYWRpbyBvciB2aXJ0dWFsIGludGVyZmFjZSB3aXRoaW4gdGhlIGxhcmdlciBhdGgxMmsgZHJpdmVyIGZyYW1ld29yay4gYGF0aDEya19jb3JlX2h3X2dyb3VwX3N0YXJ0YCBzdWdnZXN0cyBhIGNvb3JkaW5hdGVkIGFjdGlvbiBpbnZvbHZpbmcgbXVsdGlwbGUgaGFyZHdhcmUgZWxlbWVudHMuIFNvLCBgYXRoMTJrX21hY19yZWdpc3RlcmAgaXMgbW9zdCBsaWtlbHkgcmVzcG9uc2libGUgZm9yIHJlZ2lzdGVyaW5nIHRoZSBNQUMgbGF5ZXIgY29tcG9uZW50IG9mIGEgc3BlY2lmaWMgaGFyZHdhcmUgZ3JvdXAuIEknZCBleHBlY3QgaXQgdG8gaW5pdGlhbGl6ZSBkYXRhIHN0cnVjdHVyZXMgcmVsYXRlZCB0byB0aGUgTUFDLCBzZXQgdXAgaW50ZXJydXB0IGhhbmRsZXJzLCBhbmQgcG90ZW50aWFsbHkgY29tbXVuaWNhdGUgd2l0aCB0aGUgaGFyZHdhcmUgYXQgYSBsb3cgbGV2ZWwgdG8gZXN0YWJsaXNoIHRoZSBNQUMncyBvcGVyYXRpb25hbCBzdGF0ZS4gVGhpcyB3b3VsZCBwcm9iYWJseSBpbnZvbHZlIHNldHRpbmcgdXAgRE1BIGNoYW5uZWxzLCBjb25maWd1cmluZyB0cmFuc21pdCBhbmQgcmVjZWl2ZSBxdWV1ZXMsIGFuZCBwZXJoYXBzIGVuYWJsaW5nIHZhcmlvdXMgTUFDIGZlYXR1cmVzLiBJIG5lZWQgdG8gZGl2ZSBkZWVwZXIsIGxpa2VseSBzdGFydGluZyB3aXRoIHRoZSBmdW5jdGlvbidzIGRlZmluaXRpb24gYW5kIGl0cyBjYWxsIHN0YWNrIHRvIGZ1bGx5IHVuZGVyc3RhbmQgdGhlIGZsb3cgYW5kIGRhdGEgdGhpcyByZWdpc3RlciBmdW5jdGlvbiBpcyBtb3ZpbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE3NDk4LCJPdXRwdXRUb2tlbnMiOjQ0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjlUMDg6MTU6MDMuNjY5MzU0NTA0WiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2NTIwMjgwNCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJhdGgxMmtfY29yZV9od19ncm91cF9zdGFydFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5jPTExMjk9c3RhdGljIGludCBhdGgxMmtfY29yZV9tbG9fc2V0dXAoc3RydWN0IGF0aDEya19od19ncm91cCAqYWcpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuYy0xMTU0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5jOjExNTU6c3RhdGljIGludCBhdGgxMmtfY29yZV9od19ncm91cF9zdGFydChzdHJ1Y3QgYXRoMTJrX2h3X2dyb3VwICphZylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuYy0xMTU2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5jPTEyMzA9c3RhdGljIGlubGluZVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5jOjEyMzE6Ym9vbCBhdGgxMmtfY29yZV9od19ncm91cF9zdGFydF9yZWFkeShzdHJ1Y3QgYXRoMTJrX2h3X2dyb3VwICphZylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuYy0xMjMyLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5jPTEzMTE9aW50IGF0aDEya19jb3JlX3FtaV9maXJtd2FyZV9yZWFkeShzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmMtMTM0NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuYzoxMzQ1OlxcdGlmIChhdGgxMmtfY29yZV9od19ncm91cF9zdGFydF9yZWFkeShhZykpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuYzoxMzQ2OlxcdFxcdHJldCA9IGF0aDEya19jb3JlX2h3X2dyb3VwX3N0YXJ0KGFnKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuYy0xMzQ3LVxcdFxcdGlmIChyZXQpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5jPTE2MzY9c3RhdGljIHZvaWQgYXRoMTJrX2NvcmVfcmVzdGFydChzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuYy0xNjU5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5jOjE2NjA6XFx0XFx0aWYgKCFhdGgxMmtfY29yZV9od19ncm91cF9zdGFydF9yZWFkeShhZykpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuYy0xNjYxLVxcdFxcdFxcdG11dGV4X3VubG9jayhcXHUwMDI2YWctXFx1MDAzZW11dGV4KTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjlUMDg6MTU6MDMuNzM0NTY1MDI4WiIsIlNlcSI6MjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY2NjIyOTM0MDUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBVbnJlYWNoYWJpbGl0eSBvZiBUaGlzIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgdGhlIGNvZGUgaXQgdG91Y2hlcy4gSXQncyBjYWxsZWQgZnJvbSBgYXRoMTJrX2NvcmVfcW1pX2Zpcm13YXJlX3JlYWR5YC4gVGhhdCBmdW5jdGlvbiwgYXMgdGhlIG5hbWUgc3VnZ2VzdHMsIGdldHMgdHJpZ2dlcmVkIHdoZW4gdGhlIFFNSSBmaXJtd2FyZSBpcyByZWFkeS4gSXQncyBjbGVhciB0aGF0IHdpdGhvdXQgdGhlIGZpcm13YXJlIGJlaW5nIGxvYWRlZCBhbmQgcmVhZHksIHRoZSBkcml2ZXIgd29uJ3QgcmVnaXN0ZXIgcHJvcGVybHkgd2l0aCBtYWM4MDIxMS4gQW5kIGlmIHRoZSByZWdpc3RyYXRpb24gZG9lc24ndCBoYXBwZW4sIG5vbmUgb2YgdGhvc2UgbWFjODAyMTEgY2FsbGJhY2tzIGFyZSBldmVyIGdvaW5nIHRvIGJlIGFjY2Vzc2libGUuXG5cblRoZXJlZm9yZSwgdW5kZXIgbm9ybWFsIGNpcmN1bXN0YW5jZXMgYW5kIGVzcGVjaWFsbHkgaW4gdGhlIHR5cGUgb2YgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgSSdtIGRlYWxpbmcgd2l0aCBoZXJlLCB3aXRob3V0IHRoZSBhY3R1YWwgaGFyZHdhcmUgYW5kIGZpcm13YXJlLCB0aGlzIGNvZGUgcGF0aCBpcyBzaW1wbHkgdW5yZWFjaGFibGUuXG5cblRoaXMgcGF0Y2gsIGZyb20gd2hhdCBJIGNhbiBzZWUsIGlzIGEgZml4IGZvciBzb21lIHNwYXJzZSB3YXJuaW5ncyByZWxhdGluZyB0byBlbmRpYW5uZXNzLiBJdCB0b3VjaGVzIGBkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuaGAsIGBkZWJ1Z2ZzLmNgLCBgd21pLmNgLCBhbmQgYHdtaS5oYC4gU2luY2UgaXQncyBpbmFjY2Vzc2libGUgaW4gU3l6a2FsbGVyLCBteSBpbml0aWFsIGluc3RpbmN0IGlzIHRvIG1hcmsgdGhpcyBhcyBgV29ydGhGdXp6aW5nPWZhbHNlYC4gSG93ZXZlciwgSSBuZWVkIHRvIGJlIHRob3JvdWdoIGFuZCBleGhhdXN0IGFsbCBhdmVudWVzLlxuXG5MZXQgbWUgdGhpbmvigKYgaXMgdGhlcmUgYW55IG90aGVyIHdheSB0byBwb3RlbnRpYWxseSByZWFjaCB0aGlzIGNvZGU/IElzIHRoZXJlIGEgdGVzdCBmcmFtZXdvcmsgdGhhdCBtaWdodCBtb2NrIHRoZSBmaXJtd2FyZT8gTm9wZSwgSSBkb24ndCBzZWUgYW55IHNpZ24gb2YgdGhlIGBhdGgxMmtgIGRyaXZlciBoYXZpbmcgYSBmaXJtd2FyZSBtb2NraW5nIGZyYW1ld29yayB3aXRoaW4gdGhlIGtlcm5lbCBpdHNlbGYuIEhtbW0sIHdoYXQgYWJvdXQgdXNlcnNwYWNlPyBBcmUgdGhlcmUgYW55IHVzZXJzcGFjZSB0b29scyB0aGF0IGNvdWxkIGluamVjdCBRTUkgbWVzc2FnZXMgdG8gc2ltdWxhdGUgZmlybXdhcmUgcmVhZGluZXNzPyBOb3csIFFNSSBtZXNzYWdlcyBhcmUgZXhjaGFuZ2VkIHZpYSBRUlRSLCBvciBRdWFsY29tbSBJUEMgUm91dGVyLiBDYW4gU3l6a2FsbGVyIGluamVjdCBRUlRSIG1lc3NhZ2VzIHRvIHNpbXVsYXRlIHRoZSBmaXJtd2FyZT9cblxuQWgsIHllcywgU3l6a2FsbGVyICpkb2VzKiBzdXBwb3J0IEFGX1FJUENSVFIgc29ja2V0cy4gVGhhdCdzIGEgcHJvbWlzaW5nIGxlYWQuIExldCdzIHNlZSBpZiB0aGUgZHJpdmVyIGlzIGFjdHVhbGx5IGxpc3RlbmluZyBvbiBRUlRSLiBJIG5lZWQgdG8gaW52ZXN0aWdhdGUgaWYgdGhlcmUncyBhbnkgYWN0aXZlIGNvbW11bmljYXRpb24gd2l0aCB0aGUgUVJUUiBidXMuIElmIHNvLCB0aGVyZSAqbWlnaHQqIGJlIGEgd2F5IHRvIG1hbmlwdWxhdGUgdGhpcyBhbmQgdHJpZ2dlciB0aGUgcmVsZXZhbnQgY29kZSBwYXRocy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTg0MjgsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyODAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjlUMDg6MTU6MTAuMzk2ODYzNzEzWiIsIlNlcSI6MjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNDQ0NjQyNDYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicW1pX2hhbmRsZV9pbml0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmtcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9xbWkuYz00MDM4PWludCBhdGgxMmtfcW1pX2luaXRfc2VydmljZShzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9xbWkuYy00MDQ2LVxcdGFiLVxcdTAwM2VxbWkudGFyZ2V0X21lbV9tb2RlID0gYWItXFx1MDAzZXRhcmdldF9tZW1fbW9kZTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3FtaS5jOjQwNDc6XFx0cmV0ID0gcW1pX2hhbmRsZV9pbml0KFxcdTAwMjZhYi1cXHUwMDNlcW1pLmhhbmRsZSwgQVRIMTJLX1FNSV9SRVNQX0xFTl9NQVgsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9xbWkuYy00MDQ4LVxcdFxcdFxcdCAgICAgIFxcdTAwMjZhdGgxMmtfcW1pX29wcywgYXRoMTJrX3FtaV9tc2dfaGFuZGxlcnMpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yOVQwODoxNToxMC42NDEzMzU2N1oiLCJTZXEiOjI1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1ODg1NTU1NDUxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkludmVzdGlnYXRpbmcgUU1JIENvbW11bmljYXRpb24gaW4gYXRoMTJrKipcblxuT2theSwgc28gYGF0aDEya2AgdXRpbGl6ZXMgYHFtaV9oYW5kbGVfaW5pdGAgZm9yIGl0cyBRTUkgaGFuZGxlIGluaXRpYWxpemF0aW9uLiBUaGF0J3MgdGhlIHN0YXJ0aW5nIHBvaW50LiBOb3csIEknbSB3b25kZXJpbmcuLi4gQ291bGQgYSB1c2Vyc3BhY2UgcHJvY2VzcyBwb3RlbnRpYWxseSBzcG9vZiB0aGUgZmlybXdhcmUncyByb2xlIGJ5IHNlbmRpbmcgUU1JIG1lc3NhZ2VzIGRpcmVjdGx5IHRvIGBhdGgxMmtgPyBJdCdzIGEgdmFsaWQgcXVlc3Rpb24sIGV4cGxvcmluZyB0aGUgcG90ZW50aWFsIGZvciBtYW5pcHVsYXRpbmcgdGhlIFFNSSBpbnRlcmFjdGlvbi5cblxuUmlnaHQsIHRoZSBkcml2ZXIgcmVnaXN0ZXJzIGEgUU1JIGNsaWVudC4gVGhpcyBpcyBrZXkuIEhvbGQgb24gYSBzZWNvbmQuLi4gdGhlIGRyaXZlciAqcmVnaXN0ZXJzKiBhIGNsaWVudCAqYW5kKiBzZW5kcyByZXF1ZXN0cyB0byB0aGUgZmlybXdhcmUg4oCTIHdoaWNoLCBpbXBvcnRhbnRseSwgKmlzKiBhIFFNSSBzZXJ2aWNlLiBUaGF0IGNvbm5lY3Rpb24gaXMgZnVuZGFtZW50YWwgdG8gdGhlIGRyaXZlcidzIG9wZXJhdGlvbi5cblxuTGV0J3MgZGlnIGludG8gYHFtaV9hZGRfbG9va3VwYC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgZXhhY3RseSBob3cgdGhlIGRyaXZlciBpcyBsaW5raW5nIHRoZSBjbGllbnQgYW5kIHNlcnZpY2UuIFRoaXMgd2lsbCB0ZWxsIG1lIG1vcmUgYWJvdXQgaWYgdXNlcnNwYWNlIGNhbiBzcG9vZiB0aGUgbWVzc2FnZXMgb3IgaWYgdGhlcmUgaXMgZnVydGhlciB2YWxpZGF0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxOTM5OCwiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjkyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI5VDA4OjE1OjE2LjUyNjg5NTc0WiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5MTQ2MzU1MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJxbWlfYWRkX2xvb2t1cFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcW1pLmM9NDAzOD1pbnQgYXRoMTJrX3FtaV9pbml0X3NlcnZpY2Uoc3RydWN0IGF0aDEya19iYXNlICphYilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcW1pLmMtNDA2My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3FtaS5jOjQwNjQ6XFx0cmV0ID0gcW1pX2FkZF9sb29rdXAoXFx1MDAyNmFiLVxcdTAwM2VxbWkuaGFuZGxlLCBRTUlfU0VSVklDRV9JRF9XTEZXLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcW1pLmMtNDA2NS1cXHRcXHRcXHQgICAgIEFUSDEyS19RTUlfV0xGV19TRVJWSUNFX1ZFUlNfVjAxLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yOVQwODoxNToxNi42MTgzNjYxNzFaIiwiU2VxIjoyNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTEwNjI3Mjg1NTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHlzaXMgb2YgdGhlIGBhdGgxMmtgIERyaXZlciBDb2RlIGFuZCBGdXp6aW5nIEZlYXNpYmlsaXR5KipcblxuT2theSwgc28gSSd2ZSBiZWVuIGxvb2tpbmcgYXQgdGhpcyBjb2RlIGFuZCBob3cgd2UgY2FuIGVmZmVjdGl2ZWx5IGZ1enogaXQuIE15IGluaXRpYWwgdGhvdWdodCBwcm9jZXNzIGlzIHRoaXM6IHRoZSBkcml2ZXIgaXMgY2xlYXJseSB1c2luZyB0aGUgYFFNSV9TRVJWSUNFX0lEX1dMRldgIHNlcnZpY2UsIHdoaWNoIG1lYW5zIGl0J3MgdGFsa2luZyB0byBmaXJtd2FyZS4gQSB1c2Vyc3BhY2UgcHJvY2VzcyAqY291bGQqIGFjdCBhcyB0aGlzIGZpcm13YXJlIGJ5IGNyZWF0aW5nIGEgUVJUUiBzb2NrZXQgYW5kIHJlZ2lzdGVyaW5nIHRoZSBzZXJ2aWNlIElELiBJIGtub3cgU3l6a2FsbGVyIGNhbiBnZW5lcmF0ZSBgQUZfUUlQQ1JUUmAgc29ja2V0cywgYnV0IHRoZSBtaWxsaW9uLWRvbGxhciBxdWVzdGlvbiBpcywgY2FuIFN5emthbGxlciBtZWFuaW5nZnVsbHkgZW11bGF0ZSB0aGUgKmNvbXBsZXgqIGBRTUlfU0VSVklDRV9JRF9XTEZXYCBzZXJ2aWNlIHJlcXVpcmVkIHRvIGdldCB0aGUgYGF0aDEya2AgZHJpdmVyIHVwIGFuZCBydW5uaW5nP1xuXG5UaGUgYW5zd2VyLCBhcyBmYXIgYXMgSSBjYW4gc2VlLCBpcyBuby4gU3l6a2FsbGVyIGRvZXNuJ3QgaGF2ZSBhIGRlZGljYXRlZCBlbXVsYXRvciBmb3IgYGF0aDEya2AgZmlybXdhcmUuIEl0IHdvdWxkIGJlIGFuIGluY3JlZGlibHkgZGlmZmljdWx0IHRhc2sgdG8gcmFuZG9tbHkgZ2VuZXJhdGUgdGhlICpjb3JyZWN0KiBzZXF1ZW5jZSBvZiBRTUkgcmVzcG9uc2VzIG5lZWRlZCB0byBwYXNzIHRoZSBmaXJtd2FyZSBpbml0aWFsaXphdGlvbi4gVGhpcyBpbml0aWFsaXphdGlvbiBpcyBmYXIgZnJvbSBzaW1wbGU7IGl0IGludm9sdmVzIG11bHRpcGxlIHN0ZXBzOiBzZXJ2aWNlIGxvb2t1cCwgY29ubmVjdGlvbiwgc2VuZGluZyBhbmQgcmVjZWl2aW5nIGEgd2hvbGUgYnVuY2ggb2YgUU1JIG1lc3NhZ2VzIGxpa2UgYFdMRldfSU5EX1JFR0lTVEVSX1JFUV9NU0dfVjAxYCwgYFdMRldfSE9TVF9DQVBfUkVRX01TR19WMDFgLCBgV0xGV19DQUxfUkVQT1JUX1JFUV9NU0dfVjAxYCwgcGx1cyBmaXJtd2FyZSBhbmQgQkRGIGRvd25sb2FkcywgV01JIGluaXRpYWxpemF0aW9uLCBhbmQgYSBcInNlcnZpY2UgcmVhZHlcIiBldmVudC5cblxuUmVhbGlzdGljYWxseSwgaXQncyBwcmFjdGljYWxseSBpbXBvc3NpYmxlIGZvciBhIGZ1enplciB0byBzdHVtYmxlIHVwb24gdGhlIHJpZ2h0IHNlcXVlbmNlIG9mIGNvbXBsZXggUU1JIGFuZCBXTUkgbWVzc2FnZXMgdG8gZXZlbiByZWFjaCB0aGUgbW9kaWZpZWQgY29kZSB3aXRob3V0IGEgZGVkaWNhdGVkIGVtdWxhdG9yIHRoYXQgZnVsbHkgdW5kZXJzdGFuZHMgdGhlIHByb3RvY29sLiBUaGVyZWZvcmUsIGdpdmVuIHRoZSBsZXZlbCBvZiBjb21wbGV4aXR5LCB0aGUgY29kZSBpcyBhbG1vc3QgY2VydGFpbmx5IHVucmVhY2hhYmxlIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQg4oCTIGFuZCB0aGF0J3MgcHJlY2lzZWx5IHdoYXQgU3l6a2FsbGVyIGlzLiBTbywgbXkgaW5pdGlhbCBhc3Nlc3NtZW50IHdvdWxkIGJlIHRvIG1hcmsgdGhpcyBhcyBgV29ydGhGdXp6aW5nPWZhbHNlYC4gVGhlIHJlYXNvbmluZyBpcyB0aGF0IHRoZSBtb2RpZmllZCBjb2RlLCB3aGlsZSBhbiBpbnRlcmVzdGluZyBjaGFuZ2UsIGlzIGEgcGFydCBvZiB0aGUgYGF0aDEya2AgZHJpdmVyJ3MgV01JIGNvbW11bmljYXRpb24gd2l0aCB0aGUgZmlybXdhcmUsIGFuZCBpdCdzIHNpbXBseSB1bnJlYWNoYWJsZSB3aXRob3V0IGVpdGhlciByZWFsIGhhcmR3YXJlIG9yIGEgdmVyeSBjb21wbGV4IGZpcm13YXJlIGVtdWxhdG9yLlxuXG5Ob3csIGxldCBtZSBkb3VibGUtY2hlY2sgdGhlIHBhdGNoIGl0c2VsZi4gSXQgbG9va3MgbGlrZSBpdCdzIGp1c3QgY2hhbmdpbmcgYHUzMmAgdG8gYF9fbGUzMmAgaW4gYHN0cnVjdCBhdGgxMmtfYmFuZF9jYXBgIGFuZCBgc3RydWN0IGF0aDEya193bWlfcGVlcl9hc3NvY19hcmdgIGFuZCBzd2FwcGluZyBgdTMyX2dldF9iaXRzYCB0byBgbGUzMl9nZXRfYml0c2AuIEFoYSEgSXQncyBhIHNwYXJzZS9lbmRpYW5uZXNzIGZpeCEgTm8gZnVuY3Rpb25hbCBjaGFuZ2UuLi4gb3IgaXMgaXQ/IFdhaXQsIGlmIGl0J3MgYW4gZW5kaWFubmVzcyBmaXgsIHRoYXQgKmlzKiBhIGZ1bmN0aW9uYWwgY2hhbmdlIG9uIGJpZy1lbmRpYW4gYXJjaGl0ZWN0dXJlcy5cblxuVGhlIHF1ZXN0aW9uIHRoZW4gYmVjb21lcywgYXJlIGBhdGgxMmtgIGFuZCB0aGUgaGFyZHdhcmUgaXQgc3VwcG9ydHMgZXZlciB1c2VkIG9uIGJpZy1lbmRpYW4gbWFjaGluZXM/IEl0J3MgYSBQQ0kvQUhCIGRyaXZlciBmb3IgUXVhbGNvbW0gV2ktRmkgNywgc28gaXQncyAqcG9zc2libGUqIGJ1dCBoaWdobHkgdW5saWtlbHkuIEhvd2V2ZXIsIGV2ZW4gKmlmKiB0aGlzIGNoYW5nZSAqZG9lcyogYWZmZWN0IGJpZy1lbmRpYW4gc3lzdGVtcywgdGhlIGluYWNjZXNzaWJpbGl0eSB0aHJvdWdoIHN5emthbGxlciByZW1haW5zIHRoZSBjb3JlIGlzc3VlLiBJJ20gc3RpbGwgbm90IGFibGUgdG8gY29uc3RydWN0IGEgbWVhbmluZ2Z1bCBmdXp6ZXIgdGhhdCB3b3VsZCB1bmNvdmVyIGEgcG90ZW50aWFsIGJ1Zy4gVGhlcmVmb3JlLCB0aGUgY29uY2x1c2lvbiB0aGF0IGBXb3J0aEZ1enppbmc9ZmFsc2VgIGlzIHRoZSByaWdodCBvbmUsIHJlZ2FyZGxlc3Mgb2YgdGhlIGVuZGlhbm5lc3MgY2hhbmdlLCBnaXZlbiBpdCdzIHN0aWxsIGZ1bmN0aW9uYWxseSB1bnJlYWNoYWJsZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTk5MTMsIk91dHB1dFRva2VucyI6MTI4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTU1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI5VDA4OjE1OjI3LjY4MTA5OTM4MVoiLCJTZXEiOjI4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQxNjUwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGVuZGlhbm5lc3MgaXNzdWVzIChzcGFyc2Ugd2FybmluZ3MpIGluIHRoZSBhdGgxMmsgZHJpdmVyJ3MgV01JIChXaXJlbGVzcyBNb2R1bGUgSW50ZXJmYWNlKSBjb21tdW5pY2F0aW9uIHdpdGggdGhlIGZpcm13YXJlLiBUaGlzIGNvZGUgaXMgdW5yZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUgYmVjYXVzZSBpdCByZXF1aXJlcyBhY3R1YWwgUXVhbGNvbW0gV2ktRmkgNyBoYXJkd2FyZSBhbmQgaXRzIHByb3ByaWV0YXJ5IGZpcm13YXJlIHRvIGluaXRpYWxpemUgdGhlIGRldmljZSBhbmQgcmVhY2ggdGhlIFdNSSBtZXNzYWdlIHBhcnNpbmcvc2VuZGluZyBsb2dpYy4gU3l6a2FsbGVyIGNhbm5vdCBlbXVsYXRlIHRoZSBjb21wbGV4IFFNSS9XTUkgZmlybXdhcmUgaW50ZXJmYWNlIHJlcXVpcmVkIHRvIHRyaWdnZXIgdGhlc2UgY29kZSBwYXRocy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGVuZGlhbm5lc3MgaXNzdWVzIChzcGFyc2Ugd2FybmluZ3MpIGluIHRoZSBhdGgxMmsgZHJpdmVyJ3MgV01JIChXaXJlbGVzcyBNb2R1bGUgSW50ZXJmYWNlKSBjb21tdW5pY2F0aW9uIHdpdGggdGhlIGZpcm13YXJlLiBUaGlzIGNvZGUgaXMgdW5yZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUgYmVjYXVzZSBpdCByZXF1aXJlcyBhY3R1YWwgUXVhbGNvbW0gV2ktRmkgNyBoYXJkd2FyZSBhbmQgaXRzIHByb3ByaWV0YXJ5IGZpcm13YXJlIHRvIGluaXRpYWxpemUgdGhlIGRldmljZSBhbmQgcmVhY2ggdGhlIFdNSSBtZXNzYWdlIHBhcnNpbmcvc2VuZGluZyBsb2dpYy4gU3l6a2FsbGVyIGNhbm5vdCBlbXVsYXRlIHRoZSBjb21wbGV4IFFNSS9XTUkgZmlybXdhcmUgaW50ZXJmYWNlIHJlcXVpcmVkIHRvIHRyaWdnZXIgdGhlc2UgY29kZSBwYXRocy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowq2ws8[1] Phase: Running StartedAt: 2026-06-29 08:19:41 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowq2ws8[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-06-29 08:19:41 +0000 UTC FinishedAt: 2026-06-29 08:19:51 +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,}